From 5fae7c4a413dbeb2483b7eccb437f5ba59114d49 Mon Sep 17 00:00:00 2001 From: Bingpeng_Lao Date: Fri, 22 Mar 2024 09:38:47 +0300 Subject: [PATCH] wifi is okay --- drivers/net/wireless/rtl8822cs/Makefile | 261 +- .../wireless/rtl8822cs/core/crypto/aes-ccm.c | 18 +- .../wireless/rtl8822cs/core/crypto/aes-ctr.c | 2 +- .../wireless/rtl8822cs/core/crypto/aes-gcm.c | 6 +- .../rtl8822cs/core/crypto/aes-internal-enc.c | 2 +- .../rtl8822cs/core/crypto/aes-omac1.c | 6 +- .../net/wireless/rtl8822cs/core/crypto/aes.h | 2 +- .../core/def_module_country_chplan.h | 1519 + .../wireless/rtl8822cs/core/efuse/rtw_efuse.c | 249 +- .../wireless/rtl8822cs/core/mesh/rtw_mesh.c | 116 +- .../rtl8822cs/core/monitor/rtw_radiotap.c | 10 + drivers/net/wireless/rtl8822cs/core/rtw_ap.c | 414 +- .../wireless/rtl8822cs/core/rtw_beamforming.c | 40 +- .../net/wireless/rtl8822cs/core/rtw_br_ext.c | 9 + .../net/wireless/rtl8822cs/core/rtw_btcoex.c | 16 +- .../net/wireless/rtl8822cs/core/rtw_chplan.c | 5930 +- .../net/wireless/rtl8822cs/core/rtw_chplan.h | 390 +- .../net/wireless/rtl8822cs/core/rtw_chset.c | 382 + .../net/wireless/rtl8822cs/core/rtw_chset.h | 112 + drivers/net/wireless/rtl8822cs/core/rtw_cmd.c | 1336 +- .../net/wireless/rtl8822cs/core/rtw_debug.c | 917 +- drivers/net/wireless/rtl8822cs/core/rtw_dfs.c | 1612 + drivers/net/wireless/rtl8822cs/core/rtw_dfs.h | 95 + drivers/net/wireless/rtl8822cs/core/rtw_ft.c | 464 +- .../wireless/rtl8822cs/core/rtw_ieee80211.c | 268 +- .../wireless/rtl8822cs/core/rtw_ioctl_set.c | 83 +- drivers/net/wireless/rtl8822cs/core/rtw_mbo.c | 1055 +- drivers/net/wireless/rtl8822cs/core/rtw_mem.c | 169 +- drivers/net/wireless/rtl8822cs/core/rtw_mi.c | 189 +- .../net/wireless/rtl8822cs/core/rtw_mlme.c | 592 +- .../wireless/rtl8822cs/core/rtw_mlme_ext.c | 3507 +- drivers/net/wireless/rtl8822cs/core/rtw_mp.c | 81 +- drivers/net/wireless/rtl8822cs/core/rtw_odm.c | 257 +- drivers/net/wireless/rtl8822cs/core/rtw_p2p.c | 197 +- .../wireless/rtl8822cs/core/rtw_prealloc.c | 598 + .../net/wireless/rtl8822cs/core/rtw_pwrctrl.c | 400 +- .../net/wireless/rtl8822cs/core/rtw_recv.c | 93 +- .../wireless/rtl8822cs/core/rtw_regdb_rtk.c | 931 + drivers/net/wireless/rtl8822cs/core/rtw_rf.c | 1820 +- drivers/net/wireless/rtl8822cs/core/rtw_rm.c | 104 +- .../net/wireless/rtl8822cs/core/rtw_rm_fsm.c | 30 +- .../net/wireless/rtl8822cs/core/rtw_rm_util.c | 1 + .../net/wireless/rtl8822cs/core/rtw_roch.c | 22 +- .../net/wireless/rtl8822cs/core/rtw_rson.c | 18 +- .../wireless/rtl8822cs/core/rtw_security.c | 96 +- .../net/wireless/rtl8822cs/core/rtw_sreset.c | 32 + .../net/wireless/rtl8822cs/core/rtw_sta_mgt.c | 143 +- .../wireless/rtl8822cs/core/rtw_swcrypto.c | 2 +- .../net/wireless/rtl8822cs/core/rtw_tdls.c | 74 +- .../net/wireless/rtl8822cs/core/rtw_txpwr.c | 96 + .../net/wireless/rtl8822cs/core/rtw_txpwr.h | 55 + drivers/net/wireless/rtl8822cs/core/rtw_vht.c | 60 +- .../net/wireless/rtl8822cs/core/rtw_wapi.c | 4 +- .../wireless/rtl8822cs/core/rtw_wlan_util.c | 769 +- drivers/net/wireless/rtl8822cs/core/rtw_wnm.c | 625 +- .../net/wireless/rtl8822cs/core/rtw_xmit.c | 279 +- .../wireless/rtl8822cs/hal/btc/halbtc8822c.c | 51 +- .../wireless/rtl8822cs/hal/btc/halbtccommon.c | 484 +- .../wireless/rtl8822cs/hal/btc/halbtccommon.h | 2 + .../wireless/rtl8822cs/hal/btc/halbtcoutsrc.h | 72 +- .../wireless/rtl8822cs/hal/btc/mp_precomp.h | 10 + .../wireless/rtl8822cs/hal/efuse/efuse_mask.h | 11 + .../net/wireless/rtl8822cs/hal/hal_btcoex.c | 280 +- .../rtl8822cs/hal/hal_btcoex_wifionly.c | 40 + drivers/net/wireless/rtl8822cs/hal/hal_com.c | 2074 +- .../net/wireless/rtl8822cs/hal/hal_com_c2h.h | 8 + .../wireless/rtl8822cs/hal/hal_com_phycfg.c | 618 +- drivers/net/wireless/rtl8822cs/hal/hal_dfs.c | 471 + drivers/net/wireless/rtl8822cs/hal/hal_dfs.h | 83 + drivers/net/wireless/rtl8822cs/hal/hal_dm.c | 97 +- drivers/net/wireless/rtl8822cs/hal/hal_dm.h | 4 +- .../net/wireless/rtl8822cs/hal/hal_dm_acs.c | 49 +- .../net/wireless/rtl8822cs/hal/hal_dm_acs.h | 15 +- .../net/wireless/rtl8822cs/hal/hal_halmac.c | 87 +- drivers/net/wireless/rtl8822cs/hal/hal_intf.c | 189 +- drivers/net/wireless/rtl8822cs/hal/hal_mcc.c | 82 +- drivers/net/wireless/rtl8822cs/hal/hal_mp.c | 73 +- .../wireless/rtl8822cs/hal/hal_pwr_table.c | 773 + .../wireless/rtl8822cs/hal/hal_pwr_table.h | 113 + .../halmac_8822c/halmac_init_8822c.c | 12 +- .../halmac_8822c/halmac_sdio_8822c.c | 84 +- .../halmac/halmac_88xx/halmac_cfg_wmac_88xx.c | 12 +- .../halmac/halmac_88xx/halmac_common_88xx.c | 76 +- .../halmac/halmac_88xx/halmac_efuse_88xx.c | 154 +- .../hal/halmac/halmac_88xx/halmac_init_88xx.c | 24 +- .../hal/halmac/halmac_88xx/halmac_mimo_88xx.c | 16 +- .../hal/halmac/halmac_88xx/halmac_sdio_88xx.c | 13 +- .../rtl8822cs/hal/halmac/halmac_api.c | 17 +- .../rtl8822cs/hal/halmac/halmac_api.h | 12 +- .../rtl8822cs/hal/halmac/halmac_bit2.h | 5819 +- .../rtl8822cs/hal/halmac/halmac_bit_8822e.h | 22077 ++++ .../rtl8822cs/hal/halmac/halmac_gpio_cmd.h | 1 + .../rtl8822cs/hal/halmac/halmac_hw_cfg.h | 8 +- .../rtl8822cs/hal/halmac/halmac_reg2.h | 1390 +- .../rtl8822cs/hal/halmac/halmac_reg_8822e.h | 883 + .../rtl8822cs/hal/halmac/halmac_rx_bd_nic.h | 5 +- .../rtl8822cs/hal/halmac/halmac_rx_desc_ap.h | 90 +- .../hal/halmac/halmac_rx_desc_chip.h | 87 + .../rtl8822cs/hal/halmac/halmac_rx_desc_nic.h | 90 +- .../rtl8822cs/hal/halmac/halmac_tx_bd_nic.h | 5 +- .../rtl8822cs/hal/halmac/halmac_tx_desc_ap.h | 152 +- .../hal/halmac/halmac_tx_desc_chip.h | 387 + .../rtl8822cs/hal/halmac/halmac_tx_desc_nic.h | 152 +- .../rtl8822cs/hal/halmac/halmac_type.h | 16 + .../rtl8822cs/hal/phydm/ap_makefile.mk | 26 + .../rtl8822cs/hal/phydm/halrf/halphyrf_ap.c | 4 +- .../rtl8822cs/hal/phydm/halrf/halphyrf_ap.h | 1 + .../rtl8822cs/hal/phydm/halrf/halphyrf_ce.c | 113 +- .../rtl8822cs/hal/phydm/halrf/halphyrf_ce.h | 7 +- .../rtl8822cs/hal/phydm/halrf/halphyrf_iot.c | 143 +- .../rtl8822cs/hal/phydm/halrf/halphyrf_iot.h | 3 + .../rtl8822cs/hal/phydm/halrf/halphyrf_win.c | 17 +- .../rtl8822cs/hal/phydm/halrf/halphyrf_win.h | 1 + .../rtl8822cs/hal/phydm/halrf/halrf.c | 1202 +- .../rtl8822cs/hal/phydm/halrf/halrf.h | 182 +- .../rtl8822cs/hal/phydm/halrf/halrf_debug.c | 79 +- .../rtl8822cs/hal/phydm/halrf/halrf_dpk.h | 26 +- .../rtl8822cs/hal/phydm/halrf/halrf_iqk.h | 47 +- .../rtl8822cs/hal/phydm/halrf/halrf_kfree.c | 791 +- .../rtl8822cs/hal/phydm/halrf/halrf_kfree.h | 69 + .../hal/phydm/halrf/halrf_powertracking.c | 20 +- .../hal/phydm/halrf/halrf_powertracking_ce.c | 19 +- .../hal/phydm/halrf/halrf_powertracking_ce.h | 5 + .../hal/phydm/halrf/halrf_powertracking_iot.c | 10 + .../hal/phydm/halrf/halrf_powertracking_iot.h | 54 +- .../hal/phydm/halrf/halrf_powertracking_win.c | 18 +- .../hal/phydm/halrf/halrf_powertracking_win.h | 11 +- .../rtl8822cs/hal/phydm/halrf/halrf_psd.c | 723 +- .../rtl8822cs/hal/phydm/halrf/halrf_psd.h | 26 +- .../phydm/halrf/rtl8822c/halhwimg8822c_rf.c | 802 +- .../phydm/halrf/rtl8822c/halhwimg8822c_rf.h | 2 +- .../hal/phydm/halrf/rtl8822c/halrf_8822c.c | 32 +- .../hal/phydm/halrf/rtl8822c/halrf_8822c.h | 2 + .../phydm/halrf/rtl8822c/halrf_dpk_8822c.c | 12 +- .../phydm/halrf/rtl8822c/halrf_iqk_8822c.c | 12 +- .../halrf/rtl8822c/version_rtl8822c_rf.h | 2 +- .../net/wireless/rtl8822cs/hal/phydm/phydm.c | 250 +- .../net/wireless/rtl8822cs/hal/phydm/phydm.h | 44 +- .../net/wireless/rtl8822cs/hal/phydm/phydm.mk | 31 +- .../rtl8822cs/hal/phydm/phydm_adaptivity.c | 13 +- .../rtl8822cs/hal/phydm/phydm_adc_sampling.c | 156 +- .../rtl8822cs/hal/phydm/phydm_adc_sampling.h | 3 +- .../rtl8822cs/hal/phydm/phydm_antdect.c | 5 +- .../rtl8822cs/hal/phydm/phydm_antdiv.c | 201 +- .../rtl8822cs/hal/phydm/phydm_antdiv.h | 9 +- .../wireless/rtl8822cs/hal/phydm/phydm_api.c | 329 +- .../wireless/rtl8822cs/hal/phydm/phydm_api.h | 2 +- .../rtl8822cs/hal/phydm/phydm_cck_pd.c | 45 +- .../rtl8822cs/hal/phydm/phydm_cck_pd.h | 4 +- .../hal/phydm/phydm_cck_rx_pathdiv.c | 2 +- .../wireless/rtl8822cs/hal/phydm/phydm_ccx.c | 247 +- .../wireless/rtl8822cs/hal/phydm/phydm_ccx.h | 6 + .../rtl8822cs/hal/phydm/phydm_cfotracking.c | 36 +- .../rtl8822cs/hal/phydm/phydm_cfotracking.h | 2 +- .../rtl8822cs/hal/phydm/phydm_debug.c | 383 +- .../wireless/rtl8822cs/hal/phydm/phydm_dfs.c | 448 +- .../wireless/rtl8822cs/hal/phydm/phydm_dfs.h | 27 +- .../wireless/rtl8822cs/hal/phydm/phydm_dig.c | 129 +- .../wireless/rtl8822cs/hal/phydm/phydm_dig.h | 9 +- .../hal/phydm/phydm_dynamictxpower.c | 22 +- .../rtl8822cs/hal/phydm/phydm_features.h | 12 +- .../rtl8822cs/hal/phydm/phydm_features_ap.h | 25 +- .../rtl8822cs/hal/phydm/phydm_features_ce.h | 38 +- .../hal/phydm/phydm_features_ce2_kernel.h | 2 +- .../rtl8822cs/hal/phydm/phydm_features_iot.h | 26 +- .../rtl8822cs/hal/phydm/phydm_features_win.h | 38 +- .../rtl8822cs/hal/phydm/phydm_hwconfig.c | 124 +- .../rtl8822cs/hal/phydm/phydm_interface.c | 2 + .../rtl8822cs/hal/phydm/phydm_math_lib.c | 5 +- .../rtl8822cs/hal/phydm/phydm_math_lib.h | 2 +- .../wireless/rtl8822cs/hal/phydm/phydm_mp.c | 84 +- .../rtl8822cs/hal/phydm/phydm_noisemonitor.c | 4 +- .../rtl8822cs/hal/phydm/phydm_pathdiv.c | 10 + .../rtl8822cs/hal/phydm/phydm_pathdiv.h | 2 +- .../rtl8822cs/hal/phydm/phydm_phystatus.c | 164 +- .../rtl8822cs/hal/phydm/phydm_phystatus.h | 2 +- .../hal/phydm/phydm_pmac_tx_setting.c | 55 +- .../hal/phydm/phydm_pmac_tx_setting.h | 2 + .../rtl8822cs/hal/phydm/phydm_pre_define.h | 99 +- .../rtl8822cs/hal/phydm/phydm_precomp.h | 68 +- .../wireless/rtl8822cs/hal/phydm/phydm_psd.c | 36 +- .../rtl8822cs/hal/phydm/phydm_rainfo.c | 22 +- .../rtl8822cs/hal/phydm/phydm_regtable.h | 21 +- .../rtl8822cs/hal/phydm/phydm_rssi_monitor.c | 3 + .../wireless/rtl8822cs/hal/phydm/phydm_soml.c | 2 +- .../rtl8822cs/hal/phydm/phydm_types.h | 65 +- .../hal/phydm/rtl8822c/halhwimg8822c_bb.c | 10 +- .../hal/phydm/rtl8822c/halhwimg8822c_bb.h | 2 +- .../hal/phydm/rtl8822c/phydm_hal_api8822c.c | 10 + .../hal/phydm/rtl8822c/phydm_hal_api8822c.h | 4 +- .../hal/phydm/rtl8822c/version_rtl8822c.h | 6 +- .../rtl8822cs/hal/phydm/txbf/haltxbfjaguar.c | 2 +- .../hal/phydm/txbf/phydm_hal_txbf_api.c | 70 +- .../hal/phydm/txbf/phydm_hal_txbf_api.h | 3 +- .../rtl8822cs/hal/rtl8822c/hal8822c_fw.c | 85724 ++++++++-------- .../rtl8822cs/hal/rtl8822c/hal8822c_fw.h | 8 +- .../rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.c | 5680 +- .../rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.h | 8 +- .../rtl8822cs/hal/rtl8822c/rtl8822c_cmd.c | 19 +- .../rtl8822cs/hal/rtl8822c/rtl8822c_halinit.c | 12 +- .../rtl8822cs/hal/rtl8822c/rtl8822c_ops.c | 45 +- .../rtl8822cs/hal/rtl8822c/rtl8822c_phy.c | 20 +- .../hal/rtl8822c/sdio/rtl8822cs_halinit.c | 34 +- .../hal/rtl8822c/sdio/rtl8822cs_halmac.c | 9 +- .../hal/rtl8822c/sdio/rtl8822cs_io.c | 6 +- .../hal/rtl8822c/sdio/rtl8822cs_ops.c | 17 - .../hal/rtl8822c/sdio/rtl8822cs_xmit.c | 24 +- drivers/net/wireless/rtl8822cs/halmac.mk | 12 + .../rtl8822cs/include/Hal8821APwrSeq.h | 2 +- .../wireless/rtl8822cs/include/HalVerDef.h | 2 + .../net/wireless/rtl8822cs/include/autoconf.h | 8 +- .../net/wireless/rtl8822cs/include/drv_conf.h | 184 +- .../wireless/rtl8822cs/include/drv_types.h | 246 +- .../rtl8822cs/include/drv_types_sdio.h | 4 +- .../wireless/rtl8822cs/include/hal_btcoex.h | 2 +- .../rtl8822cs/include/hal_btcoex_wifionly.h | 17 +- .../net/wireless/rtl8822cs/include/hal_com.h | 23 +- .../wireless/rtl8822cs/include/hal_com_h2c.h | 94 +- .../rtl8822cs/include/hal_com_phycfg.h | 14 +- .../wireless/rtl8822cs/include/hal_com_reg.h | 12 + .../net/wireless/rtl8822cs/include/hal_data.h | 87 +- .../wireless/rtl8822cs/include/hal_ic_cfg.h | 152 +- .../net/wireless/rtl8822cs/include/hal_intf.h | 34 +- .../net/wireless/rtl8822cs/include/hal_pg.h | 57 +- .../wireless/rtl8822cs/include/ieee80211.h | 46 +- .../wireless/rtl8822cs/include/mlme_osdep.h | 17 + .../wireless/rtl8822cs/include/osdep_intf.h | 2 +- .../rtl8822cs/include/osdep_service.h | 106 +- .../rtl8822cs/include/osdep_service_bsd.h | 12 + .../rtl8822cs/include/osdep_service_linux.h | 78 +- .../net/wireless/rtl8822cs/include/pci_hal.h | 5 + .../net/wireless/rtl8822cs/include/pci_ops.h | 39 +- .../rtl8822cs/include/rtl8188e_xmit.h | 2 +- .../rtl8822cs/include/rtl8188f_recv.h | 5 +- .../rtl8822cs/include/rtl8192e_recv.h | 4 +- .../rtl8822cs/include/rtl8192e_xmit.h | 2 +- .../rtl8822cs/include/rtl8192f_xmit.h | 2 +- .../rtl8822cs/include/rtl8723b_xmit.h | 2 +- .../rtl8822cs/include/rtl8723d_xmit.h | 2 +- .../wireless/rtl8822cs/include/rtl8723f_hal.h | 21 +- .../rtl8822cs/include/rtl8723fu_hal.h | 5 +- .../rtl8822cs/include/rtl8812a_recv.h | 7 +- .../rtl8822cs/include/rtl8812a_xmit.h | 2 +- .../rtl8822cs/include/rtl8814a_xmit.h | 2 +- .../wireless/rtl8822cs/include/rtl8821c_hal.h | 5 + .../rtl8822cs/include/rtl8822bu_hal.h | 7 +- .../wireless/rtl8822cs/include/rtl8822c_hal.h | 2 + .../rtl8822cs/include/rtl8822cu_hal.h | 5 +- .../wireless/rtl8822cs/include/rtl8822e_hal.h | 248 + .../rtl8822cs/include/rtl8822ee_hal.h | 27 + .../rtl8822cs/include/rtl8822es_hal.h | 31 + .../rtl8822cs/include/rtl8822eu_hal.h | 64 + .../net/wireless/rtl8822cs/include/rtw_ap.h | 4 +- .../wireless/rtl8822cs/include/rtw_btcoex.h | 2 +- .../net/wireless/rtl8822cs/include/rtw_cfg.h | 30 + .../net/wireless/rtl8822cs/include/rtw_cmd.h | 100 +- .../wireless/rtl8822cs/include/rtw_debug.h | 35 +- .../wireless/rtl8822cs/include/rtw_eeprom.h | 4 + .../wireless/rtl8822cs/include/rtw_efuse.h | 29 +- .../net/wireless/rtl8822cs/include/rtw_ft.h | 47 +- .../rtl8822cs/include/rtw_ioctl_set.h | 4 +- .../net/wireless/rtl8822cs/include/rtw_mbo.h | 67 +- .../net/wireless/rtl8822cs/include/rtw_mcc.h | 7 +- .../net/wireless/rtl8822cs/include/rtw_mem.h | 21 +- .../net/wireless/rtl8822cs/include/rtw_mi.h | 30 +- .../net/wireless/rtl8822cs/include/rtw_mlme.h | 80 +- .../wireless/rtl8822cs/include/rtw_mlme_ext.h | 182 +- .../net/wireless/rtl8822cs/include/rtw_mp.h | 32 +- .../net/wireless/rtl8822cs/include/rtw_odm.h | 36 +- .../wireless/rtl8822cs/include/rtw_pwrctrl.h | 73 +- .../net/wireless/rtl8822cs/include/rtw_recv.h | 32 +- .../net/wireless/rtl8822cs/include/rtw_rf.h | 187 +- .../net/wireless/rtl8822cs/include/rtw_rm.h | 1 + .../net/wireless/rtl8822cs/include/rtw_rson.h | 2 +- .../wireless/rtl8822cs/include/rtw_security.h | 23 +- .../wireless/rtl8822cs/include/rtw_version.h | 4 +- .../net/wireless/rtl8822cs/include/rtw_vht.h | 2 +- .../net/wireless/rtl8822cs/include/rtw_wapi.h | 2 +- .../net/wireless/rtl8822cs/include/rtw_wnm.h | 14 +- .../net/wireless/rtl8822cs/include/rtw_xmit.h | 23 +- .../net/wireless/rtl8822cs/include/sdio_ops.h | 2 +- .../net/wireless/rtl8822cs/include/sta_info.h | 21 +- drivers/net/wireless/rtl8822cs/include/wifi.h | 3 + .../wireless/rtl8822cs/include/wlan_bssdef.h | 27 +- .../rtl8822cs/os_dep/linux/ioctl_cfg80211.c | 924 +- .../rtl8822cs/os_dep/linux/ioctl_cfg80211.h | 46 +- .../rtl8822cs/os_dep/linux/ioctl_linux.c | 326 +- .../rtl8822cs/os_dep/linux/ioctl_mp.c | 874 +- .../rtl8822cs/os_dep/linux/mlme_linux.c | 67 +- .../wireless/rtl8822cs/os_dep/linux/nlrtw.c | 37 +- .../wireless/rtl8822cs/os_dep/linux/nlrtw.h | 20 +- .../rtl8822cs/os_dep/linux/os_ch_utils.c | 446 + .../rtl8822cs/os_dep/linux/os_ch_utils.h | 63 + .../rtl8822cs/os_dep/linux/os_intfs.c | 434 +- .../rtl8822cs/os_dep/linux/recv_linux.c | 17 +- .../rtl8822cs/os_dep/linux/rtw_android.c | 4 +- .../wireless/rtl8822cs/os_dep/linux/rtw_cfg.c | 314 + .../rtl8822cs/os_dep/linux/rtw_proc.c | 197 +- .../rtl8822cs/os_dep/linux/sdio_intf.c | 97 +- .../rtl8822cs/os_dep/linux/wifi_regd.c | 905 +- .../rtl8822cs/os_dep/linux/wifi_regd.h | 46 +- .../rtl8822cs/os_dep/linux/xmit_linux.c | 8 + .../wireless/rtl8822cs/os_dep/osdep_service.c | 89 +- .../platform/custom_country_chplan.h | 2 +- .../platform/platform_ARM_SUNxI_sdio.c | 5 + 305 files changed, 109017 insertions(+), 62046 deletions(-) create mode 100644 drivers/net/wireless/rtl8822cs/core/def_module_country_chplan.h create mode 100644 drivers/net/wireless/rtl8822cs/core/rtw_chset.c create mode 100644 drivers/net/wireless/rtl8822cs/core/rtw_chset.h create mode 100644 drivers/net/wireless/rtl8822cs/core/rtw_dfs.c create mode 100644 drivers/net/wireless/rtl8822cs/core/rtw_dfs.h create mode 100644 drivers/net/wireless/rtl8822cs/core/rtw_prealloc.c create mode 100644 drivers/net/wireless/rtl8822cs/core/rtw_regdb_rtk.c create mode 100644 drivers/net/wireless/rtl8822cs/core/rtw_txpwr.c create mode 100644 drivers/net/wireless/rtl8822cs/core/rtw_txpwr.h create mode 100644 drivers/net/wireless/rtl8822cs/hal/hal_dfs.c create mode 100644 drivers/net/wireless/rtl8822cs/hal/hal_dfs.h create mode 100644 drivers/net/wireless/rtl8822cs/hal/hal_pwr_table.c create mode 100644 drivers/net/wireless/rtl8822cs/hal/hal_pwr_table.h create mode 100644 drivers/net/wireless/rtl8822cs/hal/halmac/halmac_bit_8822e.h create mode 100644 drivers/net/wireless/rtl8822cs/hal/halmac/halmac_reg_8822e.h create mode 100644 drivers/net/wireless/rtl8822cs/include/rtl8822e_hal.h create mode 100644 drivers/net/wireless/rtl8822cs/include/rtl8822ee_hal.h create mode 100644 drivers/net/wireless/rtl8822cs/include/rtl8822es_hal.h create mode 100644 drivers/net/wireless/rtl8822cs/include/rtl8822eu_hal.h create mode 100644 drivers/net/wireless/rtl8822cs/include/rtw_cfg.h create mode 100644 drivers/net/wireless/rtl8822cs/os_dep/linux/os_ch_utils.c create mode 100644 drivers/net/wireless/rtl8822cs/os_dep/linux/os_ch_utils.h create mode 100644 drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_cfg.c diff --git a/drivers/net/wireless/rtl8822cs/Makefile b/drivers/net/wireless/rtl8822cs/Makefile index c4385547b..422dbb189 100644 --- a/drivers/net/wireless/rtl8822cs/Makefile +++ b/drivers/net/wireless/rtl8822cs/Makefile @@ -15,12 +15,28 @@ EXTRA_CFLAGS += -Wno-unused-variable #EXTRA_CFLAGS += -Wno-unused #EXTRA_CFLAGS += -Wno-uninitialized +############ ANDROID COMMON KERNEL ############ +# clang +ifeq ($(CC), clang) +EXTRA_CFLAGS += -Wno-uninitialized +EXTRA_CFLAGS += -Wno-enum-conversion +EXTRA_CFLAGS += -Wno-fortify-source +EXTRA_CFLAGS += -Wno-invalid-source-encoding +EXTRA_CFLAGS += -Wno-tautological-pointer-compare +EXTRA_CFLAGS += -Wno-tautological-overlap-compare +EXTRA_CFLAGS += -Wno-pointer-bool-conversion +EXTRA_CFLAGS += -Wno-misleading-indentation +EXTRA_CFLAGS += -Wno-parentheses-equality +EXTRA_CFLAGS += -Wno-self-assign +EXTRA_CFLAGS += -Wno-header-guard +endif + GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc ) ifeq ($(GCC_VER_49),1) EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later endif -EXTRA_CFLAGS += -I$(srctree)/$(src)/include +EXTRA_CFLAGS += -I$(src)/include EXTRA_LDFLAGS += --strip-debug @@ -46,6 +62,7 @@ CONFIG_RTL8822C = y CONFIG_RTL8814B = n CONFIG_RTL8814C = n CONFIG_RTL8723F = n +CONFIG_RTL8822E = n ######################### Interface ########################### CONFIG_USB_HCI = n CONFIG_PCI_HCI = n @@ -56,8 +73,8 @@ CONFIG_AP_MODE = y CONFIG_P2P = y CONFIG_MP_INCLUDED = y CONFIG_POWER_SAVING = y -CONFIG_IPS_MODE = default -CONFIG_LPS_MODE = default +CONFIG_IPS_MODE = 0 +CONFIG_LPS_MODE = 0 CONFIG_USB_AUTOSUSPEND = n CONFIG_HW_PWRP_DETECTION = n CONFIG_BT_COEXIST = y @@ -70,10 +87,31 @@ CONFIG_TXPWR_BY_RATE = y CONFIG_TXPWR_BY_RATE_EN = y CONFIG_TXPWR_LIMIT = y CONFIG_TXPWR_LIMIT_EN = n +CONFIG_RTW_REGDB = rtk +########################## Initial Channel Plan ########################## +# XX: unspecified +CONFIG_RTW_COUNTRY_CODE = XX +# 0xFFFF: unspecified CONFIG_RTW_CHPLAN = 0xFFFF -CONFIG_RTW_ADAPTIVITY_EN = disable -CONFIG_RTW_ADAPTIVITY_MODE = normal -CONFIG_80211D = n +# 0xFFFF: unspecified +CONFIG_RTW_CHPLAN_6G = 0xFFFF + +########################## 802.11d (country IE slave) ########################## +CONFIG_80211D = y +# 0: disable, 1: enable, 2: enable when INIT/USER set world wide mode +CONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE = 0 +# BIT0: take intersection when having multiple received IEs, otherwise choose effected one from received IEs +# BIT1: consider all environment BSSs, otherwise associated BSSs only +CONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS = 0x01 + +########################## EDCCA for regulatory ########################## +# NORMAL: Without regulatory consideration +# CS : Force Carrier Sense +# ADAPT : Force Adaptivity +# CBP : Force Contention Based Protocol +# AUTO : According to regulatory +CONFIG_RTW_EDCCA_MODE_SEL = NORMAL + CONFIG_SIGNAL_SCALE_MAPPING = n CONFIG_80211W = y CONFIG_REDUCE_TX_CPU_LOADING = n @@ -91,10 +129,12 @@ CONFIG_ICMP_VOQ = n CONFIG_IP_R_MONITOR = n #arp VOQ and high rate # user priority mapping rule : tos, dscp CONFIG_RTW_UP_MAPPING_RULE = tos -CONFIG_RTW_MBO = n +CONFIG_RTW_MBO = y CONFIG_WAKE_ON_BT = n -CONFIG_RTW_NBI = n - +CONFIG_HIGH_PRIORITY_CMD_THREAD = n +CONFIG_RTW_DISABLE_HW_PDN = n +# CONFIG_RTKM - n/m/y for not support / standalone / built-in +CONFIG_RTKM ?= n ########################## Android ########################### # CONFIG_RTW_ANDROID - 0: no Android, 4/5/6/7/8/9/10/11 : Android version CONFIG_RTW_ANDROID = 0 @@ -104,7 +144,7 @@ EXTRA_CFLAGS += -DCONFIG_RTW_ANDROID=$(CONFIG_RTW_ANDROID) endif ########################## Debug ########################### -CONFIG_RTW_DEBUG = n +CONFIG_RTW_DEBUG = y # default log level is _DRV_INFO_ = 4, # please refer to "How_to_set_driver_debug_log_level.doc" to set the available level. CONFIG_RTW_LOG_LEVEL = 4 @@ -116,6 +156,8 @@ CONFIG_PROC_DEBUG = y CONFIG_WOWLAN = n #bit2: deauth, bit1: unicast, bit0: magic pkt. CONFIG_WAKEUP_TYPE = 0x7 +CONFIG_GOOGLE_CAST_WAKEUP = n +CONFIG_WOW_IPS_MODE = default CONFIG_WOW_LPS_MODE = default #bit0: disBBRF off, #bit1: Wireless remote controller (WRC) CONFIG_SUSPEND_TYPE = 0 @@ -130,9 +172,10 @@ CONFIG_ONE_PIN_GPIO = n CONFIG_HIGH_ACTIVE_HST2DEV = n CONFIG_PNO_SUPPORT = n CONFIG_PNO_SET_DEBUG = n +CONFIG_MDNS_OFFLOAD = n CONFIG_AP_WOWLAN = n ######### Notify SDIO Host Keep Power During Syspend ########## -CONFIG_RTW_SDIO_PM_KEEP_POWER = n +CONFIG_RTW_SDIO_PM_KEEP_POWER = y ###################### MP HW TX MODE FOR VHT ####################### CONFIG_MP_VHT_HW_TX_MODE = n ###################### ROAMING ##################################### @@ -141,11 +184,11 @@ CONFIG_LAYER2_ROAMING = y CONFIG_ROAMING_FLAG = 0x3 ####################### Security Memory ############################ # Define for using dma_declare_coherent_memory DMA API. -# User Must set the SECURITY_MEM_ADDR and SECURITY_MEM_SIZE. -# If SECURITY_MEM_ADDR is NULL, driver will show WARN_ON for notification. -CONFIG_SECURITY_MEM = n -CONFIG_SECURITY_MEM_ADDR = 0 -CONFIG_SECURITY_MEM_SIZE = 3686400 +# User Must set the SECURE_DMA_MEM_ADDR and SECURE_DMA_MEM_SIZE. +# If SECURE_DMA_MEM_ADDR is NULL, driver will show WARN_ON for notification. +CONFIG_SECURE_DMA = n +CONFIG_SECURE_DMA_MEM_ADDR = 0 +CONFIG_SECURE_DMA_MEM_SIZE = 3686400 ###################### Platform Related ####################### CONFIG_PLATFORM_I386_PC = y CONFIG_PLATFORM_ANDROID_X86 = n @@ -209,6 +252,7 @@ CONFIG_PLATFORM_NV_TK1_UBUNTU = n CONFIG_PLATFORM_RTL8197D = n CONFIG_PLATFORM_AML_S905 = n CONFIG_PLATFORM_ZTE_ZX296716 = n +CONFIG_PLATFORM_MTK9612 = n ########### CUSTOMER ################################ CONFIG_CUSTOMER_HUAWEI_GENERAL = n @@ -244,6 +288,7 @@ _OS_INTFS_FILES := os_dep/osdep_service.o \ os_dep/linux/recv_linux.o \ os_dep/linux/ioctl_cfg80211.o \ os_dep/linux/rtw_cfgvendor.o \ + os_dep/linux/os_ch_utils.o \ os_dep/linux/wifi_regd.o \ os_dep/linux/rtw_android.o \ os_dep/linux/rtw_proc.o \ @@ -271,6 +316,8 @@ _HAL_INTFS_FILES := hal/hal_intf.o \ hal/hal_phy.o \ hal/hal_dm.o \ hal/hal_dm_acs.o \ + hal/hal_pwr_table.o \ + hal/hal_dfs.o \ hal/hal_btcoex_wifionly.o \ hal/hal_btcoex.o \ hal/hal_mp.o \ @@ -1027,6 +1074,24 @@ endif endif +########### HAL_RTL8822E ################################# +ifeq ($(CONFIG_RTL8822E), y) +RTL871X := rtl8822e +ifeq ($(CONFIG_USB_HCI), y) +ifeq ($(CONFIG_BT_COEXIST), n) +MODULE_NAME = 8812eu +else +MODULE_NAME = 88x2eu +endif +endif +ifeq ($(CONFIG_PCI_HCI), y) +MODULE_NAME = 88x2ee +endif +ifeq ($(CONFIG_SDIO_HCI), y) +MODULE_NAME = 88x2es +endif +endif + ########### AUTO_CFG ################################# ifeq ($(CONFIG_AUTOCFG_CP), y) @@ -1078,6 +1143,9 @@ endif ifneq ($(CONFIG_LPS_MODE), default) EXTRA_CFLAGS += -DRTW_LPS_MODE=$(CONFIG_LPS_MODE) endif +ifneq ($(CONFIG_WOW_IPS_MODE), default) +EXTRA_CFLAGS += -DRTW_WOW_IPS_MODE=$(CONFIG_WOW_IPS_MODE) +endif ifneq ($(CONFIG_WOW_LPS_MODE), default) EXTRA_CFLAGS += -DRTW_WOW_LPS_MODE=$(CONFIG_WOW_LPS_MODE) endif @@ -1162,9 +1230,15 @@ else ifeq ($(CONFIG_TXPWR_LIMIT_EN), auto) EXTRA_CFLAGS += -DCONFIG_TXPWR_LIMIT_EN=2 endif +ifneq ($(CONFIG_RTW_COUNTRY_CODE), XX) +EXTRA_CFLAGS += -DCONFIG_RTW_COUNTRY_CODE=\"$(CONFIG_RTW_COUNTRY_CODE)\" +endif ifneq ($(CONFIG_RTW_CHPLAN), 0xFFFF) EXTRA_CFLAGS += -DCONFIG_RTW_CHPLAN=$(CONFIG_RTW_CHPLAN) endif +ifneq ($(CONFIG_RTW_CHPLAN_6G), 0xFFFF) +EXTRA_CFLAGS += -DCONFIG_RTW_CHPLAN_6G=$(CONFIG_RTW_CHPLAN_6G) +endif ifeq ($(CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY), y) EXTRA_CFLAGS += -DCONFIG_CALIBRATE_TX_POWER_BY_REGULATORY @@ -1174,6 +1248,18 @@ ifeq ($(CONFIG_CALIBRATE_TX_POWER_TO_MAX), y) EXTRA_CFLAGS += -DCONFIG_CALIBRATE_TX_POWER_TO_MAX endif +ifeq ($(CONFIG_RTW_EDCCA_MODE_SEL), NORMAL) +EXTRA_CFLAGS += -DCONFIG_RTW_EDCCA_MODE_SEL=0 +else ifeq ($(CONFIG_RTW_EDCCA_MODE_SEL), CS) +EXTRA_CFLAGS += -DCONFIG_RTW_EDCCA_MODE_SEL=1 +else ifeq ($(CONFIG_RTW_EDCCA_MODE_SEL), ADAPT) +EXTRA_CFLAGS += -DCONFIG_RTW_EDCCA_MODE_SEL=2 +else ifeq ($(CONFIG_RTW_EDCCA_MODE_SEL), CBP) +EXTRA_CFLAGS += -DCONFIG_RTW_EDCCA_MODE_SEL=3 +else ifeq ($(CONFIG_RTW_EDCCA_MODE_SEL), AUTO) +EXTRA_CFLAGS += -DCONFIG_RTW_EDCCA_MODE_SEL=0xFF +endif + ifeq ($(CONFIG_RTW_ADAPTIVITY_EN), disable) EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_EN=0 else ifeq ($(CONFIG_RTW_ADAPTIVITY_EN), enable) @@ -1190,6 +1276,12 @@ endif ifeq ($(CONFIG_80211D), y) EXTRA_CFLAGS += -DCONFIG_80211D +ifneq ($(CONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE), ) +EXTRA_CFLAGS += -DCONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE=$(CONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE) +endif +ifneq ($(CONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS), ) +EXTRA_CFLAGS += -DCONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS=$(CONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS) +endif endif ifeq ($(CONFIG_SIGNAL_SCALE_MAPPING), y) @@ -1203,6 +1295,9 @@ endif ifeq ($(CONFIG_WOWLAN), y) EXTRA_CFLAGS += -DCONFIG_WOWLAN -DRTW_WAKEUP_EVENT=$(CONFIG_WAKEUP_TYPE) EXTRA_CFLAGS += -DRTW_SUSPEND_TYPE=$(CONFIG_SUSPEND_TYPE) +ifeq ($(CONFIG_GOOGLE_CAST_WAKEUP), y) +EXTRA_CFLAGS += -DCONFIG_GOOGLE_CAST_WAKEUP +endif ifeq ($(CONFIG_WOW_STA_MIX), y) EXTRA_CFLAGS += -DRTW_WOW_STA_MIX endif @@ -1232,6 +1327,10 @@ EXTRA_CFLAGS += -DCONFIG_PNO_SET_DEBUG endif endif +ifeq ($(CONFIG_MDNS_OFFLOAD), y) +EXTRA_CFLAGS += -DCONFIG_MDNS_OFFLOAD +endif + ifeq ($(CONFIG_GPIO_WAKEUP), y) EXTRA_CFLAGS += -DCONFIG_GPIO_WAKEUP ifeq ($(CONFIG_ONE_PIN_GPIO), y) @@ -1254,11 +1353,11 @@ ifneq ($(CONFIG_WAKEUP_GPIO_IDX), default) EXTRA_CFLAGS += -DWAKEUP_GPIO_IDX=$(CONFIG_WAKEUP_GPIO_IDX) endif -#ifeq ($(CONFIG_RTW_SDIO_PM_KEEP_POWER), y) -#ifeq ($(CONFIG_SDIO_HCI), y) -#EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER -#endif -#endif +ifeq ($(CONFIG_RTW_SDIO_PM_KEEP_POWER), y) +ifeq ($(CONFIG_SDIO_HCI), y) +EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER +endif +endif ifeq ($(CONFIG_REDUCE_TX_CPU_LOADING), y) EXTRA_CFLAGS += -DCONFIG_REDUCE_TX_CPU_LOADING @@ -1349,26 +1448,31 @@ EXTRA_CFLAGS += -DDM_ODM_SUPPORT_TYPE=0x04 ifeq ($(CONFIG_RTW_MBO), y) EXTRA_CFLAGS += -DCONFIG_RTW_MBO -DCONFIG_RTW_80211K -DCONFIG_RTW_WNM -DCONFIG_RTW_BTM_ROAM EXTRA_CFLAGS += -DCONFIG_RTW_80211R +EXTRA_CFLAGS += -DRTW_FT_DBG=0 -DRTW_WNM_DBG=0 -DRTW_MBO_DBG=0 endif ifeq ($(CONFIG_WAKE_ON_BT), y) EXTRA_CFLAGS += -DCONFIG_WAKE_ON_BT endif -ifeq ($(CONFIG_RTW_NBI), y) -EXTRA_CFLAGS += -DCONFIG_RTW_NBI +ifeq ($(CONFIG_HIGH_PRIORITY_CMD_THREAD), y) +EXTRA_CFLAGS += -DCONFIG_HIGH_PRIORITY_CMD_THREAD endif -ifeq ($(CONFIG_SECURITY_MEM), y) -EXTRA_CFLAGS += -DCONFIG_SECURITY_MEM -EXTRA_CFLAGS += -DSECURITY_MEM_ADDR=$(CONFIG_SECURITY_MEM_ADDR) -EXTRA_CFLAGS += -DSECURITY_MEM_SIZE=$(CONFIG_SECURITY_MEM_SIZE) +ifeq ($(CONFIG_SECURE_DMA), y) +EXTRA_CFLAGS += -DCONFIG_SECURE_DMA +EXTRA_CFLAGS += -DSECURE_DMA_MEM_ADDR=$(CONFIG_SECURE_DMA_MEM_ADDR) +EXTRA_CFLAGS += -DSECURE_DMA_MEM_SIZE=$(CONFIG_SECURE_DMA_MEM_SIZE) +endif + +ifeq ($(CONFIG_RTW_DISABLE_HW_PDN), y) +EXTRA_CFLAGS += -DCONFIG_RTW_DISABLE_HW_PDN endif ifeq ($(CONFIG_PLATFORM_I386_PC), y) -EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_USB_INBAND EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT -EXTRA_CFLAGS += -DCONFIG_RESUME_IN_WORKQUEUE +EXTRA_CFLAGS += -DCONFIG_PLATFORM_I386_PC SUBARCH := $(shell uname -m | sed -e s/i.86/i386/) ARCH ?= $(SUBARCH) @@ -1817,6 +1921,12 @@ ifeq ($(CONFIG_SDIO_HCI), y) _PLATFORM_FILES += platform/platform_ARM_SUNxI_sdio.o endif +ifeq ($(shell test $(CONFIG_RTW_ANDROID) -ge 11; echo $$?), 0) +# GKI build for Allwinner A527 +ARCH ?= arm64 +KSRC ?= $(KERNEL_SRC) +else +# Other Allwinner platform ARCH := arm #CROSS_COMPILE := arm-none-linux-gnueabi- CROSS_COMPILE=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/buildroot/output/external-toolchain/bin/arm-none-linux-gnueabi- @@ -1825,6 +1935,8 @@ KVER := 3.0.8 KSRC=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/linux-3.0 endif +endif + ifeq ($(CONFIG_PLATFORM_ARM_SUN6I), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN6I @@ -2281,11 +2393,14 @@ endif ARCH ?= arm64 CROSS_COMPILE ?= /4.4_S905L_8822bs_compile/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- ifndef KSRC -KSRC := /4.4_S905L_8822bs_compile/common +############ ANDROID COMMON KERNEL ############ +KSRC := $(KERNEL_SRC) +#KSRC := /4.4_S905L_8822bs_compile/common # To locate output files in a separate directory. -KSRC += O=/4.4_S905L_8822bs_compile/KERNEL_OBJ +#KSRC += O=/4.4_S905L_8822bs_compile/KERNEL_OBJ endif + ifeq ($(CONFIG_RTL8822B), y) ifeq ($(CONFIG_SDIO_HCI), y) CONFIG_RTL8822BS ?= m @@ -2325,6 +2440,25 @@ endif endif +ifeq ($(CONFIG_PLATFORM_MTK9612), y) +WLAN_DIR ?= /vendor/mediatek/proprietary_tv/apollo/linux_mts/ko_modules/wlan_driver/rtl8822cu +ROOT_DIR ?= $(word 1, $(subst $(WLAN_DIR),, $(shell pwd))) +#default setting for Special funcion +KVER := 4.19 +KSRC =$(ROOT_DIR)/kernel/fusion/4.19 +CROSS_COMPILE=$(ROOT_DIR)/prebuilts/mtk_toolchain/linaro-4.9.3-2014.11-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- +export ARCH := arm +MODULE_NAME := wlan_rtl8822cu +EXTRA_CFLAGS += -DCONFIG_PLATFORM_MTK9612 +EXTRA_CFLAGS += -DCONFIG_HIGH_PRIORITY_CMD_THREAD +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT -DCONFIG_RADIO_WORK +EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE +#EXTRA_CFLAGS += -DCONFIG_DEBUG_CFG80211 +ifeq ($(CONFIG_USB_HCI), y) +EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX -DCONFIG_FIX_NR_BULKIN_BUFFER +endif +endif ########### CUSTOMER ################################ ifeq ($(CONFIG_CUSTOMER_HUAWEI_GENERAL), y) CONFIG_CUSTOMER_HUAWEI = y @@ -2334,6 +2468,15 @@ ifeq ($(CONFIG_CUSTOMER_HUAWEI), y) EXTRA_CFLAGS += -DCONFIG_HUAWEI_PROC endif +############ ANDROID COMMON KERNEL ############ +export M ?= $(shell pwd) +export OUT_DIR ?= $(shell pwd) +ifneq ($(LLVM),) +export CC_STRIP = llvm-strip +else +export CC_STRIP = $(CROSS_COMPILE)strip +endif + CONFIG_PLATFORM_CMAP_INTFS = n ifeq ($(CONFIG_PLATFORM_CMAP_INTFS), y) PLATFORM_CMAP_INTFS_TYPE = 00 @@ -2397,6 +2540,11 @@ ifeq ($(CONFIG_RTL8723F), y) include $(src)/rtl8723f.mk endif +########### HAL_RTL8822E ################################# +ifeq ($(CONFIG_RTL8822E), y) +include $(src)/rtl8822e.mk +endif + rtk_core := core/rtw_cmd.o \ core/rtw_security.o \ core/rtw_debug.o \ @@ -2412,6 +2560,10 @@ rtk_core := core/rtw_cmd.o \ core/rtw_pwrctrl.o \ core/rtw_rf.o \ core/rtw_chplan.o \ + core/rtw_regdb_$(CONFIG_RTW_REGDB).o \ + core/rtw_chset.o \ + core/rtw_dfs.o \ + core/rtw_txpwr.o \ core/monitor/rtw_radiotap.o \ core/rtw_recv.o \ core/rtw_sta_mgt.o \ @@ -2480,6 +2632,24 @@ endif obj-$(CONFIG_RTL8822CS) := $(MODULE_NAME).o +############# MEMORY MANAGMENT ############# +ifneq ($(CONFIG_RTKM), n) +_MEMM_FILES = core/rtw_prealloc.o +ifeq ($(CONFIG_RTKM), y) +EXTRA_CFLAGS += -DCONFIG_RTKM -DCONFIG_RTKM_BUILT_IN +EXTRA_CFLAGS += -DCONFIG_PREALLOC_RX_SKB_BUFFER +$(MODULE_NAME)-y += $(_MEMM_FILES) +else ifeq ($(CONFIG_RTKM), m) +RTKM_MODULE = rtkm +EXTRA_CFLAGS += -DCONFIG_RTKM -DCONFIG_RTKM_STANDALONE +EXTRA_CFLAGS += -DCONFIG_PREALLOC_RX_SKB_BUFFER +_MEMM_FILES += core/rtw_mem.o +_MEMM_FILES += os_dep/osdep_service.o +$(RTKM_MODULE)-y += $(_MEMM_FILES) +obj-$(CONFIG_RTL8822CS) += $(RTKM_MODULE).o +endif +endif + else export CONFIG_RTL8822CS = m @@ -2487,10 +2657,11 @@ export CONFIG_RTL8822CS = m all: modules modules: - $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules + $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(M) modules +# $(CC_STRIP) --strip-unneeded ${OUT_DIR}/$(M)/$(MODULE_NAME).ko strip: - $(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded + $(CC_STRIP) $(MODULE_NAME).ko --strip-unneeded install: install -p -m 644 $(MODULE_NAME).ko $(MODDESTDIR) @@ -2500,6 +2671,12 @@ uninstall: rm -f $(MODDESTDIR)/$(MODULE_NAME).ko /sbin/depmod -a ${KVER} +modules_install: + $(MAKE) INSTALL_MOD_STRIP=1 M=$(M) -C $(KSRC) modules_install +# mkdir -p ${OUT_DIR}/../vendor_lib/modules +# cd ${OUT_DIR}/$(M)/; find -name $(MODULE_NAME).ko -exec cp {} ${OUT_DIR}/../vendor_lib/modules/ \; + + backup_rtlwifi: @echo "Making backup rtlwifi drivers" ifneq (,$(wildcard $(STAGINGMODDIR)/rtl*)) @@ -2557,3 +2734,21 @@ clean: rm -fr .tmp_versions endif + +############ ANDROID COMMON KERNEL ############ +# Convert to absolute path +ifneq ($(srctree),) +_EXTRA_CFLAGS := +_INC_CFLAGS := +$(foreach flag,$(EXTRA_CFLAGS),\ + $(if $(shell echo $(flag) | grep "\-I"),\ + $(eval _INC_CFLAGS += $(flag)),\ + $(eval _EXTRA_CFLAGS += $(flag))\ + )\ +) +_INC_CFLAGS := \ +$(foreach flag,$(subst -I,,$(_INC_CFLAGS)),\ + $(shell if test -d $(srctree)/$(flag); then echo -I$$(cd $(srctree)/$(flag) && pwd); else echo -I$(flag); fi)\ +) +EXTRA_CFLAGS := $(_EXTRA_CFLAGS) $(_INC_CFLAGS) +endif diff --git a/drivers/net/wireless/rtl8822cs/core/crypto/aes-ccm.c b/drivers/net/wireless/rtl8822cs/core/crypto/aes-ccm.c index 2d7d2c01c..f208eb2f4 100644 --- a/drivers/net/wireless/rtl8822cs/core/crypto/aes-ccm.c +++ b/drivers/net/wireless/rtl8822cs/core/crypto/aes-ccm.c @@ -40,7 +40,7 @@ static void aes_ccm_auth_start(void *aes, size_t M, size_t L, const u8 *nonce, WPA_PUT_BE16(&b[AES_BLOCK_SIZE - L], plain_len); wpa_hexdump_key(_MSG_EXCESSIVE_, "CCM B_0", b, AES_BLOCK_SIZE); - aes_encrypt1(aes, b, x); /* X_1 = E(K, B_0) */ + wpa_aes_encrypt(aes, b, x); /* X_1 = E(K, B_0) */ if (!aad_len) return; @@ -50,12 +50,12 @@ static void aes_ccm_auth_start(void *aes, size_t M, size_t L, const u8 *nonce, os_memset(aad_buf + 2 + aad_len, 0, sizeof(aad_buf) - 2 - aad_len); xor_aes_block(aad_buf, x); - aes_encrypt1(aes, aad_buf, x); /* X_2 = E(K, X_1 XOR B_1) */ + wpa_aes_encrypt(aes, aad_buf, x); /* X_2 = E(K, X_1 XOR B_1) */ if (aad_len > AES_BLOCK_SIZE - 2) { xor_aes_block(&aad_buf[AES_BLOCK_SIZE], x); /* X_3 = E(K, X_2 XOR B_2) */ - aes_encrypt1(aes, &aad_buf[AES_BLOCK_SIZE], x); + wpa_aes_encrypt(aes, &aad_buf[AES_BLOCK_SIZE], x); } } @@ -69,13 +69,13 @@ static void aes_ccm_auth(void *aes, const u8 *data, size_t len, u8 *x) /* X_i+1 = E(K, X_i XOR B_i) */ xor_aes_block(x, data); data += AES_BLOCK_SIZE; - aes_encrypt1(aes, x, x); + wpa_aes_encrypt(aes, x, x); } if (last) { /* XOR zero-padded last block */ for (i = 0; i < last; i++) x[i] ^= *data++; - aes_encrypt1(aes, x, x); + wpa_aes_encrypt(aes, x, x); } } @@ -98,14 +98,14 @@ static void aes_ccm_encr(void *aes, size_t L, const u8 *in, size_t len, u8 *out, for (i = 1; i <= len / AES_BLOCK_SIZE; i++) { WPA_PUT_BE16(&a[AES_BLOCK_SIZE - 2], i); /* S_i = E(K, A_i) */ - aes_encrypt1(aes, a, out); + wpa_aes_encrypt(aes, a, out); xor_aes_block(out, in); out += AES_BLOCK_SIZE; in += AES_BLOCK_SIZE; } if (last) { WPA_PUT_BE16(&a[AES_BLOCK_SIZE - 2], i); - aes_encrypt1(aes, a, out); + wpa_aes_encrypt(aes, a, out); /* XOR zero-padded last block */ for (i = 0; i < last; i++) *out++ ^= *in++; @@ -121,7 +121,7 @@ static void aes_ccm_encr_auth(void *aes, size_t M, u8 *x, u8 *a, u8 *auth) wpa_hexdump_key(_MSG_EXCESSIVE_, "CCM T", x, M); /* U = T XOR S_0; S_0 = E(K, A_0) */ WPA_PUT_BE16(&a[AES_BLOCK_SIZE - 2], 0); - aes_encrypt1(aes, a, tmp); + wpa_aes_encrypt(aes, a, tmp); for (i = 0; i < M; i++) auth[i] = x[i] ^ tmp[i]; wpa_hexdump_key(_MSG_EXCESSIVE_, "CCM U", auth, M); @@ -136,7 +136,7 @@ static void aes_ccm_decr_auth(void *aes, size_t M, u8 *a, const u8 *auth, u8 *t) wpa_hexdump_key(_MSG_EXCESSIVE_, "CCM U", auth, M); /* U = T XOR S_0; S_0 = E(K, A_0) */ WPA_PUT_BE16(&a[AES_BLOCK_SIZE - 2], 0); - aes_encrypt1(aes, a, tmp); + wpa_aes_encrypt(aes, a, tmp); for (i = 0; i < M; i++) t[i] = auth[i] ^ tmp[i]; wpa_hexdump_key(_MSG_EXCESSIVE_, "CCM T", t, M); diff --git a/drivers/net/wireless/rtl8822cs/core/crypto/aes-ctr.c b/drivers/net/wireless/rtl8822cs/core/crypto/aes-ctr.c index 81a6da31f..c7e235e4e 100644 --- a/drivers/net/wireless/rtl8822cs/core/crypto/aes-ctr.c +++ b/drivers/net/wireless/rtl8822cs/core/crypto/aes-ctr.c @@ -36,7 +36,7 @@ int aes_ctr_encrypt(const u8 *key, size_t key_len, const u8 *nonce, os_memcpy(counter, nonce, AES_BLOCK_SIZE); while (left > 0) { - aes_encrypt1(ctx, counter, buf); + wpa_aes_encrypt(ctx, counter, buf); len = (left < AES_BLOCK_SIZE) ? left : AES_BLOCK_SIZE; for (j = 0; j < len; j++) diff --git a/drivers/net/wireless/rtl8822cs/core/crypto/aes-gcm.c b/drivers/net/wireless/rtl8822cs/core/crypto/aes-gcm.c index 7582bd7e2..27b4bbf0a 100644 --- a/drivers/net/wireless/rtl8822cs/core/crypto/aes-gcm.c +++ b/drivers/net/wireless/rtl8822cs/core/crypto/aes-gcm.c @@ -154,7 +154,7 @@ static void aes_gctr(void *aes, const u8 *icb, const u8 *x, size_t xlen, u8 *y) os_memcpy(cb, icb, AES_BLOCK_SIZE); /* Full blocks */ for (i = 0; i < n; i++) { - aes_encrypt1(aes, cb, ypos); + wpa_aes_encrypt(aes, cb, ypos); xor_block(ypos, xpos); xpos += AES_BLOCK_SIZE; ypos += AES_BLOCK_SIZE; @@ -164,7 +164,7 @@ static void aes_gctr(void *aes, const u8 *icb, const u8 *x, size_t xlen, u8 *y) last = x + xlen - xpos; if (last) { /* Last, partial block */ - aes_encrypt1(aes, cb, tmp); + wpa_aes_encrypt(aes, cb, tmp); for (i = 0; i < last; i++) *ypos++ = *xpos++ ^ tmp[i]; } @@ -181,7 +181,7 @@ static void * aes_gcm_init_hash_subkey(const u8 *key, size_t key_len, u8 *H) /* Generate hash subkey H = AES_K(0^128) */ os_memset(H, 0, AES_BLOCK_SIZE); - aes_encrypt1(aes, H, H); + wpa_aes_encrypt(aes, H, H); wpa_hexdump_key(_MSG_EXCESSIVE_, "Hash subkey H for GHASH", H, AES_BLOCK_SIZE); return aes; diff --git a/drivers/net/wireless/rtl8822cs/core/crypto/aes-internal-enc.c b/drivers/net/wireless/rtl8822cs/core/crypto/aes-internal-enc.c index 2437d909c..c5521b876 100644 --- a/drivers/net/wireless/rtl8822cs/core/crypto/aes-internal-enc.c +++ b/drivers/net/wireless/rtl8822cs/core/crypto/aes-internal-enc.c @@ -114,7 +114,7 @@ void * aes_encrypt_init(const u8 *key, size_t len) } -int aes_encrypt1(void *ctx, const u8 *plain, u8 *crypt) +int wpa_aes_encrypt(void *ctx, const u8 *plain, u8 *crypt) { u32 *rk = ctx; rijndaelEncrypt(ctx, rk[AES_PRIV_NR_POS], plain, crypt); diff --git a/drivers/net/wireless/rtl8822cs/core/crypto/aes-omac1.c b/drivers/net/wireless/rtl8822cs/core/crypto/aes-omac1.c index 6662b85cc..c55645fb0 100644 --- a/drivers/net/wireless/rtl8822cs/core/crypto/aes-omac1.c +++ b/drivers/net/wireless/rtl8822cs/core/crypto/aes-omac1.c @@ -81,12 +81,12 @@ int omac1_aes_vector(const u8 *key, size_t key_len, size_t num_elem, } } if (left > AES_BLOCK_SIZE) - aes_encrypt1(ctx, cbc, cbc); + wpa_aes_encrypt(ctx, cbc, cbc); left -= AES_BLOCK_SIZE; } os_memset(pad, 0, AES_BLOCK_SIZE); - aes_encrypt1(ctx, pad, pad); + wpa_aes_encrypt(ctx, pad, pad); gf_mulx(pad); if (left || total_len == 0) { @@ -110,7 +110,7 @@ int omac1_aes_vector(const u8 *key, size_t key_len, size_t num_elem, for (i = 0; i < AES_BLOCK_SIZE; i++) pad[i] ^= cbc[i]; - aes_encrypt1(ctx, pad, mac); + wpa_aes_encrypt(ctx, pad, mac); aes_encrypt_deinit(ctx); return 0; } diff --git a/drivers/net/wireless/rtl8822cs/core/crypto/aes.h b/drivers/net/wireless/rtl8822cs/core/crypto/aes.h index ff544dea9..d105d54db 100644 --- a/drivers/net/wireless/rtl8822cs/core/crypto/aes.h +++ b/drivers/net/wireless/rtl8822cs/core/crypto/aes.h @@ -12,7 +12,7 @@ #define AES_BLOCK_SIZE 16 void * aes_encrypt_init(const u8 *key, size_t len); -int aes_encrypt1(void *ctx, const u8 *plain, u8 *crypt); +int wpa_aes_encrypt(void *ctx, const u8 *plain, u8 *crypt); void aes_encrypt_deinit(void *ctx); void * aes_decrypt_init(const u8 *key, size_t len); int aes_decrypt(void *ctx, const u8 *crypt, u8 *plain); diff --git a/drivers/net/wireless/rtl8822cs/core/def_module_country_chplan.h b/drivers/net/wireless/rtl8822cs/core/def_module_country_chplan.h new file mode 100644 index 000000000..b993d9e4b --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/core/def_module_country_chplan.h @@ -0,0 +1,1519 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ + +#define RTW_MODULE_RTL8821AE_HMC_M2 BIT0 /* RTL8821AE(HMC + M.2) */ +#define RTW_MODULE_RTL8821AU BIT1 /* RTL8821AU */ +#define RTW_MODULE_RTL8812AENF_NGFF BIT2 /* RTL8812AENF(8812AE+8761)_NGFF */ +#define RTW_MODULE_RTL8812AEBT_HMC BIT3 /* RTL8812AEBT(8812AE+8761)_HMC */ +#define RTW_MODULE_RTL8188EE_HMC_M2 BIT4 /* RTL8188EE(HMC + M.2) */ +#define RTW_MODULE_RTL8723BE_HMC_M2 BIT5 /* RTL8723BE(HMC + M.2) */ +#define RTW_MODULE_RTL8723BS_NGFF1216 BIT6 /* RTL8723BS(NGFF1216) */ +#define RTW_MODULE_RTL8192EEBT_HMC_M2 BIT7 /* RTL8192EEBT(8192EE+8761AU)_(HMC + M.2) */ +#define RTW_MODULE_RTL8723DE_NGFF1630 BIT8 /* RTL8723DE(NGFF1630) */ +#define RTW_MODULE_RTL8822BE BIT9 /* RTL8822BE */ +#define RTW_MODULE_RTL8821CE BIT10 /* RTL8821CE */ +#define RTW_MODULE_RTL8822CE BIT11 /* RTL8822CE */ + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8821AE_HMC_M2) /* 2013 certify */ +static const struct country_chplan RTL8821AE_HMC_M2_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CL", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ID", 0x3D, 0x00, DEF , 0, 0, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MY", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x36, 0x00, DEF , 0, 0, 1), + COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8821AU) /* 2014 certify */ +static const struct country_chplan RTL8821AU_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ID", 0x3D, 0x00, DEF , 0, 0, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 0, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x36, 0x00, DEF , 0, 0, 1), + COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8812AENF_NGFF) /* 2014 certify */ +static const struct country_chplan RTL8812AENF_NGFF_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8812AEBT_HMC) /* 2013 certify */ +static const struct country_chplan RTL8812AEBT_HMC_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 0, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x36, 0x00, DEF , 0, 0, 1), + COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8188EE_HMC_M2) /* 2012 certify */ +static const struct country_chplan RTL8188EE_HMC_M2_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AW", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BB", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x20, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GD", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HT", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SC", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VC", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8723BE_HMC_M2) /* 2013 certify */ +static const struct country_chplan RTL8723BE_HMC_M2_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AW", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BS", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x20, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GD", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8723BS_NGFF1216) /* 2014 certify */ +static const struct country_chplan RTL8723BS_NGFF1216_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BB", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x20, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HT", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("YE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8192EEBT_HMC_M2) /* 2013 certify */ +static const struct country_chplan RTL8192EEBT_HMC_M2_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AW", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x20, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EH", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GD", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SC", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ST", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("YT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8723DE_NGFF1630) /* 2016 certify */ +static const struct country_chplan RTL8723DE_NGFF1630_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x2A, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CO", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CR", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GT", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PE", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8822BE) /* 2016 certify */ +static const struct country_chplan RTL8822BE_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BB", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BM", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BS", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x2B, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CO", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CR", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EH", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FJ", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GP", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GT", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GU", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ID", 0x3D, 0x00, DEF , 0, 0, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MO", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MX", 0x4D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PE", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SC", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ST", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, UKRAINE, 0, 1, 1), + COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("YT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8821CE) /* 2016 certify */ +static const struct country_chplan RTL8821CE_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BB", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BM", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BS", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x2B, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CO", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CR", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EH", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FJ", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GP", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GT", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GU", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ID", 0x3D, 0x00, DEF , 0, 0, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MO", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MX", 0x4D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PE", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SC", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ST", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, UKRAINE, 0, 1, 1), + COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("YT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1, 1), +}; +#endif + +#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8822CE) /* 2018 certify */ +static const struct country_chplan RTL8822CE_country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AW", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BB", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BM", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BS", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CA", 0x2B, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, CN , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CO", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CR", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("EH", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FJ", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GP", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GT", 0x61, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GU", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HT", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KR", 0x4B, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("KZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MO", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MQ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MX", 0x4D, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NA", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PE", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SC", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ST", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("SZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TF", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TJ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, UKRAINE, 0, 1, 1), + COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("US", 0x76, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("YT", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1, 1), + COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1, 1), +}; +#endif + +/** + * rtw_def_module_country_chplan_map - + * @hal_map: returned map + * @return: size of map + */ +static u16 rtw_def_module_country_chplan_map(const struct country_chplan **hal_map) +{ + u16 hal_map_sz = 0; + + /* TODO: runtime selection for multi driver */ +#if (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8821AE_HMC_M2) + *hal_map = RTL8821AE_HMC_M2_country_chplan_map; + hal_map_sz = sizeof(RTL8821AE_HMC_M2_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8821AU) + *hal_map = RTL8821AU_country_chplan_map; + hal_map_sz = sizeof(RTL8821AU_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8812AENF_NGFF) + *hal_map = RTL8812AENF_NGFF_country_chplan_map; + hal_map_sz = sizeof(RTL8812AENF_NGFF_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8812AEBT_HMC) + *hal_map = RTL8812AEBT_HMC_country_chplan_map; + hal_map_sz = sizeof(RTL8812AEBT_HMC_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8188EE_HMC_M2) + *hal_map = RTL8188EE_HMC_M2_country_chplan_map; + hal_map_sz = sizeof(RTL8188EE_HMC_M2_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8723BE_HMC_M2) + *hal_map = RTL8723BE_HMC_M2_country_chplan_map; + hal_map_sz = sizeof(RTL8723BE_HMC_M2_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8723BS_NGFF1216) + *hal_map = RTL8723BS_NGFF1216_country_chplan_map; + hal_map_sz = sizeof(RTL8723BS_NGFF1216_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8192EEBT_HMC_M2) + *hal_map = RTL8192EEBT_HMC_M2_country_chplan_map; + hal_map_sz = sizeof(RTL8192EEBT_HMC_M2_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8723DE_NGFF1630) + *hal_map = RTL8723DE_NGFF1630_country_chplan_map; + hal_map_sz = sizeof(RTL8723DE_NGFF1630_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8822BE) + *hal_map = RTL8822BE_country_chplan_map; + hal_map_sz = sizeof(RTL8822BE_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8821CE) + *hal_map = RTL8821CE_country_chplan_map; + hal_map_sz = sizeof(RTL8821CE_country_chplan_map) / sizeof(struct country_chplan); +#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8822CE) + *hal_map = RTL8822CE_country_chplan_map; + hal_map_sz = sizeof(RTL8822CE_country_chplan_map) / sizeof(struct country_chplan); +#endif + + return hal_map_sz; +} diff --git a/drivers/net/wireless/rtl8822cs/core/efuse/rtw_efuse.c b/drivers/net/wireless/rtl8822cs/core/efuse/rtw_efuse.c index 1768cb2e0..eea31cf77 100644 --- a/drivers/net/wireless/rtl8822cs/core/efuse/rtw_efuse.c +++ b/drivers/net/wireless/rtl8822cs/core/efuse/rtw_efuse.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -36,8 +36,8 @@ u8 fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE]; u8 fakeBTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN] = {0}; u8 fakeBTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN] = {0}; -u8 maskfileBuffer[64]; -u8 btmaskfileBuffer[64]; +u8 maskfileBuffer[192]; +u8 btmaskfileBuffer[192]; /*------------------------Define local variable------------------------------*/ BOOLEAN rtw_file_efuse_IsMasked(PADAPTER pAdapter, u16 Offset, u8 *maskbuf) @@ -89,6 +89,21 @@ BOOLEAN efuse_IsBT_Masked(PADAPTER pAdapter, u16 Offset) return (IS_BT_MASKED(8723F, _MSDIO, Offset)) ? TRUE : FALSE; #endif #endif /*#ifdef CONFIG_RTL8723F*/ +#ifdef CONFIG_RTL8822E +#ifdef CONFIG_USB_HCI + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return (IS_BT_MASKED(8822E, _MUSB, Offset)) ? TRUE : FALSE; +#endif +#ifdef CONFIG_PCI_HCI + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return (IS_BT_MASKED(8822E, _MPCIE, Offset)) ? TRUE : FALSE; +#endif +#ifdef CONFIG_SDIO_HCI + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return (IS_BT_MASKED(8822E, _MSDIO, Offset)) ? TRUE : FALSE; +#endif +#endif /* CONFIG_RTL8822E */ + #endif /* CONFIG_BT_EFUSE_MASK */ return FALSE; } @@ -122,6 +137,21 @@ if (IS_HARDWARE_TYPE_8822CU(pAdapter)) GET_BT_MASK_ARRAY(8723F, _MSDIO, pArray); #endif #endif /*#ifdef CONFIG_RTL8723F*/ +#ifdef CONFIG_RTL8822E +#ifdef CONFIG_USB_HCI +if (IS_HARDWARE_TYPE_8822EU(pAdapter)) + GET_BT_MASK_ARRAY(8822E, _MUSB, pArray); +#endif +#ifdef CONFIG_PCI_HCI + if (IS_HARDWARE_TYPE_8822EE(pAdapter)) + GET_BT_MASK_ARRAY(8822E, _MPCIE, pArray); +#endif +#ifdef CONFIG_SDIO_HCI + if (IS_HARDWARE_TYPE_8822ES(pAdapter)) + GET_BT_MASK_ARRAY(8822E, _MSDIO, pArray); +#endif +#endif /* CONFIG_RTL8822E */ + #endif /* CONFIG_BT_EFUSE_MASK */ } @@ -155,6 +185,21 @@ u16 rtw_get_bt_efuse_mask_arraylen(PADAPTER pAdapter) return GET_BT_MASK_ARRAY_LEN(8723F, _MSDIO); #endif #endif /*CONFIG_RTL8723F*/ +#ifdef CONFIG_RTL8822E +#ifdef CONFIG_USB_HCI + if (IS_HARDWARE_TYPE_8822EU(pAdapter)) + return GET_BT_MASK_ARRAY_LEN(8822E, _MUSB); +#endif +#ifdef CONFIG_PCI_HCI + if (IS_HARDWARE_TYPE_8822EE(pAdapter)) + return GET_BT_MASK_ARRAY_LEN(8822E, _MPCIE); +#endif +#ifdef CONFIG_SDIO_HCI + if (IS_HARDWARE_TYPE_8822ES(pAdapter)) + return GET_BT_MASK_ARRAY_LEN(8822E, _MSDIO); +#endif +#endif /* CONFIG_RTL8822E */ + #endif /* CONFIG_BT_EFUSE_MASK */ return 0; @@ -240,6 +285,10 @@ BOOLEAN efuse_IsMasked(PADAPTER pAdapter, u16 Offset) if (IS_HARDWARE_TYPE_8723F(pAdapter)) return (IS_MASKED(8723F, _MUSB, Offset)) ? TRUE : FALSE; #endif +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return (IS_MASKED(8822E, _MUSB, Offset)) ? TRUE : FALSE; +#endif #endif /*CONFIG_USB_HCI*/ #ifdef CONFIG_PCI_HCI @@ -288,6 +337,10 @@ BOOLEAN efuse_IsMasked(PADAPTER pAdapter, u16 Offset) if (IS_HARDWARE_TYPE_8814B(pAdapter)) return (IS_MASKED(8814B, _MPCIE, Offset)) ? TRUE : FALSE; #endif +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return (IS_MASKED(8822E, _MPCIE, Offset)) ? TRUE : FALSE; +#endif #endif /*CONFIG_PCI_HCI*/ #ifdef CONFIG_SDIO_HCI @@ -335,6 +388,10 @@ BOOLEAN efuse_IsMasked(PADAPTER pAdapter, u16 Offset) if (IS_HARDWARE_TYPE_8723F(pAdapter)) return (IS_MASKED(8723F, _MSDIO, Offset)) ? TRUE : FALSE; #endif +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return (IS_MASKED(8822E, _MSDIO, Offset)) ? TRUE : FALSE; +#endif #endif /*CONFIG_SDIO_HCI*/ return FALSE; @@ -404,6 +461,10 @@ void rtw_efuse_mask_array(PADAPTER pAdapter, u8 *pArray) if (IS_HARDWARE_TYPE_8723F(pAdapter)) GET_MASK_ARRAY(8723F, _MUSB, pArray); #endif +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + GET_MASK_ARRAY(8822E, _MUSB, pArray); +#endif #endif /*CONFIG_USB_HCI*/ #ifdef CONFIG_PCI_HCI @@ -451,6 +512,10 @@ void rtw_efuse_mask_array(PADAPTER pAdapter, u8 *pArray) if (IS_HARDWARE_TYPE_8814B(pAdapter)) GET_MASK_ARRAY(8814B, _MPCIE, pArray); #endif +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + GET_MASK_ARRAY(8822E, _MPCIE, pArray); +#endif #endif /*CONFIG_PCI_HCI*/ #ifdef CONFIG_SDIO_HCI @@ -498,6 +563,10 @@ void rtw_efuse_mask_array(PADAPTER pAdapter, u8 *pArray) if (IS_HARDWARE_TYPE_8723F(pAdapter)) GET_MASK_ARRAY(8723F, _MSDIO, pArray); #endif +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + GET_MASK_ARRAY(8822E , _MSDIO, pArray); +#endif #endif /*CONFIG_SDIO_HCI*/ } @@ -566,6 +635,10 @@ u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter) if (IS_HARDWARE_TYPE_8723F(pAdapter)) return GET_MASK_ARRAY_LEN(8723F, _MUSB); #endif +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return GET_MASK_ARRAY_LEN(8822E, _MUSB); +#endif #endif /*CONFIG_USB_HCI*/ #ifdef CONFIG_PCI_HCI @@ -613,6 +686,10 @@ u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter) if (IS_HARDWARE_TYPE_8814B(pAdapter)) return GET_MASK_ARRAY_LEN(8814B, _MPCIE); #endif +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return GET_MASK_ARRAY_LEN(8822E, _MPCIE); +#endif #endif /*CONFIG_PCI_HCI*/ #ifdef CONFIG_SDIO_HCI @@ -660,10 +737,53 @@ u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter) if (IS_HARDWARE_TYPE_8723F(pAdapter)) return GET_MASK_ARRAY_LEN(8723F, _MSDIO); #endif +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return GET_MASK_ARRAY_LEN(8822E, _MSDIO); +#endif #endif/*CONFIG_SDIO_HCI*/ return 0; } +void rtw_get_efuse_ver_array(PADAPTER pAdapter, u8 *pArray) +{ + +#ifdef CONFIG_USB_HCI +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + GET_VER_ARRAY(8822E , _MUSB, pArray); +#endif +#endif/*CONFIG_USB_HCI*/ + +#ifdef CONFIG_SDIO_HCI +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + GET_VER_ARRAY(8822E , _MSDIO, pArray); +#endif +#endif/*CONFIG_SDIO_HCI*/ + +} + +u16 rtw_get_efuse_ver_arraylen(PADAPTER pAdapter) +{ + +#ifdef CONFIG_USB_HCI +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return GET_VER_ARRAY_LEN(8822E, _MUSB); +#endif +#endif/*CONFIG_SDIO_HCI*/ + +#ifdef CONFIG_SDIO_HCI +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(pAdapter)) + return GET_VER_ARRAY_LEN(8822E, _MSDIO); +#endif +#endif/*CONFIG_SDIO_HCI*/ + return 0; + +} + static void rtw_mask_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data) { u16 i = 0; @@ -970,11 +1090,11 @@ void rtw_efuse_analyze(PADAPTER padapter, u8 Type, u8 Fake) for (i = 0; i < mapLen; i++) { if (i % 16 == 0) RTW_PRINT_SEL(RTW_DBGDUMP, "0x%03x: ", i); - _RTW_PRINT_SEL(RTW_DBGDUMP, "%02X%s" - , pEfuseHal->fakeEfuseInitMap[i] - , ((i + 1) % 16 == 0) ? "\n" : (((i + 1) % 8 == 0) ? " " : " ") - ); - } + _RTW_PRINT_SEL(RTW_DBGDUMP, "%02X%s" + , pEfuseHal->fakeEfuseInitMap[i] + , ((i + 1) % 16 == 0) ? "\n" : (((i + 1) % 8 == 0) ? " " : " ") + ); + } _RTW_PRINT_SEL(RTW_DBGDUMP, "\n"); out_free_buffer: @@ -1308,17 +1428,23 @@ u8 rtw_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data) { struct dvobj_priv *d; u8 *efuse = NULL; + u32 alloc_size; + u16 mask_alloc_size; u32 size; int err; - u8 mask_buf[64] = ""; - u16 mask_len = sizeof(u8) * rtw_get_efuse_mask_arraylen(adapter); + u8 *mask_buf = NULL; + u8 *ver_buf = NULL; + u16 mask_len = 0; u32 backupRegs[4] = {0}; - u8 status = _SUCCESS;; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(adapter); + PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal; + u8 status = _SUCCESS; efuse_PreUpdateAction(adapter, backupRegs); d = adapter_to_dvobj(adapter); err = rtw_halmac_get_logical_efuse_size(d, &size); + RTW_INFO("halmac get log efuse size: %d\n", size); if (err) { status = _FAIL; goto exit; @@ -1329,15 +1455,47 @@ u8 rtw_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data) goto exit; } - efuse = rtw_zmalloc(size); + if (pEfuseHal->EfuseVerCompare == _TRUE) + alloc_size = size + EFUSE_VER_LEN; + else + alloc_size = size; + + efuse = rtw_zmalloc(alloc_size); if (!efuse) { status = _FAIL; goto exit; } + ver_buf = rtw_zmalloc(EFUSE_VER_LEN); + if (!ver_buf) { + status = _FAIL; + goto exit; + } + _rtw_memset(ver_buf, 0, EFUSE_VER_LEN); + rtw_get_efuse_ver_array(adapter, ver_buf); + + + mask_len = sizeof(u8) * rtw_get_efuse_mask_arraylen(adapter); + + if (pEfuseHal->EfuseVerCompare == _TRUE) + mask_alloc_size = mask_len + EFUSE_VER_LEN; + else + mask_alloc_size = mask_len; + + if (mask_alloc_size > 0) { + mask_buf = rtw_zmalloc(mask_alloc_size); + if (!mask_buf) { + status = _FAIL; + goto exit; + } + _rtw_memset(mask_buf, 0, mask_alloc_size); + } else { + RTW_INFO("Error mask alloc buf Len: %d\n", mask_alloc_size); + goto exit; + } + err = rtw_halmac_read_logical_efuse_map(d, efuse, size, NULL, 0); if (err) { - rtw_mfree(efuse, size); status = _FAIL; goto exit; } @@ -1348,29 +1506,48 @@ u8 rtw_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data) RTW_INFO("Use mask Array Len: %d\n", mask_len); if (mask_len != 0) { - if (adapter->registrypriv.bFileMaskEfuse == _TRUE) - _rtw_memcpy(mask_buf, maskfileBuffer, mask_len); - else + if (adapter->registrypriv.bFileMaskEfuse == _TRUE) { + + if (pEfuseHal->EfuseVerCompare == _TRUE) { + _rtw_memcpy(mask_buf, maskfileBuffer, pEfuseHal->EfuseMaskUsedBytes); + } else + _rtw_memcpy(mask_buf, maskfileBuffer, mask_len); + + } else { rtw_efuse_mask_array(adapter, mask_buf); + if (pEfuseHal->EfuseVerCompare == _TRUE) { + _rtw_memcpy(mask_buf + mask_len, ver_buf, EFUSE_VER_LEN); + _rtw_memcpy(efuse + size, ver_buf, EFUSE_VER_LEN); + } + } + err = rtw_halmac_write_logical_efuse_map(d, efuse, size, mask_buf, mask_len); } else err = rtw_halmac_write_logical_efuse_map(d, efuse, size, NULL, 0); } else { - _rtw_memset(mask_buf, 0xFF, sizeof(mask_buf)); + _rtw_memset(mask_buf, 0xFF, mask_len); RTW_INFO("Efuse mask off\n"); - err = rtw_halmac_write_logical_efuse_map(d, efuse, size, mask_buf, size/16); + if (pEfuseHal->EfuseVerCompare == _TRUE) { + _rtw_memcpy(mask_buf + mask_len, ver_buf, EFUSE_VER_LEN); + _rtw_memcpy(efuse + size, ver_buf, EFUSE_VER_LEN); + mask_len = mask_len + EFUSE_VER_LEN; + } + err = rtw_halmac_write_logical_efuse_map(d, efuse, size, mask_buf, mask_len); } - if (err) { - rtw_mfree(efuse, size); + if (err) status = _FAIL; - goto exit; - } - - rtw_mfree(efuse, size); - status = _SUCCESS; + else + status = _SUCCESS; exit : + if (efuse) + rtw_mfree(efuse, alloc_size); + if (mask_buf) + rtw_mfree(mask_buf, mask_alloc_size); + if (ver_buf) + rtw_mfree(ver_buf, EFUSE_VER_LEN); + efuse_PostUpdateAction(adapter, backupRegs); return status; @@ -1668,7 +1845,7 @@ void hal_ReadEFuse_BT_logic_map( u8 efuseHeader, efuseExtHdr, efuseData; u8 offset, wden; u16 i, total, used; - u8 efuse_usage; + /*u8 efuse_usage;*/ /* */ @@ -1772,12 +1949,12 @@ void hal_ReadEFuse_BT_logic_map( total = EFUSE_BT_REAL_BANK_CONTENT_LEN; used = eFuse_Addr - 1; - +#if 0 if (total) efuse_usage = (u8)((used * 100) / total); else efuse_usage = 100; - +#endif fakeBTEfuseUsedBytes = used; RTW_INFO("%s: BTEfuseUsed last Bytes = %#x\n", __FUNCTION__, fakeBTEfuseUsedBytes); @@ -3129,7 +3306,7 @@ EFUSE_ShadowRead( PADAPTER pAdapter, u8 Type, u16 Offset, - u32 *Value) + void *Value) { if (Type == 1) efuse_ShadowRead1Byte(pAdapter, Offset, (u8 *)Value); @@ -3369,23 +3546,23 @@ int retriveAdaptorInfoFile(char *path, u8 *efuse_data) } #endif /* CONFIG_ADAPTOR_INFO_CACHING_FILE */ -u8 rtw_efuse_file_read(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len) +u32 rtw_efuse_file_read(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len) { char *ptmpbuf = NULL, *ptr; u8 val8; u32 count, i, j; int err; - u32 bufsize = 4096; + u32 bufsize = 6656; ptmpbuf = rtw_zmalloc(bufsize); if (ptmpbuf == NULL) - return _FALSE; + return 0; count = rtw_retrieve_from_file(filepath, ptmpbuf, bufsize); if (count <= 90) { rtw_mfree(ptmpbuf, bufsize); RTW_ERR("%s, filepatch %s, size=%d, FAIL!!\n", __FUNCTION__, filepath, count); - return _FALSE; + return 0; } i = 0; j = 0; @@ -3410,14 +3587,14 @@ u8 rtw_efuse_file_read(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len) RTW_WARN("Something wrong to parse efuse file, string=%s\n", &ptmpbuf[i]); } else { buf[j] = val8; - RTW_DBG("i=%d, j=%d, 0x%02x\n", i, j, buf[j]); + RTW_INFO("i=%d, j=%d, 0x%02x\n", i, j, buf[j]); j++; } i = ptr - ptmpbuf + 1; } rtw_mfree(ptmpbuf, bufsize); - RTW_INFO("%s, filepatch %s, size=%d, done\n", __FUNCTION__, filepath, count); - return _TRUE; + RTW_INFO("%s,target len:%d filepatch %s, size=%d, done\n", __FUNCTION__,len , filepath, count); + return j; } #if !defined(CONFIG_RTW_ANDROID_GKI) diff --git a/drivers/net/wireless/rtl8822cs/core/mesh/rtw_mesh.c b/drivers/net/wireless/rtl8822cs/core/mesh/rtw_mesh.c index 95605d964..80c3bbbe9 100644 --- a/drivers/net/wireless/rtl8822cs/core/mesh/rtw_mesh.c +++ b/drivers/net/wireless/rtl8822cs/core/mesh/rtw_mesh.c @@ -468,11 +468,11 @@ struct sta_info *rtw_mesh_acnode_prevent_pick_sacrifice(_adapter *adapter) struct sta_priv *stapriv = &adapter->stapriv; struct sta_info *sacrifice = NULL; - enter_critical_bh(&stapriv->asoc_list_lock); + rtw_stapriv_asoc_list_lock(stapriv); sacrifice = _rtw_mesh_acnode_prevent_pick_sacrifice(adapter); - exit_critical_bh(&stapriv->asoc_list_lock); + rtw_stapriv_asoc_list_unlock(stapriv); return sacrifice; } @@ -780,7 +780,7 @@ void rtw_mesh_peer_status_chk(_adapter *adapter) enter_critical_bh(&(plink_ctl->lock)); /* check established peers */ - enter_critical_bh(&stapriv->asoc_list_lock); + rtw_stapriv_asoc_list_lock(stapriv); head = &stapriv->asoc_list; list = get_next(head); @@ -843,14 +843,7 @@ void rtw_mesh_peer_status_chk(_adapter *adapter) flush_add: if (flush) { - rtw_list_delete(&sta->asoc_list); - stapriv->asoc_list_cnt--; -#ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (sta->tbtx_enable) - stapriv->tbtx_asoc_list_cnt--; -#endif - STA_SET_MESH_PLINK(sta, NULL); - + rtw_stapriv_asoc_list_del(stapriv, sta); stainfo_offset = rtw_stainfo_offset(stapriv, sta); if (stainfo_offset_valid(stainfo_offset)) flush_list[flush_num++] = stainfo_offset; @@ -859,7 +852,7 @@ flush_add: } } - exit_critical_bh(&stapriv->asoc_list_lock); + rtw_stapriv_asoc_list_unlock(stapriv); /* check non-established peers */ for (i = 0; i < RTW_MESH_MAX_PEER_CANDIDATES; i++) { @@ -896,7 +889,7 @@ flush_add: sta = rtw_get_stainfo_by_offset(stapriv, flush_list[i]); _rtw_memcpy(sta_addr, sta->cmn.mac_addr, ETH_ALEN); - updated |= ap_free_sta(adapter, sta, _TRUE, WLAN_REASON_DEAUTH_LEAVING, _FALSE); + updated |= ap_free_sta(adapter, sta, _TRUE, 0, WLAN_REASON_DEAUTH_LEAVING, _FALSE); rtw_mesh_expire_peer(adapter, sta_addr); } @@ -998,7 +991,7 @@ exit: */ u8 rtw_mesh_select_operating_ch(_adapter *adapter) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + struct rtw_chset *chset = adapter_to_chset(adapter); struct rtw_mesh_cfg *mcfg = &adapter->mesh_cfg; struct mlme_priv *mlme = &adapter->mlmepriv; _queue *queue = &(mlme->scanned_queue); @@ -1036,11 +1029,11 @@ u8 rtw_mesh_select_operating_ch(_adapter *adapter) && rtw_mesh_cto_mgate_network_filter(adapter, scanned) #endif ) { - int ch_set_idx = rtw_chset_search_ch(rfctl->channel_set, scanned->network.Configuration.DSConfig); + int ch_set_idx = rtw_chset_search_ch(chset, scanned->network.Configuration.DSConfig); if (ch_set_idx >= 0 - && !(rfctl->channel_set[ch_set_idx].flags & RTW_CHF_NO_IR) - && !CH_IS_NON_OCP(&rfctl->channel_set[ch_set_idx]) + && !(chset->chs[ch_set_idx].flags & RTW_CHF_NO_IR) + && !CH_IS_NON_OCP(&chset->chs[ch_set_idx]) ) { u8 nop, accept; @@ -1048,13 +1041,13 @@ u8 rtw_mesh_select_operating_ch(_adapter *adapter) cand_cnt[ch_set_idx]++; if (max_cand_cnt < cand_cnt[ch_set_idx]) { max_cand_cnt = cand_cnt[ch_set_idx]; - max_cand_ch = rfctl->channel_set[ch_set_idx].ChannelNum; + max_cand_ch = chset->chs[ch_set_idx].ChannelNum; } if (accept) { cand_ap_cnt[ch_set_idx]++; if (max_cand_ap_cnt < cand_ap_cnt[ch_set_idx]) { max_cand_ap_cnt = cand_ap_cnt[ch_set_idx]; - max_cand_ap_ch = rfctl->channel_set[ch_set_idx].ChannelNum; + max_cand_ap_ch = chset->chs[ch_set_idx].ChannelNum; } } } @@ -1756,26 +1749,18 @@ bypass_sync_bss: if (sac) { struct sta_priv *stapriv = &adapter->stapriv; - _irqL irqL; u8 sta_addr[ETH_ALEN]; u8 updated = _FALSE; - _enter_critical_bh(&stapriv->asoc_list_lock, &irqL); - if (!rtw_is_list_empty(&sac->asoc_list)) { - rtw_list_delete(&sac->asoc_list); - stapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (sac->tbtx_enable) - stapriv->tbtx_asoc_list_cnt--; - #endif - STA_SET_MESH_PLINK(sac, NULL); - } - _exit_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(stapriv); + if (!rtw_is_list_empty(&sac->asoc_list)) + rtw_stapriv_asoc_list_del(stapriv, sac); + rtw_stapriv_asoc_list_unlock(stapriv); RTW_INFO(FUNC_ADPT_FMT" sacrifice "MAC_FMT" for acnode\n" , FUNC_ADPT_ARG(adapter), MAC_ARG(sac->cmn.mac_addr)); _rtw_memcpy(sta_addr, sac->cmn.mac_addr, ETH_ALEN); - updated = ap_free_sta(adapter, sac, 0, 0, 1); + updated = ap_free_sta(adapter, sac, 0, 0, 0, 1); rtw_mesh_expire_peer(stapriv->padapter, sta_addr); associated_clients_update(adapter, updated, STA_INFO_UPDATE_ALL); @@ -2477,13 +2462,9 @@ static int rtw_mesh_peer_establish(_adapter *adapter, struct mesh_plink_ent *pli u8 *tlv_ies; u16 tlv_ieslen; struct rtw_ieee802_11_elems elems; - _irqL irqL; int i; u16 status = 0; int ret = _FAIL; -#ifdef CONFIG_RTW_TOKEN_BASED_XMIT - u8 sta_tbtx_enable = _FALSE; -#endif if (!plink->rx_conf_ies || !plink->rx_conf_ies_len) { RTW_INFO(FUNC_ADPT_FMT" no rx confirm from sta "MAC_FMT"\n" @@ -2553,9 +2534,8 @@ static int rtw_mesh_peer_establish(_adapter *adapter, struct mesh_plink_ent *pli #ifdef CONFIG_RTW_TOKEN_BASED_XMIT if (elems.tbtx_cap && elems.tbtx_cap_len != 0) { - if(rtw_is_tbtx_capabilty(elems.tbtx_cap, elems.tbtx_cap_len)) { - sta_tbtx_enable = _TRUE; - } + if(rtw_is_tbtx_capabilty(elems.tbtx_cap, elems.tbtx_cap_len)) + sta->tbtx_enable = _TRUE; } #endif @@ -2583,21 +2563,14 @@ static int rtw_mesh_peer_establish(_adapter *adapter, struct mesh_plink_ent *pli sta->metrics.data_rate = 10; sta->alive = _TRUE; - _enter_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(stapriv); if (rtw_is_list_empty(&sta->asoc_list)) { STA_SET_MESH_PLINK(sta, plink); /* TBD: up layer timeout mechanism */ /* sta->expire_to = mcfg->plink_timeout / 2; */ - rtw_list_insert_tail(&sta->asoc_list, &stapriv->asoc_list); - stapriv->asoc_list_cnt++; -#ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (sta_tbtx_enable) { - sta->tbtx_enable = _TRUE; - stapriv->tbtx_asoc_list_cnt++; - } -#endif + rtw_stapriv_asoc_list_add(stapriv, sta); } - _exit_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(stapriv); bss_cap_update_on_sta_join(adapter, sta); sta_info_update(adapter, sta); @@ -2617,7 +2590,6 @@ int rtw_mesh_set_plink_state(_adapter *adapter, const u8 *mac, u8 plink_state) _irqL irqL2; struct sta_priv *stapriv = &adapter->stapriv; struct sta_info *sta = NULL; - _irqL irqL; struct sta_info *del_sta = NULL; int ret = _SUCCESS; @@ -2640,17 +2612,10 @@ int rtw_mesh_set_plink_state(_adapter *adapter, const u8 *mac, u8 plink_state) if (sac) { del_sta = sac; - _enter_critical_bh(&stapriv->asoc_list_lock, &irqL); - if (!rtw_is_list_empty(&del_sta->asoc_list)) { - rtw_list_delete(&del_sta->asoc_list); - stapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (del_sta->tbtx_enable) - stapriv->tbtx_asoc_list_cnt--; - #endif - STA_SET_MESH_PLINK(del_sta, NULL); - } - _exit_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(stapriv); + if (!rtw_is_list_empty(&del_sta->asoc_list)) + rtw_stapriv_asoc_list_del(stapriv, del_sta); + rtw_stapriv_asoc_list_unlock(stapriv); RTW_INFO(FUNC_ADPT_FMT" sacrifice "MAC_FMT" for acnode\n" , FUNC_ADPT_ARG(adapter), MAC_ARG(del_sta->cmn.mac_addr)); } @@ -2681,17 +2646,10 @@ int rtw_mesh_set_plink_state(_adapter *adapter, const u8 *mac, u8 plink_state) if (!del_sta) goto release_plink_ctl; - _enter_critical_bh(&stapriv->asoc_list_lock, &irqL); - if (!rtw_is_list_empty(&del_sta->asoc_list)) { - rtw_list_delete(&del_sta->asoc_list); - stapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (del_sta->tbtx_enable) - stapriv->tbtx_asoc_list_cnt--; - #endif - STA_SET_MESH_PLINK(del_sta, NULL); - } - _exit_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(stapriv); + if (!rtw_is_list_empty(&del_sta->asoc_list)) + rtw_stapriv_asoc_list_del(stapriv, del_sta); + rtw_stapriv_asoc_list_unlock(stapriv); } release_plink_ctl: @@ -2702,7 +2660,7 @@ release_plink_ctl: u8 updated = _FALSE; _rtw_memcpy(sta_addr, del_sta->cmn.mac_addr, ETH_ALEN); - updated = ap_free_sta(adapter, del_sta, 0, 0, 1); + updated = ap_free_sta(adapter, del_sta, 0, 0, 0, 1); rtw_mesh_expire_peer(stapriv->padapter, sta_addr); associated_clients_update(adapter, updated, STA_INFO_UPDATE_ALL); @@ -2914,7 +2872,6 @@ exit: u8 rtw_mesh_ps_annc(_adapter *adapter, u8 ps) { - _irqL irqL; _list *head, *list; struct sta_info *sta; struct sta_priv *stapriv = &adapter->stapriv; @@ -2925,7 +2882,7 @@ u8 rtw_mesh_ps_annc(_adapter *adapter, u8 ps) if (rtw_linked_check(adapter) == _FALSE) goto exit; - _enter_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(stapriv); head = &stapriv->asoc_list; list = get_next(head); @@ -2939,14 +2896,14 @@ u8 rtw_mesh_ps_annc(_adapter *adapter, u8 ps) if (stainfo_offset_valid(stainfo_offset)) sta_alive_list[sta_alive_num++] = stainfo_offset; } - _exit_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(stapriv); for (i = 0; i < sta_alive_num; i++) { sta = rtw_get_stainfo_by_offset(stapriv, sta_alive_list[i]); if (!sta) continue; - issue_qos_nulldata(adapter, sta->cmn.mac_addr, 7, ps, 3, 500); + issue_qos_nulldata(adapter, sta->cmn.mac_addr, 7, ps, 3, PS_ANNC_DRV_RETRY_INT_MS); annc_cnt++; } @@ -3551,7 +3508,6 @@ static bool rtw_mesh_data_bmc_to_uc(_adapter *adapter { struct sta_priv *stapriv = &adapter->stapriv; struct xmit_priv *xmitpriv = &adapter->xmitpriv; - _irqL irqL; _list *head, *list; struct sta_info *sta; char b2u_sta_id[NUM_STA]; @@ -3559,7 +3515,7 @@ static bool rtw_mesh_data_bmc_to_uc(_adapter *adapter bool bmc_need = _FALSE; int i; - _enter_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(stapriv); head = &stapriv->asoc_list; list = get_next(head); @@ -3573,7 +3529,7 @@ static bool rtw_mesh_data_bmc_to_uc(_adapter *adapter if (stainfo_offset_valid(stainfo_offset)) b2u_sta_id[b2u_sta_num++] = stainfo_offset; } - _exit_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(stapriv); if (!b2u_sta_num) goto exit; diff --git a/drivers/net/wireless/rtl8822cs/core/monitor/rtw_radiotap.c b/drivers/net/wireless/rtl8822cs/core/monitor/rtw_radiotap.c index e9ebc7d7a..5bd1c6eb4 100644 --- a/drivers/net/wireless/rtl8822cs/core/monitor/rtw_radiotap.c +++ b/drivers/net/wireless/rtl8822cs/core/monitor/rtw_radiotap.c @@ -93,6 +93,16 @@ #define IEEE80211_RADIOTAP_AMPDU_EOF_KNOWN 0x0080 #endif +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)) +/* For IEEE80211_RADIOTAP_TX_FLAGS */ +#define IEEE80211_RADIOTAP_F_TX_FAIL 0x0001 /* failed due to excessive + * retries */ +#define IEEE80211_RADIOTAP_F_TX_CTS 0x0002 /* used cts 'protection' */ +#define IEEE80211_RADIOTAP_F_TX_RTS 0x0004 /* used rts/cts handshake */ +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)) +#define IEEE80211_RADIOTAP_F_TX_NOACK 0x0008 /* don't expect an ack */ +#endif + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39)) #define IEEE80211_RADIOTAP_MCS 19 /* For IEEE80211_RADIOTAP_MCS */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_ap.c b/drivers/net/wireless/rtl8822cs/core/rtw_ap.c index 0786e29c6..59f8075b5 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_ap.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_ap.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -499,7 +499,7 @@ void expire_timeout_chk(_adapter *padapter) psta = NULL; } - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); @@ -673,7 +673,7 @@ void expire_timeout_chk(_adapter *padapter) } } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); if (chk_alive_num) { #if defined(CONFIG_ACTIVE_KEEP_ALIVE_CHECK) @@ -751,17 +751,10 @@ void expire_timeout_chk(_adapter *padapter) psta->keep_alive_trycnt = 0; del_asoc_list[i] = chk_alive_list[i]; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); - if (rtw_is_list_empty(&psta->asoc_list) == _FALSE) { - rtw_list_delete(&psta->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif - STA_SET_MESH_PLINK(psta, NULL); - } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); + if (rtw_is_list_empty(&psta->asoc_list) == _FALSE) + rtw_stapriv_asoc_list_del(pstapriv, psta); + rtw_stapriv_asoc_list_unlock(pstapriv); } /* delete loop */ @@ -776,7 +769,7 @@ void expire_timeout_chk(_adapter *padapter) RTW_INFO(FUNC_ADPT_FMT" asoc expire "MAC_FMT", state=0x%x\n" , FUNC_ADPT_ARG(padapter), MAC_ARG(psta->cmn.mac_addr), psta->state); - updated |= ap_free_sta(padapter, psta, _FALSE, WLAN_REASON_DEAUTH_LEAVING, _FALSE); + updated |= ap_free_sta(padapter, psta, _FALSE, 0, WLAN_REASON_DEAUTH_LEAVING, _FALSE); #ifdef CONFIG_RTW_MESH if (MLME_IS_MESH(padapter)) rtw_mesh_expire_peer(padapter, sta_addr); @@ -847,13 +840,12 @@ void rtw_ap_update_sta_ra_info(_adapter *padapter, struct sta_info *psta) #ifdef CONFIG_BMC_TX_RATE_SELECT u8 rtw_ap_find_mini_tx_rate(_adapter *adapter) { - _irqL irqL; _list *phead, *plist; u8 miini_tx_rate = ODM_RATEVHTSS4MCS9, sta_tx_rate; struct sta_info *psta = NULL; struct sta_priv *pstapriv = &adapter->stapriv; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { @@ -864,7 +856,7 @@ u8 rtw_ap_find_mini_tx_rate(_adapter *adapter) if (sta_tx_rate < miini_tx_rate) miini_tx_rate = sta_tx_rate; } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); return miini_tx_rate; } @@ -1102,6 +1094,35 @@ void update_sta_info_apmode_ht_bf_cap(_adapter *padapter, struct sta_info *psta) } #endif /*CONFIG_80211N_HT && CONFIG_BEAMFORMING*/ +#ifdef CONFIG_80211N_HT +void update_sta_bw_apmode(_adapter *padapter, struct sta_info *psta) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv; + struct ht_priv *phtpriv_sta = &psta->htpriv; + + if (phtpriv_sta->ht_option) { + if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH)) + psta->cmn.bw_mode = CHANNEL_WIDTH_40; + else + psta->cmn.bw_mode = CHANNEL_WIDTH_20; + + if (phtpriv_sta->op_present + && !GET_HT_OP_ELE_STA_CHL_WIDTH(phtpriv_sta->ht_op)) + psta->cmn.bw_mode = CHANNEL_WIDTH_20; + + if ((psta->ht_40mhz_intolerant)||(pmlmepriv->sw_to_20mhz)) + psta->cmn.bw_mode = CHANNEL_WIDTH_20; + + if (pmlmeext->cur_bwmode < psta->cmn.bw_mode) + psta->cmn.bw_mode = pmlmeext->cur_bwmode; + + phtpriv_sta->ch_offset = pmlmepriv->sw_to_20mhz ? CHAN_OFFSET_NO_EXT : pmlmeext->cur_ch_offset; + } +} +#endif /* CONFIG_80211N_HT */ + /* notes: * AID: 1~MAX for sta and 0 for bc/mc in ap/adhoc mode */ void update_sta_info_apmode(_adapter *padapter, struct sta_info *psta) @@ -1140,24 +1161,7 @@ void update_sta_info_apmode(_adapter *padapter, struct sta_info *psta) phtpriv_sta->rx_ampdu_min_spacing = (phtpriv_sta->ht_cap.ampdu_params_info & IEEE80211_HT_CAP_AMPDU_DENSITY) >> 2; - /* bwmode */ - if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH)) - psta->cmn.bw_mode = CHANNEL_WIDTH_40; - else - psta->cmn.bw_mode = CHANNEL_WIDTH_20; - - if (phtpriv_sta->op_present - && !GET_HT_OP_ELE_STA_CHL_WIDTH(phtpriv_sta->ht_op)) - psta->cmn.bw_mode = CHANNEL_WIDTH_20; - - if ((psta->ht_40mhz_intolerant)||(pmlmepriv->sw_to_20mhz)) - psta->cmn.bw_mode = CHANNEL_WIDTH_20; - - if (pmlmeext->cur_bwmode < psta->cmn.bw_mode) - psta->cmn.bw_mode = pmlmeext->cur_bwmode; - - phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset; - + update_sta_bw_apmode(padapter, psta); /* check if sta support s Short GI 20M */ if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) @@ -1673,6 +1677,7 @@ void start_bss_network(_adapter *padapter, struct createbss_parm *parm) struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); WLAN_BSSID_EX *pnetwork_mlmeext = &(pmlmeinfo->network); struct dvobj_priv *pdvobj = padapter->dvobj; + struct rf_ctl_t *rfctl = dvobj_to_rfctl(pdvobj); s16 req_ch = REQ_CH_NONE, req_bw = REQ_BW_NONE, req_offset = REQ_OFFSET_NONE; u8 u_ch = 0, u_bw, u_offset; bool set_u_ch; @@ -1681,6 +1686,9 @@ void start_bss_network(_adapter *padapter, struct createbss_parm *parm) u8 chbw_allow = _TRUE; int i; u8 ifbmp_ch_changed = 0; +#ifdef CONFIG_MCC_MODE + u8 start_mcc_ret = NO_NEED_MCC; +#endif if (parm->req_ch != 0) { /* bypass other setting, go checking ch, bw, offset */ @@ -1775,8 +1783,8 @@ chbw_decision: rtw_set_hw_wmm_param(pdvobj->padapters[i]); } -#if defined(CONFIG_DFS_MASTER) - rtw_dfs_rd_en_decision(padapter, mlme_act, parm->excl_ifbmp); +#if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ + rtw_dfs_rd_en_dec_on_mlme_act(padapter, NULL, mlme_act, parm->excl_ifbmp); #endif #ifdef CONFIG_MCC_MODE @@ -1804,15 +1812,20 @@ chbw_decision: rtw_hal_set_hwreg(padapter , HW_VAR_DO_IQK , &doiqk); } - if (set_u_ch) + if (set_u_ch + #ifdef CONFIG_MCC_MODE + || (MCC_EN(padapter) && chbw_allow == _FALSE) + #endif + ) set_channel_bwmode(padapter, u_ch, u_offset, u_bw); doiqk = _FALSE; rtw_hal_set_hwreg(padapter , HW_VAR_DO_IQK , &doiqk); #ifdef CONFIG_MCC_MODE + start_mcc_ret = rtw_hal_set_mcc_setting_start_bss_network(padapter, chbw_allow); /* after set_channel_bwmode for backup IQK */ - if (rtw_hal_set_mcc_setting_start_bss_network(padapter, chbw_allow) == _FAIL) { + if (start_mcc_ret == _FAIL) { /* MCC setting fail, update to buddy's channel */ rtw_mi_get_ch_setting_union_no_self(padapter, &u_ch, &u_bw, &u_offset); pnetwork->Configuration.DSConfig = u_ch; @@ -1833,6 +1846,9 @@ chbw_decision: , padapter->mlmeextpriv.cur_ch_offset , ht_option, 0); } + } else if (start_mcc_ret == NO_NEED_MCC) { + RTW_INFO(FUNC_ADPT_FMT": NO_NEED_MCC\n" + , FUNC_ADPT_ARG(padapter)); } #endif @@ -1857,7 +1873,7 @@ chbw_decision: } #endif /* defined(CONFIG_IOCTL_CFG80211) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)) */ - rtw_rfctl_update_op_mode(adapter_to_rfctl(padapter), parm->ifbmp, 1); + rtw_rfctl_update_op_mode(adapter_to_rfctl(padapter), parm->ifbmp, 1, parm->excl_ifbmp); if (DUMP_ADAPTERS_STATUS) { RTW_INFO(FUNC_ADPT_FMT" done\n", FUNC_ADPT_ARG(padapter)); @@ -1928,8 +1944,11 @@ update_beacon: rtw_scan_wait_completed(padapter); _rtw_iface_undersurvey_chk(__func__, padapter); + /* send beacon */ - ResumeTxBeacon(padapter); + if (rfctl->ap_csa_en == AP_CSA_DISABLE) + ResumeTxBeacon(padapter); + { #if !defined(CONFIG_INTERRUPT_BASED_TXBCN) #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) || defined(CONFIG_PCI_BCN_POLLING) @@ -2090,7 +2109,7 @@ int rtw_check_beacon_data(_adapter *padapter, u8 *pbuf, int len) if (p && ie_len != 0) pmlmepriv->active_tpc_report = 1; else if (REGSTY_IS_ACTIVE_TPC_REPORT_AUTO(pregistrypriv)) { - rtw_set_ie_tpc_report(pbss_network->IEs + pbss_network->IELength, &pbss_network->IELength, 0, 0); + rtw_bss_ex_set_tpc_report(pbss_network, 0, 0); pmlmepriv->active_tpc_report = 1; } } @@ -2504,6 +2523,14 @@ int rtw_check_beacon_data(_adapter *padapter, u8 *pbuf, int len) pbss_network->Configuration.DSConfig <= 14 && padapter->registrypriv.wifi_spec == 1 && pbss_network->IELength + 10 <= MAX_IE_SZ) { + #ifdef CONFIG_RTW_WNM + rtw_wnm_add_btm_ext_cap(pmlmepriv->ext_capab_ie_data, + &(pmlmepriv->ext_capab_ie_len)); + #endif + #ifdef CONFIG_RTW_MBO + rtw_mbo_add_internw_ext_cap(pmlmepriv->ext_capab_ie_data, + &(pmlmepriv->ext_capab_ie_len)); + #endif rtw_add_ext_cap_info(pmlmepriv->ext_capab_ie_data, &(pmlmepriv->ext_capab_ie_len), BSS_COEXT); rtw_update_ext_cap_ie(pmlmepriv->ext_capab_ie_data, pmlmepriv->ext_capab_ie_len, pbss_network->IEs, \ &(pbss_network->IELength), _BEACON_IE_OFFSET_); @@ -3025,14 +3052,13 @@ static void associated_stainfo_update(_adapter *padapter, struct sta_info *psta, RTW_INFO("%s: "MAC_FMT", updated_type=0x%x\n", __func__, MAC_ARG(psta->cmn.mac_addr), sta_info_type); #ifdef CONFIG_80211N_HT if (sta_info_type & STA_INFO_UPDATE_BW) { - if ((psta->flags & WLAN_STA_HT) && !psta->ht_20mhz_set) { - if (pmlmepriv->sw_to_20mhz) { - psta->cmn.bw_mode = CHANNEL_WIDTH_20; - /*psta->htpriv.ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;*/ - psta->htpriv.sgi_40m = _FALSE; - } else { - /*TODO: Switch back to 40MHZ?80MHZ*/ + if ((pmlmepriv->sw_to_20mhz && psta->cmn.bw_mode != CHANNEL_WIDTH_20) + || (!pmlmepriv->sw_to_20mhz && psta->cmn.bw_mode == CHANNEL_WIDTH_20) + ) { + update_sta_bw_apmode(padapter, psta); + psta->cmn.ra_info.is_support_sgi = query_ra_short_GI(psta, rtw_get_tx_bw_mode(padapter, psta)); + rtw_dm_ra_mask_wk_cmd(padapter, psta); } } } @@ -3327,6 +3353,9 @@ static void ap_process_csa(_adapter *padapter) if (rfctl->ap_csa_switch_cnt != 0) return; + /* Stop beacon until update beacon from hostapd */ + bcn_control_cmd(padapter, 0); + if (rfctl->ap_csa_en == AP_SWITCH_CH_CSA) { ifbmp = BIT(padapter->iface_id); rtw_change_bss_chbw_cmd(padapter, 0, ifbmp, 0, rfctl->ap_csa_ch, @@ -3459,7 +3488,15 @@ static u8 update_ecsa_ie(_adapter *padapter, bool *process_ecsa) static void update_bcn_vendor_spec_ie(_adapter *padapter, u8 *oui) { + +#ifdef CONFIG_MCC_MODE + if (MCC_EN(padapter)) { + if (!rtw_hal_check_mcc_status(padapter, MCC_STATUS_DOING_MCC)) + RTW_INFO("%s\n", __FUNCTION__); + } +#else RTW_INFO("%s\n", __FUNCTION__); +#endif if (_rtw_memcmp(RTW_WPA_OUI, oui, 4)) update_bcn_wpa_ie(padapter); @@ -3591,18 +3628,17 @@ void rtw_process_public_act_bsscoex(_adapter *padapter, u8 *pframe, uint frame_l struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); u8 *frame_body = pframe + sizeof(struct rtw_ieee80211_hdr_3addr); uint frame_body_len = frame_len - sizeof(struct rtw_ieee80211_hdr_3addr); - u8 category, action; + /*u8 category, action;*/ struct macid_ctl_t *macid_ctl = &padapter->dvobj->macid_ctl; int i; psta = rtw_get_stainfo(pstapriv, get_addr2_ptr(pframe)); if (psta == NULL) return; - - +#if 0 category = frame_body[0]; action = frame_body[1]; - +#endif if (frame_body_len > 0) { if ((frame_body[2] == EID_BSSCoexistence) && (frame_body[3] > 0)) { u8 ie_data = frame_body[4]; @@ -3635,23 +3671,9 @@ void rtw_process_public_act_bsscoex(_adapter *padapter, u8 *pframe, uint frame_l } if (beacon_updated) { - update_beacon(padapter, _HT_ADD_INFO_IE_, NULL, _TRUE, 0); - - associated_stainfo_update(padapter, psta, STA_INFO_UPDATE_BW); - if (pmlmepriv->sw_to_20mhz) { - for (i = 0; i < MACID_NUM_SW_LIMIT; i++) { - psta = macid_ctl->sta[i]; - if (psta && !is_broadcast_mac_addr(psta->cmn.mac_addr)) { - psta->cmn.bw_mode = CHANNEL_WIDTH_20; - rtw_dm_ra_mask_wk_cmd(padapter, (u8 *)psta); - } - } - } + associated_clients_update(padapter, _TRUE, STA_INFO_UPDATE_BW); } - - - } void rtw_process_ht_action_smps(_adapter *padapter, u8 *ta, u8 ctrl_field) @@ -3772,12 +3794,11 @@ void associated_clients_update(_adapter *padapter, u8 updated, u32 sta_info_type { /* update associcated stations cap. */ if (updated == _TRUE) { - _irqL irqL; _list *phead, *plist; struct sta_info *psta = NULL; struct sta_priv *pstapriv = &padapter->stapriv; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); @@ -3791,7 +3812,7 @@ void associated_clients_update(_adapter *padapter, u8 updated, u32 sta_info_type associated_stainfo_update(padapter, psta, sta_info_type); } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); } @@ -4062,6 +4083,7 @@ u8 bss_cap_update_on_sta_leave(_adapter *padapter, struct sta_info *psta) if (rtw_ht_operation_update(padapter) > 0) { update_beacon(padapter, _HT_CAPABILITY_IE_, NULL, _FALSE, 0); update_beacon(padapter, _HT_ADD_INFO_IE_, NULL, _FALSE, 0); + beacon_updated = _TRUE; } #endif /* CONFIG_80211N_HT */ @@ -4088,7 +4110,7 @@ u8 bss_cap_update_on_sta_leave(_adapter *padapter, struct sta_info *psta) } -u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u16 reason, bool enqueue) +u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u8 subtype, u16 reason, bool enqueue) { _irqL irqL; u8 beacon_updated = _FALSE; @@ -4106,8 +4128,12 @@ u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u16 reaso #endif /* CONFIG_80211N_HT */ - if (!MLME_IS_MESH(padapter)) - issue_deauth(padapter, psta->cmn.mac_addr, reason); + if (!MLME_IS_MESH(padapter)) { + if (subtype == RTW_IEEE80211_STYPE_DISASSOC >> 4) + issue_disasoc(padapter, psta->cmn.mac_addr, reason); + else /* if not specified or not valid, use deauth by default */ + issue_deauth(padapter, psta->cmn.mac_addr, reason); + } /* Flush buffered management frames */ if (psta->state & WIFI_SLEEP_STATE) @@ -4173,45 +4199,8 @@ u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u16 reaso return beacon_updated; } -int rtw_ap_inform_ch_switch(_adapter *padapter, u8 new_ch, u8 ch_offset) -{ - _irqL irqL; - _list *phead, *plist; - int ret = 0; - struct sta_info *psta = NULL; - struct sta_priv *pstapriv = &padapter->stapriv; - struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - - if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE) - return ret; - - RTW_INFO(FUNC_NDEV_FMT" with ch:%u, offset:%u\n", - FUNC_NDEV_ARG(padapter->pnetdev), new_ch, ch_offset); - - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); - phead = &pstapriv->asoc_list; - plist = get_next(phead); - - /* for each sta in asoc_queue */ - while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { - psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); - plist = get_next(plist); - - issue_action_spct_ch_switch(padapter, psta->cmn.mac_addr, new_ch, ch_offset); - psta->expire_to = ((pstapriv->expire_to * 2) > 5) ? 5 : (pstapriv->expire_to * 2); - } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); - - issue_action_spct_ch_switch(padapter, bc_addr, new_ch, ch_offset); - - return ret; -} - int rtw_sta_flush(_adapter *padapter, bool enqueue) { - _irqL irqL; _list *phead, *plist; int ret = 0; struct sta_info *psta = NULL; @@ -4227,7 +4216,7 @@ int rtw_sta_flush(_adapter *padapter, bool enqueue) RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(padapter->pnetdev)); /* pick sta from sta asoc_queue */ - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { @@ -4236,13 +4225,7 @@ int rtw_sta_flush(_adapter *padapter, bool enqueue) psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); plist = get_next(plist); - rtw_list_delete(&psta->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif - STA_SET_MESH_PLINK(psta, NULL); + rtw_stapriv_asoc_list_del(pstapriv, psta); stainfo_offset = rtw_stainfo_offset(pstapriv, psta); if (stainfo_offset_valid(stainfo_offset)) @@ -4250,7 +4233,7 @@ int rtw_sta_flush(_adapter *padapter, bool enqueue) else rtw_warn_on(1); } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); /* call ap_free_sta() for each sta picked */ for (i = 0; i < flush_num; i++) { @@ -4259,7 +4242,7 @@ int rtw_sta_flush(_adapter *padapter, bool enqueue) psta = rtw_get_stainfo_by_offset(pstapriv, flush_list[i]); _rtw_memcpy(sta_addr, psta->cmn.mac_addr, ETH_ALEN); - ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_DEAUTH_LEAVING, enqueue); + ap_free_sta(padapter, psta, _TRUE, 0, WLAN_REASON_DEAUTH_LEAVING, enqueue); #ifdef CONFIG_RTW_MESH if (MLME_IS_MESH(padapter)) rtw_mesh_expire_peer(padapter, sta_addr); @@ -4332,7 +4315,6 @@ void rtw_ap_restore_network(_adapter *padapter) struct sta_priv *pstapriv = &padapter->stapriv; struct sta_info *psta; struct security_priv *psecuritypriv = &(padapter->securitypriv); - _irqL irqL; _list *phead, *plist; u8 chk_alive_num = 0; char chk_alive_list[NUM_STA]; @@ -4353,7 +4335,7 @@ void rtw_ap_restore_network(_adapter *padapter) rtw_set_key(padapter, psecuritypriv, psecuritypriv->dot118021XGrpKeyid, 0, _FALSE); } - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); @@ -4369,7 +4351,7 @@ void rtw_ap_restore_network(_adapter *padapter) chk_alive_list[chk_alive_num++] = stainfo_offset; } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); for (i = 0; i < chk_alive_num; i++) { psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]); @@ -4487,7 +4469,7 @@ void stop_ap_mode(_adapter *padapter) padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeOpen; padapter->securitypriv.ndisencryptstatus = Ndis802_11WEPDisabled; - rtw_rfctl_update_op_mode(adapter_to_rfctl(padapter), BIT(padapter->iface_id), 0); + rtw_rfctl_update_op_mode(adapter_to_rfctl(padapter), BIT(padapter->iface_id), 0, 0); /* free scan queue */ rtw_free_network_queue(padapter, _TRUE); @@ -4562,6 +4544,10 @@ void stop_ap_mode(_adapter *padapter) rtw_btcoex_MediaStatusNotify(padapter, 0); /* disconnect */ #endif +#ifdef CONFIG_DFS_MASTER + rtw_indicate_cac_state_on_bss_stop(padapter); +#endif + #ifdef CONFIG_RTW_WDS if (MLME_IS_AP(padapter)) rtw_wds_pathtbl_unregister(padapter); @@ -4575,6 +4561,53 @@ void stop_ap_mode(_adapter *padapter) #endif /* CONFIG_NATIVEAP_MLME */ +static void rtw_csa_ap_update_sta_rainfo(_adapter *adapter, + struct sta_info *psta, const struct sta_info *ap_self_psta) +{ + #ifdef CONFIG_80211AC_VHT + u8 vht_enable = ap_self_psta->vhtpriv.vht_option; + #endif + + psta->cmn.bw_mode = adapter->mlmeextpriv.cur_bwmode; + psta->htpriv.ch_offset = adapter->mlmeextpriv.cur_ch_offset; + #ifdef CONFIG_80211AC_VHT + psta->vhtpriv.vht_option = vht_enable; + psta->cmn.ra_info.is_vht_enable = vht_enable; + #endif +} + +void rtw_csa_update_clients_ramask(_adapter *adapter) +{ + struct sta_priv *pstapriv = &adapter->stapriv; + struct sta_info *psta; + struct wlan_network *cur_network = &(adapter->mlmepriv.cur_network); + const struct sta_info *ap_self_psta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress); + const struct sta_info *bmc_psta = rtw_get_bcmc_stainfo(adapter); + _list *plist, *phead; + _irqL irqL; + u8 i; + + RTW_INFO("csa : "FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(adapter)); + /* update RA mask of all clients */ + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + for (i = 0; i < NUM_STA; i++) { + phead = &(pstapriv->sta_hash[i]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { + psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); + plist = get_next(plist); + + if (psta && psta != ap_self_psta && psta != bmc_psta) { + rtw_csa_ap_update_sta_rainfo(adapter, psta, ap_self_psta); + /* update RA mask */ + rtw_dm_ra_mask_wk_cmd(adapter, psta); + } + } + } + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); +} + void rtw_ap_update_bss_chbw(_adapter *adapter, WLAN_BSSID_EX *bss, u8 ch, u8 bw, u8 offset) { #define UPDATE_VHT_CAP 1 @@ -4754,15 +4787,8 @@ static u8 rtw_ap_update_chbw_by_ifbmp(struct dvobj_priv *dvobj, u8 ifbmp || mlmeext->cur_ch_offset != dec_offset[i]) ) { if (rtw_linked_check(iface) == _TRUE) { - #ifdef CONFIG_SPCT_CH_SWITCH - if (1) - rtw_ap_inform_ch_switch(iface, dec_ch[i], dec_offset[i]); - else - #endif - { - if(rfctl->ap_csa_en == AP_CSA_DISABLE) - rtw_sta_flush(iface, _FALSE); - } + if (rfctl->ap_csa_en == AP_CSA_DISABLE) + rtw_sta_flush(iface, _FALSE); } } @@ -4779,7 +4805,7 @@ static u8 rtw_ap_update_chbw_by_ifbmp(struct dvobj_priv *dvobj, u8 ifbmp static u8 rtw_ap_ch_specific_chk(_adapter *adapter, u8 ch, u8 *bw, u8 *offset, const char *caller) { struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; + struct rtw_chset *chset = adapter_to_chset(adapter); int ch_idx; u8 ret = _SUCCESS; @@ -4789,7 +4815,7 @@ static u8 rtw_ap_ch_specific_chk(_adapter *adapter, u8 ch, u8 *bw, u8 *offset, c ret = _FAIL; goto exit; } - if (chset[ch_idx].flags & RTW_CHF_NO_IR) { + if (chset->chs[ch_idx].flags & RTW_CHF_NO_IR) { RTW_WARN("%s ch:%u is passive\n", caller, ch); ret = _FAIL; goto exit; @@ -4804,7 +4830,7 @@ static u8 rtw_ap_ch_specific_chk(_adapter *adapter, u8 ch, u8 *bw, u8 *offset, c } while (!rtw_chset_is_chbw_valid(chset, ch, *bw, *offset, 0, 0) - || (rtw_rfctl_dfs_domain_unknown(rfctl) && rtw_chset_is_dfs_chbw(chset, ch, *bw, *offset)) + || (!rtw_rfctl_radar_detect_supported(rfctl) && rtw_chset_is_dfs_chbw(chset, ch, *bw, *offset)) ) { if (*bw > CHANNEL_WIDTH_20) (*bw)--; @@ -4814,7 +4840,7 @@ static u8 rtw_ap_ch_specific_chk(_adapter *adapter, u8 ch, u8 *bw, u8 *offset, c } } - if (rtw_rfctl_dfs_domain_unknown(rfctl) && rtw_chset_is_dfs_chbw(chset, ch, *bw, *offset)) { + if (!rtw_rfctl_radar_detect_supported(rfctl) && rtw_chset_is_dfs_chbw(chset, ch, *bw, *offset)) { RTW_WARN("%s DFS channel %u can't be used\n", caller, ch); ret = _FAIL; goto exit; @@ -4824,68 +4850,12 @@ exit: return ret; } -static bool rtw_ap_choose_chbw(_adapter *adapter, u8 sel_ch, u8 max_bw, u8 cur_ch - , u8 *ch, u8 *bw, u8 *offset, bool by_int_info, u8 mesh_only, const char *caller) -{ - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - bool ch_avail = _FALSE; - -#if defined(CONFIG_DFS_MASTER) - if (!rtw_rfctl_dfs_domain_unknown(rfctl)) { - if (rfctl->radar_detected - && rfctl->dbg_dfs_choose_dfs_ch_first - ) { - ch_avail = rtw_choose_shortest_waiting_ch(rfctl, sel_ch, max_bw - , ch, bw, offset - , RTW_CHF_DFS, 0 - , cur_ch, by_int_info, mesh_only); - if (ch_avail == _TRUE) { - RTW_INFO("%s choose 5G DFS channel for debug\n", caller); - goto exit; - } - } - - if (rfctl->radar_detected - && (rfctl->dfs_ch_sel_e_flags || rfctl->dfs_ch_sel_d_flags) - ) { - ch_avail = rtw_choose_shortest_waiting_ch(rfctl, sel_ch, max_bw - , ch, bw, offset - , rfctl->dfs_ch_sel_e_flags, rfctl->dfs_ch_sel_d_flags - , cur_ch, by_int_info, mesh_only); - if (ch_avail == _TRUE) { - RTW_INFO("%s choose with dfs_ch_sel_ e_flags:0x%02x d_flags:0x%02x for debug\n" - , caller, rfctl->dfs_ch_sel_e_flags, rfctl->dfs_ch_sel_d_flags); - goto exit; - } - } - - ch_avail = rtw_choose_shortest_waiting_ch(rfctl, sel_ch, max_bw - , ch, bw, offset - , 0, 0 - , cur_ch, by_int_info, mesh_only); - } else -#endif /* defined(CONFIG_DFS_MASTER) */ - { - ch_avail = rtw_choose_shortest_waiting_ch(rfctl, sel_ch, max_bw - , ch, bw, offset - , 0, RTW_CHF_DFS - , cur_ch, by_int_info, mesh_only); - } -#if defined(CONFIG_DFS_MASTER) -exit: -#endif - if (ch_avail == _FALSE) - RTW_WARN("%s no available channel\n", caller); - - return ch_avail; -} - u8 rtw_ap_chbw_decision(_adapter *adapter, u8 ifbmp, u8 excl_ifbmp , s16 req_ch, s8 req_bw, s8 req_offset , u8 *ch, u8 *bw, u8 *offset, u8 *chbw_allow, bool *set_u_ch) { struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); - RT_CHANNEL_INFO *chset = adapter_to_chset(adapter); + struct rtw_chset *chset = adapter_to_chset(adapter); struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); bool ch_avail = _FALSE; u8 cur_ie_ch[CONFIG_IFACE_NUMBER] = {0}; @@ -5087,7 +5057,7 @@ u8 rtw_ap_chbw_decision(_adapter *adapter, u8 ifbmp, u8 excl_ifbmp } else { /* autonomous decision */ - u8 ori_ch = 0; + u8 ori_ch = 0, ori_offset = CHAN_OFFSET_NO_EXT; u8 max_bw; bool by_int_info; @@ -5166,20 +5136,35 @@ choose_chbw: } if (MSTATE_AP_NUM(&mstate) || MSTATE_MESH_NUM(&mstate)) { - if (ori_ch == 0) + if (ori_ch == 0) { ori_ch = mlmeext->cur_channel; - else if (ori_ch != mlmeext->cur_channel) + ori_offset = mlmeext->cur_ch_offset; + } else if (ori_ch != mlmeext->cur_channel) { rtw_warn_on(1); + } else if (mlmeext->cur_ch_offset != CHAN_OFFSET_NO_EXT) { + if (ori_offset == CHAN_OFFSET_NO_EXT) + ori_offset = mlmeext->cur_ch_offset; + else if (ori_offset != mlmeext->cur_ch_offset) + rtw_warn_on(1); + } } else { - if (ori_ch == 0) + if (ori_ch == 0) { ori_ch = cur_ie_ch[i]; - else if (ori_ch != cur_ie_ch[i]) + ori_offset = cur_ie_offset[i]; + } else if (ori_ch != cur_ie_ch[i]) { rtw_warn_on(1); + } else if (cur_ie_offset[i] != CHAN_OFFSET_NO_EXT) { + if (ori_offset == CHAN_OFFSET_NO_EXT) + ori_offset = cur_ie_offset[i]; + else if (ori_offset != cur_ie_offset[i]) + rtw_warn_on(1); + } } } + req_offset = req_offset > REQ_OFFSET_NONE ? req_offset : CHAN_OFFSET_NO_EXT; - ch_avail = rtw_ap_choose_chbw(adapter, req_ch, max_bw - , ori_ch, &u_ch, &u_bw, &u_offset, by_int_info, ifbmp_all_mesh, __func__); + ch_avail = rtw_rfctl_choose_chbw(rfctl, req_ch, max_bw, req_offset + , ori_ch, ori_offset, &u_ch, &u_bw, &u_offset, by_int_info, ifbmp_all_mesh, __func__); if (ch_avail == _FALSE) goto exit; @@ -5235,7 +5220,6 @@ u8 rtw_ap_sta_states_check(_adapter *adapter) struct sta_info *psta; struct sta_priv *pstapriv = &adapter->stapriv; _list *plist, *phead; - _irqL irqL; u8 rst = _FALSE; if (!MLME_IS_AP(adapter) && !MLME_IS_MESH(adapter)) @@ -5244,7 +5228,7 @@ u8 rtw_ap_sta_states_check(_adapter *adapter) if (pstapriv->auth_list_cnt !=0) return _TRUE; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { @@ -5262,7 +5246,7 @@ u8 rtw_ap_sta_states_check(_adapter *adapter) break; } } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); return rst; } @@ -5393,10 +5377,8 @@ void tx_beacon_handlder(struct dvobj_priv *pdvobj) #ifdef DBG_SWTIMER_BASED_TXBCN RTW_INFO("padapter=%p, PORT=%d\n", padapter, padapter->hw_port); #endif - /* bypass TX BCN queue if op ch is switching/waiting */ - if (!check_fwstate(&padapter->mlmepriv, WIFI_OP_CH_SWITCHING) - && !IS_CH_WAITING(adapter_to_rfctl(padapter)) - ) { + /* bypass TX BCN queue if op ch is switching */ + if (!check_fwstate(&padapter->mlmepriv, WIFI_OP_CH_SWITCHING)) { /*update_beacon(padapter, _TIM_IE_, NULL, _FALSE, 0);*/ /*issue_beacon(padapter, 0);*/ send_beacon(padapter); @@ -5821,7 +5803,6 @@ static bool rtw_ap_data_bmc_to_uc(_adapter *adapter { struct sta_priv *stapriv = &adapter->stapriv; struct xmit_priv *xmitpriv = &adapter->xmitpriv; - _irqL irqL; _list *head, *list; struct sta_info *sta; char b2u_sta_id[NUM_STA]; @@ -5829,7 +5810,7 @@ static bool rtw_ap_data_bmc_to_uc(_adapter *adapter bool bmc_need = _FALSE; int i; - _enter_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(stapriv); head = &stapriv->asoc_list; list = get_next(head); @@ -5843,7 +5824,7 @@ static bool rtw_ap_data_bmc_to_uc(_adapter *adapter if (stainfo_offset_valid(stainfo_offset)) b2u_sta_id[b2u_sta_num++] = stainfo_offset; } - _exit_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(stapriv); if (!b2u_sta_num) goto exit; @@ -5919,14 +5900,13 @@ static void rtw_ap_data_flood_for_unknown_da(_adapter *adapter { struct sta_priv *stapriv = &adapter->stapriv; struct xmit_priv *xmitpriv = &adapter->xmitpriv; - _irqL irqL; _list *head, *list; struct sta_info *sta; char sta_id[NUM_STA]; u8 sta_num = 0; int i; - _enter_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(stapriv); head = &stapriv->asoc_list; list = get_next(head); @@ -5940,7 +5920,7 @@ static void rtw_ap_data_flood_for_unknown_da(_adapter *adapter if (stainfo_offset_valid(stainfo_offset)) sta_id[sta_num++] = stainfo_offset; } - _exit_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(stapriv); if (!sta_num) goto exit; @@ -6297,7 +6277,7 @@ void rtw_issue_action_token_req(_adapter *padapter, struct sta_info *pstat) WLAN_BSSID_EX *pnetwork = &(pmlmeinfo->network); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) return; RTW_DBG("%s: %6ph\n", __FUNCTION__, pstat->cmn.mac_addr); diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_beamforming.c b/drivers/net/wireless/rtl8822cs/core/rtw_beamforming.c index 7bafe3d40..cb2cde822 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_beamforming.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_beamforming.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -115,7 +115,7 @@ static void _get_sta_beamform_cap(PADAPTER adapter, struct sta_info *sta, mlme = &adapter->mlmepriv; if (is_supported_ht(sta->wireless_mode) == _FALSE) - goto get_bfcap_next; + return; /* HT */ if (check_fwstate(mlme, WIFI_AP_STATE)) { @@ -154,7 +154,6 @@ static void _get_sta_beamform_cap(PADAPTER adapter, struct sta_info *sta, } } -get_bfcap_next: #ifdef CONFIG_80211AC_VHT if (is_supported_vht(sta->wireless_mode) == _FALSE) return; @@ -386,7 +385,7 @@ static u8 _send_vht_ndpa_packet(PADAPTER adapter, u8 *ra, u16 aid, enum channel_ set_frame_sub_type(pframe, attrib->subtype); /* Duration */ - if (is_supported_5g(pmlmeext->cur_wireless_mode) || is_supported_ht(pmlmeext->cur_wireless_mode)) + if (is_supported_5g(pmlmeext->cur_wireless_mode) || is_highest_support_ht(pmlmeext->cur_wireless_mode)) aSifsTime = 16; else aSifsTime = 10; @@ -503,7 +502,7 @@ static u8 _send_vht_mu_ndpa_packet(PADAPTER adapter, enum channel_width bw) set_frame_sub_type(pframe, attrib->subtype); /* Duration */ - if (is_supported_5g(pmlmeext->cur_wireless_mode) || is_supported_ht(pmlmeext->cur_wireless_mode)) + if (is_supported_5g(pmlmeext->cur_wireless_mode) || is_highest_support_ht(pmlmeext->cur_wireless_mode)) aSifsTime = 16; else aSifsTime = 10; @@ -1066,7 +1065,6 @@ static struct beamformer_entry *_bfer_get_entry_by_addr(PADAPTER adapter, u8 *ra static struct beamformer_entry *_bfer_add_entry(PADAPTER adapter, struct sta_info *sta, u8 bf_cap, u8 sounding_dim, u8 comp_steering) { - struct mlme_priv *mlme; struct beamforming_info *info; struct beamformer_entry *bfer; u8 *bssid; @@ -1074,7 +1072,6 @@ static struct beamformer_entry *_bfer_add_entry(PADAPTER adapter, u8 i; - mlme = &adapter->mlmepriv; info = GET_BEAMFORM_INFO(adapter); bfer = _bfer_get_entry_by_addr(adapter, sta->cmn.mac_addr); @@ -1251,7 +1248,6 @@ static u8 _bfee_get_first_mu_entry_idx(PADAPTER adapter, struct beamformee_entry static struct beamformee_entry *_bfee_add_entry(PADAPTER adapter, struct sta_info *sta, u8 bf_cap, u8 sounding_dim, u8 comp_steering) { - struct mlme_priv *mlme; struct beamforming_info *info; struct beamformee_entry *bfee; u8 *bssid; @@ -1259,7 +1255,6 @@ static struct beamformee_entry *_bfee_add_entry(PADAPTER adapter, u8 i; - mlme = &adapter->mlmepriv; info = GET_BEAMFORM_INFO(adapter); bfee = _bfee_get_entry_by_addr(adapter, sta->cmn.mac_addr); @@ -1429,7 +1424,6 @@ static void _beamforming_enter(PADAPTER adapter, void *p) #ifdef CONFIG_80211AC_VHT struct vht_priv *vhtpriv; #endif - struct mlme_ext_priv *mlme_ext; struct sta_info *sta, *sta_copy; struct beamforming_info *info; struct beamformer_entry *bfer = NULL; @@ -1445,7 +1439,6 @@ static void _beamforming_enter(PADAPTER adapter, void *p) #ifdef CONFIG_80211AC_VHT vhtpriv = &mlme->vhtpriv; #endif - mlme_ext = &adapter->mlmeextpriv; info = GET_BEAMFORM_INFO(adapter); sta_copy = (struct sta_info *)p; @@ -1466,8 +1459,8 @@ static void _beamforming_enter(PADAPTER adapter, void *p) /* The current setting does not support Beaforming */ wireless_mode = sta->wireless_mode; - if ((is_supported_ht(wireless_mode) == _FALSE) - && (is_supported_vht(wireless_mode) == _FALSE)) { + if ((is_highest_support_ht(wireless_mode) == _FALSE) + && (is_highest_support_vht(wireless_mode) == _FALSE)) { RTW_WARN("%s: Not support HT or VHT mode\n", __FUNCTION__); return; } @@ -1679,20 +1672,21 @@ u32 rtw_bf_get_report_packet(PADAPTER adapter, union recv_frame *precv_frame) struct beamforming_info *info; struct beamformee_entry *bfee = NULL; u8 *pframe; - u32 frame_len; + /*u32 frame_len;*/ u8 *ta; u8 *frame_body; u8 category, action; - u8 *pMIMOCtrlField, *pCSIMatrix; + u8 *pMIMOCtrlField; + /*u8 *pCSIMatrix;*/ u8 Nc = 0, Nr = 0, CH_W = 0, Ng = 0, CodeBook = 0; - u16 CSIMatrixLen = 0; + /*u16 CSIMatrixLen = 0;*/ RTW_INFO("+%s\n", __FUNCTION__); info = GET_BEAMFORM_INFO(adapter); pframe = precv_frame->u.hdr.rx_data; - frame_len = precv_frame->u.hdr.len; + /*frame_len = precv_frame->u.hdr.len;*/ /* Memory comparison to see if CSI report is the same with previous one */ ta = get_addr2_ptr(pframe); @@ -1716,8 +1710,8 @@ u32 rtw_bf_get_report_packet(PADAPTER adapter, union recv_frame *precv_frame) * 24+(1+1+3)+2 * ==> MAC header+(Category+ActionCode+MIMOControlField)+SNR(Nc=2) */ - pCSIMatrix = pMIMOCtrlField + 3 + Nc; - CSIMatrixLen = frame_len - 26 - 3 - Nc; + /*pCSIMatrix = pMIMOCtrlField + 3 + Nc;*/ + /*CSIMatrixLen = frame_len - 26 - 3 - Nc;*/ info->TargetCSIInfo.bVHT = _TRUE; } else if ((category == RTW_WLAN_CATEGORY_HT) && (action == RTW_WLAN_ACTION_HT_COMPRESS_BEAMFORMING)) { @@ -1731,8 +1725,8 @@ u32 rtw_bf_get_report_packet(PADAPTER adapter, union recv_frame *precv_frame) * 24+(1+1+6)+2 * ==> MAC header+(Category+ActionCode+MIMOControlField)+SNR(Nc=2) */ - pCSIMatrix = pMIMOCtrlField + 6 + Nr; - CSIMatrixLen = frame_len - 26 - 6 - Nr; + /*pCSIMatrix = pMIMOCtrlField + 6 + Nr;*/ + /*CSIMatrixLen = frame_len - 26 - 6 - Nr;*/ info->TargetCSIInfo.bVHT = _FALSE; } @@ -1992,7 +1986,7 @@ void rtw_bf_c2h_handler(PADAPTER adapter, u8 id, u8 *buf, u8 buf_len) void rtw_bf_update_traffic(PADAPTER adapter) { struct beamforming_info *info; - struct sounding_info *sounding; + /*struct sounding_info *sounding;*/ struct beamformee_entry *bfee; struct sta_info *sta; u8 bfee_cnt, sounding_idx, i; @@ -2005,7 +1999,7 @@ void rtw_bf_update_traffic(PADAPTER adapter) info = GET_BEAMFORM_INFO(adapter); - sounding = &info->sounding_info; + /*sounding = &info->sounding_info;*/ /* Check any bfee exist? */ bfee_cnt = info->beamformee_su_cnt + info->beamformee_mu_cnt; diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_br_ext.c b/drivers/net/wireless/rtl8822cs/core/rtw_br_ext.c index 9a0effd8b..2738340c7 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_br_ext.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_br_ext.c @@ -17,7 +17,10 @@ #ifdef __KERNEL__ #include #include + #include +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,15,0)) #include +#endif #include #include #include @@ -169,6 +172,7 @@ static __inline__ void __nat25_generate_ipv4_network_addr(unsigned char *network } +#ifdef _NET_INET_IPX_H_ static __inline__ void __nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr, unsigned int *ipxNetAddr, unsigned char *ipxNodeAddr) { @@ -200,6 +204,7 @@ static __inline__ void __nat25_generate_apple_network_addr(unsigned char *networ memcpy(networkAddr + 1, (unsigned char *)network, 2); networkAddr[3] = *node; } +#endif static __inline__ void __nat25_generate_pppoe_network_addr(unsigned char *networkAddr, @@ -330,6 +335,7 @@ static __inline__ int __nat25_network_hash(unsigned char *networkAddr) x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10]; return x & (NAT25_HASH_SIZE - 1); +#ifdef _NET_INET_IPX_H_ } else if (networkAddr[0] == NAT25_IPX) { unsigned long x; @@ -343,6 +349,7 @@ static __inline__ int __nat25_network_hash(unsigned char *networkAddr) x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3]; return x & (NAT25_HASH_SIZE - 1); +#endif } else if (networkAddr[0] == NAT25_PPPOE) { unsigned long x; @@ -889,6 +896,7 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method) } } +#ifdef _NET_INET_IPX_H /*---------------------------------------------------*/ /* Handle IPX and Apple Talk frame */ /*---------------------------------------------------*/ @@ -1109,6 +1117,7 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method) return -1; } +#endif /*---------------------------------------------------*/ /* Handle PPPoE frame */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_btcoex.c b/drivers/net/wireless/rtl8822cs/core/rtw_btcoex.c index 5081cddfc..686fa8556 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_btcoex.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_btcoex.c @@ -200,6 +200,17 @@ void rtw_btcoex_BtInfoNotify(PADAPTER padapter, u8 length, u8 *tmpBuf) hal_btcoex_BtInfoNotify(padapter, length, tmpBuf); } +void rtw_btcoex_le_audio_info_notify(PADAPTER padapter, u8 length, u8 *tmpBuf) +{ + PHAL_DATA_TYPE pHalData; + + pHalData = GET_HAL_DATA(padapter); + if (_FALSE == pHalData->EEPROMBluetoothCoexist) + return; + + hal_btcoex_le_audio_info_notify(padapter, length, tmpBuf); +} + void rtw_btcoex_BtMpRptNotify(PADAPTER padapter, u8 length, u8 *tmpBuf) { PHAL_DATA_TYPE pHalData; @@ -259,11 +270,6 @@ void rtw_btcoex_WlFwDbgInfoNotify(PADAPTER padapter, u8* tmpBuf, u8 length) hal_btcoex_WlFwDbgInfoNotify(padapter, tmpBuf, length); } -void rtw_btcoex_rx_rate_change_notify(PADAPTER padapter, u8 is_data_frame, u8 rate_id) -{ - hal_btcoex_rx_rate_change_notify(padapter, is_data_frame, rate_id); -} - void rtw_btcoex_SwitchBtTRxMask(PADAPTER padapter) { hal_btcoex_SwitchBtTRxMask(padapter); diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_chplan.c b/drivers/net/wireless/rtl8822cs/core/rtw_chplan.c index 1df45f4a8..f1de11562 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_chplan.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_chplan.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2018 Realtek Corporation. + * Copyright(c) 2007 - 2022 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -15,356 +15,31 @@ #define _RTW_CHPLAN_C_ #include +#include "rtw_chplan.h" -#define RTW_DOMAIN_MAP_VER "57" -#define RTW_DOMAIN_MAP_M_VER "h" -#define RTW_COUNTRY_MAP_VER "31" - -struct ch_list_t { - u8 *len_ch_attr; -}; - -#define CLA_2G_12_14_PASSIVE BIT0 - -#define CLA_5G_B1_PASSIVE BIT0 -#define CLA_5G_B2_PASSIVE BIT1 -#define CLA_5G_B3_PASSIVE BIT2 -#define CLA_5G_B4_PASSIVE BIT3 -#define CLA_5G_B2_DFS BIT4 -#define CLA_5G_B3_DFS BIT5 -#define CLA_5G_B4_DFS BIT6 - -#define CLA_6G_B1_PASSIVE BIT0 -#define CLA_6G_B2_PASSIVE BIT1 -#define CLA_6G_B3_PASSIVE BIT2 -#define CLA_6G_B4_PASSIVE BIT3 - -#define CH_LIST_ENT(_len, arg...) \ - {.len_ch_attr = (u8[_len + 2]) {_len, ##arg}, } - -#define CH_LIST_LEN(_ch_list) (_ch_list.len_ch_attr[0]) -#define CH_LIST_CH(_ch_list, _i) (_ch_list.len_ch_attr[_i + 1]) -#define CH_LIST_ATTRIB(_ch_list) (_ch_list.len_ch_attr[CH_LIST_LEN(_ch_list) + 1]) - -enum rtw_chd_2g { - RTW_CHD_2G_INVALID = 0, - - RTW_CHD_2G_00, - RTW_CHD_2G_01, - RTW_CHD_2G_02, - RTW_CHD_2G_03, - RTW_CHD_2G_04, - RTW_CHD_2G_05, - RTW_CHD_2G_06, - - RTW_CHD_2G_MAX, - RTW_CHD_2G_NULL = RTW_CHD_2G_00, -}; - -enum rtw_chd_5g { - RTW_CHD_5G_INVALID = 0, - - RTW_CHD_5G_00, - RTW_CHD_5G_01, - RTW_CHD_5G_02, - RTW_CHD_5G_03, - RTW_CHD_5G_04, - RTW_CHD_5G_05, - RTW_CHD_5G_06, - RTW_CHD_5G_07, - RTW_CHD_5G_08, - RTW_CHD_5G_09, - RTW_CHD_5G_10, - RTW_CHD_5G_11, - RTW_CHD_5G_12, - RTW_CHD_5G_13, - RTW_CHD_5G_14, - RTW_CHD_5G_15, - RTW_CHD_5G_16, - RTW_CHD_5G_17, - RTW_CHD_5G_18, - RTW_CHD_5G_19, - RTW_CHD_5G_20, - RTW_CHD_5G_21, - RTW_CHD_5G_22, - RTW_CHD_5G_23, - RTW_CHD_5G_24, - RTW_CHD_5G_25, - RTW_CHD_5G_26, - RTW_CHD_5G_27, - RTW_CHD_5G_28, - RTW_CHD_5G_29, - RTW_CHD_5G_30, - RTW_CHD_5G_31, - RTW_CHD_5G_32, - RTW_CHD_5G_33, - RTW_CHD_5G_34, - RTW_CHD_5G_35, - RTW_CHD_5G_36, - RTW_CHD_5G_37, - RTW_CHD_5G_38, - RTW_CHD_5G_39, - RTW_CHD_5G_40, - RTW_CHD_5G_41, - RTW_CHD_5G_42, - RTW_CHD_5G_43, - RTW_CHD_5G_44, - RTW_CHD_5G_45, - RTW_CHD_5G_46, - RTW_CHD_5G_47, - RTW_CHD_5G_48, - RTW_CHD_5G_49, - RTW_CHD_5G_50, - RTW_CHD_5G_51, - RTW_CHD_5G_52, - - RTW_CHD_5G_MAX, - RTW_CHD_5G_NULL = RTW_CHD_5G_00, -}; - -static const struct ch_list_t rtw_channel_def_2g[] = { - /* RTW_CHD_2G_INVALID */ CH_LIST_ENT(0, 0), - /* RTW_CHD_2G_00 */ CH_LIST_ENT(0, 0), - /* RTW_CHD_2G_01 */ CH_LIST_ENT(13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, CLA_2G_12_14_PASSIVE), - /* RTW_CHD_2G_02 */ CH_LIST_ENT(13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0), - /* RTW_CHD_2G_03 */ CH_LIST_ENT(11, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0), - /* RTW_CHD_2G_04 */ CH_LIST_ENT(14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0), - /* RTW_CHD_2G_05 */ CH_LIST_ENT(4, 10, 11, 12, 13, 0), - /* RTW_CHD_2G_06 */ CH_LIST_ENT(14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, CLA_2G_12_14_PASSIVE), -}; - -#if CONFIG_IEEE80211_BAND_5GHZ -static const struct ch_list_t rtw_channel_def_5g[] = { - /* RTW_CHD_5G_INVALID */ CH_LIST_ENT(0, 0), - /* RTW_CHD_5G_00 */ CH_LIST_ENT(0, 0), - /* RTW_CHD_5G_01 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_02 */ CH_LIST_ENT(19, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_03 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_04 */ CH_LIST_ENT(22, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_05 */ CH_LIST_ENT(19, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 149, 153, 157, 161, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_06 */ CH_LIST_ENT(9, 36, 40, 44, 48, 149, 153, 157, 161, 165, 0), - /* RTW_CHD_5G_07 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B2_DFS), - /* RTW_CHD_5G_08 */ CH_LIST_ENT(12, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, CLA_5G_B2_DFS), - /* RTW_CHD_5G_09 */ CH_LIST_ENT(5, 149, 153, 157, 161, 165, 0), - /* RTW_CHD_5G_10 */ CH_LIST_ENT(8, 36, 40, 44, 48, 52, 56, 60, 64, CLA_5G_B2_DFS), - /* RTW_CHD_5G_11 */ CH_LIST_ENT(11, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, CLA_5G_B3_DFS), - /* RTW_CHD_5G_12 */ CH_LIST_ENT(16, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_13 */ CH_LIST_ENT(8, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B2_DFS), - /* RTW_CHD_5G_14 */ CH_LIST_ENT(4, 36, 40, 44, 48, 0), - /* RTW_CHD_5G_15 */ CH_LIST_ENT(4, 149, 153, 157, 161, 0), - /* RTW_CHD_5G_16 */ CH_LIST_ENT(11, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 0), - /* RTW_CHD_5G_17 */ CH_LIST_ENT(16, 36, 40, 44, 48, 52, 56, 60, 64, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_18 */ CH_LIST_ENT(17, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_19 */ CH_LIST_ENT(16, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_20 */ CH_LIST_ENT(20, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_21 */ CH_LIST_ENT(11, 36, 40, 44, 48, 52, 56, 60, 64, 132, 136, 140, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_22 */ CH_LIST_ENT(25, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_23 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_24 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), - /* RTW_CHD_5G_25 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE), - /* RTW_CHD_5G_26 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE), - /* RTW_CHD_5G_27 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE), - /* RTW_CHD_5G_28 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B2_PASSIVE), - /* RTW_CHD_5G_29 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE), - /* RTW_CHD_5G_30 */ CH_LIST_ENT(9, 36, 40, 44, 48, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B4_PASSIVE), - /* RTW_CHD_5G_31 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), - /* RTW_CHD_5G_32 */ CH_LIST_ENT(9, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B2_DFS), - /* RTW_CHD_5G_33 */ CH_LIST_ENT(22, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_34 */ CH_LIST_ENT(13, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B3_DFS), - /* RTW_CHD_5G_35 */ CH_LIST_ENT(8, 100, 104, 108, 112, 116, 132, 136, 140, CLA_5G_B3_DFS), - /* RTW_CHD_5G_36 */ CH_LIST_ENT(25, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B2_DFS | CLA_5G_B3_PASSIVE | CLA_5G_B3_DFS | CLA_5G_B4_PASSIVE), - /* RTW_CHD_5G_37 */ CH_LIST_ENT(8, 36, 40, 44, 48, 52, 56, 60, 64, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE), - /* RTW_CHD_5G_38 */ CH_LIST_ENT(16, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_39 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_DFS | CLA_5G_B3_DFS | CLA_5G_B4_DFS), - /* RTW_CHD_5G_40 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_41 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS | CLA_5G_B4_PASSIVE), - /* RTW_CHD_5G_42 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_DFS | CLA_5G_B3_DFS | CLA_5G_B4_PASSIVE), - /* RTW_CHD_5G_43 */ CH_LIST_ENT(23, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), - /* RTW_CHD_5G_44 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), - /* RTW_CHD_5G_45 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B4_PASSIVE), - /* RTW_CHD_5G_46 */ CH_LIST_ENT(12, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, CLA_5G_B2_PASSIVE), - /* RTW_CHD_5G_47 */ CH_LIST_ENT(19, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE), - /* RTW_CHD_5G_48 */ CH_LIST_ENT(20, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_49 */ CH_LIST_ENT(17, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_50 */ CH_LIST_ENT(17, 36, 40, 44, 48, 52, 56, 60, 64, 132, 136, 140, 144, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_51 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, CLA_5G_B2_DFS | CLA_5G_B3_DFS), - /* RTW_CHD_5G_52 */ CH_LIST_ENT(28, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, 169, 173, 177, CLA_5G_B2_DFS | CLA_5G_B3_DFS), -}; -#endif /* CONFIG_IEEE80211_BAND_5GHZ */ - -struct chplan_ent_t { - u8 regd_2g; /* value of enum rtw_regd */ - u8 chd_2g; -#if CONFIG_IEEE80211_BAND_5GHZ - u8 regd_5g; /* value of enum rtw_regd */ - u8 chd_5g; -#endif -}; - -#if CONFIG_IEEE80211_BAND_5GHZ -#define CHPLAN_ENT(_regd_2g, _chd_2g, _regd_5g, _chd_5g) {.regd_2g = RTW_REGD_##_regd_2g, .chd_2g = RTW_CHD_2G_##_chd_2g, .regd_5g = RTW_REGD_##_regd_5g, .chd_5g = RTW_CHD_5G_##_chd_5g} -#else -#define CHPLAN_ENT(_regd_2g, _chd_2g, _regd_5g, _chd_5g) {.regd_2g = RTW_REGD_##_regd_2g, .chd_2g = RTW_CHD_2G_##_chd_2g} -#endif - -#define CHPLAN_ENT_NOT_DEFINED CHPLAN_ENT(NA, INVALID, NA, INVALID) - -static const struct chplan_ent_t RTW_ChannelPlanMap[] = { - [0x00] = CHPLAN_ENT(ETSI , 02, ETSI , 49), - [0x01] = CHPLAN_ENT(ETSI , 02, ETSI , 50), - [0x02] = CHPLAN_ENT(ETSI , 03, ETSI , 07), - [0x03] = CHPLAN_ENT(ACMA , 02, ACMA , 33), - [0x04] = CHPLAN_ENT(ETSI , 02, ETSI , 51), - [0x05] = CHPLAN_ENT(ETSI , 02, ETSI , 06), - [0x06] = CHPLAN_ENT(ETSI , 02, ETSI , 07), - [0x07] = CHPLAN_ENT(ETSI , 02, ETSI , 23), - [0x08] = CHPLAN_ENT(ETSI , 02, ETSI , 21), - [0x09] = CHPLAN_ENT(ETSI , 02, ETSI , 17), - [0x1A] = CHPLAN_ENT(NA , 00, NA , 00), - [0x1B] = CHPLAN_ENT(FCC , 02, FCC , 52), - [0x20] = CHPLAN_ENT(WW , 01, NA , 00), - [0x21] = CHPLAN_ENT(ETSI , 02, NA , 00), - [0x22] = CHPLAN_ENT(FCC , 03, NA , 00), - [0x23] = CHPLAN_ENT(MKK , 04, NA , 00), - [0x24] = CHPLAN_ENT(ETSI , 05, NA , 00), - [0x25] = CHPLAN_ENT(FCC , 03, FCC , 03), - [0x26] = CHPLAN_ENT(ETSI , 01, ETSI , 02), - [0x27] = CHPLAN_ENT(MKK , 04, MKK , 02), - [0x28] = CHPLAN_ENT(KCC , 01, KCC , 05), - [0x29] = CHPLAN_ENT(FCC , 01, FCC , 06), - [0x2A] = CHPLAN_ENT(FCC , 02, NA , 00), - [0x2B] = CHPLAN_ENT(IC , 02, IC , 33), - [0x2C] = CHPLAN_ENT(MKK , 02, NA , 00), - [0x2D] = CHPLAN_ENT(CHILE, 01, CHILE, 22), - [0x2E] = CHPLAN_ENT(WW , 03, WW , 37), - [0x2F] = CHPLAN_ENT(CHILE, 01, CHILE, 38), - [0x30] = CHPLAN_ENT(FCC , 01, FCC , 07), - [0x31] = CHPLAN_ENT(FCC , 01, FCC , 08), - [0x32] = CHPLAN_ENT(FCC , 01, FCC , 09), - [0x33] = CHPLAN_ENT(FCC , 01, FCC , 10), - [0x34] = CHPLAN_ENT(FCC , 03, FCC , 01), - [0x35] = CHPLAN_ENT(ETSI , 01, ETSI , 03), - [0x36] = CHPLAN_ENT(ETSI , 01, ETSI , 04), - [0x37] = CHPLAN_ENT(MKK , 04, MKK , 10), - [0x38] = CHPLAN_ENT(MKK , 04, MKK , 11), - [0x39] = CHPLAN_ENT(NCC , 03, NCC , 12), - [0x3A] = CHPLAN_ENT(ETSI , 02, ETSI , 02), - [0x3B] = CHPLAN_ENT(ACMA , 02, ACMA , 01), - [0x3C] = CHPLAN_ENT(ETSI , 02, ETSI , 10), - [0x3D] = CHPLAN_ENT(ETSI , 02, ETSI , 15), - [0x3E] = CHPLAN_ENT(KCC , 02, KCC , 03), - [0x3F] = CHPLAN_ENT(FCC , 03, FCC , 22), - [0x40] = CHPLAN_ENT(NCC , 03, NCC , 13), - [0x41] = CHPLAN_ENT(WW , 06, NA , 00), - [0x42] = CHPLAN_ENT(ETSI , 02, ETSI , 14), - [0x43] = CHPLAN_ENT(FCC , 03, FCC , 06), - [0x44] = CHPLAN_ENT(NCC , 03, NCC , 09), - [0x45] = CHPLAN_ENT(ACMA , 01, ACMA , 01), - [0x46] = CHPLAN_ENT(FCC , 03, FCC , 15), - [0x47] = CHPLAN_ENT(ETSI , 01, ETSI , 10), - [0x48] = CHPLAN_ENT(ETSI , 01, ETSI , 07), - [0x49] = CHPLAN_ENT(ETSI , 01, ETSI , 06), - [0x4A] = CHPLAN_ENT(IC , 03, IC , 33), - [0x4B] = CHPLAN_ENT(KCC , 02, KCC , 22), - [0x4C] = CHPLAN_ENT(FCC , 03, FCC , 28), - [0x4D] = CHPLAN_ENT(MEX , 02, MEX , 01), - [0x4E] = CHPLAN_ENT(ETSI , 02, ETSI , 42), - [0x4F] = CHPLAN_ENT(NA , 00, MKK , 43), - [0x50] = CHPLAN_ENT(ETSI , 01, ETSI , 16), - [0x51] = CHPLAN_ENT(ETSI , 01, ETSI , 09), - [0x52] = CHPLAN_ENT(ETSI , 01, ETSI , 17), - [0x53] = CHPLAN_ENT(NCC , 03, NCC , 18), - [0x54] = CHPLAN_ENT(ETSI , 01, ETSI , 15), - [0x55] = CHPLAN_ENT(FCC , 03, FCC , 01), - [0x56] = CHPLAN_ENT(ETSI , 01, ETSI , 19), - [0x57] = CHPLAN_ENT(FCC , 03, FCC , 20), - [0x58] = CHPLAN_ENT(MKK , 02, MKK , 14), - [0x59] = CHPLAN_ENT(ETSI , 01, ETSI , 21), - [0x5A] = CHPLAN_ENT(NA , 00, FCC , 44), - [0x5B] = CHPLAN_ENT(NA , 00, FCC , 45), - [0x5C] = CHPLAN_ENT(NA , 00, FCC , 43), - [0x5D] = CHPLAN_ENT(ETSI , 02, ETSI , 08), - [0x5E] = CHPLAN_ENT(ETSI , 02, ETSI , 03), - [0x5F] = CHPLAN_ENT(MKK , 02, MKK , 47), - [0x60] = CHPLAN_ENT(FCC , 03, FCC , 09), - [0x61] = CHPLAN_ENT(FCC , 02, FCC , 01), - [0x62] = CHPLAN_ENT(FCC , 02, FCC , 03), - [0x63] = CHPLAN_ENT(ETSI , 01, ETSI , 23), - [0x64] = CHPLAN_ENT(MKK , 02, MKK , 24), - [0x65] = CHPLAN_ENT(ETSI , 02, ETSI , 24), - [0x66] = CHPLAN_ENT(FCC , 03, FCC , 27), - [0x67] = CHPLAN_ENT(FCC , 03, FCC , 25), - [0x68] = CHPLAN_ENT(FCC , 02, FCC , 27), - [0x69] = CHPLAN_ENT(FCC , 02, FCC , 25), - [0x6A] = CHPLAN_ENT(ETSI , 02, ETSI , 25), - [0x6B] = CHPLAN_ENT(FCC , 01, FCC , 29), - [0x6C] = CHPLAN_ENT(FCC , 01, FCC , 26), - [0x6D] = CHPLAN_ENT(FCC , 02, FCC , 28), - [0x6E] = CHPLAN_ENT(FCC , 01, FCC , 25), - [0x6F] = CHPLAN_ENT(NA , 00, ETSI , 06), - [0x70] = CHPLAN_ENT(NA , 00, ETSI , 30), - [0x71] = CHPLAN_ENT(NA , 00, ETSI , 25), - [0x72] = CHPLAN_ENT(NA , 00, ETSI , 31), - [0x73] = CHPLAN_ENT(FCC , 01, FCC , 01), - [0x74] = CHPLAN_ENT(FCC , 02, FCC , 19), - [0x75] = CHPLAN_ENT(ETSI , 01, ETSI , 32), - [0x76] = CHPLAN_ENT(FCC , 02, FCC , 22), - [0x77] = CHPLAN_ENT(ETSI , 01, ETSI , 34), - [0x78] = CHPLAN_ENT(FCC , 03, FCC , 35), - [0x79] = CHPLAN_ENT(MKK , 02, MKK , 02), - [0x7A] = CHPLAN_ENT(ETSI , 02, ETSI , 28), - [0x7B] = CHPLAN_ENT(ETSI , 02, ETSI , 46), - [0x7C] = CHPLAN_ENT(ETSI , 02, ETSI , 47), - [0x7D] = CHPLAN_ENT(MKK , 04, MKK , 48), - [0x7E] = CHPLAN_ENT(MKK , 02, MKK , 48), - [0x7F] = CHPLAN_ENT(WW , 01, WW , 36), -}; - -const int RTW_ChannelPlanMap_size = sizeof(RTW_ChannelPlanMap) / sizeof(RTW_ChannelPlanMap[0]); +extern struct rtw_regdb_ops regdb_ops; u8 rtw_chplan_get_default_regd_2g(u8 id) { - if (id < RTW_ChannelPlanMap_size) - return RTW_ChannelPlanMap[id].regd_2g; + if (regdb_ops.get_default_regd_2g) + return regdb_ops.get_default_regd_2g(id); return RTW_REGD_NA; } +#if CONFIG_IEEE80211_BAND_5GHZ u8 rtw_chplan_get_default_regd_5g(u8 id) { -#if CONFIG_IEEE80211_BAND_5GHZ - if (id < RTW_ChannelPlanMap_size) - return RTW_ChannelPlanMap[id].regd_5g; -#endif + if (regdb_ops.get_default_regd_5g) + return regdb_ops.get_default_regd_5g(id); return RTW_REGD_NA; } +#endif bool rtw_is_channel_plan_valid(u8 id) { - if (id < RTW_ChannelPlanMap_size) { - const struct chplan_ent_t *chplan_map = &RTW_ChannelPlanMap[id]; - - if (chplan_map->chd_2g != RTW_CHD_2G_INVALID - #if CONFIG_IEEE80211_BAND_5GHZ - && chplan_map->chd_5g != RTW_CHD_5G_INVALID - #endif - ) - return _TRUE; - } - - return _FALSE; -} - -bool rtw_regsty_is_excl_chs(struct registry_priv *regsty, u8 ch) -{ - int i; - - for (i = 0; i < MAX_CHANNEL_NUM_2G_5G; i++) { - if (regsty->excl_chs[i] == 0) - break; - if (regsty->excl_chs[i] == ch) - return _TRUE; - } - return _FALSE; + if (regdb_ops.is_domain_code_valid) + return regdb_ops.is_domain_code_valid(id); + return false; } /* @@ -374,133 +49,26 @@ bool rtw_regsty_is_excl_chs(struct registry_priv *regsty, u8 ch) * * return the index of channel_num in channel_set, -1 if not found */ -static bool rtw_chplan_get_ch(u8 id, const u32 ch, u8 *flags) +static bool rtw_chplan_get_ch(u8 id, u32 ch, u8 *flags) { - u8 index, chan, attrib; - - if (flags) - *flags = 0; - -#if CONFIG_IEEE80211_BAND_5GHZ - if (ch > 14) { - u8 chd_5g = RTW_ChannelPlanMap[id].chd_5g; - - attrib = CH_LIST_ATTRIB(rtw_channel_def_5g[chd_5g]); - - for (index = 0; index < CH_LIST_LEN(rtw_channel_def_5g[chd_5g]); index++) { - if (CH_LIST_CH(rtw_channel_def_5g[chd_5g], index) == ch) { - if (flags) { - if ((rtw_is_5g_band1(ch) && (attrib & CLA_5G_B1_PASSIVE)) /* band1 passive */ - || (rtw_is_5g_band2(ch) && (attrib & CLA_5G_B2_PASSIVE)) /* band2 passive */ - || (rtw_is_5g_band3(ch) && (attrib & CLA_5G_B3_PASSIVE)) /* band3 passive */ - || (rtw_is_5g_band4(ch) && (attrib & CLA_5G_B4_PASSIVE)) /* band4 passive */ - ) - *flags |= RTW_CHF_NO_IR; - - if ((rtw_is_5g_band2(ch) && (attrib & CLA_5G_B2_DFS)) - || (rtw_is_5g_band3(ch) && (attrib & CLA_5G_B3_DFS)) - || (rtw_is_5g_band4(ch) && (attrib & CLA_5G_B4_DFS))) - *flags |= RTW_CHF_DFS; - } - return 1; - } - } - } else -#endif /* CONFIG_IEEE80211_BAND_5GHZ */ - { - u8 chd_2g = RTW_ChannelPlanMap[id].chd_2g; - - attrib = CH_LIST_ATTRIB(rtw_channel_def_2g[chd_2g]); - - for (index = 0; index < CH_LIST_LEN(rtw_channel_def_2g[chd_2g]); index++) { - if (CH_LIST_CH(rtw_channel_def_2g[chd_2g], index) == ch) { - if (flags) { - if (ch >= 12 && ch <= 14 && (attrib & CLA_2G_12_14_PASSIVE)) - *flags |= RTW_CHF_NO_IR; - } - return 1; - } - } - } - - return 0; + if (regdb_ops.domain_get_ch) + return regdb_ops.domain_get_ch(id, ch, flags); + return false; } #if CONFIG_IEEE80211_BAND_6GHZ -enum rtw_chd_6g { - RTW_CHD_6G_INVALID = 0, - - RTW_CHD_6G_00, - RTW_CHD_6G_01, - RTW_CHD_6G_02, - RTW_CHD_6G_03, - RTW_CHD_6G_04, - RTW_CHD_6G_05, /* 6G Worldwide */ - - RTW_CHD_6G_MAX, - RTW_CHD_6G_NULL = RTW_CHD_6G_00, -}; - -static const struct ch_list_t rtw_channel_def_6g[] = { - /* RTW_CHD_6G_INVALID */ CH_LIST_ENT(0, 0), - /* RTW_CHD_6G_00 */ CH_LIST_ENT(0, 0), - /* RTW_CHD_6G_01 */ CH_LIST_ENT(24, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 0), - /* RTW_CHD_6G_02 */ CH_LIST_ENT(6, 97, 101, 105, 109, 113, 117, 0), - /* RTW_CHD_6G_03 */ CH_LIST_ENT(18, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189, 0), - /* RTW_CHD_6G_04 */ CH_LIST_ENT(11, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233, 0), - /* RTW_CHD_6G_05 */ CH_LIST_ENT(59, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233, CLA_6G_B1_PASSIVE | CLA_6G_B2_PASSIVE | CLA_6G_B3_PASSIVE | CLA_6G_B4_PASSIVE), -}; - -struct chplan_6g_ent_t { - u8 regd; /* value of enum rtw_regd */ - u8 chd; -}; - -#define CHPLAN_6G_ENT(_regd, _chd) {.regd = RTW_REGD_##_regd, .chd = RTW_CHD_6G_##_chd} - -#define CHPLAN_6G_ENT_NOT_DEFINED CHPLAN_6G_ENT(NA, INVALID) - -static const struct chplan_6g_ent_t rtw_chplan_6g_map[] = { - [0x00] = CHPLAN_6G_ENT(NA , 00), - [0x01] = CHPLAN_6G_ENT(FCC , 01), - [0x02] = CHPLAN_6G_ENT(FCC , 02), - [0x03] = CHPLAN_6G_ENT(FCC , 03), - [0x04] = CHPLAN_6G_ENT(FCC , 04), - [0x7F] = CHPLAN_6G_ENT(WW , 05), -}; - -const int rtw_chplan_6g_map_size = sizeof(rtw_chplan_6g_map) / sizeof(rtw_chplan_6g_map[0]); - u8 rtw_chplan_get_default_regd_6g(u8 id) { - if (id < rtw_chplan_6g_map_size) - return rtw_chplan_6g_map[id].regd; + if (regdb_ops.get_default_regd_6g) + return regdb_ops.get_default_regd_6g(id); return RTW_REGD_NA; } bool rtw_is_channel_plan_6g_valid(u8 id) { - if (id < rtw_chplan_6g_map_size) { - const struct chplan_6g_ent_t *chplan_map = &rtw_chplan_6g_map[id]; - - if (chplan_map->chd != RTW_CHD_6G_INVALID) - return _TRUE; - } - - return _FALSE; -} - -bool rtw_regsty_is_excl_chs_6g(struct registry_priv *regsty, u8 ch) -{ - int i; - - for (i = 0; i < MAX_CHANNEL_NUM_6G; i++) { - if (regsty->excl_chs_6g[i] == 0) - break; - if (regsty->excl_chs_6g[i] == ch) - return _TRUE; - } - return _FALSE; + if (regdb_ops.is_domain_code_6g_valid) + return regdb_ops.is_domain_code_6g_valid(id); + return false; } /* @@ -510,36 +78,59 @@ bool rtw_regsty_is_excl_chs_6g(struct registry_priv *regsty, u8 ch) * * return the index of channel_num in channel_set, -1 if not found */ -static bool rtw_chplan_6g_get_ch(u8 id, const u32 ch, u8 *flags) +static bool rtw_chplan_6g_get_ch(u8 id, u32 ch, u8 *flags) { - u8 index, chan, attrib; - u8 chd_6g; - - if (flags) - *flags = 0; - - chd_6g = rtw_chplan_6g_map[id].chd; - - attrib = CH_LIST_ATTRIB(rtw_channel_def_6g[chd_6g]); - - for (index = 0; index < CH_LIST_LEN(rtw_channel_def_6g[chd_6g]); index++) { - if (CH_LIST_CH(rtw_channel_def_6g[chd_6g], index) == ch) { - if (flags) { - if ((rtw_is_6g_band1(ch) && (attrib & CLA_6G_B1_PASSIVE)) /* band1 passive */ - || (rtw_is_6g_band2(ch) && (attrib & CLA_6G_B2_PASSIVE)) /* band2 passive */ - || (rtw_is_6g_band3(ch) && (attrib & CLA_6G_B3_PASSIVE)) /* band3 passive */ - || (rtw_is_6g_band4(ch) && (attrib & CLA_6G_B4_PASSIVE)) /* band4 passive */ - ) - *flags |= RTW_CHF_NO_IR; - } - return 1; - } - } - - return 0; + if (regdb_ops.domain_6g_get_ch) + return regdb_ops.domain_6g_get_ch(id, ch, flags); + return false; } #endif /* CONFIG_IEEE80211_BAND_6GHZ */ +void rtw_rfctl_addl_ch_disable_conf_init(struct rf_ctl_t *rfctl, struct registry_priv *regsty) +{ + int i; + + rfctl->dis_ch_flags = regsty->dis_ch_flags + #if !CONFIG_DFS + | RTW_CHF_DFS + #endif + ; + + for (i = 0; i < MAX_CHANNEL_NUM_2G_5G; i++) + rfctl->excl_chs[i] = regsty->excl_chs[i]; +#if CONFIG_IEEE80211_BAND_6GHZ + for (i = 0; i < MAX_CHANNEL_NUM_6G; i++) + rfctl->excl_chs_6g[i] = regsty->excl_chs_6g[i]; +#endif +} + +static bool rtw_rfctl_is_excl_chs(struct rf_ctl_t *rfctl, u8 ch) +{ + int i; + + for (i = 0; i < MAX_CHANNEL_NUM_2G_5G; i++) { + if (rfctl->excl_chs[i] == 0) + break; + if (rfctl->excl_chs[i] == ch) + return true; + } + return false; +} + +#if CONFIG_IEEE80211_BAND_6GHZ +static bool rtw_rfctl_is_excl_chs_6g(struct rf_ctl_t *rfctl, u8 ch) +{ + int i; + + for (i = 0; i < MAX_CHANNEL_NUM_6G; i++) { + if (rfctl->excl_chs_6g[i] == 0) + break; + if (rfctl->excl_chs_6g[i] == ch) + return true; + } + return false; +} +#endif /* * Check if the @param ch, bw, offset is valid for the given @param id, id_6g @@ -550,8 +141,8 @@ static bool rtw_chplan_6g_get_ch(u8 id, const u32 ch, u8 *flags) * * return valid (1) or not (0) */ -u8 rtw_chplan_is_chbw_valid(u8 id, u8 id_6g, BAND_TYPE band, u8 ch, u8 bw, u8 offset - , bool allow_primary_passive, bool allow_passive, struct registry_priv *regsty) +u8 rtw_chplan_is_bchbw_valid(u8 id, u8 id_6g, enum band_type band, u8 ch, u8 bw, u8 offset + , bool allow_primary_passive, bool allow_passive, struct rf_ctl_t *rfctl) { u8 cch; u8 *op_chs; @@ -562,14 +153,9 @@ u8 rtw_chplan_is_chbw_valid(u8 id, u8 id_6g, BAND_TYPE band, u8 ch, u8 bw, u8 of int ch_idx; u8 flags; -#if CONFIG_IEEE80211_BAND_6GHZ - if (band == BAND_ON_6G) - goto exit; -#endif + cch = rtw_get_center_ch_by_band(band, ch, bw, offset); - cch = rtw_get_center_ch(ch, bw, offset); /* TODO: 6G */ - - if (!rtw_get_op_chs_by_cch_bw(cch, bw, &op_chs, &op_ch_num)) /* TODO: 6G */ + if (!rtw_get_op_chs_by_bcch_bw(band, cch, bw, &op_chs, &op_ch_num)) goto exit; for (i = 0; i < op_ch_num; i++) { @@ -579,13 +165,15 @@ u8 rtw_chplan_is_chbw_valid(u8 id, u8 id_6g, BAND_TYPE band, u8 ch, u8 bw, u8 of #if CONFIG_IEEE80211_BAND_6GHZ if (band == BAND_ON_6G) { if (!rtw_chplan_6g_get_ch(id_6g, op_ch, &flags) - || (regsty && rtw_regsty_is_excl_chs_6g(regsty, op_ch) == _TRUE)) + || (rfctl && (rfctl->dis_ch_flags & flags)) + || (rfctl && rtw_rfctl_is_excl_chs_6g(rfctl, op_ch) == _TRUE)) break; } else #endif { if (!rtw_chplan_get_ch(id, op_ch, &flags) - || (regsty && rtw_regsty_is_excl_chs(regsty, op_ch) == _TRUE)) + || (rfctl && (rfctl->dis_ch_flags & flags)) + || (rfctl && rtw_rfctl_is_excl_chs(rfctl, op_ch) == _TRUE)) break; } if (flags & RTW_CHF_NO_IR) { @@ -608,246 +196,162 @@ const char *_regd_src_str[] = { [REGD_SRC_NUM] = "UNKNOWN", }; -static u8 init_channel_set_from_rtk_priv_2g_5g(_adapter *adapter, RT_CHANNEL_INFO *channel_set, u8 *ch_num) +static void rtw_chset_apply_from_rtk_priv(struct rtw_chset *chset, u8 chplan, u8 chplan_6g, u8 d_flags) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - struct registry_priv *regsty = adapter_to_regsty(adapter); - u8 chplan = rfctl->ChannelPlan; - u8 index, chanset_size = *ch_num; - u8 b5GBand = _FALSE, b2_4GBand = _FALSE; - u8 ch, attrib; + RT_CHANNEL_INFO *chinfo; + u8 i; + u8 flags; + bool chplan_valid = rtw_is_channel_plan_valid(chplan); +#if CONFIG_IEEE80211_BAND_6GHZ + bool chplan_6g_valid = rtw_is_channel_plan_valid(chplan_6g); +#endif + bool usable_ch; - if (!rtw_is_channel_plan_valid(chplan)) { - RTW_ERR(FUNC_ADPT_FMT" invalid chplan:0x%02X\n", FUNC_ADPT_ARG(adapter), chplan); - goto exit; - } - RTW_INFO(FUNC_ADPT_FMT" chplan:0x%02X\n", FUNC_ADPT_ARG(adapter), chplan); + RTW_INFO("%s chplan:0x%02X chplan_6g:0x%02X\n", __func__, chplan, chplan_6g); + rtw_warn_on(!chplan_valid); +#if CONFIG_IEEE80211_BAND_6GHZ + rtw_warn_on(!chplan_6g_valid); +#endif - if (IsSupported24G(regsty->wireless_mode) && hal_chk_band_cap(adapter, BAND_CAP_2G)) - b2_4GBand = _TRUE; + for (i = 0; i < chset->chs_len; i++) { + chinfo = &chset->chs[i]; + if (chinfo->flags & RTW_CHF_DIS) + continue; - if (is_supported_5g(regsty->wireless_mode) && hal_chk_band_cap(adapter, BAND_CAP_5G)) - b5GBand = _TRUE; - - if (b2_4GBand) { - u8 chd_2g = RTW_ChannelPlanMap[chplan].chd_2g; - - attrib = CH_LIST_ATTRIB(rtw_channel_def_2g[chd_2g]); - - for (index = 0; index < CH_LIST_LEN(rtw_channel_def_2g[chd_2g]); index++) { - ch = CH_LIST_CH(rtw_channel_def_2g[chd_2g], index); - if (rtw_regsty_is_excl_chs(regsty, ch) == _TRUE) - continue; - - if (chanset_size >= MAX_CHANNEL_NUM) { - RTW_WARN("chset size can't exceed MAX_CHANNEL_NUM(%u)\n", MAX_CHANNEL_NUM); - break; - } - - channel_set[chanset_size].band = BAND_ON_2_4G; - channel_set[chanset_size].ChannelNum = ch; - - if (ch >= 12 && ch <= 14 && (attrib & CLA_2G_12_14_PASSIVE)) - channel_set[chanset_size].flags |= RTW_CHF_NO_IR; - - if (channel_set[chanset_size].flags & RTW_CHF_NO_IR) { - if (!rtw_rfctl_reg_allow_beacon_hint(rfctl) || !rtw_chinfo_allow_beacon_hint(&channel_set[chanset_size])) - RTW_INFO("band:%s ch%u is NO_IR while beacon hint not allowed\n", band_str(BAND_ON_2_4G), ch); - } - - chanset_size++; - } - } - -#if CONFIG_IEEE80211_BAND_5GHZ - if (b5GBand) { - bool dfs; - u8 chd_5g = RTW_ChannelPlanMap[chplan].chd_5g; - - attrib = CH_LIST_ATTRIB(rtw_channel_def_5g[chd_5g]); - - for (index = 0; index < CH_LIST_LEN(rtw_channel_def_5g[chd_5g]); index++) { - ch = CH_LIST_CH(rtw_channel_def_5g[chd_5g], index); - if (rtw_regsty_is_excl_chs(regsty, ch) == _TRUE) - continue; - dfs = (rtw_is_5g_band2(ch) && (attrib & CLA_5G_B2_DFS)) - || (rtw_is_5g_band3(ch) && (attrib & CLA_5G_B3_DFS)) - || (rtw_is_5g_band4(ch) && (attrib & CLA_5G_B4_DFS)); - #if !CONFIG_DFS - if (dfs) - continue; + if (chinfo->band == BAND_ON_24G + #if CONFIG_IEEE80211_BAND_5GHZ + || chinfo->band == BAND_ON_5G #endif - - if (chanset_size >= MAX_CHANNEL_NUM) { - RTW_WARN("chset size can't exceed MAX_CHANNEL_NUM(%u)\n", MAX_CHANNEL_NUM); - break; - } - - channel_set[chanset_size].band = BAND_ON_5G; - channel_set[chanset_size].ChannelNum = ch; - - if ((rtw_is_5g_band1(ch) && (attrib & CLA_5G_B1_PASSIVE)) /* band1 passive */ - || (rtw_is_5g_band2(ch) && (attrib & CLA_5G_B2_PASSIVE)) /* band2 passive */ - || (rtw_is_5g_band3(ch) && (attrib & CLA_5G_B3_PASSIVE)) /* band3 passive */ - || (rtw_is_5g_band4(ch) && (attrib & CLA_5G_B4_PASSIVE)) /* band4 passive */ - ) - channel_set[chanset_size].flags |= RTW_CHF_NO_IR; - - if (dfs) - channel_set[chanset_size].flags |= RTW_CHF_DFS; - - if (channel_set[chanset_size].flags & RTW_CHF_NO_IR) { - if (!rtw_rfctl_reg_allow_beacon_hint(rfctl) || !rtw_chinfo_allow_beacon_hint(&channel_set[chanset_size])) - RTW_INFO("band:%s ch%u is NO_IR%s while beacon hint not allowed\n", band_str(BAND_ON_5G), ch, dfs ? " DFS" : ""); - } - - chanset_size++; + ) { + if (!chplan_valid) + continue; + usable_ch = rtw_chplan_get_ch(chplan, chinfo->ChannelNum, &flags); + if (usable_ch && (flags & d_flags)) + usable_ch = false; } + #if CONFIG_IEEE80211_BAND_6GHZ + else if (chinfo->band == BAND_ON_6G) { + if (!chplan_6g_valid) + continue; + usable_ch = rtw_chplan_6g_get_ch(chplan_6g, chinfo->ChannelNum, &flags); + if (usable_ch && (flags & d_flags)) + usable_ch = false; + } + #endif + else + usable_ch = false; + + if (usable_ch) + chinfo->flags |= flags; + else + chinfo->flags = RTW_CHF_DIS; } -#endif /* CONFIG_IEEE80211_BAND_5GHZ */ - -exit: - *ch_num = chanset_size; - - return chanset_size; } -#if CONFIG_IEEE80211_BAND_6GHZ -static u8 init_channel_set_from_rtk_priv_6g(_adapter *adapter, RT_CHANNEL_INFO *channel_set, u8 *ch_num) +static void rtw_rfctl_chset_apply_regd_reqs(struct rf_ctl_t *rfctl, u8 d_flags, bool req_lock) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - struct registry_priv *regsty = adapter_to_regsty(adapter); - u8 chplan_6g = rfctl->chplan_6g; - u8 index, chanset_size = *ch_num; - bool band_6g = _FALSE; - u8 chd_6g; - u8 ch, attrib; + struct regd_req_t *req; + _list *cur, *head; - if (!rtw_is_channel_plan_6g_valid(chplan_6g)) { - RTW_ERR(FUNC_ADPT_FMT" invalid chplan_6g:0x%02X\n", FUNC_ADPT_ARG(adapter), chplan_6g); - goto exit; - } - RTW_INFO(FUNC_ADPT_FMT" chplan_6g:0x%02X\n", FUNC_ADPT_ARG(adapter), chplan_6g); + /* apply regd reqs */ + if (req_lock) + _rtw_mutex_lock_interruptible(&rfctl->regd_req_mutex); - band_6g = _TRUE; /* TODO: SW conf & HW cap check */ - if (!band_6g) - goto exit; - - chd_6g = rtw_chplan_6g_map[chplan_6g].chd; - - attrib = CH_LIST_ATTRIB(rtw_channel_def_6g[chd_6g]); - - for (index = 0; index < CH_LIST_LEN(rtw_channel_def_6g[chd_6g]); index++) { - ch = CH_LIST_CH(rtw_channel_def_6g[chd_6g], index); - if (rtw_regsty_is_excl_chs_6g(regsty, ch) == _TRUE) + head = &rfctl->regd_req_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + cur = get_next(cur); + if (!req->applied) continue; - if (chanset_size >= MAX_CHANNEL_NUM) { - RTW_WARN("chset size can't exceed MAX_CHANNEL_NUM(%u)\n", MAX_CHANNEL_NUM); - break; + + if (req->src == REGD_SRC_RTK_PRIV) { + u8 domain_code_6g = RTW_CHPLAN_6G_NULL; + + #if CONFIG_IEEE80211_BAND_6GHZ + domain_code_6g = req->chplan.domain_code_6g; + #endif + rtw_chset_apply_from_rtk_priv(&rfctl->chset, req->chplan.domain_code, domain_code_6g, d_flags); } + #ifdef CONFIG_REGD_SRC_FROM_OS + else if (req->src == REGD_SRC_OS) + rtw_chset_apply_from_os(&rfctl->chset, d_flags); + #endif + else + rtw_warn_on(1); + } - channel_set[chanset_size].band = BAND_ON_6G; - channel_set[chanset_size].ChannelNum = ch; + if (req_lock) + _rtw_mutex_unlock(&rfctl->regd_req_mutex); +} - if ((rtw_is_6g_band1(ch) && (attrib & CLA_6G_B1_PASSIVE)) /* band1 passive */ - || (rtw_is_6g_band2(ch) && (attrib & CLA_6G_B2_PASSIVE)) /* band2 passive */ - || (rtw_is_6g_band3(ch) && (attrib & CLA_6G_B3_PASSIVE)) /* band3 passive */ - || (rtw_is_6g_band4(ch) && (attrib & CLA_6G_B4_PASSIVE)) /* band4 passive */ +void rtw_rfctl_chset_apply_regulatory(struct dvobj_priv *dvobj, bool req_lock) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + struct rtw_chset *chset = &rfctl->chset; + u8 d_band_bmp = 0; + u8 d_flags = rfctl->dis_ch_flags; + RT_CHANNEL_INFO *chinfo; + int i; + + d_band_bmp |= !RFCTL_REG_EN_11A(rfctl) ? BAND_CAP_5G : 0; + + /* reset flags of all channels */ + for (i = 0; i < chset->chs_len; i++) { + chinfo = &chset->chs[i]; + if ((band_to_band_cap(chinfo->band) & d_band_bmp) + || ((chinfo->band == BAND_ON_24G || chinfo->band == BAND_ON_5G) + && rtw_rfctl_is_excl_chs(rfctl, chinfo->ChannelNum) == true) + #if CONFIG_IEEE80211_BAND_6GHZ + || (chinfo->band == BAND_ON_6G + && rtw_rfctl_is_excl_chs_6g(rfctl, chinfo->ChannelNum) == true) + #endif ) - channel_set[chanset_size].flags |= RTW_CHF_NO_IR; - - chanset_size++; + chinfo->flags = RTW_CHF_DIS; + else + chinfo->flags = 0; } -exit: - *ch_num = chanset_size; + rtw_rfctl_chset_apply_regd_reqs(rfctl, d_flags, req_lock); - return chanset_size; -} -#endif /* CONFIG_IEEE80211_BAND_6GHZ */ + chset->enable_ch_num = 0; + for (i = 0; i < chset->chs_len; i++) { + chinfo = &chset->chs[i]; -static u8 init_channel_set_from_rtk_priv(_adapter *adapter, RT_CHANNEL_INFO *channel_set) -{ - u8 chanset_size = 0; -#ifdef CONFIG_DFS_MASTER - int i; -#endif + chinfo->reg_no_ir = !!(chinfo->flags & RTW_CHF_NO_IR); - _rtw_memset(channel_set, 0, sizeof(RT_CHANNEL_INFO) * MAX_CHANNEL_NUM); - - init_channel_set_from_rtk_priv_2g_5g(adapter, channel_set, &chanset_size); - -#if CONFIG_IEEE80211_BAND_6GHZ - init_channel_set_from_rtk_priv_6g(adapter, channel_set, &chanset_size); -#endif - -#ifdef CONFIG_DFS_MASTER - for (i = 0; i < chanset_size; i++) - channel_set[i].non_ocp_end_time = rtw_get_current_time(); -#endif - - if (chanset_size) - RTW_INFO(FUNC_ADPT_FMT" ch num:%d\n", FUNC_ADPT_ARG(adapter), chanset_size); - else - RTW_WARN(FUNC_ADPT_FMT" final chset has no channel\n", FUNC_ADPT_ARG(adapter)); - - return chanset_size; -} - -u8 init_channel_set(_adapter *adapter) -{ - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - - if (rfctl->regd_src == REGD_SRC_RTK_PRIV) - rfctl->max_chan_nums = init_channel_set_from_rtk_priv(adapter, rfctl->channel_set); -#ifdef CONFIG_REGD_SRC_FROM_OS - else if (rfctl->regd_src == REGD_SRC_OS) - rfctl->max_chan_nums = rtw_os_init_channel_set(adapter, rfctl->channel_set); -#endif - else { - rfctl->max_chan_nums = 0; - rtw_warn_on(1); - } - - return rfctl->max_chan_nums; -} - -bool rtw_chset_is_dfs_range(struct _RT_CHANNEL_INFO *chset, u32 hi, u32 lo) -{ - u8 hi_ch = rtw_freq2ch(hi); - u8 lo_ch = rtw_freq2ch(lo); - int i; - - for (i = 0; i < MAX_CHANNEL_NUM && chset[i].ChannelNum != 0; i++){ - if (!(chset[i].flags & RTW_CHF_DFS)) + if (chinfo->flags & RTW_CHF_DIS) continue; - if (hi_ch > chset[i].ChannelNum && lo_ch < chset[i].ChannelNum) - return 1; + chset->enable_ch_num++; + + if (chinfo->flags & RTW_CHF_NO_IR && CH_IS_BCN_HINT(chinfo) + && rtw_rfctl_reg_allow_beacon_hint(rfctl) + && rtw_chinfo_allow_beacon_hint(chinfo)) + chinfo->flags &= ~RTW_CHF_NO_IR; + + /* logs for channel with NO_IR but can't be cleared through beacon hint */ + if (chinfo->flags & RTW_CHF_NO_IR) { + if (!rtw_rfctl_reg_allow_beacon_hint(rfctl) || !rtw_chinfo_allow_beacon_hint(chinfo)) + RTW_INFO("band:%s ch%u is NO_IR%s while beacon hint not allowed\n" + , band_str(chinfo->band), chinfo->ChannelNum, chinfo->flags & RTW_CHF_DFS ? " DFS" : ""); + } } - return 0; + if (chset->enable_ch_num) + RTW_INFO("%s ch num:%d\n", __func__, chset->enable_ch_num); + else + RTW_WARN("%s final chset has no channel\n", __func__); } -bool rtw_chset_is_dfs_ch(struct _RT_CHANNEL_INFO *chset, u8 ch) +/* domain status specific beacon hint rules */ +#ifndef RTW_CHPLAN_BEACON_HINT_SPECIFIC_COUNTRY +#define RTW_CHPLAN_BEACON_HINT_SPECIFIC_COUNTRY 0 +#endif + +bool rtw_rfctl_reg_allow_beacon_hint(struct rf_ctl_t *rfctl) { - int i; - - for (i = 0; i < MAX_CHANNEL_NUM && chset[i].ChannelNum != 0; i++){ - if (chset[i].ChannelNum == ch) - return chset[i].flags & RTW_CHF_DFS ? 1 : 0; - } - - return 0; -} - -bool rtw_chset_is_dfs_chbw(struct _RT_CHANNEL_INFO *chset, u8 ch, u8 bw, u8 offset) -{ - u32 hi, lo; - - if (!rtw_chbw_to_freq_range(ch, bw, offset, &hi, &lo)) - return 0; - - return rtw_chset_is_dfs_range(chset, hi, lo); + return RTW_CHPLAN_BEACON_HINT_SPECIFIC_COUNTRY || RFCTL_REG_WORLDWIDE(rfctl) + || RFCTL_REG_ALPHA2_UNSPEC(rfctl) || RFCTL_REG_INTERSECTED(rfctl); } /* channel specific beacon hint rules */ @@ -860,29 +364,32 @@ bool rtw_chset_is_dfs_chbw(struct _RT_CHANNEL_INFO *chset, u8 ch, u8 bw, u8 offs bool rtw_chinfo_allow_beacon_hint(struct _RT_CHANNEL_INFO *chinfo) { - return (RTW_CHPLAN_BEACON_HINT_ON_2G_CH_1_11 || !(chinfo->band == BAND_ON_2_4G && chinfo->ChannelNum <= 11)) + return (RTW_CHPLAN_BEACON_HINT_ON_2G_CH_1_11 || !(chinfo->band == BAND_ON_24G && chinfo->ChannelNum <= 11)) && (RTW_CHPLAN_BEACON_HINT_ON_DFS_CH || !(chinfo->flags & RTW_CHF_DFS)); } -u8 rtw_process_beacon_hint(_adapter *adapter, WLAN_BSSID_EX *bss) +u8 rtw_process_beacon_hint(struct rf_ctl_t *rfctl, WLAN_BSSID_EX *bss) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; - u8 ch = bss->Configuration.DSConfig; - int chset_idx = rtw_chset_search_ch(chset, ch); - RT_CHANNEL_INFO *chinfo; + struct rtw_chset *chset = &rfctl->chset; + enum band_type band = BSS_EX_OP_BAND(bss); + u8 ch = BSS_EX_OP_CH(bss); + RT_CHANNEL_INFO *chinfo = rtw_chset_get_chinfo_by_bch(chset, band, ch, false); u8 act_cnt = 0; - if (chset_idx < 0) + if (!chinfo) goto exit; - chinfo = &chset[chset_idx]; + if (rfctl->regd_src == REGD_SRC_RTK_PRIV) { + chinfo->bcn_hint_end_time = rtw_get_current_time() + rtw_ms_to_systime(rfctl->bcn_hint_valid_ms); + if (chinfo->bcn_hint_end_time == RTW_BCN_HINT_STOPPED) + chinfo->bcn_hint_end_time++; + } if ((chinfo->flags & RTW_CHF_NO_IR) && rtw_rfctl_reg_allow_beacon_hint(rfctl) && rtw_chinfo_allow_beacon_hint(chinfo) ) { - RTW_INFO("%s: change band:%s ch:%d to active\n", __func__, band_str(chinfo->band), ch); + RTW_INFO("%s: change band:%s ch:%d to active\n", __func__, band_str(band), ch); chinfo->flags &= ~RTW_CHF_NO_IR; act_cnt++; } @@ -891,6 +398,61 @@ exit: return act_cnt; } +/* called at cmd handler */ +void rtw_beacon_hint_ch_change_notifier(struct rf_ctl_t *rfctl) +{ + _adapter *adapter = dvobj_get_primary_adapter(rfctl_to_dvobj(rfctl)); + #ifdef CONFIG_IOCTL_CFG80211 + struct get_chplan_resp *chplan; + + if (rtw_get_chplan_cmd(adapter, RTW_CMDF_DIRECTLY, &chplan) != _SUCCESS + || rtw_regd_change_complete_async(adapter_to_wiphy(adapter), chplan) != _SUCCESS) + rtw_warn_on(1); + #endif + + op_class_pref_apply_regulatory(rfctl, REG_BEACON_HINT); + rtw_nlrtw_reg_beacon_hint_event(adapter); +} + +static void rtw_beacon_hint_expire(struct rf_ctl_t *rfctl) +{ + struct dvobj_priv *dvobj; + struct rtw_chset *chset; + RT_CHANNEL_INFO *chinfo; + int i; + bool deactivate = false; + + if (rfctl->regd_src != REGD_SRC_RTK_PRIV) + return; + + dvobj = rfctl_to_dvobj(rfctl); + chset = &rfctl->chset; + + /* don't expire when device is linking/linked/beaconing */ + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) + if (HWBAND_STA_LG_NUM(dvobj, i) || HWBAND_STA_LD_NUM(dvobj, i) || HWBAND_WPS_NUM(dvobj, i) + || HWBAND_AP_NUM(dvobj, i) || HWBAND_MESH_NUM(dvobj, i)|| HWBAND_ADHOC_NUM(dvobj, i)) + break; + if (i < HW_BAND_MAX) + return; + + for (i = 0; i < chset->chs_len; i++) { + chinfo = &chset->chs[i]; + if (!CH_IS_BCN_HINT(chinfo) && !CH_IS_BCN_HINT_STOPPED(chinfo)) { + chinfo->bcn_hint_end_time = RTW_BCN_HINT_STOPPED; + if (chinfo->reg_no_ir && !(chinfo->flags & RTW_CHF_NO_IR)) { + RTW_INFO("%s: change band:%s ch:%d to passive\n", __func__ + , band_str(chinfo->band), chinfo->ChannelNum); + chinfo->flags |= RTW_CHF_NO_IR; + deactivate = true; + } + } + } + + if (deactivate) + rtw_beacon_hint_ch_change_notifier(rfctl); +} + const char *const _regd_inr_str[] = { [RTW_REGD_SET_BY_INIT] = "INIT", [RTW_REGD_SET_BY_USER] = "USER", @@ -915,16 +477,18 @@ const char *const _regd_str[] = { }; const char *const _rtw_edcca_mode_str[] = { - [RTW_EDCCA_NORMAL] = "NORMAL", - [RTW_EDCCA_ADAPT] = "ADAPT", + [RTW_EDCCA_NORM] = "NORMAL", [RTW_EDCCA_CS] = "CS", + [RTW_EDCCA_ADAPT] = "ADAPT", + [RTW_EDCCA_CBP] = "CBP", }; -const char *_rtw_dfs_regd_str[] = { +const char *const _rtw_dfs_regd_str[] = { [RTW_DFS_REGD_NONE] = "NONE", [RTW_DFS_REGD_FCC] = "FCC", [RTW_DFS_REGD_MKK] = "MKK", [RTW_DFS_REGD_ETSI] = "ETSI", + [RTW_DFS_REGD_KCC] = "KCC", }; const char *const _txpwr_lmt_str[] = { @@ -941,6 +505,7 @@ const char *const _txpwr_lmt_str[] = { [TXPWR_LMT_MEXICO] = "MEXICO", [TXPWR_LMT_CN] = "CN", [TXPWR_LMT_QATAR] = "QATAR", + [TXPWR_LMT_UK] = "UK", [TXPWR_LMT_WW] = "WW", [TXPWR_LMT_NUM] = NULL, }; @@ -962,15 +527,26 @@ const REGULATION_TXPWR_LMT _txpwr_lmt_alternate[] = { [TXPWR_LMT_MEXICO] = TXPWR_LMT_FCC, [TXPWR_LMT_CN] = TXPWR_LMT_ETSI, [TXPWR_LMT_QATAR] = TXPWR_LMT_ETSI, + [TXPWR_LMT_UK] = TXPWR_LMT_ETSI, }; -const enum rtw_edcca_mode _rtw_regd_to_edcca_mode[RTW_REGD_NUM] = { - [RTW_REGD_NA] = RTW_EDCCA_MODE_NUM, - [RTW_REGD_MKK] = RTW_EDCCA_CS, - [RTW_REGD_ETSI] = RTW_EDCCA_ADAPT, - [RTW_REGD_WW] = RTW_EDCCA_ADAPT, +const enum rtw_edcca_mode_t _rtw_regd_to_edcca_mode[RTW_REGD_NUM] = { + [RTW_REGD_NA] = RTW_EDCCA_MODE_NUM, + [RTW_REGD_MKK] = RTW_EDCCA_CS, + [RTW_REGD_ETSI] = RTW_EDCCA_ADAPT, + [RTW_REGD_WW] = RTW_EDCCA_ADAPT, }; +#if CONFIG_IEEE80211_BAND_6GHZ +const enum rtw_edcca_mode_t _rtw_regd_to_edcca_mode_6g[RTW_REGD_NUM] = { + [RTW_REGD_NA] = RTW_EDCCA_MODE_NUM, + [RTW_REGD_FCC] = RTW_EDCCA_CBP, + [RTW_REGD_MKK] = RTW_EDCCA_CS, + [RTW_REGD_ETSI] = RTW_EDCCA_ADAPT, + [RTW_REGD_WW] = RTW_EDCCA_CBP, +}; +#endif + const REGULATION_TXPWR_LMT _rtw_regd_to_txpwr_lmt[] = { [RTW_REGD_NA] = TXPWR_LMT_NUM, [RTW_REGD_FCC] = TXPWR_LMT_FCC, @@ -985,134 +561,191 @@ const REGULATION_TXPWR_LMT _rtw_regd_to_txpwr_lmt[] = { [RTW_REGD_WW] = TXPWR_LMT_WW, }; -char *rtw_get_edcca_modes_str(char *buf, u8 modes[]) +char *rtw_get_regd_inr_bmp_str(char *buf, u8 bmp) +{ + char *pos = buf; + int i; + + for (i = 0; i < RTW_REGD_SET_BY_NUM; i++) { + if (!(bmp & BIT(i))) + continue; + pos += snprintf(pos, REGD_INR_BMP_STR_LEN - (pos - buf), "%s%s" + , pos == buf ? "" : " ", regd_inr_str(i)); + if (pos >= buf + REGD_INR_BMP_STR_LEN - 1) + goto exit; + } + if (pos == buf) + buf[0] = '\0'; + +exit: + return buf; +} + +char *rtw_get_edcca_mode_of_bands_str(char *buf, u8 mode_of_band[]) { #define EDCCA_MODE_SEQ_COMPARE(result, operand) (result == RTW_EDCCA_MODE_NUM ? operand : (operand == RTW_EDCCA_MODE_NUM ? result : (result != operand ? -1 : result))) int mode = RTW_EDCCA_MODE_NUM; - int cnt = 0; + char *pos = buf; - mode = EDCCA_MODE_SEQ_COMPARE(mode, modes[BAND_ON_2_4G]); + mode = EDCCA_MODE_SEQ_COMPARE(mode, mode_of_band[BAND_ON_24G]); #if CONFIG_IEEE80211_BAND_5GHZ - mode = EDCCA_MODE_SEQ_COMPARE(mode, modes[BAND_ON_5G]); + mode = EDCCA_MODE_SEQ_COMPARE(mode, mode_of_band[BAND_ON_5G]); #endif #if CONFIG_IEEE80211_BAND_6GHZ - mode = EDCCA_MODE_SEQ_COMPARE(mode, modes[BAND_ON_6G]); + mode = EDCCA_MODE_SEQ_COMPARE(mode, mode_of_band[BAND_ON_6G]); #endif if (mode != -1) { /* all available values are the same */ - cnt += snprintf(buf + cnt, EDCCA_MODES_STR_LEN - cnt - 1, "%s(%u)", rtw_edcca_mode_str(mode), mode); - if (cnt >= EDCCA_MODES_STR_LEN - 1) + pos += snprintf(pos, EDCCA_MODE_OF_BANDS_STR_LEN - (pos - buf), "%s(%u)", rtw_edcca_mode_str(mode), mode); + if (pos >= buf + EDCCA_MODE_OF_BANDS_STR_LEN - 1) goto exit; } else { - cnt += snprintf(buf + cnt, EDCCA_MODES_STR_LEN - cnt - 1, "%s(%u) ", rtw_edcca_mode_str(modes[BAND_ON_2_4G]), modes[BAND_ON_2_4G]); - if (cnt >= EDCCA_MODES_STR_LEN - 1) + pos += snprintf(pos, EDCCA_MODE_OF_BANDS_STR_LEN - (pos - buf), "%s(%u)", rtw_edcca_mode_str(mode_of_band[BAND_ON_24G]), mode_of_band[BAND_ON_24G]); + if (pos >= buf + EDCCA_MODE_OF_BANDS_STR_LEN - 1) goto exit; #if CONFIG_IEEE80211_BAND_5GHZ - cnt += snprintf(buf + cnt, EDCCA_MODES_STR_LEN - cnt - 1, "%s(%u) ", rtw_edcca_mode_str(modes[BAND_ON_5G]), modes[BAND_ON_5G]); - if (cnt >= EDCCA_MODES_STR_LEN - 1) + pos += snprintf(pos, EDCCA_MODE_OF_BANDS_STR_LEN - (pos - buf), " %s(%u)", rtw_edcca_mode_str(mode_of_band[BAND_ON_5G]), mode_of_band[BAND_ON_5G]); + if (pos >= buf + EDCCA_MODE_OF_BANDS_STR_LEN - 1) goto exit; #endif #if CONFIG_IEEE80211_BAND_6GHZ - cnt += snprintf(buf + cnt, EDCCA_MODES_STR_LEN - cnt - 1, "%s(%u) ", rtw_edcca_mode_str(modes[BAND_ON_6G]), modes[BAND_ON_6G]); - if (cnt >= EDCCA_MODES_STR_LEN - 1) + pos += snprintf(pos, EDCCA_MODE_OF_BANDS_STR_LEN - (pos - buf), " %s(%u)", rtw_edcca_mode_str(mode_of_band[BAND_ON_6G]), mode_of_band[BAND_ON_6G]); + if (pos >= buf + EDCCA_MODE_OF_BANDS_STR_LEN - 1) goto exit; #endif - buf[cnt - 1] = 0; } exit: return buf; } -void rtw_edcca_mode_update(struct dvobj_priv *dvobj) +static enum rtw_edcca_mode_t rtw_edcca_mode_get_strictest(enum rtw_edcca_mode_t a, enum rtw_edcca_mode_t b) +{ + if (a >= RTW_EDCCA_MODE_NUM) + return b < RTW_EDCCA_MODE_NUM ? b : RTW_EDCCA_MODE_NUM; + if (b >= RTW_EDCCA_MODE_NUM) + return a < RTW_EDCCA_MODE_NUM ? a : RTW_EDCCA_MODE_NUM; + return rtw_max(a,b); +} + +static void rtw_edcca_mode_update_by_regd_reqs(struct dvobj_priv *dvobj, bool req_lock) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + struct regd_req_t *req; + struct country_chplan *chplan; + _list *cur, *head; + u8 mode[BAND_MAX]; + u8 band, tmp_mode; + char buf[EDCCA_MODE_OF_BANDS_STR_LEN]; + + for (band = 0; band < BAND_MAX; band++) + mode[band] = RTW_EDCCA_MODE_NUM; + + if (req_lock) + _rtw_mutex_lock_interruptible(&rfctl->regd_req_mutex); + + head = &rfctl->regd_req_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + chplan = &req->chplan; + cur = get_next(cur); + if (!req->applied) + continue; + + tmp_mode = chplan->edcca_mode_2g_override != RTW_EDCCA_DEF ? chplan->edcca_mode_2g_override : + rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_2g(chplan->domain_code)); + mode[BAND_ON_24G] = rtw_edcca_mode_get_strictest(mode[BAND_ON_24G], tmp_mode); + + #if CONFIG_IEEE80211_BAND_5GHZ + tmp_mode = chplan->edcca_mode_5g_override != RTW_EDCCA_DEF ? chplan->edcca_mode_5g_override : + rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_5g(chplan->domain_code)); + mode[BAND_ON_5G] = rtw_edcca_mode_get_strictest(mode[BAND_ON_5G], tmp_mode); + #endif + + #if CONFIG_IEEE80211_BAND_6GHZ + tmp_mode = chplan->edcca_mode_6g_override != RTW_EDCCA_DEF ? chplan->edcca_mode_6g_override : + rtw_regd_to_edcca_mode_6g(rtw_chplan_get_default_regd_6g(chplan->domain_code_6g)); + mode[BAND_ON_6G] = rtw_edcca_mode_get_strictest(mode[BAND_ON_6G], tmp_mode); + #endif + } + + if (req_lock) + _rtw_mutex_unlock(&rfctl->regd_req_mutex); + + rfctl->edcca_mode_2g = mode[BAND_ON_24G]; + #if CONFIG_IEEE80211_BAND_5GHZ + rfctl->edcca_mode_5g = mode[BAND_ON_5G]; + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + rfctl->edcca_mode_6g = mode[BAND_ON_6G]; + #endif + + RTW_PRINT("update edcca_mode:%s\n" + , rtw_get_edcca_mode_of_bands_str(buf, mode) + ); +} + +void rtw_edcca_mode_update(struct dvobj_priv *dvobj, bool req_lock) { struct registry_priv *regsty = dvobj_to_regsty(dvobj); struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); - if (regsty->adaptivity_en == 0) { + if (regsty->edcca_mode_sel == RTW_EDCCA_NORM) { /* force disable */ - rfctl->edcca_mode_2g = RTW_EDCCA_NORMAL; + rfctl->edcca_mode_2g = RTW_EDCCA_NORM; #if CONFIG_IEEE80211_BAND_5GHZ - rfctl->edcca_mode_5g = RTW_EDCCA_NORMAL; + rfctl->edcca_mode_5g = RTW_EDCCA_NORM; #endif #if CONFIG_IEEE80211_BAND_6GHZ - rfctl->edcca_mode_6g = RTW_EDCCA_NORMAL; + rfctl->edcca_mode_6g = RTW_EDCCA_NORM; #endif - } else if (regsty->adaptivity_en == 1) { - /* force enable */ - if (!regsty->adaptivity_mode) { - /* adaptivity */ - rfctl->edcca_mode_2g = RTW_EDCCA_ADAPT; - #if CONFIG_IEEE80211_BAND_5GHZ - rfctl->edcca_mode_5g = RTW_EDCCA_ADAPT; - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - rfctl->edcca_mode_6g = RTW_EDCCA_ADAPT; - #endif - } else { - /* carrier sense */ - rfctl->edcca_mode_2g = RTW_EDCCA_CS; - #if CONFIG_IEEE80211_BAND_5GHZ - rfctl->edcca_mode_5g = RTW_EDCCA_CS; - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - rfctl->edcca_mode_6g = RTW_EDCCA_CS; - #endif - } + } else if (regsty->edcca_mode_sel == RTW_EDCCA_CS) { + /* carrier sense */ + rfctl->edcca_mode_2g = RTW_EDCCA_CS; + #if CONFIG_IEEE80211_BAND_5GHZ + rfctl->edcca_mode_5g = RTW_EDCCA_CS; + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + rfctl->edcca_mode_6g = RTW_EDCCA_CS; + #endif + + } else if (regsty->edcca_mode_sel == RTW_EDCCA_ADAPT) { + /* adaptivity */ + rfctl->edcca_mode_2g = RTW_EDCCA_ADAPT; + #if CONFIG_IEEE80211_BAND_5GHZ + rfctl->edcca_mode_5g = RTW_EDCCA_ADAPT; + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + rfctl->edcca_mode_6g = RTW_EDCCA_ADAPT; + #endif + + } else if (regsty->edcca_mode_sel == RTW_EDCCA_CBP) { + /* adaptivity */ + rfctl->edcca_mode_2g = RTW_EDCCA_NORM; + #if CONFIG_IEEE80211_BAND_5GHZ + rfctl->edcca_mode_5g = RTW_EDCCA_NORM; + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + rfctl->edcca_mode_6g = RTW_EDCCA_CBP; + #endif } else { - u8 modes[BAND_MAX]; - char buf[EDCCA_MODES_STR_LEN]; - /* by regulatory setting */ - #ifdef CONFIG_REGD_SRC_FROM_OS - if (rfctl->regd_src == REGD_SRC_OS - && rfctl->ChannelPlan == RTW_CHPLAN_UNSPECIFIED - ) { - modes[BAND_ON_2_4G] = rfctl->edcca_mode_2g = RTW_EDCCA_ADAPT; - #if CONFIG_IEEE80211_BAND_5GHZ - modes[BAND_ON_5G] = rfctl->edcca_mode_5g = RTW_EDCCA_ADAPT; - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - modes[BAND_ON_6G] = rfctl->edcca_mode_6g = RTW_EDCCA_ADAPT; - #endif - RTW_PRINT("mapping %scountry:%c%c to edcca_mode:%s\n" - , RFCTL_REG_WORLDWIDE(rfctl) ? "" : "unsupported " - , rfctl->alpha2[0] - , rfctl->alpha2[1] - , rtw_get_edcca_modes_str(buf, modes) - ); - } else - #endif - { - modes[BAND_ON_2_4G] = rfctl->edcca_mode_2g = - rfctl->edcca_mode_2g_override != RTW_EDCCA_DEF ? rfctl->edcca_mode_2g_override : - rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_2g(rfctl->ChannelPlan)); - #if CONFIG_IEEE80211_BAND_5GHZ - modes[BAND_ON_5G] = rfctl->edcca_mode_5g = - rfctl->edcca_mode_5g_override != RTW_EDCCA_DEF ? rfctl->edcca_mode_5g_override : - rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_5g(rfctl->ChannelPlan)); - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - modes[BAND_ON_6G] = rfctl->edcca_mode_6g = - rfctl->edcca_mode_6g_override != RTW_EDCCA_DEF ? rfctl->edcca_mode_6g_override : - rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_6g(rfctl->chplan_6g)); - #endif - RTW_PRINT("update edcca_mode:%s\n" - , rtw_get_edcca_modes_str(buf, modes) - ); - } + rtw_edcca_mode_update_by_regd_reqs(dvobj, req_lock); } + + rtw_edcca_hal_update(dvobj); } -u8 rtw_get_edcca_mode(struct dvobj_priv *dvobj, BAND_TYPE band) +u8 rtw_get_edcca_mode(struct dvobj_priv *dvobj, enum band_type band) { struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); - u8 edcca_mode = RTW_EDCCA_NORMAL; + u8 edcca_mode = RTW_EDCCA_NORM; - if (band == BAND_ON_2_4G) + if (band == BAND_ON_24G) edcca_mode = rfctl->edcca_mode_2g; #if CONFIG_IEEE80211_BAND_5GHZ else if (band == BAND_ON_5G) @@ -1126,1823 +759,328 @@ u8 rtw_get_edcca_mode(struct dvobj_priv *dvobj, BAND_TYPE band) return edcca_mode; } -char *rtw_get_txpwr_lmt_names_str(char *buf, const char *names[], u8 unknown_bmp) +#if CONFIG_TXPWR_LIMIT +char *rtw_get_txpwr_lmt_name_of_bands_str(char *buf, const char *name_of_band[], u8 unknown_bmp) { #define NAME_DIFF ((void *)1) /* input comes form organized database, string with same content will not have different pointer */ -#define NAME_SEQ_COMPARE(result, operand) (result == NULL ? operand : (operand == NULL ? result : (result != operand ? NAME_DIFF : result))) +#define NAME_SEQ_COMPARE(result, operand) ( \ + (result) == NULL ? (operand) : \ + (operand) == NULL ? (result) : \ + (result) != (operand) ? NAME_DIFF : (result) \ + ) + +#define BOOL_TO_S8(b) ((b) ? 1 : 0) +#define BOOL_S_NONE (-1) +#define BOOL_S_DIFF (-2) +#define BOOL_S_SEQ_COMPARE(result, operand) ( \ + (result) == BOOL_S_NONE ? BOOL_TO_S8(operand) : \ + BOOL_TO_S8(operand) == BOOL_S_NONE ? (result) : \ + (result) != BOOL_TO_S8(operand) ? BOOL_S_DIFF : (result) \ + ) const char *name = NULL; - int cnt = 0; + s8 unknown = BOOL_S_NONE; + char *pos = buf; - name = NAME_SEQ_COMPARE(name, names[BAND_ON_2_4G]); + name = NAME_SEQ_COMPARE(name, name_of_band[BAND_ON_24G]); + unknown = BOOL_S_SEQ_COMPARE(unknown, !!(unknown_bmp & BIT(BAND_ON_24G))); #if CONFIG_IEEE80211_BAND_5GHZ - name = NAME_SEQ_COMPARE(name, names[BAND_ON_5G]); + name = NAME_SEQ_COMPARE(name, name_of_band[BAND_ON_5G]); + unknown = BOOL_S_SEQ_COMPARE(unknown, !!(unknown_bmp & BIT(BAND_ON_5G))); #endif #if CONFIG_IEEE80211_BAND_6GHZ - name = NAME_SEQ_COMPARE(name, names[BAND_ON_6G]); + name = NAME_SEQ_COMPARE(name, name_of_band[BAND_ON_6G]); + unknown = BOOL_S_SEQ_COMPARE(unknown, !!(unknown_bmp & BIT(BAND_ON_6G))); #endif - if (name != NAME_DIFF) { /* all available values are the same */ - cnt += snprintf(buf + cnt, TXPWR_NAMES_STR_LEN - cnt - 1, "%s%s", (unknown_bmp & BIT(BAND_ON_2_4G)) ? "?" : "", name); - if (cnt >= TXPWR_NAMES_STR_LEN - 1) + if (name != NAME_DIFF && unknown != BOOL_S_DIFF) { /* all available values are the same */ + pos += snprintf(pos, TXPWR_NAME_OF_BANDS_STR_LEN - (pos - buf), "%s%s", (unknown_bmp & BIT(BAND_ON_24G)) ? "?" : "", name); + if (pos >= buf + TXPWR_NAME_OF_BANDS_STR_LEN - 1) goto exit; } else { - cnt += snprintf(buf + cnt, TXPWR_NAMES_STR_LEN - cnt - 1, "%s%s ", (unknown_bmp & BIT(BAND_ON_2_4G)) ? "?" : "", names[BAND_ON_2_4G]); - if (cnt >= TXPWR_NAMES_STR_LEN - 1) + pos += snprintf(pos, TXPWR_NAME_OF_BANDS_STR_LEN - (pos - buf), "%s%s", (unknown_bmp & BIT(BAND_ON_24G)) ? "?" : "", name_of_band[BAND_ON_24G]); + if (pos >= buf + TXPWR_NAME_OF_BANDS_STR_LEN - 1) goto exit; #if CONFIG_IEEE80211_BAND_5GHZ - cnt += snprintf(buf + cnt, TXPWR_NAMES_STR_LEN - cnt - 1, "%s%s ", (unknown_bmp & BIT(BAND_ON_5G)) ? "?" : "", names[BAND_ON_5G]); - if (cnt >= TXPWR_NAMES_STR_LEN - 1) + pos += snprintf(pos, TXPWR_NAME_OF_BANDS_STR_LEN - (pos - buf), " %s%s", (unknown_bmp & BIT(BAND_ON_5G)) ? "?" : "", name_of_band[BAND_ON_5G]); + if (pos >= buf + TXPWR_NAME_OF_BANDS_STR_LEN - 1) goto exit; #endif #if CONFIG_IEEE80211_BAND_6GHZ - cnt += snprintf(buf + cnt, TXPWR_NAMES_STR_LEN - cnt - 1, "%s%s ", (unknown_bmp & BIT(BAND_ON_6G)) ? "?" : "", names[BAND_ON_6G]); - if (cnt >= TXPWR_NAMES_STR_LEN - 1) + pos += snprintf(pos, TXPWR_NAME_OF_BANDS_STR_LEN - (pos - buf), " %s%s", (unknown_bmp & BIT(BAND_ON_6G)) ? "?" : "", name_of_band[BAND_ON_6G]); + if (pos >= buf + TXPWR_NAME_OF_BANDS_STR_LEN - 1) goto exit; #endif - buf[cnt - 1] = 0; } exit: return buf; } -#if CONFIG_IEEE80211_BAND_5GHZ -#define COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_5G_OVERRIDE(_val) , .edcca_mode_5g_override = (_val) -#else -#define COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_5G_OVERRIDE(_val) +static void rtw_txpwr_apply_regd_req_reg_exc(struct rf_ctl_t *rfctl, struct regd_req_t *req + , const char *name_of_band[], u8 *unknown_bmp) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct country_chplan *chplan = &req->chplan; + enum txpwr_lmt_reg_exc_match exc; + const char *name = NULL; + + exc = rtw_txpwr_hal_lmt_reg_exc_search(dvobj, chplan->alpha2, chplan->domain_code, &name); + if (exc) { + char buf[TXPWR_NAME_OF_BANDS_STR_LEN]; + u8 band; + + for (band = 0; band < BAND_MAX; band++) { + if (!(*unknown_bmp & BIT(band))) + continue; + if (exc == TXPWR_LMT_REG_EXC_MATCH_DOMAIN && band != BAND_ON_24G && band != BAND_ON_5G) + continue; + name_of_band[band] = name; + if (strcmp(name, txpwr_lmt_str(TXPWR_LMT_NONE)) == 0 + || strcmp(name, txpwr_lmt_str(TXPWR_LMT_WW)) == 0 + || rtw_txpwr_hal_lmt_reg_search(dvobj, band, name_of_band[band])) + *unknown_bmp &= ~BIT(band); + } + + if (exc == TXPWR_LMT_REG_EXC_MATCH_COUNTRY) { + RTW_PRINT("exception country:"ALPHA2_FMT" applied, txpwr_lmt:%s\n" + , ALPHA2_ARG(chplan->alpha2), rtw_get_txpwr_lmt_name_of_bands_str(buf, name_of_band, *unknown_bmp)); + } else { + RTW_PRINT("exception domain:0x%02x applied, txpwr_lmt:%s\n" + , chplan->domain_code, rtw_get_txpwr_lmt_name_of_bands_str(buf, name_of_band, *unknown_bmp)); + } + } +} + +#ifdef CONFIG_REGD_SRC_FROM_OS +static void rtw_txpwr_apply_regd_req_from_os(struct rf_ctl_t *rfctl, struct regd_req_t *req + , const char *req_alpha2_str, const char *name_of_band[], u8 *unknown_bmp) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct country_chplan *chplan = &req->chplan; + + if (rfctl->regd_src == REGD_SRC_OS) { + const char *name = NULL; + char buf[TXPWR_NAME_OF_BANDS_STR_LEN]; + u8 band; + + name = IS_ALPHA2_WORLDWIDE(req_alpha2_str) ? txpwr_lmt_str(TXPWR_LMT_WW) : req_alpha2_str; + + for (band = 0; band < BAND_MAX; band++) { + if (!(*unknown_bmp & BIT(band))) + continue; + name_of_band[band] = name; + if (strcmp(name, txpwr_lmt_str(TXPWR_LMT_WW)) == 0 + || rtw_txpwr_hal_lmt_reg_search(dvobj, band, name_of_band[band])) + *unknown_bmp &= ~BIT(band); + } + + RTW_PRINT("os country:"ALPHA2_FMT" applied, txpwr_lmt:%s\n" + , ALPHA2_ARG(req_alpha2_str), rtw_get_txpwr_lmt_name_of_bands_str(buf, name_of_band, *unknown_bmp)); + + if (*unknown_bmp && chplan->domain_code == RTW_CHPLAN_UNSPECIFIED) { + for (band = 0; band < BAND_MAX; band++) { + if (!(*unknown_bmp & BIT(band))) + continue; + name_of_band[band] = txpwr_lmt_str(TXPWR_LMT_WW); + *unknown_bmp &= ~BIT(band); + } + + RTW_PRINT("unsupported os country:"ALPHA2_FMT" applied, txpwr_lmt:%s\n" + , ALPHA2_ARG(req_alpha2_str), rtw_get_txpwr_lmt_name_of_bands_str(buf, name_of_band, *unknown_bmp)); + } + } +} #endif -#if CONFIG_IEEE80211_BAND_6GHZ -#define COUNTRY_CHPLAN_ASSIGN_CHPLAN_6G(_val) , .chplan_6g = (_val) -#define COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_6G_OVERRIDE(_val) , .edcca_mode_6g_override = (_val) -#else -#define COUNTRY_CHPLAN_ASSIGN_CHPLAN_6G(_val) -#define COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_6G_OVERRIDE(_val) -#endif +static void rtw_txpwr_apply_regd_req_default(struct rf_ctl_t *rfctl, struct regd_req_t *req + , const char *name_of_band[], u8 *unknown_bmp) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct country_chplan *chplan = &req->chplan; + u8 txpwr_lmt[BAND_MAX]; + char buf[TXPWR_NAME_OF_BANDS_STR_LEN]; + u8 band; + bool altenate_applied = 0; -#if defined(CONFIG_80211AC_VHT) || defined(CONFIG_80211AX_HE) -#define COUNTRY_CHPLAN_ASSIGN_PROTO_EN(_val) , .proto_en = (_val) -#else -#define COUNTRY_CHPLAN_ASSIGN_PROTO_EN(_val) -#endif + for (band = 0; band < BAND_MAX; band++) + txpwr_lmt[band] = TXPWR_LMT_NONE; -#define COUNTRY_CHPLAN_ENT(_alpha2, _chplan, _chplan_6g, _txpwr_lmt_override, _en_11ax, _en_11ac) \ - {.alpha2 = (_alpha2), .chplan = (_chplan) \ - COUNTRY_CHPLAN_ASSIGN_CHPLAN_6G(_chplan_6g) \ - , .edcca_mode_2g_override = RTW_EDCCA_DEF \ - COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_5G_OVERRIDE(RTW_EDCCA_DEF) \ - COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_6G_OVERRIDE(RTW_EDCCA_DEF) \ - , .txpwr_lmt_override = TXPWR_LMT_##_txpwr_lmt_override \ - COUNTRY_CHPLAN_ASSIGN_PROTO_EN((_en_11ax ? CHPLAN_PROTO_EN_AX : 0) | (_en_11ac ? CHPLAN_PROTO_EN_AC : 0)) \ + if (chplan->txpwr_lmt_override != TXPWR_LMT_DEF) { + for (band = 0; band < BAND_MAX; band++) { + if (!(*unknown_bmp & BIT(band))) + continue; + txpwr_lmt[band] = chplan->txpwr_lmt_override; + name_of_band[band] = txpwr_lmt_str(txpwr_lmt[band]); + if (txpwr_lmt[band] == TXPWR_LMT_NONE || txpwr_lmt[band] == TXPWR_LMT_WW || txpwr_lmt[band] == TXPWR_LMT_NUM + || rtw_txpwr_hal_lmt_reg_search(dvobj, band, name_of_band[band])) + *unknown_bmp &= ~BIT(band); + } + RTW_PRINT("default country:"ALPHA2_FMT" applied, txpwr_lmt:%s\n" + , ALPHA2_ARG(chplan->alpha2), rtw_get_txpwr_lmt_name_of_bands_str(buf, name_of_band, *unknown_bmp)); + + } else { + if (*unknown_bmp & (BIT(BAND_ON_24G) | BIT(BAND_ON_5G))) { + txpwr_lmt[BAND_ON_24G] = rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_2g(chplan->domain_code)); + #if CONFIG_IEEE80211_BAND_5GHZ + txpwr_lmt[BAND_ON_5G] = rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_5g(chplan->domain_code)); + #endif + for (band = 0; band < BAND_MAX; band++) { + if (band != BAND_ON_24G && band != BAND_ON_5G) + continue; + if (!(*unknown_bmp & BIT(band))) + continue; + name_of_band[band] = txpwr_lmt_str(txpwr_lmt[band]); + if (txpwr_lmt[band] == TXPWR_LMT_NONE || txpwr_lmt[band] == TXPWR_LMT_WW || txpwr_lmt[band] == TXPWR_LMT_NUM + || rtw_txpwr_hal_lmt_reg_search(dvobj, band, name_of_band[band])) + *unknown_bmp &= ~BIT(band); + } + RTW_PRINT("default domain:0x%02x applied, txpwr_lmt:%s\n" + , chplan->domain_code, rtw_get_txpwr_lmt_name_of_bands_str(buf, name_of_band, *unknown_bmp)); + } + + #if CONFIG_IEEE80211_BAND_6GHZ + if (*unknown_bmp & BIT(BAND_ON_6G)) { + band = BAND_ON_6G; + txpwr_lmt[BAND_ON_6G] = rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_6g(chplan->domain_code_6g)); + name_of_band[band] = txpwr_lmt_str(txpwr_lmt[band]); + if (txpwr_lmt[band] == TXPWR_LMT_NONE || txpwr_lmt[band] == TXPWR_LMT_WW || txpwr_lmt[band] == TXPWR_LMT_NUM + || rtw_txpwr_hal_lmt_reg_search(dvobj, band, name_of_band[band])) + *unknown_bmp &= ~BIT(band); + RTW_PRINT("default domain_6g:0x%02x applied, txpwr_lmt:%s\n" + , chplan->domain_code_6g, rtw_get_txpwr_lmt_name_of_bands_str(buf, name_of_band, *unknown_bmp)); + } + #endif } + if (*unknown_bmp == 0) + return; + + for (band = 0; band < BAND_MAX; band++) { + if (!(*unknown_bmp & BIT(band))) + continue; + if (TXPWR_LMT_ALTERNATE_DEFINED(txpwr_lmt[band])) { + /* + * To support older chips without new predefined txpwr_lmt: + * - use txpwr_lmt_alternate() to get alternate if the selection is not found + */ + altenate_applied = 1; + txpwr_lmt[band] = txpwr_lmt_alternate(txpwr_lmt[band]); + name_of_band[band] = txpwr_lmt_str(txpwr_lmt[band]); + if (rtw_txpwr_hal_lmt_reg_search(dvobj, band, name_of_band[band])) + *unknown_bmp &= ~BIT(band); + } + } + if (altenate_applied) { + RTW_PRINT("alternate applied, txpwr_lmt:%s\n" + , rtw_get_txpwr_lmt_name_of_bands_str(buf, name_of_band, *unknown_bmp)); + if (*unknown_bmp == 0) + return; + } + + for (band = 0; band < BAND_MAX; band++) { + if (!(*unknown_bmp & BIT(band))) + continue; + txpwr_lmt[band] = TXPWR_LMT_WW; + name_of_band[band] = txpwr_lmt_str(txpwr_lmt[band]); + *unknown_bmp &= ~BIT(band); + } + RTW_PRINT("world wide applied, txpwr_lmt:%s\n" + , rtw_get_txpwr_lmt_name_of_bands_str(buf, name_of_band, *unknown_bmp)); +} + +static void rtw_txpwr_apply_regd_req(struct rf_ctl_t *rfctl, struct regd_req_t *req + , char *names_of_band[], int names_of_band_len[]) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct rtw_chset *chset = &rfctl->chset; + struct country_chplan *chplan = &req->chplan; +#ifdef CONFIG_REGD_SRC_FROM_OS + char req_alpha2_str[3] = {chplan->alpha2[0], chplan->alpha2[1], 0}; +#endif + const char *name_of_band[BAND_MAX]; + u8 unknown_bmp; /* unknown bitmap of name_of_band */ + u8 band; + + for (band = 0; band < BAND_MAX; band++) + name_of_band[band] = NULL; + + unknown_bmp = 0 + | (chset->chs_of_band[BAND_ON_24G] ? BIT(BAND_ON_24G) : 0) + #if CONFIG_IEEE80211_BAND_5GHZ + | (chset->chs_of_band[BAND_ON_5G] ? BIT(BAND_ON_5G) : 0) + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + | (chset->chs_of_band[BAND_ON_6G] ? BIT(BAND_ON_6G) : 0) + #endif + ; + + /* search from exception mapping */ + rtw_txpwr_apply_regd_req_reg_exc(rfctl, req, name_of_band, &unknown_bmp); + if (!unknown_bmp) + goto exit; + +#ifdef CONFIG_REGD_SRC_FROM_OS + rtw_txpwr_apply_regd_req_from_os(rfctl, req, req_alpha2_str, name_of_band, &unknown_bmp); + if (!unknown_bmp) + goto exit; +#endif + + /* follow default channel plan mapping */ + rtw_txpwr_apply_regd_req_default(rfctl, req, name_of_band, &unknown_bmp); + +exit: + for (band = 0; band < BAND_MAX; band++) + ustrs_add(&names_of_band[band], &names_of_band_len[band], name_of_band[band]); +} + +void rtw_txpwr_update_cur_lmt_regs(struct dvobj_priv *dvobj, bool req_lock) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + struct regd_req_t *req; + _list *cur, *head; + char *names[BAND_MAX]; + int names_len[BAND_MAX]; + u8 band; + + _rtw_memset(names, 0, sizeof(names)); + _rtw_memset(names_len, 0, sizeof(names_len)); + + if (req_lock) + _rtw_mutex_lock_interruptible(&rfctl->regd_req_mutex); + + head = &rfctl->regd_req_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + cur = get_next(cur); + if (!req->applied) + continue; + rtw_txpwr_apply_regd_req(rfctl, req, names, names_len); + } + + if (req_lock) + _rtw_mutex_unlock(&rfctl->regd_req_mutex); + + /* set to tx power limit regulations to HAL */ + rtw_txpwr_hal_set_current_lmt_regs_by_name(dvobj, names, names_len); + + for (band = 0; band < BAND_MAX; band++) + if (names[band] && names_len[band]) + rtw_mfree(names[band], names_len[band]); +} +#endif /* CONFIG_TXPWR_LIMIT */ + static const struct country_chplan world_wide_chplan = - COUNTRY_CHPLAN_ENT(WORLDWIDE_ALPHA2, RTW_CHPLAN_WORLDWIDE, RTW_CHPLAN_6G_WORLDWIDE, DEF, 1, 1); + COUNTRY_CHPLAN_ENT(WORLDWIDE_ALPHA2, RTW_CHPLAN_WORLDWIDE, RTW_CHPLAN_6G_WORLDWIDE, DEF, 1, 1, 1); #ifdef CONFIG_CUSTOMIZED_COUNTRY_CHPLAN_MAP - #include "../platform/custom_country_chplan.h" - #elif RTW_DEF_MODULE_REGULATORY_CERT - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8821AE_HMC_M2) /* 2013 certify */ -static const struct country_chplan RTL8821AE_HMC_M2_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CL", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ID", 0x3D, 0x00, DEF , 0, 0), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MY", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x36, 0x00, DEF , 0, 0), - COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1), -}; +#include "./def_module_country_chplan.h" #endif -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8821AU) /* 2014 certify */ -static const struct country_chplan RTL8821AU_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ID", 0x3D, 0x00, DEF , 0, 0), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 0), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x36, 0x00, DEF , 0, 0), - COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8812AENF_NGFF) /* 2014 certify */ -static const struct country_chplan RTL8812AENF_NGFF_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8812AEBT_HMC) /* 2013 certify */ -static const struct country_chplan RTL8812AEBT_HMC_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 0), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x36, 0x00, DEF , 0, 0), - COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8188EE_HMC_M2) /* 2012 certify */ -static const struct country_chplan RTL8188EE_HMC_M2_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AW", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BB", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x20, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GD", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HT", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SC", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VC", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8723BE_HMC_M2) /* 2013 certify */ -static const struct country_chplan RTL8723BE_HMC_M2_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AW", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BS", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x20, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GD", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8723BS_NGFF1216) /* 2014 certify */ -static const struct country_chplan RTL8723BS_NGFF1216_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BB", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x20, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HT", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("YE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8192EEBT_HMC_M2) /* 2013 certify */ -static const struct country_chplan RTL8192EEBT_HMC_M2_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AW", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x20, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DO", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EC", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EH", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GD", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GT", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NI", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PA", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PE", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PR", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PY", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SC", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ST", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x39, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("YT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8723DE_NGFF1630) /* 2016 certify */ -static const struct country_chplan RTL8723DE_NGFF1630_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x2A, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CO", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CR", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GT", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MX", 0x34, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PE", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8822BE) /* 2016 certify */ -static const struct country_chplan RTL8822BE_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BB", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BM", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BS", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x2B, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CO", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CR", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EH", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FJ", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GP", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GT", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GU", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ID", 0x3D, 0x00, DEF , 0, 0), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MO", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MX", 0x4D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PE", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SC", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ST", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, UKRAINE, 0, 1), - COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("YT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8821CE) /* 2016 certify */ -static const struct country_chplan RTL8821CE_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BB", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BM", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BS", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x2B, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CO", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CR", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EH", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FJ", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GP", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GT", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GU", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ID", 0x3D, 0x00, DEF , 0, 0), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x28, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MO", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MX", 0x4D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PE", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SC", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ST", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, UKRAINE, 0, 1), - COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("YT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1), -}; -#endif - -#if (RTW_DEF_MODULE_REGULATORY_CERT & RTW_MODULE_RTL8822CE) /* 2018 certify */ -static const struct country_chplan RTL8822CE_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AE", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AO", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AR", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AU", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AW", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("AZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BB", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BH", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BM", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BO", 0x73, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BS", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BW", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("BY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CA", 0x2B, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CL", 0x2D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CN", 0x48, 0x00, CN , 0, 1), - COUNTRY_CHPLAN_ENT("CO", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CR", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CY", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("CZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EG", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("EH", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ES", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ET", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FJ", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("FR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GP", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GT", 0x61, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GU", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("GW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HK", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HT", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("HU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IL", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IN", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("IT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JM", 0x32, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JO", 0x49, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("JP", 0x27, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KE", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KH", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KR", 0x4B, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("KZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LB", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("LV", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MA", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MC", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ME", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ML", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MO", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MQ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MU", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MW", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MX", 0x4D, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MY", 0x63, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("MZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NA", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NP", 0x48, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("NZ", 0x45, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("OM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PE", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("QA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RO", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RS", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("RU", 0x59, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SC", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SE", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SG", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SI", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SK", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SL", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SN", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ST", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SV", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("SZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TD", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TF", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TH", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TJ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TN", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TR", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("TZ", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UA", 0x35, 0x00, UKRAINE, 0, 1), - COUNTRY_CHPLAN_ENT("UG", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("US", 0x76, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("UZ", 0x47, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("VN", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("YT", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZA", 0x35, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZM", 0x26, 0x00, DEF , 0, 1), - COUNTRY_CHPLAN_ENT("ZW", 0x26, 0x00, DEF , 0, 1), -}; -#endif - -/** - * rtw_def_module_country_chplan_map - - * @hal_map: returned map - * @return: size of map - */ -static u16 rtw_def_module_country_chplan_map(const struct country_chplan **hal_map) -{ - u16 hal_map_sz = 0; - - /* TODO: runtime selection for multi driver */ -#if (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8821AE_HMC_M2) - *hal_map = RTL8821AE_HMC_M2_country_chplan_map; - hal_map_sz = sizeof(RTL8821AE_HMC_M2_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8821AU) - *hal_map = RTL8821AU_country_chplan_map; - hal_map_sz = sizeof(RTL8821AU_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8812AENF_NGFF) - *hal_map = RTL8812AENF_NGFF_country_chplan_map; - hal_map_sz = sizeof(RTL8812AENF_NGFF_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8812AEBT_HMC) - *hal_map = RTL8812AEBT_HMC_country_chplan_map; - hal_map_sz = sizeof(RTL8812AEBT_HMC_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8188EE_HMC_M2) - *hal_map = RTL8188EE_HMC_M2_country_chplan_map; - hal_map_sz = sizeof(RTL8188EE_HMC_M2_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8723BE_HMC_M2) - *hal_map = RTL8723BE_HMC_M2_country_chplan_map; - hal_map_sz = sizeof(RTL8723BE_HMC_M2_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8723BS_NGFF1216) - *hal_map = RTL8723BS_NGFF1216_country_chplan_map; - hal_map_sz = sizeof(RTL8723BS_NGFF1216_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8192EEBT_HMC_M2) - *hal_map = RTL8192EEBT_HMC_M2_country_chplan_map; - hal_map_sz = sizeof(RTL8192EEBT_HMC_M2_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8723DE_NGFF1630) - *hal_map = RTL8723DE_NGFF1630_country_chplan_map; - hal_map_sz = sizeof(RTL8723DE_NGFF1630_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8822BE) - *hal_map = RTL8822BE_country_chplan_map; - hal_map_sz = sizeof(RTL8822BE_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8821CE) - *hal_map = RTL8821CE_country_chplan_map; - hal_map_sz = sizeof(RTL8821CE_country_chplan_map) / sizeof(struct country_chplan); -#elif (RTW_DEF_MODULE_REGULATORY_CERT == RTW_MODULE_RTL8822CE) - *hal_map = RTL8822CE_country_chplan_map; - hal_map_sz = sizeof(RTL8822CE_country_chplan_map) / sizeof(struct country_chplan); -#endif - - return hal_map_sz; -} -#else - -static const struct country_chplan country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("AD", 0x3A, 0x00, DEF , 1, 1), /* Andorra */ - COUNTRY_CHPLAN_ENT("AE", 0x5E, 0x00, DEF , 1, 1), /* United Arab Emirates */ - COUNTRY_CHPLAN_ENT("AF", 0x42, 0x00, DEF , 1, 1), /* Afghanistan */ - COUNTRY_CHPLAN_ENT("AG", 0x76, 0x00, DEF , 1, 1), /* Antigua & Barbuda */ - COUNTRY_CHPLAN_ENT("AI", 0x5E, 0x00, DEF , 1, 1), /* Anguilla(UK) */ - COUNTRY_CHPLAN_ENT("AL", 0x5E, 0x00, DEF , 1, 1), /* Albania */ - COUNTRY_CHPLAN_ENT("AM", 0x5E, 0x00, DEF , 1, 1), /* Armenia */ - COUNTRY_CHPLAN_ENT("AN", 0x76, 0x00, DEF , 1, 1), /* Netherlands Antilles */ - COUNTRY_CHPLAN_ENT("AO", 0x5E, 0x00, DEF , 1, 1), /* Angola */ - COUNTRY_CHPLAN_ENT("AQ", 0x26, 0x00, DEF , 1, 1), /* Antarctica */ - COUNTRY_CHPLAN_ENT("AR", 0x4D, 0x00, DEF , 1, 1), /* Argentina */ - COUNTRY_CHPLAN_ENT("AS", 0x76, 0x00, DEF , 1, 1), /* American Samoa */ - COUNTRY_CHPLAN_ENT("AT", 0x5E, 0x00, DEF , 1, 1), /* Austria */ - COUNTRY_CHPLAN_ENT("AU", 0x03, 0x00, DEF , 1, 1), /* Australia */ - COUNTRY_CHPLAN_ENT("AW", 0x76, 0x00, DEF , 1, 1), /* Aruba */ - COUNTRY_CHPLAN_ENT("AZ", 0x5E, 0x00, DEF , 1, 1), /* Azerbaijan */ - COUNTRY_CHPLAN_ENT("BA", 0x5E, 0x00, DEF , 1, 1), /* Bosnia & Herzegovina */ - COUNTRY_CHPLAN_ENT("BB", 0x76, 0x00, DEF , 1, 1), /* Barbados */ - COUNTRY_CHPLAN_ENT("BD", 0x5E, 0x00, DEF , 1, 1), /* Bangladesh */ - COUNTRY_CHPLAN_ENT("BE", 0x5E, 0x00, DEF , 1, 1), /* Belgium */ - COUNTRY_CHPLAN_ENT("BF", 0x5E, 0x00, DEF , 1, 1), /* Burkina Faso */ - COUNTRY_CHPLAN_ENT("BG", 0x5E, 0x00, DEF , 1, 1), /* Bulgaria */ - COUNTRY_CHPLAN_ENT("BH", 0x06, 0x00, DEF , 1, 1), /* Bahrain */ - COUNTRY_CHPLAN_ENT("BI", 0x3A, 0x00, DEF , 1, 1), /* Burundi */ - COUNTRY_CHPLAN_ENT("BJ", 0x3A, 0x00, DEF , 1, 1), /* Benin */ - COUNTRY_CHPLAN_ENT("BM", 0x76, 0x00, DEF , 1, 1), /* Bermuda (UK) */ - COUNTRY_CHPLAN_ENT("BN", 0x06, 0x00, DEF , 1, 1), /* Brunei */ - COUNTRY_CHPLAN_ENT("BO", 0x61, 0x00, DEF , 1, 1), /* Bolivia */ - COUNTRY_CHPLAN_ENT("BR", 0x62, 0x00, DEF , 1, 1), /* Brazil */ - COUNTRY_CHPLAN_ENT("BS", 0x76, 0x00, DEF , 1, 1), /* Bahamas */ - COUNTRY_CHPLAN_ENT("BT", 0x5E, 0x00, DEF , 1, 1), /* Bhutan */ - COUNTRY_CHPLAN_ENT("BV", 0x5E, 0x00, DEF , 1, 1), /* Bouvet Island (Norway) */ - COUNTRY_CHPLAN_ENT("BW", 0x5E, 0x00, DEF , 1, 1), /* Botswana */ - COUNTRY_CHPLAN_ENT("BY", 0x08, 0x00, DEF , 0, 1), /* Belarus */ - COUNTRY_CHPLAN_ENT("BZ", 0x76, 0x00, DEF , 1, 1), /* Belize */ - COUNTRY_CHPLAN_ENT("CA", 0x2B, 0x00, DEF , 1, 1), /* Canada */ - COUNTRY_CHPLAN_ENT("CC", 0x3A, 0x00, DEF , 1, 1), /* Cocos (Keeling) Islands (Australia) */ - COUNTRY_CHPLAN_ENT("CD", 0x3A, 0x00, DEF , 1, 1), /* Congo, Republic of the */ - COUNTRY_CHPLAN_ENT("CF", 0x3A, 0x00, DEF , 1, 1), /* Central African Republic */ - COUNTRY_CHPLAN_ENT("CG", 0x3A, 0x00, DEF , 1, 1), /* Congo, Democratic Republic of the. Zaire */ - COUNTRY_CHPLAN_ENT("CH", 0x5E, 0x00, DEF , 1, 1), /* Switzerland */ - COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 1, 1), /* Cote d'Ivoire */ - COUNTRY_CHPLAN_ENT("CK", 0x5E, 0x00, DEF , 1, 1), /* Cook Islands */ - COUNTRY_CHPLAN_ENT("CL", 0x76, 0x00, CHILE , 1, 1), /* Chile */ - COUNTRY_CHPLAN_ENT("CM", 0x5E, 0x00, DEF , 1, 1), /* Cameroon */ - COUNTRY_CHPLAN_ENT("CN", 0x06, 0x00, CN , 1, 1), /* China */ - COUNTRY_CHPLAN_ENT("CO", 0x76, 0x00, DEF , 1, 1), /* Colombia */ - COUNTRY_CHPLAN_ENT("CR", 0x76, 0x00, DEF , 1, 1), /* Costa Rica */ - COUNTRY_CHPLAN_ENT("CV", 0x5E, 0x00, DEF , 1, 1), /* Cape Verde */ - COUNTRY_CHPLAN_ENT("CX", 0x03, 0x00, DEF , 1, 1), /* Christmas Island (Australia) */ - COUNTRY_CHPLAN_ENT("CY", 0x5E, 0x00, DEF , 1, 1), /* Cyprus */ - COUNTRY_CHPLAN_ENT("CZ", 0x5E, 0x00, DEF , 1, 1), /* Czech Republic */ - COUNTRY_CHPLAN_ENT("DE", 0x5E, 0x00, DEF , 1, 1), /* Germany */ - COUNTRY_CHPLAN_ENT("DJ", 0x3A, 0x00, DEF , 1, 1), /* Djibouti */ - COUNTRY_CHPLAN_ENT("DK", 0x5E, 0x00, DEF , 1, 1), /* Denmark */ - COUNTRY_CHPLAN_ENT("DM", 0x76, 0x00, DEF , 1, 1), /* Dominica */ - COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 1, 1), /* Dominican Republic */ - COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x00, DEF , 1, 1), /* Algeria */ - COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 1, 1), /* Ecuador */ - COUNTRY_CHPLAN_ENT("EE", 0x5E, 0x00, DEF , 1, 1), /* Estonia */ - COUNTRY_CHPLAN_ENT("EG", 0x3C, 0x00, DEF , 1, 1), /* Egypt */ - COUNTRY_CHPLAN_ENT("EH", 0x3C, 0x00, DEF , 1, 1), /* Western Sahara */ - COUNTRY_CHPLAN_ENT("ER", 0x3A, 0x00, DEF , 1, 1), /* Eritrea */ - COUNTRY_CHPLAN_ENT("ES", 0x5E, 0x00, DEF , 1, 1), /* Spain, Canary Islands, Ceuta, Melilla */ - COUNTRY_CHPLAN_ENT("ET", 0x3A, 0x00, DEF , 1, 1), /* Ethiopia */ - COUNTRY_CHPLAN_ENT("FI", 0x5E, 0x00, DEF , 1, 1), /* Finland */ - COUNTRY_CHPLAN_ENT("FJ", 0x76, 0x00, DEF , 1, 1), /* Fiji */ - COUNTRY_CHPLAN_ENT("FK", 0x3A, 0x00, DEF , 1, 1), /* Falkland Islands (Islas Malvinas) (UK) */ - COUNTRY_CHPLAN_ENT("FM", 0x76, 0x00, DEF , 1, 1), /* Micronesia, Federated States of (USA) */ - COUNTRY_CHPLAN_ENT("FO", 0x3A, 0x00, DEF , 1, 1), /* Faroe Islands (Denmark) */ - COUNTRY_CHPLAN_ENT("FR", 0x5E, 0x00, DEF , 1, 1), /* France */ - COUNTRY_CHPLAN_ENT("GA", 0x5E, 0x00, DEF , 1, 1), /* Gabon */ - COUNTRY_CHPLAN_ENT("GB", 0x5E, 0x00, DEF , 1, 1), /* Great Britain (United Kingdom; England) */ - COUNTRY_CHPLAN_ENT("GD", 0x76, 0x00, DEF , 1, 1), /* Grenada */ - COUNTRY_CHPLAN_ENT("GE", 0x5E, 0x00, DEF , 1, 1), /* Georgia */ - COUNTRY_CHPLAN_ENT("GF", 0x3A, 0x00, DEF , 1, 1), /* French Guiana */ - COUNTRY_CHPLAN_ENT("GG", 0x5E, 0x00, DEF , 1, 1), /* Guernsey (UK) */ - COUNTRY_CHPLAN_ENT("GH", 0x5E, 0x00, DEF , 1, 1), /* Ghana */ - COUNTRY_CHPLAN_ENT("GI", 0x3A, 0x00, DEF , 1, 1), /* Gibraltar (UK) */ - COUNTRY_CHPLAN_ENT("GL", 0x5E, 0x00, DEF , 1, 1), /* Greenland (Denmark) */ - COUNTRY_CHPLAN_ENT("GM", 0x3A, 0x00, DEF , 1, 1), /* Gambia */ - COUNTRY_CHPLAN_ENT("GN", 0x3A, 0x00, DEF , 1, 1), /* Guinea */ - COUNTRY_CHPLAN_ENT("GP", 0x3A, 0x00, DEF , 1, 1), /* Guadeloupe (France) */ - COUNTRY_CHPLAN_ENT("GQ", 0x5E, 0x00, DEF , 1, 1), /* Equatorial Guinea */ - COUNTRY_CHPLAN_ENT("GR", 0x5E, 0x00, DEF , 1, 1), /* Greece */ - COUNTRY_CHPLAN_ENT("GS", 0x3A, 0x00, DEF , 1, 1), /* South Georgia and the Sandwich Islands (UK) */ - COUNTRY_CHPLAN_ENT("GT", 0x76, 0x00, DEF , 1, 1), /* Guatemala */ - COUNTRY_CHPLAN_ENT("GU", 0x76, 0x00, DEF , 1, 1), /* Guam (USA) */ - COUNTRY_CHPLAN_ENT("GW", 0x3A, 0x00, DEF , 1, 1), /* Guinea-Bissau */ - COUNTRY_CHPLAN_ENT("GY", 0x44, 0x00, DEF , 1, 1), /* Guyana */ - COUNTRY_CHPLAN_ENT("HK", 0x5E, 0x00, DEF , 1, 1), /* Hong Kong */ - COUNTRY_CHPLAN_ENT("HM", 0x03, 0x00, DEF , 1, 1), /* Heard and McDonald Islands (Australia) */ - COUNTRY_CHPLAN_ENT("HN", 0x32, 0x00, DEF , 1, 1), /* Honduras */ - COUNTRY_CHPLAN_ENT("HR", 0x5E, 0x00, DEF , 1, 1), /* Croatia */ - COUNTRY_CHPLAN_ENT("HT", 0x76, 0x00, DEF , 0, 1), /* Haiti */ - COUNTRY_CHPLAN_ENT("HU", 0x5E, 0x00, DEF , 1, 1), /* Hungary */ - COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 1, 1), /* Indonesia */ - COUNTRY_CHPLAN_ENT("IE", 0x5E, 0x00, DEF , 1, 1), /* Ireland */ - COUNTRY_CHPLAN_ENT("IL", 0x5E, 0x00, DEF , 1, 1), /* Israel */ - COUNTRY_CHPLAN_ENT("IM", 0x3A, 0x00, DEF , 1, 1), /* Isle of Man (UK) */ - COUNTRY_CHPLAN_ENT("IN", 0x06, 0x00, DEF , 1, 1), /* India */ - COUNTRY_CHPLAN_ENT("IO", 0x3A, 0x00, DEF , 1, 1), /* British Indian Ocean Territory (UK) */ - COUNTRY_CHPLAN_ENT("IQ", 0x05, 0x00, DEF , 1, 1), /* Iraq */ - COUNTRY_CHPLAN_ENT("IR", 0x3A, 0x00, DEF , 0, 0), /* Iran */ - COUNTRY_CHPLAN_ENT("IS", 0x5E, 0x00, DEF , 1, 1), /* Iceland */ - COUNTRY_CHPLAN_ENT("IT", 0x5E, 0x00, DEF , 1, 1), /* Italy */ - COUNTRY_CHPLAN_ENT("JE", 0x3A, 0x00, DEF , 1, 1), /* Jersey (UK) */ - COUNTRY_CHPLAN_ENT("JM", 0x76, 0x00, DEF , 1, 1), /* Jamaica */ - COUNTRY_CHPLAN_ENT("JO", 0x05, 0x00, DEF , 1, 1), /* Jordan */ - COUNTRY_CHPLAN_ENT("JP", 0x7D, 0x00, DEF , 1, 1), /* Japan- Telec */ - COUNTRY_CHPLAN_ENT("KE", 0x5E, 0x00, DEF , 1, 1), /* Kenya */ - COUNTRY_CHPLAN_ENT("KG", 0x5E, 0x00, DEF , 1, 1), /* Kyrgyzstan */ - COUNTRY_CHPLAN_ENT("KH", 0x5E, 0x00, DEF , 1, 1), /* Cambodia */ - COUNTRY_CHPLAN_ENT("KI", 0x5E, 0x00, DEF , 1, 1), /* Kiribati */ - COUNTRY_CHPLAN_ENT("KM", 0x3A, 0x00, DEF , 1, 1), /* Comoros */ - COUNTRY_CHPLAN_ENT("KN", 0x76, 0x00, DEF , 1, 1), /* Saint Kitts and Nevis */ - COUNTRY_CHPLAN_ENT("KR", 0x4B, 0x00, DEF , 1, 1), /* South Korea */ - COUNTRY_CHPLAN_ENT("KW", 0x5E, 0x00, DEF , 1, 1), /* Kuwait */ - COUNTRY_CHPLAN_ENT("KY", 0x76, 0x00, DEF , 1, 1), /* Cayman Islands (UK) */ - COUNTRY_CHPLAN_ENT("KZ", 0x5E, 0x00, DEF , 1, 1), /* Kazakhstan */ - COUNTRY_CHPLAN_ENT("LA", 0x5E, 0x00, DEF , 1, 1), /* Laos */ - COUNTRY_CHPLAN_ENT("LB", 0x5E, 0x00, DEF , 1, 1), /* Lebanon */ - COUNTRY_CHPLAN_ENT("LC", 0x76, 0x00, DEF , 1, 1), /* Saint Lucia */ - COUNTRY_CHPLAN_ENT("LI", 0x5E, 0x00, DEF , 1, 1), /* Liechtenstein */ - COUNTRY_CHPLAN_ENT("LK", 0x5E, 0x00, DEF , 1, 1), /* Sri Lanka */ - COUNTRY_CHPLAN_ENT("LR", 0x5E, 0x00, DEF , 1, 1), /* Liberia */ - COUNTRY_CHPLAN_ENT("LS", 0x5E, 0x00, DEF , 1, 1), /* Lesotho */ - COUNTRY_CHPLAN_ENT("LT", 0x5E, 0x00, DEF , 1, 1), /* Lithuania */ - COUNTRY_CHPLAN_ENT("LU", 0x5E, 0x00, DEF , 1, 1), /* Luxembourg */ - COUNTRY_CHPLAN_ENT("LV", 0x5E, 0x00, DEF , 1, 1), /* Latvia */ - COUNTRY_CHPLAN_ENT("LY", 0x5E, 0x00, DEF , 1, 1), /* Libya */ - COUNTRY_CHPLAN_ENT("MA", 0x3C, 0x00, DEF , 1, 1), /* Morocco */ - COUNTRY_CHPLAN_ENT("MC", 0x5E, 0x00, DEF , 1, 1), /* Monaco */ - COUNTRY_CHPLAN_ENT("MD", 0x5E, 0x00, DEF , 1, 1), /* Moldova */ - COUNTRY_CHPLAN_ENT("ME", 0x3A, 0x00, DEF , 1, 1), /* Montenegro */ - COUNTRY_CHPLAN_ENT("MF", 0x76, 0x00, DEF , 1, 1), /* Saint Martin */ - COUNTRY_CHPLAN_ENT("MG", 0x5E, 0x00, DEF , 1, 1), /* Madagascar */ - COUNTRY_CHPLAN_ENT("MH", 0x76, 0x00, DEF , 1, 1), /* Marshall Islands (USA) */ - COUNTRY_CHPLAN_ENT("MK", 0x3A, 0x00, DEF , 1, 1), /* Republic of Macedonia (FYROM) */ - COUNTRY_CHPLAN_ENT("ML", 0x5E, 0x00, DEF , 1, 1), /* Mali */ - COUNTRY_CHPLAN_ENT("MM", 0x3A, 0x00, DEF , 1, 1), /* Burma (Myanmar) */ - COUNTRY_CHPLAN_ENT("MN", 0x5E, 0x00, DEF , 1, 1), /* Mongolia */ - COUNTRY_CHPLAN_ENT("MO", 0x5E, 0x00, DEF , 1, 1), /* Macau */ - COUNTRY_CHPLAN_ENT("MP", 0x76, 0x00, DEF , 1, 1), /* Northern Mariana Islands (USA) */ - COUNTRY_CHPLAN_ENT("MQ", 0x3A, 0x00, DEF , 1, 1), /* Martinique (France) */ - COUNTRY_CHPLAN_ENT("MR", 0x5E, 0x00, DEF , 1, 1), /* Mauritania */ - COUNTRY_CHPLAN_ENT("MS", 0x3A, 0x00, DEF , 1, 1), /* Montserrat (UK) */ - COUNTRY_CHPLAN_ENT("MT", 0x5E, 0x00, DEF , 1, 1), /* Malta */ - COUNTRY_CHPLAN_ENT("MU", 0x5E, 0x00, DEF , 1, 1), /* Mauritius */ - COUNTRY_CHPLAN_ENT("MV", 0x3C, 0x00, DEF , 1, 1), /* Maldives */ - COUNTRY_CHPLAN_ENT("MW", 0x5E, 0x00, DEF , 1, 1), /* Malawi */ - COUNTRY_CHPLAN_ENT("MX", 0x4D, 0x00, DEF , 1, 1), /* Mexico */ - COUNTRY_CHPLAN_ENT("MY", 0x07, 0x00, DEF , 1, 1), /* Malaysia */ - COUNTRY_CHPLAN_ENT("MZ", 0x5E, 0x00, DEF , 1, 1), /* Mozambique */ - COUNTRY_CHPLAN_ENT("NA", 0x5E, 0x00, DEF , 1, 1), /* Namibia */ - COUNTRY_CHPLAN_ENT("NC", 0x3A, 0x00, DEF , 1, 1), /* New Caledonia */ - COUNTRY_CHPLAN_ENT("NE", 0x5E, 0x00, DEF , 1, 1), /* Niger */ - COUNTRY_CHPLAN_ENT("NF", 0x03, 0x00, DEF , 1, 1), /* Norfolk Island (Australia) */ - COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 1, 1), /* Nigeria */ - COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 1, 1), /* Nicaragua */ - COUNTRY_CHPLAN_ENT("NL", 0x5E, 0x00, DEF , 1, 1), /* Netherlands */ - COUNTRY_CHPLAN_ENT("NO", 0x5E, 0x00, DEF , 1, 1), /* Norway */ - COUNTRY_CHPLAN_ENT("NP", 0x06, 0x00, DEF , 1, 1), /* Nepal */ - COUNTRY_CHPLAN_ENT("NR", 0x3A, 0x00, DEF , 1, 1), /* Nauru */ - COUNTRY_CHPLAN_ENT("NU", 0x03, 0x00, DEF , 1, 1), /* Niue */ - COUNTRY_CHPLAN_ENT("NZ", 0x03, 0x00, DEF , 1, 1), /* New Zealand */ - COUNTRY_CHPLAN_ENT("OM", 0x5E, 0x00, DEF , 1, 1), /* Oman */ - COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 1, 1), /* Panama */ - COUNTRY_CHPLAN_ENT("PE", 0x76, 0x00, DEF , 1, 1), /* Peru */ - COUNTRY_CHPLAN_ENT("PF", 0x3A, 0x00, DEF , 1, 1), /* French Polynesia (France) */ - COUNTRY_CHPLAN_ENT("PG", 0x5E, 0x00, DEF , 1, 1), /* Papua New Guinea */ - COUNTRY_CHPLAN_ENT("PH", 0x5E, 0x00, DEF , 1, 1), /* Philippines */ - COUNTRY_CHPLAN_ENT("PK", 0x51, 0x00, DEF , 1, 1), /* Pakistan */ - COUNTRY_CHPLAN_ENT("PL", 0x5E, 0x00, DEF , 1, 1), /* Poland */ - COUNTRY_CHPLAN_ENT("PM", 0x3A, 0x00, DEF , 1, 1), /* Saint Pierre and Miquelon (France) */ - COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 1, 1), /* Puerto Rico */ - COUNTRY_CHPLAN_ENT("PS", 0x5E, 0x00, DEF , 1, 1), /* Palestine */ - COUNTRY_CHPLAN_ENT("PT", 0x5E, 0x00, DEF , 1, 1), /* Portugal */ - COUNTRY_CHPLAN_ENT("PW", 0x76, 0x00, DEF , 1, 1), /* Palau */ - COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 1, 1), /* Paraguay */ - COUNTRY_CHPLAN_ENT("QA", 0x5E, 0x00, QATAR , 1, 1), /* Qatar */ - COUNTRY_CHPLAN_ENT("RE", 0x3A, 0x00, DEF , 1, 1), /* Reunion (France) */ - COUNTRY_CHPLAN_ENT("RO", 0x5E, 0x00, DEF , 1, 1), /* Romania */ - COUNTRY_CHPLAN_ENT("RS", 0x5E, 0x00, DEF , 1, 1), /* Serbia */ - COUNTRY_CHPLAN_ENT("RU", 0x09, 0x00, DEF , 1, 1), /* Russia(fac/gost), Kaliningrad */ - COUNTRY_CHPLAN_ENT("RW", 0x5E, 0x00, DEF , 1, 1), /* Rwanda */ - COUNTRY_CHPLAN_ENT("SA", 0x5E, 0x00, DEF , 1, 1), /* Saudi Arabia */ - COUNTRY_CHPLAN_ENT("SB", 0x3A, 0x00, DEF , 1, 1), /* Solomon Islands */ - COUNTRY_CHPLAN_ENT("SC", 0x76, 0x00, DEF , 1, 1), /* Seychelles */ - COUNTRY_CHPLAN_ENT("SE", 0x5E, 0x00, DEF , 1, 1), /* Sweden */ - COUNTRY_CHPLAN_ENT("SG", 0x5E, 0x00, DEF , 1, 1), /* Singapore */ - COUNTRY_CHPLAN_ENT("SH", 0x3A, 0x00, DEF , 1, 1), /* Saint Helena (UK) */ - COUNTRY_CHPLAN_ENT("SI", 0x5E, 0x00, DEF , 1, 1), /* Slovenia */ - COUNTRY_CHPLAN_ENT("SJ", 0x3A, 0x00, DEF , 1, 1), /* Svalbard (Norway) */ - COUNTRY_CHPLAN_ENT("SK", 0x5E, 0x00, DEF , 1, 1), /* Slovakia */ - COUNTRY_CHPLAN_ENT("SL", 0x5E, 0x00, DEF , 1, 1), /* Sierra Leone */ - COUNTRY_CHPLAN_ENT("SM", 0x3A, 0x00, DEF , 1, 1), /* San Marino */ - COUNTRY_CHPLAN_ENT("SN", 0x3A, 0x00, DEF , 1, 1), /* Senegal */ - COUNTRY_CHPLAN_ENT("SO", 0x3A, 0x00, DEF , 1, 1), /* Somalia */ - COUNTRY_CHPLAN_ENT("SR", 0x74, 0x00, DEF , 1, 1), /* Suriname */ - COUNTRY_CHPLAN_ENT("ST", 0x76, 0x00, DEF , 1, 1), /* Sao Tome and Principe */ - COUNTRY_CHPLAN_ENT("SV", 0x76, 0x00, DEF , 1, 1), /* El Salvador */ - COUNTRY_CHPLAN_ENT("SX", 0x76, 0x00, DEF , 1, 1), /* Sint Marteen */ - COUNTRY_CHPLAN_ENT("SZ", 0x5E, 0x00, DEF , 1, 1), /* Swaziland */ - COUNTRY_CHPLAN_ENT("TC", 0x3A, 0x00, DEF , 1, 1), /* Turks and Caicos Islands (UK) */ - COUNTRY_CHPLAN_ENT("TD", 0x3A, 0x00, DEF , 1, 1), /* Chad */ - COUNTRY_CHPLAN_ENT("TF", 0x3A, 0x00, DEF , 1, 1), /* French Southern and Antarctic Lands (FR Southern Territories) */ - COUNTRY_CHPLAN_ENT("TG", 0x5E, 0x00, DEF , 1, 1), /* Togo */ - COUNTRY_CHPLAN_ENT("TH", 0x5E, 0x00, DEF , 1, 1), /* Thailand */ - COUNTRY_CHPLAN_ENT("TJ", 0x5E, 0x00, DEF , 1, 1), /* Tajikistan */ - COUNTRY_CHPLAN_ENT("TK", 0x03, 0x00, DEF , 1, 1), /* Tokelau */ - COUNTRY_CHPLAN_ENT("TM", 0x3A, 0x00, DEF , 1, 1), /* Turkmenistan */ - COUNTRY_CHPLAN_ENT("TN", 0x04, 0x00, DEF , 1, 1), /* Tunisia */ - COUNTRY_CHPLAN_ENT("TO", 0x3A, 0x00, DEF , 1, 1), /* Tonga */ - COUNTRY_CHPLAN_ENT("TR", 0x5E, 0x00, DEF , 1, 1), /* Turkey, Northern Cyprus */ - COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 1, 1), /* Trinidad & Tobago */ - COUNTRY_CHPLAN_ENT("TV", 0x21, 0x00, DEF , 0, 0), /* Tuvalu */ - COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 1, 1), /* Taiwan */ - COUNTRY_CHPLAN_ENT("TZ", 0x5E, 0x00, DEF , 1, 1), /* Tanzania */ - COUNTRY_CHPLAN_ENT("UA", 0x5E, 0x00, UKRAINE, 1, 1), /* Ukraine */ - COUNTRY_CHPLAN_ENT("UG", 0x3A, 0x00, DEF , 1, 1), /* Uganda */ - COUNTRY_CHPLAN_ENT("US", 0x76, 0x7F, DEF , 1, 1), /* United States of America (USA) */ - COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 1, 1), /* Uruguay */ - COUNTRY_CHPLAN_ENT("UZ", 0x3C, 0x00, DEF , 1, 1), /* Uzbekistan */ - COUNTRY_CHPLAN_ENT("VA", 0x3A, 0x00, DEF , 1, 1), /* Holy See (Vatican City) */ - COUNTRY_CHPLAN_ENT("VC", 0x76, 0x00, DEF , 1, 1), /* Saint Vincent and the Grenadines */ - COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 1, 1), /* Venezuela */ - COUNTRY_CHPLAN_ENT("VG", 0x76, 0x00, DEF , 1, 1), /* British Virgin Islands (UK) */ - COUNTRY_CHPLAN_ENT("VI", 0x76, 0x00, DEF , 1, 1), /* United States Virgin Islands (USA) */ - COUNTRY_CHPLAN_ENT("VN", 0x5E, 0x00, DEF , 1, 1), /* Vietnam */ - COUNTRY_CHPLAN_ENT("VU", 0x26, 0x00, DEF , 1, 1), /* Vanuatu */ - COUNTRY_CHPLAN_ENT("WF", 0x3A, 0x00, DEF , 1, 1), /* Wallis and Futuna (France) */ - COUNTRY_CHPLAN_ENT("WS", 0x76, 0x00, DEF , 1, 1), /* Samoa */ - COUNTRY_CHPLAN_ENT("XK", 0x3A, 0x00, DEF , 1, 1), /* Kosovo */ - COUNTRY_CHPLAN_ENT("YE", 0x3A, 0x00, DEF , 1, 1), /* Yemen */ - COUNTRY_CHPLAN_ENT("YT", 0x5E, 0x00, DEF , 1, 1), /* Mayotte (France) */ - COUNTRY_CHPLAN_ENT("ZA", 0x5E, 0x00, DEF , 1, 1), /* South Africa */ - COUNTRY_CHPLAN_ENT("ZM", 0x5E, 0x00, DEF , 1, 1), /* Zambia */ - COUNTRY_CHPLAN_ENT("ZW", 0x5E, 0x00, DEF , 1, 1), /* Zimbabwe */ -}; -#endif /* CONFIG_CUSTOMIZED_COUNTRY_CHPLAN_MAP or RTW_DEF_MODULE_REGULATORY_CERT or newest */ - /* * rtw_get_chplan_worldwide - * @ent: the buf to copy country_chplan entry content @@ -2961,33 +1099,35 @@ void rtw_get_chplan_worldwide(struct country_chplan *ent) */ bool rtw_get_chplan_from_country(const char *country_code, struct country_chplan *ent) { +#if defined(CONFIG_CUSTOMIZED_COUNTRY_CHPLAN_MAP) || RTW_DEF_MODULE_REGULATORY_CERT const struct country_chplan *map = NULL; u16 map_sz = 0; - char code[2]; int i; +#endif + char code[2] = {alpha_to_upper(country_code[0]), alpha_to_upper(country_code[1])}; - code[0] = alpha_to_upper(country_code[0]); - code[1] = alpha_to_upper(country_code[1]); - -#ifdef CONFIG_CUSTOMIZED_COUNTRY_CHPLAN_MAP +#if defined(CONFIG_CUSTOMIZED_COUNTRY_CHPLAN_MAP) || RTW_DEF_MODULE_REGULATORY_CERT + #ifdef CONFIG_CUSTOMIZED_COUNTRY_CHPLAN_MAP map = CUSTOMIZED_country_chplan_map; map_sz = sizeof(CUSTOMIZED_country_chplan_map) / sizeof(struct country_chplan); -#elif RTW_DEF_MODULE_REGULATORY_CERT + #else map_sz = rtw_def_module_country_chplan_map(&map); -#else - map = country_chplan_map; - map_sz = sizeof(country_chplan_map) / sizeof(struct country_chplan); -#endif + #endif for (i = 0; i < map_sz; i++) { if (strncmp(code, map[i].alpha2, 2) == 0) { if (ent) _rtw_memcpy(ent, &map[i], sizeof(*ent)); - return _TRUE; + return true; } } - return _FALSE; + return false; +#else + if (regdb_ops.get_chplan_from_alpha2) + return regdb_ops.get_chplan_from_alpha2(code, ent); + return false; +#endif } void rtw_chplan_ioctl_input_mapping(u16 *chplan, u16 *chplan_6g) @@ -3023,71 +1163,76 @@ bool rtw_chplan_ids_is_world_wide(u8 chplan, u8 chplan_6g) /* * Check if the @param ch, bw, offset is valid for the given @param ent - * @ch_set: the given channel set + * @ent: the given country chplan ent + * @band: the given band * @ch: the given channel number * @bw: the given bandwidth * @offset: the given channel offset + * @rfctl: refer to addtional ch enable/disable configurations * * return valid (1) or not (0) */ -u8 rtw_country_chplan_is_chbw_valid(struct country_chplan *ent, BAND_TYPE band, u8 ch, u8 bw, u8 offset - , bool allow_primary_passive, bool allow_passive, struct registry_priv *regsty) +u8 rtw_country_chplan_is_bchbw_valid(struct country_chplan *ent, enum band_type band, u8 ch, u8 bw, u8 offset + , bool allow_primary_passive, bool allow_passive, struct rf_ctl_t *rfctl) { - u8 chplan_6g = RTW_CHPLAN_6G_NULL; + u8 domain_code_6g = RTW_CHPLAN_6G_NULL; u8 valid = 0; + if (band == BAND_ON_5G && !COUNTRY_CHPLAN_EN_11A(ent)) + goto exit; + if (bw >= CHANNEL_WIDTH_80 && !COUNTRY_CHPLAN_EN_11AC(ent)) goto exit; #if CONFIG_IEEE80211_BAND_6GHZ - chplan_6g = ent->chplan_6g; + domain_code_6g = ent->domain_code_6g; #endif - valid = rtw_chplan_is_chbw_valid(ent->chplan, chplan_6g, band, ch, bw, offset - , allow_primary_passive, allow_passive, regsty); + valid = rtw_chplan_is_bchbw_valid(ent->domain_code, domain_code_6g, band, ch, bw, offset + , allow_primary_passive, allow_passive, rfctl); exit: return valid; } -static void rtw_country_chplan_get_edcca_modes(const struct country_chplan *ent, u8 modes[]) +static void rtw_country_chplan_get_edcca_mode_of_bands(const struct country_chplan *ent, u8 mode_of_band[]) { - modes[BAND_ON_2_4G] = + mode_of_band[BAND_ON_24G] = ent->edcca_mode_2g_override != RTW_EDCCA_DEF ? ent->edcca_mode_2g_override : - rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_2g(ent->chplan)); + rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_2g(ent->domain_code)); #if CONFIG_IEEE80211_BAND_5GHZ - modes[BAND_ON_5G] = + mode_of_band[BAND_ON_5G] = ent->edcca_mode_5g_override != RTW_EDCCA_DEF ? ent->edcca_mode_5g_override : - rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_5g(ent->chplan)); + rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_5g(ent->domain_code)); #endif #if CONFIG_IEEE80211_BAND_6GHZ - modes[BAND_ON_6G] = + mode_of_band[BAND_ON_6G] = ent->edcca_mode_6g_override != RTW_EDCCA_DEF ? ent->edcca_mode_6g_override : - rtw_regd_to_edcca_mode(rtw_chplan_get_default_regd_6g(ent->chplan_6g)); + rtw_regd_to_edcca_mode_6g(rtw_chplan_get_default_regd_6g(ent->domain_code_6g)); #endif } -static void rtw_country_chplan_get_txpwr_lmts(const struct country_chplan *ent, u8 txpwr_lmt[]) +static void rtw_country_chplan_get_txpwr_lmt_of_bands(const struct country_chplan *ent, u8 txpwr_lmt_of_band[]) { - txpwr_lmt[BAND_ON_2_4G] = + txpwr_lmt_of_band[BAND_ON_24G] = ent->txpwr_lmt_override != TXPWR_LMT_DEF ? ent->txpwr_lmt_override : - rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_2g(ent->chplan)); + rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_2g(ent->domain_code)); #if CONFIG_IEEE80211_BAND_5GHZ - txpwr_lmt[BAND_ON_5G] = + txpwr_lmt_of_band[BAND_ON_5G] = ent->txpwr_lmt_override != TXPWR_LMT_DEF ? ent->txpwr_lmt_override : - rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_5g(ent->chplan)); + rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_5g(ent->domain_code)); #endif #if CONFIG_IEEE80211_BAND_6GHZ - txpwr_lmt[BAND_ON_6G] = + txpwr_lmt_of_band[BAND_ON_6G] = ent->txpwr_lmt_override != TXPWR_LMT_DEF ? ent->txpwr_lmt_override : - rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_6g(ent->chplan_6g)); + rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_6g(ent->domain_code_6g)); #endif } #ifdef CONFIG_80211D const char *const _cis_status_str[] = { [COUNTRY_IE_SLAVE_NOCOUNTRY] = "NOCOUNTRY", - [COUNTRY_IE_SLAVE_UNKNOWN] = "UNKNOWN", + [COUNTRY_IE_SLAVE_UNKNOWN] = "UNKNOWN", [COUNTRY_IE_SLAVE_OPCH_NOEXIST] = "OPCH_NOEXIST", [COUNTRY_IE_SLAVE_APPLICABLE] = "APPLICABLE", [COUNTRY_IE_SLAVE_STATUS_NUM] = "INVALID", @@ -3095,32 +1240,42 @@ const char *const _cis_status_str[] = { void dump_country_ie_slave_records(void *sel, struct rf_ctl_t *rfctl, bool skip_noset) { - int i; + int i, j; - RTW_PRINT_SEL(sel, " %-6s %-4s %-4s %s\n", "alpha2", "band", "opch", "status"); + RTW_PRINT_SEL(sel, " %-6s %-4s %-4s %s\n", "alpha2", "band", "opch", "status"); for (i = 0; i < CONFIG_IFACE_NUMBER; i++) { - if (skip_noset && strncmp(rfctl->cisr[i].alpha2, "\x00\x00", 2) == 0) - continue; - RTW_PRINT_SEL(sel, "%c%d "ALPHA2_FMT" %4s %4u %s\n" - , i == rfctl->effected_cisr_id ? '*' : ' ', i, ALPHA2_ARG(rfctl->cisr[i].alpha2) - , band_str(rfctl->cisr[i].band), rfctl->cisr[i].opch, cis_status_str(rfctl->cisr[i].status)); + for (j = 0; j < RTW_RLINK_MAX; j++) { + if (skip_noset && strncmp(rfctl->cisr[i][j].alpha2, "\x00\x00", 2) == 0) + continue; + RTW_PRINT_SEL(sel, "%c%d %d "ALPHA2_FMT" %4s %4u %s\n" + , rfctl->effected_cisr == &rfctl->cisr[i][j] ? '*' : ' ', i, j, ALPHA2_ARG(rfctl->cisr[i][j].alpha2) + , band_str(rfctl->cisr[i][j].band), rfctl->cisr[i][j].opch, cis_status_str(rfctl->cisr[i][j].status)); + } } } -enum country_ie_slave_status rtw_get_chplan_from_recv_country_ie(_adapter *adapter - , BAND_TYPE band, u8 opch, const u8 *country_ie, struct country_chplan *ent +enum country_ie_slave_status rtw_get_cisr_from_recv_country_ie(struct rf_ctl_t *rfctl + , enum band_type band, u8 opch, const u8 *country_ie , struct country_ie_slave_record *cisr, const char *caller_msg) { - struct registry_priv *regsty = adapter_to_regsty(adapter); const char *country_code = country_ie ? country_ie + 2 : NULL; - u8 chplan_6g = RTW_CHPLAN_6G_NULL; + u8 domain_code_6g = RTW_CHPLAN_6G_NULL; + struct country_chplan *ent = &cisr->chplan; enum country_ie_slave_status ret; + _rtw_memcpy(cisr->alpha2, country_code ? country_code : "\x00\x00", 2); + cisr->band = band; + cisr->opch = opch; + _rtw_memset(ent, 0, sizeof(*ent)); if (!country_code || strncmp(country_code, "XX", 2) == 0) { - if (caller_msg && country_code) - RTW_INFO("%s("ADPT_FMT") noncountry \"XX\"\n", caller_msg, ADPT_ARG(adapter)); + if (caller_msg) { + if (country_code) + RTW_INFO("%s noncountry \"XX\"\n", caller_msg); + else + RTW_INFO("%s no country ie\n", caller_msg); + } ret = COUNTRY_IE_SLAVE_NOCOUNTRY; goto exit; } @@ -3128,11 +1283,11 @@ enum country_ie_slave_status rtw_get_chplan_from_recv_country_ie(_adapter *adapt if (!rtw_get_chplan_from_country(country_code, ent)) { if (caller_msg) { if (is_alpha(country_code[0]) == _FALSE || is_alpha(country_code[1]) == _FALSE) { - RTW_INFO("%s("ADPT_FMT") country_code is not alpha2, use world wide instead\n" - , caller_msg, ADPT_ARG(adapter)); + RTW_INFO("%s country_code {0x%02x, 0x%02x} is not alpha2, use world wide instead\n" + , caller_msg, country_code[0], country_code[1]); } else { - RTW_INFO("%s("ADPT_FMT") unsupported country_code:\"%c%c\", use world wide\n" - , caller_msg, ADPT_ARG(adapter), country_code[0], country_code[1]); + RTW_INFO("%s unsupported country_code:\"%c%c\", use world wide\n" + , caller_msg, country_code[0], country_code[1]); } } rtw_get_chplan_worldwide(ent); @@ -3141,62 +1296,42 @@ enum country_ie_slave_status rtw_get_chplan_from_recv_country_ie(_adapter *adapt } #if CONFIG_IEEE80211_BAND_6GHZ - chplan_6g = ent->chplan_6g; + domain_code_6g = ent->domain_code_6g; #endif - if (!rtw_chplan_is_chbw_valid(ent->chplan, chplan_6g, band, opch - , CHANNEL_WIDTH_20, HAL_PRIME_CHNL_OFFSET_DONT_CARE, 1, 1, regsty) + if (!rtw_chplan_is_bchbw_valid(ent->domain_code, domain_code_6g, band, opch + , CHANNEL_WIDTH_20, CHAN_OFFSET_NO_EXT, 1, 1, rfctl) ) { - u8 edcca_modes[BAND_MAX]; + u8 edcca_mode[BAND_MAX]; if (caller_msg) { - RTW_INFO("%s("ADPT_FMT") \"%c%c\" no band:%s ch:%u, use world wide with ori edcca modes\n" - , caller_msg, ADPT_ARG(adapter), country_code[0], country_code[1], band_str(band), opch); + RTW_INFO("%s \"%c%c\" no band:%s ch:%u, use world wide with ori edcca mode\n" + , caller_msg, country_code[0], country_code[1], band_str(band), opch); } - rtw_country_chplan_get_edcca_modes(ent, edcca_modes); + rtw_country_chplan_get_edcca_mode_of_bands(ent, edcca_mode); rtw_get_chplan_worldwide(ent); - ent->edcca_mode_2g_override = edcca_modes[BAND_ON_2_4G]; + ent->edcca_mode_2g_override = edcca_mode[BAND_ON_24G]; #if CONFIG_IEEE80211_BAND_5GHZ - ent->edcca_mode_5g_override = edcca_modes[BAND_ON_5G]; + ent->edcca_mode_5g_override = edcca_mode[BAND_ON_5G]; #endif #if CONFIG_IEEE80211_BAND_6GHZ - ent->edcca_mode_6g_override = edcca_modes[BAND_ON_6G]; + ent->edcca_mode_6g_override = edcca_mode[BAND_ON_6G]; #endif ret = COUNTRY_IE_SLAVE_OPCH_NOEXIST; goto exit; } if (caller_msg) { - RTW_INFO("%s("ADPT_FMT") country_code:\"%c%c\" is applicapble\n" - , caller_msg, ADPT_ARG(adapter), country_code[0], country_code[1]); + RTW_INFO("%s country_code:\"%c%c\" is applicapble\n" + , caller_msg, country_code[0], country_code[1]); } ret = COUNTRY_IE_SLAVE_APPLICABLE; exit: - if (cisr) { - _rtw_memcpy(cisr->alpha2, country_code ? country_code : "\x00\x00", 2); - cisr->band = band; - cisr->opch = opch; - cisr->status = ret; - } + cisr->status = ret; return ret; } - -enum country_ie_slave_status rtw_get_chplan_from_cisrs(struct rf_ctl_t *rfctl - , struct country_chplan *ent, const char *caller_msg) -{ - struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); - _adapter *adapter = dvobj->padapters[rfctl->effected_cisr_id]; - struct country_ie_slave_record *cisr = &rfctl->cisr[rfctl->effected_cisr_id]; - const u8 country_ie[4] = {WLAN_EID_COUNTRY, 2, cisr->alpha2[0], cisr->alpha2[1]}; - enum country_ie_slave_status status; - - status = rtw_get_chplan_from_recv_country_ie(adapter, cisr->band, cisr->opch, country_ie, ent, NULL, caller_msg); - rtw_warn_on(cisr->status != status); - - return status; -} #endif /* CONFIG_80211D */ void dump_country_chplan(void *sel, const struct country_chplan *ent, bool regd_info) @@ -3204,48 +1339,49 @@ void dump_country_chplan(void *sel, const struct country_chplan *ent, bool regd_ char buf[16]; char *pos = buf; - if (ent->chplan == RTW_CHPLAN_UNSPECIFIED) - pos += sprintf(pos, "NA"); + if (ent->domain_code == RTW_CHPLAN_UNSPECIFIED) + pos += sprintf(pos, "UNSPEC"); else - pos += sprintf(pos, "0x%02X", ent->chplan); + pos += sprintf(pos, "0x%02X", ent->domain_code); #if CONFIG_IEEE80211_BAND_6GHZ - if (ent->chplan_6g == RTW_CHPLAN_6G_UNSPECIFIED) - pos += sprintf(pos, " NA"); + if (ent->domain_code_6g == RTW_CHPLAN_6G_UNSPECIFIED) + pos += sprintf(pos, " UNSPEC"); else - pos += sprintf(pos, " 0x%02X", ent->chplan_6g); + pos += sprintf(pos, " 0x%02X", ent->domain_code_6g); #endif RTW_PRINT_SEL(sel, "\"%c%c\", %s" , ent->alpha2[0], ent->alpha2[1], buf); if (regd_info) { - u8 edcca_modes[BAND_MAX]; - u8 txpwr_lmts[BAND_MAX]; + u8 edcca_mode[BAND_MAX]; + u8 txpwr_lmt[BAND_MAX]; - rtw_country_chplan_get_edcca_modes(ent, edcca_modes); - _RTW_PRINT_SEL(sel, " {%-6s", rtw_edcca_mode_str(edcca_modes[BAND_ON_2_4G])); + rtw_country_chplan_get_edcca_mode_of_bands(ent, edcca_mode); + _RTW_PRINT_SEL(sel, " {%-6s", rtw_edcca_mode_str(edcca_mode[BAND_ON_24G])); #if CONFIG_IEEE80211_BAND_5GHZ - _RTW_PRINT_SEL(sel, " %-6s", rtw_edcca_mode_str(edcca_modes[BAND_ON_5G])); + _RTW_PRINT_SEL(sel, " %-6s", rtw_edcca_mode_str(edcca_mode[BAND_ON_5G])); #endif #if CONFIG_IEEE80211_BAND_6GHZ - _RTW_PRINT_SEL(sel, " %-6s", rtw_edcca_mode_str(edcca_modes[BAND_ON_6G])); + _RTW_PRINT_SEL(sel, " %-6s", rtw_edcca_mode_str(edcca_mode[BAND_ON_6G])); #endif _RTW_PRINT_SEL(sel, "}"); - rtw_country_chplan_get_txpwr_lmts(ent, txpwr_lmts); - _RTW_PRINT_SEL(sel, " {%-7s", txpwr_lmt_str(txpwr_lmts[BAND_ON_2_4G])); + rtw_country_chplan_get_txpwr_lmt_of_bands(ent, txpwr_lmt); + _RTW_PRINT_SEL(sel, " {%-7s", txpwr_lmt_str(txpwr_lmt[BAND_ON_24G])); #if CONFIG_IEEE80211_BAND_5GHZ - _RTW_PRINT_SEL(sel, " %-7s", txpwr_lmt_str(txpwr_lmts[BAND_ON_5G])); + _RTW_PRINT_SEL(sel, " %-7s", txpwr_lmt_str(txpwr_lmt[BAND_ON_5G])); #endif #if CONFIG_IEEE80211_BAND_6GHZ - _RTW_PRINT_SEL(sel, " %-7s", txpwr_lmt_str(txpwr_lmts[BAND_ON_6G])); + _RTW_PRINT_SEL(sel, " %-7s", txpwr_lmt_str(txpwr_lmt[BAND_ON_6G])); #endif _RTW_PRINT_SEL(sel, "}"); } _RTW_PRINT_SEL(sel, " %s", COUNTRY_CHPLAN_EN_11AX(ent) ? "ax" : " "); _RTW_PRINT_SEL(sel, " %s", COUNTRY_CHPLAN_EN_11AC(ent) ? "ac" : " "); + _RTW_PRINT_SEL(sel, " %s", COUNTRY_CHPLAN_EN_11A(ent) ? "a" : " "); _RTW_PRINT_SEL(sel, "\n"); } @@ -3293,10 +1429,11 @@ void dump_country_list(void *sel) void dump_chplan_id_list(void *sel) { + u8 id_search_max = 255; u8 first = 1; int i; - for (i = 0; i < RTW_ChannelPlanMap_size; i++) { + for (i = 0; i <= id_search_max; i++) { if (!rtw_is_channel_plan_valid(i)) continue; @@ -3312,9 +1449,10 @@ void dump_chplan_id_list(void *sel) void dump_chplan_country_list(void *sel) { + u8 id_search_max = 255; int i; - for (i = 0; i < RTW_ChannelPlanMap_size; i++) { + for (i = 0; i <= id_search_max; i++) { struct country_chplan ent; u8 code[2]; u8 first; @@ -3325,7 +1463,7 @@ void dump_chplan_country_list(void *sel) first = 1; for (code[0] = 'A'; code[0] <= 'Z'; code[0]++) { for (code[1] = 'A'; code[1] <= 'Z'; code[1]++) { - if (!rtw_get_chplan_from_country(code, &ent) || ent.chplan != i) + if (!rtw_get_chplan_from_country(code, &ent) || ent.domain_code != i) continue; if (first) { @@ -3343,10 +1481,11 @@ void dump_chplan_country_list(void *sel) #if CONFIG_IEEE80211_BAND_6GHZ void dump_chplan_6g_id_list(void *sel) { + u8 id_search_max = 255; u8 first = 1; int i; - for (i = 0; i < rtw_chplan_6g_map_size; i++) { + for (i = 0; i <= id_search_max; i++) { if (!rtw_is_channel_plan_6g_valid(i)) continue; @@ -3362,9 +1501,10 @@ void dump_chplan_6g_id_list(void *sel) void dump_chplan_6g_country_list(void *sel) { + u8 id_search_max = 255; int i; - for (i = 0; i < rtw_chplan_6g_map_size; i++) { + for (i = 0; i <= id_search_max; i++) { struct country_chplan ent; u8 code[2]; u8 first; @@ -3375,7 +1515,7 @@ void dump_chplan_6g_country_list(void *sel) first = 1; for (code[0] = 'A'; code[0] <= 'Z'; code[0]++) { for (code[1] = 'A'; code[1] <= 'Z'; code[1]++) { - if (!rtw_get_chplan_from_country(code, &ent) || ent.chplan_6g != i) + if (!rtw_get_chplan_from_country(code, &ent) || ent.domain_code_6g != i) continue; if (first) { @@ -3394,113 +1534,2321 @@ void dump_chplan_6g_country_list(void *sel) #ifdef CONFIG_RTW_DEBUG void dump_chplan_test(void *sel) { - int i, j; - - /* check 2G CHD redundent */ - for (i = RTW_CHD_2G_00; i < RTW_CHD_2G_MAX; i++) { - for (j = RTW_CHD_2G_00; j < i; j++) { - if (CH_LIST_LEN(rtw_channel_def_2g[i]) == CH_LIST_LEN(rtw_channel_def_2g[j]) - && _rtw_memcmp(&CH_LIST_CH(rtw_channel_def_2g[i], 0), &CH_LIST_CH(rtw_channel_def_2g[j], 0), CH_LIST_LEN(rtw_channel_def_2g[i]) + 1) == _TRUE) - RTW_PRINT_SEL(sel, "2G chd:%u and %u is the same\n", i, j); - } - } - - /* check 2G CHD invalid channel */ - for (i = RTW_CHD_2G_00; i < RTW_CHD_2G_MAX; i++) { - for (j = 0; j < CH_LIST_LEN(rtw_channel_def_2g[i]); j++) { - if (rtw_ch2freq(CH_LIST_CH(rtw_channel_def_2g[i], j)) == 0) - RTW_PRINT_SEL(sel, "2G invalid ch:%u at (%d,%d)\n", CH_LIST_CH(rtw_channel_def_2g[i], j), i, j); - } - } - -#if CONFIG_IEEE80211_BAND_5GHZ - /* check 5G CHD redundent */ - for (i = RTW_CHD_5G_00; i < RTW_CHD_5G_MAX; i++) { - for (j = RTW_CHD_5G_00; j < i; j++) { - if (CH_LIST_LEN(rtw_channel_def_5g[i]) == CH_LIST_LEN(rtw_channel_def_5g[j]) - && _rtw_memcmp(&CH_LIST_CH(rtw_channel_def_5g[i], 0), &CH_LIST_CH(rtw_channel_def_5g[j], 0), CH_LIST_LEN(rtw_channel_def_5g[i]) + 1) == _TRUE) - RTW_PRINT_SEL(sel, "5G chd:%u and %u is the same\n", i, j); - } - } - - /* check 5G CHD invalid channel */ - for (i = RTW_CHD_5G_00; i < RTW_CHD_5G_MAX; i++) { - for (j = 0; j < CH_LIST_LEN(rtw_channel_def_5g[i]); j++) { - if (rtw_ch2freq(CH_LIST_CH(rtw_channel_def_5g[i], j)) == 0) - RTW_PRINT_SEL(sel, "5G invalid ch:%u at (%d,%d)\n", CH_LIST_CH(rtw_channel_def_5g[i], j), i, j); - } - } -#endif - -#if CONFIG_IEEE80211_BAND_6GHZ - /* check 6G CHD redundent */ - for (i = RTW_CHD_6G_00; i < RTW_CHD_6G_MAX; i++) { - for (j = RTW_CHD_6G_00; j < i; j++) { - if (CH_LIST_LEN(rtw_channel_def_6g[i]) == CH_LIST_LEN(rtw_channel_def_6g[j]) - && _rtw_memcmp(&CH_LIST_CH(rtw_channel_def_6g[i], 0), &CH_LIST_CH(rtw_channel_def_6g[j], 0), CH_LIST_LEN(rtw_channel_def_6g[i]) + 1) == _TRUE) - RTW_PRINT_SEL(sel, "6G chd:%u and %u is the same\n", i, j); - } - } - - /* check 6G CHD invalid channel */ - for (i = RTW_CHD_6G_00; i < RTW_CHD_6G_MAX; i++) { - for (j = 0; j < CH_LIST_LEN(rtw_channel_def_6g[i]); j++) { - if (rtw_6gch2freq(CH_LIST_CH(rtw_channel_def_6g[i], j)) == 0) - RTW_PRINT_SEL(sel, "6G invalid ch:%u at (%d,%d)\n", CH_LIST_CH(rtw_channel_def_6g[i], j), i, j); - } - } -#endif - - /* check chplan 2G_5G redundent */ - for (i = 0; i < RTW_ChannelPlanMap_size; i++) { - if (!rtw_is_channel_plan_valid(i)) - continue; - for (j = 0; j < i; j++) { - if (!rtw_is_channel_plan_valid(j)) - continue; - if (_rtw_memcmp(&RTW_ChannelPlanMap[i], &RTW_ChannelPlanMap[j], sizeof(RTW_ChannelPlanMap[i])) == _TRUE) - RTW_PRINT_SEL(sel, "channel plan 0x%02x and 0x%02x is the same\n", i, j); - } - } - -#if CONFIG_IEEE80211_BAND_6GHZ - /* check chplan 6G redundent */ - for (i = 0; i < rtw_chplan_6g_map_size; i++) { - if (!rtw_is_channel_plan_6g_valid(i)) - continue; - for (j = 0; j < i; j++) { - if (!rtw_is_channel_plan_6g_valid(j)) - continue; - if (_rtw_memcmp(&rtw_chplan_6g_map[i], &rtw_chplan_6g_map[j], sizeof(rtw_chplan_6g_map[i])) == _TRUE) - RTW_PRINT_SEL(sel, "channel plan 6g 0x%02x and 0x%02x is the same\n", i, j); - } - } -#endif - - - /* check country invalid chplan/chplan_6g */ -{ - struct country_chplan ent; - u8 code[2]; - - for (code[0] = 'A'; code[0] <= 'Z'; code[0]++) { - for (code[1] = 'A'; code[1] <= 'Z'; code[1]++) { - if (!rtw_get_chplan_from_country(code, &ent)) - continue; - if (!rtw_is_channel_plan_valid(ent.chplan)) - RTW_PRINT_SEL(sel, "country \"%c%c\" has invalid chplan:0x%02X\n", code[0], code[1], ent.chplan); - #if CONFIG_IEEE80211_BAND_6GHZ - if (!rtw_is_channel_plan_6g_valid(ent.chplan_6g)) - RTW_PRINT_SEL(sel, "country \"%c%c\" has invalid chplan_6g:0x%02X\n", code[0], code[1], ent.chplan_6g); - #endif - } - } -} - + if (regdb_ops.dump_chplan_test) + regdb_ops.dump_chplan_test(sel); } #endif /* CONFIG_RTW_DEBUG */ void dump_chplan_ver(void *sel) { - RTW_PRINT_SEL(sel, "%s%s-%s\n", RTW_DOMAIN_MAP_VER, RTW_DOMAIN_MAP_M_VER, RTW_COUNTRY_MAP_VER); + char buf[CHPLAN_VER_STR_BUF_LEN] = {0}; + + if (regdb_ops.get_ver_str) + regdb_ops.get_ver_str(buf, CHPLAN_VER_STR_BUF_LEN); + RTW_PRINT_SEL(sel, "%s\n", buf); } + +static struct regd_req_t *rtw_regd_req_alloc(void) +{ + struct regd_req_t *req; + + req = rtw_zmalloc(sizeof(struct regd_req_t)); + if (req) + _rtw_init_listhead(&req->list); + + return req; +} + +static struct regd_req_t *rtw_regd_req_alloc_with_country_chplan(struct country_chplan *ent) +{ + struct regd_req_t *req; + + req = rtw_regd_req_alloc(); + if (req) + _rtw_memcpy(&req->chplan, ent, sizeof(req->chplan)); + + return req; +} + +static void rtw_regd_req_free(struct regd_req_t *req) +{ + rtw_mfree(req, sizeof(*req)); +} + +static void rtw_regd_req_list_insert(struct rf_ctl_t *rfctl, struct regd_req_t *req) +{ + rtw_list_insert_tail(&req->list, &rfctl->regd_req_list); + rfctl->regd_req_num++; +} + +#if defined(CONFIG_80211D) || defined(CONFIG_REGD_SRC_FROM_OS) +static void rtw_regd_req_list_delete(struct rf_ctl_t *rfctl, struct regd_req_t *req) +{ + rtw_list_delete(&req->list); + rfctl->regd_req_num--; +} +#endif + +void rtw_regd_req_list_init(struct rf_ctl_t *rfctl, struct registry_priv *regsty) +{ + _rtw_mutex_init(&rfctl->regd_req_mutex); + _rtw_init_listhead(&rfctl->regd_req_list); + rfctl->init_regd_always_apply = regsty->init_regd_always_apply; + rfctl->user_regd_always_apply = regsty->user_regd_always_apply; +} + +void rtw_regd_req_list_free(struct rf_ctl_t *rfctl) +{ + struct regd_req_t *req; + _list *cur, *head; + + _rtw_mutex_lock_interruptible(&rfctl->regd_req_mutex); + + head = &rfctl->regd_req_list; + cur = get_next(head); + + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + cur = get_next(cur); + rtw_list_delete(&req->list); + if (req != &rfctl->init_req) + rtw_regd_req_free(req); + } + rfctl->user_req = NULL; + rfctl->regd_req_num = 0; + + _rtw_mutex_unlock(&rfctl->regd_req_mutex); + + _rtw_mutex_free(&rfctl->regd_req_mutex); +} + +void rtw_regd_watchdog_hdl(struct dvobj_priv *dvobj) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + + rtw_beacon_hint_expire(rfctl); + +#ifdef CONFIG_DFS_MASTER + rtw_rfctl_chset_chk_non_ocp_finish(rfctl); +#endif +} + +static enum channel_width rtw_regd_adjust_linking_bw(struct rf_ctl_t *rfctl + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset) +{ +#ifndef DBG_REGD_ADJUST_LINKING_BW +#define DBG_REGD_ADJUST_LINKING_BW 0 +#endif + + struct rtw_chset *chset = &rfctl->chset; + + #if DBG_REGD_ADJUST_LINKING_BW + RTW_INFO("%s %s ch:%u,%u,%u\n" + , __func__, band_str(band), ch, bw, offset); + #endif + + if (bw == CHANNEL_WIDTH_20) + goto exit; + + for (; bw > CHANNEL_WIDTH_20; bw--) { + if (rtw_chset_is_bchbw_non_ocp(chset, band, ch, bw, offset)) { + #if DBG_REGD_ADJUST_LINKING_BW + RTW_INFO("%s %s ch:%u,%u,%u not allowed by non_ocp\n", __func__, band_str(band), ch, bw, offset); + #endif + continue; + } + + if (!rtw_chset_is_bchbw_valid(chset, band, ch, bw, offset, true, true)) { + #if DBG_REGD_ADJUST_LINKING_BW + RTW_INFO("%s %s ch:%u,%u,%u not allowed by chset\n", __func__, band_str(band), ch, bw, offset); + #endif + continue; + } + + break; + } + + if (bw == CHANNEL_WIDTH_20) + offset = CHAN_OFFSET_NO_EXT; + +exit: + rtw_warn_on(!rtw_chset_is_bchbw_valid(chset, band, ch, bw, offset, true, true)); + rtw_warn_on(rtw_chset_is_bchbw_non_ocp(chset, band, ch, bw, offset)); + + return bw; +} + +enum channel_width alink_adjust_linking_bw_by_regd(struct _ADAPTER_LINK *alink + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset) +{ + _adapter *adapter = alink->adapter; + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + return rtw_regd_adjust_linking_bw(rfctl, band, ch, bw, offset); +} + +enum channel_width adapter_adjust_linking_bw_by_regd(_adapter *adapter + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + return rtw_regd_adjust_linking_bw(rfctl, band, ch, bw, offset); +} + +static void rtw_chplan_rtk_priv_domain_code_get_country_chplan(struct country_chplan *chplan + , u8 domain_code, u8 domain_code_6g) +{ + if (rtw_chplan_ids_is_world_wide(domain_code, domain_code_6g)) { + rtw_get_chplan_worldwide(chplan); + chplan->domain_code = domain_code; + #if CONFIG_IEEE80211_BAND_6GHZ + chplan->domain_code_6g = domain_code_6g; + #endif + } else { + SET_UNSPEC_ALPHA2(chplan->alpha2); + chplan->domain_code = domain_code; + #if CONFIG_IEEE80211_BAND_6GHZ + chplan->domain_code_6g = domain_code_6g; + #endif + chplan->edcca_mode_2g_override = RTW_EDCCA_DEF; + #if CONFIG_IEEE80211_BAND_5GHZ + chplan->edcca_mode_5g_override = RTW_EDCCA_DEF; + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + chplan->edcca_mode_6g_override = RTW_EDCCA_DEF; + #endif + chplan->txpwr_lmt_override = TXPWR_LMT_DEF; + #if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) || CONFIG_IEEE80211_BAND_5GHZ + chplan->proto_en = CHPLAN_PROTO_EN_ALL; + #endif + } +} + +static void rtw_rfctl_regd_status_init_by_req(struct rf_ctl_t *rfctl, struct regd_req_t *req) +{ + struct country_chplan *chplan = &req->chplan; + + rfctl->regd_src = req->src; + rfctl->regd_inr_bmp = BIT(req->inr); + _rtw_memcpy(rfctl->alpha2, chplan->alpha2, 2); + rfctl->domain_code = chplan->domain_code; +#if CONFIG_IEEE80211_BAND_6GHZ + rfctl->domain_code_6g = chplan->domain_code_6g; +#endif +#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) || CONFIG_IEEE80211_BAND_5GHZ + rfctl->proto_en = chplan->proto_en; +#endif +} + +#ifdef CONFIG_80211D +static bool rtw_rfctl_should_cis_enable(struct rf_ctl_t *rfctl) +{ + if (rfctl->regd_src != REGD_SRC_RTK_PRIV + || rtw_rfctl_is_disable_sw_channel_plan(rfctl_to_dvobj(rfctl))) + return false; + if (rfctl->cis_en_mode == CISEM_ENABLE) + return true; + if (rfctl->cis_en_mode == CISEM_ENABLE_WW) + return (!rfctl->user_req && IS_ALPHA2_WORLDWIDE(rfctl->init_req.chplan.alpha2)) /* INIT is WW (when no USER) */ + || (rfctl->user_req && IS_ALPHA2_WORLDWIDE(rfctl->user_req->chplan.alpha2)); /* USER is WW */ + return false; +} +#endif + +/* + * Description: + * Use hardware(efuse), driver parameter(registry) and default channel plan + * to decide which one should be used. + * + * Parameters: + * rfctl pointer of rfctl + * hw_alpha2 country code from HW (efuse/eeprom/mapfile) + * hw_chplan domain code from HW (efuse/eeprom/mapfile) + * hw_chplan_6g 6g domain code from HW (efuse/eeprom/mapfile) + * hw_force_chplan if forcing HW channel plan setting (efuse/eeprom/mapfile) + * will modified tif HW channel plan setting is invlid, will + */ +void rtw_rfctl_decide_init_chplan(struct rf_ctl_t *rfctl, + const char *hw_alpha2, u8 hw_chplan, u8 hw_chplan_6g, u8 hw_force_chplan) +{ + struct registry_priv *regsty; + char *sw_alpha2; + const struct country_chplan *country_ent = NULL; + struct country_chplan ent; + int chplan = -1; + int chplan_6g = -1; + + u8 sw_chplan; + u8 def_chplan = RTW_CHPLAN_WORLDWIDE; /* worldwide, used when HW, SW both invalid */ +#if CONFIG_IEEE80211_BAND_6GHZ + u8 sw_chplan_6g; + u8 def_chplan_6g = RTW_CHPLAN_6G_WORLDWIDE; /* worldwide, used when HW, SW both invalid */ +#endif + + if (hw_alpha2) { + if (strlen(hw_alpha2) != 2 || !is_alpha(hw_alpha2[0]) || is_alpha(hw_alpha2[1])) + RTW_PRINT("%s hw_alpha2 is not valid alpha2\n", __func__); + else if (rtw_get_chplan_from_country(hw_alpha2, &ent)) { + /* get chplan from hw country code, by pass hw chplan setting */ + country_ent = &ent; + chplan = ent.domain_code; + #if CONFIG_IEEE80211_BAND_6GHZ + chplan_6g = ent.domain_code_6g; + #endif + goto chk_sw_config; + } else + RTW_PRINT("%s unsupported hw_alpha2:\"%c%c\"\n", __func__, hw_alpha2[0], hw_alpha2[1]); + } + + if (rtw_is_channel_plan_valid(hw_chplan)) + chplan = hw_chplan; + else if (hw_force_chplan == _TRUE) { + RTW_PRINT("%s unsupported hw_chplan:0x%02X\n", __func__, hw_chplan); + /* hw infomaton invalid, refer to sw information */ + hw_force_chplan = _FALSE; + } + +#if CONFIG_IEEE80211_BAND_6GHZ + if (rtw_is_channel_plan_6g_valid(hw_chplan_6g)) + chplan_6g = hw_chplan_6g; + else if (hw_force_chplan == _TRUE) { + RTW_PRINT("%s unsupported hw_chplan_6g:0x%02X\n", __func__, hw_chplan_6g); + /* hw infomaton invalid, refer to sw information */ + hw_force_chplan = _FALSE; + } +#endif + +chk_sw_config: + if (hw_force_chplan == _TRUE) + goto done; + + regsty = dvobj_to_regsty(rfctl_to_dvobj(rfctl)); + sw_alpha2 = regsty->alpha2; + sw_chplan = regsty->channel_plan; + #if CONFIG_IEEE80211_BAND_6GHZ + sw_chplan_6g = regsty->channel_plan_6g; + #endif + + if (sw_alpha2 && !IS_ALPHA2_UNSPEC(sw_alpha2)) { + if (IS_ALPHA2_WORLDWIDE(sw_alpha2) + || rtw_get_chplan_from_country(sw_alpha2, &ent) + ) { + /* get chplan from sw country code, by pass sw chplan setting */ + if (IS_ALPHA2_WORLDWIDE(sw_alpha2)) + rtw_get_chplan_worldwide(&ent); + country_ent = &ent; + chplan = ent.domain_code; + #if CONFIG_IEEE80211_BAND_6GHZ + chplan_6g = ent.domain_code_6g; + #endif + goto done; + } else + RTW_PRINT("%s unsupported sw_alpha2:\"%c%c\"\n", __func__, sw_alpha2[0], sw_alpha2[1]); + } + + if (rtw_is_channel_plan_valid(sw_chplan)) { + /* cancel hw_alpha2 because chplan is specified by sw_chplan */ + country_ent = NULL; + chplan = sw_chplan; + } else if (sw_chplan != RTW_CHPLAN_UNSPECIFIED) + RTW_PRINT("%s unsupported sw_chplan:0x%02X\n", __func__, sw_chplan); + +#if CONFIG_IEEE80211_BAND_6GHZ + if (rtw_is_channel_plan_6g_valid(sw_chplan_6g)) { + /* cancel hw_alpha2 because chplan_6g is specified by sw_chplan_6g */ + country_ent = NULL; + chplan_6g = sw_chplan_6g; + } else if (sw_chplan_6g != RTW_CHPLAN_6G_UNSPECIFIED) + RTW_PRINT("%s unsupported sw_chplan_6g:0x%02X\n", __func__, sw_chplan_6g); +#endif + +done: + if (chplan == -1) { + RTW_PRINT("%s use def_chplan:0x%02X\n", __func__, def_chplan); + chplan = def_chplan; + } else + RTW_PRINT("%s chplan:0x%02X\n", __func__, chplan); + +#if CONFIG_IEEE80211_BAND_6GHZ + if (chplan_6g == -1) { + RTW_PRINT("%s use def_chplan_6g:0x%02X\n", __func__, def_chplan_6g); + chplan_6g = def_chplan_6g; + } else + RTW_PRINT("%s chplan_6g:0x%02X\n", __func__, chplan_6g); +#endif + + if (!country_ent) + rtw_chplan_rtk_priv_domain_code_get_country_chplan(&ent, chplan, chplan_6g); + else { + RTW_PRINT("%s country code:\"%c%c\"\n", __func__ + , country_ent->alpha2[0], country_ent->alpha2[1]); + } + + rfctl->disable_sw_chplan = hw_force_chplan; + + rfctl->init_req.src = REGD_SRC_RTK_PRIV; + rfctl->init_req.inr = RTW_REGD_SET_BY_INIT; + rfctl->init_req.applied = true; + _rtw_memcpy(&rfctl->init_req.chplan, &ent, sizeof(ent)); + rtw_regd_req_list_insert(rfctl, &rfctl->init_req); + + rtw_rfctl_regd_status_init_by_req(rfctl, &rfctl->init_req); + +#ifdef CONFIG_80211D + rfctl->cis_enabled = rtw_rfctl_should_cis_enable(rfctl); +#endif +} + +bool rtw_rfctl_is_disable_sw_channel_plan(struct dvobj_priv *dvobj) +{ + return dvobj_to_rfctl(dvobj)->disable_sw_chplan; +} + +static void get_str_of_set_chplan_keys(char *buf, u8 buf_len, struct SetChannelPlan_param *param) +{ + char *pos = buf; + +#ifdef CONFIG_80211D + if (param->regd_src == REGD_SRC_RTK_PRIV && param->inr == RTW_REGD_SET_BY_COUNTRY_IE) { + if (param->has_cisr) { + pos += snprintf(pos, buf_len - (pos - buf), "alid:%c alpha2:"ALPHA2_FMT" %s" + , param->cisr_alink_id >= RTW_RLINK_MAX ? '-' : '0' + param->cisr_alink_id + , ALPHA2_ARG(param->cisr.alpha2), cis_status_str(param->cisr.status)); + } else + *buf = '\0'; + } else +#endif + if (param->has_country) + pos += snprintf(pos, buf_len - (pos - buf), "alpha2:"ALPHA2_FMT, ALPHA2_ARG(param->country_ent.alpha2)); + else { + if (param->channel_plan == RTW_CHPLAN_UNSPECIFIED) + pos += snprintf(pos, buf_len - (pos - buf), "chplan:UNSPEC"); + else + pos += snprintf(pos, buf_len - (pos - buf), "chplan:0x%02X", param->channel_plan); + + #if CONFIG_IEEE80211_BAND_6GHZ + if (param->channel_plan_6g == RTW_CHPLAN_6G_UNSPECIFIED) + pos += snprintf(pos, buf_len - (pos - buf), " chplan_6g:UNSPEC"); + else + pos += snprintf(pos, buf_len - (pos - buf), " chplan_6g:0x%02X", param->channel_plan_6g); + #endif + } +} + +#define EXCL_CHS_STR_LEN (MAX_CHANNEL_NUM_2G_5G * 4) +#define EXCL_CHS_6G_STR_LEN (MAX_CHANNEL_NUM_6G * 4) +#if defined(CONFIG_RTW_DEBUG) || defined(CONFIG_PROC_DEBUG) +static char *get_str_of_u8_array(char *buf, size_t buf_len, u8 array[], size_t array_len, char delim, bool zero_end) +{ + char *pos = buf; + char d_str[2] = {delim, '\0'}; + int i; + + for (i = 0; i < array_len && (!zero_end || array[i]); i++) { + pos += snprintf(pos, buf_len - (pos - buf), "%s%u" + , pos == buf ? "" : d_str, array[i]); + if (pos >= buf + buf_len - 1) + break; + } + if (pos == buf) + buf[0] = '\0'; + + return buf; +} +#endif + +static int rtw_chplan_rtk_priv_req_prehdl_domain_code(struct rf_ctl_t *rfctl, struct SetChannelPlan_param *param, const char *caller) +{ + /* disallow invalid input */ + if ((param->channel_plan != RTW_CHPLAN_UNSPECIFIED + && !rtw_is_channel_plan_valid(param->channel_plan)) + ) { + RTW_WARN("%s invalid chplan:0x%02X\n", caller, param->channel_plan); + return _FAIL; + } + + #if CONFIG_IEEE80211_BAND_6GHZ + if (param->channel_plan_6g != RTW_CHPLAN_6G_UNSPECIFIED + && !rtw_is_channel_plan_6g_valid(param->channel_plan_6g) + ) { + RTW_WARN("%s invalid chplan_6g:0x%02X\n", caller, param->channel_plan_6g); + return _FAIL; + } + #endif + + if (param->channel_plan == RTW_CHPLAN_UNSPECIFIED + #if CONFIG_IEEE80211_BAND_6GHZ + && param->channel_plan_6g == RTW_CHPLAN_6G_UNSPECIFIED + #endif + && !param->has_country + ) { + /* confs only */ + if (param->confs.set_types) + return _SUCCESS; + + /* meaningless input */ + RTW_WARN("%s meaningless input\n", caller); + return _FAIL; + } + + /* use original value when unspecified */ + if (param->channel_plan == RTW_CHPLAN_UNSPECIFIED) + param->channel_plan = rfctl->domain_code; + #if CONFIG_IEEE80211_BAND_6GHZ + if (param->channel_plan_6g == RTW_CHPLAN_6G_UNSPECIFIED) + param->channel_plan_6g = rfctl->domain_code_6g; + #endif + + return _SUCCESS; +} + +static void rtw_chplan_rtk_priv_req_prehdl_country_ent(struct SetChannelPlan_param *param) +{ + if (!param->has_country) { + struct country_chplan *ent = ¶m->country_ent; + u8 chplan_6g = RTW_CHPLAN_6G_NULL; + + #if CONFIG_IEEE80211_BAND_6GHZ + chplan_6g = param->channel_plan_6g; + #endif + + rtw_chplan_rtk_priv_domain_code_get_country_chplan(ent, param->channel_plan, chplan_6g); + + param->has_country = 1; + } +} + +static void rtw_chplan_rtk_priv_req_prehdl_confs(struct rf_ctl_t *rfctl, struct chplan_confs *confs, const char *caller) +{ + if (confs->set_types & BIT(CHPLAN_CONFS_DIS_CH_FLAGS)) { + #if !CONFIG_DFS + /* force disable DFS channel because no DFS capability */ + confs->dis_ch_flags |= RTW_CHF_DFS; + #endif + if (rfctl->dis_ch_flags != confs->dis_ch_flags) { + char buf[RTW_CH_FLAGS_STR_LEN]; + + rfctl->dis_ch_flags = confs->dis_ch_flags; + RTW_INFO("%s set dis_ch_flags to %s\n", caller + , rtw_get_ch_flags_str(buf, confs->dis_ch_flags, ',')); + } else + confs->set_types &= ~BIT(CHPLAN_CONFS_DIS_CH_FLAGS); + } + + if (confs->set_types & BIT(CHPLAN_CONFS_EXCL_CHS)) { + if (_rtw_memcmp(rfctl->excl_chs, confs->excl_chs, sizeof(rfctl->excl_chs)) == _FALSE) { + char buf[EXCL_CHS_STR_LEN]; + + _rtw_memcpy(rfctl->excl_chs, confs->excl_chs, sizeof(rfctl->excl_chs)); + + RTW_INFO("%s set excl_chs to %s\n", caller + , get_str_of_u8_array(buf, sizeof(buf), confs->excl_chs, MAX_CHANNEL_NUM_2G_5G, ',', true)); + } else + confs->set_types &= ~BIT(CHPLAN_CONFS_EXCL_CHS); + } + +#if CONFIG_IEEE80211_BAND_6GHZ + if (confs->set_types & BIT(CHPLAN_CONFS_EXCL_CHS_6G)) { + if (_rtw_memcmp(rfctl->excl_chs_6g, confs->excl_chs_6g, sizeof(rfctl->excl_chs_6g)) == _FALSE) { + char buf[EXCL_CHS_6G_STR_LEN]; + + _rtw_memcpy(rfctl->excl_chs_6g, confs->excl_chs_6g, sizeof(rfctl->excl_chs_6g)); + + RTW_INFO("%s set excl_chs_6g to %s\n", caller + , get_str_of_u8_array(buf, sizeof(buf), confs->excl_chs_6g, MAX_CHANNEL_NUM_6G, ',', true)); + } else + confs->set_types &= ~BIT(CHPLAN_CONFS_EXCL_CHS_6G); + } +#endif + + if (confs->set_types & BIT(CHPLAN_CONFS_INIT_REGD_ALWAYS_APPLY)) { + bool val_changed = false; + + if (rfctl->init_regd_always_apply != confs->init_regd_always_apply) { + rfctl->init_regd_always_apply = confs->init_regd_always_apply; + val_changed = true; + RTW_INFO("%s set init_regd_always_apply to %d\n" + , caller, confs->init_regd_always_apply); + } + + if (!val_changed || rfctl->regd_src != REGD_SRC_RTK_PRIV + || rfctl->regd_req_num == 1 /* only INIT */ + ) + confs->set_types &= ~BIT(CHPLAN_CONFS_INIT_REGD_ALWAYS_APPLY); + } + + if (confs->set_types & BIT(CHPLAN_CONFS_USER_REGD_ALWAYS_APPLY)) { + bool val_changed = false; + + if (rfctl->user_regd_always_apply != confs->user_regd_always_apply) { + rfctl->user_regd_always_apply = confs->user_regd_always_apply; + val_changed = true; + RTW_INFO("%s set user_regd_always_apply to %d\n" + , caller, confs->user_regd_always_apply); + } + + if (!val_changed || rfctl->regd_src != REGD_SRC_RTK_PRIV + || !rfctl->user_req + || rfctl->regd_req_num == 2 /* only INIT & USER */ + ) + confs->set_types &= ~BIT(CHPLAN_CONFS_USER_REGD_ALWAYS_APPLY); + } + + if (confs->set_types & BIT(CHPLAN_CONFS_BCN_HINT_VALID_MS)) { + if (rfctl->bcn_hint_valid_ms != confs->bcn_hint_valid_ms) { + rfctl->bcn_hint_valid_ms = confs->bcn_hint_valid_ms; + RTW_INFO("%s set bcn_hint_valid_ms to %u\n", caller, confs->bcn_hint_valid_ms); + } + confs->set_types &= ~BIT(CHPLAN_CONFS_BCN_HINT_VALID_MS); /* setting done here */ + } + +#ifdef CONFIG_80211D + if (confs->set_types & BIT(CHPLAN_CONFS_CIS_EN_MODE)) { + if (CIS_EN_MODE_IS_VALID(confs->cis_en_mode) + && rfctl->cis_en_mode != confs->cis_en_mode + ) { + rfctl->cis_en_mode = confs->cis_en_mode; + RTW_INFO("%s set cis_en_mode to %u\n", caller, confs->cis_en_mode); + } else + confs->set_types &= ~BIT(CHPLAN_CONFS_CIS_EN_MODE); + } + + if (confs->set_types & BIT(CHPLAN_CONFS_CIS_FLAGS)) { + if (rfctl->cis_flags != confs->cis_flags) { + rfctl->cis_flags = confs->cis_flags; + RTW_INFO("%s set cis_flags to 0x%02x\n", caller, confs->cis_flags); + } else + confs->set_types &= ~BIT(CHPLAN_CONFS_CIS_FLAGS); + } + + if (confs->set_types & BIT(CHPLAN_CONFS_CIS_EN_ROLE)) { + if (rfctl->cis_en_role != confs->cis_en_role) { + rfctl->cis_en_role = confs->cis_en_role; + RTW_INFO("%s set cis_en_role to 0x%02x\n", caller, confs->cis_en_role); + } + confs->set_types &= ~BIT(CHPLAN_CONFS_CIS_EN_ROLE); /* setting done here */ + } + + if (confs->set_types & BIT(CHPLAN_CONFS_CIS_EN_IFBMP)) { + if (rfctl->cis_en_ifbmp != confs->cis_en_ifbmp) { + rfctl->cis_en_ifbmp = confs->cis_en_ifbmp; + RTW_INFO("%s set cis_en_ifbmp to 0x%02x\n", caller, confs->cis_en_ifbmp); + } + confs->set_types &= ~BIT(CHPLAN_CONFS_CIS_EN_IFBMP); /* setting done here */ + } + + if (confs->set_types & BIT(CHPLAN_CONFS_CIS_SCAN_INT_MS)) { + if (rfctl->cis_scan_int_ms != confs->cis_scan_int_ms) { + rfctl->cis_scan_int_ms = confs->cis_scan_int_ms; + RTW_INFO("%s set cis_scan_int_ms to %u\n", caller, confs->cis_scan_int_ms); + } + confs->set_types &= ~BIT(CHPLAN_CONFS_CIS_SCAN_INT_MS); /* setting done here */ + } +#endif +} + +static bool rtw_chplan_rtk_priv_req_prehdl_user(struct rf_ctl_t *rfctl, struct SetChannelPlan_param *param, const char *caller) +{ + bool effected = false; + + /* check input parameter */ + if (rtw_chplan_rtk_priv_req_prehdl_domain_code(rfctl, param, __func__) != _SUCCESS) + goto exit; + + if (param->channel_plan == RTW_CHPLAN_UNSPECIFIED) + ;/* confs only */ + else { + rtw_chplan_rtk_priv_req_prehdl_country_ent(param); + + /* allows only one user request */ + if (!rfctl->user_req) { + rfctl->user_req = rtw_regd_req_alloc_with_country_chplan(¶m->country_ent); + if (rfctl->user_req) { + rfctl->user_req->src = param->regd_src; + rfctl->user_req->inr = param->inr; + rtw_regd_req_list_insert(rfctl, rfctl->user_req); + effected = true; + } else + rtw_warn_on(1); + } else { + if (!_rtw_memcmp(&rfctl->user_req->chplan, ¶m->country_ent, sizeof(param->country_ent))) { + _rtw_memcpy(&rfctl->user_req->chplan, ¶m->country_ent, sizeof(param->country_ent)); + effected = true; + } + } + } + + /* check and update confs */ + rtw_chplan_rtk_priv_req_prehdl_confs(rfctl, ¶m->confs, caller); + +exit: + return effected || param->confs.set_types; +} + +#ifdef CONFIG_80211D +enum cisr_match { + CISR_MATCH = 0, /* identically match */ + CISR_MATCH_CHPLAN = 1, /* same chplan result */ + CISR_DIFF /* different (not above cases) */ +}; + +static enum cisr_match rtw_cisr_compare(struct country_ie_slave_record *a, struct country_ie_slave_record *b) +{ + if (_rtw_memcmp(a, b, sizeof(*a)) == true) + return CISR_MATCH; + if (_rtw_memcmp(&a->chplan, &b->chplan, sizeof(a->chplan)) == true) + return CISR_MATCH_CHPLAN; + return CISR_DIFF; +} + +static void rtw_rfctl_update_cis_enabled(struct rf_ctl_t *rfctl, const char *caller) +{ + bool enabled = rtw_rfctl_should_cis_enable(rfctl); + + if (rfctl->cis_enabled != enabled) { + rfctl->cis_enabled = enabled; + RTW_INFO("%s set cis_enabled to %d\n", __func__, enabled); + } +} + +static void rtw_regd_req_list_clear_ref_cnt_by_inr(struct rf_ctl_t *rfctl, enum rtw_regd_inr inr) +{ + struct regd_req_t *req; + _list *cur, *head; + + head = &rfctl->regd_req_list; + cur = get_next(head); + while (rtw_end_of_queue_search(head, cur) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + cur = get_next(cur); + if (req->inr == inr) + req->ref_cnt = 0; + } +} + +static bool rtw_regd_req_list_clear_zero_ref_req_by_inr(struct rf_ctl_t *rfctl, enum rtw_regd_inr inr) +{ + struct regd_req_t *req; + _list *cur, *head; + bool del = false; + + head = &rfctl->regd_req_list; + cur = get_next(head); + while (rtw_end_of_queue_search(head, cur) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + cur = get_next(cur); + if (req->inr == inr && req->ref_cnt == 0) { + rtw_regd_req_list_delete(rfctl, req); + rtw_regd_req_free(req); + del = true; + } + } + return del; +} + +static bool rtw_regd_req_list_add_country_ie_req(struct rf_ctl_t *rfctl, struct country_chplan *chplan) +{ + struct regd_req_t *req; + _list *cur, *head; + bool insert = false; + + head = &rfctl->regd_req_list; + cur = get_next(head); + while (rtw_end_of_queue_search(head, cur) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + if (req->inr == RTW_REGD_SET_BY_COUNTRY_IE + && _rtw_memcmp(&req->chplan, chplan, sizeof(*chplan)) == true + ) { + req->ref_cnt++; + break; + } + cur = get_next(cur); + } + if (rtw_end_of_queue_search(head, cur)) { + req = rtw_regd_req_alloc_with_country_chplan(chplan); + if (req) { + req->src = REGD_SRC_RTK_PRIV; + req->inr = RTW_REGD_SET_BY_COUNTRY_IE; + req->ref_cnt = 1; + rtw_regd_req_list_insert(rfctl, req); + insert = true; + } else + rtw_warn_on(1); + } + + return insert; +} + +static bool rtw_chplan_update_per_link_cisr(struct rf_ctl_t *rfctl, u8 iface_id + , u8 cisr_alink_id, struct country_ie_slave_record *cisr) +{ + struct country_ie_slave_record ori_cisr_cont[RTW_RLINK_MAX]; + u8 alink_id_s, alink_id_e, alink_id; + int i, j; + bool effected = false; + + if (cisr_alink_id < RTW_RLINK_MAX) { + /* specific alink */ + alink_id_s = cisr_alink_id; + alink_id_e = alink_id_s + 1; + } else { + /* all alinks of specific iface */ + alink_id_s = 0; + alink_id_e = RTW_RLINK_MAX; + } + + /* compare original record with same iface_id & spcified alink_id range */ + for (alink_id = alink_id_s; alink_id < alink_id_e; alink_id++) + if (rtw_cisr_compare(&rfctl->cisr[iface_id][alink_id], cisr) != CISR_MATCH) + break; + if (alink_id >= alink_id_e) { + /* record no change */ + goto exit; + } + + if (rfctl->cis_flags & CISF_INTERSECT) { + /* backup original content */ + for (alink_id = alink_id_s; alink_id < alink_id_e; alink_id++) + _rtw_memcpy(&ori_cisr_cont[alink_id], &rfctl->cisr[iface_id][alink_id], sizeof(ori_cisr_cont[alink_id])); + } + + /* update record */ + for (alink_id = alink_id_s; alink_id < alink_id_e; alink_id++) + _rtw_memcpy(&rfctl->cisr[iface_id][alink_id], cisr, sizeof(*cisr)); + + if (rfctl->cis_flags & CISF_INTERSECT) { + /* compare original record with same iface_id & spcified alink_id range for chplan change */ + for (alink_id = alink_id_s; alink_id < alink_id_e; alink_id++) + if (rtw_cisr_compare(&ori_cisr_cont[alink_id], cisr) > CISR_MATCH_CHPLAN) + break; + if (alink_id >= alink_id_e) { + /* chplan no change */ + goto exit; + } + } + + effected = true; + +exit: + return effected; +} + +static const u8 cisr_status_score[] = { /* conservative policy */ + [COUNTRY_IE_SLAVE_UNKNOWN] = 3, + [COUNTRY_IE_SLAVE_OPCH_NOEXIST] = 2, + [COUNTRY_IE_SLAVE_APPLICABLE] = 1, +}; + +static bool rtw_chplan_select_effected_per_link_cisr(struct rf_ctl_t *rfctl) +{ + struct country_ie_slave_record *new_ecisr = NULL; + int i, j; + bool changed; + + for (i = 0; i < CONFIG_IFACE_NUMBER; i++) { + for (j = 0; j < RTW_RLINK_MAX; j++) { + if (rfctl->cisr[i][j].status == COUNTRY_IE_SLAVE_NOCOUNTRY) + continue; + if (!new_ecisr + /* high score */ + || cisr_status_score[rfctl->cisr[i][j].status] > cisr_status_score[new_ecisr->status] + /* same score, prefer the same alpha2 as current effected(same score) one */ + || (cisr_status_score[rfctl->cisr[i][j].status] == cisr_status_score[new_ecisr->status] + && rfctl->effected_cisr + && rfctl->effected_cisr_cont.status == new_ecisr->status + && _rtw_memcmp(rfctl->effected_cisr_cont.alpha2, new_ecisr->alpha2, 2) == _FALSE + && _rtw_memcmp(rfctl->effected_cisr_cont.alpha2, rfctl->cisr[i][j].alpha2, 2) == _TRUE) + ) + new_ecisr = &rfctl->cisr[i][j]; + } + } + + changed = !!rfctl->effected_cisr ^ !!new_ecisr; + if (new_ecisr) { + if (rfctl->effected_cisr) { + /* compare new chplan with original */ + if (_rtw_memcmp(&rfctl->effected_cisr_cont.chplan, &new_ecisr->chplan, sizeof(new_ecisr->chplan)) == _TRUE) + changed = false; + else + changed = true; + } + _rtw_memcpy(&rfctl->effected_cisr_cont, new_ecisr, sizeof(*new_ecisr)); + } + + rfctl->effected_cisr = new_ecisr; + + return changed; +} + +static bool rtw_chplan_select_effected_scaned_network_cisr(_adapter *adapter) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + struct mlme_priv *mlme = &adapter->mlmepriv; + _queue *queue = &mlme->scanned_queue; + _list *list, *head; + struct wlan_network *scanned; + struct country_ie_slave_record *new_ecisr = NULL; + bool changed; + + _rtw_spinlock_bh(&queue->lock); + + head = get_list_head(queue); + list = get_next(head); + while (!rtw_end_of_queue_search(head, list)) { + scanned = LIST_CONTAINOR(list, struct wlan_network, list); + list = get_next(list); + + if (scanned->cisr.status == COUNTRY_IE_SLAVE_NOCOUNTRY) + continue; + + if (!new_ecisr + /* high score */ + || cisr_status_score[scanned->cisr.status] > cisr_status_score[new_ecisr->status] + /* same score, prefer the same alpha2 as current effected(same score) one */ + || (cisr_status_score[scanned->cisr.status] == cisr_status_score[new_ecisr->status] + && rfctl->effected_cisr + && rfctl->effected_cisr_cont.status == new_ecisr->status + && _rtw_memcmp(rfctl->effected_cisr_cont.alpha2, new_ecisr->alpha2, 2) == _FALSE + && _rtw_memcmp(rfctl->effected_cisr_cont.alpha2, scanned->cisr.alpha2, 2) == _TRUE) + ) + new_ecisr = &scanned->cisr; + } + + changed = !!rfctl->effected_cisr ^ !!new_ecisr; + if (new_ecisr) { + if (rfctl->effected_cisr) { + /* compare new chplan with original */ + if (_rtw_memcmp(&rfctl->effected_cisr_cont.chplan, &new_ecisr->chplan, sizeof(new_ecisr->chplan)) == _TRUE) + changed = false; + else + changed = true; + } + _rtw_memcpy(&rfctl->effected_cisr_cont, new_ecisr, sizeof(*new_ecisr)); + } + + rfctl->effected_cisr = new_ecisr; + + _rtw_spinunlock_bh(&queue->lock); + + return changed; +} + +static bool rtw_chplan_update_effected_cisr(_adapter *adapter) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + bool changed = false; + + if (rfctl->cis_enabled && !(rfctl->cis_flags & CISF_INTERSECT)) { + /* select new effected one and compare for chplan change */ + if (rfctl->cis_flags & CISF_ENV_BSS) { + if (!rtw_chplan_select_effected_scaned_network_cisr(adapter)) + goto exit; + } else { + if (!rtw_chplan_select_effected_per_link_cisr(rfctl)) + goto exit; + } + } else { + if (!rfctl->effected_cisr) + goto exit; + rfctl->effected_cisr = NULL; + } + + changed = true; + +exit: + return changed; +} + +static bool rtw_regd_req_list_add_country_ie_req_from_per_link_cisr(struct rf_ctl_t *rfctl) +{ + int i, j; + bool effected = false; + + for (i = 0; i < CONFIG_IFACE_NUMBER; i++) + for (j = 0; j < RTW_RLINK_MAX; j++) + if (rfctl->cisr[i][j].status != COUNTRY_IE_SLAVE_NOCOUNTRY) + effected |= rtw_regd_req_list_add_country_ie_req(rfctl, &rfctl->cisr[i][j].chplan); + + return effected; +} + +static bool rtw_regd_req_list_add_country_ie_req_from_scanned_network_cisr(_adapter *adapter) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + struct mlme_priv *mlme = &adapter->mlmepriv; + _queue *queue = &mlme->scanned_queue; + _list *list, *head; + struct wlan_network *scanned; + bool effected = false; + + _rtw_spinlock_bh(&queue->lock); + + head = get_list_head(queue); + list = get_next(head); + while (!rtw_end_of_queue_search(head, list)) { + scanned = LIST_CONTAINOR(list, struct wlan_network, list); + list = get_next(list); + + if (scanned->cisr.status != COUNTRY_IE_SLAVE_NOCOUNTRY) + effected |= rtw_regd_req_list_add_country_ie_req(rfctl, &scanned->cisr.chplan); + } + + _rtw_spinunlock_bh(&queue->lock); + + return effected; +} + +static bool rtw_chplan_rtk_priv_req_prehdl_country_ie(_adapter *adapter, struct SetChannelPlan_param *param, const char *caller) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + struct chplan_confs *confs = ¶m->confs; + u16 apply_confs_bmp = BIT(CHPLAN_CONFS_CIS_EN_MODE) | BIT(CHPLAN_CONFS_CIS_FLAGS); + bool confs_change = confs->set_types & apply_confs_bmp; + bool effected_cisr_changed; + bool effected = false; + + if (param->has_cisr) { + #ifdef CONFIG_RTW_DEBUG + if (rtw_drv_log_level >= _DRV_DEBUG_) { + RTW_PRINT("%s cisr before\n", __func__); + dump_country_ie_slave_records(RTW_DBGDUMP, rfctl, 0); + } + #endif + + if (!rtw_chplan_update_per_link_cisr(rfctl, adapter->iface_id, param->cisr_alink_id, ¶m->cisr) && !confs_change) + goto exit; + } + + effected_cisr_changed = rtw_chplan_update_effected_cisr(adapter); + + if (param->has_cisr) { + #ifdef CONFIG_RTW_DEBUG + if (rtw_drv_log_level >= _DRV_DEBUG_) { + RTW_PRINT("%s cisr after\n", __func__); + dump_country_ie_slave_records(RTW_DBGDUMP, rfctl, 0); + } + #endif + } + + if (!effected_cisr_changed && !(rfctl->cis_flags & CISF_INTERSECT) && !confs_change) + goto exit; + + rtw_regd_req_list_clear_ref_cnt_by_inr(rfctl, RTW_REGD_SET_BY_COUNTRY_IE); + + if (rfctl->cis_enabled) { + if (rfctl->cis_flags & CISF_INTERSECT) { + if (rfctl->cis_flags & CISF_ENV_BSS) + effected |= rtw_regd_req_list_add_country_ie_req_from_scanned_network_cisr(adapter); + else + effected |= rtw_regd_req_list_add_country_ie_req_from_per_link_cisr(rfctl); + + } else if (rfctl->effected_cisr) + effected |= rtw_regd_req_list_add_country_ie_req(rfctl, &rfctl->effected_cisr_cont.chplan); + } + + effected |= rtw_regd_req_list_clear_zero_ref_req_by_inr(rfctl, RTW_REGD_SET_BY_COUNTRY_IE); + confs->set_types &= ~apply_confs_bmp; + +exit: + return effected; +} +#endif /* CONFIG_80211D */ + +static bool rtw_chplan_req_prehdl(_adapter *adapter, struct SetChannelPlan_param *param, const char *caller) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + bool effected = false; + char buf[32]; + + get_str_of_set_chplan_keys(buf, 32, param); + RTW_INFO("%s iface_id:%u src:%s inr:%s %s\n", caller, adapter->iface_id + , regd_src_str(param->regd_src), regd_inr_str(param->inr), buf); + + if (param->inr == RTW_REGD_SET_BY_INIT) { + /* init should not done here */ + rtw_warn_on(1); + goto exit; + } + + if (param->regd_src == REGD_SRC_RTK_PRIV) { + if (param->inr == RTW_REGD_SET_BY_USER) { + #ifdef CONFIG_80211D + struct chplan_confs *confs = ¶m->confs; + bool cis_enabled = rfctl->cis_enabled; + #endif + + if (!rtw_chplan_rtk_priv_req_prehdl_user(rfctl, param, __func__)) + goto exit; + + #ifdef CONFIG_80211D + /* + * rfctl.regd_src is not allowed to change from REGD_SRC_OS to REGD_SRC_RTK_PRIV + * get new status and update to rfctl.cis_enabled here is safe and necessary for logic below + */ + rtw_rfctl_update_cis_enabled(rfctl, __func__); + + if ((confs->set_types & BIT(CHPLAN_CONFS_CIS_FLAGS)) /* flags change */ + || cis_enabled != rfctl->cis_enabled /* enable status change */ + ) { + if (!rtw_chplan_rtk_priv_req_prehdl_country_ie(adapter, param, __func__) && !confs->set_types) + goto exit; + } + #endif + } + #ifdef CONFIG_80211D + else if (param->inr == RTW_REGD_SET_BY_COUNTRY_IE) { + if (!rtw_chplan_rtk_priv_req_prehdl_country_ie(adapter, param, __func__)) + goto exit; + } + #endif + else { + rtw_warn_on(1); + goto exit; + } + } +#ifdef CONFIG_REGD_SRC_FROM_OS + else if (param->regd_src == REGD_SRC_OS) { + /* keep init req and another recent one req */ + struct regd_req_t *req; + _list *cur, *head; + + head = &rfctl->regd_req_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + cur = get_next(cur); + if (req->inr == RTW_REGD_SET_BY_INIT) + continue; + if (req->inr == RTW_REGD_SET_BY_USER) + rfctl->user_req = NULL; + rtw_regd_req_list_delete(rfctl, req); + rtw_regd_req_free(req); + } + + req = rtw_regd_req_alloc_with_country_chplan(¶m->country_ent); + if (req) { + req->src = param->regd_src; + req->inr = param->inr; + rtw_regd_req_list_insert(rfctl, req); + if (req->inr == RTW_REGD_SET_BY_USER) + rfctl->user_req = req; + } else { + rtw_warn_on(1); + goto exit; + } + } +#endif + else { + rtw_warn_on(1); + goto exit; + } + + effected = true; + +exit: + return effected; +} + +static void rtw_rfctl_regd_req_sel_and_status_update(struct rf_ctl_t *rfctl) +{ + struct regd_req_t *req; + struct country_chplan *chplan; + _list *cur, *head; + enum regd_src_t applied_src = REGD_SRC_NUM; + enum rtw_regd_inr applied_inr = RTW_REGD_SET_BY_NUM; + + /* decide applied_src (highest src) */ + head = &rfctl->regd_req_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + cur = get_next(cur); + if (applied_src == REGD_SRC_NUM || req->src > applied_src) + applied_src = req->src; + } + + /* decide applied_inr (highest inr) */ + head = &rfctl->regd_req_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + cur = get_next(cur); + if (req->src != applied_src) + continue; + if (applied_inr == RTW_REGD_SET_BY_NUM || req->inr > applied_inr) + applied_inr = req->inr; + } + + rfctl->regd_src = REGD_SRC_NUM; + head = &rfctl->regd_req_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + req = LIST_CONTAINOR(cur, struct regd_req_t, list); + cur = get_next(cur); + + /* mark req with different src as not applied*/ + if (applied_src != req->src) { + req->applied = false; + continue; + } + /* mark req with target inr or always_apply INIT/USER req as applied*/ + req->applied = applied_inr == req->inr + || (req->inr == RTW_REGD_SET_BY_INIT && rfctl->init_regd_always_apply) + || (req->inr == RTW_REGD_SET_BY_USER && rfctl->user_regd_always_apply); + if (!req->applied) + continue; + + chplan = &req->chplan; + if (rfctl->regd_src == REGD_SRC_NUM) { + /* first applied req */ + rtw_rfctl_regd_status_init_by_req(rfctl, req); + + } else if (rfctl->regd_src == req->src) { + rfctl->regd_inr_bmp |= BIT(req->inr); + if (_rtw_memcmp(rfctl->alpha2, chplan->alpha2, 2) != _TRUE + || rfctl->domain_code != chplan->domain_code + #if CONFIG_IEEE80211_BAND_6GHZ + || rfctl->domain_code_6g != chplan->domain_code_6g + #endif + ) + SET_INTERSECTEDC_ALPHA2(rfctl->alpha2); + if (rfctl->domain_code != chplan->domain_code) + rfctl->domain_code = RTW_CHPLAN_UNSPECIFIED; + #if CONFIG_IEEE80211_BAND_6GHZ + if (rfctl->domain_code_6g != chplan->domain_code_6g) + rfctl->domain_code_6g = RTW_CHPLAN_UNSPECIFIED; + #endif + #if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) || CONFIG_IEEE80211_BAND_5GHZ + rfctl->proto_en &= chplan->proto_en; + #endif + } else { + RTW_WARN("%s req->src:%s != applied src:%s\n", __func__, regd_src_str(req->src), regd_src_str(rfctl->regd_src)); + rtw_warn_on(1); + } + } + + #ifdef CONFIG_80211D + rtw_rfctl_update_cis_enabled(rfctl, __func__); + #endif +} + +u8 rtw_set_chplan_hdl(_adapter *adapter, u8 *pbuf) +{ + struct SetChannelPlan_param *param; + struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); +#ifdef CONFIG_IOCTL_CFG80211 + struct get_chplan_resp *chplan; +#endif + + if (!pbuf) + return H2C_PARAMETERS_ERROR; + + param = (struct SetChannelPlan_param *)pbuf; + + _rtw_mutex_lock_interruptible(&rfctl->regd_req_mutex); + + if (!rtw_chplan_req_prehdl(adapter, param, __func__)) { + _rtw_mutex_unlock(&rfctl->regd_req_mutex); + goto exit; + } + + rtw_rfctl_regd_req_sel_and_status_update(rfctl); + +#if CONFIG_TXPWR_LIMIT + rtw_txpwr_update_cur_lmt_regs(dvobj, false); +#endif + + rtw_edcca_mode_update(dvobj, false); + + rtw_rfctl_chset_apply_regulatory(dvobj, false); + + _rtw_mutex_unlock(&rfctl->regd_req_mutex); + + op_class_pref_apply_regulatory(rfctl, REG_CHANGE); + init_channel_list(adapter); + +#ifdef CONFIG_IOCTL_CFG80211 + if (rtw_get_chplan_cmd(adapter, RTW_CMDF_DIRECTLY, &chplan) == _SUCCESS) { + if (!param->rtnl_lock_needed) + rtw_regd_change_complete_sync(adapter_to_wiphy(adapter), chplan, 0); + else + rtw_warn_on(rtw_regd_change_complete_async(adapter_to_wiphy(adapter), chplan) != _SUCCESS); + } else + rtw_warn_on(1); +#endif + + rtw_nlrtw_reg_change_event(adapter); + + #ifdef CONFIG_LPS + LPS_Leave(adapter, "SET_CHPLAN"); + #endif + + if (rtw_txpwr_hal_get_pwr_lmt_en(dvobj) && rtw_hw_is_init_completed(dvobj)) + rtw_update_txpwr_level(dvobj, HW_BAND_MAX); + +exit: + return H2C_SUCCESS; +} + +static u8 _rtw_set_chplan_cmd(_adapter *adapter, int flags + , u8 chplan, u8 chplan_6g, const struct country_chplan *country_ent + , enum regd_src_t regd_src, enum rtw_regd_inr inr + , const struct country_ie_slave_record *cisr, u8 cisr_alink_id + , struct chplan_confs *confs) +{ + struct cmd_obj *cmdobj; + struct SetChannelPlan_param *parm; + struct cmd_priv *pcmdpriv = &adapter->cmdpriv; + struct submit_ctx sctx; +#ifdef PLATFORM_LINUX + bool rtnl_lock_needed = rtw_rtnl_lock_needed(adapter_to_dvobj(adapter)); +#endif + u8 res = _SUCCESS; + + /* check if allow software config */ + if (rtw_rfctl_is_disable_sw_channel_plan(adapter_to_dvobj(adapter)) == _TRUE) { + res = _FAIL; + goto exit; + } + + if (country_ent) { + /* if country_entry is provided, replace chplan */ + chplan = country_ent->domain_code; + #if CONFIG_IEEE80211_BAND_6GHZ + chplan_6g = country_ent->domain_code_6g; + #endif + } + + /* prepare cmd parameter */ + parm = rtw_zmalloc(sizeof(*parm)); + if (parm == NULL) { + res = _FAIL; + goto exit; + } + parm->regd_src = regd_src; + parm->inr = inr; + if (country_ent) { + _rtw_memcpy(&parm->country_ent, country_ent, sizeof(parm->country_ent)); + parm->has_country = true; + } + parm->channel_plan = chplan; +#if CONFIG_IEEE80211_BAND_6GHZ + parm->channel_plan_6g = chplan_6g; +#endif +#ifdef CONFIG_80211D + if (cisr) { + _rtw_memcpy(&parm->cisr, cisr, sizeof(*cisr)); + parm->cisr_alink_id = cisr_alink_id; + parm->has_cisr = true; + } +#endif + + if (confs) + _rtw_memcpy(&parm->confs, confs, sizeof(parm->confs)); + +#ifdef PLATFORM_LINUX + if (flags & (RTW_CMDF_DIRECTLY | RTW_CMDF_WAIT_ACK)) + parm->rtnl_lock_needed = rtnl_lock_needed; /* synchronous call, follow caller's */ + else + parm->rtnl_lock_needed = 1; /* asynchronous call, always needed */ +#endif + + if (flags & RTW_CMDF_DIRECTLY) { + /* no need to enqueue, do the cmd hdl directly and free cmd parameter */ + if (H2C_SUCCESS != rtw_set_chplan_hdl(adapter, (u8 *)parm)) + res = _FAIL; + rtw_mfree(parm, sizeof(*parm)); + } else { + /* need enqueue, prepare cmd_obj and enqueue */ + cmdobj = rtw_zmalloc(sizeof(*cmdobj)); + if (cmdobj == NULL) { + res = _FAIL; + rtw_mfree(parm, sizeof(*parm)); + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(cmdobj, parm, CMD_SET_CHANPLAN); + CMD_OBJ_SET_HWBAND(cmdobj, HW_BAND_0); + + if (flags & RTW_CMDF_WAIT_ACK) { + cmdobj->sctx = &sctx; + rtw_sctx_init(&sctx, 2000); + } + + res = rtw_enqueue_cmd(pcmdpriv, cmdobj); + + if (res == _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) { + rtw_sctx_wait(&sctx, __func__); + _rtw_mutex_lock_interruptible(&pcmdpriv->sctx_mutex); + if (sctx.status == RTW_SCTX_SUBMITTED) + cmdobj->sctx = NULL; + _rtw_mutex_unlock(&pcmdpriv->sctx_mutex); + if (sctx.status != RTW_SCTX_DONE_SUCCESS) + res = _FAIL; + } + + /* allow set channel plan when cmd_thread is not running */ + if (res != _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) { + parm = rtw_zmalloc(sizeof(*parm)); + if (parm == NULL) { + res = _FAIL; + goto exit; + } + parm->regd_src = regd_src; + parm->inr = inr; + if (country_ent) { + _rtw_memcpy(&parm->country_ent, country_ent, sizeof(parm->country_ent)); + parm->has_country = true; + } + parm->channel_plan = chplan; + #if CONFIG_IEEE80211_BAND_6GHZ + parm->channel_plan_6g = chplan_6g; + #endif + #ifdef CONFIG_80211D + if (cisr) { + _rtw_memcpy(&parm->cisr, cisr, sizeof(*cisr)); + parm->cisr_alink_id = cisr_alink_id; + parm->has_cisr = true; + } + #endif + if (confs) + _rtw_memcpy(&parm->confs, confs, sizeof(parm->confs)); + #ifdef PLATFORM_LINUX + parm->rtnl_lock_needed = rtnl_lock_needed; /* synchronous call, follow caller's */ + #endif + + if (H2C_SUCCESS != rtw_set_chplan_hdl(adapter, (u8 *)parm)) + res = _FAIL; + else + res = _SUCCESS; + rtw_mfree(parm, sizeof(*parm)); + } + } + +exit: + return res; +} + +u8 rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, u8 chplan_6g, enum rtw_regd_inr inr) +{ + return _rtw_set_chplan_cmd(adapter, flags + , chplan, chplan_6g, NULL + , REGD_SRC_RTK_PRIV, inr + , NULL, RTW_RLINK_MAX + , NULL); +} + +u8 rtw_set_country_cmd(_adapter *adapter, int flags, const char *country_code, enum rtw_regd_inr inr) +{ + struct country_chplan ent; + + if (IS_ALPHA2_WORLDWIDE(country_code)) { + rtw_get_chplan_worldwide(&ent); + goto cmd; + } + + if (is_alpha(country_code[0]) == _FALSE + || is_alpha(country_code[1]) == _FALSE + ) { + RTW_PRINT("%s input country_code is not alpha2\n", __func__); + return _FAIL; + } + + if (!rtw_get_chplan_from_country(country_code, &ent)) { + RTW_PRINT("%s unsupported country_code:\"%c%c\"\n", __func__, country_code[0], country_code[1]); + return _FAIL; + } + +cmd: + RTW_PRINT("%s country_code:\"%c%c\"\n", __func__, country_code[0], country_code[1]); + + return _rtw_set_chplan_cmd(adapter, flags + , RTW_CHPLAN_UNSPECIFIED, RTW_CHPLAN_6G_UNSPECIFIED, &ent + , REGD_SRC_RTK_PRIV, inr + , NULL, RTW_RLINK_MAX + , NULL); +} + +u8 rtw_set_chplan_confs_cmd(_adapter *adapter, int flags, struct chplan_confs *confs) +{ + return _rtw_set_chplan_cmd(adapter, flags + , RTW_CHPLAN_UNSPECIFIED, RTW_CHPLAN_6G_UNSPECIFIED, NULL + , REGD_SRC_RTK_PRIV, RTW_REGD_SET_BY_USER + , NULL, RTW_RLINK_MAX + , confs); +} + +#ifdef CONFIG_PROC_DEBUG +static const char *const chplan_confs_type_str[] = { + [CHPLAN_CONFS_DIS_CH_FLAGS] = "dis_ch_flags", + [CHPLAN_CONFS_EXCL_CHS] = "excl_chs", + [CHPLAN_CONFS_EXCL_CHS_6G] = "excl_chs_6g", + [CHPLAN_CONFS_INIT_REGD_ALWAYS_APPLY] = "init_regd_always_apply", + [CHPLAN_CONFS_USER_REGD_ALWAYS_APPLY] = "user_regd_always_apply", + [CHPLAN_CONFS_BCN_HINT_VALID_MS] = "bcn_hint_valid_ms", + [CHPLAN_CONFS_CIS_EN_MODE] = "cis_en_mode", + [CHPLAN_CONFS_CIS_FLAGS] = "cis_flags", + [CHPLAN_CONFS_CIS_EN_IFBMP] = "cis_en_ifbmp", + [CHPLAN_CONFS_CIS_EN_ROLE] = "cis_en_role", + [CHPLAN_CONFS_CIS_SCAN_INT_MS] = "cis_scan_int_ms", +}; + +static enum chplan_confs_type get_chplan_confs_type_from_str(const char *str, size_t str_len) +{ + u8 i; + + for (i = 0; i < CHPLAN_CONFS_NUM; i++) + if (str_len == strlen(chplan_confs_type_str[i]) + && strncmp(str, chplan_confs_type_str[i], str_len) == 0) + return i; + return CHPLAN_CONFS_NUM; +} + +static void rtw_parse_chplan_confs_type_arg_str(struct chplan_confs *confs, enum chplan_confs_type type, char *str) +{ + if (type == CHPLAN_CONFS_DIS_CH_FLAGS) { + confs->set_types |= BIT(type); + if (strlen(str)) { + char *c; + enum rtw_ch_type ch_type; + + for (c = strsep(&str, ","); c; c = strsep(&str, ",")) { + ch_type = get_ch_type_from_str(c, strlen(c)); + if (ch_type != RTW_CHT_NUM) + confs->dis_ch_flags |= BIT(ch_type); + } + } + + } else if (type == CHPLAN_CONFS_EXCL_CHS) { + confs->set_types |= BIT(type); + if (strlen(str)) { + char *c; + int ch, ch_num = 0; + + for (c = strsep(&str, ","); c && ch_num < MAX_CHANNEL_NUM_2G_5G; c = strsep(&str, ",")) { + if (sscanf(c, "%d", &ch) == 1 && ch > 0 && ch < 256) + confs->excl_chs[ch_num++] = ch; + } + } + +#if CONFIG_IEEE80211_BAND_6GHZ + } else if (type == CHPLAN_CONFS_EXCL_CHS_6G) { + confs->set_types |= BIT(type); + if (strlen(str)) { + char *c; + int ch, ch_num = 0; + + for (c = strsep(&str, ","); c && ch_num < MAX_CHANNEL_NUM_6G; c = strsep(&str, ",")) { + if (sscanf(c, "%d", &ch) == 1 && ch > 0 && ch < 256) + confs->excl_chs_6g[ch_num++] = ch; + } + } +#endif + + } else if (type == CHPLAN_CONFS_INIT_REGD_ALWAYS_APPLY) { + if (strlen(str)) { + int val; + + if (sscanf(str, "%d", &val) == 1) { + confs->set_types |= BIT(type); + confs->init_regd_always_apply = !!val; + } + } + + } else if (type == CHPLAN_CONFS_USER_REGD_ALWAYS_APPLY) { + if (strlen(str)) { + int val; + + if (sscanf(str, "%d", &val) == 1) { + confs->set_types |= BIT(type); + confs->user_regd_always_apply = !!val; + } + } + + } else if (type == CHPLAN_CONFS_BCN_HINT_VALID_MS) { + if (strlen(str)) { + u32 ms; + + if (sscanf(str, "%u", &ms) == 1) { + confs->set_types |= BIT(type); + confs->bcn_hint_valid_ms = ms; + } + } + +#ifdef CONFIG_80211D + } else if (type == CHPLAN_CONFS_CIS_EN_MODE) { + if (strlen(str)) { + u8 mode; + + if (sscanf(str, "%hhu", &mode) == 1) { + confs->set_types |= BIT(type); + confs->cis_en_mode = mode; + } + } + + } else if (type == CHPLAN_CONFS_CIS_FLAGS) { + if (strlen(str)) { + u8 flags; + + if (sscanf(str, "%hhx", &flags) == 1) { + confs->set_types |= BIT(type); + confs->cis_flags = flags; + } + } + + } else if (type == CHPLAN_CONFS_CIS_EN_ROLE) { + if (strlen(str)) { + u8 role; + + if (sscanf(str, "%hhx", &role) == 1) { + confs->set_types |= BIT(type); + confs->cis_en_role = role; + } + } + + } else if (type == CHPLAN_CONFS_CIS_EN_IFBMP) { + if (strlen(str)) { + u8 ifbmp; + + if (sscanf(str, "%hhx", &ifbmp) == 1) { + confs->set_types |= BIT(type); + confs->cis_en_ifbmp = ifbmp; + } + } + + } else if (type == CHPLAN_CONFS_CIS_SCAN_INT_MS) { + if (strlen(str)) { + u32 ms; + + if (sscanf(str, "%u", &ms) == 1) { + confs->set_types |= BIT(type); + confs->cis_scan_int_ms = ms; + } + } +#endif /* CONFIG_80211D */ + + } +} + +u16 rtw_parse_chplan_confs_cmd_str(struct chplan_confs *confs, char *str) +{ + char *next = str, *c, *equal; + enum chplan_confs_type type; + + _rtw_memset(confs, 0, sizeof(*confs)); + + for (c = strsep(&next, " \t\n\r"); c; c = strsep(&next, " \t\n\r")) { + equal = strchr(c, '='); + if (!equal || c == equal) + continue; + type = get_chplan_confs_type_from_str(c, equal - c); + if (type == CHPLAN_CONFS_NUM) + continue; + rtw_parse_chplan_confs_type_arg_str(confs, type, equal + 1); + } + + return confs->set_types; +} +#endif /* CONFIG_PROC_DEBUG */ + +#ifdef CONFIG_80211D +u8 rtw_alink_apply_recv_country_ie_cmd(struct _ADAPTER_LINK *alink, int flags, enum band_type band,u8 opch, const u8 *country_ie) +{ + struct country_ie_slave_record cisr; + + rtw_get_cisr_from_recv_country_ie(adapter_to_rfctl(alink->adapter), band, opch, country_ie, &cisr, NULL); + + return _rtw_set_chplan_cmd(alink->adapter, flags + , RTW_CHPLAN_UNSPECIFIED, RTW_CHPLAN_6G_UNSPECIFIED, NULL + , REGD_SRC_RTK_PRIV, RTW_REGD_SET_BY_COUNTRY_IE + , &cisr, rtw_adapter_link_get_id(alink) + , NULL); +} + +u8 rtw_apply_recv_country_ie_cmd(_adapter *adapter, int flags, enum band_type band,u8 opch, const u8 *country_ie) +{ + struct country_ie_slave_record cisr; + + rtw_get_cisr_from_recv_country_ie(adapter_to_rfctl(adapter), band, opch, country_ie, &cisr, NULL); + + return _rtw_set_chplan_cmd(adapter, flags + , RTW_CHPLAN_UNSPECIFIED, RTW_CHPLAN_6G_UNSPECIFIED, NULL + , REGD_SRC_RTK_PRIV, RTW_REGD_SET_BY_COUNTRY_IE + , &cisr, RTW_RLINK_MAX + , NULL); +} + +u8 rtw_apply_scan_network_country_ie_cmd(_adapter *adapter, int flags) +{ + return _rtw_set_chplan_cmd(adapter, flags + , RTW_CHPLAN_UNSPECIFIED, RTW_CHPLAN_6G_UNSPECIFIED, NULL + , REGD_SRC_RTK_PRIV, RTW_REGD_SET_BY_COUNTRY_IE + , NULL, RTW_RLINK_MAX + , NULL); +} +#endif /* CONFIG_80211D */ + +#ifdef CONFIG_REGD_SRC_FROM_OS +u8 rtw_sync_os_regd_cmd(_adapter *adapter, int flags, const char *country_code, u8 dfs_region, enum rtw_regd_inr inr) +{ + struct country_chplan ent; + struct country_chplan rtk_ent; + bool rtk_ent_exist; + + rtk_ent_exist = rtw_get_chplan_from_country(country_code, &rtk_ent); + + _rtw_memcpy(ent.alpha2, country_code, 2); + + /* + * Regulation follows OS, the internal txpwr limit selection is searched by alpha2 + * "00" => WW, others use string mapping + * When no matching txpwr limit selection is found, use + * 1. txpwr lmit selection associated with alpha2 inside driver regulation database + * 2. WW when driver has no support of this alpha2 + */ + + ent.domain_code = rtk_ent_exist ? rtk_ent.domain_code : RTW_CHPLAN_UNSPECIFIED; + #if CONFIG_IEEE80211_BAND_6GHZ + ent.domain_code_6g = rtk_ent_exist ? rtk_ent.domain_code_6g : RTW_CHPLAN_6G_UNSPECIFIED; + #endif + ent.edcca_mode_2g_override = rtk_ent_exist ? rtk_ent.edcca_mode_2g_override : RTW_EDCCA_ADAPT; + #if CONFIG_IEEE80211_BAND_5GHZ + ent.edcca_mode_5g_override = rtk_ent_exist ? rtk_ent.edcca_mode_5g_override : RTW_EDCCA_ADAPT; + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + ent.edcca_mode_6g_override = rtk_ent_exist ? rtk_ent.edcca_mode_6g_override : RTW_EDCCA_ADAPT; + #endif + ent.txpwr_lmt_override = rtk_ent_exist ? rtk_ent.txpwr_lmt_override : TXPWR_LMT_DEF; + #if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) || CONFIG_IEEE80211_BAND_5GHZ + ent.proto_en = CHPLAN_PROTO_EN_ALL; + #endif + + /* TODO: dfs_region */ + + return _rtw_set_chplan_cmd(adapter, flags + , RTW_CHPLAN_UNSPECIFIED, RTW_CHPLAN_6G_UNSPECIFIED, &ent + , REGD_SRC_OS, inr + , NULL, RTW_RLINK_MAX + , NULL); +} +#endif /* CONFIG_REGD_SRC_FROM_OS */ + +u8 rtw_get_chplan_hdl(_adapter *adapter, u8 *pbuf) +{ + struct get_channel_plan_param *param; + struct get_chplan_resp *chplan; + struct rf_ctl_t *rfctl; + struct rtw_chset *chset; +#if CONFIG_TXPWR_LIMIT + char *tl_reg_names[BAND_MAX]; + int tl_reg_names_len[BAND_MAX]; +#endif + int tl_reg_names_len_total = 0; + int i; + + if (!pbuf) + return H2C_PARAMETERS_ERROR; + + rfctl = adapter_to_rfctl(adapter); + chset = adapter_to_chset(adapter); + param = (struct get_channel_plan_param *)pbuf; + +#if CONFIG_TXPWR_LIMIT + rtw_txpwr_hal_get_current_lmt_regs_name(adapter_to_dvobj(adapter), tl_reg_names, tl_reg_names_len); + for (i = 0; i < BAND_MAX; i++) + tl_reg_names_len_total += tl_reg_names_len[i]; +#endif + + chplan = rtw_vmalloc(sizeof(struct get_chplan_resp) + sizeof(RT_CHANNEL_INFO) * chset->chs_len + tl_reg_names_len_total); + if (!chplan) + return H2C_CMD_FAIL; + + chplan->regd_src = rfctl->regd_src; + chplan->regd_inr_bmp = rfctl->regd_inr_bmp; + + chplan->alpha2[0] = rfctl->alpha2[0]; + chplan->alpha2[1] = rfctl->alpha2[1]; + + chplan->channel_plan = rfctl->domain_code; +#if CONFIG_IEEE80211_BAND_6GHZ + chplan->chplan_6g = rfctl->domain_code_6g; +#endif +#if CONFIG_TXPWR_LIMIT + chplan->txpwr_lmt_names_len_total = tl_reg_names_len_total; + for (i = 0; i < BAND_MAX; i++) { + if (i == 0) + chplan->txpwr_lmt_names[i] = ((u8 *)(chplan->chs)) + sizeof(RT_CHANNEL_INFO) * chset->chs_len; + else + chplan->txpwr_lmt_names[i] = chplan->txpwr_lmt_names[i - 1] + chplan->txpwr_lmt_names_len[i - 1]; + + chplan->txpwr_lmt_names_len[i] = tl_reg_names_len[i]; + if (tl_reg_names[i] && tl_reg_names_len[i]) { + _rtw_memcpy((void *)chplan->txpwr_lmt_names[i], tl_reg_names[i], tl_reg_names_len[i]); + rtw_mfree(tl_reg_names[i], tl_reg_names_len[i]); + } + } +#endif + chplan->edcca_mode_2g = rfctl->edcca_mode_2g; +#if CONFIG_IEEE80211_BAND_5GHZ + chplan->edcca_mode_5g = rfctl->edcca_mode_5g; +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + chplan->edcca_mode_6g = rfctl->edcca_mode_6g; +#endif +#ifdef CONFIG_DFS_MASTER + chplan->dfs_domain = rtw_rfctl_get_dfs_domain(rfctl); +#endif + + chplan->proto_en = 0 + #if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) || CONFIG_IEEE80211_BAND_5GHZ + | rfctl->proto_en + #endif + ; + + chplan->confs.dis_ch_flags = rfctl->dis_ch_flags; + _rtw_memcpy(chplan->confs.excl_chs, rfctl->excl_chs, MAX_CHANNEL_NUM_2G_5G); +#if CONFIG_IEEE80211_BAND_6GHZ + _rtw_memcpy(chplan->confs.excl_chs_6g, rfctl->excl_chs_6g, MAX_CHANNEL_NUM_6G); +#endif + chplan->confs.init_regd_always_apply = rfctl->init_regd_always_apply; + chplan->confs.user_regd_always_apply = rfctl->user_regd_always_apply; + chplan->confs.bcn_hint_valid_ms = rfctl->bcn_hint_valid_ms; +#ifdef CONFIG_80211D + chplan->confs.cis_en_mode = rfctl->cis_en_mode; + chplan->confs.cis_flags = rfctl->cis_flags; + chplan->confs.cis_en_role = rfctl->cis_en_role; + chplan->confs.cis_en_ifbmp = rfctl->cis_en_ifbmp; + chplan->confs.cis_scan_int_ms = rfctl->cis_scan_int_ms; +#endif + + chplan->chs_len = chset->chs_len; + _rtw_memcpy(chplan->chs, chset->chs, sizeof(RT_CHANNEL_INFO) * chset->chs_len); + param->chplan = chplan; + + return H2C_SUCCESS; +} + +void rtw_get_chplan_callback(_adapter *adapter, struct cmd_obj *cmdobj) +{ + struct get_channel_plan_param *param = (struct get_channel_plan_param *)cmdobj->parmbuf; + + cmdobj->sctx_rsp_buf = param->chplan; +} + +u8 rtw_get_chplan_cmd(_adapter *adapter, int flags, struct get_chplan_resp **chplan) +{ + struct cmd_obj *cmdobj; + struct get_channel_plan_param *parm; + struct cmd_priv *pcmdpriv = &adapter->cmdpriv; + struct submit_ctx sctx; + u8 res = _FAIL; + + if (!(flags & (RTW_CMDF_DIRECTLY | RTW_CMDF_WAIT_ACK))) { + rtw_warn_on(1); + goto exit; + } + + /* prepare cmd parameter */ + parm = rtw_zmalloc(sizeof(*parm)); + if (parm == NULL) + goto exit; + + if (flags & RTW_CMDF_DIRECTLY) { + /* no need to enqueue, do the cmd hdl directly and free cmd parameter */ + if (H2C_SUCCESS == rtw_get_chplan_hdl(adapter, (u8 *)parm)) { + *chplan = parm->chplan; + res = _SUCCESS; + } + rtw_mfree((u8 *)parm, sizeof(*parm)); + } else { /* case of RTW_CMDF_WAIT_ACK */ + /* need enqueue, prepare cmd_obj and enqueue */ + cmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(*cmdobj)); + if (cmdobj == NULL) { + rtw_mfree((u8 *)parm, sizeof(*parm)); + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(cmdobj, parm, CMD_GET_CHANPLAN); + CMD_OBJ_SET_HWBAND(cmdobj, HW_BAND_0); + cmdobj->no_io = true; + + cmdobj->sctx = &sctx; + rtw_sctx_init(&sctx, 2000); + cmdobj->sctx_rsp_buf_free = (void *)rtw_free_get_chplan_resp; + + res = rtw_enqueue_cmd(pcmdpriv, cmdobj); + + if (res == _SUCCESS) { + rtw_sctx_wait(&sctx, __func__); + _rtw_mutex_lock_interruptible(&pcmdpriv->sctx_mutex); + if (sctx.status == RTW_SCTX_SUBMITTED) + cmdobj->sctx = NULL; + _rtw_mutex_unlock(&pcmdpriv->sctx_mutex); + if (sctx.status == RTW_SCTX_DONE_SUCCESS) + *chplan = sctx.rsp; + else + res = _FAIL; + } + + /* allow get channel plan when cmd_thread is not running */ + if (res != _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) { + parm = rtw_zmalloc(sizeof(*parm)); + if (parm == NULL) + goto exit; + + if (H2C_SUCCESS == rtw_get_chplan_hdl(adapter, (u8 *)parm)) { + *chplan = parm->chplan; + res = _SUCCESS; + } + + rtw_mfree((u8 *)parm, sizeof(*parm)); + } + } + +exit: + return res; +} + +void rtw_free_get_chplan_resp(struct get_chplan_resp *chplan) +{ + size_t sz = sizeof(struct get_chplan_resp) + sizeof(RT_CHANNEL_INFO) * chplan->chs_len + #if CONFIG_TXPWR_LIMIT + + chplan->txpwr_lmt_names_len_total + #endif + ; + + rtw_vmfree(chplan, sz); +} + +#ifdef CONFIG_80211D +static bool rtw_iface_accept_country_ie(_adapter *adapter) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + if (!(BIT(adapter->iface_id) & rfctl->cis_en_ifbmp)) + return false; + if (!MLME_IS_STA(adapter)) + return false; + if (!MLME_IS_GC(adapter)) { + if (!(rfctl->cis_en_role & COUNTRY_IE_SLAVE_EN_ROLE_STA)) + return false; + } else { + if (!(rfctl->cis_en_role & COUNTRY_IE_SLAVE_EN_ROLE_GC)) + return false; + } + return true; +} + +void rtw_alink_joinbss_update_regulatory(struct _ADAPTER_LINK *alink, const WLAN_BSSID_EX *network) +{ + _adapter *adapter = alink->adapter; + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + if (rfctl->cis_enabled && !(rfctl->cis_flags & CISF_ENV_BSS)) { + u8 iface_id = adapter->iface_id; + u8 alink_id = rtw_adapter_link_get_id(alink); + const u8 *country_ie = NULL; + sint country_ie_len = 0; + + if (network) { + if (rtw_iface_accept_country_ie(adapter)) { + country_ie = rtw_get_ie(BSS_EX_TLV_IES(network) + , WLAN_EID_COUNTRY, &country_ie_len, BSS_EX_TLV_IES_LEN(network)); + if (country_ie) { + if (country_ie_len < 6) { + country_ie = NULL; + country_ie_len = 0; + } else + country_ie_len += 2; + } + } + } + + if (country_ie) { + rtw_buf_update(&rfctl->recv_country_ie[iface_id][alink_id] + , &rfctl->recv_country_ie_len[iface_id][alink_id], country_ie, country_ie_len); + if (rtw_alink_apply_recv_country_ie_cmd(alink, RTW_CMDF_DIRECTLY + , BSS_EX_OP_BAND(network), BSS_EX_OP_CH(network), country_ie) != _SUCCESS + ) + RTW_WARN(FUNC_ADPT_FMT" id:%u rtw_alink_apply_recv_country_ie_cmd() fail\n", FUNC_ADPT_ARG(adapter), alink_id); + } else { + rtw_buf_free(&rfctl->recv_country_ie[iface_id][alink_id] + , &rfctl->recv_country_ie_len[iface_id][alink_id]); + if (rtw_alink_apply_recv_country_ie_cmd(alink, RTW_CMDF_DIRECTLY, 0, 0, NULL) != _SUCCESS) + RTW_WARN(FUNC_ADPT_FMT" id:%u rtw_alink_apply_recv_country_ie_cmd() fail\n", FUNC_ADPT_ARG(adapter), alink_id); + } + } +} + +static void _rtw_alink_leavebss_update_regulatory(_adapter *adapter, u8 alink_id) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + if (rfctl->cis_enabled && !(rfctl->cis_flags & CISF_ENV_BSS)) { + u8 iface_id = adapter->iface_id; + + if (alink_id < RTW_RLINK_MAX) { + struct _ADAPTER_LINK * alink = GET_LINK(adapter, alink_id); + + rtw_buf_free(&rfctl->recv_country_ie[iface_id][alink_id] + , &rfctl->recv_country_ie_len[iface_id][alink_id]); + if (rtw_alink_apply_recv_country_ie_cmd(alink, RTW_CMDF_DIRECTLY, 0, 0, NULL) != _SUCCESS) + RTW_WARN(FUNC_ADPT_FMT" id:%u rtw_alink_apply_recv_country_ie_cmd() fail\n", FUNC_ADPT_ARG(adapter), alink_id); + } else { + u8 i; + + for (i = 0; i < RTW_RLINK_MAX; i++) + rtw_buf_free(&rfctl->recv_country_ie[iface_id][i] + , &rfctl->recv_country_ie_len[iface_id][i]); + if (rtw_apply_recv_country_ie_cmd(adapter, RTW_CMDF_DIRECTLY, 0, 0, NULL) != _SUCCESS) + RTW_WARN(FUNC_ADPT_FMT" rtw_apply_recv_country_ie_cmd() fail\n", FUNC_ADPT_ARG(adapter)); + } + } +} + +void rtw_alink_leavebss_update_regulatory(struct _ADAPTER_LINK * alink) +{ + _rtw_alink_leavebss_update_regulatory(alink->adapter, rtw_adapter_link_get_id(alink)); +} + +void rtw_alink_csa_update_regulatory(struct _ADAPTER_LINK *alink, enum band_type req_band, u8 req_ch) +{ + _adapter *adapter = alink->adapter; + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + if (rfctl->cis_enabled && !(rfctl->cis_flags & CISF_ENV_BSS)) { + u8 iface_id = adapter->iface_id; + u8 alink_id = rtw_adapter_link_get_id(alink); + + if (rfctl->recv_country_ie[iface_id][alink_id]) { + if (rtw_alink_apply_recv_country_ie_cmd(alink, RTW_CMDF_DIRECTLY + , req_band, req_ch, rfctl->recv_country_ie[iface_id][alink_id]) != _SUCCESS) + RTW_WARN(FUNC_ADPT_FMT" id:%u rtw_alink_apply_recv_country_ie_cmd() fail\n", FUNC_ADPT_ARG(adapter), alink_id); + } + } +} + +void alink_process_country_ie(struct _ADAPTER_LINK *alink, u8 *ies, uint ies_len) +{ + _adapter *adapter = alink->adapter; + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + u8 iface_id; + u8 alink_id; + + /* don't process country ie when under CSA processing */ + if (rfctl->csa_ch) + return; + + iface_id = adapter->iface_id; + alink_id = rtw_adapter_link_get_id(alink); + + if (rfctl->cis_enabled && !(rfctl->cis_flags & CISF_ENV_BSS)) { + const u8 *ie = NULL; + sint ie_len = 0; + + if (rtw_iface_accept_country_ie(adapter)) { + ie = rtw_get_ie(ies, WLAN_EID_COUNTRY, &ie_len, ies_len); + if (ie) { + if (ie_len < 6) { + ie = NULL; + ie_len = 0; + } else + ie_len += 2; + } + } + + if (!rfctl->recv_country_ie[iface_id][alink_id] && !ie) + return; + if (rfctl->recv_country_ie_len[iface_id][alink_id] == ie_len + && _rtw_memcmp(rfctl->recv_country_ie[iface_id][alink_id], ie, ie_len) == _TRUE) + return; + + if (!ie) { + rtw_buf_free(&rfctl->recv_country_ie[iface_id][alink_id] + , &rfctl->recv_country_ie_len[iface_id][alink_id]); + rtw_alink_apply_recv_country_ie_cmd(alink, 0, 0, 0, NULL); + } else { + char ori_alpha2[2] = {0, 0}; + + if (rfctl->recv_country_ie[iface_id][alink_id]) + _rtw_memcpy(ori_alpha2, rfctl->recv_country_ie[iface_id][alink_id] + 2, 2); + + rtw_buf_update(&rfctl->recv_country_ie[iface_id][alink_id] + , &rfctl->recv_country_ie_len[iface_id][alink_id], ie, ie_len); + /* for now only country code is used */ + if (_rtw_memcmp(ori_alpha2, rfctl->recv_country_ie[iface_id][alink_id] + 2, 2) == _TRUE) + return; + RTW_INFO(FUNC_ADPT_FMT" id:%u country_ie alpha2 changed\n", FUNC_ADPT_ARG(adapter), alink_id); + rtw_alink_apply_recv_country_ie_cmd(alink, 0 + , ALINK_GET_BAND(alink), ALINK_GET_CH(alink), rfctl->recv_country_ie[iface_id][alink_id]); + } + } + else if (rfctl->recv_country_ie[iface_id][alink_id]) { + rtw_buf_free(&rfctl->recv_country_ie[iface_id][alink_id] + , &rfctl->recv_country_ie_len[iface_id][alink_id]); + rtw_alink_apply_recv_country_ie_cmd(alink, 0, 0, 0, NULL); + } +} + +void rtw_joinbss_update_regulatory(_adapter *adapter, const WLAN_BSSID_EX *network) +{ + rtw_alink_joinbss_update_regulatory(GET_PRIMARY_LINK(adapter), network); +} + +void rtw_leavebss_update_regulatory(_adapter *adapter) +{ + _rtw_alink_leavebss_update_regulatory(adapter, RTW_RLINK_MAX); +} + +void rtw_csa_update_regulatory(_adapter *adapter, enum band_type req_band, u8 req_ch) +{ + rtw_alink_csa_update_regulatory(GET_PRIMARY_LINK(adapter), req_band, req_ch); +} + +void process_country_ie(_adapter *adapter, u8 *ies, uint ies_len) +{ + alink_process_country_ie(GET_PRIMARY_LINK(adapter), ies, ies_len); +} + +bool rtw_update_scanned_network_cisr(struct rf_ctl_t *rfctl, struct wlan_network *network) +{ + if (rfctl->cis_enabled && (rfctl->cis_flags & CISF_ENV_BSS)) { + const u8 *ie = NULL; + sint ie_len = 0; + struct country_ie_slave_record *cisr = &network->cisr; + struct country_chplan *chplan = &network->cisr.chplan; + struct country_chplan ori_chplan; + + _rtw_memcpy(&ori_chplan, chplan, sizeof(*chplan)); + + ie = rtw_get_ie(BSS_EX_TLV_IES(&network->network), WLAN_EID_COUNTRY, &ie_len, BSS_EX_TLV_IES_LEN(&network->network)); + if (ie) { + if (ie_len < 6) + ie = NULL; + } + + rtw_get_cisr_from_recv_country_ie(rfctl + , BSS_EX_OP_BAND(&network->network), BSS_EX_OP_CH(&network->network), ie, cisr, NULL); + + return _rtw_memcmp(&ori_chplan, chplan, sizeof(*chplan)) == _TRUE ? false : true; + } + else if (network->cisr.alpha2[0] != '\0' || network->cisr.alpha2[1] != '\0') { + network->cisr.alpha2[0] = network->cisr.alpha2[1] = '\0'; + network->cisr.status = COUNTRY_IE_SLAVE_NOCOUNTRY; + return true; + } + + return false; +} + +void rtw_rfctl_cis_init(struct rf_ctl_t *rfctl, struct registry_priv *regsty) +{ + rfctl->cis_en_mode = regsty->country_ie_slave_en_mode; + if (!CIS_EN_MODE_IS_VALID(rfctl->cis_en_mode)) { + RTW_WARN("%s cis_en_mode %u is not supported, set to disable\n", __func__, rfctl->cis_en_mode); + rfctl->cis_en_mode = CISEM_DISABLE; + } + rfctl->cis_flags = regsty->country_ie_slave_flags; + rfctl->cis_en_role = regsty->country_ie_slave_en_role; + rfctl->cis_en_ifbmp = regsty->country_ie_slave_en_ifbmp; + rfctl->cis_scan_int_ms = regsty->country_ie_slave_scan_int_ms; + rfctl->effected_cisr = NULL; +} + +void rtw_rfctl_cis_deinit(struct rf_ctl_t *rfctl) +{ + int i, j; + + for (i = 0; i < CONFIG_IFACE_NUMBER; i++) + for (j = 0; j < RTW_RLINK_MAX; j++) + rtw_buf_free(&rfctl->recv_country_ie[i][j], &rfctl->recv_country_ie_len[i][j]); +} +#endif /* CONFIG_80211D */ + +#ifdef CONFIG_PROC_DEBUG +void dump_cur_chplan_confs(void *sel, struct rf_ctl_t *rfctl) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct get_chplan_resp *chplan; + struct chplan_confs *confs; + size_t buf_len = rtw_max(RTW_CH_FLAGS_STR_LEN, EXCL_CHS_STR_LEN); + char *buf; + +#if CONFIG_IEEE80211_BAND_6GHZ + buf_len = rtw_max(buf_len, EXCL_CHS_6G_STR_LEN); +#endif + + buf = rtw_vmalloc(buf_len); + if (!buf) + return; + + if (rtw_get_chplan_cmd(dvobj_get_primary_adapter(dvobj), RTW_CMDF_WAIT_ACK, &chplan) == _FAIL) + goto free_buf; + + confs = &chplan->confs; + + RTW_PRINT_SEL(sel, "dis_ch_flags=%s\n", rtw_get_ch_flags_str(buf, confs->dis_ch_flags, ',')); + RTW_PRINT_SEL(sel, "excl_chs=%s\n" + , get_str_of_u8_array(buf, buf_len, confs->excl_chs, MAX_CHANNEL_NUM_2G_5G, ',', true)); +#if CONFIG_IEEE80211_BAND_6GHZ + RTW_PRINT_SEL(sel, "excl_chs_6g=%s\n" + , get_str_of_u8_array(buf, buf_len, confs->excl_chs_6g, MAX_CHANNEL_NUM_6G, ',', true)); +#endif + RTW_PRINT_SEL(sel, "init_regd_always_apply=%d\n", confs->init_regd_always_apply); + RTW_PRINT_SEL(sel, "user_regd_always_apply=%d\n", confs->user_regd_always_apply); + RTW_PRINT_SEL(sel, "bcn_hint_valid_ms=%u\n", confs->bcn_hint_valid_ms); +#ifdef CONFIG_80211D + RTW_PRINT_SEL(sel, "cis_en_mode=%u\n", confs->cis_en_mode); + RTW_PRINT_SEL(sel, "cis_flags=0x%02x\n", confs->cis_flags); + RTW_PRINT_SEL(sel, "cis_en_role=0x%02x\n", confs->cis_en_role); + RTW_PRINT_SEL(sel, "cis_en_ifbmp=0x%02x\n", confs->cis_en_ifbmp); + RTW_PRINT_SEL(sel, "cis_scan_int_ms=%u\n", confs->cis_scan_int_ms); +#endif + + rtw_free_get_chplan_resp(chplan); + +free_buf: + rtw_vmfree(buf, buf_len); +} + +static void dump_chplan_regd_inrs(void *sel, struct get_chplan_resp *chplan) +{ + char buf[REGD_INR_BMP_STR_LEN]; + + RTW_PRINT_SEL(sel, "regd_inr:%s\n", rtw_get_regd_inr_bmp_str(buf, chplan->regd_inr_bmp)); +} + +#if CONFIG_TXPWR_LIMIT +static void dump_chplan_txpwr_lmt_regs(void *sel, struct get_chplan_resp *chplan) +{ + int band; + const char *names, *name; + int names_len; + + for (band = 0; band < BAND_MAX; band++) { + names = chplan->txpwr_lmt_names[band]; + names_len = chplan->txpwr_lmt_names_len[band]; + + RTW_PRINT_SEL(sel, "txpwr_lmt[%s]:", band_str(band)); + ustrs_for_each_str(names, names_len, name) + _RTW_PRINT_SEL(sel, "%s%s", name == names ? "" : " ", name); + _RTW_PRINT_SEL(sel, "\n"); + } +} +#endif + +static void dump_chplan_edcca_modes(void *sel, struct get_chplan_resp *chplan) +{ + u8 mode[BAND_MAX]; + char buf[EDCCA_MODE_OF_BANDS_STR_LEN]; + + mode[BAND_ON_24G] = chplan->edcca_mode_2g; +#if CONFIG_IEEE80211_BAND_5GHZ + mode[BAND_ON_5G] = chplan->edcca_mode_5g; +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + mode[BAND_ON_6G] = chplan->edcca_mode_6g; +#endif + + RTW_PRINT_SEL(sel, "edcca_mode:%s\n", rtw_get_edcca_mode_of_bands_str(buf, mode)); +} + +static void dump_addl_ch_disable_conf(void *sel, struct get_chplan_resp *chplan) +{ + struct chplan_confs *confs = &chplan->confs; + int i; + + if (confs->dis_ch_flags) { + char buf[RTW_CH_FLAGS_STR_LEN]; + + RTW_PRINT_SEL(sel, "dis_ch_flags:%s\n", rtw_get_ch_flags_str(buf, confs->dis_ch_flags, ' ')); + } + + if (confs->excl_chs[0] != 0) { + char buf[EXCL_CHS_STR_LEN]; + + RTW_PRINT_SEL(sel, "excl_chs:%s\n" + , get_str_of_u8_array(buf, sizeof(buf), confs->excl_chs, MAX_CHANNEL_NUM_2G_5G, ' ', true)); + } + +#if CONFIG_IEEE80211_BAND_6GHZ + for (i = 0; i < MAX_CHANNEL_NUM_6G; i++) + if (confs->excl_chs_6g[i] != 0) + break; + + if (confs->excl_chs_6g[0] != 0) { + char buf[EXCL_CHS_6G_STR_LEN]; + + RTW_PRINT_SEL(sel, "excl_chs_6g:%s\n" + , get_str_of_u8_array(buf, sizeof(buf), confs->excl_chs_6g, MAX_CHANNEL_NUM_6G, ' ', true)); + } +#endif +} + +void dump_cur_country(void *sel, struct rf_ctl_t *rfctl) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct get_chplan_resp *chplan; + int i; + + if (rtw_get_chplan_cmd(dvobj_get_primary_adapter(dvobj), RTW_CMDF_WAIT_ACK, &chplan) == _FAIL) + return; + + RTW_PRINT_SEL(sel, "%c%c\n", chplan->alpha2[0], chplan->alpha2[1]); + + rtw_free_get_chplan_resp(chplan); +} + +void dump_cur_chplan(void *sel, struct rf_ctl_t *rfctl) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct get_chplan_resp *chplan; + + if (rtw_get_chplan_cmd(dvobj_get_primary_adapter(dvobj), RTW_CMDF_WAIT_ACK, &chplan) == _FAIL) + return; + + RTW_PRINT_SEL(sel, "regd_src:%s(%d)\n", regd_src_str(chplan->regd_src), chplan->regd_src); + dump_chplan_regd_inrs(sel, chplan); + + RTW_PRINT_SEL(sel, "alpha2:%c%c\n", chplan->alpha2[0], chplan->alpha2[1]); + +#ifdef CONFIG_80211AX_HE + RTW_PRINT_SEL(sel, "ax:%d\n", (chplan->proto_en & CHPLAN_PROTO_EN_AX) ? 1 : 0); +#endif +#ifdef CONFIG_80211AC_VHT + RTW_PRINT_SEL(sel, "ac:%d\n", (chplan->proto_en & CHPLAN_PROTO_EN_AC) ? 1 : 0); +#endif +#if CONFIG_IEEE80211_BAND_5GHZ + RTW_PRINT_SEL(sel, "a:%d\n", (chplan->proto_en & CHPLAN_PROTO_EN_A) ? 1 : 0); +#endif + + if (chplan->channel_plan == RTW_CHPLAN_UNSPECIFIED) + RTW_PRINT_SEL(sel, "chplan:UNSPEC\n"); + else + RTW_PRINT_SEL(sel, "chplan:0x%02X\n", chplan->channel_plan); + +#if CONFIG_IEEE80211_BAND_6GHZ + if (chplan->chplan_6g == RTW_CHPLAN_6G_UNSPECIFIED) + RTW_PRINT_SEL(sel, "chplan_6g:UNSPEC\n"); + else + RTW_PRINT_SEL(sel, "chplan_6g:0x%02X\n", chplan->chplan_6g); +#endif + +#if CONFIG_TXPWR_LIMIT + dump_chplan_txpwr_lmt_regs(sel, chplan); +#endif + + dump_chplan_edcca_modes(sel, chplan); + +#ifdef CONFIG_DFS_MASTER + RTW_PRINT_SEL(sel, "dfs_domain:%s(%u)\n", rtw_dfs_regd_str(chplan->dfs_domain), chplan->dfs_domain); +#endif + + dump_addl_ch_disable_conf(sel, chplan); + + dump_chinfos(sel, chplan->chs, chplan->chs_len); + + rtw_free_get_chplan_resp(chplan); +} +#endif /* CONFIG_PROC_DEBUG */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_chplan.h b/drivers/net/wireless/rtl8822cs/core/rtw_chplan.h index dbc41e0ea..f6951746b 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_chplan.h +++ b/drivers/net/wireless/rtl8822cs/core/rtw_chplan.h @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2018 Realtek Corporation. + * Copyright(c) 2007 - 2022 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -15,29 +15,31 @@ #ifndef __RTW_CHPLAN_H__ #define __RTW_CHPLAN_H__ -#define RTW_CHPLAN_IOCTL_NULL 0xFFFE /* special value by ioctl: null(empty) chplan */ +#define RTW_CHPLAN_IOCTL_NULL 0xFFFE /* special value by ioctl: null(empty) chplan */ #define RTW_CHPLAN_IOCTL_UNSPECIFIED 0xFFFF /* special value by ioctl: no change (keep original) */ -#define RTW_CHPLAN_NULL 0x1A +#define RTW_CHPLAN_NULL 0x0A #define RTW_CHPLAN_WORLDWIDE 0x7F #define RTW_CHPLAN_UNSPECIFIED 0xFF -#define RTW_CHPLAN_6G_NULL 0x00 +#define RTW_CHPLAN_6G_NULL 0x00 #define RTW_CHPLAN_6G_WORLDWIDE 0x7F #define RTW_CHPLAN_6G_UNSPECIFIED 0xFF u8 rtw_chplan_get_default_regd_2g(u8 id); +#if CONFIG_IEEE80211_BAND_5GHZ u8 rtw_chplan_get_default_regd_5g(u8 id); +#endif bool rtw_is_channel_plan_valid(u8 id); -bool rtw_regsty_is_excl_chs(struct registry_priv *regsty, u8 ch); #if CONFIG_IEEE80211_BAND_6GHZ u8 rtw_chplan_get_default_regd_6g(u8 id); bool rtw_is_channel_plan_6g_valid(u8 id); -bool rtw_regsty_is_excl_chs_6g(struct registry_priv *regsty, u8 ch); #endif -u8 rtw_chplan_is_chbw_valid(u8 id, u8 id_6g, BAND_TYPE band, u8 ch, u8 bw, u8 offset - , bool allow_primary_passive, bool allow_passive, struct registry_priv *regsty); +void rtw_rfctl_addl_ch_disable_conf_init(struct rf_ctl_t *rfctl, struct registry_priv *regsty); + +u8 rtw_chplan_is_bchbw_valid(u8 id, u8 id_6g, enum band_type band, u8 ch, u8 bw, u8 offset + , bool allow_primary_passive, bool allow_passive, struct rf_ctl_t *rfctl); enum regd_src_t { REGD_SRC_RTK_PRIV = 0, /* Regulatory settings from Realtek framework (Realtek defined or customized) */ @@ -50,36 +52,25 @@ enum regd_src_t { extern const char *_regd_src_str[]; #define regd_src_str(src) ((src) >= REGD_SRC_NUM ? _regd_src_str[REGD_SRC_NUM] : _regd_src_str[src]) -struct _RT_CHANNEL_INFO; -u8 init_channel_set(_adapter *adapter); -bool rtw_chset_is_dfs_range(struct _RT_CHANNEL_INFO *chset, u32 hi, u32 lo); -bool rtw_chset_is_dfs_ch(struct _RT_CHANNEL_INFO *chset, u8 ch); -bool rtw_chset_is_dfs_chbw(struct _RT_CHANNEL_INFO *chset, u8 ch, u8 bw, u8 offset); +void rtw_rfctl_chset_apply_regulatory(struct dvobj_priv *dvobj, bool req_lock); + +bool rtw_rfctl_reg_allow_beacon_hint(struct rf_ctl_t *rfctl); bool rtw_chinfo_allow_beacon_hint(struct _RT_CHANNEL_INFO *chinfo); -u8 rtw_process_beacon_hint(_adapter *adapter, WLAN_BSSID_EX *bss); +u8 rtw_process_beacon_hint(struct rf_ctl_t *rfctl, WLAN_BSSID_EX *bss); +void rtw_beacon_hint_ch_change_notifier(struct rf_ctl_t *rfctl); #define ALPHA2_FMT "%c%c" #define ALPHA2_ARG(a2) ((is_alpha(a2[0]) || is_decimal(a2[0])) ? a2[0] : '-'), ((is_alpha(a2[1]) || is_decimal(a2[1])) ? a2[1] : '-') #define WORLDWIDE_ALPHA2 "00" #define UNSPEC_ALPHA2 "99" +#define INTERSECTED_ALPHA2 "98" #define IS_ALPHA2_WORLDWIDE(_alpha2) (strncmp(_alpha2, WORLDWIDE_ALPHA2, 2) == 0) -#define IS_ALPHA2_UNSPEC(_alpha2) (strncmp(_alpha2, UNSPEC_ALPHA2, 2) == 0) +#define IS_ALPHA2_UNSPEC(_alpha2) (strncmp(_alpha2, UNSPEC_ALPHA2, 2) == 0) +#define IS_ALPHA2_INTERSECTED(_alpha2) (strncmp(_alpha2, INTERSECTED_ALPHA2, 2) == 0) #define SET_UNSPEC_ALPHA2(_alpha2) do { _rtw_memcpy(_alpha2, UNSPEC_ALPHA2, 2); } while (0) - -#define RTW_MODULE_RTL8821AE_HMC_M2 BIT0 /* RTL8821AE(HMC + M.2) */ -#define RTW_MODULE_RTL8821AU BIT1 /* RTL8821AU */ -#define RTW_MODULE_RTL8812AENF_NGFF BIT2 /* RTL8812AENF(8812AE+8761)_NGFF */ -#define RTW_MODULE_RTL8812AEBT_HMC BIT3 /* RTL8812AEBT(8812AE+8761)_HMC */ -#define RTW_MODULE_RTL8188EE_HMC_M2 BIT4 /* RTL8188EE(HMC + M.2) */ -#define RTW_MODULE_RTL8723BE_HMC_M2 BIT5 /* RTL8723BE(HMC + M.2) */ -#define RTW_MODULE_RTL8723BS_NGFF1216 BIT6 /* RTL8723BS(NGFF1216) */ -#define RTW_MODULE_RTL8192EEBT_HMC_M2 BIT7 /* RTL8192EEBT(8192EE+8761AU)_(HMC + M.2) */ -#define RTW_MODULE_RTL8723DE_NGFF1630 BIT8 /* RTL8723DE(NGFF1630) */ -#define RTW_MODULE_RTL8822BE BIT9 /* RTL8822BE */ -#define RTW_MODULE_RTL8821CE BIT10 /* RTL8821CE */ -#define RTW_MODULE_RTL8822CE BIT11 /* RTL8822CE */ +#define SET_INTERSECTEDC_ALPHA2(_alpha2) do { _rtw_memcpy(_alpha2, INTERSECTED_ALPHA2, 2); } while (0) enum rtw_regd_inr { RTW_REGD_SET_BY_INIT = 0, @@ -114,28 +105,32 @@ enum rtw_regd { extern const char *const _regd_str[]; #define regd_str(regd) (((regd) >= RTW_REGD_NUM) ? _regd_str[RTW_REGD_NA] : _regd_str[(regd)]) -enum rtw_edcca_mode { - RTW_EDCCA_NORMAL = 0, /* normal */ - RTW_EDCCA_ADAPT = 1, /* adaptivity */ - RTW_EDCCA_CS = 2, /* carrier sense */ - +enum rtw_edcca_mode_t { + RTW_EDCCA_NORM = 0, /* normal */ + RTW_EDCCA_CS = 1, /* carrier sense */ + RTW_EDCCA_ADAPT = 2, /* adaptivity */ + RTW_EDCCA_CBP = 3, /* contention based protocol */ RTW_EDCCA_MODE_NUM, RTW_EDCCA_DEF = RTW_EDCCA_MODE_NUM, /* default (ref to domain code), used at country chplan map's override field */ + RTW_EDCCA_AUTO = 0xFF, /* follow channel plan */ }; extern const char *const _rtw_edcca_mode_str[]; -#define rtw_edcca_mode_str(mode) (((mode) >= RTW_EDCCA_MODE_NUM) ? _rtw_edcca_mode_str[RTW_EDCCA_NORMAL] : _rtw_edcca_mode_str[(mode)]) +#define rtw_edcca_mode_str(mode) (((mode) >= RTW_EDCCA_MODE_NUM) ? _rtw_edcca_mode_str[RTW_EDCCA_NORM] : _rtw_edcca_mode_str[(mode)]) enum rtw_dfs_regd { RTW_DFS_REGD_NONE = 0, RTW_DFS_REGD_FCC = 1, RTW_DFS_REGD_MKK = 2, RTW_DFS_REGD_ETSI = 3, + RTW_DFS_REGD_KCC = 4, RTW_DFS_REGD_NUM, RTW_DFS_REGD_AUTO = 0xFF, /* follow channel plan */ }; -extern const char *_rtw_dfs_regd_str[]; +#define RTW_DFS_REGD_IS_UNKNOWN(regd) ((regd) == RTW_DFS_REGD_NONE || (regd) >= RTW_DFS_REGD_NUM) + +extern const char *const _rtw_dfs_regd_str[]; #define rtw_dfs_regd_str(region) (((region) >= RTW_DFS_REGD_NUM) ? _rtw_dfs_regd_str[RTW_DFS_REGD_NONE] : _rtw_dfs_regd_str[(region)]) typedef enum _REGULATION_TXPWR_LMT { @@ -152,6 +147,7 @@ typedef enum _REGULATION_TXPWR_LMT { TXPWR_LMT_MEXICO = 10, TXPWR_LMT_CN = 11, TXPWR_LMT_QATAR = 12, + TXPWR_LMT_UK = 13, TXPWR_LMT_WW, /* smallest of all available limit, keep last */ TXPWR_LMT_NUM, @@ -166,53 +162,107 @@ extern const REGULATION_TXPWR_LMT _txpwr_lmt_alternate[]; #define TXPWR_LMT_ALTERNATE_DEFINED(txpwr_lmt) (txpwr_lmt_alternate(txpwr_lmt) != txpwr_lmt) -extern const enum rtw_edcca_mode _rtw_regd_to_edcca_mode[RTW_REGD_NUM]; -#define rtw_regd_to_edcca_mode(regd) (((regd) >= RTW_REGD_NUM) ? RTW_EDCCA_NORMAL : _rtw_regd_to_edcca_mode[(regd)]) +extern const enum rtw_edcca_mode_t _rtw_regd_to_edcca_mode[RTW_REGD_NUM]; +#define rtw_regd_to_edcca_mode(regd) (((regd) >= RTW_REGD_NUM) ? RTW_EDCCA_NORM : _rtw_regd_to_edcca_mode[(regd)]) + +#if CONFIG_IEEE80211_BAND_6GHZ +extern const enum rtw_edcca_mode_t _rtw_regd_to_edcca_mode_6g[RTW_REGD_NUM]; +#define rtw_regd_to_edcca_mode_6g(regd) (((regd) >= RTW_REGD_NUM) ? RTW_EDCCA_NORM : _rtw_regd_to_edcca_mode_6g[(regd)]) +#endif extern const REGULATION_TXPWR_LMT _rtw_regd_to_txpwr_lmt[]; #define rtw_regd_to_txpwr_lmt(regd) (((regd) >= RTW_REGD_NUM) ? TXPWR_LMT_WW : _rtw_regd_to_txpwr_lmt[(regd)]) -#define EDCCA_MODES_STR_LEN (((6 + 3 + 1) * BAND_MAX) + 1) -char *rtw_get_edcca_modes_str(char *buf, u8 modes[]); -void rtw_edcca_mode_update(struct dvobj_priv *dvobj); -u8 rtw_get_edcca_mode(struct dvobj_priv *dvobj, BAND_TYPE band); +#define REGD_INR_BMP_STR_LEN (33) +char *rtw_get_regd_inr_bmp_str(char *buf, u8 bmp); -#define TXPWR_NAMES_STR_LEN (((1 + 7 + 1) * BAND_MAX) + 1) -char *rtw_get_txpwr_lmt_names_str(char *buf, const char *names[], u8 unknown_bmp); +#define EDCCA_MODE_OF_BANDS_STR_LEN (((6 + 3 + 1) * BAND_MAX) + 1) +char *rtw_get_edcca_mode_of_bands_str(char *buf, u8 mode_of_band[]); +void rtw_edcca_mode_update(struct dvobj_priv *dvobj, bool req_lock); +u8 rtw_get_edcca_mode(struct dvobj_priv *dvobj, enum band_type band); -#define CHPLAN_PROTO_EN_AC BIT0 -#define CHPLAN_PROTO_EN_AX BIT1 +#if CONFIG_TXPWR_LIMIT +#define TXPWR_NAME_OF_BANDS_STR_LEN (((1 + 7 + 1) * BAND_MAX) + 1) +char *rtw_get_txpwr_lmt_name_of_bands_str(char *buf, const char *name_of_band[], u8 unknown_bmp); +void rtw_txpwr_update_cur_lmt_regs(struct dvobj_priv *dvobj, bool req_lock); +#endif + +#define CHPLAN_PROTO_EN_A BIT0 +#define CHPLAN_PROTO_EN_AC BIT1 +#define CHPLAN_PROTO_EN_AX BIT2 #define CHPLAN_PROTO_EN_ALL 0xFF struct country_chplan { char alpha2[2]; - u8 chplan; + + u8 domain_code; #if CONFIG_IEEE80211_BAND_6GHZ - u8 chplan_6g; + u8 domain_code_6g; #endif - u8 edcca_mode_2g_override:2; + + /* will override edcca mode get by domain code (/6g) */ + u8 edcca_mode_2g_override:3; #if CONFIG_IEEE80211_BAND_5GHZ - u8 edcca_mode_5g_override:2; + u8 edcca_mode_5g_override:3; #endif #if CONFIG_IEEE80211_BAND_6GHZ - u8 edcca_mode_6g_override:2; + u8 edcca_mode_6g_override:3; #endif + + /* will override txpwr_lmt get by domain code (/6g) */ u8 txpwr_lmt_override; -#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) + +#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) || CONFIG_IEEE80211_BAND_5GHZ u8 proto_en; #endif }; -#ifdef CONFIG_80211AC_VHT -#define COUNTRY_CHPLAN_EN_11AC(_ent) (((_ent)->proto_en & CHPLAN_PROTO_EN_AC) ? 1 : 0) +#if CONFIG_IEEE80211_BAND_5GHZ +#define COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_5G_OVERRIDE(_val) , .edcca_mode_5g_override = (_val) #else -#define COUNTRY_CHPLAN_EN_11AC(_ent) 0 +#define COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_5G_OVERRIDE(_val) +#endif + +#if CONFIG_IEEE80211_BAND_6GHZ +#define COUNTRY_CHPLAN_ASSIGN_CHPLAN_6G(_val) , .domain_code_6g = (_val) +#define COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_6G_OVERRIDE(_val) , .edcca_mode_6g_override = (_val) +#else +#define COUNTRY_CHPLAN_ASSIGN_CHPLAN_6G(_val) +#define COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_6G_OVERRIDE(_val) +#endif + +#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) || CONFIG_IEEE80211_BAND_5GHZ +#define COUNTRY_CHPLAN_ASSIGN_PROTO_EN(_val) , .proto_en = (_val) +#else +#define COUNTRY_CHPLAN_ASSIGN_PROTO_EN(_val) +#endif + +#define COUNTRY_CHPLAN_ENT(_alpha2, _chplan, _chplan_6g, _txpwr_lmt_override, _en_11ax, _en_11ac, _en_11a) \ + {.alpha2 = (_alpha2), .domain_code = (_chplan) \ + COUNTRY_CHPLAN_ASSIGN_CHPLAN_6G(_chplan_6g) \ + , .edcca_mode_2g_override = RTW_EDCCA_DEF \ + COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_5G_OVERRIDE(RTW_EDCCA_DEF) \ + COUNTRY_CHPLAN_ASSIGN_EDCCA_MODE_6G_OVERRIDE(RTW_EDCCA_DEF) \ + , .txpwr_lmt_override = TXPWR_LMT_##_txpwr_lmt_override \ + COUNTRY_CHPLAN_ASSIGN_PROTO_EN((_en_11ax ? CHPLAN_PROTO_EN_AX : 0) | (_en_11ac ? CHPLAN_PROTO_EN_AC : 0) | (_en_11a ? CHPLAN_PROTO_EN_A : 0)) \ + } + +#if CONFIG_IEEE80211_BAND_5GHZ +#define COUNTRY_CHPLAN_EN_11A(_ent) (((_ent)->proto_en & CHPLAN_PROTO_EN_A) ? true : false) +#else +#define COUNTRY_CHPLAN_EN_11A(_ent) false +#endif + +#ifdef CONFIG_80211AC_VHT +#define COUNTRY_CHPLAN_EN_11AC(_ent) (((_ent)->proto_en & CHPLAN_PROTO_EN_AC) ? true : false) +#else +#define COUNTRY_CHPLAN_EN_11AC(_ent) false #endif #ifdef CONFIG_80211AX_HE -#define COUNTRY_CHPLAN_EN_11AX(_ent) (((_ent)->proto_en & CHPLAN_PROTO_EN_AX) ? 1 : 0) +#define COUNTRY_CHPLAN_EN_11AX(_ent) (((_ent)->proto_en & CHPLAN_PROTO_EN_AX) ? true : false) #else -#define COUNTRY_CHPLAN_EN_11AX(_ent) 0 +#define COUNTRY_CHPLAN_EN_11AX(_ent) false #endif void rtw_get_chplan_worldwide(struct country_chplan *ent); @@ -221,23 +271,38 @@ bool rtw_get_chplan_from_country(const char *country_code, struct country_chplan void rtw_chplan_ioctl_input_mapping(u16 *chplan, u16 *chplan_6g); bool rtw_chplan_ids_is_world_wide(u8 chplan, u8 chplan_6g); -u8 rtw_country_chplan_is_chbw_valid(struct country_chplan *ent, BAND_TYPE band, u8 ch, u8 bw, u8 offset - , bool allow_primary_passive, bool allow_passive, struct registry_priv *regsty); +u8 rtw_country_chplan_is_bchbw_valid(struct country_chplan *ent, enum band_type band, u8 ch, u8 bw, u8 offset + , bool allow_primary_passive, bool allow_passive, struct rf_ctl_t *rfctl); + +enum country_ie_slave_en_mode { + CISEM_DISABLE = 0, /* disable */ + CISEM_ENABLE = 1, /* enable */ + CISEM_ENABLE_WW = 2, /* enable when INIT/USER set world wide mode */ + CISEM_NUM, +}; + +#define CIS_EN_MODE_IS_VALID(mode) ((mode) < CISEM_NUM) + +enum country_ie_slave_flags { + CISF_INTERSECT = BIT0, /* if not set, choose effected one from received IEs */ + CISF_ENV_BSS = BIT1, /* if not set, consider IEs of associated BSSs only */ +}; enum country_ie_slave_status { - COUNTRY_IE_SLAVE_NOCOUNTRY = 0, - COUNTRY_IE_SLAVE_UNKNOWN = 1, + COUNTRY_IE_SLAVE_NOCOUNTRY = 0, + COUNTRY_IE_SLAVE_UNKNOWN = 1, COUNTRY_IE_SLAVE_OPCH_NOEXIST = 2, - COUNTRY_IE_SLAVE_APPLICABLE = 3, + COUNTRY_IE_SLAVE_APPLICABLE = 3, COUNTRY_IE_SLAVE_STATUS_NUM, }; struct country_ie_slave_record { char alpha2[2]; /* country code get from connected AP of STA ifaces, "\x00\x00" is not set */ - BAND_TYPE band; + enum band_type band; u8 opch; enum country_ie_slave_status status; + struct country_chplan chplan; }; #ifdef CONFIG_80211D @@ -246,12 +311,9 @@ extern const char *const _cis_status_str[]; void dump_country_ie_slave_records(void *sel, struct rf_ctl_t *rfctl, bool skip_noset); -enum country_ie_slave_status rtw_get_chplan_from_recv_country_ie(_adapter *adapter - , BAND_TYPE band, u8 opch, const u8 *country_ie, struct country_chplan *ent - , struct country_ie_slave_record *cisr, const char *caller_msg); - -enum country_ie_slave_status rtw_get_chplan_from_cisrs(struct rf_ctl_t *rfctl - , struct country_chplan *ent, const char *caller_msg); +enum country_ie_slave_status rtw_get_cisr_from_recv_country_ie(struct rf_ctl_t *rfctl + , enum band_type band, u8 opch, const u8 *country_ie + , struct country_ie_slave_record *cisr, const char *caller_msg); #endif void dump_country_chplan(void *sel, const struct country_chplan *ent, bool regd_info); @@ -268,4 +330,196 @@ void dump_chplan_test(void *sel); #endif void dump_chplan_ver(void *sel); +struct regd_req_t { + _list list; + int ref_cnt; /* used by RTK_PRIV's COUNTRY_IE req */ + bool applied; + + enum regd_src_t src; + enum rtw_regd_inr inr; + + struct country_chplan chplan; +}; + +void rtw_regd_req_list_init(struct rf_ctl_t *rfctl, struct registry_priv *regsty); +void rtw_regd_req_list_free(struct rf_ctl_t *rfctl); + +void rtw_regd_watchdog_hdl(struct dvobj_priv *dvobj); + +struct _ADAPTER_LINK; +enum channel_width alink_adjust_linking_bw_by_regd(struct _ADAPTER_LINK *alink + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset); +enum channel_width adapter_adjust_linking_bw_by_regd(_adapter *adapter + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset); + +void rtw_rfctl_decide_init_chplan(struct rf_ctl_t *rfctl, + const char *hw_alpha2, u8 hw_chplan, u8 hw_chplan_6g, u8 hw_force_chplan); + +bool rtw_rfctl_is_disable_sw_channel_plan(struct dvobj_priv *dvobj); + +enum chplan_confs_type { + CHPLAN_CONFS_DIS_CH_FLAGS, + CHPLAN_CONFS_EXCL_CHS, + CHPLAN_CONFS_EXCL_CHS_6G, + CHPLAN_CONFS_INIT_REGD_ALWAYS_APPLY, + CHPLAN_CONFS_USER_REGD_ALWAYS_APPLY, + CHPLAN_CONFS_BCN_HINT_VALID_MS, + CHPLAN_CONFS_CIS_EN_MODE, + CHPLAN_CONFS_CIS_FLAGS, + CHPLAN_CONFS_CIS_EN_ROLE, + CHPLAN_CONFS_CIS_EN_IFBMP, + CHPLAN_CONFS_CIS_SCAN_INT_MS, + CHPLAN_CONFS_NUM, +}; + +struct chplan_confs { + u16 set_types; /* bitmap of chplan_confs_type */ + u8 dis_ch_flags; + u8 excl_chs[MAX_CHANNEL_NUM_2G_5G]; +#if CONFIG_IEEE80211_BAND_6GHZ + u8 excl_chs_6g[MAX_CHANNEL_NUM_6G]; +#endif + bool init_regd_always_apply; + bool user_regd_always_apply; + u32 bcn_hint_valid_ms; +#ifdef CONFIG_80211D + u8 cis_en_mode; + u8 cis_flags; + u8 cis_en_role; + u8 cis_en_ifbmp; + u32 cis_scan_int_ms; +#endif +}; + +struct SetChannelPlan_param { + enum regd_src_t regd_src; + enum rtw_regd_inr inr; + struct country_chplan country_ent; + bool has_country; + u8 channel_plan; +#if CONFIG_IEEE80211_BAND_6GHZ + u8 channel_plan_6g; +#endif + +#ifdef CONFIG_80211D + /* used for regd_src == RTK_PRIV and inr == COUNTRY_IE */ + struct country_ie_slave_record cisr; + u8 cisr_alink_id; + bool has_cisr; +#endif + + struct chplan_confs confs; + +#ifdef PLATFORM_LINUX + bool rtnl_lock_needed; +#endif +}; + +u8 rtw_set_chplan_hdl(_adapter *adapter, u8 *pbuf); + +u8 rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, u8 chplan_6g, enum rtw_regd_inr inr); +u8 rtw_set_country_cmd(_adapter *adapter, int flags, const char *country_code, enum rtw_regd_inr inr); +#ifdef CONFIG_80211D +u8 rtw_alink_apply_recv_country_ie_cmd(struct _ADAPTER_LINK *alink, int flags, enum band_type band,u8 opch, const u8 *country_ie); +u8 rtw_apply_recv_country_ie_cmd(_adapter *adapter, int flags, enum band_type band,u8 opch, const u8 *country_ie); +u8 rtw_apply_scan_network_country_ie_cmd(_adapter *adapter, int flags); +#endif +#ifdef CONFIG_REGD_SRC_FROM_OS +u8 rtw_sync_os_regd_cmd(_adapter *adapter, int flags, const char *country_code, u8 dfs_region, enum rtw_regd_inr inr); +#endif +u8 rtw_set_chplan_confs_cmd(_adapter *adapter, int flags, struct chplan_confs *confs); +#ifdef CONFIG_PROC_DEBUG +u16 rtw_parse_chplan_confs_cmd_str(struct chplan_confs *confs, char *str); +#endif + +struct get_chplan_resp { + enum regd_src_t regd_src; + u8 regd_inr_bmp; + char alpha2[2]; + u8 channel_plan; +#if CONFIG_IEEE80211_BAND_6GHZ + u8 chplan_6g; +#endif + +#if CONFIG_TXPWR_LIMIT + /* point to content of txpwr_lmt_names of specific band (after content of chset) */ + const char *txpwr_lmt_names[BAND_MAX]; + int txpwr_lmt_names_len[BAND_MAX]; + int txpwr_lmt_names_len_total; /* ease for free operation */ +#endif + u8 edcca_mode_2g; +#if CONFIG_IEEE80211_BAND_5GHZ + u8 edcca_mode_5g; +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + u8 edcca_mode_6g; +#endif +#ifdef CONFIG_DFS_MASTER + u8 dfs_domain; +#endif + u8 proto_en; + + struct chplan_confs confs; + + u8 chs_len; + RT_CHANNEL_INFO chs[0]; +}; + +struct get_channel_plan_param { + struct get_chplan_resp *chplan; +}; + +u8 rtw_get_chplan_hdl(_adapter *adapter, u8 *pbuf); +struct cmd_obj; +void rtw_get_chplan_callback(_adapter *adapter, struct cmd_obj *cmdobj); + +u8 rtw_get_chplan_cmd(_adapter *adapter, int flags, struct get_chplan_resp **chplan); +void rtw_free_get_chplan_resp(struct get_chplan_resp *chplan); + +#ifdef CONFIG_80211D +void rtw_alink_joinbss_update_regulatory(struct _ADAPTER_LINK *alink, const WLAN_BSSID_EX *network); +void rtw_alink_leavebss_update_regulatory(struct _ADAPTER_LINK * alink); +void rtw_alink_csa_update_regulatory(struct _ADAPTER_LINK *alink, enum band_type req_band, u8 req_ch); +void alink_process_country_ie(struct _ADAPTER_LINK *alink, u8 *ies, uint ies_len); + +void rtw_joinbss_update_regulatory(_adapter *adapter, const WLAN_BSSID_EX *network); +void rtw_leavebss_update_regulatory(_adapter *adapter); +void rtw_csa_update_regulatory(_adapter *adapter, enum band_type req_band, u8 req_ch); +void process_country_ie(_adapter *adapter, u8 *ies, uint ies_len); + +bool rtw_update_scanned_network_cisr(struct rf_ctl_t *rfctl, struct wlan_network *network); + +void rtw_rfctl_cis_init(struct rf_ctl_t *rfctl, struct registry_priv *regsty); +void rtw_rfctl_cis_deinit(struct rf_ctl_t *rfctl); +#endif + +#ifdef CONFIG_PROC_DEBUG +void dump_cur_chplan_confs(void *sel, struct rf_ctl_t *rfctl); +void dump_cur_country(void *sel, struct rf_ctl_t *rfctl); +void dump_cur_chplan(void *sel, struct rf_ctl_t *rfctl); +#endif + +#define CHPLAN_VER_STR_BUF_LEN 16 + +struct rtw_regdb_ops { + u8 (*get_default_regd_2g)(u8 id); +#if CONFIG_IEEE80211_BAND_5GHZ + u8 (*get_default_regd_5g)(u8 id); +#endif + bool (*is_domain_code_valid)(u8 id); + bool (*domain_get_ch)(u8 id, u32 ch, u8 *flags); +#if CONFIG_IEEE80211_BAND_6GHZ + u8 (*get_default_regd_6g)(u8 id); + bool (*is_domain_code_6g_valid)(u8 id); + bool (*domain_6g_get_ch)(u8 id, u32 ch, u8 *flags); +#endif + + bool (*get_chplan_from_alpha2)(const char *alpha2, struct country_chplan *ent); + +#ifdef CONFIG_RTW_DEBUG + void (*dump_chplan_test)(void *sel); +#endif + void (*get_ver_str)(char *buf, size_t buf_len); +}; + #endif /* __RTW_CHPLAN_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_chset.c b/drivers/net/wireless/rtl8822cs/core/rtw_chset.c new file mode 100644 index 000000000..2cd409f47 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/core/rtw_chset.c @@ -0,0 +1,382 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#define _RTW_CHSET_C_ + +#include + +const char *const _rtw_ch_type_str[] = { + [RTW_CHT_DIS] = "DIS", + [RTW_CHT_NO_IR] = "NO_IR", + [RTW_CHT_DFS] = "DFS", + [RTW_CHT_NO_HT40U] = "NO_40M+", + [RTW_CHT_NO_HT40L] = "NO_40M-", + [RTW_CHT_NO_80MHZ] = "NO_80M", + [RTW_CHT_NO_160MHZ] = "NO_160M", + [RTW_CHT_NUM] = "UNKNOWN", +}; + +enum rtw_ch_type get_ch_type_from_str(const char *str, size_t str_len) +{ + u8 i; + + for (i = 0; i < RTW_CHT_NUM; i++) + if (str_len == strlen(rtw_ch_type_str(i)) + && strncmp(str, rtw_ch_type_str(i), str_len) == 0) + return i; + return RTW_CHT_NUM; +} + +char *rtw_get_ch_flags_str(char *buf, u8 flags, char delim) +{ + char *pos = buf; + char d_str[2] = {delim, '\0'}; + int i; + + for (i = 0; i < RTW_CHT_NUM; i++) { + if (!(flags & BIT(i))) + continue; + pos += snprintf(pos, RTW_CH_FLAGS_STR_LEN - (pos - buf), "%s%s" + , pos == buf ? "" : d_str, rtw_ch_type_str(i)); + if (pos >= buf + RTW_CH_FLAGS_STR_LEN - 1) + break; + } + if (pos == buf) + *buf = '\0'; + + return buf; +} + +int rtw_chset_init(struct rtw_chset *chset, u8 band_bmp) +{ + u8 ch_num = 0; + int band, i; + + _rtw_memset(chset->chs, 0, sizeof(RT_CHANNEL_INFO) * MAX_CHANNEL_NUM); + + for (band = 0; band < BAND_MAX; band++) { + u8 center_ch_num; + u8 (*center_chs)(u8, u8); + + if (!(band_bmp & band_to_band_cap(band))) + continue; + + center_ch_num = center_chs_num_of_band[band](CHANNEL_WIDTH_20); + center_chs = center_chs_of_band[band]; + + chset->chs_of_band[band] = &chset->chs[ch_num]; + chset->chs_len_of_band[band] = 0; + + for (i = 0; i < center_ch_num; i++) { + chset->chs[ch_num].band = band; + chset->chs[ch_num].ChannelNum = center_chs(CHANNEL_WIDTH_20, i); + chset->chs_len_of_band[band]++;; + ch_num++; + } + } + + chset->chs_len = ch_num; + + return _SUCCESS; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +/* + * Search enabled channel with the @param ch in given @param ch_set + * @ch_set: the given channel set + * @ch: the given channel number + * + * return the index of channel_num in channel_set, -1 if not found + */ +RTW_FUNC_2G_5G_ONLY static int _rtw_chset_search_ch(const struct rtw_chset *chset, u32 ch, bool include_dis) +{ + int i; + + if (ch == 0) + return -1; + + for (i = 0; i < chset->chs_len; i++) { + if (ch == chset->chs[i].ChannelNum + && (include_dis || !(chset->chs[i].flags & RTW_CHF_DIS))) + return i; + } + + return -1; +} + +RTW_FUNC_2G_5G_ONLY int rtw_chset_search_ch(const struct rtw_chset *chset, u32 ch) +{ + return _rtw_chset_search_ch(chset, ch, false); +} +#endif + +/* + * Search enabled channel with the @param ch of @param band in given @param ch_set + * @ch_set: the given channel set + * @band: the given band + * @ch: the given channel number + * + * return the index of channel_num in channel_set, -1 if not found + */ +static int _rtw_chset_search_bch(const struct rtw_chset *chset, enum band_type band, u32 ch, bool include_dis) +{ + int i; + + if (ch == 0) + return -1; + + for (i = 0; i < chset->chs_len; i++) { + if (band == chset->chs[i].band && ch == chset->chs[i].ChannelNum + && (include_dis || !(chset->chs[i].flags & RTW_CHF_DIS))) + return i; + } + + return -1; +} + +int rtw_chset_search_bch(const struct rtw_chset *chset, enum band_type band, u32 ch) +{ + return _rtw_chset_search_bch(chset, band, ch, false); +} + +RT_CHANNEL_INFO *rtw_chset_get_chinfo_by_bch(struct rtw_chset *chset, enum band_type band, u32 ch, bool include_dis) +{ + int i = _rtw_chset_search_bch(chset, band, ch, include_dis); + + return i >= 0 ? &chset->chs[i] : NULL; +} + +/* + * Check if the @param ch, bw, offset is valid for the given @param ch_set + * @ch_set: the given channel set + * @ch: the given channel number + * @bw: the given bandwidth + * @offset: the given channel offset + * + * return valid (1) or not (0) + */ +static u8 _rtw_chset_is_bchbw_valid(const struct rtw_chset *chset, enum band_type band, u8 ch, u8 bw, u8 offset + , bool allow_primary_passive, bool allow_passive) +{ + u8 cch; + u8 *op_chs; + u8 op_ch_num; + u8 valid = 0; + int i; + int ch_idx; + + cch = rtw_get_center_ch_by_band(band, ch, bw, offset); + + if (!rtw_get_op_chs_by_bcch_bw(band, cch, bw, &op_chs, &op_ch_num)) + goto exit; + + for (i = 0; i < op_ch_num; i++) { + if (0) + RTW_INFO("%u,%u,%u,%u - cch:%u, bw:%u, op_ch:%u\n", band, ch, bw, offset, cch, bw, *(op_chs + i)); + ch_idx = rtw_chset_search_bch(chset, band, *(op_chs + i)); + if (ch_idx == -1) + break; + if (!allow_passive && chset->chs[ch_idx].flags & RTW_CHF_NO_IR) { + /* all sub chs are passive is not allowed and one of sub ch is NO_IR */ + if (!allow_primary_passive) /* even primary ch is not allow to be NO_IR */ + break; + if (chset->chs[ch_idx].ChannelNum != ch) /* allow primary ch NO_IR, but this is not primary ch */ + break; + } + if (bw >= CHANNEL_WIDTH_40) { + if ((chset->chs[ch_idx].flags & RTW_CHF_NO_HT40U) && i % 2 == 0) + break; + if ((chset->chs[ch_idx].flags & RTW_CHF_NO_HT40L) && i % 2 == 1) + break; + } + if (bw >= CHANNEL_WIDTH_80 && (chset->chs[ch_idx].flags & RTW_CHF_NO_80MHZ)) + break; + if (bw >= CHANNEL_WIDTH_160 && (chset->chs[ch_idx].flags & RTW_CHF_NO_160MHZ)) + break; + } + + if (op_ch_num != 0 && i == op_ch_num) + valid = 1; + +exit: + return valid; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY u8 rtw_chset_is_chbw_valid(const struct rtw_chset *chset, u8 ch, u8 bw, u8 offset, bool allow_primary_passive, bool allow_passive) +{ + return _rtw_chset_is_bchbw_valid(chset, rtw_is_2g_ch(ch) ? BAND_ON_24G : BAND_ON_5G, ch, bw, offset, allow_primary_passive, allow_passive); +} +#endif + +u8 rtw_chset_is_bchbw_valid(const struct rtw_chset *chset, enum band_type band, u8 ch, u8 bw, u8 offset + , bool allow_primary_passive, bool allow_passive) +{ + return _rtw_chset_is_bchbw_valid(chset, band, ch, bw, offset, allow_primary_passive, allow_passive); +} + +/** + * rtw_chset_sync_bchbw - obey g_ch, adjust g_bw, g_offset, bw, offset to fit in channel plan + * @ch_set: channel plan to check + * @req_ch: pointer of the request ch, may be modified further + * @req_bw: pointer of the request bw, may be modified further + * @req_offset: pointer of the request offset, may be modified further + * @g_ch: pointer of the ongoing group ch + * @g_bw: pointer of the ongoing group bw, may be modified further + * @g_offset: pointer of the ongoing group offset, may be modified further + * @allow_primary_passive: if allow passive primary ch when deciding chbw + * @allow_passive: if allow passive ch (not primary) when deciding chbw + */ +void rtw_chset_sync_bchbw(const struct rtw_chset *chset, enum band_type *req_band, u8 *req_ch, u8 *req_bw, u8 *req_offset + , enum band_type *g_band, u8 *g_ch, u8 *g_bw, u8 *g_offset, bool allow_primary_passive, bool allow_passive) +{ + enum band_type r_band; + u8 r_ch, r_bw, r_offset; + enum band_type u_band; + u8 u_ch, u_bw, u_offset; + u8 cur_bw = *req_bw; + + while (1) { + r_band = *req_band; + r_ch = *req_ch; + r_bw = cur_bw; + r_offset = *req_offset; + u_band = *g_band; + u_ch = *g_ch; + u_bw = *g_bw; + u_offset = *g_offset; + + rtw_sync_bchbw(&r_band, &r_ch, &r_bw, &r_offset, &u_band, &u_ch, &u_bw, &u_offset); + + if (rtw_chset_is_bchbw_valid(chset, r_band, r_ch, r_bw, r_offset, allow_primary_passive, allow_passive)) + break; + if (cur_bw == CHANNEL_WIDTH_20) { + rtw_warn_on(1); + break; + } + cur_bw--; + }; + + *req_band = r_band; + *req_ch = r_ch; + *req_bw = r_bw; + *req_offset = r_offset; + *g_band = u_band; + *g_ch = u_ch; + *g_bw = u_bw; + *g_offset = u_offset; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY void rtw_chset_sync_chbw(const struct rtw_chset *chset, u8 *req_ch, u8 *req_bw, u8 *req_offset + , u8 *g_ch, u8 *g_bw, u8 *g_offset, bool allow_primary_passive, bool allow_passive) +{ + enum band_type band = rtw_is_2g_ch(*g_ch) ? BAND_ON_24G : BAND_ON_5G; /* follow g_ch's band */ + + rtw_chset_sync_bchbw(chset, &band, req_ch, req_bw, req_offset, &band, g_ch, g_bw, g_offset, allow_primary_passive, allow_passive); +} +#endif + +u8 *rtw_chset_set_spt_chs_ie(struct rtw_chset *chset, u8 *buf_pos, uint *buf_len) +{ + u8 i = 0; + u8 fch = 0, lch = 0, ch; + u8 *cont = buf_pos + 2; + RT_CHANNEL_INFO *chinfo; + + while (i < chset->chs_len) { + chinfo = &chset->chs[i++]; + + if (chinfo->flags & RTW_CHF_DIS) + continue; + + #if CONFIG_IEEE80211_BAND_6GHZ + /* don't appnd 6G chs now, how to distinguish 2G/5G chs with 6G? */ + if (chinfo->band == BAND_ON_6G) + continue; + #endif + + ch = chinfo->ChannelNum; + if (fch == 0) { + fch = ch; + lch = ch; + continue; + } + + if (lch + 1 != ch) { + *cont = fch; + *(cont + 1) = lch - fch + 1; + cont += 2; + fch = ch; + } + lch = ch; + } + if (fch) { + /* last subband */ + *cont = fch; + *(cont + 1) = lch - fch + 1; + cont += 2; + } + + if (cont > buf_pos + 2) { + *buf_pos = WLAN_EID_SUPPORTED_CHANNELS; + *(buf_pos + 1) = cont - buf_pos - 2; + *buf_len += cont - buf_pos; + return cont; + } + return buf_pos; +} + +#ifdef CONFIG_PROC_DEBUG +void dump_chinfos(void *sel, const RT_CHANNEL_INFO *chinfos, u8 chinfo_num) +{ + u32 bhint_sec; + char bhint_buf[8]; + u16 non_ocp_sec; + char non_ocp_buf[8]; + char flags_buf[RTW_CH_FLAGS_STR_LEN]; + u8 enable_ch_num = 0; + u8 i; + + RTW_PRINT_SEL(sel, "%-3s %-4s %-5s %-4s flags\n", "ch", "freq", "bhint", "nocp"); + + for (i = 0; i < chinfo_num; i++) { + if (chinfos[i].flags & RTW_CHF_DIS) + continue; + enable_ch_num++; + + bhint_sec = 0; + if (CH_IS_BCN_HINT(&chinfos[i])) { + bhint_sec = rtw_systime_to_ms(chinfos[i].bcn_hint_end_time - rtw_get_current_time()) / 1000; + if (bhint_sec > 99999) + bhint_sec = 99999; + } + snprintf(bhint_buf, 8, "%d", bhint_sec); + + non_ocp_sec = 0; + #ifdef CONFIG_DFS_MASTER + if (CH_IS_NON_OCP(&chinfos[i])) + non_ocp_sec = rtw_systime_to_ms(chinfos[i].non_ocp_end_time - rtw_get_current_time()) / 1000; + #endif + snprintf(non_ocp_buf, 8, "%d", non_ocp_sec); + + RTW_PRINT_SEL(sel, "%3u %4u %5s %4s %s\n" + , chinfos[i].ChannelNum, rtw_bch2freq(chinfos[i].band, chinfos[i].ChannelNum) + , bhint_buf, non_ocp_buf, rtw_get_ch_flags_str(flags_buf, chinfos[i].flags, ' ') + ); + } + + RTW_PRINT_SEL(sel, "total ch number:%d\n", enable_ch_num); +} +#endif /* CONFIG_PROC_DEBUG */ \ No newline at end of file diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_chset.h b/drivers/net/wireless/rtl8822cs/core/rtw_chset.h new file mode 100644 index 000000000..1b718e2c8 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/core/rtw_chset.h @@ -0,0 +1,112 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef __RTW_CHSET_H__ +#define __RTW_CHSET_H__ + +enum rtw_ch_type { + RTW_CHT_DIS = 0, + RTW_CHT_NO_IR = 1, + RTW_CHT_DFS = 2, + RTW_CHT_NO_HT40U = 3, + RTW_CHT_NO_HT40L = 4, + RTW_CHT_NO_80MHZ = 5, + RTW_CHT_NO_160MHZ = 6, + RTW_CHT_NUM, +}; + +extern const char *const _rtw_ch_type_str[]; +#define rtw_ch_type_str(type) (((type) >= RTW_CHT_NUM) ? _rtw_ch_type_str[RTW_CHT_NUM] : _rtw_ch_type_str[(type)]) + +enum rtw_ch_type get_ch_type_from_str(const char *str, size_t str_len); + +enum { + RTW_CHF_DIS = BIT(RTW_CHT_DIS), + RTW_CHF_NO_IR = BIT(RTW_CHT_NO_IR), + RTW_CHF_DFS = BIT(RTW_CHT_DFS), + RTW_CHF_NO_HT40U = BIT(RTW_CHT_NO_HT40U), + RTW_CHF_NO_HT40L = BIT(RTW_CHT_NO_HT40L), + RTW_CHF_NO_80MHZ = BIT(RTW_CHT_NO_80MHZ), + RTW_CHF_NO_160MHZ = BIT(RTW_CHT_NO_160MHZ), +}; + +#define RTW_CH_FLAGS_STR_LEN (45) +char *rtw_get_ch_flags_str(char *buf, u8 flags, char delim); + +/* The channel information about this channel including joining, scanning, and power constraints. */ +typedef struct _RT_CHANNEL_INFO { + u8 band; /* enum band_type */ + u8 ChannelNum; /* The channel number. */ + + /* + * Bitmap and its usage: + * RTW_CHF_DIS, RTW_CHF_NO_IR, RTW_CHF_DFS: is used to check for status + * RTW_CHF_NO_HT40U, RTW_CHF_NO_HT40L, RTW_CHF_NO_80MHZ, RTW_CHF_NO_160MHZ: extra bandwidth limitation (ex: from regulatory) + */ + u8 flags; + + bool reg_no_ir; + systime bcn_hint_end_time; + +#ifdef CONFIG_FIND_BEST_CHANNEL + u32 rx_count; +#endif + +#if CONFIG_IEEE80211_BAND_5GHZ && CONFIG_DFS + #ifdef CONFIG_DFS_MASTER + bool cac_done; + systime non_ocp_end_time; + #endif +#endif + + u8 hidden_bss_cnt; /* per scan count */ + +#if defined(CONFIG_IOCTL_CFG80211) && !RTW_PER_ADAPTER_WIPHY + void *os_chan; +#endif +} RT_CHANNEL_INFO, *PRT_CHANNEL_INFO; + +#define RTW_BCN_HINT_STOPPED 0 /* used by bcn_hint_end_time time stamps */ +#define CH_IS_BCN_HINT_STOPPED(rt_ch_info) ((rt_ch_info)->bcn_hint_end_time == RTW_BCN_HINT_STOPPED) +#define CH_IS_BCN_HINT(rt_ch_info) (!CH_IS_BCN_HINT_STOPPED(rt_ch_info) && rtw_time_after((rt_ch_info)->bcn_hint_end_time, rtw_get_current_time())) + +struct rtw_chset { + RT_CHANNEL_INFO chs[MAX_CHANNEL_NUM]; + u8 chs_len; + RT_CHANNEL_INFO *chs_of_band[BAND_MAX]; + u8 chs_len_of_band[BAND_MAX]; + u8 enable_ch_num; +}; + +int rtw_chset_init(struct rtw_chset *chset, u8 band_bmp); + +RTW_FUNC_2G_5G_ONLY int rtw_chset_search_ch(const struct rtw_chset *chset, u32 ch); +RTW_FUNC_2G_5G_ONLY u8 rtw_chset_is_chbw_valid(const struct rtw_chset *chset, u8 ch, u8 bw, u8 offset + , bool allow_primary_passive, bool allow_passive); +RTW_FUNC_2G_5G_ONLY void rtw_chset_sync_chbw(const struct rtw_chset *chset, u8 *req_ch, u8 *req_bw, u8 *req_offset + , u8 *g_ch, u8 *g_bw, u8 *g_offset, bool allow_primary_passive, bool allow_passive); +int rtw_chset_search_bch(const struct rtw_chset *chset, enum band_type band, u32 ch); +RT_CHANNEL_INFO *rtw_chset_get_chinfo_by_bch(struct rtw_chset *chset, enum band_type band, u32 ch, bool include_dis); +u8 rtw_chset_is_bchbw_valid(const struct rtw_chset *chset, enum band_type band, u8 ch, u8 bw, u8 offset + , bool allow_primary_passive, bool allow_passive); +void rtw_chset_sync_bchbw(const struct rtw_chset *chset, enum band_type *req_band, u8 *req_ch, u8 *req_bw, u8 *req_offset + , enum band_type *g_band, u8 *g_ch, u8 *g_bw, u8 *g_offset, bool allow_primary_passive, bool allow_passive); + +u8 *rtw_chset_set_spt_chs_ie(struct rtw_chset *chset, u8 *buf_pos, uint *buf_len); + +#ifdef CONFIG_PROC_DEBUG +void dump_chinfos(void *sel, const RT_CHANNEL_INFO *chinfos, u8 chinfo_num); +#endif + +#endif /* __RTW_CHSET_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_cmd.c b/drivers/net/wireless/rtl8822cs/core/rtw_cmd.c index d14d43fd7..a57ba4bff 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_cmd.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_cmd.c @@ -1,10 +1,10 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation.EXTRA_CFLAGS += -I$(src)/include + * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or @@ -37,33 +37,10 @@ sint _rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) _rtw_init_queue(&(pcmdpriv->cmd_queue)); - /* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */ - pcmdpriv->cmd_seq = 1; - - pcmdpriv->cmd_allocated_buf = rtw_zmalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ); - - if (pcmdpriv->cmd_allocated_buf == NULL) { - res = _FAIL; - goto exit; - } - - pcmdpriv->cmd_buf = pcmdpriv->cmd_allocated_buf + CMDBUFF_ALIGN_SZ - ((SIZE_PTR)(pcmdpriv->cmd_allocated_buf) & (CMDBUFF_ALIGN_SZ - 1)); - - pcmdpriv->rsp_allocated_buf = rtw_zmalloc(MAX_RSPSZ + 4); - - if (pcmdpriv->rsp_allocated_buf == NULL) { - res = _FAIL; - goto exit; - } - - pcmdpriv->rsp_buf = pcmdpriv->rsp_allocated_buf + 4 - ((SIZE_PTR)(pcmdpriv->rsp_allocated_buf) & 3); - pcmdpriv->cmd_issued_cnt = pcmdpriv->cmd_done_cnt = pcmdpriv->rsp_cnt = 0; _rtw_mutex_init(&pcmdpriv->sctx_mutex); -exit: - return res; @@ -213,19 +190,11 @@ void _rtw_free_evt_priv(struct evt_priv *pevtpriv) void _rtw_free_cmd_priv(struct cmd_priv *pcmdpriv) { - if (pcmdpriv) { _rtw_spinlock_free(&(pcmdpriv->cmd_queue.lock)); _rtw_free_sema(&(pcmdpriv->cmd_queue_sema)); /* _rtw_free_sema(&(pcmdpriv->cmd_done_sema)); */ _rtw_free_sema(&(pcmdpriv->start_cmdthread_sema)); - - if (pcmdpriv->cmd_allocated_buf) - rtw_mfree(pcmdpriv->cmd_allocated_buf, MAX_CMDSZ + CMDBUFF_ALIGN_SZ); - - if (pcmdpriv->rsp_allocated_buf) - rtw_mfree(pcmdpriv->rsp_allocated_buf, MAX_RSPSZ + 4); - _rtw_mutex_free(&pcmdpriv->sctx_mutex); } } @@ -418,6 +387,14 @@ int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) if (cmd_obj->no_io) bAllow = _TRUE; + if (cmd_obj->cmdcode == CMD_SET_DRV_EXTRA) { + struct drvextra_cmd_parm *parm = (struct drvextra_cmd_parm *)cmd_obj->parmbuf; + + if (parm->ec_id == POWER_SAVING_CTRL_WK_CID) + if (parm->type == IPS_CTRL_LEAVE_SET_MODE) + return _SUCCESS; + } + if ((!rtw_is_hw_init_completed(pcmdpriv->padapter) && (bAllow == _FALSE)) || ATOMIC_READ(&(pcmdpriv->cmdthd_running)) == _FALSE /* com_thread not running */ ) { @@ -452,12 +429,7 @@ u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) #endif res = rtw_cmd_filter(pcmdpriv, cmd_obj); - if ((_FAIL == res) || (cmd_obj->cmdsz > MAX_CMDSZ)) { - if (cmd_obj->cmdsz > MAX_CMDSZ) { - RTW_INFO("%s failed due to obj->cmdsz(%d) > MAX_CMDSZ(%d)\n", __func__, cmd_obj->cmdsz, MAX_CMDSZ); - rtw_warn_on(1); - } - + if (_FAIL == res) { if (cmd_obj->cmdcode == CMD_SET_DRV_EXTRA) { struct drvextra_cmd_parm *extra_parm = (struct drvextra_cmd_parm *)cmd_obj->parmbuf; @@ -489,12 +461,6 @@ struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv) return cmd_obj; } -void rtw_cmd_clr_isr(struct cmd_priv *pcmdpriv) -{ - pcmdpriv->cmd_done_cnt++; - /* _rtw_up_sema(&(pcmdpriv->cmd_done_sema)); */ -} - void rtw_free_cmd_obj(struct cmd_obj *pcmd) { if (pcmd->parmbuf != NULL) { @@ -526,7 +492,6 @@ thread_return rtw_cmd_thread(thread_context context) { u8 ret; struct cmd_obj *pcmd; - u8 *pcmdbuf, *prspbuf; systime cmd_start_time; u32 cmd_process_time; u8(*cmd_hdl)(_adapter *padapter, u8 *pbuf); @@ -536,10 +501,14 @@ thread_return rtw_cmd_thread(thread_context context) struct drvextra_cmd_parm *extra_parm = NULL; _irqL irqL; +/* Increase the priority of command thread for MTK9612 platform to avoid the scanning timeout when the system is busy during the system booting up. */ +#ifdef CONFIG_HIGH_PRIORITY_CMD_THREAD + struct sched_param param = { .sched_priority = 1 }; + sched_setscheduler(current, SCHED_FIFO, ¶m); +#endif + thread_enter("RTW_CMD_THREAD"); - pcmdbuf = pcmdpriv->cmd_buf; - prspbuf = pcmdpriv->rsp_buf; ATOMIC_SET(&(pcmdpriv->cmdthd_running), _TRUE); _rtw_up_sema(&pcmdpriv->start_cmdthread_sema); @@ -547,6 +516,7 @@ thread_return rtw_cmd_thread(thread_context context) while (1) { if (_rtw_down_sema(&pcmdpriv->cmd_queue_sema) == _FAIL) { RTW_PRINT(FUNC_ADPT_FMT" _rtw_down_sema(&pcmdpriv->cmd_queue_sema) return _FAIL, break\n", FUNC_ADPT_ARG(padapter)); + flush_signals_thread(); break; } @@ -587,12 +557,6 @@ _next: cmd_start_time = rtw_get_current_time(); pcmdpriv->cmd_issued_cnt++; - if (pcmd->cmdsz > MAX_CMDSZ) { - RTW_ERR("%s cmdsz:%d > MAX_CMDSZ:%d\n", __func__, pcmd->cmdsz, MAX_CMDSZ); - pcmd->res = H2C_PARAMETERS_ERROR; - goto post_process; - } - if (pcmd->cmdcode >= (sizeof(wlancmds) / sizeof(struct rtw_cmd))) { RTW_ERR("%s undefined cmdcode:%d\n", __func__, pcmd->cmdcode); pcmd->res = H2C_PARAMETERS_ERROR; @@ -647,22 +611,39 @@ _next: RTW_INFO(ADPT_FMT" "CMD_FMT" %sexecute\n", ADPT_ARG(pcmd->padapter), CMD_ARG(pcmd) , pcmd->res == H2C_ENQ_HEAD ? "ENQ_HEAD " : (pcmd->res == H2C_ENQ_HEAD_FAIL ? "ENQ_HEAD_FAIL " : "")); - _rtw_memcpy(pcmdbuf, pcmd->parmbuf, pcmd->cmdsz); - ret = cmd_hdl(pcmd->padapter, pcmdbuf); + ret = cmd_hdl(pcmd->padapter, pcmd->parmbuf); pcmd->res = ret; pcmdpriv->cmd_seq++; post_process: + pcmd->sctx_rsp_buf = NULL; /* init to NULL, may point to buffer allocated in cmd_thread after callback */ + + /* call callback function for post-processed */ + if (pcmd->cmdcode < (sizeof(wlancmds) / sizeof(struct rtw_cmd))) + pcmd_callback = wlancmds[pcmd->cmdcode].callback; + else + pcmd_callback = NULL; + + if (pcmd_callback) + pcmd_callback(pcmd->padapter, pcmd); _enter_critical_mutex(&(pcmd->padapter->cmdpriv.sctx_mutex), NULL); if (pcmd->sctx) { if (0) RTW_PRINT(FUNC_ADPT_FMT" pcmd->sctx\n", FUNC_ADPT_ARG(pcmd->padapter)); - if (pcmd->res == H2C_SUCCESS) + if (pcmd->res == H2C_SUCCESS) { + if (pcmd->sctx_rsp_buf) + pcmd->sctx->rsp = pcmd->sctx_rsp_buf; rtw_sctx_done(&pcmd->sctx); - else + } else rtw_sctx_done_err(&pcmd->sctx, RTW_SCTX_DONE_CMD_ERROR); + } else { + if (pcmd->sctx_rsp_buf && pcmd->sctx_rsp_buf_free) { + if (0) + RTW_PRINT(FUNC_ADPT_FMT" free pcmd->sctx_rsp_buf\n", FUNC_ADPT_ARG(pcmd->padapter)); + pcmd->sctx_rsp_buf_free(pcmd->sctx_rsp_buf); + } } _exit_critical_mutex(&(pcmd->padapter->cmdpriv.sctx_mutex), NULL); @@ -673,18 +654,7 @@ post_process: rtw_warn_on(1); } - /* call callback function for post-processed */ - if (pcmd->cmdcode < (sizeof(wlancmds) / sizeof(struct rtw_cmd))) - pcmd_callback = wlancmds[pcmd->cmdcode].callback; - else - pcmd_callback = NULL; - - if (pcmd_callback == NULL) { - rtw_free_cmd_obj(pcmd); - } else { - /* todo: !!! fill rsp_buf to pcmd->rsp if (pcmd->rsp!=NULL) */ - pcmd_callback(pcmd->padapter, pcmd);/* need conider that free cmd_obj in rtw_cmd_callback */ - } + rtw_free_cmd_obj(pcmd); flush_signals_thread(); @@ -986,85 +956,26 @@ inline u8 rtw_change_bss_chbw_cmd(_adapter *adapter, int flags , req_ch, req_bw, req_offset ); } -#endif /* CONFIG_AP_MODE */ -#ifdef CONFIG_80211D -/* Return corresponding country_chplan setting */ -static bool rtw_joinbss_check_country_ie(_adapter *adapter, const WLAN_BSSID_EX *network, struct country_chplan *ent, WLAN_BSSID_EX *out_network) +inline u8 rtw_change_bss_bchbw_cmd(_adapter *adapter, int flags + , u32 iflbmp, u32 excl_iflbmp, s8 req_band, s16 req_ch, s8 req_bw, s8 req_offset) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - bool ret = 0; - - if (rfctl->regd_src == REGD_SRC_RTK_PRIV - && !rtw_rfctl_is_disable_sw_channel_plan(rfctl_to_dvobj(rfctl)) - ) { - struct mlme_priv *mlme = &adapter->mlmepriv; - const u8 *country_ie = NULL; - sint country_ie_len = 0; - - if (rtw_iface_accept_country_ie(adapter)) { - country_ie = rtw_get_ie(BSS_EX_TLV_IES(network) - , WLAN_EID_COUNTRY, &country_ie_len, BSS_EX_TLV_IES_LEN(network)); - if (country_ie) { - if (country_ie_len < 6) { - country_ie = NULL; - country_ie_len = 0; - } else - country_ie_len += 2; - } - } - - if (country_ie) { - enum country_ie_slave_status status; - - rtw_buf_update(&mlme->recv_country_ie, &mlme->recv_country_ie_len, country_ie, country_ie_len); - - status = rtw_get_chplan_from_recv_country_ie(adapter - , network->Configuration.DSConfig > 14 ? BAND_ON_5G : BAND_ON_2_4G - , network->Configuration.DSConfig, country_ie, ent, NULL, __func__); - if (status != COUNTRY_IE_SLAVE_NOCOUNTRY) - ret = 1; - - if (out_network) { - _rtw_memcpy(BSS_EX_IES(out_network) + BSS_EX_IES_LEN(out_network) - , country_ie, country_ie_len); - BSS_EX_IES_LEN(out_network) += country_ie_len; - } - } else - rtw_buf_free(&mlme->recv_country_ie, &mlme->recv_country_ie_len); - } - - return ret; + /* 2G/5G band only, single link only */ + return rtw_change_bss_chbw_cmd(adapter, flags + , iflbmp_to_ifbmp(iflbmp), iflbmp_to_ifbmp(excl_iflbmp) + , req_ch, req_bw, req_offset); } -#endif /* CONFIG_80211D */ +#endif /* CONFIG_AP_MODE */ u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network *pnetwork) { - u8 *auth, res = _SUCCESS; - uint t_len = 0; + u8 res = _SUCCESS; WLAN_BSSID_EX *psecnetwork; struct cmd_obj *pcmd; struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + struct joinbss_parm *param; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - struct qos_priv *pqospriv = &pmlmepriv->qospriv; - struct security_priv *psecuritypriv = &padapter->securitypriv; - struct registry_priv *pregistrypriv = &padapter->registrypriv; -#ifdef CONFIG_80211D - struct country_chplan country_ent; -#endif - struct country_chplan *req_chplan = NULL; -#ifdef CONFIG_80211N_HT - struct ht_priv *phtpriv = &pmlmepriv->htpriv; -#endif /* CONFIG_80211N_HT */ -#ifdef CONFIG_80211AC_VHT - struct vht_priv *pvhtpriv = &pmlmepriv->vhtpriv; -#endif /* CONFIG_80211AC_VHT */ NDIS_802_11_NETWORK_INFRASTRUCTURE ndis_network_mode = pnetwork->network.InfrastructureMode; - struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - u32 tmp_len; - u8 *ptmp = NULL; rtw_led_control(padapter, LED_CTL_START_TO_LINK); @@ -1073,18 +984,6 @@ u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network *pnetwork) res = _FAIL; goto exit; } -#if 0 - /* for IEs is pointer */ - t_len = sizeof(u32) + sizeof(NDIS_802_11_MAC_ADDRESS) + 2 + - sizeof(NDIS_802_11_SSID) + sizeof(u32) + - sizeof(NDIS_802_11_RSSI) + sizeof(NDIS_802_11_NETWORK_TYPE) + - sizeof(NDIS_802_11_CONFIGURATION) + - sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE) + - sizeof(NDIS_802_11_RATES_EX) + sizeof(WLAN_PHY_INFO) + sizeof(u32) + MAX_IE_SZ; -#endif - /* for IEs is fix buf size */ - t_len = sizeof(WLAN_BSSID_EX); - /* for hidden ap to set fw_state here */ if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) != _TRUE) { @@ -1103,152 +1002,22 @@ u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network *pnetwork) } } - pmlmeinfo->assoc_AP_vendor = check_assoc_AP(pnetwork->network.IEs, pnetwork->network.IELength); - - rtw_phydm_update_ap_vendor_ie(padapter); - -#ifdef CONFIG_80211AC_VHT - /* save AP beamform_cap info for BCM IOT issue */ - if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_BROADCOM) - get_vht_bf_cap(pnetwork->network.IEs, - pnetwork->network.IELength, - &pvhtpriv->ap_bf_cap); -#endif - /* - Modified by Arvin 2015/05/13 - Solution for allocating a new WLAN_BSSID_EX to avoid race condition issue between disconnect and joinbss - */ - psecnetwork = (WLAN_BSSID_EX *)rtw_zmalloc(sizeof(WLAN_BSSID_EX)); - if (psecnetwork == NULL) { + param = rtw_malloc(sizeof(struct joinbss_parm)); + if (param == NULL) { if (pcmd != NULL) - rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj)); - + rtw_mfree(pcmd, sizeof(struct cmd_obj)); res = _FAIL; - - goto exit; } - _rtw_memset(psecnetwork, 0, t_len); + _rtw_memset(¶m->network, 0, sizeof(WLAN_BSSID_EX)); + _rtw_memcpy(¶m->network, &pnetwork->network, get_WLAN_BSSID_EX_sz(&pnetwork->network)); - _rtw_memcpy(psecnetwork, &pnetwork->network, get_WLAN_BSSID_EX_sz(&pnetwork->network)); - - auth = &psecuritypriv->authenticator_ie[0]; - psecuritypriv->authenticator_ie[0] = (unsigned char)psecnetwork->IELength; - - if ((psecnetwork->IELength - 12) < (256 - 1)) - _rtw_memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->IEs[12], psecnetwork->IELength - 12); - else - _rtw_memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->IEs[12], (256 - 1)); - - psecnetwork->IELength = 0; - /* Added by Albert 2009/02/18 */ - /* If the the driver wants to use the bssid to create the connection. */ - /* If not, we have to copy the connecting AP's MAC address to it so that */ - /* the driver just has the bssid information for PMKIDList searching. */ - - if (pmlmepriv->assoc_by_bssid == _FALSE) - _rtw_memcpy(&pmlmepriv->assoc_bssid[0], &pnetwork->network.MacAddress[0], ETH_ALEN); - - /* copy fixed ie */ - _rtw_memcpy(psecnetwork->IEs, pnetwork->network.IEs, 12); - psecnetwork->IELength = 12; - - psecnetwork->IELength += rtw_restruct_sec_ie(padapter, psecnetwork->IEs + psecnetwork->IELength); - - - pqospriv->qos_option = 0; - - if (pregistrypriv->wmm_enable) { -#ifdef CONFIG_WMMPS_STA - rtw_uapsd_use_default_setting(padapter); -#endif /* CONFIG_WMMPS_STA */ - tmp_len = rtw_restruct_wmm_ie(padapter, &pnetwork->network.IEs[0], &psecnetwork->IEs[0], pnetwork->network.IELength, psecnetwork->IELength); - - if (psecnetwork->IELength != tmp_len) { - psecnetwork->IELength = tmp_len; - pqospriv->qos_option = 1; /* There is WMM IE in this corresp. beacon */ - } else { - pqospriv->qos_option = 0;/* There is no WMM IE in this corresp. beacon */ - } - } - -#ifdef CONFIG_80211D - if (rtw_joinbss_check_country_ie(padapter, &pnetwork->network, &country_ent, psecnetwork)) - req_chplan = &country_ent; -#endif - -#ifdef CONFIG_80211N_HT - phtpriv->ht_option = _FALSE; - if (pregistrypriv->ht_enable && is_supported_ht(pregistrypriv->wireless_mode)) { - ptmp = rtw_get_ie(&pnetwork->network.IEs[12], _HT_CAPABILITY_IE_, &tmp_len, pnetwork->network.IELength - 12); - if (ptmp && tmp_len > 0) { - /* Added by Albert 2010/06/23 */ - /* For the WEP mode, we will use the bg mode to do the connection to avoid some IOT issue. */ - /* Especially for Realtek 8192u SoftAP. */ - if ((padapter->securitypriv.dot11PrivacyAlgrthm != _WEP40_) && - (padapter->securitypriv.dot11PrivacyAlgrthm != _WEP104_) && - (padapter->securitypriv.dot11PrivacyAlgrthm != _TKIP_)) { - rtw_ht_use_default_setting(padapter); - - /* rtw_restructure_ht_ie */ - rtw_restructure_ht_ie(padapter, &pnetwork->network.IEs[12], &psecnetwork->IEs[0], - pnetwork->network.IELength - 12, &psecnetwork->IELength, - pnetwork->network.Configuration.DSConfig, req_chplan); - } - } - } - -#ifdef CONFIG_80211AC_VHT - pvhtpriv->vht_option = _FALSE; - if (phtpriv->ht_option - && REGSTY_IS_11AC_ENABLE(pregistrypriv) - && is_supported_vht(pregistrypriv->wireless_mode) - && ((req_chplan && COUNTRY_CHPLAN_EN_11AC(req_chplan)) - || (!req_chplan && RFCTL_REG_EN_11AC(rfctl))) - ) { - u8 vht_enable = 0; - - if (pnetwork->network.Configuration.DSConfig > 14) - vht_enable = 1; - else if ((REGSTY_IS_11AC_24G_ENABLE(pregistrypriv)) && (padapter->registrypriv.wifi_spec == 0)) - vht_enable = 1; - - if (vht_enable == 1) - rtw_restructure_vht_ie(padapter, &pnetwork->network.IEs[0], &psecnetwork->IEs[0], - pnetwork->network.IELength, &psecnetwork->IELength, req_chplan); - } -#endif -#endif /* CONFIG_80211N_HT */ - - rtw_append_extended_cap(padapter, &psecnetwork->IEs[0], &psecnetwork->IELength); - -#ifdef CONFIG_RTW_80211R - rtw_ft_validate_akm_type(padapter, pnetwork); -#endif - -#if 0 - psecuritypriv->supplicant_ie[0] = (u8)psecnetwork->IELength; - - if (psecnetwork->IELength < (256 - 1)) - _rtw_memcpy(&psecuritypriv->supplicant_ie[1], &psecnetwork->IEs[0], psecnetwork->IELength); - else - _rtw_memcpy(&psecuritypriv->supplicant_ie[1], &psecnetwork->IEs[0], (256 - 1)); -#endif - - pcmd->cmdsz = sizeof(WLAN_BSSID_EX); - - _rtw_init_listhead(&pcmd->list); - pcmd->cmdcode = CMD_JOINBSS;/* _JoinBss_CMD_ */ - pcmd->parmbuf = (unsigned char *)psecnetwork; - pcmd->rsp = NULL; - pcmd->rspsz = 0; + init_h2fwcmd_w_parm_no_rsp(pcmd, param, CMD_JOINBSS); res = rtw_enqueue_cmd(pcmdpriv, pcmd); exit: - - return res; } @@ -1307,7 +1076,7 @@ exit: u8 rtw_stop_ap_cmd(_adapter *adapter, u8 flags) { struct cmd_obj *cmdobj; - struct drvextra_cmd_parm *parm; + struct drvextra_cmd_parm *parm = NULL; struct cmd_priv *pcmdpriv = &adapter->cmdpriv; struct submit_ctx sctx; u8 res = _SUCCESS; @@ -1327,10 +1096,11 @@ u8 rtw_stop_ap_cmd(_adapter *adapter, u8 flags) parm->type = 0; parm->size = 0; parm->pbuf = NULL; - + /* need enqueue, prepare cmd_obj and enqueue */ cmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(*cmdobj)); if (cmdobj == NULL) { + rtw_mfree((u8 *)parm, sizeof(*parm)); res = _FAIL; goto exit; } @@ -1470,8 +1240,19 @@ u8 rtw_setstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 key_type, bool else GET_ENCRY_ALGO(psecuritypriv, sta, psetstakey_para->algorithm, _FALSE); - if ((psetstakey_para->algorithm == _GCMP_256_) || (psetstakey_para->algorithm == _CCMP_256_)) + if ((psetstakey_para->algorithm == _GCMP_256_) || (psetstakey_para->algorithm == _CCMP_256_)) + { +#ifdef CONFIG_TDLS + /* TDLS_KEY doesn't support 256-bit key length yet */ + if (key_type == TDLS_KEY) { + RTW_WARN("%s: not support 256-bit key length if TDLS\n", __func__); + rtw_mfree((u8 *) psetstakey_para, sizeof(struct set_stakey_parm)); + res = _FAIL; + goto exit; + } +#endif key_len = 32; + } if (key_type == GROUP_KEY) { _rtw_memcpy(&psetstakey_para->key, &psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey, key_len); @@ -1897,305 +1678,21 @@ exit: return res; } -static u8 _rtw_set_chplan_cmd(_adapter *adapter, int flags - , u8 chplan, u8 chplan_6g, const struct country_chplan *country_ent - , enum regd_src_t regd_src, enum rtw_regd_inr inr - , const struct country_ie_slave_record *cisr) -{ - struct cmd_obj *cmdobj; - struct SetChannelPlan_param *parm; - struct cmd_priv *pcmdpriv = &adapter->cmdpriv; - struct submit_ctx sctx; -#ifdef PLATFORM_LINUX - bool rtnl_lock_needed = rtw_rtnl_lock_needed(adapter_to_dvobj(adapter)); -#endif - u8 res = _SUCCESS; - - /* check if allow software config */ - if (rtw_rfctl_is_disable_sw_channel_plan(adapter_to_dvobj(adapter)) == _TRUE) { - res = _FAIL; - goto exit; - } - - if (country_ent) { - /* if country_entry is provided, replace chplan */ - chplan = country_ent->chplan; - #if CONFIG_IEEE80211_BAND_6GHZ - chplan_6g = country_ent->chplan_6g; - #endif - } - - /* prepare cmd parameter */ - parm = (struct SetChannelPlan_param *)rtw_zmalloc(sizeof(*parm)); - if (parm == NULL) { - res = _FAIL; - goto exit; - } - parm->regd_src = regd_src; - parm->inr = inr; - if (country_ent) { - _rtw_memcpy(&parm->country_ent, country_ent, sizeof(parm->country_ent)); - parm->has_country = 1; - } - parm->channel_plan = chplan; -#if CONFIG_IEEE80211_BAND_6GHZ - parm->channel_plan_6g = chplan_6g; -#endif -#ifdef CONFIG_80211D - if (cisr) { - _rtw_memcpy(&parm->cisr, cisr, sizeof(*cisr)); - parm->has_cisr = 1; - } -#endif -#ifdef PLATFORM_LINUX - if (flags & (RTW_CMDF_DIRECTLY | RTW_CMDF_WAIT_ACK)) - parm->rtnl_lock_needed = rtnl_lock_needed; /* synchronous call, follow caller's */ - else - parm->rtnl_lock_needed = 1; /* asynchronous call, always needed */ -#endif - - if (flags & RTW_CMDF_DIRECTLY) { - /* no need to enqueue, do the cmd hdl directly and free cmd parameter */ - if (H2C_SUCCESS != rtw_set_chplan_hdl(adapter, (u8 *)parm)) - res = _FAIL; - rtw_mfree((u8 *)parm, sizeof(*parm)); - } else { - /* need enqueue, prepare cmd_obj and enqueue */ - cmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(*cmdobj)); - if (cmdobj == NULL) { - res = _FAIL; - rtw_mfree((u8 *)parm, sizeof(*parm)); - goto exit; - } - - init_h2fwcmd_w_parm_no_rsp(cmdobj, parm, CMD_SET_CHANPLAN); - - if (flags & RTW_CMDF_WAIT_ACK) { - cmdobj->sctx = &sctx; - rtw_sctx_init(&sctx, 2000); - } - - res = rtw_enqueue_cmd(pcmdpriv, cmdobj); - - if (res == _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) { - rtw_sctx_wait(&sctx, __func__); - _enter_critical_mutex(&pcmdpriv->sctx_mutex, NULL); - if (sctx.status == RTW_SCTX_SUBMITTED) - cmdobj->sctx = NULL; - _exit_critical_mutex(&pcmdpriv->sctx_mutex, NULL); - if (sctx.status != RTW_SCTX_DONE_SUCCESS) - res = _FAIL; - } - - /* allow set channel plan when cmd_thread is not running */ - if (res != _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) { - parm = (struct SetChannelPlan_param *)rtw_zmalloc(sizeof(*parm)); - if (parm == NULL) { - res = _FAIL; - goto exit; - } - parm->regd_src = regd_src; - parm->inr = inr; - if (country_ent) { - _rtw_memcpy(&parm->country_ent, country_ent, sizeof(parm->country_ent)); - parm->has_country = 1; - } - parm->channel_plan = chplan; - #if CONFIG_IEEE80211_BAND_6GHZ - parm->channel_plan_6g = chplan_6g; - #endif - #ifdef CONFIG_80211D - if (cisr) { - _rtw_memcpy(&parm->cisr, cisr, sizeof(*cisr)); - parm->has_cisr = 1; - } - #endif - #ifdef PLATFORM_LINUX - parm->rtnl_lock_needed = rtnl_lock_needed; /* synchronous call, follow caller's */ - #endif - - if (H2C_SUCCESS != rtw_set_chplan_hdl(adapter, (u8 *)parm)) - res = _FAIL; - else - res = _SUCCESS; - rtw_mfree((u8 *)parm, sizeof(*parm)); - } - } - -exit: - return res; -} - -inline u8 rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, u8 chplan_6g, enum rtw_regd_inr inr) -{ - return _rtw_set_chplan_cmd(adapter, flags, chplan, chplan_6g, NULL, REGD_SRC_RTK_PRIV, inr, NULL); -} - -inline u8 rtw_set_country_cmd(_adapter *adapter, int flags, const char *country_code, enum rtw_regd_inr inr) -{ - struct country_chplan ent; - - if (IS_ALPHA2_WORLDWIDE(country_code)) { - rtw_get_chplan_worldwide(&ent); - goto cmd; - } - - if (is_alpha(country_code[0]) == _FALSE - || is_alpha(country_code[1]) == _FALSE - ) { - RTW_PRINT("%s input country_code is not alpha2\n", __func__); - return _FAIL; - } - - if (!rtw_get_chplan_from_country(country_code, &ent)) { - RTW_PRINT("%s unsupported country_code:\"%c%c\"\n", __func__, country_code[0], country_code[1]); - return _FAIL; - } - -cmd: - RTW_PRINT("%s country_code:\"%c%c\"\n", __func__, country_code[0], country_code[1]); - - return _rtw_set_chplan_cmd(adapter, flags, RTW_CHPLAN_UNSPECIFIED, RTW_CHPLAN_6G_UNSPECIFIED, &ent, REGD_SRC_RTK_PRIV, inr, NULL); -} - -#ifdef CONFIG_REGD_SRC_FROM_OS -inline u8 rtw_sync_os_regd_cmd(_adapter *adapter, int flags, const char *country_code, u8 dfs_region, enum rtw_regd_inr inr) -{ - struct country_chplan ent; - struct country_chplan rtk_ent; - bool rtk_ent_exist; - - rtk_ent_exist = rtw_get_chplan_from_country(country_code, &rtk_ent); - - _rtw_memcpy(ent.alpha2, country_code, 2); - - /* - * Regulation follows OS, the internal txpwr limit selection is searched by alpha2 - * "00" => WW, others use string mapping - * When no matching txpwr limit selection is found, use - * 1. txpwr lmit selection associated with alpha2 inside driver regulation database - * 2. WW when driver has no support of this alpha2 - */ - - ent.chplan = rtk_ent_exist ? rtk_ent.chplan : RTW_CHPLAN_UNSPECIFIED; - #if CONFIG_IEEE80211_BAND_6GHZ - ent.chplan_6g = rtk_ent_exist ? rtk_ent.chplan_6g : RTW_CHPLAN_6G_UNSPECIFIED; - #endif - ent.edcca_mode_2g_override = rtk_ent_exist ? rtk_ent.edcca_mode_2g_override : RTW_EDCCA_DEF; - #if CONFIG_IEEE80211_BAND_5GHZ - ent.edcca_mode_5g_override = rtk_ent_exist ? rtk_ent.edcca_mode_5g_override : RTW_EDCCA_DEF; - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - ent.edcca_mode_6g_override = rtk_ent_exist ? rtk_ent.edcca_mode_6g_override : RTW_EDCCA_DEF; - #endif - ent.txpwr_lmt_override = rtk_ent_exist ? rtk_ent.txpwr_lmt_override : TXPWR_LMT_DEF; - #if defined(CONFIG_80211AC_VHT) || defined(CONFIG_80211AX_HE) - ent.proto_en = CHPLAN_PROTO_EN_ALL; - #endif - - /* TODO: dfs_region */ - - return _rtw_set_chplan_cmd(adapter, flags, RTW_CHPLAN_UNSPECIFIED, RTW_CHPLAN_6G_UNSPECIFIED, &ent, REGD_SRC_OS, inr, NULL); -} -#endif /* CONFIG_REGD_SRC_FROM_OS */ - -u8 rtw_get_chplan_cmd(_adapter *adapter, int flags, struct get_chplan_resp **chplan) -{ - struct cmd_obj *cmdobj; - struct get_channel_plan_param *parm; - struct cmd_priv *pcmdpriv = &adapter->cmdpriv; - struct submit_ctx sctx; - u8 res = _FAIL; - - if (!(flags & (RTW_CMDF_DIRECTLY | RTW_CMDF_WAIT_ACK))) - goto exit; - - /* prepare cmd parameter */ - parm = rtw_zmalloc(sizeof(*parm)); - if (parm == NULL) - goto exit; - parm->chplan = chplan; - - if (flags & RTW_CMDF_DIRECTLY) { - /* no need to enqueue, do the cmd hdl directly and free cmd parameter */ - if (H2C_SUCCESS == rtw_get_chplan_hdl(adapter, (u8 *)parm)) - res = _SUCCESS; - rtw_mfree((u8 *)parm, sizeof(*parm)); - } else { - /* need enqueue, prepare cmd_obj and enqueue */ - cmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(*cmdobj)); - if (cmdobj == NULL) { - rtw_mfree((u8 *)parm, sizeof(*parm)); - goto exit; - } - - init_h2fwcmd_w_parm_no_rsp(cmdobj, parm, CMD_GET_CHANPLAN); - - if (flags & RTW_CMDF_WAIT_ACK) { - cmdobj->sctx = &sctx; - rtw_sctx_init(&sctx, 2000); - } - - res = rtw_enqueue_cmd(pcmdpriv, cmdobj); - - if (res == _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) { - rtw_sctx_wait(&sctx, __func__); - _enter_critical_mutex(&pcmdpriv->sctx_mutex, NULL); - if (sctx.status == RTW_SCTX_SUBMITTED) - cmdobj->sctx = NULL; - _exit_critical_mutex(&pcmdpriv->sctx_mutex, NULL); - if (sctx.status != RTW_SCTX_DONE_SUCCESS) - res = _FAIL; - } - - /* allow get channel plan when cmd_thread is not running */ - if (res != _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) { - parm = rtw_zmalloc(sizeof(*parm)); - if (parm == NULL) - goto exit; - parm->chplan = chplan; - - if (H2C_SUCCESS == rtw_get_chplan_hdl(adapter, (u8 *)parm)) - res = _SUCCESS; - - rtw_mfree((u8 *)parm, sizeof(*parm)); - } - } - -exit: - return res; -} - -#ifdef CONFIG_80211D -inline u8 rtw_apply_recv_country_ie_cmd(_adapter *adapter, int flags, BAND_TYPE band,u8 opch, const u8 *country_ie) -{ - struct country_chplan ent; - struct country_ie_slave_record cisr; - - rtw_get_chplan_from_recv_country_ie(adapter, band, opch, country_ie, &ent, &cisr, NULL); - - return _rtw_set_chplan_cmd(adapter, flags, RTW_CHPLAN_UNSPECIFIED, RTW_CHPLAN_6G_UNSPECIFIED - , NULL, REGD_SRC_RTK_PRIV, RTW_REGD_SET_BY_COUNTRY_IE, &cisr); -} -#endif /* CONFIG_80211D */ - +#ifdef CONFIG_RTW_LED_HANDLED_BY_CMD_THREAD u8 rtw_led_blink_cmd(_adapter *padapter, void *pLed) { - struct cmd_obj *pcmdobj; - struct LedBlink_param *ledBlink_param; - struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + struct cmd_obj *pcmdobj; + struct LedBlink_param *ledBlink_param; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + u8 res = _SUCCESS; - u8 res = _SUCCESS; - - - - pcmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); + pcmdobj = rtw_zmalloc(sizeof(struct cmd_obj)); if (pcmdobj == NULL) { res = _FAIL; goto exit; } - ledBlink_param = (struct LedBlink_param *)rtw_zmalloc(sizeof(struct LedBlink_param)); + ledBlink_param = rtw_zmalloc(sizeof(struct LedBlink_param)); if (ledBlink_param == NULL) { rtw_mfree((u8 *)pcmdobj, sizeof(struct cmd_obj)); res = _FAIL; @@ -2208,10 +1705,9 @@ u8 rtw_led_blink_cmd(_adapter *padapter, void *pLed) res = rtw_enqueue_cmd(pcmdpriv, pcmdobj); exit: - - return res; } +#endif /* CONFIG_RTW_LED_HANDLED_BY_CMD_THREAD */ u8 rtw_set_csa_cmd(_adapter *adapter) { @@ -2255,6 +1751,57 @@ exit: return res; } +/* control = 0 means stop beacon, control = 1 means resume beacon */ +u8 bcn_control_cmd(_adapter *adapter, u8 control) +{ + u8 res = _SUCCESS; +#ifdef CONFIG_AP_MODE + struct cmd_obj *cmdobj; + struct cmd_priv *cmdpriv = &adapter->cmdpriv; + struct bcn_control_param *param; + + RTW_INFO(FUNC_ADPT_FMT" : %s beacon\n", + FUNC_ADPT_ARG(adapter), control ? "resume" : "stop"); + + cmdobj = rtw_zmalloc(sizeof(struct cmd_obj)); + if (cmdobj == NULL) { + res = _FAIL; + goto exit; + } + + param = rtw_zmalloc(sizeof(struct bcn_control_param)); + if (param == NULL) { + rtw_mfree((u8 *)cmdobj, sizeof(struct cmd_obj)); + res = _FAIL; + goto exit; + } + + param->control = control; + init_h2fwcmd_w_parm_no_rsp(cmdobj, param, CMD_BCN_CONTROL); + res = rtw_enqueue_cmd(cmdpriv, cmdobj); +exit: +#endif + return res; +} + +u8 rtw_csa_sta_update_cap_cmd(_adapter *adapter) +{ + u8 res = _SUCCESS; + struct cmd_obj *cmdobj; + struct cmd_priv *cmdpriv = &adapter->cmdpriv; + + cmdobj = rtw_zmalloc(sizeof(struct cmd_obj)); + if (cmdobj == NULL) { + res = _FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_parm_rsp(cmdobj, CMD_STA_CSA_UPDATE_CAP); + res = rtw_enqueue_cmd(cmdpriv, cmdobj); +exit: + return res; +} + u8 rtw_tdls_cmd(_adapter *padapter, u8 *addr, u8 option) { u8 res = _SUCCESS; @@ -3170,10 +2717,6 @@ void rtw_dynamic_chk_wk_hdl(_adapter *padapter) rtw_ch_util_rpt(padapter); #endif -#ifdef CONFIG_DFS_MASTER - rtw_chset_chk_non_ocp_finish(adapter_to_rfctl(padapter)); -#endif - #ifdef CONFIG_IPS_CHECK_IN_WD /* always call rtw_ps_processor() at last one. */ rtw_ps_processor(padapter); @@ -3186,6 +2729,46 @@ void rtw_dynamic_chk_wk_hdl(_adapter *padapter) rtw_hal_periodic_tsf_update_chk(padapter); } +static void rtw_dynamic_chk_idle_wk_hdl(struct dvobj_priv *dvobj) +{ + /* SW only dynamic/periodic check even when device is idle */ + rtw_regd_watchdog_hdl(dvobj); +} + +u8 rtw_dynamic_chk_idle_wk_cmd(struct dvobj_priv *dvobj, bool direct) +{ + u8 res = _FAIL; + + if (direct) { + rtw_dynamic_chk_idle_wk_hdl(dvobj); + res = _SUCCESS; + } else { + struct cmd_obj *cmdobj; + struct drvextra_cmd_parm *parm; + _adapter *adapter = dvobj_get_primary_adapter(dvobj); + struct cmd_priv *cmdpriv = &adapter->cmdpriv; + + cmdobj = rtw_zmalloc(sizeof(struct cmd_obj)); + if (cmdobj == NULL) + goto exit; + + parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if (parm == NULL) { + rtw_mfree(cmdobj, sizeof(struct cmd_obj)); + goto exit; + } + + parm->ec_id = DYNAMIC_CHK_IDLE_WK_CID; + + init_h2fwcmd_w_parm_no_rsp(cmdobj, parm, CMD_SET_DRV_EXTRA); + cmdobj->no_io = true; + res = rtw_enqueue_cmd(cmdpriv, cmdobj); + } + +exit: + return res; +} + #ifdef CONFIG_LPS struct lps_ctrl_wk_parm { s8 lps_level; @@ -3599,7 +3182,7 @@ void rtw_dm_ra_mask_hdl(_adapter *padapter, struct sta_info *psta) set_sta_rate(padapter, psta); } -u8 rtw_dm_ra_mask_wk_cmd(_adapter *padapter, u8 *psta) +u8 rtw_dm_ra_mask_wk_cmd(_adapter *padapter, struct sta_info *psta) { struct cmd_obj *ph2c; struct drvextra_cmd_parm *pdrvextra_cmd_parm; @@ -3623,7 +3206,7 @@ u8 rtw_dm_ra_mask_wk_cmd(_adapter *padapter, u8 *psta) pdrvextra_cmd_parm->ec_id = DM_RA_MSK_WK_CID; pdrvextra_cmd_parm->type = 0; pdrvextra_cmd_parm->size = 0; - pdrvextra_cmd_parm->pbuf = psta; + pdrvextra_cmd_parm->pbuf = (void *)psta; init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, CMD_SET_DRV_EXTRA); @@ -3635,9 +3218,38 @@ exit: } -void power_saving_wk_hdl(_adapter *padapter) +struct ips_ctrl_wk_parm { + s8 ips_mode; +}; + +void power_saving_wk_hdl(_adapter *padapter, u8 ips_ctrl_type, u8 *buf) { - rtw_ps_processor(padapter); + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + struct ips_ctrl_wk_parm *parm = (struct ips_ctrl_wk_parm *)buf; + + switch (ips_ctrl_type) { + case IPS_CTRL_ENTER: + rtw_ps_processor(padapter); + break; + case IPS_CTRL_LEAVE_SET_MODE: + if (rtw_pwr_wakeup(padapter) == _SUCCESS) { + if (parm) { + if (parm->ips_mode >= 0) + rtw_ips_mode_req(pwrpriv, parm->ips_mode); + } + } + break; + case IPS_CTRL_LEAVE_SRESET: + if (rtw_pwr_wakeup(padapter) == _SUCCESS) + RTW_INFO(FUNC_ADPT_FMT" Successfully leave IPS due to sreset.\n" + , FUNC_ADPT_ARG(padapter)); + else + RTW_INFO(FUNC_ADPT_FMT" Fail to leave IPS due to sreset.\n" + , FUNC_ADPT_ARG(padapter)); + break; + default: + break; + } } /* add for CONFIG_IEEE80211W, none 11w can use it */ @@ -3815,12 +3427,13 @@ exit: } #endif -u8 rtw_ps_cmd(_adapter *padapter) +u8 rtw_ips_ctrl_wk_cmd(_adapter *padapter, u8 ips_ctrl_type, u8 ips_mode, u8 flags) { struct cmd_obj *ppscmd; struct drvextra_cmd_parm *pdrvextra_cmd_parm; struct cmd_priv *pcmdpriv = &padapter->cmdpriv; - + struct ips_ctrl_wk_parm *wk_parm = NULL; + struct submit_ctx sctx; u8 res = _SUCCESS; #ifdef CONFIG_CONCURRENT_MODE @@ -3828,30 +3441,65 @@ u8 rtw_ps_cmd(_adapter *padapter) goto exit; #endif - ppscmd = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); - if (ppscmd == NULL) { - res = _FAIL; - goto exit; + if (ips_ctrl_type == IPS_CTRL_LEAVE_SET_MODE) { + wk_parm = rtw_zmalloc(sizeof(*wk_parm)); + if (wk_parm == NULL) { + res = _FAIL; + goto exit; + } + wk_parm->ips_mode = ips_mode; } - pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); - if (pdrvextra_cmd_parm == NULL) { - rtw_mfree((unsigned char *)ppscmd, sizeof(struct cmd_obj)); - res = _FAIL; - goto exit; + if (flags & RTW_CMDF_DIRECTLY) { + /* no need to enqueue, do the cmd hdl directly */ + power_saving_wk_hdl(padapter, ips_ctrl_type, (u8 *)wk_parm); + if (wk_parm) + rtw_mfree(wk_parm, sizeof(*wk_parm)); + } else { + /* need enqueue, prepare cmd_obj and enqueue */ + ppscmd = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); + if (ppscmd == NULL) { + if (wk_parm) + rtw_mfree(wk_parm, sizeof(*wk_parm)); + res = _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if (pdrvextra_cmd_parm == NULL) { + rtw_mfree((unsigned char *)ppscmd, sizeof(struct cmd_obj)); + if (wk_parm) + rtw_mfree(wk_parm, sizeof(*wk_parm)); + res = _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = POWER_SAVING_CTRL_WK_CID; + pdrvextra_cmd_parm->type = ips_ctrl_type; + pdrvextra_cmd_parm->size = wk_parm ? sizeof(*wk_parm) : 0; + pdrvextra_cmd_parm->pbuf = (u8 *)wk_parm; + + init_h2fwcmd_w_parm_no_rsp(ppscmd, pdrvextra_cmd_parm, CMD_SET_DRV_EXTRA); + + if (flags & RTW_CMDF_WAIT_ACK) { + ppscmd->sctx = &sctx; + rtw_sctx_init(&sctx, 2000); + } + + res = rtw_enqueue_cmd(pcmdpriv, ppscmd); + + if (res == _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) { + rtw_sctx_wait(&sctx, __func__); + _enter_critical_mutex(&pcmdpriv->sctx_mutex, NULL); + if (sctx.status == RTW_SCTX_SUBMITTED) + ppscmd->sctx = NULL; + _exit_critical_mutex(&pcmdpriv->sctx_mutex, NULL); + if (sctx.status != RTW_SCTX_DONE_SUCCESS) + res = _FAIL; + } } - pdrvextra_cmd_parm->ec_id = POWER_SAVING_CTRL_WK_CID; - pdrvextra_cmd_parm->type = 0; - pdrvextra_cmd_parm->size = 0; - pdrvextra_cmd_parm->pbuf = NULL; - init_h2fwcmd_w_parm_no_rsp(ppscmd, pdrvextra_cmd_parm, CMD_SET_DRV_EXTRA); - - res = rtw_enqueue_cmd(pcmdpriv, ppscmd); - exit: - - return res; } @@ -3860,23 +3508,27 @@ exit: void rtw_dfs_ch_switch_hdl(struct dvobj_priv *dvobj) { struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + struct rtw_chset *chset = &rfctl->chset; _adapter *pri_adapter = dvobj_get_primary_adapter(dvobj); struct mlme_ext_priv *pmlmeext = &pri_adapter->mlmeextpriv; u8 ifbmp_m = rtw_mi_get_ap_mesh_ifbmp(pri_adapter); u8 ifbmp_s = rtw_mi_get_ld_sta_ifbmp(pri_adapter); + enum band_type req_band; s16 req_ch; - u8 req_bw = CHANNEL_WIDTH_20, req_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE, csa_timer = _FALSE; + u8 req_bw = CHANNEL_WIDTH_20, req_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + u8 csa_ch_valid = _FALSE; u8 need_discon = _FALSE; + u32 csa_wait_bcn_ms; rtw_hal_macid_sleep_all_used(pri_adapter); - if (rtw_chset_search_ch(rfctl->channel_set, rfctl->csa_ch) >= 0 - && !rtw_chset_is_ch_non_ocp(rfctl->channel_set, rfctl->csa_ch) + if (rtw_chset_search_ch(chset, rfctl->csa_ch) >= 0 + && !rtw_chset_is_ch_non_ocp(chset, rfctl->csa_ch) ) { /* CSA channel available and valid */ req_ch = rfctl->csa_ch; RTW_INFO("%s valid CSA ch%u\n", __func__, rfctl->csa_ch); - csa_timer = _TRUE; + csa_ch_valid = _TRUE; } else if (ifbmp_m) { /* no available or valid CSA channel, having AP/MESH ifaces */ req_ch = REQ_CH_NONE; @@ -3916,6 +3568,7 @@ void rtw_dfs_ch_switch_hdl(struct dvobj_priv *dvobj) req_bw = CHANNEL_WIDTH_20; req_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; } + req_band = req_ch > 14 ? BAND_ON_5G : BAND_ON_24G; } RTW_INFO("req_ch=%d, req_bw=%d, req_offset=%d, ifbmp_m=0x%02x, ifbmp_s=0x%02x\n" @@ -3945,22 +3598,19 @@ void rtw_dfs_ch_switch_hdl(struct dvobj_priv *dvobj) set_fwstate(&iface->mlmepriv, WIFI_CSA_UPDATE_BEACON); #ifdef CONFIG_80211D - if (iface->mlmepriv.recv_country_ie) { - if (rtw_apply_recv_country_ie_cmd(iface, RTW_CMDF_DIRECTLY - , req_ch > 14 ? BAND_ON_5G : BAND_ON_2_4G, req_ch - , iface->mlmepriv.recv_country_ie) != _SUCCESS - ) - RTW_WARN(FUNC_ADPT_FMT" rtw_apply_recv_country_ie_cmd() fail\n", FUNC_ADPT_ARG(iface)); - } + rtw_csa_update_regulatory(iface, req_band, req_ch); #endif } } } - if (csa_timer) { - RTW_INFO("pmlmeext->csa_timer 70 seconds\n"); - /* wait 70 seconds for receiving beacons */ - _set_timer(&pmlmeext->csa_timer, CAC_TIME_MS + 10000); + if (csa_ch_valid) { + if (rtw_chset_is_dfs_chbw(chset, req_ch, req_bw, req_offset)) + csa_wait_bcn_ms = CAC_TIME_MS + 10000; + else + csa_wait_bcn_ms = 10000; + RTW_INFO("CSA : set csa_wait_bcn_timer to %u ms\n", csa_wait_bcn_ms); + _set_timer(&pmlmeext->csa_timer, csa_wait_bcn_ms); } #ifdef CONFIG_AP_MODE @@ -3977,17 +3627,17 @@ void rtw_dfs_ch_switch_hdl(struct dvobj_priv *dvobj) { /* no AP/MESH iface, switch DFS status and channel directly */ rtw_warn_on(req_ch <= 0); - #ifdef CONFIG_DFS_MASTER + #if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ if (need_discon) - rtw_dfs_rd_en_decision(pri_adapter, MLME_OPCH_SWITCH, ifbmp_s); + rtw_dfs_rd_en_dec_on_mlme_act(pri_adapter, NULL, MLME_OPCH_SWITCH, ifbmp_s); else - rtw_dfs_rd_en_decision(pri_adapter, MLME_OPCH_SWITCH, 0); + rtw_dfs_rd_en_dec_on_mlme_act(pri_adapter, NULL, MLME_OPCH_SWITCH, 0); #endif LeaveAllPowerSaveModeDirect(pri_adapter); set_channel_bwmode(pri_adapter, req_ch, req_offset, req_bw); /* update union ch/bw/offset for STA only */ rtw_mi_update_union_chan_inf(pri_adapter, req_ch, req_offset, req_bw); - rtw_rfctl_update_op_mode(rfctl, 0, 0); + rtw_rfctl_update_op_mode(rfctl, 0, 0, 0); } /* make asoc STA ifaces disconnect */ @@ -4091,375 +3741,6 @@ exit: return res; } - -#ifdef CONFIG_DFS_MASTER -u8 rtw_dfs_rd_hdl(_adapter *adapter) -{ - struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - u8 cch; - - if (!rfctl->radar_detect_enabled) - goto exit; - - cch = rtw_get_center_ch(rfctl->radar_detect_ch, rfctl->radar_detect_bw, rfctl->radar_detect_offset); - - if (dvobj->oper_channel != rfctl->radar_detect_ch - || rtw_get_passing_time_ms(rtw_get_on_oper_ch_time(adapter)) < 300 - ) { - /* offchannel, bypass radar detect */ - goto cac_status_chk; - } - - if (IS_CH_WAITING(rfctl) && !IS_UNDER_CAC(rfctl)) { - /* non_ocp, bypass radar detect */ - goto cac_status_chk; - } - - if (!rfctl->dbg_dfs_fake_radar_detect_cnt - && rtw_odm_radar_detect(adapter) != _TRUE) - goto cac_status_chk; - - if (!rfctl->dbg_dfs_fake_radar_detect_cnt - && rfctl->dbg_dfs_radar_detect_trigger_non - ) { - /* radar detect debug mode, trigger no mlme flow */ - RTW_INFO("%s radar detected on test mode, trigger no mlme flow\n", __func__); - goto cac_status_chk; - } - - if (rfctl->dbg_dfs_fake_radar_detect_cnt != 0) { - RTW_INFO("%s fake radar detected, cnt:%d\n", __func__ - , rfctl->dbg_dfs_fake_radar_detect_cnt); - rfctl->dbg_dfs_fake_radar_detect_cnt--; - } else - RTW_INFO("%s radar detected\n", __func__); - - rfctl->radar_detected = 1; - - rtw_chset_update_non_ocp(rfctl->channel_set - , rfctl->radar_detect_ch, rfctl->radar_detect_bw, rfctl->radar_detect_offset); - - if (IS_UNDER_CAC(rfctl)) - rtw_nlrtw_cac_abort_event(adapter, cch, rfctl->radar_detect_bw); - rtw_nlrtw_radar_detect_event(adapter, cch, rfctl->radar_detect_bw); - - rtw_dfs_ch_switch_hdl(dvobj); - - if (rfctl->radar_detect_enabled) - goto set_timer; - goto exit; - -cac_status_chk: - - if (!IS_CAC_STOPPED(rfctl) - && ((IS_UNDER_CAC(rfctl) && rfctl->cac_force_stop) - || !IS_CH_WAITING(rfctl) - ) - ) { - u8 pause = 0x00; - - rtw_hal_set_hwreg(adapter, HW_VAR_TXPAUSE, &pause); - rfctl->cac_start_time = rfctl->cac_end_time = RTW_CAC_STOPPED; - rtw_nlrtw_cac_finish_event(adapter, cch, rfctl->radar_detect_bw); - - if (rtw_mi_check_fwstate(adapter, WIFI_UNDER_LINKING|WIFI_UNDER_SURVEY) == _FALSE) { - u8 doiqk = _TRUE; - u8 u_ch, u_bw, u_offset; - - rtw_hal_set_hwreg(adapter , HW_VAR_DO_IQK , &doiqk); - - if (rtw_mi_get_ch_setting_union(adapter, &u_ch, &u_bw, &u_offset)) - set_channel_bwmode(adapter, u_ch, u_offset, u_bw); - else - rtw_warn_on(1); - - doiqk = _FALSE; - rtw_hal_set_hwreg(adapter , HW_VAR_DO_IQK , &doiqk); - - #ifdef CONFIG_AP_MODE - ResumeTxBeacon(adapter); - rtw_mi_tx_beacon_hdl(adapter); - #endif - } - } - -set_timer: - _set_timer(&rfctl->radar_detect_timer - , rtw_odm_radar_detect_polling_int_ms(dvobj)); - -exit: - return H2C_SUCCESS; -} - -u8 rtw_dfs_rd_cmd(_adapter *adapter, bool enqueue) -{ - struct cmd_obj *cmdobj; - struct drvextra_cmd_parm *parm; - struct cmd_priv *cmdpriv = &adapter->cmdpriv; - u8 res = _FAIL; - - if (enqueue) { - cmdobj = rtw_zmalloc(sizeof(struct cmd_obj)); - if (cmdobj == NULL) - goto exit; - - parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); - if (parm == NULL) { - rtw_mfree(cmdobj, sizeof(struct cmd_obj)); - goto exit; - } - - parm->ec_id = DFS_RADAR_DETECT_WK_CID; - parm->type = 0; - parm->size = 0; - parm->pbuf = NULL; - - init_h2fwcmd_w_parm_no_rsp(cmdobj, parm, CMD_SET_DRV_EXTRA); - res = rtw_enqueue_cmd(cmdpriv, cmdobj); - } else { - rtw_dfs_rd_hdl(adapter); - res = _SUCCESS; - } - -exit: - return res; -} - -void rtw_dfs_rd_timer_hdl(void *ctx) -{ - struct rf_ctl_t *rfctl = (struct rf_ctl_t *)ctx; - struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); - - rtw_dfs_rd_cmd(dvobj_get_primary_adapter(dvobj), _TRUE); -} - -static void rtw_dfs_rd_enable(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, bool bypass_cac) -{ - struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); - _adapter *adapter = dvobj_get_primary_adapter(dvobj); - - RTW_INFO("%s on %u,%u,%u\n", __func__, ch, bw, offset); - - if (bypass_cac) - rfctl->cac_start_time = rfctl->cac_end_time = RTW_CAC_STOPPED; - else if (rtw_is_cac_reset_needed(rfctl, ch, bw, offset) == _TRUE) - rtw_reset_cac(rfctl, ch, bw, offset); - - rfctl->radar_detect_by_others = _FALSE; - rfctl->radar_detect_ch = ch; - rfctl->radar_detect_bw = bw; - rfctl->radar_detect_offset = offset; - - rfctl->radar_detected = 0; - - if (IS_CH_WAITING(rfctl)) - StopTxBeacon(adapter); - - if (!rfctl->radar_detect_enabled) { - RTW_INFO("%s set radar_detect_enabled\n", __func__); - rfctl->radar_detect_enabled = 1; - #ifdef CONFIG_LPS - LPS_Leave(adapter, "RADAR_DETECT_EN"); - #endif - _set_timer(&rfctl->radar_detect_timer - , rtw_odm_radar_detect_polling_int_ms(dvobj)); - - if (rtw_rfctl_overlap_radar_detect_ch(rfctl)) { - if (IS_CH_WAITING(rfctl)) { - u8 pause = 0xFF; - - rtw_hal_set_hwreg(adapter, HW_VAR_TXPAUSE, &pause); - } - rtw_odm_radar_detect_enable(adapter); - } - } -} - -static void rtw_dfs_rd_disable(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, bool by_others) -{ - _adapter *adapter = dvobj_get_primary_adapter(rfctl_to_dvobj(rfctl)); - - rfctl->radar_detect_by_others = by_others; - - if (rfctl->radar_detect_enabled) { - bool overlap_radar_detect_ch = rtw_rfctl_overlap_radar_detect_ch(rfctl); - - RTW_INFO("%s clear radar_detect_enabled\n", __func__); - - rfctl->radar_detect_enabled = 0; - rfctl->radar_detected = 0; - rfctl->radar_detect_ch = 0; - rfctl->radar_detect_bw = 0; - rfctl->radar_detect_offset = 0; - rfctl->cac_start_time = rfctl->cac_end_time = RTW_CAC_STOPPED; - _cancel_timer_ex(&rfctl->radar_detect_timer); - - if (rtw_mi_check_fwstate(adapter, WIFI_UNDER_LINKING|WIFI_UNDER_SURVEY) == _FALSE) { - ResumeTxBeacon(adapter); - rtw_mi_tx_beacon_hdl(adapter); - } - - if (overlap_radar_detect_ch) { - u8 pause = 0x00; - - rtw_hal_set_hwreg(adapter, HW_VAR_TXPAUSE, &pause); - rtw_odm_radar_detect_disable(adapter); - } - } - - if (by_others) { - rfctl->radar_detect_ch = ch; - rfctl->radar_detect_bw = bw; - rfctl->radar_detect_offset = offset; - } else { - rfctl->radar_detect_ch = 0; - rfctl->radar_detect_bw = 0; - rfctl->radar_detect_offset = 0; - } -} - -void rtw_dfs_rd_en_decision(_adapter *adapter, u8 mlme_act, u8 excl_ifbmp) -{ - struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - struct mlme_ext_priv *mlmeext = &adapter->mlmeextpriv; - struct mi_state mstate; - u8 ifbmp; - u8 u_ch, u_bw, u_offset; - bool ld_sta_in_dfs = _FALSE; - bool sync_ch = _FALSE; /* _FALSE: asign channel directly */ - bool needed = _FALSE; - - if (mlme_act == MLME_OPCH_SWITCH - || mlme_act == MLME_ACTION_NONE - ) { - ifbmp = ~excl_ifbmp; - rtw_mi_status_by_ifbmp(dvobj, ifbmp, &mstate); - rtw_mi_get_ch_setting_union_by_ifbmp(dvobj, ifbmp, &u_ch, &u_bw, &u_offset); - } else { - ifbmp = ~excl_ifbmp & ~BIT(adapter->iface_id); - rtw_mi_status_by_ifbmp(dvobj, ifbmp, &mstate); - rtw_mi_get_ch_setting_union_by_ifbmp(dvobj, ifbmp, &u_ch, &u_bw, &u_offset); - if (u_ch != 0 && !MLME_IS_OPCH_SW(adapter) - && CHK_MLME_STATE(adapter, WIFI_UNDER_LINKING | WIFI_ASOC_STATE)) - sync_ch = _TRUE; - - switch (mlme_act) { - case MLME_STA_CONNECTING: - MSTATE_STA_LG_NUM(&mstate)++; - break; - case MLME_STA_CONNECTED: - MSTATE_STA_LD_NUM(&mstate)++; - break; - case MLME_STA_DISCONNECTED: - break; -#ifdef CONFIG_AP_MODE - case MLME_AP_STARTED: - MSTATE_AP_NUM(&mstate)++; - break; - case MLME_AP_STOPPED: - break; -#endif -#ifdef CONFIG_RTW_MESH - case MLME_MESH_STARTED: - MSTATE_MESH_NUM(&mstate)++; - break; - case MLME_MESH_STOPPED: - break; -#endif - default: - rtw_warn_on(1); - break; - } - - if (sync_ch == _TRUE) { - if (!rtw_is_chbw_grouped(mlmeext->cur_channel, mlmeext->cur_bwmode, mlmeext->cur_ch_offset, u_ch, u_bw, u_offset)) { - RTW_WARN(FUNC_ADPT_FMT" can't sync %u,%u,%u with %u,%u,%u\n", FUNC_ADPT_ARG(adapter) - , mlmeext->cur_channel, mlmeext->cur_bwmode, mlmeext->cur_ch_offset, u_ch, u_bw, u_offset); - goto apply; - } - - rtw_sync_chbw(&mlmeext->cur_channel, &mlmeext->cur_bwmode, &mlmeext->cur_ch_offset - , &u_ch, &u_bw, &u_offset); - } else { - u_ch = mlmeext->cur_channel; - u_bw = mlmeext->cur_bwmode; - u_offset = mlmeext->cur_ch_offset; - } - } - - if (MSTATE_STA_LG_NUM(&mstate) > 0) { - /* STA mode is linking */ - goto apply; - } - - if (MSTATE_STA_LD_NUM(&mstate) > 0) { - if (rtw_chset_is_dfs_chbw(rfctl->channel_set, u_ch, u_bw, u_offset)) { - /* - * if operate as slave w/o radar detect, - * rely on AP on which STA mode connects - */ - if (IS_DFS_SLAVE_WITH_RD(rfctl) && !rtw_rfctl_dfs_domain_unknown(rfctl)) - needed = _TRUE; - ld_sta_in_dfs = _TRUE; - } - goto apply; - } - - if (!MSTATE_AP_NUM(&mstate) && !MSTATE_MESH_NUM(&mstate)) { - /* No working AP/Mesh mode */ - goto apply; - } - - if (rtw_chset_is_dfs_chbw(rfctl->channel_set, u_ch, u_bw, u_offset)) - needed = _TRUE; - -apply: - - RTW_INFO(FUNC_ADPT_FMT" needed:%d, mlme_act:%u, excl_ifbmp:0x%02x\n" - , FUNC_ADPT_ARG(adapter), needed, mlme_act, excl_ifbmp); - RTW_INFO(FUNC_ADPT_FMT" ld_sta_num:%u, lg_sta_num:%u, ap_num:%u, mesh_num:%u, %u,%u,%u\n" - , FUNC_ADPT_ARG(adapter), MSTATE_STA_LD_NUM(&mstate), MSTATE_STA_LG_NUM(&mstate) - , MSTATE_AP_NUM(&mstate), MSTATE_MESH_NUM(&mstate) - , u_ch, u_bw, u_offset); - - if (needed == _TRUE) - rtw_dfs_rd_enable(rfctl, u_ch, u_bw, u_offset, ld_sta_in_dfs); - else - rtw_dfs_rd_disable(rfctl, u_ch, u_bw, u_offset, ld_sta_in_dfs); -} - -u8 rtw_dfs_rd_en_decision_cmd(_adapter *adapter) -{ - struct cmd_obj *cmdobj; - struct drvextra_cmd_parm *parm; - struct cmd_priv *cmdpriv = &adapter->cmdpriv; - u8 res = _FAIL; - - cmdobj = rtw_zmalloc(sizeof(struct cmd_obj)); - if (cmdobj == NULL) - goto exit; - - parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); - if (parm == NULL) { - rtw_mfree(cmdobj, sizeof(struct cmd_obj)); - goto exit; - } - - parm->ec_id = DFS_RADAR_DETECT_EN_DEC_WK_CID; - parm->type = 0; - parm->size = 0; - parm->pbuf = NULL; - - init_h2fwcmd_w_parm_no_rsp(cmdobj, parm, CMD_SET_DRV_EXTRA); - res = rtw_enqueue_cmd(cmdpriv, cmdobj); - -exit: - return res; -} -#endif /* CONFIG_DFS_MASTER */ - #endif /* CONFIG_AP_MODE */ #ifdef CONFIG_BT_COEXIST @@ -4719,7 +4000,8 @@ static s32 rtw_mp_cmd_hdl(_adapter *padapter, u8 mp_cmd_id) #endif #ifdef CONFIG_RF_POWER_TRIM if (!IS_HARDWARE_TYPE_8814A(padapter) && !IS_HARDWARE_TYPE_8822B(padapter) - && !IS_HARDWARE_TYPE_8822C(padapter) && !IS_HARDWARE_TYPE_8723F(padapter)) { + && !IS_HARDWARE_TYPE_8822C(padapter) && !IS_HARDWARE_TYPE_8723F(padapter) + && !IS_HARDWARE_TYPE_8822E(padapter)) { padapter->registrypriv.RegPwrTrimEnable = 1; rtw_hal_read_chip_info(padapter); } @@ -4783,6 +4065,8 @@ static s32 rtw_mp_cmd_hdl(_adapter *padapter, u8 mp_cmd_id) } else if (mp_cmd_id == MP_STOP) { if (padapter->registrypriv.mp_mode == 1) { MPT_DeInitAdapter(padapter); + mp_stop_test(padapter); + rtw_hal_set_hwreg(padapter, HW_VAR_FIFO_CLEARN_UP, 0); rtw_intf_stop(padapter); rtw_hal_deinit(padapter); padapter->registrypriv.mp_mode = 0; @@ -4790,6 +4074,7 @@ static s32 rtw_mp_cmd_hdl(_adapter *padapter, u8 mp_cmd_id) pHalData->EEPROMBluetoothCoexist = padapter->mppriv.CureFuseBTCoex; #endif rtw_reset_drv_sw(padapter); + rtw_clr_drv_stopped(padapter); #ifdef CONFIG_NEW_NETDEV_HDL if (!rtw_is_hw_init_completed(padapter)) { status = rtw_hal_init(padapter); @@ -4810,11 +4095,8 @@ static s32 rtw_mp_cmd_hdl(_adapter *padapter, u8 mp_cmd_id) rtw_intf_start(padapter); #endif /* !RTW_HALMAC */ } - - if (padapter->mppriv.mode != MP_OFF) { - mp_stop_test(padapter); + if (padapter->mppriv.mode != MP_OFF) padapter->mppriv.mode = MP_OFF; - } } else { RTW_INFO(FUNC_ADPT_FMT"invalid id:%d\n", FUNC_ADPT_ARG(padapter), mp_cmd_id); @@ -5505,8 +4787,11 @@ u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf) case DYNAMIC_CHK_WK_CID:/*only primary padapter go to this cmd, but execute dynamic_chk_wk_hdl() for two interfaces */ rtw_dynamic_chk_wk_hdl(padapter); break; + case DYNAMIC_CHK_IDLE_WK_CID: + rtw_dynamic_chk_idle_wk_hdl(adapter_to_dvobj(padapter)); + break; case POWER_SAVING_CTRL_WK_CID: - power_saving_wk_hdl(padapter); + power_saving_wk_hdl(padapter, (u8)pdrvextra_cmd->type, pdrvextra_cmd->pbuf); break; #ifdef CONFIG_LPS case LPS_CTRL_WK_CID: @@ -5590,11 +4875,18 @@ u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf) break; #endif #ifdef CONFIG_DFS_MASTER - case DFS_RADAR_DETECT_WK_CID: - rtw_dfs_rd_hdl(padapter); + case DFS_RADAR_DETECT_WK_CID: { + u8 radar_cch, radar_bw; + + rtw_dfs_hal_radar_detect_result_polling(adapter_to_dvobj(padapter) + , (enum phl_band_idx)pdrvextra_cmd->type + , &radar_cch, &radar_bw); + rtw_dfs_rd_hdl(adapter_to_dvobj(padapter) + , (enum phl_band_idx)pdrvextra_cmd->type, radar_cch, radar_bw); + } break; case DFS_RADAR_DETECT_EN_DEC_WK_CID: - rtw_dfs_rd_en_decision(padapter, MLME_ACTION_NONE, 0); + rtw_dfs_rd_en_dec_update(adapter_to_dvobj(padapter), (enum phl_band_idx)pdrvextra_cmd->type); break; #endif case SESSION_TRACKER_WK_CID: @@ -5693,10 +4985,6 @@ void rtw_survey_cmd_callback(_adapter *padapter , struct cmd_obj *pcmd) } else if (pcmd->res != H2C_SUCCESS) { mlme_set_scan_to_timer(pmlmepriv, 1); } - - /* free cmd */ - rtw_free_cmd_obj(pcmd); - } void rtw_disassoc_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd) { @@ -5715,29 +5003,10 @@ void rtw_disassoc_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd) nat25_db_cleanup(padapter); #endif /* CONFIG_BR_EXT */ - /* free cmd */ - rtw_free_cmd_obj(pcmd); - exit: return; } -void rtw_joinbss_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd) -{ - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - - - if (pcmd->res == H2C_DROPPED) { - /* TODO: cancel timer and do timeout handler directly... */ - /* need to make timeout handlerOS independent */ - _set_timer(&pmlmepriv->assoc_timer, 1); - } else if (pcmd->res != H2C_SUCCESS) - _set_timer(&pmlmepriv->assoc_timer, 1); - - rtw_free_cmd_obj(pcmd); - -} - void rtw_create_ibss_post_hdl(_adapter *padapter, int status) { _irqL irqL; @@ -5807,10 +5076,7 @@ void rtw_setstaKey_cmdrsp_callback(_adapter *padapter , struct cmd_obj *pcmd) /* psta->cmn.aid = psta->cmn.mac_id = psetstakey_rsp->keyid; */ /* CAM_ID(CAM_ENTRY) */ exit: - - rtw_free_cmd_obj(pcmd); - - + return; } void rtw_getrttbl_cmd_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd) diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_debug.c b/drivers/net/wireless/rtl8822cs/core/rtw_debug.c index 42e165bf9..dc9a7ae6d 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_debug.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_debug.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -90,7 +90,10 @@ extern uint rtw_recvbuf_nr; RTW_PRINT_SEL(sel, "CONFIG_POWER_SAVING\n"); #ifdef CONFIG_IPS RTW_PRINT_SEL(sel, "CONFIG_IPS\n"); - #endif + #ifdef CONFIG_FWLPS_IN_IPS + RTW_PRINT_SEL(sel, "CONFIG_FWLPS_IN_IPS\n"); + #endif /* CONFIG_FWLPS_IN_IPS */ + #endif /* CONFIG_IPS */ #ifdef CONFIG_LPS RTW_PRINT_SEL(sel, "CONFIG_LPS\n"); #ifdef CONFIG_LPS_LCLK @@ -138,6 +141,7 @@ extern uint rtw_recvbuf_nr; RTW_PRINT_SEL(sel, "CONFIG_MINIMAL_MEMORY_USAGE\n"); #endif + RTW_PRINT_SEL(sel, "CONFIG_RTW_EDCCA_MODE_SEL = %d\n", CONFIG_RTW_EDCCA_MODE_SEL); RTW_PRINT_SEL(sel, "CONFIG_RTW_ADAPTIVITY_EN = %d\n", CONFIG_RTW_ADAPTIVITY_EN); RTW_PRINT_SEL(sel, "CONFIG_RTW_ADAPTIVITY_MODE = %d\n", CONFIG_RTW_ADAPTIVITY_MODE); @@ -219,6 +223,10 @@ extern uint rtw_recvbuf_nr; #ifdef DBG_SDIO RTW_PRINT_SEL(sel, "DBG_SDIO = %d\n", DBG_SDIO); #endif + +#ifdef CONFIG_RTW_DISABLE_HW_PDN + RTW_PRINT_SEL(sel, "CONFIG_RTW_DISABLE_HW_PDN\n"); +#endif #endif /*CONFIG_SDIO_HCI*/ #ifdef CONFIG_PCI_HCI @@ -335,7 +343,7 @@ void mac_reg_dump(void *sel, _adapter *adapter) #endif /* CONFIG_RTL8814A */ #if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ - || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) for (i = 0x1000; i < 0x1800; i += 4) { if (j % 4 == 1) RTW_PRINT_SEL(sel, "0x%04x", i); @@ -396,7 +404,7 @@ void bb_reg_dump(void *sel, _adapter *adapter) } #if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ - || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) for (i = 0x1800; i < 0x2000; i += 4) { if (j % 4 == 1) RTW_PRINT_SEL(sel, "0x%04x", i); @@ -406,7 +414,8 @@ void bb_reg_dump(void *sel, _adapter *adapter) } #endif /* CONFIG_RTL8822B */ -#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8723F) +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8723F) \ + || defined(CONFIG_RTL8822E) for (i = 0x2c00; i < 0x2c60; i += 4) { if (j % 4 == 1) RTW_PRINT_SEL(sel, "0x%04x", i); @@ -414,7 +423,15 @@ void bb_reg_dump(void *sel, _adapter *adapter) if ((j++) % 4 == 0) _RTW_PRINT_SEL(sel, "\n"); } - +#if defined(CONFIG_RTL8822E) + for (i = 0x2c60; i < 0x2d00; i += 4) { + if (j % 4 == 1) + RTW_PRINT_SEL(sel, "0x%04x", i); + _RTW_PRINT_SEL(sel, " 0x%08x ", rtw_read32(adapter, i)); + if ((j++) % 4 == 0) + _RTW_PRINT_SEL(sel, "\n"); + } +#endif for (i = 0x2d00; i < 0x2df0; i += 4) { if (j % 4 == 1) RTW_PRINT_SEL(sel, "0x%04x", i); @@ -422,7 +439,24 @@ void bb_reg_dump(void *sel, _adapter *adapter) if ((j++) % 4 == 0) _RTW_PRINT_SEL(sel, "\n"); } - +#if defined(CONFIG_RTL8822E) + for (i = 0x2df0; i < 0x2e00; i += 4) { + if (j % 4 == 1) + RTW_PRINT_SEL(sel, "0x%04x", i); + _RTW_PRINT_SEL(sel, " 0x%08x ", rtw_read32(adapter, i)); + if ((j++) % 4 == 0) + _RTW_PRINT_SEL(sel, "\n"); + } +#endif +#if defined(CONFIG_RTL8822E) + for (i = 0x3800; i < 0x4000; i += 4) { + if (j % 4 == 1) + RTW_PRINT_SEL(sel, "0x%04x", i); + _RTW_PRINT_SEL(sel, " 0x%08x ", rtw_read32(adapter, i)); + if ((j++) % 4 == 0) + _RTW_PRINT_SEL(sel, "\n"); + } +#endif for (i = 0x4000; i < 0x4060; i += 4) { if (j % 4 == 1) RTW_PRINT_SEL(sel, "0x%04x", i); @@ -431,6 +465,16 @@ void bb_reg_dump(void *sel, _adapter *adapter) _RTW_PRINT_SEL(sel, "\n"); } +#if defined(CONFIG_RTL8822E) + for (i = 0x4060; i < 0x4100; i += 4) { + if (j % 4 == 1) + RTW_PRINT_SEL(sel, "0x%04x", i); + _RTW_PRINT_SEL(sel, " 0x%08x ", rtw_read32(adapter, i)); + if ((j++) % 4 == 0) + _RTW_PRINT_SEL(sel, "\n"); + } +#endif + for (i = 0x4100; i < 0x4200; i += 4) { if (j % 4 == 1) RTW_PRINT_SEL(sel, "0x%04x", i); @@ -439,7 +483,7 @@ void bb_reg_dump(void *sel, _adapter *adapter) _RTW_PRINT_SEL(sel, "\n"); } -#endif /* CONFIG_RTL8822C || CONFIG_RTL8814B || CONFIG_8723F */ +#endif /* CONFIG_RTL8822C || CONFIG_RTL8814B || CONFIG_8723F || CONFIG_RTL8822E */ #if defined(CONFIG_RTL8814B) for (i = 0x5200; i < 0x5400; i += 4) { @@ -495,7 +539,8 @@ void bb_reg_dump_ex(void *sel, _adapter *adapter) _RTW_PRINT_SEL(sel, "\n"); } -#if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) +#if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ + || defined(CONFIG_RTL8822E) for (i = 0x1800; i < 0x2000; i += 4) { RTW_PRINT_SEL(sel, "0x%04x", i); _RTW_PRINT_SEL(sel, " 0x%08x ", rtw_read32(adapter, i)); @@ -526,22 +571,50 @@ void rf_reg_dump(void *sel, _adapter *adapter) } } -void rtw_sink_rtp_seq_dbg(_adapter *adapter, u8 *ehdr_pos) +void rtw_sink_rtp_seq_dbg(_adapter *adapter, u8 *ehdr_pos, u16 wifi_seq) { struct recv_priv *precvpriv = &(adapter->recvpriv); + u32 cur_seq = 0; + u8 flag = 0; + u8 drop_cnt = 0; + if (precvpriv->sink_udpport > 0) { if (*((u16 *)(ehdr_pos + 0x24)) == cpu_to_be16(precvpriv->sink_udpport)) { + if (precvpriv->pre_rtp_rxseq == 0 && precvpriv->cur_rtp_rxseq == 0 && precvpriv->rtp_drop_count == 0) + flag = 1; + precvpriv->pre_rtp_rxseq = precvpriv->cur_rtp_rxseq; precvpriv->cur_rtp_rxseq = be16_to_cpu(*((u16 *)(ehdr_pos + 0x2C))); - if (precvpriv->pre_rtp_rxseq + 1 != precvpriv->cur_rtp_rxseq) { - if(precvpriv->pre_rtp_rxseq == 65535 ) { - if( precvpriv->cur_rtp_rxseq != 0) { - RTW_INFO("%s : RTP Seq num from %d to %d\n", __FUNCTION__, precvpriv->pre_rtp_rxseq, precvpriv->cur_rtp_rxseq); + precvpriv->pre_wifi_seq = precvpriv->cur_wifi_seq; + precvpriv->cur_wifi_seq = wifi_seq; + + /* It's first received RTP after Wi-Fi driver reset RTP related parameters */ + if (flag) + return; + + if (((precvpriv->pre_rtp_rxseq + 1) & 0xffff) != precvpriv->cur_rtp_rxseq) { + if (((precvpriv->cur_rtp_rxseq - precvpriv->pre_rtp_rxseq) & 0x8000) == 0x0) { + if (precvpriv->pre_rtp_rxseq > precvpriv->cur_rtp_rxseq) { + cur_seq = precvpriv->cur_rtp_rxseq + 0xffff; + drop_cnt = (u16)(cur_seq - precvpriv->pre_rtp_rxseq) - 1; + } else { + drop_cnt = precvpriv->cur_rtp_rxseq - precvpriv->pre_rtp_rxseq - 1; } + precvpriv->rtp_drop_count += drop_cnt; + + RTW_INFO("%s : current RTP seq_num = %u, previous RTP seq_num = %u, drop %u packets\n", + __func__, precvpriv->cur_rtp_rxseq, precvpriv->pre_rtp_rxseq, drop_cnt); + RTW_INFO("%s : current RTP's Wi-Fi cur_seq_num = %u, pre_seq_num = %u\n", __func__, precvpriv->cur_wifi_seq, precvpriv->pre_wifi_seq); + RTW_INFO("%s : Total RTP packet dropped count = %llu\n", __func__, precvpriv->rtp_drop_count); } else { - RTW_INFO("%s : RTP Seq num from %d to %d\n", __FUNCTION__, precvpriv->pre_rtp_rxseq, precvpriv->cur_rtp_rxseq); + RTW_INFO("%s : current RTP seq_num = %u, previous RTP seq_num = %u, it's re-transmission\n", + __func__, precvpriv->cur_rtp_rxseq, precvpriv->pre_rtp_rxseq); + RTW_INFO("%s : currently RTP's Wi-Fi seq_num = %u\n", __func__, wifi_seq); + + /* Recover cur_rtp_rxseq to newlest sequence number */ + precvpriv->cur_rtp_rxseq = precvpriv->pre_rtp_rxseq; } - } + } } } } @@ -775,41 +848,9 @@ void dump_adapters_status(void *sel, struct dvobj_priv *dvobj) , rfctl->offch_state ); -#ifdef CONFIG_DFS_MASTER - if (rfctl->radar_detect_ch != 0) { - RTW_PRINT_SEL(sel, "%55s %3u,%u,%u" - , "radar_detect:" - , rfctl->radar_detect_ch - , rfctl->radar_detect_bw - , rfctl->radar_detect_offset - ); - - if (rfctl->radar_detect_by_others) - _RTW_PRINT_SEL(sel, ", by AP of STA link"); - else { - u32 non_ocp_ms; - u32 cac_ms; - u8 dfs_domain = rtw_rfctl_get_dfs_domain(rfctl); - - _RTW_PRINT_SEL(sel, ", domain:%s(%u)", rtw_dfs_regd_str(dfs_domain), dfs_domain); - - rtw_get_ch_waiting_ms(rfctl - , rfctl->radar_detect_ch - , rfctl->radar_detect_bw - , rfctl->radar_detect_offset - , &non_ocp_ms - , &cac_ms - ); - - if (non_ocp_ms) - _RTW_PRINT_SEL(sel, ", non_ocp:%d", non_ocp_ms); - if (cac_ms) - _RTW_PRINT_SEL(sel, ", cac:%d", cac_ms); - } - - _RTW_PRINT_SEL(sel, "\n"); - } -#endif /* CONFIG_DFS_MASTER */ + #if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ + dump_radar_detect_status(sel, rfctl, " radar_detect:"); + #endif #endif /* CONFIG_RTW_DEBUG || CONFIG_PROC_DEBUG */ } @@ -1187,6 +1228,11 @@ int proc_get_sta_tx_stat(struct seq_file *m, void *v) stats = &sta->sta_stats; RTW_PRINT_SEL(m, "MAC: " MAC_FMT " fail: %u retry: %u\n", MAC_ARG(mac), stats->tx_fail_cnt_sum, stats->tx_retry_cnt_sum); + + if (ret == _SUCCESS) + ret = 0; + else + ret = -ENODATA; } else ret = -ENODATA; return ret; @@ -2299,99 +2345,14 @@ ssize_t proc_set_rson_data(struct file *file, const char __user *buffer, size_t int proc_get_survey_info(struct seq_file *m, void *v) { - _irqL irqL; struct net_device *dev = m->private; - _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - _queue *queue = &(pmlmepriv->scanned_queue); - struct wlan_network *pnetwork = NULL; - _list *plist, *phead; - s32 notify_signal; - s16 notify_noise = 0; - u16 index = 0, ie_cap = 0; - unsigned char *ie_wpa = NULL, *ie_wpa2 = NULL, *ie_wps = NULL; - unsigned char *ie_p2p = NULL, *ssid = NULL; - char flag_str[64]; - int ielen = 0; - u32 wpsielen = 0; -#ifdef CONFIG_RTW_MESH - const char *ssid_title_str = "ssid/mesh_id"; -#else - const char *ssid_title_str = "ssid"; -#endif - u8 rsni = 255; - - _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); - phead = get_list_head(queue); - if (!phead) - goto _exit; - plist = get_next(phead); - if (!plist) - goto _exit; + _adapter *adapter = rtw_netdev_priv(dev); #ifdef CONFIG_RTW_REPEATER_SON - rtw_rson_show_survey_info(m, plist, phead); + rtw_rson_show_survey_info(m, adapter); #else - - RTW_PRINT_SEL(m, "%5s %-17s %3s %-3s %-4s %-4s %4s %5s %32s %32s \n", - "index", "bssid", "ch", "RSSI", "SdBm", "Noise", "rsni", "age", "flag", ssid_title_str); - while (1) { - if (rtw_end_of_queue_search(phead, plist) == _TRUE) - break; - - pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); - if (!pnetwork) - break; - - if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE) == _TRUE && - is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network, 0)) { - notify_signal = translate_percentage_to_dbm(padapter->recvpriv.signal_strength);/* dbm */ - } else { - notify_signal = translate_percentage_to_dbm(pnetwork->network.PhyInfo.SignalStrength);/* dbm */ - } - -#ifdef CONFIG_BACKGROUND_NOISE_MONITOR - if (IS_NM_ENABLE(padapter)) - notify_noise = rtw_noise_query_by_chan_num(padapter, pnetwork->network.Configuration.DSConfig); + dump_scanned_queue(m, adapter); #endif -#ifdef CONFIG_RTW_ACS - rsni = rtw_acs_get_rsni(padapter, (int)(pnetwork->network.Rssi), pnetwork->network.Configuration.DSConfig); -#endif - - ie_wpa = rtw_get_wpa_ie(&pnetwork->network.IEs[12], &ielen, pnetwork->network.IELength - 12); - ie_wpa2 = rtw_get_wpa2_ie(&pnetwork->network.IEs[12], &ielen, pnetwork->network.IELength - 12); - ie_cap = rtw_get_capability(&pnetwork->network); - ie_wps = rtw_get_wps_ie(&pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &wpsielen); -#ifdef CONFIG_P2P - ie_p2p = rtw_get_p2p_ie(&pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &ielen); -#endif - ssid = pnetwork->network.Ssid.Ssid; - sprintf(flag_str, "%s%s%s%s%s%s%s", - (ie_wpa) ? "[WPA]" : "", - (ie_wpa2) ? "[WPA2]" : "", - (!ie_wpa && !ie_wpa && ie_cap & BIT(4)) ? "[WEP]" : "", - (ie_wps) ? "[WPS]" : "", - (pnetwork->network.InfrastructureMode == Ndis802_11IBSS) ? "[IBSS]" : - (pnetwork->network.InfrastructureMode == Ndis802_11_mesh) ? "[MESH]" : "", - (ie_cap & BIT(0)) ? "[ESS]" : "", - (ie_p2p) ? "[P2P]" : ""); - RTW_PRINT_SEL(m, "%5d "MAC_FMT" %3d %4d %4d %4d %4d %5d %32s %32s\n", - ++index, - MAC_ARG(pnetwork->network.MacAddress), - pnetwork->network.Configuration.DSConfig, - (int)pnetwork->network.Rssi, - notify_signal, - notify_noise, - rsni, - rtw_get_passing_time_ms(pnetwork->last_scanned), - flag_str, - pnetwork->network.InfrastructureMode == Ndis802_11_mesh ? pnetwork->network.mesh_id.Ssid : pnetwork->network.Ssid.Ssid - ); - plist = get_next(plist); - } -#endif -_exit: - _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); return 0; } @@ -2400,7 +2361,7 @@ ssize_t proc_set_survey_info(struct file *file, const char __user *buffer, size_ { struct net_device *dev = data; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - u8 _status = _FALSE; + /*u8 _status = _FALSE;*/ u8 ssc_chk; char tmp[32] = {0}; char cmd[8] = {0}; @@ -2482,10 +2443,10 @@ ssize_t proc_set_survey_info(struct file *file, const char __user *buffer, size_ if (acs) { #ifdef CONFIG_RTW_ACS - _status = rtw_set_acs_sitesurvey(padapter); + /*_status = */rtw_set_acs_sitesurvey(padapter); #endif } else - _status = rtw_set_802_11_bssid_list_scan(padapter, NULL); + /*_status = */rtw_set_802_11_bssid_list_scan(padapter, NULL); cancel_ps_deny: rtw_ps_deny_cancel(padapter, PS_DENY_SCAN); @@ -2683,6 +2644,7 @@ ssize_t proc_reset_trx_info(struct file *file, const char __user *buffer, size_t precvpriv->dbg_rx_ampdu_window_shift_cnt = 0; precvpriv->dbg_rx_conflic_mac_addr_cnt = 0; precvpriv->dbg_rx_drop_count = 0; + precvpriv->rtp_drop_count = 0; /* Reset ip packet statistic */ rtw_rx_dbg_ip_statistic_rest(&(precvpriv->ip_statistic), 0); } else if ((num == 1) && (cnt == 2)) { @@ -2753,6 +2715,7 @@ int proc_get_trx_info(struct seq_file *m, void *v) RTW_PRINT_SEL(m, "Rx: AMPDU BA window shift Count: %llu\n", (unsigned long long)precvpriv->dbg_rx_ampdu_window_shift_cnt); /*The same mac addr counts*/ RTW_PRINT_SEL(m, "Rx: Conflict MAC Address Frames Count: %llu\n", (unsigned long long)precvpriv->dbg_rx_conflic_mac_addr_cnt); + RTW_PRINT_SEL(m, "RX: Total RTP packet dropped count: %llu\n", precvpriv->rtp_drop_count); if (precvpriv->ip_statistic.enabled) { RTW_PRINT_SEL(m,"Rx : %u IP Packets, Frag %u at "IP_FMT":%u\n", @@ -4911,21 +4874,21 @@ int proc_get_all_sta_info(struct seq_file *m, void *v) #endif -#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER -int proc_get_rtkm_info(struct seq_file *m, void *v) +#if defined(CONFIG_RTKM) && defined(CONFIG_PREALLOC_RX_SKB_BUFFER) +int proc_get_rtkm_skb(struct seq_file *m, void *v) { #ifdef CONFIG_USB_HCI struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct recv_priv *precvpriv = &padapter->recvpriv; + struct recv_priv *precvpriv = &padapter->recvpriv; struct recv_buf *precvbuf; precvbuf = (struct recv_buf *)precvpriv->precv_buf; #endif /* CONFIG_USB_HCI */ - RTW_PRINT_SEL(m, "============[RTKM Info]============\n"); - RTW_PRINT_SEL(m, "MAX_RTKM_NR_PREALLOC_RECV_SKB: %d\n", rtw_rtkm_get_nr_recv_skb()); - RTW_PRINT_SEL(m, "MAX_RTKM_RECVBUF_SZ: %d\n", rtw_rtkm_get_buff_size()); + RTW_PRINT_SEL(m, "RTKM_MAX_NR_PREALLOC_RECV_SKB: %d\n", + rtkm_get_max_nr_rx_skb()); + RTW_PRINT_SEL(m, "RTKM_MAX_RECVBUF_SZ: %d\n", rtkm_get_max_buff_size()); RTW_PRINT_SEL(m, "============[Driver Info]============\n"); RTW_PRINT_SEL(m, "NR_PREALLOC_RECV_SKB: %d\n", NR_PREALLOC_RECV_SKB); @@ -4939,6 +4902,38 @@ int proc_get_rtkm_info(struct seq_file *m, void *v) } #endif /* CONFIG_PREALLOC_RX_SKB_BUFFER */ +#ifdef CONFIG_RTKM +int proc_get_rtkm_info(struct seq_file *m, void *v) +{ + rtkm_dump_mstatus(m); + return 0; +} + +ssize_t proc_set_rtkm_info(struct file *file, const char __user *buffer, + size_t count, loff_t *pos, void *data) +{ + char tmp[32]; + unsigned int mask; + + if (count < 1) + return -EFAULT; + + if (count > sizeof(tmp)) { + rtw_warn_on(1); + return -EFAULT; + } + + if (buffer && !copy_from_user(tmp, buffer, count)) { + int num = sscanf(tmp, "%x", &mask); + + if (num == 1) + rtkm_set_trace(mask); + } + + return count; +} +#endif /* CONFIG_RTKM */ + #ifdef DBG_MEMORY_LEAK #include extern atomic_t _malloc_cnt;; @@ -4958,48 +4953,52 @@ int proc_get_best_channel(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); + struct rtw_chset *chset = adapter_to_chset(padapter); u32 i, best_channel_24G = 1, best_channel_5G = 36, index_24G = 0, index_5G = 0; - for (i = 0; i < rfctl->max_chan_nums && rfctl->channel_set[i].ChannelNum != 0; i++) { - if (rfctl->channel_set[i].ChannelNum == 1) + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].flags & RTW_CHF_DIS) + continue; + if (chset->chs[i].ChannelNum == 1) index_24G = i; - if (rfctl->channel_set[i].ChannelNum == 36) + if (chset->chs[i].ChannelNum == 36) index_5G = i; } - for (i = 0; i < rfctl->max_chan_nums && rfctl->channel_set[i].ChannelNum != 0; i++) { + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].flags & RTW_CHF_DIS) + continue; /* 2.4G */ - if (rfctl->channel_set[i].ChannelNum == 6) { - if (rfctl->channel_set[i].rx_count < rfctl->channel_set[index_24G].rx_count) { + if (chset->chs[i].ChannelNum == 6) { + if (chset->chs[i].rx_count < chset->chs[index_24G].rx_count) { index_24G = i; - best_channel_24G = rfctl->channel_set[i].ChannelNum; + best_channel_24G = chset->chs[i].ChannelNum; } } /* 5G */ - if (rfctl->channel_set[i].ChannelNum >= 36 - && rfctl->channel_set[i].ChannelNum < 140) { + if (chset->chs[i].ChannelNum >= 36 + && chset->chs[i].ChannelNum < 140) { /* Find primary channel */ - if (((rfctl->channel_set[i].ChannelNum - 36) % 8 == 0) - && (rfctl->channel_set[i].rx_count < rfctl->channel_set[index_5G].rx_count)) { + if (((chset->chs[i].ChannelNum - 36) % 8 == 0) + && (chset->chs[i].rx_count < chset->chs[index_5G].rx_count)) { index_5G = i; - best_channel_5G = rfctl->channel_set[i].ChannelNum; + best_channel_5G = chset->chs[i].ChannelNum; } } - if (rfctl->channel_set[i].ChannelNum >= 149 - && rfctl->channel_set[i].ChannelNum < 165) { + if (chset->chs[i].ChannelNum >= 149 + && chset->chs[i].ChannelNum < 165) { /* find primary channel */ - if (((rfctl->channel_set[i].ChannelNum - 149) % 8 == 0) - && (rfctl->channel_set[i].rx_count < rfctl->channel_set[index_5G].rx_count)) { + if (((chset->chs[i].ChannelNum - 149) % 8 == 0) + && (chset->chs[i].rx_count < chset->chs[index_5G].rx_count)) { index_5G = i; - best_channel_5G = rfctl->channel_set[i].ChannelNum; + best_channel_5G = chset->chs[i].ChannelNum; } } #if 1 /* debug */ RTW_PRINT_SEL(m, "The rx cnt of channel %3d = %d\n", - rfctl->channel_set[i].ChannelNum, rfctl->channel_set[i].rx_count); + chset->chs[i].ChannelNum, chset->chs[i].rx_count); #endif } @@ -5013,7 +5012,7 @@ ssize_t proc_set_best_channel(struct file *file, const char __user *buffer, size { struct net_device *dev = data; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); + struct rtw_chset *chset = adapter_to_chset(padapter); char tmp[32]; if (count < 1) @@ -5026,8 +5025,8 @@ ssize_t proc_set_best_channel(struct file *file, const char __user *buffer, size if (buffer && !copy_from_user(tmp, buffer, count)) { int i; - for (i = 0; i < rfctl->max_chan_nums && rfctl->channel_set[i].ChannelNum != 0; i++) - rfctl->channel_set[i].rx_count = 0; + for (i = 0; i < chset->chs_len; i++) + chset->chs[i].rx_count = 0; RTW_INFO("set %s\n", "Clean Best Channel Count"); } @@ -5041,13 +5040,16 @@ int proc_get_btcoex_dbg(struct seq_file *m, void *v) { struct net_device *dev = m->private; PADAPTER padapter; - char buf[512] = {0}; + char *buf = NULL; padapter = (PADAPTER)rtw_netdev_priv(dev); + buf = (char *)rtw_zmalloc(512); + if (!buf) + return -ENOMEM; rtw_btcoex_GetDBG(padapter, buf, 512); _RTW_PRINT_SEL(m, "%s", buf); - + rtw_mfree(buf, 512); return 0; } @@ -5842,6 +5844,7 @@ ssize_t proc_set_pattern_info(struct file *file, const char __user *buffer, HW_VAR_WOWLAN, (u8 *)&poidparam); } else { index = pwrpriv->wowlan_pattern_idx; + tmp[MAX_WKFM_PATTERN_STR_LEN] = '\0'; ret = rtw_wowlan_parser_pattern_cmd(tmp, pwrpriv->patterns[index].content, &pwrpriv->patterns[index].len, @@ -5945,7 +5948,473 @@ int proc_dump_wow_keep_alive_info(struct seq_file *m, void *v) { return 0; } #endif /* CONFIG_WOW_KEEP_ALIVE_PATTERN*/ +#ifdef CONFIG_MDNS_OFFLOAD +#define MDNS_RESP_PROC_BUF_LEN 1027 /* MAX_MDNS_RESP_LEN * 2 + 3 */ +#define MDNS_RESP_STR_BUF_LEN 1025 /* MAX_MDNS_RESP_LEN * 2 + 1 */ +#define MDNS_PASSTHRU_PROC_BUF_LEN 511 /* MAX_MDNS_DOMAIN_NAME_LEN * 2 + 1 */ +static void _parse_mdns_domain_name(struct seq_file *m, u8 *buf, u16 buf_len, u16 cur_offset, u8 *name_len) +{ + u8 name[255] = {0}; + u8 lable_remain_len = 0; + u16 name_ptr = 0; + u16 len = 0; + while (1) { + if (cur_offset >= buf_len || len >= 255) { + len = 0; + goto exit; + } + + if (!lable_remain_len) { + /* compression label */ + if ((buf[cur_offset] & 0xc0) == 0xc0) { + if (cur_offset + 1 >= buf_len) { + len = 0; + goto exit; + } + + name_ptr = ((buf[cur_offset] & 0x3f) << 8) + + buf[cur_offset + 1]; + if (name_ptr >= cur_offset) { + len = 0; + goto exit; + } + cur_offset = name_ptr; + } + + /* label length */ + if (buf[cur_offset] > 63) { + len = 0; + goto exit; + } + + if (buf[cur_offset] == 0) { + name[len] = '\0'; + len += 1; + goto exit; + } else { + name[len] = '.'; + len += 1; + lable_remain_len = buf[cur_offset]; + cur_offset++; + } + } else { + name[len] = buf[cur_offset]; + len += 1; + lable_remain_len = lable_remain_len - 1; + cur_offset++; + } + } + +exit: + if (name_len) + *name_len = (u8)len; + + if (len) + RTW_PRINT_SEL(m, "domain name=%s\n", name + 1); + else + RTW_PRINT_SEL(m, "domain name parsing failed\n"); +} + +ssize_t proc_set_wow_mdns_resp(struct file *file, const char __user *buffer, + size_t count, loff_t *pos, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + char *tmp = NULL; + u8 resp_idx = 0; + u8 *mdns_resp = NULL; + int err = 0; + int num, i; + size_t resp_str_len = 0; + u16 resp_hex_len = 0; + + if (!padapter) { + err = -EFAULT; + goto exit; + } + + tmp = rtw_zvmalloc(MDNS_RESP_PROC_BUF_LEN); + mdns_resp = rtw_zvmalloc(MDNS_RESP_STR_BUF_LEN); + if (!tmp || !mdns_resp) { + RTW_INFO("alloc buffer failed\n"); + err = -EFAULT; + goto exit; + } + + if (count < 1 || count > MDNS_RESP_PROC_BUF_LEN) { + RTW_INFO("argument size not available\n"); + err = -EINVAL; + goto exit; + } + + if (!buffer || copy_from_user(tmp, buffer, count)) { + err = -EFAULT; + goto exit; + } + + if (strncmp(tmp, "clear", 5) == 0) { + RTW_INFO("clear all mdns resp\n"); + for (i = 0; i < MAX_MDNS_RESP_NUM; i++) + rtw_wow_del_mdns_resp(padapter, i); + goto exit; + } + + num = sscanf(tmp, "%hhu %s", &resp_idx, mdns_resp); + if ((num < 1) || (resp_idx > (MAX_MDNS_RESP_NUM - 1))) { + RTW_INFO("argument unavailable\n"); + err = -EINVAL; + goto exit; + } else if (num == 1) { + RTW_INFO("remove mdns resp(%d)\n", resp_idx); + rtw_wow_del_mdns_resp(padapter, resp_idx); + } else { + resp_str_len = strlen(mdns_resp); + if (resp_str_len % 2 != 0) { + err = -EINVAL; + RTW_INFO("mdns_resp content format is incorrect\n"); + goto exit; + } + + for (i = 0; i < resp_str_len; i += 2) { + mdns_resp[resp_hex_len] = key_2char2num(mdns_resp[i], mdns_resp[i + 1]); + resp_hex_len++; + } + + rtw_wow_add_mdns_resp(padapter, resp_idx, mdns_resp, resp_hex_len); + } + +exit: + if (tmp) + rtw_vmfree(tmp, MDNS_RESP_PROC_BUF_LEN); + if (mdns_resp) + rtw_vmfree(mdns_resp, MDNS_RESP_STR_BUF_LEN); + + return err ? err : count; +} + +int proc_get_wow_mdns_resp(struct seq_file *m, void *v) +{ + struct net_device *dev = m->private; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct rtw_mdns_resp_entry *resp_entry = NULL; + u8 resp_idx = 0; + u16 i = 0; + + if (!padapter) + goto exit; + + for (resp_idx = 0; resp_idx < MAX_MDNS_RESP_NUM; resp_idx++) { + rtw_wow_get_mdns_resp_ent(padapter, resp_idx, &resp_entry); + + RTW_PRINT_SEL(m, "mdns resp(%d):", resp_idx); + + if (resp_entry->content_len == 0) { + RTW_PRINT_SEL(m, "\n"); + continue; + } + + for (i = 0; i < resp_entry->content_len; i++) { + if (i % 32 == 0) + RTW_PRINT_SEL(m, "\n"); + RTW_PRINT_SEL(m, "%02x", resp_entry->content[i]); + } + RTW_PRINT_SEL(m, "\n"); + } + +exit: + return 0; +} + +ssize_t proc_set_wow_mdns_match_criteria(struct file *file, + const char __user *buffer, + size_t count, loff_t *pos, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct rtw_mdns_resp_entry *resp_entry = NULL; + char tmp[13] = {0}; + u8 resp_idx = 0; + u16 match_type = 0; + u16 name_offset = 0; + u8 name_len = 0; + int err = 0; + int num = 0; + + if (!padapter) { + err = -EFAULT; + goto exit; + } + + if (count < 1 || count > sizeof(tmp)) { + RTW_INFO("argument size not available\n"); + err = -EINVAL; + goto exit; + } + + if (!buffer || copy_from_user(tmp, buffer, count)) { + err = -EFAULT; + goto exit; + } + + num = sscanf(tmp, "%hhu %hu %hu", &resp_idx, &match_type, &name_offset); + if ((num < 1) || num == 2 || (resp_idx > (MAX_MDNS_RESP_NUM - 1))) { + RTW_INFO("argument unavailable\n"); + err = -EINVAL; + } else if (num == 1) { + RTW_INFO("remove mdns resp(%d) match criteria\n", resp_idx); + rtw_wow_del_mdns_match_crit(padapter, resp_idx); + } else { + rtw_wow_get_mdns_resp_ent(padapter, resp_idx, &resp_entry); + if (resp_entry->content_len == 0) { + RTW_INFO("mdns resp(%d) is empty\n", resp_idx); + err = -EFAULT; + goto exit; + } + + _parse_mdns_domain_name(NULL, resp_entry->content, + resp_entry->content_len, + name_offset, &name_len); + if (name_len == 0) { + err = -EINVAL; + goto exit; + } + + RTW_INFO("name_len=%3d\n", name_len); + + rtw_wow_add_mdns_match_crit(padapter, resp_idx, match_type, name_offset, name_len); + } + +exit: + return err ? err : count; +} + +int proc_get_wow_mdns_match_criteria(struct seq_file *m, void *v) +{ + struct net_device *dev = m->private; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct rtw_mdns_resp_entry *resp_entry = NULL; + u8 resp_idx = 0; + u8 i = 0; + + if (!padapter) + goto exit; + + for (resp_idx = 0; resp_idx < MAX_MDNS_RESP_NUM; resp_idx++) { + rtw_wow_get_mdns_resp_ent(padapter, resp_idx, &resp_entry); + + RTW_PRINT_SEL(m, "mdns resp(%d) match criteria:\n", resp_idx); + + for (i = 0; i < resp_entry->match_ct_num; i++) { + RTW_PRINT_SEL(m, "type=%5d, name_offset=%3d, name_len=%3d\n", + resp_entry->match_ct[i].type, + resp_entry->match_ct[i].name_offset, + resp_entry->match_ct[i].name_len); + _parse_mdns_domain_name(m, resp_entry->content, + resp_entry->content_len, + resp_entry->match_ct[i].name_offset, + NULL); + } + } + +exit: + return 0; +} + +ssize_t proc_set_wow_mdns_passthru_list(struct file *file, + const char __user *buffer, + size_t count, loff_t *pos, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + char tmp[MDNS_PASSTHRU_PROC_BUF_LEN] = {0}; + u16 name_buf_len = 0; + u8 name_len = 0; + int err = 0; + u16 i = 0; + + if (!padapter) { + err = -EFAULT; + goto exit; + } + + if (count < 1 || count > sizeof(tmp)) { + RTW_INFO("argument size not available\n"); + err = -EFAULT; + goto exit; + } + + if (!buffer || copy_from_user(tmp, buffer, count)) { + err = -EFAULT; + goto exit; + } + + if (strncmp(tmp, "clear", 5) == 0) { + RTW_INFO("clear passthru list\n"); + rtw_wow_clr_mdns_passthru_name(padapter); + } else { + if ((count - 1) % 2 != 0) { + err = -EFAULT; + RTW_INFO("passthru name format is incorrect\n"); + goto exit; + } + + for (i = 0; i < count - 1 ; i += 2) { + tmp[name_buf_len] = key_2char2num(tmp[i], tmp[i+1]); + name_buf_len++; + } + _parse_mdns_domain_name(NULL, tmp, name_buf_len, 0, &name_len); + + if (name_len == 0) { + err = -EFAULT; + goto exit; + } + + if (_FAIL == rtw_wow_add_mdns_passthru_name(padapter, tmp, name_len)) { + err = -EFAULT; + goto exit; + } + } +exit: + return err ? err : count; +} + +int proc_get_wow_mdns_passthru_list(struct seq_file *m, void *v) +{ + struct net_device *dev = m->private; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct rtw_mdns_passthru_list *passthru_list = NULL; + u8 i = 0; + + if (!padapter) + goto exit; + + rtw_wow_get_mdns_passthru_list(padapter, &passthru_list); + + RTW_PRINT_SEL(m, "mdns passthru list:\n"); + + for (i = 0; i < passthru_list->passthru_name_num; i++) { + RTW_PRINT_SEL(m, "name_len=%3d, ", passthru_list->passthru_name[i].name_len); + _parse_mdns_domain_name(m, passthru_list->passthru_name[i].name, + passthru_list->passthru_name[i].name_len, + 0, NULL); + } + +exit: + return 0; +} + +ssize_t proc_set_wow_mdns_offload_state(struct file *file, + const char __user *buffer, + size_t count, loff_t *pos, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct pwrctrl_priv *pwrpriv; + char tmp; + int err = 0; + + if (!padapter) { + err = -EFAULT; + goto exit; + } + + pwrpriv = adapter_to_pwrctl(padapter); + + if (count != 2) { + RTW_INFO("argument size not available\n"); + err = -EINVAL; + goto exit; + } + + if (!buffer || copy_from_user(&tmp, buffer, 1)) { + err = -EFAULT; + goto exit; + } + + tmp = key_char2num(tmp); + if (tmp < 0 || tmp > 1) + RTW_INFO("Invalid mdns offload state!\n"); + else + pwrpriv->mdns_ofld_info.offload_state = tmp; + +exit: + return err ? err : count; +} + +int proc_get_wow_mdns_offload_state(struct seq_file *m, void *v) +{ + struct net_device *dev = m->private; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct pwrctrl_priv *pwrpriv; + + if (!padapter) + goto exit; + + pwrpriv = adapter_to_pwrctl(padapter); + + RTW_PRINT_SEL(m, "%d\n", pwrpriv->mdns_ofld_info.offload_state); + +exit: + return 0; +} + +ssize_t proc_set_wow_mdns_passthru_behavior(struct file *file, + const char __user *buffer, + size_t count, loff_t *pos, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + struct rtw_mdns_passthru_list *passthru_list = NULL; + char tmp; + int err = 0; + + if (!padapter) { + err = -EFAULT; + goto exit; + } + + if (count != 2) { + RTW_INFO("argument size not available\n"); + err = -EINVAL; + goto exit; + } + + if (!buffer || copy_from_user(&tmp, buffer, 1)) { + err = -EFAULT; + goto exit; + } + + tmp = key_char2num(tmp); + if (tmp < 0 || tmp > 2) { + RTW_INFO("Invalid passthrough behavior!\n"); + } else { + rtw_wow_get_mdns_passthru_list(padapter, &passthru_list); + passthru_list->passthru_behavior = tmp; + } + +exit: + return err ? err : count; +} + +int proc_get_wow_mdns_passthru_behavior(struct seq_file *m, void *v) +{ + struct net_device *dev = m->private; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct rtw_mdns_passthru_list *passthru_list; + + if (!padapter) + goto exit; + + rtw_wow_get_mdns_passthru_list(padapter, &passthru_list); + + RTW_PRINT_SEL(m, "%d\n", passthru_list->passthru_behavior); + +exit: + return 0; +} +#endif /* CONFIG_MDNS_OFFLOAD */ #endif /*CONFIG_WOWLAN*/ #ifdef CONFIG_GPIO_WAKEUP @@ -6096,29 +6565,32 @@ int proc_get_ps_info(struct seq_file *m, void *v) u8 lps_1t1r = pwrpriv->lps_1t1r; #endif #ifdef CONFIG_WOWLAN + u8 wow_ips_mode = pwrpriv->wowlan_ips_mode; u8 wow_lps_mode = pwrpriv->wowlan_power_mgmt; u8 wow_lps_level = pwrpriv->wowlan_lps_level; #ifdef CONFIG_LPS_1T1R u8 wow_lps_1t1r = pwrpriv->wowlan_lps_1t1r; #endif #endif /* CONFIG_WOWLAN */ - char *str = ""; + char str[80] = {0}; RTW_PRINT_SEL(m, "======Power Saving Info:======\n"); RTW_PRINT_SEL(m, "*IPS:\n"); - if (ips_mode == IPS_NORMAL) { + if (ips_mode == IPS_NONE) + strcpy(str, "IPS_NONE"); + else if (ips_mode == IPS_NORMAL) + strcpy(str, "IPS_NORMAL"); #ifdef CONFIG_FWLPS_IN_IPS - str = "FW_LPS_IN_IPS"; -#else - str = "Card Disable"; -#endif - } else if (ips_mode == IPS_NONE) - str = "NO IPS"; - else if (ips_mode == IPS_LEVEL_2) - str = "IPS_LEVEL_2"; + else if (ips_mode == IPS_FWIPS) + strcpy(str, "IPS_FWIPS"); +#ifdef CONFIG_LPS_LCLK + else if (ips_mode == IPS_FWIPS_LCLK) + strcpy(str, "IPS_FWIPS_LCLK"); +#endif /* CONFIG_LPS_LCLK */ +#endif /* CONFIG_FWLPS_IN_IPS */ else - str = "invalid ips_mode"; + strcpy(str, "Invalid"); RTW_PRINT_SEL(m, " IPS mode: %s\n", str); RTW_PRINT_SEL(m, " IPS enter count:%d, IPS leave count:%d\n", @@ -6127,13 +6599,13 @@ int proc_get_ps_info(struct seq_file *m, void *v) RTW_PRINT_SEL(m, "*LPS:\n"); if (lps_mode == PS_MODE_ACTIVE) - str = "NO LPS"; + strcpy(str, "NO LPS"); else if (lps_mode == PS_MODE_MIN) - str = "MIN"; + strcpy(str, "MIN"); else if (lps_mode == PS_MODE_MAX) - str = "MAX"; + strcpy(str, "MAX"); else if (lps_mode == PS_MODE_DTIM) - str = "DTIM"; + strcpy(str, "DTIM"); else sprintf(str, "%d", lps_mode); @@ -6145,11 +6617,11 @@ int proc_get_ps_info(struct seq_file *m, void *v) pwrpriv->lps_enter_cnts, pwrpriv->lps_leave_cnts); if (lps_level == LPS_LCLK) - str = "LPS_LCLK"; + strcpy(str, "LPS_LCLK"); else if (lps_level == LPS_PG) - str = "LPS_PG"; + strcpy(str, "LPS_PG"); else - str = "LPS_NORMAL"; + strcpy(str, "LPS_NORMAL"); RTW_PRINT_SEL(m, " LPS level: %s\n", str); #ifdef CONFIG_LPS_1T1R @@ -6157,28 +6629,48 @@ int proc_get_ps_info(struct seq_file *m, void *v) #endif #ifdef CONFIG_WOWLAN + RTW_PRINT_SEL(m, "------------------------------\n"); + RTW_PRINT_SEL(m, "*WOW IPS:\n"); + + if (wow_ips_mode == IPS_NONE) + strcpy(str, "IPS_NONE"); + else if (wow_ips_mode == IPS_NORMAL) + strcpy(str, "IPS_NORMAL"); +#ifdef CONFIG_FWLPS_IN_IPS + else if (wow_ips_mode == IPS_FWIPS) + strcpy(str, "IPS_FWIPS"); +#ifdef CONFIG_LPS_LCLK + else if (wow_ips_mode == IPS_FWIPS_LCLK) + strcpy(str, "IPS_FWIPS_LCLK"); +#endif /* CONFIG_LPS_LCLK */ +#endif /* CONFIG_FWLPS_IN_IPS */ + else + strcpy(str, "Invalid"); + + RTW_PRINT_SEL(m, " WOW IPS mode: %s\n", str); + RTW_PRINT_SEL(m, "------------------------------\n"); RTW_PRINT_SEL(m, "*WOW LPS:\n"); if (wow_lps_mode == PS_MODE_ACTIVE) - str = "NO LPS"; + strcpy(str, "NO LPS"); else if (wow_lps_mode == PS_MODE_MIN) - str = "MIN"; + strcpy(str, "MIN"); else if (wow_lps_mode == PS_MODE_MAX) - str = "MAX"; + strcpy(str, "MAX"); else if (wow_lps_mode == PS_MODE_DTIM) - str = "DTIM"; + strcpy(str, "DTIM"); else sprintf(str, "%d", wow_lps_mode); RTW_PRINT_SEL(m, " WOW LPS mode: %s\n", str); if (wow_lps_level == LPS_LCLK) - str = "LPS_LCLK"; + strcpy(str, "LPS_LCLK"); else if (wow_lps_level == LPS_PG) - str = "LPS_PG"; + strcpy(str, "LPS_PG"); else - str = "LPS_NORMAL"; + strcpy(str, "LPS_NORMAL"); RTW_PRINT_SEL(m, " WOW LPS level: %s\n", str); #ifdef CONFIG_LPS_1T1R @@ -6218,13 +6710,15 @@ ssize_t proc_set_ps_info(struct file *file, const char __user *buffer, size_t co RTW_INFO("%s: back to original LPS/IPS Mode\n", __FUNCTION__); rtw_pm_set_lps(adapter, adapter->registrypriv.power_mgnt); - + rtw_pm_set_ips(adapter, adapter->registrypriv.ips_mode); #ifdef CONFIG_WOWLAN - RTW_INFO("%s: back to original WOW LPS Mode\n", __FUNCTION__); + RTW_INFO("%s: back to original WOW IPS/LPS Mode\n", __FUNCTION__); rtw_pm_set_wow_lps(adapter, adapter->registrypriv.wow_power_mgnt); + + rtw_pm_set_wow_ips(adapter, adapter->registrypriv.wow_ips_mode); #endif /* CONFIG_WOWLAN */ goto exit; @@ -6248,6 +6742,10 @@ ssize_t proc_set_ps_info(struct file *file, const char __user *buffer, size_t co RTW_INFO("%s: WOW LPS: %s, en=%d\n", __FUNCTION__, (en == 0) ? "disable":"enable", en); if (rtw_pm_set_wow_lps(adapter, en) != 0 ) RTW_ERR("%s: invalid parameter, mode=%d, level=%d\n", __FUNCTION__, mode, en); + } else if (mode == 4) { + RTW_INFO("%s: WOW IPS: %s, en=%d\n", __FUNCTION__, (en == 0) ? "disable":"enable", en); + if (rtw_pm_set_wow_ips(adapter, en) != 0 ) + RTW_ERR("%s: invalid parameter, mode=%d, level=%d\n", __FUNCTION__, mode, en); } #endif /* CONFIG_WOWLAN */ else @@ -6496,9 +6994,6 @@ static int proc_tdls_display_network_info(struct seq_file *m) case WIRELESS_11_5N: RTW_PRINT_SEL(m, "%6s", "11_5N "); break; - case WIRELESS_AUTO: - RTW_PRINT_SEL(m, "%5s", "AUTO "); - break; case WIRELESS_11AC: RTW_PRINT_SEL(m, "%5s", "11AC "); break; @@ -6671,9 +7166,6 @@ static int proc_tdls_display_tdls_sta_info(struct seq_file *m) case WIRELESS_11_5N: RTW_PRINT_SEL(m, "%6s", "11_5N "); break; - case WIRELESS_AUTO: - RTW_PRINT_SEL(m, "%5s", "AUTO "); - break; case WIRELESS_11AC: RTW_PRINT_SEL(m, "%5s", "11AC "); break; @@ -7216,18 +7708,13 @@ ssize_t proc_set_tx_deauth(struct file *file, const char __user *buffer, size_t psta = rtw_get_stainfo(pstapriv, &mac_addr[index][0]); if (psta && key_type != IEEE80211W_WRONG_KEY && key_type != IEEE80211W_NO_KEY) { - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); if (rtw_is_list_empty(&psta->asoc_list) == _FALSE) { - rtw_list_delete(&psta->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif - updated |= ap_free_sta(padapter, psta, _FALSE, WLAN_REASON_PREV_AUTH_NOT_VALID, _TRUE); + rtw_stapriv_asoc_list_del(pstapriv, psta); + updated |= ap_free_sta(padapter, psta, _FALSE, 0, WLAN_REASON_PREV_AUTH_NOT_VALID, _TRUE); } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); } RTW_INFO("STA[%u]:"MAC_FMT"\n", index , MAC_ARG(&mac_addr[index][0])); @@ -7267,7 +7754,7 @@ ssize_t proc_set_tx_auth(struct file *file, const char __user *buffer, size_t co char tmp[16]; u8 mac_addr[NUM_STA][ETH_ALEN]; u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - u32 tx_auth; + u32 tx_auth = 0; u8 index; diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_dfs.c b/drivers/net/wireless/rtl8822cs/core/rtw_dfs.c new file mode 100644 index 000000000..063af3b19 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/core/rtw_dfs.c @@ -0,0 +1,1612 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#define _RTW_DFS_C_ + +#include + +bool rtw_chset_is_dfs_range(const struct rtw_chset *chset, u32 hi, u32 lo) +{ + enum band_type band = rtw_freq2band(hi); + u8 hi_ch = rtw_freq2ch(hi); + u8 lo_ch = rtw_freq2ch(lo); + int i; + + for (i = 0; i < chset->chs_len; i++){ + if (!(chset->chs[i].flags & RTW_CHF_DFS)) + continue; + if (band == chset->chs[i].band && hi_ch > chset->chs[i].ChannelNum && lo_ch < chset->chs[i].ChannelNum) + return 1; + } + + return 0; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY bool rtw_chset_is_dfs_ch(const struct rtw_chset *chset, u8 ch) +{ + int i; + + for (i = 0; i < chset->chs_len; i++){ + if (chset->chs[i].ChannelNum == ch) + return chset->chs[i].flags & RTW_CHF_DFS ? 1 : 0; + } + + return 0; +} + +RTW_FUNC_2G_5G_ONLY bool rtw_chset_is_dfs_chbw(const struct rtw_chset *chset, u8 ch, u8 bw, u8 offset) +{ + u32 hi, lo; + + if (!rtw_chbw_to_freq_range(ch, bw, offset, &hi, &lo)) + return 0; + + return rtw_chset_is_dfs_range(chset, hi, lo); +} +#endif + +bool rtw_chset_is_dfs_bch(const struct rtw_chset *chset, enum band_type band, u8 ch) +{ + int i; + + for (i = 0; i < chset->chs_len; i++){ + if (chset->chs[i].band == band && chset->chs[i].ChannelNum == ch) + return chset->chs[i].flags & RTW_CHF_DFS ? 1 : 0; + } + + return 0; +} + +bool rtw_chset_is_dfs_bchbw(const struct rtw_chset *chset, enum band_type band, u8 ch, u8 bw, u8 offset) +{ + u32 hi, lo; + + if (!rtw_bchbw_to_freq_range(band, ch, bw, offset, &hi, &lo)) + return 0; + + return rtw_chset_is_dfs_range(chset, hi, lo); +} + +#if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ +static bool rtw_chset_get_dfs_frange(const struct rtw_chset *chset + , enum band_type band, u8 ch, u8 bw, u8 offset, u32 *dfs_freq_hi, u32 *dfs_freq_lo) +{ + u32 hi, lo; + u32 freq; + int i; + + *dfs_freq_hi = *dfs_freq_lo = 0; + + if (!rtw_bchbw_to_freq_range(band, ch, bw, offset, &hi, &lo)) { + rtw_warn_on(1); + return false; + } + + for (i = 0; i < chset->chs_len; i++){ + if (!(chset->chs[i].flags & RTW_CHF_DFS)) + continue; + freq = rtw_bch2freq(chset->chs[i].band, chset->chs[i].ChannelNum); + if (!freq) { + rtw_warn_on(1); + continue; + } + if (!rtw_is_range_a_in_b(freq + 10, freq - 10, hi, lo)) + continue; + rtw_range_merge(*dfs_freq_hi, *dfs_freq_lo, freq + 10, freq - 10); + } + + return *dfs_freq_hi != 0; +} +#endif /* CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ */ + +enum rtw_dfs_regd rtw_rfctl_get_dfs_domain(struct rf_ctl_t *rfctl) +{ +#ifdef CONFIG_DFS_MASTER + return rfctl->dfs_region_domain; +#else + return RTW_DFS_REGD_NONE; +#endif +} + +bool rtw_rfctl_radar_detect_supported(struct rf_ctl_t *rfctl) +{ +#ifdef CONFIG_DFS_MASTER + enum rtw_dfs_regd domain = rtw_rfctl_get_dfs_domain(rfctl); + + return !RTW_DFS_REGD_IS_UNKNOWN(domain) + && rtw_dfs_hal_region_supported(rfctl_to_dvobj(rfctl), domain); +#else + return false; +#endif +} + +#ifdef CONFIG_DFS_MASTER +bool rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset) +{ + bool ret = false; + u8 rd_hwband; + u32 hi = 0, lo = 0; + u32 r_hi = 0, r_lo = 0; + + if (band != BAND_ON_5G || !rfctl->radar_detect_enabled) + goto exit; + + if (rtw_bchbw_to_freq_range(band, ch, bw, offset, &hi, &lo) == _FALSE) { + rtw_warn_on(1); + goto exit; + } + + rd_hwband = rfctl->radar_detect_hwband; + if (rtw_is_range_overlap(hi, lo, rfctl->radar_detect_freq_hi[rd_hwband], rfctl->radar_detect_freq_lo[rd_hwband])) + ret = true; + +exit: + return ret; +} + +bool rtw_rfctl_hwband_is_tx_blocked_by_ch_waiting(struct rf_ctl_t *rfctl, enum phl_band_idx hwband) +{ + if (hwband >= HW_BAND_MAX) + return false; + + if (IS_CH_WAITING(rfctl)) { + enum band_type band; + u8 ch, bw, offset; + + if (rtw_get_oper_bchbw_by_hwband(rfctl_to_dvobj(rfctl), hwband + , &band, &ch, &bw, &offset) != _SUCCESS) + return false; + + return rtw_rfctl_overlap_radar_detect_ch(rfctl + , band, ch, bw, offset); + } + return false; +} + +bool adapter_is_tx_blocked_by_ch_waiting(_adapter *adapter) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + struct _ADAPTER_LINK *alink = GET_PRIMARY_LINK(adapter); + + if (!alink) + return false; + + return rtw_rfctl_hwband_is_tx_blocked_by_ch_waiting(rfctl, ALINK_GET_HWBAND(alink)); +} + +bool alink_is_tx_blocked_by_ch_waiting(struct _ADAPTER_LINK *alink) +{ + _adapter *adapter = alink->adapter; + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + return rtw_rfctl_hwband_is_tx_blocked_by_ch_waiting(rfctl, ALINK_GET_HWBAND(alink)); +} + +/** + * rtw_chset_update_cac_state_of_chs - update cac_done according to the given @band, @chs, @chs_len into @chset + * @chset: the given channel set + * @band: band of setting range + * @chs: channel array of setting range + * @chs_len: channel array length + * @done: if CAC done + */ +static void rtw_chset_update_cac_state_of_chs(struct rtw_chset *chset + , u8 chs[], u8 chs_len, bool done) +{ + int i, j; + + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].band != BAND_ON_5G) + continue; + for (j = 0; j < chs_len; j++) { + if (chs[j] == 0) + continue; + if (chset->chs[i].ChannelNum == chs[j]) + chset->chs[i].cac_done = done; + } + } +} + +/** + * rtw_chset_update_cac_state_by_freq - update cac_done according to the given @hi, @lo frequency into @chset + * @chset: the given channel set + * @hi: high frequency of setting range + * @lo: low frequency of setting range + * @done: if CAC done + */ +static void rtw_chset_update_cac_state_by_freq(struct rtw_chset *chset, u32 hi, u32 lo, bool done) +{ + enum band_type band; + int i; + + band = rtw_freq2band(hi); + + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].band != band) + continue; + if (!rtw_bch2freq(band, chset->chs[i].ChannelNum)) { + rtw_warn_on(1); + continue; + } + + if (lo <= rtw_bch2freq(band, chset->chs[i].ChannelNum) + && rtw_bch2freq(band, chset->chs[i].ChannelNum) <= hi) + chset->chs[i].cac_done = done; + } +} + +static void rtw_chset_update_cac_state_by_cch(struct rtw_chset *chset, u8 cch, u8 bw, bool done) +{ + u32 hi, lo; + + if (rtw_bcchbw_to_freq_range(BAND_ON_5G, cch, bw, &hi, &lo)) + rtw_chset_update_cac_state_by_freq(chset, hi, lo, done); +} + +/** + * rtw_chset_is_frange_require_cac - check cac_done according to the given @hi, @lo frequency into @chset + * @chset: the given channel set + * @hi: high frequency of checking range + * @lo: low frequency of checking range + * return: if all channel inside range require CAC (DFS channel and not CAC done) + */ +static bool rtw_chset_is_frange_require_cac(struct rtw_chset *chset, u32 hi, u32 lo) +{ + enum band_type band; + int i; + + band = rtw_freq2band(hi); + + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].band != band) + continue; + if (!(chset->chs[i].flags & RTW_CHF_DFS)) + continue; + if (!rtw_bch2freq(band, chset->chs[i].ChannelNum)) { + rtw_warn_on(1); + continue; + } + if (lo <= rtw_bch2freq(band, chset->chs[i].ChannelNum) + && rtw_bch2freq(band, chset->chs[i].ChannelNum) <= hi + && !chset->chs[i].cac_done) + return true; + } + + return false; +} + +static bool rtw_chset_is_cch_require_cac(struct rtw_chset *chset, u8 cch, u8 bw) +{ + u32 hi, lo; + + if (rtw_bcchbw_to_freq_range(BAND_ON_5G, cch, bw, &hi, &lo)) + return rtw_chset_is_frange_require_cac(chset, hi, lo); + return false; +} + +bool rtw_chset_is_bchbw_non_ocp(const struct rtw_chset *chset, enum band_type band, u8 ch, u8 bw, u8 offset) +{ + bool ret = _FALSE; + u32 hi = 0, lo = 0; + int i; + + if (rtw_bchbw_to_freq_range(band, ch, bw, offset, &hi, &lo) == _FALSE) + goto exit; + + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].band != band) + continue; + if (!rtw_bch2freq(band, chset->chs[i].ChannelNum)) { + rtw_warn_on(1); + continue; + } + + if (!CH_IS_NON_OCP(&chset->chs[i])) + continue; + + if (lo <= rtw_bch2freq(band, chset->chs[i].ChannelNum) + && rtw_bch2freq(band, chset->chs[i].ChannelNum) <= hi + ) { + ret = _TRUE; + break; + } + } + +exit: + return ret; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY bool rtw_chset_is_chbw_non_ocp(const struct rtw_chset *chset, u8 ch, u8 bw, u8 offset) +{ + return rtw_chset_is_bchbw_non_ocp(chset, rtw_is_2g_ch(ch) ? BAND_ON_24G : BAND_ON_5G, ch, bw, offset); +} + +RTW_FUNC_2G_5G_ONLY bool rtw_chset_is_ch_non_ocp(const struct rtw_chset *chset, u8 ch) +{ + return rtw_chset_is_chbw_non_ocp(chset, ch, CHANNEL_WIDTH_20, CHAN_OFFSET_NO_EXT); +} +#endif + +bool rtw_chset_is_bch_non_ocp(const struct rtw_chset *chset, enum band_type band, u8 ch) +{ + return rtw_chset_is_bchbw_non_ocp(chset, band, ch, CHANNEL_WIDTH_20, CHAN_OFFSET_NO_EXT); +} + +static u32 rtw_chset_get_bch_non_ocp_ms(const struct rtw_chset *chset, enum band_type band, u8 ch, u8 bw, u8 offset) +{ + int ms = 0; + systime current_time; + u32 hi = 0, lo = 0; + int i; + + if (rtw_bchbw_to_freq_range(band, ch, bw, offset, &hi, &lo) == _FALSE) + goto exit; + + current_time = rtw_get_current_time(); + + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].band != band) + continue; + if (!rtw_bch2freq(band, chset->chs[i].ChannelNum)) { + rtw_warn_on(1); + continue; + } + + if (!CH_IS_NON_OCP(&chset->chs[i])) + continue; + + if (lo <= rtw_bch2freq(band, chset->chs[i].ChannelNum) + && rtw_bch2freq(band, chset->chs[i].ChannelNum) <= hi + ) { + if (rtw_systime_to_ms(chset->chs[i].non_ocp_end_time - current_time) > ms) + ms = rtw_systime_to_ms(chset->chs[i].non_ocp_end_time - current_time); + } + } + +exit: + return ms; +} + +/** + * rtw_chset_update_non_ocp_ms_by_freq - update non_ocp_end_time according to the given @hi, @lo frequency into @ch_set + * @chset: the given channel set + * @hi: high frequency on which radar is detected + * @lo: low frequency on which radar is detected + * @ms: ms to add from now to update non_ocp_end_time, ms < 0 means use NON_OCP_TIME_MS + */ +static bool rtw_chset_update_non_ocp_ms_by_freq(struct rtw_chset *chset, u32 hi, u32 lo, int ms) +{ + enum band_type band; + int i; + bool updated = 0; + + band = rtw_freq2band(hi); + + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].band != band) + continue; + if (!rtw_bch2freq(band, chset->chs[i].ChannelNum)) { + rtw_warn_on(1); + continue; + } + + if (lo <= rtw_bch2freq(band, chset->chs[i].ChannelNum) + && rtw_bch2freq(band, chset->chs[i].ChannelNum) <= hi + ) { + if (ms >= 0) + chset->chs[i].non_ocp_end_time = rtw_get_current_time() + rtw_ms_to_systime(ms); + else + chset->chs[i].non_ocp_end_time = rtw_get_current_time() + rtw_ms_to_systime(NON_OCP_TIME_MS); + if (chset->chs[i].non_ocp_end_time == RTW_NON_OCP_STOPPED) + chset->chs[i].non_ocp_end_time++; + updated = 1; + } + } + + return updated; +} + +static bool rtw_chset_update_non_ocp_ms_by_band_cch(struct rtw_chset *chset, enum band_type band, u8 cch, u8 bw, int ms) +{ + u32 hi, lo; + + if (rtw_bcchbw_to_freq_range(band, cch, bw, &hi, &lo) == _FALSE) + return _FALSE; + + return rtw_chset_update_non_ocp_ms_by_freq(chset, hi, lo, ms); +} + +static bool rtw_chset_update_non_ocp_ms_by_band(struct rtw_chset *chset, enum band_type band, u8 ch, u8 bw, u8 offset, int ms) +{ + u32 hi, lo; + + if (rtw_bchbw_to_freq_range(band, ch, bw, offset, &hi, &lo) == _FALSE) + return _FALSE; + + return rtw_chset_update_non_ocp_ms_by_freq(chset, hi, lo, ms); +} + +static bool rtw_rfctl_chset_chk_non_ocp_finish_for_bchbw(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset) +{ + struct rtw_chset *chset = &rfctl->chset; + RT_CHANNEL_INFO *chinfo; + u8 cch; + u8 *op_chs; + u8 op_ch_num; + int i; + bool ret = 0; + + cch = rtw_get_center_ch_by_band(band, ch, bw, offset); + + if (!rtw_get_op_chs_by_bcch_bw(band, cch, bw, &op_chs, &op_ch_num)) + goto exit; + + for (i = 0; i < op_ch_num; i++) { + if (0) + RTW_INFO("%u,%u,%u,%u - cch:%u, bw:%u, op_ch:%u\n", band, ch, bw, offset, cch, bw, *(op_chs + i)); + chinfo = rtw_chset_get_chinfo_by_bch(chset, band, *(op_chs + i), true); + if (!chinfo) + break; + if (CH_IS_NON_OCP_STOPPED(chinfo) || CH_IS_NON_OCP(chinfo)) + break; + } + + if (op_ch_num != 0 && i == op_ch_num) { + ret = 1; + /* set to RTW_NON_OCP_STOPPED */ + for (i = 0; i < op_ch_num; i++) { + chinfo = rtw_chset_get_chinfo_by_bch(chset, band, *(op_chs + i), true); + chinfo->non_ocp_end_time = RTW_NON_OCP_STOPPED; + } + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) /* single chset shared by all hwband */ + rtw_os_indicate_nop_finished(rfctl, i, band, cch, bw); + } + +exit: + return ret; +} + +/* called by watchdog to set RTW_NON_OCP_STOPPED and generate NON_OCP finish event */ +void rtw_rfctl_chset_chk_non_ocp_finish(struct rf_ctl_t *rfctl) +{ + struct rtw_chset *chset = &rfctl->chset; + enum band_type band; + u8 ch, bw, offset; + int i; + + bw = CHANNEL_WIDTH_160; + while (1) { + for (i = 0; i < chset->chs_len; i++) { + band = chset->chs[i].band; + ch = chset->chs[i].ChannelNum; + if (CH_IS_NON_OCP_STOPPED(&chset->chs[i])) + continue; + if (!rtw_get_offset_by_bchbw(band, ch, bw, &offset)) + continue; + + rtw_rfctl_chset_chk_non_ocp_finish_for_bchbw(rfctl, band, ch, bw, offset); + } + if (bw-- == CHANNEL_WIDTH_20) + break; + } +} + +/* +* For ioctl debug usage, will not change current CAC status +* Don't use on current operating channels +*/ +void rtw_rfctl_force_update_non_ocp_ms(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset, int ms) +{ + struct rtw_chset *chset = &rfctl->chset; + bool updated; + + if (bw == CHANNEL_WIDTH_20) + updated = rtw_chset_update_non_ocp_ms_by_band(chset + , band, ch, bw, CHAN_OFFSET_NO_EXT, ms); + else + updated = rtw_chset_update_non_ocp_ms_by_band(chset + , band, ch, bw, offset, ms); + + if (updated) { + u8 i; + u8 cch = rtw_get_center_ch_by_band(band, ch, bw, offset); + + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) + rtw_os_indicate_nop_started(rfctl, i, band, cch, bw, false); + } +} + +static u32 _rtw_get_ch_waiting_ms(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset, bool in_self_rd_range, u32 *r_non_ocp_ms, u32 *r_cac_ms) +{ + struct rtw_chset *chset = &rfctl->chset; + u32 non_ocp_ms; + u32 cac_ms; + + if (rtw_chset_is_bchbw_non_ocp(chset, band, ch, bw, offset)) + non_ocp_ms = rtw_chset_get_bch_non_ocp_ms(chset, band, ch, bw, offset); + else + non_ocp_ms = 0; + + if (!rtw_chset_is_dfs_bchbw(chset, band, ch, bw, offset)) + cac_ms = 0; + else if (in_self_rd_range && !non_ocp_ms) { + if (IS_CH_WAITING(rfctl)) + cac_ms = rtw_systime_to_ms(rfctl->cac_end_time - rtw_get_current_time()); + else + cac_ms = 0; + } else if (rtw_is_long_cac_bch(band, ch, bw, offset, rtw_rfctl_get_dfs_domain(rfctl))) + cac_ms = CAC_TIME_CE_MS; + else + cac_ms = CAC_TIME_MS; + + if (r_non_ocp_ms) + *r_non_ocp_ms = non_ocp_ms; + if (r_cac_ms) + *r_cac_ms = cac_ms; + + return non_ocp_ms + cac_ms; +} + +u32 rtw_get_ch_waiting_ms(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset, u32 *r_non_ocp_ms, u32 *r_cac_ms) +{ + bool in_self_rd_range = false; + + if (rfctl->radar_detect_enabled) { + u32 hi, lo; + u8 rd_hwband = rfctl->radar_detect_hwband; + + if (rtw_chset_get_dfs_frange(&rfctl->chset, band, ch, bw, offset, &hi, &lo) + && rtw_is_range_a_in_b(hi, lo, rfctl->radar_detect_freq_hi[rd_hwband], rfctl->radar_detect_freq_lo[rd_hwband])) + in_self_rd_range = 1; + } + + return _rtw_get_ch_waiting_ms(rfctl, band, ch, bw, offset, in_self_rd_range, r_non_ocp_ms, r_cac_ms); +} + +static void rtw_reset_cac(struct rf_ctl_t *rfctl, u8 op_ch, u8 op_bw, u8 op_offset) +{ +#define RD_CONFIG_INT_MS 2000 + u32 non_ocp_ms; + u32 cac_ms; + u32 rd_ready_ms = 0; + + _rtw_get_ch_waiting_ms(rfctl, BAND_ON_5G, op_ch, op_bw, op_offset, false + , &non_ocp_ms, &cac_ms); + if (non_ocp_ms < RD_CONFIG_INT_MS) + rd_ready_ms = RD_CONFIG_INT_MS - non_ocp_ms; + + rfctl->non_ocp_finished = non_ocp_ms ? false : true; + rfctl->cac_start_time = rtw_get_current_time() + rtw_ms_to_systime(non_ocp_ms); + rfctl->cac_end_time = rfctl->cac_start_time + rtw_ms_to_systime(rd_ready_ms + cac_ms); + + /* skip special value */ + if (rfctl->cac_start_time == RTW_CAC_STOPPED) { + rfctl->cac_start_time++; + rfctl->cac_end_time++; + } + if (rfctl->cac_end_time == RTW_CAC_STOPPED) + rfctl->cac_end_time++; +} + +u32 rtw_force_stop_cac(struct rf_ctl_t *rfctl, u32 timeout_ms) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + systime start; + u32 pass_ms; + + start = rtw_get_current_time(); + + rfctl->cac_force_stop = 1; + + while (rtw_get_passing_time_ms(start) <= timeout_ms + && IS_UNDER_CAC(rfctl) + ) { + if (dev_is_surprise_removed(dvobj) || dev_is_drv_stopped(dvobj)) + break; + rtw_msleep_os(20); + } + + if (IS_UNDER_CAC(rfctl)) { + if (!dev_is_surprise_removed(dvobj) && !dev_is_drv_stopped(dvobj)) + RTW_INFO("%s waiting for cac stop timeout!\n", __func__); + } + + rfctl->cac_force_stop = 0; + + pass_ms = rtw_get_passing_time_ms(start); + + return pass_ms; +} + +u8 rtw_dfs_rd_hdl(struct dvobj_priv *dvobj, enum phl_band_idx hwband, u8 radar_cch, enum channel_width radar_bw) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + bool detected; + + if (!rfctl->radar_detect_enabled || rfctl->radar_detect_hwband != hwband) + goto exit; + + if (IS_CH_WAITING(rfctl) && !IS_UNDER_CAC(rfctl)) { + /* non_ocp, ignore radar detect */ + goto cac_status_chk; + } else if (IS_UNDER_CAC(rfctl) && !rfctl->non_ocp_finished) { + /* from NON_OCP to CAC, indicate CAC started event */ + rtw_os_indicate_cac_started(rfctl, hwband, 0xFF + , rfctl->radar_detect_cch[hwband], rfctl->radar_detect_bw[hwband]); + rfctl->non_ocp_finished = true; + } + + detected = (radar_cch > 0 && radar_bw != CHANNEL_WIDTH_MAX) ? true : false; + if (!rfctl->dbg_dfs_fake_radar_detect_cnt && !detected) + goto cac_status_chk; + + if (!rfctl->dbg_dfs_fake_radar_detect_cnt + && rfctl->dbg_dfs_radar_detect_trigger_non + ) { + /* radar detect debug mode, trigger no mlme flow */ + RTW_INFO(FUNC_HWBAND_FMT" radar detected on test mode, trigger no mlme flow\n", FUNC_HWBAND_ARG(hwband)); + goto cac_status_chk; + } + + if (rfctl->dbg_dfs_fake_radar_detect_cnt != 0) { + RTW_INFO(FUNC_HWBAND_FMT" fake radar detected, cnt:%d\n", FUNC_HWBAND_ARG(hwband) + , rfctl->dbg_dfs_fake_radar_detect_cnt); + rfctl->dbg_dfs_fake_radar_detect_cnt--; + + /* TODO: fack radar detected with specific range */ + radar_cch = rfctl->radar_detect_cch[hwband]; + radar_bw = rfctl->radar_detect_bw[hwband]; + + } else + RTW_INFO(FUNC_HWBAND_FMT" radar detected\n", FUNC_HWBAND_ARG(hwband)); + + rfctl->radar_detected = 1; + + rtw_chset_update_non_ocp_ms_by_band_cch(&rfctl->chset, BAND_ON_5G + , radar_cch, radar_bw, -1); + + rtw_os_indicate_radar_detected(rfctl, hwband, radar_cch, radar_bw); + rtw_os_indicate_nop_started(rfctl, hwband, BAND_ON_5G, radar_cch, radar_bw, true); + + rtw_dfs_ch_switch_hdl(dvobj); + + if (rfctl->radar_detect_enabled) + goto set_timer; + goto exit; + +cac_status_chk: + + if (!IS_CAC_STOPPED(rfctl) + && ((IS_UNDER_CAC(rfctl) && rfctl->cac_force_stop) + || !IS_CH_WAITING(rfctl) + ) + ) { + _adapter *m_iface; + + rfctl->cac_start_time = rfctl->cac_end_time = RTW_CAC_STOPPED; + rtw_chset_update_cac_state_by_cch(&rfctl->chset + , rfctl->radar_detect_cch[hwband], rfctl->radar_detect_bw[hwband], true); + rtw_dfs_hal_set_cac_status(dvobj, hwband, false); + + m_iface = rtw_mi_get_ap_mesh_iface_by_hwband(dvobj, hwband); + if (m_iface) { + if (!rtw_mi_check_fwstate_by_hwband(dvobj, hwband, WIFI_UNDER_LINKING|WIFI_UNDER_SURVEY)) { + struct _ADAPTER_LINK *alink = rtw_get_adapter_link_by_hwband(m_iface, hwband); + u8 do_rfk = _TRUE; + enum band_type u_band; + u8 u_ch, u_bw, u_offset; + + if (rtw_mi_get_bch_setting_union_by_hwband(dvobj, hwband, &u_band, &u_ch, &u_bw, &u_offset)) + set_bch_bwmode(m_iface, alink, u_band, u_ch, u_offset, u_bw, do_rfk); + else + rtw_warn_on(1); + } + } else + RTW_ERR(FUNC_HWBAND_FMT" can't get ap/mesh iface\n", FUNC_HWBAND_ARG(hwband)); + + rtw_os_indicate_cac_finished(rfctl, hwband, 0xFF + , rfctl->radar_detect_cch[hwband], rfctl->radar_detect_bw[hwband]); + } + +set_timer: + _set_timer(&rfctl->radar_detect_timer + , rtw_dfs_hal_radar_detect_polling_int_ms(dvobj)); + +exit: + return H2C_SUCCESS; +} + +static u8 rtw_dfs_rd_cmd(struct dvobj_priv *dvobj, enum phl_band_idx hwband) +{ + struct cmd_obj *cmdobj; + struct drvextra_cmd_parm *parm; + _adapter *adapter = dvobj_get_primary_adapter(dvobj); + struct cmd_priv *cmdpriv = &adapter->cmdpriv; + u8 res = _FAIL; + + cmdobj = rtw_zmalloc(sizeof(struct cmd_obj)); + if (cmdobj == NULL) + goto exit; + + parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if (parm == NULL) { + rtw_mfree(cmdobj, sizeof(struct cmd_obj)); + goto exit; + } + + parm->ec_id = DFS_RADAR_DETECT_WK_CID; + parm->type = hwband; + parm->size = 0; + parm->pbuf = NULL; + + init_h2fwcmd_w_parm_no_rsp(cmdobj, parm, CMD_SET_DRV_EXTRA); + CMD_OBJ_SET_HWBAND(cmdobj, hwband); + res = rtw_enqueue_cmd(cmdpriv, cmdobj); + +exit: + return res; +} + +static void rtw_dfs_rd_timer_hdl(void *ctx) +{ + struct rf_ctl_t *rfctl = (struct rf_ctl_t *)ctx; + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + + rtw_dfs_rd_cmd(dvobj, rfctl->radar_detect_hwband); +} +#endif /* CONFIG_DFS_MASTER */ + +#if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ +static void rtw_dfs_update_rd_range_status(struct rf_ctl_t *rfctl, u8 band_idx + , u8 op_ch, enum channel_width op_bw, enum chan_offset op_offset, u32 rd_freq_hi, u32 rd_freq_lo, bool by_others) +{ +#define RD_RANGE_OPCH_NUM_MAX (160 / 20) +#ifdef CONFIG_DFS_MASTER + bool new_self_rd_ch = false; + bool cover_non_ocp = op_ch && rtw_chset_is_bchbw_non_ocp(&rfctl->chset, BAND_ON_5G, op_ch, op_bw, op_offset); +#endif + u8 cch = 0; + enum channel_width bw = CHANNEL_WIDTH_MAX; + +#ifndef CONFIG_DFS_MASTER + if (rd_freq_hi && !by_others) { + rtw_warn_on(1); + rd_freq_hi = 0; + } +#endif + + if (rd_freq_hi) { + cch = rtw_freq2ch((rd_freq_hi + rd_freq_lo) / 2); + bw = rtw_frange_to_bw(rd_freq_hi, rd_freq_lo); + rtw_warn_on(cch == 0); + rtw_warn_on(bw == CHANNEL_WIDTH_MAX); + } + +#ifdef CONFIG_DFS_MASTER + if (rfctl->radar_detect_cch[band_idx] != cch + || rfctl->radar_detect_bw[band_idx] != bw + ) { + /* coverage range changed */ + u8 *op_chs; + u8 op_ch_num; + u8 rd_cch; + enum channel_width rd_bw; + u8 i, j, k; + + if (rfctl->radar_detect_cch[band_idx]) { + u8 clr_chs[RD_RANGE_OPCH_NUM_MAX]; + + /* init clr_chs from original coverage of this hwband */ + if (!rtw_get_op_chs_by_bcch_bw(BAND_ON_5G + , rfctl->radar_detect_cch[band_idx], rfctl->radar_detect_bw[band_idx], &op_chs, &op_ch_num) + ) { + RTW_WARN(FUNC_HWBAND_FMT" rtw_get_op_chs_by_bcch_bw() fail on cch:%u bw:%u\n", FUNC_HWBAND_ARG(band_idx) + , rfctl->radar_detect_cch[band_idx], rfctl->radar_detect_bw[band_idx]); + rtw_warn_on(1); + goto handle_add_chs; + } + _rtw_memset(clr_chs, 0, RD_RANGE_OPCH_NUM_MAX); + for (i = 0; i < op_ch_num; i++) + clr_chs[i] = op_chs[i]; + + /* remove op chs of new coverages from clr_chs */ + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) { + if (i == band_idx && cch) { + rd_cch = cch; + rd_bw = bw; + } else if (i != band_idx && rfctl->radar_detect_cch[i]) { + rd_cch = rfctl->radar_detect_cch[i]; + rd_bw = rfctl->radar_detect_bw[i]; + } else + continue; + + if (!rtw_get_op_chs_by_bcch_bw(BAND_ON_5G, rd_cch, rd_bw, &op_chs, &op_ch_num)) { + RTW_WARN(FUNC_HWBAND_FMT" rtw_get_op_chs_by_bcch_bw() fail on cch:%u bw:%u\n" + , FUNC_HWBAND_ARG(i), rd_cch, rd_bw); + rtw_warn_on(1); + continue; + } + for (j = 0; j < RD_RANGE_OPCH_NUM_MAX; j++) + for (k = 0; k < op_ch_num; k++) + if (clr_chs[j] == op_chs[k]) + clr_chs[j] = 0; + } + + /* clear CAC_DONE of clr_chs */ + rtw_chset_update_cac_state_of_chs(&rfctl->chset, clr_chs, RD_RANGE_OPCH_NUM_MAX, false); + } + +handle_add_chs: + if (cch && !by_others && !cover_non_ocp) { + u8 add_chs[RD_RANGE_OPCH_NUM_MAX]; + + /* init add_chs from new coverage of this hwband */ + if (!rtw_get_op_chs_by_bcch_bw(BAND_ON_5G, cch, bw, &op_chs, &op_ch_num)) { + RTW_WARN(FUNC_HWBAND_FMT" rtw_get_op_chs_by_bcch_bw() fail on cch:%u bw:%u\n" + , FUNC_HWBAND_ARG(band_idx), cch, bw); + rtw_warn_on(1); + goto update_ch_cac; + } + _rtw_memset(add_chs, 0, RD_RANGE_OPCH_NUM_MAX); + for (i = 0; i < op_ch_num; i++) + add_chs[i] = op_chs[i]; + + /* remove op chs of original coverages from add_chs */ + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) { + if (rfctl->radar_detect_cch[i]) { + rd_cch = rfctl->radar_detect_cch[i]; + rd_bw = rfctl->radar_detect_bw[i]; + } else + continue; + + if (!rtw_get_op_chs_by_bcch_bw(BAND_ON_5G, rd_cch, rd_bw, &op_chs, &op_ch_num)) { + RTW_WARN(FUNC_HWBAND_FMT" rtw_get_op_chs_by_bcch_bw() fail on cch:%u bw:%u\n" + , FUNC_HWBAND_ARG(i), rd_cch, rd_bw); + rtw_warn_on(1); + continue; + } + for (j = 0; j < RD_RANGE_OPCH_NUM_MAX; j++) + for (k = 0; k < op_ch_num; k++) + if (add_chs[j] == op_chs[k]) + add_chs[j] = 0; + } + + for (i = 0; i < RD_RANGE_OPCH_NUM_MAX; i++) + if (add_chs[i]) + break; + if (i < RD_RANGE_OPCH_NUM_MAX) + new_self_rd_ch = true; + } + } + +update_ch_cac: + if (cch && by_others) { + /* new coverage of this hwband is detected by others, set CAC_DONE directly */ + rtw_chset_update_cac_state_by_cch(&rfctl->chset, cch, bw, true); + } + + + /* hwband CAC status update */ + if (cover_non_ocp) { + RTW_INFO(FUNC_HWBAND_FMT" cover NON_OCP channel\n", FUNC_HWBAND_ARG(band_idx)); + if (IS_UNDER_CAC(rfctl)) { + RTW_INFO(FUNC_HWBAND_FMT" CAC abort\n", FUNC_HWBAND_ARG(band_idx)); + rtw_os_indicate_cac_aborted(rfctl, band_idx, 0xFF + , rfctl->radar_detect_cch[band_idx], rfctl->radar_detect_bw[band_idx]); + } + rtw_reset_cac(rfctl, op_ch, op_bw, op_offset); + + } else if (new_self_rd_ch) { + /* if having new rd chs and not detected by others, reset CAC of detecting hwband */ + RTW_INFO(FUNC_HWBAND_FMT" have new detect range\n", FUNC_HWBAND_ARG(band_idx)); + rtw_reset_cac(rfctl, op_ch, op_bw, op_offset); + rtw_os_indicate_cac_started(rfctl, band_idx, 0xFF, cch, bw); + + } else { + u8 rd_cch; + enum channel_width rd_bw; + u8 i; + bool require_cac[HW_BAND_MAX]; + + if (IS_UNDER_CAC(rfctl) && cch == 0 && rfctl->radar_detect_cch[band_idx] + && !rfctl->radar_detect_by_others[band_idx] + ) { + /* from detecting by self to no detecting (by self/others), CAC abort */ + RTW_INFO(FUNC_HWBAND_FMT" disable detect, CAC abort\n", FUNC_HWBAND_ARG(band_idx)); + rtw_os_indicate_cac_aborted(rfctl, band_idx, 0xFF + , rfctl->radar_detect_cch[band_idx], rfctl->radar_detect_bw[band_idx]); + } + + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) { + if (i == band_idx && cch) { + rd_cch = cch; + rd_bw = bw; + } else if (i != band_idx && rfctl->radar_detect_cch[i]) { + rd_cch = rfctl->radar_detect_cch[i]; + rd_bw = rfctl->radar_detect_bw[i]; + } else { + require_cac[i] = false; + continue; + } + + require_cac[i] = rtw_chset_is_cch_require_cac(&rfctl->chset, rd_cch, rd_bw); + if (!require_cac[i]) { + if (IS_UNDER_CAC(rfctl)) + RTW_INFO(FUNC_HWBAND_FMT" detect range already CAC done\n", FUNC_HWBAND_ARG(i)); + /* if new coverage of detecting hwband CAC_DONE, force CAC finish */ + rtw_os_force_cac_finished(rfctl, i, 0xFF, rd_cch, rd_bw); + } + } + + if (!IS_CAC_STOPPED(rfctl)) { + /* set CAC stop if no hwband needed */ + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) + if (require_cac[i]) + break; + if (i >= HW_BAND_MAX) + rfctl->cac_start_time = rfctl->cac_end_time = RTW_CAC_STOPPED; + } + } +#endif /* CONFIG_DFS_MASTER */ + + rfctl->radar_detect_by_others[band_idx] = by_others; + rfctl->radar_detect_cch[band_idx] = cch; + rfctl->radar_detect_bw[band_idx] = bw; + rfctl->radar_detect_freq_hi[band_idx] = rd_freq_hi; + rfctl->radar_detect_freq_lo[band_idx] = rd_freq_lo; +} + +static void rtw_dfs_rd_enable(struct rf_ctl_t *rfctl, u8 band_idx, u8 op_ch, u8 op_bw, u8 op_offset + , u32 rd_freq_hi, u32 rd_freq_lo, bool by_others) +{ +#ifdef CONFIG_DFS_MASTER + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + + RTW_INFO(FUNC_HWBAND_FMT" on %u,%u,%u\n", FUNC_HWBAND_ARG(band_idx), op_ch, op_bw, op_offset); + + if (rfctl->radar_detect_enabled && rfctl->radar_detect_hwband != band_idx) { + RTW_WARN(FUNC_HWBAND_FMT" radar_detect has been enabled for "HWBAND_FMT"\n" + , FUNC_HWBAND_ARG(band_idx), HWBAND_ARG(rfctl->radar_detect_hwband)); + rtw_warn_on(1); + return; + } + + if (!rfctl->radar_detect_enabled) { + RTW_INFO(FUNC_HWBAND_FMT" set radar_detect_enabled\n", FUNC_HWBAND_ARG(band_idx)); + rfctl->radar_detect_hwband = band_idx; + rfctl->radar_detect_enabled = 1; + #ifdef CONFIG_LPS + LPS_Leave(dvobj_get_primary_adapter(dvobj), "RADAR_DETECT_EN"); + #endif + _set_timer(&rfctl->radar_detect_timer + , rtw_dfs_hal_radar_detect_polling_int_ms(dvobj)); + } + rfctl->radar_detected = 0; + + rtw_dfs_update_rd_range_status(rfctl, band_idx, op_ch, op_bw, op_offset + , rd_freq_hi, rd_freq_lo, by_others); + + rtw_dfs_hal_update_region(dvobj, band_idx, rtw_rfctl_get_dfs_domain(rfctl)); + rtw_dfs_hal_radar_detect_enable(dvobj, band_idx, IS_CH_WAITING(rfctl), rd_freq_hi, rd_freq_lo); +#else + rtw_warn_on(1); +#endif +} + +static void rtw_dfs_rd_disable(struct rf_ctl_t *rfctl, u8 band_idx, u8 op_ch, u8 op_bw, u8 op_offset + , u32 rd_freq_hi, u32 rd_freq_lo, bool by_others) +{ +#ifdef CONFIG_DFS_MASTER + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + + if (rfctl->radar_detect_hwband == band_idx) { + if (rfctl->radar_detect_enabled) { + RTW_INFO(FUNC_HWBAND_FMT" clear radar_detect_enabled\n", FUNC_HWBAND_ARG(band_idx)); + rfctl->radar_detect_enabled = 0; + rfctl->radar_detected = 0; + _cancel_timer_ex(&rfctl->radar_detect_timer); + } + + rtw_dfs_hal_radar_detect_disable(dvobj, band_idx); + } +#endif + + if (by_others) { + rtw_dfs_update_rd_range_status(rfctl, band_idx, op_ch, op_bw, op_offset + , rd_freq_hi, rd_freq_lo, true); + } else + rtw_dfs_update_rd_range_status(rfctl, band_idx, 0, 0, 0, 0, 0, false); +} + +static bool _rtw_dfs_rd_en_decision(struct rf_ctl_t *rfctl, struct mi_state *mstate + , enum band_type u_band, u8 u_ch, enum channel_width u_bw, enum chan_offset u_offset + , u32 *rd_freq_hi, u32 *rd_freq_lo, bool *lgd_sta_in_dfs) +{ + bool overlap_dfs = u_ch ? rtw_chset_get_dfs_frange(&rfctl->chset, u_band, u_ch, u_bw, u_offset, rd_freq_hi, rd_freq_lo) : false; + bool needed = false; + + if (MSTATE_STA_LG_NUM(mstate) > 0) { + /* STA mode is linking */ + if (overlap_dfs) + *lgd_sta_in_dfs = true; + goto exit; + } + + if (MSTATE_STA_LD_NUM(mstate) > 0) { + if (overlap_dfs) { + /* + * if operate as slave w/o radar detect, + * rely on AP on which STA mode connects + */ + if (IS_DFS_SLAVE_WITH_RD(rfctl) && rtw_rfctl_radar_detect_supported(rfctl)) + needed = true; + *lgd_sta_in_dfs = true; + } + goto exit; + } + + if (!MSTATE_AP_NUM(mstate) && !MSTATE_MESH_NUM(mstate)) { + /* No working AP/Mesh mode */ + goto exit; + } + + if (!overlap_dfs) + goto exit; + + needed = true; + +exit: + return needed; +} + +static void rtw_dfs_rd_en_decision(struct dvobj_priv *dvobj, enum phl_band_idx hwband + , _adapter *adapter, struct _ADAPTER_LINK *alink, u8 mlme_act, u8 excl_ifbmp) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + u8 band_idx; + + for (band_idx = HW_BAND_0; band_idx < HW_BAND_MAX; band_idx++) { + struct mi_state mstate; + u8 ifbmp; + enum band_type u_band; + u8 u_ch, u_bw, u_offset; + u32 rd_freq_hi, rd_freq_lo; + bool lgd_sta_in_dfs; + bool needed; + + /* hwband < HW_BAND_MAX means specific hwband */ + if (hwband < HW_BAND_MAX && hwband != band_idx) + continue; + + /* alink != NULL means specific hwband */ + if (alink && band_idx != ALINK_GET_HWBAND(alink)) + continue; + + rd_freq_hi = rd_freq_lo = 0; + lgd_sta_in_dfs = false; + needed = false; + + if (mlme_act == MLME_ACTION_NONE + || mlme_act == MLME_OPCH_SWITCH + ) { + ifbmp = ~excl_ifbmp; + rtw_mi_status_by_hwband_ifbmp(dvobj, band_idx, ifbmp, &mstate); + rtw_mi_get_bch_setting_union_by_hwband_ifbmp(dvobj, band_idx, ifbmp, &u_band, &u_ch, &u_bw, &u_offset); + + } else { + struct _ADAPTER_LINK *alink_by_hwband; + + if (alink) + alink_by_hwband = alink; + else + alink_by_hwband = rtw_get_adapter_link_by_hwband(adapter, band_idx); + + ifbmp = ~excl_ifbmp & ~BIT(adapter->iface_id); + rtw_mi_status_by_hwband_ifbmp(dvobj, band_idx, ifbmp, &mstate); + rtw_mi_get_bch_setting_union_by_hwband_ifbmp(dvobj, band_idx, ifbmp, &u_band, &u_ch, &u_bw, &u_offset); + + switch (mlme_act) { + case MLME_STA_CONNECTING: + MSTATE_STA_LG_NUM(&mstate)++; + break; + case MLME_STA_CONNECTED: + MSTATE_STA_LD_NUM(&mstate)++; + break; + case MLME_STA_DISCONNECTED: + break; + #ifdef CONFIG_AP_MODE + case MLME_AP_STARTED: + MSTATE_AP_NUM(&mstate)++; + break; + case MLME_AP_STOPPED: + break; + #endif + #ifdef CONFIG_RTW_MESH + case MLME_MESH_STARTED: + MSTATE_MESH_NUM(&mstate)++; + break; + case MLME_MESH_STOPPED: + break; + #endif + default: + rtw_warn_on(1); + break; + } + + if (alink_by_hwband) { + enum band_type band = ALINK_GET_BAND(alink_by_hwband); + u8 ch = ALINK_GET_CH(alink_by_hwband); + u8 bw = ALINK_GET_BW(alink_by_hwband); + u8 offset = ALINK_GET_OFFSET(alink_by_hwband); + + if (u_ch) { + if (!MLME_IS_OPCH_SW(adapter) && CHK_MLME_STATE(adapter, WIFI_UNDER_LINKING | WIFI_ASOC_STATE)) { + if (!rtw_is_bchbw_grouped(band, ch, bw, offset, u_band, u_ch, u_bw, u_offset)) { + RTW_WARN(FUNC_HWBAND_FMT" "ADPT_FMT" can't sync %u,%u,%u,%u with %u,%u,%u,%u\n" + , FUNC_HWBAND_ARG(band_idx), ADPT_ARG(adapter) + , band, ch, bw, offset, u_band, u_ch, u_bw, u_offset); + goto apply; + } + + rtw_sync_bchbw(&band, &ch, &bw, &offset, &u_band, &u_ch, &u_bw, &u_offset); + } + } else { + u_band = band; + u_ch = ch; + u_bw = bw; + u_offset = offset; + } + } + } + + needed = _rtw_dfs_rd_en_decision(rfctl, &mstate, u_band, u_ch, u_bw, u_offset + , &rd_freq_hi, &rd_freq_lo, &lgd_sta_in_dfs); + +apply: + if (adapter) + RTW_INFO(FUNC_HWBAND_FMT" needed:%d, lgd_sta_in_dfs:%d, "ADPT_FMT" mlme_act:%u, excl_ifbmp:0x%02x\n" + , FUNC_HWBAND_ARG(band_idx), needed, lgd_sta_in_dfs, ADPT_ARG(adapter), mlme_act, excl_ifbmp); + else + RTW_INFO(FUNC_HWBAND_FMT" needed:%d, lgd_sta_in_dfs:%d, excl_ifbmp:0x%02x\n" + , FUNC_HWBAND_ARG(band_idx), needed, lgd_sta_in_dfs, excl_ifbmp); + + RTW_INFO(FUNC_HWBAND_FMT" ld_sta:%u, lg_sta:%u, ap:%u, mesh:%u, %u,%u,%u,%u, rd_freq:%u~%u\n" + , FUNC_HWBAND_ARG(band_idx), MSTATE_STA_LD_NUM(&mstate), MSTATE_STA_LG_NUM(&mstate) + , MSTATE_AP_NUM(&mstate), MSTATE_MESH_NUM(&mstate) + , u_band, u_ch, u_bw, u_offset, rd_freq_lo, rd_freq_hi); + + if (needed && rtw_rfctl_radar_detect_supported(rfctl)) + rtw_dfs_rd_enable(rfctl, band_idx, u_ch, u_bw, u_offset, rd_freq_hi, rd_freq_lo, lgd_sta_in_dfs); + else { + rtw_dfs_rd_disable(rfctl, band_idx, u_ch, u_bw, u_offset, rd_freq_hi, rd_freq_lo, lgd_sta_in_dfs); + if (needed) { + _adapter *m_iface = rtw_mi_get_ap_mesh_iface_by_hwband(dvobj, band_idx); + u8 ifbmp_m = rtw_mi_get_ap_mesh_ifbmp_by_hwband(dvobj, band_idx); + u8 ifbmp_s = rtw_mi_get_lgd_sta_ifbmp_by_hwband(dvobj, band_idx); + + RTW_INFO(FUNC_HWBAND_FMT" radart detect for this region not supported\n", FUNC_HWBAND_ARG(band_idx)); + + if (!m_iface) { + rtw_warn_on(1); + return; + } + + if (0) { + /* TODO: do CSA if supported */ + } else { + rtw_change_bss_bchbw_cmd(m_iface, RTW_CMDF_DIRECTLY + , ifbmp_m, ifbmp_s, REQ_BAND_NONE, REQ_CH_NONE, REQ_BW_ORI, REQ_OFFSET_NONE); + } + } + } + } +} + +void rtw_dfs_rd_en_dec_on_mlme_act(_adapter *adapter, struct _ADAPTER_LINK *alink, u8 mlme_act, u8 excl_ifbmp) +{ + if (adapter && mlme_act != MLME_ACTION_NONE) + rtw_dfs_rd_en_decision(adapter_to_dvobj(adapter), HW_BAND_MAX, adapter, alink, mlme_act, excl_ifbmp); + + rtw_warn_on(!adapter); + rtw_warn_on(mlme_act == MLME_ACTION_NONE); +} + +void dump_radar_detect_status(void *sel, struct rf_ctl_t *rfctl, const char *title) +{ + u8 hwband; + +#ifdef CONFIG_DFS_MASTER + for (hwband = HW_BAND_0; hwband < HW_BAND_MAX; hwband++) { + if (rfctl->radar_detect_enabled && hwband == rfctl->radar_detect_hwband) + break; + } +#else + hwband = HW_BAND_MAX; +#endif + if (hwband >= HW_BAND_MAX) { + for (hwband = HW_BAND_0; hwband < HW_BAND_MAX; hwband++) + if (rfctl->radar_detect_by_others[hwband]) + break; + } + + if (hwband < HW_BAND_MAX) { /* by self or only by others */ + RTW_PRINT_SEL(sel, "%s cch %u-%s" + , title + , rfctl->radar_detect_cch[hwband] + , ch_width_str(rfctl->radar_detect_bw[hwband]) + ); + +#ifdef CONFIG_DFS_MASTER + if (rfctl->radar_detect_enabled) { + u32 non_ocp_ms = 0; + u32 cac_ms = 0; + u8 dfs_domain = rtw_rfctl_get_dfs_domain(rfctl); + + _RTW_PRINT_SEL(sel, ", domain:%s(%u)", rtw_dfs_regd_str(dfs_domain), dfs_domain); + + if (IS_CH_WAITING(rfctl)) { + if (!IS_UNDER_CAC(rfctl)) { + non_ocp_ms = rtw_systime_to_ms(rfctl->cac_start_time - rtw_get_current_time()); + cac_ms = rtw_systime_to_ms(rfctl->cac_end_time - rfctl->cac_start_time); + } else + cac_ms = rtw_systime_to_ms(rfctl->cac_end_time - rtw_get_current_time()); + } + + if (non_ocp_ms) + _RTW_PRINT_SEL(sel, ", non_ocp:%d", non_ocp_ms); + if (cac_ms) + _RTW_PRINT_SEL(sel, ", cac:%d", cac_ms); + } else +#endif + _RTW_PRINT_SEL(sel, ", by AP of STA link"); + + _RTW_PRINT_SEL(sel, "\n"); + } +} +#endif /* CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ */ + +#ifdef CONFIG_DFS_MASTER +void rtw_dfs_rd_en_dec_update(struct dvobj_priv *dvobj, enum phl_band_idx hwband) +{ + rtw_dfs_rd_en_decision(dvobj, hwband, NULL, NULL, MLME_ACTION_NONE, 0); +} + +u8 rtw_dfs_rd_en_decision_cmd(struct dvobj_priv *dvobj, enum phl_band_idx hwband) +{ + struct cmd_obj *cmdobj; + struct drvextra_cmd_parm *parm; + _adapter *adapter = dvobj_get_primary_adapter(dvobj); + struct cmd_priv *cmdpriv = &adapter->cmdpriv; + u8 res = _FAIL; + + cmdobj = rtw_zmalloc(sizeof(struct cmd_obj)); + if (cmdobj == NULL) + goto exit; + + parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if (parm == NULL) { + rtw_mfree(cmdobj, sizeof(struct cmd_obj)); + goto exit; + } + + parm->ec_id = DFS_RADAR_DETECT_EN_DEC_WK_CID; + parm->type = hwband; + parm->size = 0; + parm->pbuf = NULL; + + init_h2fwcmd_w_parm_no_rsp(cmdobj, parm, CMD_SET_DRV_EXTRA); + CMD_OBJ_SET_HWBAND(cmdobj, hwband); + res = rtw_enqueue_cmd(cmdpriv, cmdobj); + +exit: + return res; +} + +void rtw_indicate_cac_state_on_bss_start(_adapter *adapter) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + if (IS_UNDER_CAC(rfctl)) { + u8 rd_hwband = rfctl->radar_detect_hwband; + + if (rtw_iface_is_operate_at_hwband(adapter, rd_hwband)) + rtw_os_indicate_cac_started(rfctl, rd_hwband, BIT(adapter->iface_id) + , rfctl->radar_detect_cch[rd_hwband], rfctl->radar_detect_bw[rd_hwband]); + } else { + u8 band_idx; + + for (band_idx = HW_BAND_0; band_idx < HW_BAND_MAX; band_idx++) { + if (!rfctl->radar_detect_by_others[band_idx]) + continue; + if (!rtw_iface_is_operate_at_hwband(adapter, band_idx)) + continue; + rtw_os_force_cac_finished(rfctl, band_idx, BIT(adapter->iface_id) + , rfctl->radar_detect_cch[band_idx], rfctl->radar_detect_bw[band_idx]); + } + } +} + +void rtw_indicate_cac_state_on_bss_stop(_adapter *adapter) +{ + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + if (IS_UNDER_CAC(rfctl)) { + u8 rd_hwband = rfctl->radar_detect_hwband; + + if (rtw_iface_is_operate_at_hwband(adapter, rd_hwband)) + rtw_os_indicate_cac_aborted(rfctl, rd_hwband, BIT(adapter->iface_id) + , rfctl->radar_detect_cch[rd_hwband], rfctl->radar_detect_bw[rd_hwband]); + } +} +#endif /* CONFIG_DFS_MASTER */ + +#ifdef CONFIG_RTW_ACS +#include +#endif + +/* choose channel with shortest waiting (non ocp + cac) time */ +static bool rtw_choose_shortest_waiting_ch(struct rf_ctl_t *rfctl + , enum band_type sel_band, u8 sel_ch, u8 max_bw, enum chan_offset sel_offset + , enum band_type *dec_band, u8 *dec_ch, u8 *dec_bw, u8 *dec_offset + , u8 e_flags, u8 d_flags, enum band_type cur_band, u8 cur_ch, enum chan_offset cur_offset + , bool by_int_info, u8 mesh_only) +{ +#ifndef DBG_CHOOSE_SHORTEST_WAITING_CH +#define DBG_CHOOSE_SHORTEST_WAITING_CH 0 +#endif + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct rtw_chset *chset = &rfctl->chset; +#ifdef CONFIG_RTW_ACS + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); +#endif + struct registry_priv *regsty = dvobj_to_regsty(dvobj); + enum band_type band; + u8 ch, bw, offset, r_offset[2], r_offset_num; + enum band_type band_c = BAND_MAX; + u8 ch_c = 0, bw_c = 0, offset_c = 0; + int i, j; + u32 min_waiting_ms = 0; + u16 int_factor_c = 0; + + if (!dec_ch || !dec_bw || !dec_offset) { + rtw_warn_on(1); + return _FALSE; + } + + RTW_INFO("%s: sel_ch:%s-%u(%u) max_bw:%u e_flags:0x%02x d_flags:0x%02x cur_ch:%s-%u(%u) within_sb:%d%s%s\n" + , __func__, band_str(sel_band), sel_ch, sel_offset, max_bw, e_flags, d_flags + , band_str(cur_band), cur_ch, cur_offset, rfctl->ch_sel_within_same_band + , by_int_info ? " int" : "", mesh_only ? " mesh_only" : ""); + + /* full search and narrow bw judegement first to avoid potetial judegement timing issue */ + for (bw = CHANNEL_WIDTH_20; bw <= max_bw; bw++) { + if (!hal_is_bw_support(dvobj_get_primary_adapter(dvobj), bw)) + continue; + + for (i = 0; i < chset->chs_len; i++) { + u32 non_ocp_ms = 0; + u32 cac_ms = 0; + u32 waiting_ms = 0; + u16 int_factor = 0; + bool dfs_ch; + + if (chset->chs[i].flags & RTW_CHF_DIS) + continue; + + band = chset->chs[i].band; + ch = chset->chs[i].ChannelNum; + if (sel_band != BAND_MAX) { + if (band != sel_band) + continue; + } else if (rfctl->ch_sel_within_same_band && cur_band != band) + continue; + if (sel_ch) { + if (ch != sel_ch) + continue; + } + + if (band == BAND_ON_24G) { + if (bw > REGSTY_BW_2G(regsty)) + continue; + #if CONFIG_IEEE80211_BAND_5GHZ + } else if (band == BAND_ON_5G) { + if (bw > REGSTY_BW_5G(regsty)) + continue; + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + } else if (band == BAND_ON_6G) { + if (bw > REGSTY_BW_6G(regsty)) + continue; + #endif + } + + if (mesh_only && band == BAND_ON_24G && ch >= 5 && ch <= 9 && bw > CHANNEL_WIDTH_20) + continue; + + if (sel_offset == CHAN_OFFSET_NO_EXT || bw == CHANNEL_WIDTH_20) { + if (!rtw_get_offsets_by_bchbw(band, ch, bw, r_offset, &r_offset_num)) + continue; + } else { + r_offset[0] = sel_offset; + r_offset_num = 1; + } + + for (j = 0; j < r_offset_num; j++) { + offset = r_offset[j]; + if (!rtw_chset_is_bchbw_valid(chset, band, ch, bw, offset, 0, 0)) + continue; + + if ((e_flags & RTW_CHF_DFS) || (d_flags & RTW_CHF_DFS)) { + dfs_ch = rtw_chset_is_dfs_bchbw(chset, band, ch, bw, offset); + if (((e_flags & RTW_CHF_DFS) && !dfs_ch) + || ((d_flags & RTW_CHF_DFS) && dfs_ch)) + continue; + } + + #ifdef CONFIG_DFS_MASTER + waiting_ms = rtw_get_ch_waiting_ms(rfctl, band, ch, bw, offset, &non_ocp_ms, &cac_ms); + #endif + + #ifdef CONFIG_RTW_ACS + if (by_int_info) { + /* for now, consider only primary channel */ + int_factor = hal_data->acs.interference_time[i]; + } + #endif + + if (DBG_CHOOSE_SHORTEST_WAITING_CH) + RTW_INFO("%s:%s,%u,%u,%u %u(non_ocp:%u, cac:%u), int:%u\n" + , __func__, band_str(band), ch, bw, offset, waiting_ms, non_ocp_ms, cac_ms, int_factor); + + if (ch_c == 0 + /* first: smaller wating time */ + || min_waiting_ms > waiting_ms + /* then: less interference */ + || (min_waiting_ms == waiting_ms && int_factor_c > int_factor) + /* then: wider bw */ + || (min_waiting_ms == waiting_ms && int_factor_c == int_factor && bw > bw_c) + /* if all condition equal, same channel&offset -> same channel -> same band prefer */ + || (min_waiting_ms == waiting_ms && int_factor_c == int_factor && bw == bw_c + && (((cur_band != band_c || cur_ch != ch_c || cur_offset != offset_c) + && (cur_band == band && cur_ch == ch && cur_offset == offset)) + || ((cur_band != band_c || cur_ch != ch_c) && (cur_band == band && cur_ch == ch)) + || (cur_band != band_c && cur_band == band)) + ) + ) { + band_c = band; + ch_c = ch; + bw_c = bw; + offset_c = offset; + min_waiting_ms = waiting_ms; + int_factor_c = int_factor; + } + } + } + } + + if (ch_c != 0) { + RTW_INFO("%s: select %s,%u,%u,%u waiting_ms:%u\n" + , __func__, band_str(band_c), ch_c, bw_c, offset_c, min_waiting_ms); + if (dec_band) + *dec_band = band_c; + *dec_ch = ch_c; + *dec_bw = bw_c; + *dec_offset = offset_c; + return _TRUE; + } else { + RTW_INFO("%s: not found\n", __func__); + if (d_flags == 0) + rtw_warn_on(1); + } + + return _FALSE; +} + +bool rtw_rfctl_choose_bchbw(struct rf_ctl_t *rfctl + , enum band_type sel_band, u8 sel_ch, u8 max_bw, enum chan_offset sel_offset + , enum band_type cur_band, u8 cur_ch, enum chan_offset cur_offset + , enum band_type *band, u8 *ch, u8 *bw, u8 *offset + , bool by_int_info, u8 mesh_only, const char *caller) +{ + bool ch_avail = _FALSE; + +#if defined(CONFIG_DFS_MASTER) + if (rtw_rfctl_radar_detect_supported(rfctl)) { + if (rfctl->radar_detected + && rfctl->dbg_dfs_choose_dfs_ch_first + ) { + ch_avail = rtw_choose_shortest_waiting_ch(rfctl, sel_band, sel_ch, max_bw, sel_offset + , band, ch, bw, offset + , RTW_CHF_DFS, 0 + , cur_band, cur_ch, cur_offset, by_int_info, mesh_only); + if (ch_avail == _TRUE) { + RTW_INFO("%s choose 5G DFS channel for debug\n", caller); + goto exit; + } + } + + if (rfctl->radar_detected + && (rfctl->dfs_ch_sel_e_flags || rfctl->dfs_ch_sel_d_flags) + ) { + ch_avail = rtw_choose_shortest_waiting_ch(rfctl, sel_band, sel_ch, max_bw, sel_offset + , band, ch, bw, offset + , rfctl->dfs_ch_sel_e_flags, rfctl->dfs_ch_sel_d_flags + , cur_band, cur_ch, cur_offset, by_int_info, mesh_only); + if (ch_avail == _TRUE) { + RTW_INFO("%s choose with dfs_ch_sel_ e_flags:0x%02x d_flags:0x%02x for debug\n" + , caller, rfctl->dfs_ch_sel_e_flags, rfctl->dfs_ch_sel_d_flags); + goto exit; + } + } + + ch_avail = rtw_choose_shortest_waiting_ch(rfctl, sel_band, sel_ch, max_bw, sel_offset + , band, ch, bw, offset + , 0, 0 + , cur_band, cur_ch, cur_offset, by_int_info, mesh_only); + } else +#endif /* defined(CONFIG_DFS_MASTER) */ + { + ch_avail = rtw_choose_shortest_waiting_ch(rfctl, sel_band, sel_ch, max_bw, sel_offset + , band, ch, bw, offset + , 0, RTW_CHF_DFS + , cur_band, cur_ch, cur_offset, by_int_info, mesh_only); + } +#if defined(CONFIG_DFS_MASTER) +exit: +#endif + if (ch_avail == _FALSE) + RTW_WARN("%s no available channel\n", caller); + + return ch_avail; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY bool rtw_rfctl_choose_chbw(struct rf_ctl_t *rfctl, u8 sel_ch, u8 max_bw, enum chan_offset sel_offset + , u8 cur_ch, enum chan_offset cur_offset, u8 *ch, u8 *bw, u8 *offset, bool by_int_info, u8 mesh_only, const char *caller) +{ + enum band_type sel_band = sel_ch ? (rtw_is_2g_ch(sel_ch) ? BAND_ON_24G : BAND_ON_5G) : BAND_MAX; + enum band_type cur_band = rtw_is_2g_ch(cur_ch) ? BAND_ON_24G : BAND_ON_5G; + enum band_type *band = NULL; + + return rtw_rfctl_choose_bchbw(rfctl + , sel_band, sel_ch, max_bw, sel_offset + , cur_band, cur_ch, cur_offset + , band, ch, bw, offset + , by_int_info, mesh_only, caller); +} +#endif + +void rtw_rfctl_dfs_init(struct rf_ctl_t *rfctl, struct registry_priv *regsty) +{ + rfctl->ch_sel_within_same_band = 1; + +#ifdef CONFIG_DFS_MASTER + rfctl->dfs_region_domain = regsty->dfs_region_domain; + if (!rtw_dfs_hal_region_supported(rfctl_to_dvobj(rfctl), rfctl->dfs_region_domain)) { + RTW_WARN("%s DFS region domain: %s is not supported by HAL, set to %s\n", __func__ + , rtw_dfs_regd_str(rfctl->dfs_region_domain), rtw_dfs_regd_str(RTW_DFS_REGD_NONE)); + rfctl->dfs_region_domain = RTW_DFS_REGD_NONE; + } + rfctl->non_ocp_finished = true; + rfctl->cac_start_time = rfctl->cac_end_time = RTW_CAC_STOPPED; + rtw_init_timer(&(rfctl->radar_detect_timer), NULL, rtw_dfs_rd_timer_hdl, rfctl); +#endif + +#if CONFIG_DFS_SLAVE_WITH_RADAR_DETECT + rfctl->dfs_slave_with_rd = 1; +#endif +} + diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_dfs.h b/drivers/net/wireless/rtl8822cs/core/rtw_dfs.h new file mode 100644 index 000000000..60c1ebb26 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/core/rtw_dfs.h @@ -0,0 +1,95 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef __RTW_DFS_H__ +#define __RTW_DFS_H__ + +#define CAC_TIME_MS (60*1000) +#define CAC_TIME_CE_MS (10*60*1000) +#define NON_OCP_TIME_MS (30*60*1000) + +#define RTW_CAC_STOPPED 0 /* used by cac_start_time, cac_end_time time stamps */ +#define RTW_NON_OCP_STOPPED 0 /* used by non_ocp_end_time time stamps */ + +bool rtw_chset_is_dfs_range(const struct rtw_chset *chset, u32 hi, u32 lo); +RTW_FUNC_2G_5G_ONLY bool rtw_chset_is_dfs_ch(const struct rtw_chset *chset, u8 ch); +RTW_FUNC_2G_5G_ONLY bool rtw_chset_is_dfs_chbw(const struct rtw_chset *chset, u8 ch, u8 bw, u8 offset); +bool rtw_chset_is_dfs_bch(const struct rtw_chset *chset, enum band_type band, u8 ch); +bool rtw_chset_is_dfs_bchbw(const struct rtw_chset *chset, enum band_type band, u8 ch, u8 bw, u8 offset); + +enum rtw_dfs_regd rtw_rfctl_get_dfs_domain(struct rf_ctl_t *rfctl); +bool rtw_rfctl_radar_detect_supported(struct rf_ctl_t *rfctl); + +#ifdef CONFIG_DFS_MASTER +struct rf_ctl_t; +enum phl_band_idx; + +#define CH_IS_NON_OCP_STOPPED(rt_ch_info) ((rt_ch_info)->non_ocp_end_time == RTW_NON_OCP_STOPPED) +#define CH_IS_NON_OCP(rt_ch_info) (!CH_IS_NON_OCP_STOPPED(rt_ch_info) && rtw_time_after((rt_ch_info)->non_ocp_end_time, rtw_get_current_time())) + +bool rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset); +bool rtw_rfctl_hwband_is_tx_blocked_by_ch_waiting(struct rf_ctl_t *rfctl, enum phl_band_idx hwband); +bool adapter_is_tx_blocked_by_ch_waiting(_adapter *adapter); +bool alink_is_tx_blocked_by_ch_waiting(struct _ADAPTER_LINK *alink); + +RTW_FUNC_2G_5G_ONLY bool rtw_chset_is_chbw_non_ocp(const struct rtw_chset *chset, u8 ch, u8 bw, u8 offset); +RTW_FUNC_2G_5G_ONLY bool rtw_chset_is_ch_non_ocp(const struct rtw_chset *chset, u8 ch); +bool rtw_chset_is_bchbw_non_ocp(const struct rtw_chset *chset, enum band_type band, u8 ch, u8 bw, u8 offset); +bool rtw_chset_is_bch_non_ocp(const struct rtw_chset *chset, enum band_type band, u8 ch); + +void rtw_rfctl_chset_chk_non_ocp_finish(struct rf_ctl_t *rfctl); + +void rtw_rfctl_force_update_non_ocp_ms(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset, int ms); + +u32 rtw_get_ch_waiting_ms(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset, u32 *r_non_ocp_ms, u32 *r_cac_ms); + +u32 rtw_force_stop_cac(struct rf_ctl_t *rfctl, u32 timeout_ms); + +u8 rtw_dfs_rd_hdl(struct dvobj_priv *dvobj, enum phl_band_idx hwband, u8 radar_cch, enum channel_width radar_bw); + +void rtw_dfs_rd_en_dec_update(struct dvobj_priv *dvobj, enum phl_band_idx hwband); +u8 rtw_dfs_rd_en_decision_cmd(struct dvobj_priv *dvobj, enum phl_band_idx hwband); + +void rtw_indicate_cac_state_on_bss_start(_adapter *adapter); +void rtw_indicate_cac_state_on_bss_stop(_adapter *adapter); + +#else +#define CH_IS_NON_OCP(rt_ch_info) 0 +#define rtw_rfctl_hwband_is_tx_blocked_by_ch_waiting(rfctl, hwband) false +#define adapter_is_tx_blocked_by_ch_waiting(adapter) false +#define alink_is_tx_blocked_by_ch_waiting(alink) false + +RTW_FUNC_2G_5G_ONLY static inline bool rtw_chset_is_chbw_non_ocp(const struct rtw_chset *chset, u8 ch, u8 bw, u8 offset) { return false; } +RTW_FUNC_2G_5G_ONLY static inline bool rtw_chset_is_ch_non_ocp(const struct rtw_chset *chset, u8 ch) { return false; } +#define rtw_chset_is_bchbw_non_ocp(chset, band, ch, bw, offset) false +#define rtw_chset_is_bch_non_ocp(chset, band, ch) false +#endif /* CONFIG_DFS_MASTER */ + +#if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ +void rtw_dfs_rd_en_dec_on_mlme_act(_adapter *adapter, struct _ADAPTER_LINK *alink, u8 mlme_act, u8 excl_ifbmp); +void dump_radar_detect_status(void *sel, struct rf_ctl_t *rfctl, const char *title); +#endif + +bool rtw_rfctl_choose_bchbw(struct rf_ctl_t *rfctl + , enum band_type sel_band, u8 sel_ch, u8 max_bw, enum chan_offset sel_offset + , enum band_type cur_band, u8 cur_ch, enum chan_offset cur_offset + , enum band_type *band, u8 *ch, u8 *bw, u8 *offset + , bool by_int_info, u8 mesh_only, const char *caller); + +RTW_FUNC_2G_5G_ONLY bool rtw_rfctl_choose_chbw(struct rf_ctl_t *rfctl, u8 sel_ch, u8 max_bw, enum chan_offset sel_offset + , u8 cur_ch, enum chan_offset cur_offset, u8 *ch, u8 *bw, u8 *offset, bool by_int_info, u8 mesh_only, const char *caller); + +void rtw_rfctl_dfs_init(struct rf_ctl_t *rfctl, struct registry_priv *regsty); + +#endif /* __RTW_DFS_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_ft.c b/drivers/net/wireless/rtl8822cs/core/rtw_ft.c index 62b9b4417..480fd2377 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_ft.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_ft.c @@ -16,7 +16,7 @@ #include #include -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) #ifndef RTW_FT_DBG #define RTW_FT_DBG 0 @@ -36,7 +36,7 @@ void rtw_ft_info_init(struct ft_roam_info *pft) _rtw_memset(pft, 0, sizeof(struct ft_roam_info)); pft->ft_flags = 0 | RTW_FT_EN - /* | RTW_FT_OTD_EN */ + | RTW_FT_OTD_EN #ifdef CONFIG_RTW_BTM_ROAM | RTW_FT_BTM_ROAM #endif @@ -89,11 +89,11 @@ u8 rtw_ft_chk_roaming_candidate( u32 mdie_len = 0; struct ft_roam_info *pft_roam = &(padapter->mlmepriv.ft_roam); - if (!(pmdie = rtw_get_ie(&competitor->network.IEs[12], - _MDIE_, &mdie_len, competitor->network.IELength-12))) { + if (!(pmdie = rtw_get_ie(&competitor->network.IEs[12], _MDIE_, + &mdie_len, competitor->network.IELength-12))) { RTW_INFO("FT : MDIE not foud in competitor!\n"); return _FALSE; - } + } if (!_rtw_memcmp(&pft_roam->mdid, (pmdie+2), 2)) { RTW_INFO("FT : unmatched MDIE!\n"); @@ -103,47 +103,52 @@ u8 rtw_ft_chk_roaming_candidate( /*The candidate don't support over-the-DS*/ if (rtw_ft_valid_otd_candidate(padapter, pmdie)) { RTW_INFO("FT: ignore the candidate(" - MAC_FMT ") for over-the-DS\n", + MAC_FMT ") for over-the-DS\n", MAC_ARG(competitor->network.MacAddress)); /* rtw_ft_clr_flags(padapter, RTW_FT_PEER_OTD_EN); */ - return _FALSE; + return _FALSE; } if (rtw_ft_chk_flags(padapter, RTW_FT_TEST_RSSI_ROAM)) { - if (!_rtw_memcmp(padapter->mlmepriv.cur_network.network.MacAddress, + if (!_rtw_memcmp( + padapter->mlmepriv.cur_network.network.MacAddress, competitor->network.MacAddress, ETH_ALEN) ) { competitor->network.Rssi +=20; - RTW_FT_INFO("%s : update "MAC_FMT" RSSI to %d for RTW_FT_TEST_RSSI_ROAM\n", + RTW_FT_INFO("%s : update "MAC_FMT + " RSSI to %d for RTW_FT_TEST_RSSI_ROAM\n", __func__, MAC_ARG(competitor->network.MacAddress), (int)competitor->network.Rssi); rtw_ft_clr_flags(padapter, RTW_FT_TEST_RSSI_ROAM); } - } + } return _TRUE; } void rtw_ft_update_stainfo(_adapter *padapter, WLAN_BSSID_EX *pnetwork) { - struct sta_priv *pstapriv = &padapter->stapriv; - struct sta_info *psta = NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta = NULL; psta = rtw_get_stainfo(pstapriv, pnetwork->MacAddress); if (psta == NULL) psta = rtw_alloc_stainfo(pstapriv, pnetwork->MacAddress); - if (padapter->securitypriv.dot11AuthAlgrthm == dot11AuthAlgrthm_8021X) { - + if (psta && (padapter->securitypriv.dot11AuthAlgrthm == + dot11AuthAlgrthm_8021X)) { padapter->securitypriv.binstallGrpkey = _FALSE; padapter->securitypriv.busetkipkey = _FALSE; padapter->securitypriv.bgrpkey_handshake = _FALSE; psta->ieee8021x_blocked = _TRUE; - psta->dot118021XPrivacy = padapter->securitypriv.dot11PrivacyAlgrthm; - - _rtw_memset((u8 *)&psta->dot118021x_UncstKey, 0, sizeof(union Keytype)); - _rtw_memset((u8 *)&psta->dot11tkiprxmickey, 0, sizeof(union Keytype)); - _rtw_memset((u8 *)&psta->dot11tkiptxmickey, 0, sizeof(union Keytype)); + psta->dot118021XPrivacy = \ + padapter->securitypriv.dot11PrivacyAlgrthm; + _rtw_memset((u8 *)&psta->dot118021x_UncstKey, + 0, sizeof(union Keytype)); + _rtw_memset((u8 *)&psta->dot11tkiprxmickey, + 0, sizeof(union Keytype)); + _rtw_memset((u8 *)&psta->dot11tkiptxmickey, + 0, sizeof(union Keytype)); } } @@ -163,37 +168,40 @@ void rtw_ft_reassoc_event_callback(_adapter *padapter, u8 *pbuf) rtw_ft_update_stainfo(padapter, pnetwork); ft_evt_parms.ies_len = pft_roam->ft_event.ies_len; ft_evt_parms.ies = rtw_zmalloc(ft_evt_parms.ies_len); - if (ft_evt_parms.ies) - _rtw_memcpy((void *)ft_evt_parms.ies, pft_roam->ft_event.ies, ft_evt_parms.ies_len); - else + if (ft_evt_parms.ies) { + _rtw_memcpy((void *)ft_evt_parms.ies, + pft_roam->ft_event.ies, ft_evt_parms.ies_len); + } else goto err_2; ft_evt_parms.target_ap = rtw_zmalloc(ETH_ALEN); - if (ft_evt_parms.target_ap) - _rtw_memcpy((void *)ft_evt_parms.target_ap, pstassoc->macaddr, ETH_ALEN); - else + if (ft_evt_parms.target_ap) { + _rtw_memcpy((void *)ft_evt_parms.target_ap, + pstassoc->macaddr, ETH_ALEN); + } else goto err_1; ft_evt_parms.ric_ies = pft_roam->ft_event.ric_ies; ft_evt_parms.ric_ies_len = pft_roam->ft_event.ric_ies_len; - /* It's a KERNEL issue between v4.11 ~ v4.16, + /* It's a KERNEL issue between v4.11 ~ v4.16, * <= v4.10, NLMSG_DEFAULT_SIZE is used for nlmsg_new(). - * v4.11 ~ v4.16, only used "100 + >ric_ies_len" for nlmsg_new() + * v4.11 ~ v4.16, only used "100 + >ric_ies_len" for nlmsg_new() * even then DRIVER don't support RIC. * >= v4.17, issue should correct as "100 + ies_len + ric_ies_len". - */ + */ #if ((LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)) && \ (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0))) if (!ft_evt_parms.ric_ies_len) ft_evt_parms.ric_ies_len = ft_evt_parms.ies_len; - else - ft_evt_parms.ric_ies_len += ft_evt_parms.ies_len; - #endif - + else + ft_evt_parms.ric_ies_len += ft_evt_parms.ies_len; + #endif + rtw_ft_lock_set_status(padapter, RTW_FT_AUTHENTICATED_STA, &irqL); rtw_cfg80211_ft_event(padapter, &ft_evt_parms); - RTW_INFO("%s: to "MAC_FMT"\n", __func__, MAC_ARG(ft_evt_parms.target_ap)); + RTW_INFO("%s: to "MAC_FMT"\n", __func__, + MAC_ARG(ft_evt_parms.target_ap)); rtw_mfree((u8 *)pft_roam->ft_event.target_ap, ETH_ALEN); err_1: @@ -203,7 +211,7 @@ err_2: } void rtw_ft_validate_akm_type(_adapter *padapter, - struct wlan_network *pnetwork) + WLAN_BSSID_EX *network) { struct security_priv *psecuritypriv = &(padapter->securitypriv); struct ft_roam_info *pft_roam = &(padapter->mlmepriv.ft_roam); @@ -212,31 +220,50 @@ void rtw_ft_validate_akm_type(_adapter *padapter, /*IEEE802.11-2012 Std. Table 8-101-AKM suite selectors*/ if (rtw_ft_valid_akm(padapter, psecuritypriv->rsn_akm_suite_type)) { - ptmp = rtw_get_ie(&pnetwork->network.IEs[12], - _MDIE_, &tmp_len, (pnetwork->network.IELength-12)); + ptmp = rtw_get_ie(&network->IEs[12], + _MDIE_, &tmp_len, + (network->IELength-12)); if (ptmp) { pft_roam->mdid = *(u16 *)(ptmp+2); pft_roam->ft_cap = *(ptmp+4); - RTW_INFO("FT: target " MAC_FMT " mdid=(0x%2x), capacity=(0x%2x)\n", - MAC_ARG(pnetwork->network.MacAddress), pft_roam->mdid, pft_roam->ft_cap); + RTW_INFO("FT: target "MAC_FMT + " mdid=(0x%2x), capacity=(0x%2x)\n", + MAC_ARG(network->MacAddress), + pft_roam->mdid, pft_roam->ft_cap); + rtw_ft_set_flags(padapter, RTW_FT_PEER_EN); - RTW_FT_INFO("%s : peer support FTOTA(0x%02x)\n", __func__, pft_roam->ft_flags); + + RTW_FT_INFO("%s : peer support FTOTA(0x%02x)," + " ft_roam_on_expired=0x%02x\n", + __func__, pft_roam->ft_flags, + pft_roam->ft_roam_on_expired); if (rtw_ft_otd_roam_en(padapter)) { rtw_ft_set_flags(padapter, RTW_FT_PEER_OTD_EN); - RTW_FT_INFO("%s : peer support FTOTD(0x%02x)\n", __func__, pft_roam->ft_flags); + RTW_FT_INFO("%s : peer support FTOTD(0x%02x)\n", + __func__, pft_roam->ft_flags); + } else { + pft_roam->ft_cap &= ~BIT(0); + rtw_ft_clr_flags(padapter, RTW_FT_PEER_OTD_EN); + RTW_FT_INFO("%s : update mdid=0x%02x, " + "cap=0x%02x, flag=0x%02x\n", + __func__, pft_roam->mdid, + pft_roam->ft_cap, + pft_roam->ft_flags); } } else { /* Don't use FT roaming if target AP cannot support FT */ - rtw_ft_clr_flags(padapter, (RTW_FT_PEER_EN|RTW_FT_PEER_OTD_EN)); + rtw_ft_clr_flags(padapter, + (RTW_FT_PEER_EN|RTW_FT_PEER_OTD_EN)); rtw_ft_reset_status(padapter); } } else { /* It could be a non-FT connection */ - rtw_ft_clr_flags(padapter, (RTW_FT_PEER_EN|RTW_FT_PEER_OTD_EN)); + rtw_ft_clr_flags(padapter, + (RTW_FT_PEER_EN|RTW_FT_PEER_OTD_EN)); rtw_ft_reset_status(padapter); - } + } RTW_FT_INFO("%s : ft_flags=0x%02x\n", __func__, pft_roam->ft_flags); } @@ -250,29 +277,51 @@ void rtw_ft_update_bcn(_adapter *padapter, union recv_frame *precv_frame) uint len = precv_frame->u.hdr.len; WLAN_BSSID_EX *pbss; - if (rtw_ft_chk_status(padapter,RTW_FT_ASSOCIATED_STA) + if (rtw_ft_chk_status(padapter,RTW_FT_ASSOCIATED_STA) && (pmlmepriv->ft_roam.ft_updated_bcn == _FALSE)) { pbss = (WLAN_BSSID_EX*)rtw_malloc(sizeof(WLAN_BSSID_EX)); if (pbss) { - if (collect_bss_info(padapter, precv_frame, pbss) == _SUCCESS) { + if (collect_bss_info( + padapter, precv_frame, pbss) == _SUCCESS) { struct beacon_keys recv_beacon; - update_network(&(pmlmepriv->cur_network.network), pbss, padapter, _TRUE); + update_network( + &(pmlmepriv->cur_network.network), + pbss, padapter, _TRUE); + /* Move into rtw_get_bcn_keys */ /* rtw_get_bcn_info(&(pmlmepriv->cur_network)); */ - + /* update bcn keys */ - if (rtw_get_bcn_keys(padapter, pframe, len, &recv_beacon) == _TRUE) { - RTW_FT_INFO("%s: beacon keys ready\n", __func__); - _rtw_memcpy(&pmlmepriv->cur_beacon_keys, - &recv_beacon, sizeof(recv_beacon)); - if (is_hidden_ssid(recv_beacon.ssid, recv_beacon.ssid_len)) { - _rtw_memcpy(pmlmepriv->cur_beacon_keys.ssid, pmlmeinfo->network.Ssid.Ssid, IW_ESSID_MAX_SIZE); - pmlmepriv->cur_beacon_keys.ssid_len = pmlmeinfo->network.Ssid.SsidLength; + if (rtw_get_bcn_keys(padapter, pframe, len, + &recv_beacon) == _TRUE) { + + RTW_FT_INFO("%s: beacon keys ready\n", + __func__); + + _rtw_memcpy( + &pmlmepriv->cur_beacon_keys, + &recv_beacon, + sizeof(recv_beacon)); + + if (is_hidden_ssid( + recv_beacon.ssid, + recv_beacon.ssid_len)) { + + _rtw_memcpy( + pmlmepriv->cur_beacon_keys.ssid, + pmlmeinfo->network.Ssid.Ssid, + IW_ESSID_MAX_SIZE); + + pmlmepriv->cur_beacon_keys.ssid_len = \ + pmlmeinfo->network.Ssid.SsidLength; } } else { - RTW_ERR("%s: get beacon keys failed\n", __func__); - _rtw_memset(&pmlmepriv->cur_beacon_keys, 0, sizeof(recv_beacon)); + RTW_ERR("%s: get beacon keys failed\n", + __func__); + _rtw_memset( + &pmlmepriv->cur_beacon_keys, + 0, sizeof(recv_beacon)); } #ifdef CONFIG_BCN_CNT_CONFIRM_HDL pmlmepriv->new_beacon_cnts = 0; @@ -282,9 +331,11 @@ void rtw_ft_update_bcn(_adapter *padapter, union recv_frame *precv_frame) } /* check the vendor of the assoc AP */ - pmlmeinfo->assoc_AP_vendor = - check_assoc_AP(pframe+sizeof(struct rtw_ieee80211_hdr_3addr), - (len - sizeof(struct rtw_ieee80211_hdr_3addr))); + pmlmeinfo->assoc_AP_vendor = + check_assoc_AP( + pframe + sizeof(struct rtw_ieee80211_hdr_3addr), + (len - sizeof(struct rtw_ieee80211_hdr_3addr)) + ); rtw_phydm_update_ap_vendor_ie(padapter); @@ -306,9 +357,11 @@ void rtw_ft_start_clnt_join(_adapter *padapter) if (rtw_ft_otd_roam(padapter)) { pmlmeinfo->state = WIFI_FW_AUTH_SUCCESS | WIFI_FW_STATION_STATE; pft_roam->ft_event.ies = - (pft_roam->ft_action + sizeof(struct rtw_ieee80211_hdr_3addr) + 16); + (pft_roam->ft_action + \ + sizeof(struct rtw_ieee80211_hdr_3addr) + 16); pft_roam->ft_event.ies_len = - (pft_roam->ft_action_len - sizeof(struct rtw_ieee80211_hdr_3addr)); + (pft_roam->ft_action_len - \ + sizeof(struct rtw_ieee80211_hdr_3addr)); /*Not support RIC*/ pft_roam->ft_event.ric_ies = NULL; @@ -352,10 +405,10 @@ static u8 rtw_ft_update_mdie( u32 len = 3; if (rtw_ft_roam(padapter)) { - if ((pie = rtw_get_ie(pft_roam->updated_ft_ies, _MDIE_, + if ((pie = rtw_get_ie(pft_roam->updated_ft_ies, _MDIE_, &len, pft_roam->updated_ft_ies_len))) { pie = (pie + 2); /* ignore md-id & length */ - } else + } else return _FAIL; } else { *((u16 *)&mdie[0]) = pft_roam->mdid; @@ -363,8 +416,9 @@ static u8 rtw_ft_update_mdie( pie = &mdie[0]; } - *pframe = rtw_set_ie(((u8 *)*pframe), _MDIE_, len , pie, &(pattrib->pktlen)); - return _SUCCESS; + *pframe = rtw_set_ie(((u8 *)*pframe), _MDIE_, + len , pie, &(pattrib->pktlen)); + return _SUCCESS; } static u8 rtw_ft_update_ftie( @@ -374,17 +428,17 @@ static u8 rtw_ft_update_ftie( u8 *pie; u32 len; - if ((pie = rtw_get_ie(pft_roam->updated_ft_ies, _FTIE_, &len, + if ((pie = rtw_get_ie(pft_roam->updated_ft_ies, _FTIE_, &len, pft_roam->updated_ft_ies_len)) != NULL) { - *pframe = rtw_set_ie(*pframe, _FTIE_, len , + *pframe = rtw_set_ie(*pframe, _FTIE_, len , (pie+2), &(pattrib->pktlen)); } else return _FAIL; - return _SUCCESS; + return _SUCCESS; } -void rtw_ft_build_auth_req_ies(_adapter *padapter, +void rtw_ft_build_auth_req_ies(_adapter *padapter, struct pkt_attrib *pattrib, u8 **pframe) { u8 ftie_append = _TRUE; @@ -434,13 +488,15 @@ u8 rtw_ft_update_auth_rsp_ies(_adapter *padapter, u8 *pframe, u32 len) if (!pframe || !len) return _FAIL; - - rtw_buf_update(&pmlmepriv->auth_rsp, + + rtw_buf_update(&pmlmepriv->auth_rsp, &pmlmepriv->auth_rsp_len, pframe, len); pft_roam->ft_event.ies = - (pmlmepriv->auth_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6); + (pmlmepriv->auth_rsp + \ + sizeof(struct rtw_ieee80211_hdr_3addr) + 6); pft_roam->ft_event.ies_len = - (pmlmepriv->auth_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6); + (pmlmepriv->auth_rsp_len - \ + sizeof(struct rtw_ieee80211_hdr_3addr) - 6); /*Not support RIC*/ pft_roam->ft_event.ric_ies = NULL; @@ -448,7 +504,7 @@ u8 rtw_ft_update_auth_rsp_ies(_adapter *padapter, u8 *pframe, u32 len) _rtw_memcpy(target_ap_addr, pmlmepriv->assoc_bssid, ETH_ALEN); rtw_ft_report_reassoc_evt(padapter, target_ap_addr); - return ret; + return ret; } static void rtw_ft_start_clnt_action(_adapter *padapter, u8 *pTargetAddr) @@ -468,7 +524,8 @@ void rtw_ft_start_roam(_adapter *padapter, u8 *pTargetAddr) RTW_FT_INFO("%s : try OTD roaming\n", __func__); rtw_ft_start_clnt_action(padapter, pTargetAddr); } else { - /*wait a little time to retrieve packets buffered in the current ap while scan*/ + /* wait a little time to retrieve packets buffered + in the current ap while scan*/ RTW_FT_INFO("%s : start roaming timer\n", __func__); _set_timer(&pmlmeext->ft_roam_timer, 30); } @@ -499,9 +556,11 @@ void rtw_ft_issue_action_req(_adapter *padapter, u8 *pTargetAddr) pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; pwlanhdr->frame_ctl = 0; - _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr1, + get_my_bssid(&pmlmeinfo->network), ETH_ALEN); _rtw_memcpy(pwlanhdr->addr2, adapter_mac_addr(padapter), ETH_ALEN); - _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, + get_my_bssid(&pmlmeinfo->network), ETH_ALEN); SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; @@ -548,32 +607,34 @@ void rtw_ft_report_evt(_adapter *padapter) ft_evt_parms.ies_len = pft_roam->ft_event.ies_len; ft_evt_parms.ies = rtw_zmalloc(ft_evt_parms.ies_len); - if (ft_evt_parms.ies) - _rtw_memcpy((void *)ft_evt_parms.ies, pft_roam->ft_event.ies, ft_evt_parms.ies_len); - else + if (ft_evt_parms.ies) { + _rtw_memcpy((void *)ft_evt_parms.ies, + pft_roam->ft_event.ies, ft_evt_parms.ies_len); + } else goto err_2; ft_evt_parms.target_ap = rtw_zmalloc(ETH_ALEN); - if (ft_evt_parms.target_ap) - _rtw_memcpy((void *)ft_evt_parms.target_ap, pnetwork->MacAddress, ETH_ALEN); - else + if (ft_evt_parms.target_ap) { + _rtw_memcpy((void *)ft_evt_parms.target_ap, + pnetwork->MacAddress, ETH_ALEN); + } else goto err_1; ft_evt_parms.ric_ies = pft_roam->ft_event.ric_ies; ft_evt_parms.ric_ies_len = pft_roam->ft_event.ric_ies_len; - /* It's a KERNEL issue between v4.11 ~ v4.16, + /* It's a KERNEL issue between v4.11 ~ v4.16, * <= v4.10, NLMSG_DEFAULT_SIZE is used for nlmsg_new(). - * v4.11 ~ v4.16, only used "100 + >ric_ies_len" for nlmsg_new() + * v4.11 ~ v4.16, only used "100 + >ric_ies_len" for nlmsg_new() * even then DRIVER don't support RIC. * >= v4.17, issue should correct as "100 + ies_len + ric_ies_len". - */ + */ #if ((LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)) && \ (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0))) ft_evt_parms.ric_ies_len = (ft_evt_parms.ies_len <= 100 )? (0):(ft_evt_parms.ies_len - 100); #endif - + rtw_ft_lock_set_status(padapter, RTW_FT_AUTHENTICATED_STA, &irqL); rtw_cfg80211_ft_event(padapter, &ft_evt_parms); RTW_INFO("FT: rtw_ft_report_evt\n"); @@ -617,8 +678,11 @@ void rtw_ft_report_reassoc_evt(_adapter *padapter, u8 *pMacAddr) evt_hdr->id = EVT_FT_REASSOC; evt_hdr->seq = ATOMIC_INC_RETURN(&pmlmeext->event_seq); - passoc_sta_evt = (struct stassoc_event *)(pevtcmd + sizeof(struct rtw_evt_header)); - _rtw_memcpy((unsigned char *)(&(passoc_sta_evt->macaddr)), pMacAddr, ETH_ALEN); + passoc_sta_evt = \ + (struct stassoc_event *)(pevtcmd + \ + sizeof(struct rtw_evt_header)); + _rtw_memcpy((unsigned char *)(&(passoc_sta_evt->macaddr)), + pMacAddr, ETH_ALEN); rtw_enqueue_cmd(pcmdpriv, pcmd_obj); } @@ -633,13 +697,15 @@ void rtw_ft_link_timer_hdl(void *ctx) if (rtw_ft_chk_status(padapter, RTW_FT_REQUESTING_STA)) { if (pft_roam->ft_req_retry_cnt < RTW_FT_ACTION_REQ_LMT) { pft_roam->ft_req_retry_cnt++; - rtw_ft_issue_action_req(padapter, (u8 *)pmlmepriv->roam_network->network.MacAddress); + rtw_ft_issue_action_req(padapter, + (u8 *)pmlmepriv->roam_network->network.MacAddress); _set_timer(&pmlmeext->ft_link_timer, REASSOC_TO); } else { - pft_roam->ft_req_retry_cnt = 0; - if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) - rtw_ft_set_status(padapter, RTW_FT_ASSOCIATED_STA); - else + pft_roam->ft_req_retry_cnt = 0; + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) { + rtw_ft_set_status(padapter, + RTW_FT_ASSOCIATED_STA); + } else rtw_ft_reset_status(padapter); } } @@ -651,20 +717,218 @@ void rtw_ft_roam_timer_hdl(void *ctx) struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); RTW_FT_INFO("%s : try roaming\n", __func__); - receive_disconnect(padapter, pmlmepriv->cur_network.network.MacAddress - , WLAN_REASON_ACTIVE_ROAM, _FALSE); + receive_disconnect(padapter, + pmlmepriv->cur_network.network.MacAddress, + WLAN_REASON_ACTIVE_ROAM, _FALSE); } void rtw_ft_roam_status_reset(_adapter *padapter) { struct ft_roam_info *pft_roam = &(padapter->mlmepriv.ft_roam); - if ((rtw_to_roam(padapter) > 0) && + if ((rtw_to_roam(padapter) > 0) && (!rtw_ft_chk_status(padapter, RTW_FT_REQUESTED_STA))) { rtw_ft_reset_status(padapter); - } - + } + padapter->mlmepriv.ft_roam.ft_updated_bcn = _FALSE; } -#endif /* CONFIG_RTW_80211R */ +void rtw_ft_peer_info_init(struct sta_info *psta) +{ + struct rtw_sta_ft_info_t *peer = &(psta->ft_peer); + _rtw_memset(peer, 0, sizeof(struct rtw_sta_ft_info_t)); +} + +void rtw_ft_peer_info_free(struct sta_info *psta) +{ + struct rtw_sta_ft_info_t *peer = &(psta->ft_peer); + + rtw_buf_free(&peer->md_ie, &peer->md_len); + rtw_buf_free(&peer->rsn_ie, &peer->rsn_len); + rtw_buf_free(&peer->ft_ie, &peer->ft_len); +} + +#ifdef CONFIG_RTW_80211R_AP +int rtw_ft_update_sta_ies(_adapter *padapter, + struct cfg80211_update_ft_ies_params *ie) +{ + struct security_priv *psecuritypriv = &(padapter->securitypriv); + struct sta_priv *pstapriv = &(padapter->stapriv); + struct sta_info *psta; + struct rtw_sta_ft_info_t *peer_info; + u8 *ptr, *paddr; + u32 len; + int ret = 0; + + if (!CHECK_BIT(WLAN_AKM_TYPE_FT_PSK, psecuritypriv->akmp) + && !CHECK_BIT(WLAN_AKM_TYPE_FT_8021X, psecuritypriv->akmp) + && !CHECK_BIT(WLAN_AKM_TYPE_FT_OVER_SAE, psecuritypriv->akmp)) { + RTW_FT_INFO("%s : AKM=0x%x\n", __func__, psecuritypriv->akmp); + goto exit; + } + + if ((ie->ie_len == 0) || + (ie->ie_len >= RTW_FT_MAX_IE_SZ)) { + ret = - EINVAL; + goto exit; + } + + if ((ptr = rtw_get_ie(ie->ie, WLAN_EID_VENDOR_SPECIFIC, + &len , ie->ie_len)) == NULL) { + RTW_ERR("FT : no station mac address found in ies\n"); + ret = -EINVAL; + goto exit; + } + + if (len != ETH_ALEN) { + RTW_ERR("FT : invalid station mac length(%u)\n", len); + ret = -EINVAL; + goto exit; + } + + paddr = ptr + 2; + if ((psta = rtw_get_stainfo(pstapriv, paddr)) == NULL) { + RTW_ERR("FT : sta "MAC_FMT" not found!\n", MAC_ARG(paddr)); + ret = -EINVAL; + goto exit; + } + + RTW_FT_INFO("%s : update sta "MAC_FMT" ie, len=%lu\n", + __func__, MAC_ARG(paddr), ie->ie_len); + RTW_FT_DUMP("ie = ", ie->ie, ie->ie_len); + + peer_info = &(psta->ft_peer); + if ((ptr = rtw_get_ie(ie->ie, EID_WPA2, &len , ie->ie_len)) != NULL) { + rtw_buf_update(&peer_info->rsn_ie, + &peer_info->rsn_len, ptr + 2, len); + RTW_FT_DUMP("rsn_ie = ", peer_info->rsn_ie, + peer_info->rsn_len); + } + + if ((ptr = rtw_get_ie(ie->ie, _MDIE_, &len , ie->ie_len)) != NULL) { + rtw_buf_update(&peer_info->md_ie, + &peer_info->md_len, ptr + 2, len); + RTW_FT_DUMP("md_ie = ", + peer_info->md_ie, peer_info->md_len); + } + + if ((ptr = rtw_get_ie(ie->ie, _FTIE_, &len , ie->ie_len)) != NULL) { + rtw_buf_update(&peer_info->ft_ie, + &peer_info->ft_len, ptr + 2, len); + RTW_FT_DUMP("ft_ie = ", + peer_info->ft_ie, peer_info->ft_len); + } + + if (psta->authalg == WLAN_AUTH_FT) + issue_asocrsp(padapter, 0, psta, WIFI_REASSOCRSP); +exit: + return ret; +} + +void rtw_ft_update_assocresp_ies(struct net_device *net, + struct cfg80211_ap_settings *settings) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(net); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct ft_roam_info *pinfo = &(pmlmepriv->ft_roam); + u8 *ie, *bcn_tail_ies, *assocrsp_ies; + int ielen, bcn_tail_len, assocrsp_ies_len, ret = 0; + + bcn_tail_ies = (u8 *)settings->beacon.tail; + bcn_tail_len = (u32)settings->beacon.tail_len; + assocrsp_ies = (u8 *)settings->beacon.assocresp_ies; + assocrsp_ies_len = (u32)settings->beacon.assocresp_ies_len; + + if ((bcn_tail_len > 0) && + ((ie = rtw_get_ie(bcn_tail_ies, _MDIE_, + &ielen , bcn_tail_len)) != NULL)) { + pinfo->mdid = *(u16 *)(ie + 2); + pinfo->ft_cap = *(ie + 4); + RTW_FT_INFO("%s : mdid = 0x%04x, cap=0x%02x\n", + __func__, pinfo->mdid, pinfo->ft_cap); + } + + if ((assocrsp_ies_len > 0) && + ((ie = rtw_get_ie(assocrsp_ies, _FTIE_, + &ielen , assocrsp_ies_len)) != NULL)) { + _rtw_memset(pinfo->updated_ft_ies, 0, RTW_FT_MAX_IE_SZ); + _rtw_memcpy(pinfo->updated_ft_ies, ie + 2, ielen); + pinfo->updated_ft_ies_len = ielen; + RTW_FT_DUMP("FT : ft ie = ", ie + 2, ielen); + } + +} + +void rtw_ft_process_ft_auth_rsp(_adapter *padapter, u8 *pframe, u32 len) +{ + struct sta_priv *pstapriv = &(padapter->stapriv); + struct sta_info *psta = NULL; + _irqL irqL; + /* u8 *ptr; */ + /* u32 plen; */ + + /* ptr = pframe + IEEE80211_3ADDR_LEN + _AUTH_IE_OFFSET_; */ + /* plen = len - IEEE80211_3ADDR_LEN - _AUTH_IE_OFFSET_; */ + + psta = rtw_get_stainfo(pstapriv, GetAddr1Ptr(pframe)); + if (psta) { + _enter_critical_bh(&psta->lock, &irqL); + psta->state &= ~WIFI_FW_AUTH_NULL; + psta->state |= WIFI_FW_AUTH_SUCCESS; + psta->expire_to = pstapriv->assoc_to; + _exit_critical_bh(&psta->lock, &irqL); + } +} + +void rtw_ft_build_assoc_rsp_ies(_adapter *padapter, + struct sta_info *psta, struct pkt_attrib *pattrib, u8 **pframe) +{ + struct ft_roam_info *prinfo = &(padapter->mlmepriv.ft_roam); + struct rtw_sta_ft_info_t *peer_info; + u8 *pie, mdie[3] = {0}; + u32 ielen; + + if (psta == NULL) + return; + + if (psta->authalg != WLAN_AUTH_FT) { + *((u16 *)&mdie[0]) = prinfo->mdid; + mdie[2] = prinfo->ft_cap; + pie = mdie; + ielen = 3; + + if (prinfo->mdid > 0) { + *pframe = rtw_set_ie(((u8 *)*pframe), + _MDIE_, ielen , pie, &(pattrib->pktlen)); + } + + if (prinfo->updated_ft_ies_len > 0) { + *pframe = rtw_set_ie(((u8 *)*pframe), + _FTIE_, prinfo->updated_ft_ies_len, + prinfo->updated_ft_ies, &(pattrib->pktlen)); + } + } else { + peer_info = &(psta->ft_peer); + if (peer_info->rsn_len > 0) { + *pframe = rtw_set_ie(((u8 *)*pframe), EID_WPA2, + peer_info->rsn_len, peer_info->rsn_ie, + &(pattrib->pktlen)); + } + + if (peer_info->md_len > 0) { + *pframe = rtw_set_ie(((u8 *)*pframe), _MDIE_, + peer_info->md_len, peer_info->md_ie, + &(pattrib->pktlen)); + } + + if (peer_info->ft_len > 0) { + *pframe = rtw_set_ie(((u8 *)*pframe), _FTIE_, + peer_info->ft_len, peer_info->ft_ie, + &(pattrib->pktlen)); + } + } + +} +#endif /* CONFIG_RTW_80211R_AP */ +#endif /* CONFIG_IOCTL_CFG80211 && CONFIG_RTW_80211R */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_ieee80211.c b/drivers/net/wireless/rtl8822cs/core/rtw_ieee80211.c index 52d95366e..e5bb7e3a2 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_ieee80211.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_ieee80211.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -293,6 +293,14 @@ u8 *rtw_set_ie_tpc_report(u8 *buf, u32 *buf_len, u8 tx_power, u8 link_margin) return rtw_set_ie(buf, WLAN_EID_TPC_REPORT, 2, ie_data, buf_len); } +void rtw_bss_ex_set_tpc_report(WLAN_BSSID_EX *bss, u8 tx_power, u8 link_margin) +{ + if (bss->IELength + 4 <= MAX_IE_SZ) + rtw_set_ie_tpc_report(bss->IEs + bss->IELength, &bss->IELength, tx_power, link_margin); + else + rtw_warn_on(1); +} + inline u8 *rtw_set_ie_ch_switch(u8 *buf, u32 *buf_len, u8 ch_switch_mode, u8 new_ch, u8 ch_switch_cnt) { @@ -1065,10 +1073,15 @@ int rtw_parse_wpa2_ie(u8 *rsn_ie, int rsn_ie_len, int *group_cipher, } if (gmcs) { - if (info.gmcs) + if (info.gmcs) { *gmcs = rtw_get_rsn_cipher_suite(info.gmcs); - else - *gmcs = WPA_CIPHER_BIP_CMAC_128; /* default value when absent */ + } else { + if (info.cap && + GET_RSN_CAP_MFP_OPTION(info.cap) > MFP_INVALID) + *gmcs = WPA_CIPHER_BIP_CMAC_128; + else + *gmcs = 0; + } } if (akm) { @@ -1142,7 +1155,7 @@ int rtw_get_wapi_ie(u8 *in_ie, uint in_len, u8 *wapi_ie, u16 *wapi_len) int rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, u8 *wpa_ie, u16 *wpa_len) { - u8 authmode, sec_idx; + u8 authmode; u8 wpa_oui[4] = {0x0, 0x50, 0xf2, 0x01}; uint cnt; @@ -1151,8 +1164,6 @@ int rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, u8 *wpa_ie, cnt = (_TIMESTAMP_ + _BEACON_ITERVAL_ + _CAPABILITY_); - sec_idx = 0; - while (cnt < in_len) { authmode = in_ie[cnt]; @@ -1178,9 +1189,7 @@ int rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, u8 *wpa_ie, } - return *rsn_len + *wpa_len; - } u8 rtw_is_wps_ie(u8 *ie_ptr, uint *wps_ielen) @@ -1234,7 +1243,7 @@ u8 *rtw_get_wps_ie_from_scan_queue(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps * * Returns: The address of the WPS IE found, or NULL */ -u8 *rtw_get_wps_ie(const u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen) +u8 *rtw_get_wps_ie(const u8 *in_ie, int in_len, u8 *wps_ie, uint *wps_ielen) { uint cnt; const u8 *wpsie_ptr = NULL; @@ -1626,23 +1635,16 @@ static int rtw_ieee802_11_parse_vendor_specific(u8 *pos, uint elen, } -/** - * ieee802_11_parse_elems - Parse information elements in management frames - * @start: Pointer to the start of IEs - * @len: Length of IE buffer in octets - * @elems: Data structure for parsed elements - * @show_errors: Whether to show parsing errors in debug log - * Returns: Parsing result - */ -ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len, +static ParseRes _rtw_ieee802_11_parse_elems(u8 *start, uint len, struct rtw_ieee802_11_elems *elems, - int show_errors) + int show_errors, bool reset) { uint left = len; u8 *pos = start; int unknown = 0; - _rtw_memset(elems, 0, sizeof(*elems)); + if (reset) + _rtw_memset(elems, 0, sizeof(*elems)); while (left >= 2) { u8 id, elen; @@ -1773,6 +1775,16 @@ ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len, elems->rann = pos; elems->rann_len = elen; break; +#endif +#ifdef CONFIG_STA_MULTIPLE_BSSID + case WLAN_EID_MULTIPLE_BSSID: + elems->mbssid = pos; + elems->mbssid_len = elen; + break; + case WLAN_EID_NON_TX_BSSID_CAP: + elems->non_tx_bssid_cap = pos; + elems->non_tx_bssid_cap_len = elen; + break; #endif default: unknown++; @@ -1795,8 +1807,123 @@ ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len, } -static u8 key_char2num(u8 ch); -static u8 key_char2num(u8 ch) +/** + * ieee802_11_parse_elems - Parse information elements in management frames + * @start: Pointer to the start of IEs + * @len: Length of IE buffer in octets + * @elems: Data structure for parsed elements + * @show_errors: Whether to show parsing errors in debug log + * Returns: Parsing result + */ +ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len, + struct rtw_ieee802_11_elems *elems, + int show_errors) +{ + return _rtw_ieee802_11_parse_elems(start, len, elems, show_errors, true); +} + +#ifdef CONFIG_STA_MULTIPLE_BSSID +static bool rtw_mbssid_ntbssid_profile_match_id(u8 *profile, uint len, u8 mbssid_idx) +{ + uint left = len; + u8 *pos = profile; + + while (left >= 2) { + u8 id, elen; + + id = *pos++; + elen = *pos++; + left -= 2; + + if (elen > left) + return false; + + switch (id) { + case WLAN_EID_MULTI_BSSID_IDX: + if (GET_MULTIPLE_BSSID_IDX_INDEX(pos - 2) == mbssid_idx) + return true; + break; + default: + break; + } + + left -= elen; + pos += elen; + } + + return false; +} + +/** + * rtw_ieee802_11_override_elems_by_mbssid - override information elements in management frames + * @mbssid_ie: Pointer to the start of mbssid IE + * @mbssid_ie_len: Length of IE buffer in octets + * @mbssid_idx: the specific mbssid index to get for override + * @elems: Data structure for parsed elements + * @show_errors: Whether to show parsing errors in debug log + * Returns: Parsing result + */ +ParseRes rtw_ieee802_11_override_elems_by_mbssid( + u8 *mbssid_ie, uint mbssid_ie_len, u8 mbssid_idx, struct rtw_ieee802_11_elems *elems + , int show_errors) +{ + uint left = mbssid_ie_len; + u8 *pos = mbssid_ie; + u8 max_bssid_indicator; + int unknown = 0; + + if (left < 3) { + RTW_WARN("%s mbssid_ie_len < 3\n", __func__); + return ParseFailed; + } + + max_bssid_indicator = GET_MBSSID_MAX_BSSID_INDOCATOR(pos); + if (mbssid_idx >= (1 << max_bssid_indicator)) { + RTW_WARN("%s mbssid_idx >= max_bssid_indicator(%u)\n" + , __func__, 1 << max_bssid_indicator); + return ParseFailed; + } + + pos += MBSSID_MAX_BSSID_INDICATOR_OFFSET; + left -= MBSSID_MAX_BSSID_INDICATOR_OFFSET; + + while (left >= 2) { + u8 id, elen; + + id = *pos++; + elen = *pos++; + left -= 2; + + if (elen > left) { + if (show_errors) { + RTW_INFO("%s parse failed (id=%d elen=%d left=%lu)\n" + , __func__, id, elen, (unsigned long) left); + } + return ParseFailed; + } + + switch (id) { + case MBSSID_NONTRANSMITTED_BSSID_PROFILE_ID: + if (rtw_mbssid_ntbssid_profile_match_id(pos, elen, mbssid_idx)) + _rtw_ieee802_11_parse_elems(pos, elen, elems, show_errors, false); + break; + default: + break; + } + left -= elen; + pos += elen; + } + + if (left) + return ParseFailed; + + return unknown ? ParseUnknown : ParseOK; + +} +#endif /* CONFIG_STA_MULTIPLE_BSSID */ + +u8 key_char2num(u8 ch); +u8 key_char2num(u8 ch) { if ((ch >= '0') && (ch <= '9')) return ch - '0'; @@ -1918,7 +2045,7 @@ extern char *rtw_initmac; void rtw_macaddr_cfg(u8 *out, const u8 *hw_mac_addr) { #define DEFAULT_RANDOM_MACADDR 1 - u8 mac[ETH_ALEN]; + u8 mac[ETH_ALEN]= {0}; if (out == NULL) { rtw_warn_on(1); @@ -2103,7 +2230,8 @@ void dump_ies(void *sel, const u8 *buf, u32 buf_len) * @ht: check HT IEs * @vht: check VHT IEs, if true imply ht is true */ -void rtw_ies_get_chbw(u8 *ies, int ies_len, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 vht) +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY void rtw_ies_get_chbw(u8 *ies, int ies_len, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 vht) { u8 *p; int ie_len; @@ -2167,6 +2295,7 @@ void rtw_ies_get_chbw(u8 *ies, int ies_len, u8 *ch, u8 *bw, u8 *offset, u8 ht, u } #endif /* CONFIG_80211N_HT */ } +#endif void rtw_bss_get_chbw(WLAN_BSSID_EX *bss, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 vht) { @@ -2184,95 +2313,6 @@ void rtw_bss_get_chbw(WLAN_BSSID_EX *bss, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 } } -/** - * rtw_is_chbw_grouped - test if the two ch settings can be grouped together - * @ch_a: ch of set a - * @bw_a: bw of set a - * @offset_a: offset of set a - * @ch_b: ch of set b - * @bw_b: bw of set b - * @offset_b: offset of set b - */ -bool rtw_is_chbw_grouped(u8 ch_a, u8 bw_a, u8 offset_a - , u8 ch_b, u8 bw_b, u8 offset_b) -{ - bool is_grouped = _FALSE; - - if (ch_a != ch_b) { - /* ch is different */ - goto exit; - } else if ((bw_a == CHANNEL_WIDTH_40 || bw_a == CHANNEL_WIDTH_80) - && (bw_b == CHANNEL_WIDTH_40 || bw_b == CHANNEL_WIDTH_80) - ) { - if (offset_a != offset_b) - goto exit; - } - - is_grouped = _TRUE; - -exit: - return is_grouped; -} - -/** - * rtw_sync_chbw - obey g_ch, adjust g_bw, g_offset, bw, offset - * @req_ch: pointer of the request ch, may be modified further - * @req_bw: pointer of the request bw, may be modified further - * @req_offset: pointer of the request offset, may be modified further - * @g_ch: pointer of the ongoing group ch - * @g_bw: pointer of the ongoing group bw, may be modified further - * @g_offset: pointer of the ongoing group offset, may be modified further - */ -void rtw_sync_chbw(u8 *req_ch, u8 *req_bw, u8 *req_offset - , u8 *g_ch, u8 *g_bw, u8 *g_offset) -{ - - *req_ch = *g_ch; - - if (*req_bw == CHANNEL_WIDTH_80 && *g_ch <= 14) { - /*2.4G ch, downgrade to 40Mhz */ - *req_bw = CHANNEL_WIDTH_40; - } - - switch (*req_bw) { - case CHANNEL_WIDTH_80: - if (*g_bw == CHANNEL_WIDTH_40 || *g_bw == CHANNEL_WIDTH_80) - *req_offset = *g_offset; - else if (*g_bw == CHANNEL_WIDTH_20) - rtw_get_offset_by_chbw(*req_ch, *req_bw, req_offset); - - if (*req_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) { - RTW_ERR("%s req 80MHz BW without offset, down to 20MHz\n", __func__); - rtw_warn_on(1); - *req_bw = CHANNEL_WIDTH_20; - } - break; - case CHANNEL_WIDTH_40: - if (*g_bw == CHANNEL_WIDTH_40 || *g_bw == CHANNEL_WIDTH_80) - *req_offset = *g_offset; - else if (*g_bw == CHANNEL_WIDTH_20) - rtw_get_offset_by_chbw(*req_ch, *req_bw, req_offset); - - if (*req_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) { - RTW_ERR("%s req 40MHz BW without offset, down to 20MHz\n", __func__); - rtw_warn_on(1); - *req_bw = CHANNEL_WIDTH_20; - } - break; - case CHANNEL_WIDTH_20: - *req_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - break; - default: - RTW_ERR("%s req unsupported BW:%u\n", __func__, *req_bw); - rtw_warn_on(1); - } - - if (*req_bw > *g_bw) { - *g_bw = *req_bw; - *g_offset = *req_offset; - } -} - #ifdef CONFIG_P2P /** * rtw_get_p2p_merged_len - Get merged ie length from muitiple p2p ies. diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_ioctl_set.c b/drivers/net/wireless/rtl8822cs/core/rtw_ioctl_set.c index e2937c012..506b227a0 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_ioctl_set.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_ioctl_set.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -27,7 +27,7 @@ extern void indicate_wx_scan_complete_event(_adapter *padapter); (addr[4] == 0xff) && (addr[5] == 0xff)) ? _TRUE : _FALSE \ ) -u8 rtw_validate_bssid(u8 *bssid) +u8 rtw_validate_bssid(const u8 *bssid) { u8 ret = _TRUE; @@ -76,11 +76,13 @@ u8 rtw_do_join(_adapter *padapter) _list *plist, *phead; u8 *pibss = NULL; struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - struct sitesurvey_parm parm; + struct sitesurvey_parm *parm = NULL; _queue *queue = &(pmlmepriv->scanned_queue); u8 ret = _SUCCESS; - + parm = (struct sitesurvey_parm *)rtw_zmalloc(sizeof(struct sitesurvey_parm)); + if (!parm) + return _FAIL; _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); phead = get_list_head(queue); plist = get_next(phead); @@ -94,14 +96,14 @@ u8 rtw_do_join(_adapter *padapter) pmlmepriv->to_join = _TRUE; - rtw_init_sitesurvey_parm(padapter, &parm); - _rtw_memcpy(&parm.ssid[0], &pmlmepriv->assoc_ssid, sizeof(NDIS_802_11_SSID)); - parm.ssid_num = 1; + rtw_init_sitesurvey_parm(padapter, parm); + _rtw_memcpy(&(parm->ssid[0]), &pmlmepriv->assoc_ssid, sizeof(NDIS_802_11_SSID)); + parm->ssid_num = 1; if (pmlmepriv->assoc_ch) { - parm.ch_num = 1; - parm.ch[0].hw_value = pmlmepriv->assoc_ch; - parm.ch[0].flags = 0; + parm->ch_num = 1; + parm->ch[0].hw_value = pmlmepriv->assoc_ch; + parm->ch[0].flags = 0; } if (_rtw_queue_empty(queue) == _TRUE) { @@ -118,7 +120,7 @@ u8 rtw_do_join(_adapter *padapter) if ((ssc_chk == SS_ALLOW) || (ssc_chk == SS_DENY_BUSY_TRAFFIC) ){ /* submit site_survey_cmd */ - ret = rtw_sitesurvey_cmd(padapter, &parm); + ret = rtw_sitesurvey_cmd(padapter, parm); if (_SUCCESS != ret) pmlmepriv->to_join = _FALSE; } else { @@ -188,7 +190,7 @@ u8 rtw_do_join(_adapter *padapter) if ((ssc_chk == SS_ALLOW) || (ssc_chk == SS_DENY_BUSY_TRAFFIC)){ /* RTW_INFO(("rtw_do_join() when no desired bss in scanning queue\n"); */ - ret = rtw_sitesurvey_cmd(padapter, &parm); + ret = rtw_sitesurvey_cmd(padapter, parm); if (_SUCCESS != ret) pmlmepriv->to_join = _FALSE; } else { @@ -208,7 +210,8 @@ u8 rtw_do_join(_adapter *padapter) } exit: - + if (parm) + rtw_mfree(parm, sizeof(struct sitesurvey_parm)); return ret; } @@ -382,7 +385,7 @@ exit: } u8 rtw_set_802_11_connect(_adapter *padapter, - u8 *bssid, NDIS_802_11_SSID *ssid, u16 ch) + const u8 *bssid, NDIS_802_11_SSID *ssid, u16 ch) { _irqL irqL; u8 status = _SUCCESS; @@ -641,7 +644,7 @@ exit: u8 rtw_set_acs_sitesurvey(_adapter *adapter) { struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - struct sitesurvey_parm parm; + struct sitesurvey_parm *parm = NULL; u8 uch; u8 ch_num = 0; int i; @@ -653,10 +656,12 @@ u8 rtw_set_acs_sitesurvey(_adapter *adapter) if (!rtw_mi_get_ch_setting_union(adapter, &uch, NULL, NULL)) goto exit; - _rtw_memset(&parm, 0, sizeof(struct sitesurvey_parm)); - parm.scan_mode = SCAN_PASSIVE; - parm.bw = CHANNEL_WIDTH_20; - parm.acs = 1; + parm = (struct sitesurvey_parm *)rtw_zmalloc(sizeof(struct sitesurvey_parm)); + if (!parm) + return ret; + parm->scan_mode = SCAN_PASSIVE; + parm->bw = CHANNEL_WIDTH_20; + parm->acs = 1; for (band = BAND_ON_2_4G; band < BAND_MAX; band++) { if (band == BAND_ON_2_4G) { @@ -686,16 +691,17 @@ u8 rtw_set_acs_sitesurvey(_adapter *adapter) #endif } - ch_num = center_chs_num(CHANNEL_WIDTH_20); - for (i = 0; i < ch_num && parm.ch_num < RTW_CHANNEL_SCAN_AMOUNT; i++) { - parm.ch[parm.ch_num].hw_value = center_chs(CHANNEL_WIDTH_20, i); - parm.ch[parm.ch_num].flags = RTW_IEEE80211_CHAN_PASSIVE_SCAN; - parm.ch_num++; + ch_num = center_chs_num(CHANNEL_WIDTH_20); + for (i = 0; i < ch_num && parm->ch_num < RTW_CHANNEL_SCAN_AMOUNT; i++) { + parm->ch[parm->ch_num].hw_value = center_chs(CHANNEL_WIDTH_20, i); + parm->ch[parm->ch_num].flags = RTW_IEEE80211_CHAN_PASSIVE_SCAN; + parm->ch_num++; } } - ret = rtw_set_802_11_bssid_list_scan(adapter, &parm); - + ret = rtw_set_802_11_bssid_list_scan(adapter, parm); + if (parm) + rtw_mfree(parm, sizeof(struct sitesurvey_parm)); exit: return ret; } @@ -734,15 +740,15 @@ u8 rtw_set_802_11_authentication_mode(_adapter *padapter, NDIS_802_11_AUTHENTICA u8 rtw_set_802_11_add_wep(_adapter *padapter, NDIS_802_11_WEP *wep) { - u8 bdefaultkey; - u8 btransmitkey; + /*u8 bdefaultkey;*/ + /*u8 btransmitkey;*/ sint keyid, res; struct security_priv *psecuritypriv = &(padapter->securitypriv); u8 ret = _SUCCESS; - bdefaultkey = (wep->KeyIndex & 0x40000000) > 0 ? _FALSE : _TRUE; /* for ??? */ - btransmitkey = (wep->KeyIndex & 0x80000000) > 0 ? _TRUE : _FALSE; /* for ??? */ + /*bdefaultkey = (wep->KeyIndex & 0x40000000) > 0 ? _FALSE : _TRUE;*/ + /*btransmitkey = (wep->KeyIndex & 0x80000000) > 0 ? _TRUE : _FALSE;*/ keyid = wep->KeyIndex & 0x3fffffff; if (keyid >= 4) { @@ -774,11 +780,9 @@ u8 rtw_set_802_11_add_wep(_adapter *padapter, NDIS_802_11_WEP *wep) if (res == _FAIL) ret = _FALSE; + exit: - - return ret; - } /* @@ -817,14 +821,14 @@ u16 rtw_get_cur_max_rate(_adapter *adapter) short_GI = query_ra_short_GI(psta, rtw_get_tx_bw_mode(adapter, psta)); #ifdef CONFIG_80211N_HT - if (is_supported_ht(psta->wireless_mode)) { + if (is_highest_support_ht(psta->wireless_mode)) { max_rate = rtw_ht_mcs_rate((psta->cmn.bw_mode == CHANNEL_WIDTH_40) ? 1 : 0 , short_GI , psta->htpriv.ht_cap.supp_mcs_set ); } #ifdef CONFIG_80211AC_VHT - else if (is_supported_vht(psta->wireless_mode)) + else if (is_highest_support_vht(psta->wireless_mode)) max_rate = ((rtw_vht_mcs_to_data_rate(psta->cmn.bw_mode, short_GI, pmlmepriv->vhtpriv.vht_highest_rate) + 1) >> 1) * 10; #endif /* CONFIG_80211AC_VHT */ else @@ -909,6 +913,15 @@ int rtw_set_channel_plan(_adapter *adapter, u8 channel_plan, u8 chplan_6g, enum int rtw_set_country(_adapter *adapter, const char *country_code, enum rtw_regd_inr inr) { #ifdef CONFIG_RTW_IOCTL_SET_COUNTRY +#if ((0 - CONFIG_RTW_IOCTL_SET_COUNTRY - 1) == 1) && ((CONFIG_RTW_IOCTL_SET_COUNTRY + 0) != -2) /* defined to empty */ +#undef CONFIG_RTW_IOCTL_SET_COUNTRY +#define CONFIG_RTW_IOCTL_SET_COUNTRY 1 +#endif +#else /* not defined */ +#define CONFIG_RTW_IOCTL_SET_COUNTRY 1 +#endif + +#if CONFIG_RTW_IOCTL_SET_COUNTRY struct registry_priv *regsty = adapter_to_regsty(adapter); if (!REGSTY_REGD_SRC_FROM_OS(regsty)) diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_mbo.c b/drivers/net/wireless/rtl8822cs/core/rtw_mbo.c index 20da58fca..d5f3c694d 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_mbo.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_mbo.c @@ -25,7 +25,7 @@ #define RTW_MBO_INFO(fmt, arg...) \ RTW_INFO(fmt, arg) #define RTW_MBO_DUMP(str, data, len) \ - RTW_INFO_DUMP(str, data, len) + RTW_INFO_DUMP(str, data, len) #else #define RTW_MBO_INFO(fmt, arg...) do {} while (0) #define RTW_MBO_DUMP(str, data, len) do {} while (0) @@ -42,15 +42,18 @@ module_param(rtw_mbo_cell_data_conn, int, 0644); static u8 wfa_mbo_oui[] = {0x50, 0x6F, 0x9A, 0x16}; -#define rtw_mbo_get_oui(p) ((u8 *)(p) + 2) +#define rtw_mbo_get_oui(p) ((u8 *)(p) + 2) -#define rtw_mbo_get_attr_id(p) ((u8 *)(p)) +#define rtw_mbo_get_attr_id(p) ((u8 *)(p)) -#define rtw_mbo_get_disallow_res(p) ((u8 *)(p) + 3) +#define rtw_mbo_get_disallow_res(p) ((u8 *)(p) + 3) #define rtw_mbo_set_1byte_ie(p, v, l) \ rtw_set_fixed_ie((p), 1, (v), (l)) +#define rtw_mbo_set_2byte_ie(p, v, l) \ + rtw_set_fixed_ie((p), 2, (v), (l)) + #define rtw_mbo_set_4byte_ie(p, v, l) \ rtw_set_fixed_ie((p), 4, (v), (l)) @@ -68,60 +71,66 @@ static u8 wfa_mbo_oui[] = {0x50, 0x6F, 0x9A, 0x16}; _offset++; \ } \ } while(0) - + static u8 *rtw_mbo_ie_get(u8 *pie, u32 *plen, u32 limit) { const u8 *p = pie; u32 tmp, i; - + if (limit <= 1) return NULL; i = 0; *plen = 0; while (1) { - if ((*p == _VENDOR_SPECIFIC_IE_) && + if ((*p == _VENDOR_SPECIFIC_IE_) && (_rtw_memcmp(rtw_mbo_get_oui(p), wfa_mbo_oui, 4))) { *plen = *(p + 1); - RTW_MBO_DUMP("VENDOR_SPECIFIC_IE MBO: ", p, *(p + 1)); + /* RTW_MBO_DUMP("VENDOR_SPECIFIC_IE MBO: ", p, *(p + 1)); */ return (u8 *)p; } else { tmp = *(p + 1); p += (tmp + 2); i += (tmp + 2); } - + if (i >= limit) break; } - - return NULL; + + return NULL; } -static u8 *rtw_mbo_attrs_get(u8 *pie, u32 limit, u8 attr_id, u32 *attr_len) +static u8 *rtw_mbo_attrs_get(u8 *pie, + u32 limit, u8 attr_id,u32 *attr_len, u8 dbg) { u8 *p = NULL; u32 offset, plen = 0; if ((pie == NULL) || (limit <= 1)) goto exit; - + if ((p = rtw_mbo_ie_get(pie, &plen, limit)) == NULL) goto exit; /* shift 2 + OUI size and move to attributes content */ p = p + 2 + sizeof(wfa_mbo_oui); plen = plen - 4; - RTW_MBO_DUMP("Attributes contents: ", p, plen); + + if (dbg) + RTW_MBO_DUMP("Attributes contents: ", p, plen); if ((p = rtw_get_ie(p, attr_id, attr_len, plen)) == NULL) goto exit; - RTW_MBO_INFO("%s : id=%u(len=%u)\n", __func__, attr_id, *attr_len); - RTW_MBO_DUMP("contents : ", p, *attr_len); + if (dbg) { + RTW_MBO_INFO("%s : id=%u(len=%u)\n", + __func__, attr_id, *attr_len); + RTW_MBO_DUMP("contents : ", (p + 2), *attr_len); + } exit: - return p; + return p; } @@ -133,22 +142,32 @@ static u32 rtw_mbo_attr_sz_get( switch (id) { case RTW_MBO_ATTR_NPREF_CH_RPT_ID: { - struct rf_ctl_t *prfctl = adapter_to_rfctl(padapter); - struct npref_ch_rtp *prpt = &(prfctl->ch_rtp); + struct rf_ctl_t *prfctl = \ + adapter_to_rfctl(padapter); + struct npref_ch_rtp *prpt = \ + &(prfctl->ch_rtp); struct npref_ch* pch; u32 i, attr_len, offset; for (i=0; i < prpt->nm_of_rpt; i++) { pch = &prpt->ch_rpt[i]; - /*attr_len = ch list + op class + preference + reason */ + /*attr_len = ch list + op class + + preference + reason */ attr_len = pch->nm_of_ch + 3; - /* offset = id + len field + attr_len */ + /* offset = id + len field + + attr_len */ offset = attr_len + 2; len += offset; - } + } } break; + case RTW_MBO_ATTR_ASSOC_RETRY_DELAY_ID: + len = 4; + break; + case RTW_MBO_ATTR_AP_CAP_ID: case RTW_MBO_ATTR_CELL_DATA_CAP_ID: + case RTW_MBO_ATTR_ASSOC_DISABLED_ID: + case RTW_MBO_ATTR_TRANS_RES_ID: case RTW_MBO_ATTR_TRANS_REJ_ID: len = 3; break; @@ -163,11 +182,12 @@ static void rtw_mbo_build_mbo_ie_hdr( u8 **pframe, struct pkt_attrib *pattrib, u8 payload_len) { u8 eid = RTW_MBO_EID; - u8 len = payload_len + 4; + u8 len = payload_len + 4; *pframe = rtw_mbo_set_1byte_ie(*pframe, &eid, &(pattrib->pktlen)); *pframe = rtw_mbo_set_1byte_ie(*pframe, &len, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_4byte_ie(*pframe, wfa_mbo_oui, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_4byte_ie(*pframe, + wfa_mbo_oui, &(pattrib->pktlen)); } void rtw_mbo_build_cell_data_cap_attr( @@ -180,38 +200,108 @@ void rtw_mbo_build_cell_data_cap_attr( /* used Cellular Data Capabilities from supplicant */ if (!rtw_mbo_wifi_logo_test(padapter) && - pmlmepriv->pcell_data_cap_ie && pmlmepriv->cell_data_cap_len == 1) { + pmlmepriv->pcell_data_cap_ie && + pmlmepriv->cell_data_cap_len == 1) { cell_data_con = *pmlmepriv->pcell_data_cap_ie; - RTW_MBO_INFO("%s : used Cellular Data Capabilities(%u) from supplicant!\n", - __func__, *pmlmepriv->pcell_data_cap_ie); } - + *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_id, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_len, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &cell_data_con, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_len, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &cell_data_con, &(pattrib->pktlen)); +} + + +static void rtw_mbo_build_ap_cap_Indication_attr( + _adapter *padapter, u8 **pframe, + struct pkt_attrib *pattrib, u8 cap_ind) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 attr_id = RTW_MBO_ATTR_AP_CAP_ID; + u8 attr_len = 1; + u8 ap_cap_ind = cap_ind; + + *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_id, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_len, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &ap_cap_ind, &(pattrib->pktlen)); +} + +static void rtw_mbo_build_ap_disallowed_attr( + _adapter *padapter, u8 **pframe, + struct pkt_attrib *pattrib, u8 code) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 attr_id = RTW_MBO_ATTR_ASSOC_DISABLED_ID; + u8 attr_len = 1; + u8 reason = 0; + + if (code > 0) { + reason = code; + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &attr_id, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &attr_len, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &reason, &(pattrib->pktlen)); + } +} + +static void rtw_mbo_build_ap_trans_reason_attr( + _adapter *padapter, u8 **pframe, + struct pkt_attrib *pattrib, u8 code) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 attr_id = RTW_MBO_ATTR_TRANS_RES_ID; + u8 attr_len = 1; + u8 reason = 0; + + reason = code; + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &attr_id, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &attr_len, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &reason, &(pattrib->pktlen)); + } + +static void rtw_mbo_build_ap_assoc_retry_delay_attr( + _adapter *padapter, u8 **pframe, + struct pkt_attrib *pattrib, u16 code) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 attr_id = RTW_MBO_ATTR_ASSOC_RETRY_DELAY_ID; + u8 attr_len = 2; + u16 delay = 0; + + delay = code; + *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_id, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_len, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_2byte_ie(*pframe, + (u8 *)&delay, &(pattrib->pktlen)); } static void rtw_mbo_update_cell_data_cap( _adapter *padapter, u8 *pie, u32 ie_len) { struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - u8 *mbo_attr; + u8 *mbo_attr; u32 mbo_attrlen; if ((pie == NULL) || (ie_len == 0)) return; - mbo_attr = rtw_mbo_attrs_get(pie, ie_len, - RTW_MBO_ATTR_CELL_DATA_CAP_ID, &mbo_attrlen); + mbo_attr = rtw_mbo_attrs_get(pie, ie_len, + RTW_MBO_ATTR_CELL_DATA_CAP_ID, &mbo_attrlen, 0); if ((mbo_attr == NULL) || (mbo_attrlen == 0) ) { RTW_INFO("MBO : Cellular Data Capabilities not found!\n"); return; } - rtw_buf_update(&pmlmepriv->pcell_data_cap_ie, + rtw_buf_update(&pmlmepriv->pcell_data_cap_ie, &pmlmepriv->cell_data_cap_len, (mbo_attr + 2), mbo_attrlen); - RTW_MBO_DUMP("rtw_mbo_update_cell_data_cap : ", + RTW_MBO_DUMP("rtw_mbo_update_cell_data_cap : ", pmlmepriv->pcell_data_cap_ie, pmlmepriv->cell_data_cap_len); } @@ -224,7 +314,7 @@ void rtw_mbo_update_ie_data( static u8 rtw_mbo_current_op_class_get(_adapter *padapter) { struct rf_ctl_t *prfctl = adapter_to_rfctl(padapter); - struct p2p_channels *pch_list = &(prfctl->channel_list); + struct p2p_channels *pch_list = &(prfctl->channel_list); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct p2p_reg_class *preg_class; int class_idx, ch_idx; @@ -233,22 +323,25 @@ static u8 rtw_mbo_current_op_class_get(_adapter *padapter) for(class_idx =0; class_idx < pch_list->reg_classes; class_idx++) { preg_class = &pch_list->reg_class[class_idx]; for (ch_idx = 0; ch_idx <= preg_class->channels; ch_idx++) { - if (pmlmeext->cur_channel == preg_class->channel[ch_idx]) { + if (pmlmeext->cur_channel == \ + preg_class->channel[ch_idx]) { cur_op_class = preg_class->reg_class; - RTW_MBO_INFO("%s : current ch : %d, op class : %d\n", - __func__, pmlmeext->cur_channel, cur_op_class); + RTW_MBO_INFO("%s : current ch : %d," + " op class : %d\n", + __func__, pmlmeext->cur_channel, + cur_op_class); break; } } } - + return cur_op_class; } static void rtw_mbo_supp_op_classes_get(_adapter *padapter, u8 *pclasses) { struct rf_ctl_t *prfctl = adapter_to_rfctl(padapter); - struct p2p_channels *pch_list = &(prfctl->channel_list); + struct p2p_channels *pch_list = &(prfctl->channel_list); int class_idx; if (pclasses == NULL) @@ -256,11 +349,12 @@ static void rtw_mbo_supp_op_classes_get(_adapter *padapter, u8 *pclasses) RTW_MBO_INFO("%s : support op class \n", __func__); for(class_idx = 0; class_idx < pch_list->reg_classes; class_idx++) { - *(pclasses + class_idx) = pch_list->reg_class[class_idx].reg_class; - RTW_MBO_INFO("%u ,", *(pclasses + class_idx)); + *(pclasses + class_idx) = \ + pch_list->reg_class[class_idx].reg_class; + RTW_MBO_INFO("%u ,", *(pclasses + class_idx)); } - RTW_MBO_INFO("%s : \n", __func__); + RTW_MBO_INFO("%s : \n", __func__); } void rtw_mbo_build_supp_op_class_elem( @@ -283,11 +377,11 @@ void rtw_mbo_build_supp_op_class_elem( RTW_MBO_DUMP("op class :", payload, reg_class_nm); - /* Current Operating Class field + Operating Class field + /* Current Operating Class field + Operating Class field + OneHundredAndThirty Delimiter field */ - len = reg_class_nm + 3; - *pframe = rtw_set_ie(*pframe, EID_SupRegulatory, len , - payload, &(pattrib->pktlen)); + len = reg_class_nm + 3; + *pframe = rtw_set_ie(*pframe, EID_SupRegulatory, len, + payload, &(pattrib->pktlen)); } static u8 rtw_mbo_construct_npref_ch_rpt_attr( @@ -303,7 +397,7 @@ static u8 rtw_mbo_construct_npref_ch_rpt_attr( if (prpt->nm_of_rpt == 0) { *plen = 0; return _FALSE; - } + } for (i=0; i < prpt->nm_of_rpt; i++) { pch = &prpt->ch_rpt[i]; @@ -321,7 +415,7 @@ static u8 rtw_mbo_construct_npref_ch_rpt_attr( *plen += offset; if (*plen >= buf_len) { - RTW_ERR("MBO : construct non-preferred channel report fail!\n"); + RTW_ERR("MBO : construct non-preferred-ch rpt fail!\n"); return _FALSE; } } @@ -342,19 +436,22 @@ void rtw_mbo_build_npref_ch_rpt_attr( if (ptmp == NULL) return; - if (rtw_mbo_construct_npref_ch_rpt_attr(padapter, ptmp, tmp_sz, &body_len) == _FALSE) { + if (rtw_mbo_construct_npref_ch_rpt_attr( + padapter, ptmp, tmp_sz, &body_len) == _FALSE) { rtw_mfree(ptmp, tmp_sz); return; - } + } RTW_MBO_DUMP("Non-preferred Channel Report :", ptmp, body_len); - *pframe = rtw_mbo_set_nbyte_ie(*pframe, body_len, ptmp, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_nbyte_ie(*pframe, body_len, + ptmp, &(pattrib->pktlen)); rtw_mfree(ptmp, tmp_sz); } void rtw_mbo_build_trans_reject_reason_attr( - _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib, u8 *pres) + _adapter *padapter, u8 **pframe, + struct pkt_attrib *pattrib, u8 *pres) { u8 attr_id = RTW_MBO_ATTR_TRANS_REJ_ID; u8 attr_len = 1; @@ -362,13 +459,14 @@ void rtw_mbo_build_trans_reject_reason_attr( len = rtw_mbo_attr_sz_get(padapter, RTW_MBO_ATTR_TRANS_REJ_ID); if ((len == 0) || (len > 3)) { - RTW_ERR("MBO : build Transition Rejection Reason attribute fail(len=%u)\n", len); + RTW_ERR("MBO : build Transition Rejection Reason" + " attribute fail(len=%u)\n", len); return; } - + rtw_mbo_build_mbo_ie_hdr(pframe, pattrib, len); *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_id, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_len, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, &attr_len, &(pattrib->pktlen)); *pframe = rtw_mbo_set_1byte_ie(*pframe, pres, &(pattrib->pktlen)); } @@ -378,52 +476,60 @@ u8 rtw_mbo_disallowed_network(struct wlan_network *pnetwork) u32 attr_len = 0; u8 disallow = _FALSE; - if (pnetwork == NULL) - goto exit; - - p = rtw_mbo_attrs_get(pnetwork->network.IEs, - pnetwork->network.IELength, - RTW_MBO_ATTR_ASSOC_DISABLED_ID, - &attr_len); - - if (p == NULL) { - RTW_MBO_INFO("%s :Assoc Disallowed attribute not found!\n",__func__); + if ((pnetwork == NULL) || \ + ((p = rtw_mbo_attrs_get( + pnetwork->network.IEs, + pnetwork->network.IELength, + RTW_MBO_ATTR_ASSOC_DISABLED_ID, + &attr_len, 0)) == NULL)) { goto exit; } - + RTW_MBO_DUMP("Association Disallowed attribute :",p , attr_len + 2); RTW_INFO("MBO : block "MAC_FMT" assoc disallowed reason %d\n", - MAC_ARG(pnetwork->network.MacAddress), *(rtw_mbo_get_disallow_res(p))); + MAC_ARG(pnetwork->network.MacAddress), + *(rtw_mbo_get_disallow_res(p))); disallow = _TRUE; exit: return disallow; } -void rtw_mbo_build_exented_cap( +void rtw_mbo_build_extended_cap( _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib) { - u8 content[8] = { 0 }; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - rtw_wnm_set_ext_cap_btm(content, 1); - rtw_mbo_set_ext_cap_internw(content, 1); - *pframe = rtw_set_ie(*pframe, - WLAN_EID_EXT_CAP, - 8, - content, + if (!rtw_mbo_wifi_logo_test(padapter)) + return; + + rtw_wnm_add_btm_ext_cap(pmlmepriv->ext_capab_ie_data, + &(pmlmepriv->ext_capab_ie_len)); + rtw_mbo_add_internw_ext_cap(pmlmepriv->ext_capab_ie_data, + &(pmlmepriv->ext_capab_ie_len)); + *pframe = rtw_set_ie(*pframe, + WLAN_EID_EXT_CAP, + pmlmepriv->ext_capab_ie_len, + pmlmepriv->ext_capab_ie_data, &(pattrib->pktlen)); } static void rtw_mbo_non_pref_chans_dump(struct npref_ch* pch) { int i; - u8 buf[128] = {0}; + u8 *buf = NULL, offset = 0; + + buf = (u8 *)rtw_zmalloc(512); + if (!buf) + return; for (i=0; i < pch->nm_of_ch; i++) - rtw_sprintf(buf, 128, "%s,%d", buf, pch->chs[i]); + offset += rtw_sprintf(&buf[offset], + sizeof(buf) - 1, "%d ", pch->chs[i]); - RTW_MBO_INFO("%s : op_class=%01x, ch=%s, preference=%d, reason=%d\n", - __func__, pch->op_class, buf, pch->preference, pch->reason); + RTW_MBO_INFO("%s : op_class=%01x, ch=%s, preference=%d, reason=%d\n", + __func__, pch->op_class, buf, pch->preference, pch->reason); + rtw_mfree(buf, 512); } static u8 rtw_mbo_non_pref_chan_exist(struct npref_ch* pch, u8 ch) @@ -437,7 +543,7 @@ static u8 rtw_mbo_non_pref_chan_exist(struct npref_ch* pch, u8 ch) break; } } - + return found; } @@ -454,7 +560,7 @@ static struct npref_ch* rtw_mbo_non_pref_chan_get( for (i=0; i < prpt->nm_of_rpt; i++) { if ((prpt->ch_rpt[i].op_class == op_class) && - (prpt->ch_rpt[i].preference == prefe) && + (prpt->ch_rpt[i].preference == prefe) && (prpt->ch_rpt[i].reason == res)) { pch = &prpt->ch_rpt[i]; break; @@ -465,7 +571,8 @@ static struct npref_ch* rtw_mbo_non_pref_chan_get( } static void rtw_mbo_non_pref_chan_set( - struct npref_ch* pch, u8 op_class, u8 ch, u8 prefe, u8 res, u8 update) + struct npref_ch* pch, u8 op_class, + u8 ch, u8 prefe, u8 res, u8 update) { u32 offset = pch->nm_of_ch; @@ -491,14 +598,15 @@ static void rtw_mbo_non_pref_chans_update( struct npref_ch* pch; if (pch_rpt->nm_of_rpt >= RTW_MBO_MAX_CH_RPT_NUM) { - RTW_ERR("MBO : %d non_pref_chan entries supported!", + RTW_ERR("MBO : %d non_pref_chan entries supported!", RTW_MBO_MAX_CH_RPT_NUM); return; } if (pch_rpt->nm_of_rpt == 0) { pch = &pch_rpt->ch_rpt[0]; - rtw_mbo_non_pref_chan_set(pch, op_class, ch, prefe, res, _FALSE); + rtw_mbo_non_pref_chan_set(pch, op_class, + ch, prefe, res, _FALSE); pch_rpt->nm_of_rpt = 1; return; } @@ -506,10 +614,13 @@ static void rtw_mbo_non_pref_chans_update( pch = rtw_mbo_non_pref_chan_get(padapter, op_class, prefe, res); if (pch == NULL) { pch = &pch_rpt->ch_rpt[pch_rpt->nm_of_rpt]; - rtw_mbo_non_pref_chan_set(pch, op_class, ch, prefe, res, _FALSE); + rtw_mbo_non_pref_chan_set(pch, op_class, + ch, prefe, res, _FALSE); pch_rpt->nm_of_rpt++; - } else - rtw_mbo_non_pref_chan_set(pch, op_class, ch, prefe, res, _TRUE); + } else { + rtw_mbo_non_pref_chan_set(pch, op_class, + ch, prefe, res, _TRUE); + } rtw_mbo_non_pref_chans_dump(pch); } @@ -520,22 +631,23 @@ static void rtw_mbo_non_pref_chans_set( char *pnext; u32 op_class, ch, prefe, res; int i = 0; - + do { pnext = strsep(¶m, " "); if (pnext == NULL) break; sscanf(pnext, "%d:%d:%d:%d", &op_class, &ch, &prefe, &res); - rtw_mbo_non_pref_chans_update(padapter, op_class, ch, prefe, res); - + rtw_mbo_non_pref_chans_update(padapter, op_class, + ch, prefe, res); + if ((i++) > 10) { RTW_ERR("MBO : overflow %d \n", i); break; } - - } while(param != '\0'); - + + } while(param); + } static void rtw_mbo_non_pref_chans_del( @@ -543,45 +655,55 @@ static void rtw_mbo_non_pref_chans_del( { struct rf_ctl_t *prfctl = adapter_to_rfctl(padapter); struct npref_ch_rtp *prpt = &(prfctl->ch_rtp); - + RTW_INFO("%s : delete non_pref_chan %s\n", __func__, param); _rtw_memset(prpt, 0, sizeof(struct npref_ch_rtp)); } ssize_t rtw_mbo_proc_non_pref_chans_set( - struct file *pfile, const char __user *buffer, + struct file *pfile, const char __user *buffer, size_t count, loff_t *pos, void *pdata) { struct net_device *dev = pdata; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - u8 tmp[128] = {0}; + u8 *tmp = NULL; if (count < 1) return -EFAULT; - if (count > sizeof(tmp)) { + if (count > 128) { rtw_warn_on(1); return -EFAULT; } + tmp = (u8 *)rtw_zmalloc(128); + if (!tmp) + return -ENOMEM; + if (buffer && !copy_from_user(tmp, buffer, count)) { - if (strncmp(tmp, "add", 3) == 0) - rtw_mbo_non_pref_chans_set(padapter, &tmp[4], (count - 4)); - else if (strncmp(tmp, "delete", 6) == 0) - rtw_mbo_non_pref_chans_del(padapter, &tmp[7], (count - 7)); - else { - RTW_ERR("MBO : Invalid format : echo [add|delete] :::\n"); + if (strncmp(tmp, "add", 3) == 0) { + rtw_mbo_non_pref_chans_set(padapter, + &tmp[4], (count - 4)); + } else if (strncmp(tmp, "delete", 6) == 0) { + rtw_mbo_non_pref_chans_del(padapter, + &tmp[7], (count - 7)); + } else { + RTW_ERR("MBO : Invalid format : echo [add|delete]" + " :::\n"); + rtw_mfree(tmp, 128); return -EFAULT; } - } + } #ifdef CONFIG_RTW_WNM if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE) && - check_fwstate(pmlmepriv, WIFI_STATION_STATE)) - rtw_wnm_issue_action(padapter, RTW_WLAN_ACTION_WNM_NOTIF_REQ, 0, 0); + check_fwstate(pmlmepriv, WIFI_STATION_STATE)) + rtw_wnm_issue_action(padapter, + RTW_WLAN_ACTION_WNM_NOTIF_REQ, 0, 0); #endif - + + rtw_mfree(tmp, 128); return count; } @@ -594,31 +716,34 @@ int rtw_mbo_proc_non_pref_chans_get( struct npref_ch_rtp *prpt = &(prfctl->ch_rtp); struct npref_ch* pch; int i,j; - u8 buf[32] = {0}; + u8 *buf = NULL, offset = 0; RTW_PRINT_SEL(m, "op_class ch preference reason \n"); RTW_PRINT_SEL(m, "=======================================================\n"); - + if (prpt->nm_of_rpt == 0) { RTW_PRINT_SEL(m, " empty table \n"); return 0; } - for (i=0; i < prpt->nm_of_rpt; i++) { - pch = &prpt->ch_rpt[i]; - buf[0]='\0'; - for (j=0; j < pch->nm_of_ch; j++) { - if (j == 0) - rtw_sprintf(buf, 32, "%02u", pch->chs[j]); - else - rtw_sprintf(buf, 32, "%s,%02u", buf, pch->chs[j]); - } + buf = (u8 *)rtw_zmalloc(512); + if (!buf) + return -ENOMEM; - RTW_PRINT_SEL(m, " %04u %20s %02u %02u\n", - pch->op_class, buf, pch->preference, pch->reason); + for (i=0; i < prpt->nm_of_rpt; i++) { + pch = &prpt->ch_rpt[i]; + _rtw_memset(buf, 0, 512); + offset = 0; + + for (j=0; j < pch->nm_of_ch; j++) + offset += rtw_sprintf(&buf[offset], sizeof(buf) - 1, + "%02u ", pch->chs[j]); + + RTW_PRINT_SEL(m, " %02u %20s %02u %02u\n", + pch->op_class, buf, pch->preference, pch->reason); } - + rtw_mfree(buf, 512); return 0; } @@ -644,13 +769,14 @@ ssize_t rtw_mbo_proc_cell_data_set( rtw_mbo_cell_data_conn = mbo_cell_data; #ifdef CONFIG_RTW_WNM if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE) && - check_fwstate(pmlmepriv, WIFI_STATION_STATE)) - rtw_wnm_issue_action(padapter, RTW_WLAN_ACTION_WNM_NOTIF_REQ, 0, 0); + check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { + rtw_wnm_issue_action(padapter, + RTW_WLAN_ACTION_WNM_NOTIF_REQ, 0, 0); + } #endif } } - return count; } @@ -662,7 +788,393 @@ int rtw_mbo_proc_cell_data_get( _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); #endif - RTW_PRINT_SEL(m, "Cellular Data Connectivity : %d\n", rtw_mbo_cell_data_conn); + RTW_PRINT_SEL(m, "Cellular Data Connectivity : %d\n", + rtw_mbo_cell_data_conn); + return 0; +} + + +static void rtw_mbo_disassoc(_adapter *padapter, u8 *da, + u8 reason, u8 wait_ack) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct rtw_ieee80211_hdr *pwlanhdr; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 *pframe; + u16 *fctrl; + int ret = _FAIL; + + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) + return; + + pmgntframe = alloc_mgtxmitframe(pxmitpriv); + if (pmgntframe == NULL) + return; + + /* update attribute */ + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + pattrib->retry_ctrl = _FALSE; + pattrib->key_type = IEEE80211W_RIGHT_KEY; + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, adapter_mac_addr(padapter), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, + get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + set_frame_sub_type(pframe, WIFI_DISASSOC); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + reason = cpu_to_le16(reason); + pframe = rtw_set_fixed_ie(pframe, _RSON_CODE_ , + (unsigned char *)&reason, &(pattrib->pktlen)); + + pattrib->last_txcmdsz = pattrib->pktlen; + if (wait_ack) + dump_mgntframe_and_wait_ack(padapter, pmgntframe); + else + dump_mgntframe(padapter, pmgntframe); + RTW_MBO_INFO("%s : reason %u\n", __func__, reason); +} + +static void rtw_mbo_construct_user_btm_req( + _adapter *padapter, struct btm_req_hdr *phdr, + u8 *purl, u32 url_len, struct wnm_btm_cant *pbtm_cant) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + struct mbo_user_btm_req_pkt *puser = &(pmbo_attr->user_raw); + struct wnm_btm_cant *puser_cant = NULL; + + if (phdr) { + puser->hdr.req_mode = phdr->req_mode; + puser->hdr.disassoc_timer = phdr->disassoc_timer; + puser->hdr.validity_interval = phdr->validity_interval; + puser->hdr.term_duration.tsf = phdr->term_duration.tsf; + puser->hdr.term_duration.duration = \ + phdr->term_duration.duration; + puser->hdr.term_duration.id = 0x4; + puser->hdr.term_duration.len = 0xa; + RTW_MBO_INFO("%s : req-mode=0x%x, disassoc_timer=%u, " + "validity_interval=%u, tsf=%llu, " + "duration=%u\n", __func__, + puser->hdr.req_mode, puser->hdr.disassoc_timer, + puser->hdr.validity_interval, + puser->hdr.term_duration.tsf, + puser->hdr.term_duration.duration); + } + + if (purl && url_len) { + /* TODO */ + } + + if (pbtm_cant) { + struct wnm_btm_cant *pbtm_tb = NULL; + u8 i, idx, found = _FALSE; + + for (i = 0; i < RTW_MAX_NB_RPT_NUM; i++) { + puser_cant = &puser->btm_cants[i]; + if (_rtw_memcmp(pbtm_cant->nb_rpt.bssid, + puser_cant->nb_rpt.bssid, ETH_ALEN)) { + puser_cant->nb_rpt.bss_info = \ + pbtm_cant->nb_rpt.bss_info; + puser_cant->nb_rpt.reg_class = \ + pbtm_cant->nb_rpt.reg_class; + puser_cant->nb_rpt.ch_num = \ + pbtm_cant->nb_rpt.ch_num; + puser_cant->nb_rpt.phy_type = \ + pbtm_cant->nb_rpt.phy_type; + puser_cant->preference = \ + pbtm_cant->preference; + idx = i; + found = _TRUE; + break; + } + } + + if (!found) { + if (puser->candidate_cnt >= RTW_MAX_NB_RPT_NUM) + puser->candidate_cnt = 0; + puser_cant = &puser->btm_cants[puser->candidate_cnt]; + puser_cant->nb_rpt.id = \ + RTW_WLAN_ACTION_WNM_NB_RPT_ELEM; + puser_cant->nb_rpt.len = 0x10; + _rtw_memcpy(puser_cant->nb_rpt.bssid, + pbtm_cant->nb_rpt.bssid, ETH_ALEN); + puser_cant->nb_rpt.bss_info = \ + pbtm_cant->nb_rpt.bss_info; + puser_cant->nb_rpt.reg_class = \ + pbtm_cant->nb_rpt.reg_class; + puser_cant->nb_rpt.ch_num = \ + pbtm_cant->nb_rpt.ch_num; + puser_cant->nb_rpt.phy_type = \ + pbtm_cant->nb_rpt.phy_type; + puser_cant->preference = \ + pbtm_cant->preference; + idx = puser->candidate_cnt; + puser->candidate_cnt++; + } + + RTW_MBO_INFO("%s:%s idx=%u, bssid("MAC_FMT")," + " bss_info(0x%04X), reg_class(0x%02X)," + " ch(%d), phy_type(0x%02X), preference(0x%02X)\n", + __func__, (found)?"update":"new", idx, + MAC_ARG(puser_cant->nb_rpt.bssid), + puser_cant->nb_rpt.bss_info, + puser_cant->nb_rpt.reg_class, + puser_cant->nb_rpt.ch_num, + puser_cant->nb_rpt.phy_type, + puser_cant->preference); + + } /* end of if (pbtm_cant) */ +} + +static void rtw_mbo_reset_user_btm_req_preference(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + struct mbo_user_btm_req_pkt *puser = &(pmbo_attr->user_raw); + struct wnm_btm_cant *puser_cant = NULL; + u8 i; + + for (i = 0; i < RTW_MAX_NB_RPT_NUM; i++) { + puser_cant = &puser->btm_cants[i]; + if (_rtw_memcmp(adapter_mac_addr(padapter), + puser_cant->nb_rpt.bssid, ETH_ALEN)) { + puser_cant->preference = 0; + RTW_MBO_INFO("%s : reset "MAC_FMT" BTM preference\n", + __func__, MAC_ARG(puser_cant->nb_rpt.bssid)); + break; + } + } + +} + +ssize_t rtw_mbo_proc_attr_set( + struct file *pfile, const char __user *buffer, + size_t count, loff_t *pos, void *pdata) +{ + struct net_device *dev = pdata; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + struct mbo_user_btm_req_pkt *puser = &(pmbo_attr->user_raw); + u32 id, val; + u8 *tmp = NULL; + + if (count < 1) + return -EFAULT; + + if (count > 64) + return -EFAULT; + + tmp = (u8 *)rtw_zmalloc(64); + if (!tmp) + return -ENOMEM; + + if (buffer && !copy_from_user(tmp, buffer, count)) { + int num = sscanf(tmp, "%d %d", &id, &val); + switch (id) { + case RTW_MBO_ATTR_AP_CAP_ID: + pmbo_attr->ap_cap_ind = val; + break; + case RTW_MBO_ATTR_CELL_DATA_CAP_ID: + pmbo_attr->cell_data_cap = val; + break; + case RTW_MBO_ATTR_ASSOC_DISABLED_ID: + pmbo_attr->assoc_disallow = val; + break; + case RTW_MBO_ATTR_TRANS_RES_ID: + pmbo_attr->reason = val; + break; + case RTW_MBO_ATTR_ASSOC_RETRY_DELAY_ID: + pmbo_attr->delay = val; + break; + case RTW_MBO_TEST_CMD_REST: + RTW_INFO("%s : RTW_MBO_TEST_CMD_REST\n", + __func__); + _rtw_memset(pmbo_attr, 0, + sizeof(struct mbo_attr_info)); + pmbo_attr->mbo_spec_test = 1; + break; + case RTW_MBO_TEST_CMD_BTM_REQ_SET: + if (count >= 10) { + struct btm_req_hdr btm_hdr; + u32 disassoc_imnt, term_bit; + u32 term_tsf, term_duration; + + _rtw_memset(&btm_hdr, 0, + sizeof(btm_hdr)); + + num = sscanf(tmp, "%d %u %u %u %u", + &id, &disassoc_imnt, + &term_bit, &term_tsf, + &term_duration); + + if (num < 5) + break; + + if (disassoc_imnt > 0) + btm_hdr.req_mode |= \ + DISASSOC_IMMINENT; + + if (term_bit > 0) + btm_hdr.req_mode |= \ + BSS_TERMINATION_INCLUDED; + + btm_hdr.term_duration.tsf = term_tsf; + btm_hdr.term_duration.duration = \ + term_duration; + + rtw_mbo_construct_user_btm_req( + padapter, &btm_hdr, NULL, 0, + NULL); + } + break; + case RTW_MBO_TEST_CMD_BTM_REQ_SEND: + if (count >= 12) { + u8 mac_str[18] = {0}; + u8 dst_mac[ETH_ALEN] = {0}; + u32 cand_list = 0, disassoc_timer = 0; + + num = sscanf(tmp, "%d %s %u %u", + &id, mac_str, &cand_list, + &disassoc_timer); + + if (num < 4) + break; + + if (sscanf(mac_str, MAC_SFMT, + MAC_SARG( + dst_mac)) != 6) { + break; + } + + puser->append_mbo_ie = _TRUE; + puser->hdr.dialog_token++; + puser->hdr.validity_interval = 0xf; + if (cand_list > 0) + puser->hdr.req_mode |= \ + PREFERRED_CANDIDATE_LIST_INCLUDED; + + + puser->hdr.disassoc_timer = \ + disassoc_timer; + + if ((puser->hdr.req_mode & \ + DISASSOC_IMMINENT) == \ + DISASSOC_IMMINENT) { + rtw_mbo_reset_user_btm_req_preference(padapter); + if (pmbo_attr->delay == 0) + pmbo_attr->delay = 1; + if (puser->hdr.disassoc_timer == 0) + puser->hdr.disassoc_timer = 1000; + } + + if ((puser->hdr.req_mode & \ + BSS_TERMINATION_INCLUDED) == \ + BSS_TERMINATION_INCLUDED) { + puser->append_mbo_ie = _FALSE; + } + + if (!puser->candidate_cnt) { + struct wnm_btm_cant cant; + _rtw_memset(&cant, 0, + sizeof(cant)); + _rtw_memcpy(cant.nb_rpt.bssid, + adapter_mac_addr(padapter), + ETH_ALEN); + cant.nb_rpt.reg_class = 115; + cant.nb_rpt.ch_num = 36; + cant.preference = 0; + rtw_mbo_construct_user_btm_req( + padapter, NULL, + NULL, 0, &cant); + } + + rtw_wnm_issue_btm_req(padapter, dst_mac, + &puser->hdr, NULL, 0, + (u8 *)&puser->btm_cants, + puser->candidate_cnt); + + if ((puser->hdr.term_duration.duration) + && (puser->hdr.req_mode & \ + BSS_TERMINATION_INCLUDED) == \ + BSS_TERMINATION_INCLUDED) { + rtw_mbo_disassoc(padapter, + dst_mac, 3, _TRUE); + } + + if ((puser->hdr.req_mode & \ + DISASSOC_IMMINENT) == \ + DISASSOC_IMMINENT) { + rtw_mbo_disassoc(padapter, + dst_mac, 3, _TRUE); + } + } /* end of if (count >= 12) */ + + break; + case RTW_MBO_TEST_CMD_NB_BSS_ADD: + if (count >= 12) { + u8 bss_str[18]; + struct wnm_btm_cant cant; + u32 op, op_ch, perf; + + num = sscanf(tmp, "%d %s %u %u %u", + &id, bss_str, &op, &op_ch, + &perf); + if (num < 5) + break; + _rtw_memset(&cant, 0, sizeof(cant)); + if (sscanf(bss_str, MAC_SFMT, + MAC_SARG( + cant.nb_rpt.bssid)) != 6) { + break; + } + + cant.nb_rpt.reg_class = op; + cant.nb_rpt.ch_num = op_ch; + cant.preference = perf; + rtw_mbo_construct_user_btm_req( + padapter, NULL, NULL, 0, + &cant); + } /* end of if (count >= 12) */ + break; + default: + break; + } + } + rtw_mfree(tmp, 64); + return count; +} + +int rtw_mbo_proc_attr_get( + struct seq_file *m, void *v) +{ + struct net_device *dev = m->private; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + + RTW_PRINT_SEL(m, "AP Capability Indication : %d\n", + pmbo_attr->ap_cap_ind); + RTW_PRINT_SEL(m, "Cellular Data Capabilities : %d\n", + pmbo_attr->cell_data_cap); + RTW_PRINT_SEL(m, "Association Disallowed : %d\n", + pmbo_attr->assoc_disallow); return 0; } @@ -670,14 +1182,15 @@ static void rtw_mbo_non_pref_chan_subelem_parsing( _adapter *padapter, u8 *subelem, size_t subelem_len) { u8 *pnon_pref_chans; - u32 non_pref_chan_offset, op_subelem_len; + u32 non_pref_chan_offset, op_subelem_len; u32 oui_offset = 3; /* wpa_supplicant don't apped OUI Type */ u32 oui_type_offset = 0; - RTW_MBO_DUMP("Non-preferred Channel subelem : ", subelem , subelem_len); + RTW_MBO_DUMP("Non-preferred Channel subelem : ", + subelem , subelem_len); - /* Subelem : + /* Subelem : Vendor Specific | Length | WFA OUI | OUI Type | MBO Attributes */ non_pref_chan_offset = 2 + oui_offset + oui_type_offset; pnon_pref_chans = subelem + non_pref_chan_offset; @@ -685,32 +1198,34 @@ static void rtw_mbo_non_pref_chan_subelem_parsing( /* wpa_supplicant don't indicate non_pref_chan length, so we cannot get how many non_pref_chan in a wnm notification */ - RTW_MBO_DUMP("Non-preferred Channel : ", pnon_pref_chans, op_subelem_len); + RTW_MBO_DUMP("Non-preferred Channel : ", + pnon_pref_chans, op_subelem_len); } void rtw_mbo_wnm_notification_parsing( _adapter *padapter, const u8 *pdata, size_t data_len) { u8 *paction; - u8 category, action, dialog, type; + /* u8 category, action, dialog, type; */ + u8 action, type; u32 len; if ((pdata == NULL) || (data_len == 0)) return; - RTW_MBO_DUMP("WNM notification data : ", pdata, data_len); + RTW_MBO_DUMP("WNM notification data : ", pdata, data_len); paction = (u8 *)pdata + sizeof(struct rtw_ieee80211_hdr_3addr); - category = paction[0]; + /* category = paction[0]; */ action = paction[1]; - dialog = paction[2]; + /* dialog = paction[2]; */ type = paction[3]; - if ((action == RTW_WLAN_ACTION_WNM_NOTIF_REQ) && + if ((action == RTW_WLAN_ACTION_WNM_NOTIF_REQ) && (type == WLAN_EID_VENDOR_SPECIFIC)) { - rtw_mbo_non_pref_chan_subelem_parsing(padapter, &paction[4], + rtw_mbo_non_pref_chan_subelem_parsing(padapter, &paction[4], (data_len - sizeof(struct rtw_ieee80211_hdr_3addr))); } - + } void rtw_mbo_build_wnm_notification( @@ -723,44 +1238,68 @@ void rtw_mbo_build_wnm_notification( u8 non_pref_ch_oui[] = {0x50, 0x6F, 0x9A, 0x2}; u8 cell_data_cap_oui[] = {0x50, 0x6F, 0x9A, 0x3}; u8 cell_data_con = rtw_mbo_cell_data_conn; - u8 len, cell_data_con_len = 0, *pcont = *pframe; + u8 len, cell_data_con_len = 0; +#if RTW_MBO_DBG + u8 *pcont = *pframe; +#endif int i; if (rtw_mbo_cell_data_conn > 0) { len = 0x5; - *pframe = rtw_mbo_set_1byte_ie(*pframe, &subelem_id, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &len, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_4byte_ie(*pframe, cell_data_cap_oui, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &cell_data_con, &(pattrib->pktlen)); - RTW_MBO_INFO("%s : Cellular Data Capabilities subelemen\n", __func__); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &subelem_id, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &len, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_4byte_ie(*pframe, + cell_data_cap_oui, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &cell_data_con, &(pattrib->pktlen)); +#if RTW_MBO_DBG + RTW_MBO_INFO("%s : Cellular Data Capabilities subelemen\n", + __func__); RTW_MBO_DUMP(":", pcont, len + 2); pcont += len + 2 ; +#endif } if (prpt->nm_of_rpt == 0) { len = 0x4; - *pframe = rtw_mbo_set_1byte_ie(*pframe, &subelem_id, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &len, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_4byte_ie(*pframe, non_pref_ch_oui, &(pattrib->pktlen)); - RTW_MBO_INFO("%s :Non-preferred Channel Report subelement without data\n", __func__); - return; + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &subelem_id, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &len, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_4byte_ie(*pframe, + non_pref_ch_oui, &(pattrib->pktlen)); + RTW_MBO_INFO("%s :Non-preferred Channel Report subelement" + " without data\n", __func__); + return; } for (i=0; i < prpt->nm_of_rpt; i++) { - pch = &prpt->ch_rpt[i]; - /* OUI(3B) + OUT-type(1B) + op-class(1B) + ch list(nB) + pch = &prpt->ch_rpt[i]; + /* OUI(3B) + OUT-type(1B) + op-class(1B) + ch list(nB) + Preference(1B) + reason(1B) */ len = pch->nm_of_ch + 7; - *pframe = rtw_mbo_set_1byte_ie(*pframe, &subelem_id, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &len, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_4byte_ie(*pframe, non_pref_ch_oui, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &pch->op_class, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_nbyte_ie(*pframe, pch->nm_of_ch, pch->chs, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &pch->preference, &(pattrib->pktlen)); - *pframe = rtw_mbo_set_1byte_ie(*pframe, &pch->reason, &(pattrib->pktlen)); - RTW_MBO_INFO("%s :Non-preferred Channel Report subelement\n", __func__); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &subelem_id, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &len, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_4byte_ie(*pframe, + non_pref_ch_oui, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &pch->op_class, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_nbyte_ie(*pframe, + pch->nm_of_ch, pch->chs, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &pch->preference, &(pattrib->pktlen)); + *pframe = rtw_mbo_set_1byte_ie(*pframe, + &pch->reason, &(pattrib->pktlen)); +#if RTW_MBO_DBG + RTW_MBO_INFO("%s :Non-preferred Channel Report" + " subelement\n", __func__); RTW_MBO_DUMP(":", pcont, len); pcont = *pframe; +#endif } } @@ -768,15 +1307,16 @@ void rtw_mbo_build_probe_req_ies( _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib) { u32 len =0; - - rtw_mbo_build_exented_cap(padapter, pframe, pattrib); + + rtw_mbo_build_extended_cap(padapter, pframe, pattrib); len = rtw_mbo_attr_sz_get(padapter, RTW_MBO_ATTR_CELL_DATA_CAP_ID); if ((len == 0) || (len > 3)) { - RTW_ERR("MBO : build Cellular Data Capabilities attribute fail(len=%u)\n", len); + RTW_ERR("MBO : build Cellular Data Capabilities" + " attribute fail(len=%u)\n", len); return; } - + rtw_mbo_build_mbo_ie_hdr(pframe, pattrib, len); rtw_mbo_build_cell_data_cap_attr(padapter, pframe, pattrib); } @@ -785,7 +1325,7 @@ void rtw_mbo_build_assoc_req_ies( _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib) { u32 len = 0; - + rtw_mbo_build_supp_op_class_elem(padapter, pframe, pattrib); len += rtw_mbo_attr_sz_get(padapter, RTW_MBO_ATTR_CELL_DATA_CAP_ID); @@ -794,10 +1334,195 @@ void rtw_mbo_build_assoc_req_ies( RTW_ERR("MBO : build assoc MBO IE fail(len=%u)\n", len); return; } - + rtw_mbo_build_mbo_ie_hdr(pframe, pattrib, len); rtw_mbo_build_cell_data_cap_attr(padapter, pframe, pattrib); rtw_mbo_build_npref_ch_rpt_attr(padapter, pframe, pattrib); } +static void rtw_mbo_build_ap_capability( + _adapter *padapter, u8 **pframe, + struct pkt_attrib *pattrib) +{ + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + u8 *pcap = NULL; + u32 cap_len = 0, flen = 0; + + if ((pcap = rtw_mbo_attrs_get( + (cur_network->IEs + _FIXED_IE_LENGTH_), + (cur_network->IELength - _FIXED_IE_LENGTH_), + RTW_MBO_ATTR_AP_CAP_ID, &cap_len, 0)) != NULL) + return; + + flen += rtw_mbo_attr_sz_get(padapter, RTW_MBO_ATTR_AP_CAP_ID); + if (pmbo_attr->assoc_disallow > 0) + flen += rtw_mbo_attr_sz_get(padapter, + RTW_MBO_ATTR_ASSOC_DISABLED_ID); + if (flen > 0) { + rtw_mbo_build_mbo_ie_hdr(pframe, pattrib, flen); + rtw_mbo_build_ap_cap_Indication_attr(padapter, pframe, + pattrib, pmbo_attr->ap_cap_ind); + + if (pmbo_attr->assoc_disallow > 0) { + rtw_mbo_build_ap_disallowed_attr(padapter, pframe, + pattrib, pmbo_attr->assoc_disallow); + } + } /* end of if (flen > 0) */ + +} + +void rtw_mbo_attr_info_init(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + + _rtw_memset(pmbo_attr, 0, sizeof(struct mbo_attr_info)); +} + +void rtw_mbo_process_assoc_req( + _adapter *padapter, u8 *pie, int ie_len) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + u8 non_pref_ch = 0, ch_op_pref = 1; + u8 *pattr = NULL, *ptr = NULL; + u32 attr_len = 0, ch_nums = 0; + int i, j; + + if (!pie || !ie_len) + return; + + if ((pattr = rtw_mbo_attrs_get(pie, ie_len, + RTW_MBO_ATTR_NPREF_CH_RPT_ID, &attr_len, 1)) == NULL) + return; + + if (attr_len < 3) + return; + + ch_nums = (attr_len - 3); + + /* shfit to non-preferred ch rpt field */ + ptr = pattr + 3; + RTW_MBO_DUMP("non-preferred ch rpt :", ptr, ch_nums); + + ch_op_pref = *(ptr + ch_nums); + RTW_MBO_INFO("%s : ch_op_pref=0x%02x\n", __func__, ch_op_pref); + + if (ch_op_pref >= 2) { + RTW_MBO_INFO("%s : unknow ch operating preference(0x%02x)\n", + __func__, ch_op_pref); + return; + } + + for (i = 0; i < ch_nums; i++) { + if (i >= RTW_MBO_MAX_CH_LIST_NUM) + break; + non_pref_ch = *(ptr + i); + RTW_MBO_INFO("%s : non-pref ch %u found in assoc-req\n", + __func__, non_pref_ch); + + if (rtw_mbo_wifi_spec_test(padapter)) { + struct mbo_user_btm_req_pkt *puser_raw = \ + &(pmbo_attr->user_raw); + struct wnm_btm_cant *pcant = NULL; + + for (j = 0; j < RTW_MAX_NB_RPT_NUM; j++) { + pcant = &puser_raw->btm_cants[j]; + if ((pcant->nb_rpt.ch_num == non_pref_ch) && \ + (ch_op_pref == 0)) { + RTW_MBO_INFO("%s : reset " + "preference(%u) for non-preference ch\n", + __func__, pcant->preference); + pcant->preference = 0; + } + } + } + + } /* end of for-loop ch_nums */ + +} + +void rtw_mbo_build_beacon_ies( + _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib) +{ + rtw_mbo_build_ap_capability(padapter, pframe, pattrib); +} + +void rtw_mbo_build_probe_rsp_ies( + _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib) +{ + rtw_mbo_build_ap_capability(padapter, pframe, pattrib); +} + +void rtw_mbo_build_assoc_rsp_ies( + _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib) +{ + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + u8 *pcap = NULL; + u32 len = 0, cap_len = 0 ; + + /* driver would't reload all assoc-rsp ie from hostapd */ + #if 0 + if ((pcap = rtw_mbo_attrs_get( + (cur_network->IEs + _FIXED_IE_LENGTH_), + (cur_network->IELength - _FIXED_IE_LENGTH_), + RTW_MBO_ATTR_AP_CAP_ID, &cap_len, 0)) != NULL) + return; + #endif + + len += rtw_mbo_attr_sz_get(padapter, RTW_MBO_ATTR_AP_CAP_ID); + if (pmbo_attr->assoc_disallow > 0) + len += rtw_mbo_attr_sz_get(padapter, + RTW_MBO_ATTR_ASSOC_DISABLED_ID); + + if (len > 0) { + rtw_mbo_build_mbo_ie_hdr(pframe, pattrib, len); + rtw_mbo_build_ap_cap_Indication_attr( + padapter, pframe, pattrib, pmbo_attr->ap_cap_ind); + if (pmbo_attr->assoc_disallow > 0) { + rtw_mbo_build_ap_disallowed_attr(padapter, pframe, + pattrib, pmbo_attr->assoc_disallow); + } + } + +} + +void rtw_mbo_build_wnm_btmreq_reason_ies( + _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib) +{ + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + struct mbo_user_btm_req_pkt *puser = &(pmbo_attr->user_raw); + u8 *pcap = NULL; + u32 len = 0, cap_len = 0 ; + + if (!puser->append_mbo_ie) + return; + + len += rtw_mbo_attr_sz_get(padapter, RTW_MBO_ATTR_AP_CAP_ID); + len += rtw_mbo_attr_sz_get(padapter, RTW_MBO_ATTR_TRANS_RES_ID); + len += rtw_mbo_attr_sz_get(padapter, RTW_MBO_ATTR_ASSOC_RETRY_DELAY_ID); + + rtw_mbo_build_mbo_ie_hdr(pframe, pattrib, len); + + rtw_mbo_build_ap_cap_Indication_attr( + padapter, pframe, pattrib, pmbo_attr->ap_cap_ind); + + rtw_mbo_build_ap_trans_reason_attr(padapter, pframe, + pattrib, pmbo_attr->reason); + + rtw_mbo_build_ap_assoc_retry_delay_attr(padapter, pframe, + pattrib, pmbo_attr->delay); +} #endif /* CONFIG_RTW_MBO */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_mem.c b/drivers/net/wireless/rtl8822cs/core/rtw_mem.c index d42a4fb03..1b35bb6b3 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_mem.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_mem.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2016 - 2017 Realtek Corporation. + * Copyright(c) 2016 - 2022 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -13,159 +13,28 @@ * *****************************************************************************/ +#include #include #include +extern int rtkm_prealloc_init(void); +extern void rtkm_prealloc_destroy(void); + +static int __init rtw_mem_init(void) +{ + rtkm_prealloc_init(); + return 0; +} + +static void __exit rtw_mem_exit(void) +{ + rtkm_prealloc_destroy(); +} + +module_init(rtw_mem_init); +module_exit(rtw_mem_exit); + MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Realtek Wireless Lan Driver"); MODULE_AUTHOR("Realtek Semiconductor Corp."); MODULE_VERSION("DRIVERVERSION"); - -/* for MAX_RECVBUF_SZ */ -#if defined(CONFIG_RTL8188E) -#include -#elif defined(CONFIG_RTL8188F) -#include -#elif defined(CONFIG_RTL8188GTV) -#include -#elif defined(CONFIG_RTL8710B) -#include -#elif defined(CONFIG_RTL8192E) -#include -#elif defined(CONFIG_RTL8192F) -#include -#elif defined(CONFIG_RTL8723B) -#include -#elif defined(CONFIG_RTL8703B) -#include -#elif defined(CONFIG_RTL8723D) -#include -#elif defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) -#include -#elif defined(CONFIG_RTL8822B) -#include -#elif defined(CONFIG_RTL8822C) -#include -#elif defined(CONFIG_RTL8814A) -#include -#elif defined(CONFIG_RTL8814B) -#include -#endif - -#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) -#define MAX_RTKM_RECVBUF_SZ MAX_RECVBUF_SZ -#define MAX_RTKM_NR_PREALLOC_RECV_SKB NR_RECVBUFF -#else /* !CONFIG_SDIO_HCI */ -#ifdef CONFIG_PLATFORM_MSTAR_HIGH - #define MAX_RTKM_RECVBUF_SZ (31744) /* 31k */ -#else - #define MAX_RTKM_RECVBUF_SZ (15360) /* 15k */ -#endif /* CONFIG_PLATFORM_MSTAR_HIGH */ -#define MAX_RTKM_NR_PREALLOC_RECV_SKB 16 -#endif /* !CONFIG_SDIO_HCI */ - -struct sk_buff_head rtk_skb_mem_q; -struct u8 *rtk_buf_mem[NR_RECVBUFF]; - -struct u8 *rtw_get_buf_premem(int index) -{ - printk("%s, rtk_buf_mem index : %d\n", __func__, index); - return rtk_buf_mem[index]; -} - -u16 rtw_rtkm_get_buff_size(void) -{ - return MAX_RTKM_RECVBUF_SZ; -} -EXPORT_SYMBOL(rtw_rtkm_get_buff_size); - -u8 rtw_rtkm_get_nr_recv_skb(void) -{ - return MAX_RTKM_NR_PREALLOC_RECV_SKB; -} -EXPORT_SYMBOL(rtw_rtkm_get_nr_recv_skb); - -struct sk_buff *rtw_alloc_skb_premem(u16 in_size) -{ - struct sk_buff *skb = NULL; - - if (in_size > MAX_RTKM_RECVBUF_SZ) { - pr_info("warning %s: driver buffer size(%d) > rtkm buffer size(%d)\n", __func__, in_size, MAX_RTKM_RECVBUF_SZ); - WARN_ON(1); - return skb; - } - - skb = skb_dequeue(&rtk_skb_mem_q); - - printk("%s, rtk_skb_mem_q len : %d\n", __func__, skb_queue_len(&rtk_skb_mem_q)); - - return skb; -} -EXPORT_SYMBOL(rtw_alloc_skb_premem); - -int rtw_free_skb_premem(struct sk_buff *pskb) -{ - if (!pskb) - return -1; - - if (skb_queue_len(&rtk_skb_mem_q) >= MAX_RTKM_NR_PREALLOC_RECV_SKB) - return -1; - - skb_queue_tail(&rtk_skb_mem_q, pskb); - - printk("%s, rtk_skb_mem_q len : %d\n", __func__, skb_queue_len(&rtk_skb_mem_q)); - - return 0; -} -EXPORT_SYMBOL(rtw_free_skb_premem); - -static int __init rtw_mem_init(void) -{ - int i; - SIZE_PTR tmpaddr = 0; - SIZE_PTR alignment = 0; - struct sk_buff *pskb = NULL; - - printk("%s\n", __func__); - pr_info("MAX_RTKM_NR_PREALLOC_RECV_SKB: %d\n", MAX_RTKM_NR_PREALLOC_RECV_SKB); - pr_info("MAX_RTKM_RECVBUF_SZ: %d\n", MAX_RTKM_RECVBUF_SZ); - -#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX - for (i = 0; i < NR_RECVBUFF; i++) - rtk_buf_mem[i] = usb_buffer_alloc(dev, size, (in_interrupt() ? GFP_ATOMIC : GFP_KERNEL), dma); -#endif /* CONFIG_USE_USB_BUFFER_ALLOC_RX */ - - skb_queue_head_init(&rtk_skb_mem_q); - - for (i = 0; i < MAX_RTKM_NR_PREALLOC_RECV_SKB; i++) { - pskb = __dev_alloc_skb(MAX_RTKM_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); - if (pskb) { - tmpaddr = (SIZE_PTR)pskb->data; - alignment = tmpaddr & (RECVBUFF_ALIGN_SZ - 1); - skb_reserve(pskb, (RECVBUFF_ALIGN_SZ - alignment)); - - skb_queue_tail(&rtk_skb_mem_q, pskb); - } else - printk("%s, alloc skb memory fail!\n", __func__); - - pskb = NULL; - } - - printk("%s, rtk_skb_mem_q len : %d\n", __func__, skb_queue_len(&rtk_skb_mem_q)); - - return 0; - -} - -static void __exit rtw_mem_exit(void) -{ - if (skb_queue_len(&rtk_skb_mem_q)) - printk("%s, rtk_skb_mem_q len : %d\n", __func__, skb_queue_len(&rtk_skb_mem_q)); - - skb_queue_purge(&rtk_skb_mem_q); - - printk("%s\n", __func__); -} - -module_init(rtw_mem_init); -module_exit(rtw_mem_exit); diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_mi.c b/drivers/net/wireless/rtl8822cs/core/rtw_mi.c index 72d41f775..9bc9d36e2 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_mi.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_mi.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -53,7 +53,7 @@ static u8 _rtw_mi_p2p_listen_scan_chk(_adapter *adapter) #endif #endif -u8 rtw_mi_stayin_union_ch_chk(_adapter *adapter) +u8 rtw_mi_stayin_union_ch_chk(_adapter *adapter, bool fail_detail) { u8 rst = _TRUE; u8 u_ch, u_bw, u_offset; @@ -70,20 +70,20 @@ u8 rtw_mi_stayin_union_ch_chk(_adapter *adapter) if ((u_ch != o_ch) || (u_bw != o_bw) || (u_offset != o_offset)) rst = _FALSE; - #ifdef DBG_IFACE_STATUS - if (rst == _FALSE) { + if (rst == _FALSE && fail_detail) { RTW_ERR("%s Not stay in union channel\n", __func__); if (GET_HAL_DATA(adapter)->bScanInProcess == _TRUE) RTW_ERR("ScanInProcess\n"); + #ifdef DBG_IFACE_STATUS #ifdef CONFIG_P2P if (_rtw_mi_p2p_listen_scan_chk(adapter)) RTW_ERR("P2P in listen or scan state\n"); #endif + #endif RTW_ERR("union ch, bw, offset: %u,%u,%u\n", u_ch, u_bw, u_offset); RTW_ERR("oper ch, bw, offset: %u,%u,%u\n", o_ch, o_bw, o_offset); - RTW_ERR("=========================\n"); } - #endif + return rst; } @@ -187,6 +187,38 @@ inline int rtw_mi_get_ch_setting_union_no_self(_adapter *adapter, u8 *ch, u8 *bw return rtw_mi_get_ch_setting_union_by_ifbmp(adapter_to_dvobj(adapter), 0xFF & ~BIT(adapter->iface_id), ch, bw, offset); } +int rtw_mi_get_bch_setting_union_by_hwband(struct dvobj_priv *dvobj, u8 band_idx + , enum band_type *band, u8 *ch, u8 *bw, u8 *offset) +{ + /* this driver has only one hwband and 2G/5G only */ + int ret = rtw_mi_get_ch_setting_union_by_ifbmp(dvobj, 0xFF, ch, bw, offset); + + if (band) { + if (ret && ch) + *band = rtw_is_2g_ch(*ch) ? BAND_ON_24G : BAND_ON_5G; + else + *band = BAND_MAX; + } + + return ret; +} + +int rtw_mi_get_bch_setting_union_by_hwband_ifbmp(struct dvobj_priv *dvobj, u8 band_idx, u8 ifbmp + , enum band_type *band, u8 *ch, u8 *bw, u8 *offset) +{ + /* this driver has only one hwband and 2G/5G only */ + int ret = rtw_mi_get_ch_setting_union_by_ifbmp(dvobj, ifbmp, ch, bw, offset); + + if (band) { + if (ret && ch) + *band = rtw_is_2g_ch(*ch) ? BAND_ON_24G : BAND_ON_5G; + else + *band = BAND_MAX; + } + + return ret; +} + void rtw_mi_status_by_ifbmp(struct dvobj_priv *dvobj, u8 ifbmp, struct mi_state *mstate) { _adapter *iface; @@ -289,6 +321,18 @@ inline void rtw_mi_status_no_others(_adapter *adapter, struct mi_state *mstate) return rtw_mi_status_by_ifbmp(adapter_to_dvobj(adapter), BIT(adapter->iface_id), mstate); } +void rtw_mi_status_by_hwband(struct dvobj_priv *dvobj, u8 band_idx, struct mi_state *mstate) +{ + /* this driver has only one hwband, bypass band_idx */ + rtw_mi_status_by_ifbmp(dvobj, 0xFF, mstate); +} + +void rtw_mi_status_by_hwband_ifbmp(struct dvobj_priv *dvobj, u8 band_idx, u8 ifbmp, struct mi_state *mstate) +{ + /* this driver has only one hwband, bypass band_idx */ + rtw_mi_status_by_ifbmp(dvobj, ifbmp, mstate); +} + inline void rtw_mi_status_merge(struct mi_state *d, struct mi_state *a) { d->sta_num += a->sta_num; @@ -989,6 +1033,14 @@ u8 rtw_mi_buddy_check_fwstate(_adapter *padapter, sint state) return _rtw_mi_process(padapter, _TRUE, &in_data, _rtw_mi_check_fwstate); } +u8 rtw_mi_check_fwstate_by_hwband(struct dvobj_priv *dvobj, u8 band_idx, sint state) +{ + sint in_data = state; + + /* this driver has only one hwband, bypass band_idx */ + return _rtw_mi_process(dvobj_get_primary_adapter(dvobj), _FALSE, &in_data, _rtw_mi_check_fwstate); +} + static u8 _rtw_mi_traffic_statistics(_adapter *padapter , void *data) { struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); @@ -1333,11 +1385,12 @@ _adapter *rtw_get_iface_by_hwport(_adapter *padapter, u8 hw_port) #ifdef DBG_SKB_PROCESS void rtw_dbg_skb_process(_adapter *padapter, union recv_frame *precvframe, union recv_frame *pcloneframe) { + /* _pkt *pkt_copy, *pkt_org; pkt_org = precvframe->u.hdr.pkt; pkt_copy = pcloneframe->u.hdr.pkt; - /* + RTW_INFO("%s ===== ORG SKB =====\n", __func__); RTW_INFO(" SKB head(%p)\n", pkt_org->head); RTW_INFO(" SKB data(%p)\n", pkt_org->data); @@ -1382,8 +1435,8 @@ static s32 _rtw_mi_buddy_clone_bcmc_packet(_adapter *adapter, union recv_frame * s32 ret = _SUCCESS; #ifdef CONFIG_SKB_ALLOCATED u8 *pbuf = precvframe->u.hdr.rx_data; -#endif struct rx_pkt_attrib *pattrib = NULL; +#endif if (pcloneframe) { pcloneframe->u.hdr.adapter = adapter; @@ -1394,8 +1447,8 @@ static s32 _rtw_mi_buddy_clone_bcmc_packet(_adapter *adapter, union recv_frame * _rtw_memcpy(&pcloneframe->u.hdr.attrib, &precvframe->u.hdr.attrib, sizeof(struct rx_pkt_attrib)); - pattrib = &pcloneframe->u.hdr.attrib; #ifdef CONFIG_SKB_ALLOCATED + pattrib = &pcloneframe->u.hdr.attrib; if (rtw_os_alloc_recvframe(adapter, pcloneframe, pbuf, NULL) == _SUCCESS) #else if (rtw_os_recvframe_duplicate_skb(adapter, pcloneframe, precvframe->u.hdr.pkt) == _SUCCESS) @@ -1456,7 +1509,6 @@ void rtw_mi_buddy_clone_bcmc_packet(_adapter *padapter, union recv_frame *precvf } -#ifdef CONFIG_PCI_HCI /*API be created temporary for MI, caller is interrupt-handler, PCIE's interrupt handler cannot apply to multi-AP*/ _adapter *rtw_mi_get_ap_adapter(_adapter *padapter) { @@ -1476,9 +1528,43 @@ _adapter *rtw_mi_get_ap_adapter(_adapter *padapter) } return iface; } -#endif -u8 rtw_mi_get_ld_sta_ifbmp(_adapter *adapter) +u8 rtw_mi_get_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx) +{ + int i; + _adapter *iface; + u8 ifbmp = 0; + + for (i = 0; i < dvobj->iface_nums; i++) { + iface = dvobj->padapters[i]; + if (!iface) + continue; + #if 0 /* this driver has only one hwband, bypass band_idx */ + if (!rtw_iface_is_operate_at_hwband(iface, band_idx)) + continue; + #endif + ifbmp |= BIT(i); + } + + return ifbmp; +} + +_adapter *rtw_mi_get_iface_by_hwband(struct dvobj_priv *dvobj, u8 band_idx) +{ + u8 ifbmp = rtw_mi_get_ifbmp_by_hwband(dvobj, band_idx); + + if (ifbmp) { + int i; + + for (i = 0; i < dvobj->iface_nums; i++) { + if ((ifbmp & BIT(i)) && dvobj->padapters[i]) + return dvobj->padapters[i]; + } + } + return NULL; +} + +static u8 rtw_mi_get_sta_ifbmp(_adapter *adapter, u32 mlme_sbmp) { struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); int i; @@ -1490,13 +1576,35 @@ u8 rtw_mi_get_ld_sta_ifbmp(_adapter *adapter) if (!iface) continue; - if (MLME_IS_STA(iface) && MLME_IS_ASOC(iface)) + if (MLME_IS_STA(iface) && (!mlme_sbmp || CHK_MLME_STATE(iface, mlme_sbmp))) ifbmp |= BIT(i); } return ifbmp; } +u8 rtw_mi_get_ld_sta_ifbmp(_adapter *adapter) +{ + return rtw_mi_get_sta_ifbmp(adapter, WIFI_ASOC_STATE); +} + +u8 rtw_mi_get_ld_sta_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx) +{ + /* this driver has only one hwband, bypass band_idx */ + return rtw_mi_get_ld_sta_ifbmp(dvobj_get_primary_adapter(dvobj)); +} + +u8 rtw_mi_get_lgd_sta_ifbmp(_adapter *adapter) +{ + return rtw_mi_get_sta_ifbmp(adapter, WIFI_UNDER_LINKING | WIFI_ASOC_STATE); +} + +u8 rtw_mi_get_lgd_sta_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx) +{ + /* this driver has only one hwband, bypass band_idx */ + return rtw_mi_get_lgd_sta_ifbmp(dvobj_get_primary_adapter(dvobj)); +} + u8 rtw_mi_get_ap_mesh_ifbmp(_adapter *adapter) { struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); @@ -1517,6 +1625,33 @@ u8 rtw_mi_get_ap_mesh_ifbmp(_adapter *adapter) return ifbmp; } +u8 rtw_mi_get_ap_mesh_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx) +{ + /* this driver has only one hwband, bypass band_idx */ + return rtw_mi_get_ap_mesh_ifbmp(dvobj_get_primary_adapter(dvobj)); +} + +_adapter *rtw_mi_get_ap_mesh_iface_by_hwband(struct dvobj_priv *dvobj, u8 band_idx) +{ + u8 ifbmp = rtw_mi_get_ap_mesh_ifbmp_by_hwband(dvobj, band_idx); + + if (ifbmp) { + int i; + + for (i = 0; i < dvobj->iface_nums; i++) { + if ((ifbmp & BIT(i)) && dvobj->padapters[i]) + return dvobj->padapters[i]; + } + } + return NULL; +} + +bool rtw_iface_is_operate_at_hwband(_adapter *adapter, u8 band_idx) +{ + /* this driver has only one hwband */ + return band_idx < HW_BAND_MAX ? true : false; +} + void rtw_mi_update_ap_bmc_camid(_adapter *padapter, u8 camid_a, u8 camid_b) { #ifdef CONFIG_CONCURRENT_MODE @@ -1576,4 +1711,30 @@ _adapter *rtw_mi_get_linking_adapter(_adapter *adapter) iface = NULL; } return iface; -} \ No newline at end of file +} + +u32 ifbmp_to_iflbmp(u8 ifbmp) +{ + u8 i, j; + u32 iflbmp = 0; + + for (i = 0; i < CONFIG_IFACE_NUMBER; i++) { + for (j = 0; j < RTW_RLINK_MAX; j++) { + iflbmp |= (ifbmp & BIT(i)) << (j * CONFIG_IFACE_NUMBER); + } + } + return iflbmp; +} + +u8 iflbmp_to_ifbmp(u32 iflbmp) +{ + u8 i, j; + u8 ifbmp = 0; + + for (i = 0; i < CONFIG_IFACE_NUMBER; i++) { + for (j = 0; j < RTW_RLINK_MAX; j++) { + ifbmp |= (iflbmp >> (j * CONFIG_IFACE_NUMBER)) & BIT(i); + } + } + return ifbmp; +} diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_mlme.c b/drivers/net/wireless/rtl8822cs/core/rtw_mlme.c index 99ba3e7e7..2254661b2 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_mlme.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_mlme.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -82,11 +82,12 @@ sint _rtw_init_mlme_priv(_adapter *padapter) if (padapter->registrypriv.max_bss_cnt != 0) pmlmepriv->max_bss_cnt = padapter->registrypriv.max_bss_cnt; - else if (rfctl->max_chan_nums <= MAX_CHANNEL_NUM_2G) - pmlmepriv->max_bss_cnt = MAX_BSS_CNT; - else - pmlmepriv->max_bss_cnt = MAX_BSS_CNT + MAX_BSS_CNT; - + else { + pmlmepriv->max_bss_cnt = 0; + pmlmepriv->max_bss_cnt += is_supported_24g(padapter->registrypriv.wireless_mode) ? MAX_BSS_CNT : 0; + pmlmepriv->max_bss_cnt += is_supported_5g(padapter->registrypriv.wireless_mode) ? MAX_BSS_CNT : 0; + pmlmepriv->max_bss_cnt += is_supported_6g(padapter->registrypriv.wireless_mode) ? MAX_BSS_CNT : 0; + } pbuf = rtw_zvmalloc(pmlmepriv->max_bss_cnt * (sizeof(struct wlan_network))); @@ -112,12 +113,16 @@ sint _rtw_init_mlme_priv(_adapter *padapter) _rtw_init_queue(&(pmlmepriv->unassoc_sta_queue)); for (i = 0; i < UNASOC_STA_SRC_NUM; i++) pmlmepriv->unassoc_sta_mode_of_stype[i] = padapter->registrypriv.unassoc_sta_mode_of_stype[i]; + if (padapter->registrypriv.max_unassoc_sta_cnt != 0) pmlmepriv->max_unassoc_sta_cnt = padapter->registrypriv.max_unassoc_sta_cnt; - else if (rfctl->max_chan_nums <= MAX_CHANNEL_NUM_2G) - pmlmepriv->max_unassoc_sta_cnt = MAX_UNASSOC_STA_CNT; - else - pmlmepriv->max_unassoc_sta_cnt = MAX_UNASSOC_STA_CNT * 2; + else { + pmlmepriv->max_unassoc_sta_cnt = 0; + pmlmepriv->max_unassoc_sta_cnt += is_supported_24g(padapter->registrypriv.wireless_mode) ? MAX_UNASSOC_STA_CNT : 0; + pmlmepriv->max_unassoc_sta_cnt += is_supported_5g(padapter->registrypriv.wireless_mode) ? MAX_UNASSOC_STA_CNT : 0; + pmlmepriv->max_unassoc_sta_cnt += is_supported_6g(padapter->registrypriv.wireless_mode) ? MAX_UNASSOC_STA_CNT : 0; + } + pbuf = rtw_zvmalloc(pmlmepriv->max_unassoc_sta_cnt * (sizeof(struct unassoc_sta_info))); if (pbuf == NULL) { res = _FAIL; @@ -138,7 +143,7 @@ sint _rtw_init_mlme_priv(_adapter *padapter) /* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */ rtw_clear_scan_deny(padapter); -#ifdef CONFIG_ARP_KEEP_ALIVE +#ifdef CONFIG_ARP_KEEP_ALIVE_GW pmlmepriv->bGetGateway = 0; pmlmepriv->GetGatewayTryCnt = 0; #endif @@ -160,14 +165,18 @@ sint _rtw_init_mlme_priv(_adapter *padapter) pmlmepriv->last_roaming = rtw_get_current_time(); #endif /* CONFIG_LAYER2_ROAMING */ -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) rtw_ft_info_init(&pmlmepriv->ft_roam); #endif #ifdef CONFIG_LAYER2_ROAMING #if defined(CONFIG_RTW_WNM) || defined(CONFIG_RTW_80211K) rtw_roam_nb_info_init(padapter); pmlmepriv->ch_cnt = 0; -#endif +#endif +#endif + +#ifdef CONFIG_RTW_MBO + rtw_mbo_attr_info_init(padapter); #endif pmlmepriv->defs_lmt_sta = 2; @@ -202,10 +211,11 @@ void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv) { rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len); rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len); -#ifdef CONFIG_80211D - rtw_buf_free(&pmlmepriv->recv_country_ie, &pmlmepriv->recv_country_ie_len); -#endif + #if defined(CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + rtw_buf_free(&pmlmepriv->beacon_head_ie, &pmlmepriv->beacon_head_ie_len); + rtw_buf_free(&pmlmepriv->beacon_tail_ie, &pmlmepriv->beacon_tail_ie_len); + rtw_buf_free(&pmlmepriv->wps_beacon_ie, &pmlmepriv->wps_beacon_ie_len); rtw_buf_free(&pmlmepriv->wps_probe_req_ie, &pmlmepriv->wps_probe_req_ie_len); rtw_buf_free(&pmlmepriv->wps_probe_resp_ie, &pmlmepriv->wps_probe_resp_ie_len); @@ -440,6 +450,9 @@ struct wlan_network *_rtw_alloc_network(struct mlme_priv *pmlmepriv) /* (_queue pnetwork->aid = 0; pnetwork->join_res = 0; +#ifdef CONFIG_80211D + _rtw_memset(&pnetwork->cisr, 0, sizeof(pnetwork->cisr)); +#endif pmlmepriv->num_of_scanned++; @@ -657,6 +670,18 @@ void rtw_free_network_queue(_adapter *dev, u8 isfreeall) _rtw_free_network_queue(dev, isfreeall); } +struct _ADAPTER_LINK *rtw_get_adapter_link_by_hwband(_adapter *padapter, u8 band_idx) +{ + /* this driver has only one hwband */ + return band_idx < HW_BAND_MAX ? &padapter->adapter_link : NULL; +} + +u8 rtw_adapter_link_get_id(struct _ADAPTER_LINK *alink) +{ + /* this driver has only one adapter link */ + return RTW_RLINK_PRIMARY; +} + struct wlan_network *_rtw_find_network(_queue *scanned_queue, const u8 *addr) { _list *phead, *plist; @@ -883,16 +908,29 @@ void update_network(WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src, ss_final = padapter->recvpriv.signal_strength; sq_final = padapter->recvpriv.signal_qual; /* the rssi value here is undecorated, and will be used for antenna diversity */ - if (sq_smp != 101) /* from the right channel */ + /* Don't update the RSSI average with scan result which RSSI is -110 */ + if ((sq_smp != 101) && (src->Rssi != -110)) { /* from the right channel */ rssi_final = (src->Rssi + dst->Rssi * 4) / 5; - else + } else { + #ifdef DBG_SITESURVEY + if (src->Rssi == -110) + RTW_INFO("Don't update RSSI average of associated network %s " \ + "with scan result which RSSI is -110\n", src->Ssid.Ssid); + #endif rssi_final = rssi_ori; + } } else { - if (sq_smp != 101) { /* from the right channel */ + /* Don't update the RSSI average with scan result which RSSI is -110 */ + if ((sq_smp != 101) && (src->Rssi != -110)) { /* from the right channel */ ss_final = ((u32)(src->PhyInfo.SignalStrength) + (u32)(dst->PhyInfo.SignalStrength) * 4) / 5; sq_final = ((u32)(src->PhyInfo.SignalQuality) + (u32)(dst->PhyInfo.SignalQuality) * 4) / 5; rssi_final = (src->Rssi + dst->Rssi * 4) / 5; } else { + #ifdef DBG_SITESURVEY + if (src->Rssi == -110) + RTW_INFO("Don't update RSSI average of network %s " \ + "with scan result which RSSI is -110\n", src->Ssid.Ssid); + #endif /* bss info not receving from the right channel, use the original RX signal infos */ ss_final = dst->PhyInfo.SignalStrength; sq_final = dst->PhyInfo.SignalQuality; @@ -1068,6 +1106,15 @@ bool rtw_update_scanned_network(_adapter *adapter, WLAN_BSSID_EX *target) * with this beacon's information */ /* if (rtw_end_of_queue_search(phead,plist)== _TRUE) { */ if (!target_find) { + + /* Drop the scan result which RSSI is -110, means this packet's RSSI is 0 */ + if (target->Rssi == -110) { + #ifdef DBG_SITESURVEY + RTW_INFO("Don't add network %s which RSSI is -110\n", target->Ssid.Ssid); + #endif + goto unlock_scan_queue; + } + if (_rtw_queue_empty(&(pmlmepriv->free_bss_pool)) == _TRUE) { /* If there are no more slots, expire the choice */ /* list_del_init(&choice->list); */ @@ -1191,6 +1238,10 @@ bool rtw_update_scanned_network(_adapter *adapter, WLAN_BSSID_EX *target) update_network(&(pnetwork->network), target, adapter, update_ie); } +#ifdef CONFIG_80211D + rtw_update_scanned_network_cisr(adapter_to_rfctl(adapter), pnetwork); +#endif + #if defined(CONFIG_RTW_MESH) && CONFIG_RTW_MESH_ACNODE_PREVENT if (MLME_IS_MESH(adapter) && MLME_IS_ASOC(adapter)) rtw_mesh_update_scanned_acnode_status(adapter, pnetwork); @@ -1234,6 +1285,138 @@ void rtw_add_network(_adapter *adapter, WLAN_BSSID_EX *pnetwork) } +void dump_scanned_queue(void *sel, _adapter *adapter) +{ +#ifdef CONFIG_80211D +#define SURVEY_INFO_TITLE_FMT_80211D " %-8s" +#define SURVEY_INFO_VALUE_FMT_80211D " %c "ALPHA2_FMT" %u" +#define SURVEY_INFO_TITLE_ARG_80211D , "alpha2" +#define SURVEY_INFO_VALUE_ARG_80211D , rfctl->effected_cisr == &pnetwork->cisr ? '*' : ' ' \ + , show_cisr && is_alpha(pnetwork->cisr.alpha2[0]) ? pnetwork->cisr.alpha2[0] : '-' \ + , show_cisr && is_alpha(pnetwork->cisr.alpha2[1]) ? pnetwork->cisr.alpha2[1] : '-' \ + , show_cisr ? pnetwork->cisr.status : COUNTRY_IE_SLAVE_NOCOUNTRY +#else +#define SURVEY_INFO_TITLE_FMT_80211D "" +#define SURVEY_INFO_VALUE_FMT_80211D "" +#define SURVEY_INFO_TITLE_ARG_80211D +#define SURVEY_INFO_VALUE_ARG_80211D +#endif + +#ifdef CONFIG_80211D + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + bool show_cisr = rfctl->cis_enabled && (rfctl->cis_flags & CISF_ENV_BSS); +#endif + struct mlme_priv *mlme = &adapter->mlmepriv; + _queue *queue = &mlme->scanned_queue; + struct wlan_network *pnetwork = NULL; + _list *plist, *phead; + s32 notify_signal; + s16 notify_noise = 0; + u16 index = 0, ie_cap = 0; + unsigned char *ie_wpa = NULL, *ie_wpa2 = NULL, *ie_wps = NULL; + unsigned char *ie_wpa3 = NULL; + unsigned char *ie_p2p = NULL; + char *flag_str = NULL; + int ielen = 0; + u32 wpsielen = 0; + u32 akm; + u8 mfp_opt; +#ifdef CONFIG_RTW_MESH + const char *ssid_title_str = "ssid/mesh_id"; +#else + const char *ssid_title_str = "ssid"; +#endif + u8 rsni = 255; + + flag_str = rtw_zmalloc(64); + if (!flag_str) + return; + + RTW_PRINT_SEL(sel, "%-5s %-17s %-4s %-3s %-4s %-4s %-5s %-4s" + SURVEY_INFO_TITLE_FMT_80211D + " %-5s %-32s %s\n" + , "index", "bssid", "band", "ch", "RSSI", "SdBm", "Noise", "rsni" + SURVEY_INFO_TITLE_ARG_80211D + , "age", "flag", ssid_title_str); + + _rtw_spinlock_bh(&queue->lock); + + phead = get_list_head(queue); + plist = get_next(phead); + + while (!rtw_end_of_queue_search(phead, plist)) { + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + plist = get_next(plist); + + if (check_fwstate(mlme, WIFI_ASOC_STATE) == _TRUE && + is_same_network(&mlme->cur_network.network, &pnetwork->network, 0)) { + notify_signal = translate_percentage_to_dbm(adapter->recvpriv.signal_strength);/* dbm */ + } else { + notify_signal = translate_percentage_to_dbm(pnetwork->network.PhyInfo.SignalStrength);/* dbm */ + } + +#ifdef CONFIG_BACKGROUND_NOISE_MONITOR + if (IS_NM_ENABLE(adapter)) + notify_noise = rtw_noise_query_by_chan_num(adapter, pnetwork->network.Configuration.DSConfig); +#endif +#ifdef CONFIG_RTW_ACS + rsni = rtw_acs_get_rsni(adapter, (int)(pnetwork->network.Rssi), pnetwork->network.Configuration.DSConfig); +#endif + + ie_wpa = rtw_get_wpa_ie(&pnetwork->network.IEs[12], &ielen, pnetwork->network.IELength - 12); + ie_wpa2 = rtw_get_wpa2_ie(&pnetwork->network.IEs[12], &ielen, pnetwork->network.IELength - 12); + ie_wpa3 = NULL; + mfp_opt = MFP_NO; + if (ie_wpa2 && + rtw_parse_wpa2_ie(ie_wpa2, ielen+2, NULL, NULL, NULL, &akm, + &mfp_opt, NULL) == _SUCCESS) { + if (akm & WLAN_AKM_TYPE_SAE) { + ie_wpa3 = ie_wpa2; + if (akm == WLAN_AKM_TYPE_SAE) + ie_wpa2 = NULL; + } + } + ie_cap = rtw_get_capability(&pnetwork->network); + ie_wps = rtw_get_wps_ie(&pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &wpsielen); +#ifdef CONFIG_P2P + ie_p2p = rtw_get_p2p_ie(&pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &ielen); +#endif + sprintf(flag_str, "%s%s%s%s%s%s%s%s%s", + (ie_wpa) ? "[WPA]" : "", + (ie_wpa2) ? "[WPA2]" : "", + (ie_wpa3) ? "[WPA3]" : "", + (mfp_opt > MFP_INVALID) ? + ((mfp_opt > MFP_OPTIONAL) ? "[MFPR]" : "[MFPC]") : "", + (!ie_wpa && !ie_wpa && ie_cap & BIT(4)) ? "[WEP]" : "", + (ie_wps) ? "[WPS]" : "", + (pnetwork->network.InfrastructureMode == Ndis802_11IBSS) ? "[IBSS]" : + (pnetwork->network.InfrastructureMode == Ndis802_11_mesh) ? "[MESH]" : "", + (ie_cap & BIT(0)) ? "[ESS]" : "", + (ie_p2p) ? "[P2P]" : ""); + + RTW_PRINT_SEL(sel, "%5d "MAC_FMT" %4s %3d %4d %4d %5d %4d" + SURVEY_INFO_VALUE_FMT_80211D + " %5d %-32s %s\n" + , ++index + , MAC_ARG(pnetwork->network.MacAddress) + , band_str(BSS_EX_OP_BAND(&pnetwork->network)) + , BSS_EX_OP_CH(&pnetwork->network) + , (int)pnetwork->network.Rssi + , notify_signal + , notify_noise + , rsni + SURVEY_INFO_VALUE_ARG_80211D + , rtw_get_passing_time_ms(pnetwork->last_scanned) + , flag_str + , pnetwork->network.InfrastructureMode == Ndis802_11_mesh ? pnetwork->network.mesh_id.Ssid : pnetwork->network.Ssid.Ssid + ); + } + + _rtw_spinunlock_bh(&queue->lock); + + rtw_mfree(flag_str, 64); +} + #ifdef CONFIG_RTW_MULTI_AP void rtw_unassoc_sta_set_mode(_adapter *adapter, u8 stype, u8 mode) { @@ -1774,7 +1957,7 @@ void rtw_survey_event_callback(_adapter *adapter, u8 *pbuf) if (pnetwork->InfrastructureMode == Ndis802_11Infrastructure) { if (MLME_IS_SCAN(adapter)) { adapter->mlmeextpriv.sitesurvey_res.activate_ch_cnt - += rtw_process_beacon_hint(adapter, pnetwork); + += rtw_process_beacon_hint(adapter_to_rfctl(adapter), pnetwork); } } @@ -1899,24 +2082,36 @@ void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf) RTW_INFO("try_to_join, but select scanning queue fail, to_roam:%d\n", rtw_to_roam(adapter)); if (rtw_to_roam(adapter) != 0) { - struct sitesurvey_parm scan_parm; + struct sitesurvey_parm *scan_parm = NULL; u8 ssc_chk = rtw_sitesurvey_condition_check(adapter, _FALSE); - rtw_init_sitesurvey_parm(adapter, &scan_parm); - _rtw_memcpy(&scan_parm.ssid[0], &pmlmepriv->assoc_ssid, sizeof(NDIS_802_11_SSID)); - scan_parm.ssid_num = 1; + scan_parm = (struct sitesurvey_parm *)rtw_zmalloc(sizeof(struct sitesurvey_parm)); + if (!scan_parm) { + rtw_set_to_roam(adapter, 0); + rtw_free_assoc_resources(adapter, _TRUE); + rtw_indicate_disconnect(adapter, 0, _FALSE); + goto alloc_fail; + } + + rtw_init_sitesurvey_parm(adapter, scan_parm); + _rtw_memcpy(&(scan_parm->ssid[0]), &pmlmepriv->assoc_ssid, sizeof(NDIS_802_11_SSID)); + scan_parm->ssid_num = 1; if (rtw_dec_to_roam(adapter) == 0 - || (ssc_chk != SS_ALLOW && ssc_chk != SS_DENY_BUSY_TRAFFIC) - || _SUCCESS != rtw_sitesurvey_cmd(adapter, &scan_parm) + || (ssc_chk != SS_ALLOW && ssc_chk != SS_DENY_BUSY_TRAFFIC + && ssc_chk != SS_DENY_SELF_STA_UNDER_LINKING) + || _SUCCESS != rtw_sitesurvey_cmd(adapter, scan_parm) ) { rtw_set_to_roam(adapter, 0); rtw_free_assoc_resources(adapter, _TRUE); rtw_indicate_disconnect(adapter, 0, _FALSE); } else pmlmepriv->to_join = _TRUE; + + rtw_mfree(scan_parm, sizeof(struct sitesurvey_parm)); } else rtw_indicate_disconnect(adapter, 0, _FALSE); +alloc_fail: _clr_fwstate_(pmlmepriv, WIFI_UNDER_LINKING); } } @@ -1929,7 +2124,7 @@ void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf) if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) && check_fwstate(pmlmepriv, WIFI_ASOC_STATE)) { if (rtw_select_roaming_candidate(pmlmepriv) == _SUCCESS) { - #ifdef CONFIG_RTW_80211R + #if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) rtw_ft_start_roam(adapter, (u8 *)pmlmepriv->roam_network->network.MacAddress); #else @@ -1975,18 +2170,14 @@ void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf) rtw_cfg80211_indicate_scan_done_for_buddy(adapter, _FALSE); #endif - if (parm->activate_ch_cnt) { - #ifdef CONFIG_IOCTL_CFG80211 - struct get_chplan_resp *chplan; + if (parm->activate_ch_cnt) + rtw_beacon_hint_ch_change_notifier(adapter_to_rfctl(adapter)); - if (rtw_get_chplan_cmd(adapter, RTW_CMDF_DIRECTLY, &chplan) != _SUCCESS - || rtw_regd_change_complete_async(adapter_to_wiphy(adapter), chplan) != _SUCCESS) - rtw_warn_on(1); - #endif - - op_class_pref_apply_regulatory(adapter, REG_BEACON_HINT); - rtw_nlrtw_reg_beacon_hint_event(adapter); - } +#ifdef CONFIG_80211D + if (adapter_to_rfctl(adapter)->cis_enabled + && (adapter_to_rfctl(adapter)->cis_flags & CISF_ENV_BSS)) + rtw_apply_scan_network_country_ie_cmd(adapter, RTW_CMDF_DIRECTLY); +#endif #ifdef CONFIG_RTW_MESH #if CONFIG_RTW_MESH_OFFCH_CAND @@ -2008,7 +2199,7 @@ void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf) #endif #endif /* CONFIG_RTW_MESH */ -#ifdef CONFIG_RTW_ACS +#if defined(CONFIG_AP_MODE) && defined(CONFIG_RTW_ACS) if (parm->acs) { u8 ifbmp = rtw_mi_get_ap_mesh_ifbmp(adapter); @@ -2184,6 +2375,7 @@ void rtw_reset_rx_info(_adapter *adapter) precvpriv->dbg_rx_ampdu_window_shift_cnt = 0; precvpriv->dbg_rx_drop_count = 0; precvpriv->dbg_rx_conflic_mac_addr_cnt = 0; + precvpriv->rtp_drop_count = 0; } /* @@ -2294,6 +2486,11 @@ void rtw_indicate_connect(_adapter *padapter) rtw_os_indicate_connect(padapter); + #ifdef CONFIG_DFS_MASTER + if (CHK_MLME_STATE(padapter, WIFI_AP_STATE | WIFI_MESH_STATE)) + rtw_indicate_cac_state_on_bss_start(padapter); + #endif + #ifdef CONFIG_RTW_WDS if (MLME_IS_STA(padapter)) rtw_wds_gptr_tbl_init(padapter); @@ -2357,6 +2554,8 @@ void rtw_indicate_disconnect(_adapter *padapter, u16 reason, u8 locally_generate else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) rtw_wapi_return_all_sta_info(padapter); + + padapter->wapiInfo.wapiSeqnumAndFragNum = 0; #endif if (check_fwstate(&padapter->mlmepriv, WIFI_ASOC_STATE) @@ -2377,6 +2576,10 @@ void rtw_indicate_disconnect(_adapter *padapter, u16 reason, u8 locally_generate } #endif + #ifdef CONFIG_LAYER2_ROAMING + pmlmepriv->roam_network = NULL; + #endif + rtw_os_indicate_disconnect(padapter, reason, locally_generated); /* set ips_deny_time to avoid enter IPS before LPS leave */ @@ -2413,14 +2616,11 @@ inline void rtw_indicate_scan_done(_adapter *padapter, bool aborted) if (is_primary_adapter(padapter) && (_FALSE == adapter_to_pwrctl(padapter)->bInSuspend) && (check_fwstate(&padapter->mlmepriv, WIFI_ASOC_STATE | WIFI_UNDER_LINKING) == _FALSE)) { - struct pwrctrl_priv *pwrpriv; - - pwrpriv = adapter_to_pwrctl(padapter); rtw_set_ips_deny(padapter, 0); #ifdef CONFIG_IPS_CHECK_IN_WD _set_timer(&adapter_to_dvobj(padapter)->dynamic_chk_timer, 1); #else /* !CONFIG_IPS_CHECK_IN_WD */ - _rtw_set_pwr_state_check_timer(pwrpriv, 1); + _rtw_set_pwr_state_check_timer(adapter_to_pwrctl(padapter), 1); #endif /* !CONFIG_IPS_CHECK_IN_WD */ } #endif /* CONFIG_IPS */ @@ -2621,7 +2821,8 @@ static struct sta_info *rtw_joinbss_update_stainfo(_adapter *padapter, struct wl /* When doing the WPS, the wps_ie_len won't equal to 0 */ /* And the Wi-Fi driver shouldn't allow the data packet to be tramsmitted. */ if (padapter->securitypriv.wps_ie_len != 0) { - psta->ieee8021x_blocked = _TRUE; + if (!rtw_sec_chk_auth_type(padapter, MLME_AUTHTYPE_OPEN_SYSTEM)) + psta->ieee8021x_blocked = _TRUE; padapter->securitypriv.wps_ie_len = 0; } @@ -2753,7 +2954,9 @@ static void rtw_joinbss_update_network(_adapter *padapter, struct wlan_network * void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf, u16 status) { _irqL irqL; +#ifdef REJOIN static u8 retry = 0; +#endif struct sta_info *ptarget_sta = NULL, *pcur_sta = NULL; struct sta_priv *pstapriv = &adapter->stapriv; struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); @@ -2778,7 +2981,9 @@ void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf, u16 status) if (pnetwork->join_res > 0) { _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); +#ifdef REJOIN retry = 0; +#endif if (check_fwstate(pmlmepriv, WIFI_UNDER_LINKING)) { /* s1. find ptarget_wlan */ if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE)) { @@ -2864,7 +3069,6 @@ void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf, u16 status) } } else { /* if join_res < 0 (join fails), then try again */ - #ifdef REJOIN res = _FAIL; if (retry < 2) { @@ -3158,7 +3362,6 @@ exit: void rtw_sta_timeout_event_callback(_adapter *adapter, u8 *pbuf) { #ifdef CONFIG_AP_MODE - _irqL irqL; struct sta_info *psta; struct stadel_event *pstadel = (struct stadel_event *)pbuf; struct sta_priv *pstapriv = &adapter->stapriv; @@ -3168,17 +3371,12 @@ void rtw_sta_timeout_event_callback(_adapter *adapter, u8 *pbuf) if (psta) { u8 updated = _FALSE; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); if (rtw_is_list_empty(&psta->asoc_list) == _FALSE) { - rtw_list_delete(&psta->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif - updated = ap_free_sta(adapter, psta, _TRUE, WLAN_REASON_PREV_AUTH_NOT_VALID, _TRUE); + rtw_stapriv_asoc_list_del(pstapriv, psta); + updated = ap_free_sta(adapter, psta, _TRUE, 0, WLAN_REASON_PREV_AUTH_NOT_VALID, _TRUE); } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); associated_clients_update(adapter, updated, STA_INFO_UPDATE_ALL); } @@ -3339,7 +3537,7 @@ void rtw_stadel_event_callback(_adapter *adapter, u8 *pbuf) rtw_indicate_disconnect(adapter, *(u16 *)pstadel->rsvd, pstadel->locally_generated); #ifdef CONFIG_LAYER2_ROAMING - _rtw_roaming(adapter, roam_target); + _rtw_roaming(adapter, roam_target, BAND_MAX, 0); #endif } @@ -3445,7 +3643,7 @@ void rtw_join_timeout_handler(void *ctx) } else { RTW_INFO("%s We've try roaming but fail\n", __FUNCTION__); #ifdef CONFIG_RTW_80211R - rtw_ft_clr_flags(adapter, RTW_FT_PEER_EN|RTW_FT_PEER_OTD_EN); + /* rtw_ft_clr_flags(adapter, RTW_FT_PEER_EN|RTW_FT_PEER_OTD_EN); */ rtw_ft_reset_status(adapter); #endif rtw_indicate_disconnect(adapter, pmlmepriv->join_status, _FALSE); @@ -3530,12 +3728,22 @@ void rtw_mlme_reset_auto_scan_int(_adapter *adapter, u8 *reason) *reason |= RTW_AUTO_SCAN_REASON_2040_BSS; } +#ifdef CONFIG_80211D + if (adapter_to_rfctl(adapter)->cis_enabled + && (adapter_to_rfctl(adapter)->cis_flags & CISF_ENV_BSS) + && adapter_to_rfctl(adapter)->cis_scan_int_ms + ) { + interval_ms = rtw_min(interval_ms, adapter_to_rfctl(adapter)->cis_scan_int_ms); + *reason |= RTW_AUTO_SCAN_REASON_CIS_ENV_BSS; + } +#endif + #ifdef CONFIG_RTW_MESH #if CONFIG_RTW_MESH_OFFCH_CAND if (adapter->mesh_cfg.peer_sel_policy.offch_find_int_ms && rtw_mesh_offch_candidate_accepted(adapter) #ifdef CONFIG_DFS_MASTER - && (!rfctl->radar_detect_ch || (IS_CH_WAITING(rfctl) && !IS_UNDER_CAC(rfctl))) + && (!rfctl->radar_detect_enabled || (IS_CH_WAITING(rfctl) && !IS_UNDER_CAC(rfctl))) #endif ) { interval_ms = rtw_min(interval_ms, adapter->mesh_cfg.peer_sel_policy.offch_find_int_ms); @@ -3553,12 +3761,15 @@ void rtw_mlme_reset_auto_scan_int(_adapter *adapter, u8 *reason) void rtw_drv_scan_by_self(_adapter *padapter, u8 reason) { - struct sitesurvey_parm parm; + struct sitesurvey_parm *parm = NULL; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; int i; #if 1 u8 ssc_chk; + parm = (struct sitesurvey_parm *)rtw_zmalloc(sizeof(struct sitesurvey_parm)); + if (!parm) + goto exit; ssc_chk = rtw_sitesurvey_condition_check(padapter, _FALSE); if( ssc_chk == SS_DENY_BUSY_TRAFFIC) { #ifdef CONFIG_LAYER2_ROAMING @@ -3615,26 +3826,28 @@ void rtw_drv_scan_by_self(_adapter *padapter, u8 reason) /* only for 20/40 BSS */ if (reason == RTW_AUTO_SCAN_REASON_2040_BSS) { - rtw_init_sitesurvey_parm(padapter, &parm); + rtw_init_sitesurvey_parm(padapter, parm); for (i=0;i<14;i++) { - parm.ch[i].hw_value = i + 1; - parm.ch[i].flags = RTW_IEEE80211_CHAN_PASSIVE_SCAN; + parm->ch[i].hw_value = i + 1; + parm->ch[i].flags = RTW_IEEE80211_CHAN_PASSIVE_SCAN; } - parm.ch_num = 14; - rtw_set_802_11_bssid_list_scan(padapter, &parm); + parm->ch_num = 14; + rtw_set_802_11_bssid_list_scan(padapter, parm); goto exit; } #if defined(CONFIG_RTW_WNM) || defined(CONFIG_RTW_80211K) - if ((reason == RTW_AUTO_SCAN_REASON_ROAM) - && (rtw_roam_nb_scan_list_set(padapter, &parm))) + if ((reason == RTW_AUTO_SCAN_REASON_ROAM) + && (rtw_roam_nb_scan_list_set(padapter, parm))) goto exit; #endif - rtw_init_sitesurvey_parm(padapter, &parm); - parm.reason = reason; - rtw_set_802_11_bssid_list_scan(padapter, &parm); + rtw_init_sitesurvey_parm(padapter, parm); + parm->reason = reason; + rtw_set_802_11_bssid_list_scan(padapter, parm); exit: + if (parm) + rtw_mfree(parm, sizeof(struct sitesurvey_parm)); return; } @@ -3642,6 +3855,9 @@ static void rtw_auto_scan_handler(_adapter *padapter) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; u8 reason = RTW_AUTO_SCAN_REASON_UNSPECIFIED; +#ifdef CONFIG_LAYER2_ROAMING + struct recv_priv *precvpriv = &padapter->recvpriv; +#endif rtw_mlme_reset_auto_scan_int(padapter, &reason); @@ -3655,10 +3871,30 @@ static void rtw_auto_scan_handler(_adapter *padapter) goto exit; #endif +#ifdef CONFIG_LAYER2_ROAMING + if (is_client_associated_to_ap(padapter) && + rtw_chk_roam_flags(padapter, RTW_ROAM_ACTIVE)) { + RTW_INFO("signal_strength_data.avg_val = %d\n", precvpriv->signal_strength_data.avg_val); + if (precvpriv->signal_strength_data.avg_val < pmlmepriv->roam_rssi_threshold) { + pmlmepriv->need_to_roam = _TRUE; + if (rtw_get_passing_time_ms(pmlmepriv->last_roaming) >= pmlmepriv->roam_scan_int*2000) { +#ifdef CONFIG_RTW_80211K + rtw_roam_nb_discover(padapter, _FALSE); +#endif + reason = RTW_AUTO_SCAN_REASON_ROAM_ACTIVE; + pmlmepriv->last_roaming = rtw_get_current_time(); + goto do_scan; + } + } else + pmlmepriv->need_to_roam = _FALSE; + } +#endif + if (pmlmepriv->auto_scan_int_ms == 0 || rtw_get_passing_time_ms(pmlmepriv->scan_start_time) < pmlmepriv->auto_scan_int_ms) goto exit; +do_scan: rtw_drv_scan_by_self(padapter, reason); exit: @@ -3669,12 +3905,13 @@ static u8 is_drv_in_lps(_adapter *adapter) u8 is_in_lps = _FALSE; #ifdef CONFIG_LPS_LCLK_WD_TIMER /* to avoid leaving lps 32k frequently*/ - if ((adapter_to_pwrctl(adapter)->bFwCurrentInPSMode == _TRUE) - #ifdef CONFIG_BT_COEXIST - && (rtw_btcoex_IsBtControlLps(adapter) == _FALSE) - #endif - ) + if (adapter_to_pwrctl(adapter)->bFwCurrentInPSMode == _TRUE) is_in_lps = _TRUE; + + #ifdef CONFIG_BT_COEXIST + if (rtw_btcoex_IsBtControlLps(adapter) == _TRUE) + is_in_lps = _FALSE; + #endif #endif /* CONFIG_LPS_LCLK_WD_TIMER*/ return is_in_lps; } @@ -3874,10 +4111,12 @@ void rtw_dynamic_check_timer_handlder(void *ctx) } #endif - if (!rtw_is_hw_init_completed(adapter)) + if (RTW_CANNOT_RUN(adapter)) goto exit; - if (RTW_CANNOT_RUN(adapter)) + rtw_dynamic_chk_idle_wk_cmd(pdvobj, false); + + if (!rtw_is_hw_init_completed(adapter)) goto exit; collect_traffic_statistics(adapter); @@ -3934,15 +4173,12 @@ static int rtw_check_roaming_candidate(struct mlme_priv *mlme { int updated = _FALSE; _adapter *adapter = container_of(mlme, _adapter, mlmepriv); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; + struct rtw_chset *chset = adapter_to_chset(adapter); u8 ch = competitor->network.Configuration.DSConfig; if (rtw_chset_search_ch(chset, ch) < 0) goto exit; - if (IS_DFS_SLAVE_WITH_RD(rfctl) - && !rtw_rfctl_dfs_domain_unknown(rfctl) - && rtw_chset_is_ch_non_ocp(chset, ch)) + if (rtw_chset_is_ch_non_ocp(chset, ch)) goto exit; #if defined(CONFIG_RTW_REPEATER_SON) && (!defined(CONFIG_RTW_REPEATER_SON_ROOT)) @@ -3984,17 +4220,17 @@ static int rtw_check_roaming_candidate(struct mlme_priv *mlme goto exit; } -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) if (rtw_ft_chk_flags(adapter, RTW_FT_PEER_EN)) { if (rtw_ft_chk_roaming_candidate(adapter, competitor) == _FALSE) goto exit; } #ifdef CONFIG_RTW_WNM - if (rtw_wnm_btm_diff_bss(adapter) && + if (rtw_wnm_btm_diff_bss(adapter) && rtw_wnm_btm_roam_candidate(adapter, competitor)) { goto update; - } + } #endif #endif @@ -4024,7 +4260,6 @@ int rtw_select_roaming_candidate(struct mlme_priv *mlme) _irqL irqL; int ret = _FAIL; _list *phead; - _adapter *adapter; _queue *queue = &(mlme->scanned_queue); struct wlan_network *pnetwork = NULL; struct wlan_network *candidate = NULL; @@ -4036,7 +4271,6 @@ int rtw_select_roaming_candidate(struct mlme_priv *mlme) _enter_critical_bh(&(mlme->scanned_queue.lock), &irqL); phead = get_list_head(queue); - adapter = (_adapter *)mlme->nic_hdl; mlme->pscanned = get_next(phead); @@ -4066,7 +4300,9 @@ int rtw_select_roaming_candidate(struct mlme_priv *mlme) #if defined(CONFIG_RTW_REPEATER_SON) && (!defined(CONFIG_RTW_REPEATER_SON_ROOT)) struct rtw_rson_struct rson_curr; u8 rson_score; + struct _ADAPTER *adapter; + adapter = (struct _ADAPTER *)mlme->nic_hdl; rtw_get_rson_struct(&(mlme->cur_network_scanned->network), &rson_curr); rson_score = rtw_cal_rson_score(&rson_curr, mlme->cur_network_scanned->network.Rssi); if (check_fwstate(mlme, WIFI_ASOC_STATE) @@ -4117,15 +4353,12 @@ static int rtw_check_join_candidate(struct mlme_priv *mlme { int updated = _FALSE; _adapter *adapter = container_of(mlme, _adapter, mlmepriv); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; + struct rtw_chset *chset = adapter_to_chset(adapter); u8 ch = competitor->network.Configuration.DSConfig; if (rtw_chset_search_ch(chset, ch) < 0) goto exit; - if (IS_DFS_SLAVE_WITH_RD(rfctl) - && !rtw_rfctl_dfs_domain_unknown(rfctl) - && rtw_chset_is_ch_non_ocp(chset, ch)) + if (rtw_chset_is_ch_non_ocp(chset, ch)) goto exit; #if defined(CONFIG_RTW_REPEATER_SON) && (!defined(CONFIG_RTW_REPEATER_SON_ROOT)) @@ -4306,29 +4539,38 @@ candidate_exist: #if defined(CONFIG_CONCURRENT_MODE) && defined(CONFIG_AP_MODE) { - u8 ifbmp = 0; - u8 csa_cnt; - struct mi_state mstate; - struct rf_ctl_t *rfctl; +#ifdef CONFIG_MCC_MODE + if (!MCC_EN(adapter)) { +#endif + u8 ifbmp = 0; + u8 csa_cnt; + struct mi_state mstate; + struct rf_ctl_t *rfctl; - rfctl = adapter_to_rfctl(adapter); - csa_cnt = rfctl->ap_csa_cnt_input; - ifbmp = rtw_mi_get_ap_mesh_ifbmp(adapter); - rtw_mi_status_no_self(adapter, &mstate); + rfctl = adapter_to_rfctl(adapter); + csa_cnt = rfctl->ap_csa_cnt_input; + ifbmp = rtw_mi_get_ap_mesh_ifbmp(adapter); + rtw_mi_status_no_self(adapter, &mstate); - if (csa_cnt > 0 && ifbmp && MSTATE_AP_LD_NUM(&mstate) && - rtw_mi_get_union_chan(adapter) != candidate->network.Configuration.DSConfig) { - rfctl->ap_csa_en = CSA_STA_JOINBSS; - rfctl->ap_csa_switch_cnt = csa_cnt; - rtw_bss_get_chbw(&(candidate->network), &rfctl->ap_csa_ch - , &rfctl->ap_csa_ch_width, &rfctl->ap_csa_ch_offset, 1, 1); - rtw_set_ap_csa_cmd(adapter); + if (csa_cnt > 0 && ifbmp && MSTATE_AP_LD_NUM(&mstate) && + rtw_mi_get_union_chan(adapter) != candidate->network.Configuration.DSConfig) { + rfctl->ap_csa_en = CSA_STA_JOINBSS; + rfctl->ap_csa_wait_update_bcn = 0; + rfctl->ap_csa_switch_cnt = csa_cnt; + rtw_bss_get_chbw(&(candidate->network), &rfctl->ap_csa_ch + , &rfctl->ap_csa_ch_width, &rfctl->ap_csa_ch_offset, 1, 1); + rtw_set_ap_csa_cmd(adapter); - /* Store candidata network until softap switch channel done */ - _rtw_memcpy(&(pmlmepriv->candidate_network), candidate, sizeof(struct wlan_network)); - ret = _SUCCESS; - goto exit; + /* Store candidata network until softap switch channel done */ + _rtw_memcpy(&(pmlmepriv->candidate_network), candidate, sizeof(struct wlan_network)); + ret = _SUCCESS; + goto exit; + } +#ifdef CONFIG_MCC_MODE + } else { + RTW_INFO("[MCC] bypass CSA for MCC\n"); } +#endif } #endif @@ -4690,11 +4932,11 @@ int rtw_cached_pmkid(_adapter *Adapter, u8 *bssid) return SecIsInPMKIDList(Adapter, bssid); } -int rtw_rsn_sync_pmkid(_adapter *adapter, u8 *ie, uint ie_len, int i_ent) +int rtw_pmkid_sync_rsn(_adapter *adapter, u8 *ie, uint ie_len, int i_ent) { + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; struct security_priv *sec = &adapter->securitypriv; struct rsne_info info; - u8 gm_cs[4]; int i; rtw_rsne_info_parse(ie, ie_len, &info); @@ -4708,49 +4950,33 @@ int rtw_rsn_sync_pmkid(_adapter *adapter, u8 *ie, uint ie_len, int i_ent) if (i_ent < 0 && info.pmkid_cnt == 0) goto exit; - if (info.pmkid_list == NULL) - goto exit; - if (i_ent >= 0 && info.pmkid_cnt == 1 && _rtw_memcmp(info.pmkid_list, sec->PMKIDList[i_ent].PMKID, 16)) { RTW_INFO(FUNC_ADPT_FMT" has carried the same PMKID:"KEY_FMT"\n" , FUNC_ADPT_ARG(adapter), KEY_ARG(&sec->PMKIDList[i_ent].PMKID)); goto exit; } - /* bakcup group mgmt cs */ - if (info.gmcs) - _rtw_memcpy(gm_cs, info.gmcs, 4); - - if (info.pmkid_cnt) { - RTW_INFO(FUNC_ADPT_FMT" remove original PMKID, count:%u\n" - , FUNC_ADPT_ARG(adapter), info.pmkid_cnt); + if (info.pmkid_cnt && pmlmepriv->assoc_by_bssid) { + RTW_INFO(FUNC_ADPT_FMT " update PMKID list, count:%u\n", FUNC_ADPT_ARG(adapter), info.pmkid_cnt); for (i = 0; i < info.pmkid_cnt; i++) - RTW_INFO(" "KEY_FMT"\n", KEY_ARG(info.pmkid_list + i * 16)); + RTW_INFO(" " KEY_FMT "\n", KEY_ARG(info.pmkid_list + i * 16)); + + /* add pmkid in list */ + _rtw_memcpy(sec->PMKIDList[sec->PMKIDIndex].Bssid, pmlmepriv->assoc_bssid, ETH_ALEN); + _rtw_memcpy(sec->PMKIDList[sec->PMKIDIndex].PMKID, info.pmkid_list, WLAN_PMKID_LEN); + + sec->PMKIDList[sec->PMKIDIndex].bUsed = _TRUE; + sec->PMKIDIndex++; + if (sec->PMKIDIndex == 16) + sec->PMKIDIndex = 0; + } else if (i_ent >= 0) { + RTW_INFO(FUNC_ADPT_FMT " remove PMKID list", FUNC_ADPT_ARG(adapter)); + /* remove pmkid in list */ + _rtw_memset(sec->PMKIDList[i_ent].Bssid, 0x00, ETH_ALEN); + _rtw_memset(sec->PMKIDList[i_ent].PMKID, 0x00, WLAN_PMKID_LEN); + sec->PMKIDList[i_ent].bUsed = _FALSE; } - if (i_ent >= 0) { - RTW_INFO(FUNC_ADPT_FMT" append PMKID:"KEY_FMT"\n" - , FUNC_ADPT_ARG(adapter), KEY_ARG(sec->PMKIDList[i_ent].PMKID)); - - info.pmkid_cnt = 1; /* update new pmkid_cnt */ - _rtw_memcpy(info.pmkid_list, sec->PMKIDList[i_ent].PMKID, 16); - } else - info.pmkid_cnt = 0; /* update new pmkid_cnt */ - - RTW_PUT_LE16(info.pmkid_list - 2, info.pmkid_cnt); - if (info.gmcs) - _rtw_memcpy(info.pmkid_list + 16 * info.pmkid_cnt, gm_cs, 4); - - ie_len = 1 + 1 + 2 + 4 - + 2 + 4 * info.pcs_cnt - + 2 + 4 * info.akm_cnt - + 2 - + 2 + 16 * info.pmkid_cnt - + (info.gmcs ? 4 : 0) - ; - - ie[1] = (u8)(ie_len - 2); - exit: return ie_len; } @@ -4791,11 +5017,10 @@ sint rtw_restruct_sec_ie(_adapter *adapter, u8 *out_ie) if (authmode == WLAN_EID_RSN) { iEntry = SecIsInPMKIDList(adapter, pmlmepriv->assoc_bssid); - ielength = rtw_rsn_sync_pmkid(adapter, out_ie, ielength, iEntry); + ielength = rtw_pmkid_sync_rsn(adapter, out_ie, ielength, iEntry); } - if ((psecuritypriv->auth_type == MLME_AUTHTYPE_SAE) && - (psecuritypriv->rsnx_ie_len >= 3)) { + if ((psecuritypriv->rsnx_ie_len >= 3)) { u8 *_pos = out_ie + (psecuritypriv->supplicant_ie[1] + 2); _rtw_memcpy(_pos, psecuritypriv->rsnx_ie, psecuritypriv->rsnx_ie_len); @@ -4895,6 +5120,7 @@ void rtw_joinbss_reset(_adapter *padapter) pmlmepriv->num_FortyMHzIntolerant = 0; pmlmepriv->num_sta_no_ht = 0; + pmlmepriv->sw_to_20mhz = _FALSE; phtpriv->ampdu_enable = _FALSE;/* reset to disabled */ @@ -4993,29 +5219,30 @@ void rtw_ht_use_default_setting(_adapter *padapter) } #endif /* CONFIG_BEAMFORMING */ } + void rtw_build_wmm_ie_ht(_adapter *padapter, u8 *out_ie, uint *pout_len) { unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00}; int out_len; - u8 *pframe; if (padapter->mlmepriv.qospriv.qos_option == 0) { out_len = *pout_len; - pframe = rtw_set_ie(out_ie + out_len, _VENDOR_SPECIFIC_IE_, - _WMM_IE_Length_, WMM_IE, pout_len); + rtw_set_ie(out_ie + out_len, _VENDOR_SPECIFIC_IE_, + _WMM_IE_Length_, WMM_IE, pout_len); padapter->mlmepriv.qospriv.qos_option = 1; } } + #if defined(CONFIG_80211N_HT) /* the fucntion is >= passive_level */ -unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel, struct country_chplan *req_chplan) +unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel) { u32 ielen, out_len; u32 rx_packet_offset, max_recvbuf_sz; HT_CAP_AMPDU_FACTOR max_rx_ampdu_factor; HT_CAP_AMPDU_DENSITY best_ampdu_density; - unsigned char *p, *pframe; + unsigned char *p; BAND_TYPE band = channel > 14 ? BAND_ON_5G : BAND_ON_2_4G; struct rtw_ieee80211_ht_cap ht_capie; u8 cbw40_enable = 0, rf_num = 0, rx_stbc_nss = 0, rx_nss = 0; @@ -5051,8 +5278,6 @@ unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, ui } if (cbw40_enable) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; u8 oper_bw = CHANNEL_WIDTH_20, oper_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; if (in_ie == NULL) { @@ -5115,23 +5340,13 @@ unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, ui } } - /* adjust bw to fit in channel plan setting */ if (oper_bw == CHANNEL_WIDTH_40 && oper_offset != HAL_PRIME_CHNL_OFFSET_DONT_CARE /* check this because TDLS has no info to set offset */ ) { - if ((req_chplan && !rtw_country_chplan_is_chbw_valid(req_chplan, band, channel, oper_bw, oper_offset, 1, 1, pregistrypriv)) - || (!req_chplan && !rtw_chset_is_chbw_valid(chset, channel, oper_bw, oper_offset, 1, 1)) - || (IS_DFS_SLAVE_WITH_RD(rfctl) - && !rtw_rfctl_dfs_domain_unknown(rfctl) - && rtw_chset_is_chbw_non_ocp(chset, channel, oper_bw, oper_offset)) - ) { - oper_bw = CHANNEL_WIDTH_20; + /* adjust bw to fit in channel plan setting */ + oper_bw = adapter_adjust_linking_bw_by_regd(padapter, band, channel, oper_bw, oper_offset); + if (oper_bw == CHANNEL_WIDTH_20) oper_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - rtw_warn_on(req_chplan && !rtw_country_chplan_is_chbw_valid(req_chplan, band, channel, oper_bw, oper_offset, 1, 1, pregistrypriv)); - rtw_warn_on(!req_chplan && !rtw_chset_is_chbw_valid(chset, channel, oper_bw, oper_offset, 1, 1)); - if (IS_DFS_SLAVE_WITH_RD(rfctl) && !rtw_rfctl_dfs_domain_unknown(rfctl)) - rtw_warn_on(rtw_chset_is_chbw_non_ocp(chset, channel, oper_bw, oper_offset)); - } } if (oper_bw == CHANNEL_WIDTH_40) { @@ -5277,8 +5492,9 @@ unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, ui } #endif/*CONFIG_BEAMFORMING*/ - pframe = rtw_set_ie(out_ie + out_len, _HT_CAPABILITY_IE_, - sizeof(struct rtw_ieee80211_ht_cap), (unsigned char *)&ht_capie, pout_len); + rtw_set_ie(out_ie + out_len, _HT_CAPABILITY_IE_, + sizeof(struct rtw_ieee80211_ht_cap), + (unsigned char *)&ht_capie, pout_len); phtpriv->ht_option = _TRUE; @@ -5286,12 +5502,12 @@ unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, ui p = rtw_get_ie(in_ie, _HT_ADD_INFO_IE_, &ielen, in_len); if (p && (ielen == sizeof(struct ieee80211_ht_addt_info))) { out_len = *pout_len; - pframe = rtw_set_ie(out_ie + out_len, _HT_ADD_INFO_IE_, ielen, p + 2 , pout_len); + rtw_set_ie(out_ie + out_len, _HT_ADD_INFO_IE_, + ielen, p + 2, pout_len); } } return phtpriv->ht_option; - } /* the fucntion is > passive_level (in critical_section) */ @@ -5301,7 +5517,9 @@ void rtw_update_ht_cap(_adapter *padapter, u8 *pie, uint ie_len, u8 channel) int len; /* struct sta_info *bmc_sta, *psta; */ struct rtw_ieee80211_ht_cap *pht_capie; +#if 0 /* todo: _HT_ADD_INFO_IE_ */ struct ieee80211_ht_addt_info *pht_addtinfo; +#endif /* struct recv_reorder_ctrl *preorder_ctrl; */ struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct ht_priv *phtpriv = &pmlmepriv->htpriv; @@ -5345,13 +5563,14 @@ void rtw_update_ht_cap(_adapter *padapter, u8 *pie, uint ie_len, u8 channel) } - +#if 0 /* todo */ len = 0; p = rtw_get_ie(pie + sizeof(NDIS_802_11_FIXED_IEs), _HT_ADD_INFO_IE_, &len, ie_len - sizeof(NDIS_802_11_FIXED_IEs)); if (p && len > 0) { pht_addtinfo = (struct ieee80211_ht_addt_info *)(p + 2); /* todo: */ } +#endif if (hal_chk_bw_cap(padapter, BW_CAP_40M)) { if (channel > 14) { @@ -5402,11 +5621,11 @@ void rtw_update_ht_cap(_adapter *padapter, u8 *pie, uint ie_len, u8 channel) /* switch to the 40M Hz mode accoring to the AP */ /* pmlmeext->cur_bwmode = CHANNEL_WIDTH_40; */ switch ((pmlmeinfo->HT_info.infos[0] & 0x3)) { - case EXTCHNL_OFFSET_UPPER: + case SCA: pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; break; - case EXTCHNL_OFFSET_LOWER: + case SCB: pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; break; @@ -5597,27 +5816,30 @@ inline u8 rtw_to_roam(_adapter *adapter) return adapter->mlmepriv.to_roam; } -void rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network) +void rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network, u8 scan_band, u8 scan_ch) { _irqL irqL; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; _enter_critical_bh(&pmlmepriv->lock, &irqL); - _rtw_roaming(padapter, tgt_network); + _rtw_roaming(padapter, tgt_network, scan_band, scan_ch); _exit_critical_bh(&pmlmepriv->lock, &irqL); } -void _rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network) +void _rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network, u8 scan_band, u8 scan_ch) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct wlan_network *cur_network = &pmlmepriv->cur_network; int do_join_r; if (0 < rtw_to_roam(padapter)) { - RTW_INFO("roaming from %s("MAC_FMT"), length:%d\n", + RTW_INFO("roaming from %s("MAC_FMT"), length:%d scan_band:%s, scan_ch:%u\n", cur_network->network.Ssid.Ssid, MAC_ARG(cur_network->network.MacAddress), - cur_network->network.Ssid.SsidLength); + cur_network->network.Ssid.SsidLength, band_str(scan_band), scan_ch); _rtw_memcpy(&pmlmepriv->assoc_ssid, &cur_network->network.Ssid, sizeof(NDIS_802_11_SSID)); - pmlmepriv->assoc_ch = 0; + if (scan_band != BAND_MAX && scan_ch) + pmlmepriv->assoc_ch = scan_ch; + else + pmlmepriv->assoc_ch = 0; pmlmepriv->assoc_by_bssid = _FALSE; #ifdef CONFIG_WAPI_SUPPORT @@ -5637,7 +5859,7 @@ void _rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network) else { RTW_INFO("%s(%d) -to roaming fail, indicate_disconnect\n", __FUNCTION__, __LINE__); #ifdef CONFIG_RTW_80211R - rtw_ft_clr_flags(padapter, RTW_FT_PEER_EN|RTW_FT_PEER_OTD_EN); + /* rtw_ft_clr_flags(padapter, RTW_FT_PEER_EN|RTW_FT_PEER_OTD_EN); */ rtw_ft_reset_status(padapter); #endif rtw_indicate_disconnect(padapter, 0, _FALSE); @@ -5650,7 +5872,8 @@ void _rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network) } #endif /* CONFIG_LAYER2_ROAMING */ -bool rtw_adjust_chbw(_adapter *adapter, u8 req_ch, u8 *req_bw, u8 *req_offset) +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY bool rtw_adjust_chbw(_adapter *adapter, u8 req_ch, u8 *req_bw, u8 *req_offset) { struct registry_priv *regsty = adapter_to_regsty(adapter); u8 allowed_bw; @@ -5676,6 +5899,7 @@ bool rtw_adjust_chbw(_adapter *adapter, u8 req_ch, u8 *req_bw, u8 *req_offset) return _TRUE; } +#endif sint rtw_linked_check(_adapter *padapter) { diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_mlme_ext.c b/drivers/net/wireless/rtl8822cs/core/rtw_mlme_ext.c index 74aa1d1a3..dcf33f770 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_mlme_ext.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_mlme_ext.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -118,10 +118,12 @@ unsigned char REALTEK_TBTX_IE[] = {0x00, 0xe0, 0x4c, 0x01, 0x00, 0x00, 0x00, 0x0 #endif extern unsigned char REALTEK_96B_IE[]; -static void init_channel_list(_adapter *padapter, RT_CHANNEL_INFO *channel_set - , struct p2p_channels *channel_list) +void init_channel_list(_adapter *padapter) { + struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); struct registry_priv *regsty = adapter_to_regsty(padapter); + struct rtw_chset *chset = adapter_to_chset(padapter); + struct p2p_channels *channel_list = &rfctl->channel_list; struct p2p_oper_class_map op_class[] = { { IEEE80211G, 81, 1, 13, 1, BW20 }, @@ -150,7 +152,7 @@ static void init_channel_list(_adapter *padapter, RT_CHANNEL_INFO *channel_set struct p2p_reg_class *reg = NULL; for (ch = o->min_chan; ch <= o->max_chan; ch += o->inc) { - if (rtw_chset_search_ch(channel_set, ch) == -1) + if (rtw_chset_search_ch(chset, ch) == -1) continue; #if defined(CONFIG_80211N_HT) || defined(CONFIG_80211AC_VHT) if ((padapter->registrypriv.ht_enable == 0) && (o->inc == 8)) @@ -174,243 +176,95 @@ static void init_channel_list(_adapter *padapter, RT_CHANNEL_INFO *channel_set } -#if CONFIG_TXPWR_LIMIT -static void rtw_txpwr_init_regd_default(struct rf_ctl_t *rfctl) +static void rtw_rfctl_get_band_and_bw_bmp(_adapter *adapter, u8 *band_bmp, u8 bw_bmp_of_band[]) { - bool country_txpwr_lmt_override = 0; - u8 txpwr_lmt[BAND_MAX]; - const char *name[BAND_MAX]; - u8 unknown_bmp = 0; /* unknown bitmap */ - char buf[TXPWR_NAMES_STR_LEN]; - u8 band; - bool altenate_applied = 0; + struct registry_priv *regsty = adapter_to_regsty(adapter); - for (band = 0; band < BAND_MAX; band++) { - txpwr_lmt[band] = TXPWR_LMT_NONE; - name[band] = NULL; - unknown_bmp |= BIT(band); - } - - if (rfctl->txpwr_lmt_override != TXPWR_LMT_DEF) { - country_txpwr_lmt_override = 1; - for (band = 0; band < BAND_MAX; band++) - txpwr_lmt[band] = rfctl->txpwr_lmt_override; - } else { - txpwr_lmt[BAND_ON_2_4G] = rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_2g(rfctl->ChannelPlan)); - #if CONFIG_IEEE80211_BAND_5GHZ - txpwr_lmt[BAND_ON_5G] = rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_5g(rfctl->ChannelPlan)); - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - txpwr_lmt[BAND_ON_6G] = rtw_regd_to_txpwr_lmt(rtw_chplan_get_default_regd_6g(rfctl->chplan_6g)); - #endif - } - - for (band = 0; band < BAND_MAX; band++) { - name[band] = txpwr_lmt_str(txpwr_lmt[band]); - if (txpwr_lmt[band] == TXPWR_LMT_NONE || txpwr_lmt[band] == TXPWR_LMT_WW || txpwr_lmt[band] == TXPWR_LMT_NUM - || _rtw_txpwr_lmt_get_by_name(rfctl, name[band])) - unknown_bmp &= ~BIT(band); - } - - if (country_txpwr_lmt_override) { - RTW_PRINT("default mapping country:%c%c to txpwr_lmt:%s\n" - , rfctl->alpha2[0], rfctl->alpha2[1] - , rtw_get_txpwr_lmt_names_str(buf, name, unknown_bmp) - ); - } else { - RTW_PRINT("default mapping domain to txpwr_lmt:%s\n" - , rtw_get_txpwr_lmt_names_str(buf, name, unknown_bmp)); - } - if (unknown_bmp == 0) - goto exit; - - for (band = 0; band < BAND_MAX; band++) { - if (!(unknown_bmp & BIT(band))) - continue; - if (TXPWR_LMT_ALTERNATE_DEFINED(txpwr_lmt[band])) { - /* - * To support older chips without new predefined txpwr_lmt: - * - use txpwr_lmt_alternate() to get alternate if the selection is not found - */ - altenate_applied = 1; - txpwr_lmt[band] = txpwr_lmt_alternate(txpwr_lmt[band]); - name[band] = txpwr_lmt_str(txpwr_lmt[band]); - if (_rtw_txpwr_lmt_get_by_name(rfctl, name[band])) - unknown_bmp &= ~BIT(band); - } - } - if (altenate_applied) { - RTW_PRINT("alternate applied txpwr_lmt:%s\n" - , rtw_get_txpwr_lmt_names_str(buf, name, unknown_bmp)); - if (unknown_bmp == 0) - goto exit; - } - - for (band = 0; band < BAND_MAX; band++) { - if (!(unknown_bmp & BIT(band))) - continue; - txpwr_lmt[band] = TXPWR_LMT_WW; - name[band] = txpwr_lmt_str(txpwr_lmt[band]); - unknown_bmp &= ~BIT(band); - } - RTW_PRINT("world wide applied txpwr_lmt:%s\n" - , rtw_get_txpwr_lmt_names_str(buf, name, unknown_bmp)); - -exit: - for (band = 0; band < BAND_MAX; band++) - rfctl->txpwr_lmt_name[band] = name[band]; -} - -void rtw_txpwr_init_regd(struct rf_ctl_t *rfctl) -{ - const char *name = NULL; - u8 band; - struct regd_exc_ent *exc; - struct txpwr_lmt_ent *ent; - _irqL irqL; - - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - - for (band = 0; band < BAND_MAX; band++) - rfctl->txpwr_lmt_name[band] = NULL; - - if (rfctl->txpwr_lmt_num == 0) { - RTW_PRINT("there is no any txpwr_regd\n"); - goto release_lock; - } - - /* search from exception mapping */ - exc = _rtw_regd_exc_search(rfctl, rfctl->alpha2, rfctl->ChannelPlan); - if (exc) { - u8 has_country = (exc->country[0] == '\0' && exc->country[1] == '\0') ? 0 : 1; - - if (strcmp(exc->lmt_name, txpwr_lmt_str(TXPWR_LMT_NONE)) == 0) - name = txpwr_lmt_str(TXPWR_LMT_NONE); - else if (strcmp(exc->lmt_name, txpwr_lmt_str(TXPWR_LMT_WW)) == 0) - name = txpwr_lmt_str(TXPWR_LMT_WW); - else { - ent = _rtw_txpwr_lmt_get_by_name(rfctl, exc->lmt_name); - if (ent) - name = ent->name; - } - - RTW_PRINT("exception mapping country:%c%c domain:0x%02x to%s txpwr_lmt:%s\n" - , has_country ? exc->country[0] : '-' - , has_country ? exc->country[1] : '-' - , exc->domain - , name ? "" : " unknown" - , exc->lmt_name - ); - if (name) { - for (band = 0; band < BAND_MAX; band++) - rfctl->txpwr_lmt_name[band] = name; - goto release_lock; - } - } - -#ifdef CONFIG_REGD_SRC_FROM_OS - if (rfctl->regd_src == REGD_SRC_OS) { - if (RFCTL_REG_WORLDWIDE(rfctl)) - name = txpwr_lmt_str(TXPWR_LMT_WW); - else { - char alpha2[3] = { - rfctl->alpha2[0], rfctl->alpha2[1], 0}; - - ent = _rtw_txpwr_lmt_get_by_name(rfctl, alpha2); - if (ent) - name = ent->name; - } - - if (name) { - for (band = 0; band < BAND_MAX; band++) - rfctl->txpwr_lmt_name[band] = name; - RTW_PRINT("mapping country:%c%c to txpwr_lmt:%s\n" - , rfctl->alpha2[0] - , rfctl->alpha2[1] - , name - ); - goto release_lock; - } - - if (rfctl->ChannelPlan == RTW_CHPLAN_UNSPECIFIED) { - name = txpwr_lmt_str(TXPWR_LMT_WW); - for (band = 0; band < BAND_MAX; band++) - rfctl->txpwr_lmt_name[band] = name; - RTW_PRINT("mapping unsupported country:%c%c to txpwr_lmt:%s\n" - , rfctl->alpha2[0] - , rfctl->alpha2[1] - , name - ); - goto release_lock; - } - } + if (is_supported_24g(regsty->wireless_mode) && hal_chk_band_cap(adapter, BAND_CAP_2G)) + *band_bmp |= BAND_CAP_2G; +#if CONFIG_IEEE80211_BAND_5GHZ + if (is_supported_5g(regsty->wireless_mode) && hal_chk_band_cap(adapter, BAND_CAP_5G)) + *band_bmp |= BAND_CAP_5G; +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + if (is_supported_6g(regsty->wireless_mode) && hal_chk_band_cap(adapter, BAND_CAP_6G) + && REGSTY_IS_11AX_ENABLE(regsty) && is_supported_he(regsty->wireless_mode)) + *band_bmp |= BAND_CAP_6G; #endif - /* follow default channel plan mapping */ - rtw_txpwr_init_regd_default(rfctl); + bw_bmp_of_band[BAND_ON_24G] = (ch_width_to_bw_cap(REGSTY_BW_2G(regsty) + 1) - 1) & (GET_HAL_SPEC(adapter)->bw_cap); +#if CONFIG_IEEE80211_BAND_5GHZ + bw_bmp_of_band[BAND_ON_5G] = (ch_width_to_bw_cap(REGSTY_BW_5G(regsty) + 1) - 1) & (GET_HAL_SPEC(adapter)->bw_cap); +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + bw_bmp_of_band[BAND_ON_6G] = (ch_width_to_bw_cap(REGSTY_BW_6G(regsty) + 1) - 1) & (GET_HAL_SPEC(adapter)->bw_cap); +#endif -release_lock: - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); +#if CONFIG_IEEE80211_BAND_5GHZ + if (!REGSTY_IS_11AC_ENABLE(regsty) + || !is_supported_vht(regsty->wireless_mode) + ) + bw_bmp_of_band[BAND_ON_5G] &= ~(BW_CAP_80M | BW_CAP_160M); +#endif + + if (0) { + RTW_INFO("REGSTY_BW_2G(regsty):%u\n", REGSTY_BW_2G(regsty)); + #if CONFIG_IEEE80211_BAND_5GHZ + RTW_INFO("REGSTY_BW_5G(regsty):%u\n", REGSTY_BW_5G(regsty)); + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + RTW_INFO("REGSTY_BW_6G(regsty):%u\n", REGSTY_BW_6G(regsty)); + #endif + RTW_INFO("GET_HAL_SPEC(adapter)->bw_cap:0x%x\n", GET_HAL_SPEC(adapter)->bw_cap); + RTW_INFO("band_bmp:0x%x\n", *band_bmp); + RTW_INFO("bw_bmp[2G]:0x%x\n", bw_bmp_of_band[BAND_ON_24G]); + #if CONFIG_IEEE80211_BAND_5GHZ + RTW_INFO("bw_bmp[5G]:0x%x\n", bw_bmp_of_band[BAND_ON_5G]); + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + RTW_INFO("bw_bmp[6G]:0x%x\n", bw_bmp_of_band[BAND_ON_6G]); + #endif + } } -bool rtw_rfctl_is_current_txpwr_lmt(struct rf_ctl_t *rfctl, const char *name) -{ - int band; - - for (band = 0; band < BAND_MAX; band++) - if (rfctl->txpwr_lmt_name[band] && strcmp(name, rfctl->txpwr_lmt_name[band]) == 0) - return 1; - - return 0; -} -#endif /* CONFIG_TXPWR_LIMIT */ - int rtw_rfctl_init(_adapter *adapter) { struct registry_priv *regsty = adapter_to_regsty(adapter); struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + u8 band_bmp = 0; + u8 bw_bmp_of_band[BAND_MAX] = {0}; int ret; + rtw_rfctl_get_band_and_bw_bmp(adapter, &band_bmp, bw_bmp_of_band); + _rtw_mutex_init(&rfctl->offch_mutex); - rfctl->user_ChannelPlan = RTW_CHPLAN_UNSPECIFIED; -#if CONFIG_IEEE80211_BAND_6GHZ - rfctl->user_chplan_6g = RTW_CHPLAN_6G_UNSPECIFIED; -#endif + rtw_rfctl_addl_ch_disable_conf_init(rfctl, regsty); + + rtw_regd_req_list_init(rfctl, regsty); + + rfctl->bcn_hint_valid_ms = regsty->bcn_hint_valid_ms; #ifdef CONFIG_80211D - rfctl->country_ie_slave_en_role = regsty->country_ie_slave_en_role; - rfctl->country_ie_slave_en_ifbmp = regsty->country_ie_slave_en_ifbmp; - rfctl->effected_cisr_id = CONFIG_IFACE_NUMBER; + rtw_rfctl_cis_init(rfctl, regsty); #endif -#if CONFIG_TXPWR_LIMIT - _rtw_mutex_init(&rfctl->txpwr_lmt_mutex); - _rtw_init_listhead(&rfctl->reg_exc_list); - _rtw_init_listhead(&rfctl->txpwr_lmt_list); -#endif - - rfctl->ch_sel_within_same_band = 1; - -#ifdef CONFIG_DFS_MASTER - rfctl->dfs_region_domain = regsty->dfs_region_domain; - rfctl->cac_start_time = rfctl->cac_end_time = RTW_CAC_STOPPED; - rtw_init_timer(&(rfctl->radar_detect_timer), adapter, rtw_dfs_rd_timer_hdl, rfctl); -#endif -#if CONFIG_DFS_SLAVE_WITH_RADAR_DETECT - rfctl->dfs_slave_with_rd = 1; +#ifndef CONFIG_DIRECT_EDCCA_MODE_SETTING + rfctl->last_edcca_mode_op_band = BAND_MAX; #endif if (regsty->antenna_gain != UNSPECIFIED_MBM) rfctl->antenna_gain = regsty->antenna_gain; + rtw_rfctl_dfs_init(rfctl, regsty); + #if defined(CONFIG_CONCURRENT_MODE) && defined(CONFIG_AP_MODE) rfctl->ap_csa_cnt_input = DEFAULT_CSA_CNT; #endif - ret = op_class_pref_init(adapter); - if (ret != _SUCCESS) - op_class_pref_deinit(adapter); + rtw_chset_init(&rfctl->chset, band_bmp); + + ret = rtw_rfctl_op_class_pref_init(rfctl, band_bmp, bw_bmp_of_band); return ret; } @@ -421,196 +275,16 @@ void rtw_rfctl_deinit(_adapter *adapter) _rtw_mutex_free(&rfctl->offch_mutex); -#if CONFIG_TXPWR_LIMIT - rtw_regd_exc_list_free(rfctl); - rtw_txpwr_lmt_list_free(rfctl); - _rtw_mutex_free(&rfctl->txpwr_lmt_mutex); + rtw_regd_req_list_free(rfctl); + +#ifdef CONFIG_80211D + rtw_rfctl_cis_deinit(rfctl); #endif - op_class_pref_deinit(adapter); + rtw_rfctl_op_class_pref_deinit(rfctl); } -/* - * Description: - * Use hardware(efuse), driver parameter(registry) and default channel plan - * to decide which one should be used. - * - * Parameters: - * rfctl pointer of rfctl - * hw_alpha2 country code from HW (efuse/eeprom/mapfile) - * hw_chplan domain code from HW (efuse/eeprom/mapfile) - * hw_chplan_6g 6g domain code from HW (efuse/eeprom/mapfile) - * hw_force_chplan if forcing HW channel plan setting (efuse/eeprom/mapfile) - * will modified tif HW channel plan setting is invlid, will - */ -void rtw_rfctl_decide_init_chplan(struct rf_ctl_t *rfctl, - const char *hw_alpha2, u8 hw_chplan, u8 hw_chplan_6g, u8 hw_force_chplan) -{ - struct registry_priv *regsty; - char *sw_alpha2; - const struct country_chplan *country_ent = NULL; - struct country_chplan ent; - int chplan = -1; - int chplan_6g = -1; - - u8 sw_chplan; - u8 def_chplan = RTW_CHPLAN_WORLDWIDE; /* worldwide, used when HW, SW both invalid */ -#if CONFIG_IEEE80211_BAND_6GHZ - u8 sw_chplan_6g; - u8 def_chplan_6g = RTW_CHPLAN_6G_WORLDWIDE; /* worldwide, used when HW, SW both invalid */ -#endif - - if (hw_alpha2) { - if (rtw_get_chplan_from_country(hw_alpha2, &ent)) { - /* get chplan from hw country code, by pass hw chplan setting */ - country_ent = &ent; - chplan = ent.chplan; - #if CONFIG_IEEE80211_BAND_6GHZ - chplan_6g = ent.chplan_6g; - #endif - goto chk_sw_config; - } else - RTW_PRINT("%s unsupported hw_alpha2:\"%c%c\"\n", __func__, hw_alpha2[0], hw_alpha2[1]); - } - - if (rtw_is_channel_plan_valid(hw_chplan)) - chplan = hw_chplan; - else if (hw_force_chplan == _TRUE) { - RTW_PRINT("%s unsupported hw_chplan:0x%02X\n", __func__, hw_chplan); - /* hw infomaton invalid, refer to sw information */ - hw_force_chplan = _FALSE; - } - -#if CONFIG_IEEE80211_BAND_6GHZ - if (rtw_is_channel_plan_6g_valid(hw_chplan_6g)) - chplan_6g = hw_chplan_6g; - else if (hw_force_chplan == _TRUE) { - RTW_PRINT("%s unsupported hw_chplan_6g:0x%02X\n", __func__, hw_chplan_6g); - /* hw infomaton invalid, refer to sw information */ - hw_force_chplan = _FALSE; - } -#endif - -chk_sw_config: - if (hw_force_chplan == _TRUE) - goto done; - - regsty = dvobj_to_regsty(rfctl_to_dvobj(rfctl)); - sw_alpha2 = regsty->alpha2; - sw_chplan = regsty->channel_plan; - #if CONFIG_IEEE80211_BAND_6GHZ - sw_chplan_6g = regsty->channel_plan_6g; - #endif - - if (sw_alpha2 && !IS_ALPHA2_UNSPEC(sw_alpha2)) { - if (IS_ALPHA2_WORLDWIDE(sw_alpha2) - || rtw_get_chplan_from_country(sw_alpha2, &ent) - ) { - /* get chplan from sw country code, by pass sw chplan setting */ - if (IS_ALPHA2_WORLDWIDE(sw_alpha2)) - rtw_get_chplan_worldwide(&ent); - country_ent = &ent; - chplan = ent.chplan; - #if CONFIG_IEEE80211_BAND_6GHZ - chplan_6g = ent.chplan_6g; - #endif - goto done; - } else - RTW_PRINT("%s unsupported sw_alpha2:\"%c%c\"\n", __func__, sw_alpha2[0], sw_alpha2[1]); - } - - if (rtw_is_channel_plan_valid(sw_chplan)) { - /* cancel hw_alpha2 because chplan is specified by sw_chplan */ - country_ent = NULL; - chplan = sw_chplan; - } else if (sw_chplan != RTW_CHPLAN_UNSPECIFIED) - RTW_PRINT("%s unsupported sw_chplan:0x%02X\n", __func__, sw_chplan); - -#if CONFIG_IEEE80211_BAND_6GHZ - if (rtw_is_channel_plan_6g_valid(sw_chplan_6g)) { - /* cancel hw_alpha2 because chplan_6g is specified by sw_chplan_6g */ - country_ent = NULL; - chplan_6g = sw_chplan_6g; - } else if (sw_chplan_6g != RTW_CHPLAN_6G_UNSPECIFIED) - RTW_PRINT("%s unsupported sw_chplan_6g:0x%02X\n", __func__, sw_chplan_6g); -#endif - -done: - if (chplan == -1) { - RTW_PRINT("%s use def_chplan:0x%02X\n", __func__, def_chplan); - chplan = def_chplan; - } else - RTW_PRINT("%s chplan:0x%02X\n", __func__, chplan); - -#if CONFIG_IEEE80211_BAND_6GHZ - if (chplan_6g == -1) { - RTW_PRINT("%s use def_chplan_6g:0x%02X\n", __func__, def_chplan_6g); - chplan_6g = def_chplan_6g; - } else - RTW_PRINT("%s chplan_6g:0x%02X\n", __func__, chplan_6g); -#endif - - if (!country_ent) { - if (rtw_chplan_ids_is_world_wide(chplan, chplan_6g)) - rtw_get_chplan_worldwide(&ent); - else { - SET_UNSPEC_ALPHA2(ent.alpha2); - ent.edcca_mode_2g_override = RTW_EDCCA_DEF; - #if CONFIG_IEEE80211_BAND_5GHZ - ent.edcca_mode_5g_override = RTW_EDCCA_DEF; - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - ent.edcca_mode_6g_override = RTW_EDCCA_DEF; - #endif - ent.txpwr_lmt_override = TXPWR_LMT_DEF; - #if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) - ent.proto_en = CHPLAN_PROTO_EN_ALL; - #endif - } - } else { - RTW_PRINT("%s country code:\"%c%c\"\n", __func__ - , country_ent->alpha2[0], country_ent->alpha2[1]); - } - - rfctl->disable_sw_chplan = hw_force_chplan; - - rfctl->regd_inr = RTW_REGD_SET_BY_INIT; - rfctl->init_alpha2[0] = rfctl->alpha2[0] = ent.alpha2[0]; - rfctl->init_alpha2[1] = rfctl->alpha2[1] = ent.alpha2[1]; - rfctl->init_ChannelPlan = rfctl->ChannelPlan = chplan; -#if CONFIG_IEEE80211_BAND_6GHZ - rfctl->init_chplan_6g = rfctl->chplan_6g = chplan_6g; -#endif - rfctl->edcca_mode_2g_override = ent.edcca_mode_2g_override; -#if CONFIG_IEEE80211_BAND_5GHZ - rfctl->edcca_mode_5g_override = ent.edcca_mode_5g_override; -#endif -#if CONFIG_IEEE80211_BAND_6GHZ - rfctl->edcca_mode_6g_override = ent.edcca_mode_6g_override; -#endif -#if CONFIG_TXPWR_LIMIT - rfctl->txpwr_lmt_override = ent.txpwr_lmt_override; -#endif -#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) - rfctl->proto_en = ent.proto_en; -#endif -} - -void rtw_rfctl_chplan_init(_adapter *adapter) -{ - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - - init_channel_set(adapter); - op_class_pref_apply_regulatory(adapter, REG_CHANGE); - init_channel_list(adapter, rfctl->channel_set, &rfctl->channel_list); -} - -bool rtw_rfctl_is_disable_sw_channel_plan(struct dvobj_priv *dvobj) -{ - return dvobj_to_rfctl(dvobj)->disable_sw_chplan; -} - -void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op) +void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op, u8 ifbmp_excl) { struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); _adapter *iface; @@ -624,6 +298,9 @@ void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op) u8 u_ch = 0, u_bw, u_offset; bool notify = 0; int i; +#ifdef CONFIG_MCC_MODE + bool need_sync_bchbw = _TRUE; +#endif for (i = 0; i < dvobj->iface_nums; i++) { iface = dvobj->padapters[i]; @@ -631,6 +308,8 @@ void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op) continue; mlmeext = &iface->mlmeextpriv; + if (ifbmp_excl & BIT(i)) + continue; if (ifbmp_mod & BIT(i)) { if (!if_op) continue; @@ -648,8 +327,21 @@ void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op) u_bw = bw; u_offset = offset; } else { +#ifdef CONFIG_MCC_MODE + if (MCC_EN(iface)) { + /* driver doesn't set channel setting reg under MCC */ + if (rtw_hal_check_mcc_status(iface, MCC_STATUS_DOING_MCC)) + need_sync_bchbw = _FALSE; + } + + if (need_sync_bchbw) { + rtw_warn_on(!rtw_is_chbw_grouped(u_ch, u_bw, u_offset, ch, bw, offset)); + rtw_sync_chbw(&ch, &bw, &offset, &u_ch, &u_bw, &u_offset); + } +#else rtw_warn_on(!rtw_is_chbw_grouped(u_ch, u_bw, u_offset, ch, bw, offset)); rtw_sync_chbw(&ch, &bw, &offset, &u_ch, &u_bw, &u_offset); +#endif } } @@ -672,20 +364,25 @@ void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op) if (0) RTW_INFO("radio: %u,%u,%u %d notify:%d\n", u_ch, u_bw, u_offset, op_txpwr_max, notify); - for (i = 0; i < dvobj->iface_nums; i++) { - iface = dvobj->padapters[i]; - if (!iface) - continue; - mlmeext = &iface->mlmeextpriv; - if (ifbmp_mod & BIT(i)) { - if (!if_op) + if (0) { + for (i = 0; i < dvobj->iface_nums; i++) { + iface = dvobj->padapters[i]; + if (!iface) continue; - } else if (!MLME_IS_ASOC(iface)) - continue; - if (0) + mlmeext = &iface->mlmeextpriv; + + if (ifbmp_excl & BIT(i)) + continue; + if (ifbmp_mod & BIT(i)) { + if (!if_op) + continue; + } else if (!MLME_IS_ASOC(iface)|| MLME_IS_OPCH_SW(iface)) + continue; + RTW_INFO(ADPT_FMT": %u,%u,%u\n", ADPT_ARG(iface) , mlmeext->cur_channel, mlmeext->cur_bwmode, mlmeext->cur_ch_offset); + } } if (notify) @@ -701,867 +398,6 @@ void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op) #endif } -/* domain status specific beacon hint rules */ -#ifndef RTW_CHPLAN_BEACON_HINT_SPECIFIC_COUNTRY -#define RTW_CHPLAN_BEACON_HINT_SPECIFIC_COUNTRY 0 -#endif - -bool rtw_rfctl_reg_allow_beacon_hint(struct rf_ctl_t *rfctl) -{ - return RTW_CHPLAN_BEACON_HINT_SPECIFIC_COUNTRY || RFCTL_REG_WORLDWIDE(rfctl) || RFCTL_REG_ALPHA2_UNSPEC(rfctl); -} - -inline u8 rtw_rfctl_get_dfs_domain(struct rf_ctl_t *rfctl) -{ -#ifdef CONFIG_DFS_MASTER - return rfctl->dfs_region_domain; -#else - return RTW_DFS_REGD_NONE; -#endif -} - -inline u8 rtw_rfctl_dfs_domain_unknown(struct rf_ctl_t *rfctl) -{ -#ifdef CONFIG_DFS_MASTER - return rtw_rfctl_get_dfs_domain(rfctl) == RTW_DFS_REGD_NONE; -#else - return 1; -#endif -} - -#ifdef CONFIG_DFS_MASTER -/* -* called in rtw_dfs_rd_enable() -* assume the request channel coverage is DFS range -* base on the current status and the request channel coverage to check if need to reset complete CAC time -*/ -bool rtw_is_cac_reset_needed(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset) -{ - bool needed = _FALSE; - u32 cur_hi, cur_lo, hi, lo; - - if (rfctl->radar_detected == 1) { - needed = _TRUE; - goto exit; - } - - if (rfctl->radar_detect_ch == 0) { - needed = _TRUE; - goto exit; - } - - if (rtw_chbw_to_freq_range(ch, bw, offset, &hi, &lo) == _FALSE) { - RTW_ERR("request detection range ch:%u, bw:%u, offset:%u\n", ch, bw, offset); - rtw_warn_on(1); - } - - if (rtw_chbw_to_freq_range(rfctl->radar_detect_ch, rfctl->radar_detect_bw, rfctl->radar_detect_offset, &cur_hi, &cur_lo) == _FALSE) { - RTW_ERR("cur detection range ch:%u, bw:%u, offset:%u\n", rfctl->radar_detect_ch, rfctl->radar_detect_bw, rfctl->radar_detect_offset); - rtw_warn_on(1); - } - - if (hi <= lo || cur_hi <= cur_lo) { - RTW_ERR("hi:%u, lo:%u, cur_hi:%u, cur_lo:%u\n", hi, lo, cur_hi, cur_lo); - rtw_warn_on(1); - } - - if (rtw_is_range_a_in_b(hi, lo, cur_hi, cur_lo)) { - /* request is in current detect range */ - goto exit; - } - - /* check if request channel coverage has new range and the new range is in DFS range */ - if (!rtw_is_range_overlap(hi, lo, cur_hi, cur_lo)) { - /* request has no overlap with current */ - needed = _TRUE; - } else if (rtw_is_range_a_in_b(cur_hi, cur_lo, hi, lo)) { - /* request is supper set of current */ - if ((hi != cur_hi && rtw_chset_is_dfs_range(rfctl->channel_set, hi, cur_hi)) - || (lo != cur_lo && rtw_chset_is_dfs_range(rfctl->channel_set, cur_lo, lo))) - needed = _TRUE; - } else { - /* request is not supper set of current, but has overlap */ - if ((lo < cur_lo && rtw_chset_is_dfs_range(rfctl->channel_set, cur_lo, lo)) - || (hi > cur_hi && rtw_chset_is_dfs_range(rfctl->channel_set, hi, cur_hi))) - needed = _TRUE; - } - -exit: - return needed; -} - -bool _rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset) -{ - bool ret = _FALSE; - u32 hi = 0, lo = 0; - u32 r_hi = 0, r_lo = 0; - int i; - - if (rfctl->radar_detect_by_others) - goto exit; - - if (rfctl->radar_detect_ch == 0) - goto exit; - - if (rtw_chbw_to_freq_range(ch, bw, offset, &hi, &lo) == _FALSE) { - rtw_warn_on(1); - goto exit; - } - - if (rtw_chbw_to_freq_range(rfctl->radar_detect_ch - , rfctl->radar_detect_bw, rfctl->radar_detect_offset - , &r_hi, &r_lo) == _FALSE) { - rtw_warn_on(1); - goto exit; - } - - if (rtw_is_range_overlap(hi, lo, r_hi, r_lo)) - ret = _TRUE; - -exit: - return ret; -} - -bool rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl) -{ - return _rtw_rfctl_overlap_radar_detect_ch(rfctl - , rfctl_to_dvobj(rfctl)->oper_channel - , rfctl_to_dvobj(rfctl)->oper_bwmode - , rfctl_to_dvobj(rfctl)->oper_ch_offset); -} - -bool rtw_rfctl_is_tx_blocked_by_ch_waiting(struct rf_ctl_t *rfctl) -{ - return rtw_rfctl_overlap_radar_detect_ch(rfctl) && IS_CH_WAITING(rfctl); -} - -bool rtw_chset_is_chbw_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset) -{ - bool ret = _FALSE; - u32 hi = 0, lo = 0; - int i; - - if (rtw_chbw_to_freq_range(ch, bw, offset, &hi, &lo) == _FALSE) - goto exit; - - for (i = 0; i < MAX_CHANNEL_NUM && ch_set[i].ChannelNum != 0; i++) { - if (!rtw_ch2freq(ch_set[i].ChannelNum)) { - rtw_warn_on(1); - continue; - } - - if (!CH_IS_NON_OCP(&ch_set[i])) - continue; - - if (lo <= rtw_ch2freq(ch_set[i].ChannelNum) - && rtw_ch2freq(ch_set[i].ChannelNum) <= hi - ) { - ret = _TRUE; - break; - } - } - -exit: - return ret; -} - -bool rtw_chset_is_ch_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch) -{ - return rtw_chset_is_chbw_non_ocp(ch_set, ch, CHANNEL_WIDTH_20, HAL_PRIME_CHNL_OFFSET_DONT_CARE); -} - -u32 rtw_chset_get_ch_non_ocp_ms(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset) -{ - int ms = 0; - systime current_time; - u32 hi = 0, lo = 0; - int i; - - if (rtw_chbw_to_freq_range(ch, bw, offset, &hi, &lo) == _FALSE) - goto exit; - - current_time = rtw_get_current_time(); - - for (i = 0; i < MAX_CHANNEL_NUM && ch_set[i].ChannelNum != 0; i++) { - if (!rtw_ch2freq(ch_set[i].ChannelNum)) { - rtw_warn_on(1); - continue; - } - - if (!CH_IS_NON_OCP(&ch_set[i])) - continue; - - if (lo <= rtw_ch2freq(ch_set[i].ChannelNum) - && rtw_ch2freq(ch_set[i].ChannelNum) <= hi - ) { - if (rtw_systime_to_ms(ch_set[i].non_ocp_end_time - current_time) > ms) - ms = rtw_systime_to_ms(ch_set[i].non_ocp_end_time - current_time); - } - } - -exit: - return ms; -} - -/** - * rtw_chset_update_non_ocp - update non_ocp_end_time according to the given @ch, @bw, @offset into @ch_set - * @ch_set: the given channel set - * @ch: channel number on which radar is detected - * @bw: bandwidth on which radar is detected - * @offset: bandwidth offset on which radar is detected - * @ms: ms to add from now to update non_ocp_end_time, ms < 0 means use NON_OCP_TIME_MS - */ -static bool _rtw_chset_update_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset, int ms) -{ - u32 hi = 0, lo = 0; - int i; - bool updated = 0; - - if (rtw_chbw_to_freq_range(ch, bw, offset, &hi, &lo) == _FALSE) - goto exit; - - for (i = 0; i < MAX_CHANNEL_NUM && ch_set[i].ChannelNum != 0; i++) { - if (!rtw_ch2freq(ch_set[i].ChannelNum)) { - rtw_warn_on(1); - continue; - } - - if (lo <= rtw_ch2freq(ch_set[i].ChannelNum) - && rtw_ch2freq(ch_set[i].ChannelNum) <= hi - ) { - if (ms >= 0) - ch_set[i].non_ocp_end_time = rtw_get_current_time() + rtw_ms_to_systime(ms); - else - ch_set[i].non_ocp_end_time = rtw_get_current_time() + rtw_ms_to_systime(NON_OCP_TIME_MS); - ch_set[i].flags |= RTW_CHF_NON_OCP; - updated = 1; - } - } - -exit: - return updated; -} - -inline bool rtw_chset_update_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset) -{ - return _rtw_chset_update_non_ocp(ch_set, ch, bw, offset, -1); -} - -inline bool rtw_chset_update_non_ocp_ms(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset, int ms) -{ - return _rtw_chset_update_non_ocp(ch_set, ch, bw, offset, ms); -} - -static bool rtw_chset_chk_non_ocp_finish_for_chbw(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset) -{ - RT_CHANNEL_INFO *ch_set = rfctl->channel_set; - u8 cch; - u8 *op_chs; - u8 op_ch_num; - int i; - int ch_idx; - bool ret = 0; - - cch = rtw_get_center_ch(ch, bw, offset); - - if (!rtw_get_op_chs_by_cch_bw(cch, bw, &op_chs, &op_ch_num)) - goto exit; - - for (i = 0; i < op_ch_num; i++) { - if (0) - RTW_INFO("%u,%u,%u - cch:%u, bw:%u, op_ch:%u\n", ch, bw, offset, cch, bw, *(op_chs + i)); - ch_idx = rtw_chset_search_ch(ch_set, *(op_chs + i)); - if (ch_idx == -1) - break; - if (!(ch_set[ch_idx].flags & RTW_CHF_NON_OCP) || CH_IS_NON_OCP(&ch_set[ch_idx])) - break; - } - - if (op_ch_num != 0 && i == op_ch_num) { - ret = 1; - /* clear RTTW_CHF_NON_OCP flag */ - for (i = 0; i < op_ch_num; i++) { - ch_idx = rtw_chset_search_ch(ch_set, *(op_chs + i)); - ch_set[ch_idx].flags &= ~RTW_CHF_NON_OCP; - } - rtw_nlrtw_nop_finish_event(dvobj_get_primary_adapter(rfctl_to_dvobj(rfctl)), cch, bw); - } - -exit: - return ret; -} - -/* called by watchdog to clear RTW_CHF_NON_OCP and generate NON_OCP finish event */ -void rtw_chset_chk_non_ocp_finish(struct rf_ctl_t *rfctl) -{ - u8 ch, bw, offset; - int i; - - bw = CHANNEL_WIDTH_160; - while (1) { - for (i = 0; i < rfctl->max_chan_nums; i++) { - ch = rfctl->channel_set[i].ChannelNum; - if (!(rfctl->channel_set[i].flags & RTW_CHF_NON_OCP)) - continue; - if (!rtw_get_offset_by_chbw(ch, bw, &offset)) - continue; - - rtw_chset_chk_non_ocp_finish_for_chbw(rfctl, ch, bw, offset); - } - if (bw-- == CHANNEL_WIDTH_20) - break; - } -} - -u32 rtw_get_ch_waiting_ms(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, u32 *r_non_ocp_ms, u32 *r_cac_ms) -{ - struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); - u32 non_ocp_ms; - u32 cac_ms; - u8 in_rd_range = 0; /* if in current radar detection range*/ - - if (rtw_chset_is_chbw_non_ocp(rfctl->channel_set, ch, bw, offset)) - non_ocp_ms = rtw_chset_get_ch_non_ocp_ms(rfctl->channel_set, ch, bw, offset); - else - non_ocp_ms = 0; - - if (rfctl->radar_detect_enabled) { - u32 cur_hi, cur_lo, hi, lo; - - if (rtw_chbw_to_freq_range(ch, bw, offset, &hi, &lo) == _FALSE) { - RTW_ERR("input range ch:%u, bw:%u, offset:%u\n", ch, bw, offset); - rtw_warn_on(1); - } - - if (rtw_chbw_to_freq_range(rfctl->radar_detect_ch, rfctl->radar_detect_bw, rfctl->radar_detect_offset, &cur_hi, &cur_lo) == _FALSE) { - RTW_ERR("cur detection range ch:%u, bw:%u, offset:%u\n", rfctl->radar_detect_ch, rfctl->radar_detect_bw, rfctl->radar_detect_offset); - rtw_warn_on(1); - } - - if (rtw_is_range_a_in_b(hi, lo, cur_hi, cur_lo)) - in_rd_range = 1; - } - - if (!rtw_chset_is_dfs_chbw(rfctl->channel_set, ch, bw, offset)) - cac_ms = 0; - else if (in_rd_range && !non_ocp_ms) { - if (IS_CH_WAITING(rfctl)) - cac_ms = rtw_systime_to_ms(rfctl->cac_end_time - rtw_get_current_time()); - else - cac_ms = 0; - } else if (rtw_is_long_cac_ch(ch, bw, offset, rtw_rfctl_get_dfs_domain(rfctl))) - cac_ms = CAC_TIME_CE_MS; - else - cac_ms = CAC_TIME_MS; - - if (r_non_ocp_ms) - *r_non_ocp_ms = non_ocp_ms; - if (r_cac_ms) - *r_cac_ms = cac_ms; - - return non_ocp_ms + cac_ms; -} - -void rtw_reset_cac(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset) -{ - u32 non_ocp_ms; - u32 cac_ms; - - rtw_get_ch_waiting_ms(rfctl - , ch - , bw - , offset - , &non_ocp_ms - , &cac_ms - ); - - rfctl->cac_start_time = rtw_get_current_time() + rtw_ms_to_systime(non_ocp_ms); - rfctl->cac_end_time = rfctl->cac_start_time + rtw_ms_to_systime(cac_ms); - - /* skip special value */ - if (rfctl->cac_start_time == RTW_CAC_STOPPED) { - rfctl->cac_start_time++; - rfctl->cac_end_time++; - } - if (rfctl->cac_end_time == RTW_CAC_STOPPED) - rfctl->cac_end_time++; -} - -u32 rtw_force_stop_cac(struct rf_ctl_t *rfctl, u32 timeout_ms) -{ - struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); - systime start; - u32 pass_ms; - - start = rtw_get_current_time(); - - rfctl->cac_force_stop = 1; - - while (rtw_get_passing_time_ms(start) <= timeout_ms - && IS_UNDER_CAC(rfctl) - ) { - if (dev_is_surprise_removed(dvobj) || dev_is_drv_stopped(dvobj)) - break; - rtw_msleep_os(20); - } - - if (IS_UNDER_CAC(rfctl)) { - if (!dev_is_surprise_removed(dvobj) && !dev_is_drv_stopped(dvobj)) - RTW_INFO("%s waiting for cac stop timeout!\n", __func__); - } - - rfctl->cac_force_stop = 0; - - pass_ms = rtw_get_passing_time_ms(start); - - return pass_ms; -} -#endif /* CONFIG_DFS_MASTER */ - -/* choose channel with shortest waiting (non ocp + cac) time */ -bool rtw_choose_shortest_waiting_ch(struct rf_ctl_t *rfctl, u8 sel_ch, u8 max_bw - , u8 *dec_ch, u8 *dec_bw, u8 *dec_offset - , u8 e_flags, u8 d_flags, u8 cur_ch, bool by_int_info, u8 mesh_only) -{ -#ifndef DBG_CHOOSE_SHORTEST_WAITING_CH -#define DBG_CHOOSE_SHORTEST_WAITING_CH 0 -#endif - struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); -#ifdef CONFIG_RTW_ACS - HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); -#endif - struct registry_priv *regsty = dvobj_to_regsty(dvobj); - u8 ch, bw, offset; - u8 ch_c = 0, bw_c = 0, offset_c = 0; - int i; - u32 min_waiting_ms = 0; - u16 int_factor_c = 0; - - if (!dec_ch || !dec_bw || !dec_offset) { - rtw_warn_on(1); - return _FALSE; - } - - RTW_INFO("%s: sel_ch:%u max_bw:%u e_flags:0x%02x d_flags:0x%02x cur_ch:%u within_sb:%d%s%s\n" - , __func__, sel_ch, max_bw, e_flags, d_flags, cur_ch, rfctl->ch_sel_within_same_band - , by_int_info ? " int" : "", mesh_only ? " mesh_only" : ""); - - /* full search and narrow bw judegement first to avoid potetial judegement timing issue */ - for (bw = CHANNEL_WIDTH_20; bw <= max_bw; bw++) { - if (!hal_is_bw_support(dvobj_get_primary_adapter(dvobj), bw)) - continue; - - for (i = 0; i < rfctl->max_chan_nums; i++) { - u32 non_ocp_ms = 0; - u32 cac_ms = 0; - u32 waiting_ms = 0; - u16 int_factor = 0; - bool dfs_ch; - bool non_ocp; - bool long_cac; - - ch = rfctl->channel_set[i].ChannelNum; - if (sel_ch) { - if (ch != sel_ch) - continue; - } else if (rfctl->ch_sel_within_same_band && !rtw_is_same_band(cur_ch, ch)) - continue; - - if (ch > 14) { - if (bw > REGSTY_BW_5G(regsty)) - continue; - } else { - if (bw > REGSTY_BW_2G(regsty)) - continue; - } - - if (mesh_only && ch >= 5 && ch <= 9 && bw > CHANNEL_WIDTH_20) - continue; - - if (!rtw_get_offset_by_chbw(ch, bw, &offset)) - continue; - - if (!rtw_chset_is_chbw_valid(rfctl->channel_set, ch, bw, offset, 0, 0)) - continue; - - if ((e_flags & RTW_CHF_DFS) || (d_flags & RTW_CHF_DFS)) { - dfs_ch = rtw_chset_is_dfs_chbw(rfctl->channel_set, ch, bw, offset); - if (((e_flags & RTW_CHF_DFS) && !dfs_ch) - || ((d_flags & RTW_CHF_DFS) && dfs_ch)) - continue; - } - - if ((e_flags & RTW_CHF_LONG_CAC) || (d_flags & RTW_CHF_LONG_CAC)) { - long_cac = rtw_is_long_cac_ch(ch, bw, offset, rtw_rfctl_get_dfs_domain(rfctl)); - if (((e_flags & RTW_CHF_LONG_CAC) && !long_cac) - || ((d_flags & RTW_CHF_LONG_CAC) && long_cac)) - continue; - } - - if ((e_flags & RTW_CHF_NON_OCP) || (d_flags & RTW_CHF_NON_OCP)) { - non_ocp = rtw_chset_is_chbw_non_ocp(rfctl->channel_set, ch, bw, offset); - if (((e_flags & RTW_CHF_NON_OCP) && !non_ocp) - || ((d_flags & RTW_CHF_NON_OCP) && non_ocp)) - continue; - } - - #ifdef CONFIG_DFS_MASTER - waiting_ms = rtw_get_ch_waiting_ms(rfctl, ch, bw, offset, &non_ocp_ms, &cac_ms); - #endif - - #ifdef CONFIG_RTW_ACS - if (by_int_info) { - /* for now, consider only primary channel */ - int_factor = hal_data->acs.interference_time[i]; - } - #endif - - if (DBG_CHOOSE_SHORTEST_WAITING_CH) - RTW_INFO("%s:%u,%u,%u %u(non_ocp:%u, cac:%u), int:%u\n" - , __func__, ch, bw, offset, waiting_ms, non_ocp_ms, cac_ms, int_factor); - - if (ch_c == 0 - /* first: smaller wating time */ - || min_waiting_ms > waiting_ms - /* then: less interference */ - || (min_waiting_ms == waiting_ms && int_factor_c > int_factor) - /* then: wider bw */ - || (min_waiting_ms == waiting_ms && int_factor_c == int_factor && bw > bw_c) - /* if all condition equal, same channel -> same band prefer */ - || (min_waiting_ms == waiting_ms && int_factor_c == int_factor && bw == bw_c - && ((cur_ch != ch_c && cur_ch == ch) - || (!rtw_is_same_band(cur_ch, ch_c) && rtw_is_same_band(cur_ch, ch))) - ) - ) { - ch_c = ch; - bw_c = bw; - offset_c = offset; - min_waiting_ms = waiting_ms; - int_factor_c = int_factor; - } - } - } - - if (ch_c != 0) { - RTW_INFO("%s: select %u,%u,%u waiting_ms:%u\n" - , __func__, ch_c, bw_c, offset_c, min_waiting_ms); - *dec_ch = ch_c; - *dec_bw = bw_c; - *dec_offset = offset_c; - return _TRUE; - } else { - RTW_INFO("%s: not found\n", __func__); - if (d_flags == 0) - rtw_warn_on(1); - } - - return _FALSE; -} - -#ifdef CONFIG_PROC_DEBUG -#define RTW_CHF_FMT "%s%s%s%s%s%s" - -#define RTW_CHF_ARG_NO_IR(flags) (flags & RTW_CHF_NO_IR) ? " NO_IR" : "" -#define RTW_CHF_ARG_DFS(flags) , (flags & RTW_CHF_DFS) ? " DFS" : "" -#define RTW_CHF_ARG_NO_HT40U(flags) , (flags & RTW_CHF_NO_HT40U) ? " NO_40M+" : "" -#define RTW_CHF_ARG_NO_HT40L(flags) , (flags & RTW_CHF_NO_HT40L) ? " NO_40M-" : "" -#define RTW_CHF_ARG_NO_80MHZ(flags) , (flags & RTW_CHF_NO_80MHZ) ? " NO_80M" : "" -#define RTW_CHF_ARG_NO_160MHZ(flags) , (flags & RTW_CHF_NO_160MHZ) ? " NO_160M" : "" - -#define RTW_CHF_ARG(flags) \ - RTW_CHF_ARG_NO_IR(flags) \ - RTW_CHF_ARG_DFS(flags) \ - RTW_CHF_ARG_NO_HT40U(flags) \ - RTW_CHF_ARG_NO_HT40L(flags) \ - RTW_CHF_ARG_NO_80MHZ(flags) \ - RTW_CHF_ARG_NO_160MHZ(flags) - -static void dump_chset(void *sel, RT_CHANNEL_INFO *ch_set, u8 chset_num) -{ - char buf[8]; - u8 i; - - RTW_PRINT_SEL(sel, "%-3s %-4s %-4s flags\n", "ch", "freq", "nocp"); - - for (i = 0; i < MAX_CHANNEL_NUM && i < chset_num && ch_set[i].ChannelNum != 0; i++) { - #ifdef CONFIG_DFS_MASTER - if ((ch_set[i].flags & RTW_CHF_DFS) && CH_IS_NON_OCP(&ch_set[i])) - snprintf(buf, 8, "%d", rtw_systime_to_ms(ch_set[i].non_ocp_end_time - rtw_get_current_time()) / 1000); - else - #endif - snprintf(buf, 8, "0"); - - RTW_PRINT_SEL(sel, "%3u %4u %4s"RTW_CHF_FMT"\n" - , ch_set[i].ChannelNum, rtw_ch2freq_by_band(ch_set[i].band, ch_set[i].ChannelNum), buf - , RTW_CHF_ARG(ch_set[i].flags) - ); - } - - RTW_PRINT_SEL(sel, "total ch number:%d\n", i); -} - -static void dump_chplan_txpwr_lmts(void *sel, struct get_chplan_resp *chplan) -{ - char buf[TXPWR_NAMES_STR_LEN]; - - RTW_PRINT_SEL(sel, "txpwr_lmt:%s\n", rtw_get_txpwr_lmt_names_str(buf, chplan->txpwr_lmt_name, 0)); -} - -static void dump_chplan_edcca_modes(void *sel, struct get_chplan_resp *chplan) -{ - u8 modes[BAND_MAX]; - char buf[EDCCA_MODES_STR_LEN]; - - modes[BAND_ON_2_4G] = chplan->edcca_mode_2g; -#if CONFIG_IEEE80211_BAND_5GHZ - modes[BAND_ON_5G] = chplan->edcca_mode_5g; -#endif -#if CONFIG_IEEE80211_BAND_6GHZ - modes[BAND_ON_6G] = chplan->edcca_mode_6g; -#endif - - RTW_PRINT_SEL(sel, "edcca_mode:%s\n", rtw_get_edcca_modes_str(buf, modes)); -} - -void dump_cur_country(void *sel, struct rf_ctl_t *rfctl) -{ - struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); - struct get_chplan_resp *chplan; - int i; - - if (rtw_get_chplan_cmd(dvobj_get_primary_adapter(dvobj), RTW_CMDF_WAIT_ACK, &chplan) == _FAIL) - return; - - RTW_PRINT_SEL(sel, "%c%c\n", chplan->alpha2[0], chplan->alpha2[1]); - - rtw_vmfree(chplan, sizeof(struct get_chplan_resp) + sizeof(RT_CHANNEL_INFO) * chplan->chset_num); -} - -void dump_cur_chset(void *sel, struct rf_ctl_t *rfctl) -{ - struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); - struct registry_priv *regsty = dvobj_to_regsty(dvobj); - struct get_chplan_resp *chplan; - int i; - - if (rtw_get_chplan_cmd(dvobj_get_primary_adapter(dvobj), RTW_CMDF_WAIT_ACK, &chplan) == _FAIL) - return; - - RTW_PRINT_SEL(sel, "regd_src:%s(%d)\n", regd_src_str(chplan->regd_src), chplan->regd_src); - RTW_PRINT_SEL(sel, "regd_inr:%s\n", regd_inr_str(chplan->regd_inr)); - - RTW_PRINT_SEL(sel, "alpha2:%c%c\n", chplan->alpha2[0], chplan->alpha2[1]); - -#ifdef CONFIG_80211AX_HE - RTW_PRINT_SEL(sel, "ax:%d\n", (chplan->proto_en & CHPLAN_PROTO_EN_AX) ? 1 : 0); -#endif -#ifdef CONFIG_80211AC_VHT - RTW_PRINT_SEL(sel, "ac:%d\n", (chplan->proto_en & CHPLAN_PROTO_EN_AC) ? 1 : 0); -#endif - - if (chplan->channel_plan == RTW_CHPLAN_UNSPECIFIED) - RTW_PRINT_SEL(sel, "chplan:NA\n"); - else - RTW_PRINT_SEL(sel, "chplan:0x%02X\n", chplan->channel_plan); - -#if CONFIG_IEEE80211_BAND_6GHZ - if (chplan->chplan_6g == RTW_CHPLAN_6G_UNSPECIFIED) - RTW_PRINT_SEL(sel, "chplan_6g:NA\n"); - else - RTW_PRINT_SEL(sel, "chplan_6g:0x%02X\n", chplan->chplan_6g); -#endif - -#if CONFIG_TXPWR_LIMIT - dump_chplan_txpwr_lmts(sel, chplan); -#endif - - dump_chplan_edcca_modes(sel, chplan); - -#ifdef CONFIG_DFS_MASTER - RTW_PRINT_SEL(sel, "dfs_domain:%s(%u)\n", rtw_dfs_regd_str(chplan->dfs_domain), chplan->dfs_domain); -#endif - - for (i = 0; i < MAX_CHANNEL_NUM_2G_5G; i++) - if (regsty->excl_chs[i] != 0) - break; - - if (i < MAX_CHANNEL_NUM_2G_5G) { - RTW_PRINT_SEL(sel, "excl_chs:"); - for (i = 0; i < MAX_CHANNEL_NUM_2G_5G; i++) { - if (regsty->excl_chs[i] == 0) - break; - _RTW_PRINT_SEL(sel, "%u ", regsty->excl_chs[i]); - } - _RTW_PRINT_SEL(sel, "\n"); - } - -#if CONFIG_IEEE80211_BAND_6GHZ - for (i = 0; i < MAX_CHANNEL_NUM_6G; i++) - if (regsty->excl_chs_6g[i] != 0) - break; - - if (i < MAX_CHANNEL_NUM_6G) { - RTW_PRINT_SEL(sel, "excl_chs_6g:"); - for (i = 0; i < MAX_CHANNEL_NUM_6G; i++) { - if (regsty->excl_chs_6g[i] == 0) - break; - _RTW_PRINT_SEL(sel, "%u ", regsty->excl_chs_6g[i]); - } - _RTW_PRINT_SEL(sel, "\n"); - } -#endif - - dump_chset(sel, chplan->chset, chplan->chset_num); - - rtw_vmfree(chplan, sizeof(struct get_chplan_resp) + sizeof(RT_CHANNEL_INFO) * chplan->chset_num); -} -#endif /* CONFIG_PROC_DEBUG */ - -/* - * Search the @param ch in given @param ch_set - * @ch_set: the given channel set - * @ch: the given channel number - * - * return the index of channel_num in channel_set, -1 if not found - */ -int rtw_chset_search_ch(RT_CHANNEL_INFO *ch_set, const u32 ch) -{ - int i; - - if (ch == 0) - return -1; - - for (i = 0; i < MAX_CHANNEL_NUM && ch_set[i].ChannelNum != 0; i++) { - if (ch == ch_set[i].ChannelNum) - return i; - } - - return -1; -} - -/* - * Search the @param ch of @param band in given @param ch_set - * @ch_set: the given channel set - * @band: the given band - * @ch: the given channel number - * - * return the index of channel_num in channel_set, -1 if not found - */ -int rtw_chset_search_ch_by_band(RT_CHANNEL_INFO *ch_set, BAND_TYPE band, const u32 ch) -{ - int i; - - if (ch == 0) - return -1; - - for (i = 0; i < MAX_CHANNEL_NUM && ch_set[i].ChannelNum != 0; i++) { - if (band == ch_set[i].band && ch == ch_set[i].ChannelNum) - return i; - } - - return -1; -} - -/* - * Check if the @param ch, bw, offset is valid for the given @param ch_set - * @ch_set: the given channel set - * @ch: the given channel number - * @bw: the given bandwidth - * @offset: the given channel offset - * - * return valid (1) or not (0) - */ -u8 rtw_chset_is_chbw_valid(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset - , bool allow_primary_passive, bool allow_passive) -{ - u8 cch; - u8 *op_chs; - u8 op_ch_num; - u8 valid = 0; - int i; - int ch_idx; - - cch = rtw_get_center_ch(ch, bw, offset); - - if (!rtw_get_op_chs_by_cch_bw(cch, bw, &op_chs, &op_ch_num)) - goto exit; - - for (i = 0; i < op_ch_num; i++) { - if (0) - RTW_INFO("%u,%u,%u - cch:%u, bw:%u, op_ch:%u\n", ch, bw, offset, cch, bw, *(op_chs + i)); - ch_idx = rtw_chset_search_ch(ch_set, *(op_chs + i)); - if (ch_idx == -1) - break; - if (ch_set[ch_idx].flags & RTW_CHF_NO_IR) { - if (!allow_passive - || (!allow_primary_passive && ch_set[ch_idx].ChannelNum == ch)) - break; - } - if (bw >= CHANNEL_WIDTH_40) { - if ((ch_set[ch_idx].flags & RTW_CHF_NO_HT40U) && i % 2 == 0) - break; - if ((ch_set[ch_idx].flags & RTW_CHF_NO_HT40L) && i % 2 == 1) - break; - } - if (bw >= CHANNEL_WIDTH_80 && (ch_set[ch_idx].flags & RTW_CHF_NO_80MHZ)) - break; - if (bw >= CHANNEL_WIDTH_160 && (ch_set[ch_idx].flags & RTW_CHF_NO_160MHZ)) - break; - } - - if (op_ch_num != 0 && i == op_ch_num) - valid = 1; - -exit: - return valid; -} - -/** - * rtw_chset_sync_chbw - obey g_ch, adjust g_bw, g_offset, bw, offset to fit in channel plan - * @ch_set: channel plan to check - * @req_ch: pointer of the request ch, may be modified further - * @req_bw: pointer of the request bw, may be modified further - * @req_offset: pointer of the request offset, may be modified further - * @g_ch: pointer of the ongoing group ch - * @g_bw: pointer of the ongoing group bw, may be modified further - * @g_offset: pointer of the ongoing group offset, may be modified further - * @allow_primary_passive: if allow passive primary ch when deciding chbw - * @allow_passive: if allow passive ch (not primary) when deciding chbw - */ -void rtw_chset_sync_chbw(RT_CHANNEL_INFO *ch_set, u8 *req_ch, u8 *req_bw, u8 *req_offset - , u8 *g_ch, u8 *g_bw, u8 *g_offset, bool allow_primary_passive, bool allow_passive) -{ - u8 r_ch, r_bw, r_offset; - u8 u_ch, u_bw, u_offset; - u8 cur_bw = *req_bw; - - while (1) { - r_ch = *req_ch; - r_bw = cur_bw; - r_offset = *req_offset; - u_ch = *g_ch; - u_bw = *g_bw; - u_offset = *g_offset; - - rtw_sync_chbw(&r_ch, &r_bw, &r_offset, &u_ch, &u_bw, &u_offset); - - if (rtw_chset_is_chbw_valid(ch_set, r_ch, r_bw, r_offset, allow_primary_passive, allow_passive)) - break; - if (cur_bw == CHANNEL_WIDTH_20) { - rtw_warn_on(1); - break; - } - cur_bw--; - }; - - *req_ch = r_ch; - *req_bw = r_bw; - *req_offset = r_offset; - *g_ch = u_ch; - *g_bw = u_bw; - *g_offset = u_offset; -} - /* * Check the @param ch is fit with setband setting of @param adapter * @adapter: the given adapter @@ -1716,7 +552,7 @@ static void init_mlme_ext_priv_value(_adapter *padapter) pmlmeext->sitesurvey_res.rx_ampdu_size = RX_AMPDU_SIZE_INVALID; #ifdef CONFIG_SCAN_BACKOP #ifdef CONFIG_LAYER2_ROAMING - if (padapter->mlmepriv.roam_flags & BIT2) + if (padapter->mlmepriv.roam_flags & RTW_ROAM_ACTIVE) mlmeext_assign_scan_backop_flags_sta(pmlmeext, SS_BACKOP_EN | SS_BACKOP_PS_ANNC | SS_BACKOP_TX_RESUME); else #endif @@ -1777,7 +613,7 @@ void init_mlme_ext_timer(_adapter *padapter) rtw_init_timer(&pmlmeext->survey_timer, padapter, survey_timer_hdl, padapter); rtw_init_timer(&pmlmeext->link_timer, padapter, link_timer_hdl, padapter); -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) rtw_init_timer(&pmlmeext->ft_link_timer, padapter, rtw_ft_link_timer_hdl, padapter); rtw_init_timer(&pmlmeext->ft_roam_timer, padapter, rtw_ft_roam_timer_hdl, padapter); #endif @@ -1869,26 +705,6 @@ void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext) } } -#ifdef CONFIG_PATCH_JOIN_WRONG_CHANNEL -static u8 cmp_pkt_chnl_diff(_adapter *padapter, u8 *pframe, uint packet_len) -{ - /* if the channel is same, return 0. else return channel differential */ - uint len; - u8 channel; - u8 *p; - - p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + _BEACON_IE_OFFSET_, _DSSET_IE_, &len, packet_len - _BEACON_IE_OFFSET_); - if (p) { - channel = *(p + 2); - if (padapter->mlmeextpriv.cur_channel >= channel) - return padapter->mlmeextpriv.cur_channel - channel; - else - return channel - padapter->mlmeextpriv.cur_channel; - } else - return 0; -} -#endif /* CONFIG_PATCH_JOIN_WRONG_CHANNEL */ - static void _mgt_dispatcher(_adapter *padapter, struct mlme_handler *ptable, union recv_frame *precv_frame) { u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; @@ -2018,7 +834,6 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame) else ptable->func = &OnAuthClient; fallthrough; - /* fall through */ case WIFI_ASSOCREQ: case WIFI_REASSOCREQ: _mgt_dispatcher(padapter, ptable, precv_frame); @@ -2252,17 +1067,12 @@ _continue: return _SUCCESS; } - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); if (rtw_is_list_empty(&psta->asoc_list)) { psta->expire_to = pstapriv->expire_to; - rtw_list_insert_tail(&psta->asoc_list, &pstapriv->asoc_list); - pstapriv->asoc_list_cnt++; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt++; - #endif + rtw_stapriv_asoc_list_add(pstapriv, psta); } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); /* generate pairing ID */ mac_addr = adapter_mac_addr(padapter); @@ -2378,7 +1188,10 @@ unsigned int OnProbeRsp(_adapter *padapter, union recv_frame *precv_frame) #ifdef CONFIG_P2P struct wifidirect_info *pwdinfo = &padapter->wdinfo; #endif + uint len = precv_frame->u.hdr.len; + if (validate_bcn_and_probe_rsp_len(pframe, len) == _FALSE) + return _SUCCESS; #ifdef CONFIG_P2P if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ)) { @@ -2471,22 +1284,26 @@ static void rtw_check_legacy_ap(_adapter *padapter, u8 *pframe, u32 len) if (pmlmeext->bstart_bss == _TRUE) { int left; unsigned char *pos; - struct rtw_ieee802_11_elems elems; + struct rtw_ieee802_11_elems *elems = NULL; #ifdef CONFIG_80211N_HT - u16 cur_op_mode; + /*u16 cur_op_mode;*/ #endif + elems = (struct rtw_ieee802_11_elems *)rtw_zmalloc(sizeof(struct rtw_ieee802_11_elems)); + if (!elems) + return; /* checking IEs */ left = len - sizeof(struct rtw_ieee80211_hdr_3addr) - _BEACON_IE_OFFSET_; pos = pframe + sizeof(struct rtw_ieee80211_hdr_3addr) + _BEACON_IE_OFFSET_; - if (rtw_ieee802_11_parse_elems(pos, left, &elems, 1) == ParseFailed) { + if (rtw_ieee802_11_parse_elems(pos, left, elems, 1) == ParseFailed) { RTW_INFO("%s: parse fail for "MAC_FMT"\n", __func__, MAC_ARG(GetAddr3Ptr(pframe))); + rtw_mfree(elems, sizeof(struct rtw_ieee802_11_elems)); return; } #ifdef CONFIG_80211N_HT - cur_op_mode = pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_OP_MODE_MASK; + /*cur_op_mode = pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_OP_MODE_MASK;*/ #endif /* for legacy ap */ - if (elems.ht_capabilities == NULL && elems.ht_capabilities_len == 0) { + if (elems->ht_capabilities == NULL && elems->ht_capabilities_len == 0) { if (0) RTW_INFO("%s: "MAC_FMT" is legacy ap\n", __func__, MAC_ARG(GetAddr3Ptr(pframe))); @@ -2494,10 +1311,81 @@ static void rtw_check_legacy_ap(_adapter *padapter, u8 *pframe, u32 len) ATOMIC_SET(&pmlmepriv->olbc, _TRUE); ATOMIC_SET(&pmlmepriv->olbc_ht, _TRUE); } + rtw_mfree(elems, sizeof(struct rtw_ieee802_11_elems)); } } #endif /* CONFIG_AP_MODE */ +static u8 auth_null_update_cur_network(_adapter *adapter, union recv_frame *rframe) +{ + WLAN_BSSID_EX *bss; + u8 ret = _FAIL; + + bss = rtw_malloc(sizeof(*bss)); + if (!bss) + goto exit; + + if (collect_bss_info(adapter, rframe, bss) == _SUCCESS) { + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + u8 *whdr = rframe->u.hdr.rx_data; + uint flen = rframe->u.hdr.len; + struct beacon_keys recv_bcn_keys; + struct wlan_network *scanned; + + /* get bcn key from received beacon */ + if (rtw_get_bcn_keys(adapter, whdr, flen, &recv_bcn_keys) != _TRUE) { + RTW_WARN(FUNC_ADPT_FMT" get beacon keys failed\n", FUNC_ADPT_ARG(adapter)); + goto free_bss; + } + if (is_hidden_ssid(recv_bcn_keys.ssid, recv_bcn_keys.ssid_len)) { + _rtw_memcpy(recv_bcn_keys.ssid, pmlmeinfo->network.Ssid.Ssid, IW_ESSID_MAX_SIZE); + recv_bcn_keys.ssid_len = pmlmeinfo->network.Ssid.SsidLength; + } + + scanned = rtw_find_network(&pmlmepriv->scanned_queue, get_my_bssid(&pmlmeinfo->network)); + if (!scanned) { + RTW_WARN(FUNC_ADPT_FMT" can't get scanned network\n", FUNC_ADPT_ARG(adapter)); + ret = RTW_ABORT_LINKING; + goto free_bss; + } + if (!scanned->bcn_keys_valid) { + RTW_WARN(FUNC_ADPT_FMT" scanned beacon keys not valid\n", FUNC_ADPT_ARG(adapter)); + ret = RTW_ABORT_LINKING; + goto free_bss; + } + if (!rtw_bcn_key_compare(&scanned->bcn_keys, &recv_bcn_keys)) { + RTW_WARN(FUNC_ADPT_FMT" recv beacon keys conflict with scanned\n", FUNC_ADPT_ARG(adapter)); + RTW_INFO(FUNC_ADPT_FMT" scanned beacon key:\n", FUNC_ADPT_ARG(adapter)); + rtw_dump_bcn_keys(RTW_DBGDUMP, &scanned->bcn_keys); + RTW_INFO(FUNC_ADPT_FMT" recv beacon key:\n", FUNC_ADPT_ARG(adapter)); + rtw_dump_bcn_keys(RTW_DBGDUMP, &recv_bcn_keys); + ret = RTW_ABORT_LINKING; + goto free_bss; + } + + /* update bcn keys */ + RTW_INFO(FUNC_ADPT_FMT" beacon keys ready\n", FUNC_ADPT_ARG(adapter)); + _rtw_memcpy(&pmlmepriv->cur_beacon_keys, &recv_bcn_keys, sizeof(recv_bcn_keys)); + + /* update cur_network */ + update_network(&pmlmepriv->cur_network.network, bss, adapter, _TRUE); + + #ifdef CONFIG_BCN_CNT_CONFIRM_HDL + pmlmepriv->new_beacon_cnts = 0; + #endif + + ret = _SUCCESS; + } + +free_bss: + rtw_mfree(bss, sizeof(*bss)); + +exit: + return ret; +} + unsigned int OnBeacon(_adapter *padapter, union recv_frame *precv_frame) { struct sta_info *psta; @@ -2507,7 +1395,6 @@ unsigned int OnBeacon(_adapter *padapter, union recv_frame *precv_frame) struct sta_priv *pstapriv = &padapter->stapriv; u8 *pframe = precv_frame->u.hdr.rx_data; uint len = precv_frame->u.hdr.len; - WLAN_BSSID_EX *pbss; int ret = _SUCCESS; #ifdef CONFIG_TDLS struct sta_info *ptdls_sta; @@ -2520,7 +1407,7 @@ unsigned int OnBeacon(_adapter *padapter, union recv_frame *precv_frame) _irqL irqL; #endif - if (validate_beacon_len(pframe, len) == _FALSE) + if (validate_bcn_and_probe_rsp_len(pframe, len) == _FALSE) return _SUCCESS; if (mlmeext_chk_scan_state(pmlmeext, SCAN_PROCESS) @@ -2564,41 +1451,30 @@ unsigned int OnBeacon(_adapter *padapter, union recv_frame *precv_frame) if ((pmlmeinfo->state & WIFI_FW_AUTH_NULL) && (rtw_sta_linking_test_wait_done() || pmlmeext->join_abort) ) { - if (rtw_sta_linking_test_force_fail() || pmlmeext->join_abort) { - set_link_timer(pmlmeext, 1); - return _SUCCESS; - } #ifdef CONFIG_LAYER2_ROAMING _enter_critical_bh(&pmlmepriv->clnt_auth_lock, &irqL); #endif - /* we should update current network before auth, or some IE is wrong */ - pbss = (WLAN_BSSID_EX *)rtw_malloc(sizeof(WLAN_BSSID_EX)); - if (pbss) { - if (collect_bss_info(padapter, precv_frame, pbss) == _SUCCESS) { - struct beacon_keys recv_beacon; - - update_network(&(pmlmepriv->cur_network.network), pbss, padapter, _TRUE); - - /* update bcn keys */ - if (rtw_get_bcn_keys(padapter, pframe, len, &recv_beacon) == _TRUE) { - RTW_INFO("%s: beacon keys ready\n", __func__); - _rtw_memcpy(&pmlmepriv->cur_beacon_keys, - &recv_beacon, sizeof(recv_beacon)); - if (is_hidden_ssid(recv_beacon.ssid, recv_beacon.ssid_len)) { - _rtw_memcpy(pmlmepriv->cur_beacon_keys.ssid, pmlmeinfo->network.Ssid.Ssid, IW_ESSID_MAX_SIZE); - pmlmepriv->cur_beacon_keys.ssid_len = pmlmeinfo->network.Ssid.SsidLength; - } - } else { - RTW_ERR("%s: get beacon keys failed\n", __func__); - _rtw_memset(&pmlmepriv->cur_beacon_keys, 0, sizeof(recv_beacon)); - } - #ifdef CONFIG_BCN_CNT_CONFIRM_HDL - pmlmepriv->new_beacon_cnts = 0; - #endif - } - rtw_mfree((u8 *)pbss, sizeof(WLAN_BSSID_EX)); + if (rtw_sta_linking_test_force_fail() || pmlmeext->join_abort) { + ret = RTW_ABORT_LINKING; + goto end_auth_null; } +#if defined(CONFIG_P2P) && defined(CONFIG_CONCURRENT_MODE) + if (padapter->registrypriv.wifi_spec) { + if (process_p2p_cross_connect_ie(padapter, (pframe + WLAN_HDR_A3_LEN), (len - WLAN_HDR_A3_LEN)) == _FALSE) { + if (rtw_mi_buddy_check_mlmeinfo_state(padapter, WIFI_FW_AP_STATE)) { + RTW_PRINT("no issue auth, P2P cross-connect does not permit\n "); + goto end_auth_null; + } + } + } +#endif /* CONFIG_P2P CONFIG_P2P and CONFIG_CONCURRENT_MODE */ + + /* we should update current network before auth, or some IE is wrong */ + ret = auth_null_update_cur_network(padapter, precv_frame); + if (ret != _SUCCESS) + goto end_auth_null; + /* check the vendor of the assoc AP */ pmlmeinfo->assoc_AP_vendor = check_assoc_AP(pframe + sizeof(struct rtw_ieee80211_hdr_3addr), len - sizeof(struct rtw_ieee80211_hdr_3addr)); @@ -2614,40 +1490,24 @@ unsigned int OnBeacon(_adapter *padapter, union recv_frame *precv_frame) /* process_p2p_ps_ie(padapter, (pframe + WLAN_HDR_A3_LEN), (len - WLAN_HDR_A3_LEN)); */ #endif /* CONFIG_P2P_PS */ -#if defined(CONFIG_P2P) && defined(CONFIG_CONCURRENT_MODE) - if (padapter->registrypriv.wifi_spec) { - if (process_p2p_cross_connect_ie(padapter, (pframe + WLAN_HDR_A3_LEN), (len - WLAN_HDR_A3_LEN)) == _FALSE) { - if (rtw_mi_buddy_check_mlmeinfo_state(padapter, WIFI_FW_AP_STATE)) { - RTW_PRINT("no issue auth, P2P cross-connect does not permit\n "); - return _SUCCESS; - } - } - } -#endif /* CONFIG_P2P CONFIG_P2P and CONFIG_CONCURRENT_MODE */ /* start auth */ start_clnt_auth(padapter); + +end_auth_null: #ifdef CONFIG_LAYER2_ROAMING _exit_critical_bh(&pmlmepriv->clnt_auth_lock, &irqL); #endif + if (ret == RTW_ABORT_LINKING) + set_link_timer(pmlmeext, 1); + return _SUCCESS; } if (((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) && (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) { psta = rtw_get_stainfo(pstapriv, get_addr2_ptr(pframe)); if (psta != NULL) { -#ifdef CONFIG_PATCH_JOIN_WRONG_CHANNEL - /* Merge from 8712 FW code */ - if (cmp_pkt_chnl_diff(padapter, pframe, len) != 0) { - /* join wrong channel, deauth and reconnect */ - issue_deauth(padapter, (&(pmlmeinfo->network))->MacAddress, WLAN_REASON_DEAUTH_LEAVING); - - report_del_sta_event(padapter, (&(pmlmeinfo->network))->MacAddress, WLAN_REASON_JOIN_WRONG_CHANNEL, _TRUE, _FALSE); - pmlmeinfo->state &= (~WIFI_FW_ASSOC_SUCCESS); - return _SUCCESS; - } -#endif /* CONFIG_PATCH_JOIN_WRONG_CHANNEL */ -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) rtw_ft_update_bcn(padapter, precv_frame); #endif ret = rtw_check_bcn_info(padapter, pframe, len); @@ -2898,8 +1758,12 @@ unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame) (psecuritypriv->dot11PrivacyAlgrthm != _WEP104_)) auth_mode = 0; - if ((algorithm > 0 && auth_mode == 0) || /* rx a shared-key auth but shared not enabled */ - (algorithm == 0 && auth_mode == 1)) { /* rx a open-system auth but shared-key is enabled */ + if (((algorithm > 0 && auth_mode == 0) || /* rx a shared-key auth but shared not enabled */ + (algorithm == 0 && auth_mode == 1)) + #ifdef CONFIG_RTW_80211R_AP + && (algorithm != WLAN_AUTH_FT) + #endif + ) { /* rx a open-system auth but shared-key is enabled */ RTW_INFO("auth rejected due to bad alg [alg=%d, auth_mib=%d] %02X%02X%02X%02X%02X%02X\n", algorithm, auth_mode, sa[0], sa[1], sa[2], sa[3], sa[4], sa[5]); @@ -2933,24 +1797,23 @@ unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame) /* pstat->flags = 0; */ /* pstat->capability = 0; */ } else { + if (pstat->is_freeing) { + RTW_INFO(FUNC_ADPT_FMT" get sta "MAC_FMT" is scheduled to free\n", FUNC_ADPT_ARG(padapter), MAC_ARG(sa)); + return _SUCCESS; + } #ifdef CONFIG_IEEE80211W if ((pstat->bpairwise_key_installed != _TRUE && (pstat->flags & WLAN_STA_MFP)) || !(pstat->flags & WLAN_STA_MFP)) #endif /* CONFIG_IEEE80211W */ { - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); if (rtw_is_list_empty(&pstat->asoc_list) == _FALSE) { - rtw_list_delete(&pstat->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (pstat->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif + rtw_stapriv_asoc_list_del(pstapriv, pstat); if (pstat->expire_to > 0) ;/* TODO: STA re_auth within expire_to */ } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); if (seq == 1) ; /* TODO: STA re_auth and auth timeout */ @@ -2963,6 +1826,12 @@ unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame) || !(pstat->flags & WLAN_STA_MFP)) #endif /* CONFIG_IEEE80211W */ { + _rtw_spinlock_bh(&pstapriv->sta_hash_lock); + if (pstat->is_freeing || rtw_is_list_empty(&pstat->hash_list)) { + _rtw_spinunlock_bh(&pstapriv->sta_hash_lock); + RTW_INFO(FUNC_ADPT_FMT" sta "MAC_FMT" is scheduled to free\n", FUNC_ADPT_ARG(padapter), MAC_ARG(sa)); + return _SUCCESS; + } _enter_critical_bh(&pstapriv->auth_list_lock, &irqL); if (rtw_is_list_empty(&pstat->auth_list)) { @@ -2970,6 +1839,7 @@ unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame) pstapriv->auth_list_cnt++; } _exit_critical_bh(&pstapriv->auth_list_lock, &irqL); + _rtw_spinunlock_bh(&pstapriv->sta_hash_lock); } if (pstat->auth_seq == 0) @@ -2984,6 +1854,13 @@ unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame) rtw_cfg80211_rx_mframe(padapter, precv_frame, NULL); return _SUCCESS; } + #ifdef CONFIG_RTW_80211R_AP + pstat->authalg = algorithm; + if (algorithm == WLAN_AUTH_FT) { + rtw_cfg80211_rx_mframe(padapter, precv_frame, "FTTA"); + return _SUCCESS; + } + #endif } #endif /* CONFIG_IOCTL_CFG80211 */ @@ -3100,7 +1977,8 @@ auth_fail: unsigned int OnAuthClient(_adapter *padapter, union recv_frame *precv_frame) { - unsigned int seq, len, status, algthm, offset; + unsigned int seq, len, status, offset; + /*unsigned int algthm;*/ unsigned char *p; unsigned int go2asoc = 0; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; @@ -3134,7 +2012,7 @@ normal: offset = (GetPrivacy(pframe)) ? 4 : 0; - algthm = le16_to_cpu(*(unsigned short *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset)); + /*algthm = le16_to_cpu(*(unsigned short *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset));*/ seq = le16_to_cpu(*(unsigned short *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset + 2)); status = le16_to_cpu(*(unsigned short *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset + 4)); @@ -3190,7 +2068,7 @@ normal: } if (go2asoc) { -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) if (rtw_ft_update_auth_rsp_ies(padapter, pframe, pkt_len)) return _SUCCESS; #endif @@ -3211,8 +2089,10 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) { #ifdef CONFIG_AP_MODE _irqL irqL; +#if 0/* todo: */ u16 listen_interval; - struct rtw_ieee802_11_elems elems; +#endif + struct rtw_ieee802_11_elems *elems = NULL; struct sta_info *pstat; unsigned char reassoc, *pos; int left; @@ -3230,9 +2110,6 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) u8 *p2pie; u32 p2pielen = 0; #endif /* CONFIG_P2P */ -#ifdef CONFIG_RTW_TOKEN_BASED_XMIT - u8 sta_tbtx_enable = _FALSE; -#endif #ifdef CONFIG_CONCURRENT_MODE if (((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) && @@ -3272,6 +2149,11 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) status = _RSON_CLS2_; goto asoc_class2_error; } + if (pstat->is_freeing) { + RTW_INFO(FUNC_ADPT_FMT" get sta "MAC_FMT" is scheduled to free\n", FUNC_ADPT_ARG(padapter), MAC_ARG(get_addr2_ptr(pframe))); + status = _RSON_AUTH_NO_LONGER_VALID_; + goto asoc_class2_error; + } RTW_INFO("%s from "MAC_FMT"\n", __FUNCTION__, MAC_ARG(get_addr2_ptr(pframe))); @@ -3307,6 +2189,9 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) } #endif + elems = (struct rtw_ieee802_11_elems *)rtw_zmalloc(sizeof(struct rtw_ieee802_11_elems)); + if (!elems) + return _FAIL; if (rtw_ap_linking_test_force_asoc_fail()) { status = rtw_ap_linking_test_force_asoc_fail(); RTW_INFO(FUNC_ADPT_FMT" force asoc fail with status:%u\n" @@ -3317,7 +2202,7 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) /* now parse all ieee802_11 ie to point to elems */ left = pkt_len - (IEEE80211_3ADDR_LEN + ie_offset); pos = pframe + (IEEE80211_3ADDR_LEN + ie_offset); - if (rtw_ieee802_11_parse_elems(pos, left, &elems, 1) == ParseFailed) { + if (rtw_ieee802_11_parse_elems(pos, left, elems, 1) == ParseFailed) { RTW_INFO("STA " MAC_FMT " sent invalid association request\n", MAC_ARG(pstat->cmn.mac_addr)); status = _STATS_FAILURE_; @@ -3326,8 +2211,8 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) rtw_ap_parse_sta_capability(padapter, pstat, pframe + WLAN_HDR_A3_LEN); - listen_interval = RTW_GET_LE16(pframe + WLAN_HDR_A3_LEN + 2); #if 0/* todo: */ + listen_interval = RTW_GET_LE16(pframe + WLAN_HDR_A3_LEN + 2); /* check listen_interval */ if (listen_interval > hapd->conf->max_listen_interval) { hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211, @@ -3343,10 +2228,10 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) /* now we should check all the fields... */ /* checking SSID */ - if (elems.ssid == NULL - || elems.ssid_len == 0 - || elems.ssid_len != cur->Ssid.SsidLength - || _rtw_memcmp(elems.ssid, cur->Ssid.Ssid, cur->Ssid.SsidLength) == _FALSE + if (elems->ssid == NULL + || elems->ssid_len == 0 + || elems->ssid_len != cur->Ssid.SsidLength + || _rtw_memcmp(elems->ssid, cur->Ssid.Ssid, cur->Ssid.SsidLength) == _FALSE ) { status = _STATS_FAILURE_; goto OnAssocReqFail; @@ -3359,7 +2244,7 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) goto OnAssocReqFail; /* check RSN/WPA/WPS */ - status = rtw_ap_parse_sta_security_ie(padapter, pstat, &elems); + status = rtw_ap_parse_sta_security_ie(padapter, pstat, elems); if (status != _STATS_SUCCESSFUL_) goto OnAssocReqFail; @@ -3374,16 +2259,15 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) #endif/*CONFIG_RTS_FULL_BW*/ #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (elems.tbtx_cap && elems.tbtx_cap_len != 0) { - if(rtw_is_tbtx_capabilty(elems.tbtx_cap, elems.tbtx_cap_len)) { - sta_tbtx_enable = _TRUE; - } + if (elems->tbtx_cap && elems->tbtx_cap_len != 0) { + if(rtw_is_tbtx_capabilty(elems->tbtx_cap, elems->tbtx_cap_len)) + pstat->tbtx_enable = _TRUE; } #endif - rtw_ap_parse_sta_ht_ie(padapter, pstat, &elems); - rtw_ap_parse_sta_vht_ie(padapter, pstat, &elems); + rtw_ap_parse_sta_ht_ie(padapter, pstat, elems); + rtw_ap_parse_sta_vht_ie(padapter, pstat, elems); if (((pstat->flags & WLAN_STA_HT) || (pstat->flags & WLAN_STA_VHT)) && ((pstat->wpa2_pairwise_cipher & WPA_CIPHER_TKIP) || @@ -3425,6 +2309,12 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) goto OnAssocReqFail; #endif +#ifdef CONFIG_RTW_MBO + rtw_mbo_process_assoc_req(padapter, + (pframe + WLAN_HDR_A3_LEN + ie_offset), + (pkt_len - WLAN_HDR_A3_LEN - ie_offset)); +#endif + /* TODO: identify_proprietary_vendor_ie(); */ /* Realtek proprietary IE */ /* identify if this is Broadcom sta */ @@ -3432,7 +2322,7 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) /* Customer proprietary IE */ #ifdef CONFIG_RTW_80211K - rtw_ap_parse_sta_rm_en_cap(padapter, pstat, &elems); + rtw_ap_parse_sta_rm_en_cap(padapter, pstat, elems); #endif /* AID assignment */ @@ -3466,19 +2356,20 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) } _exit_critical_bh(&pstapriv->auth_list_lock, &irqL); - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + _rtw_spinlock_bh(&pstapriv->sta_hash_lock); + if (pstat->is_freeing || rtw_is_list_empty(&pstat->hash_list)) { + _rtw_spinunlock_bh(&pstapriv->sta_hash_lock); + RTW_INFO(FUNC_ADPT_FMT" sta "MAC_FMT" is scheduled to free\n", FUNC_ADPT_ARG(padapter), MAC_ARG(get_addr2_ptr(pframe))); + status = _RSON_AUTH_NO_LONGER_VALID_; + goto asoc_class2_error; + } + rtw_stapriv_asoc_list_lock(pstapriv); if (rtw_is_list_empty(&pstat->asoc_list)) { pstat->expire_to = pstapriv->expire_to; - rtw_list_insert_tail(&pstat->asoc_list, &pstapriv->asoc_list); - pstapriv->asoc_list_cnt++; -#ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (sta_tbtx_enable) { - pstat->tbtx_enable = _TRUE; - pstapriv->tbtx_asoc_list_cnt++; - } -#endif + rtw_stapriv_asoc_list_add(pstapriv, pstat); } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); + _rtw_spinunlock_bh(&pstapriv->sta_hash_lock); } /* now the station is qualified to join our BSS... */ @@ -3497,11 +2388,20 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) if (pstat->bpairwise_key_installed == _TRUE && (pstat->flags & WLAN_STA_MFP)) status = _STATS_REFUSED_TEMPORARILY_; #endif /* CONFIG_IEEE80211W */ +#ifdef CONFIG_RTW_MBO + if (rtw_mbo_ap_assoc_disallow(padapter)) + status = _STATS_UNABLE_HANDLE_STA_; +#endif +#ifdef CONFIG_RTW_80211R_AP + if ((pstat && (pstat->authalg != WLAN_AUTH_FT))) +#endif + { /* .2 issue assoc rsp before notify station join event. */ if (frame_type == WIFI_ASSOCREQ) issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP); else issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP); + } #ifdef CONFIG_IOCTL_CFG80211 _enter_critical_bh(&pstat->lock, &irqL); @@ -3534,7 +2434,8 @@ unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) #endif /* CONFIG_IEEE80211W */ #endif /* CONFIG_NATIVEAP_MLME */ } - + if (elems) + rtw_mfree(elems, sizeof(struct rtw_ieee802_11_elems)); return _SUCCESS; asoc_class2_error: @@ -3542,7 +2443,8 @@ asoc_class2_error: #ifdef CONFIG_NATIVEAP_MLME issue_deauth(padapter, (void *)get_addr2_ptr(pframe), status); #endif - + if (elems) + rtw_mfree(elems, sizeof(struct rtw_ieee802_11_elems)); return _FAIL; OnAssocReqFail: @@ -3556,9 +2458,9 @@ OnAssocReqFail: issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP); #endif - + if (elems) + rtw_mfree(elems, sizeof(struct rtw_ieee802_11_elems)); #endif /* CONFIG_AP_MODE */ - return _FAIL; } @@ -3596,19 +2498,25 @@ unsigned int OnAssocRsp(_adapter *padapter, union recv_frame *precv_frame) uint i; int res; unsigned short status; - PNDIS_802_11_VARIABLE_IEs pIE; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); /* WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); */ u8 *pframe = precv_frame->u.hdr.rx_data; uint pkt_len = precv_frame->u.hdr.len; -#ifdef CONFIG_WAPI_SUPPORT - PNDIS_802_11_VARIABLE_IEs pWapiIE = NULL; -#endif + u8 ie_offset = 6 + WLAN_HDR_A3_LEN; RTW_INFO("%s\n", __FUNCTION__); + /* check ie length */ + if (pkt_len < ie_offset) { + RTW_ERR("%s: incorrect assoc_rsp length(%u)\n", __func__, pkt_len); + return _SUCCESS; + } else if (check_ielen(pframe + ie_offset, pkt_len - ie_offset) == _FALSE) { + RTW_ERR("%s: IE of assoc_rsp has wrong length\n", __func__); + return _SUCCESS; + } + /* check A1 matches or not */ if (!_rtw_memcmp(adapter_mac_addr(padapter), get_da(pframe), ETH_ALEN)) return _SUCCESS; @@ -3650,86 +2558,11 @@ unsigned int OnAssocRsp(_adapter *padapter, union recv_frame *precv_frame) /* following are moved to join event callback function */ /* to handle HT, WMM, rate adaptive, update MAC reg */ /* for not to handle the synchronous IO in the tasklet */ - for (i = (6 + WLAN_HDR_A3_LEN); i < pkt_len;) { - pIE = (PNDIS_802_11_VARIABLE_IEs)(pframe + i); - - switch (pIE->ElementID) { - case _VENDOR_SPECIFIC_IE_: - if (_rtw_memcmp(pIE->data, WMM_PARA_OUI, 6)) /* WMM */ - WMM_param_handler(padapter, pIE); -#if defined(CONFIG_P2P) && defined(CONFIG_WFD) - else if (_rtw_memcmp(pIE->data, WFD_OUI, 4)) /* WFD */ - rtw_process_wfd_ie(padapter, (u8 *)pIE, pIE->Length, __func__); -#endif - break; + rtw_update_mlme(padapter, (pframe + 6 + WLAN_HDR_A3_LEN), + (pkt_len - 6 - WLAN_HDR_A3_LEN)); #ifdef CONFIG_WAPI_SUPPORT - case _WAPI_IE_: - pWapiIE = pIE; - break; -#endif - - case _HT_CAPABILITY_IE_: /* HT caps */ - HT_caps_handler(padapter, pIE); -#ifdef ROKU_PRIVATE - HT_caps_handler_infra_ap(padapter, pIE); -#endif /* ROKU_PRIVATE */ - break; - - case _HT_EXTRA_INFO_IE_: /* HT info */ - HT_info_handler(padapter, pIE); - break; - -#ifdef CONFIG_80211AC_VHT - case EID_VHTCapability: - VHT_caps_handler(padapter, pIE); -#ifdef ROKU_PRIVATE - VHT_caps_handler_infra_ap(padapter, pIE); -#endif /* ROKU_PRIVATE */ - break; - - case EID_VHTOperation: - VHT_operation_handler(padapter, pIE); - break; -#endif - - case _ERPINFO_IE_: - ERP_IE_handler(padapter, pIE); - break; -#ifdef CONFIG_TDLS - case WLAN_EID_EXT_CAP: - if (check_ap_tdls_prohibited(pIE->data, pIE->Length) == _TRUE) - padapter->tdlsinfo.ap_prohibited = _TRUE; - if (check_ap_tdls_ch_switching_prohibited(pIE->data, pIE->Length) == _TRUE) - padapter->tdlsinfo.ch_switch_prohibited = _TRUE; - break; -#endif /* CONFIG_TDLS */ - -#ifdef CONFIG_RTW_80211K - case _EID_RRM_EN_CAP_IE_: - RM_IE_handler(padapter, pIE); - break; -#endif - -#ifdef ROKU_PRIVATE - /* Infra mode, used to store AP's info , Parse the supported rates from AssocRsp */ - case _SUPPORTEDRATES_IE_: - Supported_rate_infra_ap(padapter, pIE); - break; - - case _EXT_SUPPORTEDRATES_IE_: - Extended_Supported_rate_infra_ap(padapter, pIE); - break; -#endif /* ROKU_PRIVATE */ - default: - break; - } - - i += (pIE->Length + 2); - } - -#ifdef CONFIG_WAPI_SUPPORT - rtw_wapi_on_assoc_ok(padapter, pWapiIE); + rtw_wapi_on_assoc_ok(padapter); #endif pmlmeinfo->state &= (~WIFI_FW_ASSOC_STATE); @@ -3780,7 +2613,6 @@ unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame) #ifdef CONFIG_AP_MODE if (MLME_IS_AP(padapter)) { - _irqL irqL; struct sta_info *psta; struct sta_priv *pstapriv = &padapter->stapriv; @@ -3795,18 +2627,13 @@ unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame) if (psta) { u8 updated = _FALSE; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); if (rtw_is_list_empty(&psta->asoc_list) == _FALSE) { - rtw_list_delete(&psta->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif - updated = ap_free_sta(padapter, psta, _FALSE, reason, _TRUE); + rtw_stapriv_asoc_list_del(pstapriv, psta); + updated = ap_free_sta(padapter, psta, _FALSE, 0, reason, _TRUE); } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); associated_clients_update(padapter, updated, STA_INFO_UPDATE_ALL); } @@ -3833,6 +2660,11 @@ unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame) } } +#ifdef CONFIG_RTW_WNM + if (!rtw_wnm_try_btm_roam_imnt(padapter)) + ignore_received_deauth = 1; +#endif + RTW_PRINT(FUNC_ADPT_FMT" reason=%u, ta=%pM, ignore=%d\n" , FUNC_ADPT_ARG(padapter), reason, get_addr2_ptr(pframe), ignore_received_deauth); @@ -3872,7 +2704,6 @@ unsigned int OnDisassoc(_adapter *padapter, union recv_frame *precv_frame) #ifdef CONFIG_AP_MODE if (MLME_IS_AP(padapter)) { - _irqL irqL; struct sta_info *psta; struct sta_priv *pstapriv = &padapter->stapriv; @@ -3887,18 +2718,13 @@ unsigned int OnDisassoc(_adapter *padapter, union recv_frame *precv_frame) if (psta) { u8 updated = _FALSE; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); if (rtw_is_list_empty(&psta->asoc_list) == _FALSE) { - rtw_list_delete(&psta->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif - updated = ap_free_sta(padapter, psta, _FALSE, reason, _TRUE); + rtw_stapriv_asoc_list_del(pstapriv, psta); + updated = ap_free_sta(padapter, psta, _FALSE, 0, reason, _TRUE); } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); associated_clients_update(padapter, updated, STA_INFO_UPDATE_ALL); } @@ -3926,63 +2752,6 @@ unsigned int OnAtim(_adapter *padapter, union recv_frame *precv_frame) return _SUCCESS; } -unsigned int on_action_spct_ch_switch(_adapter *padapter, struct sta_info *psta, u8 *ies, uint ies_len) -{ - unsigned int ret = _FAIL; - struct mlme_ext_priv *mlmeext = &padapter->mlmeextpriv; - struct mlme_ext_info *pmlmeinfo = &(mlmeext->mlmext_info); - - if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) { - ret = _SUCCESS; - goto exit; - } - - if ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) { - - int ch_switch_mode = -1, ch = -1, ch_switch_cnt = -1; - int ch_offset = -1; - u8 bwmode; - struct ieee80211_info_element *ie; - - RTW_INFO(FUNC_NDEV_FMT" from "MAC_FMT"\n", - FUNC_NDEV_ARG(padapter->pnetdev), MAC_ARG(psta->cmn.mac_addr)); - - for_each_ie(ie, ies, ies_len) { - if (ie->id == WLAN_EID_CHANNEL_SWITCH) { - ch_switch_mode = ie->data[0]; - ch = ie->data[1]; - ch_switch_cnt = ie->data[2]; - RTW_INFO("ch_switch_mode:%d, ch:%d, ch_switch_cnt:%d\n", - ch_switch_mode, ch, ch_switch_cnt); - } else if (ie->id == WLAN_EID_SECONDARY_CHANNEL_OFFSET) { - ch_offset = secondary_ch_offset_to_hal_ch_offset(ie->data[0]); - RTW_INFO("ch_offset:%d\n", ch_offset); - } - } - - if (ch == -1) - return _SUCCESS; - - if (ch_offset == -1) - bwmode = mlmeext->cur_bwmode; - else - bwmode = (ch_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) ? - CHANNEL_WIDTH_20 : CHANNEL_WIDTH_40; - - ch_offset = (ch_offset == -1) ? mlmeext->cur_ch_offset : ch_offset; - - /* todo: - * 1. the decision of channel switching - * 2. things after channel switching - */ - - ret = rtw_set_chbw_cmd(padapter, ch, bwmode, ch_offset, 0); - } - -exit: - return ret; -} - unsigned int on_action_spct(_adapter *padapter, union recv_frame *precv_frame) { unsigned int ret = _FAIL; @@ -4014,10 +2783,7 @@ unsigned int on_action_spct(_adapter *padapter, union recv_frame *precv_frame) case RTW_WLAN_ACTION_SPCT_TPC_RPRT: break; case RTW_WLAN_ACTION_SPCT_CHL_SWITCH: -#ifdef CONFIG_SPCT_CH_SWITCH - ret = on_action_spct_ch_switch(padapter, psta - , frame_body + 2, frame_len - (frame_body - pframe) - 2); -#elif CONFIG_DFS +#if CONFIG_DFS if (MLME_IS_STA(padapter) && MLME_IS_ASOC(padapter)) { process_csa_ie(padapter , frame_body + 2, frame_len - (frame_body - pframe) - 2); @@ -4107,8 +2873,45 @@ unsigned int on_action_wnm(_adapter *adapter, union recv_frame *rframe) rtw_mfree(rsp.pcandidates, sz); } fallthrough; - /* fall through */ default: + #ifdef CONFIG_RTW_MBO + if (rtw_mbo_wifi_logo_test(adapter) \ + && (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) \ + && (action == RTW_WLAN_ACTION_WNM_BTM_QUERY)) { + struct mbo_attr_info *pmbo_attr = \ + &(pmlmepriv->mbo_attr); + + RTW_INFO("%s: BSS Transition Management query" + " recv from "MAC_FMT"\n", __func__, + MAC_ARG(sta->cmn.mac_addr)); + pmbo_attr->user_raw.hdr.dialog_token = \ + wnm_btm_dialog_token(frame_body); + pmbo_attr->user_raw.hdr.req_mode |= \ + PREFERRED_CANDIDATE_LIST_INCLUDED; + pmbo_attr->user_raw.hdr.validity_interval = 30; + rtw_wnm_process_btm_query( + adapter, frame_body, frame_body_len); + rtw_wnm_issue_btm_req(adapter, sta->cmn.mac_addr, + &pmbo_attr->user_raw.hdr, NULL, 0, + (u8 *)&pmbo_attr->user_raw.btm_cants, + pmbo_attr->user_raw.candidate_cnt); + break; + } + + if (rtw_mbo_wifi_logo_test(adapter) \ + && (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) \ + && (action == RTW_WLAN_ACTION_WNM_NOTIF_REQ)) { + struct mbo_attr_info *pmbo_attr = \ + &(pmlmepriv->mbo_attr); + + RTW_INFO("%s: Notification Request" + " recv from "MAC_FMT"\n", __func__, + MAC_ARG(sta->cmn.mac_addr)); + rtw_wnm_process_notification_req(adapter, + frame_body, frame_body_len); + break; + } + #endif /* CONFIG_RTW_MBO */ #ifdef CONFIG_IOCTL_CFG80211 cnt += sprintf((msg + cnt), "ACT_WNM %u", action); rtw_cfg80211_rx_action(adapter, rframe, msg); @@ -4231,10 +3034,9 @@ bool rtw_rx_ampdu_set_size(_adapter *adapter, u8 size, u8 reason) { bool is_adj = _FALSE; struct mlme_ext_priv *mlmeext; - struct mlme_ext_info *mlmeinfo; + mlmeext = &adapter->mlmeextpriv; - mlmeinfo = &mlmeext->mlmext_info; if (reason == RX_AMPDU_DRV_FIXED) { if (adapter->fix_rx_ampdu_size != size) { @@ -4243,7 +3045,7 @@ bool rtw_rx_ampdu_set_size(_adapter *adapter, u8 size, u8 reason) RTW_INFO(FUNC_ADPT_FMT" fix_rx_ampdu_size:%u\n", FUNC_ADPT_ARG(adapter), size); } } else if (reason == RX_AMPDU_DRV_SCAN) { - struct ss_res *ss = &adapter->mlmeextpriv.sitesurvey_res; + struct ss_res *ss = &mlmeext->sitesurvey_res; if (ss->rx_ampdu_size != size) { ss->rx_ampdu_size = size; @@ -4267,10 +3069,9 @@ bool rtw_rx_ampdu_set_accept(_adapter *adapter, u8 accept, u8 reason) { bool is_adj = _FALSE; struct mlme_ext_priv *mlmeext; - struct mlme_ext_info *mlmeinfo; + mlmeext = &adapter->mlmeextpriv; - mlmeinfo = &mlmeext->mlmext_info; if (reason == RX_AMPDU_DRV_FIXED) { if (adapter->fix_rx_ampdu_accept != accept) { @@ -4279,8 +3080,8 @@ bool rtw_rx_ampdu_set_accept(_adapter *adapter, u8 accept, u8 reason) RTW_INFO(FUNC_ADPT_FMT" fix_rx_ampdu_accept:%u\n", FUNC_ADPT_ARG(adapter), accept); } } else if (reason == RX_AMPDU_DRV_SCAN) { - if (adapter->mlmeextpriv.sitesurvey_res.rx_ampdu_accept != accept) { - adapter->mlmeextpriv.sitesurvey_res.rx_ampdu_accept = accept; + if (mlmeext->sitesurvey_res.rx_ampdu_accept != accept) { + mlmeext->sitesurvey_res.rx_ampdu_accept = accept; is_adj = _TRUE; RTW_INFO(FUNC_ADPT_FMT" ss.rx_ampdu_accept:%u\n", FUNC_ADPT_ARG(adapter), accept); } @@ -4342,12 +3143,12 @@ u8 rx_ampdu_size_sta_limit(_adapter *adapter, struct sta_info *sta) u8 bw = rtw_min(sta->cmn.bw_mode, adapter->mlmeextpriv.cur_bwmode); #ifdef CONFIG_80211AC_VHT - if (is_supported_vht(sta->wireless_mode)) { + if (is_highest_support_vht(sta->wireless_mode)) { nss = rtw_min(rtw_vht_mcsmap_to_nss(mlme->vhtpriv.vht_mcs_map) , rtw_vht_mcsmap_to_nss(sta->vhtpriv.vht_mcs_map)); } else #endif - if (is_supported_ht(sta->wireless_mode)) { + if (is_highest_support_ht(sta->wireless_mode)) { nss = rtw_min(rtw_ht_mcsset_to_nss(mlmeinfo->HT_caps.u.HT_cap_element.MCS_rate) , rtw_ht_mcsset_to_nss(sta->htpriv.ht_cap.supp_mcs_set)); } @@ -4413,14 +3214,13 @@ u16 rtw_rx_ampdu_apply(_adapter *adapter) /* TODO: TDLS peer */ #ifdef CONFIG_AP_MODE } else if (MLME_IS_AP(adapter) || MLME_IS_MESH(adapter)) { - _irqL irqL; _list *phead, *plist; u8 peer_num = 0; char peers[NUM_STA]; struct sta_priv *pstapriv = &adapter->stapriv; int i; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); @@ -4436,7 +3236,7 @@ u16 rtw_rx_ampdu_apply(_adapter *adapter) peers[peer_num++] = stainfo_offset; } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); for (i = 0; i < peer_num; i++) { sta = rtw_get_stainfo_by_offset(pstapriv, peers[i]); @@ -4618,7 +3418,7 @@ void issue_p2p_GO_request(_adapter *padapter, u8 *raddr) u8 action = P2P_PUB_ACTION_ACTION; u32 p2poui = cpu_to_be32(P2POUI); u8 oui_subtype = P2P_GO_NEGO_REQ; - u8 wpsie[255] = { 0x00 }, p2pie[255] = { 0x00 }; + u8 *wpsie = NULL, *p2pie = NULL; u8 wpsielen = 0, p2pielen = 0; u16 len_channellist_attr = 0; #ifdef CONFIG_WFD @@ -4635,9 +3435,16 @@ void issue_p2p_GO_request(_adapter *padapter, u8 *raddr) struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + wpsie = (u8 *)rtw_zmalloc(255); + if (!wpsie) + return; + p2pie = (u8 *)rtw_zmalloc(255); + if (!p2pie) + goto exit; + pmgntframe = alloc_mgtxmitframe(pxmitpriv); if (pmgntframe == NULL) - return; + goto exit; RTW_INFO("[%s] In\n", __FUNCTION__); /* update attribute */ @@ -4671,7 +3478,6 @@ void issue_p2p_GO_request(_adapter *padapter, u8 *raddr) pframe = rtw_set_fixed_ie(pframe, 1, &pwdinfo->negotiation_dialog_token, &(pattrib->pktlen)); - /* WPS Section */ wpsielen = 0; /* WPS OUI */ @@ -5002,6 +3808,11 @@ void issue_p2p_GO_request(_adapter *padapter, u8 *raddr) dump_mgntframe(padapter, pmgntframe); +exit: + if (wpsie) + rtw_mfree(wpsie, 255); + if (p2pie) + rtw_mfree(p2pie, 255); return; } @@ -5014,7 +3825,7 @@ void issue_p2p_GO_response(_adapter *padapter, u8 *raddr, u8 *frame_body, uint l u8 action = P2P_PUB_ACTION_ACTION; u32 p2poui = cpu_to_be32(P2POUI); u8 oui_subtype = P2P_GO_NEGO_RESP; - u8 wpsie[255] = { 0x00 }, p2pie[255] = { 0x00 }; + u8 *wpsie = NULL, *p2pie = NULL; u8 p2pielen = 0; uint wpsielen = 0; u16 wps_devicepassword_id = 0x0000; @@ -5034,9 +3845,17 @@ void issue_p2p_GO_response(_adapter *padapter, u8 *raddr, u8 *frame_body, uint l u32 wfdielen = 0; #endif + wpsie = (u8 *)rtw_zmalloc(255); + if (!wpsie) + return; + p2pie = (u8 *)rtw_zmalloc(255); + if (!p2pie) + goto exit; + pmgntframe = alloc_mgtxmitframe(pxmitpriv); if (pmgntframe == NULL) - return; + goto exit; + RTW_INFO("[%s] In, result = %d\n", __FUNCTION__, result); /* update attribute */ @@ -5421,6 +4240,11 @@ void issue_p2p_GO_response(_adapter *padapter, u8 *raddr, u8 *frame_body, uint l dump_mgntframe(padapter, pmgntframe); +exit: + if (wpsie) + rtw_mfree(wpsie, 255); + if (p2pie) + rtw_mfree(p2pie, 255); return; } @@ -5432,7 +4256,7 @@ void issue_p2p_GO_confirm(_adapter *padapter, u8 *raddr, u8 result) u8 action = P2P_PUB_ACTION_ACTION; u32 p2poui = cpu_to_be32(P2POUI); u8 oui_subtype = P2P_GO_NEGO_CONF; - u8 p2pie[255] = { 0x00 }; + u8 *p2pie = NULL; u8 p2pielen = 0; struct xmit_frame *pmgntframe; @@ -5447,10 +4271,16 @@ void issue_p2p_GO_confirm(_adapter *padapter, u8 *raddr, u8 result) u32 wfdielen = 0; #endif - pmgntframe = alloc_mgtxmitframe(pxmitpriv); - if (pmgntframe == NULL) + p2pie = (u8 *)rtw_zmalloc(255); + if (!p2pie) return; + pmgntframe = alloc_mgtxmitframe(pxmitpriv); + if (pmgntframe == NULL) { + rtw_mfree(p2pie, 255); + return; + } + RTW_INFO("[%s] In\n", __FUNCTION__); /* update attribute */ pattrib = &pmgntframe->attrib; @@ -5654,7 +4484,8 @@ void issue_p2p_GO_confirm(_adapter *padapter, u8 *raddr, u8 result) pattrib->last_txcmdsz = pattrib->pktlen; dump_mgntframe(padapter, pmgntframe); - + if (p2pie) + rtw_mfree(p2pie, 255); return; } @@ -5666,7 +4497,7 @@ void issue_p2p_invitation_request(_adapter *padapter, u8 *raddr) u8 action = P2P_PUB_ACTION_ACTION; u32 p2poui = cpu_to_be32(P2POUI); u8 oui_subtype = P2P_INVIT_REQ; - u8 p2pie[255] = { 0x00 }; + u8 *p2pie = NULL; u8 p2pielen = 0; u8 dialogToken = 3; u16 len_channellist_attr = 0; @@ -5683,10 +4514,15 @@ void issue_p2p_invitation_request(_adapter *padapter, u8 *raddr) struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + p2pie = (u8 *)rtw_zmalloc(255); + if (!p2pie) + return; pmgntframe = alloc_mgtxmitframe(pxmitpriv); - if (pmgntframe == NULL) + if (pmgntframe == NULL) { + rtw_mfree(p2pie, 255); return; + } /* update attribute */ pattrib = &pmgntframe->attrib; @@ -5953,6 +4789,8 @@ void issue_p2p_invitation_request(_adapter *padapter, u8 *raddr) dump_mgntframe(padapter, pmgntframe); + if (p2pie) + rtw_mfree(p2pie, 255); return; } @@ -5964,7 +4802,7 @@ void issue_p2p_invitation_response(_adapter *padapter, u8 *raddr, u8 dialogToken u8 action = P2P_PUB_ACTION_ACTION; u32 p2poui = cpu_to_be32(P2POUI); u8 oui_subtype = P2P_INVIT_RESP; - u8 p2pie[255] = { 0x00 }; + u8 *p2pie = NULL; u8 p2pielen = 0; u16 len_channellist_attr = 0; #ifdef CONFIG_WFD @@ -5980,10 +4818,15 @@ void issue_p2p_invitation_response(_adapter *padapter, u8 *raddr, u8 dialogToken struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + p2pie = (u8 *)rtw_zmalloc(255); + if (!p2pie) + return; pmgntframe = alloc_mgtxmitframe(pxmitpriv); - if (pmgntframe == NULL) + if (pmgntframe == NULL) { + rtw_mfree(p2pie, 255); return; + } /* update attribute */ pattrib = &pmgntframe->attrib; @@ -6188,6 +5031,7 @@ void issue_p2p_invitation_response(_adapter *padapter, u8 *raddr, u8 dialogToken dump_mgntframe(padapter, pmgntframe); + rtw_mfree(p2pie, 255); return; } @@ -6338,7 +5182,7 @@ void issue_probersp_p2p(_adapter *padapter, unsigned char *da) u16 beacon_interval = 100; u16 capInfo = 0; struct wifidirect_info *pwdinfo = &(padapter->wdinfo); - u8 wpsie[255] = { 0x00 }; + u8 *wpsie = NULL; u32 wpsielen = 0, p2pielen = 0; #ifdef CONFIG_WFD u32 wfdielen = 0; @@ -6346,9 +5190,14 @@ void issue_probersp_p2p(_adapter *padapter, unsigned char *da) /* RTW_INFO("%s\n", __FUNCTION__); */ - pmgntframe = alloc_mgtxmitframe(pxmitpriv); - if (pmgntframe == NULL) + wpsie = (u8 *)rtw_zmalloc(255); + if (!wpsie) return; + pmgntframe = alloc_mgtxmitframe(pxmitpriv); + if (pmgntframe == NULL) { + rtw_mfree(wpsie, 255); + return; + } /* update attribute */ pattrib = &pmgntframe->attrib; @@ -6614,7 +5463,7 @@ void issue_probersp_p2p(_adapter *padapter, unsigned char *da) dump_mgntframe(padapter, pmgntframe); - + rtw_mfree(wpsie, 255); return; } @@ -6632,7 +5481,7 @@ int _issue_probereq_p2p(_adapter *padapter, u8 *da, int wait_ack) struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; struct wifidirect_info *pwdinfo = &(padapter->wdinfo); - u8 wpsie[255] = { 0x00 }, p2pie[255] = { 0x00 }; + u8 *wpsie = NULL, *p2pie = NULL; u16 wpsielen = 0, p2pielen = 0; #ifdef CONFIG_WFD u32 wfdielen = 0; @@ -6640,7 +5489,12 @@ int _issue_probereq_p2p(_adapter *padapter, u8 *da, int wait_ack) struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - + wpsie = (u8 *)rtw_zmalloc(255); + if (!wpsie) + return ret; + p2pie = (u8 *)rtw_zmalloc(255); + if (!p2pie) + goto exit; pmgntframe = alloc_mgtxmitframe(pxmitpriv); if (pmgntframe == NULL) goto exit; @@ -6941,6 +5795,10 @@ int _issue_probereq_p2p(_adapter *padapter, u8 *da, int wait_ack) } exit: + if (wpsie) + rtw_mfree(wpsie, 255); + if (p2pie) + rtw_mfree(p2pie, 255); return ret; } @@ -7479,25 +6337,19 @@ exit: unsigned int OnAction_ft(_adapter *padapter, union recv_frame *precv_frame) { #ifdef CONFIG_RTW_80211R - u32 ret = _FAIL; - u32 frame_len = 0; - u8 action_code = 0; - u8 category = 0; - u8 *pframe = NULL; - u8 *pframe_body = NULL; - u8 tgt_addr[ETH_ALEN]; - u8 *pie = NULL; + u32 ret = _FAIL, frame_len = 0; + u8 action_code = 0, category = 0; + u8 *pframe = NULL, *pframe_body = NULL, *pie = NULL; + u8 tgt_addr[ETH_ALEN], msg[32] = {0}; u32 ft_ie_len = 0; u32 status_code = 0; struct mlme_ext_priv *pmlmeext = NULL; - struct mlme_ext_info *pmlmeinfo = NULL; struct mlme_priv *pmlmepriv = NULL; struct wlan_network *proam_target = NULL; struct ft_roam_info *pft_roam = NULL; _irqL irqL; pmlmeext = &(padapter->mlmeextpriv); - pmlmeinfo = &(pmlmeext->mlmext_info); pmlmepriv = &(padapter->mlmepriv); pft_roam = &(pmlmepriv->ft_roam); pframe = precv_frame->u.hdr.rx_data; @@ -7550,6 +6402,11 @@ unsigned int OnAction_ft(_adapter *padapter, union recv_frame *precv_frame) case RTW_WLAN_ACTION_FT_REQ: case RTW_WLAN_ACTION_FT_CONF: case RTW_WLAN_ACTION_FT_ACK: + #ifdef CONFIG_IOCTL_CFG80211 + sprintf(msg, "ACT_FT %u", action_code); + rtw_cfg80211_rx_action(padapter, precv_frame, msg); + #endif + break; default: RTW_ERR("FT: Unsupported FT Action!\n"); break; @@ -7713,7 +6570,8 @@ unsigned int OnAction_p2p(_adapter *padapter, union recv_frame *precv_frame) { #ifdef CONFIG_P2P u8 *frame_body; - u8 category, OUI_Subtype, dialogToken = 0; + u8 category, OUI_Subtype; + /*u8 dialogToken = 0;*/ u8 *pframe = precv_frame->u.hdr.rx_data; uint len = precv_frame->u.hdr.len; struct wifidirect_info *pwdinfo = &(padapter->wdinfo); @@ -7742,7 +6600,7 @@ unsigned int OnAction_p2p(_adapter *padapter, union recv_frame *precv_frame) { len -= sizeof(struct rtw_ieee80211_hdr_3addr); OUI_Subtype = frame_body[5]; - dialogToken = frame_body[6]; + /*dialogToken = frame_body[6];*/ switch (OUI_Subtype) { case P2P_NOTICE_OF_ABSENCE: @@ -7781,7 +6639,6 @@ unsigned int OnAction_tbtx_token(_adapter *padapter, union recv_frame *precv_fra #define TOKEN_REL 0x01 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct xmit_priv *pxmitpriv = &padapter->xmitpriv; struct sta_priv *pstapriv = &padapter->stapriv; struct sta_info *psta; @@ -7873,7 +6730,7 @@ void rtw_issue_action_token_rel(_adapter *padapter) //struct sta_priv *pstapriv = &padapter->stapriv; //struct registry_priv *pregpriv = &padapter->registrypriv; - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) return; pmgntframe = alloc_mgtxmitframe(pxmitpriv); @@ -8014,10 +6871,10 @@ void update_monitor_frame_attrib(_adapter *padapter, struct pkt_attrib *pattrib) u8 wireless_mode; struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct xmit_priv *pxmitpriv = &padapter->xmitpriv; - struct sta_info *psta = NULL; - struct sta_priv *pstapriv = &padapter->stapriv; + /*struct sta_info *psta = NULL;*/ + /*struct sta_priv *pstapriv = &padapter->stapriv;*/ - psta = rtw_get_stainfo(pstapriv, pattrib->ra); + /*psta = rtw_get_stainfo(pstapriv, pattrib->ra);*/ pattrib->hdrlen = 24; pattrib->nr_frags = 1; @@ -8065,7 +6922,6 @@ void update_monitor_frame_attrib(_adapter *padapter, struct pkt_attrib *pattrib) pattrib->mbssid = 0; pattrib->hw_ssn_sel = pxmitpriv->hw_ssn_seq_no; - } #ifdef CONFIG_RTW_MGMT_QUEUE @@ -8517,6 +7373,9 @@ void issue_beacon(_adapter *padapter, int timeout_ms) _clr_fwstate_(pmlmepriv, WIFI_UNDER_WPS); } +#ifdef CONFIG_RTW_MBO + rtw_mbo_build_beacon_ies(padapter, &pframe, pattrib); +#endif #ifdef CONFIG_P2P if (rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) { u32 len; @@ -8663,22 +7522,30 @@ void issue_probersp(_adapter *padapter, unsigned char *da, u8 is_valid_p2p_probe #ifdef CONFIG_P2P struct wifidirect_info *pwdinfo = &(padapter->wdinfo); #endif /* CONFIG_P2P */ + u8 *buf = NULL; /* RTW_INFO("%s\n", __FUNCTION__); */ if (da == NULL) return; - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) + return; + + if (cur_network->IELength > MAX_IE_SZ) + return; + + buf = (u8 *)rtw_zmalloc(MAX_IE_SZ); + if (!buf) return; pmgntframe = alloc_mgtxmitframe(pxmitpriv); if (pmgntframe == NULL) { + rtw_mfree(buf, MAX_IE_SZ); RTW_INFO("%s, alloc mgnt frame fail\n", __FUNCTION__); return; } - /* update attribute */ pattrib = &pmgntframe->attrib; update_mgntframe_attrib(padapter, pattrib); @@ -8705,10 +7572,6 @@ void issue_probersp(_adapter *padapter, unsigned char *da, u8 is_valid_p2p_probe pattrib->pktlen = pattrib->hdrlen; pframe += pattrib->hdrlen; - - if (cur_network->IELength > MAX_IE_SZ) - return; - #if defined(CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { pwps_ie = rtw_get_wps_ie(cur_network->IEs + _FIXED_IE_LENGTH_, cur_network->IELength - _FIXED_IE_LENGTH_, NULL, &wps_ielen); @@ -8751,9 +7614,9 @@ void issue_probersp(_adapter *padapter, unsigned char *da, u8 is_valid_p2p_probe u8 *ssid_ie; sint ssid_ielen; sint ssid_ielen_diff; - u8 buf[MAX_IE_SZ]; u8 *ies = pmgntframe->buf_addr + TXDESC_OFFSET + sizeof(struct rtw_ieee80211_hdr_3addr); + ssid_ie = rtw_get_ie(ies + _FIXED_IE_LENGTH_, _SSID_IE_, &ssid_ielen, (pframe - ies) - _FIXED_IE_LENGTH_); @@ -8841,6 +7704,9 @@ void issue_probersp(_adapter *padapter, unsigned char *da, u8 is_valid_p2p_probe } +#ifdef CONFIG_RTW_MBO + rtw_mbo_build_probe_rsp_ies(padapter, &pframe, pattrib); +#endif #ifdef CONFIG_P2P if (rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO) /* IOT issue, When wifi_spec is not set, send probe_resp with P2P IE even if probe_req has no P2P IE */ @@ -8911,7 +7777,7 @@ void issue_probersp(_adapter *padapter, unsigned char *da, u8 is_valid_p2p_probe dump_mgntframe(padapter, pmgntframe); - + rtw_mfree(buf, MAX_IE_SZ); return; } @@ -8935,7 +7801,7 @@ int _issue_probereq(_adapter *padapter, const NDIS_802_11_SSID *pssid, const u8 struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(padapter); #endif - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; pmgntframe = alloc_mgtxmitframe(pxmitpriv); @@ -9043,7 +7909,7 @@ int _issue_probereq(_adapter *padapter, const NDIS_802_11_SSID *pssid, const u8 #ifdef CONFIG_RTW_MBO - rtw_mbo_build_probe_req_ies( padapter, &pframe, pattrib); + rtw_mbo_build_probe_req_ies(padapter, &pframe, pattrib); #endif pattrib->last_txcmdsz = pattrib->pktlen; @@ -9077,7 +7943,7 @@ int issue_probereq_ex(_adapter *padapter, const NDIS_802_11_SSID *pssid, const u int i = 0; systime start = rtw_get_current_time(); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; do { @@ -9129,7 +7995,7 @@ void issue_auth(_adapter *padapter, struct sta_info *psta, unsigned short status struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) return; pmgntframe = alloc_mgtxmitframe(pxmitpriv); @@ -9199,7 +8065,7 @@ void issue_auth(_adapter *padapter, struct sta_info *psta, unsigned short status #ifdef CONFIG_RTW_80211R if (rtw_ft_roam(padapter)) { /* 2: 802.11R FTAA */ - val16 = cpu_to_le16(2); + val16 = cpu_to_le16(WLAN_AUTH_FT); } else #endif { @@ -9236,7 +8102,7 @@ void issue_auth(_adapter *padapter, struct sta_info *psta, unsigned short status val16 = cpu_to_le16(val16); pframe = rtw_set_fixed_ie(pframe, _STATUS_CODE_, (unsigned char *)&val16, &(pattrib->pktlen)); -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) rtw_ft_build_auth_req_ies(padapter, pattrib, &pframe); #endif @@ -9292,7 +8158,7 @@ void issue_asocrsp(_adapter *padapter, unsigned short status, struct sta_info *p #endif /* CONFIG_P2P */ - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) return; RTW_INFO("%s to "MAC_FMT" status:%u\n", __FUNCTION__, MAC_ARG(pstat->cmn.mac_addr), status); @@ -9429,10 +8295,21 @@ void issue_asocrsp(_adapter *padapter, unsigned short status, struct sta_info *p cap[i] = padapter->rmpriv.rm_en_cap_def[i] & pstat->rm_en_cap[i]; } +#ifdef CONFIG_RTW_MBO + if (rtw_mbo_wifi_logo_test(padapter)) { + cap[0] |= BIT(1); + } +#endif if (pstat->capability & cap_RM) pframe = rtw_set_ie(pframe, _EID_RRM_EN_CAP_IE_, 5, (u8 *)cap, &(pattrib->pktlen)); #endif /* CONFIG_RTW_80211K */ +#ifdef CONFIG_RTW_80211R_AP + rtw_ft_build_assoc_rsp_ies(padapter, pstat, pattrib, &pframe); +#endif +#ifdef CONFIG_RTW_MBO + rtw_mbo_build_assoc_rsp_ies(padapter, &pframe, pattrib); +#endif /* FILL WMM IE */ if ((pstat->flags & WLAN_STA_WME) && (pmlmepriv->qospriv.qos_option)) { @@ -9580,7 +8457,7 @@ void _issue_assocreq(_adapter *padapter, u8 is_reassoc) u8 vs_ie_length = 0; #ifdef CONFIG_P2P struct wifidirect_info *pwdinfo = &(padapter->wdinfo); - u8 p2pie[255] = { 0x00 }; + u8 *p2pie = NULL; u16 p2pielen = 0; #ifdef CONFIG_WFD u32 wfdielen = 0; @@ -9591,7 +8468,12 @@ void _issue_assocreq(_adapter *padapter, u8 is_reassoc) u16 cap; #endif - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) +#ifdef CONFIG_P2P + p2pie = (u8 *)rtw_zmalloc(sizeof(u8) * 255); + if (!p2pie) + return; +#endif + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; pmgntframe = alloc_mgtxmitframe(pxmitpriv); @@ -9661,25 +8543,12 @@ void _issue_assocreq(_adapter *padapter, u8 is_reassoc) if (pmlmeext->cur_channel > 14) { struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); u8 pow_cap_ele[2] = { 0x00 }; - u8 sup_ch[30 * 2] = {0x00 }, sup_ch_idx = 0, idx_5g = 2; /* For supported channel */ pow_cap_ele[0] = 13; /* Minimum transmit power capability */ pow_cap_ele[1] = 21; /* Maximum transmit power capability */ pframe = rtw_set_ie(pframe, EID_PowerCap, 2, pow_cap_ele, &(pattrib->pktlen)); - /* supported channels */ - while (sup_ch_idx < rfctl->max_chan_nums && rfctl->channel_set[sup_ch_idx].ChannelNum != 0) { - if (rfctl->channel_set[sup_ch_idx].ChannelNum <= 14) { - /* TODO: fix 2.4G supported channel when channel doesn't start from 1 and continuous */ - sup_ch[0] = 1; /* First channel number */ - sup_ch[1] = rfctl->channel_set[sup_ch_idx].ChannelNum; /* Number of channel */ - } else { - sup_ch[idx_5g++] = rfctl->channel_set[sup_ch_idx].ChannelNum; - sup_ch[idx_5g++] = 1; - } - sup_ch_idx++; - } - pframe = rtw_set_ie(pframe, EID_SupportedChannels, idx_5g, sup_ch, &(pattrib->pktlen)); + pframe = rtw_chset_set_spt_chs_ie(&rfctl->chset, pframe, &(pattrib->pktlen)); } #endif /* CONFIG_IEEE80211_BAND_5GHZ && CONFIG_DFS */ @@ -9771,12 +8640,12 @@ void _issue_assocreq(_adapter *padapter, u8 is_reassoc) #ifdef CONFIG_RTW_MBO rtw_mbo_build_assoc_req_ies(padapter, &pframe, pattrib); #endif -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) rtw_ft_build_assoc_req_ies(padapter, is_reassoc, pattrib, &pframe); #endif #ifdef CONFIG_RTW_80211K - pframe = rtw_set_ie(pframe, _EID_RRM_EN_CAP_IE_, 5, - (u8 *)padapter->rmpriv.rm_en_cap_def, + pframe = rtw_set_ie(pframe, _EID_RRM_EN_CAP_IE_, 5, + (u8 *)padapter->rmpriv.rm_en_cap_def, &(pattrib->pktlen)); #endif /* CONFIG_RTW_80211K */ @@ -9803,21 +8672,12 @@ void _issue_assocreq(_adapter *padapter, u8 is_reassoc) break; case EID_WPA2: -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) if ((is_reassoc) && (rtw_ft_roam(padapter))) { rtw_ft_update_rsnie(padapter, _TRUE, pattrib, &pframe); } else #endif { -#ifdef CONFIG_IOCTL_CFG80211 - if (rtw_sec_chk_auth_alg(padapter, WLAN_AUTH_OPEN) && - rtw_sec_chk_auth_type(padapter, MLME_AUTHTYPE_SAE)) { - s32 entry = rtw_cached_pmkid(padapter, pmlmepriv->assoc_bssid); - - rtw_rsn_sync_pmkid(padapter, (u8 *)pIE, (pIE->Length + 2), entry); - } -#endif /* CONFIG_IOCTL_CFG80211 */ - pframe = rtw_set_ie(pframe, EID_WPA2, pIE->Length, pIE->data, &(pattrib->pktlen)); /* tmp: update rsn's spp related opt. */ /*rtw_set_spp_amsdu_mode(padapter->registrypriv.amsdu_mode, pframe - (pIE->Length + 2), pIE->Length +2);*/ @@ -10062,7 +8922,10 @@ exit: #endif } else rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len); - +#ifdef CONFIG_P2P + if (p2pie) + rtw_mfree(p2pie, 255); +#endif return; } @@ -10095,7 +8958,7 @@ static int _issue_nulldata(_adapter *padapter, unsigned char *da, unsigned int p if (!padapter) goto exit; - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; pxmitpriv = &(padapter->xmitpriv); @@ -10180,7 +9043,7 @@ int issue_nulldata(_adapter *padapter, unsigned char *da, unsigned int power_mod struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; /* da == NULL, assum it's null data for sta to ap */ @@ -10235,7 +9098,7 @@ static int _issue_qos_nulldata(_adapter *padapter, unsigned char *da, u16 tid, u struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); u8 a4_shift; - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; /* RTW_INFO("%s\n", __FUNCTION__); */ @@ -10334,7 +9197,7 @@ int issue_qos_nulldata(_adapter *padapter, unsigned char *da, u16 tid, u8 ps, in struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; /* da == NULL, assum it's null data for sta to ap*/ @@ -10375,7 +9238,7 @@ exit: return ret; } -static int _issue_deauth(_adapter *padapter, unsigned char *da, unsigned short reason, u8 wait_ack, u8 key_type) +static int _issue_disasoc_deauth(_adapter *padapter, unsigned char *da, u8 disasoc, unsigned short reason, u8 wait_ack, u8 key_type) { struct xmit_frame *pmgntframe; struct pkt_attrib *pattrib; @@ -10399,7 +9262,7 @@ static int _issue_deauth(_adapter *padapter, unsigned char *da, unsigned short r } #endif /* CONFIG_P2P */ - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; pmgntframe = alloc_mgtxmitframe(pxmitpriv); @@ -10425,7 +9288,7 @@ static int _issue_deauth(_adapter *padapter, unsigned char *da, unsigned short r SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - set_frame_sub_type(pframe, WIFI_DEAUTH); + set_frame_sub_type(pframe, disasoc ? WIFI_DISASSOC : WIFI_DEAUTH); pframe += sizeof(struct rtw_ieee80211_hdr_3addr); pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); @@ -10447,6 +9310,22 @@ exit: return ret; } +static int _issue_disasoc(_adapter *adapter, unsigned char *da, unsigned short reason, u8 wait_ack, u8 key_type) +{ + return _issue_disasoc_deauth(adapter, da, 1, reason, wait_ack, key_type); +} + +int issue_disasoc(_adapter *adapter, unsigned char *da, unsigned short reason) +{ + RTW_INFO("%s reason(%u) to "MAC_FMT"\n", __func__, reason, MAC_ARG(da)); + return _issue_disasoc(adapter, da, reason, _FALSE, IEEE80211W_RIGHT_KEY); +} + +static int _issue_deauth(_adapter *padapter, unsigned char *da, unsigned short reason, u8 wait_ack, u8 key_type) +{ + return _issue_disasoc_deauth(padapter, da, 0, reason, wait_ack, key_type); +} + int issue_deauth(_adapter *padapter, unsigned char *da, unsigned short reason) { RTW_INFO("%s reason(%u) to "MAC_FMT"\n", __func__, reason, MAC_ARG(da)); @@ -10473,7 +9352,7 @@ int issue_deauth_ex(_adapter *padapter, u8 *da, unsigned short reason, int try_c int i = 0; systime start = rtw_get_current_time(); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; do { @@ -10510,69 +9389,6 @@ exit: return ret; } -void issue_action_spct_ch_switch(_adapter *padapter, u8 *ra, u8 new_ch, u8 ch_offset) -{ - struct xmit_frame *pmgntframe; - struct pkt_attrib *pattrib; - unsigned char *pframe; - struct rtw_ieee80211_hdr *pwlanhdr; - unsigned short *fctrl; - struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); - struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); - - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) - return; - - RTW_INFO(FUNC_NDEV_FMT" ra="MAC_FMT", ch:%u, offset:%u\n", - FUNC_NDEV_ARG(padapter->pnetdev), MAC_ARG(ra), new_ch, ch_offset); - - pmgntframe = alloc_mgtxmitframe(pxmitpriv); - if (pmgntframe == NULL) - return; - - /* update attribute */ - pattrib = &pmgntframe->attrib; - update_mgntframe_attrib(padapter, pattrib); - - _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); - - pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; - pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; - - fctrl = &(pwlanhdr->frame_ctl); - *(fctrl) = 0; - - _rtw_memcpy(pwlanhdr->addr1, ra, ETH_ALEN); /* RA */ - _rtw_memcpy(pwlanhdr->addr2, adapter_mac_addr(padapter), ETH_ALEN); /* TA */ - _rtw_memcpy(pwlanhdr->addr3, ra, ETH_ALEN); /* DA = RA */ - - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); - pmlmeext->mgnt_seq++; - set_frame_sub_type(pframe, WIFI_ACTION); - - pframe += sizeof(struct rtw_ieee80211_hdr_3addr); - pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); - - /* category, action */ - { - u8 category, action; - category = RTW_WLAN_CATEGORY_SPECTRUM_MGMT; - action = RTW_WLAN_ACTION_SPCT_CHL_SWITCH; - - pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); - pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); - } - - pframe = rtw_set_ie_ch_switch(pframe, &(pattrib->pktlen), 0, new_ch, 0); - pframe = rtw_set_ie_secondary_ch_offset(pframe, &(pattrib->pktlen), - hal_ch_offset_to_secondary_ch_offset(ch_offset)); - - pattrib->last_txcmdsz = pattrib->pktlen; - - dump_mgntframe(padapter, pmgntframe); - -} - #ifdef CONFIG_IEEE80211W void issue_action_SA_Query(_adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short tid, u8 key_type) { @@ -10590,10 +9406,16 @@ void issue_action_SA_Query(_adapter *padapter, unsigned char *raddr, unsigned ch struct sta_priv *pstapriv = &padapter->stapriv; struct registry_priv *pregpriv = &padapter->registrypriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) return; + if (pwrpriv->bInSuspend == _TRUE) { + RTW_INFO("DBG_TX_DROP_FRAME %s in suspend flow\n", __FUNCTION__); + return; + } + RTW_INFO("%s, %04x\n", __FUNCTION__, tid); pmgntframe = alloc_mgtxmitframe(pxmitpriv); @@ -10640,6 +9462,12 @@ void issue_action_SA_Query(_adapter *padapter, unsigned char *raddr, unsigned ch psta = rtw_get_stainfo(pstapriv, pwlanhdr->addr1); if (psta != NULL) { /* RTW_INFO("%s, %d, set dot11w_expire_timer\n", __func__, __LINE__); */ + if (_check_timer_is_active(&psta->dot11w_expire_timer)){ + /* The timer is active, do not set it again */ + rtw_free_xmitbuf(&padapter->xmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(&padapter->xmitpriv, pmgntframe); + return; + } _set_timer(&psta->dot11w_expire_timer, 1000); } } @@ -10698,7 +9526,7 @@ static int issue_action_ba(_adapter *padapter, unsigned char *raddr, unsigned ch #ifdef CONFIG_80211N_HT - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; pmgntframe = alloc_mgtxmitframe(pxmitpriv); @@ -10901,7 +9729,7 @@ inline u8 issue_addba_rsp_wait_ack(_adapter *adapter, unsigned char *ra, u8 tid, int i = 0; systime start = rtw_get_current_time(); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(adapter))) + if (adapter_is_tx_blocked_by_ch_waiting(adapter)) goto exit; do { @@ -10979,7 +9807,7 @@ int issue_del_ba_ex(_adapter *adapter, unsigned char *ra, u8 tid, u16 reason, u8 int i = 0; systime start = rtw_get_current_time(); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(adapter))) + if (adapter_is_tx_blocked_by_ch_waiting(adapter)) goto exit; do { @@ -11020,13 +9848,13 @@ exit: void issue_action_BSSCoexistPacket(_adapter *padapter) { _irqL irqL; - _list *plist, *phead; + _list *plist = NULL, *phead = NULL; unsigned char category, action; - struct xmit_frame *pmgntframe; - struct pkt_attrib *pattrib; - unsigned char *pframe; - struct rtw_ieee80211_hdr *pwlanhdr; - unsigned short *fctrl; + struct xmit_frame *pmgntframe = NULL; + struct pkt_attrib *pattrib = NULL; + unsigned char *pframe = NULL; + struct rtw_ieee80211_hdr *pwlanhdr = NULL; + unsigned short *fctrl = NULL; struct wlan_network *pnetwork = NULL; struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -11034,7 +9862,7 @@ void issue_action_BSSCoexistPacket(_adapter *padapter) struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); _queue *queue = &(pmlmepriv->scanned_queue); u8 InfoContent[16] = {0}; - u8 ICS[8][15]; + u8 *ICS[8], i = 0; #ifdef CONFIG_80211N_HT if ((pmlmepriv->num_FortyMHzIntolerant == 0) && (pmlmepriv->num_sta_no_ht == 0)) return; @@ -11042,9 +9870,17 @@ void issue_action_BSSCoexistPacket(_adapter *padapter) if (_TRUE == pmlmeinfo->bwmode_updated) return; - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) return; + for (i = 0; i < 8; i++) + ICS[i] = NULL; + for (i = 0; i < 8; i++) { + ICS[i] = (u8 *)rtw_zmalloc(15); + if (!ICS[i]) + goto exit; + } + RTW_INFO("%s\n", __FUNCTION__); @@ -11052,9 +9888,9 @@ void issue_action_BSSCoexistPacket(_adapter *padapter) action = ACT_PUBLIC_BSSCOEXIST; pmgntframe = alloc_mgtxmitframe(pxmitpriv); - if (pmgntframe == NULL) - return; - + if (pmgntframe == NULL) { + goto exit; + } /* update attribute */ pattrib = &pmgntframe->attrib; update_mgntframe_attrib(padapter, pattrib); @@ -11090,10 +9926,7 @@ void issue_action_BSSCoexistPacket(_adapter *padapter) pframe = rtw_set_ie(pframe, EID_BSSCoexistence, 1, &iedata, &(pattrib->pktlen)); } - /* */ - _rtw_memset(ICS, 0, sizeof(ICS)); if (pmlmepriv->num_sta_no_ht > 0) { - int i; _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); @@ -11161,6 +9994,11 @@ void issue_action_BSSCoexistPacket(_adapter *padapter) pattrib->last_txcmdsz = pattrib->pktlen; dump_mgntframe(padapter, pmgntframe); +exit: + for (i = 0; i < 8; i++) { + if (ICS[i]) + rtw_mfree(ICS[i], 15); + } #endif /* CONFIG_80211N_HT */ } @@ -11193,7 +10031,7 @@ int _issue_action_SM_PS(_adapter *padapter , unsigned char *raddr , u8 NewMimoP } else return ret; - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) return ret; RTW_INFO("%s, sm_power_control=%u, NewMimoPsMode=%u\n", __FUNCTION__ , sm_power_control , NewMimoPsMode); @@ -11257,7 +10095,7 @@ int issue_action_SM_PS_wait_ack(_adapter *padapter, unsigned char *raddr, u8 New int i = 0; systime start = rtw_get_current_time(); - if (rtw_rfctl_is_tx_blocked_by_ch_waiting(adapter_to_rfctl(padapter))) + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) goto exit; do { @@ -11410,10 +10248,8 @@ unsigned int send_beacon(_adapter *padapter) return _SUCCESS; #endif - /* bypass TX BCN queue because op ch is switching/waiting */ - if (check_fwstate(&padapter->mlmepriv, WIFI_OP_CH_SWITCHING) - || IS_CH_WAITING(adapter_to_rfctl(padapter)) - ) + /* bypass TX BCN queue because op ch is switching */ + if (check_fwstate(&padapter->mlmepriv, WIFI_OP_CH_SWITCHING)) return _SUCCESS; /* RTW_INFO("%s\n", __FUNCTION__); */ @@ -11456,10 +10292,8 @@ unsigned int send_beacon(_adapter *padapter) return _SUCCESS; #endif - /* bypass TX BCN queue because op ch is switching/waiting */ - if (check_fwstate(&padapter->mlmepriv, WIFI_OP_CH_SWITCHING) - || IS_CH_WAITING(adapter_to_rfctl(padapter)) - ) + /* bypass TX BCN queue because op ch is switching */ + if (check_fwstate(&padapter->mlmepriv, WIFI_OP_CH_SWITCHING)) return _SUCCESS; #if defined(CONFIG_USB_HCI) @@ -11514,9 +10348,16 @@ unsigned int send_beacon(_adapter *padapter) } else { u32 passing_time = rtw_get_passing_time_ms(start); - if (passing_time > 100 || issue > 3) + if (passing_time > 100 || issue > 3) { +#ifdef CONFIG_MCC_MODE + if (MCC_EN(padapter)) { + if (!rtw_hal_check_mcc_status(padapter, MCC_STATUS_DOING_MCC)) + RTW_INFO("%s success, issue:%d, poll:%d, %u ms\n", __FUNCTION__, issue, poll, rtw_get_passing_time_ms(start)); + } +#else RTW_INFO("%s success, issue:%d, poll:%d, %u ms\n", __FUNCTION__, issue, poll, rtw_get_passing_time_ms(start)); - else if (0) +#endif + } else if (0) RTW_INFO("%s success, issue:%d, poll:%d, %u ms\n", __FUNCTION__, issue, poll, rtw_get_passing_time_ms(start)); #ifdef CONFIG_FW_CORRECT_BCN @@ -11557,7 +10398,7 @@ BOOLEAN IsLegal5GChannel( u8 collect_bss_info(_adapter *padapter, union recv_frame *precv_frame, WLAN_BSSID_EX *bssid) { int i; - sint len; + u32 len; u8 *p; u8 rf_path; u16 val16, subtype; @@ -11572,8 +10413,12 @@ u8 collect_bss_info(_adapter *padapter, union recv_frame *precv_frame, WLAN_BSSI u32 *pbuf; #endif - len = packet_len - sizeof(struct rtw_ieee80211_hdr_3addr); + if (packet_len < sizeof(struct rtw_ieee80211_hdr_3addr)) { + RTW_INFO("packet_len < sizeof(struct rtw_ieee80211_hdr_3addr)\n"); + return _FAIL; + } + len = packet_len - sizeof(struct rtw_ieee80211_hdr_3addr); if (len > MAX_IE_SZ) { /* RTW_INFO("IE too long for survey event\n"); */ return _FAIL; @@ -11988,7 +10833,7 @@ void start_clnt_join(_adapter *padapter) _set_timer(&padapter->mlmepriv.assoc_timer, (REAUTH_TO * REAUTH_LIMIT) + (REASSOC_TO * REASSOC_LIMIT) + beacon_timeout); -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) if (rtw_ft_roam(padapter)) { rtw_ft_start_clnt_join(padapter); } else @@ -12107,7 +10952,7 @@ unsigned int receive_disconnect(_adapter *padapter, unsigned char *MacAddr, unsi pmlmeinfo->state = WIFI_FW_NULL_STATE; } else RTW_INFO(FUNC_ADPT_FMT" - End to Disconnect\n", FUNC_ADPT_ARG(padapter)); -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) rtw_ft_roam_status_reset(padapter); #endif #ifdef CONFIG_RTW_WNM @@ -12118,23 +10963,27 @@ unsigned int receive_disconnect(_adapter *padapter, unsigned char *MacAddr, unsi return _SUCCESS; } -static void rtw_hidden_ssid_bss_count(_adapter *adapter, WLAN_BSSID_EX *bss) +/* + * Return channel index of struct dvobj_priv.rf_ctl.channel_set[] for channel match + * BSS_EX_OP_BAND(bss) & BSS_EX_OP_CH(bss), or -1 if not found. + */ +static int rtw_hidden_ssid_bss_count(_adapter *adapter, WLAN_BSSID_EX *bss) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; + struct rtw_chset *chset = adapter_to_chset(adapter); int chset_idx; if (bss->InfrastructureMode != Ndis802_11Infrastructure) - return; + return -1; if (!hidden_ssid_ap(bss)) - return; + return -1; - chset_idx = rtw_chset_search_ch(chset, bss->Configuration.DSConfig); + chset_idx = rtw_chset_search_bch(chset, BSS_EX_OP_BAND(bss), BSS_EX_OP_CH(bss)); if (chset_idx < 0) - return; - - chset[chset_idx].hidden_bss_cnt++; + return chset_idx; + + chset->chs[chset_idx].hidden_bss_cnt++; + return chset_idx; } /**************************************************************************** @@ -12381,11 +11230,16 @@ u32 report_del_sta_event(_adapter *padapter, unsigned char *MacAddr, unsigned sh pdel_sta_evt = (struct stadel_event *)(pevtcmd + sizeof(struct rtw_evt_header)); _rtw_memcpy((unsigned char *)(&(pdel_sta_evt->macaddr)), MacAddr, ETH_ALEN); _rtw_memcpy((unsigned char *)(pdel_sta_evt->rsvd), (unsigned char *)(&reason), 2); - psta = rtw_get_stainfo(&padapter->stapriv, MacAddr); + psta = rtw_get_stainfo_to_free(&padapter->stapriv, MacAddr); if (psta) mac_id = (int)psta->cmn.mac_id; - else + else { mac_id = (-1); + rtw_mfree(pevtcmd, cmdsz); + res = _FAIL; + goto exit; + } + pdel_sta_evt->mac_id = mac_id; pdel_sta_evt->locally_generated = locally_generated; @@ -12526,18 +11380,18 @@ bool rtw_port_switch_chk(_adapter *adapter) goto exit; } +#ifdef CONFIG_P2P /* GC should use port0 for p2p ps */ if (((if_port1_mlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) && (if_port1_mlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) -#ifdef CONFIG_P2P && !rtw_p2p_chk_state(&if_port1->wdinfo, P2P_STATE_NONE) -#endif && !check_fwstate(&if_port1->mlmepriv, WIFI_UNDER_WPS) ) { RTW_INFO("%s "ADPT_FMT" is GC\n", __func__, ADPT_ARG(if_port1)); switch_needed = _TRUE; goto exit; } +#endif /* port1 linked, but port0 not linked */ if ((if_port1_mlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) @@ -12647,58 +11501,6 @@ void update_sta_info(_adapter *padapter, struct sta_info *psta) } -#ifdef CONFIG_80211D -static void rtw_joinbss_update_regulatory(_adapter *adapter, const WLAN_BSSID_EX *network) -{ - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - - if (rfctl->regd_src == REGD_SRC_RTK_PRIV - && !rtw_rfctl_is_disable_sw_channel_plan(rfctl_to_dvobj(rfctl)) - ) { - struct mlme_priv *mlme = &adapter->mlmepriv; - const u8 *country_ie = NULL; - sint country_ie_len = 0; - - if (network) { - if (rtw_iface_accept_country_ie(adapter)) { - country_ie = rtw_get_ie(BSS_EX_TLV_IES(network) - , WLAN_EID_COUNTRY, &country_ie_len, BSS_EX_TLV_IES_LEN(network)); - if (country_ie) { - if (country_ie_len < 6) { - country_ie = NULL; - country_ie_len = 0; - } else - country_ie_len += 2; - } - } - } - - if (country_ie) { - rtw_buf_update(&mlme->recv_country_ie, &mlme->recv_country_ie_len, country_ie, country_ie_len); - if (rtw_apply_recv_country_ie_cmd(adapter, RTW_CMDF_DIRECTLY - , network->Configuration.DSConfig > 14 ? BAND_ON_5G : BAND_ON_2_4G - , network->Configuration.DSConfig, country_ie) != _SUCCESS - ) - RTW_WARN(FUNC_ADPT_FMT" rtw_apply_recv_country_ie_cmd() fail\n", FUNC_ADPT_ARG(adapter)); - } else - rtw_buf_free(&mlme->recv_country_ie, &mlme->recv_country_ie_len); - } -} - -static void rtw_leavebss_update_regulatory(_adapter *adapter) -{ - struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); - struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); - - if (rfctl->regd_src == REGD_SRC_RTK_PRIV - && !rtw_rfctl_is_disable_sw_channel_plan(dvobj) - ) { - if (rtw_apply_recv_country_ie_cmd(adapter, RTW_CMDF_DIRECTLY, 0, 0, NULL) != _SUCCESS) - RTW_WARN(FUNC_ADPT_FMT" rtw_apply_recv_country_ie_cmd() fail\n", FUNC_ADPT_ARG(adapter)); - } -} -#endif /* CONFIG_80211D */ - static void rtw_mlmeext_disconnect(_adapter *padapter) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -12776,10 +11578,10 @@ static void rtw_mlmeext_disconnect(_adapter *padapter) rtw_leavebss_update_regulatory(padapter); #endif - #ifdef CONFIG_DFS_MASTER + #if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ if (!CHK_MLME_STATE(padapter, WIFI_AP_STATE | WIFI_MESH_STATE | WIFI_OP_CH_SWITCHING)) { /* radar detect status no need to check here for AP/MESH or iface under OPCH_SW */ - rtw_dfs_rd_en_decision(padapter, self_action, 0); + rtw_dfs_rd_en_dec_on_mlme_act(padapter, NULL, self_action, 0); } #endif @@ -12790,7 +11592,7 @@ static void rtw_mlmeext_disconnect(_adapter *padapter) if (rtw_mi_get_ch_setting_union_no_self(padapter, &ch, &bw, &offset) != 0) set_channel_bwmode(padapter, ch, offset, bw); rtw_mi_update_union_chan_inf(padapter, ch, offset, bw); - rtw_rfctl_update_op_mode(adapter_to_rfctl(padapter), BIT(padapter->iface_id), 0); + rtw_rfctl_update_op_mode(adapter_to_rfctl(padapter), BIT(padapter->iface_id), 0, 0); } flush_all_cam_entry(padapter); @@ -12856,7 +11658,7 @@ void mlmeext_joinbss_event_callback(_adapter *padapter, int join_res) goto exit_mlmeext_joinbss_event_callback; } -#ifdef CONFIG_ARP_KEEP_ALIVE +#ifdef CONFIG_ARP_KEEP_ALIVE_GW pmlmepriv->bGetGateway = 1; pmlmepriv->GetGatewayTryCnt = 0; #endif @@ -12934,7 +11736,8 @@ void mlmeext_joinbss_event_callback(_adapter *padapter, int join_res) } #ifdef CONFIG_LPS - #ifndef CONFIG_FW_MULTI_PORT_SUPPORT + /* BTC needs driver to download null data rsvd page */ + #if !defined(CONFIG_FW_MULTI_PORT_SUPPORT) && !defined(CONFIG_BT_COEXIST) if (get_hw_port(padapter) == HW_PORT0) #endif rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_CONNECT, RTW_CMDF_DIRECTLY); @@ -13197,7 +12000,7 @@ void linked_status_chk_tdls(_adapter *padapter) _rtw_memset(checkalive, 0x00, sizeof(checkalive)); _rtw_memset(teardown, 0x00, sizeof(teardown)); - if ((padapter->tdlsinfo.link_established == _TRUE)) { + if (padapter->tdlsinfo.link_established == _TRUE) { _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); for (i = 0; i < NUM_STA; i++) { phead = &(pstapriv->sta_hash[i]); @@ -13279,9 +12082,6 @@ void linked_status_chk(_adapter *padapter, u8 from_timer) struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct sta_priv *pstapriv = &padapter->stapriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; -#ifdef CONFIG_LAYER2_ROAMING - struct recv_priv *precvpriv = &padapter->recvpriv; -#endif #ifdef CONFIG_RTW_WDS rtw_wds_gptr_expire(padapter); @@ -13302,20 +12102,6 @@ void linked_status_chk(_adapter *padapter, u8 from_timer) #if defined(CONFIG_RTW_REPEATER_SON) rtw_rson_scan_wk_cmd(padapter, RSON_SCAN_PROCESS); -#elif defined(CONFIG_LAYER2_ROAMING) - if (rtw_chk_roam_flags(padapter, RTW_ROAM_ACTIVE)) { - RTW_INFO("signal_strength_data.avg_val = %d\n", precvpriv->signal_strength_data.avg_val); - if ((precvpriv->signal_strength_data.avg_val < pmlmepriv->roam_rssi_threshold) - && (rtw_get_passing_time_ms(pmlmepriv->last_roaming) >= pmlmepriv->roam_scan_int*2000)) { -#ifdef CONFIG_RTW_80211K - rtw_roam_nb_discover(padapter, _FALSE); -#endif - pmlmepriv->need_to_roam = _TRUE; - rtw_drv_scan_by_self(padapter, RTW_AUTO_SCAN_REASON_ROAM); - pmlmepriv->last_roaming = rtw_get_current_time(); - } else - pmlmepriv->need_to_roam = _FALSE; - } #endif #ifdef CONFIG_MCC_MODE /* @@ -13329,7 +12115,7 @@ void linked_status_chk(_adapter *padapter, u8 from_timer) rx_chk_limit = rtw_get_rx_chk_limit(padapter); -#ifdef CONFIG_ARP_KEEP_ALIVE +#ifdef CONFIG_ARP_KEEP_ALIVE_GW if (!from_timer && pmlmepriv->bGetGateway == 1 && pmlmepriv->GetGatewayTryCnt < 3) { RTW_INFO("do rtw_gw_addr_query() : %d\n", pmlmepriv->GetGatewayTryCnt); pmlmepriv->GetGatewayTryCnt++; @@ -13552,6 +12338,11 @@ void survey_timer_hdl(void *ctx) } init_h2fwcmd_w_parm_no_rsp(cmd, psurveyPara, CMD_SITE_SURVEY); +#ifdef DBG_SITESURVEY + RTW_INFO(FUNC_ADPT_FMT" %dms\n" + , FUNC_ADPT_ARG(padapter) + , rtw_get_passing_time_ms(padapter->mlmepriv.scan_start_time)); +#endif /* DBG_SITESURVEY */ rtw_enqueue_cmd(pcmdpriv, cmd); } @@ -13593,14 +12384,13 @@ void rtw_tbtx_token_dispatch_timer_hdl(void *ctx) { _adapter *padapter = (_adapter *)ctx; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - _irqL irqL; struct sta_info *psta = NULL; struct sta_priv *pstapriv = &padapter->stapriv; _list *phead, *plist; int i, found = _FALSE; u8 nr_send, th_idx = 0; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); RTW_DBG("%s:asoc_cnt: %d\n",__func__, pstapriv->tbtx_asoc_list_cnt); // check number of TBTX sta @@ -13664,7 +12454,7 @@ outof_loop: exit: // set_timer - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); _set_timer(&pmlmeext->tbtx_token_dispatch_timer, TBTX_TX_DURATION); } #endif /* CONFIG_AP_MODE */ @@ -13825,7 +12615,7 @@ void report_sta_timeout_event(_adapter *padapter, u8 *MacAddr, unsigned short re _rtw_memcpy((unsigned char *)(pdel_sta_evt->rsvd), (unsigned char *)(&reason), 2); - psta = rtw_get_stainfo(&padapter->stapriv, MacAddr); + psta = rtw_get_stainfo_to_free(&padapter->stapriv, MacAddr); if (psta) mac_id = (int)psta->cmn.mac_id; else @@ -13997,14 +12787,14 @@ static int rtw_auto_ap_start_beacon(_adapter *adapter) #ifdef CONFIG_RTW_TOKEN_BASED_XMIT u8 tx_control_hdl(_adapter *adapter) { - u8 val; + bool enable; if(ATOMIC_READ(&adapter->tbtx_tx_pause)) - val = 0xff; + enable = true; else - val = 0x00; + enable = false; - rtw_hal_set_hwreg(adapter, HW_VAR_TXPAUSE, &val); + rtw_hal_tx_pause(adapter, PAUSE_RSON_TOKEN_BASED_XMIT, enable); return H2C_SUCCESS; } @@ -14013,22 +12803,25 @@ u8 tx_control_hdl(_adapter *adapter) #ifdef CONFIG_AP_MODE u8 stop_ap_hdl(_adapter *adapter) { - u8 self_action = MLME_ACTION_UNKNOWN; +#ifdef CONFIG_DFS_MASTER + bool hb_to_stop[HW_BAND_MAX]; + int i; +#endif RTW_INFO(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(adapter)); - if (MLME_IS_AP(adapter)) - self_action = MLME_AP_STOPPED; - else if (MLME_IS_MESH(adapter)) - self_action = MLME_MESH_STOPPED; - else - rtw_warn_on(1); +#ifdef CONFIG_DFS_MASTER + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) + hb_to_stop[i] = rtw_iface_is_operate_at_hwband(adapter, i) ? true : false; +#endif rtw_set_802_11_infrastructure_mode(adapter, Ndis802_11Infrastructure, RTW_CMDF_DIRECTLY); rtw_setopmode_cmd(adapter, Ndis802_11Infrastructure, RTW_CMDF_DIRECTLY); #ifdef CONFIG_DFS_MASTER - rtw_dfs_rd_en_decision(adapter, self_action, 0); + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) + if (hb_to_stop[i]) + rtw_dfs_rd_en_dec_update(adapter_to_dvobj(adapter), i); #endif return H2C_SUCCESS; @@ -14116,16 +12909,36 @@ u8 createbss_hdl(_adapter *padapter, u8 *pbuf) /* u8 initialgain; */ struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + u8 i; + _adapter *iface; if ((parm->req_ch == 0 && pmlmeinfo->state == WIFI_FW_AP_STATE) || parm->req_ch != 0 ) { start_bss_network(padapter, parm); + + /* Update beacon from hostap done, then update RA mask of clients */ + if (rfctl->ap_csa_wait_update_bcn) { + rfctl->ap_csa_wait_update_bcn = 0; + + for (i = 0; i < dvobj->iface_nums; i++) { + if (!(parm->ifbmp & BIT(i)) || !dvobj->padapters[i]) + continue; + iface = dvobj->padapters[i]; + rtw_csa_update_clients_ramask(iface); + } + RTW_INFO("csa : clear ap_csa_wait_update_bcn after update beacon done\n"); + } + + /* Switch channel done, not update beacon from hostapd yet */ if (rfctl->ap_csa_en) { u8 enable = 0; rfctl->ap_csa_en = AP_CSA_DISABLE; + rfctl->ap_csa_wait_update_bcn = 1; rtw_hal_set_hwreg(padapter, HW_VAR_BCN_EARLY_C2H_RPT, &enable); + RTW_INFO("csa : set ap_csa_wait_update_bcn to wait beacon update after switch channel\n"); } + goto exit; } @@ -14176,16 +12989,141 @@ exit: #endif /* CONFIG_AP_MODE */ } +static WLAN_BSSID_EX *join_cmd_pre_hdl(_adapter *padapter, WLAN_BSSID_EX *network) +{ + WLAN_BSSID_EX *psecnetwork; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct qos_priv *pqospriv = &pmlmepriv->qospriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct registry_priv *pregistrypriv = &padapter->registrypriv; +#ifdef CONFIG_80211N_HT + struct ht_priv *phtpriv = &pmlmepriv->htpriv; +#endif /* CONFIG_80211N_HT */ +#ifdef CONFIG_80211AC_VHT + struct vht_priv *pvhtpriv = &pmlmepriv->vhtpriv; +#endif /* CONFIG_80211AC_VHT */ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); + u32 tmp_len; + u8 *ptmp = NULL; + + psecnetwork = rtw_zmalloc(sizeof(WLAN_BSSID_EX)); + if (psecnetwork == NULL) + goto exit; + +#ifdef CONFIG_80211D + rtw_joinbss_update_regulatory(padapter, network); +#endif + + _rtw_memset(psecnetwork, 0, sizeof(WLAN_BSSID_EX)); + _rtw_memcpy(psecnetwork, network, get_WLAN_BSSID_EX_sz(network)); + + pmlmeinfo->assoc_AP_vendor = check_assoc_AP(network->IEs, network->IELength); + + rtw_phydm_update_ap_vendor_ie(padapter); + +#ifdef CONFIG_80211AC_VHT + /* save AP beamform_cap info for BCM IOT issue */ + if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_BROADCOM) + get_vht_bf_cap(network->IEs, + network->IELength, + &pvhtpriv->ap_bf_cap); +#endif + + /* Added by Albert 2009/02/18 */ + /* If the the driver wants to use the bssid to create the connection. */ + /* If not, we have to copy the connecting AP's MAC address to it so that */ + /* the driver just has the bssid information for PMKIDList searching. */ + if (pmlmepriv->assoc_by_bssid == _FALSE) + _rtw_memcpy(&pmlmepriv->assoc_bssid[0], &network->MacAddress[0], ETH_ALEN); + + psecnetwork->IELength = 0; + + /* copy fixed ie */ + _rtw_memcpy(psecnetwork->IEs, network->IEs, 12); + psecnetwork->IELength = 12; + + psecnetwork->IELength += rtw_restruct_sec_ie(padapter, psecnetwork->IEs + psecnetwork->IELength); + + + pqospriv->qos_option = 0; + + if (pregistrypriv->wmm_enable) { +#ifdef CONFIG_WMMPS_STA + rtw_uapsd_use_default_setting(padapter); +#endif /* CONFIG_WMMPS_STA */ + tmp_len = rtw_restruct_wmm_ie(padapter, &network->IEs[0], &psecnetwork->IEs[0], network->IELength, psecnetwork->IELength); + + if (psecnetwork->IELength != tmp_len) { + psecnetwork->IELength = tmp_len; + pqospriv->qos_option = 1; /* There is WMM IE in this corresp. beacon */ + } else { + pqospriv->qos_option = 0;/* There is no WMM IE in this corresp. beacon */ + } + } + +#ifdef CONFIG_80211N_HT + phtpriv->ht_option = _FALSE; + if (pregistrypriv->ht_enable && is_supported_ht(pregistrypriv->wireless_mode)) { + ptmp = rtw_get_ie(&network->IEs[12], _HT_CAPABILITY_IE_, &tmp_len, network->IELength - 12); + if (ptmp && tmp_len > 0) { + /* Added by Albert 2010/06/23 */ + /* For the WEP mode, we will use the bg mode to do the connection to avoid some IOT issue. */ + /* Especially for Realtek 8192u SoftAP. */ + if ((padapter->securitypriv.dot11PrivacyAlgrthm != _WEP40_) && + (padapter->securitypriv.dot11PrivacyAlgrthm != _WEP104_) && + (padapter->securitypriv.dot11PrivacyAlgrthm != _TKIP_)) { + rtw_ht_use_default_setting(padapter); + + /* rtw_restructure_ht_ie */ + rtw_restructure_ht_ie(padapter, &network->IEs[12], &psecnetwork->IEs[0], + network->IELength - 12, &psecnetwork->IELength, + network->Configuration.DSConfig); + } + } + } + +#ifdef CONFIG_80211AC_VHT + pvhtpriv->vht_option = _FALSE; + if (phtpriv->ht_option + && REGSTY_IS_11AC_ENABLE(pregistrypriv) + && is_supported_vht(pregistrypriv->wireless_mode) + && RFCTL_REG_EN_11AC(rfctl) + ) { + u8 vht_enable = 0; + + if (network->Configuration.DSConfig > 14) + vht_enable = 1; + else if ((REGSTY_IS_11AC_24G_ENABLE(pregistrypriv)) && (padapter->registrypriv.wifi_spec == 0)) + vht_enable = 1; + + if (vht_enable == 1) + rtw_restructure_vht_ie(padapter, &network->IEs[0], &psecnetwork->IEs[0], + network->IELength, &psecnetwork->IELength, network->Configuration.DSConfig); + } +#endif +#endif /* CONFIG_80211N_HT */ + + rtw_append_extended_cap(padapter, &psecnetwork->IEs[0], &psecnetwork->IELength); + +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) + rtw_ft_validate_akm_type(padapter, network); +#endif + +exit: + return psecnetwork; +} + u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf) { + struct joinbss_parm *pparm = (struct joinbss_parm *)pbuf; u8 join_type; PNDIS_802_11_VARIABLE_IEs pIE; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *jnetwork = NULL; WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX *)(&(pmlmeinfo->network)); -#ifdef CONFIG_ANTENNA_DIVERSITY - struct joinbss_parm *pparm = (struct joinbss_parm *)pbuf; -#endif /* CONFIG_ANTENNA_DIVERSITY */ #ifdef CONFIG_LAYER2_ROAMING struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); struct wlan_network *rnetwork = pmlmepriv->roam_network; @@ -14198,6 +13136,21 @@ u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf) /* u32 acparm; */ u8 u_ch, u_bw, u_offset; u8 doiqk = _FALSE; + u8 ret = H2C_SUCCESS; + + /* Check pbuf->IELength */ + if (pparm->network.IELength > MAX_IE_SZ || pparm->network.IELength < 2) { + report_join_res(padapter, (-4), WLAN_STATUS_UNSPECIFIED_FAILURE); + ret = H2C_PARAMETERS_ERROR; + goto exit; + } + + jnetwork = join_cmd_pre_hdl(padapter, &pparm->network); + if (!jnetwork) { + report_join_res(padapter, (-4), WLAN_STATUS_UNSPECIFIED_FAILURE); + ret = H2C_MEMORY; + goto exit; + } /* check already connecting to AP or not */ if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) { @@ -14221,7 +13174,7 @@ u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf) } #ifdef CONFIG_ANTENNA_DIVERSITY - rtw_antenna_select_cmd(padapter, pparm->network.PhyInfo.Optimum_antenna, _FALSE); + rtw_antenna_select_cmd(padapter, jnetwork->PhyInfo.Optimum_antenna, _FALSE); #endif #ifdef CONFIG_WAPI_SUPPORT @@ -14244,17 +13197,10 @@ u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf) pmlmeinfo->ht_vht_received = 0; _rtw_memset(pmlmeinfo->SupportedRates_infra_ap, 0, NDIS_802_11_LENGTH_RATES_EX); #endif /* ROKU_PRIVATE */ - _rtw_memcpy(pnetwork, pbuf, FIELD_OFFSET(WLAN_BSSID_EX, IELength)); - pnetwork->IELength = ((WLAN_BSSID_EX *)pbuf)->IELength; + _rtw_memcpy(pnetwork, jnetwork, FIELD_OFFSET(WLAN_BSSID_EX, IELength)); + pnetwork->IELength = jnetwork->IELength; - if (pnetwork->IELength > MAX_IE_SZ) /* Check pbuf->IELength */ - return H2C_PARAMETERS_ERROR; - - if (pnetwork->IELength < 2) { - report_join_res(padapter, (-4), WLAN_STATUS_UNSPECIFIED_FAILURE); - return H2C_SUCCESS; - } - _rtw_memcpy(pnetwork->IEs, ((WLAN_BSSID_EX *)pbuf)->IEs, pnetwork->IELength); + _rtw_memcpy(pnetwork->IEs, jnetwork->IEs, pnetwork->IELength); pmlmeinfo->bcn_interval = get_beacon_interval(pnetwork); @@ -14333,7 +13279,7 @@ u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf) /* check channel, bandwidth, offset and switch */ if (rtw_chk_start_clnt_join(padapter, &u_ch, &u_bw, &u_offset) == _FAIL) { report_join_res(padapter, (-4), WLAN_STATUS_UNSPECIFIED_FAILURE); - return H2C_SUCCESS; + goto free_jnetwork; } /* disable dynamic functions, such as high power, DIG */ @@ -14369,15 +13315,15 @@ u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf) #ifdef CONFIG_LAYER2_ROAMING _enter_critical_bh(&pmlmepriv->clnt_auth_lock, &irqL); - if (rnetwork && (pmlmeinfo->state & (WIFI_FW_AUTH_NULL | WIFI_FW_AUTH_STATE)) + if ((rnetwork && (pmlmeinfo->state & (WIFI_FW_AUTH_NULL | WIFI_FW_AUTH_STATE))) #ifdef CONFIG_RTW_80211R && (!rtw_ft_roam(padapter)) #endif ) { struct beacon_keys bcn_keys; - u32 roam_ielen; + /*u32 roam_ielen;*/ - roam_ielen = rnetwork->network.IELength; + /*roam_ielen = rnetwork->network.IELength;*/ update_network(&(pmlmepriv->cur_network.network), &(rnetwork->network), padapter, _TRUE); /* update bcn keys */ @@ -14408,8 +13354,12 @@ u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf) } _exit_critical_bh(&pmlmepriv->clnt_auth_lock, &irqL); #endif - return H2C_SUCCESS; +free_jnetwork: + rtw_mfree(jnetwork, sizeof(*jnetwork)); + +exit: + return ret; } u8 disconnect_hdl(_adapter *padapter, unsigned char *pbuf) @@ -14525,10 +13475,11 @@ u8 rtw_scan_sparse(_adapter *adapter, struct rtw_ieee80211_channel *ch, u8 ch_nu #define SCAN_SPARSE_CH_NUM_INVALID 255 static u8 token = 255; - u32 interval; bool busy_traffic = _FALSE; bool miracast_enabled = _FALSE; - bool bg_scan = _FALSE; +#if RTW_SCAN_SPARSE_BG + u32 interval; +#endif u8 max_allow_ch = SCAN_SPARSE_CH_NUM_INVALID; u8 scan_division_num; u8 ret_num = ch_num; @@ -14537,18 +13488,12 @@ u8 rtw_scan_sparse(_adapter *adapter, struct rtw_ieee80211_channel *ch, u8 ch_nu if (mlmeext->last_scan_time == 0) mlmeext->last_scan_time = rtw_get_current_time(); - interval = rtw_get_passing_time_ms(mlmeext->last_scan_time); - - if (rtw_mi_busy_traffic_check(adapter)) busy_traffic = _TRUE; if (rtw_mi_check_miracast_enabled(adapter)) miracast_enabled = _TRUE; - if (interval > RTW_SCAN_SPARSE_BG_INTERVAL_MS) - bg_scan = _TRUE; - /* max_allow_ch by conditions*/ #if RTW_SCAN_SPARSE_MIRACAST @@ -14557,7 +13502,8 @@ u8 rtw_scan_sparse(_adapter *adapter, struct rtw_ieee80211_channel *ch, u8 ch_nu #endif #if RTW_SCAN_SPARSE_BG - if (bg_scan == _TRUE) + interval = rtw_get_passing_time_ms(mlmeext->last_scan_time); + if (interval > RTW_SCAN_SPARSE_BG_INTERVAL_MS) max_allow_ch = rtw_min(max_allow_ch, RTW_SCAN_SPARSE_CH_NUM_BG); #endif @@ -14661,7 +13607,7 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel int i, j; int set_idx; u8 chan; - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); + struct rtw_chset *chset = adapter_to_chset(padapter); struct registry_priv *regsty = dvobj_to_regsty(adapter_to_dvobj(padapter)); #ifdef CONFIG_RTW_ROAM_QUICKSCAN struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; @@ -14671,7 +13617,7 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel _rtw_memset(out, 0, sizeof(struct rtw_ieee80211_channel) * out_num); #ifdef CONFIG_RTW_ROAM_QUICKSCAN - if ((reason == RTW_AUTO_SCAN_REASON_ROAM) && (pmlmeext->quickscan_next)) { + if ((reason == RTW_AUTO_SCAN_REASON_ROAM_ACTIVE) && (pmlmeext->quickscan_next)) { pmlmeext->quickscan_next = _FALSE; _rtw_memcpy(out, pmlmeext->roam_ch, sizeof(struct rtw_ieee80211_channel)*RTW_CHANNEL_SCAN_AMOUNT); return pmlmeext->roam_ch_num; @@ -14690,7 +13636,7 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel if (rtw_mlme_band_check(padapter, in[i].hw_value) == _FALSE) continue; - set_idx = rtw_chset_search_ch(rfctl->channel_set, in[i].hw_value); + set_idx = rtw_chset_search_ch(chset, in[i].hw_value); if (set_idx >= 0) { if (j >= out_num) { RTW_PRINT(FUNC_ADPT_FMT" out_num:%u not enough\n", @@ -14700,7 +13646,7 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel _rtw_memcpy(&out[j], &in[i], sizeof(struct rtw_ieee80211_channel)); - if (rfctl->channel_set[set_idx].flags & (RTW_CHF_NO_IR | RTW_CHF_DFS)) + if (chset->chs[set_idx].flags & (RTW_CHF_NO_IR | RTW_CHF_DFS)) out[j].flags |= RTW_IEEE80211_CHAN_PASSIVE_SCAN; j++; @@ -14709,10 +13655,12 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel break; } - /* if out is empty, use channel_set as default */ + /* if out is empty, use chset as default */ if (j == 0) { - for (i = 0; i < rfctl->max_chan_nums; i++) { - chan = rfctl->channel_set[i].ChannelNum; + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].flags & RTW_CHF_DIS) + continue; + chan = chset->chs[i].ChannelNum; if (rtw_mlme_band_check(padapter, chan) == _TRUE) { if (rtw_mlme_ignore_chan(padapter, chan) == _TRUE) continue; @@ -14728,7 +13676,7 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel out[j].hw_value = chan; - if (rfctl->channel_set[i].flags & (RTW_CHF_NO_IR | RTW_CHF_DFS)) + if (chset->chs[i].flags & (RTW_CHF_NO_IR | RTW_CHF_DFS)) out[j].flags |= RTW_IEEE80211_CHAN_PASSIVE_SCAN; j++; @@ -14750,7 +13698,7 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel static void sitesurvey_res_reset(_adapter *adapter, struct sitesurvey_parm *parm) { struct ss_res *ss = &adapter->mlmeextpriv.sitesurvey_res; - RT_CHANNEL_INFO *chset = adapter_to_chset(adapter); + struct rtw_chset *chset = adapter_to_chset(adapter); int i, reason = 0; ss->bss_cnt = 0; @@ -14782,8 +13730,8 @@ static void sitesurvey_res_reset(_adapter *adapter, struct sitesurvey_parm *parm , reason ); - for (i = 0; i < MAX_CHANNEL_NUM; i++) - chset[i].hidden_bss_cnt = 0; + for (i = 0; i < chset->chs_len; i++) + chset->chs[i].hidden_bss_cnt = 0; ss->bw = parm->bw; ss->igi = parm->igi; @@ -14802,6 +13750,7 @@ static u8 sitesurvey_pick_ch_behavior(_adapter *padapter, u8 *ch, RT_SCAN_TYPE * struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct ss_res *ss = &pmlmeext->sitesurvey_res; struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); + struct rtw_chset *chset = adapter_to_chset(padapter); int ch_set_idx; #ifdef CONFIG_P2P struct wifidirect_info *pwdinfo = &padapter->wdinfo; @@ -14826,9 +13775,9 @@ static u8 sitesurvey_pick_ch_behavior(_adapter *padapter, u8 *ch, RT_SCAN_TYPE * * The driver is in the find phase, it should go through the social channel. */ scan_ch = pwdinfo->social_chan[ss->channel_idx]; - ch_set_idx = rtw_chset_search_ch(rfctl->channel_set, scan_ch); + ch_set_idx = rtw_chset_search_ch(chset, scan_ch); if (ch_set_idx >= 0) - scan_type = rfctl->channel_set[ch_set_idx].flags & RTW_CHF_NO_IR ? SCAN_PASSIVE : SCAN_ACTIVE; + scan_type = chset->chs[ch_set_idx].flags & RTW_CHF_NO_IR ? SCAN_PASSIVE : SCAN_ACTIVE; else scan_type = SCAN_ACTIVE; } else @@ -14846,7 +13795,7 @@ static u8 sitesurvey_pick_ch_behavior(_adapter *padapter, u8 *ch, RT_SCAN_TYPE * { #ifdef CONFIG_RTW_WIFI_HAL if (adapter_to_dvobj(padapter)->nodfs) { - while (ss->channel_idx < ss->ch_num && rtw_chset_is_dfs_ch(rfctl->channel_set, ss->ch[ss->channel_idx].hw_value)) + while (ss->channel_idx < ss->ch_num && rtw_chset_is_dfs_ch(chset, ss->ch[ss->channel_idx].hw_value)) ss->channel_idx++; } else #endif @@ -14854,11 +13803,9 @@ static u8 sitesurvey_pick_ch_behavior(_adapter *padapter, u8 *ch, RT_SCAN_TYPE * && pmlmeext->sitesurvey_res.ssid_num && (ss->ch[ss->channel_idx - 1].flags & RTW_IEEE80211_CHAN_PASSIVE_SCAN) ) { - ch_set_idx = rtw_chset_search_ch(rfctl->channel_set, ss->ch[ss->channel_idx - 1].hw_value); - if (ch_set_idx != -1 && rfctl->channel_set[ch_set_idx].hidden_bss_cnt - && (!IS_DFS_SLAVE_WITH_RD(rfctl) - || rtw_rfctl_dfs_domain_unknown(rfctl) - || !CH_IS_NON_OCP(&rfctl->channel_set[ch_set_idx])) + ch_set_idx = rtw_chset_search_ch(chset, ss->ch[ss->channel_idx - 1].hw_value); + if (ch_set_idx != -1 && chset->chs[ch_set_idx].hidden_bss_cnt + && !CH_IS_NON_OCP(&chset->chs[ch_set_idx]) ) { ss->channel_idx--; ss->force_ssid_scan = 1; @@ -15112,7 +14059,7 @@ u8 rtw_ps_annc(_adapter *adapter, bool ps) set_channel_bwmode(iface, ch, offset, bw); } #endif /* CONFIG_MCC_MODE */ - issue_nulldata(iface, NULL, ps, 3, 500); + issue_nulldata(iface, NULL, ps, 3, PS_ANNC_DRV_RETRY_INT_MS); ps_anc = 1; } #ifdef CONFIG_RTW_MESH @@ -15297,7 +14244,7 @@ void generate_quickss(_adapter *padapter) struct wlan_network *pnetwork = NULL; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct rtw_ieee80211_channel *roam_ch = pmlmeext->roam_ch; - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); + struct rtw_chset *chset = adapter_to_chset(padapter); int chan; _irqL irqL; _list *plist, *phead; @@ -15339,11 +14286,13 @@ void generate_quickss(_adapter *padapter) _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); ch_num = 0; - for (j = 0; j < rfctl->max_chan_nums; j++) { - chan = rfctl->channel_set[j].ChannelNum; + for (j = 0; j < chset->chs_len; j++) { + if (chset->chs[j].flags & RTW_CHF_DIS) + continue; + chan = chset->chs[j].ChannelNum; if (mark[chan]) { roam_ch[ch_num].hw_value = chan; - roam_ch[ch_num++].flags = rfctl->channel_set[j].flags; + roam_ch[ch_num++].flags = chset->chs[j].flags; } } pmlmeext->roam_ch_num = ch_num; @@ -15524,11 +14473,16 @@ operation_by_state: scan_ms = 40; #else #if defined(CONFIG_RTW_ACS) && defined(CONFIG_RTW_ACS_DBG) - if (IS_ACS_ENABLE(padapter) && rtw_is_acs_st_valid(padapter)) + if (IS_ACS_ENABLE(padapter) && rtw_is_acs_st_valid(padapter)) { scan_ms = rtw_acs_get_adv_st(padapter); - else + } else #endif /*CONFIG_RTW_ACS*/ - scan_ms = ss->scan_ch_ms; + { + if (scan_type == SCAN_ACTIVE) + scan_ms = ACTIVE_CH_SURVEY_TO; + else + scan_ms = ss->scan_ch_ms; + } #endif #if defined(CONFIG_ANTENNA_DIVERSITY) || defined(DBG_SCAN_SW_ANTDIV_BL) @@ -15549,6 +14503,10 @@ operation_by_state: if (IS_NM_ENABLE(padapter)) rtw_noise_measure(padapter, scan_ch, _FALSE, 0, scan_ms / 2); #endif +#ifdef DBG_SITESURVEY + RTW_INFO(FUNC_ADPT_FMT" Schedule survey timer at: %dms\n" + , FUNC_ADPT_ARG(padapter), rtw_get_passing_time_ms(padapter->mlmepriv.scan_start_time)); +#endif /* DBG_SITESURVEY */ set_survey_timer(pmlmeext, scan_ms); break; } @@ -15887,7 +14845,9 @@ u8 setkey_hdl(_adapter *padapter, u8 *pbuf) } if (amsdu_spp_enable(padapter, pparm->algorithm) == _SUCCESS) ctrl |= BIT(7); - write_cam(padapter, cam_id, ctrl, addr, pparm->key); + + write_cam(padapter, cam_id, ctrl, addr, pparm->key, + pparm->algorithm & _SEC_TYPE_256_); /* if ((cam_id > 3) && (((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE)))*/ #ifndef SEC_DEFAULT_KEY_SEARCH @@ -16058,7 +15018,9 @@ write_to_cam: if (amsdu_spp_enable(padapter, pparm->algorithm) == _SUCCESS) ctrl |= BIT(7); - write_cam(padapter, cam_id, ctrl, pparm->addr, pparm->key); + write_cam(padapter, cam_id, ctrl, pparm->addr, pparm->key, + pparm->algorithm & _SEC_TYPE_256_); + if (!(pparm->gk)) ATOMIC_INC(&psta->keytrack); /*CVE-2020-24587*/ } @@ -16109,14 +15071,14 @@ u8 add_ba_rsp_hdl(_adapter *padapter, unsigned char *pbuf) struct recv_reorder_ctrl *preorder_ctrl; struct sta_priv *pstapriv = &padapter->stapriv; struct sta_info *psta; - u8 ret = _TRUE; + /*u8 ret = _TRUE;*/ psta = rtw_get_stainfo(pstapriv, pparm->addr); if (!psta) goto exit; preorder_ctrl = &psta->recvreorder_ctrl[pparm->tid]; - ret = issue_addba_rsp_wait_ack(padapter, pparm->addr, pparm->tid, pparm->status, pparm->size, 3, 50); + /*ret = */issue_addba_rsp_wait_ack(padapter, pparm->addr, pparm->tid, pparm->status, pparm->size, 3, 50); #ifdef CONFIG_UPDATE_INDICATE_SEQ_WHILE_PROCESS_ADDBA_REQ /* status = 0 means accept this addba req, so update indicate seq = start_seq under this compile flag */ @@ -16462,11 +15424,23 @@ void rtw_join_done_chk_ch(_adapter *adapter, int join_res) } ret = rtw_mi_get_ch_setting_union(adapter, &u_ch, &u_bw, &u_offset); +#ifdef CONFIG_MCC_MODE + if (dvobj->mcc_objpriv.en_mcc == _FALSE) { + if (join_res >= 0 && ret <= 0) { + join_res = -1; + dump_adapters_status(RTW_DBGDUMP , dvobj); + rtw_warn_on(1); + } + } else { + RTW_INFO(FUNC_ADPT_FMT" mcc enable, by pass ch union check\n", FUNC_ADPT_ARG(adapter)); + } +#else if (join_res >= 0 && ret <= 0) { join_res = -1; dump_adapters_status(RTW_DBGDUMP , dvobj); rtw_warn_on(1); } +#endif if (join_res >= 0) { #ifdef CONFIG_MCC_MODE @@ -16547,8 +15521,8 @@ void rtw_join_done_chk_ch(_adapter *adapter, int join_res) #endif /* CONFIG_AP_MODE */ } -#ifdef CONFIG_DFS_MASTER - rtw_dfs_rd_en_decision(adapter, MLME_STA_CONNECTED, 0); +#if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ + rtw_dfs_rd_en_dec_on_mlme_act(adapter, NULL, MLME_STA_CONNECTED, 0); #endif } else { for (i = 0; i < dvobj->iface_nums; i++) { @@ -16572,8 +15546,8 @@ void rtw_join_done_chk_ch(_adapter *adapter, int join_res) rtw_leavebss_update_regulatory(adapter); #endif -#ifdef CONFIG_DFS_MASTER - rtw_dfs_rd_en_decision(adapter, MLME_STA_DISCONNECTED, 0); +#if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ + rtw_dfs_rd_en_dec_on_mlme_act(adapter, NULL, MLME_STA_DISCONNECTED, 0); #endif } @@ -16585,7 +15559,7 @@ void rtw_join_done_chk_ch(_adapter *adapter, int join_res) rtw_mi_update_union_chan_inf(adapter, u_ch, u_offset, u_bw); if (join_res >= 0) - rtw_rfctl_update_op_mode(adapter_to_rfctl(adapter), BIT(adapter->iface_id), 1); + rtw_rfctl_update_op_mode(adapter_to_rfctl(adapter), BIT(adapter->iface_id), 1, 0); if (DUMP_ADAPTERS_STATUS) { RTW_INFO(FUNC_ADPT_FMT" exit\n", FUNC_ADPT_ARG(adapter)); @@ -16628,7 +15602,6 @@ int rtw_chk_start_clnt_join(_adapter *adapter, u8 *ch, u8 *bw, u8 *offset) struct dvobj_priv *dvobj; _adapter *iface; struct mlme_priv *mlme; - struct mlme_ext_priv *mlmeext; struct mi_state mstate; int i; @@ -16677,7 +15650,6 @@ int rtw_chk_start_clnt_join(_adapter *adapter, u8 *ch, u8 *bw, u8 *offset) for (i = 0; i < dvobj->iface_nums; i++) { iface = dvobj->padapters[i]; mlme = &iface->mlmepriv; - mlmeext = &iface->mlmeextpriv; if (check_fwstate(mlme, WIFI_STATION_STATE) && check_fwstate(mlme, WIFI_ASOC_STATE) @@ -16711,7 +15683,6 @@ connect_allow_hdl: for (i = 0; i < dvobj->iface_nums; i++) { iface = dvobj->padapters[i]; mlme = &iface->mlmepriv; - mlmeext = &iface->mlmeextpriv; if (!iface || iface == adapter) continue; @@ -16720,16 +15691,17 @@ connect_allow_hdl: if ((MLME_IS_AP(iface) || MLME_IS_MESH(iface)) && check_fwstate(mlme, WIFI_ASOC_STATE) ) { - #ifdef CONFIG_SPCT_CH_SWITCH - if (1) - rtw_ap_inform_ch_switch(iface, pmlmeext->cur_channel , pmlmeext->cur_ch_offset); - else - #endif if (rfctl->ap_csa_en == AP_CSA_DISABLE) rtw_sta_flush(iface, _FALSE); rtw_hal_set_hwreg(iface, HW_VAR_CHECK_TXBUF, 0); set_fwstate(mlme, WIFI_OP_CH_SWITCHING); + + /* Update RA mask of AP mode and resume beacon after CSA */ + if (rfctl->ap_csa_en != AP_CSA_DISABLE) { + rtw_csa_update_clients_ramask(iface); + ResumeTxBeacon(iface); + } } else #endif /* CONFIG_AP_MODE */ if (check_fwstate(mlme, WIFI_STATION_STATE) @@ -16744,12 +15716,8 @@ connect_allow_hdl: } #endif /* CONFIG_CONCURRENT_MODE */ - #ifdef CONFIG_80211D - rtw_joinbss_update_regulatory(adapter, &adapter->mlmeextpriv.mlmext_info.network); - #endif - - #ifdef CONFIG_DFS_MASTER - rtw_dfs_rd_en_decision(adapter, MLME_STA_CONNECTING, 0); + #if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ + rtw_dfs_rd_en_dec_on_mlme_act(adapter, NULL, MLME_STA_CONNECTING, 0); #endif exit: @@ -16759,6 +15727,7 @@ exit: u8 enable = 0; rfctl->ap_csa_en = AP_CSA_DISABLE; rtw_hal_set_hwreg(adapter, HW_VAR_BCN_EARLY_C2H_RPT, &enable); + RTW_INFO("csa : switch channel done, resume beacon and update RA of clients\n"); } #endif @@ -16859,422 +15828,20 @@ u8 rtw_set_chbw_hdl(_adapter *padapter, u8 *pbuf) rtw_mi_get_ch_setting_union(padapter, &u_ch, &u_bw, &u_offset); rtw_mi_update_union_chan_inf(padapter, u_ch, u_offset, u_bw); - rtw_rfctl_update_op_mode(dvobj_to_rfctl(dvobj), 0, 0); + rtw_rfctl_update_op_mode(dvobj_to_rfctl(dvobj), 0, 0, 0); return H2C_SUCCESS; } -static void get_str_of_set_chplan_keys(char *buf, u8 buf_len, struct SetChannelPlan_param *param) -{ - char *pos = buf; - -#ifdef CONFIG_80211D - if (param->has_cisr) { - pos += snprintf(pos, buf_len - (pos - buf), "alpha2:"ALPHA2_FMT" %s" - , ALPHA2_ARG(param->cisr.alpha2), cis_status_str(param->cisr.status)); - } else -#endif - if (param->has_country) - pos += snprintf(pos, buf_len - (pos - buf), "alpha2:"ALPHA2_FMT, ALPHA2_ARG(param->country_ent.alpha2)); - else { - if (param->channel_plan == RTW_CHPLAN_UNSPECIFIED) - pos += snprintf(pos, buf_len - (pos - buf), "chplan:NA"); - else - pos += snprintf(pos, buf_len - (pos - buf), "chplan:0x%02X", param->channel_plan); - - #if CONFIG_IEEE80211_BAND_6GHZ - if (param->channel_plan_6g == RTW_CHPLAN_6G_UNSPECIFIED) - pos += snprintf(pos, buf_len - (pos - buf), " chplan_6g:NA"); - else - pos += snprintf(pos, buf_len - (pos - buf), " chplan_6g:0x%02X", param->channel_plan_6g); - #endif - } -} - -#ifdef CONFIG_80211D -static bool rtw_chplan_rtk_priv_req_prehdl_country_ie(_adapter *adapter, struct SetChannelPlan_param *param, const char *caller) -{ - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - int i; - bool effected = 1; - -#ifdef CONFIG_RTW_DEBUG - if (rtw_drv_log_level >= _DRV_DEBUG_) { - RTW_PRINT("%s cisr before\n", caller); - dump_country_ie_slave_records(RTW_DBGDUMP, rfctl, 0); - } -#endif - - if (param->inr == RTW_REGD_SET_BY_USER - && rfctl->effected_cisr_id != CONFIG_IFACE_NUMBER - ) { - /* country IE setting is applied, user setting is only recorded but not applied */ - effected = 0; - goto exit; - } - - if (param->inr == RTW_REGD_SET_BY_COUNTRY_IE) { - struct country_ie_slave_record ori_cisr = rfctl->cisr[adapter->iface_id]; - struct country_ie_slave_record ori_ecisr; - u8 ori_ecisr_id = rfctl->effected_cisr_id; - u8 new_ecisr_id = CONFIG_IFACE_NUMBER; - u8 status_score[] = { /* conservative policy */ - [COUNTRY_IE_SLAVE_UNKNOWN] = 3, - [COUNTRY_IE_SLAVE_OPCH_NOEXIST] = 2, - [COUNTRY_IE_SLAVE_APPLICABLE] = 1, - }; - char buf[32]; - - if (_rtw_memcmp(&rfctl->cisr[adapter->iface_id], ¶m->cisr, sizeof(param->cisr)) == _TRUE) { - /* record no change */ - effected = 0; - goto exit; - } - - if (ori_ecisr_id != CONFIG_IFACE_NUMBER) - _rtw_memcpy(&ori_ecisr, &rfctl->cisr[ori_ecisr_id], sizeof(ori_ecisr)); - - _rtw_memcpy(&rfctl->cisr[adapter->iface_id], ¶m->cisr, sizeof(param->cisr)); - if ((ori_cisr.status == COUNTRY_IE_SLAVE_NOCOUNTRY - && rfctl->cisr[adapter->iface_id].status == COUNTRY_IE_SLAVE_NOCOUNTRY) - || (ori_cisr.status == COUNTRY_IE_SLAVE_UNKNOWN - && rfctl->cisr[adapter->iface_id].status == COUNTRY_IE_SLAVE_UNKNOWN) - ) { - /* will take no effect */ - effected = 0; - goto exit; - } - - for (i = 0; i < CONFIG_IFACE_NUMBER; i++) { - if (rfctl->cisr[i].status == COUNTRY_IE_SLAVE_NOCOUNTRY) - continue; - if (new_ecisr_id == CONFIG_IFACE_NUMBER - /* high score */ - || status_score[rfctl->cisr[i].status] > status_score[rfctl->cisr[new_ecisr_id].status] - /* same score, prefer the same alpha2 as current effected(same score) one */ - || (status_score[rfctl->cisr[i].status] == status_score[rfctl->cisr[new_ecisr_id].status] - && ori_ecisr_id != CONFIG_IFACE_NUMBER - && rfctl->cisr[ori_ecisr_id].status == rfctl->cisr[new_ecisr_id].status - && _rtw_memcmp(rfctl->cisr[ori_ecisr_id].alpha2, rfctl->cisr[new_ecisr_id].alpha2, 2) == _FALSE - && _rtw_memcmp(rfctl->cisr[ori_ecisr_id].alpha2, rfctl->cisr[i].alpha2, 2) == _TRUE) - ) - new_ecisr_id = i; - } - - rfctl->effected_cisr_id = new_ecisr_id; - - if (rfctl->effected_cisr_id == CONFIG_IFACE_NUMBER) { - /* no country IE setting */ - const char *alpha2; - - if (strncmp(rfctl->user_alpha2, "\x00\x00", 2) != 0) { - /* restore to user setting */ - param->inr = RTW_REGD_SET_BY_USER; - alpha2 = rfctl->user_alpha2; - param->channel_plan = rfctl->user_ChannelPlan; - #if CONFIG_IEEE80211_BAND_6GHZ - param->channel_plan_6g = rfctl->user_chplan_6g; - #endif - } else { - /* restore to init setting */ - param->inr = RTW_REGD_SET_BY_INIT; - alpha2 = rfctl->init_alpha2; - param->channel_plan = rfctl->init_ChannelPlan; - #if CONFIG_IEEE80211_BAND_6GHZ - param->channel_plan_6g = rfctl->init_chplan_6g; - #endif - } - - if (IS_ALPHA2_UNSPEC(alpha2) || IS_ALPHA2_WORLDWIDE(alpha2)) - param->has_country = 0; - else if (rtw_get_chplan_from_country(alpha2, ¶m->country_ent)) { - param->channel_plan = param->country_ent.chplan; - #if CONFIG_IEEE80211_BAND_6GHZ - param->channel_plan_6g = param->country_ent.chplan_6g; - #endif - param->has_country = 1; - } else { - RTW_WARN("%s unexpected country_code:\"%c%c\", set to \"00\"\n", caller, alpha2[0], alpha2[1]); - rtw_warn_on(1); - rtw_get_chplan_worldwide(¶m->country_ent); - param->channel_plan = param->country_ent.chplan; - #if CONFIG_IEEE80211_BAND_6GHZ - param->channel_plan_6g = param->country_ent.chplan_6g; - #endif - param->has_country = 1; - } - param->has_cisr = 0; - - get_str_of_set_chplan_keys(buf, 32, param); - RTW_INFO("%s restore inr:%s %s\n", caller, regd_inr_str(param->inr), buf); - } - else { - /* has country IE setting */ - if (ori_ecisr_id != CONFIG_IFACE_NUMBER) { - /* has country IE setting originally */ - if (_rtw_memcmp(&ori_ecisr, &rfctl->cisr[new_ecisr_id], sizeof(ori_ecisr)) == _TRUE) { - /* same record content, no effect */ - effected = 0; - goto exit; - } - } - rtw_get_chplan_from_cisrs(rfctl, ¶m->country_ent, caller); - param->channel_plan = param->country_ent.chplan; - #if CONFIG_IEEE80211_BAND_6GHZ - param->channel_plan_6g = param->country_ent.chplan_6g; - #endif - param->has_country = 1; - param->has_cisr = 0; - - get_str_of_set_chplan_keys(buf, 32, param); - RTW_INFO("%s trigger inr:%s %s\n", caller, regd_inr_str(param->inr), buf); - } - } - -exit: -#ifdef CONFIG_RTW_DEBUG - if (rtw_drv_log_level >= _DRV_DEBUG_) { - RTW_PRINT("%s cisr after\n", caller); - dump_country_ie_slave_records(RTW_DBGDUMP, rfctl, 0); - } -#endif - - return effected; -} -#endif /* CONFIG_80211D */ - -static bool rtw_chplan_rtk_priv_req_prehdl_domain_code(_adapter *adapter, struct SetChannelPlan_param *param, const char *caller) -{ - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - - /* disallow invalid input */ - if ((param->channel_plan != RTW_CHPLAN_UNSPECIFIED - && !rtw_is_channel_plan_valid(param->channel_plan)) - ) { - RTW_WARN("%s invalid chplan:0x%02X\n", caller, param->channel_plan); - return _FAIL; - } - - #if CONFIG_IEEE80211_BAND_6GHZ - if (param->channel_plan_6g != RTW_CHPLAN_6G_UNSPECIFIED - && !rtw_is_channel_plan_6g_valid(param->channel_plan_6g) - ) { - RTW_WARN("%s invalid chplan_6g:0x%02X\n", caller, param->channel_plan_6g); - return _FAIL; - } - #endif - - /* use original value when unspecified */ - if (param->channel_plan == RTW_CHPLAN_UNSPECIFIED) - param->channel_plan = rfctl->ChannelPlan; - #if CONFIG_IEEE80211_BAND_6GHZ - if (param->channel_plan_6g == RTW_CHPLAN_6G_UNSPECIFIED) - param->channel_plan_6g = rfctl->chplan_6g; - #endif - - return _SUCCESS; -} - -static void rtw_chplan_rtk_priv_req_prehdl_country_ent(struct SetChannelPlan_param *param) -{ - if (!param->has_country) { - u8 chplan_6g = RTW_CHPLAN_6G_NULL; - - #if CONFIG_IEEE80211_BAND_6GHZ - chplan_6g = param->channel_plan_6g; - #endif - - if (rtw_chplan_ids_is_world_wide(param->channel_plan, chplan_6g)) - rtw_get_chplan_worldwide(¶m->country_ent); - else { - SET_UNSPEC_ALPHA2(param->country_ent.alpha2); - param->country_ent.edcca_mode_2g_override = RTW_EDCCA_DEF; - #if CONFIG_IEEE80211_BAND_5GHZ - param->country_ent.edcca_mode_5g_override = RTW_EDCCA_DEF; - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - param->country_ent.edcca_mode_6g_override = RTW_EDCCA_DEF; - #endif - param->country_ent.txpwr_lmt_override = TXPWR_LMT_DEF; - #if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) - param->country_ent.proto_en = CHPLAN_PROTO_EN_ALL; - #endif - } - param->has_country = 1; - } -} - -u8 rtw_set_chplan_hdl(_adapter *padapter, unsigned char *pbuf) -{ - struct SetChannelPlan_param *param; - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - bool effected = 1; - char buf[32]; - enum rtw_regd_inr ori_inr; -#ifdef CONFIG_IOCTL_CFG80211 - struct get_chplan_resp *chplan; -#endif - - if (!pbuf) - return H2C_PARAMETERS_ERROR; - - param = (struct SetChannelPlan_param *)pbuf; - ori_inr = param->inr; - - get_str_of_set_chplan_keys(buf, 32, param); - RTW_INFO("%s iface_id:%u src:%s inr:%s %s\n", __func__, padapter->iface_id - , regd_src_str(param->regd_src), regd_inr_str(param->inr), buf); - - /* check input parameter */ - if (param->regd_src == REGD_SRC_RTK_PRIV) { - #ifdef CONFIG_80211D - effected = rtw_chplan_rtk_priv_req_prehdl_country_ie(padapter, param, __func__); - #endif - - if (rtw_chplan_rtk_priv_req_prehdl_domain_code(padapter, param, __func__) != _SUCCESS) - return H2C_PARAMETERS_ERROR; - - rtw_chplan_rtk_priv_req_prehdl_country_ent(param); - } - - rtw_warn_on(!param->has_country); - - if (param->inr == RTW_REGD_SET_BY_USER) { - rfctl->user_alpha2[0] = param->country_ent.alpha2[0]; - rfctl->user_alpha2[1] = param->country_ent.alpha2[1]; - rfctl->user_ChannelPlan = param->channel_plan; - #if CONFIG_IEEE80211_BAND_6GHZ - rfctl->user_chplan_6g = param->channel_plan_6g; - #endif - } - - if (!effected) - goto exit; - - rfctl->regd_src = param->regd_src; - rfctl->regd_inr = param->inr; - rfctl->alpha2[0] = param->country_ent.alpha2[0]; - rfctl->alpha2[1] = param->country_ent.alpha2[1]; - rfctl->edcca_mode_2g_override = param->country_ent.edcca_mode_2g_override; -#if CONFIG_IEEE80211_BAND_5GHZ - rfctl->edcca_mode_5g_override = param->country_ent.edcca_mode_5g_override; -#endif -#if CONFIG_IEEE80211_BAND_6GHZ - rfctl->edcca_mode_6g_override = param->country_ent.edcca_mode_6g_override; -#endif -#if CONFIG_TXPWR_LIMIT - rfctl->txpwr_lmt_override = param->country_ent.txpwr_lmt_override; -#endif -#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) - rfctl->proto_en = param->country_ent.proto_en; -#endif - - rfctl->ChannelPlan = param->channel_plan; -#if CONFIG_IEEE80211_BAND_6GHZ - rfctl->chplan_6g = param->channel_plan_6g; -#endif - -#if CONFIG_TXPWR_LIMIT - rtw_txpwr_init_regd(rfctl); -#endif - - rtw_edcca_mode_update(rfctl_to_dvobj(rfctl)); - rtw_odm_adaptivity_update(rfctl_to_dvobj(rfctl)); - - rtw_rfctl_chplan_init(padapter); - -#ifdef CONFIG_IOCTL_CFG80211 - if (rfctl->regd_src != REGD_SRC_OS) - rtw_chset_hook_os_channels(rfctl); - - if (rtw_get_chplan_cmd(padapter, RTW_CMDF_DIRECTLY, &chplan) == _SUCCESS) { - if (!param->rtnl_lock_needed) - rtw_regd_change_complete_sync(adapter_to_wiphy(padapter), chplan, 0); - else - rtw_warn_on(rtw_regd_change_complete_async(adapter_to_wiphy(padapter), chplan) != _SUCCESS); - } else - rtw_warn_on(1); -#endif - - rtw_nlrtw_reg_change_event(padapter); - - #ifdef CONFIG_LPS - LPS_Leave(padapter, "SET_CHPLAN"); - #endif - - if (GET_HAL_DATA(padapter)->txpwr_limit_loaded - && rtw_get_hw_init_completed(padapter)) - rtw_hal_update_txpwr_level(padapter); - -exit: - return H2C_SUCCESS; -} - -u8 rtw_get_chplan_hdl(_adapter *padapter, unsigned char *pbuf) -{ - struct get_channel_plan_param *param; - struct get_chplan_resp *chplan; - struct rf_ctl_t *rfctl; - int i; - - if (!pbuf) - return H2C_PARAMETERS_ERROR; - - rfctl = adapter_to_rfctl(padapter); - param = (struct get_channel_plan_param *)pbuf; - - chplan = rtw_vmalloc(sizeof(struct get_chplan_resp) + sizeof(RT_CHANNEL_INFO) * rfctl->max_chan_nums); - if (!chplan) - return H2C_CMD_FAIL; - - chplan->regd_src = rfctl->regd_src; - chplan->regd_inr = rfctl->regd_inr; - - chplan->alpha2[0] = rfctl->alpha2[0]; - chplan->alpha2[1] = rfctl->alpha2[1]; - - chplan->channel_plan = rfctl->ChannelPlan; -#if CONFIG_IEEE80211_BAND_6GHZ - chplan->chplan_6g = rfctl->chplan_6g; -#endif -#if CONFIG_TXPWR_LIMIT - for (i = 0; i < BAND_MAX; i++) - chplan->txpwr_lmt_name[i] = rfctl->txpwr_lmt_name[i]; -#endif - chplan->edcca_mode_2g = rfctl->edcca_mode_2g; -#if CONFIG_IEEE80211_BAND_5GHZ - chplan->edcca_mode_5g = rfctl->edcca_mode_5g; -#endif -#if CONFIG_IEEE80211_BAND_6GHZ - chplan->edcca_mode_6g = rfctl->edcca_mode_6g; -#endif -#ifdef CONFIG_DFS_MASTER - chplan->dfs_domain = rtw_rfctl_get_dfs_domain(rfctl); -#endif - - chplan->proto_en = 0 - #if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) - | rfctl->proto_en - #endif - ; - - chplan->chset_num = rfctl->max_chan_nums; - _rtw_memcpy(chplan->chset, rfctl->channel_set, sizeof(RT_CHANNEL_INFO) * rfctl->max_chan_nums); - *param->chplan = chplan; - - return H2C_SUCCESS; -} - u8 led_blink_hdl(_adapter *padapter, unsigned char *pbuf) { +#ifdef CONFIG_RTW_LED_HANDLED_BY_CMD_THREAD struct LedBlink_param *ledBlink_param; if (!pbuf) return H2C_PARAMETERS_ERROR; ledBlink_param = (struct LedBlink_param *)pbuf; - -#ifdef CONFIG_RTW_LED_HANDLED_BY_CMD_THREAD BlinkHandler((PLED_DATA)ledBlink_param->pLed); #endif @@ -17293,9 +15860,14 @@ void csa_timer_hdl(void *FunctionContext) iface = dvobj->padapters[i]; if (!iface) continue; + + if (check_fwstate(&(iface->mlmepriv), WIFI_CSA_SKIP_CHECK_BEACON)) + clr_fwstate(&(iface->mlmepriv), WIFI_CSA_SKIP_CHECK_BEACON); + if (check_fwstate(&(iface->mlmepriv), WIFI_CSA_UPDATE_BEACON)) { clr_fwstate(&(iface->mlmepriv), WIFI_CSA_UPDATE_BEACON); - RTW_INFO(FUNC_ADPT_FMT" wait beacons more than 70 seconds\n", FUNC_ADPT_ARG(iface)); + RTW_INFO(FUNC_ADPT_FMT" wait beacon timeout, clear state " + "WIFI_CSA_UPDATE_BEACON\n", FUNC_ADPT_ARG(iface)); return; } } @@ -17347,6 +15919,207 @@ u8 set_ap_csa_hdl(_adapter *adapter, unsigned char *pbuf) return H2C_SUCCESS; } +u8 bcn_control_hdl(_adapter *adapter, unsigned char *pbuf) +{ +#ifdef CONFIG_AP_MODE + struct bcn_control_param *param; + + if (!pbuf) + return H2C_PARAMETERS_ERROR; + + param = (struct bcn_control_param*)pbuf; + if (param->control == 0) + StopTxBeacon(adapter); + else + ResumeTxBeacon(adapter); +#endif + return H2C_SUCCESS; +} + +void rtw_update_mlme(_adapter *adapter, u8 *frame, u32 frame_len) +{ + unsigned int i; + PNDIS_802_11_VARIABLE_IEs pIE; + + for (i = 0; i < frame_len;) { + pIE = (PNDIS_802_11_VARIABLE_IEs)(frame + i); + + switch (pIE->ElementID) { + case _VENDOR_SPECIFIC_IE_: + if (_rtw_memcmp(pIE->data, WMM_PARA_OUI, 6)) /* WMM */ + WMM_param_handler(adapter, pIE); +#if defined(CONFIG_P2P) && defined(CONFIG_WFD) + else if (_rtw_memcmp(pIE->data, WFD_OUI, 4)) /* WFD */ + rtw_process_wfd_ie(adapter, (u8 *)pIE, pIE->Length, __func__); +#endif + break; + + case _HT_CAPABILITY_IE_: /* HT caps */ + HT_caps_handler(adapter, pIE); + #ifdef ROKU_PRIVATE + HT_caps_handler_infra_ap(adapter, pIE); + #endif /* ROKU_PRIVATE */ + break; + + case _HT_EXTRA_INFO_IE_: /* HT info */ + HT_info_handler(adapter, pIE); + break; + +#ifdef CONFIG_80211AC_VHT + case EID_VHTCapability: + VHT_caps_handler(adapter, pIE); + #ifdef ROKU_PRIVATE + VHT_caps_handler_infra_ap(adapter, pIE); + #endif /* ROKU_PRIVATE */ + break; + + case EID_VHTOperation: + VHT_operation_handler(adapter, pIE); + break; +#endif /* CONFIG_80211AC_VHT */ + + case _ERPINFO_IE_: + ERP_IE_handler(adapter, pIE); + break; + +#ifdef CONFIG_TDLS + case WLAN_EID_EXT_CAP: + if (check_ap_tdls_prohibited(pIE->data, pIE->Length) == _TRUE) + adapter->tdlsinfo.ap_prohibited = _TRUE; + if (check_ap_tdls_ch_switching_prohibited(pIE->data, pIE->Length) == _TRUE) + adapter->tdlsinfo.ch_switch_prohibited = _TRUE; + break; +#endif /* CONFIG_TDLS */ + +#ifdef CONFIG_RTW_80211K + case _EID_RRM_EN_CAP_IE_: + RM_IE_handler(adapter, pIE); + break; +#endif + +#ifdef ROKU_PRIVATE + /* Infra mode, used to store AP's info , Parse the supported rates from AssocRsp */ + case _SUPPORTEDRATES_IE_: + Supported_rate_infra_ap(adapter, pIE); + break; + + case _EXT_SUPPORTEDRATES_IE_: + Extended_Supported_rate_infra_ap(adapter, pIE); + break; +#endif /* ROKU_PRIVATE */ + default: + break; + } + + i += (pIE->Length + 2); + } +} + +/* Reference from OnAssocRsp() */ +static void rtw_csa_parse_beacon_ie(_adapter *adapter) +{ + WLAN_BSSID_EX *cur_network = &(adapter->mlmepriv.cur_network.network); + u8 *bcn_ie = cur_network->IEs + _BEACON_IE_OFFSET_; + u32 bcn_len = cur_network->IELength - _BEACON_IE_OFFSET_; + + rtw_update_mlme(adapter, bcn_ie, bcn_len); +} + +/* Reference from rtw_joinbss_update_stainfo() and update_sta_info() */ +static void rtw_csa_sta_update_stainfo(_adapter *adapter, struct sta_info *psta) +{ + struct mlme_ext_priv *pmlmeext = &(adapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + WLAN_BSSID_EX *cur_network = &(adapter->mlmepriv.cur_network.network); + + update_wireless_mode(adapter); + psta->wireless_mode = pmlmeext->cur_wireless_mode; + rtw_hal_update_sta_wset(adapter, psta); + + /* update supported rate */ + psta->bssratelen = rtw_get_rateset_len(cur_network->SupportedRates); + _rtw_memcpy(psta->bssrateset, cur_network->SupportedRates, psta->bssratelen); + + /* update supported MCS set */ + #ifdef CONFIG_80211N_HT + if (pmlmepriv->htpriv.ht_option) { + psta->htpriv.ht_option = _TRUE; + _rtw_memcpy(psta->htpriv.ht_cap.supp_mcs_set, + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, 16); + } else { + psta->htpriv.ht_option = _FALSE; + _rtw_memset(&(psta->htpriv), 0, sizeof(struct ht_priv)); + } + #endif + + /* update all VHT IEs includes VHT supported MCS set */ + #ifdef CONFIG_80211AC_VHT + if (pmlmepriv->vhtpriv.vht_option) { + psta->vhtpriv.vht_option = _TRUE; + _rtw_memcpy(&psta->vhtpriv, &pmlmepriv->vhtpriv, sizeof(struct vht_priv)); + } else { + psta->vhtpriv.vht_option = _FALSE; + _rtw_memset(&(psta->vhtpriv), 0, sizeof(struct vht_priv)); + } + psta->cmn.ra_info.is_vht_enable = psta->vhtpriv.vht_option; + #endif + + rtw_hal_update_sta_ra_info(adapter, psta); + + psta->cmn.bw_mode = pmlmeext->cur_bwmode; + #ifdef CONFIG_80211N_HT + psta->htpriv.ch_offset = pmlmeext->cur_ch_offset; + #endif +} + +u8 rtw_csa_sta_update_cap_hdl(_adapter *adapter, unsigned char *pbuf) +{ + struct sta_info *psta = NULL; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + struct mlme_ext_info *pmlmeinfo = &(adapter->mlmeextpriv.mlmext_info); + struct beacon_keys *cur_beacon = &(pmlmepriv->cur_beacon_keys); + + RTW_INFO(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(adapter)); + psta = rtw_get_stainfo(&adapter->stapriv, get_bssid(&adapter->mlmepriv)); + if (psta == NULL) { + RTW_ERR("csa : "FUNC_ADPT_FMT", update sta_info fail\n", + FUNC_ADPT_ARG(adapter)); + return H2C_SUCCESS; + } + + #ifdef CONFIG_80211N_HT + if (cur_beacon->proto_cap & PROTO_CAP_11N) { + pmlmepriv->htpriv.ht_option = _TRUE; + pmlmeinfo->HT_enable = _TRUE; + } else { + pmlmepriv->htpriv.ht_option = _FALSE; + pmlmeinfo->HT_enable = _FALSE; + } + #endif + + #ifdef CONFIG_80211AC_VHT + if (cur_beacon->proto_cap & PROTO_CAP_11AC) { + pmlmepriv->vhtpriv.vht_option = _TRUE; + pmlmeinfo->VHT_enable = _TRUE; + } else { + pmlmepriv->vhtpriv.vht_option = _FALSE; + pmlmeinfo->VHT_enable = _FALSE; + } + #endif + + /* parse new beacon ie from current network to update protocol information */ + rtw_csa_parse_beacon_ie(adapter); + + /* update sta_info from protocol information */ + rtw_csa_sta_update_stainfo(adapter, psta); + + /* update RA mask */ + set_sta_rate(adapter, psta); + + return H2C_SUCCESS; +} + u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf) { #ifdef CONFIG_TDLS @@ -17365,7 +16138,7 @@ u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf) struct tdls_txmgmt txmgmt; u32 setchtime, resp_sleep = 0, wait_time; u8 zaddr[ETH_ALEN] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - u8 ret; + u8 ret = H2C_SUCCESS; u8 doiqk; u64 tx_ra_bitmap = 0; @@ -17394,7 +16167,12 @@ u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf) u8 sta_band = 0; /* leave ALL PS when TDLS is established */ - rtw_pwr_wakeup(padapter); + if (_FAIL == rtw_pwr_wakeup(padapter)) { + RTW_INFO("%s(): rtw_pwr_wakeup fail !!!\n", __func__); + rtw_tdls_cmd(padapter, ptdls_sta->cmn.mac_addr, TDLS_TEARDOWN_STA); + ret = H2C_REJECTED; + break; + } rtw_hal_rcr_set_chk_bssid(padapter, MLME_TDLS_LINKED); RTW_INFO("Created Direct Link with "MAC_FMT"\n", MAC_ARG(ptdls_sta->cmn.mac_addr)); @@ -17452,7 +16230,8 @@ u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf) issue_nulldata(padapter, NULL, 1, 3, 3); RTW_INFO("[TDLS ] issue tdls channel switch response\n"); - ret = issue_tdls_ch_switch_rsp(padapter, &txmgmt, _TRUE); + ret = (issue_tdls_ch_switch_rsp(padapter, &txmgmt, _TRUE) == _SUCCESS) ? + H2C_SUCCESS : H2C_REJECTED; /* If we receive TDLS_CH_SW_REQ at off channel which it's target is AP's channel */ /* then we just switch to AP's channel*/ @@ -17461,7 +16240,7 @@ u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf) break; } - if (ret == _SUCCESS) + if (ret == H2C_SUCCESS) rtw_tdls_cmd(padapter, ptdls_sta->cmn.mac_addr, TDLS_CH_SW_TO_OFF_CHNL); else RTW_INFO("[TDLS] issue_tdls_ch_switch_rsp wait ack fail !!!!!!!!!!\n"); @@ -17562,9 +16341,13 @@ u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf) rtw_hal_rcr_set_chk_bssid(padapter, MLME_TDLS_NOLINK); break; case TDLS_TEARDOWN_STA: + case TDLS_TEARDOWN_STA_TOOFAR: case TDLS_TEARDOWN_STA_NO_WAIT: _rtw_memset(&txmgmt, 0x00, sizeof(struct tdls_txmgmt)); - txmgmt.status_code = _RSON_TDLS_TEAR_UN_RSN_; + if (option == TDLS_TEARDOWN_STA_TOOFAR) + txmgmt.status_code = _RSON_TDLS_TEAR_TOOFAR_; + else + txmgmt.status_code = _RSON_TDLS_TEAR_UN_RSN_; _rtw_memcpy(txmgmt.peer, ptdls_sta->cmn.mac_addr, ETH_ALEN); issue_tdls_teardown(padapter, &txmgmt, (option == TDLS_TEARDOWN_STA) ? _TRUE : _FALSE); @@ -17595,7 +16378,7 @@ u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf) /* _exit_critical_bh(&(ptdlsinfo->hdl_lock), &irqL); */ - return H2C_SUCCESS; + return ret; #else return H2C_REJECTED; #endif /* CONFIG_TDLS */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_mp.c b/drivers/net/wireless/rtl8822cs/core/rtw_mp.c index 0c5b11e40..7836130ea 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_mp.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_mp.c @@ -227,7 +227,7 @@ s32 init_mp_priv(PADAPTER padapter) _init_mp_priv_(pmppriv); pmppriv->papdater = padapter; - if (IS_HARDWARE_TYPE_8822C(padapter)) + if (IS_HARDWARE_TYPE_8822C(padapter) || IS_HARDWARE_TYPE_8822E(padapter)) pmppriv->mp_dm = 1;/* default enable dpk tracking */ else pmppriv->mp_dm = 0; @@ -403,6 +403,20 @@ void mpt_InitHWConfig(PADAPTER Adapter) */ } #endif +#if defined(CONFIG_RTL8822E) + else if( IS_HARDWARE_TYPE_8822E(Adapter)) { + rtw_write16(Adapter, REG_RXFLTMAP1_8822E, 0x2000); + /* 0x7D8[31] : time out enable when cca is not assert + 0x60D[7:0] : time out value (Unit : us)*/ + rtw_write8(Adapter, 0x7db, 0xc0); + RTW_INFO(" 0x7d8 = 0x%x\n", rtw_read8(Adapter, 0x7d8)); + rtw_write8(Adapter, 0x60d, 0x0c); + RTW_INFO(" 0x60d = 0x%x\n", rtw_read8(Adapter, 0x60d)); + phy_set_bb_reg(Adapter, 0x1c44, BIT10, 0x1); + RTW_INFO(" 0x1c44 = 0x%x\n", phy_query_bb_reg(Adapter, 0x1c44, bMaskDWord)); + } +#endif + } static void PHY_IQCalibrate(PADAPTER padapter, u8 bReCovery) @@ -531,6 +545,10 @@ static void PHY_SetRFPathSwitch(PADAPTER padapter , BOOLEAN bMain) { } else if (IS_HARDWARE_TYPE_8723F(padapter)) { #ifdef CONFIG_RTL8723F phy_set_rf_path_switch_8723f(phydm, bMain); +#endif + } else if (IS_HARDWARE_TYPE_8822E(padapter)) { +#ifdef CONFIG_RTL8822E + phy_set_rf_path_switch_8822e(phydm, bMain); #endif } } @@ -784,7 +802,7 @@ void MPT_PwrCtlDM(PADAPTER padapter, u32 trk_type) halrf_cmn_info_set(pDM_Odm, HALRF_CMNINFO_POWER_TRACK_CONTROL, trk_type); halrf_set_pwr_track(pDM_Odm, FALSE); pDM_Odm->rf_calibrate_info.txpowertrack_control = trk_type; - if (IS_HARDWARE_TYPE_8822C(padapter)) + if (IS_HARDWARE_TYPE_8822C(padapter) || IS_HARDWARE_TYPE_8822E(padapter)) padapter->mppriv.mp_dm = 1; /* default enable dpk tracking */ else padapter->mppriv.mp_dm = 0; @@ -824,7 +842,7 @@ void MPT_PwrCtlDM(PADAPTER padapter, u32 trk_type) u32 mp_join(PADAPTER padapter, u8 mode) { - WLAN_BSSID_EX bssid; + WLAN_BSSID_EX *bssid = NULL; struct sta_info *psta; u32 length; _irqL irqL; @@ -838,31 +856,33 @@ u32 mp_join(PADAPTER padapter, u8 mode) WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX *)(&(pmlmeinfo->network)); /* 1. initialize a new WLAN_BSSID_EX */ - _rtw_memset(&bssid, 0, sizeof(WLAN_BSSID_EX)); + bssid = (WLAN_BSSID_EX *)rtw_zmalloc(sizeof(WLAN_BSSID_EX)); + if (!bssid) + return _FAIL; RTW_INFO("%s ,pmppriv->network_macaddr=%x %x %x %x %x %x\n", __func__, pmppriv->network_macaddr[0], pmppriv->network_macaddr[1], pmppriv->network_macaddr[2], pmppriv->network_macaddr[3], pmppriv->network_macaddr[4], pmppriv->network_macaddr[5]); - _rtw_memcpy(bssid.MacAddress, pmppriv->network_macaddr, ETH_ALEN); + _rtw_memcpy(bssid->MacAddress, pmppriv->network_macaddr, ETH_ALEN); if (mode == WIFI_FW_ADHOC_STATE) { - bssid.Ssid.SsidLength = strlen("mp_pseudo_adhoc"); - _rtw_memcpy(bssid.Ssid.Ssid, (u8 *)"mp_pseudo_adhoc", bssid.Ssid.SsidLength); - bssid.InfrastructureMode = Ndis802_11IBSS; - bssid.IELength = 0; - bssid.Configuration.DSConfig = pmppriv->channel; + bssid->Ssid.SsidLength = strlen("mp_pseudo_adhoc"); + _rtw_memcpy(bssid->Ssid.Ssid, (u8 *)"mp_pseudo_adhoc", bssid->Ssid.SsidLength); + bssid->InfrastructureMode = Ndis802_11IBSS; + bssid->IELength = 0; + bssid->Configuration.DSConfig = pmppriv->channel; } else if (mode == WIFI_FW_STATION_STATE) { - bssid.Ssid.SsidLength = strlen("mp_pseudo_STATION"); - _rtw_memcpy(bssid.Ssid.Ssid, (u8 *)"mp_pseudo_STATION", bssid.Ssid.SsidLength); - bssid.InfrastructureMode = Ndis802_11Infrastructure; - bssid.IELength = 0; + bssid->Ssid.SsidLength = strlen("mp_pseudo_STATION"); + _rtw_memcpy(bssid->Ssid.Ssid, (u8 *)"mp_pseudo_STATION", bssid->Ssid.SsidLength); + bssid->InfrastructureMode = Ndis802_11Infrastructure; + bssid->IELength = 0; } - length = get_WLAN_BSSID_EX_sz(&bssid); + length = get_WLAN_BSSID_EX_sz(bssid); if (length % 4) - bssid.Length = ((length >> 2) + 1) << 2; /* round up to multiple of 4 bytes. */ + bssid->Length = ((length >> 2) + 1) << 2; /* round up to multiple of 4 bytes. */ else - bssid.Length = length; + bssid->Length = length; _enter_critical_bh(&pmlmepriv->lock, &irqL); @@ -887,7 +907,7 @@ u32 mp_join(PADAPTER padapter, u8 mode) if (psta) rtw_free_stainfo(padapter, psta); - psta = rtw_alloc_stainfo(&padapter->stapriv, bssid.MacAddress); + psta = rtw_alloc_stainfo(&padapter->stapriv, bssid->MacAddress); if (psta == NULL) { /*pmlmepriv->fw_state = pmppriv->prev_fw_state;*/ init_fwstate(pmlmepriv, pmppriv->prev_fw_state); @@ -902,7 +922,7 @@ u32 mp_join(PADAPTER padapter, u8 mode) tgt_network->join_res = 1; tgt_network->aid = psta->cmn.aid = 1; - _rtw_memcpy(&padapter->registrypriv.dev_network, &bssid, length); + _rtw_memcpy(&padapter->registrypriv.dev_network, bssid, length); rtw_update_registrypriv_dev_network(padapter); _rtw_memcpy(&tgt_network->network, &padapter->registrypriv.dev_network, padapter->registrypriv.dev_network.Length); _rtw_memcpy(pnetwork, &padapter->registrypriv.dev_network, padapter->registrypriv.dev_network.Length); @@ -914,7 +934,8 @@ u32 mp_join(PADAPTER padapter, u8 mode) end_of_mp_start_test: _exit_critical_bh(&pmlmepriv->lock, &irqL); - + if (bssid) + rtw_mfree(bssid, sizeof(WLAN_BSSID_EX)); if (1) { /* (res == _SUCCESS) */ /* set MSR to WIFI_FW_ADHOC_STATE */ if (mode == WIFI_FW_ADHOC_STATE) { @@ -2028,6 +2049,12 @@ void SetPacketTx(PADAPTER padapter) rtl8723f_prepare_mp_txdesc(padapter, pmp_priv); #endif /* CONFIG_RTL8723F */ +#if defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822E(padapter)) + rtl8822e_prepare_mp_txdesc(padapter, pmp_priv); +#endif /* CONFIG_RTL8822E */ + + /* 3 4. make wlan header, make_wlanhdr() */ hdr = (struct rtw_ieee80211_hdr *)pkt_start; set_frame_sub_type(&hdr->frame_ctl, pattrib->subtype); @@ -2146,7 +2173,8 @@ void SetPacketRx(PADAPTER pAdapter, u8 bStartRx, u8 bAB) pHalData->ReceiveConfig |= RCR_CBSSID_DATA | RCR_CBSSID_BCN |RCR_APM | RCR_AM | RCR_AB |RCR_AMF; pHalData->ReceiveConfig |= RCR_APP_PHYST_RXFF; -#if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) +#if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) \ + || defined(CONFIG_RTL8822E) /* todo: 8723F */ write_bbreg(pAdapter, 0x550, BIT3, bEnable); #endif @@ -2471,7 +2499,8 @@ u32 mp_query_psd(PADAPTER pAdapter, u8 *data) psd_stop = 1920; } - if (IS_HARDWARE_TYPE_8822C(pAdapter) || IS_HARDWARE_TYPE_8723F(pAdapter)) { + if (IS_HARDWARE_TYPE_8822C(pAdapter) || IS_HARDWARE_TYPE_8723F(pAdapter) + || IS_HARDWARE_TYPE_8822E(pAdapter)) { u32 *psdbuf = rtw_zmalloc(sizeof(u32)*256); if (psdbuf == NULL) { @@ -3994,4 +4023,12 @@ void VHT_Delimiter_generator( } #endif + +#ifdef RTW_HALMAC +int SetGpio(PADAPTER pAdapter, u8 gpio_id, u8 gpio_enable, u8 gpio_func_offset, u8 gpio_mode) +{ + return hal_mpt_SetGpio(pAdapter, gpio_id, gpio_enable, gpio_func_offset, gpio_mode); +} +#endif + #endif diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_odm.c b/drivers/net/wireless/rtl8822cs/core/rtw_odm.c index cd2e5bbbc..80c7b35b6 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_odm.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_odm.c @@ -64,96 +64,60 @@ void rtw_odm_init_ic_type(_adapter *adapter) odm_cmn_info_init(odm, ODM_CMNINFO_IC_TYPE, ic_type); } -void rtw_odm_adaptivity_ver_msg(void *sel, _adapter *adapter) +static bool rtw_edcca_hal_mode_supported(struct dvobj_priv* dvobj, enum rtw_edcca_mode_t mode) { - RTW_PRINT_SEL(sel, "ADAPTIVITY_VERSION "ADAPTIVITY_VERSION"\n"); + return mode <= RTW_EDCCA_ADAPT; } -#define RTW_ADAPTIVITY_EN_DISABLE 0 -#define RTW_ADAPTIVITY_EN_ENABLE 1 -#define RTW_ADAPTIVITY_EN_AUTO 2 - -void rtw_odm_adaptivity_en_msg(void *sel, _adapter *adapter) -{ - struct registry_priv *regsty = &adapter->registrypriv; - - RTW_PRINT_SEL(sel, "RTW_ADAPTIVITY_EN_"); - - if (regsty->adaptivity_en == RTW_ADAPTIVITY_EN_DISABLE) - _RTW_PRINT_SEL(sel, "DISABLE\n"); - else if (regsty->adaptivity_en == RTW_ADAPTIVITY_EN_ENABLE) - _RTW_PRINT_SEL(sel, "ENABLE\n"); - else if (regsty->adaptivity_en == RTW_ADAPTIVITY_EN_AUTO) - _RTW_PRINT_SEL(sel, "AUTO\n"); - else - _RTW_PRINT_SEL(sel, "INVALID\n"); -} - -#define RTW_ADAPTIVITY_MODE_NORMAL 0 -#define RTW_ADAPTIVITY_MODE_CARRIER_SENSE 1 - -void rtw_odm_adaptivity_mode_msg(void *sel, _adapter *adapter) -{ - struct registry_priv *regsty = &adapter->registrypriv; - - if (regsty->adaptivity_en != RTW_ADAPTIVITY_EN_ENABLE) - return; - - RTW_PRINT_SEL(sel, "RTW_ADAPTIVITY_MODE_"); - - if (regsty->adaptivity_mode == RTW_ADAPTIVITY_MODE_NORMAL) - _RTW_PRINT_SEL(sel, "NORMAL\n"); - else if (regsty->adaptivity_mode == RTW_ADAPTIVITY_MODE_CARRIER_SENSE) - _RTW_PRINT_SEL(sel, "CARRIER_SENSE\n"); - else - _RTW_PRINT_SEL(sel, "INVALID\n"); -} - -void rtw_odm_adaptivity_config_msg(void *sel, _adapter *adapter) -{ - rtw_odm_adaptivity_ver_msg(sel, adapter); - rtw_odm_adaptivity_en_msg(sel, adapter); - rtw_odm_adaptivity_mode_msg(sel, adapter); -} - -bool rtw_odm_adaptivity_needed(_adapter *adapter) -{ - struct registry_priv *regsty = &adapter->registrypriv; - bool ret = _FALSE; - - if (regsty->adaptivity_en) - ret = _TRUE; - - return ret; -} - -void rtw_odm_adaptivity_update(struct dvobj_priv *dvobj) +void rtw_edcca_hal_update(struct dvobj_priv *dvobj) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); struct dm_struct *odm = dvobj_to_phydm(dvobj); - u8 edcca_mode = RTW_EDCCA_NORMAL; + u8 mode; + BAND_TYPE band; + u8 uch; - if (hal_data->current_band_type == BAND_ON_2_4G) - edcca_mode = rfctl->edcca_mode_2g; - #if CONFIG_IEEE80211_BAND_5GHZ - else if (hal_data->current_band_type == BAND_ON_5G) - edcca_mode = rfctl->edcca_mode_5g; - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - else if (hal_data->current_band_type == BAND_ON_6G) - edcca_mode = rfctl->edcca_mode_6g; - #endif +#ifndef CONFIG_DIRECT_EDCCA_MODE_SETTING + if (rtw_mi_get_ch_setting_union(dvobj_get_primary_adapter(dvobj), &uch, NULL, NULL)) { + band = uch > 14 ? BAND_ON_5G : BAND_ON_2_4G; + rfctl->last_edcca_mode_op_band = band; + } else if (rfctl->last_edcca_mode_op_band != BAND_MAX) + band = rfctl->last_edcca_mode_op_band; + else +#endif + band = hal_data->current_band_type; - rfctl->adaptivity_en = (edcca_mode == RTW_EDCCA_NORMAL || edcca_mode == RTW_EDCCA_MODE_NUM) ? 0 : 1; - phydm_adaptivity_info_init(odm, PHYDM_ADAPINFO_CARRIER_SENSE_ENABLE, edcca_mode == RTW_EDCCA_CS ? TRUE : FALSE); + mode = rtw_get_edcca_mode(dvobj, band); + /* + * may get band not existing in current channel plan + * then edcca mode RTW_EDCCA_MODE_NUM is got + * this is not a real problem because this band is not used for TX + * change to RTW_EDCCA_NORM to avoid warning calltrace below + */ + if (mode == RTW_EDCCA_MODE_NUM) + mode = RTW_EDCCA_NORM; + + if (!rtw_edcca_hal_mode_supported(dvobj, mode)) { + RTW_WARN("%s %s edcca mode %s is not supported by HAL, set to %s\n", __func__ + , band_str(band), rtw_edcca_mode_str(mode), rtw_edcca_mode_str(RTW_EDCCA_NORM)); + mode = RTW_EDCCA_NORM; + } + + rfctl->adaptivity_en = mode == RTW_EDCCA_NORM ? false : true; + phydm_adaptivity_info_init(odm, PHYDM_ADAPINFO_CARRIER_SENSE_ENABLE, mode == RTW_EDCCA_CS ? true : false); +} + +void rtw_odm_adaptivity_ver_msg(void *sel, _adapter *adapter) +{ + RTW_PRINT_SEL(sel, "ADAPTIVITY_VERSION "ADAPTIVITY_VERSION"\n"); } void rtw_odm_adaptivity_parm_msg(void *sel, _adapter *adapter) { struct dm_struct *odm = adapter_to_phydm(adapter); - rtw_odm_adaptivity_config_msg(sel, adapter); + rtw_cfg_adaptivity_config_msg(sel, adapter); RTW_PRINT_SEL(sel, "%10s %16s\n" , "th_l2h_ini", "th_edcca_hl_diff"); @@ -213,29 +177,63 @@ s16 rtw_odm_get_tx_power_mbm(struct dm_struct *dm, u8 rfpath, u8 rate, u8 bw, u8 return phy_get_txpwr_single_mbm(dm->adapter, rfpath, mgn_rate_to_rs(rate), rate, bw, cch, 0, 0, 0, NULL); } +#if CONFIG_TXPWR_LIMIT +enum txpwr_lmt_reg_exc_match rtw_txpwr_hal_lmt_reg_exc_search(struct dvobj_priv* dvobj, const char *country, u8 domain, const char **reg_name) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + struct lmt_reg_exc *exc; + + exc = hal_txpwr_lmt_reg_exc_search(hal_data, country, domain); + if (exc) { + *reg_name = exc->reg_name; + if ((exc->country[0] != '\0' || exc->country[1] != '\0') + && _rtw_memcmp(country, exc->country, 2) == _TRUE) + return TXPWR_LMT_REG_EXC_MATCH_COUNTRY; + else if (exc->domain != 0xFF && domain == exc->domain) + return TXPWR_LMT_REG_EXC_MATCH_DOMAIN; + rtw_warn_on(1); + } + return TXPWR_LMT_REG_EXC_MATCH_NONE; +} + +bool rtw_txpwr_hal_lmt_reg_search(struct dvobj_priv* dvobj, enum band_type band, const char *name) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + struct lmt_reg *ent = hal_txpwr_lmt_reg_get_by_name(hal_data, name); + + if (ent) { + if (band == BAND_ON_24G && ent->lmt_2g) + return true; + #if CONFIG_IEEE80211_BAND_5GHZ + if (band == BAND_ON_5G && ent->lmt_5g) + return true; + #endif + } + return false; +} + +void rtw_txpwr_hal_set_current_lmt_regs_by_name(struct dvobj_priv* dvobj, char *names_of_band[], int names_len_of_band[]) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + enum band_type band; + + for (band = 0; band < BAND_MAX; band++) + hal_txpwr_set_current_lmt_regs(hal_data, band, names_of_band[band], names_len_of_band[band]); +} + +void rtw_txpwr_hal_get_current_lmt_regs_name(struct dvobj_priv* dvobj, char *names_of_band[], int names_len_of_band[]) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + enum band_type band; + + for (band = 0; band < BAND_MAX; band++) + hal_txpwr_get_current_lmt_regs(hal_data, band, &names_of_band[band], &names_len_of_band[band]); +} +#endif + #ifdef CONFIG_DFS_MASTER -inline void rtw_odm_radar_detect_reset(_adapter *adapter) -{ - phydm_radar_detect_reset(adapter_to_phydm(adapter)); -} - -inline void rtw_odm_radar_detect_disable(_adapter *adapter) -{ - phydm_radar_detect_disable(adapter_to_phydm(adapter)); -} - -/* called after ch, bw is set */ -inline void rtw_odm_radar_detect_enable(_adapter *adapter) -{ - phydm_radar_detect_enable(adapter_to_phydm(adapter)); -} - -inline BOOLEAN rtw_odm_radar_detect(_adapter *adapter) -{ - return phydm_radar_detect(adapter_to_phydm(adapter)); -} - -static enum phydm_dfs_region_domain _rtw_dfs_regd_to_phydm[] = { +static const enum phydm_dfs_region_domain _rtw_dfs_regd_to_phydm[RTW_DFS_REGD_NUM] = { + /* elements not listed here will get PHYDM_DFS_DOMAIN_UNKNOWN(0) */ [RTW_DFS_REGD_NONE] = PHYDM_DFS_DOMAIN_UNKNOWN, [RTW_DFS_REGD_FCC] = PHYDM_DFS_DOMAIN_FCC, [RTW_DFS_REGD_MKK] = PHYDM_DFS_DOMAIN_MKK, @@ -244,12 +242,71 @@ static enum phydm_dfs_region_domain _rtw_dfs_regd_to_phydm[] = { #define rtw_dfs_regd_to_phydm(region) (((region) >= RTW_DFS_REGD_NUM) ? _rtw_dfs_regd_to_phydm[RTW_DFS_REGD_NONE] : _rtw_dfs_regd_to_phydm[(region)]) -void rtw_odm_update_dfs_region(struct dvobj_priv *dvobj) +bool rtw_dfs_hal_region_supported(struct dvobj_priv* dvobj, enum rtw_dfs_regd domain) { - odm_cmn_info_init(dvobj_to_phydm(dvobj), ODM_CMNINFO_DFS_REGION_DOMAIN, rtw_dfs_regd_to_phydm(rtw_rfctl_get_dfs_domain(dvobj_to_rfctl(dvobj)))); + return domain == RTW_DFS_REGD_NONE + || rtw_dfs_regd_to_phydm(domain) != PHYDM_DFS_DOMAIN_UNKNOWN; } -inline u8 rtw_odm_radar_detect_polling_int_ms(struct dvobj_priv *dvobj) +void rtw_dfs_hal_update_region(struct dvobj_priv *dvobj, u8 band_idx, enum rtw_dfs_regd domain) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + + rtw_hal_dfs_change_domain(hal_data, band_idx, rtw_dfs_regd_to_phydm(domain)); +} + +void rtw_dfs_hal_radar_detect_disable(struct dvobj_priv *dvobj, u8 band_idx) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + + rtw_hal_dfs_rd_disable(hal_data, band_idx); +} + +void rtw_dfs_hal_radar_detect_enable(struct dvobj_priv *dvobj, u8 band_idx, bool cac, u32 rd_freq_hi, u32 rd_freq_lo) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + + rtw_hal_dfs_rd_enable_with_sp_freq_range(hal_data, band_idx, cac, rd_freq_hi, rd_freq_lo); +} + +void rtw_dfs_hal_set_cac_status(struct dvobj_priv *dvobj, u8 band_idx, bool cac) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + + rtw_hal_dfs_rd_set_cac_status(hal_data, band_idx, cac); +} + +void rtw_dfs_hal_radar_detect_result_polling(struct dvobj_priv *dvobj, u8 band_idx, u8 *radar_cch, u8 *radar_bw) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + u32 cur_hi, cur_lo; + + *radar_cch = 0; + *radar_bw = CHANNEL_WIDTH_MAX; + + if (!rfctl->radar_detect_enabled || rfctl->radar_detect_hwband != band_idx) + return; + + if (rtw_chbw_to_freq_range(dvobj->oper_channel, dvobj->oper_bwmode, dvobj->oper_ch_offset + , &cur_hi, &cur_lo) == _FALSE) + return; + + if (!rtw_is_range_overlap(cur_hi, cur_lo + , rfctl->radar_detect_freq_hi[band_idx], rfctl->radar_detect_freq_lo[band_idx]) + || rtw_get_passing_time_ms(rtw_get_on_oper_ch_time(dvobj_get_primary_adapter(dvobj))) < 300 + ) { + /* offchannel, bypass radar detect */ + return; + } + + if (phydm_radar_detect(dvobj_to_phydm(dvobj))) { + /* TODO: PHYDM info for specific band and range */ + *radar_cch = rfctl->radar_detect_cch[band_idx]; + *radar_bw = rfctl->radar_detect_bw[band_idx]; + } +} + +u8 rtw_dfs_hal_radar_detect_polling_int_ms(struct dvobj_priv *dvobj) { return phydm_dfs_polling_time(dvobj_to_phydm(dvobj)); } diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_p2p.c b/drivers/net/wireless/rtl8822cs/core/rtw_p2p.c index 61eba1d40..668f5bde8 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_p2p.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_p2p.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -38,7 +38,6 @@ int is_any_client_associated(_adapter *padapter) static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *pbuf) { - _irqL irqL; _list *phead, *plist; u32 len = 0; u16 attr_len = 0; @@ -59,7 +58,7 @@ static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *pbuf) pstart = pdata_attr; pcur = pdata_attr; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); @@ -126,7 +125,7 @@ static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *pbuf) } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); if (attr_len > 0) len = rtw_set_p2p_attr_content(pbuf, P2P_ATTR_GROUP_INFO, attr_len, pdata_attr); @@ -390,16 +389,19 @@ static void issue_p2p_presence_resp(struct wifidirect_info *pwdinfo, u8 *da, u8 unsigned char category = RTW_WLAN_CATEGORY_P2P;/* P2P action frame */ u32 p2poui = cpu_to_be32(P2POUI); u8 oui_subtype = P2P_PRESENCE_RESPONSE; - u8 p2pie[MAX_P2P_IE_LEN] = { 0x00 }; + u8 *p2pie = NULL; u8 noa_attr_content[32] = { 0x00 }; u32 p2pielen = 0; RTW_INFO("[%s]\n", __FUNCTION__); - - pmgntframe = alloc_mgtxmitframe(pxmitpriv); - if (pmgntframe == NULL) + p2pie = (u8 *)rtw_zmalloc(MAX_P2P_IE_LEN); + if (!p2pie) return; - + pmgntframe = alloc_mgtxmitframe(pxmitpriv); + if (pmgntframe == NULL){ + rtw_mfree(p2pie, MAX_P2P_IE_LEN); + return; + } /* update attribute */ pattrib = &pmgntframe->attrib; update_mgntframe_attrib(padapter, pattrib); @@ -457,16 +459,18 @@ static void issue_p2p_presence_resp(struct wifidirect_info *pwdinfo, u8 *da, u8 pattrib->last_txcmdsz = pattrib->pktlen; dump_mgntframe(padapter, pmgntframe); - + rtw_mfree(p2pie, MAX_P2P_IE_LEN); } u32 build_beacon_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) { - u8 p2pie[MAX_P2P_IE_LEN] = { 0x00 }; + u8 *p2pie = NULL; u16 capability = 0; u32 len = 0, p2pielen = 0; - + p2pie = (u8 *)rtw_zmalloc(MAX_P2P_IE_LEN); + if (!p2pie) + return 0; /* P2P OUI */ p2pielen = 0; p2pie[p2pielen++] = 0x50; @@ -512,7 +516,7 @@ u32 build_beacon_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len); - + rtw_mfree(p2pie, MAX_P2P_IE_LEN); return len; } @@ -1867,9 +1871,12 @@ exit: u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) { - u8 p2pie[MAX_P2P_IE_LEN] = { 0x00 }; + u8 *p2pie; u32 len = 0, p2pielen = 0; + p2pie = (u8 *)rtw_zmalloc(MAX_P2P_IE_LEN); + if (!p2pie) + return 0; /* P2P OUI */ p2pielen = 0; p2pie[p2pielen++] = 0x50; @@ -2011,16 +2018,18 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len); - + rtw_mfree(p2pie, MAX_P2P_IE_LEN); return len; - } u32 build_prov_disc_request_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8 *pssid, u8 ussidlen, u8 *pdev_raddr) { - u8 p2pie[MAX_P2P_IE_LEN] = { 0x00 }; + u8 *p2pie = NULL; u32 len = 0, p2pielen = 0; + p2pie = (u8 *)rtw_zmalloc(MAX_P2P_IE_LEN); + if (!p2pie) + return 0; /* P2P OUI */ p2pielen = 0; p2pie[p2pielen++] = 0x50; @@ -2140,7 +2149,7 @@ u32 build_prov_disc_request_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8 pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len); - + rtw_mfree(p2pie, MAX_P2P_IE_LEN); return len; } @@ -2148,9 +2157,12 @@ u32 build_prov_disc_request_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8 u32 build_assoc_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8 status_code) { - u8 p2pie[MAX_P2P_IE_LEN] = { 0x00 }; + u8 *p2pie = NULL; u32 len = 0, p2pielen = 0; + p2pie = (u8 *)rtw_zmalloc(MAX_P2P_IE_LEN); + if (!p2pie) + return 0; /* P2P OUI */ p2pielen = 0; p2pie[p2pielen++] = 0x50; @@ -2175,6 +2187,7 @@ u32 build_assoc_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8 status pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len); + rtw_mfree(p2pie, MAX_P2P_IE_LEN); return len; } @@ -2390,10 +2403,9 @@ u32 process_p2p_devdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint le _rtw_memcmp(pwdinfo->p2p_group_ssid, groupid + ETH_ALEN, pwdinfo->p2p_group_ssid_len)) { attr_contentlen = sizeof(dev_addr); if (rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_DEVICE_ID, dev_addr, &attr_contentlen)) { - _irqL irqL; _list *phead, *plist; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); @@ -2406,10 +2418,10 @@ u32 process_p2p_devdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint le if (psta->is_p2p_device && (psta->dev_cap & P2P_DEVCAP_CLIENT_DISCOVERABILITY) && _rtw_memcmp(psta->dev_addr, dev_addr, ETH_ALEN)) { - /* _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); */ + /* rtw_stapriv_asoc_list_unlock(pstapriv); */ /* issue GO Discoverability Request */ issue_group_disc_req(pwdinfo, psta->cmn.mac_addr); - /* _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); */ + /* rtw_stapriv_asoc_list_lock(pstapriv); */ status = P2P_STATUS_SUCCESS; @@ -2418,7 +2430,7 @@ u32 process_p2p_devdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint le status = P2P_STATUS_FAIL_INFO_UNAVAILABLE; } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); } else status = P2P_STATUS_FAIL_INVALID_PARAM; @@ -2515,13 +2527,15 @@ u8 rtw_p2p_get_peer_ch_list(struct wifidirect_info *pwdinfo, u8 *ch_content, u8 u8 rtw_p2p_ch_inclusion(_adapter *adapter, u8 *peer_ch_list, u8 peer_ch_num, u8 *ch_list_inclusioned) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + struct rtw_chset *chset = adapter_to_chset(adapter); int i = 0, j = 0, temp = 0; u8 ch_no = 0; for (i = 0; i < peer_ch_num; i++) { - for (j = temp; j < rfctl->max_chan_nums; j++) { - if (*(peer_ch_list + i) == rfctl->channel_set[j].ChannelNum) { + for (j = temp; j < chset->chs_len; j++) { + if (chset->chs[j].flags & RTW_CHF_DIS) + continue; + if (*(peer_ch_list + i) == chset->chs[j].ChannelNum) { ch_list_inclusioned[ch_no++] = *(peer_ch_list + i); temp = j; break; @@ -2548,6 +2562,21 @@ u8 process_p2p_group_negotation_req(struct wifidirect_info *pwdinfo, u8 *pframe, struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; #endif /* CONFIG_TDLS */ #endif /* CONFIG_WFD */ + u8 *ch_content = NULL, *peer_ch_list = NULL, *ch_list_inclusioned = NULL; + + ch_content = (u8 *)rtw_zmalloc(100); + peer_ch_list = (u8 *)rtw_zmalloc(100); + ch_list_inclusioned = (u8 *)rtw_zmalloc(100); + if ((!ch_content) || (!peer_ch_list) || (!ch_list_inclusioned)) { + if (ch_content) + rtw_mfree(ch_content, 100); + if (peer_ch_list) + rtw_mfree(peer_ch_list, 100); + if (ch_list_inclusioned) + rtw_mfree(ch_list_inclusioned, 100); + return P2P_STATUS_FAIL_LIMIT_REACHED; + } + wpsie = rtw_get_wps_ie(pframe + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &wps_ielen); if (wpsie) { /* Commented by Kurt 20120113 */ @@ -2586,15 +2615,15 @@ u8 process_p2p_group_negotation_req(struct wifidirect_info *pwdinfo, u8 *pframe, while (p2p_ie) { u8 attr_content = 0x00; u32 attr_contentlen = 0; - u8 ch_content[100] = { 0x00 }; uint ch_cnt = 0; - u8 peer_ch_list[100] = { 0x00 }; u8 peer_ch_num = 0; - u8 ch_list_inclusioned[100] = { 0x00 }; u8 ch_num_inclusioned = 0; u16 cap_attr; u8 listen_ch_attr[5] = { 0x00 }; + _rtw_memset(ch_content, 0, 100); + _rtw_memset(peer_ch_list, 0, 100); + _rtw_memset(ch_list_inclusioned, 0, 100); rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_ING); /* Check P2P Capability ATTR */ @@ -2648,7 +2677,7 @@ u8 process_p2p_group_negotation_req(struct wifidirect_info *pwdinfo, u8 *pframe, _rtw_memset(pwdinfo->p2p_peer_interface_addr, 0x00, ETH_ALEN); } - ch_cnt = sizeof(ch_content); + ch_cnt = 100; if (rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CH_LIST, ch_content, &ch_cnt)) { peer_ch_num = rtw_p2p_get_peer_ch_list(pwdinfo, ch_content, ch_cnt, peer_ch_list); ch_num_inclusioned = rtw_p2p_ch_inclusion(padapter, peer_ch_list, peer_ch_num, ch_list_inclusioned); @@ -2696,10 +2725,15 @@ u8 process_p2p_group_negotation_req(struct wifidirect_info *pwdinfo, u8 *pframe, } } } - /* Get the next P2P IE */ p2p_ie = rtw_get_p2p_ie(p2p_ie + p2p_ielen, ies_len - (p2p_ie - ies + p2p_ielen), NULL, &p2p_ielen); } + if (ch_content) + rtw_mfree(ch_content, 100); + if (peer_ch_list) + rtw_mfree(peer_ch_list, 100); + if (ch_list_inclusioned) + rtw_mfree(ch_list_inclusioned, 100); if (pwdinfo->ui_got_wps_info == P2P_NO_WPSINFO) { result = P2P_STATUS_FAIL_INFO_UNAVAILABLE; @@ -2727,6 +2761,17 @@ u8 process_p2p_group_negotation_resp(struct wifidirect_info *pwdinfo, u8 *pframe struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; #endif /* CONFIG_TDLS */ #endif /* CONFIG_WFD */ + u8 *peer_ch_list = NULL; + u8 *ch_list_inclusioned = NULL; + + peer_ch_list = (u8 *)rtw_zmalloc(100); + if (!peer_ch_list) + return P2P_STATUS_FAIL_LIMIT_REACHED; + ch_list_inclusioned = (u8 *)rtw_zmalloc(100); + if (!ch_list_inclusioned) { + rtw_mfree(peer_ch_list, 100); + return P2P_STATUS_FAIL_LIMIT_REACHED; + } ies = pframe + _PUBLIC_ACTION_IE_OFFSET_; ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; @@ -2753,9 +2798,7 @@ u8 process_p2p_group_negotation_resp(struct wifidirect_info *pwdinfo, u8 *pframe u8 operatingch_info[5] = { 0x00 }; u8 groupid[38]; u16 cap_attr; - u8 peer_ch_list[100] = { 0x00 }; u8 peer_ch_num = 0; - u8 ch_list_inclusioned[100] = { 0x00 }; u8 ch_num_inclusioned = 0; while (p2p_ie) { /* Found the P2P IE. */ @@ -2908,7 +2951,10 @@ u8 process_p2p_group_negotation_resp(struct wifidirect_info *pwdinfo, u8 *pframe } } - + if (peer_ch_list) + rtw_mfree(peer_ch_list, 100); + if (ch_list_inclusioned) + rtw_mfree(ch_list_inclusioned, 100); #ifdef CONFIG_WFD rtw_process_wfd_ies(padapter, pframe + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, __func__); #endif @@ -3022,23 +3068,23 @@ void find_phase_handler(_adapter *padapter) { struct wifidirect_info *pwdinfo = &padapter->wdinfo; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - struct sitesurvey_parm parm; + struct sitesurvey_parm *parm = NULL; _irqL irqL; - u8 _status = 0; - - rtw_init_sitesurvey_parm(padapter, &parm); - _rtw_memcpy(&parm.ssid[0].Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN); - parm.ssid[0].SsidLength = P2P_WILDCARD_SSID_LEN; - parm.ssid_num = 1; + parm = (struct sitesurvey_parm *)rtw_zmalloc(sizeof(struct sitesurvey_parm)); + if (!parm) + return; + rtw_init_sitesurvey_parm(padapter, parm); + _rtw_memcpy(&(parm->ssid[0].Ssid), pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN); + parm->ssid[0].SsidLength = P2P_WILDCARD_SSID_LEN; + parm->ssid_num = 1; rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH); _enter_critical_bh(&pmlmepriv->lock, &irqL); - _status = rtw_sitesurvey_cmd(padapter, &parm); + rtw_sitesurvey_cmd(padapter, parm); _exit_critical_bh(&pmlmepriv->lock, &irqL); - - + rtw_mfree(parm, sizeof(struct sitesurvey_parm)); } void restore_p2p_state_handler(_adapter *padapter) @@ -3201,6 +3247,13 @@ static bool rtw_chk_p2pie_ch_list_with_buddy(_adapter *padapter, const u8 *frame u32 ies_len, p2p_ielen; u8 union_ch = rtw_mi_get_union_chan(padapter); +#ifdef CONFIG_MCC_MODE + if (MCC_EN(padapter)) { + fit = _TRUE; + return fit; + } +#endif /* CONFIG_MCC_MODE */ + ies = (u8 *)(frame_body + _PUBLIC_ACTION_IE_OFFSET_); ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; @@ -3354,7 +3407,10 @@ u32 rtw_xframe_build_wfd_ie(struct xmit_frame *xframe) u8 *frame = xframe->buf_addr + TXDESC_OFFSET; u8 *frame_body = frame + sizeof(struct rtw_ieee80211_hdr_3addr); u8 *frame_tail = frame + xframe->attrib.pktlen; - u8 category, action, OUI_Subtype, dialogToken = 0; + u8 category, action, OUI_Subtype; +#ifdef CONFIG_DEBUG_CFG80211 + u8 dialogToken = 0; +#endif u32 wfdielen = 0; category = frame_body[0]; @@ -3364,7 +3420,7 @@ u32 rtw_xframe_build_wfd_ie(struct xmit_frame *xframe) && _rtw_memcmp(frame_body + 2, P2P_OUI, 4) == _TRUE ) { OUI_Subtype = frame_body[6]; - dialogToken = frame_body[7]; + /*dialogToken = frame_body[7];*/ switch (OUI_Subtype) { case P2P_GO_NEGO_REQ: @@ -3397,9 +3453,9 @@ u32 rtw_xframe_build_wfd_ie(struct xmit_frame *xframe) } } else if (category == RTW_WLAN_CATEGORY_P2P) { OUI_Subtype = frame_body[5]; +#ifdef CONFIG_DEBUG_CFG80211 dialogToken = frame_body[6]; -#ifdef CONFIG_DEBUG_CFG80211 RTW_INFO("ACTION_CATEGORY_P2P: OUI=0x%x, OUI_Subtype=%d, dialogToken=%d\n" , cpu_to_be32(*((u32 *)(frame_body + 1))), OUI_Subtype, dialogToken); #endif @@ -3503,21 +3559,30 @@ u8 *dump_p2p_attr_ch_list(u8 *p2p_ie, uint p2p_ielen, u8 *buf, u32 buf_len) u8 *pattr = NULL; int w_sz = 0; u8 ch_cnt = 0; - u8 ch_list[40]; + u8 ch_list[MAX_CHANNEL_NUM]; pattr = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CH_LIST, NULL, &attr_contentlen); if (pattr != NULL) { int i, j; u32 num_of_ch; + u8 op_class; u8 *pattr_temp = pattr + 3 ; attr_contentlen -= 3; - _rtw_memset(ch_list, 0, 40); + _rtw_memset(ch_list, 0, MAX_CHANNEL_NUM); while (attr_contentlen > 0) { + op_class = *pattr_temp; num_of_ch = *(pattr_temp + 1); + /* skip 6GHz channels in P2P attribute when 6GHz band is not supported */ + if (!CONFIG_IEEE80211_BAND_6GHZ && (op_class >= 131)) { + pattr_temp += (2 + num_of_ch); + attr_contentlen -= (2 + num_of_ch); + continue; + } + for (i = 0; i < num_of_ch; i++) { for (j = 0; j < ch_cnt; j++) { if (ch_list[j] == *(pattr_temp + 2 + i)) @@ -3525,13 +3590,17 @@ u8 *dump_p2p_attr_ch_list(u8 *p2p_ie, uint p2p_ielen, u8 *buf, u32 buf_len) } if (j >= ch_cnt) ch_list[ch_cnt++] = *(pattr_temp + 2 + i); - + if (ch_cnt == MAX_CHANNEL_NUM) { + RTW_INFO("channel list array is used up, may need to increase array size\n"); + goto make_str; + } } pattr_temp += (2 + num_of_ch); attr_contentlen -= (2 + num_of_ch); } +make_str: for (j = 0; j < ch_cnt; j++) { if (j == 0) w_sz += snprintf(buf + w_sz, buf_len - w_sz, "%u", ch_list[j]); @@ -3568,7 +3637,7 @@ int rtw_p2p_check_frames(_adapter *padapter, const u8 *buf, u32 len, u8 tx) uint p2p_ielen = 0; struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(padapter); int status = -1; - u8 ch_list_buf[128] = {'\0'}; + u8 *ch_list_buf = NULL; int op_ch = -1; int listen_ch = -1; u8 intent = 0; @@ -3577,6 +3646,9 @@ int rtw_p2p_check_frames(_adapter *padapter, const u8 *buf, u32 len, u8 tx) frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr)); category = frame_body[0]; + ch_list_buf = (u8 *)rtw_zmalloc(128); + if (!ch_list_buf) + return is_p2p_frame; /* just for check */ if (category == RTW_WLAN_CATEGORY_PUBLIC) { action = frame_body[1]; @@ -3722,7 +3794,7 @@ int rtw_p2p_check_frames(_adapter *padapter, const u8 *buf, u32 len, u8 tx) } case P2P_GO_NEGO_CONF: { struct rtw_wdev_nego_info *nego_info = &pwdev_priv->nego_info; - bool is_go = _FALSE; + /*bool is_go = _FALSE;*/ if (tx) { #if defined(CONFIG_CONCURRENT_MODE) && defined(CONFIG_CFG80211_ONECHANNEL_UNDER_CONCURRENT) @@ -3744,12 +3816,12 @@ int rtw_p2p_check_frames(_adapter *padapter, const u8 *buf, u32 len, u8 tx) nego_info->status = (status == -1) ? 0xff : status; nego_info->conf_op_ch = (op_ch == -1) ? 0 : op_ch; nego_info->state = 2; - +#if 0 if (status == 0) { if (rtw_p2p_nego_intent_compare(nego_info->req_intent, nego_info->rsp_intent) ^ !tx) is_go = _TRUE; } - +#endif nego_info->token = 0; /* init */ } @@ -3945,7 +4017,7 @@ int rtw_p2p_check_frames(_adapter *padapter, const u8 *buf, u32 len, u8 tx) } } - + rtw_mfree(ch_list_buf, 128); return is_p2p_frame; } #endif /* CONFIG_IOCTL_CFG80211 */ @@ -4011,7 +4083,7 @@ int process_p2p_cross_connect_ie(PADAPTER padapter, u8 *IEs, u32 IELength) u32 ies_len; u8 *p2p_ie; u32 p2p_ielen = 0; - u8 p2p_attr[MAX_P2P_IE_LEN] = { 0x00 };/* NoA length should be n*(13) + 2 */ + u8 *p2p_attr = NULL; /* NoA length should be n*(13) + 2 */ u32 attr_contentlen = 0; @@ -4019,6 +4091,10 @@ int process_p2p_cross_connect_ie(PADAPTER padapter, u8 *IEs, u32 IELength) if (IELength <= _BEACON_IE_OFFSET_) return ret; + p2p_attr = (u8 *)rtw_zmalloc(MAX_P2P_IE_LEN); + if (!p2p_attr) + return ret; + ies = IEs + _BEACON_IE_OFFSET_; ies_len = IELength - _BEACON_IE_OFFSET_; @@ -4026,7 +4102,7 @@ int process_p2p_cross_connect_ie(PADAPTER padapter, u8 *IEs, u32 IELength) while (p2p_ie) { /* Get P2P Manageability IE. */ - attr_contentlen = sizeof(p2p_attr); + attr_contentlen = MAX_P2P_IE_LEN; if (rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_MANAGEABILITY, p2p_attr, &attr_contentlen)) { if ((p2p_attr[0] & (BIT(0) | BIT(1))) == 0x01) ret = _FALSE; @@ -4035,7 +4111,7 @@ int process_p2p_cross_connect_ie(PADAPTER padapter, u8 *IEs, u32 IELength) /* Get the next P2P IE */ p2p_ie = rtw_get_p2p_ie(p2p_ie + p2p_ielen, ies_len - (p2p_ie - ies + p2p_ielen), NULL, &p2p_ielen); } - + rtw_mfree(p2p_attr, MAX_P2P_IE_LEN); return ret; } @@ -4178,6 +4254,8 @@ void p2p_ps_wk_hdl(_adapter *padapter, u8 p2p_ps_state) return; } if (pwdinfo->p2p_ps_mode > P2P_PS_NONE) { +/* do not need thise warning message due to FW already handle this case*/ +#if 0 #ifdef CONFIG_MCC_MODE if (MCC_EN(padapter)) { if (rtw_hal_check_mcc_status(padapter, MCC_STATUS_DOING_MCC)) { @@ -4187,6 +4265,7 @@ void p2p_ps_wk_hdl(_adapter *padapter, u8 p2p_ps_state) } #endif /* CONFIG_MCC_MODE */ +#endif pwdinfo->p2p_ps_state = p2p_ps_state; #ifdef CONFIG_LPS diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_prealloc.c b/drivers/net/wireless/rtl8822cs/core/rtw_prealloc.c new file mode 100644 index 000000000..d7b65b3a5 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/core/rtw_prealloc.c @@ -0,0 +1,598 @@ +/****************************************************************************** + * + * Copyright(c) 2016 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ + +#include +#include +#include +#include + +#ifndef RTKM_MAX_RECVBUF_SZ +#define RTKM_MAX_RECVBUF_SZ (0x8000) /* 32k */ +#endif /* RTKM_MAX_RECVBUF_SZ */ + +#ifndef RTKM_MAX_NR_PREALLOC_RECV_SKB +#ifndef NR_PREALLOC_RECV_SKB +#define NR_PREALLOC_RECV_SKB 8 +#endif /* NR_PREALLOC_RECV_SKB */ +#define RTKM_MAX_NR_PREALLOC_RECV_SKB \ + (NR_PREALLOC_RECV_SKB * CONFIG_IFACE_NUMBER) +#endif /* RTKM_MAX_NR_PREALLOC_RECV_SKB */ + +#if defined(CONFIG_STACKTRACE) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 2, 0)) +#define STACKTRACE 1 +#define MAX_STACK_TRACE 4 +#endif /* CONFIG_STACKTRACE */ + +#define TRACE_ORDER(a, b) ((a) && (((a)&BIT(b)) > 0)) + +#if (defined(CONFIG_RTKM) && defined(CONFIG_RTKM_STANDALONE)) +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#undef RTW_PRINT +#define RTW_PRINT pr_info +unsigned int rtw_drv_log_level = 0; /* for compiler */ +#else /* !CONFIG_RTKM */ +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) "RTKM: " fmt +#endif /* CONFIG_RTKM */ + +struct sk_buff_head rtkm_skb_q; + +struct phy_mem_list { + _lock lock; + _list list; + struct rb_root rb_tree; + unsigned short entries; + unsigned short used; + unsigned short peak; + unsigned char order; +} rtkm_phy_list[MAX_ORDER]; + +struct mem_entry { + _list list; + struct rb_node rbn; + void *data; + size_t size; +#ifdef STACKTRACE +#ifndef CONFIG_ARCH_STACKWALK + struct stack_trace trace; +#endif /* CONFIG_ARCH_STACKWALK */ + unsigned long stack_entries[MAX_STACK_TRACE]; +#endif /* STACKTRACE */ + unsigned char order; + unsigned char is_use; +}; + +#ifdef STACKTRACE +#ifdef CONFIG_ARCH_STACKWALK +static inline void stacktrace_print(const struct mem_entry *entries, + unsigned int nr_entries, int spaces) +{ + stack_trace_print(entries->stack_entries, nr_entries, spaces); +} + +static inline int stacktrace_save(struct mem_entry *store) +{ + return stack_trace_save(store->stack_entries, + ARRAY_SIZE(store->stack_entries), 1); +} +#else /* !CONFIG_ARCH_STACKWALK */ +static inline void stacktrace_print(const struct mem_entry *entries, + unsigned int nr_entries, int spaces) +{ + stack_trace_print(entries->trace.entries, nr_entries, spaces); +} + +static inline void stacktrace_save(struct mem_entry *store) +{ + store->trace.skip = 0; + store->trace.nr_entries = 0; + store->trace.entries = store->stack_entries; + store->trace.max_entries = MAX_STACK_TRACE; + save_stack_trace(&store->trace); +} +#endif /* CONFIG_ARCH_STACKWALK */ +#else /* !STACKTRACE */ +#define stacktrace_print(a, b, c) +#define stacktrace_save(a) +#endif /* STACKTRACE */ + +/* Trace mpool */ +static unsigned int rtkm_trace = 0; +module_param(rtkm_trace, uint, 0644); +MODULE_PARM_DESC(rtkm_trace, "Trace memory pool"); + +/* Preallocated memory expansion */ +static bool rtkm_mem_exp = 1; +module_param(rtkm_mem_exp, bool, 0644); +MODULE_PARM_DESC(rtkm_mem_exp, "Preallocated memory expansion"); + +#ifndef RTKM_MPOOL_0 +#define RTKM_MPOOL_0 0 +#endif +#ifndef RTKM_MPOOL_1 +#define RTKM_MPOOL_1 0 +#endif +#ifndef RTKM_MPOOL_2 +#define RTKM_MPOOL_2 0 +#endif +#ifndef RTKM_MPOOL_3 +#define RTKM_MPOOL_3 0 +#endif +#ifndef RTKM_MPOOL_4 +#define RTKM_MPOOL_4 0 +#endif +#ifndef RTKM_MPOOL_5 +#define RTKM_MPOOL_5 0 +#endif +#ifndef RTKM_MPOOL_6 +#define RTKM_MPOOL_6 0 +#endif +#ifndef RTKM_MPOOL_7 +#define RTKM_MPOOL_7 0 +#endif +#ifndef RTKM_MPOOL_8 +#define RTKM_MPOOL_8 0 +#endif + +/* Preallocated memory pool */ +static int mpool[MAX_ORDER] = { + [0] = RTKM_MPOOL_0, [1] = RTKM_MPOOL_1, [2] = RTKM_MPOOL_2, + [3] = RTKM_MPOOL_3, [4] = RTKM_MPOOL_4, [5] = RTKM_MPOOL_5, + [6] = RTKM_MPOOL_6, [7] = RTKM_MPOOL_7, [8] = RTKM_MPOOL_8 +}; +static int n_mpool = 1; +module_param_array(mpool, int, &n_mpool, 0644); +MODULE_PARM_DESC(mpool, "Preallocated memory pool"); + +static inline void dump_mstatus(void *sel) +{ + int i; + unsigned int a, b, c; + long unsigned int musage = 0; + + a = b = c = 0; + + RTW_PRINT_SEL(sel, + "====================== RTKM ======================\n"); + RTW_PRINT_SEL(sel, "%6s %10s %10s %10s %10s\n", "order", "use", "peak", + rtkm_mem_exp ? "alloc+" : "alloc", "size"); + RTW_PRINT_SEL(sel, + "--------------------------------------------------\n"); + for (i = 0; i < MAX_ORDER; i++) { + if (rtkm_phy_list[i].entries) { + RTW_PRINT_SEL( + sel, "%6d %10d %10d %10d %10lu\n", i, + rtkm_phy_list[i].used, rtkm_phy_list[i].peak, + rtkm_phy_list[i].entries, + (rtkm_phy_list[i].entries) * (PAGE_SIZE << i)); + a += rtkm_phy_list[i].used; + b += rtkm_phy_list[i].peak; + c += rtkm_phy_list[i].entries; + musage += (rtkm_phy_list[i].entries) * (PAGE_SIZE << i); + } + } + RTW_PRINT_SEL(sel, "%6s %10d %10d %10d %10lu\n", "sum", a, b, c, + musage); +} + +void rtkm_dump_mstatus(void *sel) +{ + dump_mstatus(sel); +} +EXPORT_SYMBOL(rtkm_dump_mstatus); + +void rtkm_set_trace(unsigned int mask) +{ + rtkm_trace = mask; +} +EXPORT_SYMBOL(rtkm_set_trace); + +static void rb_insert_mem(struct phy_mem_list *mlist, struct mem_entry *entry) +{ + struct rb_node **p = &mlist->rb_tree.rb_node; + struct rb_node *parent = NULL; + struct mem_entry *tmp = NULL; + + while (*p) { + parent = *p; + tmp = rb_entry(parent, struct mem_entry, rbn); + + if (tmp->data < entry->data) + p = &(*p)->rb_left; + else + p = &(*p)->rb_right; + } + + rb_link_node(&entry->rbn, parent, p); + rb_insert_color(&entry->rbn, &mlist->rb_tree); +} + +static struct mem_entry *rb_find_mem(struct phy_mem_list *mlist, + const void *objp) +{ + struct rb_node *n = mlist->rb_tree.rb_node; + struct mem_entry *entry = NULL; + + while (n) { + entry = rb_entry(n, struct mem_entry, rbn); + + if (entry->data == objp) + return entry; + else if (entry->data < objp) + n = n->rb_left; + else + n = n->rb_right; + } + + return NULL; +} + +static inline void *create_mem_entry(int order) +{ + struct mem_entry *entry; + + entry = rtw_malloc(sizeof(struct mem_entry)); + if (entry == NULL) { + pr_warn("%s: alloc memory entry fail!\n", __func__); + return NULL; + } + entry->order = order; + entry->is_use = _FALSE; + /* get memory by pages */ + entry->data = (void *)__get_free_pages( + in_interrupt() ? GFP_ATOMIC : GFP_KERNEL, entry->order); + if (entry->data == NULL) { + rtw_mfree(entry, sizeof(struct mem_entry)); + pr_warn("%s: alloc memory oreder-%d fail!\n", __func__, order); + return NULL; + } + + return entry; +} + +static inline void *_kmalloc(size_t size, gfp_t flags, int clear) +{ + int order = 0; + int warn = _FALSE; + struct mem_entry *entry = NULL; + struct mem_entry *temp_entry = NULL; + _irqL irqL; + + order = get_order(size); + if (order >= MAX_ORDER) { + pr_warn("%s: Out-of-bounds size %zu (order-%d)\n", __func__, + size, order); + WARN_ON(1); + return NULL; + } + + if (rtkm_phy_list[order].entries == rtkm_phy_list[order].used) { + if (rtkm_mem_exp) { + warn = _TRUE; + pr_warn("%s: No enough order-%d pool\n", __func__, + order); + entry = create_mem_entry(order); + if (entry) { + _enter_critical(&rtkm_phy_list[order].lock, + &irqL); + list_add_tail( + &entry->list, + &rtkm_phy_list[entry->order].list); + rtkm_phy_list[entry->order].entries++; + _exit_critical(&rtkm_phy_list[order].lock, + &irqL); + } + } + + if (entry == NULL) { + pr_warn("%s: No more memory for size %zu\n", __func__, + size); + WARN_ON(1); + return NULL; + } + } + + _enter_critical(&rtkm_phy_list[order].lock, &irqL); + list_for_each_entry_safe(entry, temp_entry, &rtkm_phy_list[order].list, list) { + if (entry->is_use == _FALSE) { + entry->is_use = _TRUE; + entry->size = size; + if (clear == _TRUE) + memset(entry->data, 0, size); + stacktrace_save(entry); + rtkm_phy_list[order].used++; + list_move_tail(&entry->list, &rtkm_phy_list[order].list); + rb_insert_mem(&rtkm_phy_list[order], entry); + break; + } + } + if (rtkm_phy_list[order].peak < rtkm_phy_list[order].used) + rtkm_phy_list[order].peak = rtkm_phy_list[order].used; + _exit_critical(&rtkm_phy_list[order].lock, &irqL); + + if ((warn) || TRACE_ORDER(rtkm_trace, order)) { + pr_info("%s: require(%p, %zu) usage(%d %u/%u)\n", __func__, + entry->data, entry->size, order, + rtkm_phy_list[order].used, + rtkm_phy_list[order].entries); + stacktrace_print(entry, MAX_STACK_TRACE, 0); + } + + return entry->data; +} + +static inline void _kfree(const void *objp, size_t size) +{ + int order = 0; + struct mem_entry *entry; + _irqL irqL; + + order = get_order(size); + if (order >= MAX_ORDER) { + pr_warn("%s: not found (%p, %zu)\n", __func__, objp, size); + pr_warn("%s: Out-of-bounds size %zu (order-%d)\n", __func__, + size, order); + WARN_ON(1); + return; + } + + if (list_empty(&rtkm_phy_list[order].list)) { + pr_warn("%s: list is empty (%p, %zu)\n", __func__, objp, size); + return; + } + + _enter_critical(&rtkm_phy_list[order].lock, &irqL); + entry = rb_find_mem(&rtkm_phy_list[order], objp); + if (entry && (entry->is_use == _TRUE) && (entry->data == objp)) { + if (TRACE_ORDER(rtkm_trace, order)) { + pr_info("%s: release(%p, %zu)\n", __func__, objp, size); + } + rtw_list_delete(&entry->list); + rtkm_phy_list[order].used--; + entry->is_use = _FALSE; + entry->size = 0; + rb_erase(&entry->rbn, &rtkm_phy_list[order].rb_tree); + list_add(&entry->list, &rtkm_phy_list[order].list); + } else { + pr_warn("%s: not found (%p, %zu)\n", __func__, objp, size); + } + _exit_critical(&rtkm_phy_list[order].lock, &irqL); +} + +void *rtkm_kmalloc(size_t size, gfp_t flags) +{ + if (size > RTKM_MGMT_SIZE) + return _kmalloc(size, flags, _FALSE); + else + return kmalloc(size, flags); +} +EXPORT_SYMBOL(rtkm_kmalloc); + +void *rtkm_kzalloc(size_t size, gfp_t flags) +{ + if (size > RTKM_MGMT_SIZE) + return _kmalloc(size, flags, _TRUE); + else + return kzalloc(size, flags); +} +EXPORT_SYMBOL(rtkm_kzalloc); + +void rtkm_kfree(const void *objp, size_t size) +{ + if (size > RTKM_MGMT_SIZE) + return _kfree(objp, size); + else + return kfree(objp); +} +EXPORT_SYMBOL(rtkm_kfree); + +static inline int rtkm_init_phy(void) +{ + int ret = 0, i, j; + struct mem_entry *entry; + + pr_info("%s", __func__); + pr_info("%s: memory expansion:%d\n", __func__, rtkm_mem_exp); + + for (i = (MAX_ORDER - 1); i >= 0; i--) { + INIT_LIST_HEAD(&rtkm_phy_list[i].list); + _rtw_spinlock_init(&rtkm_phy_list[i].lock); + rtkm_phy_list[i].rb_tree = RB_ROOT; + + for (j = 0; (ret == 0) && (j < mpool[i]); j++) { + entry = create_mem_entry(i); + if (entry == NULL) { + ret = -ENOMEM; + break; + } + + list_add_tail(&entry->list, + &rtkm_phy_list[entry->order].list); + rtkm_phy_list[entry->order].entries++; + } + } + if (ret == 0) + dump_mstatus(RTW_DBGDUMP); + + return ret; +} + +static inline void rtkm_destroy_phy(void) +{ + int i = 0; + struct mem_entry *entry; + + pr_info("%s", __func__); + dump_mstatus(RTW_DBGDUMP); + + for (i = 0; i < MAX_ORDER; i++) { + if (rtkm_phy_list[i].used) + pr_err("%s: memory leak! order=%d num=%d\n", __func__, + i, rtkm_phy_list[i].used); + + if (rtkm_phy_list[i].rb_tree.rb_node != NULL) + pr_err("%s: rb tree leak! order=%d\n", __func__, i); + + while (!list_empty(&rtkm_phy_list[i].list)) { + entry = list_entry(rtkm_phy_list[i].list.next, + struct mem_entry, list); + list_del_init(&entry->list); + if (entry->is_use == _TRUE) { + rb_erase(&entry->rbn, + &rtkm_phy_list[i].rb_tree); + pr_err("%s: memory leak! (%p, %zu)\n", __func__, + entry->data, entry->size); + stacktrace_print(entry, MAX_STACK_TRACE, 0); + } + if (entry->data) + free_pages((unsigned long)(entry->data), + entry->order); + entry->data = NULL; + entry->size = 0; + entry->is_use = _FALSE; + rtw_mfree(entry, sizeof(struct mem_entry)); + entry = NULL; + rtkm_phy_list[i].entries--; + } + _rtw_spinlock_free(&rtkm_phy_list[i].lock); + } +} + +u16 rtkm_get_max_buff_size(void) +{ + return RTKM_MAX_RECVBUF_SZ; +} +EXPORT_SYMBOL(rtkm_get_max_buff_size); + +u8 rtkm_get_max_nr_rx_skb(void) +{ + return RTKM_MAX_NR_PREALLOC_RECV_SKB; +} +EXPORT_SYMBOL(rtkm_get_max_nr_rx_skb); + +inline struct sk_buff *rtkm_alloc_skb(unsigned int length) +{ + struct sk_buff *skb = NULL; + + if (length > (RTKM_MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ)) { + pr_warn("%s: allocate size(%u) > MAX_SZ(%d + %d)\n", __func__, + length, RTKM_MAX_RECVBUF_SZ, RECVBUFF_ALIGN_SZ); + WARN_ON(1); + return skb; + } + + skb = skb_dequeue(&rtkm_skb_q); + + return skb; +} +EXPORT_SYMBOL(rtkm_alloc_skb); + +void rtkm_kfree_skb_any(struct sk_buff *skb) +{ + skb_queue_tail(&rtkm_skb_q, skb); +} +EXPORT_SYMBOL(rtkm_kfree_skb_any); + +inline int rtkm_init_skb(void) +{ + int i; + int ret = 0; + SIZE_PTR tmpaddr = 0; + SIZE_PTR alignment = 0; + struct sk_buff *pskb = NULL; + + pr_info("%s: RTKM_MAX_NR_PREALLOC_RECV_SKB: %d\n", __func__, + RTKM_MAX_NR_PREALLOC_RECV_SKB); + pr_info("%s: RTKM_MAX_RECVBUF_SZ: %d\n", __func__, RTKM_MAX_RECVBUF_SZ); + + skb_queue_head_init(&rtkm_skb_q); + + for (i = 0; i < RTKM_MAX_NR_PREALLOC_RECV_SKB; i++) { + pskb = __dev_alloc_skb(RTKM_MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, + in_interrupt() ? GFP_ATOMIC : + GFP_KERNEL); + if (pskb) { + tmpaddr = (SIZE_PTR)pskb->data; + alignment = tmpaddr & (RECVBUFF_ALIGN_SZ - 1); + skb_reserve(pskb, (RECVBUFF_ALIGN_SZ - alignment)); + + skb_queue_tail(&rtkm_skb_q, pskb); + } else { + printk("%s: alloc skb memory fail!\n", __func__); + ret = -ENOMEM; + } + + pskb = NULL; + } + + printk("%s: rtkm_skb_q len : %d\n", __func__, + skb_queue_len(&rtkm_skb_q)); + + return ret; +} + +inline void rtkm_destroy_skb(void) +{ + pr_info("%s", __func__); + + if (skb_queue_len(&rtkm_skb_q)) + pr_info("%s: rtkm_skb_q len : %d\n", __func__, + skb_queue_len(&rtkm_skb_q)); + + skb_queue_purge(&rtkm_skb_q); + + return; +} + +int rtkm_prealloc_init(void) +{ + int ret = 0; + + pr_info("%s\n", __func__); + + ret = rtkm_init_phy(); + if (ret == -ENOMEM) { + pr_err("No enough memory for phiscal."); + rtkm_destroy_phy(); + } + + ret = rtkm_init_skb(); + if (ret == -ENOMEM) { + pr_err("No enough memory for skb."); + rtkm_destroy_skb(); + } + + pr_info("%s: done ret=%d\n", __func__, ret); + return ret; +} +EXPORT_SYMBOL(rtkm_prealloc_init); + +void rtkm_prealloc_destroy(void) +{ + pr_info("%s\n", __func__); + + rtkm_destroy_phy(); + rtkm_destroy_skb(); + + pr_info("%s: done\n", __func__); +} +EXPORT_SYMBOL(rtkm_prealloc_destroy); diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_pwrctrl.c b/drivers/net/wireless/rtl8822cs/core/rtw_pwrctrl.c index 42233e04f..d465a3c62 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_pwrctrl.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_pwrctrl.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -40,7 +40,8 @@ int rtw_fw_ps_state(PADAPTER padapter) , rtw_is_drv_stopped(padapter) ? "True" : "False"); goto exit_fw_ps_state; } - #if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) + #if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) \ + || defined(CONFIG_RTL8822E) rtw_hal_get_hwreg(padapter, HW_VAR_FW_PS_STATE, (u8 *)&fw_ps_state); if ((fw_ps_state & BIT_LPS_STATUS) == 0) ret = _SUCCESS; @@ -91,9 +92,6 @@ void _ips_enter(_adapter *padapter) pwrpriv->bpower_saving = _TRUE; RTW_PRINT("nolinked power save enter\n"); - if (pwrpriv->ips_mode == IPS_LEVEL_2) - pwrpriv->bkeepfwalive = _TRUE; - #ifdef CONFIG_RTW_CFGVENDOR_LLSTATS pwrpriv->pwr_saving_start_time = rtw_get_current_time(); #endif /* CONFIG_RTW_CFGVENDOR_LLSTATS */ @@ -204,9 +202,6 @@ bool rtw_pwr_unassociated_idle(_adapter *adapter) struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); struct xmit_priv *pxmit_priv = &adapter->xmitpriv; struct mlme_priv *pmlmepriv; -#ifdef CONFIG_P2P - struct wifidirect_info *pwdinfo; -#endif bool ret = _FALSE; @@ -224,9 +219,7 @@ bool rtw_pwr_unassociated_idle(_adapter *adapter) iface = dvobj->padapters[i]; if ((iface) && rtw_is_adapter_up(iface)) { pmlmepriv = &(iface->mlmepriv); -#ifdef CONFIG_P2P - pwdinfo = &(iface->wdinfo); -#endif + if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE | WIFI_UNDER_SURVEY) || check_fwstate(pmlmepriv, WIFI_UNDER_LINKING | WIFI_UNDER_WPS) || MLME_IS_AP(iface) @@ -237,8 +230,8 @@ bool rtw_pwr_unassociated_idle(_adapter *adapter) || (rtw_cfg80211_is_ro_ch_once(adapter) && rtw_cfg80211_get_last_ro_ch_passing_ms(adapter) < 3000) #elif defined(CONFIG_P2P) - || rtw_p2p_chk_state(pwdinfo, P2P_STATE_IDLE) - || rtw_p2p_chk_state(pwdinfo, P2P_STATE_LISTEN) + || rtw_p2p_chk_state(&iface->wdinfo, P2P_STATE_IDLE) + || rtw_p2p_chk_state(&iface->wdinfo, P2P_STATE_LISTEN) #endif ) goto exit; @@ -352,7 +345,7 @@ exit: void pwr_state_check_handler(void *ctx) { _adapter *padapter = (_adapter *)ctx; - rtw_ps_cmd(padapter); + rtw_ips_ctrl_wk_cmd(padapter, IPS_CTRL_ENTER, -1, 0); } #ifdef CONFIG_LPS @@ -696,12 +689,14 @@ u8 PS_RDY_CHECK(_adapter *padapter) void rtw_set_lps_lclk(_adapter *padapter, u8 enable) { struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + struct hal_spec_t *hal_spec = GET_HAL_SPEC(padapter); u8 val8 = 0; u8 polling_cnt = 0; u8 cpwm_orig = 0; u8 cpwm_now = 0; u8 result = _FAIL; systime start_time; + u8 is_mac_off_access = _TRUE; /* check the off area of mac can be access */ if (enable) { /* set rpwm to enter 32k */ @@ -717,17 +712,37 @@ void rtw_set_lps_lclk(_adapter *padapter, u8 enable) * may not see 0xEA at this point. */ if (!pwrctl->wowlan_pno_enable) { - do { - val8 = rtw_read8(padapter, REG_CR); - polling_cnt++; - RTW_INFO("%s polling 0x100=0x%x, cnt=%d\n", - __func__, val8, polling_cnt); - RTW_INFO("%s 0x08:%02x, 0x03:%02x\n", - __func__, - rtw_read8(padapter, 0x08), - rtw_read8(padapter, 0x03)); - rtw_mdelay_os(10); - } while (polling_cnt < 20 && (val8 != 0xEA)); +#ifdef CONFIG_USB_HCI + if (hal_spec->mac_off_access_limit_in_low_clock == _FALSE) + is_mac_off_access = _TRUE; + else + is_mac_off_access = _FALSE; +#endif /* CONFIG_USB_HCI */ + + if (is_mac_off_access == _TRUE) { + do { + val8 = rtw_read8(padapter, REG_CR); + polling_cnt++; + RTW_DBG("%s polling 0x100=0x%x, cnt=%d\n", + __func__, val8, polling_cnt); + RTW_DBG("%s 0x08:%02x, 0x03:%02x\n", + __func__, + rtw_read8(padapter, 0x08), + rtw_read8(padapter, 0x03)); + rtw_mdelay_os(10); + } while (polling_cnt < 20 && (val8 != 0xEA)); + } else { + do { + /* polling mac register 0x8[4]=1 to check that mac */ + /* switches clock to 32K. It was an alternative method */ + /* by RS suggested. */ + val8 = rtw_read8(padapter, REG_SYS_CLK_CTRL); + polling_cnt++; + RTW_DBG("%s polling 0x8=0x%x, cnt=%d\n", + __func__, val8, polling_cnt); + rtw_mdelay_os(10); + } while (polling_cnt < 20 && ((val8 & BIT(4)) > 0)); + } } } else { /* for polling cpwm */ @@ -789,9 +804,11 @@ void rtw_set_fw_in_ips_mode(PADAPTER padapter, u8 enable) u8 val8 = 0; u8 parm[H2C_INACTIVE_PS_LEN] = {0}; - if (padapter->netif_up == _FALSE) { - RTW_INFO("%s: ERROR, netif is down\n", __func__); - return; + if (pwrpriv->wowlan_pno_enable) { + if (padapter->netif_up == _FALSE) { + RTW_INFO("%s: ERROR, netif is down\n", __func__); + return; + } } /* u8 cmd_param; */ /* BIT0:enable, BIT1:NoConnect32k */ @@ -804,9 +821,11 @@ void rtw_set_fw_in_ips_mode(PADAPTER padapter, u8 enable) parm[0] = 0x1;/* suggest by Isaac.Hsu*/ #ifdef CONFIG_PNO_SUPPORT - if (pwrpriv->pno_inited) { - parm[1] = pwrpriv->pnlo_info->fast_scan_iterations; - parm[2] = pwrpriv->pnlo_info->slow_scan_period; + if (pwrpriv->wowlan_pno_enable) { + if (pwrpriv->pno_inited) { + parm[1] = pwrpriv->pnlo_info->fast_scan_iterations; + parm[2] = pwrpriv->pnlo_info->slow_scan_period; + } } #endif @@ -817,22 +836,24 @@ void rtw_set_fw_in_ips_mode(PADAPTER padapter, u8 enable) do { val8 = rtw_read8(padapter, REG_HMETFR); cnt++; - RTW_INFO("%s polling REG_HMETFR=0x%x, cnt=%d\n", + RTW_DBG("%s polling REG_HMETFR=0x%x, cnt=%d\n", __func__, val8, cnt); rtw_mdelay_os(10); } while (cnt < 100 && (val8 != 0)); #ifdef CONFIG_LPS_LCLK - /* H2C done, enter 32k */ - if (val8 == 0) - rtw_set_lps_lclk(padapter, _TRUE); + if (rtw_is_fw_ips_lclk_mode(padapter) == _TRUE) { + if (val8 == 0) + rtw_set_lps_lclk(padapter, _TRUE); + } #endif } else { /* Leave IPS */ RTW_INFO("%s: Leaving IPS in FWLPS state\n", __func__); #ifdef CONFIG_LPS_LCLK - rtw_set_lps_lclk(padapter, _FALSE); + if (rtw_is_fw_ips_lclk_mode(padapter) == _TRUE) + rtw_set_lps_lclk(padapter, _FALSE); #endif parm[0] = 0x0; parm[1] = 0x0; @@ -844,6 +865,90 @@ void rtw_set_fw_in_ips_mode(PADAPTER padapter, u8 enable) #endif } } + +u8 rtw_fw_ips_init(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); +#ifdef DBG_CONFIG_ERROR_DETECT + struct sreset_priv *psrtpriv = &pHalData->srestpriv; +#endif /* DBG_CONFIG_ERROR_DETECT */ + struct debug_priv *pdbgpriv = &adapter_to_dvobj(padapter)->drv_dbg; + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + u8 bMacPwrCtrlOn = _TRUE; + + if (pwrpriv->bips_processing == _TRUE && +#ifdef DBG_CONFIG_ERROR_DETECT + psrtpriv->silent_reset_inprogress == _FALSE && +#endif /* DBG_CONFIG_ERROR_DETECT */ + pHalData->bFWReady == _TRUE && + pwrpriv->pre_ips_type == 0) { + + rtw_set_fw_in_ips_mode(padapter, _FALSE); + rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn); +#ifdef CONFIG_LPS_LCLK +#ifdef DBG_CHECK_FW_PS_STATE + if (rtw_fw_ps_state(padapter) == _FAIL) { + RTW_INFO("after hal init, fw ps state in 32k\n"); + pdbgpriv->dbg_ips_drvopen_fail_cnt++; + } +#endif /* DBG_CHECK_FW_PS_STATE */ +#endif /* CONFIG_LPS_LCLK */ + + return _SUCCESS; + } + + return _FAIL; +} + +u8 rtw_fw_ips_deinit(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); +#ifdef DBG_CONFIG_ERROR_DETECT + struct sreset_priv *psrtpriv = &pHalData->srestpriv; +#endif /* DBG_CONFIG_ERROR_DETECT */ + struct debug_priv *pdbgpriv = &adapter_to_dvobj(padapter)->drv_dbg; + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + struct hal_spec_t *hal_spec = GET_HAL_SPEC(padapter); + u8 is_mac_off_access = _TRUE; /* check the off area of mac can be access */ + + if (pwrpriv->bips_processing == _TRUE && +#ifdef DBG_CONFIG_ERROR_DETECT + psrtpriv->silent_reset_inprogress == _FALSE && +#endif /* DBG_CONFIG_ERROR_DETECT */ + pHalData->bFWReady == _TRUE && + padapter->netif_up == _TRUE) { + + rtw_set_fw_in_ips_mode(padapter, _TRUE); + +#ifdef CONFIG_LPS_LCLK + if(rtw_is_fw_ips_lclk_mode(padapter) == _TRUE) { +#ifdef CONFIG_USB_HCI + if (hal_spec->mac_off_access_limit_in_low_clock == _FALSE) + is_mac_off_access = _TRUE; + else + is_mac_off_access = _FALSE; +#endif /* CONFIG_USB_HCI */ + + if (is_mac_off_access == _TRUE) { + RTW_INFO("polling done when entering FW_IPS_LCLK, check result : 0x100=0x%x\n", + rtw_read8(padapter, REG_CR)); + } else { + RTW_INFO("polling done when entering FW_IPS_LCLK, check result : 0x8[4]=%d\n", + (rtw_read8(padapter, REG_SYS_CLK_CTRL) & BIT(4)) ? 1 : 0); + } + + pwrpriv->pre_ips_type = 0; + } +#endif /* CONFIG_LPS_LCLK */ + + return _SUCCESS; + } + + pdbgpriv->dbg_carddisable_cnt++; + pwrpriv->pre_ips_type = 1; + + return _FAIL; +} #endif /* CONFIG_FWLPS_IN_IPS */ void rtw_exec_lps(_adapter *padapter, u8 ps_mode) @@ -1109,8 +1214,12 @@ void rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode } #endif #ifdef CONFIG_WOWLAN - if (pwrpriv->wowlan_mode == _TRUE) - rtw_hal_set_hwreg(padapter, HW_VAR_H2C_INACTIVE_IPS, (u8 *)(&ps_mode)); +#ifdef CONFIG_FWLPS_IN_IPS + if (rtw_is_fw_ips_mode(padapter) == _TRUE) { + if (pwrpriv->wowlan_mode == _TRUE) + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_INACTIVE_IPS, (u8 *)(&ps_mode)); + } +#endif /* CONFIG_FWLPS_IN_IPS */ #endif /* CONFIG_WOWLAN */ rtw_exec_lps(padapter, ps_mode); @@ -1197,8 +1306,12 @@ void rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode rtw_exec_lps(padapter, ps_mode); #ifdef CONFIG_WOWLAN - if (pwrpriv->wowlan_mode == _TRUE) - rtw_hal_set_hwreg(padapter, HW_VAR_H2C_INACTIVE_IPS, (u8 *)(&ps_mode)); +#ifdef CONFIG_FWLPS_IN_IPS + if (rtw_is_fw_ips_mode(padapter) == _TRUE) { + if (pwrpriv->wowlan_mode == _TRUE) + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_INACTIVE_IPS, (u8 *)(&ps_mode)); + } +#endif /* CONFIG_FWLPS_IN_IPS */ #endif /* CONFIG_WOWLAN */ #ifdef CONFIG_P2P_PS @@ -1412,8 +1525,8 @@ void LeaveAllPowerSaveModeDirect(PADAPTER Adapter) #ifdef CONFIG_LPS_LCLK #ifndef CONFIG_DETECT_CPWM_BY_POLLING u8 cpwm_orig; -#endif /* CONFIG_DETECT_CPWM_BY_POLLING */ u8 rpwm; +#endif /* CONFIG_DETECT_CPWM_BY_POLLING */ #endif int i; @@ -1434,16 +1547,15 @@ void LeaveAllPowerSaveModeDirect(PADAPTER Adapter) #ifdef CONFIG_LPS_LCLK _enter_pwrlock(&pwrpriv->lock); -#ifndef CONFIG_DETECT_CPWM_BY_POLLING +#ifdef CONFIG_DETECT_CPWM_BY_POLLING + rtw_set_rpwm(Adapter, PS_STATE_S4); +#else /* !CONFIG_DETECT_CPWM_BY_POLLING */ cpwm_orig = 0; rtw_hal_get_hwreg(Adapter, HW_VAR_CPWM, &cpwm_orig); -#endif /* CONFIG_DETECT_CPWM_BY_POLLING */ rpwm = rtw_set_rpwm(Adapter, PS_STATE_S4); - -#ifndef CONFIG_DETECT_CPWM_BY_POLLING if (rpwm != 0xFF && rpwm & PS_ACK) rtw_cpwm_polling(Adapter, rpwm, cpwm_orig); -#endif /* CONFIG_DETECT_CPWM_BY_POLLING */ +#endif /* !CONFIG_DETECT_CPWM_BY_POLLING */ _exit_pwrlock(&pwrpriv->lock); #endif/*CONFIG_LPS_LCLK*/ @@ -1464,13 +1576,14 @@ void LeaveAllPowerSaveModeDirect(PADAPTER Adapter) } else { if (pwrpriv->rf_pwrstate == rf_off) { -#if defined(CONFIG_FWLPS_IN_IPS) || defined(CONFIG_SWLPS_IN_IPS) || defined(CONFIG_RTL8188E) || defined(CONFIG_PNO_SUPPORT) #ifdef CONFIG_IPS - if (_FALSE == ips_leave(pri_padapter)) - RTW_INFO("======> ips_leave fail.............\n"); +#if defined(CONFIG_FWLPS_IN_IPS) || defined(CONFIG_SWLPS_IN_IPS) + if (rtw_is_fw_ips_mode(Adapter) == _TRUE) { + if (_FALSE == ips_leave(pri_padapter)) + RTW_INFO("======> ips_leave fail.............\n"); + } +#endif #endif -#endif /* CONFIG_SWLPS_IN_IPS || (CONFIG_PLATFORM_SPRD && CONFIG_RTL8188E) */ - } } @@ -1527,12 +1640,14 @@ void LeaveAllPowerSaveMode(PADAPTER Adapter) } else { if (adapter_to_pwrctl(Adapter)->rf_pwrstate == rf_off) { -#if defined(CONFIG_FWLPS_IN_IPS) || defined(CONFIG_SWLPS_IN_IPS) || (defined(CONFIG_PLATFORM_SPRD) && defined(CONFIG_RTL8188E)) #ifdef CONFIG_IPS - if (_FALSE == ips_leave(Adapter)) - RTW_INFO("======> ips_leave fail.............\n"); +#if defined(CONFIG_FWLPS_IN_IPS) || defined(CONFIG_SWLPS_IN_IPS) + if (rtw_is_fw_ips_mode(Adapter) == _TRUE) { + if (_FALSE == ips_leave(Adapter)) + RTW_INFO("======> ips_leave fail.............\n"); + } +#endif #endif -#endif /* CONFIG_SWLPS_IN_IPS || (CONFIG_PLATFORM_SPRD && CONFIG_RTL8188E) */ } } @@ -1660,7 +1775,7 @@ static void dma_event_callback(struct work_struct *work) #define DBG_CPWM_CHK_FAIL #if defined(DBG_CPWM_CHK_FAIL) && (defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) \ - || defined(CONFIG_RTL8723F)) + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E)) #define CPU_EXCEPTION_CODE 0xFAFAFAFA static void rtw_cpwm_chk_fail_debug(_adapter *padapter) { @@ -1730,7 +1845,7 @@ static void rpwmtimeout_workitem_callback(struct work_struct *work) _exit_pwrlock(&pwrpriv->lock); #if defined(DBG_CPWM_CHK_FAIL) && (defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) \ - || defined(CONFIG_RTL8723F)) + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E)) RTW_INFO("+%s: rpwm=0x%02X cpwm=0x%02X\n", __func__, pwrpriv->rpwm, pwrpriv->cpwm); rtw_cpwm_chk_fail_debug(padapter); #endif @@ -2228,6 +2343,7 @@ void rtw_init_pwrctrl_priv(PADAPTER padapter) #endif #ifdef CONFIG_GPIO_WAKEUP PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); + u8 val8 = 0; #endif #if defined(CONFIG_CONCURRENT_MODE) @@ -2309,7 +2425,7 @@ void rtw_init_pwrctrl_priv(PADAPTER padapter) #ifdef CONFIG_LPS_PG pwrctrlpriv->lpspg_info.name = "LPSPG_INFO"; - #ifdef CONFIG_RTL8822C + #if (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) pwrctrlpriv->lpspg_dpk_info.name = "LPSPG_DPK_INFO"; pwrctrlpriv->lpspg_iqk_info.name = "LPSPG_IQK_INFO"; #endif @@ -2325,7 +2441,7 @@ void rtw_init_pwrctrl_priv(PADAPTER padapter) #ifdef CONFIG_RESUME_IN_WORKQUEUE _init_workitem(&pwrctrlpriv->resume_work, resume_workitem_callback, NULL); - pwrctrlpriv->rtw_workqueue = create_freezable_workqueue("rtw_workqueue"); + pwrctrlpriv->rtw_workqueue = create_singlethread_workqueue("rtw_workqueue"); #endif /* CONFIG_RESUME_IN_WORKQUEUE */ #if defined(CONFIG_HAS_EARLYSUSPEND) || defined(CONFIG_ANDROID_POWER) @@ -2335,7 +2451,7 @@ void rtw_init_pwrctrl_priv(PADAPTER padapter) #ifdef CONFIG_GPIO_WAKEUP pwrctrlpriv->wowlan_gpio_index = WAKEUP_GPIO_IDX; - /* set output low state in initial */ + /* driver always sets output low state except it gets into wowlan mode. */ pwrctrlpriv->wowlan_gpio_output_state = GPIO_OUTPUT_LOW; /*default low active*/ pwrctrlpriv->is_high_active = HIGH_ACTIVE_DEV2HST; @@ -2359,12 +2475,11 @@ void rtw_init_pwrctrl_priv(PADAPTER padapter) rtw_hal_set_output_gpio(padapter, pwrctrlpriv->wowlan_gpio_index, GPIO_OUTPUT_LOW); #else - rtw_hal_set_output_gpio(padapter, pwrctrlpriv->wowlan_gpio_index - , pwrctrlpriv->wowlan_gpio_output_state); rtw_hal_switch_gpio_wl_ctrl(padapter, pwrctrlpriv->wowlan_gpio_index, _TRUE); + val8 = (pwrctrlpriv->is_high_active == 0) ? 1 : 0; + rtw_hal_set_output_gpio(padapter, pwrctrlpriv->wowlan_gpio_index, val8); RTW_INFO("%s: set GPIO_%d to OUTPUT %s state in initial and %s_ACTIVE.\n", - __func__, pwrctrlpriv->wowlan_gpio_index, - pwrctrlpriv->wowlan_gpio_output_state ? "HIGH" : "LOW", + __func__, pwrctrlpriv->wowlan_gpio_index, val8 ? "HIGH" : "LOW", pwrctrlpriv->is_high_active ? "HIGI" : "LOW"); #endif /*CONFIG_WAKEUP_GPIO_INPUT_MODE*/ #endif /* CONFIG_RTW_ONE_PIN_GPIO */ @@ -2379,14 +2494,15 @@ void rtw_init_pwrctrl_priv(PADAPTER padapter) #define WOW_LPS_1T1R_ARG #endif + pwrctrlpriv->wowlan_ips_mode = padapter->registrypriv.wow_ips_mode; pwrctrlpriv->wowlan_power_mgmt = padapter->registrypriv.wow_power_mgnt; pwrctrlpriv->wowlan_lps_level = padapter->registrypriv.wow_lps_level; #ifdef CONFIG_LPS_1T1R pwrctrlpriv->wowlan_lps_1t1r = padapter->registrypriv.wow_lps_1t1r; #endif - RTW_INFO("%s: WOW_LPS_mode=%d, WOW_LPS_level=%d"WOW_LPS_1T1R_FMT"\n", - __func__, pwrctrlpriv->wowlan_power_mgmt, pwrctrlpriv->wowlan_lps_level + RTW_INFO("%s: WOW_IPS_mode=%d, WOW_LPS_mode=%d, WOW_LPS_level=%d"WOW_LPS_1T1R_FMT"\n", + __func__, pwrctrlpriv->wowlan_ips_mode, pwrctrlpriv->wowlan_power_mgmt, pwrctrlpriv->wowlan_lps_level WOW_LPS_1T1R_ARG ); @@ -2418,6 +2534,11 @@ void rtw_init_pwrctrl_priv(PADAPTER padapter) rtw_wow_war_mdns_parms_reset(padapter, _TRUE); #endif /* defined(CONFIG_OFFLOAD_MDNS_V4) || defined(CONFIG_OFFLOAD_MDNS_V6) */ #endif /* CONFIG_WAR_OFFLOAD */ + +#ifdef CONFIG_MDNS_OFFLOAD + _rtw_memset(&pwrctrlpriv->mdns_ofld_info, 0, + sizeof(struct rtw_mdns_ofld_info)); +#endif #endif /* CONFIG_WOWLAN */ #ifdef CONFIG_LPS_POFF @@ -2446,8 +2567,8 @@ void rtw_free_pwrctrl_priv(PADAPTER adapter) #ifdef CONFIG_RESUME_IN_WORKQUEUE if (pwrctrlpriv->rtw_workqueue) { - // flush_workqueue(pwrctrlpriv->rtw_workqueue); - // destroy_workqueue(pwrctrlpriv->rtw_workqueue); + flush_workqueue(pwrctrlpriv->rtw_workqueue); + destroy_workqueue(pwrctrlpriv->rtw_workqueue); } #endif @@ -2465,7 +2586,7 @@ void rtw_free_pwrctrl_priv(PADAPTER adapter) #ifdef CONFIG_LPS_PG rsvd_page_cache_free(&pwrctrlpriv->lpspg_info); - #ifdef CONFIG_RTL8822C + #if (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) rsvd_page_cache_free(&pwrctrlpriv->lpspg_dpk_info); rsvd_page_cache_free(&pwrctrlpriv->lpspg_iqk_info); #endif @@ -2661,6 +2782,45 @@ u8 rtw_interface_ps_func(_adapter *padapter, HAL_INTF_PS_FUNC efunc_id, u8 *val) return bResult; } +#ifdef CONFIG_FWLPS_IN_IPS +BOOLEAN rtw_is_fw_ips_mode(_adapter *padapter) +{ + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + u8 ips_mode; + +#ifdef CONFIG_WOWLAN + if (pwrpriv->wowlan_mode == _TRUE) + ips_mode = pwrpriv->wowlan_ips_mode; + else +#endif + ips_mode = pwrpriv->ips_mode_req; + + if (ips_mode == IPS_FWIPS || ips_mode == IPS_FWIPS_LCLK) + return _TRUE; + + return _FALSE; +} + +#ifdef CONFIG_LPS_LCLK +BOOLEAN rtw_is_fw_ips_lclk_mode(_adapter *padapter) +{ + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + u8 ips_mode; + +#ifdef CONFIG_WOWLAN + if (pwrpriv->wowlan_mode == _TRUE) + ips_mode = pwrpriv->wowlan_ips_mode; + else +#endif + ips_mode = pwrpriv->ips_mode_req; + + if (ips_mode == IPS_FWIPS_LCLK) + return _TRUE; + + return _FALSE; +} +#endif /* CONFIG_LPS_LCLK */ +#endif /* CONFIG_FWLPS_IN_IPS */ inline void rtw_set_ips_deny(_adapter *padapter, u32 ms) { @@ -2837,6 +2997,41 @@ inline void rtw_set_lps_deny(_adapter *adapter, u32 ms) } #ifdef CONFIG_WOWLAN +int rtw_pm_set_wow_ips(_adapter *padapter, u8 mode) +{ + struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter); + int ret = 0; + char str[80] = {0}; + + if (mode >= IPS_NONE && mode < IPS_NUM) { + if (pwrctrlpriv->wowlan_ips_mode != mode) { + pwrctrlpriv->wowlan_ips_mode = mode; + + if (mode == IPS_NONE) + strcpy(str, "IPS_NONE"); + else if (mode == IPS_NORMAL) + strcpy(str, "IPS_NORMAL"); +#ifdef CONFIG_FWLPS_IN_IPS + else if (mode == IPS_FWIPS) + strcpy(str, "IPS_FWIPS"); +#ifdef CONFIG_LPS_LCLK + else if (mode == IPS_FWIPS_LCLK) + strcpy(str, "IPS_FWIPS_LCLK"); +#endif /* CONFIG_LPS_LCLK */ +#endif /* CONFIG_FWLPS_IN_IPS */ + else + strcpy(str, "Invalid"); + } + } else { + sprintf(str, "Invalid value(%d)", mode); + ret = -EINVAL; + } + + RTW_INFO("%s WOW IPS mode: %s\n", __func__, str); + + return ret; +} + int rtw_pm_set_wow_lps(_adapter *padapter, u8 mode) { int ret = 0; @@ -2879,20 +3074,65 @@ int rtw_pm_set_wow_lps_1t1r(_adapter *padapter, u8 en) int rtw_pm_set_ips(_adapter *padapter, u8 mode) { + struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter); + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + int ret = 0; + u8 flags = 0; + char str[80] = {0}; - if (mode == IPS_NORMAL || mode == IPS_LEVEL_2) { - rtw_ips_mode_req(pwrctrlpriv, mode); - RTW_INFO("%s %s\n", __FUNCTION__, mode == IPS_NORMAL ? "IPS_NORMAL" : "IPS_LEVEL_2"); - return 0; - } else if (mode == IPS_NONE) { - rtw_ips_mode_req(pwrctrlpriv, mode); - RTW_INFO("%s %s\n", __FUNCTION__, "IPS_NONE"); - if (!rtw_is_surprise_removed(padapter) && (_FAIL == rtw_pwr_wakeup(padapter))) + if (mode >= IPS_NONE && mode < IPS_NUM) { + if (rtw_is_surprise_removed(padapter)) { + RTW_ERR("%s: Surprise Removed occured !\n", __func__); return -EFAULT; - } else - return -EINVAL; - return 0; + } + + if (pwrctrlpriv->ips_mode_req != mode) { + if ((pwrctrlpriv->ips_mode_req != IPS_NONE) && + (ATOMIC_READ(&(pcmdpriv->cmdthd_running)) == _TRUE)) { + if (pdvobj->processing_dev_remove == _TRUE +#ifdef CONFIG_MP_INCLUDED + || rtw_mp_mode_check(padapter) +#endif + ) + flags |= RTW_CMDF_DIRECTLY; + else + flags |= RTW_CMDF_WAIT_ACK; + + if (rtw_ips_ctrl_wk_cmd(padapter, IPS_CTRL_LEAVE_SET_MODE, + mode, flags) != _SUCCESS) { + RTW_INFO("Set IPS mode Fail!\n"); + return -EFAULT; + } + } else { + rtw_ips_mode_req(pwrctrlpriv, mode); + } + + if (mode == IPS_NONE) + strcpy(str, "IPS_NONE"); + else if (mode == IPS_NORMAL) + strcpy(str, "IPS_NORMAL"); +#ifdef CONFIG_FWLPS_IN_IPS + else if (mode == IPS_FWIPS) + strcpy(str, "IPS_FWIPS"); +#ifdef CONFIG_LPS_LCLK + else if (mode == IPS_FWIPS_LCLK) + strcpy(str, "IPS_FWIPS_LCLK"); +#endif /* CONFIG_LPS_LCLK */ +#endif /* CONFIG_FWLPS_IN_IPS */ + else + strcpy(str, "Invalid"); + } else { + strcpy(str, "the input is the same with current ips_mode !"); + } + } else { + sprintf(str, "Invalid value(%d)", mode); + ret = -EINVAL; + } + + RTW_INFO("%s IPS mode: %s\n", __func__, str); + + return ret; } /* diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_recv.c b/drivers/net/wireless/rtl8822cs/core/rtw_recv.c index b82b2cd7d..6f670a664 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_recv.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_recv.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -93,6 +93,7 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) precvpriv->sink_udpport = 0; precvpriv->pre_rtp_rxseq = 0; precvpriv->cur_rtp_rxseq = 0; + precvpriv->rtp_drop_count = 0; #ifdef DBG_RX_SIGNAL_DISPLAY_RAW_DATA precvpriv->store_law_data_flag = 1; @@ -146,8 +147,6 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) precvpriv->signal_stat_sampling_interval = 2000; /* ms */ /* precvpriv->signal_stat_converging_constant = 5000; */ /* ms */ - - rtw_set_signal_stat_timer(precvpriv); #endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ _rtw_memset(&precvpriv->ip_statistic, 0, @@ -531,11 +530,19 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) mickey = &stainfo->dot11tkiprxmickey.skey[0]; } + if (precvframe->u.hdr.len <= prxattrib->hdrlen) { + RTW_INFO("%s pkt_len <= hdrlen!!!\n", __func__); + return _FAIL; + } datalen = precvframe->u.hdr.len - prxattrib->hdrlen - prxattrib->iv_len - prxattrib->icv_len - 8; /* icv_len included the mic code */ pframe = precvframe->u.hdr.rx_data; payload = pframe + prxattrib->hdrlen + prxattrib->iv_len; + if (datalen > precvframe->u.hdr.rx_tail - precvframe->u.hdr.rx_data || datalen > precvframe->u.hdr.rx_end - precvframe->u.hdr.rx_data){ + RTW_INFO("%s datalen is abnormal, too big!!!\n", __func__); + return _FAIL; + } /* rtw_seccalctkipmic(&stainfo->dot11tkiprxmickey.skey[0],pframe,payload, datalen ,&miccode[0],(unsigned char)prxattrib->priority); */ /* care the length of the data */ rtw_seccalctkipmic(mickey, pframe, payload, datalen , &miccode[0], (unsigned char)prxattrib->priority); /* care the length of the data */ @@ -817,7 +824,6 @@ union recv_frame *portctrl(_adapter *adapter, union recv_frame *precv_frame) */ #define PN_LESS_CHK(a, b) (((a-b) & 0x800000000000) != 0) #define VALID_PN_CHK(new, old) (((old) == 0) || PN_LESS_CHK(old, new)) -#define CCMPH_2_KEYID(ch) (((ch) & 0x00000000c0000000) >> 30) sint recv_ucast_pn_decache(union recv_frame *precv_frame); sint recv_ucast_pn_decache(union recv_frame *precv_frame) { @@ -826,17 +832,20 @@ sint recv_ucast_pn_decache(union recv_frame *precv_frame) struct stainfo_rxcache *prxcache = &sta->sta_recvpriv.rxcache; u8 *pdata = precv_frame->u.hdr.rx_data; sint tid = precv_frame->u.hdr.attrib.priority; - u64 tmp_iv_hdr = 0; u64 curr_pn = 0, pkt_pn = 0; + u8 pn[8] = {0}; if (tid > 15) return _FAIL; - if (pattrib->encrypt == _AES_) { - tmp_iv_hdr = le64_to_cpu(*(u64*)(pdata + pattrib->hdrlen)); - pkt_pn = CCMPH_2_PN(tmp_iv_hdr); - tmp_iv_hdr = le64_to_cpu(*(u64*)prxcache->iv[tid]); - curr_pn = CCMPH_2_PN(tmp_iv_hdr); + if (pattrib->encrypt == _TKIP_ || pattrib->encrypt == _AES_ || + pattrib->encrypt == _GCMP_ || pattrib->encrypt == _CCMP_256_ || + pattrib->encrypt == _GCMP_256_) { + rtw_iv_to_pn((pdata + pattrib->hdrlen), pn, NULL, pattrib->encrypt); + pkt_pn = RTW_GET_LE64(pn); + + rtw_iv_to_pn(prxcache->iv[tid], pn, NULL, pattrib->encrypt); + curr_pn = RTW_GET_LE64(pn); if (!VALID_PN_CHK(pkt_pn, curr_pn)) { /* return _FAIL; */ @@ -855,23 +864,21 @@ sint recv_bcast_pn_decache(union recv_frame *precv_frame); sint recv_bcast_pn_decache(union recv_frame *precv_frame) { _adapter *padapter = precv_frame->u.hdr.adapter; - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct security_priv *psecuritypriv = &padapter->securitypriv; struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; u8 *pdata = precv_frame->u.hdr.rx_data; - u64 tmp_iv_hdr = 0; u64 curr_pn = 0, pkt_pn = 0; + u8 pn[8] = {0}; u8 key_id; - if ((pattrib->encrypt == _AES_) && - (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE)) { - - tmp_iv_hdr = le64_to_cpu(*(u64*)(pdata + pattrib->hdrlen)); - key_id = CCMPH_2_KEYID(tmp_iv_hdr); - pkt_pn = CCMPH_2_PN(tmp_iv_hdr); - + if ((pattrib->encrypt == _TKIP_ || pattrib->encrypt == _AES_ || + pattrib->encrypt == _GCMP_ || pattrib->encrypt == _CCMP_256_ || + pattrib->encrypt == _GCMP_256_) && + (MLME_IS_STA(padapter))) { + rtw_iv_to_pn((pdata + pattrib->hdrlen), pn, &key_id, + pattrib->encrypt); + pkt_pn = RTW_GET_LE64(pn); curr_pn = le64_to_cpu(*(u64*)psecuritypriv->iv_seq[key_id]); - curr_pn &= 0x0000ffffffffffff; if (!VALID_PN_CHK(pkt_pn, curr_pn)) return _FAIL; @@ -1837,7 +1844,7 @@ static sint validate_mgmt_protect(_adapter *adapter, union recv_frame *precv_fra struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; struct sta_info *psta = precv_frame->u.hdr.psta; u8 *ptr; - u8 type; + /*u8 type;*/ u8 subtype; u8 is_bmc; u8 category = 0xFF; @@ -1864,7 +1871,7 @@ static sint validate_mgmt_protect(_adapter *adapter, union recv_frame *precv_fra return _SUCCESS; ptr = precv_frame->u.hdr.rx_data; - type = GetFrameType(ptr); + /*type = GetFrameType(ptr);*/ subtype = get_frame_sub_type(ptr); /* bit(7)~bit(2) */ is_bmc = IS_MCAST(GetAddr1Ptr(ptr)); @@ -1926,7 +1933,11 @@ static sint validate_mgmt_protect(_adapter *adapter, union recv_frame *precv_fra /* unicast cases */ #ifdef CONFIG_IEEE80211W if (subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC) { - if (!MLME_IS_MESH(adapter)) { + if (!MLME_IS_MESH(adapter) + #ifdef CONFIG_RTW_WNM + && (rtw_wnm_try_btm_roam_imnt(adapter) > 0) + #endif + ) { unsigned short reason = le16_to_cpu(*(unsigned short *)(ptr + WLAN_HDR_A3_LEN)); #if DBG_VALIDATE_MGMT_PROTECT @@ -2069,7 +2080,6 @@ exit: fail: return _FAIL; - } #endif /* defined(CONFIG_IEEE80211W) || defined(CONFIG_RTW_MESH) */ @@ -2121,14 +2131,15 @@ exit: sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) { - u8 bretry, a4_shift; + /*u8 bretry;*/ + u8 a4_shift; struct sta_info *psta = NULL; u8 *ptr = precv_frame->u.hdr.rx_data; struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; struct security_priv *psecuritypriv = &adapter->securitypriv; sint ret = _SUCCESS; - bretry = GetRetry(ptr); + /*bretry = GetRetry(ptr);*/ a4_shift = (pattrib->to_fr_ds == 3) ? ETH_ALEN : 0; /* some address fields are different when using AMSDU */ @@ -2394,7 +2405,7 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) u8 *ptr = precv_frame->u.hdr.rx_data; u8 ver = (unsigned char)(*ptr) & 0x3 ; #ifdef CONFIG_FIND_BEST_CHANNEL - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + struct rtw_chset *chset = adapter_to_chset(adapter); struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; #endif @@ -2412,9 +2423,9 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) #ifdef CONFIG_FIND_BEST_CHANNEL if (pmlmeext->sitesurvey_res.state == SCAN_PROCESS) { - int ch_set_idx = rtw_chset_search_ch(rfctl->channel_set, rtw_get_oper_ch(adapter)); + int ch_set_idx = rtw_chset_search_ch(chset, rtw_get_oper_ch(adapter)); if (ch_set_idx >= 0) - rfctl->channel_set[ch_set_idx].rx_count++; + chset->chs[ch_set_idx].rx_count++; } #endif @@ -2504,7 +2515,8 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) phdr->bIsWaiPacket = wai_pkt; if (wai_pkt != 0) { - if (sc != adapter->wapiInfo.wapiSeqnumAndFragNum) + if ((sc != adapter->wapiInfo.wapiSeqnumAndFragNum)|| + (sc == 0)) adapter->wapiInfo.wapiSeqnumAndFragNum = sc; else { retval = _FAIL; @@ -2686,7 +2698,7 @@ union recv_frame *recvframe_defrag(_adapter *adapter, _queue *defrag_q); union recv_frame *recvframe_defrag(_adapter *adapter, _queue *defrag_q) { _list *plist, *phead; - u8 *data, wlanhdr_offset; + u8 wlanhdr_offset; u8 curfragnum; struct recv_frame_hdr *pfhdr, *pnfhdr; union recv_frame *prframe, *pnextrframe; @@ -2735,8 +2747,6 @@ union recv_frame *recvframe_defrag(_adapter *adapter, _queue *defrag_q) plist = get_next(plist); - data = get_recvframe_data(prframe); - while (rtw_end_of_queue_search(phead, plist) == _FALSE) { pnextrframe = LIST_CONTAINOR(plist, union recv_frame , u); pnfhdr = &pnextrframe->u.hdr; @@ -2973,7 +2983,7 @@ static int rtw_recv_indicatepkt_check(union recv_frame *rframe, u8 *ehdr_pos, u3 #endif if (recvpriv->sink_udpport > 0) - rtw_sink_rtp_seq_dbg(adapter, ehdr_pos); + rtw_sink_rtp_seq_dbg(adapter, ehdr_pos, rframe->u.hdr.attrib.seq_num); #ifdef DBG_UDP_PKT_LOSE_11AC #define PAYLOAD_LEN_LOC_OF_IP_HDR 0x10 /*ethernet payload length location of ip header (DA + SA+eth_type+(version&hdr_len)) */ @@ -3898,11 +3908,11 @@ int validate_mp_recv_frame(_adapter *adapter, union recv_frame *precv_frame) for (i = 0; i < precv_frame->u.hdr.len; i = i + 8) RTW_INFO("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:\n", *(ptr + i), *(ptr + i + 1), *(ptr + i + 2) , *(ptr + i + 3) , *(ptr + i + 4), *(ptr + i + 5), *(ptr + i + 6), *(ptr + i + 7)); - RTW_INFO("#############################\n"); - _rtw_memset(pmppriv->mplink_buf, '\0' , sizeof(pmppriv->mplink_buf)); - _rtw_memcpy(pmppriv->mplink_buf, ptr, precv_frame->u.hdr.len); - pmppriv->mplink_rx_len = precv_frame->u.hdr.len; - pmppriv->mplink_brx =_TRUE; + RTW_INFO("#############################\n"); + _rtw_memset(pmppriv->mplink_buf, '\0' , sizeof(pmppriv->mplink_buf)); + _rtw_memcpy(pmppriv->mplink_buf, ptr, precv_frame->u.hdr.len); + pmppriv->mplink_rx_len = precv_frame->u.hdr.len; + pmppriv->mplink_brx =_TRUE; } } if (pmppriv->bloopback) { @@ -4441,7 +4451,9 @@ static void rtw_signal_stat_timer_hdl(void *ctx) u8 avg_signal_strength = 0; u8 avg_signal_qual = 0; u32 num_signal_strength = 0; +#ifdef DBG_RX_SIGNAL_DISPLAY_PROCESSING u32 num_signal_qual = 0; +#endif u8 ratio_pre_stat = 0, ratio_curr_stat = 0, ratio_total = 0, ratio_profile = SIGNAL_STAT_CALC_PROFILE_0; if (adapter->recvpriv.is_signal_dbg) { @@ -4459,7 +4471,9 @@ static void rtw_signal_stat_timer_hdl(void *ctx) if (recvpriv->signal_qual_data.update_req == 0) { /* update_req is clear, means we got rx */ avg_signal_qual = recvpriv->signal_qual_data.avg_val; +#ifdef DBG_RX_SIGNAL_DISPLAY_PROCESSING num_signal_qual = recvpriv->signal_qual_data.total_num; +#endif /* after avg_vals are accquired, we can re-stat the signal values */ recvpriv->signal_qual_data.update_req = 1; } @@ -4940,6 +4954,7 @@ thread_return rtw_recv_thread(thread_context context) err = _rtw_down_sema(&recvpriv->recv_sema); if (_FAIL == err) { RTW_ERR(FUNC_ADPT_FMT" down recv_sema fail!\n", FUNC_ADPT_ARG(adapter)); + flush_signals_thread(); goto exit; } diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_regdb_rtk.c b/drivers/net/wireless/rtl8822cs/core/rtw_regdb_rtk.c new file mode 100644 index 000000000..0ae7da236 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/core/rtw_regdb_rtk.c @@ -0,0 +1,931 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#define _RTW_REGDB_RTK_C_ + +#include + +#define RTW_DOMAIN_MAP_VER "64" +#define RTW_DOMAIN_MAP_M_VER "" +#define RTW_COUNTRY_MAP_VER "42" +#define RTW_COUNTRY_MAP_M_VER "" + +#define rtw_is_5g_band1(ch) ((ch) >= 36 && (ch) <= 48) +#define rtw_is_5g_band2(ch) ((ch) >= 52 && (ch) <= 64) +#define rtw_is_5g_band3(ch) ((ch) >= 100 && (ch) <= 144) +#define rtw_is_5g_band4(ch) ((ch) >= 149 && (ch) <= 177) + +#define rtw_is_6g_band1(ch) ((ch) >= 1 && (ch) <= 93) +#define rtw_is_6g_band2(ch) ((ch) >= 97 && (ch) <= 117) +#define rtw_is_6g_band3(ch) ((ch) >= 121 && (ch) <= 189) +#define rtw_is_6g_band4(ch) ((ch) >= 193 && (ch) <= 237) + +struct ch_list_t { + u8 *len_ch_attr; +}; + +#define CLA_2G_12_14_PASSIVE BIT0 + +#define CLA_5G_B1_PASSIVE BIT0 +#define CLA_5G_B2_PASSIVE BIT1 +#define CLA_5G_B3_PASSIVE BIT2 +#define CLA_5G_B4_PASSIVE BIT3 +#define CLA_5G_B2_DFS BIT4 +#define CLA_5G_B3_DFS BIT5 +#define CLA_5G_B4_DFS BIT6 + +#define CLA_6G_B1_PASSIVE BIT0 +#define CLA_6G_B2_PASSIVE BIT1 +#define CLA_6G_B3_PASSIVE BIT2 +#define CLA_6G_B4_PASSIVE BIT3 + +#define CH_LIST_ENT(_len, arg...) \ + {.len_ch_attr = (u8[_len + 2]) {_len, ##arg}, } + +#define CH_LIST_LEN(_ch_list) (_ch_list.len_ch_attr[0]) +#define CH_LIST_CH(_ch_list, _i) (_ch_list.len_ch_attr[_i + 1]) +#define CH_LIST_ATTRIB(_ch_list) (_ch_list.len_ch_attr[CH_LIST_LEN(_ch_list) + 1]) + +enum rtw_chd_2g { + RTW_CHD_2G_INVALID = 0, + + RTW_CHD_2G_00, + RTW_CHD_2G_01, + RTW_CHD_2G_02, + RTW_CHD_2G_03, + RTW_CHD_2G_04, + RTW_CHD_2G_05, + RTW_CHD_2G_06, + + RTW_CHD_2G_MAX, + RTW_CHD_2G_NULL = RTW_CHD_2G_00, +}; + +enum rtw_chd_5g { + RTW_CHD_5G_INVALID = 0, + + RTW_CHD_5G_00, + RTW_CHD_5G_01, + RTW_CHD_5G_02, + RTW_CHD_5G_03, + RTW_CHD_5G_04, + RTW_CHD_5G_05, + RTW_CHD_5G_06, + RTW_CHD_5G_07, + RTW_CHD_5G_08, + RTW_CHD_5G_09, + RTW_CHD_5G_10, + RTW_CHD_5G_11, + RTW_CHD_5G_12, + RTW_CHD_5G_13, + RTW_CHD_5G_14, + RTW_CHD_5G_15, + RTW_CHD_5G_16, + RTW_CHD_5G_17, + RTW_CHD_5G_18, + RTW_CHD_5G_19, + RTW_CHD_5G_20, + RTW_CHD_5G_21, + RTW_CHD_5G_22, + RTW_CHD_5G_23, + RTW_CHD_5G_24, + RTW_CHD_5G_25, + RTW_CHD_5G_26, + RTW_CHD_5G_27, + RTW_CHD_5G_28, + RTW_CHD_5G_29, + RTW_CHD_5G_30, + RTW_CHD_5G_31, + RTW_CHD_5G_32, + RTW_CHD_5G_33, + RTW_CHD_5G_34, + RTW_CHD_5G_35, + RTW_CHD_5G_36, + RTW_CHD_5G_37, + RTW_CHD_5G_38, + RTW_CHD_5G_39, + RTW_CHD_5G_40, + RTW_CHD_5G_41, + RTW_CHD_5G_42, + RTW_CHD_5G_43, + RTW_CHD_5G_44, + RTW_CHD_5G_45, + RTW_CHD_5G_46, + RTW_CHD_5G_47, + RTW_CHD_5G_48, + RTW_CHD_5G_49, + RTW_CHD_5G_50, + RTW_CHD_5G_51, + RTW_CHD_5G_52, + RTW_CHD_5G_53, + RTW_CHD_5G_54, + RTW_CHD_5G_55, + RTW_CHD_5G_57, + RTW_CHD_5G_58, + + RTW_CHD_5G_MAX, + RTW_CHD_5G_NULL = RTW_CHD_5G_00, +}; + +static const struct ch_list_t rtw_channel_def_2g[] = { + /* RTW_CHD_2G_INVALID */ CH_LIST_ENT(0, 0), + /* RTW_CHD_2G_00 */ CH_LIST_ENT(0, 0), + /* RTW_CHD_2G_01 */ CH_LIST_ENT(13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, CLA_2G_12_14_PASSIVE), + /* RTW_CHD_2G_02 */ CH_LIST_ENT(13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0), + /* RTW_CHD_2G_03 */ CH_LIST_ENT(11, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0), + /* RTW_CHD_2G_04 */ CH_LIST_ENT(14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0), + /* RTW_CHD_2G_05 */ CH_LIST_ENT(4, 10, 11, 12, 13, 0), + /* RTW_CHD_2G_06 */ CH_LIST_ENT(14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, CLA_2G_12_14_PASSIVE), +}; + +#if CONFIG_IEEE80211_BAND_5GHZ +static const struct ch_list_t rtw_channel_def_5g[] = { + /* RTW_CHD_5G_INVALID */ CH_LIST_ENT(0, 0), + /* RTW_CHD_5G_00 */ CH_LIST_ENT(0, 0), + /* RTW_CHD_5G_01 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_02 */ CH_LIST_ENT(19, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_03 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_04 */ CH_LIST_ENT(22, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_05 */ CH_LIST_ENT(19, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 149, 153, 157, 161, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_06 */ CH_LIST_ENT(9, 36, 40, 44, 48, 149, 153, 157, 161, 165, 0), + /* RTW_CHD_5G_07 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B2_DFS), + /* RTW_CHD_5G_08 */ CH_LIST_ENT(12, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, CLA_5G_B2_DFS), + /* RTW_CHD_5G_09 */ CH_LIST_ENT(5, 149, 153, 157, 161, 165, 0), + /* RTW_CHD_5G_10 */ CH_LIST_ENT(8, 36, 40, 44, 48, 52, 56, 60, 64, CLA_5G_B2_DFS), + /* RTW_CHD_5G_11 */ CH_LIST_ENT(11, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, CLA_5G_B3_DFS), + /* RTW_CHD_5G_12 */ CH_LIST_ENT(16, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_13 */ CH_LIST_ENT(8, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B2_DFS), + /* RTW_CHD_5G_14 */ CH_LIST_ENT(4, 36, 40, 44, 48, 0), + /* RTW_CHD_5G_15 */ CH_LIST_ENT(4, 149, 153, 157, 161, 0), + /* RTW_CHD_5G_16 */ CH_LIST_ENT(11, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 0), + /* RTW_CHD_5G_17 */ CH_LIST_ENT(16, 36, 40, 44, 48, 52, 56, 60, 64, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_18 */ CH_LIST_ENT(17, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_19 */ CH_LIST_ENT(16, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_20 */ CH_LIST_ENT(20, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_21 */ CH_LIST_ENT(11, 36, 40, 44, 48, 52, 56, 60, 64, 132, 136, 140, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_22 */ CH_LIST_ENT(25, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_23 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_24 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_25 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE), + /* RTW_CHD_5G_26 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE), + /* RTW_CHD_5G_27 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE), + /* RTW_CHD_5G_28 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B2_PASSIVE), + /* RTW_CHD_5G_29 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE), + /* RTW_CHD_5G_30 */ CH_LIST_ENT(9, 36, 40, 44, 48, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_31 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_32 */ CH_LIST_ENT(9, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B2_DFS), + /* RTW_CHD_5G_33 */ CH_LIST_ENT(22, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_34 */ CH_LIST_ENT(13, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B3_DFS), + /* RTW_CHD_5G_35 */ CH_LIST_ENT(8, 100, 104, 108, 112, 116, 132, 136, 140, CLA_5G_B3_DFS), + /* RTW_CHD_5G_36 */ CH_LIST_ENT(25, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B2_DFS | CLA_5G_B3_PASSIVE | CLA_5G_B3_DFS | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_37 */ CH_LIST_ENT(8, 36, 40, 44, 48, 52, 56, 60, 64, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE), + /* RTW_CHD_5G_38 */ CH_LIST_ENT(16, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_39 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_DFS | CLA_5G_B3_DFS | CLA_5G_B4_DFS), + /* RTW_CHD_5G_40 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_41 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_42 */ CH_LIST_ENT(24, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_DFS | CLA_5G_B3_DFS | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_43 */ CH_LIST_ENT(23, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_44 */ CH_LIST_ENT(21, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_45 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_46 */ CH_LIST_ENT(12, 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, CLA_5G_B2_PASSIVE), + /* RTW_CHD_5G_47 */ CH_LIST_ENT(19, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE), + /* RTW_CHD_5G_48 */ CH_LIST_ENT(20, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_49 */ CH_LIST_ENT(17, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_50 */ CH_LIST_ENT(17, 36, 40, 44, 48, 52, 56, 60, 64, 132, 136, 140, 144, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_51 */ CH_LIST_ENT(13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_52 */ CH_LIST_ENT(28, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, 169, 173, 177, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_53 */ CH_LIST_ENT(17, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 149, 153, 157, 161, 165, CLA_5G_B2_DFS | CLA_5G_B3_DFS), + /* RTW_CHD_5G_54 */ CH_LIST_ENT(8, 36, 40, 44, 48, 149, 153, 157, 161, 0), + /* RTW_CHD_5G_55 */ CH_LIST_ENT(28, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, 169, 173, 177, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B2_DFS | CLA_5G_B3_PASSIVE | CLA_5G_B3_DFS | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_57 */ CH_LIST_ENT(25, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), + /* RTW_CHD_5G_58 */ CH_LIST_ENT(16, 36, 40, 44, 48, 52, 56, 60, 64, 132, 136, 140, 149, 153, 157, 161, 165, CLA_5G_B1_PASSIVE | CLA_5G_B2_PASSIVE | CLA_5G_B3_PASSIVE | CLA_5G_B4_PASSIVE), +}; +#endif /* CONFIG_IEEE80211_BAND_5GHZ */ + +struct chplan_ent_t { + u8 regd_2g; /* value of enum rtw_regd */ + u8 chd_2g; +#if CONFIG_IEEE80211_BAND_5GHZ + u8 regd_5g; /* value of enum rtw_regd */ + u8 chd_5g; +#endif +}; + +#if CONFIG_IEEE80211_BAND_5GHZ +#define CHPLAN_ENT(_regd_2g, _chd_2g, _regd_5g, _chd_5g) {.regd_2g = RTW_REGD_##_regd_2g, .chd_2g = RTW_CHD_2G_##_chd_2g, .regd_5g = RTW_REGD_##_regd_5g, .chd_5g = RTW_CHD_5G_##_chd_5g} +#else +#define CHPLAN_ENT(_regd_2g, _chd_2g, _regd_5g, _chd_5g) {.regd_2g = RTW_REGD_##_regd_2g, .chd_2g = RTW_CHD_2G_##_chd_2g} +#endif + +#define CHPLAN_ENT_NOT_DEFINED CHPLAN_ENT(NA, INVALID, NA, INVALID) + +static const struct chplan_ent_t RTW_ChannelPlanMap[] = { + [0x00] = CHPLAN_ENT(ETSI , 02, ETSI , 49), + [0x01] = CHPLAN_ENT(ETSI , 02, ETSI , 50), + [0x02] = CHPLAN_ENT(ETSI , 03, ETSI , 07), + [0x03] = CHPLAN_ENT(ACMA , 02, ACMA , 33), + [0x04] = CHPLAN_ENT(ETSI , 02, ETSI , 51), + [0x05] = CHPLAN_ENT(ETSI , 02, ETSI , 06), + [0x06] = CHPLAN_ENT(ETSI , 02, ETSI , 07), + [0x07] = CHPLAN_ENT(ETSI , 02, ETSI , 23), + [0x08] = CHPLAN_ENT(ETSI , 02, ETSI , 21), + [0x09] = CHPLAN_ENT(ETSI , 02, ETSI , 17), + [0x0A] = CHPLAN_ENT(NA , 00, NA , 00), + [0x0B] = CHPLAN_ENT(ETSI , 02, ETSI , 22), + [0x0C] = CHPLAN_ENT(FCC , 03, FCC , 54), + [0x0D] = CHPLAN_ENT(MKK , 04, MKK , 14), + [0x0E] = CHPLAN_ENT(ETSI , 01, ETSI , 57), + [0x0F] = CHPLAN_ENT(ETSI , 01, ETSI , 58), + [0x1B] = CHPLAN_ENT(FCC , 02, FCC , 52), + [0x1C] = CHPLAN_ENT(KCC , 02, KCC , 53), + [0x20] = CHPLAN_ENT(WW , 01, NA , 00), + [0x21] = CHPLAN_ENT(ETSI , 02, NA , 00), + [0x22] = CHPLAN_ENT(FCC , 03, NA , 00), + [0x23] = CHPLAN_ENT(MKK , 04, NA , 00), + [0x24] = CHPLAN_ENT(ETSI , 05, NA , 00), + [0x25] = CHPLAN_ENT(FCC , 03, FCC , 03), + [0x26] = CHPLAN_ENT(ETSI , 01, ETSI , 02), + [0x27] = CHPLAN_ENT(MKK , 04, MKK , 02), + [0x28] = CHPLAN_ENT(KCC , 01, KCC , 05), + [0x29] = CHPLAN_ENT(FCC , 01, FCC , 06), + [0x2A] = CHPLAN_ENT(FCC , 02, NA , 00), + [0x2B] = CHPLAN_ENT(IC , 02, IC , 33), + [0x2C] = CHPLAN_ENT(MKK , 02, NA , 00), + [0x2D] = CHPLAN_ENT(CHILE, 01, CHILE, 22), + [0x2E] = CHPLAN_ENT(WW , 03, WW , 37), + [0x2F] = CHPLAN_ENT(CHILE, 01, CHILE, 38), + [0x30] = CHPLAN_ENT(FCC , 01, FCC , 07), + [0x31] = CHPLAN_ENT(FCC , 01, FCC , 08), + [0x32] = CHPLAN_ENT(FCC , 01, FCC , 09), + [0x33] = CHPLAN_ENT(FCC , 01, FCC , 10), + [0x34] = CHPLAN_ENT(FCC , 03, FCC , 01), + [0x35] = CHPLAN_ENT(ETSI , 01, ETSI , 03), + [0x36] = CHPLAN_ENT(ETSI , 01, ETSI , 04), + [0x37] = CHPLAN_ENT(MKK , 04, MKK , 10), + [0x38] = CHPLAN_ENT(MKK , 04, MKK , 11), + [0x39] = CHPLAN_ENT(NCC , 03, NCC , 12), + [0x3A] = CHPLAN_ENT(ETSI , 02, ETSI , 02), + [0x3B] = CHPLAN_ENT(ACMA , 02, ACMA , 01), + [0x3C] = CHPLAN_ENT(ETSI , 02, ETSI , 10), + [0x3D] = CHPLAN_ENT(ETSI , 02, ETSI , 15), + [0x3E] = CHPLAN_ENT(KCC , 02, KCC , 03), + [0x3F] = CHPLAN_ENT(FCC , 03, FCC , 22), + [0x40] = CHPLAN_ENT(NCC , 03, NCC , 13), + [0x41] = CHPLAN_ENT(WW , 06, NA , 00), + [0x42] = CHPLAN_ENT(ETSI , 02, ETSI , 14), + [0x43] = CHPLAN_ENT(FCC , 03, FCC , 06), + [0x44] = CHPLAN_ENT(NCC , 03, NCC , 09), + [0x45] = CHPLAN_ENT(ACMA , 01, ACMA , 01), + [0x46] = CHPLAN_ENT(FCC , 03, FCC , 15), + [0x47] = CHPLAN_ENT(ETSI , 01, ETSI , 10), + [0x48] = CHPLAN_ENT(ETSI , 01, ETSI , 07), + [0x49] = CHPLAN_ENT(ETSI , 01, ETSI , 06), + [0x4A] = CHPLAN_ENT(IC , 03, IC , 33), + [0x4B] = CHPLAN_ENT(KCC , 02, KCC , 22), + [0x4C] = CHPLAN_ENT(FCC , 03, FCC , 28), + [0x4D] = CHPLAN_ENT(MEX , 02, MEX , 01), + [0x4E] = CHPLAN_ENT(ETSI , 02, ETSI , 42), + [0x4F] = CHPLAN_ENT(NA , 00, MKK , 43), + [0x50] = CHPLAN_ENT(ETSI , 01, ETSI , 16), + [0x51] = CHPLAN_ENT(ETSI , 01, ETSI , 09), + [0x52] = CHPLAN_ENT(ETSI , 01, ETSI , 17), + [0x53] = CHPLAN_ENT(NCC , 03, NCC , 18), + [0x54] = CHPLAN_ENT(ETSI , 01, ETSI , 15), + [0x55] = CHPLAN_ENT(FCC , 03, FCC , 01), + [0x56] = CHPLAN_ENT(ETSI , 01, ETSI , 19), + [0x57] = CHPLAN_ENT(FCC , 03, FCC , 20), + [0x58] = CHPLAN_ENT(MKK , 02, MKK , 14), + [0x59] = CHPLAN_ENT(ETSI , 01, ETSI , 21), + [0x5A] = CHPLAN_ENT(NA , 00, FCC , 44), + [0x5B] = CHPLAN_ENT(NA , 00, FCC , 45), + [0x5C] = CHPLAN_ENT(NA , 00, FCC , 43), + [0x5D] = CHPLAN_ENT(ETSI , 02, ETSI , 08), + [0x5E] = CHPLAN_ENT(ETSI , 02, ETSI , 03), + [0x5F] = CHPLAN_ENT(MKK , 02, MKK , 47), + [0x60] = CHPLAN_ENT(FCC , 03, FCC , 09), + [0x61] = CHPLAN_ENT(FCC , 02, FCC , 01), + [0x62] = CHPLAN_ENT(FCC , 02, FCC , 03), + [0x63] = CHPLAN_ENT(ETSI , 01, ETSI , 23), + [0x64] = CHPLAN_ENT(MKK , 02, MKK , 24), + [0x65] = CHPLAN_ENT(ETSI , 02, ETSI , 24), + [0x66] = CHPLAN_ENT(FCC , 03, FCC , 27), + [0x67] = CHPLAN_ENT(FCC , 03, FCC , 25), + [0x68] = CHPLAN_ENT(FCC , 02, FCC , 27), + [0x69] = CHPLAN_ENT(FCC , 02, FCC , 25), + [0x6A] = CHPLAN_ENT(ETSI , 02, ETSI , 25), + [0x6B] = CHPLAN_ENT(FCC , 01, FCC , 29), + [0x6C] = CHPLAN_ENT(FCC , 01, FCC , 26), + [0x6D] = CHPLAN_ENT(FCC , 02, FCC , 28), + [0x6E] = CHPLAN_ENT(FCC , 01, FCC , 25), + [0x6F] = CHPLAN_ENT(NA , 00, ETSI , 06), + [0x70] = CHPLAN_ENT(NA , 00, ETSI , 30), + [0x71] = CHPLAN_ENT(NA , 00, ETSI , 25), + [0x72] = CHPLAN_ENT(NA , 00, ETSI , 31), + [0x73] = CHPLAN_ENT(FCC , 01, FCC , 01), + [0x74] = CHPLAN_ENT(FCC , 02, FCC , 19), + [0x75] = CHPLAN_ENT(ETSI , 01, ETSI , 32), + [0x76] = CHPLAN_ENT(FCC , 02, FCC , 22), + [0x77] = CHPLAN_ENT(ETSI , 01, ETSI , 34), + [0x78] = CHPLAN_ENT(FCC , 03, FCC , 35), + [0x79] = CHPLAN_ENT(MKK , 02, MKK , 02), + [0x7A] = CHPLAN_ENT(ETSI , 02, ETSI , 28), + [0x7B] = CHPLAN_ENT(ETSI , 02, ETSI , 46), + [0x7C] = CHPLAN_ENT(ETSI , 02, ETSI , 47), + [0x7D] = CHPLAN_ENT(MKK , 04, MKK , 48), + [0x7E] = CHPLAN_ENT(MKK , 02, MKK , 48), + [0x7F] = CHPLAN_ENT(WW , 01, WW , 55), +}; + +static const int RTW_ChannelPlanMap_size = sizeof(RTW_ChannelPlanMap) / sizeof(RTW_ChannelPlanMap[0]); + +static u8 rtk_regdb_get_default_regd_2g(u8 id) +{ + if (id < RTW_ChannelPlanMap_size) + return RTW_ChannelPlanMap[id].regd_2g; + return RTW_REGD_NA; +} + +#if CONFIG_IEEE80211_BAND_5GHZ +static u8 rtk_regdb_get_default_regd_5g(u8 id) +{ + if (id < RTW_ChannelPlanMap_size) + return RTW_ChannelPlanMap[id].regd_5g; + return RTW_REGD_NA; +} +#endif + +static bool rtk_regdb_is_domain_code_valid(u8 id) +{ + if (id < RTW_ChannelPlanMap_size) { + const struct chplan_ent_t *chplan_map = &RTW_ChannelPlanMap[id]; + + if (chplan_map->chd_2g != RTW_CHD_2G_INVALID + #if CONFIG_IEEE80211_BAND_5GHZ + && chplan_map->chd_5g != RTW_CHD_5G_INVALID + #endif + ) + return true; + } + + return false; +} + +static bool rtk_regdb_domain_get_ch(u8 id, u32 ch, u8 *flags) +{ + u8 index, attrib; + + if (flags) + *flags = 0; + +#if CONFIG_IEEE80211_BAND_5GHZ + if (ch > 14) { + u8 chd_5g = RTW_ChannelPlanMap[id].chd_5g; + + attrib = CH_LIST_ATTRIB(rtw_channel_def_5g[chd_5g]); + + for (index = 0; index < CH_LIST_LEN(rtw_channel_def_5g[chd_5g]); index++) { + if (CH_LIST_CH(rtw_channel_def_5g[chd_5g], index) == ch) { + if (flags) { + if ((rtw_is_5g_band1(ch) && (attrib & CLA_5G_B1_PASSIVE)) /* band1 passive */ + || (rtw_is_5g_band2(ch) && (attrib & CLA_5G_B2_PASSIVE)) /* band2 passive */ + || (rtw_is_5g_band3(ch) && (attrib & CLA_5G_B3_PASSIVE)) /* band3 passive */ + || (rtw_is_5g_band4(ch) && (attrib & CLA_5G_B4_PASSIVE)) /* band4 passive */ + ) + *flags |= RTW_CHF_NO_IR; + + if ((rtw_is_5g_band2(ch) && (attrib & CLA_5G_B2_DFS)) + || (rtw_is_5g_band3(ch) && (attrib & CLA_5G_B3_DFS)) + || (rtw_is_5g_band4(ch) && (attrib & CLA_5G_B4_DFS))) + *flags |= RTW_CHF_DFS; + } + return true; + } + } + } else +#endif /* CONFIG_IEEE80211_BAND_5GHZ */ + { + u8 chd_2g = RTW_ChannelPlanMap[id].chd_2g; + + attrib = CH_LIST_ATTRIB(rtw_channel_def_2g[chd_2g]); + + for (index = 0; index < CH_LIST_LEN(rtw_channel_def_2g[chd_2g]); index++) { + if (CH_LIST_CH(rtw_channel_def_2g[chd_2g], index) == ch) { + if (flags) { + if (ch >= 12 && ch <= 14 && (attrib & CLA_2G_12_14_PASSIVE)) + *flags |= RTW_CHF_NO_IR; + } + return true; + } + } + } + + return false; +} + +#if CONFIG_IEEE80211_BAND_6GHZ +enum rtw_chd_6g { + RTW_CHD_6G_INVALID = 0, + + RTW_CHD_6G_00, + RTW_CHD_6G_01, + RTW_CHD_6G_02, + RTW_CHD_6G_03, + RTW_CHD_6G_04, + RTW_CHD_6G_05, /* 6G Worldwide */ + RTW_CHD_6G_06, + + RTW_CHD_6G_MAX, + RTW_CHD_6G_NULL = RTW_CHD_6G_00, +}; + +static const struct ch_list_t rtw_channel_def_6g[] = { + /* RTW_CHD_6G_INVALID */ CH_LIST_ENT(0, 0), + /* RTW_CHD_6G_00 */ CH_LIST_ENT(0, 0), + /* RTW_CHD_6G_01 */ CH_LIST_ENT(24, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 0), + /* RTW_CHD_6G_02 */ CH_LIST_ENT(6, 97, 101, 105, 109, 113, 117, 0), + /* RTW_CHD_6G_03 */ CH_LIST_ENT(18, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189, 0), + /* RTW_CHD_6G_04 */ CH_LIST_ENT(11, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233, 0), + /* RTW_CHD_6G_05 */ CH_LIST_ENT(59, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233, CLA_6G_B1_PASSIVE | CLA_6G_B2_PASSIVE | CLA_6G_B3_PASSIVE | CLA_6G_B4_PASSIVE), + /* RTW_CHD_6G_06 */ CH_LIST_ENT(59, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233, 0), +}; + +struct chplan_6g_ent_t { + u8 regd; /* value of enum rtw_regd */ + u8 chd; +}; + +#define CHPLAN_6G_ENT(_regd, _chd) {.regd = RTW_REGD_##_regd, .chd = RTW_CHD_6G_##_chd} + +#define CHPLAN_6G_ENT_NOT_DEFINED CHPLAN_6G_ENT(NA, INVALID) + +static const struct chplan_6g_ent_t rtw_chplan_6g_map[] = { + [0x00] = CHPLAN_6G_ENT(NA , 00), + [0x01] = CHPLAN_6G_ENT(FCC , 01), + [0x02] = CHPLAN_6G_ENT(FCC , 02), + [0x03] = CHPLAN_6G_ENT(FCC , 03), + [0x04] = CHPLAN_6G_ENT(FCC , 04), + [0x05] = CHPLAN_6G_ENT(FCC , 06), + [0x06] = CHPLAN_6G_ENT(ETSI , 01), + [0x07] = CHPLAN_6G_ENT(IC , 06), + [0x08] = CHPLAN_6G_ENT(KCC , 06), + [0x09] = CHPLAN_6G_ENT(KCC , 01), + [0x1B] = CHPLAN_6G_ENT(ACMA , 01), + [0x1C] = CHPLAN_6G_ENT(MKK , 01), + [0x7F] = CHPLAN_6G_ENT(WW , 05), +}; + +static const int rtw_chplan_6g_map_size = sizeof(rtw_chplan_6g_map) / sizeof(rtw_chplan_6g_map[0]); + +static u8 rtk_regdb_get_default_regd_6g(u8 id) +{ + if (id < rtw_chplan_6g_map_size) + return rtw_chplan_6g_map[id].regd; + return RTW_REGD_NA; +} + +static bool rtk_regdb_is_domain_code_6g_valid(u8 id) +{ + if (id < rtw_chplan_6g_map_size) { + const struct chplan_6g_ent_t *chplan_map = &rtw_chplan_6g_map[id]; + + if (chplan_map->chd != RTW_CHD_6G_INVALID) + return true; + } + + return false; +} + +static bool rtk_regdb_domain_6g_get_ch(u8 id, u32 ch, u8 *flags) +{ + u8 index, attrib; + u8 chd_6g; + + if (flags) + *flags = 0; + + chd_6g = rtw_chplan_6g_map[id].chd; + + attrib = CH_LIST_ATTRIB(rtw_channel_def_6g[chd_6g]); + + for (index = 0; index < CH_LIST_LEN(rtw_channel_def_6g[chd_6g]); index++) { + if (CH_LIST_CH(rtw_channel_def_6g[chd_6g], index) == ch) { + if (flags) { + if ((rtw_is_6g_band1(ch) && (attrib & CLA_6G_B1_PASSIVE)) /* band1 passive */ + || (rtw_is_6g_band2(ch) && (attrib & CLA_6G_B2_PASSIVE)) /* band2 passive */ + || (rtw_is_6g_band3(ch) && (attrib & CLA_6G_B3_PASSIVE)) /* band3 passive */ + || (rtw_is_6g_band4(ch) && (attrib & CLA_6G_B4_PASSIVE)) /* band4 passive */ + ) + *flags |= RTW_CHF_NO_IR; + } + return true; + } + } + + return false; +} +#endif /* CONFIG_IEEE80211_BAND_6GHZ */ + +static const struct country_chplan country_chplan_map[] = { + COUNTRY_CHPLAN_ENT("AD", 0x3A, 0x00, DEF , 1, 1, 1), /* Andorra */ + COUNTRY_CHPLAN_ENT("AE", 0x5E, 0x06, DEF , 1, 1, 1), /* United Arab Emirates */ + COUNTRY_CHPLAN_ENT("AF", 0x42, 0x00, DEF , 1, 1, 1), /* Afghanistan */ + COUNTRY_CHPLAN_ENT("AG", 0x76, 0x05, DEF , 1, 1, 1), /* Antigua & Barbuda */ + COUNTRY_CHPLAN_ENT("AI", 0x5E, 0x06, DEF , 1, 1, 1), /* Anguilla(UK) */ + COUNTRY_CHPLAN_ENT("AL", 0x5E, 0x00, DEF , 1, 1, 1), /* Albania */ + COUNTRY_CHPLAN_ENT("AM", 0x5E, 0x06, DEF , 1, 1, 1), /* Armenia */ + COUNTRY_CHPLAN_ENT("AN", 0x76, 0x05, DEF , 1, 1, 1), /* Netherlands Antilles */ + COUNTRY_CHPLAN_ENT("AO", 0x5E, 0x00, DEF , 1, 1, 1), /* Angola */ + COUNTRY_CHPLAN_ENT("AQ", 0x26, 0x00, DEF , 1, 1, 1), /* Antarctica */ + COUNTRY_CHPLAN_ENT("AR", 0x4D, 0x05, DEF , 1, 1, 1), /* Argentina */ + COUNTRY_CHPLAN_ENT("AS", 0x76, 0x00, DEF , 1, 1, 1), /* American Samoa */ + COUNTRY_CHPLAN_ENT("AT", 0x5E, 0x06, DEF , 1, 1, 1), /* Austria */ + COUNTRY_CHPLAN_ENT("AU", 0x03, 0x1B, DEF , 1, 1, 1), /* Australia */ + COUNTRY_CHPLAN_ENT("AW", 0x76, 0x05, DEF , 1, 1, 1), /* Aruba */ + COUNTRY_CHPLAN_ENT("AZ", 0x5E, 0x06, DEF , 1, 1, 1), /* Azerbaijan */ + COUNTRY_CHPLAN_ENT("BA", 0x5E, 0x00, DEF , 1, 1, 1), /* Bosnia & Herzegovina */ + COUNTRY_CHPLAN_ENT("BB", 0x76, 0x05, DEF , 1, 1, 1), /* Barbados */ + COUNTRY_CHPLAN_ENT("BD", 0x5E, 0x00, DEF , 1, 1, 1), /* Bangladesh */ + COUNTRY_CHPLAN_ENT("BE", 0x5E, 0x06, DEF , 1, 1, 1), /* Belgium */ + COUNTRY_CHPLAN_ENT("BF", 0x5E, 0x06, DEF , 1, 1, 1), /* Burkina Faso */ + COUNTRY_CHPLAN_ENT("BG", 0x5E, 0x06, DEF , 1, 1, 1), /* Bulgaria */ + COUNTRY_CHPLAN_ENT("BH", 0x06, 0x06, DEF , 1, 1, 1), /* Bahrain */ + COUNTRY_CHPLAN_ENT("BI", 0x3A, 0x06, DEF , 1, 1, 1), /* Burundi */ + COUNTRY_CHPLAN_ENT("BJ", 0x3A, 0x00, DEF , 1, 1, 1), /* Benin */ + COUNTRY_CHPLAN_ENT("BM", 0x76, 0x05, DEF , 1, 1, 1), /* Bermuda (UK) */ + COUNTRY_CHPLAN_ENT("BN", 0x06, 0x00, DEF , 1, 1, 1), /* Brunei */ + COUNTRY_CHPLAN_ENT("BO", 0x61, 0x05, DEF , 1, 1, 1), /* Bolivia */ + COUNTRY_CHPLAN_ENT("BR", 0x62, 0x05, DEF , 1, 1, 1), /* Brazil */ + COUNTRY_CHPLAN_ENT("BS", 0x76, 0x05, DEF , 1, 1, 1), /* Bahamas */ + COUNTRY_CHPLAN_ENT("BT", 0x5E, 0x00, DEF , 1, 1, 1), /* Bhutan */ + COUNTRY_CHPLAN_ENT("BV", 0x5E, 0x00, DEF , 1, 1, 1), /* Bouvet Island (Norway) */ + COUNTRY_CHPLAN_ENT("BW", 0x5E, 0x06, DEF , 1, 1, 1), /* Botswana */ + COUNTRY_CHPLAN_ENT("BY", 0x08, 0x00, DEF , 0, 1, 1), /* Belarus */ + COUNTRY_CHPLAN_ENT("BZ", 0x76, 0x00, DEF , 1, 1, 1), /* Belize */ + COUNTRY_CHPLAN_ENT("CA", 0x2B, 0x07, DEF , 1, 1, 1), /* Canada */ + COUNTRY_CHPLAN_ENT("CC", 0x03, 0x00, DEF , 1, 1, 1), /* Cocos (Keeling) Islands (Australia) */ + COUNTRY_CHPLAN_ENT("CD", 0x5E, 0x00, DEF , 1, 1, 1), /* Congo, Republic of the */ + COUNTRY_CHPLAN_ENT("CF", 0x3A, 0x00, DEF , 1, 1, 1), /* Central African Republic */ + COUNTRY_CHPLAN_ENT("CG", 0x5E, 0x00, DEF , 1, 1, 1), /* Congo, Democratic Republic of the. Zaire */ + COUNTRY_CHPLAN_ENT("CH", 0x5E, 0x06, DEF , 1, 1, 1), /* Switzerland */ + COUNTRY_CHPLAN_ENT("CI", 0x42, 0x00, DEF , 1, 1, 1), /* Cote d'Ivoire */ + COUNTRY_CHPLAN_ENT("CK", 0x5E, 0x00, DEF , 1, 1, 1), /* Cook Islands */ + COUNTRY_CHPLAN_ENT("CL", 0x76, 0x01, CHILE , 1, 1, 1), /* Chile */ + COUNTRY_CHPLAN_ENT("CM", 0x5E, 0x00, DEF , 1, 1, 1), /* Cameroon */ + COUNTRY_CHPLAN_ENT("CN", 0x06, 0x00, CN , 1, 1, 1), /* China */ + COUNTRY_CHPLAN_ENT("CO", 0x76, 0x05, DEF , 1, 1, 1), /* Colombia */ + COUNTRY_CHPLAN_ENT("CR", 0x76, 0x05, DEF , 1, 1, 1), /* Costa Rica */ + COUNTRY_CHPLAN_ENT("CV", 0x5E, 0x00, DEF , 1, 1, 1), /* Cape Verde */ + COUNTRY_CHPLAN_ENT("CX", 0x03, 0x00, DEF , 1, 1, 1), /* Christmas Island (Australia) */ + COUNTRY_CHPLAN_ENT("CY", 0x5E, 0x06, DEF , 1, 1, 1), /* Cyprus */ + COUNTRY_CHPLAN_ENT("CZ", 0x5E, 0x06, DEF , 1, 1, 1), /* Czech Republic */ + COUNTRY_CHPLAN_ENT("DE", 0x5E, 0x06, DEF , 1, 1, 1), /* Germany */ + COUNTRY_CHPLAN_ENT("DJ", 0x5E, 0x06, DEF , 1, 1, 1), /* Djibouti */ + COUNTRY_CHPLAN_ENT("DK", 0x5E, 0x06, DEF , 1, 1, 1), /* Denmark */ + COUNTRY_CHPLAN_ENT("DM", 0x76, 0x00, DEF , 1, 1, 1), /* Dominica */ + COUNTRY_CHPLAN_ENT("DO", 0x76, 0x00, DEF , 1, 1, 1), /* Dominican Republic */ + COUNTRY_CHPLAN_ENT("DZ", 0x00, 0x06, DEF , 1, 1, 1), /* Algeria */ + COUNTRY_CHPLAN_ENT("EC", 0x76, 0x00, DEF , 1, 1, 1), /* Ecuador */ + COUNTRY_CHPLAN_ENT("EE", 0x5E, 0x06, DEF , 1, 1, 1), /* Estonia */ + COUNTRY_CHPLAN_ENT("EG", 0x3C, 0x00, DEF , 1, 1, 1), /* Egypt */ + COUNTRY_CHPLAN_ENT("EH", 0x3C, 0x00, DEF , 1, 1, 1), /* Western Sahara */ + COUNTRY_CHPLAN_ENT("ER", 0x3A, 0x00, DEF , 1, 1, 1), /* Eritrea */ + COUNTRY_CHPLAN_ENT("ES", 0x5E, 0x06, DEF , 1, 1, 1), /* Spain, Canary Islands, Ceuta, Melilla */ + COUNTRY_CHPLAN_ENT("ET", 0x3A, 0x00, DEF , 1, 1, 1), /* Ethiopia */ + COUNTRY_CHPLAN_ENT("FI", 0x5E, 0x06, DEF , 1, 1, 1), /* Finland */ + COUNTRY_CHPLAN_ENT("FJ", 0x76, 0x00, DEF , 1, 1, 1), /* Fiji */ + COUNTRY_CHPLAN_ENT("FK", 0x5E, 0x00, DEF , 1, 1, 1), /* Falkland Islands (Islas Malvinas) (UK) */ + COUNTRY_CHPLAN_ENT("FM", 0x76, 0x00, DEF , 1, 1, 1), /* Micronesia, Federated States of (USA) */ + COUNTRY_CHPLAN_ENT("FO", 0x5E, 0x00, DEF , 1, 1, 1), /* Faroe Islands (Denmark) */ + COUNTRY_CHPLAN_ENT("FR", 0x5E, 0x06, DEF , 1, 1, 1), /* France */ + COUNTRY_CHPLAN_ENT("GA", 0x5E, 0x00, DEF , 1, 1, 1), /* Gabon */ + COUNTRY_CHPLAN_ENT("GB", 0x0B, 0x06, UK , 1, 1, 1), /* Great Britain (United Kingdom; England) */ + COUNTRY_CHPLAN_ENT("GD", 0x76, 0x00, DEF , 1, 1, 1), /* Grenada */ + COUNTRY_CHPLAN_ENT("GE", 0x5E, 0x00, DEF , 1, 1, 1), /* Georgia */ + COUNTRY_CHPLAN_ENT("GF", 0x3A, 0x00, DEF , 1, 1, 1), /* French Guiana */ + COUNTRY_CHPLAN_ENT("GG", 0x5E, 0x00, DEF , 1, 1, 1), /* Guernsey (UK) */ + COUNTRY_CHPLAN_ENT("GH", 0x5E, 0x06, DEF , 1, 1, 1), /* Ghana */ + COUNTRY_CHPLAN_ENT("GI", 0x5E, 0x00, DEF , 1, 1, 1), /* Gibraltar (UK) */ + COUNTRY_CHPLAN_ENT("GL", 0x5E, 0x00, DEF , 1, 1, 1), /* Greenland (Denmark) */ + COUNTRY_CHPLAN_ENT("GM", 0x5E, 0x06, DEF , 1, 1, 1), /* Gambia */ + COUNTRY_CHPLAN_ENT("GN", 0x5E, 0x06, DEF , 1, 1, 1), /* Guinea */ + COUNTRY_CHPLAN_ENT("GP", 0x5E, 0x00, DEF , 1, 1, 1), /* Guadeloupe (France) */ + COUNTRY_CHPLAN_ENT("GQ", 0x5E, 0x06, DEF , 1, 1, 1), /* Equatorial Guinea */ + COUNTRY_CHPLAN_ENT("GR", 0x5E, 0x06, DEF , 1, 1, 1), /* Greece */ + COUNTRY_CHPLAN_ENT("GS", 0x3A, 0x00, DEF , 1, 1, 1), /* South Georgia and the Sandwich Islands (UK) */ + COUNTRY_CHPLAN_ENT("GT", 0x76, 0x05, DEF , 1, 1, 1), /* Guatemala */ + COUNTRY_CHPLAN_ENT("GU", 0x76, 0x00, DEF , 1, 1, 1), /* Guam (USA) */ + COUNTRY_CHPLAN_ENT("GW", 0x5E, 0x00, DEF , 1, 1, 1), /* Guinea-Bissau */ + COUNTRY_CHPLAN_ENT("GY", 0x76, 0x00, DEF , 1, 1, 1), /* Guyana */ + COUNTRY_CHPLAN_ENT("HK", 0x5E, 0x06, DEF , 1, 1, 1), /* Hong Kong */ + COUNTRY_CHPLAN_ENT("HM", 0x03, 0x00, DEF , 1, 1, 1), /* Heard and McDonald Islands (Australia) */ + COUNTRY_CHPLAN_ENT("HN", 0x76, 0x05, DEF , 1, 1, 1), /* Honduras */ + COUNTRY_CHPLAN_ENT("HR", 0x5E, 0x06, DEF , 1, 1, 1), /* Croatia */ + COUNTRY_CHPLAN_ENT("HT", 0x76, 0x01, DEF , 0, 1, 1), /* Haiti */ + COUNTRY_CHPLAN_ENT("HU", 0x5E, 0x06, DEF , 1, 1, 1), /* Hungary */ + COUNTRY_CHPLAN_ENT("ID", 0x5D, 0x00, DEF , 1, 1, 1), /* Indonesia */ + COUNTRY_CHPLAN_ENT("IE", 0x5E, 0x06, DEF , 1, 1, 1), /* Ireland */ + COUNTRY_CHPLAN_ENT("IL", 0x5E, 0x06, DEF , 1, 1, 1), /* Israel */ + COUNTRY_CHPLAN_ENT("IM", 0x5E, 0x00, DEF , 1, 1, 1), /* Isle of Man (UK) */ + COUNTRY_CHPLAN_ENT("IN", 0x5E, 0x00, DEF , 1, 1, 1), /* India */ + COUNTRY_CHPLAN_ENT("IO", 0x3A, 0x00, DEF , 1, 1, 1), /* British Indian Ocean Territory (UK) */ + COUNTRY_CHPLAN_ENT("IQ", 0x05, 0x00, DEF , 1, 1, 1), /* Iraq */ + COUNTRY_CHPLAN_ENT("IR", 0x3A, 0x00, DEF , 0, 0, 0), /* Iran */ + COUNTRY_CHPLAN_ENT("IS", 0x5E, 0x06, DEF , 1, 1, 1), /* Iceland */ + COUNTRY_CHPLAN_ENT("IT", 0x5E, 0x06, DEF , 1, 1, 1), /* Italy */ + COUNTRY_CHPLAN_ENT("JE", 0x5E, 0x00, DEF , 1, 1, 1), /* Jersey (UK) */ + COUNTRY_CHPLAN_ENT("JM", 0x76, 0x05, DEF , 1, 1, 1), /* Jamaica */ + COUNTRY_CHPLAN_ENT("JO", 0x5E, 0x06, DEF , 1, 1, 1), /* Jordan */ + COUNTRY_CHPLAN_ENT("JP", 0x7D, 0x1C, DEF , 1, 1, 1), /* Japan- Telec */ + COUNTRY_CHPLAN_ENT("KE", 0x5E, 0x06, DEF , 1, 1, 1), /* Kenya */ + COUNTRY_CHPLAN_ENT("KG", 0x5E, 0x06, DEF , 1, 1, 1), /* Kyrgyzstan */ + COUNTRY_CHPLAN_ENT("KH", 0x5E, 0x00, DEF , 1, 1, 1), /* Cambodia */ + COUNTRY_CHPLAN_ENT("KI", 0x5E, 0x00, DEF , 1, 1, 1), /* Kiribati */ + COUNTRY_CHPLAN_ENT("KM", 0x5E, 0x06, DEF , 1, 1, 1), /* Comoros */ + COUNTRY_CHPLAN_ENT("KN", 0x76, 0x05, DEF , 1, 1, 1), /* Saint Kitts and Nevis */ + COUNTRY_CHPLAN_ENT("KR", 0x4B, 0x08, DEF , 1, 1, 1), /* South Korea */ + COUNTRY_CHPLAN_ENT("KW", 0x5E, 0x06, DEF , 1, 1, 1), /* Kuwait */ + COUNTRY_CHPLAN_ENT("KY", 0x76, 0x05, DEF , 1, 1, 1), /* Cayman Islands (UK) */ + COUNTRY_CHPLAN_ENT("KZ", 0x5E, 0x00, DEF , 1, 1, 1), /* Kazakhstan */ + COUNTRY_CHPLAN_ENT("LA", 0x5E, 0x06, DEF , 1, 1, 1), /* Laos */ + COUNTRY_CHPLAN_ENT("LB", 0x5E, 0x06, DEF , 1, 1, 1), /* Lebanon */ + COUNTRY_CHPLAN_ENT("LC", 0x76, 0x05, DEF , 1, 1, 1), /* Saint Lucia */ + COUNTRY_CHPLAN_ENT("LI", 0x5E, 0x06, DEF , 1, 1, 1), /* Liechtenstein */ + COUNTRY_CHPLAN_ENT("LK", 0x5E, 0x00, DEF , 1, 1, 1), /* Sri Lanka */ + COUNTRY_CHPLAN_ENT("LR", 0x5E, 0x00, DEF , 1, 1, 1), /* Liberia */ + COUNTRY_CHPLAN_ENT("LS", 0x5E, 0x00, DEF , 1, 1, 1), /* Lesotho */ + COUNTRY_CHPLAN_ENT("LT", 0x5E, 0x06, DEF , 1, 1, 1), /* Lithuania */ + COUNTRY_CHPLAN_ENT("LU", 0x5E, 0x06, DEF , 1, 1, 1), /* Luxembourg */ + COUNTRY_CHPLAN_ENT("LV", 0x5E, 0x06, DEF , 1, 1, 1), /* Latvia */ + COUNTRY_CHPLAN_ENT("LY", 0x5E, 0x00, DEF , 1, 1, 1), /* Libya */ + COUNTRY_CHPLAN_ENT("MA", 0x3C, 0x06, DEF , 1, 1, 1), /* Morocco */ + COUNTRY_CHPLAN_ENT("MC", 0x5E, 0x06, DEF , 1, 1, 1), /* Monaco */ + COUNTRY_CHPLAN_ENT("MD", 0x5E, 0x06, DEF , 1, 1, 1), /* Moldova */ + COUNTRY_CHPLAN_ENT("ME", 0x3A, 0x00, DEF , 1, 1, 1), /* Montenegro */ + COUNTRY_CHPLAN_ENT("MF", 0x76, 0x00, DEF , 1, 1, 1), /* Saint Martin */ + COUNTRY_CHPLAN_ENT("MG", 0x5E, 0x06, DEF , 1, 1, 1), /* Madagascar */ + COUNTRY_CHPLAN_ENT("MH", 0x76, 0x00, DEF , 1, 1, 1), /* Marshall Islands (USA) */ + COUNTRY_CHPLAN_ENT("MK", 0x5E, 0x00, DEF , 1, 1, 1), /* Republic of Macedonia (FYROM) */ + COUNTRY_CHPLAN_ENT("ML", 0x5E, 0x00, DEF , 1, 1, 1), /* Mali */ + COUNTRY_CHPLAN_ENT("MM", 0x3A, 0x00, DEF , 1, 1, 1), /* Burma (Myanmar) */ + COUNTRY_CHPLAN_ENT("MN", 0x5E, 0x06, DEF , 1, 1, 1), /* Mongolia */ + COUNTRY_CHPLAN_ENT("MO", 0x5E, 0x00, DEF , 1, 1, 1), /* Macau */ + COUNTRY_CHPLAN_ENT("MP", 0x76, 0x00, DEF , 1, 1, 1), /* Northern Mariana Islands (USA) */ + COUNTRY_CHPLAN_ENT("MQ", 0x3A, 0x00, DEF , 1, 1, 1), /* Martinique (France) */ + COUNTRY_CHPLAN_ENT("MR", 0x5E, 0x00, DEF , 1, 1, 1), /* Mauritania */ + COUNTRY_CHPLAN_ENT("MS", 0x3A, 0x00, DEF , 1, 1, 1), /* Montserrat (UK) */ + COUNTRY_CHPLAN_ENT("MT", 0x5E, 0x06, DEF , 1, 1, 1), /* Malta */ + COUNTRY_CHPLAN_ENT("MU", 0x5E, 0x06, DEF , 1, 1, 1), /* Mauritius */ + COUNTRY_CHPLAN_ENT("MV", 0x3C, 0x00, DEF , 1, 1, 1), /* Maldives */ + COUNTRY_CHPLAN_ENT("MW", 0x5E, 0x00, DEF , 1, 1, 1), /* Malawi */ + COUNTRY_CHPLAN_ENT("MX", 0x4D, 0x01, DEF , 1, 1, 1), /* Mexico */ + COUNTRY_CHPLAN_ENT("MY", 0x07, 0x06, DEF , 1, 1, 1), /* Malaysia */ + COUNTRY_CHPLAN_ENT("MZ", 0x5E, 0x00, DEF , 1, 1, 1), /* Mozambique */ + COUNTRY_CHPLAN_ENT("NA", 0x5E, 0x00, DEF , 1, 1, 1), /* Namibia */ + COUNTRY_CHPLAN_ENT("NC", 0x3A, 0x00, DEF , 1, 1, 1), /* New Caledonia */ + COUNTRY_CHPLAN_ENT("NE", 0x5E, 0x00, DEF , 1, 1, 1), /* Niger */ + COUNTRY_CHPLAN_ENT("NF", 0x03, 0x00, DEF , 1, 1, 1), /* Norfolk Island (Australia) */ + COUNTRY_CHPLAN_ENT("NG", 0x75, 0x00, DEF , 1, 1, 1), /* Nigeria */ + COUNTRY_CHPLAN_ENT("NI", 0x76, 0x00, DEF , 1, 1, 1), /* Nicaragua */ + COUNTRY_CHPLAN_ENT("NL", 0x5E, 0x06, DEF , 1, 1, 1), /* Netherlands */ + COUNTRY_CHPLAN_ENT("NO", 0x5E, 0x06, DEF , 1, 1, 1), /* Norway */ + COUNTRY_CHPLAN_ENT("NP", 0x06, 0x00, DEF , 1, 1, 1), /* Nepal */ + COUNTRY_CHPLAN_ENT("NR", 0x5E, 0x00, DEF , 1, 1, 1), /* Nauru */ + COUNTRY_CHPLAN_ENT("NU", 0x03, 0x00, DEF , 1, 1, 1), /* Niue */ + COUNTRY_CHPLAN_ENT("NZ", 0x03, 0x1B, DEF , 1, 1, 1), /* New Zealand */ + COUNTRY_CHPLAN_ENT("OM", 0x5E, 0x00, DEF , 1, 1, 1), /* Oman */ + COUNTRY_CHPLAN_ENT("PA", 0x76, 0x00, DEF , 1, 1, 1), /* Panama */ + COUNTRY_CHPLAN_ENT("PE", 0x76, 0x05, DEF , 1, 1, 1), /* Peru */ + COUNTRY_CHPLAN_ENT("PF", 0x3A, 0x00, DEF , 1, 1, 1), /* French Polynesia (France) */ + COUNTRY_CHPLAN_ENT("PG", 0x5E, 0x06, DEF , 1, 1, 1), /* Papua New Guinea */ + COUNTRY_CHPLAN_ENT("PH", 0x5E, 0x00, DEF , 1, 1, 1), /* Philippines */ + COUNTRY_CHPLAN_ENT("PK", 0x5E, 0x00, DEF , 1, 1, 1), /* Pakistan */ + COUNTRY_CHPLAN_ENT("PL", 0x5E, 0x06, DEF , 1, 1, 1), /* Poland */ + COUNTRY_CHPLAN_ENT("PM", 0x5E, 0x00, DEF , 1, 1, 1), /* Saint Pierre and Miquelon (France) */ + COUNTRY_CHPLAN_ENT("PR", 0x76, 0x00, DEF , 1, 1, 1), /* Puerto Rico */ + COUNTRY_CHPLAN_ENT("PS", 0x5E, 0x00, DEF , 1, 1, 1), /* Palestine */ + COUNTRY_CHPLAN_ENT("PT", 0x5E, 0x06, DEF , 1, 1, 1), /* Portugal */ + COUNTRY_CHPLAN_ENT("PW", 0x76, 0x00, DEF , 1, 1, 1), /* Palau */ + COUNTRY_CHPLAN_ENT("PY", 0x76, 0x00, DEF , 1, 1, 1), /* Paraguay */ + COUNTRY_CHPLAN_ENT("QA", 0x5E, 0x06, QATAR , 1, 1, 1), /* Qatar */ + COUNTRY_CHPLAN_ENT("RE", 0x5E, 0x00, DEF , 1, 1, 1), /* Reunion (France) */ + COUNTRY_CHPLAN_ENT("RO", 0x5E, 0x06, DEF , 1, 1, 1), /* Romania */ + COUNTRY_CHPLAN_ENT("RS", 0x5E, 0x06, DEF , 1, 1, 1), /* Serbia */ + COUNTRY_CHPLAN_ENT("RU", 0x09, 0x00, DEF , 1, 1, 1), /* Russia(fac/gost), Kaliningrad */ + COUNTRY_CHPLAN_ENT("RW", 0x5E, 0x00, DEF , 1, 1, 1), /* Rwanda */ + COUNTRY_CHPLAN_ENT("SA", 0x5E, 0x06, DEF , 1, 1, 1), /* Saudi Arabia */ + COUNTRY_CHPLAN_ENT("SB", 0x3A, 0x00, DEF , 1, 1, 1), /* Solomon Islands */ + COUNTRY_CHPLAN_ENT("SC", 0x76, 0x00, DEF , 1, 1, 1), /* Seychelles */ + COUNTRY_CHPLAN_ENT("SE", 0x5E, 0x06, DEF , 1, 1, 1), /* Sweden */ + COUNTRY_CHPLAN_ENT("SG", 0x5E, 0x00, DEF , 1, 1, 1), /* Singapore */ + COUNTRY_CHPLAN_ENT("SH", 0x5E, 0x00, DEF , 1, 1, 1), /* Saint Helena (UK) */ + COUNTRY_CHPLAN_ENT("SI", 0x5E, 0x06, DEF , 1, 1, 1), /* Slovenia */ + COUNTRY_CHPLAN_ENT("SJ", 0x5E, 0x00, DEF , 1, 1, 1), /* Svalbard (Norway) */ + COUNTRY_CHPLAN_ENT("SK", 0x5E, 0x06, DEF , 1, 1, 1), /* Slovakia */ + COUNTRY_CHPLAN_ENT("SL", 0x5E, 0x06, DEF , 1, 1, 1), /* Sierra Leone */ + COUNTRY_CHPLAN_ENT("SM", 0x3A, 0x00, DEF , 1, 1, 1), /* San Marino */ + COUNTRY_CHPLAN_ENT("SN", 0x3A, 0x00, DEF , 1, 1, 1), /* Senegal */ + COUNTRY_CHPLAN_ENT("SO", 0x3A, 0x00, DEF , 1, 1, 1), /* Somalia */ + COUNTRY_CHPLAN_ENT("SR", 0x74, 0x05, DEF , 1, 1, 1), /* Suriname */ + COUNTRY_CHPLAN_ENT("ST", 0x5E, 0x00, DEF , 1, 1, 1), /* Sao Tome and Principe */ + COUNTRY_CHPLAN_ENT("SV", 0x76, 0x05, DEF , 1, 1, 1), /* El Salvador */ + COUNTRY_CHPLAN_ENT("SX", 0x76, 0x00, DEF , 1, 1, 1), /* Sint Marteen */ + COUNTRY_CHPLAN_ENT("SZ", 0x5E, 0x00, DEF , 1, 1, 1), /* Swaziland */ + COUNTRY_CHPLAN_ENT("TC", 0x3A, 0x00, DEF , 1, 1, 1), /* Turks and Caicos Islands (UK) */ + COUNTRY_CHPLAN_ENT("TD", 0x3A, 0x06, DEF , 1, 1, 1), /* Chad */ + COUNTRY_CHPLAN_ENT("TF", 0x3A, 0x00, DEF , 1, 1, 1), /* French Southern and Antarctic Lands (FR Southern Territories) */ + COUNTRY_CHPLAN_ENT("TG", 0x5E, 0x06, DEF , 1, 1, 1), /* Togo */ + COUNTRY_CHPLAN_ENT("TH", 0x5E, 0x06, DEF , 1, 1, 1), /* Thailand */ + COUNTRY_CHPLAN_ENT("TJ", 0x5E, 0x06, DEF , 1, 1, 1), /* Tajikistan */ + COUNTRY_CHPLAN_ENT("TK", 0x03, 0x00, DEF , 1, 1, 1), /* Tokelau */ + COUNTRY_CHPLAN_ENT("TM", 0x3A, 0x00, DEF , 1, 1, 1), /* Turkmenistan */ + COUNTRY_CHPLAN_ENT("TN", 0x04, 0x00, DEF , 1, 1, 1), /* Tunisia */ + COUNTRY_CHPLAN_ENT("TO", 0x3A, 0x00, DEF , 1, 1, 1), /* Tonga */ + COUNTRY_CHPLAN_ENT("TR", 0x5E, 0x06, DEF , 1, 1, 1), /* Turkey, Northern Cyprus */ + COUNTRY_CHPLAN_ENT("TT", 0x76, 0x00, DEF , 1, 1, 1), /* Trinidad & Tobago */ + COUNTRY_CHPLAN_ENT("TV", 0x21, 0x00, DEF , 0, 0, 0), /* Tuvalu */ + COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 1, 1, 1), /* Taiwan */ + COUNTRY_CHPLAN_ENT("TZ", 0x5E, 0x00, DEF , 1, 1, 1), /* Tanzania */ + COUNTRY_CHPLAN_ENT("UA", 0x5E, 0x00, UKRAINE, 1, 1, 1), /* Ukraine */ + COUNTRY_CHPLAN_ENT("UG", 0x3A, 0x00, DEF , 1, 1, 1), /* Uganda */ + COUNTRY_CHPLAN_ENT("US", 0x1B, 0x05, DEF , 1, 1, 1), /* United States of America (USA) */ + COUNTRY_CHPLAN_ENT("UY", 0x30, 0x00, DEF , 1, 1, 1), /* Uruguay */ + COUNTRY_CHPLAN_ENT("UZ", 0x3A, 0x06, DEF , 1, 1, 1), /* Uzbekistan */ + COUNTRY_CHPLAN_ENT("VA", 0x5E, 0x00, DEF , 1, 1, 1), /* Holy See (Vatican City) */ + COUNTRY_CHPLAN_ENT("VC", 0x76, 0x00, DEF , 1, 1, 1), /* Saint Vincent and the Grenadines */ + COUNTRY_CHPLAN_ENT("VE", 0x30, 0x00, DEF , 1, 1, 1), /* Venezuela */ + COUNTRY_CHPLAN_ENT("VG", 0x76, 0x05, DEF , 1, 1, 1), /* British Virgin Islands (UK) */ + COUNTRY_CHPLAN_ENT("VI", 0x76, 0x00, DEF , 1, 1, 1), /* United States Virgin Islands (USA) */ + COUNTRY_CHPLAN_ENT("VN", 0x5E, 0x00, DEF , 1, 1, 1), /* Vietnam */ + COUNTRY_CHPLAN_ENT("VU", 0x26, 0x00, DEF , 1, 1, 1), /* Vanuatu */ + COUNTRY_CHPLAN_ENT("WF", 0x3A, 0x00, DEF , 1, 1, 1), /* Wallis and Futuna (France) */ + COUNTRY_CHPLAN_ENT("WS", 0x76, 0x00, DEF , 1, 1, 1), /* Samoa */ + COUNTRY_CHPLAN_ENT("XK", 0x5E, 0x00, DEF , 1, 1, 1), /* Kosovo */ + COUNTRY_CHPLAN_ENT("YE", 0x3A, 0x00, DEF , 1, 1, 1), /* Yemen */ + COUNTRY_CHPLAN_ENT("YT", 0x5E, 0x00, DEF , 1, 1, 1), /* Mayotte (France) */ + COUNTRY_CHPLAN_ENT("ZA", 0x5E, 0x06, DEF , 1, 1, 1), /* South Africa */ + COUNTRY_CHPLAN_ENT("ZM", 0x5E, 0x00, DEF , 1, 1, 1), /* Zambia */ + COUNTRY_CHPLAN_ENT("ZW", 0x5E, 0x00, DEF , 1, 1, 1), /* Zimbabwe */ +}; + +static bool rtk_regdb_get_chplan_from_alpha2(const char *alpha2, struct country_chplan *ent) +{ + const struct country_chplan *map = country_chplan_map; + u16 map_sz = sizeof(country_chplan_map) / sizeof(struct country_chplan); + int i; + + for (i = 0; i < map_sz; i++) { + if (strncmp(alpha2, map[i].alpha2, 2) == 0) { + if (ent) + _rtw_memcpy(ent, &map[i], sizeof(*ent)); + return true; + } + } + return false; +} + +#ifdef CONFIG_RTW_DEBUG +static void rtk_regdb_dump_chplan_test(void *sel) +{ + int i, j; + + /* check 2G CHD redundent */ + for (i = RTW_CHD_2G_00; i < RTW_CHD_2G_MAX; i++) { + for (j = RTW_CHD_2G_00; j < i; j++) { + if (CH_LIST_LEN(rtw_channel_def_2g[i]) == CH_LIST_LEN(rtw_channel_def_2g[j]) + && _rtw_memcmp(&CH_LIST_CH(rtw_channel_def_2g[i], 0), &CH_LIST_CH(rtw_channel_def_2g[j], 0), CH_LIST_LEN(rtw_channel_def_2g[i]) + 1) == _TRUE) + RTW_PRINT_SEL(sel, "2G chd:%u and %u is the same\n", i, j); + } + } + + /* check 2G CHD invalid channel */ + for (i = RTW_CHD_2G_00; i < RTW_CHD_2G_MAX; i++) { + for (j = 0; j < CH_LIST_LEN(rtw_channel_def_2g[i]); j++) { + if (rtw_bch2freq(BAND_ON_24G, CH_LIST_CH(rtw_channel_def_2g[i], j)) == 0) + RTW_PRINT_SEL(sel, "2G invalid ch:%u at (%d,%d)\n", CH_LIST_CH(rtw_channel_def_2g[i], j), i, j); + } + } + +#if CONFIG_IEEE80211_BAND_5GHZ + /* check 5G CHD redundent */ + for (i = RTW_CHD_5G_00; i < RTW_CHD_5G_MAX; i++) { + for (j = RTW_CHD_5G_00; j < i; j++) { + if (CH_LIST_LEN(rtw_channel_def_5g[i]) == CH_LIST_LEN(rtw_channel_def_5g[j]) + && _rtw_memcmp(&CH_LIST_CH(rtw_channel_def_5g[i], 0), &CH_LIST_CH(rtw_channel_def_5g[j], 0), CH_LIST_LEN(rtw_channel_def_5g[i]) + 1) == _TRUE) + RTW_PRINT_SEL(sel, "5G chd:%u and %u is the same\n", i, j); + } + } + + /* check 5G CHD invalid channel */ + for (i = RTW_CHD_5G_00; i < RTW_CHD_5G_MAX; i++) { + for (j = 0; j < CH_LIST_LEN(rtw_channel_def_5g[i]); j++) { + if (rtw_bch2freq(BAND_ON_5G, CH_LIST_CH(rtw_channel_def_5g[i], j)) == 0) + RTW_PRINT_SEL(sel, "5G invalid ch:%u at (%d,%d)\n", CH_LIST_CH(rtw_channel_def_5g[i], j), i, j); + } + } +#endif + +#if CONFIG_IEEE80211_BAND_6GHZ + /* check 6G CHD redundent */ + for (i = RTW_CHD_6G_00; i < RTW_CHD_6G_MAX; i++) { + for (j = RTW_CHD_6G_00; j < i; j++) { + if (CH_LIST_LEN(rtw_channel_def_6g[i]) == CH_LIST_LEN(rtw_channel_def_6g[j]) + && _rtw_memcmp(&CH_LIST_CH(rtw_channel_def_6g[i], 0), &CH_LIST_CH(rtw_channel_def_6g[j], 0), CH_LIST_LEN(rtw_channel_def_6g[i]) + 1) == _TRUE) + RTW_PRINT_SEL(sel, "6G chd:%u and %u is the same\n", i, j); + } + } + + /* check 6G CHD invalid channel */ + for (i = RTW_CHD_6G_00; i < RTW_CHD_6G_MAX; i++) { + for (j = 0; j < CH_LIST_LEN(rtw_channel_def_6g[i]); j++) { + if (rtw_bch2freq(BAND_ON_6G, CH_LIST_CH(rtw_channel_def_6g[i], j)) == 0) + RTW_PRINT_SEL(sel, "6G invalid ch:%u at (%d,%d)\n", CH_LIST_CH(rtw_channel_def_6g[i], j), i, j); + } + } +#endif + + /* check chplan 2G_5G redundent */ + for (i = 0; i < RTW_ChannelPlanMap_size; i++) { + if (!rtw_is_channel_plan_valid(i)) + continue; + for (j = 0; j < i; j++) { + if (!rtw_is_channel_plan_valid(j)) + continue; + if (_rtw_memcmp(&RTW_ChannelPlanMap[i], &RTW_ChannelPlanMap[j], sizeof(RTW_ChannelPlanMap[i])) == _TRUE) + RTW_PRINT_SEL(sel, "channel plan 0x%02x and 0x%02x is the same\n", i, j); + } + } + +#if CONFIG_IEEE80211_BAND_6GHZ + /* check chplan 6G redundent */ + for (i = 0; i < rtw_chplan_6g_map_size; i++) { + if (!rtw_is_channel_plan_6g_valid(i)) + continue; + for (j = 0; j < i; j++) { + if (!rtw_is_channel_plan_6g_valid(j)) + continue; + if (_rtw_memcmp(&rtw_chplan_6g_map[i], &rtw_chplan_6g_map[j], sizeof(rtw_chplan_6g_map[i])) == _TRUE) + RTW_PRINT_SEL(sel, "channel plan 6g 0x%02x and 0x%02x is the same\n", i, j); + } + } +#endif + + + /* check country invalid chplan/chplan_6g */ +{ + struct country_chplan ent; + u8 code[2]; + + for (code[0] = 'A'; code[0] <= 'Z'; code[0]++) { + for (code[1] = 'A'; code[1] <= 'Z'; code[1]++) { + if (!rtw_get_chplan_from_country(code, &ent)) + continue; + if (!rtw_is_channel_plan_valid(ent.domain_code)) + RTW_PRINT_SEL(sel, "country \"%c%c\" has invalid domain_code:0x%02X\n", code[0], code[1], ent.domain_code); + #if CONFIG_IEEE80211_BAND_6GHZ + if (!rtw_is_channel_plan_6g_valid(ent.domain_code_6g)) + RTW_PRINT_SEL(sel, "country \"%c%c\" has invalid domain_code_6g:0x%02X\n", code[0], code[1], ent.domain_code_6g); + #endif + } + } +} +} +#endif /* CONFIG_RTW_DEBUG */ + +static void rtk_regdb_get_ver_str(char *buf, size_t buf_len) +{ + snprintf(buf, buf_len, "%s%s-%s%s", RTW_DOMAIN_MAP_VER, RTW_DOMAIN_MAP_M_VER, RTW_COUNTRY_MAP_VER, RTW_COUNTRY_MAP_M_VER); +} + +struct rtw_regdb_ops regdb_ops = { + .get_default_regd_2g = rtk_regdb_get_default_regd_2g, +#if CONFIG_IEEE80211_BAND_5GHZ + .get_default_regd_5g = rtk_regdb_get_default_regd_5g, +#endif + .is_domain_code_valid = rtk_regdb_is_domain_code_valid, + .domain_get_ch = rtk_regdb_domain_get_ch, + +#if CONFIG_IEEE80211_BAND_6GHZ + .get_default_regd_6g = rtk_regdb_get_default_regd_6g, + .is_domain_code_6g_valid = rtk_regdb_is_domain_code_6g_valid, + .domain_6g_get_ch = rtk_regdb_domain_6g_get_ch, +#endif + + .get_chplan_from_alpha2 = rtk_regdb_get_chplan_from_alpha2, + +#ifdef CONFIG_RTW_DEBUG + .dump_chplan_test = rtk_regdb_dump_chplan_test, +#endif + .get_ver_str = rtk_regdb_get_ver_str, +}; + diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_rf.c b/drivers/net/wireless/rtl8822cs/core/rtw_rf.c index b70f23fde..d6b342eb0 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_rf.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_rf.c @@ -52,6 +52,7 @@ u8 op_chs_of_cch_2g_40m[CENTER_CH_2G_40M_NUM][2] = { {9, 13}, /* 11 */ }; +#if CONFIG_IEEE80211_BAND_5GHZ u8 center_ch_5g_all[CENTER_CH_5G_ALL_NUM] = { /* G00 */36, 38, 40, 42, @@ -120,23 +121,6 @@ u8 center_ch_5g_40m[CENTER_CH_5G_40M_NUM] = { /* G13 */175 }; -u8 center_ch_5g_20m_40m[CENTER_CH_5G_20M_NUM + CENTER_CH_5G_40M_NUM] = { -/* G00 */36, 38, 40, -/* G01 */44, 46, 48, -/* G02 */52, 54, 56, -/* G03 */60, 62, 64, -/* G04 */100, 102, 104, -/* G05 */108, 110, 112, -/* G06 */116, 118, 120, -/* G07 */124, 126, 128, -/* G08 */132, 134, 136, -/* G09 */140, 142, 144, -/* G10 */149, 151, 153, -/* G11 */157, 159, 161, -/* G12 */165, 167, 169, -/* G13 */173, 175, 177 -}; - u8 op_chs_of_cch_5g_40m[CENTER_CH_5G_40M_NUM][2] = { {36, 40}, /* 38 */ {44, 48}, /* 46 */ @@ -185,6 +169,118 @@ u8 op_chs_of_cch_5g_160m[CENTER_CH_5G_160M_NUM][8] = { {100, 104, 108, 112, 116, 120, 124, 128}, /* 114 */ {149, 153, 157, 161, 165, 169, 173, 177}, /* 163 */ }; +#endif /* CONFIG_IEEE80211_BAND_5GHZ */ + +#if CONFIG_IEEE80211_BAND_6GHZ +u8 center_ch_6g_20m[CENTER_CH_6G_20M_NUM] = { + 1, 5, 9, 13, 17, 21, 25, 29, + 33, 37, 41, 45, 49, 53, 57, 61, + 65, 69, 73, 77, 81, 85, 89, 93, + 97, 101, 105, 109, 113, 117, 121, 125, + 129, 133, 137, 141, 145, 149, 153, 157, + 161, 165, 169, 173, 177, 181, 185, 189, + 193, 197, 201, 205, 209, 213, 217, 221, + 225, 229, 233, 237, 241, 245, 249, 253, +}; + +u8 center_ch_6g_40m[CENTER_CH_6G_40M_NUM] = { + 3, 11, 19, 27, + 35, 43, 51, 59, + 67, 75, 83, 91, + 99, 107, 115, 123, + 131, 139, 147, 155, + 163, 171, 179, 187, + 195, 203, 211, 219, + 227, 235, 243, 251, +}; + +u8 op_chs_of_cch_6g_40m[CENTER_CH_6G_40M_NUM][2] = { + {1, 5}, /* 3 */ + {9, 13}, /* 11 */ + {17, 21}, /* 19 */ + {25, 29}, /* 27 */ + {33, 37}, /* 35 */ + {41, 45}, /* 43 */ + {49, 53}, /* 51 */ + {57, 61}, /* 59 */ + {65, 69}, /* 67 */ + {73, 77}, /* 75 */ + {81, 85}, /* 83 */ + {89, 93}, /* 91 */ + {97, 101}, /* 99 */ + {105, 109}, /* 107 */ + {113, 117}, /* 115 */ + {121, 125}, /* 123 */ + {129, 133}, /* 131 */ + {137, 141}, /* 139 */ + {145, 149}, /* 147 */ + {153, 157}, /* 155 */ + {161, 165}, /* 163 */ + {169, 173}, /* 171 */ + {177, 181}, /* 179 */ + {185, 189}, /* 187 */ + {193, 197}, /* 195 */ + {201, 205}, /* 203 */ + {209, 213}, /* 211 */ + {217, 221}, /* 219 */ + {225, 229}, /* 227 */ + {233, 237}, /* 235 */ + {241, 245}, /* 243 */ + {249, 253}, /* 251 */ +}; + +u8 center_ch_6g_80m[CENTER_CH_6G_80M_NUM] = { + 7, 23, + 39, 55, + 71, 87, + 103, 119, + 135, 151, + 167, 183, + 199, 215, + 231, 247, +}; + +u8 op_chs_of_cch_6g_80m[CENTER_CH_6G_80M_NUM][4] = { + {1, 5, 9, 13}, /* 7 */ + {17, 21, 25, 29}, /* 23 */ + {33, 37, 41, 45}, /* 39 */ + {49, 53, 57, 61}, /* 55 */ + {65, 69, 73, 77}, /* 71 */ + {81, 85, 89, 93}, /* 87 */ + {97, 101, 105, 109}, /* 103 */ + {113, 117, 121, 125}, /* 119 */ + {129, 133, 137, 141}, /* 135 */ + {145, 149, 153, 157}, /* 151 */ + {161, 165, 169, 173}, /* 167 */ + {177, 181, 185, 189}, /* 183 */ + {193, 197, 201, 205}, /* 199 */ + {209, 213, 217, 221}, /* 215 */ + {225, 229, 233, 237}, /* 231 */ + {241, 245, 249, 253}, /* 247 */ +}; + +u8 center_ch_6g_160m[CENTER_CH_6G_160M_NUM] = { + 15, + 47, + 79, + 111, + 143, + 175, + 207, + 239, +}; + +u8 op_chs_of_cch_6g_160m[CENTER_CH_6G_160M_NUM][8] = { + {1, 5, 9, 13, 17, 21, 25, 29}, /* 15 */ + {33, 37, 41, 45, 49, 53, 57, 61}, /* 47 */ + {65, 69, 73, 77, 81, 85, 89, 93}, /* 79 */ + {97, 101, 105, 109, 113, 117, 121, 125}, /* 111 */ + {129, 133, 137, 141, 145, 149, 153, 157}, /* 143 */ + {161, 165, 169, 173, 177, 181, 185, 189}, /* 175 */ + {193, 197, 201, 205, 209, 213, 217, 221}, /* 207 */ + {225, 229, 233, 237, 241, 245, 249, 253}, /* 239 */ +}; +#endif /* CONFIG_IEEE80211_BAND_6GHZ */ struct center_chs_ent_t { u8 ch_num; @@ -196,22 +292,34 @@ struct center_chs_ent_t center_chs_2g_by_bw[] = { {CENTER_CH_2G_40M_NUM, center_ch_2g_40m}, }; +#if CONFIG_IEEE80211_BAND_5GHZ struct center_chs_ent_t center_chs_5g_by_bw[] = { {CENTER_CH_5G_20M_NUM, center_ch_5g_20m}, {CENTER_CH_5G_40M_NUM, center_ch_5g_40m}, {CENTER_CH_5G_80M_NUM, center_ch_5g_80m}, {CENTER_CH_5G_160M_NUM, center_ch_5g_160m}, }; +#endif + +#if CONFIG_IEEE80211_BAND_6GHZ +struct center_chs_ent_t center_chs_6g_by_bw[] = { + {CENTER_CH_6G_20M_NUM, center_ch_6g_20m}, + {CENTER_CH_6G_40M_NUM, center_ch_6g_40m}, + {CENTER_CH_6G_80M_NUM, center_ch_6g_80m}, + {CENTER_CH_6G_160M_NUM, center_ch_6g_160m}, +}; +#endif /* - * Get center channel of smaller bandwidth by @param cch, @param bw, @param offset + * Get center channel of smaller bandwidth by @param band, @param cch, @param bw, @param offset + * @band: the given band * @cch: the given center channel * @bw: the given bandwidth * @offset: the given primary SC offset of the given bandwidth * * return center channel of smaller bandiwdth if valid, or 0 */ -u8 rtw_get_scch_by_cch_offset(u8 cch, u8 bw, u8 offset) +static u8 _rtw_get_scch_by_bcch_offset(enum band_type band, u8 cch, u8 bw, u8 offset) { u8 t_cch = 0; @@ -220,59 +328,110 @@ u8 rtw_get_scch_by_cch_offset(u8 cch, u8 bw, u8 offset) goto exit; } - if (offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) { + if (offset == CHAN_OFFSET_NO_EXT) { rtw_warn_on(1); goto exit; } - /* 2.4G, 40MHz */ - if (cch >= 3 && cch <= 11 && bw == CHANNEL_WIDTH_40) { - t_cch = (offset == HAL_PRIME_CHNL_OFFSET_UPPER) ? cch + 2 : cch - 2; - goto exit; + if (band == BAND_ON_24G) { + /* 2.4G, 40MHz */ + if (cch >= 3 && cch <= 11 && bw == CHANNEL_WIDTH_40) { + t_cch = (offset == CHAN_OFFSET_LOWER) ? cch + 2 : cch - 2; + goto exit; + } } - /* 5G, 160MHz */ - if (cch >= 50 && cch <= 163 && bw == CHANNEL_WIDTH_160) { - t_cch = (offset == HAL_PRIME_CHNL_OFFSET_UPPER) ? cch + 8 : cch - 8; - goto exit; +#if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) { + /* 5G, 160MHz */ + if (cch >= 50 && cch <= 163 && bw == CHANNEL_WIDTH_160) { + t_cch = (offset == CHAN_OFFSET_LOWER) ? cch + 8 : cch - 8; + goto exit; - /* 5G, 80MHz */ - } else if (cch >= 42 && cch <= 171 && bw == CHANNEL_WIDTH_80) { - t_cch = (offset == HAL_PRIME_CHNL_OFFSET_UPPER) ? cch + 4 : cch - 4; - goto exit; + /* 5G, 80MHz */ + } else if (cch >= 42 && cch <= 171 && bw == CHANNEL_WIDTH_80) { + t_cch = (offset == CHAN_OFFSET_LOWER) ? cch + 4 : cch - 4; + goto exit; - /* 5G, 40MHz */ - } else if (cch >= 38 && cch <= 175 && bw == CHANNEL_WIDTH_40) { - t_cch = (offset == HAL_PRIME_CHNL_OFFSET_UPPER) ? cch + 2 : cch - 2; - goto exit; + /* 5G, 40MHz */ + } else if (cch >= 38 && cch <= 175 && bw == CHANNEL_WIDTH_40) { + t_cch = (offset == CHAN_OFFSET_LOWER) ? cch + 2 : cch - 2; + goto exit; - } else { - rtw_warn_on(1); - goto exit; + } } +#endif + +#if CONFIG_IEEE80211_BAND_6GHZ + else if (band == BAND_ON_6G) { + /* 6G, 160MHz */ + if (cch >= 15 && cch <= 239 && bw == CHANNEL_WIDTH_160) { + t_cch = (offset == CHAN_OFFSET_LOWER) ? cch + 8 : cch - 8; + goto exit; + + /* 6G, 80MHz */ + } else if (cch >= 7 && cch <= 247 && bw == CHANNEL_WIDTH_80) { + t_cch = (offset == CHAN_OFFSET_LOWER) ? cch + 4 : cch - 4; + goto exit; + + /* 6G, 40MHz */ + } else if (cch >= 3 && cch <= 251 && bw == CHANNEL_WIDTH_40) { + t_cch = (offset == CHAN_OFFSET_LOWER) ? cch + 2 : cch - 2; + goto exit; + + } + } +#endif + + rtw_warn_on(1); exit: return t_cch; } +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY u8 rtw_get_scch_by_cch_offset(u8 cch, u8 bw, u8 offset) +{ + return _rtw_get_scch_by_bcch_offset(rtw_is_2g_ch(cch) ? BAND_ON_24G : BAND_ON_5G, cch, bw, offset); +} + +RTW_FUNC_2G_5G_ONLY u8 rtw_get_scch_by_cch_opch(u8 cch, u8 bw, u8 opch) +{ + u8 offset = CHAN_OFFSET_NO_EXT; + + if (opch > cch) + offset = CHAN_OFFSET_LOWER; + else if (opch < cch) + offset = CHAN_OFFSET_UPPER; + + return rtw_get_scch_by_cch_offset(cch, bw, offset); +} +#endif + +u8 rtw_get_scch_by_bcch_offset(enum band_type band, u8 cch, u8 bw, u8 offset) +{ + return _rtw_get_scch_by_bcch_offset(band, cch, bw, offset); +} + /* - * Get center channel of smaller bandwidth by @param cch, @param bw, @param opch + * Get center channel of smaller bandwidth by @param band, @param cch, @param bw, @param opch + * @band: the given band * @cch: the given center channel * @bw: the given bandwidth * @opch: the given operating channel * * return center channel of smaller bandiwdth if valid, or 0 */ -u8 rtw_get_scch_by_cch_opch(u8 cch, u8 bw, u8 opch) +u8 rtw_get_scch_by_bcch_opch(enum band_type band, u8 cch, u8 bw, u8 opch) { - u8 offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + u8 offset = CHAN_OFFSET_NO_EXT; if (opch > cch) - offset = HAL_PRIME_CHNL_OFFSET_UPPER; + offset = CHAN_OFFSET_LOWER; else if (opch < cch) - offset = HAL_PRIME_CHNL_OFFSET_LOWER; + offset = CHAN_OFFSET_UPPER; - return rtw_get_scch_by_cch_offset(cch, bw, offset); + return rtw_get_scch_by_bcch_offset(band, cch, bw, offset); } struct op_chs_ent_t { @@ -285,14 +444,25 @@ struct op_chs_ent_t op_chs_of_cch_2g_by_bw[] = { {2, (u8 *)op_chs_of_cch_2g_40m}, }; +#if CONFIG_IEEE80211_BAND_5GHZ struct op_chs_ent_t op_chs_of_cch_5g_by_bw[] = { {1, center_ch_5g_20m}, {2, (u8 *)op_chs_of_cch_5g_40m}, {4, (u8 *)op_chs_of_cch_5g_80m}, {8, (u8 *)op_chs_of_cch_5g_160m}, }; +#endif -inline u8 center_chs_2g_num(u8 bw) +#if CONFIG_IEEE80211_BAND_6GHZ +struct op_chs_ent_t op_chs_of_cch_6g_by_bw[] = { + {1, center_ch_6g_20m}, + {2, (u8 *)op_chs_of_cch_6g_40m}, + {4, (u8 *)op_chs_of_cch_6g_80m}, + {8, (u8 *)op_chs_of_cch_6g_160m}, +}; +#endif + +u8 center_chs_2g_num(u8 bw) { if (bw > CHANNEL_WIDTH_40) return 0; @@ -300,7 +470,7 @@ inline u8 center_chs_2g_num(u8 bw) return center_chs_2g_by_bw[bw].ch_num; } -inline u8 center_chs_2g(u8 bw, u8 id) +u8 center_chs_2g(u8 bw, u8 id) { if (bw > CHANNEL_WIDTH_40) return 0; @@ -311,7 +481,8 @@ inline u8 center_chs_2g(u8 bw, u8 id) return center_chs_2g_by_bw[bw].chs[id]; } -inline u8 center_chs_5g_num(u8 bw) +#if CONFIG_IEEE80211_BAND_5GHZ +u8 center_chs_5g_num(u8 bw) { if (bw > CHANNEL_WIDTH_160) return 0; @@ -319,7 +490,7 @@ inline u8 center_chs_5g_num(u8 bw) return center_chs_5g_by_bw[bw].ch_num; } -inline u8 center_chs_5g(u8 bw, u8 id) +u8 center_chs_5g(u8 bw, u8 id) { if (bw > CHANNEL_WIDTH_160) return 0; @@ -329,6 +500,48 @@ inline u8 center_chs_5g(u8 bw, u8 id) return center_chs_5g_by_bw[bw].chs[id]; } +#endif /* CONFIG_IEEE80211_BAND_5GHZ */ + +#if CONFIG_IEEE80211_BAND_6GHZ +u8 center_chs_6g_num(u8 bw) +{ + if (bw > CHANNEL_WIDTH_160) + return 0; + + return center_chs_6g_by_bw[bw].ch_num; +} + +u8 center_chs_6g(u8 bw, u8 id) +{ + if (bw > CHANNEL_WIDTH_160) + return 0; + + if (id >= center_chs_6g_num(bw)) + return 0; + + return center_chs_6g_by_bw[bw].chs[id]; +} +#endif /* CONFIG_IEEE80211_BAND_6GHZ */ + +u8 (*center_chs_num_of_band[BAND_MAX])(u8 bw) = { + [BAND_ON_24G] = center_chs_2g_num, +#if CONFIG_IEEE80211_BAND_5GHZ + [BAND_ON_5G] = center_chs_5g_num, +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + [BAND_ON_6G] = center_chs_6g_num, +#endif +}; + +u8 (*center_chs_of_band[BAND_MAX])(u8 bw, u8 id) = { + [BAND_ON_24G] = center_chs_2g, +#if CONFIG_IEEE80211_BAND_5GHZ + [BAND_ON_5G] = center_chs_5g, +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + [BAND_ON_6G] = center_chs_6g, +#endif +}; /* * Get available op channels by @param cch, @param bw @@ -339,23 +552,35 @@ inline u8 center_chs_5g(u8 bw, u8 id) * * return valid (1) or not (0) */ -u8 rtw_get_op_chs_by_cch_bw(u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num) +static u8 _rtw_get_op_chs_by_bcch_bw(enum band_type band, u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num) { int i; struct center_chs_ent_t *c_chs_ent = NULL; struct op_chs_ent_t *op_chs_ent = NULL; u8 valid = 1; - if (cch <= 14 + if (band == BAND_ON_24G && bw <= CHANNEL_WIDTH_40 ) { c_chs_ent = ¢er_chs_2g_by_bw[bw]; op_chs_ent = &op_chs_of_cch_2g_by_bw[bw]; - } else if (cch >= 36 && cch <= 177 + +#if CONFIG_IEEE80211_BAND_5GHZ + } else if (band == BAND_ON_5G && bw <= CHANNEL_WIDTH_160 ) { c_chs_ent = ¢er_chs_5g_by_bw[bw]; op_chs_ent = &op_chs_of_cch_5g_by_bw[bw]; +#endif + +#if CONFIG_IEEE80211_BAND_6GHZ + } else if (band == BAND_ON_6G + && bw <= CHANNEL_WIDTH_160 + ) { + c_chs_ent = ¢er_chs_6g_by_bw[bw]; + op_chs_ent = &op_chs_of_cch_6g_by_bw[bw]; +#endif + } else { valid = 0; goto exit; @@ -377,79 +602,229 @@ exit: return valid; } -u8 rtw_get_offset_by_chbw(u8 ch, u8 bw, u8 *r_offset) +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY u8 rtw_get_op_chs_by_cch_bw(u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num) +{ + return _rtw_get_op_chs_by_bcch_bw(rtw_is_2g_ch(cch) ? BAND_ON_24G : BAND_ON_5G, cch, bw, op_chs, op_ch_num); +} +#endif + +u8 rtw_get_op_chs_by_bcch_bw(enum band_type band, u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num) +{ + return _rtw_get_op_chs_by_bcch_bw(band, cch, bw, op_chs, op_ch_num); +} + +static u8 rtw_get_offsets_by_chbw_2g(u8 ch, u8 bw, u8 *r_offset, u8 *r_offset_num) { u8 valid = 1; - u8 offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + u8 offset[2] = {CHAN_OFFSET_NO_EXT, CHAN_OFFSET_NO_EXT}; + u8 offset_num = 1; - if (bw == CHANNEL_WIDTH_20) - goto exit; - - if (bw >= CHANNEL_WIDTH_80 && ch <= 14) { + if (bw >= CHANNEL_WIDTH_80 + || ch < 1 || ch > 14 + ) { valid = 0; goto exit; } + if (bw == CHANNEL_WIDTH_20) + goto exit; + if (ch >= 1 && ch <= 4) - offset = HAL_PRIME_CHNL_OFFSET_LOWER; + offset[0] = CHAN_OFFSET_UPPER; else if (ch >= 5 && ch <= 9) { - if (*r_offset == HAL_PRIME_CHNL_OFFSET_LOWER || *r_offset == HAL_PRIME_CHNL_OFFSET_UPPER) - offset = *r_offset; /* both lower and upper is valid, obey input value */ - else - offset = HAL_PRIME_CHNL_OFFSET_UPPER; /* default use upper */ + if (!r_offset_num) { + /* return single offset */ + if (r_offset && (*r_offset == CHAN_OFFSET_UPPER || *r_offset == CHAN_OFFSET_LOWER)) + offset[0] = *r_offset; /* both lower and upper is valid, obey input value */ + else + offset[0] = CHAN_OFFSET_LOWER; /* default use primary upper */ + } else { + offset_num = 2; + offset[0] = CHAN_OFFSET_LOWER; + offset[1] = CHAN_OFFSET_UPPER; + } } else if (ch >= 10 && ch <= 13) - offset = HAL_PRIME_CHNL_OFFSET_UPPER; - else if (ch == 14) { + offset[0] = CHAN_OFFSET_LOWER; + else { valid = 0; /* ch14 doesn't support 40MHz bandwidth */ goto exit; - } else if (ch >= 36 && ch <= 177) { - switch (ch) { - case 36: - case 44: - case 52: - case 60: - case 100: - case 108: - case 116: - case 124: - case 132: - case 140: - case 149: - case 157: - case 165: - case 173: - offset = HAL_PRIME_CHNL_OFFSET_LOWER; - break; - case 40: - case 48: - case 56: - case 64: - case 104: - case 112: - case 120: - case 128: - case 136: - case 144: - case 153: - case 161: - case 169: - case 177: - offset = HAL_PRIME_CHNL_OFFSET_UPPER; - break; - default: - valid = 0; - break; + } + +exit: + if (valid) { + if (r_offset) { + *r_offset = offset[0]; + if (offset_num == 2) + *(r_offset + 1) = offset[1]; } - } else + if (r_offset_num) + *r_offset_num = offset_num; + } + return valid; +} + +#if CONFIG_IEEE80211_BAND_5GHZ +static u8 rtw_get_offset_by_chbw_5g(u8 ch, u8 bw, u8 *r_offset) +{ + u8 valid = 1; + u8 offset = CHAN_OFFSET_NO_EXT; + + if (ch < 36 || ch > 177) { valid = 0; + goto exit; + } + + switch (ch) { + case 36: + case 44: + case 52: + case 60: + case 100: + case 108: + case 116: + case 124: + case 132: + case 140: + case 149: + case 157: + case 165: + case 173: + if (bw >= CHANNEL_WIDTH_40 && bw <= CHANNEL_WIDTH_160) + offset = CHAN_OFFSET_UPPER; + break; + case 40: + case 48: + case 56: + case 64: + case 104: + case 112: + case 120: + case 128: + case 136: + case 144: + case 153: + case 161: + case 169: + case 177: + if (bw >= CHANNEL_WIDTH_40 && bw <= CHANNEL_WIDTH_160) + offset = CHAN_OFFSET_LOWER; + break; + default: + valid = 0; + break; + } exit: if (valid && r_offset) *r_offset = offset; return valid; } +#endif -u8 rtw_get_center_ch(u8 ch, u8 bw, u8 offset) +#if CONFIG_IEEE80211_BAND_6GHZ +static u8 rtw_get_offset_by_chbw_6g(u8 ch, u8 bw, u8 *r_offset) +{ + if (ch >= 1 && ch <= 253) { + u8 mod8 = ch % 8; + + if (mod8 == 1) { + if (bw == CHANNEL_WIDTH_20) + *r_offset = CHAN_OFFSET_NO_EXT; + else + *r_offset = CHAN_OFFSET_UPPER; + return 1; + } + if (mod8 == 5) { + if (bw == CHANNEL_WIDTH_20) + *r_offset = CHAN_OFFSET_NO_EXT; + else + *r_offset = CHAN_OFFSET_LOWER; + return 1; + } + } + + return 0; +} +#endif + +u8 rtw_get_offset_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 *r_offset) +{ + if (band == BAND_ON_24G) { + u8 offset[1] = {r_offset ? *r_offset : CHAN_OFFSET_NO_EXT}; + u8 ret = rtw_get_offsets_by_chbw_2g(ch, bw, offset, NULL); + + if (ret && r_offset) + *r_offset = offset[0]; + return ret; + } +#if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) + return rtw_get_offset_by_chbw_5g(ch, bw, r_offset); +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + else if (band == BAND_ON_6G) + return rtw_get_offset_by_chbw_6g(ch, bw, r_offset); +#endif + return 0; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY u8 rtw_get_offset_by_chbw(u8 ch, u8 bw, u8 *r_offset) +{ + return rtw_get_offset_by_bchbw(rtw_is_2g_ch(ch) ? BAND_ON_24G : BAND_ON_5G, ch, bw, r_offset); +} +#endif + +u8 rtw_get_offsets_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 *r_offset, u8 *r_offset_num) +{ + u8 ret = 0; + + if (band == BAND_ON_24G) + ret = rtw_get_offsets_by_chbw_2g(ch, bw, r_offset, r_offset_num); +#if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) { + ret = rtw_get_offset_by_chbw_5g(ch, bw, r_offset); + if (ret && r_offset_num) + *r_offset_num = 1; + } +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + else if (band == BAND_ON_6G) { + ret = rtw_get_offset_by_chbw_6g(ch, bw, r_offset); + if (ret && r_offset_num) + *r_offset_num = 1; + } +#endif + return ret; +} + +static u8 rtw_get_center_ch_2g(u8 ch, u8 bw, u8 offset) +{ + u8 cch = ch; + + if (bw == CHANNEL_WIDTH_80) { + /* special case for 2.4G */ + cch = 7; + } else if (bw == CHANNEL_WIDTH_40) { + if (offset == CHAN_OFFSET_UPPER) + cch = ch + 2; + else if (offset == CHAN_OFFSET_LOWER) + cch = ch - 2; + + } else if (bw == CHANNEL_WIDTH_20 + || bw == CHANNEL_WIDTH_10 + || bw == CHANNEL_WIDTH_5 + ) + ; /* same as ch */ + else + rtw_warn_on(1); + + return cch; +} + +#if CONFIG_IEEE80211_BAND_5GHZ +static u8 rtw_get_center_ch_5g(u8 ch, u8 bw, u8 offset) { u8 cch = ch; @@ -465,9 +840,7 @@ u8 rtw_get_center_ch(u8 ch, u8 bw, u8 offset) } } else if (bw == CHANNEL_WIDTH_80) { - if (ch <= 14) - cch = 7; /* special case for 2.4G */ - else if (ch % 4 == 0) { + if (ch % 4 == 0) { if (ch >= 36 && ch <= 48) cch = 42; else if (ch >= 52 && ch <= 64) @@ -486,9 +859,9 @@ u8 rtw_get_center_ch(u8 ch, u8 bw, u8 offset) } } else if (bw == CHANNEL_WIDTH_40) { - if (offset == HAL_PRIME_CHNL_OFFSET_LOWER) + if (offset == CHAN_OFFSET_UPPER) cch = ch + 2; - else if (offset == HAL_PRIME_CHNL_OFFSET_UPPER) + else if (offset == CHAN_OFFSET_LOWER) cch = ch - 2; } else if (bw == CHANNEL_WIDTH_20 @@ -501,125 +874,228 @@ u8 rtw_get_center_ch(u8 ch, u8 bw, u8 offset) return cch; } +#endif -u8 rtw_get_ch_group(u8 ch, u8 *group, u8 *cck_group) +#if CONFIG_IEEE80211_BAND_6GHZ +static u8 rtw_get_center_ch_6g(u8 ch, u8 bw, u8 offset) { - BAND_TYPE band = BAND_MAX; - s8 gp = -1, cck_gp = -1; + static const u8 start[CHANNEL_WIDTH_MAX] = { + [CHANNEL_WIDTH_40] = 3, + [CHANNEL_WIDTH_80] = 7, + [CHANNEL_WIDTH_160] = 15, + }; + static const u8 shift[CHANNEL_WIDTH_MAX] = { + [CHANNEL_WIDTH_40] = 3, + [CHANNEL_WIDTH_80] = 4, + [CHANNEL_WIDTH_160] = 5, + }; + u8 cch = ch; - if (ch <= 14) { - band = BAND_ON_2_4G; - - if (1 <= ch && ch <= 2) - gp = 0; - else if (3 <= ch && ch <= 5) - gp = 1; - else if (6 <= ch && ch <= 8) - gp = 2; - else if (9 <= ch && ch <= 11) - gp = 3; - else if (12 <= ch && ch <= 14) - gp = 4; - else - band = BAND_MAX; - - if (ch == 14) - cck_gp = 5; - else - cck_gp = gp; - } else { - band = BAND_ON_5G; - - if (36 <= ch && ch <= 42) - gp = 0; - else if (44 <= ch && ch <= 48) - gp = 1; - else if (50 <= ch && ch <= 58) - gp = 2; - else if (60 <= ch && ch <= 64) - gp = 3; - else if (100 <= ch && ch <= 106) - gp = 4; - else if (108 <= ch && ch <= 114) - gp = 5; - else if (116 <= ch && ch <= 122) - gp = 6; - else if (124 <= ch && ch <= 130) - gp = 7; - else if (132 <= ch && ch <= 138) - gp = 8; - else if (140 <= ch && ch <= 144) - gp = 9; - else if (149 <= ch && ch <= 155) - gp = 10; - else if (157 <= ch && ch <= 161) - gp = 11; - else if (165 <= ch && ch <= 171) - gp = 12; - else if (173 <= ch && ch <= 177) - gp = 13; - else - band = BAND_MAX; - } - - if (band == BAND_MAX - || (band == BAND_ON_2_4G && cck_gp == -1) - || gp == -1 - ) { - RTW_WARN("%s invalid channel:%u", __func__, ch); + if (bw < CHANNEL_WIDTH_20 || bw > CHANNEL_WIDTH_160) { rtw_warn_on(1); goto exit; } - if (group) - *group = gp; - if (cck_group && band == BAND_ON_2_4G) - *cck_group = cck_gp; + if (bw == CHANNEL_WIDTH_20) + goto exit; + + cch = (((ch - 1) >> shift[bw]) << shift[bw]) + start[bw]; exit: - return band; -} - -#if CONFIG_IEEE80211_BAND_6GHZ -int rtw_6gch2freq(int chan) -{ - if (chan >= 1 && chan <= 253) - return 5950 + chan * 5; - - return 0; /* not supported */ + return cch; } #endif -int rtw_ch2freq(int chan) +u8 rtw_get_center_ch_by_band(enum band_type band, u8 ch, u8 bw, u8 offset) { - /* see 802.11 17.3.8.3.2 and Annex J - * there are overlapping channel numbers in 5GHz and 2GHz bands */ + if (band == BAND_ON_24G) + return rtw_get_center_ch_2g(ch, bw, offset); +#if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) + return rtw_get_center_ch_5g(ch, bw, offset); +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + else if (band == BAND_ON_6G) + return rtw_get_center_ch_6g(ch, bw, offset); +#endif + return 0; +} - /* - * RTK: don't consider the overlapping channel numbers: 5G channel <= 14, - * because we don't support it. simply judge from channel number - */ +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY u8 rtw_get_center_ch(u8 ch, u8 bw, u8 offset) +{ + return rtw_get_center_ch_by_band(rtw_is_2g_ch(ch) ? BAND_ON_24G : BAND_ON_5G, ch, bw, offset); +} +#endif - if (chan >= 1 && chan <= 14) { - if (chan == 14) +/** + * rtw_is_bchbw_grouped - test if the two ch settings can be grouped together + * @band_a: band of set a + * @ch_a: ch of set a + * @bw_a: bw of set a + * @offset_a: offset of set a + * @band_b: band of set b + * @ch_b: ch of set b + * @bw_b: bw of set b + * @offset_b: offset of set b + */ +bool _rtw_is_bchbw_grouped(enum band_type band_a, u8 ch_a, u8 bw_a, u8 offset_a + , enum band_type band_b, u8 ch_b, u8 bw_b, u8 offset_b) +{ + bool is_grouped = _FALSE; + + if (band_a != band_b || ch_a != ch_b) { + /* band/ch is different */ + goto exit; + } + + if ((bw_a == CHANNEL_WIDTH_40 || bw_a == CHANNEL_WIDTH_80 || bw_a == CHANNEL_WIDTH_160) + && (bw_b == CHANNEL_WIDTH_40 || bw_b == CHANNEL_WIDTH_80 || bw_b == CHANNEL_WIDTH_160) + ) { + if (offset_a != offset_b) + goto exit; + } + + is_grouped = _TRUE; + +exit: + return is_grouped; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY bool rtw_is_chbw_grouped(u8 ch_a, u8 bw_a, u8 offset_a, u8 ch_b, u8 bw_b, u8 offset_b) +{ + enum band_type band = BAND_ON_24G; /* unknown band, use same band for a & b */ + + return _rtw_is_bchbw_grouped(band, ch_a, bw_a, offset_a, band, ch_b, bw_b, offset_b); +} +#endif + +bool rtw_is_bchbw_grouped(enum band_type band_a, u8 ch_a, u8 bw_a, u8 offset_a + , enum band_type band_b, u8 ch_b, u8 bw_b, u8 offset_b) +{ + return _rtw_is_bchbw_grouped(band_a, ch_a, bw_a, offset_a, band_b, ch_b, bw_b, offset_b); +} + +/** + * rtw_sync_bchbw - obey g_band, g_ch, adjust g_bw, g_offset, bw, offset + * @req_band: pointer of the request band, may be modified further + * @req_ch: pointer of the request ch, may be modified further + * @req_bw: pointer of the request bw, may be modified further + * @req_offset: pointer of the request offset, may be modified further + * @g_band: pointer of the ongoing group band + * @g_ch: pointer of the ongoing group ch + * @g_bw: pointer of the ongoing group bw, may be modified further + * @g_offset: pointer of the ongoing group offset, may be modified further + */ +void _rtw_sync_bchbw(enum band_type *req_band, u8 *req_ch, u8 *req_bw, u8 *req_offset + , enum band_type *g_band, u8 *g_ch, u8 *g_bw, u8 *g_offset) +{ + *req_band = *g_band; + *req_ch = *g_ch; + + if (*req_bw == CHANNEL_WIDTH_80 && *g_band == BAND_ON_24G) { + /*2.4G ch, downgrade to 40Mhz */ + *req_bw = CHANNEL_WIDTH_40; + } + + switch (*req_bw) { + case CHANNEL_WIDTH_160: + case CHANNEL_WIDTH_80: + case CHANNEL_WIDTH_40: + if (*g_bw == CHANNEL_WIDTH_40 || *g_bw == CHANNEL_WIDTH_80 || *g_bw == CHANNEL_WIDTH_160) + *req_offset = *g_offset; + else if (*g_bw == CHANNEL_WIDTH_20) + rtw_get_offset_by_bchbw(*req_band, *req_ch, *req_bw, req_offset); + + if (*req_offset == CHAN_OFFSET_NO_EXT) { + RTW_ERR("%s req %s BW without offset, down to 20MHz\n", __func__, ch_width_str(*req_bw)); + rtw_warn_on(1); + *req_bw = CHANNEL_WIDTH_20; + } + break; + case CHANNEL_WIDTH_20: + *req_offset = CHAN_OFFSET_NO_EXT; + break; + default: + RTW_ERR("%s req unsupported BW:%u\n", __func__, *req_bw); + rtw_warn_on(1); + } + + if (*req_bw > *g_bw) { + *g_bw = *req_bw; + *g_offset = *req_offset; + } +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY void rtw_sync_chbw(u8 *req_ch, u8 *req_bw, u8 *req_offset, u8 *g_ch, u8 *g_bw, u8 *g_offset) +{ + enum band_type band = rtw_is_2g_ch(*g_ch) ? BAND_ON_24G : BAND_ON_5G; /* follow g_ch's band */ + + _rtw_sync_bchbw(&band, req_ch, req_bw, req_offset, &band, g_ch, g_bw, g_offset); +} +#endif + +void rtw_sync_bchbw(enum band_type *req_band, u8 *req_ch, u8 *req_bw, u8 *req_offset + , enum band_type *g_band, u8 *g_ch, u8 *g_bw, u8 *g_offset) +{ + _rtw_sync_bchbw(req_band, req_ch, req_bw, req_offset, g_band, g_ch, g_bw, g_offset); +} + +static int rtw_ch2freq_2g(int ch) +{ + if (ch >= 1 && ch <= 14) { + if (ch == 14) return 2484; - else if (chan < 14) - return 2407 + chan * 5; - } else if (chan >= 36 && chan <= 177) - return 5000 + chan * 5; + else if (ch < 14) + return 2407 + ch * 5; + } return 0; /* not supported */ } -int rtw_ch2freq_by_band(BAND_TYPE band, int ch) +#if CONFIG_IEEE80211_BAND_5GHZ +static int rtw_ch2freq_5g(int ch) { -#if CONFIG_IEEE80211_BAND_6GHZ - if (band == BAND_ON_6G) - return rtw_6gch2freq(ch); - else -#endif - return rtw_ch2freq(ch); + if (ch >= 36 && ch <= 177) + return 5000 + ch * 5; + + return 0; /* not supported */ } +#endif + +#if CONFIG_IEEE80211_BAND_6GHZ +static int rtw_ch2freq_6g(int ch) +{ + if (ch >= 1 && ch <= 253) + return 5950 + ch * 5; + + return 0; /* not supported */ +} +#endif + +int rtw_bch2freq(enum band_type band, int ch) +{ + if (band == BAND_ON_24G) + return rtw_ch2freq_2g(ch); +#if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) + return rtw_ch2freq_5g(ch); +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + else if (band == BAND_ON_6G) + return rtw_ch2freq_6g(ch); +#endif + return 0; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY int rtw_ch2freq(int ch) +{ + return rtw_bch2freq(rtw_is_2g_ch(ch) ? BAND_ON_24G : BAND_ON_5G, ch); +} +#endif int rtw_freq2ch(int freq) { @@ -640,12 +1116,14 @@ int rtw_freq2ch(int freq) return 0; } -BAND_TYPE rtw_freq2band(int freq) +enum band_type rtw_freq2band(int freq) { if (freq <= 2484) - return BAND_ON_2_4G; + return BAND_ON_24G; +#if CONFIG_IEEE80211_BAND_5GHZ else if (freq >= 5000 && freq < 5950) return BAND_ON_5G; +#endif #if CONFIG_IEEE80211_BAND_6GHZ else if (freq >= 5950 && freq <= 7215) return BAND_ON_6G; @@ -654,9 +1132,31 @@ BAND_TYPE rtw_freq2band(int freq) return BAND_MAX; } +enum channel_width rtw_frange_to_bw(u32 hi, u32 lo) +{ + u32 width = hi - lo; + + switch (width) { + case 160: + return CHANNEL_WIDTH_160; + case 80: + return CHANNEL_WIDTH_80; + case 40: + return CHANNEL_WIDTH_40; + case 20: + return CHANNEL_WIDTH_20; + case 10: + return CHANNEL_WIDTH_10; + case 5: + return CHANNEL_WIDTH_5; + default: + return CHANNEL_WIDTH_MAX; + } +} + bool rtw_freq_consecutive(int a, int b) { - BAND_TYPE band_a, band_b; + enum band_type band_a, band_b; band_a = rtw_freq2band(a); if (band_a == BAND_MAX) @@ -666,7 +1166,7 @@ bool rtw_freq_consecutive(int a, int b) return 0; switch (band_a) { - case BAND_ON_2_4G: + case BAND_ON_24G: return rtw_abs(a - b) == 5; case BAND_ON_5G: #if CONFIG_IEEE80211_BAND_6GHZ @@ -678,9 +1178,8 @@ bool rtw_freq_consecutive(int a, int b) } } -bool rtw_chbw_to_freq_range(u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo) +bool rtw_bcchbw_to_freq_range(enum band_type band, u8 c_ch, u8 bw, u32 *hi, u32 *lo) { - u8 c_ch; u32 freq; u32 hi_ret = 0, lo_ret = 0; bool valid = _FALSE; @@ -690,8 +1189,7 @@ bool rtw_chbw_to_freq_range(u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo) if (lo) *lo = 0; - c_ch = rtw_get_center_ch(ch, bw, offset); - freq = rtw_ch2freq(c_ch); + freq = rtw_bch2freq(band, c_ch); if (!freq) { rtw_warn_on(1); @@ -724,6 +1222,20 @@ exit: return valid; } +bool rtw_bchbw_to_freq_range(enum band_type band, u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo) +{ + return rtw_bcchbw_to_freq_range(band + , rtw_get_center_ch_by_band(band, ch, bw, offset) + , bw, hi, lo); +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY bool rtw_chbw_to_freq_range(u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo) +{ + return rtw_bchbw_to_freq_range(rtw_is_2g_ch(ch) ? BAND_ON_24G : BAND_ON_5G, ch, bw, offset, hi, lo); +} +#endif + const char *const _ch_width_str[CHANNEL_WIDTH_MAX] = { [CHANNEL_WIDTH_20] = "20MHz", [CHANNEL_WIDTH_40] = "40MHz", @@ -745,7 +1257,7 @@ const u8 _ch_width_to_bw_cap[CHANNEL_WIDTH_MAX] = { }; const char *const _band_str[] = { - [BAND_ON_2_4G] = "2.4G", + [BAND_ON_24G] = "2.4G", [BAND_ON_5G] = "5G", #if CONFIG_IEEE80211_BAND_6GHZ [BAND_ON_6G] = "6G", @@ -754,7 +1266,7 @@ const char *const _band_str[] = { }; const u8 _band_to_band_cap[] = { - [BAND_ON_2_4G] = BAND_CAP_2G, + [BAND_ON_24G] = BAND_CAP_2G, [BAND_ON_5G] = BAND_CAP_5G, #if CONFIG_IEEE80211_BAND_6GHZ [BAND_ON_6G] = BAND_CAP_6G, @@ -763,47 +1275,40 @@ const u8 _band_to_band_cap[] = { }; const char *const _opc_bw_str[OPC_BW_NUM] = { - "20M ", /* OPC_BW20 */ - "40M+", /* OPC_BW40PLUS */ - "40M-", /* OPC_BW40MINUS */ - "80M ", /* OPC_BW80 */ - "160M ", /* OPC_BW160 */ - "80+80M ", /* OPC_BW80P80 */ + [OPC_BW20] = "20M ", + [OPC_BW40PLUS] = "40M+", + [OPC_BW40MINUS] = "40M-", + [OPC_BW40] = "40M ", + [OPC_BW80] = "80M ", + [OPC_BW160] = "160M ", + [OPC_BW80P80] = "80+80M ", }; const u8 _opc_bw_to_ch_width[OPC_BW_NUM] = { - CHANNEL_WIDTH_20, /* OPC_BW20 */ - CHANNEL_WIDTH_40, /* OPC_BW40PLUS */ - CHANNEL_WIDTH_40, /* OPC_BW40MINUS */ - CHANNEL_WIDTH_80, /* OPC_BW80 */ - CHANNEL_WIDTH_160, /* OPC_BW160 */ - CHANNEL_WIDTH_80_80, /* OPC_BW80P80 */ + [OPC_BW20] = CHANNEL_WIDTH_20, + [OPC_BW40PLUS] = CHANNEL_WIDTH_40, + [OPC_BW40MINUS] = CHANNEL_WIDTH_40, + [OPC_BW40] = CHANNEL_WIDTH_40, + [OPC_BW80] = CHANNEL_WIDTH_80, + [OPC_BW160] = CHANNEL_WIDTH_160, + [OPC_BW80P80] = CHANNEL_WIDTH_80_80, }; /* global operating class database */ - -struct op_class_t { - u8 class_id; - BAND_TYPE band; - enum opc_bw bw; - u8 *len_ch_attr; -}; - -#define OPC_CH_LIST_LEN(_opc) (_opc.len_ch_attr[0]) -#define OPC_CH_LIST_CH(_opc, _i) (_opc.len_ch_attr[_i + 1]) - #define OP_CLASS_ENT(_class, _band, _bw, _len, arg...) \ {.class_id = _class, .band = _band, .bw = _bw, .len_ch_attr = (uint8_t[_len + 1]) {_len, ##arg},} /* 802.11-2020, 802.11ax-2021 Table E-4, partial */ -static const struct op_class_t global_op_class[] = { +const struct op_class_t global_op_class[] = { /* 2G ch1~13, 20M */ - OP_CLASS_ENT(81, BAND_ON_2_4G, OPC_BW20, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13), + OP_CLASS_ENT(81, BAND_ON_24G, OPC_BW20, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13), /* 2G ch14, 20M */ - OP_CLASS_ENT(82, BAND_ON_2_4G, OPC_BW20, 1, 14), + OP_CLASS_ENT(82, BAND_ON_24G, OPC_BW20, 1, 14), /* 2G, 40M */ - OP_CLASS_ENT(83, BAND_ON_2_4G, OPC_BW40PLUS, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9), - OP_CLASS_ENT(84, BAND_ON_2_4G, OPC_BW40MINUS, 9, 5, 6, 7, 8, 9, 10, 11, 12, 13), + OP_CLASS_ENT(83, BAND_ON_24G, OPC_BW40PLUS, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9), + OP_CLASS_ENT(84, BAND_ON_24G, OPC_BW40MINUS, 9, 5, 6, 7, 8, 9, 10, 11, 12, 13), + +#if CONFIG_IEEE80211_BAND_5GHZ /* 5G band 1, 20M & 40M */ OP_CLASS_ENT(115, BAND_ON_5G, OPC_BW20, 4, 36, 40, 44, 48), OP_CLASS_ENT(116, BAND_ON_5G, OPC_BW40PLUS, 2, 36, 44), @@ -828,11 +1333,44 @@ static const struct op_class_t global_op_class[] = { /* 5G, 80+80M */ OP_CLASS_ENT(130, BAND_ON_5G, OPC_BW80P80, 28, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, 169, 173, 177), #endif +#endif + +#if CONFIG_IEEE80211_BAND_6GHZ + /* 6G, 20M */ + OP_CLASS_ENT(131, BAND_ON_6G, OPC_BW20, 59, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93 + , 97, 101, 105, 109, 113, 117 + , 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189 + , 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233), + /* 6G, 40M */ + OP_CLASS_ENT(132, BAND_ON_6G, OPC_BW40, 58, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93 + , 97, 101, 105, 109, 113, 117 + , 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189 + , 193, 197, 201, 205, 209, 213, 217, 221, 225, 229), + /* 6G, 80M */ + OP_CLASS_ENT(133, BAND_ON_6G, OPC_BW80, 56, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93 + , 97, 101, 105, 109, 113, 117 + , 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189 + , 193, 197, 201, 205, 209, 213, 217, 221), + /* 6G, 160M */ + OP_CLASS_ENT(134, BAND_ON_6G, OPC_BW160, 56, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93 + , 97, 101, 105, 109, 113, 117 + , 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189 + , 193, 197, 201, 205, 209, 213, 217, 221), + #if 0 /* TODO */ + /* 6G, 80+80M */ + OP_CLASS_ENT(135, BAND_ON_6G, OPC_BW80P80, 56, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93 + , 97, 101, 105, 109, 113, 117 + , 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189 + , 193, 197, 201, 205, 209, 213, 217, 221), + /* 6G, 20M, ch2 */ + OP_CLASS_ENT(136, BAND_ON_6G, OPC_BW20, 1, 2), + #endif +#endif }; -static const int global_op_class_num = sizeof(global_op_class) / sizeof(struct op_class_t); +const int global_op_class_num = sizeof(global_op_class) / sizeof(struct op_class_t); -static const struct op_class_t *get_global_op_class_by_id(u8 gid) +const struct op_class_t *get_global_op_class_by_id(u8 gid) { int i; @@ -848,7 +1386,7 @@ bool is_valid_global_op_class_id(u8 gid) return get_global_op_class_by_id(gid) ? 1 : 0; } -static bool is_valid_global_op_class_ch(const struct op_class_t *opc, u8 ch) +bool is_valid_global_op_class_ch(const struct op_class_t *opc, u8 ch) { int array_idx; int i; @@ -870,23 +1408,12 @@ static bool is_valid_global_op_class_ch(const struct op_class_t *opc, u8 ch) return i < OPC_CH_LIST_LEN(global_op_class[array_idx]); } -static enum opc_bw get_global_opc_bw_by_id(u8 gid) -{ - int i; - - for (i = 0; i < global_op_class_num; i++) - if (global_op_class[i].class_id == gid) - break; - - return i < global_op_class_num ? global_op_class[i].bw : OPC_BW_NUM; -} - /* -2: logic error, -1: error, 0: is already BW20 */ s16 get_sub_op_class(u8 gid, u8 ch) { const struct op_class_t *opc = get_global_op_class_by_id(gid); int i; - enum channel_width bw; + enum channel_width bw; if (!opc) return -1; @@ -941,23 +1468,27 @@ static bool dbg_global_op_class_validate(u8 gid) switch (global_op_class[gid].bw) { case OPC_BW20: bw = CHANNEL_WIDTH_20; - offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + offset = CHAN_OFFSET_NO_EXT; break; case OPC_BW40PLUS: bw = CHANNEL_WIDTH_40; - offset = HAL_PRIME_CHNL_OFFSET_LOWER; + offset = CHAN_OFFSET_UPPER; break; case OPC_BW40MINUS: bw = CHANNEL_WIDTH_40; - offset = HAL_PRIME_CHNL_OFFSET_UPPER; + offset = CHAN_OFFSET_LOWER; + break; + case OPC_BW40: + bw = CHANNEL_WIDTH_40; + offset = CHAN_OFFSET_NO_EXT; break; case OPC_BW80: bw = CHANNEL_WIDTH_80; - offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + offset = CHAN_OFFSET_NO_EXT; break; case OPC_BW160: bw = CHANNEL_WIDTH_160; - offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + offset = CHAN_OFFSET_NO_EXT; break; case OPC_BW80P80: /* TODO */ default: @@ -973,7 +1504,7 @@ static bool dbg_global_op_class_validate(u8 gid) u8 k; ch = OPC_CH_LIST_CH(global_op_class[gid], i); - cch = rtw_get_center_ch(ch ,bw, offset); + cch = rtw_get_center_ch_by_band(global_op_class[gid].band, ch ,bw, offset); if (!cch) { RTW_ERR("%s can't get cch from class:%u ch:%u\n" , __func__, global_op_class[gid].class_id, ch); @@ -981,7 +1512,7 @@ static bool dbg_global_op_class_validate(u8 gid) continue; } - if (!rtw_get_op_chs_by_cch_bw(cch, bw, &op_chs, &op_ch_num)) { + if (!rtw_get_op_chs_by_bcch_bw(global_op_class[gid].band, cch, bw, &op_chs, &op_ch_num)) { RTW_ERR("%s can't get op chs from class:%u cch:%u\n" , __func__, global_op_class[gid].class_id, cch); ret = 0; @@ -1014,19 +1545,11 @@ void dump_global_op_class(void *sel) dump_global_op_class_ch_single(sel, i); } -u8 rtw_get_op_class_by_chbw(u8 ch, u8 bw, u8 offset) +u8 _rtw_get_op_class_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 offset) { - BAND_TYPE band = BAND_MAX; int i; u8 gid = 0; /* invalid */ - if (rtw_is_2g_ch(ch)) - band = BAND_ON_2_4G; - else if (rtw_is_5g_ch(ch)) - band = BAND_ON_5G; - else - goto exit; - switch (bw) { case CHANNEL_WIDTH_20: case CHANNEL_WIDTH_40: @@ -1048,9 +1571,9 @@ u8 rtw_get_op_class_by_chbw(u8 ch, u8 bw, u8 offset) continue; if ((global_op_class[i].bw == OPC_BW40PLUS - && offset != HAL_PRIME_CHNL_OFFSET_LOWER) + && offset != CHAN_OFFSET_UPPER) || (global_op_class[i].bw == OPC_BW40MINUS - && offset != HAL_PRIME_CHNL_OFFSET_UPPER) + && offset != CHAN_OFFSET_LOWER) ) continue; @@ -1075,24 +1598,45 @@ exit: return gid; } +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY u8 rtw_get_op_class_by_chbw(u8 ch, u8 bw, u8 offset) +{ + enum band_type band = BAND_MAX; + + if (rtw_is_2g_ch(ch)) + band = BAND_ON_24G; + else if (rtw_is_5g_ch(ch)) + band = BAND_ON_5G; + else + return 0; /* invalid */ + + return _rtw_get_op_class_by_bchbw(band, ch, bw, offset); +} +#endif + +u8 rtw_get_op_class_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 offset) +{ + return _rtw_get_op_class_by_bchbw(band, ch, bw, offset); +} + u8 rtw_get_bw_offset_by_op_class_ch(u8 gid, u8 ch, u8 *bw, u8 *offset) { - enum opc_bw opc_bw; + const struct op_class_t *opc; u8 valid = 0; int i; - opc_bw = get_global_opc_bw_by_id(gid); - if (opc_bw == OPC_BW_NUM) + opc = get_global_op_class_by_id(gid); + if (!opc) goto exit; - *bw = opc_bw_to_ch_width(opc_bw); + *bw = opc_bw_to_ch_width(opc->bw); - if (opc_bw == OPC_BW40PLUS) - *offset = HAL_PRIME_CHNL_OFFSET_LOWER; - else if (opc_bw == OPC_BW40MINUS) - *offset = HAL_PRIME_CHNL_OFFSET_UPPER; + if (opc->bw == OPC_BW40PLUS) + *offset = CHAN_OFFSET_UPPER; + else if (opc->bw == OPC_BW40MINUS) + *offset = CHAN_OFFSET_LOWER; - if (rtw_get_offset_by_chbw(ch, *bw, offset)) + if (rtw_get_offset_by_bchbw(opc->band, ch, *bw, offset)) valid = 1; exit: @@ -1104,8 +1648,7 @@ int get_supported_op_class(_adapter *padapter, u8 *op_set, int len) { struct registry_priv *regsty = adapter_to_regsty(padapter); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - RT_CHANNEL_INFO *ch_set = rfctl->channel_set; + struct rtw_chset *chset = adapter_to_chset(padapter); int match, i = 0, j, k = 0; const struct op_class_t *cl; u8 cur_op_class; @@ -1126,7 +1669,7 @@ int get_supported_op_class(_adapter *padapter, u8 *op_set, int len) match = -1; ch = cl->len_ch_attr; for (j = 0; j < ch[0]; j++) - if ((match = rtw_chset_search_ch(ch_set, ch[j+1])) == -1) + if ((match = rtw_chset_search_ch(chset, ch[j+1])) == -1) break; /* for() */ if (match != -1 && cl->class_id != cur_op_class && k < len) op_set[k++] = cl->class_id; @@ -1174,16 +1717,12 @@ static void opc_pref_free(struct op_class_pref_t *opc_pref) rtw_mfree(opc_pref, sizeof(*opc_pref) + (sizeof(struct op_ch_t) * opc_pref->ch_num)); } -int op_class_pref_init(_adapter *adapter) +int rtw_rfctl_op_class_pref_init(struct rf_ctl_t *rfctl, u8 band_bmp, u8 bw_bmp[]) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - struct registry_priv *regsty = adapter_to_regsty(adapter); u8 bw; struct op_class_pref_t *opc_pref; int i; u8 op_class_num = 0; - u8 band_bmp = 0; - u8 bw_bmp[BAND_MAX] = {0}; int ret = _FAIL; rfctl->spt_op_class_ch = rtw_zmalloc(sizeof(struct op_class_pref_t *) * global_op_class_num); @@ -1192,27 +1731,6 @@ int op_class_pref_init(_adapter *adapter) goto exit; } - if (IsSupported24G(regsty->wireless_mode) && hal_chk_band_cap(adapter, BAND_CAP_2G)) - band_bmp |= BAND_CAP_2G; - if (is_supported_5g(regsty->wireless_mode) && hal_chk_band_cap(adapter, BAND_CAP_5G)) - band_bmp |= BAND_CAP_5G; - - bw_bmp[BAND_ON_2_4G] = (ch_width_to_bw_cap(REGSTY_BW_2G(regsty) + 1) - 1) & (GET_HAL_SPEC(adapter)->bw_cap); - bw_bmp[BAND_ON_5G] = (ch_width_to_bw_cap(REGSTY_BW_5G(regsty) + 1) - 1) & (GET_HAL_SPEC(adapter)->bw_cap); - if (!REGSTY_IS_11AC_ENABLE(regsty) - || !is_supported_vht(regsty->wireless_mode) - ) - bw_bmp[BAND_ON_5G] &= ~(BW_CAP_80M | BW_CAP_160M); - - if (0) { - RTW_INFO("REGSTY_BW_2G(regsty):%u\n", REGSTY_BW_2G(regsty)); - RTW_INFO("REGSTY_BW_5G(regsty):%u\n", REGSTY_BW_5G(regsty)); - RTW_INFO("GET_HAL_SPEC(adapter)->bw_cap:0x%x\n", GET_HAL_SPEC(adapter)->bw_cap); - RTW_INFO("band_bmp:0x%x\n", band_bmp); - RTW_INFO("bw_bmp[2G]:0x%x\n", bw_bmp[BAND_ON_2_4G]); - RTW_INFO("bw_bmp[5G]:0x%x\n", bw_bmp[BAND_ON_5G]); - } - for (i = 0; i < global_op_class_num; i++) { #ifdef CONFIG_RTW_DEBUG rtw_warn_on(!dbg_global_op_class_validate(i)); @@ -1247,12 +1765,14 @@ int op_class_pref_init(_adapter *adapter) ret = _SUCCESS; exit: + if (ret != _SUCCESS) + rtw_rfctl_op_class_pref_deinit(rfctl); + return ret; } -void op_class_pref_deinit(_adapter *adapter) +void rtw_rfctl_op_class_pref_deinit(struct rf_ctl_t *rfctl) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); int i; if (!rfctl->spt_op_class_ch) @@ -1269,11 +1789,9 @@ void op_class_pref_deinit(_adapter *adapter) rfctl->spt_op_class_ch = NULL; } -void op_class_pref_apply_regulatory(_adapter *adapter, u8 reason) +void op_class_pref_apply_regulatory(struct rf_ctl_t *rfctl, u8 reason) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; - struct registry_priv *regsty = adapter_to_regsty(adapter); + struct rtw_chset *chset = &rfctl->chset; u8 ch, bw, offset, cch; struct op_class_pref_t *opc_pref; int i, j; @@ -1302,23 +1820,27 @@ void op_class_pref_apply_regulatory(_adapter *adapter, u8 reason) switch (opc_pref->bw) { case OPC_BW20: bw = CHANNEL_WIDTH_20; - offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + offset = CHAN_OFFSET_NO_EXT; break; case OPC_BW40PLUS: bw = CHANNEL_WIDTH_40; - offset = HAL_PRIME_CHNL_OFFSET_LOWER; + offset = CHAN_OFFSET_UPPER; break; case OPC_BW40MINUS: bw = CHANNEL_WIDTH_40; - offset = HAL_PRIME_CHNL_OFFSET_UPPER; + offset = CHAN_OFFSET_LOWER; + break; + case OPC_BW40: + bw = CHANNEL_WIDTH_40; + offset = CHAN_OFFSET_NO_EXT; break; case OPC_BW80: bw = CHANNEL_WIDTH_80; - offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + offset = CHAN_OFFSET_NO_EXT; break; case OPC_BW160: bw = CHANNEL_WIDTH_160; - offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + offset = CHAN_OFFSET_NO_EXT; break; case OPC_BW80P80: /* TODO */ default: @@ -1338,35 +1860,35 @@ void op_class_pref_apply_regulatory(_adapter *adapter, u8 reason) ch = opc_pref->chs[j].ch; if (reason >= REG_TXPWR_CHANGE) - opc_pref->chs[j].max_txpwr = rtw_rfctl_get_reg_max_txpwr_mbm(rfctl, ch, bw, offset, 1); + opc_pref->chs[j].max_txpwr = rtw_rfctl_get_reg_max_txpwr_mbm(rfctl, opc_pref->band, ch, bw, offset, 1); if (reason == REG_TXPWR_CHANGE) continue; - cch = rtw_get_center_ch(ch ,bw, offset); + cch = rtw_get_center_ch_by_band(opc_pref->band, ch ,bw, offset); if (!cch) continue; - if (!rtw_get_op_chs_by_cch_bw(cch, bw, &op_chs, &op_ch_num)) + if (!rtw_get_op_chs_by_bcch_bw(opc_pref->band, cch, bw, &op_chs, &op_ch_num)) continue; for (k = 0, l = 0; k < op_ch_num; k++) { - chset_idx = rtw_chset_search_ch(chset, *(op_chs + k)); + chset_idx = rtw_chset_search_bch(chset, opc_pref->band, *(op_chs + k)); if (chset_idx == -1) break; if (bw >= CHANNEL_WIDTH_40) { - if ((chset[chset_idx].flags & RTW_CHF_NO_HT40U) && k % 2 == 0) + if ((chset->chs[chset_idx].flags & RTW_CHF_NO_HT40U) && k % 2 == 0) break; - if ((chset[chset_idx].flags & RTW_CHF_NO_HT40L) && k % 2 == 1) + if ((chset->chs[chset_idx].flags & RTW_CHF_NO_HT40L) && k % 2 == 1) break; } - if (bw >= CHANNEL_WIDTH_80 && (chset[chset_idx].flags & RTW_CHF_NO_80MHZ)) + if (bw >= CHANNEL_WIDTH_80 && (chset->chs[chset_idx].flags & RTW_CHF_NO_80MHZ)) break; - if (bw >= CHANNEL_WIDTH_160 && (chset[chset_idx].flags & RTW_CHF_NO_160MHZ)) + if (bw >= CHANNEL_WIDTH_160 && (chset->chs[chset_idx].flags & RTW_CHF_NO_160MHZ)) break; - if ((chset[chset_idx].flags & RTW_CHF_DFS) && rtw_rfctl_dfs_domain_unknown(rfctl)) + if ((chset->chs[chset_idx].flags & RTW_CHF_DFS) && !rtw_rfctl_radar_detect_supported(rfctl)) continue; - if (chset[chset_idx].flags & RTW_CHF_NO_IR) + if (chset->chs[chset_idx].flags & RTW_CHF_NO_IR) continue; l++; } @@ -1554,16 +2076,22 @@ const char *const _rf_type_to_rfpath_str[RF_TYPE_MAX] = { void rf_type_to_default_trx_bmp(enum rf_type rf, enum bb_path *tx, enum bb_path *rx) { - u8 tx_num = rf_type_to_rf_tx_cnt(rf); - u8 rx_num = rf_type_to_rf_rx_cnt(rf); - int i; + if (tx) { + u8 tx_num = rf_type_to_rf_tx_cnt(rf); + int i; - *tx = *rx = 0; + *tx = 0; + for (i = 0; i < tx_num; i++) + *tx |= BIT(i); + } + if (rx) { + u8 rx_num = rf_type_to_rf_rx_cnt(rf); + int i; - for (i = 0; i < tx_num; i++) - *tx |= BIT(i); - for (i = 0; i < rx_num; i++) - *rx |= BIT(i); + *rx = 0; + for (i = 0; i < rx_num; i++) + *rx |= BIT(i); + } } static const u8 _trx_num_to_rf_type[RF_PATH_MAX][RF_PATH_MAX] = { @@ -1760,594 +2288,12 @@ s16 mb_of_ntx(u8 ntx) if (ntx == 0 || ntx > 8) { RTW_ERR("ntx=%u, out of range\n", ntx); rtw_warn_on(1); + return 0; } return _mb_of_ntx[ntx - 1]; } -#if CONFIG_TXPWR_LIMIT -void _dump_regd_exc_list(void *sel, struct rf_ctl_t *rfctl) -{ - struct regd_exc_ent *ent; - _list *cur, *head; - - RTW_PRINT_SEL(sel, "regd_exc_num:%u\n", rfctl->regd_exc_num); - - if (!rfctl->regd_exc_num) - goto exit; - - RTW_PRINT_SEL(sel, "%-7s %-6s %-8s\n", "country", "domain", "lmt_name"); - - head = &rfctl->reg_exc_list; - cur = get_next(head); - - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - u8 has_country; - - ent = LIST_CONTAINOR(cur, struct regd_exc_ent, list); - cur = get_next(cur); - has_country = (ent->country[0] == '\0' && ent->country[1] == '\0') ? 0 : 1; - - RTW_PRINT_SEL(sel, " %c%c 0x%02x %s\n" - , has_country ? ent->country[0] : '0' - , has_country ? ent->country[1] : '0' - , ent->domain - , ent->lmt_name - ); - } - -exit: - return; -} - -inline void dump_regd_exc_list(void *sel, struct rf_ctl_t *rfctl) -{ - _irqL irqL; - - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - _dump_regd_exc_list(sel, rfctl); - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); -} - -void rtw_regd_exc_add_with_nlen(struct rf_ctl_t *rfctl, const char *country, u8 domain, const char *lmt_name, u32 nlen) -{ - struct regd_exc_ent *ent; - _irqL irqL; - - if (!lmt_name || !nlen) { - rtw_warn_on(1); - goto exit; - } - - ent = (struct regd_exc_ent *)rtw_zmalloc(sizeof(struct regd_exc_ent) + nlen + 1); - if (!ent) - goto exit; - - _rtw_init_listhead(&ent->list); - if (country) - _rtw_memcpy(ent->country, country, 2); - ent->domain = domain; - _rtw_memcpy(ent->lmt_name, lmt_name, nlen); - - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - - rtw_list_insert_tail(&ent->list, &rfctl->reg_exc_list); - rfctl->regd_exc_num++; - - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - -exit: - return; -} - -inline void rtw_regd_exc_add(struct rf_ctl_t *rfctl, const char *country, u8 domain, const char *lmt_name) -{ - rtw_regd_exc_add_with_nlen(rfctl, country, domain, lmt_name, strlen(lmt_name)); -} - -struct regd_exc_ent *_rtw_regd_exc_search(struct rf_ctl_t *rfctl, const char *country, u8 domain) -{ - struct regd_exc_ent *ent; - _list *cur, *head; - u8 match = 0; - - head = &rfctl->reg_exc_list; - cur = get_next(head); - - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - u8 has_country; - - ent = LIST_CONTAINOR(cur, struct regd_exc_ent, list); - cur = get_next(cur); - has_country = (ent->country[0] == '\0' && ent->country[1] == '\0') ? 0 : 1; - - /* entry has country condition to match */ - if (has_country) { - if (!country) - continue; - if (ent->country[0] != country[0] - || ent->country[1] != country[1]) - continue; - } - - /* entry has domain condition to match */ - if (ent->domain != 0xFF) { - if (domain == 0xFF) - continue; - if (ent->domain != domain) - continue; - } - - match = 1; - break; - } - - if (match) - return ent; - else - return NULL; -} - -inline struct regd_exc_ent *rtw_regd_exc_search(struct rf_ctl_t *rfctl, const char *country, u8 domain) -{ - struct regd_exc_ent *ent; - _irqL irqL; - - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - ent = _rtw_regd_exc_search(rfctl, country, domain); - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - - return ent; -} - -void rtw_regd_exc_list_free(struct rf_ctl_t *rfctl) -{ - struct regd_exc_ent *ent; - _irqL irqL; - _list *cur, *head; - - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - - head = &rfctl->reg_exc_list; - cur = get_next(head); - - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct regd_exc_ent, list); - cur = get_next(cur); - rtw_list_delete(&ent->list); - rtw_mfree((u8 *)ent, sizeof(struct regd_exc_ent) + strlen(ent->lmt_name) + 1); - } - rfctl->regd_exc_num = 0; - - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); -} - -void dump_txpwr_lmt(void *sel, _adapter *adapter) -{ -#define TMP_STR_LEN 16 - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); - struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); - _irqL irqL; - char fmt[16]; - char tmp_str[TMP_STR_LEN]; - s8 *lmt_idx = NULL; - int bw, band, ch_num, tlrs, ntx_idx, rs, i, path; - u8 ch, n, rfpath_num; - - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - - _dump_regd_exc_list(sel, rfctl); - RTW_PRINT_SEL(sel, "\n"); - - if (!rfctl->txpwr_lmt_num) - goto release_lock; - - lmt_idx = rtw_malloc(sizeof(s8) * RF_PATH_MAX * rfctl->txpwr_lmt_num); - if (!lmt_idx) { - RTW_ERR("%s alloc fail\n", __func__); - goto release_lock; - } - - RTW_PRINT_SEL(sel, "txpwr_lmt_2g_cck_ofdm_state:0x%02x\n", rfctl->txpwr_lmt_2g_cck_ofdm_state); - #if CONFIG_IEEE80211_BAND_5GHZ - if (IS_HARDWARE_TYPE_JAGUAR_ALL(adapter)) { - RTW_PRINT_SEL(sel, "txpwr_lmt_5g_cck_ofdm_state:0x%02x\n", rfctl->txpwr_lmt_5g_cck_ofdm_state); - RTW_PRINT_SEL(sel, "txpwr_lmt_5g_20_40_ref:0x%02x\n", rfctl->txpwr_lmt_5g_20_40_ref); - } - #endif - RTW_PRINT_SEL(sel, "\n"); - - for (band = BAND_ON_2_4G; band <= BAND_ON_5G; band++) { - if (!hal_is_band_support(adapter, band)) - continue; - - rfpath_num = (band == BAND_ON_2_4G ? hal_spec->rfpath_num_2g : hal_spec->rfpath_num_5g); - - for (bw = 0; bw < MAX_5G_BANDWIDTH_NUM; bw++) { - - if (bw >= CHANNEL_WIDTH_160) - break; - if (band == BAND_ON_2_4G && bw >= CHANNEL_WIDTH_80) - break; - - if (band == BAND_ON_2_4G) - ch_num = CENTER_CH_2G_NUM; - else - ch_num = center_chs_5g_num(bw); - - if (ch_num == 0) { - rtw_warn_on(1); - break; - } - - for (tlrs = TXPWR_LMT_RS_CCK; tlrs < TXPWR_LMT_RS_NUM; tlrs++) { - - if (band == BAND_ON_2_4G && tlrs == TXPWR_LMT_RS_VHT) - continue; - if (band == BAND_ON_5G && tlrs == TXPWR_LMT_RS_CCK) - continue; - if (bw > CHANNEL_WIDTH_20 && (tlrs == TXPWR_LMT_RS_CCK || tlrs == TXPWR_LMT_RS_OFDM)) - continue; - if (bw > CHANNEL_WIDTH_40 && tlrs == TXPWR_LMT_RS_HT) - continue; - if (tlrs == TXPWR_LMT_RS_VHT && !IS_HARDWARE_TYPE_JAGUAR_ALL(adapter)) - continue; - - for (ntx_idx = RF_1TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { - struct txpwr_lmt_ent *ent; - _list *cur, *head; - - if (ntx_idx + 1 > hal_data->max_tx_cnt) - continue; - - /* bypass CCK multi-TX is not defined */ - if (tlrs == TXPWR_LMT_RS_CCK && ntx_idx > RF_1TX) { - if (band == BAND_ON_2_4G - && !(rfctl->txpwr_lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_CCK_1T << ntx_idx))) - continue; - } - - /* bypass OFDM multi-TX is not defined */ - if (tlrs == TXPWR_LMT_RS_OFDM && ntx_idx > RF_1TX) { - if (band == BAND_ON_2_4G - && !(rfctl->txpwr_lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx))) - continue; - #if CONFIG_IEEE80211_BAND_5GHZ - if (band == BAND_ON_5G - && !(rfctl->txpwr_lmt_5g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx))) - continue; - #endif - } - - /* bypass 5G 20M, 40M pure reference */ - #if CONFIG_IEEE80211_BAND_5GHZ - if (band == BAND_ON_5G && (bw == CHANNEL_WIDTH_20 || bw == CHANNEL_WIDTH_40)) { - if (rfctl->txpwr_lmt_5g_20_40_ref == TXPWR_LMT_REF_HT_FROM_VHT) { - if (tlrs == TXPWR_LMT_RS_HT) - continue; - } else if (rfctl->txpwr_lmt_5g_20_40_ref == TXPWR_LMT_REF_VHT_FROM_HT) { - if (tlrs == TXPWR_LMT_RS_VHT && bw <= CHANNEL_WIDTH_40) - continue; - } - } - #endif - - /* choose n-SS mapping rate section to get lmt diff value */ - if (tlrs == TXPWR_LMT_RS_CCK) - rs = CCK; - else if (tlrs == TXPWR_LMT_RS_OFDM) - rs = OFDM; - else if (tlrs == TXPWR_LMT_RS_HT) - rs = HT_1SS + ntx_idx; - else if (tlrs == TXPWR_LMT_RS_VHT) - rs = VHT_1SS + ntx_idx; - else { - RTW_ERR("%s invalid tlrs %u\n", __func__, tlrs); - continue; - } - - RTW_PRINT_SEL(sel, "[%s][%s][%s][%uT]\n" - , band_str(band) - , ch_width_str(bw) - , txpwr_lmt_rs_str(tlrs) - , ntx_idx + 1 - ); - - /* header for limit in db */ - RTW_PRINT_SEL(sel, "%3s ", "ch"); - - head = &rfctl->txpwr_lmt_list; - cur = get_next(head); - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); - cur = get_next(cur); - - sprintf(fmt, "%%%zus%%s ", strlen(ent->name) >= 6 ? 1 : 6 - strlen(ent->name)); - snprintf(tmp_str, TMP_STR_LEN, fmt - , rtw_rfctl_is_current_txpwr_lmt(rfctl, ent->name) ? "*" : "" - , ent->name); - _RTW_PRINT_SEL(sel, "%s", tmp_str); - } - sprintf(fmt, "%%%zus%%s ", strlen(txpwr_lmt_str(TXPWR_LMT_WW)) >= 6 ? 1 : 6 - strlen(txpwr_lmt_str(TXPWR_LMT_WW))); - snprintf(tmp_str, TMP_STR_LEN, fmt - , rtw_rfctl_is_current_txpwr_lmt(rfctl, txpwr_lmt_str(TXPWR_LMT_WW)) ? "*" : "" - , txpwr_lmt_str(TXPWR_LMT_WW)); - _RTW_PRINT_SEL(sel, "%s", tmp_str); - - /* header for limit offset */ - for (path = 0; path < RF_PATH_MAX; path++) { - if (path >= rfpath_num) - break; - _RTW_PRINT_SEL(sel, "|"); - head = &rfctl->txpwr_lmt_list; - cur = get_next(head); - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); - cur = get_next(cur); - _RTW_PRINT_SEL(sel, "%3c " - , rtw_rfctl_is_current_txpwr_lmt(rfctl, ent->name) ? rf_path_char(path) : ' '); - } - _RTW_PRINT_SEL(sel, "%3c " - , rtw_rfctl_is_current_txpwr_lmt(rfctl, txpwr_lmt_str(TXPWR_LMT_WW)) ? rf_path_char(path) : ' '); - } - _RTW_PRINT_SEL(sel, "\n"); - - for (n = 0; n < ch_num; n++) { - s8 lmt; - s8 lmt_offset; - u8 base; - - if (band == BAND_ON_2_4G) - ch = n + 1; - else - ch = center_chs_5g(bw, n); - - if (ch == 0) { - rtw_warn_on(1); - break; - } - - /* dump limit in dBm */ - RTW_PRINT_SEL(sel, "%3u ", ch); - head = &rfctl->txpwr_lmt_list; - cur = get_next(head); - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); - cur = get_next(cur); - lmt = phy_get_txpwr_lmt(adapter, ent->name, band, bw, tlrs, ntx_idx, ch, 0); - txpwr_idx_get_dbm_str(lmt, hal_spec->txgi_max, hal_spec->txgi_pdbm, strlen(ent->name), tmp_str, TMP_STR_LEN); - _RTW_PRINT_SEL(sel, "%s ", tmp_str); - } - lmt = phy_get_txpwr_lmt(adapter, txpwr_lmt_str(TXPWR_LMT_WW), band, bw, tlrs, ntx_idx, ch, 0); - txpwr_idx_get_dbm_str(lmt, hal_spec->txgi_max, hal_spec->txgi_pdbm, strlen(txpwr_lmt_str(TXPWR_LMT_WW)), tmp_str, TMP_STR_LEN); - _RTW_PRINT_SEL(sel, "%s ", tmp_str); - - /* dump limit offset of each path */ - for (path = RF_PATH_A; path < RF_PATH_MAX; path++) { - if (path >= rfpath_num) - break; - - base = phy_get_target_txpwr(adapter, band, path, rs); - - _RTW_PRINT_SEL(sel, "|"); - head = &rfctl->txpwr_lmt_list; - cur = get_next(head); - i = 0; - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); - cur = get_next(cur); - lmt_offset = phy_get_txpwr_lmt_diff(adapter, ent->name, band, bw, path, rs, tlrs, ntx_idx, ch, 0); - if (lmt_offset == hal_spec->txgi_max) { - *(lmt_idx + i * RF_PATH_MAX + path) = hal_spec->txgi_max; - _RTW_PRINT_SEL(sel, "%3s ", "NA"); - } else { - *(lmt_idx + i * RF_PATH_MAX + path) = lmt_offset + base; - _RTW_PRINT_SEL(sel, "%3d ", lmt_offset); - } - i++; - } - lmt_offset = phy_get_txpwr_lmt_diff(adapter, txpwr_lmt_str(TXPWR_LMT_WW), band, bw, path, rs, tlrs, ntx_idx, ch, 0); - if (lmt_offset == hal_spec->txgi_max) - _RTW_PRINT_SEL(sel, "%3s ", "NA"); - else - _RTW_PRINT_SEL(sel, "%3d ", lmt_offset); - - } - - /* compare limit_idx of each path, print 'x' when mismatch */ - if (rfpath_num > 1) { - for (i = 0; i < rfctl->txpwr_lmt_num; i++) { - for (path = 0; path < RF_PATH_MAX; path++) { - if (path >= rfpath_num) - break; - if (*(lmt_idx + i * RF_PATH_MAX + path) != *(lmt_idx + i * RF_PATH_MAX + ((path + 1) % rfpath_num))) - break; - } - if (path >= rfpath_num) - _RTW_PRINT_SEL(sel, " "); - else - _RTW_PRINT_SEL(sel, "x"); - } - } - _RTW_PRINT_SEL(sel, "\n"); - - } - RTW_PRINT_SEL(sel, "\n"); - } - } /* loop for rate sections */ - } /* loop for bandwidths */ - } /* loop for bands */ - - if (lmt_idx) - rtw_mfree(lmt_idx, sizeof(s8) * RF_PATH_MAX * rfctl->txpwr_lmt_num); - -release_lock: - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); -} - -/* search matcing first, if not found, alloc one */ -void rtw_txpwr_lmt_add_with_nlen(struct rf_ctl_t *rfctl, const char *lmt_name, u32 nlen - , u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt) -{ - struct hal_spec_t *hal_spec = GET_HAL_SPEC(dvobj_get_primary_adapter(rfctl_to_dvobj(rfctl))); - struct txpwr_lmt_ent *ent; - _irqL irqL; - _list *cur, *head; - s8 pre_lmt; - - if (!lmt_name || !nlen) { - rtw_warn_on(1); - goto exit; - } - - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - - /* search for existed entry */ - head = &rfctl->txpwr_lmt_list; - cur = get_next(head); - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); - cur = get_next(cur); - - if (strlen(ent->name) == nlen - && _rtw_memcmp(ent->name, lmt_name, nlen) == _TRUE) - goto chk_lmt_val; - } - - /* alloc new one */ - ent = (struct txpwr_lmt_ent *)rtw_zvmalloc(sizeof(struct txpwr_lmt_ent) + nlen + 1); - if (!ent) - goto release_lock; - - _rtw_init_listhead(&ent->list); - _rtw_memcpy(ent->name, lmt_name, nlen); - { - u8 j, k, l, m; - - for (j = 0; j < MAX_2_4G_BANDWIDTH_NUM; ++j) - for (k = 0; k < TXPWR_LMT_RS_NUM_2G; ++k) - for (m = 0; m < CENTER_CH_2G_NUM; ++m) - for (l = 0; l < MAX_TX_COUNT; ++l) - ent->lmt_2g[j][k][m][l] = hal_spec->txgi_max; - #if CONFIG_IEEE80211_BAND_5GHZ - for (j = 0; j < MAX_5G_BANDWIDTH_NUM; ++j) - for (k = 0; k < TXPWR_LMT_RS_NUM_5G; ++k) - for (m = 0; m < CENTER_CH_5G_ALL_NUM; ++m) - for (l = 0; l < MAX_TX_COUNT; ++l) - ent->lmt_5g[j][k][m][l] = hal_spec->txgi_max; - #endif - } - - rtw_list_insert_tail(&ent->list, &rfctl->txpwr_lmt_list); - rfctl->txpwr_lmt_num++; - -chk_lmt_val: - if (band == BAND_ON_2_4G) - pre_lmt = ent->lmt_2g[bw][tlrs][ch_idx][ntx_idx]; - #if CONFIG_IEEE80211_BAND_5GHZ - else if (band == BAND_ON_5G) - pre_lmt = ent->lmt_5g[bw][tlrs - 1][ch_idx][ntx_idx]; - #endif - else - goto release_lock; - - if (pre_lmt != hal_spec->txgi_max) - RTW_PRINT("duplicate txpwr_lmt for [%s][%s][%s][%s][%uT][%d]\n" - , lmt_name, band_str(band), ch_width_str(bw), txpwr_lmt_rs_str(tlrs), ntx_idx + 1 - , band == BAND_ON_2_4G ? ch_idx + 1 : center_ch_5g_all[ch_idx]); - - lmt = rtw_min(pre_lmt, lmt); - if (band == BAND_ON_2_4G) - ent->lmt_2g[bw][tlrs][ch_idx][ntx_idx] = lmt; - #if CONFIG_IEEE80211_BAND_5GHZ - else if (band == BAND_ON_5G) - ent->lmt_5g[bw][tlrs - 1][ch_idx][ntx_idx] = lmt; - #endif - - if (0) - RTW_PRINT("%s, %4s, %6s, %7s, %uT, ch%3d = %d\n" - , lmt_name, band_str(band), ch_width_str(bw), txpwr_lmt_rs_str(tlrs), ntx_idx + 1 - , band == BAND_ON_2_4G ? ch_idx + 1 : center_ch_5g_all[ch_idx] - , lmt); - -release_lock: - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - -exit: - return; -} - -inline void rtw_txpwr_lmt_add(struct rf_ctl_t *rfctl, const char *lmt_name - , u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt) -{ - rtw_txpwr_lmt_add_with_nlen(rfctl, lmt_name, strlen(lmt_name) - , band, bw, tlrs, ntx_idx, ch_idx, lmt); -} - -struct txpwr_lmt_ent *_rtw_txpwr_lmt_get_by_name(struct rf_ctl_t *rfctl, const char *lmt_name) -{ - struct txpwr_lmt_ent *ent; - _list *cur, *head; - u8 found = 0; - - head = &rfctl->txpwr_lmt_list; - cur = get_next(head); - - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); - cur = get_next(cur); - - if (strcmp(ent->name, lmt_name) == 0) { - found = 1; - break; - } - } - - if (found) - return ent; - return NULL; -} - -inline struct txpwr_lmt_ent *rtw_txpwr_lmt_get_by_name(struct rf_ctl_t *rfctl, const char *lmt_name) -{ - struct txpwr_lmt_ent *ent; - _irqL irqL; - - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - ent = _rtw_txpwr_lmt_get_by_name(rfctl, lmt_name); - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - - return ent; -} - -void rtw_txpwr_lmt_list_free(struct rf_ctl_t *rfctl) -{ - struct txpwr_lmt_ent *ent; - _irqL irqL; - _list *cur, *head; - int band; - - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); - - head = &rfctl->txpwr_lmt_list; - cur = get_next(head); - - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); - cur = get_next(cur); - rtw_list_delete(&ent->list); - rtw_vmfree((u8 *)ent, sizeof(struct txpwr_lmt_ent) + strlen(ent->name) + 1); - } - rfctl->txpwr_lmt_num = 0; - - for (band = 0; band < BAND_MAX; band++) - rfctl->txpwr_lmt_name[band] = NULL; - - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); -} -#endif /* CONFIG_TXPWR_LIMIT */ - int rtw_ch_to_bb_gain_sel(int ch) { int sel = -1; @@ -2401,7 +2347,7 @@ exit: void rtw_rf_set_tx_gain_offset(_adapter *adapter, u8 path, s8 offset) { #if !defined(CONFIG_RTL8814A) && !defined(CONFIG_RTL8822B) && !defined(CONFIG_RTL8821C) && !defined(CONFIG_RTL8822C) \ - && !defined(CONFIG_RTL8723F) + && !defined(CONFIG_RTL8723F) && !defined(CONFIG_RTL8822E) u8 write_value; #endif u8 target_path = 0; @@ -2462,13 +2408,14 @@ void rtw_rf_set_tx_gain_offset(_adapter *adapter, u8 path, s8 offset) break; #endif /* CONFIG_RTL8821A */ #if defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8192F) || defined(CONFIG_RTL8822C) \ - || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) case RTL8814A: case RTL8822B: case RTL8822C: case RTL8821C: case RTL8192F: case RTL8723F: + case RTL8822E: RTW_INFO("\nkfree by PhyDM on the sw CH. path %d\n", path); break; #endif /* CONFIG_RTL8814A || CONFIG_RTL8822B || CONFIG_RTL8821C || CONFIG_RTL8723F */ @@ -2514,7 +2461,8 @@ bool rtw_is_long_cac_range(u32 hi, u32 lo, u8 dfs_region) return (dfs_region == RTW_DFS_REGD_ETSI && rtw_is_range_overlap(hi, lo, 5650, 5600)) ? _TRUE : _FALSE; } -bool rtw_is_long_cac_ch(u8 ch, u8 bw, u8 offset, u8 dfs_region) +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY bool rtw_is_long_cac_ch(u8 ch, u8 bw, u8 offset, u8 dfs_region) { u32 hi, lo; @@ -2523,3 +2471,15 @@ bool rtw_is_long_cac_ch(u8 ch, u8 bw, u8 offset, u8 dfs_region) return rtw_is_long_cac_range(hi, lo, dfs_region) ? _TRUE : _FALSE; } +#endif + +bool rtw_is_long_cac_bch(enum band_type band, u8 ch, u8 bw, u8 offset, u8 dfs_region) +{ + u32 hi, lo; + + if (rtw_bchbw_to_freq_range(band, ch, bw, offset, &hi, &lo) == _FALSE) + return _FALSE; + + return rtw_is_long_cac_range(hi, lo, dfs_region) ? _TRUE : _FALSE; +} + diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_rm.c b/drivers/net/wireless/rtl8822cs/core/rtw_rm.c index de627e822..876e4ac76 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_rm.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_rm.c @@ -293,9 +293,9 @@ void rm_set_rep_mode(struct rm_obj *prm, u8 mode) RTW_INFO("RM: rmid=%x set %s\n", prm->rmid, - mode|MEAS_REP_MOD_INCAP?"INCAP": - mode|MEAS_REP_MOD_REFUSE?"REFUSE": - mode|MEAS_REP_MOD_LATE?"LATE":""); + mode&MEAS_REP_MOD_INCAP?"INCAP": + mode&MEAS_REP_MOD_REFUSE?"REFUSE": + mode&MEAS_REP_MOD_LATE?"LATE":""); prm->p.m_mode |= mode; } @@ -310,17 +310,17 @@ int issue_null_reply(struct rm_obj *prm) struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); - m_mode = prm->p.m_mode; - if (m_mode || prm->p.rpt == 0) { + m_mode = prm->q.m_mode; + if (m_mode || prm->q.rpt == 0) { RTW_INFO("RM: rmid=%x reply (%s repeat=%d)\n", prm->rmid, m_mode&MEAS_REP_MOD_INCAP?"INCAP": m_mode&MEAS_REP_MOD_REFUSE?"REFUSE": m_mode&MEAS_REP_MOD_LATE?"LATE":"no content", - prm->p.rpt); + prm->q.rpt); } - switch (prm->p.action_code) { + switch (prm->q.action_code) { case RM_ACT_RADIO_MEAS_REQ: len = 8; break; @@ -376,15 +376,11 @@ int ready_for_scan(struct rm_obj *prm) return _FALSE; } -int rm_sitesurvey(struct rm_obj *prm) +int rm_get_chset(struct rm_obj *prm) { - int meas_ch_amount=0; + int i,meas_ch_amount=0; u8 op_class=0, val8; struct rtw_ieee80211_channel *pch_set; - struct sitesurvey_parm parm; - - - RTW_INFO("RM: rmid=%x %s\n",prm->rmid, __func__); pch_set = &prm->q.ch_set[0]; @@ -412,24 +408,39 @@ int rm_sitesurvey(struct rm_obj *prm) #if (RM_MORE_DBG_MSG) RTW_INFO("survey (%d) chaannels\n", meas_ch_amount); #endif + return 0; +} - _rtw_memset(&parm, 0, sizeof(struct sitesurvey_parm)); - _rtw_memcpy(parm.ch, pch_set, - sizeof(struct rtw_ieee80211_channel) * - MIN(meas_ch_amount, RTW_CHANNEL_SCAN_AMOUNT)); +int rm_sitesurvey(struct rm_obj *prm) +{ + int meas_ch_amount=0; + u8 op_class=0, val8; + struct rtw_ieee80211_channel *pch_set; + struct sitesurvey_parm *parm = NULL; - _rtw_memcpy(&parm.ssid[0], &prm->q.opt.bcn.ssid, IW_ESSID_MAX_SIZE); - parm.ssid_num = 1; - parm.scan_mode = prm->q.m_mode; - parm.ch_num = meas_ch_amount; - parm.igi = 0; - parm.token = prm->rmid; - parm.duration = prm->q.meas_dur; + RTW_INFO("RM: rmid=%x %s\n",prm->rmid, __func__); + parm = (struct sitesurvey_parm *)rtw_zmalloc(sizeof(struct sitesurvey_parm)); + if (!parm) + return _FALSE; + rm_get_chset(prm); + pch_set = &prm->q.ch_set[0]; + + meas_ch_amount = MIN(prm->q.ch_set_ch_amount, RTW_CHANNEL_SCAN_AMOUNT); + _rtw_memcpy(parm->ch, pch_set, sizeof(struct rtw_ieee80211_channel) * meas_ch_amount); + + _rtw_memcpy(&(parm->ssid[0]), &prm->q.opt.bcn.ssid, IW_ESSID_MAX_SIZE); + + parm->ssid_num = 1; + parm->scan_mode = prm->q.m_mode; + parm->ch_num = meas_ch_amount; + parm->igi = 0; + parm->token = prm->rmid; + parm->duration = prm->q.meas_dur; /* parm.bw = BW_20M; */ - rtw_sitesurvey_cmd(prm->psta->padapter, &parm); - + rtw_sitesurvey_cmd(prm->psta->padapter, parm); + rtw_mfree(parm, sizeof(struct sitesurvey_parm)); return _SUCCESS; } @@ -828,14 +839,16 @@ int rm_recv_radio_mens_rep(_adapter *padapter, u8 bcn_rpt_cnt; - rmid = psta->cmn.aid << 16 - | pdiag_body[2] << 8 + rmid = ((u32)(psta->cmn.aid << 16)) + | ((u32)(pdiag_body[2] << 8)) | RM_MASTER; prm = rm_get_rmobj(padapter, rmid); if (prm == NULL) { /* not belong to us, report to upper */ +#ifdef CONFIG_IOCTL_CFG80211 rtw_cfg80211_rx_rrm_action(psta->padapter, precv_frame); +#endif return _TRUE; } @@ -940,14 +953,16 @@ int rm_recv_link_mens_rep(_adapter *padapter, s8 val; - rmid = psta->cmn.aid << 16 - | pdiag_body[2] << 8 + rmid = ((u32)(psta->cmn.aid << 16)) + | ((u32)(pdiag_body[2] << 8)) | RM_MASTER; prm = rm_get_rmobj(padapter, rmid); if (prm == NULL) { /* not belong to us, report to upper */ +#ifdef CONFIG_IOCTL_CFG80211 rtw_cfg80211_rx_rrm_action(psta->padapter, precv_frame); +#endif return _TRUE; } @@ -985,15 +1000,17 @@ int rm_radio_mens_nb_rep(_adapter *padapter, struct rm_obj *prm; - rmid = psta->cmn.aid << 16 - | pdiag_body[2] << 8 + rmid = ((u32)(psta->cmn.aid << 16)) + | ((u32)(pdiag_body[2] << 8)) | RM_MASTER; prm = rm_get_rmobj(padapter, rmid); if (prm == NULL) { /* not belong to us, report to upper */ +#ifdef CONFIG_IOCTL_CFG80211 rtw_cfg80211_rx_rrm_action(psta->padapter, precv_frame); +#endif return _TRUE; } @@ -1017,8 +1034,9 @@ int rm_radio_mens_nb_rep(_adapter *padapter, ,_FALSE) == _FAIL) return _FALSE; #endif +#ifdef CONFIG_IOCTL_CFG80211 rtw_cfg80211_rx_rrm_action(padapter, precv_frame); - +#endif return _TRUE; } @@ -1028,7 +1046,9 @@ unsigned int rm_on_action(_adapter *padapter, union recv_frame *precv_frame) u8 *pframe = NULL; u8 *pframe_body = NULL; u8 action_code = 0; +#if (RM_MORE_DBG_MSG) u8 diag_token = 0; +#endif struct rtw_ieee80211_hdr_3addr *whdr; struct sta_info *psta; @@ -1057,9 +1077,8 @@ unsigned int rm_on_action(_adapter *padapter, union recv_frame *precv_frame) /* Figure 8-438 radio measurement request frame Action field format */ /* Category = pframe_body[0] = 5 (Radio Measurement) */ action_code = pframe_body[1]; - diag_token = pframe_body[2]; - #if (RM_MORE_DBG_MSG) + diag_token = pframe_body[2]; RTW_INFO("RM: %s radio_action=%x, diag_token=%x\n", __func__, action_code, diag_token); #endif @@ -1111,7 +1130,7 @@ static u8 *rm_gen_bcn_detail_elem(_adapter *padapter, u8 *pframe, { WLAN_BSSID_EX *pbss = &pnetwork->network; unsigned int my_len; - int j, k, len; + int j = 0, k, len; u8 *plen; u8 *ptr; u8 val8, eid; @@ -1268,7 +1287,7 @@ u8 rm_bcn_req_cond_mach(struct rm_obj *prm, struct wlan_network *pnetwork) static u8 *rm_gen_bcn_rep_ie (struct rm_obj *prm, u8 *pframe, struct wlan_network *pnetwork, unsigned int *fr_len) { - int snr, i; + int snr, i = 0; u8 val8, *plen; u16 val16; u32 val32; @@ -1854,8 +1873,6 @@ static u8 *rm_gen_bcn_req_s_elem(_adapter *padapter, */ l = MIN(32, (int)prm->q.opt.bcn.ssid.SsidLength); - l = (int)prm->q.opt.bcn.ssid.SsidLength; - if (l > 32) RTW_ERR("RM: %s SSID len over size %d! skip it!\n",__func__, l); @@ -2516,7 +2533,8 @@ int rm_send_bcn_reqs(_adapter *padapter, u8 *sta_addr, u8 op_class, u8 ch, struct sta_info *psta; struct _RT_OPERATING_CLASS *prpt; void *ptr; - int i,j,sz; + /* int i,j,sz; */ + int i, sz; u8 bcast[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; @@ -2567,7 +2585,7 @@ int rm_send_bcn_reqs(_adapter *padapter, u8 *sta_addr, u8 op_class, u8 ch, if (n_ap_ch_rpt > 0) { prm->q.opt.bcn.ap_ch_rpt_num = n_ap_ch_rpt; - j = 0; + /* j = 0; */ for (i = 0; i < n_ap_ch_rpt; i++) { prpt = rpt++; if (prpt == NULL) @@ -2735,7 +2753,7 @@ static void rm_dbg_list_meas(_adapter *padapter, char *s) int meas_amount; _irqL irqL; struct rm_obj *prm; - struct sta_info *psta; + /* struct sta_info *psta; */ struct rm_priv *prmpriv = &padapter->rmpriv; _queue *queue = &prmpriv->rm_queue; _list *plist, *phead; @@ -2751,7 +2769,7 @@ static void rm_dbg_list_meas(_adapter *padapter, char *s) prm = LIST_CONTAINOR(plist, struct rm_obj, list); meas_amount++; plist = get_next(plist); - psta = prm->psta; + /* psta = prm->psta; */ sprintf(pstr(s), "=========================================\n"); rm_dbg_show_meas(prm, s); diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_rm_fsm.c b/drivers/net/wireless/rtl8822cs/core/rtw_rm_fsm.c index 244b799a2..35b992285 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_rm_fsm.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_rm_fsm.c @@ -572,30 +572,31 @@ static int rm_state_idle(struct rm_obj *prm, enum RM_EV_ID evid) } /* switch() */ if (prm->rmid & RM_MASTER) { - if (rm_issue_meas_req(prm) == _SUCCESS) + if (rm_issue_meas_req(prm) == _SUCCESS) { rm_state_goto(prm, RM_ST_WAIT_MEAS); - else + } else { + issue_null_reply(prm); rm_state_goto(prm, RM_ST_END); - return _SUCCESS; + } } else { rm_state_goto(prm, RM_ST_DO_MEAS); return _SUCCESS; } - if (prm->p.m_mode) { - issue_null_reply(prm); - rm_state_goto(prm, RM_ST_END); - return _SUCCESS; - } if (prm->q.rand_intvl) { /* get low tsf to generate random interval */ + #ifdef CONFIG_RTL8814B + val32 = rtw_read32(padapter, REG_TSFTR_LOW_8814B); + #else val32 = rtw_read32(padapter, REG_TSFTR); + #endif val32 = val32 % prm->q.rand_intvl; RTW_INFO("RM: rmid=%x rand_intval=%d, rand=%d\n", prm->rmid, (int)prm->q.rand_intvl,val32); rm_set_clock(prm, prm->q.rand_intvl, RM_EV_delay_timer_expire); - return _SUCCESS; + } else { + rm_state_goto(prm, RM_ST_DO_MEAS); } break; case RM_EV_delay_timer_expire: @@ -629,6 +630,7 @@ static int rm_state_do_meas(struct rm_obj *prm, enum RM_EV_ID evid) if (prm->q.m_mode == bcn_req_bcn_table) { RTW_INFO("RM: rmid=%x Beacon table\n", prm->rmid); + rm_get_chset(prm); _rm_post_event(padapter, prm->rmid, RM_EV_survey_done); return _SUCCESS; @@ -873,9 +875,9 @@ static int rm_state_recv_report(struct rm_obj *prm, enum RM_EV_ID evid) if (val8) { RTW_INFO("RM: rmid=%x peer reject (%s repeat=%d)\n", prm->rmid, - val8|MEAS_REP_MOD_INCAP?"INCAP": - val8|MEAS_REP_MOD_REFUSE?"REFUSE": - val8|MEAS_REP_MOD_LATE?"LATE":"", + val8&MEAS_REP_MOD_INCAP?"INCAP": + val8&MEAS_REP_MOD_REFUSE?"REFUSE": + val8&MEAS_REP_MOD_LATE?"LATE":"", prm->p.rpt); rm_state_goto(prm, RM_ST_END); return _SUCCESS; @@ -976,9 +978,9 @@ char *rm_event_name(enum RM_EV_ID evid) case RM_EV_max: return "RM_EV_max"; default: - return "RM_EV_unknown"; + break; } - return "UNKNOWN"; + return "RM_EV_unknown"; } static void rm_state_initial(struct rm_obj *prm) diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_rm_util.c b/drivers/net/wireless/rtl8822cs/core/rtw_rm_util.c index 1df0110c8..1f7040bd1 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_rm_util.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_rm_util.c @@ -386,6 +386,7 @@ int rm_get_path_a_max_tx_power(_adapter *adapter, s8 *path_a) s8 max_pwr[RF_PATH_MAX], pwr; + _rtw_memset(max_pwr, -127, RF_PATH_MAX); band = hal_data->current_band_type; bw = hal_data->current_channel_bw; ch = hal_data->current_channel; diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_roch.c b/drivers/net/wireless/rtl8822cs/core/rtw_roch.c index 4be863192..d6f338c5b 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_roch.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_roch.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2020 Realtek Corporation. + * Copyright(c) 2007 - 2023 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -55,9 +55,7 @@ static int rtw_ro_ch_handler(_adapter *adapter, u8 *buf) struct rtw_roch_parm *roch_parm = (struct rtw_roch_parm *)buf; struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(adapter); struct roch_info *prochinfo = &adapter->rochinfo; -#ifdef CONFIG_CONCURRENT_MODE struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; -#endif u8 ready_on_channel = _FALSE; u8 remain_ch; unsigned int duration; @@ -70,8 +68,11 @@ static int rtw_ro_ch_handler(_adapter *adapter, u8 *buf) remain_ch = (u8)ieee80211_frequency_to_channel(roch_parm->ch.center_freq); duration = roch_parm->duration; - RTW_INFO(FUNC_ADPT_FMT" ch:%u duration:%d, cookie:0x%llx\n" - , FUNC_ADPT_ARG(adapter), remain_ch, roch_parm->duration, roch_parm->cookie); + RTW_INFO(FUNC_ADPT_FMT" ch:%u duration:%d, cookie:0x%llx, " + "op_ch:%u, union_ch:%u, cur_ch:%u\n", + FUNC_ADPT_ARG(adapter), remain_ch, roch_parm->duration, roch_parm->cookie, + rtw_get_oper_ch(adapter), rtw_mi_get_union_chan(adapter), + pmlmeext->cur_channel); if (roch_parm->wdev && roch_parm->cookie) { if (prochinfo->ro_ch_wdev != roch_parm->wdev) { @@ -94,8 +95,8 @@ static int rtw_ro_ch_handler(_adapter *adapter, u8 *buf) #ifdef CONFIG_CONCURRENT_MODE if (rtw_mi_check_status(adapter, MI_LINKED) && (0 != rtw_mi_get_union_chan(adapter))) { - if ((remain_ch != rtw_mi_get_union_chan(adapter)) && !check_fwstate(&adapter->mlmepriv, WIFI_ASOC_STATE)) { - if (remain_ch != pmlmeext->cur_channel + if (remain_ch != rtw_get_oper_ch(adapter)) { + if (rtw_get_oper_ch(adapter) == rtw_mi_get_union_chan(adapter) #ifdef RTW_ROCH_BACK_OP || ATOMIC_READ(&pwdev_priv->switch_ch_to) == 1 #endif @@ -118,6 +119,13 @@ static int rtw_ro_ch_handler(_adapter *adapter, u8 *buf) { if (remain_ch != rtw_get_oper_ch(adapter)) ready_on_channel = _TRUE; + + /* if connected and remain_ch is not same as AP's channel + * Note : cur_channel is AP's channel, oper_channel is the channel driver is now on. + */ + if (check_fwstate(&adapter->mlmepriv, WIFI_ASOC_STATE) && + remain_ch != pmlmeext->cur_channel) + rtw_leave_opch(adapter); } if (ready_on_channel == _TRUE) { diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_rson.c b/drivers/net/wireless/rtl8822cs/core/rtw_rson.c index dba8fb73b..15e493400 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_rson.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_rson.c @@ -384,14 +384,23 @@ int rtw_rson_isupdate_roamcan(struct mlme_priv *mlme return _FALSE; } -void rtw_rson_show_survey_info(struct seq_file *m, _list *plist, _list *phead) +void rtw_rson_show_survey_info(void *sel, _adapter *padapter) { + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + _queue *queue = &(pmlmepriv->scanned_queue); + _irqL irqL; + _list *plist, *phead; struct wlan_network *pnetwork = NULL; struct rtw_rson_struct rson_data; s16 rson_score; u16 index = 0; - RTW_PRINT_SEL(m, "%5s %-17s %3s %5s %14s %10s %-3s %5s %32s\n", "index", "bssid", "ch", "id", "hop_cnt", "loading", "RSSI", "score", "ssid"); + RTW_PRINT_SEL(sel, "%5s %-17s %3s %5s %14s %10s %-3s %5s %32s\n", "index", "bssid", "ch", "id", "hop_cnt", "loading", "RSSI", "score", "ssid"); + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); while (1) { if (rtw_end_of_queue_search(phead, plist) == _TRUE) break; @@ -404,7 +413,7 @@ void rtw_rson_show_survey_info(struct seq_file *m, _list *plist, _list *phead) rson_score = 0; if (rtw_get_rson_struct(&(pnetwork->network), &rson_data) == _TRUE) rson_score = rtw_cal_rson_score(&rson_data, pnetwork->network.Rssi); - RTW_PRINT_SEL(m, "%5d "MAC_FMT" %3d 0x%08x %6d %10d %6d %6d %32s\n", + RTW_PRINT_SEL(sel, "%5d "MAC_FMT" %3d 0x%08x %6d %10d %6d %6d %32s\n", ++index, MAC_ARG(pnetwork->network.MacAddress), pnetwork->network.Configuration.DSConfig, @@ -415,8 +424,9 @@ void rtw_rson_show_survey_info(struct seq_file *m, _list *plist, _list *phead) rson_score, pnetwork->network.Ssid.Ssid); plist = get_next(plist); - } + } + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); } /* diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_security.c b/drivers/net/wireless/rtl8822cs/core/rtw_security.c index 639e1e574..f8ea253fa 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_security.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_security.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -26,27 +26,24 @@ static const char *_security_type_str[] = { "WEP104", "SMS4", "GCMP", -}; - -static const char *_security_type_bip_str[] = { +#ifdef CONFIG_IEEE80211W "BIP_CMAC_128", "BIP_GMAC_128", - "BIP_GMAC_256", - "BIP_CMAC_256", +#endif }; const char *security_type_str(u8 value) { -#ifdef CONFIG_IEEE80211W - if ((_BIP_MAX_ > value) && (value >= _BIP_CMAC_128_)) - return _security_type_bip_str[value & ~_SEC_TYPE_BIT_]; -#endif - if (_CCMP_256_ == value) return "CCMP_256"; if (_GCMP_256_ == value) return "GCMP_256"; - +#ifdef CONFIG_IEEE80211W + if (_BIP_CMAC_256_ == value) + return "BIP_CMAC_256"; + if (_BIP_GMAC_256_ == value) + return "BIP_GMAC_256"; +#endif if (_SEC_TYPE_MAX_ > value) return _security_type_str[value]; @@ -735,7 +732,7 @@ u32 rtw_tkip_encrypt(_adapter *padapter, u8 *pxmitframe) u8 hw_hdr_offset = 0; struct arc4context mycontext; sint curfragnum, length; - u32 prwskeylen; + /*u32 prwskeylen;*/ u8 *pframe, *payload, *iv, *prwskey; union pn48 dot11txpn; @@ -791,7 +788,7 @@ u32 rtw_tkip_encrypt(_adapter *padapter, u8 *pxmitframe) prwskey = pattrib->dot118021x_UncstKey.skey; } - prwskeylen = 16; + /*prwskeylen = 16;*/ for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) { iv = pframe + pattrib->hdrlen; @@ -838,10 +835,8 @@ u32 rtw_tkip_encrypt(_adapter *padapter, u8 *pxmitframe) } return res; - } - /* The hlen isn't include the IV */ u32 rtw_tkip_decrypt(_adapter *padapter, u8 *precvframe) { @@ -853,7 +848,7 @@ u32 rtw_tkip_decrypt(_adapter *padapter, u8 *precvframe) u8 crc[4]; struct arc4context mycontext; sint length; - u32 prwskeylen; + /*u32 prwskeylen;*/ u8 *pframe, *payload, *iv, *prwskey; union pn48 dot11txpn; @@ -911,10 +906,10 @@ u32 rtw_tkip_decrypt(_adapter *padapter, u8 *precvframe) /* RTW_INFO("rx bc/mc packets, to perform sw rtw_tkip_decrypt\n"); */ /* prwskey = psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey; */ prwskey = psecuritypriv->dot118021XGrpKey[prxattrib->key_index].skey; - prwskeylen = 16; + /*prwskeylen = 16;*/ } else { prwskey = &stainfo->dot118021x_UncstKey.skey[0]; - prwskeylen = 16; + /*prwskeylen = 16;*/ } iv = pframe + prxattrib->hdrlen; @@ -2870,3 +2865,66 @@ BIP_exit: #endif /* CONFIG_IEEE80211W */ +/* IV is encryption header index of packet, + * PN is sequence number after correct mapping. + */ +u8 rtw_iv_to_pn(u8 *iv, u8 *pn, u8 *key_id, u32 enc_algo) +{ + /* iv and pn must be Little Endian format */ + switch (enc_algo) { + case _TKIP_: + *(pn) = *(iv + 2); + *(pn + 1) = *(iv); + break; + case _AES_: + case _GCMP_: + case _CCMP_256_: + case _GCMP_256_: + *(pn) = *(iv); + *(pn + 1) = *(iv + 1); + break; + default: + return _FAIL; + } + + *(pn + 2) = *(iv + 4); + *(pn + 3) = *(iv + 5); + *(pn + 4) = *(iv + 6); + *(pn + 5) = *(iv + 7); + + if (key_id) + *key_id = *(iv + 3) >> 6; + + return _SUCCESS; +} + +u8 rtw_pn_to_iv(u8 *pn, u8 *iv, u8 key_id, u32 enc_algo) +{ + /* iv and pn must be Little Endian format */ + switch (enc_algo) { + case _TKIP_: + *(iv) = *(pn + 1); + *(iv + 1) = (*(pn + 1) | 0x20) & 0x7F; + *(iv + 2) = *(pn); + break; + case _AES_: + case _GCMP_: + case _CCMP_256_: + case _GCMP_256_: + *(iv) = *(pn); + *(iv + 1) = *(pn + 1); + *(iv + 2) = 0; + break; + default: + return _FAIL; + } + + *(iv + 3) = BIT(5) | ((key_id & 0x3) << 6); + *(iv + 4) = *(pn + 2); + *(iv + 5) = *(pn + 3); + *(iv + 6) = *(pn + 4); + *(iv + 7) = *(pn + 5); + + return _SUCCESS; +} + diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_sreset.c b/drivers/net/wireless/rtl8822cs/core/rtw_sreset.c index 21cc18bc4..3ddf71d1e 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_sreset.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_sreset.c @@ -282,11 +282,18 @@ void sreset_reset(_adapter *padapter) systime start = rtw_get_current_time(); struct dvobj_priv *psdpriv = padapter->dvobj; struct debug_priv *pdbgpriv = &psdpriv->drv_dbg; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + u8 ips_mode_bk; + u8 ips_changed = _FALSE; RTW_INFO("%s\n", __FUNCTION__); psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; + if (!rtw_is_hw_init_completed(padapter)){ + RTW_INFO("hardware init not yet done\n"); + return; + } #ifdef CONFIG_LPS rtw_set_ps_mode(padapter, PS_MODE_ACTIVE, 0, 0, "SRESET"); @@ -298,9 +305,34 @@ void sreset_reset(_adapter *padapter) pwrpriv->change_rfpwrstate = rf_off; rtw_mi_sreset_adapter_hdl(padapter, _FALSE);/*sreset_stop_adapter*/ + #ifdef CONFIG_IPS + /* 1. If driver state is in ips, leaving ips at first */ + if (pwrpriv->rf_pwrstate == rf_off || pwrpriv->bips_processing == _TRUE) { + if (ATOMIC_READ(&(pcmdpriv->cmdthd_running)) == _TRUE) { + if (rtw_ips_ctrl_wk_cmd(padapter, IPS_CTRL_LEAVE_SRESET, -1, + RTW_CMDF_DIRECTLY) != _SUCCESS) { + RTW_ERR(FUNC_ADPT_FMT" Fail to leave IPS (current mode=%d).\n" + , FUNC_ADPT_ARG(padapter), pwrpriv->ips_mode_req); + } + } + } + + /* 2. If current ips mode is NOT IPS_NORMAL, replacing it to IPS_NORMAL */ + /* in order to use card disable to execute sreset. */ + if (pwrpriv->ips_mode_req != IPS_NORMAL) { + ips_mode_bk = pwrpriv->ips_mode_req; + pwrpriv->ips_mode_req = IPS_NORMAL; + ips_changed = _TRUE; + } + + /* 3. Do card disable/enable to achieve sreset. */ _ips_enter(padapter); _ips_leave(padapter); + + /* 4. Restore the original ips mode setting. */ + if (ips_changed) + pwrpriv->ips_mode_req = ips_mode_bk; #endif #if defined(CONFIG_AP_MODE) && defined(CONFIG_CONCURRENT_MODE) rtw_mi_ap_info_restore(padapter); diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_sta_mgt.c b/drivers/net/wireless/rtl8822cs/core/rtw_sta_mgt.c index d0966567c..959b30f90 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_sta_mgt.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_sta_mgt.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -190,15 +190,24 @@ void dump_st_ctl(void *sel, struct st_ctl_t *st_ctl) } -void _rtw_init_stainfo(struct sta_info *psta); -void _rtw_init_stainfo(struct sta_info *psta) +static void _rtw_init_stainfo(struct sta_priv *stapriv, struct sta_info *psta) { + bool pool_init = psta->padapter ? false : true; /* called by _rtw_init_sta_priv() */ + +#ifdef CONFIG_AP_MODE + if (!pool_init) { + rtw_warn_on(!rtw_is_list_empty(&psta->asoc_list)); + rtw_warn_on(!rtw_is_list_empty(&psta->auth_list)); + } +#endif + _rtw_memset((u8 *)psta, 0, sizeof(struct sta_info)); + psta->padapter = stapriv->padapter; + _rtw_spinlock_init(&psta->lock); _rtw_init_listhead(&psta->list); _rtw_init_listhead(&psta->hash_list); - /* _rtw_init_listhead(&psta->asoc_list); */ /* _rtw_init_listhead(&psta->sleep_list); */ /* _rtw_init_listhead(&psta->wakeup_list); */ @@ -214,6 +223,9 @@ void _rtw_init_stainfo(struct sta_info *psta) _rtw_init_listhead(&psta->auth_list); psta->bpairwise_key_installed = _FALSE; +#ifdef CONFIG_RTW_80211R_AP + rtw_ft_peer_info_init(psta); +#endif #ifdef CONFIG_RTW_80211R psta->ft_pairwise_key_installed = _FALSE; #endif @@ -226,6 +238,9 @@ u32 _rtw_init_sta_priv(struct sta_priv *pstapriv) { _adapter *adapter = container_of(pstapriv, _adapter, stapriv); struct macid_ctl_t *macid_ctl = adapter_to_macidctl(adapter); +#ifdef CONFIG_AP_MODE + struct registry_priv *regsty = adapter_to_regsty(adapter); +#endif struct sta_info *psta; s32 i; u32 ret = _FAIL; @@ -255,7 +270,7 @@ u32 _rtw_init_sta_priv(struct sta_priv *pstapriv) for (i = 0; i < NUM_STA; i++) { - _rtw_init_stainfo(psta); + _rtw_init_stainfo(pstapriv, psta); _rtw_init_listhead(&(pstapriv->sta_hash[i])); @@ -268,6 +283,8 @@ u32 _rtw_init_sta_priv(struct sta_priv *pstapriv) #ifdef CONFIG_AP_MODE pstapriv->max_aid = macid_ctl->num; + if (regsty->max_ap_assoc_sta) + pstapriv->max_aid = rtw_min(pstapriv->max_aid, regsty->max_ap_assoc_sta); pstapriv->rr_aid = 0; pstapriv->started_aid = 1; pstapriv->sta_aid = rtw_zmalloc(pstapriv->max_aid * sizeof(struct sta_info *)); @@ -304,6 +321,8 @@ u32 _rtw_init_sta_priv(struct sta_priv *pstapriv) _rtw_memset(pstapriv->atmel_rc_pattern, 0, ETH_ALEN); #endif pstapriv->max_num_sta = NUM_STA; + if (regsty->max_ap_assoc_sta) + pstapriv->max_num_sta = rtw_min(pstapriv->max_num_sta, regsty->max_ap_assoc_sta); #if CONFIG_RTW_MACADDR_ACL for (i = 0; i < RTW_ACL_PERIOD_NUM; i++) @@ -390,9 +409,7 @@ void rtw_mfree_stainfo(struct sta_info *psta); void rtw_mfree_stainfo(struct sta_info *psta) { - if (&psta->lock != NULL) - _rtw_spinlock_free(&psta->lock); - + _rtw_spinlock_free(&psta->lock); _rtw_free_sta_xmit_priv_lock(&psta->sta_xmitpriv); _rtw_free_sta_recv_priv_lock(&psta->sta_recvpriv); @@ -462,6 +479,10 @@ u32 _rtw_free_sta_priv(struct sta_priv *pstapriv) while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { int i; psta = LIST_CONTAINOR(plist, struct sta_info , hash_list); +#ifdef CONFIG_IEEE80211W + _cancel_timer_ex(&psta->dot11w_expire_timer); +#endif + _cancel_timer_ex(&psta->addba_retry_timer); plist = get_next(plist); for (i = 0; i < 16 ; i++) { @@ -539,9 +560,7 @@ struct sta_info *rtw_alloc_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr) rtw_list_delete(&(psta->list)); /* _exit_critical_bh(&(pfree_sta_queue->lock), &irqL); */ - _rtw_init_stainfo(psta); - - psta->padapter = pstapriv->padapter; + _rtw_init_stainfo(pstapriv, psta); _rtw_memcpy(psta->cmn.mac_addr, hwaddr, ETH_ALEN); @@ -748,7 +767,7 @@ u32 rtw_free_stainfo(_adapter *padapter , struct sta_info *psta) #ifdef CONFIG_RTW_MGMT_QUEUE /* mgmt */ - rtw_free_xmitframe_queue(pxmitpriv, &pstaxmitpriv->mgmt_q.sta_pending); + rtw_free_mgmt_xmitframe_queue(pxmitpriv, &pstaxmitpriv->mgmt_q.sta_pending); rtw_list_delete(&(pstaxmitpriv->mgmt_q.tx_pending)); phwxmit = pxmitpriv->hwxmits + 4; phwxmit->accnt -= pstaxmitpriv->mgmt_q.qcnt; @@ -827,12 +846,11 @@ u32 rtw_free_stainfo(_adapter *padapter , struct sta_info *psta) rtw_release_macid(pstapriv->padapter, psta); #ifdef CONFIG_AP_MODE + rtw_stapriv_asoc_list_lock(pstapriv); + if (!rtw_is_list_empty(&psta->asoc_list)) + rtw_stapriv_asoc_list_del(pstapriv, psta); + rtw_stapriv_asoc_list_unlock(pstapriv); - /* - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL0); - rtw_list_delete(&psta->asoc_list); - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL0); - */ _enter_critical_bh(&pstapriv->auth_list_lock, &irqL0); if (!rtw_is_list_empty(&psta->auth_list)) { rtw_list_delete(&psta->auth_list); @@ -875,10 +893,14 @@ u32 rtw_free_stainfo(_adapter *padapter , struct sta_info *psta) psta->under_exist_checking = 0; #endif +#ifdef CONFIG_RTW_80211R_AP + rtw_ft_peer_info_free(psta); +#endif #endif /* CONFIG_AP_MODE */ rtw_st_ctl_deinit(&psta->st_ctl); + psta->is_freeing = false; if (is_pre_link_sta == _FALSE) { _rtw_spinlock_free(&psta->lock); @@ -946,22 +968,15 @@ exit: } /* any station allocated can be searched by hash list */ -struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr) +static struct sta_info *_rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr, bool to_free) { - _irqL irqL; - _list *plist, *phead; - struct sta_info *psta = NULL; - u32 index; - const u8 *addr; - u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - if (hwaddr == NULL) return NULL; @@ -977,13 +992,13 @@ struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr) phead = &(pstapriv->sta_hash[index]); plist = get_next(phead); - while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { - psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); if ((_rtw_memcmp(psta->cmn.mac_addr, addr, ETH_ALEN)) == _TRUE) { /* if found the matched address */ + if (to_free) + psta->is_freeing = true; break; } psta = NULL; @@ -991,35 +1006,56 @@ struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr) } _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); - return psta; + return psta; +} + +struct sta_info *rtw_get_stainfo(struct sta_priv *stapriv, const u8 *hwaddr) +{ + return _rtw_get_stainfo(stapriv, hwaddr, false); +} + +struct sta_info *rtw_get_stainfo_to_free(struct sta_priv *stapriv, const u8 *hwaddr) +{ + return _rtw_get_stainfo(stapriv, hwaddr, true); +} + +void rtw_stainfo_claim_to_free_no_lock(struct sta_info *sta) +{ + if (!rtw_is_list_empty(&sta->hash_list)) + sta->is_freeing = true; +} + +void rtw_stainfo_claim_to_free(struct sta_info *sta) +{ + _rtw_spinlock_bh(&sta->padapter->stapriv.sta_hash_lock); + rtw_stainfo_claim_to_free_no_lock(sta); + _rtw_spinunlock_bh(&sta->padapter->stapriv.sta_hash_lock); } u32 rtw_init_bcmc_stainfo(_adapter *padapter) { - struct sta_info *psta; - struct tx_servq *ptxservq; - u32 res = _SUCCESS; + /*struct tx_servq *ptxservq;*/ NDIS_802_11_MAC_ADDRESS bcast_addr = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - struct sta_priv *pstapriv = &padapter->stapriv; psta = rtw_alloc_stainfo(pstapriv, bcast_addr); - - if (psta == NULL) { - res = _FAIL; + if (!psta) { + RTW_ERR(FUNC_ADPT_FMT ": missing stainfo of " MAC_FMT " !\n", + FUNC_ADPT_ARG(padapter), MAC_ARG(bcast_addr)); goto exit; } + #ifdef CONFIG_BEAMFORMING psta->cmn.bf_info.g_id = 63; psta->cmn.bf_info.p_aid = 0; #endif + /* ptxservq = &(psta->sta_xmitpriv.be_q); - /* _enter_critical(&pstapending->lock, &irqL0); if (rtw_is_list_empty(&ptxservq->tx_pending)) @@ -1030,10 +1066,8 @@ u32 rtw_init_bcmc_stainfo(_adapter *padapter) exit: return _SUCCESS; - } - struct sta_info *rtw_get_bcmc_stainfo(_adapter *padapter) { struct sta_info *psta; @@ -1098,6 +1132,39 @@ void dump_aid_status(void *sel, _adapter *adapter) rtw_mfree(aid_bmp, stapriv->aid_bmp_len); } + +void rtw_stapriv_asoc_list_lock(struct sta_priv *stapriv) +{ + _rtw_spinlock_bh(&stapriv->asoc_list_lock); +} + +void rtw_stapriv_asoc_list_unlock(struct sta_priv *stapriv) +{ + _rtw_spinunlock_bh(&stapriv->asoc_list_lock); +} + +void rtw_stapriv_asoc_list_add(struct sta_priv *stapriv, struct sta_info *sta) +{ + rtw_warn_on(!_rtw_spin_is_locked(&stapriv->asoc_list_lock)); + rtw_list_insert_tail(&sta->asoc_list, &stapriv->asoc_list); + stapriv->asoc_list_cnt++; +#ifdef CONFIG_RTW_TOKEN_BASED_XMIT + if (sta->tbtx_enable) + stapriv->tbtx_asoc_list_cnt++; +#endif +} + +void rtw_stapriv_asoc_list_del(struct sta_priv *stapriv, struct sta_info *sta) +{ + rtw_warn_on(!_rtw_spin_is_locked(&stapriv->asoc_list_lock)); + rtw_list_delete(&sta->asoc_list); + stapriv->asoc_list_cnt--; +#ifdef CONFIG_RTW_TOKEN_BASED_XMIT + if (sta->tbtx_enable) + stapriv->tbtx_asoc_list_cnt--; +#endif + STA_SET_MESH_PLINK(sta, NULL); +} #endif /* CONFIG_AP_MODE */ #if CONFIG_RTW_MACADDR_ACL diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_swcrypto.c b/drivers/net/wireless/rtl8822cs/core/rtw_swcrypto.c index f8f87a2ed..e7889cf03 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_swcrypto.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_swcrypto.c @@ -14,7 +14,7 @@ *****************************************************************************/ #include #include -#include "crypto/aes.h" +#include #include "crypto/aes_siv.h" #include "crypto/aes_wrap.h" #include "crypto/sha256.h" diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_tdls.c b/drivers/net/wireless/rtl8822cs/core/rtw_tdls.c index 9973c17ce..6562dfd57 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_tdls.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_tdls.c @@ -522,7 +522,7 @@ u8 *rtw_tdls_set_ht_cap(_adapter *padapter, u8 *pframe, struct pkt_attrib *pattr padapter->mlmepriv.htpriv.sgi_40m = _FALSE; } - rtw_restructure_ht_ie(padapter, NULL, pframe, 0, &(pattrib->pktlen), padapter->mlmeextpriv.cur_channel, NULL); + rtw_restructure_ht_ie(padapter, NULL, pframe, 0, &(pattrib->pktlen), padapter->mlmeextpriv.cur_channel); return pframe + pattrib->pktlen; } @@ -704,22 +704,7 @@ u8 *rtw_tdls_set_vht_op_mode_notify(_adapter *padapter, u8 *pframe, struct pkt_a u8 *rtw_tdls_set_sup_ch(_adapter *adapter, u8 *pframe, struct pkt_attrib *pattrib) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - u8 sup_ch[30 * 2] = {0x00}, ch_set_idx = 0, sup_ch_idx = 2; - - while (ch_set_idx < rfctl->max_chan_nums && rfctl->channel_set[ch_set_idx].ChannelNum != 0) { - if (rfctl->channel_set[ch_set_idx].ChannelNum <= 14) { - /* TODO: fix 2.4G supported channel when channel doesn't start from 1 and continuous */ - sup_ch[0] = 1; /* First channel number */ - sup_ch[1] = rfctl->channel_set[ch_set_idx].ChannelNum; /* Number of channel */ - } else { - sup_ch[sup_ch_idx++] = rfctl->channel_set[ch_set_idx].ChannelNum; - sup_ch[sup_ch_idx++] = 1; - } - ch_set_idx++; - } - - return rtw_set_ie(pframe, _SUPPORTED_CH_IE_, sup_ch_idx, sup_ch, &(pattrib->pktlen)); + return rtw_chset_set_spt_chs_ie(adapter_to_chset(adapter), pframe, &(pattrib->pktlen)); } u8 *rtw_tdls_set_rsnie(struct tdls_txmgmt *ptxmgmt, u8 *pframe, struct pkt_attrib *pattrib, int init, struct sta_info *ptdls_sta) @@ -1839,7 +1824,7 @@ sint On_TDLS_Setup_Req(_adapter *padapter, union recv_frame *precv_frame, struct struct security_priv *psecuritypriv = &padapter->securitypriv; _irqL irqL; struct rx_pkt_attrib *prx_pkt_attrib = &precv_frame->u.hdr.attrib; - u8 *prsnie, *ppairwise_cipher; + u8 *pftie = NULL, *prsnie, *ppairwise_cipher; u8 i, k; u8 ccmp_included = 0, rsnie_included = 0; u16 j, pairwise_count; @@ -1938,19 +1923,18 @@ sint On_TDLS_Setup_Req(_adapter *padapter, union recv_frame *precv_frame, struct rsnie_included = 1; if (prx_pkt_attrib->encrypt) { prsnie = (u8 *)pIE; - if (pIE->Length <= sizeof(ptdls_sta->TDLS_RSNIE)) { - /* Check CCMP pairwise_cipher presence. */ - ppairwise_cipher = prsnie + 10; - _rtw_memcpy(ptdls_sta->TDLS_RSNIE, pIE->data, pIE->Length); - pairwise_count = *(u16 *)(ppairwise_cipher - 2); - for (k = 0; k < pairwise_count; k++) { - if (_rtw_memcmp(ppairwise_cipher + 4 * k, RSN_CIPHER_SUITE_CCMP, 4) == _TRUE) - ccmp_included = 1; - } - - if (ccmp_included == 0) - txmgmt.status_code = _STATS_INVALID_RSNIE_; + /* Check CCMP pairwise_cipher presence. */ + ppairwise_cipher = prsnie + 10; + _rtw_memcpy(ptdls_sta->TDLS_RSNIE, pIE->data, + (pIE->Length <= sizeof(ptdls_sta->TDLS_RSNIE) ? pIE->Length : sizeof(ptdls_sta->TDLS_RSNIE))); + pairwise_count = *(u16 *)(ppairwise_cipher - 2); + for (k = 0; k < pairwise_count; k++) { + if (_rtw_memcmp(ppairwise_cipher + 4 * k, RSN_CIPHER_SUITE_CCMP, 4) == _TRUE) + ccmp_included = 1; } + + if (ccmp_included == 0) + txmgmt.status_code = _STATS_INVALID_RSNIE_; } break; case WLAN_EID_EXT_CAP: @@ -1958,6 +1942,7 @@ sint On_TDLS_Setup_Req(_adapter *padapter, union recv_frame *precv_frame, struct case _VENDOR_SPECIFIC_IE_: break; case _FTIE_: + pftie = (u8 *)pIE; if (prx_pkt_attrib->encrypt) _rtw_memcpy(SNonce, (ptr + j + 52), 32); break; @@ -2011,7 +1996,10 @@ sint On_TDLS_Setup_Req(_adapter *padapter, union recv_frame *precv_frame, struct ptdls_sta->tdls_sta_state |= TDLS_INITIATOR_STATE; if (prx_pkt_attrib->encrypt) { - _rtw_memcpy(ptdls_sta->SNonce, SNonce, 32); + if (pftie == NULL) + RTW_WARN("%s: SNonce is null\n", __func__); + else + _rtw_memcpy(ptdls_sta->SNonce, SNonce, 32); if (timeout_interval <= 300) ptdls_sta->TDLS_PeerKey_Lifetime = TDLS_TPK_RESEND_COUNT; @@ -2129,6 +2117,7 @@ int On_TDLS_Setup_Rsp(_adapter *padapter, union recv_frame *precv_frame, struct if (_rtw_memcmp(ppairwise_cipher + 4 * k, RSN_CIPHER_SUITE_CCMP, 4) == _TRUE) verify_ccmp = 1; } + break; case WLAN_EID_EXT_CAP: break; case _VENDOR_SPECIFIC_IE_: @@ -2179,7 +2168,11 @@ int On_TDLS_Setup_Rsp(_adapter *padapter, union recv_frame *precv_frame, struct ptdls_sta->bssratelen = supportRateNum; _rtw_memcpy(ptdls_sta->bssrateset, supportRate, supportRateNum); - _rtw_memcpy(ptdls_sta->ANonce, ANonce, 32); + + if (pftie == NULL) + RTW_WARN("%s: ANonce is null\n", __func__); + else + _rtw_memcpy(ptdls_sta->ANonce, ANonce, 32); #ifdef CONFIG_WFD rtw_tdls_process_wfd_ie(ptdlsinfo, ptr + FIXED_IE, parsing_length); @@ -2575,11 +2568,11 @@ sint On_TDLS_Ch_Switch_Req(_adapter *padapter, union recv_frame *precv_frame, st switch (pIE->ElementID) { case EID_SecondaryChnlOffset: switch (*(pIE->data)) { - case EXTCHNL_OFFSET_UPPER: + case SCA: pchsw_info->ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; break; - case EXTCHNL_OFFSET_LOWER: + case SCB: pchsw_info->ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; break; @@ -2597,6 +2590,7 @@ sint On_TDLS_Ch_Switch_Req(_adapter *padapter, union recv_frame *precv_frame, st RTW_GET_LE16(pIE->data + 2) : TDLS_CH_SWITCH_TIMEOUT * 1000; RTW_INFO("[TDLS] %s ch_switch_time:%d, ch_switch_timeout:%d\n" , __FUNCTION__, RTW_GET_LE16(pIE->data), RTW_GET_LE16(pIE->data + 2)); + break; default: break; } @@ -3369,11 +3363,6 @@ void _tdls_handshake_timer_hdl(void *FunctionContext) { struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; _adapter *padapter = NULL; - struct tdls_txmgmt txmgmt; - - _rtw_memset(&txmgmt, 0x00, sizeof(struct tdls_txmgmt)); - _rtw_memcpy(txmgmt.peer, ptdls_sta->cmn.mac_addr, ETH_ALEN); - txmgmt.status_code = _RSON_TDLS_TEAR_UN_RSN_; if (ptdls_sta != NULL) { padapter = ptdls_sta->padapter; @@ -3390,11 +3379,6 @@ void _tdls_pti_timer_hdl(void *FunctionContext) { struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; _adapter *padapter = NULL; - struct tdls_txmgmt txmgmt; - - _rtw_memset(&txmgmt, 0x00, sizeof(struct tdls_txmgmt)); - _rtw_memcpy(txmgmt.peer, ptdls_sta->cmn.mac_addr, ETH_ALEN); - txmgmt.status_code = _RSON_TDLS_TEAR_TOOFAR_; if (ptdls_sta != NULL) { padapter = ptdls_sta->padapter; @@ -3402,7 +3386,7 @@ void _tdls_pti_timer_hdl(void *FunctionContext) if (ptdls_sta->tdls_sta_state & TDLS_WAIT_PTR_STATE) { RTW_INFO("[TDLS] Doesn't receive PTR from peer dev:"MAC_FMT"; " "Send TDLS Tear Down\n", MAC_ARG(ptdls_sta->cmn.mac_addr)); - rtw_tdls_cmd(padapter, ptdls_sta->cmn.mac_addr, TDLS_TEARDOWN_STA); + rtw_tdls_cmd(padapter, ptdls_sta->cmn.mac_addr, TDLS_TEARDOWN_STA_TOOFAR); } } } diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_txpwr.c b/drivers/net/wireless/rtl8822cs/core/rtw_txpwr.c new file mode 100644 index 000000000..704ddd2e0 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/core/rtw_txpwr.c @@ -0,0 +1,96 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#define _RTW_TXPWR_C_ + +#include + +void rtw_update_txpwr_level(struct dvobj_priv *dvobj, enum phl_band_idx band_idx) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); +#ifdef CONFIG_ACTIVE_TPC_REPORT + int i; +#endif + + rtw_txpwr_hal_update_pwr(dvobj, band_idx); + rtw_rfctl_update_op_mode(rfctl, 0, 0, 0); + +#ifdef CONFIG_ACTIVE_TPC_REPORT + for (i = 0; i < dvobj->iface_nums; i++) { + struct mlme_priv *mlme; + + if (!dvobj->padapters[i]) + continue; + if (!CHK_MLME_STATE(dvobj->padapters[i], WIFI_AP_STATE | WIFI_MESH_STATE) + || !MLME_IS_ASOC(dvobj->padapters[i]) || MLME_IS_OPCH_SW(dvobj->padapters[i])) + continue; + if (dvobj->padapters[i]->mlmeextpriv.bstart_bss != _TRUE) + continue; + + mlme = &(dvobj->padapters[i]->mlmepriv); + if (MLME_ACTIVE_TPC_REPORT(mlme)) + update_beacon(dvobj->padapters[i], WLAN_EID_TPC_REPORT, NULL, 1, 0); + } +#endif +} + +void rtw_update_txpwr_level_all_hwband(struct dvobj_priv *dvobj) +{ + rtw_update_txpwr_level(dvobj, HW_BAND_MAX); +} + +void dump_tx_power_ext_info(void *sel, struct dvobj_priv *dvobj) +{ + struct tx_power_ext_info info; + struct { + const char *str; + struct txpwr_param_status *status; + } params[] = { + {"tx_power_by_rate", &info.by_rate}, + {"tx_power_limit", &info.lmt}, + #ifdef CONFIG_80211AX_HE + {"tx_power_limit_ru", &info.lmt_ru}, + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + {"tx_power_limit_6g", &info.lmt_6g}, + {"tx_power_limit_ru_6g", &info.lmt_ru_6g}, + #endif + }; + u8 num_of_param = sizeof(params) / sizeof(params[0]); + u8 i; + + rtw_txpwr_hal_dump_target_info(sel, dvobj); + if (rtw_txpwr_hal_get_ext_info(dvobj, &info)) { + for (i = 0; i < num_of_param; i++) { + RTW_PRINT_SEL(sel, "%s: %s, %s, %s\n", params[i].str + , params[i].status->enable ? "enabled" : "disabled" + , params[i].status->loaded ? "loaded" : "unloaded" + , params[i].status->external_src ? "file" : "default" + ); + } + } else + RTW_PRINT_SEL(sel, "not ready\n"); +} + +void dump_txpwr_tpc_settings(void *sel, struct dvobj_priv *dvobj) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + + if (rfctl->tpc_mode == TPC_MODE_DISABLE) + RTW_PRINT_SEL(sel, "mode:DISABLE(%d)\n", rfctl->tpc_mode); + else if (rfctl->tpc_mode == TPC_MODE_MANUAL) { + RTW_PRINT_SEL(sel, "mode:MANUAL(%d)\n", rfctl->tpc_mode); + RTW_PRINT_SEL(sel, "constraint:%d (mB)\n", rfctl->tpc_manual_constraint); + } +} diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_txpwr.h b/drivers/net/wireless/rtl8822cs/core/rtw_txpwr.h new file mode 100644 index 000000000..d51848bcc --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/core/rtw_txpwr.h @@ -0,0 +1,55 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef __RTW_TXPWR_H__ +#define __RTW_TXPWR_H__ + +#define TPC_MODE_DISABLE 0 +#define TPC_MODE_MANUAL 1 +#define TPC_MODE_INVALID 2 /* keep last */ + +#define TPC_MANUAL_CONSTRAINT_MAX 600 /* mB */ + +struct txpwr_param_status { + bool enable; + bool loaded; + bool external_src; +}; + +#define SET_TXPWR_PARAM_STATUS(_status, _enable, _loaded, _ext_src) \ + do { \ + (_status)->enable = _enable; \ + (_status)->loaded = _loaded; \ + (_status)->external_src = _ext_src; \ + } while (0) + +struct tx_power_ext_info { + struct txpwr_param_status by_rate; + struct txpwr_param_status lmt; +#ifdef CONFIG_80211AX_HE + struct txpwr_param_status lmt_ru; +#endif +#if CONFIG_IEEE80211_BAND_6GHZ + struct txpwr_param_status lmt_6g; + struct txpwr_param_status lmt_ru_6g; +#endif +}; + +void rtw_update_txpwr_level(struct dvobj_priv *dvobj, enum phl_band_idx band_idx); +void rtw_update_txpwr_level_all_hwband(struct dvobj_priv *dvobj); + +void dump_tx_power_ext_info(void *sel, struct dvobj_priv *dvobj); +void dump_txpwr_tpc_settings(void *sel, struct dvobj_priv *dvobj); + +#endif /* __RTW_TXPWR_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_vht.c b/drivers/net/wireless/rtl8822cs/core/rtw_vht.c index cd35aebdb..b8d54b97d 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_vht.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_vht.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -237,7 +237,8 @@ void rtw_vht_use_default_setting(_adapter *padapter) BOOLEAN bHwSupportBeamformer = _FALSE, bHwSupportBeamformee = _FALSE; u8 mu_bfer, mu_bfee; #endif /* CONFIG_BEAMFORMING */ - u8 tx_nss, rx_nss; + /*u8 tx_nss;*/ + u8 rx_nss; u8 rf_type = 0; struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); @@ -347,7 +348,7 @@ void rtw_vht_use_default_setting(_adapter *padapter) pvhtpriv->ampdu_len = pregistrypriv->ampdu_factor; - tx_nss = GET_HAL_TX_NSS(padapter); + /*tx_nss = GET_HAL_TX_NSS(padapter);*/ rx_nss = GET_HAL_RX_NSS(padapter); /* for now, vhtpriv.vht_mcs_map comes from RX NSS */ @@ -751,7 +752,7 @@ void rtw_process_vht_op_mode_notify(_adapter *padapter, u8 *pframe, void *sta) } if (update_ra) - rtw_dm_ra_mask_wk_cmd(padapter, (u8 *)psta); + rtw_dm_ra_mask_wk_cmd(padapter, psta); } u32 rtw_build_vht_operation_ie(_adapter *padapter, u8 *pbuf, u8 channel) @@ -979,7 +980,11 @@ u32 rtw_build_vht_cap_ie(_adapter *padapter, u8 *pbuf) /* find the largest bw supported by both registry and hal */ bw = hal_largest_bw(padapter, REGSTY_BW_5G(pregistrypriv)); - HighestRate = VHT_MCS_DATA_RATE[bw][pvhtpriv->sgi_80m][((pvhtpriv->vht_highest_rate - MGN_VHT1SS_MCS0) & 0x3f)]; + if(bw >= ARRAY_SIZE(VHT_MCS_DATA_RATE)){ + RTW_WARN("BW parameter value is out of range:%u\n", bw); + bw = ARRAY_SIZE(VHT_MCS_DATA_RATE) - 1; + } + HighestRate = VHT_MCS_DATA_RATE[bw][0][((pvhtpriv->vht_highest_rate - MGN_VHT1SS_MCS0) & 0x3f)]; HighestRate = (HighestRate + 1) >> 1; SET_VHT_CAPABILITY_ELE_MCS_RX_HIGHEST_RATE(pcap, HighestRate); /* indicate we support highest rx rate is 600Mbps. */ @@ -987,17 +992,17 @@ u32 rtw_build_vht_cap_ie(_adapter *padapter, u8 *pbuf) pbuf = rtw_set_ie(pbuf, EID_VHTCapability, 12, pcap, &len); + return len; } -u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, struct country_chplan *req_chplan) +u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; u32 ielen; u8 max_bw; u8 oper_ch, oper_bw = CHANNEL_WIDTH_20, oper_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; u8 *out_vht_op_ie, *ht_op_ie, *vht_cap_ie, *vht_op_ie; + BAND_TYPE band = rtw_is_2g_ch(channel) ? BAND_ON_2_4G : BAND_ON_5G; struct registry_priv *pregistrypriv = &padapter->registrypriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct vht_priv *pvhtpriv = &pmlmepriv->vhtpriv; @@ -1026,7 +1031,10 @@ u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_le oper_ch = GET_HT_OP_ELE_PRI_CHL(ht_op_ie + 2); /* find the largest bw supported by both registry and hal */ - max_bw = hal_largest_bw(padapter, REGSTY_BW_5G(pregistrypriv)); + if (band == BAND_ON_5G) + max_bw = hal_largest_bw(padapter, REGSTY_BW_5G(pregistrypriv)); + else if (band == BAND_ON_2_4G) + max_bw = hal_largest_bw(padapter, REGSTY_BW_2G(pregistrypriv)); if (max_bw >= CHANNEL_WIDTH_40) { /* get bw offset form HT_OP_IE */ @@ -1053,27 +1061,13 @@ u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_le } oper_bw = rtw_min(oper_bw, max_bw); - - /* try downgrage bw to fit in channel plan setting */ - while ((req_chplan && !rtw_country_chplan_is_chbw_valid(req_chplan, BAND_ON_5G, oper_ch, oper_bw, oper_offset, 1, 1, pregistrypriv)) - || (!req_chplan && !rtw_chset_is_chbw_valid(chset, oper_ch, oper_bw, oper_offset, 1, 1)) - || (IS_DFS_SLAVE_WITH_RD(rfctl) - && !rtw_rfctl_dfs_domain_unknown(rfctl) - && rtw_chset_is_chbw_non_ocp(chset, oper_ch, oper_bw, oper_offset)) - ) { - oper_bw--; - if (oper_bw == CHANNEL_WIDTH_20) { - oper_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - break; - } - } } } - rtw_warn_on(req_chplan && !rtw_country_chplan_is_chbw_valid(req_chplan, BAND_ON_5G, oper_ch, oper_bw, oper_offset, 1, 1, pregistrypriv)); - rtw_warn_on(!req_chplan && !rtw_chset_is_chbw_valid(chset, oper_ch, oper_bw, oper_offset, 1, 1)); - if (IS_DFS_SLAVE_WITH_RD(rfctl) && !rtw_rfctl_dfs_domain_unknown(rfctl)) - rtw_warn_on(rtw_chset_is_chbw_non_ocp(chset, oper_ch, oper_bw, oper_offset)); + /* try downgrage bw to fit in channel plan setting */ + oper_bw = adapter_adjust_linking_bw_by_regd(padapter, band, oper_ch, oper_bw, oper_offset); + if (oper_bw == CHANNEL_WIDTH_20) + oper_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; /* update VHT_OP_IE */ if (oper_bw < CHANNEL_WIDTH_80) { @@ -1266,15 +1260,13 @@ void rtw_reattach_vht_ies(_adapter *padapter, WLAN_BSSID_EX *pnetwork) RTW_INFO(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); - if (pnetwork->IEs != NULL) { - vht_op_ie = rtw_set_ie(vht_cap_ie, EID_VHTCapability, VHT_CAP_IE_LEN, - pvhtpriv->vht_cap_ie_backup, &(pnetwork->IELength)); + vht_op_ie = rtw_set_ie(vht_cap_ie, EID_VHTCapability, VHT_CAP_IE_LEN, + pvhtpriv->vht_cap_ie_backup, &(pnetwork->IELength)); - rtw_set_ie(vht_op_ie, EID_VHTOperation, VHT_OP_IE_LEN, - pvhtpriv->vht_op_ie_backup, &(pnetwork->IELength)); + rtw_set_ie(vht_op_ie, EID_VHTOperation, VHT_OP_IE_LEN, + pvhtpriv->vht_op_ie_backup, &(pnetwork->IELength)); - rtw_set_vht_ext_cap(padapter, pnetwork); - } + rtw_set_vht_ext_cap(padapter, pnetwork); pmlmepriv->vhtpriv.vht_option = _TRUE; } diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_wapi.c b/drivers/net/wireless/rtl8822cs/core/rtw_wapi.c index affe1c8d4..cc9c8958f 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_wapi.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_wapi.c @@ -284,7 +284,7 @@ u8 WapiWriteOneCamEntry( usConfig |= (0x01 << 5); } - write_cam(padapter, EntryId, usConfig, pMacAddr, pKey); + write_cam(padapter, EntryId, usConfig, pMacAddr, pKey, false); WAPI_TRACE(WAPI_API, "===========> %s\n", __FUNCTION__); return 1; @@ -628,7 +628,7 @@ void rtw_build_assoc_req_wapi_ie(_adapter *padapter, unsigned char *pframe, stru WAPI_TRACE(WAPI_MLME, "<========== %s\n", __FUNCTION__); } -void rtw_wapi_on_assoc_ok(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE) +void rtw_wapi_on_assoc_ok(_adapter *padapter) { PRT_WAPI_T pWapiInfo = &(padapter->wapiInfo); PRT_WAPI_STA_INFO pWapiSta; diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_wlan_util.c b/drivers/net/wireless/rtl8822cs/core/rtw_wlan_util.c index 36f833dd6..343a783fe 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_wlan_util.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_wlan_util.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -473,6 +473,18 @@ inline void rtw_set_oper_choffset(_adapter *adapter, u8 offset) adapter_to_dvobj(adapter)->oper_ch_offset = offset; } +int rtw_get_oper_bchbw_by_hwband(struct dvobj_priv *dvobj, enum phl_band_idx band_idx + , enum band_type *band, u8 *ch, u8 *bw, u8 *offset) +{ + /* this driver has only one hwband and 2G/5G only */ + *band = rtw_is_2g_ch(dvobj->oper_channel) ? BAND_ON_24G : BAND_ON_5G; + *ch = dvobj->oper_channel; + *bw = dvobj->oper_bwmode; + *offset = dvobj->oper_ch_offset; + + return *ch ? _SUCCESS : _FAIL; +} + inline systime rtw_get_on_oper_ch_time(_adapter *adapter) { return adapter_to_dvobj(adapter)->on_oper_ch_time; @@ -486,7 +498,8 @@ inline systime rtw_get_on_cur_ch_time(_adapter *adapter) return 0; } -void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode) +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode) { u8 center_ch, chnl_offset80 = HAL_PRIME_CHNL_OFFSET_DONT_CARE; #if (defined(CONFIG_TDLS) && defined(CONFIG_TDLS_CH_SW)) || defined(CONFIG_MCC_MODE) @@ -516,19 +529,6 @@ void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char } #endif -#ifdef CONFIG_DFS_MASTER - { - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - bool ori_overlap_radar_detect_ch = rtw_rfctl_overlap_radar_detect_ch(rfctl); - bool new_overlap_radar_detect_ch = _rtw_rfctl_overlap_radar_detect_ch(rfctl, channel, bwmode, channel_offset); - - if (new_overlap_radar_detect_ch && IS_CH_WAITING(rfctl)) { - u8 pause = 0xFF; - - rtw_hal_set_hwreg(padapter, HW_VAR_TXPAUSE, &pause); - } -#endif /* CONFIG_DFS_MASTER */ - /* set Channel */ /* saved channel/bw info */ rtw_set_oper_ch(padapter, channel); @@ -554,22 +554,37 @@ void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char rtw_hal_ch_sw_iqk_info_backup(padapter); #endif - rtw_odm_adaptivity_update(adapter_to_dvobj(padapter)); - -#ifdef CONFIG_DFS_MASTER - if (new_overlap_radar_detect_ch) - rtw_odm_radar_detect_enable(padapter); - else if (ori_overlap_radar_detect_ch) { - u8 pause = 0x00; - - rtw_odm_radar_detect_disable(padapter); - rtw_hal_set_hwreg(padapter, HW_VAR_TXPAUSE, &pause); - } - } -#endif /* CONFIG_DFS_MASTER */ +#ifdef CONFIG_DIRECT_EDCCA_MODE_SETTING + rtw_edcca_hal_update(adapter_to_dvobj(padapter)); +#endif _exit_critical_mutex(&(adapter_to_dvobj(padapter)->setch_mutex), NULL); } +#endif + +void set_bch_bwmode(_adapter *padapter, + struct _ADAPTER_LINK *padapter_link, + enum band_type band, + unsigned char channel, + unsigned char channel_offset, + unsigned short bwmode, + u8 do_rfk) +{ + u8 doiqk; + + if (do_rfk == _TRUE) { + doiqk = _TRUE; + rtw_hal_set_hwreg(padapter , HW_VAR_DO_IQK , &doiqk); + } + + /* this driver has only one hwband and 2G/5G only */ + set_channel_bwmode(padapter, channel, channel_offset, bwmode); + + if (do_rfk == _TRUE) { + doiqk = _FALSE; + rtw_hal_set_hwreg(padapter , HW_VAR_DO_IQK , &doiqk); + } +} __inline u8 *get_my_bssid(WLAN_BSSID_EX *pnetwork) { @@ -682,7 +697,7 @@ void _clear_cam_entry(_adapter *padapter, u8 entry) rtw_sec_write_cam_ent(padapter, entry, 0, null_sta, null_key); } -inline void _write_cam(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key) +static void _write_cam(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key) { #ifdef CONFIG_WRITE_CACHE_ONLY write_cam_cache(adapter, id , ctrl, mac, key); @@ -692,9 +707,9 @@ inline void _write_cam(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key) #endif } -inline void write_cam(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key) +void write_cam(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key, bool ext) { - if (ctrl & BIT(9)) { + if (ext) { _write_cam(adapter, id, ctrl, mac, key); _write_cam(adapter, (id + 1), ctrl | BIT(5), mac, (key + 16)); RTW_INFO_DUMP("key-0: ", key, 16); @@ -1283,12 +1298,12 @@ inline void rtw_sec_cam_swap(_adapter *adapter, u8 cam_id_a, u8 cam_id_b) /*setp-3. set cam_info*/ if (cam_a_used) { - write_cam(adapter, cam_id_b, cache_a.ctrl, cache_a.mac, cache_a.key); + _write_cam(adapter, cam_id_b, cache_a.ctrl, cache_a.mac, cache_a.key); rtw_camid_set(adapter, cam_id_b); } if (cam_b_used) { - write_cam(adapter, cam_id_a, cache_b.ctrl, cache_b.mac, cache_b.key); + _write_cam(adapter, cam_id_a, cache_b.ctrl, cache_b.mac, cache_b.key); rtw_camid_set(adapter, cam_id_a); } } @@ -1322,7 +1337,7 @@ void rtw_clean_dk_section(_adapter *adapter) for (i = 0; i < 4; i++) { if (rtw_sec_camid_is_used(cam_ctl, i)) { ept_cam_id = rtw_get_empty_cam_entry(adapter, 4); - if (ept_cam_id > 0) + if (ept_cam_id > 0 && ept_cam_id < SEC_CAM_ENT_NUM_SW_LIMIT) rtw_sec_cam_swap(adapter, i, ept_cam_id); } } @@ -1496,8 +1511,10 @@ void WMMOnAssocRsp(_adapter *padapter) #ifdef CONFIG_WMMPS_STA struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); struct qos_priv *pqospriv = &pmlmepriv->qospriv; -#endif /* CONFIG_WMMPS_STA */ - +#endif /* CONFIG_WMMPS_STA */ +#ifdef CONFIG_NARROWBAND_SUPPORTING + struct registry_priv *regsty = adapter_to_regsty(padapter); +#endif /* CONFIG_NARROWBAND_SUPPORTING */ acm_mask = 0; if (is_supported_5g(pmlmeext->cur_wireless_mode) || @@ -1506,6 +1523,13 @@ void WMMOnAssocRsp(_adapter *padapter) else aSifsTime = 10; +#ifdef CONFIG_NARROWBAND_SUPPORTING + if (regsty->rtw_nb_config == RTW_NB_CONFIG_WIDTH_10) + aSifsTime = 32; + else if (regsty->rtw_nb_config == RTW_NB_CONFIG_WIDTH_5) + aSifsTime = 64; +#endif /* CONFIG_NARROWBAND_SUPPORTING */ + if (pmlmeinfo->WMM_enable == 0) { padapter->mlmepriv.acm_mask = 0; @@ -1655,6 +1679,9 @@ static void bwmode_update_check(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pI if (pmlmeext->cur_bwmode >= CHANNEL_WIDTH_80) return; + if (pmlmeext->cur_bwmode != CHANNEL_WIDTH_40) /* not FC STA */ + return; + if (pIE->Length > sizeof(struct HT_info_element)) return; @@ -1693,46 +1720,35 @@ static void bwmode_update_check(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pI } - if ((new_bwmode != pmlmeext->cur_bwmode || new_ch_offset != pmlmeext->cur_ch_offset) - && new_bwmode < pmlmeext->cur_bwmode - ) { + if ((pmlmepriv->sw_to_20mhz == 0 && new_bwmode == CHANNEL_WIDTH_20) + || (pmlmepriv->sw_to_20mhz == 1 && new_bwmode == CHANNEL_WIDTH_40) + ) { pmlmeinfo->bwmode_updated = _TRUE; - - pmlmeext->cur_bwmode = new_bwmode; - pmlmeext->cur_ch_offset = new_ch_offset; + pmlmepriv->sw_to_20mhz = new_bwmode == CHANNEL_WIDTH_20 ? 1 : 0; + RTW_INFO(FUNC_ADPT_FMT" switching to %uMHz\n", FUNC_ADPT_ARG(padapter) + , pmlmepriv->sw_to_20mhz ? 20 : 40); /* update HT info also */ HT_info_handler(padapter, pIE); } else pmlmeinfo->bwmode_updated = _FALSE; - if (_TRUE == pmlmeinfo->bwmode_updated) { struct sta_info *psta; WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); struct sta_priv *pstapriv = &padapter->stapriv; - /* set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); */ - - /* update ap's stainfo */ psta = rtw_get_stainfo(pstapriv, cur_network->MacAddress); if (psta) { struct ht_priv *phtpriv_sta = &psta->htpriv; - if (phtpriv_sta->ht_option) { - /* bwmode */ - psta->cmn.bw_mode = pmlmeext->cur_bwmode; - phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset; - } else { - psta->cmn.bw_mode = CHANNEL_WIDTH_20; - phtpriv_sta->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - } + psta->cmn.bw_mode = new_bwmode; + phtpriv_sta->ch_offset = new_ch_offset; + psta->cmn.ra_info.is_support_sgi = query_ra_short_GI(psta, rtw_get_tx_bw_mode(padapter, psta)); - rtw_dm_ra_mask_wk_cmd(padapter, (u8 *)psta); + rtw_dm_ra_mask_wk_cmd(padapter, psta); } - - /* pmlmeinfo->bwmode_updated = _FALSE; */ /* bwmode_updated done, reset it! */ } #endif /* CONFIG_80211N_HT */ } @@ -2054,11 +2070,11 @@ void HTOnAssocRsp(_adapter *padapter) /* switch to the 40M Hz mode accoring to the AP */ pmlmeext->cur_bwmode = CHANNEL_WIDTH_40; switch ((pmlmeinfo->HT_info.infos[0] & 0x3)) { - case EXTCHNL_OFFSET_UPPER: + case SCA: pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; break; - case EXTCHNL_OFFSET_LOWER: + case SCB: pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; break; @@ -2211,7 +2227,7 @@ int check_ielen(u8 *start, uint len) return _TRUE; } -int validate_beacon_len(u8 *pframe, u32 len) +int validate_bcn_and_probe_rsp_len(u8 *pframe, u32 len) { u8 ie_offset = _BEACON_IE_OFFSET_ + sizeof(struct rtw_ieee80211_hdr_3addr); @@ -2242,6 +2258,7 @@ u8 support_rate_ranges[] = { IEEE80211_OFDM_RATE_36MB, IEEE80211_OFDM_RATE_48MB, IEEE80211_OFDM_RATE_54MB, + IEEE80211_BSS_MEMBERSHIP_SELECTOR_SAE_H2E_ONLY, }; inline bool match_ranges(u16 EID, u32 value) @@ -2320,7 +2337,7 @@ void rtw_absorb_ssid_ifneed(_adapter *padapter, WLAN_BSSID_EX *bssid, u8 *pframe u8 ie_offset, *p=NULL, *next_ie=NULL, *mac = get_addr2_ptr(pframe); sint ssid_len_ori; u32 remain_len = 0; - u8 backupIE[MAX_IE_SZ]; + u8 *backupIE = NULL; u16 subtype = get_frame_sub_type(pframe); _irqL irqL; @@ -2351,8 +2368,11 @@ void rtw_absorb_ssid_ifneed(_adapter *padapter, WLAN_BSSID_EX *bssid, u8 *pframe snetwork = &(scanned->network); /* scan queue records as Hidden SSID && Input frame is NOT Hidden SSID */ if (hidden_ssid_ap(snetwork) && !hidden_ssid_ap(bssid)) { + backupIE = (u8 *)rtw_zmalloc(MAX_IE_SZ); p = rtw_get_ie(snetwork->IEs+ie_offset, _SSID_IE_, &ssid_len_ori, snetwork->IELength-ie_offset); - if (!p) { + if ((!p) || (!backupIE)) { + if (backupIE) + rtw_mfree(backupIE, MAX_IE_SZ); _exit_critical_bh(&padapter->mlmepriv.scanned_queue.lock, &irqL); return; } @@ -2367,6 +2387,7 @@ void rtw_absorb_ssid_ifneed(_adapter *padapter, WLAN_BSSID_EX *bssid, u8 *pframe _rtw_memcpy(p+2, bssid->Ssid.Ssid, bssid->Ssid.SsidLength); _rtw_memcpy(p+2+bssid->Ssid.SsidLength, backupIE, remain_len); snetwork->IELength += bssid->Ssid.SsidLength; + rtw_mfree(backupIE, MAX_IE_SZ); } _exit_critical_bh(&padapter->mlmepriv.scanned_queue.lock, &irqL); } @@ -2408,14 +2429,19 @@ void rtw_debug_rx_bcn(_adapter *adapter, u8 *pframe, u32 packet_len) * WLAN_EID_CHANNEL_SWITCH * WLAN_EID_PWR_CONSTRAINT */ -int _rtw_get_bcn_keys(u8 *cap_info, u32 buf_len, u8 def_ch, ADAPTER *adapter +static int _rtw_get_bcn_keys(u8 *cap_info, u32 buf_len, u8 def_ch + , ADAPTER *adapter, u8 mbssid_idx , struct beacon_keys *recv_beacon) { int left; u16 capability; unsigned char *pos; - struct rtw_ieee802_11_elems elems; + struct rtw_ieee802_11_elems *elems = NULL; + int ret = _FALSE; + elems = (struct rtw_ieee802_11_elems *)rtw_zmalloc(sizeof(struct rtw_ieee802_11_elems)); + if (!elems) + return ret; _rtw_memset(recv_beacon, 0, sizeof(*recv_beacon)); /* checking capabilities */ @@ -2424,43 +2450,57 @@ int _rtw_get_bcn_keys(u8 *cap_info, u32 buf_len, u8 def_ch, ADAPTER *adapter /* checking IEs */ left = buf_len - 2; pos = cap_info + 2; - if (rtw_ieee802_11_parse_elems(pos, left, &elems, 1) == ParseFailed) - return _FALSE; + if (rtw_ieee802_11_parse_elems(pos, left, elems, 1) == ParseFailed) + goto exit; - if (elems.ht_capabilities) { - if (elems.ht_capabilities_len != 26) - return _FALSE; + if (elems->ht_capabilities) { + if (elems->ht_capabilities_len != 26) + goto exit; } - if (elems.ht_operation) { - if (elems.ht_operation_len != 22) - return _FALSE; + if (elems->ht_operation) { + if (elems->ht_operation_len != 22) + goto exit; } - if (elems.vht_capabilities) { - if (elems.vht_capabilities_len != 12) - return _FALSE; + if (elems->vht_capabilities) { + if (elems->vht_capabilities_len != 12) + goto exit; } - if (elems.vht_operation) { - if (elems.vht_operation_len != 5) - return _FALSE; + if (elems->vht_operation) { + if (elems->vht_operation_len != 5) + goto exit; } - if (rtw_ies_get_supported_rate(pos, left, recv_beacon->rate_set, &recv_beacon->rate_num) == _FAIL) - return _FALSE; +#ifdef CONFIG_STA_MULTIPLE_BSSID + if (elems->mbssid && mbssid_idx) { + if (rtw_ieee802_11_override_elems_by_mbssid(elems->mbssid - 2, elems->mbssid_len + 2, mbssid_idx, elems, 1) == ParseFailed) + return _FALSE; + if (elems->non_tx_bssid_cap) { + if (elems->non_tx_bssid_cap_len != 2) + return _FALSE; + capability = le16_to_cpu(*(unsigned short *)(elems->non_tx_bssid_cap)); + } + } +#endif - if (cckratesonly_included(recv_beacon->rate_set, recv_beacon->rate_num) == _TRUE) - recv_beacon->proto_cap |= PROTO_CAP_11B; - else if (cckrates_included(recv_beacon->rate_set, recv_beacon->rate_num) == _TRUE) - recv_beacon->proto_cap |= PROTO_CAP_11B | PROTO_CAP_11G; - else - recv_beacon->proto_cap |= PROTO_CAP_11G; + if (rtw_elems_get_supported_rate(elems, recv_beacon->rate_set, &recv_beacon->rate_num) == _FAIL) + goto exit; - if (elems.ht_capabilities && elems.ht_operation) + if (recv_beacon->rate_num) { + if (cckratesonly_included(recv_beacon->rate_set, recv_beacon->rate_num) == _TRUE) + recv_beacon->proto_cap |= PROTO_CAP_11B; + else if (cckrates_included(recv_beacon->rate_set, recv_beacon->rate_num) == _TRUE) + recv_beacon->proto_cap |= PROTO_CAP_11B | PROTO_CAP_11G; + else + recv_beacon->proto_cap |= PROTO_CAP_11G; + } + + if (elems->ht_capabilities && elems->ht_operation) recv_beacon->proto_cap |= PROTO_CAP_11N; - if (elems.vht_capabilities && elems.vht_operation) + if (elems->vht_capabilities && elems->vht_operation) recv_beacon->proto_cap |= PROTO_CAP_11AC; /* check bw and channel offset */ @@ -2469,25 +2509,25 @@ int _rtw_get_bcn_keys(u8 *cap_info, u32 buf_len, u8 def_ch, ADAPTER *adapter recv_beacon->ch = def_ch; /* checking SSID */ - if (elems.ssid) { - if (elems.ssid_len > sizeof(recv_beacon->ssid)) - return _FALSE; + if (elems->ssid) { + if (elems->ssid_len > sizeof(recv_beacon->ssid)) + goto exit; - _rtw_memcpy(recv_beacon->ssid, elems.ssid, elems.ssid_len); - recv_beacon->ssid_len = elems.ssid_len; + _rtw_memcpy(recv_beacon->ssid, elems->ssid, elems->ssid_len); + recv_beacon->ssid_len = elems->ssid_len; } /* checking RSN first */ - if (elems.rsn_ie && elems.rsn_ie_len) { + if (elems->rsn_ie && elems->rsn_ie_len) { recv_beacon->encryp_protocol = ENCRYP_PROTOCOL_WPA2; - rtw_parse_wpa2_ie(elems.rsn_ie - 2, elems.rsn_ie_len + 2, + rtw_parse_wpa2_ie(elems->rsn_ie - 2, elems->rsn_ie_len + 2, &recv_beacon->group_cipher, &recv_beacon->pairwise_cipher, - NULL, &recv_beacon->akm, NULL, NULL); + &recv_beacon->gmcs, &recv_beacon->akm, NULL, NULL); } /* checking WPA secon */ - else if (elems.wpa_ie && elems.wpa_ie_len) { + else if (elems->wpa_ie && elems->wpa_ie_len) { recv_beacon->encryp_protocol = ENCRYP_PROTOCOL_WPA; - rtw_parse_wpa_ie(elems.wpa_ie - 2, elems.wpa_ie_len + 2, + rtw_parse_wpa_ie(elems->wpa_ie - 2, elems->wpa_ie_len + 2, &recv_beacon->group_cipher, &recv_beacon->pairwise_cipher, &recv_beacon->akm); } else if (capability & BIT(4)) @@ -2496,25 +2536,28 @@ int _rtw_get_bcn_keys(u8 *cap_info, u32 buf_len, u8 def_ch, ADAPTER *adapter if (adapter) { struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; - if (elems.tim && elems.tim_len) { + if (elems->tim && elems->tim_len) { #ifdef DBG_RX_BCN - _rtw_memcpy(pmlmeext->tim, elems.tim, 4); + _rtw_memcpy(pmlmeext->tim, elems->tim, 4); #endif - pmlmeext->dtim = elems.tim[1]; + pmlmeext->dtim = elems->tim[1]; } /* checking RTW TBTX */ #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (elems.tbtx_cap && elems.tbtx_cap_len) { + if (elems->tbtx_cap && elems->tbtx_cap_len) { struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - if (rtw_is_tbtx_capabilty(elems.tbtx_cap, elems.tbtx_cap_len)) + if (rtw_is_tbtx_capabilty(elems->tbtx_cap, elems->tbtx_cap_len)) RTW_DBG("AP support TBTX\n"); } #endif } - - return _TRUE; + ret = _TRUE; +exit: + if (elems) + rtw_mfree(elems, sizeof(struct rtw_ieee802_11_elems)); + return ret; } int rtw_get_bcn_keys(_adapter *adapter, u8 *whdr, u32 flen, struct beacon_keys *bcn_keys) @@ -2523,6 +2566,7 @@ int rtw_get_bcn_keys(_adapter *adapter, u8 *whdr, u32 flen, struct beacon_keys * whdr + WLAN_HDR_A3_LEN + 10 , flen - WLAN_HDR_A3_LEN - 10 , adapter->mlmeextpriv.cur_channel, adapter + , BSS_EX_MBSSID_IDX(&adapter->mlmeextpriv.mlmext_info.network) , bcn_keys); } @@ -2532,6 +2576,7 @@ int rtw_get_bcn_keys_from_bss(WLAN_BSSID_EX *bss, struct beacon_keys *bcn_keys) bss->IEs + 10 , bss->IELength - 10 , bss->Configuration.DSConfig, NULL + , 0 , bcn_keys); } @@ -2541,6 +2586,22 @@ int rtw_update_bcn_keys_of_network(struct wlan_network *network) return network->bcn_keys_valid; } +#define CIPHER_STR(c, type) c & WPA_CIPHER_##type ? "["#type"]" : "" +#define CIPHER_FMT "%s%s%s%s%s%s%s%s%s%s%s%s" +#define CIPHER_ARG(c) CIPHER_STR(c, NONE), \ + CIPHER_STR(c, WEP40), \ + CIPHER_STR(c, WEP104), \ + CIPHER_STR(c, TKIP), \ + CIPHER_STR(c, CCMP), \ + CIPHER_STR(c, GCMP), \ + CIPHER_STR(c, GCMP_256), \ + CIPHER_STR(c, CCMP_256), \ + CIPHER_STR(c, BIP_CMAC_128), \ + CIPHER_STR(c, BIP_GMAC_128), \ + CIPHER_STR(c, BIP_GMAC_256), \ + CIPHER_STR(c, BIP_CMAC_256) +#define AKM_STR(akm, type) akm & WLAN_AKM_TYPE_##type ? "["#type"]" : "" + void rtw_dump_bcn_keys(void *sel, struct beacon_keys *recv_beacon) { #if defined(CONFIG_RTW_DEBUG) || defined(CONFIG_PROC_DEBUG) @@ -2555,9 +2616,33 @@ void rtw_dump_bcn_keys(void *sel, struct beacon_keys *recv_beacon) RTW_PRINT_SEL(sel, "proto_cap = 0x%02x\n", recv_beacon->proto_cap); RTW_MAP_DUMP_SEL(sel, "rate_set = " , recv_beacon->rate_set, recv_beacon->rate_num); - RTW_PRINT_SEL(sel, "sec = %d, group = 0x%x, pair = 0x%x, akm = 0x%08x\n" - , recv_beacon->encryp_protocol, recv_beacon->group_cipher - , recv_beacon->pairwise_cipher, recv_beacon->akm); + RTW_PRINT_SEL(sel, "sec = %d\n", recv_beacon->encryp_protocol); + RTW_PRINT_SEL(sel, "GTK = 0x%x " CIPHER_FMT "\n" + , recv_beacon->group_cipher + , CIPHER_ARG(recv_beacon->group_cipher)); + RTW_PRINT_SEL(sel, "PTK = 0x%x " CIPHER_FMT "\n" + , recv_beacon->pairwise_cipher + , CIPHER_ARG(recv_beacon->pairwise_cipher)); + RTW_PRINT_SEL(sel, "IGTK = 0x%x " CIPHER_FMT "\n" + , recv_beacon->gmcs + , CIPHER_ARG(recv_beacon->gmcs)); + RTW_PRINT_SEL(sel, "AKM = 0x%08x %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n" + , recv_beacon->akm + , AKM_STR(recv_beacon->akm, 8021X) + , AKM_STR(recv_beacon->akm, PSK) + , AKM_STR(recv_beacon->akm, FT_8021X) + , AKM_STR(recv_beacon->akm, FT_PSK) + , AKM_STR(recv_beacon->akm, 8021X_SHA256) + , AKM_STR(recv_beacon->akm, PSK_SHA256) + , AKM_STR(recv_beacon->akm, TDLS) + , AKM_STR(recv_beacon->akm, SAE) + , AKM_STR(recv_beacon->akm, FT_OVER_SAE) + , AKM_STR(recv_beacon->akm, 8021X_SUITE_B) + , AKM_STR(recv_beacon->akm, 8021X_SUITE_B_192) + , AKM_STR(recv_beacon->akm, FILS_SHA256) + , AKM_STR(recv_beacon->akm, FILS_SHA384) + , AKM_STR(recv_beacon->akm, FT_FILS_SHA256) + , AKM_STR(recv_beacon->akm, FT_FILS_SHA384)); #endif } @@ -2606,11 +2691,20 @@ exit: return ret; } +static void rtw_csa_update_cur_network(_adapter *adapter, u8 *pframe, u32 packet_len) +{ + WLAN_BSSID_EX *cur_network = &(adapter->mlmepriv.cur_network.network); + + cur_network->IELength = packet_len - sizeof(struct rtw_ieee80211_hdr_3addr); + _rtw_memcpy(cur_network->IEs, (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)), + cur_network->IELength); + RTW_INFO(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(adapter)); +} + int rtw_check_bcn_info(ADAPTER *Adapter, u8 *pframe, u32 packet_len) { u8 *pbssid = GetAddr3Ptr(pframe); struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; - struct wlan_network *cur_network = &(Adapter->mlmepriv.cur_network); struct beacon_keys *cur_beacon = &pmlmepriv->cur_beacon_keys; struct beacon_keys recv_beacon; int ret = 0; @@ -2638,7 +2732,6 @@ int rtw_check_bcn_info(ADAPTER *Adapter, u8 *pframe, u32 packet_len) if (check_fwstate(pmlmepriv, WIFI_CSA_UPDATE_BEACON)) { u8 c_ch, c_bw, c_offset; bool bw_offset_changed = _FALSE; - struct sta_info *psta = NULL; c_ch = pmlmeext->cur_channel; c_bw = pmlmeext->cur_bwmode; @@ -2662,6 +2755,7 @@ int rtw_check_bcn_info(ADAPTER *Adapter, u8 *pframe, u32 packet_len) pmlmepriv->bcn_cnts_after_csa = 0; } + rtw_csa_update_cur_network(Adapter, pframe, packet_len); _rtw_memcpy(cur_beacon, &recv_beacon, sizeof(recv_beacon)); RTW_INFO("csa : recv_beacon ch/bw/offset = %u,%u,%u\n", recv_beacon.ch, recv_beacon.bw, recv_beacon.offset); @@ -2670,6 +2764,9 @@ int rtw_check_bcn_info(ADAPTER *Adapter, u8 *pframe, u32 packet_len) /* rtw_dump_bcn_keys(RTW_DBGDUMP, &recv_beacon); */ clr_fwstate(pmlmepriv, WIFI_CSA_UPDATE_BEACON); + /* the radar detect flow may need this */ + if (check_fwstate(pmlmepriv, WIFI_CSA_SKIP_CHECK_BEACON)) + clr_fwstate(pmlmepriv, WIFI_CSA_SKIP_CHECK_BEACON); _cancel_timer_async(&pmlmeext->csa_timer); /* Current bw/offset is different from AP */ @@ -2697,8 +2794,8 @@ int rtw_check_bcn_info(ADAPTER *Adapter, u8 *pframe, u32 packet_len) } else #endif { - #ifdef CONFIG_DFS_MASTER - rtw_dfs_rd_en_decision(dvobj_get_primary_adapter(dvobj), MLME_OPCH_SWITCH, 0); + #if CONFIG_DFS && CONFIG_IEEE80211_BAND_5GHZ + rtw_dfs_rd_en_dec_on_mlme_act(dvobj_get_primary_adapter(dvobj), NULL, MLME_OPCH_SWITCH, 0); #endif rtw_set_chbw_cmd(Adapter, c_ch, c_bw, c_offset, 0); } @@ -2707,10 +2804,17 @@ int rtw_check_bcn_info(ADAPTER *Adapter, u8 *pframe, u32 packet_len) RTW_INFO("csa : our bw/offset is same as AP\n"); } +#if defined(CONFIG_IOCTL_CFG80211) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)) + { + u8 ht_option = 0; +#ifdef CONFIG_80211N_HT + ht_option = pmlmepriv->htpriv.ht_option; +#endif + rtw_cfg80211_ch_switch_notify(Adapter, c_ch, c_bw, c_offset, ht_option, 0); + } +#endif /* defined(CONFIG_IOCTL_CFG80211) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)) */ rtw_iqk_cmd(Adapter, 0); - psta = rtw_get_stainfo(&Adapter->stapriv, get_bssid(&Adapter->mlmepriv)); - if (psta) - rtw_dm_ra_mask_wk_cmd(Adapter, (u8 *)psta); + rtw_csa_sta_update_cap_cmd(Adapter); RTW_INFO("csa : update beacon done, WIFI_CSA_UPDATE_BEACON is clear\n"); } @@ -2743,6 +2847,11 @@ int rtw_check_bcn_info(ADAPTER *Adapter, u8 *pframe, u32 packet_len) if (_rtw_memcmp(&recv_beacon, cur_beacon, sizeof(recv_beacon)) == _FALSE) #endif { + if (check_fwstate(pmlmepriv, WIFI_CSA_SKIP_CHECK_BEACON)) { + RTW_INFO(FUNC_ADPT_FMT" skip new beacon key before switching channel\n", + FUNC_ADPT_ARG(Adapter)); + goto exit_success; + } RTW_INFO(FUNC_ADPT_FMT" new beacon occur!!\n", FUNC_ADPT_ARG(Adapter)); RTW_INFO(FUNC_ADPT_FMT" cur beacon key:\n", FUNC_ADPT_ARG(Adapter)); rtw_dump_bcn_keys(RTW_DBGDUMP, cur_beacon); @@ -2933,12 +3042,15 @@ void process_csa_ie(_adapter *padapter, u8 *ies, uint ies_len) #ifdef CONFIG_AP_MODE if(ifbmp_m) { rfctl->ap_csa_en = STA_RX_CSA; + rfctl->ap_csa_wait_update_bcn = 0; rfctl->ap_csa_ch = ch; rfctl->ap_csa_switch_cnt = csa_switch_cnt; rtw_set_ap_csa_cmd(pri_adapter); } #endif + set_fwstate(&pri_adapter->mlmepriv, WIFI_CSA_SKIP_CHECK_BEACON); + countdown = pmlmeinfo->network.Configuration.BeaconPeriod * (csa_switch_cnt+1); /* ms */ RTW_INFO("csa: set countdown timer to %d ms\n", countdown); _set_timer(&pri_adapter->mlmeextpriv.csa_timer, countdown); @@ -2947,76 +3059,6 @@ void process_csa_ie(_adapter *padapter, u8 *ies, uint ies_len) } #endif /* CONFIG_DFS */ -#ifdef CONFIG_80211D -bool rtw_iface_accept_country_ie(_adapter *adapter) -{ - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - - if (!(BIT(adapter->iface_id) & rfctl->country_ie_slave_en_ifbmp)) - return 0; - if (!MLME_IS_STA(adapter)) - return 0; - if (!MLME_IS_GC(adapter)) { - if (!(rfctl->country_ie_slave_en_role & COUNTRY_IE_SLAVE_EN_ROLE_STA)) - return 0; - } else { - if (!(rfctl->country_ie_slave_en_role & COUNTRY_IE_SLAVE_EN_ROLE_GC)) - return 0; - } - return 1; -} - -void process_country_ie(_adapter *adapter, u8 *ies, uint ies_len) -{ - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - - if (rfctl->regd_src == REGD_SRC_RTK_PRIV - && !rtw_rfctl_is_disable_sw_channel_plan(rfctl_to_dvobj(rfctl)) - && !rfctl->csa_ch /* don't process country ie when under CSA processing */ - ) { - struct mlme_priv *mlme = &adapter->mlmepriv; - const u8 *ie = NULL; - sint ie_len = 0; - - if (rtw_iface_accept_country_ie(adapter)) { - ie = rtw_get_ie(ies, WLAN_EID_COUNTRY, &ie_len, ies_len); - if (ie) { - if (ie_len < 6) { - ie = NULL; - ie_len = 0; - } else - ie_len += 2; - } - } - - if (!mlme->recv_country_ie && !ie) - return; - if (mlme->recv_country_ie_len == ie_len - && _rtw_memcmp(mlme->recv_country_ie, ie, ie_len) == _TRUE) - return; - - if (!ie) { - rtw_buf_free(&mlme->recv_country_ie, &mlme->recv_country_ie_len); - rtw_apply_recv_country_ie_cmd(adapter, 0, 0, 0, NULL); - } else { - char ori_alpha2[2] = {0, 0}; - - if (mlme->recv_country_ie) - _rtw_memcpy(ori_alpha2, mlme->recv_country_ie + 2, 2); - - rtw_buf_update(&mlme->recv_country_ie, &mlme->recv_country_ie_len, ie, ie_len); - /* for now only country code is used */ - if (_rtw_memcmp(ori_alpha2, mlme->recv_country_ie + 2, 2) == _TRUE) - return; - RTW_INFO(FUNC_ADPT_FMT" country_ie alpha2 changed\n", FUNC_ADPT_ARG(adapter)); - rtw_apply_recv_country_ie_cmd(adapter, 0 - , mlme->cur_beacon_keys.ch > 14 ? BAND_ON_5G : BAND_ON_2_4G - , mlme->cur_beacon_keys.ch, mlme->recv_country_ie); - } - } -} -#endif /* CONFIG_80211D */ - enum eap_type parsing_eapol_packet(_adapter *padapter, u8 *key_payload, struct sta_info *psta, u8 trx_type) { struct security_priv *psecuritypriv = &(padapter->securitypriv); @@ -3535,7 +3577,9 @@ void update_capinfo(PADAPTER Adapter, u16 updateCap) struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); BOOLEAN ShortPreamble; - +#ifdef CONFIG_NARROWBAND_SUPPORTING + struct registry_priv *regsty = adapter_to_regsty(Adapter); +#endif /* CONFIG_NARROWBAND_SUPPORTING */ /* Check preamble mode, 2005.01.06, by rcnjko. */ /* Mark to update preamble value forever, 2008.03.18 by lanhsin */ /* if( pMgntInfo->RegPreambleMode == PREAMBLE_AUTO ) */ @@ -3578,6 +3622,12 @@ void update_capinfo(PADAPTER Adapter, u16 updateCap) pmlmeinfo->slotTime = NON_SHORT_SLOT_TIME; } } +#ifdef CONFIG_NARROWBAND_SUPPORTING + if (regsty->rtw_nb_config == RTW_NB_CONFIG_WIDTH_10) + pmlmeinfo->slotTime = SLOT_TIME_10M; + else if (regsty->rtw_nb_config == RTW_NB_CONFIG_WIDTH_5) + pmlmeinfo->slotTime = SLOT_TIME_5M; +#endif /* CONFIG_NARROWBAND_SUPPORTING */ rtw_hal_set_hwreg(Adapter, HW_VAR_SLOT_TIME, &pmlmeinfo->slotTime); @@ -3686,10 +3736,11 @@ void update_sta_basic_rate(struct sta_info *psta, u8 wireless_mode) } } -int rtw_ies_get_supported_rate(u8 *ies, uint ies_len, u8 *rate_set, u8 *rate_num) +static int _rtw_ies_get_supported_rate(u8 *sup_r_ie, sint sup_r_ie_len + , u8 *ext_sup_r_ie, sint ext_sup_r_ie_len + , u8 *rate_set, u8 *rate_num) { - u8 *ie, *p; - unsigned int ie_len; + u8 *p; int i, j; struct support_rate_handler support_rate_tbl[] = { @@ -3706,19 +3757,15 @@ int rtw_ies_get_supported_rate(u8 *ies, uint ies_len, u8 *rate_set, u8 *rate_num {IEEE80211_OFDM_RATE_48MB, _FALSE, _FALSE}, {IEEE80211_OFDM_RATE_54MB, _FALSE, _FALSE}, }; - - if (!rate_set || !rate_num) - return _FALSE; *rate_num = 0; - ie = rtw_get_ie(ies, _SUPPORTEDRATES_IE_, &ie_len, ies_len); - if (ie == NULL) + if (sup_r_ie == NULL) goto ext_rate; /* get valid supported rates */ for (i = 0; i < 12; i++) { - p = ie + 2; - for (j = 0; j < ie_len; j++) { + p = sup_r_ie + 2; + for (j = 0; j < sup_r_ie_len; j++) { if ((*p & ~BIT(7)) == support_rate_tbl[i].rate){ support_rate_tbl[i].existence = _TRUE; if ((*p) & BIT(7)) @@ -3729,12 +3776,11 @@ int rtw_ies_get_supported_rate(u8 *ies, uint ies_len, u8 *rate_set, u8 *rate_num } ext_rate: - ie = rtw_get_ie(ies, _EXT_SUPPORTEDRATES_IE_, &ie_len, ies_len); - if (ie) { + if (ext_sup_r_ie) { /* get valid extended supported rates */ for (i = 0; i < 12; i++) { - p = ie + 2; - for (j = 0; j < ie_len; j++) { + p = ext_sup_r_ie + 2; + for (j = 0; j < ext_sup_r_ie_len; j++) { if ((*p & ~BIT(7)) == support_rate_tbl[i].rate){ support_rate_tbl[i].existence = _TRUE; if ((*p) & BIT(7)) @@ -3755,19 +3801,52 @@ ext_rate: } } - if (*rate_num == 0) - return _FAIL; - if (0) { - int i; + int k; - for (i = 0; i < *rate_num; i++) - RTW_INFO("rate:0x%02x\n", *(rate_set + i)); + for (k = 0; k < *rate_num; k++) + RTW_INFO("rate:0x%02x\n", *(rate_set + k)); } return _SUCCESS; } +int rtw_ies_get_supported_rate(u8 *ies, uint ies_len, u8 *rate_set, u8 *rate_num) +{ + u8 *sup_r_ie; + sint sup_r_ie_len; + u8 *ext_sup_r_ie; + sint ext_sup_r_ie_len; + + if (!rate_set || !rate_num) + return _FALSE; + + sup_r_ie = rtw_get_ie(ies, _SUPPORTEDRATES_IE_, &sup_r_ie_len, ies_len); + ext_sup_r_ie = rtw_get_ie(ies, _EXT_SUPPORTEDRATES_IE_, &ext_sup_r_ie_len, ies_len); + + return _rtw_ies_get_supported_rate(sup_r_ie, sup_r_ie_len + , ext_sup_r_ie, ext_sup_r_ie_len, rate_set, rate_num); +} + +int rtw_elems_get_supported_rate(struct rtw_ieee802_11_elems *elems, u8 *rate_set, u8 *rate_num) +{ + u8 *sup_r_ie; + sint sup_r_ie_len; + u8 *ext_sup_r_ie; + sint ext_sup_r_ie_len; + + if (!rate_set || !rate_num) + return _FALSE; + + sup_r_ie = elems->supp_rates ? elems->supp_rates - 2 : NULL; + sup_r_ie_len = elems->supp_rates_len; + ext_sup_r_ie = elems->ext_supp_rates ? elems->ext_supp_rates - 2 : NULL; + ext_sup_r_ie_len = elems->ext_supp_rates_len; + + return _rtw_ies_get_supported_rate(sup_r_ie, sup_r_ie_len + , ext_sup_r_ie, ext_sup_r_ie_len, rate_set, rate_num); +} + void process_addba_req(_adapter *padapter, u8 *paddba_req, u8 *addr) { struct sta_info *psta; @@ -4718,6 +4797,10 @@ void rtw_wow_pattern_sw_reset(_adapter *adapter) else pwrctrlpriv->wowlan_pattern_idx = 0; +#ifdef CONFIG_GOOGLE_CAST_WAKEUP + pwrctrlpriv->wowlan_pattern_idx += GOOGLE_CAST_PATTERN_NUM; +#endif + for (i = 0 ; i < MAX_WKFM_CAM_NUM; i++) { _rtw_memset(pwrctrlpriv->patterns[i].content, '\0', sizeof(pwrctrlpriv->patterns[i].content)); _rtw_memset(pwrctrlpriv->patterns[i].mask, '\0', sizeof(pwrctrlpriv->patterns[i].mask)); @@ -4725,6 +4808,128 @@ void rtw_wow_pattern_sw_reset(_adapter *adapter) } } +#ifdef CONFIG_GOOGLE_CAST_WAKEUP +#define is_zero_ip_addr(ip) \ + ((ip[0] == 0x00) && (ip[1] == 0x00) && \ + (ip[2] == 0x00) && (ip[3] == 0x00)) +#define rtw_user_wow_patten_elem(len, array, args...) \ + {.conts_len = len, .pconts = (u8[len]){array, ##args}} + +void rtw_set_google_cast_mdns_wow_pattern(_adapter *padapter, u8 index) +{ + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); + u8 eth_dest_mac[ETH_ALEN] = {0x01, 0x00, 0x5e, 0x00, 0x00, 0xfb}; + u8 eth_src_mac[ETH_ALEN] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; + u8 eth_protocol[2] = {0x08, 0x00}; + u8 ip_ver = 0x45; + u8 ip_protocol = 0x11; + u8 src_ip[RTW_IP_ADDR_LEN] = {0x0, 0x0, 0x0, 0x0}; + u8 dest_ip[RTW_IP_ADDR_LEN] = {0x0, 0x0, 0x0, 0x0}; + u8 src_port[2] = {0x00, 0x00}; + u8 dest_port[2] = {0x14, 0xe9}; + u8 *ptr; + int i = 0; + struct pattern_cont_t { + u8 conts_len; + u8 *pconts; + }; + struct pattern_cont_t conts[] = { + rtw_user_wow_patten_elem(0x51, /*_%9E5E7C8F47989526C9BCD95D24084F6F0B27C5ED._sub._googlecast._tcp.local*/ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x5F, 0x25, 0x39, 0x45, 0x35, + 0x45, 0x37, 0x43, 0x38, 0x46, 0x34, 0x37, 0x39, 0x38, 0x39, 0x35, 0x32, 0x36, 0x43, 0x39, 0x42, + 0x43, 0x44, 0x39, 0x35, 0x44, 0x32, 0x34, 0x30, 0x38, 0x34, 0x46, 0x36, 0x46, 0x30, 0x42, 0x32, + 0x37, 0x43, 0x35, 0x45, 0x44, 0x04, 0x5F, 0x73, 0x75, 0x62, 0x0B, 0x5F, 0x67, 0x6F, 0x6F, 0x67, + 0x6C, 0x65, 0x63, 0x61, 0x73, 0x74, 0x04, 0x5F, 0x74, 0x63, 0x70, 0x05, 0x6C, 0x6F, 0x63, 0x61, + 0x6C), + rtw_user_wow_patten_elem(0x21, /*_googlecast._tcp.local*/ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x5F, 0x67, 0x6F, 0x6F, 0x67, + 0x6C, 0x65, 0x63, 0x61, 0x73, 0x74, 0x04, 0x5F, 0x74, 0x63, 0x70, 0x05, 0x6C, 0x6F, 0x63, 0x61, + 0x6C), + rtw_user_wow_patten_elem(0x30, /*_233637DE._sub._googlecast._tcp.local*/ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x5F, 0x32, 0x33, 0x33, 0x36, + 0x33, 0x37, 0x44, 0x45, 0x04, 0x5F, 0x73, 0x75, 0x62, 0x0B, 0x5F, 0x67, 0x6F, 0x6F, 0x67, 0x6C, + 0x65, 0x63, 0x61, 0x73, 0x74, 0x04, 0x5F, 0x74, 0x63, 0x70, 0x05, 0x6C, 0x6F, 0x63, 0x61, 0x6C), + }; + struct pattern_cont_t masks[] = { + rtw_user_wow_patten_elem(MAX_WKFM_SIZE, + 0x3f, 0x70, 0x80, 0x00, 0x30, 0x30, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f), + rtw_user_wow_patten_elem(10, + 0x3f, 0x70, 0x80, 0x00, 0x30, 0x30, 0xc0, 0xff, 0xff, 0x1f), + rtw_user_wow_patten_elem(12, + 0x3f, 0x70, 0x80, 0x00, 0x30, 0x30, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f), + }; + + if (index >= MAX_WKFM_CAM_NUM) + return; + + for (i = 0 ; i < GOOGLE_CAST_PATTERN_NUM ; i++){ + if (conts[i].conts_len >= MAX_WKFM_PATTERN_SIZE) + continue; + + ptr = pwrpriv->patterns[index].content; + if (!is_zero_mac_addr(eth_dest_mac)) + _rtw_memcpy(ptr, eth_dest_mac, ETH_ALEN); + ptr += ETH_ALEN; + pwrpriv->patterns[index].len += ETH_ALEN; + + if (!is_zero_mac_addr(eth_src_mac)) + _rtw_memcpy(ptr, eth_src_mac, ETH_ALEN); + ptr += ETH_ALEN; + pwrpriv->patterns[index].len += ETH_ALEN; + + _rtw_memcpy(ptr, eth_protocol, 2); + ptr += 2; + pwrpriv->patterns[index].len += 2; + + *ptr = ip_ver; + ptr += 1; + pwrpriv->patterns[index].len += 1; + + /*padding*/ + ptr += 8; + pwrpriv->patterns[index].len += 8; + + *ptr = ip_protocol; + ptr += 1; + pwrpriv->patterns[index].len += 1; + + /*padding*/ + ptr += 2; + pwrpriv->patterns[index].len += 2; + + if (!is_zero_ip_addr(src_ip)) + _rtw_memcpy(ptr, src_ip, RTW_IP_ADDR_LEN); + ptr += RTW_IP_ADDR_LEN; + pwrpriv->patterns[index].len += RTW_IP_ADDR_LEN; + + + if (!is_zero_ip_addr(dest_ip)) + _rtw_memcpy(ptr, dest_ip, RTW_IP_ADDR_LEN); + ptr += RTW_IP_ADDR_LEN; + pwrpriv->patterns[index].len += RTW_IP_ADDR_LEN; + + _rtw_memcpy(ptr, src_port, 2); + ptr += 2; + pwrpriv->patterns[index].len += 2; + + _rtw_memcpy(ptr, dest_port, 2); + ptr += 2; + pwrpriv->patterns[index].len += 2; + + /*padding*/ + ptr += 6; + pwrpriv->patterns[index].len += 6; + + _rtw_memcpy(ptr, conts[i].pconts, conts[i].conts_len); + pwrpriv->patterns[index].len += conts[i].conts_len; + + _rtw_memcpy(pwrpriv->patterns[index].mask, masks[i].pconts, masks[i].conts_len); + + index--; + } +} +#endif + u8 rtw_set_default_pattern(_adapter *adapter) { struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(adapter); @@ -4743,10 +4948,10 @@ u8 rtw_set_default_pattern(_adapter *adapter) u8 *target = NULL; - if (pwrpriv->default_patterns_en == _FALSE) + if (pwrpriv->wowlan_pattern_idx == 0) return 0; - for (index = 0 ; index < DEFAULT_PATTERN_NUM ; index++) { + for (index = 0 ; index < pwrpriv->wowlan_pattern_idx ; index++) { _rtw_memset(pwrpriv->patterns[index].content, 0, sizeof(pwrpriv->patterns[index].content)); _rtw_memset(pwrpriv->patterns[index].mask, 0, @@ -4754,6 +4959,11 @@ u8 rtw_set_default_pattern(_adapter *adapter) pwrpriv->patterns[index].len = 0; } +#ifdef CONFIG_GOOGLE_CAST_WAKEUP + if (pwrpriv->default_patterns_en == _FALSE) + goto set_google_cast_pattern; +#endif + /*TCP/ICMP unicast*/ for (index = 0 ; index < DEFAULT_PATTERN_NUM ; index++) { switch (index) { @@ -4854,6 +5064,12 @@ u8 rtw_set_default_pattern(_adapter *adapter) break; } } + +#ifdef CONFIG_GOOGLE_CAST_WAKEUP +set_google_cast_pattern: + rtw_set_google_cast_mdns_wow_pattern(adapter, pwrpriv->wowlan_pattern_idx-1); + index = pwrpriv->wowlan_pattern_idx; +#endif return index; } @@ -5200,6 +5416,131 @@ void rtw_wow_war_mdns_parms_reset(_adapter *adapter, u8 is_set_default) #endif /* defined(CONFIG_OFFLOAD_MDNS_V4) || defined(CONFIG_OFFLOAD_MDNS_V6) */ #endif /* CONFIG_WAR_OFFLOAD */ +#ifdef CONFIG_MDNS_OFFLOAD +static struct rtw_mdns_resp_entry * +_rtw_get_mdns_resp_entry(_adapter *padapter, u8 index) +{ + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + struct rtw_mdns_ofld_info *ofld_info = &pwrctl->mdns_ofld_info; + struct rtw_mdns_resp_entry *resp_entry = NULL; + + if (index < MAX_MDNS_RESP_NUM) + resp_entry = &ofld_info->resp_entry[index]; + + return resp_entry; +} + +int rtw_wow_add_mdns_resp(_adapter *padapter, u8 index, u8 *resp_content, u16 content_len) +{ + struct rtw_mdns_resp_entry *resp_entry = NULL; + + resp_entry = _rtw_get_mdns_resp_entry(padapter, index); + if (resp_entry == NULL) + return _FAIL; + + _rtw_memcpy(resp_entry->content, resp_content, content_len); + resp_entry->content_len = content_len; + + return _SUCCESS; +} + +int rtw_wow_del_mdns_resp(_adapter *padapter, u8 index) +{ + struct rtw_mdns_resp_entry *resp_entry = NULL; + + resp_entry = _rtw_get_mdns_resp_entry(padapter, index); + if (resp_entry == NULL) + return _FAIL; + + _rtw_memset(resp_entry, 0, sizeof(struct rtw_mdns_resp_entry)); + + return _SUCCESS; +} + +int rtw_wow_get_mdns_resp_ent(_adapter *padapter, u8 index, struct rtw_mdns_resp_entry **resp_entry) +{ + *resp_entry = _rtw_get_mdns_resp_entry(padapter, index); + if (*resp_entry == NULL) + return _FAIL; + + return _SUCCESS; +} + +int rtw_wow_add_mdns_match_crit(_adapter *padapter, u8 index, u16 match_type, u16 name_offset, u16 name_len) +{ + struct rtw_mdns_resp_entry *resp_entry = NULL; + struct rtw_mdns_match_criteria *match_ct = NULL; + + resp_entry = _rtw_get_mdns_resp_entry(padapter, index); + if (resp_entry == NULL) + return _FAIL; + + if (resp_entry->match_ct_num == MAX_MDNS_MATCH_CRITERIA_NUM) + return _FAIL; + + match_ct = &resp_entry->match_ct[resp_entry->match_ct_num]; + + match_ct->name_offset = name_offset; + match_ct->type = match_type; + match_ct->name_len = name_len; + + resp_entry->match_ct_num += 1; + + return _SUCCESS; +} + +int rtw_wow_del_mdns_match_crit(_adapter *padapter, u8 index) +{ + struct rtw_mdns_resp_entry *resp_entry = NULL; + struct rtw_mdns_match_criteria *match_ct = NULL; + + resp_entry = _rtw_get_mdns_resp_entry(padapter, index); + if (resp_entry == NULL) + return _FAIL; + + resp_entry->match_ct_num = 0; + _rtw_memset(resp_entry->match_ct, 0, sizeof(resp_entry->match_ct)); + + return _SUCCESS; +} + +int rtw_wow_add_mdns_passthru_name(_adapter *padapter, u8 *name, u8 name_len) +{ + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + struct rtw_mdns_ofld_info *ofld_info = &pwrctl->mdns_ofld_info; + struct rtw_mdns_passthru_list *passthru_list = &ofld_info->passthru_list; + struct rtw_mdns_passthru_name *passthru_name = NULL; + + if (passthru_list->passthru_name_num == MAX_MDNS_PASSTHRU_NAME_NUM) + return _FAIL; + + + passthru_name = &passthru_list->passthru_name[passthru_list->passthru_name_num]; + _rtw_memcpy(passthru_name->name, name, name_len); + passthru_name->name_len = name_len; + + passthru_list->passthru_name_num += 1; + + return _SUCCESS; +} + +void rtw_wow_clr_mdns_passthru_name(_adapter *padapter) +{ + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + struct rtw_mdns_ofld_info *ofld_info = &pwrctl->mdns_ofld_info; + struct rtw_mdns_passthru_list *passthru_list = &ofld_info->passthru_list; + + _rtw_memset(&ofld_info->passthru_list, 0, sizeof(ofld_info->passthru_list)); +} + +void rtw_wow_get_mdns_passthru_list(_adapter *padapter, struct rtw_mdns_passthru_list **passthru_list) +{ + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + struct rtw_mdns_ofld_info *ofld_info = &pwrctl->mdns_ofld_info; + + *passthru_list = &ofld_info->passthru_list; +} +#endif #endif /* CONFIG_WOWLAN */ inline bool _rtw_wow_chk_cap(_adapter *adapter, u8 cap) @@ -5837,7 +6178,8 @@ void rtw_dbg_rx_iperf_udp_data_chk(_adapter *padapter, u8 *pdata) { struct recv_priv *precvpriv = &(padapter->recvpriv); struct rtw_ip_dbg_cnt_statistic *st = &(precvpriv->ip_statistic); - u8 iperf_start_seq, iperf_seq_offset; + u8 iperf_seq_offset; + /*u8 iperf_start_seq;*/ u16 udp_data_len; u32 cur_iperf_seq, end_boundary = 0xffff; @@ -5849,10 +6191,10 @@ void rtw_dbg_rx_iperf_udp_data_chk(_adapter *padapter, u8 *pdata) /* RTW_INFO_DUMP("iperf data : ", pdata, 24); */ if ((st->iperf_ver & 0x7f) >= 3) { iperf_seq_offset = 16; - iperf_start_seq = 1 ; + /*iperf_start_seq = 1;*/ } else { iperf_seq_offset = 8; - iperf_start_seq = 0 ; + /*iperf_start_seq = 0;*/ } cur_iperf_seq = __be32_to_cpu(*((u32 *)(pdata + iperf_seq_offset))); @@ -5873,7 +6215,8 @@ void rtw_rx_dbg_monitor_ip_statistic(_adapter *padapter, _pkt *pkt) { struct recv_priv *precvpriv = &(padapter->recvpriv); u8 *ip_hdr, frag_flag, src_ip[4], frag_drop = _FALSE; - u16 ip_seq, frag_offset, sport = 0 , dport = 0; + u16 ip_seq, frag_offset, dport = 0; + /*u16 sport = 0;*/ u32 i; if (pkt->protocol != __constant_htons(ETH_P_IP)) @@ -5902,7 +6245,7 @@ void rtw_rx_dbg_monitor_ip_statistic(_adapter *padapter, _pkt *pkt) /* no-fragments or 1st-fragment */ if ((frag_flag & BIT(1)) || (frag_offset == 0)) { - sport = GET_UDP_SRC(ip_hdr + 20); + /*sport = GET_UDP_SRC(ip_hdr + 20);*/ dport = GET_UDP_DST(ip_hdr + 20); if (!rtw_rx_dbg_monitor_condition_chk(padapter, NULL, dport, 2)) { diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_wnm.c b/drivers/net/wireless/rtl8822cs/core/rtw_wnm.c index 293eb86b7..c1660b7df 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_wnm.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_wnm.c @@ -38,9 +38,15 @@ static u32 wnm_disassoc_wait_time = 500; /* for wifi test, need more validity time to wait scan done */ static u32 wnm_ext_validity_time = 4000; -static void rtw_wmn_btm_cache_update(_adapter *padapter, struct btm_req_hdr *phdr) +static u8 wnm_non_pref_ch_oui[] = {0x50, 0x6F, 0x9A, 0x2}; + +#define rtw_wnm_get_non_pref_ch_oui(p) ((u8 *)(p) + 2) + +static void rtw_wmn_btm_cache_update( + _adapter *padapter, struct btm_req_hdr *phdr) { - struct btm_rpt_cache *pcache = &(padapter->mlmepriv.nb_info.btm_cache); + struct btm_rpt_cache *pcache = \ + &(padapter->mlmepriv.nb_info.btm_cache); pcache->dialog_token = phdr->dialog_token; pcache->req_mode = phdr->req_mode; @@ -57,8 +63,8 @@ static void rtw_wmn_btm_cache_update(_adapter *padapter, struct btm_req_hdr *phd RTW_WNM_INFO("%s: req_mode(0x%02x), disassoc_timer(0x%04x), " "validity_interval(0x%02x %s), tsf(0x%llx), duration(0x%02x)\n", __func__, pcache->req_mode, pcache->disassoc_timer, - pcache->validity_interval, (!phdr->validity_interval)?"default":"", - pcache->term_duration.tsf, + pcache->validity_interval, (!phdr->validity_interval)? + "default":"", pcache->term_duration.tsf, pcache->term_duration.duration); if (pcache->validity_interval > 0) { @@ -83,7 +89,8 @@ static void rtw_wmn_btm_cache_update(_adapter *padapter, struct btm_req_hdr *phd __func__, pcache->validity_time, pcache->disassoc_time); } -static u8 rtw_wnm_btm_candidate_validity(struct btm_rpt_cache *pcache, u8 flag) +static u8 rtw_wnm_btm_candidate_validity( + struct btm_rpt_cache *pcache, u8 flag) { u8 is_validity =_TRUE; u32 req_validity_time = rtw_get_passing_time_ms(pcache->req_stime); @@ -117,16 +124,17 @@ u8 rtw_wmn_btm_rsp_reason_decision(_adapter *padapter, u8* req_mode) /* Accept */ reason = 0; goto under_survey; - } + } #endif if (((*req_mode) & DISASSOC_IMMINENT) == 0) { /* Reject - Unspecified reject reason */ reason = 1; goto candidate_remove; - } + } - if (precvpriv->signal_strength_data.avg_val >= pmlmepriv->roam_rssi_threshold) { + if (precvpriv->signal_strength_data.avg_val >= + pmlmepriv->roam_rssi_threshold) { reason = 1; RTW_WNM_INFO("%s : Reject - under high roam rssi(%u, %u) \n", __func__, precvpriv->signal_strength_data.avg_val, @@ -135,7 +143,7 @@ u8 rtw_wmn_btm_rsp_reason_decision(_adapter *padapter, u8* req_mode) } #ifdef CONFIG_RTW_80211R -under_survey: +under_survey: if (check_fwstate(pmlmepriv, WIFI_UNDER_SURVEY)) { RTW_WNM_INFO("%s reject due to _FW_UNDER_SURVEY\n", __func__); reason = 1; @@ -193,14 +201,20 @@ static void rtw_wnm_btm_req_hdr_parsing(u8* pframe, struct btm_req_hdr *phdr) phdr->term_duration.tsf = *((u64*)(pos + 2)); phdr->term_duration.duration= *((u16*)(pos + 10)); } else - RTW_WNM_INFO("%s : invaild BSS Termination Duration content!\n", __func__); + RTW_WNM_INFO("%s : invaild BSS Termination Duration" + " content!\n", __func__); } - RTW_WNM_INFO("WNM: req_mode(0x%02x), disassoc_timer(0x%04x), validity_interval(0x%02x)\n", - phdr->req_mode, phdr->disassoc_timer, phdr->validity_interval); - if (wnm_btm_bss_term_inc(pframe)) + RTW_WNM_INFO("WNM: req_mode(0x%02x), disassoc_timer(0x%04x)," + " validity_interval(0x%02x)\n", + phdr->req_mode, phdr->disassoc_timer, + phdr->validity_interval); + + if (wnm_btm_bss_term_inc(pframe)) { RTW_WNM_INFO("WNM: tsf(0x%llx), duration(0x%4x)\n", - phdr->term_duration.tsf, phdr->term_duration.duration); + phdr->term_duration.tsf, + phdr->term_duration.duration); + } } u8 rtw_wnm_btm_reassoc_req(_adapter *padapter) @@ -213,10 +227,10 @@ u8 rtw_wnm_btm_reassoc_req(_adapter *padapter) if (_rtw_memcmp(get_my_bssid(&(pmlmeinfo->network)), pnb->roam_target_addr, ETH_ALEN)) { - RTW_WNM_INFO("%s : bss "MAC_FMT" found in roam_target "MAC_FMT"\n", - __func__, MAC_ARG(get_my_bssid(&(pmlmeinfo->network))), + RTW_WNM_INFO("%s : bss "MAC_FMT" found in roam_target " + MAC_FMT"\n", __func__, + MAC_ARG(get_my_bssid(&(pmlmeinfo->network))), MAC_ARG(pnb->roam_target_addr)); - breassoc = _TRUE; } @@ -228,13 +242,16 @@ void rtw_wnm_roam_scan_hdl(void *ctx) _adapter *padapter = (_adapter *)ctx; struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - if (rtw_is_scan_deny(padapter)) - RTW_WNM_INFO("%s: roam scan would abort by scan_deny!\n", __func__); + if (rtw_is_scan_deny(padapter)) { + RTW_WNM_INFO("%s: roam scan would abort by scan_deny!\n", + __func__); + } #ifdef CONFIG_RTW_80211R if (rtw_ft_chk_flags(padapter, RTW_FT_BTM_ROAM)) { pmlmepriv->need_to_roam = _TRUE; - rtw_set_to_roam(padapter, padapter->registrypriv.max_roaming_times); + rtw_set_to_roam(padapter, + padapter->registrypriv.max_roaming_times); RTW_WNM_INFO("%s : enable roaming\n", __func__); } @@ -261,7 +278,8 @@ void rtw_wnm_disassoc_chk_hdl(void *ctx) RTW_WNM_INFO("%s : expired\n", __func__); if (pnb->disassoc_waiting <= 0 ) { - RTW_WNM_INFO("%s : btm roam is interrupted by disassoc\n", __func__); + RTW_WNM_INFO("%s : btm roam is interrupted by disassoc\n", + __func__); return; } @@ -277,7 +295,8 @@ u8 rtw_wnm_try_btm_roam_imnt(_adapter *padapter) u8 reason = 0, flag = 0; if (!rtw_wnm_btm_preference_cap(padapter)) { - RTW_WNM_INFO("%s : no btm candidate can be used!\n", __func__); + RTW_WNM_INFO("%s : no btm candidate can be used!\n", + __func__); return 1; } @@ -293,14 +312,16 @@ u8 rtw_wnm_try_btm_roam_imnt(_adapter *padapter) } #endif - RTW_WNM_INFO("%s : disassoc_waiting(%d)\n", __func__, pnb->disassoc_waiting); + RTW_WNM_INFO("%s : disassoc_waiting(%d)\n", + __func__, pnb->disassoc_waiting); if (pnb->disassoc_waiting) { _cancel_timer_ex(&pnb->disassoc_chk_timer); pnb->disassoc_waiting = _FALSE; rtw_wnm_roam_scan_hdl((void *)padapter); - } else if (!pnb->disassoc_waiting) - RTW_WNM_INFO("%s : waiting for btm roaming start/finish\n", __func__); - else + } else if (!pnb->disassoc_waiting) { + RTW_WNM_INFO("%s : waiting for btm roaming start/finish\n", + __func__); + } else reason = 1; return reason; @@ -319,8 +340,9 @@ void rtw_wnm_process_btm_req(_adapter *padapter, u8* pframe, u32 frame_len) return; if ((frame_len - offset) <= 15) { - RTW_INFO("WNM : Reject - no suitable BSS transition candidates!\n"); - rtw_wnm_issue_action(padapter, + RTW_INFO("WNM : Reject - " + "no suitable BSS transition candidates!\n"); + rtw_wnm_issue_action(padapter, RTW_WLAN_ACTION_WNM_BTM_RSP, 7, req_hdr.dialog_token); return; } @@ -335,16 +357,16 @@ void rtw_wnm_process_btm_req(_adapter *padapter, u8* pframe, u32 frame_len) #ifdef CONFIG_RTW_MBO /* for wifi-test; AP2 could power-off when BTM-req received */ if ((reason > 0) && (rtw_mbo_wifi_logo_test(padapter))) { - _rtw_memcpy(pnb->roam_target_addr, pnb->nb_rpt[0].bssid, ETH_ALEN); - RTW_WNM_INFO("%s : used report 0 as roam_target_addr(reason=%u)\n", - __func__, reason); + _rtw_memcpy(pnb->roam_target_addr, + pnb->nb_rpt[0].bssid, ETH_ALEN); + RTW_WNM_INFO("%s : used report 0 as roam_target_addr" + "(reason=%u)\n", __func__, reason); reason = 0; pnb->preference_en = _TRUE; - pnb->nb_rpt_valid = _FALSE; } #endif - rtw_wnm_issue_action(padapter, + rtw_wnm_issue_action(padapter, RTW_WLAN_ACTION_WNM_BTM_RSP, reason, req_hdr.dialog_token); if (reason == 0) { @@ -426,13 +448,13 @@ exit: void rtw_wnm_process_btm_rsp(_adapter *padapter, u8* pframe, u32 frame_len, struct btm_rsp_hdr *prsp) { + if ((pframe == NULL) || (frame_len == 0)) + return; + prsp->dialog_token = wnm_btm_dialog_token(pframe); prsp->status = wnm_btm_rsp_status(pframe); prsp->termination_delay = wnm_btm_rsp_term_delay(pframe); - if ((pframe == NULL) || (frame_len == 0)) - return; - prsp->status = *(pframe + 3); prsp->termination_delay = *(pframe + 4); @@ -446,7 +468,8 @@ void rtw_wnm_process_btm_rsp(_adapter *padapter, /* STA BSS Transition Candidate List provided, and at least one NB report exist */ - if (((prsp->status == 0) || (prsp->status == 6)) && (frame_len >= 23)) { + if (((prsp->status == 0) || (prsp->status == 6)) \ + && (frame_len >= 23)) { struct wnm_btm_cant cant; u8 *ptr, *pend; u32 idx = 0; @@ -474,7 +497,8 @@ void rtw_wnm_process_btm_rsp(_adapter *padapter, ptr = ptr + cant.nb_rpt.len + 2; if (prsp->pcandidates) { prsp->candidates_num++; - _rtw_memcpy((prsp->pcandidates + sizeof(cant) * idx), &cant, sizeof(cant)); + _rtw_memcpy((prsp->pcandidates + \ + sizeof(cant) * idx), &cant, sizeof(cant)); } idx++; @@ -484,9 +508,11 @@ void rtw_wnm_process_btm_rsp(_adapter *padapter, MAC_ARG(cant.nb_rpt.bssid), cant.nb_rpt.bss_info, cant.nb_rpt.reg_class, cant.nb_rpt.ch_num, cant.nb_rpt.phy_type, cant.preference); - if ((prsp->pcandidates) && (prsp->candidates_num > 0)) + if ((prsp->pcandidates) && \ + (prsp->candidates_num > 0)) { RTW_WNM_DUMP("WNM candidates: ", prsp->pcandidates, - (sizeof(struct wnm_btm_cant) * prsp->candidates_num)); + (sizeof(struct wnm_btm_cant) * prsp->candidates_num)); + } } } @@ -505,7 +531,8 @@ void rtw_wnm_hdr_init(_adapter *padapter, pattrib = &(pactionframe->attrib); update_mgntframe_attrib(padapter, pattrib); - _rtw_memset(pactionframe->buf_addr, 0, (WLANHDR_OFFSET + TXDESC_OFFSET)); + _rtw_memset(pactionframe->buf_addr, 0, + (WLANHDR_OFFSET + TXDESC_OFFSET)); *pcontent = (u8 *)(pactionframe->buf_addr + TXDESC_OFFSET); pwlanhdr = (struct rtw_ieee80211_hdr *)(*pcontent); @@ -514,7 +541,8 @@ void rtw_wnm_hdr_init(_adapter *padapter, _rtw_memcpy(pwlanhdr->addr1, pmac, ETH_ALEN); _rtw_memcpy(pwlanhdr->addr2, adapter_mac_addr(padapter), ETH_ALEN); - _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, + get_my_bssid(&pmlmeinfo->network), ETH_ALEN); SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; @@ -524,8 +552,10 @@ void rtw_wnm_hdr_init(_adapter *padapter, pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); category = RTW_WLAN_CATEGORY_WNM; - *pcontent = rtw_set_fixed_ie(*pcontent, 1, &(category), &(pattrib->pktlen)); - *pcontent = rtw_set_fixed_ie(*pcontent, 1, &(action), &(pattrib->pktlen)); + *pcontent = rtw_set_fixed_ie(*pcontent, 1, + &(category), &(pattrib->pktlen)); + *pcontent = rtw_set_fixed_ie(*pcontent, 1, + &(action), &(pattrib->pktlen)); } void rtw_wnm_build_btm_req_ies(_adapter *padapter, @@ -536,23 +566,25 @@ void rtw_wnm_build_btm_req_ies(_adapter *padapter, int i; *pframe = rtw_set_fixed_ie(*pframe, 1, - &phdr->dialog_token, &(pattrib->pktlen)); + &phdr->dialog_token, &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 1, - &phdr->req_mode, &(pattrib->pktlen)); + &phdr->req_mode, &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 2, - (u8 *)&phdr->disassoc_timer, &(pattrib->pktlen)); + (u8 *)&phdr->disassoc_timer, &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 1, - &phdr->validity_interval, &(pattrib->pktlen)); + &phdr->validity_interval, &(pattrib->pktlen)); if (phdr->req_mode & BSS_TERMINATION_INCLUDED) { *pframe = rtw_set_fixed_ie(*pframe, 1, - &phdr->term_duration.id, &(pattrib->pktlen)); + &phdr->term_duration.id, &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 1, - &phdr->term_duration.len, &(pattrib->pktlen)); + &phdr->term_duration.len, &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 8, - (u8 *)&phdr->term_duration.tsf, &(pattrib->pktlen)); + (u8 *)&phdr->term_duration.tsf, + &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 2, - (u8 *)&phdr->term_duration.duration, &(pattrib->pktlen)); + (u8 *)&phdr->term_duration.duration, + &(pattrib->pktlen)); } if ((purl != NULL) && (url_len > 0) && @@ -570,28 +602,41 @@ void rtw_wnm_build_btm_req_ies(_adapter *padapter, struct nb_rpt_hdr *prpt = &(pcandidate->nb_rpt); *pframe = rtw_set_fixed_ie(*pframe, 1, - &pcandidate->nb_rpt.id, &(pattrib->pktlen)); + &pcandidate->nb_rpt.id, + &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 1, - &pcandidate->nb_rpt.len, &(pattrib->pktlen)); + &pcandidate->nb_rpt.len, + &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, ETH_ALEN, - pcandidate->nb_rpt.bssid, &(pattrib->pktlen)); + pcandidate->nb_rpt.bssid, + &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 4, - (u8 *)&pcandidate->nb_rpt.bss_info, &(pattrib->pktlen)); + (u8 *)&pcandidate->nb_rpt.bss_info, + &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 1, - &pcandidate->nb_rpt.reg_class, &(pattrib->pktlen)); + &pcandidate->nb_rpt.reg_class, + &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 1, - &pcandidate->nb_rpt.ch_num, &(pattrib->pktlen)); + &pcandidate->nb_rpt.ch_num, + &(pattrib->pktlen)); *pframe = rtw_set_fixed_ie(*pframe, 1, - &pcandidate->nb_rpt.phy_type, &(pattrib->pktlen)); - *pframe = rtw_set_ie(*pframe, WNM_BTM_CAND_PREF_SUBEID, 1, - (u8 *)&pcandidate->preference, &(pattrib->pktlen)); + &pcandidate->nb_rpt.phy_type, + &(pattrib->pktlen)); + *pframe = rtw_set_ie(*pframe, WNM_BTM_CAND_PREF_SUBEID, + 1, (u8 *)&pcandidate->preference, + &(pattrib->pktlen)); } } + +#ifdef CONFIG_RTW_MBO + rtw_mbo_build_wnm_btmreq_reason_ies(padapter, pframe, pattrib); +#endif } void rtw_wnm_issue_btm_req(_adapter *padapter, - u8 *pmac, struct btm_req_hdr *phdr, u8 *purl, u32 url_len, + u8 *pmac, struct btm_req_hdr *phdr, + u8 *purl, u32 url_len, u8 *pcandidates, u8 candidate_cnt) { struct roam_nb_info *pnb = &(padapter->mlmepriv.nb_info); @@ -621,6 +666,7 @@ void rtw_wnm_issue_btm_req(_adapter *padapter, pattrib->last_txcmdsz = pattrib->pktlen; dump_mgntframe(padapter, pmgntframe); + /* dump_mgntframe_and_wait_ack(padapter, pmgntframe); */ RTW_INFO("WNM: BSS Transition Management Request sent\n"); } @@ -643,7 +689,7 @@ void rtw_wnm_issue_action(_adapter *padapter, if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) return ; - + pattrib = &(pmgntframe->attrib); update_mgntframe_attrib(padapter, pattrib); _rtw_memset(pmgntframe->buf_addr, 0, (WLANHDR_OFFSET + TXDESC_OFFSET)); @@ -654,9 +700,12 @@ void rtw_wnm_issue_action(_adapter *padapter, fctrl = &(pwlanhdr->frame_ctl); *(fctrl) = 0; - _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); - _rtw_memcpy(pwlanhdr->addr2, adapter_mac_addr(padapter), ETH_ALEN); - _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr1, + get_my_bssid(&pmlmeinfo->network), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, + adapter_mac_addr(padapter), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, + get_my_bssid(&pmlmeinfo->network), ETH_ALEN); SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; @@ -672,46 +721,71 @@ void rtw_wnm_issue_action(_adapter *padapter, switch (action) { case RTW_WLAN_ACTION_WNM_BTM_QUERY: dialog_token++; - pframe = rtw_set_fixed_ie(pframe, 1, &(dialog_token), &(pattrib->pktlen)); - pframe = rtw_set_fixed_ie(pframe, 1, &(reason), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, + &(dialog_token), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, + &(reason), &(pattrib->pktlen)); RTW_INFO("WNM: BSS Transition Management Query sent\n"); break; case RTW_WLAN_ACTION_WNM_BTM_RSP: dialog_token = dialog; termination_delay = 0; - pframe = rtw_set_fixed_ie(pframe, 1, &(dialog_token), &(pattrib->pktlen)); - pframe = rtw_set_fixed_ie(pframe, 1, &(reason), &(pattrib->pktlen)); - pframe = rtw_set_fixed_ie(pframe, 1, &(termination_delay), &(pattrib->pktlen)); - if (!reason && !is_zero_mac_addr(pmlmepriv->nb_info.roam_target_addr)) { - pframe = rtw_set_fixed_ie(pframe, 6, - pmlmepriv->nb_info.roam_target_addr, &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, + &(dialog_token), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, + &(reason), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, + &(termination_delay), + &(pattrib->pktlen)); + if (!reason && !is_zero_mac_addr( + pmlmepriv->nb_info.roam_target_addr)) { + pframe = rtw_set_fixed_ie(pframe, 6, + pmlmepriv->nb_info.roam_target_addr, + &(pattrib->pktlen)); } #ifdef CONFIG_RTW_MBO - rtw_mbo_build_trans_reject_reason_attr(padapter, + rtw_mbo_build_trans_reject_reason_attr(padapter, &pframe, pattrib, &mbo_trans_rej_res); #endif - RTW_INFO("WNM: BSS Transition Management Response sent(reason:%d)\n", reason); + RTW_INFO("WNM: BSS Transition Management Response" + " sent(reason:%d)\n", reason); break; case RTW_WLAN_ACTION_WNM_NOTIF_REQ: -#ifdef CONFIG_RTW_MBO +#ifdef CONFIG_RTW_MBO dialog_token++; mbo_notif_req_type = WLAN_EID_VENDOR_SPECIFIC; - pframe = rtw_set_fixed_ie(pframe, 1, &(dialog_token), &(pattrib->pktlen)); - pframe = rtw_set_fixed_ie(pframe, 1, &(mbo_notif_req_type), &(pattrib->pktlen)); - rtw_mbo_build_wnm_notification(padapter, &pframe, pattrib); + pframe = rtw_set_fixed_ie(pframe, 1, + &(dialog_token), + &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, + &(mbo_notif_req_type), + &(pattrib->pktlen)); + rtw_mbo_build_wnm_notification(padapter, + &pframe, pattrib); RTW_INFO("WNM: Notification request sent\n"); +#endif + break; + case RTW_WLAN_ACTION_WNM_NOTIF_RSP: +#ifdef CONFIG_RTW_MBO + dialog_token = dialog; + pframe = rtw_set_fixed_ie(pframe, 1, + &(dialog_token), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, + &(reason), &(pattrib->pktlen)); + RTW_INFO("WNM: Notification Response sent\n"); #endif break; default: goto exit; - } - + } + pattrib->last_txcmdsz = pattrib->pktlen; dump_mgntframe(padapter, pmgntframe); + /* dump_mgntframe_and_wait_ack(padapter, pmgntframe); */ -exit: +exit: return; } @@ -730,14 +804,16 @@ void rtw_wnm_update_reassoc_req_ie(_adapter *padapter) /* total len is assoc req len without Current AP Field*/ dup_len = pmlmepriv->assoc_req_len - ETH_ALEN; - /* offset is a len of 80211 header + capability(2B) + listen interval(2B) */ + /* offset is a len of 80211 header + + capability(2B) + listen interval(2B) */ offset = sizeof(struct rtw_ieee80211_hdr_3addr) + 4; pdup = rtw_zmalloc(dup_len); if (pdup) { /* remove Current AP Field @reassoc req IE */ _rtw_memcpy(pdup, pmlmepriv->assoc_req, offset); - _rtw_memcpy(pdup + offset, pmlmepriv->assoc_req + offset + ETH_ALEN, + _rtw_memcpy(pdup + offset, + pmlmepriv->assoc_req + offset + ETH_ALEN, pmlmepriv->assoc_req_len - offset); rtw_buf_update(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len, pdup, dup_len); @@ -751,7 +827,7 @@ void rtw_roam_nb_info_init(_adapter *padapter) { struct roam_nb_info *pnb = &(padapter->mlmepriv.nb_info); struct btm_rpt_cache *pcache = &(pnb->btm_cache); - + _rtw_memset(&pnb->nb_rpt, 0, sizeof(pnb->nb_rpt)); _rtw_memset(&pnb->nb_rpt_ch_list, 0, sizeof(pnb->nb_rpt_ch_list)); _rtw_memset(&pnb->roam_target_addr, 0, ETH_ALEN); @@ -769,8 +845,8 @@ void rtw_roam_nb_info_init(_adapter *padapter) pnb->features |= RTW_WNM_FEATURE_BTM_REQ_EN; #endif - rtw_init_timer(&pnb->roam_scan_timer, - padapter, rtw_wnm_roam_scan_hdl, + rtw_init_timer(&pnb->roam_scan_timer, + padapter, rtw_wnm_roam_scan_hdl, padapter); rtw_init_timer(&pnb->disassoc_chk_timer, padapter, rtw_wnm_disassoc_chk_hdl, @@ -808,7 +884,7 @@ u8 rtw_roam_nb_scan_list_set( rtw_init_sitesurvey_parm(padapter, pparm); if (rtw_roam_busy_scan(padapter, pnb)) { pparm->ch_num = 1; - pparm->ch[pmlmepriv->ch_cnt].hw_value = + pparm->ch[pmlmepriv->ch_cnt].hw_value = pnb->nb_rpt_ch_list[pmlmepriv->ch_cnt].hw_value; pmlmepriv->ch_cnt++; ret = _TRUE; @@ -824,15 +900,16 @@ u8 rtw_roam_nb_scan_list_set( goto set_bssid_list; } - pparm->ch_num = (pnb->nb_rpt_ch_list_num > RTW_CHANNEL_SCAN_AMOUNT)? - (RTW_CHANNEL_SCAN_AMOUNT):(pnb->nb_rpt_ch_list_num); + pparm->ch_num = \ + (pnb->nb_rpt_ch_list_num > RTW_MAX_NB_RPT_NUM) ? \ + RTW_MAX_NB_RPT_NUM : pnb->nb_rpt_ch_list_num; for (i=0; ich_num; i++) { pparm->ch[i].hw_value = pnb->nb_rpt_ch_list[i].hw_value; pparm->ch[i].flags = RTW_IEEE80211_CHAN_PASSIVE_SCAN; } pmlmepriv->nb_info.nb_rpt_valid = _FALSE; - pmlmepriv->ch_cnt = 0; + pmlmepriv->ch_cnt = 0; ret = _TRUE; set_bssid_list: @@ -841,7 +918,7 @@ set_bssid_list: } static u8 rtw_wnm_nb_elem_parsing( - u8* pdata, u32 data_len, u8 from_btm, + u8* pdata, u32 data_len, u8 from_btm, u32 *nb_rpt_num, u8 *nb_rpt_is_same, struct roam_nb_info *pnb, struct wnm_btm_cant *pcandidates) { @@ -864,7 +941,7 @@ static u8 rtw_wnm_nb_elem_parsing( subelem_len = (u32)*(pdata+1); for (i=0; i < RTW_MAX_NB_RPT_NUM; i++) { - if (((ptr + 7) > pend) || (elem_len < subelem_len)) + if (((ptr + 7) > pend) || (elem_len < subelem_len)) break; if (*ptr != RTW_WLAN_ACTION_WNM_NB_RPT_ELEM) { @@ -872,10 +949,10 @@ static u8 rtw_wnm_nb_elem_parsing( break; } - pie = (struct nb_rpt_hdr *)ptr; + pie = (struct nb_rpt_hdr *)ptr; if (from_btm) { - op = rtw_get_ie((u8 *)(ptr+15), - WNM_BTM_CAND_PREF_SUBEID, + op = rtw_get_ie((u8 *)(ptr+15), + WNM_BTM_CAND_PREF_SUBEID, &op_len, (subelem_len - 15)); } @@ -884,7 +961,8 @@ static u8 rtw_wnm_nb_elem_parsing( subelem_len = *(ptr+1); if (from_btm) { pcandidate = (pcandidates + i); - _rtw_memcpy(&pcandidate->nb_rpt, pie, sizeof(struct nb_rpt_hdr)); + _rtw_memcpy(&pcandidate->nb_rpt, pie, + sizeof(struct nb_rpt_hdr)); if (op && (op_len !=0)) { pcandidate->preference = *(op + 2); bfound = _TRUE; @@ -894,28 +972,33 @@ static u8 rtw_wnm_nb_elem_parsing( RTW_WNM_INFO("WNM: preference check bssid("MAC_FMT ") ,bss_info(0x%04X), reg_class(0x%02X), ch(%d)," " phy_type(0x%02X), preference(0x%02X)\n", - MAC_ARG(pcandidate->nb_rpt.bssid), pcandidate->nb_rpt.bss_info, - pcandidate->nb_rpt.reg_class, pcandidate->nb_rpt.ch_num, - pcandidate->nb_rpt.phy_type, pcandidate->preference); + MAC_ARG(pcandidate->nb_rpt.bssid), + pcandidate->nb_rpt.bss_info, + pcandidate->nb_rpt.reg_class, + pcandidate->nb_rpt.ch_num, + pcandidate->nb_rpt.phy_type, + pcandidate->preference); } else { - if (_rtw_memcmp(&pnb->nb_rpt[i], pie, sizeof(struct nb_rpt_hdr)) == _FALSE) + if (_rtw_memcmp(&pnb->nb_rpt[i], pie, + sizeof(struct nb_rpt_hdr)) == _FALSE) *nb_rpt_is_same = _FALSE; - _rtw_memcpy(&pnb->nb_rpt[i], pie, sizeof(struct nb_rpt_hdr)); + _rtw_memcpy(&pnb->nb_rpt[i], pie, + sizeof(struct nb_rpt_hdr)); } - nb_rpt_entries++; - } + nb_rpt_entries++; + } - if (from_btm) - pnb->preference_en = (bfound)?_TRUE:_FALSE; + if (from_btm) + pnb->preference_en = (bfound)?_TRUE:_FALSE; *nb_rpt_num = nb_rpt_entries; return ret; -} +} /* selection sorting based on preference value * IN : nb_rpt_entries - candidate num * IN/OUT : pcandidates - candidate list - * return : TRUE - means pcandidates is updated. + * return : TRUE - means pcandidates is updated. */ static u8 rtw_wnm_candidates_sorting( u32 nb_rpt_entries, struct wnm_btm_cant *pcandidates) @@ -939,17 +1022,21 @@ static u8 rtw_wnm_candidates_sorting( if (pos != i) { updated = _TRUE; - _rtw_memcpy(&swap, (pcandidates+i), sizeof(struct wnm_btm_cant)); - _rtw_memcpy((pcandidates+i), (pcandidates+pos), sizeof(struct wnm_btm_cant)); - _rtw_memcpy((pcandidates+pos), &swap, sizeof(struct wnm_btm_cant)); + _rtw_memcpy(&swap, (pcandidates+i), + sizeof(struct wnm_btm_cant)); + _rtw_memcpy((pcandidates+i), (pcandidates+pos), + sizeof(struct wnm_btm_cant)); + _rtw_memcpy((pcandidates+pos), &swap, + sizeof(struct wnm_btm_cant)); } - } + } return updated; -} +} static void rtw_wnm_nb_info_update( - u32 nb_rpt_entries, u8 from_btm, - struct roam_nb_info *pnb, struct wnm_btm_cant *pcandidates, + u32 nb_rpt_entries, u8 from_btm, + struct roam_nb_info *pnb, + struct wnm_btm_cant *pcandidates, u8 *nb_rpt_is_same) { u8 is_found; @@ -967,27 +1054,31 @@ static void rtw_wnm_nb_info_update( if (_rtw_memcmp(&pnb->nb_rpt[i], &pcand->nb_rpt, sizeof(struct nb_rpt_hdr)) == _FALSE) *nb_rpt_is_same = _FALSE; - _rtw_memcpy(&pnb->nb_rpt[i], &pcand->nb_rpt, sizeof(struct nb_rpt_hdr)); + _rtw_memcpy(&pnb->nb_rpt[i], &pcand->nb_rpt, + sizeof(struct nb_rpt_hdr)); } RTW_WNM_INFO("WNM: bssid(" MAC_FMT - ") , bss_info(0x%04X), reg_class(0x%02X), ch_num(%d), phy_type(0x%02X)\n", - MAC_ARG(pnb->nb_rpt[i].bssid), pnb->nb_rpt[i].bss_info, - pnb->nb_rpt[i].reg_class, pnb->nb_rpt[i].ch_num, + ") , bss_info(0x%04X), reg_class(0x%02X)," + " ch_num(%d), phy_type(0x%02X)\n", + MAC_ARG(pnb->nb_rpt[i].bssid), pnb->nb_rpt[i].bss_info, + pnb->nb_rpt[i].reg_class, pnb->nb_rpt[i].ch_num, pnb->nb_rpt[i].phy_type); if (pnb->nb_rpt[i].ch_num == 0) continue; for (j=0; jnb_rpt[i].ch_num == pnb->nb_rpt_ch_list[j].hw_value) { + if (pnb->nb_rpt[i].ch_num == + pnb->nb_rpt_ch_list[j].hw_value) { is_found = _TRUE; break; } } - + if (!is_found) { - pnb->nb_rpt_ch_list[pnb->nb_rpt_ch_list_num].hw_value = pnb->nb_rpt[i].ch_num; + pnb->nb_rpt_ch_list[pnb->nb_rpt_ch_list_num].hw_value =\ + pnb->nb_rpt[i].ch_num; pnb->nb_rpt_ch_list_num++; } } @@ -1010,14 +1101,16 @@ static void rtw_wnm_btm_candidate_select(_adapter *padapter) for (i = 0; i < pnb->last_nb_rpt_entries; i++) { if (ignore_currrent && (_rtw_memcmp(pnb->nb_rpt[i].bssid,\ - padapter->mlmepriv.cur_network.network.MacAddress, ETH_ALEN))) { - RTW_WNM_INFO("WNM : ignore candidate "MAC_FMT" for it's connected(%u)!\n", - MAC_ARG(pnb->nb_rpt[i].bssid), i); + padapter->mlmepriv.cur_network.network.MacAddress, + ETH_ALEN))) { + RTW_WNM_INFO("WNM : ignore candidate "MAC_FMT + " for it's connected(%u)!\n", + MAC_ARG(pnb->nb_rpt[i].bssid), i); continue; } - + pnetwork = rtw_find_network( - &(pmlmepriv->scanned_queue), + &(pmlmepriv->scanned_queue), pnb->nb_rpt[i].bssid); if (pnetwork) { @@ -1027,14 +1120,16 @@ static void rtw_wnm_btm_candidate_select(_adapter *padapter) } if (bfound) { - _rtw_memcpy(pnb->roam_target_addr, pnb->nb_rpt[i].bssid, ETH_ALEN); - RTW_INFO("WNM : select btm entry(%d) - %s("MAC_FMT", ch:%u) rssi:%d\n" + _rtw_memcpy(pnb->roam_target_addr, + pnb->nb_rpt[i].bssid, ETH_ALEN); + RTW_INFO("WNM : select btm entry(%d) -" + " %s("MAC_FMT", ch:%u) rssi:%d\n" , i , pnetwork->network.Ssid.Ssid , MAC_ARG(pnetwork->network.MacAddress) , pnetwork->network.Configuration.DSConfig , (int)pnetwork->network.Rssi); - } else + } else _rtw_memset(pnb->roam_target_addr,0, ETH_ALEN); } @@ -1045,54 +1140,292 @@ u32 rtw_wnm_btm_candidates_survey( struct wnm_btm_cant *pcandidate_list = NULL; u8 nb_rpt_is_same = _TRUE; u32 ret = _FAIL; - u32 nb_rpt_entries = 0; + u32 nb_rpt_entries = 0; if (from_btm) { u32 mlen = sizeof(struct wnm_btm_cant) * RTW_MAX_NB_RPT_NUM; pcandidate_list = (struct wnm_btm_cant *)rtw_malloc(mlen); - if (pcandidate_list == NULL) - goto exit; + if (pcandidate_list == NULL) + goto exit; } /*clean the status set last time*/ _rtw_memset(&pnb->nb_rpt_ch_list, 0, sizeof(pnb->nb_rpt_ch_list)); pnb->nb_rpt_valid = _FALSE; if (!rtw_wnm_nb_elem_parsing( - pframe, elem_len, from_btm, + pframe, elem_len, from_btm, &nb_rpt_entries, &nb_rpt_is_same, pnb, pcandidate_list)) goto exit; if (nb_rpt_entries != 0) { - if ((from_btm) && (rtw_wnm_btm_preference_cap(padapter))) - rtw_wnm_candidates_sorting(nb_rpt_entries, pcandidate_list); + if ((from_btm) && (rtw_wnm_btm_preference_cap(padapter))) { + rtw_wnm_candidates_sorting( + nb_rpt_entries, pcandidate_list); + } rtw_wnm_nb_info_update( - nb_rpt_entries, from_btm, + nb_rpt_entries, from_btm, pnb, pcandidate_list, &nb_rpt_is_same); } - RTW_WNM_INFO("nb_rpt_is_same = %d, nb_rpt_entries = %d, last_nb_rpt_entries = %d\n", - nb_rpt_is_same, nb_rpt_entries, pnb->last_nb_rpt_entries); - if ((nb_rpt_is_same == _TRUE) && (nb_rpt_entries == pnb->last_nb_rpt_entries)) + RTW_WNM_INFO("nb_rpt_is_same = %d, nb_rpt_entries = %d," + " last_nb_rpt_entries = %d\n", + nb_rpt_is_same, nb_rpt_entries, + pnb->last_nb_rpt_entries); + if ((nb_rpt_is_same == _TRUE) && + (nb_rpt_entries == pnb->last_nb_rpt_entries)) { pnb->nb_rpt_is_same = _TRUE; - else { + } else { pnb->nb_rpt_is_same = _FALSE; pnb->last_nb_rpt_entries = nb_rpt_entries; } if ((from_btm) && (nb_rpt_entries != 0)) rtw_wnm_btm_candidate_select(padapter); - + pnb->nb_rpt_valid = _TRUE; ret = _SUCCESS; exit: - if (from_btm && pcandidate_list) - rtw_mfree((u8 *)pcandidate_list, sizeof(struct wnm_btm_cant) * RTW_MAX_NB_RPT_NUM); - + if (from_btm && pcandidate_list) { + rtw_mfree((u8 *)pcandidate_list, + sizeof(struct wnm_btm_cant) * RTW_MAX_NB_RPT_NUM); + } + return ret; } +void rtw_wnm_process_btm_query(_adapter *padapter, u8* pframe, u32 frame_len) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); +/* for debug only */ +#if 1 + u8 *ptr, *pend; +#else + struct nb_rpt_hdr *pie; + u8 *ptr, *pend, *op; +#endif + u32 elem_len, subelem_len, op_len; + u32 i, nb_rpt_entries = 0; + if (!pframe || !frame_len) + return; + + /* no preferred bss transition candidate list include */ + if (wnm_btm_query_reason(pframe) != 0x13) + return; + + ptr = pframe + 4; + elem_len = frame_len - 4; + pend = ptr + elem_len; + subelem_len = (u32)*(ptr + 1); + + RTW_WNM_DUMP("BTM QUERY :", ptr, elem_len); + for (i = 0; i < RTW_MAX_NB_RPT_NUM; i++) { + if (((ptr + 7) > pend) || (elem_len < subelem_len)) + break; + if (*ptr != RTW_WLAN_ACTION_WNM_NB_RPT_ELEM) + break; +#ifdef CONFIG_RTW_MBO +/* for debug only */ +#if 0 + pie = (struct nb_rpt_hdr *)ptr; + op = rtw_get_ie((u8 *)(ptr+15), WNM_BTM_CAND_PREF_SUBEID, + &op_len, (subelem_len - 15)); + + if (rtw_mbo_wifi_logo_test(padapter) && + check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { + struct mbo_attr_info *pmbo_attr = \ + &(pmlmepriv->mbo_attr); + struct mbo_user_btm_req_pkt *puser = \ + &(pmbo_attr->user_raw); + struct wnm_btm_cant *puser_cant; + u8 j = 0, idx = 0, found = _FALSE; + + for (j = 0; j < RTW_MAX_NB_RPT_NUM; j++) { + puser_cant = &puser->btm_cants[j]; + if (_rtw_memcmp(pie->bssid, + puser_cant->nb_rpt.bssid, ETH_ALEN)) { + puser_cant->nb_rpt.bss_info = \ + pie->bss_info; + puser_cant->nb_rpt.reg_class = \ + pie->reg_class; + puser_cant->nb_rpt.ch_num = \ + pie->ch_num; + puser_cant->nb_rpt.phy_type = \ + pie->phy_type; + puser_cant->preference = \ + *(op + 2); + idx = j; + found = _TRUE; + break; + } + } + + if (!found) { + if (puser->candidate_cnt >= RTW_MAX_NB_RPT_NUM) + puser->candidate_cnt = 0; + puser_cant = \ + &puser->btm_cants[puser->candidate_cnt]; + puser_cant->nb_rpt.id = \ + RTW_WLAN_ACTION_WNM_NB_RPT_ELEM; + puser_cant->nb_rpt.len = 0x10; + _rtw_memcpy(puser_cant->nb_rpt.bssid, + pie->bssid, ETH_ALEN); + puser_cant->nb_rpt.bss_info = \ + pie->bss_info; + puser_cant->nb_rpt.reg_class = \ + pie->reg_class; + puser_cant->nb_rpt.ch_num = \ + pie->ch_num; + puser_cant->nb_rpt.phy_type = \ + pie->phy_type; + puser_cant->preference = \ + *(op + 2); + puser->candidate_cnt++; + } + + RTW_WNM_INFO("%s: idx=%u, bssid("MAC_FMT")," + " bss_info(0x%04X), reg_class(0x%02X)," + " ch(%d), phy_type(0x%02X), preference(0x%02X)\n", + __func__, (found)?idx:puser->candidate_cnt, + MAC_ARG(puser_cant->nb_rpt.bssid), + puser_cant->nb_rpt.bss_info, + puser_cant->nb_rpt.reg_class, + puser_cant->nb_rpt.ch_num, + puser_cant->nb_rpt.phy_type, + puser_cant->preference); + } +#endif +#endif /* end of CONFIG_RTW_MBO */ + + ptr = (u8 *)(ptr + subelem_len + 2); + elem_len -= (subelem_len +2); + subelem_len = *(ptr+1); + } /* end of for-loop RTW_MAX_NB_RPT_NUM */ + +} + +static u8 *rtw_wnm_non_pref_ch_attr_get(u8 *pie, u32 *plen, u32 limit) +{ + const u8 *p = pie; + u32 tmp, i; + + if (limit <= 1) + return NULL; + + i = 0; + *plen = 0; + while (1) { + if ((*p == _VENDOR_SPECIFIC_IE_) && + (_rtw_memcmp(rtw_wnm_get_non_pref_ch_oui(p), + wnm_non_pref_ch_oui, 4))) { + *plen = *(p + 1); + return (u8 *)p; + } else { + tmp = *(p + 1); + p += (tmp + 2); + i += (tmp + 2); + } + + if (i >= limit) + break; + } + + return NULL; +} + +void rtw_wnm_process_notification_req( + _adapter *padapter, u8 *pframe, u32 frame_len) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); +#ifdef CONFIG_RTW_MBO + struct mbo_attr_info *pmbo_attr = &(pmlmepriv->mbo_attr); + struct mbo_user_btm_req_pkt *puser_raw = &(pmbo_attr->user_raw); +#endif + struct wnm_btm_cant *pcant = NULL; + u8 dialog, type; + u8 *psubie; + u8 *ptr = NULL; + u32 left_len, subie_len; + + if (!pframe || (frame_len < 5)) + return; + + /* RTW_WNM_DUMP("notify-req :", pframe, frame_len); */ + dialog = *(pframe + 2); + type = *(pframe + 3); + + if (type != WLAN_EID_VENDOR_SPECIFIC) + return; + + ptr = (pframe + 4); + left_len = (frame_len - 4); + + while((psubie = rtw_wnm_non_pref_ch_attr_get( + ptr, &subie_len, left_len)) != NULL) { + + /* RTW_WNM_DUMP("notify-req subie :", (psubie + 2), subie_len); */ + + ptr += (subie_len + 2); + left_len -= (subie_len + 2); + +#ifdef CONFIG_RTW_MBO + if (rtw_mbo_wifi_spec_test(padapter) && \ + (subie_len > 7)) { + + u8 *pload = NULL, *pclass = NULL; + u8 ch_nums = 0; + u8 non_pref_ch = 0; + u8 ch_op_pref = 1, reason = 0; + u32 i, j; + + /* nums = sublen - oui_len - + (class_len - op_len - reason_len) */ + ch_nums = subie_len - 4 - 3; + if (ch_nums >= RTW_MBO_MAX_CH_LIST_NUM) + ch_nums = RTW_MBO_MAX_CH_LIST_NUM; + + /* skip sudid, len, oui */ + pclass = (psubie + 6); + ch_op_pref = *(pclass + ch_nums + 1); + reason = *(pclass + ch_nums + 2); + RTW_WNM_INFO("%s : class=0x%02x, operating=0x%02x, " + "reason=0x%02x\n", __func__, *pclass, + ch_op_pref, reason); + + for (i = 0; i < ch_nums; i++) { + non_pref_ch = *(pclass + 1 + i); + RTW_WNM_INFO("%s : non-pref ch %u " + "found in notify-req operating 0x%02x\n", + __func__, non_pref_ch, ch_op_pref); + + for (j = 0; j < RTW_MAX_NB_RPT_NUM; j++) { + pcant = &puser_raw->btm_cants[j]; + if (pcant->nb_rpt.ch_num == non_pref_ch) { + if (ch_op_pref == 0) { + RTW_WNM_INFO("%s : reset " + "preference(%u) for non-preference ch\n", + __func__, pcant->preference); + pcant->preference = 0; + } else { + if (!pcant->preference) + pcant->preference = 64; + } + } + + } /* end of for loop RTW_MAX_NB_RPT_NUM */ + + } /* end of for loop ch_nums*/ + + } +#endif /* end of CONFIG_RTW_MB*/ + + } /* end of while loop */ + + rtw_wnm_issue_action(padapter, + RTW_WLAN_ACTION_WNM_NOTIF_RSP, 0, dialog); + +} #endif /*defined(CONFIG_RTW_WNM) || defined(CONFIG_RTW_80211K) */ diff --git a/drivers/net/wireless/rtl8822cs/core/rtw_xmit.c b/drivers/net/wireless/rtl8822cs/core/rtw_xmit.c index dcd86cfa8..ae289fd42 100644 --- a/drivers/net/wireless/rtl8822cs/core/rtw_xmit.c +++ b/drivers/net/wireless/rtl8822cs/core/rtw_xmit.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -573,7 +573,7 @@ void rtw_get_adapter_tx_rate_bmp(_adapter *adapter, u16 r_bmp_cck_ofdm[], u32 r_ bmp_vht |= tmp_vht; } if (bw == CHANNEL_WIDTH_20) - r_bmp_cck_ofdm[bw] = bmp_cck_ofdm; + r_bmp_cck_ofdm[0] = bmp_cck_ofdm; if (bw <= CHANNEL_WIDTH_40) r_bmp_ht[bw] = bmp_ht; if (bw <= CHANNEL_WIDTH_160) @@ -685,7 +685,7 @@ void rtw_update_tx_rate_bmp(struct dvobj_priv *dvobj) /* TODO: per rfpath and rate section handling? */ if (update_ht_rs == _TRUE || update_vht_rs == _TRUE) - rtw_hal_update_txpwr_level(adapter); + rtw_update_txpwr_level(dvobj, HW_BAND_MAX); } #endif /* CONFIG_TXPWR_LIMIT */ } @@ -848,18 +848,23 @@ s16 rtw_get_oper_txpwr_max_mbm(struct dvobj_priv *dvobj, bool eirp) return mbm; } -s16 rtw_rfctl_get_reg_max_txpwr_mbm(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, bool eirp) +s16 rtw_rfctl_get_reg_max_txpwr_mbm(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset, bool eirp) { struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); struct registry_priv *regsty = dvobj_to_regsty(dvobj); _adapter *adapter = dvobj_get_primary_adapter(dvobj); s16 mbm = -100 * MBM_PDBM; - u8 cch = rtw_get_center_ch(ch, bw, offset); + u8 cch = rtw_get_center_ch_by_band(band, ch, bw, offset); u16 bmp_cck_ofdm = 0; u32 bmp_ht = 0; u64 bmp_vht = 0; - if (ch <= 14) +#if CONFIG_IEEE80211_BAND_6GHZ + if (band == BAND_ON_6G) /* TODO: 6G */ + return 1300; +#endif + + if (band == BAND_ON_2_4G) bmp_cck_ofdm |= RATE_BMP_CCK; /* TODO: NO OFDM? */ @@ -1471,7 +1476,7 @@ static u8 tos_to_up(u8 tos) return up; } -static void set_qos(_pkt *pkt, struct pkt_attrib *pattrib) +static void set_qos(_adapter *padapter, _pkt *pkt, struct pkt_attrib *pattrib) { s32 UserPriority = 0; @@ -1507,6 +1512,21 @@ static void set_qos(_pkt *pkt, struct pkt_attrib *pattrib) UserPriority = 7; #endif/*CONFIG_IP_R_MONITOR*/ +#ifdef CONFIG_MCC_MODE + if (MCC_EN(padapter)) { + /* Under MCC */ + if (rtw_hal_check_mcc_status(padapter, MCC_STATUS_NEED_MCC)) { + if (padapter->mcc_adapterpriv.role == MCC_ROLE_GO + || padapter->mcc_adapterpriv.role == MCC_ROLE_GC + || padapter->mcc_adapterpriv.role == MCC_ROLE_AP) { + UserPriority = 7; + } else { + UserPriority = 0; + } + } + } +#endif /* CONFIG_MCC_MODE */ + null_pkt: pattrib->priority = UserPriority; pattrib->hdrlen = XATTRIB_GET_WDS(pattrib) ? WLAN_HDR_A4_QOS_LEN : WLAN_HDR_A3_QOS_LEN; @@ -1605,7 +1625,7 @@ inline u8 rtw_get_hwseq_no(_adapter *padapter) #ifdef CONFIG_CONCURRENT_MODE #if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ - || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) hwseq_num = padapter->iface_id; if (hwseq_num > 3) hwseq_num = 3; @@ -1644,7 +1664,6 @@ static u8 _rtw_lps_chk_packet_type(struct pkt_attrib *pattrib) #endif static s32 update_attrib(_adapter *padapter, _pkt *pkt, struct pkt_attrib *pattrib) { - uint i; struct pkt_file pktfile; struct sta_info *psta = NULL; struct ethhdr etherhdr; @@ -1663,7 +1682,7 @@ static s32 update_attrib(_adapter *padapter, _pkt *pkt, struct pkt_attrib *pattr DBG_COUNTER(padapter->tx_logs.core_tx_upd_attrib); _rtw_open_pktfile(pkt, &pktfile); - i = _rtw_pktfile_read(&pktfile, (u8 *)ðerhdr, ETH_HLEN); + _rtw_pktfile_read(&pktfile, (u8 *)ðerhdr, ETH_HLEN); pattrib->ether_type = ntohs(etherhdr.h_proto); @@ -1870,7 +1889,7 @@ get_sta_info: | WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE) ) { if (pattrib->qos_en) { - set_qos(pkt, pattrib); + set_qos(padapter, pkt, pattrib); #ifdef CONFIG_RTW_MESH if (MLME_IS_MESH(padapter)) rtw_mesh_tx_set_whdr_mctrl_len(pattrib->mesh_frame_mode, pattrib); @@ -1880,12 +1899,12 @@ get_sta_info: #ifdef CONFIG_TDLS if (pattrib->direct_link == _TRUE) { if (pattrib->qos_en) - set_qos(pkt, pattrib); + set_qos(padapter, pkt, pattrib); } else #endif { if (pqospriv->qos_option) { - set_qos(pkt, pattrib); + set_qos(padapter, pkt, pattrib); if (pmlmepriv->acm_mask != 0) pattrib->priority = qos_acm(pmlmepriv->acm_mask, pattrib->priority); @@ -1922,8 +1941,6 @@ get_sta_info: rtw_set_tx_chksum_offload(pkt, pattrib); exit: - - return res; } @@ -4102,7 +4119,7 @@ void rtw_free_mgmt_xmitframe_queue(struct xmit_priv *pxmitpriv, _queue *mgmt_que RTW_INFO("%s seq_num = %u\n", __func__, pxmitframe->attrib.seqnum); #endif - rtw_free_xmitbuf_ext(pxmitpriv, pxmitframe->pxmitbuf); + rtw_free_xmitbuf(pxmitpriv, pxmitframe->pxmitbuf); rtw_free_xmitframe(pxmitpriv, pxmitframe); } _exit_critical_bh(&(mgmt_queue->lock), &irqL); @@ -4195,35 +4212,12 @@ static struct xmit_frame *dequeue_one_xmitframe(struct xmit_priv *pxmitpriv, str xmitframe_phead = get_list_head(pframe_queue); xmitframe_plist = get_next(xmitframe_phead); - while ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) { + if ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) { pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); - /* xmitframe_plist = get_next(xmitframe_plist); */ - - /*#ifdef RTK_DMP_PLATFORM - #ifdef CONFIG_USB_TX_AGGREGATION - if((ptxservq->qcnt>0) && (ptxservq->qcnt<=2)) - { - pxmitframe = NULL; - - tasklet_schedule(&pxmitpriv->xmit_tasklet); - - break; - } - #endif - #endif*/ rtw_list_delete(&pxmitframe->list); ptxservq->qcnt--; - - /* rtw_list_insert_tail(&pxmitframe->list, &phwxmit->pending); */ - - /* ptxservq->qcnt--; */ - - break; - - /* pxmitframe = NULL; */ - } return pxmitframe; @@ -4237,10 +4231,8 @@ static struct xmit_frame *get_one_xmitframe(struct xmit_priv *pxmitpriv, struct xmitframe_phead = get_list_head(pframe_queue); xmitframe_plist = get_next(xmitframe_phead); - while ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) { + if ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); - break; - } return pxmitframe; } @@ -4830,27 +4822,7 @@ static void do_queue_select(_adapter *padapter, struct pkt_attrib *pattrib) qsel = pattrib->priority; -#ifdef CONFIG_MCC_MODE - if (MCC_EN(padapter)) { - /* Under MCC */ - if (rtw_hal_check_mcc_status(padapter, MCC_STATUS_NEED_MCC)) { - if (padapter->mcc_adapterpriv.role == MCC_ROLE_GO - || padapter->mcc_adapterpriv.role == MCC_ROLE_AP) { - pattrib->qsel = QSLT_VO; /* AP interface VO queue */ - pattrib->priority = QSLT_VO; - } else { - pattrib->qsel = QSLT_BE; /* STA interface BE queue */ - pattrib->priority = QSLT_BE; - } - } else - /* Not Under MCC */ - pattrib->qsel = qsel; - } else - /* Not enable MCC */ - pattrib->qsel = qsel; -#else /* !CONFIG_MCC_MODE */ pattrib->qsel = qsel; -#endif /* CONFIG_MCC_MODE */ /* high priority packet */ if (pattrib->hipriority_pkt) { @@ -4870,41 +4842,139 @@ static void do_queue_select(_adapter *padapter, struct pkt_attrib *pattrib) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24)) s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) { - u16 frame_ctl; - struct ieee80211_radiotap_header rtap_hdr; _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); - struct pkt_file pktfile; struct rtw_ieee80211_hdr *pwlanhdr; - struct pkt_attrib *pattrib; - struct xmit_frame *pmgntframe; - struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); - struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); - unsigned char *pframe; - u8 dummybuf[32]; - int len = skb->len, rtap_len; - + struct pkt_attrib *pattrib; + struct xmit_frame *pmgntframe; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + unsigned char *pframe; + u16 frame_ctl; + u8 retry_ctrl = _FALSE; + u8 fixed_rate = MGN_1M; + u8 sgi = 0; + u8 bwidth = CHANNEL_WIDTH_20; + u8 ldpc = 0; + u8 stbc = 0; +#ifndef CONFIG_CUSTOMER_ALIBABA_GENERAL + struct ieee80211_radiotap_header *rtap_hdr; + struct ieee80211_radiotap_iterator iterator; + int rtap_len; + int ret; +#endif rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); #ifndef CONFIG_CUSTOMER_ALIBABA_GENERAL if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header))) - goto fail; + goto no_rtap_tx; - _rtw_open_pktfile((_pkt *)skb, &pktfile); - _rtw_pktfile_read(&pktfile, (u8 *)(&rtap_hdr), sizeof(struct ieee80211_radiotap_header)); - rtap_len = ieee80211_get_radiotap_len((u8 *)(&rtap_hdr)); - if (unlikely(rtap_hdr.it_version)) - goto fail; + rtap_hdr = (struct ieee80211_radiotap_header *)skb->data; + if (unlikely(rtap_hdr->it_version)) + goto no_rtap_tx; + rtap_len = ieee80211_get_radiotap_len(skb->data); if (unlikely(skb->len < rtap_len)) - goto fail; + goto no_rtap_tx; - if (rtap_len != 12) { - RTW_INFO("radiotap len (should be 14): %d\n", rtap_len); - goto fail; + ret = ieee80211_radiotap_iterator_init(&iterator, rtap_hdr, skb->len, NULL); + while (!ret) { + ret = ieee80211_radiotap_iterator_next(&iterator); + + if (ret) + continue; + + /* see if this argument is something we can use */ + switch (iterator.this_arg_index) { + case IEEE80211_RADIOTAP_RATE: + /* This rate is in units of 500kb, but we did not check + if this value is in the enum MGN_RATE. */ + fixed_rate = *iterator.this_arg; + break; + + case IEEE80211_RADIOTAP_TX_FLAGS: { + u16 txflags; + txflags = get_unaligned_le16(iterator.this_arg); + if ((txflags & IEEE80211_RADIOTAP_F_TX_NOACK) == 0) + retry_ctrl = _TRUE; + break; + } + + case IEEE80211_RADIOTAP_MCS: { + u8 mcs_known = iterator.this_arg[0]; + u8 mcs_flags = iterator.this_arg[1]; + if (!(mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_MCS)) + break; + + fixed_rate = iterator.this_arg[2] & 0x7f; + + if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_MCS) { + fixed_rate = iterator.this_arg[2] & 0x7f; + if (fixed_rate > 31) + fixed_rate = 0; + fixed_rate += MGN_MCS0; + } + if ((mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_GI) && + (mcs_flags & IEEE80211_RADIOTAP_MCS_SGI)) + sgi = 1; + if ((mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_BW) && + (mcs_flags & IEEE80211_RADIOTAP_MCS_BW_40)) + bwidth = CHANNEL_WIDTH_40; + if ((mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_FEC) && + (mcs_flags & IEEE80211_RADIOTAP_MCS_FEC_LDPC)) + ldpc = 1; + if ((mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_STBC)) { + stbc = (mcs_flags & + IEEE80211_RADIOTAP_MCS_STBC_MASK) >> + IEEE80211_RADIOTAP_MCS_STBC_SHIFT; + } + break; + } + + case IEEE80211_RADIOTAP_VHT: { + u16 vht_known = get_unaligned_le16(iterator.this_arg); + u8 vht_flags = iterator.this_arg[2]; + unsigned int mcs, nss; + + if ((vht_known & IEEE80211_RADIOTAP_VHT_KNOWN_GI) && + (vht_flags & IEEE80211_RADIOTAP_VHT_FLAG_SGI)) + sgi = 1; + if (vht_known & + IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH) { + bwidth = iterator.this_arg[3] & 0x1f; + if(bwidth >= 1 && bwidth <= 3) + bwidth = CHANNEL_WIDTH_40; + else if(bwidth >= 4 && bwidth <= 10) + bwidth = CHANNEL_WIDTH_80; + else + bwidth = CHANNEL_WIDTH_20; + } + if((vht_known & IEEE80211_RADIOTAP_VHT_KNOWN_STBC) && + (vht_flags & IEEE80211_RADIOTAP_VHT_FLAG_STBC)) + stbc = 1; + if (vht_known & IEEE80211_RADIOTAP_VHT_KNOWN_LDPC_EXTRA_OFDM_SYM && + vht_flags & IEEE80211_RADIOTAP_VHT_FLAG_LDPC_EXTRA_OFDM_SYM && + iterator.this_arg[8] & 0x0f) + ldpc = 1; + mcs = (iterator.this_arg[4] >> 4) & 0x0f; + nss = iterator.this_arg[4] & 0x0f; + if(nss > 0) { + if(nss > 4) nss = 4; + if(mcs > 9) mcs = 9; + fixed_rate = MGN_VHT1SS_MCS0 + ((nss - 1) * 10 + mcs); + } + break; + } + + default: + break; + } } - _rtw_pktfile_read(&pktfile, dummybuf, rtap_len-sizeof(struct ieee80211_radiotap_header)); - len = len - rtap_len; + + /* Skip the ratio tap header */ + skb_pull(skb, rtap_len); + +no_rtap_tx: #endif pmgntframe = alloc_mgtxmitframe(pxmitpriv); if (pmgntframe == NULL) { @@ -4914,36 +4984,36 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; -// _rtw_memcpy(pframe, (void *)checking, len); - _rtw_pktfile_read(&pktfile, pframe, len); + skb_copy_bits(skb, 0, (void*)pframe, skb->len); + + pattrib = &pmgntframe->attrib; /* Check DATA/MGNT frames */ pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; frame_ctl = le16_to_cpu(pwlanhdr->frame_ctl); - if ((frame_ctl & RTW_IEEE80211_FCTL_FTYPE) == RTW_IEEE80211_FTYPE_DATA) { - - pattrib = &pmgntframe->attrib; - update_monitor_frame_attrib(padapter, pattrib); - - if (is_broadcast_mac_addr(pwlanhdr->addr3) || is_broadcast_mac_addr(pwlanhdr->addr1)) - pattrib->rate = MGN_24M; - - } else { - - pattrib = &pmgntframe->attrib; - update_mgntframe_attrib(padapter, pattrib); - - } - pattrib->retry_ctrl = _FALSE; - pattrib->pktlen = len; + if ((frame_ctl & RTW_IEEE80211_FCTL_FTYPE) == RTW_IEEE80211_FTYPE_DATA) + update_monitor_frame_attrib(padapter, &pmgntframe->attrib); + else + update_mgntframe_attrib(padapter, &pmgntframe->attrib); + pattrib->pktlen = skb->len; + pattrib->rate = fixed_rate; + pattrib->retry_ctrl = retry_ctrl; pmlmeext->mgnt_seq = GetSequence(pwlanhdr); pattrib->seqnum = pmlmeext->mgnt_seq; pmlmeext->mgnt_seq++; pattrib->last_txcmdsz = pattrib->pktlen; + pattrib->sgi = sgi; + pattrib->bwmode = bwidth; + pattrib->ldpc = ldpc; + pattrib->stbc = stbc; dump_mgntframe(padapter, pmgntframe); + DBG_COUNTER(padapter->tx_logs.core_tx); + pxmitpriv->tx_pkts++; + pxmitpriv->tx_bytes += skb->len; + fail: rtw_skb_free(skb); return 0; @@ -6611,6 +6681,7 @@ void rtw_sctx_init(struct submit_ctx *sctx, int timeout_ms) init_completion(&sctx->done); #endif sctx->status = RTW_SCTX_SUBMITTED; + sctx->rsp = NULL; } int rtw_sctx_wait(struct submit_ctx *sctx, const char *msg) diff --git a/drivers/net/wireless/rtl8822cs/hal/btc/halbtc8822c.c b/drivers/net/wireless/rtl8822cs/hal/btc/halbtc8822c.c index 54878250d..ecb9a7591 100644 --- a/drivers/net/wireless/rtl8822cs/hal/btc/halbtc8822c.c +++ b/drivers/net/wireless/rtl8822cs/hal/btc/halbtc8822c.c @@ -61,7 +61,8 @@ static const struct btc_coex_table_para table_sant_8822c[] = { {0xdaffdaff, 0xdaffdaff}, {0x6a555a5a, 0x5a5a5a5a}, {0xe5555555, 0xe5555555}, /*case-35*/ - {0xea5a5a5a, 0xea5a5a5a} }; + {0xea5a5a5a, 0xea5a5a5a}, + {0xea6a6a6a, 0xea6a6a6a} }; /* Non-Shared-Antenna Coex Table */ static const struct btc_coex_table_para table_nsant_8822c[] = { @@ -89,7 +90,7 @@ static const struct btc_coex_table_para table_nsant_8822c[] = { {0x55ff55ff, 0x5afa5afa}, {0x55ff55ff, 0xaaaaaaaa}, {0x55ff55ff, 0x55ff55ff}, - {0x6a555a5a, 0xfafafafa} }; + {0x6f555f5f, 0xfafafafa} }; /* Shared-Antenna TDMA*/ static const struct btc_tdma_para tdma_sant_8822c[] = { @@ -189,40 +190,42 @@ static const struct btc_rf_para rf_para_rx_8822c[] = { {13, 6, TRUE, 5}, {6, 9, TRUE, 5}, {4, 11, TRUE, 5}, - {16, 4, TRUE, 4}, /* 6 for RCU OFC */ - {15, 5, TRUE, 4}, - {7, 8, TRUE, 4}, - {6, 10, TRUE, 4}, - {16, 4, TRUE, 4}, /* 10 for A2DP SDR */ - {15, 5, TRUE, 4}, - {7, 8, TRUE, 4}, - {6, 10, TRUE, 4}, - {16, 4, TRUE, 4}, /* 14 for A2DP OFC */ - {15, 5, TRUE, 4}, - {7, 8, TRUE, 4}, - {6, 10, TRUE, 4}, - {16, 4, TRUE, 4}, /* 18 for A2DP+RCU SDR */ - {15, 5, TRUE, 4}, - {7, 8, TRUE, 4}, - {6, 10, TRUE, 4}, - {16, 4, TRUE, 4}, /* 22 for A2DP+RCU OFC */ - {15, 5, TRUE, 4}, - {7, 8, TRUE, 4}, - {6, 10, TRUE, 4} }; + {16, 4, TRUE, 5}, /* 6 for RCU OFC */ + {15, 5, TRUE, 5}, + {7, 8, TRUE, 5}, + {6, 10, TRUE, 5}, + {16, 4, TRUE, 5}, /* 10 for A2DP SDR */ + {15, 5, TRUE, 5}, + {7, 8, TRUE, 5}, + {6, 10, TRUE, 5}, + {16, 4, TRUE, 5}, /* 14 for A2DP OFC */ + {15, 5, TRUE, 5}, + {7, 8, TRUE, 5}, + {6, 10, TRUE, 5}, + {16, 4, TRUE, 5}, /* 18 for A2DP+RCU SDR */ + {15, 5, TRUE, 5}, + {7, 8, TRUE, 5}, + {6, 10, TRUE, 5}, + {16, 4, TRUE, 5}, /* 22 for A2DP+RCU OFC */ + {15, 5, TRUE, 5}, + {7, 8, TRUE, 5}, + {6, 10, TRUE, 5} }; const struct btc_5g_afh_map afh_5g_8822c[] = { {0, 0, 0} }; const struct btc_chip_para btc_chip_para_8822c = { "8822c", /*.chip_name */ - 20211210, /*.para_ver_date */ - 0x27, /*.para_ver */ + 20221118, /*.para_ver_date */ + 0x30, /*.para_ver */ 0x20, /* bt_desired_ver */ 0x7001c, /* wl_desired_ver */ TRUE, /* scbd_support */ 0xaa, /* scbd_reg*/ BTC_SCBD_16_BIT, /* scbd_bit_num */ + FALSE, /* le_audio_support */ TRUE, /* mailbox_support*/ TRUE, /* lte_indirect_access */ + FALSE, /* new_scbd9_def */ TRUE, /* new_scbd10_def */ BTC_INDIRECT_1700, /* indirect_type */ BTC_PSTDMA_FORCE_LPSOFF, /* pstdma_type */ diff --git a/drivers/net/wireless/rtl8822cs/hal/btc/halbtccommon.c b/drivers/net/wireless/rtl8822cs/hal/btc/halbtccommon.c index 7235eb837..ceb6739d1 100644 --- a/drivers/net/wireless/rtl8822cs/hal/btc/halbtccommon.c +++ b/drivers/net/wireless/rtl8822cs/hal/btc/halbtccommon.c @@ -18,8 +18,8 @@ #if (BT_SUPPORT == 1 && COEX_SUPPORT == 1) static u8 *trace_buf = &gl_btc_trace_buf[0]; -static const u32 coex_ver_date = 20211210; -static const u32 coex_ver = 0x27; +static const u32 coex_ver_date = 20221215; +static const u32 coex_ver = 0x31; static u8 rtw_btc_rssi_state(struct btc_coexist *btc, u8 pre_state, @@ -58,7 +58,8 @@ rtw_btc_limited_tx(struct btc_coexist *btc, boolean force_exec, /* Force Max Tx retry limit = 8 */ if (!force_exec && tx_limit_en == coex_sta->wl_tx_limit_en && - ampdu_limit_en == coex_sta->wl_ampdu_limit_en) + ampdu_limit_en == coex_sta->wl_ampdu_limit_en && + !link_info_ext->is_port_num_change) return; /* backup MAC reg */ @@ -84,6 +85,8 @@ rtw_btc_limited_tx(struct btc_coexist *btc, boolean force_exec, */ btc->btc_write_1byte_bitmask(btc, REG_TX_HANG_CTRL, BIT_EN_GNT_BT_AWAKE, 0x1); + btc->btc_write_1byte_bitmask(btc, REG_TX_HANG_CTRL_OPT, + BIT_GNT_BT_OPT, 0x1); /* queue life time can't on if 2-port */ if (link_info_ext->num_of_active_port <= 1) @@ -112,6 +115,8 @@ rtw_btc_limited_tx(struct btc_coexist *btc, boolean force_exec, */ btc->btc_write_1byte_bitmask(btc, REG_TX_HANG_CTRL, BIT_EN_GNT_BT_AWAKE, 0x0); + btc->btc_write_1byte_bitmask(btc, REG_TX_HANG_CTRL_OPT, + BIT_GNT_BT_OPT, 0x0); /* Set queue life time to avoid can't reach tx retry limit * if tx is always break by GNT_BT. @@ -194,6 +199,9 @@ rtw_btc_limited_wl(struct btc_coexist *btc) struct btc_coex_sta *coex_sta = &btc->coex_sta; struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, "[BTCoex], %s()\n", __func__); + BTC_TRACE(trace_buf); + if (link_info_ext->is_all_under_5g || link_info_ext->num_of_active_port == 0 || coex_dm->bt_status == BTC_BTSTATUS_NCON_IDLE) { @@ -216,13 +224,17 @@ rtw_btc_limited_wl(struct btc_coexist *btc) else rtw_btc_limited_tx(btc, NM_EXCU, TRUE, FALSE); - /*COEX-361, solve wifi poor performance when BLE HID exists*/ - if ((coex_sta->bt_ble_hid_exist || coex_sta->bt_hfp_exist) && - coex_sta->wl_iot_peer != BTC_IOT_PEER_ATHEROS && - btc->board_info.btdm_ant_num == 1) - rtw_btc_limited_rx(btc, NM_EXCU, FALSE, TRUE, 4); - else + if (strcmp(btc->chip_para->chip_name, "8822c") == 0) { + /*COEX-361, solve wifi poor performance when BLE HID exists*/ + if ((coex_sta->bt_ble_hid_exist || coex_sta->bt_hfp_exist) && + coex_sta->wl_iot_peer != BTC_IOT_PEER_ATHEROS && + btc->board_info.btdm_ant_num == 1) + rtw_btc_limited_rx(btc, NM_EXCU, FALSE, TRUE, 4); + else + rtw_btc_limited_rx(btc, NM_EXCU, FALSE, TRUE, 64); + } else { rtw_btc_limited_rx(btc, NM_EXCU, FALSE, TRUE, 64); + } } @@ -546,6 +558,7 @@ static void rtw_btc_query_bt_info(struct btc_coexist *btc) { struct btc_coex_sta *coex_sta = &btc->coex_sta; + const struct btc_chip_para *chip_para = btc->chip_para; u8 h2c_parameter[1] = {0x1}; if (coex_sta->bt_disabled) @@ -555,6 +568,10 @@ rtw_btc_query_bt_info(struct btc_coexist *btc) BTC_TRACE(trace_buf); rtw_btc_mailbox_operation(btc, 0x61, 1, h2c_parameter); + + /* query le audio info*/ + if (chip_para->le_audio_support) + rtw_btc_mailbox_operation(btc, 0x74, 1, h2c_parameter); } static void @@ -700,6 +717,7 @@ rtw_btc_update_wl_link_info(struct btc_coexist *btc, u8 reason) btc->btc_get(btc, BTC_GET_U4_WIFI_BW, &linfo_ext->wifi_bw); btc->btc_get(btc, BTC_GET_U4_WIFI_LINK_STATUS, &wifi_link_status); linfo_ext->port_connect_status = wifi_link_status & 0xffff; + linfo_ext->is_port_num_change = FALSE; btc->btc_get(btc, BTC_GET_BL_WIFI_LINK_INFO, &linfo); btc->wifi_link_info = linfo; @@ -814,6 +832,10 @@ rtw_btc_update_wl_link_info(struct btc_coexist *btc, u8 reason) is_p2p_connected = TRUE; } + /* WQCPC-6129: To set REG_LIFETIME_EN correctly */ + if (linfo_ext->num_of_active_port != num_of_wifi_link) + linfo_ext->is_port_num_change = TRUE; + linfo_ext->num_of_active_port = num_of_wifi_link; linfo_ext->is_p2p_connected = is_p2p_connected; @@ -983,9 +1005,20 @@ rtw_btc_update_bt_link_info(struct btc_coexist *btc) } } + /* update le audio info*/ + if (coex_sta->bt_le_audio_exist) { + if (coex_sta->bt_le_audio_BIS) { + coex_sta->bt_profile_num++; + } + if (coex_sta->bt_le_audio_CIS) { + coex_sta->bt_profile_num++; + } + } + if (coex_sta->bt_info_lb2 & BTC_INFO_INQ_PAGE) { coex_dm->bt_status = BTC_BTSTATUS_INQ_PAGE; - } else if (!(coex_sta->bt_info_lb2 & BTC_INFO_CONNECTION)) { + } else if (!(coex_sta->bt_info_lb2 & BTC_INFO_CONNECTION) && + !coex_sta->bt_le_audio_exist) { coex_dm->bt_status = BTC_BTSTATUS_NCON_IDLE; coex_sta->bt_multi_link_remain = FALSE; } else if (coex_sta->bt_info_lb2 == BTC_INFO_CONNECTION) { @@ -1001,6 +1034,8 @@ rtw_btc_update_bt_link_info(struct btc_coexist *btc) coex_dm->bt_status = BTC_BTSTATUS_SCO_BUSY; } else if (coex_sta->bt_info_lb2 & BTC_INFO_ACL_BUSY) { coex_dm->bt_status = BTC_BTSTATUS_ACL_BUSY; + } else if (coex_sta->bt_le_audio_exist) { + coex_dm->bt_status = BTC_BTSTATUS_LE_AUDIO_BUSY; } else { coex_dm->bt_status = BTC_BTSTATUS_MAX; } @@ -1077,11 +1112,19 @@ rtw_btc_update_wl_ch_info(struct btc_coexist *btc, u8 type) } else if(btc->board_info.btdm_ant_num == 1 && wl_center_ch <= 14) { h2c_para[0] = 0x1; h2c_para[1] = wl_center_ch; - /* 8723f shared ant, BT should avoid wifi channel */ - if (link_info_ext->wifi_bw == BTC_WIFI_BW_HT40) - h2c_para[2] = 0x28; - else - h2c_para[2] = 0x14; + /* 8723f shared ant, BT should avoid wifi channel + for 1T1R, BT should avoid more channel */ + if (link_info_ext->wifi_bw == BTC_WIFI_BW_HT40) { + if (coex_sta->wl_coex_mode == BTC_WLINK_2GFREE) + h2c_para[2] = 0x36; + else + h2c_para[2] = 0x28; + } else { + if (coex_sta->wl_coex_mode == BTC_WLINK_2GFREE) + h2c_para[2] = 0x24; + else + h2c_para[2] = 0x14; + } } else if (wl_center_ch <= 14) { h2c_para[0] = 0x1; h2c_para[1] = wl_center_ch; @@ -1161,15 +1204,17 @@ rtw_btc_set_bt_tx_power(struct btc_coexist *btc, static void rtw_btc_set_wl_rx_gain(struct btc_coexist *btc, boolean force_exec, - boolean low_gain_en) + boolean low_gain_en, u8 lna2_level) { struct btc_coex_dm *coex_dm = &btc->coex_dm; const struct btc_chip_para *chip_para = btc->chip_para; - if (!force_exec && low_gain_en == coex_dm->cur_wl_rx_low_gain_en) + if (!force_exec && low_gain_en == coex_dm->cur_wl_rx_low_gain_en && + lna2_level == coex_dm->lna2_level) return; coex_dm->cur_wl_rx_low_gain_en = low_gain_en; + coex_dm->lna2_level = lna2_level; if (low_gain_en) BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, "[BTCoex], Hi-L Rx!\n"); @@ -1212,21 +1257,78 @@ rtw_btc_set_bt_rx_gain(struct btc_coexist *btc, boolean force_exec, u8 lna_lvl) BTC_TRACE(trace_buf); } +static void +rtw_btc_set_bt_rx_agc(struct btc_coexist *btc) +{ + struct btc_coex_sta *coex_sta = &btc->coex_sta; + struct btc_wifi_link_info linfo; + struct btc_wifi_link_info_ext *linfo_ext = &btc->wifi_link_info_ext; + boolean bt_hi_lna_rx = FALSE; + + btc->btc_get(btc, BTC_GET_BL_WIFI_LINK_INFO, &linfo); + btc->wifi_link_info = linfo; + + /* true: bt use Hi-LNA rx gain table in -3x~-9xdBm for co-rx + * false: bt use original rx gain table + */ + if (linfo_ext->is_all_under_5g || btc->board_info.btdm_ant_num != 1 || + linfo.link_mode == BTC_LINK_NONE) + bt_hi_lna_rx = FALSE; + else + bt_hi_lna_rx = TRUE; + + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, + "[BTCoex], %s(): bt_hi_lna_rx = %d\n", + __func__, bt_hi_lna_rx); + BTC_TRACE(trace_buf); + + if (coex_sta->bt_hi_lna_rx == bt_hi_lna_rx) + return; + + coex_sta->bt_hi_lna_rx = bt_hi_lna_rx; + + if (btc->chip_para->scbd_bit_num == BTC_SCBD_16_BIT) + btc->btc_write_scbd(btc, BTC_SCBD_BT_HILNA, bt_hi_lna_rx); + else + btc->btc_write_scbd_32bit(btc, BTC_SCBD_BT_HILNA, bt_hi_lna_rx); +} + static void rtw_btc_set_rf_para(struct btc_coexist *btc, boolean force_exec, struct btc_rf_para para) { struct btc_coex_sta *coex_sta = &btc->coex_sta; - u8 tmp = 0; + struct btc_coex_dm *coex_dm = &btc->coex_dm; + u8 tmp = 0, lna2_level = 0; if (coex_sta->coex_freerun) { if (coex_sta->cnt_wl[BTC_CNT_WL_SCANAP] <= 5) tmp = 3; } + /* fix LNA2 + TIA gain not change by GNT_BT */ + if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ + if (coex_sta->bt_profile_num == 0) { + lna2_level = 0; + } else { + lna2_level = 1; + } + } else { /* Non-Shared-Ant */ + if (coex_sta->coex_freerun) { + lna2_level = 1; + } else { + lna2_level = 0; + } + } + + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, + "[BTCoex], %s(): lna2 level = %d\n", + __func__, lna2_level); + BTC_TRACE(trace_buf); + rtw_btc_set_wl_tx_power(btc, force_exec, para.wl_pwr_dec_lvl); rtw_btc_set_bt_tx_power(btc, force_exec, para.bt_pwr_dec_lvl + tmp); - rtw_btc_set_wl_rx_gain(btc, force_exec, para.wl_low_gain_en); + rtw_btc_set_wl_rx_gain(btc, force_exec, para.wl_low_gain_en, lna2_level); rtw_btc_set_bt_rx_gain(btc, force_exec, para.bt_lna_lvl); } @@ -1655,18 +1757,32 @@ void rtw_btc_tdma(struct btc_coexist *btc, boolean force_exec, u32 tcase) "[BTCoex], ***** TDMA - %d *****\n", type); BTC_TRACE(trace_buf); - /* TRUE -> Page scan > ACL */ - if (!wifi_busy || - (coex_sta->bt_a2dp_exist && coex_sta->bt_inq_page_remain)) { - if (chip_para->scbd_bit_num == BTC_SCBD_16_BIT) - btc->btc_write_scbd(btc, BTC_SCBD_TDMA, FALSE); - else - btc->btc_write_scbd_32bit(btc, BTC_SCBD_TDMA, FALSE); + if (chip_para->new_scbd9_def) { + if (turn_on) { + if (chip_para->scbd_bit_num == BTC_SCBD_16_BIT) + btc->btc_write_scbd(btc, BTC_SCBD_TDMA, TRUE); + else + btc->btc_write_scbd_32bit(btc, BTC_SCBD_TDMA, TRUE); + } else { + if (chip_para->scbd_bit_num == BTC_SCBD_16_BIT) + btc->btc_write_scbd(btc, BTC_SCBD_TDMA, FALSE); + else + btc->btc_write_scbd_32bit(btc, BTC_SCBD_TDMA, FALSE); + } } else { - if (chip_para->scbd_bit_num == BTC_SCBD_16_BIT) - btc->btc_write_scbd(btc, BTC_SCBD_TDMA, TRUE); - else - btc->btc_write_scbd_32bit(btc, BTC_SCBD_TDMA, TRUE); + /* TRUE -> Page scan > ACL */ + if (!wifi_busy || !coex_sta->wl_gl_busy || + (coex_sta->bt_a2dp_exist && coex_sta->bt_inq_page_remain)) { + if (chip_para->scbd_bit_num == BTC_SCBD_16_BIT) + btc->btc_write_scbd(btc, BTC_SCBD_TDMA, FALSE); + else + btc->btc_write_scbd_32bit(btc, BTC_SCBD_TDMA, FALSE); + } else { + if (chip_para->scbd_bit_num == BTC_SCBD_16_BIT) + btc->btc_write_scbd(btc, BTC_SCBD_TDMA, TRUE); + else + btc->btc_write_scbd_32bit(btc, BTC_SCBD_TDMA, TRUE); + } } if (btc->board_info.btdm_ant_num == 1) { @@ -2334,10 +2450,7 @@ static void rtw_btc_action_bt_relink(struct btc_coexist *btc) tdma_case = 0; } } else { /* Non-Shared-Ant */ - if (coex_sta->wl_gl_busy) - table_case = 115; - else - table_case = 100; + table_case = 100; tdma_case = 100; if (coex_sta->wl_gl_busy && @@ -2403,13 +2516,14 @@ static void rtw_btc_action_bt_idle(struct btc_coexist *btc) table_case = 26; tdma_case = 7; } else if (coex_dm->bt_status == BTC_BTSTATUS_NCON_IDLE) { - table_case = 11; - if (coex_sta->bt_ctr_ok && - (coex_sta->lo_pri_rx + coex_sta->lo_pri_tx > 250)) - tdma_case = 17; - else - tdma_case = 7; + (coex_sta->lo_pri_rx + coex_sta->lo_pri_tx > 250)) { + table_case = 11; + tdma_case = 19; + } else { + table_case = 37; + tdma_case = 0; + } } else { table_case = 12; tdma_case = 7; @@ -2554,17 +2668,12 @@ static void rtw_btc_action_bt_hfp(struct btc_coexist *btc) table_case = 33; tdma_case = 0; } else { - table_case = 10; - tdma_case = 5; + table_case = 36; + tdma_case = 0; } } else { /* Non-Shared-Ant */ - if (coex_sta->bt_multi_link) { - table_case = 112; - tdma_case = 117; - } else { - table_case = 105; - tdma_case = 100; - } + table_case = 105; + tdma_case = 100; } rtw_btc_table(btc, NM_EXCU, table_case); @@ -2623,8 +2732,8 @@ static void rtw_btc_action_bt_hid(struct btc_coexist *btc) tdma_case = 27; } else if (coex_sta->bt_ble_hid_exist && coex_sta->wl_gl_busy) { - table_case = 32; - tdma_case = 9; + table_case = 36; + tdma_case = 0; } else { table_case = 9; tdma_case = 9; @@ -2952,6 +3061,57 @@ static void rtw_btc_action_bt_a2dp_pan_hid(struct btc_coexist *btc) rtw_btc_tdma(btc, NM_EXCU, tdma_case); } +static void rtw_btc_action_bt_BIS(struct btc_coexist *btc) +{ + struct btc_coex_sta *coex_sta = &btc->coex_sta; + u8 table_case, tdma_case; + + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, "[BTCoex], %s()\n", __func__); + BTC_TRACE(trace_buf); + + rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); + rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); + + if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ + coex_sta->wl_coex_mode = BTC_WLINK_2GFREE; + table_case = 39; + tdma_case = 0; +#if 0 + /* TDMA by wifi fw */ + table_case = 38; + tdma_case = 28; +#endif + } else { /* Non-Shared-Ant */ + table_case = 100; + tdma_case = 100; + } + + rtw_btc_table(btc, NM_EXCU, table_case); + rtw_btc_tdma(btc, NM_EXCU, tdma_case); +} + +static void rtw_btc_action_bt_CIS(struct btc_coexist *btc) +{ + struct btc_coex_sta *coex_sta = &btc->coex_sta; + u8 table_case, tdma_case; + + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, "[BTCoex], %s()\n", __func__); + BTC_TRACE(trace_buf); + + rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); + rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); + if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ + table_case = 36; + tdma_case = 0; + } else { /* Non-Shared-Ant */ + table_case = 100; + tdma_case = 100; + } + + rtw_btc_table(btc, NM_EXCU, table_case); + rtw_btc_tdma(btc, NM_EXCU, tdma_case); +} + static void rtw_btc_action_wl_off(struct btc_coexist *btc) { const struct btc_chip_para *chip_para = btc->chip_para; @@ -3073,7 +3233,11 @@ static void rtw_btc_action_wl_linkscan(struct btc_coexist *btc) } else if (coex_sta->bt_a2dp_exist) { slot_type = TDMA_4SLOT; table_case = 9; - tdma_case = 11; + if (coex_sta->bt_a2dp_sink) { + tdma_case = 10; + } else { + tdma_case = 11; + } } else if (coex_sta->bt_hid_exist) { if (link_info_ext->is_connected) { table_case = 36; @@ -3090,9 +3254,8 @@ static void rtw_btc_action_wl_linkscan(struct btc_coexist *btc) table_case = 124; tdma_case = 108; } else if (coex_sta->bt_a2dp_exist) { - slot_type = TDMA_4SLOT; - table_case = 124; - tdma_case = 126; + table_case = 100; + tdma_case = 100; } else { table_case = 112; tdma_case = 107; @@ -3147,15 +3310,28 @@ static void rtw_btc_action_wl_connected(struct btc_coexist *btc) BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, "[BTCoex], %s()\n", __func__); BTC_TRACE(trace_buf); - /*Leap-AP protection will reopen when connecting AP*/ - rtw_btc_wl_leakap(btc, TRUE); - if ((btc->board_info.btdm_ant_num == 2) && (btc->board_info.ext_chip_id != BTC_EXT_CHIP_NONE)) { rtw_btc_action_ext_chip(btc); return; } + if (coex_sta->bt_le_audio_BIS) { + if (rtw_btc_freerun_check(btc)) + rtw_btc_action_freerun(btc); + else + rtw_btc_action_bt_BIS(btc); + return; + } + + if (coex_sta->bt_le_audio_CIS) { + if (rtw_btc_freerun_check(btc)) + rtw_btc_action_freerun(btc); + else + rtw_btc_action_bt_CIS(btc); + return; + } + algorithm = rtw_btc_algorithm(btc); switch (algorithm) { @@ -3426,14 +3602,7 @@ static void rtw_btc_action_wl_p2p2g(struct btc_coexist *btc) case BTC_LINK_ONLY_GO: case BTC_LINK_ONLY_GC: rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); -#ifdef PLATFORM_WINDOWS - if (btc->chip_interface == BTC_INTF_PCI && - coex_sta->bt_a2dp_exist && !coex_sta->bt_multi_link) - table_case = 3; - else -#endif - table_case = 2; - + table_case = 3; tdma_case = 0; break; default: @@ -3602,6 +3771,14 @@ exit: rtw_btc_gnt_workaround(btc, NM_EXCU, coex_sta->wl_coex_mode); rtw_btc_limited_wl(btc); + rtw_btc_set_bt_rx_agc(btc); + + if (reason == BTC_RSN_2GMEDIA) { + /*Leap-AP protection will reopen when connecting AP*/ + rtw_btc_wl_leakap(btc, TRUE); + } + + } static void rtw_btc_init_coex_var(struct btc_coexist *btc) @@ -3733,7 +3910,7 @@ void rtw_btc_ex_power_on_setting(struct btc_coexist *btc) /* SD1 Chunchu red x issue */ btc->btc_write_1byte(btc, 0xff1a, 0x0); - rtw_btc_gnt_debug(btc, TRUE); + rtw_btc_gnt_debug(btc, FALSE); board_info->btdm_ant_pos = BTC_ANTENNA_AT_MAIN_PORT; } @@ -3936,25 +4113,25 @@ void rtw_btc_ex_display_coex_info(struct btc_coexist *btc) coex_sta->bt_slave_latency = FALSE; } - if (strcmp(btc->chip_para->chip_name, "8723f") == 0) { - /*8723f cannot read ae because ALIGNMENT_UNIT = 4byte - 8723f should read bt vendor reg 0xdac*/ - if (coex_sta->bt_reg_vendor_dac == 0xffffffff) { - val = btc->btc_get_bt_reg(btc, 3, 0xdac); - coex_sta->bt_reg_vendor_dac = val; - } - } else { - if (coex_sta->bt_reg_vendor_ac == 0xffff) { - val = btc->btc_get_bt_reg(btc, 3, 0xac); - coex_sta->bt_reg_vendor_ac = (u16)(val & 0xffff); - } - - if (coex_sta->bt_reg_vendor_ae == 0xffff) { - val = btc->btc_get_bt_reg(btc, 3, 0xae); - coex_sta->bt_reg_vendor_ae = (u16)(val & 0xffff); - } + /* COEX-731: 8723f/8822e need to match bt fw version + * to avoid 4 byte alignment issue + */ + if (coex_sta->bt_reg_vendor_dae == 0xffff) { + val = btc->btc_get_bt_reg(btc, 3, 0xdae); + coex_sta->bt_reg_vendor_dae = (u16)(val & 0xffff); } + if (coex_sta->bt_reg_vendor_ac == 0xffff) { + val = btc->btc_get_bt_reg(btc, 3, 0xac); + coex_sta->bt_reg_vendor_ac = (u16)(val & 0xffff); + } + + if (coex_sta->bt_reg_vendor_ae == 0xffff) { + val = btc->btc_get_bt_reg(btc, 3, 0xae); + coex_sta->bt_reg_vendor_ae = (u16)(val & 0xffff); + } + + val = btc->btc_get_bt_reg(btc, 4, 0x200); coex_sta->bt_reg_le_200 = (u16)(val & 0xffff); @@ -4043,7 +4220,7 @@ void rtw_btc_ex_display_coex_info(struct btc_coexist *btc) if (coex_sta->bt_profile_num != 0) { CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, - "\r\n %-35s = %s%s%s%s%s%s (multilink = %d)", + "\r\n %-35s = %s%s%s%s%s%s%s%s (multilink = %d)", "Profiles", ((coex_sta->bt_a2dp_exist) ? ((coex_sta->bt_a2dp_sink) ? "A2DP sink," : "A2DP,") : ""), @@ -4056,6 +4233,8 @@ void rtw_btc_ex_display_coex_info(struct btc_coexist *btc) ((coex_sta->bt_opp_exist) ? "OPP," : "PAN,") : ""), ((coex_sta->bt_ble_voice) ? "Voice," : ""), ((coex_sta->bt_msft_mr_exist) ? "MR" : ""), + ((coex_sta->bt_le_audio_BIS) ? "BIS," : ""), + ((coex_sta->bt_le_audio_CIS) ? "CIS," : ""), coex_sta->bt_multi_link); CL_PRINTF(cli_buf); @@ -4138,19 +4317,20 @@ void rtw_btc_ex_display_coex_info(struct btc_coexist *btc) if (coex_sta->bt_reg_vendor_ae != 0xffff || coex_sta->bt_reg_vendor_ac != 0xffff || - coex_sta->bt_reg_vendor_dac != 0xffffffff) { + coex_sta->bt_reg_vendor_dae != 0xffff) { CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x/ 0x%x/ %s", - "ae/ac/dac/m_a[8:6]/ScBd(B->W)/path", + "ae/ac/dae/m_a[8:6]/ScBd(B->W)/path", coex_sta->bt_reg_vendor_ae, coex_sta->bt_reg_vendor_ac, - coex_sta->bt_reg_vendor_dac, + coex_sta->bt_reg_vendor_dae, coex_sta->bt_reg_modem_a, ((chip_para->scbd_bit_num == BTC_SCBD_16_BIT) ? btc->btc_read_scbd(btc, &scbd) : btc->btc_read_scbd_32bit(btc, &scbd_32)), - ((coex_sta->bt_reg_vendor_ae & BIT(4)) ? "S1" : "S0" - )); + ((strcmp(btc->chip_para->chip_name, "8822c") == 0) ? + ((coex_sta->bt_reg_vendor_ae & BIT(4)) ? "S1" : "S0") : + ((coex_sta->bt_reg_vendor_dae & BIT(4)) ? "S1" : "S0"))); CL_PRINTF(cli_buf); CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, @@ -4161,7 +4341,7 @@ void rtw_btc_ex_display_coex_info(struct btc_coexist *btc) } else { CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = x/ x/ x/ 0x%x", - "0xae[4]/0xac[1:0]/0xdac/ScBd(B->W)", + "0xae[4]/0xac[1:0]/0xdae/ScBd(B->W)", ((chip_para->scbd_bit_num == BTC_SCBD_16_BIT) ? btc->btc_read_scbd(btc, &scbd) : btc->btc_read_scbd_32bit(btc, &scbd_32))); @@ -4209,6 +4389,25 @@ void rtw_btc_ex_display_coex_info(struct btc_coexist *btc) } } + if (chip_para->le_audio_support) { + for (i = 0; i < BTC_BT_LE_AUDIO_INFO_SRC_MAX; i++) { + if (coex_sta->cnt_bt_le_audio_info_c2h[i]) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %02x %02x %02x %02x %02x %02x %02x (%d)", + glbt_le_audio_info_src[i], + coex_sta->bt_le_audio_info_c2h[i][0], + coex_sta->bt_le_audio_info_c2h[i][1], + coex_sta->bt_le_audio_info_c2h[i][2], + coex_sta->bt_le_audio_info_c2h[i][3], + coex_sta->bt_le_audio_info_c2h[i][4], + coex_sta->bt_le_audio_info_c2h[i][5], + coex_sta->bt_le_audio_info_c2h[i][6], + coex_sta->cnt_bt_le_audio_info_c2h[i]); + CL_PRINTF(cli_buf); + } + } + } + if (btc->manual_control) { CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[mechanisms] (under Manual)============"); @@ -4302,6 +4501,12 @@ void rtw_btc_ex_display_coex_info(struct btc_coexist *btc) coex_dm->cur_bt_lna_lvl); CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %s", + "WL_lna2_Lvl/BT_lna_rx", + coex_dm->lna2_level, + ((coex_sta->bt_hi_lna_rx) ? "High" : "Org")); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %s", "MIMO_PS On/Recover/BlackAP", coex_sta->cnt_wl[BTC_CNT_WL_2G_FDDSTAY], @@ -4854,7 +5059,7 @@ void rtw_btc_ex_bt_info_notify(struct btc_coexist *btc, u8 *tmp_buf, u8 length) if (rsp_source >= BTC_BTINFO_SRC_MAX) return; - /* COEX-649, prevent TDMA parametet change in LeisurePSEnter()*/ + /* COEX-649, prevent TDMA parameter change in LeisurePSEnter()*/ if (coex_sta->wl_in_lps_enter) { BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, "[BTCoex], %s(): wl_in_LPSenter = %d\n", @@ -5150,6 +5355,101 @@ void rtw_btc_ex_bt_info_notify(struct btc_coexist *btc, u8 *tmp_buf, u8 length) rtw_btc_update_bt_link_info(btc); + /* COEX-649, prevent TDMA parameter change in LeisurePSEnter()*/ + if (!coex_sta->wl_in_lps_enter) + rtw_btc_run_coex(btc, BTC_RSN_BTINFO); +} + +void rtw_btc_ex_bt_le_audio_info_notify(struct btc_coexist *btc, u8 *tmp_buf, u8 length) +{ + struct btc_coex_sta *coex_sta = &btc->coex_sta; + u8 rsp_source = 0, i = 0; + + rsp_source = tmp_buf[0] & 0xf; + if (rsp_source >= BTC_BT_LE_AUDIO_INFO_SRC_MAX) + return; + + /* COEX-649, prevent TDMA parameter change in LeisurePSEnter()*/ + if (coex_sta->wl_in_lps_enter) { + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, + "[BTCoex], %s(): wl_in_LPSenter = %d\n", + __func__, coex_sta->wl_in_lps_enter); + BTC_TRACE(trace_buf); + } + + coex_sta->cnt_bt_le_audio_info_c2h[rsp_source]++; + + if (rsp_source == BTC_BT_LE_AUDIO_INFO_SRC_BT_RSP || + rsp_source == BTC_BT_LE_AUDIO_INFO_SRC_BT_ACT) { + if (coex_sta->bt_disabled) { + coex_sta->bt_disabled = FALSE; + coex_sta->bt_reenable = TRUE; + btc->btc_set_timer(btc, BTC_TIMER_BT_REENABLE, 15); + + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, + "[BTCoex], %s(): BT enable detected by bt_info\n", + __func__); + BTC_TRACE(trace_buf); + } + } + + if (length != 7) { + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, + "[BTCoex], %s(): Bt_le_audio_info length = %d invalid!!\n", + __func__, length); + BTC_TRACE(trace_buf); + return; + } + + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, + "[BTCoex], %s(): Bt_le_audio_info[%d], len=%d, data=[%02x %02x %02x %02x %02x %02x]\n", + __func__, tmp_buf[0], length, tmp_buf[1], tmp_buf[2], + tmp_buf[3], tmp_buf[4], tmp_buf[5], tmp_buf[6]); + BTC_TRACE(trace_buf); + + for (i = 0; i < 7; i++) + coex_sta->bt_le_audio_info_c2h[rsp_source][i] = tmp_buf[i]; + + if (coex_sta->bt_le_audio_info_c2h[rsp_source][1] == coex_sta->bt_le_audio_info_lb2 && + coex_sta->bt_le_audio_info_c2h[rsp_source][2] == coex_sta->bt_le_audio_info_lb3 && + coex_sta->bt_le_audio_info_c2h[rsp_source][3] == coex_sta->bt_le_audio_info_hb0 && + coex_sta->bt_le_audio_info_c2h[rsp_source][4] == coex_sta->bt_le_audio_info_hb1 && + coex_sta->bt_le_audio_info_c2h[rsp_source][5] == coex_sta->bt_le_audio_info_hb2 && + coex_sta->bt_le_audio_info_c2h[rsp_source][6] == coex_sta->bt_le_audio_info_hb3) { + BTC_SPRINTF(trace_buf, BT_TMP_BUF_SIZE, + "[BTCoex], Return because Bt le audio info duplicate!!\n"); + BTC_TRACE(trace_buf); + return; + } + + coex_sta->bt_le_audio_info_lb2 = coex_sta->bt_le_audio_info_c2h[rsp_source][1]; + coex_sta->bt_le_audio_info_lb3 = coex_sta->bt_le_audio_info_c2h[rsp_source][2]; + coex_sta->bt_le_audio_info_hb0 = coex_sta->bt_le_audio_info_c2h[rsp_source][3]; + coex_sta->bt_le_audio_info_hb1 = coex_sta->bt_le_audio_info_c2h[rsp_source][4]; + coex_sta->bt_le_audio_info_hb2 = coex_sta->bt_le_audio_info_c2h[rsp_source][5]; + coex_sta->bt_le_audio_info_hb3 = coex_sta->bt_le_audio_info_c2h[rsp_source][6]; + + /* ========== BT LE audio info Low-Byte2 ========== */ + coex_sta->bt_le_audio_exist = + ((coex_sta->bt_le_audio_info_lb2 & BIT(0)) == BIT(0)); + + coex_sta->bt_le_audio_BIS = + ((coex_sta->bt_le_audio_info_lb2 & BIT(1)) == BIT(1)); + + coex_sta->bt_le_audio_CIS = + ((coex_sta->bt_le_audio_info_lb2 & BIT(2)) == BIT(2)); + + /* ========== BT info Low-Byte3 ========== */ + if (coex_sta->bt_le_audio_info_lb3 <= 127) + coex_sta->bt_le_audio_rssi = 100; + else if (256 - coex_sta->bt_le_audio_info_lb3 <= 100) + coex_sta->bt_le_audio_rssi = 100 - (256 - coex_sta->bt_le_audio_info_lb3); + else + coex_sta->bt_le_audio_rssi = 0; + + rtw_btc_update_bt_link_info(btc); + + /* COEX-649, prevent TDMA parameter change in LeisurePSEnter()*/ if (!coex_sta->wl_in_lps_enter) rtw_btc_run_coex(btc, BTC_RSN_BTINFO); } diff --git a/drivers/net/wireless/rtl8822cs/hal/btc/halbtccommon.h b/drivers/net/wireless/rtl8822cs/hal/btc/halbtccommon.h index 99b7af4c0..b600a04de 100644 --- a/drivers/net/wireless/rtl8822cs/hal/btc/halbtccommon.h +++ b/drivers/net/wireless/rtl8822cs/hal/btc/halbtccommon.h @@ -32,6 +32,7 @@ void rtw_btc_ex_connect_notify(struct btc_coexist *btc, u8 type); void rtw_btc_ex_media_status_notify(struct btc_coexist *btc, u8 type); void rtw_btc_ex_specific_packet_notify(struct btc_coexist *btc, u8 type); void rtw_btc_ex_bt_info_notify(struct btc_coexist *btc, u8 *tmp_buf, u8 length); +void rtw_btc_ex_bt_le_audio_info_notify(struct btc_coexist *btc, u8 *tmp_buf, u8 length); void rtw_btc_ex_wl_fwdbginfo_notify(struct btc_coexist *btc, u8 *tmp_buf, u8 length); void rtw_btc_ex_rx_rate_change_notify(struct btc_coexist *btc, @@ -68,6 +69,7 @@ void rtw_btc_ex_wl_rfk_notify(struct btc_coexist *btc, u8 path, #define rtw_btc_ex_media_status_notify(btc, type) #define rtw_btc_ex_specific_packet_notify(btc, type) #define rtw_btc_ex_bt_info_notify(btc, tmp_buf, length) +#define rtw_btc_ex_bt_le_audio_info_notify(btc, tmp_buf, length) #define rtw_btc_ex_wl_fwdbginfo_notify(btc, tmp_buf, length) #define rtw_btc_ex_rx_rate_change_notify(btc, is_data_frame, btc_rate_id) #define rtw_btc_ex_tx_rate_change_notify(btcoexist, tx_rate, tx_retry_ratio, \ diff --git a/drivers/net/wireless/rtl8822cs/hal/btc/halbtcoutsrc.h b/drivers/net/wireless/rtl8822cs/hal/btc/halbtcoutsrc.h index 90f58fef9..b938b8929 100644 --- a/drivers/net/wireless/rtl8822cs/hal/btc/halbtcoutsrc.h +++ b/drivers/net/wireless/rtl8822cs/hal/btc/halbtcoutsrc.h @@ -184,6 +184,7 @@ do {\ #define REG_CCK_CHECK 0x0454 #define REG_AMPDU_MAX_TIME_V1 0x0455 #define REG_TX_HANG_CTRL 0x045E +#define REG_TX_HANG_CTRL_OPT 0x04FC #define REG_LIFETIME_EN 0x0426 #define REG_BT_COEX_TABLE0 0x06C0 #define REG_BT_COEX_TABLE1 0x06C4 @@ -194,6 +195,7 @@ do {\ #define REG_BT_STAT_CTRL 0x0778 #define BIT_EN_GNT_BT_AWAKE BIT(3) +#define BIT_GNT_BT_OPT BIT(0) #define BIT_EN_BCN_FUNCTION BIT(3) #define BIT_EN_BCN_PKT_REL BIT(6) #define BIT_FEN_BB_GLB_RST BIT(1) @@ -244,6 +246,7 @@ typedef enum _BTC_CHIP_TYPE { BTC_CHIP_RTL8703B = 11, BTC_CHIP_RTL8725A = 12, BTC_CHIP_RTL8723F = 13, + BTC_CHIP_RTL8822E = 14, BTC_CHIP_MAX } BTC_CHIP_TYPE, *PBTC_CHIP_TYPE; @@ -265,6 +268,12 @@ static const char *const glbt_info_src[] = { "BT Info[bt auto report]", }; +static const char *const glbt_le_audio_info_src[] = { + "BT LE audio Info[wifi fw]", + "BT LE audio Info[bt rsp]", + "BT LE audio Info[bt auto report]" +}; + #define BTC_INFO_FTP BIT(7) #define BTC_INFO_A2DP BIT(6) #define BTC_INFO_HID BIT(5) @@ -336,6 +345,13 @@ enum btc_btinfo_src { BTC_BTINFO_SRC_MAX }; +enum btc_bt_le_audio_info_src { + BTC_BT_LE_AUDIO_INFO_SRC_WL_FW = 0x0, + BTC_BT_LE_AUDIO_INFO_SRC_BT_RSP = 0x1, + BTC_BT_LE_AUDIO_INFO_SRC_BT_ACT = 0x2, + BTC_BT_LE_AUDIO_INFO_SRC_MAX +}; + enum btc_bt_profile { BTC_BTPROFILE_NONE = 0, BTC_BTPROFILE_HFP = BIT(0), @@ -371,6 +387,7 @@ enum btc_bt_status { BTC_BTSTATUS_ACL_BUSY = 0x3, BTC_BTSTATUS_SCO_BUSY = 0x4, BTC_BTSTATUS_ACL_SCO_BUSY = 0x5, + BTC_BTSTATUS_LE_AUDIO_BUSY = 0x6, BTC_BTSTATUS_MAX }; @@ -381,6 +398,8 @@ static const char *const bt_status_string[] = { "BT ACL-busy", "BT SCO-busy", "BT ACL-SCO-busy", + "BT LE-audio-BIS-busy", + "BT LE-audio-CIS-busy", "BT Non-Defined-state" }; @@ -463,6 +482,7 @@ enum btc_wl2bt_scoreboard { BTC_SCBD_EXTFEM = BIT(8), BTC_SCBD_TDMA = BIT(9), BTC_SCBD_FIX2M = BIT(10), + BTC_SCBD_BT_HILNA = BIT(13), BTC_SCBD_MAILBOX_DBG = BIT(14), BTC_SCBD_ALL = 0xffff, BTC_SCBD_ALL_32BIT = 0xffffffff @@ -702,6 +722,16 @@ enum btc_wl_rfk_state { BTC_RFK_STATE_MAX }; +enum { + BTC_BT_SS_GROUP_NON_SHARED_ANT = 0x0, + BTC_BT_TX_GROUP_NON_SHARED_ANT = 0x1, + BTC_BT_RX_GROUP_NON_SHARED_ANT = 0x2, + BTC_BT_SS_GROUP_SHARED_ANT = 0x3, + BTC_BT_TX_GROUP_SHARED_ANT = 0x4, + BTC_BT_RX_GROUP_SHARED_ANT = 0x5, + BTC_BT_MAX_GROUP +}; + struct btc_board_info { /* The following is some board information */ u8 bt_chip_type; @@ -748,6 +778,7 @@ struct btc_coex_dm { u8 cur_toggle_para[6]; u8 bt_slot_length1[10]; u8 bt_slot_length2[10]; + u8 lna2_level; u32 cur_ant_pos_type; u32 cur_switch_status; u32 setting_tdma; @@ -796,6 +827,10 @@ struct btc_coex_sta { boolean bt_ble_hid_exist; boolean bt_mesh; boolean bt_ctr_ok; + boolean bt_hi_lna_rx; + boolean bt_le_audio_exist; + boolean bt_le_audio_BIS; + boolean bt_le_audio_CIS; boolean wl_under_lps; boolean wl_in_lps_enter; @@ -831,15 +866,23 @@ struct btc_coex_sta { u8 gnt_workaround_state; u8 tdma_timer_base; u8 bt_rssi; + u8 bt_le_audio_rssi; u8 bt_profile_num; u8 bt_profile_num_pre; u8 bt_info_c2h[BTC_BTINFO_SRC_MAX][BTC_BTINFO_LENGTH_MAX]; + u8 bt_le_audio_info_c2h[BTC_BT_LE_AUDIO_INFO_SRC_MAX][BTC_BTINFO_LENGTH_MAX]; u8 bt_info_lb2; u8 bt_info_lb3; u8 bt_info_hb0; u8 bt_info_hb1; u8 bt_info_hb2; u8 bt_info_hb3; + u8 bt_le_audio_info_lb2; + u8 bt_le_audio_info_lb3; + u8 bt_le_audio_info_hb0; + u8 bt_le_audio_info_hb1; + u8 bt_le_audio_info_hb2; + u8 bt_le_audio_info_hb3; u8 bt_ble_scan_type; u8 bt_afh_map[10]; u8 bt_a2dp_vendor_id; @@ -874,7 +917,7 @@ struct btc_coex_sta { u32 score_board_WB; u16 bt_reg_vendor_ac; u16 bt_reg_vendor_ae; - u32 bt_reg_vendor_dac; + u16 bt_reg_vendor_dae; u16 bt_reg_modem_a; u16 bt_reg_rf_2; u16 bt_reg_rf_9; @@ -897,6 +940,7 @@ struct btc_coex_sta { u32 wl_traffic_dir; u32 wl_bw; u32 cnt_bt_info_c2h[BTC_BTINFO_SRC_MAX]; + u32 cnt_bt_le_audio_info_c2h[BTC_BT_LE_AUDIO_INFO_SRC_MAX]; u32 cnt_bt[BTC_CNT_BT_MAX]; u32 cnt_wl[BTC_CNT_WL_MAX]; u32 cnt_timer[BTC_TIMER_MAX]; @@ -930,6 +974,7 @@ struct btc_wifi_link_info_ext { boolean is_4way; boolean is_32k; boolean is_connected; + boolean is_port_num_change; u8 num_of_active_port; u32 port_connect_status; u32 traffic_dir; @@ -1668,6 +1713,12 @@ typedef VOID IN u1Byte type ); +typedef VOID +(*BTC_PHYDM_SET_AGC_TBL)( + IN PVOID pDM_Odm, + IN BOOLEAN bt_is_linked + ); + typedef u1Byte (*BFP_BTC_GET_ANT_DET_VAL_FROM_BT)( @@ -1772,6 +1823,7 @@ struct btc_statistics { u32 cnt_media_status_notify; u32 cnt_specific_packet_notify; u32 cnt_bt_info_notify; + u32 cnt_bt_le_audio_info_notify; u32 cnt_rf_status_notify; u32 cnt_periodical; u32 cnt_coex_dm_switch; @@ -1865,6 +1917,7 @@ struct btc_coexist { BTC_PHYDM_CMNINFOQUERY btc_phydm_query_PHY_counter; BTC_REDUCE_WL_TX_POWER btc_reduce_wl_tx_power; BTC_PHYDM_MODIFY_ANTDIV_HWSW btc_phydm_modify_antdiv_hwsw; + BTC_PHYDM_SET_AGC_TBL btc_phydm_set_agc_table; BFP_BTC_GET_ANT_DET_VAL_FROM_BT btc_get_ant_det_val_from_bt; BFP_BTC_GET_BLE_SCAN_TYPE_FROM_BT btc_get_ble_scan_type_from_bt; BFP_BTC_GET_BLE_SCAN_PARA_FROM_BT btc_get_ble_scan_para_from_bt; @@ -1942,8 +1995,10 @@ struct btc_chip_para { boolean scbd_support; u32 scbd_reg; u8 scbd_bit_num; + boolean le_audio_support; boolean mailbox_support; boolean lte_indirect_access; + boolean new_scbd9_def; /* TRUE: 1:TDMA on(8723f/8822e) */ boolean new_scbd10_def; /* TRUE: 1:fix 2M(8822c) */ u8 indirect_type; /* 0:17xx, 1:7cx */ u8 pstdma_type; /* 0: LPSoff, 1:LPSon */ @@ -2159,15 +2214,16 @@ EXhalbtcoutsrc_DisplayAntDetection( IN PBTC_COEXIST pBtCoexist ); -#define MASKBYTE0 0xff -#define MASKBYTE1 0xff00 -#define MASKBYTE2 0xff0000 -#define MASKBYTE3 0xff000000 +#define MASKBYTE0 0xff +#define MASKBYTE1 0xff00 +#define MASKBYTE2 0xff0000 +#define MASKBYTE3 0xff000000 #define MASKHWORD 0xffff0000 -#define MASKLWORD 0x0000ffff +#define MASKLWORD 0x0000ffff #define MASKDWORD 0xffffffff -#define MASK12BITS 0xfff -#define MASKH4BITS 0xf0000000 +#define MASK12BITS 0xfff +#define MASK20BITS 0xfffff +#define MASKH4BITS 0xf0000000 #define MASKOFDM_D 0xffc00000 #define MASKCCK 0x3f3f3f3f diff --git a/drivers/net/wireless/rtl8822cs/hal/btc/mp_precomp.h b/drivers/net/wireless/rtl8822cs/hal/btc/mp_precomp.h index 426454986..77f438046 100644 --- a/drivers/net/wireless/rtl8822cs/hal/btc/mp_precomp.h +++ b/drivers/net/wireless/rtl8822cs/hal/btc/mp_precomp.h @@ -133,6 +133,11 @@ struct btc_coexist; #include "halbtc8192f.h" #endif +#ifdef CONFIG_RTL8822E +#include "halbtc8822ewifionly.h" +#include "halbtc8822e.h" +#endif + #endif #include "halbtcoutsrc.h" @@ -163,6 +168,11 @@ struct btc_coexist; #include "halbtc8814bwifionly.h" #endif +#ifdef CONFIG_RTL8822E +#include "halbtc8822ewifionly.h" +#endif + + #endif /* CONFIG_BT_COEXIST */ #endif /* __MP_PRECOMP_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/hal/efuse/efuse_mask.h b/drivers/net/wireless/rtl8822cs/hal/efuse/efuse_mask.h index dc4fdce2b..9a53d830c 100644 --- a/drivers/net/wireless/rtl8822cs/hal/efuse/efuse_mask.h +++ b/drivers/net/wireless/rtl8822cs/hal/efuse/efuse_mask.h @@ -80,6 +80,10 @@ #if defined(CONFIG_RTL8723F) #include "rtl8723f/HalEfuseMask8723F_USB.h" #endif + + #if defined(CONFIG_RTL8822E) + #include "rtl8822e/HalEfuseMask8822E_USB.h" + #endif #endif /*CONFIG_USB_HCI*/ #ifdef CONFIG_PCI_HCI @@ -131,6 +135,9 @@ #if defined(CONFIG_RTL8814B) #include "rtl8814b/HalEfuseMask8814B_PCIE.h" #endif + #if defined(CONFIG_RTL8822E) + #include "rtl8822e/HalEfuseMask8822E_PCIE.h" + #endif #endif /*CONFIG_PCI_HCI*/ #ifdef CONFIG_SDIO_HCI #if defined(CONFIG_RTL8723B) @@ -185,4 +192,8 @@ #if defined(CONFIG_RTL8723F) #include "rtl8723f/HalEfuseMask8723F_SDIO.h" #endif + + #if defined(CONFIG_RTL8822E) + #include "rtl8822e/HalEfuseMask8822E_SDIO.h" + #endif #endif /*CONFIG_SDIO_HCI*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_btcoex.c b/drivers/net/wireless/rtl8822cs/hal/hal_btcoex.c index 32ef8ec74..cb8a597b3 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_btcoex.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_btcoex.c @@ -375,8 +375,6 @@ void halbtcoutsrc_LeaveLowPower(PBTC_COEXIST pBtCoexist) { #ifdef CONFIG_LPS_LCLK PADAPTER padapter; - PHAL_DATA_TYPE pHalData; - struct pwrctrl_priv *pwrctrl; s32 ready; systime stime; s32 utime; @@ -384,8 +382,6 @@ void halbtcoutsrc_LeaveLowPower(PBTC_COEXIST pBtCoexist) padapter = pBtCoexist->Adapter; - pHalData = GET_HAL_DATA(padapter); - pwrctrl = adapter_to_pwrctl(padapter); ready = _FAIL; #ifdef LPS_RPWM_WAIT_MS timeout = LPS_RPWM_WAIT_MS; @@ -895,7 +891,6 @@ s32 halbtcoutsrc_GetWifiRssi(PADAPTER padapter) u32 halbtcoutsrc_GetBtCoexSupportedFeature(void *pBtcContext) { PBTC_COEXIST pBtCoexist; - u32 ret = BT_STATUS_BT_OP_SUCCESS; u32 data = 0; pBtCoexist = (PBTC_COEXIST)pBtcContext; @@ -912,13 +907,10 @@ u32 halbtcoutsrc_GetBtCoexSupportedFeature(void *pBtcContext) status = _btmpoper_cmd(pBtCoexist, op_code, 0, buf, 0); if (status == BT_STATUS_BT_OP_SUCCESS) data = le16_to_cpu(*(u16 *)GLBtcBtMpRptRsp); - else - ret = SET_BT_MP_OPER_RET(op_code, status); _exit_critical_mutex(&GLBtcBtMpOperLock, &irqL); - } else - ret = BT_STATUS_NOT_IMPLEMENT; + } return data; } @@ -926,7 +918,6 @@ u32 halbtcoutsrc_GetBtCoexSupportedFeature(void *pBtcContext) u32 halbtcoutsrc_GetBtCoexSupportedVersion(void *pBtcContext) { PBTC_COEXIST pBtCoexist; - u32 ret = BT_STATUS_BT_OP_SUCCESS; u32 data = 0xFFFF; pBtCoexist = (PBTC_COEXIST)pBtcContext; @@ -943,13 +934,10 @@ u32 halbtcoutsrc_GetBtCoexSupportedVersion(void *pBtcContext) status = _btmpoper_cmd(pBtCoexist, op_code, 0, buf, 0); if (status == BT_STATUS_BT_OP_SUCCESS) data = le16_to_cpu(*(u16 *)GLBtcBtMpRptRsp); - else - ret = SET_BT_MP_OPER_RET(op_code, status); _exit_critical_mutex(&GLBtcBtMpOperLock, &irqL); - } else - ret = BT_STATUS_NOT_IMPLEMENT; + } return data; } @@ -957,7 +945,6 @@ u32 halbtcoutsrc_GetBtCoexSupportedVersion(void *pBtcContext) u32 halbtcoutsrc_GetBtDeviceInfo(void *pBtcContext) { PBTC_COEXIST pBtCoexist; - u32 ret = BT_STATUS_BT_OP_SUCCESS; u32 btDeviceInfo = 0; pBtCoexist = (PBTC_COEXIST)pBtcContext; @@ -974,13 +961,10 @@ u32 halbtcoutsrc_GetBtDeviceInfo(void *pBtcContext) status = _btmpoper_cmd(pBtCoexist, op_code, 0, buf, 0); if (status == BT_STATUS_BT_OP_SUCCESS) btDeviceInfo = le32_to_cpu(*(u32 *)GLBtcBtMpRptRsp); - else - ret = SET_BT_MP_OPER_RET(op_code, status); _exit_critical_mutex(&GLBtcBtMpOperLock, &irqL); - } else - ret = BT_STATUS_NOT_IMPLEMENT; + } return btDeviceInfo; } @@ -988,7 +972,6 @@ u32 halbtcoutsrc_GetBtDeviceInfo(void *pBtcContext) u32 halbtcoutsrc_GetBtForbiddenSlotVal(void *pBtcContext) { PBTC_COEXIST pBtCoexist; - u32 ret = BT_STATUS_BT_OP_SUCCESS; u32 btForbiddenSlotVal = 0; pBtCoexist = (PBTC_COEXIST)pBtcContext; @@ -1005,13 +988,10 @@ u32 halbtcoutsrc_GetBtForbiddenSlotVal(void *pBtcContext) status = _btmpoper_cmd(pBtCoexist, op_code, 0, buf, 0); if (status == BT_STATUS_BT_OP_SUCCESS) btForbiddenSlotVal = le32_to_cpu(*(u32 *)GLBtcBtMpRptRsp); - else - ret = SET_BT_MP_OPER_RET(op_code, status); _exit_critical_mutex(&GLBtcBtMpOperLock, &irqL); - } else - ret = BT_STATUS_NOT_IMPLEMENT; + } return btForbiddenSlotVal; } @@ -1019,12 +999,10 @@ u32 halbtcoutsrc_GetBtForbiddenSlotVal(void *pBtcContext) static u8 halbtcoutsrc_GetWifiScanAPNum(PADAPTER padapter) { struct mlme_priv *pmlmepriv; - struct mlme_ext_priv *pmlmeext; static u8 scan_AP_num = 0; pmlmepriv = &padapter->mlmepriv; - pmlmeext = &padapter->mlmeextpriv; if (GLBtcWiFiInScanState == _FALSE) { if (pmlmepriv->num_of_scanned > 0xFF) @@ -1093,6 +1071,10 @@ u32 halbtcoutsrc_GetPhydmVersion(void *pBtcContext) return RELEASE_VERSION_8723F; #endif +#ifdef CONFIG_RTL8822E + return RELEASE_VERSION_8822E; +#endif + } u8 halbtcoutsrc_Get(void *pBtcContext, u8 getType, void *pOutBuf) @@ -1102,7 +1084,6 @@ u8 halbtcoutsrc_Get(void *pBtcContext, u8 getType, void *pOutBuf) PHAL_DATA_TYPE pHalData; struct mlme_ext_priv *mlmeext; struct btc_wifi_link_info *wifi_link_info; - u8 bSoftApExist, bVwifiExist; u8 *pu8; s32 *pS4Tmp; u32 *pU4Tmp; @@ -1118,8 +1099,6 @@ u8 halbtcoutsrc_Get(void *pBtcContext, u8 getType, void *pOutBuf) padapter = pBtCoexist->Adapter; pHalData = GET_HAL_DATA(padapter); mlmeext = &padapter->mlmeextpriv; - bSoftApExist = _FALSE; - bVwifiExist = _FALSE; pu8 = (u8 *)pOutBuf; pS4Tmp = (s32 *)pOutBuf; pU4Tmp = (u32 *)pOutBuf; @@ -1318,6 +1297,19 @@ u8 halbtcoutsrc_Get(void *pBtcContext, u8 getType, void *pOutBuf) *pU4Tmp = halbtcoutsrc_GetBtForbiddenSlotVal(pBtCoexist); break; +#if (CONFIG_BTCOEX_GET_IQK_CNT_FROM_IQK_INFO == 1) + case BTC_GET_U4_WIFI_IQK_TOTAL: + *pU4Tmp = pHalData->odmpriv.IQK_info.iqk_times; + break; + + case BTC_GET_U4_WIFI_IQK_OK: + *pU4Tmp = pHalData->odmpriv.IQK_info.kcount; + break; + + case BTC_GET_U4_WIFI_IQK_FAIL: + *pU4Tmp = pHalData->odmpriv.IQK_info.fail_count; + break; +#else case BTC_GET_U4_WIFI_IQK_TOTAL: *pU4Tmp = pHalData->odmpriv.n_iqk_cnt; break; @@ -1329,6 +1321,7 @@ u8 halbtcoutsrc_Get(void *pBtcContext, u8 getType, void *pOutBuf) case BTC_GET_U4_WIFI_IQK_FAIL: *pU4Tmp = pHalData->odmpriv.n_iqk_fail_cnt; break; +#endif case BTC_GET_U1_WIFI_DOT11_CHNL: *pU1Tmp = padapter->mlmeextpriv.cur_channel; @@ -1445,12 +1438,9 @@ u8 halbtcoutsrc_Set(void *pBtcContext, u8 setType, void *pInBuf) { PBTC_COEXIST pBtCoexist; PADAPTER padapter; - PHAL_DATA_TYPE pHalData; u8 *pu8; u8 *pU1Tmp; u16 *pU2Tmp; - u32 *pU4Tmp; - u8 ret; u8 result = _TRUE; @@ -1459,12 +1449,9 @@ u8 halbtcoutsrc_Set(void *pBtcContext, u8 setType, void *pInBuf) return _FALSE; padapter = pBtCoexist->Adapter; - pHalData = GET_HAL_DATA(padapter); pu8 = (u8 *)pInBuf; pU1Tmp = (u8 *)pInBuf; pU2Tmp = (u16*)pInBuf; - pU4Tmp = (u32 *)pInBuf; - ret = _TRUE; switch (setType) { /* set some u8 type variables. */ @@ -1518,14 +1505,6 @@ u8 halbtcoutsrc_Set(void *pBtcContext, u8 setType, void *pInBuf) break; /* the following are some action which will be triggered */ - case BTC_SET_ACT_GET_BT_RSSI: -#if 0 - BT_SendGetBtRssiEvent(padapter); -#else - ret = _FALSE; -#endif - break; - case BTC_SET_ACT_AGGREGATE_CTRL: halbtcoutsrc_AggregationCheck(pBtCoexist); break; @@ -1612,8 +1591,6 @@ u8 halbtcoutsrc_Set(void *pBtcContext, u8 setType, void *pInBuf) _rtw_memcpy(tmpBuf, pU1Tmp + 1, dataLen); BT_SendEventExtBtInfoControl(padapter, dataLen, &tmpBuf[0]); } -#else /* !CONFIG_BT_COEXIST_SOCKET_TRX */ - ret = _FALSE; #endif /* CONFIG_BT_COEXIST_SOCKET_TRX */ break; @@ -1626,23 +1603,8 @@ u8 halbtcoutsrc_Set(void *pBtcContext, u8 setType, void *pInBuf) _rtw_memcpy(tmpBuf, pU1Tmp + 1, dataLen); BT_SendEventExtBtCoexControl(padapter, _FALSE, dataLen, &tmpBuf[0]); } -#else /* !CONFIG_BT_COEXIST_SOCKET_TRX */ - ret = _FALSE; #endif /* CONFIG_BT_COEXIST_SOCKET_TRX */ break; - case BTC_SET_ACT_CTRL_8723B_ANT: -#if 0 - { - u8 dataLen = *pU1Tmp; - u8 tmpBuf[BTC_TMP_BUF_SHORT]; - if (dataLen) - PlatformMoveMemory(&tmpBuf[0], pU1Tmp + 1, dataLen); - BT_Set8723bAnt(Adapter, dataLen, &tmpBuf[0]); - } -#else - ret = _FALSE; -#endif - break; case BTC_SET_BL_BT_LNA_CONSTRAIN_LEVEL: halbtcoutsrc_LnaConstrainLvl(pBtCoexist, pu8); break; @@ -1681,8 +1643,9 @@ u8 halbtcoutsrc_Set(void *pBtcContext, u8 setType, void *pInBuf) } break; /* ===================== */ + case BTC_SET_ACT_GET_BT_RSSI: + case BTC_SET_ACT_CTRL_8723B_ANT: default: - ret = _FALSE; break; } @@ -2662,16 +2625,13 @@ void halbtcoutsrc_FillH2cCmd(void *pBtcContext, u8 elementId, u32 cmdLen, u8 *pC { PBTC_COEXIST pBtCoexist; PADAPTER padapter; - s32 ret = 0; pBtCoexist = (PBTC_COEXIST)pBtcContext; padapter = pBtCoexist->Adapter; - ret = rtw_hal_fill_h2c_cmd(padapter, elementId, cmdLen, pCmdBuffer); - #ifdef CONFIG_RTL8192F - if (ret == _SUCCESS) { + if (_SUCCESS == rtw_hal_fill_h2c_cmd(padapter, elementId, cmdLen, pCmdBuffer)) { switch (elementId) { case H2C_BT_INFO: case H2C_BT_IGNORE_WLANACT: @@ -2682,6 +2642,8 @@ void halbtcoutsrc_FillH2cCmd(void *pBtcContext, u8 elementId, u32 cmdLen, u8 *pC break; } } +#else + rtw_hal_fill_h2c_cmd(padapter, elementId, cmdLen, pCmdBuffer); #endif } @@ -2824,7 +2786,6 @@ u8 halbtcoutsrc_GetAntDetValFromBt(void *pBtcContext) u8 halbtcoutsrc_GetBleScanTypeFromBt(void *pBtcContext) { PBTC_COEXIST pBtCoexist; - u32 ret = BT_STATUS_BT_OP_SUCCESS; u8 data = 0; pBtCoexist = (PBTC_COEXIST)pBtcContext; @@ -2842,13 +2803,10 @@ u8 halbtcoutsrc_GetBleScanTypeFromBt(void *pBtcContext) status = _btmpoper_cmd(pBtCoexist, op_code, 0, buf, 0); if (status == BT_STATUS_BT_OP_SUCCESS) data = *(u8 *)GLBtcBtMpRptRsp; - else - ret = SET_BT_MP_OPER_RET(op_code, status); _exit_critical_mutex(&GLBtcBtMpOperLock, &irqL); - } else - ret = BT_STATUS_NOT_IMPLEMENT; + } return data; } @@ -2856,7 +2814,6 @@ u8 halbtcoutsrc_GetBleScanTypeFromBt(void *pBtcContext) u32 halbtcoutsrc_GetBleScanParaFromBt(void *pBtcContext, u8 scanType) { PBTC_COEXIST pBtCoexist; - u32 ret = BT_STATUS_BT_OP_SUCCESS; u32 data = 0; pBtCoexist = (PBTC_COEXIST)pBtcContext; @@ -2875,13 +2832,10 @@ u32 halbtcoutsrc_GetBleScanParaFromBt(void *pBtcContext, u8 scanType) status = _btmpoper_cmd(pBtCoexist, op_code, 0, buf, 1); if (status == BT_STATUS_BT_OP_SUCCESS) data = le32_to_cpu(*(u32 *)GLBtcBtMpRptRsp); - else - ret = SET_BT_MP_OPER_RET(op_code, status); _exit_critical_mutex(&GLBtcBtMpOperLock, &irqL); - } else - ret = BT_STATUS_NOT_IMPLEMENT; + } return data; } @@ -2987,13 +2941,23 @@ u32 halbtcoutsrc_phydm_query_PHY_counter(void *pBtcContext, u8 info_type) #endif } +void halbtcoutsrc_phydm_set_agc_table(void *pBtcContext, BOOLEAN bt_is_linked) +{ +#ifdef CONFIG_RTL8822E + struct btc_coexist *pBtCoexist = (struct btc_coexist *)pBtcContext; + + phydm_set_agc_table_8822e((struct dm_struct *)pBtCoexist->odm_priv, bt_is_linked); +#endif +} + void halbtcoutsrc_reduce_wl_tx_power(void *pBtcContext, s8 tx_power) { struct btc_coexist *pBtCoexist = (struct btc_coexist *)pBtcContext; HAL_DATA_TYPE *pHalData = GET_HAL_DATA((PADAPTER)pBtCoexist->Adapter); /* The reduction of wl tx pwr should be processed inside the set tx pwr lvl function */ - if (IS_HARDWARE_TYPE_8822C(pBtCoexist->Adapter) || IS_HARDWARE_TYPE_8723F(pBtCoexist->Adapter)) + if (IS_HARDWARE_TYPE_8822C(pBtCoexist->Adapter) || IS_HARDWARE_TYPE_8723F(pBtCoexist->Adapter) + || IS_HARDWARE_TYPE_8822E(pBtCoexist->Adapter)) rtw_hal_set_tx_power_level(pBtCoexist->Adapter, pHalData->current_channel); } @@ -3266,6 +3230,12 @@ u8 EXhalbtcoutsrc_BindBtCoexWithAdapter(void *padapter) pBtCoexist->chip_para = &btc_chip_para_8723f; } #endif +#endif +#ifdef CONFIG_RTL8822E + else if(IS_HARDWARE_TYPE_8822E(padapter)) { + pBtCoexist->chip_type = BTC_CHIP_RTL8822E; + pBtCoexist->chip_para = &btc_chip_para_8822e; + } #endif else { pBtCoexist->chip_type = BTC_CHIP_UNDEF; @@ -3374,6 +3344,7 @@ u8 EXhalbtcoutsrc_InitlizeVariables(void *padapter) pBtCoexist->btc_phydm_query_PHY_counter = halbtcoutsrc_phydm_query_PHY_counter; pBtCoexist->btc_reduce_wl_tx_power = halbtcoutsrc_reduce_wl_tx_power; pBtCoexist->btc_phydm_modify_antdiv_hwsw = halbtcoutsrc_phydm_modify_AntDiv_HwSw; + pBtCoexist->btc_phydm_set_agc_table = halbtcoutsrc_phydm_set_agc_table; pBtCoexist->cli_buf = &GLBtcDbgBuf[0]; @@ -3405,13 +3376,9 @@ u8 EXhalbtcoutsrc_InitlizeVariables(void *padapter) void EXhalbtcoutsrc_PowerOnSetting(PBTC_COEXIST pBtCoexist) { - HAL_DATA_TYPE *pHalData = NULL; - if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist)) return; - pHalData = GET_HAL_DATA((PADAPTER)pBtCoexist->Adapter); - #if (CONFIG_BTCOEX_SUPPORT_BTC_CMN == 1) rtw_btc_ex_power_on_setting(pBtCoexist); @@ -3451,7 +3418,13 @@ void EXhalbtcoutsrc_PowerOnSetting(PBTC_COEXIST pBtCoexist) #endif #ifdef CONFIG_RTL8822B - else if ((IS_HARDWARE_TYPE_8822B(pBtCoexist->Adapter)) && (pHalData->EEPROMBluetoothCoexist == _TRUE)) { + else if (IS_HARDWARE_TYPE_8822B(pBtCoexist->Adapter)) { + HAL_DATA_TYPE *pHalData = NULL; + + pHalData = GET_HAL_DATA((PADAPTER)pBtCoexist->Adapter); + if (pHalData->EEPROMBluetoothCoexist == _FALSE) + return; + if (pBtCoexist->board_info.btdm_ant_num == 1) ex_halbtc8822b1ant_power_on_setting(pBtCoexist); else if (pBtCoexist->board_info.btdm_ant_num == 2) @@ -3460,7 +3433,13 @@ void EXhalbtcoutsrc_PowerOnSetting(PBTC_COEXIST pBtCoexist) #endif #ifdef CONFIG_RTL8821C - else if ((IS_HARDWARE_TYPE_8821C(pBtCoexist->Adapter)) && (pHalData->EEPROMBluetoothCoexist == _TRUE)) { + else if (IS_HARDWARE_TYPE_8821C(pBtCoexist->Adapter)) { + HAL_DATA_TYPE *pHalData = NULL; + + pHalData = GET_HAL_DATA((PADAPTER)pBtCoexist->Adapter); + if (pHalData->EEPROMBluetoothCoexist == _FALSE) + return; + if (pBtCoexist->board_info.btdm_ant_num == 2) ex_halbtc8821c2ant_power_on_setting(pBtCoexist); else if (pBtCoexist->board_info.btdm_ant_num == 1) @@ -4486,6 +4465,18 @@ void EXhalbtcoutsrc_bt_info_notify(PBTC_COEXIST pBtCoexist, u8 *tmpBuf, u8 lengt /* halbtcoutsrc_NormalLowPower(pBtCoexist); */ } +void EXhalbtcoutsrc_bt_le_audio_info_notify(PBTC_COEXIST pBtCoexist, u8 *tmpBuf, u8 length) +{ +#if (CONFIG_BTCOEX_SUPPORT_BTC_CMN == 1) +#if (CONFIG_BTCOEX_SUPPORT_BT_LE_AUDIO == 1) + if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist)) + return; + + rtw_btc_ex_bt_le_audio_info_notify(pBtCoexist, tmpBuf, length); +#endif +#endif +} + void EXhalbtcoutsrc_WlFwDbgInfoNotify(PBTC_COEXIST pBtCoexist, u8* tmpBuf, u8 length) { if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist)) @@ -4523,6 +4514,40 @@ void EXhalbtcoutsrc_WlFwDbgInfoNotify(PBTC_COEXIST pBtCoexist, u8* tmpBuf, u8 le #endif } +void EXhalbtcoutsrc_tx_rate_change_notify(PBTC_COEXIST pBtCoexist, u8 btc_rate_id, u8 tx_retry_ratio, u8 macid) +{ + if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist)) + return; + +#if (CONFIG_BTCOEX_SUPPORT_BTC_CMN == 1) + rtw_btc_ex_tx_rate_change_notify(pBtCoexist, btc_rate_id, tx_retry_ratio, macid); +#else + +#ifdef CONFIG_RTL8822B + else if (IS_HARDWARE_TYPE_8822B(pBtCoexist->Adapter)) { + if (pBtCoexist->board_info.btdm_ant_num == 1) + ex_halbtc8822b1ant_tx_rate_change_notify(pBtCoexist, btc_rate_id, + tx_retry_ratio, macid); + else if (pBtCoexist->board_info.btdm_ant_num == 2) + ex_halbtc8822b2ant_tx_rate_change_notify(pBtCoexist, btc_rate_id, + tx_retry_ratio, macid); + } +#endif + +#ifdef CONFIG_RTL8821C + else if (IS_HARDWARE_TYPE_8821C(pBtCoexist->Adapter)) { + if (pBtCoexist->board_info.btdm_ant_num == 1) + ex_halbtc8821c1ant_tx_rate_change_notify(pBtCoexist, btc_rate_id, + tx_retry_ratio, macid); + else if (pBtCoexist->board_info.btdm_ant_num == 2) + ex_halbtc8821c2ant_tx_rate_change_notify(pBtCoexist, btc_rate_id, + tx_retry_ratio, macid); + } +#endif + +#endif +} + void EXhalbtcoutsrc_rx_rate_change_notify(PBTC_COEXIST pBtCoexist, u8 is_data_frame, u8 btc_rate_id) { if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist)) @@ -4533,29 +4558,56 @@ void EXhalbtcoutsrc_rx_rate_change_notify(PBTC_COEXIST pBtCoexist, u8 is_data_fr #if (CONFIG_BTCOEX_SUPPORT_BTC_CMN == 1) rtw_btc_ex_rx_rate_change_notify(pBtCoexist, is_data_frame, btc_rate_id); #else - - if (IS_HARDWARE_TYPE_8703B(pBtCoexist->Adapter)) { -#ifdef CONFIG_RTL8703B + if (IS_HARDWARE_TYPE_8821(pBtCoexist->Adapter)) { +#ifdef CONFIG_RTL8821A if (pBtCoexist->board_info.btdm_ant_num == 1) - ex_halbtc8703b1ant_rx_rate_change_notify(pBtCoexist, is_data_frame, btc_rate_id); + ex_halbtc8821a1ant_rx_rate_change_notify(pBtCoexist, is_data_frame, + btc_rate_id); + else if (pBtCoexist->board_info.btdm_ant_num == 2) + ex_halbtc8821a2ant_rx_rate_change_notify(pBtCoexist, is_data_frame, + btc_rate_id); #endif } +#ifdef CONFIG_RTL8703B + else if (IS_HARDWARE_TYPE_8703B(pBtCoexist->Adapter)) { + + if (pBtCoexist->board_info.btdm_ant_num == 1) + ex_halbtc8703b1ant_rx_rate_change_notify(pBtCoexist, is_data_frame, + btc_rate_id); + } +#endif + #ifdef CONFIG_RTL8723D else if (IS_HARDWARE_TYPE_8723D(pBtCoexist->Adapter)) { if (pBtCoexist->board_info.btdm_ant_num == 1) - ex_halbtc8723d1ant_rx_rate_change_notify(pBtCoexist, is_data_frame, btc_rate_id); + ex_halbtc8723d1ant_rx_rate_change_notify(pBtCoexist, is_data_frame, + btc_rate_id); else if (pBtCoexist->board_info.btdm_ant_num == 2) - ex_halbtc8723d2ant_rx_rate_change_notify(pBtCoexist, is_data_frame, btc_rate_id); + ex_halbtc8723d2ant_rx_rate_change_notify(pBtCoexist, is_data_frame, + btc_rate_id); + } +#endif + +#ifdef CONFIG_RTL8822B + else if (IS_HARDWARE_TYPE_8822B(pBtCoexist->Adapter)) { + if (pBtCoexist->board_info.btdm_ant_num == 1) + ex_halbtc8822b1ant_rx_rate_change_notify(pBtCoexist, is_data_frame, + btc_rate_id); + else if (pBtCoexist->board_info.btdm_ant_num == 2) + ex_halbtc8822b2ant_rx_rate_change_notify(pBtCoexist, is_data_frame, + btc_rate_id); } #endif #ifdef CONFIG_RTL8821C else if (IS_HARDWARE_TYPE_8821C(pBtCoexist->Adapter)) { if (pBtCoexist->board_info.btdm_ant_num == 1) - ex_halbtc8821c1ant_rx_rate_change_notify(pBtCoexist, is_data_frame, btc_rate_id); + ex_halbtc8821c1ant_rx_rate_change_notify(pBtCoexist, is_data_frame, + btc_rate_id); else if (pBtCoexist->board_info.btdm_ant_num == 2) - ex_halbtc8821c2ant_rx_rate_change_notify(pBtCoexist, is_data_frame, btc_rate_id); + ex_halbtc8821c2ant_rx_rate_change_notify(pBtCoexist, is_data_frame, + btc_rate_id); } #endif @@ -5806,7 +5858,7 @@ u8 EXhalbtcoutsrc_rate_id_to_btc_rate_id(u8 rate_id) btc_rate_id = BTC_VHT_4SS_MCS_9; break; } - + return btc_rate_id; } @@ -5900,7 +5952,7 @@ void hal_btcoex_PowerOffSetting(PADAPTER padapter) /* Clear the WiFi on/off bit in scoreboard reg. if necessary */ if (IS_HARDWARE_TYPE_8703B(padapter) || IS_HARDWARE_TYPE_8723D(padapter) || IS_HARDWARE_TYPE_8821C(padapter) || IS_HARDWARE_TYPE_8822B(padapter) - || IS_HARDWARE_TYPE_8822C(padapter)) + || IS_HARDWARE_TYPE_8822C(padapter) || IS_HARDWARE_TYPE_8822E(padapter)) rtw_write16(padapter, 0xaa, 0x8000); } @@ -5984,6 +6036,14 @@ void hal_btcoex_BtInfoNotify(PADAPTER padapter, u8 length, u8 *tmpBuf) EXhalbtcoutsrc_bt_info_notify(&GLBtCoexist, tmpBuf, length); } +void hal_btcoex_le_audio_info_notify(PADAPTER padapter, u8 length, u8 *tmpBuf) +{ + if (GLBtcWiFiInIQKState == _TRUE) + return; + + EXhalbtcoutsrc_bt_le_audio_info_notify(&GLBtCoexist, tmpBuf, length); +} + void hal_btcoex_BtMpRptNotify(PADAPTER padapter, u8 length, u8 *tmpBuf) { u8 extid, status, len, seq; @@ -6066,10 +6126,41 @@ void hal_btcoex_SwitchBtTRxMask(PADAPTER padapter) EXhalbtcoutsrc_SwitchBtTRxMask(&GLBtCoexist); } +static void hal_btcoex_trx_rate_info_notify(PADAPTER padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct dm_struct *podmpriv = adapter_to_phydm(padapter); + struct sta_info *psta = NULL; + struct ra_sta_info *ra_info = NULL; + u8 curr_tx_rate = 0, curr_rx_rate = 0; + + if (!MLME_IS_STA(padapter) || !MLME_IS_ASOC(padapter)) + return; + + psta = rtw_get_stainfo(&padapter->stapriv, get_my_bssid(&(pmlmeinfo->network))); + if (psta == NULL) + return; + + ra_info = &psta->cmn.ra_info; + curr_tx_rate = EXhalbtcoutsrc_rate_id_to_btc_rate_id(rtw_get_current_tx_rate(padapter, psta)); + curr_tx_rate |= (rtw_get_current_tx_sgi(padapter, psta) << 7); + + EXhalbtcoutsrc_tx_rate_change_notify(&GLBtCoexist, curr_tx_rate, + ra_info->curr_retry_ratio, + psta->cmn.mac_id); + + curr_rx_rate = EXhalbtcoutsrc_rate_id_to_btc_rate_id(podmpriv->rx_rate_plurality); + + EXhalbtcoutsrc_rx_rate_change_notify(&GLBtCoexist, _TRUE, curr_rx_rate); +} + void hal_btcoex_Hanlder(PADAPTER padapter) { u32 bt_patch_ver; + hal_btcoex_trx_rate_info_notify(padapter); + EXhalbtcoutsrc_periodical(&GLBtCoexist); if (GLBtCoexist.bt_info.bt_get_fw_ver == 0) { @@ -6630,11 +6721,6 @@ void hal_btcoex_WlFwDbgInfoNotify(PADAPTER padapter, u8* tmpBuf, u8 length) EXhalbtcoutsrc_WlFwDbgInfoNotify(&GLBtCoexist, tmpBuf, length); } -void hal_btcoex_rx_rate_change_notify(PADAPTER padapter, u8 is_data_frame, u8 rate_id) -{ - EXhalbtcoutsrc_rx_rate_change_notify(&GLBtCoexist, is_data_frame, EXhalbtcoutsrc_rate_id_to_btc_rate_id(rate_id)); -} - u16 hal_btcoex_btset_testode(PADAPTER padapter, u8 type) { u16 ret = 0; diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_btcoex_wifionly.c b/drivers/net/wireless/rtl8822cs/hal/hal_btcoex_wifionly.c index a9ef07f14..cc514fd6f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_btcoex_wifionly.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_btcoex_wifionly.c @@ -106,6 +106,9 @@ void halwifionly_phy_set_bb_reg(void *pwifionlyContext, u32 RegAddr, u32 BitMask void hal_btcoex_wifionly_switchband_notify(PADAPTER padapter) { +#ifdef CONFIG_RTL8723B + return; +#else HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); u8 is_5g = _FALSE; @@ -137,10 +140,20 @@ void hal_btcoex_wifionly_switchband_notify(PADAPTER padapter) else if (IS_HARDWARE_TYPE_8723F(padapter)) ex_hal8723f_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g); #endif + +#ifdef CONFIG_RTL8822E + else if (IS_HARDWARE_TYPE_8822E(padapter)) + ex_hal8822e_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g); +#endif + +#endif } void hal_btcoex_wifionly_scan_notify(PADAPTER padapter) { +#ifdef CONFIG_RTL8723B + return; +#else HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); u8 is_5g = _FALSE; @@ -167,10 +180,25 @@ void hal_btcoex_wifionly_scan_notify(PADAPTER padapter) else if (IS_HARDWARE_TYPE_8814B(padapter)) ex_hal8814b_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g); #endif + +#ifdef CONFIG_RTL8723F + else if (IS_HARDWARE_TYPE_8723F(padapter)) + ex_hal8723f_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g); +#endif + +#ifdef CONFIG_RTL8822E + else if (IS_HARDWARE_TYPE_8822E(padapter)) + ex_hal8822e_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g); +#endif + +#endif } void hal_btcoex_wifionly_connect_notify(PADAPTER padapter) { +#ifdef CONFIG_RTL8723B + return; +#else HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); u8 is_5g = _FALSE; @@ -202,6 +230,13 @@ void hal_btcoex_wifionly_connect_notify(PADAPTER padapter) else if (IS_HARDWARE_TYPE_8723F(padapter)) ex_hal8723f_wifi_only_connectnotify(&GLBtCoexistWifiOnly, is_5g); #endif + +#ifdef CONFIG_RTL8822E + else if (IS_HARDWARE_TYPE_8822E(padapter)) + ex_hal8822e_wifi_only_connectnotify(&GLBtCoexistWifiOnly, is_5g); +#endif + +#endif } void hal_btcoex_wifionly_hw_config(PADAPTER padapter) @@ -238,6 +273,11 @@ void hal_btcoex_wifionly_hw_config(PADAPTER padapter) else if (IS_HARDWARE_TYPE_8723F(padapter)) ex_hal8723f_wifi_only_hw_config(pwifionlycfg); #endif + +#ifdef CONFIG_RTL8822E + else if (IS_HARDWARE_TYPE_8822E(padapter)) + ex_hal8822e_wifi_only_hw_config(pwifionlycfg); +#endif } void hal_btcoex_wifionly_initlizevariables(PADAPTER padapter) diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_com.c b/drivers/net/wireless/rtl8822cs/hal/hal_com.c index 84fb6fab7..68ca07829 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_com.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_com.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -20,7 +20,7 @@ #include "hal_data.h" #ifdef RTW_HALMAC -#include "../hal/hal_halmac.h" +#include "hal_halmac.h" #endif void rtw_dump_fw_info(void *sel, _adapter *adapter) @@ -273,6 +273,8 @@ void dump_chip_info(HAL_VERSION ChipVersion) cnt += sprintf((buf + cnt), "Chip Version Info: CHIP_8814B_"); else if (IS_8723F_SERIES(ChipVersion)) cnt += sprintf((buf + cnt), "Chip Version Info: CHIP_8723F_"); + else if (IS_8822E_SERIES(ChipVersion)) + cnt += sprintf((buf + cnt), "Chip Version Info: CHIP_8822E_"); else cnt += sprintf((buf + cnt), "Chip Version Info: CHIP_UNKNOWN_"); @@ -363,8 +365,7 @@ u8 rtw_hal_get_port(_adapter *adapter) /* * Description: - * Use hardware(efuse), driver parameter(registry) and default channel plan - * to decide which one should be used. + * Parse and store channel plsn settings from HW * * Parameters: * padapter pointer of adapter @@ -372,12 +373,11 @@ u8 rtw_hal_get_port(_adapter *adapter) * hw_chplan channel plan from HW (efuse/eeprom/mapfile) * BIT[7] software configure mode; 0:Enable, 1:disable * BIT[6:0] Channel Plan - * sw_alpha2 country code from HW (registry/module param) - * sw_chplan channel plan from SW (registry/module param) + * hw_chplan_6g channel plan 6G from HW (efuse/eeprom/mapfile) * AutoLoadFail efuse autoload fail or not * */ -void hal_com_config_channel_plan( +void hal_com_parse_channel_plan( PADAPTER padapter, const char *hw_alpha2, u8 hw_chplan, @@ -386,40 +386,35 @@ void hal_com_config_channel_plan( ) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(padapter); - u8 force_hw_chplan = _FALSE; - /* - * autoload fail, by pass all hw settings - */ - if (AutoLoadFail == _TRUE) { - hw_alpha2 = NULL; - hw_chplan = RTW_CHPLAN_UNSPECIFIED; - goto init; - } + /* init data members with unspecified content */ + _rtw_memcpy(hal_data->eeprom_alpha2, "\xFF\xFF", 2); + hal_data->eeprom_chplan = RTW_CHPLAN_UNSPECIFIED; +#if CONFIG_IEEE80211_BAND_6GHZ + hal_data->eeprom_chplan_6g = RTW_CHPLAN_UNSPECIFIED; +#endif + hal_data->eeprom_force_hw_chplan = false; - /* - * treat {0xFF, 0xFF} as unspecified - */ - if (hw_alpha2 && strncmp(hw_alpha2, "\xFF\xFF", 2) == 0) - hw_alpha2 = NULL; + /* autoload fail, by pass all hw settings */ + if (AutoLoadFail == _TRUE) + return; + + if (hw_alpha2) + _rtw_memcpy(hal_data->eeprom_alpha2, hw_alpha2, 2); /* * treat 0xFF as invalid value, bypass hw_chplan & force_hw_chplan parsing * and check hw setting with only country code */ - if (hw_chplan == 0xFF) { - hw_chplan = RTW_CHPLAN_UNSPECIFIED; - goto init; - } + if (hw_chplan == 0xFF) + return; -#ifndef CONFIG_FORCE_SW_CHANNEL_PLAN - if (hw_chplan & EEPROM_CHANNEL_PLAN_BY_HW_MASK) - force_hw_chplan = _TRUE; + hal_data->eeprom_chplan = hw_chplan & (~EEPROM_CHANNEL_PLAN_BY_HW_MASK); +#if CONFIG_IEEE80211_BAND_6GHZ + hal_data->eeprom_chplan_6g = hw_chplan_6g; #endif - hw_chplan &= (~EEPROM_CHANNEL_PLAN_BY_HW_MASK); - -init: - rtw_rfctl_decide_init_chplan(adapter_to_rfctl(padapter), hw_alpha2, hw_chplan, hw_chplan_6g, force_hw_chplan); + if (hw_chplan & EEPROM_CHANNEL_PLAN_BY_HW_MASK) + hal_data->eeprom_force_hw_chplan = true; } BOOLEAN @@ -1021,12 +1016,15 @@ void rtw_hal_reqtxrpt(_adapter *padapter, u8 macid) int rtw_get_sta_tx_stat(_adapter *adapter, u8 mac_id, u8 *macaddr) { struct sta_priv *pstapriv_primary = &(GET_PRIMARY_ADAPTER(adapter))->stapriv; - struct submit_ctx gotc2h; + struct submit_ctx *gotc2h = NULL; u8 cmd_ret; int ret = _SUCCESS; + gotc2h = (struct submit_ctx *)rtw_zmalloc(sizeof(struct submit_ctx)); + if (!gotc2h) + return _FAIL; + if (!adapter->hal_func.reqtxrpt) { - RTW_INFO("Not support.\n"); ret = RTW_NOT_SUPPORT; goto exit; } @@ -1037,8 +1035,8 @@ int rtw_get_sta_tx_stat(_adapter *adapter, u8 mac_id, u8 *macaddr) goto exit; } - rtw_sctx_init(&gotc2h, 60); - pstapriv_primary->gotc2h = &gotc2h; + rtw_sctx_init(gotc2h, 60); + pstapriv_primary->gotc2h = gotc2h; _rtw_memcpy(pstapriv_primary->c2h_sta_mac, macaddr, ETH_ALEN); pstapriv_primary->c2h_adapter_id = adapter->iface_id; @@ -1047,13 +1045,13 @@ int rtw_get_sta_tx_stat(_adapter *adapter, u8 mac_id, u8 *macaddr) RTW_WARN("rtw_reqtxrpt_cmd fail\n"); ret = _FAIL; } else - rtw_sctx_wait(&gotc2h, __func__); + rtw_sctx_wait(gotc2h, __func__); enter_critical_bh(&pstapriv_primary->tx_rpt_lock); pstapriv_primary->gotc2h = NULL; exit_critical_bh(&pstapriv_primary->tx_rpt_lock); - if (cmd_ret == _SUCCESS && gotc2h.status != RTW_SCTX_DONE_SUCCESS) { + if (cmd_ret == _SUCCESS && gotc2h->status != RTW_SCTX_DONE_SUCCESS) { RTW_WARN("wait for C2H timeout, operation abort!!\n"); ret = _FAIL; } @@ -1062,6 +1060,8 @@ int rtw_get_sta_tx_stat(_adapter *adapter, u8 mac_id, u8 *macaddr) pstapriv_primary->c2h_adapter_id = CONFIG_IFACE_NUMBER; exit: + if (gotc2h) + rtw_mfree(gotc2h, sizeof(struct submit_ctx)); return ret; } @@ -1455,8 +1455,9 @@ int c2h_mac_hidden_rpt_hdl(_adapter *adapter, u8 *data, u8 len) RTW_PRINT("nic:0x%x\n", nic); } -#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) - if (IS_8822C_SERIES(hal_data->version_id) || IS_8814B_SERIES(hal_data->version_id)) { +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8822E) + if (IS_8822C_SERIES(hal_data->version_id) || IS_8814B_SERIES(hal_data->version_id) + || IS_8822E_SERIES(hal_data->version_id)) { #define GET_C2H_MAC_HIDDEN_RPT_SS_NUM(_data) LE_BITS_TO_1BYTE(((u8 *)(_data)) + 6, 3, 2) ss_num = GET_C2H_MAC_HIDDEN_RPT_SS_NUM(data); @@ -1468,14 +1469,16 @@ int c2h_mac_hidden_rpt_hdl(_adapter *adapter, u8 *data, u8 len) } #endif -#if defined(CONFIG_RTL8822C) - if (IS_8822C_SERIES(hal_data->version_id)) { +#if (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) + if (IS_8822C_SERIES(hal_data->version_id) || \ + IS_8822E_SERIES(hal_data->version_id)) { if (ant_num == 1) hal_spec->rf_reg_trx_path_bmp = 0x22; /* 1T1R pathB */ if (hw_stype == 0xE) hal_spec->max_tx_cnt = rtw_min(hal_spec->max_tx_cnt, 1); /* limit 1TX only */ } #endif + hal_data->PackageType = package_type; hal_spec->hci_type = hci_type; hal_spec->wl_func &= mac_hidden_wl_func_to_hal_wl_func(wl_func); @@ -1892,6 +1895,94 @@ exit: } #endif /* CONFIG_RTW_CUSTOMER_STR */ +#ifdef CONFIG_TX_PAUSE_FW_CTRL + +#ifndef DBG_TX_PAUSE_RPT_HANDLE +#define DBG_TX_PAUSE_RPT_HANDLE 0 +#endif + +s32 rtw_hal_h2c_tx_pause_ctrl(_adapter *adapter, u8 val) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + struct submit_ctx sctx; + u8 h2c_data[H2C_TX_PAUSE_DRV_INFO_LEN] = {0}; + s32 ret = _SUCCESS; + + SET_H2CCMD_TX_PAUSE_DRV_INFO_VALUE(h2c_data, val); + SET_H2CCMD_TX_PAUSE_DRV_INFO_MASK(h2c_data, 0xFF); + + _rtw_spinlock_bh(&hal_data->tx_pause_sctx_lock); + if (hal_data->tx_pause_sctx != NULL) + ret = _FAIL; + else { + rtw_sctx_init(&sctx, 2 * 1000); + hal_data->tx_pause_sctx = &sctx; + } + _rtw_spinunlock_bh(&hal_data->tx_pause_sctx_lock); + + if (ret == _FAIL) { + RTW_WARN("%s another handle ongoing\n", __func__); + goto exit; + } + + ret = rtw_hal_fill_h2c_cmd(adapter, H2C_TX_PAUSE_DRV_INFO, H2C_TX_PAUSE_DRV_INFO_LEN, h2c_data); + if (ret != _SUCCESS) { + RTW_WARN("%s h2c fail\n", __func__); + _rtw_spinlock_bh(&hal_data->tx_pause_sctx_lock); + hal_data->tx_pause_sctx = NULL; + _rtw_spinunlock_bh(&hal_data->tx_pause_sctx_lock); + goto exit; + } + + /* wait till rpt done or timeout */ + rtw_sctx_wait(&sctx, __func__); + + _rtw_spinlock_bh(&hal_data->tx_pause_sctx_lock); + hal_data->tx_pause_sctx = NULL; + _rtw_spinunlock_bh(&hal_data->tx_pause_sctx_lock); + + if (sctx.status != RTW_SCTX_DONE_SUCCESS) + ret = _FAIL; + +exit: + return ret; +} + +#define GET_C2H_TX_PAUSE_RPT_INFO(_data) LE_BITS_TO_1BYTE(((u8 *)(_data)) + 0, 0, 8) +#define GET_C2H_TX_PAUSE_RPT_DRV_INFO(_data) LE_BITS_TO_1BYTE(((u8 *)(_data)) + 1, 0, 8) +#define GET_C2H_TX_PAUSE_RPT_FW_INFO(_data) LE_BITS_TO_1BYTE(((u8 *)(_data)) + 2, 0, 8) + +int c2h_tx_pause_rpt_hdl(_adapter *adapter, u8 *data, u8 len) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + int ret = _FAIL; + int i; + + if (len < TX_PAUSE_RPT_LEN) { + RTW_WARN("%s len(%u) < %d\n", __func__, len, TX_PAUSE_RPT_LEN); + goto exit; + } + + if (DBG_TX_PAUSE_RPT_HANDLE) + RTW_INFO("tx_pause_rpt: info:0x%02x drv:0x%02x fw:0x%02x\n", GET_C2H_TX_PAUSE_RPT_INFO(data) + , GET_C2H_TX_PAUSE_RPT_DRV_INFO(data), GET_C2H_TX_PAUSE_RPT_FW_INFO(data)); + + _rtw_spinlock_bh(&hal_data->tx_pause_sctx_lock); + + if (hal_data->tx_pause_sctx != NULL) { + rtw_sctx_done(&hal_data->tx_pause_sctx); + } else + RTW_WARN("%s sctx not set\n", __func__); + + _rtw_spinunlock_bh(&hal_data->tx_pause_sctx_lock); + + ret = _SUCCESS; + +exit: + return ret; +} +#endif /* CONFIG_TX_PAUSE_FW_CTRL */ + #ifdef RTW_PER_CMD_SUPPORT_FW #define H2C_REQ_PER_RPT_LEN 5 #define SET_H2CCMD_REQ_PER_RPT_GROUP_MACID(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 4, __Value) @@ -2335,7 +2426,6 @@ u32 rtw_sec_read_cam(_adapter *adapter, u8 addr) u32 cnt = 0; systime start = 0, end = 0; u8 timeout = 0; - u8 sr = 0; _enter_critical_mutex(mutex, NULL); @@ -2343,10 +2433,8 @@ u32 rtw_sec_read_cam(_adapter *adapter, u8 addr) start = rtw_get_current_time(); while (1) { - if (rtw_is_surprise_removed(adapter)) { - sr = 1; + if (rtw_is_surprise_removed(adapter)) break; - } cnt++; if (0 == (rtw_read32(adapter, REG_CAMCMD) & CAM_POLLINIG)) @@ -2377,7 +2465,6 @@ void rtw_sec_write_cam(_adapter *adapter, u8 addr, u32 wdata) u32 cnt = 0; systime start = 0, end = 0; u8 timeout = 0; - u8 sr = 0; _enter_critical_mutex(mutex, NULL); @@ -2386,10 +2473,8 @@ void rtw_sec_write_cam(_adapter *adapter, u8 addr, u32 wdata) start = rtw_get_current_time(); while (1) { - if (rtw_is_surprise_removed(adapter)) { - sr = 1; + if (rtw_is_surprise_removed(adapter)) break; - } cnt++; if (0 == (rtw_read32(adapter, REG_CAMCMD) & CAM_POLLINIG)) @@ -2532,6 +2617,94 @@ bool rtw_sec_read_cam_is_gk(_adapter *adapter, u8 id) res = (ctrl & BIT6) ? _TRUE : _FALSE; return res; } + +u8 rtw_sec_search_camid(_adapter *adapter, u8 key_id, u8 is_gtk) +{ + struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); + struct cam_ctl_t *cam_ctl = &dvobj->cam_ctl; + struct security_priv *psecuritypriv = &adapter->securitypriv; + u8 enc_alg; + u8 cam_sec_type; + u32 data; + u16 ctrl = 0; + u16 ctrl_ext; + u8 addr; + u8 entry = cam_ctl->num; + u8 i; + + if ((key_id > 0 && is_gtk == 0) || key_id < 0) + goto exit; + + if (key_id == 0 && is_gtk == 0) + enc_alg = psecuritypriv->dot11PrivacyAlgrthm; + else if (key_id < 4) + enc_alg = psecuritypriv->dot118021XGrpPrivacy; +#ifdef CONFIG_IEEE80211W + else if (key_id < 5) + enc_alg = psecuritypriv->dot11wCipher; +#endif + else + goto exit; + + cam_sec_type = enc_alg & CAM_SEC_TYPE_BIT_MASK; + + switch (enc_alg) { + case _CCMP_256_: + case _GCMP_256_: + ctrl |= CAM_EXT_SEC_KEY; + fallthrough; + case _AES_: + case _GCMP_: + ctrl |= (key_id & CAM_KEY_ID_BIT_MASK) | + cam_sec_type << CAM_KEY_ID_BIT_LEN | + CAM_VALID; + break; + case _TKIP_: + ctrl = (enc_alg << CAM_KEY_ID_BIT_LEN) | + CAM_VALID; + break; +#ifdef CONFIG_IEEE80211W + case _BIP_CMAC_128_: + ctrl = (key_id & CAM_KEY_ID_BIT_MASK) | + cam_sec_type << CAM_KEY_ID_BIT_LEN | + CAM_MGNT_KEY | + CAM_VALID; + break; +#endif + default: + goto exit; + } + + if (is_gtk) + ctrl |= CAM_GROUP_KEY; + + for (i = 0; i < cam_ctl->num; i++) { + /* Each entry has 8*32 bytes */ + addr = i * 8; + data = rtw_sec_read_cam(adapter, addr); + + /* Search for a matching cam entry by ctrl field */ + if (!_rtw_memcmp(&ctrl, &data, CAM_CTRL_SIZE)) { + if (ctrl & CAM_EXT_SEC_KEY) { + if (i == cam_ctl->num - 1) + goto exit; + + addr = (i + 1) * 8; + data = rtw_sec_read_cam(adapter, addr); + + ctrl_ext = ctrl | CAM_MIC_KEY; + if(_rtw_memcmp(&ctrl_ext, &data, CAM_CTRL_SIZE)) + goto exit; + } + entry = i; + break; + } + } + +exit: + return entry; +} + #ifdef CONFIG_MBSSID_CAM void rtw_mbid_cam_init(struct dvobj_priv *dvobj) { @@ -2896,8 +3069,14 @@ static void clear_mbssid_cam(_adapter *padapter, u8 cam_addr) void rtw_ap_set_mbid_num(_adapter *adapter, u8 ap_num) { +#ifdef CONFIG_RTL8723F + /* [7:4] BIT_MBID_BCN_NUM_V2*/ + rtw_write8(adapter, REG_MBID_NUM, + ((rtw_read8(adapter, REG_MBID_NUM) & 0x0F) | (((ap_num -1) << 4) & 0xF0))); +#else rtw_write8(adapter, REG_MBID_NUM, ((rtw_read8(adapter, REG_MBID_NUM) & 0xF8) | ((ap_num -1) & 0x07))); +#endif } void rtw_mbid_cam_enable(_adapter *adapter) @@ -3050,8 +3229,13 @@ void rtw_ap_multi_bcn_cfg(_adapter *adapter) /*no limit setting - 0x5A7 = 0xFF - Packet in Hi Queue Tx immediately*/ rtw_write8(adapter, REG_HIQ_NO_LMT_EN, 0xFF); +#ifdef CONFIG_RTL8723F + /* Mask all beacon and enable bcn function will block ac queue */ + RTW_INFO("%s() skip mask all bcn\n", __func__); +#else /*Mask all beacon*/ rtw_write8(adapter, REG_MBSSID_CTRL, 0); +#endif /*BCN invalid bit setting 0x454[6] = 1*/ /*rtw_write8(adapter, REG_CCK_CHECK, rtw_read8(adapter, REG_CCK_CHECK) | BIT_EN_BCN_PKT_REL);*/ @@ -3071,6 +3255,11 @@ void rtw_ap_multi_bcn_cfg(_adapter *adapter) if (IS_HARDWARE_TYPE_8822C(adapter)) rtw_write8(adapter, REG_DUMMY_PAGE4_V1_8822C, 0x01); #endif + + #ifdef CONFIG_RTL8822E + if (IS_HARDWARE_TYPE_8822E(adapter)) + rtw_write8(adapter, REG_DUMMY_PAGE4_V1_8822E, 0x01); + #endif } static void _rtw_mbid_bcn_cfg(_adapter *adapter, bool mbcnq_en, u8 mbcnq_id) { @@ -3130,7 +3319,8 @@ void rtw_ap_mbid_bcn_dis(_adapter *adapter, u8 ap_id) #ifdef CONFIG_SWTIMER_BASED_TXBCN void rtw_ap_multi_bcn_cfg(_adapter *adapter) { - #if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) + #if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || \ + defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) rtw_write8(adapter, REG_BCN_CTRL, DIS_TSF_UDT); #else rtw_write8(adapter, REG_BCN_CTRL, DIS_TSF_UDT | DIS_BCNQ_SUB); @@ -3157,7 +3347,8 @@ void rtw_ap_multi_bcn_cfg(_adapter *adapter) /*enable BCN0 Function for if1*/ /*don't enable update TSF0 for if1 (due to TSF update when beacon,probe rsp are received)*/ - #if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) + #if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) \ + || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) rtw_write8(adapter, REG_BCN_CTRL, BIT_DIS_RX_BSSID_FIT | BIT_P0_EN_TXBCN_RPT | BIT_DIS_TSF_UDT |BIT_EN_BCN_FUNCTION); #else rtw_write8(adapter, REG_BCN_CTRL, (DIS_TSF_UDT | EN_BCN_FUNCTION | EN_TXBCN_RPT | DIS_BCNQ_SUB)); @@ -3180,6 +3371,11 @@ void rtw_ap_multi_bcn_cfg(_adapter *adapter) if (IS_HARDWARE_TYPE_8822C(adapter)) rtw_write8(adapter, REG_DUMMY_PAGE4_V1_8822C, 0x01); #endif + + #ifdef CONFIG_RTL8822E + if (IS_HARDWARE_TYPE_8822E(adapter)) + rtw_write8(adapter, REG_DUMMY_PAGE4_V1_8822E, 0x01); + #endif } #endif @@ -4319,10 +4515,11 @@ s32 rtw_hal_set_default_port_id_cmd(_adapter *adapter, u8 mac_id) return ret; } + s32 rtw_set_default_port_id(_adapter *adapter) { s32 ret = _SUCCESS; - struct sta_info *psta; + struct sta_info *psta; struct mlme_priv *pmlmepriv = &adapter->mlmepriv; if (is_client_associated_to_ap(adapter)) { @@ -4330,12 +4527,11 @@ s32 rtw_set_default_port_id(_adapter *adapter) if (psta) ret = rtw_hal_set_default_port_id_cmd(adapter, psta->cmn.mac_id); } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { - } else { } - return ret; } + s32 rtw_set_ps_rsvd_page(_adapter *adapter) { s32 ret = _SUCCESS; @@ -4602,7 +4798,8 @@ void rtw_set_p2p_ps_offload_cmd(_adapter *adapter, u8 p2p_ps_state) #endif /* RTW_HALMAC */ #endif /* CONFIG_P2P */ -#if defined(CONFIG_RTL8822C) && defined(CONFIG_SUPPORT_DYNAMIC_TXPWR) +#if (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) \ + && defined(CONFIG_SUPPORT_DYNAMIC_TXPWR) static void _rtw_hal_dtp_macid_set( _adapter *padapter, u8 opmode, u8 mac_id) { @@ -4668,7 +4865,8 @@ s32 rtw_hal_set_FwMediaStatusRpt_cmd(_adapter *adapter, bool opmode, bool miraca #endif u8 op_num_change_bmp = 0; -#if defined(CONFIG_RTL8822C) && defined(CONFIG_SUPPORT_DYNAMIC_TXPWR) +#if (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) \ + && defined(CONFIG_SUPPORT_DYNAMIC_TXPWR) rtw_hal_dtp_macid_set(adapter, opmode, macid_ind, macid, macid_end); #endif @@ -4724,13 +4922,13 @@ s32 rtw_hal_set_FwMediaStatusRpt_cmd(_adapter *adapter, bool opmode, bool miraca if (macid_ind == 0) macid_end = macid; - for (i = macid; macid <= macid_end; macid++) { - op_num_change_bmp |= rtw_macid_ctl_set_h2c_msr(macid_ctl, macid, parm[0]); + for (i = macid; i <= macid_end; i++) { + op_num_change_bmp |= rtw_macid_ctl_set_h2c_msr(macid_ctl, i, parm[0]); if (!opmode) { - rtw_macid_ctl_set_bw(macid_ctl, macid, CHANNEL_WIDTH_20); - rtw_macid_ctl_set_vht_en(macid_ctl, macid, 0); - rtw_macid_ctl_set_rate_bmp0(macid_ctl, macid, 0); - rtw_macid_ctl_set_rate_bmp1(macid_ctl, macid, 0); + rtw_macid_ctl_set_bw(macid_ctl, i, CHANNEL_WIDTH_20); + rtw_macid_ctl_set_vht_en(macid_ctl, i, 0); + rtw_macid_ctl_set_rate_bmp0(macid_ctl, i, 0); + rtw_macid_ctl_set_rate_bmp1(macid_ctl, i, 0); } } @@ -4759,7 +4957,6 @@ inline s32 rtw_hal_set_FwMediaStatusRpt_range_cmd(_adapter *adapter, bool opmode void rtw_hal_set_FwRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpageloc) { u8 u1H2CRsvdPageParm[H2C_RSVDPAGE_LOC_LEN] = {0}; - u8 ret = 0; RTW_INFO("RsvdPageLoc: ProbeRsp=%d PsPoll=%d Null=%d QoSNull=%d BTNull=%d\n", rsvdpageloc->LocProbeRsp, rsvdpageloc->LocPsPoll, @@ -4772,11 +4969,8 @@ void rtw_hal_set_FwRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpageloc) SET_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocQosNull); SET_H2CCMD_RSVDPAGE_LOC_BT_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocBTQosNull); - ret = rtw_hal_fill_h2c_cmd(padapter, - H2C_RSVD_PAGE, - H2C_RSVDPAGE_LOC_LEN, - u1H2CRsvdPageParm); - + rtw_hal_fill_h2c_cmd(padapter, H2C_RSVD_PAGE, H2C_RSVDPAGE_LOC_LEN, + u1H2CRsvdPageParm); } #ifdef CONFIG_GPIO_WAKEUP @@ -4786,7 +4980,7 @@ void rtw_hal_switch_gpio_wl_ctrl(_adapter *padapter, u8 index, u8 enable) if (IS_8723D_SERIES(pHalData->version_id) || IS_8192F_SERIES(pHalData->version_id) || IS_8822B_SERIES(pHalData->version_id) || IS_8821C_SERIES(pHalData->version_id) - || IS_8822C_SERIES(pHalData->version_id)) + || IS_8822C_SERIES(pHalData->version_id) || IS_8822E_SERIES(pHalData->version_id)) rtw_hal_set_hwreg(padapter, HW_SET_GPIO_WL_CTRL, (u8 *)(&enable)); /* * Switch GPIO_13, GPIO_14 to wlan control, or pull GPIO_13,14 MUST fail. @@ -4937,11 +5131,35 @@ void rtw_hal_set_FwAoacRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpageloc _rtw_memset(&u1H2CAoacRsvdPageParm, 0, sizeof(u1H2CAoacRsvdPageParm)); SET_H2CCMD_AOAC_RSVDPAGE_LOC_AOAC_REPORT(u1H2CAoacRsvdPageParm, rsvdpageloc->LocAOACReport); +#ifdef CONFIG_IEEE80211W + RTW_INFO("IEEE80211w Info=%d\n", + rsvdpageloc->loc_ieee80211w_info); + SET_H2CCMD_AOAC_RSVDPAGE_LOC_IEEE80211W_INFO(u1H2CAoacRsvdPageParm, + rsvdpageloc->loc_ieee80211w_info); + RTW_INFO("SA Query=%d\n", rsvdpageloc->loc_sa_query); + SET_H2CCMD_AOAC_RSVDPAGE_LOC_SA_QUERY(u1H2CAoacRsvdPageParm, + rsvdpageloc->loc_sa_query); +#endif +#ifdef CONFIG_GTK_OL + RTW_INFO("GTK Info v2=%d\n", rsvdpageloc->loc_gtk_info_v2); + SET_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_INFO_V2(u1H2CAoacRsvdPageParm, + rsvdpageloc->loc_gtk_info_v2); +#endif ret = rtw_hal_fill_h2c_cmd(padapter, H2C_AOAC_RSVDPAGE3, H2C_AOAC_RSVDPAGE_LOC_LEN, u1H2CAoacRsvdPageParm); pwrpriv->wowlan_aoac_rpt_loc = rsvdpageloc->LocAOACReport; + + /* AOAC Rsvdpage 4 */ + RTW_INFO("%s:channel_set: %d\n", __func__, rsvdpageloc->loc_channel_set); + _rtw_memset(&u1H2CAoacRsvdPageParm, 0, sizeof(u1H2CAoacRsvdPageParm)); + SET_H2CCMD_AOAC_RSVDPAGE_LOC_CHSET(u1H2CAoacRsvdPageParm, + rsvdpageloc->loc_channel_set); + ret = rtw_hal_fill_h2c_cmd(padapter, + H2C_AOAC_RSVDPAGE4, + H2C_AOAC_RSVDPAGE_LOC_LEN, + u1H2CAoacRsvdPageParm); } #if defined(CONFIG_PNO_SUPPORT) && !defined(RTW_HALMAC) else { @@ -4962,6 +5180,38 @@ void rtw_hal_set_FwAoacRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpageloc #endif /* CONFIG_WOWLAN */ } +#ifdef CONFIG_MDNS_OFFLOAD +void rtw_hal_set_mdns_ofld_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpageloc) +{ + struct hal_spec_t *hal_spec = GET_HAL_SPEC(padapter); + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + struct rtw_mdns_ofld_info *mdns_ofld_info = &pwrctl->mdns_ofld_info; + u8 h2c_mdns_offload_parm[H2C_MDNS_OFFLOAD_LEN] = {0}; + + if ((hal_spec->wow_cap & WOW_CAP_MDNS) == 0) + return; + + SET_H2CCMD_MDNS_OFFLOAD_EN(h2c_mdns_offload_parm, 1); + SET_H2CCMD_MDNS_OFFLOAD_STATE(h2c_mdns_offload_parm, + mdns_ofld_info->offload_state); + SET_H2CCMD_MDNS_OFFLOAD_PASSTHRU_BEHAVIOR(h2c_mdns_offload_parm, + mdns_ofld_info->passthru_list.passthru_behavior); + SET_H2CCMD_MDNS_OFFLOAD_LOC_IPV4_HEADER(h2c_mdns_offload_parm, + rsvdpageloc->loc_ipv4_header); + SET_H2CCMD_MDNS_OFFLOAD_LOC_IPV6_HEADER(h2c_mdns_offload_parm, + rsvdpageloc->loc_ipv6_header); + SET_H2CCMD_MDNS_OFFLOAD_LOC_MDNS_PROTOCOL_DATA(h2c_mdns_offload_parm, + rsvdpageloc->loc_mdns_protocol_data); + SET_H2CCMD_MDNS_OFFLOAD_LOC_PASSTHRU_LIST(h2c_mdns_offload_parm, + rsvdpageloc->loc_mdns_passthru_list); + + rtw_hal_fill_h2c_cmd(padapter, + H2C_MDNS_OFFLOAD, + H2C_MDNS_OFFLOAD_LEN, + h2c_mdns_offload_parm); +} +#endif + #ifdef DBG_FW_DEBUG_MSG_PKT void rtw_hal_set_fw_dbg_msg_pkt_rsvd_page_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpageloc) { @@ -5194,7 +5444,7 @@ static u8 rtw_hal_pause_rx_dma(_adapter *adapter) tmp = rtw_read16(adapter, REG_RXPKT_NUM + 2); RTW_PRINT("Stop RX DMA failed......\n"); -#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8822E) RTW_PRINT("%s, RXPKT_NUM: 0x%04x\n", __func__, rtw_read16(adapter, REG_RXPKTNUM)); #else @@ -5409,6 +5659,29 @@ static void rtw_hal_fw_sync_cam_id(_adapter *adapter) rtw_write8(adapter, REG_SECCFG, 0xcc); } +static u8 chk_need_swap_cam(_adapter *adapter) +{ + struct security_priv *psecuritypriv = &adapter->securitypriv; + struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); + + if (!_rtw_wow_chk_cap(adapter, WOW_CAP_WPA3_SAE)) + return _TRUE; + + /* Swap CAM only when CCMP/GCMP/GCMP-256 or PMF is not used */ + if (psecuritypriv->dot118021XGrpPrivacy == _GCMP_ || + psecuritypriv->dot118021XGrpPrivacy == _CCMP_256_ || + psecuritypriv->dot118021XGrpPrivacy == _GCMP_256_ || +#ifdef CONFIG_IEEE80211W + psecuritypriv->binstallBIPkey || +#endif + psecuritypriv->dot11PrivacyAlgrthm == _GCMP_ || + psecuritypriv->dot11PrivacyAlgrthm == _CCMP_256_ || + psecuritypriv->dot11PrivacyAlgrthm == _GCMP_256_) + return _FALSE; + else + return _TRUE; +} + static void rtw_hal_update_gtk_offload_info(_adapter *adapter) { struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(adapter); @@ -5417,10 +5690,14 @@ static void rtw_hal_update_gtk_offload_info(_adapter *adapter) struct security_priv *psecuritypriv = &adapter->securitypriv; struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); struct cam_ctl_t *cam_ctl = &dvobj->cam_ctl; + struct stainfo_rxcache *rxcache = NULL; + struct sta_info *sta = NULL; _irqL irqL; - u8 get_key[16]; - u8 gtk_id = 0, offset = 0, i = 0, sz = 0, aoac_rpt_ver = 0, has_rekey = _FALSE; - u64 replay_count = 0, tmp_iv_hdr = 0, pkt_pn = 0; + u8 get_key[32]; + u8 pn[8] = {0}; + u8 gtk_id = 0, offset = 0, i = 0, aoac_rpt_ver = 0, has_rekey = _FALSE; + u8 cam_id; + u64 replay_count = 0; if (!MLME_IS_STA(adapter)) return; @@ -5456,25 +5733,53 @@ static void rtw_hal_update_gtk_offload_info(_adapter *adapter) RTW_INFO("%s no rekey event happened.\n", __func__); } else if (has_rekey == _TRUE) { RTW_INFO("%s update security key.\n", __func__); - /*read key from sec-cam,for DK ,keyindex is equal to cam-id*/ - rtw_sec_read_cam_ent(adapter, gtk_id, - NULL, NULL, get_key); - rtw_clean_hw_dk_cam(adapter); - if (_rtw_camid_is_gk(adapter, gtk_id)) { + if (chk_need_swap_cam(adapter)) { + /*read key from sec-cam,for DK ,keyindex is equal to cam-id*/ + rtw_sec_read_cam_ent(adapter, gtk_id, + NULL, NULL, get_key); + rtw_clean_hw_dk_cam(adapter); + + cam_id = gtk_id; + } else { + _rtw_memcpy(get_key, paoac_rpt->group_key, 32); + + cam_id = rtw_sec_search_camid(adapter, gtk_id, 1); + if (cam_id == cam_ctl->num) + RTW_WARN("%s search camid failed!\n", __func__); + } + + /* GTK of 32 byte length is not supported */ + if (_rtw_camid_is_gk(adapter, cam_id)) { _enter_critical_bh(&cam_ctl->lock, &irqL); - _rtw_memcpy(&dvobj->cam_cache[gtk_id].key, + _rtw_memcpy(&dvobj->cam_cache[cam_id].key, get_key, 16); _exit_critical_bh(&cam_ctl->lock, &irqL); } else { struct setkey_parm parm_gtk; - parm_gtk.algorithm = paoac_rpt->security_type; + parm_gtk.algorithm = + (u8)psecuritypriv->dot118021XGrpPrivacy; parm_gtk.keyid = gtk_id; _rtw_memcpy(parm_gtk.key, get_key, 16); setkey_hdl(adapter, (u8 *)&parm_gtk); } + if (chk_need_swap_cam(adapter)) { + rtw_clean_dk_section(adapter); + rtw_write8(adapter, REG_SECCFG, 0x0c); + } + +#ifdef CONFIG_IEEE80211W + if (psecuritypriv->binstallBIPkey && + _rtw_wow_chk_cap(adapter, WOW_CAP_WPA3_SAE)) { + _rtw_memcpy(psecuritypriv->dot11wBIPKey[4].skey, + paoac_rpt->igtk[0], 32); + _rtw_memcpy(psecuritypriv->dot11wBIPKey[5].skey, + paoac_rpt->igtk[1], 32); + } +#endif + /*update key into related sw variable and sec-cam cache*/ psecuritypriv->dot118021XGrpKeyid = gtk_id; _rtw_memcpy(&psecuritypriv->dot118021XGrpKey[gtk_id], @@ -5497,20 +5802,42 @@ static void rtw_hal_update_gtk_offload_info(_adapter *adapter) KEY_ARG(psecuritypriv->dot118021XGrpKey[gtk_id].skey)); } - /* Update broadcast RX IV */ - if (psecuritypriv->dot118021XGrpPrivacy == _AES_) { - sz = sizeof(psecuritypriv->iv_seq[0]); - for (i = 0 ; i < 4 ; i++) { - _rtw_memcpy(&tmp_iv_hdr, paoac_rpt->rxgtk_iv[i], sz); - tmp_iv_hdr = le64_to_cpu(tmp_iv_hdr); - pkt_pn = CCMPH_2_PN(tmp_iv_hdr); - _rtw_memcpy(psecuritypriv->iv_seq[i], &pkt_pn, sz); + /* Update unicast RX IV */ + sta = rtw_get_stainfo(&adapter->stapriv, get_bssid(&adapter->mlmepriv)); + if (sta) { + if (rtw_iv_to_pn(paoac_rpt->rxptk_iv, pn, NULL, + psecuritypriv->dot11PrivacyAlgrthm)) { + rxcache = &sta->sta_recvpriv.rxcache; + for (i = 0; i < TID_NUM; i++) + _rtw_memcpy(rxcache->iv[i], paoac_rpt->rxptk_iv, + IV_LENGTH); + sta->dot11rxpn.val = RTW_GET_LE64(pn); + RTW_INFO("[wow] ptk_rx_pn = " PN_FMT "\n", PN_ARG(pn)); } } - rtw_clean_dk_section(adapter); + /* Update broadcast RX IV */ + for (i = 0; i < 4; i++) { + if (rtw_iv_to_pn(paoac_rpt->rxgtk_iv[i], pn, NULL, + psecuritypriv->dot118021XGrpPrivacy)) { + _rtw_memcpy(psecuritypriv->iv_seq[i], pn, 8); + RTW_INFO("[wow] gtk_rx_pn[%u] = " PN_FMT "\n", i, PN_ARG(pn)); + } + } - rtw_write8(adapter, REG_SECCFG, 0x0c); +#ifdef CONFIG_IEEE80211W + /* Update IGTK RX IPN */ + if (psecuritypriv->binstallBIPkey && + _rtw_wow_chk_cap(adapter, WOW_CAP_WPA3_SAE)) { + psecuritypriv->dot11wBIPrxpn.val = + RTW_GET_LE48_TO_U64(paoac_rpt->igtk_pkt_num); + } +#endif + + if (chk_need_swap_cam(adapter)) { + rtw_clean_dk_section(adapter); + rtw_write8(adapter, REG_SECCFG, 0x0c); + } #ifdef CONFIG_GTK_OL_DBG /* if (gtk_keyindex != 5) */ @@ -5530,6 +5857,9 @@ static void rtw_dump_aoac_rpt(_adapter *adapter) RTW_INFO_DUMP("[AOAC-RPT] Replay counter of EAPOL key - ", paoac_rpt->replay_counter_eapol_key, 8); RTW_INFO_DUMP("[AOAC-RPT] Group key - ", paoac_rpt->group_key, 32); + RTW_INFO("[AOAC-RPT] csa_ch_num - %d\n", paoac_rpt->csa_ch_num); + RTW_INFO("[AOAC-RPT] csa_ch_width - %d\n", paoac_rpt->csa_ch_width); + RTW_INFO("[AOAC-RPT] csa_ch_offset - %d\n", paoac_rpt->csa_ch_offset); RTW_INFO("[AOAC-RPT] Key Index - %d\n", paoac_rpt->key_index); RTW_INFO("[AOAC-RPT] Security Type - %d\n", paoac_rpt->security_type); RTW_INFO("[AOAC-RPT] wow_pattern_idx - %d\n", @@ -5541,6 +5871,10 @@ static void rtw_dump_aoac_rpt(_adapter *adapter) RTW_INFO_DUMP("[AOAC-RPT] RX GTK[1] IV-", paoac_rpt->rxgtk_iv[1], 8); RTW_INFO_DUMP("[AOAC-RPT] RX GTK[2] IV-", paoac_rpt->rxgtk_iv[2], 8); RTW_INFO_DUMP("[AOAC-RPT] RX GTK[3] IV-", paoac_rpt->rxgtk_iv[3], 8); + RTW_INFO_DUMP("[AOAC-RPT] IGTK KEY ID - ", paoac_rpt->igtk_keyid, 2); + RTW_INFO_DUMP("[AOAC-RPT] IGTK IPN - ", paoac_rpt->igtk_pkt_num, 6); + RTW_INFO_DUMP("[AOAC-RPT] IGTK[4] - ", paoac_rpt->igtk[0], 32); + RTW_INFO_DUMP("[AOAC-RPT] IGTK[5] - ", paoac_rpt->igtk[1], 32); } static void rtw_hal_get_aoac_rpt(_adapter *adapter) @@ -5555,9 +5889,13 @@ static void rtw_hal_get_aoac_rpt(_adapter *adapter) /* read aoac report from rsvd page */ page_offset = pwrctl->wowlan_aoac_rpt_loc; - page_number = 1; rtw_hal_get_def_var(adapter, HAL_DEF_TX_PAGE_SIZE, &page_size); + + page_number = sizeof(struct aoac_report) / page_size; + if (page_number * page_size < sizeof(struct aoac_report)) + page_number += 1; + buf_size = page_size * page_number; buffer = rtw_zvmalloc(buf_size); @@ -5596,6 +5934,59 @@ _exit: rtw_vmfree(buffer, buf_size); } +static void rtw_hal_sync_csa_info(_adapter *adapter) +{ + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(adapter); + struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); + struct aoac_report *paoac_rpt = &pwrctl->wowlan_aoac_rpt; + struct dvobj_priv* pdvobj = adapter_to_dvobj(adapter); + _adapter *pri_adapter = dvobj_get_primary_adapter(pdvobj); + u8 ifbmp_s = rtw_mi_get_ld_sta_ifbmp(pri_adapter); + + if (!(hal_spec->wow_cap & WOW_CAP_CSA)) + return; + + if (paoac_rpt->csa_ch_num <= 0) { + rtw_warn_on(paoac_rpt->csa_ch_num < 0); + RTW_INFO("%s No CSA happend!\n", __func__); + return; + } + + RTW_INFO("%s sync to aoac rpt: req_ch=%d, req_bw=%d, req_offset=%d, ifbmp_s=%d \n", + __func__, paoac_rpt->csa_ch_num, paoac_rpt->csa_ch_width, + paoac_rpt->csa_ch_offset, ifbmp_s); + + rtw_hal_macid_sleep_all_used(pri_adapter); + /* update ch, bw, offset for all asoc STA ifaces */ + if (ifbmp_s) { + _adapter *iface; + u8 i; + + for (i = 0; i < pdvobj->iface_nums; i++) { + iface = pdvobj->padapters[i]; + if (!iface || !(ifbmp_s & BIT(iface->iface_id))) + continue; + + /* update STA mode ch/bw/offset */ + iface->mlmeextpriv.cur_channel = paoac_rpt->csa_ch_num; + iface->mlmeextpriv.cur_bwmode = paoac_rpt->csa_ch_width; + iface->mlmeextpriv.cur_ch_offset = paoac_rpt->csa_ch_offset; + /* updaet STA mode DSConfig , ap mode will update in rtw_change_bss_chbw_cmd */ + iface->mlmepriv.cur_network.network.Configuration.DSConfig = paoac_rpt->csa_ch_num; + set_fwstate(&iface->mlmepriv, WIFI_CSA_UPDATE_BEACON); + } + } + + set_channel_bwmode(pri_adapter, paoac_rpt->csa_ch_num, + paoac_rpt->csa_ch_offset, paoac_rpt->csa_ch_width); + /* update union ch/bw/offset for STA only */ + rtw_mi_update_union_chan_inf(pri_adapter, paoac_rpt->csa_ch_num, + paoac_rpt->csa_ch_offset, + paoac_rpt->csa_ch_width); + + rtw_hal_macid_wakeup_all_used(pri_adapter); +} + static void rtw_hal_update_tx_iv(_adapter *adapter) { struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(adapter); @@ -5604,38 +5995,18 @@ static void rtw_hal_update_tx_iv(_adapter *adapter) struct mlme_ext_priv *pmlmeext = &(adapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct security_priv *psecpriv = &adapter->securitypriv; - - u16 val16 = 0; - u32 val32 = 0; - u64 txiv = 0; - u8 *pval = NULL; + u8 pn[8] = {0}; psta = rtw_get_stainfo(&adapter->stapriv, get_my_bssid(&pmlmeinfo->network)); /* Update TX iv data. */ - pval = (u8 *)&paoac_rpt->iv; - - if (psecpriv->dot11PrivacyAlgrthm == _TKIP_) { - val16 = ((u16)(paoac_rpt->iv[2]) << 0) + - ((u16)(paoac_rpt->iv[0]) << 8); - val32 = ((u32)(paoac_rpt->iv[4]) << 0) + - ((u32)(paoac_rpt->iv[5]) << 8) + - ((u32)(paoac_rpt->iv[6]) << 16) + - ((u32)(paoac_rpt->iv[7]) << 24); - } else if (psecpriv->dot11PrivacyAlgrthm == _AES_) { - val16 = ((u16)(paoac_rpt->iv[0]) << 0) + - ((u16)(paoac_rpt->iv[1]) << 8); - val32 = ((u32)(paoac_rpt->iv[4]) << 0) + - ((u32)(paoac_rpt->iv[5]) << 8) + - ((u32)(paoac_rpt->iv[6]) << 16) + - ((u32)(paoac_rpt->iv[7]) << 24); - } - if (psta) { - txiv = val16 + ((u64)val32 << 16); - if (txiv != 0) - psta->dot11txpn.val = txiv; + if (rtw_iv_to_pn(paoac_rpt->iv, pn, NULL, + psecpriv->dot11PrivacyAlgrthm)) { + psta->dot11txpn.val = RTW_GET_LE64(pn); + RTW_INFO("[wow] ptk_tx_pn = " PN_FMT "\n", PN_ARG(pn)); + } } } @@ -5898,6 +6269,9 @@ static u8 rtw_hal_set_wowlan_ctrl_cmd(_adapter *adapter, u8 enable, u8 change_un #endif /* CONFIG_RTW_ONE_PIN_GPIO */ #endif /* CONFIG_DIS_UPHY */ +#ifndef CONFIG_USB_INBAND + SET_H2CCMD_WOWLAN_DISABLE_INBAND(u1H2CWoWlanCtrlParm, 1); +#endif ret = rtw_hal_fill_h2c_cmd(adapter, H2C_WOWLAN, @@ -5911,6 +6285,7 @@ static u8 rtw_hal_set_remote_wake_ctrl_cmd(_adapter *adapter, u8 enable) struct security_priv *psecuritypriv = &(adapter->securitypriv); struct pwrctrl_priv *ppwrpriv = adapter_to_pwrctl(adapter); struct registry_priv *pregistrypriv = &adapter->registrypriv; + struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); u8 u1H2CRemoteWakeCtrlParm[H2C_REMOTE_WAKE_CTRL_LEN] = {0}; u8 ret = _FAIL, count = 0, no_wake = 0; struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); @@ -6023,6 +6398,10 @@ static u8 rtw_hal_set_remote_wake_ctrl_cmd(_adapter *adapter, u8 enable) #endif /* CONFIG_P2P_WOWLAN */ } + SET_H2CCMD_REMOTE_WAKE_CTRL_TIM_PARSER_EN(u1H2CRemoteWakeCtrlParm, 1); + + if (hal_spec->wow_cap & WOW_CAP_CSA) + SET_H2CCMD_REMOTE_WAKE_CTRL_CSA_PARSER_EN(u1H2CRemoteWakeCtrlParm, 1); ret = rtw_hal_fill_h2c_cmd(adapter, H2C_REMOTE_WAKE_CTRL, @@ -6092,17 +6471,31 @@ static u8 rtw_hal_set_war_offload_parm(_adapter *adapter, PRSVDPAGE_LOC rsvdpage -static u8 rtw_hal_set_global_info_cmd(_adapter *adapter, u8 group_alg, u8 pairwise_alg) +static u8 rtw_hal_set_global_info_cmd(_adapter *adapter) { + struct security_priv *psecpriv = &adapter->securitypriv; u8 ret = _FAIL; u8 u1H2CAOACGlobalInfoParm[H2C_AOAC_GLOBAL_INFO_LEN] = {0}; RTW_INFO("%s(): group_alg=%d pairwise_alg=%d\n", - __func__, group_alg, pairwise_alg); + __func__, psecpriv->dot118021XGrpPrivacy, + psecpriv->dot11PrivacyAlgrthm); SET_H2CCMD_AOAC_GLOBAL_INFO_PAIRWISE_ENC_ALG(u1H2CAOACGlobalInfoParm, - pairwise_alg); + psecpriv->dot11PrivacyAlgrthm); SET_H2CCMD_AOAC_GLOBAL_INFO_GROUP_ENC_ALG(u1H2CAOACGlobalInfoParm, - group_alg); + psecpriv->dot118021XGrpPrivacy); +#ifdef CONFIG_IEEE80211W + RTW_INFO("%s(): group_11w_alg=0x%02x\n", + __func__, psecpriv->dot11wCipher); + SET_H2CCMD_AOAC_GLOBAL_INFO_11W_GROUP_ENC_ALG(u1H2CAOACGlobalInfoParm, + psecpriv->dot11wCipher); +#endif +#ifdef CONFIG_GTK_OL + if (psecpriv->auth_type == MLME_AUTHTYPE_SAE) { + SET_H2CCMD_AOAC_GLOBAL_INFO_IEEE_AKM_SUITE_TYPE( + u1H2CAOACGlobalInfoParm, WLAN_AKM_SAE[3]); + } +#endif ret = rtw_hal_fill_h2c_cmd(adapter, H2C_AOAC_GLOBAL_INFO, @@ -6146,11 +6539,13 @@ static u8 rtw_hal_set_scan_offload_info_cmd(_adapter *adapter, rsvdpageloc->LocPNOInfo, enable); SET_H2CCMD_NLO_FUN_EN(u1H2CNLOINFOInfoParm, enable); +#ifdef CONFIG_FWLPS_IN_IPS #ifdef CONFIG_LPS_LCLK - // TODO(Owen): Controlled by wowlan lps level /* This H2C bit requires driver leave LCLK in rtw_resume_process_wow() */ - SET_H2CCMD_NLO_PS_32K(u1H2CNLOINFOInfoParm, enable); + if (rtw_is_fw_ips_lclk_mode(adapter) == _TRUE) + SET_H2CCMD_NLO_PS_32K(u1H2CNLOINFOInfoParm, enable); #endif +#endif /* CONFIG_FWLPS_IN_IPS */ SET_H2CCMD_NLO_LOC_NLO_INFO(u1H2CNLOINFOInfoParm, rsvdpageloc->LocPNOInfo); ret = rtw_hal_fill_h2c_cmd(adapter, @@ -6180,9 +6575,7 @@ void rtw_hal_set_fw_wow_related_cmd(_adapter *padapter, u8 enable) if (enable) { if(!no_wake) - rtw_hal_set_global_info_cmd(padapter, - psecpriv->dot118021XGrpPrivacy, - psecpriv->dot11PrivacyAlgrthm); + rtw_hal_set_global_info_cmd(padapter); if (!(ppwrpriv->wowlan_pno_enable)) { if (!no_wake) @@ -6426,8 +6819,7 @@ static void rtw_hal_ap_wow_enable(_adapter *padapter) rtw_hal_set_output_gpio(padapter, pwrpriv->wowlan_gpio_index, val8); rtw_hal_switch_gpio_wl_ctrl(padapter, pwrpriv->wowlan_gpio_index, _TRUE); RTW_INFO("%s: set GPIO_%d to OUTPUT %s state in ap wow suspend and %s_ACTIVE.\n", - __func__, pwrpriv->wowlan_gpio_index, - pwrpriv->wowlan_gpio_output_state ? "HIGH" : "LOW", + __func__, pwrpriv->wowlan_gpio_index, val8 ? "HIGH" : "LOW", pwrpriv->is_high_active ? "HIGI" : "LOW"); #endif /* CONFIG_WAKEUP_GPIO_INPUT_MODE */ #endif /* CONFIG_RTW_ONE_PIN_GPIO */ @@ -8233,6 +8625,33 @@ void rtw_hal_construct_ProbeRsp(_adapter *padapter, u8 *pframe, u32 *pLength, } #ifdef CONFIG_WOWLAN +static u8 get_enc_overhead(u32 enc_alg) +{ + u8 enc_overhead; + + switch (enc_alg) { + case _WEP40_: + case _WEP104_: + enc_overhead = 4; + break; + case _TKIP_: + enc_overhead = 8; + break; + case _AES_: + enc_overhead = 8; + break; +#ifdef CONFIG_WAPI_SUPPORT + case _SMS4_: + enc_overhead = 18; + break; +#endif + default: + enc_overhead = 0; + } + + return enc_overhead; +} + static void rtw_hal_append_tkip_mic(PADAPTER padapter, u8 *pframe, u32 offset) { @@ -8248,6 +8667,7 @@ static void rtw_hal_append_tkip_mic(PADAPTER padapter, u8 mic[8]; u8 priority[4] = {0x0}; u8 null_key[16] = {0x0}; + _rtw_memset(&micdata, 0, sizeof(struct mic_data)); RTW_INFO("%s(): Add MIC, offset: %d\n", __func__, offset); @@ -8317,7 +8737,12 @@ static void rtw_hal_construct_ARPRsp( SetToDs(fctrl); _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); _rtw_memcpy(pwlanhdr->addr2, adapter_mac_addr(padapter), ETH_ALEN); - _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); +#ifdef CONFIG_ARP_KEEP_ALIVE_GW + if (!is_zero_mac_addr(pmlmepriv->gw_mac_addr)) + _rtw_memcpy(pwlanhdr->addr3, pmlmepriv->gw_mac_addr, ETH_ALEN); + else +#endif + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); SetSeqNum(pwlanhdr, 0); set_duration(pwlanhdr, 0); @@ -8335,26 +8760,7 @@ static void rtw_hal_construct_ARPRsp( #else *pLength = 24; #endif - switch (psecuritypriv->dot11PrivacyAlgrthm) { - case _WEP40_: - case _WEP104_: - EncryptionHeadOverhead = 4; - break; - case _TKIP_: - EncryptionHeadOverhead = 8; - break; - case _AES_: - EncryptionHeadOverhead = 8; - break; -#ifdef CONFIG_WAPI_SUPPORT - case _SMS4_: - EncryptionHeadOverhead = 18; - break; -#endif - default: - EncryptionHeadOverhead = 0; - } - + EncryptionHeadOverhead = get_enc_overhead(psecuritypriv->dot11PrivacyAlgrthm); if (EncryptionHeadOverhead > 0) { _rtw_memset(&(pframe[*pLength]), 0, EncryptionHeadOverhead); *pLength += EncryptionHeadOverhead; @@ -8381,7 +8787,7 @@ static void rtw_hal_construct_ARPRsp( SET_ARP_OPER(pARPRspPkt, 2); /* ARP response */ SET_ARP_SENDER_MAC_ADDR(pARPRspPkt, adapter_mac_addr(padapter)); SET_ARP_SENDER_IP_ADDR(pARPRspPkt, pIPAddress); -#ifdef CONFIG_ARP_KEEP_ALIVE +#ifdef CONFIG_ARP_KEEP_ALIVE_GW if (!is_zero_mac_addr(pmlmepriv->gw_mac_addr)) { SET_ARP_TARGET_MAC_ADDR(pARPRspPkt, pmlmepriv->gw_mac_addr); SET_ARP_TARGET_IP_ADDR(pARPRspPkt, pmlmepriv->gw_ip); @@ -8389,7 +8795,7 @@ static void rtw_hal_construct_ARPRsp( #endif { SET_ARP_TARGET_MAC_ADDR(pARPRspPkt, - get_my_bssid(&(pmlmeinfo->network))); + adapter_mac_addr(padapter)); SET_ARP_TARGET_IP_ADDR(pARPRspPkt, pIPAddress); RTW_INFO("%s Target Mac Addr:" MAC_FMT "\n", __FUNCTION__, @@ -8458,26 +8864,7 @@ static void rtw_hal_construct_keepalive( PADAPTER padapter, #else *pLength = 24; #endif - switch (psecuritypriv->dot11PrivacyAlgrthm) { - case _WEP40_: - case _WEP104_: - EncryptionHeadOverhead = 4; - break; - case _TKIP_: - EncryptionHeadOverhead = 8; - break; - case _AES_: - EncryptionHeadOverhead = 8; - break; -#ifdef CONFIG_WAPI_SUPPORT - case _SMS4_: - EncryptionHeadOverhead = 18; - break; -#endif - default: - EncryptionHeadOverhead = 0; - } - + EncryptionHeadOverhead = get_enc_overhead(psecuritypriv->dot11PrivacyAlgrthm); if (EncryptionHeadOverhead > 0) { _rtw_memset(&(pframe[*pLength]), 0, EncryptionHeadOverhead); *pLength += EncryptionHeadOverhead; @@ -8572,26 +8959,7 @@ static void rtw_hal_construct_na_message(_adapter *padapter, #else *pLength = 24; #endif - switch (psecuritypriv->dot11PrivacyAlgrthm) { - case _WEP40_: - case _WEP104_: - EncryptionHeadOverhead = 4; - break; - case _TKIP_: - EncryptionHeadOverhead = 8; - break; - case _AES_: - EncryptionHeadOverhead = 8; - break; -#ifdef CONFIG_WAPI_SUPPORT - case _SMS4_: - EncryptionHeadOverhead = 18; - break; -#endif - default: - EncryptionHeadOverhead = 0; - } - + EncryptionHeadOverhead = get_enc_overhead(psecuritypriv->dot11PrivacyAlgrthm); if (EncryptionHeadOverhead > 0) { _rtw_memset(&(pframe[*pLength]), 0, EncryptionHeadOverhead); *pLength += EncryptionHeadOverhead; @@ -8942,26 +9310,7 @@ static void rtw_hal_construct_mdns_rsp_v4( #else *pLength = 24; #endif - switch (psecuritypriv->dot11PrivacyAlgrthm) { - case _WEP40_: - case _WEP104_: - EncryptionHeadOverhead = 4; - break; - case _TKIP_: - EncryptionHeadOverhead = 8; - break; - case _AES_: - EncryptionHeadOverhead = 8; - break; -#ifdef CONFIG_WAPI_SUPPORT - case _SMS4_: - EncryptionHeadOverhead = 18; - break; -#endif - default: - EncryptionHeadOverhead = 0; - } - + EncryptionHeadOverhead = get_enc_overhead(psecuritypriv->dot11PrivacyAlgrthm); if (EncryptionHeadOverhead > 0) { _rtw_memset(&(pframe[*pLength]), 0, EncryptionHeadOverhead); *pLength += EncryptionHeadOverhead; @@ -9077,26 +9426,7 @@ static void rtw_hal_construct_mdns_rsp_v6( #else *pLength = 24; #endif - switch (psecuritypriv->dot11PrivacyAlgrthm) { - case _WEP40_: - case _WEP104_: - EncryptionHeadOverhead = 4; - break; - case _TKIP_: - EncryptionHeadOverhead = 8; - break; - case _AES_: - EncryptionHeadOverhead = 8; - break; -#ifdef CONFIG_WAPI_SUPPORT - case _SMS4_: - EncryptionHeadOverhead = 18; - break; -#endif - default: - EncryptionHeadOverhead = 0; - } - + EncryptionHeadOverhead = get_enc_overhead(psecuritypriv->dot11PrivacyAlgrthm); if (EncryptionHeadOverhead > 0) { _rtw_memset(&(pframe[*pLength]), 0, EncryptionHeadOverhead); *pLength += EncryptionHeadOverhead; @@ -9203,26 +9533,7 @@ static void rtw_hal_construct_GTKRsp( /* ------------------------------------------------------------------------- */ /* Security Header: leave space for it if necessary. */ /* ------------------------------------------------------------------------- */ - switch (psecuritypriv->dot11PrivacyAlgrthm) { - case _WEP40_: - case _WEP104_: - EncryptionHeadOverhead = 4; - break; - case _TKIP_: - EncryptionHeadOverhead = 8; - break; - case _AES_: - EncryptionHeadOverhead = 8; - break; -#ifdef CONFIG_WAPI_SUPPORT - case _SMS4_: - EncryptionHeadOverhead = 18; - break; -#endif /* CONFIG_WAPI_SUPPORT */ - default: - EncryptionHeadOverhead = 0; - } - + EncryptionHeadOverhead = get_enc_overhead(psecuritypriv->dot11PrivacyAlgrthm); if (EncryptionHeadOverhead > 0) { _rtw_memset(&(pframe[*pLength]), 0, EncryptionHeadOverhead); *pLength += EncryptionHeadOverhead; @@ -9276,7 +9587,6 @@ static void rtw_hal_construct_remote_control_info(_adapter *adapter, struct stainfo_rxcache *prxcache; u8 cur_dot11rxiv[8], id = 0, tid_id = 0, i = 0; size_t sz = 0, total = 0; - u64 ccmp_hdr = 0, tmp_key = 0; psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv)); @@ -9317,21 +9627,117 @@ static void rtw_hal_construct_remote_control_info(_adapter *adapter, total /= sizeof(psecuritypriv->iv_seq[0]); for (i = 0 ; i < total ; i ++) { - ccmp_hdr = - le64_to_cpu(*(u64*)psecuritypriv->iv_seq[i]); _rtw_memset(&cur_dot11rxiv, 0, sz); - if (ccmp_hdr != 0) { - tmp_key = i; - ccmp_hdr = PN_2_CCMPH(ccmp_hdr, tmp_key); - *(u64*)cur_dot11rxiv = cpu_to_le64(ccmp_hdr); - _rtw_memcpy(pframe, cur_dot11rxiv, sz); - } + + rtw_pn_to_iv(psecuritypriv->iv_seq[i], cur_dot11rxiv, i, + psecuritypriv->dot118021XGrpPrivacy); + _rtw_memcpy(pframe, cur_dot11rxiv, sz); + + RTW_INFO("[wow] gtk_rx_iv[%u] = " IV_FMT "\n", i, + IV_ARG(cur_dot11rxiv)); + *pLength += sz; pframe += sz; } } } +static void rtw_hal_construct_channel_set(_adapter *adapter, u8 *pframe, u16 *pLength) +{ + struct rtw_chset *chset = adapter_to_chset(adapter); + u8 i = 0; + + /* Fill Channel Set Version 0x01*/ + pframe[0] = 0x01; + + while (i < chset->chs_len) { + if (!(chset->chs[i].flags & RTW_CHF_DIS)) + pframe[8 + 1 + i] = chset->chs[i].ChannelNum; + i++; + } + + /* Fill total number of channels */ + pframe[8] = chset->enable_ch_num; + + *pLength = 8 + 1 + chset->enable_ch_num; +} + +#ifdef CONFIG_IEEE80211W +static void rtw_hal_construct_ieee80211w_info(_adapter *adapter, u8 *pframe, + u16 *len) +{ + struct security_priv *psec_priv = &adapter->securitypriv; + u8 ieee80211w_info_ver = 0x01; + + _rtw_memcpy(pframe, &ieee80211w_info_ver, 1); + *len += 8; + _rtw_memcpy(pframe + *len, &psec_priv->dot11wBIPKeyid, 2); + *len += 2; + _rtw_memcpy(pframe + *len, &psec_priv->dot11wBIPrxpn.val, 6); + *len += 6; + _rtw_memcpy(pframe + *len, psec_priv->dot11wBIPKey[4].skey, 32); + *len += 32; + _rtw_memcpy(pframe + *len, psec_priv->dot11wBIPKey[5].skey, 32); + *len += 32; + +#if 0 + printk("BIP key ID: 0x%02x\n",psecpriv->dot11wBIPKeyid); + { + int i; + u8 key_id = psecpriv->dot11wBIPKeyid; + + printk("IPN: %llx\n", psecpriv->dot11wBIPrxpn.val); + printk("IGTK:\n"); + for (i = 0; i < 32; i++) { + printk(" %02x,", + psecpriv->dot11wBIPKey[key_id].skey[i]); + } + printk("\n"); + } +#endif +} + +void rtw_hal_construct_sa_query(_adapter *padapter, u8* pframe, u32 *pktlen) +{ + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct sta_info *psta; + struct rtw_ieee80211_hdr *pwlanhdr; + u8 *bssid; + u8 enc_overhead; + u8 category = RTW_WLAN_CATEGORY_SA_QUERY; + u8 action = 0; + u8 tid = 0; + + bssid = get_my_bssid(&pmlmeinfo->network); + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + _rtw_memcpy(pwlanhdr->addr1, bssid, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, adapter_mac_addr(padapter), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, bssid, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + set_frame_sub_type(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + *pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + enc_overhead = get_enc_overhead(psecuritypriv->dot11PrivacyAlgrthm); + if (enc_overhead > 0) { + SetPrivacy(&pwlanhdr->frame_ctl); + pframe = pframe + enc_overhead; + *pktlen += enc_overhead; + } + + pframe = rtw_set_fixed_ie(pframe, 1, &category, pktlen); + pframe = rtw_set_fixed_ie(pframe, 1, &action, pktlen); + pframe = rtw_set_fixed_ie(pframe, 2, &tid, pktlen); +} +#endif + static void rtw_hal_gate_bb(_adapter *adapter, bool stop) { struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(adapter); @@ -10450,7 +10856,7 @@ static void rtw_hal_wow_enable(_adapter *adapter) } #ifdef CONFIG_GTK_OL - if (psecuritypriv->binstallKCK_KEK == _TRUE) + if (psecuritypriv->binstallKCK_KEK && chk_need_swap_cam(adapter)) rtw_hal_fw_sync_cam_id(adapter); #endif if (IS_HARDWARE_TYPE_8723B(adapter)) @@ -10485,33 +10891,23 @@ static void rtw_hal_wow_enable(_adapter *adapter) if(!no_wake) rtw_hal_dl_pattern(adapter, 1); - if (!pwrctl->wowlan_pno_enable) { - psta = rtw_get_stainfo(&adapter->stapriv, get_bssid(pmlmepriv)); - - if (psta != NULL) { - #ifdef CONFIG_FW_MULTI_PORT_SUPPORT - adapter_to_dvobj(adapter)->dft.port_id = 0xFF; - adapter_to_dvobj(adapter)->dft.mac_id = 0xFF; - rtw_hal_set_default_port_id_cmd(adapter, psta->cmn.mac_id); - #endif - if(!no_wake) - rtw_sta_media_status_rpt(adapter, psta, 1); - } + psta = rtw_get_stainfo(&adapter->stapriv, get_bssid(pmlmepriv)); + if (psta != NULL) { + #ifdef CONFIG_FW_MULTI_PORT_SUPPORT + adapter_to_dvobj(adapter)->dft.port_id = 0xFF; + adapter_to_dvobj(adapter)->dft.mac_id = 0xFF; + rtw_hal_set_default_port_id_cmd(adapter, psta->cmn.mac_id); + #endif + if(!no_wake) + rtw_sta_media_status_rpt(adapter, psta, 1); + } else { #ifdef CONFIG_FW_MULTI_PORT_SUPPORT - else { - if(registry_par->suspend_type == FW_IPS_WRC) { - adapter_to_dvobj(adapter)->dft.port_id = 0xFF; - adapter_to_dvobj(adapter)->dft.mac_id = 0xFF; - rtw_hal_set_default_port_id_cmd(adapter, 0); - } - } -#endif /* CONFIG_FW_MULTI_PORT_SUPPORT */ - } -#ifdef CONFIG_FW_MULTI_PORT_SUPPORT - else { + adapter_to_dvobj(adapter)->dft.port_id = 0xFF; + adapter_to_dvobj(adapter)->dft.mac_id = 0xFF; rtw_hal_set_default_port_id_cmd(adapter, 0); - } #endif /* CONFIG_FW_MULTI_PORT_SUPPORT */ + RTW_INFO("%s: no-link case, hw port=%d\n", __func__, get_hw_port(adapter)); + } #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) /* Enable CPWM2 only. */ @@ -10532,11 +10928,10 @@ static void rtw_hal_wow_enable(_adapter *adapter) GPIO_OUTPUT_LOW); #else val8 = (pwrctl->is_high_active == 0) ? 1 : 0; - rtw_hal_set_output_gpio(adapter, pwrctl->wowlan_gpio_index, val8); rtw_hal_switch_gpio_wl_ctrl(adapter, pwrctl->wowlan_gpio_index, _TRUE); + rtw_hal_set_output_gpio(adapter, pwrctl->wowlan_gpio_index, val8); RTW_INFO("%s: set GPIO_%d to OUTPUT %s state in wow suspend and %s_ACTIVE.\n", - __func__, pwrctl->wowlan_gpio_index, - pwrctl->wowlan_gpio_output_state ? "HIGH" : "LOW", + __func__, pwrctl->wowlan_gpio_index, val8 ? "HIGH" : "LOW", pwrctl->is_high_active ? "HIGI" : "LOW"); #endif /* CONFIG_WAKEUP_GPIO_INPUT_MODE */ #endif /* CONFIG_RTW_ONE_PIN_GPIO */ @@ -10550,6 +10945,7 @@ static void rtw_hal_wow_enable(_adapter *adapter) if (res == _FALSE) RTW_INFO("[Error]%s: set wowlan CMD fail!!\n", __func__); + pwrctl->wowlan_is_disconnect_reason = _FALSE; pwrctl->wowlan_wake_reason = rtw_read8(adapter, REG_WOWLAN_WAKE_REASON); @@ -10579,6 +10975,14 @@ static void rtw_hal_wow_enable(_adapter *adapter) #endif #if defined(CONFIG_USB_HCI) || defined(CONFIG_PCI_HCI) +#ifndef CONFIG_USB_INBAND + /* don't generate usb toggle signal during suspend process */ + if(_rtw_wow_chk_cap(adapter, WOW_CAP_DIS_INBAND_SIGNAL)) { + rtw_write8(adapter, 0xfe10, 0x19); + RTW_INFO("disable usb in-band signal, 0xfe10: 0x%02x\n", + rtw_read8(adapter, 0xfe10)); + } +#endif /* Invoid SE0 reset signal during suspending*/ rtw_write8(adapter, REG_RSV_CTRL, 0x20); if (IS_8188F(pHalData->version_id) == FALSE @@ -10609,6 +11013,8 @@ void _dbg_rtw_wake_up_reason(_adapter *adapter, u8 reason) _dbg_wake_up_reason_string(adapter, "Rx deauth"); else if (RX_ARP_REQUEST == reason) _dbg_wake_up_reason_string(adapter, "Rx ARP request"); + else if (RX_EAPREQ_IDENTIFY == reason) + _dbg_wake_up_reason_string(adapter, "Rx EAP req inentify"); else if (FW_DECISION_DISCONNECT == reason) _dbg_wake_up_reason_string(adapter, "FW detect disconnect"); else if (RX_MAGIC_PKT == reason) @@ -10617,6 +11023,12 @@ void _dbg_rtw_wake_up_reason(_adapter *adapter, u8 reason) _dbg_wake_up_reason_string(adapter, "Rx unicast packet"); else if (RX_PATTERN_PKT == reason) _dbg_wake_up_reason_string(adapter, "Rx pattern packet"); + else if (MDNS_RX_QUERY_PKT == reason) + _dbg_wake_up_reason_string(adapter, "Rx mdns query packet"); + else if (MDNS_PASSTHRU_FORWARD_ALL == reason) + _dbg_wake_up_reason_string(adapter, "mdns query packet passthrough forward"); + else if (MDNS_PASSTHRU_LIST_MATCH == reason) + _dbg_wake_up_reason_string(adapter, "mdns query packet passthrough list matched"); else if (RX_PNO == reason) _dbg_wake_up_reason_string(adapter, "RX PNO"); else if (RTD3_SSID_MATCH == reason) @@ -10643,11 +11055,38 @@ void _dbg_rtw_wake_up_reason(_adapter *adapter, u8 reason) else if (WOW_KEEPALIVE_WAKE == reason) _dbg_wake_up_reason_string(adapter, "rx keep alive wake pattern"); #endif /*CONFIG_WOW_KEEP_ALIVE_PATTERN*/ + else if (NO_WAKE_RX_PAIRWISEKEY == reason) + _dbg_wake_up_reason_string(adapter, "no wake of Rx pairwise key"); + else if (NO_WAKE_RX_GTK == reason) + _dbg_wake_up_reason_string(adapter, "no wake of Rx GTK"); + else if (NO_WAKE_RX_DISASSOC == reason) + _dbg_wake_up_reason_string(adapter, "no wake of Rx disassoc"); + else if (NO_WAKE_RX_DEAUTH == reason) + _dbg_wake_up_reason_string(adapter, "no wake of Rx deauth"); + else if (NO_WAKE_RX_EAPREQ_IDENTIFY == reason) + _dbg_wake_up_reason_string(adapter, "no wake of Rx EAP req inentify"); + else if (NO_WAKE_FW_DECISION_DISCONNECT == reason) + _dbg_wake_up_reason_string(adapter, "no wake of FW detect disconnect"); else _dbg_wake_up_reason_string(adapter, "unknown reasoen"); } #endif +static u8 is_wow_disconnect_reason(u8 wake_reason) +{ + if ((wake_reason == RX_DISASSOC) || + (wake_reason == RX_DEAUTH) || + (wake_reason == FW_DECISION_DISCONNECT) || + (wake_reason == NO_WAKE_RX_PAIRWISEKEY) || + (wake_reason == NO_WAKE_RX_GTK) || + (wake_reason == NO_WAKE_RX_DISASSOC) || + (wake_reason == NO_WAKE_RX_DEAUTH) || + (wake_reason == NO_WAKE_RX_EAPREQ_IDENTIFY) || + (wake_reason == NO_WAKE_FW_DECISION_DISCONNECT)) + return _TRUE; + else + return _FALSE; +} static void rtw_hal_wow_disable(_adapter *adapter) { int i; @@ -10659,6 +11098,9 @@ static void rtw_hal_wow_disable(_adapter *adapter) struct registry_priv *registry_par = &adapter->registrypriv; int res; u16 media_status_rpt; +#ifdef CONFIG_GPIO_WAKEUP + u8 val8 = 0; +#endif RTW_PRINT("%s, WOWLAN_DISABLE\n", __func__); @@ -10689,6 +11131,9 @@ static void rtw_hal_wow_disable(_adapter *adapter) pwrctl->wowlan_wake_reason = rtw_read8(adapter, REG_WOWLAN_WAKE_REASON); + if (is_wow_disconnect_reason(pwrctl->wowlan_wake_reason)) + pwrctl->wowlan_is_disconnect_reason = _TRUE; + RTW_PRINT("wakeup_reason: 0x%02x\n", pwrctl->wowlan_wake_reason); #ifdef DBG_WAKEUP_REASON @@ -10704,16 +11149,12 @@ static void rtw_hal_wow_disable(_adapter *adapter) rtw_hal_enable_tx_report(adapter); #endif - if ((pwrctl->wowlan_wake_reason != RX_DISASSOC) && - (pwrctl->wowlan_wake_reason != RX_DEAUTH) && - (pwrctl->wowlan_wake_reason != FW_DECISION_DISCONNECT) && - (pwrctl->wowlan_wake_reason != NO_WAKE_RX_PAIRWISEKEY) && - (pwrctl->wowlan_wake_reason != NO_WAKE_RX_GTK) && - (pwrctl->wowlan_wake_reason != NO_WAKE_RX_DISASSOC) && - (pwrctl->wowlan_wake_reason != NO_WAKE_RX_DEAUTH) && - (pwrctl->wowlan_wake_reason != NO_WAKE_RX_EAPREQ_IDENTIFY)) { + if (!pwrctl->wowlan_is_disconnect_reason) { rtw_hal_get_aoac_rpt(adapter); - rtw_hal_update_sw_security_info(adapter); + if (check_fwstate(&adapter->mlmepriv, WIFI_ASOC_STATE) == _TRUE) { + rtw_hal_update_sw_security_info(adapter); + rtw_hal_sync_csa_info(adapter); + } } if (res == _FALSE) { @@ -10752,19 +11193,15 @@ static void rtw_hal_wow_disable(_adapter *adapter) rtw_hal_set_output_gpio(adapter, pwrctl->wowlan_gpio_index, GPIO_OUTPUT_LOW); #else - rtw_hal_set_output_gpio(adapter, pwrctl->wowlan_gpio_index - , pwrctl->wowlan_gpio_output_state); + val8 = (pwrctl->is_high_active == 0) ? 1 : 0; + rtw_hal_set_output_gpio(adapter, pwrctl->wowlan_gpio_index, val8); RTW_INFO("%s: set GPIO_%d to OUTPUT %s state in wow resume and %s_ACTIVE.\n", - __func__, pwrctl->wowlan_gpio_index, - pwrctl->wowlan_gpio_output_state ? "HIGH" : "LOW", + __func__, pwrctl->wowlan_gpio_index, val8 ? "HIGH" : "LOW", pwrctl->is_high_active ? "HIGI" : "LOW"); #endif /* CONFIG_WAKEUP_GPIO_INPUT_MODE */ #endif /* CONFIG_RTW_ONE_PIN_GPIO */ #endif /* CONFIG_GPIO_WAKEUP */ - if ((pwrctl->wowlan_wake_reason != FW_DECISION_DISCONNECT) && - (pwrctl->wowlan_wake_reason != RX_PAIRWISEKEY) && - (pwrctl->wowlan_wake_reason != RX_DISASSOC) && - (pwrctl->wowlan_wake_reason != RX_DEAUTH)) { + if (!pwrctl->wowlan_is_disconnect_reason) { media_status_rpt = RT_MEDIA_CONNECT; rtw_hal_set_hwreg(adapter, HW_VAR_H2C_FW_JOINBSSRPT, @@ -10834,8 +11271,250 @@ static void rtw_hal_construct_pattern_info( } #endif /* CONFIG_WOW_PATTERN_IN_TXFIFO */ -void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, - u8 tx_desc, u32 page_size, u8 *page_num, u32 *total_pkt_len, + +#ifdef CONFIG_MDNS_OFFLOAD +static void rtw_hal_construct_mdns_resp(PADAPTER padapter, u8 *pframe) +{ + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + struct rtw_mdns_ofld_info *mdns_ofld_info = &pwrctl->mdns_ofld_info; + struct rtw_mdns_resp_entry *mdns_resp_entry = NULL; + u16 le16; + u16 offset = 0; + u8 i; + u8 j; + + /* MDNS PROTOCOL DATA Formate Version */ + pframe[offset] = 0x1; + offset += 8; + + for (i = 0; i < MAX_MDNS_RESP_NUM; i++) { + if (!mdns_ofld_info->resp_entry[i].content_len) { + _rtw_memset(&pframe[offset], 0, 554); + offset += 554; + continue; + } + + mdns_resp_entry = &mdns_ofld_info->resp_entry[i]; + + for (j = 0; j < MAX_MDNS_MATCH_CRITERIA_NUM; j++) { + le16 = cpu_to_le16(mdns_resp_entry->match_ct[j].name_offset); + _rtw_memcpy(&pframe[offset], &le16, 2); + offset += 2; + le16 = cpu_to_le16(mdns_resp_entry->match_ct[j].type); + _rtw_memcpy(&pframe[offset], &le16, 2); + offset += 2; + pframe[offset] = mdns_resp_entry->match_ct[j].name_len; + offset += 1; + } + + le16 = cpu_to_le16(mdns_resp_entry->content_len); + _rtw_memcpy(&pframe[offset], &le16, 2); + offset += 2; + _rtw_memcpy(&pframe[offset], mdns_resp_entry->content, MAX_MDNS_RESP_LEN); + offset += MAX_MDNS_RESP_LEN; + } + + /* Verify offload size + if (offset != 4440) + RTW_INFO("%s(): Wrong offload size %d\n", __func__, offset); + else + RTW_INFO("%s(): Correct offload size %d\n", __func__, offset); + */ +} + +static void rtw_hal_construct_passthru_list(PADAPTER padapter, u8 *pframe) +{ + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + struct rtw_mdns_ofld_info *mdns_ofld_info = &pwrctl->mdns_ofld_info; + struct rtw_mdns_passthru_list *passthru_list = &mdns_ofld_info->passthru_list; + struct rtw_mdns_passthru_name *passthru_name = NULL; + u16 offset = 0; + u8 i; + + + /* MDNS PASSTHRU LIST Formate Version */ + pframe[offset] = 0x1; + offset += 8; + + for (i = 0; i < MAX_MDNS_PASSTHRU_NAME_NUM; i++) { + passthru_name = &passthru_list->passthru_name[i]; + if (!passthru_name->name_len) { + _rtw_memset(&pframe[offset], 0, 256); + offset += 256; + continue; + } + + pframe[offset] = passthru_name->name_len; + offset += 1; + _rtw_memcpy(&pframe[offset], passthru_name->name, + MAX_MDNS_DOMAIN_NAME_LEN); + offset += MAX_MDNS_DOMAIN_NAME_LEN; + } + + /* Verify offload size + if (offset != 2056) + RTW_INFO("%s(): Wrong offload size %d\n", __func__, offset); + else + RTW_INFO("%s(): Correct offload size %d\n", __func__, offset); + */ +} + +static void rtw_hal_construct_ipv4_packet(PADAPTER padapter, u8 *pframe, u16 *length) +{ + struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct rtw_ieee80211_hdr *pwlanhdr; + u16 *fctrl; + u8 llc_header[8] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00}; + u8 mulicast_ipv4_addr[4] = {0xe0, 0x00, 0x00, 0xfb}; + u8 mdns_mac_addr[6] = {0x01, 0x00, 0x5e, 0x00, 0x00, 0xfb}; + u8 EncryptionHeadOverhead = 0; + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &pwlanhdr->frame_ctl; + *(fctrl) = 0; + + /* ------------------------------------------------------------------------- */ + /* MAC Header. */ + /* ------------------------------------------------------------------------- */ + SetFrameType(fctrl, WIFI_DATA); + /* set_frame_sub_type(fctrl, 0); */ + SetToDs(fctrl); + + _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, adapter_mac_addr(padapter), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, mdns_mac_addr, ETH_ALEN ); + + SetSeqNum(pwlanhdr, 0); + set_duration(pwlanhdr, 0); + +#ifdef CONFIG_WAPI_SUPPORT + *length = sMacHdrLng; +#else + *length = 24; +#endif + EncryptionHeadOverhead = get_enc_overhead(psecuritypriv->dot118021XGrpPrivacy); + if (EncryptionHeadOverhead > 0) { + _rtw_memset(&(pframe[*length]), 0, EncryptionHeadOverhead); + *length += EncryptionHeadOverhead; + SetPrivacy(fctrl); + } + + /* ------------------------------------------------------------------------- */ + /* Frame Body. */ + /* ------------------------------------------------------------------------- */ + + /* LLC header */ + _rtw_memcpy(&pframe[*length], llc_header, sizeof(llc_header)); + *length += 8; + + /* IP element */ + SET_IPHDR_VERSION(&pframe[*length], 0x45); + SET_IPHDR_DSCP(&pframe[*length], 0); + SET_IPHDR_TOTAL_LEN(&pframe[*length], 0); // filled by fw + SET_IPHDR_IDENTIFIER(&pframe[*length], 0); // filled by fw + SET_IPHDR_FLAGS(&pframe[*length], 0x40); + SET_IPHDR_FRAG_OFFSET(&pframe[*length], 0); + SET_IPHDR_TTL(&pframe[*length], 0x40); + SET_IPHDR_PROTOCOL(&pframe[*length], 0x11); // UDP + SET_IPHDR_HDR_CHECKSUM(&pframe[*length], 0); // filled by fw + SET_IPHDR_SRC_IP_ADDR(&pframe[*length], pmlmeinfo->ip_addr); + SET_IPHDR_DST_IP_ADDR(&pframe[*length], mulicast_ipv4_addr); + *length += 20; + + /* UDP element */ + SET_UDP_SRC_PORT(&pframe[*length], 0xe914); // MDNS + SET_UDP_DST_PORT(&pframe[*length], 0xe914); // MDNS + SET_UDP_LEN(&pframe[*length], 0); // filled by fw + SET_UDP_CHECKSUM(&pframe[*length], 0); // filled by fw + *length += 8; + + /* MDNS content filled by fw */ + *length += MAX_MDNS_RESP_LEN; +} + +#ifdef CONFIG_IPV6 +static void rtw_hal_construct_ipv6_packet(PADAPTER padapter, u8 *pframe, u16 *length) +{ + struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct rtw_ieee80211_hdr *pwlanhdr; + u16 *fctrl; + u8 llc_ipv6_header[8] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00, 0x86, 0xdd}; + u8 mulicast_ipv6_addr[16] = {0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb}; + u8 mdns_ipv6_mac_addr[6] = {0x33, 0x33, 0x00, 0x00, 0x00, 0xfb}; + u8 EncryptionHeadOverhead = 0; + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &pwlanhdr->frame_ctl; + *(fctrl) = 0; + + /* ------------------------------------------------------------------------- */ + /* MAC Header. */ + /* ------------------------------------------------------------------------- */ + SetFrameType(fctrl, WIFI_DATA); + /* set_frame_sub_type(fctrl, 0); */ + SetToDs(fctrl); + + _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, adapter_mac_addr(padapter), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, mdns_ipv6_mac_addr, ETH_ALEN ); + + SetSeqNum(pwlanhdr, 0); + set_duration(pwlanhdr, 0); + +#ifdef CONFIG_WAPI_SUPPORT + *length = sMacHdrLng; +#else + *length = 24; +#endif + EncryptionHeadOverhead = get_enc_overhead(psecuritypriv->dot118021XGrpPrivacy); + if (EncryptionHeadOverhead > 0) { + _rtw_memset(&(pframe[*length]), 0, EncryptionHeadOverhead); + *length += EncryptionHeadOverhead; + SetPrivacy(fctrl); + } + + /* ------------------------------------------------------------------------- */ + /* Frame Body. */ + /* ------------------------------------------------------------------------- */ + + /* LLC header */ + _rtw_memcpy(&pframe[*length], llc_ipv6_header, sizeof(llc_ipv6_header)); + *length += 8; + + /* IP element */ + SET_IPHDRV6_VERSION(&pframe[*length], 0x06); + SET_IPHDRV6_FLOW_LABEL(&pframe[*length], 0); // filled by fw + SET_IPHDRV6_PAYLOAD_LENGTH(&pframe[*length], 0); // filled by fw + SET_IPHDRV6_NEXT_HEADER(&pframe[*length], 0x11);// UDP + SET_IPHDRV6_HOP_LIMIT(&pframe[*length], 0xFF); + SET_IPHDRV6_SRC_IP_ADDR(&pframe[*length], pmlmeinfo->ip6_addr); + SET_IPHDRV6_DST_IP_ADDR(&pframe[*length], mulicast_ipv6_addr); + *length += 40; + + /* UDP element */ + SET_UDP_SRC_PORT(&pframe[*length], 0xe914); // MDNS + SET_UDP_DST_PORT(&pframe[*length], 0xe914); // MDNS + SET_UDP_LEN(&pframe[*length], 0); // filled by fw + SET_UDP_CHECKSUM(&pframe[*length], 0); // filled by fw + *length += 8; + + /* MDNS content filled by fw */ + *length += MAX_MDNS_RESP_LEN; +} +#endif +#endif + +void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, + u8 tx_desc, u32 page_size, u8 *page_num, RSVDPAGE_LOC *rsvd_page_loc) { struct security_priv *psecuritypriv = &adapter->securitypriv; @@ -10843,6 +11522,7 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(adapter); struct mlme_ext_priv *pmlmeext; struct mlme_ext_info *pmlmeinfo; + struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); u32 ARPLength = 0, GTKLength = 0, PNOLength = 0, ScanInfoLength = 0; u32 ProbeReqLength = 0, ns_len = 0, rc_len = 0; u8 CurtPktPageNum = 0; @@ -10861,6 +11541,7 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, struct security_priv *psecpriv = &adapter->securitypriv; u8 kek[RTW_KEK_LEN]; u8 kck[RTW_KCK_LEN]; + u8 gtk_info_v2_ver = 0x01; #endif /* CONFIG_GTK_OL */ #ifdef CONFIG_PNO_SUPPORT int pno_index; @@ -10871,7 +11552,17 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, u32 cam_start_offset = 0; u32 reg_cam_start_offset_val = 0; #endif /* CONFIG_WOW_PATTERN_IN_TXFIFO */ - + u16 channel_set_len = 0; +#ifdef CONFIG_IEEE80211W + u16 ieee80211w_info_len = 0; + u32 sa_query_len = 0; +#endif +#ifdef CONFIG_MDNS_OFFLOAD + u16 mdns_rsvd_len = 0; + u8 mdns_need_ofld_pkt = 0; + struct rtw_mdns_ofld_info *mdns_ofld_info = &pwrctl->mdns_ofld_info; + struct rtw_mdns_passthru_list *mdns_passthru_list = &mdns_ofld_info->passthru_list; +#endif pmlmeext = &adapter->mlmeextpriv; pmlmeinfo = &pmlmeext->mlmext_info; @@ -10893,33 +11584,31 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, #endif /* CONFIG_WAR_OFFLOAD */ - rtw_hal_construct_ARPRsp(adapter, &pframe[index], + rtw_hal_construct_ARPRsp(adapter, &pframe[*index], &ARPLength, pmlmeinfo->ip_addr); rtw_hal_fill_fake_txdesc(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], ARPLength, _FALSE, _FALSE, _TRUE); CurtPktPageNum = (u8)PageNum(tx_desc + ARPLength, page_size); - *page_num += CurtPktPageNum; - - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-ARPRsp", CurtPktPageNum, *page_num, 0); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-ARPRsp", CurtPktPageNum, *page_num); #ifdef CONFIG_WOW_KEEP_ALIVE_PATTERN /* Keep Alive * ? page*/ if(pwrctl->keep_alive_pattern_len){ rsvd_page_loc->LocKeepAlive = *page_num; pwrctl->keep_alive_pattern_loc = rsvd_page_loc->LocKeepAlive; RTW_INFO("pwrctl->keep_alive_pattern_loc: %d\n", pwrctl->keep_alive_pattern_loc); - rtw_hal_construct_keepalive(adapter,&pframe[index],&keep_alive_len); + rtw_hal_construct_keepalive(adapter,&pframe[*index],&keep_alive_len); rtw_hal_fill_fake_txdesc(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], keep_alive_len, _FALSE, _FALSE, _TRUE); CurtPktPageNum = (u8)PageNum(tx_desc + keep_alive_len, page_size); *page_num += CurtPktPageNum; - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-KeepAlive:", CurtPktPageNum, *page_num, 0); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-KeepAlive:", CurtPktPageNum, *page_num); } #endif /* CONFIG_WOW_KEEP_ALIVE_PATTERN*/ @@ -10929,29 +11618,29 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, rsvd_page_loc->LocNbrAdv = *page_num; RTW_INFO("LocNbrAdv: %d\n", rsvd_page_loc->LocNbrAdv); rtw_hal_construct_na_message(adapter, - &pframe[index], &ns_len); + &pframe[*index], &ns_len); rtw_hal_fill_fake_txdesc(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], ns_len, _FALSE, _FALSE, _TRUE); CurtPktPageNum = (u8)PageNum(tx_desc + ns_len, page_size); *page_num += CurtPktPageNum; - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-NbrAdv", CurtPktPageNum, *page_num, 0); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-NbrAdv", CurtPktPageNum, *page_num); rsvd_page_loc->LocNDPInfo = *page_num; RTW_INFO("LocNDPInfo: %d\n", rsvd_page_loc->LocNDPInfo); rtw_hal_construct_ndp_info(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], &ns_len); CurtPktPageNum = (u8)PageNum(tx_desc + ns_len, page_size); *page_num += CurtPktPageNum; - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-NDPInfo", CurtPktPageNum, *page_num, 0); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-NDPInfo", CurtPktPageNum, *page_num); } #endif /*CONFIG_IPV6*/ @@ -10959,15 +11648,13 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, rsvd_page_loc->LocRemoteCtrlInfo = *page_num; RTW_INFO("LocRemoteCtrlInfo: %d\n", rsvd_page_loc->LocRemoteCtrlInfo); rtw_hal_construct_remote_control_info(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], &rc_len); CurtPktPageNum = (u8)PageNum(rc_len, page_size); *page_num += CurtPktPageNum; - *total_pkt_len = index + rc_len; - RSVD_PAGE_CFG("WOW-RCI", CurtPktPageNum, *page_num, *total_pkt_len); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-RCI", CurtPktPageNum, *page_num); #ifdef CONFIG_GTK_OL - index += (CurtPktPageNum * page_size); - /* if the ap staion info. exists, get the kek, kck from staion info. */ psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv)); if (psta == NULL) { @@ -10981,72 +11668,102 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, } /* 3 KEK, KCK */ - rsvd_page_loc->LocGTKInfo = *page_num; - RTW_INFO("LocGTKInfo: %d\n", rsvd_page_loc->LocGTKInfo); + if (psecuritypriv->auth_type != MLME_AUTHTYPE_SAE || + !(hal_spec->wow_cap & WOW_CAP_WPA3_SAE)) { + rsvd_page_loc->LocGTKInfo = *page_num; + RTW_INFO("LocGTKInfo: %d\n", rsvd_page_loc->LocGTKInfo); - if (IS_HARDWARE_TYPE_8188E(adapter) || IS_HARDWARE_TYPE_8812(adapter)) { - struct security_priv *psecpriv = NULL; + if (IS_HARDWARE_TYPE_8188E(adapter) || IS_HARDWARE_TYPE_8812(adapter)) { + struct security_priv *psecpriv = NULL; - psecpriv = &adapter->securitypriv; - _rtw_memcpy(pframe + index - tx_desc, - &psecpriv->dot11PrivacyAlgrthm, 1); - _rtw_memcpy(pframe + index - tx_desc + 1, - &psecpriv->dot118021XGrpPrivacy, 1); - _rtw_memcpy(pframe + index - tx_desc + 2, - kck, RTW_KCK_LEN); - _rtw_memcpy(pframe + index - tx_desc + 2 + RTW_KCK_LEN, - kek, RTW_KEK_LEN); - CurtPktPageNum = (u8)PageNum(tx_desc + 2 + RTW_KCK_LEN + RTW_KEK_LEN, page_size); - } else { + psecpriv = &adapter->securitypriv; + _rtw_memcpy(pframe + *index - tx_desc, + &psecpriv->dot11PrivacyAlgrthm, 1); + _rtw_memcpy(pframe + *index - tx_desc + 1, + &psecpriv->dot118021XGrpPrivacy, 1); + _rtw_memcpy(pframe + *index - tx_desc + 2, + kck, RTW_KCK_LEN); + _rtw_memcpy(pframe + *index - tx_desc + 2 + RTW_KCK_LEN, + kek, RTW_KEK_LEN); + GTKLength = 2 + RTW_KCK_LEN + RTW_KEK_LEN; + } else { - _rtw_memcpy(pframe + index - tx_desc, kck, RTW_KCK_LEN); - _rtw_memcpy(pframe + index - tx_desc + RTW_KCK_LEN, - kek, RTW_KEK_LEN); - GTKLength = tx_desc + RTW_KCK_LEN + RTW_KEK_LEN; + _rtw_memcpy(pframe + *index - tx_desc, kck, RTW_KCK_LEN); + _rtw_memcpy(pframe + *index - tx_desc + RTW_KCK_LEN, + kek, RTW_KEK_LEN); + GTKLength = RTW_KCK_LEN + RTW_KEK_LEN; - if (psta != NULL && - psecuritypriv->dot118021XGrpPrivacy == _TKIP_) { - _rtw_memcpy(pframe + index - tx_desc + 56, - &psta->dot11tkiptxmickey, RTW_TKIP_MIC_LEN); - GTKLength += RTW_TKIP_MIC_LEN; + if (psta != NULL && + psecuritypriv->dot118021XGrpPrivacy == _TKIP_) { + /* KCK + KEK + TK1 + TXMicKey = 56 */ + _rtw_memcpy(pframe + *index - tx_desc + 56, + &psta->dot11tkiptxmickey, RTW_TKIP_MIC_LEN); + GTKLength += RTW_TKIP_MIC_LEN; + } } - CurtPktPageNum = (u8)PageNum(GTKLength, page_size); - } #if 0 - { - int i; - printk("\ntoFW KCK: "); - for (i = 0; i < 16; i++) - printk(" %02x ", kck[i]); - printk("\ntoFW KEK: "); - for (i = 0; i < 16; i++) - printk(" %02x ", kek[i]); - printk("\n"); - } + { + int i; + printk("\ntoFW KCK: "); + for (i = 0; i < 16; i++) + printk(" %02x ", kck[i]); + printk("\ntoFW KEK: "); + for (i = 0; i < 16; i++) + printk(" %02x ", kek[i]); + printk("\n"); + } - RTW_INFO("%s(): HW_VAR_SET_TX_CMD: KEK KCK %p %d\n", - __FUNCTION__, &pframe[index - tx_desc], - (tx_desc + RTW_KCK_LEN + RTW_KEK_LEN)); + RTW_INFO("%s(): HW_VAR_SET_TX_CMD: KEK KCK %p %d\n", + __FUNCTION__, &pframe[*index - tx_desc], + (tx_desc + RTW_KCK_LEN + RTW_KEK_LEN)); #endif + CurtPktPageNum = (u8)PageNum(GTKLength, page_size); + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-GTKInfo", CurtPktPageNum, *page_num); + } else { + rsvd_page_loc->loc_gtk_info_v2 = *page_num; + RTW_INFO("loc_gtk_info_v2: %d\n", + rsvd_page_loc->loc_gtk_info_v2); - *page_num += CurtPktPageNum; + _rtw_memcpy(pframe + *index - tx_desc, + >k_info_v2_ver, 1); + GTKLength += 8; - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-GTKInfo", CurtPktPageNum, *page_num, 0); + pframe[*index - tx_desc + GTKLength] = RTW_KCK_LEN; + GTKLength += 1; + + _rtw_memcpy(pframe + *index - tx_desc + GTKLength, kck, + RTW_KCK_LEN); + GTKLength += RTW_KCK_LEN; + + pframe[*index - tx_desc + GTKLength] = RTW_KEK_LEN; + GTKLength += 1; + + _rtw_memcpy(pframe + *index - tx_desc + GTKLength, kek, + RTW_KEK_LEN); + GTKLength += RTW_KEK_LEN; + + CurtPktPageNum = (u8)PageNum(GTKLength, page_size); + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-GTK_INFO_V2", CurtPktPageNum, + *page_num); + } /* 3 GTK Response */ rsvd_page_loc->LocGTKRsp = *page_num; RTW_INFO("LocGTKRsp: %d\n", rsvd_page_loc->LocGTKRsp); - rtw_hal_construct_GTKRsp(adapter, &pframe[index], >KLength); + rtw_hal_construct_GTKRsp(adapter, &pframe[*index], >KLength); - rtw_hal_fill_fake_txdesc(adapter, &pframe[index - tx_desc], + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], GTKLength, _FALSE, _FALSE, _TRUE); #if 0 { int gj; printk("123GTK pkt=>\n"); for (gj = 0; gj < GTKLength + tx_desc; gj++) { - printk(" %02x ", pframe[index - tx_desc + gj]); + printk(" %02x ", pframe[*index - tx_desc + gj]); if ((gj + 1) % 16 == 0) printk("\n"); } @@ -11054,34 +11771,144 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, } RTW_INFO("%s(): HW_VAR_SET_TX_CMD: GTK RSP %p %d\n", - __FUNCTION__, &pframe[index - tx_desc], + __FUNCTION__, &pframe[*index - tx_desc], (tx_desc + GTKLength)); #endif CurtPktPageNum = (u8)PageNum(tx_desc + GTKLength, page_size); - *page_num += CurtPktPageNum; - - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-GTKRsp", CurtPktPageNum, *page_num, 0); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-GTKRsp", CurtPktPageNum, *page_num); /* below page is empty for GTK extension memory */ /* 3(11) GTK EXT MEM */ rsvd_page_loc->LocGTKEXTMEM = *page_num; RTW_INFO("LocGTKEXTMEM: %d\n", rsvd_page_loc->LocGTKEXTMEM); - CurtPktPageNum = 2; - - if (page_size >= 256) - CurtPktPageNum = 1; + CurtPktPageNum = (u8)PageNum(PAGE_SIZE_256, page_size); *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); /* extension memory for FW */ - *total_pkt_len = index + (page_size * CurtPktPageNum); - RSVD_PAGE_CFG("WOW-GTKEXTMEM", CurtPktPageNum, *page_num, *total_pkt_len); + RSVD_PAGE_CFG("WOW-GTKEXTMEM", CurtPktPageNum, *page_num); #endif /* CONFIG_GTK_OL */ - index += (CurtPktPageNum * page_size); +#ifdef CONFIG_IEEE80211W + if (hal_spec->wow_cap & WOW_CAP_WPA3_SAE) { + /* IEEE802.11W Information */ + rsvd_page_loc->loc_ieee80211w_info = *page_num; + RTW_INFO("loc_ieee80211w_info: %d\n", + rsvd_page_loc->loc_ieee80211w_info); + rtw_hal_construct_ieee80211w_info(adapter, + &pframe[*index - tx_desc], + &ieee80211w_info_len); + + CurtPktPageNum = (u8)PageNum(ieee80211w_info_len, page_size); + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-IEEE80211W_INFO", CurtPktPageNum, *page_num); + + /* SA Query packet for IEEE802.11W */ + rsvd_page_loc->loc_sa_query = *page_num; + RTW_INFO("loc_sa_query: %d\n", rsvd_page_loc->loc_sa_query); + + rtw_hal_construct_sa_query(adapter, &pframe[*index], + &sa_query_len); + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], + sa_query_len, _FALSE, _FALSE, _TRUE); + + CurtPktPageNum = (u8)PageNum(tx_desc + sa_query_len, page_size); + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-SA Query", CurtPktPageNum, *page_num); + } +#endif + + if (hal_spec->wow_cap & WOW_CAP_CSA) { + /* Channel Set for WoW switching channel */ + rsvd_page_loc->loc_channel_set = *page_num; + RTW_INFO("loc_channel_set: %d\n", rsvd_page_loc->loc_channel_set); + + rtw_hal_construct_channel_set(adapter, &pframe[*index - tx_desc], + &channel_set_len); + + CurtPktPageNum = (u8)PageNum(channel_set_len, page_size); + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-loc_csa_chset", CurtPktPageNum, *page_num); + } +#ifdef CONFIG_MDNS_OFFLOAD + if (hal_spec->wow_cap & WOW_CAP_MDNS) { + int i; + + /* Check mdns response exist */ + for (i = 0; i < MAX_MDNS_RESP_NUM; i++) { + if (mdns_ofld_info->resp_entry[i].content_len) + mdns_need_ofld_pkt = _TRUE; + } + + /* IPv4 packet format */ + if (mdns_need_ofld_pkt && + !is_all_null(pmlmeinfo->ip_addr, RTW_IP_ADDR_LEN)) { + rsvd_page_loc->loc_ipv4_header = *page_num; + RTW_INFO("loc_ipv4_header: %d\n", rsvd_page_loc->loc_ipv4_header); + + rtw_hal_construct_ipv4_packet(adapter, &pframe[*index], &mdns_rsvd_len); + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], + mdns_rsvd_len, _FALSE, _FALSE, _TRUE); + + CurtPktPageNum = (u8)PageNum(mdns_rsvd_len, page_size); + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-loc_ipv4_header", CurtPktPageNum, *page_num); + } +#ifdef CONFIG_IPV6 + /* IPv6 packet format */ + if (mdns_need_ofld_pkt && + !is_all_null(pmlmeinfo->ip6_addr, RTW_IPv6_ADDR_LEN)) { + rsvd_page_loc->loc_ipv6_header = *page_num; + RTW_INFO("loc_ipv6_header: %d\n", rsvd_page_loc->loc_ipv6_header); + + rtw_hal_construct_ipv6_packet(adapter, &pframe[*index], &mdns_rsvd_len); + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], + mdns_rsvd_len, _FALSE, _FALSE, _TRUE); + + CurtPktPageNum = (u8)PageNum(mdns_rsvd_len, page_size); + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-loc_ipv6_header", CurtPktPageNum, *page_num); + } +#endif + /* mDNS protcol data */ + if (mdns_need_ofld_pkt) { + rsvd_page_loc->loc_mdns_protocol_data = *page_num; + RTW_INFO("loc_mdns_protocol_data: %d\n", + rsvd_page_loc->loc_mdns_protocol_data); + + rtw_hal_construct_mdns_resp(adapter, &pframe[*index - tx_desc]); + + CurtPktPageNum = (u8)PageNum(8 + 546 * MAX_MDNS_RESP_NUM, page_size); + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-loc_mdns_protocol_data", CurtPktPageNum, *page_num); + } + + /* mDNS passthru list */ + if (mdns_passthru_list->passthru_behavior == PASSTHRU_LIST || + mdns_passthru_list->passthru_name_num != 0) { + rsvd_page_loc->loc_mdns_passthru_list = *page_num; + RTW_INFO("loc_mdns_passthru_list: %d\n", + rsvd_page_loc->loc_mdns_passthru_list); + + rtw_hal_construct_passthru_list(adapter, &pframe[*index - tx_desc]); + + CurtPktPageNum = (u8)PageNum(8 + 258 * MAX_MDNS_PASSTHRU_NAME_NUM, page_size); + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-loc_mdns_passthru_list", CurtPktPageNum, *page_num); + } + } +#endif #ifdef CONFIG_WAR_OFFLOAD if(_TRUE == pwrctl->wowlan_war_offload_mode) { u8 zero_ary[16] = {0x00}; @@ -11122,12 +11949,12 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, if (0 == pwrctl->wowlan_war_offload_ipv4.ip_addr[0]) _rtw_memcpy(&pwrctl->wowlan_war_offload_ipv4.ip_addr[0], pmlmeinfo->ip_addr, 4); for(war_tmp_cnt=0; war_tmp_cnt<4 ;war_tmp_cnt++) - _rtw_memcpy(pframe + index - tx_desc + (war_tmp_cnt*4), &pwrctl->wowlan_war_offload_ipv4.ip_addr[war_tmp_cnt], 4); + _rtw_memcpy(pframe + *index - tx_desc + (war_tmp_cnt*4), &pwrctl->wowlan_war_offload_ipv4.ip_addr[war_tmp_cnt], 4); if (is_zero_mac_addr(pwrctl->wowlan_war_offload_mac)) { _rtw_memcpy(pwrctl->wowlan_war_offload_mac, adapter_mac_addr(adapter), 6); } - _rtw_memcpy(pframe + index + 16 - tx_desc, pwrctl->wowlan_war_offload_mac, 6); + _rtw_memcpy(pframe + *index + 16 - tx_desc, pwrctl->wowlan_war_offload_mac, 6); /* ipv6 : 8 */ @@ -11135,15 +11962,15 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, _rtw_memcpy(pwrctl->wowlan_war_offload_ipv6.ipv6_addr[0], pmlmeinfo->ip6_addr, RTW_IPv6_ADDR_LEN); for(war_tmp_cnt=0; war_tmp_cnt<8 ;war_tmp_cnt++) - _rtw_memcpy(pframe + index + page_size - tx_desc + (war_tmp_cnt*16), pwrctl->wowlan_war_offload_ipv6.ipv6_addr[war_tmp_cnt], 16); + _rtw_memcpy(pframe + *index + page_size - tx_desc + (war_tmp_cnt*16), pwrctl->wowlan_war_offload_ipv6.ipv6_addr[war_tmp_cnt], 16); rsvd_page_loc->LocIpParm = *page_num; - - tmp_idx = index; + RTW_INFO("LocIpParm: %d\n", rsvd_page_loc->LocIpParm); + + tmp_idx = *index; CurtPktPageNum = 2; *page_num += CurtPktPageNum; - *total_pkt_len = index + (page_size * CurtPktPageNum); - index += (CurtPktPageNum * page_size); + *index += (CurtPktPageNum * page_size); #if defined(CONFIG_OFFLOAD_MDNS_V4) || defined(CONFIG_OFFLOAD_MDNS_V6) @@ -11156,7 +11983,7 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, u8 txt_in_ptr[31]={ 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x13, 0x09, 0x74, 0x78, 0x74, 0x76, 0x65, 0x72, 0x73, 0x3d, 0x31, 0x08, 0x71, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x3d, 0x31}; - u16 mdns_offset = index - tx_desc; + u16 mdns_offset = *index - tx_desc; u8 i = 0; rsvd_page_loc->LocMdnsPara = *page_num; @@ -11303,10 +12130,9 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, mdns_offset += ( 2 + txt_rsp_len ); } - CurtPktPageNum = (u8)PageNum(mdns_offset - index, page_size)+1; + CurtPktPageNum = (u8)PageNum(mdns_offset + tx_desc - *index, page_size)+1; *page_num += CurtPktPageNum; - *total_pkt_len = index + (page_size * CurtPktPageNum); - index += (CurtPktPageNum * page_size); + *index += (CurtPktPageNum * page_size); } #endif /* defined(CONFIG_OFFLOAD_MDNS_V4) || defined(CONFIG_OFFLOAD_MDNS_V6) */ @@ -11315,11 +12141,11 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, rsvd_page_loc->LocMdnsv4 = *page_num; RTW_INFO("LocMdnsv4: %d\n", rsvd_page_loc->LocMdnsv4); - rtw_hal_construct_mdns_rsp_v4(adapter, &pframe[index], &buf_len, pmlmeinfo->ip_addr); - rtw_hal_fill_fake_txdesc(adapter, &pframe[index - tx_desc], buf_len, _FALSE, _FALSE, _TRUE); + rtw_hal_construct_mdns_rsp_v4(adapter, &pframe[*index], &buf_len, pmlmeinfo->ip_addr); + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], buf_len, _FALSE, _FALSE, _TRUE); CurtPktPageNum = 16; *page_num += CurtPktPageNum; - index += (CurtPktPageNum * page_size); + *index += (CurtPktPageNum * page_size); } #endif /* CONFIG_OFFLOAD_MDNS_V4 */ @@ -11328,11 +12154,11 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, rsvd_page_loc->LocMdnsv6 = *page_num; RTW_INFO("LocMdnsv6: %d\n", rsvd_page_loc->LocMdnsv6); - rtw_hal_construct_mdns_rsp_v6(adapter, &pframe[index], &buf_len, pmlmeinfo->ip_addr); - rtw_hal_fill_fake_txdesc(adapter, &pframe[index - tx_desc], buf_len, _FALSE, _FALSE, _TRUE); + rtw_hal_construct_mdns_rsp_v6(adapter, &pframe[*index], &buf_len, pmlmeinfo->ip_addr); + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], buf_len, _FALSE, _FALSE, _TRUE); CurtPktPageNum = 16; *page_num += CurtPktPageNum; - index += (CurtPktPageNum * page_size); + *index += (CurtPktPageNum * page_size); } #endif /* CONFIG_OFFLOAD_MDNS_V6 */ @@ -11351,7 +12177,7 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, pwrctl->pattern_rsvd_page_loc = *page_num; RTW_INFO("LocPatternInfo: %d\n", pwrctl->pattern_rsvd_page_loc); rtw_hal_construct_pattern_info(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], &PatternLen); /* Set cam_start_offset to REG_TXBUF_WKCAM_OFFSET @@ -11373,19 +12199,22 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, CurtPktPageNum = (u8)PageNum(PatternLen, page_size); *page_num += CurtPktPageNum; - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-PatternInfo", CurtPktPageNum, *page_num, index); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-PatternInfo", CurtPktPageNum, *page_num); #endif /* CONFIG_WOW_PATTERN_IN_TXFIFO */ - /*Reserve 1 page for AOAC report*/ + /* Reserve page(s) for AOAC report */ rsvd_page_loc->LocAOACReport = *page_num; RTW_INFO("LocAOACReport: %d\n", rsvd_page_loc->LocAOACReport); - *page_num += 1; - *total_pkt_len = index + (page_size * 1); - RSVD_PAGE_CFG("WOW-AOAC", 1, *page_num, *total_pkt_len); + CurtPktPageNum = sizeof(struct aoac_report) / page_size; + if (CurtPktPageNum * page_size < sizeof(struct aoac_report)) + CurtPktPageNum += 1; + *page_num += CurtPktPageNum; + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-AOAC", 1, *page_num); } else { #ifdef CONFIG_PNO_SUPPORT if (pwrctl->wowlan_in_resume == _FALSE && @@ -11399,34 +12228,31 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, rtw_hal_construct_ProbeReq( adapter, - &pframe[index], + &pframe[*index], &ProbeReqLength, NULL); rtw_hal_fill_fake_txdesc(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], ProbeReqLength, _FALSE, _FALSE, _FALSE); CurtPktPageNum = (u8)PageNum(tx_desc + ProbeReqLength, page_size); - *page_num += CurtPktPageNum; - - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-ProbeReq", CurtPktPageNum, *page_num, 0); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-ProbeReq", CurtPktPageNum, *page_num); /* Scan Info Page */ rsvd_page_loc->LocScanInfo = *page_num; RTW_INFO("LocScanInfo: %d\n", rsvd_page_loc->LocScanInfo); rtw_hal_construct_scan_info(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], &ScanInfoLength); CurtPktPageNum = (u8)PageNum(ScanInfoLength, page_size); *page_num += CurtPktPageNum; - - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-ScanInfo", CurtPktPageNum, *page_num, *total_pkt_len); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-ScanInfo", CurtPktPageNum, *page_num); #endif /* Hidden SSID Probe Request */ ssid_num = pwrctl->pnlo_info->hidden_ssid_num; @@ -11437,35 +12263,32 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, rtw_hal_construct_ProbeReq( adapter, - &pframe[index], + &pframe[*index], &ProbeReqLength, &pwrctl->pno_ssid_list->node[pno_index]); rtw_hal_fill_fake_txdesc(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], ProbeReqLength, _FALSE, _FALSE, _FALSE); CurtPktPageNum = (u8)PageNum(tx_desc + ProbeReqLength, page_size); - *page_num += CurtPktPageNum; - - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-ProbeReq", CurtPktPageNum, *page_num, 0); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-ProbeReq", CurtPktPageNum, *page_num); } /* PNO INFO Page */ rsvd_page_loc->LocPNOInfo = *page_num; RTW_INFO("LocPNOInfo: %d\n", rsvd_page_loc->LocPNOInfo); rtw_hal_construct_PNO_info(adapter, - &pframe[index - tx_desc], + &pframe[*index - tx_desc], &PNOLength); CurtPktPageNum = (u8)PageNum(PNOLength, page_size); *page_num += CurtPktPageNum; - *total_pkt_len = index + PNOLength; - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-PNOInfo", CurtPktPageNum, *page_num, 0); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-PNOInfo", CurtPktPageNum, *page_num); } #endif /* CONFIG_PNO_SUPPORT */ } @@ -11473,8 +12296,8 @@ void rtw_hal_set_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, #endif /*CONFIG_WOWLAN*/ #ifdef CONFIG_P2P_WOWLAN -void rtw_hal_set_p2p_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, - u8 tx_desc, u32 page_size, u8 *page_num, u32 *total_pkt_len, +void rtw_hal_set_p2p_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, + u8 tx_desc, u32 page_size, u8 *page_num, RSVDPAGE_LOC *rsvd_page_loc) { u32 P2PNegoRspLength = 0, P2PInviteRspLength = 0; @@ -11483,94 +12306,80 @@ void rtw_hal_set_p2p_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, /* P2P Beacon */ rsvd_page_loc->LocP2PBeacon = *page_num; - rtw_hal_construct_P2PBeacon(adapter, &pframe[index], &P2PBCNLength); - rtw_hal_fill_fake_txdesc(adapter, &pframe[index - tx_desc], + rtw_hal_construct_P2PBeacon(adapter, &pframe[*index], &P2PBCNLength); + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], P2PBCNLength, _FALSE, _FALSE, _FALSE); #if 0 RTW_INFO("%s(): HW_VAR_SET_TX_CMD: PROBE RSP %p %d\n", - __FUNCTION__, &pframe[index - tx_desc], (P2PBCNLength + tx_desc)); + __FUNCTION__, &pframe[*index - tx_desc], (P2PBCNLength + tx_desc)); #endif CurtPktPageNum = (u8)PageNum(tx_desc + P2PBCNLength, page_size); - *page_num += CurtPktPageNum; - - index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("WOW-P2P-Beacon", CurtPktPageNum, *page_num, 0); + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-P2P-Beacon", CurtPktPageNum, *page_num); /* P2P Probe rsp */ rsvd_page_loc->LocP2PProbeRsp = *page_num; - rtw_hal_construct_P2PProbeRsp(adapter, &pframe[index], + rtw_hal_construct_P2PProbeRsp(adapter, &pframe[*index], &P2PProbeRspLength); - rtw_hal_fill_fake_txdesc(adapter, &pframe[index - tx_desc], + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], P2PProbeRspLength, _FALSE, _FALSE, _FALSE); /* RTW_INFO("%s(): HW_VAR_SET_TX_CMD: PROBE RSP %p %d\n", */ - /* __FUNCTION__, &pframe[index-tx_desc], (P2PProbeRspLength+tx_desc)); */ + /* __FUNCTION__, &pframe[*index-tx_desc], (P2PProbeRspLength+tx_desc)); */ CurtPktPageNum = (u8)PageNum(tx_desc + P2PProbeRspLength, page_size); - *page_num += CurtPktPageNum; - - index += (CurtPktPageNum * page_size); + *index += (CurtPktPageNum * page_size); RSVD_PAGE_CFG("WOW-P2P-ProbeRsp", CurtPktPageNum, *page_num, 0); /* P2P nego rsp */ rsvd_page_loc->LocNegoRsp = *page_num; - rtw_hal_construct_P2PNegoRsp(adapter, &pframe[index], + rtw_hal_construct_P2PNegoRsp(adapter, &pframe[*index], &P2PNegoRspLength); - rtw_hal_fill_fake_txdesc(adapter, &pframe[index - tx_desc], + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], P2PNegoRspLength, _FALSE, _FALSE, _FALSE); /* RTW_INFO("%s(): HW_VAR_SET_TX_CMD: QOS NULL DATA %p %d\n", */ - /* __FUNCTION__, &pframe[index-tx_desc], (NegoRspLength+tx_desc)); */ + /* __FUNCTION__, &pframe[*index-tx_desc], (NegoRspLength+tx_desc)); */ CurtPktPageNum = (u8)PageNum(tx_desc + P2PNegoRspLength, page_size); - *page_num += CurtPktPageNum; - - index += (CurtPktPageNum * page_size); + *index += (CurtPktPageNum * page_size); RSVD_PAGE_CFG("WOW-P2P-NegoRsp", CurtPktPageNum, *page_num, 0); /* P2P invite rsp */ rsvd_page_loc->LocInviteRsp = *page_num; - rtw_hal_construct_P2PInviteRsp(adapter, &pframe[index], + rtw_hal_construct_P2PInviteRsp(adapter, &pframe[*index], &P2PInviteRspLength); - rtw_hal_fill_fake_txdesc(adapter, &pframe[index - tx_desc], + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], P2PInviteRspLength, _FALSE, _FALSE, _FALSE); /* RTW_INFO("%s(): HW_VAR_SET_TX_CMD: QOS NULL DATA %p %d\n", */ - /* __FUNCTION__, &pframe[index-tx_desc], (InviteRspLength+tx_desc)); */ + /* __FUNCTION__, &pframe[*index-tx_desc], (InviteRspLength+tx_desc)); */ CurtPktPageNum = (u8)PageNum(tx_desc + P2PInviteRspLength, page_size); - *page_num += CurtPktPageNum; - - index += (CurtPktPageNum * page_size); + *index += (CurtPktPageNum * page_size); RSVD_PAGE_CFG("WOW-P2P-InviteRsp", CurtPktPageNum, *page_num, 0); /* P2P provision discovery rsp */ rsvd_page_loc->LocPDRsp = *page_num; rtw_hal_construct_P2PProvisionDisRsp(adapter, - &pframe[index], &P2PPDRspLength); + &pframe[*index], &P2PPDRspLength); - rtw_hal_fill_fake_txdesc(adapter, &pframe[index - tx_desc], + rtw_hal_fill_fake_txdesc(adapter, &pframe[*index - tx_desc], P2PPDRspLength, _FALSE, _FALSE, _FALSE); /* RTW_INFO("%s(): HW_VAR_SET_TX_CMD: QOS NULL DATA %p %d\n", */ - /* __FUNCTION__, &pframe[index-tx_desc], (PDRspLength+tx_desc)); */ + /* __FUNCTION__, &pframe[*index-tx_desc], (PDRspLength+tx_desc)); */ CurtPktPageNum = (u8)PageNum(tx_desc + P2PPDRspLength, page_size); - *page_num += CurtPktPageNum; - - *total_pkt_len = index + P2PPDRspLength; - RSVD_PAGE_CFG("WOW-P2P-PDR", CurtPktPageNum, *page_num, *total_pkt_len); - - index += (CurtPktPageNum * page_size); - - + *index += (CurtPktPageNum * page_size); + RSVD_PAGE_CFG("WOW-P2P-PDR", CurtPktPageNum, *page_num); } #endif /* CONFIG_P2P_WOWLAN */ @@ -11581,7 +12390,7 @@ void rtw_hal_set_p2p_wow_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 index, #include "hal_halmac.h" -#ifdef CONFIG_RTL8822C +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) static int rtw_lps_pg_set_dpk_info_rsvd_page(_adapter *adapter) { struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(adapter); @@ -11694,7 +12503,7 @@ free_mem: exit: return ret; } -#endif /* CONFIG_RTL8822C */ +#endif /* CONFIG_RTL8822C || CONFIG_RTL8822E */ static void rtw_hal_build_lps_pg_info_rsvd_page(struct dvobj_priv *dvobj, _adapter *ld_sta_iface, u8 *buf, u32 *buf_size) { @@ -11841,8 +12650,9 @@ static void rtw_lps_pg_set_rsvd_page(_adapter *adapter, u8 *frame, u16 *index pos = only_get_page_num ? NULL : frame + *index; -#ifdef CONFIG_RTL8822C - if (IS_8822C_SERIES(hal_data->version_id)) { +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) + if (IS_8822C_SERIES(hal_data->version_id) || \ + IS_8822E_SERIES(hal_data->version_id)) { /* LPSPG_DPK_INFO */ cache = &pwrctl->lpspg_dpk_info; if (rsvd) { @@ -11858,7 +12668,7 @@ static void rtw_lps_pg_set_rsvd_page(_adapter *adapter, u8 *frame, u16 *index *total_page_num += cache->page_num; *index += page_size * cache->page_num; pos = only_get_page_num ? NULL : frame + *index; - RSVD_PAGE_CFG(cache->name, cache->page_num, *total_page_num, *index); + RSVD_PAGE_CFG(cache->name, cache->page_num, *total_page_num); } else rsvd_page_cache_free(cache); @@ -11880,7 +12690,7 @@ static void rtw_lps_pg_set_rsvd_page(_adapter *adapter, u8 *frame, u16 *index *total_page_num += cache->page_num; *index += page_size * cache->page_num; pos = only_get_page_num ? NULL : frame + *index; - RSVD_PAGE_CFG(cache->name, cache->page_num, *total_page_num, *index); + RSVD_PAGE_CFG(cache->name, cache->page_num, *total_page_num); } else rsvd_page_cache_free(cache); } @@ -11900,7 +12710,7 @@ static void rtw_lps_pg_set_rsvd_page(_adapter *adapter, u8 *frame, u16 *index *total_page_num += cache->page_num; *index += page_size * cache->page_num; pos = only_get_page_num ? NULL : frame + *index; - RSVD_PAGE_CFG(cache->name, cache->page_num, *total_page_num, *index); + RSVD_PAGE_CFG(cache->name, cache->page_num, *total_page_num); } else rsvd_page_cache_free(cache); } @@ -11942,7 +12752,7 @@ u8 rtw_hal_set_lps_pg_info_cmd(_adapter *adapter) SET_H2CCMD_LPSPG_LOC(lpspg_info, pwrpriv->lpspg_info.loc); -#ifdef CONFIG_RTL8822C +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) if (pwrpriv->bFwCurrentInPSMode == _FALSE) { SET_H2CCMD_LPSPG_DPK_INFO_LOC(lpspg_info, pwrpriv->lpspg_dpk_info.loc); if (!GET_HAL_DATA(adapter)->RegIQKFWOffload) @@ -11974,7 +12784,7 @@ u8 rtw_hal_set_lps_pg_info(_adapter *adapter) rtw_warn_on(1); return ret; } - #ifdef CONFIG_RTL8822C + #if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) rtw_lps_pg_set_dpk_info_rsvd_page(adapter); rtw_lps_pg_set_iqk_info_rsvd_page(adapter); #endif @@ -12018,6 +12828,9 @@ void rtw_hal_lps_pg_handler(_adapter *adapter, enum lps_pg_hdl_id hdl_id) if (IS_8822C_SERIES(GET_HAL_DATA(adapter)->version_id)) break; + if (IS_8822E_SERIES(GET_HAL_DATA(adapter)->version_id)) + break; + /*set xmit_block*/ rtw_set_xmit_block(adapter, XMIT_BLOCK_REDLMEM); if (_FAIL == rtw_hal_fw_mem_dl(adapter, FW_EMEM)) @@ -12029,6 +12842,9 @@ void rtw_hal_lps_pg_handler(_adapter *adapter, enum lps_pg_hdl_id hdl_id) if (IS_8822C_SERIES(GET_HAL_DATA(adapter)->version_id)) break; + if (IS_8822E_SERIES(GET_HAL_DATA(adapter)->version_id)) + break; + if (sta) rtw_phydm_lps_pg_hdl(adapter, sta, _TRUE); break; @@ -12036,6 +12852,9 @@ void rtw_hal_lps_pg_handler(_adapter *adapter, enum lps_pg_hdl_id hdl_id) if (IS_8822C_SERIES(GET_HAL_DATA(adapter)->version_id)) break; + if (IS_8822E_SERIES(GET_HAL_DATA(adapter)->version_id)) + break; + if (sta) { rtw_hal_lps_pg_rssi_lv_decide(adapter, sta); rtw_phydm_lps_pg_hdl(adapter, sta, _FALSE); @@ -12142,7 +12961,6 @@ void rtw_hal_set_pathb_phase(_adapter *adapter, u8 phase_idx) /*#define DBG_DUMP_SET_RSVD_PAGE*/ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page_num) { - PHAL_DATA_TYPE pHalData; struct xmit_frame *pcmdframe = NULL; struct pkt_attrib *pattrib; struct xmit_priv *pxmitpriv; @@ -12163,10 +12981,6 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page u32 fw_dbg_msg_pkt_len = 0; #endif /*DBG_FW_DEBUG_MSG_PKT*/ -#ifdef DBG_CONFIG_ERROR_DETECT - struct sreset_priv *psrtpriv; -#endif /* DBG_CONFIG_ERROR_DETECT */ - #ifdef CONFIG_MCC_MODE u8 dl_mcc_page = _FAIL; #endif /* CONFIG_MCC_MODE */ @@ -12177,10 +12991,6 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page bool is_wow_mode = _FALSE; - pHalData = GET_HAL_DATA(adapter); -#ifdef DBG_CONFIG_ERROR_DETECT - psrtpriv = &pHalData->srestpriv; -#endif pxmitpriv = &adapter->xmitpriv; pwrctl = adapter_to_pwrctl(adapter); @@ -12237,27 +13047,38 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page _rtw_memset(&RsvdPageLoc, 0, sizeof(RSVDPAGE_LOC)); + /* Shift 1 Tx descriptor length */ BufIndex = TxDescOffset; /*======== beacon content =======*/ - rtw_hal_construct_beacon(adapter, - &ReservedPagePacket[BufIndex], &BeaconLength); + if (MLME_IS_STA(adapter) && DEV_AP_NUM(adapter_to_dvobj(adapter))) { + /* AP mode start before STA mode connect to AP, so use AP mode to construct beacon content */ + _adapter *ap_iface; + ap_iface = rtw_mi_get_ap_adapter(adapter); + RTW_INFO("Use AP mode to construct beacon content\n"); + rtw_hal_construct_beacon(ap_iface, + &ReservedPagePacket[BufIndex], &BeaconLength); + } else { + rtw_hal_construct_beacon(adapter, + &ReservedPagePacket[BufIndex], &BeaconLength); + } + /* The TXPKTSIZE in the Tx descriptor of the beacon will be filled when + * all rsvd pages are ready. + */ /* * When we count the first page size, we need to reserve description size for the RSVD * packet, it will be filled in front of the packet in TXPKTBUF. */ - BeaconLength = MAX_BEACON_LEN - TxDescLen; - CurtPktPageNum = (u8)PageNum((TxDescLen + BeaconLength), PageSize); - + CurtPktPageNum = (u8)PageNum((MAX_BEACON_LEN), PageSize); #if defined(CONFIG_FW_HANDLE_TXBCN) || defined(CONFIG_PORT_BASED_TXBCN) CurtPktPageNum = CurtPktPageNum * CONFIG_LIMITED_AP_NUM; #endif TotalPageNum += CurtPktPageNum; BufIndex += (CurtPktPageNum * PageSize); + RSVD_PAGE_CFG("Beacon", CurtPktPageNum, TotalPageNum); - RSVD_PAGE_CFG("Beacon", CurtPktPageNum, TotalPageNum, TotalPacketLen); /*======== probe response content ========*/ if (pwrctl->wowlan_ap_mode == _TRUE) {/*WOW mode*/ @@ -12277,9 +13098,8 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page CurtPktPageNum = (u8)PageNum(TxDescLen + ProbeRspLength, PageSize); TotalPageNum += CurtPktPageNum; - TotalPacketLen = BufIndex + ProbeRspLength; BufIndex += (CurtPktPageNum * PageSize); - RSVD_PAGE_CFG("ProbeRsp", CurtPktPageNum, TotalPageNum, TotalPacketLen); + RSVD_PAGE_CFG("ProbeRsp", CurtPktPageNum, TotalPageNum); goto download_page; } @@ -12306,7 +13126,7 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page TotalPageNum += CurtPktPageNum; BufIndex += (CurtPktPageNum * PageSize); - RSVD_PAGE_CFG("PSPoll", CurtPktPageNum, TotalPageNum, TotalPacketLen); + RSVD_PAGE_CFG("PSPoll", CurtPktPageNum, TotalPageNum); } #ifdef CONFIG_MCC_MODE @@ -12338,7 +13158,7 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page TotalPageNum += CurtPktPageNum; BufIndex += (CurtPktPageNum * PageSize); - RSVD_PAGE_CFG("NullData", CurtPktPageNum, TotalPageNum, TotalPacketLen); + RSVD_PAGE_CFG("NullData", CurtPktPageNum, TotalPageNum); } } @@ -12362,7 +13182,7 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page TotalPageNum += CurtPktPageNum; BufIndex += (CurtPktPageNum * PageSize); - RSVD_PAGE_CFG("QosNull", CurtPktPageNum, TotalPageNum, TotalPacketLen); + RSVD_PAGE_CFG("QosNull", CurtPktPageNum, TotalPageNum); } } @@ -12398,14 +13218,11 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page TotalPageNum += CurtPktPageNum; BufIndex += (CurtPktPageNum * PageSize); - - RSVD_PAGE_CFG("BTQosNull", CurtPktPageNum, TotalPageNum, TotalPacketLen); + RSVD_PAGE_CFG("BTQosNull", CurtPktPageNum, TotalPageNum); } } #endif /* CONFIG_BT_COEXIT */ - TotalPacketLen = BufIndex; - #ifdef DBG_FW_DEBUG_MSG_PKT /*======== FW DEBUG MSG * n page ======== */ RsvdPageLoc.loc_fw_dbg_msg_pkt = TotalPageNum; @@ -12424,8 +13241,6 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page if (CurtPktPageNum < 2) CurtPktPageNum = 2; /*Need at least 2 rsvd page*/ TotalPageNum += CurtPktPageNum; - - TotalPacketLen = BufIndex + fw_dbg_msg_pkt_len; BufIndex += (CurtPktPageNum * PageSize); #endif /*DBG_FW_DEBUG_MSG_PKT*/ @@ -12435,7 +13250,6 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page , (sta_iface && MLME_IS_STA(sta_iface) && MLME_IS_ASOC(sta_iface)) ? sta_iface : NULL , page_num ? 1 : 0 ); - TotalPacketLen = BufIndex; #endif #ifdef CONFIG_WOWLAN @@ -12443,8 +13257,8 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page if (pwrctl->wowlan_mode == _TRUE && pwrctl->wowlan_in_resume == _FALSE) { rtw_hal_set_wow_fw_rsvd_page(adapter, ReservedPagePacket, - BufIndex, TxDescLen, PageSize, - &TotalPageNum, &TotalPacketLen, &RsvdPageLoc); + &BufIndex, TxDescLen, PageSize, + &TotalPageNum, &RsvdPageLoc); #ifdef CONFIG_WAR_OFFLOAD rtw_hal_set_war_offload_parm(adapter, &RsvdPageLoc); #endif /* CONFIG_WAR_OFFLOAD */ @@ -12455,17 +13269,11 @@ static void _rtw_hal_set_fw_rsvd_page(_adapter *adapter, bool finished, u8 *page /*======== P2P WOW * n page ======== */ if (_TRUE == pwrctl->wowlan_p2p_mode) {/*WOW mode*/ rtw_hal_set_p2p_wow_fw_rsvd_page(adapter, ReservedPagePacket, - BufIndex, TxDescLen, PageSize, - &TotalPageNum, &TotalPacketLen, &RsvdPageLoc); + &BufIndex, TxDescLen, PageSize, + &TotalPageNum, &RsvdPageLoc); } #endif /* CONFIG_P2P_WOWLAN */ - /*Note: BufIndex already add a TxDescOffset offset in first Beacon page - * The "TotalPacketLen" is calculate by BufIndex. - * We need to decrease TxDescOffset before doing length check. by yiwei - */ - TotalPacketLen = TotalPacketLen - TxDescOffset; - download_page: if (page_num) { *page_num = TotalPageNum; @@ -12476,6 +13284,8 @@ download_page: return; } + TotalPacketLen = TotalPageNum * PageSize; + /* RTW_INFO("%s BufIndex(%d), TxDescLen(%d), PageSize(%d)\n",__func__, BufIndex, TxDescLen, PageSize);*/ RTW_INFO("%s PageNum(%d), pktlen(%d)\n", __func__, TotalPageNum, TotalPacketLen); @@ -12518,6 +13328,9 @@ download_page: if (pwrctl->wowlan_mode == _TRUE && pwrctl->wowlan_in_resume == _FALSE) rtw_hal_set_FwAoacRsvdPage_cmd(adapter, &RsvdPageLoc); +#ifdef CONFIG_MDNS_OFFLOAD + rtw_hal_set_mdns_ofld_cmd(adapter, &RsvdPageLoc); +#endif #endif /* CONFIG_WOWLAN */ #ifdef CONFIG_AP_WOWLAN if (pwrctl->wowlan_ap_mode == _TRUE) @@ -12777,7 +13590,7 @@ static void hw_var_set_mlme_sitesurvey(_adapter *adapter, u8 enable) #endif if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) - StopTxBeacon(adapter); + StopTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_SCAN); } else { /* sitesurvey done */ /* * 1. enable rx data frame @@ -12806,7 +13619,7 @@ static void hw_var_set_mlme_sitesurvey(_adapter *adapter, u8 enable) #ifdef CONFIG_AP_MODE if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) { - ResumeTxBeacon(adapter); + ResumeTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_SCAN); rtw_mi_tx_beacon_hdl(adapter); } #endif @@ -12827,7 +13640,7 @@ static void hw_var_set_mlme_join(_adapter *adapter, u8 type) if (type == 0) { /* prepare to join */ if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) - StopTxBeacon(adapter); + StopTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_JOIN); /* enable to rx data frame.Accept all data frame */ rtw_write16(adapter, REG_RXFLTMAP2, 0xFFFF); @@ -12847,7 +13660,7 @@ static void hw_var_set_mlme_join(_adapter *adapter, u8 type) rtw_iface_disable_tsf_update(adapter); if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) { - ResumeTxBeacon(adapter); + ResumeTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_JOIN); /* reset TSF 1/2 after ResumeTxBeacon */ rtw_write8(adapter, REG_DUAL_TSF_RST, BIT(1) | BIT(0)); @@ -12862,7 +13675,7 @@ static void hw_var_set_mlme_join(_adapter *adapter, u8 type) } if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) { - ResumeTxBeacon(adapter); + ResumeTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_JOIN); /* reset TSF 1/2 after ResumeTxBeacon */ rtw_write8(adapter, REG_DUAL_TSF_RST, BIT(1) | BIT(0)); @@ -12945,6 +13758,10 @@ int rtw_hal_reset_tsf(_adapter *adapter, u8 reset_port) #ifndef CONFIG_HAS_HW_VAR_CORRECT_TSF #ifdef CONFIG_HW_P0_TSF_SYNC #ifdef CONFIG_CONCURRENT_MODE +/* Base value of tsf sync offset */ +#define TSF_SYNC_BASE_OFFSET 50 +/* Positive and negative offset values for tsf sync */ +#define TSF_SYNC_OFFSET_RANGE 25 static void hw_port0_tsf_sync_sel(_adapter *adapter, u8 benable, u8 hw_port, u16 tr_offset) { u8 val8; @@ -13056,6 +13873,8 @@ void hw_var_set_correct_tsf(PADAPTER adapter, u8 mlme_state) struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; _adapter *sta_if = NULL; u8 hw_port; + s8 tsf_sync_offset_tu = TSF_SYNC_BASE_OFFSET; /* unit is TU(1024us) */ + u8 tsf_offset_range_rand = 0; RTW_INFO(FUNC_ADPT_FMT "\n", FUNC_ADPT_ARG(adapter)); #ifdef DBG_P0_TSF_SYNC @@ -13068,6 +13887,15 @@ void hw_var_set_correct_tsf(PADAPTER adapter, u8 mlme_state) RTW_INFO("[TSF_SYNC] org p0 sync port = %d\n", dvobj->p0_tsf.sync_port); RTW_INFO("[TSF_SYNC] timer offset = %d\n", dvobj->p0_tsf.offset); #endif + + tsf_offset_range_rand = rtw_random32() % (2 * TSF_SYNC_OFFSET_RANGE + 1); + if (tsf_offset_range_rand != 0) { + if (tsf_offset_range_rand > TSF_SYNC_OFFSET_RANGE) + tsf_sync_offset_tu -= (tsf_offset_range_rand - TSF_SYNC_OFFSET_RANGE); + else + tsf_sync_offset_tu += tsf_offset_range_rand; + } + switch (mlme_state) { case MLME_STA_CONNECTED : { @@ -13086,7 +13914,7 @@ void hw_var_set_correct_tsf(PADAPTER adapter, u8 mlme_state) if ((dvobj->p0_tsf.sync_port == MAX_HW_PORT) && (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter))) { - hw_port0_tsf_sync_sel(adapter, _TRUE, hw_port, 50);/*timer offset 50ms*/ + hw_port0_tsf_sync_sel(adapter, _TRUE, hw_port, tsf_sync_offset_tu); #ifdef DBG_P0_TSF_SYNC RTW_INFO("[TSF_SYNC] STA_LINKED => EN P0_TSF_SYNC\n"); #endif @@ -13108,7 +13936,7 @@ void hw_var_set_correct_tsf(PADAPTER adapter, u8 mlme_state) sta_if = _search_ld_sta(adapter, _FALSE); if (sta_if) { hw_port = rtw_hal_get_port(sta_if); - hw_port0_tsf_sync_sel(adapter, _TRUE, hw_port, 50);/*timer offset 50ms*/ + hw_port0_tsf_sync_sel(adapter, _TRUE, hw_port, tsf_sync_offset_tu); #ifdef DBG_P0_TSF_SYNC RTW_INFO("[TSF_SYNC] STA_DIS_CON => CHANGE P0_TSF_SYNC\n"); #endif @@ -13137,7 +13965,7 @@ void hw_var_set_correct_tsf(PADAPTER adapter, u8 mlme_state) sta_if = _search_ld_sta(adapter, _FALSE); if (sta_if) { hw_port = rtw_hal_get_port(sta_if); - hw_port0_tsf_sync_sel(adapter, _TRUE, hw_port, 50);/*timer offset 50ms*/ + hw_port0_tsf_sync_sel(adapter, _TRUE, hw_port, tsf_sync_offset_tu); #ifdef DBG_P0_TSF_SYNC RTW_INFO("[TSF_SYNC] AP_START => EN P0_TSF_SYNC\n"); #endif @@ -13236,7 +14064,7 @@ static void hw_var_set_correct_tsf(_adapter *adapter, u8 mlme_state) if ((mlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE || (mlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) - StopTxBeacon(adapter); + StopTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_CORRECT_TSF); rtw_hal_correct_tsf(adapter, adapter->hw_port, tsf); @@ -13279,7 +14107,7 @@ static void hw_var_set_correct_tsf(_adapter *adapter, u8 mlme_state) #endif /* CONFIG_CONCURRENT_MODE */ if ((mlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE || (mlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) - ResumeTxBeacon(adapter); + ResumeTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_CORRECT_TSF); } #endif /*#ifdef CONFIG_MI_WITH_MBSSID_CAM*/ #endif /*#ifdef CONFIG_HW_P0_TSF_SYNC*/ @@ -13314,11 +14142,13 @@ u64 rtw_hal_get_tsftr_by_port(_adapter *adapter, u8 port) break; } #endif -#if defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) +#if defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) \ + || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) case RTL8814A: case RTL8822B: case RTL8821C: case RTL8822C: + case RTL8822E: { u8 val8; @@ -14380,16 +15210,17 @@ void rtw_hal_check_rxfifo_full(_adapter *adapter) if (regsty->check_hw_status == 1) { /* switch counter to RX fifo */ if (IS_8188E(pHalData->version_id) || - IS_8188F(pHalData->version_id) || - IS_8188GTV(pHalData->version_id) || - IS_8812_SERIES(pHalData->version_id) || - IS_8821_SERIES(pHalData->version_id) || - IS_8723B_SERIES(pHalData->version_id) || - IS_8192E(pHalData->version_id) || - IS_8703B_SERIES(pHalData->version_id) || - IS_8723D_SERIES(pHalData->version_id) || - IS_8192F_SERIES(pHalData->version_id) || - IS_8822C_SERIES(pHalData->version_id)) { + IS_8188F(pHalData->version_id) || + IS_8188GTV(pHalData->version_id) || + IS_8812_SERIES(pHalData->version_id) || + IS_8821_SERIES(pHalData->version_id) || + IS_8723B_SERIES(pHalData->version_id) || + IS_8192E(pHalData->version_id) || + IS_8703B_SERIES(pHalData->version_id) || + IS_8723D_SERIES(pHalData->version_id) || + IS_8192F_SERIES(pHalData->version_id) || + IS_8822C_SERIES(pHalData->version_id) || + IS_8822E_SERIES(pHalData->version_id)) { rtw_write8(adapter, REG_RXERR_RPT + 3, rtw_read8(adapter, REG_RXERR_RPT + 3) | 0xa0); save_cnt = _TRUE; } else { @@ -14804,6 +15635,18 @@ int hal_efuse_macaddr_offset(_adapter *adapter) addr_offset = EEPROM_MAC_ADDR_8723FS; break; #endif /* CONFIG_RTL8723F */ + +#ifdef CONFIG_RTL8822E + case RTL8822E: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8822EU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8822ES; + else if (interface_type == RTW_PCIE) + addr_offset = EEPROM_MAC_ADDR_8822EE; + break; +#endif /* CONFIG_RTL8822E */ + } if (addr_offset == -1) { @@ -15095,6 +15938,7 @@ void rtw_set_usb_agg_by_mode_normal(_adapter *padapter, u8 cur_wireless_mode) remainder = MAX_RECVBUF_SZ % (4 * 1024); quotient = (u8)(MAX_RECVBUF_SZ >> 12); +#ifdef CONFIG_PLATFORM_I386_PC if (quotient > 5) { pHalData->rxagg_usb_size = 0x6; pHalData->rxagg_usb_timeout = 0x10; @@ -15107,13 +15951,25 @@ void rtw_set_usb_agg_by_mode_normal(_adapter *padapter, u8 cur_wireless_mode) pHalData->rxagg_usb_timeout = 0x10; } } +#else + /* Avoid the Synopsys USB host receive buffer size limit */ + if (quotient > 4) + pHalData->rxagg_usb_size = 0x4; + pHalData->rxagg_usb_timeout = 0x10; +#endif + #else /* !CONFIG_PREALLOC_RX_SKB_BUFFER */ +#ifdef CONFIG_PLATFORM_I386_PC if (0x6 != pHalData->rxagg_usb_size || 0x10 != pHalData->rxagg_usb_timeout) { pHalData->rxagg_usb_size = 0x6; pHalData->rxagg_usb_timeout = 0x10; rtw_write16(padapter, REG_RXDMA_AGG_PG_TH, pHalData->rxagg_usb_size | (pHalData->rxagg_usb_timeout << 8)); } +#else + /* Avoid the Synopsys USB host receive buffer size limit */ + rtw_write16(padapter, REG_RXDMA_AGG_PG_TH, 0x1004); +#endif #endif /* CONFIG_PREALLOC_RX_SKB_BUFFER */ } else if (cur_wireless_mode >= WIRELESS_11_24N @@ -15125,6 +15981,7 @@ void rtw_set_usb_agg_by_mode_normal(_adapter *padapter, u8 cur_wireless_mode) remainder = MAX_RECVBUF_SZ % (4 * 1024); quotient = (u8)(MAX_RECVBUF_SZ >> 12); +#ifdef CONFIG_PLATFORM_I386_PC if (quotient > 5) { pHalData->rxagg_usb_size = 0x5; pHalData->rxagg_usb_timeout = 0x20; @@ -15137,13 +15994,24 @@ void rtw_set_usb_agg_by_mode_normal(_adapter *padapter, u8 cur_wireless_mode) pHalData->rxagg_usb_timeout = 0x10; } } +#else + /* Avoid the Synopsys USB host receive buffer size limit */ + if (quotient > 4) + pHalData->rxagg_usb_size = 0x4; + pHalData->rxagg_usb_timeout = 0x10; +#endif #else /* !CONFIG_PREALLOC_RX_SKB_BUFFER */ +#ifdef CONFIG_PLATFORM_I386_PC if ((0x5 != pHalData->rxagg_usb_size) || (0x20 != pHalData->rxagg_usb_timeout)) { pHalData->rxagg_usb_size = 0x5; pHalData->rxagg_usb_timeout = 0x20; rtw_write16(padapter, REG_RXDMA_AGG_PG_TH, pHalData->rxagg_usb_size | (pHalData->rxagg_usb_timeout << 8)); } +#else + /* Avoid the Synopsys USB host receive buffer size limit */ + rtw_write16(padapter, REG_RXDMA_AGG_PG_TH, 0x1004); +#endif #endif /* CONFIG_PREALLOC_RX_SKB_BUFFER */ } else { @@ -15205,7 +16073,7 @@ void dm_DynamicUsbTxAgg(_adapter *padapter, u8 from_timer) #ifdef RTW_HALMAC if (IS_HARDWARE_TYPE_8822BU(padapter) || IS_HARDWARE_TYPE_8821CU(padapter) || IS_HARDWARE_TYPE_8822CU(padapter) || IS_HARDWARE_TYPE_8814BU(padapter) - || IS_HARDWARE_TYPE_8723FU(padapter)) + || IS_HARDWARE_TYPE_8723FU(padapter) || IS_HARDWARE_TYPE_8822EU(padapter)) rtw_hal_set_hwreg(padapter, HW_VAR_RXDMA_AGG_PG_TH, NULL); #else /* !RTW_HALMAC */ if (IS_HARDWARE_TYPE_8821U(padapter)) { /* || IS_HARDWARE_TYPE_8192EU(padapter)) */ @@ -15213,10 +16081,18 @@ void dm_DynamicUsbTxAgg(_adapter *padapter, u8 from_timer) if ((pHalData->rxagg_mode == RX_AGG_USB) && (check_fwstate(pmlmepriv, WIFI_ASOC_STATE) == _TRUE)) { if (pdvobjpriv->traffic_stat.cur_tx_tp > 2 && pdvobjpriv->traffic_stat.cur_rx_tp < 30) rtw_write16(padapter , REG_RXDMA_AGG_PG_TH , 0x1010); +#ifdef CONFIG_PLATFORM_I386_PC else if (pdvobjpriv->traffic_stat.last_tx_bytes > 220000 && pdvobjpriv->traffic_stat.cur_rx_tp < 30) rtw_write16(padapter , REG_RXDMA_AGG_PG_TH , 0x1006); else rtw_write16(padapter, REG_RXDMA_AGG_PG_TH, 0x2005); /* dmc agg th 20K */ +#else + /* Avoid the Synopsys USB host receive buffer size limit */ + else if (pdvobjpriv->traffic_stat.last_tx_bytes > 220000 && pdvobjpriv->traffic_stat.cur_rx_tp < 30) + rtw_write16(padapter , REG_RXDMA_AGG_PG_TH , 0x1004); + else + rtw_write16(padapter, REG_RXDMA_AGG_PG_TH, 0x2004); /* dmc agg th 20K */ +#endif /* RTW_INFO("TX_TP=%u, RX_TP=%u\n", pdvobjpriv->traffic_stat.cur_tx_tp, pdvobjpriv->traffic_stat.cur_rx_tp); */ } @@ -15637,7 +16513,8 @@ void rtw_reset_mac_rx_counters(_adapter *padapter) IS_HARDWARE_TYPE_8188F(padapter) || IS_HARDWARE_TYPE_8188GTV(padapter) || IS_HARDWARE_TYPE_8192F(padapter) || - IS_HARDWARE_TYPE_8822C(padapter)) + IS_HARDWARE_TYPE_8822C(padapter) || + IS_HARDWARE_TYPE_8822E(padapter)) phy_set_mac_reg(padapter, REG_RCR, BIT19, 0x1); /* reset mac counter */ @@ -15956,10 +16833,8 @@ void rtw_set_rts_bw(_adapter *padapter) { int hal_spec_init(_adapter *adapter) { - u8 interface_type = 0; int ret = _SUCCESS; - interface_type = rtw_get_intf_type(adapter); switch (rtw_get_chip_type(adapter)) { #ifdef CONFIG_RTL8723B @@ -16046,6 +16921,11 @@ int hal_spec_init(_adapter *adapter) case RTL8723F: rtl8723f_init_hal_spec(adapter); break; +#endif +#ifdef CONFIG_RTL8822E + case RTL8822E: + rtl8822e_init_hal_spec(adapter); + break; #endif default: RTW_ERR("%s: unknown chip_type:%u\n" @@ -16060,6 +16940,7 @@ int hal_spec_init(_adapter *adapter) static const char *const _band_cap_str[] = { /* BIT0 */"2G", /* BIT1 */"5G", + /* BIT2 */"6G", }; static const char *const _bw_cap_str[] = { @@ -16236,17 +17117,36 @@ u8 hal_largest_bw(_adapter *adapter, u8 in_bw) return in_bw; } -#ifndef CONFIG_HAS_TX_BEACON_PAUSE -void ResumeTxBeacon(_adapter *padapter) +enum tx_pause_rson ctrl_tx_bcn_to_pause_reason(enum ctrl_tx_bcn_reason reason) { - RTW_DBG("ResumeTxBeacon\n"); - #ifdef CONFIG_STOP_RESUME_BCN_BY_TXPAUSE - rtw_write8(padapter, REG_TXPAUSE, - rtw_read8(padapter, REG_TXPAUSE) & (~BIT6)); - #else - rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, - rtw_read8(padapter, REG_FWHW_TXQ_CTRL + 2) | BIT(6)); - #endif + switch (reason) { + case CTRL_TX_BCN_BY_SCAN: + return PAUSE_RSON_SCAN; + case CTRL_TX_BCN_BY_JOIN: + return PAUSE_RSON_JOIN; + case CTRL_TX_BCN_BY_CORRECT_TSF: + return PAUSE_RSON_CORRECT_TSF; + case CTRL_TX_BCN_BY_OTHERS: + default: + return PAUSE_RSON_OTHER_BCN_CTRL; + } +} + +#ifndef CONFIG_HAS_TX_BEACON_PAUSE + +#ifndef CONFIG_STOP_RESUME_BCN_BY_TXPAUSE +#define CONFIG_STOP_RESUME_BCN_BY_TXPAUSE 0x00 +#endif + +void ResumeTxBeacon_with_reason(_adapter *padapter, enum ctrl_tx_bcn_reason reason) +{ + RTW_DBG("ResumeTxBeacon reason:%d\n", reason); + if (BIT(reason) & CONFIG_STOP_RESUME_BCN_BY_TXPAUSE) + rtw_hal_tx_pause(padapter, ctrl_tx_bcn_to_pause_reason(reason), false); + else { + rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, + rtw_read8(padapter, REG_FWHW_TXQ_CTRL + 2) | BIT(6)); + } #ifdef RTW_HALMAC /* Add this for driver using HALMAC because driver doesn't have setup time init by self */ @@ -16255,30 +17155,64 @@ void ResumeTxBeacon(_adapter *padapter) #endif /* TBTT hold time: 0x540[19:8] */ #ifdef CONFIG_NARROWBAND_SUPPORTING - if (padapter->registrypriv.rtw_nb_config == RTW_NB_CONFIG_WIDTH_10) - rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, 0xc8); - else -#endif + if (padapter->registrypriv.rtw_nb_config == RTW_NB_CONFIG_WIDTH_10) { + rtw_write8(padapter, REG_TBTT_PROHIBIT , 0x8); + rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, TBTT_PROHIBIT_HOLD_TIME_10M & 0xFF); + rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, + (rtw_read8(padapter, REG_TBTT_PROHIBIT + 2) & 0xF0) | (TBTT_PROHIBIT_HOLD_TIME_10M >> 8)); + + } else if (padapter->registrypriv.rtw_nb_config == RTW_NB_CONFIG_WIDTH_5) { + rtw_write8(padapter, REG_TBTT_PROHIBIT , 0xf); + rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, TBTT_PROHIBIT_HOLD_TIME_5M & 0xFF); + rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, + (rtw_read8(padapter, REG_TBTT_PROHIBIT + 2) & 0xF0) | (TBTT_PROHIBIT_HOLD_TIME_5M >> 8)); + + } else +#endif /* CONFIG_NARROWBAND_SUPPORTING */ + { rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, TBTT_PROHIBIT_HOLD_TIME & 0xFF); - rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, - (rtw_read8(padapter, REG_TBTT_PROHIBIT + 2) & 0xF0) | (TBTT_PROHIBIT_HOLD_TIME >> 8)); + rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, + (rtw_read8(padapter, REG_TBTT_PROHIBIT + 2) & 0xF0) | (TBTT_PROHIBIT_HOLD_TIME >> 8)); + } +} + +void StopTxBeacon_with_reason(_adapter *padapter, enum ctrl_tx_bcn_reason reason) +{ + RTW_DBG("StopTxBeacon reason:%d\n", reason); + if (BIT(reason) & CONFIG_STOP_RESUME_BCN_BY_TXPAUSE) + rtw_hal_tx_pause(padapter, ctrl_tx_bcn_to_pause_reason(reason), true); + else { + rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, + rtw_read8(padapter, REG_FWHW_TXQ_CTRL + 2) & (~BIT6)); + } + + /* TBTT hold time: 0x540[19:8] */ +#ifdef CONFIG_NARROWBAND_SUPPORTING + if (padapter->registrypriv.rtw_nb_config == RTW_NB_CONFIG_WIDTH_10) { + rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, TBTT_PROHIBIT_HOLD_TIME_10M & 0xFF); + rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, + (rtw_read8(padapter, REG_TBTT_PROHIBIT + 2) & 0xF0) | (TBTT_PROHIBIT_HOLD_TIME_10M >> 8)); + } else if (padapter->registrypriv.rtw_nb_config == RTW_NB_CONFIG_WIDTH_5) { + rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, TBTT_PROHIBIT_HOLD_TIME_5M & 0xFF); + rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, + (rtw_read8(padapter, REG_TBTT_PROHIBIT + 2) & 0xF0) | (TBTT_PROHIBIT_HOLD_TIME_5M >> 8)); + } else +#endif /* CONFIG_NARROWBAND_SUPPORTING */ + { + rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, TBTT_PROHIBIT_HOLD_TIME_STOP_BCN & 0xFF); + rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, + (rtw_read8(padapter, REG_TBTT_PROHIBIT + 2) & 0xF0) | (TBTT_PROHIBIT_HOLD_TIME_STOP_BCN >> 8)); + } +} + +void ResumeTxBeacon(_adapter *padapter) +{ + ResumeTxBeacon_with_reason(padapter, CTRL_TX_BCN_BY_OTHERS); } void StopTxBeacon(_adapter *padapter) { - RTW_DBG("StopTxBeacon\n"); - #ifdef CONFIG_STOP_RESUME_BCN_BY_TXPAUSE - rtw_write8(padapter, REG_TXPAUSE, - rtw_read8(padapter, REG_TXPAUSE) | BIT6); - #else - rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, - rtw_read8(padapter, REG_FWHW_TXQ_CTRL + 2) & (~BIT6)); - #endif - - /* TBTT hold time: 0x540[19:8] */ - rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, TBTT_PROHIBIT_HOLD_TIME_STOP_BCN & 0xFF); - rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, - (rtw_read8(padapter, REG_TBTT_PROHIBIT + 2) & 0xF0) | (TBTT_PROHIBIT_HOLD_TIME_STOP_BCN >> 8)); + StopTxBeacon_with_reason(padapter, CTRL_TX_BCN_BY_OTHERS); } #endif /* CONFIG_HAS_TX_BEACON_PAUSE */ diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_com_c2h.h b/drivers/net/wireless/rtl8822cs/hal/hal_com_c2h.h index b9aa9ffc7..53fb2c351 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_com_c2h.h +++ b/drivers/net/wireless/rtl8822cs/hal/hal_com_c2h.h @@ -67,6 +67,7 @@ typedef enum _C2H_EVT { C2H_MAC_HIDDEN_RPT = 0x19, C2H_MAC_HIDDEN_RPT_2 = 0x1A, C2H_BCN_EARLY_RPT = 0x1E, + C2H_TX_PAUSE_RPT = 0x20, C2H_DEFEATURE_DBG = 0x22, C2H_CUSTOMER_STR_RPT = 0x24, C2H_CUSTOMER_STR_RPT_2 = 0x25, @@ -75,6 +76,7 @@ typedef enum _C2H_EVT { C2H_PER_RATE_RPT = 0x2c, #endif C2H_LPS_STATUS_RPT = 0x32, + C2H_BT_LE_AUDIO_INFO = 0x46, C2H_SET_TXPWR_FINISH = 0x70, C2H_DEFEATURE_RSVD = 0xFD, C2H_EXTEND = 0xff, @@ -105,6 +107,12 @@ int hal_read_mac_hidden_rpt(_adapter *adapter); #define hal_read_mac_hidden_rpt(adapter) _SUCCESS #endif /* CONFIG_RTW_MAC_HIDDEN_RPT */ +#ifdef CONFIG_TX_PAUSE_FW_CTRL +/* C2H_TX_PAUSE_RPT, 0x20 */ +#define TX_PAUSE_RPT_LEN 3 +int c2h_tx_pause_rpt_hdl(_adapter *adapter, u8 *data, u8 len); +#endif + /* C2H_DEFEATURE_DBG, 0x22 */ #define DEFEATURE_DBG_LEN 1 int c2h_defeature_dbg_hdl(_adapter *adapter, u8 *data, u8 len); diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_com_phycfg.c b/drivers/net/wireless/rtl8822cs/hal/hal_com_phycfg.c index c4bbd86bf..5f47f45e4 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_com_phycfg.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_com_phycfg.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -469,6 +469,19 @@ static const struct map_t rtl8814b_pg_txpwr_def_info = ); #endif +#ifdef CONFIG_RTL8822E +static const struct map_t rtl8822e_pg_txpwr_def_info = + MAP_ENT(0xB8, 1, 0xFF + , MAPSEG_ARRAY_ENT(0x10, 82, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x02, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x02, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x02, 0x00, 0xFF, 0xFF, 0x00, 0xFF, + 0x00, 0x00) + ); +#endif + #ifdef CONFIG_TXPWR_PG_WITH_TSSI_OFFSET #ifdef CONFIG_RTL8723F #define EEPROM_TX_PWR_CALIBRATE_RATE EEPROM_TX_PWR_CALIBRATE_RATE_8723F @@ -479,14 +492,16 @@ static const struct map_t rtl8814b_pg_txpwr_def_info = #ifdef CONFIG_RTL8822C #define EEPROM_TX_PWR_CALIBRATE_RATE EEPROM_TX_PWR_CALIBRATE_RATE_8822C #endif + + #ifdef CONFIG_RTL8822E + #define EEPROM_TX_PWR_CALIBRATE_RATE EEPROM_TX_PWR_CALIBRATE_RATE_8822E + #endif #endif /* CONFIG_TXPWR_PG_WITH_TSSI_OFFSET */ const struct map_t *hal_pg_txpwr_def_info(_adapter *adapter) { - u8 interface_type = 0; const struct map_t *map = NULL; - interface_type = rtw_get_intf_type(adapter); switch (rtw_get_chip_type(adapter)) { #ifdef CONFIG_RTL8723B @@ -573,6 +588,11 @@ const struct map_t *hal_pg_txpwr_def_info(_adapter *adapter) case RTL8723F: map = &rtl8723f_pg_txpwr_def_info; break; +#endif +#ifdef CONFIG_RTL8822E + case RTL8822E: + map = &rtl8822e_pg_txpwr_def_info; + break; #endif } @@ -1178,6 +1198,81 @@ int check_phy_efuse_tx_power_info_valid(_adapter *adapter) #endif /* CONFIG_EFUSE_CONFIG_FILE */ #ifdef CONFIG_TXPWR_PG_WITH_PWR_IDX +static u8 rtw_get_ch_group(u8 ch, u8 *group, u8 *cck_group) +{ + BAND_TYPE band = BAND_MAX; + s8 gp = -1, cck_gp = -1; + + if (ch <= 14) { + band = BAND_ON_2_4G; + + if (1 <= ch && ch <= 2) + gp = 0; + else if (3 <= ch && ch <= 5) + gp = 1; + else if (6 <= ch && ch <= 8) + gp = 2; + else if (9 <= ch && ch <= 11) + gp = 3; + else if (12 <= ch && ch <= 14) + gp = 4; + else + band = BAND_MAX; + + if (ch == 14) + cck_gp = 5; + else + cck_gp = gp; + } else { + band = BAND_ON_5G; + + if (36 <= ch && ch <= 42) + gp = 0; + else if (44 <= ch && ch <= 48) + gp = 1; + else if (50 <= ch && ch <= 58) + gp = 2; + else if (60 <= ch && ch <= 64) + gp = 3; + else if (100 <= ch && ch <= 106) + gp = 4; + else if (108 <= ch && ch <= 114) + gp = 5; + else if (116 <= ch && ch <= 122) + gp = 6; + else if (124 <= ch && ch <= 130) + gp = 7; + else if (132 <= ch && ch <= 138) + gp = 8; + else if (140 <= ch && ch <= 144) + gp = 9; + else if (149 <= ch && ch <= 155) + gp = 10; + else if (157 <= ch && ch <= 161) + gp = 11; + else if (165 <= ch && ch <= 171) + gp = 12; + else if (173 <= ch && ch <= 177) + gp = 13; + else + band = BAND_MAX; + } + + if (band == BAND_MAX) { + RTW_WARN("%s invalid channel:%u", __func__, ch); + rtw_warn_on(1); + goto exit; + } + + if (group) + *group = gp; + if (cck_group && band == BAND_ON_2_4G) + *cck_group = cck_gp; + +exit: + return band; +} + void hal_load_txpwr_info(_adapter *adapter) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); @@ -2245,7 +2340,7 @@ phy_set_tx_power_index_by_rate_section( goto exit; } - if (rs == CCK && bw != BAND_ON_2_4G) + if (rs == CCK && band != BAND_ON_2_4G) goto exit; for (i = 0; i < rates_by_sections[rs].rate_num; ++i) { @@ -2283,13 +2378,14 @@ bool phy_get_ch_idx(u8 ch, u8 *ch_idx) *ch_idx = ch - 1; } else { bIn24G = _FALSE; - + #if CONFIG_IEEE80211_BAND_5GHZ for (i = 0; i < CENTER_CH_5G_ALL_NUM; ++i) { if (center_ch_5g_all[i] == ch) { *ch_idx = i; break; } } + #endif } return bIn24G; @@ -2344,25 +2440,31 @@ exit: } #ifdef CONFIG_TXPWR_PG_WITH_PWR_IDX -u8 phy_get_pg_txpwr_idx(_adapter *pAdapter +static u8 phy_get_pg_txpwr_idx(_adapter *pAdapter , enum rf_path RFPath, RATE_SECTION rs, u8 ntx_idx - , enum channel_width BandWidth, u8 band, u8 Channel) + , enum channel_width BandWidth, u8 band, u8 Channel, u8 opch) { - PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter); - u8 i; - u8 txPower = 0; - u8 chnlIdx = (Channel - 1); + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter); + u8 i; + u8 txPower = 0; + u8 chnlIdx; if (HAL_IsLegalChannel(pAdapter, Channel) == _FALSE) { chnlIdx = 0; - RTW_INFO("Illegal channel!!\n"); + RTW_WARN("Illegal channel!!\n"); + } else { + if (IS_CCK_RATE_SECTION(rs) || IS_OFDM_RATE_SECTION(rs)) { + if (opch) { + while (BandWidth > CHANNEL_WIDTH_20) + Channel = rtw_get_scch_by_cch_opch(Channel, BandWidth--, opch); + } else + Channel = pHalData->cch_20; + } + phy_get_ch_idx(Channel, &chnlIdx); + if (0) + RTW_INFO("[%s] Channel Index: %d\n", band_str(band), chnlIdx); } - phy_get_ch_idx(Channel, &chnlIdx); - - if (0) - RTW_INFO("[%s] Channel Index: %d\n", band_str(band), chnlIdx); - if (band == BAND_ON_2_4G) { if (IS_CCK_RATE_SECTION(rs)) { /* CCK-nTX */ @@ -2823,14 +2925,6 @@ phy_set_tx_power_level_by_path( } #if CONFIG_TXPWR_LIMIT -const char *const _txpwr_lmt_rs_str[] = { - "CCK", - "OFDM", - "HT", - "VHT", - "UNKNOWN", -}; - static s8 phy_GetChannelIndexOfTxPowerLimit( u8 Band, @@ -2842,12 +2936,15 @@ phy_GetChannelIndexOfTxPowerLimit( if (Band == BAND_ON_2_4G) channelIndex = Channel - 1; + #if CONFIG_IEEE80211_BAND_5GHZ else if (Band == BAND_ON_5G) { for (i = 0; i < CENTER_CH_5G_ALL_NUM; ++i) { if (center_ch_5g_all[i] == Channel) channelIndex = i; } - } else + } + #endif + else RTW_PRINT("Invalid Band %d in %s\n", Band, __func__); if (channelIndex == -1) @@ -2885,11 +2982,13 @@ s8 phy_get_txpwr_lmt( ) { struct dvobj_priv *dvobj = adapter_to_dvobj(Adapter); - struct rf_ctl_t *rfctl = adapter_to_rfctl(Adapter); HAL_DATA_TYPE *hal_data = GET_HAL_DATA(Adapter); struct hal_spec_t *hal_spec = GET_HAL_SPEC(Adapter); - struct txpwr_lmt_ent *ent = NULL; - _irqL irqL; + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + const char *reg_names; + int reg_names_len; + const char *name; + struct lmt_reg *ent = NULL; _list *cur, *head; s8 ch_idx; u8 is_ww_regd = 0; @@ -2906,88 +3005,106 @@ s8 phy_get_txpwr_lmt( goto exit; } - if (Band == BAND_ON_5G && tlrs == TXPWR_LMT_RS_CCK) { + if (Band == BAND_ON_5G && tlrs == TXPWR_LMT_RS_CCK) { RTW_ERR("5G has no CCK\n"); goto exit; } - if (lock) - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); + ch_idx = phy_GetChannelIndexOfTxPowerLimit(Band, cch); + if (ch_idx == -1) + goto exit; - if (!lmt_name) { /* no name specified, use currnet */ - if (Band < BAND_MAX) - lmt_name = rfctl->txpwr_lmt_name[Band]; - else { + if (lock) + _rtw_mutex_lock_interruptible(&tb->lock); + + if (lmt_name) { + reg_names = lmt_name; + reg_names_len = strlen(lmt_name) + 1; + } else { /* no name specified, use currnet */ + if (Band < BAND_MAX) { + reg_names = tb->cur_reg_names[Band]; + reg_names_len = tb->cur_reg_names_len[Band]; + } else { rtw_warn_on(1); goto release_lock; } } - if (rfctl->txpwr_lmt_num == 0 - || lmt_name == NULL - || strcmp(lmt_name, txpwr_lmt_str(TXPWR_LMT_NONE)) == 0) + if (tb->reg_num == 0 + || reg_names == NULL || reg_names_len == 0) goto release_lock; - if (strcmp(lmt_name, txpwr_lmt_str(TXPWR_LMT_WW)) == 0) - is_ww_regd = 1; + ustrs_for_each_str(reg_names, reg_names_len, name) { + if (strcmp(name, txpwr_lmt_str(TXPWR_LMT_NONE)) == 0) + continue; - if (!is_ww_regd) { - ent = _rtw_txpwr_lmt_get_by_name(rfctl, lmt_name); - if (!ent) - goto release_lock; - } + if (strcmp(name, txpwr_lmt_str(TXPWR_LMT_WW)) == 0) + is_ww_regd = 1; - ch_idx = phy_GetChannelIndexOfTxPowerLimit(Band, cch); - if (ch_idx == -1) - goto release_lock; - - if (Band == BAND_ON_2_4G) { if (!is_ww_regd) { - lmt = ent->lmt_2g[bw][tlrs][ch_idx][ntx_idx]; - if (lmt != ww_lmt_val) - goto release_lock; + ent = _hal_txpwr_lmt_reg_get_by_name(hal_data, name); + if (!ent || (Band == BAND_ON_24G && !ent->lmt_2g) + #if CONFIG_IEEE80211_BAND_5GHZ + || (Band == BAND_ON_5G && !ent->lmt_5g) + #endif + ) { + rtw_warn_on(1); + continue; + } } - /* search for min value for WW regd or WW limit */ - lmt = hal_spec->txgi_max; - head = &rfctl->txpwr_lmt_list; - cur = get_next(head); - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); - cur = get_next(cur); - if (ent->lmt_2g[bw][tlrs][ch_idx][ntx_idx] != ww_lmt_val) - lmt = rtw_min(lmt, ent->lmt_2g[bw][tlrs][ch_idx][ntx_idx]); - } - } - #if CONFIG_IEEE80211_BAND_5GHZ - else if (Band == BAND_ON_5G) { - if (!is_ww_regd) { - lmt = ent->lmt_5g[bw][tlrs - 1][ch_idx][ntx_idx]; - if (lmt != ww_lmt_val) - goto release_lock; - } + if (Band == BAND_ON_2_4G) { + if (!is_ww_regd && ent->lmt_2g->v[bw][tlrs][ch_idx][ntx_idx] != ww_lmt_val) { + lmt = rtw_min(lmt, ent->lmt_2g->v[bw][tlrs][ch_idx][ntx_idx]); + continue; + } - /* search for min value for WW regd or WW limit */ - lmt = hal_spec->txgi_max; - head = &rfctl->txpwr_lmt_list; - cur = get_next(head); - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); - cur = get_next(cur); - if (ent->lmt_5g[bw][tlrs - 1][ch_idx][ntx_idx] != ww_lmt_val) - lmt = rtw_min(lmt, ent->lmt_5g[bw][tlrs - 1][ch_idx][ntx_idx]); + /* search for min value for WW regd or WW limit */ + lmt = hal_spec->txgi_max; + head = &tb->reg_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); + cur = get_next(cur); + if (!ent->lmt_2g) + continue; + if (ent->lmt_2g->v[bw][tlrs][ch_idx][ntx_idx] != ww_lmt_val) + lmt = rtw_min(lmt, ent->lmt_2g->v[bw][tlrs][ch_idx][ntx_idx]); + } + break; } + #if CONFIG_IEEE80211_BAND_5GHZ + else if (Band == BAND_ON_5G) { + if (!is_ww_regd && ent->lmt_5g->v[bw][tlrs - 1][ch_idx][ntx_idx] != ww_lmt_val) { + lmt = rtw_min(lmt, ent->lmt_5g->v[bw][tlrs - 1][ch_idx][ntx_idx]); + continue; + } + + /* search for min value for WW regd or WW limit */ + lmt = hal_spec->txgi_max; + head = &tb->reg_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); + cur = get_next(cur); + if (!ent->lmt_5g) + continue; + if (ent->lmt_5g->v[bw][tlrs - 1][ch_idx][ntx_idx] != ww_lmt_val) + lmt = rtw_min(lmt, ent->lmt_5g->v[bw][tlrs - 1][ch_idx][ntx_idx]); + } + break; + } + #endif + #if CONFIG_IEEE80211_BAND_6GHZ + else if (Band == BAND_ON_6G) { + rtw_warn_on(1); + } + #endif } - #endif - #if CONFIG_IEEE80211_BAND_6GHZ - else if (Band == BAND_ON_6G) { - rtw_warn_on(1); - } - #endif release_lock: if (lock) - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); + _rtw_mutex_unlock(&tb->lock); exit: return lmt; @@ -3029,9 +3146,9 @@ s8 phy_get_txpwr_lmt_sub_chs(_adapter *adapter , u8 rfpath, u8 rate, u8 ntx_idx, u8 cch, u8 opch, bool reg_max) { struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; BOOLEAN no_sc = _FALSE; u8 cch_20 = hal_data->cch_20, cch_40 = hal_data->cch_40, cch_80 = hal_data->cch_80; s8 tlrs = -1; @@ -3041,7 +3158,6 @@ s8 phy_get_txpwr_lmt_sub_chs(_adapter *adapter u8 bw_bmp = 0; s8 final_lmt = reg_max ? 0 : hal_spec->txgi_max; u8 final_bw = CHANNEL_WIDTH_MAX, final_cch = cch; - _irqL irqL; if ((adapter->registrypriv.RegEnableTxPowerLimit == 2 && hal_data->EEPROMRegulatory != 1) || adapter->registrypriv.RegEnableTxPowerLimit == 0 @@ -3118,7 +3234,7 @@ s8 phy_get_txpwr_lmt_sub_chs(_adapter *adapter if (bw_bmp == 0) goto exit; - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); + _rtw_mutex_lock_interruptible(&tb->lock); /* loop for each possible tx bandwidth to find final limit */ for (tmp_bw = CHANNEL_WIDTH_20; tmp_bw <= bw; tmp_bw++) { @@ -3157,7 +3273,7 @@ s8 phy_get_txpwr_lmt_sub_chs(_adapter *adapter final_bw = tmp_bw; } - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); + _rtw_mutex_unlock(&tb->lock); if (0) { if (final_bw != bw && (IS_HT_RATE(rate) || IS_VHT_RATE(rate))) @@ -3173,69 +3289,74 @@ exit: static void phy_txpwr_lmt_cck_ofdm_mt_chk(_adapter *adapter) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); - struct txpwr_lmt_ent *ent; + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg *ent; _list *cur, *head; u8 channel, tlrs, ntx_idx; - rfctl->txpwr_lmt_2g_cck_ofdm_state = 0; + tb->lmt_2g_cck_ofdm_state = 0; #if CONFIG_IEEE80211_BAND_5GHZ - rfctl->txpwr_lmt_5g_cck_ofdm_state = 0; + tb->lmt_5g_cck_ofdm_state = 0; #endif - head = &rfctl->txpwr_lmt_list; + head = &tb->reg_list; cur = get_next(head); while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); cur = get_next(cur); - /* check 2G CCK, OFDM state*/ - for (tlrs = TXPWR_LMT_RS_CCK; tlrs <= TXPWR_LMT_RS_OFDM; tlrs++) { + if (ent->lmt_2g) { + /* check 2G CCK, OFDM state*/ + for (tlrs = TXPWR_LMT_RS_CCK; tlrs <= TXPWR_LMT_RS_OFDM; tlrs++) { + for (ntx_idx = RF_1TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { + for (channel = 0; channel < CENTER_CH_2G_NUM; ++channel) { + if (ent->lmt_2g->v[CHANNEL_WIDTH_20][tlrs][channel][ntx_idx] != hal_spec->txgi_max) { + if (tlrs == TXPWR_LMT_RS_CCK) + tb->lmt_2g_cck_ofdm_state |= TXPWR_LMT_HAS_CCK_1T << ntx_idx; + else + tb->lmt_2g_cck_ofdm_state |= TXPWR_LMT_HAS_OFDM_1T << ntx_idx; + break; + } + } + } + } + + /* if 2G OFDM multi-TX is not defined, reference HT20 */ + for (channel = 0; channel < CENTER_CH_2G_NUM; ++channel) { + for (ntx_idx = RF_2TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { + if (tb->lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx)) + continue; + ent->lmt_2g->v[CHANNEL_WIDTH_20][TXPWR_LMT_RS_OFDM][channel][ntx_idx] = + ent->lmt_2g->v[CHANNEL_WIDTH_20][TXPWR_LMT_RS_HT][channel][ntx_idx]; + } + } + } + +#if CONFIG_IEEE80211_BAND_5GHZ + if (ent->lmt_5g) { + /* check 5G OFDM state*/ for (ntx_idx = RF_1TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { - for (channel = 0; channel < CENTER_CH_2G_NUM; ++channel) { - if (ent->lmt_2g[CHANNEL_WIDTH_20][tlrs][channel][ntx_idx] != hal_spec->txgi_max) { - if (tlrs == TXPWR_LMT_RS_CCK) - rfctl->txpwr_lmt_2g_cck_ofdm_state |= TXPWR_LMT_HAS_CCK_1T << ntx_idx; - else - rfctl->txpwr_lmt_2g_cck_ofdm_state |= TXPWR_LMT_HAS_OFDM_1T << ntx_idx; + for (channel = 0; channel < CENTER_CH_5G_ALL_NUM; ++channel) { + if (ent->lmt_5g->v[CHANNEL_WIDTH_20][TXPWR_LMT_RS_OFDM - 1][channel][ntx_idx] != hal_spec->txgi_max) { + tb->lmt_5g_cck_ofdm_state |= TXPWR_LMT_HAS_OFDM_1T << ntx_idx; break; } } } - } - /* if 2G OFDM multi-TX is not defined, reference HT20 */ - for (channel = 0; channel < CENTER_CH_2G_NUM; ++channel) { - for (ntx_idx = RF_2TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { - if (rfctl->txpwr_lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx)) - continue; - ent->lmt_2g[CHANNEL_WIDTH_20][TXPWR_LMT_RS_OFDM][channel][ntx_idx] = - ent->lmt_2g[CHANNEL_WIDTH_20][TXPWR_LMT_RS_HT][channel][ntx_idx]; - } - } - -#if CONFIG_IEEE80211_BAND_5GHZ - /* check 5G OFDM state*/ - for (ntx_idx = RF_1TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { for (channel = 0; channel < CENTER_CH_5G_ALL_NUM; ++channel) { - if (ent->lmt_5g[CHANNEL_WIDTH_20][TXPWR_LMT_RS_OFDM - 1][channel][ntx_idx] != hal_spec->txgi_max) { - rfctl->txpwr_lmt_5g_cck_ofdm_state |= TXPWR_LMT_HAS_OFDM_1T << ntx_idx; - break; + for (ntx_idx = RF_2TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { + if (tb->lmt_5g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx)) + continue; + /* if 5G OFDM multi-TX is not defined, reference HT20 */ + ent->lmt_5g->v[CHANNEL_WIDTH_20][TXPWR_LMT_RS_OFDM - 1][channel][ntx_idx] = + ent->lmt_5g->v[CHANNEL_WIDTH_20][TXPWR_LMT_RS_HT - 1][channel][ntx_idx]; } } } - - for (channel = 0; channel < CENTER_CH_5G_ALL_NUM; ++channel) { - for (ntx_idx = RF_2TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { - if (rfctl->txpwr_lmt_5g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx)) - continue; - /* if 5G OFDM multi-TX is not defined, reference HT20 */ - ent->lmt_5g[CHANNEL_WIDTH_20][TXPWR_LMT_RS_OFDM - 1][channel][ntx_idx] = - ent->lmt_5g[CHANNEL_WIDTH_20][TXPWR_LMT_RS_HT - 1][channel][ntx_idx]; - } - } #endif /* CONFIG_IEEE80211_BAND_5GHZ */ } } @@ -3243,9 +3364,10 @@ static void phy_txpwr_lmt_cck_ofdm_mt_chk(_adapter *adapter) #if CONFIG_IEEE80211_BAND_5GHZ static void phy_txpwr_lmt_cross_ref_ht_vht(_adapter *adapter) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); - struct txpwr_lmt_ent *ent; + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg *ent; _list *cur, *head; u8 bw, channel, tlrs, ref_tlrs, ntx_idx; int ht_ref_vht_5g_20_40 = 0; @@ -3253,15 +3375,18 @@ static void phy_txpwr_lmt_cross_ref_ht_vht(_adapter *adapter) int ht_has_ref_5g_20_40 = 0; int vht_has_ref_5g_20_40 = 0; - rfctl->txpwr_lmt_5g_20_40_ref = 0; + tb->lmt_5g_20_40_ref = 0; - head = &rfctl->txpwr_lmt_list; + head = &tb->reg_list; cur = get_next(head); while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); cur = get_next(cur); + if (!ent->lmt_5g) + continue; + for (bw = 0; bw < MAX_5G_BANDWIDTH_NUM; ++bw) { for (channel = 0; channel < CENTER_CH_5G_ALL_NUM; ++channel) { @@ -3279,7 +3404,7 @@ static void phy_txpwr_lmt_cross_ref_ht_vht(_adapter *adapter) for (ntx_idx = RF_1TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { - if (ent->lmt_5g[bw][ref_tlrs - 1][channel][ntx_idx] == hal_spec->txgi_max) + if (ent->lmt_5g->v[bw][ref_tlrs - 1][channel][ntx_idx] == hal_spec->txgi_max) continue; if (tlrs == TXPWR_LMT_RS_HT) @@ -3289,7 +3414,7 @@ static void phy_txpwr_lmt_cross_ref_ht_vht(_adapter *adapter) else continue; - if (ent->lmt_5g[bw][tlrs - 1][channel][ntx_idx] != hal_spec->txgi_max) + if (ent->lmt_5g->v[bw][tlrs - 1][channel][ntx_idx] != hal_spec->txgi_max) continue; if (tlrs == TXPWR_LMT_RS_HT && ref_tlrs == TXPWR_LMT_RS_VHT) @@ -3303,8 +3428,8 @@ static void phy_txpwr_lmt_cross_ref_ht_vht(_adapter *adapter) , txpwr_lmt_rs_str(tlrs), ntx_idx + 1 , txpwr_lmt_rs_str(ref_tlrs), ntx_idx + 1); - ent->lmt_5g[bw][tlrs - 1][channel][ntx_idx] = - ent->lmt_5g[bw][ref_tlrs - 1][channel][ntx_idx]; + ent->lmt_5g->v[bw][tlrs - 1][channel][ntx_idx] = + ent->lmt_5g->v[bw][ref_tlrs - 1][channel][ntx_idx]; } } @@ -3320,11 +3445,11 @@ static void phy_txpwr_lmt_cross_ref_ht_vht(_adapter *adapter) /* 5G 20M&40M HT all come from VHT*/ if (ht_ref_vht_5g_20_40 && ht_has_ref_5g_20_40 == ht_ref_vht_5g_20_40) - rfctl->txpwr_lmt_5g_20_40_ref |= TXPWR_LMT_REF_HT_FROM_VHT; + tb->lmt_5g_20_40_ref |= TXPWR_LMT_REF_HT_FROM_VHT; /* 5G 20M&40M VHT all come from HT*/ if (vht_ref_ht_5g_20_40 && vht_has_ref_5g_20_40 == vht_ref_ht_5g_20_40) - rfctl->txpwr_lmt_5g_20_40_ref |= TXPWR_LMT_REF_VHT_FROM_HT; + tb->lmt_5g_20_40_ref |= TXPWR_LMT_REF_VHT_FROM_HT; } #endif /* CONFIG_IEEE80211_BAND_5GHZ */ @@ -3336,9 +3461,9 @@ static void phy_txpwr_lmt_cross_ref_ht_vht(_adapter *adapter) /* check if larger bandwidth limit is less than smaller bandwidth for HT & VHT rate */ void phy_txpwr_limit_bandwidth_chk(_adapter *adapter) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; u8 band, bw, path, tlrs, ntx_idx, cch, offset, scch; u8 ch_num, n, i; @@ -3354,8 +3479,12 @@ void phy_txpwr_limit_bandwidth_chk(_adapter *adapter) if (band == BAND_ON_2_4G) ch_num = center_chs_2g_num(bw); - else + #if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) ch_num = center_chs_5g_num(bw); + #endif + else + ch_num = 0; if (ch_num == 0) { rtw_warn_on(1); @@ -3376,7 +3505,7 @@ void phy_txpwr_limit_bandwidth_chk(_adapter *adapter) continue; for (ntx_idx = RF_1TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { - struct txpwr_lmt_ent *ent; + struct lmt_reg *ent; _list *cur, *head; if (ntx_idx + 1 > hal_data->max_tx_cnt) @@ -3385,18 +3514,18 @@ void phy_txpwr_limit_bandwidth_chk(_adapter *adapter) /* bypass CCK multi-TX is not defined */ if (tlrs == TXPWR_LMT_RS_CCK && ntx_idx > RF_1TX) { if (band == BAND_ON_2_4G - && !(rfctl->txpwr_lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_CCK_1T << ntx_idx))) + && !(tb->lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_CCK_1T << ntx_idx))) continue; } /* bypass OFDM multi-TX is not defined */ if (tlrs == TXPWR_LMT_RS_OFDM && ntx_idx > RF_1TX) { if (band == BAND_ON_2_4G - && !(rfctl->txpwr_lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx))) + && !(tb->lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx))) continue; #if CONFIG_IEEE80211_BAND_5GHZ if (band == BAND_ON_5G - && !(rfctl->txpwr_lmt_5g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx))) + && !(tb->lmt_5g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx))) continue; #endif } @@ -3404,10 +3533,10 @@ void phy_txpwr_limit_bandwidth_chk(_adapter *adapter) /* bypass 5G 20M, 40M pure reference */ #if CONFIG_IEEE80211_BAND_5GHZ if (band == BAND_ON_5G && (bw == CHANNEL_WIDTH_20 || bw == CHANNEL_WIDTH_40)) { - if (rfctl->txpwr_lmt_5g_20_40_ref == TXPWR_LMT_REF_HT_FROM_VHT) { + if (tb->lmt_5g_20_40_ref == TXPWR_LMT_REF_HT_FROM_VHT) { if (tlrs == TXPWR_LMT_RS_HT) continue; - } else if (rfctl->txpwr_lmt_5g_20_40_ref == TXPWR_LMT_REF_VHT_FROM_HT) { + } else if (tb->lmt_5g_20_40_ref == TXPWR_LMT_REF_VHT_FROM_HT) { if (tlrs == TXPWR_LMT_RS_VHT && bw <= CHANNEL_WIDTH_40) continue; } @@ -3422,8 +3551,12 @@ void phy_txpwr_limit_bandwidth_chk(_adapter *adapter) if (band == BAND_ON_2_4G) cch = center_chs_2g(bw, n); - else + #if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) cch = center_chs_5g(bw, n); + #endif + else + cch = 0; if (cch == 0) { rtw_warn_on(1); @@ -3438,11 +3571,17 @@ void phy_txpwr_limit_bandwidth_chk(_adapter *adapter) for (bw_pos = bw; bw_pos >= CHANNEL_WIDTH_40; bw_pos--) cch_by_bw[bw_pos - 1] = rtw_get_scch_by_cch_offset(cch_by_bw[bw_pos], bw_pos, offset_by_bw & BIT(bw_pos) ? HAL_PRIME_CHNL_OFFSET_UPPER : HAL_PRIME_CHNL_OFFSET_LOWER); - head = &rfctl->txpwr_lmt_list; + head = &tb->reg_list; cur = get_next(head); while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - ent = LIST_CONTAINOR(cur, struct txpwr_lmt_ent, list); + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); cur = get_next(cur); + if ((band == BAND_ON_24G && !ent->lmt_2g) + #if CONFIG_IEEE80211_BAND_5GHZ + || (band == BAND_ON_5G && !ent->lmt_5g) + #endif + ) + continue; for (bw_pos = bw; bw_pos < CHANNEL_WIDTH_160; bw_pos--) lmt[bw_pos] = phy_get_txpwr_lmt(adapter, ent->name, band, bw_pos, tlrs, ntx_idx, cch_by_bw[bw_pos], 0); @@ -3519,10 +3658,10 @@ void phy_txpwr_limit_bandwidth_chk(_adapter *adapter) static void phy_txpwr_lmt_post_hdl(_adapter *adapter) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - _irqL irqL; + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; - _enter_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); + _rtw_mutex_lock_interruptible(&tb->lock); #if CONFIG_IEEE80211_BAND_5GHZ if (IS_HARDWARE_TYPE_JAGUAR_ALL(adapter)) @@ -3534,7 +3673,7 @@ static void phy_txpwr_lmt_post_hdl(_adapter *adapter) phy_txpwr_limit_bandwidth_chk(adapter); #endif - _exit_critical_mutex(&rfctl->txpwr_lmt_mutex, &irqL); + _rtw_mutex_unlock(&tb->lock); } BOOLEAN @@ -3665,7 +3804,7 @@ phy_set_tx_power_limit( return; } - rtw_txpwr_lmt_add(adapter_to_rfctl(Adapter), lmt_name, band, bandwidth, tlrs, ntx_idx, channelIndex, powerLimit); + hal_txpwr_lmt_reg_add(pHalData, lmt_name, band, bandwidth, tlrs, ntx_idx, channelIndex, powerLimit); } #if CONFIG_IEEE80211_BAND_5GHZ else if (strncmp(Band, "5G", 2) == 0) { @@ -3677,7 +3816,7 @@ phy_set_tx_power_limit( return; } - rtw_txpwr_lmt_add(adapter_to_rfctl(Adapter), lmt_name, band, bandwidth, tlrs, ntx_idx, channelIndex, powerLimit); + hal_txpwr_lmt_reg_add(pHalData, lmt_name, band, bandwidth, tlrs, ntx_idx, channelIndex, powerLimit); } #endif else { @@ -3754,6 +3893,12 @@ phy_set_tx_power_limit_ex( case PW_LMT_REGU_CN: lmt_id = TXPWR_LMT_CN; break; + case PW_LMT_REGU_QATAR: + lmt_id = TXPWR_LMT_QATAR; + break; + case PW_LMT_REGU_UK: + lmt_id = TXPWR_LMT_UK; + break; case PW_LMT_REGU_WW13: default: RTW_PRINT("Wrong phydm_id:%d\n", phydm_id); @@ -3828,7 +3973,7 @@ phy_set_tx_power_limit_ex( return; } - rtw_txpwr_lmt_add(adapter_to_rfctl(Adapter), txpwr_lmt_str(lmt_id), band, bandwidth, tlrs, ntx_idx, channelIndex, powerLimit); + hal_txpwr_lmt_reg_add(pHalData, txpwr_lmt_str(lmt_id), band, bandwidth, tlrs, ntx_idx, channelIndex, powerLimit); } #if CONFIG_IEEE80211_BAND_5GHZ else if (Band == PW_LMT_BAND_5G) { @@ -3840,7 +3985,7 @@ phy_set_tx_power_limit_ex( return; } - rtw_txpwr_lmt_add(adapter_to_rfctl(Adapter), txpwr_lmt_str(lmt_id), band, bandwidth, tlrs, ntx_idx, channelIndex, powerLimit); + hal_txpwr_lmt_reg_add(pHalData, txpwr_lmt_str(lmt_id), band, bandwidth, tlrs, ntx_idx, channelIndex, powerLimit); } #endif else { @@ -3936,13 +4081,21 @@ void dump_tx_power_idx_title(void *sel, _adapter *adapter, enum channel_width bw { u8 cch_20, cch_40, cch_80; - cch_80 = bw == CHANNEL_WIDTH_80 ? cch : 0; - cch_40 = bw == CHANNEL_WIDTH_40 ? cch : 0; - cch_20 = bw == CHANNEL_WIDTH_20 ? cch : 0; - if (cch_80 != 0) - cch_40 = rtw_get_scch_by_cch_opch(cch_80, CHANNEL_WIDTH_80, opch); - if (cch_40 != 0) - cch_20 = rtw_get_scch_by_cch_opch(cch_40, CHANNEL_WIDTH_40, opch); + if (opch) { + cch_80 = bw == CHANNEL_WIDTH_80 ? cch : 0; + cch_40 = bw == CHANNEL_WIDTH_40 ? cch : 0; + cch_20 = bw == CHANNEL_WIDTH_20 ? cch : 0; + if (cch_80 != 0) + cch_40 = rtw_get_scch_by_cch_opch(cch_80, CHANNEL_WIDTH_80, opch); + if (cch_40 != 0) + cch_20 = rtw_get_scch_by_cch_opch(cch_40, CHANNEL_WIDTH_40, opch); + } else { + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + + cch_20 = hal_data->cch_20; + cch_40 = hal_data->cch_40; + cch_80 = hal_data->cch_80; + } RTW_PRINT_SEL(sel, "%s", ch_width_str(bw)); if (bw >= CHANNEL_WIDTH_80) @@ -4067,13 +4220,21 @@ void dump_txpwr_total_dbm_title(void *sel, _adapter *adapter, enum channel_width txpwr_mbm_get_dbm_str(rfctl->antenna_gain, 0, antenna_gain_str, 8); RTW_PRINT_SEL(sel, "antenna_gain:%s\n", antenna_gain_str); - cch_80 = bw == CHANNEL_WIDTH_80 ? cch : 0; - cch_40 = bw == CHANNEL_WIDTH_40 ? cch : 0; - cch_20 = bw == CHANNEL_WIDTH_20 ? cch : 0; - if (cch_80 != 0) - cch_40 = rtw_get_scch_by_cch_opch(cch_80, CHANNEL_WIDTH_80, opch); - if (cch_40 != 0) - cch_20 = rtw_get_scch_by_cch_opch(cch_40, CHANNEL_WIDTH_40, opch); + if (opch) { + cch_80 = bw == CHANNEL_WIDTH_80 ? cch : 0; + cch_40 = bw == CHANNEL_WIDTH_40 ? cch : 0; + cch_20 = bw == CHANNEL_WIDTH_20 ? cch : 0; + if (cch_80 != 0) + cch_40 = rtw_get_scch_by_cch_opch(cch_80, CHANNEL_WIDTH_80, opch); + if (cch_40 != 0) + cch_20 = rtw_get_scch_by_cch_opch(cch_40, CHANNEL_WIDTH_40, opch); + } else { + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + + cch_20 = hal_data->cch_20; + cch_40 = hal_data->cch_40; + cch_80 = hal_data->cch_80; + } RTW_PRINT_SEL(sel, "%s", ch_width_str(bw)); if (bw >= CHANNEL_WIDTH_80) @@ -4233,12 +4394,11 @@ int phy_load_tx_power_limit(_adapter *adapter, u8 chk_file) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); struct registry_priv *regsty = dvobj_to_regsty(adapter_to_dvobj(adapter)); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); int ret = _FAIL; hal_data->txpwr_limit_loaded = 0; - rtw_regd_exc_list_free(rfctl); - rtw_txpwr_lmt_list_free(rfctl); + hal_txpwr_lmt_reg_exc_list_free(hal_data); + hal_txpwr_lmt_reg_list_free(hal_data); if (!hal_data->txpwr_by_rate_loaded && regsty->target_tx_pwr_valid != _TRUE) { RTW_ERR("%s():Read Tx power limit before target tx power is specify\n", __func__); @@ -4267,7 +4427,7 @@ int phy_load_tx_power_limit(_adapter *adapter, u8 chk_file) post_hdl: phy_txpwr_lmt_post_hdl(adapter); - rtw_txpwr_init_regd(rfctl); + rtw_txpwr_update_cur_lmt_regs(adapter_to_dvobj(adapter), true); hal_data->txpwr_limit_loaded = 1; ret = _SUCCESS; @@ -4299,43 +4459,48 @@ void phy_load_tx_power_ext_info(_adapter *adapter, u8 chk_file) inline void phy_reload_tx_power_ext_info(_adapter *adapter) { phy_load_tx_power_ext_info(adapter, 1); - op_class_pref_apply_regulatory(adapter, REG_TXPWR_CHANGE); + op_class_pref_apply_regulatory(adapter_to_rfctl(adapter), REG_TXPWR_CHANGE); } inline void phy_reload_default_tx_power_ext_info(_adapter *adapter) { phy_load_tx_power_ext_info(adapter, 0); - op_class_pref_apply_regulatory(adapter, REG_TXPWR_CHANGE); + op_class_pref_apply_regulatory(adapter_to_rfctl(adapter), REG_TXPWR_CHANGE); } -#ifdef CONFIG_PROC_DEBUG -void dump_tx_power_ext_info(void *sel, _adapter *adapter) +void rtw_txpwr_hal_dump_target_info(void *sel, struct dvobj_priv *dvobj) { + _adapter *adapter = dvobj_get_primary_adapter(dvobj); struct registry_priv *regsty = adapter_to_regsty(adapter); HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); - RTW_PRINT_SEL(sel, "txpwr_pg_mode: %s\n", txpwr_pg_mode_str(hal_data->txpwr_pg_mode)); - if (regsty->target_tx_pwr_valid == _TRUE) RTW_PRINT_SEL(sel, "target_tx_power: from registry\n"); else if (hal_data->txpwr_by_rate_loaded) RTW_PRINT_SEL(sel, "target_tx_power: from power by rate\n"); else RTW_PRINT_SEL(sel, "target_tx_power: unavailable\n"); - - RTW_PRINT_SEL(sel, "tx_power_by_rate: %s, %s, %s\n" - , phy_is_tx_power_by_rate_needed(adapter) ? "enabled" : "disabled" - , hal_data->txpwr_by_rate_loaded ? "loaded" : "unloaded" - , hal_data->txpwr_by_rate_from_file ? "file" : "default" - ); - - RTW_PRINT_SEL(sel, "tx_power_limit: %s, %s, %s\n" - , phy_is_tx_power_limit_needed(adapter) ? "enabled" : "disabled" - , hal_data->txpwr_limit_loaded ? "loaded" : "unloaded" - , hal_data->txpwr_limit_from_file ? "file" : "default" - ); } +bool rtw_txpwr_hal_get_ext_info(struct dvobj_priv *dvobj, struct tx_power_ext_info *info) +{ + _adapter *adapter = dvobj_get_primary_adapter(dvobj); + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + + SET_TXPWR_PARAM_STATUS(&info->by_rate + , phy_is_tx_power_by_rate_needed(adapter) + , hal_data->txpwr_by_rate_loaded + , hal_data->txpwr_by_rate_from_file); + + SET_TXPWR_PARAM_STATUS(&info->lmt + , phy_is_tx_power_limit_needed(adapter) + , hal_data->txpwr_limit_loaded + , hal_data->txpwr_limit_from_file); + + return true; +} + +#ifdef CONFIG_PROC_DEBUG void dump_target_tx_power(void *sel, _adapter *adapter) { struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); @@ -5221,10 +5386,15 @@ PHY_ConfigRFWithTxPwrTrackParaFile( int rlen = 0, rtStatus = _FAIL; char *szLine, *ptmp; u32 i = 0; + char *data = NULL; if (!(Adapter->registrypriv.load_phy_file & LOAD_RF_TXPWR_TRACK_PARA_FILE)) return rtStatus; + data = (char *)rtw_malloc(300); + if (!data) + return rtStatus; + _rtw_memset(pHalData->para_file_buf, 0, MAX_PARA_FILE_BUF_LEN); if ((pHalData->rf_tx_pwr_track_len == 0) && (pHalData->rf_tx_pwr_track == NULL)) { @@ -5252,17 +5422,15 @@ PHY_ConfigRFWithTxPwrTrackParaFile( if (rtStatus == _SUCCESS) { /* RTW_INFO("%s(): read %s successfully\n", __FUNCTION__, pFileName); */ - ptmp = pHalData->para_file_buf; for (szLine = GetLineFromBuffer(ptmp); szLine != NULL; szLine = GetLineFromBuffer(ptmp)) { if (!IsCommentString(szLine)) { char band[5] = "", path[5] = "", sign[5] = ""; char chnl[5] = "", rate[10] = ""; - char data[300] = ""; /* 100 is too small */ if (strlen(szLine) < 10 || szLine[0] != '[') continue; - + _rtw_memset(data, 0, 300); strncpy(band, szLine + 1, 2); strncpy(path, szLine + 5, 1); strncpy(sign, szLine + 8, 1); @@ -5304,6 +5472,8 @@ PHY_ConfigRFWithTxPwrTrackParaFile( } } #endif + if (data) + rtw_mfree(data, 300); return rtStatus; } @@ -5415,7 +5585,7 @@ static u8 parse_reg_exc_config(_adapter *adapter, char *szLine) if (i == i_val_s) return PARSE_RET_FAIL; - rtw_regd_exc_add_with_nlen(adapter_to_rfctl(adapter), country, domain, szLine + i_val_s, i - i_val_s); + hal_txpwr_lmt_reg_exc_add_with_nlen(GET_HAL_DATA(adapter), country, domain, szLine + i_val_s, i - i_val_s); } return PARSE_RET_SUCCESS; @@ -5458,7 +5628,7 @@ phy_ParsePowerLimitTableFile( if (szLine[0] == '#' || szLine[1] == '#') { loadingStage = LD_STAGE_TAB_DEFINE; if (DBG_TXPWR_LMT_FILE_PARSE) - dump_regd_exc_list(RTW_DBGDUMP, adapter_to_rfctl(Adapter)); + dump_txpwr_lmt_reg_exc_list(RTW_DBGDUMP, pHalData); } else { if (parse_reg_exc_config(Adapter, szLine) == PARSE_RET_FAIL) { RTW_ERR("Fail to parse regulation exception ruls!\n"); @@ -5820,6 +5990,7 @@ inline void phy_free_filebuf(_adapter *padapter) */ s8 phy_get_txpwr_regd_lmt(_adapter *adapter, struct hal_spec_t *hal_spec, u8 cch, enum channel_width bw, u8 ntx_idx) { +#if CONFIG_TXPWR_LIMIT struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); s16 total_mbm = UNSPECIFIED_MBM; @@ -5831,7 +6002,7 @@ s8 phy_get_txpwr_regd_lmt(_adapter *adapter, struct hal_spec_t *hal_spec, u8 cch #ifdef CONFIG_REGD_SRC_FROM_OS if (rfctl->regd_src == REGD_SRC_OS) - total_mbm = rtw_os_get_total_txpwr_regd_lmt_mbm(adapter, cch, bw); + total_mbm = rtw_os_get_total_txpwr_regd_lmt_mbm(adapter, rtw_is_2g_ch(cch) ? BAND_ON_24G : BAND_ON_5G, cch, bw); #endif exit: @@ -5841,6 +6012,9 @@ exit: lmt = hal_spec->txgi_max; return lmt; +#else + return hal_spec->txgi_max; +#endif } /* @@ -5925,18 +6099,6 @@ s8 phy_get_txpwr_tpc(_adapter *adapter, struct hal_spec_t *hal_spec) return -cnst; } -void dump_txpwr_tpc_settings(void *sel, _adapter *adapter) -{ - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - - if (rfctl->tpc_mode == TPC_MODE_DISABLE) - RTW_PRINT_SEL(sel, "mode:DISABLE(%d)\n", rfctl->tpc_mode); - else if (rfctl->tpc_mode == TPC_MODE_MANUAL) { - RTW_PRINT_SEL(sel, "mode:MANUAL(%d)\n", rfctl->tpc_mode); - RTW_PRINT_SEL(sel, "constraint:%d (mB)\n", rfctl->tpc_manual_constraint); - } -} - void dump_txpwr_antenna_gain(void *sel, _adapter *adapter) { struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); @@ -6033,6 +6195,10 @@ exit: #include "./rtl8822c/rtl8822c.h" #endif +#ifdef CONFIG_RTL8822E +#include "./rtl8822e/rtl8822e.h" +#endif + /* * Return in unit of TX Gain Index */ @@ -6058,6 +6224,11 @@ s8 phy_get_txpwr_amends(_adapter *adapter, u8 rfpath, RATE_SECTION rs, u8 rate, dpd_diff = -(rtl8822c_get_dis_dpd_by_rate_diff(adapter, rate) * hal_spec->txgi_pdbm); #endif +#ifdef CONFIG_RTL8822E + if (IS_HARDWARE_TYPE_8822E(adapter)) + dpd_diff = -(rtl8822e_get_dis_dpd_by_rate_diff(adapter, rate) * hal_spec->txgi_pdbm); +#endif + exit: if (tic) { tic->tpt = tpt_diff; @@ -6116,7 +6287,7 @@ u8 hal_com_get_txpwr_idx(_adapter *adapter, enum rf_path rfpath */ u8 rs_target; - base = phy_get_pg_txpwr_idx(adapter, rfpath, rs, ntx_idx, bw, band, cch); + base = phy_get_pg_txpwr_idx(adapter, rfpath, rs, ntx_idx, bw, band, cch, opch); rs_target = phy_get_target_txpwr(adapter, band, rfpath, rs); power_idx = base + (rate_target - rs_target) + (rate_amends); @@ -6144,7 +6315,7 @@ u8 hal_com_get_txpwr_idx(_adapter *adapter, enum rf_path rfpath * 3. amends diff (per rate) * base is selected that power index of MCS7 == halrf_get_tssi_codeword_for_txindex() */ -#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8822E) s8 mcs7_idx; mcs7_idx = phy_get_tssi_txpwr_by_rate_ref(adapter, rfpath, bw, cch, opch); @@ -6314,3 +6485,12 @@ phy_get_tx_power_final_absolute_value(_adapter *adapter, u8 rfpath, u8 rate, return val; } + +void rtw_txpwr_hal_update_pwr(struct dvobj_priv *dvobj, enum phl_band_idx band_idx) +{ + /* this driver has only one hwband */ + _adapter *adapter = dvobj_get_primary_adapter(dvobj); + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + + rtw_hal_set_tx_power_level(adapter, hal_data->current_channel); +} diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_dfs.c b/drivers/net/wireless/rtl8822cs/hal/hal_dfs.c new file mode 100644 index 000000000..72b5d4fee --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/hal/hal_dfs.c @@ -0,0 +1,471 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#define _HAL_DFS_C_ + +#include +#include + +/* be careful about the sychronization with phydm */ +#define PHYDM_DFS_DOMAIN_NUM PHYDM_DFS_DOMAIN_ETSI + 1 +#define PHYDM_DFS_DOMAIN_IS_UNKNOWN(domain) ((domain) == PHYDM_DFS_DOMAIN_UNKNOWN || (domain) >= PHYDM_DFS_DOMAIN_NUM) + +#ifdef CONFIG_DFS_MASTER +struct dfs_rd_ctl_param { + /* + * DFS region domain set from core + * >=PHYDM_DFS_DOMAIN_NUM => not set (keep original) + * < PHYDM_DFS_DOMAIN_NUM => change domain (if needed) and ignore other parameters + */ + enum phydm_dfs_region_domain domain; + + /* + * enable=true, cac=1 => enable radar detect and is under CAC + * enable=true, cac=0 => enalbe radar detect, in-service monitoring + * enable=true, cac<0 => enable radar detect w/o changing CAC status + * enable=false, cac=any => disable radar detect + */ + bool enable; + + /* + * CAC status set from core + * < 0: not set (keep original) + * 0: not under CAC + * 1: under CAC + */ + s8 cac; + + /* + * configuration for specific radar detect range (5G band is implicit), the value of sp_ch: + * < 0: not set (keep original) + * 0: all detectable range + * > 0: specific detect range (by ch, bw, offset) + */ + s16 sp_ch; + enum channel_width sp_bw; + enum chan_offset sp_offset; + + /* + * configuration for specific radar detect range in freqency, valid when sp_ch < 0 + * 0: not set (keep original) + */ + u32 sp_freq_hi; + u32 sp_freq_lo; +}; + +static bool hal_bchbw_in_radar_domain(enum band_type band, u8 ch + , enum channel_width bw, enum chan_offset offset) +{ + return band == BAND_ON_5G + && ((ch >= 52 && ch <= 64) || (ch >= 100 && ch <= 144)) + ; +} + +static bool hal_radar_detect_range_specified(struct rtw_dfs_t *dfs_info) +{ + return dfs_info->sp_detect_range_hi != 0; +} + +static bool hal_overlap_radar_detect_range(struct rtw_dfs_t *dfs_info + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset) +{ + bool ret = false; + u32 hi = 0, lo = 0; + int i; + + if (!rtw_bchbw_to_freq_range(band, ch, bw, offset, &hi, &lo)) { + rtw_warn_on(1); + goto exit; + } + + if (rtw_is_range_overlap(hi, lo, dfs_info->sp_detect_range_hi, dfs_info->sp_detect_range_lo)) + ret = true; + +exit: + return ret; +} + +static bool hal_should_radar_detect_enable_by_ch(struct hal_com_data *hal_data, u8 band_idx, + enum band_type band, u8 channel, enum channel_width bwmode, enum chan_offset offset) +{ + struct rtw_dfs_t *dfs_info = &hal_data->dfs_info; + + if (dfs_info->enable && !PHYDM_DFS_DOMAIN_IS_UNKNOWN(dfs_info->region_domain) + && hal_bchbw_in_radar_domain(band, channel, bwmode, offset) + ) { + if (!hal_radar_detect_range_specified(dfs_info) + || hal_overlap_radar_detect_range(dfs_info, band, channel, bwmode, offset)) + return true; + } + + return false; +} + +static void hal_dfs_handle_pending_domain_change(struct hal_com_data *hal_data, u8 band_idx + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset) +{ + struct rtw_dfs_t *dfs_info = &hal_data->dfs_info; + + if (dfs_info->pending_domain_change) { + if (dfs_info->radar_detect_enabled) + phydm_radar_detect_disable(&hal_data->odmpriv); + odm_cmn_info_init(&hal_data->odmpriv, ODM_CMNINFO_DFS_REGION_DOMAIN + , hal_data->dfs_info.region_domain); + if (dfs_info->radar_detect_enabled) + phydm_radar_detect_enable(&hal_data->odmpriv); + + dfs_info->pending_domain_change = false; + } +} + +static int +hal_radar_detect_switch(struct hal_com_data *hal_data, u8 band_idx, bool enable) +{ + struct rtw_dfs_t *dfs_info = &hal_data->dfs_info; + + if (enable) + phydm_radar_detect_enable(&hal_data->odmpriv); + else + phydm_radar_detect_disable(&hal_data->odmpriv); + + dfs_info->radar_detect_enabled = enable; + return _SUCCESS; +} + +bool hal_is_radar_detect_enabled(struct hal_com_data *hal_data, u8 band_idx) +{ + return hal_data->dfs_info.radar_detect_enabled; +} + +static void hal_set_under_cac(struct hal_com_data *hal_data, u8 band_idx, bool under) +{ + hal_data->dfs_info.under_cac = under; +} + +bool hal_is_under_cac(struct hal_com_data *hal_data, u8 band_idx) +{ + return hal_data->dfs_info.under_cac; +} + +static int +hal_cac_tx_pause_switch(struct hal_com_data *hal_data, u8 band_idx, bool enable) +{ + struct rtw_dfs_t *dfs_info = &hal_data->dfs_info; + + if (rtw_hal_tx_pause(hal_data->adapter, PAUSE_RSON_DFS_CAC, enable) == _SUCCESS) { + dfs_info->cac_tx_paused = enable; + return _SUCCESS; + } + return _FAIL; +} + +bool hal_is_cac_tx_paused(struct hal_com_data *hal_data, u8 band_idx) +{ + return hal_data->dfs_info.cac_tx_paused; +} + +void hal_dfs_rd_setting_before_ch_switch(struct hal_com_data *hal_data, u8 band_idx + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset, struct dfs_rd_ch_switch_ctx *ctx) +{ + ctx->should_rd_en_on_new_ch = hal_should_radar_detect_enable_by_ch(hal_data + , band_idx, band, ch, bw, offset); + ctx->under_cac = hal_is_under_cac(hal_data, band_idx); + ctx->cac_tx_paused = hal_is_cac_tx_paused(hal_data, band_idx); + + ctx->rd_enabled = hal_is_radar_detect_enabled(hal_data, band_idx); + + if (!ctx->should_rd_en_on_new_ch && ctx->rd_enabled) { + /* turn off radar detect before channel setting (ex: leaving detection range) */ + int rst = hal_radar_detect_switch(hal_data, band_idx, false); + + if (rst == _SUCCESS) + RTW_INFO("[DFS] new ch=%d,%u,%d,%d disable radar detect\n", band, ch, bw, offset); + else + RTW_ERR("[DFS] new ch=%d,%u,%d,%d disable radar detect failed\n", band, ch, bw, offset); + + ctx->rd_enabled = hal_is_radar_detect_enabled(hal_data, band_idx); + } + + if (ctx->should_rd_en_on_new_ch && ctx->under_cac && !ctx->cac_tx_paused) { + /* turn on CAC tx pause before channel setting (ex: entering detection range) */ + int rst = hal_cac_tx_pause_switch(hal_data, band_idx, true); + + if (rst == _SUCCESS) + RTW_INFO("[DFS] new ch=%d,%u,%d,%d enable CAC tx pause\n", band, ch, bw, offset); + else + RTW_ERR("[DFS] new ch=%d,%u,%d,%d enable CAC tx pause failed\n", band, ch, bw, offset); + } +} + +void hal_dfs_rd_setting_after_ch_switch(struct hal_com_data *hal_data, u8 band_idx + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset, struct dfs_rd_ch_switch_ctx *ctx) +{ + if (ctx->should_rd_en_on_new_ch && !ctx->rd_enabled) { + /* turn on radar detect after channel setting (ex: entered radar detect range) */ + int rst = hal_radar_detect_switch(hal_data, band_idx, true); + + if (rst == _SUCCESS) + RTW_INFO("[DFS] new ch=%d,%u,%d,%d enable radar detect\n", band, ch, bw, offset); + else + RTW_ERR("[DFS] new ch=%d,%u,%d,%d enable radar detect failed\n", band, ch, bw, offset); + } + + if ((!ctx->should_rd_en_on_new_ch || !ctx->under_cac) && ctx->cac_tx_paused) { + /* turn off CAC tx pause after channel setting (ex: leaved detection range) */ + int rst = hal_cac_tx_pause_switch(hal_data, band_idx, false); + + if (rst == _SUCCESS) + RTW_INFO("[DFS] new ch=%d,%u,%d,%d disable CAC tx pause\n", band, ch, bw, offset); + else + RTW_ERR("[DFS] new ch=%d,%u,%d,%d disable CAC tx pause failed\n", band, ch, bw, offset); + } +} + +static int +hal_radar_detect_confs_apply(struct hal_com_data *hal_data, u8 band_idx) +{ + struct rtw_dfs_t *dfs_info = &hal_data->dfs_info; + int rd_rst = _SUCCESS; + int cac_rst = _SUCCESS; + u8 band, ch, bw, offset; + bool should_rd_enable; + bool under_cac; + bool cac_tx_paused; + + ch = rtw_get_oper_ch(hal_data->adapter); + bw = rtw_get_oper_bw(hal_data->adapter); + offset = rtw_get_oper_choffset(hal_data->adapter); + band = rtw_is_2g_ch(ch) ? BAND_ON_24G : BAND_ON_5G; + + hal_dfs_handle_pending_domain_change(hal_data, band_idx + , band, ch, bw, offset); + + should_rd_enable = hal_should_radar_detect_enable_by_ch(hal_data, band_idx + , band, ch, bw, offset); + under_cac = hal_is_under_cac(hal_data, band_idx); + cac_tx_paused = hal_is_cac_tx_paused(hal_data, band_idx); + + if (!dfs_info->radar_detect_enabled) { + if (should_rd_enable) { + rd_rst = hal_radar_detect_switch(hal_data, band_idx, true); + if (rd_rst == _SUCCESS) + RTW_INFO("[DFS] ch=%d,%u,%d,%d enable radar detect\n", band, ch, bw, offset); + else + RTW_ERR("[DFS] ch=%d,%u,%d,%d enable radar detect failed\n", band, ch, bw, offset); + } + + } else if (dfs_info->radar_detect_enabled) { + if (!should_rd_enable) { + rd_rst = hal_radar_detect_switch(hal_data, band_idx, false); + if (rd_rst == _SUCCESS) + RTW_INFO("[DFS] ch=%d,%u,%d,%d disable radar detect\n", band, ch, bw, offset); + else + RTW_ERR("[DFS] ch=%d,%u,%d,%d disable radar detect failed\n", band, ch, bw, offset); + } + } + + if (!cac_tx_paused) { + if (under_cac && dfs_info->radar_detect_enabled) { + cac_rst = hal_cac_tx_pause_switch(hal_data, band_idx, true); + if (cac_rst == _SUCCESS) + RTW_INFO("[DFS] ch=%d,%u,%d,%d enable CAC tx pause\n", band, ch, bw, offset); + else + RTW_INFO("[DFS] ch=%d,%u,%d,%d enable CAC tx pause failed\n", band, ch, bw, offset); + } + + } else if (cac_tx_paused) { + if (!under_cac) { + /* + * Release CAC tx pause only when not under CAC + * Keep CAC tx pause when under CAC and radar detect is turned off by + * specifying new detect range which doesn't overlap current channel setting + * (ex: operating channel switching to new DFS channel) + */ + cac_rst = hal_cac_tx_pause_switch(hal_data, band_idx, false); + if (cac_rst == _SUCCESS) + RTW_INFO("[DFS] ch=%d,%u,%d,%d disable CAC tx pause\n", band, ch, bw, offset); + else + RTW_INFO("[DFS] ch=%d,%u,%d,%d disable CAC tx pause failed\n", band, ch, bw, offset); + } + } + + if (rd_rst == _SUCCESS && cac_rst == _SUCCESS) + return _SUCCESS; + return _FAIL; +} + +static int +hal_dfs_rd_ctl_hdl(struct hal_com_data *hal_data, struct dfs_rd_ctl_param *rd_ctl_param) +{ + struct rtw_dfs_t *dfs_info = &hal_data->dfs_info; + u8 band_idx = HW_BAND_0; /* multi band/phy capable? */ + + if (rd_ctl_param->domain < PHYDM_DFS_DOMAIN_NUM) { + if (rd_ctl_param->domain != dfs_info->region_domain) { + RTW_INFO("%s set domain to %d\n", __func__, rd_ctl_param->domain); + dfs_info->region_domain = rd_ctl_param->domain; + dfs_info->pending_domain_change = true; + } + goto apply; + } + + if (rd_ctl_param->enable) { + if (!dfs_info->enable) { + RTW_INFO("%s enable\n", __func__); + dfs_info->enable = true; + } + if (rd_ctl_param->cac == 1) { + if (!hal_is_under_cac(hal_data, band_idx)) { + RTW_INFO("%s under CAC\n", __func__); + hal_set_under_cac(hal_data, band_idx, true); + } + } else if (rd_ctl_param->cac == 0) { + if (hal_is_under_cac(hal_data, band_idx)) { + RTW_INFO("%s CAC done\n", __func__); + hal_set_under_cac(hal_data, band_idx, false); + } + } + + } else { + if (dfs_info->enable) { + RTW_INFO("%s disable\n", __func__); + dfs_info->enable = false; + } + hal_set_under_cac(hal_data, band_idx, false); + } + + if (rd_ctl_param->sp_ch > 0) { + u32 hi, lo; + + if (rtw_bchbw_to_freq_range(BAND_ON_5G + , rd_ctl_param->sp_ch, rd_ctl_param->sp_bw, rd_ctl_param->sp_offset + , &hi, &lo) + ) { + if (dfs_info->sp_detect_range_hi != hi || dfs_info->sp_detect_range_lo != lo) { + RTW_INFO("%s sp_ch:%u,%d,%d is set\n", __func__ + , rd_ctl_param->sp_ch, rd_ctl_param->sp_bw, rd_ctl_param->sp_offset); + dfs_info->sp_detect_range_hi = hi; + dfs_info->sp_detect_range_lo = lo; + } + } else { + RTW_WARN("%s sp_ch:%u,%d,%d to freq range fail, all range applied\n", __func__ + , rd_ctl_param->sp_ch, rd_ctl_param->sp_bw, rd_ctl_param->sp_offset); + dfs_info->sp_detect_range_hi = 0; + } + } else if (rd_ctl_param->sp_ch == 0) { + if (dfs_info->sp_detect_range_hi != 0) { + RTW_INFO("%s all range applied\n", __func__); + dfs_info->sp_detect_range_hi = 0; + } + } else if (rd_ctl_param->sp_freq_hi) { + if (rd_ctl_param->sp_freq_hi <= rd_ctl_param->sp_freq_lo) { + RTW_WARN("%s sp_freq_hi:%u <= sp_freq_lo:%u, all range applied\n", __func__ + , rd_ctl_param->sp_freq_hi, rd_ctl_param->sp_freq_lo); + } else { + if (dfs_info->sp_detect_range_hi != rd_ctl_param->sp_freq_hi + || dfs_info->sp_detect_range_lo != rd_ctl_param->sp_freq_lo + ) { + RTW_INFO("%s sp_freq %u to %u is set\n", __func__ + , rd_ctl_param->sp_freq_lo, rd_ctl_param->sp_freq_hi); + dfs_info->sp_detect_range_hi = rd_ctl_param->sp_freq_hi; + dfs_info->sp_detect_range_lo = rd_ctl_param->sp_freq_lo; + } + } + } + +apply: + /* apply new configs on cur channel */ + return hal_radar_detect_confs_apply(hal_data, band_idx); +} + +static int +_rtw_hal_dfs_rd_ctl(struct hal_com_data *hal_data, enum phl_band_idx hw_band + , enum phydm_dfs_region_domain domain, bool enable, s8 cac, s16 sp_ch, enum channel_width sp_bw, enum chan_offset sp_offset + , u32 sp_freq_hi, u32 sp_freq_lo) +{ + int ret; + struct dfs_rd_ctl_param param; + + param.domain = domain; + param.enable = enable; + param.cac = cac; + param.sp_ch = sp_ch; + param.sp_bw = sp_bw; + param.sp_offset = sp_offset; + param.sp_freq_hi = sp_freq_hi; + param.sp_freq_lo = sp_freq_lo; + + ret = hal_dfs_rd_ctl_hdl(hal_data, ¶m); + + return ret; +} + +int +rtw_hal_dfs_change_domain(struct hal_com_data *hal_data, enum phl_band_idx hw_band + , enum phydm_dfs_region_domain domain) +{ + if (domain >= PHYDM_DFS_DOMAIN_NUM) { + RTW_WARN("%s(), invalid domain:%d\n", __func__, domain); + return _FAIL; + } + + return _rtw_hal_dfs_rd_ctl(hal_data, hw_band + , domain /* change domain, other parameters will be ignored */ + , false, 0, -1, 0, 0, 0, 0); +} + +int +rtw_hal_dfs_rd_enable_all_range(struct hal_com_data *hal_data, enum phl_band_idx hw_band) +{ + return _rtw_hal_dfs_rd_ctl(hal_data, hw_band + , PHYDM_DFS_DOMAIN_NUM + , true, -1 /* enable radar detect w/o changing CAC status */ + , 0, 0, 0, 0, 0); +} + +int +rtw_hal_dfs_rd_enable_with_sp_chbw(struct hal_com_data *hal_data, enum phl_band_idx hw_band + , bool cac, u8 sp_ch, enum channel_width sp_bw, enum chan_offset sp_offset) +{ + return _rtw_hal_dfs_rd_ctl(hal_data, hw_band + , PHYDM_DFS_DOMAIN_NUM + , true, cac ? 1 : 0, sp_ch, sp_bw, sp_offset, 0, 0); +} + +int +rtw_hal_dfs_rd_enable_with_sp_freq_range(struct hal_com_data *hal_data, enum phl_band_idx hw_band + , bool cac, u32 sp_freq_hi, u32 sp_freq_lo) +{ + return _rtw_hal_dfs_rd_ctl(hal_data, hw_band + , PHYDM_DFS_DOMAIN_NUM + , true, cac ? 1 : 0, -1, 0, 0, sp_freq_hi, sp_freq_lo); +} + +int +rtw_hal_dfs_rd_set_cac_status(struct hal_com_data *hal_data, enum phl_band_idx hw_band, bool cac) +{ + return _rtw_hal_dfs_rd_ctl(hal_data, hw_band + , PHYDM_DFS_DOMAIN_NUM + , true /* CAC status only valid when radar detect enable */ + , cac ? 1 : 0, -1, 0, 0, 0, 0); +} + +int +rtw_hal_dfs_rd_disable(struct hal_com_data *hal_data, enum phl_band_idx hw_band) +{ + return _rtw_hal_dfs_rd_ctl(hal_data, hw_band + , PHYDM_DFS_DOMAIN_NUM + , false, 0, -1, 0, 0, 0, 0); +} +#endif diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_dfs.h b/drivers/net/wireless/rtl8822cs/hal/hal_dfs.h new file mode 100644 index 000000000..0deb1b06d --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/hal/hal_dfs.h @@ -0,0 +1,83 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef _HAL_DFS_H_ +#define _HAL_DFS_H_ + +#ifdef CONFIG_DFS_MASTER +struct rtw_dfs_t { + enum phydm_dfs_region_domain region_domain; + bool enable; /* set by core layer to enable/disable radar detection */ + bool under_cac; /* set by core layer to indicate CAC status */ + + /* + * set by core to specify detect range + * sp_detect_range_hi = 0 means no specified range, whole range allowed + * by HAL will enable radar detection + */ + u32 sp_detect_range_hi; + u32 sp_detect_range_lo; + + bool radar_detect_enabled; /* if radar detection is enabled */ + bool cac_tx_paused; /* if tx paused by CAC */ + bool pending_domain_change; /* if there is domain change under process */ + + bool is_radar_detectd; /* if radar is detected */ +}; + +struct hal_com_data; + +bool hal_is_radar_detect_enabled(struct hal_com_data *hal_data, u8 band_idx); + +bool hal_is_under_cac(struct hal_com_data *hal_data, u8 band_idx); + +bool hal_is_cac_tx_paused(struct hal_com_data *hal_data, u8 band_idx); + +struct dfs_rd_ch_switch_ctx { + bool rd_enabled; + bool should_rd_en_on_new_ch; + bool under_cac; + bool cac_tx_paused; +}; + +void hal_dfs_rd_setting_before_ch_switch(struct hal_com_data *hal_data, u8 band_idx + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset, struct dfs_rd_ch_switch_ctx *ctx); + +void hal_dfs_rd_setting_after_ch_switch(struct hal_com_data *hal_data, u8 band_idx + , enum band_type band, u8 ch, enum channel_width bw, enum chan_offset offset, struct dfs_rd_ch_switch_ctx *ctx); + +int +rtw_hal_dfs_change_domain(struct hal_com_data *hal_data, enum phl_band_idx hw_band + , enum phydm_dfs_region_domain domain); + +int +rtw_hal_dfs_rd_enable_all_range(struct hal_com_data *hal_data, enum phl_band_idx hw_band); + +int +rtw_hal_dfs_rd_enable_with_sp_chbw(struct hal_com_data *hal_data, enum phl_band_idx hw_band + , bool cac, u8 sp_ch, enum channel_width sp_bw, enum chan_offset sp_offset); + +int +rtw_hal_dfs_rd_enable_with_sp_freq_range(struct hal_com_data *hal_data, enum phl_band_idx hw_band + , bool cac, u32 sp_freq_hi, u32 sp_freq_lo); + +int +rtw_hal_dfs_rd_set_cac_status(struct hal_com_data *hal_data, enum phl_band_idx hw_band, bool cac); + +int +rtw_hal_dfs_rd_disable(struct hal_com_data *hal_data, enum phl_band_idx hw_band); +#endif + +#endif /* _HAL_DFS_H_ */ + diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_dm.c b/drivers/net/wireless/rtl8822cs/hal/hal_dm.c index 83860e9fa..433124050 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_dm.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_dm.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2014 - 2017 Realtek Corporation. + * Copyright(c) 2014 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -86,8 +86,8 @@ void rtw_hal_update_iqk_fw_offload_cap(_adapter *adapter) } } -#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8822C_SUPPORT == 1) \ - || (RTL8723F_SUPPORT == 1)) +#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) \ + || (RTL8822C_SUPPORT == 1) || (RTL8723F_SUPPORT == 1) || (RTL8822E_SUPPORT == 1)) void rtw_phydm_iqk_trigger(_adapter *adapter) { struct dm_struct *p_dm_odm = adapter_to_phydm(adapter); @@ -96,7 +96,8 @@ void rtw_phydm_iqk_trigger(_adapter *adapter) u8 rfk_forbidden = _FALSE; halrf_cmn_info_set(p_dm_odm, HALRF_CMNINFO_RFK_FORBIDDEN, rfk_forbidden); -#if (RTL8822C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8723F_SUPPORT == 1) +#if (RTL8822C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8723F_SUPPORT == 1) \ + || (RTL8822E_SUPPORT == 1) /* halrf_cmn_info_set(p_dm_odm, HALRF_CMNINFO_IQK_SEGMENT, segment); to do */ halrf_rf_k_connect_trigger(p_dm_odm, _TRUE, SEGMENT_FREE); #else @@ -114,10 +115,11 @@ void rtw_phydm_iqk_trigger_all(_adapter *adapter) u8 segment = _FALSE; u8 rfk_forbidden = _FALSE; -#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8822C_SUPPORT == 1) \ - || (RTL8723F_SUPPORT == 1)) +#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) \ + || (RTL8822C_SUPPORT == 1) || (RTL8723F_SUPPORT == 1) || (RTL8822E_SUPPORT == 1)) halrf_cmn_info_set(p_dm_odm, HALRF_CMNINFO_RFK_FORBIDDEN, rfk_forbidden); -#if (RTL8822C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8723F_SUPPORT == 1) +#if (RTL8822C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8723F_SUPPORT == 1) \ + || (RTL8822E_SUPPORT == 1) /* halrf_cmn_info_set(p_dm_odm, HALRF_CMNINFO_IQK_SEGMENT, segment); to do */ halrf_rf_k_connect_trigger(p_dm_odm, _TRUE, SEGMENT_FREE); #else @@ -135,7 +137,8 @@ void rtw_phydm_iqk_trigger_dbg(_adapter *adapter, bool recovery, bool clear, boo { struct dm_struct *p_dm_odm = adapter_to_phydm(adapter); -#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8822C_SUPPORT == 1)) +#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) \ + || (RTL8822C_SUPPORT == 1) || (RTL8822E_SUPPORT == 1)) halrf_segment_iqk_trigger(p_dm_odm, clear, segment); #else halrf_iqk_trigger(p_dm_odm, recovery); @@ -350,6 +353,15 @@ void rtw_phydm_priv_init(_adapter *adapter) odm_cmn_info_init(phydm, ODM_CMNINFO_PLATFORM, ODM_CE); } +#ifndef CONFIG_LITTLE_ENDIAN +static u8 *convert_to_big_endian(void *value, int size) +{ + u8 *temp; + temp = (u8 *)value + size - 1; + return temp; +} +#endif + void Init_ODM_ComInfo(_adapter *adapter) { struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); @@ -357,10 +369,18 @@ void Init_ODM_ComInfo(_adapter *adapter) struct dm_struct *pDM_Odm = &(pHalData->odmpriv); struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(adapter); struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + struct registry_priv *regsty = dvobj_to_regsty(dvobj); int i; - /*phydm_op_mode could be change for different scenarios: ex: SoftAP - PHYDM_BALANCE_MODE*/ - pHalData->phydm_op_mode = PHYDM_PERFORMANCE_MODE;/*Service one device*/ + if (regsty->def_bb_opmode > PHYDM_BALANCE_MODE) { + pHalData->phydm_op_mode = PHYDM_PERFORMANCE_MODE;/*Service one device*/ + RTW_WARN("%s bb_opmode: %d is not supported, set to %d\n", __func__ + , regsty->def_bb_opmode, pHalData->phydm_op_mode); + } else { + pHalData->phydm_op_mode = regsty->def_bb_opmode; + RTW_INFO("%s bb_opmode set to %d\n", __func__, pHalData->phydm_op_mode); + } + rtw_odm_init_ic_type(adapter); if (rtw_get_intf_type(adapter) == RTW_GSPI) @@ -407,8 +427,7 @@ void Init_ODM_ComInfo(_adapter *adapter) } #ifdef CONFIG_DFS_MASTER - rtw_odm_update_dfs_region(dvobj); - odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_DFS_MASTER_ENABLE, &(adapter_to_rfctl(adapter)->radar_detect_enabled)); + odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_DFS_MASTER_ENABLE, &rfctl->radar_detect_enabled); #endif odm_cmn_info_init(pDM_Odm, ODM_CMNINFO_GPA, pHalData->TypeGPA); @@ -433,8 +452,6 @@ void Init_ODM_ComInfo(_adapter *adapter) odm_cmn_info_init(pDM_Odm, ODM_CMNINFO_EFUSE0X3D7, pHalData->efuse0x3d7); odm_cmn_info_init(pDM_Odm, ODM_CMNINFO_EFUSE0X3D8, pHalData->efuse0x3d8); - odm_cmn_info_init(pDM_Odm, ODM_CMNINFO_EN_NBI_DETECT, adapter->registrypriv.nbi_en); - /* waiting for PhyDMV034 support*/ odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_MANUAL_SUPPORTABILITY, &(adapter->registrypriv.phydm_ability)); @@ -442,15 +459,14 @@ void Init_ODM_ComInfo(_adapter *adapter) odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_ADAPTIVITY, &rfctl->adaptivity_en); phydm_adaptivity_info_init(pDM_Odm, PHYDM_ADAPINFO_TH_L2H_INI, adapter->registrypriv.adaptivity_th_l2h_ini); phydm_adaptivity_info_init(pDM_Odm, PHYDM_ADAPINFO_TH_EDCCA_HL_DIFF, adapter->registrypriv.adaptivity_th_edcca_hl_diff); - rtw_odm_adaptivity_update(dvobj); /*halrf info init*/ halrf_cmn_info_init(pDM_Odm, HALRF_CMNINFO_EEPROM_THERMAL_VALUE, pHalData->eeprom_thermal_meter); halrf_cmn_info_init(pDM_Odm, HALRF_CMNINFO_PWT_TYPE, 0); halrf_cmn_info_init(pDM_Odm, HALRF_CMNINFO_MP_POWER_TRACKING_TYPE, pHalData->txpwr_pg_mode); - if (rtw_odm_adaptivity_needed(adapter) == _TRUE) - rtw_odm_adaptivity_config_msg(RTW_DBGDUMP, adapter); + if (rtw_cfg_adaptivity_needed(adapter) == _TRUE) + rtw_cfg_adaptivity_config_msg(RTW_DBGDUMP, adapter); #ifdef CONFIG_IQK_PA_OFF odm_cmn_info_init(pDM_Odm, ODM_CMNINFO_IQKPAOFF, 1); @@ -469,11 +485,9 @@ void Init_ODM_ComInfo(_adapter *adapter) odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_TX_UNI, &(dvobj->traffic_stat.tx_bytes)); odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_RX_UNI, &(dvobj->traffic_stat.rx_bytes)); - odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_BAND, &(pHalData->current_band_type)); odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_FORCED_RATE, &(pHalData->ForcedDataRate)); odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET, &(pHalData->nCur40MhzPrimeSC)); - odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_SEC_MODE, &(adapter->securitypriv.dot11PrivacyAlgrthm)); #ifdef CONFIG_NARROWBAND_SUPPORTING if ((adapter->registrypriv.rtw_nb_config == RTW_NB_CONFIG_WIDTH_10) || (adapter->registrypriv.rtw_nb_config == RTW_NB_CONFIG_WIDTH_5)) { @@ -481,9 +495,19 @@ void Init_ODM_ComInfo(_adapter *adapter) } else #endif + +#ifdef CONFIG_LITTLE_ENDIAN odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_BW, &(pHalData->current_channel_bw)); - odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_CHNL, &(pHalData->current_channel)); + odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_BAND, &(pHalData->current_band_type)); + odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_SEC_MODE, &(adapter->securitypriv.dot11PrivacyAlgrthm)); odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_NET_CLOSED, &(adapter->net_closed)); +#else /* CONFIG_BIG_ENDIAN */ + odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_BW, convert_to_big_endian(&(pHalData->current_channel_bw), sizeof(enum channel_width))); + odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_BAND, convert_to_big_endian(&(pHalData->current_band_type), sizeof(BAND_TYPE))); + odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_SEC_MODE, convert_to_big_endian(&(adapter->securitypriv.dot11PrivacyAlgrthm), sizeof(u32))); + odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_NET_CLOSED, convert_to_big_endian(&(adapter->net_closed), sizeof(int))); +#endif + odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_CHNL, &(pHalData->current_channel)); odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_SCAN, &(pHalData->bScanInProcess)); odm_cmn_info_hook(pDM_Odm, ODM_CMNINFO_POWER_SAVING, &(pwrctl->bpower_saving)); @@ -723,7 +747,9 @@ void rtw_hal_turbo_edca(_adapter *adapter) if (interface_type == RTW_PCIE && ((ic_type == RTL8822B) || (ic_type == RTL8822C) - || (ic_type == RTL8814A) || (ic_type == RTL8814B))) { + || (ic_type == RTL8814A) + || (ic_type == RTL8814B) + || (ic_type == RTL8822E))) { EDCA_BE_UL = 0x6ea42b; EDCA_BE_DL = 0x6ea42b; } @@ -1268,7 +1294,7 @@ void rtw_phydm_watchdog_in_lps_lclk(_adapter *adapter) void dump_sta_traffic(void *sel, _adapter *adapter, struct sta_info *psta) { - struct ra_sta_info *ra_info; + /*struct ra_sta_info *ra_info;*/ u8 curr_sgi = _FALSE; u32 tx_tp_mbips, rx_tp_mbips, bi_tp_mbips; @@ -1282,7 +1308,7 @@ void dump_sta_traffic(void *sel, _adapter *adapter, struct sta_info *psta) RTW_PRINT_SEL(sel, "BCN counts : %d (per-%d second), DTIM Period:%d\n", rtw_get_bcn_cnt(psta->padapter) / 2, 1, rtw_get_bcn_dtim_period(psta->padapter)); - ra_info = &psta->cmn.ra_info; + /*ra_info = &psta->cmn.ra_info;*/ curr_sgi = rtw_get_current_tx_sgi(adapter, psta); RTW_PRINT_SEL(sel, "tx_rate : %s(%s) rx_rate : %s, rx_rate_bmc : %s, rssi : %d %%\n" , HDATA_RATE(rtw_get_current_tx_rate(adapter, psta)), (curr_sgi) ? "S" : "L" @@ -1460,7 +1486,8 @@ u8 rtw_hal_runtime_trx_path_decision(_adapter *adapter) tx_path_nss_set_default(hal_data->txpath_nss, hal_data->txpath_num_nss , GET_HAL_TX_PATH_BMP(adapter)); -#if defined(CONFIG_RTL8192F) || defined(CONFIG_RTL8822B) ||defined(CONFIG_RTL8822C) +#if defined(CONFIG_RTL8192F) || defined(CONFIG_RTL8822B) \ + || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) { enum bb_path txpath_1ss; @@ -1542,7 +1569,8 @@ static u8 rtw_phydm_config_trx_path(_adapter *adapter) { u8 rst = _SUCCESS; -#if defined(CONFIG_RTL8192F) || defined(CONFIG_RTL8822B) ||defined(CONFIG_RTL8822C) +#if defined(CONFIG_RTL8192F) || defined(CONFIG_RTL8822B) \ + || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); enum bb_path txpath = hal_data->txpath; @@ -1683,12 +1711,14 @@ static u8 _rtw_phydm_rfk_condition_check(_adapter *adapter, u8 is_scaning, u8 if #endif if (ifs_linked) { - if (is_scaning) { + if (adapter_to_rfctl(adapter)->offch_state != OFFCHS_NONE) { + rfk_allowed = _FALSE; + RTW_DBG("[RFK-CHK] RF-K not allowed due to offch_state\n"); + } else if (is_scaning) { rfk_allowed = _FALSE; RTW_DBG("[RFK-CHK] RF-K not allowed due to ifaces under site-survey\n"); - } - else { - rfk_allowed = rtw_mi_stayin_union_ch_chk(adapter) ? _TRUE : _FALSE; + } else { + rfk_allowed = rtw_mi_stayin_union_ch_chk(adapter, true) ? _TRUE : _FALSE; if (rfk_allowed == _FALSE) RTW_ERR("[RFK-CHK] RF-K not allowed due to ld_iface not stayin union ch\n"); } @@ -1697,7 +1727,8 @@ static u8 _rtw_phydm_rfk_condition_check(_adapter *adapter, u8 is_scaning, u8 if return rfk_allowed; } -#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8822C_SUPPORT == 1)) +#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) \ + || (RTL8822C_SUPPORT == 1) || (RTL8822E_SUPPORT == 1)) static u8 _rtw_phydm_iqk_segment_chk(_adapter *adapter, u8 ifs_linked) { u8 iqk_sgt = _FALSE; @@ -1889,7 +1920,8 @@ void rtw_phydm_watchdog(_adapter *adapter, bool in_lps) u8 bsta_state = _FALSE; u8 bBtDisabled = _TRUE; u8 rfk_forbidden = _FALSE; - #if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8822C_SUPPORT == 1)) + #if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) \ + || (RTL8822C_SUPPORT == 1) || (RTL8822E_SUPPORT == 1)) u8 segment_iqk = _FALSE; #endif u8 tx_unlinked_low_rate = 0xFF; @@ -1924,7 +1956,8 @@ void rtw_phydm_watchdog(_adapter *adapter, bool in_lps) rfk_forbidden = (_rtw_phydm_rfk_condition_check(adapter, pHalData->bScanInProcess, bLinked) == _TRUE) ? _FALSE : _TRUE; halrf_cmn_info_set(&pHalData->odmpriv, HALRF_CMNINFO_RFK_FORBIDDEN, rfk_forbidden); - #if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8822C_SUPPORT == 1)) + #if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) \ + || (RTL8822C_SUPPORT == 1) || (RTL8822E_SUPPORT == 1)) segment_iqk = _rtw_phydm_iqk_segment_chk(adapter, bLinked); halrf_cmn_info_set(&pHalData->odmpriv, HALRF_CMNINFO_IQK_SEGMENT, segment_iqk); #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_dm.h b/drivers/net/wireless/rtl8822cs/hal/hal_dm.h index e7bb76969..7bfb3ac1a 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_dm.h +++ b/drivers/net/wireless/rtl8822cs/hal/hal_dm.h @@ -96,8 +96,8 @@ enum phy_cnt { CRC32_ERROR_CCK, }; u32 rtw_phydm_get_phy_cnt(_adapter *adapter, enum phy_cnt cnt); -#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8822C_SUPPORT == 1) \ - || (RTL8723F_SUPPORT == 1)) +#if ((RTL8822B_SUPPORT == 1) || (RTL8821C_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) \ + || (RTL8822C_SUPPORT == 1) || (RTL8723F_SUPPORT == 1) || (RTL8822E_SUPPORT == 1)) void rtw_phydm_iqk_trigger(_adapter *adapter); #endif void rtw_phydm_read_efuse(_adapter *adapter); diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_dm_acs.c b/drivers/net/wireless/rtl8822cs/hal/hal_dm_acs.c index 0fa341463..337ecbfbc 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_dm_acs.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_dm_acs.c @@ -61,13 +61,11 @@ static void _rtw_bss_nums_count(_adapter *adapter, u8 *pbss_nums) u8 rtw_get_ch_num_by_idx(_adapter *adapter, u8 idx) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - RT_CHANNEL_INFO *pch_set = rfctl->channel_set; - u8 max_chan_nums = rfctl->max_chan_nums; + struct rtw_chset *chset = adapter_to_chset(adapter); - if (idx >= max_chan_nums) + if (idx >= chset->chs_len) return 0; - return pch_set[idx].ChannelNum; + return chset->chs[idx].ChannelNum; } #endif /*defined(CONFIG_RTW_ACS) || defined(CONFIG_BACKGROUND_NOISE_MONITOR)*/ @@ -144,20 +142,21 @@ void rtw_acs_trigger(_adapter *adapter, u16 scan_time_ms, u8 scan_chan, enum NHM HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); struct dm_struct *phydm = adapter_to_phydm(adapter); #if (RTK_ACS_VERSION == 3) - struct clm_para_info clm_para; - struct nhm_para_info nhm_para; - struct env_trig_rpt trig_rpt; + struct clm_para_info clm_para = {0}; + struct nhm_para_info nhm_para = {0}; + struct env_trig_rpt trig_rpt = {0}; + bool en_1db_mode = _FALSE; scan_time_ms -= 10; init_acs_clm(clm_para, scan_time_ms); if (pid == NHM_PID_IEEE_11K_HIGH) - init_11K_high_nhm(nhm_para, scan_time_ms); + init_11K_high_nhm(nhm_para, scan_time_ms, en_1db_mode); else if (pid == NHM_PID_IEEE_11K_LOW) - init_11K_low_nhm(nhm_para, scan_time_ms); + init_11K_low_nhm(nhm_para, scan_time_ms, en_1db_mode); else - init_acs_nhm(nhm_para, scan_time_ms); + init_acs_nhm(nhm_para, scan_time_ms, en_1db_mode); hal_data->acs.trig_rst = phydm_env_mntr_trigger(phydm, &nhm_para, &clm_para, &trig_rpt); if (hal_data->acs.trig_rst == (NHM_SUCCESS | CLM_SUCCESS)) { @@ -245,7 +244,7 @@ void rtw_acs_get_rst(_adapter *adapter) void _rtw_phydm_acs_select_best_chan(_adapter *adapter) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + struct rtw_chset *chset = adapter_to_chset(adapter); u8 ch_idx; u8 ch_idx_24g = 0xFF, ch_idx_5g = 0xFF; u8 min_itf_24g = 0xFF, min_itf_5g = 0xFF; @@ -253,9 +252,10 @@ void _rtw_phydm_acs_select_best_chan(_adapter *adapter) u8 *pclm_ratio = hal_data->acs.clm_ratio; u8 *pnhm_ratio = hal_data->acs.nhm_ratio; u8 *pinterference_time = hal_data->acs.interference_time; - u8 max_chan_nums = rfctl->max_chan_nums; - for (ch_idx = 0; ch_idx < max_chan_nums; ch_idx++) { + for (ch_idx = 0; ch_idx < chset->chs_len; ch_idx++) { + if (chset->chs[ch_idx].flags & RTW_CHF_DIS) + continue; if (pbss_nums[ch_idx]) pinterference_time[ch_idx] = (pclm_ratio[ch_idx] / 2) + (pnhm_ratio[ch_idx] / 2); else @@ -285,8 +285,7 @@ void _rtw_phydm_acs_select_best_chan(_adapter *adapter) void rtw_acs_info_dump(void *sel, _adapter *adapter) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - u8 max_chan_nums = rfctl->max_chan_nums; + struct rtw_chset *chset = adapter_to_chset(adapter); u8 ch_idx, ch_num; _RTW_PRINT_SEL(sel, "========== ACS (VER-%d) ==========\n", RTK_ACS_VERSION); @@ -301,7 +300,9 @@ void rtw_acs_info_dump(void *sel, _adapter *adapter) _RTW_PRINT_SEL(sel, "%5s %3s %3s %3s(%%) %3s(%%) %3s\n", "Index", "CH", "BSS", "CLM", "NHM", "ITF"); - for (ch_idx = 0; ch_idx < max_chan_nums; ch_idx++) { + for (ch_idx = 0; ch_idx < chset->chs_len; ch_idx++) { + if (chset->chs[ch_idx].flags & RTW_CHF_DIS) + continue; ch_num = rtw_get_ch_num_by_idx(adapter, ch_idx); _RTW_PRINT_SEL(sel, "%5d %3d %3d %6d %6d %3d\n", ch_idx, ch_num, hal_data->acs.bss_nums[ch_idx], @@ -395,8 +396,7 @@ u8 rtw_acs_get_num_ratio_by_ch_idx(_adapter *adapter, u8 ch_idx) void rtw_acs_chan_info_dump(void *sel, _adapter *adapter) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - u8 max_chan_nums = rfctl->max_chan_nums; + struct rtw_chset *chset = adapter_to_chset(adapter); u8 ch_idx, ch_num; u8 utilization; @@ -405,7 +405,9 @@ void rtw_acs_chan_info_dump(void *sel, _adapter *adapter) "Index", "CH", "Quality", "Availability", "Utilization", "WIFI Util", "Interference Util"); - for (ch_idx = 0; ch_idx < max_chan_nums; ch_idx++) { + for (ch_idx = 0; ch_idx < chset->chs_len; ch_idx++) { + if (chset->chs[ch_idx].flags & RTW_CHF_DIS) + continue; ch_num = rtw_get_ch_num_by_idx(adapter, ch_idx); utilization = hal_data->acs.clm_ratio[ch_idx] + hal_data->acs.nhm_ratio[ch_idx]; _RTW_PRINT_SEL(sel, "%5d %3d %7d %12d %12d %12d %12d\n", @@ -500,8 +502,7 @@ void rtw_nm_disable(_adapter *adapter) void rtw_noise_info_dump(void *sel, _adapter *adapter) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - u8 max_chan_nums = rfctl->max_chan_nums; + struct rtw_chset *chset = adapter_to_chset(adapter); u8 ch_idx, ch_num; _RTW_PRINT_SEL(sel, "========== NM (VER-%d) ==========\n", RTK_NOISE_MONITOR_VERSION); @@ -510,7 +511,9 @@ void rtw_noise_info_dump(void *sel, _adapter *adapter) _rtw_bss_nums_count(adapter, hal_data->nm.bss_nums); - for (ch_idx = 0; ch_idx < max_chan_nums; ch_idx++) { + for (ch_idx = 0; ch_idx < chset->chs_len; ch_idx++) { + if (chset->chs[ch_idx].flags & RTW_CHF_DIS) + continue; ch_num = rtw_get_ch_num_by_idx(adapter, ch_idx); _RTW_PRINT_SEL(sel, "%5d %3d %3d %10d\n", ch_idx, ch_num, hal_data->nm.bss_nums[ch_idx], diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_dm_acs.h b/drivers/net/wireless/rtl8822cs/hal/hal_dm_acs.h index f9620011b..2c9081aea 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_dm_acs.h +++ b/drivers/net/wireless/rtl8822cs/hal/hal_dm_acs.h @@ -31,7 +31,7 @@ enum NHM_PID { clm.mntr_time = time;\ } while (0) -#define init_nhm_param(nhm, txon, cca, cnt_opt, app, lv, time) \ +#define init_nhm_param(nhm, txon, cca, cnt_opt, app, lv, time, en_1db_mode) \ do {\ nhm.incld_txon = txon;\ nhm.incld_cca = cca;\ @@ -39,20 +39,21 @@ enum NHM_PID { nhm.nhm_app = app;\ nhm.nhm_lv = lv;\ nhm.mntr_time = time;\ + nhm.en_1db_mode = en_1db_mode;\ } while (0) #define init_acs_clm(clm, time) \ init_clm_param(clm, CLM_ACS, CLM_LV_2, time) -#define init_acs_nhm(nhm, time) \ - init_nhm_param(nhm, NHM_EXCLUDE_TXON, NHM_EXCLUDE_CCA, NHM_CNT_ALL, NHM_ACS, NHM_LV_2, time) +#define init_acs_nhm(nhm, time, en_1db_mode) \ + init_nhm_param(nhm, NHM_EXCLUDE_TXON, NHM_EXCLUDE_CCA, NHM_CNT_ALL, NHM_ACS, NHM_LV_2, time, en_1db_mode) -#define init_11K_high_nhm(nhm, time) \ - init_nhm_param(nhm, NHM_EXCLUDE_TXON, NHM_EXCLUDE_CCA, NHM_CNT_ALL, IEEE_11K_HIGH, NHM_LV_2, time) +#define init_11K_high_nhm(nhm, time, en_1db_mode) \ + init_nhm_param(nhm, NHM_EXCLUDE_TXON, NHM_EXCLUDE_CCA, NHM_CNT_ALL, IEEE_11K_HIGH, NHM_LV_2, time, en_1db_mode) -#define init_11K_low_nhm(nhm, time) \ - init_nhm_param(nhm, NHM_EXCLUDE_TXON, NHM_EXCLUDE_CCA, NHM_CNT_ALL, IEEE_11K_LOW, NHM_LV_2, time) +#define init_11K_low_nhm(nhm, time, en_1db_mode) \ + init_nhm_param(nhm, NHM_EXCLUDE_TXON, NHM_EXCLUDE_CCA, NHM_CNT_ALL, IEEE_11K_LOW, NHM_LV_2, time, en_1db_mode) #endif /*(RTK_ACS_VERSION == 3)*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_halmac.c b/drivers/net/wireless/rtl8822cs/hal/hal_halmac.c index 45fb96a75..424074f44 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_halmac.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_halmac.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2015 - 2021 Realtek Corporation. + * Copyright(c) 2015 - 2022 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -1206,7 +1206,7 @@ void rtw_halmac_get_version(char *str, u32 len) return; rtw_sprintf(str, len, "V%d_%02d_%02d_%02d", - ver.major_ver, ver.prototype_ver, ver.minor_ver, HALMAC_PATCH_VER); + ver.major_ver, ver.prototype_ver, ver.minor_ver, ver.patch_ver); } int rtw_halmac_init_adapter(struct dvobj_priv *d, struct halmac_platform_api *pf_api) @@ -1279,6 +1279,9 @@ int rtw_halmac_init_adapter(struct dvobj_priv *d, struct halmac_platform_api *pf /* Convert clock speed unit to MHz from Hz */ info.clock_speed = RTW_DIV_ROUND_UP(rtw_sdio_get_clock(d), 1000000); info.block_size = rtw_sdio_get_block_size(d); +#ifndef CONFIG_HALMAC_RS + info.tx_512_by_byte_mode = (d->intf_data.max_byte_size >= 512) ? 1 : 0; +#endif if (d->hmpriv.sdio_io_indir == 2) info.io_indir_flag = 0; else @@ -2698,6 +2701,10 @@ int rtw_halmac_poweron(struct dvobj_priv *d) struct halmac_api *api; enum halmac_ret_status status; int err = -1; +#ifdef CONFIG_NARROWBAND_SUPPORTING + struct registry_priv *regsty = dvobj_to_regsty(d); + u32 bw_type; +#endif /* CONFIG_NARROWBAND_SUPPORTING */ #if defined(CONFIG_PCI_HCI) && defined(CONFIG_RTL8822B) struct _ADAPTER *a; u8 v8; @@ -2734,6 +2741,16 @@ int rtw_halmac_poweron(struct dvobj_priv *d) } #endif +#ifdef CONFIG_NARROWBAND_SUPPORTING + if (regsty->rtw_nb_config == RTW_NB_CONFIG_WIDTH_10) + bw_type = HALMAC_BW_10; + else if (regsty->rtw_nb_config == RTW_NB_CONFIG_WIDTH_5) + bw_type = HALMAC_BW_5; + + if ((bw_type == HALMAC_BW_10) || (bw_type == HALMAC_BW_5)) + api->halmac_set_hw_value(dvobj_to_halmac(d), HALMAC_HW_BANDWIDTH, &bw_type); +#endif /* CONFIG_NARROWBAND_SUPPORTING */ + status = _power_switch(halmac, api, HALMAC_MAC_POWER_ON); if (HALMAC_RET_PWR_UNCHANGE == status) { @@ -2881,6 +2898,8 @@ static enum halmac_drv_rsvd_pg_num _rsvd_page_num_drv2halmac(u16 num) return HALMAC_RSVD_PG_NUM64; if (num <= 128) return HALMAC_RSVD_PG_NUM128; + +#ifndef CONFIG_HALMAC_RS if (num <= 256) return HALMAC_RSVD_PG_NUM256; if (num <= 512) @@ -2894,6 +2913,14 @@ static enum halmac_drv_rsvd_pg_num _rsvd_page_num_drv2halmac(u16 num) __FUNCTION__, num); return HALMAC_RSVD_PG_NUM1460; +#else + if (num > 256) + RTW_WARN("%s: Fail to allocate RSVD page(%d)!!" + " The MAX RSVD page number is 256...\n", + __FUNCTION__, num); + + return HALMAC_RSVD_PG_NUM256; +#endif } static u16 _rsvd_page_num_halmac2drv(enum halmac_drv_rsvd_pg_num rsvd_page_number) @@ -2930,6 +2957,7 @@ static u16 _rsvd_page_num_halmac2drv(enum halmac_drv_rsvd_pg_num rsvd_page_numbe num = 256; break; +#ifndef CONFIG_HALMAC_RS case HALMAC_RSVD_PG_NUM512: num = 512; break; @@ -2941,6 +2969,7 @@ static u16 _rsvd_page_num_halmac2drv(enum halmac_drv_rsvd_pg_num rsvd_page_numbe case HALMAC_RSVD_PG_NUM1460: num = 1460; break; +#endif } return num; @@ -3135,7 +3164,7 @@ static int _send_general_info(struct dvobj_priv *d) case HALMAC_RET_NO_DLFW: RTW_WARN("%s: halmac_send_general_info() fail because fw not dl!\n", __FUNCTION__); - /* fall through */ + fallthrough; default: return -1; } @@ -5243,7 +5272,7 @@ static enum halmac_gpio_func _gpio_to_func_for_rfe_ctrl(u8 gpio) enum halmac_gpio_func f = HALMAC_GPIO_FUNC_UNDEFINE; -#ifdef CONFIG_RTL8822C +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) switch (gpio) { case 1: f = HALMAC_GPIO_FUNC_ANTSWB; @@ -5264,7 +5293,7 @@ static enum halmac_gpio_func _gpio_to_func_for_rfe_ctrl(u8 gpio) f = HALMAC_GPIO_FUNC_ANTSW; break; } -#endif /* CONFIG_RTL8822C */ +#endif /* CONFIG_RTL8822C || CONFIG_RTL8822E */ return f; } @@ -5320,8 +5349,7 @@ static int _halmac_scanoffload(struct dvobj_priv *d, u32 enable, u8 nlo, u32 len = 0; int i = 0; struct pno_ssid pnossid; - struct rf_ctl_t *rfctl = NULL; - struct _RT_CHANNEL_INFO *ch_set; + struct rtw_chset *chset; tbl = d->hmpriv.indicator; @@ -5333,8 +5361,7 @@ static int _halmac_scanoffload(struct dvobj_priv *d, u32 enable, u8 nlo, id_update = HALMAC_FEATURE_UPDATE_PACKET; id_ch_sw = HALMAC_FEATURE_CHANNEL_SWITCH; pmlmeext = &(adapter->mlmeextpriv); - rfctl = adapter_to_rfctl(adapter); - ch_set = rfctl->channel_set; + chset = adapter_to_chset(adapter); RTW_INFO("%s: %s scanoffload, mode: %s\n", __FUNCTION__, enable?"Enable":"Disable", @@ -5382,10 +5409,12 @@ static int _halmac_scanoffload(struct dvobj_priv *d, u32 enable, u8 nlo, api->halmac_clear_ch_info(mac); - for (i = 0; i < rfctl->max_chan_nums && ch_set[i].ChannelNum != 0; i++) { + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].flags & RTW_CHF_DIS) + continue; _rtw_memset(&ch_info, 0, sizeof(ch_info)); ch_info.extra_info = 0; - ch_info.channel = ch_set[i].ChannelNum; + ch_info.channel = chset->chs[i].ChannelNum; ch_info.bw = HALMAC_BW_20; ch_info.pri_ch_idx = HALMAC_CH_IDX_1; ch_info.action_id = HALMAC_CS_ACTIVE_SCAN; @@ -5950,3 +5979,39 @@ int rtw_halmac_bf_cfg_mu_mimo(struct dvobj_priv *d, enum halmac_snd_role role, #endif /* RTW_BEAMFORMING_VERSION_2 */ #endif /* CONFIG_BEAMFORMING */ + +#ifdef CONFIG_MP_INCLUDED +#ifdef RTW_HALMAC +int rtw_halmac_set_gpio(struct dvobj_priv *d, u8 gpio_id, u8 gpio_enable, u8 gpio_func_offset, u8 gpio_mode) +{ + struct halmac_adapter *halmac; + struct halmac_api *api; + enum halmac_ret_status status; + + halmac = dvobj_to_halmac(d); + api = HALMAC_GET_API(halmac); + + status = api->halmac_pinmux_free_func(halmac, gpio_id + gpio_func_offset); + if (status != HALMAC_RET_SUCCESS) { + return -1; + } + + status = api->halmac_pinmux_set_func(halmac, gpio_id + gpio_func_offset); + if (status != HALMAC_RET_SUCCESS) { + return -1; + } + + status = api->halmac_pinmux_gpio_mode(halmac, gpio_id, gpio_mode); + if (status != HALMAC_RET_SUCCESS) { + return -1; + } + + status = api->halmac_pinmux_gpio_output(halmac, gpio_id, gpio_enable); + if (status != HALMAC_RET_SUCCESS) { + return -1; + } + + return 0; +} +#endif +#endif diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_intf.c b/drivers/net/wireless/rtl8822cs/hal/hal_intf.c index 8aa1341f7..643e8e422 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_intf.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_intf.c @@ -37,6 +37,7 @@ const u32 _chip_type_to_odm_ic_type[] = { ODM_RTL8822C, ODM_RTL8814B, ODM_RTL8723F, + ODM_RTL8822E, 0, }; @@ -133,6 +134,11 @@ void rtw_hal_def_value_init(_adapter *padapter) GET_HAL_DATA(padapter)->rx_tsf_addr_filter_config = 0; } + #ifdef CONFIG_NARROWBAND_SUPPORTING + if ((padapter->registrypriv.rtw_nb_config == RTW_NB_CONFIG_WIDTH_10) + || (padapter->registrypriv.rtw_nb_config == RTW_NB_CONFIG_WIDTH_5)) + GET_HAL_DATA(padapter)->dis_turboedca = 1; + #endif /* CONFIG_NARROWBAND_SUPPORTING */ } u8 rtw_hal_data_init(_adapter *padapter) @@ -144,6 +150,13 @@ u8 rtw_hal_data_init(_adapter *padapter) RTW_INFO("cant not alloc memory for HAL DATA\n"); return _FAIL; } + GET_HAL_DATA(padapter)->adapter = padapter; +#ifdef CONFIG_TX_PAUSE_FW_CTRL + _rtw_spinlock_init(&((HAL_DATA_TYPE*)padapter->HalData)->tx_pause_sctx_lock); +#endif + #if CONFIG_TXPWR_LIMIT + hal_txpwr_lmt_tb_init(padapter->HalData); + #endif rtw_phydm_priv_init(padapter); } return _SUCCESS; @@ -153,8 +166,14 @@ void rtw_hal_data_deinit(_adapter *padapter) { if (is_primary_adapter(padapter)) { if (padapter->HalData) { + #if CONFIG_TXPWR_LIMIT + hal_txpwr_lmt_tb_deinit(padapter->HalData); + #endif #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE phy_free_filebuf(padapter); +#endif +#ifdef CONFIG_TX_PAUSE_FW_CTRL + _rtw_spinlock_free(&((HAL_DATA_TYPE*)padapter->HalData)->tx_pause_sctx_lock); #endif rtw_vmfree(padapter->HalData, padapter->hal_data_sz); padapter->HalData = NULL; @@ -275,9 +294,11 @@ void _dump_rf_path(void *sel, _adapter *adapter) PHAL_DATA_TYPE hal_data = GET_HAL_DATA(adapter); struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); struct registry_priv *regsty = adapter_to_regsty(adapter); + u8 rf_type = 0; - RTW_PRINT_SEL(sel, "[RF_PATH] ver_id.RF_TYPE:%s\n" - , rf_type_to_rfpath_str(rtw_chip_rftype_to_hal_rftype(adapter, 0))); + rf_type = rtw_chip_rftype_to_hal_rftype(adapter, 0); + RTW_PRINT_SEL(sel, "[RF_PATH] ver_id.RF_TYPE:%s\n", + rf_type_to_rfpath_str(rf_type)); RTW_PRINT_SEL(sel, "[RF_PATH] HALSPEC's rf_reg_trx_path_bmp:0x%02x, rf_reg_path_avail_num:%u, max_tx_cnt:%u\n" , hal_spec->rf_reg_trx_path_bmp, hal_spec->rf_reg_path_avail_num, hal_spec->max_tx_cnt); RTW_PRINT_SEL(sel, "[RF_PATH] PG's trx_path_bmp:0x%02x, max_tx_cnt:%u\n" @@ -407,7 +428,7 @@ u8 rtw_hal_trxnss_init(_adapter *adapter) /* these IC is capable of full-TX when macro defined */ || IS_HARDWARE_TYPE_8192E(adapter) || IS_HARDWARE_TYPE_8192F(adapter) || IS_HARDWARE_TYPE_8812(adapter) || IS_HARDWARE_TYPE_8822B(adapter) - || IS_HARDWARE_TYPE_8822C(adapter) + || IS_HARDWARE_TYPE_8822C(adapter) || IS_HARDWARE_TYPE_8822E(adapter) #endif ) hal_data->txpath_cap_num_nss[i] = hal_data->max_tx_cnt; @@ -591,6 +612,13 @@ uint rtw_hal_init(_adapter *padapter) PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); int i; +#ifdef CONFIG_HAL_PREINIT + if (rtw_get_hal_pre_inited(padapter) == _TRUE) { + rtw_set_hal_pre_inited(padapter, _FALSE); + return status; + } +#endif + halrf_set_rfsupportability(adapter_to_phydm(padapter)); status = padapter->hal_func.hal_init(padapter); @@ -665,6 +693,12 @@ uint rtw_hal_deinit(_adapter *padapter) if (status == _SUCCESS) { rtw_led_control(padapter, LED_CTL_POWER_OFF); rtw_set_hw_init_completed(padapter, _FALSE); +#ifdef CONFIG_HAL_PREINIT + if (rtw_get_hal_pre_inited(padapter) == _TRUE) { + RTW_INFO("rtw_hal_deinit with hal_pre_inited\n"); + rtw_set_hal_pre_inited(padapter, _FALSE); + } +#endif } else RTW_INFO("\n rtw_hal_deinit: hal_init fail\n"); @@ -672,6 +706,11 @@ uint rtw_hal_deinit(_adapter *padapter) return status; } +bool rtw_hw_is_init_completed(struct dvobj_priv *dvobj) +{ + return rtw_get_hw_init_completed(dvobj_get_primary_adapter(dvobj)); +} + u8 rtw_hal_set_hwreg(_adapter *padapter, u8 variable, u8 *val) { return padapter->hal_func.set_hw_reg_handler(padapter, variable, val); @@ -1084,13 +1123,25 @@ void rtw_hal_interrupt_handler(_adapter *padapter, u16 pkt_len, u8 *pbuf) } #endif -void rtw_hal_set_chnl_bw(_adapter *padapter, u8 channel, enum channel_width Bandwidth, u8 Offset40, u8 Offset80) +void rtw_hal_set_chnl_bw(_adapter *padapter, u8 cch, enum channel_width Bandwidth, u8 Offset40, u8 Offset80) { PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); - /*u8 cch_160 = Bandwidth == CHANNEL_WIDTH_160 ? channel : 0;*/ - u8 cch_80 = Bandwidth == CHANNEL_WIDTH_80 ? channel : 0; - u8 cch_40 = Bandwidth == CHANNEL_WIDTH_40 ? channel : 0; - u8 cch_20 = Bandwidth == CHANNEL_WIDTH_20 ? channel : 0; + /*u8 cch_160 = Bandwidth == CHANNEL_WIDTH_160 ? cch : 0;*/ + u8 cch_80 = Bandwidth == CHANNEL_WIDTH_80 ? cch : 0; + u8 cch_40 = Bandwidth == CHANNEL_WIDTH_40 ? cch : 0; + u8 cch_20 = Bandwidth == CHANNEL_WIDTH_20 ? cch : 0; + +#ifdef CONFIG_DFS_MASTER + struct dfs_rd_ch_switch_ctx dfs_rd_cs_ctx; + u8 band_idx = HW_BAND_0; + enum band_type band; + u8 ch, bw, offset; + + rtw_get_oper_bchbw_by_hwband(adapter_to_dvobj(padapter), band_idx, &band, &ch, &bw, &offset); + + hal_dfs_rd_setting_before_ch_switch(pHalData, band_idx + , band, ch, bw, offset, &dfs_rd_cs_ctx); +#endif if (rtw_phydm_is_iqk_in_progress(padapter)) RTW_ERR("%s, %d, IQK may race condition\n", __func__, __LINE__); @@ -1116,16 +1167,24 @@ void rtw_hal_set_chnl_bw(_adapter *padapter, u8 channel, enum channel_width Band if (0) RTW_INFO("%s cch:%u, %s, offset40:%u, offset80:%u (%u, %u, %u)\n", __func__ - , channel, ch_width_str(Bandwidth), Offset40, Offset80 + , cch, ch_width_str(Bandwidth), Offset40, Offset80 , pHalData->cch_80, pHalData->cch_40, pHalData->cch_20); - padapter->hal_func.set_chnl_bw_handler(padapter, channel, Bandwidth, Offset40, Offset80); + padapter->hal_func.set_chnl_bw_handler(padapter, cch, Bandwidth, Offset40, Offset80); + +#ifdef CONFIG_DFS_MASTER + hal_dfs_rd_setting_after_ch_switch(pHalData, band_idx + , band, ch, bw, offset, &dfs_rd_cs_ctx); +#endif } void rtw_hal_dm_watchdog(_adapter *padapter) { rtw_hal_turbo_edca(padapter); +#ifndef CONFIG_DIRECT_EDCCA_MODE_SETTING + rtw_edcca_hal_update(adapter_to_dvobj(padapter)); +#endif padapter->hal_func.hal_dm_watchdog(padapter); } @@ -1296,6 +1355,9 @@ s32 c2h_handler(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload) case C2H_BT_INFO: rtw_btcoex_BtInfoNotify(adapter, plen, payload); break; + case C2H_BT_LE_AUDIO_INFO: + rtw_btcoex_le_audio_info_notify(adapter, plen, payload); + break; case C2H_BT_MP_INFO: #if defined(CONFIG_MP_INCLUDED) && defined(CONFIG_RTL8723B) MPTBT_FwC2hBtMpCtrl(adapter, payload, plen); @@ -1326,6 +1388,12 @@ s32 c2h_handler(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload) rtw_hal_bcn_early_rpt_c2h_handler(adapter); break; +#ifdef CONFIG_TX_PAUSE_FW_CTRL + case C2H_TX_PAUSE_RPT: + c2h_tx_pause_rpt_hdl(adapter, payload, plen); + break; +#endif + #ifdef CONFIG_MCC_MODE case C2H_MCC: rtw_hal_mcc_c2h_handler(adapter, plen, payload); @@ -1372,7 +1440,6 @@ s32 c2h_handler(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload) sub_id = payload[0]; /* no handle, goto default */ fallthrough; - /* fall through */ default: if (phydm_c2H_content_parsing(adapter_to_phydm(adapter), id, plen, payload) != TRUE) @@ -1411,6 +1478,7 @@ s32 rtw_hal_c2h_id_handle_directly(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 case C2H_IQK_FINISH: case C2H_MCC: case C2H_BCN_EARLY_RPT: + case C2H_TX_PAUSE_RPT: case C2H_AP_REQ_TXRPT: case C2H_SPC_STAT: case C2H_SET_TXPWR_FINISH: @@ -1942,6 +2010,13 @@ void rtw_hal_fw_correct_bcn(_adapter *padapter) } #endif +bool rtw_txpwr_hal_get_pwr_lmt_en(struct dvobj_priv *dvobj) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + + return hal_data->txpwr_limit_loaded; +} + void rtw_hal_set_tx_power_level(_adapter *adapter, u8 channel) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); @@ -1957,36 +2032,6 @@ void rtw_hal_set_tx_power_level(_adapter *adapter, u8 channel) hal_data->set_entire_txpwr = 0; } -void rtw_hal_update_txpwr_level(_adapter *adapter) -{ - HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); -#ifdef CONFIG_ACTIVE_TPC_REPORT - struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); - int i; -#endif - - rtw_hal_set_tx_power_level(adapter, hal_data->current_channel); - rtw_rfctl_update_op_mode(adapter_to_rfctl(adapter), 0, 0); - -#ifdef CONFIG_ACTIVE_TPC_REPORT - for (i = 0; i < dvobj->iface_nums; i++) { - struct mlme_priv *mlme; - - if (!dvobj->padapters[i]) - continue; - if (!CHK_MLME_STATE(dvobj->padapters[i], WIFI_AP_STATE | WIFI_MESH_STATE) - || !MLME_IS_ASOC(dvobj->padapters[i]) || MLME_IS_OPCH_SW(dvobj->padapters[i])) - continue; - if (dvobj->padapters[i]->mlmeextpriv.bstart_bss != _TRUE) - continue; - - mlme = &(dvobj->padapters[i]->mlmepriv); - if (MLME_ACTIVE_TPC_REPORT(mlme)) - update_beacon(dvobj->padapters[i], WLAN_EID_TPC_REPORT, NULL, 1, 0); - } -#endif -} - void rtw_hal_set_txpwr_done(_adapter *adapter) { if (adapter->hal_func.set_txpwr_done) @@ -2020,6 +2065,68 @@ s8 rtw_hal_get_txpwr_target_extra_bias(_adapter *adapter, enum rf_path rfpath return val; } +int rtw_hal_tx_pause(_adapter *adapter, enum tx_pause_rson rson, bool tx_pause) +{ + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + u8 *tx_off; + enum tx_pause_rson i; + u8 tx_cfg = 0, val; + int ret = _FAIL; + + tx_off = &hal_data->tx_pause[rson]; + if (tx_pause == true) { + switch (rson) { + case PAUSE_RSON_DFS_CAC: + case PAUSE_RSON_TOKEN_BASED_XMIT: + *tx_off = (u8)StopAll; + break; + case PAUSE_RSON_DFS_CSA: + *tx_off = (u8)~StopBecon; + break; + case PAUSE_RSON_DFS_CSA_MG: + *tx_off = (u8)~(StopBecon | StopMgt); + break; + case PAUSE_RSON_SCAN: + case PAUSE_RSON_JOIN: + case PAUSE_RSON_CORRECT_TSF: + case PAUSE_RSON_OTHER_BCN_CTRL: + *tx_off = (u8)StopBecon; + break; + default: + RTW_ERR("Unknow pause reason:%d\n", rson); + goto _error; + } + } else { + *tx_off = 0; + } + *tx_off &= StopAll; + if (((*tx_off) & (StopBecon | StopHigh | StopMgt)) == (StopBecon | StopHigh | StopMgt)) + *tx_off |= StopBcnHiMgt; + + tx_off = hal_data->tx_pause; + for (i = 0; (i < PAUSE_RSON_MAX) && (tx_cfg != StopAll); i++) + if (tx_off[i]) + tx_cfg |= tx_off[i]; + + RTW_DBG("TX %sPause - Reason(%d) final tx_cfg(0x%02x)\n", + tx_pause?"":"Un-", rson, tx_cfg); + +#ifdef CONFIG_TX_PAUSE_FW_CTRL + if (GET_HAL_SPEC(adapter)->txpause_cap & TXPAUSE_CAP_FW_CTRL) + ret = rtw_hal_h2c_tx_pause_ctrl(adapter, tx_cfg); + else +#endif + { + rtw_hal_get_hwreg(adapter, HW_VAR_TXPAUSE, &val); + ret = _SUCCESS; + if (val != tx_cfg) + ret = rtw_hal_set_hwreg(adapter, HW_VAR_TXPAUSE, &tx_cfg); + } + +_error: + return ret; +} + #ifdef RTW_HALMAC /* * Description: diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_mcc.c b/drivers/net/wireless/rtl8822cs/hal/hal_mcc.c index 904321817..61acb5ffa 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_mcc.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_mcc.c @@ -31,10 +31,10 @@ #define TU 1024 /* 1 TU equals 1024 microseconds */ /* druration, TSF sync offset, start time offset, interval (unit:TU (1024 microseconds))*/ u8 mcc_switch_channel_policy_table[][7]={ - {20, 50, 40, 100, 0, 0, 30}, - {80, 50, 10, 100, 0, 0, 30}, - {36, 50, 32, 100, 0, 0, 30}, - {30, 50, 35, 100, 0, 0, 30}, + {20, 50, 40, 100, 2, 1, 30}, + {80, 50, 10, 100, 2, 1, 30}, + {36, 50, 32, 100, 2, 1, 30}, + {30, 50, 35, 100, 2, 1, 30}, }; const int mcc_max_policy_num = sizeof(mcc_switch_channel_policy_table) /sizeof(u8) /7; @@ -500,7 +500,6 @@ static void mcc_cfg_phdym_offload(_adapter *adapter, u8 enable) struct sta_priv *stapriv = NULL; struct sta_info *sta = NULL; struct wlan_network *cur_network = NULL; - _irqL irqL; _list *head = NULL, *list = NULL; u8 i = 0; @@ -527,7 +526,7 @@ static void mcc_cfg_phdym_offload(_adapter *adapter, u8 enable) break; case MCC_ROLE_AP: case MCC_ROLE_GO: - _enter_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(stapriv); head = &stapriv->asoc_list; list = get_next(head); @@ -538,7 +537,7 @@ static void mcc_cfg_phdym_offload(_adapter *adapter, u8 enable) mcc_cfg_phdym_update_macid(iface, _TRUE, sta->cmn.mac_id); } - _exit_critical_bh(&stapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(stapriv); break; default: RTW_INFO("Unknown role\n"); @@ -595,7 +594,6 @@ static void rtw_hal_config_mcc_role_setting(PADAPTER padapter, u8 order) struct sta_priv *pstapriv = &padapter->stapriv; struct sta_info *psta = NULL; struct registry_priv *preg = &padapter->registrypriv; - _irqL irqL; _list *phead =NULL, *plist = NULL; u8 policy_index = 0; u8 mcc_duration = 0; @@ -670,7 +668,7 @@ static void rtw_hal_config_mcc_role_setting(PADAPTER padapter, u8 order) rtw_hal_mcc_assign_tx_threshold(padapter); - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); @@ -685,7 +683,7 @@ static void rtw_hal_config_mcc_role_setting(PADAPTER padapter, u8 order) #endif } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); psta = rtw_get_bcmc_stainfo(padapter); @@ -1273,9 +1271,13 @@ u8 rtw_hal_dl_mcc_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, struct hal_com_data *hal = GET_HAL_DATA(adapter); struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); struct mcc_adapter_priv *mccadapriv = NULL; -#if defined(CONFIG_RTL8822C) +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) struct dm_struct *phydm = adapter_to_phydm(adapter); +#if defined(CONFIG_RTL8822C) struct txagc_table_8822c tab; +#elif defined(CONFIG_RTL8822E) + struct txagc_table_8822e tab; +#endif u8 agc_buff[2][NUM_RATE_AC_2SS]; /* tatol 0x40 rate index for PATH A/B */ #endif @@ -1288,7 +1290,7 @@ u8 rtw_hal_dl_mcc_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, if (!hal->RegIQKFWOffload) RTW_WARN("[MCC] must enable FW IQK for New IC\n"); #endif /* CONFIG_MCC_MODE_V2 */ - *total_page_num += (2 * MAX_MCC_NUM+ 1); + *total_page_num += (2 * MAX_MCC_NUM + 1); RTW_INFO("[MCC] allocate mcc rsvd page num = %d\n", *total_page_num); goto exit; } @@ -1327,7 +1329,7 @@ u8 rtw_hal_dl_mcc_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, CurtPktPageNum = (u8)PageNum(tx_desc + len, page_size); *total_page_num += CurtPktPageNum; *index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("LocNull", CurtPktPageNum, *total_page_num, *index); + RSVD_PAGE_CFG("LocNull", CurtPktPageNum, *total_page_num); break; case MCC_ROLE_AP: /* Bulid CTS */ @@ -1342,7 +1344,7 @@ u8 rtw_hal_dl_mcc_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, CurtPktPageNum = (u8)PageNum(tx_desc + len, page_size); *total_page_num += CurtPktPageNum; *index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("LocCTS", CurtPktPageNum, *total_page_num, *index); + RSVD_PAGE_CFG("LocCTS", CurtPktPageNum, *total_page_num); break; case MCC_ROLE_GO: /* To DO */ @@ -1383,7 +1385,7 @@ u8 rtw_hal_dl_mcc_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, i, pmccobjpriv->mcc_pwr_idx_rsvd_page[i]); total_rate_offset = start; -#if !defined(CONFIG_RTL8822C) +#if !defined(CONFIG_RTL8822C) && !defined(CONFIG_RTL8822E) for (path = RF_PATH_A; path < hal_spec->rf_reg_path_num; ++path) { total_rate = 0; /* PATH A for 0~63 byte, PATH B for 64~127 byte*/ @@ -1644,7 +1646,7 @@ u8 rtw_hal_dl_mcc_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, CurtPktPageNum = 1; *total_page_num += CurtPktPageNum; *index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("mcc_pwr_idx_rsvd_page", CurtPktPageNum, *total_page_num, *index); + RSVD_PAGE_CFG("mcc_pwr_idx_rsvd_page", CurtPktPageNum, *total_page_num); #else /* 8822C */ for (path = RF_PATH_A; path < hal_spec->rf_reg_path_num; ++path) { /* CCK */ @@ -1699,7 +1701,11 @@ u8 rtw_hal_dl_mcc_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, agc_buff[path][rate] = power_index; } } +#if defined(CONFIG_RTL8822C) phydm_get_txagc_ref_and_diff_8822c(phydm, agc_buff, NUM_RATE_AC_2SS, &tab); +#elif defined(CONFIG_RTL8822E) + phydm_get_txagc_ref_and_diff_8822e(phydm, agc_buff, NUM_RATE_AC_2SS, &tab); +#endif *start = tab.ref_pow_cck[0]; start++; *start = tab.ref_pow_cck[1]; @@ -1712,7 +1718,7 @@ u8 rtw_hal_dl_mcc_fw_rsvd_page(_adapter *adapter, u8 *pframe, u16 *index, CurtPktPageNum = 1; *total_page_num += CurtPktPageNum; *index += (CurtPktPageNum * page_size); - RSVD_PAGE_CFG("mcc_pwr_idx_rsvd_page", CurtPktPageNum, *total_page_num, *index); + RSVD_PAGE_CFG("mcc_pwr_idx_rsvd_page", CurtPktPageNum, *total_page_num); #ifdef DBG_PWR_IDX_RSVD_PAGE if (1) { u8 path_idx; @@ -2311,14 +2317,22 @@ static void rtw_hal_mcc_start_prehdl(PADAPTER padapter) mccadapriv->role = MCC_ROLE_MAX; } -#ifdef CONFIG_RTL8822C - if (IS_HARDWARE_TYPE_8822C(padapter)) { +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822C(padapter) || + IS_HARDWARE_TYPE_8822E(padapter)) { HAL_DATA_TYPE *hal = GET_HAL_DATA(padapter); struct dm_struct *dm = &hal->odmpriv; odm_cmn_info_update(dm, ODM_CMNINFO_IS_DOWNLOAD_FW, hal->bFWReady); } #endif +#ifdef CONFIG_RTL8822E +#ifdef CONFIG_TX_DUTY + if (IS_HARDWARE_TYPE_8822E(padapter)) { + rtw_hal_pause_tx_duty(padapter, _TRUE); + } +#endif +#endif } static u8 rtw_hal_set_mcc_start_setting(PADAPTER padapter, u8 status) @@ -2442,6 +2456,11 @@ static void rtw_hal_mcc_stop_posthdl(PADAPTER padapter) struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); struct mcc_obj_priv *mccobjpriv = &(adapter_to_dvobj(padapter)->mcc_objpriv); struct mcc_adapter_priv *mccadapriv = NULL; +#ifdef CONFIG_RTL8822E +#ifdef CONFIG_TX_DUTY + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); +#endif +#endif _adapter *iface = NULL; PHAL_DATA_TYPE hal; u8 i = 0; @@ -2485,14 +2504,23 @@ static void rtw_hal_mcc_stop_posthdl(PADAPTER padapter) rtw_hal_mcc_cfg_phydm(padapter, MCC_CFG_PHYDM_STOP, NULL); #endif -#ifdef CONFIG_RTL8822C - if (IS_HARDWARE_TYPE_8822C(padapter)) { +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) + if (IS_HARDWARE_TYPE_8822C(padapter) || + IS_HARDWARE_TYPE_8822E(padapter)) { HAL_DATA_TYPE *hal = GET_HAL_DATA(padapter); struct dm_struct *dm = &hal->odmpriv; odm_cmn_info_update(dm, ODM_CMNINFO_IS_DOWNLOAD_FW, _FALSE); } #endif +#ifdef CONFIG_RTL8822E +#ifdef CONFIG_TX_DUTY + if (IS_HARDWARE_TYPE_8822E(padapter)) { + if (pwdinfo->p2p_ps_state == P2P_PS_DISABLE) + rtw_hal_pause_tx_duty(padapter, _FALSE); + } +#endif +#endif } static void rtw_hal_mcc_start_posthdl(PADAPTER padapter) @@ -2764,7 +2792,7 @@ static u8 mcc_get_reg_hdl(PADAPTER adapter, const u8 *val) _adapter *cur_iface = NULL; u8 ret = _SUCCESS; u8 cur_order = 0; - #ifdef CONFIG_RTL8822C + #if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) u16 dbg_reg[DBG_MCC_REG_NUM] = {0x4d4,0x522,0x1d70}; #else u16 dbg_reg[DBG_MCC_REG_NUM] = {0x4d4,0x522,0xc50,0xe50}; @@ -2966,8 +2994,14 @@ void rtw_hal_mcc_c2h_handler(PADAPTER padapter, u8 buflen, u8 *tmpBuf) case MCC_RPT_SWICH_CHANNEL_NOTIFY: rtw_hal_mcc_sw_ch_fw_notify_hdl(padapter); break; + case MCC_RPT_TBTT: + if (pmccobjpriv->tsf_sync_done == _TRUE) { + rtw_hal_mcc_update_noa_start_time_hdl(padapter, buflen, tmpBuf); + pmccobjpriv->tsf_sync_done = _FALSE; + } + break; case MCC_RPT_UPDATE_NOA_START_TIME: - rtw_hal_mcc_update_noa_start_time_hdl(padapter, buflen, tmpBuf); + pmccobjpriv->tsf_sync_done = _TRUE; break; case MCC_RPT_TSF: _enter_critical_bh(&pmccobjpriv->mcc_lock, &irqL); @@ -3396,7 +3430,7 @@ u8 rtw_hal_set_mcc_setting_scan_complete(PADAPTER padapter) */ u8 rtw_hal_set_mcc_setting_start_bss_network(PADAPTER padapter, u8 chbw_allow) { - u8 ret = _FAIL; + u8 ret = NO_NEED_MCC; if (MCC_EN(padapter)) { /* channel bw offset can not be allowed, start MCC */ diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_mp.c b/drivers/net/wireless/rtl8822cs/hal/hal_mp.c index a24491ba0..7d0d9cc75 100644 --- a/drivers/net/wireless/rtl8822cs/hal/hal_mp.c +++ b/drivers/net/wireless/rtl8822cs/hal/hal_mp.c @@ -153,8 +153,9 @@ void hal_mpt_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14) u8 DataRate = 0xFF; /* Do not modify CCK TX filter parameters for 8822B*/ - if(IS_HARDWARE_TYPE_8822B(Adapter) || IS_HARDWARE_TYPE_8821C(Adapter) || - IS_HARDWARE_TYPE_8723D(Adapter) || IS_HARDWARE_TYPE_8192F(Adapter) || IS_HARDWARE_TYPE_8822C(Adapter)) + if(IS_HARDWARE_TYPE_8822B(Adapter) || IS_HARDWARE_TYPE_8821C(Adapter) + || IS_HARDWARE_TYPE_8723D(Adapter) || IS_HARDWARE_TYPE_8192F(Adapter) + || IS_HARDWARE_TYPE_8822C(Adapter) || IS_HARDWARE_TYPE_8822E(Adapter)) return; DataRate = mpt_to_mgnt_rate(ulRateIdx); @@ -616,6 +617,19 @@ u32 hal_mpt_tssi_turn_target_power(PADAPTER padapter, s16 power_offset, u8 path) return pout; } +void hal_mpt_tssi_set_power_offset(PADAPTER padapter, s16 power_offset, u8 path) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dm_struct *pdm = &pHalData->odmpriv; + +#ifdef CONFIG_RTL8723F + halrf_tssi_set_power_offset(pdm, power_offset, path); +#endif + RTW_INFO("%s()===> path%d = %d\n", __func__, path, power_offset); + + return; +} + #define RF_PATH_AB 22 #ifdef CONFIG_RTL8814A @@ -880,7 +894,8 @@ void mpt_SetRFPath_8814A(PADAPTER pAdapter) #endif /* CONFIG_RTL8814A */ #if defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) \ - || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8723F) \ + || defined(CONFIG_RTL8822E) void mpt_SetSingleTone_8814A( PADAPTER pAdapter, @@ -927,7 +942,7 @@ mpt_SetSingleTone_8814A( if (bEnPMacTx == FALSE) { hal_mpt_SetContinuousTx(pAdapter, _TRUE); - issue_nulldata(pAdapter, NULL, 1, 3, 500); + issue_nulldata(pAdapter, NULL, 1, 3, PS_ANNC_DRV_RETRY_INT_MS); } phy_set_bb_reg(pAdapter, rCCAonSec_Jaguar, BIT1, 0x1); /*/ Disable CCA*/ @@ -1592,6 +1607,12 @@ void hal_mpt_SetAntenna(PADAPTER pAdapter) tx_path_nss_set_full_tx(hal->txpath_nss, hal->txpath_num_nss, bb_tx); RTW_INFO("%s ,ant idx %d, tx path_num_nss = %d\n", __func__, anttx, hal->txpath_num_nss[0]); +#ifdef CONFIG_RTL8723F + if (IS_HARDWARE_TYPE_8723F(pAdapter)) { + rtl8723f_mp_config_rfpath(pAdapter); + return; + } +#endif #ifdef CONFIG_RTL8822C if (IS_HARDWARE_TYPE_8822C(pAdapter)) { rtl8822c_mp_config_rfpath(pAdapter); @@ -1657,6 +1678,13 @@ void hal_mpt_SetAntenna(PADAPTER pAdapter) } #endif +#ifdef CONFIG_RTL8822E + if (IS_HARDWARE_TYPE_8822E(pAdapter)) { + rtl8822e_mp_config_rfpath(pAdapter); + return; + } +#endif + /* else if (IS_HARDWARE_TYPE_8821B(pAdapter)) mpt_SetRFPath_8821B(pAdapter); Prepare for 8822B @@ -1710,7 +1738,9 @@ u8 hal_mpt_ReadRFThermalMeter(PADAPTER pAdapter, u8 rf_path) s8 thermal_offset = 0; u32 thermal_reg_mask = 0; - if (IS_8822C_SERIES(GET_HAL_DATA(pAdapter)->version_id) || IS_8723F_SERIES(GET_HAL_DATA(pAdapter)->version_id)) + if (IS_8822C_SERIES(GET_HAL_DATA(pAdapter)->version_id) + || IS_8723F_SERIES(GET_HAL_DATA(pAdapter)->version_id) + || IS_8822E_SERIES(GET_HAL_DATA(pAdapter)->version_id)) thermal_reg_mask = 0x007e; /*0x42: RF Reg[6:1], 35332(themal K & bias k & power trim) & 35325(tssi )*/ else thermal_reg_mask = 0xfc00; /*0x42: RF Reg[15:10]*/ @@ -2334,8 +2364,8 @@ static void mpt_StartOfdmContTx( } /* mpt_StartOfdmContTx */ #if defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8821B) || defined(CONFIG_RTL8822B) \ - || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ - || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) #ifdef PHYDM_PMAC_TX_SETTING_SUPPORT static void mpt_convert_phydm_txinfo_for_jaguar3( RT_PMAC_TX_INFO *pMacTxInfo, struct phydm_pmac_info *phydmtxinfo) @@ -2405,16 +2435,18 @@ u8 mpt_ProSetPMacTx(PADAPTER Adapter) RTW_INFO("TXSC %d BandWidth %d PacketPeriod %d PacketCount %d PacketLength %d PacketPattern %d\n", PMacTxInfo.TX_SC, PMacTxInfo.BandWidth, PMacTxInfo.PacketPeriod, PMacTxInfo.PacketCount, PMacTxInfo.PacketLength, PMacTxInfo.PacketPattern); - if (hal_spec->tx_nss_num < 2 && MPT_IS_2SS_RATE(PMacTxInfo.TX_RATE)) - return _FALSE; - if (hal_spec->tx_nss_num < 3 && MPT_IS_3SS_RATE(PMacTxInfo.TX_RATE)) - return _FALSE; - if (hal_spec->tx_nss_num < 4 && MPT_IS_4SS_RATE(PMacTxInfo.TX_RATE)) - return _FALSE; - if (!is_supported_vht(Adapter->registrypriv.wireless_mode) && MPT_IS_VHT_RATE(PMacTxInfo.TX_RATE)) - return _FALSE; - if (!is_supported_ht(Adapter->registrypriv.wireless_mode) && MPT_IS_HT_RATE(PMacTxInfo.TX_RATE)) - return _FALSE; + if (PMacTxInfo.bEnPMacTx == TRUE) { + if (hal_spec->tx_nss_num < 2 && MPT_IS_2SS_RATE(PMacTxInfo.TX_RATE)) + return _FALSE; + if (hal_spec->tx_nss_num < 3 && MPT_IS_3SS_RATE(PMacTxInfo.TX_RATE)) + return _FALSE; + if (hal_spec->tx_nss_num < 4 && MPT_IS_4SS_RATE(PMacTxInfo.TX_RATE)) + return _FALSE; + if (!is_supported_vht(Adapter->registrypriv.wireless_mode) && MPT_IS_VHT_RATE(PMacTxInfo.TX_RATE)) + return _FALSE; + if (!is_supported_ht(Adapter->registrypriv.wireless_mode) && MPT_IS_HT_RATE(PMacTxInfo.TX_RATE)) + return _FALSE; + } if (PMacTxInfo.BandWidth == 1 && hal_chk_bw_cap(Adapter, BW_CAP_40M)) PMacTxInfo.BandWidth = CHANNEL_WIDTH_40; @@ -2681,4 +2713,11 @@ void mpt_trigger_tssi_tracking(PADAPTER pAdapter, u8 rf_path) #endif } +#ifdef RTW_HALMAC +int hal_mpt_SetGpio(PADAPTER pAdapter, u8 gpio_id, u8 gpio_enable, u8 gpio_func_offset, u8 gpio_mode) +{ + return rtw_halmac_set_gpio(adapter_to_dvobj(pAdapter), gpio_id, gpio_enable, gpio_func_offset, gpio_mode); +} +#endif + #endif /* CONFIG_MP_INCLUDE*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_pwr_table.c b/drivers/net/wireless/rtl8822cs/hal/hal_pwr_table.c new file mode 100644 index 000000000..3fb7d3bb9 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/hal/hal_pwr_table.c @@ -0,0 +1,773 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#define _HAL_PWR_TABLE_C_ + +#include +#include + +#if CONFIG_TXPWR_LIMIT +const char *const _txpwr_lmt_rs_str[] = { + [TXPWR_LMT_RS_CCK] = "CCK", + [TXPWR_LMT_RS_OFDM] = "OFDM", + [TXPWR_LMT_RS_HT] = "HT", + [TXPWR_LMT_RS_VHT] = "VHT", + [TXPWR_LMT_RS_NUM] = "UNKNOWN", +}; + +void hal_txpwr_lmt_reg_exc_add_with_nlen(struct hal_com_data *hal_data, const char *country, u8 domain, const char *reg_name, u32 nlen) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg_exc *ent; + + if (!reg_name || !nlen) { + rtw_warn_on(1); + goto exit; + } + + ent = rtw_zmalloc(sizeof(struct lmt_reg_exc) + nlen + 1); + if (!ent) + goto exit; + + _rtw_init_listhead(&ent->list); + if (country) + _rtw_memcpy(ent->country, country, 2); + ent->domain = domain; + _rtw_memcpy(ent->reg_name, reg_name, nlen); + + _rtw_mutex_lock_interruptible(&tb->lock); + + rtw_list_insert_tail(&ent->list, &tb->reg_exc_list); + tb->reg_exc_num++; + + _rtw_mutex_unlock(&tb->lock); + +exit: + return; +} + +void hal_txpwr_lmt_reg_exc_add(struct hal_com_data *hal_data, const char *country, u8 domain, const char *reg_name) +{ + hal_txpwr_lmt_reg_exc_add_with_nlen(hal_data, country, domain, reg_name, strlen(reg_name)); +} + +static struct lmt_reg_exc *_hal_txpwr_lmt_reg_exc_search(struct hal_com_data *hal_data, const char *country, u8 domain) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg_exc *ent; + _list *cur, *head; + u8 match = 0; + + head = &tb->reg_exc_list; + cur = get_next(head); + + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + u8 has_country; + + ent = LIST_CONTAINOR(cur, struct lmt_reg_exc, list); + cur = get_next(cur); + has_country = (ent->country[0] == '\0' && ent->country[1] == '\0') ? 0 : 1; + + /* entry has country condition to match */ + if (has_country) { + if (!country) + continue; + if (ent->country[0] != country[0] + || ent->country[1] != country[1]) + continue; + } + + /* entry has domain condition to match */ + if (ent->domain != 0xFF) { + if (domain == 0xFF) + continue; + if (ent->domain != domain) + continue; + } + + match = 1; + break; + } + + if (match) + return ent; + else + return NULL; +} + +struct lmt_reg_exc *hal_txpwr_lmt_reg_exc_search(struct hal_com_data *hal_data, const char *country, u8 domain) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg_exc *ent; + + _rtw_mutex_lock_interruptible(&tb->lock); + ent = _hal_txpwr_lmt_reg_exc_search(hal_data, country, domain); + _rtw_mutex_unlock(&tb->lock); + + return ent; +} + +void hal_txpwr_lmt_reg_exc_list_free(struct hal_com_data *hal_data) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg_exc *ent; + _list *cur, *head; + + _rtw_mutex_lock_interruptible(&tb->lock); + + head = &tb->reg_exc_list; + cur = get_next(head); + + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg_exc, list); + cur = get_next(cur); + rtw_list_delete(&ent->list); + rtw_mfree((u8 *)ent, sizeof(struct lmt_reg_exc) + strlen(ent->reg_name) + 1); + } + tb->reg_exc_num = 0; + + _rtw_mutex_unlock(&tb->lock); +} + +static void _dump_txpwr_lmt_reg_exc_list(void *sel, struct hal_com_data *hal_data) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg_exc *ent; + _list *cur, *head; + + RTW_PRINT_SEL(sel, "reg_exc_num:%u\n", tb->reg_exc_num); + + if (!tb->reg_exc_num) + goto exit; + + RTW_PRINT_SEL(sel, "%-7s %-6s %-8s\n", "country", "domain", "reg_name"); + + head = &tb->reg_exc_list; + cur = get_next(head); + + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + u8 has_country; + + ent = LIST_CONTAINOR(cur, struct lmt_reg_exc, list); + cur = get_next(cur); + has_country = (ent->country[0] == '\0' && ent->country[1] == '\0') ? 0 : 1; + + RTW_PRINT_SEL(sel, " %c%c 0x%02x %s\n" + , has_country ? ent->country[0] : '-' + , has_country ? ent->country[1] : '-' + , ent->domain + , ent->reg_name + ); + } + +exit: + return; +} + +void dump_txpwr_lmt_reg_exc_list(void *sel, struct hal_com_data *hal_data) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + + _rtw_mutex_lock_interruptible(&tb->lock); + _dump_txpwr_lmt_reg_exc_list(sel, hal_data); + _rtw_mutex_unlock(&tb->lock); +} + +/* search matcing first, if not found, alloc one */ +void hal_txpwr_lmt_reg_add_with_nlen(struct hal_com_data *hal_data, const char *name, u32 nlen + , u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt) +{ + struct hal_spec_t *hal_spec = &hal_data->hal_spec; + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg *ent; + _list *cur, *head; + s8 pre_lmt; + u8 ch; + + if (!name || !nlen) { + rtw_warn_on(1); + goto exit; + } + + _rtw_mutex_lock_interruptible(&tb->lock); + + /* search for existed entry */ + head = &tb->reg_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); + cur = get_next(cur); + + if (strlen(ent->name) == nlen + && _rtw_memcmp(ent->name, name, nlen) == _TRUE) + goto chk_lmt_band; + } + + /* alloc new one */ + ent = rtw_zvmalloc(sizeof(struct lmt_reg) + nlen + 1); + if (!ent) + goto release_lock; + + _rtw_init_listhead(&ent->list); + _rtw_memcpy(ent->name, name, nlen); + rtw_list_insert_tail(&ent->list, &tb->reg_list); + tb->reg_num++; + +chk_lmt_band: + if (band == BAND_ON_24G && !ent->lmt_2g) { + ent->lmt_2g = rtw_vmalloc(sizeof(*ent->lmt_2g)); + if (ent->lmt_2g) { + u8 j, k, l, m; + + for (j = 0; j < MAX_2_4G_BANDWIDTH_NUM; ++j) + for (k = 0; k < TXPWR_LMT_RS_NUM_2G; ++k) + for (m = 0; m < CENTER_CH_2G_NUM; ++m) + for (l = 0; l < MAX_TX_COUNT; ++l) + ent->lmt_2g->v[j][k][m][l] = hal_spec->txgi_max; + } else + goto release_lock; + } + #if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G && !ent->lmt_5g) { + ent->lmt_5g = rtw_vmalloc(sizeof(*ent->lmt_5g)); + if (ent->lmt_5g) { + u8 j, k, l, m; + + for (j = 0; j < MAX_5G_BANDWIDTH_NUM; ++j) + for (k = 0; k < TXPWR_LMT_RS_NUM_5G; ++k) + for (m = 0; m < CENTER_CH_5G_ALL_NUM; ++m) + for (l = 0; l < MAX_TX_COUNT; ++l) + ent->lmt_5g->v[j][k][m][l] = hal_spec->txgi_max; + } else + goto release_lock; + } + #endif + + if (band == BAND_ON_2_4G) { + pre_lmt = ent->lmt_2g->v[bw][tlrs][ch_idx][ntx_idx]; + ch = ch_idx + 1; + } + #if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) { + pre_lmt = ent->lmt_5g->v[bw][tlrs - 1][ch_idx][ntx_idx]; + ch = center_ch_5g_all[ch_idx]; + } + #endif + else + goto release_lock; + + if (pre_lmt != hal_spec->txgi_max) + RTW_PRINT("duplicate txpwr_lmt for [%s][%s][%s][%s][%uT][%d]\n" + , name, band_str(band), ch_width_str(bw), txpwr_lmt_rs_str(tlrs), ntx_idx + 1, ch); + + lmt = rtw_min(pre_lmt, lmt); + if (band == BAND_ON_2_4G) + ent->lmt_2g->v[bw][tlrs][ch_idx][ntx_idx] = lmt; + #if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) + ent->lmt_5g->v[bw][tlrs - 1][ch_idx][ntx_idx] = lmt; + #endif + + if (0) + RTW_PRINT("%s, %4s, %6s, %7s, %uT, ch%3d = %d\n" + , name, band_str(band), ch_width_str(bw), txpwr_lmt_rs_str(tlrs), ntx_idx + 1 + , ch, lmt); + +release_lock: + _rtw_mutex_unlock(&tb->lock); + +exit: + return; +} + +void hal_txpwr_lmt_reg_add(struct hal_com_data *hal_data, const char *name + , u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt) +{ + hal_txpwr_lmt_reg_add_with_nlen(hal_data, name, strlen(name) + , band, bw, tlrs, ntx_idx, ch_idx, lmt); +} + +struct lmt_reg *_hal_txpwr_lmt_reg_get_by_name(struct hal_com_data *hal_data, const char *name) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg *ent; + _list *cur, *head; + u8 found = 0; + + head = &tb->reg_list; + cur = get_next(head); + + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); + cur = get_next(cur); + + if (strcmp(ent->name, name) == 0) { + found = 1; + break; + } + } + + if (found) + return ent; + return NULL; +} + +struct lmt_reg *hal_txpwr_lmt_reg_get_by_name(struct hal_com_data *hal_data, const char *name) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg *ent; + + _rtw_mutex_lock_interruptible(&tb->lock); + ent = _hal_txpwr_lmt_reg_get_by_name(hal_data, name); + _rtw_mutex_unlock(&tb->lock); + + return ent; +} + +static void hal_txpwr_clear_current_lmt_reg_names(struct hal_com_data *hal_data, enum band_type band) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + + if (band >= BAND_MAX) + return; + + if (tb->cur_reg_names[band]) { + rtw_mfree(tb->cur_reg_names[band], tb->cur_reg_names_len[band]); + tb->cur_reg_names[band] = NULL; + } + tb->cur_reg_names_len[band] = 0; +} + +static void hal_txpwr_clear_all_current_lmt_reg_names(struct hal_com_data *hal_data) +{ + u8 band; + + for (band = 0; band < BAND_MAX; band++) + hal_txpwr_clear_current_lmt_reg_names(hal_data, band); +} + +void hal_txpwr_set_current_lmt_regs(struct hal_com_data *hal_data, enum band_type band, char *names, int names_len) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + + if (band >= BAND_MAX) + return; + + _rtw_mutex_lock_interruptible(&tb->lock); + + hal_txpwr_clear_current_lmt_reg_names(hal_data, band); + + if (names && names_len) { + tb->cur_reg_names[band] = rtw_malloc(names_len); + if (tb->cur_reg_names[band]) { + _rtw_memcpy(tb->cur_reg_names[band], names, names_len); + tb->cur_reg_names_len[band] = names_len; + } + } + + _rtw_mutex_unlock(&tb->lock); +} + +void hal_txpwr_get_current_lmt_regs(struct hal_com_data *hal_data, enum band_type band, char **names, int *names_len) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + + if (!names || !names_len) + return; + + *names = NULL; + *names_len = 0; + + if (band >= BAND_MAX) + return; + + _rtw_mutex_lock_interruptible(&tb->lock); + + if (tb->cur_reg_names[band] && tb->cur_reg_names_len[band]) { + *names = rtw_malloc(tb->cur_reg_names_len[band]); + if (*names) { + _rtw_memcpy(*names, tb->cur_reg_names[band], tb->cur_reg_names_len[band]); + *names_len = tb->cur_reg_names_len[band]; + } + } + + _rtw_mutex_unlock(&tb->lock); +} + +bool hal_txpwr_is_current_lmt_reg(struct hal_com_data *hal_data, enum band_type band, const char *name) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + const char *reg_names, *pos; + int reg_names_len; + + if (band < BAND_MAX) { + reg_names = tb->cur_reg_names[band]; + reg_names_len = tb->cur_reg_names_len[band]; + if (reg_names) { + ustrs_for_each_str(reg_names, reg_names_len, pos) { + if (strcmp(name, pos) == 0) + return true; + } + } + } + + return false; +} + +void hal_txpwr_lmt_reg_list_free(struct hal_com_data *hal_data) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + struct lmt_reg *ent; + _list *cur, *head; + + _rtw_mutex_lock_interruptible(&tb->lock); + + head = &tb->reg_list; + cur = get_next(head); + + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); + cur = get_next(cur); + rtw_list_delete(&ent->list); + if (ent->lmt_2g) + rtw_vmfree(ent->lmt_2g, sizeof(*ent->lmt_2g)); + #if CONFIG_IEEE80211_BAND_5GHZ + if (ent->lmt_5g) + rtw_vmfree(ent->lmt_5g, sizeof(*ent->lmt_5g)); + #endif + rtw_vmfree(ent, sizeof(struct lmt_reg) + strlen(ent->name) + 1); + } + tb->reg_num = 0; + + hal_txpwr_clear_all_current_lmt_reg_names(hal_data); + + _rtw_mutex_unlock(&tb->lock); +} + +void hal_txpwr_lmt_tb_init(struct hal_com_data *hal_data) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + + _rtw_mutex_init(&tb->lock); + _rtw_init_listhead(&tb->reg_exc_list); + _rtw_init_listhead(&tb->reg_list); +} + +void hal_txpwr_lmt_tb_deinit(struct hal_com_data *hal_data) +{ + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + + hal_txpwr_lmt_reg_exc_list_free(hal_data); + hal_txpwr_lmt_reg_list_free(hal_data); + _rtw_mutex_free(&tb->lock); +} + +void dump_txpwr_lmt(void *sel, _adapter *adapter) +{ +#define TMP_STR_LEN 16 + struct hal_com_data *hal_data = GET_HAL_DATA(adapter); + struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); + struct txpwr_lmt_tb_t *tb = &hal_data->txpwr_lmt_tb; + char fmt[16]; + char tmp_str[TMP_STR_LEN]; + s8 *lmt_idx = NULL; + int bw, band, ch_num, tlrs, ntx_idx, rs, i, path; + u8 ch, n, rfpath_num; + + _rtw_mutex_lock_interruptible(&tb->lock); + + _dump_txpwr_lmt_reg_exc_list(sel, hal_data); + RTW_PRINT_SEL(sel, "\n"); + + if (!tb->reg_num) + goto release_lock; + + lmt_idx = rtw_malloc(sizeof(s8) * RF_PATH_MAX * tb->reg_num); + if (!lmt_idx) { + RTW_ERR("%s alloc fail\n", __func__); + goto release_lock; + } + + RTW_PRINT_SEL(sel, "lmt_2g_cck_ofdm_state:0x%02x\n", tb->lmt_2g_cck_ofdm_state); + #if CONFIG_IEEE80211_BAND_5GHZ + if (IS_HARDWARE_TYPE_JAGUAR_ALL(adapter)) { + RTW_PRINT_SEL(sel, "lmt_5g_cck_ofdm_state:0x%02x\n", tb->lmt_5g_cck_ofdm_state); + RTW_PRINT_SEL(sel, "lmt_5g_20_40_ref:0x%02x\n", tb->lmt_5g_20_40_ref); + } + #endif + RTW_PRINT_SEL(sel, "\n"); + + for (band = BAND_ON_2_4G; band <= BAND_ON_5G; band++) { + if (!hal_is_band_support(adapter, band)) + continue; + + rfpath_num = (band == BAND_ON_2_4G ? hal_spec->rfpath_num_2g : hal_spec->rfpath_num_5g); + + for (bw = 0; bw < MAX_5G_BANDWIDTH_NUM; bw++) { + + if (bw >= CHANNEL_WIDTH_160) + break; + if (band == BAND_ON_2_4G && bw >= CHANNEL_WIDTH_80) + break; + + if (band == BAND_ON_2_4G) + ch_num = CENTER_CH_2G_NUM; + #if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) + ch_num = center_chs_5g_num(bw); + #endif + else + ch_num = 0; + + if (ch_num == 0) { + rtw_warn_on(1); + break; + } + + for (tlrs = TXPWR_LMT_RS_CCK; tlrs < TXPWR_LMT_RS_NUM; tlrs++) { + + if (band == BAND_ON_2_4G && tlrs == TXPWR_LMT_RS_VHT) + continue; + if (band == BAND_ON_5G && tlrs == TXPWR_LMT_RS_CCK) + continue; + if (bw > CHANNEL_WIDTH_20 && (tlrs == TXPWR_LMT_RS_CCK || tlrs == TXPWR_LMT_RS_OFDM)) + continue; + if (bw > CHANNEL_WIDTH_40 && tlrs == TXPWR_LMT_RS_HT) + continue; + if (tlrs == TXPWR_LMT_RS_VHT && !IS_HARDWARE_TYPE_JAGUAR_ALL(adapter)) + continue; + + for (ntx_idx = RF_1TX; ntx_idx < MAX_TX_COUNT; ntx_idx++) { + struct lmt_reg *ent; + _list *cur, *head; + + if (ntx_idx + 1 > hal_data->max_tx_cnt) + continue; + + /* bypass CCK multi-TX is not defined */ + if (tlrs == TXPWR_LMT_RS_CCK && ntx_idx > RF_1TX) { + if (band == BAND_ON_2_4G + && !(tb->lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_CCK_1T << ntx_idx))) + continue; + } + + /* bypass OFDM multi-TX is not defined */ + if (tlrs == TXPWR_LMT_RS_OFDM && ntx_idx > RF_1TX) { + if (band == BAND_ON_2_4G + && !(tb->lmt_2g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx))) + continue; + #if CONFIG_IEEE80211_BAND_5GHZ + if (band == BAND_ON_5G + && !(tb->lmt_5g_cck_ofdm_state & (TXPWR_LMT_HAS_OFDM_1T << ntx_idx))) + continue; + #endif + } + + /* bypass 5G 20M, 40M pure reference */ + #if CONFIG_IEEE80211_BAND_5GHZ + if (band == BAND_ON_5G && (bw == CHANNEL_WIDTH_20 || bw == CHANNEL_WIDTH_40)) { + if (tb->lmt_5g_20_40_ref == TXPWR_LMT_REF_HT_FROM_VHT) { + if (tlrs == TXPWR_LMT_RS_HT) + continue; + } else if (tb->lmt_5g_20_40_ref == TXPWR_LMT_REF_VHT_FROM_HT) { + if (tlrs == TXPWR_LMT_RS_VHT && bw <= CHANNEL_WIDTH_40) + continue; + } + } + #endif + + /* choose n-SS mapping rate section to get lmt diff value */ + if (tlrs == TXPWR_LMT_RS_CCK) + rs = CCK; + else if (tlrs == TXPWR_LMT_RS_OFDM) + rs = OFDM; + else if (tlrs == TXPWR_LMT_RS_HT) + rs = HT_1SS + ntx_idx; + else if (tlrs == TXPWR_LMT_RS_VHT) + rs = VHT_1SS + ntx_idx; + else { + RTW_ERR("%s invalid tlrs %u\n", __func__, tlrs); + continue; + } + + RTW_PRINT_SEL(sel, "[%s][%s][%s][%uT]\n" + , band_str(band) + , ch_width_str(bw) + , txpwr_lmt_rs_str(tlrs) + , ntx_idx + 1 + ); + + /* header for limit in db */ + RTW_PRINT_SEL(sel, "%3s ", "ch"); + + head = &tb->reg_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); + cur = get_next(cur); + if ((band == BAND_ON_24G && !ent->lmt_2g) + #if CONFIG_IEEE80211_BAND_5GHZ + || (band == BAND_ON_5G && !ent->lmt_5g) + #endif + ) + continue; + + sprintf(fmt, "%%%zus%%s ", strlen(ent->name) >= 6 ? 1 : 6 - strlen(ent->name)); + snprintf(tmp_str, TMP_STR_LEN, fmt + , hal_txpwr_is_current_lmt_reg(hal_data, band, ent->name) ? "*" : "" + , ent->name); + _RTW_PRINT_SEL(sel, "%s", tmp_str); + } + sprintf(fmt, "%%%zus%%s ", strlen(txpwr_lmt_str(TXPWR_LMT_WW)) >= 6 ? 1 : 6 - strlen(txpwr_lmt_str(TXPWR_LMT_WW))); + snprintf(tmp_str, TMP_STR_LEN, fmt + , hal_txpwr_is_current_lmt_reg(hal_data, band, txpwr_lmt_str(TXPWR_LMT_WW)) ? "*" : "" + , txpwr_lmt_str(TXPWR_LMT_WW)); + _RTW_PRINT_SEL(sel, "%s", tmp_str); + + /* header for limit offset */ + for (path = 0; path < RF_PATH_MAX; path++) { + if (path >= rfpath_num) + break; + _RTW_PRINT_SEL(sel, "|"); + head = &tb->reg_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); + cur = get_next(cur); + if ((band == BAND_ON_24G && !ent->lmt_2g) + #if CONFIG_IEEE80211_BAND_5GHZ + || (band == BAND_ON_5G && !ent->lmt_5g) + #endif + ) + continue; + + _RTW_PRINT_SEL(sel, "%3c " + , hal_txpwr_is_current_lmt_reg(hal_data, band, ent->name) ? rf_path_char(path) : ' '); + } + _RTW_PRINT_SEL(sel, "%3c " + , hal_txpwr_is_current_lmt_reg(hal_data, band, txpwr_lmt_str(TXPWR_LMT_WW)) ? rf_path_char(path) : ' '); + } + _RTW_PRINT_SEL(sel, "\n"); + + for (n = 0; n < ch_num; n++) { + s8 lmt; + s8 lmt_offset; + u8 base; + + if (band == BAND_ON_2_4G) + ch = n + 1; + #if CONFIG_IEEE80211_BAND_5GHZ + else if (band == BAND_ON_5G) + ch = center_chs_5g(bw, n); + #endif + else + ch = 0; + + if (ch == 0) { + rtw_warn_on(1); + break; + } + + /* dump limit in dBm */ + RTW_PRINT_SEL(sel, "%3u ", ch); + head = &tb->reg_list; + cur = get_next(head); + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); + cur = get_next(cur); + if ((band == BAND_ON_24G && !ent->lmt_2g) + #if CONFIG_IEEE80211_BAND_5GHZ + || (band == BAND_ON_5G && !ent->lmt_5g) + #endif + ) + continue; + + lmt = phy_get_txpwr_lmt(adapter, ent->name, band, bw, tlrs, ntx_idx, ch, 0); + txpwr_idx_get_dbm_str(lmt, hal_spec->txgi_max, hal_spec->txgi_pdbm, strlen(ent->name), tmp_str, TMP_STR_LEN); + _RTW_PRINT_SEL(sel, "%s ", tmp_str); + } + lmt = phy_get_txpwr_lmt(adapter, txpwr_lmt_str(TXPWR_LMT_WW), band, bw, tlrs, ntx_idx, ch, 0); + txpwr_idx_get_dbm_str(lmt, hal_spec->txgi_max, hal_spec->txgi_pdbm, strlen(txpwr_lmt_str(TXPWR_LMT_WW)), tmp_str, TMP_STR_LEN); + _RTW_PRINT_SEL(sel, "%s ", tmp_str); + + /* dump limit offset of each path */ + for (path = RF_PATH_A; path < RF_PATH_MAX; path++) { + if (path >= rfpath_num) + break; + + base = phy_get_target_txpwr(adapter, band, path, rs); + + _RTW_PRINT_SEL(sel, "|"); + head = &tb->reg_list; + cur = get_next(head); + i = 0; + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + ent = LIST_CONTAINOR(cur, struct lmt_reg, list); + cur = get_next(cur); + if ((band == BAND_ON_24G && !ent->lmt_2g) + #if CONFIG_IEEE80211_BAND_5GHZ + || (band == BAND_ON_5G && !ent->lmt_5g) + #endif + ) + continue; + + lmt_offset = phy_get_txpwr_lmt_diff(adapter, ent->name, band, bw, path, rs, tlrs, ntx_idx, ch, 0); + if (lmt_offset == hal_spec->txgi_max) { + *(lmt_idx + i * RF_PATH_MAX + path) = hal_spec->txgi_max; + _RTW_PRINT_SEL(sel, "%3s ", "NA"); + } else { + *(lmt_idx + i * RF_PATH_MAX + path) = lmt_offset + base; + _RTW_PRINT_SEL(sel, "%3d ", lmt_offset); + } + i++; + } + lmt_offset = phy_get_txpwr_lmt_diff(adapter, txpwr_lmt_str(TXPWR_LMT_WW), band, bw, path, rs, tlrs, ntx_idx, ch, 0); + if (lmt_offset == hal_spec->txgi_max) + _RTW_PRINT_SEL(sel, "%3s ", "NA"); + else + _RTW_PRINT_SEL(sel, "%3d ", lmt_offset); + + } + + /* compare limit_idx of each path, print 'x' when mismatch */ + if (rfpath_num > 1) { + for (i = 0; i < tb->reg_num; i++) { + for (path = 0; path < RF_PATH_MAX; path++) { + if (path >= rfpath_num) + break; + if (*(lmt_idx + i * RF_PATH_MAX + path) != *(lmt_idx + i * RF_PATH_MAX + ((path + 1) % rfpath_num))) + break; + } + if (path >= rfpath_num) + _RTW_PRINT_SEL(sel, " "); + else + _RTW_PRINT_SEL(sel, "x"); + } + } + _RTW_PRINT_SEL(sel, "\n"); + + } + RTW_PRINT_SEL(sel, "\n"); + } + } /* loop for rate sections */ + } /* loop for bandwidths */ + } /* loop for bands */ + + if (lmt_idx) + rtw_mfree(lmt_idx, sizeof(s8) * RF_PATH_MAX * tb->reg_num); + +release_lock: + _rtw_mutex_unlock(&tb->lock); +} +#endif /* CONFIG_TXPWR_LIMIT */ \ No newline at end of file diff --git a/drivers/net/wireless/rtl8822cs/hal/hal_pwr_table.h b/drivers/net/wireless/rtl8822cs/hal/hal_pwr_table.h new file mode 100644 index 000000000..08e1f43e6 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/hal/hal_pwr_table.h @@ -0,0 +1,113 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef _HAL_PWR_TABLE_H_ +#define _HAL_PWR_TABLE_H_ + +#if CONFIG_TXPWR_LIMIT +#define TXPWR_LMT_RS_CCK 0 +#define TXPWR_LMT_RS_OFDM 1 +#define TXPWR_LMT_RS_HT 2 +#define TXPWR_LMT_RS_VHT 3 +#define TXPWR_LMT_RS_NUM 4 + +#define TXPWR_LMT_RS_NUM_2G 4 /* CCK, OFDM, HT, VHT */ +#define TXPWR_LMT_RS_NUM_5G 3 /* OFDM, HT, VHT */ + +#define MAX_2_4G_BANDWIDTH_NUM 2 +#define MAX_5G_BANDWIDTH_NUM 4 + +extern const char *const _txpwr_lmt_rs_str[]; +#define txpwr_lmt_rs_str(rs) (((rs) >= TXPWR_LMT_RS_NUM) ? _txpwr_lmt_rs_str[TXPWR_LMT_RS_NUM] : _txpwr_lmt_rs_str[(rs)]) + +struct lmt_reg_exc { + _list list; + char country[2]; + u8 domain; + char reg_name[0]; +}; + +struct lmt_2g_t { + s8 v[MAX_2_4G_BANDWIDTH_NUM] + [TXPWR_LMT_RS_NUM_2G] + [CENTER_CH_2G_NUM] + [MAX_TX_COUNT]; +}; + +#if CONFIG_IEEE80211_BAND_5GHZ +struct lmt_5g_t { + s8 v[MAX_5G_BANDWIDTH_NUM] + [TXPWR_LMT_RS_NUM_5G] + [CENTER_CH_5G_ALL_NUM] + [MAX_TX_COUNT]; +}; +#endif + +struct lmt_reg { + _list list; + + struct lmt_2g_t *lmt_2g; + + #if CONFIG_IEEE80211_BAND_5GHZ + struct lmt_5g_t *lmt_5g; + #endif + + char name[]; +}; + +struct txpwr_lmt_tb_t { + _mutex lock; + + _list reg_exc_list; + u8 reg_exc_num; + + _list reg_list; + u8 reg_num; + + u8 lmt_2g_cck_ofdm_state; + #if CONFIG_IEEE80211_BAND_5GHZ + u8 lmt_5g_cck_ofdm_state; + u8 lmt_5g_20_40_ref; + #endif + + char *cur_reg_names[BAND_MAX]; + int cur_reg_names_len[BAND_MAX]; +}; + +struct hal_com_data; + +void hal_txpwr_lmt_reg_exc_add_with_nlen(struct hal_com_data *hal_data, const char *country, u8 domain, const char *reg_name, u32 nlen); +void hal_txpwr_lmt_reg_exc_add(struct hal_com_data *hal_data, const char *country, u8 domain, const char *reg_name); +struct lmt_reg_exc *hal_txpwr_lmt_reg_exc_search(struct hal_com_data *hal_data, const char *country, u8 domain); +void hal_txpwr_lmt_reg_exc_list_free(struct hal_com_data *hal_data); +void dump_txpwr_lmt_reg_exc_list(void *sel, struct hal_com_data *hal_data); + +void hal_txpwr_lmt_reg_add_with_nlen(struct hal_com_data *hal_data, const char *name, u32 nlen + , u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt); +void hal_txpwr_lmt_reg_add(struct hal_com_data *hal_data, const char *name + , u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt); +struct lmt_reg *_hal_txpwr_lmt_reg_get_by_name(struct hal_com_data *hal_data, const char *name); +struct lmt_reg *hal_txpwr_lmt_reg_get_by_name(struct hal_com_data *hal_data, const char *name); +void hal_txpwr_set_current_lmt_regs(struct hal_com_data *hal_data, enum band_type band, char *names, int names_len); +void hal_txpwr_get_current_lmt_regs(struct hal_com_data *hal_data, enum band_type band, char **names, int *names_len); +bool hal_txpwr_is_current_lmt_reg(struct hal_com_data *hal_data, enum band_type band, const char *name); +void hal_txpwr_lmt_reg_list_free(struct hal_com_data *hal_data); + +void hal_txpwr_lmt_tb_init(struct hal_com_data *hal_data); +void hal_txpwr_lmt_tb_deinit(struct hal_com_data *hal_data); + +void dump_txpwr_lmt(void *sel, _adapter *adapter); +#endif /* CONFIG_TXPWR_LIMIT */ + +#endif /* _HAL_PWR_TABLE_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_8822c/halmac_init_8822c.c b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_8822c/halmac_init_8822c.c index 0c415c52c..b8ed8666b 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_8822c/halmac_init_8822c.c +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_8822c/halmac_init_8822c.c @@ -102,14 +102,14 @@ #define WLAN_EIFS_DUR_TUNE_5M 0xE2 #define WLAN_EIFS_DUR_TUNE_10M 0x76 #define WLAN_EDCA_VO_PARAM 0x002FA226 -#define WLAN_EDCA_VO_PARAM_5M 0x002FA27A -#define WLAN_EDCA_VO_PARAM_10M 0x002FA242 +#define WLAN_EDCA_VO_PARAM_5M 0x0000A27A +#define WLAN_EDCA_VO_PARAM_10M 0x0000A242 #define WLAN_EDCA_VI_PARAM 0x005EA328 -#define WLAN_EDCA_VI_PARAM_5M 0x005EA382 -#define WLAN_EDCA_VI_PARAM_10M 0x005EA346 +#define WLAN_EDCA_VI_PARAM_5M 0x0000A382 +#define WLAN_EDCA_VI_PARAM_10M 0x0000A346 #define WLAN_EDCA_BE_PARAM 0x005EA42B -#define WLAN_EDCA_BE_PARAM_5M 0x005EA48E -#define WLAN_EDCA_BE_PARAM_10M 0x005EA44C +#define WLAN_EDCA_BE_PARAM_5M 0x0000A48E +#define WLAN_EDCA_BE_PARAM_10M 0x0000A44C #define WLAN_EDCA_BK_PARAM 0x0000A44F #define WLAN_EDCA_BK_PARAM_5M 0x0000A4D3 #define WLAN_EDCA_BK_PARAM_10M 0x0000A47B diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_8822c/halmac_sdio_8822c.c b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_8822c/halmac_sdio_8822c.c index 387c519ad..470343ca0 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_8822c/halmac_sdio_8822c.c +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_8822c/halmac_sdio_8822c.c @@ -181,13 +181,6 @@ tx_allowed_sdio_8822c(struct halmac_adapter *adapter, u8 *buf, u32 size) PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__); - if (!fs_info->macid_map) { - PLTFM_MSG_ERR("[ERR]halmac allocate Macid_map Fail!!\n"); - return HALMAC_RET_MALLOC_FAIL; - } - - PLTFM_MEMSET(fs_info->macid_map, 0x00, fs_info->macid_map_size); - tx_agg_num = GET_TX_DESC_DMA_TXAGG_NUM(buf); tx_agg_num = (tx_agg_num == 0) ? 1 : tx_agg_num; @@ -206,7 +199,7 @@ tx_allowed_sdio_8822c(struct halmac_adapter *adapter, u8 *buf, u32 size) status = chk_oqt_8822c(adapter, tx_agg_num, buf, macid_cnt); if (status != HALMAC_RET_SUCCESS) { - PLTFM_MSG_WARN("[WARN]oqt buffer full!!\n"); + PLTFM_MSG_WARN("[WARN]oqt buffer full, cnt = %d\n", cnt); return status; } @@ -372,11 +365,7 @@ reg_r16_sdio_8822c(struct halmac_adapter *adapter, u32 offset) if ((offset & 0xFFFF0000) == 0 && adapter->halmac_state.mac_pwr == HALMAC_MAC_POWER_OFF) { - value16.byte[0] = (u8)r_indir_sdio_88xx(adapter, offset, - HALMAC_IO_BYTE); - value16.byte[1] = (u8)r_indir_sdio_88xx(adapter, offset + 1, - HALMAC_IO_BYTE); - return rtk_le16_to_cpu(value16.word); + return (u16)r_indir_sdio_88xx(adapter, offset, HALMAC_IO_WORD); } else if ((offset & 0xFFFF0000) != 0 && adapter->halmac_state.mac_pwr == HALMAC_MAC_POWER_OFF) { value16.byte[0] = PLTFM_SDIO_CMD52_R(offset); @@ -472,15 +461,7 @@ reg_r32_sdio_8822c(struct halmac_adapter *adapter, u32 offset) if (((offset & 0xFFFF0000) == 0) && adapter->halmac_state.mac_pwr == HALMAC_MAC_POWER_OFF) { - value32.byte[0] = (u8)r_indir_sdio_88xx(adapter, offset, - HALMAC_IO_BYTE); - value32.byte[1] = (u8)r_indir_sdio_88xx(adapter, offset + 1, - HALMAC_IO_BYTE); - value32.byte[2] = (u8)r_indir_sdio_88xx(adapter, offset + 2, - HALMAC_IO_BYTE); - value32.byte[3] = (u8)r_indir_sdio_88xx(adapter, offset + 3, - HALMAC_IO_BYTE); - return rtk_le32_to_cpu(value32.dword); + return r_indir_sdio_88xx(adapter, offset, HALMAC_IO_DWORD); } else if (((offset & 0xFFFF0000) != 0) && adapter->halmac_state.mac_pwr == HALMAC_MAC_POWER_OFF) { value32.byte[0] = PLTFM_SDIO_CMD52_R(offset); @@ -581,7 +562,7 @@ chk_oqt_8822c(struct halmac_adapter *adapter, u32 tx_agg_num, u8 *buf, case HALMAC_QSEL_BK: case HALMAC_QSEL_BK_V2: if (macid_cnt > WLAN_ACQ_NUM_MAX && - tx_agg_num > OQT_ENTRY_AC_8822C) { + tx_agg_num > (OQT_ENTRY_AC_8822C - 1)) { PLTFM_MSG_WARN("[WARN]txagg num %d > oqt entry\n", tx_agg_num); PLTFM_MSG_WARN("[WARN]macid cnt %d > acq max\n", @@ -590,32 +571,35 @@ chk_oqt_8822c(struct halmac_adapter *adapter, u32 tx_agg_num, u8 *buf, cnt = 10; do { - if (fs_info->ac_empty >= macid_cnt) { + if (fs_info->ac_oqt_num == OQT_ENTRY_AC_8822C && + fs_info->ac_empty >= macid_cnt) { fs_info->ac_empty -= macid_cnt; break; - } - - if (fs_info->ac_oqt_num >= tx_agg_num) { + } else if (fs_info->ac_oqt_num > tx_agg_num) { fs_info->ac_empty = 0; - fs_info->ac_oqt_num -= (u8)tx_agg_num; + fs_info->ac_oqt_num = 0; break; } update_oqt_free_space_8822c(adapter); cnt--; - if (cnt == 0) + if (cnt == 0) { + PLTFM_MSG_WARN("ac_oqt_num %d, ac_empty %d, tx_agg_num %d, macid_cnt %d\n", + fs_info->ac_oqt_num, fs_info->ac_empty, tx_agg_num, macid_cnt); return HALMAC_RET_OQT_NOT_ENOUGH; + } } while (1); break; case HALMAC_QSEL_MGNT: case HALMAC_QSEL_HIGH: - if (tx_agg_num > OQT_ENTRY_NOAC_8822C) + if (tx_agg_num > (OQT_ENTRY_NOAC_8822C - 1)) PLTFM_MSG_WARN("[WARN]tx_agg_num %d > oqt entry\n", tx_agg_num); cnt = 10; do { - if (fs_info->non_ac_oqt_num >= tx_agg_num) { + if ((fs_info->non_ac_oqt_num > tx_agg_num) && + (fs_info->non_ac_oqt_num == OQT_ENTRY_NOAC_8822C)) { fs_info->non_ac_oqt_num -= (u8)tx_agg_num; break; } @@ -623,8 +607,11 @@ chk_oqt_8822c(struct halmac_adapter *adapter, u32 tx_agg_num, u8 *buf, update_oqt_free_space_8822c(adapter); cnt--; - if (cnt == 0) + if (cnt == 0) { + PLTFM_MSG_WARN("non_ac_oqt_num %d, tx_agg_num %d\n", + fs_info->non_ac_oqt_num, tx_agg_num); return HALMAC_RET_OQT_NOT_ENOUGH; + } } while (1); break; default: @@ -710,12 +697,13 @@ update_ac_empty_8822c(struct halmac_adapter *adapter, u8 value) struct halmac_sdio_free_space *free_space; free_space = &adapter->sdio_fs; + free_space->ac_empty = 0; if (free_space->ac_oqt_num == OQT_ENTRY_AC_8822C) { while (value > 0) { value = value & (value - 1); free_space->ac_empty++; - }; + } } else { PLTFM_MSG_TRACE("[TRACE]free_space->ac_oqt_num %d != %d\n", free_space->ac_oqt_num, OQT_ENTRY_AC_8822C); @@ -782,6 +770,7 @@ get_sdio_tx_addr_8822c(struct halmac_adapter *adapter, u8 *buf, u32 size, { u32 len_unit4, len_unit1, value32; u16 block_size = adapter->sdio_hw_info.block_size; + u8 is_agg_len = 0; struct halmac_sdio_hw_info *hw_info = &adapter->sdio_hw_info; enum halmac_qsel queue_sel; enum halmac_dma_mapping dma_mapping; @@ -854,11 +843,23 @@ get_sdio_tx_addr_8822c(struct halmac_adapter *adapter, u8 *buf, u32 size, if (hw_info->tx_addr_format == HALMAC_SDIO_AGG_MODE || (hw_info->tx_addr_format == HALMAC_SDIO_DUMMY_AUTO_MODE && len_unit1 < block_size)) { - *cmd53_addr = (*cmd53_addr << 13) | - (len_unit4 & HALMAC_SDIO_4BYTE_LEN_MASK); + is_agg_len = 1; + } else if (hw_info->tx_addr_format == HALMAC_SDIO_DUMMY_AUTO_MODE && + len_unit1 == block_size) { + if (hw_info->tx_512_by_byte_mode == 0) + is_agg_len = 0; + else + is_agg_len = 1; } else if (hw_info->tx_addr_format == HALMAC_SDIO_DUMMY_BLOCK_MODE || (hw_info->tx_addr_format == HALMAC_SDIO_DUMMY_AUTO_MODE && - len_unit1 >= block_size)) { + len_unit1 > block_size)) { + is_agg_len = 0; + } else { + PLTFM_MSG_ERR("[ERR]tx_addr_format is undefined\n"); + return HALMAC_RET_NOT_SUPPORT; + } + + if (is_agg_len == 0) { value32 = len_unit1 % block_size; if (value32) value32 = (block_size - value32) >> 2; @@ -866,7 +867,8 @@ get_sdio_tx_addr_8822c(struct halmac_adapter *adapter, u8 *buf, u32 size, ((value32 & HALMAC_SDIO_4BYTE_LEN_MASK) << 1); hw_info->tx_seq = ~hw_info->tx_seq & 0x01; } else { - PLTFM_MSG_ERR("[ERR]tx_addr_format is undefined\n"); + *cmd53_addr = (*cmd53_addr << 13) | + (len_unit4 & HALMAC_SDIO_4BYTE_LEN_MASK); } PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__); @@ -1016,6 +1018,7 @@ chk_rqd_page_num_8822c(struct halmac_adapter *adapter, u8 *buf, u32 *rqd_pg_num, u8 qsel_first; u32 i, pkt_size; enum halmac_ret_status status = HALMAC_RET_SUCCESS; + struct halmac_sdio_free_space *fs_info = &adapter->sdio_fs; pkt = buf; @@ -1025,6 +1028,13 @@ chk_rqd_page_num_8822c(struct halmac_adapter *adapter, u8 *buf, u32 *rqd_pg_num, if (status != HALMAC_RET_SUCCESS) return status; + if (!fs_info->macid_map) { + PLTFM_MSG_ERR("[ERR]halmac allocate Macid_map Fail!!\n"); + return HALMAC_RET_MALLOC_FAIL; + } + + PLTFM_MEMSET(fs_info->macid_map, 0x00, fs_info->macid_map_size); + for (i = 0; i < tx_agg_num; i++) { /*QSEL parser*/ status = chk_qsel_8822c(adapter, qsel_first, pkt, macid_cnt); diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_cfg_wmac_88xx.c b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_cfg_wmac_88xx.c index db987c5f4..251e1a856 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_cfg_wmac_88xx.c +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_cfg_wmac_88xx.c @@ -28,6 +28,7 @@ enum mac_clock_hw_def { MAC_CLK_HW_DEF_80M = 0, MAC_CLK_HW_DEF_40M = 1, MAC_CLK_HW_DEF_20M = 2, + MAC_CLK_HW_DEF_20M_BW_5 = 3, }; static enum halmac_ret_status @@ -687,6 +688,7 @@ board_rf_fine_tune_88xx(struct halmac_adapter *adapter) u32 size = adapter->hw_cfg_info.eeprom_size; struct halmac_api *api = (struct halmac_api *)adapter->halmac_api; +#if HALMAC_8822B_SUPPORT if (adapter->chip_id == HALMAC_CHIP_ID_8822B) { if (!adapter->efuse_map_valid || !adapter->efuse_map) { PLTFM_MSG_ERR("[ERR]efuse map invalid!!\n"); @@ -713,7 +715,7 @@ board_rf_fine_tune_88xx(struct halmac_adapter *adapter) PLTFM_FREE(map, size); } - +#endif return HALMAC_RET_SUCCESS; } @@ -724,8 +726,12 @@ cfg_mac_clk_88xx(struct halmac_adapter *adapter) struct halmac_api *api = (struct halmac_api *)adapter->halmac_api; value32 = HALMAC_REG_R32(REG_AFE_CTRL1) & ~(BIT(20) | BIT(21)); - if (adapter->curr_bw == HALMAC_BW_5 || - adapter->curr_bw == HALMAC_BW_10) { + if (adapter->curr_bw == HALMAC_BW_5) { + value32 |= (MAC_CLK_HW_DEF_20M_BW_5 << BIT_SHIFT_MAC_CLK_SEL); + HALMAC_REG_W32(REG_AFE_CTRL1, value32); + HALMAC_REG_W8(REG_USTIME_TSF, MAC_CLK_SPEED_BW_5M_10M); + HALMAC_REG_W8(REG_USTIME_EDCA, MAC_CLK_SPEED_BW_5M_10M); + } else if (adapter->curr_bw == HALMAC_BW_10) { value32 |= (MAC_CLK_HW_DEF_20M << BIT_SHIFT_MAC_CLK_SEL); HALMAC_REG_W32(REG_AFE_CTRL1, value32); HALMAC_REG_W8(REG_USTIME_TSF, MAC_CLK_SPEED_BW_5M_10M); diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_common_88xx.c b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_common_88xx.c index ddc9342ca..73b49f9f0 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_common_88xx.c +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_common_88xx.c @@ -18,6 +18,9 @@ #include "halmac_init_88xx.h" #include "halmac_cfg_wmac_88xx.h" #include "halmac_efuse_88xx.h" +#if HALMAC_8822E_SUPPORT +#include "halmac_8822e/halmac_efuse_8822e.h" +#endif #include "halmac_bb_rf_88xx.h" #if HALMAC_USB_SUPPORT #include "halmac_usb_88xx.h" @@ -376,6 +379,8 @@ enum halmac_ret_status get_hw_value_88xx(struct halmac_adapter *adapter, enum halmac_hw_id hw_id, void *value) { + struct halmac_api *api = (struct halmac_api *)adapter->halmac_api; + PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__); switch (hw_id) { @@ -408,7 +413,7 @@ get_hw_value_88xx(struct halmac_adapter *adapter, enum halmac_hw_id hw_id, *(u8 *)value = adapter->hw_cfg_info.cam_entry_num; break; case HALMAC_HW_WLAN_EFUSE_AVAILABLE_SIZE: - get_efuse_available_size_88xx(adapter, (u32 *)value); + api->halmac_get_efuse_available_size(adapter, (u32 *)value); break; case HALMAC_HW_IC_VERSION: *(u8 *)value = adapter->chip_ver; @@ -731,6 +736,7 @@ parse_c2h_pkt_88xx(struct halmac_adapter *adapter, u8 *buf, u32 size) u8 *c2h_pkt = buf + adapter->hw_cfg_info.rxdesc_size; u32 c2h_size = size - adapter->hw_cfg_info.rxdesc_size; enum halmac_ret_status status = HALMAC_RET_SUCCESS; + struct halmac_api *api = (struct halmac_api *)adapter->halmac_api; cmd_id = (u8)C2H_HDR_GET_CMD_ID(c2h_pkt); @@ -758,7 +764,15 @@ parse_c2h_pkt_88xx(struct halmac_adapter *adapter, u8 *buf, u32 size) status = get_psd_data_88xx(adapter, c2h_pkt, c2h_size); break; case C2H_SUB_CMD_ID_EFUSE_DATA: - status = get_efuse_data_88xx(adapter, c2h_pkt, c2h_size); +#if (HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ + HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + if (adapter->chip_id != HALMAC_CHIP_ID_8822E) + status = get_efuse_data_88xx(adapter, c2h_pkt, c2h_size); +#endif +#if HALMAC_8822E_SUPPORT + if (adapter->chip_id == HALMAC_CHIP_ID_8822E) + status = get_efuse_data_8822e(adapter, c2h_pkt, c2h_size); +#endif break; case C2H_SUB_CMD_ID_SCAN_CH_NOTIFY: status = get_scan_ch_notify_88xx(adapter, c2h_pkt, c2h_size); @@ -846,6 +860,7 @@ get_h2c_ack_88xx(struct halmac_adapter *adapter, u8 *buf, u32 size) u8 sub_cmd_id; u8 fw_rc; enum halmac_ret_status status = HALMAC_RET_SUCCESS; + struct halmac_api *api = (struct halmac_api *)adapter->halmac_api; PLTFM_MSG_TRACE("[TRACE]Ack for C2H!!\n"); @@ -864,7 +879,15 @@ get_h2c_ack_88xx(struct halmac_adapter *adapter, u8 *buf, u32 size) switch (sub_cmd_id) { case H2C_SUB_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK: - status = get_h2c_ack_phy_efuse_88xx(adapter, buf, size); +#if (HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ + HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + if (adapter->chip_id != HALMAC_CHIP_ID_8822E) + status = get_h2c_ack_phy_efuse_88xx(adapter, buf, size); +#endif +#if HALMAC_8822E_SUPPORT + if (adapter->chip_id == HALMAC_CHIP_ID_8822E) + status = get_h2c_ack_phy_efuse_8822e(adapter, buf, size); +#endif break; case H2C_SUB_CMD_ID_CFG_PARAM_ACK: status = get_h2c_ack_cfg_param_88xx(adapter, buf, size); @@ -2817,6 +2840,7 @@ query_status_88xx(struct halmac_adapter *adapter, u32 *size) { enum halmac_ret_status status = HALMAC_RET_SUCCESS; + struct halmac_api *api = (struct halmac_api *)adapter->halmac_api; if (!proc_status) return HALMAC_RET_NULL_POINTER; @@ -2826,17 +2850,49 @@ query_status_88xx(struct halmac_adapter *adapter, status = get_cfg_param_status_88xx(adapter, proc_status); break; case HALMAC_FEATURE_DUMP_PHYSICAL_EFUSE: - status = get_dump_phy_efuse_status_88xx(adapter, proc_status, - data, size); +#if (HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ + HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + if (adapter->chip_id != HALMAC_CHIP_ID_8822E) + status = get_dump_phy_efuse_status_88xx(adapter, + proc_status, + data, size); +#endif +#if HALMAC_8822E_SUPPORT + if (adapter->chip_id == HALMAC_CHIP_ID_8822E) + status = get_dump_phy_efuse_status_8822e(adapter, + proc_status, + data, size); +#endif break; case HALMAC_FEATURE_DUMP_LOGICAL_EFUSE: - status = get_dump_log_efuse_status_88xx(adapter, proc_status, - data, size); +#if (HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ + HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + if (adapter->chip_id != HALMAC_CHIP_ID_8822E) + status = get_dump_log_efuse_status_88xx(adapter, + proc_status, + data, size); +#endif +#if HALMAC_8822E_SUPPORT + if (adapter->chip_id == HALMAC_CHIP_ID_8822E) + status = get_dump_log_efuse_status_8822e(adapter, + proc_status, + data, size); +#endif break; case HALMAC_FEATURE_DUMP_LOGICAL_EFUSE_MASK: - status = get_dump_log_efuse_mask_status_88xx(adapter, - proc_status, - data, size); +#if (HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ + HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + if (adapter->chip_id != HALMAC_CHIP_ID_8822E) + status = get_dump_log_efuse_mask_status_88xx(adapter, + proc_status, + data, size); +#endif +#if HALMAC_8822E_SUPPORT + if (adapter->chip_id == HALMAC_CHIP_ID_8822E) + status = get_dump_log_efuse_mask_status_8822e(adapter, + proc_status, + data, size); +#endif break; case HALMAC_FEATURE_CHANNEL_SWITCH: status = get_ch_switch_status_88xx(adapter, proc_status); diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_efuse_88xx.c b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_efuse_88xx.c index 184c2df5f..237cbd45f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_efuse_88xx.c +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_efuse_88xx.c @@ -18,7 +18,8 @@ #include "halmac_common_88xx.h" #include "halmac_init_88xx.h" -#if HALMAC_88XX_SUPPORT +#if (HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ + HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) #define RSVD_EFUSE_SIZE 16 #define RSVD_CS_EFUSE_SIZE 24 @@ -430,26 +431,6 @@ read_efuse_bt_88xx(struct halmac_adapter *adapter, u32 offset, u8 *value, return HALMAC_RET_SUCCESS; } -/** - * cfg_efuse_auto_check_88xx() - check efuse after writing it - * @adapter : the adapter of halmac - * @enable : 1, enable efuse auto check. others, disable - * Author : Soar - * Return : enum halmac_ret_status - * More details of status code can be found in prototype document - */ -enum halmac_ret_status -cfg_efuse_auto_check_88xx(struct halmac_adapter *adapter, u8 enable) -{ - PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__); - - adapter->efuse_auto_check_en = enable; - - PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__); - - return HALMAC_RET_SUCCESS; -} - /** * get_efuse_available_size_88xx() - get efuse available size * @adapter : the adapter of halmac @@ -478,46 +459,6 @@ get_efuse_available_size_88xx(struct halmac_adapter *adapter, u32 *size) return HALMAC_RET_SUCCESS; } -/** - * get_efuse_size_88xx() - get "physical" efuse size - * @adapter : the adapter of halmac - * @size : physical efuse size - * Author : Ivan Lin/KaiYuan Chang - * Return : enum halmac_ret_status - * More details of status code can be found in prototype document - */ -enum halmac_ret_status -get_efuse_size_88xx(struct halmac_adapter *adapter, u32 *size) -{ - PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__); - - *size = adapter->hw_cfg_info.efuse_size; - - PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__); - - return HALMAC_RET_SUCCESS; -} - -/** - * get_log_efuse_size_88xx() - get "logical" efuse size - * @adapter : the adapter of halmac - * @size : logical efuse size - * Author : Ivan Lin/KaiYuan Chang - * Return : enum halmac_ret_status - * More details of status code can be found in prototype document - */ -enum halmac_ret_status -get_log_efuse_size_88xx(struct halmac_adapter *adapter, u32 *size) -{ - PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__); - - *size = adapter->hw_cfg_info.eeprom_size; - - PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__); - - return HALMAC_RET_SUCCESS; -} - /** * dump_log_efuse_map_88xx() - dump "logical" efuse map * @adapter : the adapter of halmac @@ -1917,6 +1858,8 @@ check_efuse_enough_88xx(struct halmac_adapter *adapter, u8 super_usb; enum halmac_ret_status status = HALMAC_RET_SUCCESS; + PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__); + status = super_usb_chk_88xx(adapter, &super_usb); if (status != HALMAC_RET_SUCCESS) { PLTFM_MSG_ERR("[ERR]super_usb_chk\n"); @@ -1926,10 +1869,13 @@ check_efuse_enough_88xx(struct halmac_adapter *adapter, for (i = 0; i < info->efuse_map_size; i = i + 8) { eeprom_offset = i; - if ((eeprom_offset & 7) > 0) + if (((eeprom_offset >> 3) & 1) > 0) pre_word_en = (*(updated_mask + (i >> 4)) & 0x0F); else pre_word_en = (*(updated_mask + (i >> 4)) >> 4); + + PLTFM_MSG_TRACE("[TRACE]eeprom_offset = 0x%x, pre_word_en = 0x%x, updated_mask = 0x%x\n", + eeprom_offset, pre_word_en, *(updated_mask + (i >> 4))); if (pre_word_en > 0) { if (super_usb && @@ -1955,11 +1901,16 @@ check_efuse_enough_88xx(struct halmac_adapter *adapter, } } + PLTFM_MSG_TRACE("[TRACE]pg_num = 0x%x, efuse_end = 0x%x\n", pg_num, adapter->efuse_end); + PLTFM_MSG_TRACE("[TRACE]prtct_efuse_size = 0x%x, efuse_size = 0x%x\n", adapter->hw_cfg_info.prtct_efuse_size, adapter->hw_cfg_info.efuse_size); + if (adapter->hw_cfg_info.efuse_size <= (pg_num + adapter->hw_cfg_info.prtct_efuse_size + adapter->efuse_end)) return HALMAC_RET_EFUSE_NOT_ENOUGH; + PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__); + return HALMAC_RET_SUCCESS; } @@ -2167,6 +2118,7 @@ program_efuse_88xx(struct halmac_adapter *adapter, word_en, pre_word_en, eeprom_offset); + PLTFM_MSG_TRACE("[TRACE]pg_super_usb => efuse_end = 0x%x\n", adapter->efuse_end); if (status != HALMAC_RET_SUCCESS) { PLTFM_MSG_ERR("[ERR]super usb efuse\n"); return status; @@ -2176,6 +2128,7 @@ program_efuse_88xx(struct halmac_adapter *adapter, word_en, pre_word_en, eeprom_offset); + PLTFM_MSG_TRACE("[TRACE]pg_extend => efuse_end = 0x%x\n", adapter->efuse_end); if (status != HALMAC_RET_SUCCESS) { PLTFM_MSG_ERR("[ERR]extend efuse\n"); return status; @@ -2185,6 +2138,7 @@ program_efuse_88xx(struct halmac_adapter *adapter, word_en, pre_word_en, eeprom_offset); + PLTFM_MSG_TRACE("[TRACE]proc_pg => efuse_end = 0x%x\n", adapter->efuse_end); if (status != HALMAC_RET_SUCCESS) { PLTFM_MSG_ERR("[ERR]extend efuse"); return status; @@ -2517,12 +2471,6 @@ get_h2c_ack_phy_efuse_88xx(struct halmac_adapter *adapter, u8 *buf, u32 size) return HALMAC_RET_SUCCESS; } -u32 -get_rsvd_efuse_size_88xx(struct halmac_adapter *adapter) -{ - return adapter->hw_cfg_info.prtct_efuse_size; -} - /** * write_wifi_phy_efuse_88xx() - write wifi physical efuse * @adapter : the adapter of halmac @@ -3070,4 +3018,74 @@ super_usb_re_pg_chk_88xx(struct halmac_adapter *adapter, u8 *phy_map, u8 *re_pg) return status; } +#endif + +#if HALMAC_88XX_SUPPORT + +/** + * cfg_efuse_auto_check_88xx() - check efuse after writing it + * @adapter : the adapter of halmac + * @enable : 1, enable efuse auto check. others, disable + * Author : Soar + * Return : enum halmac_ret_status + * More details of status code can be found in prototype document + */ +enum halmac_ret_status +cfg_efuse_auto_check_88xx(struct halmac_adapter *adapter, u8 enable) +{ + PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__); + + adapter->efuse_auto_check_en = enable; + + PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__); + + return HALMAC_RET_SUCCESS; +} + +/** + * get_efuse_size_88xx() - get "physical" efuse size + * @adapter : the adapter of halmac + * @size : physical efuse size + * Author : Ivan Lin/KaiYuan Chang + * Return : enum halmac_ret_status + * More details of status code can be found in prototype document + */ +enum halmac_ret_status +get_efuse_size_88xx(struct halmac_adapter *adapter, u32 *size) +{ + PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__); + + *size = adapter->hw_cfg_info.efuse_size; + + PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__); + + return HALMAC_RET_SUCCESS; +} + +/** + * get_log_efuse_size_88xx() - get "logical" efuse size + * @adapter : the adapter of halmac + * @size : logical efuse size + * Author : Ivan Lin/KaiYuan Chang + * Return : enum halmac_ret_status + * More details of status code can be found in prototype document + */ +enum halmac_ret_status +get_log_efuse_size_88xx(struct halmac_adapter *adapter, u32 *size) +{ + PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__); + + *size = adapter->hw_cfg_info.eeprom_size; + + PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__); + + return HALMAC_RET_SUCCESS; +} + +u32 +get_rsvd_efuse_size_88xx(struct halmac_adapter *adapter) +{ + return adapter->hw_cfg_info.prtct_efuse_size; +} + #endif /* HALMAC_88XX_SUPPORT */ diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_init_88xx.c b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_init_88xx.c index 99c442f48..1e0ee8cd0 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_init_88xx.c +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_init_88xx.c @@ -49,6 +49,10 @@ #include "halmac_8812f/halmac_init_8812f.h" #endif +#if HALMAC_8822E_SUPPORT +#include "halmac_8822e/halmac_init_8822e.h" +#endif + #if HALMAC_PLATFORM_TESTPROGRAM #include "halmisc_api_88xx.h" #endif @@ -137,6 +141,7 @@ init_adapter_param_88xx(struct halmac_adapter *adapter) adapter->sdio_hw_info.spec_ver = HALMAC_SDIO_SPEC_VER_2_00; adapter->sdio_hw_info.clock_speed = 50; adapter->sdio_hw_info.block_size = 512; + adapter->sdio_hw_info.tx_512_by_byte_mode = 0; adapter->sdio_hw_info.tx_seq = 1; adapter->sdio_fs.macid_map = (u8 *)NULL; @@ -216,20 +221,17 @@ mount_api_88xx(struct halmac_adapter *adapter) api->halmac_cfg_ch_bw = cfg_ch_bw_88xx; api->halmac_cfg_bw = cfg_bw_88xx; api->halmac_init_mac_cfg = init_mac_cfg_88xx; +#if (HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ + HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) api->halmac_dump_efuse_map = dump_efuse_map_88xx; api->halmac_dump_efuse_map_bt = dump_efuse_map_bt_88xx; api->halmac_write_efuse_bt = write_efuse_bt_88xx; api->halmac_read_efuse_bt = read_efuse_bt_88xx; - api->halmac_cfg_efuse_auto_check = cfg_efuse_auto_check_88xx; api->halmac_dump_logical_efuse_map = dump_log_efuse_map_88xx; api->halmac_dump_logical_efuse_mask = dump_log_efuse_mask_88xx; api->halmac_pg_efuse_by_map = pg_efuse_by_map_88xx; api->halmac_mask_logical_efuse = mask_log_efuse_88xx; - api->halmac_get_efuse_size = get_efuse_size_88xx; api->halmac_get_efuse_available_size = get_efuse_available_size_88xx; - api->halmac_get_c2h_info = get_c2h_info_88xx; - - api->halmac_get_logical_efuse_size = get_log_efuse_size_88xx; api->halmac_write_logical_efuse = write_log_efuse_88xx; api->halmac_write_logical_efuse_word = write_log_efuse_word_88xx; @@ -237,6 +239,14 @@ mount_api_88xx(struct halmac_adapter *adapter) api->halmac_write_wifi_phy_efuse = write_wifi_phy_efuse_88xx; api->halmac_read_wifi_phy_efuse = read_wifi_phy_efuse_88xx; +#endif +#if HALMAC_88XX_SUPPORT + api->halmac_cfg_efuse_auto_check = cfg_efuse_auto_check_88xx; + api->halmac_get_efuse_size = get_efuse_size_88xx; + api->halmac_get_logical_efuse_size = get_log_efuse_size_88xx; +#endif + + api->halmac_get_c2h_info = get_c2h_info_88xx; api->halmac_ofld_func_cfg = ofld_func_cfg_88xx; api->halmac_h2c_lb = h2c_lb_88xx; @@ -399,6 +409,10 @@ mount_api_88xx(struct halmac_adapter *adapter) } else if (adapter->chip_id == HALMAC_CHIP_ID_8812F) { #if HALMAC_8812F_SUPPORT mount_api_8812f(adapter); +#endif + } else if (adapter->chip_id == HALMAC_CHIP_ID_8822E) { +#if HALMAC_8822E_SUPPORT + mount_api_8822e(adapter); #endif } else { PLTFM_MSG_ERR("[ERR]Chip ID undefine!!\n"); diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_mimo_88xx.c b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_mimo_88xx.c index 26de2edbc..f97383c14 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_mimo_88xx.c +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_mimo_88xx.c @@ -254,8 +254,10 @@ cfg_sounding_88xx(struct halmac_adapter *adapter, enum halmac_snd_role role, HALMAC_REG_W8(REG_SND_PTCL_CTRL + 3, 0x3A); HALMAC_REG_W8_CLR(REG_RXFLTMAP1, BIT(4)); HALMAC_REG_W8_CLR(REG_RXFLTMAP4, BIT(4)); - #if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) - if (adapter->chip_id == HALMAC_CHIP_ID_8822C) + #if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) + if (adapter->chip_id == HALMAC_CHIP_ID_8822C || + adapter->chip_id == HALMAC_CHIP_ID_8822E) HALMAC_REG_W32(REG_CSI_RRSR, BIT_CSI_RRSC_BITMAP(CSI_RATE_MAP) | BIT_OFDM_LEN_TH(0)); @@ -333,8 +335,9 @@ su_bfee_entry_init_88xx(struct halmac_adapter *adapter, u8 userid, u16 paid) BIT_R_TXBF0_40M | BIT_R_TXBF0_80M); HALMAC_REG_W16(REG_TXBF_CTRL, tmp42c | paid); HALMAC_REG_W16(REG_ASSOCIATED_BFMEE_SEL, paid); - #if HALMAC_8822C_SUPPORT - if (adapter->chip_id == HALMAC_CHIP_ID_8822C) + #if HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT + if (adapter->chip_id == HALMAC_CHIP_ID_8822C || + adapter->chip_id == HALMAC_CHIP_ID_8822E) HALMAC_REG_W16(REG_ASSOCIATED_BFMEE_SEL, paid | BIT(9)); #endif break; @@ -645,9 +648,10 @@ cfg_csi_rate_88xx(struct halmac_adapter *adapter, u8 rssi, u8 cur_rate, csi_cfg = HALMAC_REG_R32(REG_BBPSF_CTRL) & ~BITS_WMAC_CSI_RATE; #endif -#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) if (adapter->chip_id == HALMAC_CHIP_ID_8822C || - adapter->chip_id == HALMAC_CHIP_ID_8812F) + adapter->chip_id == HALMAC_CHIP_ID_8812F || + adapter->chip_id == HALMAC_CHIP_ID_8822E) HALMAC_REG_W32_SET(REG_BBPSF_CTRL, BIT(15)); #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_sdio_88xx.c b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_sdio_88xx.c index ead9d79fe..654eb316b 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_sdio_88xx.c +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_88xx/halmac_sdio_88xx.c @@ -378,6 +378,7 @@ sdio_hw_info_88xx(struct halmac_adapter *adapter, adapter->sdio_hw_info.clock_speed = info->clock_speed; adapter->sdio_hw_info.spec_ver = info->spec_ver; adapter->sdio_hw_info.block_size = info->block_size; + adapter->sdio_hw_info.tx_512_by_byte_mode = info->tx_512_by_byte_mode; /*SW*/ adapter->sdio_hw_info.io_warn_flag = info->io_warn_flag; @@ -461,11 +462,13 @@ leave_sdio_suspend_88xx(struct halmac_adapter *adapter) return HALMAC_RET_SDIO_LEAVE_SUSPEND_FAIL; } - value8 = HALMAC_REG_R8(REG_HCI_OPT_CTRL + 2); - if (adapter->sdio_hw_info.spec_ver == HALMAC_SDIO_SPEC_VER_3_00) - HALMAC_REG_W8(REG_HCI_OPT_CTRL + 2, value8 | BIT(2)); - else - HALMAC_REG_W8(REG_HCI_OPT_CTRL + 2, value8 & ~(BIT(2))); + if (adapter->chip_id != HALMAC_CHIP_ID_8822E) { + value8 = HALMAC_REG_R8(REG_HCI_OPT_CTRL + 2); + if (adapter->sdio_hw_info.spec_ver == HALMAC_SDIO_SPEC_VER_3_00) + HALMAC_REG_W8(REG_HCI_OPT_CTRL + 2, value8 | BIT(2)); + else + HALMAC_REG_W8(REG_HCI_OPT_CTRL + 2, value8 & ~(BIT(2))); + } return HALMAC_RET_SUCCESS; } diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_api.c b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_api.c index bec705cc4..1d9c11632 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_api.c +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_api.c @@ -38,6 +38,10 @@ #include "halmac_88xx/halmac_init_win8812f.h" #endif +#if HALMAC_8822E_SUPPORT +#include "halmac_88xx/halmac_init_win8822e.h" +#endif + #else #if HALMAC_88XX_SUPPORT @@ -71,6 +75,7 @@ enum chip_id_hw_def { CHIP_ID_HW_DEF_8814B = 0x11, CHIP_ID_HW_DEF_8822C = 0x13, CHIP_ID_HW_DEF_8812F = 0x14, + CHIP_ID_HW_DEF_8822E = 0x17, CHIP_ID_HW_DEF_UNDEFINE = 0x7F, CHIP_ID_HW_DEF_PS = 0xEA, }; @@ -179,7 +184,8 @@ halmac_init_adapter(void *drv_adapter, struct halmac_platform_api *pltfm_api, if (adapter->chip_id == HALMAC_CHIP_ID_8822B || adapter->chip_id == HALMAC_CHIP_ID_8821C || adapter->chip_id == HALMAC_CHIP_ID_8822C || - adapter->chip_id == HALMAC_CHIP_ID_8812F) { + adapter->chip_id == HALMAC_CHIP_ID_8812F || + adapter->chip_id == HALMAC_CHIP_ID_8822E) { init_adapter_param_88xx(adapter); status = mount_api_88xx(adapter); } @@ -235,6 +241,13 @@ halmac_init_adapter(void *drv_adapter, struct halmac_platform_api *pltfm_api, } #endif +#if HALMAC_8822E_SUPPORT + if (adapter->chip_id == HALMAC_CHIP_ID_8822E) { + init_adapter_param_win8822e(adapter); + status = mount_api_win8822e(adapter); + } +#endif + #endif *halmac_api = (struct halmac_api *)adapter->halmac_api; @@ -535,6 +548,8 @@ get_chip_info(void *drv_adapter, struct halmac_platform_api *pltfm_api, adapter->chip_id = HALMAC_CHIP_ID_8822C; } else if (chip_id == CHIP_ID_HW_DEF_8812F) { adapter->chip_id = HALMAC_CHIP_ID_8812F; + } else if (chip_id == CHIP_ID_HW_DEF_8822E) { + adapter->chip_id = HALMAC_CHIP_ID_8822E; } else { adapter->chip_id = HALMAC_CHIP_ID_UNDEFINE; PLTFM_MSG_ERR("[ERR]Chip id is undefined\n"); diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_api.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_api.h index 6453cc7e9..ac8f90fbb 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_api.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_api.h @@ -20,13 +20,14 @@ #define HALMAC_MAJOR_VER 1 #define HALMAC_PROTOTYPE_VER 6 -#define HALMAC_MINOR_VER 6 -#define HALMAC_PATCH_VER 26 +#define HALMAC_MINOR_VER 7 +#define HALMAC_PATCH_VER 12 #define HALMAC_88XX_SUPPORT (HALMAC_8821C_SUPPORT || \ HALMAC_8822B_SUPPORT || \ HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define HALMAC_88XX_V1_SUPPORT HALMAC_8814B_SUPPORT @@ -76,6 +77,11 @@ #include "halmac_bit_8812f.h" #endif +#if HALMAC_8822E_SUPPORT +#include "halmac_reg_8822e.h" +#include "halmac_bit_8822e.h" +#endif + #if (HALMAC_PLATFORM_WINDOWS || HALMAC_PLATFORM_LINUX) #include "halmac_tx_desc_nic.h" #include "halmac_tx_desc_buffer_nic.h" diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_bit2.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_bit2.h index 29f757b08..9445f5d11 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_bit2.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_bit2.h @@ -22,7 +22,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_WRITE_ENABLE BIT(31) @@ -35,7 +35,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_QUEUE_MACID_AC_NOT_THE_SAME BIT(31) @@ -63,7 +63,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_SHIFT_GTAB_ID 28 #define BIT_MASK_GTAB_ID 0x7 @@ -123,16 +123,26 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +#define BIT_AUTO_DMY BIT(23) +#define BIT_MANUAL_DMY BIT(22) +#define BIT_AUTO_DMY_DETECT BIT(21) +#define BIT_LDO_DIG_DIODE BIT(20) + +#endif + #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define BIT_CTS_EN BIT(16) #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_SHIFT_R_OFDM_LEN_V1 16 #define BIT_MASK_R_OFDM_LEN_V1 0xffff @@ -149,7 +159,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_SHIFT_COUNTER_BASE 16 #define BIT_MASK_COUNTER_BASE 0x1fff @@ -175,14 +185,15 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define BIT_WMAC_SRCH_FIFOFULL BIT(15) #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_QUEUE_MACID_AC_NOT_THE_SAME_V1 BIT(15) @@ -190,7 +201,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_SHIFT_XTAL_DRV_RF1 13 #define BIT_MASK_XTAL_DRV_RF1 0x3 @@ -213,17 +224,48 @@ #endif +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + +#define BIT_SHIFT_REG_LDOADJ_L 13 +#define BIT_MASK_REG_LDOADJ_L 0xf +#define BIT_REG_LDOADJ_L(x) \ + (((x) & BIT_MASK_REG_LDOADJ_L) << BIT_SHIFT_REG_LDOADJ_L) +#define BITS_REG_LDOADJ_L (BIT_MASK_REG_LDOADJ_L << BIT_SHIFT_REG_LDOADJ_L) +#define BIT_CLEAR_REG_LDOADJ_L(x) ((x) & (~BITS_REG_LDOADJ_L)) +#define BIT_GET_REG_LDOADJ_L(x) \ + (((x) >> BIT_SHIFT_REG_LDOADJ_L) & BIT_MASK_REG_LDOADJ_L) +#define BIT_SET_REG_LDOADJ_L(x, v) \ + (BIT_CLEAR_REG_LDOADJ_L(x) | BIT_REG_LDOADJ_L(v)) + +#endif + +#if (HALMAC_8822E_SUPPORT) + +#define BIT_SHIFT_LDO_DIG_VOSEL 13 +#define BIT_MASK_LDO_DIG_VOSEL 0xf +#define BIT_LDO_DIG_VOSEL(x) \ + (((x) & BIT_MASK_LDO_DIG_VOSEL) << BIT_SHIFT_LDO_DIG_VOSEL) +#define BITS_LDO_DIG_VOSEL (BIT_MASK_LDO_DIG_VOSEL << BIT_SHIFT_LDO_DIG_VOSEL) +#define BIT_CLEAR_LDO_DIG_VOSEL(x) ((x) & (~BITS_LDO_DIG_VOSEL)) +#define BIT_GET_LDO_DIG_VOSEL(x) \ + (((x) >> BIT_SHIFT_LDO_DIG_VOSEL) & BIT_MASK_LDO_DIG_VOSEL) +#define BIT_SET_LDO_DIG_VOSEL(x, v) \ + (BIT_CLEAR_LDO_DIG_VOSEL(x) | BIT_LDO_DIG_VOSEL(v)) + +#endif + #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define BIT_ATIMEND BIT(12) #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_SHIFT_GTAB_ID_V1 12 #define BIT_MASK_GTAB_ID_V1 0x7 @@ -236,10 +278,17 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +#define BIT_LDO_DIG_DUMMY_LOAD BIT(12) + +#endif + #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define BIT_SHIFT_WATCH_DOG_RECORD_V1 10 #define BIT_MASK_WATCH_DOG_RECORD_V1 0x3fff @@ -255,7 +304,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_R_SYM_CTRL_SPS_PWMFREQ BIT(10) @@ -271,7 +320,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define BIT_R_IO_TIMEOUT_FLAG_V1 BIT(9) @@ -279,12 +329,24 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_EN_RTS_REQ BIT(9) #endif +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + +#define BIT_EN_25_L BIT(9) + +#endif + +#if (HALMAC_8822E_SUPPORT) + +#define BIT_REG_OTP_PC33_VODIS BIT(9) + +#endif + #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8881A_SUPPORT) @@ -295,7 +357,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_EN_EDCA_REQ BIT(8) @@ -313,7 +375,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_DIS_TXDMA_PRE BIT(7) @@ -328,7 +390,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_EN_PTCL_REQ BIT(7) @@ -337,7 +399,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_DIS_RXDMA_PRE BIT(6) @@ -345,14 +407,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_EN_SCH_REQ BIT(6) #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_CLR_HGQ_REQ_BLOCK BIT(5) @@ -360,7 +422,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define BIT_SHIFT_I2C_M_BUS_GNT_FW 4 #define BIT_MASK_I2C_M_BUS_GNT_FW 0x7 @@ -374,6 +437,45 @@ #define BIT_SET_I2C_M_BUS_GNT_FW(x, v) \ (BIT_CLEAR_I2C_M_BUS_GNT_FW(x) | BIT_I2C_M_BUS_GNT_FW(v)) +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + +#define BIT_SHIFT_LDOH12_V12ADJ_L 4 +#define BIT_MASK_LDOH12_V12ADJ_L 0xf +#define BIT_LDOH12_V12ADJ_L(x) \ + (((x) & BIT_MASK_LDOH12_V12ADJ_L) << BIT_SHIFT_LDOH12_V12ADJ_L) +#define BITS_LDOH12_V12ADJ_L \ + (BIT_MASK_LDOH12_V12ADJ_L << BIT_SHIFT_LDOH12_V12ADJ_L) +#define BIT_CLEAR_LDOH12_V12ADJ_L(x) ((x) & (~BITS_LDOH12_V12ADJ_L)) +#define BIT_GET_LDOH12_V12ADJ_L(x) \ + (((x) >> BIT_SHIFT_LDOH12_V12ADJ_L) & BIT_MASK_LDOH12_V12ADJ_L) +#define BIT_SET_LDOH12_V12ADJ_L(x, v) \ + (BIT_CLEAR_LDOH12_V12ADJ_L(x) | BIT_LDOH12_V12ADJ_L(v)) + +#endif + +#if (HALMAC_8822E_SUPPORT) + +#define BIT_SHIFT_AONLDO_VOSEL_H 4 +#define BIT_MASK_AONLDO_VOSEL_H 0xf +#define BIT_AONLDO_VOSEL_H(x) \ + (((x) & BIT_MASK_AONLDO_VOSEL_H) << BIT_SHIFT_AONLDO_VOSEL_H) +#define BITS_AONLDO_VOSEL_H \ + (BIT_MASK_AONLDO_VOSEL_H << BIT_SHIFT_AONLDO_VOSEL_H) +#define BIT_CLEAR_AONLDO_VOSEL_H(x) ((x) & (~BITS_AONLDO_VOSEL_H)) +#define BIT_GET_AONLDO_VOSEL_H(x) \ + (((x) >> BIT_SHIFT_AONLDO_VOSEL_H) & BIT_MASK_AONLDO_VOSEL_H) +#define BIT_SET_AONLDO_VOSEL_H(x, v) \ + (BIT_CLEAR_AONLDO_VOSEL_H(x) | BIT_AONLDO_VOSEL_H(v)) + +#endif + +#if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + #define BIT_I2C_M_GNT_FW BIT(3) #endif @@ -381,25 +483,41 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_TXFLAG_EXIT_L1_EN BIT(2) #endif #if (HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_DATA_FW_STS_FILTER BIT(2) #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_OPTION_DIS_XTAL_BG BIT(2) #endif +#if (HALMAC_8822E_SUPPORT) + +#define BIT_SHIFT_REG_ANAPAR_LDO23 2 +#define BIT_MASK_REG_ANAPAR_LDO23 0x3 +#define BIT_REG_ANAPAR_LDO23(x) \ + (((x) & BIT_MASK_REG_ANAPAR_LDO23) << BIT_SHIFT_REG_ANAPAR_LDO23) +#define BITS_REG_ANAPAR_LDO23 \ + (BIT_MASK_REG_ANAPAR_LDO23 << BIT_SHIFT_REG_ANAPAR_LDO23) +#define BIT_CLEAR_REG_ANAPAR_LDO23(x) ((x) & (~BITS_REG_ANAPAR_LDO23)) +#define BIT_GET_REG_ANAPAR_LDO23(x) \ + (((x) >> BIT_SHIFT_REG_ANAPAR_LDO23) & BIT_MASK_REG_ANAPAR_LDO23) +#define BIT_SET_REG_ANAPAR_LDO23(x, v) \ + (BIT_CLEAR_REG_ANAPAR_LDO23(x) | BIT_REG_ANAPAR_LDO23(v)) + +#endif + #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT) @@ -409,7 +527,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define BIT_SHIFT_I2C_M_SPEED 1 #define BIT_MASK_I2C_M_SPEED 0x3 @@ -425,12 +544,18 @@ #endif #if (HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_CTRL_FW_STS_FILTER BIT(1) #endif +#if (HALMAC_8822E_SUPPORT) + +#define BIT_REG_LV_POR_VREF BIT(1) + +#endif + #if (HALMAC_8881A_SUPPORT) #define BIT_AFE_MBIAS BIT(1) @@ -463,7 +588,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define BIT_SHIFT_RXFF0_BNDY_V2 0 #define BIT_MASK_RXFF0_BNDY_V2 0x3ffff @@ -504,7 +630,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_SHIFT_AGG_VALUE0 0 #define BIT_MASK_AGG_VALUE0 0x7f @@ -518,7 +644,8 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define BIT_SHIFT_BW_CFG 0 #define BIT_MASK_BW_CFG 0x3 @@ -532,19 +659,36 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define BIT_I2C_M_UNLOCK BIT(0) #endif #if (HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define BIT_MGNT_FW_STS_FILTER BIT(0) #endif +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + +#define BIT_SHIFT_LDOE25_V12ADJ_L_V1 0 +#define BIT_MASK_LDOE25_V12ADJ_L_V1 0xf +#define BIT_LDOE25_V12ADJ_L_V1(x) \ + (((x) & BIT_MASK_LDOE25_V12ADJ_L_V1) << BIT_SHIFT_LDOE25_V12ADJ_L_V1) +#define BITS_LDOE25_V12ADJ_L_V1 \ + (BIT_MASK_LDOE25_V12ADJ_L_V1 << BIT_SHIFT_LDOE25_V12ADJ_L_V1) +#define BIT_CLEAR_LDOE25_V12ADJ_L_V1(x) ((x) & (~BITS_LDOE25_V12ADJ_L_V1)) +#define BIT_GET_LDOE25_V12ADJ_L_V1(x) \ + (((x) >> BIT_SHIFT_LDOE25_V12ADJ_L_V1) & BIT_MASK_LDOE25_V12ADJ_L_V1) +#define BIT_SET_LDOE25_V12ADJ_L_V1(x, v) \ + (BIT_CLEAR_LDOE25_V12ADJ_L_V1(x) | BIT_LDOE25_V12ADJ_L_V1(v)) + +#endif + #if (HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8822B_SUPPORT) @@ -552,9 +696,15 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +#define BIT_AONLDO_VREF_SEL BIT(0) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -575,7 +725,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -592,7 +742,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -626,7 +776,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -637,7 +787,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -645,7 +795,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -656,7 +806,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -664,7 +814,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -683,7 +833,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -692,7 +842,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -723,7 +873,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -732,7 +882,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -743,7 +893,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -760,7 +910,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -771,7 +921,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -788,7 +939,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -806,7 +957,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -816,7 +968,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -827,7 +979,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -845,7 +997,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -856,7 +1008,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -874,7 +1026,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -885,7 +1037,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -901,7 +1054,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -920,7 +1073,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -938,7 +1091,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -957,7 +1110,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -975,7 +1129,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -986,7 +1140,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_ISO_CTRL (Offset 0x0000) */ @@ -1004,7 +1158,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TX_CTRL (Offset 0x10250000) */ @@ -1016,7 +1170,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_FUNC_EN (Offset 0x0002) */ @@ -1027,7 +1181,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_SYS_FUNC_EN (Offset 0x0002) */ @@ -1057,7 +1212,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_FUNC_EN (Offset 0x0002) */ @@ -1070,7 +1225,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_SYS_FUNC_EN (Offset 0x0002) */ @@ -1090,7 +1246,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_FUNC_EN (Offset 0x0002) */ @@ -1107,7 +1263,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_FUNC_EN (Offset 0x0002) */ @@ -1126,7 +1282,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_FUNC_EN (Offset 0x0002) */ @@ -1145,7 +1301,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1165,7 +1321,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1177,7 +1333,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1196,7 +1352,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1216,7 +1372,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1232,7 +1388,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1252,7 +1408,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1279,7 +1435,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1299,7 +1455,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1310,7 +1466,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1330,7 +1486,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1342,7 +1498,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1354,7 +1510,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1382,7 +1538,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1394,7 +1550,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1405,7 +1561,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1425,7 +1581,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1433,7 +1589,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1445,7 +1601,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1453,7 +1609,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1464,7 +1620,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1484,7 +1640,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1510,7 +1666,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_CMD11_VOL_SWITCH (Offset 0x10250004) */ @@ -1539,7 +1695,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1559,7 +1715,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1570,7 +1726,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1578,7 +1734,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1615,7 +1771,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_PW_CTRL (Offset 0x0004) */ @@ -1623,7 +1779,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_CMD11_VOL_SWITCH (Offset 0x10250004) */ @@ -1725,7 +1881,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1736,7 +1892,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1755,7 +1911,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1775,7 +1931,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1795,7 +1951,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1823,7 +1979,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1854,7 +2010,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1874,7 +2030,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1894,7 +2050,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1915,7 +2071,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1961,7 +2117,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CLK_CTRL (Offset 0x0008) */ @@ -1969,7 +2125,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_MONITOR (Offset 0x10250008) */ @@ -1999,7 +2155,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_EEPROM_CTRL (Offset 0x000A) */ @@ -2026,7 +2182,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_EEPROM_CTRL (Offset 0x000A) */ @@ -2046,7 +2202,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_EEPROM_CTRL (Offset 0x000A) */ @@ -2057,7 +2213,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_MONITOR_2 (Offset 0x1025000C) */ @@ -2080,7 +2236,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_EE_VPD (Offset 0x000C) */ @@ -2094,7 +2250,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_MONITOR_2 (Offset 0x1025000C) */ @@ -2351,20 +2507,6 @@ #endif -#if (HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT) - -/* 2 REG_SYS_SWR_CTRL1 (Offset 0x0010) */ - -#define BIT_SHIFT_STD_L1 14 -#define BIT_MASK_STD_L1 0x3 -#define BIT_STD_L1(x) (((x) & BIT_MASK_STD_L1) << BIT_SHIFT_STD_L1) -#define BITS_STD_L1 (BIT_MASK_STD_L1 << BIT_SHIFT_STD_L1) -#define BIT_CLEAR_STD_L1(x) ((x) & (~BITS_STD_L1)) -#define BIT_GET_STD_L1(x) (((x) >> BIT_SHIFT_STD_L1) & BIT_MASK_STD_L1) -#define BIT_SET_STD_L1(x, v) (BIT_CLEAR_STD_L1(x) | BIT_STD_L1(v)) - -#endif - #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8881A_SUPPORT) @@ -2417,20 +2559,6 @@ #endif -#if (HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT) - -/* 2 REG_SYS_SWR_CTRL1 (Offset 0x0010) */ - -#define BIT_SHIFT_VOL_L1 10 -#define BIT_MASK_VOL_L1 0xf -#define BIT_VOL_L1(x) (((x) & BIT_MASK_VOL_L1) << BIT_SHIFT_VOL_L1) -#define BITS_VOL_L1 (BIT_MASK_VOL_L1 << BIT_SHIFT_VOL_L1) -#define BIT_CLEAR_VOL_L1(x) ((x) & (~BITS_VOL_L1)) -#define BIT_GET_VOL_L1(x) (((x) >> BIT_SHIFT_VOL_L1) & BIT_MASK_VOL_L1) -#define BIT_SET_VOL_L1(x, v) (BIT_CLEAR_VOL_L1(x) | BIT_VOL_L1(v)) - -#endif - #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8881A_SUPPORT) @@ -2472,7 +2600,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_SWR_CTRL1 (Offset 0x0010) */ @@ -2560,7 +2688,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2593,7 +2721,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2610,7 +2738,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2634,7 +2762,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2644,7 +2772,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2654,7 +2782,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2706,7 +2834,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2724,7 +2852,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2742,7 +2870,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2760,7 +2888,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2806,7 +2934,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2832,7 +2960,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2870,7 +2998,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2897,7 +3025,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -2959,7 +3087,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_SWR_CTRL2 (Offset 0x0014) */ @@ -2992,7 +3120,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_SWR_CTRL2 (Offset 0x0014) */ @@ -3024,7 +3152,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -3048,7 +3176,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -3072,7 +3200,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -3111,7 +3239,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -3155,7 +3283,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -3194,7 +3322,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -3226,7 +3354,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HIMR (Offset 0x10250014) */ @@ -3260,7 +3388,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_SWR_CTRL3 (Offset 0x0018) */ @@ -3269,7 +3397,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HISR (Offset 0x10250018) */ @@ -3286,7 +3414,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HISR (Offset 0x10250018) */ @@ -3303,7 +3431,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HISR (Offset 0x10250018) */ @@ -3314,7 +3442,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HISR (Offset 0x10250018) */ @@ -3336,7 +3464,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_SWR_CTRL3 (Offset 0x0018) */ @@ -3355,7 +3483,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HISR (Offset 0x10250018) */ @@ -3363,7 +3491,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HISR (Offset 0x10250018) */ @@ -3373,7 +3501,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HISR (Offset 0x10250018) */ @@ -3391,7 +3519,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_SWR_CTRL3 (Offset 0x0018) */ @@ -3408,7 +3536,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HISR (Offset 0x10250018) */ @@ -3419,7 +3547,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RSV_CTRL (Offset 0x001C) */ @@ -3457,7 +3585,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RSV_CTRL (Offset 0x001C) */ @@ -3477,7 +3605,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RSV_CTRL (Offset 0x001C) */ @@ -3488,7 +3616,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RSV_CTRL (Offset 0x001C) */ @@ -3507,7 +3635,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RSV_CTRL (Offset 0x001C) */ @@ -3527,7 +3655,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RSV_CTRL (Offset 0x001C) */ @@ -3541,7 +3669,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_RX_REQ_LEN (Offset 0x1025001C) */ @@ -3558,7 +3686,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RF_CTRL (Offset 0x001F) */ @@ -3603,7 +3731,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RF_CTRL (Offset 0x001F) */ @@ -3631,7 +3759,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_FREE_TXPG_SEQ_V1 (Offset 0x1025001F) */ @@ -3648,7 +3776,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -3664,7 +3792,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -3710,7 +3838,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -3741,7 +3869,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -3773,7 +3901,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_FREE_TXPG (Offset 0x10250020) */ @@ -3790,7 +3918,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -3889,7 +4017,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -3907,7 +4035,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -3941,7 +4069,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -3958,7 +4086,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -4001,7 +4129,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -4026,7 +4154,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -4043,7 +4171,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -4071,7 +4199,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_FREE_TXPG (Offset 0x10250020) */ @@ -4088,7 +4216,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AFE_LDO_CTRL (Offset 0x0020) */ @@ -4297,7 +4425,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_AFE_CTRL1 (Offset 0x0024) */ @@ -4394,7 +4522,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_FREE_TXPG2 (Offset 0x10250024) */ @@ -4809,7 +4937,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_FREE_TXPG2 (Offset 0x10250024) */ @@ -4948,7 +5076,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_OQT_FREE_TXPG_V1 (Offset 0x10250028) */ @@ -5090,7 +5218,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_OQT_FREE_TXPG_V1 (Offset 0x10250028) */ @@ -5345,7 +5473,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARSW_POW_MAC (Offset 0x0028) */ @@ -5379,7 +5508,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARSW_POW_MAC (Offset 0x0028) */ @@ -5414,7 +5544,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_OQT_FREE_TXPG_V1 (Offset 0x10250028) */ @@ -5431,7 +5561,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARSW_POW_MAC (Offset 0x0028) */ @@ -5457,7 +5588,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARLDO_POW_MAC (Offset 0x0029) */ @@ -5465,52 +5597,26 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_POW_MAC (Offset 0x002A) */ #define BIT_REG_STANDBY_L BIT(19) #define BIT_PD_REGU_L BIT(18) #define BIT_EN_PC_BT_L BIT(17) - -#define BIT_SHIFT_REG_LDOADJ_L 13 -#define BIT_MASK_REG_LDOADJ_L 0xf -#define BIT_REG_LDOADJ_L(x) \ - (((x) & BIT_MASK_REG_LDOADJ_L) << BIT_SHIFT_REG_LDOADJ_L) -#define BITS_REG_LDOADJ_L (BIT_MASK_REG_LDOADJ_L << BIT_SHIFT_REG_LDOADJ_L) -#define BIT_CLEAR_REG_LDOADJ_L(x) ((x) & (~BITS_REG_LDOADJ_L)) -#define BIT_GET_REG_LDOADJ_L(x) \ - (((x) >> BIT_SHIFT_REG_LDOADJ_L) & BIT_MASK_REG_LDOADJ_L) -#define BIT_SET_REG_LDOADJ_L(x, v) \ - (BIT_CLEAR_REG_LDOADJ_L(x) | BIT_REG_LDOADJ_L(v)) - #define BIT_CK12M_EN BIT(11) #define BIT_CK12M_SEL BIT(10) -#define BIT_EN_25_L BIT(9) #define BIT_EN_SLEEP BIT(8) #define BIT_DUMMY_V4 BIT(7) -#define BIT_DUMMY_V3 BIT(6) #define BIT_DUMMY_V2 BIT(5) #define BIT_DUMMY_V1 BIT(4) - -#define BIT_SHIFT_LDOH12_V12ADJ_L 4 -#define BIT_MASK_LDOH12_V12ADJ_L 0xf -#define BIT_LDOH12_V12ADJ_L(x) \ - (((x) & BIT_MASK_LDOH12_V12ADJ_L) << BIT_SHIFT_LDOH12_V12ADJ_L) -#define BITS_LDOH12_V12ADJ_L \ - (BIT_MASK_LDOH12_V12ADJ_L << BIT_SHIFT_LDOH12_V12ADJ_L) -#define BIT_CLEAR_LDOH12_V12ADJ_L(x) ((x) & (~BITS_LDOH12_V12ADJ_L)) -#define BIT_GET_LDOH12_V12ADJ_L(x) \ - (((x) >> BIT_SHIFT_LDOH12_V12ADJ_L) & BIT_MASK_LDOH12_V12ADJ_L) -#define BIT_SET_LDOH12_V12ADJ_L(x, v) \ - (BIT_CLEAR_LDOH12_V12ADJ_L(x) | BIT_LDOH12_V12ADJ_L(v)) - #define BIT_POW_PC_LDO_PORT1 BIT(3) #define BIT_POW_PC_LDO_PORT0 BIT(2) #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_POW_MAC (Offset 0x002A) */ @@ -5518,27 +5624,16 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_POW_MAC (Offset 0x002A) */ #define BIT_POW_POWER_CUT_POW_LDO BIT(0) -#define BIT_SHIFT_LDOE25_V12ADJ_L_V1 0 -#define BIT_MASK_LDOE25_V12ADJ_L_V1 0xf -#define BIT_LDOE25_V12ADJ_L_V1(x) \ - (((x) & BIT_MASK_LDOE25_V12ADJ_L_V1) << BIT_SHIFT_LDOE25_V12ADJ_L_V1) -#define BITS_LDOE25_V12ADJ_L_V1 \ - (BIT_MASK_LDOE25_V12ADJ_L_V1 << BIT_SHIFT_LDOE25_V12ADJ_L_V1) -#define BIT_CLEAR_LDOE25_V12ADJ_L_V1(x) ((x) & (~BITS_LDOE25_V12ADJ_L_V1)) -#define BIT_GET_LDOE25_V12ADJ_L_V1(x) \ - (((x) >> BIT_SHIFT_LDOE25_V12ADJ_L_V1) & BIT_MASK_LDOE25_V12ADJ_L_V1) -#define BIT_SET_LDOE25_V12ADJ_L_V1(x, v) \ - (BIT_CLEAR_LDOE25_V12ADJ_L_V1(x) | BIT_LDOE25_V12ADJ_L_V1(v)) - #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_POW_XTAL (Offset 0x002B) */ @@ -5724,7 +5819,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -5747,7 +5842,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -5769,7 +5864,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -5792,7 +5887,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -5851,7 +5946,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -5868,7 +5963,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -5904,7 +5999,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -5920,7 +6015,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -5956,7 +6051,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -5972,7 +6067,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -6016,7 +6111,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TXPKT_EMPTY (Offset 0x1025002C) */ @@ -6050,6 +6145,35 @@ #define BIT_EF_FLAG BIT(31) +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_EFUSE_CTRL (Offset 0x0030) */ + +#define BIT_SHIFT_EF_MODE_SEL 30 +#define BIT_MASK_EF_MODE_SEL 0x3 +#define BIT_EF_MODE_SEL(x) \ + (((x) & BIT_MASK_EF_MODE_SEL) << BIT_SHIFT_EF_MODE_SEL) +#define BITS_EF_MODE_SEL (BIT_MASK_EF_MODE_SEL << BIT_SHIFT_EF_MODE_SEL) +#define BIT_CLEAR_EF_MODE_SEL(x) ((x) & (~BITS_EF_MODE_SEL)) +#define BIT_GET_EF_MODE_SEL(x) \ + (((x) >> BIT_SHIFT_EF_MODE_SEL) & BIT_MASK_EF_MODE_SEL) +#define BIT_SET_EF_MODE_SEL(x, v) \ + (BIT_CLEAR_EF_MODE_SEL(x) | BIT_EF_MODE_SEL(v)) + +#define BIT_EF_RDY BIT(29) + +#endif + +#if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ + HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8881A_SUPPORT) + +/* 2 REG_EFUSE_CTRL (Offset 0x0030) */ + #define BIT_SHIFT_EF_PGPD 28 #define BIT_MASK_EF_PGPD 0x7 #define BIT_EF_PGPD(x) (((x) & BIT_MASK_EF_PGPD) << BIT_SHIFT_EF_PGPD) @@ -6058,6 +6182,24 @@ #define BIT_GET_EF_PGPD(x) (((x) >> BIT_SHIFT_EF_PGPD) & BIT_MASK_EF_PGPD) #define BIT_SET_EF_PGPD(x, v) (BIT_CLEAR_EF_PGPD(x) | BIT_EF_PGPD(v)) +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_EFUSE_CTRL (Offset 0x0030) */ + +#define BIT_EF_COMP_RESULT BIT(28) + +#endif + +#if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ + HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8881A_SUPPORT) + +/* 2 REG_EFUSE_CTRL (Offset 0x0030) */ + #define BIT_SHIFT_EF_RDT 24 #define BIT_MASK_EF_RDT 0xf #define BIT_EF_RDT(x) (((x) & BIT_MASK_EF_RDT) << BIT_SHIFT_EF_RDT) @@ -6066,6 +6208,16 @@ #define BIT_GET_EF_RDT(x) (((x) >> BIT_SHIFT_EF_RDT) & BIT_MASK_EF_RDT) #define BIT_SET_EF_RDT(x, v) (BIT_CLEAR_EF_RDT(x) | BIT_EF_RDT(v)) +#endif + +#if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ + HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8881A_SUPPORT) + +/* 2 REG_EFUSE_CTRL (Offset 0x0030) */ + #define BIT_SHIFT_EF_PGTS 20 #define BIT_MASK_EF_PGTS 0xf #define BIT_EF_PGTS(x) (((x) & BIT_MASK_EF_PGTS) << BIT_SHIFT_EF_PGTS) @@ -6101,7 +6253,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HTSFR_INFO (Offset 0x10250030) */ @@ -6115,11 +6267,25 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_EFUSE_CTRL (Offset 0x0030) */ + +#define BIT_SHIFT_EF_ADDR_V1 16 +#define BIT_MASK_EF_ADDR_V1 0x7ff +#define BIT_EF_ADDR_V1(x) (((x) & BIT_MASK_EF_ADDR_V1) << BIT_SHIFT_EF_ADDR_V1) +#define BITS_EF_ADDR_V1 (BIT_MASK_EF_ADDR_V1 << BIT_SHIFT_EF_ADDR_V1) +#define BIT_CLEAR_EF_ADDR_V1(x) ((x) & (~BITS_EF_ADDR_V1)) +#define BIT_GET_EF_ADDR_V1(x) \ + (((x) >> BIT_SHIFT_EF_ADDR_V1) & BIT_MASK_EF_ADDR_V1) +#define BIT_SET_EF_ADDR_V1(x, v) (BIT_CLEAR_EF_ADDR_V1(x) | BIT_EF_ADDR_V1(v)) + +#endif #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_EFUSE_CTRL (Offset 0x0030) */ @@ -6143,7 +6309,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HTSFR_INFO (Offset 0x10250030) */ @@ -6157,6 +6323,21 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_EFUSE_CTRL (Offset 0x0030) */ + +#define BIT_SHIFT_EF_DATA_V1 0 +#define BIT_MASK_EF_DATA_V1 0xffff +#define BIT_EF_DATA_V1(x) (((x) & BIT_MASK_EF_DATA_V1) << BIT_SHIFT_EF_DATA_V1) +#define BITS_EF_DATA_V1 (BIT_MASK_EF_DATA_V1 << BIT_SHIFT_EF_DATA_V1) +#define BIT_CLEAR_EF_DATA_V1(x) ((x) & (~BITS_EF_DATA_V1)) +#define BIT_GET_EF_DATA_V1(x) \ + (((x) >> BIT_SHIFT_EF_DATA_V1) & BIT_MASK_EF_DATA_V1) +#define BIT_SET_EF_DATA_V1(x, v) (BIT_CLEAR_EF_DATA_V1(x) | BIT_EF_DATA_V1(v)) + +#endif + #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ @@ -6284,6 +6465,23 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_LDO_EFUSE_CTRL (Offset 0x0034) */ + +#define BIT_SHIFT_EF_SCAN_SADR 19 +#define BIT_MASK_EF_SCAN_SADR 0x7ff +#define BIT_EF_SCAN_SADR(x) \ + (((x) & BIT_MASK_EF_SCAN_SADR) << BIT_SHIFT_EF_SCAN_SADR) +#define BITS_EF_SCAN_SADR (BIT_MASK_EF_SCAN_SADR << BIT_SHIFT_EF_SCAN_SADR) +#define BIT_CLEAR_EF_SCAN_SADR(x) ((x) & (~BITS_EF_SCAN_SADR)) +#define BIT_GET_EF_SCAN_SADR(x) \ + (((x) >> BIT_SHIFT_EF_SCAN_SADR) & BIT_MASK_EF_SCAN_SADR) +#define BIT_SET_EF_SCAN_SADR(x, v) \ + (BIT_CLEAR_EF_SCAN_SADR(x) | BIT_EF_SCAN_SADR(v)) + +#endif + #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LDO_EFUSE_CTRL (Offset 0x0034) */ @@ -6326,7 +6524,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LDO_EFUSE_CTRL (Offset 0x0034) */ @@ -6389,6 +6587,23 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_LDO_EFUSE_CTRL (Offset 0x0034) */ + +#define BIT_SHIFT_EF_SCAN_EADR 8 +#define BIT_MASK_EF_SCAN_EADR 0x7ff +#define BIT_EF_SCAN_EADR(x) \ + (((x) & BIT_MASK_EF_SCAN_EADR) << BIT_SHIFT_EF_SCAN_EADR) +#define BITS_EF_SCAN_EADR (BIT_MASK_EF_SCAN_EADR << BIT_SHIFT_EF_SCAN_EADR) +#define BIT_CLEAR_EF_SCAN_EADR(x) ((x) & (~BITS_EF_SCAN_EADR)) +#define BIT_GET_EF_SCAN_EADR(x) \ + (((x) >> BIT_SHIFT_EF_SCAN_EADR) & BIT_MASK_EF_SCAN_EADR) +#define BIT_SET_EF_SCAN_EADR(x, v) \ + (BIT_CLEAR_EF_SCAN_EADR(x) | BIT_EF_SCAN_EADR(v)) + +#endif + #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ @@ -6399,6 +6614,24 @@ #define BIT_EF_TRPT BIT(7) +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_LDO_EFUSE_CTRL (Offset 0x0034) */ + +#define BIT_EF_SCAN_TRPT BIT(7) + +#endif + +#if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ + HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8881A_SUPPORT) + +/* 2 REG_LDO_EFUSE_CTRL (Offset 0x0034) */ + #define BIT_SHIFT_EF_TTHD 0 #define BIT_MASK_EF_TTHD 0x7f #define BIT_EF_TTHD(x) (((x) & BIT_MASK_EF_TTHD) << BIT_SHIFT_EF_TTHD) @@ -6409,6 +6642,23 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_LDO_EFUSE_CTRL (Offset 0x0034) */ + +#define BIT_SHIFT_EF_SCAN_FTHR 0 +#define BIT_MASK_EF_SCAN_FTHR 0x7f +#define BIT_EF_SCAN_FTHR(x) \ + (((x) & BIT_MASK_EF_SCAN_FTHR) << BIT_SHIFT_EF_SCAN_FTHR) +#define BITS_EF_SCAN_FTHR (BIT_MASK_EF_SCAN_FTHR << BIT_SHIFT_EF_SCAN_FTHR) +#define BIT_CLEAR_EF_SCAN_FTHR(x) ((x) & (~BITS_EF_SCAN_FTHR)) +#define BIT_GET_EF_SCAN_FTHR(x) \ + (((x) >> BIT_SHIFT_EF_SCAN_FTHR) & BIT_MASK_EF_SCAN_FTHR) +#define BIT_SET_EF_SCAN_FTHR(x, v) \ + (BIT_CLEAR_EF_SCAN_FTHR(x) | BIT_EF_SCAN_FTHR(v)) + +#endif + #if (HALMAC_8192F_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6480,7 +6730,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6506,7 +6757,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6594,7 +6846,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6614,7 +6866,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6625,7 +6877,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6645,7 +6897,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6663,7 +6915,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6708,7 +6961,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6747,7 +7000,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6787,7 +7040,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PWR_OPTION_CTRL (Offset 0x0038) */ @@ -6807,7 +7060,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HCPWM1_V2 (Offset 0x10250038) */ @@ -6819,7 +7072,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CAL_TIMER (Offset 0x003C) */ @@ -6863,7 +7116,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG_2 (Offset 0x003F) */ @@ -6890,7 +7143,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -6914,7 +7167,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -6946,7 +7199,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -6970,7 +7223,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -6994,7 +7247,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7010,7 +7263,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7061,7 +7314,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7085,7 +7338,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7109,7 +7362,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7133,7 +7386,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7159,7 +7412,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_INDIRECT_REG_CFG (Offset 0x10250040) */ @@ -7167,7 +7420,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7193,7 +7446,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7211,7 +7465,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_INDIRECT_REG_CFG (Offset 0x10250040) */ @@ -7221,7 +7475,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7231,7 +7486,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_INDIRECT_REG_CFG (Offset 0x10250040) */ @@ -7247,7 +7502,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7283,7 +7538,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_INDIRECT_REG_CFG (Offset 0x10250040) */ @@ -7301,7 +7556,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7313,7 +7568,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7338,7 +7593,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7358,7 +7613,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7369,7 +7624,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7410,7 +7666,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7430,7 +7686,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7449,7 +7705,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7460,7 +7716,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7479,7 +7735,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7506,7 +7762,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7534,7 +7790,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_MUXCFG (Offset 0x0040) */ @@ -7550,7 +7806,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_INDIRECT_REG_CFG (Offset 0x10250040) */ @@ -7571,7 +7827,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_PIN_CTRL (Offset 0x0044) */ @@ -7609,7 +7866,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_PIN_CTRL (Offset 0x0044) */ @@ -7643,7 +7901,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_PIN_CTRL (Offset 0x0044) */ @@ -7663,7 +7921,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_INDIRECT_REG_DATA (Offset 0x10250044) */ @@ -7685,7 +7943,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_INTM (Offset 0x0048) */ @@ -7760,7 +8018,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_INTM (Offset 0x0048) */ @@ -7778,7 +8036,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_GPIO_INTM (Offset 0x0048) */ @@ -7808,7 +8067,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_INTM (Offset 0x0048) */ @@ -7831,7 +8090,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -7855,7 +8114,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -7879,7 +8138,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -7903,7 +8162,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -7927,7 +8186,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -7962,7 +8221,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -7989,7 +8248,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -8023,7 +8282,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -8058,7 +8317,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -8067,7 +8326,8 @@ #endif #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -8101,7 +8361,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -8130,7 +8390,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -8164,7 +8424,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -8186,7 +8446,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LED_CFG (Offset 0x004C) */ @@ -8218,7 +8478,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8237,7 +8497,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8256,7 +8516,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8278,7 +8538,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8290,14 +8550,14 @@ /* 2 REG_FSIMR (Offset 0x0050) */ -#define BIT_PCIE_GEN12_SWITCH_EN BIT(23) +#define BIT_PCIE_GEN12_SWITH_EN BIT(23) #endif #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8316,7 +8576,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8335,7 +8595,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8354,7 +8614,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8373,7 +8633,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8392,7 +8652,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8411,7 +8671,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8430,7 +8690,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8449,7 +8709,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8468,7 +8728,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8487,7 +8747,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8506,7 +8766,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8525,7 +8785,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8544,7 +8804,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8569,7 +8829,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8587,7 +8847,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8605,7 +8866,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8648,7 +8910,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8667,7 +8929,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8686,7 +8948,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8705,7 +8967,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8724,7 +8986,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSIMR (Offset 0x0050) */ @@ -8744,7 +9006,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8755,7 +9017,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8774,7 +9036,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8793,7 +9055,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8815,7 +9077,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8827,14 +9089,14 @@ /* 2 REG_FSISR (Offset 0x0054) */ -#define BIT_PCIE_GEN12_SWITCH BIT(23) +#define BIT_PCIE_GEN12_SWITH BIT(23) #endif #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8853,7 +9115,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8872,7 +9134,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8891,7 +9153,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8910,7 +9172,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8929,7 +9191,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8948,7 +9210,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8967,7 +9229,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -8986,7 +9248,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9005,7 +9267,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9024,7 +9286,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9043,7 +9305,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9062,7 +9324,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9081,7 +9343,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9106,7 +9368,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9158,7 +9420,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9201,7 +9463,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9220,7 +9482,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9239,7 +9501,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9258,7 +9520,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9277,7 +9539,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FSISR (Offset 0x0054) */ @@ -9297,7 +9559,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSIMR (Offset 0x0058) */ @@ -9328,7 +9590,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HSIMR (Offset 0x0058) */ @@ -9340,7 +9602,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSIMR (Offset 0x0058) */ @@ -9360,7 +9622,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSIMR (Offset 0x0058) */ @@ -9387,7 +9649,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSIMR (Offset 0x0058) */ @@ -9406,7 +9668,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSIMR (Offset 0x0058) */ @@ -9425,7 +9687,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSIMR (Offset 0x0058) */ @@ -9445,7 +9707,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSISR (Offset 0x005C) */ @@ -9476,7 +9738,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HSISR (Offset 0x005C) */ @@ -9488,7 +9750,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSISR (Offset 0x005C) */ @@ -9507,7 +9769,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSISR (Offset 0x005C) */ @@ -9534,7 +9796,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSISR (Offset 0x005C) */ @@ -9553,7 +9815,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSISR (Offset 0x005C) */ @@ -9572,7 +9834,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HSISR (Offset 0x005C) */ @@ -9593,7 +9855,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_EXT_CTRL (Offset 0x0060) */ @@ -9614,7 +9876,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_EXT_CTRL (Offset 0x0060) */ @@ -9658,7 +9921,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_EXT_CTRL (Offset 0x0060) */ @@ -9677,7 +9940,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_H2C (Offset 0x10250060) */ @@ -9705,7 +9968,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9722,7 +9985,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9732,7 +9995,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9744,7 +10008,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9764,7 +10028,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9782,7 +10046,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9793,7 +10058,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9812,7 +10077,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9831,7 +10096,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9850,7 +10115,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9870,7 +10135,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9923,7 +10188,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9934,7 +10199,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9961,7 +10226,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -9979,7 +10244,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10013,7 +10279,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10039,7 +10305,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10073,7 +10339,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10107,7 +10373,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10133,7 +10399,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10159,7 +10425,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10193,7 +10459,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10227,7 +10493,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10261,7 +10527,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10294,7 +10560,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10336,7 +10603,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL1 (Offset 0x0064) */ @@ -10353,7 +10620,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_C2H (Offset 0x10250064) */ @@ -10381,7 +10648,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10402,7 +10669,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10420,7 +10687,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10438,7 +10705,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10457,7 +10724,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10483,7 +10751,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10494,7 +10762,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10553,7 +10822,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10579,7 +10849,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10598,7 +10869,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10609,7 +10881,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10628,7 +10900,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10647,7 +10919,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10674,7 +10946,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10686,7 +10958,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10698,7 +10970,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10708,7 +10980,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10735,7 +11008,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10753,7 +11027,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10809,7 +11084,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10835,7 +11110,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10854,7 +11129,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10873,7 +11149,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10892,7 +11168,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10911,7 +11187,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WL_BT_PWR_CTRL (Offset 0x0068) */ @@ -10984,7 +11260,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDM_DEBUG (Offset 0x006C) */ @@ -11022,7 +11298,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SDM_DEBUG (Offset 0x006C) */ @@ -11077,7 +11354,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11095,7 +11373,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11120,7 +11399,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11145,7 +11424,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11167,7 +11446,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11179,7 +11459,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11198,7 +11478,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11214,7 +11494,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11230,7 +11510,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11246,7 +11526,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11263,7 +11543,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11280,7 +11560,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11315,7 +11595,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11331,7 +11611,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11365,7 +11645,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11389,7 +11669,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11432,7 +11712,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11457,7 +11737,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_SDIO_CTRL (Offset 0x0070) */ @@ -11506,7 +11786,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11607,7 +11887,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11635,7 +11915,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11662,7 +11942,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11681,7 +11961,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11700,7 +11980,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11719,7 +11999,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11727,7 +12007,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11746,7 +12026,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11754,7 +12034,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11770,7 +12050,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11782,7 +12062,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11797,7 +12077,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11808,7 +12088,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11816,7 +12096,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11841,7 +12121,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11853,7 +12133,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11861,7 +12141,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11889,7 +12169,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11908,7 +12188,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -11916,7 +12196,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_OPT_CTRL (Offset 0x0074) */ @@ -12325,7 +12605,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_LDO_SWR_CTRL (Offset 0x007C) */ @@ -12343,7 +12623,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_LDO_SWR_CTRL (Offset 0x007C) */ @@ -12373,7 +12654,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_LDO_SWR_CTRL (Offset 0x007C) */ @@ -12422,7 +12704,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_LDO_SWR_CTRL (Offset 0x007C) */ @@ -12779,7 +13062,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -12806,7 +13089,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -12835,7 +13118,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -12854,7 +13137,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -12890,7 +13173,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -12923,7 +13206,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -12949,7 +13232,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -12983,7 +13266,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -13021,7 +13304,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -13055,7 +13338,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -13089,7 +13372,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -13107,7 +13390,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -13125,7 +13408,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MCUFW_CTRL (Offset 0x0080) */ @@ -13144,7 +13427,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HRPWM1 (Offset 0x10250080) */ @@ -13171,7 +13454,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814A_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8814A_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MCU_TST_CFG (Offset 0x0084) */ @@ -13200,7 +13484,15 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) + +/* 2 REG_SDIO_BUS_CTRL (Offset 0x10250085) */ + +#define BIT_HISR_W_CLR_EN BIT(5) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_BUS_CTRL (Offset 0x10250085) */ @@ -13209,7 +13501,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_BUS_CTRL (Offset 0x10250085) */ @@ -13229,7 +13521,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HSUS_CTRL (Offset 0x10250086) */ @@ -13241,7 +13533,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HSUS_CTRL (Offset 0x10250086) */ @@ -13254,7 +13546,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HMEBOX_E0_E1 (Offset 0x0088) */ @@ -13283,7 +13575,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_RESPONSE_TIMER (Offset 0x10250088) */ @@ -13319,7 +13611,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_CMD_CRC (Offset 0x1025008A) */ @@ -13349,7 +13641,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HMEBOX_E2_E3 (Offset 0x008C) */ @@ -13379,7 +13671,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13390,7 +13682,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13399,7 +13691,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13409,7 +13701,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13435,7 +13727,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13454,7 +13746,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13472,7 +13764,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13491,7 +13783,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13500,7 +13792,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13525,7 +13818,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13550,7 +13843,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13566,7 +13859,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13587,7 +13880,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13637,7 +13931,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13676,7 +13970,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13686,7 +13980,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13695,7 +13990,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HSISR (Offset 0x10250090) */ @@ -13706,7 +14001,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WLLPS_CTRL (Offset 0x0090) */ @@ -13715,7 +14010,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HSISR (Offset 0x10250090) */ @@ -13723,7 +14018,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_HSIMR (Offset 0x10250091) */ @@ -13880,7 +14175,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_GPIO_DEBOUNCE_CTRL (Offset 0x0098) */ @@ -13909,7 +14204,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RPWM2 (Offset 0x009C) */ @@ -13926,7 +14222,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYSON_FSM_MON (Offset 0x00A0) */ @@ -13994,9 +14290,57 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_EFUSE_CTRL_1 (Offset 0x00A4) */ + +#define BIT_EF_ENT BIT(31) +#define BIT__BT_OTP_PWC_DIS BIT(28) +#define BIT_EF_RDT_V1 BIT(27) +#define BIT_EF_BURST BIT(19) +#define BIT_SHIFT_EF_TEST_SEL 16 +#define BIT_MASK_EF_TEST_SEL 0x7 +#define BIT_EF_TEST_SEL(x) \ + (((x) & BIT_MASK_EF_TEST_SEL) << BIT_SHIFT_EF_TEST_SEL) +#define BITS_EF_TEST_SEL (BIT_MASK_EF_TEST_SEL << BIT_SHIFT_EF_TEST_SEL) +#define BIT_CLEAR_EF_TEST_SEL(x) ((x) & (~BITS_EF_TEST_SEL)) +#define BIT_GET_EF_TEST_SEL(x) \ + (((x) >> BIT_SHIFT_EF_TEST_SEL) & BIT_MASK_EF_TEST_SEL) +#define BIT_SET_EF_TEST_SEL(x, v) \ + (BIT_CLEAR_EF_TEST_SEL(x) | BIT_EF_TEST_SEL(v)) + +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_EFUSE_CTRL_1 (Offset 0x00A4) */ + +#define BIT_EF_TROW_EN BIT(15) +#define BIT_EF_ERR_FLAG BIT(14) +#define BIT_EF_FBURST_DIS BIT(13) +#define BIT_EF_DSB_EN BIT(11) + +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_EFUSE_CTRL_1 (Offset 0x00A4) */ + +#define BIT_SHIFT_EF_DLY_SEL 0 +#define BIT_MASK_EF_DLY_SEL 0xf +#define BIT_EF_DLY_SEL(x) \ + (((x) & BIT_MASK_EF_DLY_SEL) << BIT_SHIFT_EF_DLY_SEL) +#define BITS_EF_DLY_SEL (BIT_MASK_EF_DLY_SEL << BIT_SHIFT_EF_DLY_SEL) +#define BIT_CLEAR_EF_DLY_SEL(x) ((x) & (~BITS_EF_DLY_SEL)) +#define BIT_GET_EF_DLY_SEL(x) \ + (((x) >> BIT_SHIFT_EF_DLY_SEL) & BIT_MASK_EF_DLY_SEL) +#define BIT_SET_EF_DLY_SEL(x, v) (BIT_CLEAR_EF_DLY_SEL(x) | BIT_EF_DLY_SEL(v)) + +#endif + #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PMC_DBG_CTRL1 (Offset 0x00A8) */ @@ -14019,7 +14363,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PMC_DBG_CTRL1 (Offset 0x00A8) */ @@ -14139,7 +14483,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14158,7 +14503,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14177,7 +14523,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14197,7 +14544,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14228,7 +14575,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14281,7 +14628,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14293,7 +14640,8 @@ #endif #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14337,7 +14685,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14348,7 +14697,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14368,7 +14717,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14384,7 +14733,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14403,7 +14753,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14422,7 +14773,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14441,7 +14793,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14460,7 +14813,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14479,7 +14833,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14499,7 +14854,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR0 (Offset 0x00B0) */ @@ -14513,7 +14868,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HISR0 (Offset 0x00B4) */ @@ -14533,7 +14889,8 @@ #endif #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HISR0 (Offset 0x00B4) */ @@ -14553,7 +14910,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HISR0 (Offset 0x00B4) */ @@ -14564,7 +14922,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HISR0 (Offset 0x00B4) */ @@ -14596,7 +14955,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14614,7 +14974,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14624,7 +14984,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14636,7 +14997,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14655,7 +15016,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14667,7 +15029,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14686,7 +15048,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14698,7 +15061,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14717,7 +15080,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14729,7 +15093,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14748,7 +15112,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14760,7 +15125,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14789,7 +15154,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14808,7 +15174,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14828,7 +15194,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14852,7 +15218,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14862,7 +15228,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14879,7 +15245,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14896,7 +15262,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14913,7 +15279,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR1 (Offset 0x00B8) */ @@ -14940,7 +15306,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HISR1 (Offset 0x00BC) */ @@ -14958,7 +15325,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HISR1 (Offset 0x00BC) */ @@ -15002,7 +15369,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DBG_PORT_SEL (Offset 0x00C0) */ @@ -15016,7 +15383,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_DIOERR_RPT (Offset 0x102500C0) */ @@ -15049,7 +15416,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_CMD_ERRCNT (Offset 0x102500C2) */ @@ -15094,7 +15461,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15112,7 +15479,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15139,7 +15506,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15156,7 +15523,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15178,7 +15545,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15204,7 +15571,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15222,7 +15590,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15240,7 +15609,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15258,7 +15628,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15276,7 +15647,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15294,7 +15666,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PAD_CTRL2 (Offset 0x00C4) */ @@ -15304,7 +15677,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_CMD_ERR_CONTENT (Offset 0x102500C4) */ @@ -15355,7 +15728,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_CRC_ERR_IDX (Offset 0x102500C9) */ @@ -15368,7 +15741,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_DATA_CRC (Offset 0x102500CA) */ @@ -15388,7 +15761,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PMC_DBG_CTRL2 (Offset 0x00CC) */ @@ -15443,7 +15816,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PMC_DBG_CTRL2 (Offset 0x00CC) */ @@ -15467,7 +15840,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PMC_DBG_CTRL2 (Offset 0x00CC) */ @@ -15478,7 +15851,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PMC_DBG_CTRL2 (Offset 0x00CC) */ @@ -15499,7 +15872,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PMC_DBG_CTRL2 (Offset 0x00CC) */ @@ -15515,7 +15888,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TRANS_FIFO_STATUS (Offset 0x102500CC) */ @@ -15526,7 +15899,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PMC_DBG_CTRL2 (Offset 0x00CC) */ @@ -15543,7 +15916,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SDIO_TRANS_FIFO_STATUS (Offset 0x102500CC) */ @@ -15573,7 +15946,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15592,7 +15965,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15611,7 +15984,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15630,7 +16003,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15666,7 +16039,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15719,7 +16092,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15738,7 +16111,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15757,7 +16130,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15782,7 +16155,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15801,7 +16175,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BIST_CTRL (Offset 0x00D0) */ @@ -15852,7 +16227,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BIST_RPT (Offset 0x00D4) */ @@ -15879,7 +16254,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MEM_CTRL (Offset 0x00D8) */ @@ -15913,7 +16288,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MEM_CTRL (Offset 0x00D8) */ @@ -15993,7 +16368,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MEM_CTRL (Offset 0x00D8) */ @@ -16113,7 +16488,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MEM_CTRL (Offset 0x00D8) */ @@ -16144,7 +16519,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MEM_CTRL (Offset 0x00D8) */ @@ -16183,7 +16558,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MEM_CTRL (Offset 0x00D8) */ @@ -16230,7 +16605,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MEM_CTRL (Offset 0x00D8) */ @@ -16416,7 +16791,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_USB_SIE_INTF (Offset 0x00E0) */ @@ -16433,7 +16808,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_USB_SIE_INTF (Offset 0x00E0) */ @@ -16450,7 +16826,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_USB_SIE_INTF (Offset 0x00E0) */ @@ -16474,7 +16850,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_USB_SIE_INTF (Offset 0x00E0) */ @@ -16513,7 +16889,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_USB_SIE_INTF (Offset 0x00E0) */ @@ -16536,7 +16912,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_USB_SIE_INTF (Offset 0x00E0) */ @@ -16575,7 +16951,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_USB_SIE_INTF (Offset 0x00E0) */ @@ -16612,7 +16988,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_MIO_INTF (Offset 0x00E4) */ @@ -16642,7 +17018,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PCIE_MIO_INTF (Offset 0x00E4) */ @@ -16694,7 +17070,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLRF1 (Offset 0x00EC) */ @@ -16710,7 +17086,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLRF1 (Offset 0x00EC) */ @@ -16753,7 +17129,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLRF1 (Offset 0x00EC) */ @@ -16824,7 +17200,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLRF1 (Offset 0x00EC) */ @@ -16864,7 +17240,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLRF1 (Offset 0x00EC) */ @@ -16880,7 +17256,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLRF1 (Offset 0x00EC) */ @@ -16916,7 +17292,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLRF1 (Offset 0x00EC) */ @@ -16937,7 +17313,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -16954,7 +17330,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -16965,7 +17341,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17002,7 +17378,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17020,7 +17396,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17040,7 +17416,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17051,7 +17427,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17070,7 +17447,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17098,7 +17475,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17133,7 +17510,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17156,7 +17533,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17176,7 +17553,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17189,7 +17566,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17200,7 +17578,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17219,7 +17597,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17239,7 +17617,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17250,7 +17628,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17270,7 +17648,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17281,7 +17659,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17301,7 +17679,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG1 (Offset 0x00F0) */ @@ -17357,7 +17735,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -17590,7 +17968,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -17638,7 +18017,7 @@ /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ -#define BIT_HCI_SEL_EMBEDDED BIT(18) +#define BIT_HCI_SEL_EMBEDED BIT(18) #endif @@ -17654,7 +18033,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -17849,7 +18228,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -17898,7 +18277,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -17926,7 +18305,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -17954,7 +18333,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -18024,7 +18403,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -18062,7 +18441,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -18209,7 +18588,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -18475,7 +18854,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SYS_STATUS1 (Offset 0x00F4) */ @@ -18501,7 +18881,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_STATUS2 (Offset 0x00F8) */ @@ -18515,7 +18895,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_STATUS2 (Offset 0x00F8) */ @@ -18600,7 +18980,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_CFG2 (Offset 0x00FC) */ @@ -18620,7 +19000,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SYS_CFG2 (Offset 0x00FC) */ @@ -18668,7 +19048,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CR (Offset 0x0100) */ @@ -18708,7 +19088,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CR (Offset 0x0100) */ @@ -18727,7 +19107,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CR (Offset 0x0100) */ @@ -18738,7 +19118,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CR (Offset 0x0100) */ @@ -18750,7 +19130,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CR (Offset 0x0100) */ @@ -18769,7 +19149,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PG_SIZE (Offset 0x0104) */ @@ -18788,7 +19168,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PKT_BUFF_ACCESS_CTRL (Offset 0x0106) */ @@ -18811,7 +19191,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_CLK_STATE (Offset 0x0108) */ @@ -18830,7 +19210,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_CLK_STATE (Offset 0x0108) */ @@ -18850,7 +19230,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_PQ_MAP (Offset 0x010C) */ @@ -18912,7 +19292,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_PQ_MAP (Offset 0x010C) */ @@ -18932,7 +19312,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_PQ_MAP (Offset 0x010C) */ @@ -18970,7 +19350,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_PQ_MAP (Offset 0x010C) */ @@ -19019,7 +19399,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_PQ_MAP (Offset 0x010C) */ @@ -19057,7 +19437,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_PQ_MAP (Offset 0x010C) */ @@ -19103,7 +19483,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_PQ_MAP (Offset 0x010C) */ @@ -19115,7 +19495,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_PQ_MAP (Offset 0x010C) */ @@ -19158,7 +19538,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TRXFF_BNDY (Offset 0x0114) */ @@ -19195,7 +19576,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TRXFF_BNDY (Offset 0x0114) */ @@ -19290,7 +19671,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PTA_I2C_MBOX (Offset 0x0118) */ @@ -19394,7 +19775,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19418,7 +19799,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19451,7 +19832,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19470,7 +19851,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19507,7 +19888,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19526,7 +19907,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19545,7 +19926,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19566,7 +19947,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19585,7 +19966,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19604,7 +19985,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19623,7 +20004,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19642,7 +20023,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19661,7 +20042,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19680,7 +20061,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19699,7 +20080,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19754,7 +20135,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19773,7 +20154,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19792,7 +20173,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19816,7 +20197,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19858,7 +20239,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19877,7 +20258,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19896,7 +20277,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19915,7 +20296,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19942,7 +20323,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19969,7 +20350,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -19996,7 +20377,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1IMR (Offset 0x0120) */ @@ -20012,7 +20393,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20036,7 +20417,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20069,7 +20450,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20088,7 +20469,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20133,7 +20514,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20152,7 +20533,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20171,7 +20552,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20194,7 +20575,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20213,7 +20594,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20232,7 +20613,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20251,7 +20632,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20270,7 +20651,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20289,7 +20670,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20344,7 +20725,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20363,7 +20744,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20382,7 +20763,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20406,7 +20787,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20448,7 +20829,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20467,7 +20848,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20486,7 +20867,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20504,7 +20885,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20539,7 +20921,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20566,7 +20948,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20593,7 +20975,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE1ISR (Offset 0x0124) */ @@ -20605,7 +20987,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CPWM (Offset 0x012C) */ @@ -20632,7 +21014,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20659,7 +21041,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20686,7 +21068,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20713,7 +21095,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20740,7 +21122,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20767,7 +21149,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20794,7 +21176,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20821,7 +21203,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20848,7 +21230,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20875,7 +21257,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20902,7 +21284,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20929,7 +21311,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20956,7 +21338,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -20983,7 +21365,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21010,7 +21392,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21037,7 +21419,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21070,7 +21452,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21095,7 +21477,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21122,7 +21504,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21149,7 +21531,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21182,7 +21564,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21242,7 +21625,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21269,7 +21652,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21296,7 +21679,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21323,7 +21706,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21350,7 +21733,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21377,7 +21760,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21404,7 +21787,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21431,7 +21814,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21458,7 +21841,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21485,7 +21868,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWIMR (Offset 0x0130) */ @@ -21504,7 +21887,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21523,7 +21906,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21542,7 +21925,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21561,7 +21944,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21580,7 +21963,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21599,7 +21982,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21618,7 +22001,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21637,7 +22020,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21656,7 +22039,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21675,7 +22058,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21694,7 +22077,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21713,7 +22096,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21732,7 +22115,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21751,7 +22134,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21770,7 +22153,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21789,7 +22172,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21814,7 +22197,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21831,7 +22214,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21850,7 +22233,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21869,7 +22252,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21894,7 +22277,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21946,7 +22330,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21965,7 +22349,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -21984,7 +22368,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -22003,7 +22387,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -22022,7 +22406,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -22041,7 +22425,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -22060,7 +22444,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -22079,7 +22463,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -22098,7 +22482,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -22117,7 +22501,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWISR (Offset 0x0134) */ @@ -22225,7 +22609,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22251,7 +22635,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22277,7 +22661,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22303,7 +22687,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22321,7 +22705,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22347,7 +22731,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22373,7 +22757,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22399,7 +22783,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22426,7 +22810,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22453,7 +22837,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22480,7 +22864,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22595,7 +22979,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22622,7 +23006,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22649,7 +23033,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22676,7 +23060,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22703,7 +23087,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22730,7 +23114,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22757,7 +23141,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22784,7 +23168,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22811,7 +23195,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTIMR (Offset 0x0138) */ @@ -22882,7 +23266,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -22908,7 +23292,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -22934,7 +23318,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -22960,7 +23344,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -22978,7 +23362,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23004,7 +23388,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23030,7 +23414,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23067,7 +23451,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23085,7 +23469,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23111,7 +23496,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23137,7 +23523,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23239,7 +23626,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23258,7 +23645,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23277,7 +23664,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23296,7 +23683,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23315,7 +23702,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23334,7 +23721,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23353,7 +23740,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23372,7 +23759,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23402,7 +23789,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FTISR (Offset 0x013C) */ @@ -23414,7 +23801,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PKTBUF_DBG_CTRL (Offset 0x0140) */ @@ -23451,7 +23838,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PKTBUF_DBG_CTRL (Offset 0x0140) */ @@ -23478,7 +23865,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PKTBUF_DBG_CTRL (Offset 0x0140) */ @@ -23509,7 +23896,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PKTBUF_DBG_DATA_L (Offset 0x0144) */ @@ -23659,7 +24046,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TC5_CTRL (Offset 0x0168) */ @@ -23671,7 +24058,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TC5_CTRL (Offset 0x0168) */ @@ -23699,7 +24086,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TC6_CTRL (Offset 0x016C) */ @@ -23711,7 +24098,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TC6_CTRL (Offset 0x016C) */ @@ -23723,7 +24110,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TC6_CTRL (Offset 0x016C) */ @@ -23742,7 +24129,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TC6_CTRL (Offset 0x016C) */ @@ -23794,7 +24181,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_DRF_FAIL (Offset 0x0170) */ @@ -23832,7 +24220,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_DRF_FAIL (Offset 0x0170) */ @@ -24009,7 +24398,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_DRF_FAIL (Offset 0x0170) */ @@ -24050,7 +24440,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_START_PAUSE (Offset 0x0174) */ @@ -24095,7 +24486,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_START_PAUSE (Offset 0x0174) */ @@ -24260,7 +24652,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_START_PAUSE (Offset 0x0174) */ @@ -24326,7 +24718,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_DONE (Offset 0x0178) */ @@ -24364,7 +24757,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_DONE (Offset 0x0178) */ @@ -24494,7 +24888,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_DONE (Offset 0x0178) */ @@ -24701,7 +25095,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_AES_DECRPT_DATA (Offset 0x0180) */ @@ -24731,7 +25125,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIOE_CTRL (Offset 0x0188) */ @@ -24739,7 +25133,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIOE_CTRL (Offset 0x0188) */ @@ -24763,7 +25158,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MBIST_READ_BIST_RPT_V1 (Offset 0x0188) */ @@ -24781,7 +25176,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIOE_CTRL (Offset 0x0188) */ @@ -24831,7 +25227,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIOE_CFG_FILE (Offset 0x018C) */ @@ -24850,7 +25247,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TMETER (Offset 0x0190) */ @@ -24887,7 +25285,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TMETER (Offset 0x0190) */ @@ -24940,7 +25339,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_OSC_32K_CTRL (Offset 0x0194) */ @@ -24995,7 +25395,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_OSC_32K_CTRL (Offset 0x0194) */ @@ -25016,7 +25417,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_OSC_32K_CTRL (Offset 0x0194) */ @@ -25026,7 +25427,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_OSC_32K_CTRL (Offset 0x0194) */ @@ -25051,7 +25452,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_32K_CAL_REG1 (Offset 0x0198) */ @@ -25102,7 +25504,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_C2HEVT (Offset 0x01A0) */ @@ -25273,7 +25675,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SW_DEFINED_PAGE1 (Offset 0x01B8) */ @@ -25309,7 +25712,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MCUTST_I (Offset 0x01C0) */ @@ -25500,7 +25903,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BB_ACCESS_CTRL (Offset 0x01E8) */ @@ -25538,7 +25941,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BB_ACCESS_CTRL (Offset 0x01E8) */ @@ -25583,7 +25987,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BB_ACCESS_CTRL (Offset 0x01E8) */ @@ -25679,7 +26083,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_CTRL_1 (Offset 0x0200) */ @@ -25740,7 +26145,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_CTRL_1 (Offset 0x0200) */ @@ -25777,7 +26183,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_CTRL_2 (Offset 0x0204) */ @@ -25844,7 +26251,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_CTRL_2 (Offset 0x0204) */ @@ -25877,7 +26285,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_CTRL_2 (Offset 0x0204) */ @@ -25937,7 +26346,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_CTRL_2 (Offset 0x0204) */ @@ -26010,7 +26420,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_AUTO_LLT_V1 (Offset 0x0208) */ @@ -26027,7 +26438,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AUTO_LLT_V1 (Offset 0x0208) */ @@ -26071,7 +26482,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AUTO_LLT_V1 (Offset 0x0208) */ @@ -26093,7 +26504,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_AUTO_LLT_V1 (Offset 0x0208) */ @@ -26112,7 +26523,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_AUTO_LLT_V1 (Offset 0x0208) */ @@ -26123,7 +26535,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AUTO_LLT_V1 (Offset 0x0208) */ @@ -26143,7 +26555,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AUTO_LLT_V1 (Offset 0x0208) */ @@ -26154,7 +26566,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_OFFSET_CHK (Offset 0x020C) */ @@ -26173,7 +26586,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_OFFSET_CHK (Offset 0x020C) */ @@ -26192,7 +26606,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_OFFSET_CHK (Offset 0x020C) */ @@ -26239,7 +26653,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_OFFSET_CHK (Offset 0x020C) */ @@ -26273,7 +26687,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_OFFSET_CHK (Offset 0x020C) */ @@ -26290,7 +26705,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_OFFSET_CHK (Offset 0x020C) */ @@ -26302,7 +26718,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_OFFSET_CHK (Offset 0x020C) */ @@ -26329,7 +26745,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26357,7 +26774,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26376,7 +26794,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26395,7 +26814,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26415,7 +26835,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26426,7 +26846,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26438,7 +26859,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26449,7 +26870,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26461,7 +26883,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26472,7 +26894,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26484,7 +26907,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26495,7 +26918,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26509,7 +26933,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26520,7 +26944,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26532,7 +26957,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26543,7 +26968,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26564,7 +26990,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26585,7 +27012,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26596,7 +27023,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26608,7 +27036,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26619,7 +27047,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26631,7 +27060,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26642,7 +27071,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26654,7 +27084,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26665,7 +27095,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26677,7 +27108,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26688,7 +27119,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26700,7 +27132,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26711,7 +27143,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26723,7 +27156,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26734,7 +27167,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXDMA_STATUS (Offset 0x0210) */ @@ -26775,7 +27209,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT1 (Offset 0x0218) */ @@ -26811,7 +27246,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT1 (Offset 0x0218) */ @@ -26874,7 +27310,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT1 (Offset 0x0218) */ @@ -26908,7 +27345,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT2 (Offset 0x021C) */ @@ -26952,7 +27390,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT2 (Offset 0x021C) */ @@ -27034,7 +27473,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT2 (Offset 0x021C) */ @@ -27059,7 +27499,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT3 (Offset 0x0220) */ @@ -27077,7 +27518,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT3 (Offset 0x0220) */ @@ -27165,7 +27607,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT3 (Offset 0x0220) */ @@ -27242,7 +27685,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT4 (Offset 0x0224) */ @@ -27287,7 +27731,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT4 (Offset 0x0224) */ @@ -27341,7 +27786,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TQPNT4 (Offset 0x0224) */ @@ -27398,7 +27844,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RQPN_CTRL_1 (Offset 0x0228) */ @@ -27415,7 +27862,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RQPN_CTRL_1 (Offset 0x0228) */ @@ -27448,7 +27896,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RQPN_CTRL_1 (Offset 0x0228) */ @@ -27488,7 +27937,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RQPN_CTRL_1 (Offset 0x0228) */ @@ -27571,7 +28020,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RQPN_CTRL_1 (Offset 0x0228) */ @@ -27619,7 +28068,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RQPN_CTRL_2 (Offset 0x022C) */ @@ -27630,7 +28080,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RQPN_CTRL_2 (Offset 0x022C) */ @@ -27679,7 +28130,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_INFO_1 (Offset 0x0230) */ @@ -27724,7 +28176,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_INFO_1 (Offset 0x0230) */ @@ -27768,7 +28221,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_INFO_2 (Offset 0x0234) */ @@ -27816,7 +28270,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_INFO_2 (Offset 0x0234) */ @@ -27832,7 +28287,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_INFO_3 (Offset 0x0238) */ @@ -27852,7 +28307,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_INFO_3 (Offset 0x0238) */ @@ -27924,7 +28380,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FIFOPAGE_INFO_5 (Offset 0x0240) */ @@ -27980,7 +28437,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2C_HEAD (Offset 0x0244) */ @@ -28030,7 +28487,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2C_TAIL (Offset 0x0248) */ @@ -28081,7 +28538,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2C_READ_ADDR (Offset 0x024C) */ @@ -28136,7 +28593,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2C_WR_ADDR (Offset 0x0250) */ @@ -28174,7 +28631,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2C_INFO (Offset 0x0254) */ @@ -28295,7 +28752,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2C_INFO (Offset 0x0254) */ @@ -28661,7 +29118,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PGSUB_H (Offset 0x0270) */ @@ -28732,7 +29189,8 @@ #endif #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -28765,7 +29223,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -28783,7 +29241,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -28793,7 +29251,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -28802,7 +29260,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -28859,7 +29317,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -28891,7 +29349,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -28909,7 +29367,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -28962,7 +29420,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -28998,7 +29457,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_AGG_PG_TH (Offset 0x0280) */ @@ -29061,7 +29520,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RXPKT_NUM (Offset 0x0284) */ @@ -29085,7 +29545,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXPKT_NUM (Offset 0x0284) */ @@ -29127,7 +29587,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXDMA_STATUS (Offset 0x0288) */ @@ -29146,7 +29606,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_STATUS (Offset 0x0288) */ @@ -29158,7 +29618,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXDMA_STATUS (Offset 0x0288) */ @@ -29181,7 +29641,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXDMA_STATUS (Offset 0x0288) */ @@ -29200,7 +29660,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_MODE (Offset 0x0290) */ @@ -29254,7 +29714,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_MODE (Offset 0x0290) */ @@ -29264,7 +29725,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_MODE (Offset 0x0290) */ @@ -29276,7 +29737,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXDMA_MODE (Offset 0x0290) */ @@ -29310,7 +29771,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_MODE (Offset 0x0290) */ @@ -29320,7 +29781,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_C2H_PKT (Offset 0x0294) */ @@ -29345,7 +29807,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_C2H_PKT (Offset 0x0294) */ @@ -29368,7 +29830,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWFF_C2H (Offset 0x0298) */ @@ -29391,7 +29853,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FWFF_CTRL (Offset 0x029C) */ @@ -29430,7 +29893,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWFF_CTRL (Offset 0x029C) */ @@ -29449,7 +29912,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FWFF_PKT_INFO (Offset 0x02A0) */ @@ -29605,7 +30069,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RXPKTNUM (Offset 0x02B0) */ @@ -29645,7 +30110,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FW_MSG1 (Offset 0x02E0) */ @@ -29703,7 +30168,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_CTRL (Offset 0x0300) */ @@ -29721,7 +30187,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_CTRL (Offset 0x0300) */ @@ -29768,7 +30235,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_CTRL (Offset 0x0300) */ @@ -29821,7 +30289,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_CTRL (Offset 0x0300) */ @@ -29853,7 +30322,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_CTRL (Offset 0x0300) */ @@ -29871,7 +30341,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_CTRL (Offset 0x0300) */ @@ -29964,7 +30435,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_INT_MIG (Offset 0x0304) */ @@ -30042,7 +30513,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_INT_MIG (Offset 0x0304) */ @@ -30102,7 +30573,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_INT_MIG (Offset 0x0304) */ @@ -30148,7 +30619,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BCNQ_TXBD_DESA (Offset 0x0308) */ @@ -30177,7 +30649,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MGQ_TXBD_DESA (Offset 0x0310) */ @@ -30242,7 +30715,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VIQ_TXBD_DESA (Offset 0x0320) */ @@ -30294,7 +30768,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BEQ_TXBD_DESA (Offset 0x0328) */ @@ -30346,7 +30821,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BKQ_TXBD_DESA (Offset 0x0330) */ @@ -30398,7 +30874,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RXQ_RXBD_DESA (Offset 0x0338) */ @@ -30450,7 +30927,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI0Q_TXBD_DESA (Offset 0x0340) */ @@ -30503,7 +30981,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI1Q_TXBD_DESA (Offset 0x0348) */ @@ -30556,7 +31035,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI2Q_TXBD_DESA (Offset 0x0350) */ @@ -30607,7 +31087,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI3Q_TXBD_DESA (Offset 0x0358) */ @@ -30730,7 +31211,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI4Q_TXBD_DESA (Offset 0x0360) */ @@ -30827,7 +31309,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI7Q_TXBD_DESA (Offset 0x0378) */ @@ -30896,7 +31379,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MGQ_TXBD_NUM (Offset 0x0380) */ @@ -30915,7 +31399,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MGQ_TXBD_NUM (Offset 0x0380) */ @@ -30961,7 +31446,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RX_RXBD_NUM (Offset 0x0382) */ @@ -30980,7 +31466,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RX_RXBD_NUM (Offset 0x0382) */ @@ -31031,7 +31518,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VOQ_TXBD_NUM (Offset 0x0384) */ @@ -31058,7 +31546,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VOQ_TXBD_NUM (Offset 0x0384) */ @@ -31096,7 +31585,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VOQ_TXBD_NUM (Offset 0x0384) */ @@ -31132,7 +31622,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VIQ_TXBD_NUM (Offset 0x0386) */ @@ -31151,7 +31642,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VIQ_TXBD_NUM (Offset 0x0386) */ @@ -31213,7 +31705,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BEQ_TXBD_NUM (Offset 0x0388) */ @@ -31240,7 +31733,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BEQ_TXBD_NUM (Offset 0x0388) */ @@ -31278,7 +31772,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BEQ_TXBD_NUM (Offset 0x0388) */ @@ -31314,7 +31809,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BKQ_TXBD_NUM (Offset 0x038A) */ @@ -31333,7 +31829,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BKQ_TXBD_NUM (Offset 0x038A) */ @@ -31396,7 +31893,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI0Q_TXBD_NUM (Offset 0x038C) */ @@ -31415,7 +31913,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI0Q_TXBD_NUM (Offset 0x038C) */ @@ -31454,7 +31953,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI0Q_TXBD_NUM (Offset 0x038C) */ @@ -31492,7 +31992,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI1Q_TXBD_NUM (Offset 0x038E) */ @@ -31558,7 +32059,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI2Q_TXBD_NUM (Offset 0x0390) */ @@ -31577,7 +32079,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI2Q_TXBD_NUM (Offset 0x0390) */ @@ -31616,7 +32119,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI2Q_TXBD_NUM (Offset 0x0390) */ @@ -31654,7 +32158,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI3Q_TXBD_NUM (Offset 0x0392) */ @@ -31720,7 +32225,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI4Q_TXBD_NUM (Offset 0x0394) */ @@ -31739,7 +32245,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI4Q_TXBD_NUM (Offset 0x0394) */ @@ -31778,7 +32285,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI4Q_TXBD_NUM (Offset 0x0394) */ @@ -31816,7 +32324,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI5Q_TXBD_NUM (Offset 0x0396) */ @@ -31899,7 +32408,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI6Q_TXBD_NUM (Offset 0x0398) */ @@ -31920,7 +32430,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI6Q_TXBD_NUM (Offset 0x0398) */ @@ -31972,7 +32483,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI6Q_TXBD_NUM (Offset 0x0398) */ @@ -32012,7 +32524,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI7Q_TXBD_NUM (Offset 0x039A) */ @@ -32065,7 +32578,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32085,7 +32599,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32105,7 +32620,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32126,7 +32642,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32147,7 +32664,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32167,7 +32685,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32188,7 +32707,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TSFTIMER_HCI (Offset 0x039C) */ @@ -32205,7 +32724,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32242,7 +32762,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32263,7 +32784,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32284,7 +32806,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32304,7 +32827,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32324,7 +32848,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32344,7 +32869,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32372,7 +32898,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32393,7 +32920,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32413,7 +32941,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32441,7 +32970,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32463,7 +32993,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32484,7 +33015,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32505,7 +33037,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TSFTIMER_HCI (Offset 0x039C) */ @@ -32522,7 +33054,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BD_RWPTR_CLR (Offset 0x039C) */ @@ -32543,7 +33076,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VOQ_TXBD_IDX (Offset 0x03A0) */ @@ -32578,7 +33112,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VOQ_TXBD_IDX (Offset 0x03A0) */ @@ -32615,7 +33150,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VIQ_TXBD_IDX (Offset 0x03A4) */ @@ -32650,7 +33186,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_VIQ_TXBD_IDX (Offset 0x03A4) */ @@ -32687,7 +33224,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BEQ_TXBD_IDX (Offset 0x03A8) */ @@ -32722,7 +33260,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BEQ_TXBD_IDX (Offset 0x03A8) */ @@ -32759,7 +33298,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BKQ_TXBD_IDX (Offset 0x03AC) */ @@ -32794,7 +33334,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BKQ_TXBD_IDX (Offset 0x03AC) */ @@ -32831,7 +33372,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MGQ_TXBD_IDX (Offset 0x03B0) */ @@ -32866,7 +33408,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MGQ_TXBD_IDX (Offset 0x03B0) */ @@ -32904,7 +33447,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RXQ_RXBD_IDX (Offset 0x03B4) */ @@ -32939,7 +33483,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RXQ_RXBD_IDX (Offset 0x03B4) */ @@ -32977,7 +33522,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI0Q_TXBD_IDX (Offset 0x03B8) */ @@ -33014,7 +33560,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI0Q_TXBD_IDX (Offset 0x03B8) */ @@ -33052,7 +33599,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI1Q_TXBD_IDX (Offset 0x03BC) */ @@ -33089,7 +33637,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI1Q_TXBD_IDX (Offset 0x03BC) */ @@ -33127,7 +33676,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI2Q_TXBD_IDX (Offset 0x03C0) */ @@ -33164,7 +33714,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI2Q_TXBD_IDX (Offset 0x03C0) */ @@ -33202,7 +33753,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI3Q_TXBD_IDX (Offset 0x03C4) */ @@ -33239,7 +33791,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI3Q_TXBD_IDX (Offset 0x03C4) */ @@ -33277,7 +33830,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI4Q_TXBD_IDX (Offset 0x03C8) */ @@ -33314,7 +33868,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI4Q_TXBD_IDX (Offset 0x03C8) */ @@ -33352,7 +33907,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI5Q_TXBD_IDX (Offset 0x03CC) */ @@ -33389,7 +33945,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI5Q_TXBD_IDX (Offset 0x03CC) */ @@ -33427,7 +33984,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI6Q_TXBD_IDX (Offset 0x03D0) */ @@ -33464,7 +34022,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI6Q_TXBD_IDX (Offset 0x03D0) */ @@ -33502,7 +34061,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI7Q_TXBD_IDX (Offset 0x03D4) */ @@ -33539,7 +34099,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HI7Q_TXBD_IDX (Offset 0x03D4) */ @@ -33621,7 +34182,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DBG_SEL_V1 (Offset 0x03D8) */ @@ -33637,7 +34199,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_PCIE_HRPWM1_V1 (Offset 0x03D9) */ @@ -33668,7 +34231,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_PCIE_HCPWM1_V1 (Offset 0x03DA) */ @@ -33699,7 +34263,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_CTRL2 (Offset 0x03DB) */ @@ -33735,7 +34299,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_CTRL2 (Offset 0x03DB) */ @@ -33752,7 +34316,7 @@ #endif #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_CTRL2 (Offset 0x03DB) */ @@ -33782,7 +34346,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PCIE_HRPWM2_V1 (Offset 0x03DC) */ @@ -33816,7 +34380,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_PCIE_HCPWM2_V1 (Offset 0x03DE) */ @@ -33852,7 +34417,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PCIE_H2C_MSG_V1 (Offset 0x03E0) */ @@ -33882,7 +34447,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PCIE_C2H_MSG_V1 (Offset 0x03E4) */ @@ -33920,7 +34485,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DBI_WDATA_V1 (Offset 0x03E8) */ @@ -33965,7 +34531,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_STUCK_FLAG_V1 (Offset 0x03F0) */ @@ -34031,7 +34598,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_MIX_CFG (Offset 0x03F8) */ @@ -34076,7 +34643,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_MIX_CFG (Offset 0x03F8) */ @@ -34106,7 +34673,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ @@ -34168,7 +34735,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ @@ -34184,7 +34752,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ @@ -34205,7 +34774,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ @@ -34233,7 +34802,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ @@ -34274,7 +34844,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ @@ -34292,44 +34862,10 @@ #define BIT_SET_MSI_TIMEOUT_ID_V1(x, v) \ (BIT_CLEAR_MSI_TIMEOUT_ID_V1(x) | BIT_MSI_TIMEOUT_ID_V1(v)) -#endif - -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - -#define BIT_SHIFT_RXDMA_ERR_CNT 8 -#define BIT_MASK_RXDMA_ERR_CNT 0xff -#define BIT_RXDMA_ERR_CNT(x) \ - (((x) & BIT_MASK_RXDMA_ERR_CNT) << BIT_SHIFT_RXDMA_ERR_CNT) -#define BITS_RXDMA_ERR_CNT (BIT_MASK_RXDMA_ERR_CNT << BIT_SHIFT_RXDMA_ERR_CNT) -#define BIT_CLEAR_RXDMA_ERR_CNT(x) ((x) & (~BITS_RXDMA_ERR_CNT)) -#define BIT_GET_RXDMA_ERR_CNT(x) \ - (((x) >> BIT_SHIFT_RXDMA_ERR_CNT) & BIT_MASK_RXDMA_ERR_CNT) -#define BIT_SET_RXDMA_ERR_CNT(x, v) \ - (BIT_CLEAR_RXDMA_ERR_CNT(x) | BIT_RXDMA_ERR_CNT(v)) - -#endif - -#if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ - HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - #define BIT_RADDR_RD BIT(7) #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - -#define BIT_TXDMA_ERR_HANDLE_REQ BIT(7) - -#endif - #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT) @@ -34340,15 +34876,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - -#define BIT_TXDMA_ERROR_PS BIT(6) - -#endif - -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ @@ -34366,91 +34894,41 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - -#define BIT_EN_TXDMA_STUCK_ERR_HANDLE BIT(5) - -#endif - #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ #define BIT_L0S_LINK_OFF BIT(4) - -#endif - -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - -#define BIT_EN_TXDMA_RTN_ERR_HANDLE BIT(4) - -#endif - -#if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ - HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - #define BIT_ACT_LINK_OFF BIT(3) #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - -#define BIT_RXDMA_ERR_HANDLE_REQ BIT(3) - -#endif - #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ #define BIT_EN_SLOW_MAC_TX BIT(2) - -#endif - -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - -#define BIT_RXDMA_ERROR_PS BIT(2) - -#endif - -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) - -/* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ - #define BIT_EN_SLOW_MAC_RX BIT(1) #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HCI_MIX_CFG (Offset 0x03FC) */ -#define BIT_EN_RXDMA_STUCK_ERR_HANDLE BIT(1) #define BIT_EN_SLOW_MAC_HW BIT(0) -#define BIT_EN_RXDMA_RTN_ERR_HANDLE BIT(0) #endif #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_Q0_INFO (Offset 0x0400) */ @@ -34487,7 +34965,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_Q0_INFO (Offset 0x0400) */ @@ -34520,7 +34999,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q0_INFO (Offset 0x0400) */ @@ -34598,7 +35077,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q0_INFO (Offset 0x0400) */ @@ -34660,7 +35139,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q0_INFO (Offset 0x0400) */ @@ -34725,7 +35204,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_Q1_INFO (Offset 0x0404) */ @@ -34756,7 +35236,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q1_INFO (Offset 0x0404) */ @@ -34784,7 +35264,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q1_INFO (Offset 0x0404) */ @@ -34832,7 +35312,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q1_INFO (Offset 0x0404) */ @@ -34866,7 +35346,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_Q2_INFO (Offset 0x0408) */ @@ -34897,7 +35378,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q2_INFO (Offset 0x0408) */ @@ -34925,7 +35406,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q2_INFO (Offset 0x0408) */ @@ -34973,7 +35454,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q2_INFO (Offset 0x0408) */ @@ -35007,7 +35488,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_Q3_INFO (Offset 0x040C) */ @@ -35038,7 +35520,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q3_INFO (Offset 0x040C) */ @@ -35066,7 +35548,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q3_INFO (Offset 0x040C) */ @@ -35114,7 +35596,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q3_INFO (Offset 0x040C) */ @@ -35157,7 +35639,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MGQ_INFO (Offset 0x0410) */ @@ -35186,7 +35669,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MGQ_INFO (Offset 0x0410) */ @@ -35214,7 +35698,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_INFO (Offset 0x0410) */ @@ -35269,7 +35753,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_INFO (Offset 0x0410) */ @@ -35343,7 +35827,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_INFO (Offset 0x0410) */ @@ -35363,7 +35847,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIQ_INFO (Offset 0x0414) */ @@ -35398,7 +35883,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIQ_INFO (Offset 0x0414) */ @@ -35418,7 +35904,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIQ_INFO (Offset 0x0414) */ @@ -35480,7 +35966,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIQ_INFO (Offset 0x0414) */ @@ -35560,7 +36046,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIQ_INFO (Offset 0x0414) */ @@ -35644,7 +36130,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCNQ_INFO (Offset 0x0418) */ @@ -35684,7 +36170,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXPKT_EMPTY (Offset 0x041A) */ @@ -35706,7 +36193,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CPU_MGQ_INFO (Offset 0x041C) */ @@ -35725,7 +36213,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_CPU_MGQ_INFO (Offset 0x041C) */ @@ -35744,7 +36233,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_CPU_MGQ_INFO (Offset 0x041C) */ @@ -35806,7 +36296,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CPU_MGQ_INFO (Offset 0x041C) */ @@ -35851,7 +36342,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CPU_MGQ_INFO (Offset 0x041C) */ @@ -35891,7 +36383,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -35902,7 +36394,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -35914,7 +36407,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -35931,7 +36424,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -35940,7 +36434,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -35948,7 +36442,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -35971,7 +36466,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -36000,7 +36496,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -36015,7 +36511,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -36032,7 +36528,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -36057,7 +36553,8 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FWHW_TXQ_CTRL (Offset 0x0420) */ @@ -36094,7 +36591,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DATAFB_SEL (Offset 0x0423) */ @@ -36127,7 +36624,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DATAFB_SEL (Offset 0x0423) */ @@ -36146,7 +36643,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DATAFB_SEL (Offset 0x0423) */ @@ -36220,7 +36717,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCNQ_BDNY_V1 (Offset 0x0424) */ @@ -36271,7 +36769,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LIFETIME_EN (Offset 0x0426) */ @@ -36288,7 +36786,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_LIFETIME_EN (Offset 0x0426) */ @@ -36307,7 +36806,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_LIFETIME_EN (Offset 0x0426) */ @@ -36319,7 +36818,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_LIFETIME_EN (Offset 0x0426) */ @@ -36351,7 +36850,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SPEC_SIFS (Offset 0x0428) */ @@ -36402,7 +36901,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36421,7 +36920,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36440,7 +36939,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36459,7 +36958,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36478,7 +36977,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36505,7 +37004,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36524,7 +37023,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36543,7 +37042,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36577,7 +37076,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36595,7 +37094,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36606,7 +37105,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36633,7 +37132,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36652,7 +37151,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36671,7 +37170,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXBF_CTRL (Offset 0x042C) */ @@ -36743,7 +37242,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DARFRC (Offset 0x0430) */ @@ -36794,7 +37293,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DARFRC (Offset 0x0430) */ @@ -36845,7 +37344,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DARFRC (Offset 0x0430) */ @@ -36896,7 +37395,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DARFRC (Offset 0x0430) */ @@ -36962,7 +37461,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DARFRCH (Offset 0x0434) */ @@ -36996,7 +37496,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DARFRCH (Offset 0x0434) */ @@ -37030,7 +37531,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DARFRCH (Offset 0x0434) */ @@ -37064,7 +37566,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DARFRCH (Offset 0x0434) */ @@ -37125,7 +37628,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RARFRC (Offset 0x0438) */ @@ -37164,7 +37667,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RARFRCH (Offset 0x043C) */ @@ -37227,7 +37731,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RRSR (Offset 0x0440) */ @@ -37255,7 +37759,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RRSR (Offset 0x0440) */ @@ -37298,7 +37802,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ARFR0 (Offset 0x0444) */ @@ -37429,7 +37934,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ARFR1_V1 (Offset 0x044C) */ @@ -37548,9 +38053,9 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) -/* 2 REG_ARFRH1 (Offset 0x0450) */ +/* 2 REG_ARFRH1_V1 (Offset 0x0450) */ #define BIT_SHIFT_ARFRH1 0 #define BIT_MASK_ARFRH1 0xffffffffL @@ -37584,7 +38089,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CCK_CHECK (Offset 0x0454) */ @@ -37595,7 +38100,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_CCK_CHECK (Offset 0x0454) */ @@ -37615,7 +38121,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CCK_CHECK (Offset 0x0454) */ @@ -37627,7 +38133,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_CCK_CHECK (Offset 0x0454) */ @@ -37653,7 +38160,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CCK_CHECK (Offset 0x0454) */ @@ -37663,7 +38170,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CCK_CHECK (Offset 0x0454) */ @@ -37676,7 +38184,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_AMPDU_MAX_TIME_V1 (Offset 0x0455) */ @@ -37719,7 +38227,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCNQ1_BDNY_V1 (Offset 0x0456) */ @@ -37822,7 +38331,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_AMPDU_MAX_LENGTH_HT (Offset 0x0458) */ @@ -37843,7 +38353,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_ACQ_STOP (Offset 0x045C) */ @@ -37879,7 +38390,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NDPA_RATE (Offset 0x045D) */ @@ -37897,7 +38408,8 @@ #endif -#if (HALMAC_8192F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8192F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TX_HANG_CTRL (Offset 0x045E) */ @@ -37925,7 +38437,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TX_HANG_CTRL (Offset 0x045E) */ @@ -37937,7 +38449,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TX_HANG_CTRL (Offset 0x045E) */ @@ -37948,7 +38460,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NDPA_OPT_CTRL (Offset 0x045F) */ @@ -37967,7 +38479,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NDPA_OPT_CTRL (Offset 0x045F) */ @@ -38001,7 +38513,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NDPA_OPT_CTRL (Offset 0x045F) */ @@ -38012,7 +38524,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_NDPA_OPT_CTRL (Offset 0x045F) */ @@ -38117,7 +38629,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_AMPDU_MAX_LENGTH_VHT (Offset 0x0460) */ @@ -38179,7 +38691,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RD_RESP_PKT_TH (Offset 0x0463) */ @@ -38198,7 +38710,8 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CMDQ_INFO (Offset 0x0464) */ @@ -38249,7 +38762,8 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CMDQ_INFO (Offset 0x0464) */ @@ -38269,7 +38783,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CMDQ_INFO (Offset 0x0464) */ @@ -38375,7 +38889,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CMDQ_INFO (Offset 0x0464) */ @@ -38416,7 +38930,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_Q4_INFO (Offset 0x0468) */ @@ -38447,7 +38962,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q4_INFO (Offset 0x0468) */ @@ -38497,7 +39012,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q4_INFO (Offset 0x0468) */ @@ -38569,7 +39084,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q4_INFO (Offset 0x0468) */ @@ -38589,7 +39104,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_Q5_INFO (Offset 0x046C) */ @@ -38620,7 +39136,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q5_INFO (Offset 0x046C) */ @@ -38648,7 +39164,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q5_INFO (Offset 0x046C) */ @@ -38696,7 +39212,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q5_INFO (Offset 0x046C) */ @@ -38716,7 +39232,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_Q6_INFO (Offset 0x0470) */ @@ -38747,7 +39264,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q6_INFO (Offset 0x0470) */ @@ -38775,7 +39292,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q6_INFO (Offset 0x0470) */ @@ -38823,7 +39340,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q6_INFO (Offset 0x0470) */ @@ -38843,7 +39360,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_Q7_INFO (Offset 0x0474) */ @@ -38874,7 +39392,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q7_INFO (Offset 0x0474) */ @@ -38902,7 +39420,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q7_INFO (Offset 0x0474) */ @@ -38950,7 +39468,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q7_INFO (Offset 0x0474) */ @@ -38971,7 +39489,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_LBK_BUF_HD_V1 (Offset 0x0478) */ @@ -39024,7 +39542,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXRPT_CTRL (Offset 0x047C) */ @@ -39062,7 +39580,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXRPT_CTRL (Offset 0x047C) */ @@ -39099,7 +39617,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXRPT_CTRL (Offset 0x047C) */ @@ -39137,7 +39655,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXRPT_CTRL (Offset 0x047C) */ @@ -39159,7 +39677,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_INIRTS_RATE_SEL (Offset 0x0480) */ @@ -39216,7 +39734,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MACID_SLEEP3 (Offset 0x0484) */ @@ -39323,7 +39841,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MACID_SLEEP1 (Offset 0x0488) */ @@ -39358,7 +39877,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ARFR2 (Offset 0x048C) */ @@ -39370,7 +39889,7 @@ #define BIT_GET_ARFRL2(x) (((x) >> BIT_SHIFT_ARFRL2) & BIT_MASK_ARFRL2) #define BIT_SET_ARFRL2(x, v) (BIT_CLEAR_ARFRL2(x) | BIT_ARFRL2(v)) -/* 2 REG_ARFRH2 (Offset 0x0490) */ +/* 2 REG_ARFRH2_V1 (Offset 0x0490) */ #define BIT_SHIFT_ARFRH2 0 #define BIT_MASK_ARFRH2 0xffffffffL @@ -39399,7 +39918,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ARFR3_V1 (Offset 0x0494) */ @@ -39440,7 +39959,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ARFR4 (Offset 0x049C) */ @@ -39481,7 +40000,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ARFR5 (Offset 0x04A4) */ @@ -39595,7 +40114,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXRPT_START_OFFSET (Offset 0x04AC) */ @@ -39633,7 +40153,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXRPT_START_OFFSET (Offset 0x04AC) */ @@ -39685,7 +40205,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXRPT_START_OFFSET (Offset 0x04AC) */ @@ -39755,7 +40276,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXRPT_START_OFFSET (Offset 0x04AC) */ @@ -39815,7 +40337,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXRPT_START_OFFSET (Offset 0x04AC) */ @@ -39853,38 +40376,10 @@ #endif -#if (HALMAC_8812F_SUPPORT) - -/* 2 REG_RRSR_CTS (Offset 0x04B0) */ - -#define BIT_SHIFT_RRCTSSR_RSC 21 -#define BIT_MASK_RRCTSSR_RSC 0x3 -#define BIT_RRCTSSR_RSC(x) \ - (((x) & BIT_MASK_RRCTSSR_RSC) << BIT_SHIFT_RRCTSSR_RSC) -#define BITS_RRCTSSR_RSC (BIT_MASK_RRCTSSR_RSC << BIT_SHIFT_RRCTSSR_RSC) -#define BIT_CLEAR_RRCTSSR_RSC(x) ((x) & (~BITS_RRCTSSR_RSC)) -#define BIT_GET_RRCTSSR_RSC(x) \ - (((x) >> BIT_SHIFT_RRCTSSR_RSC) & BIT_MASK_RRCTSSR_RSC) -#define BIT_SET_RRCTSSR_RSC(x, v) \ - (BIT_CLEAR_RRCTSSR_RSC(x) | BIT_RRCTSSR_RSC(v)) - -#define BIT_SHIFT_RRCTSSC_BITMAP 0 -#define BIT_MASK_RRCTSSC_BITMAP 0xfffff -#define BIT_RRCTSSC_BITMAP(x) \ - (((x) & BIT_MASK_RRCTSSC_BITMAP) << BIT_SHIFT_RRCTSSC_BITMAP) -#define BITS_RRCTSSC_BITMAP \ - (BIT_MASK_RRCTSSC_BITMAP << BIT_SHIFT_RRCTSSC_BITMAP) -#define BIT_CLEAR_RRCTSSC_BITMAP(x) ((x) & (~BITS_RRCTSSC_BITMAP)) -#define BIT_GET_RRCTSSC_BITMAP(x) \ - (((x) >> BIT_SHIFT_RRCTSSC_BITMAP) & BIT_MASK_RRCTSSC_BITMAP) -#define BIT_SET_RRCTSSC_BITMAP(x, v) \ - (BIT_CLEAR_RRCTSSC_BITMAP(x) | BIT_RRCTSSC_BITMAP(v)) - -#endif - #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_POWER_STAGE1 (Offset 0x04B4) */ @@ -39903,7 +40398,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_POWER_STAGE1 (Offset 0x04B4) */ @@ -39947,7 +40442,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_POWER_STAGE2 (Offset 0x04B8) */ @@ -39958,7 +40453,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_POWER_STAGE2 (Offset 0x04B8) */ @@ -39991,7 +40486,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SW_AMPDU_BURST_MODE_CTRL (Offset 0x04BC) */ @@ -40011,7 +40507,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SW_AMPDU_BURST_MODE_CTRL (Offset 0x04BC) */ @@ -40030,7 +40526,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SW_AMPDU_BURST_MODE_CTRL (Offset 0x04BC) */ @@ -40049,7 +40545,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SW_AMPDU_BURST_MODE_CTRL (Offset 0x04BC) */ @@ -40068,7 +40564,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SW_AMPDU_BURST_MODE_CTRL (Offset 0x04BC) */ @@ -40087,7 +40583,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SW_AMPDU_BURST_MODE_CTRL (Offset 0x04BC) */ @@ -40132,7 +40628,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SW_AMPDU_BURST_MODE_CTRL (Offset 0x04BC) */ @@ -40144,7 +40641,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SW_AMPDU_BURST_MODE_CTRL (Offset 0x04BC) */ @@ -40238,7 +40735,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_QUEUE_CTRL (Offset 0x04C6) */ @@ -40256,7 +40753,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_QUEUE_CTRL (Offset 0x04C6) */ @@ -40268,7 +40766,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_QUEUE_CTRL (Offset 0x04C6) */ @@ -40288,7 +40786,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_QUEUE_CTRL (Offset 0x04C6) */ @@ -40302,7 +40800,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SINGLE_AMPDU_CTRL (Offset 0x04C7) */ @@ -40328,7 +40826,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PROT_MODE_CTRL (Offset 0x04C8) */ @@ -40419,7 +40917,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RA_TRY_RATE_AGG_LMT (Offset 0x04CF) */ @@ -40473,7 +40971,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MACID_SLEEP2 (Offset 0x04D0) */ @@ -40512,7 +41011,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MACID_SLEEP (Offset 0x04D4) */ @@ -40581,7 +41080,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HW_SEQ0 (Offset 0x04D8) */ @@ -40642,7 +41141,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HW_SEQ3 (Offset 0x04DE) */ @@ -40662,7 +41161,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HW_SEQ3 (Offset 0x04DE) */ @@ -40732,7 +41231,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NULL_PKT_STATUS_V1 (Offset 0x04E0) */ @@ -40753,7 +41252,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_NULL_PKT_STATUS (Offset 0x04E0) */ @@ -40810,7 +41310,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PTCL_ERR_STATUS_V1 (Offset 0x04E2) */ @@ -40821,7 +41321,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PTCL_ERR_STATUS (Offset 0x04E2) */ @@ -40839,7 +41339,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PTCL_ERR_STATUS_V1 (Offset 0x04E2) */ @@ -40850,7 +41350,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PTCL_ERR_STATUS (Offset 0x04E2) */ @@ -40869,7 +41369,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PTCL_ERR_STATUS (Offset 0x04E2) */ @@ -40888,7 +41388,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PTCL_ERR_STATUS (Offset 0x04E2) */ @@ -40907,7 +41407,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PTCL_ERR_STATUS (Offset 0x04E2) */ @@ -40926,7 +41426,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PTCL_ERR_STATUS (Offset 0x04E2) */ @@ -40945,7 +41445,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PTCL_ERR_STATUS (Offset 0x04E2) */ @@ -40963,7 +41463,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NULL_PKT_STATUS_EXTEND (Offset 0x04E3) */ @@ -40996,7 +41496,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NULL_PKT_STATUS_EXTEND (Offset 0x04E3) */ @@ -41043,9 +41543,9 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) -/* 2 REG_NULL_PKT_STATUS_V2 (Offset 0x04E4) */ +/* 2 REG_HQMGQ_DROP (Offset 0x04E4) */ #define BIT_HIQ_DROP BIT(7) @@ -41060,9 +41560,9 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) -/* 2 REG_NULL_PKT_STATUS_V2 (Offset 0x04E4) */ +/* 2 REG_HQMGQ_DROP (Offset 0x04E4) */ #define BIT_MGQ_DROP BIT(6) @@ -41155,7 +41655,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PRECNT_CTRL (Offset 0x04E5) */ @@ -41188,7 +41688,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_POLLUTE_PKT_CNT (Offset 0x04E8) */ @@ -41224,7 +41724,8 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PTCL_DBG_V1 (Offset 0x04EC) */ @@ -41302,7 +41803,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPUMGQ_TIMER_CTRL2 (Offset 0x04F4) */ @@ -41341,7 +41842,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPUMGQ_TIMER_CTRL2 (Offset 0x04F4) */ @@ -41447,7 +41948,7 @@ #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MOREDATA (Offset 0x04FE) */ @@ -41466,7 +41967,7 @@ #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MOREDATA (Offset 0x04FE) */ @@ -41478,7 +41979,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_EDCA_VO_PARAM (Offset 0x0500) */ @@ -41603,7 +42104,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TSFTR_SYN_OFFSET (Offset 0x0518) */ @@ -41625,7 +42127,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_AGGR_BREAK_TIME (Offset 0x051A) */ @@ -41667,7 +42169,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_NOA_ON_ERLY_TIME (Offset 0x051C) */ @@ -41700,7 +42203,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_NOA_OFF_ERLY_TIME (Offset 0x051D) */ @@ -41768,7 +42272,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TX_PTCL_CTRL (Offset 0x0520) */ @@ -41797,7 +42301,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TX_PTCL_CTRL (Offset 0x0520) */ @@ -41809,7 +42314,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TX_PTCL_CTRL (Offset 0x0520) */ @@ -41823,7 +42328,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TXPAUSE (Offset 0x0522) */ @@ -41843,7 +42349,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXPAUSE (Offset 0x0522) */ @@ -41874,7 +42380,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DIS_TXREQ_CLR (Offset 0x0523) */ @@ -41895,7 +42401,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RD_CTRL (Offset 0x0524) */ @@ -41923,7 +42429,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RD_CTRL (Offset 0x0524) */ @@ -41936,7 +42442,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RD_CTRL (Offset 0x0524) */ @@ -41948,7 +42455,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RD_CTRL (Offset 0x0524) */ @@ -41966,7 +42473,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MBSSID_CTRL (Offset 0x0526) */ @@ -41984,7 +42492,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_P2PPS_CTRL (Offset 0x0527) */ @@ -42003,7 +42512,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_P2PPS_CTRL (Offset 0x0527) */ @@ -42023,7 +42533,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_P2PPS_CTRL (Offset 0x0527) */ @@ -42043,7 +42554,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PKT_LIFETIME_CTRL (Offset 0x0528) */ @@ -42063,7 +42574,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PKT_LIFETIME_CTRL (Offset 0x0528) */ @@ -42074,7 +42585,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_PKT_LIFETIME_CTRL (Offset 0x0528) */ @@ -42086,7 +42598,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PKT_LIFETIME_CTRL (Offset 0x0528) */ @@ -42131,7 +42643,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXOP_LIMIT_CTRL (Offset 0x052C) */ @@ -42211,7 +42723,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXOP_LIMIT_CTRL (Offset 0x052C) */ @@ -42231,7 +42743,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PON_DIS_TXTIME (Offset 0x0531) */ @@ -42257,7 +42770,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CCA_TXEN_CNT (Offset 0x0534) */ @@ -42274,7 +42787,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CCA_TXEN_CNT (Offset 0x0534) */ @@ -42290,7 +42804,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CCA_TXEN_CNT (Offset 0x0534) */ @@ -42327,7 +42842,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CCA_TXEN_CNT (Offset 0x0534) */ @@ -42363,7 +42879,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAX_INTER_COLLISION (Offset 0x0538) */ @@ -42402,7 +42919,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAX_INTER_COLLISION (Offset 0x0538) */ @@ -42441,7 +42959,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAX_INTER_COLLISION (Offset 0x0538) */ @@ -42480,7 +42999,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAX_INTER_COLLISION (Offset 0x0538) */ @@ -42510,7 +43030,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAX_INTER_COLLISION_CNT (Offset 0x053C) */ @@ -42536,7 +43057,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAX_INTER_COLLISION_CNT (Offset 0x053C) */ @@ -42595,7 +43117,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAX_INTER_COLLISION_CNT (Offset 0x053C) */ @@ -42655,7 +43178,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAX_INTER_COLLISION_CNT (Offset 0x053C) */ @@ -42697,7 +43221,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAX_INTER_COLLISION_CNT (Offset 0x053C) */ @@ -42723,7 +43248,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TBTT_PROHIBIT (Offset 0x0540) */ @@ -42765,7 +43291,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_P2PPS_STATE (Offset 0x0543) */ @@ -42825,7 +43351,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FTM_PTT (Offset 0x0548) */ @@ -42861,7 +43388,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FTM_PTT (Offset 0x0548) */ @@ -42896,7 +43424,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FTM_PTT (Offset 0x0548) */ @@ -42929,7 +43458,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FTM_PTT (Offset 0x0548) */ @@ -42964,7 +43494,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FTM_TSF (Offset 0x054C) */ @@ -42997,7 +43528,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FTM_TSF (Offset 0x054C) */ @@ -43014,7 +43546,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL (Offset 0x0550) */ @@ -43025,7 +43557,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BCN_CTRL (Offset 0x0550) */ @@ -43044,7 +43577,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL (Offset 0x0550) */ @@ -43066,7 +43599,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT0 (Offset 0x0551) */ @@ -43084,7 +43618,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT0 (Offset 0x0551) */ @@ -43102,7 +43637,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT0 (Offset 0x0551) */ @@ -43120,7 +43656,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT0 (Offset 0x0551) */ @@ -43146,7 +43682,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT0 (Offset 0x0551) */ @@ -43176,7 +43713,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MBID_NUM (Offset 0x0552) */ @@ -43187,7 +43725,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MBID_NUM (Offset 0x0552) */ @@ -43215,7 +43753,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DUAL_TSF_RST (Offset 0x0553) */ @@ -43233,7 +43772,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DUAL_TSF_RST (Offset 0x0553) */ @@ -43251,7 +43791,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DUAL_TSF_RST (Offset 0x0553) */ @@ -43269,7 +43810,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DUAL_TSF_RST (Offset 0x0553) */ @@ -43287,7 +43829,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DUAL_TSF_RST (Offset 0x0553) */ @@ -43298,7 +43841,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_DUAL_TSF_RST (Offset 0x0553) */ @@ -43308,7 +43852,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBSSID_BCN_SPACE (Offset 0x0554) */ @@ -43343,7 +43888,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBSSID_BCN_SPACE (Offset 0x0554) */ @@ -43364,7 +43910,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MBSSID_BCN_SPACE (Offset 0x0554) */ @@ -43395,7 +43942,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ATIMWND (Offset 0x055A) */ @@ -43413,7 +43961,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_USTIME_TSF (Offset 0x055C) */ @@ -43505,7 +44053,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSFTR (Offset 0x0560) */ @@ -43540,7 +44088,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSFTR_1 (Offset 0x0564) */ @@ -43608,7 +44156,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FREERUN_CNT (Offset 0x0568) */ @@ -43644,7 +44192,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FREERUN_CNT_1 (Offset 0x056C) */ @@ -43695,7 +44243,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ATIMWND1_V1 (Offset 0x0570) */ @@ -43714,7 +44262,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TBTT_PROHIBIT_INFRA (Offset 0x0571) */ @@ -43736,7 +44285,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BCNIVLCUNT (Offset 0x0573) */ @@ -43784,7 +44333,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXCMD_TIMEOUT_PERIOD (Offset 0x0576) */ @@ -43823,7 +44372,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MISC_CTRL (Offset 0x0577) */ @@ -43840,7 +44389,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MISC_CTRL (Offset 0x0577) */ @@ -43850,7 +44399,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MISC_CTRL (Offset 0x0577) */ @@ -43873,7 +44423,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MISC_CTRL (Offset 0x0577) */ @@ -43919,7 +44469,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT1 (Offset 0x0578) */ @@ -43931,7 +44482,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT1 (Offset 0x0578) */ @@ -43949,7 +44500,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT1 (Offset 0x0578) */ @@ -43976,7 +44528,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT1 (Offset 0x0578) */ @@ -43992,7 +44545,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT2 (Offset 0x0579) */ @@ -44010,7 +44563,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT2 (Offset 0x0579) */ @@ -44027,7 +44581,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT3 (Offset 0x057A) */ @@ -44045,7 +44599,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_CTRL_CLINT3 (Offset 0x057A) */ @@ -44056,7 +44611,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_EXTEND_CTRL (Offset 0x057B) */ @@ -44075,7 +44630,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS1_SPEC_STATE (Offset 0x057C) */ @@ -44086,7 +44642,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS1_SPEC_STATE (Offset 0x057C) */ @@ -44096,7 +44652,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS1_SPEC_STATE (Offset 0x057C) */ @@ -44107,7 +44664,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS1_SPEC_STATE (Offset 0x057C) */ @@ -44138,7 +44695,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS1_SPEC_STATE (Offset 0x057C) */ @@ -44159,7 +44716,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS2_SPEC_STATE (Offset 0x057E) */ @@ -44170,7 +44728,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS2_SPEC_STATE (Offset 0x057E) */ @@ -44180,7 +44738,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS2_SPEC_STATE (Offset 0x057E) */ @@ -44191,7 +44750,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS2_SPEC_STATE (Offset 0x057E) */ @@ -44231,7 +44790,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PS_TIMER0 (Offset 0x0580) */ @@ -44266,7 +44825,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PS_TIMER1 (Offset 0x0584) */ @@ -44315,7 +44874,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PS_TIMER2 (Offset 0x0588) */ @@ -44336,7 +44895,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TBTT_CTN_AREA (Offset 0x058C) */ @@ -44393,7 +44952,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXOP_MIN (Offset 0x0590) */ @@ -44410,7 +44970,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXOP_MIN (Offset 0x0590) */ @@ -44437,7 +44998,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TXOP_MIN (Offset 0x0590) */ @@ -44503,7 +45064,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CROSS_TXOP_CTRL (Offset 0x0593) */ @@ -44514,7 +45075,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_CROSS_TXOP_CTRL (Offset 0x0593) */ @@ -44526,7 +45088,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CROSS_TXOP_CTRL (Offset 0x0593) */ @@ -44706,7 +45268,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_TBTT_SHIFT_V1 (Offset 0x0598) */ @@ -44779,7 +45341,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_ATIMWND2 (Offset 0x05A0) */ @@ -44814,7 +45376,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_ATIMWND3 (Offset 0x05A1) */ @@ -44849,7 +45411,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_ATIMWND4 (Offset 0x05A2) */ @@ -44884,7 +45446,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_ATIMWND5 (Offset 0x05A3) */ @@ -44919,7 +45481,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_ATIMWND6 (Offset 0x05A4) */ @@ -44954,7 +45516,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_ATIMWND7 (Offset 0x05A5) */ @@ -45029,7 +45591,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_HIQ_NO_LMT_EN (Offset 0x05A7) */ @@ -45046,7 +45608,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_HIQ_NO_LMT_EN (Offset 0x05A7) */ @@ -45101,7 +45664,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DTIM_COUNTER_ROOT (Offset 0x05A8) */ @@ -45141,7 +45704,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DTIM_COUNTER_VAP1 (Offset 0x05A9) */ @@ -45250,7 +45813,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DIS_ATIM (Offset 0x05B0) */ @@ -45267,7 +45830,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_DIS_ATIM (Offset 0x05B0) */ @@ -45295,7 +45858,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_EARLY_128US (Offset 0x05B1) */ @@ -45323,7 +45887,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS1_CTRL (Offset 0x05B2) */ @@ -45341,7 +45906,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS1_CTRL (Offset 0x05B2) */ @@ -45359,7 +45925,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS1_CTRL (Offset 0x05B2) */ @@ -45397,7 +45964,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS2_CTRL (Offset 0x05B3) */ @@ -45424,7 +45992,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS2_CTRL (Offset 0x05B3) */ @@ -45442,7 +46010,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS2_CTRL (Offset 0x05B3) */ @@ -45460,7 +46029,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS2_CTRL (Offset 0x05B3) */ @@ -45501,7 +46071,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TIMER0_SRC_SEL (Offset 0x05B4) */ @@ -45568,7 +46139,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_P2POFF_DIS_TXTIME (Offset 0x05B7) */ @@ -45588,7 +46159,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MBSSID_BCN_SPACE2 (Offset 0x05B8) */ @@ -45647,7 +46219,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_ACMHWCTRL (Offset 0x05C0) */ @@ -45733,7 +46305,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BE_ADMTIME (Offset 0x05C8) */ @@ -45769,7 +46341,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAC_HEADER_NAV_OFFSET (Offset 0x05CA) */ @@ -45789,7 +46362,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DIS_NDPA_NAV_CHECK (Offset 0x05CB) */ @@ -45797,7 +46370,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DIS_NDPA_NAV_CHECK (Offset 0x05CB) */ @@ -45809,7 +46383,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_EDCA_RANDOM_GEN (Offset 0x05CC) */ @@ -45860,7 +46434,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TXCMD_NOA_SEL (Offset 0x05CF) */ @@ -45883,7 +46458,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_32K_CLK_SEL (Offset 0x05D0) */ @@ -45926,7 +46501,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_32K_CLK_SEL (Offset 0x05D0) */ @@ -46034,7 +46609,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_EARLYINT_ADJUST (Offset 0x05D4) */ @@ -46159,7 +46734,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NOA_PARAM (Offset 0x05E0) */ @@ -46239,7 +46814,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_NOA_PARAM_3 (Offset 0x05EC) */ @@ -46303,7 +46879,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2P_RST (Offset 0x05F0) */ @@ -46334,7 +46911,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SCHEDULER_RST (Offset 0x05F1) */ @@ -46351,7 +46928,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SCHEDULER_RST (Offset 0x05F1) */ @@ -46362,7 +46939,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SCHEDULER_RST (Offset 0x05F1) */ @@ -46380,7 +46957,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SCHEDULER_RST (Offset 0x05F1) */ @@ -46391,7 +46968,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SCHEDULER_RST (Offset 0x05F1) */ @@ -46452,7 +47029,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SCH_DBG_VALUE (Offset 0x05F4) */ @@ -46473,7 +47051,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SCH_TXCMD (Offset 0x05F8) */ @@ -46564,7 +47142,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_CR (Offset 0x0600) */ @@ -46574,7 +47152,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_FWPKT_CR (Offset 0x0601) */ @@ -46592,7 +47170,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_FWPKT_CR (Offset 0x0601) */ @@ -46610,7 +47188,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_FWPKT_CR (Offset 0x0601) */ @@ -46634,7 +47213,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46657,7 +47236,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46675,7 +47254,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46693,7 +47273,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46711,7 +47291,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46719,7 +47299,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46728,7 +47309,8 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46752,7 +47334,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46763,7 +47345,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46793,7 +47375,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46805,7 +47387,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46829,7 +47411,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46840,7 +47422,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46852,7 +47435,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46878,7 +47461,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46889,7 +47473,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46909,7 +47494,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46921,7 +47506,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46933,7 +47518,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46950,7 +47535,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TCR (Offset 0x0604) */ @@ -46970,7 +47556,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -46985,7 +47571,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -46997,7 +47583,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47008,7 +47594,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47028,7 +47615,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47040,7 +47627,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47051,7 +47638,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47070,7 +47657,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47089,7 +47676,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47109,7 +47696,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47120,7 +47707,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47152,7 +47740,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47177,7 +47766,8 @@ #endif #if (HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47195,7 +47785,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47206,7 +47796,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47226,7 +47816,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47238,7 +47828,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47258,7 +47849,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RCR (Offset 0x0608) */ @@ -47321,7 +47912,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_DRVINFO_SZ (Offset 0x060F) */ @@ -47341,7 +47932,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RX_DRVINFO_SZ (Offset 0x060F) */ @@ -47381,7 +47973,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RX_DRVINFO_SZ (Offset 0x060F) */ @@ -47415,7 +48008,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MACID (Offset 0x0610) */ @@ -47444,7 +48038,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MACID_H (Offset 0x0614) */ @@ -47485,7 +48079,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BSSID (Offset 0x0618) */ @@ -47530,7 +48125,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MAR (Offset 0x0620) */ @@ -47559,7 +48155,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MAR_H (Offset 0x0624) */ @@ -47576,7 +48172,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_MBIDCAMCFG_1 (Offset 0x0628) */ @@ -47619,7 +48216,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MBIDCAMCFG_2 (Offset 0x062C) */ @@ -47721,7 +48318,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_TCR_TSFT_OFS (Offset 0x0630) */ @@ -47740,7 +48337,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_UDF_THSD (Offset 0x0632) */ @@ -47806,7 +48403,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_UDF_THSD (Offset 0x0632) */ @@ -47839,7 +48436,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ZLD_NUM (Offset 0x0633) */ @@ -47880,7 +48477,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_STMP_THSD (Offset 0x0634) */ @@ -47930,7 +48527,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_USTIME_EDCA (Offset 0x0638) */ @@ -47980,7 +48577,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ACKTO_CCK (Offset 0x0639) */ @@ -47998,7 +48596,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_MAC_SPEC_SIFS (Offset 0x063A) */ @@ -48030,7 +48628,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RESP_SIFS_CCK (Offset 0x063C) */ @@ -48067,7 +48665,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RESP_SIFS_CCK (Offset 0x063C) */ @@ -48104,7 +48702,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RESP_SIFS_OFDM (Offset 0x063E) */ @@ -48141,7 +48739,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RESP_SIFS_OFDM (Offset 0x063E) */ @@ -48179,7 +48777,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_ACKTO (Offset 0x0640) */ @@ -48214,7 +48812,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RPFM_MAP0 (Offset 0x0644) */ @@ -48251,7 +48849,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RPFM_MAP0 (Offset 0x0644) */ @@ -48260,7 +48858,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RPFM_MAP1_V1 (Offset 0x0646) */ @@ -48297,7 +48895,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RPFM_MAP1_V1 (Offset 0x0646) */ @@ -48306,7 +48904,7 @@ #endif #if (HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RPFM_CAM_CMD (Offset 0x0648) */ @@ -48324,7 +48922,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RPFM_CAM_CMD (Offset 0x0648) */ @@ -48333,7 +48931,7 @@ #endif #if (HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RPFM_CAM_CMD (Offset 0x0648) */ @@ -48367,7 +48965,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_NAV_CTRL (Offset 0x0650) */ @@ -48407,7 +49005,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_BACAMCMD (Offset 0x0654) */ @@ -48419,7 +49018,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BACAMCMD (Offset 0x0654) */ @@ -48430,7 +49029,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BACAMCMD (Offset 0x0654) */ @@ -48462,7 +49061,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BACAMCMD (Offset 0x0654) */ @@ -48506,7 +49105,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_BACAM_RPMEN (Offset 0x0661) */ @@ -48516,7 +49116,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_TX_RX (Offset 0x0662) */ @@ -48559,7 +49160,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48600,7 +49202,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48611,7 +49213,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48620,7 +49223,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48642,7 +49245,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48661,7 +49264,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48673,7 +49276,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48701,7 +49304,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48717,7 +49321,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48737,7 +49341,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RXERR_RPT (Offset 0x0664) */ @@ -48805,7 +49410,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48837,7 +49442,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48848,7 +49454,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48859,7 +49465,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48870,7 +49477,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48881,7 +49488,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48892,7 +49500,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48934,7 +49542,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48951,7 +49559,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48976,7 +49584,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -48987,7 +49595,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -49028,7 +49636,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -49047,7 +49655,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -49074,7 +49682,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL (Offset 0x0668) */ @@ -49092,7 +49700,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_TRXPTCL_CTL_H (Offset 0x066C) */ @@ -49113,7 +49722,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_CAMCMD (Offset 0x0670) */ @@ -49136,7 +49746,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CAMCMD (Offset 0x0670) */ @@ -49164,7 +49774,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CAMCMD (Offset 0x0670) */ @@ -49221,7 +49831,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CAMWRITE (Offset 0x0674) */ @@ -49272,7 +49882,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CAMDBG (Offset 0x067C) */ @@ -49299,7 +49909,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CAMDBG (Offset 0x067C) */ @@ -49326,7 +49936,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CAMDBG (Offset 0x067C) */ @@ -49377,7 +49987,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_CAMDBG (Offset 0x067C) */ @@ -49462,7 +50072,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SECCFG (Offset 0x0680) */ @@ -49474,7 +50084,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SECCFG (Offset 0x0680) */ @@ -49492,7 +50103,8 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SECCFG (Offset 0x0680) */ @@ -49504,7 +50116,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_SECCFG (Offset 0x0680) */ @@ -49522,7 +50134,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RXFILTER_CATEGORY_1 (Offset 0x0682) */ @@ -49688,7 +50301,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WOW_CTRL (Offset 0x0690) */ @@ -49709,7 +50322,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WOW_CTRL (Offset 0x0690) */ @@ -49728,7 +50342,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WOW_CTRL (Offset 0x0690) */ @@ -49739,7 +50353,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WOW_CTRL (Offset 0x0690) */ @@ -49751,7 +50366,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WOW_CTRL (Offset 0x0690) */ @@ -49770,7 +50385,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WOW_CTRL (Offset 0x0690) */ @@ -49780,7 +50395,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NAN_RX_TSF_FILTER (Offset 0x0691) */ @@ -49810,7 +50425,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PS_RX_INFO (Offset 0x0692) */ @@ -49820,7 +50435,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PS_RX_INFO (Offset 0x0692) */ @@ -49842,7 +50457,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PS_RX_INFO (Offset 0x0692) */ @@ -49854,7 +50469,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PS_RX_INFO (Offset 0x0692) */ @@ -49878,7 +50493,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_PS_RX_INFO (Offset 0x0692) */ @@ -49888,7 +50503,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PS_RX_INFO (Offset 0x0692) */ @@ -49900,7 +50515,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_WMMPS_UAPSD_TID (Offset 0x0693) */ @@ -50015,7 +50630,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WKFMCAM_CMD (Offset 0x0698) */ @@ -50026,7 +50641,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WKFMCAM_CMD (Offset 0x0698) */ @@ -50036,7 +50652,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WKFMCAM_CMD (Offset 0x0698) */ @@ -50073,7 +50689,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WKFMCAM_CMD (Offset 0x0698) */ @@ -50110,7 +50726,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WKFMCAM_RWD (Offset 0x069C) */ @@ -50131,7 +50748,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BCN_PSR_RPT (Offset 0x06A8) */ @@ -50162,7 +50779,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_FLC_RPC (Offset 0x06AC) */ @@ -50208,7 +50825,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXPKTMON_CTRL (Offset 0x06B0) */ @@ -50288,7 +50905,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_STATE_MON (Offset 0x06B4) */ @@ -50338,7 +50955,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_STATE_MON (Offset 0x06B4) */ @@ -50390,7 +51007,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ERROR_MON (Offset 0x06B8) */ @@ -50420,7 +51038,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_BT_COEX_TABLE (Offset 0x06C0) */ @@ -50462,7 +51080,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BT_COEX_TABLE_H (Offset 0x06CC) */ @@ -50480,7 +51099,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXCMD_0 (Offset 0x06D0) */ @@ -50540,7 +51159,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXCMD_1 (Offset 0x06D4) */ @@ -50593,7 +51212,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXCMD_1 (Offset 0x06D4) */ @@ -50633,7 +51252,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_RESP_TXINFO (Offset 0x06D8) */ @@ -50667,7 +51287,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_RESP_TXINFO (Offset 0x06D8) */ @@ -50702,7 +51323,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_RESP_TXINFO (Offset 0x06D8) */ @@ -50739,7 +51361,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_RESP_TXINFO (Offset 0x06D8) */ @@ -50793,7 +51416,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_RESP_TXINFO (Offset 0x06D8) */ @@ -50887,7 +51511,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BBPSF_CTRL (Offset 0x06DC) */ @@ -50897,7 +51521,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BBPSF_CTRL (Offset 0x06DC) */ @@ -50963,7 +51588,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BBPSF_CTRL (Offset 0x06DC) */ @@ -50986,7 +51611,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BBPSF_CTRL (Offset 0x06DC) */ @@ -51005,7 +51630,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BBPSF_CTRL (Offset 0x06DC) */ @@ -51022,7 +51648,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BBPSF_CTRL (Offset 0x06DC) */ @@ -51038,7 +51664,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BBPSF_CTRL (Offset 0x06DC) */ @@ -51047,7 +51674,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BBPSF_CTRL (Offset 0x06DC) */ @@ -51124,7 +51751,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_P2P_RX_BCN_NOA (Offset 0x06E0) */ @@ -51142,7 +51770,8 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2P_RX_BCN_NOA (Offset 0x06E0) */ @@ -51162,7 +51791,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_P2P_RX_BCN_NOA (Offset 0x06E0) */ @@ -51225,7 +51855,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ASSOCIATED_BFMER0_INFO (Offset 0x06E4) */ @@ -51272,7 +51903,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ASSOCIATED_BFMER0_INFO_H (Offset 0x06E8) */ @@ -51344,7 +51975,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ASSOCIATED_BFMER1_INFO (Offset 0x06EC) */ @@ -51391,7 +52022,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ASSOCIATED_BFMER1_INFO_H (Offset 0x06F0) */ @@ -51548,7 +52179,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CSI_PTR (Offset 0x06FC) */ @@ -51605,7 +52237,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CSI_PTR (Offset 0x06FC) */ @@ -51672,7 +52305,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MACID1 (Offset 0x0700) */ @@ -51746,7 +52380,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BSSID1_1 (Offset 0x070C) */ @@ -51839,7 +52474,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCN_PSR_RPT1 (Offset 0x0710) */ @@ -51867,7 +52502,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BCN_PSR_RPT1 (Offset 0x0710) */ @@ -51878,7 +52514,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCN_PSR_RPT1 (Offset 0x0710) */ @@ -51936,7 +52572,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -51956,7 +52592,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -51972,7 +52609,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -51989,7 +52627,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -52017,7 +52655,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -52037,7 +52675,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -52062,7 +52701,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -52122,7 +52761,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -52187,7 +52827,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -52207,7 +52847,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -52226,7 +52866,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SND_PTCL_CTRL (Offset 0x0718) */ @@ -52325,7 +52965,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_CSI_RPT_INFO (Offset 0x071C) */ @@ -52380,7 +53020,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NS_ARP_CTRL (Offset 0x0720) */ @@ -52428,7 +53068,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NS_ARP_INFO (Offset 0x0724) */ @@ -52516,7 +53156,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BEAMFORMING_INFO_NSARP_V1 (Offset 0x0728) */ @@ -52531,7 +53171,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BEAMFORMING_INFO_NSARP (Offset 0x072C) */ @@ -52557,7 +53198,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BEAMFORMING_INFO_NSARP (Offset 0x072C) */ @@ -52611,7 +53253,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BEAMFORMING_INFO_NSARP (Offset 0x072C) */ @@ -52646,7 +53289,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BEAMFORMING_INFO_NSARP (Offset 0x072C) */ @@ -52677,7 +53321,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BEAMFORMING_INFO_NSARP (Offset 0x072C) */ @@ -52708,7 +53353,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BEAMFORMING_INFO_NSARP (Offset 0x072C) */ @@ -52744,7 +53390,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BEAMFORMING_INFO_NSARP (Offset 0x072C) */ @@ -52762,7 +53408,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_IPV6 (Offset 0x0730) */ @@ -52833,7 +53479,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_RTX_CTX_SUBTYPE_CFG (Offset 0x0750) */ @@ -52854,7 +53500,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_RTX_CTX_SUBTYPE_CFG (Offset 0x0750) */ @@ -52872,7 +53518,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_SWAES_DIO_B63_B32 (Offset 0x0754) */ @@ -52941,7 +53588,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_COEX_V2 (Offset 0x0762) */ @@ -52961,7 +53608,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_COEX (Offset 0x0764) */ @@ -53009,7 +53656,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLAN_ACT_MASK_CTRL (Offset 0x0768) */ @@ -53036,7 +53683,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLAN_ACT_MASK_CTRL_1 (Offset 0x076C) */ @@ -53050,7 +53697,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WLAN_ACT_MASK_CTRL_1 (Offset 0x076C) */ @@ -53061,7 +53708,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_COEX_ENHANCED_INTR_CTRL (Offset 0x076E) */ @@ -53141,7 +53788,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_ACT_STATISTICS (Offset 0x0770) */ @@ -53172,7 +53819,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_ACT_STATISTICS_1 (Offset 0x0774) */ @@ -53210,7 +53857,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_STATISTICS_CONTROL_REGISTER (Offset 0x0778) */ @@ -53260,7 +53907,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_STATUS_REPORT_REGISTER (Offset 0x077C) */ @@ -53309,7 +53956,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_INTERRUPT_CONTROL_REGISTER (Offset 0x0780) */ @@ -53365,7 +54012,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BT_ISOLATION_TABLE_REGISTER_REGISTER (Offset 0x0785) */ @@ -53404,7 +54052,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_ISOLATION_TABLE_REGISTER_REGISTER (Offset 0x0785) */ @@ -53421,7 +54069,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BT_ISOLATION_TABLE_REGISTER_REGISTER_1 (Offset 0x0788) */ @@ -53456,7 +54105,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_INTERRUPT_STATUS_REGISTER (Offset 0x078F) */ @@ -53513,7 +54162,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BT_ACT_REGISTER (Offset 0x0794) */ @@ -53548,7 +54197,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_BT_ACT_REGISTER (Offset 0x0794) */ @@ -53565,7 +54215,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_OBFF_CTRL_BASIC (Offset 0x0798) */ @@ -53906,7 +54556,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANTENNA_TRAINING_CONTROL_REGISTER (Offset 0x07B0) */ @@ -53958,7 +54608,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_PKTCNT_RWD (Offset 0x07B8) */ @@ -54002,7 +54653,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_PKTCNT_CTRL (Offset 0x07BC) */ @@ -54021,7 +54673,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_PKTCNT_CTRL (Offset 0x07BC) */ @@ -54048,7 +54701,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) /* 2 REG_WMAC_PKTCNT_CTRL (Offset 0x07BC) */ @@ -54172,7 +54826,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_IQ_DUMP (Offset 0x07C0) */ @@ -54207,7 +54861,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_IQ_DUMP (Offset 0x07C0) */ @@ -54218,7 +54872,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_IQ_DUMP (Offset 0x07C0) */ @@ -54286,7 +54940,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_IQ_DUMP (Offset 0x07C0) */ @@ -54313,7 +54967,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_IQ_DUMP_1 (Offset 0x07C4) */ @@ -54352,7 +55006,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_IQ_DUMP_2 (Offset 0x07C8) */ @@ -54395,7 +55049,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_FTM_CTL (Offset 0x07CC) */ @@ -54414,7 +55069,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_FTM_CTL (Offset 0x07CC) */ @@ -54432,7 +55088,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_FTM_CTL (Offset 0x07CC) */ @@ -54442,7 +55098,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_FTM_CTL (Offset 0x07CC) */ @@ -54524,7 +55181,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_OPTION_FUNCTION_1 (Offset 0x07D4) */ @@ -54565,7 +55222,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_OPTION_FUNCTION_1 (Offset 0x07D4) */ @@ -54582,7 +55239,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_OPTION_FUNCTION_1 (Offset 0x07D4) */ @@ -54599,7 +55256,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_OPTION_FUNCTION_1 (Offset 0x07D4) */ @@ -54616,7 +55273,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_OPTION_FUNCTION_1 (Offset 0x07D4) */ @@ -54641,7 +55298,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_OPTION_FUNCTION_1 (Offset 0x07D4) */ @@ -54658,7 +55315,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_OPTION_FUNCTION_1 (Offset 0x07D4) */ @@ -54675,7 +55332,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_OPTION_FUNCTION_2 (Offset 0x07D8) */ @@ -54702,7 +55359,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_FILTER_FUNCTION (Offset 0x07DA) */ @@ -54712,7 +55369,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_FILTER_FUNCTION (Offset 0x07DA) */ @@ -54729,7 +55386,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RX_FILTER_FUNCTION (Offset 0x07DA) */ @@ -54739,7 +55397,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_FILTER_FUNCTION (Offset 0x07DA) */ @@ -54756,7 +55414,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_RX_FILTER_FUNCTION (Offset 0x07DA) */ @@ -54766,7 +55425,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_FILTER_FUNCTION (Offset 0x07DA) */ @@ -54787,7 +55446,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_NDP_SIG (Offset 0x07E0) */ @@ -54826,7 +55485,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXCMD_INFO_FOR_RSP_PKT (Offset 0x07E4) */ @@ -54856,7 +55515,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXCMD_INFO_FOR_RSP_PKT_1 (Offset 0x07E8) */ @@ -54874,7 +55533,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WSEC_OPTION (Offset 0x07EC) */ @@ -54893,7 +55553,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WSEC_OPTION (Offset 0x07EC) */ @@ -54910,7 +55571,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WSEC_OPTION (Offset 0x07EC) */ @@ -54929,7 +55591,8 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WSEC_OPTION (Offset 0x07EC) */ @@ -55063,6 +55726,14 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_OCP_L1_PWM BIT(31) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55071,6 +55742,14 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_POWOCP_L1 BIT(30) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55127,6 +55806,21 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_SHIFT_SAW_FREQ_L 26 +#define BIT_MASK_SAW_FREQ_L 0xf +#define BIT_SAW_FREQ_L(x) (((x) & BIT_MASK_SAW_FREQ_L) << BIT_SHIFT_SAW_FREQ_L) +#define BITS_SAW_FREQ_L (BIT_MASK_SAW_FREQ_L << BIT_SHIFT_SAW_FREQ_L) +#define BIT_CLEAR_SAW_FREQ_L(x) ((x) & (~BITS_SAW_FREQ_L)) +#define BIT_GET_SAW_FREQ_L(x) \ + (((x) >> BIT_SHIFT_SAW_FREQ_L) & BIT_MASK_SAW_FREQ_L) +#define BIT_SET_SAW_FREQ_L(x, v) (BIT_CLEAR_SAW_FREQ_L(x) | BIT_SAW_FREQ_L(v)) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55155,6 +55849,20 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_SHIFT_R3_L1 24 +#define BIT_MASK_R3_L1 0x3 +#define BIT_R3_L1(x) (((x) & BIT_MASK_R3_L1) << BIT_SHIFT_R3_L1) +#define BITS_R3_L1 (BIT_MASK_R3_L1 << BIT_SHIFT_R3_L1) +#define BIT_CLEAR_R3_L1(x) ((x) & (~BITS_R3_L1)) +#define BIT_GET_R3_L1(x) (((x) >> BIT_SHIFT_R3_L1) & BIT_MASK_R3_L1) +#define BIT_SET_R3_L1(x, v) (BIT_CLEAR_R3_L1(x) | BIT_R3_L1(v)) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55183,6 +55891,20 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_SHIFT_R2_L1 22 +#define BIT_MASK_R2_L1 0x3 +#define BIT_R2_L1(x) (((x) & BIT_MASK_R2_L1) << BIT_SHIFT_R2_L1) +#define BITS_R2_L1 (BIT_MASK_R2_L1 << BIT_SHIFT_R2_L1) +#define BIT_CLEAR_R2_L1(x) ((x) & (~BITS_R2_L1)) +#define BIT_GET_R2_L1(x) (((x) >> BIT_SHIFT_R2_L1) & BIT_MASK_R2_L1) +#define BIT_SET_R2_L1(x, v) (BIT_CLEAR_R2_L1(x) | BIT_R2_L1(v)) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55211,6 +55933,20 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_SHIFT_R1_L1 20 +#define BIT_MASK_R1_L1 0x3 +#define BIT_R1_L1(x) (((x) & BIT_MASK_R1_L1) << BIT_SHIFT_R1_L1) +#define BITS_R1_L1 (BIT_MASK_R1_L1 << BIT_SHIFT_R1_L1) +#define BIT_CLEAR_R1_L1(x) ((x) & (~BITS_R1_L1)) +#define BIT_GET_R1_L1(x) (((x) >> BIT_SHIFT_R1_L1) & BIT_MASK_R1_L1) +#define BIT_SET_R1_L1(x, v) (BIT_CLEAR_R1_L1(x) | BIT_R1_L1(v)) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55239,6 +55975,20 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_SHIFT_C3_L1 18 +#define BIT_MASK_C3_L1 0x3 +#define BIT_C3_L1(x) (((x) & BIT_MASK_C3_L1) << BIT_SHIFT_C3_L1) +#define BITS_C3_L1 (BIT_MASK_C3_L1 << BIT_SHIFT_C3_L1) +#define BIT_CLEAR_C3_L1(x) ((x) & (~BITS_C3_L1)) +#define BIT_GET_C3_L1(x) (((x) >> BIT_SHIFT_C3_L1) & BIT_MASK_C3_L1) +#define BIT_SET_C3_L1(x, v) (BIT_CLEAR_C3_L1(x) | BIT_C3_L1(v)) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55267,6 +56017,20 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_SHIFT_C2_L1 16 +#define BIT_MASK_C2_L1 0x3 +#define BIT_C2_L1(x) (((x) & BIT_MASK_C2_L1) << BIT_SHIFT_C2_L1) +#define BITS_C2_L1 (BIT_MASK_C2_L1 << BIT_SHIFT_C2_L1) +#define BIT_CLEAR_C2_L1(x) ((x) & (~BITS_C2_L1)) +#define BIT_GET_C2_L1(x) (((x) >> BIT_SHIFT_C2_L1) & BIT_MASK_C2_L1) +#define BIT_SET_C2_L1(x, v) (BIT_CLEAR_C2_L1(x) | BIT_C2_L1(v)) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55295,16 +56059,39 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_SHIFT_C1_L1 14 +#define BIT_MASK_C1_L1 0x3 +#define BIT_C1_L1(x) (((x) & BIT_MASK_C1_L1) << BIT_SHIFT_C1_L1) +#define BITS_C1_L1 (BIT_MASK_C1_L1 << BIT_SHIFT_C1_L1) +#define BIT_CLEAR_C1_L1(x) ((x) & (~BITS_C1_L1)) +#define BIT_GET_C1_L1(x) (((x) >> BIT_SHIFT_C1_L1) & BIT_MASK_C1_L1) +#define BIT_SET_C1_L1(x, v) (BIT_CLEAR_C1_L1(x) | BIT_C1_L1(v)) + +#define BIT_REG_NMOS_OFF_L BIT(13) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ -#define BIT_REG_TYPE_L_V2 BIT(13) #define BIT_REG_PWM_L BIT(12) #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ + +#define BIT_FPWM_L1 BIT(12) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55335,7 +56122,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARSW_MAC_0 (Offset 0x1010) */ @@ -55431,6 +56218,27 @@ #define BIT_GET_OCP_L_PFM(x) (((x) >> BIT_SHIFT_OCP_L_PFM) & BIT_MASK_OCP_L_PFM) #define BIT_SET_OCP_L_PFM(x, v) (BIT_CLEAR_OCP_L_PFM(x) | BIT_OCP_L_PFM(v)) +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_SHIFT_OCP_L1_PFM 29 +#define BIT_MASK_OCP_L1_PFM 0x7 +#define BIT_OCP_L1_PFM(x) (((x) & BIT_MASK_OCP_L1_PFM) << BIT_SHIFT_OCP_L1_PFM) +#define BITS_OCP_L1_PFM (BIT_MASK_OCP_L1_PFM << BIT_SHIFT_OCP_L1_PFM) +#define BIT_CLEAR_OCP_L1_PFM(x) ((x) & (~BITS_OCP_L1_PFM)) +#define BIT_GET_OCP_L1_PFM(x) \ + (((x) >> BIT_SHIFT_OCP_L1_PFM) & BIT_MASK_OCP_L1_PFM) +#define BIT_SET_OCP_L1_PFM(x, v) (BIT_CLEAR_OCP_L1_PFM(x) | BIT_OCP_L1_PFM(v)) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + #define BIT_SHIFT_CFC_L_PFM 27 #define BIT_MASK_CFC_L_PFM 0x3 #define BIT_CFC_L_PFM(x) (((x) & BIT_MASK_CFC_L_PFM) << BIT_SHIFT_CFC_L_PFM) @@ -55456,6 +56264,12 @@ #define BIT_SET_REG_FREQ_L_V1(x, v) \ (BIT_CLEAR_REG_FREQ_L_V1(x) | BIT_REG_FREQ_L_V1(v)) +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + #define BIT_EN_DUTY BIT(19) #endif @@ -55502,6 +56316,14 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_REG_OSC200K_EN BIT(16) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ @@ -55518,11 +56340,34 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_POW_AUTO_L BIT(15) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ #define BIT_REG_LDOF_L_V2 BIT(14) + +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_REG_VOFB_SEL BIT(14) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + #define BIT_REG_OCPS_L_V2 BIT(13) #endif @@ -55532,6 +56377,21 @@ /* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ #define BIT_VO15_V1P05_H BIT(12) + +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_DUMMY BIT(12) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + #define BIT_ARENB_L_V2 BIT(11) #endif @@ -55544,7 +56404,15 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_ARENB_H BIT(11) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ @@ -55611,6 +56479,21 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_SHIFT_PRE_DRIVER 7 +#define BIT_MASK_PRE_DRIVER 0x3 +#define BIT_PRE_DRIVER(x) (((x) & BIT_MASK_PRE_DRIVER) << BIT_SHIFT_PRE_DRIVER) +#define BITS_PRE_DRIVER (BIT_MASK_PRE_DRIVER << BIT_SHIFT_PRE_DRIVER) +#define BIT_CLEAR_PRE_DRIVER(x) ((x) & (~BITS_PRE_DRIVER)) +#define BIT_GET_PRE_DRIVER(x) \ + (((x) >> BIT_SHIFT_PRE_DRIVER) & BIT_MASK_PRE_DRIVER) +#define BIT_SET_PRE_DRIVER(x, v) (BIT_CLEAR_PRE_DRIVER(x) | BIT_PRE_DRIVER(v)) + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) /* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ @@ -55619,7 +56502,15 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_EN_ON_END_L BIT(6) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ @@ -55635,7 +56526,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ @@ -55643,7 +56535,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ @@ -55665,6 +56557,20 @@ #define BIT_REG_HALF_L BIT(2) +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_REG_MOS_HALF_L BIT(2) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + #define BIT_SHIFT_OCP_L_V2 0 #define BIT_MASK_OCP_L_V2 0x3 #define BIT_OCP_L_V2(x) (((x) & BIT_MASK_OCP_L_V2) << BIT_SHIFT_OCP_L_V2) @@ -55687,6 +56593,27 @@ #define BIT_GET_OCP_L_2_1(x) (((x) >> BIT_SHIFT_OCP_L_2_1) & BIT_MASK_OCP_L_2_1) #define BIT_SET_OCP_L_2_1(x, v) (BIT_CLEAR_OCP_L_2_1(x) | BIT_OCP_L_2_1(v)) +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_1 (Offset 0x1014) */ + +#define BIT_SHIFT_OCP_L1_PWM_V1 0 +#define BIT_MASK_OCP_L1_PWM_V1 0x3 +#define BIT_OCP_L1_PWM_V1(x) \ + (((x) & BIT_MASK_OCP_L1_PWM_V1) << BIT_SHIFT_OCP_L1_PWM_V1) +#define BITS_OCP_L1_PWM_V1 (BIT_MASK_OCP_L1_PWM_V1 << BIT_SHIFT_OCP_L1_PWM_V1) +#define BIT_CLEAR_OCP_L1_PWM_V1(x) ((x) & (~BITS_OCP_L1_PWM_V1)) +#define BIT_GET_OCP_L1_PWM_V1(x) \ + (((x) >> BIT_SHIFT_OCP_L1_PWM_V1) & BIT_MASK_OCP_L1_PWM_V1) +#define BIT_SET_OCP_L1_PWM_V1(x, v) \ + (BIT_CLEAR_OCP_L1_PWM_V1(x) | BIT_OCP_L1_PWM_V1(v)) + +#endif + +#if (HALMAC_8814B_SUPPORT) + /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ #define BIT_SHIFT_LPF_C2_1_0 30 @@ -55700,7 +56627,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55715,7 +56642,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55725,7 +56653,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55758,7 +56686,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55791,7 +56719,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55835,7 +56763,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55881,7 +56809,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55907,7 +56835,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55915,7 +56844,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55959,7 +56888,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -55982,7 +56911,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_0 (Offset 0x1018) */ @@ -56000,7 +56930,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56036,7 +56966,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56052,7 +56982,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56068,7 +56998,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56084,7 +57014,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56111,7 +57041,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56139,7 +57069,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56172,7 +57102,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56205,7 +57135,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56250,7 +57180,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_1 (Offset 0x101C) */ @@ -56298,7 +57228,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56323,7 +57253,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56339,7 +57269,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56355,7 +57285,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56383,7 +57313,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56408,7 +57338,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56424,7 +57354,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56440,7 +57370,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56456,7 +57386,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56496,7 +57426,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56521,7 +57451,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56537,7 +57467,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56553,7 +57483,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_MAC_2 (Offset 0x1020) */ @@ -56622,6 +57552,21 @@ #define BIT_LS_PYPASS_PI BIT(9) #define BIT_MBIASE BIT(4) +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPAR_MAC_3 (Offset 0x1024) */ + +#define BIT_REG_VC_TH BIT(3) +#define BIT_REG_VC_TL BIT(2) +#define BIT_REG_CK40M_EN BIT(1) +#define BIT_REG_CK640M_EN BIT(0) + +#endif + +#if (HALMAC_8814B_SUPPORT) + /* 2 REG_ANAPAR_MAC_4 (Offset 0x1028) */ #define BIT_LS_TIE_MID_MODE BIT(28) @@ -56639,10 +57584,121 @@ (BIT_CLEAR_LS_SYNC_CYCLE_1_0(x) | BIT_LS_SYNC_CYCLE_1_0(v)) #define BIT_LS_SDM_ORDER BIT(25) + +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_2 (Offset 0x1028) */ + +#define BIT_EN_XTAL_DRV_RF2_DEBUG BIT(16) + +#endif + +#if (HALMAC_8814B_SUPPORT) + +/* 2 REG_ANAPAR_MAC_4 (Offset 0x1028) */ + #define BIT_LS_RST_LC_CAL BIT(14) #define BIT_LS_RSTB BIT(13) + +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_2 (Offset 0x1028) */ + +#define BIT_SHIFT_XTAL_SRC_BT 13 +#define BIT_MASK_XTAL_SRC_BT 0x7 +#define BIT_XTAL_SRC_BT(x) \ + (((x) & BIT_MASK_XTAL_SRC_BT) << BIT_SHIFT_XTAL_SRC_BT) +#define BITS_XTAL_SRC_BT (BIT_MASK_XTAL_SRC_BT << BIT_SHIFT_XTAL_SRC_BT) +#define BIT_CLEAR_XTAL_SRC_BT(x) ((x) & (~BITS_XTAL_SRC_BT)) +#define BIT_GET_XTAL_SRC_BT(x) \ + (((x) >> BIT_SHIFT_XTAL_SRC_BT) & BIT_MASK_XTAL_SRC_BT) +#define BIT_SET_XTAL_SRC_BT(x, v) \ + (BIT_CLEAR_XTAL_SRC_BT(x) | BIT_XTAL_SRC_BT(v)) + +#endif + +#if (HALMAC_8814B_SUPPORT) + +/* 2 REG_ANAPAR_MAC_4 (Offset 0x1028) */ + #define BIT_LS_POW_LC_CAL_PREP BIT(11) +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_2 (Offset 0x1028) */ + +#define BIT_SHIFT_XTAL_SC_LPS_RO 8 +#define BIT_MASK_XTAL_SC_LPS_RO 0xff +#define BIT_XTAL_SC_LPS_RO(x) \ + (((x) & BIT_MASK_XTAL_SC_LPS_RO) << BIT_SHIFT_XTAL_SC_LPS_RO) +#define BITS_XTAL_SC_LPS_RO \ + (BIT_MASK_XTAL_SC_LPS_RO << BIT_SHIFT_XTAL_SC_LPS_RO) +#define BIT_CLEAR_XTAL_SC_LPS_RO(x) ((x) & (~BITS_XTAL_SC_LPS_RO)) +#define BIT_GET_XTAL_SC_LPS_RO(x) \ + (((x) >> BIT_SHIFT_XTAL_SC_LPS_RO) & BIT_MASK_XTAL_SC_LPS_RO) +#define BIT_SET_XTAL_SC_LPS_RO(x, v) \ + (BIT_CLEAR_XTAL_SC_LPS_RO(x) | BIT_XTAL_SC_LPS_RO(v)) + +#define BIT_XTAL_LPS_CAP_INV BIT(7) + +#define BIT_SHIFT_BG_R1_TUNE 6 +#define BIT_MASK_BG_R1_TUNE 0x7 +#define BIT_BG_R1_TUNE(x) (((x) & BIT_MASK_BG_R1_TUNE) << BIT_SHIFT_BG_R1_TUNE) +#define BITS_BG_R1_TUNE (BIT_MASK_BG_R1_TUNE << BIT_SHIFT_BG_R1_TUNE) +#define BIT_CLEAR_BG_R1_TUNE(x) ((x) & (~BITS_BG_R1_TUNE)) +#define BIT_GET_BG_R1_TUNE(x) \ + (((x) >> BIT_SHIFT_BG_R1_TUNE) & BIT_MASK_BG_R1_TUNE) +#define BIT_SET_BG_R1_TUNE(x, v) (BIT_CLEAR_BG_R1_TUNE(x) | BIT_BG_R1_TUNE(v)) + +#define BIT_XTAL_LPS_CAP_CTRL BIT(6) + +#define BIT_SHIFT_XTAL_LPS_CAP_CYC 4 +#define BIT_MASK_XTAL_LPS_CAP_CYC 0x3 +#define BIT_XTAL_LPS_CAP_CYC(x) \ + (((x) & BIT_MASK_XTAL_LPS_CAP_CYC) << BIT_SHIFT_XTAL_LPS_CAP_CYC) +#define BITS_XTAL_LPS_CAP_CYC \ + (BIT_MASK_XTAL_LPS_CAP_CYC << BIT_SHIFT_XTAL_LPS_CAP_CYC) +#define BIT_CLEAR_XTAL_LPS_CAP_CYC(x) ((x) & (~BITS_XTAL_LPS_CAP_CYC)) +#define BIT_GET_XTAL_LPS_CAP_CYC(x) \ + (((x) >> BIT_SHIFT_XTAL_LPS_CAP_CYC) & BIT_MASK_XTAL_LPS_CAP_CYC) +#define BIT_SET_XTAL_LPS_CAP_CYC(x, v) \ + (BIT_CLEAR_XTAL_LPS_CAP_CYC(x) | BIT_XTAL_LPS_CAP_CYC(v)) + +#define BIT_SHIFT_BG_R2_TUNE 3 +#define BIT_MASK_BG_R2_TUNE 0x7 +#define BIT_BG_R2_TUNE(x) (((x) & BIT_MASK_BG_R2_TUNE) << BIT_SHIFT_BG_R2_TUNE) +#define BITS_BG_R2_TUNE (BIT_MASK_BG_R2_TUNE << BIT_SHIFT_BG_R2_TUNE) +#define BIT_CLEAR_BG_R2_TUNE(x) ((x) & (~BITS_BG_R2_TUNE)) +#define BIT_GET_BG_R2_TUNE(x) \ + (((x) >> BIT_SHIFT_BG_R2_TUNE) & BIT_MASK_BG_R2_TUNE) +#define BIT_SET_BG_R2_TUNE(x, v) (BIT_CLEAR_BG_R2_TUNE(x) | BIT_BG_R2_TUNE(v)) + +#define BIT_SHIFT_XTAL_LPS_CAP_STEP 2 +#define BIT_MASK_XTAL_LPS_CAP_STEP 0x3 +#define BIT_XTAL_LPS_CAP_STEP(x) \ + (((x) & BIT_MASK_XTAL_LPS_CAP_STEP) << BIT_SHIFT_XTAL_LPS_CAP_STEP) +#define BITS_XTAL_LPS_CAP_STEP \ + (BIT_MASK_XTAL_LPS_CAP_STEP << BIT_SHIFT_XTAL_LPS_CAP_STEP) +#define BIT_CLEAR_XTAL_LPS_CAP_STEP(x) ((x) & (~BITS_XTAL_LPS_CAP_STEP)) +#define BIT_GET_XTAL_LPS_CAP_STEP(x) \ + (((x) >> BIT_SHIFT_XTAL_LPS_CAP_STEP) & BIT_MASK_XTAL_LPS_CAP_STEP) +#define BIT_SET_XTAL_LPS_CAP_STEP(x, v) \ + (BIT_CLEAR_XTAL_LPS_CAP_STEP(x) | BIT_XTAL_LPS_CAP_STEP(v)) + +#define BIT_AON_REG_CK_SEL BIT(1) + +#endif + +#if (HALMAC_8814B_SUPPORT) + +/* 2 REG_ANAPAR_MAC_4 (Offset 0x1028) */ + #define BIT_SHIFT_LCK_XTAL_DIVISOR_1_0 0 #define BIT_MASK_LCK_XTAL_DIVISOR_1_0 0x3 #define BIT_LCK_XTAL_DIVISOR_1_0(x) \ @@ -56657,6 +57713,28 @@ #define BIT_SET_LCK_XTAL_DIVISOR_1_0(x, v) \ (BIT_CLEAR_LCK_XTAL_DIVISOR_1_0(x) | BIT_LCK_XTAL_DIVISOR_1_0(v)) +#endif + +#if (HALMAC_8822E_SUPPORT) + +/* 2 REG_ANAPARSW_MAC_2 (Offset 0x1028) */ + +#define BIT_SHIFT_BG_VR1200_TUNE 0 +#define BIT_MASK_BG_VR1200_TUNE 0x7 +#define BIT_BG_VR1200_TUNE(x) \ + (((x) & BIT_MASK_BG_VR1200_TUNE) << BIT_SHIFT_BG_VR1200_TUNE) +#define BITS_BG_VR1200_TUNE \ + (BIT_MASK_BG_VR1200_TUNE << BIT_SHIFT_BG_VR1200_TUNE) +#define BIT_CLEAR_BG_VR1200_TUNE(x) ((x) & (~BITS_BG_VR1200_TUNE)) +#define BIT_GET_BG_VR1200_TUNE(x) \ + (((x) >> BIT_SHIFT_BG_VR1200_TUNE) & BIT_MASK_BG_VR1200_TUNE) +#define BIT_SET_BG_VR1200_TUNE(x, v) \ + (BIT_CLEAR_BG_VR1200_TUNE(x) | BIT_BG_VR1200_TUNE(v)) + +#endif + +#if (HALMAC_8814B_SUPPORT) + /* 2 REG_ANAPAR_MAC_5 (Offset 0x102C) */ #define BIT_SHIFT_LS_XTAL_SEL_3_0 0 @@ -56682,7 +57760,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_0 (Offset 0x1040) */ @@ -56714,7 +57792,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_0 (Offset 0x1040) */ @@ -56739,7 +57817,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_0 (Offset 0x1040) */ @@ -56772,7 +57850,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_0 (Offset 0x1040) */ @@ -56805,7 +57883,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_0 (Offset 0x1040) */ @@ -56839,7 +57917,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_0 (Offset 0x1040) */ @@ -56873,7 +57951,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -56900,7 +57978,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -56927,7 +58005,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -56965,7 +58043,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -56982,7 +58060,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57007,7 +58085,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57045,7 +58123,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57062,7 +58140,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57088,7 +58166,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57106,7 +58184,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57133,7 +58211,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57149,7 +58227,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57165,7 +58243,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57192,7 +58270,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57224,7 +58302,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_1 (Offset 0x1044) */ @@ -57250,7 +58328,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_2 (Offset 0x1048) */ @@ -57339,7 +58417,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_2 (Offset 0x1048) */ @@ -57365,7 +58443,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_2 (Offset 0x1048) */ @@ -57403,7 +58481,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_2 (Offset 0x1048) */ @@ -57419,7 +58497,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_2 (Offset 0x1048) */ @@ -57445,7 +58523,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_2 (Offset 0x1048) */ @@ -57550,7 +58628,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_AACK_0 (Offset 0x1054) */ @@ -57643,7 +58721,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_AACK_0 (Offset 0x1054) */ @@ -57668,7 +58746,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_AACK_0 (Offset 0x1054) */ @@ -57711,7 +58789,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_AACK_0 (Offset 0x1054) */ @@ -57746,7 +58824,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_AACK_0 (Offset 0x1054) */ @@ -57804,7 +58882,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_ANAPAR_XTAL_AACK_0 (Offset 0x1054) */ @@ -57913,7 +58991,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SYS_CFG5 (Offset 0x1070) */ @@ -58011,7 +59089,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CPU_DMEM_CON (Offset 0x1080) */ @@ -58020,7 +59099,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPU_DMEM_CON (Offset 0x1080) */ @@ -58031,7 +59110,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPU_DMEM_CON (Offset 0x1080) */ @@ -58041,7 +59120,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPU_DMEM_CON (Offset 0x1080) */ @@ -58059,7 +59138,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPU_DMEM_CON (Offset 0x1080) */ @@ -58078,7 +59157,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPU_DMEM_CON (Offset 0x1080) */ @@ -58087,7 +59166,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CPU_DMEM_CON (Offset 0x1080) */ @@ -58126,7 +59206,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPU_DMEM_CON (Offset 0x1080) */ @@ -58144,7 +59224,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BOOT_REASON (Offset 0x1088) */ @@ -58742,7 +59822,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR2 (Offset 0x10B0) */ @@ -58768,7 +59848,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR2 (Offset 0x10B0) */ @@ -58817,7 +59897,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58833,7 +59914,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58849,7 +59931,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58865,7 +59948,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58881,7 +59965,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58897,7 +59982,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58914,7 +60000,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58928,7 +60014,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58942,7 +60028,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58950,7 +60036,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58969,7 +60056,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58989,7 +60076,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -58997,7 +60084,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -59016,7 +60104,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -59024,7 +60112,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -59043,7 +60132,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -59056,7 +60145,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -59070,7 +60160,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HIMR3 (Offset 0x10B8) */ @@ -59084,7 +60174,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HISR3 (Offset 0x10BC) */ @@ -59117,7 +60207,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SW_MDIO (Offset 0x10C0) */ @@ -59667,7 +60757,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2C_PKT_READADDR (Offset 0x10D0) */ @@ -59707,7 +60797,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2C_PKT_WRITEADDR (Offset 0x10D4) */ @@ -59765,7 +60855,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MEM_PWR_CRTL (Offset 0x10D8) */ @@ -59784,7 +60875,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MEM_PWR_CRTL (Offset 0x10D8) */ @@ -59815,7 +60906,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MEM_PWR_CRTL (Offset 0x10D8) */ @@ -59832,7 +60923,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MEM_PWR_CRTL (Offset 0x10D8) */ @@ -59861,7 +60952,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MEM_PWR_CRTL (Offset 0x10D8) */ @@ -59896,7 +60987,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MEM_PWR_CRTL (Offset 0x10D8) */ @@ -60024,7 +61115,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FW_DBG6 (Offset 0x10F8) */ @@ -60051,7 +61142,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CR_EXT (Offset 0x1100) */ @@ -60173,7 +61264,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWFF (Offset 0x1114) */ @@ -60193,7 +61284,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FWFF (Offset 0x1114) */ @@ -60219,7 +61310,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE2IMR (Offset 0x1120) */ @@ -60229,7 +61320,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE2IMR (Offset 0x1120) */ @@ -60244,7 +61335,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE2IMR (Offset 0x1120) */ @@ -60272,7 +61363,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE2ISR (Offset 0x1124) */ @@ -60282,7 +61373,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE2ISR (Offset 0x1124) */ @@ -60297,7 +61388,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE2ISR (Offset 0x1124) */ @@ -60333,7 +61424,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3IMR (Offset 0x1128) */ @@ -60350,7 +61441,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3IMR (Offset 0x1128) */ @@ -60367,7 +61458,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3IMR (Offset 0x1128) */ @@ -60384,7 +61475,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3IMR (Offset 0x1128) */ @@ -60395,7 +61486,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3IMR (Offset 0x1128) */ @@ -60436,7 +61527,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3ISR (Offset 0x112C) */ @@ -60453,7 +61544,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3ISR (Offset 0x112C) */ @@ -60470,7 +61561,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3ISR (Offset 0x112C) */ @@ -60487,7 +61578,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3ISR (Offset 0x112C) */ @@ -60498,7 +61589,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE3ISR (Offset 0x112C) */ @@ -60539,7 +61630,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60556,7 +61647,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60573,7 +61664,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60590,7 +61681,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60607,7 +61698,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60624,7 +61715,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60641,7 +61732,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60658,7 +61749,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60675,7 +61766,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60692,7 +61783,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60709,7 +61800,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60726,7 +61817,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60743,7 +61834,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60760,7 +61851,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60777,7 +61868,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60794,7 +61885,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60811,7 +61902,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60828,7 +61919,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60853,7 +61944,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60870,7 +61961,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4IMR (Offset 0x1130) */ @@ -60887,7 +61978,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -60904,7 +61995,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -60921,7 +62012,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -60938,7 +62029,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -60955,7 +62046,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -60972,7 +62063,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -60989,7 +62080,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61006,7 +62097,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61023,7 +62114,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61040,7 +62131,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61057,7 +62148,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61074,7 +62165,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61091,7 +62182,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61108,7 +62199,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61125,7 +62216,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61142,7 +62233,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61159,7 +62250,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61176,7 +62267,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61201,7 +62292,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61218,7 +62309,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FE4ISR (Offset 0x1134) */ @@ -61228,7 +62319,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1IMR (Offset 0x1138) */ @@ -61242,7 +62333,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FT1IMR (Offset 0x1138) */ @@ -61253,7 +62345,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FT1IMR (Offset 0x1138) */ @@ -61273,7 +62366,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1IMR (Offset 0x1138) */ @@ -61304,7 +62397,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61318,7 +62411,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61329,7 +62423,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61349,7 +62444,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61378,7 +62473,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61397,7 +62492,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61416,7 +62511,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61435,7 +62530,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61454,7 +62549,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61473,7 +62568,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61492,7 +62587,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61511,7 +62606,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61530,7 +62625,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61549,7 +62644,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61568,7 +62663,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT1ISR (Offset 0x113C) */ @@ -61587,7 +62682,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SPWR0 (Offset 0x1140) */ @@ -61697,7 +62792,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_BCN_TBTT_ITVL0 (Offset 0x1160) */ @@ -61744,7 +62839,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_BCN_TBTT_ITVL0 (Offset 0x1160) */ @@ -61791,7 +62886,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_BCN_TBTT_ITVL0 (Offset 0x1160) */ @@ -61838,7 +62933,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_BCN_TBTT_ITVL0 (Offset 0x1160) */ @@ -61883,7 +62978,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RX_BCN_TBTT_ITVL1 (Offset 0x1164) */ @@ -62000,7 +63095,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_IO_WRAP_ERR_FLAG (Offset 0x1170) */ @@ -62051,7 +63146,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SPEED_SENSOR (Offset 0x1180) */ @@ -62352,7 +63447,8 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8814AMP_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_EXT_QUEUE_REG (Offset 0x11C0) */ @@ -62398,7 +63494,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_CTRL (Offset 0x11C4) */ @@ -62416,7 +63512,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_CTRL (Offset 0x11C4) */ @@ -62434,7 +63530,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_CTRL (Offset 0x11C4) */ @@ -62452,7 +63548,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_CTRL (Offset 0x11C4) */ @@ -62470,7 +63566,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_CTRL (Offset 0x11C4) */ @@ -62488,7 +63584,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_CTRL (Offset 0x11C4) */ @@ -62506,7 +63602,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_THRESHOLD (Offset 0x11C8) */ @@ -62530,7 +63626,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_THRESHOLD (Offset 0x11C8) */ @@ -62565,7 +63661,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_SET (Offset 0x11CC) */ @@ -62600,7 +63696,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_SET (Offset 0x11CC) */ @@ -62635,7 +63731,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_COUNTER_OVERFLOW (Offset 0x11D0) */ @@ -62671,7 +63767,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_LEN_THRESHOLD (Offset 0x11D4) */ @@ -62707,7 +63803,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TXDMA_LEN_THRESHOLD (Offset 0x11D4) */ @@ -62743,7 +63839,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_LEN_THRESHOLD (Offset 0x11D8) */ @@ -62779,7 +63875,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXDMA_LEN_THRESHOLD (Offset 0x11D8) */ @@ -62818,7 +63914,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_EXEC_TIME_THRESHOLD (Offset 0x11DC) */ @@ -62855,7 +63951,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_EXEC_TIME_THRESHOLD (Offset 0x11DC) */ @@ -62881,7 +63977,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -62898,7 +63994,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -62915,7 +64011,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -62932,7 +64028,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -62949,7 +64045,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -62966,7 +64062,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -62983,7 +64079,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63000,7 +64096,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63017,7 +64113,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63034,7 +64130,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63051,7 +64147,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63068,7 +64164,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63085,7 +64181,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63102,7 +64198,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63119,7 +64215,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63136,7 +64232,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63153,7 +64249,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63170,7 +64266,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63187,7 +64283,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63204,7 +64300,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63221,7 +64317,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63238,7 +64334,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63255,7 +64351,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63272,7 +64368,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63289,7 +64385,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63306,7 +64402,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2IMR (Offset 0x11E0) */ @@ -63323,7 +64419,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63340,7 +64436,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63357,7 +64453,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63374,7 +64470,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63391,7 +64487,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63408,7 +64504,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63425,7 +64521,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63442,7 +64538,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63459,7 +64555,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63476,7 +64572,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63493,7 +64589,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63510,7 +64606,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63527,7 +64623,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63544,7 +64640,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63561,7 +64657,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63578,7 +64674,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63595,7 +64691,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63612,7 +64708,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63629,7 +64725,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63646,7 +64742,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63663,7 +64759,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63680,7 +64776,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63697,7 +64793,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63714,7 +64810,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63731,7 +64827,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63748,7 +64844,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FT2ISR (Offset 0x11E4) */ @@ -63759,7 +64855,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MSG2 (Offset 0x11F0) */ @@ -63831,7 +64927,7 @@ #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH0CTRL (Offset 0x1208) */ @@ -63850,7 +64946,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH0CTRL (Offset 0x1208) */ @@ -63902,7 +64998,7 @@ #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH1CTRL (Offset 0x1218) */ @@ -63921,7 +65017,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH1CTRL (Offset 0x1218) */ @@ -63946,7 +65042,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH1CTRL (Offset 0x1218) */ @@ -63991,7 +65087,7 @@ #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH2CTRL (Offset 0x1228) */ @@ -64010,7 +65106,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH2CTRL (Offset 0x1228) */ @@ -64035,7 +65131,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH2CTRL (Offset 0x1228) */ @@ -64080,7 +65176,7 @@ #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH3CTRL (Offset 0x1238) */ @@ -64099,7 +65195,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH3CTRL (Offset 0x1238) */ @@ -64124,7 +65220,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH3CTRL (Offset 0x1238) */ @@ -64169,7 +65265,7 @@ #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH4CTRL (Offset 0x1248) */ @@ -64189,7 +65285,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH4CTRL (Offset 0x1248) */ @@ -64216,7 +65312,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_CH4CTRL (Offset 0x1248) */ @@ -64283,7 +65379,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_DDMA_INT_MSK (Offset 0x12E0) */ @@ -64333,7 +65429,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_STC_INT_CS (Offset 0x1300) */ @@ -64585,7 +65681,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_H2CQ_TXBD_DESA (Offset 0x1320) */ @@ -64637,7 +65734,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2CQ_TXBD_NUM (Offset 0x1328) */ @@ -64656,7 +65753,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_H2CQ_TXBD_NUM (Offset 0x1328) */ @@ -64992,7 +66089,8 @@ #endif -#if (HALMAC_8822B_SUPPORT) +#if (HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ @@ -65009,7 +66107,8 @@ #endif -#if (HALMAC_8822B_SUPPORT) +#if (HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ @@ -65036,6 +66135,24 @@ #endif +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + +#define BIT_SHIFT_RXDMA_ERR_CNT 8 +#define BIT_MASK_RXDMA_ERR_CNT 0xff +#define BIT_RXDMA_ERR_CNT(x) \ + (((x) & BIT_MASK_RXDMA_ERR_CNT) << BIT_SHIFT_RXDMA_ERR_CNT) +#define BITS_RXDMA_ERR_CNT (BIT_MASK_RXDMA_ERR_CNT << BIT_SHIFT_RXDMA_ERR_CNT) +#define BIT_CLEAR_RXDMA_ERR_CNT(x) ((x) & (~BITS_RXDMA_ERR_CNT)) +#define BIT_GET_RXDMA_ERR_CNT(x) \ + (((x) >> BIT_SHIFT_RXDMA_ERR_CNT) & BIT_MASK_RXDMA_ERR_CNT) +#define BIT_SET_RXDMA_ERR_CNT(x, v) \ + (BIT_CLEAR_RXDMA_ERR_CNT(x) | BIT_RXDMA_ERR_CNT(v)) + +#endif + #if (HALMAC_8822B_SUPPORT) /* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ @@ -65052,7 +66169,38 @@ #define BIT_SET_RXDMA_ERROR_COUNTER(x, v) \ (BIT_CLEAR_RXDMA_ERROR_COUNTER(x) | BIT_RXDMA_ERROR_COUNTER(v)) +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + +#define BIT_TXDMA_ERR_HANDLE_REQ BIT(7) + +#endif + +#if (HALMAC_8822B_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + #define BIT_TXDMA_ERROR_HANDLE_STATUS BIT(7) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + +#define BIT_TXDMA_ERROR_PS BIT(6) + +#endif + +#if (HALMAC_8822B_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + #define BIT_TXDMA_ERROR_PULSE BIT(6) #endif @@ -65065,6 +66213,15 @@ #endif +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + +#define BIT_EN_TXDMA_STUCK_ERR_HANDLE BIT(5) + +#endif + #if (HALMAC_8822B_SUPPORT) /* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ @@ -65081,6 +66238,15 @@ #endif +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + +#define BIT_EN_TXDMA_RTN_ERR_HANDLE BIT(4) + +#endif + #if (HALMAC_8822B_SUPPORT) /* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ @@ -65097,6 +66263,15 @@ #endif +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + +#define BIT_RXDMA_ERR_HANDLE_REQ BIT(3) + +#endif + #if (HALMAC_8822B_SUPPORT) /* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ @@ -65110,10 +66285,35 @@ /* 2 REG_AXI_EXCEPT_CS (Offset 0x1350) */ #define BIT_AXI_DECERR_R_FLAG BIT(2) + +#endif + +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + +#define BIT_RXDMA_ERROR_PS BIT(2) + +#endif + +#if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT) + +/* 2 REG_AXI_EXCEPT_CS (Offset 0x1350) */ + #define BIT_AXI_SLVERR_W_FLAG BIT(1) #endif +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + +#define BIT_EN_RXDMA_STUCK_ERR_HANDLE BIT(1) + +#endif + #if (HALMAC_8192F_SUPPORT) /* 2 REG_TSFT_PTM_DIFF (Offset 0x1350) */ @@ -65139,6 +66339,15 @@ #endif +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) + +/* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ + +#define BIT_EN_RXDMA_RTN_ERR_HANDLE BIT(0) + +#endif + #if (HALMAC_8822B_SUPPORT) /* 2 REG_CHANGE_PCIE_SPEED (Offset 0x1350) */ @@ -65311,7 +66520,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DEBUG_STATE1 (Offset 0x1354) */ @@ -65356,7 +66566,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DEBUG_STATE2 (Offset 0x1358) */ @@ -65401,7 +66612,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_DEBUG_STATE3 (Offset 0x135C) */ @@ -65736,7 +66948,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_DMA_CFG_V1 (Offset 0x137C) */ @@ -66100,7 +67312,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_HISR0_V1 (Offset 0x13B4) */ @@ -66776,7 +67989,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q0_Q1_INFO (Offset 0x1400) */ @@ -66813,7 +68026,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q0_Q1_INFO (Offset 0x1400) */ @@ -66880,7 +68093,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q2_Q3_INFO (Offset 0x1404) */ @@ -66924,7 +68137,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q4_Q5_INFO (Offset 0x1408) */ @@ -66982,7 +68195,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_Q6_Q7_INFO (Offset 0x140C) */ @@ -67026,7 +68239,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_HIQ_INFO (Offset 0x1410) */ @@ -67113,7 +68326,8 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CMDQ_BCNQ_INFO (Offset 0x1414) */ @@ -67163,7 +68377,8 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CMDQ_BCNQ_INFO (Offset 0x1414) */ @@ -67180,7 +68395,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_LOOPBACK_OPTION (Offset 0x1420) */ @@ -67223,7 +68438,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_AESIV_SETTING (Offset 0x1424) */ @@ -67243,7 +68459,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BF0_TIME_SETTING (Offset 0x1428) */ @@ -67310,7 +68526,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BF_TIMEOUT_EN (Offset 0x1430) */ @@ -67322,7 +68538,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BF_TIMEOUT_EN (Offset 0x1430) */ @@ -67334,7 +68550,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MACID_RELEASE0 (Offset 0x1434) */ @@ -67373,7 +68589,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MACID_RELEASE1 (Offset 0x1438) */ @@ -67450,7 +68666,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MACID_RELEASE2 (Offset 0x143C) */ @@ -67491,7 +68707,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MACID_RELEASE3 (Offset 0x1440) */ @@ -67527,7 +68743,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FAST_EDCA_VOVI_SETTING (Offset 0x1448) */ @@ -67562,7 +68778,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FAST_EDCA_VOVI_SETTING (Offset 0x1448) */ @@ -67583,7 +68799,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FAST_EDCA_VOVI_SETTING (Offset 0x1448) */ @@ -67634,7 +68850,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FAST_EDCA_BEBK_SETTING (Offset 0x144C) */ @@ -67655,7 +68871,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_FAST_EDCA_BEBK_SETTING (Offset 0x144C) */ @@ -67677,7 +68893,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MACID_DROP0 (Offset 0x1450) */ @@ -67715,7 +68932,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MACID_DROP1 (Offset 0x1454) */ @@ -67753,7 +68971,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MACID_DROP2 (Offset 0x1458) */ @@ -67787,7 +69006,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_R_MACID_RELEASE_SUCCESS_1 (Offset 0x1464) */ @@ -67890,7 +69109,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_FIFO_WRITE_POINTER (Offset 0x1470) */ @@ -67907,7 +69126,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_FIFO_WRITE_POINTER (Offset 0x1470) */ @@ -67924,7 +69143,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_FIFO_WRITE_POINTER (Offset 0x1470) */ @@ -67951,7 +69170,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_FIFO_WRITE_POINTER (Offset 0x1470) */ @@ -67969,7 +69188,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_FIFO_ENABLE (Offset 0x1472) */ @@ -67986,7 +69205,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_FIFO_READ_POINTER (Offset 0x1472) */ @@ -68071,7 +69290,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_FIFO_RELEASE_INT_MASK (Offset 0x1474) */ @@ -68140,7 +69359,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MGQ_FIFO_VALID_MAP (Offset 0x1478) */ @@ -68179,7 +69398,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET (Offset 0x147C) */ @@ -68420,7 +69639,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MU_TX_CTL (Offset 0x14C0) */ @@ -68445,7 +69665,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MU_TX_CTL (Offset 0x14C0) */ @@ -68473,7 +69694,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MU_TX_CTL (Offset 0x14C0) */ @@ -68482,7 +69704,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MU_TX_CTL (Offset 0x14C0) */ @@ -68515,7 +69737,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MU_TX_CTL (Offset 0x14C0) */ @@ -68524,7 +69746,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MU_TX_CTL (Offset 0x14C0) */ @@ -68562,7 +69784,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MU_STA_GID_VLD (Offset 0x14C4) */ @@ -68599,7 +69821,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MU_STA_USER_POS_INFO (Offset 0x14C8) */ @@ -68644,7 +69866,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MU_STA_USER_POS_INFO_H (Offset 0x14CC) */ @@ -68689,7 +69911,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MU_TRX_DBG_CNT (Offset 0x14D0) */ @@ -68716,7 +69938,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_INFO_CTRL (Offset 0x14D0) */ @@ -68734,7 +69956,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_INFO_CTRL (Offset 0x14D0) */ @@ -68745,7 +69968,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_INFO_CTRL (Offset 0x14D0) */ @@ -68756,7 +69979,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_INFO_CTRL (Offset 0x14D0) */ @@ -68778,7 +70002,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_INFO_CTRL (Offset 0x14D0) */ @@ -68787,16 +70011,17 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_INFO_CTRL (Offset 0x14D0) */ -#define BIT_CSI_INTERRUPT_STATUS BIT(0) +#define BIT_CSI_INTRRUPT_STATUS BIT(0) #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MU_TRX_DBG_CNT (Offset 0x14D0) */ @@ -68812,7 +70037,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_BUSY_TIME (Offset 0x14D8) */ @@ -68849,7 +70074,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_MU_TRX_DBG_CNT_V1 (Offset 0x14DC) */ @@ -69027,7 +70253,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPUMGQ_TX_TIMER (Offset 0x1500) */ @@ -69091,7 +70317,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PS_TIMER_A (Offset 0x1504) */ @@ -69171,7 +70397,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_PS_TIMER_ABC_CPUMGQ_TIMER_CRTL (Offset 0x1510) */ @@ -69266,7 +70492,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CPUMGQ_TX_TIMER_EARLY (Offset 0x1514) */ @@ -69389,7 +70615,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_SYNC_ADJ (Offset 0x1520) */ @@ -69415,7 +70641,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_SYNC_ADJ (Offset 0x1520) */ @@ -69443,7 +70669,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_SYNC_ADJ (Offset 0x1520) */ @@ -69478,7 +70704,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_SYNC_ADJ (Offset 0x1520) */ @@ -69554,7 +70780,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_ADJ_VLAUE (Offset 0x1524) */ @@ -69593,7 +70819,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_ADJ_VLAUE (Offset 0x1524) */ @@ -69650,7 +70876,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_ADJ_VLAUE_2 (Offset 0x1528) */ @@ -69693,7 +70919,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TSF_ADJ_VLAUE_2 (Offset 0x1528) */ @@ -69960,7 +71186,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) /* 2 REG_ATIMUGT_V1 (Offset 0x153D) */ @@ -70136,7 +71362,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_P2PPS_HW_AUTO_PAUSE_CTRL (Offset 0x156C) */ @@ -70639,7 +71866,7 @@ #endif -#if (HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SCHEDULER_COUNTER (Offset 0x15D0) */ @@ -70665,7 +71892,7 @@ #endif -#if (HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_SCHEDULER_COUNTER (Offset 0x15D0) */ @@ -70673,7 +71900,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_SCHEDULER_COUNTER (Offset 0x15D0) */ @@ -70696,7 +71924,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BCN_PSR_RPT2 (Offset 0x1600) */ @@ -70810,7 +72038,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_RXPSF_CTRL (Offset 0x1610) */ @@ -70949,7 +72177,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CAM_ACCESS_CTRL (Offset 0x1618) */ @@ -70959,7 +72188,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CAM_ACCESS_CTRL (Offset 0x1618) */ @@ -70975,7 +72204,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_CAM_ACCESS_CTRL (Offset 0x1618) */ @@ -71008,7 +72238,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_HT_SND_REF_RATE (Offset 0x161C) */ @@ -71062,7 +72292,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MACID2 (Offset 0x1620) */ @@ -71105,7 +72335,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BSSID2 (Offset 0x1628) */ @@ -71148,7 +72378,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MACID3 (Offset 0x1630) */ @@ -71191,7 +72421,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BSSID3 (Offset 0x1638) */ @@ -71234,7 +72464,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MACID4 (Offset 0x1640) */ @@ -71277,7 +72507,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_BSSID4 (Offset 0x1648) */ @@ -71348,7 +72578,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWRBIT_SETTING (Offset 0x1660) */ @@ -71372,7 +72603,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWRBIT_SETTING (Offset 0x1660) */ @@ -71389,7 +72621,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWRBIT_SETTING (Offset 0x1660) */ @@ -71406,7 +72639,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWRBIT_SETTING (Offset 0x1660) */ @@ -71423,7 +72657,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWRBIT_SETTING (Offset 0x1660) */ @@ -71440,7 +72675,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWRBIT_SETTING (Offset 0x1660) */ @@ -71457,7 +72693,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWRBIT_SETTING (Offset 0x1660) */ @@ -71474,7 +72711,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWRBIT_SETTING (Offset 0x1660) */ @@ -71491,7 +72729,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PWRBIT_SETTING (Offset 0x1660) */ @@ -71528,7 +72767,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GENERAL_OPTION (Offset 0x1664) */ @@ -71538,7 +72777,7 @@ #endif -#if (HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GENERAL_OPTION (Offset 0x1664) */ @@ -71546,7 +72785,7 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GENERAL_OPTION (Offset 0x1664) */ @@ -71554,7 +72793,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GENERAL_OPTION (Offset 0x1664) */ @@ -71562,7 +72801,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_GENERAL_OPTION (Offset 0x1664) */ @@ -71570,7 +72810,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GENERAL_OPTION (Offset 0x1664) */ @@ -71586,7 +72826,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_GENERAL_OPTION (Offset 0x1664) */ @@ -71602,7 +72842,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_GENERAL_OPTION (Offset 0x1664) */ @@ -71798,7 +73039,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CSI_RRSR (Offset 0x1678) */ @@ -71839,7 +73080,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_MU_BF_OPTION (Offset 0x167C) */ @@ -71849,7 +73090,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_PAUSE_BB_CLR_TH (Offset 0x167D) */ @@ -71939,7 +73180,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_MU_BF_CTL (Offset 0x1680) */ @@ -71975,7 +73216,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_MU_BFRPT_PARA (Offset 0x1682) */ @@ -72057,7 +73298,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_MU_BFRPT_PARA (Offset 0x1682) */ @@ -72076,7 +73317,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_ASSOCIATED_MU_BFMEE2 (Offset 0x1684) */ @@ -72086,7 +73327,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_ASSOCIATED_MU_BFMEE2 (Offset 0x1684) */ @@ -72104,7 +73345,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_ASSOCIATED_MU_BFMEE2 (Offset 0x1684) */ @@ -72128,7 +73369,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_ASSOCIATED_MU_BFMEE3 (Offset 0x1686) */ @@ -72146,7 +73387,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_ASSOCIATED_MU_BFMEE3 (Offset 0x1686) */ @@ -72190,7 +73431,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_ASSOCIATED_MU_BFMEE5 (Offset 0x168A) */ @@ -72200,7 +73441,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_ASSOCIATED_MU_BFMEE5 (Offset 0x168A) */ @@ -72246,7 +73487,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_ASSOCIATED_MU_BFMEE7 (Offset 0x168E) */ @@ -72256,7 +73498,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_ASSOCIATED_MU_BFMEE7 (Offset 0x168E) */ @@ -72366,7 +73608,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_PLCP_MONITOR_MUTX (Offset 0x1698) */ @@ -72392,7 +73634,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_WMAC_CSIDMA_CFG (Offset 0x169C) */ @@ -72436,7 +73679,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TRANSMIT_ADDRSS_0 (Offset 0x16A0) */ @@ -72475,7 +73718,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TRANSMIT_ADDRSS_1 (Offset 0x16A8) */ @@ -72522,7 +73765,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TRANSMIT_ADDRSS_2_H (Offset 0x16B4) */ @@ -72551,7 +73794,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TRANSMIT_ADDRSS_3_H (Offset 0x16BC) */ @@ -72585,7 +73828,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_TRANSMIT_ADDRSS_4 (Offset 0x16C0) */ @@ -72650,7 +73893,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_WL2LTECOEX_INDIRECT_ACCESS_CTRL_V1 (Offset 0x1700) */ @@ -73730,10 +74973,12 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) /* 2 REG_PCIE_HISR1 (Offset 0x23BC) */ +#define BIT_REG_TYPE_L_V2 BIT(13) #define BIT_CPU_MGQ_EARLY_INT BIT(6) #define BIT_PSTIMER_5 BIT(4) #define BIT_PSTIMER_4 BIT(3) @@ -74048,7 +75293,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_R_MACID_RELEASE_SUCCESS_0_V1 (Offset 0x2460) */ @@ -74195,7 +75440,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_INFO_CTRL_V1 (Offset 0x24D0) */ @@ -74205,7 +75450,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) /* 2 REG_CHNL_IDLE_TIME_V1 (Offset 0x24D4) */ diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_bit_8822e.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_bit_8822e.h new file mode 100644 index 000000000..6fd7c8d1e --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_bit_8822e.h @@ -0,0 +1,22077 @@ +/****************************************************************************** + * + * Copyright(c) 2017 - 2019 Realtek Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + ******************************************************************************/ + +#ifndef __INC_HALMAC_BIT_8822E_H +#define __INC_HALMAC_BIT_8822E_H + +#define CPU_OPT_WIDTH 0x1F + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_SYS_ISO_CTRL_8822E */ +#define BIT_PWC_EV2EF_B_8822E BIT(15) +#define BIT_PWC_EV2EF_S_8822E BIT(14) +#define BIT_PA33V_EN_8822E BIT(13) +#define BIT_PA12V_EN_8822E BIT(12) +#define BIT_UA33V_EN_8822E BIT(11) +#define BIT_UA12V_EN_8822E BIT(10) +#define BIT_ISO_RFDIO_8822E BIT(9) +#define BIT_ISO_EB2CORE_8822E BIT(8) +#define BIT_ISO_DIOE_8822E BIT(7) +#define BIT_ISO_WLPON2PP_8822E BIT(6) +#define BIT_ISO_IP2MAC_WA2PP_8822E BIT(5) +#define BIT_ISO_PD2CORE_8822E BIT(4) +#define BIT_ISO_PA2PCIE_8822E BIT(3) +#define BIT_ISO_UD2CORE_8822E BIT(2) +#define BIT_ISO_UA2USB_8822E BIT(1) +#define BIT_ISO_WD2PP_8822E BIT(0) + +/* 2 REG_SYS_FUNC_EN_8822E */ +#define BIT_FEN_MREGEN_8822E BIT(15) +#define BIT_FEN_HWPDN_8822E BIT(14) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_FEN_ELDR_8822E BIT(12) +#define BIT_FEN_DCORE_8822E BIT(11) +#define BIT_FEN_CPUEN_8822E BIT(10) +#define BIT_FEN_DIOE_8822E BIT(9) +#define BIT_FEN_PCIED_8822E BIT(8) +#define BIT_FEN_PPLL_8822E BIT(7) +#define BIT_FEN_PCIEA_8822E BIT(6) +#define BIT_FEN_DIO_PCIE_8822E BIT(5) +#define BIT_FEN_USBD_8822E BIT(4) +#define BIT_FEN_UPLL_8822E BIT(3) +#define BIT_FEN_USBA_8822E BIT(2) +#define BIT_FEN_BB_GLB_RSTN_8822E BIT(1) +#define BIT_FEN_BBRSTB_8822E BIT(0) + +/* 2 REG_SYS_PW_CTRL_8822E */ +#define BIT_SOP_EABM_8822E BIT(31) +#define BIT_SOP_ACKF_8822E BIT(30) +#define BIT_SOP_ERCK_8822E BIT(29) +#define BIT_SOP_ESWR_8822E BIT(28) +#define BIT_SOP_PWMM_8822E BIT(27) +#define BIT_SOP_EECK_8822E BIT(26) +#define BIT_SOP_ANA_CLK_DIVISION_2_8822E BIT(25) +#define BIT_SOP_EXTL_8822E BIT(24) +#define BIT_SYM_OP_RING_12M_8822E BIT(22) +#define BIT_ROP_SWPR_8822E BIT(21) +#define BIT_DIS_HW_LPLDM_8822E BIT(20) +#define BIT_OPT_SWRST_WLMCU_8822E BIT(19) +#define BIT_RDY_SYSPWR_8822E BIT(17) +#define BIT_EN_WLON_8822E BIT(16) +#define BIT_APDM_HPDN_8822E BIT(15) +#define BIT_AFSM_PCIE_SUS_EN_8822E BIT(12) +#define BIT_AFSM_WLSUS_EN_8822E BIT(11) +#define BIT_APFM_SWLPS_8822E BIT(10) +#define BIT_APFM_OFFMAC_8822E BIT(9) +#define BIT_APFN_ONMAC_8822E BIT(8) +#define BIT_CHIP_PDN_EN_8822E BIT(7) +#define BIT_RDY_MACDIS_8822E BIT(6) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_PFM_WOWL_8822E BIT(3) +#define BIT_PFM_LDKP_8822E BIT(2) +#define BIT_WL_HCI_ALD_8822E BIT(1) +#define BIT_PFM_LDALL_8822E BIT(0) + +/* 2 REG_SYS_CLK_CTRL_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_CPU_CLK_EN_8822E BIT(14) +#define BIT_SYMREG_CLK_EN_8822E BIT(13) +#define BIT_HCI_CLK_EN_8822E BIT(12) +#define BIT_MAC_CLK_EN_8822E BIT(11) +#define BIT_SEC_CLK_EN_8822E BIT(10) +#define BIT_PHY_SSC_RSTB_8822E BIT(9) +#define BIT_EXT_32K_EN_8822E BIT(8) +#define BIT_WL_CLK_TEST_8822E BIT(7) +#define BIT_OP_SPS_PWM_EN_8822E BIT(6) +#define BIT_LOADER_CLK_EN_8822E BIT(5) +#define BIT_MACSLP_8822E BIT(4) +#define BIT_WAKEPAD_EN_8822E BIT(3) +#define BIT_ROMD16V_EN_8822E BIT(2) +#define BIT_ANA_CLK_DIVISION_2_8822E BIT(1) +#define BIT_CNTD16V_EN_8822E BIT(0) + +/* 2 REG_SYS_EEPROM_CTRL_8822E */ +#define BIT_OTP_B_PWC_RPT_8822E BIT(15) +#define BIT_OTP_S_PWC_RPT_8822E BIT(14) +#define BIT_OTP_ISO_RPT_8822E BIT(13) +#define BIT_OTP_BURST_RPT_8822E BIT(12) +#define BIT_AUTOLOAD_SUS_8822E BIT(5) +#define BIT_EERPOMSEL_8822E BIT(4) +#define BIT_EECS_V1_8822E BIT(3) +#define BIT_EESK_V1_8822E BIT(2) +#define BIT_EEDI_V1_8822E BIT(1) +#define BIT_EEDO_V1_8822E BIT(0) + +/* 2 REG_EE_VPD_8822E */ + +#define BIT_SHIFT_VPD_DATA_8822E 0 +#define BIT_MASK_VPD_DATA_8822E 0xffffffffL +#define BIT_VPD_DATA_8822E(x) \ + (((x) & BIT_MASK_VPD_DATA_8822E) << BIT_SHIFT_VPD_DATA_8822E) +#define BITS_VPD_DATA_8822E \ + (BIT_MASK_VPD_DATA_8822E << BIT_SHIFT_VPD_DATA_8822E) +#define BIT_CLEAR_VPD_DATA_8822E(x) ((x) & (~BITS_VPD_DATA_8822E)) +#define BIT_GET_VPD_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_VPD_DATA_8822E) & BIT_MASK_VPD_DATA_8822E) +#define BIT_SET_VPD_DATA_8822E(x, v) \ + (BIT_CLEAR_VPD_DATA_8822E(x) | BIT_VPD_DATA_8822E(v)) + +/* 2 REG_SYS_SWR_CTRL1_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_R_SYM_CTRL_SPS_PWMFREQ_8822E BIT(10) +#define BIT_HW_AUTO_CTRL_EXT_SWR_8822E BIT(9) +#define BIT_USE_INTERNAL_SWR_AND_LDO_8822E BIT(8) +#define BIT_MAC_ID_EN_8822E BIT(7) +#define BIT_OPTION_DIS_XTAL_BG_8822E BIT(2) + +/* 2 REG_SYS_SWR_CTRL2_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_PWC_EV2EF_B_V1_8822E BIT(15) +#define BIT_PWC_EV2EF_S_V1_8822E BIT(14) +#define BIT_SW18_SEL_8822E BIT(13) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_SW18_SD_8822E BIT(10) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_SYS_SWR_CTRL3_8822E */ +#define BIT_SPS18_OCP_DIS_8822E BIT(31) + +#define BIT_SHIFT_SPS18_OCP_TH_8822E 16 +#define BIT_MASK_SPS18_OCP_TH_8822E 0x7fff +#define BIT_SPS18_OCP_TH_8822E(x) \ + (((x) & BIT_MASK_SPS18_OCP_TH_8822E) << BIT_SHIFT_SPS18_OCP_TH_8822E) +#define BITS_SPS18_OCP_TH_8822E \ + (BIT_MASK_SPS18_OCP_TH_8822E << BIT_SHIFT_SPS18_OCP_TH_8822E) +#define BIT_CLEAR_SPS18_OCP_TH_8822E(x) ((x) & (~BITS_SPS18_OCP_TH_8822E)) +#define BIT_GET_SPS18_OCP_TH_8822E(x) \ + (((x) >> BIT_SHIFT_SPS18_OCP_TH_8822E) & BIT_MASK_SPS18_OCP_TH_8822E) +#define BIT_SET_SPS18_OCP_TH_8822E(x, v) \ + (BIT_CLEAR_SPS18_OCP_TH_8822E(x) | BIT_SPS18_OCP_TH_8822E(v)) + +#define BIT_SHIFT_OCP_WINDOW_8822E 0 +#define BIT_MASK_OCP_WINDOW_8822E 0xffff +#define BIT_OCP_WINDOW_8822E(x) \ + (((x) & BIT_MASK_OCP_WINDOW_8822E) << BIT_SHIFT_OCP_WINDOW_8822E) +#define BITS_OCP_WINDOW_8822E \ + (BIT_MASK_OCP_WINDOW_8822E << BIT_SHIFT_OCP_WINDOW_8822E) +#define BIT_CLEAR_OCP_WINDOW_8822E(x) ((x) & (~BITS_OCP_WINDOW_8822E)) +#define BIT_GET_OCP_WINDOW_8822E(x) \ + (((x) >> BIT_SHIFT_OCP_WINDOW_8822E) & BIT_MASK_OCP_WINDOW_8822E) +#define BIT_SET_OCP_WINDOW_8822E(x, v) \ + (BIT_CLEAR_OCP_WINDOW_8822E(x) | BIT_OCP_WINDOW_8822E(v)) + +/* 2 REG_RSV_CTRL_8822E */ +#define BIT_HREG_DBG_8822E BIT(23) +#define BIT_WLMCUIOIF_8822E BIT(8) +#define BIT_LOCK_ALL_EN_8822E BIT(7) +#define BIT_R_DIS_PRST_8822E BIT(6) +#define BIT_WLOCK_1C_B6_8822E BIT(5) +#define BIT_WLOCK_40_8822E BIT(4) +#define BIT_WLOCK_08_8822E BIT(3) +#define BIT_WLOCK_04_8822E BIT(2) +#define BIT_WLOCK_00_8822E BIT(1) +#define BIT_WLOCK_ALL_8822E BIT(0) + +/* 2 REG_RF_CTRL_8822E */ +#define BIT_S0_RFC_WO_0_8822E BIT(7) +#define BIT_S0_RFC_WT_0_8822E BIT(6) +#define BIT_S0_RFC_RSTB_8822E BIT(1) + +/* 2 REG_AFE_LDO_CTRL_8822E */ +#define BIT_R_SYM_WLPON_EMEM1_EN_8822E BIT(31) +#define BIT_R_SYM_WLPON_EMEM0_EN_8822E BIT(30) +#define BIT_R_SYM_WLPOFF_P4EN_8822E BIT(28) +#define BIT_R_SYM_WLPOFF_P3EN_8822E BIT(27) +#define BIT_R_SYM_WLPOFF_P2EN_8822E BIT(26) +#define BIT_R_SYM_WLPOFF_P1EN_8822E BIT(25) +#define BIT_R_SYM_WLPOFF_EN_8822E BIT(24) +#define BIT_R_SYM_WLPON_P3EN_8822E BIT(21) +#define BIT_R_SYM_WLPON_P2EN_8822E BIT(20) +#define BIT_R_SYM_WLPON_P1EN_8822E BIT(19) +#define BIT_R_SYM_WLPON_EN_8822E BIT(18) +#define BIT_R_SYM_LDOV12D_STBY_8822E BIT(16) +#define BIT_R_SYM_WLBBOFF1_P4_EN_8822E BIT(9) +#define BIT_R_SYM_WLBBOFF1_P3_EN_8822E BIT(8) +#define BIT_R_SYM_WLBBOFF1_P2_EN_8822E BIT(7) +#define BIT_R_SYM_WLBBOFF1_P1_EN_8822E BIT(6) +#define BIT_R_SYM_WLBBOFF_P4_EN_8822E BIT(4) +#define BIT_R_SYM_WLBBOFF_P3_EN_8822E BIT(3) +#define BIT_R_SYM_WLBBOFF_P2_EN_8822E BIT(2) +#define BIT_R_SYM_WLBBOFF_P1_EN_8822E BIT(1) +#define BIT_R_SYM_WLBBOFF_EN_8822E BIT(0) + +/* 2 REG_AFE_CTRL1_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_MAC_CLK_SEL_8822E 20 +#define BIT_MASK_MAC_CLK_SEL_8822E 0x3 +#define BIT_MAC_CLK_SEL_8822E(x) \ + (((x) & BIT_MASK_MAC_CLK_SEL_8822E) << BIT_SHIFT_MAC_CLK_SEL_8822E) +#define BITS_MAC_CLK_SEL_8822E \ + (BIT_MASK_MAC_CLK_SEL_8822E << BIT_SHIFT_MAC_CLK_SEL_8822E) +#define BIT_CLEAR_MAC_CLK_SEL_8822E(x) ((x) & (~BITS_MAC_CLK_SEL_8822E)) +#define BIT_GET_MAC_CLK_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_MAC_CLK_SEL_8822E) & BIT_MASK_MAC_CLK_SEL_8822E) +#define BIT_SET_MAC_CLK_SEL_8822E(x, v) \ + (BIT_CLEAR_MAC_CLK_SEL_8822E(x) | BIT_MAC_CLK_SEL_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_ANAPARSW_POW_MAC_8822E */ +#define BIT_POW_LDO15_8822E BIT(2) +#define BIT_POW_SW_8822E BIT(1) +#define BIT_POW_LDO14_8822E BIT(0) + +/* 2 REG_ANAPARLDO_POW_MAC_8822E */ +#define BIT_LDOE25_POW_L_8822E BIT(0) + +/* 2 REG_ANAPAR_POW_MAC_8822E */ +#define BIT_DUMMY_V4_8822E BIT(7) +#define BIT_DUMMY_V3_8822E BIT(6) +#define BIT_DUMMY_V2_8822E BIT(5) +#define BIT_DUMMY_V1_8822E BIT(4) +#define BIT_POW_PC_LDO_PORT1_8822E BIT(3) +#define BIT_POW_PC_LDO_PORT0_8822E BIT(2) +#define BIT_POW_PLL_V1_8822E BIT(1) +#define BIT_POW_POWER_CUT_POW_LDO_8822E BIT(0) + +/* 2 REG_ANAPAR_POW_XTAL_8822E */ +#define BIT_POW_XTAL_8822E BIT(1) +#define BIT_POW_BG_8822E BIT(0) + +/* 2 REG_ANAPARLDO_MAC_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_AUTO_DMY_8822E BIT(23) +#define BIT_MANUAL_DMY_8822E BIT(22) +#define BIT_AUTO_DMY_DETECT_8822E BIT(21) +#define BIT_LDO_DIG_DIODE_8822E BIT(20) +#define BIT_REG_STANDBY_L_8822E BIT(19) +#define BIT_PD_REGU_L_8822E BIT(18) +#define BIT_EN_PC_BT_L_8822E BIT(17) + +#define BIT_SHIFT_LDO_DIG_VOSEL_8822E 13 +#define BIT_MASK_LDO_DIG_VOSEL_8822E 0xf +#define BIT_LDO_DIG_VOSEL_8822E(x) \ + (((x) & BIT_MASK_LDO_DIG_VOSEL_8822E) << BIT_SHIFT_LDO_DIG_VOSEL_8822E) +#define BITS_LDO_DIG_VOSEL_8822E \ + (BIT_MASK_LDO_DIG_VOSEL_8822E << BIT_SHIFT_LDO_DIG_VOSEL_8822E) +#define BIT_CLEAR_LDO_DIG_VOSEL_8822E(x) ((x) & (~BITS_LDO_DIG_VOSEL_8822E)) +#define BIT_GET_LDO_DIG_VOSEL_8822E(x) \ + (((x) >> BIT_SHIFT_LDO_DIG_VOSEL_8822E) & BIT_MASK_LDO_DIG_VOSEL_8822E) +#define BIT_SET_LDO_DIG_VOSEL_8822E(x, v) \ + (BIT_CLEAR_LDO_DIG_VOSEL_8822E(x) | BIT_LDO_DIG_VOSEL_8822E(v)) + +#define BIT_LDO_DIG_DUMMY_LOAD_8822E BIT(12) +#define BIT_CK12M_EN_8822E BIT(11) +#define BIT_CK12M_SEL_8822E BIT(10) +#define BIT_REG_OTP_PC33_VODIS_8822E BIT(9) +#define BIT_EN_SLEEP_8822E BIT(8) + +#define BIT_SHIFT_AONLDO_VOSEL_H_8822E 4 +#define BIT_MASK_AONLDO_VOSEL_H_8822E 0xf +#define BIT_AONLDO_VOSEL_H_8822E(x) \ + (((x) & BIT_MASK_AONLDO_VOSEL_H_8822E) \ + << BIT_SHIFT_AONLDO_VOSEL_H_8822E) +#define BITS_AONLDO_VOSEL_H_8822E \ + (BIT_MASK_AONLDO_VOSEL_H_8822E << BIT_SHIFT_AONLDO_VOSEL_H_8822E) +#define BIT_CLEAR_AONLDO_VOSEL_H_8822E(x) ((x) & (~BITS_AONLDO_VOSEL_H_8822E)) +#define BIT_GET_AONLDO_VOSEL_H_8822E(x) \ + (((x) >> BIT_SHIFT_AONLDO_VOSEL_H_8822E) & \ + BIT_MASK_AONLDO_VOSEL_H_8822E) +#define BIT_SET_AONLDO_VOSEL_H_8822E(x, v) \ + (BIT_CLEAR_AONLDO_VOSEL_H_8822E(x) | BIT_AONLDO_VOSEL_H_8822E(v)) + +#define BIT_SHIFT_REG_ANAPAR_LDO23_8822E 2 +#define BIT_MASK_REG_ANAPAR_LDO23_8822E 0x3 +#define BIT_REG_ANAPAR_LDO23_8822E(x) \ + (((x) & BIT_MASK_REG_ANAPAR_LDO23_8822E) \ + << BIT_SHIFT_REG_ANAPAR_LDO23_8822E) +#define BITS_REG_ANAPAR_LDO23_8822E \ + (BIT_MASK_REG_ANAPAR_LDO23_8822E << BIT_SHIFT_REG_ANAPAR_LDO23_8822E) +#define BIT_CLEAR_REG_ANAPAR_LDO23_8822E(x) \ + ((x) & (~BITS_REG_ANAPAR_LDO23_8822E)) +#define BIT_GET_REG_ANAPAR_LDO23_8822E(x) \ + (((x) >> BIT_SHIFT_REG_ANAPAR_LDO23_8822E) & \ + BIT_MASK_REG_ANAPAR_LDO23_8822E) +#define BIT_SET_REG_ANAPAR_LDO23_8822E(x, v) \ + (BIT_CLEAR_REG_ANAPAR_LDO23_8822E(x) | BIT_REG_ANAPAR_LDO23_8822E(v)) + +#define BIT_REG_LV_POR_VREF_8822E BIT(1) +#define BIT_AONLDO_VREF_SEL_8822E BIT(0) + +/* 2 REG_EFUSE_CTRL_8822E */ + +#define BIT_SHIFT_EF_MODE_SEL_8822E 30 +#define BIT_MASK_EF_MODE_SEL_8822E 0x3 +#define BIT_EF_MODE_SEL_8822E(x) \ + (((x) & BIT_MASK_EF_MODE_SEL_8822E) << BIT_SHIFT_EF_MODE_SEL_8822E) +#define BITS_EF_MODE_SEL_8822E \ + (BIT_MASK_EF_MODE_SEL_8822E << BIT_SHIFT_EF_MODE_SEL_8822E) +#define BIT_CLEAR_EF_MODE_SEL_8822E(x) ((x) & (~BITS_EF_MODE_SEL_8822E)) +#define BIT_GET_EF_MODE_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_EF_MODE_SEL_8822E) & BIT_MASK_EF_MODE_SEL_8822E) +#define BIT_SET_EF_MODE_SEL_8822E(x, v) \ + (BIT_CLEAR_EF_MODE_SEL_8822E(x) | BIT_EF_MODE_SEL_8822E(v)) + +#define BIT_EF_RDY_8822E BIT(29) +#define BIT_EF_COMP_RESULT_8822E BIT(28) + +#define BIT_SHIFT_EF_ADDR_8822E 16 +#define BIT_MASK_EF_ADDR_8822E 0x7ff +#define BIT_EF_ADDR_8822E(x) \ + (((x) & BIT_MASK_EF_ADDR_8822E) << BIT_SHIFT_EF_ADDR_8822E) +#define BITS_EF_ADDR_8822E (BIT_MASK_EF_ADDR_8822E << BIT_SHIFT_EF_ADDR_8822E) +#define BIT_CLEAR_EF_ADDR_8822E(x) ((x) & (~BITS_EF_ADDR_8822E)) +#define BIT_GET_EF_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_EF_ADDR_8822E) & BIT_MASK_EF_ADDR_8822E) +#define BIT_SET_EF_ADDR_8822E(x, v) \ + (BIT_CLEAR_EF_ADDR_8822E(x) | BIT_EF_ADDR_8822E(v)) + +#define BIT_SHIFT_EF_DATA_8822E 0 +#define BIT_MASK_EF_DATA_8822E 0xffff +#define BIT_EF_DATA_8822E(x) \ + (((x) & BIT_MASK_EF_DATA_8822E) << BIT_SHIFT_EF_DATA_8822E) +#define BITS_EF_DATA_8822E (BIT_MASK_EF_DATA_8822E << BIT_SHIFT_EF_DATA_8822E) +#define BIT_CLEAR_EF_DATA_8822E(x) ((x) & (~BITS_EF_DATA_8822E)) +#define BIT_GET_EF_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_EF_DATA_8822E) & BIT_MASK_EF_DATA_8822E) +#define BIT_SET_EF_DATA_8822E(x, v) \ + (BIT_CLEAR_EF_DATA_8822E(x) | BIT_EF_DATA_8822E(v)) + +/* 2 REG_LDO_EFUSE_CTRL_8822E */ +#define BIT_EF_CRES_SEL_8822E BIT(31) + +#define BIT_SHIFT_EF_SCAN_SADR_8822E 19 +#define BIT_MASK_EF_SCAN_SADR_8822E 0x7ff +#define BIT_EF_SCAN_SADR_8822E(x) \ + (((x) & BIT_MASK_EF_SCAN_SADR_8822E) << BIT_SHIFT_EF_SCAN_SADR_8822E) +#define BITS_EF_SCAN_SADR_8822E \ + (BIT_MASK_EF_SCAN_SADR_8822E << BIT_SHIFT_EF_SCAN_SADR_8822E) +#define BIT_CLEAR_EF_SCAN_SADR_8822E(x) ((x) & (~BITS_EF_SCAN_SADR_8822E)) +#define BIT_GET_EF_SCAN_SADR_8822E(x) \ + (((x) >> BIT_SHIFT_EF_SCAN_SADR_8822E) & BIT_MASK_EF_SCAN_SADR_8822E) +#define BIT_SET_EF_SCAN_SADR_8822E(x, v) \ + (BIT_CLEAR_EF_SCAN_SADR_8822E(x) | BIT_EF_SCAN_SADR_8822E(v)) + +#define BIT_SHIFT_EF_SCAN_EADR_8822E 8 +#define BIT_MASK_EF_SCAN_EADR_8822E 0x7ff +#define BIT_EF_SCAN_EADR_8822E(x) \ + (((x) & BIT_MASK_EF_SCAN_EADR_8822E) << BIT_SHIFT_EF_SCAN_EADR_8822E) +#define BITS_EF_SCAN_EADR_8822E \ + (BIT_MASK_EF_SCAN_EADR_8822E << BIT_SHIFT_EF_SCAN_EADR_8822E) +#define BIT_CLEAR_EF_SCAN_EADR_8822E(x) ((x) & (~BITS_EF_SCAN_EADR_8822E)) +#define BIT_GET_EF_SCAN_EADR_8822E(x) \ + (((x) >> BIT_SHIFT_EF_SCAN_EADR_8822E) & BIT_MASK_EF_SCAN_EADR_8822E) +#define BIT_SET_EF_SCAN_EADR_8822E(x, v) \ + (BIT_CLEAR_EF_SCAN_EADR_8822E(x) | BIT_EF_SCAN_EADR_8822E(v)) + +#define BIT_EF_SCAN_TRPT_8822E BIT(7) + +#define BIT_SHIFT_EF_SCAN_FTHR_8822E 0 +#define BIT_MASK_EF_SCAN_FTHR_8822E 0x7f +#define BIT_EF_SCAN_FTHR_8822E(x) \ + (((x) & BIT_MASK_EF_SCAN_FTHR_8822E) << BIT_SHIFT_EF_SCAN_FTHR_8822E) +#define BITS_EF_SCAN_FTHR_8822E \ + (BIT_MASK_EF_SCAN_FTHR_8822E << BIT_SHIFT_EF_SCAN_FTHR_8822E) +#define BIT_CLEAR_EF_SCAN_FTHR_8822E(x) ((x) & (~BITS_EF_SCAN_FTHR_8822E)) +#define BIT_GET_EF_SCAN_FTHR_8822E(x) \ + (((x) >> BIT_SHIFT_EF_SCAN_FTHR_8822E) & BIT_MASK_EF_SCAN_FTHR_8822E) +#define BIT_SET_EF_SCAN_FTHR_8822E(x, v) \ + (BIT_CLEAR_EF_SCAN_FTHR_8822E(x) | BIT_EF_SCAN_FTHR_8822E(v)) + +/* 2 REG_PWR_OPTION_CTRL_8822E */ + +#define BIT_SHIFT_DBG_SEL_V1_8822E 16 +#define BIT_MASK_DBG_SEL_V1_8822E 0xff +#define BIT_DBG_SEL_V1_8822E(x) \ + (((x) & BIT_MASK_DBG_SEL_V1_8822E) << BIT_SHIFT_DBG_SEL_V1_8822E) +#define BITS_DBG_SEL_V1_8822E \ + (BIT_MASK_DBG_SEL_V1_8822E << BIT_SHIFT_DBG_SEL_V1_8822E) +#define BIT_CLEAR_DBG_SEL_V1_8822E(x) ((x) & (~BITS_DBG_SEL_V1_8822E)) +#define BIT_GET_DBG_SEL_V1_8822E(x) \ + (((x) >> BIT_SHIFT_DBG_SEL_V1_8822E) & BIT_MASK_DBG_SEL_V1_8822E) +#define BIT_SET_DBG_SEL_V1_8822E(x, v) \ + (BIT_CLEAR_DBG_SEL_V1_8822E(x) | BIT_DBG_SEL_V1_8822E(v)) + +#define BIT_SHIFT_DBG_SEL_BYTE_8822E 14 +#define BIT_MASK_DBG_SEL_BYTE_8822E 0x3 +#define BIT_DBG_SEL_BYTE_8822E(x) \ + (((x) & BIT_MASK_DBG_SEL_BYTE_8822E) << BIT_SHIFT_DBG_SEL_BYTE_8822E) +#define BITS_DBG_SEL_BYTE_8822E \ + (BIT_MASK_DBG_SEL_BYTE_8822E << BIT_SHIFT_DBG_SEL_BYTE_8822E) +#define BIT_CLEAR_DBG_SEL_BYTE_8822E(x) ((x) & (~BITS_DBG_SEL_BYTE_8822E)) +#define BIT_GET_DBG_SEL_BYTE_8822E(x) \ + (((x) >> BIT_SHIFT_DBG_SEL_BYTE_8822E) & BIT_MASK_DBG_SEL_BYTE_8822E) +#define BIT_SET_DBG_SEL_BYTE_8822E(x, v) \ + (BIT_CLEAR_DBG_SEL_BYTE_8822E(x) | BIT_DBG_SEL_BYTE_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_SYSON_DBG_PAD_E2_8822E BIT(11) +#define BIT_SYSON_LED_PAD_E2_8822E BIT(10) +#define BIT_SYSON_GPEE_PAD_E2_8822E BIT(9) +#define BIT_SYSON_PCI_PAD_E2_8822E BIT(8) +#define BIT_AUTO_SW_LDO_VOL_EN_8822E BIT(7) + +#define BIT_SHIFT_SYSON_SPS0WWV_WT_8822E 4 +#define BIT_MASK_SYSON_SPS0WWV_WT_8822E 0x3 +#define BIT_SYSON_SPS0WWV_WT_8822E(x) \ + (((x) & BIT_MASK_SYSON_SPS0WWV_WT_8822E) \ + << BIT_SHIFT_SYSON_SPS0WWV_WT_8822E) +#define BITS_SYSON_SPS0WWV_WT_8822E \ + (BIT_MASK_SYSON_SPS0WWV_WT_8822E << BIT_SHIFT_SYSON_SPS0WWV_WT_8822E) +#define BIT_CLEAR_SYSON_SPS0WWV_WT_8822E(x) \ + ((x) & (~BITS_SYSON_SPS0WWV_WT_8822E)) +#define BIT_GET_SYSON_SPS0WWV_WT_8822E(x) \ + (((x) >> BIT_SHIFT_SYSON_SPS0WWV_WT_8822E) & \ + BIT_MASK_SYSON_SPS0WWV_WT_8822E) +#define BIT_SET_SYSON_SPS0WWV_WT_8822E(x, v) \ + (BIT_CLEAR_SYSON_SPS0WWV_WT_8822E(x) | BIT_SYSON_SPS0WWV_WT_8822E(v)) + +#define BIT_SHIFT_SYSON_SPS0LDO_WT_8822E 2 +#define BIT_MASK_SYSON_SPS0LDO_WT_8822E 0x3 +#define BIT_SYSON_SPS0LDO_WT_8822E(x) \ + (((x) & BIT_MASK_SYSON_SPS0LDO_WT_8822E) \ + << BIT_SHIFT_SYSON_SPS0LDO_WT_8822E) +#define BITS_SYSON_SPS0LDO_WT_8822E \ + (BIT_MASK_SYSON_SPS0LDO_WT_8822E << BIT_SHIFT_SYSON_SPS0LDO_WT_8822E) +#define BIT_CLEAR_SYSON_SPS0LDO_WT_8822E(x) \ + ((x) & (~BITS_SYSON_SPS0LDO_WT_8822E)) +#define BIT_GET_SYSON_SPS0LDO_WT_8822E(x) \ + (((x) >> BIT_SHIFT_SYSON_SPS0LDO_WT_8822E) & \ + BIT_MASK_SYSON_SPS0LDO_WT_8822E) +#define BIT_SET_SYSON_SPS0LDO_WT_8822E(x, v) \ + (BIT_CLEAR_SYSON_SPS0LDO_WT_8822E(x) | BIT_SYSON_SPS0LDO_WT_8822E(v)) + +#define BIT_SHIFT_SYSON_RCLK_SCALE_8822E 0 +#define BIT_MASK_SYSON_RCLK_SCALE_8822E 0x3 +#define BIT_SYSON_RCLK_SCALE_8822E(x) \ + (((x) & BIT_MASK_SYSON_RCLK_SCALE_8822E) \ + << BIT_SHIFT_SYSON_RCLK_SCALE_8822E) +#define BITS_SYSON_RCLK_SCALE_8822E \ + (BIT_MASK_SYSON_RCLK_SCALE_8822E << BIT_SHIFT_SYSON_RCLK_SCALE_8822E) +#define BIT_CLEAR_SYSON_RCLK_SCALE_8822E(x) \ + ((x) & (~BITS_SYSON_RCLK_SCALE_8822E)) +#define BIT_GET_SYSON_RCLK_SCALE_8822E(x) \ + (((x) >> BIT_SHIFT_SYSON_RCLK_SCALE_8822E) & \ + BIT_MASK_SYSON_RCLK_SCALE_8822E) +#define BIT_SET_SYSON_RCLK_SCALE_8822E(x, v) \ + (BIT_CLEAR_SYSON_RCLK_SCALE_8822E(x) | BIT_SYSON_RCLK_SCALE_8822E(v)) + +/* 2 REG_CAL_TIMER_8822E */ + +#define BIT_SHIFT_MATCH_CNT_8822E 8 +#define BIT_MASK_MATCH_CNT_8822E 0xff +#define BIT_MATCH_CNT_8822E(x) \ + (((x) & BIT_MASK_MATCH_CNT_8822E) << BIT_SHIFT_MATCH_CNT_8822E) +#define BITS_MATCH_CNT_8822E \ + (BIT_MASK_MATCH_CNT_8822E << BIT_SHIFT_MATCH_CNT_8822E) +#define BIT_CLEAR_MATCH_CNT_8822E(x) ((x) & (~BITS_MATCH_CNT_8822E)) +#define BIT_GET_MATCH_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_MATCH_CNT_8822E) & BIT_MASK_MATCH_CNT_8822E) +#define BIT_SET_MATCH_CNT_8822E(x, v) \ + (BIT_CLEAR_MATCH_CNT_8822E(x) | BIT_MATCH_CNT_8822E(v)) + +#define BIT_SHIFT_CAL_SCAL_8822E 0 +#define BIT_MASK_CAL_SCAL_8822E 0xff +#define BIT_CAL_SCAL_8822E(x) \ + (((x) & BIT_MASK_CAL_SCAL_8822E) << BIT_SHIFT_CAL_SCAL_8822E) +#define BITS_CAL_SCAL_8822E \ + (BIT_MASK_CAL_SCAL_8822E << BIT_SHIFT_CAL_SCAL_8822E) +#define BIT_CLEAR_CAL_SCAL_8822E(x) ((x) & (~BITS_CAL_SCAL_8822E)) +#define BIT_GET_CAL_SCAL_8822E(x) \ + (((x) >> BIT_SHIFT_CAL_SCAL_8822E) & BIT_MASK_CAL_SCAL_8822E) +#define BIT_SET_CAL_SCAL_8822E(x, v) \ + (BIT_CLEAR_CAL_SCAL_8822E(x) | BIT_CAL_SCAL_8822E(v)) + +/* 2 REG_ACLK_MON_8822E */ + +#define BIT_SHIFT_RCLK_MON_8822E 5 +#define BIT_MASK_RCLK_MON_8822E 0x7ff +#define BIT_RCLK_MON_8822E(x) \ + (((x) & BIT_MASK_RCLK_MON_8822E) << BIT_SHIFT_RCLK_MON_8822E) +#define BITS_RCLK_MON_8822E \ + (BIT_MASK_RCLK_MON_8822E << BIT_SHIFT_RCLK_MON_8822E) +#define BIT_CLEAR_RCLK_MON_8822E(x) ((x) & (~BITS_RCLK_MON_8822E)) +#define BIT_GET_RCLK_MON_8822E(x) \ + (((x) >> BIT_SHIFT_RCLK_MON_8822E) & BIT_MASK_RCLK_MON_8822E) +#define BIT_SET_RCLK_MON_8822E(x, v) \ + (BIT_CLEAR_RCLK_MON_8822E(x) | BIT_RCLK_MON_8822E(v)) + +#define BIT_CAL_EN_8822E BIT(4) + +#define BIT_SHIFT_DPSTU_8822E 2 +#define BIT_MASK_DPSTU_8822E 0x3 +#define BIT_DPSTU_8822E(x) \ + (((x) & BIT_MASK_DPSTU_8822E) << BIT_SHIFT_DPSTU_8822E) +#define BITS_DPSTU_8822E (BIT_MASK_DPSTU_8822E << BIT_SHIFT_DPSTU_8822E) +#define BIT_CLEAR_DPSTU_8822E(x) ((x) & (~BITS_DPSTU_8822E)) +#define BIT_GET_DPSTU_8822E(x) \ + (((x) >> BIT_SHIFT_DPSTU_8822E) & BIT_MASK_DPSTU_8822E) +#define BIT_SET_DPSTU_8822E(x, v) \ + (BIT_CLEAR_DPSTU_8822E(x) | BIT_DPSTU_8822E(v)) + +#define BIT_SUS_16X_8822E BIT(1) + +/* 2 REG_GPIO_MUXCFG_2_8822E */ +#define BIT_SOUT_GPIO8_8822E BIT(7) +#define BIT_SOUT_GPIO5_8822E BIT(6) +#define BIT_RFE_CTRL_5_GPIO14_V1_8822E BIT(5) +#define BIT_RFE_CTRL_10_GPIO13_V1_8822E BIT(4) +#define BIT_RFE_CTRL_11_GPIO4_V1_8822E BIT(3) +#define BIT_RFE_CTRL_5_GPIO14_8822E BIT(2) +#define BIT_RFE_CTRL_10_GPIO13_8822E BIT(1) +#define BIT_RFE_CTRL_11_GPIO4_8822E BIT(0) + +/* 2 REG_GPIO_MUXCFG_8822E */ +#define BIT_RFE_CTRL_3_GPIO12_8822E BIT(31) +#define BIT_BT_RFE_CTRL_5_GPIO12_8822E BIT(30) +#define BIT_S0_TRSW_GPIO12_8822E BIT(29) +#define BIT_RFE_CTRL_9_GPIO13_8822E BIT(28) +#define BIT_RFE_CTRL_9_GPIO12_8822E BIT(27) +#define BIT_RFE_CTRL_8_GPIO4_8822E BIT(26) +#define BIT_BT_RFE_CTRL_1_GPIO13_8822E BIT(25) +#define BIT_BT_RFE_CTRL_1_GPIO12_8822E BIT(24) +#define BIT_BT_RFE_CTRL_0_GPIO4_8822E BIT(23) +#define BIT_ANTSW_GPIO13_8822E BIT(22) +#define BIT_ANTSW_GPIO12_8822E BIT(21) +#define BIT_ANTSWB_GPIO4_8822E BIT(20) +#define BIT_FSPI_EN_8822E BIT(19) +#define BIT_WL_RTS_EXT_32K_SEL_8822E BIT(18) +#define BIT_WLBT_DPDT_SEL_EN_8822E BIT(17) +#define BIT_WLBT_LNAON_SEL_EN_8822E BIT(16) +#define BIT_SIC_LBK_8822E BIT(15) +#define BIT_ENHTP_8822E BIT(14) +#define BIT_BT_AOD_GPIO3_8822E BIT(13) +#define BIT_ENSIC_8822E BIT(12) +#define BIT_SIC_SWRST_8822E BIT(11) +#define BIT_PO_WIFI_PTA_PINS_8822E BIT(10) +#define BIT_PO_BT_PTA_PINS_8822E BIT(9) +#define BIT_ENUART_8822E BIT(8) + +#define BIT_SHIFT_BTMODE_8822E 6 +#define BIT_MASK_BTMODE_8822E 0x3 +#define BIT_BTMODE_8822E(x) \ + (((x) & BIT_MASK_BTMODE_8822E) << BIT_SHIFT_BTMODE_8822E) +#define BITS_BTMODE_8822E (BIT_MASK_BTMODE_8822E << BIT_SHIFT_BTMODE_8822E) +#define BIT_CLEAR_BTMODE_8822E(x) ((x) & (~BITS_BTMODE_8822E)) +#define BIT_GET_BTMODE_8822E(x) \ + (((x) >> BIT_SHIFT_BTMODE_8822E) & BIT_MASK_BTMODE_8822E) +#define BIT_SET_BTMODE_8822E(x, v) \ + (BIT_CLEAR_BTMODE_8822E(x) | BIT_BTMODE_8822E(v)) + +#define BIT_ENBT_8822E BIT(5) +#define BIT_EROM_EN_8822E BIT(4) +#define BIT_WLRFE_6_7_EN_8822E BIT(3) +#define BIT_WLRFE_4_5_EN_8822E BIT(2) + +#define BIT_SHIFT_GPIOSEL_8822E 0 +#define BIT_MASK_GPIOSEL_8822E 0x3 +#define BIT_GPIOSEL_8822E(x) \ + (((x) & BIT_MASK_GPIOSEL_8822E) << BIT_SHIFT_GPIOSEL_8822E) +#define BITS_GPIOSEL_8822E (BIT_MASK_GPIOSEL_8822E << BIT_SHIFT_GPIOSEL_8822E) +#define BIT_CLEAR_GPIOSEL_8822E(x) ((x) & (~BITS_GPIOSEL_8822E)) +#define BIT_GET_GPIOSEL_8822E(x) \ + (((x) >> BIT_SHIFT_GPIOSEL_8822E) & BIT_MASK_GPIOSEL_8822E) +#define BIT_SET_GPIOSEL_8822E(x, v) \ + (BIT_CLEAR_GPIOSEL_8822E(x) | BIT_GPIOSEL_8822E(v)) + +/* 2 REG_GPIO_PIN_CTRL_8822E */ + +#define BIT_SHIFT_GPIO_MOD_7_TO_0_8822E 24 +#define BIT_MASK_GPIO_MOD_7_TO_0_8822E 0xff +#define BIT_GPIO_MOD_7_TO_0_8822E(x) \ + (((x) & BIT_MASK_GPIO_MOD_7_TO_0_8822E) \ + << BIT_SHIFT_GPIO_MOD_7_TO_0_8822E) +#define BITS_GPIO_MOD_7_TO_0_8822E \ + (BIT_MASK_GPIO_MOD_7_TO_0_8822E << BIT_SHIFT_GPIO_MOD_7_TO_0_8822E) +#define BIT_CLEAR_GPIO_MOD_7_TO_0_8822E(x) ((x) & (~BITS_GPIO_MOD_7_TO_0_8822E)) +#define BIT_GET_GPIO_MOD_7_TO_0_8822E(x) \ + (((x) >> BIT_SHIFT_GPIO_MOD_7_TO_0_8822E) & \ + BIT_MASK_GPIO_MOD_7_TO_0_8822E) +#define BIT_SET_GPIO_MOD_7_TO_0_8822E(x, v) \ + (BIT_CLEAR_GPIO_MOD_7_TO_0_8822E(x) | BIT_GPIO_MOD_7_TO_0_8822E(v)) + +#define BIT_SHIFT_GPIO_IO_SEL_7_TO_0_8822E 16 +#define BIT_MASK_GPIO_IO_SEL_7_TO_0_8822E 0xff +#define BIT_GPIO_IO_SEL_7_TO_0_8822E(x) \ + (((x) & BIT_MASK_GPIO_IO_SEL_7_TO_0_8822E) \ + << BIT_SHIFT_GPIO_IO_SEL_7_TO_0_8822E) +#define BITS_GPIO_IO_SEL_7_TO_0_8822E \ + (BIT_MASK_GPIO_IO_SEL_7_TO_0_8822E \ + << BIT_SHIFT_GPIO_IO_SEL_7_TO_0_8822E) +#define BIT_CLEAR_GPIO_IO_SEL_7_TO_0_8822E(x) \ + ((x) & (~BITS_GPIO_IO_SEL_7_TO_0_8822E)) +#define BIT_GET_GPIO_IO_SEL_7_TO_0_8822E(x) \ + (((x) >> BIT_SHIFT_GPIO_IO_SEL_7_TO_0_8822E) & \ + BIT_MASK_GPIO_IO_SEL_7_TO_0_8822E) +#define BIT_SET_GPIO_IO_SEL_7_TO_0_8822E(x, v) \ + (BIT_CLEAR_GPIO_IO_SEL_7_TO_0_8822E(x) | \ + BIT_GPIO_IO_SEL_7_TO_0_8822E(v)) + +#define BIT_SHIFT_GPIO_OUT_7_TO_0_8822E 8 +#define BIT_MASK_GPIO_OUT_7_TO_0_8822E 0xff +#define BIT_GPIO_OUT_7_TO_0_8822E(x) \ + (((x) & BIT_MASK_GPIO_OUT_7_TO_0_8822E) \ + << BIT_SHIFT_GPIO_OUT_7_TO_0_8822E) +#define BITS_GPIO_OUT_7_TO_0_8822E \ + (BIT_MASK_GPIO_OUT_7_TO_0_8822E << BIT_SHIFT_GPIO_OUT_7_TO_0_8822E) +#define BIT_CLEAR_GPIO_OUT_7_TO_0_8822E(x) ((x) & (~BITS_GPIO_OUT_7_TO_0_8822E)) +#define BIT_GET_GPIO_OUT_7_TO_0_8822E(x) \ + (((x) >> BIT_SHIFT_GPIO_OUT_7_TO_0_8822E) & \ + BIT_MASK_GPIO_OUT_7_TO_0_8822E) +#define BIT_SET_GPIO_OUT_7_TO_0_8822E(x, v) \ + (BIT_CLEAR_GPIO_OUT_7_TO_0_8822E(x) | BIT_GPIO_OUT_7_TO_0_8822E(v)) + +#define BIT_SHIFT_GPIO_IN_7_TO_0_8822E 0 +#define BIT_MASK_GPIO_IN_7_TO_0_8822E 0xff +#define BIT_GPIO_IN_7_TO_0_8822E(x) \ + (((x) & BIT_MASK_GPIO_IN_7_TO_0_8822E) \ + << BIT_SHIFT_GPIO_IN_7_TO_0_8822E) +#define BITS_GPIO_IN_7_TO_0_8822E \ + (BIT_MASK_GPIO_IN_7_TO_0_8822E << BIT_SHIFT_GPIO_IN_7_TO_0_8822E) +#define BIT_CLEAR_GPIO_IN_7_TO_0_8822E(x) ((x) & (~BITS_GPIO_IN_7_TO_0_8822E)) +#define BIT_GET_GPIO_IN_7_TO_0_8822E(x) \ + (((x) >> BIT_SHIFT_GPIO_IN_7_TO_0_8822E) & \ + BIT_MASK_GPIO_IN_7_TO_0_8822E) +#define BIT_SET_GPIO_IN_7_TO_0_8822E(x, v) \ + (BIT_CLEAR_GPIO_IN_7_TO_0_8822E(x) | BIT_GPIO_IN_7_TO_0_8822E(v)) + +/* 2 REG_GPIO_INTM_8822E */ + +#define BIT_SHIFT_MUXDBG_SEL_8822E 30 +#define BIT_MASK_MUXDBG_SEL_8822E 0x3 +#define BIT_MUXDBG_SEL_8822E(x) \ + (((x) & BIT_MASK_MUXDBG_SEL_8822E) << BIT_SHIFT_MUXDBG_SEL_8822E) +#define BITS_MUXDBG_SEL_8822E \ + (BIT_MASK_MUXDBG_SEL_8822E << BIT_SHIFT_MUXDBG_SEL_8822E) +#define BIT_CLEAR_MUXDBG_SEL_8822E(x) ((x) & (~BITS_MUXDBG_SEL_8822E)) +#define BIT_GET_MUXDBG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_MUXDBG_SEL_8822E) & BIT_MASK_MUXDBG_SEL_8822E) +#define BIT_SET_MUXDBG_SEL_8822E(x, v) \ + (BIT_CLEAR_MUXDBG_SEL_8822E(x) | BIT_MUXDBG_SEL_8822E(v)) + +#define BIT_EXTWOL_SEL_8822E BIT(17) +#define BIT_EXTWOL_EN_8822E BIT(16) +#define BIT_GPIOF_INT_MD_8822E BIT(15) +#define BIT_GPIOE_INT_MD_8822E BIT(14) +#define BIT_GPIOD_INT_MD_8822E BIT(13) +#define BIT_GPIOF_INT_MD_8822E BIT(15) +#define BIT_GPIOE_INT_MD_8822E BIT(14) +#define BIT_GPIOD_INT_MD_8822E BIT(13) +#define BIT_GPIOC_INT_MD_8822E BIT(12) +#define BIT_GPIOB_INT_MD_8822E BIT(11) +#define BIT_GPIOA_INT_MD_8822E BIT(10) +#define BIT_GPIO9_INT_MD_8822E BIT(9) +#define BIT_GPIO8_INT_MD_8822E BIT(8) +#define BIT_GPIO7_INT_MD_8822E BIT(7) +#define BIT_GPIO6_INT_MD_8822E BIT(6) +#define BIT_GPIO5_INT_MD_8822E BIT(5) +#define BIT_GPIO4_INT_MD_8822E BIT(4) +#define BIT_GPIO3_INT_MD_8822E BIT(3) +#define BIT_GPIO2_INT_MD_8822E BIT(2) +#define BIT_GPIO1_INT_MD_8822E BIT(1) +#define BIT_GPIO0_INT_MD_8822E BIT(0) + +/* 2 REG_LED_CFG_8822E */ +#define BIT_MAILBOX_1WIRE_GPIO_CFG_8822E BIT(31) +#define BIT_BT_RF_GPIO_CFG_8822E BIT(30) +#define BIT_BT_SDIO_INT_GPIO_CFG_8822E BIT(29) +#define BIT_MAILBOX_3WIRE_GPIO_CFG_8822E BIT(28) +#define BIT_WLBT_PAPE_SEL_EN_8822E BIT(27) +#define BIT_LNAON_SEL_EN_8822E BIT(26) +#define BIT_PAPE_SEL_EN_8822E BIT(25) +#define BIT_DPDT_WLBT_SEL_8822E BIT(24) +#define BIT_DPDT_SEL_EN_8822E BIT(23) +#define BIT_GPIO13_14_WL_CTRL_EN_8822E BIT(22) +#define BIT_LED2DIS_8822E BIT(21) +#define BIT_LED2PL_8822E BIT(20) +#define BIT_LED2SV_8822E BIT(19) + +#define BIT_SHIFT_LED2CM_8822E 16 +#define BIT_MASK_LED2CM_8822E 0x7 +#define BIT_LED2CM_8822E(x) \ + (((x) & BIT_MASK_LED2CM_8822E) << BIT_SHIFT_LED2CM_8822E) +#define BITS_LED2CM_8822E (BIT_MASK_LED2CM_8822E << BIT_SHIFT_LED2CM_8822E) +#define BIT_CLEAR_LED2CM_8822E(x) ((x) & (~BITS_LED2CM_8822E)) +#define BIT_GET_LED2CM_8822E(x) \ + (((x) >> BIT_SHIFT_LED2CM_8822E) & BIT_MASK_LED2CM_8822E) +#define BIT_SET_LED2CM_8822E(x, v) \ + (BIT_CLEAR_LED2CM_8822E(x) | BIT_LED2CM_8822E(v)) + +#define BIT_LED1DIS_8822E BIT(15) +#define BIT_LED1PL_8822E BIT(12) +#define BIT_LED1SV_8822E BIT(11) + +#define BIT_SHIFT_LED1CM_8822E 8 +#define BIT_MASK_LED1CM_8822E 0x7 +#define BIT_LED1CM_8822E(x) \ + (((x) & BIT_MASK_LED1CM_8822E) << BIT_SHIFT_LED1CM_8822E) +#define BITS_LED1CM_8822E (BIT_MASK_LED1CM_8822E << BIT_SHIFT_LED1CM_8822E) +#define BIT_CLEAR_LED1CM_8822E(x) ((x) & (~BITS_LED1CM_8822E)) +#define BIT_GET_LED1CM_8822E(x) \ + (((x) >> BIT_SHIFT_LED1CM_8822E) & BIT_MASK_LED1CM_8822E) +#define BIT_SET_LED1CM_8822E(x, v) \ + (BIT_CLEAR_LED1CM_8822E(x) | BIT_LED1CM_8822E(v)) + +#define BIT_LED0DIS_8822E BIT(7) + +#define BIT_SHIFT_AFE_LDO_SWR_CHECK_8822E 5 +#define BIT_MASK_AFE_LDO_SWR_CHECK_8822E 0x3 +#define BIT_AFE_LDO_SWR_CHECK_8822E(x) \ + (((x) & BIT_MASK_AFE_LDO_SWR_CHECK_8822E) \ + << BIT_SHIFT_AFE_LDO_SWR_CHECK_8822E) +#define BITS_AFE_LDO_SWR_CHECK_8822E \ + (BIT_MASK_AFE_LDO_SWR_CHECK_8822E << BIT_SHIFT_AFE_LDO_SWR_CHECK_8822E) +#define BIT_CLEAR_AFE_LDO_SWR_CHECK_8822E(x) \ + ((x) & (~BITS_AFE_LDO_SWR_CHECK_8822E)) +#define BIT_GET_AFE_LDO_SWR_CHECK_8822E(x) \ + (((x) >> BIT_SHIFT_AFE_LDO_SWR_CHECK_8822E) & \ + BIT_MASK_AFE_LDO_SWR_CHECK_8822E) +#define BIT_SET_AFE_LDO_SWR_CHECK_8822E(x, v) \ + (BIT_CLEAR_AFE_LDO_SWR_CHECK_8822E(x) | BIT_AFE_LDO_SWR_CHECK_8822E(v)) + +#define BIT_LED0PL_8822E BIT(4) +#define BIT_LED0SV_8822E BIT(3) + +#define BIT_SHIFT_LED0CM_8822E 0 +#define BIT_MASK_LED0CM_8822E 0x7 +#define BIT_LED0CM_8822E(x) \ + (((x) & BIT_MASK_LED0CM_8822E) << BIT_SHIFT_LED0CM_8822E) +#define BITS_LED0CM_8822E (BIT_MASK_LED0CM_8822E << BIT_SHIFT_LED0CM_8822E) +#define BIT_CLEAR_LED0CM_8822E(x) ((x) & (~BITS_LED0CM_8822E)) +#define BIT_GET_LED0CM_8822E(x) \ + (((x) >> BIT_SHIFT_LED0CM_8822E) & BIT_MASK_LED0CM_8822E) +#define BIT_SET_LED0CM_8822E(x, v) \ + (BIT_CLEAR_LED0CM_8822E(x) | BIT_LED0CM_8822E(v)) + +/* 2 REG_FSIMR_8822E */ +#define BIT_FS_PDNINT_EN_8822E BIT(31) +#define BIT_FS_SPS_OCP_INT_EN_8822E BIT(29) +#define BIT_FS_PWMERR_INT_EN_8822E BIT(28) +#define BIT_FS_GPIOF_INT_EN_8822E BIT(27) +#define BIT_FS_GPIOE_INT_EN_8822E BIT(26) +#define BIT_FS_GPIOD_INT_EN_8822E BIT(25) +#define BIT_FS_GPIOC_INT_EN_8822E BIT(24) +#define BIT_FS_GPIOB_INT_EN_8822E BIT(23) +#define BIT_FS_GPIOA_INT_EN_8822E BIT(22) +#define BIT_FS_GPIO9_INT_EN_8822E BIT(21) +#define BIT_FS_GPIO8_INT_EN_8822E BIT(20) +#define BIT_FS_GPIO7_INT_EN_8822E BIT(19) +#define BIT_FS_GPIO6_INT_EN_8822E BIT(18) +#define BIT_FS_GPIO5_INT_EN_8822E BIT(17) +#define BIT_FS_GPIO4_INT_EN_8822E BIT(16) +#define BIT_FS_GPIO3_INT_EN_8822E BIT(15) +#define BIT_FS_GPIO2_INT_EN_8822E BIT(14) +#define BIT_FS_GPIO1_INT_EN_8822E BIT(13) +#define BIT_FS_GPIO0_INT_EN_8822E BIT(12) +#define BIT_FS_HCI_SUS_EN_8822E BIT(11) +#define BIT_FS_HCI_RES_EN_8822E BIT(10) +#define BIT_FS_HCI_RESET_EN_8822E BIT(9) +#define BIT_USB_SCSI_CMD_EN_8822E BIT(8) +#define BIT_FS_BTON_STS_UPDATE_MSK_EN_8822E BIT(7) +#define BIT_ACT2RECOVERY_INT_EN_V1_8822E BIT(6) +#define BIT_GEN1GEN2_SWITCH_8822E BIT(5) +#define BIT_HCI_TXDMA_REQ_HIMR_8822E BIT(4) +#define BIT_FS_32K_LEAVE_SETTING_MAK_8822E BIT(3) +#define BIT_FS_32K_ENTER_SETTING_MAK_8822E BIT(2) +#define BIT_FS_USB_LPMRSM_MSK_8822E BIT(1) +#define BIT_FS_USB_LPMINT_MSK_8822E BIT(0) + +/* 2 REG_FSISR_8822E */ +#define BIT_FS_PDNINT_8822E BIT(31) +#define BIT_FS_SPS_OCP_INT_8822E BIT(29) +#define BIT_FS_PWMERR_INT_8822E BIT(28) +#define BIT_FS_GPIOF_INT_8822E BIT(27) +#define BIT_FS_GPIOE_INT_8822E BIT(26) +#define BIT_FS_GPIOD_INT_8822E BIT(25) +#define BIT_FS_GPIOC_INT_8822E BIT(24) +#define BIT_FS_GPIOB_INT_8822E BIT(23) +#define BIT_FS_GPIOA_INT_8822E BIT(22) +#define BIT_FS_GPIO9_INT_8822E BIT(21) +#define BIT_FS_GPIO8_INT_8822E BIT(20) +#define BIT_FS_GPIO7_INT_8822E BIT(19) +#define BIT_FS_GPIO6_INT_8822E BIT(18) +#define BIT_FS_GPIO5_INT_8822E BIT(17) +#define BIT_FS_GPIO4_INT_8822E BIT(16) +#define BIT_FS_GPIO3_INT_8822E BIT(15) +#define BIT_FS_GPIO2_INT_8822E BIT(14) +#define BIT_FS_GPIO1_INT_8822E BIT(13) +#define BIT_FS_GPIO0_INT_8822E BIT(12) +#define BIT_FS_HCI_SUS_INT_8822E BIT(11) +#define BIT_FS_HCI_RES_INT_8822E BIT(10) +#define BIT_FS_HCI_RESET_INT_8822E BIT(9) +#define BIT_USB_SCSI_CMD_INT_8822E BIT(8) +#define BIT_ACT2RECOVERY_8822E BIT(6) +#define BIT_GEN1GEN2_SWITCH_8822E BIT(5) +#define BIT_HCI_TXDMA_REQ_HISR_8822E BIT(4) +#define BIT_FS_32K_LEAVE_SETTING_INT_8822E BIT(3) +#define BIT_FS_32K_ENTER_SETTING_INT_8822E BIT(2) +#define BIT_FS_USB_LPMRSM_INT_8822E BIT(1) +#define BIT_FS_USB_LPMINT_INT_8822E BIT(0) + +/* 2 REG_HSIMR_8822E */ +#define BIT_GPIOF_INT_EN_8822E BIT(31) +#define BIT_GPIOE_INT_EN_8822E BIT(30) +#define BIT_GPIOD_INT_EN_8822E BIT(29) +#define BIT_GPIOC_INT_EN_8822E BIT(28) +#define BIT_GPIOB_INT_EN_8822E BIT(27) +#define BIT_GPIOA_INT_EN_8822E BIT(26) +#define BIT_GPIO9_INT_EN_8822E BIT(25) +#define BIT_GPIO8_INT_EN_8822E BIT(24) +#define BIT_GPIO7_INT_EN_8822E BIT(23) +#define BIT_GPIO6_INT_EN_8822E BIT(22) +#define BIT_GPIO5_INT_EN_8822E BIT(21) +#define BIT_GPIO4_INT_EN_8822E BIT(20) +#define BIT_GPIO3_INT_EN_8822E BIT(19) +#define BIT_GPIO2_INT_EN_V1_8822E BIT(18) +#define BIT_GPIO1_INT_EN_8822E BIT(17) +#define BIT_GPIO0_INT_EN_8822E BIT(16) +#define BIT_PDNINT_EN_8822E BIT(7) +#define BIT_RON_INT_EN_8822E BIT(6) +#define BIT_SPS_OCP_INT_EN_8822E BIT(5) +#define BIT_GPIO15_0_INT_EN_8822E BIT(0) + +/* 2 REG_HSISR_8822E */ +#define BIT_GPIOF_INT_8822E BIT(31) +#define BIT_GPIOE_INT_8822E BIT(30) +#define BIT_GPIOD_INT_8822E BIT(29) +#define BIT_GPIOC_INT_8822E BIT(28) +#define BIT_GPIOB_INT_8822E BIT(27) +#define BIT_GPIOA_INT_8822E BIT(26) +#define BIT_GPIO9_INT_8822E BIT(25) +#define BIT_GPIO8_INT_8822E BIT(24) +#define BIT_GPIO7_INT_8822E BIT(23) +#define BIT_GPIO6_INT_8822E BIT(22) +#define BIT_GPIO5_INT_8822E BIT(21) +#define BIT_GPIO4_INT_8822E BIT(20) +#define BIT_GPIO3_INT_8822E BIT(19) +#define BIT_GPIO2_INT_V1_8822E BIT(18) +#define BIT_GPIO1_INT_8822E BIT(17) +#define BIT_GPIO0_INT_8822E BIT(16) +#define BIT_PDNINT_8822E BIT(7) +#define BIT_RON_INT_8822E BIT(6) +#define BIT_SPS_OCP_INT_8822E BIT(5) +#define BIT_GPIO15_0_INT_8822E BIT(0) + +/* 2 REG_GPIO_EXT_CTRL_8822E */ + +#define BIT_SHIFT_GPIO_MOD_15_TO_8_8822E 24 +#define BIT_MASK_GPIO_MOD_15_TO_8_8822E 0xff +#define BIT_GPIO_MOD_15_TO_8_8822E(x) \ + (((x) & BIT_MASK_GPIO_MOD_15_TO_8_8822E) \ + << BIT_SHIFT_GPIO_MOD_15_TO_8_8822E) +#define BITS_GPIO_MOD_15_TO_8_8822E \ + (BIT_MASK_GPIO_MOD_15_TO_8_8822E << BIT_SHIFT_GPIO_MOD_15_TO_8_8822E) +#define BIT_CLEAR_GPIO_MOD_15_TO_8_8822E(x) \ + ((x) & (~BITS_GPIO_MOD_15_TO_8_8822E)) +#define BIT_GET_GPIO_MOD_15_TO_8_8822E(x) \ + (((x) >> BIT_SHIFT_GPIO_MOD_15_TO_8_8822E) & \ + BIT_MASK_GPIO_MOD_15_TO_8_8822E) +#define BIT_SET_GPIO_MOD_15_TO_8_8822E(x, v) \ + (BIT_CLEAR_GPIO_MOD_15_TO_8_8822E(x) | BIT_GPIO_MOD_15_TO_8_8822E(v)) + +#define BIT_SHIFT_GPIO_IO_SEL_15_TO_8_8822E 16 +#define BIT_MASK_GPIO_IO_SEL_15_TO_8_8822E 0xff +#define BIT_GPIO_IO_SEL_15_TO_8_8822E(x) \ + (((x) & BIT_MASK_GPIO_IO_SEL_15_TO_8_8822E) \ + << BIT_SHIFT_GPIO_IO_SEL_15_TO_8_8822E) +#define BITS_GPIO_IO_SEL_15_TO_8_8822E \ + (BIT_MASK_GPIO_IO_SEL_15_TO_8_8822E \ + << BIT_SHIFT_GPIO_IO_SEL_15_TO_8_8822E) +#define BIT_CLEAR_GPIO_IO_SEL_15_TO_8_8822E(x) \ + ((x) & (~BITS_GPIO_IO_SEL_15_TO_8_8822E)) +#define BIT_GET_GPIO_IO_SEL_15_TO_8_8822E(x) \ + (((x) >> BIT_SHIFT_GPIO_IO_SEL_15_TO_8_8822E) & \ + BIT_MASK_GPIO_IO_SEL_15_TO_8_8822E) +#define BIT_SET_GPIO_IO_SEL_15_TO_8_8822E(x, v) \ + (BIT_CLEAR_GPIO_IO_SEL_15_TO_8_8822E(x) | \ + BIT_GPIO_IO_SEL_15_TO_8_8822E(v)) + +#define BIT_SHIFT_GPIO_OUT_15_TO_8_8822E 8 +#define BIT_MASK_GPIO_OUT_15_TO_8_8822E 0xff +#define BIT_GPIO_OUT_15_TO_8_8822E(x) \ + (((x) & BIT_MASK_GPIO_OUT_15_TO_8_8822E) \ + << BIT_SHIFT_GPIO_OUT_15_TO_8_8822E) +#define BITS_GPIO_OUT_15_TO_8_8822E \ + (BIT_MASK_GPIO_OUT_15_TO_8_8822E << BIT_SHIFT_GPIO_OUT_15_TO_8_8822E) +#define BIT_CLEAR_GPIO_OUT_15_TO_8_8822E(x) \ + ((x) & (~BITS_GPIO_OUT_15_TO_8_8822E)) +#define BIT_GET_GPIO_OUT_15_TO_8_8822E(x) \ + (((x) >> BIT_SHIFT_GPIO_OUT_15_TO_8_8822E) & \ + BIT_MASK_GPIO_OUT_15_TO_8_8822E) +#define BIT_SET_GPIO_OUT_15_TO_8_8822E(x, v) \ + (BIT_CLEAR_GPIO_OUT_15_TO_8_8822E(x) | BIT_GPIO_OUT_15_TO_8_8822E(v)) + +#define BIT_SHIFT_GPIO_IN_15_TO_8_8822E 0 +#define BIT_MASK_GPIO_IN_15_TO_8_8822E 0xff +#define BIT_GPIO_IN_15_TO_8_8822E(x) \ + (((x) & BIT_MASK_GPIO_IN_15_TO_8_8822E) \ + << BIT_SHIFT_GPIO_IN_15_TO_8_8822E) +#define BITS_GPIO_IN_15_TO_8_8822E \ + (BIT_MASK_GPIO_IN_15_TO_8_8822E << BIT_SHIFT_GPIO_IN_15_TO_8_8822E) +#define BIT_CLEAR_GPIO_IN_15_TO_8_8822E(x) ((x) & (~BITS_GPIO_IN_15_TO_8_8822E)) +#define BIT_GET_GPIO_IN_15_TO_8_8822E(x) \ + (((x) >> BIT_SHIFT_GPIO_IN_15_TO_8_8822E) & \ + BIT_MASK_GPIO_IN_15_TO_8_8822E) +#define BIT_SET_GPIO_IN_15_TO_8_8822E(x, v) \ + (BIT_CLEAR_GPIO_IN_15_TO_8_8822E(x) | BIT_GPIO_IN_15_TO_8_8822E(v)) + +/* 2 REG_PAD_CTRL1_8822E */ +#define BIT_PAPE_WLBT_SEL_8822E BIT(29) +#define BIT_LNAON_WLBT_SEL_8822E BIT(28) +#define BIT_BT_BQB_GPIO_SEL_8822E BIT(27) +#define BIT_BTGP_GPG3_FEN_8822E BIT(26) +#define BIT_BTGP_GPG2_FEN_8822E BIT(25) +#define BIT_BTGP_JTAG_EN_8822E BIT(24) +#define BIT_XTAL_CLK_EXTARNAL_EN_8822E BIT(23) +#define BIT_BTGP_UART0_EN_8822E BIT(22) +#define BIT_BTGP_UART1_EN_8822E BIT(21) +#define BIT_BTGP_SPI_EN_8822E BIT(20) +#define BIT_BTGP_GPIO_E2_8822E BIT(19) +#define BIT_BTGP_GPIO_EN_8822E BIT(18) + +#define BIT_SHIFT_BTGP_GPIO_SL_8822E 16 +#define BIT_MASK_BTGP_GPIO_SL_8822E 0x3 +#define BIT_BTGP_GPIO_SL_8822E(x) \ + (((x) & BIT_MASK_BTGP_GPIO_SL_8822E) << BIT_SHIFT_BTGP_GPIO_SL_8822E) +#define BITS_BTGP_GPIO_SL_8822E \ + (BIT_MASK_BTGP_GPIO_SL_8822E << BIT_SHIFT_BTGP_GPIO_SL_8822E) +#define BIT_CLEAR_BTGP_GPIO_SL_8822E(x) ((x) & (~BITS_BTGP_GPIO_SL_8822E)) +#define BIT_GET_BTGP_GPIO_SL_8822E(x) \ + (((x) >> BIT_SHIFT_BTGP_GPIO_SL_8822E) & BIT_MASK_BTGP_GPIO_SL_8822E) +#define BIT_SET_BTGP_GPIO_SL_8822E(x, v) \ + (BIT_CLEAR_BTGP_GPIO_SL_8822E(x) | BIT_BTGP_GPIO_SL_8822E(v)) + +#define BIT_PAD_SDIO_SR_8822E BIT(14) +#define BIT_GPIO14_OUTPUT_PL_8822E BIT(13) +#define BIT_HOST_WAKE_PAD_PULL_EN_8822E BIT(12) +#define BIT_HOST_WAKE_PAD_SL_8822E BIT(11) +#define BIT_PAD_LNAON_SR_8822E BIT(10) +#define BIT_PAD_LNAON_E2_8822E BIT(9) +#define BIT_SW_LNAON_G_SEL_DATA_8822E BIT(8) +#define BIT_SW_LNAON_A_SEL_DATA_8822E BIT(7) +#define BIT_PAD_PAPE_SR_8822E BIT(6) +#define BIT_PAD_PAPE_E2_8822E BIT(5) +#define BIT_SW_PAPE_G_SEL_DATA_8822E BIT(4) +#define BIT_SW_PAPE_A_SEL_DATA_8822E BIT(3) +#define BIT_PAD_DPDT_SR_8822E BIT(2) +#define BIT_PAD_DPDT_PAD_E2_8822E BIT(1) +#define BIT_SW_DPDT_SEL_DATA_8822E BIT(0) + +/* 2 REG_WL_BT_PWR_CTRL_8822E */ +#define BIT_ISO_BD2PP_8822E BIT(31) +#define BIT_LDOV12B_EN_8822E BIT(30) +#define BIT_CKEN_BTGPS_8822E BIT(29) +#define BIT_FEN_BTGPS_8822E BIT(28) +#define BIT_BTCPU_BOOTSEL_8822E BIT(27) +#define BIT_SPI_SPEEDUP_8822E BIT(26) +#define BIT_BT_LDO_MODE_8822E BIT(25) +#define BIT_DEVWAKE_PAD_TYPE_SEL_8822E BIT(24) +#define BIT_CLKREQ_PAD_TYPE_SEL_8822E BIT(23) +#define BIT_ISO_BTPON2PP_8822E BIT(22) +#define BIT_BT_HWROF_EN_8822E BIT(19) +#define BIT_BT_FUNC_EN_8822E BIT(18) +#define BIT_BT_HWPDN_SL_8822E BIT(17) +#define BIT_BT_DISN_EN_8822E BIT(16) +#define BIT_BT_PDN_PULL_EN_8822E BIT(15) +#define BIT_WL_PDN_PULL_EN_8822E BIT(14) +#define BIT_EXTERNAL_REQUEST_PL_8822E BIT(13) +#define BIT_GPIO0_2_3_PULL_LOW_EN_8822E BIT(12) +#define BIT_ISO_BA2PP_8822E BIT(11) +#define BIT_BT_AFE_LDO_EN_8822E BIT(10) +#define BIT_BT_AFE_PLL_EN_8822E BIT(9) +#define BIT_BT_DIG_CLK_EN_8822E BIT(8) +#define BIT_WLAN_32K_SEL_8822E BIT(6) +#define BIT_WL_DRV_EXIST_IDX_8822E BIT(5) +#define BIT_DOP_EHPAD_8822E BIT(4) +#define BIT_WL_HWROF_EN_8822E BIT(3) +#define BIT_WL_FUNC_EN_8822E BIT(2) +#define BIT_WL_HWPDN_SL_8822E BIT(1) +#define BIT_WL_HWPDN_EN_8822E BIT(0) + +/* 2 REG_SDM_DEBUG_8822E */ +#define BIT_GPIO_IE_V18_8822E BIT(10) +#define BIT_PCIE_IE_V18_8822E BIT(9) +#define BIT_UART_IE_V18_8822E BIT(8) + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_WLCLK_PHASE_8822E 0 +#define BIT_MASK_WLCLK_PHASE_8822E 0x1f +#define BIT_WLCLK_PHASE_8822E(x) \ + (((x) & BIT_MASK_WLCLK_PHASE_8822E) << BIT_SHIFT_WLCLK_PHASE_8822E) +#define BITS_WLCLK_PHASE_8822E \ + (BIT_MASK_WLCLK_PHASE_8822E << BIT_SHIFT_WLCLK_PHASE_8822E) +#define BIT_CLEAR_WLCLK_PHASE_8822E(x) ((x) & (~BITS_WLCLK_PHASE_8822E)) +#define BIT_GET_WLCLK_PHASE_8822E(x) \ + (((x) >> BIT_SHIFT_WLCLK_PHASE_8822E) & BIT_MASK_WLCLK_PHASE_8822E) +#define BIT_SET_WLCLK_PHASE_8822E(x, v) \ + (BIT_CLEAR_WLCLK_PHASE_8822E(x) | BIT_WLCLK_PHASE_8822E(v)) + +/* 2 REG_SYS_SDIO_CTRL_8822E */ +#define BIT_DBG_GNT_WL_BT_8822E BIT(27) +#define BIT_LTE_MUX_CTRL_PATH_8822E BIT(26) +#define BIT_LTE_COEX_UART_8822E BIT(25) +#define BIT_3W_LTE_WL_GPIO_8822E BIT(24) +#define BIT_SDIO_INT_POLARITY_8822E BIT(19) +#define BIT_SDIO_INT_8822E BIT(18) +#define BIT_SDIO_OFF_EN_8822E BIT(17) +#define BIT_SDIO_ON_EN_8822E BIT(16) +#define BIT_PCIE_FORCE_PWR_NGAT_8822E BIT(13) +#define BIT_PCIE_CALIB_EN_V1_8822E BIT(12) +#define BIT_PAGE3_AUXCLK_GATE_8822E BIT(11) +#define BIT_PCIE_WAIT_TIMEOUT_EVENT_8822E BIT(10) +#define BIT_PCIE_WAIT_TIME_8822E BIT(9) +#define BIT_MPCIE_REFCLK_XTAL_SEL_8822E BIT(8) +#define BIT_BT_CTRL_USB_PWR_BACKDOOR_8822E BIT(5) +#define BIT_USB_D_STATE_HOLD_8822E BIT(4) +#define BIT_REG_FORCE_DP_8822E BIT(3) +#define BIT_REG_DP_MODE_8822E BIT(2) +#define BIT_RES_USB_MASS_STORAGE_DESC_8822E BIT(1) +#define BIT_USB_WAIT_TIME_8822E BIT(0) + +/* 2 REG_HCI_OPT_CTRL_8822E */ + +#define BIT_SHIFT_TSFT_SEL_8822E 29 +#define BIT_MASK_TSFT_SEL_8822E 0x7 +#define BIT_TSFT_SEL_8822E(x) \ + (((x) & BIT_MASK_TSFT_SEL_8822E) << BIT_SHIFT_TSFT_SEL_8822E) +#define BITS_TSFT_SEL_8822E \ + (BIT_MASK_TSFT_SEL_8822E << BIT_SHIFT_TSFT_SEL_8822E) +#define BIT_CLEAR_TSFT_SEL_8822E(x) ((x) & (~BITS_TSFT_SEL_8822E)) +#define BIT_GET_TSFT_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_TSFT_SEL_8822E) & BIT_MASK_TSFT_SEL_8822E) +#define BIT_SET_TSFT_SEL_8822E(x, v) \ + (BIT_CLEAR_TSFT_SEL_8822E(x) | BIT_TSFT_SEL_8822E(v)) + +#define BIT_SDIO_PAD_E5_8822E BIT(18) +#define BIT_USB_HOST_PWR_OFF_EN_8822E BIT(12) +#define BIT_SYM_LPS_BLOCK_EN_8822E BIT(11) +#define BIT_USB_LPM_ACT_EN_8822E BIT(10) +#define BIT_USB_LPM_NY_8822E BIT(9) +#define BIT_USB_SUS_DIS_8822E BIT(8) + +#define BIT_SHIFT_SDIO_PAD_E_8822E 5 +#define BIT_MASK_SDIO_PAD_E_8822E 0x7 +#define BIT_SDIO_PAD_E_8822E(x) \ + (((x) & BIT_MASK_SDIO_PAD_E_8822E) << BIT_SHIFT_SDIO_PAD_E_8822E) +#define BITS_SDIO_PAD_E_8822E \ + (BIT_MASK_SDIO_PAD_E_8822E << BIT_SHIFT_SDIO_PAD_E_8822E) +#define BIT_CLEAR_SDIO_PAD_E_8822E(x) ((x) & (~BITS_SDIO_PAD_E_8822E)) +#define BIT_GET_SDIO_PAD_E_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_PAD_E_8822E) & BIT_MASK_SDIO_PAD_E_8822E) +#define BIT_SET_SDIO_PAD_E_8822E(x, v) \ + (BIT_CLEAR_SDIO_PAD_E_8822E(x) | BIT_SDIO_PAD_E_8822E(v)) + +#define BIT_USB_LPPLL_EN_8822E BIT(4) +#define BIT_USB1_1_USB2_0_DECISION_8822E BIT(3) +#define BIT_ROP_SW15_8822E BIT(2) +#define BIT_PCI_CKRDY_OPT_8822E BIT(1) +#define BIT_PCI_VAUX_EN_8822E BIT(0) + +/* 2 REG_HCI_BG_CTRL_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_IBX_EN_VALUE_8822E BIT(9) +#define BIT_IB_EN_VALUE_8822E BIT(8) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_FORCED_IB_EN_8822E BIT(4) +#define BIT_EN_REGBG_8822E BIT(3) +#define BIT_REG_BG_LPF_8822E BIT(2) + +#define BIT_SHIFT_REG_BG_8822E 0 +#define BIT_MASK_REG_BG_8822E 0x3 +#define BIT_REG_BG_8822E(x) \ + (((x) & BIT_MASK_REG_BG_8822E) << BIT_SHIFT_REG_BG_8822E) +#define BITS_REG_BG_8822E (BIT_MASK_REG_BG_8822E << BIT_SHIFT_REG_BG_8822E) +#define BIT_CLEAR_REG_BG_8822E(x) ((x) & (~BITS_REG_BG_8822E)) +#define BIT_GET_REG_BG_8822E(x) \ + (((x) >> BIT_SHIFT_REG_BG_8822E) & BIT_MASK_REG_BG_8822E) +#define BIT_SET_REG_BG_8822E(x, v) \ + (BIT_CLEAR_REG_BG_8822E(x) | BIT_REG_BG_8822E(v)) + +/* 2 REG_HCI_LDO_CTRL_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_EN_LW_PWR_8822E BIT(6) +#define BIT_EN_REGU_8822E BIT(5) +#define BIT_EN_PC_8822E BIT(4) + +#define BIT_SHIFT_REG_VADJ_8822E 0 +#define BIT_MASK_REG_VADJ_8822E 0xf +#define BIT_REG_VADJ_8822E(x) \ + (((x) & BIT_MASK_REG_VADJ_8822E) << BIT_SHIFT_REG_VADJ_8822E) +#define BITS_REG_VADJ_8822E \ + (BIT_MASK_REG_VADJ_8822E << BIT_SHIFT_REG_VADJ_8822E) +#define BIT_CLEAR_REG_VADJ_8822E(x) ((x) & (~BITS_REG_VADJ_8822E)) +#define BIT_GET_REG_VADJ_8822E(x) \ + (((x) >> BIT_SHIFT_REG_VADJ_8822E) & BIT_MASK_REG_VADJ_8822E) +#define BIT_SET_REG_VADJ_8822E(x, v) \ + (BIT_CLEAR_REG_VADJ_8822E(x) | BIT_REG_VADJ_8822E(v)) + +/* 2 REG_LDO_SWR_CTRL_8822E */ +#define BIT_EXT_SWR_CTRL_EN_8822E BIT(31) +#define BIT_ZCD_HW_AUTO_EN_8822E BIT(27) +#define BIT_ZCD_REGSEL_8822E BIT(26) + +#define BIT_SHIFT_AUTO_ZCD_IN_CODE_8822E 21 +#define BIT_MASK_AUTO_ZCD_IN_CODE_8822E 0x1f +#define BIT_AUTO_ZCD_IN_CODE_8822E(x) \ + (((x) & BIT_MASK_AUTO_ZCD_IN_CODE_8822E) \ + << BIT_SHIFT_AUTO_ZCD_IN_CODE_8822E) +#define BITS_AUTO_ZCD_IN_CODE_8822E \ + (BIT_MASK_AUTO_ZCD_IN_CODE_8822E << BIT_SHIFT_AUTO_ZCD_IN_CODE_8822E) +#define BIT_CLEAR_AUTO_ZCD_IN_CODE_8822E(x) \ + ((x) & (~BITS_AUTO_ZCD_IN_CODE_8822E)) +#define BIT_GET_AUTO_ZCD_IN_CODE_8822E(x) \ + (((x) >> BIT_SHIFT_AUTO_ZCD_IN_CODE_8822E) & \ + BIT_MASK_AUTO_ZCD_IN_CODE_8822E) +#define BIT_SET_AUTO_ZCD_IN_CODE_8822E(x, v) \ + (BIT_CLEAR_AUTO_ZCD_IN_CODE_8822E(x) | BIT_AUTO_ZCD_IN_CODE_8822E(v)) + +#define BIT_SHIFT_ZCD_CODE_IN_L_8822E 16 +#define BIT_MASK_ZCD_CODE_IN_L_8822E 0x1f +#define BIT_ZCD_CODE_IN_L_8822E(x) \ + (((x) & BIT_MASK_ZCD_CODE_IN_L_8822E) << BIT_SHIFT_ZCD_CODE_IN_L_8822E) +#define BITS_ZCD_CODE_IN_L_8822E \ + (BIT_MASK_ZCD_CODE_IN_L_8822E << BIT_SHIFT_ZCD_CODE_IN_L_8822E) +#define BIT_CLEAR_ZCD_CODE_IN_L_8822E(x) ((x) & (~BITS_ZCD_CODE_IN_L_8822E)) +#define BIT_GET_ZCD_CODE_IN_L_8822E(x) \ + (((x) >> BIT_SHIFT_ZCD_CODE_IN_L_8822E) & BIT_MASK_ZCD_CODE_IN_L_8822E) +#define BIT_SET_ZCD_CODE_IN_L_8822E(x, v) \ + (BIT_CLEAR_ZCD_CODE_IN_L_8822E(x) | BIT_ZCD_CODE_IN_L_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_MCUFW_CTRL_8822E */ + +#define BIT_SHIFT_RPWM_8822E 24 +#define BIT_MASK_RPWM_8822E 0xff +#define BIT_RPWM_8822E(x) (((x) & BIT_MASK_RPWM_8822E) << BIT_SHIFT_RPWM_8822E) +#define BITS_RPWM_8822E (BIT_MASK_RPWM_8822E << BIT_SHIFT_RPWM_8822E) +#define BIT_CLEAR_RPWM_8822E(x) ((x) & (~BITS_RPWM_8822E)) +#define BIT_GET_RPWM_8822E(x) \ + (((x) >> BIT_SHIFT_RPWM_8822E) & BIT_MASK_RPWM_8822E) +#define BIT_SET_RPWM_8822E(x, v) (BIT_CLEAR_RPWM_8822E(x) | BIT_RPWM_8822E(v)) + +#define BIT_ANA_PORT_EN_8822E BIT(22) +#define BIT_MAC_PORT_EN_8822E BIT(21) +#define BIT_BOOT_FSPI_EN_8822E BIT(20) +#define BIT_ROM_DLEN_8822E BIT(19) + +#define BIT_SHIFT_ROM_PGE_8822E 16 +#define BIT_MASK_ROM_PGE_8822E 0x7 +#define BIT_ROM_PGE_8822E(x) \ + (((x) & BIT_MASK_ROM_PGE_8822E) << BIT_SHIFT_ROM_PGE_8822E) +#define BITS_ROM_PGE_8822E (BIT_MASK_ROM_PGE_8822E << BIT_SHIFT_ROM_PGE_8822E) +#define BIT_CLEAR_ROM_PGE_8822E(x) ((x) & (~BITS_ROM_PGE_8822E)) +#define BIT_GET_ROM_PGE_8822E(x) \ + (((x) >> BIT_SHIFT_ROM_PGE_8822E) & BIT_MASK_ROM_PGE_8822E) +#define BIT_SET_ROM_PGE_8822E(x, v) \ + (BIT_CLEAR_ROM_PGE_8822E(x) | BIT_ROM_PGE_8822E(v)) + +#define BIT_FW_INIT_RDY_8822E BIT(15) +#define BIT_FW_DW_RDY_8822E BIT(14) + +#define BIT_SHIFT_CPU_CLK_SEL_8822E 12 +#define BIT_MASK_CPU_CLK_SEL_8822E 0x3 +#define BIT_CPU_CLK_SEL_8822E(x) \ + (((x) & BIT_MASK_CPU_CLK_SEL_8822E) << BIT_SHIFT_CPU_CLK_SEL_8822E) +#define BITS_CPU_CLK_SEL_8822E \ + (BIT_MASK_CPU_CLK_SEL_8822E << BIT_SHIFT_CPU_CLK_SEL_8822E) +#define BIT_CLEAR_CPU_CLK_SEL_8822E(x) ((x) & (~BITS_CPU_CLK_SEL_8822E)) +#define BIT_GET_CPU_CLK_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_CPU_CLK_SEL_8822E) & BIT_MASK_CPU_CLK_SEL_8822E) +#define BIT_SET_CPU_CLK_SEL_8822E(x, v) \ + (BIT_CLEAR_CPU_CLK_SEL_8822E(x) | BIT_CPU_CLK_SEL_8822E(v)) + +#define BIT_CCLK_CHG_MASK_8822E BIT(11) +#define BIT_EMEM__TXBUF_CHKSUM_OK_8822E BIT(10) +#define BIT_EMEM_TXBUF_DW_RDY_8822E BIT(9) +#define BIT_EMEM_CHKSUM_OK_8822E BIT(8) +#define BIT_EMEM_DW_OK_8822E BIT(7) +#define BIT_DMEM_CHKSUM_OK_8822E BIT(6) +#define BIT_DMEM_DW_OK_8822E BIT(5) +#define BIT_IMEM_CHKSUM_OK_8822E BIT(4) +#define BIT_IMEM_DW_OK_8822E BIT(3) +#define BIT_IMEM_BOOT_LOAD_CHKSUM_OK_8822E BIT(2) +#define BIT_IMEM_BOOT_LOAD_DW_OK_8822E BIT(1) +#define BIT_MCUFWDL_EN_8822E BIT(0) + +/* 2 REG_MCU_TST_CFG_8822E */ + +#define BIT_SHIFT_LBKTST_8822E 0 +#define BIT_MASK_LBKTST_8822E 0xffff +#define BIT_LBKTST_8822E(x) \ + (((x) & BIT_MASK_LBKTST_8822E) << BIT_SHIFT_LBKTST_8822E) +#define BITS_LBKTST_8822E (BIT_MASK_LBKTST_8822E << BIT_SHIFT_LBKTST_8822E) +#define BIT_CLEAR_LBKTST_8822E(x) ((x) & (~BITS_LBKTST_8822E)) +#define BIT_GET_LBKTST_8822E(x) \ + (((x) >> BIT_SHIFT_LBKTST_8822E) & BIT_MASK_LBKTST_8822E) +#define BIT_SET_LBKTST_8822E(x, v) \ + (BIT_CLEAR_LBKTST_8822E(x) | BIT_LBKTST_8822E(v)) + +/* 2 REG_HMEBOX_E0_E1_8822E */ + +#define BIT_SHIFT_HOST_MSG_E1_8822E 16 +#define BIT_MASK_HOST_MSG_E1_8822E 0xffff +#define BIT_HOST_MSG_E1_8822E(x) \ + (((x) & BIT_MASK_HOST_MSG_E1_8822E) << BIT_SHIFT_HOST_MSG_E1_8822E) +#define BITS_HOST_MSG_E1_8822E \ + (BIT_MASK_HOST_MSG_E1_8822E << BIT_SHIFT_HOST_MSG_E1_8822E) +#define BIT_CLEAR_HOST_MSG_E1_8822E(x) ((x) & (~BITS_HOST_MSG_E1_8822E)) +#define BIT_GET_HOST_MSG_E1_8822E(x) \ + (((x) >> BIT_SHIFT_HOST_MSG_E1_8822E) & BIT_MASK_HOST_MSG_E1_8822E) +#define BIT_SET_HOST_MSG_E1_8822E(x, v) \ + (BIT_CLEAR_HOST_MSG_E1_8822E(x) | BIT_HOST_MSG_E1_8822E(v)) + +#define BIT_SHIFT_HOST_MSG_E0_8822E 0 +#define BIT_MASK_HOST_MSG_E0_8822E 0xffff +#define BIT_HOST_MSG_E0_8822E(x) \ + (((x) & BIT_MASK_HOST_MSG_E0_8822E) << BIT_SHIFT_HOST_MSG_E0_8822E) +#define BITS_HOST_MSG_E0_8822E \ + (BIT_MASK_HOST_MSG_E0_8822E << BIT_SHIFT_HOST_MSG_E0_8822E) +#define BIT_CLEAR_HOST_MSG_E0_8822E(x) ((x) & (~BITS_HOST_MSG_E0_8822E)) +#define BIT_GET_HOST_MSG_E0_8822E(x) \ + (((x) >> BIT_SHIFT_HOST_MSG_E0_8822E) & BIT_MASK_HOST_MSG_E0_8822E) +#define BIT_SET_HOST_MSG_E0_8822E(x, v) \ + (BIT_CLEAR_HOST_MSG_E0_8822E(x) | BIT_HOST_MSG_E0_8822E(v)) + +/* 2 REG_HMEBOX_E2_E3_8822E */ + +#define BIT_SHIFT_HOST_MSG_E3_8822E 16 +#define BIT_MASK_HOST_MSG_E3_8822E 0xffff +#define BIT_HOST_MSG_E3_8822E(x) \ + (((x) & BIT_MASK_HOST_MSG_E3_8822E) << BIT_SHIFT_HOST_MSG_E3_8822E) +#define BITS_HOST_MSG_E3_8822E \ + (BIT_MASK_HOST_MSG_E3_8822E << BIT_SHIFT_HOST_MSG_E3_8822E) +#define BIT_CLEAR_HOST_MSG_E3_8822E(x) ((x) & (~BITS_HOST_MSG_E3_8822E)) +#define BIT_GET_HOST_MSG_E3_8822E(x) \ + (((x) >> BIT_SHIFT_HOST_MSG_E3_8822E) & BIT_MASK_HOST_MSG_E3_8822E) +#define BIT_SET_HOST_MSG_E3_8822E(x, v) \ + (BIT_CLEAR_HOST_MSG_E3_8822E(x) | BIT_HOST_MSG_E3_8822E(v)) + +#define BIT_SHIFT_HOST_MSG_E2_8822E 0 +#define BIT_MASK_HOST_MSG_E2_8822E 0xffff +#define BIT_HOST_MSG_E2_8822E(x) \ + (((x) & BIT_MASK_HOST_MSG_E2_8822E) << BIT_SHIFT_HOST_MSG_E2_8822E) +#define BITS_HOST_MSG_E2_8822E \ + (BIT_MASK_HOST_MSG_E2_8822E << BIT_SHIFT_HOST_MSG_E2_8822E) +#define BIT_CLEAR_HOST_MSG_E2_8822E(x) ((x) & (~BITS_HOST_MSG_E2_8822E)) +#define BIT_GET_HOST_MSG_E2_8822E(x) \ + (((x) >> BIT_SHIFT_HOST_MSG_E2_8822E) & BIT_MASK_HOST_MSG_E2_8822E) +#define BIT_SET_HOST_MSG_E2_8822E(x, v) \ + (BIT_CLEAR_HOST_MSG_E2_8822E(x) | BIT_HOST_MSG_E2_8822E(v)) + +/* 2 REG_WLLPS_CTRL_8822E */ +#define BIT_WLLPSOP_EABM_8822E BIT(31) +#define BIT_WLLPSOP_ACKF_8822E BIT(30) +#define BIT_WLLPSOP_DLDM_8822E BIT(29) +#define BIT_WLLPSOP_ESWR_8822E BIT(28) +#define BIT_WLLPSOP_PWMM_8822E BIT(27) +#define BIT_WLLPSOP_EECK_8822E BIT(26) +#define BIT_WLLPSOP_WLMACOFF_8822E BIT(25) +#define BIT_WLLPSOP_EXTAL_8822E BIT(24) +#define BIT_WL_SYNPON_VOLTSPDN_8822E BIT(23) +#define BIT_WLLPSOP_WLBBOFF_8822E BIT(22) +#define BIT_WLLPSOP_WLMEM_DS_8822E BIT(21) +#define BIT_WLLPSOP_LDO_WAIT_TIME_8822E BIT(20) +#define BIT_WLLPSOP_ANA_CLK_DIVISION_2_8822E BIT(19) +#define BIT_AFE_BCN_8822E BIT(18) + +#define BIT_SHIFT_LPLDH12_VADJ_STEP_DN_8822E 12 +#define BIT_MASK_LPLDH12_VADJ_STEP_DN_8822E 0xf +#define BIT_LPLDH12_VADJ_STEP_DN_8822E(x) \ + (((x) & BIT_MASK_LPLDH12_VADJ_STEP_DN_8822E) \ + << BIT_SHIFT_LPLDH12_VADJ_STEP_DN_8822E) +#define BITS_LPLDH12_VADJ_STEP_DN_8822E \ + (BIT_MASK_LPLDH12_VADJ_STEP_DN_8822E \ + << BIT_SHIFT_LPLDH12_VADJ_STEP_DN_8822E) +#define BIT_CLEAR_LPLDH12_VADJ_STEP_DN_8822E(x) \ + ((x) & (~BITS_LPLDH12_VADJ_STEP_DN_8822E)) +#define BIT_GET_LPLDH12_VADJ_STEP_DN_8822E(x) \ + (((x) >> BIT_SHIFT_LPLDH12_VADJ_STEP_DN_8822E) & \ + BIT_MASK_LPLDH12_VADJ_STEP_DN_8822E) +#define BIT_SET_LPLDH12_VADJ_STEP_DN_8822E(x, v) \ + (BIT_CLEAR_LPLDH12_VADJ_STEP_DN_8822E(x) | \ + BIT_LPLDH12_VADJ_STEP_DN_8822E(v)) + +#define BIT_SHIFT_V15ADJ_L1_STEP_DN_V1_8822E 8 +#define BIT_MASK_V15ADJ_L1_STEP_DN_V1_8822E 0xf +#define BIT_V15ADJ_L1_STEP_DN_V1_8822E(x) \ + (((x) & BIT_MASK_V15ADJ_L1_STEP_DN_V1_8822E) \ + << BIT_SHIFT_V15ADJ_L1_STEP_DN_V1_8822E) +#define BITS_V15ADJ_L1_STEP_DN_V1_8822E \ + (BIT_MASK_V15ADJ_L1_STEP_DN_V1_8822E \ + << BIT_SHIFT_V15ADJ_L1_STEP_DN_V1_8822E) +#define BIT_CLEAR_V15ADJ_L1_STEP_DN_V1_8822E(x) \ + ((x) & (~BITS_V15ADJ_L1_STEP_DN_V1_8822E)) +#define BIT_GET_V15ADJ_L1_STEP_DN_V1_8822E(x) \ + (((x) >> BIT_SHIFT_V15ADJ_L1_STEP_DN_V1_8822E) & \ + BIT_MASK_V15ADJ_L1_STEP_DN_V1_8822E) +#define BIT_SET_V15ADJ_L1_STEP_DN_V1_8822E(x, v) \ + (BIT_CLEAR_V15ADJ_L1_STEP_DN_V1_8822E(x) | \ + BIT_V15ADJ_L1_STEP_DN_V1_8822E(v)) + +#define BIT_FORCE_LEAVE_LPS_8822E BIT(3) +#define BIT_SW_AFE_MODE_8822E BIT(2) +#define BIT_REGU_32K_CLK_EN_8822E BIT(1) +#define BIT_WL_LPS_EN_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_GPIO_DEBOUNCE_CTRL_8822E */ +#define BIT_WLGP_DBC1EN_8822E BIT(15) + +#define BIT_SHIFT_WLGP_DBC1_8822E 8 +#define BIT_MASK_WLGP_DBC1_8822E 0xf +#define BIT_WLGP_DBC1_8822E(x) \ + (((x) & BIT_MASK_WLGP_DBC1_8822E) << BIT_SHIFT_WLGP_DBC1_8822E) +#define BITS_WLGP_DBC1_8822E \ + (BIT_MASK_WLGP_DBC1_8822E << BIT_SHIFT_WLGP_DBC1_8822E) +#define BIT_CLEAR_WLGP_DBC1_8822E(x) ((x) & (~BITS_WLGP_DBC1_8822E)) +#define BIT_GET_WLGP_DBC1_8822E(x) \ + (((x) >> BIT_SHIFT_WLGP_DBC1_8822E) & BIT_MASK_WLGP_DBC1_8822E) +#define BIT_SET_WLGP_DBC1_8822E(x, v) \ + (BIT_CLEAR_WLGP_DBC1_8822E(x) | BIT_WLGP_DBC1_8822E(v)) + +#define BIT_WLGP_DBC0EN_8822E BIT(7) + +#define BIT_SHIFT_WLGP_DBC0_8822E 0 +#define BIT_MASK_WLGP_DBC0_8822E 0xf +#define BIT_WLGP_DBC0_8822E(x) \ + (((x) & BIT_MASK_WLGP_DBC0_8822E) << BIT_SHIFT_WLGP_DBC0_8822E) +#define BITS_WLGP_DBC0_8822E \ + (BIT_MASK_WLGP_DBC0_8822E << BIT_SHIFT_WLGP_DBC0_8822E) +#define BIT_CLEAR_WLGP_DBC0_8822E(x) ((x) & (~BITS_WLGP_DBC0_8822E)) +#define BIT_GET_WLGP_DBC0_8822E(x) \ + (((x) >> BIT_SHIFT_WLGP_DBC0_8822E) & BIT_MASK_WLGP_DBC0_8822E) +#define BIT_SET_WLGP_DBC0_8822E(x, v) \ + (BIT_CLEAR_WLGP_DBC0_8822E(x) | BIT_WLGP_DBC0_8822E(v)) + +/* 2 REG_RPWM2_8822E */ + +#define BIT_SHIFT_RPWM2_8822E 16 +#define BIT_MASK_RPWM2_8822E 0xffff +#define BIT_RPWM2_8822E(x) \ + (((x) & BIT_MASK_RPWM2_8822E) << BIT_SHIFT_RPWM2_8822E) +#define BITS_RPWM2_8822E (BIT_MASK_RPWM2_8822E << BIT_SHIFT_RPWM2_8822E) +#define BIT_CLEAR_RPWM2_8822E(x) ((x) & (~BITS_RPWM2_8822E)) +#define BIT_GET_RPWM2_8822E(x) \ + (((x) >> BIT_SHIFT_RPWM2_8822E) & BIT_MASK_RPWM2_8822E) +#define BIT_SET_RPWM2_8822E(x, v) \ + (BIT_CLEAR_RPWM2_8822E(x) | BIT_RPWM2_8822E(v)) + +/* 2 REG_SYSON_FSM_MON_8822E */ + +#define BIT_SHIFT_FSM_MON_SEL_8822E 24 +#define BIT_MASK_FSM_MON_SEL_8822E 0x7 +#define BIT_FSM_MON_SEL_8822E(x) \ + (((x) & BIT_MASK_FSM_MON_SEL_8822E) << BIT_SHIFT_FSM_MON_SEL_8822E) +#define BITS_FSM_MON_SEL_8822E \ + (BIT_MASK_FSM_MON_SEL_8822E << BIT_SHIFT_FSM_MON_SEL_8822E) +#define BIT_CLEAR_FSM_MON_SEL_8822E(x) ((x) & (~BITS_FSM_MON_SEL_8822E)) +#define BIT_GET_FSM_MON_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_FSM_MON_SEL_8822E) & BIT_MASK_FSM_MON_SEL_8822E) +#define BIT_SET_FSM_MON_SEL_8822E(x, v) \ + (BIT_CLEAR_FSM_MON_SEL_8822E(x) | BIT_FSM_MON_SEL_8822E(v)) + +#define BIT_DOP_ELDO_8822E BIT(23) +#define BIT_FSM_MON_UPD_8822E BIT(15) + +#define BIT_SHIFT_FSM_PAR_8822E 0 +#define BIT_MASK_FSM_PAR_8822E 0x7fff +#define BIT_FSM_PAR_8822E(x) \ + (((x) & BIT_MASK_FSM_PAR_8822E) << BIT_SHIFT_FSM_PAR_8822E) +#define BITS_FSM_PAR_8822E (BIT_MASK_FSM_PAR_8822E << BIT_SHIFT_FSM_PAR_8822E) +#define BIT_CLEAR_FSM_PAR_8822E(x) ((x) & (~BITS_FSM_PAR_8822E)) +#define BIT_GET_FSM_PAR_8822E(x) \ + (((x) >> BIT_SHIFT_FSM_PAR_8822E) & BIT_MASK_FSM_PAR_8822E) +#define BIT_SET_FSM_PAR_8822E(x, v) \ + (BIT_CLEAR_FSM_PAR_8822E(x) | BIT_FSM_PAR_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_EF_ENT_8822E BIT(31) +#define BIT__BT_OTP_PWC_DIS_8822E BIT(28) +#define BIT_EF_RDT_8822E BIT(27) + +#define BIT_SHIFT_EF_PGTS_8822E 20 +#define BIT_MASK_EF_PGTS_8822E 0xf +#define BIT_EF_PGTS_8822E(x) \ + (((x) & BIT_MASK_EF_PGTS_8822E) << BIT_SHIFT_EF_PGTS_8822E) +#define BITS_EF_PGTS_8822E (BIT_MASK_EF_PGTS_8822E << BIT_SHIFT_EF_PGTS_8822E) +#define BIT_CLEAR_EF_PGTS_8822E(x) ((x) & (~BITS_EF_PGTS_8822E)) +#define BIT_GET_EF_PGTS_8822E(x) \ + (((x) >> BIT_SHIFT_EF_PGTS_8822E) & BIT_MASK_EF_PGTS_8822E) +#define BIT_SET_EF_PGTS_8822E(x, v) \ + (BIT_CLEAR_EF_PGTS_8822E(x) | BIT_EF_PGTS_8822E(v)) + +#define BIT_EF_BURST_8822E BIT(19) + +#define BIT_SHIFT_EF_TEST_SEL_8822E 16 +#define BIT_MASK_EF_TEST_SEL_8822E 0x7 +#define BIT_EF_TEST_SEL_8822E(x) \ + (((x) & BIT_MASK_EF_TEST_SEL_8822E) << BIT_SHIFT_EF_TEST_SEL_8822E) +#define BITS_EF_TEST_SEL_8822E \ + (BIT_MASK_EF_TEST_SEL_8822E << BIT_SHIFT_EF_TEST_SEL_8822E) +#define BIT_CLEAR_EF_TEST_SEL_8822E(x) ((x) & (~BITS_EF_TEST_SEL_8822E)) +#define BIT_GET_EF_TEST_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_EF_TEST_SEL_8822E) & BIT_MASK_EF_TEST_SEL_8822E) +#define BIT_SET_EF_TEST_SEL_8822E(x, v) \ + (BIT_CLEAR_EF_TEST_SEL_8822E(x) | BIT_EF_TEST_SEL_8822E(v)) + +#define BIT_EF_TROW_EN_8822E BIT(15) +#define BIT_EF_ERR_FLAG_8822E BIT(14) +#define BIT_EF_FBURST_DIS_8822E BIT(13) +#define BIT_EF_DSB_EN_8822E BIT(11) + +#define BIT_SHIFT_EF_DLY_SEL_8822E 0 +#define BIT_MASK_EF_DLY_SEL_8822E 0xf +#define BIT_EF_DLY_SEL_8822E(x) \ + (((x) & BIT_MASK_EF_DLY_SEL_8822E) << BIT_SHIFT_EF_DLY_SEL_8822E) +#define BITS_EF_DLY_SEL_8822E \ + (BIT_MASK_EF_DLY_SEL_8822E << BIT_SHIFT_EF_DLY_SEL_8822E) +#define BIT_CLEAR_EF_DLY_SEL_8822E(x) ((x) & (~BITS_EF_DLY_SEL_8822E)) +#define BIT_GET_EF_DLY_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_EF_DLY_SEL_8822E) & BIT_MASK_EF_DLY_SEL_8822E) +#define BIT_SET_EF_DLY_SEL_8822E(x, v) \ + (BIT_CLEAR_EF_DLY_SEL_8822E(x) | BIT_EF_DLY_SEL_8822E(v)) + +/* 2 REG_PMC_DBG_CTRL1_8822E */ +#define BIT_BT_INT_EN_8822E BIT(31) + +#define BIT_SHIFT_RD_WR_WIFI_BT_INFO_8822E 16 +#define BIT_MASK_RD_WR_WIFI_BT_INFO_8822E 0x7fff +#define BIT_RD_WR_WIFI_BT_INFO_8822E(x) \ + (((x) & BIT_MASK_RD_WR_WIFI_BT_INFO_8822E) \ + << BIT_SHIFT_RD_WR_WIFI_BT_INFO_8822E) +#define BITS_RD_WR_WIFI_BT_INFO_8822E \ + (BIT_MASK_RD_WR_WIFI_BT_INFO_8822E \ + << BIT_SHIFT_RD_WR_WIFI_BT_INFO_8822E) +#define BIT_CLEAR_RD_WR_WIFI_BT_INFO_8822E(x) \ + ((x) & (~BITS_RD_WR_WIFI_BT_INFO_8822E)) +#define BIT_GET_RD_WR_WIFI_BT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_RD_WR_WIFI_BT_INFO_8822E) & \ + BIT_MASK_RD_WR_WIFI_BT_INFO_8822E) +#define BIT_SET_RD_WR_WIFI_BT_INFO_8822E(x, v) \ + (BIT_CLEAR_RD_WR_WIFI_BT_INFO_8822E(x) | \ + BIT_RD_WR_WIFI_BT_INFO_8822E(v)) + +#define BIT_PMC_WR_OVF_8822E BIT(8) + +#define BIT_SHIFT_WLPMC_ERRINT_8822E 0 +#define BIT_MASK_WLPMC_ERRINT_8822E 0xff +#define BIT_WLPMC_ERRINT_8822E(x) \ + (((x) & BIT_MASK_WLPMC_ERRINT_8822E) << BIT_SHIFT_WLPMC_ERRINT_8822E) +#define BITS_WLPMC_ERRINT_8822E \ + (BIT_MASK_WLPMC_ERRINT_8822E << BIT_SHIFT_WLPMC_ERRINT_8822E) +#define BIT_CLEAR_WLPMC_ERRINT_8822E(x) ((x) & (~BITS_WLPMC_ERRINT_8822E)) +#define BIT_GET_WLPMC_ERRINT_8822E(x) \ + (((x) >> BIT_SHIFT_WLPMC_ERRINT_8822E) & BIT_MASK_WLPMC_ERRINT_8822E) +#define BIT_SET_WLPMC_ERRINT_8822E(x, v) \ + (BIT_CLEAR_WLPMC_ERRINT_8822E(x) | BIT_WLPMC_ERRINT_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_HIMR0_8822E */ +#define BIT_TIMEOUT_INTERRUPT2_MASK_8822E BIT(31) +#define BIT_TIMEOUT_INTERRUTP1_MASK_8822E BIT(30) +#define BIT_PSTIMEOUT_MSK_8822E BIT(29) +#define BIT_GTINT4_MSK_8822E BIT(28) +#define BIT_GTINT3_MSK_8822E BIT(27) +#define BIT_TXBCN0ERR_MSK_8822E BIT(26) +#define BIT_TXBCN0OK_MSK_8822E BIT(25) +#define BIT_TSF_BIT32_TOGGLE_MSK_8822E BIT(24) +#define BIT_BCNDMAINT0_MSK_8822E BIT(20) +#define BIT_BCNDERR0_MSK_8822E BIT(16) +#define BIT_HSISR_IND_ON_INT_MSK_8822E BIT(15) +#define BIT_BCNDMAINT_E_MSK_8822E BIT(14) +#define BIT_CTWEND_MSK_8822E BIT(12) +#define BIT_HISR1_IND_MSK_8822E BIT(11) +#define BIT_C2HCMD_MSK_8822E BIT(10) +#define BIT_CPWM2_MSK_8822E BIT(9) +#define BIT_CPWM_MSK_8822E BIT(8) +#define BIT_HIGHDOK_MSK_8822E BIT(7) +#define BIT_MGTDOK_MSK_8822E BIT(6) +#define BIT_BKDOK_MSK_8822E BIT(5) +#define BIT_BEDOK_MSK_8822E BIT(4) +#define BIT_VIDOK_MSK_8822E BIT(3) +#define BIT_VODOK_MSK_8822E BIT(2) +#define BIT_RDU_MSK_8822E BIT(1) +#define BIT_RXOK_MSK_8822E BIT(0) + +/* 2 REG_HISR0_8822E */ +#define BIT_PSTIMEOUT2_8822E BIT(31) +#define BIT_PSTIMEOUT1_8822E BIT(30) +#define BIT_PSTIMEOUT_8822E BIT(29) +#define BIT_GTINT4_8822E BIT(28) +#define BIT_GTINT3_8822E BIT(27) +#define BIT_TXBCN0ERR_8822E BIT(26) +#define BIT_TXBCN0OK_8822E BIT(25) +#define BIT_TSF_BIT32_TOGGLE_8822E BIT(24) +#define BIT_BCNDMAINT0_8822E BIT(20) +#define BIT_BCNDERR0_8822E BIT(16) +#define BIT_HSISR_IND_ON_INT_8822E BIT(15) +#define BIT_BCNDMAINT_E_8822E BIT(14) +#define BIT_CTWEND_8822E BIT(12) +#define BIT_HISR1_IND_INT_8822E BIT(11) +#define BIT_C2HCMD_8822E BIT(10) +#define BIT_CPWM2_8822E BIT(9) +#define BIT_CPWM_8822E BIT(8) +#define BIT_HIGHDOK_8822E BIT(7) +#define BIT_MGTDOK_8822E BIT(6) +#define BIT_BKDOK_8822E BIT(5) +#define BIT_BEDOK_8822E BIT(4) +#define BIT_VIDOK_8822E BIT(3) +#define BIT_VODOK_8822E BIT(2) +#define BIT_RDU_8822E BIT(1) +#define BIT_RXOK_8822E BIT(0) + +/* 2 REG_HIMR1_8822E */ +#define BIT_TXFIFO_TH_INT_8822E BIT(30) +#define BIT_BTON_STS_UPDATE_MASK_8822E BIT(29) +#define BIT_MCU_ERR_MASK_8822E BIT(28) +#define BIT_BCNDMAINT7__MSK_8822E BIT(27) +#define BIT_BCNDMAINT6__MSK_8822E BIT(26) +#define BIT_BCNDMAINT5__MSK_8822E BIT(25) +#define BIT_BCNDMAINT4__MSK_8822E BIT(24) +#define BIT_BCNDMAINT3_MSK_8822E BIT(23) +#define BIT_BCNDMAINT2_MSK_8822E BIT(22) +#define BIT_BCNDMAINT1_MSK_8822E BIT(21) +#define BIT_BCNDERR7_MSK_8822E BIT(20) +#define BIT_BCNDERR6_MSK_8822E BIT(19) +#define BIT_BCNDERR5_MSK_8822E BIT(18) +#define BIT_BCNDERR4_MSK_8822E BIT(17) +#define BIT_BCNDERR3_MSK_8822E BIT(16) +#define BIT_BCNDERR2_MSK_8822E BIT(15) +#define BIT_BCNDERR1_MSK_8822E BIT(14) +#define BIT_ATIMEND_E_MSK_8822E BIT(13) +#define BIT_ATIMEND__MSK_8822E BIT(12) +#define BIT_TXERR_MSK_8822E BIT(11) +#define BIT_RXERR_MSK_8822E BIT(10) +#define BIT_TXFOVW_MSK_8822E BIT(9) +#define BIT_FOVW_MSK_8822E BIT(8) +#define BIT_CPU_MGQ_TXDONE_MSK_8822E BIT(5) +#define BIT_PS_TIMER_C_MSK_8822E BIT(4) +#define BIT_PS_TIMER_B_MSK_8822E BIT(3) +#define BIT_PS_TIMER_A_MSK_8822E BIT(2) +#define BIT_CPUMGQ_TX_TIMER_MSK_8822E BIT(1) + +/* 2 REG_HISR1_8822E */ +#define BIT_TXFIFO_TH_INT_8822E BIT(30) +#define BIT_BTON_STS_UPDATE_INT_8822E BIT(29) +#define BIT_MCU_ERR_8822E BIT(28) +#define BIT_BCNDMAINT7_8822E BIT(27) +#define BIT_BCNDMAINT6_8822E BIT(26) +#define BIT_BCNDMAINT5_8822E BIT(25) +#define BIT_BCNDMAINT4_8822E BIT(24) +#define BIT_BCNDMAINT3_8822E BIT(23) +#define BIT_BCNDMAINT2_8822E BIT(22) +#define BIT_BCNDMAINT1_8822E BIT(21) +#define BIT_BCNDERR7_8822E BIT(20) +#define BIT_BCNDERR6_8822E BIT(19) +#define BIT_BCNDERR5_8822E BIT(18) +#define BIT_BCNDERR4_8822E BIT(17) +#define BIT_BCNDERR3_8822E BIT(16) +#define BIT_BCNDERR2_8822E BIT(15) +#define BIT_BCNDERR1_8822E BIT(14) +#define BIT_ATIMEND_E_8822E BIT(13) +#define BIT_ATIMEND_8822E BIT(12) +#define BIT_TXERR_INT_8822E BIT(11) +#define BIT_RXERR_INT_8822E BIT(10) +#define BIT_TXFOVW_8822E BIT(9) +#define BIT_FOVW_8822E BIT(8) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_CPU_MGQ_TXDONE_8822E BIT(5) +#define BIT_PS_TIMER_C_8822E BIT(4) +#define BIT_PS_TIMER_B_8822E BIT(3) +#define BIT_PS_TIMER_A_8822E BIT(2) +#define BIT_CPUMGQ_TX_TIMER_8822E BIT(1) + +/* 2 REG_DBG_PORT_SEL_8822E */ + +#define BIT_SHIFT_DEBUG_ST_8822E 0 +#define BIT_MASK_DEBUG_ST_8822E 0xffffffffL +#define BIT_DEBUG_ST_8822E(x) \ + (((x) & BIT_MASK_DEBUG_ST_8822E) << BIT_SHIFT_DEBUG_ST_8822E) +#define BITS_DEBUG_ST_8822E \ + (BIT_MASK_DEBUG_ST_8822E << BIT_SHIFT_DEBUG_ST_8822E) +#define BIT_CLEAR_DEBUG_ST_8822E(x) ((x) & (~BITS_DEBUG_ST_8822E)) +#define BIT_GET_DEBUG_ST_8822E(x) \ + (((x) >> BIT_SHIFT_DEBUG_ST_8822E) & BIT_MASK_DEBUG_ST_8822E) +#define BIT_SET_DEBUG_ST_8822E(x, v) \ + (BIT_CLEAR_DEBUG_ST_8822E(x) | BIT_DEBUG_ST_8822E(v)) + +/* 2 REG_PAD_CTRL2_8822E */ +#define BIT_USB3_USB2_TRANSITION_8822E BIT(20) + +#define BIT_SHIFT_USB23_SW_MODE_V1_8822E 18 +#define BIT_MASK_USB23_SW_MODE_V1_8822E 0x3 +#define BIT_USB23_SW_MODE_V1_8822E(x) \ + (((x) & BIT_MASK_USB23_SW_MODE_V1_8822E) \ + << BIT_SHIFT_USB23_SW_MODE_V1_8822E) +#define BITS_USB23_SW_MODE_V1_8822E \ + (BIT_MASK_USB23_SW_MODE_V1_8822E << BIT_SHIFT_USB23_SW_MODE_V1_8822E) +#define BIT_CLEAR_USB23_SW_MODE_V1_8822E(x) \ + ((x) & (~BITS_USB23_SW_MODE_V1_8822E)) +#define BIT_GET_USB23_SW_MODE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_USB23_SW_MODE_V1_8822E) & \ + BIT_MASK_USB23_SW_MODE_V1_8822E) +#define BIT_SET_USB23_SW_MODE_V1_8822E(x, v) \ + (BIT_CLEAR_USB23_SW_MODE_V1_8822E(x) | BIT_USB23_SW_MODE_V1_8822E(v)) + +#define BIT_NO_PDN_CHIPOFF_V1_8822E BIT(17) +#define BIT_RSM_EN_V1_8822E BIT(16) + +#define BIT_SHIFT_MATCH_CNT_8822E 8 +#define BIT_MASK_MATCH_CNT_8822E 0xff +#define BIT_MATCH_CNT_8822E(x) \ + (((x) & BIT_MASK_MATCH_CNT_8822E) << BIT_SHIFT_MATCH_CNT_8822E) +#define BITS_MATCH_CNT_8822E \ + (BIT_MASK_MATCH_CNT_8822E << BIT_SHIFT_MATCH_CNT_8822E) +#define BIT_CLEAR_MATCH_CNT_8822E(x) ((x) & (~BITS_MATCH_CNT_8822E)) +#define BIT_GET_MATCH_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_MATCH_CNT_8822E) & BIT_MASK_MATCH_CNT_8822E) +#define BIT_SET_MATCH_CNT_8822E(x, v) \ + (BIT_CLEAR_MATCH_CNT_8822E(x) | BIT_MATCH_CNT_8822E(v)) + +#define BIT_LD_B12V_EN_8822E BIT(7) +#define BIT_EECS_IOSEL_V1_8822E BIT(6) +#define BIT_EECS_DATA_O_V1_8822E BIT(5) +#define BIT_EECS_DATA_I_V1_8822E BIT(4) +#define BIT_EESK_IOSEL_V1_8822E BIT(2) +#define BIT_EESK_DATA_O_V1_8822E BIT(1) +#define BIT_EESK_DATA_I_V1_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_PMC_DBG_CTRL2_8822E */ + +#define BIT_SHIFT_EFUSE_BURN_GNT_8822E 24 +#define BIT_MASK_EFUSE_BURN_GNT_8822E 0xff +#define BIT_EFUSE_BURN_GNT_8822E(x) \ + (((x) & BIT_MASK_EFUSE_BURN_GNT_8822E) \ + << BIT_SHIFT_EFUSE_BURN_GNT_8822E) +#define BITS_EFUSE_BURN_GNT_8822E \ + (BIT_MASK_EFUSE_BURN_GNT_8822E << BIT_SHIFT_EFUSE_BURN_GNT_8822E) +#define BIT_CLEAR_EFUSE_BURN_GNT_8822E(x) ((x) & (~BITS_EFUSE_BURN_GNT_8822E)) +#define BIT_GET_EFUSE_BURN_GNT_8822E(x) \ + (((x) >> BIT_SHIFT_EFUSE_BURN_GNT_8822E) & \ + BIT_MASK_EFUSE_BURN_GNT_8822E) +#define BIT_SET_EFUSE_BURN_GNT_8822E(x, v) \ + (BIT_CLEAR_EFUSE_BURN_GNT_8822E(x) | BIT_EFUSE_BURN_GNT_8822E(v)) + +#define BIT_STOP_WL_PMC_8822E BIT(9) +#define BIT_STOP_SYM_PMC_8822E BIT(8) +#define BIT_BT_ACCESS_WL_PAGE0_8822E BIT(6) +#define BIT_REG_RST_WLPMC_8822E BIT(5) +#define BIT_REG_RST_PD12N_8822E BIT(4) +#define BIT_SYSON_DIS_WLREG_WRMSK_8822E BIT(3) +#define BIT_SYSON_DIS_PMCREG_WRMSK_8822E BIT(2) + +#define BIT_SHIFT_SYSON_REG_ARB_8822E 0 +#define BIT_MASK_SYSON_REG_ARB_8822E 0x3 +#define BIT_SYSON_REG_ARB_8822E(x) \ + (((x) & BIT_MASK_SYSON_REG_ARB_8822E) << BIT_SHIFT_SYSON_REG_ARB_8822E) +#define BITS_SYSON_REG_ARB_8822E \ + (BIT_MASK_SYSON_REG_ARB_8822E << BIT_SHIFT_SYSON_REG_ARB_8822E) +#define BIT_CLEAR_SYSON_REG_ARB_8822E(x) ((x) & (~BITS_SYSON_REG_ARB_8822E)) +#define BIT_GET_SYSON_REG_ARB_8822E(x) \ + (((x) >> BIT_SHIFT_SYSON_REG_ARB_8822E) & BIT_MASK_SYSON_REG_ARB_8822E) +#define BIT_SET_SYSON_REG_ARB_8822E(x, v) \ + (BIT_CLEAR_SYSON_REG_ARB_8822E(x) | BIT_SYSON_REG_ARB_8822E(v)) + +/* 2 REG_BIST_CTRL_8822E */ +#define BIT_BIST_USB_DIS_8822E BIT(27) +#define BIT_BIST_PCI_DIS_8822E BIT(26) +#define BIT_BIST_BT_DIS_8822E BIT(25) +#define BIT_BIST_WL_DIS_8822E BIT(24) + +#define BIT_SHIFT_BIST_RPT_SEL_8822E 16 +#define BIT_MASK_BIST_RPT_SEL_8822E 0xf +#define BIT_BIST_RPT_SEL_8822E(x) \ + (((x) & BIT_MASK_BIST_RPT_SEL_8822E) << BIT_SHIFT_BIST_RPT_SEL_8822E) +#define BITS_BIST_RPT_SEL_8822E \ + (BIT_MASK_BIST_RPT_SEL_8822E << BIT_SHIFT_BIST_RPT_SEL_8822E) +#define BIT_CLEAR_BIST_RPT_SEL_8822E(x) ((x) & (~BITS_BIST_RPT_SEL_8822E)) +#define BIT_GET_BIST_RPT_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_BIST_RPT_SEL_8822E) & BIT_MASK_BIST_RPT_SEL_8822E) +#define BIT_SET_BIST_RPT_SEL_8822E(x, v) \ + (BIT_CLEAR_BIST_RPT_SEL_8822E(x) | BIT_BIST_RPT_SEL_8822E(v)) + +#define BIT_BIST_RESUME_PS_8822E BIT(4) +#define BIT_BIST_RESUME_8822E BIT(3) +#define BIT_BIST_NORMAL_8822E BIT(2) +#define BIT_BIST_RSTN_8822E BIT(1) +#define BIT_BIST_CLK_EN_8822E BIT(0) + +/* 2 REG_BIST_RPT_8822E */ + +#define BIT_SHIFT_MBIST_REPORT_8822E 0 +#define BIT_MASK_MBIST_REPORT_8822E 0xffffffffL +#define BIT_MBIST_REPORT_8822E(x) \ + (((x) & BIT_MASK_MBIST_REPORT_8822E) << BIT_SHIFT_MBIST_REPORT_8822E) +#define BITS_MBIST_REPORT_8822E \ + (BIT_MASK_MBIST_REPORT_8822E << BIT_SHIFT_MBIST_REPORT_8822E) +#define BIT_CLEAR_MBIST_REPORT_8822E(x) ((x) & (~BITS_MBIST_REPORT_8822E)) +#define BIT_GET_MBIST_REPORT_8822E(x) \ + (((x) >> BIT_SHIFT_MBIST_REPORT_8822E) & BIT_MASK_MBIST_REPORT_8822E) +#define BIT_SET_MBIST_REPORT_8822E(x, v) \ + (BIT_CLEAR_MBIST_REPORT_8822E(x) | BIT_MBIST_REPORT_8822E(v)) + +/* 2 REG_MEM_CTRL_8822E */ +#define BIT_UMEM_RME_8822E BIT(31) + +#define BIT_SHIFT_BT_SPRAM_8822E 28 +#define BIT_MASK_BT_SPRAM_8822E 0x3 +#define BIT_BT_SPRAM_8822E(x) \ + (((x) & BIT_MASK_BT_SPRAM_8822E) << BIT_SHIFT_BT_SPRAM_8822E) +#define BITS_BT_SPRAM_8822E \ + (BIT_MASK_BT_SPRAM_8822E << BIT_SHIFT_BT_SPRAM_8822E) +#define BIT_CLEAR_BT_SPRAM_8822E(x) ((x) & (~BITS_BT_SPRAM_8822E)) +#define BIT_GET_BT_SPRAM_8822E(x) \ + (((x) >> BIT_SHIFT_BT_SPRAM_8822E) & BIT_MASK_BT_SPRAM_8822E) +#define BIT_SET_BT_SPRAM_8822E(x, v) \ + (BIT_CLEAR_BT_SPRAM_8822E(x) | BIT_BT_SPRAM_8822E(v)) + +#define BIT_SHIFT_BT_ROM_8822E 24 +#define BIT_MASK_BT_ROM_8822E 0xf +#define BIT_BT_ROM_8822E(x) \ + (((x) & BIT_MASK_BT_ROM_8822E) << BIT_SHIFT_BT_ROM_8822E) +#define BITS_BT_ROM_8822E (BIT_MASK_BT_ROM_8822E << BIT_SHIFT_BT_ROM_8822E) +#define BIT_CLEAR_BT_ROM_8822E(x) ((x) & (~BITS_BT_ROM_8822E)) +#define BIT_GET_BT_ROM_8822E(x) \ + (((x) >> BIT_SHIFT_BT_ROM_8822E) & BIT_MASK_BT_ROM_8822E) +#define BIT_SET_BT_ROM_8822E(x, v) \ + (BIT_CLEAR_BT_ROM_8822E(x) | BIT_BT_ROM_8822E(v)) + +#define BIT_SHIFT_PCI_DPRAM_8822E 10 +#define BIT_MASK_PCI_DPRAM_8822E 0x3 +#define BIT_PCI_DPRAM_8822E(x) \ + (((x) & BIT_MASK_PCI_DPRAM_8822E) << BIT_SHIFT_PCI_DPRAM_8822E) +#define BITS_PCI_DPRAM_8822E \ + (BIT_MASK_PCI_DPRAM_8822E << BIT_SHIFT_PCI_DPRAM_8822E) +#define BIT_CLEAR_PCI_DPRAM_8822E(x) ((x) & (~BITS_PCI_DPRAM_8822E)) +#define BIT_GET_PCI_DPRAM_8822E(x) \ + (((x) >> BIT_SHIFT_PCI_DPRAM_8822E) & BIT_MASK_PCI_DPRAM_8822E) +#define BIT_SET_PCI_DPRAM_8822E(x, v) \ + (BIT_CLEAR_PCI_DPRAM_8822E(x) | BIT_PCI_DPRAM_8822E(v)) + +#define BIT_SHIFT_PCI_SPRAM_8822E 8 +#define BIT_MASK_PCI_SPRAM_8822E 0x3 +#define BIT_PCI_SPRAM_8822E(x) \ + (((x) & BIT_MASK_PCI_SPRAM_8822E) << BIT_SHIFT_PCI_SPRAM_8822E) +#define BITS_PCI_SPRAM_8822E \ + (BIT_MASK_PCI_SPRAM_8822E << BIT_SHIFT_PCI_SPRAM_8822E) +#define BIT_CLEAR_PCI_SPRAM_8822E(x) ((x) & (~BITS_PCI_SPRAM_8822E)) +#define BIT_GET_PCI_SPRAM_8822E(x) \ + (((x) >> BIT_SHIFT_PCI_SPRAM_8822E) & BIT_MASK_PCI_SPRAM_8822E) +#define BIT_SET_PCI_SPRAM_8822E(x, v) \ + (BIT_CLEAR_PCI_SPRAM_8822E(x) | BIT_PCI_SPRAM_8822E(v)) + +#define BIT_SHIFT_USB_SPRAM_8822E 6 +#define BIT_MASK_USB_SPRAM_8822E 0x3 +#define BIT_USB_SPRAM_8822E(x) \ + (((x) & BIT_MASK_USB_SPRAM_8822E) << BIT_SHIFT_USB_SPRAM_8822E) +#define BITS_USB_SPRAM_8822E \ + (BIT_MASK_USB_SPRAM_8822E << BIT_SHIFT_USB_SPRAM_8822E) +#define BIT_CLEAR_USB_SPRAM_8822E(x) ((x) & (~BITS_USB_SPRAM_8822E)) +#define BIT_GET_USB_SPRAM_8822E(x) \ + (((x) >> BIT_SHIFT_USB_SPRAM_8822E) & BIT_MASK_USB_SPRAM_8822E) +#define BIT_SET_USB_SPRAM_8822E(x, v) \ + (BIT_CLEAR_USB_SPRAM_8822E(x) | BIT_USB_SPRAM_8822E(v)) + +#define BIT_SHIFT_USB_SPRF_8822E 4 +#define BIT_MASK_USB_SPRF_8822E 0x3 +#define BIT_USB_SPRF_8822E(x) \ + (((x) & BIT_MASK_USB_SPRF_8822E) << BIT_SHIFT_USB_SPRF_8822E) +#define BITS_USB_SPRF_8822E \ + (BIT_MASK_USB_SPRF_8822E << BIT_SHIFT_USB_SPRF_8822E) +#define BIT_CLEAR_USB_SPRF_8822E(x) ((x) & (~BITS_USB_SPRF_8822E)) +#define BIT_GET_USB_SPRF_8822E(x) \ + (((x) >> BIT_SHIFT_USB_SPRF_8822E) & BIT_MASK_USB_SPRF_8822E) +#define BIT_SET_USB_SPRF_8822E(x, v) \ + (BIT_CLEAR_USB_SPRF_8822E(x) | BIT_USB_SPRF_8822E(v)) + +#define BIT_SHIFT_MCU_ROM_8822E 0 +#define BIT_MASK_MCU_ROM_8822E 0xf +#define BIT_MCU_ROM_8822E(x) \ + (((x) & BIT_MASK_MCU_ROM_8822E) << BIT_SHIFT_MCU_ROM_8822E) +#define BITS_MCU_ROM_8822E (BIT_MASK_MCU_ROM_8822E << BIT_SHIFT_MCU_ROM_8822E) +#define BIT_CLEAR_MCU_ROM_8822E(x) ((x) & (~BITS_MCU_ROM_8822E)) +#define BIT_GET_MCU_ROM_8822E(x) \ + (((x) >> BIT_SHIFT_MCU_ROM_8822E) & BIT_MASK_MCU_ROM_8822E) +#define BIT_SET_MCU_ROM_8822E(x, v) \ + (BIT_CLEAR_MCU_ROM_8822E(x) | BIT_MCU_ROM_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_USB_SIE_INTF_8822E */ +#define BIT_RD_SEL_8822E BIT(31) +#define BIT_USB_SIE_INTF_WE_V1_8822E BIT(30) +#define BIT_USB_SIE_INTF_BYIOREG_V1_8822E BIT(29) +#define BIT_USB_SIE_SELECT_8822E BIT(28) + +#define BIT_SHIFT_USB_SIE_INTF_ADDR_V1_8822E 16 +#define BIT_MASK_USB_SIE_INTF_ADDR_V1_8822E 0x1ff +#define BIT_USB_SIE_INTF_ADDR_V1_8822E(x) \ + (((x) & BIT_MASK_USB_SIE_INTF_ADDR_V1_8822E) \ + << BIT_SHIFT_USB_SIE_INTF_ADDR_V1_8822E) +#define BITS_USB_SIE_INTF_ADDR_V1_8822E \ + (BIT_MASK_USB_SIE_INTF_ADDR_V1_8822E \ + << BIT_SHIFT_USB_SIE_INTF_ADDR_V1_8822E) +#define BIT_CLEAR_USB_SIE_INTF_ADDR_V1_8822E(x) \ + ((x) & (~BITS_USB_SIE_INTF_ADDR_V1_8822E)) +#define BIT_GET_USB_SIE_INTF_ADDR_V1_8822E(x) \ + (((x) >> BIT_SHIFT_USB_SIE_INTF_ADDR_V1_8822E) & \ + BIT_MASK_USB_SIE_INTF_ADDR_V1_8822E) +#define BIT_SET_USB_SIE_INTF_ADDR_V1_8822E(x, v) \ + (BIT_CLEAR_USB_SIE_INTF_ADDR_V1_8822E(x) | \ + BIT_USB_SIE_INTF_ADDR_V1_8822E(v)) + +#define BIT_SHIFT_USB_SIE_INTF_RD_8822E 8 +#define BIT_MASK_USB_SIE_INTF_RD_8822E 0xff +#define BIT_USB_SIE_INTF_RD_8822E(x) \ + (((x) & BIT_MASK_USB_SIE_INTF_RD_8822E) \ + << BIT_SHIFT_USB_SIE_INTF_RD_8822E) +#define BITS_USB_SIE_INTF_RD_8822E \ + (BIT_MASK_USB_SIE_INTF_RD_8822E << BIT_SHIFT_USB_SIE_INTF_RD_8822E) +#define BIT_CLEAR_USB_SIE_INTF_RD_8822E(x) ((x) & (~BITS_USB_SIE_INTF_RD_8822E)) +#define BIT_GET_USB_SIE_INTF_RD_8822E(x) \ + (((x) >> BIT_SHIFT_USB_SIE_INTF_RD_8822E) & \ + BIT_MASK_USB_SIE_INTF_RD_8822E) +#define BIT_SET_USB_SIE_INTF_RD_8822E(x, v) \ + (BIT_CLEAR_USB_SIE_INTF_RD_8822E(x) | BIT_USB_SIE_INTF_RD_8822E(v)) + +#define BIT_SHIFT_USB_SIE_INTF_WD_8822E 0 +#define BIT_MASK_USB_SIE_INTF_WD_8822E 0xff +#define BIT_USB_SIE_INTF_WD_8822E(x) \ + (((x) & BIT_MASK_USB_SIE_INTF_WD_8822E) \ + << BIT_SHIFT_USB_SIE_INTF_WD_8822E) +#define BITS_USB_SIE_INTF_WD_8822E \ + (BIT_MASK_USB_SIE_INTF_WD_8822E << BIT_SHIFT_USB_SIE_INTF_WD_8822E) +#define BIT_CLEAR_USB_SIE_INTF_WD_8822E(x) ((x) & (~BITS_USB_SIE_INTF_WD_8822E)) +#define BIT_GET_USB_SIE_INTF_WD_8822E(x) \ + (((x) >> BIT_SHIFT_USB_SIE_INTF_WD_8822E) & \ + BIT_MASK_USB_SIE_INTF_WD_8822E) +#define BIT_SET_USB_SIE_INTF_WD_8822E(x, v) \ + (BIT_CLEAR_USB_SIE_INTF_WD_8822E(x) | BIT_USB_SIE_INTF_WD_8822E(v)) + +/* 2 REG_PCIE_MIO_INTF_8822E */ + +#define BIT_SHIFT_PCIE_MIO_ADDR_PAGE_8822E 16 +#define BIT_MASK_PCIE_MIO_ADDR_PAGE_8822E 0x3 +#define BIT_PCIE_MIO_ADDR_PAGE_8822E(x) \ + (((x) & BIT_MASK_PCIE_MIO_ADDR_PAGE_8822E) \ + << BIT_SHIFT_PCIE_MIO_ADDR_PAGE_8822E) +#define BITS_PCIE_MIO_ADDR_PAGE_8822E \ + (BIT_MASK_PCIE_MIO_ADDR_PAGE_8822E \ + << BIT_SHIFT_PCIE_MIO_ADDR_PAGE_8822E) +#define BIT_CLEAR_PCIE_MIO_ADDR_PAGE_8822E(x) \ + ((x) & (~BITS_PCIE_MIO_ADDR_PAGE_8822E)) +#define BIT_GET_PCIE_MIO_ADDR_PAGE_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_MIO_ADDR_PAGE_8822E) & \ + BIT_MASK_PCIE_MIO_ADDR_PAGE_8822E) +#define BIT_SET_PCIE_MIO_ADDR_PAGE_8822E(x, v) \ + (BIT_CLEAR_PCIE_MIO_ADDR_PAGE_8822E(x) | \ + BIT_PCIE_MIO_ADDR_PAGE_8822E(v)) + +#define BIT_PCIE_MIO_BYIOREG_8822E BIT(13) +#define BIT_PCIE_MIO_RE_8822E BIT(12) + +#define BIT_SHIFT_PCIE_MIO_WE_8822E 8 +#define BIT_MASK_PCIE_MIO_WE_8822E 0xf +#define BIT_PCIE_MIO_WE_8822E(x) \ + (((x) & BIT_MASK_PCIE_MIO_WE_8822E) << BIT_SHIFT_PCIE_MIO_WE_8822E) +#define BITS_PCIE_MIO_WE_8822E \ + (BIT_MASK_PCIE_MIO_WE_8822E << BIT_SHIFT_PCIE_MIO_WE_8822E) +#define BIT_CLEAR_PCIE_MIO_WE_8822E(x) ((x) & (~BITS_PCIE_MIO_WE_8822E)) +#define BIT_GET_PCIE_MIO_WE_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_MIO_WE_8822E) & BIT_MASK_PCIE_MIO_WE_8822E) +#define BIT_SET_PCIE_MIO_WE_8822E(x, v) \ + (BIT_CLEAR_PCIE_MIO_WE_8822E(x) | BIT_PCIE_MIO_WE_8822E(v)) + +#define BIT_SHIFT_PCIE_MIO_ADDR_8822E 0 +#define BIT_MASK_PCIE_MIO_ADDR_8822E 0xff +#define BIT_PCIE_MIO_ADDR_8822E(x) \ + (((x) & BIT_MASK_PCIE_MIO_ADDR_8822E) << BIT_SHIFT_PCIE_MIO_ADDR_8822E) +#define BITS_PCIE_MIO_ADDR_8822E \ + (BIT_MASK_PCIE_MIO_ADDR_8822E << BIT_SHIFT_PCIE_MIO_ADDR_8822E) +#define BIT_CLEAR_PCIE_MIO_ADDR_8822E(x) ((x) & (~BITS_PCIE_MIO_ADDR_8822E)) +#define BIT_GET_PCIE_MIO_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_MIO_ADDR_8822E) & BIT_MASK_PCIE_MIO_ADDR_8822E) +#define BIT_SET_PCIE_MIO_ADDR_8822E(x, v) \ + (BIT_CLEAR_PCIE_MIO_ADDR_8822E(x) | BIT_PCIE_MIO_ADDR_8822E(v)) + +/* 2 REG_PCIE_MIO_INTD_8822E */ + +#define BIT_SHIFT_PCIE_MIO_DATA_8822E 0 +#define BIT_MASK_PCIE_MIO_DATA_8822E 0xffffffffL +#define BIT_PCIE_MIO_DATA_8822E(x) \ + (((x) & BIT_MASK_PCIE_MIO_DATA_8822E) << BIT_SHIFT_PCIE_MIO_DATA_8822E) +#define BITS_PCIE_MIO_DATA_8822E \ + (BIT_MASK_PCIE_MIO_DATA_8822E << BIT_SHIFT_PCIE_MIO_DATA_8822E) +#define BIT_CLEAR_PCIE_MIO_DATA_8822E(x) ((x) & (~BITS_PCIE_MIO_DATA_8822E)) +#define BIT_GET_PCIE_MIO_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_MIO_DATA_8822E) & BIT_MASK_PCIE_MIO_DATA_8822E) +#define BIT_SET_PCIE_MIO_DATA_8822E(x, v) \ + (BIT_CLEAR_PCIE_MIO_DATA_8822E(x) | BIT_PCIE_MIO_DATA_8822E(v)) + +/* 2 REG_WLRF1_8822E */ +#define BIT_S1_RFC_WO_0_8822E BIT(31) +#define BIT_S1_RFC_WT_0_8822E BIT(30) +#define BIT_S1_RFC_RSTB_8822E BIT(25) + +/* 2 REG_SYS_CFG1_8822E */ + +#define BIT_SHIFT_TRP_ICFG_8822E 28 +#define BIT_MASK_TRP_ICFG_8822E 0xf +#define BIT_TRP_ICFG_8822E(x) \ + (((x) & BIT_MASK_TRP_ICFG_8822E) << BIT_SHIFT_TRP_ICFG_8822E) +#define BITS_TRP_ICFG_8822E \ + (BIT_MASK_TRP_ICFG_8822E << BIT_SHIFT_TRP_ICFG_8822E) +#define BIT_CLEAR_TRP_ICFG_8822E(x) ((x) & (~BITS_TRP_ICFG_8822E)) +#define BIT_GET_TRP_ICFG_8822E(x) \ + (((x) >> BIT_SHIFT_TRP_ICFG_8822E) & BIT_MASK_TRP_ICFG_8822E) +#define BIT_SET_TRP_ICFG_8822E(x, v) \ + (BIT_CLEAR_TRP_ICFG_8822E(x) | BIT_TRP_ICFG_8822E(v)) + +#define BIT_RF_TYPE_ID_8822E BIT(27) +#define BIT_BD_HCI_SEL_8822E BIT(26) +#define BIT_BD_PKG_SEL_8822E BIT(25) +#define BIT_INTERNAL_EXTERNAL_SWR_8822E BIT(24) +#define BIT_RTL_ID_8822E BIT(23) +#define BIT_PAD_HWPD_IDN_8822E BIT(22) +#define BIT_TESTMODE_8822E BIT(20) + +#define BIT_SHIFT_VENDOR_ID_8822E 16 +#define BIT_MASK_VENDOR_ID_8822E 0xf +#define BIT_VENDOR_ID_8822E(x) \ + (((x) & BIT_MASK_VENDOR_ID_8822E) << BIT_SHIFT_VENDOR_ID_8822E) +#define BITS_VENDOR_ID_8822E \ + (BIT_MASK_VENDOR_ID_8822E << BIT_SHIFT_VENDOR_ID_8822E) +#define BIT_CLEAR_VENDOR_ID_8822E(x) ((x) & (~BITS_VENDOR_ID_8822E)) +#define BIT_GET_VENDOR_ID_8822E(x) \ + (((x) >> BIT_SHIFT_VENDOR_ID_8822E) & BIT_MASK_VENDOR_ID_8822E) +#define BIT_SET_VENDOR_ID_8822E(x, v) \ + (BIT_CLEAR_VENDOR_ID_8822E(x) | BIT_VENDOR_ID_8822E(v)) + +#define BIT_SHIFT_CHIP_VER_8822E 12 +#define BIT_MASK_CHIP_VER_8822E 0xf +#define BIT_CHIP_VER_8822E(x) \ + (((x) & BIT_MASK_CHIP_VER_8822E) << BIT_SHIFT_CHIP_VER_8822E) +#define BITS_CHIP_VER_8822E \ + (BIT_MASK_CHIP_VER_8822E << BIT_SHIFT_CHIP_VER_8822E) +#define BIT_CLEAR_CHIP_VER_8822E(x) ((x) & (~BITS_CHIP_VER_8822E)) +#define BIT_GET_CHIP_VER_8822E(x) \ + (((x) >> BIT_SHIFT_CHIP_VER_8822E) & BIT_MASK_CHIP_VER_8822E) +#define BIT_SET_CHIP_VER_8822E(x, v) \ + (BIT_CLEAR_CHIP_VER_8822E(x) | BIT_CHIP_VER_8822E(v)) + +#define BIT_BD_MAC3_8822E BIT(11) +#define BIT_BD_MAC1_8822E BIT(10) +#define BIT_BD_MAC2_8822E BIT(9) +#define BIT_SIC_IDLE_8822E BIT(8) +#define BIT_SW_OFFLOAD_EN_8822E BIT(7) +#define BIT_OCP_SHUTDN_8822E BIT(6) +#define BIT_V15_VLD_8822E BIT(5) +#define BIT_PCIRSTB_8822E BIT(4) +#define BIT_PCLK_VLD_8822E BIT(3) +#define BIT_UCLK_VLD_8822E BIT(2) +#define BIT_ACLK_VLD_8822E BIT(1) +#define BIT_XCLK_VLD_8822E BIT(0) + +/* 2 REG_SYS_STATUS1_8822E */ + +#define BIT_SHIFT_RF_RL_ID_8822E 28 +#define BIT_MASK_RF_RL_ID_8822E 0xf +#define BIT_RF_RL_ID_8822E(x) \ + (((x) & BIT_MASK_RF_RL_ID_8822E) << BIT_SHIFT_RF_RL_ID_8822E) +#define BITS_RF_RL_ID_8822E \ + (BIT_MASK_RF_RL_ID_8822E << BIT_SHIFT_RF_RL_ID_8822E) +#define BIT_CLEAR_RF_RL_ID_8822E(x) ((x) & (~BITS_RF_RL_ID_8822E)) +#define BIT_GET_RF_RL_ID_8822E(x) \ + (((x) >> BIT_SHIFT_RF_RL_ID_8822E) & BIT_MASK_RF_RL_ID_8822E) +#define BIT_SET_RF_RL_ID_8822E(x, v) \ + (BIT_CLEAR_RF_RL_ID_8822E(x) | BIT_RF_RL_ID_8822E(v)) + +#define BIT_HPHY_ICFG_8822E BIT(19) + +#define BIT_SHIFT_SEL_0XC0_8822E 16 +#define BIT_MASK_SEL_0XC0_8822E 0x3 +#define BIT_SEL_0XC0_8822E(x) \ + (((x) & BIT_MASK_SEL_0XC0_8822E) << BIT_SHIFT_SEL_0XC0_8822E) +#define BITS_SEL_0XC0_8822E \ + (BIT_MASK_SEL_0XC0_8822E << BIT_SHIFT_SEL_0XC0_8822E) +#define BIT_CLEAR_SEL_0XC0_8822E(x) ((x) & (~BITS_SEL_0XC0_8822E)) +#define BIT_GET_SEL_0XC0_8822E(x) \ + (((x) >> BIT_SHIFT_SEL_0XC0_8822E) & BIT_MASK_SEL_0XC0_8822E) +#define BIT_SET_SEL_0XC0_8822E(x, v) \ + (BIT_CLEAR_SEL_0XC0_8822E(x) | BIT_SEL_0XC0_8822E(v)) + +#define BIT_SHIFT_HCI_SEL_V4_8822E 12 +#define BIT_MASK_HCI_SEL_V4_8822E 0x3 +#define BIT_HCI_SEL_V4_8822E(x) \ + (((x) & BIT_MASK_HCI_SEL_V4_8822E) << BIT_SHIFT_HCI_SEL_V4_8822E) +#define BITS_HCI_SEL_V4_8822E \ + (BIT_MASK_HCI_SEL_V4_8822E << BIT_SHIFT_HCI_SEL_V4_8822E) +#define BIT_CLEAR_HCI_SEL_V4_8822E(x) ((x) & (~BITS_HCI_SEL_V4_8822E)) +#define BIT_GET_HCI_SEL_V4_8822E(x) \ + (((x) >> BIT_SHIFT_HCI_SEL_V4_8822E) & BIT_MASK_HCI_SEL_V4_8822E) +#define BIT_SET_HCI_SEL_V4_8822E(x, v) \ + (BIT_CLEAR_HCI_SEL_V4_8822E(x) | BIT_HCI_SEL_V4_8822E(v)) + +#define BIT_USB_OPERATION_MODE_8822E BIT(10) +#define BIT_BT_PDN_8822E BIT(9) +#define BIT_AUTO_WLPON_8822E BIT(8) +#define BIT_WL_MODE_8822E BIT(7) +#define BIT_PKG_SEL_HCI_8822E BIT(6) + +#define BIT_SHIFT_PAD_HCI_SEL_V2_8822E 3 +#define BIT_MASK_PAD_HCI_SEL_V2_8822E 0x3 +#define BIT_PAD_HCI_SEL_V2_8822E(x) \ + (((x) & BIT_MASK_PAD_HCI_SEL_V2_8822E) \ + << BIT_SHIFT_PAD_HCI_SEL_V2_8822E) +#define BITS_PAD_HCI_SEL_V2_8822E \ + (BIT_MASK_PAD_HCI_SEL_V2_8822E << BIT_SHIFT_PAD_HCI_SEL_V2_8822E) +#define BIT_CLEAR_PAD_HCI_SEL_V2_8822E(x) ((x) & (~BITS_PAD_HCI_SEL_V2_8822E)) +#define BIT_GET_PAD_HCI_SEL_V2_8822E(x) \ + (((x) >> BIT_SHIFT_PAD_HCI_SEL_V2_8822E) & \ + BIT_MASK_PAD_HCI_SEL_V2_8822E) +#define BIT_SET_PAD_HCI_SEL_V2_8822E(x, v) \ + (BIT_CLEAR_PAD_HCI_SEL_V2_8822E(x) | BIT_PAD_HCI_SEL_V2_8822E(v)) + +#define BIT_SHIFT_EFS_HCI_SEL_V1_8822E 0 +#define BIT_MASK_EFS_HCI_SEL_V1_8822E 0x7 +#define BIT_EFS_HCI_SEL_V1_8822E(x) \ + (((x) & BIT_MASK_EFS_HCI_SEL_V1_8822E) \ + << BIT_SHIFT_EFS_HCI_SEL_V1_8822E) +#define BITS_EFS_HCI_SEL_V1_8822E \ + (BIT_MASK_EFS_HCI_SEL_V1_8822E << BIT_SHIFT_EFS_HCI_SEL_V1_8822E) +#define BIT_CLEAR_EFS_HCI_SEL_V1_8822E(x) ((x) & (~BITS_EFS_HCI_SEL_V1_8822E)) +#define BIT_GET_EFS_HCI_SEL_V1_8822E(x) \ + (((x) >> BIT_SHIFT_EFS_HCI_SEL_V1_8822E) & \ + BIT_MASK_EFS_HCI_SEL_V1_8822E) +#define BIT_SET_EFS_HCI_SEL_V1_8822E(x, v) \ + (BIT_CLEAR_EFS_HCI_SEL_V1_8822E(x) | BIT_EFS_HCI_SEL_V1_8822E(v)) + +/* 2 REG_SYS_STATUS2_8822E */ +#define BIT_HIOE_ON_TIMEOUT_8822E BIT(23) +#define BIT_SIC_ON_TIMEOUT_8822E BIT(22) +#define BIT_CPU_ON_TIMEOUT_8822E BIT(21) +#define BIT_HCI_ON_TIMEOUT_8822E BIT(20) +#define BIT_SIO_ALDN_8822E BIT(19) +#define BIT_USB_ALDN_8822E BIT(18) +#define BIT_PCI_ALDN_8822E BIT(17) +#define BIT_SYS_ALDN_8822E BIT(16) + +#define BIT_SHIFT_EPVID1_8822E 8 +#define BIT_MASK_EPVID1_8822E 0xff +#define BIT_EPVID1_8822E(x) \ + (((x) & BIT_MASK_EPVID1_8822E) << BIT_SHIFT_EPVID1_8822E) +#define BITS_EPVID1_8822E (BIT_MASK_EPVID1_8822E << BIT_SHIFT_EPVID1_8822E) +#define BIT_CLEAR_EPVID1_8822E(x) ((x) & (~BITS_EPVID1_8822E)) +#define BIT_GET_EPVID1_8822E(x) \ + (((x) >> BIT_SHIFT_EPVID1_8822E) & BIT_MASK_EPVID1_8822E) +#define BIT_SET_EPVID1_8822E(x, v) \ + (BIT_CLEAR_EPVID1_8822E(x) | BIT_EPVID1_8822E(v)) + +#define BIT_SHIFT_EPVID0_8822E 0 +#define BIT_MASK_EPVID0_8822E 0xff +#define BIT_EPVID0_8822E(x) \ + (((x) & BIT_MASK_EPVID0_8822E) << BIT_SHIFT_EPVID0_8822E) +#define BITS_EPVID0_8822E (BIT_MASK_EPVID0_8822E << BIT_SHIFT_EPVID0_8822E) +#define BIT_CLEAR_EPVID0_8822E(x) ((x) & (~BITS_EPVID0_8822E)) +#define BIT_GET_EPVID0_8822E(x) \ + (((x) >> BIT_SHIFT_EPVID0_8822E) & BIT_MASK_EPVID0_8822E) +#define BIT_SET_EPVID0_8822E(x, v) \ + (BIT_CLEAR_EPVID0_8822E(x) | BIT_EPVID0_8822E(v)) + +/* 2 REG_SYS_CFG2_8822E */ +#define BIT_HCI_SEL_EMBEDDED_8822E BIT(8) + +#define BIT_SHIFT_HW_ID_8822E 0 +#define BIT_MASK_HW_ID_8822E 0xff +#define BIT_HW_ID_8822E(x) \ + (((x) & BIT_MASK_HW_ID_8822E) << BIT_SHIFT_HW_ID_8822E) +#define BITS_HW_ID_8822E (BIT_MASK_HW_ID_8822E << BIT_SHIFT_HW_ID_8822E) +#define BIT_CLEAR_HW_ID_8822E(x) ((x) & (~BITS_HW_ID_8822E)) +#define BIT_GET_HW_ID_8822E(x) \ + (((x) >> BIT_SHIFT_HW_ID_8822E) & BIT_MASK_HW_ID_8822E) +#define BIT_SET_HW_ID_8822E(x, v) \ + (BIT_CLEAR_HW_ID_8822E(x) | BIT_HW_ID_8822E(v)) + +/* 2 REG_SYS_CFG3_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_ANAPARSW_MAC_0_8822E */ +#define BIT_OCP_L1_PWM_8822E BIT(31) +#define BIT_POWOCP_L1_8822E BIT(30) + +#define BIT_SHIFT_SAW_FREQ_L_8822E 26 +#define BIT_MASK_SAW_FREQ_L_8822E 0xf +#define BIT_SAW_FREQ_L_8822E(x) \ + (((x) & BIT_MASK_SAW_FREQ_L_8822E) << BIT_SHIFT_SAW_FREQ_L_8822E) +#define BITS_SAW_FREQ_L_8822E \ + (BIT_MASK_SAW_FREQ_L_8822E << BIT_SHIFT_SAW_FREQ_L_8822E) +#define BIT_CLEAR_SAW_FREQ_L_8822E(x) ((x) & (~BITS_SAW_FREQ_L_8822E)) +#define BIT_GET_SAW_FREQ_L_8822E(x) \ + (((x) >> BIT_SHIFT_SAW_FREQ_L_8822E) & BIT_MASK_SAW_FREQ_L_8822E) +#define BIT_SET_SAW_FREQ_L_8822E(x, v) \ + (BIT_CLEAR_SAW_FREQ_L_8822E(x) | BIT_SAW_FREQ_L_8822E(v)) + +#define BIT_SHIFT_R3_L1_8822E 24 +#define BIT_MASK_R3_L1_8822E 0x3 +#define BIT_R3_L1_8822E(x) \ + (((x) & BIT_MASK_R3_L1_8822E) << BIT_SHIFT_R3_L1_8822E) +#define BITS_R3_L1_8822E (BIT_MASK_R3_L1_8822E << BIT_SHIFT_R3_L1_8822E) +#define BIT_CLEAR_R3_L1_8822E(x) ((x) & (~BITS_R3_L1_8822E)) +#define BIT_GET_R3_L1_8822E(x) \ + (((x) >> BIT_SHIFT_R3_L1_8822E) & BIT_MASK_R3_L1_8822E) +#define BIT_SET_R3_L1_8822E(x, v) \ + (BIT_CLEAR_R3_L1_8822E(x) | BIT_R3_L1_8822E(v)) + +#define BIT_SHIFT_R2_L1_8822E 22 +#define BIT_MASK_R2_L1_8822E 0x3 +#define BIT_R2_L1_8822E(x) \ + (((x) & BIT_MASK_R2_L1_8822E) << BIT_SHIFT_R2_L1_8822E) +#define BITS_R2_L1_8822E (BIT_MASK_R2_L1_8822E << BIT_SHIFT_R2_L1_8822E) +#define BIT_CLEAR_R2_L1_8822E(x) ((x) & (~BITS_R2_L1_8822E)) +#define BIT_GET_R2_L1_8822E(x) \ + (((x) >> BIT_SHIFT_R2_L1_8822E) & BIT_MASK_R2_L1_8822E) +#define BIT_SET_R2_L1_8822E(x, v) \ + (BIT_CLEAR_R2_L1_8822E(x) | BIT_R2_L1_8822E(v)) + +#define BIT_SHIFT_R1_L1_8822E 20 +#define BIT_MASK_R1_L1_8822E 0x3 +#define BIT_R1_L1_8822E(x) \ + (((x) & BIT_MASK_R1_L1_8822E) << BIT_SHIFT_R1_L1_8822E) +#define BITS_R1_L1_8822E (BIT_MASK_R1_L1_8822E << BIT_SHIFT_R1_L1_8822E) +#define BIT_CLEAR_R1_L1_8822E(x) ((x) & (~BITS_R1_L1_8822E)) +#define BIT_GET_R1_L1_8822E(x) \ + (((x) >> BIT_SHIFT_R1_L1_8822E) & BIT_MASK_R1_L1_8822E) +#define BIT_SET_R1_L1_8822E(x, v) \ + (BIT_CLEAR_R1_L1_8822E(x) | BIT_R1_L1_8822E(v)) + +#define BIT_SHIFT_C3_L1_8822E 18 +#define BIT_MASK_C3_L1_8822E 0x3 +#define BIT_C3_L1_8822E(x) \ + (((x) & BIT_MASK_C3_L1_8822E) << BIT_SHIFT_C3_L1_8822E) +#define BITS_C3_L1_8822E (BIT_MASK_C3_L1_8822E << BIT_SHIFT_C3_L1_8822E) +#define BIT_CLEAR_C3_L1_8822E(x) ((x) & (~BITS_C3_L1_8822E)) +#define BIT_GET_C3_L1_8822E(x) \ + (((x) >> BIT_SHIFT_C3_L1_8822E) & BIT_MASK_C3_L1_8822E) +#define BIT_SET_C3_L1_8822E(x, v) \ + (BIT_CLEAR_C3_L1_8822E(x) | BIT_C3_L1_8822E(v)) + +#define BIT_SHIFT_C2_L1_8822E 16 +#define BIT_MASK_C2_L1_8822E 0x3 +#define BIT_C2_L1_8822E(x) \ + (((x) & BIT_MASK_C2_L1_8822E) << BIT_SHIFT_C2_L1_8822E) +#define BITS_C2_L1_8822E (BIT_MASK_C2_L1_8822E << BIT_SHIFT_C2_L1_8822E) +#define BIT_CLEAR_C2_L1_8822E(x) ((x) & (~BITS_C2_L1_8822E)) +#define BIT_GET_C2_L1_8822E(x) \ + (((x) >> BIT_SHIFT_C2_L1_8822E) & BIT_MASK_C2_L1_8822E) +#define BIT_SET_C2_L1_8822E(x, v) \ + (BIT_CLEAR_C2_L1_8822E(x) | BIT_C2_L1_8822E(v)) + +#define BIT_SHIFT_C1_L1_8822E 14 +#define BIT_MASK_C1_L1_8822E 0x3 +#define BIT_C1_L1_8822E(x) \ + (((x) & BIT_MASK_C1_L1_8822E) << BIT_SHIFT_C1_L1_8822E) +#define BITS_C1_L1_8822E (BIT_MASK_C1_L1_8822E << BIT_SHIFT_C1_L1_8822E) +#define BIT_CLEAR_C1_L1_8822E(x) ((x) & (~BITS_C1_L1_8822E)) +#define BIT_GET_C1_L1_8822E(x) \ + (((x) >> BIT_SHIFT_C1_L1_8822E) & BIT_MASK_C1_L1_8822E) +#define BIT_SET_C1_L1_8822E(x, v) \ + (BIT_CLEAR_C1_L1_8822E(x) | BIT_C1_L1_8822E(v)) + +#define BIT_REG_NMOS_OFF_L_8822E BIT(13) +#define BIT_FPWM_L1_8822E BIT(12) + +#define BIT_SHIFT_V15ADJ_L_8822E 9 +#define BIT_MASK_V15ADJ_L_8822E 0x7 +#define BIT_V15ADJ_L_8822E(x) \ + (((x) & BIT_MASK_V15ADJ_L_8822E) << BIT_SHIFT_V15ADJ_L_8822E) +#define BITS_V15ADJ_L_8822E \ + (BIT_MASK_V15ADJ_L_8822E << BIT_SHIFT_V15ADJ_L_8822E) +#define BIT_CLEAR_V15ADJ_L_8822E(x) ((x) & (~BITS_V15ADJ_L_8822E)) +#define BIT_GET_V15ADJ_L_8822E(x) \ + (((x) >> BIT_SHIFT_V15ADJ_L_8822E) & BIT_MASK_V15ADJ_L_8822E) +#define BIT_SET_V15ADJ_L_8822E(x, v) \ + (BIT_CLEAR_V15ADJ_L_8822E(x) | BIT_V15ADJ_L_8822E(v)) + +#define BIT_SHIFT_IN_L_8822E 6 +#define BIT_MASK_IN_L_8822E 0x7 +#define BIT_IN_L_8822E(x) (((x) & BIT_MASK_IN_L_8822E) << BIT_SHIFT_IN_L_8822E) +#define BITS_IN_L_8822E (BIT_MASK_IN_L_8822E << BIT_SHIFT_IN_L_8822E) +#define BIT_CLEAR_IN_L_8822E(x) ((x) & (~BITS_IN_L_8822E)) +#define BIT_GET_IN_L_8822E(x) \ + (((x) >> BIT_SHIFT_IN_L_8822E) & BIT_MASK_IN_L_8822E) +#define BIT_SET_IN_L_8822E(x, v) (BIT_CLEAR_IN_L_8822E(x) | BIT_IN_L_8822E(v)) + +#define BIT_SHIFT_STD_L1_8822E 4 +#define BIT_MASK_STD_L1_8822E 0x3 +#define BIT_STD_L1_8822E(x) \ + (((x) & BIT_MASK_STD_L1_8822E) << BIT_SHIFT_STD_L1_8822E) +#define BITS_STD_L1_8822E (BIT_MASK_STD_L1_8822E << BIT_SHIFT_STD_L1_8822E) +#define BIT_CLEAR_STD_L1_8822E(x) ((x) & (~BITS_STD_L1_8822E)) +#define BIT_GET_STD_L1_8822E(x) \ + (((x) >> BIT_SHIFT_STD_L1_8822E) & BIT_MASK_STD_L1_8822E) +#define BIT_SET_STD_L1_8822E(x, v) \ + (BIT_CLEAR_STD_L1_8822E(x) | BIT_STD_L1_8822E(v)) + +#define BIT_SHIFT_VOL_L1_8822E 0 +#define BIT_MASK_VOL_L1_8822E 0xf +#define BIT_VOL_L1_8822E(x) \ + (((x) & BIT_MASK_VOL_L1_8822E) << BIT_SHIFT_VOL_L1_8822E) +#define BITS_VOL_L1_8822E (BIT_MASK_VOL_L1_8822E << BIT_SHIFT_VOL_L1_8822E) +#define BIT_CLEAR_VOL_L1_8822E(x) ((x) & (~BITS_VOL_L1_8822E)) +#define BIT_GET_VOL_L1_8822E(x) \ + (((x) >> BIT_SHIFT_VOL_L1_8822E) & BIT_MASK_VOL_L1_8822E) +#define BIT_SET_VOL_L1_8822E(x, v) \ + (BIT_CLEAR_VOL_L1_8822E(x) | BIT_VOL_L1_8822E(v)) + +/* 2 REG_ANAPARSW_MAC_1_8822E */ + +#define BIT_SHIFT_OCP_L1_PFM_8822E 29 +#define BIT_MASK_OCP_L1_PFM_8822E 0x7 +#define BIT_OCP_L1_PFM_8822E(x) \ + (((x) & BIT_MASK_OCP_L1_PFM_8822E) << BIT_SHIFT_OCP_L1_PFM_8822E) +#define BITS_OCP_L1_PFM_8822E \ + (BIT_MASK_OCP_L1_PFM_8822E << BIT_SHIFT_OCP_L1_PFM_8822E) +#define BIT_CLEAR_OCP_L1_PFM_8822E(x) ((x) & (~BITS_OCP_L1_PFM_8822E)) +#define BIT_GET_OCP_L1_PFM_8822E(x) \ + (((x) >> BIT_SHIFT_OCP_L1_PFM_8822E) & BIT_MASK_OCP_L1_PFM_8822E) +#define BIT_SET_OCP_L1_PFM_8822E(x, v) \ + (BIT_CLEAR_OCP_L1_PFM_8822E(x) | BIT_OCP_L1_PFM_8822E(v)) + +#define BIT_REG_OSC200K_EN_8822E BIT(16) +#define BIT_POW_AUTO_L_8822E BIT(15) +#define BIT_REG_VOFB_SEL_8822E BIT(14) +#define BIT_REG_TYPE_L_V2_8822E BIT(13) +#define BIT_DUMMY_8822E BIT(12) +#define BIT_ARENB_H_8822E BIT(11) + +#define BIT_SHIFT_TBOX_L1_V2_8822E 9 +#define BIT_MASK_TBOX_L1_V2_8822E 0x3 +#define BIT_TBOX_L1_V2_8822E(x) \ + (((x) & BIT_MASK_TBOX_L1_V2_8822E) << BIT_SHIFT_TBOX_L1_V2_8822E) +#define BITS_TBOX_L1_V2_8822E \ + (BIT_MASK_TBOX_L1_V2_8822E << BIT_SHIFT_TBOX_L1_V2_8822E) +#define BIT_CLEAR_TBOX_L1_V2_8822E(x) ((x) & (~BITS_TBOX_L1_V2_8822E)) +#define BIT_GET_TBOX_L1_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TBOX_L1_V2_8822E) & BIT_MASK_TBOX_L1_V2_8822E) +#define BIT_SET_TBOX_L1_V2_8822E(x, v) \ + (BIT_CLEAR_TBOX_L1_V2_8822E(x) | BIT_TBOX_L1_V2_8822E(v)) + +#define BIT_SHIFT_PRE_DRIVER_8822E 7 +#define BIT_MASK_PRE_DRIVER_8822E 0x3 +#define BIT_PRE_DRIVER_8822E(x) \ + (((x) & BIT_MASK_PRE_DRIVER_8822E) << BIT_SHIFT_PRE_DRIVER_8822E) +#define BITS_PRE_DRIVER_8822E \ + (BIT_MASK_PRE_DRIVER_8822E << BIT_SHIFT_PRE_DRIVER_8822E) +#define BIT_CLEAR_PRE_DRIVER_8822E(x) ((x) & (~BITS_PRE_DRIVER_8822E)) +#define BIT_GET_PRE_DRIVER_8822E(x) \ + (((x) >> BIT_SHIFT_PRE_DRIVER_8822E) & BIT_MASK_PRE_DRIVER_8822E) +#define BIT_SET_PRE_DRIVER_8822E(x, v) \ + (BIT_CLEAR_PRE_DRIVER_8822E(x) | BIT_PRE_DRIVER_8822E(v)) + +#define BIT_EN_ON_END_L_8822E BIT(6) +#define BIT_REG_BYPASS_L_V2_8822E BIT(5) +#define BIT_REG_AUTOZCD_L_8822E BIT(4) +#define BIT_POW_ZCD_L_V2_8822E BIT(3) +#define BIT_REG_MOS_HALF_L_8822E BIT(2) + +#define BIT_SHIFT_OCP_L1_PWM_V1_8822E 0 +#define BIT_MASK_OCP_L1_PWM_V1_8822E 0x3 +#define BIT_OCP_L1_PWM_V1_8822E(x) \ + (((x) & BIT_MASK_OCP_L1_PWM_V1_8822E) << BIT_SHIFT_OCP_L1_PWM_V1_8822E) +#define BITS_OCP_L1_PWM_V1_8822E \ + (BIT_MASK_OCP_L1_PWM_V1_8822E << BIT_SHIFT_OCP_L1_PWM_V1_8822E) +#define BIT_CLEAR_OCP_L1_PWM_V1_8822E(x) ((x) & (~BITS_OCP_L1_PWM_V1_8822E)) +#define BIT_GET_OCP_L1_PWM_V1_8822E(x) \ + (((x) >> BIT_SHIFT_OCP_L1_PWM_V1_8822E) & BIT_MASK_OCP_L1_PWM_V1_8822E) +#define BIT_SET_OCP_L1_PWM_V1_8822E(x, v) \ + (BIT_CLEAR_OCP_L1_PWM_V1_8822E(x) | BIT_OCP_L1_PWM_V1_8822E(v)) + +/* 2 REG_ANAPAR_MAC_0_8822E */ + +#define BIT_SHIFT_REG_LPF_R3_8822E 29 +#define BIT_MASK_REG_LPF_R3_8822E 0x7 +#define BIT_REG_LPF_R3_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_R3_8822E) << BIT_SHIFT_REG_LPF_R3_8822E) +#define BITS_REG_LPF_R3_8822E \ + (BIT_MASK_REG_LPF_R3_8822E << BIT_SHIFT_REG_LPF_R3_8822E) +#define BIT_CLEAR_REG_LPF_R3_8822E(x) ((x) & (~BITS_REG_LPF_R3_8822E)) +#define BIT_GET_REG_LPF_R3_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_R3_8822E) & BIT_MASK_REG_LPF_R3_8822E) +#define BIT_SET_REG_LPF_R3_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_R3_8822E(x) | BIT_REG_LPF_R3_8822E(v)) + +#define BIT_SHIFT_REG_LPF_R2_8822E 24 +#define BIT_MASK_REG_LPF_R2_8822E 0x1f +#define BIT_REG_LPF_R2_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_R2_8822E) << BIT_SHIFT_REG_LPF_R2_8822E) +#define BITS_REG_LPF_R2_8822E \ + (BIT_MASK_REG_LPF_R2_8822E << BIT_SHIFT_REG_LPF_R2_8822E) +#define BIT_CLEAR_REG_LPF_R2_8822E(x) ((x) & (~BITS_REG_LPF_R2_8822E)) +#define BIT_GET_REG_LPF_R2_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_R2_8822E) & BIT_MASK_REG_LPF_R2_8822E) +#define BIT_SET_REG_LPF_R2_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_R2_8822E(x) | BIT_REG_LPF_R2_8822E(v)) + +#define BIT_SHIFT_REG_LPF_C3_8822E 21 +#define BIT_MASK_REG_LPF_C3_8822E 0x7 +#define BIT_REG_LPF_C3_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_C3_8822E) << BIT_SHIFT_REG_LPF_C3_8822E) +#define BITS_REG_LPF_C3_8822E \ + (BIT_MASK_REG_LPF_C3_8822E << BIT_SHIFT_REG_LPF_C3_8822E) +#define BIT_CLEAR_REG_LPF_C3_8822E(x) ((x) & (~BITS_REG_LPF_C3_8822E)) +#define BIT_GET_REG_LPF_C3_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_C3_8822E) & BIT_MASK_REG_LPF_C3_8822E) +#define BIT_SET_REG_LPF_C3_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_C3_8822E(x) | BIT_REG_LPF_C3_8822E(v)) + +#define BIT_SHIFT_REG_LPF_C2_8822E 18 +#define BIT_MASK_REG_LPF_C2_8822E 0x7 +#define BIT_REG_LPF_C2_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_C2_8822E) << BIT_SHIFT_REG_LPF_C2_8822E) +#define BITS_REG_LPF_C2_8822E \ + (BIT_MASK_REG_LPF_C2_8822E << BIT_SHIFT_REG_LPF_C2_8822E) +#define BIT_CLEAR_REG_LPF_C2_8822E(x) ((x) & (~BITS_REG_LPF_C2_8822E)) +#define BIT_GET_REG_LPF_C2_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_C2_8822E) & BIT_MASK_REG_LPF_C2_8822E) +#define BIT_SET_REG_LPF_C2_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_C2_8822E(x) | BIT_REG_LPF_C2_8822E(v)) + +#define BIT_SHIFT_REG_LPF_C1_8822E 15 +#define BIT_MASK_REG_LPF_C1_8822E 0x7 +#define BIT_REG_LPF_C1_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_C1_8822E) << BIT_SHIFT_REG_LPF_C1_8822E) +#define BITS_REG_LPF_C1_8822E \ + (BIT_MASK_REG_LPF_C1_8822E << BIT_SHIFT_REG_LPF_C1_8822E) +#define BIT_CLEAR_REG_LPF_C1_8822E(x) ((x) & (~BITS_REG_LPF_C1_8822E)) +#define BIT_GET_REG_LPF_C1_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_C1_8822E) & BIT_MASK_REG_LPF_C1_8822E) +#define BIT_SET_REG_LPF_C1_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_C1_8822E(x) | BIT_REG_LPF_C1_8822E(v)) + +#define BIT_SHIFT_REG_LDO_SEL_V1_8822E 13 +#define BIT_MASK_REG_LDO_SEL_V1_8822E 0x3 +#define BIT_REG_LDO_SEL_V1_8822E(x) \ + (((x) & BIT_MASK_REG_LDO_SEL_V1_8822E) \ + << BIT_SHIFT_REG_LDO_SEL_V1_8822E) +#define BITS_REG_LDO_SEL_V1_8822E \ + (BIT_MASK_REG_LDO_SEL_V1_8822E << BIT_SHIFT_REG_LDO_SEL_V1_8822E) +#define BIT_CLEAR_REG_LDO_SEL_V1_8822E(x) ((x) & (~BITS_REG_LDO_SEL_V1_8822E)) +#define BIT_GET_REG_LDO_SEL_V1_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LDO_SEL_V1_8822E) & \ + BIT_MASK_REG_LDO_SEL_V1_8822E) +#define BIT_SET_REG_LDO_SEL_V1_8822E(x, v) \ + (BIT_CLEAR_REG_LDO_SEL_V1_8822E(x) | BIT_REG_LDO_SEL_V1_8822E(v)) + +#define BIT_REG_CP_ICPX2_8822E BIT(12) + +#define BIT_SHIFT_REG_CP_ICP_SEL_FAST_8822E 9 +#define BIT_MASK_REG_CP_ICP_SEL_FAST_8822E 0x7 +#define BIT_REG_CP_ICP_SEL_FAST_8822E(x) \ + (((x) & BIT_MASK_REG_CP_ICP_SEL_FAST_8822E) \ + << BIT_SHIFT_REG_CP_ICP_SEL_FAST_8822E) +#define BITS_REG_CP_ICP_SEL_FAST_8822E \ + (BIT_MASK_REG_CP_ICP_SEL_FAST_8822E \ + << BIT_SHIFT_REG_CP_ICP_SEL_FAST_8822E) +#define BIT_CLEAR_REG_CP_ICP_SEL_FAST_8822E(x) \ + ((x) & (~BITS_REG_CP_ICP_SEL_FAST_8822E)) +#define BIT_GET_REG_CP_ICP_SEL_FAST_8822E(x) \ + (((x) >> BIT_SHIFT_REG_CP_ICP_SEL_FAST_8822E) & \ + BIT_MASK_REG_CP_ICP_SEL_FAST_8822E) +#define BIT_SET_REG_CP_ICP_SEL_FAST_8822E(x, v) \ + (BIT_CLEAR_REG_CP_ICP_SEL_FAST_8822E(x) | \ + BIT_REG_CP_ICP_SEL_FAST_8822E(v)) + +#define BIT_SHIFT_REG_CP_ICP_SEL_8822E 6 +#define BIT_MASK_REG_CP_ICP_SEL_8822E 0x7 +#define BIT_REG_CP_ICP_SEL_8822E(x) \ + (((x) & BIT_MASK_REG_CP_ICP_SEL_8822E) \ + << BIT_SHIFT_REG_CP_ICP_SEL_8822E) +#define BITS_REG_CP_ICP_SEL_8822E \ + (BIT_MASK_REG_CP_ICP_SEL_8822E << BIT_SHIFT_REG_CP_ICP_SEL_8822E) +#define BIT_CLEAR_REG_CP_ICP_SEL_8822E(x) ((x) & (~BITS_REG_CP_ICP_SEL_8822E)) +#define BIT_GET_REG_CP_ICP_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_REG_CP_ICP_SEL_8822E) & \ + BIT_MASK_REG_CP_ICP_SEL_8822E) +#define BIT_SET_REG_CP_ICP_SEL_8822E(x, v) \ + (BIT_CLEAR_REG_CP_ICP_SEL_8822E(x) | BIT_REG_CP_ICP_SEL_8822E(v)) + +#define BIT_SHIFT_REG_IB_PI_8822E 4 +#define BIT_MASK_REG_IB_PI_8822E 0x3 +#define BIT_REG_IB_PI_8822E(x) \ + (((x) & BIT_MASK_REG_IB_PI_8822E) << BIT_SHIFT_REG_IB_PI_8822E) +#define BITS_REG_IB_PI_8822E \ + (BIT_MASK_REG_IB_PI_8822E << BIT_SHIFT_REG_IB_PI_8822E) +#define BIT_CLEAR_REG_IB_PI_8822E(x) ((x) & (~BITS_REG_IB_PI_8822E)) +#define BIT_GET_REG_IB_PI_8822E(x) \ + (((x) >> BIT_SHIFT_REG_IB_PI_8822E) & BIT_MASK_REG_IB_PI_8822E) +#define BIT_SET_REG_IB_PI_8822E(x, v) \ + (BIT_CLEAR_REG_IB_PI_8822E(x) | BIT_REG_IB_PI_8822E(v)) + +#define BIT_LDO2PWRCUT_8822E BIT(3) +#define BIT_VPULSE_LDO_8822E BIT(2) + +#define BIT_SHIFT_LDO_VSEL_8822E 0 +#define BIT_MASK_LDO_VSEL_8822E 0x3 +#define BIT_LDO_VSEL_8822E(x) \ + (((x) & BIT_MASK_LDO_VSEL_8822E) << BIT_SHIFT_LDO_VSEL_8822E) +#define BITS_LDO_VSEL_8822E \ + (BIT_MASK_LDO_VSEL_8822E << BIT_SHIFT_LDO_VSEL_8822E) +#define BIT_CLEAR_LDO_VSEL_8822E(x) ((x) & (~BITS_LDO_VSEL_8822E)) +#define BIT_GET_LDO_VSEL_8822E(x) \ + (((x) >> BIT_SHIFT_LDO_VSEL_8822E) & BIT_MASK_LDO_VSEL_8822E) +#define BIT_SET_LDO_VSEL_8822E(x, v) \ + (BIT_CLEAR_LDO_VSEL_8822E(x) | BIT_LDO_VSEL_8822E(v)) + +/* 2 REG_ANAPAR_MAC_1_8822E */ + +#define BIT_SHIFT_REG_CK_MON_SEL_8822E 29 +#define BIT_MASK_REG_CK_MON_SEL_8822E 0x7 +#define BIT_REG_CK_MON_SEL_8822E(x) \ + (((x) & BIT_MASK_REG_CK_MON_SEL_8822E) \ + << BIT_SHIFT_REG_CK_MON_SEL_8822E) +#define BITS_REG_CK_MON_SEL_8822E \ + (BIT_MASK_REG_CK_MON_SEL_8822E << BIT_SHIFT_REG_CK_MON_SEL_8822E) +#define BIT_CLEAR_REG_CK_MON_SEL_8822E(x) ((x) & (~BITS_REG_CK_MON_SEL_8822E)) +#define BIT_GET_REG_CK_MON_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_REG_CK_MON_SEL_8822E) & \ + BIT_MASK_REG_CK_MON_SEL_8822E) +#define BIT_SET_REG_CK_MON_SEL_8822E(x, v) \ + (BIT_CLEAR_REG_CK_MON_SEL_8822E(x) | BIT_REG_CK_MON_SEL_8822E(v)) + +#define BIT_REG_CK_MON_EN_8822E BIT(28) +#define BIT_REG_XTAL_FREQ_SEL_8822E BIT(27) +#define BIT_REG_XTAL_EDGE_SEL_8822E BIT(26) +#define BIT_REG_VCO_KVCO_8822E BIT(25) +#define BIT_REG_SDM_EDGE_SEL_8822E BIT(24) +#define BIT_REG_SDM_CK_SEL_8822E BIT(23) +#define BIT_REG_SDM_CK_GATED_8822E BIT(22) +#define BIT_REG_PFD_RESET_GATED_8822E BIT(21) + +#define BIT_SHIFT_REG_LPF_R3_FAST_8822E 16 +#define BIT_MASK_REG_LPF_R3_FAST_8822E 0x1f +#define BIT_REG_LPF_R3_FAST_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_R3_FAST_8822E) \ + << BIT_SHIFT_REG_LPF_R3_FAST_8822E) +#define BITS_REG_LPF_R3_FAST_8822E \ + (BIT_MASK_REG_LPF_R3_FAST_8822E << BIT_SHIFT_REG_LPF_R3_FAST_8822E) +#define BIT_CLEAR_REG_LPF_R3_FAST_8822E(x) ((x) & (~BITS_REG_LPF_R3_FAST_8822E)) +#define BIT_GET_REG_LPF_R3_FAST_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_R3_FAST_8822E) & \ + BIT_MASK_REG_LPF_R3_FAST_8822E) +#define BIT_SET_REG_LPF_R3_FAST_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_R3_FAST_8822E(x) | BIT_REG_LPF_R3_FAST_8822E(v)) + +#define BIT_SHIFT_REG_LPF_R2_FAST_8822E 11 +#define BIT_MASK_REG_LPF_R2_FAST_8822E 0x1f +#define BIT_REG_LPF_R2_FAST_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_R2_FAST_8822E) \ + << BIT_SHIFT_REG_LPF_R2_FAST_8822E) +#define BITS_REG_LPF_R2_FAST_8822E \ + (BIT_MASK_REG_LPF_R2_FAST_8822E << BIT_SHIFT_REG_LPF_R2_FAST_8822E) +#define BIT_CLEAR_REG_LPF_R2_FAST_8822E(x) ((x) & (~BITS_REG_LPF_R2_FAST_8822E)) +#define BIT_GET_REG_LPF_R2_FAST_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_R2_FAST_8822E) & \ + BIT_MASK_REG_LPF_R2_FAST_8822E) +#define BIT_SET_REG_LPF_R2_FAST_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_R2_FAST_8822E(x) | BIT_REG_LPF_R2_FAST_8822E(v)) + +#define BIT_SHIFT_REG_LPF_C3_FAST_8822E 8 +#define BIT_MASK_REG_LPF_C3_FAST_8822E 0x7 +#define BIT_REG_LPF_C3_FAST_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_C3_FAST_8822E) \ + << BIT_SHIFT_REG_LPF_C3_FAST_8822E) +#define BITS_REG_LPF_C3_FAST_8822E \ + (BIT_MASK_REG_LPF_C3_FAST_8822E << BIT_SHIFT_REG_LPF_C3_FAST_8822E) +#define BIT_CLEAR_REG_LPF_C3_FAST_8822E(x) ((x) & (~BITS_REG_LPF_C3_FAST_8822E)) +#define BIT_GET_REG_LPF_C3_FAST_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_C3_FAST_8822E) & \ + BIT_MASK_REG_LPF_C3_FAST_8822E) +#define BIT_SET_REG_LPF_C3_FAST_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_C3_FAST_8822E(x) | BIT_REG_LPF_C3_FAST_8822E(v)) + +#define BIT_SHIFT_REG_LPF_C2_FAST_8822E 5 +#define BIT_MASK_REG_LPF_C2_FAST_8822E 0x7 +#define BIT_REG_LPF_C2_FAST_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_C2_FAST_8822E) \ + << BIT_SHIFT_REG_LPF_C2_FAST_8822E) +#define BITS_REG_LPF_C2_FAST_8822E \ + (BIT_MASK_REG_LPF_C2_FAST_8822E << BIT_SHIFT_REG_LPF_C2_FAST_8822E) +#define BIT_CLEAR_REG_LPF_C2_FAST_8822E(x) ((x) & (~BITS_REG_LPF_C2_FAST_8822E)) +#define BIT_GET_REG_LPF_C2_FAST_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_C2_FAST_8822E) & \ + BIT_MASK_REG_LPF_C2_FAST_8822E) +#define BIT_SET_REG_LPF_C2_FAST_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_C2_FAST_8822E(x) | BIT_REG_LPF_C2_FAST_8822E(v)) + +#define BIT_SHIFT_REG_LPF_C1_FAST_8822E 2 +#define BIT_MASK_REG_LPF_C1_FAST_8822E 0x7 +#define BIT_REG_LPF_C1_FAST_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_C1_FAST_8822E) \ + << BIT_SHIFT_REG_LPF_C1_FAST_8822E) +#define BITS_REG_LPF_C1_FAST_8822E \ + (BIT_MASK_REG_LPF_C1_FAST_8822E << BIT_SHIFT_REG_LPF_C1_FAST_8822E) +#define BIT_CLEAR_REG_LPF_C1_FAST_8822E(x) ((x) & (~BITS_REG_LPF_C1_FAST_8822E)) +#define BIT_GET_REG_LPF_C1_FAST_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_C1_FAST_8822E) & \ + BIT_MASK_REG_LPF_C1_FAST_8822E) +#define BIT_SET_REG_LPF_C1_FAST_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_C1_FAST_8822E(x) | BIT_REG_LPF_C1_FAST_8822E(v)) + +#define BIT_SHIFT_REG_LPF_R3_V1_8822E 0 +#define BIT_MASK_REG_LPF_R3_V1_8822E 0x3 +#define BIT_REG_LPF_R3_V1_8822E(x) \ + (((x) & BIT_MASK_REG_LPF_R3_V1_8822E) << BIT_SHIFT_REG_LPF_R3_V1_8822E) +#define BITS_REG_LPF_R3_V1_8822E \ + (BIT_MASK_REG_LPF_R3_V1_8822E << BIT_SHIFT_REG_LPF_R3_V1_8822E) +#define BIT_CLEAR_REG_LPF_R3_V1_8822E(x) ((x) & (~BITS_REG_LPF_R3_V1_8822E)) +#define BIT_GET_REG_LPF_R3_V1_8822E(x) \ + (((x) >> BIT_SHIFT_REG_LPF_R3_V1_8822E) & BIT_MASK_REG_LPF_R3_V1_8822E) +#define BIT_SET_REG_LPF_R3_V1_8822E(x, v) \ + (BIT_CLEAR_REG_LPF_R3_V1_8822E(x) | BIT_REG_LPF_R3_V1_8822E(v)) + +/* 2 REG_ANAPAR_MAC_2_8822E */ + +#define BIT_SHIFT_AGPIO_DRV_V1_8822E 30 +#define BIT_MASK_AGPIO_DRV_V1_8822E 0x3 +#define BIT_AGPIO_DRV_V1_8822E(x) \ + (((x) & BIT_MASK_AGPIO_DRV_V1_8822E) << BIT_SHIFT_AGPIO_DRV_V1_8822E) +#define BITS_AGPIO_DRV_V1_8822E \ + (BIT_MASK_AGPIO_DRV_V1_8822E << BIT_SHIFT_AGPIO_DRV_V1_8822E) +#define BIT_CLEAR_AGPIO_DRV_V1_8822E(x) ((x) & (~BITS_AGPIO_DRV_V1_8822E)) +#define BIT_GET_AGPIO_DRV_V1_8822E(x) \ + (((x) >> BIT_SHIFT_AGPIO_DRV_V1_8822E) & BIT_MASK_AGPIO_DRV_V1_8822E) +#define BIT_SET_AGPIO_DRV_V1_8822E(x, v) \ + (BIT_CLEAR_AGPIO_DRV_V1_8822E(x) | BIT_AGPIO_DRV_V1_8822E(v)) + +#define BIT_AGPIO_GPO_V1_8822E BIT(29) +#define BIT_AGPIO_GPE_V1_8822E BIT(28) +#define BIT_SEL_CLK_8822E BIT(27) + +#define BIT_SHIFT_LS_XTAL_SEL_8822E 23 +#define BIT_MASK_LS_XTAL_SEL_8822E 0xf +#define BIT_LS_XTAL_SEL_8822E(x) \ + (((x) & BIT_MASK_LS_XTAL_SEL_8822E) << BIT_SHIFT_LS_XTAL_SEL_8822E) +#define BITS_LS_XTAL_SEL_8822E \ + (BIT_MASK_LS_XTAL_SEL_8822E << BIT_SHIFT_LS_XTAL_SEL_8822E) +#define BIT_CLEAR_LS_XTAL_SEL_8822E(x) ((x) & (~BITS_LS_XTAL_SEL_8822E)) +#define BIT_GET_LS_XTAL_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_LS_XTAL_SEL_8822E) & BIT_MASK_LS_XTAL_SEL_8822E) +#define BIT_SET_LS_XTAL_SEL_8822E(x, v) \ + (BIT_CLEAR_LS_XTAL_SEL_8822E(x) | BIT_LS_XTAL_SEL_8822E(v)) + +#define BIT_LS_SDM_ORDER_V1_8822E BIT(22) +#define BIT_LS_DELAY_PH_8822E BIT(21) +#define BIT_DIVIDER_SEL_8822E BIT(20) + +#define BIT_SHIFT_PCODE_8822E 15 +#define BIT_MASK_PCODE_8822E 0x1f +#define BIT_PCODE_8822E(x) \ + (((x) & BIT_MASK_PCODE_8822E) << BIT_SHIFT_PCODE_8822E) +#define BITS_PCODE_8822E (BIT_MASK_PCODE_8822E << BIT_SHIFT_PCODE_8822E) +#define BIT_CLEAR_PCODE_8822E(x) ((x) & (~BITS_PCODE_8822E)) +#define BIT_GET_PCODE_8822E(x) \ + (((x) >> BIT_SHIFT_PCODE_8822E) & BIT_MASK_PCODE_8822E) +#define BIT_SET_PCODE_8822E(x, v) \ + (BIT_CLEAR_PCODE_8822E(x) | BIT_PCODE_8822E(v)) + +#define BIT_SHIFT_NCODE_8822E 7 +#define BIT_MASK_NCODE_8822E 0xff +#define BIT_NCODE_8822E(x) \ + (((x) & BIT_MASK_NCODE_8822E) << BIT_SHIFT_NCODE_8822E) +#define BITS_NCODE_8822E (BIT_MASK_NCODE_8822E << BIT_SHIFT_NCODE_8822E) +#define BIT_CLEAR_NCODE_8822E(x) ((x) & (~BITS_NCODE_8822E)) +#define BIT_GET_NCODE_8822E(x) \ + (((x) >> BIT_SHIFT_NCODE_8822E) & BIT_MASK_NCODE_8822E) +#define BIT_SET_NCODE_8822E(x, v) \ + (BIT_CLEAR_NCODE_8822E(x) | BIT_NCODE_8822E(v)) + +#define BIT_REG_BEACON_8822E BIT(6) +#define BIT_REG_MBIASE_8822E BIT(5) + +#define BIT_SHIFT_REG_FAST_SEL_8822E 3 +#define BIT_MASK_REG_FAST_SEL_8822E 0x3 +#define BIT_REG_FAST_SEL_8822E(x) \ + (((x) & BIT_MASK_REG_FAST_SEL_8822E) << BIT_SHIFT_REG_FAST_SEL_8822E) +#define BITS_REG_FAST_SEL_8822E \ + (BIT_MASK_REG_FAST_SEL_8822E << BIT_SHIFT_REG_FAST_SEL_8822E) +#define BIT_CLEAR_REG_FAST_SEL_8822E(x) ((x) & (~BITS_REG_FAST_SEL_8822E)) +#define BIT_GET_REG_FAST_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_REG_FAST_SEL_8822E) & BIT_MASK_REG_FAST_SEL_8822E) +#define BIT_SET_REG_FAST_SEL_8822E(x, v) \ + (BIT_CLEAR_REG_FAST_SEL_8822E(x) | BIT_REG_FAST_SEL_8822E(v)) + +#define BIT_REG_CK960M_EN_8822E BIT(2) +#define BIT_REG_CK320M_EN_8822E BIT(1) +#define BIT_REG_CK_5M_EN_8822E BIT(0) + +/* 2 REG_ANAPAR_MAC_3_8822E */ +#define BIT_REG_VC_TH_8822E BIT(3) +#define BIT_REG_VC_TL_8822E BIT(2) +#define BIT_REG_CK40M_EN_8822E BIT(1) +#define BIT_REG_CK640M_EN_8822E BIT(0) + +/* 2 REG_ANAPARSW_MAC_2_8822E */ + +#define BIT_SHIFT_BG_R1_TUNE_8822E 6 +#define BIT_MASK_BG_R1_TUNE_8822E 0x7 +#define BIT_BG_R1_TUNE_8822E(x) \ + (((x) & BIT_MASK_BG_R1_TUNE_8822E) << BIT_SHIFT_BG_R1_TUNE_8822E) +#define BITS_BG_R1_TUNE_8822E \ + (BIT_MASK_BG_R1_TUNE_8822E << BIT_SHIFT_BG_R1_TUNE_8822E) +#define BIT_CLEAR_BG_R1_TUNE_8822E(x) ((x) & (~BITS_BG_R1_TUNE_8822E)) +#define BIT_GET_BG_R1_TUNE_8822E(x) \ + (((x) >> BIT_SHIFT_BG_R1_TUNE_8822E) & BIT_MASK_BG_R1_TUNE_8822E) +#define BIT_SET_BG_R1_TUNE_8822E(x, v) \ + (BIT_CLEAR_BG_R1_TUNE_8822E(x) | BIT_BG_R1_TUNE_8822E(v)) + +#define BIT_SHIFT_BG_R2_TUNE_8822E 3 +#define BIT_MASK_BG_R2_TUNE_8822E 0x7 +#define BIT_BG_R2_TUNE_8822E(x) \ + (((x) & BIT_MASK_BG_R2_TUNE_8822E) << BIT_SHIFT_BG_R2_TUNE_8822E) +#define BITS_BG_R2_TUNE_8822E \ + (BIT_MASK_BG_R2_TUNE_8822E << BIT_SHIFT_BG_R2_TUNE_8822E) +#define BIT_CLEAR_BG_R2_TUNE_8822E(x) ((x) & (~BITS_BG_R2_TUNE_8822E)) +#define BIT_GET_BG_R2_TUNE_8822E(x) \ + (((x) >> BIT_SHIFT_BG_R2_TUNE_8822E) & BIT_MASK_BG_R2_TUNE_8822E) +#define BIT_SET_BG_R2_TUNE_8822E(x, v) \ + (BIT_CLEAR_BG_R2_TUNE_8822E(x) | BIT_BG_R2_TUNE_8822E(v)) + +#define BIT_SHIFT_BG_VR1200_TUNE_8822E 0 +#define BIT_MASK_BG_VR1200_TUNE_8822E 0x7 +#define BIT_BG_VR1200_TUNE_8822E(x) \ + (((x) & BIT_MASK_BG_VR1200_TUNE_8822E) \ + << BIT_SHIFT_BG_VR1200_TUNE_8822E) +#define BITS_BG_VR1200_TUNE_8822E \ + (BIT_MASK_BG_VR1200_TUNE_8822E << BIT_SHIFT_BG_VR1200_TUNE_8822E) +#define BIT_CLEAR_BG_VR1200_TUNE_8822E(x) ((x) & (~BITS_BG_VR1200_TUNE_8822E)) +#define BIT_GET_BG_VR1200_TUNE_8822E(x) \ + (((x) >> BIT_SHIFT_BG_VR1200_TUNE_8822E) & \ + BIT_MASK_BG_VR1200_TUNE_8822E) +#define BIT_SET_BG_VR1200_TUNE_8822E(x, v) \ + (BIT_CLEAR_BG_VR1200_TUNE_8822E(x) | BIT_BG_VR1200_TUNE_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_EF_MODE_SEL_S_8822E 30 +#define BIT_MASK_EF_MODE_SEL_S_8822E 0x3 +#define BIT_EF_MODE_SEL_S_8822E(x) \ + (((x) & BIT_MASK_EF_MODE_SEL_S_8822E) << BIT_SHIFT_EF_MODE_SEL_S_8822E) +#define BITS_EF_MODE_SEL_S_8822E \ + (BIT_MASK_EF_MODE_SEL_S_8822E << BIT_SHIFT_EF_MODE_SEL_S_8822E) +#define BIT_CLEAR_EF_MODE_SEL_S_8822E(x) ((x) & (~BITS_EF_MODE_SEL_S_8822E)) +#define BIT_GET_EF_MODE_SEL_S_8822E(x) \ + (((x) >> BIT_SHIFT_EF_MODE_SEL_S_8822E) & BIT_MASK_EF_MODE_SEL_S_8822E) +#define BIT_SET_EF_MODE_SEL_S_8822E(x, v) \ + (BIT_CLEAR_EF_MODE_SEL_S_8822E(x) | BIT_EF_MODE_SEL_S_8822E(v)) + +#define BIT_EF_RDY_S_8822E BIT(29) +#define BIT_EF_COMP_RESULT_S_8822E BIT(28) + +#define BIT_SHIFT_EF_ADDR_S_8822E 16 +#define BIT_MASK_EF_ADDR_S_8822E 0x7ff +#define BIT_EF_ADDR_S_8822E(x) \ + (((x) & BIT_MASK_EF_ADDR_S_8822E) << BIT_SHIFT_EF_ADDR_S_8822E) +#define BITS_EF_ADDR_S_8822E \ + (BIT_MASK_EF_ADDR_S_8822E << BIT_SHIFT_EF_ADDR_S_8822E) +#define BIT_CLEAR_EF_ADDR_S_8822E(x) ((x) & (~BITS_EF_ADDR_S_8822E)) +#define BIT_GET_EF_ADDR_S_8822E(x) \ + (((x) >> BIT_SHIFT_EF_ADDR_S_8822E) & BIT_MASK_EF_ADDR_S_8822E) +#define BIT_SET_EF_ADDR_S_8822E(x, v) \ + (BIT_CLEAR_EF_ADDR_S_8822E(x) | BIT_EF_ADDR_S_8822E(v)) + +#define BIT_SHIFT_EF_DATA_S_8822E 0 +#define BIT_MASK_EF_DATA_S_8822E 0xffff +#define BIT_EF_DATA_S_8822E(x) \ + (((x) & BIT_MASK_EF_DATA_S_8822E) << BIT_SHIFT_EF_DATA_S_8822E) +#define BITS_EF_DATA_S_8822E \ + (BIT_MASK_EF_DATA_S_8822E << BIT_SHIFT_EF_DATA_S_8822E) +#define BIT_CLEAR_EF_DATA_S_8822E(x) ((x) & (~BITS_EF_DATA_S_8822E)) +#define BIT_GET_EF_DATA_S_8822E(x) \ + (((x) >> BIT_SHIFT_EF_DATA_S_8822E) & BIT_MASK_EF_DATA_S_8822E) +#define BIT_SET_EF_DATA_S_8822E(x, v) \ + (BIT_CLEAR_EF_DATA_S_8822E(x) | BIT_EF_DATA_S_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_EF_CRES_SEL_S_8822E BIT(31) + +#define BIT_SHIFT_EF_SCAN_SADR_S_8822E 19 +#define BIT_MASK_EF_SCAN_SADR_S_8822E 0x7ff +#define BIT_EF_SCAN_SADR_S_8822E(x) \ + (((x) & BIT_MASK_EF_SCAN_SADR_S_8822E) \ + << BIT_SHIFT_EF_SCAN_SADR_S_8822E) +#define BITS_EF_SCAN_SADR_S_8822E \ + (BIT_MASK_EF_SCAN_SADR_S_8822E << BIT_SHIFT_EF_SCAN_SADR_S_8822E) +#define BIT_CLEAR_EF_SCAN_SADR_S_8822E(x) ((x) & (~BITS_EF_SCAN_SADR_S_8822E)) +#define BIT_GET_EF_SCAN_SADR_S_8822E(x) \ + (((x) >> BIT_SHIFT_EF_SCAN_SADR_S_8822E) & \ + BIT_MASK_EF_SCAN_SADR_S_8822E) +#define BIT_SET_EF_SCAN_SADR_S_8822E(x, v) \ + (BIT_CLEAR_EF_SCAN_SADR_S_8822E(x) | BIT_EF_SCAN_SADR_S_8822E(v)) + +#define BIT_SHIFT_EF_SCAN_EADR_S_8822E 8 +#define BIT_MASK_EF_SCAN_EADR_S_8822E 0x7ff +#define BIT_EF_SCAN_EADR_S_8822E(x) \ + (((x) & BIT_MASK_EF_SCAN_EADR_S_8822E) \ + << BIT_SHIFT_EF_SCAN_EADR_S_8822E) +#define BITS_EF_SCAN_EADR_S_8822E \ + (BIT_MASK_EF_SCAN_EADR_S_8822E << BIT_SHIFT_EF_SCAN_EADR_S_8822E) +#define BIT_CLEAR_EF_SCAN_EADR_S_8822E(x) ((x) & (~BITS_EF_SCAN_EADR_S_8822E)) +#define BIT_GET_EF_SCAN_EADR_S_8822E(x) \ + (((x) >> BIT_SHIFT_EF_SCAN_EADR_S_8822E) & \ + BIT_MASK_EF_SCAN_EADR_S_8822E) +#define BIT_SET_EF_SCAN_EADR_S_8822E(x, v) \ + (BIT_CLEAR_EF_SCAN_EADR_S_8822E(x) | BIT_EF_SCAN_EADR_S_8822E(v)) + +#define BIT_EF_SCAN_TRPT_S_8822E BIT(7) + +#define BIT_SHIFT_EF_SCAN_FTHR_S_8822E 0 +#define BIT_MASK_EF_SCAN_FTHR_S_8822E 0x7f +#define BIT_EF_SCAN_FTHR_S_8822E(x) \ + (((x) & BIT_MASK_EF_SCAN_FTHR_S_8822E) \ + << BIT_SHIFT_EF_SCAN_FTHR_S_8822E) +#define BITS_EF_SCAN_FTHR_S_8822E \ + (BIT_MASK_EF_SCAN_FTHR_S_8822E << BIT_SHIFT_EF_SCAN_FTHR_S_8822E) +#define BIT_CLEAR_EF_SCAN_FTHR_S_8822E(x) ((x) & (~BITS_EF_SCAN_FTHR_S_8822E)) +#define BIT_GET_EF_SCAN_FTHR_S_8822E(x) \ + (((x) >> BIT_SHIFT_EF_SCAN_FTHR_S_8822E) & \ + BIT_MASK_EF_SCAN_FTHR_S_8822E) +#define BIT_SET_EF_SCAN_FTHR_S_8822E(x, v) \ + (BIT_CLEAR_EF_SCAN_FTHR_S_8822E(x) | BIT_EF_SCAN_FTHR_S_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_ANAPAR_XTAL_0_8822E */ +#define BIT_XTAL_SC_LPS_8822E BIT(31) + +#define BIT_SHIFT_XTAL_SC_INIT_8822E 24 +#define BIT_MASK_XTAL_SC_INIT_8822E 0x7f +#define BIT_XTAL_SC_INIT_8822E(x) \ + (((x) & BIT_MASK_XTAL_SC_INIT_8822E) << BIT_SHIFT_XTAL_SC_INIT_8822E) +#define BITS_XTAL_SC_INIT_8822E \ + (BIT_MASK_XTAL_SC_INIT_8822E << BIT_SHIFT_XTAL_SC_INIT_8822E) +#define BIT_CLEAR_XTAL_SC_INIT_8822E(x) ((x) & (~BITS_XTAL_SC_INIT_8822E)) +#define BIT_GET_XTAL_SC_INIT_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_SC_INIT_8822E) & BIT_MASK_XTAL_SC_INIT_8822E) +#define BIT_SET_XTAL_SC_INIT_8822E(x, v) \ + (BIT_CLEAR_XTAL_SC_INIT_8822E(x) | BIT_XTAL_SC_INIT_8822E(v)) + +#define BIT_SHIFT_XTAL_SC_XO_8822E 17 +#define BIT_MASK_XTAL_SC_XO_8822E 0x7f +#define BIT_XTAL_SC_XO_8822E(x) \ + (((x) & BIT_MASK_XTAL_SC_XO_8822E) << BIT_SHIFT_XTAL_SC_XO_8822E) +#define BITS_XTAL_SC_XO_8822E \ + (BIT_MASK_XTAL_SC_XO_8822E << BIT_SHIFT_XTAL_SC_XO_8822E) +#define BIT_CLEAR_XTAL_SC_XO_8822E(x) ((x) & (~BITS_XTAL_SC_XO_8822E)) +#define BIT_GET_XTAL_SC_XO_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_SC_XO_8822E) & BIT_MASK_XTAL_SC_XO_8822E) +#define BIT_SET_XTAL_SC_XO_8822E(x, v) \ + (BIT_CLEAR_XTAL_SC_XO_8822E(x) | BIT_XTAL_SC_XO_8822E(v)) + +#define BIT_SHIFT_XTAL_SC_XI_8822E 10 +#define BIT_MASK_XTAL_SC_XI_8822E 0x7f +#define BIT_XTAL_SC_XI_8822E(x) \ + (((x) & BIT_MASK_XTAL_SC_XI_8822E) << BIT_SHIFT_XTAL_SC_XI_8822E) +#define BITS_XTAL_SC_XI_8822E \ + (BIT_MASK_XTAL_SC_XI_8822E << BIT_SHIFT_XTAL_SC_XI_8822E) +#define BIT_CLEAR_XTAL_SC_XI_8822E(x) ((x) & (~BITS_XTAL_SC_XI_8822E)) +#define BIT_GET_XTAL_SC_XI_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_SC_XI_8822E) & BIT_MASK_XTAL_SC_XI_8822E) +#define BIT_SET_XTAL_SC_XI_8822E(x, v) \ + (BIT_CLEAR_XTAL_SC_XI_8822E(x) | BIT_XTAL_SC_XI_8822E(v)) + +#define BIT_SHIFT_XTAL_GMN_V3_8822E 5 +#define BIT_MASK_XTAL_GMN_V3_8822E 0x1f +#define BIT_XTAL_GMN_V3_8822E(x) \ + (((x) & BIT_MASK_XTAL_GMN_V3_8822E) << BIT_SHIFT_XTAL_GMN_V3_8822E) +#define BITS_XTAL_GMN_V3_8822E \ + (BIT_MASK_XTAL_GMN_V3_8822E << BIT_SHIFT_XTAL_GMN_V3_8822E) +#define BIT_CLEAR_XTAL_GMN_V3_8822E(x) ((x) & (~BITS_XTAL_GMN_V3_8822E)) +#define BIT_GET_XTAL_GMN_V3_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_GMN_V3_8822E) & BIT_MASK_XTAL_GMN_V3_8822E) +#define BIT_SET_XTAL_GMN_V3_8822E(x, v) \ + (BIT_CLEAR_XTAL_GMN_V3_8822E(x) | BIT_XTAL_GMN_V3_8822E(v)) + +#define BIT_SHIFT_XTAL_GMP_V3_8822E 0 +#define BIT_MASK_XTAL_GMP_V3_8822E 0x1f +#define BIT_XTAL_GMP_V3_8822E(x) \ + (((x) & BIT_MASK_XTAL_GMP_V3_8822E) << BIT_SHIFT_XTAL_GMP_V3_8822E) +#define BITS_XTAL_GMP_V3_8822E \ + (BIT_MASK_XTAL_GMP_V3_8822E << BIT_SHIFT_XTAL_GMP_V3_8822E) +#define BIT_CLEAR_XTAL_GMP_V3_8822E(x) ((x) & (~BITS_XTAL_GMP_V3_8822E)) +#define BIT_GET_XTAL_GMP_V3_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_GMP_V3_8822E) & BIT_MASK_XTAL_GMP_V3_8822E) +#define BIT_SET_XTAL_GMP_V3_8822E(x, v) \ + (BIT_CLEAR_XTAL_GMP_V3_8822E(x) | BIT_XTAL_GMP_V3_8822E(v)) + +/* 2 REG_ANAPAR_XTAL_1_8822E */ +#define BIT_XTAL_SEL_TOK_V1_8822E BIT(31) +#define BIT_XTAL_DELAY_DIGI_V2_8822E BIT(30) +#define BIT_XTAL_DELAY_USB_V2_8822E BIT(29) +#define BIT_XTAL_DELAY_AFE_V2_8822E BIT(28) + +#define BIT_SHIFT_XTAL_DRV_DIGI_V2_8822E 26 +#define BIT_MASK_XTAL_DRV_DIGI_V2_8822E 0x3 +#define BIT_XTAL_DRV_DIGI_V2_8822E(x) \ + (((x) & BIT_MASK_XTAL_DRV_DIGI_V2_8822E) \ + << BIT_SHIFT_XTAL_DRV_DIGI_V2_8822E) +#define BITS_XTAL_DRV_DIGI_V2_8822E \ + (BIT_MASK_XTAL_DRV_DIGI_V2_8822E << BIT_SHIFT_XTAL_DRV_DIGI_V2_8822E) +#define BIT_CLEAR_XTAL_DRV_DIGI_V2_8822E(x) \ + ((x) & (~BITS_XTAL_DRV_DIGI_V2_8822E)) +#define BIT_GET_XTAL_DRV_DIGI_V2_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_DRV_DIGI_V2_8822E) & \ + BIT_MASK_XTAL_DRV_DIGI_V2_8822E) +#define BIT_SET_XTAL_DRV_DIGI_V2_8822E(x, v) \ + (BIT_CLEAR_XTAL_DRV_DIGI_V2_8822E(x) | BIT_XTAL_DRV_DIGI_V2_8822E(v)) + +#define BIT_EN_XTAL_DRV_LPS_8822E BIT(25) +#define BIT_EN_XTAL_DRV_DIGI_V2_8822E BIT(24) + +#define BIT_SHIFT_XTAL_DRV_USB_8822E 22 +#define BIT_MASK_XTAL_DRV_USB_8822E 0x3 +#define BIT_XTAL_DRV_USB_8822E(x) \ + (((x) & BIT_MASK_XTAL_DRV_USB_8822E) << BIT_SHIFT_XTAL_DRV_USB_8822E) +#define BITS_XTAL_DRV_USB_8822E \ + (BIT_MASK_XTAL_DRV_USB_8822E << BIT_SHIFT_XTAL_DRV_USB_8822E) +#define BIT_CLEAR_XTAL_DRV_USB_8822E(x) ((x) & (~BITS_XTAL_DRV_USB_8822E)) +#define BIT_GET_XTAL_DRV_USB_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_DRV_USB_8822E) & BIT_MASK_XTAL_DRV_USB_8822E) +#define BIT_SET_XTAL_DRV_USB_8822E(x, v) \ + (BIT_CLEAR_XTAL_DRV_USB_8822E(x) | BIT_XTAL_DRV_USB_8822E(v)) + +#define BIT_EN_XTAL_DRV_USB_8822E BIT(21) + +#define BIT_SHIFT_XTAL_DRV_AFE_V2_8822E 19 +#define BIT_MASK_XTAL_DRV_AFE_V2_8822E 0x3 +#define BIT_XTAL_DRV_AFE_V2_8822E(x) \ + (((x) & BIT_MASK_XTAL_DRV_AFE_V2_8822E) \ + << BIT_SHIFT_XTAL_DRV_AFE_V2_8822E) +#define BITS_XTAL_DRV_AFE_V2_8822E \ + (BIT_MASK_XTAL_DRV_AFE_V2_8822E << BIT_SHIFT_XTAL_DRV_AFE_V2_8822E) +#define BIT_CLEAR_XTAL_DRV_AFE_V2_8822E(x) ((x) & (~BITS_XTAL_DRV_AFE_V2_8822E)) +#define BIT_GET_XTAL_DRV_AFE_V2_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_DRV_AFE_V2_8822E) & \ + BIT_MASK_XTAL_DRV_AFE_V2_8822E) +#define BIT_SET_XTAL_DRV_AFE_V2_8822E(x, v) \ + (BIT_CLEAR_XTAL_DRV_AFE_V2_8822E(x) | BIT_XTAL_DRV_AFE_V2_8822E(v)) + +#define BIT_EN_XTAL_DRV_AFE_8822E BIT(18) + +#define BIT_SHIFT_XTAL_DRV_RF2_V2_8822E 16 +#define BIT_MASK_XTAL_DRV_RF2_V2_8822E 0x3 +#define BIT_XTAL_DRV_RF2_V2_8822E(x) \ + (((x) & BIT_MASK_XTAL_DRV_RF2_V2_8822E) \ + << BIT_SHIFT_XTAL_DRV_RF2_V2_8822E) +#define BITS_XTAL_DRV_RF2_V2_8822E \ + (BIT_MASK_XTAL_DRV_RF2_V2_8822E << BIT_SHIFT_XTAL_DRV_RF2_V2_8822E) +#define BIT_CLEAR_XTAL_DRV_RF2_V2_8822E(x) ((x) & (~BITS_XTAL_DRV_RF2_V2_8822E)) +#define BIT_GET_XTAL_DRV_RF2_V2_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_DRV_RF2_V2_8822E) & \ + BIT_MASK_XTAL_DRV_RF2_V2_8822E) +#define BIT_SET_XTAL_DRV_RF2_V2_8822E(x, v) \ + (BIT_CLEAR_XTAL_DRV_RF2_V2_8822E(x) | BIT_XTAL_DRV_RF2_V2_8822E(v)) + +#define BIT_EN_XTAL_DRV_RF2_8822E BIT(15) + +#define BIT_SHIFT_XTAL_DRV_RF1_8822E 13 +#define BIT_MASK_XTAL_DRV_RF1_8822E 0x3 +#define BIT_XTAL_DRV_RF1_8822E(x) \ + (((x) & BIT_MASK_XTAL_DRV_RF1_8822E) << BIT_SHIFT_XTAL_DRV_RF1_8822E) +#define BITS_XTAL_DRV_RF1_8822E \ + (BIT_MASK_XTAL_DRV_RF1_8822E << BIT_SHIFT_XTAL_DRV_RF1_8822E) +#define BIT_CLEAR_XTAL_DRV_RF1_8822E(x) ((x) & (~BITS_XTAL_DRV_RF1_8822E)) +#define BIT_GET_XTAL_DRV_RF1_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_DRV_RF1_8822E) & BIT_MASK_XTAL_DRV_RF1_8822E) +#define BIT_SET_XTAL_DRV_RF1_8822E(x, v) \ + (BIT_CLEAR_XTAL_DRV_RF1_8822E(x) | BIT_XTAL_DRV_RF1_8822E(v)) + +#define BIT_EN_XTAL_DRV_RF1_8822E BIT(12) +#define BIT_XTAL_DRV_RF_LATCH_V4_8822E BIT(11) +#define BIT_XTAL_GM_SEP_V3_8822E BIT(10) +#define BIT_XQSEL_RF_AWAKE_V3_8822E BIT(9) +#define BIT_XQSEL_RF_INITIAL_V3_8822E BIT(8) +#define BIT_XQSEL_V2_8822E BIT(7) +#define BIT_GATED_XTAL_OK0_V2_8822E BIT(6) + +#define BIT_SHIFT_XTAL_SC_LPS_V2_8822E 0 +#define BIT_MASK_XTAL_SC_LPS_V2_8822E 0x3f +#define BIT_XTAL_SC_LPS_V2_8822E(x) \ + (((x) & BIT_MASK_XTAL_SC_LPS_V2_8822E) \ + << BIT_SHIFT_XTAL_SC_LPS_V2_8822E) +#define BITS_XTAL_SC_LPS_V2_8822E \ + (BIT_MASK_XTAL_SC_LPS_V2_8822E << BIT_SHIFT_XTAL_SC_LPS_V2_8822E) +#define BIT_CLEAR_XTAL_SC_LPS_V2_8822E(x) ((x) & (~BITS_XTAL_SC_LPS_V2_8822E)) +#define BIT_GET_XTAL_SC_LPS_V2_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_SC_LPS_V2_8822E) & \ + BIT_MASK_XTAL_SC_LPS_V2_8822E) +#define BIT_SET_XTAL_SC_LPS_V2_8822E(x, v) \ + (BIT_CLEAR_XTAL_SC_LPS_V2_8822E(x) | BIT_XTAL_SC_LPS_V2_8822E(v)) + +/* 2 REG_ANAPAR_XTAL_2_8822E */ +#define BIT_XTAL_AAC_CAP_8822E BIT(31) + +#define BIT_SHIFT_XTAL_PDSW_8822E 29 +#define BIT_MASK_XTAL_PDSW_8822E 0x3 +#define BIT_XTAL_PDSW_8822E(x) \ + (((x) & BIT_MASK_XTAL_PDSW_8822E) << BIT_SHIFT_XTAL_PDSW_8822E) +#define BITS_XTAL_PDSW_8822E \ + (BIT_MASK_XTAL_PDSW_8822E << BIT_SHIFT_XTAL_PDSW_8822E) +#define BIT_CLEAR_XTAL_PDSW_8822E(x) ((x) & (~BITS_XTAL_PDSW_8822E)) +#define BIT_GET_XTAL_PDSW_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_PDSW_8822E) & BIT_MASK_XTAL_PDSW_8822E) +#define BIT_SET_XTAL_PDSW_8822E(x, v) \ + (BIT_CLEAR_XTAL_PDSW_8822E(x) | BIT_XTAL_PDSW_8822E(v)) + +#define BIT_SHIFT_XTAL_LPS_BUF_VB_8822E 27 +#define BIT_MASK_XTAL_LPS_BUF_VB_8822E 0x3 +#define BIT_XTAL_LPS_BUF_VB_8822E(x) \ + (((x) & BIT_MASK_XTAL_LPS_BUF_VB_8822E) \ + << BIT_SHIFT_XTAL_LPS_BUF_VB_8822E) +#define BITS_XTAL_LPS_BUF_VB_8822E \ + (BIT_MASK_XTAL_LPS_BUF_VB_8822E << BIT_SHIFT_XTAL_LPS_BUF_VB_8822E) +#define BIT_CLEAR_XTAL_LPS_BUF_VB_8822E(x) ((x) & (~BITS_XTAL_LPS_BUF_VB_8822E)) +#define BIT_GET_XTAL_LPS_BUF_VB_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_LPS_BUF_VB_8822E) & \ + BIT_MASK_XTAL_LPS_BUF_VB_8822E) +#define BIT_SET_XTAL_LPS_BUF_VB_8822E(x, v) \ + (BIT_CLEAR_XTAL_LPS_BUF_VB_8822E(x) | BIT_XTAL_LPS_BUF_VB_8822E(v)) + +#define BIT_XTAL_PDCK_MANU_8822E BIT(26) +#define BIT_XTAL_PDCK_OK_MANU_8822E BIT(25) + +#define BIT_SHIFT_XTAL_VREF_SEL_8822E 20 +#define BIT_MASK_XTAL_VREF_SEL_8822E 0x1f +#define BIT_XTAL_VREF_SEL_8822E(x) \ + (((x) & BIT_MASK_XTAL_VREF_SEL_8822E) << BIT_SHIFT_XTAL_VREF_SEL_8822E) +#define BITS_XTAL_VREF_SEL_8822E \ + (BIT_MASK_XTAL_VREF_SEL_8822E << BIT_SHIFT_XTAL_VREF_SEL_8822E) +#define BIT_CLEAR_XTAL_VREF_SEL_8822E(x) ((x) & (~BITS_XTAL_VREF_SEL_8822E)) +#define BIT_GET_XTAL_VREF_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_VREF_SEL_8822E) & BIT_MASK_XTAL_VREF_SEL_8822E) +#define BIT_SET_XTAL_VREF_SEL_8822E(x, v) \ + (BIT_CLEAR_XTAL_VREF_SEL_8822E(x) | BIT_XTAL_VREF_SEL_8822E(v)) + +#define BIT_EN_XTAL_PDCK_VREF_8822E BIT(19) +#define BIT_XTAL_SEL_PWR_V1_8822E BIT(18) +#define BIT_XTAL_LPS_DIVISOR_8822E BIT(17) +#define BIT_XTAL_CKDIGI_SEL_8822E BIT(16) +#define BIT_EN_XTAL_LPS_CLK_8822E BIT(15) +#define BIT_EN_XTAL_SCHMITT_8822E BIT(14) +#define BIT_XTAL_PK_SEL_OFFSET_8822E BIT(13) + +#define BIT_SHIFT_XTAL_MANU_PK_SEL_8822E 11 +#define BIT_MASK_XTAL_MANU_PK_SEL_8822E 0x3 +#define BIT_XTAL_MANU_PK_SEL_8822E(x) \ + (((x) & BIT_MASK_XTAL_MANU_PK_SEL_8822E) \ + << BIT_SHIFT_XTAL_MANU_PK_SEL_8822E) +#define BITS_XTAL_MANU_PK_SEL_8822E \ + (BIT_MASK_XTAL_MANU_PK_SEL_8822E << BIT_SHIFT_XTAL_MANU_PK_SEL_8822E) +#define BIT_CLEAR_XTAL_MANU_PK_SEL_8822E(x) \ + ((x) & (~BITS_XTAL_MANU_PK_SEL_8822E)) +#define BIT_GET_XTAL_MANU_PK_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_MANU_PK_SEL_8822E) & \ + BIT_MASK_XTAL_MANU_PK_SEL_8822E) +#define BIT_SET_XTAL_MANU_PK_SEL_8822E(x, v) \ + (BIT_CLEAR_XTAL_MANU_PK_SEL_8822E(x) | BIT_XTAL_MANU_PK_SEL_8822E(v)) + +#define BIT_XTAL_AACK_PK_MANU_8822E BIT(10) +#define BIT_EN_XTAL_AAC_PKDET_V1_8822E BIT(9) +#define BIT_EN_XTAL_AAC_GM_V1_8822E BIT(8) +#define BIT_XTAL_LDO_OPVB_SEL_8822E BIT(7) +#define BIT_XTAL_LDO_NC_8822E BIT(6) + +#define BIT_SHIFT_XTAL_LDO_VREF_V2_8822E 3 +#define BIT_MASK_XTAL_LDO_VREF_V2_8822E 0x7 +#define BIT_XTAL_LDO_VREF_V2_8822E(x) \ + (((x) & BIT_MASK_XTAL_LDO_VREF_V2_8822E) \ + << BIT_SHIFT_XTAL_LDO_VREF_V2_8822E) +#define BITS_XTAL_LDO_VREF_V2_8822E \ + (BIT_MASK_XTAL_LDO_VREF_V2_8822E << BIT_SHIFT_XTAL_LDO_VREF_V2_8822E) +#define BIT_CLEAR_XTAL_LDO_VREF_V2_8822E(x) \ + ((x) & (~BITS_XTAL_LDO_VREF_V2_8822E)) +#define BIT_GET_XTAL_LDO_VREF_V2_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_LDO_VREF_V2_8822E) & \ + BIT_MASK_XTAL_LDO_VREF_V2_8822E) +#define BIT_SET_XTAL_LDO_VREF_V2_8822E(x, v) \ + (BIT_CLEAR_XTAL_LDO_VREF_V2_8822E(x) | BIT_XTAL_LDO_VREF_V2_8822E(v)) + +#define BIT_XTAL_LPMODE_V1_8822E BIT(2) + +#define BIT_SHIFT_XTAL_SEL_TOK_V3_8822E 0 +#define BIT_MASK_XTAL_SEL_TOK_V3_8822E 0x3 +#define BIT_XTAL_SEL_TOK_V3_8822E(x) \ + (((x) & BIT_MASK_XTAL_SEL_TOK_V3_8822E) \ + << BIT_SHIFT_XTAL_SEL_TOK_V3_8822E) +#define BITS_XTAL_SEL_TOK_V3_8822E \ + (BIT_MASK_XTAL_SEL_TOK_V3_8822E << BIT_SHIFT_XTAL_SEL_TOK_V3_8822E) +#define BIT_CLEAR_XTAL_SEL_TOK_V3_8822E(x) ((x) & (~BITS_XTAL_SEL_TOK_V3_8822E)) +#define BIT_GET_XTAL_SEL_TOK_V3_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_SEL_TOK_V3_8822E) & \ + BIT_MASK_XTAL_SEL_TOK_V3_8822E) +#define BIT_SET_XTAL_SEL_TOK_V3_8822E(x, v) \ + (BIT_CLEAR_XTAL_SEL_TOK_V3_8822E(x) | BIT_XTAL_SEL_TOK_V3_8822E(v)) + +/* 2 REG_ANAPAR_XTAL_3_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_EN_XTAL_DRV_RF2_DEBUG_8822E BIT(16) + +#define BIT_SHIFT_XTAL_SRC_BT_8822E 13 +#define BIT_MASK_XTAL_SRC_BT_8822E 0x7 +#define BIT_XTAL_SRC_BT_8822E(x) \ + (((x) & BIT_MASK_XTAL_SRC_BT_8822E) << BIT_SHIFT_XTAL_SRC_BT_8822E) +#define BITS_XTAL_SRC_BT_8822E \ + (BIT_MASK_XTAL_SRC_BT_8822E << BIT_SHIFT_XTAL_SRC_BT_8822E) +#define BIT_CLEAR_XTAL_SRC_BT_8822E(x) ((x) & (~BITS_XTAL_SRC_BT_8822E)) +#define BIT_GET_XTAL_SRC_BT_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_SRC_BT_8822E) & BIT_MASK_XTAL_SRC_BT_8822E) +#define BIT_SET_XTAL_SRC_BT_8822E(x, v) \ + (BIT_CLEAR_XTAL_SRC_BT_8822E(x) | BIT_XTAL_SRC_BT_8822E(v)) + +#define BIT_SHIFT_XTAL_DUMMY_V1_8822E 7 +#define BIT_MASK_XTAL_DUMMY_V1_8822E 0x3f +#define BIT_XTAL_DUMMY_V1_8822E(x) \ + (((x) & BIT_MASK_XTAL_DUMMY_V1_8822E) << BIT_SHIFT_XTAL_DUMMY_V1_8822E) +#define BITS_XTAL_DUMMY_V1_8822E \ + (BIT_MASK_XTAL_DUMMY_V1_8822E << BIT_SHIFT_XTAL_DUMMY_V1_8822E) +#define BIT_CLEAR_XTAL_DUMMY_V1_8822E(x) ((x) & (~BITS_XTAL_DUMMY_V1_8822E)) +#define BIT_GET_XTAL_DUMMY_V1_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_DUMMY_V1_8822E) & BIT_MASK_XTAL_DUMMY_V1_8822E) +#define BIT_SET_XTAL_DUMMY_V1_8822E(x, v) \ + (BIT_CLEAR_XTAL_DUMMY_V1_8822E(x) | BIT_XTAL_DUMMY_V1_8822E(v)) + +#define BIT_XTAL_EN_LNBUF_8822E BIT(6) +#define BIT_XTAL__AAC_TIE_MID_8822E BIT(5) + +#define BIT_SHIFT_XTAL_AAC_OPCUR_8822E 3 +#define BIT_MASK_XTAL_AAC_OPCUR_8822E 0x3 +#define BIT_XTAL_AAC_OPCUR_8822E(x) \ + (((x) & BIT_MASK_XTAL_AAC_OPCUR_8822E) \ + << BIT_SHIFT_XTAL_AAC_OPCUR_8822E) +#define BITS_XTAL_AAC_OPCUR_8822E \ + (BIT_MASK_XTAL_AAC_OPCUR_8822E << BIT_SHIFT_XTAL_AAC_OPCUR_8822E) +#define BIT_CLEAR_XTAL_AAC_OPCUR_8822E(x) ((x) & (~BITS_XTAL_AAC_OPCUR_8822E)) +#define BIT_GET_XTAL_AAC_OPCUR_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_AAC_OPCUR_8822E) & \ + BIT_MASK_XTAL_AAC_OPCUR_8822E) +#define BIT_SET_XTAL_AAC_OPCUR_8822E(x, v) \ + (BIT_CLEAR_XTAL_AAC_OPCUR_8822E(x) | BIT_XTAL_AAC_OPCUR_8822E(v)) + +#define BIT_SHIFT_XTAL_AAC_IOFFSET_8822E 1 +#define BIT_MASK_XTAL_AAC_IOFFSET_8822E 0x3 +#define BIT_XTAL_AAC_IOFFSET_8822E(x) \ + (((x) & BIT_MASK_XTAL_AAC_IOFFSET_8822E) \ + << BIT_SHIFT_XTAL_AAC_IOFFSET_8822E) +#define BITS_XTAL_AAC_IOFFSET_8822E \ + (BIT_MASK_XTAL_AAC_IOFFSET_8822E << BIT_SHIFT_XTAL_AAC_IOFFSET_8822E) +#define BIT_CLEAR_XTAL_AAC_IOFFSET_8822E(x) \ + ((x) & (~BITS_XTAL_AAC_IOFFSET_8822E)) +#define BIT_GET_XTAL_AAC_IOFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_AAC_IOFFSET_8822E) & \ + BIT_MASK_XTAL_AAC_IOFFSET_8822E) +#define BIT_SET_XTAL_AAC_IOFFSET_8822E(x, v) \ + (BIT_CLEAR_XTAL_AAC_IOFFSET_8822E(x) | BIT_XTAL_AAC_IOFFSET_8822E(v)) + +#define BIT_XTAL_AAC_CAP_V1_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_ANAPAR_XTAL_AACK_0_8822E */ +#define BIT_XAAC_LPOW_8822E BIT(31) + +#define BIT_SHIFT_AAC_MODE_8822E 29 +#define BIT_MASK_AAC_MODE_8822E 0x3 +#define BIT_AAC_MODE_8822E(x) \ + (((x) & BIT_MASK_AAC_MODE_8822E) << BIT_SHIFT_AAC_MODE_8822E) +#define BITS_AAC_MODE_8822E \ + (BIT_MASK_AAC_MODE_8822E << BIT_SHIFT_AAC_MODE_8822E) +#define BIT_CLEAR_AAC_MODE_8822E(x) ((x) & (~BITS_AAC_MODE_8822E)) +#define BIT_GET_AAC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_AAC_MODE_8822E) & BIT_MASK_AAC_MODE_8822E) +#define BIT_SET_AAC_MODE_8822E(x, v) \ + (BIT_CLEAR_AAC_MODE_8822E(x) | BIT_AAC_MODE_8822E(v)) + +#define BIT_EN_XTAL_AAC_TRIG_8822E BIT(28) +#define BIT_EN_XTAL_AAC_8822E BIT(27) +#define BIT_EN_XTAL_AAC_DIGI_8822E BIT(26) + +#define BIT_SHIFT_GM_MANUAL_8822E 21 +#define BIT_MASK_GM_MANUAL_8822E 0x1f +#define BIT_GM_MANUAL_8822E(x) \ + (((x) & BIT_MASK_GM_MANUAL_8822E) << BIT_SHIFT_GM_MANUAL_8822E) +#define BITS_GM_MANUAL_8822E \ + (BIT_MASK_GM_MANUAL_8822E << BIT_SHIFT_GM_MANUAL_8822E) +#define BIT_CLEAR_GM_MANUAL_8822E(x) ((x) & (~BITS_GM_MANUAL_8822E)) +#define BIT_GET_GM_MANUAL_8822E(x) \ + (((x) >> BIT_SHIFT_GM_MANUAL_8822E) & BIT_MASK_GM_MANUAL_8822E) +#define BIT_SET_GM_MANUAL_8822E(x, v) \ + (BIT_CLEAR_GM_MANUAL_8822E(x) | BIT_GM_MANUAL_8822E(v)) + +#define BIT_SHIFT_GM_STUP_8822E 16 +#define BIT_MASK_GM_STUP_8822E 0x1f +#define BIT_GM_STUP_8822E(x) \ + (((x) & BIT_MASK_GM_STUP_8822E) << BIT_SHIFT_GM_STUP_8822E) +#define BITS_GM_STUP_8822E (BIT_MASK_GM_STUP_8822E << BIT_SHIFT_GM_STUP_8822E) +#define BIT_CLEAR_GM_STUP_8822E(x) ((x) & (~BITS_GM_STUP_8822E)) +#define BIT_GET_GM_STUP_8822E(x) \ + (((x) >> BIT_SHIFT_GM_STUP_8822E) & BIT_MASK_GM_STUP_8822E) +#define BIT_SET_GM_STUP_8822E(x, v) \ + (BIT_CLEAR_GM_STUP_8822E(x) | BIT_GM_STUP_8822E(v)) + +#define BIT_SHIFT_XTAL_CK_SET_8822E 13 +#define BIT_MASK_XTAL_CK_SET_8822E 0x7 +#define BIT_XTAL_CK_SET_8822E(x) \ + (((x) & BIT_MASK_XTAL_CK_SET_8822E) << BIT_SHIFT_XTAL_CK_SET_8822E) +#define BITS_XTAL_CK_SET_8822E \ + (BIT_MASK_XTAL_CK_SET_8822E << BIT_SHIFT_XTAL_CK_SET_8822E) +#define BIT_CLEAR_XTAL_CK_SET_8822E(x) ((x) & (~BITS_XTAL_CK_SET_8822E)) +#define BIT_GET_XTAL_CK_SET_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_CK_SET_8822E) & BIT_MASK_XTAL_CK_SET_8822E) +#define BIT_SET_XTAL_CK_SET_8822E(x, v) \ + (BIT_CLEAR_XTAL_CK_SET_8822E(x) | BIT_XTAL_CK_SET_8822E(v)) + +#define BIT_SHIFT_GM_INIT_8822E 8 +#define BIT_MASK_GM_INIT_8822E 0x1f +#define BIT_GM_INIT_8822E(x) \ + (((x) & BIT_MASK_GM_INIT_8822E) << BIT_SHIFT_GM_INIT_8822E) +#define BITS_GM_INIT_8822E (BIT_MASK_GM_INIT_8822E << BIT_SHIFT_GM_INIT_8822E) +#define BIT_CLEAR_GM_INIT_8822E(x) ((x) & (~BITS_GM_INIT_8822E)) +#define BIT_GET_GM_INIT_8822E(x) \ + (((x) >> BIT_SHIFT_GM_INIT_8822E) & BIT_MASK_GM_INIT_8822E) +#define BIT_SET_GM_INIT_8822E(x, v) \ + (BIT_CLEAR_GM_INIT_8822E(x) | BIT_GM_INIT_8822E(v)) + +#define BIT_GM_STEP_8822E BIT(7) + +#define BIT_SHIFT_XAAC_GM_OFFSET_8822E 2 +#define BIT_MASK_XAAC_GM_OFFSET_8822E 0x1f +#define BIT_XAAC_GM_OFFSET_8822E(x) \ + (((x) & BIT_MASK_XAAC_GM_OFFSET_8822E) \ + << BIT_SHIFT_XAAC_GM_OFFSET_8822E) +#define BITS_XAAC_GM_OFFSET_8822E \ + (BIT_MASK_XAAC_GM_OFFSET_8822E << BIT_SHIFT_XAAC_GM_OFFSET_8822E) +#define BIT_CLEAR_XAAC_GM_OFFSET_8822E(x) ((x) & (~BITS_XAAC_GM_OFFSET_8822E)) +#define BIT_GET_XAAC_GM_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_XAAC_GM_OFFSET_8822E) & \ + BIT_MASK_XAAC_GM_OFFSET_8822E) +#define BIT_SET_XAAC_GM_OFFSET_8822E(x, v) \ + (BIT_CLEAR_XAAC_GM_OFFSET_8822E(x) | BIT_XAAC_GM_OFFSET_8822E(v)) + +#define BIT_OFFSET_PLUS_8822E BIT(1) +#define BIT_RESET_N_8822E BIT(0) + +/* 2 REG_ANAPAR_XTAL_AACK_1_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_PK_END_AR_8822E 3 +#define BIT_MASK_PK_END_AR_8822E 0x3 +#define BIT_PK_END_AR_8822E(x) \ + (((x) & BIT_MASK_PK_END_AR_8822E) << BIT_SHIFT_PK_END_AR_8822E) +#define BITS_PK_END_AR_8822E \ + (BIT_MASK_PK_END_AR_8822E << BIT_SHIFT_PK_END_AR_8822E) +#define BIT_CLEAR_PK_END_AR_8822E(x) ((x) & (~BITS_PK_END_AR_8822E)) +#define BIT_GET_PK_END_AR_8822E(x) \ + (((x) >> BIT_SHIFT_PK_END_AR_8822E) & BIT_MASK_PK_END_AR_8822E) +#define BIT_SET_PK_END_AR_8822E(x, v) \ + (BIT_CLEAR_PK_END_AR_8822E(x) | BIT_PK_END_AR_8822E(v)) + +#define BIT_SHIFT_PK_START_AR_8822E 1 +#define BIT_MASK_PK_START_AR_8822E 0x3 +#define BIT_PK_START_AR_8822E(x) \ + (((x) & BIT_MASK_PK_START_AR_8822E) << BIT_SHIFT_PK_START_AR_8822E) +#define BITS_PK_START_AR_8822E \ + (BIT_MASK_PK_START_AR_8822E << BIT_SHIFT_PK_START_AR_8822E) +#define BIT_CLEAR_PK_START_AR_8822E(x) ((x) & (~BITS_PK_START_AR_8822E)) +#define BIT_GET_PK_START_AR_8822E(x) \ + (((x) >> BIT_SHIFT_PK_START_AR_8822E) & BIT_MASK_PK_START_AR_8822E) +#define BIT_SET_PK_START_AR_8822E(x, v) \ + (BIT_CLEAR_PK_START_AR_8822E(x) | BIT_PK_START_AR_8822E(v)) + +#define BIT_XAAC_LUT_MANUAL_EN_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_XTAL_AAC_OUTPUT_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_XTAL_PEAKDET_OUT_8822E BIT(9) +#define BIT_XAAC_BUSY_8822E BIT(8) +#define BIT_XAAC_READY_V1_8822E BIT(7) + +#define BIT_SHIFT_XAAC_PK_SEL_8822E 5 +#define BIT_MASK_XAAC_PK_SEL_8822E 0x3 +#define BIT_XAAC_PK_SEL_8822E(x) \ + (((x) & BIT_MASK_XAAC_PK_SEL_8822E) << BIT_SHIFT_XAAC_PK_SEL_8822E) +#define BITS_XAAC_PK_SEL_8822E \ + (BIT_MASK_XAAC_PK_SEL_8822E << BIT_SHIFT_XAAC_PK_SEL_8822E) +#define BIT_CLEAR_XAAC_PK_SEL_8822E(x) ((x) & (~BITS_XAAC_PK_SEL_8822E)) +#define BIT_GET_XAAC_PK_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_XAAC_PK_SEL_8822E) & BIT_MASK_XAAC_PK_SEL_8822E) +#define BIT_SET_XAAC_PK_SEL_8822E(x, v) \ + (BIT_CLEAR_XAAC_PK_SEL_8822E(x) | BIT_XAAC_PK_SEL_8822E(v)) + +#define BIT_SHIFT_XTAL_GM_OUT_8822E 0 +#define BIT_MASK_XTAL_GM_OUT_8822E 0x1f +#define BIT_XTAL_GM_OUT_8822E(x) \ + (((x) & BIT_MASK_XTAL_GM_OUT_8822E) << BIT_SHIFT_XTAL_GM_OUT_8822E) +#define BITS_XTAL_GM_OUT_8822E \ + (BIT_MASK_XTAL_GM_OUT_8822E << BIT_SHIFT_XTAL_GM_OUT_8822E) +#define BIT_CLEAR_XTAL_GM_OUT_8822E(x) ((x) & (~BITS_XTAL_GM_OUT_8822E)) +#define BIT_GET_XTAL_GM_OUT_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_GM_OUT_8822E) & BIT_MASK_XTAL_GM_OUT_8822E) +#define BIT_SET_XTAL_GM_OUT_8822E(x, v) \ + (BIT_CLEAR_XTAL_GM_OUT_8822E(x) | BIT_XTAL_GM_OUT_8822E(v)) + +/* 2 REG_ANAPAR_XTAL_MODE_DECODER_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_XTAL_LDO_LPS_8822E 21 +#define BIT_MASK_XTAL_LDO_LPS_8822E 0x7 +#define BIT_XTAL_LDO_LPS_8822E(x) \ + (((x) & BIT_MASK_XTAL_LDO_LPS_8822E) << BIT_SHIFT_XTAL_LDO_LPS_8822E) +#define BITS_XTAL_LDO_LPS_8822E \ + (BIT_MASK_XTAL_LDO_LPS_8822E << BIT_SHIFT_XTAL_LDO_LPS_8822E) +#define BIT_CLEAR_XTAL_LDO_LPS_8822E(x) ((x) & (~BITS_XTAL_LDO_LPS_8822E)) +#define BIT_GET_XTAL_LDO_LPS_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_LDO_LPS_8822E) & BIT_MASK_XTAL_LDO_LPS_8822E) +#define BIT_SET_XTAL_LDO_LPS_8822E(x, v) \ + (BIT_CLEAR_XTAL_LDO_LPS_8822E(x) | BIT_XTAL_LDO_LPS_8822E(v)) + +#define BIT_SHIFT_XTAL_WAIT_CYC_8822E 15 +#define BIT_MASK_XTAL_WAIT_CYC_8822E 0x3f +#define BIT_XTAL_WAIT_CYC_8822E(x) \ + (((x) & BIT_MASK_XTAL_WAIT_CYC_8822E) << BIT_SHIFT_XTAL_WAIT_CYC_8822E) +#define BITS_XTAL_WAIT_CYC_8822E \ + (BIT_MASK_XTAL_WAIT_CYC_8822E << BIT_SHIFT_XTAL_WAIT_CYC_8822E) +#define BIT_CLEAR_XTAL_WAIT_CYC_8822E(x) ((x) & (~BITS_XTAL_WAIT_CYC_8822E)) +#define BIT_GET_XTAL_WAIT_CYC_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_WAIT_CYC_8822E) & BIT_MASK_XTAL_WAIT_CYC_8822E) +#define BIT_SET_XTAL_WAIT_CYC_8822E(x, v) \ + (BIT_CLEAR_XTAL_WAIT_CYC_8822E(x) | BIT_XTAL_WAIT_CYC_8822E(v)) + +#define BIT_SHIFT_XTAL_LDO_OK_8822E 12 +#define BIT_MASK_XTAL_LDO_OK_8822E 0x7 +#define BIT_XTAL_LDO_OK_8822E(x) \ + (((x) & BIT_MASK_XTAL_LDO_OK_8822E) << BIT_SHIFT_XTAL_LDO_OK_8822E) +#define BITS_XTAL_LDO_OK_8822E \ + (BIT_MASK_XTAL_LDO_OK_8822E << BIT_SHIFT_XTAL_LDO_OK_8822E) +#define BIT_CLEAR_XTAL_LDO_OK_8822E(x) ((x) & (~BITS_XTAL_LDO_OK_8822E)) +#define BIT_GET_XTAL_LDO_OK_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_LDO_OK_8822E) & BIT_MASK_XTAL_LDO_OK_8822E) +#define BIT_SET_XTAL_LDO_OK_8822E(x, v) \ + (BIT_CLEAR_XTAL_LDO_OK_8822E(x) | BIT_XTAL_LDO_OK_8822E(v)) + +#define BIT_XTAL_MD_LPOW_8822E BIT(11) + +#define BIT_SHIFT_XTAL_OV_RATIO_8822E 9 +#define BIT_MASK_XTAL_OV_RATIO_8822E 0x3 +#define BIT_XTAL_OV_RATIO_8822E(x) \ + (((x) & BIT_MASK_XTAL_OV_RATIO_8822E) << BIT_SHIFT_XTAL_OV_RATIO_8822E) +#define BITS_XTAL_OV_RATIO_8822E \ + (BIT_MASK_XTAL_OV_RATIO_8822E << BIT_SHIFT_XTAL_OV_RATIO_8822E) +#define BIT_CLEAR_XTAL_OV_RATIO_8822E(x) ((x) & (~BITS_XTAL_OV_RATIO_8822E)) +#define BIT_GET_XTAL_OV_RATIO_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_OV_RATIO_8822E) & BIT_MASK_XTAL_OV_RATIO_8822E) +#define BIT_SET_XTAL_OV_RATIO_8822E(x, v) \ + (BIT_CLEAR_XTAL_OV_RATIO_8822E(x) | BIT_XTAL_OV_RATIO_8822E(v)) + +#define BIT_SHIFT_XTAL_OV_UNIT_8822E 6 +#define BIT_MASK_XTAL_OV_UNIT_8822E 0x7 +#define BIT_XTAL_OV_UNIT_8822E(x) \ + (((x) & BIT_MASK_XTAL_OV_UNIT_8822E) << BIT_SHIFT_XTAL_OV_UNIT_8822E) +#define BITS_XTAL_OV_UNIT_8822E \ + (BIT_MASK_XTAL_OV_UNIT_8822E << BIT_SHIFT_XTAL_OV_UNIT_8822E) +#define BIT_CLEAR_XTAL_OV_UNIT_8822E(x) ((x) & (~BITS_XTAL_OV_UNIT_8822E)) +#define BIT_GET_XTAL_OV_UNIT_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_OV_UNIT_8822E) & BIT_MASK_XTAL_OV_UNIT_8822E) +#define BIT_SET_XTAL_OV_UNIT_8822E(x, v) \ + (BIT_CLEAR_XTAL_OV_UNIT_8822E(x) | BIT_XTAL_OV_UNIT_8822E(v)) + +#define BIT_SHIFT_XTAL_MODE_MANUAL_8822E 4 +#define BIT_MASK_XTAL_MODE_MANUAL_8822E 0x3 +#define BIT_XTAL_MODE_MANUAL_8822E(x) \ + (((x) & BIT_MASK_XTAL_MODE_MANUAL_8822E) \ + << BIT_SHIFT_XTAL_MODE_MANUAL_8822E) +#define BITS_XTAL_MODE_MANUAL_8822E \ + (BIT_MASK_XTAL_MODE_MANUAL_8822E << BIT_SHIFT_XTAL_MODE_MANUAL_8822E) +#define BIT_CLEAR_XTAL_MODE_MANUAL_8822E(x) \ + ((x) & (~BITS_XTAL_MODE_MANUAL_8822E)) +#define BIT_GET_XTAL_MODE_MANUAL_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_MODE_MANUAL_8822E) & \ + BIT_MASK_XTAL_MODE_MANUAL_8822E) +#define BIT_SET_XTAL_MODE_MANUAL_8822E(x, v) \ + (BIT_CLEAR_XTAL_MODE_MANUAL_8822E(x) | BIT_XTAL_MODE_MANUAL_8822E(v)) + +#define BIT_XTAL_MANU_SEL_8822E BIT(3) +#define BIT_XTAL_MODE_8822E BIT(1) +#define BIT_RESET_N_DECODER_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_ANAPAR_XTAL_CAP_CTRL_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_XTAL_SC_LPS_RO_8822E 8 +#define BIT_MASK_XTAL_SC_LPS_RO_8822E 0xff +#define BIT_XTAL_SC_LPS_RO_8822E(x) \ + (((x) & BIT_MASK_XTAL_SC_LPS_RO_8822E) \ + << BIT_SHIFT_XTAL_SC_LPS_RO_8822E) +#define BITS_XTAL_SC_LPS_RO_8822E \ + (BIT_MASK_XTAL_SC_LPS_RO_8822E << BIT_SHIFT_XTAL_SC_LPS_RO_8822E) +#define BIT_CLEAR_XTAL_SC_LPS_RO_8822E(x) ((x) & (~BITS_XTAL_SC_LPS_RO_8822E)) +#define BIT_GET_XTAL_SC_LPS_RO_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_SC_LPS_RO_8822E) & \ + BIT_MASK_XTAL_SC_LPS_RO_8822E) +#define BIT_SET_XTAL_SC_LPS_RO_8822E(x, v) \ + (BIT_CLEAR_XTAL_SC_LPS_RO_8822E(x) | BIT_XTAL_SC_LPS_RO_8822E(v)) + +#define BIT_XTAL_LPS_CAP_INV_8822E BIT(7) +#define BIT_XTAL_LPS_CAP_CTRL_8822E BIT(6) + +#define BIT_SHIFT_XTAL_LPS_CAP_CYC_8822E 4 +#define BIT_MASK_XTAL_LPS_CAP_CYC_8822E 0x3 +#define BIT_XTAL_LPS_CAP_CYC_8822E(x) \ + (((x) & BIT_MASK_XTAL_LPS_CAP_CYC_8822E) \ + << BIT_SHIFT_XTAL_LPS_CAP_CYC_8822E) +#define BITS_XTAL_LPS_CAP_CYC_8822E \ + (BIT_MASK_XTAL_LPS_CAP_CYC_8822E << BIT_SHIFT_XTAL_LPS_CAP_CYC_8822E) +#define BIT_CLEAR_XTAL_LPS_CAP_CYC_8822E(x) \ + ((x) & (~BITS_XTAL_LPS_CAP_CYC_8822E)) +#define BIT_GET_XTAL_LPS_CAP_CYC_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_LPS_CAP_CYC_8822E) & \ + BIT_MASK_XTAL_LPS_CAP_CYC_8822E) +#define BIT_SET_XTAL_LPS_CAP_CYC_8822E(x, v) \ + (BIT_CLEAR_XTAL_LPS_CAP_CYC_8822E(x) | BIT_XTAL_LPS_CAP_CYC_8822E(v)) + +#define BIT_SHIFT_XTAL_LPS_CAP_STEP_8822E 2 +#define BIT_MASK_XTAL_LPS_CAP_STEP_8822E 0x3 +#define BIT_XTAL_LPS_CAP_STEP_8822E(x) \ + (((x) & BIT_MASK_XTAL_LPS_CAP_STEP_8822E) \ + << BIT_SHIFT_XTAL_LPS_CAP_STEP_8822E) +#define BITS_XTAL_LPS_CAP_STEP_8822E \ + (BIT_MASK_XTAL_LPS_CAP_STEP_8822E << BIT_SHIFT_XTAL_LPS_CAP_STEP_8822E) +#define BIT_CLEAR_XTAL_LPS_CAP_STEP_8822E(x) \ + ((x) & (~BITS_XTAL_LPS_CAP_STEP_8822E)) +#define BIT_GET_XTAL_LPS_CAP_STEP_8822E(x) \ + (((x) >> BIT_SHIFT_XTAL_LPS_CAP_STEP_8822E) & \ + BIT_MASK_XTAL_LPS_CAP_STEP_8822E) +#define BIT_SET_XTAL_LPS_CAP_STEP_8822E(x, v) \ + (BIT_CLEAR_XTAL_LPS_CAP_STEP_8822E(x) | BIT_XTAL_LPS_CAP_STEP_8822E(v)) + +#define BIT_AON_REG_CK_SEL_8822E BIT(1) +#define BIT_RESET_N_8822E BIT(0) + +/* 2 REG_SYS_CFG5_8822E */ +#define BIT_LPS_STATUS_8822E BIT(3) +#define BIT_HCI_TXDMA_BUSY_8822E BIT(2) +#define BIT_HCI_TXDMA_ALLOW_8822E BIT(1) +#define BIT_FW_CTRL_HCI_TXDMA_EN_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_CPU_DMEM_CON_8822E */ +#define BIT_WDT_AUTO_MODE_8822E BIT(22) +#define BIT_WDT_PLATFORM_EN_8822E BIT(21) +#define BIT_WDT_CPU_EN_8822E BIT(20) +#define BIT_WDT_OPT_IOWRAPPER_8822E BIT(19) +#define BIT_ANA_PORT_IDLE_8822E BIT(18) +#define BIT_MAC_PORT_IDLE_8822E BIT(17) +#define BIT_WL_PLATFORM_RST_8822E BIT(16) +#define BIT_WL_SECURITY_CLK_8822E BIT(15) +#define BIT_DDMA_EN_8822E BIT(8) + +#define BIT_SHIFT_CPU_DMEM_CON_8822E 0 +#define BIT_MASK_CPU_DMEM_CON_8822E 0xff +#define BIT_CPU_DMEM_CON_8822E(x) \ + (((x) & BIT_MASK_CPU_DMEM_CON_8822E) << BIT_SHIFT_CPU_DMEM_CON_8822E) +#define BITS_CPU_DMEM_CON_8822E \ + (BIT_MASK_CPU_DMEM_CON_8822E << BIT_SHIFT_CPU_DMEM_CON_8822E) +#define BIT_CLEAR_CPU_DMEM_CON_8822E(x) ((x) & (~BITS_CPU_DMEM_CON_8822E)) +#define BIT_GET_CPU_DMEM_CON_8822E(x) \ + (((x) >> BIT_SHIFT_CPU_DMEM_CON_8822E) & BIT_MASK_CPU_DMEM_CON_8822E) +#define BIT_SET_CPU_DMEM_CON_8822E(x, v) \ + (BIT_CLEAR_CPU_DMEM_CON_8822E(x) | BIT_CPU_DMEM_CON_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_BOOT_REASON_8822E */ + +#define BIT_SHIFT_BOOT_REASON_V1_8822E 0 +#define BIT_MASK_BOOT_REASON_V1_8822E 0x7 +#define BIT_BOOT_REASON_V1_8822E(x) \ + (((x) & BIT_MASK_BOOT_REASON_V1_8822E) \ + << BIT_SHIFT_BOOT_REASON_V1_8822E) +#define BITS_BOOT_REASON_V1_8822E \ + (BIT_MASK_BOOT_REASON_V1_8822E << BIT_SHIFT_BOOT_REASON_V1_8822E) +#define BIT_CLEAR_BOOT_REASON_V1_8822E(x) ((x) & (~BITS_BOOT_REASON_V1_8822E)) +#define BIT_GET_BOOT_REASON_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BOOT_REASON_V1_8822E) & \ + BIT_MASK_BOOT_REASON_V1_8822E) +#define BIT_SET_BOOT_REASON_V1_8822E(x, v) \ + (BIT_CLEAR_BOOT_REASON_V1_8822E(x) | BIT_BOOT_REASON_V1_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_HIMR2_8822E */ +#define BIT_BCNDMAINT_P4_MSK_8822E BIT(31) +#define BIT_BCNDMAINT_P3_MSK_8822E BIT(30) +#define BIT_BCNDMAINT_P2_MSK_8822E BIT(29) +#define BIT_BCNDMAINT_P1_MSK_8822E BIT(28) +#define BIT_ATIMEND7_MSK_8822E BIT(22) +#define BIT_ATIMEND6_MSK_8822E BIT(21) +#define BIT_ATIMEND5_MSK_8822E BIT(20) +#define BIT_ATIMEND4_MSK_8822E BIT(19) +#define BIT_ATIMEND3_MSK_8822E BIT(18) +#define BIT_ATIMEND2_MSK_8822E BIT(17) +#define BIT_ATIMEND1_MSK_8822E BIT(16) +#define BIT_TXBCN7OK_MSK_8822E BIT(14) +#define BIT_TXBCN6OK_MSK_8822E BIT(13) +#define BIT_TXBCN5OK_MSK_8822E BIT(12) +#define BIT_TXBCN4OK_MSK_8822E BIT(11) +#define BIT_TXBCN3OK_MSK_8822E BIT(10) +#define BIT_TXBCN2OK_MSK_8822E BIT(9) +#define BIT_TXBCN1OK_MSK_V1_8822E BIT(8) +#define BIT_TXBCN7ERR_MSK_8822E BIT(6) +#define BIT_TXBCN6ERR_MSK_8822E BIT(5) +#define BIT_TXBCN5ERR_MSK_8822E BIT(4) +#define BIT_TXBCN4ERR_MSK_8822E BIT(3) +#define BIT_TXBCN3ERR_MSK_8822E BIT(2) +#define BIT_TXBCN2ERR_MSK_8822E BIT(1) +#define BIT_TXBCN1ERR_MSK_V1_8822E BIT(0) + +/* 2 REG_HISR2_8822E */ +#define BIT_BCNDMAINT_P4_8822E BIT(31) +#define BIT_BCNDMAINT_P3_8822E BIT(30) +#define BIT_BCNDMAINT_P2_8822E BIT(29) +#define BIT_BCNDMAINT_P1_8822E BIT(28) +#define BIT_ATIMEND7_8822E BIT(22) +#define BIT_ATIMEND6_8822E BIT(21) +#define BIT_ATIMEND5_8822E BIT(20) +#define BIT_ATIMEND4_8822E BIT(19) +#define BIT_ATIMEND3_8822E BIT(18) +#define BIT_ATIMEND2_8822E BIT(17) +#define BIT_ATIMEND1_8822E BIT(16) +#define BIT_TXBCN7OK_8822E BIT(14) +#define BIT_TXBCN6OK_8822E BIT(13) +#define BIT_TXBCN5OK_8822E BIT(12) +#define BIT_TXBCN4OK_8822E BIT(11) +#define BIT_TXBCN3OK_8822E BIT(10) +#define BIT_TXBCN2OK_8822E BIT(9) +#define BIT_TXBCN1OK_8822E BIT(8) +#define BIT_TXBCN7ERR_8822E BIT(6) +#define BIT_TXBCN6ERR_8822E BIT(5) +#define BIT_TXBCN5ERR_8822E BIT(4) +#define BIT_TXBCN4ERR_8822E BIT(3) +#define BIT_TXBCN3ERR_8822E BIT(2) +#define BIT_TXBCN2ERR_8822E BIT(1) +#define BIT_TXBCN1ERR_8822E BIT(0) + +/* 2 REG_HIMR3_8822E */ +#define BIT_WDT_PLATFORM_INT_MSK_8822E BIT(18) +#define BIT_WDT_CPU_INT_MSK_8822E BIT(17) +#define BIT_SETH2CDOK_MASK_8822E BIT(16) +#define BIT_H2C_CMD_FULL_MASK_8822E BIT(15) +#define BIT_PWR_INT_127_MASK_8822E BIT(14) +#define BIT_TXSHORTCUT_TXDESUPDATEOK_MASK_8822E BIT(13) +#define BIT_TXSHORTCUT_BKUPDATEOK_MASK_8822E BIT(12) +#define BIT_TXSHORTCUT_BEUPDATEOK_MASK_8822E BIT(11) +#define BIT_TXSHORTCUT_VIUPDATEOK_MAS_8822E BIT(10) +#define BIT_TXSHORTCUT_VOUPDATEOK_MASK_8822E BIT(9) +#define BIT_PWR_INT_127_MASK_V1_8822E BIT(8) +#define BIT_PWR_INT_126TO96_MASK_8822E BIT(7) +#define BIT_PWR_INT_95TO64_MASK_8822E BIT(6) +#define BIT_PWR_INT_63TO32_MASK_8822E BIT(5) +#define BIT_PWR_INT_31TO0_MASK_8822E BIT(4) +#define BIT_RX_DMA_STUCK_MSK_8822E BIT(3) +#define BIT_TX_DMA_STUCK_MSK_8822E BIT(2) +#define BIT_DDMA0_LP_INT_MSK_8822E BIT(1) +#define BIT_DDMA0_HP_INT_MSK_8822E BIT(0) + +/* 2 REG_HISR3_8822E */ +#define BIT_WDT_PLATFORM_INT_8822E BIT(18) +#define BIT_WDT_CPU_INT_8822E BIT(17) +#define BIT_SETH2CDOK_8822E BIT(16) +#define BIT_H2C_CMD_FULL_8822E BIT(15) +#define BIT_PWR_INT_127_8822E BIT(14) +#define BIT_TXSHORTCUT_TXDESUPDATEOK_8822E BIT(13) +#define BIT_TXSHORTCUT_BKUPDATEOK_8822E BIT(12) +#define BIT_TXSHORTCUT_BEUPDATEOK_8822E BIT(11) +#define BIT_TXSHORTCUT_VIUPDATEOK_8822E BIT(10) +#define BIT_TXSHORTCUT_VOUPDATEOK_8822E BIT(9) +#define BIT_PWR_INT_127_V1_8822E BIT(8) +#define BIT_PWR_INT_126TO96_8822E BIT(7) +#define BIT_PWR_INT_95TO64_8822E BIT(6) +#define BIT_PWR_INT_63TO32_8822E BIT(5) +#define BIT_PWR_INT_31TO0_8822E BIT(4) +#define BIT_RX_DMA_STUCK_8822E BIT(3) +#define BIT_TX_DMA_STUCK_8822E BIT(2) +#define BIT_DDMA0_LP_INT_8822E BIT(1) +#define BIT_DDMA0_HP_INT_8822E BIT(0) + +/* 2 REG_SW_MDIO_8822E */ +#define BIT_DIS_TIMEOUT_IO_8822E BIT(24) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_H2C_PKT_READADDR_8822E */ + +#define BIT_SHIFT_H2C_PKT_READADDR_8822E 0 +#define BIT_MASK_H2C_PKT_READADDR_8822E 0x3ffff +#define BIT_H2C_PKT_READADDR_8822E(x) \ + (((x) & BIT_MASK_H2C_PKT_READADDR_8822E) \ + << BIT_SHIFT_H2C_PKT_READADDR_8822E) +#define BITS_H2C_PKT_READADDR_8822E \ + (BIT_MASK_H2C_PKT_READADDR_8822E << BIT_SHIFT_H2C_PKT_READADDR_8822E) +#define BIT_CLEAR_H2C_PKT_READADDR_8822E(x) \ + ((x) & (~BITS_H2C_PKT_READADDR_8822E)) +#define BIT_GET_H2C_PKT_READADDR_8822E(x) \ + (((x) >> BIT_SHIFT_H2C_PKT_READADDR_8822E) & \ + BIT_MASK_H2C_PKT_READADDR_8822E) +#define BIT_SET_H2C_PKT_READADDR_8822E(x, v) \ + (BIT_CLEAR_H2C_PKT_READADDR_8822E(x) | BIT_H2C_PKT_READADDR_8822E(v)) + +/* 2 REG_H2C_PKT_WRITEADDR_8822E */ + +#define BIT_SHIFT_H2C_PKT_WRITEADDR_8822E 0 +#define BIT_MASK_H2C_PKT_WRITEADDR_8822E 0x3ffff +#define BIT_H2C_PKT_WRITEADDR_8822E(x) \ + (((x) & BIT_MASK_H2C_PKT_WRITEADDR_8822E) \ + << BIT_SHIFT_H2C_PKT_WRITEADDR_8822E) +#define BITS_H2C_PKT_WRITEADDR_8822E \ + (BIT_MASK_H2C_PKT_WRITEADDR_8822E << BIT_SHIFT_H2C_PKT_WRITEADDR_8822E) +#define BIT_CLEAR_H2C_PKT_WRITEADDR_8822E(x) \ + ((x) & (~BITS_H2C_PKT_WRITEADDR_8822E)) +#define BIT_GET_H2C_PKT_WRITEADDR_8822E(x) \ + (((x) >> BIT_SHIFT_H2C_PKT_WRITEADDR_8822E) & \ + BIT_MASK_H2C_PKT_WRITEADDR_8822E) +#define BIT_SET_H2C_PKT_WRITEADDR_8822E(x, v) \ + (BIT_CLEAR_H2C_PKT_WRITEADDR_8822E(x) | BIT_H2C_PKT_WRITEADDR_8822E(v)) + +/* 2 REG_MEM_PWR_CRTL_8822E */ +#define BIT_MEM_BB_SD_8822E BIT(17) +#define BIT_MEM_BB_DS_8822E BIT(16) +#define BIT_MEM_BT_DS_8822E BIT(10) +#define BIT_MEM_SDIO_LS_8822E BIT(9) +#define BIT_MEM_SDIO_DS_8822E BIT(8) +#define BIT_MEM_USB_LS_8822E BIT(7) +#define BIT_MEM_USB_DS_8822E BIT(6) +#define BIT_MEM_PCI_LS_8822E BIT(5) +#define BIT_MEM_PCI_DS_8822E BIT(4) +#define BIT_MEM_WLMAC_LS_8822E BIT(3) +#define BIT_MEM_WLMAC_DS_8822E BIT(2) +#define BIT_MEM_WLMCU_LS_8822E BIT(1) +#define BIT_MEM_WLMCU_DS_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_FW_DBG6_8822E */ + +#define BIT_SHIFT_FW_DBG6_8822E 0 +#define BIT_MASK_FW_DBG6_8822E 0xffffffffL +#define BIT_FW_DBG6_8822E(x) \ + (((x) & BIT_MASK_FW_DBG6_8822E) << BIT_SHIFT_FW_DBG6_8822E) +#define BITS_FW_DBG6_8822E (BIT_MASK_FW_DBG6_8822E << BIT_SHIFT_FW_DBG6_8822E) +#define BIT_CLEAR_FW_DBG6_8822E(x) ((x) & (~BITS_FW_DBG6_8822E)) +#define BIT_GET_FW_DBG6_8822E(x) \ + (((x) >> BIT_SHIFT_FW_DBG6_8822E) & BIT_MASK_FW_DBG6_8822E) +#define BIT_SET_FW_DBG6_8822E(x, v) \ + (BIT_CLEAR_FW_DBG6_8822E(x) | BIT_FW_DBG6_8822E(v)) + +/* 2 REG_FW_DBG7_8822E */ + +#define BIT_SHIFT_FW_DBG7_8822E 0 +#define BIT_MASK_FW_DBG7_8822E 0xffffffffL +#define BIT_FW_DBG7_8822E(x) \ + (((x) & BIT_MASK_FW_DBG7_8822E) << BIT_SHIFT_FW_DBG7_8822E) +#define BITS_FW_DBG7_8822E (BIT_MASK_FW_DBG7_8822E << BIT_SHIFT_FW_DBG7_8822E) +#define BIT_CLEAR_FW_DBG7_8822E(x) ((x) & (~BITS_FW_DBG7_8822E)) +#define BIT_GET_FW_DBG7_8822E(x) \ + (((x) >> BIT_SHIFT_FW_DBG7_8822E) & BIT_MASK_FW_DBG7_8822E) +#define BIT_SET_FW_DBG7_8822E(x, v) \ + (BIT_CLEAR_FW_DBG7_8822E(x) | BIT_FW_DBG7_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_CR_8822E */ + +#define BIT_SHIFT_LBMODE_8822E 24 +#define BIT_MASK_LBMODE_8822E 0x1f +#define BIT_LBMODE_8822E(x) \ + (((x) & BIT_MASK_LBMODE_8822E) << BIT_SHIFT_LBMODE_8822E) +#define BITS_LBMODE_8822E (BIT_MASK_LBMODE_8822E << BIT_SHIFT_LBMODE_8822E) +#define BIT_CLEAR_LBMODE_8822E(x) ((x) & (~BITS_LBMODE_8822E)) +#define BIT_GET_LBMODE_8822E(x) \ + (((x) >> BIT_SHIFT_LBMODE_8822E) & BIT_MASK_LBMODE_8822E) +#define BIT_SET_LBMODE_8822E(x, v) \ + (BIT_CLEAR_LBMODE_8822E(x) | BIT_LBMODE_8822E(v)) + +#define BIT_SHIFT_NETYPE1_8822E 18 +#define BIT_MASK_NETYPE1_8822E 0x3 +#define BIT_NETYPE1_8822E(x) \ + (((x) & BIT_MASK_NETYPE1_8822E) << BIT_SHIFT_NETYPE1_8822E) +#define BITS_NETYPE1_8822E (BIT_MASK_NETYPE1_8822E << BIT_SHIFT_NETYPE1_8822E) +#define BIT_CLEAR_NETYPE1_8822E(x) ((x) & (~BITS_NETYPE1_8822E)) +#define BIT_GET_NETYPE1_8822E(x) \ + (((x) >> BIT_SHIFT_NETYPE1_8822E) & BIT_MASK_NETYPE1_8822E) +#define BIT_SET_NETYPE1_8822E(x, v) \ + (BIT_CLEAR_NETYPE1_8822E(x) | BIT_NETYPE1_8822E(v)) + +#define BIT_SHIFT_NETYPE0_8822E 16 +#define BIT_MASK_NETYPE0_8822E 0x3 +#define BIT_NETYPE0_8822E(x) \ + (((x) & BIT_MASK_NETYPE0_8822E) << BIT_SHIFT_NETYPE0_8822E) +#define BITS_NETYPE0_8822E (BIT_MASK_NETYPE0_8822E << BIT_SHIFT_NETYPE0_8822E) +#define BIT_CLEAR_NETYPE0_8822E(x) ((x) & (~BITS_NETYPE0_8822E)) +#define BIT_GET_NETYPE0_8822E(x) \ + (((x) >> BIT_SHIFT_NETYPE0_8822E) & BIT_MASK_NETYPE0_8822E) +#define BIT_SET_NETYPE0_8822E(x, v) \ + (BIT_CLEAR_NETYPE0_8822E(x) | BIT_NETYPE0_8822E(v)) + +#define BIT_COUNTER_STS_EN_8822E BIT(13) +#define BIT_I2C_MAILBOX_EN_8822E BIT(12) +#define BIT_SHCUT_EN_8822E BIT(11) +#define BIT_32K_CAL_TMR_EN_8822E BIT(10) +#define BIT_MAC_SEC_EN_8822E BIT(9) +#define BIT_ENSWBCN_8822E BIT(8) +#define BIT_MACRXEN_8822E BIT(7) +#define BIT_MACTXEN_8822E BIT(6) +#define BIT_SCHEDULE_EN_8822E BIT(5) +#define BIT_PROTOCOL_EN_8822E BIT(4) +#define BIT_RXDMA_EN_8822E BIT(3) +#define BIT_TXDMA_EN_8822E BIT(2) +#define BIT_HCI_RXDMA_EN_8822E BIT(1) +#define BIT_HCI_TXDMA_EN_8822E BIT(0) + +/* 2 REG_PG_SIZE_8822E */ + +#define BIT_SHIFT_DBG_FIFO_SEL_8822E 16 +#define BIT_MASK_DBG_FIFO_SEL_8822E 0xff +#define BIT_DBG_FIFO_SEL_8822E(x) \ + (((x) & BIT_MASK_DBG_FIFO_SEL_8822E) << BIT_SHIFT_DBG_FIFO_SEL_8822E) +#define BITS_DBG_FIFO_SEL_8822E \ + (BIT_MASK_DBG_FIFO_SEL_8822E << BIT_SHIFT_DBG_FIFO_SEL_8822E) +#define BIT_CLEAR_DBG_FIFO_SEL_8822E(x) ((x) & (~BITS_DBG_FIFO_SEL_8822E)) +#define BIT_GET_DBG_FIFO_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_DBG_FIFO_SEL_8822E) & BIT_MASK_DBG_FIFO_SEL_8822E) +#define BIT_SET_DBG_FIFO_SEL_8822E(x, v) \ + (BIT_CLEAR_DBG_FIFO_SEL_8822E(x) | BIT_DBG_FIFO_SEL_8822E(v)) + +/* 2 REG_PKT_BUFF_ACCESS_CTRL_8822E */ + +#define BIT_SHIFT_PKT_BUFF_ACCESS_CTRL_8822E 0 +#define BIT_MASK_PKT_BUFF_ACCESS_CTRL_8822E 0xff +#define BIT_PKT_BUFF_ACCESS_CTRL_8822E(x) \ + (((x) & BIT_MASK_PKT_BUFF_ACCESS_CTRL_8822E) \ + << BIT_SHIFT_PKT_BUFF_ACCESS_CTRL_8822E) +#define BITS_PKT_BUFF_ACCESS_CTRL_8822E \ + (BIT_MASK_PKT_BUFF_ACCESS_CTRL_8822E \ + << BIT_SHIFT_PKT_BUFF_ACCESS_CTRL_8822E) +#define BIT_CLEAR_PKT_BUFF_ACCESS_CTRL_8822E(x) \ + ((x) & (~BITS_PKT_BUFF_ACCESS_CTRL_8822E)) +#define BIT_GET_PKT_BUFF_ACCESS_CTRL_8822E(x) \ + (((x) >> BIT_SHIFT_PKT_BUFF_ACCESS_CTRL_8822E) & \ + BIT_MASK_PKT_BUFF_ACCESS_CTRL_8822E) +#define BIT_SET_PKT_BUFF_ACCESS_CTRL_8822E(x, v) \ + (BIT_CLEAR_PKT_BUFF_ACCESS_CTRL_8822E(x) | \ + BIT_PKT_BUFF_ACCESS_CTRL_8822E(v)) + +/* 2 REG_TSF_CLK_STATE_8822E */ +#define BIT_TSF_CLK_STABLE_8822E BIT(15) + +/* 2 REG_TXDMA_PQ_MAP_8822E */ +#define BIT_CSI_BW_EN_8822E BIT(31) + +#define BIT_SHIFT_TXDMA_H2C_MAP_8822E 16 +#define BIT_MASK_TXDMA_H2C_MAP_8822E 0x3 +#define BIT_TXDMA_H2C_MAP_8822E(x) \ + (((x) & BIT_MASK_TXDMA_H2C_MAP_8822E) << BIT_SHIFT_TXDMA_H2C_MAP_8822E) +#define BITS_TXDMA_H2C_MAP_8822E \ + (BIT_MASK_TXDMA_H2C_MAP_8822E << BIT_SHIFT_TXDMA_H2C_MAP_8822E) +#define BIT_CLEAR_TXDMA_H2C_MAP_8822E(x) ((x) & (~BITS_TXDMA_H2C_MAP_8822E)) +#define BIT_GET_TXDMA_H2C_MAP_8822E(x) \ + (((x) >> BIT_SHIFT_TXDMA_H2C_MAP_8822E) & BIT_MASK_TXDMA_H2C_MAP_8822E) +#define BIT_SET_TXDMA_H2C_MAP_8822E(x, v) \ + (BIT_CLEAR_TXDMA_H2C_MAP_8822E(x) | BIT_TXDMA_H2C_MAP_8822E(v)) + +#define BIT_SHIFT_TXDMA_HIQ_MAP_8822E 14 +#define BIT_MASK_TXDMA_HIQ_MAP_8822E 0x3 +#define BIT_TXDMA_HIQ_MAP_8822E(x) \ + (((x) & BIT_MASK_TXDMA_HIQ_MAP_8822E) << BIT_SHIFT_TXDMA_HIQ_MAP_8822E) +#define BITS_TXDMA_HIQ_MAP_8822E \ + (BIT_MASK_TXDMA_HIQ_MAP_8822E << BIT_SHIFT_TXDMA_HIQ_MAP_8822E) +#define BIT_CLEAR_TXDMA_HIQ_MAP_8822E(x) ((x) & (~BITS_TXDMA_HIQ_MAP_8822E)) +#define BIT_GET_TXDMA_HIQ_MAP_8822E(x) \ + (((x) >> BIT_SHIFT_TXDMA_HIQ_MAP_8822E) & BIT_MASK_TXDMA_HIQ_MAP_8822E) +#define BIT_SET_TXDMA_HIQ_MAP_8822E(x, v) \ + (BIT_CLEAR_TXDMA_HIQ_MAP_8822E(x) | BIT_TXDMA_HIQ_MAP_8822E(v)) + +#define BIT_SHIFT_TXDMA_MGQ_MAP_8822E 12 +#define BIT_MASK_TXDMA_MGQ_MAP_8822E 0x3 +#define BIT_TXDMA_MGQ_MAP_8822E(x) \ + (((x) & BIT_MASK_TXDMA_MGQ_MAP_8822E) << BIT_SHIFT_TXDMA_MGQ_MAP_8822E) +#define BITS_TXDMA_MGQ_MAP_8822E \ + (BIT_MASK_TXDMA_MGQ_MAP_8822E << BIT_SHIFT_TXDMA_MGQ_MAP_8822E) +#define BIT_CLEAR_TXDMA_MGQ_MAP_8822E(x) ((x) & (~BITS_TXDMA_MGQ_MAP_8822E)) +#define BIT_GET_TXDMA_MGQ_MAP_8822E(x) \ + (((x) >> BIT_SHIFT_TXDMA_MGQ_MAP_8822E) & BIT_MASK_TXDMA_MGQ_MAP_8822E) +#define BIT_SET_TXDMA_MGQ_MAP_8822E(x, v) \ + (BIT_CLEAR_TXDMA_MGQ_MAP_8822E(x) | BIT_TXDMA_MGQ_MAP_8822E(v)) + +#define BIT_SHIFT_TXDMA_BKQ_MAP_8822E 10 +#define BIT_MASK_TXDMA_BKQ_MAP_8822E 0x3 +#define BIT_TXDMA_BKQ_MAP_8822E(x) \ + (((x) & BIT_MASK_TXDMA_BKQ_MAP_8822E) << BIT_SHIFT_TXDMA_BKQ_MAP_8822E) +#define BITS_TXDMA_BKQ_MAP_8822E \ + (BIT_MASK_TXDMA_BKQ_MAP_8822E << BIT_SHIFT_TXDMA_BKQ_MAP_8822E) +#define BIT_CLEAR_TXDMA_BKQ_MAP_8822E(x) ((x) & (~BITS_TXDMA_BKQ_MAP_8822E)) +#define BIT_GET_TXDMA_BKQ_MAP_8822E(x) \ + (((x) >> BIT_SHIFT_TXDMA_BKQ_MAP_8822E) & BIT_MASK_TXDMA_BKQ_MAP_8822E) +#define BIT_SET_TXDMA_BKQ_MAP_8822E(x, v) \ + (BIT_CLEAR_TXDMA_BKQ_MAP_8822E(x) | BIT_TXDMA_BKQ_MAP_8822E(v)) + +#define BIT_SHIFT_TXDMA_BEQ_MAP_8822E 8 +#define BIT_MASK_TXDMA_BEQ_MAP_8822E 0x3 +#define BIT_TXDMA_BEQ_MAP_8822E(x) \ + (((x) & BIT_MASK_TXDMA_BEQ_MAP_8822E) << BIT_SHIFT_TXDMA_BEQ_MAP_8822E) +#define BITS_TXDMA_BEQ_MAP_8822E \ + (BIT_MASK_TXDMA_BEQ_MAP_8822E << BIT_SHIFT_TXDMA_BEQ_MAP_8822E) +#define BIT_CLEAR_TXDMA_BEQ_MAP_8822E(x) ((x) & (~BITS_TXDMA_BEQ_MAP_8822E)) +#define BIT_GET_TXDMA_BEQ_MAP_8822E(x) \ + (((x) >> BIT_SHIFT_TXDMA_BEQ_MAP_8822E) & BIT_MASK_TXDMA_BEQ_MAP_8822E) +#define BIT_SET_TXDMA_BEQ_MAP_8822E(x, v) \ + (BIT_CLEAR_TXDMA_BEQ_MAP_8822E(x) | BIT_TXDMA_BEQ_MAP_8822E(v)) + +#define BIT_SHIFT_TXDMA_VIQ_MAP_8822E 6 +#define BIT_MASK_TXDMA_VIQ_MAP_8822E 0x3 +#define BIT_TXDMA_VIQ_MAP_8822E(x) \ + (((x) & BIT_MASK_TXDMA_VIQ_MAP_8822E) << BIT_SHIFT_TXDMA_VIQ_MAP_8822E) +#define BITS_TXDMA_VIQ_MAP_8822E \ + (BIT_MASK_TXDMA_VIQ_MAP_8822E << BIT_SHIFT_TXDMA_VIQ_MAP_8822E) +#define BIT_CLEAR_TXDMA_VIQ_MAP_8822E(x) ((x) & (~BITS_TXDMA_VIQ_MAP_8822E)) +#define BIT_GET_TXDMA_VIQ_MAP_8822E(x) \ + (((x) >> BIT_SHIFT_TXDMA_VIQ_MAP_8822E) & BIT_MASK_TXDMA_VIQ_MAP_8822E) +#define BIT_SET_TXDMA_VIQ_MAP_8822E(x, v) \ + (BIT_CLEAR_TXDMA_VIQ_MAP_8822E(x) | BIT_TXDMA_VIQ_MAP_8822E(v)) + +#define BIT_SHIFT_TXDMA_VOQ_MAP_8822E 4 +#define BIT_MASK_TXDMA_VOQ_MAP_8822E 0x3 +#define BIT_TXDMA_VOQ_MAP_8822E(x) \ + (((x) & BIT_MASK_TXDMA_VOQ_MAP_8822E) << BIT_SHIFT_TXDMA_VOQ_MAP_8822E) +#define BITS_TXDMA_VOQ_MAP_8822E \ + (BIT_MASK_TXDMA_VOQ_MAP_8822E << BIT_SHIFT_TXDMA_VOQ_MAP_8822E) +#define BIT_CLEAR_TXDMA_VOQ_MAP_8822E(x) ((x) & (~BITS_TXDMA_VOQ_MAP_8822E)) +#define BIT_GET_TXDMA_VOQ_MAP_8822E(x) \ + (((x) >> BIT_SHIFT_TXDMA_VOQ_MAP_8822E) & BIT_MASK_TXDMA_VOQ_MAP_8822E) +#define BIT_SET_TXDMA_VOQ_MAP_8822E(x, v) \ + (BIT_CLEAR_TXDMA_VOQ_MAP_8822E(x) | BIT_TXDMA_VOQ_MAP_8822E(v)) + +#define BIT_TXDMA_BW_EN_8822E BIT(3) +#define BIT_RXDMA_AGG_EN_8822E BIT(2) +#define BIT_RXSHFT_EN_8822E BIT(1) +#define BIT_RXDMA_ARBBW_EN_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_TRXFF_BNDY_8822E */ + +#define BIT_SHIFT_FWFFOVFL_RSV_8822E 16 +#define BIT_MASK_FWFFOVFL_RSV_8822E 0xf +#define BIT_FWFFOVFL_RSV_8822E(x) \ + (((x) & BIT_MASK_FWFFOVFL_RSV_8822E) << BIT_SHIFT_FWFFOVFL_RSV_8822E) +#define BITS_FWFFOVFL_RSV_8822E \ + (BIT_MASK_FWFFOVFL_RSV_8822E << BIT_SHIFT_FWFFOVFL_RSV_8822E) +#define BIT_CLEAR_FWFFOVFL_RSV_8822E(x) ((x) & (~BITS_FWFFOVFL_RSV_8822E)) +#define BIT_GET_FWFFOVFL_RSV_8822E(x) \ + (((x) >> BIT_SHIFT_FWFFOVFL_RSV_8822E) & BIT_MASK_FWFFOVFL_RSV_8822E) +#define BIT_SET_FWFFOVFL_RSV_8822E(x, v) \ + (BIT_CLEAR_FWFFOVFL_RSV_8822E(x) | BIT_FWFFOVFL_RSV_8822E(v)) + +#define BIT_SHIFT_RXFFOVFL_RSV_V2_8822E 8 +#define BIT_MASK_RXFFOVFL_RSV_V2_8822E 0xf +#define BIT_RXFFOVFL_RSV_V2_8822E(x) \ + (((x) & BIT_MASK_RXFFOVFL_RSV_V2_8822E) \ + << BIT_SHIFT_RXFFOVFL_RSV_V2_8822E) +#define BITS_RXFFOVFL_RSV_V2_8822E \ + (BIT_MASK_RXFFOVFL_RSV_V2_8822E << BIT_SHIFT_RXFFOVFL_RSV_V2_8822E) +#define BIT_CLEAR_RXFFOVFL_RSV_V2_8822E(x) ((x) & (~BITS_RXFFOVFL_RSV_V2_8822E)) +#define BIT_GET_RXFFOVFL_RSV_V2_8822E(x) \ + (((x) >> BIT_SHIFT_RXFFOVFL_RSV_V2_8822E) & \ + BIT_MASK_RXFFOVFL_RSV_V2_8822E) +#define BIT_SET_RXFFOVFL_RSV_V2_8822E(x, v) \ + (BIT_CLEAR_RXFFOVFL_RSV_V2_8822E(x) | BIT_RXFFOVFL_RSV_V2_8822E(v)) + +/* 2 REG_PTA_I2C_MBOX_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_I2C_M_STATUS_8822E 8 +#define BIT_MASK_I2C_M_STATUS_8822E 0xf +#define BIT_I2C_M_STATUS_8822E(x) \ + (((x) & BIT_MASK_I2C_M_STATUS_8822E) << BIT_SHIFT_I2C_M_STATUS_8822E) +#define BITS_I2C_M_STATUS_8822E \ + (BIT_MASK_I2C_M_STATUS_8822E << BIT_SHIFT_I2C_M_STATUS_8822E) +#define BIT_CLEAR_I2C_M_STATUS_8822E(x) ((x) & (~BITS_I2C_M_STATUS_8822E)) +#define BIT_GET_I2C_M_STATUS_8822E(x) \ + (((x) >> BIT_SHIFT_I2C_M_STATUS_8822E) & BIT_MASK_I2C_M_STATUS_8822E) +#define BIT_SET_I2C_M_STATUS_8822E(x, v) \ + (BIT_CLEAR_I2C_M_STATUS_8822E(x) | BIT_I2C_M_STATUS_8822E(v)) + +#define BIT_SHIFT_I2C_M_BUS_GNT_FW_8822E 4 +#define BIT_MASK_I2C_M_BUS_GNT_FW_8822E 0x7 +#define BIT_I2C_M_BUS_GNT_FW_8822E(x) \ + (((x) & BIT_MASK_I2C_M_BUS_GNT_FW_8822E) \ + << BIT_SHIFT_I2C_M_BUS_GNT_FW_8822E) +#define BITS_I2C_M_BUS_GNT_FW_8822E \ + (BIT_MASK_I2C_M_BUS_GNT_FW_8822E << BIT_SHIFT_I2C_M_BUS_GNT_FW_8822E) +#define BIT_CLEAR_I2C_M_BUS_GNT_FW_8822E(x) \ + ((x) & (~BITS_I2C_M_BUS_GNT_FW_8822E)) +#define BIT_GET_I2C_M_BUS_GNT_FW_8822E(x) \ + (((x) >> BIT_SHIFT_I2C_M_BUS_GNT_FW_8822E) & \ + BIT_MASK_I2C_M_BUS_GNT_FW_8822E) +#define BIT_SET_I2C_M_BUS_GNT_FW_8822E(x, v) \ + (BIT_CLEAR_I2C_M_BUS_GNT_FW_8822E(x) | BIT_I2C_M_BUS_GNT_FW_8822E(v)) + +#define BIT_I2C_M_GNT_FW_8822E BIT(3) + +#define BIT_SHIFT_I2C_M_SPEED_8822E 1 +#define BIT_MASK_I2C_M_SPEED_8822E 0x3 +#define BIT_I2C_M_SPEED_8822E(x) \ + (((x) & BIT_MASK_I2C_M_SPEED_8822E) << BIT_SHIFT_I2C_M_SPEED_8822E) +#define BITS_I2C_M_SPEED_8822E \ + (BIT_MASK_I2C_M_SPEED_8822E << BIT_SHIFT_I2C_M_SPEED_8822E) +#define BIT_CLEAR_I2C_M_SPEED_8822E(x) ((x) & (~BITS_I2C_M_SPEED_8822E)) +#define BIT_GET_I2C_M_SPEED_8822E(x) \ + (((x) >> BIT_SHIFT_I2C_M_SPEED_8822E) & BIT_MASK_I2C_M_SPEED_8822E) +#define BIT_SET_I2C_M_SPEED_8822E(x, v) \ + (BIT_CLEAR_I2C_M_SPEED_8822E(x) | BIT_I2C_M_SPEED_8822E(v)) + +#define BIT_I2C_M_UNLOCK_8822E BIT(0) + +/* 2 REG_RXFF_BNDY_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_RXFF0_BNDY_V2_8822E 0 +#define BIT_MASK_RXFF0_BNDY_V2_8822E 0x3ffff +#define BIT_RXFF0_BNDY_V2_8822E(x) \ + (((x) & BIT_MASK_RXFF0_BNDY_V2_8822E) << BIT_SHIFT_RXFF0_BNDY_V2_8822E) +#define BITS_RXFF0_BNDY_V2_8822E \ + (BIT_MASK_RXFF0_BNDY_V2_8822E << BIT_SHIFT_RXFF0_BNDY_V2_8822E) +#define BIT_CLEAR_RXFF0_BNDY_V2_8822E(x) ((x) & (~BITS_RXFF0_BNDY_V2_8822E)) +#define BIT_GET_RXFF0_BNDY_V2_8822E(x) \ + (((x) >> BIT_SHIFT_RXFF0_BNDY_V2_8822E) & BIT_MASK_RXFF0_BNDY_V2_8822E) +#define BIT_SET_RXFF0_BNDY_V2_8822E(x, v) \ + (BIT_CLEAR_RXFF0_BNDY_V2_8822E(x) | BIT_RXFF0_BNDY_V2_8822E(v)) + +/* 2 REG_FE1IMR_8822E */ +#define BIT_FS_SW_PLL_LEAVE_32K_INT_EN_8822E BIT(31) +#define BIT_FS_FWFF_FULL_INT_EN_8822E BIT(30) +#define BIT_FS_BB_STOP_RX_INT_EN_8822E BIT(29) +#define BIT_FS_RXDMA2_DONE_INT_EN_8822E BIT(28) +#define BIT_FS_RXDONE2_INT_EN_8822E BIT(26) +#define BIT_FS_RX_BCN_P4_INT_EN_8822E BIT(25) +#define BIT_FS_RX_BCN_P3_INT_EN_8822E BIT(24) +#define BIT_FS_RX_BCN_P2_INT_EN_8822E BIT(23) +#define BIT_FS_RX_BCN_P1_INT_EN_8822E BIT(22) +#define BIT_FS_RX_BCN_P0_INT_EN_8822E BIT(21) +#define BIT_FS_RX_UMD0_INT_EN_8822E BIT(20) +#define BIT_FS_RX_UMD1_INT_EN_8822E BIT(19) +#define BIT_FS_RX_BMD0_INT_EN_8822E BIT(18) +#define BIT_FS_RX_BMD1_INT_EN_8822E BIT(17) +#define BIT_FS_RXDONE_INT_EN_8822E BIT(16) +#define BIT_FS_WWLAN_INT_EN_8822E BIT(15) +#define BIT_FS_SOUND_DONE_INT_EN_8822E BIT(14) +#define BIT_FS_BF1_PRETO_INT_EN_8822E BIT(11) +#define BIT_FS_BF0_PRETO_INT_EN_8822E BIT(10) +#define BIT_FS_PTCL_RELEASE_MACID_INT_EN_8822E BIT(9) +#define BIT_FS_PRETX_ERRHLD_INT_EN_8822E BIT(8) +#define BIT_FS_LTE_COEX_EN_8822E BIT(6) +#define BIT_FS_WLACTOFF_INT_EN_8822E BIT(5) +#define BIT_FS_WLACTON_INT_EN_8822E BIT(4) +#define BIT_FS_BTCMD_INT_EN_8822E BIT(3) +#define BIT_FS_REG_MAILBOX_TO_I2C_INT_EN_8822E BIT(2) +#define BIT_FS_TRPC_TO_INT_EN_V1_8822E BIT(1) +#define BIT_FS_RPC_O_T_INT_EN_V1_8822E BIT(0) + +/* 2 REG_FE1ISR_8822E */ +#define BIT_FS_SW_PLL_LEAVE_32K_INT_8822E BIT(31) +#define BIT_FS_FS_FWFF_FULL_INT_8822E BIT(30) +#define BIT_FS_BB_STOP_RX_INT_8822E BIT(29) +#define BIT_FS_RXDMA2_DONE_INT_8822E BIT(28) +#define BIT_FS_RXDONE2_INT_8822E BIT(26) +#define BIT_FS_RX_BCN_P4_INT_8822E BIT(25) +#define BIT_FS_RX_BCN_P3_INT_8822E BIT(24) +#define BIT_FS_RX_BCN_P2_INT_8822E BIT(23) +#define BIT_FS_RX_BCN_P1_INT_8822E BIT(22) +#define BIT_FS_RX_BCN_P0_INT_8822E BIT(21) +#define BIT_FS_RX_UMD0_INT_8822E BIT(20) +#define BIT_FS_RX_UMD1_INT_8822E BIT(19) +#define BIT_FS_RX_BMD0_INT_8822E BIT(18) +#define BIT_FS_RX_BMD1_INT_8822E BIT(17) +#define BIT_FS_RXDONE_INT_8822E BIT(16) +#define BIT_FS_WWLAN_INT_8822E BIT(15) +#define BIT_FS_SOUND_DONE_INT_8822E BIT(14) +#define BIT_FS_BF1_PRETO_INT_8822E BIT(11) +#define BIT_FS_BF0_PRETO_INT_8822E BIT(10) +#define BIT_FS_PTCL_RELEASE_MACID_INT_8822E BIT(9) +#define BIT_FS_PRETX_ERRHLD_INT_8822E BIT(8) +#define BIT_FS_LTE_COEX_INT_8822E BIT(6) +#define BIT_FS_WLACTOFF_INT_8822E BIT(5) +#define BIT_FS_WLACTON_INT_8822E BIT(4) +#define BIT_FS_BCN_RX_INT_INT_8822E BIT(3) +#define BIT_FS_MAILBOX_TO_I2C_INT_8822E BIT(2) +#define BIT_FS_TRPC_TO_INT_8822E BIT(1) +#define BIT_FS_RPC_O_T_INT_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_CPWM_8822E */ +#define BIT_CPWM_TOGGLING_8822E BIT(31) + +#define BIT_SHIFT_CPWM_MOD_8822E 24 +#define BIT_MASK_CPWM_MOD_8822E 0x7f +#define BIT_CPWM_MOD_8822E(x) \ + (((x) & BIT_MASK_CPWM_MOD_8822E) << BIT_SHIFT_CPWM_MOD_8822E) +#define BITS_CPWM_MOD_8822E \ + (BIT_MASK_CPWM_MOD_8822E << BIT_SHIFT_CPWM_MOD_8822E) +#define BIT_CLEAR_CPWM_MOD_8822E(x) ((x) & (~BITS_CPWM_MOD_8822E)) +#define BIT_GET_CPWM_MOD_8822E(x) \ + (((x) >> BIT_SHIFT_CPWM_MOD_8822E) & BIT_MASK_CPWM_MOD_8822E) +#define BIT_SET_CPWM_MOD_8822E(x, v) \ + (BIT_CLEAR_CPWM_MOD_8822E(x) | BIT_CPWM_MOD_8822E(v)) + +/* 2 REG_FWIMR_8822E */ +#define BIT_FS_TXBCNOK_MB7_INT_EN_8822E BIT(31) +#define BIT_FS_TXBCNOK_MB6_INT_EN_8822E BIT(30) +#define BIT_FS_TXBCNOK_MB5_INT_EN_8822E BIT(29) +#define BIT_FS_TXBCNOK_MB4_INT_EN_8822E BIT(28) +#define BIT_FS_TXBCNOK_MB3_INT_EN_8822E BIT(27) +#define BIT_FS_TXBCNOK_MB2_INT_EN_8822E BIT(26) +#define BIT_FS_TXBCNOK_MB1_INT_EN_8822E BIT(25) +#define BIT_FS_TXBCNOK_MB0_INT_EN_8822E BIT(24) +#define BIT_FS_TXBCNERR_MB7_INT_EN_8822E BIT(23) +#define BIT_FS_TXBCNERR_MB6_INT_EN_8822E BIT(22) +#define BIT_FS_TXBCNERR_MB5_INT_EN_8822E BIT(21) +#define BIT_FS_TXBCNERR_MB4_INT_EN_8822E BIT(20) +#define BIT_FS_TXBCNERR_MB3_INT_EN_8822E BIT(19) +#define BIT_FS_TXBCNERR_MB2_INT_EN_8822E BIT(18) +#define BIT_FS_TXBCNERR_MB1_INT_EN_8822E BIT(17) +#define BIT_FS_TXBCNERR_MB0_INT_EN_8822E BIT(16) +#define BIT_CPU_MGQ_TXDONE_INT_EN_8822E BIT(15) +#define BIT_SIFS_OVERSPEC_INT_EN_8822E BIT(14) +#define BIT_FS_MGNTQ_RPTR_RELEASE_INT_EN_8822E BIT(13) +#define BIT_FS_MGNTQFF_TO_INT_EN_8822E BIT(12) +#define BIT_FS_CPUMGQ_ERR_INT_EN_8822E BIT(11) +#define BIT_FS_DDMA0_LP_INT_EN_8822E BIT(9) +#define BIT_FS_DDMA0_HP_INT_EN_8822E BIT(8) +#define BIT_FS_TRXRPT_INT_EN_8822E BIT(7) +#define BIT_FS_C2H_W_READY_INT_EN_8822E BIT(6) +#define BIT_FS_HRCV_INT_EN_8822E BIT(5) +#define BIT_FS_H2CCMD_INT_EN_8822E BIT(4) +#define BIT_FS_TXPKTIN_INT_EN_8822E BIT(3) +#define BIT_FS_ERRORHDL_INT_EN_8822E BIT(2) +#define BIT_FS_TXCCX_INT_EN_8822E BIT(1) +#define BIT_FS_TXCLOSE_INT_EN_8822E BIT(0) + +/* 2 REG_FWISR_8822E */ +#define BIT_FS_TXBCNOK_MB7_INT_8822E BIT(31) +#define BIT_FS_TXBCNOK_MB6_INT_8822E BIT(30) +#define BIT_FS_TXBCNOK_MB5_INT_8822E BIT(29) +#define BIT_FS_TXBCNOK_MB4_INT_8822E BIT(28) +#define BIT_FS_TXBCNOK_MB3_INT_8822E BIT(27) +#define BIT_FS_TXBCNOK_MB2_INT_8822E BIT(26) +#define BIT_FS_TXBCNOK_MB1_INT_8822E BIT(25) +#define BIT_FS_TXBCNOK_MB0_INT_8822E BIT(24) +#define BIT_FS_TXBCNERR_MB7_INT_8822E BIT(23) +#define BIT_FS_TXBCNERR_MB6_INT_8822E BIT(22) +#define BIT_FS_TXBCNERR_MB5_INT_8822E BIT(21) +#define BIT_FS_TXBCNERR_MB4_INT_8822E BIT(20) +#define BIT_FS_TXBCNERR_MB3_INT_8822E BIT(19) +#define BIT_FS_TXBCNERR_MB2_INT_8822E BIT(18) +#define BIT_FS_TXBCNERR_MB1_INT_8822E BIT(17) +#define BIT_FS_TXBCNERR_MB0_INT_8822E BIT(16) +#define BIT_CPU_MGQ_TXDONE_INT_8822E BIT(15) +#define BIT_SIFS_OVERSPEC_INT_8822E BIT(14) +#define BIT_FS_MGNTQ_RPTR_RELEASE_INT_8822E BIT(13) +#define BIT_FS_MGNTQFF_TO_INT_8822E BIT(12) +#define BIT_FS_CPUMGQ_ERR_INT_8822E BIT(11) +#define BIT_FS_DDMA0_LP_INT_8822E BIT(9) +#define BIT_FS_DDMA0_HP_INT_8822E BIT(8) +#define BIT_FS_TRXRPT_INT_8822E BIT(7) +#define BIT_FS_C2H_W_READY_INT_8822E BIT(6) +#define BIT_FS_HRCV_INT_8822E BIT(5) +#define BIT_FS_H2CCMD_INT_8822E BIT(4) +#define BIT_FS_TXPKTIN_INT_8822E BIT(3) +#define BIT_FS_ERRORHDL_INT_8822E BIT(2) +#define BIT_FS_TXCCX_INT_8822E BIT(1) +#define BIT_FS_TXCLOSE_INT_8822E BIT(0) + +/* 2 REG_FTIMR_8822E */ +#define BIT_PS_TIMER_C_EARLY_INT_EN_8822E BIT(23) +#define BIT_PS_TIMER_B_EARLY_INT_EN_8822E BIT(22) +#define BIT_PS_TIMER_A_EARLY_INT_EN_8822E BIT(21) +#define BIT_CPUMGQ_TX_TIMER_EARLY_INT_EN_8822E BIT(20) +#define BIT_PS_TIMER_C_INT_EN_8822E BIT(19) +#define BIT_PS_TIMER_B_INT_EN_8822E BIT(18) +#define BIT_PS_TIMER_A_INT_EN_8822E BIT(17) +#define BIT_CPUMGQ_TX_TIMER_INT_EN_8822E BIT(16) +#define BIT_FS_PS_TIMEOUT2_EN_8822E BIT(15) +#define BIT_FS_PS_TIMEOUT1_EN_8822E BIT(14) +#define BIT_FS_PS_TIMEOUT0_EN_8822E BIT(13) +#define BIT_FS_GTINT8_EN_8822E BIT(8) +#define BIT_FS_GTINT7_EN_8822E BIT(7) +#define BIT_FS_GTINT6_EN_8822E BIT(6) +#define BIT_FS_GTINT5_EN_8822E BIT(5) +#define BIT_FS_GTINT4_EN_8822E BIT(4) +#define BIT_FS_GTINT3_EN_8822E BIT(3) +#define BIT_FS_GTINT2_EN_8822E BIT(2) +#define BIT_FS_GTINT1_EN_8822E BIT(1) +#define BIT_FS_GTINT0_EN_8822E BIT(0) + +/* 2 REG_FTISR_8822E */ +#define BIT_PS_TIMER_C_EARLY__INT_8822E BIT(23) +#define BIT_PS_TIMER_B_EARLY__INT_8822E BIT(22) +#define BIT_PS_TIMER_A_EARLY__INT_8822E BIT(21) +#define BIT_CPUMGQ_TX_TIMER_EARLY_INT_8822E BIT(20) +#define BIT_PS_TIMER_C_INT_8822E BIT(19) +#define BIT_PS_TIMER_B_INT_8822E BIT(18) +#define BIT_PS_TIMER_A_INT_8822E BIT(17) +#define BIT_CPUMGQ_TX_TIMER_INT_8822E BIT(16) +#define BIT_FS_PS_TIMEOUT2_INT_8822E BIT(15) +#define BIT_FS_PS_TIMEOUT1_INT_8822E BIT(14) +#define BIT_FS_PS_TIMEOUT0_INT_8822E BIT(13) +#define BIT_FS_GTINT8_INT_8822E BIT(8) +#define BIT_FS_GTINT7_INT_8822E BIT(7) +#define BIT_FS_GTINT6_INT_8822E BIT(6) +#define BIT_FS_GTINT5_INT_8822E BIT(5) +#define BIT_FS_GTINT4_INT_8822E BIT(4) +#define BIT_FS_GTINT3_INT_8822E BIT(3) +#define BIT_FS_GTINT2_INT_8822E BIT(2) +#define BIT_FS_GTINT1_INT_8822E BIT(1) +#define BIT_FS_GTINT0_INT_8822E BIT(0) + +/* 2 REG_PKTBUF_DBG_CTRL_8822E */ + +#define BIT_SHIFT_PKTBUF_WRITE_EN_8822E 24 +#define BIT_MASK_PKTBUF_WRITE_EN_8822E 0xff +#define BIT_PKTBUF_WRITE_EN_8822E(x) \ + (((x) & BIT_MASK_PKTBUF_WRITE_EN_8822E) \ + << BIT_SHIFT_PKTBUF_WRITE_EN_8822E) +#define BITS_PKTBUF_WRITE_EN_8822E \ + (BIT_MASK_PKTBUF_WRITE_EN_8822E << BIT_SHIFT_PKTBUF_WRITE_EN_8822E) +#define BIT_CLEAR_PKTBUF_WRITE_EN_8822E(x) ((x) & (~BITS_PKTBUF_WRITE_EN_8822E)) +#define BIT_GET_PKTBUF_WRITE_EN_8822E(x) \ + (((x) >> BIT_SHIFT_PKTBUF_WRITE_EN_8822E) & \ + BIT_MASK_PKTBUF_WRITE_EN_8822E) +#define BIT_SET_PKTBUF_WRITE_EN_8822E(x, v) \ + (BIT_CLEAR_PKTBUF_WRITE_EN_8822E(x) | BIT_PKTBUF_WRITE_EN_8822E(v)) + +#define BIT_TXRPTBUF_DBG_8822E BIT(23) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_TXPKTBUF_DBG_V2_8822E BIT(20) +#define BIT_RXPKTBUF_DBG_8822E BIT(16) + +#define BIT_SHIFT_PKTBUF_DBG_ADDR_8822E 0 +#define BIT_MASK_PKTBUF_DBG_ADDR_8822E 0x1fff +#define BIT_PKTBUF_DBG_ADDR_8822E(x) \ + (((x) & BIT_MASK_PKTBUF_DBG_ADDR_8822E) \ + << BIT_SHIFT_PKTBUF_DBG_ADDR_8822E) +#define BITS_PKTBUF_DBG_ADDR_8822E \ + (BIT_MASK_PKTBUF_DBG_ADDR_8822E << BIT_SHIFT_PKTBUF_DBG_ADDR_8822E) +#define BIT_CLEAR_PKTBUF_DBG_ADDR_8822E(x) ((x) & (~BITS_PKTBUF_DBG_ADDR_8822E)) +#define BIT_GET_PKTBUF_DBG_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_PKTBUF_DBG_ADDR_8822E) & \ + BIT_MASK_PKTBUF_DBG_ADDR_8822E) +#define BIT_SET_PKTBUF_DBG_ADDR_8822E(x, v) \ + (BIT_CLEAR_PKTBUF_DBG_ADDR_8822E(x) | BIT_PKTBUF_DBG_ADDR_8822E(v)) + +/* 2 REG_PKTBUF_DBG_DATA_L_8822E */ + +#define BIT_SHIFT_PKTBUF_DBG_DATA_L_8822E 0 +#define BIT_MASK_PKTBUF_DBG_DATA_L_8822E 0xffffffffL +#define BIT_PKTBUF_DBG_DATA_L_8822E(x) \ + (((x) & BIT_MASK_PKTBUF_DBG_DATA_L_8822E) \ + << BIT_SHIFT_PKTBUF_DBG_DATA_L_8822E) +#define BITS_PKTBUF_DBG_DATA_L_8822E \ + (BIT_MASK_PKTBUF_DBG_DATA_L_8822E << BIT_SHIFT_PKTBUF_DBG_DATA_L_8822E) +#define BIT_CLEAR_PKTBUF_DBG_DATA_L_8822E(x) \ + ((x) & (~BITS_PKTBUF_DBG_DATA_L_8822E)) +#define BIT_GET_PKTBUF_DBG_DATA_L_8822E(x) \ + (((x) >> BIT_SHIFT_PKTBUF_DBG_DATA_L_8822E) & \ + BIT_MASK_PKTBUF_DBG_DATA_L_8822E) +#define BIT_SET_PKTBUF_DBG_DATA_L_8822E(x, v) \ + (BIT_CLEAR_PKTBUF_DBG_DATA_L_8822E(x) | BIT_PKTBUF_DBG_DATA_L_8822E(v)) + +/* 2 REG_PKTBUF_DBG_DATA_H_8822E */ + +#define BIT_SHIFT_PKTBUF_DBG_DATA_H_8822E 0 +#define BIT_MASK_PKTBUF_DBG_DATA_H_8822E 0xffffffffL +#define BIT_PKTBUF_DBG_DATA_H_8822E(x) \ + (((x) & BIT_MASK_PKTBUF_DBG_DATA_H_8822E) \ + << BIT_SHIFT_PKTBUF_DBG_DATA_H_8822E) +#define BITS_PKTBUF_DBG_DATA_H_8822E \ + (BIT_MASK_PKTBUF_DBG_DATA_H_8822E << BIT_SHIFT_PKTBUF_DBG_DATA_H_8822E) +#define BIT_CLEAR_PKTBUF_DBG_DATA_H_8822E(x) \ + ((x) & (~BITS_PKTBUF_DBG_DATA_H_8822E)) +#define BIT_GET_PKTBUF_DBG_DATA_H_8822E(x) \ + (((x) >> BIT_SHIFT_PKTBUF_DBG_DATA_H_8822E) & \ + BIT_MASK_PKTBUF_DBG_DATA_H_8822E) +#define BIT_SET_PKTBUF_DBG_DATA_H_8822E(x, v) \ + (BIT_CLEAR_PKTBUF_DBG_DATA_H_8822E(x) | BIT_PKTBUF_DBG_DATA_H_8822E(v)) + +/* 2 REG_CPWM2_8822E */ + +#define BIT_SHIFT_L0S_TO_RCVY_NUM_8822E 16 +#define BIT_MASK_L0S_TO_RCVY_NUM_8822E 0xff +#define BIT_L0S_TO_RCVY_NUM_8822E(x) \ + (((x) & BIT_MASK_L0S_TO_RCVY_NUM_8822E) \ + << BIT_SHIFT_L0S_TO_RCVY_NUM_8822E) +#define BITS_L0S_TO_RCVY_NUM_8822E \ + (BIT_MASK_L0S_TO_RCVY_NUM_8822E << BIT_SHIFT_L0S_TO_RCVY_NUM_8822E) +#define BIT_CLEAR_L0S_TO_RCVY_NUM_8822E(x) ((x) & (~BITS_L0S_TO_RCVY_NUM_8822E)) +#define BIT_GET_L0S_TO_RCVY_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_L0S_TO_RCVY_NUM_8822E) & \ + BIT_MASK_L0S_TO_RCVY_NUM_8822E) +#define BIT_SET_L0S_TO_RCVY_NUM_8822E(x, v) \ + (BIT_CLEAR_L0S_TO_RCVY_NUM_8822E(x) | BIT_L0S_TO_RCVY_NUM_8822E(v)) + +#define BIT_CPWM2_TOGGLING_8822E BIT(15) + +#define BIT_SHIFT_CPWM2_MOD_8822E 0 +#define BIT_MASK_CPWM2_MOD_8822E 0x7fff +#define BIT_CPWM2_MOD_8822E(x) \ + (((x) & BIT_MASK_CPWM2_MOD_8822E) << BIT_SHIFT_CPWM2_MOD_8822E) +#define BITS_CPWM2_MOD_8822E \ + (BIT_MASK_CPWM2_MOD_8822E << BIT_SHIFT_CPWM2_MOD_8822E) +#define BIT_CLEAR_CPWM2_MOD_8822E(x) ((x) & (~BITS_CPWM2_MOD_8822E)) +#define BIT_GET_CPWM2_MOD_8822E(x) \ + (((x) >> BIT_SHIFT_CPWM2_MOD_8822E) & BIT_MASK_CPWM2_MOD_8822E) +#define BIT_SET_CPWM2_MOD_8822E(x, v) \ + (BIT_CLEAR_CPWM2_MOD_8822E(x) | BIT_CPWM2_MOD_8822E(v)) + +/* 2 REG_TC0_CTRL_8822E */ +#define BIT_TC0INT_EN_8822E BIT(26) +#define BIT_TC0MODE_8822E BIT(25) +#define BIT_TC0EN_8822E BIT(24) + +#define BIT_SHIFT_TC0DATA_8822E 0 +#define BIT_MASK_TC0DATA_8822E 0xffffff +#define BIT_TC0DATA_8822E(x) \ + (((x) & BIT_MASK_TC0DATA_8822E) << BIT_SHIFT_TC0DATA_8822E) +#define BITS_TC0DATA_8822E (BIT_MASK_TC0DATA_8822E << BIT_SHIFT_TC0DATA_8822E) +#define BIT_CLEAR_TC0DATA_8822E(x) ((x) & (~BITS_TC0DATA_8822E)) +#define BIT_GET_TC0DATA_8822E(x) \ + (((x) >> BIT_SHIFT_TC0DATA_8822E) & BIT_MASK_TC0DATA_8822E) +#define BIT_SET_TC0DATA_8822E(x, v) \ + (BIT_CLEAR_TC0DATA_8822E(x) | BIT_TC0DATA_8822E(v)) + +/* 2 REG_TC1_CTRL_8822E */ +#define BIT_TC1INT_EN_8822E BIT(26) +#define BIT_TC1MODE_8822E BIT(25) +#define BIT_TC1EN_8822E BIT(24) + +#define BIT_SHIFT_TC1DATA_8822E 0 +#define BIT_MASK_TC1DATA_8822E 0xffffff +#define BIT_TC1DATA_8822E(x) \ + (((x) & BIT_MASK_TC1DATA_8822E) << BIT_SHIFT_TC1DATA_8822E) +#define BITS_TC1DATA_8822E (BIT_MASK_TC1DATA_8822E << BIT_SHIFT_TC1DATA_8822E) +#define BIT_CLEAR_TC1DATA_8822E(x) ((x) & (~BITS_TC1DATA_8822E)) +#define BIT_GET_TC1DATA_8822E(x) \ + (((x) >> BIT_SHIFT_TC1DATA_8822E) & BIT_MASK_TC1DATA_8822E) +#define BIT_SET_TC1DATA_8822E(x, v) \ + (BIT_CLEAR_TC1DATA_8822E(x) | BIT_TC1DATA_8822E(v)) + +/* 2 REG_TC2_CTRL_8822E */ +#define BIT_TC2INT_EN_8822E BIT(26) +#define BIT_TC2MODE_8822E BIT(25) +#define BIT_TC2EN_8822E BIT(24) + +#define BIT_SHIFT_TC2DATA_8822E 0 +#define BIT_MASK_TC2DATA_8822E 0xffffff +#define BIT_TC2DATA_8822E(x) \ + (((x) & BIT_MASK_TC2DATA_8822E) << BIT_SHIFT_TC2DATA_8822E) +#define BITS_TC2DATA_8822E (BIT_MASK_TC2DATA_8822E << BIT_SHIFT_TC2DATA_8822E) +#define BIT_CLEAR_TC2DATA_8822E(x) ((x) & (~BITS_TC2DATA_8822E)) +#define BIT_GET_TC2DATA_8822E(x) \ + (((x) >> BIT_SHIFT_TC2DATA_8822E) & BIT_MASK_TC2DATA_8822E) +#define BIT_SET_TC2DATA_8822E(x, v) \ + (BIT_CLEAR_TC2DATA_8822E(x) | BIT_TC2DATA_8822E(v)) + +/* 2 REG_TC3_CTRL_8822E */ +#define BIT_TC3INT_EN_8822E BIT(26) +#define BIT_TC3MODE_8822E BIT(25) +#define BIT_TC3EN_8822E BIT(24) + +#define BIT_SHIFT_TC3DATA_8822E 0 +#define BIT_MASK_TC3DATA_8822E 0xffffff +#define BIT_TC3DATA_8822E(x) \ + (((x) & BIT_MASK_TC3DATA_8822E) << BIT_SHIFT_TC3DATA_8822E) +#define BITS_TC3DATA_8822E (BIT_MASK_TC3DATA_8822E << BIT_SHIFT_TC3DATA_8822E) +#define BIT_CLEAR_TC3DATA_8822E(x) ((x) & (~BITS_TC3DATA_8822E)) +#define BIT_GET_TC3DATA_8822E(x) \ + (((x) >> BIT_SHIFT_TC3DATA_8822E) & BIT_MASK_TC3DATA_8822E) +#define BIT_SET_TC3DATA_8822E(x, v) \ + (BIT_CLEAR_TC3DATA_8822E(x) | BIT_TC3DATA_8822E(v)) + +/* 2 REG_TC4_CTRL_8822E */ +#define BIT_TC4INT_EN_8822E BIT(26) +#define BIT_TC4MODE_8822E BIT(25) +#define BIT_TC4EN_8822E BIT(24) + +#define BIT_SHIFT_TC4DATA_8822E 0 +#define BIT_MASK_TC4DATA_8822E 0xffffff +#define BIT_TC4DATA_8822E(x) \ + (((x) & BIT_MASK_TC4DATA_8822E) << BIT_SHIFT_TC4DATA_8822E) +#define BITS_TC4DATA_8822E (BIT_MASK_TC4DATA_8822E << BIT_SHIFT_TC4DATA_8822E) +#define BIT_CLEAR_TC4DATA_8822E(x) ((x) & (~BITS_TC4DATA_8822E)) +#define BIT_GET_TC4DATA_8822E(x) \ + (((x) >> BIT_SHIFT_TC4DATA_8822E) & BIT_MASK_TC4DATA_8822E) +#define BIT_SET_TC4DATA_8822E(x, v) \ + (BIT_CLEAR_TC4DATA_8822E(x) | BIT_TC4DATA_8822E(v)) + +/* 2 REG_TCUNIT_BASE_8822E */ + +#define BIT_SHIFT_TCUNIT_BASE_8822E 0 +#define BIT_MASK_TCUNIT_BASE_8822E 0x3fff +#define BIT_TCUNIT_BASE_8822E(x) \ + (((x) & BIT_MASK_TCUNIT_BASE_8822E) << BIT_SHIFT_TCUNIT_BASE_8822E) +#define BITS_TCUNIT_BASE_8822E \ + (BIT_MASK_TCUNIT_BASE_8822E << BIT_SHIFT_TCUNIT_BASE_8822E) +#define BIT_CLEAR_TCUNIT_BASE_8822E(x) ((x) & (~BITS_TCUNIT_BASE_8822E)) +#define BIT_GET_TCUNIT_BASE_8822E(x) \ + (((x) >> BIT_SHIFT_TCUNIT_BASE_8822E) & BIT_MASK_TCUNIT_BASE_8822E) +#define BIT_SET_TCUNIT_BASE_8822E(x, v) \ + (BIT_CLEAR_TCUNIT_BASE_8822E(x) | BIT_TCUNIT_BASE_8822E(v)) + +/* 2 REG_TC5_CTRL_8822E */ +#define BIT_TC5INT_EN_8822E BIT(26) +#define BIT_TC5MODE_8822E BIT(25) +#define BIT_TC5EN_8822E BIT(24) + +#define BIT_SHIFT_TC5DATA_8822E 0 +#define BIT_MASK_TC5DATA_8822E 0xffffff +#define BIT_TC5DATA_8822E(x) \ + (((x) & BIT_MASK_TC5DATA_8822E) << BIT_SHIFT_TC5DATA_8822E) +#define BITS_TC5DATA_8822E (BIT_MASK_TC5DATA_8822E << BIT_SHIFT_TC5DATA_8822E) +#define BIT_CLEAR_TC5DATA_8822E(x) ((x) & (~BITS_TC5DATA_8822E)) +#define BIT_GET_TC5DATA_8822E(x) \ + (((x) >> BIT_SHIFT_TC5DATA_8822E) & BIT_MASK_TC5DATA_8822E) +#define BIT_SET_TC5DATA_8822E(x, v) \ + (BIT_CLEAR_TC5DATA_8822E(x) | BIT_TC5DATA_8822E(v)) + +/* 2 REG_TC6_CTRL_8822E */ +#define BIT_TC6INT_EN_8822E BIT(26) +#define BIT_TC6MODE_8822E BIT(25) +#define BIT_TC6EN_8822E BIT(24) + +#define BIT_SHIFT_TC6DATA_8822E 0 +#define BIT_MASK_TC6DATA_8822E 0xffffff +#define BIT_TC6DATA_8822E(x) \ + (((x) & BIT_MASK_TC6DATA_8822E) << BIT_SHIFT_TC6DATA_8822E) +#define BITS_TC6DATA_8822E (BIT_MASK_TC6DATA_8822E << BIT_SHIFT_TC6DATA_8822E) +#define BIT_CLEAR_TC6DATA_8822E(x) ((x) & (~BITS_TC6DATA_8822E)) +#define BIT_GET_TC6DATA_8822E(x) \ + (((x) >> BIT_SHIFT_TC6DATA_8822E) & BIT_MASK_TC6DATA_8822E) +#define BIT_SET_TC6DATA_8822E(x, v) \ + (BIT_CLEAR_TC6DATA_8822E(x) | BIT_TC6DATA_8822E(v)) + +/* 2 REG_MBIST_DRF_FAIL_8822E */ + +#define BIT_SHIFT_8051_MBIST_DRF_FAIL_8822E 26 +#define BIT_MASK_8051_MBIST_DRF_FAIL_8822E 0x3f +#define BIT_8051_MBIST_DRF_FAIL_8822E(x) \ + (((x) & BIT_MASK_8051_MBIST_DRF_FAIL_8822E) \ + << BIT_SHIFT_8051_MBIST_DRF_FAIL_8822E) +#define BITS_8051_MBIST_DRF_FAIL_8822E \ + (BIT_MASK_8051_MBIST_DRF_FAIL_8822E \ + << BIT_SHIFT_8051_MBIST_DRF_FAIL_8822E) +#define BIT_CLEAR_8051_MBIST_DRF_FAIL_8822E(x) \ + ((x) & (~BITS_8051_MBIST_DRF_FAIL_8822E)) +#define BIT_GET_8051_MBIST_DRF_FAIL_8822E(x) \ + (((x) >> BIT_SHIFT_8051_MBIST_DRF_FAIL_8822E) & \ + BIT_MASK_8051_MBIST_DRF_FAIL_8822E) +#define BIT_SET_8051_MBIST_DRF_FAIL_8822E(x, v) \ + (BIT_CLEAR_8051_MBIST_DRF_FAIL_8822E(x) | \ + BIT_8051_MBIST_DRF_FAIL_8822E(v)) + +#define BIT_SHIFT_USB_MBIST_DRF_FAIL_8822E 24 +#define BIT_MASK_USB_MBIST_DRF_FAIL_8822E 0x3 +#define BIT_USB_MBIST_DRF_FAIL_8822E(x) \ + (((x) & BIT_MASK_USB_MBIST_DRF_FAIL_8822E) \ + << BIT_SHIFT_USB_MBIST_DRF_FAIL_8822E) +#define BITS_USB_MBIST_DRF_FAIL_8822E \ + (BIT_MASK_USB_MBIST_DRF_FAIL_8822E \ + << BIT_SHIFT_USB_MBIST_DRF_FAIL_8822E) +#define BIT_CLEAR_USB_MBIST_DRF_FAIL_8822E(x) \ + ((x) & (~BITS_USB_MBIST_DRF_FAIL_8822E)) +#define BIT_GET_USB_MBIST_DRF_FAIL_8822E(x) \ + (((x) >> BIT_SHIFT_USB_MBIST_DRF_FAIL_8822E) & \ + BIT_MASK_USB_MBIST_DRF_FAIL_8822E) +#define BIT_SET_USB_MBIST_DRF_FAIL_8822E(x, v) \ + (BIT_CLEAR_USB_MBIST_DRF_FAIL_8822E(x) | \ + BIT_USB_MBIST_DRF_FAIL_8822E(v)) + +#define BIT_SHIFT_PCIE_MBIST_DRF_FAIL_8822E 18 +#define BIT_MASK_PCIE_MBIST_DRF_FAIL_8822E 0x3f +#define BIT_PCIE_MBIST_DRF_FAIL_8822E(x) \ + (((x) & BIT_MASK_PCIE_MBIST_DRF_FAIL_8822E) \ + << BIT_SHIFT_PCIE_MBIST_DRF_FAIL_8822E) +#define BITS_PCIE_MBIST_DRF_FAIL_8822E \ + (BIT_MASK_PCIE_MBIST_DRF_FAIL_8822E \ + << BIT_SHIFT_PCIE_MBIST_DRF_FAIL_8822E) +#define BIT_CLEAR_PCIE_MBIST_DRF_FAIL_8822E(x) \ + ((x) & (~BITS_PCIE_MBIST_DRF_FAIL_8822E)) +#define BIT_GET_PCIE_MBIST_DRF_FAIL_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_MBIST_DRF_FAIL_8822E) & \ + BIT_MASK_PCIE_MBIST_DRF_FAIL_8822E) +#define BIT_SET_PCIE_MBIST_DRF_FAIL_8822E(x, v) \ + (BIT_CLEAR_PCIE_MBIST_DRF_FAIL_8822E(x) | \ + BIT_PCIE_MBIST_DRF_FAIL_8822E(v)) + +#define BIT_SHIFT_MAC_MBIST_DRF_FAIL_8822E 0 +#define BIT_MASK_MAC_MBIST_DRF_FAIL_8822E 0x3ffff +#define BIT_MAC_MBIST_DRF_FAIL_8822E(x) \ + (((x) & BIT_MASK_MAC_MBIST_DRF_FAIL_8822E) \ + << BIT_SHIFT_MAC_MBIST_DRF_FAIL_8822E) +#define BITS_MAC_MBIST_DRF_FAIL_8822E \ + (BIT_MASK_MAC_MBIST_DRF_FAIL_8822E \ + << BIT_SHIFT_MAC_MBIST_DRF_FAIL_8822E) +#define BIT_CLEAR_MAC_MBIST_DRF_FAIL_8822E(x) \ + ((x) & (~BITS_MAC_MBIST_DRF_FAIL_8822E)) +#define BIT_GET_MAC_MBIST_DRF_FAIL_8822E(x) \ + (((x) >> BIT_SHIFT_MAC_MBIST_DRF_FAIL_8822E) & \ + BIT_MASK_MAC_MBIST_DRF_FAIL_8822E) +#define BIT_SET_MAC_MBIST_DRF_FAIL_8822E(x, v) \ + (BIT_CLEAR_MAC_MBIST_DRF_FAIL_8822E(x) | \ + BIT_MAC_MBIST_DRF_FAIL_8822E(v)) + +/* 2 REG_MBIST_START_PAUSE_8822E */ + +#define BIT_SHIFT_8051_MBIST_START_PAUSE_V1_8822E 26 +#define BIT_MASK_8051_MBIST_START_PAUSE_V1_8822E 0x3f +#define BIT_8051_MBIST_START_PAUSE_V1_8822E(x) \ + (((x) & BIT_MASK_8051_MBIST_START_PAUSE_V1_8822E) \ + << BIT_SHIFT_8051_MBIST_START_PAUSE_V1_8822E) +#define BITS_8051_MBIST_START_PAUSE_V1_8822E \ + (BIT_MASK_8051_MBIST_START_PAUSE_V1_8822E \ + << BIT_SHIFT_8051_MBIST_START_PAUSE_V1_8822E) +#define BIT_CLEAR_8051_MBIST_START_PAUSE_V1_8822E(x) \ + ((x) & (~BITS_8051_MBIST_START_PAUSE_V1_8822E)) +#define BIT_GET_8051_MBIST_START_PAUSE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_8051_MBIST_START_PAUSE_V1_8822E) & \ + BIT_MASK_8051_MBIST_START_PAUSE_V1_8822E) +#define BIT_SET_8051_MBIST_START_PAUSE_V1_8822E(x, v) \ + (BIT_CLEAR_8051_MBIST_START_PAUSE_V1_8822E(x) | \ + BIT_8051_MBIST_START_PAUSE_V1_8822E(v)) + +#define BIT_SHIFT_USB_MBIST_START_PAUSE_V1_8822E 24 +#define BIT_MASK_USB_MBIST_START_PAUSE_V1_8822E 0x3 +#define BIT_USB_MBIST_START_PAUSE_V1_8822E(x) \ + (((x) & BIT_MASK_USB_MBIST_START_PAUSE_V1_8822E) \ + << BIT_SHIFT_USB_MBIST_START_PAUSE_V1_8822E) +#define BITS_USB_MBIST_START_PAUSE_V1_8822E \ + (BIT_MASK_USB_MBIST_START_PAUSE_V1_8822E \ + << BIT_SHIFT_USB_MBIST_START_PAUSE_V1_8822E) +#define BIT_CLEAR_USB_MBIST_START_PAUSE_V1_8822E(x) \ + ((x) & (~BITS_USB_MBIST_START_PAUSE_V1_8822E)) +#define BIT_GET_USB_MBIST_START_PAUSE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_USB_MBIST_START_PAUSE_V1_8822E) & \ + BIT_MASK_USB_MBIST_START_PAUSE_V1_8822E) +#define BIT_SET_USB_MBIST_START_PAUSE_V1_8822E(x, v) \ + (BIT_CLEAR_USB_MBIST_START_PAUSE_V1_8822E(x) | \ + BIT_USB_MBIST_START_PAUSE_V1_8822E(v)) + +#define BIT_SHIFT_PCIE_MBIST_START_PAUSE_V1_8822E 18 +#define BIT_MASK_PCIE_MBIST_START_PAUSE_V1_8822E 0x3f +#define BIT_PCIE_MBIST_START_PAUSE_V1_8822E(x) \ + (((x) & BIT_MASK_PCIE_MBIST_START_PAUSE_V1_8822E) \ + << BIT_SHIFT_PCIE_MBIST_START_PAUSE_V1_8822E) +#define BITS_PCIE_MBIST_START_PAUSE_V1_8822E \ + (BIT_MASK_PCIE_MBIST_START_PAUSE_V1_8822E \ + << BIT_SHIFT_PCIE_MBIST_START_PAUSE_V1_8822E) +#define BIT_CLEAR_PCIE_MBIST_START_PAUSE_V1_8822E(x) \ + ((x) & (~BITS_PCIE_MBIST_START_PAUSE_V1_8822E)) +#define BIT_GET_PCIE_MBIST_START_PAUSE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_MBIST_START_PAUSE_V1_8822E) & \ + BIT_MASK_PCIE_MBIST_START_PAUSE_V1_8822E) +#define BIT_SET_PCIE_MBIST_START_PAUSE_V1_8822E(x, v) \ + (BIT_CLEAR_PCIE_MBIST_START_PAUSE_V1_8822E(x) | \ + BIT_PCIE_MBIST_START_PAUSE_V1_8822E(v)) + +#define BIT_SHIFT_MAC_MBIST_START_PAUSE_V1_8822E 0 +#define BIT_MASK_MAC_MBIST_START_PAUSE_V1_8822E 0x3ffff +#define BIT_MAC_MBIST_START_PAUSE_V1_8822E(x) \ + (((x) & BIT_MASK_MAC_MBIST_START_PAUSE_V1_8822E) \ + << BIT_SHIFT_MAC_MBIST_START_PAUSE_V1_8822E) +#define BITS_MAC_MBIST_START_PAUSE_V1_8822E \ + (BIT_MASK_MAC_MBIST_START_PAUSE_V1_8822E \ + << BIT_SHIFT_MAC_MBIST_START_PAUSE_V1_8822E) +#define BIT_CLEAR_MAC_MBIST_START_PAUSE_V1_8822E(x) \ + ((x) & (~BITS_MAC_MBIST_START_PAUSE_V1_8822E)) +#define BIT_GET_MAC_MBIST_START_PAUSE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MAC_MBIST_START_PAUSE_V1_8822E) & \ + BIT_MASK_MAC_MBIST_START_PAUSE_V1_8822E) +#define BIT_SET_MAC_MBIST_START_PAUSE_V1_8822E(x, v) \ + (BIT_CLEAR_MAC_MBIST_START_PAUSE_V1_8822E(x) | \ + BIT_MAC_MBIST_START_PAUSE_V1_8822E(v)) + +/* 2 REG_MBIST_DONE_8822E */ + +#define BIT_SHIFT_8051_MBIST_DONE_V1_8822E 26 +#define BIT_MASK_8051_MBIST_DONE_V1_8822E 0x3f +#define BIT_8051_MBIST_DONE_V1_8822E(x) \ + (((x) & BIT_MASK_8051_MBIST_DONE_V1_8822E) \ + << BIT_SHIFT_8051_MBIST_DONE_V1_8822E) +#define BITS_8051_MBIST_DONE_V1_8822E \ + (BIT_MASK_8051_MBIST_DONE_V1_8822E \ + << BIT_SHIFT_8051_MBIST_DONE_V1_8822E) +#define BIT_CLEAR_8051_MBIST_DONE_V1_8822E(x) \ + ((x) & (~BITS_8051_MBIST_DONE_V1_8822E)) +#define BIT_GET_8051_MBIST_DONE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_8051_MBIST_DONE_V1_8822E) & \ + BIT_MASK_8051_MBIST_DONE_V1_8822E) +#define BIT_SET_8051_MBIST_DONE_V1_8822E(x, v) \ + (BIT_CLEAR_8051_MBIST_DONE_V1_8822E(x) | \ + BIT_8051_MBIST_DONE_V1_8822E(v)) + +#define BIT_SHIFT_USB_MBIST_DONE_V1_8822E 24 +#define BIT_MASK_USB_MBIST_DONE_V1_8822E 0x3 +#define BIT_USB_MBIST_DONE_V1_8822E(x) \ + (((x) & BIT_MASK_USB_MBIST_DONE_V1_8822E) \ + << BIT_SHIFT_USB_MBIST_DONE_V1_8822E) +#define BITS_USB_MBIST_DONE_V1_8822E \ + (BIT_MASK_USB_MBIST_DONE_V1_8822E << BIT_SHIFT_USB_MBIST_DONE_V1_8822E) +#define BIT_CLEAR_USB_MBIST_DONE_V1_8822E(x) \ + ((x) & (~BITS_USB_MBIST_DONE_V1_8822E)) +#define BIT_GET_USB_MBIST_DONE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_USB_MBIST_DONE_V1_8822E) & \ + BIT_MASK_USB_MBIST_DONE_V1_8822E) +#define BIT_SET_USB_MBIST_DONE_V1_8822E(x, v) \ + (BIT_CLEAR_USB_MBIST_DONE_V1_8822E(x) | BIT_USB_MBIST_DONE_V1_8822E(v)) + +#define BIT_SHIFT_PCIE_MBIST_DONE_V1_8822E 18 +#define BIT_MASK_PCIE_MBIST_DONE_V1_8822E 0x3f +#define BIT_PCIE_MBIST_DONE_V1_8822E(x) \ + (((x) & BIT_MASK_PCIE_MBIST_DONE_V1_8822E) \ + << BIT_SHIFT_PCIE_MBIST_DONE_V1_8822E) +#define BITS_PCIE_MBIST_DONE_V1_8822E \ + (BIT_MASK_PCIE_MBIST_DONE_V1_8822E \ + << BIT_SHIFT_PCIE_MBIST_DONE_V1_8822E) +#define BIT_CLEAR_PCIE_MBIST_DONE_V1_8822E(x) \ + ((x) & (~BITS_PCIE_MBIST_DONE_V1_8822E)) +#define BIT_GET_PCIE_MBIST_DONE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_MBIST_DONE_V1_8822E) & \ + BIT_MASK_PCIE_MBIST_DONE_V1_8822E) +#define BIT_SET_PCIE_MBIST_DONE_V1_8822E(x, v) \ + (BIT_CLEAR_PCIE_MBIST_DONE_V1_8822E(x) | \ + BIT_PCIE_MBIST_DONE_V1_8822E(v)) + +#define BIT_SHIFT_MAC_MBIST_DONE_V1_8822E 0 +#define BIT_MASK_MAC_MBIST_DONE_V1_8822E 0x3ffff +#define BIT_MAC_MBIST_DONE_V1_8822E(x) \ + (((x) & BIT_MASK_MAC_MBIST_DONE_V1_8822E) \ + << BIT_SHIFT_MAC_MBIST_DONE_V1_8822E) +#define BITS_MAC_MBIST_DONE_V1_8822E \ + (BIT_MASK_MAC_MBIST_DONE_V1_8822E << BIT_SHIFT_MAC_MBIST_DONE_V1_8822E) +#define BIT_CLEAR_MAC_MBIST_DONE_V1_8822E(x) \ + ((x) & (~BITS_MAC_MBIST_DONE_V1_8822E)) +#define BIT_GET_MAC_MBIST_DONE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MAC_MBIST_DONE_V1_8822E) & \ + BIT_MASK_MAC_MBIST_DONE_V1_8822E) +#define BIT_SET_MAC_MBIST_DONE_V1_8822E(x, v) \ + (BIT_CLEAR_MAC_MBIST_DONE_V1_8822E(x) | BIT_MAC_MBIST_DONE_V1_8822E(v)) + +/* 2 REG_MBIST_READ_BIST_RPT_8822E */ + +#define BIT_SHIFT_MBIST_READ_BIST_RPT_8822E 0 +#define BIT_MASK_MBIST_READ_BIST_RPT_8822E 0xffffffffL +#define BIT_MBIST_READ_BIST_RPT_8822E(x) \ + (((x) & BIT_MASK_MBIST_READ_BIST_RPT_8822E) \ + << BIT_SHIFT_MBIST_READ_BIST_RPT_8822E) +#define BITS_MBIST_READ_BIST_RPT_8822E \ + (BIT_MASK_MBIST_READ_BIST_RPT_8822E \ + << BIT_SHIFT_MBIST_READ_BIST_RPT_8822E) +#define BIT_CLEAR_MBIST_READ_BIST_RPT_8822E(x) \ + ((x) & (~BITS_MBIST_READ_BIST_RPT_8822E)) +#define BIT_GET_MBIST_READ_BIST_RPT_8822E(x) \ + (((x) >> BIT_SHIFT_MBIST_READ_BIST_RPT_8822E) & \ + BIT_MASK_MBIST_READ_BIST_RPT_8822E) +#define BIT_SET_MBIST_READ_BIST_RPT_8822E(x, v) \ + (BIT_CLEAR_MBIST_READ_BIST_RPT_8822E(x) | \ + BIT_MBIST_READ_BIST_RPT_8822E(v)) + +/* 2 REG_OTP_PARA_8822E */ + +/* 2 REG_AES_DECRPT_DATA_8822E */ + +#define BIT_SHIFT_IPS_CFG_ADDR_8822E 0 +#define BIT_MASK_IPS_CFG_ADDR_8822E 0xff +#define BIT_IPS_CFG_ADDR_8822E(x) \ + (((x) & BIT_MASK_IPS_CFG_ADDR_8822E) << BIT_SHIFT_IPS_CFG_ADDR_8822E) +#define BITS_IPS_CFG_ADDR_8822E \ + (BIT_MASK_IPS_CFG_ADDR_8822E << BIT_SHIFT_IPS_CFG_ADDR_8822E) +#define BIT_CLEAR_IPS_CFG_ADDR_8822E(x) ((x) & (~BITS_IPS_CFG_ADDR_8822E)) +#define BIT_GET_IPS_CFG_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_IPS_CFG_ADDR_8822E) & BIT_MASK_IPS_CFG_ADDR_8822E) +#define BIT_SET_IPS_CFG_ADDR_8822E(x, v) \ + (BIT_CLEAR_IPS_CFG_ADDR_8822E(x) | BIT_IPS_CFG_ADDR_8822E(v)) + +/* 2 REG_AES_DECRPT_CFG_8822E */ + +#define BIT_SHIFT_IPS_CFG_DATA_8822E 0 +#define BIT_MASK_IPS_CFG_DATA_8822E 0xffffffffL +#define BIT_IPS_CFG_DATA_8822E(x) \ + (((x) & BIT_MASK_IPS_CFG_DATA_8822E) << BIT_SHIFT_IPS_CFG_DATA_8822E) +#define BITS_IPS_CFG_DATA_8822E \ + (BIT_MASK_IPS_CFG_DATA_8822E << BIT_SHIFT_IPS_CFG_DATA_8822E) +#define BIT_CLEAR_IPS_CFG_DATA_8822E(x) ((x) & (~BITS_IPS_CFG_DATA_8822E)) +#define BIT_GET_IPS_CFG_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_IPS_CFG_DATA_8822E) & BIT_MASK_IPS_CFG_DATA_8822E) +#define BIT_SET_IPS_CFG_DATA_8822E(x, v) \ + (BIT_CLEAR_IPS_CFG_DATA_8822E(x) | BIT_IPS_CFG_DATA_8822E(v)) + +/* 2 REG_HIOE_CTRL_8822E */ +#define BIT_HIOE_CFG_FILE_LOC_SEL_8822E BIT(31) +#define BIT_HIOE_WRITE_REQ_8822E BIT(30) +#define BIT_HIOE_READ_REQ_8822E BIT(29) +#define BIT_INST_FORMAT_ERR_8822E BIT(25) +#define BIT_OP_TIMEOUT_ERR_8822E BIT(24) + +#define BIT_SHIFT_HIOE_OP_TIMEOUT_8822E 16 +#define BIT_MASK_HIOE_OP_TIMEOUT_8822E 0xff +#define BIT_HIOE_OP_TIMEOUT_8822E(x) \ + (((x) & BIT_MASK_HIOE_OP_TIMEOUT_8822E) \ + << BIT_SHIFT_HIOE_OP_TIMEOUT_8822E) +#define BITS_HIOE_OP_TIMEOUT_8822E \ + (BIT_MASK_HIOE_OP_TIMEOUT_8822E << BIT_SHIFT_HIOE_OP_TIMEOUT_8822E) +#define BIT_CLEAR_HIOE_OP_TIMEOUT_8822E(x) ((x) & (~BITS_HIOE_OP_TIMEOUT_8822E)) +#define BIT_GET_HIOE_OP_TIMEOUT_8822E(x) \ + (((x) >> BIT_SHIFT_HIOE_OP_TIMEOUT_8822E) & \ + BIT_MASK_HIOE_OP_TIMEOUT_8822E) +#define BIT_SET_HIOE_OP_TIMEOUT_8822E(x, v) \ + (BIT_CLEAR_HIOE_OP_TIMEOUT_8822E(x) | BIT_HIOE_OP_TIMEOUT_8822E(v)) + +#define BIT_SHIFT_BITDATA_CHECKSUM_8822E 0 +#define BIT_MASK_BITDATA_CHECKSUM_8822E 0xffff +#define BIT_BITDATA_CHECKSUM_8822E(x) \ + (((x) & BIT_MASK_BITDATA_CHECKSUM_8822E) \ + << BIT_SHIFT_BITDATA_CHECKSUM_8822E) +#define BITS_BITDATA_CHECKSUM_8822E \ + (BIT_MASK_BITDATA_CHECKSUM_8822E << BIT_SHIFT_BITDATA_CHECKSUM_8822E) +#define BIT_CLEAR_BITDATA_CHECKSUM_8822E(x) \ + ((x) & (~BITS_BITDATA_CHECKSUM_8822E)) +#define BIT_GET_BITDATA_CHECKSUM_8822E(x) \ + (((x) >> BIT_SHIFT_BITDATA_CHECKSUM_8822E) & \ + BIT_MASK_BITDATA_CHECKSUM_8822E) +#define BIT_SET_BITDATA_CHECKSUM_8822E(x, v) \ + (BIT_CLEAR_BITDATA_CHECKSUM_8822E(x) | BIT_BITDATA_CHECKSUM_8822E(v)) + +/* 2 REG_HIOE_CFG_FILE_8822E */ + +#define BIT_SHIFT_TXBF_END_ADDR_8822E 16 +#define BIT_MASK_TXBF_END_ADDR_8822E 0xffff +#define BIT_TXBF_END_ADDR_8822E(x) \ + (((x) & BIT_MASK_TXBF_END_ADDR_8822E) << BIT_SHIFT_TXBF_END_ADDR_8822E) +#define BITS_TXBF_END_ADDR_8822E \ + (BIT_MASK_TXBF_END_ADDR_8822E << BIT_SHIFT_TXBF_END_ADDR_8822E) +#define BIT_CLEAR_TXBF_END_ADDR_8822E(x) ((x) & (~BITS_TXBF_END_ADDR_8822E)) +#define BIT_GET_TXBF_END_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_TXBF_END_ADDR_8822E) & BIT_MASK_TXBF_END_ADDR_8822E) +#define BIT_SET_TXBF_END_ADDR_8822E(x, v) \ + (BIT_CLEAR_TXBF_END_ADDR_8822E(x) | BIT_TXBF_END_ADDR_8822E(v)) + +#define BIT_SHIFT_TXBF_STR_ADDR_8822E 0 +#define BIT_MASK_TXBF_STR_ADDR_8822E 0xffff +#define BIT_TXBF_STR_ADDR_8822E(x) \ + (((x) & BIT_MASK_TXBF_STR_ADDR_8822E) << BIT_SHIFT_TXBF_STR_ADDR_8822E) +#define BITS_TXBF_STR_ADDR_8822E \ + (BIT_MASK_TXBF_STR_ADDR_8822E << BIT_SHIFT_TXBF_STR_ADDR_8822E) +#define BIT_CLEAR_TXBF_STR_ADDR_8822E(x) ((x) & (~BITS_TXBF_STR_ADDR_8822E)) +#define BIT_GET_TXBF_STR_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_TXBF_STR_ADDR_8822E) & BIT_MASK_TXBF_STR_ADDR_8822E) +#define BIT_SET_TXBF_STR_ADDR_8822E(x, v) \ + (BIT_CLEAR_TXBF_STR_ADDR_8822E(x) | BIT_TXBF_STR_ADDR_8822E(v)) + +/* 2 REG_TMETER_8822E */ +#define BIT_TEMP_VALID_8822E BIT(31) + +#define BIT_SHIFT_TEMP_VALUE_8822E 24 +#define BIT_MASK_TEMP_VALUE_8822E 0x3f +#define BIT_TEMP_VALUE_8822E(x) \ + (((x) & BIT_MASK_TEMP_VALUE_8822E) << BIT_SHIFT_TEMP_VALUE_8822E) +#define BITS_TEMP_VALUE_8822E \ + (BIT_MASK_TEMP_VALUE_8822E << BIT_SHIFT_TEMP_VALUE_8822E) +#define BIT_CLEAR_TEMP_VALUE_8822E(x) ((x) & (~BITS_TEMP_VALUE_8822E)) +#define BIT_GET_TEMP_VALUE_8822E(x) \ + (((x) >> BIT_SHIFT_TEMP_VALUE_8822E) & BIT_MASK_TEMP_VALUE_8822E) +#define BIT_SET_TEMP_VALUE_8822E(x, v) \ + (BIT_CLEAR_TEMP_VALUE_8822E(x) | BIT_TEMP_VALUE_8822E(v)) + +#define BIT_SHIFT_REG_TMETER_TIMER_8822E 8 +#define BIT_MASK_REG_TMETER_TIMER_8822E 0xfff +#define BIT_REG_TMETER_TIMER_8822E(x) \ + (((x) & BIT_MASK_REG_TMETER_TIMER_8822E) \ + << BIT_SHIFT_REG_TMETER_TIMER_8822E) +#define BITS_REG_TMETER_TIMER_8822E \ + (BIT_MASK_REG_TMETER_TIMER_8822E << BIT_SHIFT_REG_TMETER_TIMER_8822E) +#define BIT_CLEAR_REG_TMETER_TIMER_8822E(x) \ + ((x) & (~BITS_REG_TMETER_TIMER_8822E)) +#define BIT_GET_REG_TMETER_TIMER_8822E(x) \ + (((x) >> BIT_SHIFT_REG_TMETER_TIMER_8822E) & \ + BIT_MASK_REG_TMETER_TIMER_8822E) +#define BIT_SET_REG_TMETER_TIMER_8822E(x, v) \ + (BIT_CLEAR_REG_TMETER_TIMER_8822E(x) | BIT_REG_TMETER_TIMER_8822E(v)) + +#define BIT_SHIFT_REG_TEMP_DELTA_8822E 2 +#define BIT_MASK_REG_TEMP_DELTA_8822E 0x3f +#define BIT_REG_TEMP_DELTA_8822E(x) \ + (((x) & BIT_MASK_REG_TEMP_DELTA_8822E) \ + << BIT_SHIFT_REG_TEMP_DELTA_8822E) +#define BITS_REG_TEMP_DELTA_8822E \ + (BIT_MASK_REG_TEMP_DELTA_8822E << BIT_SHIFT_REG_TEMP_DELTA_8822E) +#define BIT_CLEAR_REG_TEMP_DELTA_8822E(x) ((x) & (~BITS_REG_TEMP_DELTA_8822E)) +#define BIT_GET_REG_TEMP_DELTA_8822E(x) \ + (((x) >> BIT_SHIFT_REG_TEMP_DELTA_8822E) & \ + BIT_MASK_REG_TEMP_DELTA_8822E) +#define BIT_SET_REG_TEMP_DELTA_8822E(x, v) \ + (BIT_CLEAR_REG_TEMP_DELTA_8822E(x) | BIT_REG_TEMP_DELTA_8822E(v)) + +#define BIT_REG_TMETER_EN_8822E BIT(0) + +/* 2 REG_OSC_32K_CTRL_8822E */ + +#define BIT_SHIFT_OSC_32K_CLKGEN_0_8822E 16 +#define BIT_MASK_OSC_32K_CLKGEN_0_8822E 0xffff +#define BIT_OSC_32K_CLKGEN_0_8822E(x) \ + (((x) & BIT_MASK_OSC_32K_CLKGEN_0_8822E) \ + << BIT_SHIFT_OSC_32K_CLKGEN_0_8822E) +#define BITS_OSC_32K_CLKGEN_0_8822E \ + (BIT_MASK_OSC_32K_CLKGEN_0_8822E << BIT_SHIFT_OSC_32K_CLKGEN_0_8822E) +#define BIT_CLEAR_OSC_32K_CLKGEN_0_8822E(x) \ + ((x) & (~BITS_OSC_32K_CLKGEN_0_8822E)) +#define BIT_GET_OSC_32K_CLKGEN_0_8822E(x) \ + (((x) >> BIT_SHIFT_OSC_32K_CLKGEN_0_8822E) & \ + BIT_MASK_OSC_32K_CLKGEN_0_8822E) +#define BIT_SET_OSC_32K_CLKGEN_0_8822E(x, v) \ + (BIT_CLEAR_OSC_32K_CLKGEN_0_8822E(x) | BIT_OSC_32K_CLKGEN_0_8822E(v)) + +#define BIT_SHIFT_OSC_32K_RES_COMP_8822E 4 +#define BIT_MASK_OSC_32K_RES_COMP_8822E 0x3 +#define BIT_OSC_32K_RES_COMP_8822E(x) \ + (((x) & BIT_MASK_OSC_32K_RES_COMP_8822E) \ + << BIT_SHIFT_OSC_32K_RES_COMP_8822E) +#define BITS_OSC_32K_RES_COMP_8822E \ + (BIT_MASK_OSC_32K_RES_COMP_8822E << BIT_SHIFT_OSC_32K_RES_COMP_8822E) +#define BIT_CLEAR_OSC_32K_RES_COMP_8822E(x) \ + ((x) & (~BITS_OSC_32K_RES_COMP_8822E)) +#define BIT_GET_OSC_32K_RES_COMP_8822E(x) \ + (((x) >> BIT_SHIFT_OSC_32K_RES_COMP_8822E) & \ + BIT_MASK_OSC_32K_RES_COMP_8822E) +#define BIT_SET_OSC_32K_RES_COMP_8822E(x, v) \ + (BIT_CLEAR_OSC_32K_RES_COMP_8822E(x) | BIT_OSC_32K_RES_COMP_8822E(v)) + +#define BIT_OSC_32K_OUT_SEL_8822E BIT(3) +#define BIT_ISO_WL_2_OSC_32K_8822E BIT(1) +#define BIT_POW_CKGEN_8822E BIT(0) + +/* 2 REG_32K_CAL_REG1_8822E */ +#define BIT_CAL_32K_REG_WR_8822E BIT(31) +#define BIT_CAL_32K_DBG_SEL_8822E BIT(22) + +#define BIT_SHIFT_CAL_32K_REG_ADDR_8822E 16 +#define BIT_MASK_CAL_32K_REG_ADDR_8822E 0x3f +#define BIT_CAL_32K_REG_ADDR_8822E(x) \ + (((x) & BIT_MASK_CAL_32K_REG_ADDR_8822E) \ + << BIT_SHIFT_CAL_32K_REG_ADDR_8822E) +#define BITS_CAL_32K_REG_ADDR_8822E \ + (BIT_MASK_CAL_32K_REG_ADDR_8822E << BIT_SHIFT_CAL_32K_REG_ADDR_8822E) +#define BIT_CLEAR_CAL_32K_REG_ADDR_8822E(x) \ + ((x) & (~BITS_CAL_32K_REG_ADDR_8822E)) +#define BIT_GET_CAL_32K_REG_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_CAL_32K_REG_ADDR_8822E) & \ + BIT_MASK_CAL_32K_REG_ADDR_8822E) +#define BIT_SET_CAL_32K_REG_ADDR_8822E(x, v) \ + (BIT_CLEAR_CAL_32K_REG_ADDR_8822E(x) | BIT_CAL_32K_REG_ADDR_8822E(v)) + +#define BIT_SHIFT_CAL_32K_REG_DATA_8822E 0 +#define BIT_MASK_CAL_32K_REG_DATA_8822E 0xffff +#define BIT_CAL_32K_REG_DATA_8822E(x) \ + (((x) & BIT_MASK_CAL_32K_REG_DATA_8822E) \ + << BIT_SHIFT_CAL_32K_REG_DATA_8822E) +#define BITS_CAL_32K_REG_DATA_8822E \ + (BIT_MASK_CAL_32K_REG_DATA_8822E << BIT_SHIFT_CAL_32K_REG_DATA_8822E) +#define BIT_CLEAR_CAL_32K_REG_DATA_8822E(x) \ + ((x) & (~BITS_CAL_32K_REG_DATA_8822E)) +#define BIT_GET_CAL_32K_REG_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_CAL_32K_REG_DATA_8822E) & \ + BIT_MASK_CAL_32K_REG_DATA_8822E) +#define BIT_SET_CAL_32K_REG_DATA_8822E(x, v) \ + (BIT_CLEAR_CAL_32K_REG_DATA_8822E(x) | BIT_CAL_32K_REG_DATA_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_C2HEVT_8822E */ + +#define BIT_SHIFT_C2HEVT_MSG_V1_8822E 0 +#define BIT_MASK_C2HEVT_MSG_V1_8822E 0xffffffffL +#define BIT_C2HEVT_MSG_V1_8822E(x) \ + (((x) & BIT_MASK_C2HEVT_MSG_V1_8822E) << BIT_SHIFT_C2HEVT_MSG_V1_8822E) +#define BITS_C2HEVT_MSG_V1_8822E \ + (BIT_MASK_C2HEVT_MSG_V1_8822E << BIT_SHIFT_C2HEVT_MSG_V1_8822E) +#define BIT_CLEAR_C2HEVT_MSG_V1_8822E(x) ((x) & (~BITS_C2HEVT_MSG_V1_8822E)) +#define BIT_GET_C2HEVT_MSG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_C2HEVT_MSG_V1_8822E) & BIT_MASK_C2HEVT_MSG_V1_8822E) +#define BIT_SET_C2HEVT_MSG_V1_8822E(x, v) \ + (BIT_CLEAR_C2HEVT_MSG_V1_8822E(x) | BIT_C2HEVT_MSG_V1_8822E(v)) + +/* 2 REG_C2HEVT_1_8822E */ + +#define BIT_SHIFT_C2HEVT_MSG_1_8822E 0 +#define BIT_MASK_C2HEVT_MSG_1_8822E 0xffffffffL +#define BIT_C2HEVT_MSG_1_8822E(x) \ + (((x) & BIT_MASK_C2HEVT_MSG_1_8822E) << BIT_SHIFT_C2HEVT_MSG_1_8822E) +#define BITS_C2HEVT_MSG_1_8822E \ + (BIT_MASK_C2HEVT_MSG_1_8822E << BIT_SHIFT_C2HEVT_MSG_1_8822E) +#define BIT_CLEAR_C2HEVT_MSG_1_8822E(x) ((x) & (~BITS_C2HEVT_MSG_1_8822E)) +#define BIT_GET_C2HEVT_MSG_1_8822E(x) \ + (((x) >> BIT_SHIFT_C2HEVT_MSG_1_8822E) & BIT_MASK_C2HEVT_MSG_1_8822E) +#define BIT_SET_C2HEVT_MSG_1_8822E(x, v) \ + (BIT_CLEAR_C2HEVT_MSG_1_8822E(x) | BIT_C2HEVT_MSG_1_8822E(v)) + +/* 2 REG_C2HEVT_2_8822E */ + +#define BIT_SHIFT_C2HEVT_MSG_2_8822E 0 +#define BIT_MASK_C2HEVT_MSG_2_8822E 0xffffffffL +#define BIT_C2HEVT_MSG_2_8822E(x) \ + (((x) & BIT_MASK_C2HEVT_MSG_2_8822E) << BIT_SHIFT_C2HEVT_MSG_2_8822E) +#define BITS_C2HEVT_MSG_2_8822E \ + (BIT_MASK_C2HEVT_MSG_2_8822E << BIT_SHIFT_C2HEVT_MSG_2_8822E) +#define BIT_CLEAR_C2HEVT_MSG_2_8822E(x) ((x) & (~BITS_C2HEVT_MSG_2_8822E)) +#define BIT_GET_C2HEVT_MSG_2_8822E(x) \ + (((x) >> BIT_SHIFT_C2HEVT_MSG_2_8822E) & BIT_MASK_C2HEVT_MSG_2_8822E) +#define BIT_SET_C2HEVT_MSG_2_8822E(x, v) \ + (BIT_CLEAR_C2HEVT_MSG_2_8822E(x) | BIT_C2HEVT_MSG_2_8822E(v)) + +/* 2 REG_C2HEVT_3_8822E */ + +#define BIT_SHIFT_C2HEVT_MSG_3_8822E 0 +#define BIT_MASK_C2HEVT_MSG_3_8822E 0xffffffffL +#define BIT_C2HEVT_MSG_3_8822E(x) \ + (((x) & BIT_MASK_C2HEVT_MSG_3_8822E) << BIT_SHIFT_C2HEVT_MSG_3_8822E) +#define BITS_C2HEVT_MSG_3_8822E \ + (BIT_MASK_C2HEVT_MSG_3_8822E << BIT_SHIFT_C2HEVT_MSG_3_8822E) +#define BIT_CLEAR_C2HEVT_MSG_3_8822E(x) ((x) & (~BITS_C2HEVT_MSG_3_8822E)) +#define BIT_GET_C2HEVT_MSG_3_8822E(x) \ + (((x) >> BIT_SHIFT_C2HEVT_MSG_3_8822E) & BIT_MASK_C2HEVT_MSG_3_8822E) +#define BIT_SET_C2HEVT_MSG_3_8822E(x, v) \ + (BIT_CLEAR_C2HEVT_MSG_3_8822E(x) | BIT_C2HEVT_MSG_3_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_SW_DEFINED_PAGE1_8822E */ + +#define BIT_SHIFT_SW_DEFINED_PAGE1_V1_8822E 0 +#define BIT_MASK_SW_DEFINED_PAGE1_V1_8822E 0xffffffffL +#define BIT_SW_DEFINED_PAGE1_V1_8822E(x) \ + (((x) & BIT_MASK_SW_DEFINED_PAGE1_V1_8822E) \ + << BIT_SHIFT_SW_DEFINED_PAGE1_V1_8822E) +#define BITS_SW_DEFINED_PAGE1_V1_8822E \ + (BIT_MASK_SW_DEFINED_PAGE1_V1_8822E \ + << BIT_SHIFT_SW_DEFINED_PAGE1_V1_8822E) +#define BIT_CLEAR_SW_DEFINED_PAGE1_V1_8822E(x) \ + ((x) & (~BITS_SW_DEFINED_PAGE1_V1_8822E)) +#define BIT_GET_SW_DEFINED_PAGE1_V1_8822E(x) \ + (((x) >> BIT_SHIFT_SW_DEFINED_PAGE1_V1_8822E) & \ + BIT_MASK_SW_DEFINED_PAGE1_V1_8822E) +#define BIT_SET_SW_DEFINED_PAGE1_V1_8822E(x, v) \ + (BIT_CLEAR_SW_DEFINED_PAGE1_V1_8822E(x) | \ + BIT_SW_DEFINED_PAGE1_V1_8822E(v)) + +/* 2 REG_SW_DEFINED_PAGE2_8822E */ + +#define BIT_SHIFT_SW_DEFINED_PAGE2_8822E 0 +#define BIT_MASK_SW_DEFINED_PAGE2_8822E 0xffffffffL +#define BIT_SW_DEFINED_PAGE2_8822E(x) \ + (((x) & BIT_MASK_SW_DEFINED_PAGE2_8822E) \ + << BIT_SHIFT_SW_DEFINED_PAGE2_8822E) +#define BITS_SW_DEFINED_PAGE2_8822E \ + (BIT_MASK_SW_DEFINED_PAGE2_8822E << BIT_SHIFT_SW_DEFINED_PAGE2_8822E) +#define BIT_CLEAR_SW_DEFINED_PAGE2_8822E(x) \ + ((x) & (~BITS_SW_DEFINED_PAGE2_8822E)) +#define BIT_GET_SW_DEFINED_PAGE2_8822E(x) \ + (((x) >> BIT_SHIFT_SW_DEFINED_PAGE2_8822E) & \ + BIT_MASK_SW_DEFINED_PAGE2_8822E) +#define BIT_SET_SW_DEFINED_PAGE2_8822E(x, v) \ + (BIT_CLEAR_SW_DEFINED_PAGE2_8822E(x) | BIT_SW_DEFINED_PAGE2_8822E(v)) + +/* 2 REG_MCUTST_I_8822E */ + +#define BIT_SHIFT_MCUDMSG_I_8822E 0 +#define BIT_MASK_MCUDMSG_I_8822E 0xffffffffL +#define BIT_MCUDMSG_I_8822E(x) \ + (((x) & BIT_MASK_MCUDMSG_I_8822E) << BIT_SHIFT_MCUDMSG_I_8822E) +#define BITS_MCUDMSG_I_8822E \ + (BIT_MASK_MCUDMSG_I_8822E << BIT_SHIFT_MCUDMSG_I_8822E) +#define BIT_CLEAR_MCUDMSG_I_8822E(x) ((x) & (~BITS_MCUDMSG_I_8822E)) +#define BIT_GET_MCUDMSG_I_8822E(x) \ + (((x) >> BIT_SHIFT_MCUDMSG_I_8822E) & BIT_MASK_MCUDMSG_I_8822E) +#define BIT_SET_MCUDMSG_I_8822E(x, v) \ + (BIT_CLEAR_MCUDMSG_I_8822E(x) | BIT_MCUDMSG_I_8822E(v)) + +/* 2 REG_MCUTST_II_8822E */ + +#define BIT_SHIFT_MCUDMSG_II_8822E 0 +#define BIT_MASK_MCUDMSG_II_8822E 0xffffffffL +#define BIT_MCUDMSG_II_8822E(x) \ + (((x) & BIT_MASK_MCUDMSG_II_8822E) << BIT_SHIFT_MCUDMSG_II_8822E) +#define BITS_MCUDMSG_II_8822E \ + (BIT_MASK_MCUDMSG_II_8822E << BIT_SHIFT_MCUDMSG_II_8822E) +#define BIT_CLEAR_MCUDMSG_II_8822E(x) ((x) & (~BITS_MCUDMSG_II_8822E)) +#define BIT_GET_MCUDMSG_II_8822E(x) \ + (((x) >> BIT_SHIFT_MCUDMSG_II_8822E) & BIT_MASK_MCUDMSG_II_8822E) +#define BIT_SET_MCUDMSG_II_8822E(x, v) \ + (BIT_CLEAR_MCUDMSG_II_8822E(x) | BIT_MCUDMSG_II_8822E(v)) + +/* 2 REG_FMETHR_8822E */ +#define BIT_FMSG_INT_8822E BIT(31) + +#define BIT_SHIFT_FW_MSG_8822E 0 +#define BIT_MASK_FW_MSG_8822E 0xffffffffL +#define BIT_FW_MSG_8822E(x) \ + (((x) & BIT_MASK_FW_MSG_8822E) << BIT_SHIFT_FW_MSG_8822E) +#define BITS_FW_MSG_8822E (BIT_MASK_FW_MSG_8822E << BIT_SHIFT_FW_MSG_8822E) +#define BIT_CLEAR_FW_MSG_8822E(x) ((x) & (~BITS_FW_MSG_8822E)) +#define BIT_GET_FW_MSG_8822E(x) \ + (((x) >> BIT_SHIFT_FW_MSG_8822E) & BIT_MASK_FW_MSG_8822E) +#define BIT_SET_FW_MSG_8822E(x, v) \ + (BIT_CLEAR_FW_MSG_8822E(x) | BIT_FW_MSG_8822E(v)) + +/* 2 REG_HMETFR_8822E */ + +#define BIT_SHIFT_HRCV_MSG_8822E 24 +#define BIT_MASK_HRCV_MSG_8822E 0xff +#define BIT_HRCV_MSG_8822E(x) \ + (((x) & BIT_MASK_HRCV_MSG_8822E) << BIT_SHIFT_HRCV_MSG_8822E) +#define BITS_HRCV_MSG_8822E \ + (BIT_MASK_HRCV_MSG_8822E << BIT_SHIFT_HRCV_MSG_8822E) +#define BIT_CLEAR_HRCV_MSG_8822E(x) ((x) & (~BITS_HRCV_MSG_8822E)) +#define BIT_GET_HRCV_MSG_8822E(x) \ + (((x) >> BIT_SHIFT_HRCV_MSG_8822E) & BIT_MASK_HRCV_MSG_8822E) +#define BIT_SET_HRCV_MSG_8822E(x, v) \ + (BIT_CLEAR_HRCV_MSG_8822E(x) | BIT_HRCV_MSG_8822E(v)) + +#define BIT_INT_BOX3_8822E BIT(3) +#define BIT_INT_BOX2_8822E BIT(2) +#define BIT_INT_BOX1_8822E BIT(1) +#define BIT_INT_BOX0_8822E BIT(0) + +/* 2 REG_HMEBOX0_8822E */ + +#define BIT_SHIFT_HOST_MSG_0_8822E 0 +#define BIT_MASK_HOST_MSG_0_8822E 0xffffffffL +#define BIT_HOST_MSG_0_8822E(x) \ + (((x) & BIT_MASK_HOST_MSG_0_8822E) << BIT_SHIFT_HOST_MSG_0_8822E) +#define BITS_HOST_MSG_0_8822E \ + (BIT_MASK_HOST_MSG_0_8822E << BIT_SHIFT_HOST_MSG_0_8822E) +#define BIT_CLEAR_HOST_MSG_0_8822E(x) ((x) & (~BITS_HOST_MSG_0_8822E)) +#define BIT_GET_HOST_MSG_0_8822E(x) \ + (((x) >> BIT_SHIFT_HOST_MSG_0_8822E) & BIT_MASK_HOST_MSG_0_8822E) +#define BIT_SET_HOST_MSG_0_8822E(x, v) \ + (BIT_CLEAR_HOST_MSG_0_8822E(x) | BIT_HOST_MSG_0_8822E(v)) + +/* 2 REG_HMEBOX1_8822E */ + +#define BIT_SHIFT_HOST_MSG_1_8822E 0 +#define BIT_MASK_HOST_MSG_1_8822E 0xffffffffL +#define BIT_HOST_MSG_1_8822E(x) \ + (((x) & BIT_MASK_HOST_MSG_1_8822E) << BIT_SHIFT_HOST_MSG_1_8822E) +#define BITS_HOST_MSG_1_8822E \ + (BIT_MASK_HOST_MSG_1_8822E << BIT_SHIFT_HOST_MSG_1_8822E) +#define BIT_CLEAR_HOST_MSG_1_8822E(x) ((x) & (~BITS_HOST_MSG_1_8822E)) +#define BIT_GET_HOST_MSG_1_8822E(x) \ + (((x) >> BIT_SHIFT_HOST_MSG_1_8822E) & BIT_MASK_HOST_MSG_1_8822E) +#define BIT_SET_HOST_MSG_1_8822E(x, v) \ + (BIT_CLEAR_HOST_MSG_1_8822E(x) | BIT_HOST_MSG_1_8822E(v)) + +/* 2 REG_HMEBOX2_8822E */ + +#define BIT_SHIFT_HOST_MSG_2_8822E 0 +#define BIT_MASK_HOST_MSG_2_8822E 0xffffffffL +#define BIT_HOST_MSG_2_8822E(x) \ + (((x) & BIT_MASK_HOST_MSG_2_8822E) << BIT_SHIFT_HOST_MSG_2_8822E) +#define BITS_HOST_MSG_2_8822E \ + (BIT_MASK_HOST_MSG_2_8822E << BIT_SHIFT_HOST_MSG_2_8822E) +#define BIT_CLEAR_HOST_MSG_2_8822E(x) ((x) & (~BITS_HOST_MSG_2_8822E)) +#define BIT_GET_HOST_MSG_2_8822E(x) \ + (((x) >> BIT_SHIFT_HOST_MSG_2_8822E) & BIT_MASK_HOST_MSG_2_8822E) +#define BIT_SET_HOST_MSG_2_8822E(x, v) \ + (BIT_CLEAR_HOST_MSG_2_8822E(x) | BIT_HOST_MSG_2_8822E(v)) + +/* 2 REG_HMEBOX3_8822E */ + +#define BIT_SHIFT_HOST_MSG_3_8822E 0 +#define BIT_MASK_HOST_MSG_3_8822E 0xffffffffL +#define BIT_HOST_MSG_3_8822E(x) \ + (((x) & BIT_MASK_HOST_MSG_3_8822E) << BIT_SHIFT_HOST_MSG_3_8822E) +#define BITS_HOST_MSG_3_8822E \ + (BIT_MASK_HOST_MSG_3_8822E << BIT_SHIFT_HOST_MSG_3_8822E) +#define BIT_CLEAR_HOST_MSG_3_8822E(x) ((x) & (~BITS_HOST_MSG_3_8822E)) +#define BIT_GET_HOST_MSG_3_8822E(x) \ + (((x) >> BIT_SHIFT_HOST_MSG_3_8822E) & BIT_MASK_HOST_MSG_3_8822E) +#define BIT_SET_HOST_MSG_3_8822E(x, v) \ + (BIT_CLEAR_HOST_MSG_3_8822E(x) | BIT_HOST_MSG_3_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_BB_ACCESS_CTRL_8822E */ + +#define BIT_SHIFT_BB_WRITE_READ_8822E 30 +#define BIT_MASK_BB_WRITE_READ_8822E 0x3 +#define BIT_BB_WRITE_READ_8822E(x) \ + (((x) & BIT_MASK_BB_WRITE_READ_8822E) << BIT_SHIFT_BB_WRITE_READ_8822E) +#define BITS_BB_WRITE_READ_8822E \ + (BIT_MASK_BB_WRITE_READ_8822E << BIT_SHIFT_BB_WRITE_READ_8822E) +#define BIT_CLEAR_BB_WRITE_READ_8822E(x) ((x) & (~BITS_BB_WRITE_READ_8822E)) +#define BIT_GET_BB_WRITE_READ_8822E(x) \ + (((x) >> BIT_SHIFT_BB_WRITE_READ_8822E) & BIT_MASK_BB_WRITE_READ_8822E) +#define BIT_SET_BB_WRITE_READ_8822E(x, v) \ + (BIT_CLEAR_BB_WRITE_READ_8822E(x) | BIT_BB_WRITE_READ_8822E(v)) + +#define BIT_SHIFT_BB_WRITE_EN_8822E 12 +#define BIT_MASK_BB_WRITE_EN_8822E 0xf +#define BIT_BB_WRITE_EN_8822E(x) \ + (((x) & BIT_MASK_BB_WRITE_EN_8822E) << BIT_SHIFT_BB_WRITE_EN_8822E) +#define BITS_BB_WRITE_EN_8822E \ + (BIT_MASK_BB_WRITE_EN_8822E << BIT_SHIFT_BB_WRITE_EN_8822E) +#define BIT_CLEAR_BB_WRITE_EN_8822E(x) ((x) & (~BITS_BB_WRITE_EN_8822E)) +#define BIT_GET_BB_WRITE_EN_8822E(x) \ + (((x) >> BIT_SHIFT_BB_WRITE_EN_8822E) & BIT_MASK_BB_WRITE_EN_8822E) +#define BIT_SET_BB_WRITE_EN_8822E(x, v) \ + (BIT_CLEAR_BB_WRITE_EN_8822E(x) | BIT_BB_WRITE_EN_8822E(v)) + +#define BIT_SHIFT_BB_ADDR_8822E 2 +#define BIT_MASK_BB_ADDR_8822E 0x1ff +#define BIT_BB_ADDR_8822E(x) \ + (((x) & BIT_MASK_BB_ADDR_8822E) << BIT_SHIFT_BB_ADDR_8822E) +#define BITS_BB_ADDR_8822E (BIT_MASK_BB_ADDR_8822E << BIT_SHIFT_BB_ADDR_8822E) +#define BIT_CLEAR_BB_ADDR_8822E(x) ((x) & (~BITS_BB_ADDR_8822E)) +#define BIT_GET_BB_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_BB_ADDR_8822E) & BIT_MASK_BB_ADDR_8822E) +#define BIT_SET_BB_ADDR_8822E(x, v) \ + (BIT_CLEAR_BB_ADDR_8822E(x) | BIT_BB_ADDR_8822E(v)) + +#define BIT_BB_ERRACC_8822E BIT(0) + +/* 2 REG_BB_ACCESS_DATA_8822E */ + +#define BIT_SHIFT_BB_DATA_8822E 0 +#define BIT_MASK_BB_DATA_8822E 0xffffffffL +#define BIT_BB_DATA_8822E(x) \ + (((x) & BIT_MASK_BB_DATA_8822E) << BIT_SHIFT_BB_DATA_8822E) +#define BITS_BB_DATA_8822E (BIT_MASK_BB_DATA_8822E << BIT_SHIFT_BB_DATA_8822E) +#define BIT_CLEAR_BB_DATA_8822E(x) ((x) & (~BITS_BB_DATA_8822E)) +#define BIT_GET_BB_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_BB_DATA_8822E) & BIT_MASK_BB_DATA_8822E) +#define BIT_SET_BB_DATA_8822E(x, v) \ + (BIT_CLEAR_BB_DATA_8822E(x) | BIT_BB_DATA_8822E(v)) + +/* 2 REG_HMEBOX_E0_8822E */ + +#define BIT_SHIFT_HMEBOX_E0_8822E 0 +#define BIT_MASK_HMEBOX_E0_8822E 0xffffffffL +#define BIT_HMEBOX_E0_8822E(x) \ + (((x) & BIT_MASK_HMEBOX_E0_8822E) << BIT_SHIFT_HMEBOX_E0_8822E) +#define BITS_HMEBOX_E0_8822E \ + (BIT_MASK_HMEBOX_E0_8822E << BIT_SHIFT_HMEBOX_E0_8822E) +#define BIT_CLEAR_HMEBOX_E0_8822E(x) ((x) & (~BITS_HMEBOX_E0_8822E)) +#define BIT_GET_HMEBOX_E0_8822E(x) \ + (((x) >> BIT_SHIFT_HMEBOX_E0_8822E) & BIT_MASK_HMEBOX_E0_8822E) +#define BIT_SET_HMEBOX_E0_8822E(x, v) \ + (BIT_CLEAR_HMEBOX_E0_8822E(x) | BIT_HMEBOX_E0_8822E(v)) + +/* 2 REG_HMEBOX_E1_8822E */ + +#define BIT_SHIFT_HMEBOX_E1_8822E 0 +#define BIT_MASK_HMEBOX_E1_8822E 0xffffffffL +#define BIT_HMEBOX_E1_8822E(x) \ + (((x) & BIT_MASK_HMEBOX_E1_8822E) << BIT_SHIFT_HMEBOX_E1_8822E) +#define BITS_HMEBOX_E1_8822E \ + (BIT_MASK_HMEBOX_E1_8822E << BIT_SHIFT_HMEBOX_E1_8822E) +#define BIT_CLEAR_HMEBOX_E1_8822E(x) ((x) & (~BITS_HMEBOX_E1_8822E)) +#define BIT_GET_HMEBOX_E1_8822E(x) \ + (((x) >> BIT_SHIFT_HMEBOX_E1_8822E) & BIT_MASK_HMEBOX_E1_8822E) +#define BIT_SET_HMEBOX_E1_8822E(x, v) \ + (BIT_CLEAR_HMEBOX_E1_8822E(x) | BIT_HMEBOX_E1_8822E(v)) + +/* 2 REG_HMEBOX_E2_8822E */ + +#define BIT_SHIFT_HMEBOX_E2_8822E 0 +#define BIT_MASK_HMEBOX_E2_8822E 0xffffffffL +#define BIT_HMEBOX_E2_8822E(x) \ + (((x) & BIT_MASK_HMEBOX_E2_8822E) << BIT_SHIFT_HMEBOX_E2_8822E) +#define BITS_HMEBOX_E2_8822E \ + (BIT_MASK_HMEBOX_E2_8822E << BIT_SHIFT_HMEBOX_E2_8822E) +#define BIT_CLEAR_HMEBOX_E2_8822E(x) ((x) & (~BITS_HMEBOX_E2_8822E)) +#define BIT_GET_HMEBOX_E2_8822E(x) \ + (((x) >> BIT_SHIFT_HMEBOX_E2_8822E) & BIT_MASK_HMEBOX_E2_8822E) +#define BIT_SET_HMEBOX_E2_8822E(x, v) \ + (BIT_CLEAR_HMEBOX_E2_8822E(x) | BIT_HMEBOX_E2_8822E(v)) + +/* 2 REG_HMEBOX_E3_8822E */ + +#define BIT_SHIFT_HMEBOX_E3_8822E 0 +#define BIT_MASK_HMEBOX_E3_8822E 0xffffffffL +#define BIT_HMEBOX_E3_8822E(x) \ + (((x) & BIT_MASK_HMEBOX_E3_8822E) << BIT_SHIFT_HMEBOX_E3_8822E) +#define BITS_HMEBOX_E3_8822E \ + (BIT_MASK_HMEBOX_E3_8822E << BIT_SHIFT_HMEBOX_E3_8822E) +#define BIT_CLEAR_HMEBOX_E3_8822E(x) ((x) & (~BITS_HMEBOX_E3_8822E)) +#define BIT_GET_HMEBOX_E3_8822E(x) \ + (((x) >> BIT_SHIFT_HMEBOX_E3_8822E) & BIT_MASK_HMEBOX_E3_8822E) +#define BIT_SET_HMEBOX_E3_8822E(x, v) \ + (BIT_CLEAR_HMEBOX_E3_8822E(x) | BIT_HMEBOX_E3_8822E(v)) + +/* 2 REG_CR_EXT_8822E */ + +#define BIT_SHIFT_PHY_REQ_DELAY_8822E 24 +#define BIT_MASK_PHY_REQ_DELAY_8822E 0xf +#define BIT_PHY_REQ_DELAY_8822E(x) \ + (((x) & BIT_MASK_PHY_REQ_DELAY_8822E) << BIT_SHIFT_PHY_REQ_DELAY_8822E) +#define BITS_PHY_REQ_DELAY_8822E \ + (BIT_MASK_PHY_REQ_DELAY_8822E << BIT_SHIFT_PHY_REQ_DELAY_8822E) +#define BIT_CLEAR_PHY_REQ_DELAY_8822E(x) ((x) & (~BITS_PHY_REQ_DELAY_8822E)) +#define BIT_GET_PHY_REQ_DELAY_8822E(x) \ + (((x) >> BIT_SHIFT_PHY_REQ_DELAY_8822E) & BIT_MASK_PHY_REQ_DELAY_8822E) +#define BIT_SET_PHY_REQ_DELAY_8822E(x, v) \ + (BIT_CLEAR_PHY_REQ_DELAY_8822E(x) | BIT_PHY_REQ_DELAY_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_SPD_DOWN_8822E BIT(16) + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_NETYPE4_8822E 4 +#define BIT_MASK_NETYPE4_8822E 0x3 +#define BIT_NETYPE4_8822E(x) \ + (((x) & BIT_MASK_NETYPE4_8822E) << BIT_SHIFT_NETYPE4_8822E) +#define BITS_NETYPE4_8822E (BIT_MASK_NETYPE4_8822E << BIT_SHIFT_NETYPE4_8822E) +#define BIT_CLEAR_NETYPE4_8822E(x) ((x) & (~BITS_NETYPE4_8822E)) +#define BIT_GET_NETYPE4_8822E(x) \ + (((x) >> BIT_SHIFT_NETYPE4_8822E) & BIT_MASK_NETYPE4_8822E) +#define BIT_SET_NETYPE4_8822E(x, v) \ + (BIT_CLEAR_NETYPE4_8822E(x) | BIT_NETYPE4_8822E(v)) + +#define BIT_SHIFT_NETYPE3_8822E 2 +#define BIT_MASK_NETYPE3_8822E 0x3 +#define BIT_NETYPE3_8822E(x) \ + (((x) & BIT_MASK_NETYPE3_8822E) << BIT_SHIFT_NETYPE3_8822E) +#define BITS_NETYPE3_8822E (BIT_MASK_NETYPE3_8822E << BIT_SHIFT_NETYPE3_8822E) +#define BIT_CLEAR_NETYPE3_8822E(x) ((x) & (~BITS_NETYPE3_8822E)) +#define BIT_GET_NETYPE3_8822E(x) \ + (((x) >> BIT_SHIFT_NETYPE3_8822E) & BIT_MASK_NETYPE3_8822E) +#define BIT_SET_NETYPE3_8822E(x, v) \ + (BIT_CLEAR_NETYPE3_8822E(x) | BIT_NETYPE3_8822E(v)) + +#define BIT_SHIFT_NETYPE2_8822E 0 +#define BIT_MASK_NETYPE2_8822E 0x3 +#define BIT_NETYPE2_8822E(x) \ + (((x) & BIT_MASK_NETYPE2_8822E) << BIT_SHIFT_NETYPE2_8822E) +#define BITS_NETYPE2_8822E (BIT_MASK_NETYPE2_8822E << BIT_SHIFT_NETYPE2_8822E) +#define BIT_CLEAR_NETYPE2_8822E(x) ((x) & (~BITS_NETYPE2_8822E)) +#define BIT_GET_NETYPE2_8822E(x) \ + (((x) >> BIT_SHIFT_NETYPE2_8822E) & BIT_MASK_NETYPE2_8822E) +#define BIT_SET_NETYPE2_8822E(x, v) \ + (BIT_CLEAR_NETYPE2_8822E(x) | BIT_NETYPE2_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_FWFF_8822E */ + +#define BIT_SHIFT_PKTNUM_TH_V1_8822E 24 +#define BIT_MASK_PKTNUM_TH_V1_8822E 0xff +#define BIT_PKTNUM_TH_V1_8822E(x) \ + (((x) & BIT_MASK_PKTNUM_TH_V1_8822E) << BIT_SHIFT_PKTNUM_TH_V1_8822E) +#define BITS_PKTNUM_TH_V1_8822E \ + (BIT_MASK_PKTNUM_TH_V1_8822E << BIT_SHIFT_PKTNUM_TH_V1_8822E) +#define BIT_CLEAR_PKTNUM_TH_V1_8822E(x) ((x) & (~BITS_PKTNUM_TH_V1_8822E)) +#define BIT_GET_PKTNUM_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PKTNUM_TH_V1_8822E) & BIT_MASK_PKTNUM_TH_V1_8822E) +#define BIT_SET_PKTNUM_TH_V1_8822E(x, v) \ + (BIT_CLEAR_PKTNUM_TH_V1_8822E(x) | BIT_PKTNUM_TH_V1_8822E(v)) + +#define BIT_SHIFT_TIMER_TH_8822E 16 +#define BIT_MASK_TIMER_TH_8822E 0xff +#define BIT_TIMER_TH_8822E(x) \ + (((x) & BIT_MASK_TIMER_TH_8822E) << BIT_SHIFT_TIMER_TH_8822E) +#define BITS_TIMER_TH_8822E \ + (BIT_MASK_TIMER_TH_8822E << BIT_SHIFT_TIMER_TH_8822E) +#define BIT_CLEAR_TIMER_TH_8822E(x) ((x) & (~BITS_TIMER_TH_8822E)) +#define BIT_GET_TIMER_TH_8822E(x) \ + (((x) >> BIT_SHIFT_TIMER_TH_8822E) & BIT_MASK_TIMER_TH_8822E) +#define BIT_SET_TIMER_TH_8822E(x, v) \ + (BIT_CLEAR_TIMER_TH_8822E(x) | BIT_TIMER_TH_8822E(v)) + +#define BIT_SHIFT_RXPKT1ENADDR_8822E 0 +#define BIT_MASK_RXPKT1ENADDR_8822E 0xffff +#define BIT_RXPKT1ENADDR_8822E(x) \ + (((x) & BIT_MASK_RXPKT1ENADDR_8822E) << BIT_SHIFT_RXPKT1ENADDR_8822E) +#define BITS_RXPKT1ENADDR_8822E \ + (BIT_MASK_RXPKT1ENADDR_8822E << BIT_SHIFT_RXPKT1ENADDR_8822E) +#define BIT_CLEAR_RXPKT1ENADDR_8822E(x) ((x) & (~BITS_RXPKT1ENADDR_8822E)) +#define BIT_GET_RXPKT1ENADDR_8822E(x) \ + (((x) >> BIT_SHIFT_RXPKT1ENADDR_8822E) & BIT_MASK_RXPKT1ENADDR_8822E) +#define BIT_SET_RXPKT1ENADDR_8822E(x, v) \ + (BIT_CLEAR_RXPKT1ENADDR_8822E(x) | BIT_RXPKT1ENADDR_8822E(v)) + +/* 2 REG_RXFF_PTR_V1_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_RXFF0_RDPTR_V2_8822E 0 +#define BIT_MASK_RXFF0_RDPTR_V2_8822E 0x3ffff +#define BIT_RXFF0_RDPTR_V2_8822E(x) \ + (((x) & BIT_MASK_RXFF0_RDPTR_V2_8822E) \ + << BIT_SHIFT_RXFF0_RDPTR_V2_8822E) +#define BITS_RXFF0_RDPTR_V2_8822E \ + (BIT_MASK_RXFF0_RDPTR_V2_8822E << BIT_SHIFT_RXFF0_RDPTR_V2_8822E) +#define BIT_CLEAR_RXFF0_RDPTR_V2_8822E(x) ((x) & (~BITS_RXFF0_RDPTR_V2_8822E)) +#define BIT_GET_RXFF0_RDPTR_V2_8822E(x) \ + (((x) >> BIT_SHIFT_RXFF0_RDPTR_V2_8822E) & \ + BIT_MASK_RXFF0_RDPTR_V2_8822E) +#define BIT_SET_RXFF0_RDPTR_V2_8822E(x, v) \ + (BIT_CLEAR_RXFF0_RDPTR_V2_8822E(x) | BIT_RXFF0_RDPTR_V2_8822E(v)) + +/* 2 REG_RXFF_WTR_V1_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_RXFF0_WTPTR_V2_8822E 0 +#define BIT_MASK_RXFF0_WTPTR_V2_8822E 0x3ffff +#define BIT_RXFF0_WTPTR_V2_8822E(x) \ + (((x) & BIT_MASK_RXFF0_WTPTR_V2_8822E) \ + << BIT_SHIFT_RXFF0_WTPTR_V2_8822E) +#define BITS_RXFF0_WTPTR_V2_8822E \ + (BIT_MASK_RXFF0_WTPTR_V2_8822E << BIT_SHIFT_RXFF0_WTPTR_V2_8822E) +#define BIT_CLEAR_RXFF0_WTPTR_V2_8822E(x) ((x) & (~BITS_RXFF0_WTPTR_V2_8822E)) +#define BIT_GET_RXFF0_WTPTR_V2_8822E(x) \ + (((x) >> BIT_SHIFT_RXFF0_WTPTR_V2_8822E) & \ + BIT_MASK_RXFF0_WTPTR_V2_8822E) +#define BIT_SET_RXFF0_WTPTR_V2_8822E(x, v) \ + (BIT_CLEAR_RXFF0_WTPTR_V2_8822E(x) | BIT_RXFF0_WTPTR_V2_8822E(v)) + +/* 2 REG_FE2IMR_8822E */ +#define BIT__FE4ISR__IND_MSK_8822E BIT(29) +#define BIT_FS_TXSC_DESC_DONE_INT_EN_8822E BIT(28) +#define BIT_FS_TXSC_BKDONE_INT_EN_8822E BIT(27) +#define BIT_FS_TXSC_BEDONE_INT_EN_8822E BIT(26) +#define BIT_FS_TXSC_VIDONE_INT_EN_8822E BIT(25) +#define BIT_FS_TXSC_VODONE_INT_EN_8822E BIT(24) +#define BIT_FS_ATIM_MB7_INT_EN_8822E BIT(23) +#define BIT_FS_ATIM_MB6_INT_EN_8822E BIT(22) +#define BIT_FS_ATIM_MB5_INT_EN_8822E BIT(21) +#define BIT_FS_ATIM_MB4_INT_EN_8822E BIT(20) +#define BIT_FS_ATIM_MB3_INT_EN_8822E BIT(19) +#define BIT_FS_ATIM_MB2_INT_EN_8822E BIT(18) +#define BIT_FS_ATIM_MB1_INT_EN_8822E BIT(17) +#define BIT_FS_ATIM_MB0_INT_EN_8822E BIT(16) +#define BIT_FS_TBTT4INT_EN_8822E BIT(11) +#define BIT_FS_TBTT3INT_EN_8822E BIT(10) +#define BIT_FS_TBTT2INT_EN_8822E BIT(9) +#define BIT_FS_TBTT1INT_EN_8822E BIT(8) +#define BIT_FS_TBTT0_MB7INT_EN_8822E BIT(7) +#define BIT_FS_TBTT0_MB6INT_EN_8822E BIT(6) +#define BIT_FS_TBTT0_MB5INT_EN_8822E BIT(5) +#define BIT_FS_TBTT0_MB4INT_EN_8822E BIT(4) +#define BIT_FS_TBTT0_MB3INT_EN_8822E BIT(3) +#define BIT_FS_TBTT0_MB2INT_EN_8822E BIT(2) +#define BIT_FS_TBTT0_MB1INT_EN_8822E BIT(1) +#define BIT_FS_TBTT0_INT_EN_8822E BIT(0) + +/* 2 REG_FE2ISR_8822E */ +#define BIT__FE4ISR__IND_INT_8822E BIT(29) +#define BIT_FS_TXSC_DESC_DONE_INT_8822E BIT(28) +#define BIT_FS_TXSC_BKDONE_INT_8822E BIT(27) +#define BIT_FS_TXSC_BEDONE_INT_8822E BIT(26) +#define BIT_FS_TXSC_VIDONE_INT_8822E BIT(25) +#define BIT_FS_TXSC_VODONE_INT_8822E BIT(24) +#define BIT_FS_ATIM_MB7_INT_8822E BIT(23) +#define BIT_FS_ATIM_MB6_INT_8822E BIT(22) +#define BIT_FS_ATIM_MB5_INT_8822E BIT(21) +#define BIT_FS_ATIM_MB4_INT_8822E BIT(20) +#define BIT_FS_ATIM_MB3_INT_8822E BIT(19) +#define BIT_FS_ATIM_MB2_INT_8822E BIT(18) +#define BIT_FS_ATIM_MB1_INT_8822E BIT(17) +#define BIT_FS_ATIM_MB0_INT_8822E BIT(16) +#define BIT_FS_TBTT4INT_8822E BIT(11) +#define BIT_FS_TBTT3INT_8822E BIT(10) +#define BIT_FS_TBTT2INT_8822E BIT(9) +#define BIT_FS_TBTT1INT_8822E BIT(8) +#define BIT_FS_TBTT0_MB7INT_8822E BIT(7) +#define BIT_FS_TBTT0_MB6INT_8822E BIT(6) +#define BIT_FS_TBTT0_MB5INT_8822E BIT(5) +#define BIT_FS_TBTT0_MB4INT_8822E BIT(4) +#define BIT_FS_TBTT0_MB3INT_8822E BIT(3) +#define BIT_FS_TBTT0_MB2INT_8822E BIT(2) +#define BIT_FS_TBTT0_MB1INT_8822E BIT(1) +#define BIT_FS_TBTT0_INT_8822E BIT(0) + +/* 2 REG_FE3IMR_8822E */ +#define BIT_FS_CLI3_MTI_BCNIVLEAR_INT__EN_8822E BIT(31) +#define BIT_FS_CLI2_MTI_BCNIVLEAR_INT__EN_8822E BIT(30) +#define BIT_FS_CLI1_MTI_BCNIVLEAR_INT__EN_8822E BIT(29) +#define BIT_FS_CLI0_MTI_BCNIVLEAR_INT__EN_8822E BIT(28) +#define BIT_FS_BCNDMA4_INT_EN_8822E BIT(27) +#define BIT_FS_BCNDMA3_INT_EN_8822E BIT(26) +#define BIT_FS_BCNDMA2_INT_EN_8822E BIT(25) +#define BIT_FS_BCNDMA1_INT_EN_8822E BIT(24) +#define BIT_FS_BCNDMA0_MB7_INT_EN_8822E BIT(23) +#define BIT_FS_BCNDMA0_MB6_INT_EN_8822E BIT(22) +#define BIT_FS_BCNDMA0_MB5_INT_EN_8822E BIT(21) +#define BIT_FS_BCNDMA0_MB4_INT_EN_8822E BIT(20) +#define BIT_FS_BCNDMA0_MB3_INT_EN_8822E BIT(19) +#define BIT_FS_BCNDMA0_MB2_INT_EN_8822E BIT(18) +#define BIT_FS_BCNDMA0_MB1_INT_EN_8822E BIT(17) +#define BIT_FS_BCNDMA0_INT_EN_8822E BIT(16) +#define BIT_FS_MTI_BCNIVLEAR_INT__EN_8822E BIT(15) +#define BIT_FS_BCNERLY4_INT_EN_8822E BIT(11) +#define BIT_FS_BCNERLY3_INT_EN_8822E BIT(10) +#define BIT_FS_BCNERLY2_INT_EN_8822E BIT(9) +#define BIT_FS_BCNERLY1_INT_EN_8822E BIT(8) +#define BIT_FS_BCNERLY0_MB7INT_EN_8822E BIT(7) +#define BIT_FS_BCNERLY0_MB6INT_EN_8822E BIT(6) +#define BIT_FS_BCNERLY0_MB5INT_EN_8822E BIT(5) +#define BIT_FS_BCNERLY0_MB4INT_EN_8822E BIT(4) +#define BIT_FS_BCNERLY0_MB3INT_EN_8822E BIT(3) +#define BIT_FS_BCNERLY0_MB2INT_EN_8822E BIT(2) +#define BIT_FS_BCNERLY0_MB1INT_EN_8822E BIT(1) +#define BIT_FS_BCNERLY0_INT_EN_8822E BIT(0) + +/* 2 REG_FE3ISR_8822E */ +#define BIT_FS_CLI3_MTI_BCNIVLEAR_INT_8822E BIT(31) +#define BIT_FS_CLI2_MTI_BCNIVLEAR_INT_8822E BIT(30) +#define BIT_FS_CLI1_MTI_BCNIVLEAR_INT_8822E BIT(29) +#define BIT_FS_CLI0_MTI_BCNIVLEAR_INT_8822E BIT(28) +#define BIT_FS_BCNDMA4_INT_8822E BIT(27) +#define BIT_FS_BCNDMA3_INT_8822E BIT(26) +#define BIT_FS_BCNDMA2_INT_8822E BIT(25) +#define BIT_FS_BCNDMA1_INT_8822E BIT(24) +#define BIT_FS_BCNDMA0_MB7_INT_8822E BIT(23) +#define BIT_FS_BCNDMA0_MB6_INT_8822E BIT(22) +#define BIT_FS_BCNDMA0_MB5_INT_8822E BIT(21) +#define BIT_FS_BCNDMA0_MB4_INT_8822E BIT(20) +#define BIT_FS_BCNDMA0_MB3_INT_8822E BIT(19) +#define BIT_FS_BCNDMA0_MB2_INT_8822E BIT(18) +#define BIT_FS_BCNDMA0_MB1_INT_8822E BIT(17) +#define BIT_FS_BCNDMA0_INT_8822E BIT(16) +#define BIT_FS_MTI_BCNIVLEAR_INT_8822E BIT(15) +#define BIT_FS_BCNERLY4_INT_8822E BIT(11) +#define BIT_FS_BCNERLY3_INT_8822E BIT(10) +#define BIT_FS_BCNERLY2_INT_8822E BIT(9) +#define BIT_FS_BCNERLY1_INT_8822E BIT(8) +#define BIT_FS_BCNERLY0_MB7INT_8822E BIT(7) +#define BIT_FS_BCNERLY0_MB6INT_8822E BIT(6) +#define BIT_FS_BCNERLY0_MB5INT_8822E BIT(5) +#define BIT_FS_BCNERLY0_MB4INT_8822E BIT(4) +#define BIT_FS_BCNERLY0_MB3INT_8822E BIT(3) +#define BIT_FS_BCNERLY0_MB2INT_8822E BIT(2) +#define BIT_FS_BCNERLY0_MB1INT_8822E BIT(1) +#define BIT_FS_BCNERLY0_INT_8822E BIT(0) + +/* 2 REG_FE4IMR_8822E */ +#define BIT_FS_CLI3_TXPKTIN_INT_EN_8822E BIT(19) +#define BIT_FS_CLI2_TXPKTIN_INT_EN_8822E BIT(18) +#define BIT_FS_CLI1_TXPKTIN_INT_EN_8822E BIT(17) +#define BIT_FS_CLI0_TXPKTIN_INT_EN_8822E BIT(16) +#define BIT_FS_CLI3_RX_UMD0_INT_EN_8822E BIT(15) +#define BIT_FS_CLI3_RX_UMD1_INT_EN_8822E BIT(14) +#define BIT_FS_CLI3_RX_BMD0_INT_EN_8822E BIT(13) +#define BIT_FS_CLI3_RX_BMD1_INT_EN_8822E BIT(12) +#define BIT_FS_CLI2_RX_UMD0_INT_EN_8822E BIT(11) +#define BIT_FS_CLI2_RX_UMD1_INT_EN_8822E BIT(10) +#define BIT_FS_CLI2_RX_BMD0_INT_EN_8822E BIT(9) +#define BIT_FS_CLI2_RX_BMD1_INT_EN_8822E BIT(8) +#define BIT_FS_CLI1_RX_UMD0_INT_EN_8822E BIT(7) +#define BIT_FS_CLI1_RX_UMD1_INT_EN_8822E BIT(6) +#define BIT_FS_CLI1_RX_BMD0_INT_EN_8822E BIT(5) +#define BIT_FS_CLI1_RX_BMD1_INT_EN_8822E BIT(4) +#define BIT_FS_CLI0_RX_UMD0_INT_EN_8822E BIT(3) +#define BIT_FS_CLI0_RX_UMD1_INT_EN_8822E BIT(2) +#define BIT_FS_CLI0_RX_BMD0_INT_EN_8822E BIT(1) +#define BIT_FS_CLI0_RX_BMD1_INT_EN_8822E BIT(0) + +/* 2 REG_FE4ISR_8822E */ +#define BIT_FS_CLI3_TXPKTIN_INT_8822E BIT(19) +#define BIT_FS_CLI2_TXPKTIN_INT_8822E BIT(18) +#define BIT_FS_CLI1_TXPKTIN_INT_8822E BIT(17) +#define BIT_FS_CLI0_TXPKTIN_INT_8822E BIT(16) +#define BIT_FS_CLI3_RX_UMD0_INT_8822E BIT(15) +#define BIT_FS_CLI3_RX_UMD1_INT_8822E BIT(14) +#define BIT_FS_CLI3_RX_BMD0_INT_8822E BIT(13) +#define BIT_FS_CLI3_RX_BMD1_INT_8822E BIT(12) +#define BIT_FS_CLI2_RX_UMD0_INT_8822E BIT(11) +#define BIT_FS_CLI2_RX_UMD1_INT_8822E BIT(10) +#define BIT_FS_CLI2_RX_BMD0_INT_8822E BIT(9) +#define BIT_FS_CLI2_RX_BMD1_INT_8822E BIT(8) +#define BIT_FS_CLI1_RX_UMD0_INT_8822E BIT(7) +#define BIT_FS_CLI1_RX_UMD1_INT_8822E BIT(6) +#define BIT_FS_CLI1_RX_BMD0_INT_8822E BIT(5) +#define BIT_FS_CLI1_RX_BMD1_INT_8822E BIT(4) +#define BIT_FS_CLI0_RX_UMD0_INT_8822E BIT(3) +#define BIT_FS_CLI0_RX_UMD1_INT_8822E BIT(2) +#define BIT_FS_CLI0_RX_BMD0_INT_8822E BIT(1) +#define BIT_FS_CLI0_RX_BMD1_INT_8822E BIT(0) + +/* 2 REG_FT1IMR_8822E */ +#define BIT__FT2ISR__IND_MSK_8822E BIT(30) +#define BIT_FTM_PTT_INT_EN_8822E BIT(29) +#define BIT_RXFTMREQ_INT_EN_8822E BIT(28) +#define BIT_RXFTM_INT_EN_8822E BIT(27) +#define BIT_TXFTM_INT_EN_8822E BIT(26) +#define BIT_FS_H2C_CMD_OK_INT_EN_8822E BIT(25) +#define BIT_FS_H2C_CMD_FULL_INT_EN_8822E BIT(24) +#define BIT_FS_MACID_PWRCHANGE5_INT_EN_8822E BIT(23) +#define BIT_FS_MACID_PWRCHANGE4_INT_EN_8822E BIT(22) +#define BIT_FS_MACID_PWRCHANGE3_INT_EN_8822E BIT(21) +#define BIT_FS_MACID_PWRCHANGE2_INT_EN_8822E BIT(20) +#define BIT_FS_MACID_PWRCHANGE1_INT_EN_8822E BIT(19) +#define BIT_FS_MACID_PWRCHANGE0_INT_EN_8822E BIT(18) +#define BIT_FS_CTWEND2_INT_EN_8822E BIT(17) +#define BIT_FS_CTWEND1_INT_EN_8822E BIT(16) +#define BIT_FS_CTWEND0_INT_EN_8822E BIT(15) +#define BIT_FS_TX_NULL1_INT_EN_8822E BIT(14) +#define BIT_FS_TX_NULL0_INT_EN_8822E BIT(13) +#define BIT_FS_TSF_BIT32_TOGGLE_EN_8822E BIT(12) +#define BIT_FS_P2P_RFON2_INT_EN_8822E BIT(11) +#define BIT_FS_P2P_RFOFF2_INT_EN_8822E BIT(10) +#define BIT_FS_P2P_RFON1_INT_EN_8822E BIT(9) +#define BIT_FS_P2P_RFOFF1_INT_EN_8822E BIT(8) +#define BIT_FS_P2P_RFON0_INT_EN_8822E BIT(7) +#define BIT_FS_P2P_RFOFF0_INT_EN_8822E BIT(6) +#define BIT_FS_RX_UAPSDMD1_EN_8822E BIT(5) +#define BIT_FS_RX_UAPSDMD0_EN_8822E BIT(4) +#define BIT_FS_TRIGGER_PKT_EN_8822E BIT(3) +#define BIT_FS_EOSP_INT_EN_8822E BIT(2) +#define BIT_FS_RPWM2_INT_EN_8822E BIT(1) +#define BIT_FS_RPWM_INT_EN_8822E BIT(0) + +/* 2 REG_FT1ISR_8822E */ +#define BIT__FT2ISR__IND_INT_8822E BIT(30) +#define BIT_FTM_PTT_INT_8822E BIT(29) +#define BIT_RXFTMREQ_INT_8822E BIT(28) +#define BIT_RXFTM_INT_8822E BIT(27) +#define BIT_TXFTM_INT_8822E BIT(26) +#define BIT_FS_H2C_CMD_OK_INT_8822E BIT(25) +#define BIT_FS_H2C_CMD_FULL_INT_8822E BIT(24) +#define BIT_FS_MACID_PWRCHANGE5_INT_8822E BIT(23) +#define BIT_FS_MACID_PWRCHANGE4_INT_8822E BIT(22) +#define BIT_FS_MACID_PWRCHANGE3_INT_8822E BIT(21) +#define BIT_FS_MACID_PWRCHANGE2_INT_8822E BIT(20) +#define BIT_FS_MACID_PWRCHANGE1_INT_8822E BIT(19) +#define BIT_FS_MACID_PWRCHANGE0_INT_8822E BIT(18) +#define BIT_FS_CTWEND2_INT_8822E BIT(17) +#define BIT_FS_CTWEND1_INT_8822E BIT(16) +#define BIT_FS_CTWEND0_INT_8822E BIT(15) +#define BIT_FS_TX_NULL1_INT_8822E BIT(14) +#define BIT_FS_TX_NULL0_INT_8822E BIT(13) +#define BIT_FS_TSF_BIT32_TOGGLE_INT_8822E BIT(12) +#define BIT_FS_P2P_RFON2_INT_8822E BIT(11) +#define BIT_FS_P2P_RFOFF2_INT_8822E BIT(10) +#define BIT_FS_P2P_RFON1_INT_8822E BIT(9) +#define BIT_FS_P2P_RFOFF1_INT_8822E BIT(8) +#define BIT_FS_P2P_RFON0_INT_8822E BIT(7) +#define BIT_FS_P2P_RFOFF0_INT_8822E BIT(6) +#define BIT_FS_RX_UAPSDMD1_INT_8822E BIT(5) +#define BIT_FS_RX_UAPSDMD0_INT_8822E BIT(4) +#define BIT_FS_TRIGGER_PKT_INT_8822E BIT(3) +#define BIT_FS_EOSP_INT_8822E BIT(2) +#define BIT_FS_RPWM2_INT_8822E BIT(1) +#define BIT_FS_RPWM_INT_8822E BIT(0) + +/* 2 REG_SPWR0_8822E */ + +#define BIT_SHIFT_MID_31TO0_8822E 0 +#define BIT_MASK_MID_31TO0_8822E 0xffffffffL +#define BIT_MID_31TO0_8822E(x) \ + (((x) & BIT_MASK_MID_31TO0_8822E) << BIT_SHIFT_MID_31TO0_8822E) +#define BITS_MID_31TO0_8822E \ + (BIT_MASK_MID_31TO0_8822E << BIT_SHIFT_MID_31TO0_8822E) +#define BIT_CLEAR_MID_31TO0_8822E(x) ((x) & (~BITS_MID_31TO0_8822E)) +#define BIT_GET_MID_31TO0_8822E(x) \ + (((x) >> BIT_SHIFT_MID_31TO0_8822E) & BIT_MASK_MID_31TO0_8822E) +#define BIT_SET_MID_31TO0_8822E(x, v) \ + (BIT_CLEAR_MID_31TO0_8822E(x) | BIT_MID_31TO0_8822E(v)) + +/* 2 REG_SPWR1_8822E */ + +#define BIT_SHIFT_MID_63TO32_8822E 0 +#define BIT_MASK_MID_63TO32_8822E 0xffffffffL +#define BIT_MID_63TO32_8822E(x) \ + (((x) & BIT_MASK_MID_63TO32_8822E) << BIT_SHIFT_MID_63TO32_8822E) +#define BITS_MID_63TO32_8822E \ + (BIT_MASK_MID_63TO32_8822E << BIT_SHIFT_MID_63TO32_8822E) +#define BIT_CLEAR_MID_63TO32_8822E(x) ((x) & (~BITS_MID_63TO32_8822E)) +#define BIT_GET_MID_63TO32_8822E(x) \ + (((x) >> BIT_SHIFT_MID_63TO32_8822E) & BIT_MASK_MID_63TO32_8822E) +#define BIT_SET_MID_63TO32_8822E(x, v) \ + (BIT_CLEAR_MID_63TO32_8822E(x) | BIT_MID_63TO32_8822E(v)) + +/* 2 REG_SPWR2_8822E */ + +#define BIT_SHIFT_MID_95O64_8822E 0 +#define BIT_MASK_MID_95O64_8822E 0xffffffffL +#define BIT_MID_95O64_8822E(x) \ + (((x) & BIT_MASK_MID_95O64_8822E) << BIT_SHIFT_MID_95O64_8822E) +#define BITS_MID_95O64_8822E \ + (BIT_MASK_MID_95O64_8822E << BIT_SHIFT_MID_95O64_8822E) +#define BIT_CLEAR_MID_95O64_8822E(x) ((x) & (~BITS_MID_95O64_8822E)) +#define BIT_GET_MID_95O64_8822E(x) \ + (((x) >> BIT_SHIFT_MID_95O64_8822E) & BIT_MASK_MID_95O64_8822E) +#define BIT_SET_MID_95O64_8822E(x, v) \ + (BIT_CLEAR_MID_95O64_8822E(x) | BIT_MID_95O64_8822E(v)) + +/* 2 REG_SPWR3_8822E */ + +#define BIT_SHIFT_MID_127TO96_8822E 0 +#define BIT_MASK_MID_127TO96_8822E 0xffffffffL +#define BIT_MID_127TO96_8822E(x) \ + (((x) & BIT_MASK_MID_127TO96_8822E) << BIT_SHIFT_MID_127TO96_8822E) +#define BITS_MID_127TO96_8822E \ + (BIT_MASK_MID_127TO96_8822E << BIT_SHIFT_MID_127TO96_8822E) +#define BIT_CLEAR_MID_127TO96_8822E(x) ((x) & (~BITS_MID_127TO96_8822E)) +#define BIT_GET_MID_127TO96_8822E(x) \ + (((x) >> BIT_SHIFT_MID_127TO96_8822E) & BIT_MASK_MID_127TO96_8822E) +#define BIT_SET_MID_127TO96_8822E(x, v) \ + (BIT_CLEAR_MID_127TO96_8822E(x) | BIT_MID_127TO96_8822E(v)) + +/* 2 REG_POWSEQ_8822E */ + +#define BIT_SHIFT_SEQNUM_MID_8822E 16 +#define BIT_MASK_SEQNUM_MID_8822E 0xffff +#define BIT_SEQNUM_MID_8822E(x) \ + (((x) & BIT_MASK_SEQNUM_MID_8822E) << BIT_SHIFT_SEQNUM_MID_8822E) +#define BITS_SEQNUM_MID_8822E \ + (BIT_MASK_SEQNUM_MID_8822E << BIT_SHIFT_SEQNUM_MID_8822E) +#define BIT_CLEAR_SEQNUM_MID_8822E(x) ((x) & (~BITS_SEQNUM_MID_8822E)) +#define BIT_GET_SEQNUM_MID_8822E(x) \ + (((x) >> BIT_SHIFT_SEQNUM_MID_8822E) & BIT_MASK_SEQNUM_MID_8822E) +#define BIT_SET_SEQNUM_MID_8822E(x, v) \ + (BIT_CLEAR_SEQNUM_MID_8822E(x) | BIT_SEQNUM_MID_8822E(v)) + +#define BIT_SHIFT_REF_MID_8822E 0 +#define BIT_MASK_REF_MID_8822E 0x7f +#define BIT_REF_MID_8822E(x) \ + (((x) & BIT_MASK_REF_MID_8822E) << BIT_SHIFT_REF_MID_8822E) +#define BITS_REF_MID_8822E (BIT_MASK_REF_MID_8822E << BIT_SHIFT_REF_MID_8822E) +#define BIT_CLEAR_REF_MID_8822E(x) ((x) & (~BITS_REF_MID_8822E)) +#define BIT_GET_REF_MID_8822E(x) \ + (((x) >> BIT_SHIFT_REF_MID_8822E) & BIT_MASK_REF_MID_8822E) +#define BIT_SET_REF_MID_8822E(x, v) \ + (BIT_CLEAR_REF_MID_8822E(x) | BIT_REF_MID_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_TC7_CTRL_V1_8822E */ +#define BIT_TC7INT_EN_8822E BIT(26) +#define BIT_TC7MODE_8822E BIT(25) +#define BIT_TC7EN_8822E BIT(24) + +#define BIT_SHIFT_TC7DATA_8822E 0 +#define BIT_MASK_TC7DATA_8822E 0xffffff +#define BIT_TC7DATA_8822E(x) \ + (((x) & BIT_MASK_TC7DATA_8822E) << BIT_SHIFT_TC7DATA_8822E) +#define BITS_TC7DATA_8822E (BIT_MASK_TC7DATA_8822E << BIT_SHIFT_TC7DATA_8822E) +#define BIT_CLEAR_TC7DATA_8822E(x) ((x) & (~BITS_TC7DATA_8822E)) +#define BIT_GET_TC7DATA_8822E(x) \ + (((x) >> BIT_SHIFT_TC7DATA_8822E) & BIT_MASK_TC7DATA_8822E) +#define BIT_SET_TC7DATA_8822E(x, v) \ + (BIT_CLEAR_TC7DATA_8822E(x) | BIT_TC7DATA_8822E(v)) + +/* 2 REG_TC8_CTRL_V1_8822E */ +#define BIT_TC8INT_EN_8822E BIT(26) +#define BIT_TC8MODE_8822E BIT(25) +#define BIT_TC8EN_8822E BIT(24) + +#define BIT_SHIFT_TC8DATA_8822E 0 +#define BIT_MASK_TC8DATA_8822E 0xffffff +#define BIT_TC8DATA_8822E(x) \ + (((x) & BIT_MASK_TC8DATA_8822E) << BIT_SHIFT_TC8DATA_8822E) +#define BITS_TC8DATA_8822E (BIT_MASK_TC8DATA_8822E << BIT_SHIFT_TC8DATA_8822E) +#define BIT_CLEAR_TC8DATA_8822E(x) ((x) & (~BITS_TC8DATA_8822E)) +#define BIT_GET_TC8DATA_8822E(x) \ + (((x) >> BIT_SHIFT_TC8DATA_8822E) & BIT_MASK_TC8DATA_8822E) +#define BIT_SET_TC8DATA_8822E(x, v) \ + (BIT_CLEAR_TC8DATA_8822E(x) | BIT_TC8DATA_8822E(v)) + +/* 2 REG_RX_BCN_TBTT_ITVL0_8822E */ + +#define BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT2_8822E 24 +#define BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT2_8822E 0xff +#define BIT_RX_BCN_TBTT_ITVL_CLIENT2_8822E(x) \ + (((x) & BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT2_8822E) \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT2_8822E) +#define BITS_RX_BCN_TBTT_ITVL_CLIENT2_8822E \ + (BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT2_8822E \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT2_8822E) +#define BIT_CLEAR_RX_BCN_TBTT_ITVL_CLIENT2_8822E(x) \ + ((x) & (~BITS_RX_BCN_TBTT_ITVL_CLIENT2_8822E)) +#define BIT_GET_RX_BCN_TBTT_ITVL_CLIENT2_8822E(x) \ + (((x) >> BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT2_8822E) & \ + BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT2_8822E) +#define BIT_SET_RX_BCN_TBTT_ITVL_CLIENT2_8822E(x, v) \ + (BIT_CLEAR_RX_BCN_TBTT_ITVL_CLIENT2_8822E(x) | \ + BIT_RX_BCN_TBTT_ITVL_CLIENT2_8822E(v)) + +#define BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT1_8822E 16 +#define BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT1_8822E 0xff +#define BIT_RX_BCN_TBTT_ITVL_CLIENT1_8822E(x) \ + (((x) & BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT1_8822E) \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT1_8822E) +#define BITS_RX_BCN_TBTT_ITVL_CLIENT1_8822E \ + (BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT1_8822E \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT1_8822E) +#define BIT_CLEAR_RX_BCN_TBTT_ITVL_CLIENT1_8822E(x) \ + ((x) & (~BITS_RX_BCN_TBTT_ITVL_CLIENT1_8822E)) +#define BIT_GET_RX_BCN_TBTT_ITVL_CLIENT1_8822E(x) \ + (((x) >> BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT1_8822E) & \ + BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT1_8822E) +#define BIT_SET_RX_BCN_TBTT_ITVL_CLIENT1_8822E(x, v) \ + (BIT_CLEAR_RX_BCN_TBTT_ITVL_CLIENT1_8822E(x) | \ + BIT_RX_BCN_TBTT_ITVL_CLIENT1_8822E(v)) + +#define BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT0_8822E 8 +#define BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT0_8822E 0xff +#define BIT_RX_BCN_TBTT_ITVL_CLIENT0_8822E(x) \ + (((x) & BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT0_8822E) \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT0_8822E) +#define BITS_RX_BCN_TBTT_ITVL_CLIENT0_8822E \ + (BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT0_8822E \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT0_8822E) +#define BIT_CLEAR_RX_BCN_TBTT_ITVL_CLIENT0_8822E(x) \ + ((x) & (~BITS_RX_BCN_TBTT_ITVL_CLIENT0_8822E)) +#define BIT_GET_RX_BCN_TBTT_ITVL_CLIENT0_8822E(x) \ + (((x) >> BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT0_8822E) & \ + BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT0_8822E) +#define BIT_SET_RX_BCN_TBTT_ITVL_CLIENT0_8822E(x, v) \ + (BIT_CLEAR_RX_BCN_TBTT_ITVL_CLIENT0_8822E(x) | \ + BIT_RX_BCN_TBTT_ITVL_CLIENT0_8822E(v)) + +#define BIT_SHIFT_RX_BCN_TBTT_ITVL_PORT0_8822E 0 +#define BIT_MASK_RX_BCN_TBTT_ITVL_PORT0_8822E 0xff +#define BIT_RX_BCN_TBTT_ITVL_PORT0_8822E(x) \ + (((x) & BIT_MASK_RX_BCN_TBTT_ITVL_PORT0_8822E) \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_PORT0_8822E) +#define BITS_RX_BCN_TBTT_ITVL_PORT0_8822E \ + (BIT_MASK_RX_BCN_TBTT_ITVL_PORT0_8822E \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_PORT0_8822E) +#define BIT_CLEAR_RX_BCN_TBTT_ITVL_PORT0_8822E(x) \ + ((x) & (~BITS_RX_BCN_TBTT_ITVL_PORT0_8822E)) +#define BIT_GET_RX_BCN_TBTT_ITVL_PORT0_8822E(x) \ + (((x) >> BIT_SHIFT_RX_BCN_TBTT_ITVL_PORT0_8822E) & \ + BIT_MASK_RX_BCN_TBTT_ITVL_PORT0_8822E) +#define BIT_SET_RX_BCN_TBTT_ITVL_PORT0_8822E(x, v) \ + (BIT_CLEAR_RX_BCN_TBTT_ITVL_PORT0_8822E(x) | \ + BIT_RX_BCN_TBTT_ITVL_PORT0_8822E(v)) + +/* 2 REG_RX_BCN_TBTT_ITVL1_8822E */ + +#define BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT3_8822E 0 +#define BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT3_8822E 0xff +#define BIT_RX_BCN_TBTT_ITVL_CLIENT3_8822E(x) \ + (((x) & BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT3_8822E) \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT3_8822E) +#define BITS_RX_BCN_TBTT_ITVL_CLIENT3_8822E \ + (BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT3_8822E \ + << BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT3_8822E) +#define BIT_CLEAR_RX_BCN_TBTT_ITVL_CLIENT3_8822E(x) \ + ((x) & (~BITS_RX_BCN_TBTT_ITVL_CLIENT3_8822E)) +#define BIT_GET_RX_BCN_TBTT_ITVL_CLIENT3_8822E(x) \ + (((x) >> BIT_SHIFT_RX_BCN_TBTT_ITVL_CLIENT3_8822E) & \ + BIT_MASK_RX_BCN_TBTT_ITVL_CLIENT3_8822E) +#define BIT_SET_RX_BCN_TBTT_ITVL_CLIENT3_8822E(x, v) \ + (BIT_CLEAR_RX_BCN_TBTT_ITVL_CLIENT3_8822E(x) | \ + BIT_RX_BCN_TBTT_ITVL_CLIENT3_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_IO_WRAP_ERR_FLAG_8822E */ +#define BIT_IO_WRAP_ERR_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_SPEED_SENSOR_8822E */ +#define BIT_DSS_1_RST_N_8822E BIT(31) +#define BIT_DSS_1_SPEED_EN_8822E BIT(30) +#define BIT_DSS_1_WIRE_SEL_8822E BIT(29) +#define BIT_DSS_ENCLK_8822E BIT(28) + +#define BIT_SHIFT_DSS_1_RO_SEL_8822E 24 +#define BIT_MASK_DSS_1_RO_SEL_8822E 0x7 +#define BIT_DSS_1_RO_SEL_8822E(x) \ + (((x) & BIT_MASK_DSS_1_RO_SEL_8822E) << BIT_SHIFT_DSS_1_RO_SEL_8822E) +#define BITS_DSS_1_RO_SEL_8822E \ + (BIT_MASK_DSS_1_RO_SEL_8822E << BIT_SHIFT_DSS_1_RO_SEL_8822E) +#define BIT_CLEAR_DSS_1_RO_SEL_8822E(x) ((x) & (~BITS_DSS_1_RO_SEL_8822E)) +#define BIT_GET_DSS_1_RO_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_DSS_1_RO_SEL_8822E) & BIT_MASK_DSS_1_RO_SEL_8822E) +#define BIT_SET_DSS_1_RO_SEL_8822E(x, v) \ + (BIT_CLEAR_DSS_1_RO_SEL_8822E(x) | BIT_DSS_1_RO_SEL_8822E(v)) + +#define BIT_SHIFT_DSS_1_DATA_IN_8822E 0 +#define BIT_MASK_DSS_1_DATA_IN_8822E 0xfffff +#define BIT_DSS_1_DATA_IN_8822E(x) \ + (((x) & BIT_MASK_DSS_1_DATA_IN_8822E) << BIT_SHIFT_DSS_1_DATA_IN_8822E) +#define BITS_DSS_1_DATA_IN_8822E \ + (BIT_MASK_DSS_1_DATA_IN_8822E << BIT_SHIFT_DSS_1_DATA_IN_8822E) +#define BIT_CLEAR_DSS_1_DATA_IN_8822E(x) ((x) & (~BITS_DSS_1_DATA_IN_8822E)) +#define BIT_GET_DSS_1_DATA_IN_8822E(x) \ + (((x) >> BIT_SHIFT_DSS_1_DATA_IN_8822E) & BIT_MASK_DSS_1_DATA_IN_8822E) +#define BIT_SET_DSS_1_DATA_IN_8822E(x, v) \ + (BIT_CLEAR_DSS_1_DATA_IN_8822E(x) | BIT_DSS_1_DATA_IN_8822E(v)) + +/* 2 REG_SPEED_SENSOR1_8822E */ +#define BIT_DSS_1_READY_8822E BIT(31) +#define BIT_DSS_1_WSORT_GO_8822E BIT(30) + +#define BIT_SHIFT_DSS_1_COUNT_OUT_8822E 0 +#define BIT_MASK_DSS_1_COUNT_OUT_8822E 0xfffff +#define BIT_DSS_1_COUNT_OUT_8822E(x) \ + (((x) & BIT_MASK_DSS_1_COUNT_OUT_8822E) \ + << BIT_SHIFT_DSS_1_COUNT_OUT_8822E) +#define BITS_DSS_1_COUNT_OUT_8822E \ + (BIT_MASK_DSS_1_COUNT_OUT_8822E << BIT_SHIFT_DSS_1_COUNT_OUT_8822E) +#define BIT_CLEAR_DSS_1_COUNT_OUT_8822E(x) ((x) & (~BITS_DSS_1_COUNT_OUT_8822E)) +#define BIT_GET_DSS_1_COUNT_OUT_8822E(x) \ + (((x) >> BIT_SHIFT_DSS_1_COUNT_OUT_8822E) & \ + BIT_MASK_DSS_1_COUNT_OUT_8822E) +#define BIT_SET_DSS_1_COUNT_OUT_8822E(x, v) \ + (BIT_CLEAR_DSS_1_COUNT_OUT_8822E(x) | BIT_DSS_1_COUNT_OUT_8822E(v)) + +/* 2 REG_SPEED_SENSOR2_8822E */ +#define BIT_DSS_2_RST_N_8822E BIT(31) +#define BIT_DSS_2_SPEED_EN_8822E BIT(30) +#define BIT_DSS_2_WIRE_SEL_8822E BIT(29) +#define BIT_DSS_ENCLK_8822E BIT(28) + +#define BIT_SHIFT_DSS_2_RO_SEL_8822E 24 +#define BIT_MASK_DSS_2_RO_SEL_8822E 0x7 +#define BIT_DSS_2_RO_SEL_8822E(x) \ + (((x) & BIT_MASK_DSS_2_RO_SEL_8822E) << BIT_SHIFT_DSS_2_RO_SEL_8822E) +#define BITS_DSS_2_RO_SEL_8822E \ + (BIT_MASK_DSS_2_RO_SEL_8822E << BIT_SHIFT_DSS_2_RO_SEL_8822E) +#define BIT_CLEAR_DSS_2_RO_SEL_8822E(x) ((x) & (~BITS_DSS_2_RO_SEL_8822E)) +#define BIT_GET_DSS_2_RO_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_DSS_2_RO_SEL_8822E) & BIT_MASK_DSS_2_RO_SEL_8822E) +#define BIT_SET_DSS_2_RO_SEL_8822E(x, v) \ + (BIT_CLEAR_DSS_2_RO_SEL_8822E(x) | BIT_DSS_2_RO_SEL_8822E(v)) + +#define BIT_SHIFT_DSS_2_DATA_IN_8822E 0 +#define BIT_MASK_DSS_2_DATA_IN_8822E 0xfffff +#define BIT_DSS_2_DATA_IN_8822E(x) \ + (((x) & BIT_MASK_DSS_2_DATA_IN_8822E) << BIT_SHIFT_DSS_2_DATA_IN_8822E) +#define BITS_DSS_2_DATA_IN_8822E \ + (BIT_MASK_DSS_2_DATA_IN_8822E << BIT_SHIFT_DSS_2_DATA_IN_8822E) +#define BIT_CLEAR_DSS_2_DATA_IN_8822E(x) ((x) & (~BITS_DSS_2_DATA_IN_8822E)) +#define BIT_GET_DSS_2_DATA_IN_8822E(x) \ + (((x) >> BIT_SHIFT_DSS_2_DATA_IN_8822E) & BIT_MASK_DSS_2_DATA_IN_8822E) +#define BIT_SET_DSS_2_DATA_IN_8822E(x, v) \ + (BIT_CLEAR_DSS_2_DATA_IN_8822E(x) | BIT_DSS_2_DATA_IN_8822E(v)) + +/* 2 REG_SPEED_SENSOR3_8822E */ +#define BIT_DSS_2_READY_8822E BIT(31) +#define BIT_DSS_2_WSORT_GO_8822E BIT(30) + +#define BIT_SHIFT_DSS_2_COUNT_OUT_8822E 0 +#define BIT_MASK_DSS_2_COUNT_OUT_8822E 0xfffff +#define BIT_DSS_2_COUNT_OUT_8822E(x) \ + (((x) & BIT_MASK_DSS_2_COUNT_OUT_8822E) \ + << BIT_SHIFT_DSS_2_COUNT_OUT_8822E) +#define BITS_DSS_2_COUNT_OUT_8822E \ + (BIT_MASK_DSS_2_COUNT_OUT_8822E << BIT_SHIFT_DSS_2_COUNT_OUT_8822E) +#define BIT_CLEAR_DSS_2_COUNT_OUT_8822E(x) ((x) & (~BITS_DSS_2_COUNT_OUT_8822E)) +#define BIT_GET_DSS_2_COUNT_OUT_8822E(x) \ + (((x) >> BIT_SHIFT_DSS_2_COUNT_OUT_8822E) & \ + BIT_MASK_DSS_2_COUNT_OUT_8822E) +#define BIT_SET_DSS_2_COUNT_OUT_8822E(x, v) \ + (BIT_CLEAR_DSS_2_COUNT_OUT_8822E(x) | BIT_DSS_2_COUNT_OUT_8822E(v)) + +/* 2 REG_SPEED_SENSOR4_8822E */ +#define BIT_DSS_3_RST_N_8822E BIT(31) +#define BIT_DSS_3_SPEED_EN_8822E BIT(30) +#define BIT_DSS_3_WIRE_SEL_8822E BIT(29) +#define BIT_DSS_ENCLK_8822E BIT(28) + +#define BIT_SHIFT_DSS_3_RO_SEL_8822E 24 +#define BIT_MASK_DSS_3_RO_SEL_8822E 0x7 +#define BIT_DSS_3_RO_SEL_8822E(x) \ + (((x) & BIT_MASK_DSS_3_RO_SEL_8822E) << BIT_SHIFT_DSS_3_RO_SEL_8822E) +#define BITS_DSS_3_RO_SEL_8822E \ + (BIT_MASK_DSS_3_RO_SEL_8822E << BIT_SHIFT_DSS_3_RO_SEL_8822E) +#define BIT_CLEAR_DSS_3_RO_SEL_8822E(x) ((x) & (~BITS_DSS_3_RO_SEL_8822E)) +#define BIT_GET_DSS_3_RO_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_DSS_3_RO_SEL_8822E) & BIT_MASK_DSS_3_RO_SEL_8822E) +#define BIT_SET_DSS_3_RO_SEL_8822E(x, v) \ + (BIT_CLEAR_DSS_3_RO_SEL_8822E(x) | BIT_DSS_3_RO_SEL_8822E(v)) + +#define BIT_SHIFT_DSS_3_DATA_IN_8822E 0 +#define BIT_MASK_DSS_3_DATA_IN_8822E 0xfffff +#define BIT_DSS_3_DATA_IN_8822E(x) \ + (((x) & BIT_MASK_DSS_3_DATA_IN_8822E) << BIT_SHIFT_DSS_3_DATA_IN_8822E) +#define BITS_DSS_3_DATA_IN_8822E \ + (BIT_MASK_DSS_3_DATA_IN_8822E << BIT_SHIFT_DSS_3_DATA_IN_8822E) +#define BIT_CLEAR_DSS_3_DATA_IN_8822E(x) ((x) & (~BITS_DSS_3_DATA_IN_8822E)) +#define BIT_GET_DSS_3_DATA_IN_8822E(x) \ + (((x) >> BIT_SHIFT_DSS_3_DATA_IN_8822E) & BIT_MASK_DSS_3_DATA_IN_8822E) +#define BIT_SET_DSS_3_DATA_IN_8822E(x, v) \ + (BIT_CLEAR_DSS_3_DATA_IN_8822E(x) | BIT_DSS_3_DATA_IN_8822E(v)) + +/* 2 REG_SPEED_SENSOR5_8822E */ +#define BIT_DSS_3_READY_8822E BIT(31) +#define BIT_DSS_3_WSORT_GO_8822E BIT(30) + +#define BIT_SHIFT_DSS_3_COUNT_OUT_8822E 0 +#define BIT_MASK_DSS_3_COUNT_OUT_8822E 0xfffff +#define BIT_DSS_3_COUNT_OUT_8822E(x) \ + (((x) & BIT_MASK_DSS_3_COUNT_OUT_8822E) \ + << BIT_SHIFT_DSS_3_COUNT_OUT_8822E) +#define BITS_DSS_3_COUNT_OUT_8822E \ + (BIT_MASK_DSS_3_COUNT_OUT_8822E << BIT_SHIFT_DSS_3_COUNT_OUT_8822E) +#define BIT_CLEAR_DSS_3_COUNT_OUT_8822E(x) ((x) & (~BITS_DSS_3_COUNT_OUT_8822E)) +#define BIT_GET_DSS_3_COUNT_OUT_8822E(x) \ + (((x) >> BIT_SHIFT_DSS_3_COUNT_OUT_8822E) & \ + BIT_MASK_DSS_3_COUNT_OUT_8822E) +#define BIT_SET_DSS_3_COUNT_OUT_8822E(x, v) \ + (BIT_CLEAR_DSS_3_COUNT_OUT_8822E(x) | BIT_DSS_3_COUNT_OUT_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_EXT_QUEUE_REG_8822E */ + +#define BIT_SHIFT_PCIE_PRIORITY_SEL_8822E 0 +#define BIT_MASK_PCIE_PRIORITY_SEL_8822E 0x3 +#define BIT_PCIE_PRIORITY_SEL_8822E(x) \ + (((x) & BIT_MASK_PCIE_PRIORITY_SEL_8822E) \ + << BIT_SHIFT_PCIE_PRIORITY_SEL_8822E) +#define BITS_PCIE_PRIORITY_SEL_8822E \ + (BIT_MASK_PCIE_PRIORITY_SEL_8822E << BIT_SHIFT_PCIE_PRIORITY_SEL_8822E) +#define BIT_CLEAR_PCIE_PRIORITY_SEL_8822E(x) \ + ((x) & (~BITS_PCIE_PRIORITY_SEL_8822E)) +#define BIT_GET_PCIE_PRIORITY_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_PRIORITY_SEL_8822E) & \ + BIT_MASK_PCIE_PRIORITY_SEL_8822E) +#define BIT_SET_PCIE_PRIORITY_SEL_8822E(x, v) \ + (BIT_CLEAR_PCIE_PRIORITY_SEL_8822E(x) | BIT_PCIE_PRIORITY_SEL_8822E(v)) + +/* 2 REG_COUNTER_CTRL_8822E */ + +#define BIT_SHIFT_COUNTER_BASE_8822E 16 +#define BIT_MASK_COUNTER_BASE_8822E 0x1fff +#define BIT_COUNTER_BASE_8822E(x) \ + (((x) & BIT_MASK_COUNTER_BASE_8822E) << BIT_SHIFT_COUNTER_BASE_8822E) +#define BITS_COUNTER_BASE_8822E \ + (BIT_MASK_COUNTER_BASE_8822E << BIT_SHIFT_COUNTER_BASE_8822E) +#define BIT_CLEAR_COUNTER_BASE_8822E(x) ((x) & (~BITS_COUNTER_BASE_8822E)) +#define BIT_GET_COUNTER_BASE_8822E(x) \ + (((x) >> BIT_SHIFT_COUNTER_BASE_8822E) & BIT_MASK_COUNTER_BASE_8822E) +#define BIT_SET_COUNTER_BASE_8822E(x, v) \ + (BIT_CLEAR_COUNTER_BASE_8822E(x) | BIT_COUNTER_BASE_8822E(v)) + +#define BIT_EN_RTS_REQ_8822E BIT(9) +#define BIT_EN_EDCA_REQ_8822E BIT(8) +#define BIT_EN_PTCL_REQ_8822E BIT(7) +#define BIT_EN_SCH_REQ_8822E BIT(6) +#define BIT_USB_COUNT_EN_8822E BIT(5) +#define BIT_PCIE_COUNT_EN_8822E BIT(4) +#define BIT_RQPN_COUNT_EN_8822E BIT(3) +#define BIT_RDE_COUNT_EN_8822E BIT(2) +#define BIT_TDE_COUNT_EN_8822E BIT(1) +#define BIT_DISABLE_COUNTER_8822E BIT(0) + +/* 2 REG_COUNTER_THRESHOLD_8822E */ +#define BIT_SEL_ALL_MACID_8822E BIT(31) + +#define BIT_SHIFT_COUNTER_MACID_8822E 24 +#define BIT_MASK_COUNTER_MACID_8822E 0x7f +#define BIT_COUNTER_MACID_8822E(x) \ + (((x) & BIT_MASK_COUNTER_MACID_8822E) << BIT_SHIFT_COUNTER_MACID_8822E) +#define BITS_COUNTER_MACID_8822E \ + (BIT_MASK_COUNTER_MACID_8822E << BIT_SHIFT_COUNTER_MACID_8822E) +#define BIT_CLEAR_COUNTER_MACID_8822E(x) ((x) & (~BITS_COUNTER_MACID_8822E)) +#define BIT_GET_COUNTER_MACID_8822E(x) \ + (((x) >> BIT_SHIFT_COUNTER_MACID_8822E) & BIT_MASK_COUNTER_MACID_8822E) +#define BIT_SET_COUNTER_MACID_8822E(x, v) \ + (BIT_CLEAR_COUNTER_MACID_8822E(x) | BIT_COUNTER_MACID_8822E(v)) + +#define BIT_SHIFT_AGG_VALUE2_8822E 16 +#define BIT_MASK_AGG_VALUE2_8822E 0x7f +#define BIT_AGG_VALUE2_8822E(x) \ + (((x) & BIT_MASK_AGG_VALUE2_8822E) << BIT_SHIFT_AGG_VALUE2_8822E) +#define BITS_AGG_VALUE2_8822E \ + (BIT_MASK_AGG_VALUE2_8822E << BIT_SHIFT_AGG_VALUE2_8822E) +#define BIT_CLEAR_AGG_VALUE2_8822E(x) ((x) & (~BITS_AGG_VALUE2_8822E)) +#define BIT_GET_AGG_VALUE2_8822E(x) \ + (((x) >> BIT_SHIFT_AGG_VALUE2_8822E) & BIT_MASK_AGG_VALUE2_8822E) +#define BIT_SET_AGG_VALUE2_8822E(x, v) \ + (BIT_CLEAR_AGG_VALUE2_8822E(x) | BIT_AGG_VALUE2_8822E(v)) + +#define BIT_SHIFT_AGG_VALUE1_8822E 8 +#define BIT_MASK_AGG_VALUE1_8822E 0x7f +#define BIT_AGG_VALUE1_8822E(x) \ + (((x) & BIT_MASK_AGG_VALUE1_8822E) << BIT_SHIFT_AGG_VALUE1_8822E) +#define BITS_AGG_VALUE1_8822E \ + (BIT_MASK_AGG_VALUE1_8822E << BIT_SHIFT_AGG_VALUE1_8822E) +#define BIT_CLEAR_AGG_VALUE1_8822E(x) ((x) & (~BITS_AGG_VALUE1_8822E)) +#define BIT_GET_AGG_VALUE1_8822E(x) \ + (((x) >> BIT_SHIFT_AGG_VALUE1_8822E) & BIT_MASK_AGG_VALUE1_8822E) +#define BIT_SET_AGG_VALUE1_8822E(x, v) \ + (BIT_CLEAR_AGG_VALUE1_8822E(x) | BIT_AGG_VALUE1_8822E(v)) + +#define BIT_SHIFT_AGG_VALUE0_8822E 0 +#define BIT_MASK_AGG_VALUE0_8822E 0x7f +#define BIT_AGG_VALUE0_8822E(x) \ + (((x) & BIT_MASK_AGG_VALUE0_8822E) << BIT_SHIFT_AGG_VALUE0_8822E) +#define BITS_AGG_VALUE0_8822E \ + (BIT_MASK_AGG_VALUE0_8822E << BIT_SHIFT_AGG_VALUE0_8822E) +#define BIT_CLEAR_AGG_VALUE0_8822E(x) ((x) & (~BITS_AGG_VALUE0_8822E)) +#define BIT_GET_AGG_VALUE0_8822E(x) \ + (((x) >> BIT_SHIFT_AGG_VALUE0_8822E) & BIT_MASK_AGG_VALUE0_8822E) +#define BIT_SET_AGG_VALUE0_8822E(x, v) \ + (BIT_CLEAR_AGG_VALUE0_8822E(x) | BIT_AGG_VALUE0_8822E(v)) + +/* 2 REG_COUNTER_SET_8822E */ + +#define BIT_SHIFT_REQUEST_RESET_8822E 16 +#define BIT_MASK_REQUEST_RESET_8822E 0xffff +#define BIT_REQUEST_RESET_8822E(x) \ + (((x) & BIT_MASK_REQUEST_RESET_8822E) << BIT_SHIFT_REQUEST_RESET_8822E) +#define BITS_REQUEST_RESET_8822E \ + (BIT_MASK_REQUEST_RESET_8822E << BIT_SHIFT_REQUEST_RESET_8822E) +#define BIT_CLEAR_REQUEST_RESET_8822E(x) ((x) & (~BITS_REQUEST_RESET_8822E)) +#define BIT_GET_REQUEST_RESET_8822E(x) \ + (((x) >> BIT_SHIFT_REQUEST_RESET_8822E) & BIT_MASK_REQUEST_RESET_8822E) +#define BIT_SET_REQUEST_RESET_8822E(x, v) \ + (BIT_CLEAR_REQUEST_RESET_8822E(x) | BIT_REQUEST_RESET_8822E(v)) + +#define BIT_SHIFT_REQUEST_START_8822E 0 +#define BIT_MASK_REQUEST_START_8822E 0xffff +#define BIT_REQUEST_START_8822E(x) \ + (((x) & BIT_MASK_REQUEST_START_8822E) << BIT_SHIFT_REQUEST_START_8822E) +#define BITS_REQUEST_START_8822E \ + (BIT_MASK_REQUEST_START_8822E << BIT_SHIFT_REQUEST_START_8822E) +#define BIT_CLEAR_REQUEST_START_8822E(x) ((x) & (~BITS_REQUEST_START_8822E)) +#define BIT_GET_REQUEST_START_8822E(x) \ + (((x) >> BIT_SHIFT_REQUEST_START_8822E) & BIT_MASK_REQUEST_START_8822E) +#define BIT_SET_REQUEST_START_8822E(x, v) \ + (BIT_CLEAR_REQUEST_START_8822E(x) | BIT_REQUEST_START_8822E(v)) + +/* 2 REG_COUNTER_OVERFLOW_8822E */ + +#define BIT_SHIFT_CNT_OVF_REG_8822E 0 +#define BIT_MASK_CNT_OVF_REG_8822E 0xffff +#define BIT_CNT_OVF_REG_8822E(x) \ + (((x) & BIT_MASK_CNT_OVF_REG_8822E) << BIT_SHIFT_CNT_OVF_REG_8822E) +#define BITS_CNT_OVF_REG_8822E \ + (BIT_MASK_CNT_OVF_REG_8822E << BIT_SHIFT_CNT_OVF_REG_8822E) +#define BIT_CLEAR_CNT_OVF_REG_8822E(x) ((x) & (~BITS_CNT_OVF_REG_8822E)) +#define BIT_GET_CNT_OVF_REG_8822E(x) \ + (((x) >> BIT_SHIFT_CNT_OVF_REG_8822E) & BIT_MASK_CNT_OVF_REG_8822E) +#define BIT_SET_CNT_OVF_REG_8822E(x, v) \ + (BIT_CLEAR_CNT_OVF_REG_8822E(x) | BIT_CNT_OVF_REG_8822E(v)) + +/* 2 REG_TXDMA_LEN_THRESHOLD_8822E */ + +#define BIT_SHIFT_TDE_LEN_TH1_8822E 16 +#define BIT_MASK_TDE_LEN_TH1_8822E 0xffff +#define BIT_TDE_LEN_TH1_8822E(x) \ + (((x) & BIT_MASK_TDE_LEN_TH1_8822E) << BIT_SHIFT_TDE_LEN_TH1_8822E) +#define BITS_TDE_LEN_TH1_8822E \ + (BIT_MASK_TDE_LEN_TH1_8822E << BIT_SHIFT_TDE_LEN_TH1_8822E) +#define BIT_CLEAR_TDE_LEN_TH1_8822E(x) ((x) & (~BITS_TDE_LEN_TH1_8822E)) +#define BIT_GET_TDE_LEN_TH1_8822E(x) \ + (((x) >> BIT_SHIFT_TDE_LEN_TH1_8822E) & BIT_MASK_TDE_LEN_TH1_8822E) +#define BIT_SET_TDE_LEN_TH1_8822E(x, v) \ + (BIT_CLEAR_TDE_LEN_TH1_8822E(x) | BIT_TDE_LEN_TH1_8822E(v)) + +#define BIT_SHIFT_TDE_LEN_TH0_8822E 0 +#define BIT_MASK_TDE_LEN_TH0_8822E 0xffff +#define BIT_TDE_LEN_TH0_8822E(x) \ + (((x) & BIT_MASK_TDE_LEN_TH0_8822E) << BIT_SHIFT_TDE_LEN_TH0_8822E) +#define BITS_TDE_LEN_TH0_8822E \ + (BIT_MASK_TDE_LEN_TH0_8822E << BIT_SHIFT_TDE_LEN_TH0_8822E) +#define BIT_CLEAR_TDE_LEN_TH0_8822E(x) ((x) & (~BITS_TDE_LEN_TH0_8822E)) +#define BIT_GET_TDE_LEN_TH0_8822E(x) \ + (((x) >> BIT_SHIFT_TDE_LEN_TH0_8822E) & BIT_MASK_TDE_LEN_TH0_8822E) +#define BIT_SET_TDE_LEN_TH0_8822E(x, v) \ + (BIT_CLEAR_TDE_LEN_TH0_8822E(x) | BIT_TDE_LEN_TH0_8822E(v)) + +/* 2 REG_RXDMA_LEN_THRESHOLD_8822E */ + +#define BIT_SHIFT_RDE_LEN_TH1_8822E 16 +#define BIT_MASK_RDE_LEN_TH1_8822E 0xffff +#define BIT_RDE_LEN_TH1_8822E(x) \ + (((x) & BIT_MASK_RDE_LEN_TH1_8822E) << BIT_SHIFT_RDE_LEN_TH1_8822E) +#define BITS_RDE_LEN_TH1_8822E \ + (BIT_MASK_RDE_LEN_TH1_8822E << BIT_SHIFT_RDE_LEN_TH1_8822E) +#define BIT_CLEAR_RDE_LEN_TH1_8822E(x) ((x) & (~BITS_RDE_LEN_TH1_8822E)) +#define BIT_GET_RDE_LEN_TH1_8822E(x) \ + (((x) >> BIT_SHIFT_RDE_LEN_TH1_8822E) & BIT_MASK_RDE_LEN_TH1_8822E) +#define BIT_SET_RDE_LEN_TH1_8822E(x, v) \ + (BIT_CLEAR_RDE_LEN_TH1_8822E(x) | BIT_RDE_LEN_TH1_8822E(v)) + +#define BIT_SHIFT_RDE_LEN_TH0_8822E 0 +#define BIT_MASK_RDE_LEN_TH0_8822E 0xffff +#define BIT_RDE_LEN_TH0_8822E(x) \ + (((x) & BIT_MASK_RDE_LEN_TH0_8822E) << BIT_SHIFT_RDE_LEN_TH0_8822E) +#define BITS_RDE_LEN_TH0_8822E \ + (BIT_MASK_RDE_LEN_TH0_8822E << BIT_SHIFT_RDE_LEN_TH0_8822E) +#define BIT_CLEAR_RDE_LEN_TH0_8822E(x) ((x) & (~BITS_RDE_LEN_TH0_8822E)) +#define BIT_GET_RDE_LEN_TH0_8822E(x) \ + (((x) >> BIT_SHIFT_RDE_LEN_TH0_8822E) & BIT_MASK_RDE_LEN_TH0_8822E) +#define BIT_SET_RDE_LEN_TH0_8822E(x, v) \ + (BIT_CLEAR_RDE_LEN_TH0_8822E(x) | BIT_RDE_LEN_TH0_8822E(v)) + +/* 2 REG_PCIE_EXEC_TIME_THRESHOLD_8822E */ + +#define BIT_SHIFT_COUNT_INT_SEL_8822E 16 +#define BIT_MASK_COUNT_INT_SEL_8822E 0x3 +#define BIT_COUNT_INT_SEL_8822E(x) \ + (((x) & BIT_MASK_COUNT_INT_SEL_8822E) << BIT_SHIFT_COUNT_INT_SEL_8822E) +#define BITS_COUNT_INT_SEL_8822E \ + (BIT_MASK_COUNT_INT_SEL_8822E << BIT_SHIFT_COUNT_INT_SEL_8822E) +#define BIT_CLEAR_COUNT_INT_SEL_8822E(x) ((x) & (~BITS_COUNT_INT_SEL_8822E)) +#define BIT_GET_COUNT_INT_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_COUNT_INT_SEL_8822E) & BIT_MASK_COUNT_INT_SEL_8822E) +#define BIT_SET_COUNT_INT_SEL_8822E(x, v) \ + (BIT_CLEAR_COUNT_INT_SEL_8822E(x) | BIT_COUNT_INT_SEL_8822E(v)) + +#define BIT_SHIFT_EXEC_TIME_TH_8822E 0 +#define BIT_MASK_EXEC_TIME_TH_8822E 0xffff +#define BIT_EXEC_TIME_TH_8822E(x) \ + (((x) & BIT_MASK_EXEC_TIME_TH_8822E) << BIT_SHIFT_EXEC_TIME_TH_8822E) +#define BITS_EXEC_TIME_TH_8822E \ + (BIT_MASK_EXEC_TIME_TH_8822E << BIT_SHIFT_EXEC_TIME_TH_8822E) +#define BIT_CLEAR_EXEC_TIME_TH_8822E(x) ((x) & (~BITS_EXEC_TIME_TH_8822E)) +#define BIT_GET_EXEC_TIME_TH_8822E(x) \ + (((x) >> BIT_SHIFT_EXEC_TIME_TH_8822E) & BIT_MASK_EXEC_TIME_TH_8822E) +#define BIT_SET_EXEC_TIME_TH_8822E(x, v) \ + (BIT_CLEAR_EXEC_TIME_TH_8822E(x) | BIT_EXEC_TIME_TH_8822E(v)) + +/* 2 REG_FT2IMR_8822E */ +#define BIT_FS_CLI3_RX_UAPSDMD1_EN_8822E BIT(31) +#define BIT_FS_CLI3_RX_UAPSDMD0_EN_8822E BIT(30) +#define BIT_FS_CLI3_TRIGGER_PKT_EN_8822E BIT(29) +#define BIT_FS_CLI3_EOSP_INT_EN_8822E BIT(28) +#define BIT_FS_CLI2_RX_UAPSDMD1_EN_8822E BIT(27) +#define BIT_FS_CLI2_RX_UAPSDMD0_EN_8822E BIT(26) +#define BIT_FS_CLI2_TRIGGER_PKT_EN_8822E BIT(25) +#define BIT_FS_CLI2_EOSP_INT_EN_8822E BIT(24) +#define BIT_FS_CLI1_RX_UAPSDMD1_EN_8822E BIT(23) +#define BIT_FS_CLI1_RX_UAPSDMD0_EN_8822E BIT(22) +#define BIT_FS_CLI1_TRIGGER_PKT_EN_8822E BIT(21) +#define BIT_FS_CLI1_EOSP_INT_EN_8822E BIT(20) +#define BIT_FS_CLI0_RX_UAPSDMD1_EN_8822E BIT(19) +#define BIT_FS_CLI0_RX_UAPSDMD0_EN_8822E BIT(18) +#define BIT_FS_CLI0_TRIGGER_PKT_EN_8822E BIT(17) +#define BIT_FS_CLI0_EOSP_INT_EN_8822E BIT(16) +#define BIT_FS_TSF_BIT32_TOGGLE_P2P2_EN_8822E BIT(9) +#define BIT_FS_TSF_BIT32_TOGGLE_P2P1_EN_8822E BIT(8) +#define BIT_FS_CLI3_TX_NULL1_INT_EN_8822E BIT(7) +#define BIT_FS_CLI3_TX_NULL0_INT_EN_8822E BIT(6) +#define BIT_FS_CLI2_TX_NULL1_INT_EN_8822E BIT(5) +#define BIT_FS_CLI2_TX_NULL0_INT_EN_8822E BIT(4) +#define BIT_FS_CLI1_TX_NULL1_INT_EN_8822E BIT(3) +#define BIT_FS_CLI1_TX_NULL0_INT_EN_8822E BIT(2) +#define BIT_FS_CLI0_TX_NULL1_INT_EN_8822E BIT(1) +#define BIT_FS_CLI0_TX_NULL0_INT_EN_8822E BIT(0) + +/* 2 REG_FT2ISR_8822E */ +#define BIT_FS_CLI3_RX_UAPSDMD1_INT_8822E BIT(31) +#define BIT_FS_CLI3_RX_UAPSDMD0_INT_8822E BIT(30) +#define BIT_FS_CLI3_TRIGGER_PKT_INT_8822E BIT(29) +#define BIT_FS_CLI3_EOSP_INT_8822E BIT(28) +#define BIT_FS_CLI2_RX_UAPSDMD1_INT_8822E BIT(27) +#define BIT_FS_CLI2_RX_UAPSDMD0_INT_8822E BIT(26) +#define BIT_FS_CLI2_TRIGGER_PKT_INT_8822E BIT(25) +#define BIT_FS_CLI2_EOSP_INT_8822E BIT(24) +#define BIT_FS_CLI1_RX_UAPSDMD1_INT_8822E BIT(23) +#define BIT_FS_CLI1_RX_UAPSDMD0_INT_8822E BIT(22) +#define BIT_FS_CLI1_TRIGGER_PKT_INT_8822E BIT(21) +#define BIT_FS_CLI1_EOSP_INT_8822E BIT(20) +#define BIT_FS_CLI0_RX_UAPSDMD1_INT_8822E BIT(19) +#define BIT_FS_CLI0_RX_UAPSDMD0_INT_8822E BIT(18) +#define BIT_FS_CLI0_TRIGGER_PKT_INT_8822E BIT(17) +#define BIT_FS_CLI0_EOSP_INT_8822E BIT(16) +#define BIT_FS_TSF_BIT32_TOGGLE_P2P2_INT_8822E BIT(9) +#define BIT_FS_TSF_BIT32_TOGGLE_P2P1_INT_8822E BIT(8) +#define BIT_FS_CLI3_TX_NULL1_INT_8822E BIT(7) +#define BIT_FS_CLI3_TX_NULL0_INT_8822E BIT(6) +#define BIT_FS_CLI2_TX_NULL1_INT_8822E BIT(5) +#define BIT_FS_CLI2_TX_NULL0_INT_8822E BIT(4) +#define BIT_FS_CLI1_TX_NULL1_INT_8822E BIT(3) +#define BIT_FS_CLI1_TX_NULL0_INT_8822E BIT(2) +#define BIT_FS_CLI0_TX_NULL1_INT_8822E BIT(1) +#define BIT_FS_CLI0_TX_NULL0_INT_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_MSG2_8822E */ + +#define BIT_SHIFT_FW_MSG2_8822E 0 +#define BIT_MASK_FW_MSG2_8822E 0xffffffffL +#define BIT_FW_MSG2_8822E(x) \ + (((x) & BIT_MASK_FW_MSG2_8822E) << BIT_SHIFT_FW_MSG2_8822E) +#define BITS_FW_MSG2_8822E (BIT_MASK_FW_MSG2_8822E << BIT_SHIFT_FW_MSG2_8822E) +#define BIT_CLEAR_FW_MSG2_8822E(x) ((x) & (~BITS_FW_MSG2_8822E)) +#define BIT_GET_FW_MSG2_8822E(x) \ + (((x) >> BIT_SHIFT_FW_MSG2_8822E) & BIT_MASK_FW_MSG2_8822E) +#define BIT_SET_FW_MSG2_8822E(x, v) \ + (BIT_CLEAR_FW_MSG2_8822E(x) | BIT_FW_MSG2_8822E(v)) + +/* 2 REG_MSG3_8822E */ + +#define BIT_SHIFT_FW_MSG3_8822E 0 +#define BIT_MASK_FW_MSG3_8822E 0xffffffffL +#define BIT_FW_MSG3_8822E(x) \ + (((x) & BIT_MASK_FW_MSG3_8822E) << BIT_SHIFT_FW_MSG3_8822E) +#define BITS_FW_MSG3_8822E (BIT_MASK_FW_MSG3_8822E << BIT_SHIFT_FW_MSG3_8822E) +#define BIT_CLEAR_FW_MSG3_8822E(x) ((x) & (~BITS_FW_MSG3_8822E)) +#define BIT_GET_FW_MSG3_8822E(x) \ + (((x) >> BIT_SHIFT_FW_MSG3_8822E) & BIT_MASK_FW_MSG3_8822E) +#define BIT_SET_FW_MSG3_8822E(x, v) \ + (BIT_CLEAR_FW_MSG3_8822E(x) | BIT_FW_MSG3_8822E(v)) + +/* 2 REG_MSG4_8822E */ + +#define BIT_SHIFT_FW_MSG4_8822E 0 +#define BIT_MASK_FW_MSG4_8822E 0xffffffffL +#define BIT_FW_MSG4_8822E(x) \ + (((x) & BIT_MASK_FW_MSG4_8822E) << BIT_SHIFT_FW_MSG4_8822E) +#define BITS_FW_MSG4_8822E (BIT_MASK_FW_MSG4_8822E << BIT_SHIFT_FW_MSG4_8822E) +#define BIT_CLEAR_FW_MSG4_8822E(x) ((x) & (~BITS_FW_MSG4_8822E)) +#define BIT_GET_FW_MSG4_8822E(x) \ + (((x) >> BIT_SHIFT_FW_MSG4_8822E) & BIT_MASK_FW_MSG4_8822E) +#define BIT_SET_FW_MSG4_8822E(x, v) \ + (BIT_CLEAR_FW_MSG4_8822E(x) | BIT_FW_MSG4_8822E(v)) + +/* 2 REG_MSG5_8822E */ + +#define BIT_SHIFT_FW_MSG5_8822E 0 +#define BIT_MASK_FW_MSG5_8822E 0xffffffffL +#define BIT_FW_MSG5_8822E(x) \ + (((x) & BIT_MASK_FW_MSG5_8822E) << BIT_SHIFT_FW_MSG5_8822E) +#define BITS_FW_MSG5_8822E (BIT_MASK_FW_MSG5_8822E << BIT_SHIFT_FW_MSG5_8822E) +#define BIT_CLEAR_FW_MSG5_8822E(x) ((x) & (~BITS_FW_MSG5_8822E)) +#define BIT_GET_FW_MSG5_8822E(x) \ + (((x) >> BIT_SHIFT_FW_MSG5_8822E) & BIT_MASK_FW_MSG5_8822E) +#define BIT_SET_FW_MSG5_8822E(x, v) \ + (BIT_CLEAR_FW_MSG5_8822E(x) | BIT_FW_MSG5_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_FIFOPAGE_CTRL_1_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_TX_OQT_HE_FREE_SPACE_V1_8822E 16 +#define BIT_MASK_TX_OQT_HE_FREE_SPACE_V1_8822E 0xff +#define BIT_TX_OQT_HE_FREE_SPACE_V1_8822E(x) \ + (((x) & BIT_MASK_TX_OQT_HE_FREE_SPACE_V1_8822E) \ + << BIT_SHIFT_TX_OQT_HE_FREE_SPACE_V1_8822E) +#define BITS_TX_OQT_HE_FREE_SPACE_V1_8822E \ + (BIT_MASK_TX_OQT_HE_FREE_SPACE_V1_8822E \ + << BIT_SHIFT_TX_OQT_HE_FREE_SPACE_V1_8822E) +#define BIT_CLEAR_TX_OQT_HE_FREE_SPACE_V1_8822E(x) \ + ((x) & (~BITS_TX_OQT_HE_FREE_SPACE_V1_8822E)) +#define BIT_GET_TX_OQT_HE_FREE_SPACE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TX_OQT_HE_FREE_SPACE_V1_8822E) & \ + BIT_MASK_TX_OQT_HE_FREE_SPACE_V1_8822E) +#define BIT_SET_TX_OQT_HE_FREE_SPACE_V1_8822E(x, v) \ + (BIT_CLEAR_TX_OQT_HE_FREE_SPACE_V1_8822E(x) | \ + BIT_TX_OQT_HE_FREE_SPACE_V1_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_TX_OQT_NL_FREE_SPACE_V1_8822E 0 +#define BIT_MASK_TX_OQT_NL_FREE_SPACE_V1_8822E 0xff +#define BIT_TX_OQT_NL_FREE_SPACE_V1_8822E(x) \ + (((x) & BIT_MASK_TX_OQT_NL_FREE_SPACE_V1_8822E) \ + << BIT_SHIFT_TX_OQT_NL_FREE_SPACE_V1_8822E) +#define BITS_TX_OQT_NL_FREE_SPACE_V1_8822E \ + (BIT_MASK_TX_OQT_NL_FREE_SPACE_V1_8822E \ + << BIT_SHIFT_TX_OQT_NL_FREE_SPACE_V1_8822E) +#define BIT_CLEAR_TX_OQT_NL_FREE_SPACE_V1_8822E(x) \ + ((x) & (~BITS_TX_OQT_NL_FREE_SPACE_V1_8822E)) +#define BIT_GET_TX_OQT_NL_FREE_SPACE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TX_OQT_NL_FREE_SPACE_V1_8822E) & \ + BIT_MASK_TX_OQT_NL_FREE_SPACE_V1_8822E) +#define BIT_SET_TX_OQT_NL_FREE_SPACE_V1_8822E(x, v) \ + (BIT_CLEAR_TX_OQT_NL_FREE_SPACE_V1_8822E(x) | \ + BIT_TX_OQT_NL_FREE_SPACE_V1_8822E(v)) + +/* 2 REG_FIFOPAGE_CTRL_2_8822E */ +#define BIT_BCN_VALID_1_V1_8822E BIT(31) + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_BCN_HEAD_1_V1_8822E 16 +#define BIT_MASK_BCN_HEAD_1_V1_8822E 0xfff +#define BIT_BCN_HEAD_1_V1_8822E(x) \ + (((x) & BIT_MASK_BCN_HEAD_1_V1_8822E) << BIT_SHIFT_BCN_HEAD_1_V1_8822E) +#define BITS_BCN_HEAD_1_V1_8822E \ + (BIT_MASK_BCN_HEAD_1_V1_8822E << BIT_SHIFT_BCN_HEAD_1_V1_8822E) +#define BIT_CLEAR_BCN_HEAD_1_V1_8822E(x) ((x) & (~BITS_BCN_HEAD_1_V1_8822E)) +#define BIT_GET_BCN_HEAD_1_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BCN_HEAD_1_V1_8822E) & BIT_MASK_BCN_HEAD_1_V1_8822E) +#define BIT_SET_BCN_HEAD_1_V1_8822E(x, v) \ + (BIT_CLEAR_BCN_HEAD_1_V1_8822E(x) | BIT_BCN_HEAD_1_V1_8822E(v)) + +#define BIT_BCN_VALID_V1_8822E BIT(15) + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_BCN_HEAD_V1_8822E 0 +#define BIT_MASK_BCN_HEAD_V1_8822E 0xfff +#define BIT_BCN_HEAD_V1_8822E(x) \ + (((x) & BIT_MASK_BCN_HEAD_V1_8822E) << BIT_SHIFT_BCN_HEAD_V1_8822E) +#define BITS_BCN_HEAD_V1_8822E \ + (BIT_MASK_BCN_HEAD_V1_8822E << BIT_SHIFT_BCN_HEAD_V1_8822E) +#define BIT_CLEAR_BCN_HEAD_V1_8822E(x) ((x) & (~BITS_BCN_HEAD_V1_8822E)) +#define BIT_GET_BCN_HEAD_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BCN_HEAD_V1_8822E) & BIT_MASK_BCN_HEAD_V1_8822E) +#define BIT_SET_BCN_HEAD_V1_8822E(x, v) \ + (BIT_CLEAR_BCN_HEAD_V1_8822E(x) | BIT_BCN_HEAD_V1_8822E(v)) + +/* 2 REG_AUTO_LLT_V1_8822E */ + +#define BIT_SHIFT_MAX_TX_PKT_V1_8822E 24 +#define BIT_MASK_MAX_TX_PKT_V1_8822E 0xff +#define BIT_MAX_TX_PKT_V1_8822E(x) \ + (((x) & BIT_MASK_MAX_TX_PKT_V1_8822E) << BIT_SHIFT_MAX_TX_PKT_V1_8822E) +#define BITS_MAX_TX_PKT_V1_8822E \ + (BIT_MASK_MAX_TX_PKT_V1_8822E << BIT_SHIFT_MAX_TX_PKT_V1_8822E) +#define BIT_CLEAR_MAX_TX_PKT_V1_8822E(x) ((x) & (~BITS_MAX_TX_PKT_V1_8822E)) +#define BIT_GET_MAX_TX_PKT_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_TX_PKT_V1_8822E) & BIT_MASK_MAX_TX_PKT_V1_8822E) +#define BIT_SET_MAX_TX_PKT_V1_8822E(x, v) \ + (BIT_CLEAR_MAX_TX_PKT_V1_8822E(x) | BIT_MAX_TX_PKT_V1_8822E(v)) + +#define BIT_TDE_ERROR_STOP_V1_8822E BIT(23) + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_LLT_FREE_PAGE_V2_8822E 8 +#define BIT_MASK_LLT_FREE_PAGE_V2_8822E 0xfff +#define BIT_LLT_FREE_PAGE_V2_8822E(x) \ + (((x) & BIT_MASK_LLT_FREE_PAGE_V2_8822E) \ + << BIT_SHIFT_LLT_FREE_PAGE_V2_8822E) +#define BITS_LLT_FREE_PAGE_V2_8822E \ + (BIT_MASK_LLT_FREE_PAGE_V2_8822E << BIT_SHIFT_LLT_FREE_PAGE_V2_8822E) +#define BIT_CLEAR_LLT_FREE_PAGE_V2_8822E(x) \ + ((x) & (~BITS_LLT_FREE_PAGE_V2_8822E)) +#define BIT_GET_LLT_FREE_PAGE_V2_8822E(x) \ + (((x) >> BIT_SHIFT_LLT_FREE_PAGE_V2_8822E) & \ + BIT_MASK_LLT_FREE_PAGE_V2_8822E) +#define BIT_SET_LLT_FREE_PAGE_V2_8822E(x, v) \ + (BIT_CLEAR_LLT_FREE_PAGE_V2_8822E(x) | BIT_LLT_FREE_PAGE_V2_8822E(v)) + +#define BIT_SHIFT_BLK_DESC_NUM_8822E 4 +#define BIT_MASK_BLK_DESC_NUM_8822E 0xf +#define BIT_BLK_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_BLK_DESC_NUM_8822E) << BIT_SHIFT_BLK_DESC_NUM_8822E) +#define BITS_BLK_DESC_NUM_8822E \ + (BIT_MASK_BLK_DESC_NUM_8822E << BIT_SHIFT_BLK_DESC_NUM_8822E) +#define BIT_CLEAR_BLK_DESC_NUM_8822E(x) ((x) & (~BITS_BLK_DESC_NUM_8822E)) +#define BIT_GET_BLK_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_BLK_DESC_NUM_8822E) & BIT_MASK_BLK_DESC_NUM_8822E) +#define BIT_SET_BLK_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_BLK_DESC_NUM_8822E(x) | BIT_BLK_DESC_NUM_8822E(v)) + +#define BIT_R_BCN_HEAD_SEL_8822E BIT(3) +#define BIT_R_EN_BCN_SW_HEAD_SEL_8822E BIT(2) +#define BIT_LLT_DBG_SEL_8822E BIT(1) +#define BIT_AUTO_INIT_LLT_V1_8822E BIT(0) + +/* 2 REG_TXDMA_OFFSET_CHK_8822E */ +#define BIT_EM_CHKSUM_FIN_8822E BIT(31) +#define BIT_EMN_PCIE_DMA_MOD_8822E BIT(30) +#define BIT_EN_TXQUE_CLR_8822E BIT(29) +#define BIT_EN_PCIE_FIFO_MODE_8822E BIT(28) + +#define BIT_SHIFT_PG_UNDER_TH_V1_8822E 16 +#define BIT_MASK_PG_UNDER_TH_V1_8822E 0xfff +#define BIT_PG_UNDER_TH_V1_8822E(x) \ + (((x) & BIT_MASK_PG_UNDER_TH_V1_8822E) \ + << BIT_SHIFT_PG_UNDER_TH_V1_8822E) +#define BITS_PG_UNDER_TH_V1_8822E \ + (BIT_MASK_PG_UNDER_TH_V1_8822E << BIT_SHIFT_PG_UNDER_TH_V1_8822E) +#define BIT_CLEAR_PG_UNDER_TH_V1_8822E(x) ((x) & (~BITS_PG_UNDER_TH_V1_8822E)) +#define BIT_GET_PG_UNDER_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PG_UNDER_TH_V1_8822E) & \ + BIT_MASK_PG_UNDER_TH_V1_8822E) +#define BIT_SET_PG_UNDER_TH_V1_8822E(x, v) \ + (BIT_CLEAR_PG_UNDER_TH_V1_8822E(x) | BIT_PG_UNDER_TH_V1_8822E(v)) + +#define BIT_R_EN_RESET_RESTORE_H2C_8822E BIT(15) +#define BIT_SDIO_TDE_FINISH_8822E BIT(14) +#define BIT_SDIO_TXDESC_CHKSUM_EN_8822E BIT(13) +#define BIT_RST_RDPTR_8822E BIT(12) +#define BIT_RST_WRPTR_8822E BIT(11) +#define BIT_CHK_PG_TH_EN_8822E BIT(10) +#define BIT_DROP_DATA_EN_8822E BIT(9) +#define BIT_CHECK_OFFSET_EN_8822E BIT(8) + +#define BIT_SHIFT_CHECK_OFFSET_8822E 0 +#define BIT_MASK_CHECK_OFFSET_8822E 0xff +#define BIT_CHECK_OFFSET_8822E(x) \ + (((x) & BIT_MASK_CHECK_OFFSET_8822E) << BIT_SHIFT_CHECK_OFFSET_8822E) +#define BITS_CHECK_OFFSET_8822E \ + (BIT_MASK_CHECK_OFFSET_8822E << BIT_SHIFT_CHECK_OFFSET_8822E) +#define BIT_CLEAR_CHECK_OFFSET_8822E(x) ((x) & (~BITS_CHECK_OFFSET_8822E)) +#define BIT_GET_CHECK_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_CHECK_OFFSET_8822E) & BIT_MASK_CHECK_OFFSET_8822E) +#define BIT_SET_CHECK_OFFSET_8822E(x, v) \ + (BIT_CLEAR_CHECK_OFFSET_8822E(x) | BIT_CHECK_OFFSET_8822E(v)) + +/* 2 REG_TXDMA_STATUS_8822E */ +#define BIT_TXPKTBUF_REQ_ERR_8822E BIT(18) +#define BIT_HI_OQT_UDN_8822E BIT(17) +#define BIT_HI_OQT_OVF_8822E BIT(16) +#define BIT_PAYLOAD_CHKSUM_ERR_8822E BIT(15) +#define BIT_PAYLOAD_UDN_8822E BIT(14) +#define BIT_PAYLOAD_OVF_8822E BIT(13) +#define BIT_DSC_CHKSUM_FAIL_8822E BIT(12) +#define BIT_UNKNOWN_QSEL_8822E BIT(11) +#define BIT_EP_QSEL_DIFF_8822E BIT(10) +#define BIT_TX_OFFS_UNMATCH_8822E BIT(9) +#define BIT_TXOQT_UDN_8822E BIT(8) +#define BIT_TXOQT_OVF_8822E BIT(7) +#define BIT_TXDMA_SFF_UDN_8822E BIT(6) +#define BIT_TXDMA_SFF_OVF_8822E BIT(5) +#define BIT_LLT_NULL_PG_8822E BIT(4) +#define BIT_PAGE_UDN_8822E BIT(3) +#define BIT_PAGE_OVF_8822E BIT(2) +#define BIT_TXFF_PG_UDN_8822E BIT(1) +#define BIT_TXFF_PG_OVF_8822E BIT(0) + +/* 2 REG_TX_DMA_DBG_8822E */ + +/* 2 REG_TQPNT1_8822E */ +#define BIT_HPQ_INT_EN_8822E BIT(31) + +#define BIT_SHIFT_HPQ_HIGH_TH_V1_8822E 16 +#define BIT_MASK_HPQ_HIGH_TH_V1_8822E 0xfff +#define BIT_HPQ_HIGH_TH_V1_8822E(x) \ + (((x) & BIT_MASK_HPQ_HIGH_TH_V1_8822E) \ + << BIT_SHIFT_HPQ_HIGH_TH_V1_8822E) +#define BITS_HPQ_HIGH_TH_V1_8822E \ + (BIT_MASK_HPQ_HIGH_TH_V1_8822E << BIT_SHIFT_HPQ_HIGH_TH_V1_8822E) +#define BIT_CLEAR_HPQ_HIGH_TH_V1_8822E(x) ((x) & (~BITS_HPQ_HIGH_TH_V1_8822E)) +#define BIT_GET_HPQ_HIGH_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HPQ_HIGH_TH_V1_8822E) & \ + BIT_MASK_HPQ_HIGH_TH_V1_8822E) +#define BIT_SET_HPQ_HIGH_TH_V1_8822E(x, v) \ + (BIT_CLEAR_HPQ_HIGH_TH_V1_8822E(x) | BIT_HPQ_HIGH_TH_V1_8822E(v)) + +#define BIT_SHIFT_HPQ_LOW_TH_V1_8822E 0 +#define BIT_MASK_HPQ_LOW_TH_V1_8822E 0xfff +#define BIT_HPQ_LOW_TH_V1_8822E(x) \ + (((x) & BIT_MASK_HPQ_LOW_TH_V1_8822E) << BIT_SHIFT_HPQ_LOW_TH_V1_8822E) +#define BITS_HPQ_LOW_TH_V1_8822E \ + (BIT_MASK_HPQ_LOW_TH_V1_8822E << BIT_SHIFT_HPQ_LOW_TH_V1_8822E) +#define BIT_CLEAR_HPQ_LOW_TH_V1_8822E(x) ((x) & (~BITS_HPQ_LOW_TH_V1_8822E)) +#define BIT_GET_HPQ_LOW_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HPQ_LOW_TH_V1_8822E) & BIT_MASK_HPQ_LOW_TH_V1_8822E) +#define BIT_SET_HPQ_LOW_TH_V1_8822E(x, v) \ + (BIT_CLEAR_HPQ_LOW_TH_V1_8822E(x) | BIT_HPQ_LOW_TH_V1_8822E(v)) + +/* 2 REG_TQPNT2_8822E */ +#define BIT_NPQ_INT_EN_8822E BIT(31) + +#define BIT_SHIFT_NPQ_HIGH_TH_V1_8822E 16 +#define BIT_MASK_NPQ_HIGH_TH_V1_8822E 0xfff +#define BIT_NPQ_HIGH_TH_V1_8822E(x) \ + (((x) & BIT_MASK_NPQ_HIGH_TH_V1_8822E) \ + << BIT_SHIFT_NPQ_HIGH_TH_V1_8822E) +#define BITS_NPQ_HIGH_TH_V1_8822E \ + (BIT_MASK_NPQ_HIGH_TH_V1_8822E << BIT_SHIFT_NPQ_HIGH_TH_V1_8822E) +#define BIT_CLEAR_NPQ_HIGH_TH_V1_8822E(x) ((x) & (~BITS_NPQ_HIGH_TH_V1_8822E)) +#define BIT_GET_NPQ_HIGH_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_NPQ_HIGH_TH_V1_8822E) & \ + BIT_MASK_NPQ_HIGH_TH_V1_8822E) +#define BIT_SET_NPQ_HIGH_TH_V1_8822E(x, v) \ + (BIT_CLEAR_NPQ_HIGH_TH_V1_8822E(x) | BIT_NPQ_HIGH_TH_V1_8822E(v)) + +#define BIT_SHIFT_NPQ_LOW_TH_V1_8822E 0 +#define BIT_MASK_NPQ_LOW_TH_V1_8822E 0xfff +#define BIT_NPQ_LOW_TH_V1_8822E(x) \ + (((x) & BIT_MASK_NPQ_LOW_TH_V1_8822E) << BIT_SHIFT_NPQ_LOW_TH_V1_8822E) +#define BITS_NPQ_LOW_TH_V1_8822E \ + (BIT_MASK_NPQ_LOW_TH_V1_8822E << BIT_SHIFT_NPQ_LOW_TH_V1_8822E) +#define BIT_CLEAR_NPQ_LOW_TH_V1_8822E(x) ((x) & (~BITS_NPQ_LOW_TH_V1_8822E)) +#define BIT_GET_NPQ_LOW_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_NPQ_LOW_TH_V1_8822E) & BIT_MASK_NPQ_LOW_TH_V1_8822E) +#define BIT_SET_NPQ_LOW_TH_V1_8822E(x, v) \ + (BIT_CLEAR_NPQ_LOW_TH_V1_8822E(x) | BIT_NPQ_LOW_TH_V1_8822E(v)) + +/* 2 REG_TQPNT3_8822E */ +#define BIT_LPQ_INT_EN_8822E BIT(31) + +#define BIT_SHIFT_LPQ_HIGH_TH_V1_8822E 16 +#define BIT_MASK_LPQ_HIGH_TH_V1_8822E 0xfff +#define BIT_LPQ_HIGH_TH_V1_8822E(x) \ + (((x) & BIT_MASK_LPQ_HIGH_TH_V1_8822E) \ + << BIT_SHIFT_LPQ_HIGH_TH_V1_8822E) +#define BITS_LPQ_HIGH_TH_V1_8822E \ + (BIT_MASK_LPQ_HIGH_TH_V1_8822E << BIT_SHIFT_LPQ_HIGH_TH_V1_8822E) +#define BIT_CLEAR_LPQ_HIGH_TH_V1_8822E(x) ((x) & (~BITS_LPQ_HIGH_TH_V1_8822E)) +#define BIT_GET_LPQ_HIGH_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_LPQ_HIGH_TH_V1_8822E) & \ + BIT_MASK_LPQ_HIGH_TH_V1_8822E) +#define BIT_SET_LPQ_HIGH_TH_V1_8822E(x, v) \ + (BIT_CLEAR_LPQ_HIGH_TH_V1_8822E(x) | BIT_LPQ_HIGH_TH_V1_8822E(v)) + +#define BIT_SHIFT_LPQ_LOW_TH_V1_8822E 0 +#define BIT_MASK_LPQ_LOW_TH_V1_8822E 0xfff +#define BIT_LPQ_LOW_TH_V1_8822E(x) \ + (((x) & BIT_MASK_LPQ_LOW_TH_V1_8822E) << BIT_SHIFT_LPQ_LOW_TH_V1_8822E) +#define BITS_LPQ_LOW_TH_V1_8822E \ + (BIT_MASK_LPQ_LOW_TH_V1_8822E << BIT_SHIFT_LPQ_LOW_TH_V1_8822E) +#define BIT_CLEAR_LPQ_LOW_TH_V1_8822E(x) ((x) & (~BITS_LPQ_LOW_TH_V1_8822E)) +#define BIT_GET_LPQ_LOW_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_LPQ_LOW_TH_V1_8822E) & BIT_MASK_LPQ_LOW_TH_V1_8822E) +#define BIT_SET_LPQ_LOW_TH_V1_8822E(x, v) \ + (BIT_CLEAR_LPQ_LOW_TH_V1_8822E(x) | BIT_LPQ_LOW_TH_V1_8822E(v)) + +/* 2 REG_TQPNT4_8822E */ +#define BIT_EXQ_INT_EN_8822E BIT(31) + +#define BIT_SHIFT_EXQ_HIGH_TH_V1_8822E 16 +#define BIT_MASK_EXQ_HIGH_TH_V1_8822E 0xfff +#define BIT_EXQ_HIGH_TH_V1_8822E(x) \ + (((x) & BIT_MASK_EXQ_HIGH_TH_V1_8822E) \ + << BIT_SHIFT_EXQ_HIGH_TH_V1_8822E) +#define BITS_EXQ_HIGH_TH_V1_8822E \ + (BIT_MASK_EXQ_HIGH_TH_V1_8822E << BIT_SHIFT_EXQ_HIGH_TH_V1_8822E) +#define BIT_CLEAR_EXQ_HIGH_TH_V1_8822E(x) ((x) & (~BITS_EXQ_HIGH_TH_V1_8822E)) +#define BIT_GET_EXQ_HIGH_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_EXQ_HIGH_TH_V1_8822E) & \ + BIT_MASK_EXQ_HIGH_TH_V1_8822E) +#define BIT_SET_EXQ_HIGH_TH_V1_8822E(x, v) \ + (BIT_CLEAR_EXQ_HIGH_TH_V1_8822E(x) | BIT_EXQ_HIGH_TH_V1_8822E(v)) + +#define BIT_SHIFT_EXQ_LOW_TH_V1_8822E 0 +#define BIT_MASK_EXQ_LOW_TH_V1_8822E 0xfff +#define BIT_EXQ_LOW_TH_V1_8822E(x) \ + (((x) & BIT_MASK_EXQ_LOW_TH_V1_8822E) << BIT_SHIFT_EXQ_LOW_TH_V1_8822E) +#define BITS_EXQ_LOW_TH_V1_8822E \ + (BIT_MASK_EXQ_LOW_TH_V1_8822E << BIT_SHIFT_EXQ_LOW_TH_V1_8822E) +#define BIT_CLEAR_EXQ_LOW_TH_V1_8822E(x) ((x) & (~BITS_EXQ_LOW_TH_V1_8822E)) +#define BIT_GET_EXQ_LOW_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_EXQ_LOW_TH_V1_8822E) & BIT_MASK_EXQ_LOW_TH_V1_8822E) +#define BIT_SET_EXQ_LOW_TH_V1_8822E(x, v) \ + (BIT_CLEAR_EXQ_LOW_TH_V1_8822E(x) | BIT_EXQ_LOW_TH_V1_8822E(v)) + +/* 2 REG_RQPN_CTRL_1_8822E */ + +#define BIT_SHIFT_TXPKTNUM_H_V2_8822E 16 +#define BIT_MASK_TXPKTNUM_H_V2_8822E 0xfff +#define BIT_TXPKTNUM_H_V2_8822E(x) \ + (((x) & BIT_MASK_TXPKTNUM_H_V2_8822E) << BIT_SHIFT_TXPKTNUM_H_V2_8822E) +#define BITS_TXPKTNUM_H_V2_8822E \ + (BIT_MASK_TXPKTNUM_H_V2_8822E << BIT_SHIFT_TXPKTNUM_H_V2_8822E) +#define BIT_CLEAR_TXPKTNUM_H_V2_8822E(x) ((x) & (~BITS_TXPKTNUM_H_V2_8822E)) +#define BIT_GET_TXPKTNUM_H_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TXPKTNUM_H_V2_8822E) & BIT_MASK_TXPKTNUM_H_V2_8822E) +#define BIT_SET_TXPKTNUM_H_V2_8822E(x, v) \ + (BIT_CLEAR_TXPKTNUM_H_V2_8822E(x) | BIT_TXPKTNUM_H_V2_8822E(v)) + +#define BIT_SHIFT_TXPKTNUM_V3_8822E 0 +#define BIT_MASK_TXPKTNUM_V3_8822E 0xfff +#define BIT_TXPKTNUM_V3_8822E(x) \ + (((x) & BIT_MASK_TXPKTNUM_V3_8822E) << BIT_SHIFT_TXPKTNUM_V3_8822E) +#define BITS_TXPKTNUM_V3_8822E \ + (BIT_MASK_TXPKTNUM_V3_8822E << BIT_SHIFT_TXPKTNUM_V3_8822E) +#define BIT_CLEAR_TXPKTNUM_V3_8822E(x) ((x) & (~BITS_TXPKTNUM_V3_8822E)) +#define BIT_GET_TXPKTNUM_V3_8822E(x) \ + (((x) >> BIT_SHIFT_TXPKTNUM_V3_8822E) & BIT_MASK_TXPKTNUM_V3_8822E) +#define BIT_SET_TXPKTNUM_V3_8822E(x, v) \ + (BIT_CLEAR_TXPKTNUM_V3_8822E(x) | BIT_TXPKTNUM_V3_8822E(v)) + +/* 2 REG_RQPN_CTRL_2_8822E */ +#define BIT_LD_RQPN_8822E BIT(31) +#define BIT_EXQ_PUBLIC_DIS_V1_8822E BIT(19) +#define BIT_NPQ_PUBLIC_DIS_V1_8822E BIT(18) +#define BIT_LPQ_PUBLIC_DIS_V1_8822E BIT(17) +#define BIT_HPQ_PUBLIC_DIS_V1_8822E BIT(16) +#define BIT_SDIO_TXAGG_ALIGN_ADJUST_EN_8822E BIT(15) + +#define BIT_SHIFT_SDIO_TXAGG_ALIGN_SIZE_8822E 0 +#define BIT_MASK_SDIO_TXAGG_ALIGN_SIZE_8822E 0xfff +#define BIT_SDIO_TXAGG_ALIGN_SIZE_8822E(x) \ + (((x) & BIT_MASK_SDIO_TXAGG_ALIGN_SIZE_8822E) \ + << BIT_SHIFT_SDIO_TXAGG_ALIGN_SIZE_8822E) +#define BITS_SDIO_TXAGG_ALIGN_SIZE_8822E \ + (BIT_MASK_SDIO_TXAGG_ALIGN_SIZE_8822E \ + << BIT_SHIFT_SDIO_TXAGG_ALIGN_SIZE_8822E) +#define BIT_CLEAR_SDIO_TXAGG_ALIGN_SIZE_8822E(x) \ + ((x) & (~BITS_SDIO_TXAGG_ALIGN_SIZE_8822E)) +#define BIT_GET_SDIO_TXAGG_ALIGN_SIZE_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_TXAGG_ALIGN_SIZE_8822E) & \ + BIT_MASK_SDIO_TXAGG_ALIGN_SIZE_8822E) +#define BIT_SET_SDIO_TXAGG_ALIGN_SIZE_8822E(x, v) \ + (BIT_CLEAR_SDIO_TXAGG_ALIGN_SIZE_8822E(x) | \ + BIT_SDIO_TXAGG_ALIGN_SIZE_8822E(v)) + +/* 2 REG_FIFOPAGE_INFO_1_8822E */ + +#define BIT_SHIFT_HPQ_AVAL_PG_V1_8822E 16 +#define BIT_MASK_HPQ_AVAL_PG_V1_8822E 0xfff +#define BIT_HPQ_AVAL_PG_V1_8822E(x) \ + (((x) & BIT_MASK_HPQ_AVAL_PG_V1_8822E) \ + << BIT_SHIFT_HPQ_AVAL_PG_V1_8822E) +#define BITS_HPQ_AVAL_PG_V1_8822E \ + (BIT_MASK_HPQ_AVAL_PG_V1_8822E << BIT_SHIFT_HPQ_AVAL_PG_V1_8822E) +#define BIT_CLEAR_HPQ_AVAL_PG_V1_8822E(x) ((x) & (~BITS_HPQ_AVAL_PG_V1_8822E)) +#define BIT_GET_HPQ_AVAL_PG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HPQ_AVAL_PG_V1_8822E) & \ + BIT_MASK_HPQ_AVAL_PG_V1_8822E) +#define BIT_SET_HPQ_AVAL_PG_V1_8822E(x, v) \ + (BIT_CLEAR_HPQ_AVAL_PG_V1_8822E(x) | BIT_HPQ_AVAL_PG_V1_8822E(v)) + +#define BIT_SHIFT_HPQ_V1_8822E 0 +#define BIT_MASK_HPQ_V1_8822E 0xfff +#define BIT_HPQ_V1_8822E(x) \ + (((x) & BIT_MASK_HPQ_V1_8822E) << BIT_SHIFT_HPQ_V1_8822E) +#define BITS_HPQ_V1_8822E (BIT_MASK_HPQ_V1_8822E << BIT_SHIFT_HPQ_V1_8822E) +#define BIT_CLEAR_HPQ_V1_8822E(x) ((x) & (~BITS_HPQ_V1_8822E)) +#define BIT_GET_HPQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HPQ_V1_8822E) & BIT_MASK_HPQ_V1_8822E) +#define BIT_SET_HPQ_V1_8822E(x, v) \ + (BIT_CLEAR_HPQ_V1_8822E(x) | BIT_HPQ_V1_8822E(v)) + +/* 2 REG_FIFOPAGE_INFO_2_8822E */ + +#define BIT_SHIFT_LPQ_AVAL_PG_V1_8822E 16 +#define BIT_MASK_LPQ_AVAL_PG_V1_8822E 0xfff +#define BIT_LPQ_AVAL_PG_V1_8822E(x) \ + (((x) & BIT_MASK_LPQ_AVAL_PG_V1_8822E) \ + << BIT_SHIFT_LPQ_AVAL_PG_V1_8822E) +#define BITS_LPQ_AVAL_PG_V1_8822E \ + (BIT_MASK_LPQ_AVAL_PG_V1_8822E << BIT_SHIFT_LPQ_AVAL_PG_V1_8822E) +#define BIT_CLEAR_LPQ_AVAL_PG_V1_8822E(x) ((x) & (~BITS_LPQ_AVAL_PG_V1_8822E)) +#define BIT_GET_LPQ_AVAL_PG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_LPQ_AVAL_PG_V1_8822E) & \ + BIT_MASK_LPQ_AVAL_PG_V1_8822E) +#define BIT_SET_LPQ_AVAL_PG_V1_8822E(x, v) \ + (BIT_CLEAR_LPQ_AVAL_PG_V1_8822E(x) | BIT_LPQ_AVAL_PG_V1_8822E(v)) + +#define BIT_SHIFT_LPQ_V1_8822E 0 +#define BIT_MASK_LPQ_V1_8822E 0xfff +#define BIT_LPQ_V1_8822E(x) \ + (((x) & BIT_MASK_LPQ_V1_8822E) << BIT_SHIFT_LPQ_V1_8822E) +#define BITS_LPQ_V1_8822E (BIT_MASK_LPQ_V1_8822E << BIT_SHIFT_LPQ_V1_8822E) +#define BIT_CLEAR_LPQ_V1_8822E(x) ((x) & (~BITS_LPQ_V1_8822E)) +#define BIT_GET_LPQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_LPQ_V1_8822E) & BIT_MASK_LPQ_V1_8822E) +#define BIT_SET_LPQ_V1_8822E(x, v) \ + (BIT_CLEAR_LPQ_V1_8822E(x) | BIT_LPQ_V1_8822E(v)) + +/* 2 REG_FIFOPAGE_INFO_3_8822E */ + +#define BIT_SHIFT_NPQ_AVAL_PG_V1_8822E 16 +#define BIT_MASK_NPQ_AVAL_PG_V1_8822E 0xfff +#define BIT_NPQ_AVAL_PG_V1_8822E(x) \ + (((x) & BIT_MASK_NPQ_AVAL_PG_V1_8822E) \ + << BIT_SHIFT_NPQ_AVAL_PG_V1_8822E) +#define BITS_NPQ_AVAL_PG_V1_8822E \ + (BIT_MASK_NPQ_AVAL_PG_V1_8822E << BIT_SHIFT_NPQ_AVAL_PG_V1_8822E) +#define BIT_CLEAR_NPQ_AVAL_PG_V1_8822E(x) ((x) & (~BITS_NPQ_AVAL_PG_V1_8822E)) +#define BIT_GET_NPQ_AVAL_PG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_NPQ_AVAL_PG_V1_8822E) & \ + BIT_MASK_NPQ_AVAL_PG_V1_8822E) +#define BIT_SET_NPQ_AVAL_PG_V1_8822E(x, v) \ + (BIT_CLEAR_NPQ_AVAL_PG_V1_8822E(x) | BIT_NPQ_AVAL_PG_V1_8822E(v)) + +#define BIT_SHIFT_NPQ_V1_8822E 0 +#define BIT_MASK_NPQ_V1_8822E 0xfff +#define BIT_NPQ_V1_8822E(x) \ + (((x) & BIT_MASK_NPQ_V1_8822E) << BIT_SHIFT_NPQ_V1_8822E) +#define BITS_NPQ_V1_8822E (BIT_MASK_NPQ_V1_8822E << BIT_SHIFT_NPQ_V1_8822E) +#define BIT_CLEAR_NPQ_V1_8822E(x) ((x) & (~BITS_NPQ_V1_8822E)) +#define BIT_GET_NPQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_NPQ_V1_8822E) & BIT_MASK_NPQ_V1_8822E) +#define BIT_SET_NPQ_V1_8822E(x, v) \ + (BIT_CLEAR_NPQ_V1_8822E(x) | BIT_NPQ_V1_8822E(v)) + +/* 2 REG_FIFOPAGE_INFO_4_8822E */ + +#define BIT_SHIFT_EXQ_AVAL_PG_V1_8822E 16 +#define BIT_MASK_EXQ_AVAL_PG_V1_8822E 0xfff +#define BIT_EXQ_AVAL_PG_V1_8822E(x) \ + (((x) & BIT_MASK_EXQ_AVAL_PG_V1_8822E) \ + << BIT_SHIFT_EXQ_AVAL_PG_V1_8822E) +#define BITS_EXQ_AVAL_PG_V1_8822E \ + (BIT_MASK_EXQ_AVAL_PG_V1_8822E << BIT_SHIFT_EXQ_AVAL_PG_V1_8822E) +#define BIT_CLEAR_EXQ_AVAL_PG_V1_8822E(x) ((x) & (~BITS_EXQ_AVAL_PG_V1_8822E)) +#define BIT_GET_EXQ_AVAL_PG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_EXQ_AVAL_PG_V1_8822E) & \ + BIT_MASK_EXQ_AVAL_PG_V1_8822E) +#define BIT_SET_EXQ_AVAL_PG_V1_8822E(x, v) \ + (BIT_CLEAR_EXQ_AVAL_PG_V1_8822E(x) | BIT_EXQ_AVAL_PG_V1_8822E(v)) + +#define BIT_SHIFT_EXQ_V1_8822E 0 +#define BIT_MASK_EXQ_V1_8822E 0xfff +#define BIT_EXQ_V1_8822E(x) \ + (((x) & BIT_MASK_EXQ_V1_8822E) << BIT_SHIFT_EXQ_V1_8822E) +#define BITS_EXQ_V1_8822E (BIT_MASK_EXQ_V1_8822E << BIT_SHIFT_EXQ_V1_8822E) +#define BIT_CLEAR_EXQ_V1_8822E(x) ((x) & (~BITS_EXQ_V1_8822E)) +#define BIT_GET_EXQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_EXQ_V1_8822E) & BIT_MASK_EXQ_V1_8822E) +#define BIT_SET_EXQ_V1_8822E(x, v) \ + (BIT_CLEAR_EXQ_V1_8822E(x) | BIT_EXQ_V1_8822E(v)) + +/* 2 REG_FIFOPAGE_INFO_5_8822E */ + +#define BIT_SHIFT_PUBQ_AVAL_PG_V1_8822E 16 +#define BIT_MASK_PUBQ_AVAL_PG_V1_8822E 0xfff +#define BIT_PUBQ_AVAL_PG_V1_8822E(x) \ + (((x) & BIT_MASK_PUBQ_AVAL_PG_V1_8822E) \ + << BIT_SHIFT_PUBQ_AVAL_PG_V1_8822E) +#define BITS_PUBQ_AVAL_PG_V1_8822E \ + (BIT_MASK_PUBQ_AVAL_PG_V1_8822E << BIT_SHIFT_PUBQ_AVAL_PG_V1_8822E) +#define BIT_CLEAR_PUBQ_AVAL_PG_V1_8822E(x) ((x) & (~BITS_PUBQ_AVAL_PG_V1_8822E)) +#define BIT_GET_PUBQ_AVAL_PG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PUBQ_AVAL_PG_V1_8822E) & \ + BIT_MASK_PUBQ_AVAL_PG_V1_8822E) +#define BIT_SET_PUBQ_AVAL_PG_V1_8822E(x, v) \ + (BIT_CLEAR_PUBQ_AVAL_PG_V1_8822E(x) | BIT_PUBQ_AVAL_PG_V1_8822E(v)) + +#define BIT_SHIFT_PUBQ_V1_8822E 0 +#define BIT_MASK_PUBQ_V1_8822E 0xfff +#define BIT_PUBQ_V1_8822E(x) \ + (((x) & BIT_MASK_PUBQ_V1_8822E) << BIT_SHIFT_PUBQ_V1_8822E) +#define BITS_PUBQ_V1_8822E (BIT_MASK_PUBQ_V1_8822E << BIT_SHIFT_PUBQ_V1_8822E) +#define BIT_CLEAR_PUBQ_V1_8822E(x) ((x) & (~BITS_PUBQ_V1_8822E)) +#define BIT_GET_PUBQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PUBQ_V1_8822E) & BIT_MASK_PUBQ_V1_8822E) +#define BIT_SET_PUBQ_V1_8822E(x, v) \ + (BIT_CLEAR_PUBQ_V1_8822E(x) | BIT_PUBQ_V1_8822E(v)) + +/* 2 REG_H2C_HEAD_8822E */ + +#define BIT_SHIFT_H2C_HEAD_8822E 0 +#define BIT_MASK_H2C_HEAD_8822E 0x3ffff +#define BIT_H2C_HEAD_8822E(x) \ + (((x) & BIT_MASK_H2C_HEAD_8822E) << BIT_SHIFT_H2C_HEAD_8822E) +#define BITS_H2C_HEAD_8822E \ + (BIT_MASK_H2C_HEAD_8822E << BIT_SHIFT_H2C_HEAD_8822E) +#define BIT_CLEAR_H2C_HEAD_8822E(x) ((x) & (~BITS_H2C_HEAD_8822E)) +#define BIT_GET_H2C_HEAD_8822E(x) \ + (((x) >> BIT_SHIFT_H2C_HEAD_8822E) & BIT_MASK_H2C_HEAD_8822E) +#define BIT_SET_H2C_HEAD_8822E(x, v) \ + (BIT_CLEAR_H2C_HEAD_8822E(x) | BIT_H2C_HEAD_8822E(v)) + +/* 2 REG_H2C_TAIL_8822E */ + +#define BIT_SHIFT_H2C_TAIL_8822E 0 +#define BIT_MASK_H2C_TAIL_8822E 0x3ffff +#define BIT_H2C_TAIL_8822E(x) \ + (((x) & BIT_MASK_H2C_TAIL_8822E) << BIT_SHIFT_H2C_TAIL_8822E) +#define BITS_H2C_TAIL_8822E \ + (BIT_MASK_H2C_TAIL_8822E << BIT_SHIFT_H2C_TAIL_8822E) +#define BIT_CLEAR_H2C_TAIL_8822E(x) ((x) & (~BITS_H2C_TAIL_8822E)) +#define BIT_GET_H2C_TAIL_8822E(x) \ + (((x) >> BIT_SHIFT_H2C_TAIL_8822E) & BIT_MASK_H2C_TAIL_8822E) +#define BIT_SET_H2C_TAIL_8822E(x, v) \ + (BIT_CLEAR_H2C_TAIL_8822E(x) | BIT_H2C_TAIL_8822E(v)) + +/* 2 REG_H2C_READ_ADDR_8822E */ + +#define BIT_SHIFT_H2C_READ_ADDR_8822E 0 +#define BIT_MASK_H2C_READ_ADDR_8822E 0x3ffff +#define BIT_H2C_READ_ADDR_8822E(x) \ + (((x) & BIT_MASK_H2C_READ_ADDR_8822E) << BIT_SHIFT_H2C_READ_ADDR_8822E) +#define BITS_H2C_READ_ADDR_8822E \ + (BIT_MASK_H2C_READ_ADDR_8822E << BIT_SHIFT_H2C_READ_ADDR_8822E) +#define BIT_CLEAR_H2C_READ_ADDR_8822E(x) ((x) & (~BITS_H2C_READ_ADDR_8822E)) +#define BIT_GET_H2C_READ_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_H2C_READ_ADDR_8822E) & BIT_MASK_H2C_READ_ADDR_8822E) +#define BIT_SET_H2C_READ_ADDR_8822E(x, v) \ + (BIT_CLEAR_H2C_READ_ADDR_8822E(x) | BIT_H2C_READ_ADDR_8822E(v)) + +/* 2 REG_H2C_WR_ADDR_8822E */ + +#define BIT_SHIFT_H2C_WR_ADDR_8822E 0 +#define BIT_MASK_H2C_WR_ADDR_8822E 0x3ffff +#define BIT_H2C_WR_ADDR_8822E(x) \ + (((x) & BIT_MASK_H2C_WR_ADDR_8822E) << BIT_SHIFT_H2C_WR_ADDR_8822E) +#define BITS_H2C_WR_ADDR_8822E \ + (BIT_MASK_H2C_WR_ADDR_8822E << BIT_SHIFT_H2C_WR_ADDR_8822E) +#define BIT_CLEAR_H2C_WR_ADDR_8822E(x) ((x) & (~BITS_H2C_WR_ADDR_8822E)) +#define BIT_GET_H2C_WR_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_H2C_WR_ADDR_8822E) & BIT_MASK_H2C_WR_ADDR_8822E) +#define BIT_SET_H2C_WR_ADDR_8822E(x, v) \ + (BIT_CLEAR_H2C_WR_ADDR_8822E(x) | BIT_H2C_WR_ADDR_8822E(v)) + +/* 2 REG_H2C_INFO_8822E */ +#define BIT_H2C_SPACE_VLD_8822E BIT(3) +#define BIT_H2C_WR_ADDR_RST_8822E BIT(2) + +#define BIT_SHIFT_H2C_LEN_SEL_8822E 0 +#define BIT_MASK_H2C_LEN_SEL_8822E 0x3 +#define BIT_H2C_LEN_SEL_8822E(x) \ + (((x) & BIT_MASK_H2C_LEN_SEL_8822E) << BIT_SHIFT_H2C_LEN_SEL_8822E) +#define BITS_H2C_LEN_SEL_8822E \ + (BIT_MASK_H2C_LEN_SEL_8822E << BIT_SHIFT_H2C_LEN_SEL_8822E) +#define BIT_CLEAR_H2C_LEN_SEL_8822E(x) ((x) & (~BITS_H2C_LEN_SEL_8822E)) +#define BIT_GET_H2C_LEN_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_H2C_LEN_SEL_8822E) & BIT_MASK_H2C_LEN_SEL_8822E) +#define BIT_SET_H2C_LEN_SEL_8822E(x, v) \ + (BIT_CLEAR_H2C_LEN_SEL_8822E(x) | BIT_H2C_LEN_SEL_8822E(v)) + +/* 2 REG_PGSUB_CNT_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_RST_PGSUB_CNT_8822E BIT(1) +#define BIT_PGSUB_CNT_EN_8822E BIT(0) + +/* 2 REG_PGSUB_H_8822E */ + +#define BIT_SHIFT_HPQ_PGSUB_CNT_8822E 0 +#define BIT_MASK_HPQ_PGSUB_CNT_8822E 0xffffffffL +#define BIT_HPQ_PGSUB_CNT_8822E(x) \ + (((x) & BIT_MASK_HPQ_PGSUB_CNT_8822E) << BIT_SHIFT_HPQ_PGSUB_CNT_8822E) +#define BITS_HPQ_PGSUB_CNT_8822E \ + (BIT_MASK_HPQ_PGSUB_CNT_8822E << BIT_SHIFT_HPQ_PGSUB_CNT_8822E) +#define BIT_CLEAR_HPQ_PGSUB_CNT_8822E(x) ((x) & (~BITS_HPQ_PGSUB_CNT_8822E)) +#define BIT_GET_HPQ_PGSUB_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_HPQ_PGSUB_CNT_8822E) & BIT_MASK_HPQ_PGSUB_CNT_8822E) +#define BIT_SET_HPQ_PGSUB_CNT_8822E(x, v) \ + (BIT_CLEAR_HPQ_PGSUB_CNT_8822E(x) | BIT_HPQ_PGSUB_CNT_8822E(v)) + +/* 2 REG_PGSUB_N_8822E */ + +#define BIT_SHIFT_NPQ_PGSUB_CNT_8822E 0 +#define BIT_MASK_NPQ_PGSUB_CNT_8822E 0xffffffffL +#define BIT_NPQ_PGSUB_CNT_8822E(x) \ + (((x) & BIT_MASK_NPQ_PGSUB_CNT_8822E) << BIT_SHIFT_NPQ_PGSUB_CNT_8822E) +#define BITS_NPQ_PGSUB_CNT_8822E \ + (BIT_MASK_NPQ_PGSUB_CNT_8822E << BIT_SHIFT_NPQ_PGSUB_CNT_8822E) +#define BIT_CLEAR_NPQ_PGSUB_CNT_8822E(x) ((x) & (~BITS_NPQ_PGSUB_CNT_8822E)) +#define BIT_GET_NPQ_PGSUB_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_NPQ_PGSUB_CNT_8822E) & BIT_MASK_NPQ_PGSUB_CNT_8822E) +#define BIT_SET_NPQ_PGSUB_CNT_8822E(x, v) \ + (BIT_CLEAR_NPQ_PGSUB_CNT_8822E(x) | BIT_NPQ_PGSUB_CNT_8822E(v)) + +/* 2 REG_PGSUB_L_8822E */ + +#define BIT_SHIFT_LPQ_PGSUB_CNT_8822E 0 +#define BIT_MASK_LPQ_PGSUB_CNT_8822E 0xffffffffL +#define BIT_LPQ_PGSUB_CNT_8822E(x) \ + (((x) & BIT_MASK_LPQ_PGSUB_CNT_8822E) << BIT_SHIFT_LPQ_PGSUB_CNT_8822E) +#define BITS_LPQ_PGSUB_CNT_8822E \ + (BIT_MASK_LPQ_PGSUB_CNT_8822E << BIT_SHIFT_LPQ_PGSUB_CNT_8822E) +#define BIT_CLEAR_LPQ_PGSUB_CNT_8822E(x) ((x) & (~BITS_LPQ_PGSUB_CNT_8822E)) +#define BIT_GET_LPQ_PGSUB_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_LPQ_PGSUB_CNT_8822E) & BIT_MASK_LPQ_PGSUB_CNT_8822E) +#define BIT_SET_LPQ_PGSUB_CNT_8822E(x, v) \ + (BIT_CLEAR_LPQ_PGSUB_CNT_8822E(x) | BIT_LPQ_PGSUB_CNT_8822E(v)) + +/* 2 REG_PGSUB_E_8822E */ + +#define BIT_SHIFT_EPQ_PGSUB_CNT_8822E 0 +#define BIT_MASK_EPQ_PGSUB_CNT_8822E 0xffffffffL +#define BIT_EPQ_PGSUB_CNT_8822E(x) \ + (((x) & BIT_MASK_EPQ_PGSUB_CNT_8822E) << BIT_SHIFT_EPQ_PGSUB_CNT_8822E) +#define BITS_EPQ_PGSUB_CNT_8822E \ + (BIT_MASK_EPQ_PGSUB_CNT_8822E << BIT_SHIFT_EPQ_PGSUB_CNT_8822E) +#define BIT_CLEAR_EPQ_PGSUB_CNT_8822E(x) ((x) & (~BITS_EPQ_PGSUB_CNT_8822E)) +#define BIT_GET_EPQ_PGSUB_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_EPQ_PGSUB_CNT_8822E) & BIT_MASK_EPQ_PGSUB_CNT_8822E) +#define BIT_SET_EPQ_PGSUB_CNT_8822E(x, v) \ + (BIT_CLEAR_EPQ_PGSUB_CNT_8822E(x) | BIT_EPQ_PGSUB_CNT_8822E(v)) + +/* 2 REG_RXDMA_AGG_PG_TH_8822E */ +#define BIT_USB_RXDMA_AGG_EN_8822E BIT(31) +#define BIT_EN_FW_ADD_8822E BIT(30) +#define BIT_EN_PRE_CALC_8822E BIT(29) +#define BIT_RXAGG_SW_EN_8822E BIT(28) +#define BIT_RXAGG_SW_TRIG_8822E BIT(27) + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_DMA_AGG_TO_V1_8822E 8 +#define BIT_MASK_DMA_AGG_TO_V1_8822E 0xff +#define BIT_DMA_AGG_TO_V1_8822E(x) \ + (((x) & BIT_MASK_DMA_AGG_TO_V1_8822E) << BIT_SHIFT_DMA_AGG_TO_V1_8822E) +#define BITS_DMA_AGG_TO_V1_8822E \ + (BIT_MASK_DMA_AGG_TO_V1_8822E << BIT_SHIFT_DMA_AGG_TO_V1_8822E) +#define BIT_CLEAR_DMA_AGG_TO_V1_8822E(x) ((x) & (~BITS_DMA_AGG_TO_V1_8822E)) +#define BIT_GET_DMA_AGG_TO_V1_8822E(x) \ + (((x) >> BIT_SHIFT_DMA_AGG_TO_V1_8822E) & BIT_MASK_DMA_AGG_TO_V1_8822E) +#define BIT_SET_DMA_AGG_TO_V1_8822E(x, v) \ + (BIT_CLEAR_DMA_AGG_TO_V1_8822E(x) | BIT_DMA_AGG_TO_V1_8822E(v)) + +#define BIT_SHIFT_RXDMA_AGG_PG_TH_8822E 0 +#define BIT_MASK_RXDMA_AGG_PG_TH_8822E 0xff +#define BIT_RXDMA_AGG_PG_TH_8822E(x) \ + (((x) & BIT_MASK_RXDMA_AGG_PG_TH_8822E) \ + << BIT_SHIFT_RXDMA_AGG_PG_TH_8822E) +#define BITS_RXDMA_AGG_PG_TH_8822E \ + (BIT_MASK_RXDMA_AGG_PG_TH_8822E << BIT_SHIFT_RXDMA_AGG_PG_TH_8822E) +#define BIT_CLEAR_RXDMA_AGG_PG_TH_8822E(x) ((x) & (~BITS_RXDMA_AGG_PG_TH_8822E)) +#define BIT_GET_RXDMA_AGG_PG_TH_8822E(x) \ + (((x) >> BIT_SHIFT_RXDMA_AGG_PG_TH_8822E) & \ + BIT_MASK_RXDMA_AGG_PG_TH_8822E) +#define BIT_SET_RXDMA_AGG_PG_TH_8822E(x, v) \ + (BIT_CLEAR_RXDMA_AGG_PG_TH_8822E(x) | BIT_RXDMA_AGG_PG_TH_8822E(v)) + +/* 2 REG_RXPKT_NUM_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_FW_UPD_RDPTR19_TO_16_8822E 20 +#define BIT_MASK_FW_UPD_RDPTR19_TO_16_8822E 0xf +#define BIT_FW_UPD_RDPTR19_TO_16_8822E(x) \ + (((x) & BIT_MASK_FW_UPD_RDPTR19_TO_16_8822E) \ + << BIT_SHIFT_FW_UPD_RDPTR19_TO_16_8822E) +#define BITS_FW_UPD_RDPTR19_TO_16_8822E \ + (BIT_MASK_FW_UPD_RDPTR19_TO_16_8822E \ + << BIT_SHIFT_FW_UPD_RDPTR19_TO_16_8822E) +#define BIT_CLEAR_FW_UPD_RDPTR19_TO_16_8822E(x) \ + ((x) & (~BITS_FW_UPD_RDPTR19_TO_16_8822E)) +#define BIT_GET_FW_UPD_RDPTR19_TO_16_8822E(x) \ + (((x) >> BIT_SHIFT_FW_UPD_RDPTR19_TO_16_8822E) & \ + BIT_MASK_FW_UPD_RDPTR19_TO_16_8822E) +#define BIT_SET_FW_UPD_RDPTR19_TO_16_8822E(x, v) \ + (BIT_CLEAR_FW_UPD_RDPTR19_TO_16_8822E(x) | \ + BIT_FW_UPD_RDPTR19_TO_16_8822E(v)) + +#define BIT_RXDMA_REQ_8822E BIT(19) +#define BIT_RW_RELEASE_EN_8822E BIT(18) +#define BIT_RXDMA_IDLE_8822E BIT(17) +#define BIT_RXPKT_RELEASE_POLL_8822E BIT(16) + +#define BIT_SHIFT_FW_UPD_RDPTR_8822E 0 +#define BIT_MASK_FW_UPD_RDPTR_8822E 0xffff +#define BIT_FW_UPD_RDPTR_8822E(x) \ + (((x) & BIT_MASK_FW_UPD_RDPTR_8822E) << BIT_SHIFT_FW_UPD_RDPTR_8822E) +#define BITS_FW_UPD_RDPTR_8822E \ + (BIT_MASK_FW_UPD_RDPTR_8822E << BIT_SHIFT_FW_UPD_RDPTR_8822E) +#define BIT_CLEAR_FW_UPD_RDPTR_8822E(x) ((x) & (~BITS_FW_UPD_RDPTR_8822E)) +#define BIT_GET_FW_UPD_RDPTR_8822E(x) \ + (((x) >> BIT_SHIFT_FW_UPD_RDPTR_8822E) & BIT_MASK_FW_UPD_RDPTR_8822E) +#define BIT_SET_FW_UPD_RDPTR_8822E(x, v) \ + (BIT_CLEAR_FW_UPD_RDPTR_8822E(x) | BIT_FW_UPD_RDPTR_8822E(v)) + +/* 2 REG_RXDMA_STATUS_8822E */ +#define BIT_C2H_PKT_OVF_8822E BIT(7) +#define BIT_AGG_CONFGI_ISSUE_8822E BIT(6) +#define BIT_FW_POLL_ISSUE_8822E BIT(5) +#define BIT_RX_DATA_UDN_8822E BIT(4) +#define BIT_RX_SFF_UDN_8822E BIT(3) +#define BIT_RX_SFF_OVF_8822E BIT(2) +#define BIT_RXPKT_OVF_8822E BIT(0) + +/* 2 REG_RXDMA_DPR_8822E */ + +#define BIT_SHIFT_RDE_DEBUG_8822E 0 +#define BIT_MASK_RDE_DEBUG_8822E 0xffffffffL +#define BIT_RDE_DEBUG_8822E(x) \ + (((x) & BIT_MASK_RDE_DEBUG_8822E) << BIT_SHIFT_RDE_DEBUG_8822E) +#define BITS_RDE_DEBUG_8822E \ + (BIT_MASK_RDE_DEBUG_8822E << BIT_SHIFT_RDE_DEBUG_8822E) +#define BIT_CLEAR_RDE_DEBUG_8822E(x) ((x) & (~BITS_RDE_DEBUG_8822E)) +#define BIT_GET_RDE_DEBUG_8822E(x) \ + (((x) >> BIT_SHIFT_RDE_DEBUG_8822E) & BIT_MASK_RDE_DEBUG_8822E) +#define BIT_SET_RDE_DEBUG_8822E(x, v) \ + (BIT_CLEAR_RDE_DEBUG_8822E(x) | BIT_RDE_DEBUG_8822E(v)) + +/* 2 REG_RXDMA_MODE_8822E */ + +#define BIT_SHIFT_PKTNUM_TH_V2_8822E 24 +#define BIT_MASK_PKTNUM_TH_V2_8822E 0x1f +#define BIT_PKTNUM_TH_V2_8822E(x) \ + (((x) & BIT_MASK_PKTNUM_TH_V2_8822E) << BIT_SHIFT_PKTNUM_TH_V2_8822E) +#define BITS_PKTNUM_TH_V2_8822E \ + (BIT_MASK_PKTNUM_TH_V2_8822E << BIT_SHIFT_PKTNUM_TH_V2_8822E) +#define BIT_CLEAR_PKTNUM_TH_V2_8822E(x) ((x) & (~BITS_PKTNUM_TH_V2_8822E)) +#define BIT_GET_PKTNUM_TH_V2_8822E(x) \ + (((x) >> BIT_SHIFT_PKTNUM_TH_V2_8822E) & BIT_MASK_PKTNUM_TH_V2_8822E) +#define BIT_SET_PKTNUM_TH_V2_8822E(x, v) \ + (BIT_CLEAR_PKTNUM_TH_V2_8822E(x) | BIT_PKTNUM_TH_V2_8822E(v)) + +#define BIT_TXBA_BREAK_USBAGG_8822E BIT(23) + +#define BIT_SHIFT_PKTLEN_PARA_8822E 16 +#define BIT_MASK_PKTLEN_PARA_8822E 0x7 +#define BIT_PKTLEN_PARA_8822E(x) \ + (((x) & BIT_MASK_PKTLEN_PARA_8822E) << BIT_SHIFT_PKTLEN_PARA_8822E) +#define BITS_PKTLEN_PARA_8822E \ + (BIT_MASK_PKTLEN_PARA_8822E << BIT_SHIFT_PKTLEN_PARA_8822E) +#define BIT_CLEAR_PKTLEN_PARA_8822E(x) ((x) & (~BITS_PKTLEN_PARA_8822E)) +#define BIT_GET_PKTLEN_PARA_8822E(x) \ + (((x) >> BIT_SHIFT_PKTLEN_PARA_8822E) & BIT_MASK_PKTLEN_PARA_8822E) +#define BIT_SET_PKTLEN_PARA_8822E(x, v) \ + (BIT_CLEAR_PKTLEN_PARA_8822E(x) | BIT_PKTLEN_PARA_8822E(v)) + +#define BIT_RX_DBG_SEL_8822E BIT(7) +#define BIT_EN_SPD_8822E BIT(6) + +#define BIT_SHIFT_BURST_SIZE_8822E 4 +#define BIT_MASK_BURST_SIZE_8822E 0x3 +#define BIT_BURST_SIZE_8822E(x) \ + (((x) & BIT_MASK_BURST_SIZE_8822E) << BIT_SHIFT_BURST_SIZE_8822E) +#define BITS_BURST_SIZE_8822E \ + (BIT_MASK_BURST_SIZE_8822E << BIT_SHIFT_BURST_SIZE_8822E) +#define BIT_CLEAR_BURST_SIZE_8822E(x) ((x) & (~BITS_BURST_SIZE_8822E)) +#define BIT_GET_BURST_SIZE_8822E(x) \ + (((x) >> BIT_SHIFT_BURST_SIZE_8822E) & BIT_MASK_BURST_SIZE_8822E) +#define BIT_SET_BURST_SIZE_8822E(x, v) \ + (BIT_CLEAR_BURST_SIZE_8822E(x) | BIT_BURST_SIZE_8822E(v)) + +#define BIT_SHIFT_BURST_CNT_8822E 2 +#define BIT_MASK_BURST_CNT_8822E 0x3 +#define BIT_BURST_CNT_8822E(x) \ + (((x) & BIT_MASK_BURST_CNT_8822E) << BIT_SHIFT_BURST_CNT_8822E) +#define BITS_BURST_CNT_8822E \ + (BIT_MASK_BURST_CNT_8822E << BIT_SHIFT_BURST_CNT_8822E) +#define BIT_CLEAR_BURST_CNT_8822E(x) ((x) & (~BITS_BURST_CNT_8822E)) +#define BIT_GET_BURST_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_BURST_CNT_8822E) & BIT_MASK_BURST_CNT_8822E) +#define BIT_SET_BURST_CNT_8822E(x, v) \ + (BIT_CLEAR_BURST_CNT_8822E(x) | BIT_BURST_CNT_8822E(v)) + +#define BIT_DMA_MODE_8822E BIT(1) + +/* 2 REG_C2H_PKT_8822E */ + +#define BIT_SHIFT_R_C2H_STR_ADDR_16_TO_19_8822E 24 +#define BIT_MASK_R_C2H_STR_ADDR_16_TO_19_8822E 0xf +#define BIT_R_C2H_STR_ADDR_16_TO_19_8822E(x) \ + (((x) & BIT_MASK_R_C2H_STR_ADDR_16_TO_19_8822E) \ + << BIT_SHIFT_R_C2H_STR_ADDR_16_TO_19_8822E) +#define BITS_R_C2H_STR_ADDR_16_TO_19_8822E \ + (BIT_MASK_R_C2H_STR_ADDR_16_TO_19_8822E \ + << BIT_SHIFT_R_C2H_STR_ADDR_16_TO_19_8822E) +#define BIT_CLEAR_R_C2H_STR_ADDR_16_TO_19_8822E(x) \ + ((x) & (~BITS_R_C2H_STR_ADDR_16_TO_19_8822E)) +#define BIT_GET_R_C2H_STR_ADDR_16_TO_19_8822E(x) \ + (((x) >> BIT_SHIFT_R_C2H_STR_ADDR_16_TO_19_8822E) & \ + BIT_MASK_R_C2H_STR_ADDR_16_TO_19_8822E) +#define BIT_SET_R_C2H_STR_ADDR_16_TO_19_8822E(x, v) \ + (BIT_CLEAR_R_C2H_STR_ADDR_16_TO_19_8822E(x) | \ + BIT_R_C2H_STR_ADDR_16_TO_19_8822E(v)) + +#define BIT_R_C2H_PKT_REQ_8822E BIT(16) + +#define BIT_SHIFT_R_C2H_STR_ADDR_8822E 0 +#define BIT_MASK_R_C2H_STR_ADDR_8822E 0xffff +#define BIT_R_C2H_STR_ADDR_8822E(x) \ + (((x) & BIT_MASK_R_C2H_STR_ADDR_8822E) \ + << BIT_SHIFT_R_C2H_STR_ADDR_8822E) +#define BITS_R_C2H_STR_ADDR_8822E \ + (BIT_MASK_R_C2H_STR_ADDR_8822E << BIT_SHIFT_R_C2H_STR_ADDR_8822E) +#define BIT_CLEAR_R_C2H_STR_ADDR_8822E(x) ((x) & (~BITS_R_C2H_STR_ADDR_8822E)) +#define BIT_GET_R_C2H_STR_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_R_C2H_STR_ADDR_8822E) & \ + BIT_MASK_R_C2H_STR_ADDR_8822E) +#define BIT_SET_R_C2H_STR_ADDR_8822E(x, v) \ + (BIT_CLEAR_R_C2H_STR_ADDR_8822E(x) | BIT_R_C2H_STR_ADDR_8822E(v)) + +/* 2 REG_FWFF_C2H_8822E */ + +#define BIT_SHIFT_C2H_DMA_ADDR_8822E 0 +#define BIT_MASK_C2H_DMA_ADDR_8822E 0x3ffff +#define BIT_C2H_DMA_ADDR_8822E(x) \ + (((x) & BIT_MASK_C2H_DMA_ADDR_8822E) << BIT_SHIFT_C2H_DMA_ADDR_8822E) +#define BITS_C2H_DMA_ADDR_8822E \ + (BIT_MASK_C2H_DMA_ADDR_8822E << BIT_SHIFT_C2H_DMA_ADDR_8822E) +#define BIT_CLEAR_C2H_DMA_ADDR_8822E(x) ((x) & (~BITS_C2H_DMA_ADDR_8822E)) +#define BIT_GET_C2H_DMA_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_C2H_DMA_ADDR_8822E) & BIT_MASK_C2H_DMA_ADDR_8822E) +#define BIT_SET_C2H_DMA_ADDR_8822E(x, v) \ + (BIT_CLEAR_C2H_DMA_ADDR_8822E(x) | BIT_C2H_DMA_ADDR_8822E(v)) + +/* 2 REG_FWFF_CTRL_8822E */ +#define BIT_FWFF_DMAPKT_REQ_8822E BIT(31) + +#define BIT_SHIFT_FWFF_DMA_PKT_NUM_8822E 16 +#define BIT_MASK_FWFF_DMA_PKT_NUM_8822E 0xff +#define BIT_FWFF_DMA_PKT_NUM_8822E(x) \ + (((x) & BIT_MASK_FWFF_DMA_PKT_NUM_8822E) \ + << BIT_SHIFT_FWFF_DMA_PKT_NUM_8822E) +#define BITS_FWFF_DMA_PKT_NUM_8822E \ + (BIT_MASK_FWFF_DMA_PKT_NUM_8822E << BIT_SHIFT_FWFF_DMA_PKT_NUM_8822E) +#define BIT_CLEAR_FWFF_DMA_PKT_NUM_8822E(x) \ + ((x) & (~BITS_FWFF_DMA_PKT_NUM_8822E)) +#define BIT_GET_FWFF_DMA_PKT_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_FWFF_DMA_PKT_NUM_8822E) & \ + BIT_MASK_FWFF_DMA_PKT_NUM_8822E) +#define BIT_SET_FWFF_DMA_PKT_NUM_8822E(x, v) \ + (BIT_CLEAR_FWFF_DMA_PKT_NUM_8822E(x) | BIT_FWFF_DMA_PKT_NUM_8822E(v)) + +#define BIT_SHIFT_FWFF_STR_ADDR_8822E 0 +#define BIT_MASK_FWFF_STR_ADDR_8822E 0xffff +#define BIT_FWFF_STR_ADDR_8822E(x) \ + (((x) & BIT_MASK_FWFF_STR_ADDR_8822E) << BIT_SHIFT_FWFF_STR_ADDR_8822E) +#define BITS_FWFF_STR_ADDR_8822E \ + (BIT_MASK_FWFF_STR_ADDR_8822E << BIT_SHIFT_FWFF_STR_ADDR_8822E) +#define BIT_CLEAR_FWFF_STR_ADDR_8822E(x) ((x) & (~BITS_FWFF_STR_ADDR_8822E)) +#define BIT_GET_FWFF_STR_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_FWFF_STR_ADDR_8822E) & BIT_MASK_FWFF_STR_ADDR_8822E) +#define BIT_SET_FWFF_STR_ADDR_8822E(x, v) \ + (BIT_CLEAR_FWFF_STR_ADDR_8822E(x) | BIT_FWFF_STR_ADDR_8822E(v)) + +/* 2 REG_FWFF_PKT_INFO_8822E */ + +#define BIT_SHIFT_FWFF_PKT_QUEUED_8822E 16 +#define BIT_MASK_FWFF_PKT_QUEUED_8822E 0xff +#define BIT_FWFF_PKT_QUEUED_8822E(x) \ + (((x) & BIT_MASK_FWFF_PKT_QUEUED_8822E) \ + << BIT_SHIFT_FWFF_PKT_QUEUED_8822E) +#define BITS_FWFF_PKT_QUEUED_8822E \ + (BIT_MASK_FWFF_PKT_QUEUED_8822E << BIT_SHIFT_FWFF_PKT_QUEUED_8822E) +#define BIT_CLEAR_FWFF_PKT_QUEUED_8822E(x) ((x) & (~BITS_FWFF_PKT_QUEUED_8822E)) +#define BIT_GET_FWFF_PKT_QUEUED_8822E(x) \ + (((x) >> BIT_SHIFT_FWFF_PKT_QUEUED_8822E) & \ + BIT_MASK_FWFF_PKT_QUEUED_8822E) +#define BIT_SET_FWFF_PKT_QUEUED_8822E(x, v) \ + (BIT_CLEAR_FWFF_PKT_QUEUED_8822E(x) | BIT_FWFF_PKT_QUEUED_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_FWFF_PKT_STR_ADDR_V2_8822E 0 +#define BIT_MASK_FWFF_PKT_STR_ADDR_V2_8822E 0x3fff +#define BIT_FWFF_PKT_STR_ADDR_V2_8822E(x) \ + (((x) & BIT_MASK_FWFF_PKT_STR_ADDR_V2_8822E) \ + << BIT_SHIFT_FWFF_PKT_STR_ADDR_V2_8822E) +#define BITS_FWFF_PKT_STR_ADDR_V2_8822E \ + (BIT_MASK_FWFF_PKT_STR_ADDR_V2_8822E \ + << BIT_SHIFT_FWFF_PKT_STR_ADDR_V2_8822E) +#define BIT_CLEAR_FWFF_PKT_STR_ADDR_V2_8822E(x) \ + ((x) & (~BITS_FWFF_PKT_STR_ADDR_V2_8822E)) +#define BIT_GET_FWFF_PKT_STR_ADDR_V2_8822E(x) \ + (((x) >> BIT_SHIFT_FWFF_PKT_STR_ADDR_V2_8822E) & \ + BIT_MASK_FWFF_PKT_STR_ADDR_V2_8822E) +#define BIT_SET_FWFF_PKT_STR_ADDR_V2_8822E(x, v) \ + (BIT_CLEAR_FWFF_PKT_STR_ADDR_V2_8822E(x) | \ + BIT_FWFF_PKT_STR_ADDR_V2_8822E(v)) + +/* 2 REG_RXPKTNUM_8822E */ + +#define BIT_SHIFT_PKT_NUM_WOL_V1_8822E 16 +#define BIT_MASK_PKT_NUM_WOL_V1_8822E 0xffff +#define BIT_PKT_NUM_WOL_V1_8822E(x) \ + (((x) & BIT_MASK_PKT_NUM_WOL_V1_8822E) \ + << BIT_SHIFT_PKT_NUM_WOL_V1_8822E) +#define BITS_PKT_NUM_WOL_V1_8822E \ + (BIT_MASK_PKT_NUM_WOL_V1_8822E << BIT_SHIFT_PKT_NUM_WOL_V1_8822E) +#define BIT_CLEAR_PKT_NUM_WOL_V1_8822E(x) ((x) & (~BITS_PKT_NUM_WOL_V1_8822E)) +#define BIT_GET_PKT_NUM_WOL_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PKT_NUM_WOL_V1_8822E) & \ + BIT_MASK_PKT_NUM_WOL_V1_8822E) +#define BIT_SET_PKT_NUM_WOL_V1_8822E(x, v) \ + (BIT_CLEAR_PKT_NUM_WOL_V1_8822E(x) | BIT_PKT_NUM_WOL_V1_8822E(v)) + +#define BIT_SHIFT_RXPKT_NUM_V1_8822E 0 +#define BIT_MASK_RXPKT_NUM_V1_8822E 0xffff +#define BIT_RXPKT_NUM_V1_8822E(x) \ + (((x) & BIT_MASK_RXPKT_NUM_V1_8822E) << BIT_SHIFT_RXPKT_NUM_V1_8822E) +#define BITS_RXPKT_NUM_V1_8822E \ + (BIT_MASK_RXPKT_NUM_V1_8822E << BIT_SHIFT_RXPKT_NUM_V1_8822E) +#define BIT_CLEAR_RXPKT_NUM_V1_8822E(x) ((x) & (~BITS_RXPKT_NUM_V1_8822E)) +#define BIT_GET_RXPKT_NUM_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RXPKT_NUM_V1_8822E) & BIT_MASK_RXPKT_NUM_V1_8822E) +#define BIT_SET_RXPKT_NUM_V1_8822E(x, v) \ + (BIT_CLEAR_RXPKT_NUM_V1_8822E(x) | BIT_RXPKT_NUM_V1_8822E(v)) + +/* 2 REG_RXPKTNUM_TH_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_RXPKT_NUM_TH_8822E 0 +#define BIT_MASK_RXPKT_NUM_TH_8822E 0xff +#define BIT_RXPKT_NUM_TH_8822E(x) \ + (((x) & BIT_MASK_RXPKT_NUM_TH_8822E) << BIT_SHIFT_RXPKT_NUM_TH_8822E) +#define BITS_RXPKT_NUM_TH_8822E \ + (BIT_MASK_RXPKT_NUM_TH_8822E << BIT_SHIFT_RXPKT_NUM_TH_8822E) +#define BIT_CLEAR_RXPKT_NUM_TH_8822E(x) ((x) & (~BITS_RXPKT_NUM_TH_8822E)) +#define BIT_GET_RXPKT_NUM_TH_8822E(x) \ + (((x) >> BIT_SHIFT_RXPKT_NUM_TH_8822E) & BIT_MASK_RXPKT_NUM_TH_8822E) +#define BIT_SET_RXPKT_NUM_TH_8822E(x, v) \ + (BIT_CLEAR_RXPKT_NUM_TH_8822E(x) | BIT_RXPKT_NUM_TH_8822E(v)) + +/* 2 REG_FW_MSG1_8822E */ + +#define BIT_SHIFT_FW_MSG_REG1_8822E 0 +#define BIT_MASK_FW_MSG_REG1_8822E 0xffffffffL +#define BIT_FW_MSG_REG1_8822E(x) \ + (((x) & BIT_MASK_FW_MSG_REG1_8822E) << BIT_SHIFT_FW_MSG_REG1_8822E) +#define BITS_FW_MSG_REG1_8822E \ + (BIT_MASK_FW_MSG_REG1_8822E << BIT_SHIFT_FW_MSG_REG1_8822E) +#define BIT_CLEAR_FW_MSG_REG1_8822E(x) ((x) & (~BITS_FW_MSG_REG1_8822E)) +#define BIT_GET_FW_MSG_REG1_8822E(x) \ + (((x) >> BIT_SHIFT_FW_MSG_REG1_8822E) & BIT_MASK_FW_MSG_REG1_8822E) +#define BIT_SET_FW_MSG_REG1_8822E(x, v) \ + (BIT_CLEAR_FW_MSG_REG1_8822E(x) | BIT_FW_MSG_REG1_8822E(v)) + +/* 2 REG_FW_MSG2_8822E */ + +#define BIT_SHIFT_FW_MSG_REG2_8822E 0 +#define BIT_MASK_FW_MSG_REG2_8822E 0xffffffffL +#define BIT_FW_MSG_REG2_8822E(x) \ + (((x) & BIT_MASK_FW_MSG_REG2_8822E) << BIT_SHIFT_FW_MSG_REG2_8822E) +#define BITS_FW_MSG_REG2_8822E \ + (BIT_MASK_FW_MSG_REG2_8822E << BIT_SHIFT_FW_MSG_REG2_8822E) +#define BIT_CLEAR_FW_MSG_REG2_8822E(x) ((x) & (~BITS_FW_MSG_REG2_8822E)) +#define BIT_GET_FW_MSG_REG2_8822E(x) \ + (((x) >> BIT_SHIFT_FW_MSG_REG2_8822E) & BIT_MASK_FW_MSG_REG2_8822E) +#define BIT_SET_FW_MSG_REG2_8822E(x, v) \ + (BIT_CLEAR_FW_MSG_REG2_8822E(x) | BIT_FW_MSG_REG2_8822E(v)) + +/* 2 REG_FW_MSG3_8822E */ + +#define BIT_SHIFT_FW_MSG_REG3_8822E 0 +#define BIT_MASK_FW_MSG_REG3_8822E 0xffffffffL +#define BIT_FW_MSG_REG3_8822E(x) \ + (((x) & BIT_MASK_FW_MSG_REG3_8822E) << BIT_SHIFT_FW_MSG_REG3_8822E) +#define BITS_FW_MSG_REG3_8822E \ + (BIT_MASK_FW_MSG_REG3_8822E << BIT_SHIFT_FW_MSG_REG3_8822E) +#define BIT_CLEAR_FW_MSG_REG3_8822E(x) ((x) & (~BITS_FW_MSG_REG3_8822E)) +#define BIT_GET_FW_MSG_REG3_8822E(x) \ + (((x) >> BIT_SHIFT_FW_MSG_REG3_8822E) & BIT_MASK_FW_MSG_REG3_8822E) +#define BIT_SET_FW_MSG_REG3_8822E(x, v) \ + (BIT_CLEAR_FW_MSG_REG3_8822E(x) | BIT_FW_MSG_REG3_8822E(v)) + +/* 2 REG_FW_MSG4_8822E */ + +#define BIT_SHIFT_FW_MSG_REG4_8822E 0 +#define BIT_MASK_FW_MSG_REG4_8822E 0xffffffffL +#define BIT_FW_MSG_REG4_8822E(x) \ + (((x) & BIT_MASK_FW_MSG_REG4_8822E) << BIT_SHIFT_FW_MSG_REG4_8822E) +#define BITS_FW_MSG_REG4_8822E \ + (BIT_MASK_FW_MSG_REG4_8822E << BIT_SHIFT_FW_MSG_REG4_8822E) +#define BIT_CLEAR_FW_MSG_REG4_8822E(x) ((x) & (~BITS_FW_MSG_REG4_8822E)) +#define BIT_GET_FW_MSG_REG4_8822E(x) \ + (((x) >> BIT_SHIFT_FW_MSG_REG4_8822E) & BIT_MASK_FW_MSG_REG4_8822E) +#define BIT_SET_FW_MSG_REG4_8822E(x, v) \ + (BIT_CLEAR_FW_MSG_REG4_8822E(x) | BIT_FW_MSG_REG4_8822E(v)) + +/* 2 REG_DDMA_CH0SA_8822E */ + +#define BIT_SHIFT_DDMACH0_SA_8822E 0 +#define BIT_MASK_DDMACH0_SA_8822E 0xffffffffL +#define BIT_DDMACH0_SA_8822E(x) \ + (((x) & BIT_MASK_DDMACH0_SA_8822E) << BIT_SHIFT_DDMACH0_SA_8822E) +#define BITS_DDMACH0_SA_8822E \ + (BIT_MASK_DDMACH0_SA_8822E << BIT_SHIFT_DDMACH0_SA_8822E) +#define BIT_CLEAR_DDMACH0_SA_8822E(x) ((x) & (~BITS_DDMACH0_SA_8822E)) +#define BIT_GET_DDMACH0_SA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH0_SA_8822E) & BIT_MASK_DDMACH0_SA_8822E) +#define BIT_SET_DDMACH0_SA_8822E(x, v) \ + (BIT_CLEAR_DDMACH0_SA_8822E(x) | BIT_DDMACH0_SA_8822E(v)) + +/* 2 REG_DDMA_CH0DA_8822E */ + +#define BIT_SHIFT_DDMACH0_DA_8822E 0 +#define BIT_MASK_DDMACH0_DA_8822E 0xffffffffL +#define BIT_DDMACH0_DA_8822E(x) \ + (((x) & BIT_MASK_DDMACH0_DA_8822E) << BIT_SHIFT_DDMACH0_DA_8822E) +#define BITS_DDMACH0_DA_8822E \ + (BIT_MASK_DDMACH0_DA_8822E << BIT_SHIFT_DDMACH0_DA_8822E) +#define BIT_CLEAR_DDMACH0_DA_8822E(x) ((x) & (~BITS_DDMACH0_DA_8822E)) +#define BIT_GET_DDMACH0_DA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH0_DA_8822E) & BIT_MASK_DDMACH0_DA_8822E) +#define BIT_SET_DDMACH0_DA_8822E(x, v) \ + (BIT_CLEAR_DDMACH0_DA_8822E(x) | BIT_DDMACH0_DA_8822E(v)) + +/* 2 REG_DDMA_CH0CTRL_8822E */ +#define BIT_DDMACH0_OWN_8822E BIT(31) +#define BIT_DDMACH0_IDMEM_ERR_8822E BIT(30) +#define BIT_DDMACH0_CHKSUM_EN_8822E BIT(29) +#define BIT_DDMACH0_DA_W_DISABLE_8822E BIT(28) +#define BIT_DDMACH0_CHKSUM_STS_8822E BIT(27) +#define BIT_DDMACH0_DDMA_MODE_8822E BIT(26) +#define BIT_DDMACH0_RESET_CHKSUM_STS_8822E BIT(25) +#define BIT_DDMACH0_CHKSUM_CONT_8822E BIT(24) + +#define BIT_SHIFT_DDMACH0_DLEN_8822E 0 +#define BIT_MASK_DDMACH0_DLEN_8822E 0x3ffff +#define BIT_DDMACH0_DLEN_8822E(x) \ + (((x) & BIT_MASK_DDMACH0_DLEN_8822E) << BIT_SHIFT_DDMACH0_DLEN_8822E) +#define BITS_DDMACH0_DLEN_8822E \ + (BIT_MASK_DDMACH0_DLEN_8822E << BIT_SHIFT_DDMACH0_DLEN_8822E) +#define BIT_CLEAR_DDMACH0_DLEN_8822E(x) ((x) & (~BITS_DDMACH0_DLEN_8822E)) +#define BIT_GET_DDMACH0_DLEN_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH0_DLEN_8822E) & BIT_MASK_DDMACH0_DLEN_8822E) +#define BIT_SET_DDMACH0_DLEN_8822E(x, v) \ + (BIT_CLEAR_DDMACH0_DLEN_8822E(x) | BIT_DDMACH0_DLEN_8822E(v)) + +/* 2 REG_DDMA_CH1SA_8822E */ + +#define BIT_SHIFT_DDMACH1_SA_8822E 0 +#define BIT_MASK_DDMACH1_SA_8822E 0xffffffffL +#define BIT_DDMACH1_SA_8822E(x) \ + (((x) & BIT_MASK_DDMACH1_SA_8822E) << BIT_SHIFT_DDMACH1_SA_8822E) +#define BITS_DDMACH1_SA_8822E \ + (BIT_MASK_DDMACH1_SA_8822E << BIT_SHIFT_DDMACH1_SA_8822E) +#define BIT_CLEAR_DDMACH1_SA_8822E(x) ((x) & (~BITS_DDMACH1_SA_8822E)) +#define BIT_GET_DDMACH1_SA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH1_SA_8822E) & BIT_MASK_DDMACH1_SA_8822E) +#define BIT_SET_DDMACH1_SA_8822E(x, v) \ + (BIT_CLEAR_DDMACH1_SA_8822E(x) | BIT_DDMACH1_SA_8822E(v)) + +/* 2 REG_DDMA_CH1DA_8822E */ + +#define BIT_SHIFT_DDMACH1_DA_8822E 0 +#define BIT_MASK_DDMACH1_DA_8822E 0xffffffffL +#define BIT_DDMACH1_DA_8822E(x) \ + (((x) & BIT_MASK_DDMACH1_DA_8822E) << BIT_SHIFT_DDMACH1_DA_8822E) +#define BITS_DDMACH1_DA_8822E \ + (BIT_MASK_DDMACH1_DA_8822E << BIT_SHIFT_DDMACH1_DA_8822E) +#define BIT_CLEAR_DDMACH1_DA_8822E(x) ((x) & (~BITS_DDMACH1_DA_8822E)) +#define BIT_GET_DDMACH1_DA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH1_DA_8822E) & BIT_MASK_DDMACH1_DA_8822E) +#define BIT_SET_DDMACH1_DA_8822E(x, v) \ + (BIT_CLEAR_DDMACH1_DA_8822E(x) | BIT_DDMACH1_DA_8822E(v)) + +/* 2 REG_DDMA_CH1CTRL_8822E */ +#define BIT_DDMACH1_OWN_8822E BIT(31) +#define BIT_DDMACH1_IDMEM_ERR_8822E BIT(30) +#define BIT_DDMACH1_CHKSUM_EN_8822E BIT(29) +#define BIT_DDMACH1_DA_W_DISABLE_8822E BIT(28) +#define BIT_DDMACH1_CHKSUM_STS_8822E BIT(27) +#define BIT_DDMACH1_DDMA_MODE_8822E BIT(26) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_DDMACH1_DLEN_8822E 0 +#define BIT_MASK_DDMACH1_DLEN_8822E 0x3ffff +#define BIT_DDMACH1_DLEN_8822E(x) \ + (((x) & BIT_MASK_DDMACH1_DLEN_8822E) << BIT_SHIFT_DDMACH1_DLEN_8822E) +#define BITS_DDMACH1_DLEN_8822E \ + (BIT_MASK_DDMACH1_DLEN_8822E << BIT_SHIFT_DDMACH1_DLEN_8822E) +#define BIT_CLEAR_DDMACH1_DLEN_8822E(x) ((x) & (~BITS_DDMACH1_DLEN_8822E)) +#define BIT_GET_DDMACH1_DLEN_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH1_DLEN_8822E) & BIT_MASK_DDMACH1_DLEN_8822E) +#define BIT_SET_DDMACH1_DLEN_8822E(x, v) \ + (BIT_CLEAR_DDMACH1_DLEN_8822E(x) | BIT_DDMACH1_DLEN_8822E(v)) + +/* 2 REG_DDMA_CH2SA_8822E */ + +#define BIT_SHIFT_DDMACH2_SA_8822E 0 +#define BIT_MASK_DDMACH2_SA_8822E 0xffffffffL +#define BIT_DDMACH2_SA_8822E(x) \ + (((x) & BIT_MASK_DDMACH2_SA_8822E) << BIT_SHIFT_DDMACH2_SA_8822E) +#define BITS_DDMACH2_SA_8822E \ + (BIT_MASK_DDMACH2_SA_8822E << BIT_SHIFT_DDMACH2_SA_8822E) +#define BIT_CLEAR_DDMACH2_SA_8822E(x) ((x) & (~BITS_DDMACH2_SA_8822E)) +#define BIT_GET_DDMACH2_SA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH2_SA_8822E) & BIT_MASK_DDMACH2_SA_8822E) +#define BIT_SET_DDMACH2_SA_8822E(x, v) \ + (BIT_CLEAR_DDMACH2_SA_8822E(x) | BIT_DDMACH2_SA_8822E(v)) + +/* 2 REG_DDMA_CH2DA_8822E */ + +#define BIT_SHIFT_DDMACH2_DA_8822E 0 +#define BIT_MASK_DDMACH2_DA_8822E 0xffffffffL +#define BIT_DDMACH2_DA_8822E(x) \ + (((x) & BIT_MASK_DDMACH2_DA_8822E) << BIT_SHIFT_DDMACH2_DA_8822E) +#define BITS_DDMACH2_DA_8822E \ + (BIT_MASK_DDMACH2_DA_8822E << BIT_SHIFT_DDMACH2_DA_8822E) +#define BIT_CLEAR_DDMACH2_DA_8822E(x) ((x) & (~BITS_DDMACH2_DA_8822E)) +#define BIT_GET_DDMACH2_DA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH2_DA_8822E) & BIT_MASK_DDMACH2_DA_8822E) +#define BIT_SET_DDMACH2_DA_8822E(x, v) \ + (BIT_CLEAR_DDMACH2_DA_8822E(x) | BIT_DDMACH2_DA_8822E(v)) + +/* 2 REG_DDMA_CH2CTRL_8822E */ +#define BIT_DDMACH2_OWN_8822E BIT(31) +#define BIT_DDMACH2_IDMEM_ERR_8822E BIT(30) +#define BIT_DDMACH2_CHKSUM_EN_8822E BIT(29) +#define BIT_DDMACH2_DA_W_DISABLE_8822E BIT(28) +#define BIT_DDMACH2_CHKSUM_STS_8822E BIT(27) +#define BIT_DDMACH2_DDMA_MODE_8822E BIT(26) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_DDMACH2_DLEN_8822E 0 +#define BIT_MASK_DDMACH2_DLEN_8822E 0x3ffff +#define BIT_DDMACH2_DLEN_8822E(x) \ + (((x) & BIT_MASK_DDMACH2_DLEN_8822E) << BIT_SHIFT_DDMACH2_DLEN_8822E) +#define BITS_DDMACH2_DLEN_8822E \ + (BIT_MASK_DDMACH2_DLEN_8822E << BIT_SHIFT_DDMACH2_DLEN_8822E) +#define BIT_CLEAR_DDMACH2_DLEN_8822E(x) ((x) & (~BITS_DDMACH2_DLEN_8822E)) +#define BIT_GET_DDMACH2_DLEN_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH2_DLEN_8822E) & BIT_MASK_DDMACH2_DLEN_8822E) +#define BIT_SET_DDMACH2_DLEN_8822E(x, v) \ + (BIT_CLEAR_DDMACH2_DLEN_8822E(x) | BIT_DDMACH2_DLEN_8822E(v)) + +/* 2 REG_DDMA_CH3SA_8822E */ + +#define BIT_SHIFT_DDMACH3_SA_8822E 0 +#define BIT_MASK_DDMACH3_SA_8822E 0xffffffffL +#define BIT_DDMACH3_SA_8822E(x) \ + (((x) & BIT_MASK_DDMACH3_SA_8822E) << BIT_SHIFT_DDMACH3_SA_8822E) +#define BITS_DDMACH3_SA_8822E \ + (BIT_MASK_DDMACH3_SA_8822E << BIT_SHIFT_DDMACH3_SA_8822E) +#define BIT_CLEAR_DDMACH3_SA_8822E(x) ((x) & (~BITS_DDMACH3_SA_8822E)) +#define BIT_GET_DDMACH3_SA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH3_SA_8822E) & BIT_MASK_DDMACH3_SA_8822E) +#define BIT_SET_DDMACH3_SA_8822E(x, v) \ + (BIT_CLEAR_DDMACH3_SA_8822E(x) | BIT_DDMACH3_SA_8822E(v)) + +/* 2 REG_DDMA_CH3DA_8822E */ + +#define BIT_SHIFT_DDMACH3_DA_8822E 0 +#define BIT_MASK_DDMACH3_DA_8822E 0xffffffffL +#define BIT_DDMACH3_DA_8822E(x) \ + (((x) & BIT_MASK_DDMACH3_DA_8822E) << BIT_SHIFT_DDMACH3_DA_8822E) +#define BITS_DDMACH3_DA_8822E \ + (BIT_MASK_DDMACH3_DA_8822E << BIT_SHIFT_DDMACH3_DA_8822E) +#define BIT_CLEAR_DDMACH3_DA_8822E(x) ((x) & (~BITS_DDMACH3_DA_8822E)) +#define BIT_GET_DDMACH3_DA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH3_DA_8822E) & BIT_MASK_DDMACH3_DA_8822E) +#define BIT_SET_DDMACH3_DA_8822E(x, v) \ + (BIT_CLEAR_DDMACH3_DA_8822E(x) | BIT_DDMACH3_DA_8822E(v)) + +/* 2 REG_DDMA_CH3CTRL_8822E */ +#define BIT_DDMACH3_OWN_8822E BIT(31) +#define BIT_DDMACH3_IDMEM_ERR_8822E BIT(30) +#define BIT_DDMACH3_CHKSUM_EN_8822E BIT(29) +#define BIT_DDMACH3_DA_W_DISABLE_8822E BIT(28) +#define BIT_DDMACH3_CHKSUM_STS_8822E BIT(27) +#define BIT_DDMACH3_DDMA_MODE_8822E BIT(26) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_DDMACH3_DLEN_8822E 0 +#define BIT_MASK_DDMACH3_DLEN_8822E 0x3ffff +#define BIT_DDMACH3_DLEN_8822E(x) \ + (((x) & BIT_MASK_DDMACH3_DLEN_8822E) << BIT_SHIFT_DDMACH3_DLEN_8822E) +#define BITS_DDMACH3_DLEN_8822E \ + (BIT_MASK_DDMACH3_DLEN_8822E << BIT_SHIFT_DDMACH3_DLEN_8822E) +#define BIT_CLEAR_DDMACH3_DLEN_8822E(x) ((x) & (~BITS_DDMACH3_DLEN_8822E)) +#define BIT_GET_DDMACH3_DLEN_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH3_DLEN_8822E) & BIT_MASK_DDMACH3_DLEN_8822E) +#define BIT_SET_DDMACH3_DLEN_8822E(x, v) \ + (BIT_CLEAR_DDMACH3_DLEN_8822E(x) | BIT_DDMACH3_DLEN_8822E(v)) + +/* 2 REG_DDMA_CH4SA_8822E */ + +#define BIT_SHIFT_DDMACH4_SA_8822E 0 +#define BIT_MASK_DDMACH4_SA_8822E 0xffffffffL +#define BIT_DDMACH4_SA_8822E(x) \ + (((x) & BIT_MASK_DDMACH4_SA_8822E) << BIT_SHIFT_DDMACH4_SA_8822E) +#define BITS_DDMACH4_SA_8822E \ + (BIT_MASK_DDMACH4_SA_8822E << BIT_SHIFT_DDMACH4_SA_8822E) +#define BIT_CLEAR_DDMACH4_SA_8822E(x) ((x) & (~BITS_DDMACH4_SA_8822E)) +#define BIT_GET_DDMACH4_SA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH4_SA_8822E) & BIT_MASK_DDMACH4_SA_8822E) +#define BIT_SET_DDMACH4_SA_8822E(x, v) \ + (BIT_CLEAR_DDMACH4_SA_8822E(x) | BIT_DDMACH4_SA_8822E(v)) + +/* 2 REG_DDMA_CH4DA_8822E */ + +#define BIT_SHIFT_DDMACH4_DA_8822E 0 +#define BIT_MASK_DDMACH4_DA_8822E 0xffffffffL +#define BIT_DDMACH4_DA_8822E(x) \ + (((x) & BIT_MASK_DDMACH4_DA_8822E) << BIT_SHIFT_DDMACH4_DA_8822E) +#define BITS_DDMACH4_DA_8822E \ + (BIT_MASK_DDMACH4_DA_8822E << BIT_SHIFT_DDMACH4_DA_8822E) +#define BIT_CLEAR_DDMACH4_DA_8822E(x) ((x) & (~BITS_DDMACH4_DA_8822E)) +#define BIT_GET_DDMACH4_DA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH4_DA_8822E) & BIT_MASK_DDMACH4_DA_8822E) +#define BIT_SET_DDMACH4_DA_8822E(x, v) \ + (BIT_CLEAR_DDMACH4_DA_8822E(x) | BIT_DDMACH4_DA_8822E(v)) + +/* 2 REG_DDMA_CH4CTRL_8822E */ +#define BIT_DDMACH4_OWN_8822E BIT(31) +#define BIT_DDMACH4_IDMEM_ERR_8822E BIT(30) +#define BIT_DDMACH4_CHKSUM_EN_8822E BIT(29) +#define BIT_DDMACH4_DA_W_DISABLE_8822E BIT(28) +#define BIT_DDMACH4_CHKSUM_STS_8822E BIT(27) +#define BIT_DDMACH4_DDMA_MODE_8822E BIT(26) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_DDMACH4_DLEN_8822E 0 +#define BIT_MASK_DDMACH4_DLEN_8822E 0x3ffff +#define BIT_DDMACH4_DLEN_8822E(x) \ + (((x) & BIT_MASK_DDMACH4_DLEN_8822E) << BIT_SHIFT_DDMACH4_DLEN_8822E) +#define BITS_DDMACH4_DLEN_8822E \ + (BIT_MASK_DDMACH4_DLEN_8822E << BIT_SHIFT_DDMACH4_DLEN_8822E) +#define BIT_CLEAR_DDMACH4_DLEN_8822E(x) ((x) & (~BITS_DDMACH4_DLEN_8822E)) +#define BIT_GET_DDMACH4_DLEN_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH4_DLEN_8822E) & BIT_MASK_DDMACH4_DLEN_8822E) +#define BIT_SET_DDMACH4_DLEN_8822E(x, v) \ + (BIT_CLEAR_DDMACH4_DLEN_8822E(x) | BIT_DDMACH4_DLEN_8822E(v)) + +/* 2 REG_DDMA_CH5SA_8822E */ + +#define BIT_SHIFT_DDMACH5_SA_8822E 0 +#define BIT_MASK_DDMACH5_SA_8822E 0xffffffffL +#define BIT_DDMACH5_SA_8822E(x) \ + (((x) & BIT_MASK_DDMACH5_SA_8822E) << BIT_SHIFT_DDMACH5_SA_8822E) +#define BITS_DDMACH5_SA_8822E \ + (BIT_MASK_DDMACH5_SA_8822E << BIT_SHIFT_DDMACH5_SA_8822E) +#define BIT_CLEAR_DDMACH5_SA_8822E(x) ((x) & (~BITS_DDMACH5_SA_8822E)) +#define BIT_GET_DDMACH5_SA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH5_SA_8822E) & BIT_MASK_DDMACH5_SA_8822E) +#define BIT_SET_DDMACH5_SA_8822E(x, v) \ + (BIT_CLEAR_DDMACH5_SA_8822E(x) | BIT_DDMACH5_SA_8822E(v)) + +/* 2 REG_DDMA_CH5DA_8822E */ + +#define BIT_SHIFT_DDMACH5_DA_8822E 0 +#define BIT_MASK_DDMACH5_DA_8822E 0xffffffffL +#define BIT_DDMACH5_DA_8822E(x) \ + (((x) & BIT_MASK_DDMACH5_DA_8822E) << BIT_SHIFT_DDMACH5_DA_8822E) +#define BITS_DDMACH5_DA_8822E \ + (BIT_MASK_DDMACH5_DA_8822E << BIT_SHIFT_DDMACH5_DA_8822E) +#define BIT_CLEAR_DDMACH5_DA_8822E(x) ((x) & (~BITS_DDMACH5_DA_8822E)) +#define BIT_GET_DDMACH5_DA_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH5_DA_8822E) & BIT_MASK_DDMACH5_DA_8822E) +#define BIT_SET_DDMACH5_DA_8822E(x, v) \ + (BIT_CLEAR_DDMACH5_DA_8822E(x) | BIT_DDMACH5_DA_8822E(v)) + +/* 2 REG_DDMA_CH5CTRL_8822E */ +#define BIT_DDMACH5_OWN_8822E BIT(31) +#define BIT_DDMACH5_IDMEM_ERR_8822E BIT(30) +#define BIT_DDMACH5_CHKSUM_EN_8822E BIT(29) +#define BIT_DDMACH5_DA_W_DISABLE_8822E BIT(28) +#define BIT_DDMACH5_CHKSUM_STS_8822E BIT(27) +#define BIT_DDMACH5_DDMA_MODE_8822E BIT(26) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_DDMACH5_DLEN_8822E 0 +#define BIT_MASK_DDMACH5_DLEN_8822E 0x3ffff +#define BIT_DDMACH5_DLEN_8822E(x) \ + (((x) & BIT_MASK_DDMACH5_DLEN_8822E) << BIT_SHIFT_DDMACH5_DLEN_8822E) +#define BITS_DDMACH5_DLEN_8822E \ + (BIT_MASK_DDMACH5_DLEN_8822E << BIT_SHIFT_DDMACH5_DLEN_8822E) +#define BIT_CLEAR_DDMACH5_DLEN_8822E(x) ((x) & (~BITS_DDMACH5_DLEN_8822E)) +#define BIT_GET_DDMACH5_DLEN_8822E(x) \ + (((x) >> BIT_SHIFT_DDMACH5_DLEN_8822E) & BIT_MASK_DDMACH5_DLEN_8822E) +#define BIT_SET_DDMACH5_DLEN_8822E(x, v) \ + (BIT_CLEAR_DDMACH5_DLEN_8822E(x) | BIT_DDMACH5_DLEN_8822E(v)) + +/* 2 REG_DDMA_INT_MSK_8822E */ +#define BIT_DDMACH5_MSK_8822E BIT(5) +#define BIT_DDMACH4_MSK_8822E BIT(4) +#define BIT_DDMACH3_MSK_8822E BIT(3) +#define BIT_DDMACH2_MSK_8822E BIT(2) +#define BIT_DDMACH1_MSK_8822E BIT(1) +#define BIT_DDMACH0_MSK_8822E BIT(0) + +/* 2 REG_DDMA_CHSTATUS_8822E */ +#define BIT_DDMACH5_BUSY_8822E BIT(5) +#define BIT_DDMACH4_BUSY_8822E BIT(4) +#define BIT_DDMACH3_BUSY_8822E BIT(3) +#define BIT_DDMACH2_BUSY_8822E BIT(2) +#define BIT_DDMACH1_BUSY_8822E BIT(1) +#define BIT_DDMACH0_BUSY_8822E BIT(0) + +/* 2 REG_DDMA_CHKSUM_8822E */ + +#define BIT_SHIFT_IDDMA0_CHKSUM_8822E 0 +#define BIT_MASK_IDDMA0_CHKSUM_8822E 0xffff +#define BIT_IDDMA0_CHKSUM_8822E(x) \ + (((x) & BIT_MASK_IDDMA0_CHKSUM_8822E) << BIT_SHIFT_IDDMA0_CHKSUM_8822E) +#define BITS_IDDMA0_CHKSUM_8822E \ + (BIT_MASK_IDDMA0_CHKSUM_8822E << BIT_SHIFT_IDDMA0_CHKSUM_8822E) +#define BIT_CLEAR_IDDMA0_CHKSUM_8822E(x) ((x) & (~BITS_IDDMA0_CHKSUM_8822E)) +#define BIT_GET_IDDMA0_CHKSUM_8822E(x) \ + (((x) >> BIT_SHIFT_IDDMA0_CHKSUM_8822E) & BIT_MASK_IDDMA0_CHKSUM_8822E) +#define BIT_SET_IDDMA0_CHKSUM_8822E(x, v) \ + (BIT_CLEAR_IDDMA0_CHKSUM_8822E(x) | BIT_IDDMA0_CHKSUM_8822E(v)) + +/* 2 REG_DDMA_MONITOR_8822E */ +#define BIT_IDDMA0_PERMU_UNDERFLOW_8822E BIT(14) +#define BIT_IDDMA0_FIFO_UNDERFLOW_8822E BIT(13) +#define BIT_IDDMA0_FIFO_OVERFLOW_8822E BIT(12) +#define BIT_CH5_ERR_8822E BIT(5) +#define BIT_CH4_ERR_8822E BIT(4) +#define BIT_CH3_ERR_8822E BIT(3) +#define BIT_CH2_ERR_8822E BIT(2) +#define BIT_CH1_ERR_8822E BIT(1) +#define BIT_CH0_ERR_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_PCIE_CTRL_8822E */ +#define BIT_PCIEIO_PERSTB_SEL_8822E BIT(31) + +#define BIT_SHIFT_PCIE_MAX_RXDMA_8822E 28 +#define BIT_MASK_PCIE_MAX_RXDMA_8822E 0x7 +#define BIT_PCIE_MAX_RXDMA_8822E(x) \ + (((x) & BIT_MASK_PCIE_MAX_RXDMA_8822E) \ + << BIT_SHIFT_PCIE_MAX_RXDMA_8822E) +#define BITS_PCIE_MAX_RXDMA_8822E \ + (BIT_MASK_PCIE_MAX_RXDMA_8822E << BIT_SHIFT_PCIE_MAX_RXDMA_8822E) +#define BIT_CLEAR_PCIE_MAX_RXDMA_8822E(x) ((x) & (~BITS_PCIE_MAX_RXDMA_8822E)) +#define BIT_GET_PCIE_MAX_RXDMA_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_MAX_RXDMA_8822E) & \ + BIT_MASK_PCIE_MAX_RXDMA_8822E) +#define BIT_SET_PCIE_MAX_RXDMA_8822E(x, v) \ + (BIT_CLEAR_PCIE_MAX_RXDMA_8822E(x) | BIT_PCIE_MAX_RXDMA_8822E(v)) + +#define BIT_SHIFT_PCIE_MAX_TXDMA_8822E 24 +#define BIT_MASK_PCIE_MAX_TXDMA_8822E 0x7 +#define BIT_PCIE_MAX_TXDMA_8822E(x) \ + (((x) & BIT_MASK_PCIE_MAX_TXDMA_8822E) \ + << BIT_SHIFT_PCIE_MAX_TXDMA_8822E) +#define BITS_PCIE_MAX_TXDMA_8822E \ + (BIT_MASK_PCIE_MAX_TXDMA_8822E << BIT_SHIFT_PCIE_MAX_TXDMA_8822E) +#define BIT_CLEAR_PCIE_MAX_TXDMA_8822E(x) ((x) & (~BITS_PCIE_MAX_TXDMA_8822E)) +#define BIT_GET_PCIE_MAX_TXDMA_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_MAX_TXDMA_8822E) & \ + BIT_MASK_PCIE_MAX_TXDMA_8822E) +#define BIT_SET_PCIE_MAX_TXDMA_8822E(x, v) \ + (BIT_CLEAR_PCIE_MAX_TXDMA_8822E(x) | BIT_PCIE_MAX_TXDMA_8822E(v)) + +#define BIT_EN_CPL_TIMEOUT_PS_8822E BIT(22) +#define BIT_REG_TXDMA_FAIL_PS_8822E BIT(21) +#define BIT_PCIE_RST_TRXDMA_INTF_8822E BIT(20) +#define BIT_EN_HWENTR_L1_8822E BIT(19) +#define BIT_EN_ADV_CLKGATE_8822E BIT(18) +#define BIT_PCIE_EN_SWENT_L23_8822E BIT(17) +#define BIT_PCIE_EN_HWEXT_L1_8822E BIT(16) +#define BIT_RX_CLOSE_EN_8822E BIT(15) +#define BIT_STOP_BCNQ_8822E BIT(14) +#define BIT_STOP_MGQ_8822E BIT(13) +#define BIT_STOP_VOQ_8822E BIT(12) +#define BIT_STOP_VIQ_8822E BIT(11) +#define BIT_STOP_BEQ_8822E BIT(10) +#define BIT_STOP_BKQ_8822E BIT(9) +#define BIT_STOP_RXQ_8822E BIT(8) +#define BIT_STOP_HI7Q_8822E BIT(7) +#define BIT_STOP_HI6Q_8822E BIT(6) +#define BIT_STOP_HI5Q_8822E BIT(5) +#define BIT_STOP_HI4Q_8822E BIT(4) +#define BIT_STOP_HI3Q_8822E BIT(3) +#define BIT_STOP_HI2Q_8822E BIT(2) +#define BIT_STOP_HI1Q_8822E BIT(1) +#define BIT_STOP_HI0Q_8822E BIT(0) + +/* 2 REG_INT_MIG_8822E */ + +#define BIT_SHIFT_TRXCOUNTER_MATCH_8822E 24 +#define BIT_MASK_TRXCOUNTER_MATCH_8822E 0xff +#define BIT_TRXCOUNTER_MATCH_8822E(x) \ + (((x) & BIT_MASK_TRXCOUNTER_MATCH_8822E) \ + << BIT_SHIFT_TRXCOUNTER_MATCH_8822E) +#define BITS_TRXCOUNTER_MATCH_8822E \ + (BIT_MASK_TRXCOUNTER_MATCH_8822E << BIT_SHIFT_TRXCOUNTER_MATCH_8822E) +#define BIT_CLEAR_TRXCOUNTER_MATCH_8822E(x) \ + ((x) & (~BITS_TRXCOUNTER_MATCH_8822E)) +#define BIT_GET_TRXCOUNTER_MATCH_8822E(x) \ + (((x) >> BIT_SHIFT_TRXCOUNTER_MATCH_8822E) & \ + BIT_MASK_TRXCOUNTER_MATCH_8822E) +#define BIT_SET_TRXCOUNTER_MATCH_8822E(x, v) \ + (BIT_CLEAR_TRXCOUNTER_MATCH_8822E(x) | BIT_TRXCOUNTER_MATCH_8822E(v)) + +#define BIT_SHIFT_TRXTIMER_MATCH_8822E 16 +#define BIT_MASK_TRXTIMER_MATCH_8822E 0xff +#define BIT_TRXTIMER_MATCH_8822E(x) \ + (((x) & BIT_MASK_TRXTIMER_MATCH_8822E) \ + << BIT_SHIFT_TRXTIMER_MATCH_8822E) +#define BITS_TRXTIMER_MATCH_8822E \ + (BIT_MASK_TRXTIMER_MATCH_8822E << BIT_SHIFT_TRXTIMER_MATCH_8822E) +#define BIT_CLEAR_TRXTIMER_MATCH_8822E(x) ((x) & (~BITS_TRXTIMER_MATCH_8822E)) +#define BIT_GET_TRXTIMER_MATCH_8822E(x) \ + (((x) >> BIT_SHIFT_TRXTIMER_MATCH_8822E) & \ + BIT_MASK_TRXTIMER_MATCH_8822E) +#define BIT_SET_TRXTIMER_MATCH_8822E(x, v) \ + (BIT_CLEAR_TRXTIMER_MATCH_8822E(x) | BIT_TRXTIMER_MATCH_8822E(v)) + +#define BIT_SHIFT_TRXTIMER_UNIT_8822E 0 +#define BIT_MASK_TRXTIMER_UNIT_8822E 0x3 +#define BIT_TRXTIMER_UNIT_8822E(x) \ + (((x) & BIT_MASK_TRXTIMER_UNIT_8822E) << BIT_SHIFT_TRXTIMER_UNIT_8822E) +#define BITS_TRXTIMER_UNIT_8822E \ + (BIT_MASK_TRXTIMER_UNIT_8822E << BIT_SHIFT_TRXTIMER_UNIT_8822E) +#define BIT_CLEAR_TRXTIMER_UNIT_8822E(x) ((x) & (~BITS_TRXTIMER_UNIT_8822E)) +#define BIT_GET_TRXTIMER_UNIT_8822E(x) \ + (((x) >> BIT_SHIFT_TRXTIMER_UNIT_8822E) & BIT_MASK_TRXTIMER_UNIT_8822E) +#define BIT_SET_TRXTIMER_UNIT_8822E(x, v) \ + (BIT_CLEAR_TRXTIMER_UNIT_8822E(x) | BIT_TRXTIMER_UNIT_8822E(v)) + +/* 2 REG_BCNQ_TXBD_DESA_8822E */ + +#define BIT_SHIFT_BCNQ_TXBD_DESA_8822E 0 +#define BIT_MASK_BCNQ_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_BCNQ_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_BCNQ_TXBD_DESA_8822E) \ + << BIT_SHIFT_BCNQ_TXBD_DESA_8822E) +#define BITS_BCNQ_TXBD_DESA_8822E \ + (BIT_MASK_BCNQ_TXBD_DESA_8822E << BIT_SHIFT_BCNQ_TXBD_DESA_8822E) +#define BIT_CLEAR_BCNQ_TXBD_DESA_8822E(x) ((x) & (~BITS_BCNQ_TXBD_DESA_8822E)) +#define BIT_GET_BCNQ_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_BCNQ_TXBD_DESA_8822E) & \ + BIT_MASK_BCNQ_TXBD_DESA_8822E) +#define BIT_SET_BCNQ_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_BCNQ_TXBD_DESA_8822E(x) | BIT_BCNQ_TXBD_DESA_8822E(v)) + +/* 2 REG_MGQ_TXBD_DESA_8822E */ + +#define BIT_SHIFT_MGQ_TXBD_DESA_8822E 0 +#define BIT_MASK_MGQ_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_MGQ_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_MGQ_TXBD_DESA_8822E) << BIT_SHIFT_MGQ_TXBD_DESA_8822E) +#define BITS_MGQ_TXBD_DESA_8822E \ + (BIT_MASK_MGQ_TXBD_DESA_8822E << BIT_SHIFT_MGQ_TXBD_DESA_8822E) +#define BIT_CLEAR_MGQ_TXBD_DESA_8822E(x) ((x) & (~BITS_MGQ_TXBD_DESA_8822E)) +#define BIT_GET_MGQ_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_TXBD_DESA_8822E) & BIT_MASK_MGQ_TXBD_DESA_8822E) +#define BIT_SET_MGQ_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_MGQ_TXBD_DESA_8822E(x) | BIT_MGQ_TXBD_DESA_8822E(v)) + +/* 2 REG_VOQ_TXBD_DESA_8822E */ + +#define BIT_SHIFT_VOQ_TXBD_DESA_8822E 0 +#define BIT_MASK_VOQ_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_VOQ_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_VOQ_TXBD_DESA_8822E) << BIT_SHIFT_VOQ_TXBD_DESA_8822E) +#define BITS_VOQ_TXBD_DESA_8822E \ + (BIT_MASK_VOQ_TXBD_DESA_8822E << BIT_SHIFT_VOQ_TXBD_DESA_8822E) +#define BIT_CLEAR_VOQ_TXBD_DESA_8822E(x) ((x) & (~BITS_VOQ_TXBD_DESA_8822E)) +#define BIT_GET_VOQ_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_VOQ_TXBD_DESA_8822E) & BIT_MASK_VOQ_TXBD_DESA_8822E) +#define BIT_SET_VOQ_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_VOQ_TXBD_DESA_8822E(x) | BIT_VOQ_TXBD_DESA_8822E(v)) + +/* 2 REG_VIQ_TXBD_DESA_8822E */ + +#define BIT_SHIFT_VIQ_TXBD_DESA_8822E 0 +#define BIT_MASK_VIQ_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_VIQ_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_VIQ_TXBD_DESA_8822E) << BIT_SHIFT_VIQ_TXBD_DESA_8822E) +#define BITS_VIQ_TXBD_DESA_8822E \ + (BIT_MASK_VIQ_TXBD_DESA_8822E << BIT_SHIFT_VIQ_TXBD_DESA_8822E) +#define BIT_CLEAR_VIQ_TXBD_DESA_8822E(x) ((x) & (~BITS_VIQ_TXBD_DESA_8822E)) +#define BIT_GET_VIQ_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_VIQ_TXBD_DESA_8822E) & BIT_MASK_VIQ_TXBD_DESA_8822E) +#define BIT_SET_VIQ_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_VIQ_TXBD_DESA_8822E(x) | BIT_VIQ_TXBD_DESA_8822E(v)) + +/* 2 REG_BEQ_TXBD_DESA_8822E */ + +#define BIT_SHIFT_BEQ_TXBD_DESA_8822E 0 +#define BIT_MASK_BEQ_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_BEQ_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_BEQ_TXBD_DESA_8822E) << BIT_SHIFT_BEQ_TXBD_DESA_8822E) +#define BITS_BEQ_TXBD_DESA_8822E \ + (BIT_MASK_BEQ_TXBD_DESA_8822E << BIT_SHIFT_BEQ_TXBD_DESA_8822E) +#define BIT_CLEAR_BEQ_TXBD_DESA_8822E(x) ((x) & (~BITS_BEQ_TXBD_DESA_8822E)) +#define BIT_GET_BEQ_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_BEQ_TXBD_DESA_8822E) & BIT_MASK_BEQ_TXBD_DESA_8822E) +#define BIT_SET_BEQ_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_BEQ_TXBD_DESA_8822E(x) | BIT_BEQ_TXBD_DESA_8822E(v)) + +/* 2 REG_BKQ_TXBD_DESA_8822E */ + +#define BIT_SHIFT_BKQ_TXBD_DESA_8822E 0 +#define BIT_MASK_BKQ_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_BKQ_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_BKQ_TXBD_DESA_8822E) << BIT_SHIFT_BKQ_TXBD_DESA_8822E) +#define BITS_BKQ_TXBD_DESA_8822E \ + (BIT_MASK_BKQ_TXBD_DESA_8822E << BIT_SHIFT_BKQ_TXBD_DESA_8822E) +#define BIT_CLEAR_BKQ_TXBD_DESA_8822E(x) ((x) & (~BITS_BKQ_TXBD_DESA_8822E)) +#define BIT_GET_BKQ_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_BKQ_TXBD_DESA_8822E) & BIT_MASK_BKQ_TXBD_DESA_8822E) +#define BIT_SET_BKQ_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_BKQ_TXBD_DESA_8822E(x) | BIT_BKQ_TXBD_DESA_8822E(v)) + +/* 2 REG_RXQ_RXBD_DESA_8822E */ + +#define BIT_SHIFT_RXQ_RXBD_DESA_8822E 0 +#define BIT_MASK_RXQ_RXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_RXQ_RXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_RXQ_RXBD_DESA_8822E) << BIT_SHIFT_RXQ_RXBD_DESA_8822E) +#define BITS_RXQ_RXBD_DESA_8822E \ + (BIT_MASK_RXQ_RXBD_DESA_8822E << BIT_SHIFT_RXQ_RXBD_DESA_8822E) +#define BIT_CLEAR_RXQ_RXBD_DESA_8822E(x) ((x) & (~BITS_RXQ_RXBD_DESA_8822E)) +#define BIT_GET_RXQ_RXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_RXQ_RXBD_DESA_8822E) & BIT_MASK_RXQ_RXBD_DESA_8822E) +#define BIT_SET_RXQ_RXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_RXQ_RXBD_DESA_8822E(x) | BIT_RXQ_RXBD_DESA_8822E(v)) + +/* 2 REG_HI0Q_TXBD_DESA_8822E */ + +#define BIT_SHIFT_HI0Q_TXBD_DESA_8822E 0 +#define BIT_MASK_HI0Q_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_HI0Q_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_HI0Q_TXBD_DESA_8822E) \ + << BIT_SHIFT_HI0Q_TXBD_DESA_8822E) +#define BITS_HI0Q_TXBD_DESA_8822E \ + (BIT_MASK_HI0Q_TXBD_DESA_8822E << BIT_SHIFT_HI0Q_TXBD_DESA_8822E) +#define BIT_CLEAR_HI0Q_TXBD_DESA_8822E(x) ((x) & (~BITS_HI0Q_TXBD_DESA_8822E)) +#define BIT_GET_HI0Q_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_HI0Q_TXBD_DESA_8822E) & \ + BIT_MASK_HI0Q_TXBD_DESA_8822E) +#define BIT_SET_HI0Q_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_HI0Q_TXBD_DESA_8822E(x) | BIT_HI0Q_TXBD_DESA_8822E(v)) + +/* 2 REG_HI1Q_TXBD_DESA_8822E */ + +#define BIT_SHIFT_HI1Q_TXBD_DESA_8822E 0 +#define BIT_MASK_HI1Q_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_HI1Q_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_HI1Q_TXBD_DESA_8822E) \ + << BIT_SHIFT_HI1Q_TXBD_DESA_8822E) +#define BITS_HI1Q_TXBD_DESA_8822E \ + (BIT_MASK_HI1Q_TXBD_DESA_8822E << BIT_SHIFT_HI1Q_TXBD_DESA_8822E) +#define BIT_CLEAR_HI1Q_TXBD_DESA_8822E(x) ((x) & (~BITS_HI1Q_TXBD_DESA_8822E)) +#define BIT_GET_HI1Q_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_HI1Q_TXBD_DESA_8822E) & \ + BIT_MASK_HI1Q_TXBD_DESA_8822E) +#define BIT_SET_HI1Q_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_HI1Q_TXBD_DESA_8822E(x) | BIT_HI1Q_TXBD_DESA_8822E(v)) + +/* 2 REG_HI2Q_TXBD_DESA_8822E */ + +#define BIT_SHIFT_HI2Q_TXBD_DESA_8822E 0 +#define BIT_MASK_HI2Q_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_HI2Q_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_HI2Q_TXBD_DESA_8822E) \ + << BIT_SHIFT_HI2Q_TXBD_DESA_8822E) +#define BITS_HI2Q_TXBD_DESA_8822E \ + (BIT_MASK_HI2Q_TXBD_DESA_8822E << BIT_SHIFT_HI2Q_TXBD_DESA_8822E) +#define BIT_CLEAR_HI2Q_TXBD_DESA_8822E(x) ((x) & (~BITS_HI2Q_TXBD_DESA_8822E)) +#define BIT_GET_HI2Q_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_HI2Q_TXBD_DESA_8822E) & \ + BIT_MASK_HI2Q_TXBD_DESA_8822E) +#define BIT_SET_HI2Q_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_HI2Q_TXBD_DESA_8822E(x) | BIT_HI2Q_TXBD_DESA_8822E(v)) + +/* 2 REG_HI3Q_TXBD_DESA_8822E */ + +#define BIT_SHIFT_HI3Q_TXBD_DESA_8822E 0 +#define BIT_MASK_HI3Q_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_HI3Q_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_HI3Q_TXBD_DESA_8822E) \ + << BIT_SHIFT_HI3Q_TXBD_DESA_8822E) +#define BITS_HI3Q_TXBD_DESA_8822E \ + (BIT_MASK_HI3Q_TXBD_DESA_8822E << BIT_SHIFT_HI3Q_TXBD_DESA_8822E) +#define BIT_CLEAR_HI3Q_TXBD_DESA_8822E(x) ((x) & (~BITS_HI3Q_TXBD_DESA_8822E)) +#define BIT_GET_HI3Q_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_HI3Q_TXBD_DESA_8822E) & \ + BIT_MASK_HI3Q_TXBD_DESA_8822E) +#define BIT_SET_HI3Q_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_HI3Q_TXBD_DESA_8822E(x) | BIT_HI3Q_TXBD_DESA_8822E(v)) + +/* 2 REG_HI4Q_TXBD_DESA_8822E */ + +#define BIT_SHIFT_HI4Q_TXBD_DESA_8822E 0 +#define BIT_MASK_HI4Q_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_HI4Q_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_HI4Q_TXBD_DESA_8822E) \ + << BIT_SHIFT_HI4Q_TXBD_DESA_8822E) +#define BITS_HI4Q_TXBD_DESA_8822E \ + (BIT_MASK_HI4Q_TXBD_DESA_8822E << BIT_SHIFT_HI4Q_TXBD_DESA_8822E) +#define BIT_CLEAR_HI4Q_TXBD_DESA_8822E(x) ((x) & (~BITS_HI4Q_TXBD_DESA_8822E)) +#define BIT_GET_HI4Q_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_HI4Q_TXBD_DESA_8822E) & \ + BIT_MASK_HI4Q_TXBD_DESA_8822E) +#define BIT_SET_HI4Q_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_HI4Q_TXBD_DESA_8822E(x) | BIT_HI4Q_TXBD_DESA_8822E(v)) + +/* 2 REG_HI5Q_TXBD_DESA_8822E */ + +#define BIT_SHIFT_HI5Q_TXBD_DESA_8822E 0 +#define BIT_MASK_HI5Q_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_HI5Q_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_HI5Q_TXBD_DESA_8822E) \ + << BIT_SHIFT_HI5Q_TXBD_DESA_8822E) +#define BITS_HI5Q_TXBD_DESA_8822E \ + (BIT_MASK_HI5Q_TXBD_DESA_8822E << BIT_SHIFT_HI5Q_TXBD_DESA_8822E) +#define BIT_CLEAR_HI5Q_TXBD_DESA_8822E(x) ((x) & (~BITS_HI5Q_TXBD_DESA_8822E)) +#define BIT_GET_HI5Q_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_HI5Q_TXBD_DESA_8822E) & \ + BIT_MASK_HI5Q_TXBD_DESA_8822E) +#define BIT_SET_HI5Q_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_HI5Q_TXBD_DESA_8822E(x) | BIT_HI5Q_TXBD_DESA_8822E(v)) + +/* 2 REG_HI6Q_TXBD_DESA_8822E */ + +#define BIT_SHIFT_HI6Q_TXBD_DESA_8822E 0 +#define BIT_MASK_HI6Q_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_HI6Q_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_HI6Q_TXBD_DESA_8822E) \ + << BIT_SHIFT_HI6Q_TXBD_DESA_8822E) +#define BITS_HI6Q_TXBD_DESA_8822E \ + (BIT_MASK_HI6Q_TXBD_DESA_8822E << BIT_SHIFT_HI6Q_TXBD_DESA_8822E) +#define BIT_CLEAR_HI6Q_TXBD_DESA_8822E(x) ((x) & (~BITS_HI6Q_TXBD_DESA_8822E)) +#define BIT_GET_HI6Q_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_HI6Q_TXBD_DESA_8822E) & \ + BIT_MASK_HI6Q_TXBD_DESA_8822E) +#define BIT_SET_HI6Q_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_HI6Q_TXBD_DESA_8822E(x) | BIT_HI6Q_TXBD_DESA_8822E(v)) + +/* 2 REG_HI7Q_TXBD_DESA_8822E */ + +#define BIT_SHIFT_HI7Q_TXBD_DESA_8822E 0 +#define BIT_MASK_HI7Q_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_HI7Q_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_HI7Q_TXBD_DESA_8822E) \ + << BIT_SHIFT_HI7Q_TXBD_DESA_8822E) +#define BITS_HI7Q_TXBD_DESA_8822E \ + (BIT_MASK_HI7Q_TXBD_DESA_8822E << BIT_SHIFT_HI7Q_TXBD_DESA_8822E) +#define BIT_CLEAR_HI7Q_TXBD_DESA_8822E(x) ((x) & (~BITS_HI7Q_TXBD_DESA_8822E)) +#define BIT_GET_HI7Q_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_HI7Q_TXBD_DESA_8822E) & \ + BIT_MASK_HI7Q_TXBD_DESA_8822E) +#define BIT_SET_HI7Q_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_HI7Q_TXBD_DESA_8822E(x) | BIT_HI7Q_TXBD_DESA_8822E(v)) + +/* 2 REG_MGQ_TXBD_NUM_8822E */ +#define BIT_PCIE_MGQ_FLAG_8822E BIT(14) + +#define BIT_SHIFT_MGQ_DESC_MODE_8822E 12 +#define BIT_MASK_MGQ_DESC_MODE_8822E 0x3 +#define BIT_MGQ_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_MGQ_DESC_MODE_8822E) << BIT_SHIFT_MGQ_DESC_MODE_8822E) +#define BITS_MGQ_DESC_MODE_8822E \ + (BIT_MASK_MGQ_DESC_MODE_8822E << BIT_SHIFT_MGQ_DESC_MODE_8822E) +#define BIT_CLEAR_MGQ_DESC_MODE_8822E(x) ((x) & (~BITS_MGQ_DESC_MODE_8822E)) +#define BIT_GET_MGQ_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_DESC_MODE_8822E) & BIT_MASK_MGQ_DESC_MODE_8822E) +#define BIT_SET_MGQ_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_MGQ_DESC_MODE_8822E(x) | BIT_MGQ_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_MGQ_DESC_NUM_8822E 0 +#define BIT_MASK_MGQ_DESC_NUM_8822E 0xfff +#define BIT_MGQ_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_MGQ_DESC_NUM_8822E) << BIT_SHIFT_MGQ_DESC_NUM_8822E) +#define BITS_MGQ_DESC_NUM_8822E \ + (BIT_MASK_MGQ_DESC_NUM_8822E << BIT_SHIFT_MGQ_DESC_NUM_8822E) +#define BIT_CLEAR_MGQ_DESC_NUM_8822E(x) ((x) & (~BITS_MGQ_DESC_NUM_8822E)) +#define BIT_GET_MGQ_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_DESC_NUM_8822E) & BIT_MASK_MGQ_DESC_NUM_8822E) +#define BIT_SET_MGQ_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_MGQ_DESC_NUM_8822E(x) | BIT_MGQ_DESC_NUM_8822E(v)) + +/* 2 REG_RX_RXBD_NUM_8822E */ +#define BIT_SYS_32_64_8822E BIT(15) + +#define BIT_SHIFT_BCNQ_DESC_MODE_8822E 13 +#define BIT_MASK_BCNQ_DESC_MODE_8822E 0x3 +#define BIT_BCNQ_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_BCNQ_DESC_MODE_8822E) \ + << BIT_SHIFT_BCNQ_DESC_MODE_8822E) +#define BITS_BCNQ_DESC_MODE_8822E \ + (BIT_MASK_BCNQ_DESC_MODE_8822E << BIT_SHIFT_BCNQ_DESC_MODE_8822E) +#define BIT_CLEAR_BCNQ_DESC_MODE_8822E(x) ((x) & (~BITS_BCNQ_DESC_MODE_8822E)) +#define BIT_GET_BCNQ_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_BCNQ_DESC_MODE_8822E) & \ + BIT_MASK_BCNQ_DESC_MODE_8822E) +#define BIT_SET_BCNQ_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_BCNQ_DESC_MODE_8822E(x) | BIT_BCNQ_DESC_MODE_8822E(v)) + +#define BIT_PCIE_BCNQ_FLAG_8822E BIT(12) + +#define BIT_SHIFT_RXQ_DESC_NUM_8822E 0 +#define BIT_MASK_RXQ_DESC_NUM_8822E 0xfff +#define BIT_RXQ_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_RXQ_DESC_NUM_8822E) << BIT_SHIFT_RXQ_DESC_NUM_8822E) +#define BITS_RXQ_DESC_NUM_8822E \ + (BIT_MASK_RXQ_DESC_NUM_8822E << BIT_SHIFT_RXQ_DESC_NUM_8822E) +#define BIT_CLEAR_RXQ_DESC_NUM_8822E(x) ((x) & (~BITS_RXQ_DESC_NUM_8822E)) +#define BIT_GET_RXQ_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_RXQ_DESC_NUM_8822E) & BIT_MASK_RXQ_DESC_NUM_8822E) +#define BIT_SET_RXQ_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_RXQ_DESC_NUM_8822E(x) | BIT_RXQ_DESC_NUM_8822E(v)) + +/* 2 REG_VOQ_TXBD_NUM_8822E */ +#define BIT_PCIE_VOQ_FLAG_8822E BIT(14) + +#define BIT_SHIFT_VOQ_DESC_MODE_8822E 12 +#define BIT_MASK_VOQ_DESC_MODE_8822E 0x3 +#define BIT_VOQ_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_VOQ_DESC_MODE_8822E) << BIT_SHIFT_VOQ_DESC_MODE_8822E) +#define BITS_VOQ_DESC_MODE_8822E \ + (BIT_MASK_VOQ_DESC_MODE_8822E << BIT_SHIFT_VOQ_DESC_MODE_8822E) +#define BIT_CLEAR_VOQ_DESC_MODE_8822E(x) ((x) & (~BITS_VOQ_DESC_MODE_8822E)) +#define BIT_GET_VOQ_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_VOQ_DESC_MODE_8822E) & BIT_MASK_VOQ_DESC_MODE_8822E) +#define BIT_SET_VOQ_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_VOQ_DESC_MODE_8822E(x) | BIT_VOQ_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_VOQ_DESC_NUM_8822E 0 +#define BIT_MASK_VOQ_DESC_NUM_8822E 0xfff +#define BIT_VOQ_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_VOQ_DESC_NUM_8822E) << BIT_SHIFT_VOQ_DESC_NUM_8822E) +#define BITS_VOQ_DESC_NUM_8822E \ + (BIT_MASK_VOQ_DESC_NUM_8822E << BIT_SHIFT_VOQ_DESC_NUM_8822E) +#define BIT_CLEAR_VOQ_DESC_NUM_8822E(x) ((x) & (~BITS_VOQ_DESC_NUM_8822E)) +#define BIT_GET_VOQ_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_VOQ_DESC_NUM_8822E) & BIT_MASK_VOQ_DESC_NUM_8822E) +#define BIT_SET_VOQ_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_VOQ_DESC_NUM_8822E(x) | BIT_VOQ_DESC_NUM_8822E(v)) + +/* 2 REG_VIQ_TXBD_NUM_8822E */ +#define BIT_PCIE_VIQ_FLAG_8822E BIT(14) + +#define BIT_SHIFT_VIQ_DESC_MODE_8822E 12 +#define BIT_MASK_VIQ_DESC_MODE_8822E 0x3 +#define BIT_VIQ_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_VIQ_DESC_MODE_8822E) << BIT_SHIFT_VIQ_DESC_MODE_8822E) +#define BITS_VIQ_DESC_MODE_8822E \ + (BIT_MASK_VIQ_DESC_MODE_8822E << BIT_SHIFT_VIQ_DESC_MODE_8822E) +#define BIT_CLEAR_VIQ_DESC_MODE_8822E(x) ((x) & (~BITS_VIQ_DESC_MODE_8822E)) +#define BIT_GET_VIQ_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_VIQ_DESC_MODE_8822E) & BIT_MASK_VIQ_DESC_MODE_8822E) +#define BIT_SET_VIQ_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_VIQ_DESC_MODE_8822E(x) | BIT_VIQ_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_VIQ_DESC_NUM_8822E 0 +#define BIT_MASK_VIQ_DESC_NUM_8822E 0xfff +#define BIT_VIQ_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_VIQ_DESC_NUM_8822E) << BIT_SHIFT_VIQ_DESC_NUM_8822E) +#define BITS_VIQ_DESC_NUM_8822E \ + (BIT_MASK_VIQ_DESC_NUM_8822E << BIT_SHIFT_VIQ_DESC_NUM_8822E) +#define BIT_CLEAR_VIQ_DESC_NUM_8822E(x) ((x) & (~BITS_VIQ_DESC_NUM_8822E)) +#define BIT_GET_VIQ_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_VIQ_DESC_NUM_8822E) & BIT_MASK_VIQ_DESC_NUM_8822E) +#define BIT_SET_VIQ_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_VIQ_DESC_NUM_8822E(x) | BIT_VIQ_DESC_NUM_8822E(v)) + +/* 2 REG_BEQ_TXBD_NUM_8822E */ +#define BIT_PCIE_BEQ_FLAG_8822E BIT(14) + +#define BIT_SHIFT_BEQ_DESC_MODE_8822E 12 +#define BIT_MASK_BEQ_DESC_MODE_8822E 0x3 +#define BIT_BEQ_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_BEQ_DESC_MODE_8822E) << BIT_SHIFT_BEQ_DESC_MODE_8822E) +#define BITS_BEQ_DESC_MODE_8822E \ + (BIT_MASK_BEQ_DESC_MODE_8822E << BIT_SHIFT_BEQ_DESC_MODE_8822E) +#define BIT_CLEAR_BEQ_DESC_MODE_8822E(x) ((x) & (~BITS_BEQ_DESC_MODE_8822E)) +#define BIT_GET_BEQ_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_BEQ_DESC_MODE_8822E) & BIT_MASK_BEQ_DESC_MODE_8822E) +#define BIT_SET_BEQ_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_BEQ_DESC_MODE_8822E(x) | BIT_BEQ_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_BEQ_DESC_NUM_8822E 0 +#define BIT_MASK_BEQ_DESC_NUM_8822E 0xfff +#define BIT_BEQ_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_BEQ_DESC_NUM_8822E) << BIT_SHIFT_BEQ_DESC_NUM_8822E) +#define BITS_BEQ_DESC_NUM_8822E \ + (BIT_MASK_BEQ_DESC_NUM_8822E << BIT_SHIFT_BEQ_DESC_NUM_8822E) +#define BIT_CLEAR_BEQ_DESC_NUM_8822E(x) ((x) & (~BITS_BEQ_DESC_NUM_8822E)) +#define BIT_GET_BEQ_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_BEQ_DESC_NUM_8822E) & BIT_MASK_BEQ_DESC_NUM_8822E) +#define BIT_SET_BEQ_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_BEQ_DESC_NUM_8822E(x) | BIT_BEQ_DESC_NUM_8822E(v)) + +/* 2 REG_BKQ_TXBD_NUM_8822E */ +#define BIT_PCIE_BKQ_FLAG_8822E BIT(14) + +#define BIT_SHIFT_BKQ_DESC_MODE_8822E 12 +#define BIT_MASK_BKQ_DESC_MODE_8822E 0x3 +#define BIT_BKQ_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_BKQ_DESC_MODE_8822E) << BIT_SHIFT_BKQ_DESC_MODE_8822E) +#define BITS_BKQ_DESC_MODE_8822E \ + (BIT_MASK_BKQ_DESC_MODE_8822E << BIT_SHIFT_BKQ_DESC_MODE_8822E) +#define BIT_CLEAR_BKQ_DESC_MODE_8822E(x) ((x) & (~BITS_BKQ_DESC_MODE_8822E)) +#define BIT_GET_BKQ_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_BKQ_DESC_MODE_8822E) & BIT_MASK_BKQ_DESC_MODE_8822E) +#define BIT_SET_BKQ_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_BKQ_DESC_MODE_8822E(x) | BIT_BKQ_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_BKQ_DESC_NUM_8822E 0 +#define BIT_MASK_BKQ_DESC_NUM_8822E 0xfff +#define BIT_BKQ_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_BKQ_DESC_NUM_8822E) << BIT_SHIFT_BKQ_DESC_NUM_8822E) +#define BITS_BKQ_DESC_NUM_8822E \ + (BIT_MASK_BKQ_DESC_NUM_8822E << BIT_SHIFT_BKQ_DESC_NUM_8822E) +#define BIT_CLEAR_BKQ_DESC_NUM_8822E(x) ((x) & (~BITS_BKQ_DESC_NUM_8822E)) +#define BIT_GET_BKQ_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_BKQ_DESC_NUM_8822E) & BIT_MASK_BKQ_DESC_NUM_8822E) +#define BIT_SET_BKQ_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_BKQ_DESC_NUM_8822E(x) | BIT_BKQ_DESC_NUM_8822E(v)) + +/* 2 REG_HI0Q_TXBD_NUM_8822E */ +#define BIT_HI0Q_FLAG_8822E BIT(14) + +#define BIT_SHIFT_HI0Q_DESC_MODE_8822E 12 +#define BIT_MASK_HI0Q_DESC_MODE_8822E 0x3 +#define BIT_HI0Q_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_HI0Q_DESC_MODE_8822E) \ + << BIT_SHIFT_HI0Q_DESC_MODE_8822E) +#define BITS_HI0Q_DESC_MODE_8822E \ + (BIT_MASK_HI0Q_DESC_MODE_8822E << BIT_SHIFT_HI0Q_DESC_MODE_8822E) +#define BIT_CLEAR_HI0Q_DESC_MODE_8822E(x) ((x) & (~BITS_HI0Q_DESC_MODE_8822E)) +#define BIT_GET_HI0Q_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_HI0Q_DESC_MODE_8822E) & \ + BIT_MASK_HI0Q_DESC_MODE_8822E) +#define BIT_SET_HI0Q_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_HI0Q_DESC_MODE_8822E(x) | BIT_HI0Q_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_HI0Q_DESC_NUM_8822E 0 +#define BIT_MASK_HI0Q_DESC_NUM_8822E 0xfff +#define BIT_HI0Q_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_HI0Q_DESC_NUM_8822E) << BIT_SHIFT_HI0Q_DESC_NUM_8822E) +#define BITS_HI0Q_DESC_NUM_8822E \ + (BIT_MASK_HI0Q_DESC_NUM_8822E << BIT_SHIFT_HI0Q_DESC_NUM_8822E) +#define BIT_CLEAR_HI0Q_DESC_NUM_8822E(x) ((x) & (~BITS_HI0Q_DESC_NUM_8822E)) +#define BIT_GET_HI0Q_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_HI0Q_DESC_NUM_8822E) & BIT_MASK_HI0Q_DESC_NUM_8822E) +#define BIT_SET_HI0Q_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_HI0Q_DESC_NUM_8822E(x) | BIT_HI0Q_DESC_NUM_8822E(v)) + +/* 2 REG_HI1Q_TXBD_NUM_8822E */ +#define BIT_HI1Q_FLAG_8822E BIT(14) + +#define BIT_SHIFT_HI1Q_DESC_MODE_8822E 12 +#define BIT_MASK_HI1Q_DESC_MODE_8822E 0x3 +#define BIT_HI1Q_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_HI1Q_DESC_MODE_8822E) \ + << BIT_SHIFT_HI1Q_DESC_MODE_8822E) +#define BITS_HI1Q_DESC_MODE_8822E \ + (BIT_MASK_HI1Q_DESC_MODE_8822E << BIT_SHIFT_HI1Q_DESC_MODE_8822E) +#define BIT_CLEAR_HI1Q_DESC_MODE_8822E(x) ((x) & (~BITS_HI1Q_DESC_MODE_8822E)) +#define BIT_GET_HI1Q_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_HI1Q_DESC_MODE_8822E) & \ + BIT_MASK_HI1Q_DESC_MODE_8822E) +#define BIT_SET_HI1Q_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_HI1Q_DESC_MODE_8822E(x) | BIT_HI1Q_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_HI1Q_DESC_NUM_8822E 0 +#define BIT_MASK_HI1Q_DESC_NUM_8822E 0xfff +#define BIT_HI1Q_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_HI1Q_DESC_NUM_8822E) << BIT_SHIFT_HI1Q_DESC_NUM_8822E) +#define BITS_HI1Q_DESC_NUM_8822E \ + (BIT_MASK_HI1Q_DESC_NUM_8822E << BIT_SHIFT_HI1Q_DESC_NUM_8822E) +#define BIT_CLEAR_HI1Q_DESC_NUM_8822E(x) ((x) & (~BITS_HI1Q_DESC_NUM_8822E)) +#define BIT_GET_HI1Q_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_HI1Q_DESC_NUM_8822E) & BIT_MASK_HI1Q_DESC_NUM_8822E) +#define BIT_SET_HI1Q_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_HI1Q_DESC_NUM_8822E(x) | BIT_HI1Q_DESC_NUM_8822E(v)) + +/* 2 REG_HI2Q_TXBD_NUM_8822E */ +#define BIT_HI2Q_FLAG_8822E BIT(14) + +#define BIT_SHIFT_HI2Q_DESC_MODE_8822E 12 +#define BIT_MASK_HI2Q_DESC_MODE_8822E 0x3 +#define BIT_HI2Q_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_HI2Q_DESC_MODE_8822E) \ + << BIT_SHIFT_HI2Q_DESC_MODE_8822E) +#define BITS_HI2Q_DESC_MODE_8822E \ + (BIT_MASK_HI2Q_DESC_MODE_8822E << BIT_SHIFT_HI2Q_DESC_MODE_8822E) +#define BIT_CLEAR_HI2Q_DESC_MODE_8822E(x) ((x) & (~BITS_HI2Q_DESC_MODE_8822E)) +#define BIT_GET_HI2Q_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_HI2Q_DESC_MODE_8822E) & \ + BIT_MASK_HI2Q_DESC_MODE_8822E) +#define BIT_SET_HI2Q_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_HI2Q_DESC_MODE_8822E(x) | BIT_HI2Q_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_HI2Q_DESC_NUM_8822E 0 +#define BIT_MASK_HI2Q_DESC_NUM_8822E 0xfff +#define BIT_HI2Q_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_HI2Q_DESC_NUM_8822E) << BIT_SHIFT_HI2Q_DESC_NUM_8822E) +#define BITS_HI2Q_DESC_NUM_8822E \ + (BIT_MASK_HI2Q_DESC_NUM_8822E << BIT_SHIFT_HI2Q_DESC_NUM_8822E) +#define BIT_CLEAR_HI2Q_DESC_NUM_8822E(x) ((x) & (~BITS_HI2Q_DESC_NUM_8822E)) +#define BIT_GET_HI2Q_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_HI2Q_DESC_NUM_8822E) & BIT_MASK_HI2Q_DESC_NUM_8822E) +#define BIT_SET_HI2Q_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_HI2Q_DESC_NUM_8822E(x) | BIT_HI2Q_DESC_NUM_8822E(v)) + +/* 2 REG_HI3Q_TXBD_NUM_8822E */ +#define BIT_HI3Q_FLAG_8822E BIT(14) + +#define BIT_SHIFT_HI3Q_DESC_MODE_8822E 12 +#define BIT_MASK_HI3Q_DESC_MODE_8822E 0x3 +#define BIT_HI3Q_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_HI3Q_DESC_MODE_8822E) \ + << BIT_SHIFT_HI3Q_DESC_MODE_8822E) +#define BITS_HI3Q_DESC_MODE_8822E \ + (BIT_MASK_HI3Q_DESC_MODE_8822E << BIT_SHIFT_HI3Q_DESC_MODE_8822E) +#define BIT_CLEAR_HI3Q_DESC_MODE_8822E(x) ((x) & (~BITS_HI3Q_DESC_MODE_8822E)) +#define BIT_GET_HI3Q_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_HI3Q_DESC_MODE_8822E) & \ + BIT_MASK_HI3Q_DESC_MODE_8822E) +#define BIT_SET_HI3Q_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_HI3Q_DESC_MODE_8822E(x) | BIT_HI3Q_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_HI3Q_DESC_NUM_8822E 0 +#define BIT_MASK_HI3Q_DESC_NUM_8822E 0xfff +#define BIT_HI3Q_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_HI3Q_DESC_NUM_8822E) << BIT_SHIFT_HI3Q_DESC_NUM_8822E) +#define BITS_HI3Q_DESC_NUM_8822E \ + (BIT_MASK_HI3Q_DESC_NUM_8822E << BIT_SHIFT_HI3Q_DESC_NUM_8822E) +#define BIT_CLEAR_HI3Q_DESC_NUM_8822E(x) ((x) & (~BITS_HI3Q_DESC_NUM_8822E)) +#define BIT_GET_HI3Q_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_HI3Q_DESC_NUM_8822E) & BIT_MASK_HI3Q_DESC_NUM_8822E) +#define BIT_SET_HI3Q_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_HI3Q_DESC_NUM_8822E(x) | BIT_HI3Q_DESC_NUM_8822E(v)) + +/* 2 REG_HI4Q_TXBD_NUM_8822E */ +#define BIT_HI4Q_FLAG_8822E BIT(14) + +#define BIT_SHIFT_HI4Q_DESC_MODE_8822E 12 +#define BIT_MASK_HI4Q_DESC_MODE_8822E 0x3 +#define BIT_HI4Q_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_HI4Q_DESC_MODE_8822E) \ + << BIT_SHIFT_HI4Q_DESC_MODE_8822E) +#define BITS_HI4Q_DESC_MODE_8822E \ + (BIT_MASK_HI4Q_DESC_MODE_8822E << BIT_SHIFT_HI4Q_DESC_MODE_8822E) +#define BIT_CLEAR_HI4Q_DESC_MODE_8822E(x) ((x) & (~BITS_HI4Q_DESC_MODE_8822E)) +#define BIT_GET_HI4Q_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_HI4Q_DESC_MODE_8822E) & \ + BIT_MASK_HI4Q_DESC_MODE_8822E) +#define BIT_SET_HI4Q_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_HI4Q_DESC_MODE_8822E(x) | BIT_HI4Q_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_HI4Q_DESC_NUM_8822E 0 +#define BIT_MASK_HI4Q_DESC_NUM_8822E 0xfff +#define BIT_HI4Q_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_HI4Q_DESC_NUM_8822E) << BIT_SHIFT_HI4Q_DESC_NUM_8822E) +#define BITS_HI4Q_DESC_NUM_8822E \ + (BIT_MASK_HI4Q_DESC_NUM_8822E << BIT_SHIFT_HI4Q_DESC_NUM_8822E) +#define BIT_CLEAR_HI4Q_DESC_NUM_8822E(x) ((x) & (~BITS_HI4Q_DESC_NUM_8822E)) +#define BIT_GET_HI4Q_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_HI4Q_DESC_NUM_8822E) & BIT_MASK_HI4Q_DESC_NUM_8822E) +#define BIT_SET_HI4Q_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_HI4Q_DESC_NUM_8822E(x) | BIT_HI4Q_DESC_NUM_8822E(v)) + +/* 2 REG_HI5Q_TXBD_NUM_8822E */ +#define BIT_HI5Q_FLAG_8822E BIT(14) + +#define BIT_SHIFT_HI5Q_DESC_MODE_8822E 12 +#define BIT_MASK_HI5Q_DESC_MODE_8822E 0x3 +#define BIT_HI5Q_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_HI5Q_DESC_MODE_8822E) \ + << BIT_SHIFT_HI5Q_DESC_MODE_8822E) +#define BITS_HI5Q_DESC_MODE_8822E \ + (BIT_MASK_HI5Q_DESC_MODE_8822E << BIT_SHIFT_HI5Q_DESC_MODE_8822E) +#define BIT_CLEAR_HI5Q_DESC_MODE_8822E(x) ((x) & (~BITS_HI5Q_DESC_MODE_8822E)) +#define BIT_GET_HI5Q_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_HI5Q_DESC_MODE_8822E) & \ + BIT_MASK_HI5Q_DESC_MODE_8822E) +#define BIT_SET_HI5Q_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_HI5Q_DESC_MODE_8822E(x) | BIT_HI5Q_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_HI5Q_DESC_NUM_8822E 0 +#define BIT_MASK_HI5Q_DESC_NUM_8822E 0xfff +#define BIT_HI5Q_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_HI5Q_DESC_NUM_8822E) << BIT_SHIFT_HI5Q_DESC_NUM_8822E) +#define BITS_HI5Q_DESC_NUM_8822E \ + (BIT_MASK_HI5Q_DESC_NUM_8822E << BIT_SHIFT_HI5Q_DESC_NUM_8822E) +#define BIT_CLEAR_HI5Q_DESC_NUM_8822E(x) ((x) & (~BITS_HI5Q_DESC_NUM_8822E)) +#define BIT_GET_HI5Q_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_HI5Q_DESC_NUM_8822E) & BIT_MASK_HI5Q_DESC_NUM_8822E) +#define BIT_SET_HI5Q_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_HI5Q_DESC_NUM_8822E(x) | BIT_HI5Q_DESC_NUM_8822E(v)) + +/* 2 REG_HI6Q_TXBD_NUM_8822E */ +#define BIT_HI6Q_FLAG_8822E BIT(14) + +#define BIT_SHIFT_HI6Q_DESC_MODE_8822E 12 +#define BIT_MASK_HI6Q_DESC_MODE_8822E 0x3 +#define BIT_HI6Q_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_HI6Q_DESC_MODE_8822E) \ + << BIT_SHIFT_HI6Q_DESC_MODE_8822E) +#define BITS_HI6Q_DESC_MODE_8822E \ + (BIT_MASK_HI6Q_DESC_MODE_8822E << BIT_SHIFT_HI6Q_DESC_MODE_8822E) +#define BIT_CLEAR_HI6Q_DESC_MODE_8822E(x) ((x) & (~BITS_HI6Q_DESC_MODE_8822E)) +#define BIT_GET_HI6Q_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_HI6Q_DESC_MODE_8822E) & \ + BIT_MASK_HI6Q_DESC_MODE_8822E) +#define BIT_SET_HI6Q_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_HI6Q_DESC_MODE_8822E(x) | BIT_HI6Q_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_HI6Q_DESC_NUM_8822E 0 +#define BIT_MASK_HI6Q_DESC_NUM_8822E 0xfff +#define BIT_HI6Q_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_HI6Q_DESC_NUM_8822E) << BIT_SHIFT_HI6Q_DESC_NUM_8822E) +#define BITS_HI6Q_DESC_NUM_8822E \ + (BIT_MASK_HI6Q_DESC_NUM_8822E << BIT_SHIFT_HI6Q_DESC_NUM_8822E) +#define BIT_CLEAR_HI6Q_DESC_NUM_8822E(x) ((x) & (~BITS_HI6Q_DESC_NUM_8822E)) +#define BIT_GET_HI6Q_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_HI6Q_DESC_NUM_8822E) & BIT_MASK_HI6Q_DESC_NUM_8822E) +#define BIT_SET_HI6Q_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_HI6Q_DESC_NUM_8822E(x) | BIT_HI6Q_DESC_NUM_8822E(v)) + +/* 2 REG_HI7Q_TXBD_NUM_8822E */ +#define BIT_HI7Q_FLAG_8822E BIT(14) + +#define BIT_SHIFT_HI7Q_DESC_MODE_8822E 12 +#define BIT_MASK_HI7Q_DESC_MODE_8822E 0x3 +#define BIT_HI7Q_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_HI7Q_DESC_MODE_8822E) \ + << BIT_SHIFT_HI7Q_DESC_MODE_8822E) +#define BITS_HI7Q_DESC_MODE_8822E \ + (BIT_MASK_HI7Q_DESC_MODE_8822E << BIT_SHIFT_HI7Q_DESC_MODE_8822E) +#define BIT_CLEAR_HI7Q_DESC_MODE_8822E(x) ((x) & (~BITS_HI7Q_DESC_MODE_8822E)) +#define BIT_GET_HI7Q_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_HI7Q_DESC_MODE_8822E) & \ + BIT_MASK_HI7Q_DESC_MODE_8822E) +#define BIT_SET_HI7Q_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_HI7Q_DESC_MODE_8822E(x) | BIT_HI7Q_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_HI7Q_DESC_NUM_8822E 0 +#define BIT_MASK_HI7Q_DESC_NUM_8822E 0xfff +#define BIT_HI7Q_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_HI7Q_DESC_NUM_8822E) << BIT_SHIFT_HI7Q_DESC_NUM_8822E) +#define BITS_HI7Q_DESC_NUM_8822E \ + (BIT_MASK_HI7Q_DESC_NUM_8822E << BIT_SHIFT_HI7Q_DESC_NUM_8822E) +#define BIT_CLEAR_HI7Q_DESC_NUM_8822E(x) ((x) & (~BITS_HI7Q_DESC_NUM_8822E)) +#define BIT_GET_HI7Q_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_HI7Q_DESC_NUM_8822E) & BIT_MASK_HI7Q_DESC_NUM_8822E) +#define BIT_SET_HI7Q_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_HI7Q_DESC_NUM_8822E(x) | BIT_HI7Q_DESC_NUM_8822E(v)) + +/* 2 REG_TSFTIMER_HCI_8822E */ + +#define BIT_SHIFT_TSFT2_HCI_8822E 16 +#define BIT_MASK_TSFT2_HCI_8822E 0xffff +#define BIT_TSFT2_HCI_8822E(x) \ + (((x) & BIT_MASK_TSFT2_HCI_8822E) << BIT_SHIFT_TSFT2_HCI_8822E) +#define BITS_TSFT2_HCI_8822E \ + (BIT_MASK_TSFT2_HCI_8822E << BIT_SHIFT_TSFT2_HCI_8822E) +#define BIT_CLEAR_TSFT2_HCI_8822E(x) ((x) & (~BITS_TSFT2_HCI_8822E)) +#define BIT_GET_TSFT2_HCI_8822E(x) \ + (((x) >> BIT_SHIFT_TSFT2_HCI_8822E) & BIT_MASK_TSFT2_HCI_8822E) +#define BIT_SET_TSFT2_HCI_8822E(x, v) \ + (BIT_CLEAR_TSFT2_HCI_8822E(x) | BIT_TSFT2_HCI_8822E(v)) + +#define BIT_SHIFT_TSFT1_HCI_8822E 0 +#define BIT_MASK_TSFT1_HCI_8822E 0xffff +#define BIT_TSFT1_HCI_8822E(x) \ + (((x) & BIT_MASK_TSFT1_HCI_8822E) << BIT_SHIFT_TSFT1_HCI_8822E) +#define BITS_TSFT1_HCI_8822E \ + (BIT_MASK_TSFT1_HCI_8822E << BIT_SHIFT_TSFT1_HCI_8822E) +#define BIT_CLEAR_TSFT1_HCI_8822E(x) ((x) & (~BITS_TSFT1_HCI_8822E)) +#define BIT_GET_TSFT1_HCI_8822E(x) \ + (((x) >> BIT_SHIFT_TSFT1_HCI_8822E) & BIT_MASK_TSFT1_HCI_8822E) +#define BIT_SET_TSFT1_HCI_8822E(x, v) \ + (BIT_CLEAR_TSFT1_HCI_8822E(x) | BIT_TSFT1_HCI_8822E(v)) + +/* 2 REG_BD_RWPTR_CLR_8822E */ +#define BIT_CLR_HI7Q_HW_IDX_8822E BIT(29) +#define BIT_CLR_HI6Q_HW_IDX_8822E BIT(28) +#define BIT_CLR_HI5Q_HW_IDX_8822E BIT(27) +#define BIT_CLR_HI4Q_HW_IDX_8822E BIT(26) +#define BIT_CLR_HI3Q_HW_IDX_8822E BIT(25) +#define BIT_CLR_HI2Q_HW_IDX_8822E BIT(24) +#define BIT_CLR_HI1Q_HW_IDX_8822E BIT(23) +#define BIT_CLR_HI0Q_HW_IDX_8822E BIT(22) +#define BIT_CLR_BKQ_HW_IDX_8822E BIT(21) +#define BIT_CLR_BEQ_HW_IDX_8822E BIT(20) +#define BIT_CLR_VIQ_HW_IDX_8822E BIT(19) +#define BIT_CLR_VOQ_HW_IDX_8822E BIT(18) +#define BIT_CLR_MGQ_HW_IDX_8822E BIT(17) +#define BIT_CLR_RXQ_HW_IDX_8822E BIT(16) +#define BIT_CLR_HI7Q_HOST_IDX_8822E BIT(13) +#define BIT_CLR_HI6Q_HOST_IDX_8822E BIT(12) +#define BIT_CLR_HI5Q_HOST_IDX_8822E BIT(11) +#define BIT_CLR_HI4Q_HOST_IDX_8822E BIT(10) +#define BIT_CLR_HI3Q_HOST_IDX_8822E BIT(9) +#define BIT_CLR_HI2Q_HOST_IDX_8822E BIT(8) +#define BIT_CLR_HI1Q_HOST_IDX_8822E BIT(7) +#define BIT_CLR_HI0Q_HOST_IDX_8822E BIT(6) +#define BIT_CLR_BKQ_HOST_IDX_8822E BIT(5) +#define BIT_CLR_BEQ_HOST_IDX_8822E BIT(4) +#define BIT_CLR_VIQ_HOST_IDX_8822E BIT(3) +#define BIT_CLR_VOQ_HOST_IDX_8822E BIT(2) +#define BIT_CLR_MGQ_HOST_IDX_8822E BIT(1) +#define BIT_CLR_RXQ_HOST_IDX_8822E BIT(0) + +/* 2 REG_VOQ_TXBD_IDX_8822E */ + +#define BIT_SHIFT_VOQ_HW_IDX_8822E 16 +#define BIT_MASK_VOQ_HW_IDX_8822E 0xfff +#define BIT_VOQ_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_VOQ_HW_IDX_8822E) << BIT_SHIFT_VOQ_HW_IDX_8822E) +#define BITS_VOQ_HW_IDX_8822E \ + (BIT_MASK_VOQ_HW_IDX_8822E << BIT_SHIFT_VOQ_HW_IDX_8822E) +#define BIT_CLEAR_VOQ_HW_IDX_8822E(x) ((x) & (~BITS_VOQ_HW_IDX_8822E)) +#define BIT_GET_VOQ_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_VOQ_HW_IDX_8822E) & BIT_MASK_VOQ_HW_IDX_8822E) +#define BIT_SET_VOQ_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_VOQ_HW_IDX_8822E(x) | BIT_VOQ_HW_IDX_8822E(v)) + +#define BIT_SHIFT_VOQ_HOST_IDX_8822E 0 +#define BIT_MASK_VOQ_HOST_IDX_8822E 0xfff +#define BIT_VOQ_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_VOQ_HOST_IDX_8822E) << BIT_SHIFT_VOQ_HOST_IDX_8822E) +#define BITS_VOQ_HOST_IDX_8822E \ + (BIT_MASK_VOQ_HOST_IDX_8822E << BIT_SHIFT_VOQ_HOST_IDX_8822E) +#define BIT_CLEAR_VOQ_HOST_IDX_8822E(x) ((x) & (~BITS_VOQ_HOST_IDX_8822E)) +#define BIT_GET_VOQ_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_VOQ_HOST_IDX_8822E) & BIT_MASK_VOQ_HOST_IDX_8822E) +#define BIT_SET_VOQ_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_VOQ_HOST_IDX_8822E(x) | BIT_VOQ_HOST_IDX_8822E(v)) + +/* 2 REG_VIQ_TXBD_IDX_8822E */ + +#define BIT_SHIFT_VIQ_HW_IDX_8822E 16 +#define BIT_MASK_VIQ_HW_IDX_8822E 0xfff +#define BIT_VIQ_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_VIQ_HW_IDX_8822E) << BIT_SHIFT_VIQ_HW_IDX_8822E) +#define BITS_VIQ_HW_IDX_8822E \ + (BIT_MASK_VIQ_HW_IDX_8822E << BIT_SHIFT_VIQ_HW_IDX_8822E) +#define BIT_CLEAR_VIQ_HW_IDX_8822E(x) ((x) & (~BITS_VIQ_HW_IDX_8822E)) +#define BIT_GET_VIQ_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_VIQ_HW_IDX_8822E) & BIT_MASK_VIQ_HW_IDX_8822E) +#define BIT_SET_VIQ_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_VIQ_HW_IDX_8822E(x) | BIT_VIQ_HW_IDX_8822E(v)) + +#define BIT_SHIFT_VIQ_HOST_IDX_8822E 0 +#define BIT_MASK_VIQ_HOST_IDX_8822E 0xfff +#define BIT_VIQ_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_VIQ_HOST_IDX_8822E) << BIT_SHIFT_VIQ_HOST_IDX_8822E) +#define BITS_VIQ_HOST_IDX_8822E \ + (BIT_MASK_VIQ_HOST_IDX_8822E << BIT_SHIFT_VIQ_HOST_IDX_8822E) +#define BIT_CLEAR_VIQ_HOST_IDX_8822E(x) ((x) & (~BITS_VIQ_HOST_IDX_8822E)) +#define BIT_GET_VIQ_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_VIQ_HOST_IDX_8822E) & BIT_MASK_VIQ_HOST_IDX_8822E) +#define BIT_SET_VIQ_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_VIQ_HOST_IDX_8822E(x) | BIT_VIQ_HOST_IDX_8822E(v)) + +/* 2 REG_BEQ_TXBD_IDX_8822E */ + +#define BIT_SHIFT_BEQ_HW_IDX_8822E 16 +#define BIT_MASK_BEQ_HW_IDX_8822E 0xfff +#define BIT_BEQ_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_BEQ_HW_IDX_8822E) << BIT_SHIFT_BEQ_HW_IDX_8822E) +#define BITS_BEQ_HW_IDX_8822E \ + (BIT_MASK_BEQ_HW_IDX_8822E << BIT_SHIFT_BEQ_HW_IDX_8822E) +#define BIT_CLEAR_BEQ_HW_IDX_8822E(x) ((x) & (~BITS_BEQ_HW_IDX_8822E)) +#define BIT_GET_BEQ_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_BEQ_HW_IDX_8822E) & BIT_MASK_BEQ_HW_IDX_8822E) +#define BIT_SET_BEQ_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_BEQ_HW_IDX_8822E(x) | BIT_BEQ_HW_IDX_8822E(v)) + +#define BIT_SHIFT_BEQ_HOST_IDX_8822E 0 +#define BIT_MASK_BEQ_HOST_IDX_8822E 0xfff +#define BIT_BEQ_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_BEQ_HOST_IDX_8822E) << BIT_SHIFT_BEQ_HOST_IDX_8822E) +#define BITS_BEQ_HOST_IDX_8822E \ + (BIT_MASK_BEQ_HOST_IDX_8822E << BIT_SHIFT_BEQ_HOST_IDX_8822E) +#define BIT_CLEAR_BEQ_HOST_IDX_8822E(x) ((x) & (~BITS_BEQ_HOST_IDX_8822E)) +#define BIT_GET_BEQ_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_BEQ_HOST_IDX_8822E) & BIT_MASK_BEQ_HOST_IDX_8822E) +#define BIT_SET_BEQ_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_BEQ_HOST_IDX_8822E(x) | BIT_BEQ_HOST_IDX_8822E(v)) + +/* 2 REG_BKQ_TXBD_IDX_8822E */ + +#define BIT_SHIFT_BKQ_HW_IDX_8822E 16 +#define BIT_MASK_BKQ_HW_IDX_8822E 0xfff +#define BIT_BKQ_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_BKQ_HW_IDX_8822E) << BIT_SHIFT_BKQ_HW_IDX_8822E) +#define BITS_BKQ_HW_IDX_8822E \ + (BIT_MASK_BKQ_HW_IDX_8822E << BIT_SHIFT_BKQ_HW_IDX_8822E) +#define BIT_CLEAR_BKQ_HW_IDX_8822E(x) ((x) & (~BITS_BKQ_HW_IDX_8822E)) +#define BIT_GET_BKQ_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_BKQ_HW_IDX_8822E) & BIT_MASK_BKQ_HW_IDX_8822E) +#define BIT_SET_BKQ_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_BKQ_HW_IDX_8822E(x) | BIT_BKQ_HW_IDX_8822E(v)) + +#define BIT_SHIFT_BKQ_HOST_IDX_8822E 0 +#define BIT_MASK_BKQ_HOST_IDX_8822E 0xfff +#define BIT_BKQ_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_BKQ_HOST_IDX_8822E) << BIT_SHIFT_BKQ_HOST_IDX_8822E) +#define BITS_BKQ_HOST_IDX_8822E \ + (BIT_MASK_BKQ_HOST_IDX_8822E << BIT_SHIFT_BKQ_HOST_IDX_8822E) +#define BIT_CLEAR_BKQ_HOST_IDX_8822E(x) ((x) & (~BITS_BKQ_HOST_IDX_8822E)) +#define BIT_GET_BKQ_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_BKQ_HOST_IDX_8822E) & BIT_MASK_BKQ_HOST_IDX_8822E) +#define BIT_SET_BKQ_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_BKQ_HOST_IDX_8822E(x) | BIT_BKQ_HOST_IDX_8822E(v)) + +/* 2 REG_MGQ_TXBD_IDX_8822E */ + +#define BIT_SHIFT_MGQ_HW_IDX_8822E 16 +#define BIT_MASK_MGQ_HW_IDX_8822E 0xfff +#define BIT_MGQ_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_MGQ_HW_IDX_8822E) << BIT_SHIFT_MGQ_HW_IDX_8822E) +#define BITS_MGQ_HW_IDX_8822E \ + (BIT_MASK_MGQ_HW_IDX_8822E << BIT_SHIFT_MGQ_HW_IDX_8822E) +#define BIT_CLEAR_MGQ_HW_IDX_8822E(x) ((x) & (~BITS_MGQ_HW_IDX_8822E)) +#define BIT_GET_MGQ_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_HW_IDX_8822E) & BIT_MASK_MGQ_HW_IDX_8822E) +#define BIT_SET_MGQ_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_MGQ_HW_IDX_8822E(x) | BIT_MGQ_HW_IDX_8822E(v)) + +#define BIT_SHIFT_MGQ_HOST_IDX_8822E 0 +#define BIT_MASK_MGQ_HOST_IDX_8822E 0xfff +#define BIT_MGQ_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_MGQ_HOST_IDX_8822E) << BIT_SHIFT_MGQ_HOST_IDX_8822E) +#define BITS_MGQ_HOST_IDX_8822E \ + (BIT_MASK_MGQ_HOST_IDX_8822E << BIT_SHIFT_MGQ_HOST_IDX_8822E) +#define BIT_CLEAR_MGQ_HOST_IDX_8822E(x) ((x) & (~BITS_MGQ_HOST_IDX_8822E)) +#define BIT_GET_MGQ_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_HOST_IDX_8822E) & BIT_MASK_MGQ_HOST_IDX_8822E) +#define BIT_SET_MGQ_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_MGQ_HOST_IDX_8822E(x) | BIT_MGQ_HOST_IDX_8822E(v)) + +/* 2 REG_RXQ_RXBD_IDX_8822E */ + +#define BIT_SHIFT_RXQ_HW_IDX_8822E 16 +#define BIT_MASK_RXQ_HW_IDX_8822E 0xfff +#define BIT_RXQ_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_RXQ_HW_IDX_8822E) << BIT_SHIFT_RXQ_HW_IDX_8822E) +#define BITS_RXQ_HW_IDX_8822E \ + (BIT_MASK_RXQ_HW_IDX_8822E << BIT_SHIFT_RXQ_HW_IDX_8822E) +#define BIT_CLEAR_RXQ_HW_IDX_8822E(x) ((x) & (~BITS_RXQ_HW_IDX_8822E)) +#define BIT_GET_RXQ_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RXQ_HW_IDX_8822E) & BIT_MASK_RXQ_HW_IDX_8822E) +#define BIT_SET_RXQ_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_RXQ_HW_IDX_8822E(x) | BIT_RXQ_HW_IDX_8822E(v)) + +#define BIT_SHIFT_RXQ_HOST_IDX_8822E 0 +#define BIT_MASK_RXQ_HOST_IDX_8822E 0xfff +#define BIT_RXQ_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_RXQ_HOST_IDX_8822E) << BIT_SHIFT_RXQ_HOST_IDX_8822E) +#define BITS_RXQ_HOST_IDX_8822E \ + (BIT_MASK_RXQ_HOST_IDX_8822E << BIT_SHIFT_RXQ_HOST_IDX_8822E) +#define BIT_CLEAR_RXQ_HOST_IDX_8822E(x) ((x) & (~BITS_RXQ_HOST_IDX_8822E)) +#define BIT_GET_RXQ_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RXQ_HOST_IDX_8822E) & BIT_MASK_RXQ_HOST_IDX_8822E) +#define BIT_SET_RXQ_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_RXQ_HOST_IDX_8822E(x) | BIT_RXQ_HOST_IDX_8822E(v)) + +/* 2 REG_HI0Q_TXBD_IDX_8822E */ + +#define BIT_SHIFT_HI0Q_HW_IDX_8822E 16 +#define BIT_MASK_HI0Q_HW_IDX_8822E 0xfff +#define BIT_HI0Q_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_HI0Q_HW_IDX_8822E) << BIT_SHIFT_HI0Q_HW_IDX_8822E) +#define BITS_HI0Q_HW_IDX_8822E \ + (BIT_MASK_HI0Q_HW_IDX_8822E << BIT_SHIFT_HI0Q_HW_IDX_8822E) +#define BIT_CLEAR_HI0Q_HW_IDX_8822E(x) ((x) & (~BITS_HI0Q_HW_IDX_8822E)) +#define BIT_GET_HI0Q_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI0Q_HW_IDX_8822E) & BIT_MASK_HI0Q_HW_IDX_8822E) +#define BIT_SET_HI0Q_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_HI0Q_HW_IDX_8822E(x) | BIT_HI0Q_HW_IDX_8822E(v)) + +#define BIT_SHIFT_HI0Q_HOST_IDX_8822E 0 +#define BIT_MASK_HI0Q_HOST_IDX_8822E 0xfff +#define BIT_HI0Q_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_HI0Q_HOST_IDX_8822E) << BIT_SHIFT_HI0Q_HOST_IDX_8822E) +#define BITS_HI0Q_HOST_IDX_8822E \ + (BIT_MASK_HI0Q_HOST_IDX_8822E << BIT_SHIFT_HI0Q_HOST_IDX_8822E) +#define BIT_CLEAR_HI0Q_HOST_IDX_8822E(x) ((x) & (~BITS_HI0Q_HOST_IDX_8822E)) +#define BIT_GET_HI0Q_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI0Q_HOST_IDX_8822E) & BIT_MASK_HI0Q_HOST_IDX_8822E) +#define BIT_SET_HI0Q_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_HI0Q_HOST_IDX_8822E(x) | BIT_HI0Q_HOST_IDX_8822E(v)) + +/* 2 REG_HI1Q_TXBD_IDX_8822E */ + +#define BIT_SHIFT_HI1Q_HW_IDX_8822E 16 +#define BIT_MASK_HI1Q_HW_IDX_8822E 0xfff +#define BIT_HI1Q_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_HI1Q_HW_IDX_8822E) << BIT_SHIFT_HI1Q_HW_IDX_8822E) +#define BITS_HI1Q_HW_IDX_8822E \ + (BIT_MASK_HI1Q_HW_IDX_8822E << BIT_SHIFT_HI1Q_HW_IDX_8822E) +#define BIT_CLEAR_HI1Q_HW_IDX_8822E(x) ((x) & (~BITS_HI1Q_HW_IDX_8822E)) +#define BIT_GET_HI1Q_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI1Q_HW_IDX_8822E) & BIT_MASK_HI1Q_HW_IDX_8822E) +#define BIT_SET_HI1Q_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_HI1Q_HW_IDX_8822E(x) | BIT_HI1Q_HW_IDX_8822E(v)) + +#define BIT_SHIFT_HI1Q_HOST_IDX_8822E 0 +#define BIT_MASK_HI1Q_HOST_IDX_8822E 0xfff +#define BIT_HI1Q_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_HI1Q_HOST_IDX_8822E) << BIT_SHIFT_HI1Q_HOST_IDX_8822E) +#define BITS_HI1Q_HOST_IDX_8822E \ + (BIT_MASK_HI1Q_HOST_IDX_8822E << BIT_SHIFT_HI1Q_HOST_IDX_8822E) +#define BIT_CLEAR_HI1Q_HOST_IDX_8822E(x) ((x) & (~BITS_HI1Q_HOST_IDX_8822E)) +#define BIT_GET_HI1Q_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI1Q_HOST_IDX_8822E) & BIT_MASK_HI1Q_HOST_IDX_8822E) +#define BIT_SET_HI1Q_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_HI1Q_HOST_IDX_8822E(x) | BIT_HI1Q_HOST_IDX_8822E(v)) + +/* 2 REG_HI2Q_TXBD_IDX_8822E */ + +#define BIT_SHIFT_HI2Q_HW_IDX_8822E 16 +#define BIT_MASK_HI2Q_HW_IDX_8822E 0xfff +#define BIT_HI2Q_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_HI2Q_HW_IDX_8822E) << BIT_SHIFT_HI2Q_HW_IDX_8822E) +#define BITS_HI2Q_HW_IDX_8822E \ + (BIT_MASK_HI2Q_HW_IDX_8822E << BIT_SHIFT_HI2Q_HW_IDX_8822E) +#define BIT_CLEAR_HI2Q_HW_IDX_8822E(x) ((x) & (~BITS_HI2Q_HW_IDX_8822E)) +#define BIT_GET_HI2Q_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI2Q_HW_IDX_8822E) & BIT_MASK_HI2Q_HW_IDX_8822E) +#define BIT_SET_HI2Q_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_HI2Q_HW_IDX_8822E(x) | BIT_HI2Q_HW_IDX_8822E(v)) + +#define BIT_SHIFT_HI2Q_HOST_IDX_8822E 0 +#define BIT_MASK_HI2Q_HOST_IDX_8822E 0xfff +#define BIT_HI2Q_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_HI2Q_HOST_IDX_8822E) << BIT_SHIFT_HI2Q_HOST_IDX_8822E) +#define BITS_HI2Q_HOST_IDX_8822E \ + (BIT_MASK_HI2Q_HOST_IDX_8822E << BIT_SHIFT_HI2Q_HOST_IDX_8822E) +#define BIT_CLEAR_HI2Q_HOST_IDX_8822E(x) ((x) & (~BITS_HI2Q_HOST_IDX_8822E)) +#define BIT_GET_HI2Q_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI2Q_HOST_IDX_8822E) & BIT_MASK_HI2Q_HOST_IDX_8822E) +#define BIT_SET_HI2Q_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_HI2Q_HOST_IDX_8822E(x) | BIT_HI2Q_HOST_IDX_8822E(v)) + +/* 2 REG_HI3Q_TXBD_IDX_8822E */ + +#define BIT_SHIFT_HI3Q_HW_IDX_8822E 16 +#define BIT_MASK_HI3Q_HW_IDX_8822E 0xfff +#define BIT_HI3Q_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_HI3Q_HW_IDX_8822E) << BIT_SHIFT_HI3Q_HW_IDX_8822E) +#define BITS_HI3Q_HW_IDX_8822E \ + (BIT_MASK_HI3Q_HW_IDX_8822E << BIT_SHIFT_HI3Q_HW_IDX_8822E) +#define BIT_CLEAR_HI3Q_HW_IDX_8822E(x) ((x) & (~BITS_HI3Q_HW_IDX_8822E)) +#define BIT_GET_HI3Q_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI3Q_HW_IDX_8822E) & BIT_MASK_HI3Q_HW_IDX_8822E) +#define BIT_SET_HI3Q_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_HI3Q_HW_IDX_8822E(x) | BIT_HI3Q_HW_IDX_8822E(v)) + +#define BIT_SHIFT_HI3Q_HOST_IDX_8822E 0 +#define BIT_MASK_HI3Q_HOST_IDX_8822E 0xfff +#define BIT_HI3Q_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_HI3Q_HOST_IDX_8822E) << BIT_SHIFT_HI3Q_HOST_IDX_8822E) +#define BITS_HI3Q_HOST_IDX_8822E \ + (BIT_MASK_HI3Q_HOST_IDX_8822E << BIT_SHIFT_HI3Q_HOST_IDX_8822E) +#define BIT_CLEAR_HI3Q_HOST_IDX_8822E(x) ((x) & (~BITS_HI3Q_HOST_IDX_8822E)) +#define BIT_GET_HI3Q_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI3Q_HOST_IDX_8822E) & BIT_MASK_HI3Q_HOST_IDX_8822E) +#define BIT_SET_HI3Q_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_HI3Q_HOST_IDX_8822E(x) | BIT_HI3Q_HOST_IDX_8822E(v)) + +/* 2 REG_HI4Q_TXBD_IDX_8822E */ + +#define BIT_SHIFT_HI4Q_HW_IDX_8822E 16 +#define BIT_MASK_HI4Q_HW_IDX_8822E 0xfff +#define BIT_HI4Q_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_HI4Q_HW_IDX_8822E) << BIT_SHIFT_HI4Q_HW_IDX_8822E) +#define BITS_HI4Q_HW_IDX_8822E \ + (BIT_MASK_HI4Q_HW_IDX_8822E << BIT_SHIFT_HI4Q_HW_IDX_8822E) +#define BIT_CLEAR_HI4Q_HW_IDX_8822E(x) ((x) & (~BITS_HI4Q_HW_IDX_8822E)) +#define BIT_GET_HI4Q_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI4Q_HW_IDX_8822E) & BIT_MASK_HI4Q_HW_IDX_8822E) +#define BIT_SET_HI4Q_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_HI4Q_HW_IDX_8822E(x) | BIT_HI4Q_HW_IDX_8822E(v)) + +#define BIT_SHIFT_HI4Q_HOST_IDX_8822E 0 +#define BIT_MASK_HI4Q_HOST_IDX_8822E 0xfff +#define BIT_HI4Q_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_HI4Q_HOST_IDX_8822E) << BIT_SHIFT_HI4Q_HOST_IDX_8822E) +#define BITS_HI4Q_HOST_IDX_8822E \ + (BIT_MASK_HI4Q_HOST_IDX_8822E << BIT_SHIFT_HI4Q_HOST_IDX_8822E) +#define BIT_CLEAR_HI4Q_HOST_IDX_8822E(x) ((x) & (~BITS_HI4Q_HOST_IDX_8822E)) +#define BIT_GET_HI4Q_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI4Q_HOST_IDX_8822E) & BIT_MASK_HI4Q_HOST_IDX_8822E) +#define BIT_SET_HI4Q_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_HI4Q_HOST_IDX_8822E(x) | BIT_HI4Q_HOST_IDX_8822E(v)) + +/* 2 REG_HI5Q_TXBD_IDX_8822E */ + +#define BIT_SHIFT_HI5Q_HW_IDX_8822E 16 +#define BIT_MASK_HI5Q_HW_IDX_8822E 0xfff +#define BIT_HI5Q_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_HI5Q_HW_IDX_8822E) << BIT_SHIFT_HI5Q_HW_IDX_8822E) +#define BITS_HI5Q_HW_IDX_8822E \ + (BIT_MASK_HI5Q_HW_IDX_8822E << BIT_SHIFT_HI5Q_HW_IDX_8822E) +#define BIT_CLEAR_HI5Q_HW_IDX_8822E(x) ((x) & (~BITS_HI5Q_HW_IDX_8822E)) +#define BIT_GET_HI5Q_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI5Q_HW_IDX_8822E) & BIT_MASK_HI5Q_HW_IDX_8822E) +#define BIT_SET_HI5Q_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_HI5Q_HW_IDX_8822E(x) | BIT_HI5Q_HW_IDX_8822E(v)) + +#define BIT_SHIFT_HI5Q_HOST_IDX_8822E 0 +#define BIT_MASK_HI5Q_HOST_IDX_8822E 0xfff +#define BIT_HI5Q_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_HI5Q_HOST_IDX_8822E) << BIT_SHIFT_HI5Q_HOST_IDX_8822E) +#define BITS_HI5Q_HOST_IDX_8822E \ + (BIT_MASK_HI5Q_HOST_IDX_8822E << BIT_SHIFT_HI5Q_HOST_IDX_8822E) +#define BIT_CLEAR_HI5Q_HOST_IDX_8822E(x) ((x) & (~BITS_HI5Q_HOST_IDX_8822E)) +#define BIT_GET_HI5Q_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI5Q_HOST_IDX_8822E) & BIT_MASK_HI5Q_HOST_IDX_8822E) +#define BIT_SET_HI5Q_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_HI5Q_HOST_IDX_8822E(x) | BIT_HI5Q_HOST_IDX_8822E(v)) + +/* 2 REG_HI6Q_TXBD_IDX_8822E */ + +#define BIT_SHIFT_HI6Q_HW_IDX_8822E 16 +#define BIT_MASK_HI6Q_HW_IDX_8822E 0xfff +#define BIT_HI6Q_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_HI6Q_HW_IDX_8822E) << BIT_SHIFT_HI6Q_HW_IDX_8822E) +#define BITS_HI6Q_HW_IDX_8822E \ + (BIT_MASK_HI6Q_HW_IDX_8822E << BIT_SHIFT_HI6Q_HW_IDX_8822E) +#define BIT_CLEAR_HI6Q_HW_IDX_8822E(x) ((x) & (~BITS_HI6Q_HW_IDX_8822E)) +#define BIT_GET_HI6Q_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI6Q_HW_IDX_8822E) & BIT_MASK_HI6Q_HW_IDX_8822E) +#define BIT_SET_HI6Q_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_HI6Q_HW_IDX_8822E(x) | BIT_HI6Q_HW_IDX_8822E(v)) + +#define BIT_SHIFT_HI6Q_HOST_IDX_8822E 0 +#define BIT_MASK_HI6Q_HOST_IDX_8822E 0xfff +#define BIT_HI6Q_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_HI6Q_HOST_IDX_8822E) << BIT_SHIFT_HI6Q_HOST_IDX_8822E) +#define BITS_HI6Q_HOST_IDX_8822E \ + (BIT_MASK_HI6Q_HOST_IDX_8822E << BIT_SHIFT_HI6Q_HOST_IDX_8822E) +#define BIT_CLEAR_HI6Q_HOST_IDX_8822E(x) ((x) & (~BITS_HI6Q_HOST_IDX_8822E)) +#define BIT_GET_HI6Q_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI6Q_HOST_IDX_8822E) & BIT_MASK_HI6Q_HOST_IDX_8822E) +#define BIT_SET_HI6Q_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_HI6Q_HOST_IDX_8822E(x) | BIT_HI6Q_HOST_IDX_8822E(v)) + +/* 2 REG_HI7Q_TXBD_IDX_8822E */ + +#define BIT_SHIFT_HI7Q_HW_IDX_8822E 16 +#define BIT_MASK_HI7Q_HW_IDX_8822E 0xfff +#define BIT_HI7Q_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_HI7Q_HW_IDX_8822E) << BIT_SHIFT_HI7Q_HW_IDX_8822E) +#define BITS_HI7Q_HW_IDX_8822E \ + (BIT_MASK_HI7Q_HW_IDX_8822E << BIT_SHIFT_HI7Q_HW_IDX_8822E) +#define BIT_CLEAR_HI7Q_HW_IDX_8822E(x) ((x) & (~BITS_HI7Q_HW_IDX_8822E)) +#define BIT_GET_HI7Q_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI7Q_HW_IDX_8822E) & BIT_MASK_HI7Q_HW_IDX_8822E) +#define BIT_SET_HI7Q_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_HI7Q_HW_IDX_8822E(x) | BIT_HI7Q_HW_IDX_8822E(v)) + +#define BIT_SHIFT_HI7Q_HOST_IDX_8822E 0 +#define BIT_MASK_HI7Q_HOST_IDX_8822E 0xfff +#define BIT_HI7Q_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_HI7Q_HOST_IDX_8822E) << BIT_SHIFT_HI7Q_HOST_IDX_8822E) +#define BITS_HI7Q_HOST_IDX_8822E \ + (BIT_MASK_HI7Q_HOST_IDX_8822E << BIT_SHIFT_HI7Q_HOST_IDX_8822E) +#define BIT_CLEAR_HI7Q_HOST_IDX_8822E(x) ((x) & (~BITS_HI7Q_HOST_IDX_8822E)) +#define BIT_GET_HI7Q_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HI7Q_HOST_IDX_8822E) & BIT_MASK_HI7Q_HOST_IDX_8822E) +#define BIT_SET_HI7Q_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_HI7Q_HOST_IDX_8822E(x) | BIT_HI7Q_HOST_IDX_8822E(v)) + +/* 2 REG_DBG_SEL_V1_8822E */ + +#define BIT_SHIFT_DBG_SEL_8822E 0 +#define BIT_MASK_DBG_SEL_8822E 0xff +#define BIT_DBG_SEL_8822E(x) \ + (((x) & BIT_MASK_DBG_SEL_8822E) << BIT_SHIFT_DBG_SEL_8822E) +#define BITS_DBG_SEL_8822E (BIT_MASK_DBG_SEL_8822E << BIT_SHIFT_DBG_SEL_8822E) +#define BIT_CLEAR_DBG_SEL_8822E(x) ((x) & (~BITS_DBG_SEL_8822E)) +#define BIT_GET_DBG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_DBG_SEL_8822E) & BIT_MASK_DBG_SEL_8822E) +#define BIT_SET_DBG_SEL_8822E(x, v) \ + (BIT_CLEAR_DBG_SEL_8822E(x) | BIT_DBG_SEL_8822E(v)) + +/* 2 REG_PCIE_HRPWM1_V1_8822E */ + +#define BIT_SHIFT_PCIE_HRPWM_8822E 0 +#define BIT_MASK_PCIE_HRPWM_8822E 0xff +#define BIT_PCIE_HRPWM_8822E(x) \ + (((x) & BIT_MASK_PCIE_HRPWM_8822E) << BIT_SHIFT_PCIE_HRPWM_8822E) +#define BITS_PCIE_HRPWM_8822E \ + (BIT_MASK_PCIE_HRPWM_8822E << BIT_SHIFT_PCIE_HRPWM_8822E) +#define BIT_CLEAR_PCIE_HRPWM_8822E(x) ((x) & (~BITS_PCIE_HRPWM_8822E)) +#define BIT_GET_PCIE_HRPWM_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_HRPWM_8822E) & BIT_MASK_PCIE_HRPWM_8822E) +#define BIT_SET_PCIE_HRPWM_8822E(x, v) \ + (BIT_CLEAR_PCIE_HRPWM_8822E(x) | BIT_PCIE_HRPWM_8822E(v)) + +/* 2 REG_PCIE_HCPWM1_V1_8822E */ + +#define BIT_SHIFT_PCIE_HCPWM_8822E 0 +#define BIT_MASK_PCIE_HCPWM_8822E 0xff +#define BIT_PCIE_HCPWM_8822E(x) \ + (((x) & BIT_MASK_PCIE_HCPWM_8822E) << BIT_SHIFT_PCIE_HCPWM_8822E) +#define BITS_PCIE_HCPWM_8822E \ + (BIT_MASK_PCIE_HCPWM_8822E << BIT_SHIFT_PCIE_HCPWM_8822E) +#define BIT_CLEAR_PCIE_HCPWM_8822E(x) ((x) & (~BITS_PCIE_HCPWM_8822E)) +#define BIT_GET_PCIE_HCPWM_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_HCPWM_8822E) & BIT_MASK_PCIE_HCPWM_8822E) +#define BIT_SET_PCIE_HCPWM_8822E(x, v) \ + (BIT_CLEAR_PCIE_HCPWM_8822E(x) | BIT_PCIE_HCPWM_8822E(v)) + +/* 2 REG_PCIE_CTRL2_8822E */ +#define BIT_DIS_TXDMA_PRE_8822E BIT(7) +#define BIT_DIS_RXDMA_PRE_8822E BIT(6) + +#define BIT_SHIFT_HPS_CLKR_PCIE_8822E 4 +#define BIT_MASK_HPS_CLKR_PCIE_8822E 0x3 +#define BIT_HPS_CLKR_PCIE_8822E(x) \ + (((x) & BIT_MASK_HPS_CLKR_PCIE_8822E) << BIT_SHIFT_HPS_CLKR_PCIE_8822E) +#define BITS_HPS_CLKR_PCIE_8822E \ + (BIT_MASK_HPS_CLKR_PCIE_8822E << BIT_SHIFT_HPS_CLKR_PCIE_8822E) +#define BIT_CLEAR_HPS_CLKR_PCIE_8822E(x) ((x) & (~BITS_HPS_CLKR_PCIE_8822E)) +#define BIT_GET_HPS_CLKR_PCIE_8822E(x) \ + (((x) >> BIT_SHIFT_HPS_CLKR_PCIE_8822E) & BIT_MASK_HPS_CLKR_PCIE_8822E) +#define BIT_SET_HPS_CLKR_PCIE_8822E(x, v) \ + (BIT_CLEAR_HPS_CLKR_PCIE_8822E(x) | BIT_HPS_CLKR_PCIE_8822E(v)) + +#define BIT_PCIE_INT_8822E BIT(3) +#define BIT_TXFLAG_EXIT_L1_EN_8822E BIT(2) +#define BIT_EN_RXDMA_ALIGN_8822E BIT(1) +#define BIT_EN_TXDMA_ALIGN_8822E BIT(0) + +/* 2 REG_PCIE_HRPWM2_V1_8822E */ + +#define BIT_SHIFT_PCIE_HRPWM2_8822E 0 +#define BIT_MASK_PCIE_HRPWM2_8822E 0xffff +#define BIT_PCIE_HRPWM2_8822E(x) \ + (((x) & BIT_MASK_PCIE_HRPWM2_8822E) << BIT_SHIFT_PCIE_HRPWM2_8822E) +#define BITS_PCIE_HRPWM2_8822E \ + (BIT_MASK_PCIE_HRPWM2_8822E << BIT_SHIFT_PCIE_HRPWM2_8822E) +#define BIT_CLEAR_PCIE_HRPWM2_8822E(x) ((x) & (~BITS_PCIE_HRPWM2_8822E)) +#define BIT_GET_PCIE_HRPWM2_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_HRPWM2_8822E) & BIT_MASK_PCIE_HRPWM2_8822E) +#define BIT_SET_PCIE_HRPWM2_8822E(x, v) \ + (BIT_CLEAR_PCIE_HRPWM2_8822E(x) | BIT_PCIE_HRPWM2_8822E(v)) + +/* 2 REG_PCIE_HCPWM2_V1_8822E */ + +#define BIT_SHIFT_PCIE_HCPWM2_8822E 0 +#define BIT_MASK_PCIE_HCPWM2_8822E 0xffff +#define BIT_PCIE_HCPWM2_8822E(x) \ + (((x) & BIT_MASK_PCIE_HCPWM2_8822E) << BIT_SHIFT_PCIE_HCPWM2_8822E) +#define BITS_PCIE_HCPWM2_8822E \ + (BIT_MASK_PCIE_HCPWM2_8822E << BIT_SHIFT_PCIE_HCPWM2_8822E) +#define BIT_CLEAR_PCIE_HCPWM2_8822E(x) ((x) & (~BITS_PCIE_HCPWM2_8822E)) +#define BIT_GET_PCIE_HCPWM2_8822E(x) \ + (((x) >> BIT_SHIFT_PCIE_HCPWM2_8822E) & BIT_MASK_PCIE_HCPWM2_8822E) +#define BIT_SET_PCIE_HCPWM2_8822E(x, v) \ + (BIT_CLEAR_PCIE_HCPWM2_8822E(x) | BIT_PCIE_HCPWM2_8822E(v)) + +/* 2 REG_PCIE_H2C_MSG_V1_8822E */ + +#define BIT_SHIFT_DRV2FW_INFO_8822E 0 +#define BIT_MASK_DRV2FW_INFO_8822E 0xffffffffL +#define BIT_DRV2FW_INFO_8822E(x) \ + (((x) & BIT_MASK_DRV2FW_INFO_8822E) << BIT_SHIFT_DRV2FW_INFO_8822E) +#define BITS_DRV2FW_INFO_8822E \ + (BIT_MASK_DRV2FW_INFO_8822E << BIT_SHIFT_DRV2FW_INFO_8822E) +#define BIT_CLEAR_DRV2FW_INFO_8822E(x) ((x) & (~BITS_DRV2FW_INFO_8822E)) +#define BIT_GET_DRV2FW_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_DRV2FW_INFO_8822E) & BIT_MASK_DRV2FW_INFO_8822E) +#define BIT_SET_DRV2FW_INFO_8822E(x, v) \ + (BIT_CLEAR_DRV2FW_INFO_8822E(x) | BIT_DRV2FW_INFO_8822E(v)) + +/* 2 REG_PCIE_C2H_MSG_V1_8822E */ + +#define BIT_SHIFT_HCI_PCIE_C2H_MSG_8822E 0 +#define BIT_MASK_HCI_PCIE_C2H_MSG_8822E 0xffffffffL +#define BIT_HCI_PCIE_C2H_MSG_8822E(x) \ + (((x) & BIT_MASK_HCI_PCIE_C2H_MSG_8822E) \ + << BIT_SHIFT_HCI_PCIE_C2H_MSG_8822E) +#define BITS_HCI_PCIE_C2H_MSG_8822E \ + (BIT_MASK_HCI_PCIE_C2H_MSG_8822E << BIT_SHIFT_HCI_PCIE_C2H_MSG_8822E) +#define BIT_CLEAR_HCI_PCIE_C2H_MSG_8822E(x) \ + ((x) & (~BITS_HCI_PCIE_C2H_MSG_8822E)) +#define BIT_GET_HCI_PCIE_C2H_MSG_8822E(x) \ + (((x) >> BIT_SHIFT_HCI_PCIE_C2H_MSG_8822E) & \ + BIT_MASK_HCI_PCIE_C2H_MSG_8822E) +#define BIT_SET_HCI_PCIE_C2H_MSG_8822E(x, v) \ + (BIT_CLEAR_HCI_PCIE_C2H_MSG_8822E(x) | BIT_HCI_PCIE_C2H_MSG_8822E(v)) + +/* 2 REG_DBI_WDATA_V1_8822E */ + +#define BIT_SHIFT_DBI_WDATA_8822E 0 +#define BIT_MASK_DBI_WDATA_8822E 0xffffffffL +#define BIT_DBI_WDATA_8822E(x) \ + (((x) & BIT_MASK_DBI_WDATA_8822E) << BIT_SHIFT_DBI_WDATA_8822E) +#define BITS_DBI_WDATA_8822E \ + (BIT_MASK_DBI_WDATA_8822E << BIT_SHIFT_DBI_WDATA_8822E) +#define BIT_CLEAR_DBI_WDATA_8822E(x) ((x) & (~BITS_DBI_WDATA_8822E)) +#define BIT_GET_DBI_WDATA_8822E(x) \ + (((x) >> BIT_SHIFT_DBI_WDATA_8822E) & BIT_MASK_DBI_WDATA_8822E) +#define BIT_SET_DBI_WDATA_8822E(x, v) \ + (BIT_CLEAR_DBI_WDATA_8822E(x) | BIT_DBI_WDATA_8822E(v)) + +/* 2 REG_DBI_RDATA_V1_8822E */ + +#define BIT_SHIFT_DBI_RDATA_8822E 0 +#define BIT_MASK_DBI_RDATA_8822E 0xffffffffL +#define BIT_DBI_RDATA_8822E(x) \ + (((x) & BIT_MASK_DBI_RDATA_8822E) << BIT_SHIFT_DBI_RDATA_8822E) +#define BITS_DBI_RDATA_8822E \ + (BIT_MASK_DBI_RDATA_8822E << BIT_SHIFT_DBI_RDATA_8822E) +#define BIT_CLEAR_DBI_RDATA_8822E(x) ((x) & (~BITS_DBI_RDATA_8822E)) +#define BIT_GET_DBI_RDATA_8822E(x) \ + (((x) >> BIT_SHIFT_DBI_RDATA_8822E) & BIT_MASK_DBI_RDATA_8822E) +#define BIT_SET_DBI_RDATA_8822E(x, v) \ + (BIT_CLEAR_DBI_RDATA_8822E(x) | BIT_DBI_RDATA_8822E(v)) + +/* 2 REG_DBI_FLAG_V1_8822E */ +#define BIT_EN_STUCK_DBG_8822E BIT(26) +#define BIT_RX_STUCK_8822E BIT(25) +#define BIT_TX_STUCK_8822E BIT(24) +#define BIT_DBI_RFLAG_8822E BIT(17) +#define BIT_DBI_WFLAG_8822E BIT(16) + +#define BIT_SHIFT_DBI_WREN_8822E 12 +#define BIT_MASK_DBI_WREN_8822E 0xf +#define BIT_DBI_WREN_8822E(x) \ + (((x) & BIT_MASK_DBI_WREN_8822E) << BIT_SHIFT_DBI_WREN_8822E) +#define BITS_DBI_WREN_8822E \ + (BIT_MASK_DBI_WREN_8822E << BIT_SHIFT_DBI_WREN_8822E) +#define BIT_CLEAR_DBI_WREN_8822E(x) ((x) & (~BITS_DBI_WREN_8822E)) +#define BIT_GET_DBI_WREN_8822E(x) \ + (((x) >> BIT_SHIFT_DBI_WREN_8822E) & BIT_MASK_DBI_WREN_8822E) +#define BIT_SET_DBI_WREN_8822E(x, v) \ + (BIT_CLEAR_DBI_WREN_8822E(x) | BIT_DBI_WREN_8822E(v)) + +#define BIT_SHIFT_DBI_ADDR_8822E 0 +#define BIT_MASK_DBI_ADDR_8822E 0xfff +#define BIT_DBI_ADDR_8822E(x) \ + (((x) & BIT_MASK_DBI_ADDR_8822E) << BIT_SHIFT_DBI_ADDR_8822E) +#define BITS_DBI_ADDR_8822E \ + (BIT_MASK_DBI_ADDR_8822E << BIT_SHIFT_DBI_ADDR_8822E) +#define BIT_CLEAR_DBI_ADDR_8822E(x) ((x) & (~BITS_DBI_ADDR_8822E)) +#define BIT_GET_DBI_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_DBI_ADDR_8822E) & BIT_MASK_DBI_ADDR_8822E) +#define BIT_SET_DBI_ADDR_8822E(x, v) \ + (BIT_CLEAR_DBI_ADDR_8822E(x) | BIT_DBI_ADDR_8822E(v)) + +/* 2 REG_MDIO_V1_8822E */ + +#define BIT_SHIFT_MDIO_RDATA_8822E 16 +#define BIT_MASK_MDIO_RDATA_8822E 0xffff +#define BIT_MDIO_RDATA_8822E(x) \ + (((x) & BIT_MASK_MDIO_RDATA_8822E) << BIT_SHIFT_MDIO_RDATA_8822E) +#define BITS_MDIO_RDATA_8822E \ + (BIT_MASK_MDIO_RDATA_8822E << BIT_SHIFT_MDIO_RDATA_8822E) +#define BIT_CLEAR_MDIO_RDATA_8822E(x) ((x) & (~BITS_MDIO_RDATA_8822E)) +#define BIT_GET_MDIO_RDATA_8822E(x) \ + (((x) >> BIT_SHIFT_MDIO_RDATA_8822E) & BIT_MASK_MDIO_RDATA_8822E) +#define BIT_SET_MDIO_RDATA_8822E(x, v) \ + (BIT_CLEAR_MDIO_RDATA_8822E(x) | BIT_MDIO_RDATA_8822E(v)) + +#define BIT_SHIFT_MDIO_WDATA_8822E 0 +#define BIT_MASK_MDIO_WDATA_8822E 0xffff +#define BIT_MDIO_WDATA_8822E(x) \ + (((x) & BIT_MASK_MDIO_WDATA_8822E) << BIT_SHIFT_MDIO_WDATA_8822E) +#define BITS_MDIO_WDATA_8822E \ + (BIT_MASK_MDIO_WDATA_8822E << BIT_SHIFT_MDIO_WDATA_8822E) +#define BIT_CLEAR_MDIO_WDATA_8822E(x) ((x) & (~BITS_MDIO_WDATA_8822E)) +#define BIT_GET_MDIO_WDATA_8822E(x) \ + (((x) >> BIT_SHIFT_MDIO_WDATA_8822E) & BIT_MASK_MDIO_WDATA_8822E) +#define BIT_SET_MDIO_WDATA_8822E(x, v) \ + (BIT_CLEAR_MDIO_WDATA_8822E(x) | BIT_MDIO_WDATA_8822E(v)) + +/* 2 REG_PCIE_MIX_CFG_8822E */ + +#define BIT_SHIFT_MDIO_PHY_ADDR_8822E 24 +#define BIT_MASK_MDIO_PHY_ADDR_8822E 0x1f +#define BIT_MDIO_PHY_ADDR_8822E(x) \ + (((x) & BIT_MASK_MDIO_PHY_ADDR_8822E) << BIT_SHIFT_MDIO_PHY_ADDR_8822E) +#define BITS_MDIO_PHY_ADDR_8822E \ + (BIT_MASK_MDIO_PHY_ADDR_8822E << BIT_SHIFT_MDIO_PHY_ADDR_8822E) +#define BIT_CLEAR_MDIO_PHY_ADDR_8822E(x) ((x) & (~BITS_MDIO_PHY_ADDR_8822E)) +#define BIT_GET_MDIO_PHY_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_MDIO_PHY_ADDR_8822E) & BIT_MASK_MDIO_PHY_ADDR_8822E) +#define BIT_SET_MDIO_PHY_ADDR_8822E(x, v) \ + (BIT_CLEAR_MDIO_PHY_ADDR_8822E(x) | BIT_MDIO_PHY_ADDR_8822E(v)) + +#define BIT_SHIFT_WATCH_DOG_RECORD_V1_8822E 10 +#define BIT_MASK_WATCH_DOG_RECORD_V1_8822E 0x3fff +#define BIT_WATCH_DOG_RECORD_V1_8822E(x) \ + (((x) & BIT_MASK_WATCH_DOG_RECORD_V1_8822E) \ + << BIT_SHIFT_WATCH_DOG_RECORD_V1_8822E) +#define BITS_WATCH_DOG_RECORD_V1_8822E \ + (BIT_MASK_WATCH_DOG_RECORD_V1_8822E \ + << BIT_SHIFT_WATCH_DOG_RECORD_V1_8822E) +#define BIT_CLEAR_WATCH_DOG_RECORD_V1_8822E(x) \ + ((x) & (~BITS_WATCH_DOG_RECORD_V1_8822E)) +#define BIT_GET_WATCH_DOG_RECORD_V1_8822E(x) \ + (((x) >> BIT_SHIFT_WATCH_DOG_RECORD_V1_8822E) & \ + BIT_MASK_WATCH_DOG_RECORD_V1_8822E) +#define BIT_SET_WATCH_DOG_RECORD_V1_8822E(x, v) \ + (BIT_CLEAR_WATCH_DOG_RECORD_V1_8822E(x) | \ + BIT_WATCH_DOG_RECORD_V1_8822E(v)) + +#define BIT_R_IO_TIMEOUT_FLAG_V1_8822E BIT(9) +#define BIT_EN_WATCH_DOG_8822E BIT(8) +#define BIT_ECRC_EN_V1_8822E BIT(7) +#define BIT_MDIO_RFLAG_V1_8822E BIT(6) +#define BIT_MDIO_WFLAG_V1_8822E BIT(5) + +#define BIT_SHIFT_MDIO_REG_ADDR_V1_8822E 0 +#define BIT_MASK_MDIO_REG_ADDR_V1_8822E 0x1f +#define BIT_MDIO_REG_ADDR_V1_8822E(x) \ + (((x) & BIT_MASK_MDIO_REG_ADDR_V1_8822E) \ + << BIT_SHIFT_MDIO_REG_ADDR_V1_8822E) +#define BITS_MDIO_REG_ADDR_V1_8822E \ + (BIT_MASK_MDIO_REG_ADDR_V1_8822E << BIT_SHIFT_MDIO_REG_ADDR_V1_8822E) +#define BIT_CLEAR_MDIO_REG_ADDR_V1_8822E(x) \ + ((x) & (~BITS_MDIO_REG_ADDR_V1_8822E)) +#define BIT_GET_MDIO_REG_ADDR_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MDIO_REG_ADDR_V1_8822E) & \ + BIT_MASK_MDIO_REG_ADDR_V1_8822E) +#define BIT_SET_MDIO_REG_ADDR_V1_8822E(x, v) \ + (BIT_CLEAR_MDIO_REG_ADDR_V1_8822E(x) | BIT_MDIO_REG_ADDR_V1_8822E(v)) + +/* 2 REG_HCI_MIX_CFG_8822E */ + +#define BIT_SHIFT_WATCH_DOG_TIMER_8822E 28 +#define BIT_MASK_WATCH_DOG_TIMER_8822E 0xf +#define BIT_WATCH_DOG_TIMER_8822E(x) \ + (((x) & BIT_MASK_WATCH_DOG_TIMER_8822E) \ + << BIT_SHIFT_WATCH_DOG_TIMER_8822E) +#define BITS_WATCH_DOG_TIMER_8822E \ + (BIT_MASK_WATCH_DOG_TIMER_8822E << BIT_SHIFT_WATCH_DOG_TIMER_8822E) +#define BIT_CLEAR_WATCH_DOG_TIMER_8822E(x) ((x) & (~BITS_WATCH_DOG_TIMER_8822E)) +#define BIT_GET_WATCH_DOG_TIMER_8822E(x) \ + (((x) >> BIT_SHIFT_WATCH_DOG_TIMER_8822E) & \ + BIT_MASK_WATCH_DOG_TIMER_8822E) +#define BIT_SET_WATCH_DOG_TIMER_8822E(x, v) \ + (BIT_CLEAR_WATCH_DOG_TIMER_8822E(x) | BIT_WATCH_DOG_TIMER_8822E(v)) + +#define BIT_EN_ALIGN_MTU_8822E BIT(23) + +#define BIT_SHIFT_LATENCY_CONTROL_8822E 21 +#define BIT_MASK_LATENCY_CONTROL_8822E 0x3 +#define BIT_LATENCY_CONTROL_8822E(x) \ + (((x) & BIT_MASK_LATENCY_CONTROL_8822E) \ + << BIT_SHIFT_LATENCY_CONTROL_8822E) +#define BITS_LATENCY_CONTROL_8822E \ + (BIT_MASK_LATENCY_CONTROL_8822E << BIT_SHIFT_LATENCY_CONTROL_8822E) +#define BIT_CLEAR_LATENCY_CONTROL_8822E(x) ((x) & (~BITS_LATENCY_CONTROL_8822E)) +#define BIT_GET_LATENCY_CONTROL_8822E(x) \ + (((x) >> BIT_SHIFT_LATENCY_CONTROL_8822E) & \ + BIT_MASK_LATENCY_CONTROL_8822E) +#define BIT_SET_LATENCY_CONTROL_8822E(x, v) \ + (BIT_CLEAR_LATENCY_CONTROL_8822E(x) | BIT_LATENCY_CONTROL_8822E(v)) + +#define BIT_HOST_GEN2_SUPPORT_8822E BIT(20) + +#define BIT_SHIFT_TXDMA_ERR_FLAG_V1_8822E 15 +#define BIT_MASK_TXDMA_ERR_FLAG_V1_8822E 0x1f +#define BIT_TXDMA_ERR_FLAG_V1_8822E(x) \ + (((x) & BIT_MASK_TXDMA_ERR_FLAG_V1_8822E) \ + << BIT_SHIFT_TXDMA_ERR_FLAG_V1_8822E) +#define BITS_TXDMA_ERR_FLAG_V1_8822E \ + (BIT_MASK_TXDMA_ERR_FLAG_V1_8822E << BIT_SHIFT_TXDMA_ERR_FLAG_V1_8822E) +#define BIT_CLEAR_TXDMA_ERR_FLAG_V1_8822E(x) \ + ((x) & (~BITS_TXDMA_ERR_FLAG_V1_8822E)) +#define BIT_GET_TXDMA_ERR_FLAG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TXDMA_ERR_FLAG_V1_8822E) & \ + BIT_MASK_TXDMA_ERR_FLAG_V1_8822E) +#define BIT_SET_TXDMA_ERR_FLAG_V1_8822E(x, v) \ + (BIT_CLEAR_TXDMA_ERR_FLAG_V1_8822E(x) | BIT_TXDMA_ERR_FLAG_V1_8822E(v)) + +#define BIT_EPHY_RX50_EN_8822E BIT(11) + +#define BIT_SHIFT_MSI_TIMEOUT_ID_V1_8822E 8 +#define BIT_MASK_MSI_TIMEOUT_ID_V1_8822E 0x7 +#define BIT_MSI_TIMEOUT_ID_V1_8822E(x) \ + (((x) & BIT_MASK_MSI_TIMEOUT_ID_V1_8822E) \ + << BIT_SHIFT_MSI_TIMEOUT_ID_V1_8822E) +#define BITS_MSI_TIMEOUT_ID_V1_8822E \ + (BIT_MASK_MSI_TIMEOUT_ID_V1_8822E << BIT_SHIFT_MSI_TIMEOUT_ID_V1_8822E) +#define BIT_CLEAR_MSI_TIMEOUT_ID_V1_8822E(x) \ + ((x) & (~BITS_MSI_TIMEOUT_ID_V1_8822E)) +#define BIT_GET_MSI_TIMEOUT_ID_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MSI_TIMEOUT_ID_V1_8822E) & \ + BIT_MASK_MSI_TIMEOUT_ID_V1_8822E) +#define BIT_SET_MSI_TIMEOUT_ID_V1_8822E(x, v) \ + (BIT_CLEAR_MSI_TIMEOUT_ID_V1_8822E(x) | BIT_MSI_TIMEOUT_ID_V1_8822E(v)) + +#define BIT_RADDR_RD_8822E BIT(7) +#define BIT_L1OFF_PWR_OFF_EN_8822E BIT(6) +#define BIT_L0S_LINK_OFF_8822E BIT(4) +#define BIT_ACT_LINK_OFF_8822E BIT(3) +#define BIT_EN_SLOW_MAC_TX_8822E BIT(2) +#define BIT_EN_SLOW_MAC_RX_8822E BIT(1) +#define BIT_EN_SLOW_MAC_HW_8822E BIT(0) + +/* 2 REG_STC_INT_CS_8822E(PCIE STATE CHANGE INTERRUPT CONTROL AND STATUS) */ +#define BIT_STC_INT_EN_8822E BIT(31) + +#define BIT_SHIFT_STC_INT_FLAG_8822E 16 +#define BIT_MASK_STC_INT_FLAG_8822E 0xff +#define BIT_STC_INT_FLAG_8822E(x) \ + (((x) & BIT_MASK_STC_INT_FLAG_8822E) << BIT_SHIFT_STC_INT_FLAG_8822E) +#define BITS_STC_INT_FLAG_8822E \ + (BIT_MASK_STC_INT_FLAG_8822E << BIT_SHIFT_STC_INT_FLAG_8822E) +#define BIT_CLEAR_STC_INT_FLAG_8822E(x) ((x) & (~BITS_STC_INT_FLAG_8822E)) +#define BIT_GET_STC_INT_FLAG_8822E(x) \ + (((x) >> BIT_SHIFT_STC_INT_FLAG_8822E) & BIT_MASK_STC_INT_FLAG_8822E) +#define BIT_SET_STC_INT_FLAG_8822E(x, v) \ + (BIT_CLEAR_STC_INT_FLAG_8822E(x) | BIT_STC_INT_FLAG_8822E(v)) + +#define BIT_SHIFT_STC_INT_IDX_8822E 8 +#define BIT_MASK_STC_INT_IDX_8822E 0x7 +#define BIT_STC_INT_IDX_8822E(x) \ + (((x) & BIT_MASK_STC_INT_IDX_8822E) << BIT_SHIFT_STC_INT_IDX_8822E) +#define BITS_STC_INT_IDX_8822E \ + (BIT_MASK_STC_INT_IDX_8822E << BIT_SHIFT_STC_INT_IDX_8822E) +#define BIT_CLEAR_STC_INT_IDX_8822E(x) ((x) & (~BITS_STC_INT_IDX_8822E)) +#define BIT_GET_STC_INT_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_STC_INT_IDX_8822E) & BIT_MASK_STC_INT_IDX_8822E) +#define BIT_SET_STC_INT_IDX_8822E(x, v) \ + (BIT_CLEAR_STC_INT_IDX_8822E(x) | BIT_STC_INT_IDX_8822E(v)) + +#define BIT_SHIFT_STC_INT_REALTIME_CS_8822E 0 +#define BIT_MASK_STC_INT_REALTIME_CS_8822E 0x3f +#define BIT_STC_INT_REALTIME_CS_8822E(x) \ + (((x) & BIT_MASK_STC_INT_REALTIME_CS_8822E) \ + << BIT_SHIFT_STC_INT_REALTIME_CS_8822E) +#define BITS_STC_INT_REALTIME_CS_8822E \ + (BIT_MASK_STC_INT_REALTIME_CS_8822E \ + << BIT_SHIFT_STC_INT_REALTIME_CS_8822E) +#define BIT_CLEAR_STC_INT_REALTIME_CS_8822E(x) \ + ((x) & (~BITS_STC_INT_REALTIME_CS_8822E)) +#define BIT_GET_STC_INT_REALTIME_CS_8822E(x) \ + (((x) >> BIT_SHIFT_STC_INT_REALTIME_CS_8822E) & \ + BIT_MASK_STC_INT_REALTIME_CS_8822E) +#define BIT_SET_STC_INT_REALTIME_CS_8822E(x, v) \ + (BIT_CLEAR_STC_INT_REALTIME_CS_8822E(x) | \ + BIT_STC_INT_REALTIME_CS_8822E(v)) + +#define BIT_STC_INT_GRP_EN_8822E BIT(31) + +#define BIT_SHIFT_STC_INT_EXPECT_LS_8822E 8 +#define BIT_MASK_STC_INT_EXPECT_LS_8822E 0x3f +#define BIT_STC_INT_EXPECT_LS_8822E(x) \ + (((x) & BIT_MASK_STC_INT_EXPECT_LS_8822E) \ + << BIT_SHIFT_STC_INT_EXPECT_LS_8822E) +#define BITS_STC_INT_EXPECT_LS_8822E \ + (BIT_MASK_STC_INT_EXPECT_LS_8822E << BIT_SHIFT_STC_INT_EXPECT_LS_8822E) +#define BIT_CLEAR_STC_INT_EXPECT_LS_8822E(x) \ + ((x) & (~BITS_STC_INT_EXPECT_LS_8822E)) +#define BIT_GET_STC_INT_EXPECT_LS_8822E(x) \ + (((x) >> BIT_SHIFT_STC_INT_EXPECT_LS_8822E) & \ + BIT_MASK_STC_INT_EXPECT_LS_8822E) +#define BIT_SET_STC_INT_EXPECT_LS_8822E(x, v) \ + (BIT_CLEAR_STC_INT_EXPECT_LS_8822E(x) | BIT_STC_INT_EXPECT_LS_8822E(v)) + +#define BIT_SHIFT_STC_INT_EXPECT_CS_8822E 0 +#define BIT_MASK_STC_INT_EXPECT_CS_8822E 0x3f +#define BIT_STC_INT_EXPECT_CS_8822E(x) \ + (((x) & BIT_MASK_STC_INT_EXPECT_CS_8822E) \ + << BIT_SHIFT_STC_INT_EXPECT_CS_8822E) +#define BITS_STC_INT_EXPECT_CS_8822E \ + (BIT_MASK_STC_INT_EXPECT_CS_8822E << BIT_SHIFT_STC_INT_EXPECT_CS_8822E) +#define BIT_CLEAR_STC_INT_EXPECT_CS_8822E(x) \ + ((x) & (~BITS_STC_INT_EXPECT_CS_8822E)) +#define BIT_GET_STC_INT_EXPECT_CS_8822E(x) \ + (((x) >> BIT_SHIFT_STC_INT_EXPECT_CS_8822E) & \ + BIT_MASK_STC_INT_EXPECT_CS_8822E) +#define BIT_SET_STC_INT_EXPECT_CS_8822E(x, v) \ + (BIT_CLEAR_STC_INT_EXPECT_CS_8822E(x) | BIT_STC_INT_EXPECT_CS_8822E(v)) + +/* 2 REG_H2CQ_TXBD_DESA_8822E */ + +#define BIT_SHIFT_H2CQ_TXBD_DESA_8822E 0 +#define BIT_MASK_H2CQ_TXBD_DESA_8822E 0xffffffffffffffffL +#define BIT_H2CQ_TXBD_DESA_8822E(x) \ + (((x) & BIT_MASK_H2CQ_TXBD_DESA_8822E) \ + << BIT_SHIFT_H2CQ_TXBD_DESA_8822E) +#define BITS_H2CQ_TXBD_DESA_8822E \ + (BIT_MASK_H2CQ_TXBD_DESA_8822E << BIT_SHIFT_H2CQ_TXBD_DESA_8822E) +#define BIT_CLEAR_H2CQ_TXBD_DESA_8822E(x) ((x) & (~BITS_H2CQ_TXBD_DESA_8822E)) +#define BIT_GET_H2CQ_TXBD_DESA_8822E(x) \ + (((x) >> BIT_SHIFT_H2CQ_TXBD_DESA_8822E) & \ + BIT_MASK_H2CQ_TXBD_DESA_8822E) +#define BIT_SET_H2CQ_TXBD_DESA_8822E(x, v) \ + (BIT_CLEAR_H2CQ_TXBD_DESA_8822E(x) | BIT_H2CQ_TXBD_DESA_8822E(v)) + +/* 2 REG_H2CQ_TXBD_NUM_8822E */ +#define BIT_PCIE_H2CQ_FLAG_8822E BIT(14) + +#define BIT_SHIFT_H2CQ_DESC_MODE_8822E 12 +#define BIT_MASK_H2CQ_DESC_MODE_8822E 0x3 +#define BIT_H2CQ_DESC_MODE_8822E(x) \ + (((x) & BIT_MASK_H2CQ_DESC_MODE_8822E) \ + << BIT_SHIFT_H2CQ_DESC_MODE_8822E) +#define BITS_H2CQ_DESC_MODE_8822E \ + (BIT_MASK_H2CQ_DESC_MODE_8822E << BIT_SHIFT_H2CQ_DESC_MODE_8822E) +#define BIT_CLEAR_H2CQ_DESC_MODE_8822E(x) ((x) & (~BITS_H2CQ_DESC_MODE_8822E)) +#define BIT_GET_H2CQ_DESC_MODE_8822E(x) \ + (((x) >> BIT_SHIFT_H2CQ_DESC_MODE_8822E) & \ + BIT_MASK_H2CQ_DESC_MODE_8822E) +#define BIT_SET_H2CQ_DESC_MODE_8822E(x, v) \ + (BIT_CLEAR_H2CQ_DESC_MODE_8822E(x) | BIT_H2CQ_DESC_MODE_8822E(v)) + +#define BIT_SHIFT_H2CQ_DESC_NUM_8822E 0 +#define BIT_MASK_H2CQ_DESC_NUM_8822E 0xfff +#define BIT_H2CQ_DESC_NUM_8822E(x) \ + (((x) & BIT_MASK_H2CQ_DESC_NUM_8822E) << BIT_SHIFT_H2CQ_DESC_NUM_8822E) +#define BITS_H2CQ_DESC_NUM_8822E \ + (BIT_MASK_H2CQ_DESC_NUM_8822E << BIT_SHIFT_H2CQ_DESC_NUM_8822E) +#define BIT_CLEAR_H2CQ_DESC_NUM_8822E(x) ((x) & (~BITS_H2CQ_DESC_NUM_8822E)) +#define BIT_GET_H2CQ_DESC_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_H2CQ_DESC_NUM_8822E) & BIT_MASK_H2CQ_DESC_NUM_8822E) +#define BIT_SET_H2CQ_DESC_NUM_8822E(x, v) \ + (BIT_CLEAR_H2CQ_DESC_NUM_8822E(x) | BIT_H2CQ_DESC_NUM_8822E(v)) + +/* 2 REG_H2CQ_TXBD_IDX_8822E */ + +#define BIT_SHIFT_H2CQ_HW_IDX_8822E 16 +#define BIT_MASK_H2CQ_HW_IDX_8822E 0xfff +#define BIT_H2CQ_HW_IDX_8822E(x) \ + (((x) & BIT_MASK_H2CQ_HW_IDX_8822E) << BIT_SHIFT_H2CQ_HW_IDX_8822E) +#define BITS_H2CQ_HW_IDX_8822E \ + (BIT_MASK_H2CQ_HW_IDX_8822E << BIT_SHIFT_H2CQ_HW_IDX_8822E) +#define BIT_CLEAR_H2CQ_HW_IDX_8822E(x) ((x) & (~BITS_H2CQ_HW_IDX_8822E)) +#define BIT_GET_H2CQ_HW_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_H2CQ_HW_IDX_8822E) & BIT_MASK_H2CQ_HW_IDX_8822E) +#define BIT_SET_H2CQ_HW_IDX_8822E(x, v) \ + (BIT_CLEAR_H2CQ_HW_IDX_8822E(x) | BIT_H2CQ_HW_IDX_8822E(v)) + +#define BIT_SHIFT_H2CQ_HOST_IDX_8822E 0 +#define BIT_MASK_H2CQ_HOST_IDX_8822E 0xfff +#define BIT_H2CQ_HOST_IDX_8822E(x) \ + (((x) & BIT_MASK_H2CQ_HOST_IDX_8822E) << BIT_SHIFT_H2CQ_HOST_IDX_8822E) +#define BITS_H2CQ_HOST_IDX_8822E \ + (BIT_MASK_H2CQ_HOST_IDX_8822E << BIT_SHIFT_H2CQ_HOST_IDX_8822E) +#define BIT_CLEAR_H2CQ_HOST_IDX_8822E(x) ((x) & (~BITS_H2CQ_HOST_IDX_8822E)) +#define BIT_GET_H2CQ_HOST_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_H2CQ_HOST_IDX_8822E) & BIT_MASK_H2CQ_HOST_IDX_8822E) +#define BIT_SET_H2CQ_HOST_IDX_8822E(x, v) \ + (BIT_CLEAR_H2CQ_HOST_IDX_8822E(x) | BIT_H2CQ_HOST_IDX_8822E(v)) + +/* 2 REG_H2CQ_CSR_8822E[31:0] (H2CQ CONTROL AND STATUS) */ +#define BIT_H2CQ_FULL_8822E BIT(31) +#define BIT_CLR_H2CQ_HOST_IDX_8822E BIT(16) +#define BIT_CLR_H2CQ_HW_IDX_8822E BIT(8) +#define BIT_STOP_H2CQ_8822E BIT(0) + +/* 2 REG_CHANGE_PCIE_SPEED_8822E */ +#define BIT_CHANGE_PCIE_SPEED_8822E BIT(18) + +#define BIT_SHIFT_GEN1_GEN2_8822E 16 +#define BIT_MASK_GEN1_GEN2_8822E 0x3 +#define BIT_GEN1_GEN2_8822E(x) \ + (((x) & BIT_MASK_GEN1_GEN2_8822E) << BIT_SHIFT_GEN1_GEN2_8822E) +#define BITS_GEN1_GEN2_8822E \ + (BIT_MASK_GEN1_GEN2_8822E << BIT_SHIFT_GEN1_GEN2_8822E) +#define BIT_CLEAR_GEN1_GEN2_8822E(x) ((x) & (~BITS_GEN1_GEN2_8822E)) +#define BIT_GET_GEN1_GEN2_8822E(x) \ + (((x) >> BIT_SHIFT_GEN1_GEN2_8822E) & BIT_MASK_GEN1_GEN2_8822E) +#define BIT_SET_GEN1_GEN2_8822E(x, v) \ + (BIT_CLEAR_GEN1_GEN2_8822E(x) | BIT_GEN1_GEN2_8822E(v)) + +#define BIT_SHIFT_RXDMA_ERR_CNT_8822E 8 +#define BIT_MASK_RXDMA_ERR_CNT_8822E 0xff +#define BIT_RXDMA_ERR_CNT_8822E(x) \ + (((x) & BIT_MASK_RXDMA_ERR_CNT_8822E) << BIT_SHIFT_RXDMA_ERR_CNT_8822E) +#define BITS_RXDMA_ERR_CNT_8822E \ + (BIT_MASK_RXDMA_ERR_CNT_8822E << BIT_SHIFT_RXDMA_ERR_CNT_8822E) +#define BIT_CLEAR_RXDMA_ERR_CNT_8822E(x) ((x) & (~BITS_RXDMA_ERR_CNT_8822E)) +#define BIT_GET_RXDMA_ERR_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_RXDMA_ERR_CNT_8822E) & BIT_MASK_RXDMA_ERR_CNT_8822E) +#define BIT_SET_RXDMA_ERR_CNT_8822E(x, v) \ + (BIT_CLEAR_RXDMA_ERR_CNT_8822E(x) | BIT_RXDMA_ERR_CNT_8822E(v)) + +#define BIT_TXDMA_ERR_HANDLE_REQ_8822E BIT(7) +#define BIT_TXDMA_ERROR_PS_8822E BIT(6) +#define BIT_EN_TXDMA_STUCK_ERR_HANDLE_8822E BIT(5) +#define BIT_EN_TXDMA_RTN_ERR_HANDLE_8822E BIT(4) +#define BIT_RXDMA_ERR_HANDLE_REQ_8822E BIT(3) +#define BIT_RXDMA_ERROR_PS_8822E BIT(2) +#define BIT_EN_RXDMA_STUCK_ERR_HANDLE_8822E BIT(1) +#define BIT_EN_RXDMA_RTN_ERR_HANDLE_8822E BIT(0) + +/* 2 REG_DEBUG_STATE1_8822E */ + +#define BIT_SHIFT_DEBUG_STATE1_8822E 0 +#define BIT_MASK_DEBUG_STATE1_8822E 0xffffffffL +#define BIT_DEBUG_STATE1_8822E(x) \ + (((x) & BIT_MASK_DEBUG_STATE1_8822E) << BIT_SHIFT_DEBUG_STATE1_8822E) +#define BITS_DEBUG_STATE1_8822E \ + (BIT_MASK_DEBUG_STATE1_8822E << BIT_SHIFT_DEBUG_STATE1_8822E) +#define BIT_CLEAR_DEBUG_STATE1_8822E(x) ((x) & (~BITS_DEBUG_STATE1_8822E)) +#define BIT_GET_DEBUG_STATE1_8822E(x) \ + (((x) >> BIT_SHIFT_DEBUG_STATE1_8822E) & BIT_MASK_DEBUG_STATE1_8822E) +#define BIT_SET_DEBUG_STATE1_8822E(x, v) \ + (BIT_CLEAR_DEBUG_STATE1_8822E(x) | BIT_DEBUG_STATE1_8822E(v)) + +/* 2 REG_DEBUG_STATE2_8822E */ + +#define BIT_SHIFT_DEBUG_STATE2_8822E 0 +#define BIT_MASK_DEBUG_STATE2_8822E 0xffffffffL +#define BIT_DEBUG_STATE2_8822E(x) \ + (((x) & BIT_MASK_DEBUG_STATE2_8822E) << BIT_SHIFT_DEBUG_STATE2_8822E) +#define BITS_DEBUG_STATE2_8822E \ + (BIT_MASK_DEBUG_STATE2_8822E << BIT_SHIFT_DEBUG_STATE2_8822E) +#define BIT_CLEAR_DEBUG_STATE2_8822E(x) ((x) & (~BITS_DEBUG_STATE2_8822E)) +#define BIT_GET_DEBUG_STATE2_8822E(x) \ + (((x) >> BIT_SHIFT_DEBUG_STATE2_8822E) & BIT_MASK_DEBUG_STATE2_8822E) +#define BIT_SET_DEBUG_STATE2_8822E(x, v) \ + (BIT_CLEAR_DEBUG_STATE2_8822E(x) | BIT_DEBUG_STATE2_8822E(v)) + +/* 2 REG_DEBUG_STATE3_8822E */ + +#define BIT_SHIFT_DEBUG_STATE3_8822E 0 +#define BIT_MASK_DEBUG_STATE3_8822E 0xffffffffL +#define BIT_DEBUG_STATE3_8822E(x) \ + (((x) & BIT_MASK_DEBUG_STATE3_8822E) << BIT_SHIFT_DEBUG_STATE3_8822E) +#define BITS_DEBUG_STATE3_8822E \ + (BIT_MASK_DEBUG_STATE3_8822E << BIT_SHIFT_DEBUG_STATE3_8822E) +#define BIT_CLEAR_DEBUG_STATE3_8822E(x) ((x) & (~BITS_DEBUG_STATE3_8822E)) +#define BIT_GET_DEBUG_STATE3_8822E(x) \ + (((x) >> BIT_SHIFT_DEBUG_STATE3_8822E) & BIT_MASK_DEBUG_STATE3_8822E) +#define BIT_SET_DEBUG_STATE3_8822E(x, v) \ + (BIT_CLEAR_DEBUG_STATE3_8822E(x) | BIT_DEBUG_STATE3_8822E(v)) + +/* 2 REG_CHNL_DMA_CFG_V1_8822E */ +#define BIT_TXHCI_EN_V1_8822E BIT(26) +#define BIT_TXHCI_IDLE_V1_8822E BIT(25) +#define BIT_DMA_PRI_EN_V1_8822E BIT(24) + +/* 2 REG_PCIE_HISR0_V1_8822E */ +#define BIT_PSTIMER_2_8822E BIT(31) +#define BIT_PSTIMER_1_8822E BIT(30) +#define BIT_PSTIMER_0_8822E BIT(29) +#define BIT_GTINT4_8822E BIT(28) +#define BIT_GTINT3_8822E BIT(27) +#define BIT_TXBCN0ERR_8822E BIT(26) +#define BIT_TXBCN0OK_8822E BIT(25) +#define BIT_TSF_BIT32_TOGGLE_8822E BIT(24) +#define BIT_TXDMA_START_INT_8822E BIT(23) +#define BIT_TXDMA_STOP_INT_8822E BIT(22) +#define BIT_HISR7_IND_8822E BIT(21) +#define BIT_BCNDMAINT0_8822E BIT(20) +#define BIT_HISR6_IND_8822E BIT(19) +#define BIT_HISR5_IND_8822E BIT(18) +#define BIT_HISR4_IND_8822E BIT(17) +#define BIT_BCNDERR0_8822E BIT(16) +#define BIT_HSISR_IND_ON_INT_8822E BIT(15) +#define BIT_HISR3_IND_8822E BIT(14) +#define BIT_HISR2_IND_8822E BIT(13) +#define BIT_HISR1_IND_8822E BIT(11) +#define BIT_C2HCMD_8822E BIT(10) +#define BIT_CPWM2_8822E BIT(9) +#define BIT_CPWM_8822E BIT(8) +#define BIT_TXDMAOK_CHANNEL15_8822E BIT(7) +#define BIT_TXDMAOK_CHANNEL14_8822E BIT(6) +#define BIT_TXDMAOK_CHANNEL3_8822E BIT(5) +#define BIT_TXDMAOK_CHANNEL2_8822E BIT(4) +#define BIT_TXDMAOK_CHANNEL1_8822E BIT(3) +#define BIT_TXDMAOK_CHANNEL0_8822E BIT(2) +#define BIT_RDU_8822E BIT(1) +#define BIT_RXOK_8822E BIT(0) + +/* 2 REG_PCIE_HISR1_V1_8822E */ +#define BIT_PRE_TX_ERR_INT_8822E BIT(31) +#define BIT_TXFIFO_TH_INT_8822E BIT(30) +#define BIT_BTON_STS_UPDATE_INT_8822E BIT(29) +#define BIT_BCNDMAINT7_8822E BIT(27) +#define BIT_BCNDMAINT6_8822E BIT(26) +#define BIT_BCNDMAINT5_8822E BIT(25) +#define BIT_BCNDMAINT4_8822E BIT(24) +#define BIT_BCNDMAINT3_8822E BIT(23) +#define BIT_BCNDMAINT2_8822E BIT(22) +#define BIT_BCNDMAINT1_8822E BIT(21) +#define BIT_BCNDERR7_8822E BIT(20) +#define BIT_BCNDERR6_8822E BIT(19) +#define BIT_BCNDERR5_8822E BIT(18) +#define BIT_BCNDERR4_8822E BIT(17) +#define BIT_BCNDERR3_8822E BIT(16) +#define BIT_BCNDERR2_8822E BIT(15) +#define BIT_BCNDERR1_8822E BIT(14) +#define BIT_ATIMEND_8822E BIT(12) +#define BIT_TXERR_INT_8822E BIT(11) +#define BIT_RXERR_INT_8822E BIT(10) +#define BIT_TXFOVW_8822E BIT(9) +#define BIT_FOVW_8822E BIT(8) +#define BIT_CPU_MGQ_EARLY_INT_8822E BIT(6) +#define BIT_CPU_MGQ_TXDONE_8822E BIT(5) +#define BIT_PSTIMER_5_8822E BIT(4) +#define BIT_PSTIMER_4_8822E BIT(3) +#define BIT_PSTIMER_3_8822E BIT(2) +#define BIT_CPUMGQ_TX_TIMER_8822E BIT(1) +#define BIT_BB_STOPRX_INT_8822E BIT(0) + +/* 2 REG_PCIE_HISR2_V1_8822E */ +#define BIT_BCNDMAINT_P4_8822E BIT(31) +#define BIT_BCNDMAINT_P3_8822E BIT(30) +#define BIT_BCNDMAINT_P2_8822E BIT(29) +#define BIT_BCNDMAINT_P1_8822E BIT(28) +#define BIT_SCH_PHY_TXOP_SIFS_INT_8822E BIT(23) +#define BIT_ATIMEND7_8822E BIT(22) +#define BIT_ATIMEND6_8822E BIT(21) +#define BIT_ATIMEND5_8822E BIT(20) +#define BIT_ATIMEND4_8822E BIT(19) +#define BIT_ATIMEND3_8822E BIT(18) +#define BIT_ATIMEND2_8822E BIT(17) +#define BIT_ATIMEND1_8822E BIT(16) +#define BIT_TXBCN7OK_8822E BIT(14) +#define BIT_TXBCN6OK_8822E BIT(13) +#define BIT_TXBCN5OK_8822E BIT(12) +#define BIT_TXBCN4OK_8822E BIT(11) +#define BIT_TXBCN3OK_8822E BIT(10) +#define BIT_TXBCN2OK_8822E BIT(9) +#define BIT_TXBCN1OK_8822E BIT(8) +#define BIT_TXBCN7ERR_8822E BIT(6) +#define BIT_TXBCN6ERR_8822E BIT(5) +#define BIT_TXBCN5ERR_8822E BIT(4) +#define BIT_TXBCN4ERR_8822E BIT(3) +#define BIT_TXBCN3ERR_8822E BIT(2) +#define BIT_TXBCN2ERR_8822E BIT(1) +#define BIT_TXBCN1ERR_8822E BIT(0) + +/* 2 REG_PCIE_HISR3_V1_8822E */ +#define BIT_GTINT12_8822E BIT(24) +#define BIT_GTINT11_8822E BIT(23) +#define BIT_GTINT10_8822E BIT(22) +#define BIT_GTINT9_8822E BIT(21) +#define BIT_RX_DESC_BUF_FULL_8822E BIT(20) +#define BIT_CPHY_LDO_OCP_DET_INT_8822E BIT(19) +#define BIT_WDT_PLATFORM_INT_8822E BIT(18) +#define BIT_WDT_CPU_INT_8822E BIT(17) +#define BIT_SETH2CDOK_8822E BIT(16) +#define BIT_H2C_CMD_FULL_8822E BIT(15) +#define BIT_PKT_TRANS_ERR_8822E BIT(14) +#define BIT_TXSHORTCUT_TXDESUPDATEOK_8822E BIT(13) +#define BIT_TXSHORTCUT_BKUPDATEOK_8822E BIT(12) +#define BIT_TXSHORTCUT_BEUPDATEOK_8822E BIT(11) +#define BIT_TXSHORTCUT_VIUPDATEOK_8822E BIT(10) +#define BIT_TXSHORTCUT_VOUPDATEOK_8822E BIT(9) +#define BIT_SEARCH_FAIL_8822E BIT(8) +#define BIT_PWR_INT_127TO96_8822E BIT(7) +#define BIT_PWR_INT_95TO64_8822E BIT(6) +#define BIT_PWR_INT_63TO32_8822E BIT(5) +#define BIT_PWR_INT_31TO0_8822E BIT(4) +#define BIT_RX_DMA_STUCK_8822E BIT(3) +#define BIT_TX_DMA_STUCK_8822E BIT(2) +#define BIT_DDMA0_LP_INT_8822E BIT(1) +#define BIT_DDMA0_HP_INT_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_Q0_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_Q0_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_Q0_V1_8822E 0x7f +#define BIT_QUEUEMACID_Q0_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_Q0_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_Q0_V1_8822E) +#define BITS_QUEUEMACID_Q0_V1_8822E \ + (BIT_MASK_QUEUEMACID_Q0_V1_8822E << BIT_SHIFT_QUEUEMACID_Q0_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_Q0_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_Q0_V1_8822E)) +#define BIT_GET_QUEUEMACID_Q0_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_Q0_V1_8822E) & \ + BIT_MASK_QUEUEMACID_Q0_V1_8822E) +#define BIT_SET_QUEUEMACID_Q0_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_Q0_V1_8822E(x) | BIT_QUEUEMACID_Q0_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_Q0_V1_8822E 23 +#define BIT_MASK_QUEUEAC_Q0_V1_8822E 0x3 +#define BIT_QUEUEAC_Q0_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_Q0_V1_8822E) << BIT_SHIFT_QUEUEAC_Q0_V1_8822E) +#define BITS_QUEUEAC_Q0_V1_8822E \ + (BIT_MASK_QUEUEAC_Q0_V1_8822E << BIT_SHIFT_QUEUEAC_Q0_V1_8822E) +#define BIT_CLEAR_QUEUEAC_Q0_V1_8822E(x) ((x) & (~BITS_QUEUEAC_Q0_V1_8822E)) +#define BIT_GET_QUEUEAC_Q0_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_Q0_V1_8822E) & BIT_MASK_QUEUEAC_Q0_V1_8822E) +#define BIT_SET_QUEUEAC_Q0_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_Q0_V1_8822E(x) | BIT_QUEUEAC_Q0_V1_8822E(v)) + +#define BIT_TIDEMPTY_Q0_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_Q0_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_Q0_V2_8822E 0x7ff +#define BIT_TAIL_PKT_Q0_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_Q0_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_Q0_V2_8822E) +#define BITS_TAIL_PKT_Q0_V2_8822E \ + (BIT_MASK_TAIL_PKT_Q0_V2_8822E << BIT_SHIFT_TAIL_PKT_Q0_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_Q0_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_Q0_V2_8822E)) +#define BIT_GET_TAIL_PKT_Q0_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_Q0_V2_8822E) & \ + BIT_MASK_TAIL_PKT_Q0_V2_8822E) +#define BIT_SET_TAIL_PKT_Q0_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_Q0_V2_8822E(x) | BIT_TAIL_PKT_Q0_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_Q0_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_Q0_V1_8822E 0x7ff +#define BIT_HEAD_PKT_Q0_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_Q0_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_Q0_V1_8822E) +#define BITS_HEAD_PKT_Q0_V1_8822E \ + (BIT_MASK_HEAD_PKT_Q0_V1_8822E << BIT_SHIFT_HEAD_PKT_Q0_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_Q0_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_Q0_V1_8822E)) +#define BIT_GET_HEAD_PKT_Q0_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_Q0_V1_8822E) & \ + BIT_MASK_HEAD_PKT_Q0_V1_8822E) +#define BIT_SET_HEAD_PKT_Q0_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_Q0_V1_8822E(x) | BIT_HEAD_PKT_Q0_V1_8822E(v)) + +/* 2 REG_Q1_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_Q1_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_Q1_V1_8822E 0x7f +#define BIT_QUEUEMACID_Q1_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_Q1_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_Q1_V1_8822E) +#define BITS_QUEUEMACID_Q1_V1_8822E \ + (BIT_MASK_QUEUEMACID_Q1_V1_8822E << BIT_SHIFT_QUEUEMACID_Q1_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_Q1_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_Q1_V1_8822E)) +#define BIT_GET_QUEUEMACID_Q1_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_Q1_V1_8822E) & \ + BIT_MASK_QUEUEMACID_Q1_V1_8822E) +#define BIT_SET_QUEUEMACID_Q1_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_Q1_V1_8822E(x) | BIT_QUEUEMACID_Q1_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_Q1_V1_8822E 23 +#define BIT_MASK_QUEUEAC_Q1_V1_8822E 0x3 +#define BIT_QUEUEAC_Q1_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_Q1_V1_8822E) << BIT_SHIFT_QUEUEAC_Q1_V1_8822E) +#define BITS_QUEUEAC_Q1_V1_8822E \ + (BIT_MASK_QUEUEAC_Q1_V1_8822E << BIT_SHIFT_QUEUEAC_Q1_V1_8822E) +#define BIT_CLEAR_QUEUEAC_Q1_V1_8822E(x) ((x) & (~BITS_QUEUEAC_Q1_V1_8822E)) +#define BIT_GET_QUEUEAC_Q1_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_Q1_V1_8822E) & BIT_MASK_QUEUEAC_Q1_V1_8822E) +#define BIT_SET_QUEUEAC_Q1_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_Q1_V1_8822E(x) | BIT_QUEUEAC_Q1_V1_8822E(v)) + +#define BIT_TIDEMPTY_Q1_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_Q1_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_Q1_V2_8822E 0x7ff +#define BIT_TAIL_PKT_Q1_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_Q1_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_Q1_V2_8822E) +#define BITS_TAIL_PKT_Q1_V2_8822E \ + (BIT_MASK_TAIL_PKT_Q1_V2_8822E << BIT_SHIFT_TAIL_PKT_Q1_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_Q1_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_Q1_V2_8822E)) +#define BIT_GET_TAIL_PKT_Q1_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_Q1_V2_8822E) & \ + BIT_MASK_TAIL_PKT_Q1_V2_8822E) +#define BIT_SET_TAIL_PKT_Q1_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_Q1_V2_8822E(x) | BIT_TAIL_PKT_Q1_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_Q1_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_Q1_V1_8822E 0x7ff +#define BIT_HEAD_PKT_Q1_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_Q1_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_Q1_V1_8822E) +#define BITS_HEAD_PKT_Q1_V1_8822E \ + (BIT_MASK_HEAD_PKT_Q1_V1_8822E << BIT_SHIFT_HEAD_PKT_Q1_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_Q1_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_Q1_V1_8822E)) +#define BIT_GET_HEAD_PKT_Q1_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_Q1_V1_8822E) & \ + BIT_MASK_HEAD_PKT_Q1_V1_8822E) +#define BIT_SET_HEAD_PKT_Q1_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_Q1_V1_8822E(x) | BIT_HEAD_PKT_Q1_V1_8822E(v)) + +/* 2 REG_Q2_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_Q2_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_Q2_V1_8822E 0x7f +#define BIT_QUEUEMACID_Q2_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_Q2_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_Q2_V1_8822E) +#define BITS_QUEUEMACID_Q2_V1_8822E \ + (BIT_MASK_QUEUEMACID_Q2_V1_8822E << BIT_SHIFT_QUEUEMACID_Q2_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_Q2_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_Q2_V1_8822E)) +#define BIT_GET_QUEUEMACID_Q2_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_Q2_V1_8822E) & \ + BIT_MASK_QUEUEMACID_Q2_V1_8822E) +#define BIT_SET_QUEUEMACID_Q2_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_Q2_V1_8822E(x) | BIT_QUEUEMACID_Q2_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_Q2_V1_8822E 23 +#define BIT_MASK_QUEUEAC_Q2_V1_8822E 0x3 +#define BIT_QUEUEAC_Q2_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_Q2_V1_8822E) << BIT_SHIFT_QUEUEAC_Q2_V1_8822E) +#define BITS_QUEUEAC_Q2_V1_8822E \ + (BIT_MASK_QUEUEAC_Q2_V1_8822E << BIT_SHIFT_QUEUEAC_Q2_V1_8822E) +#define BIT_CLEAR_QUEUEAC_Q2_V1_8822E(x) ((x) & (~BITS_QUEUEAC_Q2_V1_8822E)) +#define BIT_GET_QUEUEAC_Q2_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_Q2_V1_8822E) & BIT_MASK_QUEUEAC_Q2_V1_8822E) +#define BIT_SET_QUEUEAC_Q2_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_Q2_V1_8822E(x) | BIT_QUEUEAC_Q2_V1_8822E(v)) + +#define BIT_TIDEMPTY_Q2_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_Q2_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_Q2_V2_8822E 0x7ff +#define BIT_TAIL_PKT_Q2_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_Q2_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_Q2_V2_8822E) +#define BITS_TAIL_PKT_Q2_V2_8822E \ + (BIT_MASK_TAIL_PKT_Q2_V2_8822E << BIT_SHIFT_TAIL_PKT_Q2_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_Q2_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_Q2_V2_8822E)) +#define BIT_GET_TAIL_PKT_Q2_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_Q2_V2_8822E) & \ + BIT_MASK_TAIL_PKT_Q2_V2_8822E) +#define BIT_SET_TAIL_PKT_Q2_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_Q2_V2_8822E(x) | BIT_TAIL_PKT_Q2_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_Q2_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_Q2_V1_8822E 0x7ff +#define BIT_HEAD_PKT_Q2_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_Q2_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_Q2_V1_8822E) +#define BITS_HEAD_PKT_Q2_V1_8822E \ + (BIT_MASK_HEAD_PKT_Q2_V1_8822E << BIT_SHIFT_HEAD_PKT_Q2_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_Q2_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_Q2_V1_8822E)) +#define BIT_GET_HEAD_PKT_Q2_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_Q2_V1_8822E) & \ + BIT_MASK_HEAD_PKT_Q2_V1_8822E) +#define BIT_SET_HEAD_PKT_Q2_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_Q2_V1_8822E(x) | BIT_HEAD_PKT_Q2_V1_8822E(v)) + +/* 2 REG_Q3_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_Q3_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_Q3_V1_8822E 0x7f +#define BIT_QUEUEMACID_Q3_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_Q3_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_Q3_V1_8822E) +#define BITS_QUEUEMACID_Q3_V1_8822E \ + (BIT_MASK_QUEUEMACID_Q3_V1_8822E << BIT_SHIFT_QUEUEMACID_Q3_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_Q3_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_Q3_V1_8822E)) +#define BIT_GET_QUEUEMACID_Q3_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_Q3_V1_8822E) & \ + BIT_MASK_QUEUEMACID_Q3_V1_8822E) +#define BIT_SET_QUEUEMACID_Q3_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_Q3_V1_8822E(x) | BIT_QUEUEMACID_Q3_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_Q3_V1_8822E 23 +#define BIT_MASK_QUEUEAC_Q3_V1_8822E 0x3 +#define BIT_QUEUEAC_Q3_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_Q3_V1_8822E) << BIT_SHIFT_QUEUEAC_Q3_V1_8822E) +#define BITS_QUEUEAC_Q3_V1_8822E \ + (BIT_MASK_QUEUEAC_Q3_V1_8822E << BIT_SHIFT_QUEUEAC_Q3_V1_8822E) +#define BIT_CLEAR_QUEUEAC_Q3_V1_8822E(x) ((x) & (~BITS_QUEUEAC_Q3_V1_8822E)) +#define BIT_GET_QUEUEAC_Q3_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_Q3_V1_8822E) & BIT_MASK_QUEUEAC_Q3_V1_8822E) +#define BIT_SET_QUEUEAC_Q3_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_Q3_V1_8822E(x) | BIT_QUEUEAC_Q3_V1_8822E(v)) + +#define BIT_TIDEMPTY_Q3_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_Q3_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_Q3_V2_8822E 0x7ff +#define BIT_TAIL_PKT_Q3_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_Q3_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_Q3_V2_8822E) +#define BITS_TAIL_PKT_Q3_V2_8822E \ + (BIT_MASK_TAIL_PKT_Q3_V2_8822E << BIT_SHIFT_TAIL_PKT_Q3_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_Q3_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_Q3_V2_8822E)) +#define BIT_GET_TAIL_PKT_Q3_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_Q3_V2_8822E) & \ + BIT_MASK_TAIL_PKT_Q3_V2_8822E) +#define BIT_SET_TAIL_PKT_Q3_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_Q3_V2_8822E(x) | BIT_TAIL_PKT_Q3_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_Q3_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_Q3_V1_8822E 0x7ff +#define BIT_HEAD_PKT_Q3_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_Q3_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_Q3_V1_8822E) +#define BITS_HEAD_PKT_Q3_V1_8822E \ + (BIT_MASK_HEAD_PKT_Q3_V1_8822E << BIT_SHIFT_HEAD_PKT_Q3_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_Q3_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_Q3_V1_8822E)) +#define BIT_GET_HEAD_PKT_Q3_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_Q3_V1_8822E) & \ + BIT_MASK_HEAD_PKT_Q3_V1_8822E) +#define BIT_SET_HEAD_PKT_Q3_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_Q3_V1_8822E(x) | BIT_HEAD_PKT_Q3_V1_8822E(v)) + +/* 2 REG_MGQ_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_MGQ_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_MGQ_V1_8822E 0x7f +#define BIT_QUEUEMACID_MGQ_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_MGQ_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_MGQ_V1_8822E) +#define BITS_QUEUEMACID_MGQ_V1_8822E \ + (BIT_MASK_QUEUEMACID_MGQ_V1_8822E << BIT_SHIFT_QUEUEMACID_MGQ_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_MGQ_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_MGQ_V1_8822E)) +#define BIT_GET_QUEUEMACID_MGQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_MGQ_V1_8822E) & \ + BIT_MASK_QUEUEMACID_MGQ_V1_8822E) +#define BIT_SET_QUEUEMACID_MGQ_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_MGQ_V1_8822E(x) | BIT_QUEUEMACID_MGQ_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_MGQ_V1_8822E 23 +#define BIT_MASK_QUEUEAC_MGQ_V1_8822E 0x3 +#define BIT_QUEUEAC_MGQ_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_MGQ_V1_8822E) \ + << BIT_SHIFT_QUEUEAC_MGQ_V1_8822E) +#define BITS_QUEUEAC_MGQ_V1_8822E \ + (BIT_MASK_QUEUEAC_MGQ_V1_8822E << BIT_SHIFT_QUEUEAC_MGQ_V1_8822E) +#define BIT_CLEAR_QUEUEAC_MGQ_V1_8822E(x) ((x) & (~BITS_QUEUEAC_MGQ_V1_8822E)) +#define BIT_GET_QUEUEAC_MGQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_MGQ_V1_8822E) & \ + BIT_MASK_QUEUEAC_MGQ_V1_8822E) +#define BIT_SET_QUEUEAC_MGQ_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_MGQ_V1_8822E(x) | BIT_QUEUEAC_MGQ_V1_8822E(v)) + +#define BIT_TIDEMPTY_MGQ_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_MGQ_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_MGQ_V2_8822E 0x7ff +#define BIT_TAIL_PKT_MGQ_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_MGQ_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_MGQ_V2_8822E) +#define BITS_TAIL_PKT_MGQ_V2_8822E \ + (BIT_MASK_TAIL_PKT_MGQ_V2_8822E << BIT_SHIFT_TAIL_PKT_MGQ_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_MGQ_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_MGQ_V2_8822E)) +#define BIT_GET_TAIL_PKT_MGQ_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_MGQ_V2_8822E) & \ + BIT_MASK_TAIL_PKT_MGQ_V2_8822E) +#define BIT_SET_TAIL_PKT_MGQ_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_MGQ_V2_8822E(x) | BIT_TAIL_PKT_MGQ_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_MGQ_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_MGQ_V1_8822E 0x7ff +#define BIT_HEAD_PKT_MGQ_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_MGQ_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_MGQ_V1_8822E) +#define BITS_HEAD_PKT_MGQ_V1_8822E \ + (BIT_MASK_HEAD_PKT_MGQ_V1_8822E << BIT_SHIFT_HEAD_PKT_MGQ_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_MGQ_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_MGQ_V1_8822E)) +#define BIT_GET_HEAD_PKT_MGQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_MGQ_V1_8822E) & \ + BIT_MASK_HEAD_PKT_MGQ_V1_8822E) +#define BIT_SET_HEAD_PKT_MGQ_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_MGQ_V1_8822E(x) | BIT_HEAD_PKT_MGQ_V1_8822E(v)) + +/* 2 REG_HIQ_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_HIQ_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_HIQ_V1_8822E 0x7f +#define BIT_QUEUEMACID_HIQ_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_HIQ_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_HIQ_V1_8822E) +#define BITS_QUEUEMACID_HIQ_V1_8822E \ + (BIT_MASK_QUEUEMACID_HIQ_V1_8822E << BIT_SHIFT_QUEUEMACID_HIQ_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_HIQ_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_HIQ_V1_8822E)) +#define BIT_GET_QUEUEMACID_HIQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_HIQ_V1_8822E) & \ + BIT_MASK_QUEUEMACID_HIQ_V1_8822E) +#define BIT_SET_QUEUEMACID_HIQ_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_HIQ_V1_8822E(x) | BIT_QUEUEMACID_HIQ_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_HIQ_V1_8822E 23 +#define BIT_MASK_QUEUEAC_HIQ_V1_8822E 0x3 +#define BIT_QUEUEAC_HIQ_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_HIQ_V1_8822E) \ + << BIT_SHIFT_QUEUEAC_HIQ_V1_8822E) +#define BITS_QUEUEAC_HIQ_V1_8822E \ + (BIT_MASK_QUEUEAC_HIQ_V1_8822E << BIT_SHIFT_QUEUEAC_HIQ_V1_8822E) +#define BIT_CLEAR_QUEUEAC_HIQ_V1_8822E(x) ((x) & (~BITS_QUEUEAC_HIQ_V1_8822E)) +#define BIT_GET_QUEUEAC_HIQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_HIQ_V1_8822E) & \ + BIT_MASK_QUEUEAC_HIQ_V1_8822E) +#define BIT_SET_QUEUEAC_HIQ_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_HIQ_V1_8822E(x) | BIT_QUEUEAC_HIQ_V1_8822E(v)) + +#define BIT_TIDEMPTY_HIQ_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_HIQ_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_HIQ_V2_8822E 0x7ff +#define BIT_TAIL_PKT_HIQ_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_HIQ_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_HIQ_V2_8822E) +#define BITS_TAIL_PKT_HIQ_V2_8822E \ + (BIT_MASK_TAIL_PKT_HIQ_V2_8822E << BIT_SHIFT_TAIL_PKT_HIQ_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_HIQ_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_HIQ_V2_8822E)) +#define BIT_GET_TAIL_PKT_HIQ_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_HIQ_V2_8822E) & \ + BIT_MASK_TAIL_PKT_HIQ_V2_8822E) +#define BIT_SET_TAIL_PKT_HIQ_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_HIQ_V2_8822E(x) | BIT_TAIL_PKT_HIQ_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_HIQ_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_HIQ_V1_8822E 0x7ff +#define BIT_HEAD_PKT_HIQ_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_HIQ_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_HIQ_V1_8822E) +#define BITS_HEAD_PKT_HIQ_V1_8822E \ + (BIT_MASK_HEAD_PKT_HIQ_V1_8822E << BIT_SHIFT_HEAD_PKT_HIQ_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_HIQ_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_HIQ_V1_8822E)) +#define BIT_GET_HEAD_PKT_HIQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_HIQ_V1_8822E) & \ + BIT_MASK_HEAD_PKT_HIQ_V1_8822E) +#define BIT_SET_HEAD_PKT_HIQ_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_HIQ_V1_8822E(x) | BIT_HEAD_PKT_HIQ_V1_8822E(v)) + +/* 2 REG_BCNQ_INFO_8822E */ + +#define BIT_SHIFT_BCNQ_HEAD_PG_V1_8822E 0 +#define BIT_MASK_BCNQ_HEAD_PG_V1_8822E 0xfff +#define BIT_BCNQ_HEAD_PG_V1_8822E(x) \ + (((x) & BIT_MASK_BCNQ_HEAD_PG_V1_8822E) \ + << BIT_SHIFT_BCNQ_HEAD_PG_V1_8822E) +#define BITS_BCNQ_HEAD_PG_V1_8822E \ + (BIT_MASK_BCNQ_HEAD_PG_V1_8822E << BIT_SHIFT_BCNQ_HEAD_PG_V1_8822E) +#define BIT_CLEAR_BCNQ_HEAD_PG_V1_8822E(x) ((x) & (~BITS_BCNQ_HEAD_PG_V1_8822E)) +#define BIT_GET_BCNQ_HEAD_PG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BCNQ_HEAD_PG_V1_8822E) & \ + BIT_MASK_BCNQ_HEAD_PG_V1_8822E) +#define BIT_SET_BCNQ_HEAD_PG_V1_8822E(x, v) \ + (BIT_CLEAR_BCNQ_HEAD_PG_V1_8822E(x) | BIT_BCNQ_HEAD_PG_V1_8822E(v)) + +/* 2 REG_TXPKT_EMPTY_8822E */ +#define BIT_BCNQ_EMPTY_8822E BIT(11) +#define BIT_HQQ_EMPTY_8822E BIT(10) +#define BIT_MQQ_EMPTY_8822E BIT(9) +#define BIT_MGQ_CPU_EMPTY_8822E BIT(8) +#define BIT_AC7Q_EMPTY_8822E BIT(7) +#define BIT_AC6Q_EMPTY_8822E BIT(6) +#define BIT_AC5Q_EMPTY_8822E BIT(5) +#define BIT_AC4Q_EMPTY_8822E BIT(4) +#define BIT_AC3Q_EMPTY_8822E BIT(3) +#define BIT_AC2Q_EMPTY_8822E BIT(2) +#define BIT_AC1Q_EMPTY_8822E BIT(1) +#define BIT_AC0Q_EMPTY_8822E BIT(0) + +/* 2 REG_CPU_MGQ_INFO_8822E */ +#define BIT_BCN1_POLL_8822E BIT(30) +#define BIT_CPUMGT_POLL_8822E BIT(29) +#define BIT_BCN_POLL_8822E BIT(28) +#define BIT_CPUMGQ_FW_NUM_V1_8822E BIT(12) + +#define BIT_SHIFT_FW_FREE_TAIL_V1_8822E 0 +#define BIT_MASK_FW_FREE_TAIL_V1_8822E 0xfff +#define BIT_FW_FREE_TAIL_V1_8822E(x) \ + (((x) & BIT_MASK_FW_FREE_TAIL_V1_8822E) \ + << BIT_SHIFT_FW_FREE_TAIL_V1_8822E) +#define BITS_FW_FREE_TAIL_V1_8822E \ + (BIT_MASK_FW_FREE_TAIL_V1_8822E << BIT_SHIFT_FW_FREE_TAIL_V1_8822E) +#define BIT_CLEAR_FW_FREE_TAIL_V1_8822E(x) ((x) & (~BITS_FW_FREE_TAIL_V1_8822E)) +#define BIT_GET_FW_FREE_TAIL_V1_8822E(x) \ + (((x) >> BIT_SHIFT_FW_FREE_TAIL_V1_8822E) & \ + BIT_MASK_FW_FREE_TAIL_V1_8822E) +#define BIT_SET_FW_FREE_TAIL_V1_8822E(x, v) \ + (BIT_CLEAR_FW_FREE_TAIL_V1_8822E(x) | BIT_FW_FREE_TAIL_V1_8822E(v)) + +/* 2 REG_FWHW_TXQ_CTRL_8822E */ +#define BIT_RTS_LIMIT_IN_OFDM_8822E BIT(23) +#define BIT_EN_BCNQ_DL_8822E BIT(22) +#define BIT_EN_RD_RESP_NAV_BK_8822E BIT(21) +#define BIT_EN_WR_FREE_TAIL_8822E BIT(20) +#define BIT_NOTXRPT_USERATE_EN_8822E BIT(19) +#define BIT_DIS_TXFAIL_RPT_8822E BIT(18) +#define BIT_FTM_TIMEOUT_BYPASS_8822E BIT(16) + +#define BIT_SHIFT_EN_QUEUE_RPT_8822E 8 +#define BIT_MASK_EN_QUEUE_RPT_8822E 0xff +#define BIT_EN_QUEUE_RPT_8822E(x) \ + (((x) & BIT_MASK_EN_QUEUE_RPT_8822E) << BIT_SHIFT_EN_QUEUE_RPT_8822E) +#define BITS_EN_QUEUE_RPT_8822E \ + (BIT_MASK_EN_QUEUE_RPT_8822E << BIT_SHIFT_EN_QUEUE_RPT_8822E) +#define BIT_CLEAR_EN_QUEUE_RPT_8822E(x) ((x) & (~BITS_EN_QUEUE_RPT_8822E)) +#define BIT_GET_EN_QUEUE_RPT_8822E(x) \ + (((x) >> BIT_SHIFT_EN_QUEUE_RPT_8822E) & BIT_MASK_EN_QUEUE_RPT_8822E) +#define BIT_SET_EN_QUEUE_RPT_8822E(x, v) \ + (BIT_CLEAR_EN_QUEUE_RPT_8822E(x) | BIT_EN_QUEUE_RPT_8822E(v)) + +#define BIT_EN_RTY_BK_8822E BIT(7) +#define BIT_EN_USE_INI_RAT_8822E BIT(6) +#define BIT_EN_RTS_NAV_BK_8822E BIT(5) +#define BIT_DIS_SSN_CHECK_8822E BIT(4) +#define BIT_MACID_MATCH_RTS_8822E BIT(3) +#define BIT_EN_BCN_TRXRPT_V1_8822E BIT(2) +#define BIT_R_EN_FTMRPT_V1_8822E BIT(1) +#define BIT_R_BMC_NAV_PROTECT_8822E BIT(0) + +/* 2 REG_DATAFB_SEL_8822E */ +#define BIT_BROADCAST_RTY_EN_8822E BIT(3) +#define BIT_EN_RTY_BK_COD_8822E BIT(2) + +#define BIT_SHIFT__R_DATA_FALLBACK_SEL_8822E 0 +#define BIT_MASK__R_DATA_FALLBACK_SEL_8822E 0x3 +#define BIT__R_DATA_FALLBACK_SEL_8822E(x) \ + (((x) & BIT_MASK__R_DATA_FALLBACK_SEL_8822E) \ + << BIT_SHIFT__R_DATA_FALLBACK_SEL_8822E) +#define BITS__R_DATA_FALLBACK_SEL_8822E \ + (BIT_MASK__R_DATA_FALLBACK_SEL_8822E \ + << BIT_SHIFT__R_DATA_FALLBACK_SEL_8822E) +#define BIT_CLEAR__R_DATA_FALLBACK_SEL_8822E(x) \ + ((x) & (~BITS__R_DATA_FALLBACK_SEL_8822E)) +#define BIT_GET__R_DATA_FALLBACK_SEL_8822E(x) \ + (((x) >> BIT_SHIFT__R_DATA_FALLBACK_SEL_8822E) & \ + BIT_MASK__R_DATA_FALLBACK_SEL_8822E) +#define BIT_SET__R_DATA_FALLBACK_SEL_8822E(x, v) \ + (BIT_CLEAR__R_DATA_FALLBACK_SEL_8822E(x) | \ + BIT__R_DATA_FALLBACK_SEL_8822E(v)) + +/* 2 REG_BCNQ_BDNY_V1_8822E */ + +#define BIT_SHIFT_BCNQ_PGBNDY_V1_8822E 0 +#define BIT_MASK_BCNQ_PGBNDY_V1_8822E 0xfff +#define BIT_BCNQ_PGBNDY_V1_8822E(x) \ + (((x) & BIT_MASK_BCNQ_PGBNDY_V1_8822E) \ + << BIT_SHIFT_BCNQ_PGBNDY_V1_8822E) +#define BITS_BCNQ_PGBNDY_V1_8822E \ + (BIT_MASK_BCNQ_PGBNDY_V1_8822E << BIT_SHIFT_BCNQ_PGBNDY_V1_8822E) +#define BIT_CLEAR_BCNQ_PGBNDY_V1_8822E(x) ((x) & (~BITS_BCNQ_PGBNDY_V1_8822E)) +#define BIT_GET_BCNQ_PGBNDY_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BCNQ_PGBNDY_V1_8822E) & \ + BIT_MASK_BCNQ_PGBNDY_V1_8822E) +#define BIT_SET_BCNQ_PGBNDY_V1_8822E(x, v) \ + (BIT_CLEAR_BCNQ_PGBNDY_V1_8822E(x) | BIT_BCNQ_PGBNDY_V1_8822E(v)) + +/* 2 REG_LIFETIME_EN_8822E */ +#define BIT_BT_INT_CPU_8822E BIT(7) +#define BIT_BT_INT_PTA_8822E BIT(6) +#define BIT_BA_PARSER_EN_8822E BIT(5) +#define BIT_EN_CTRL_RTYBIT_8822E BIT(4) +#define BIT_LIFETIME_BK_EN_8822E BIT(3) +#define BIT_LIFETIME_BE_EN_8822E BIT(2) +#define BIT_LIFETIME_VI_EN_8822E BIT(1) +#define BIT_LIFETIME_VO_EN_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_SPEC_SIFS_8822E */ + +#define BIT_SHIFT_SPEC_SIFS_OFDM_PTCL_8822E 8 +#define BIT_MASK_SPEC_SIFS_OFDM_PTCL_8822E 0xff +#define BIT_SPEC_SIFS_OFDM_PTCL_8822E(x) \ + (((x) & BIT_MASK_SPEC_SIFS_OFDM_PTCL_8822E) \ + << BIT_SHIFT_SPEC_SIFS_OFDM_PTCL_8822E) +#define BITS_SPEC_SIFS_OFDM_PTCL_8822E \ + (BIT_MASK_SPEC_SIFS_OFDM_PTCL_8822E \ + << BIT_SHIFT_SPEC_SIFS_OFDM_PTCL_8822E) +#define BIT_CLEAR_SPEC_SIFS_OFDM_PTCL_8822E(x) \ + ((x) & (~BITS_SPEC_SIFS_OFDM_PTCL_8822E)) +#define BIT_GET_SPEC_SIFS_OFDM_PTCL_8822E(x) \ + (((x) >> BIT_SHIFT_SPEC_SIFS_OFDM_PTCL_8822E) & \ + BIT_MASK_SPEC_SIFS_OFDM_PTCL_8822E) +#define BIT_SET_SPEC_SIFS_OFDM_PTCL_8822E(x, v) \ + (BIT_CLEAR_SPEC_SIFS_OFDM_PTCL_8822E(x) | \ + BIT_SPEC_SIFS_OFDM_PTCL_8822E(v)) + +#define BIT_SHIFT_SPEC_SIFS_CCK_PTCL_8822E 0 +#define BIT_MASK_SPEC_SIFS_CCK_PTCL_8822E 0xff +#define BIT_SPEC_SIFS_CCK_PTCL_8822E(x) \ + (((x) & BIT_MASK_SPEC_SIFS_CCK_PTCL_8822E) \ + << BIT_SHIFT_SPEC_SIFS_CCK_PTCL_8822E) +#define BITS_SPEC_SIFS_CCK_PTCL_8822E \ + (BIT_MASK_SPEC_SIFS_CCK_PTCL_8822E \ + << BIT_SHIFT_SPEC_SIFS_CCK_PTCL_8822E) +#define BIT_CLEAR_SPEC_SIFS_CCK_PTCL_8822E(x) \ + ((x) & (~BITS_SPEC_SIFS_CCK_PTCL_8822E)) +#define BIT_GET_SPEC_SIFS_CCK_PTCL_8822E(x) \ + (((x) >> BIT_SHIFT_SPEC_SIFS_CCK_PTCL_8822E) & \ + BIT_MASK_SPEC_SIFS_CCK_PTCL_8822E) +#define BIT_SET_SPEC_SIFS_CCK_PTCL_8822E(x, v) \ + (BIT_CLEAR_SPEC_SIFS_CCK_PTCL_8822E(x) | \ + BIT_SPEC_SIFS_CCK_PTCL_8822E(v)) + +/* 2 REG_RETRY_LIMIT_8822E */ + +#define BIT_SHIFT_SRL_8822E 8 +#define BIT_MASK_SRL_8822E 0x3f +#define BIT_SRL_8822E(x) (((x) & BIT_MASK_SRL_8822E) << BIT_SHIFT_SRL_8822E) +#define BITS_SRL_8822E (BIT_MASK_SRL_8822E << BIT_SHIFT_SRL_8822E) +#define BIT_CLEAR_SRL_8822E(x) ((x) & (~BITS_SRL_8822E)) +#define BIT_GET_SRL_8822E(x) (((x) >> BIT_SHIFT_SRL_8822E) & BIT_MASK_SRL_8822E) +#define BIT_SET_SRL_8822E(x, v) (BIT_CLEAR_SRL_8822E(x) | BIT_SRL_8822E(v)) + +#define BIT_SHIFT_LRL_8822E 0 +#define BIT_MASK_LRL_8822E 0x3f +#define BIT_LRL_8822E(x) (((x) & BIT_MASK_LRL_8822E) << BIT_SHIFT_LRL_8822E) +#define BITS_LRL_8822E (BIT_MASK_LRL_8822E << BIT_SHIFT_LRL_8822E) +#define BIT_CLEAR_LRL_8822E(x) ((x) & (~BITS_LRL_8822E)) +#define BIT_GET_LRL_8822E(x) (((x) >> BIT_SHIFT_LRL_8822E) & BIT_MASK_LRL_8822E) +#define BIT_SET_LRL_8822E(x, v) (BIT_CLEAR_LRL_8822E(x) | BIT_LRL_8822E(v)) + +/* 2 REG_TXBF_CTRL_8822E */ +#define BIT_R_ENABLE_NDPA_8822E BIT(31) +#define BIT_USE_NDPA_PARAMETER_8822E BIT(30) +#define BIT_R_PROP_TXBF_8822E BIT(29) +#define BIT_R_EN_NDPA_INT_8822E BIT(28) +#define BIT_R_TXBF1_80M_8822E BIT(27) +#define BIT_R_TXBF1_40M_8822E BIT(26) +#define BIT_R_TXBF1_20M_8822E BIT(25) + +#define BIT_SHIFT_R_TXBF1_AID_8822E 16 +#define BIT_MASK_R_TXBF1_AID_8822E 0x1ff +#define BIT_R_TXBF1_AID_8822E(x) \ + (((x) & BIT_MASK_R_TXBF1_AID_8822E) << BIT_SHIFT_R_TXBF1_AID_8822E) +#define BITS_R_TXBF1_AID_8822E \ + (BIT_MASK_R_TXBF1_AID_8822E << BIT_SHIFT_R_TXBF1_AID_8822E) +#define BIT_CLEAR_R_TXBF1_AID_8822E(x) ((x) & (~BITS_R_TXBF1_AID_8822E)) +#define BIT_GET_R_TXBF1_AID_8822E(x) \ + (((x) >> BIT_SHIFT_R_TXBF1_AID_8822E) & BIT_MASK_R_TXBF1_AID_8822E) +#define BIT_SET_R_TXBF1_AID_8822E(x, v) \ + (BIT_CLEAR_R_TXBF1_AID_8822E(x) | BIT_R_TXBF1_AID_8822E(v)) + +#define BIT_DIS_NDP_BFEN_8822E BIT(15) +#define BIT_R_TXBCN_NOBLOCK_NDP_8822E BIT(14) +#define BIT_R_TXBF0_80M_8822E BIT(11) +#define BIT_R_TXBF0_40M_8822E BIT(10) +#define BIT_R_TXBF0_20M_8822E BIT(9) + +#define BIT_SHIFT_R_TXBF0_AID_8822E 0 +#define BIT_MASK_R_TXBF0_AID_8822E 0x1ff +#define BIT_R_TXBF0_AID_8822E(x) \ + (((x) & BIT_MASK_R_TXBF0_AID_8822E) << BIT_SHIFT_R_TXBF0_AID_8822E) +#define BITS_R_TXBF0_AID_8822E \ + (BIT_MASK_R_TXBF0_AID_8822E << BIT_SHIFT_R_TXBF0_AID_8822E) +#define BIT_CLEAR_R_TXBF0_AID_8822E(x) ((x) & (~BITS_R_TXBF0_AID_8822E)) +#define BIT_GET_R_TXBF0_AID_8822E(x) \ + (((x) >> BIT_SHIFT_R_TXBF0_AID_8822E) & BIT_MASK_R_TXBF0_AID_8822E) +#define BIT_SET_R_TXBF0_AID_8822E(x, v) \ + (BIT_CLEAR_R_TXBF0_AID_8822E(x) | BIT_R_TXBF0_AID_8822E(v)) + +/* 2 REG_DARFRC_8822E */ + +#define BIT_SHIFT_DARF_RC4_8822E 24 +#define BIT_MASK_DARF_RC4_8822E 0x1f +#define BIT_DARF_RC4_8822E(x) \ + (((x) & BIT_MASK_DARF_RC4_8822E) << BIT_SHIFT_DARF_RC4_8822E) +#define BITS_DARF_RC4_8822E \ + (BIT_MASK_DARF_RC4_8822E << BIT_SHIFT_DARF_RC4_8822E) +#define BIT_CLEAR_DARF_RC4_8822E(x) ((x) & (~BITS_DARF_RC4_8822E)) +#define BIT_GET_DARF_RC4_8822E(x) \ + (((x) >> BIT_SHIFT_DARF_RC4_8822E) & BIT_MASK_DARF_RC4_8822E) +#define BIT_SET_DARF_RC4_8822E(x, v) \ + (BIT_CLEAR_DARF_RC4_8822E(x) | BIT_DARF_RC4_8822E(v)) + +#define BIT_SHIFT_DARF_RC3_8822E 16 +#define BIT_MASK_DARF_RC3_8822E 0x1f +#define BIT_DARF_RC3_8822E(x) \ + (((x) & BIT_MASK_DARF_RC3_8822E) << BIT_SHIFT_DARF_RC3_8822E) +#define BITS_DARF_RC3_8822E \ + (BIT_MASK_DARF_RC3_8822E << BIT_SHIFT_DARF_RC3_8822E) +#define BIT_CLEAR_DARF_RC3_8822E(x) ((x) & (~BITS_DARF_RC3_8822E)) +#define BIT_GET_DARF_RC3_8822E(x) \ + (((x) >> BIT_SHIFT_DARF_RC3_8822E) & BIT_MASK_DARF_RC3_8822E) +#define BIT_SET_DARF_RC3_8822E(x, v) \ + (BIT_CLEAR_DARF_RC3_8822E(x) | BIT_DARF_RC3_8822E(v)) + +#define BIT_SHIFT_DARF_RC2_8822E 8 +#define BIT_MASK_DARF_RC2_8822E 0x1f +#define BIT_DARF_RC2_8822E(x) \ + (((x) & BIT_MASK_DARF_RC2_8822E) << BIT_SHIFT_DARF_RC2_8822E) +#define BITS_DARF_RC2_8822E \ + (BIT_MASK_DARF_RC2_8822E << BIT_SHIFT_DARF_RC2_8822E) +#define BIT_CLEAR_DARF_RC2_8822E(x) ((x) & (~BITS_DARF_RC2_8822E)) +#define BIT_GET_DARF_RC2_8822E(x) \ + (((x) >> BIT_SHIFT_DARF_RC2_8822E) & BIT_MASK_DARF_RC2_8822E) +#define BIT_SET_DARF_RC2_8822E(x, v) \ + (BIT_CLEAR_DARF_RC2_8822E(x) | BIT_DARF_RC2_8822E(v)) + +#define BIT_SHIFT_DARF_RC1_8822E 0 +#define BIT_MASK_DARF_RC1_8822E 0x1f +#define BIT_DARF_RC1_8822E(x) \ + (((x) & BIT_MASK_DARF_RC1_8822E) << BIT_SHIFT_DARF_RC1_8822E) +#define BITS_DARF_RC1_8822E \ + (BIT_MASK_DARF_RC1_8822E << BIT_SHIFT_DARF_RC1_8822E) +#define BIT_CLEAR_DARF_RC1_8822E(x) ((x) & (~BITS_DARF_RC1_8822E)) +#define BIT_GET_DARF_RC1_8822E(x) \ + (((x) >> BIT_SHIFT_DARF_RC1_8822E) & BIT_MASK_DARF_RC1_8822E) +#define BIT_SET_DARF_RC1_8822E(x, v) \ + (BIT_CLEAR_DARF_RC1_8822E(x) | BIT_DARF_RC1_8822E(v)) + +/* 2 REG_DARFRCH_8822E */ + +#define BIT_SHIFT_DARF_RC8_V1_8822E 24 +#define BIT_MASK_DARF_RC8_V1_8822E 0x1f +#define BIT_DARF_RC8_V1_8822E(x) \ + (((x) & BIT_MASK_DARF_RC8_V1_8822E) << BIT_SHIFT_DARF_RC8_V1_8822E) +#define BITS_DARF_RC8_V1_8822E \ + (BIT_MASK_DARF_RC8_V1_8822E << BIT_SHIFT_DARF_RC8_V1_8822E) +#define BIT_CLEAR_DARF_RC8_V1_8822E(x) ((x) & (~BITS_DARF_RC8_V1_8822E)) +#define BIT_GET_DARF_RC8_V1_8822E(x) \ + (((x) >> BIT_SHIFT_DARF_RC8_V1_8822E) & BIT_MASK_DARF_RC8_V1_8822E) +#define BIT_SET_DARF_RC8_V1_8822E(x, v) \ + (BIT_CLEAR_DARF_RC8_V1_8822E(x) | BIT_DARF_RC8_V1_8822E(v)) + +#define BIT_SHIFT_DARF_RC7_V1_8822E 16 +#define BIT_MASK_DARF_RC7_V1_8822E 0x1f +#define BIT_DARF_RC7_V1_8822E(x) \ + (((x) & BIT_MASK_DARF_RC7_V1_8822E) << BIT_SHIFT_DARF_RC7_V1_8822E) +#define BITS_DARF_RC7_V1_8822E \ + (BIT_MASK_DARF_RC7_V1_8822E << BIT_SHIFT_DARF_RC7_V1_8822E) +#define BIT_CLEAR_DARF_RC7_V1_8822E(x) ((x) & (~BITS_DARF_RC7_V1_8822E)) +#define BIT_GET_DARF_RC7_V1_8822E(x) \ + (((x) >> BIT_SHIFT_DARF_RC7_V1_8822E) & BIT_MASK_DARF_RC7_V1_8822E) +#define BIT_SET_DARF_RC7_V1_8822E(x, v) \ + (BIT_CLEAR_DARF_RC7_V1_8822E(x) | BIT_DARF_RC7_V1_8822E(v)) + +#define BIT_SHIFT_DARF_RC6_V1_8822E 8 +#define BIT_MASK_DARF_RC6_V1_8822E 0x1f +#define BIT_DARF_RC6_V1_8822E(x) \ + (((x) & BIT_MASK_DARF_RC6_V1_8822E) << BIT_SHIFT_DARF_RC6_V1_8822E) +#define BITS_DARF_RC6_V1_8822E \ + (BIT_MASK_DARF_RC6_V1_8822E << BIT_SHIFT_DARF_RC6_V1_8822E) +#define BIT_CLEAR_DARF_RC6_V1_8822E(x) ((x) & (~BITS_DARF_RC6_V1_8822E)) +#define BIT_GET_DARF_RC6_V1_8822E(x) \ + (((x) >> BIT_SHIFT_DARF_RC6_V1_8822E) & BIT_MASK_DARF_RC6_V1_8822E) +#define BIT_SET_DARF_RC6_V1_8822E(x, v) \ + (BIT_CLEAR_DARF_RC6_V1_8822E(x) | BIT_DARF_RC6_V1_8822E(v)) + +#define BIT_SHIFT_DARF_RC5_V1_8822E 0 +#define BIT_MASK_DARF_RC5_V1_8822E 0x1f +#define BIT_DARF_RC5_V1_8822E(x) \ + (((x) & BIT_MASK_DARF_RC5_V1_8822E) << BIT_SHIFT_DARF_RC5_V1_8822E) +#define BITS_DARF_RC5_V1_8822E \ + (BIT_MASK_DARF_RC5_V1_8822E << BIT_SHIFT_DARF_RC5_V1_8822E) +#define BIT_CLEAR_DARF_RC5_V1_8822E(x) ((x) & (~BITS_DARF_RC5_V1_8822E)) +#define BIT_GET_DARF_RC5_V1_8822E(x) \ + (((x) >> BIT_SHIFT_DARF_RC5_V1_8822E) & BIT_MASK_DARF_RC5_V1_8822E) +#define BIT_SET_DARF_RC5_V1_8822E(x, v) \ + (BIT_CLEAR_DARF_RC5_V1_8822E(x) | BIT_DARF_RC5_V1_8822E(v)) + +/* 2 REG_RARFRC_8822E */ + +#define BIT_SHIFT_RARF_RC4_8822E 24 +#define BIT_MASK_RARF_RC4_8822E 0x1f +#define BIT_RARF_RC4_8822E(x) \ + (((x) & BIT_MASK_RARF_RC4_8822E) << BIT_SHIFT_RARF_RC4_8822E) +#define BITS_RARF_RC4_8822E \ + (BIT_MASK_RARF_RC4_8822E << BIT_SHIFT_RARF_RC4_8822E) +#define BIT_CLEAR_RARF_RC4_8822E(x) ((x) & (~BITS_RARF_RC4_8822E)) +#define BIT_GET_RARF_RC4_8822E(x) \ + (((x) >> BIT_SHIFT_RARF_RC4_8822E) & BIT_MASK_RARF_RC4_8822E) +#define BIT_SET_RARF_RC4_8822E(x, v) \ + (BIT_CLEAR_RARF_RC4_8822E(x) | BIT_RARF_RC4_8822E(v)) + +#define BIT_SHIFT_RARF_RC3_8822E 16 +#define BIT_MASK_RARF_RC3_8822E 0x1f +#define BIT_RARF_RC3_8822E(x) \ + (((x) & BIT_MASK_RARF_RC3_8822E) << BIT_SHIFT_RARF_RC3_8822E) +#define BITS_RARF_RC3_8822E \ + (BIT_MASK_RARF_RC3_8822E << BIT_SHIFT_RARF_RC3_8822E) +#define BIT_CLEAR_RARF_RC3_8822E(x) ((x) & (~BITS_RARF_RC3_8822E)) +#define BIT_GET_RARF_RC3_8822E(x) \ + (((x) >> BIT_SHIFT_RARF_RC3_8822E) & BIT_MASK_RARF_RC3_8822E) +#define BIT_SET_RARF_RC3_8822E(x, v) \ + (BIT_CLEAR_RARF_RC3_8822E(x) | BIT_RARF_RC3_8822E(v)) + +#define BIT_SHIFT_RARF_RC2_8822E 8 +#define BIT_MASK_RARF_RC2_8822E 0x1f +#define BIT_RARF_RC2_8822E(x) \ + (((x) & BIT_MASK_RARF_RC2_8822E) << BIT_SHIFT_RARF_RC2_8822E) +#define BITS_RARF_RC2_8822E \ + (BIT_MASK_RARF_RC2_8822E << BIT_SHIFT_RARF_RC2_8822E) +#define BIT_CLEAR_RARF_RC2_8822E(x) ((x) & (~BITS_RARF_RC2_8822E)) +#define BIT_GET_RARF_RC2_8822E(x) \ + (((x) >> BIT_SHIFT_RARF_RC2_8822E) & BIT_MASK_RARF_RC2_8822E) +#define BIT_SET_RARF_RC2_8822E(x, v) \ + (BIT_CLEAR_RARF_RC2_8822E(x) | BIT_RARF_RC2_8822E(v)) + +#define BIT_SHIFT_RARF_RC1_8822E 0 +#define BIT_MASK_RARF_RC1_8822E 0x1f +#define BIT_RARF_RC1_8822E(x) \ + (((x) & BIT_MASK_RARF_RC1_8822E) << BIT_SHIFT_RARF_RC1_8822E) +#define BITS_RARF_RC1_8822E \ + (BIT_MASK_RARF_RC1_8822E << BIT_SHIFT_RARF_RC1_8822E) +#define BIT_CLEAR_RARF_RC1_8822E(x) ((x) & (~BITS_RARF_RC1_8822E)) +#define BIT_GET_RARF_RC1_8822E(x) \ + (((x) >> BIT_SHIFT_RARF_RC1_8822E) & BIT_MASK_RARF_RC1_8822E) +#define BIT_SET_RARF_RC1_8822E(x, v) \ + (BIT_CLEAR_RARF_RC1_8822E(x) | BIT_RARF_RC1_8822E(v)) + +/* 2 REG_RARFRCH_8822E */ + +#define BIT_SHIFT_RARF_RC8_V1_8822E 24 +#define BIT_MASK_RARF_RC8_V1_8822E 0x1f +#define BIT_RARF_RC8_V1_8822E(x) \ + (((x) & BIT_MASK_RARF_RC8_V1_8822E) << BIT_SHIFT_RARF_RC8_V1_8822E) +#define BITS_RARF_RC8_V1_8822E \ + (BIT_MASK_RARF_RC8_V1_8822E << BIT_SHIFT_RARF_RC8_V1_8822E) +#define BIT_CLEAR_RARF_RC8_V1_8822E(x) ((x) & (~BITS_RARF_RC8_V1_8822E)) +#define BIT_GET_RARF_RC8_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RARF_RC8_V1_8822E) & BIT_MASK_RARF_RC8_V1_8822E) +#define BIT_SET_RARF_RC8_V1_8822E(x, v) \ + (BIT_CLEAR_RARF_RC8_V1_8822E(x) | BIT_RARF_RC8_V1_8822E(v)) + +#define BIT_SHIFT_RARF_RC7_V1_8822E 16 +#define BIT_MASK_RARF_RC7_V1_8822E 0x1f +#define BIT_RARF_RC7_V1_8822E(x) \ + (((x) & BIT_MASK_RARF_RC7_V1_8822E) << BIT_SHIFT_RARF_RC7_V1_8822E) +#define BITS_RARF_RC7_V1_8822E \ + (BIT_MASK_RARF_RC7_V1_8822E << BIT_SHIFT_RARF_RC7_V1_8822E) +#define BIT_CLEAR_RARF_RC7_V1_8822E(x) ((x) & (~BITS_RARF_RC7_V1_8822E)) +#define BIT_GET_RARF_RC7_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RARF_RC7_V1_8822E) & BIT_MASK_RARF_RC7_V1_8822E) +#define BIT_SET_RARF_RC7_V1_8822E(x, v) \ + (BIT_CLEAR_RARF_RC7_V1_8822E(x) | BIT_RARF_RC7_V1_8822E(v)) + +#define BIT_SHIFT_RARF_RC6_V1_8822E 8 +#define BIT_MASK_RARF_RC6_V1_8822E 0x1f +#define BIT_RARF_RC6_V1_8822E(x) \ + (((x) & BIT_MASK_RARF_RC6_V1_8822E) << BIT_SHIFT_RARF_RC6_V1_8822E) +#define BITS_RARF_RC6_V1_8822E \ + (BIT_MASK_RARF_RC6_V1_8822E << BIT_SHIFT_RARF_RC6_V1_8822E) +#define BIT_CLEAR_RARF_RC6_V1_8822E(x) ((x) & (~BITS_RARF_RC6_V1_8822E)) +#define BIT_GET_RARF_RC6_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RARF_RC6_V1_8822E) & BIT_MASK_RARF_RC6_V1_8822E) +#define BIT_SET_RARF_RC6_V1_8822E(x, v) \ + (BIT_CLEAR_RARF_RC6_V1_8822E(x) | BIT_RARF_RC6_V1_8822E(v)) + +#define BIT_SHIFT_RARF_RC5_V1_8822E 0 +#define BIT_MASK_RARF_RC5_V1_8822E 0x1f +#define BIT_RARF_RC5_V1_8822E(x) \ + (((x) & BIT_MASK_RARF_RC5_V1_8822E) << BIT_SHIFT_RARF_RC5_V1_8822E) +#define BITS_RARF_RC5_V1_8822E \ + (BIT_MASK_RARF_RC5_V1_8822E << BIT_SHIFT_RARF_RC5_V1_8822E) +#define BIT_CLEAR_RARF_RC5_V1_8822E(x) ((x) & (~BITS_RARF_RC5_V1_8822E)) +#define BIT_GET_RARF_RC5_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RARF_RC5_V1_8822E) & BIT_MASK_RARF_RC5_V1_8822E) +#define BIT_SET_RARF_RC5_V1_8822E(x, v) \ + (BIT_CLEAR_RARF_RC5_V1_8822E(x) | BIT_RARF_RC5_V1_8822E(v)) + +/* 2 REG_RRSR_8822E */ + +#define BIT_SHIFT_RRSR_RSC_8822E 21 +#define BIT_MASK_RRSR_RSC_8822E 0x3 +#define BIT_RRSR_RSC_8822E(x) \ + (((x) & BIT_MASK_RRSR_RSC_8822E) << BIT_SHIFT_RRSR_RSC_8822E) +#define BITS_RRSR_RSC_8822E \ + (BIT_MASK_RRSR_RSC_8822E << BIT_SHIFT_RRSR_RSC_8822E) +#define BIT_CLEAR_RRSR_RSC_8822E(x) ((x) & (~BITS_RRSR_RSC_8822E)) +#define BIT_GET_RRSR_RSC_8822E(x) \ + (((x) >> BIT_SHIFT_RRSR_RSC_8822E) & BIT_MASK_RRSR_RSC_8822E) +#define BIT_SET_RRSR_RSC_8822E(x, v) \ + (BIT_CLEAR_RRSR_RSC_8822E(x) | BIT_RRSR_RSC_8822E(v)) + +#define BIT_SHIFT_RRSC_BITMAP_8822E 0 +#define BIT_MASK_RRSC_BITMAP_8822E 0xfffff +#define BIT_RRSC_BITMAP_8822E(x) \ + (((x) & BIT_MASK_RRSC_BITMAP_8822E) << BIT_SHIFT_RRSC_BITMAP_8822E) +#define BITS_RRSC_BITMAP_8822E \ + (BIT_MASK_RRSC_BITMAP_8822E << BIT_SHIFT_RRSC_BITMAP_8822E) +#define BIT_CLEAR_RRSC_BITMAP_8822E(x) ((x) & (~BITS_RRSC_BITMAP_8822E)) +#define BIT_GET_RRSC_BITMAP_8822E(x) \ + (((x) >> BIT_SHIFT_RRSC_BITMAP_8822E) & BIT_MASK_RRSC_BITMAP_8822E) +#define BIT_SET_RRSC_BITMAP_8822E(x, v) \ + (BIT_CLEAR_RRSC_BITMAP_8822E(x) | BIT_RRSC_BITMAP_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_ARFR0_8822E */ + +#define BIT_SHIFT_ARFRL0_8822E 0 +#define BIT_MASK_ARFRL0_8822E 0xffffffffL +#define BIT_ARFRL0_8822E(x) \ + (((x) & BIT_MASK_ARFRL0_8822E) << BIT_SHIFT_ARFRL0_8822E) +#define BITS_ARFRL0_8822E (BIT_MASK_ARFRL0_8822E << BIT_SHIFT_ARFRL0_8822E) +#define BIT_CLEAR_ARFRL0_8822E(x) ((x) & (~BITS_ARFRL0_8822E)) +#define BIT_GET_ARFRL0_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRL0_8822E) & BIT_MASK_ARFRL0_8822E) +#define BIT_SET_ARFRL0_8822E(x, v) \ + (BIT_CLEAR_ARFRL0_8822E(x) | BIT_ARFRL0_8822E(v)) + +/* 2 REG_ARFRH0_8822E */ + +#define BIT_SHIFT_ARFRH0_8822E 0 +#define BIT_MASK_ARFRH0_8822E 0xffffffffL +#define BIT_ARFRH0_8822E(x) \ + (((x) & BIT_MASK_ARFRH0_8822E) << BIT_SHIFT_ARFRH0_8822E) +#define BITS_ARFRH0_8822E (BIT_MASK_ARFRH0_8822E << BIT_SHIFT_ARFRH0_8822E) +#define BIT_CLEAR_ARFRH0_8822E(x) ((x) & (~BITS_ARFRH0_8822E)) +#define BIT_GET_ARFRH0_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRH0_8822E) & BIT_MASK_ARFRH0_8822E) +#define BIT_SET_ARFRH0_8822E(x, v) \ + (BIT_CLEAR_ARFRH0_8822E(x) | BIT_ARFRH0_8822E(v)) + +/* 2 REG_ARFR1_V1_8822E */ + +#define BIT_SHIFT_ARFRL1_8822E 0 +#define BIT_MASK_ARFRL1_8822E 0xffffffffL +#define BIT_ARFRL1_8822E(x) \ + (((x) & BIT_MASK_ARFRL1_8822E) << BIT_SHIFT_ARFRL1_8822E) +#define BITS_ARFRL1_8822E (BIT_MASK_ARFRL1_8822E << BIT_SHIFT_ARFRL1_8822E) +#define BIT_CLEAR_ARFRL1_8822E(x) ((x) & (~BITS_ARFRL1_8822E)) +#define BIT_GET_ARFRL1_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRL1_8822E) & BIT_MASK_ARFRL1_8822E) +#define BIT_SET_ARFRL1_8822E(x, v) \ + (BIT_CLEAR_ARFRL1_8822E(x) | BIT_ARFRL1_8822E(v)) + +/* 2 REG_ARFRH1_V1_8822E */ + +#define BIT_SHIFT_ARFRH1_8822E 0 +#define BIT_MASK_ARFRH1_8822E 0xffffffffL +#define BIT_ARFRH1_8822E(x) \ + (((x) & BIT_MASK_ARFRH1_8822E) << BIT_SHIFT_ARFRH1_8822E) +#define BITS_ARFRH1_8822E (BIT_MASK_ARFRH1_8822E << BIT_SHIFT_ARFRH1_8822E) +#define BIT_CLEAR_ARFRH1_8822E(x) ((x) & (~BITS_ARFRH1_8822E)) +#define BIT_GET_ARFRH1_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRH1_8822E) & BIT_MASK_ARFRH1_8822E) +#define BIT_SET_ARFRH1_8822E(x, v) \ + (BIT_CLEAR_ARFRH1_8822E(x) | BIT_ARFRH1_8822E(v)) + +/* 2 REG_CCK_CHECK_8822E */ +#define BIT_CHECK_CCK_EN_8822E BIT(7) +#define BIT_EN_BCN_PKT_REL_8822E BIT(6) +#define BIT_BCN_PORT_SEL_8822E BIT(5) +#define BIT_MOREDATA_BYPASS_8822E BIT(4) +#define BIT_EN_CLR_CMD_REL_BCN_PKT_8822E BIT(3) +#define BIT_R_EN_SET_MOREDATA_8822E BIT(2) +#define BIT__R_DIS_CLEAR_MACID_RELEASE_8822E BIT(1) +#define BIT__R_MACID_RELEASE_EN_8822E BIT(0) + +/* 2 REG_AMPDU_MAX_TIME_V1_8822E */ + +#define BIT_SHIFT_AMPDU_MAX_TIME_8822E 0 +#define BIT_MASK_AMPDU_MAX_TIME_8822E 0xff +#define BIT_AMPDU_MAX_TIME_8822E(x) \ + (((x) & BIT_MASK_AMPDU_MAX_TIME_8822E) \ + << BIT_SHIFT_AMPDU_MAX_TIME_8822E) +#define BITS_AMPDU_MAX_TIME_8822E \ + (BIT_MASK_AMPDU_MAX_TIME_8822E << BIT_SHIFT_AMPDU_MAX_TIME_8822E) +#define BIT_CLEAR_AMPDU_MAX_TIME_8822E(x) ((x) & (~BITS_AMPDU_MAX_TIME_8822E)) +#define BIT_GET_AMPDU_MAX_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_AMPDU_MAX_TIME_8822E) & \ + BIT_MASK_AMPDU_MAX_TIME_8822E) +#define BIT_SET_AMPDU_MAX_TIME_8822E(x, v) \ + (BIT_CLEAR_AMPDU_MAX_TIME_8822E(x) | BIT_AMPDU_MAX_TIME_8822E(v)) + +/* 2 REG_BCNQ1_BDNY_V1_8822E */ + +#define BIT_SHIFT_BCNQ1_PGBNDY_V1_8822E 0 +#define BIT_MASK_BCNQ1_PGBNDY_V1_8822E 0xfff +#define BIT_BCNQ1_PGBNDY_V1_8822E(x) \ + (((x) & BIT_MASK_BCNQ1_PGBNDY_V1_8822E) \ + << BIT_SHIFT_BCNQ1_PGBNDY_V1_8822E) +#define BITS_BCNQ1_PGBNDY_V1_8822E \ + (BIT_MASK_BCNQ1_PGBNDY_V1_8822E << BIT_SHIFT_BCNQ1_PGBNDY_V1_8822E) +#define BIT_CLEAR_BCNQ1_PGBNDY_V1_8822E(x) ((x) & (~BITS_BCNQ1_PGBNDY_V1_8822E)) +#define BIT_GET_BCNQ1_PGBNDY_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BCNQ1_PGBNDY_V1_8822E) & \ + BIT_MASK_BCNQ1_PGBNDY_V1_8822E) +#define BIT_SET_BCNQ1_PGBNDY_V1_8822E(x, v) \ + (BIT_CLEAR_BCNQ1_PGBNDY_V1_8822E(x) | BIT_BCNQ1_PGBNDY_V1_8822E(v)) + +/* 2 REG_AMPDU_MAX_LENGTH_HT_8822E */ + +#define BIT_SHIFT_AMPDU_MAX_LENGTH_HT_8822E 0 +#define BIT_MASK_AMPDU_MAX_LENGTH_HT_8822E 0xffff +#define BIT_AMPDU_MAX_LENGTH_HT_8822E(x) \ + (((x) & BIT_MASK_AMPDU_MAX_LENGTH_HT_8822E) \ + << BIT_SHIFT_AMPDU_MAX_LENGTH_HT_8822E) +#define BITS_AMPDU_MAX_LENGTH_HT_8822E \ + (BIT_MASK_AMPDU_MAX_LENGTH_HT_8822E \ + << BIT_SHIFT_AMPDU_MAX_LENGTH_HT_8822E) +#define BIT_CLEAR_AMPDU_MAX_LENGTH_HT_8822E(x) \ + ((x) & (~BITS_AMPDU_MAX_LENGTH_HT_8822E)) +#define BIT_GET_AMPDU_MAX_LENGTH_HT_8822E(x) \ + (((x) >> BIT_SHIFT_AMPDU_MAX_LENGTH_HT_8822E) & \ + BIT_MASK_AMPDU_MAX_LENGTH_HT_8822E) +#define BIT_SET_AMPDU_MAX_LENGTH_HT_8822E(x, v) \ + (BIT_CLEAR_AMPDU_MAX_LENGTH_HT_8822E(x) | \ + BIT_AMPDU_MAX_LENGTH_HT_8822E(v)) + +/* 2 REG_ACQ_STOP_8822E */ +#define BIT_AC7Q_STOP_8822E BIT(7) +#define BIT_AC6Q_STOP_8822E BIT(6) +#define BIT_AC5Q_STOP_8822E BIT(5) +#define BIT_AC4Q_STOP_8822E BIT(4) +#define BIT_AC3Q_STOP_8822E BIT(3) +#define BIT_AC2Q_STOP_8822E BIT(2) +#define BIT_AC1Q_STOP_8822E BIT(1) +#define BIT_AC0Q_STOP_8822E BIT(0) + +/* 2 REG_NDPA_RATE_8822E */ + +#define BIT_SHIFT_R_NDPA_RATE_V1_8822E 0 +#define BIT_MASK_R_NDPA_RATE_V1_8822E 0xff +#define BIT_R_NDPA_RATE_V1_8822E(x) \ + (((x) & BIT_MASK_R_NDPA_RATE_V1_8822E) \ + << BIT_SHIFT_R_NDPA_RATE_V1_8822E) +#define BITS_R_NDPA_RATE_V1_8822E \ + (BIT_MASK_R_NDPA_RATE_V1_8822E << BIT_SHIFT_R_NDPA_RATE_V1_8822E) +#define BIT_CLEAR_R_NDPA_RATE_V1_8822E(x) ((x) & (~BITS_R_NDPA_RATE_V1_8822E)) +#define BIT_GET_R_NDPA_RATE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_R_NDPA_RATE_V1_8822E) & \ + BIT_MASK_R_NDPA_RATE_V1_8822E) +#define BIT_SET_R_NDPA_RATE_V1_8822E(x, v) \ + (BIT_CLEAR_R_NDPA_RATE_V1_8822E(x) | BIT_R_NDPA_RATE_V1_8822E(v)) + +/* 2 REG_TX_HANG_CTRL_8822E */ +#define BIT_EN_GNT_BT_AWAKE_8822E BIT(3) +#define BIT_EN_EOF_V1_8822E BIT(2) +#define BIT_DIS_OQT_BLOCK_8822E BIT(1) +#define BIT_SEARCH_QUEUE_EN_8822E BIT(0) + +/* 2 REG_NDPA_OPT_CTRL_8822E */ +#define BIT_R_DIS_MACID_RELEASE_RTY_8822E BIT(5) + +#define BIT_SHIFT_BW_SIGTA_8822E 3 +#define BIT_MASK_BW_SIGTA_8822E 0x3 +#define BIT_BW_SIGTA_8822E(x) \ + (((x) & BIT_MASK_BW_SIGTA_8822E) << BIT_SHIFT_BW_SIGTA_8822E) +#define BITS_BW_SIGTA_8822E \ + (BIT_MASK_BW_SIGTA_8822E << BIT_SHIFT_BW_SIGTA_8822E) +#define BIT_CLEAR_BW_SIGTA_8822E(x) ((x) & (~BITS_BW_SIGTA_8822E)) +#define BIT_GET_BW_SIGTA_8822E(x) \ + (((x) >> BIT_SHIFT_BW_SIGTA_8822E) & BIT_MASK_BW_SIGTA_8822E) +#define BIT_SET_BW_SIGTA_8822E(x, v) \ + (BIT_CLEAR_BW_SIGTA_8822E(x) | BIT_BW_SIGTA_8822E(v)) + +#define BIT_EN_BAR_SIGTA_8822E BIT(2) + +#define BIT_SHIFT_R_NDPA_BW_8822E 0 +#define BIT_MASK_R_NDPA_BW_8822E 0x3 +#define BIT_R_NDPA_BW_8822E(x) \ + (((x) & BIT_MASK_R_NDPA_BW_8822E) << BIT_SHIFT_R_NDPA_BW_8822E) +#define BITS_R_NDPA_BW_8822E \ + (BIT_MASK_R_NDPA_BW_8822E << BIT_SHIFT_R_NDPA_BW_8822E) +#define BIT_CLEAR_R_NDPA_BW_8822E(x) ((x) & (~BITS_R_NDPA_BW_8822E)) +#define BIT_GET_R_NDPA_BW_8822E(x) \ + (((x) >> BIT_SHIFT_R_NDPA_BW_8822E) & BIT_MASK_R_NDPA_BW_8822E) +#define BIT_SET_R_NDPA_BW_8822E(x, v) \ + (BIT_CLEAR_R_NDPA_BW_8822E(x) | BIT_R_NDPA_BW_8822E(v)) + +/* 2 REG_AMPDU_MAX_LENGTH_VHT_8822E */ + +#define BIT_SHIFT_AMPDU_MAX_LENGTH_VHT_V1_8822E 0 +#define BIT_MASK_AMPDU_MAX_LENGTH_VHT_V1_8822E 0xfffff +#define BIT_AMPDU_MAX_LENGTH_VHT_V1_8822E(x) \ + (((x) & BIT_MASK_AMPDU_MAX_LENGTH_VHT_V1_8822E) \ + << BIT_SHIFT_AMPDU_MAX_LENGTH_VHT_V1_8822E) +#define BITS_AMPDU_MAX_LENGTH_VHT_V1_8822E \ + (BIT_MASK_AMPDU_MAX_LENGTH_VHT_V1_8822E \ + << BIT_SHIFT_AMPDU_MAX_LENGTH_VHT_V1_8822E) +#define BIT_CLEAR_AMPDU_MAX_LENGTH_VHT_V1_8822E(x) \ + ((x) & (~BITS_AMPDU_MAX_LENGTH_VHT_V1_8822E)) +#define BIT_GET_AMPDU_MAX_LENGTH_VHT_V1_8822E(x) \ + (((x) >> BIT_SHIFT_AMPDU_MAX_LENGTH_VHT_V1_8822E) & \ + BIT_MASK_AMPDU_MAX_LENGTH_VHT_V1_8822E) +#define BIT_SET_AMPDU_MAX_LENGTH_VHT_V1_8822E(x, v) \ + (BIT_CLEAR_AMPDU_MAX_LENGTH_VHT_V1_8822E(x) | \ + BIT_AMPDU_MAX_LENGTH_VHT_V1_8822E(v)) + +/* 2 REG_RD_RESP_PKT_TH_8822E */ + +#define BIT_SHIFT_RD_RESP_PKT_TH_V1_8822E 0 +#define BIT_MASK_RD_RESP_PKT_TH_V1_8822E 0x3f +#define BIT_RD_RESP_PKT_TH_V1_8822E(x) \ + (((x) & BIT_MASK_RD_RESP_PKT_TH_V1_8822E) \ + << BIT_SHIFT_RD_RESP_PKT_TH_V1_8822E) +#define BITS_RD_RESP_PKT_TH_V1_8822E \ + (BIT_MASK_RD_RESP_PKT_TH_V1_8822E << BIT_SHIFT_RD_RESP_PKT_TH_V1_8822E) +#define BIT_CLEAR_RD_RESP_PKT_TH_V1_8822E(x) \ + ((x) & (~BITS_RD_RESP_PKT_TH_V1_8822E)) +#define BIT_GET_RD_RESP_PKT_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RD_RESP_PKT_TH_V1_8822E) & \ + BIT_MASK_RD_RESP_PKT_TH_V1_8822E) +#define BIT_SET_RD_RESP_PKT_TH_V1_8822E(x, v) \ + (BIT_CLEAR_RD_RESP_PKT_TH_V1_8822E(x) | BIT_RD_RESP_PKT_TH_V1_8822E(v)) + +/* 2 REG_CMDQ_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_CMDQ_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_CMDQ_V1_8822E 0x7f +#define BIT_QUEUEMACID_CMDQ_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_CMDQ_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_CMDQ_V1_8822E) +#define BITS_QUEUEMACID_CMDQ_V1_8822E \ + (BIT_MASK_QUEUEMACID_CMDQ_V1_8822E \ + << BIT_SHIFT_QUEUEMACID_CMDQ_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_CMDQ_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_CMDQ_V1_8822E)) +#define BIT_GET_QUEUEMACID_CMDQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_CMDQ_V1_8822E) & \ + BIT_MASK_QUEUEMACID_CMDQ_V1_8822E) +#define BIT_SET_QUEUEMACID_CMDQ_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_CMDQ_V1_8822E(x) | \ + BIT_QUEUEMACID_CMDQ_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_CMDQ_V1_8822E 23 +#define BIT_MASK_QUEUEAC_CMDQ_V1_8822E 0x3 +#define BIT_QUEUEAC_CMDQ_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_CMDQ_V1_8822E) \ + << BIT_SHIFT_QUEUEAC_CMDQ_V1_8822E) +#define BITS_QUEUEAC_CMDQ_V1_8822E \ + (BIT_MASK_QUEUEAC_CMDQ_V1_8822E << BIT_SHIFT_QUEUEAC_CMDQ_V1_8822E) +#define BIT_CLEAR_QUEUEAC_CMDQ_V1_8822E(x) ((x) & (~BITS_QUEUEAC_CMDQ_V1_8822E)) +#define BIT_GET_QUEUEAC_CMDQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_CMDQ_V1_8822E) & \ + BIT_MASK_QUEUEAC_CMDQ_V1_8822E) +#define BIT_SET_QUEUEAC_CMDQ_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_CMDQ_V1_8822E(x) | BIT_QUEUEAC_CMDQ_V1_8822E(v)) + +#define BIT_TIDEMPTY_CMDQ_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_Q4_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_Q4_V2_8822E 0x7ff +#define BIT_TAIL_PKT_Q4_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_Q4_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_Q4_V2_8822E) +#define BITS_TAIL_PKT_Q4_V2_8822E \ + (BIT_MASK_TAIL_PKT_Q4_V2_8822E << BIT_SHIFT_TAIL_PKT_Q4_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_Q4_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_Q4_V2_8822E)) +#define BIT_GET_TAIL_PKT_Q4_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_Q4_V2_8822E) & \ + BIT_MASK_TAIL_PKT_Q4_V2_8822E) +#define BIT_SET_TAIL_PKT_Q4_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_Q4_V2_8822E(x) | BIT_TAIL_PKT_Q4_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_CMDQ_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_CMDQ_V1_8822E 0x7ff +#define BIT_HEAD_PKT_CMDQ_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_CMDQ_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_CMDQ_V1_8822E) +#define BITS_HEAD_PKT_CMDQ_V1_8822E \ + (BIT_MASK_HEAD_PKT_CMDQ_V1_8822E << BIT_SHIFT_HEAD_PKT_CMDQ_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_CMDQ_V1_8822E(x) \ + ((x) & (~BITS_HEAD_PKT_CMDQ_V1_8822E)) +#define BIT_GET_HEAD_PKT_CMDQ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_CMDQ_V1_8822E) & \ + BIT_MASK_HEAD_PKT_CMDQ_V1_8822E) +#define BIT_SET_HEAD_PKT_CMDQ_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_CMDQ_V1_8822E(x) | BIT_HEAD_PKT_CMDQ_V1_8822E(v)) + +/* 2 REG_Q4_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_Q4_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_Q4_V1_8822E 0x7f +#define BIT_QUEUEMACID_Q4_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_Q4_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_Q4_V1_8822E) +#define BITS_QUEUEMACID_Q4_V1_8822E \ + (BIT_MASK_QUEUEMACID_Q4_V1_8822E << BIT_SHIFT_QUEUEMACID_Q4_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_Q4_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_Q4_V1_8822E)) +#define BIT_GET_QUEUEMACID_Q4_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_Q4_V1_8822E) & \ + BIT_MASK_QUEUEMACID_Q4_V1_8822E) +#define BIT_SET_QUEUEMACID_Q4_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_Q4_V1_8822E(x) | BIT_QUEUEMACID_Q4_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_Q4_V1_8822E 23 +#define BIT_MASK_QUEUEAC_Q4_V1_8822E 0x3 +#define BIT_QUEUEAC_Q4_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_Q4_V1_8822E) << BIT_SHIFT_QUEUEAC_Q4_V1_8822E) +#define BITS_QUEUEAC_Q4_V1_8822E \ + (BIT_MASK_QUEUEAC_Q4_V1_8822E << BIT_SHIFT_QUEUEAC_Q4_V1_8822E) +#define BIT_CLEAR_QUEUEAC_Q4_V1_8822E(x) ((x) & (~BITS_QUEUEAC_Q4_V1_8822E)) +#define BIT_GET_QUEUEAC_Q4_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_Q4_V1_8822E) & BIT_MASK_QUEUEAC_Q4_V1_8822E) +#define BIT_SET_QUEUEAC_Q4_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_Q4_V1_8822E(x) | BIT_QUEUEAC_Q4_V1_8822E(v)) + +#define BIT_TIDEMPTY_Q4_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_Q4_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_Q4_V2_8822E 0x7ff +#define BIT_TAIL_PKT_Q4_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_Q4_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_Q4_V2_8822E) +#define BITS_TAIL_PKT_Q4_V2_8822E \ + (BIT_MASK_TAIL_PKT_Q4_V2_8822E << BIT_SHIFT_TAIL_PKT_Q4_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_Q4_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_Q4_V2_8822E)) +#define BIT_GET_TAIL_PKT_Q4_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_Q4_V2_8822E) & \ + BIT_MASK_TAIL_PKT_Q4_V2_8822E) +#define BIT_SET_TAIL_PKT_Q4_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_Q4_V2_8822E(x) | BIT_TAIL_PKT_Q4_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_Q4_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_Q4_V1_8822E 0x7ff +#define BIT_HEAD_PKT_Q4_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_Q4_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_Q4_V1_8822E) +#define BITS_HEAD_PKT_Q4_V1_8822E \ + (BIT_MASK_HEAD_PKT_Q4_V1_8822E << BIT_SHIFT_HEAD_PKT_Q4_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_Q4_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_Q4_V1_8822E)) +#define BIT_GET_HEAD_PKT_Q4_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_Q4_V1_8822E) & \ + BIT_MASK_HEAD_PKT_Q4_V1_8822E) +#define BIT_SET_HEAD_PKT_Q4_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_Q4_V1_8822E(x) | BIT_HEAD_PKT_Q4_V1_8822E(v)) + +/* 2 REG_Q5_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_Q5_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_Q5_V1_8822E 0x7f +#define BIT_QUEUEMACID_Q5_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_Q5_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_Q5_V1_8822E) +#define BITS_QUEUEMACID_Q5_V1_8822E \ + (BIT_MASK_QUEUEMACID_Q5_V1_8822E << BIT_SHIFT_QUEUEMACID_Q5_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_Q5_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_Q5_V1_8822E)) +#define BIT_GET_QUEUEMACID_Q5_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_Q5_V1_8822E) & \ + BIT_MASK_QUEUEMACID_Q5_V1_8822E) +#define BIT_SET_QUEUEMACID_Q5_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_Q5_V1_8822E(x) | BIT_QUEUEMACID_Q5_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_Q5_V1_8822E 23 +#define BIT_MASK_QUEUEAC_Q5_V1_8822E 0x3 +#define BIT_QUEUEAC_Q5_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_Q5_V1_8822E) << BIT_SHIFT_QUEUEAC_Q5_V1_8822E) +#define BITS_QUEUEAC_Q5_V1_8822E \ + (BIT_MASK_QUEUEAC_Q5_V1_8822E << BIT_SHIFT_QUEUEAC_Q5_V1_8822E) +#define BIT_CLEAR_QUEUEAC_Q5_V1_8822E(x) ((x) & (~BITS_QUEUEAC_Q5_V1_8822E)) +#define BIT_GET_QUEUEAC_Q5_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_Q5_V1_8822E) & BIT_MASK_QUEUEAC_Q5_V1_8822E) +#define BIT_SET_QUEUEAC_Q5_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_Q5_V1_8822E(x) | BIT_QUEUEAC_Q5_V1_8822E(v)) + +#define BIT_TIDEMPTY_Q5_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_Q5_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_Q5_V2_8822E 0x7ff +#define BIT_TAIL_PKT_Q5_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_Q5_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_Q5_V2_8822E) +#define BITS_TAIL_PKT_Q5_V2_8822E \ + (BIT_MASK_TAIL_PKT_Q5_V2_8822E << BIT_SHIFT_TAIL_PKT_Q5_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_Q5_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_Q5_V2_8822E)) +#define BIT_GET_TAIL_PKT_Q5_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_Q5_V2_8822E) & \ + BIT_MASK_TAIL_PKT_Q5_V2_8822E) +#define BIT_SET_TAIL_PKT_Q5_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_Q5_V2_8822E(x) | BIT_TAIL_PKT_Q5_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_Q5_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_Q5_V1_8822E 0x7ff +#define BIT_HEAD_PKT_Q5_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_Q5_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_Q5_V1_8822E) +#define BITS_HEAD_PKT_Q5_V1_8822E \ + (BIT_MASK_HEAD_PKT_Q5_V1_8822E << BIT_SHIFT_HEAD_PKT_Q5_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_Q5_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_Q5_V1_8822E)) +#define BIT_GET_HEAD_PKT_Q5_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_Q5_V1_8822E) & \ + BIT_MASK_HEAD_PKT_Q5_V1_8822E) +#define BIT_SET_HEAD_PKT_Q5_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_Q5_V1_8822E(x) | BIT_HEAD_PKT_Q5_V1_8822E(v)) + +/* 2 REG_Q6_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_Q6_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_Q6_V1_8822E 0x7f +#define BIT_QUEUEMACID_Q6_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_Q6_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_Q6_V1_8822E) +#define BITS_QUEUEMACID_Q6_V1_8822E \ + (BIT_MASK_QUEUEMACID_Q6_V1_8822E << BIT_SHIFT_QUEUEMACID_Q6_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_Q6_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_Q6_V1_8822E)) +#define BIT_GET_QUEUEMACID_Q6_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_Q6_V1_8822E) & \ + BIT_MASK_QUEUEMACID_Q6_V1_8822E) +#define BIT_SET_QUEUEMACID_Q6_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_Q6_V1_8822E(x) | BIT_QUEUEMACID_Q6_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_Q6_V1_8822E 23 +#define BIT_MASK_QUEUEAC_Q6_V1_8822E 0x3 +#define BIT_QUEUEAC_Q6_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_Q6_V1_8822E) << BIT_SHIFT_QUEUEAC_Q6_V1_8822E) +#define BITS_QUEUEAC_Q6_V1_8822E \ + (BIT_MASK_QUEUEAC_Q6_V1_8822E << BIT_SHIFT_QUEUEAC_Q6_V1_8822E) +#define BIT_CLEAR_QUEUEAC_Q6_V1_8822E(x) ((x) & (~BITS_QUEUEAC_Q6_V1_8822E)) +#define BIT_GET_QUEUEAC_Q6_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_Q6_V1_8822E) & BIT_MASK_QUEUEAC_Q6_V1_8822E) +#define BIT_SET_QUEUEAC_Q6_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_Q6_V1_8822E(x) | BIT_QUEUEAC_Q6_V1_8822E(v)) + +#define BIT_TIDEMPTY_Q6_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_Q6_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_Q6_V2_8822E 0x7ff +#define BIT_TAIL_PKT_Q6_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_Q6_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_Q6_V2_8822E) +#define BITS_TAIL_PKT_Q6_V2_8822E \ + (BIT_MASK_TAIL_PKT_Q6_V2_8822E << BIT_SHIFT_TAIL_PKT_Q6_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_Q6_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_Q6_V2_8822E)) +#define BIT_GET_TAIL_PKT_Q6_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_Q6_V2_8822E) & \ + BIT_MASK_TAIL_PKT_Q6_V2_8822E) +#define BIT_SET_TAIL_PKT_Q6_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_Q6_V2_8822E(x) | BIT_TAIL_PKT_Q6_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_Q6_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_Q6_V1_8822E 0x7ff +#define BIT_HEAD_PKT_Q6_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_Q6_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_Q6_V1_8822E) +#define BITS_HEAD_PKT_Q6_V1_8822E \ + (BIT_MASK_HEAD_PKT_Q6_V1_8822E << BIT_SHIFT_HEAD_PKT_Q6_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_Q6_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_Q6_V1_8822E)) +#define BIT_GET_HEAD_PKT_Q6_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_Q6_V1_8822E) & \ + BIT_MASK_HEAD_PKT_Q6_V1_8822E) +#define BIT_SET_HEAD_PKT_Q6_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_Q6_V1_8822E(x) | BIT_HEAD_PKT_Q6_V1_8822E(v)) + +/* 2 REG_Q7_INFO_8822E */ + +#define BIT_SHIFT_QUEUEMACID_Q7_V1_8822E 25 +#define BIT_MASK_QUEUEMACID_Q7_V1_8822E 0x7f +#define BIT_QUEUEMACID_Q7_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEMACID_Q7_V1_8822E) \ + << BIT_SHIFT_QUEUEMACID_Q7_V1_8822E) +#define BITS_QUEUEMACID_Q7_V1_8822E \ + (BIT_MASK_QUEUEMACID_Q7_V1_8822E << BIT_SHIFT_QUEUEMACID_Q7_V1_8822E) +#define BIT_CLEAR_QUEUEMACID_Q7_V1_8822E(x) \ + ((x) & (~BITS_QUEUEMACID_Q7_V1_8822E)) +#define BIT_GET_QUEUEMACID_Q7_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEMACID_Q7_V1_8822E) & \ + BIT_MASK_QUEUEMACID_Q7_V1_8822E) +#define BIT_SET_QUEUEMACID_Q7_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEMACID_Q7_V1_8822E(x) | BIT_QUEUEMACID_Q7_V1_8822E(v)) + +#define BIT_SHIFT_QUEUEAC_Q7_V1_8822E 23 +#define BIT_MASK_QUEUEAC_Q7_V1_8822E 0x3 +#define BIT_QUEUEAC_Q7_V1_8822E(x) \ + (((x) & BIT_MASK_QUEUEAC_Q7_V1_8822E) << BIT_SHIFT_QUEUEAC_Q7_V1_8822E) +#define BITS_QUEUEAC_Q7_V1_8822E \ + (BIT_MASK_QUEUEAC_Q7_V1_8822E << BIT_SHIFT_QUEUEAC_Q7_V1_8822E) +#define BIT_CLEAR_QUEUEAC_Q7_V1_8822E(x) ((x) & (~BITS_QUEUEAC_Q7_V1_8822E)) +#define BIT_GET_QUEUEAC_Q7_V1_8822E(x) \ + (((x) >> BIT_SHIFT_QUEUEAC_Q7_V1_8822E) & BIT_MASK_QUEUEAC_Q7_V1_8822E) +#define BIT_SET_QUEUEAC_Q7_V1_8822E(x, v) \ + (BIT_CLEAR_QUEUEAC_Q7_V1_8822E(x) | BIT_QUEUEAC_Q7_V1_8822E(v)) + +#define BIT_TIDEMPTY_Q7_V1_8822E BIT(22) + +#define BIT_SHIFT_TAIL_PKT_Q7_V2_8822E 11 +#define BIT_MASK_TAIL_PKT_Q7_V2_8822E 0x7ff +#define BIT_TAIL_PKT_Q7_V2_8822E(x) \ + (((x) & BIT_MASK_TAIL_PKT_Q7_V2_8822E) \ + << BIT_SHIFT_TAIL_PKT_Q7_V2_8822E) +#define BITS_TAIL_PKT_Q7_V2_8822E \ + (BIT_MASK_TAIL_PKT_Q7_V2_8822E << BIT_SHIFT_TAIL_PKT_Q7_V2_8822E) +#define BIT_CLEAR_TAIL_PKT_Q7_V2_8822E(x) ((x) & (~BITS_TAIL_PKT_Q7_V2_8822E)) +#define BIT_GET_TAIL_PKT_Q7_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TAIL_PKT_Q7_V2_8822E) & \ + BIT_MASK_TAIL_PKT_Q7_V2_8822E) +#define BIT_SET_TAIL_PKT_Q7_V2_8822E(x, v) \ + (BIT_CLEAR_TAIL_PKT_Q7_V2_8822E(x) | BIT_TAIL_PKT_Q7_V2_8822E(v)) + +#define BIT_SHIFT_HEAD_PKT_Q7_V1_8822E 0 +#define BIT_MASK_HEAD_PKT_Q7_V1_8822E 0x7ff +#define BIT_HEAD_PKT_Q7_V1_8822E(x) \ + (((x) & BIT_MASK_HEAD_PKT_Q7_V1_8822E) \ + << BIT_SHIFT_HEAD_PKT_Q7_V1_8822E) +#define BITS_HEAD_PKT_Q7_V1_8822E \ + (BIT_MASK_HEAD_PKT_Q7_V1_8822E << BIT_SHIFT_HEAD_PKT_Q7_V1_8822E) +#define BIT_CLEAR_HEAD_PKT_Q7_V1_8822E(x) ((x) & (~BITS_HEAD_PKT_Q7_V1_8822E)) +#define BIT_GET_HEAD_PKT_Q7_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HEAD_PKT_Q7_V1_8822E) & \ + BIT_MASK_HEAD_PKT_Q7_V1_8822E) +#define BIT_SET_HEAD_PKT_Q7_V1_8822E(x, v) \ + (BIT_CLEAR_HEAD_PKT_Q7_V1_8822E(x) | BIT_HEAD_PKT_Q7_V1_8822E(v)) + +/* 2 REG_WMAC_LBK_BUF_HD_V1_8822E */ + +#define BIT_SHIFT_WMAC_LBK_BUF_HEAD_V1_8822E 0 +#define BIT_MASK_WMAC_LBK_BUF_HEAD_V1_8822E 0xfff +#define BIT_WMAC_LBK_BUF_HEAD_V1_8822E(x) \ + (((x) & BIT_MASK_WMAC_LBK_BUF_HEAD_V1_8822E) \ + << BIT_SHIFT_WMAC_LBK_BUF_HEAD_V1_8822E) +#define BITS_WMAC_LBK_BUF_HEAD_V1_8822E \ + (BIT_MASK_WMAC_LBK_BUF_HEAD_V1_8822E \ + << BIT_SHIFT_WMAC_LBK_BUF_HEAD_V1_8822E) +#define BIT_CLEAR_WMAC_LBK_BUF_HEAD_V1_8822E(x) \ + ((x) & (~BITS_WMAC_LBK_BUF_HEAD_V1_8822E)) +#define BIT_GET_WMAC_LBK_BUF_HEAD_V1_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_LBK_BUF_HEAD_V1_8822E) & \ + BIT_MASK_WMAC_LBK_BUF_HEAD_V1_8822E) +#define BIT_SET_WMAC_LBK_BUF_HEAD_V1_8822E(x, v) \ + (BIT_CLEAR_WMAC_LBK_BUF_HEAD_V1_8822E(x) | \ + BIT_WMAC_LBK_BUF_HEAD_V1_8822E(v)) + +/* 2 REG_MGQ_BDNY_V1_8822E */ + +#define BIT_SHIFT_MGQ_PGBNDY_V1_8822E 0 +#define BIT_MASK_MGQ_PGBNDY_V1_8822E 0xfff +#define BIT_MGQ_PGBNDY_V1_8822E(x) \ + (((x) & BIT_MASK_MGQ_PGBNDY_V1_8822E) << BIT_SHIFT_MGQ_PGBNDY_V1_8822E) +#define BITS_MGQ_PGBNDY_V1_8822E \ + (BIT_MASK_MGQ_PGBNDY_V1_8822E << BIT_SHIFT_MGQ_PGBNDY_V1_8822E) +#define BIT_CLEAR_MGQ_PGBNDY_V1_8822E(x) ((x) & (~BITS_MGQ_PGBNDY_V1_8822E)) +#define BIT_GET_MGQ_PGBNDY_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_PGBNDY_V1_8822E) & BIT_MASK_MGQ_PGBNDY_V1_8822E) +#define BIT_SET_MGQ_PGBNDY_V1_8822E(x, v) \ + (BIT_CLEAR_MGQ_PGBNDY_V1_8822E(x) | BIT_MGQ_PGBNDY_V1_8822E(v)) + +/* 2 REG_TXRPT_CTRL_8822E */ + +#define BIT_SHIFT_TRXRPT_TIMER_TH_8822E 24 +#define BIT_MASK_TRXRPT_TIMER_TH_8822E 0xff +#define BIT_TRXRPT_TIMER_TH_8822E(x) \ + (((x) & BIT_MASK_TRXRPT_TIMER_TH_8822E) \ + << BIT_SHIFT_TRXRPT_TIMER_TH_8822E) +#define BITS_TRXRPT_TIMER_TH_8822E \ + (BIT_MASK_TRXRPT_TIMER_TH_8822E << BIT_SHIFT_TRXRPT_TIMER_TH_8822E) +#define BIT_CLEAR_TRXRPT_TIMER_TH_8822E(x) ((x) & (~BITS_TRXRPT_TIMER_TH_8822E)) +#define BIT_GET_TRXRPT_TIMER_TH_8822E(x) \ + (((x) >> BIT_SHIFT_TRXRPT_TIMER_TH_8822E) & \ + BIT_MASK_TRXRPT_TIMER_TH_8822E) +#define BIT_SET_TRXRPT_TIMER_TH_8822E(x, v) \ + (BIT_CLEAR_TRXRPT_TIMER_TH_8822E(x) | BIT_TRXRPT_TIMER_TH_8822E(v)) + +#define BIT_SHIFT_TRXRPT_LEN_TH_8822E 16 +#define BIT_MASK_TRXRPT_LEN_TH_8822E 0xff +#define BIT_TRXRPT_LEN_TH_8822E(x) \ + (((x) & BIT_MASK_TRXRPT_LEN_TH_8822E) << BIT_SHIFT_TRXRPT_LEN_TH_8822E) +#define BITS_TRXRPT_LEN_TH_8822E \ + (BIT_MASK_TRXRPT_LEN_TH_8822E << BIT_SHIFT_TRXRPT_LEN_TH_8822E) +#define BIT_CLEAR_TRXRPT_LEN_TH_8822E(x) ((x) & (~BITS_TRXRPT_LEN_TH_8822E)) +#define BIT_GET_TRXRPT_LEN_TH_8822E(x) \ + (((x) >> BIT_SHIFT_TRXRPT_LEN_TH_8822E) & BIT_MASK_TRXRPT_LEN_TH_8822E) +#define BIT_SET_TRXRPT_LEN_TH_8822E(x, v) \ + (BIT_CLEAR_TRXRPT_LEN_TH_8822E(x) | BIT_TRXRPT_LEN_TH_8822E(v)) + +#define BIT_SHIFT_TRXRPT_READ_PTR_8822E 8 +#define BIT_MASK_TRXRPT_READ_PTR_8822E 0xff +#define BIT_TRXRPT_READ_PTR_8822E(x) \ + (((x) & BIT_MASK_TRXRPT_READ_PTR_8822E) \ + << BIT_SHIFT_TRXRPT_READ_PTR_8822E) +#define BITS_TRXRPT_READ_PTR_8822E \ + (BIT_MASK_TRXRPT_READ_PTR_8822E << BIT_SHIFT_TRXRPT_READ_PTR_8822E) +#define BIT_CLEAR_TRXRPT_READ_PTR_8822E(x) ((x) & (~BITS_TRXRPT_READ_PTR_8822E)) +#define BIT_GET_TRXRPT_READ_PTR_8822E(x) \ + (((x) >> BIT_SHIFT_TRXRPT_READ_PTR_8822E) & \ + BIT_MASK_TRXRPT_READ_PTR_8822E) +#define BIT_SET_TRXRPT_READ_PTR_8822E(x, v) \ + (BIT_CLEAR_TRXRPT_READ_PTR_8822E(x) | BIT_TRXRPT_READ_PTR_8822E(v)) + +#define BIT_SHIFT_TRXRPT_WRITE_PTR_8822E 0 +#define BIT_MASK_TRXRPT_WRITE_PTR_8822E 0xff +#define BIT_TRXRPT_WRITE_PTR_8822E(x) \ + (((x) & BIT_MASK_TRXRPT_WRITE_PTR_8822E) \ + << BIT_SHIFT_TRXRPT_WRITE_PTR_8822E) +#define BITS_TRXRPT_WRITE_PTR_8822E \ + (BIT_MASK_TRXRPT_WRITE_PTR_8822E << BIT_SHIFT_TRXRPT_WRITE_PTR_8822E) +#define BIT_CLEAR_TRXRPT_WRITE_PTR_8822E(x) \ + ((x) & (~BITS_TRXRPT_WRITE_PTR_8822E)) +#define BIT_GET_TRXRPT_WRITE_PTR_8822E(x) \ + (((x) >> BIT_SHIFT_TRXRPT_WRITE_PTR_8822E) & \ + BIT_MASK_TRXRPT_WRITE_PTR_8822E) +#define BIT_SET_TRXRPT_WRITE_PTR_8822E(x, v) \ + (BIT_CLEAR_TRXRPT_WRITE_PTR_8822E(x) | BIT_TRXRPT_WRITE_PTR_8822E(v)) + +/* 2 REG_INIRTS_RATE_SEL_8822E */ +#define BIT_LEAG_RTS_BW_DUP_8822E BIT(5) + +/* 2 REG_BASIC_CFEND_RATE_8822E */ + +#define BIT_SHIFT_BASIC_CFEND_RATE_8822E 0 +#define BIT_MASK_BASIC_CFEND_RATE_8822E 0x1f +#define BIT_BASIC_CFEND_RATE_8822E(x) \ + (((x) & BIT_MASK_BASIC_CFEND_RATE_8822E) \ + << BIT_SHIFT_BASIC_CFEND_RATE_8822E) +#define BITS_BASIC_CFEND_RATE_8822E \ + (BIT_MASK_BASIC_CFEND_RATE_8822E << BIT_SHIFT_BASIC_CFEND_RATE_8822E) +#define BIT_CLEAR_BASIC_CFEND_RATE_8822E(x) \ + ((x) & (~BITS_BASIC_CFEND_RATE_8822E)) +#define BIT_GET_BASIC_CFEND_RATE_8822E(x) \ + (((x) >> BIT_SHIFT_BASIC_CFEND_RATE_8822E) & \ + BIT_MASK_BASIC_CFEND_RATE_8822E) +#define BIT_SET_BASIC_CFEND_RATE_8822E(x, v) \ + (BIT_CLEAR_BASIC_CFEND_RATE_8822E(x) | BIT_BASIC_CFEND_RATE_8822E(v)) + +/* 2 REG_STBC_CFEND_RATE_8822E */ + +#define BIT_SHIFT_STBC_CFEND_RATE_8822E 0 +#define BIT_MASK_STBC_CFEND_RATE_8822E 0x1f +#define BIT_STBC_CFEND_RATE_8822E(x) \ + (((x) & BIT_MASK_STBC_CFEND_RATE_8822E) \ + << BIT_SHIFT_STBC_CFEND_RATE_8822E) +#define BITS_STBC_CFEND_RATE_8822E \ + (BIT_MASK_STBC_CFEND_RATE_8822E << BIT_SHIFT_STBC_CFEND_RATE_8822E) +#define BIT_CLEAR_STBC_CFEND_RATE_8822E(x) ((x) & (~BITS_STBC_CFEND_RATE_8822E)) +#define BIT_GET_STBC_CFEND_RATE_8822E(x) \ + (((x) >> BIT_SHIFT_STBC_CFEND_RATE_8822E) & \ + BIT_MASK_STBC_CFEND_RATE_8822E) +#define BIT_SET_STBC_CFEND_RATE_8822E(x, v) \ + (BIT_CLEAR_STBC_CFEND_RATE_8822E(x) | BIT_STBC_CFEND_RATE_8822E(v)) + +/* 2 REG_DATA_SC_8822E */ + +#define BIT_SHIFT_TXSC_40M_8822E 4 +#define BIT_MASK_TXSC_40M_8822E 0xf +#define BIT_TXSC_40M_8822E(x) \ + (((x) & BIT_MASK_TXSC_40M_8822E) << BIT_SHIFT_TXSC_40M_8822E) +#define BITS_TXSC_40M_8822E \ + (BIT_MASK_TXSC_40M_8822E << BIT_SHIFT_TXSC_40M_8822E) +#define BIT_CLEAR_TXSC_40M_8822E(x) ((x) & (~BITS_TXSC_40M_8822E)) +#define BIT_GET_TXSC_40M_8822E(x) \ + (((x) >> BIT_SHIFT_TXSC_40M_8822E) & BIT_MASK_TXSC_40M_8822E) +#define BIT_SET_TXSC_40M_8822E(x, v) \ + (BIT_CLEAR_TXSC_40M_8822E(x) | BIT_TXSC_40M_8822E(v)) + +#define BIT_SHIFT_TXSC_20M_8822E 0 +#define BIT_MASK_TXSC_20M_8822E 0xf +#define BIT_TXSC_20M_8822E(x) \ + (((x) & BIT_MASK_TXSC_20M_8822E) << BIT_SHIFT_TXSC_20M_8822E) +#define BITS_TXSC_20M_8822E \ + (BIT_MASK_TXSC_20M_8822E << BIT_SHIFT_TXSC_20M_8822E) +#define BIT_CLEAR_TXSC_20M_8822E(x) ((x) & (~BITS_TXSC_20M_8822E)) +#define BIT_GET_TXSC_20M_8822E(x) \ + (((x) >> BIT_SHIFT_TXSC_20M_8822E) & BIT_MASK_TXSC_20M_8822E) +#define BIT_SET_TXSC_20M_8822E(x, v) \ + (BIT_CLEAR_TXSC_20M_8822E(x) | BIT_TXSC_20M_8822E(v)) + +/* 2 REG_MACID_SLEEP3_8822E */ + +#define BIT_SHIFT_MACID127_96_PKTSLEEP_8822E 0 +#define BIT_MASK_MACID127_96_PKTSLEEP_8822E 0xffffffffL +#define BIT_MACID127_96_PKTSLEEP_8822E(x) \ + (((x) & BIT_MASK_MACID127_96_PKTSLEEP_8822E) \ + << BIT_SHIFT_MACID127_96_PKTSLEEP_8822E) +#define BITS_MACID127_96_PKTSLEEP_8822E \ + (BIT_MASK_MACID127_96_PKTSLEEP_8822E \ + << BIT_SHIFT_MACID127_96_PKTSLEEP_8822E) +#define BIT_CLEAR_MACID127_96_PKTSLEEP_8822E(x) \ + ((x) & (~BITS_MACID127_96_PKTSLEEP_8822E)) +#define BIT_GET_MACID127_96_PKTSLEEP_8822E(x) \ + (((x) >> BIT_SHIFT_MACID127_96_PKTSLEEP_8822E) & \ + BIT_MASK_MACID127_96_PKTSLEEP_8822E) +#define BIT_SET_MACID127_96_PKTSLEEP_8822E(x, v) \ + (BIT_CLEAR_MACID127_96_PKTSLEEP_8822E(x) | \ + BIT_MACID127_96_PKTSLEEP_8822E(v)) + +/* 2 REG_MACID_SLEEP1_8822E */ + +#define BIT_SHIFT_MACID63_32_PKTSLEEP_8822E 0 +#define BIT_MASK_MACID63_32_PKTSLEEP_8822E 0xffffffffL +#define BIT_MACID63_32_PKTSLEEP_8822E(x) \ + (((x) & BIT_MASK_MACID63_32_PKTSLEEP_8822E) \ + << BIT_SHIFT_MACID63_32_PKTSLEEP_8822E) +#define BITS_MACID63_32_PKTSLEEP_8822E \ + (BIT_MASK_MACID63_32_PKTSLEEP_8822E \ + << BIT_SHIFT_MACID63_32_PKTSLEEP_8822E) +#define BIT_CLEAR_MACID63_32_PKTSLEEP_8822E(x) \ + ((x) & (~BITS_MACID63_32_PKTSLEEP_8822E)) +#define BIT_GET_MACID63_32_PKTSLEEP_8822E(x) \ + (((x) >> BIT_SHIFT_MACID63_32_PKTSLEEP_8822E) & \ + BIT_MASK_MACID63_32_PKTSLEEP_8822E) +#define BIT_SET_MACID63_32_PKTSLEEP_8822E(x, v) \ + (BIT_CLEAR_MACID63_32_PKTSLEEP_8822E(x) | \ + BIT_MACID63_32_PKTSLEEP_8822E(v)) + +/* 2 REG_ARFR2_V1_8822E */ + +#define BIT_SHIFT_ARFRL2_8822E 0 +#define BIT_MASK_ARFRL2_8822E 0xffffffffL +#define BIT_ARFRL2_8822E(x) \ + (((x) & BIT_MASK_ARFRL2_8822E) << BIT_SHIFT_ARFRL2_8822E) +#define BITS_ARFRL2_8822E (BIT_MASK_ARFRL2_8822E << BIT_SHIFT_ARFRL2_8822E) +#define BIT_CLEAR_ARFRL2_8822E(x) ((x) & (~BITS_ARFRL2_8822E)) +#define BIT_GET_ARFRL2_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRL2_8822E) & BIT_MASK_ARFRL2_8822E) +#define BIT_SET_ARFRL2_8822E(x, v) \ + (BIT_CLEAR_ARFRL2_8822E(x) | BIT_ARFRL2_8822E(v)) + +/* 2 REG_ARFRH2_V1_8822E */ + +#define BIT_SHIFT_ARFRH2_8822E 0 +#define BIT_MASK_ARFRH2_8822E 0xffffffffL +#define BIT_ARFRH2_8822E(x) \ + (((x) & BIT_MASK_ARFRH2_8822E) << BIT_SHIFT_ARFRH2_8822E) +#define BITS_ARFRH2_8822E (BIT_MASK_ARFRH2_8822E << BIT_SHIFT_ARFRH2_8822E) +#define BIT_CLEAR_ARFRH2_8822E(x) ((x) & (~BITS_ARFRH2_8822E)) +#define BIT_GET_ARFRH2_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRH2_8822E) & BIT_MASK_ARFRH2_8822E) +#define BIT_SET_ARFRH2_8822E(x, v) \ + (BIT_CLEAR_ARFRH2_8822E(x) | BIT_ARFRH2_8822E(v)) + +/* 2 REG_ARFR3_V1_8822E */ + +#define BIT_SHIFT_ARFRL3_8822E 0 +#define BIT_MASK_ARFRL3_8822E 0xffffffffL +#define BIT_ARFRL3_8822E(x) \ + (((x) & BIT_MASK_ARFRL3_8822E) << BIT_SHIFT_ARFRL3_8822E) +#define BITS_ARFRL3_8822E (BIT_MASK_ARFRL3_8822E << BIT_SHIFT_ARFRL3_8822E) +#define BIT_CLEAR_ARFRL3_8822E(x) ((x) & (~BITS_ARFRL3_8822E)) +#define BIT_GET_ARFRL3_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRL3_8822E) & BIT_MASK_ARFRL3_8822E) +#define BIT_SET_ARFRL3_8822E(x, v) \ + (BIT_CLEAR_ARFRL3_8822E(x) | BIT_ARFRL3_8822E(v)) + +/* 2 REG_ARFRH3_V1_8822E */ + +#define BIT_SHIFT_ARFRH3_8822E 0 +#define BIT_MASK_ARFRH3_8822E 0xffffffffL +#define BIT_ARFRH3_8822E(x) \ + (((x) & BIT_MASK_ARFRH3_8822E) << BIT_SHIFT_ARFRH3_8822E) +#define BITS_ARFRH3_8822E (BIT_MASK_ARFRH3_8822E << BIT_SHIFT_ARFRH3_8822E) +#define BIT_CLEAR_ARFRH3_8822E(x) ((x) & (~BITS_ARFRH3_8822E)) +#define BIT_GET_ARFRH3_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRH3_8822E) & BIT_MASK_ARFRH3_8822E) +#define BIT_SET_ARFRH3_8822E(x, v) \ + (BIT_CLEAR_ARFRH3_8822E(x) | BIT_ARFRH3_8822E(v)) + +/* 2 REG_ARFR4_8822E */ + +#define BIT_SHIFT_ARFRL4_8822E 0 +#define BIT_MASK_ARFRL4_8822E 0xffffffffL +#define BIT_ARFRL4_8822E(x) \ + (((x) & BIT_MASK_ARFRL4_8822E) << BIT_SHIFT_ARFRL4_8822E) +#define BITS_ARFRL4_8822E (BIT_MASK_ARFRL4_8822E << BIT_SHIFT_ARFRL4_8822E) +#define BIT_CLEAR_ARFRL4_8822E(x) ((x) & (~BITS_ARFRL4_8822E)) +#define BIT_GET_ARFRL4_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRL4_8822E) & BIT_MASK_ARFRL4_8822E) +#define BIT_SET_ARFRL4_8822E(x, v) \ + (BIT_CLEAR_ARFRL4_8822E(x) | BIT_ARFRL4_8822E(v)) + +/* 2 REG_ARFRH4_8822E */ + +#define BIT_SHIFT_ARFRH4_8822E 0 +#define BIT_MASK_ARFRH4_8822E 0xffffffffL +#define BIT_ARFRH4_8822E(x) \ + (((x) & BIT_MASK_ARFRH4_8822E) << BIT_SHIFT_ARFRH4_8822E) +#define BITS_ARFRH4_8822E (BIT_MASK_ARFRH4_8822E << BIT_SHIFT_ARFRH4_8822E) +#define BIT_CLEAR_ARFRH4_8822E(x) ((x) & (~BITS_ARFRH4_8822E)) +#define BIT_GET_ARFRH4_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRH4_8822E) & BIT_MASK_ARFRH4_8822E) +#define BIT_SET_ARFRH4_8822E(x, v) \ + (BIT_CLEAR_ARFRH4_8822E(x) | BIT_ARFRH4_8822E(v)) + +/* 2 REG_ARFR5_8822E */ + +#define BIT_SHIFT_ARFRL5_8822E 0 +#define BIT_MASK_ARFRL5_8822E 0xffffffffL +#define BIT_ARFRL5_8822E(x) \ + (((x) & BIT_MASK_ARFRL5_8822E) << BIT_SHIFT_ARFRL5_8822E) +#define BITS_ARFRL5_8822E (BIT_MASK_ARFRL5_8822E << BIT_SHIFT_ARFRL5_8822E) +#define BIT_CLEAR_ARFRL5_8822E(x) ((x) & (~BITS_ARFRL5_8822E)) +#define BIT_GET_ARFRL5_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRL5_8822E) & BIT_MASK_ARFRL5_8822E) +#define BIT_SET_ARFRL5_8822E(x, v) \ + (BIT_CLEAR_ARFRL5_8822E(x) | BIT_ARFRL5_8822E(v)) + +/* 2 REG_ARFRH5_8822E */ + +#define BIT_SHIFT_ARFRH5_8822E 0 +#define BIT_MASK_ARFRH5_8822E 0xffffffffL +#define BIT_ARFRH5_8822E(x) \ + (((x) & BIT_MASK_ARFRH5_8822E) << BIT_SHIFT_ARFRH5_8822E) +#define BITS_ARFRH5_8822E (BIT_MASK_ARFRH5_8822E << BIT_SHIFT_ARFRH5_8822E) +#define BIT_CLEAR_ARFRH5_8822E(x) ((x) & (~BITS_ARFRH5_8822E)) +#define BIT_GET_ARFRH5_8822E(x) \ + (((x) >> BIT_SHIFT_ARFRH5_8822E) & BIT_MASK_ARFRH5_8822E) +#define BIT_SET_ARFRH5_8822E(x, v) \ + (BIT_CLEAR_ARFRH5_8822E(x) | BIT_ARFRH5_8822E(v)) + +/* 2 REG_TXRPT_START_OFFSET_8822E */ + +#define BIT_SHIFT_MACID_MURATE_OFFSET_8822E 24 +#define BIT_MASK_MACID_MURATE_OFFSET_8822E 0xff +#define BIT_MACID_MURATE_OFFSET_8822E(x) \ + (((x) & BIT_MASK_MACID_MURATE_OFFSET_8822E) \ + << BIT_SHIFT_MACID_MURATE_OFFSET_8822E) +#define BITS_MACID_MURATE_OFFSET_8822E \ + (BIT_MASK_MACID_MURATE_OFFSET_8822E \ + << BIT_SHIFT_MACID_MURATE_OFFSET_8822E) +#define BIT_CLEAR_MACID_MURATE_OFFSET_8822E(x) \ + ((x) & (~BITS_MACID_MURATE_OFFSET_8822E)) +#define BIT_GET_MACID_MURATE_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_MACID_MURATE_OFFSET_8822E) & \ + BIT_MASK_MACID_MURATE_OFFSET_8822E) +#define BIT_SET_MACID_MURATE_OFFSET_8822E(x, v) \ + (BIT_CLEAR_MACID_MURATE_OFFSET_8822E(x) | \ + BIT_MACID_MURATE_OFFSET_8822E(v)) + +#define BIT_SHIFT_TXRPT_MISS_COUNT_8822E 17 +#define BIT_MASK_TXRPT_MISS_COUNT_8822E 0x7 +#define BIT_TXRPT_MISS_COUNT_8822E(x) \ + (((x) & BIT_MASK_TXRPT_MISS_COUNT_8822E) \ + << BIT_SHIFT_TXRPT_MISS_COUNT_8822E) +#define BITS_TXRPT_MISS_COUNT_8822E \ + (BIT_MASK_TXRPT_MISS_COUNT_8822E << BIT_SHIFT_TXRPT_MISS_COUNT_8822E) +#define BIT_CLEAR_TXRPT_MISS_COUNT_8822E(x) \ + ((x) & (~BITS_TXRPT_MISS_COUNT_8822E)) +#define BIT_GET_TXRPT_MISS_COUNT_8822E(x) \ + (((x) >> BIT_SHIFT_TXRPT_MISS_COUNT_8822E) & \ + BIT_MASK_TXRPT_MISS_COUNT_8822E) +#define BIT_SET_TXRPT_MISS_COUNT_8822E(x, v) \ + (BIT_CLEAR_TXRPT_MISS_COUNT_8822E(x) | BIT_TXRPT_MISS_COUNT_8822E(v)) + +#define BIT_RPTFIFO_SIZE_OPT_8822E BIT(16) + +#define BIT_SHIFT_MACID_CTRL_OFFSET_8822E 8 +#define BIT_MASK_MACID_CTRL_OFFSET_8822E 0xff +#define BIT_MACID_CTRL_OFFSET_8822E(x) \ + (((x) & BIT_MASK_MACID_CTRL_OFFSET_8822E) \ + << BIT_SHIFT_MACID_CTRL_OFFSET_8822E) +#define BITS_MACID_CTRL_OFFSET_8822E \ + (BIT_MASK_MACID_CTRL_OFFSET_8822E << BIT_SHIFT_MACID_CTRL_OFFSET_8822E) +#define BIT_CLEAR_MACID_CTRL_OFFSET_8822E(x) \ + ((x) & (~BITS_MACID_CTRL_OFFSET_8822E)) +#define BIT_GET_MACID_CTRL_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_MACID_CTRL_OFFSET_8822E) & \ + BIT_MASK_MACID_CTRL_OFFSET_8822E) +#define BIT_SET_MACID_CTRL_OFFSET_8822E(x, v) \ + (BIT_CLEAR_MACID_CTRL_OFFSET_8822E(x) | BIT_MACID_CTRL_OFFSET_8822E(v)) + +#define BIT_SHIFT_AMPDU_TXRPT_OFFSET_8822E 0 +#define BIT_MASK_AMPDU_TXRPT_OFFSET_8822E 0xff +#define BIT_AMPDU_TXRPT_OFFSET_8822E(x) \ + (((x) & BIT_MASK_AMPDU_TXRPT_OFFSET_8822E) \ + << BIT_SHIFT_AMPDU_TXRPT_OFFSET_8822E) +#define BITS_AMPDU_TXRPT_OFFSET_8822E \ + (BIT_MASK_AMPDU_TXRPT_OFFSET_8822E \ + << BIT_SHIFT_AMPDU_TXRPT_OFFSET_8822E) +#define BIT_CLEAR_AMPDU_TXRPT_OFFSET_8822E(x) \ + ((x) & (~BITS_AMPDU_TXRPT_OFFSET_8822E)) +#define BIT_GET_AMPDU_TXRPT_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_AMPDU_TXRPT_OFFSET_8822E) & \ + BIT_MASK_AMPDU_TXRPT_OFFSET_8822E) +#define BIT_SET_AMPDU_TXRPT_OFFSET_8822E(x, v) \ + (BIT_CLEAR_AMPDU_TXRPT_OFFSET_8822E(x) | \ + BIT_AMPDU_TXRPT_OFFSET_8822E(v)) + +/* 2 REG_POWER_STAGE1_8822E */ +#define BIT_PTA_WL_PRI_MASK_CPU_MGQ_8822E BIT(31) +#define BIT_PTA_WL_PRI_MASK_BCNQ_8822E BIT(30) +#define BIT_PTA_WL_PRI_MASK_HIQ_8822E BIT(29) +#define BIT_PTA_WL_PRI_MASK_MGQ_8822E BIT(28) +#define BIT_PTA_WL_PRI_MASK_BK_8822E BIT(27) +#define BIT_PTA_WL_PRI_MASK_BE_8822E BIT(26) +#define BIT_PTA_WL_PRI_MASK_VI_8822E BIT(25) +#define BIT_PTA_WL_PRI_MASK_VO_8822E BIT(24) + +#define BIT_SHIFT_POWER_STAGE1_8822E 0 +#define BIT_MASK_POWER_STAGE1_8822E 0xffffff +#define BIT_POWER_STAGE1_8822E(x) \ + (((x) & BIT_MASK_POWER_STAGE1_8822E) << BIT_SHIFT_POWER_STAGE1_8822E) +#define BITS_POWER_STAGE1_8822E \ + (BIT_MASK_POWER_STAGE1_8822E << BIT_SHIFT_POWER_STAGE1_8822E) +#define BIT_CLEAR_POWER_STAGE1_8822E(x) ((x) & (~BITS_POWER_STAGE1_8822E)) +#define BIT_GET_POWER_STAGE1_8822E(x) \ + (((x) >> BIT_SHIFT_POWER_STAGE1_8822E) & BIT_MASK_POWER_STAGE1_8822E) +#define BIT_SET_POWER_STAGE1_8822E(x, v) \ + (BIT_CLEAR_POWER_STAGE1_8822E(x) | BIT_POWER_STAGE1_8822E(v)) + +/* 2 REG_POWER_STAGE2_8822E */ +#define BIT__R_CTRL_PKT_POW_ADJ_8822E BIT(24) + +#define BIT_SHIFT_POWER_STAGE2_8822E 0 +#define BIT_MASK_POWER_STAGE2_8822E 0xffffff +#define BIT_POWER_STAGE2_8822E(x) \ + (((x) & BIT_MASK_POWER_STAGE2_8822E) << BIT_SHIFT_POWER_STAGE2_8822E) +#define BITS_POWER_STAGE2_8822E \ + (BIT_MASK_POWER_STAGE2_8822E << BIT_SHIFT_POWER_STAGE2_8822E) +#define BIT_CLEAR_POWER_STAGE2_8822E(x) ((x) & (~BITS_POWER_STAGE2_8822E)) +#define BIT_GET_POWER_STAGE2_8822E(x) \ + (((x) >> BIT_SHIFT_POWER_STAGE2_8822E) & BIT_MASK_POWER_STAGE2_8822E) +#define BIT_SET_POWER_STAGE2_8822E(x, v) \ + (BIT_CLEAR_POWER_STAGE2_8822E(x) | BIT_POWER_STAGE2_8822E(v)) + +/* 2 REG_SW_AMPDU_BURST_MODE_CTRL_8822E */ + +#define BIT_SHIFT_PAD_NUM_THRES_8822E 24 +#define BIT_MASK_PAD_NUM_THRES_8822E 0x3f +#define BIT_PAD_NUM_THRES_8822E(x) \ + (((x) & BIT_MASK_PAD_NUM_THRES_8822E) << BIT_SHIFT_PAD_NUM_THRES_8822E) +#define BITS_PAD_NUM_THRES_8822E \ + (BIT_MASK_PAD_NUM_THRES_8822E << BIT_SHIFT_PAD_NUM_THRES_8822E) +#define BIT_CLEAR_PAD_NUM_THRES_8822E(x) ((x) & (~BITS_PAD_NUM_THRES_8822E)) +#define BIT_GET_PAD_NUM_THRES_8822E(x) \ + (((x) >> BIT_SHIFT_PAD_NUM_THRES_8822E) & BIT_MASK_PAD_NUM_THRES_8822E) +#define BIT_SET_PAD_NUM_THRES_8822E(x, v) \ + (BIT_CLEAR_PAD_NUM_THRES_8822E(x) | BIT_PAD_NUM_THRES_8822E(v)) + +#define BIT_R_DMA_THIS_QUEUE_BK_8822E BIT(23) +#define BIT_R_DMA_THIS_QUEUE_BE_8822E BIT(22) +#define BIT_R_DMA_THIS_QUEUE_VI_8822E BIT(21) +#define BIT_R_DMA_THIS_QUEUE_VO_8822E BIT(20) + +#define BIT_SHIFT_R_TOTAL_LEN_TH_8822E 8 +#define BIT_MASK_R_TOTAL_LEN_TH_8822E 0xfff +#define BIT_R_TOTAL_LEN_TH_8822E(x) \ + (((x) & BIT_MASK_R_TOTAL_LEN_TH_8822E) \ + << BIT_SHIFT_R_TOTAL_LEN_TH_8822E) +#define BITS_R_TOTAL_LEN_TH_8822E \ + (BIT_MASK_R_TOTAL_LEN_TH_8822E << BIT_SHIFT_R_TOTAL_LEN_TH_8822E) +#define BIT_CLEAR_R_TOTAL_LEN_TH_8822E(x) ((x) & (~BITS_R_TOTAL_LEN_TH_8822E)) +#define BIT_GET_R_TOTAL_LEN_TH_8822E(x) \ + (((x) >> BIT_SHIFT_R_TOTAL_LEN_TH_8822E) & \ + BIT_MASK_R_TOTAL_LEN_TH_8822E) +#define BIT_SET_R_TOTAL_LEN_TH_8822E(x, v) \ + (BIT_CLEAR_R_TOTAL_LEN_TH_8822E(x) | BIT_R_TOTAL_LEN_TH_8822E(v)) + +#define BIT_EN_NEW_EARLY_8822E BIT(7) +#define BIT_PRE_TX_CMD_8822E BIT(6) + +#define BIT_SHIFT_NUM_SCL_EN_8822E 4 +#define BIT_MASK_NUM_SCL_EN_8822E 0x3 +#define BIT_NUM_SCL_EN_8822E(x) \ + (((x) & BIT_MASK_NUM_SCL_EN_8822E) << BIT_SHIFT_NUM_SCL_EN_8822E) +#define BITS_NUM_SCL_EN_8822E \ + (BIT_MASK_NUM_SCL_EN_8822E << BIT_SHIFT_NUM_SCL_EN_8822E) +#define BIT_CLEAR_NUM_SCL_EN_8822E(x) ((x) & (~BITS_NUM_SCL_EN_8822E)) +#define BIT_GET_NUM_SCL_EN_8822E(x) \ + (((x) >> BIT_SHIFT_NUM_SCL_EN_8822E) & BIT_MASK_NUM_SCL_EN_8822E) +#define BIT_SET_NUM_SCL_EN_8822E(x, v) \ + (BIT_CLEAR_NUM_SCL_EN_8822E(x) | BIT_NUM_SCL_EN_8822E(v)) + +#define BIT_BK_EN_8822E BIT(3) +#define BIT_BE_EN_8822E BIT(2) +#define BIT_VI_EN_8822E BIT(1) +#define BIT_VO_EN_8822E BIT(0) + +/* 2 REG_PKT_LIFE_TIME_8822E */ + +#define BIT_SHIFT_PKT_LIFTIME_BEBK_8822E 16 +#define BIT_MASK_PKT_LIFTIME_BEBK_8822E 0xffff +#define BIT_PKT_LIFTIME_BEBK_8822E(x) \ + (((x) & BIT_MASK_PKT_LIFTIME_BEBK_8822E) \ + << BIT_SHIFT_PKT_LIFTIME_BEBK_8822E) +#define BITS_PKT_LIFTIME_BEBK_8822E \ + (BIT_MASK_PKT_LIFTIME_BEBK_8822E << BIT_SHIFT_PKT_LIFTIME_BEBK_8822E) +#define BIT_CLEAR_PKT_LIFTIME_BEBK_8822E(x) \ + ((x) & (~BITS_PKT_LIFTIME_BEBK_8822E)) +#define BIT_GET_PKT_LIFTIME_BEBK_8822E(x) \ + (((x) >> BIT_SHIFT_PKT_LIFTIME_BEBK_8822E) & \ + BIT_MASK_PKT_LIFTIME_BEBK_8822E) +#define BIT_SET_PKT_LIFTIME_BEBK_8822E(x, v) \ + (BIT_CLEAR_PKT_LIFTIME_BEBK_8822E(x) | BIT_PKT_LIFTIME_BEBK_8822E(v)) + +#define BIT_SHIFT_PKT_LIFTIME_VOVI_8822E 0 +#define BIT_MASK_PKT_LIFTIME_VOVI_8822E 0xffff +#define BIT_PKT_LIFTIME_VOVI_8822E(x) \ + (((x) & BIT_MASK_PKT_LIFTIME_VOVI_8822E) \ + << BIT_SHIFT_PKT_LIFTIME_VOVI_8822E) +#define BITS_PKT_LIFTIME_VOVI_8822E \ + (BIT_MASK_PKT_LIFTIME_VOVI_8822E << BIT_SHIFT_PKT_LIFTIME_VOVI_8822E) +#define BIT_CLEAR_PKT_LIFTIME_VOVI_8822E(x) \ + ((x) & (~BITS_PKT_LIFTIME_VOVI_8822E)) +#define BIT_GET_PKT_LIFTIME_VOVI_8822E(x) \ + (((x) >> BIT_SHIFT_PKT_LIFTIME_VOVI_8822E) & \ + BIT_MASK_PKT_LIFTIME_VOVI_8822E) +#define BIT_SET_PKT_LIFTIME_VOVI_8822E(x, v) \ + (BIT_CLEAR_PKT_LIFTIME_VOVI_8822E(x) | BIT_PKT_LIFTIME_VOVI_8822E(v)) + +/* 2 REG_STBC_SETTING_8822E */ + +#define BIT_SHIFT_CDEND_TXTIME_L_8822E 4 +#define BIT_MASK_CDEND_TXTIME_L_8822E 0xf +#define BIT_CDEND_TXTIME_L_8822E(x) \ + (((x) & BIT_MASK_CDEND_TXTIME_L_8822E) \ + << BIT_SHIFT_CDEND_TXTIME_L_8822E) +#define BITS_CDEND_TXTIME_L_8822E \ + (BIT_MASK_CDEND_TXTIME_L_8822E << BIT_SHIFT_CDEND_TXTIME_L_8822E) +#define BIT_CLEAR_CDEND_TXTIME_L_8822E(x) ((x) & (~BITS_CDEND_TXTIME_L_8822E)) +#define BIT_GET_CDEND_TXTIME_L_8822E(x) \ + (((x) >> BIT_SHIFT_CDEND_TXTIME_L_8822E) & \ + BIT_MASK_CDEND_TXTIME_L_8822E) +#define BIT_SET_CDEND_TXTIME_L_8822E(x, v) \ + (BIT_CLEAR_CDEND_TXTIME_L_8822E(x) | BIT_CDEND_TXTIME_L_8822E(v)) + +#define BIT_SHIFT_NESS_8822E 2 +#define BIT_MASK_NESS_8822E 0x3 +#define BIT_NESS_8822E(x) (((x) & BIT_MASK_NESS_8822E) << BIT_SHIFT_NESS_8822E) +#define BITS_NESS_8822E (BIT_MASK_NESS_8822E << BIT_SHIFT_NESS_8822E) +#define BIT_CLEAR_NESS_8822E(x) ((x) & (~BITS_NESS_8822E)) +#define BIT_GET_NESS_8822E(x) \ + (((x) >> BIT_SHIFT_NESS_8822E) & BIT_MASK_NESS_8822E) +#define BIT_SET_NESS_8822E(x, v) (BIT_CLEAR_NESS_8822E(x) | BIT_NESS_8822E(v)) + +#define BIT_SHIFT_STBC_CFEND_8822E 0 +#define BIT_MASK_STBC_CFEND_8822E 0x3 +#define BIT_STBC_CFEND_8822E(x) \ + (((x) & BIT_MASK_STBC_CFEND_8822E) << BIT_SHIFT_STBC_CFEND_8822E) +#define BITS_STBC_CFEND_8822E \ + (BIT_MASK_STBC_CFEND_8822E << BIT_SHIFT_STBC_CFEND_8822E) +#define BIT_CLEAR_STBC_CFEND_8822E(x) ((x) & (~BITS_STBC_CFEND_8822E)) +#define BIT_GET_STBC_CFEND_8822E(x) \ + (((x) >> BIT_SHIFT_STBC_CFEND_8822E) & BIT_MASK_STBC_CFEND_8822E) +#define BIT_SET_STBC_CFEND_8822E(x, v) \ + (BIT_CLEAR_STBC_CFEND_8822E(x) | BIT_STBC_CFEND_8822E(v)) + +/* 2 REG_STBC_SETTING2_8822E */ + +#define BIT_SHIFT_CDEND_TXTIME_H_8822E 0 +#define BIT_MASK_CDEND_TXTIME_H_8822E 0x1f +#define BIT_CDEND_TXTIME_H_8822E(x) \ + (((x) & BIT_MASK_CDEND_TXTIME_H_8822E) \ + << BIT_SHIFT_CDEND_TXTIME_H_8822E) +#define BITS_CDEND_TXTIME_H_8822E \ + (BIT_MASK_CDEND_TXTIME_H_8822E << BIT_SHIFT_CDEND_TXTIME_H_8822E) +#define BIT_CLEAR_CDEND_TXTIME_H_8822E(x) ((x) & (~BITS_CDEND_TXTIME_H_8822E)) +#define BIT_GET_CDEND_TXTIME_H_8822E(x) \ + (((x) >> BIT_SHIFT_CDEND_TXTIME_H_8822E) & \ + BIT_MASK_CDEND_TXTIME_H_8822E) +#define BIT_SET_CDEND_TXTIME_H_8822E(x, v) \ + (BIT_CLEAR_CDEND_TXTIME_H_8822E(x) | BIT_CDEND_TXTIME_H_8822E(v)) + +/* 2 REG_QUEUE_CTRL_8822E */ +#define BIT_FORCE_RND_PRI_8822E BIT(6) +#define BIT_PTA_EDCCA_EN_8822E BIT(5) +#define BIT_PTA_WL_TX_EN_8822E BIT(4) +#define BIT_R_USE_DATA_BW_8822E BIT(3) +#define BIT_TRI_PKT_INT_MODE1_8822E BIT(2) +#define BIT_TRI_PKT_INT_MODE0_8822E BIT(1) +#define BIT_ACQ_MODE_SEL_8822E BIT(0) + +/* 2 REG_SINGLE_AMPDU_CTRL_8822E */ +#define BIT_EN_SINGLE_APMDU_8822E BIT(7) + +#define BIT_SHIFT_SNDTX_MAXTIME_8822E 0 +#define BIT_MASK_SNDTX_MAXTIME_8822E 0x7f +#define BIT_SNDTX_MAXTIME_8822E(x) \ + (((x) & BIT_MASK_SNDTX_MAXTIME_8822E) << BIT_SHIFT_SNDTX_MAXTIME_8822E) +#define BITS_SNDTX_MAXTIME_8822E \ + (BIT_MASK_SNDTX_MAXTIME_8822E << BIT_SHIFT_SNDTX_MAXTIME_8822E) +#define BIT_CLEAR_SNDTX_MAXTIME_8822E(x) ((x) & (~BITS_SNDTX_MAXTIME_8822E)) +#define BIT_GET_SNDTX_MAXTIME_8822E(x) \ + (((x) >> BIT_SHIFT_SNDTX_MAXTIME_8822E) & BIT_MASK_SNDTX_MAXTIME_8822E) +#define BIT_SET_SNDTX_MAXTIME_8822E(x, v) \ + (BIT_CLEAR_SNDTX_MAXTIME_8822E(x) | BIT_SNDTX_MAXTIME_8822E(v)) + +/* 2 REG_PROT_MODE_CTRL_8822E */ +#define BIT_SND_SIFS_TXDATA_8822E BIT(31) +#define BIT_TX_SND_MATCH_MACID_8822E BIT(30) + +#define BIT_SHIFT_RTS_MAX_AGG_NUM_8822E 24 +#define BIT_MASK_RTS_MAX_AGG_NUM_8822E 0x3f +#define BIT_RTS_MAX_AGG_NUM_8822E(x) \ + (((x) & BIT_MASK_RTS_MAX_AGG_NUM_8822E) \ + << BIT_SHIFT_RTS_MAX_AGG_NUM_8822E) +#define BITS_RTS_MAX_AGG_NUM_8822E \ + (BIT_MASK_RTS_MAX_AGG_NUM_8822E << BIT_SHIFT_RTS_MAX_AGG_NUM_8822E) +#define BIT_CLEAR_RTS_MAX_AGG_NUM_8822E(x) ((x) & (~BITS_RTS_MAX_AGG_NUM_8822E)) +#define BIT_GET_RTS_MAX_AGG_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_RTS_MAX_AGG_NUM_8822E) & \ + BIT_MASK_RTS_MAX_AGG_NUM_8822E) +#define BIT_SET_RTS_MAX_AGG_NUM_8822E(x, v) \ + (BIT_CLEAR_RTS_MAX_AGG_NUM_8822E(x) | BIT_RTS_MAX_AGG_NUM_8822E(v)) + +#define BIT_SHIFT_MAX_AGG_NUM_8822E 16 +#define BIT_MASK_MAX_AGG_NUM_8822E 0x3f +#define BIT_MAX_AGG_NUM_8822E(x) \ + (((x) & BIT_MASK_MAX_AGG_NUM_8822E) << BIT_SHIFT_MAX_AGG_NUM_8822E) +#define BITS_MAX_AGG_NUM_8822E \ + (BIT_MASK_MAX_AGG_NUM_8822E << BIT_SHIFT_MAX_AGG_NUM_8822E) +#define BIT_CLEAR_MAX_AGG_NUM_8822E(x) ((x) & (~BITS_MAX_AGG_NUM_8822E)) +#define BIT_GET_MAX_AGG_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_AGG_NUM_8822E) & BIT_MASK_MAX_AGG_NUM_8822E) +#define BIT_SET_MAX_AGG_NUM_8822E(x, v) \ + (BIT_CLEAR_MAX_AGG_NUM_8822E(x) | BIT_MAX_AGG_NUM_8822E(v)) + +#define BIT_SHIFT_RTS_TXTIME_TH_8822E 8 +#define BIT_MASK_RTS_TXTIME_TH_8822E 0xff +#define BIT_RTS_TXTIME_TH_8822E(x) \ + (((x) & BIT_MASK_RTS_TXTIME_TH_8822E) << BIT_SHIFT_RTS_TXTIME_TH_8822E) +#define BITS_RTS_TXTIME_TH_8822E \ + (BIT_MASK_RTS_TXTIME_TH_8822E << BIT_SHIFT_RTS_TXTIME_TH_8822E) +#define BIT_CLEAR_RTS_TXTIME_TH_8822E(x) ((x) & (~BITS_RTS_TXTIME_TH_8822E)) +#define BIT_GET_RTS_TXTIME_TH_8822E(x) \ + (((x) >> BIT_SHIFT_RTS_TXTIME_TH_8822E) & BIT_MASK_RTS_TXTIME_TH_8822E) +#define BIT_SET_RTS_TXTIME_TH_8822E(x, v) \ + (BIT_CLEAR_RTS_TXTIME_TH_8822E(x) | BIT_RTS_TXTIME_TH_8822E(v)) + +#define BIT_SHIFT_RTS_LEN_TH_8822E 0 +#define BIT_MASK_RTS_LEN_TH_8822E 0xff +#define BIT_RTS_LEN_TH_8822E(x) \ + (((x) & BIT_MASK_RTS_LEN_TH_8822E) << BIT_SHIFT_RTS_LEN_TH_8822E) +#define BITS_RTS_LEN_TH_8822E \ + (BIT_MASK_RTS_LEN_TH_8822E << BIT_SHIFT_RTS_LEN_TH_8822E) +#define BIT_CLEAR_RTS_LEN_TH_8822E(x) ((x) & (~BITS_RTS_LEN_TH_8822E)) +#define BIT_GET_RTS_LEN_TH_8822E(x) \ + (((x) >> BIT_SHIFT_RTS_LEN_TH_8822E) & BIT_MASK_RTS_LEN_TH_8822E) +#define BIT_SET_RTS_LEN_TH_8822E(x, v) \ + (BIT_CLEAR_RTS_LEN_TH_8822E(x) | BIT_RTS_LEN_TH_8822E(v)) + +/* 2 REG_BAR_MODE_CTRL_8822E */ + +#define BIT_SHIFT_BAR_RTY_LMT_8822E 16 +#define BIT_MASK_BAR_RTY_LMT_8822E 0x3 +#define BIT_BAR_RTY_LMT_8822E(x) \ + (((x) & BIT_MASK_BAR_RTY_LMT_8822E) << BIT_SHIFT_BAR_RTY_LMT_8822E) +#define BITS_BAR_RTY_LMT_8822E \ + (BIT_MASK_BAR_RTY_LMT_8822E << BIT_SHIFT_BAR_RTY_LMT_8822E) +#define BIT_CLEAR_BAR_RTY_LMT_8822E(x) ((x) & (~BITS_BAR_RTY_LMT_8822E)) +#define BIT_GET_BAR_RTY_LMT_8822E(x) \ + (((x) >> BIT_SHIFT_BAR_RTY_LMT_8822E) & BIT_MASK_BAR_RTY_LMT_8822E) +#define BIT_SET_BAR_RTY_LMT_8822E(x, v) \ + (BIT_CLEAR_BAR_RTY_LMT_8822E(x) | BIT_BAR_RTY_LMT_8822E(v)) + +#define BIT_SHIFT_BAR_PKT_TXTIME_TH_8822E 8 +#define BIT_MASK_BAR_PKT_TXTIME_TH_8822E 0xff +#define BIT_BAR_PKT_TXTIME_TH_8822E(x) \ + (((x) & BIT_MASK_BAR_PKT_TXTIME_TH_8822E) \ + << BIT_SHIFT_BAR_PKT_TXTIME_TH_8822E) +#define BITS_BAR_PKT_TXTIME_TH_8822E \ + (BIT_MASK_BAR_PKT_TXTIME_TH_8822E << BIT_SHIFT_BAR_PKT_TXTIME_TH_8822E) +#define BIT_CLEAR_BAR_PKT_TXTIME_TH_8822E(x) \ + ((x) & (~BITS_BAR_PKT_TXTIME_TH_8822E)) +#define BIT_GET_BAR_PKT_TXTIME_TH_8822E(x) \ + (((x) >> BIT_SHIFT_BAR_PKT_TXTIME_TH_8822E) & \ + BIT_MASK_BAR_PKT_TXTIME_TH_8822E) +#define BIT_SET_BAR_PKT_TXTIME_TH_8822E(x, v) \ + (BIT_CLEAR_BAR_PKT_TXTIME_TH_8822E(x) | BIT_BAR_PKT_TXTIME_TH_8822E(v)) + +#define BIT_BAR_EN_V1_8822E BIT(6) + +#define BIT_SHIFT_BAR_PKTNUM_TH_V1_8822E 0 +#define BIT_MASK_BAR_PKTNUM_TH_V1_8822E 0x3f +#define BIT_BAR_PKTNUM_TH_V1_8822E(x) \ + (((x) & BIT_MASK_BAR_PKTNUM_TH_V1_8822E) \ + << BIT_SHIFT_BAR_PKTNUM_TH_V1_8822E) +#define BITS_BAR_PKTNUM_TH_V1_8822E \ + (BIT_MASK_BAR_PKTNUM_TH_V1_8822E << BIT_SHIFT_BAR_PKTNUM_TH_V1_8822E) +#define BIT_CLEAR_BAR_PKTNUM_TH_V1_8822E(x) \ + ((x) & (~BITS_BAR_PKTNUM_TH_V1_8822E)) +#define BIT_GET_BAR_PKTNUM_TH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BAR_PKTNUM_TH_V1_8822E) & \ + BIT_MASK_BAR_PKTNUM_TH_V1_8822E) +#define BIT_SET_BAR_PKTNUM_TH_V1_8822E(x, v) \ + (BIT_CLEAR_BAR_PKTNUM_TH_V1_8822E(x) | BIT_BAR_PKTNUM_TH_V1_8822E(v)) + +/* 2 REG_RA_TRY_RATE_AGG_LMT_8822E */ + +#define BIT_SHIFT_RA_TRY_RATE_AGG_LMT_V1_8822E 0 +#define BIT_MASK_RA_TRY_RATE_AGG_LMT_V1_8822E 0x3f +#define BIT_RA_TRY_RATE_AGG_LMT_V1_8822E(x) \ + (((x) & BIT_MASK_RA_TRY_RATE_AGG_LMT_V1_8822E) \ + << BIT_SHIFT_RA_TRY_RATE_AGG_LMT_V1_8822E) +#define BITS_RA_TRY_RATE_AGG_LMT_V1_8822E \ + (BIT_MASK_RA_TRY_RATE_AGG_LMT_V1_8822E \ + << BIT_SHIFT_RA_TRY_RATE_AGG_LMT_V1_8822E) +#define BIT_CLEAR_RA_TRY_RATE_AGG_LMT_V1_8822E(x) \ + ((x) & (~BITS_RA_TRY_RATE_AGG_LMT_V1_8822E)) +#define BIT_GET_RA_TRY_RATE_AGG_LMT_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RA_TRY_RATE_AGG_LMT_V1_8822E) & \ + BIT_MASK_RA_TRY_RATE_AGG_LMT_V1_8822E) +#define BIT_SET_RA_TRY_RATE_AGG_LMT_V1_8822E(x, v) \ + (BIT_CLEAR_RA_TRY_RATE_AGG_LMT_V1_8822E(x) | \ + BIT_RA_TRY_RATE_AGG_LMT_V1_8822E(v)) + +/* 2 REG_MACID_SLEEP2_8822E */ + +#define BIT_SHIFT_MACID95_64PKTSLEEP_8822E 0 +#define BIT_MASK_MACID95_64PKTSLEEP_8822E 0xffffffffL +#define BIT_MACID95_64PKTSLEEP_8822E(x) \ + (((x) & BIT_MASK_MACID95_64PKTSLEEP_8822E) \ + << BIT_SHIFT_MACID95_64PKTSLEEP_8822E) +#define BITS_MACID95_64PKTSLEEP_8822E \ + (BIT_MASK_MACID95_64PKTSLEEP_8822E \ + << BIT_SHIFT_MACID95_64PKTSLEEP_8822E) +#define BIT_CLEAR_MACID95_64PKTSLEEP_8822E(x) \ + ((x) & (~BITS_MACID95_64PKTSLEEP_8822E)) +#define BIT_GET_MACID95_64PKTSLEEP_8822E(x) \ + (((x) >> BIT_SHIFT_MACID95_64PKTSLEEP_8822E) & \ + BIT_MASK_MACID95_64PKTSLEEP_8822E) +#define BIT_SET_MACID95_64PKTSLEEP_8822E(x, v) \ + (BIT_CLEAR_MACID95_64PKTSLEEP_8822E(x) | \ + BIT_MACID95_64PKTSLEEP_8822E(v)) + +/* 2 REG_MACID_SLEEP_8822E */ + +#define BIT_SHIFT_MACID31_0_PKTSLEEP_8822E 0 +#define BIT_MASK_MACID31_0_PKTSLEEP_8822E 0xffffffffL +#define BIT_MACID31_0_PKTSLEEP_8822E(x) \ + (((x) & BIT_MASK_MACID31_0_PKTSLEEP_8822E) \ + << BIT_SHIFT_MACID31_0_PKTSLEEP_8822E) +#define BITS_MACID31_0_PKTSLEEP_8822E \ + (BIT_MASK_MACID31_0_PKTSLEEP_8822E \ + << BIT_SHIFT_MACID31_0_PKTSLEEP_8822E) +#define BIT_CLEAR_MACID31_0_PKTSLEEP_8822E(x) \ + ((x) & (~BITS_MACID31_0_PKTSLEEP_8822E)) +#define BIT_GET_MACID31_0_PKTSLEEP_8822E(x) \ + (((x) >> BIT_SHIFT_MACID31_0_PKTSLEEP_8822E) & \ + BIT_MASK_MACID31_0_PKTSLEEP_8822E) +#define BIT_SET_MACID31_0_PKTSLEEP_8822E(x, v) \ + (BIT_CLEAR_MACID31_0_PKTSLEEP_8822E(x) | \ + BIT_MACID31_0_PKTSLEEP_8822E(v)) + +/* 2 REG_HW_SEQ0_8822E */ + +#define BIT_SHIFT_HW_SSN_SEQ0_8822E 0 +#define BIT_MASK_HW_SSN_SEQ0_8822E 0xfff +#define BIT_HW_SSN_SEQ0_8822E(x) \ + (((x) & BIT_MASK_HW_SSN_SEQ0_8822E) << BIT_SHIFT_HW_SSN_SEQ0_8822E) +#define BITS_HW_SSN_SEQ0_8822E \ + (BIT_MASK_HW_SSN_SEQ0_8822E << BIT_SHIFT_HW_SSN_SEQ0_8822E) +#define BIT_CLEAR_HW_SSN_SEQ0_8822E(x) ((x) & (~BITS_HW_SSN_SEQ0_8822E)) +#define BIT_GET_HW_SSN_SEQ0_8822E(x) \ + (((x) >> BIT_SHIFT_HW_SSN_SEQ0_8822E) & BIT_MASK_HW_SSN_SEQ0_8822E) +#define BIT_SET_HW_SSN_SEQ0_8822E(x, v) \ + (BIT_CLEAR_HW_SSN_SEQ0_8822E(x) | BIT_HW_SSN_SEQ0_8822E(v)) + +/* 2 REG_HW_SEQ1_8822E */ + +#define BIT_SHIFT_HW_SSN_SEQ1_8822E 0 +#define BIT_MASK_HW_SSN_SEQ1_8822E 0xfff +#define BIT_HW_SSN_SEQ1_8822E(x) \ + (((x) & BIT_MASK_HW_SSN_SEQ1_8822E) << BIT_SHIFT_HW_SSN_SEQ1_8822E) +#define BITS_HW_SSN_SEQ1_8822E \ + (BIT_MASK_HW_SSN_SEQ1_8822E << BIT_SHIFT_HW_SSN_SEQ1_8822E) +#define BIT_CLEAR_HW_SSN_SEQ1_8822E(x) ((x) & (~BITS_HW_SSN_SEQ1_8822E)) +#define BIT_GET_HW_SSN_SEQ1_8822E(x) \ + (((x) >> BIT_SHIFT_HW_SSN_SEQ1_8822E) & BIT_MASK_HW_SSN_SEQ1_8822E) +#define BIT_SET_HW_SSN_SEQ1_8822E(x, v) \ + (BIT_CLEAR_HW_SSN_SEQ1_8822E(x) | BIT_HW_SSN_SEQ1_8822E(v)) + +/* 2 REG_HW_SEQ2_8822E */ + +#define BIT_SHIFT_HW_SSN_SEQ2_8822E 0 +#define BIT_MASK_HW_SSN_SEQ2_8822E 0xfff +#define BIT_HW_SSN_SEQ2_8822E(x) \ + (((x) & BIT_MASK_HW_SSN_SEQ2_8822E) << BIT_SHIFT_HW_SSN_SEQ2_8822E) +#define BITS_HW_SSN_SEQ2_8822E \ + (BIT_MASK_HW_SSN_SEQ2_8822E << BIT_SHIFT_HW_SSN_SEQ2_8822E) +#define BIT_CLEAR_HW_SSN_SEQ2_8822E(x) ((x) & (~BITS_HW_SSN_SEQ2_8822E)) +#define BIT_GET_HW_SSN_SEQ2_8822E(x) \ + (((x) >> BIT_SHIFT_HW_SSN_SEQ2_8822E) & BIT_MASK_HW_SSN_SEQ2_8822E) +#define BIT_SET_HW_SSN_SEQ2_8822E(x, v) \ + (BIT_CLEAR_HW_SSN_SEQ2_8822E(x) | BIT_HW_SSN_SEQ2_8822E(v)) + +/* 2 REG_HW_SEQ3_8822E */ + +#define BIT_SHIFT_CSI_HWSEQ_SEL_8822E 12 +#define BIT_MASK_CSI_HWSEQ_SEL_8822E 0x3 +#define BIT_CSI_HWSEQ_SEL_8822E(x) \ + (((x) & BIT_MASK_CSI_HWSEQ_SEL_8822E) << BIT_SHIFT_CSI_HWSEQ_SEL_8822E) +#define BITS_CSI_HWSEQ_SEL_8822E \ + (BIT_MASK_CSI_HWSEQ_SEL_8822E << BIT_SHIFT_CSI_HWSEQ_SEL_8822E) +#define BIT_CLEAR_CSI_HWSEQ_SEL_8822E(x) ((x) & (~BITS_CSI_HWSEQ_SEL_8822E)) +#define BIT_GET_CSI_HWSEQ_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_CSI_HWSEQ_SEL_8822E) & BIT_MASK_CSI_HWSEQ_SEL_8822E) +#define BIT_SET_CSI_HWSEQ_SEL_8822E(x, v) \ + (BIT_CLEAR_CSI_HWSEQ_SEL_8822E(x) | BIT_CSI_HWSEQ_SEL_8822E(v)) + +#define BIT_SHIFT_HW_SSN_SEQ3_8822E 0 +#define BIT_MASK_HW_SSN_SEQ3_8822E 0xfff +#define BIT_HW_SSN_SEQ3_8822E(x) \ + (((x) & BIT_MASK_HW_SSN_SEQ3_8822E) << BIT_SHIFT_HW_SSN_SEQ3_8822E) +#define BITS_HW_SSN_SEQ3_8822E \ + (BIT_MASK_HW_SSN_SEQ3_8822E << BIT_SHIFT_HW_SSN_SEQ3_8822E) +#define BIT_CLEAR_HW_SSN_SEQ3_8822E(x) ((x) & (~BITS_HW_SSN_SEQ3_8822E)) +#define BIT_GET_HW_SSN_SEQ3_8822E(x) \ + (((x) >> BIT_SHIFT_HW_SSN_SEQ3_8822E) & BIT_MASK_HW_SSN_SEQ3_8822E) +#define BIT_SET_HW_SSN_SEQ3_8822E(x, v) \ + (BIT_CLEAR_HW_SSN_SEQ3_8822E(x) | BIT_HW_SSN_SEQ3_8822E(v)) + +/* 2 REG_NULL_PKT_STATUS_V1_8822E */ + +#define BIT_SHIFT_PTCL_TOTAL_PG_V2_8822E 2 +#define BIT_MASK_PTCL_TOTAL_PG_V2_8822E 0x3fff +#define BIT_PTCL_TOTAL_PG_V2_8822E(x) \ + (((x) & BIT_MASK_PTCL_TOTAL_PG_V2_8822E) \ + << BIT_SHIFT_PTCL_TOTAL_PG_V2_8822E) +#define BITS_PTCL_TOTAL_PG_V2_8822E \ + (BIT_MASK_PTCL_TOTAL_PG_V2_8822E << BIT_SHIFT_PTCL_TOTAL_PG_V2_8822E) +#define BIT_CLEAR_PTCL_TOTAL_PG_V2_8822E(x) \ + ((x) & (~BITS_PTCL_TOTAL_PG_V2_8822E)) +#define BIT_GET_PTCL_TOTAL_PG_V2_8822E(x) \ + (((x) >> BIT_SHIFT_PTCL_TOTAL_PG_V2_8822E) & \ + BIT_MASK_PTCL_TOTAL_PG_V2_8822E) +#define BIT_SET_PTCL_TOTAL_PG_V2_8822E(x, v) \ + (BIT_CLEAR_PTCL_TOTAL_PG_V2_8822E(x) | BIT_PTCL_TOTAL_PG_V2_8822E(v)) + +#define BIT_TX_NULL_1_8822E BIT(1) +#define BIT_TX_NULL_0_8822E BIT(0) + +/* 2 REG_PTCL_ERR_STATUS_8822E */ +#define BIT_PTCL_RATE_TABLE_INVALID_8822E BIT(7) +#define BIT_FTM_T2R_ERROR_8822E BIT(6) +#define BIT_PTCL_ERR0_8822E BIT(5) +#define BIT_PTCL_ERR1_8822E BIT(4) +#define BIT_PTCL_ERR2_8822E BIT(3) +#define BIT_PTCL_ERR3_8822E BIT(2) +#define BIT_PTCL_ERR4_8822E BIT(1) +#define BIT_PTCL_ERR5_8822E BIT(0) + +/* 2 REG_NULL_PKT_STATUS_EXTEND_8822E */ +#define BIT_CLI3_TX_NULL_1_8822E BIT(7) +#define BIT_CLI3_TX_NULL_0_8822E BIT(6) +#define BIT_CLI2_TX_NULL_1_8822E BIT(5) +#define BIT_CLI2_TX_NULL_0_8822E BIT(4) +#define BIT_CLI1_TX_NULL_1_8822E BIT(3) +#define BIT_CLI1_TX_NULL_0_8822E BIT(2) +#define BIT_CLI0_TX_NULL_1_8822E BIT(1) +#define BIT_CLI0_TX_NULL_0_8822E BIT(0) + +/* 2 REG_HQMGQ_DROP_8822E */ +#define BIT_HIQ_DROP_8822E BIT(7) +#define BIT_MGQ_DROP_8822E BIT(6) +#define BIT_CLR_HGQ_REQ_BLOCK_8822E BIT(5) + +/* 2 REG_PRECNT_CTRL_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_EN_PRECNT_8822E BIT(11) + +#define BIT_SHIFT_PRECNT_TH_8822E 0 +#define BIT_MASK_PRECNT_TH_8822E 0x7ff +#define BIT_PRECNT_TH_8822E(x) \ + (((x) & BIT_MASK_PRECNT_TH_8822E) << BIT_SHIFT_PRECNT_TH_8822E) +#define BITS_PRECNT_TH_8822E \ + (BIT_MASK_PRECNT_TH_8822E << BIT_SHIFT_PRECNT_TH_8822E) +#define BIT_CLEAR_PRECNT_TH_8822E(x) ((x) & (~BITS_PRECNT_TH_8822E)) +#define BIT_GET_PRECNT_TH_8822E(x) \ + (((x) >> BIT_SHIFT_PRECNT_TH_8822E) & BIT_MASK_PRECNT_TH_8822E) +#define BIT_SET_PRECNT_TH_8822E(x, v) \ + (BIT_CLEAR_PRECNT_TH_8822E(x) | BIT_PRECNT_TH_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_BT_POLLUTE_PKT_CNT_8822E */ + +#define BIT_SHIFT_BT_POLLUTE_PKT_CNT_8822E 0 +#define BIT_MASK_BT_POLLUTE_PKT_CNT_8822E 0xffff +#define BIT_BT_POLLUTE_PKT_CNT_8822E(x) \ + (((x) & BIT_MASK_BT_POLLUTE_PKT_CNT_8822E) \ + << BIT_SHIFT_BT_POLLUTE_PKT_CNT_8822E) +#define BITS_BT_POLLUTE_PKT_CNT_8822E \ + (BIT_MASK_BT_POLLUTE_PKT_CNT_8822E \ + << BIT_SHIFT_BT_POLLUTE_PKT_CNT_8822E) +#define BIT_CLEAR_BT_POLLUTE_PKT_CNT_8822E(x) \ + ((x) & (~BITS_BT_POLLUTE_PKT_CNT_8822E)) +#define BIT_GET_BT_POLLUTE_PKT_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_BT_POLLUTE_PKT_CNT_8822E) & \ + BIT_MASK_BT_POLLUTE_PKT_CNT_8822E) +#define BIT_SET_BT_POLLUTE_PKT_CNT_8822E(x, v) \ + (BIT_CLEAR_BT_POLLUTE_PKT_CNT_8822E(x) | \ + BIT_BT_POLLUTE_PKT_CNT_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_PTCL_DBG_8822E */ + +#define BIT_SHIFT_PTCL_DBG_8822E 0 +#define BIT_MASK_PTCL_DBG_8822E 0xffffffffL +#define BIT_PTCL_DBG_8822E(x) \ + (((x) & BIT_MASK_PTCL_DBG_8822E) << BIT_SHIFT_PTCL_DBG_8822E) +#define BITS_PTCL_DBG_8822E \ + (BIT_MASK_PTCL_DBG_8822E << BIT_SHIFT_PTCL_DBG_8822E) +#define BIT_CLEAR_PTCL_DBG_8822E(x) ((x) & (~BITS_PTCL_DBG_8822E)) +#define BIT_GET_PTCL_DBG_8822E(x) \ + (((x) >> BIT_SHIFT_PTCL_DBG_8822E) & BIT_MASK_PTCL_DBG_8822E) +#define BIT_SET_PTCL_DBG_8822E(x, v) \ + (BIT_CLEAR_PTCL_DBG_8822E(x) | BIT_PTCL_DBG_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_CPUMGQ_TIMER_CTRL2_8822E */ + +#define BIT_SHIFT_TRI_HEAD_ADDR_8822E 16 +#define BIT_MASK_TRI_HEAD_ADDR_8822E 0xfff +#define BIT_TRI_HEAD_ADDR_8822E(x) \ + (((x) & BIT_MASK_TRI_HEAD_ADDR_8822E) << BIT_SHIFT_TRI_HEAD_ADDR_8822E) +#define BITS_TRI_HEAD_ADDR_8822E \ + (BIT_MASK_TRI_HEAD_ADDR_8822E << BIT_SHIFT_TRI_HEAD_ADDR_8822E) +#define BIT_CLEAR_TRI_HEAD_ADDR_8822E(x) ((x) & (~BITS_TRI_HEAD_ADDR_8822E)) +#define BIT_GET_TRI_HEAD_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_TRI_HEAD_ADDR_8822E) & BIT_MASK_TRI_HEAD_ADDR_8822E) +#define BIT_SET_TRI_HEAD_ADDR_8822E(x, v) \ + (BIT_CLEAR_TRI_HEAD_ADDR_8822E(x) | BIT_TRI_HEAD_ADDR_8822E(v)) + +#define BIT_DROP_TH_EN_8822E BIT(8) + +#define BIT_SHIFT_DROP_TH_8822E 0 +#define BIT_MASK_DROP_TH_8822E 0xff +#define BIT_DROP_TH_8822E(x) \ + (((x) & BIT_MASK_DROP_TH_8822E) << BIT_SHIFT_DROP_TH_8822E) +#define BITS_DROP_TH_8822E (BIT_MASK_DROP_TH_8822E << BIT_SHIFT_DROP_TH_8822E) +#define BIT_CLEAR_DROP_TH_8822E(x) ((x) & (~BITS_DROP_TH_8822E)) +#define BIT_GET_DROP_TH_8822E(x) \ + (((x) >> BIT_SHIFT_DROP_TH_8822E) & BIT_MASK_DROP_TH_8822E) +#define BIT_SET_DROP_TH_8822E(x, v) \ + (BIT_CLEAR_DROP_TH_8822E(x) | BIT_DROP_TH_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_DUMMY_PAGE4_V1_8822E */ + +/* 2 REG_MOREDATA_8822E */ +#define BIT_MOREDATA_CTRL2_EN_V1_8822E BIT(3) +#define BIT_MOREDATA_CTRL1_EN_V1_8822E BIT(2) +#define BIT_PKTIN_MOREDATA_REPLACE_ENABLE_V1_8822E BIT(0) + +/* 2 REG_Q0_Q1_INFO_8822E */ +#define BIT_QUEUE_MACID_AC_NOT_THE_SAME_8822E BIT(31) + +#define BIT_SHIFT_GTAB_ID_8822E 28 +#define BIT_MASK_GTAB_ID_8822E 0x7 +#define BIT_GTAB_ID_8822E(x) \ + (((x) & BIT_MASK_GTAB_ID_8822E) << BIT_SHIFT_GTAB_ID_8822E) +#define BITS_GTAB_ID_8822E (BIT_MASK_GTAB_ID_8822E << BIT_SHIFT_GTAB_ID_8822E) +#define BIT_CLEAR_GTAB_ID_8822E(x) ((x) & (~BITS_GTAB_ID_8822E)) +#define BIT_GET_GTAB_ID_8822E(x) \ + (((x) >> BIT_SHIFT_GTAB_ID_8822E) & BIT_MASK_GTAB_ID_8822E) +#define BIT_SET_GTAB_ID_8822E(x, v) \ + (BIT_CLEAR_GTAB_ID_8822E(x) | BIT_GTAB_ID_8822E(v)) + +#define BIT_SHIFT_AC1_PKT_INFO_8822E 16 +#define BIT_MASK_AC1_PKT_INFO_8822E 0xfff +#define BIT_AC1_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_AC1_PKT_INFO_8822E) << BIT_SHIFT_AC1_PKT_INFO_8822E) +#define BITS_AC1_PKT_INFO_8822E \ + (BIT_MASK_AC1_PKT_INFO_8822E << BIT_SHIFT_AC1_PKT_INFO_8822E) +#define BIT_CLEAR_AC1_PKT_INFO_8822E(x) ((x) & (~BITS_AC1_PKT_INFO_8822E)) +#define BIT_GET_AC1_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_AC1_PKT_INFO_8822E) & BIT_MASK_AC1_PKT_INFO_8822E) +#define BIT_SET_AC1_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_AC1_PKT_INFO_8822E(x) | BIT_AC1_PKT_INFO_8822E(v)) + +#define BIT_QUEUE_MACID_AC_NOT_THE_SAME_V1_8822E BIT(15) + +#define BIT_SHIFT_GTAB_ID_V1_8822E 12 +#define BIT_MASK_GTAB_ID_V1_8822E 0x7 +#define BIT_GTAB_ID_V1_8822E(x) \ + (((x) & BIT_MASK_GTAB_ID_V1_8822E) << BIT_SHIFT_GTAB_ID_V1_8822E) +#define BITS_GTAB_ID_V1_8822E \ + (BIT_MASK_GTAB_ID_V1_8822E << BIT_SHIFT_GTAB_ID_V1_8822E) +#define BIT_CLEAR_GTAB_ID_V1_8822E(x) ((x) & (~BITS_GTAB_ID_V1_8822E)) +#define BIT_GET_GTAB_ID_V1_8822E(x) \ + (((x) >> BIT_SHIFT_GTAB_ID_V1_8822E) & BIT_MASK_GTAB_ID_V1_8822E) +#define BIT_SET_GTAB_ID_V1_8822E(x, v) \ + (BIT_CLEAR_GTAB_ID_V1_8822E(x) | BIT_GTAB_ID_V1_8822E(v)) + +#define BIT_SHIFT_AC0_PKT_INFO_8822E 0 +#define BIT_MASK_AC0_PKT_INFO_8822E 0xfff +#define BIT_AC0_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_AC0_PKT_INFO_8822E) << BIT_SHIFT_AC0_PKT_INFO_8822E) +#define BITS_AC0_PKT_INFO_8822E \ + (BIT_MASK_AC0_PKT_INFO_8822E << BIT_SHIFT_AC0_PKT_INFO_8822E) +#define BIT_CLEAR_AC0_PKT_INFO_8822E(x) ((x) & (~BITS_AC0_PKT_INFO_8822E)) +#define BIT_GET_AC0_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_AC0_PKT_INFO_8822E) & BIT_MASK_AC0_PKT_INFO_8822E) +#define BIT_SET_AC0_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_AC0_PKT_INFO_8822E(x) | BIT_AC0_PKT_INFO_8822E(v)) + +/* 2 REG_Q2_Q3_INFO_8822E */ +#define BIT_QUEUE_MACID_AC_NOT_THE_SAME_8822E BIT(31) + +#define BIT_SHIFT_GTAB_ID_8822E 28 +#define BIT_MASK_GTAB_ID_8822E 0x7 +#define BIT_GTAB_ID_8822E(x) \ + (((x) & BIT_MASK_GTAB_ID_8822E) << BIT_SHIFT_GTAB_ID_8822E) +#define BITS_GTAB_ID_8822E (BIT_MASK_GTAB_ID_8822E << BIT_SHIFT_GTAB_ID_8822E) +#define BIT_CLEAR_GTAB_ID_8822E(x) ((x) & (~BITS_GTAB_ID_8822E)) +#define BIT_GET_GTAB_ID_8822E(x) \ + (((x) >> BIT_SHIFT_GTAB_ID_8822E) & BIT_MASK_GTAB_ID_8822E) +#define BIT_SET_GTAB_ID_8822E(x, v) \ + (BIT_CLEAR_GTAB_ID_8822E(x) | BIT_GTAB_ID_8822E(v)) + +#define BIT_SHIFT_AC3_PKT_INFO_8822E 16 +#define BIT_MASK_AC3_PKT_INFO_8822E 0xfff +#define BIT_AC3_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_AC3_PKT_INFO_8822E) << BIT_SHIFT_AC3_PKT_INFO_8822E) +#define BITS_AC3_PKT_INFO_8822E \ + (BIT_MASK_AC3_PKT_INFO_8822E << BIT_SHIFT_AC3_PKT_INFO_8822E) +#define BIT_CLEAR_AC3_PKT_INFO_8822E(x) ((x) & (~BITS_AC3_PKT_INFO_8822E)) +#define BIT_GET_AC3_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_AC3_PKT_INFO_8822E) & BIT_MASK_AC3_PKT_INFO_8822E) +#define BIT_SET_AC3_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_AC3_PKT_INFO_8822E(x) | BIT_AC3_PKT_INFO_8822E(v)) + +#define BIT_QUEUE_MACID_AC_NOT_THE_SAME_V1_8822E BIT(15) + +#define BIT_SHIFT_GTAB_ID_V1_8822E 12 +#define BIT_MASK_GTAB_ID_V1_8822E 0x7 +#define BIT_GTAB_ID_V1_8822E(x) \ + (((x) & BIT_MASK_GTAB_ID_V1_8822E) << BIT_SHIFT_GTAB_ID_V1_8822E) +#define BITS_GTAB_ID_V1_8822E \ + (BIT_MASK_GTAB_ID_V1_8822E << BIT_SHIFT_GTAB_ID_V1_8822E) +#define BIT_CLEAR_GTAB_ID_V1_8822E(x) ((x) & (~BITS_GTAB_ID_V1_8822E)) +#define BIT_GET_GTAB_ID_V1_8822E(x) \ + (((x) >> BIT_SHIFT_GTAB_ID_V1_8822E) & BIT_MASK_GTAB_ID_V1_8822E) +#define BIT_SET_GTAB_ID_V1_8822E(x, v) \ + (BIT_CLEAR_GTAB_ID_V1_8822E(x) | BIT_GTAB_ID_V1_8822E(v)) + +#define BIT_SHIFT_AC2_PKT_INFO_8822E 0 +#define BIT_MASK_AC2_PKT_INFO_8822E 0xfff +#define BIT_AC2_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_AC2_PKT_INFO_8822E) << BIT_SHIFT_AC2_PKT_INFO_8822E) +#define BITS_AC2_PKT_INFO_8822E \ + (BIT_MASK_AC2_PKT_INFO_8822E << BIT_SHIFT_AC2_PKT_INFO_8822E) +#define BIT_CLEAR_AC2_PKT_INFO_8822E(x) ((x) & (~BITS_AC2_PKT_INFO_8822E)) +#define BIT_GET_AC2_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_AC2_PKT_INFO_8822E) & BIT_MASK_AC2_PKT_INFO_8822E) +#define BIT_SET_AC2_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_AC2_PKT_INFO_8822E(x) | BIT_AC2_PKT_INFO_8822E(v)) + +/* 2 REG_Q4_Q5_INFO_8822E */ +#define BIT_QUEUE_MACID_AC_NOT_THE_SAME_8822E BIT(31) + +#define BIT_SHIFT_GTAB_ID_8822E 28 +#define BIT_MASK_GTAB_ID_8822E 0x7 +#define BIT_GTAB_ID_8822E(x) \ + (((x) & BIT_MASK_GTAB_ID_8822E) << BIT_SHIFT_GTAB_ID_8822E) +#define BITS_GTAB_ID_8822E (BIT_MASK_GTAB_ID_8822E << BIT_SHIFT_GTAB_ID_8822E) +#define BIT_CLEAR_GTAB_ID_8822E(x) ((x) & (~BITS_GTAB_ID_8822E)) +#define BIT_GET_GTAB_ID_8822E(x) \ + (((x) >> BIT_SHIFT_GTAB_ID_8822E) & BIT_MASK_GTAB_ID_8822E) +#define BIT_SET_GTAB_ID_8822E(x, v) \ + (BIT_CLEAR_GTAB_ID_8822E(x) | BIT_GTAB_ID_8822E(v)) + +#define BIT_SHIFT_AC5_PKT_INFO_8822E 16 +#define BIT_MASK_AC5_PKT_INFO_8822E 0xfff +#define BIT_AC5_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_AC5_PKT_INFO_8822E) << BIT_SHIFT_AC5_PKT_INFO_8822E) +#define BITS_AC5_PKT_INFO_8822E \ + (BIT_MASK_AC5_PKT_INFO_8822E << BIT_SHIFT_AC5_PKT_INFO_8822E) +#define BIT_CLEAR_AC5_PKT_INFO_8822E(x) ((x) & (~BITS_AC5_PKT_INFO_8822E)) +#define BIT_GET_AC5_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_AC5_PKT_INFO_8822E) & BIT_MASK_AC5_PKT_INFO_8822E) +#define BIT_SET_AC5_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_AC5_PKT_INFO_8822E(x) | BIT_AC5_PKT_INFO_8822E(v)) + +#define BIT_QUEUE_MACID_AC_NOT_THE_SAME_V1_8822E BIT(15) + +#define BIT_SHIFT_GTAB_ID_V1_8822E 12 +#define BIT_MASK_GTAB_ID_V1_8822E 0x7 +#define BIT_GTAB_ID_V1_8822E(x) \ + (((x) & BIT_MASK_GTAB_ID_V1_8822E) << BIT_SHIFT_GTAB_ID_V1_8822E) +#define BITS_GTAB_ID_V1_8822E \ + (BIT_MASK_GTAB_ID_V1_8822E << BIT_SHIFT_GTAB_ID_V1_8822E) +#define BIT_CLEAR_GTAB_ID_V1_8822E(x) ((x) & (~BITS_GTAB_ID_V1_8822E)) +#define BIT_GET_GTAB_ID_V1_8822E(x) \ + (((x) >> BIT_SHIFT_GTAB_ID_V1_8822E) & BIT_MASK_GTAB_ID_V1_8822E) +#define BIT_SET_GTAB_ID_V1_8822E(x, v) \ + (BIT_CLEAR_GTAB_ID_V1_8822E(x) | BIT_GTAB_ID_V1_8822E(v)) + +#define BIT_SHIFT_AC4_PKT_INFO_8822E 0 +#define BIT_MASK_AC4_PKT_INFO_8822E 0xfff +#define BIT_AC4_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_AC4_PKT_INFO_8822E) << BIT_SHIFT_AC4_PKT_INFO_8822E) +#define BITS_AC4_PKT_INFO_8822E \ + (BIT_MASK_AC4_PKT_INFO_8822E << BIT_SHIFT_AC4_PKT_INFO_8822E) +#define BIT_CLEAR_AC4_PKT_INFO_8822E(x) ((x) & (~BITS_AC4_PKT_INFO_8822E)) +#define BIT_GET_AC4_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_AC4_PKT_INFO_8822E) & BIT_MASK_AC4_PKT_INFO_8822E) +#define BIT_SET_AC4_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_AC4_PKT_INFO_8822E(x) | BIT_AC4_PKT_INFO_8822E(v)) + +/* 2 REG_Q6_Q7_INFO_8822E */ +#define BIT_QUEUE_MACID_AC_NOT_THE_SAME_8822E BIT(31) + +#define BIT_SHIFT_GTAB_ID_8822E 28 +#define BIT_MASK_GTAB_ID_8822E 0x7 +#define BIT_GTAB_ID_8822E(x) \ + (((x) & BIT_MASK_GTAB_ID_8822E) << BIT_SHIFT_GTAB_ID_8822E) +#define BITS_GTAB_ID_8822E (BIT_MASK_GTAB_ID_8822E << BIT_SHIFT_GTAB_ID_8822E) +#define BIT_CLEAR_GTAB_ID_8822E(x) ((x) & (~BITS_GTAB_ID_8822E)) +#define BIT_GET_GTAB_ID_8822E(x) \ + (((x) >> BIT_SHIFT_GTAB_ID_8822E) & BIT_MASK_GTAB_ID_8822E) +#define BIT_SET_GTAB_ID_8822E(x, v) \ + (BIT_CLEAR_GTAB_ID_8822E(x) | BIT_GTAB_ID_8822E(v)) + +#define BIT_SHIFT_AC7_PKT_INFO_8822E 16 +#define BIT_MASK_AC7_PKT_INFO_8822E 0xfff +#define BIT_AC7_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_AC7_PKT_INFO_8822E) << BIT_SHIFT_AC7_PKT_INFO_8822E) +#define BITS_AC7_PKT_INFO_8822E \ + (BIT_MASK_AC7_PKT_INFO_8822E << BIT_SHIFT_AC7_PKT_INFO_8822E) +#define BIT_CLEAR_AC7_PKT_INFO_8822E(x) ((x) & (~BITS_AC7_PKT_INFO_8822E)) +#define BIT_GET_AC7_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_AC7_PKT_INFO_8822E) & BIT_MASK_AC7_PKT_INFO_8822E) +#define BIT_SET_AC7_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_AC7_PKT_INFO_8822E(x) | BIT_AC7_PKT_INFO_8822E(v)) + +#define BIT_QUEUE_MACID_AC_NOT_THE_SAME_V1_8822E BIT(15) + +#define BIT_SHIFT_GTAB_ID_V1_8822E 12 +#define BIT_MASK_GTAB_ID_V1_8822E 0x7 +#define BIT_GTAB_ID_V1_8822E(x) \ + (((x) & BIT_MASK_GTAB_ID_V1_8822E) << BIT_SHIFT_GTAB_ID_V1_8822E) +#define BITS_GTAB_ID_V1_8822E \ + (BIT_MASK_GTAB_ID_V1_8822E << BIT_SHIFT_GTAB_ID_V1_8822E) +#define BIT_CLEAR_GTAB_ID_V1_8822E(x) ((x) & (~BITS_GTAB_ID_V1_8822E)) +#define BIT_GET_GTAB_ID_V1_8822E(x) \ + (((x) >> BIT_SHIFT_GTAB_ID_V1_8822E) & BIT_MASK_GTAB_ID_V1_8822E) +#define BIT_SET_GTAB_ID_V1_8822E(x, v) \ + (BIT_CLEAR_GTAB_ID_V1_8822E(x) | BIT_GTAB_ID_V1_8822E(v)) + +#define BIT_SHIFT_AC6_PKT_INFO_8822E 0 +#define BIT_MASK_AC6_PKT_INFO_8822E 0xfff +#define BIT_AC6_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_AC6_PKT_INFO_8822E) << BIT_SHIFT_AC6_PKT_INFO_8822E) +#define BITS_AC6_PKT_INFO_8822E \ + (BIT_MASK_AC6_PKT_INFO_8822E << BIT_SHIFT_AC6_PKT_INFO_8822E) +#define BIT_CLEAR_AC6_PKT_INFO_8822E(x) ((x) & (~BITS_AC6_PKT_INFO_8822E)) +#define BIT_GET_AC6_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_AC6_PKT_INFO_8822E) & BIT_MASK_AC6_PKT_INFO_8822E) +#define BIT_SET_AC6_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_AC6_PKT_INFO_8822E(x) | BIT_AC6_PKT_INFO_8822E(v)) + +/* 2 REG_MGQ_HIQ_INFO_8822E */ + +#define BIT_SHIFT_HIQ_PKT_INFO_8822E 16 +#define BIT_MASK_HIQ_PKT_INFO_8822E 0xfff +#define BIT_HIQ_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_HIQ_PKT_INFO_8822E) << BIT_SHIFT_HIQ_PKT_INFO_8822E) +#define BITS_HIQ_PKT_INFO_8822E \ + (BIT_MASK_HIQ_PKT_INFO_8822E << BIT_SHIFT_HIQ_PKT_INFO_8822E) +#define BIT_CLEAR_HIQ_PKT_INFO_8822E(x) ((x) & (~BITS_HIQ_PKT_INFO_8822E)) +#define BIT_GET_HIQ_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_HIQ_PKT_INFO_8822E) & BIT_MASK_HIQ_PKT_INFO_8822E) +#define BIT_SET_HIQ_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_HIQ_PKT_INFO_8822E(x) | BIT_HIQ_PKT_INFO_8822E(v)) + +#define BIT_SHIFT_MGQ_PKT_INFO_8822E 0 +#define BIT_MASK_MGQ_PKT_INFO_8822E 0xfff +#define BIT_MGQ_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_MGQ_PKT_INFO_8822E) << BIT_SHIFT_MGQ_PKT_INFO_8822E) +#define BITS_MGQ_PKT_INFO_8822E \ + (BIT_MASK_MGQ_PKT_INFO_8822E << BIT_SHIFT_MGQ_PKT_INFO_8822E) +#define BIT_CLEAR_MGQ_PKT_INFO_8822E(x) ((x) & (~BITS_MGQ_PKT_INFO_8822E)) +#define BIT_GET_MGQ_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_PKT_INFO_8822E) & BIT_MASK_MGQ_PKT_INFO_8822E) +#define BIT_SET_MGQ_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_MGQ_PKT_INFO_8822E(x) | BIT_MGQ_PKT_INFO_8822E(v)) + +/* 2 REG_CMDQ_BCNQ_INFO_8822E */ + +#define BIT_SHIFT_CMDQ_PKT_INFO_8822E 16 +#define BIT_MASK_CMDQ_PKT_INFO_8822E 0xfff +#define BIT_CMDQ_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_CMDQ_PKT_INFO_8822E) << BIT_SHIFT_CMDQ_PKT_INFO_8822E) +#define BITS_CMDQ_PKT_INFO_8822E \ + (BIT_MASK_CMDQ_PKT_INFO_8822E << BIT_SHIFT_CMDQ_PKT_INFO_8822E) +#define BIT_CLEAR_CMDQ_PKT_INFO_8822E(x) ((x) & (~BITS_CMDQ_PKT_INFO_8822E)) +#define BIT_GET_CMDQ_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_CMDQ_PKT_INFO_8822E) & BIT_MASK_CMDQ_PKT_INFO_8822E) +#define BIT_SET_CMDQ_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_CMDQ_PKT_INFO_8822E(x) | BIT_CMDQ_PKT_INFO_8822E(v)) + +#define BIT_SHIFT_BCNQ_PKT_INFO_8822E 0 +#define BIT_MASK_BCNQ_PKT_INFO_8822E 0xfff +#define BIT_BCNQ_PKT_INFO_8822E(x) \ + (((x) & BIT_MASK_BCNQ_PKT_INFO_8822E) << BIT_SHIFT_BCNQ_PKT_INFO_8822E) +#define BITS_BCNQ_PKT_INFO_8822E \ + (BIT_MASK_BCNQ_PKT_INFO_8822E << BIT_SHIFT_BCNQ_PKT_INFO_8822E) +#define BIT_CLEAR_BCNQ_PKT_INFO_8822E(x) ((x) & (~BITS_BCNQ_PKT_INFO_8822E)) +#define BIT_GET_BCNQ_PKT_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_BCNQ_PKT_INFO_8822E) & BIT_MASK_BCNQ_PKT_INFO_8822E) +#define BIT_SET_BCNQ_PKT_INFO_8822E(x, v) \ + (BIT_CLEAR_BCNQ_PKT_INFO_8822E(x) | BIT_BCNQ_PKT_INFO_8822E(v)) + +/* 2 REG_LOOPBACK_OPTION_8822E */ +#define BIT_LOOPACK_FAST_EDCA_EN_8822E BIT(24) + +/* 2 REG_AESIV_SETTING_8822E */ + +#define BIT_SHIFT_AESIV_OFFSET_8822E 0 +#define BIT_MASK_AESIV_OFFSET_8822E 0xfff +#define BIT_AESIV_OFFSET_8822E(x) \ + (((x) & BIT_MASK_AESIV_OFFSET_8822E) << BIT_SHIFT_AESIV_OFFSET_8822E) +#define BITS_AESIV_OFFSET_8822E \ + (BIT_MASK_AESIV_OFFSET_8822E << BIT_SHIFT_AESIV_OFFSET_8822E) +#define BIT_CLEAR_AESIV_OFFSET_8822E(x) ((x) & (~BITS_AESIV_OFFSET_8822E)) +#define BIT_GET_AESIV_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_AESIV_OFFSET_8822E) & BIT_MASK_AESIV_OFFSET_8822E) +#define BIT_SET_AESIV_OFFSET_8822E(x, v) \ + (BIT_CLEAR_AESIV_OFFSET_8822E(x) | BIT_AESIV_OFFSET_8822E(v)) + +/* 2 REG_BF0_TIME_SETTING_8822E */ +#define BIT_BF0_TIMER_SET_8822E BIT(31) +#define BIT_BF0_TIMER_CLR_8822E BIT(30) +#define BIT_BF0_UPDATE_EN_8822E BIT(29) +#define BIT_BF0_TIMER_EN_8822E BIT(28) + +#define BIT_SHIFT_BF0_PRETIME_OVER_8822E 16 +#define BIT_MASK_BF0_PRETIME_OVER_8822E 0xfff +#define BIT_BF0_PRETIME_OVER_8822E(x) \ + (((x) & BIT_MASK_BF0_PRETIME_OVER_8822E) \ + << BIT_SHIFT_BF0_PRETIME_OVER_8822E) +#define BITS_BF0_PRETIME_OVER_8822E \ + (BIT_MASK_BF0_PRETIME_OVER_8822E << BIT_SHIFT_BF0_PRETIME_OVER_8822E) +#define BIT_CLEAR_BF0_PRETIME_OVER_8822E(x) \ + ((x) & (~BITS_BF0_PRETIME_OVER_8822E)) +#define BIT_GET_BF0_PRETIME_OVER_8822E(x) \ + (((x) >> BIT_SHIFT_BF0_PRETIME_OVER_8822E) & \ + BIT_MASK_BF0_PRETIME_OVER_8822E) +#define BIT_SET_BF0_PRETIME_OVER_8822E(x, v) \ + (BIT_CLEAR_BF0_PRETIME_OVER_8822E(x) | BIT_BF0_PRETIME_OVER_8822E(v)) + +#define BIT_SHIFT_BF0_LIFETIME_8822E 0 +#define BIT_MASK_BF0_LIFETIME_8822E 0xffff +#define BIT_BF0_LIFETIME_8822E(x) \ + (((x) & BIT_MASK_BF0_LIFETIME_8822E) << BIT_SHIFT_BF0_LIFETIME_8822E) +#define BITS_BF0_LIFETIME_8822E \ + (BIT_MASK_BF0_LIFETIME_8822E << BIT_SHIFT_BF0_LIFETIME_8822E) +#define BIT_CLEAR_BF0_LIFETIME_8822E(x) ((x) & (~BITS_BF0_LIFETIME_8822E)) +#define BIT_GET_BF0_LIFETIME_8822E(x) \ + (((x) >> BIT_SHIFT_BF0_LIFETIME_8822E) & BIT_MASK_BF0_LIFETIME_8822E) +#define BIT_SET_BF0_LIFETIME_8822E(x, v) \ + (BIT_CLEAR_BF0_LIFETIME_8822E(x) | BIT_BF0_LIFETIME_8822E(v)) + +/* 2 REG_BF1_TIME_SETTING_8822E */ +#define BIT_BF1_TIMER_SET_8822E BIT(31) +#define BIT_BF1_TIMER_CLR_8822E BIT(30) +#define BIT_BF1_UPDATE_EN_8822E BIT(29) +#define BIT_BF1_TIMER_EN_8822E BIT(28) + +#define BIT_SHIFT_BF1_PRETIME_OVER_8822E 16 +#define BIT_MASK_BF1_PRETIME_OVER_8822E 0xfff +#define BIT_BF1_PRETIME_OVER_8822E(x) \ + (((x) & BIT_MASK_BF1_PRETIME_OVER_8822E) \ + << BIT_SHIFT_BF1_PRETIME_OVER_8822E) +#define BITS_BF1_PRETIME_OVER_8822E \ + (BIT_MASK_BF1_PRETIME_OVER_8822E << BIT_SHIFT_BF1_PRETIME_OVER_8822E) +#define BIT_CLEAR_BF1_PRETIME_OVER_8822E(x) \ + ((x) & (~BITS_BF1_PRETIME_OVER_8822E)) +#define BIT_GET_BF1_PRETIME_OVER_8822E(x) \ + (((x) >> BIT_SHIFT_BF1_PRETIME_OVER_8822E) & \ + BIT_MASK_BF1_PRETIME_OVER_8822E) +#define BIT_SET_BF1_PRETIME_OVER_8822E(x, v) \ + (BIT_CLEAR_BF1_PRETIME_OVER_8822E(x) | BIT_BF1_PRETIME_OVER_8822E(v)) + +#define BIT_SHIFT_BF1_LIFETIME_8822E 0 +#define BIT_MASK_BF1_LIFETIME_8822E 0xffff +#define BIT_BF1_LIFETIME_8822E(x) \ + (((x) & BIT_MASK_BF1_LIFETIME_8822E) << BIT_SHIFT_BF1_LIFETIME_8822E) +#define BITS_BF1_LIFETIME_8822E \ + (BIT_MASK_BF1_LIFETIME_8822E << BIT_SHIFT_BF1_LIFETIME_8822E) +#define BIT_CLEAR_BF1_LIFETIME_8822E(x) ((x) & (~BITS_BF1_LIFETIME_8822E)) +#define BIT_GET_BF1_LIFETIME_8822E(x) \ + (((x) >> BIT_SHIFT_BF1_LIFETIME_8822E) & BIT_MASK_BF1_LIFETIME_8822E) +#define BIT_SET_BF1_LIFETIME_8822E(x, v) \ + (BIT_CLEAR_BF1_LIFETIME_8822E(x) | BIT_BF1_LIFETIME_8822E(v)) + +/* 2 REG_BF_TIMEOUT_EN_8822E */ +#define BIT_EN_VHT_LDPC_8822E BIT(9) +#define BIT_EN_HT_LDPC_8822E BIT(8) +#define BIT_BF1_TIMEOUT_EN_8822E BIT(1) +#define BIT_BF0_TIMEOUT_EN_8822E BIT(0) + +/* 2 REG_MACID_RELEASE0_8822E */ + +#define BIT_SHIFT_MACID31_0_RELEASE_8822E 0 +#define BIT_MASK_MACID31_0_RELEASE_8822E 0xffffffffL +#define BIT_MACID31_0_RELEASE_8822E(x) \ + (((x) & BIT_MASK_MACID31_0_RELEASE_8822E) \ + << BIT_SHIFT_MACID31_0_RELEASE_8822E) +#define BITS_MACID31_0_RELEASE_8822E \ + (BIT_MASK_MACID31_0_RELEASE_8822E << BIT_SHIFT_MACID31_0_RELEASE_8822E) +#define BIT_CLEAR_MACID31_0_RELEASE_8822E(x) \ + ((x) & (~BITS_MACID31_0_RELEASE_8822E)) +#define BIT_GET_MACID31_0_RELEASE_8822E(x) \ + (((x) >> BIT_SHIFT_MACID31_0_RELEASE_8822E) & \ + BIT_MASK_MACID31_0_RELEASE_8822E) +#define BIT_SET_MACID31_0_RELEASE_8822E(x, v) \ + (BIT_CLEAR_MACID31_0_RELEASE_8822E(x) | BIT_MACID31_0_RELEASE_8822E(v)) + +/* 2 REG_MACID_RELEASE1_8822E */ + +#define BIT_SHIFT_MACID63_32_RELEASE_8822E 0 +#define BIT_MASK_MACID63_32_RELEASE_8822E 0xffffffffL +#define BIT_MACID63_32_RELEASE_8822E(x) \ + (((x) & BIT_MASK_MACID63_32_RELEASE_8822E) \ + << BIT_SHIFT_MACID63_32_RELEASE_8822E) +#define BITS_MACID63_32_RELEASE_8822E \ + (BIT_MASK_MACID63_32_RELEASE_8822E \ + << BIT_SHIFT_MACID63_32_RELEASE_8822E) +#define BIT_CLEAR_MACID63_32_RELEASE_8822E(x) \ + ((x) & (~BITS_MACID63_32_RELEASE_8822E)) +#define BIT_GET_MACID63_32_RELEASE_8822E(x) \ + (((x) >> BIT_SHIFT_MACID63_32_RELEASE_8822E) & \ + BIT_MASK_MACID63_32_RELEASE_8822E) +#define BIT_SET_MACID63_32_RELEASE_8822E(x, v) \ + (BIT_CLEAR_MACID63_32_RELEASE_8822E(x) | \ + BIT_MACID63_32_RELEASE_8822E(v)) + +/* 2 REG_MACID_RELEASE2_8822E */ + +#define BIT_SHIFT_MACID95_64_RELEASE_8822E 0 +#define BIT_MASK_MACID95_64_RELEASE_8822E 0xffffffffL +#define BIT_MACID95_64_RELEASE_8822E(x) \ + (((x) & BIT_MASK_MACID95_64_RELEASE_8822E) \ + << BIT_SHIFT_MACID95_64_RELEASE_8822E) +#define BITS_MACID95_64_RELEASE_8822E \ + (BIT_MASK_MACID95_64_RELEASE_8822E \ + << BIT_SHIFT_MACID95_64_RELEASE_8822E) +#define BIT_CLEAR_MACID95_64_RELEASE_8822E(x) \ + ((x) & (~BITS_MACID95_64_RELEASE_8822E)) +#define BIT_GET_MACID95_64_RELEASE_8822E(x) \ + (((x) >> BIT_SHIFT_MACID95_64_RELEASE_8822E) & \ + BIT_MASK_MACID95_64_RELEASE_8822E) +#define BIT_SET_MACID95_64_RELEASE_8822E(x, v) \ + (BIT_CLEAR_MACID95_64_RELEASE_8822E(x) | \ + BIT_MACID95_64_RELEASE_8822E(v)) + +/* 2 REG_MACID_RELEASE3_8822E */ + +#define BIT_SHIFT_MACID127_96_RELEASE_8822E 0 +#define BIT_MASK_MACID127_96_RELEASE_8822E 0xffffffffL +#define BIT_MACID127_96_RELEASE_8822E(x) \ + (((x) & BIT_MASK_MACID127_96_RELEASE_8822E) \ + << BIT_SHIFT_MACID127_96_RELEASE_8822E) +#define BITS_MACID127_96_RELEASE_8822E \ + (BIT_MASK_MACID127_96_RELEASE_8822E \ + << BIT_SHIFT_MACID127_96_RELEASE_8822E) +#define BIT_CLEAR_MACID127_96_RELEASE_8822E(x) \ + ((x) & (~BITS_MACID127_96_RELEASE_8822E)) +#define BIT_GET_MACID127_96_RELEASE_8822E(x) \ + (((x) >> BIT_SHIFT_MACID127_96_RELEASE_8822E) & \ + BIT_MASK_MACID127_96_RELEASE_8822E) +#define BIT_SET_MACID127_96_RELEASE_8822E(x, v) \ + (BIT_CLEAR_MACID127_96_RELEASE_8822E(x) | \ + BIT_MACID127_96_RELEASE_8822E(v)) + +/* 2 REG_MACID_RELEASE_SETTING_8822E */ +#define BIT_MACID_VALUE_8822E BIT(7) + +#define BIT_SHIFT_MACID_OFFSET_8822E 0 +#define BIT_MASK_MACID_OFFSET_8822E 0x7f +#define BIT_MACID_OFFSET_8822E(x) \ + (((x) & BIT_MASK_MACID_OFFSET_8822E) << BIT_SHIFT_MACID_OFFSET_8822E) +#define BITS_MACID_OFFSET_8822E \ + (BIT_MASK_MACID_OFFSET_8822E << BIT_SHIFT_MACID_OFFSET_8822E) +#define BIT_CLEAR_MACID_OFFSET_8822E(x) ((x) & (~BITS_MACID_OFFSET_8822E)) +#define BIT_GET_MACID_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_MACID_OFFSET_8822E) & BIT_MASK_MACID_OFFSET_8822E) +#define BIT_SET_MACID_OFFSET_8822E(x, v) \ + (BIT_CLEAR_MACID_OFFSET_8822E(x) | BIT_MACID_OFFSET_8822E(v)) + +/* 2 REG_FAST_EDCA_VOVI_SETTING_8822E */ + +#define BIT_SHIFT_VI_FAST_EDCA_TO_8822E 24 +#define BIT_MASK_VI_FAST_EDCA_TO_8822E 0xff +#define BIT_VI_FAST_EDCA_TO_8822E(x) \ + (((x) & BIT_MASK_VI_FAST_EDCA_TO_8822E) \ + << BIT_SHIFT_VI_FAST_EDCA_TO_8822E) +#define BITS_VI_FAST_EDCA_TO_8822E \ + (BIT_MASK_VI_FAST_EDCA_TO_8822E << BIT_SHIFT_VI_FAST_EDCA_TO_8822E) +#define BIT_CLEAR_VI_FAST_EDCA_TO_8822E(x) ((x) & (~BITS_VI_FAST_EDCA_TO_8822E)) +#define BIT_GET_VI_FAST_EDCA_TO_8822E(x) \ + (((x) >> BIT_SHIFT_VI_FAST_EDCA_TO_8822E) & \ + BIT_MASK_VI_FAST_EDCA_TO_8822E) +#define BIT_SET_VI_FAST_EDCA_TO_8822E(x, v) \ + (BIT_CLEAR_VI_FAST_EDCA_TO_8822E(x) | BIT_VI_FAST_EDCA_TO_8822E(v)) + +#define BIT_VI_THRESHOLD_SEL_8822E BIT(23) + +#define BIT_SHIFT_VI_FAST_EDCA_PKT_TH_8822E 16 +#define BIT_MASK_VI_FAST_EDCA_PKT_TH_8822E 0x7f +#define BIT_VI_FAST_EDCA_PKT_TH_8822E(x) \ + (((x) & BIT_MASK_VI_FAST_EDCA_PKT_TH_8822E) \ + << BIT_SHIFT_VI_FAST_EDCA_PKT_TH_8822E) +#define BITS_VI_FAST_EDCA_PKT_TH_8822E \ + (BIT_MASK_VI_FAST_EDCA_PKT_TH_8822E \ + << BIT_SHIFT_VI_FAST_EDCA_PKT_TH_8822E) +#define BIT_CLEAR_VI_FAST_EDCA_PKT_TH_8822E(x) \ + ((x) & (~BITS_VI_FAST_EDCA_PKT_TH_8822E)) +#define BIT_GET_VI_FAST_EDCA_PKT_TH_8822E(x) \ + (((x) >> BIT_SHIFT_VI_FAST_EDCA_PKT_TH_8822E) & \ + BIT_MASK_VI_FAST_EDCA_PKT_TH_8822E) +#define BIT_SET_VI_FAST_EDCA_PKT_TH_8822E(x, v) \ + (BIT_CLEAR_VI_FAST_EDCA_PKT_TH_8822E(x) | \ + BIT_VI_FAST_EDCA_PKT_TH_8822E(v)) + +#define BIT_SHIFT_VO_FAST_EDCA_TO_8822E 8 +#define BIT_MASK_VO_FAST_EDCA_TO_8822E 0xff +#define BIT_VO_FAST_EDCA_TO_8822E(x) \ + (((x) & BIT_MASK_VO_FAST_EDCA_TO_8822E) \ + << BIT_SHIFT_VO_FAST_EDCA_TO_8822E) +#define BITS_VO_FAST_EDCA_TO_8822E \ + (BIT_MASK_VO_FAST_EDCA_TO_8822E << BIT_SHIFT_VO_FAST_EDCA_TO_8822E) +#define BIT_CLEAR_VO_FAST_EDCA_TO_8822E(x) ((x) & (~BITS_VO_FAST_EDCA_TO_8822E)) +#define BIT_GET_VO_FAST_EDCA_TO_8822E(x) \ + (((x) >> BIT_SHIFT_VO_FAST_EDCA_TO_8822E) & \ + BIT_MASK_VO_FAST_EDCA_TO_8822E) +#define BIT_SET_VO_FAST_EDCA_TO_8822E(x, v) \ + (BIT_CLEAR_VO_FAST_EDCA_TO_8822E(x) | BIT_VO_FAST_EDCA_TO_8822E(v)) + +#define BIT_VO_THRESHOLD_SEL_8822E BIT(7) + +#define BIT_SHIFT_VO_FAST_EDCA_PKT_TH_8822E 0 +#define BIT_MASK_VO_FAST_EDCA_PKT_TH_8822E 0x7f +#define BIT_VO_FAST_EDCA_PKT_TH_8822E(x) \ + (((x) & BIT_MASK_VO_FAST_EDCA_PKT_TH_8822E) \ + << BIT_SHIFT_VO_FAST_EDCA_PKT_TH_8822E) +#define BITS_VO_FAST_EDCA_PKT_TH_8822E \ + (BIT_MASK_VO_FAST_EDCA_PKT_TH_8822E \ + << BIT_SHIFT_VO_FAST_EDCA_PKT_TH_8822E) +#define BIT_CLEAR_VO_FAST_EDCA_PKT_TH_8822E(x) \ + ((x) & (~BITS_VO_FAST_EDCA_PKT_TH_8822E)) +#define BIT_GET_VO_FAST_EDCA_PKT_TH_8822E(x) \ + (((x) >> BIT_SHIFT_VO_FAST_EDCA_PKT_TH_8822E) & \ + BIT_MASK_VO_FAST_EDCA_PKT_TH_8822E) +#define BIT_SET_VO_FAST_EDCA_PKT_TH_8822E(x, v) \ + (BIT_CLEAR_VO_FAST_EDCA_PKT_TH_8822E(x) | \ + BIT_VO_FAST_EDCA_PKT_TH_8822E(v)) + +/* 2 REG_FAST_EDCA_BEBK_SETTING_8822E */ + +#define BIT_SHIFT_BK_FAST_EDCA_TO_8822E 24 +#define BIT_MASK_BK_FAST_EDCA_TO_8822E 0xff +#define BIT_BK_FAST_EDCA_TO_8822E(x) \ + (((x) & BIT_MASK_BK_FAST_EDCA_TO_8822E) \ + << BIT_SHIFT_BK_FAST_EDCA_TO_8822E) +#define BITS_BK_FAST_EDCA_TO_8822E \ + (BIT_MASK_BK_FAST_EDCA_TO_8822E << BIT_SHIFT_BK_FAST_EDCA_TO_8822E) +#define BIT_CLEAR_BK_FAST_EDCA_TO_8822E(x) ((x) & (~BITS_BK_FAST_EDCA_TO_8822E)) +#define BIT_GET_BK_FAST_EDCA_TO_8822E(x) \ + (((x) >> BIT_SHIFT_BK_FAST_EDCA_TO_8822E) & \ + BIT_MASK_BK_FAST_EDCA_TO_8822E) +#define BIT_SET_BK_FAST_EDCA_TO_8822E(x, v) \ + (BIT_CLEAR_BK_FAST_EDCA_TO_8822E(x) | BIT_BK_FAST_EDCA_TO_8822E(v)) + +#define BIT_BK_THRESHOLD_SEL_8822E BIT(23) + +#define BIT_SHIFT_BK_FAST_EDCA_PKT_TH_8822E 16 +#define BIT_MASK_BK_FAST_EDCA_PKT_TH_8822E 0x7f +#define BIT_BK_FAST_EDCA_PKT_TH_8822E(x) \ + (((x) & BIT_MASK_BK_FAST_EDCA_PKT_TH_8822E) \ + << BIT_SHIFT_BK_FAST_EDCA_PKT_TH_8822E) +#define BITS_BK_FAST_EDCA_PKT_TH_8822E \ + (BIT_MASK_BK_FAST_EDCA_PKT_TH_8822E \ + << BIT_SHIFT_BK_FAST_EDCA_PKT_TH_8822E) +#define BIT_CLEAR_BK_FAST_EDCA_PKT_TH_8822E(x) \ + ((x) & (~BITS_BK_FAST_EDCA_PKT_TH_8822E)) +#define BIT_GET_BK_FAST_EDCA_PKT_TH_8822E(x) \ + (((x) >> BIT_SHIFT_BK_FAST_EDCA_PKT_TH_8822E) & \ + BIT_MASK_BK_FAST_EDCA_PKT_TH_8822E) +#define BIT_SET_BK_FAST_EDCA_PKT_TH_8822E(x, v) \ + (BIT_CLEAR_BK_FAST_EDCA_PKT_TH_8822E(x) | \ + BIT_BK_FAST_EDCA_PKT_TH_8822E(v)) + +#define BIT_SHIFT_BE_FAST_EDCA_TO_8822E 8 +#define BIT_MASK_BE_FAST_EDCA_TO_8822E 0xff +#define BIT_BE_FAST_EDCA_TO_8822E(x) \ + (((x) & BIT_MASK_BE_FAST_EDCA_TO_8822E) \ + << BIT_SHIFT_BE_FAST_EDCA_TO_8822E) +#define BITS_BE_FAST_EDCA_TO_8822E \ + (BIT_MASK_BE_FAST_EDCA_TO_8822E << BIT_SHIFT_BE_FAST_EDCA_TO_8822E) +#define BIT_CLEAR_BE_FAST_EDCA_TO_8822E(x) ((x) & (~BITS_BE_FAST_EDCA_TO_8822E)) +#define BIT_GET_BE_FAST_EDCA_TO_8822E(x) \ + (((x) >> BIT_SHIFT_BE_FAST_EDCA_TO_8822E) & \ + BIT_MASK_BE_FAST_EDCA_TO_8822E) +#define BIT_SET_BE_FAST_EDCA_TO_8822E(x, v) \ + (BIT_CLEAR_BE_FAST_EDCA_TO_8822E(x) | BIT_BE_FAST_EDCA_TO_8822E(v)) + +#define BIT_BE_THRESHOLD_SEL_8822E BIT(7) + +#define BIT_SHIFT_BE_FAST_EDCA_PKT_TH_8822E 0 +#define BIT_MASK_BE_FAST_EDCA_PKT_TH_8822E 0x7f +#define BIT_BE_FAST_EDCA_PKT_TH_8822E(x) \ + (((x) & BIT_MASK_BE_FAST_EDCA_PKT_TH_8822E) \ + << BIT_SHIFT_BE_FAST_EDCA_PKT_TH_8822E) +#define BITS_BE_FAST_EDCA_PKT_TH_8822E \ + (BIT_MASK_BE_FAST_EDCA_PKT_TH_8822E \ + << BIT_SHIFT_BE_FAST_EDCA_PKT_TH_8822E) +#define BIT_CLEAR_BE_FAST_EDCA_PKT_TH_8822E(x) \ + ((x) & (~BITS_BE_FAST_EDCA_PKT_TH_8822E)) +#define BIT_GET_BE_FAST_EDCA_PKT_TH_8822E(x) \ + (((x) >> BIT_SHIFT_BE_FAST_EDCA_PKT_TH_8822E) & \ + BIT_MASK_BE_FAST_EDCA_PKT_TH_8822E) +#define BIT_SET_BE_FAST_EDCA_PKT_TH_8822E(x, v) \ + (BIT_CLEAR_BE_FAST_EDCA_PKT_TH_8822E(x) | \ + BIT_BE_FAST_EDCA_PKT_TH_8822E(v)) + +/* 2 REG_MACID_DROP0_8822E */ + +#define BIT_SHIFT_MACID31_0_DROP_8822E 0 +#define BIT_MASK_MACID31_0_DROP_8822E 0xffffffffL +#define BIT_MACID31_0_DROP_8822E(x) \ + (((x) & BIT_MASK_MACID31_0_DROP_8822E) \ + << BIT_SHIFT_MACID31_0_DROP_8822E) +#define BITS_MACID31_0_DROP_8822E \ + (BIT_MASK_MACID31_0_DROP_8822E << BIT_SHIFT_MACID31_0_DROP_8822E) +#define BIT_CLEAR_MACID31_0_DROP_8822E(x) ((x) & (~BITS_MACID31_0_DROP_8822E)) +#define BIT_GET_MACID31_0_DROP_8822E(x) \ + (((x) >> BIT_SHIFT_MACID31_0_DROP_8822E) & \ + BIT_MASK_MACID31_0_DROP_8822E) +#define BIT_SET_MACID31_0_DROP_8822E(x, v) \ + (BIT_CLEAR_MACID31_0_DROP_8822E(x) | BIT_MACID31_0_DROP_8822E(v)) + +/* 2 REG_MACID_DROP1_8822E */ + +#define BIT_SHIFT_MACID63_32_DROP_8822E 0 +#define BIT_MASK_MACID63_32_DROP_8822E 0xffffffffL +#define BIT_MACID63_32_DROP_8822E(x) \ + (((x) & BIT_MASK_MACID63_32_DROP_8822E) \ + << BIT_SHIFT_MACID63_32_DROP_8822E) +#define BITS_MACID63_32_DROP_8822E \ + (BIT_MASK_MACID63_32_DROP_8822E << BIT_SHIFT_MACID63_32_DROP_8822E) +#define BIT_CLEAR_MACID63_32_DROP_8822E(x) ((x) & (~BITS_MACID63_32_DROP_8822E)) +#define BIT_GET_MACID63_32_DROP_8822E(x) \ + (((x) >> BIT_SHIFT_MACID63_32_DROP_8822E) & \ + BIT_MASK_MACID63_32_DROP_8822E) +#define BIT_SET_MACID63_32_DROP_8822E(x, v) \ + (BIT_CLEAR_MACID63_32_DROP_8822E(x) | BIT_MACID63_32_DROP_8822E(v)) + +/* 2 REG_MACID_DROP2_8822E */ + +#define BIT_SHIFT_MACID95_64_DROP_8822E 0 +#define BIT_MASK_MACID95_64_DROP_8822E 0xffffffffL +#define BIT_MACID95_64_DROP_8822E(x) \ + (((x) & BIT_MASK_MACID95_64_DROP_8822E) \ + << BIT_SHIFT_MACID95_64_DROP_8822E) +#define BITS_MACID95_64_DROP_8822E \ + (BIT_MASK_MACID95_64_DROP_8822E << BIT_SHIFT_MACID95_64_DROP_8822E) +#define BIT_CLEAR_MACID95_64_DROP_8822E(x) ((x) & (~BITS_MACID95_64_DROP_8822E)) +#define BIT_GET_MACID95_64_DROP_8822E(x) \ + (((x) >> BIT_SHIFT_MACID95_64_DROP_8822E) & \ + BIT_MASK_MACID95_64_DROP_8822E) +#define BIT_SET_MACID95_64_DROP_8822E(x, v) \ + (BIT_CLEAR_MACID95_64_DROP_8822E(x) | BIT_MACID95_64_DROP_8822E(v)) + +/* 2 REG_MACID_DROP3_8822E */ + +#define BIT_SHIFT_MACID127_96_DROP_8822E 0 +#define BIT_MASK_MACID127_96_DROP_8822E 0xffffffffL +#define BIT_MACID127_96_DROP_8822E(x) \ + (((x) & BIT_MASK_MACID127_96_DROP_8822E) \ + << BIT_SHIFT_MACID127_96_DROP_8822E) +#define BITS_MACID127_96_DROP_8822E \ + (BIT_MASK_MACID127_96_DROP_8822E << BIT_SHIFT_MACID127_96_DROP_8822E) +#define BIT_CLEAR_MACID127_96_DROP_8822E(x) \ + ((x) & (~BITS_MACID127_96_DROP_8822E)) +#define BIT_GET_MACID127_96_DROP_8822E(x) \ + (((x) >> BIT_SHIFT_MACID127_96_DROP_8822E) & \ + BIT_MASK_MACID127_96_DROP_8822E) +#define BIT_SET_MACID127_96_DROP_8822E(x, v) \ + (BIT_CLEAR_MACID127_96_DROP_8822E(x) | BIT_MACID127_96_DROP_8822E(v)) + +/* 2 REG_R_MACID_RELEASE_SUCCESS_0_8822E */ + +#define BIT_SHIFT_R_MACID_RELEASE_SUCCESS_0_8822E 0 +#define BIT_MASK_R_MACID_RELEASE_SUCCESS_0_8822E 0xffffffffL +#define BIT_R_MACID_RELEASE_SUCCESS_0_8822E(x) \ + (((x) & BIT_MASK_R_MACID_RELEASE_SUCCESS_0_8822E) \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_0_8822E) +#define BITS_R_MACID_RELEASE_SUCCESS_0_8822E \ + (BIT_MASK_R_MACID_RELEASE_SUCCESS_0_8822E \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_0_8822E) +#define BIT_CLEAR_R_MACID_RELEASE_SUCCESS_0_8822E(x) \ + ((x) & (~BITS_R_MACID_RELEASE_SUCCESS_0_8822E)) +#define BIT_GET_R_MACID_RELEASE_SUCCESS_0_8822E(x) \ + (((x) >> BIT_SHIFT_R_MACID_RELEASE_SUCCESS_0_8822E) & \ + BIT_MASK_R_MACID_RELEASE_SUCCESS_0_8822E) +#define BIT_SET_R_MACID_RELEASE_SUCCESS_0_8822E(x, v) \ + (BIT_CLEAR_R_MACID_RELEASE_SUCCESS_0_8822E(x) | \ + BIT_R_MACID_RELEASE_SUCCESS_0_8822E(v)) + +/* 2 REG_R_MACID_RELEASE_SUCCESS_1_8822E */ + +#define BIT_SHIFT_R_MACID_RELEASE_SUCCESS_1_8822E 0 +#define BIT_MASK_R_MACID_RELEASE_SUCCESS_1_8822E 0xffffffffL +#define BIT_R_MACID_RELEASE_SUCCESS_1_8822E(x) \ + (((x) & BIT_MASK_R_MACID_RELEASE_SUCCESS_1_8822E) \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_1_8822E) +#define BITS_R_MACID_RELEASE_SUCCESS_1_8822E \ + (BIT_MASK_R_MACID_RELEASE_SUCCESS_1_8822E \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_1_8822E) +#define BIT_CLEAR_R_MACID_RELEASE_SUCCESS_1_8822E(x) \ + ((x) & (~BITS_R_MACID_RELEASE_SUCCESS_1_8822E)) +#define BIT_GET_R_MACID_RELEASE_SUCCESS_1_8822E(x) \ + (((x) >> BIT_SHIFT_R_MACID_RELEASE_SUCCESS_1_8822E) & \ + BIT_MASK_R_MACID_RELEASE_SUCCESS_1_8822E) +#define BIT_SET_R_MACID_RELEASE_SUCCESS_1_8822E(x, v) \ + (BIT_CLEAR_R_MACID_RELEASE_SUCCESS_1_8822E(x) | \ + BIT_R_MACID_RELEASE_SUCCESS_1_8822E(v)) + +/* 2 REG_R_MACID_RELEASE_SUCCESS_2_8822E */ + +#define BIT_SHIFT_R_MACID_RELEASE_SUCCESS_2_8822E 0 +#define BIT_MASK_R_MACID_RELEASE_SUCCESS_2_8822E 0xffffffffL +#define BIT_R_MACID_RELEASE_SUCCESS_2_8822E(x) \ + (((x) & BIT_MASK_R_MACID_RELEASE_SUCCESS_2_8822E) \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_2_8822E) +#define BITS_R_MACID_RELEASE_SUCCESS_2_8822E \ + (BIT_MASK_R_MACID_RELEASE_SUCCESS_2_8822E \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_2_8822E) +#define BIT_CLEAR_R_MACID_RELEASE_SUCCESS_2_8822E(x) \ + ((x) & (~BITS_R_MACID_RELEASE_SUCCESS_2_8822E)) +#define BIT_GET_R_MACID_RELEASE_SUCCESS_2_8822E(x) \ + (((x) >> BIT_SHIFT_R_MACID_RELEASE_SUCCESS_2_8822E) & \ + BIT_MASK_R_MACID_RELEASE_SUCCESS_2_8822E) +#define BIT_SET_R_MACID_RELEASE_SUCCESS_2_8822E(x, v) \ + (BIT_CLEAR_R_MACID_RELEASE_SUCCESS_2_8822E(x) | \ + BIT_R_MACID_RELEASE_SUCCESS_2_8822E(v)) + +/* 2 REG_R_MACID_RELEASE_SUCCESS_3_8822E */ + +#define BIT_SHIFT_R_MACID_RELEASE_SUCCESS_3_8822E 0 +#define BIT_MASK_R_MACID_RELEASE_SUCCESS_3_8822E 0xffffffffL +#define BIT_R_MACID_RELEASE_SUCCESS_3_8822E(x) \ + (((x) & BIT_MASK_R_MACID_RELEASE_SUCCESS_3_8822E) \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_3_8822E) +#define BITS_R_MACID_RELEASE_SUCCESS_3_8822E \ + (BIT_MASK_R_MACID_RELEASE_SUCCESS_3_8822E \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_3_8822E) +#define BIT_CLEAR_R_MACID_RELEASE_SUCCESS_3_8822E(x) \ + ((x) & (~BITS_R_MACID_RELEASE_SUCCESS_3_8822E)) +#define BIT_GET_R_MACID_RELEASE_SUCCESS_3_8822E(x) \ + (((x) >> BIT_SHIFT_R_MACID_RELEASE_SUCCESS_3_8822E) & \ + BIT_MASK_R_MACID_RELEASE_SUCCESS_3_8822E) +#define BIT_SET_R_MACID_RELEASE_SUCCESS_3_8822E(x, v) \ + (BIT_CLEAR_R_MACID_RELEASE_SUCCESS_3_8822E(x) | \ + BIT_R_MACID_RELEASE_SUCCESS_3_8822E(v)) + +/* 2 REG_MGQ_FIFO_WRITE_POINTER_8822E */ +#define BIT_MGQ_FIFO_OV_8822E BIT(7) +#define BIT_MGQ_FIFO_WPTR_ERROR_8822E BIT(6) +#define BIT_EN_MGQ_FIFO_LIFETIME_8822E BIT(5) + +#define BIT_SHIFT_MGQ_FIFO_WPTR_8822E 0 +#define BIT_MASK_MGQ_FIFO_WPTR_8822E 0x1f +#define BIT_MGQ_FIFO_WPTR_8822E(x) \ + (((x) & BIT_MASK_MGQ_FIFO_WPTR_8822E) << BIT_SHIFT_MGQ_FIFO_WPTR_8822E) +#define BITS_MGQ_FIFO_WPTR_8822E \ + (BIT_MASK_MGQ_FIFO_WPTR_8822E << BIT_SHIFT_MGQ_FIFO_WPTR_8822E) +#define BIT_CLEAR_MGQ_FIFO_WPTR_8822E(x) ((x) & (~BITS_MGQ_FIFO_WPTR_8822E)) +#define BIT_GET_MGQ_FIFO_WPTR_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_FIFO_WPTR_8822E) & BIT_MASK_MGQ_FIFO_WPTR_8822E) +#define BIT_SET_MGQ_FIFO_WPTR_8822E(x, v) \ + (BIT_CLEAR_MGQ_FIFO_WPTR_8822E(x) | BIT_MGQ_FIFO_WPTR_8822E(v)) + +/* 2 REG_MGQ_FIFO_READ_POINTER_8822E */ + +#define BIT_SHIFT_MGQ_FIFO_SIZE_8822E 14 +#define BIT_MASK_MGQ_FIFO_SIZE_8822E 0x3 +#define BIT_MGQ_FIFO_SIZE_8822E(x) \ + (((x) & BIT_MASK_MGQ_FIFO_SIZE_8822E) << BIT_SHIFT_MGQ_FIFO_SIZE_8822E) +#define BITS_MGQ_FIFO_SIZE_8822E \ + (BIT_MASK_MGQ_FIFO_SIZE_8822E << BIT_SHIFT_MGQ_FIFO_SIZE_8822E) +#define BIT_CLEAR_MGQ_FIFO_SIZE_8822E(x) ((x) & (~BITS_MGQ_FIFO_SIZE_8822E)) +#define BIT_GET_MGQ_FIFO_SIZE_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_FIFO_SIZE_8822E) & BIT_MASK_MGQ_FIFO_SIZE_8822E) +#define BIT_SET_MGQ_FIFO_SIZE_8822E(x, v) \ + (BIT_CLEAR_MGQ_FIFO_SIZE_8822E(x) | BIT_MGQ_FIFO_SIZE_8822E(v)) + +#define BIT_MGQ_FIFO_PAUSE_8822E BIT(13) + +#define BIT_SHIFT_MGQ_FIFO_RPTR_8822E 8 +#define BIT_MASK_MGQ_FIFO_RPTR_8822E 0x1f +#define BIT_MGQ_FIFO_RPTR_8822E(x) \ + (((x) & BIT_MASK_MGQ_FIFO_RPTR_8822E) << BIT_SHIFT_MGQ_FIFO_RPTR_8822E) +#define BITS_MGQ_FIFO_RPTR_8822E \ + (BIT_MASK_MGQ_FIFO_RPTR_8822E << BIT_SHIFT_MGQ_FIFO_RPTR_8822E) +#define BIT_CLEAR_MGQ_FIFO_RPTR_8822E(x) ((x) & (~BITS_MGQ_FIFO_RPTR_8822E)) +#define BIT_GET_MGQ_FIFO_RPTR_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_FIFO_RPTR_8822E) & BIT_MASK_MGQ_FIFO_RPTR_8822E) +#define BIT_SET_MGQ_FIFO_RPTR_8822E(x, v) \ + (BIT_CLEAR_MGQ_FIFO_RPTR_8822E(x) | BIT_MGQ_FIFO_RPTR_8822E(v)) + +/* 2 REG_MGQ_FIFO_ENABLE_8822E */ +#define BIT_MGQ_FIFO_EN_8822E BIT(15) + +#define BIT_SHIFT_MGQ_FIFO_PG_SIZE_8822E 12 +#define BIT_MASK_MGQ_FIFO_PG_SIZE_8822E 0x7 +#define BIT_MGQ_FIFO_PG_SIZE_8822E(x) \ + (((x) & BIT_MASK_MGQ_FIFO_PG_SIZE_8822E) \ + << BIT_SHIFT_MGQ_FIFO_PG_SIZE_8822E) +#define BITS_MGQ_FIFO_PG_SIZE_8822E \ + (BIT_MASK_MGQ_FIFO_PG_SIZE_8822E << BIT_SHIFT_MGQ_FIFO_PG_SIZE_8822E) +#define BIT_CLEAR_MGQ_FIFO_PG_SIZE_8822E(x) \ + ((x) & (~BITS_MGQ_FIFO_PG_SIZE_8822E)) +#define BIT_GET_MGQ_FIFO_PG_SIZE_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_FIFO_PG_SIZE_8822E) & \ + BIT_MASK_MGQ_FIFO_PG_SIZE_8822E) +#define BIT_SET_MGQ_FIFO_PG_SIZE_8822E(x, v) \ + (BIT_CLEAR_MGQ_FIFO_PG_SIZE_8822E(x) | BIT_MGQ_FIFO_PG_SIZE_8822E(v)) + +#define BIT_SHIFT_MGQ_FIFO_START_PG_8822E 0 +#define BIT_MASK_MGQ_FIFO_START_PG_8822E 0xfff +#define BIT_MGQ_FIFO_START_PG_8822E(x) \ + (((x) & BIT_MASK_MGQ_FIFO_START_PG_8822E) \ + << BIT_SHIFT_MGQ_FIFO_START_PG_8822E) +#define BITS_MGQ_FIFO_START_PG_8822E \ + (BIT_MASK_MGQ_FIFO_START_PG_8822E << BIT_SHIFT_MGQ_FIFO_START_PG_8822E) +#define BIT_CLEAR_MGQ_FIFO_START_PG_8822E(x) \ + ((x) & (~BITS_MGQ_FIFO_START_PG_8822E)) +#define BIT_GET_MGQ_FIFO_START_PG_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_FIFO_START_PG_8822E) & \ + BIT_MASK_MGQ_FIFO_START_PG_8822E) +#define BIT_SET_MGQ_FIFO_START_PG_8822E(x, v) \ + (BIT_CLEAR_MGQ_FIFO_START_PG_8822E(x) | BIT_MGQ_FIFO_START_PG_8822E(v)) + +/* 2 REG_MGQ_FIFO_RELEASE_INT_MASK_8822E */ + +#define BIT_SHIFT_MGQ_FIFO_REL_INT_MASK_8822E 0 +#define BIT_MASK_MGQ_FIFO_REL_INT_MASK_8822E 0xffff +#define BIT_MGQ_FIFO_REL_INT_MASK_8822E(x) \ + (((x) & BIT_MASK_MGQ_FIFO_REL_INT_MASK_8822E) \ + << BIT_SHIFT_MGQ_FIFO_REL_INT_MASK_8822E) +#define BITS_MGQ_FIFO_REL_INT_MASK_8822E \ + (BIT_MASK_MGQ_FIFO_REL_INT_MASK_8822E \ + << BIT_SHIFT_MGQ_FIFO_REL_INT_MASK_8822E) +#define BIT_CLEAR_MGQ_FIFO_REL_INT_MASK_8822E(x) \ + ((x) & (~BITS_MGQ_FIFO_REL_INT_MASK_8822E)) +#define BIT_GET_MGQ_FIFO_REL_INT_MASK_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_FIFO_REL_INT_MASK_8822E) & \ + BIT_MASK_MGQ_FIFO_REL_INT_MASK_8822E) +#define BIT_SET_MGQ_FIFO_REL_INT_MASK_8822E(x, v) \ + (BIT_CLEAR_MGQ_FIFO_REL_INT_MASK_8822E(x) | \ + BIT_MGQ_FIFO_REL_INT_MASK_8822E(v)) + +/* 2 REG_MGQ_FIFO_RELEASE_INT_FLAG_8822E */ + +#define BIT_SHIFT_MGQ_FIFO_REL_INT_FLAG_8822E 0 +#define BIT_MASK_MGQ_FIFO_REL_INT_FLAG_8822E 0xffff +#define BIT_MGQ_FIFO_REL_INT_FLAG_8822E(x) \ + (((x) & BIT_MASK_MGQ_FIFO_REL_INT_FLAG_8822E) \ + << BIT_SHIFT_MGQ_FIFO_REL_INT_FLAG_8822E) +#define BITS_MGQ_FIFO_REL_INT_FLAG_8822E \ + (BIT_MASK_MGQ_FIFO_REL_INT_FLAG_8822E \ + << BIT_SHIFT_MGQ_FIFO_REL_INT_FLAG_8822E) +#define BIT_CLEAR_MGQ_FIFO_REL_INT_FLAG_8822E(x) \ + ((x) & (~BITS_MGQ_FIFO_REL_INT_FLAG_8822E)) +#define BIT_GET_MGQ_FIFO_REL_INT_FLAG_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_FIFO_REL_INT_FLAG_8822E) & \ + BIT_MASK_MGQ_FIFO_REL_INT_FLAG_8822E) +#define BIT_SET_MGQ_FIFO_REL_INT_FLAG_8822E(x, v) \ + (BIT_CLEAR_MGQ_FIFO_REL_INT_FLAG_8822E(x) | \ + BIT_MGQ_FIFO_REL_INT_FLAG_8822E(v)) + +/* 2 REG_MGQ_FIFO_VALID_MAP_8822E */ + +#define BIT_SHIFT_MGQ_FIFO_PKT_VALID_MAP_8822E 0 +#define BIT_MASK_MGQ_FIFO_PKT_VALID_MAP_8822E 0xffff +#define BIT_MGQ_FIFO_PKT_VALID_MAP_8822E(x) \ + (((x) & BIT_MASK_MGQ_FIFO_PKT_VALID_MAP_8822E) \ + << BIT_SHIFT_MGQ_FIFO_PKT_VALID_MAP_8822E) +#define BITS_MGQ_FIFO_PKT_VALID_MAP_8822E \ + (BIT_MASK_MGQ_FIFO_PKT_VALID_MAP_8822E \ + << BIT_SHIFT_MGQ_FIFO_PKT_VALID_MAP_8822E) +#define BIT_CLEAR_MGQ_FIFO_PKT_VALID_MAP_8822E(x) \ + ((x) & (~BITS_MGQ_FIFO_PKT_VALID_MAP_8822E)) +#define BIT_GET_MGQ_FIFO_PKT_VALID_MAP_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_FIFO_PKT_VALID_MAP_8822E) & \ + BIT_MASK_MGQ_FIFO_PKT_VALID_MAP_8822E) +#define BIT_SET_MGQ_FIFO_PKT_VALID_MAP_8822E(x, v) \ + (BIT_CLEAR_MGQ_FIFO_PKT_VALID_MAP_8822E(x) | \ + BIT_MGQ_FIFO_PKT_VALID_MAP_8822E(v)) + +/* 2 REG_MGQ_FIFO_LIFETIME_8822E */ + +#define BIT_SHIFT_MGQ_FIFO_LIFETIME_8822E 0 +#define BIT_MASK_MGQ_FIFO_LIFETIME_8822E 0xffff +#define BIT_MGQ_FIFO_LIFETIME_8822E(x) \ + (((x) & BIT_MASK_MGQ_FIFO_LIFETIME_8822E) \ + << BIT_SHIFT_MGQ_FIFO_LIFETIME_8822E) +#define BITS_MGQ_FIFO_LIFETIME_8822E \ + (BIT_MASK_MGQ_FIFO_LIFETIME_8822E << BIT_SHIFT_MGQ_FIFO_LIFETIME_8822E) +#define BIT_CLEAR_MGQ_FIFO_LIFETIME_8822E(x) \ + ((x) & (~BITS_MGQ_FIFO_LIFETIME_8822E)) +#define BIT_GET_MGQ_FIFO_LIFETIME_8822E(x) \ + (((x) >> BIT_SHIFT_MGQ_FIFO_LIFETIME_8822E) & \ + BIT_MASK_MGQ_FIFO_LIFETIME_8822E) +#define BIT_SET_MGQ_FIFO_LIFETIME_8822E(x, v) \ + (BIT_CLEAR_MGQ_FIFO_LIFETIME_8822E(x) | BIT_MGQ_FIFO_LIFETIME_8822E(v)) + +/* 2 REG_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E */ + +#define BIT_SHIFT_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E 0 +#define BIT_MASK_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E 0x7f +#define BIT_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E(x) \ + (((x) & BIT_MASK_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E) \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E) +#define BITS_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E \ + (BIT_MASK_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E \ + << BIT_SHIFT_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E) +#define BIT_CLEAR_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E(x) \ + ((x) & (~BITS_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E)) +#define BIT_GET_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E) & \ + BIT_MASK_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E) +#define BIT_SET_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E(x, v) \ + (BIT_CLEAR_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E(x) | \ + BIT_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E(v)) + +/* 2 REG_SHCUT_SETTING_8822E */ + +/* 2 REG_SHCUT_LLC_ETH_TYPE0_8822E */ + +/* 2 REG_SHCUT_LLC_ETH_TYPE1_8822E */ + +/* 2 REG_SHCUT_LLC_OUI0_8822E */ + +/* 2 REG_SHCUT_LLC_OUI1_8822E */ + +/* 2 REG_SHCUT_LLC_OUI2_8822E */ + +/* 2 REG_MU_TX_CTL_8822E */ +#define BIT_R_MU_P1_WAIT_STATE_EN_8822E BIT(16) + +#define BIT_SHIFT_R_MU_RL_8822E 12 +#define BIT_MASK_R_MU_RL_8822E 0xf +#define BIT_R_MU_RL_8822E(x) \ + (((x) & BIT_MASK_R_MU_RL_8822E) << BIT_SHIFT_R_MU_RL_8822E) +#define BITS_R_MU_RL_8822E (BIT_MASK_R_MU_RL_8822E << BIT_SHIFT_R_MU_RL_8822E) +#define BIT_CLEAR_R_MU_RL_8822E(x) ((x) & (~BITS_R_MU_RL_8822E)) +#define BIT_GET_R_MU_RL_8822E(x) \ + (((x) >> BIT_SHIFT_R_MU_RL_8822E) & BIT_MASK_R_MU_RL_8822E) +#define BIT_SET_R_MU_RL_8822E(x, v) \ + (BIT_CLEAR_R_MU_RL_8822E(x) | BIT_R_MU_RL_8822E(v)) + +#define BIT_R_FORCE_P1_RATEDOWN_8822E BIT(11) + +#define BIT_SHIFT_R_MU_TAB_SEL_8822E 8 +#define BIT_MASK_R_MU_TAB_SEL_8822E 0x7 +#define BIT_R_MU_TAB_SEL_8822E(x) \ + (((x) & BIT_MASK_R_MU_TAB_SEL_8822E) << BIT_SHIFT_R_MU_TAB_SEL_8822E) +#define BITS_R_MU_TAB_SEL_8822E \ + (BIT_MASK_R_MU_TAB_SEL_8822E << BIT_SHIFT_R_MU_TAB_SEL_8822E) +#define BIT_CLEAR_R_MU_TAB_SEL_8822E(x) ((x) & (~BITS_R_MU_TAB_SEL_8822E)) +#define BIT_GET_R_MU_TAB_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_R_MU_TAB_SEL_8822E) & BIT_MASK_R_MU_TAB_SEL_8822E) +#define BIT_SET_R_MU_TAB_SEL_8822E(x, v) \ + (BIT_CLEAR_R_MU_TAB_SEL_8822E(x) | BIT_R_MU_TAB_SEL_8822E(v)) + +#define BIT_R_EN_MU_MIMO_8822E BIT(7) +#define BIT_R_EN_REVERS_GTAB_8822E BIT(6) + +#define BIT_SHIFT_R_MU_TABLE_VALID_8822E 0 +#define BIT_MASK_R_MU_TABLE_VALID_8822E 0x3f +#define BIT_R_MU_TABLE_VALID_8822E(x) \ + (((x) & BIT_MASK_R_MU_TABLE_VALID_8822E) \ + << BIT_SHIFT_R_MU_TABLE_VALID_8822E) +#define BITS_R_MU_TABLE_VALID_8822E \ + (BIT_MASK_R_MU_TABLE_VALID_8822E << BIT_SHIFT_R_MU_TABLE_VALID_8822E) +#define BIT_CLEAR_R_MU_TABLE_VALID_8822E(x) \ + ((x) & (~BITS_R_MU_TABLE_VALID_8822E)) +#define BIT_GET_R_MU_TABLE_VALID_8822E(x) \ + (((x) >> BIT_SHIFT_R_MU_TABLE_VALID_8822E) & \ + BIT_MASK_R_MU_TABLE_VALID_8822E) +#define BIT_SET_R_MU_TABLE_VALID_8822E(x, v) \ + (BIT_CLEAR_R_MU_TABLE_VALID_8822E(x) | BIT_R_MU_TABLE_VALID_8822E(v)) + +/* 2 REG_MU_STA_GID_VLD_8822E */ + +#define BIT_SHIFT_R_MU_STA_GTAB_VALID_8822E 0 +#define BIT_MASK_R_MU_STA_GTAB_VALID_8822E 0xffffffffL +#define BIT_R_MU_STA_GTAB_VALID_8822E(x) \ + (((x) & BIT_MASK_R_MU_STA_GTAB_VALID_8822E) \ + << BIT_SHIFT_R_MU_STA_GTAB_VALID_8822E) +#define BITS_R_MU_STA_GTAB_VALID_8822E \ + (BIT_MASK_R_MU_STA_GTAB_VALID_8822E \ + << BIT_SHIFT_R_MU_STA_GTAB_VALID_8822E) +#define BIT_CLEAR_R_MU_STA_GTAB_VALID_8822E(x) \ + ((x) & (~BITS_R_MU_STA_GTAB_VALID_8822E)) +#define BIT_GET_R_MU_STA_GTAB_VALID_8822E(x) \ + (((x) >> BIT_SHIFT_R_MU_STA_GTAB_VALID_8822E) & \ + BIT_MASK_R_MU_STA_GTAB_VALID_8822E) +#define BIT_SET_R_MU_STA_GTAB_VALID_8822E(x, v) \ + (BIT_CLEAR_R_MU_STA_GTAB_VALID_8822E(x) | \ + BIT_R_MU_STA_GTAB_VALID_8822E(v)) + +/* 2 REG_MU_STA_USER_POS_INFO_8822E */ + +#define BIT_SHIFT_R_MU_STA_GTAB_POSITION_L_8822E 0 +#define BIT_MASK_R_MU_STA_GTAB_POSITION_L_8822E 0xffffffffL +#define BIT_R_MU_STA_GTAB_POSITION_L_8822E(x) \ + (((x) & BIT_MASK_R_MU_STA_GTAB_POSITION_L_8822E) \ + << BIT_SHIFT_R_MU_STA_GTAB_POSITION_L_8822E) +#define BITS_R_MU_STA_GTAB_POSITION_L_8822E \ + (BIT_MASK_R_MU_STA_GTAB_POSITION_L_8822E \ + << BIT_SHIFT_R_MU_STA_GTAB_POSITION_L_8822E) +#define BIT_CLEAR_R_MU_STA_GTAB_POSITION_L_8822E(x) \ + ((x) & (~BITS_R_MU_STA_GTAB_POSITION_L_8822E)) +#define BIT_GET_R_MU_STA_GTAB_POSITION_L_8822E(x) \ + (((x) >> BIT_SHIFT_R_MU_STA_GTAB_POSITION_L_8822E) & \ + BIT_MASK_R_MU_STA_GTAB_POSITION_L_8822E) +#define BIT_SET_R_MU_STA_GTAB_POSITION_L_8822E(x, v) \ + (BIT_CLEAR_R_MU_STA_GTAB_POSITION_L_8822E(x) | \ + BIT_R_MU_STA_GTAB_POSITION_L_8822E(v)) + +/* 2 REG_MU_STA_USER_POS_INFO_H_8822E */ + +#define BIT_SHIFT_R_MU_STA_GTAB_POSITION_H_8822E 0 +#define BIT_MASK_R_MU_STA_GTAB_POSITION_H_8822E 0xffffffffL +#define BIT_R_MU_STA_GTAB_POSITION_H_8822E(x) \ + (((x) & BIT_MASK_R_MU_STA_GTAB_POSITION_H_8822E) \ + << BIT_SHIFT_R_MU_STA_GTAB_POSITION_H_8822E) +#define BITS_R_MU_STA_GTAB_POSITION_H_8822E \ + (BIT_MASK_R_MU_STA_GTAB_POSITION_H_8822E \ + << BIT_SHIFT_R_MU_STA_GTAB_POSITION_H_8822E) +#define BIT_CLEAR_R_MU_STA_GTAB_POSITION_H_8822E(x) \ + ((x) & (~BITS_R_MU_STA_GTAB_POSITION_H_8822E)) +#define BIT_GET_R_MU_STA_GTAB_POSITION_H_8822E(x) \ + (((x) >> BIT_SHIFT_R_MU_STA_GTAB_POSITION_H_8822E) & \ + BIT_MASK_R_MU_STA_GTAB_POSITION_H_8822E) +#define BIT_SET_R_MU_STA_GTAB_POSITION_H_8822E(x, v) \ + (BIT_CLEAR_R_MU_STA_GTAB_POSITION_H_8822E(x) | \ + BIT_R_MU_STA_GTAB_POSITION_H_8822E(v)) + +/* 2 REG_CHNL_INFO_CTRL_8822E */ +#define BIT_CHNL_REF_RXNAV_8822E BIT(7) +#define BIT_CHNL_REF_VBON_8822E BIT(6) +#define BIT_CHNL_REF_EDCA_8822E BIT(5) +#define BIT_CHNL_REF_CCA_8822E BIT(4) +#define BIT_RST_CHNL_BUSY_8822E BIT(3) +#define BIT_RST_CHNL_IDLE_8822E BIT(2) +#define BIT_CHNL_INFO_RST_8822E BIT(1) +#define BIT_ATM_AIRTIME_EN_8822E BIT(0) + +/* 2 REG_CHNL_IDLE_TIME_8822E */ + +#define BIT_SHIFT_CHNL_IDLE_TIME_8822E 0 +#define BIT_MASK_CHNL_IDLE_TIME_8822E 0xffffffffL +#define BIT_CHNL_IDLE_TIME_8822E(x) \ + (((x) & BIT_MASK_CHNL_IDLE_TIME_8822E) \ + << BIT_SHIFT_CHNL_IDLE_TIME_8822E) +#define BITS_CHNL_IDLE_TIME_8822E \ + (BIT_MASK_CHNL_IDLE_TIME_8822E << BIT_SHIFT_CHNL_IDLE_TIME_8822E) +#define BIT_CLEAR_CHNL_IDLE_TIME_8822E(x) ((x) & (~BITS_CHNL_IDLE_TIME_8822E)) +#define BIT_GET_CHNL_IDLE_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_CHNL_IDLE_TIME_8822E) & \ + BIT_MASK_CHNL_IDLE_TIME_8822E) +#define BIT_SET_CHNL_IDLE_TIME_8822E(x, v) \ + (BIT_CLEAR_CHNL_IDLE_TIME_8822E(x) | BIT_CHNL_IDLE_TIME_8822E(v)) + +/* 2 REG_CHNL_BUSY_TIME_8822E */ + +#define BIT_SHIFT_CHNL_BUSY_TIME_8822E 0 +#define BIT_MASK_CHNL_BUSY_TIME_8822E 0xffffffffL +#define BIT_CHNL_BUSY_TIME_8822E(x) \ + (((x) & BIT_MASK_CHNL_BUSY_TIME_8822E) \ + << BIT_SHIFT_CHNL_BUSY_TIME_8822E) +#define BITS_CHNL_BUSY_TIME_8822E \ + (BIT_MASK_CHNL_BUSY_TIME_8822E << BIT_SHIFT_CHNL_BUSY_TIME_8822E) +#define BIT_CLEAR_CHNL_BUSY_TIME_8822E(x) ((x) & (~BITS_CHNL_BUSY_TIME_8822E)) +#define BIT_GET_CHNL_BUSY_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_CHNL_BUSY_TIME_8822E) & \ + BIT_MASK_CHNL_BUSY_TIME_8822E) +#define BIT_SET_CHNL_BUSY_TIME_8822E(x, v) \ + (BIT_CLEAR_CHNL_BUSY_TIME_8822E(x) | BIT_CHNL_BUSY_TIME_8822E(v)) + +/* 2 REG_MU_TRX_DBG_CNT_V1_8822E */ +#define BIT_MU_DNGCNT_RST_8822E BIT(20) + +#define BIT_SHIFT_MU_DNGCNT_SEL_8822E 16 +#define BIT_MASK_MU_DNGCNT_SEL_8822E 0xf +#define BIT_MU_DNGCNT_SEL_8822E(x) \ + (((x) & BIT_MASK_MU_DNGCNT_SEL_8822E) << BIT_SHIFT_MU_DNGCNT_SEL_8822E) +#define BITS_MU_DNGCNT_SEL_8822E \ + (BIT_MASK_MU_DNGCNT_SEL_8822E << BIT_SHIFT_MU_DNGCNT_SEL_8822E) +#define BIT_CLEAR_MU_DNGCNT_SEL_8822E(x) ((x) & (~BITS_MU_DNGCNT_SEL_8822E)) +#define BIT_GET_MU_DNGCNT_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_MU_DNGCNT_SEL_8822E) & BIT_MASK_MU_DNGCNT_SEL_8822E) +#define BIT_SET_MU_DNGCNT_SEL_8822E(x, v) \ + (BIT_CLEAR_MU_DNGCNT_SEL_8822E(x) | BIT_MU_DNGCNT_SEL_8822E(v)) + +#define BIT_SHIFT_MU_DNGCNT_8822E 0 +#define BIT_MASK_MU_DNGCNT_8822E 0xffff +#define BIT_MU_DNGCNT_8822E(x) \ + (((x) & BIT_MASK_MU_DNGCNT_8822E) << BIT_SHIFT_MU_DNGCNT_8822E) +#define BITS_MU_DNGCNT_8822E \ + (BIT_MASK_MU_DNGCNT_8822E << BIT_SHIFT_MU_DNGCNT_8822E) +#define BIT_CLEAR_MU_DNGCNT_8822E(x) ((x) & (~BITS_MU_DNGCNT_8822E)) +#define BIT_GET_MU_DNGCNT_8822E(x) \ + (((x) >> BIT_SHIFT_MU_DNGCNT_8822E) & BIT_MASK_MU_DNGCNT_8822E) +#define BIT_SET_MU_DNGCNT_8822E(x, v) \ + (BIT_CLEAR_MU_DNGCNT_8822E(x) | BIT_MU_DNGCNT_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_EDCA_VO_PARAM_8822E */ + +#define BIT_SHIFT_TXOPLIMIT_8822E 16 +#define BIT_MASK_TXOPLIMIT_8822E 0x7ff +#define BIT_TXOPLIMIT_8822E(x) \ + (((x) & BIT_MASK_TXOPLIMIT_8822E) << BIT_SHIFT_TXOPLIMIT_8822E) +#define BITS_TXOPLIMIT_8822E \ + (BIT_MASK_TXOPLIMIT_8822E << BIT_SHIFT_TXOPLIMIT_8822E) +#define BIT_CLEAR_TXOPLIMIT_8822E(x) ((x) & (~BITS_TXOPLIMIT_8822E)) +#define BIT_GET_TXOPLIMIT_8822E(x) \ + (((x) >> BIT_SHIFT_TXOPLIMIT_8822E) & BIT_MASK_TXOPLIMIT_8822E) +#define BIT_SET_TXOPLIMIT_8822E(x, v) \ + (BIT_CLEAR_TXOPLIMIT_8822E(x) | BIT_TXOPLIMIT_8822E(v)) + +#define BIT_SHIFT_CW_8822E 8 +#define BIT_MASK_CW_8822E 0xff +#define BIT_CW_8822E(x) (((x) & BIT_MASK_CW_8822E) << BIT_SHIFT_CW_8822E) +#define BITS_CW_8822E (BIT_MASK_CW_8822E << BIT_SHIFT_CW_8822E) +#define BIT_CLEAR_CW_8822E(x) ((x) & (~BITS_CW_8822E)) +#define BIT_GET_CW_8822E(x) (((x) >> BIT_SHIFT_CW_8822E) & BIT_MASK_CW_8822E) +#define BIT_SET_CW_8822E(x, v) (BIT_CLEAR_CW_8822E(x) | BIT_CW_8822E(v)) + +#define BIT_SHIFT_AIFS_8822E 0 +#define BIT_MASK_AIFS_8822E 0xff +#define BIT_AIFS_8822E(x) (((x) & BIT_MASK_AIFS_8822E) << BIT_SHIFT_AIFS_8822E) +#define BITS_AIFS_8822E (BIT_MASK_AIFS_8822E << BIT_SHIFT_AIFS_8822E) +#define BIT_CLEAR_AIFS_8822E(x) ((x) & (~BITS_AIFS_8822E)) +#define BIT_GET_AIFS_8822E(x) \ + (((x) >> BIT_SHIFT_AIFS_8822E) & BIT_MASK_AIFS_8822E) +#define BIT_SET_AIFS_8822E(x, v) (BIT_CLEAR_AIFS_8822E(x) | BIT_AIFS_8822E(v)) + +/* 2 REG_EDCA_VI_PARAM_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_TXOPLIMIT_8822E 16 +#define BIT_MASK_TXOPLIMIT_8822E 0x7ff +#define BIT_TXOPLIMIT_8822E(x) \ + (((x) & BIT_MASK_TXOPLIMIT_8822E) << BIT_SHIFT_TXOPLIMIT_8822E) +#define BITS_TXOPLIMIT_8822E \ + (BIT_MASK_TXOPLIMIT_8822E << BIT_SHIFT_TXOPLIMIT_8822E) +#define BIT_CLEAR_TXOPLIMIT_8822E(x) ((x) & (~BITS_TXOPLIMIT_8822E)) +#define BIT_GET_TXOPLIMIT_8822E(x) \ + (((x) >> BIT_SHIFT_TXOPLIMIT_8822E) & BIT_MASK_TXOPLIMIT_8822E) +#define BIT_SET_TXOPLIMIT_8822E(x, v) \ + (BIT_CLEAR_TXOPLIMIT_8822E(x) | BIT_TXOPLIMIT_8822E(v)) + +#define BIT_SHIFT_CW_8822E 8 +#define BIT_MASK_CW_8822E 0xff +#define BIT_CW_8822E(x) (((x) & BIT_MASK_CW_8822E) << BIT_SHIFT_CW_8822E) +#define BITS_CW_8822E (BIT_MASK_CW_8822E << BIT_SHIFT_CW_8822E) +#define BIT_CLEAR_CW_8822E(x) ((x) & (~BITS_CW_8822E)) +#define BIT_GET_CW_8822E(x) (((x) >> BIT_SHIFT_CW_8822E) & BIT_MASK_CW_8822E) +#define BIT_SET_CW_8822E(x, v) (BIT_CLEAR_CW_8822E(x) | BIT_CW_8822E(v)) + +#define BIT_SHIFT_AIFS_8822E 0 +#define BIT_MASK_AIFS_8822E 0xff +#define BIT_AIFS_8822E(x) (((x) & BIT_MASK_AIFS_8822E) << BIT_SHIFT_AIFS_8822E) +#define BITS_AIFS_8822E (BIT_MASK_AIFS_8822E << BIT_SHIFT_AIFS_8822E) +#define BIT_CLEAR_AIFS_8822E(x) ((x) & (~BITS_AIFS_8822E)) +#define BIT_GET_AIFS_8822E(x) \ + (((x) >> BIT_SHIFT_AIFS_8822E) & BIT_MASK_AIFS_8822E) +#define BIT_SET_AIFS_8822E(x, v) (BIT_CLEAR_AIFS_8822E(x) | BIT_AIFS_8822E(v)) + +/* 2 REG_EDCA_BE_PARAM_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_TXOPLIMIT_8822E 16 +#define BIT_MASK_TXOPLIMIT_8822E 0x7ff +#define BIT_TXOPLIMIT_8822E(x) \ + (((x) & BIT_MASK_TXOPLIMIT_8822E) << BIT_SHIFT_TXOPLIMIT_8822E) +#define BITS_TXOPLIMIT_8822E \ + (BIT_MASK_TXOPLIMIT_8822E << BIT_SHIFT_TXOPLIMIT_8822E) +#define BIT_CLEAR_TXOPLIMIT_8822E(x) ((x) & (~BITS_TXOPLIMIT_8822E)) +#define BIT_GET_TXOPLIMIT_8822E(x) \ + (((x) >> BIT_SHIFT_TXOPLIMIT_8822E) & BIT_MASK_TXOPLIMIT_8822E) +#define BIT_SET_TXOPLIMIT_8822E(x, v) \ + (BIT_CLEAR_TXOPLIMIT_8822E(x) | BIT_TXOPLIMIT_8822E(v)) + +#define BIT_SHIFT_CW_8822E 8 +#define BIT_MASK_CW_8822E 0xff +#define BIT_CW_8822E(x) (((x) & BIT_MASK_CW_8822E) << BIT_SHIFT_CW_8822E) +#define BITS_CW_8822E (BIT_MASK_CW_8822E << BIT_SHIFT_CW_8822E) +#define BIT_CLEAR_CW_8822E(x) ((x) & (~BITS_CW_8822E)) +#define BIT_GET_CW_8822E(x) (((x) >> BIT_SHIFT_CW_8822E) & BIT_MASK_CW_8822E) +#define BIT_SET_CW_8822E(x, v) (BIT_CLEAR_CW_8822E(x) | BIT_CW_8822E(v)) + +#define BIT_SHIFT_AIFS_8822E 0 +#define BIT_MASK_AIFS_8822E 0xff +#define BIT_AIFS_8822E(x) (((x) & BIT_MASK_AIFS_8822E) << BIT_SHIFT_AIFS_8822E) +#define BITS_AIFS_8822E (BIT_MASK_AIFS_8822E << BIT_SHIFT_AIFS_8822E) +#define BIT_CLEAR_AIFS_8822E(x) ((x) & (~BITS_AIFS_8822E)) +#define BIT_GET_AIFS_8822E(x) \ + (((x) >> BIT_SHIFT_AIFS_8822E) & BIT_MASK_AIFS_8822E) +#define BIT_SET_AIFS_8822E(x, v) (BIT_CLEAR_AIFS_8822E(x) | BIT_AIFS_8822E(v)) + +/* 2 REG_EDCA_BK_PARAM_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_TXOPLIMIT_8822E 16 +#define BIT_MASK_TXOPLIMIT_8822E 0x7ff +#define BIT_TXOPLIMIT_8822E(x) \ + (((x) & BIT_MASK_TXOPLIMIT_8822E) << BIT_SHIFT_TXOPLIMIT_8822E) +#define BITS_TXOPLIMIT_8822E \ + (BIT_MASK_TXOPLIMIT_8822E << BIT_SHIFT_TXOPLIMIT_8822E) +#define BIT_CLEAR_TXOPLIMIT_8822E(x) ((x) & (~BITS_TXOPLIMIT_8822E)) +#define BIT_GET_TXOPLIMIT_8822E(x) \ + (((x) >> BIT_SHIFT_TXOPLIMIT_8822E) & BIT_MASK_TXOPLIMIT_8822E) +#define BIT_SET_TXOPLIMIT_8822E(x, v) \ + (BIT_CLEAR_TXOPLIMIT_8822E(x) | BIT_TXOPLIMIT_8822E(v)) + +#define BIT_SHIFT_CW_8822E 8 +#define BIT_MASK_CW_8822E 0xff +#define BIT_CW_8822E(x) (((x) & BIT_MASK_CW_8822E) << BIT_SHIFT_CW_8822E) +#define BITS_CW_8822E (BIT_MASK_CW_8822E << BIT_SHIFT_CW_8822E) +#define BIT_CLEAR_CW_8822E(x) ((x) & (~BITS_CW_8822E)) +#define BIT_GET_CW_8822E(x) (((x) >> BIT_SHIFT_CW_8822E) & BIT_MASK_CW_8822E) +#define BIT_SET_CW_8822E(x, v) (BIT_CLEAR_CW_8822E(x) | BIT_CW_8822E(v)) + +#define BIT_SHIFT_AIFS_8822E 0 +#define BIT_MASK_AIFS_8822E 0xff +#define BIT_AIFS_8822E(x) (((x) & BIT_MASK_AIFS_8822E) << BIT_SHIFT_AIFS_8822E) +#define BITS_AIFS_8822E (BIT_MASK_AIFS_8822E << BIT_SHIFT_AIFS_8822E) +#define BIT_CLEAR_AIFS_8822E(x) ((x) & (~BITS_AIFS_8822E)) +#define BIT_GET_AIFS_8822E(x) \ + (((x) >> BIT_SHIFT_AIFS_8822E) & BIT_MASK_AIFS_8822E) +#define BIT_SET_AIFS_8822E(x, v) (BIT_CLEAR_AIFS_8822E(x) | BIT_AIFS_8822E(v)) + +/* 2 REG_BCNTCFG_8822E */ + +#define BIT_SHIFT_BCNCW_MAX_8822E 12 +#define BIT_MASK_BCNCW_MAX_8822E 0xf +#define BIT_BCNCW_MAX_8822E(x) \ + (((x) & BIT_MASK_BCNCW_MAX_8822E) << BIT_SHIFT_BCNCW_MAX_8822E) +#define BITS_BCNCW_MAX_8822E \ + (BIT_MASK_BCNCW_MAX_8822E << BIT_SHIFT_BCNCW_MAX_8822E) +#define BIT_CLEAR_BCNCW_MAX_8822E(x) ((x) & (~BITS_BCNCW_MAX_8822E)) +#define BIT_GET_BCNCW_MAX_8822E(x) \ + (((x) >> BIT_SHIFT_BCNCW_MAX_8822E) & BIT_MASK_BCNCW_MAX_8822E) +#define BIT_SET_BCNCW_MAX_8822E(x, v) \ + (BIT_CLEAR_BCNCW_MAX_8822E(x) | BIT_BCNCW_MAX_8822E(v)) + +#define BIT_SHIFT_BCNCW_MIN_8822E 8 +#define BIT_MASK_BCNCW_MIN_8822E 0xf +#define BIT_BCNCW_MIN_8822E(x) \ + (((x) & BIT_MASK_BCNCW_MIN_8822E) << BIT_SHIFT_BCNCW_MIN_8822E) +#define BITS_BCNCW_MIN_8822E \ + (BIT_MASK_BCNCW_MIN_8822E << BIT_SHIFT_BCNCW_MIN_8822E) +#define BIT_CLEAR_BCNCW_MIN_8822E(x) ((x) & (~BITS_BCNCW_MIN_8822E)) +#define BIT_GET_BCNCW_MIN_8822E(x) \ + (((x) >> BIT_SHIFT_BCNCW_MIN_8822E) & BIT_MASK_BCNCW_MIN_8822E) +#define BIT_SET_BCNCW_MIN_8822E(x, v) \ + (BIT_CLEAR_BCNCW_MIN_8822E(x) | BIT_BCNCW_MIN_8822E(v)) + +#define BIT_SHIFT_BCNIFS_8822E 0 +#define BIT_MASK_BCNIFS_8822E 0xff +#define BIT_BCNIFS_8822E(x) \ + (((x) & BIT_MASK_BCNIFS_8822E) << BIT_SHIFT_BCNIFS_8822E) +#define BITS_BCNIFS_8822E (BIT_MASK_BCNIFS_8822E << BIT_SHIFT_BCNIFS_8822E) +#define BIT_CLEAR_BCNIFS_8822E(x) ((x) & (~BITS_BCNIFS_8822E)) +#define BIT_GET_BCNIFS_8822E(x) \ + (((x) >> BIT_SHIFT_BCNIFS_8822E) & BIT_MASK_BCNIFS_8822E) +#define BIT_SET_BCNIFS_8822E(x, v) \ + (BIT_CLEAR_BCNIFS_8822E(x) | BIT_BCNIFS_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_PIFS_8822E */ + +#define BIT_SHIFT_PIFS_8822E 0 +#define BIT_MASK_PIFS_8822E 0xff +#define BIT_PIFS_8822E(x) (((x) & BIT_MASK_PIFS_8822E) << BIT_SHIFT_PIFS_8822E) +#define BITS_PIFS_8822E (BIT_MASK_PIFS_8822E << BIT_SHIFT_PIFS_8822E) +#define BIT_CLEAR_PIFS_8822E(x) ((x) & (~BITS_PIFS_8822E)) +#define BIT_GET_PIFS_8822E(x) \ + (((x) >> BIT_SHIFT_PIFS_8822E) & BIT_MASK_PIFS_8822E) +#define BIT_SET_PIFS_8822E(x, v) (BIT_CLEAR_PIFS_8822E(x) | BIT_PIFS_8822E(v)) + +/* 2 REG_RDG_PIFS_8822E */ + +#define BIT_SHIFT_RDG_PIFS_8822E 0 +#define BIT_MASK_RDG_PIFS_8822E 0xff +#define BIT_RDG_PIFS_8822E(x) \ + (((x) & BIT_MASK_RDG_PIFS_8822E) << BIT_SHIFT_RDG_PIFS_8822E) +#define BITS_RDG_PIFS_8822E \ + (BIT_MASK_RDG_PIFS_8822E << BIT_SHIFT_RDG_PIFS_8822E) +#define BIT_CLEAR_RDG_PIFS_8822E(x) ((x) & (~BITS_RDG_PIFS_8822E)) +#define BIT_GET_RDG_PIFS_8822E(x) \ + (((x) >> BIT_SHIFT_RDG_PIFS_8822E) & BIT_MASK_RDG_PIFS_8822E) +#define BIT_SET_RDG_PIFS_8822E(x, v) \ + (BIT_CLEAR_RDG_PIFS_8822E(x) | BIT_RDG_PIFS_8822E(v)) + +/* 2 REG_SIFS_8822E */ + +#define BIT_SHIFT_SIFS_OFDM_TRX_8822E 24 +#define BIT_MASK_SIFS_OFDM_TRX_8822E 0xff +#define BIT_SIFS_OFDM_TRX_8822E(x) \ + (((x) & BIT_MASK_SIFS_OFDM_TRX_8822E) << BIT_SHIFT_SIFS_OFDM_TRX_8822E) +#define BITS_SIFS_OFDM_TRX_8822E \ + (BIT_MASK_SIFS_OFDM_TRX_8822E << BIT_SHIFT_SIFS_OFDM_TRX_8822E) +#define BIT_CLEAR_SIFS_OFDM_TRX_8822E(x) ((x) & (~BITS_SIFS_OFDM_TRX_8822E)) +#define BIT_GET_SIFS_OFDM_TRX_8822E(x) \ + (((x) >> BIT_SHIFT_SIFS_OFDM_TRX_8822E) & BIT_MASK_SIFS_OFDM_TRX_8822E) +#define BIT_SET_SIFS_OFDM_TRX_8822E(x, v) \ + (BIT_CLEAR_SIFS_OFDM_TRX_8822E(x) | BIT_SIFS_OFDM_TRX_8822E(v)) + +#define BIT_SHIFT_SIFS_CCK_TRX_8822E 16 +#define BIT_MASK_SIFS_CCK_TRX_8822E 0xff +#define BIT_SIFS_CCK_TRX_8822E(x) \ + (((x) & BIT_MASK_SIFS_CCK_TRX_8822E) << BIT_SHIFT_SIFS_CCK_TRX_8822E) +#define BITS_SIFS_CCK_TRX_8822E \ + (BIT_MASK_SIFS_CCK_TRX_8822E << BIT_SHIFT_SIFS_CCK_TRX_8822E) +#define BIT_CLEAR_SIFS_CCK_TRX_8822E(x) ((x) & (~BITS_SIFS_CCK_TRX_8822E)) +#define BIT_GET_SIFS_CCK_TRX_8822E(x) \ + (((x) >> BIT_SHIFT_SIFS_CCK_TRX_8822E) & BIT_MASK_SIFS_CCK_TRX_8822E) +#define BIT_SET_SIFS_CCK_TRX_8822E(x, v) \ + (BIT_CLEAR_SIFS_CCK_TRX_8822E(x) | BIT_SIFS_CCK_TRX_8822E(v)) + +#define BIT_SHIFT_SIFS_OFDM_CTX_8822E 8 +#define BIT_MASK_SIFS_OFDM_CTX_8822E 0xff +#define BIT_SIFS_OFDM_CTX_8822E(x) \ + (((x) & BIT_MASK_SIFS_OFDM_CTX_8822E) << BIT_SHIFT_SIFS_OFDM_CTX_8822E) +#define BITS_SIFS_OFDM_CTX_8822E \ + (BIT_MASK_SIFS_OFDM_CTX_8822E << BIT_SHIFT_SIFS_OFDM_CTX_8822E) +#define BIT_CLEAR_SIFS_OFDM_CTX_8822E(x) ((x) & (~BITS_SIFS_OFDM_CTX_8822E)) +#define BIT_GET_SIFS_OFDM_CTX_8822E(x) \ + (((x) >> BIT_SHIFT_SIFS_OFDM_CTX_8822E) & BIT_MASK_SIFS_OFDM_CTX_8822E) +#define BIT_SET_SIFS_OFDM_CTX_8822E(x, v) \ + (BIT_CLEAR_SIFS_OFDM_CTX_8822E(x) | BIT_SIFS_OFDM_CTX_8822E(v)) + +#define BIT_SHIFT_SIFS_CCK_CTX_8822E 0 +#define BIT_MASK_SIFS_CCK_CTX_8822E 0xff +#define BIT_SIFS_CCK_CTX_8822E(x) \ + (((x) & BIT_MASK_SIFS_CCK_CTX_8822E) << BIT_SHIFT_SIFS_CCK_CTX_8822E) +#define BITS_SIFS_CCK_CTX_8822E \ + (BIT_MASK_SIFS_CCK_CTX_8822E << BIT_SHIFT_SIFS_CCK_CTX_8822E) +#define BIT_CLEAR_SIFS_CCK_CTX_8822E(x) ((x) & (~BITS_SIFS_CCK_CTX_8822E)) +#define BIT_GET_SIFS_CCK_CTX_8822E(x) \ + (((x) >> BIT_SHIFT_SIFS_CCK_CTX_8822E) & BIT_MASK_SIFS_CCK_CTX_8822E) +#define BIT_SET_SIFS_CCK_CTX_8822E(x, v) \ + (BIT_CLEAR_SIFS_CCK_CTX_8822E(x) | BIT_SIFS_CCK_CTX_8822E(v)) + +/* 2 REG_TSFTR_SYN_OFFSET_8822E */ + +#define BIT_SHIFT_TSFTR_SNC_OFFSET_8822E 0 +#define BIT_MASK_TSFTR_SNC_OFFSET_8822E 0xffff +#define BIT_TSFTR_SNC_OFFSET_8822E(x) \ + (((x) & BIT_MASK_TSFTR_SNC_OFFSET_8822E) \ + << BIT_SHIFT_TSFTR_SNC_OFFSET_8822E) +#define BITS_TSFTR_SNC_OFFSET_8822E \ + (BIT_MASK_TSFTR_SNC_OFFSET_8822E << BIT_SHIFT_TSFTR_SNC_OFFSET_8822E) +#define BIT_CLEAR_TSFTR_SNC_OFFSET_8822E(x) \ + ((x) & (~BITS_TSFTR_SNC_OFFSET_8822E)) +#define BIT_GET_TSFTR_SNC_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_TSFTR_SNC_OFFSET_8822E) & \ + BIT_MASK_TSFTR_SNC_OFFSET_8822E) +#define BIT_SET_TSFTR_SNC_OFFSET_8822E(x, v) \ + (BIT_CLEAR_TSFTR_SNC_OFFSET_8822E(x) | BIT_TSFTR_SNC_OFFSET_8822E(v)) + +/* 2 REG_AGGR_BREAK_TIME_8822E */ + +#define BIT_SHIFT_AGGR_BK_TIME_8822E 0 +#define BIT_MASK_AGGR_BK_TIME_8822E 0xff +#define BIT_AGGR_BK_TIME_8822E(x) \ + (((x) & BIT_MASK_AGGR_BK_TIME_8822E) << BIT_SHIFT_AGGR_BK_TIME_8822E) +#define BITS_AGGR_BK_TIME_8822E \ + (BIT_MASK_AGGR_BK_TIME_8822E << BIT_SHIFT_AGGR_BK_TIME_8822E) +#define BIT_CLEAR_AGGR_BK_TIME_8822E(x) ((x) & (~BITS_AGGR_BK_TIME_8822E)) +#define BIT_GET_AGGR_BK_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_AGGR_BK_TIME_8822E) & BIT_MASK_AGGR_BK_TIME_8822E) +#define BIT_SET_AGGR_BK_TIME_8822E(x, v) \ + (BIT_CLEAR_AGGR_BK_TIME_8822E(x) | BIT_AGGR_BK_TIME_8822E(v)) + +/* 2 REG_SLOT_8822E */ + +#define BIT_SHIFT_SLOT_8822E 0 +#define BIT_MASK_SLOT_8822E 0xff +#define BIT_SLOT_8822E(x) (((x) & BIT_MASK_SLOT_8822E) << BIT_SHIFT_SLOT_8822E) +#define BITS_SLOT_8822E (BIT_MASK_SLOT_8822E << BIT_SHIFT_SLOT_8822E) +#define BIT_CLEAR_SLOT_8822E(x) ((x) & (~BITS_SLOT_8822E)) +#define BIT_GET_SLOT_8822E(x) \ + (((x) >> BIT_SHIFT_SLOT_8822E) & BIT_MASK_SLOT_8822E) +#define BIT_SET_SLOT_8822E(x, v) (BIT_CLEAR_SLOT_8822E(x) | BIT_SLOT_8822E(v)) + +/* 2 REG_NOA_ON_ERLY_TIME_8822E */ + +#define BIT_SHIFT__NOA_ON_ERLY_TIME_8822E 0 +#define BIT_MASK__NOA_ON_ERLY_TIME_8822E 0xff +#define BIT__NOA_ON_ERLY_TIME_8822E(x) \ + (((x) & BIT_MASK__NOA_ON_ERLY_TIME_8822E) \ + << BIT_SHIFT__NOA_ON_ERLY_TIME_8822E) +#define BITS__NOA_ON_ERLY_TIME_8822E \ + (BIT_MASK__NOA_ON_ERLY_TIME_8822E << BIT_SHIFT__NOA_ON_ERLY_TIME_8822E) +#define BIT_CLEAR__NOA_ON_ERLY_TIME_8822E(x) \ + ((x) & (~BITS__NOA_ON_ERLY_TIME_8822E)) +#define BIT_GET__NOA_ON_ERLY_TIME_8822E(x) \ + (((x) >> BIT_SHIFT__NOA_ON_ERLY_TIME_8822E) & \ + BIT_MASK__NOA_ON_ERLY_TIME_8822E) +#define BIT_SET__NOA_ON_ERLY_TIME_8822E(x, v) \ + (BIT_CLEAR__NOA_ON_ERLY_TIME_8822E(x) | BIT__NOA_ON_ERLY_TIME_8822E(v)) + +/* 2 REG_NOA_OFF_ERLY_TIME_8822E */ + +#define BIT_SHIFT__NOA_OFF_ERLY_TIME_8822E 0 +#define BIT_MASK__NOA_OFF_ERLY_TIME_8822E 0xff +#define BIT__NOA_OFF_ERLY_TIME_8822E(x) \ + (((x) & BIT_MASK__NOA_OFF_ERLY_TIME_8822E) \ + << BIT_SHIFT__NOA_OFF_ERLY_TIME_8822E) +#define BITS__NOA_OFF_ERLY_TIME_8822E \ + (BIT_MASK__NOA_OFF_ERLY_TIME_8822E \ + << BIT_SHIFT__NOA_OFF_ERLY_TIME_8822E) +#define BIT_CLEAR__NOA_OFF_ERLY_TIME_8822E(x) \ + ((x) & (~BITS__NOA_OFF_ERLY_TIME_8822E)) +#define BIT_GET__NOA_OFF_ERLY_TIME_8822E(x) \ + (((x) >> BIT_SHIFT__NOA_OFF_ERLY_TIME_8822E) & \ + BIT_MASK__NOA_OFF_ERLY_TIME_8822E) +#define BIT_SET__NOA_OFF_ERLY_TIME_8822E(x, v) \ + (BIT_CLEAR__NOA_OFF_ERLY_TIME_8822E(x) | \ + BIT__NOA_OFF_ERLY_TIME_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_TX_PTCL_CTRL_8822E */ +#define BIT_DIS_EDCCA_8822E BIT(15) +#define BIT_DIS_CCA_8822E BIT(14) +#define BIT_LSIG_TXOP_TXCMD_NAV_8822E BIT(13) +#define BIT_SIFS_BK_EN_8822E BIT(12) + +#define BIT_SHIFT_TXQ_NAV_MSK_8822E 8 +#define BIT_MASK_TXQ_NAV_MSK_8822E 0xf +#define BIT_TXQ_NAV_MSK_8822E(x) \ + (((x) & BIT_MASK_TXQ_NAV_MSK_8822E) << BIT_SHIFT_TXQ_NAV_MSK_8822E) +#define BITS_TXQ_NAV_MSK_8822E \ + (BIT_MASK_TXQ_NAV_MSK_8822E << BIT_SHIFT_TXQ_NAV_MSK_8822E) +#define BIT_CLEAR_TXQ_NAV_MSK_8822E(x) ((x) & (~BITS_TXQ_NAV_MSK_8822E)) +#define BIT_GET_TXQ_NAV_MSK_8822E(x) \ + (((x) >> BIT_SHIFT_TXQ_NAV_MSK_8822E) & BIT_MASK_TXQ_NAV_MSK_8822E) +#define BIT_SET_TXQ_NAV_MSK_8822E(x, v) \ + (BIT_CLEAR_TXQ_NAV_MSK_8822E(x) | BIT_TXQ_NAV_MSK_8822E(v)) + +#define BIT_DIS_CW_8822E BIT(7) +#define BIT_NAV_END_TXOP_8822E BIT(6) +#define BIT_RDG_END_TXOP_8822E BIT(5) +#define BIT_AC_INBCN_HOLD_8822E BIT(4) +#define BIT_MGTQ_TXOP_EN_8822E BIT(3) +#define BIT_MGTQ_RTSMF_EN_8822E BIT(2) +#define BIT_HIQ_RTSMF_EN_8822E BIT(1) +#define BIT_BCN_RTSMF_EN_8822E BIT(0) + +/* 2 REG_TXPAUSE_8822E */ +#define BIT_STOP_BCN_HI_MGT_8822E BIT(7) +#define BIT_MAC_STOPBCNQ_8822E BIT(6) +#define BIT_MAC_STOPHIQ_8822E BIT(5) +#define BIT_MAC_STOPMGQ_8822E BIT(4) +#define BIT_MAC_STOPBK_8822E BIT(3) +#define BIT_MAC_STOPBE_8822E BIT(2) +#define BIT_MAC_STOPVI_8822E BIT(1) +#define BIT_MAC_STOPVO_8822E BIT(0) + +/* 2 REG_DIS_TXREQ_CLR_8822E */ +#define BIT_DIS_BT_CCA_8822E BIT(7) +#define BIT_DIS_TXREQ_CLR_HI_8822E BIT(5) +#define BIT_DIS_TXREQ_CLR_MGQ_8822E BIT(4) +#define BIT_DIS_TXREQ_CLR_VO_8822E BIT(3) +#define BIT_DIS_TXREQ_CLR_VI_8822E BIT(2) +#define BIT_DIS_TXREQ_CLR_BE_8822E BIT(1) +#define BIT_DIS_TXREQ_CLR_BK_8822E BIT(0) + +/* 2 REG_RD_CTRL_8822E */ +#define BIT_EN_CLR_TXREQ_INCCA_8822E BIT(15) +#define BIT_DIS_TX_OVER_BCNQ_8822E BIT(14) +#define BIT_EN_BCNERR_INCCCA_8822E BIT(13) +#define BIT_EDCCA_MSK_CNTDOWN_EN_8822E BIT(11) +#define BIT_DIS_TXOP_CFE_8822E BIT(10) +#define BIT_DIS_LSIG_CFE_8822E BIT(9) +#define BIT_DIS_STBC_CFE_8822E BIT(8) +#define BIT_BKQ_RD_INIT_EN_8822E BIT(7) +#define BIT_BEQ_RD_INIT_EN_8822E BIT(6) +#define BIT_VIQ_RD_INIT_EN_8822E BIT(5) +#define BIT_VOQ_RD_INIT_EN_8822E BIT(4) +#define BIT_BKQ_RD_RESP_EN_8822E BIT(3) +#define BIT_BEQ_RD_RESP_EN_8822E BIT(2) +#define BIT_VIQ_RD_RESP_EN_8822E BIT(1) +#define BIT_VOQ_RD_RESP_EN_8822E BIT(0) + +/* 2 REG_MBSSID_CTRL_8822E */ +#define BIT_MBID_BCNQ7_EN_8822E BIT(7) +#define BIT_MBID_BCNQ6_EN_8822E BIT(6) +#define BIT_MBID_BCNQ5_EN_8822E BIT(5) +#define BIT_MBID_BCNQ4_EN_8822E BIT(4) +#define BIT_MBID_BCNQ3_EN_8822E BIT(3) +#define BIT_MBID_BCNQ2_EN_8822E BIT(2) +#define BIT_MBID_BCNQ1_EN_8822E BIT(1) +#define BIT_MBID_BCNQ0_EN_8822E BIT(0) + +/* 2 REG_P2PPS_CTRL_8822E */ +#define BIT_P2P_CTW_ALLSTASLEEP_8822E BIT(7) +#define BIT_P2P_OFF_DISTX_EN_8822E BIT(6) +#define BIT_PWR_MGT_EN_8822E BIT(5) +#define BIT_P2P_NOA1_EN_8822E BIT(2) +#define BIT_P2P_NOA0_EN_8822E BIT(1) + +/* 2 REG_PKT_LIFETIME_CTRL_8822E */ +#define BIT_EN_P2P_CTWND1_8822E BIT(23) +#define BIT_EN_BKF_CLR_TXREQ_8822E BIT(22) +#define BIT_EN_TSFBIT32_RST_P2P_8822E BIT(21) +#define BIT_EN_BCN_TX_BTCCA_8822E BIT(20) +#define BIT_DIS_PKT_TX_ATIM_8822E BIT(19) +#define BIT_DIS_BCN_DIS_CTN_8822E BIT(18) +#define BIT_EN_NAVEND_RST_TXOP_8822E BIT(17) +#define BIT_EN_FILTER_CCA_8822E BIT(16) + +#define BIT_SHIFT_CCA_FILTER_THRS_8822E 8 +#define BIT_MASK_CCA_FILTER_THRS_8822E 0xff +#define BIT_CCA_FILTER_THRS_8822E(x) \ + (((x) & BIT_MASK_CCA_FILTER_THRS_8822E) \ + << BIT_SHIFT_CCA_FILTER_THRS_8822E) +#define BITS_CCA_FILTER_THRS_8822E \ + (BIT_MASK_CCA_FILTER_THRS_8822E << BIT_SHIFT_CCA_FILTER_THRS_8822E) +#define BIT_CLEAR_CCA_FILTER_THRS_8822E(x) ((x) & (~BITS_CCA_FILTER_THRS_8822E)) +#define BIT_GET_CCA_FILTER_THRS_8822E(x) \ + (((x) >> BIT_SHIFT_CCA_FILTER_THRS_8822E) & \ + BIT_MASK_CCA_FILTER_THRS_8822E) +#define BIT_SET_CCA_FILTER_THRS_8822E(x, v) \ + (BIT_CLEAR_CCA_FILTER_THRS_8822E(x) | BIT_CCA_FILTER_THRS_8822E(v)) + +#define BIT_SHIFT_EDCCA_THRS_8822E 0 +#define BIT_MASK_EDCCA_THRS_8822E 0xff +#define BIT_EDCCA_THRS_8822E(x) \ + (((x) & BIT_MASK_EDCCA_THRS_8822E) << BIT_SHIFT_EDCCA_THRS_8822E) +#define BITS_EDCCA_THRS_8822E \ + (BIT_MASK_EDCCA_THRS_8822E << BIT_SHIFT_EDCCA_THRS_8822E) +#define BIT_CLEAR_EDCCA_THRS_8822E(x) ((x) & (~BITS_EDCCA_THRS_8822E)) +#define BIT_GET_EDCCA_THRS_8822E(x) \ + (((x) >> BIT_SHIFT_EDCCA_THRS_8822E) & BIT_MASK_EDCCA_THRS_8822E) +#define BIT_SET_EDCCA_THRS_8822E(x, v) \ + (BIT_CLEAR_EDCCA_THRS_8822E(x) | BIT_EDCCA_THRS_8822E(v)) + +/* 2 REG_P2PPS_SPEC_STATE_8822E */ +#define BIT_SPEC_POWER_STATE_8822E BIT(7) +#define BIT_SPEC_CTWINDOW_ON_8822E BIT(6) +#define BIT_SPEC_BEACON_AREA_ON_8822E BIT(5) +#define BIT_SPEC_CTWIN_EARLY_DISTX_8822E BIT(4) +#define BIT_SPEC_NOA1_OFF_PERIOD_8822E BIT(3) +#define BIT_SPEC_FORCE_DOZE1_8822E BIT(2) +#define BIT_SPEC_NOA0_OFF_PERIOD_8822E BIT(1) +#define BIT_SPEC_FORCE_DOZE0_8822E BIT(0) + +/* 2 REG_TXOP_LIMIT_CTRL_8822E */ + +#define BIT_SHIFT_TXOP_TBTT_CNT_8822E 24 +#define BIT_MASK_TXOP_TBTT_CNT_8822E 0xff +#define BIT_TXOP_TBTT_CNT_8822E(x) \ + (((x) & BIT_MASK_TXOP_TBTT_CNT_8822E) << BIT_SHIFT_TXOP_TBTT_CNT_8822E) +#define BITS_TXOP_TBTT_CNT_8822E \ + (BIT_MASK_TXOP_TBTT_CNT_8822E << BIT_SHIFT_TXOP_TBTT_CNT_8822E) +#define BIT_CLEAR_TXOP_TBTT_CNT_8822E(x) ((x) & (~BITS_TXOP_TBTT_CNT_8822E)) +#define BIT_GET_TXOP_TBTT_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_TXOP_TBTT_CNT_8822E) & BIT_MASK_TXOP_TBTT_CNT_8822E) +#define BIT_SET_TXOP_TBTT_CNT_8822E(x, v) \ + (BIT_CLEAR_TXOP_TBTT_CNT_8822E(x) | BIT_TXOP_TBTT_CNT_8822E(v)) + +#define BIT_SHIFT_TXOP_TBTT_CNT_SEL_8822E 20 +#define BIT_MASK_TXOP_TBTT_CNT_SEL_8822E 0xf +#define BIT_TXOP_TBTT_CNT_SEL_8822E(x) \ + (((x) & BIT_MASK_TXOP_TBTT_CNT_SEL_8822E) \ + << BIT_SHIFT_TXOP_TBTT_CNT_SEL_8822E) +#define BITS_TXOP_TBTT_CNT_SEL_8822E \ + (BIT_MASK_TXOP_TBTT_CNT_SEL_8822E << BIT_SHIFT_TXOP_TBTT_CNT_SEL_8822E) +#define BIT_CLEAR_TXOP_TBTT_CNT_SEL_8822E(x) \ + ((x) & (~BITS_TXOP_TBTT_CNT_SEL_8822E)) +#define BIT_GET_TXOP_TBTT_CNT_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_TXOP_TBTT_CNT_SEL_8822E) & \ + BIT_MASK_TXOP_TBTT_CNT_SEL_8822E) +#define BIT_SET_TXOP_TBTT_CNT_SEL_8822E(x, v) \ + (BIT_CLEAR_TXOP_TBTT_CNT_SEL_8822E(x) | BIT_TXOP_TBTT_CNT_SEL_8822E(v)) + +#define BIT_SHIFT_TXOP_LMT_EN_8822E 16 +#define BIT_MASK_TXOP_LMT_EN_8822E 0xf +#define BIT_TXOP_LMT_EN_8822E(x) \ + (((x) & BIT_MASK_TXOP_LMT_EN_8822E) << BIT_SHIFT_TXOP_LMT_EN_8822E) +#define BITS_TXOP_LMT_EN_8822E \ + (BIT_MASK_TXOP_LMT_EN_8822E << BIT_SHIFT_TXOP_LMT_EN_8822E) +#define BIT_CLEAR_TXOP_LMT_EN_8822E(x) ((x) & (~BITS_TXOP_LMT_EN_8822E)) +#define BIT_GET_TXOP_LMT_EN_8822E(x) \ + (((x) >> BIT_SHIFT_TXOP_LMT_EN_8822E) & BIT_MASK_TXOP_LMT_EN_8822E) +#define BIT_SET_TXOP_LMT_EN_8822E(x, v) \ + (BIT_CLEAR_TXOP_LMT_EN_8822E(x) | BIT_TXOP_LMT_EN_8822E(v)) + +#define BIT_SHIFT_TXOP_LMT_TX_TIME_8822E 8 +#define BIT_MASK_TXOP_LMT_TX_TIME_8822E 0xff +#define BIT_TXOP_LMT_TX_TIME_8822E(x) \ + (((x) & BIT_MASK_TXOP_LMT_TX_TIME_8822E) \ + << BIT_SHIFT_TXOP_LMT_TX_TIME_8822E) +#define BITS_TXOP_LMT_TX_TIME_8822E \ + (BIT_MASK_TXOP_LMT_TX_TIME_8822E << BIT_SHIFT_TXOP_LMT_TX_TIME_8822E) +#define BIT_CLEAR_TXOP_LMT_TX_TIME_8822E(x) \ + ((x) & (~BITS_TXOP_LMT_TX_TIME_8822E)) +#define BIT_GET_TXOP_LMT_TX_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_TXOP_LMT_TX_TIME_8822E) & \ + BIT_MASK_TXOP_LMT_TX_TIME_8822E) +#define BIT_SET_TXOP_LMT_TX_TIME_8822E(x, v) \ + (BIT_CLEAR_TXOP_LMT_TX_TIME_8822E(x) | BIT_TXOP_LMT_TX_TIME_8822E(v)) + +#define BIT_TXOP_CNT_TRIGGER_RESET_8822E BIT(7) + +#define BIT_SHIFT_TXOP_LMT_PKT_NUM_8822E 0 +#define BIT_MASK_TXOP_LMT_PKT_NUM_8822E 0x3f +#define BIT_TXOP_LMT_PKT_NUM_8822E(x) \ + (((x) & BIT_MASK_TXOP_LMT_PKT_NUM_8822E) \ + << BIT_SHIFT_TXOP_LMT_PKT_NUM_8822E) +#define BITS_TXOP_LMT_PKT_NUM_8822E \ + (BIT_MASK_TXOP_LMT_PKT_NUM_8822E << BIT_SHIFT_TXOP_LMT_PKT_NUM_8822E) +#define BIT_CLEAR_TXOP_LMT_PKT_NUM_8822E(x) \ + ((x) & (~BITS_TXOP_LMT_PKT_NUM_8822E)) +#define BIT_GET_TXOP_LMT_PKT_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_TXOP_LMT_PKT_NUM_8822E) & \ + BIT_MASK_TXOP_LMT_PKT_NUM_8822E) +#define BIT_SET_TXOP_LMT_PKT_NUM_8822E(x, v) \ + (BIT_CLEAR_TXOP_LMT_PKT_NUM_8822E(x) | BIT_TXOP_LMT_PKT_NUM_8822E(v)) + +/* 2 REG_BAR_TX_CTRL_8822E */ + +/* 2 REG_P2PON_DIS_TXTIME_8822E */ + +#define BIT_SHIFT_P2PON_DIS_TXTIME_8822E 0 +#define BIT_MASK_P2PON_DIS_TXTIME_8822E 0xff +#define BIT_P2PON_DIS_TXTIME_8822E(x) \ + (((x) & BIT_MASK_P2PON_DIS_TXTIME_8822E) \ + << BIT_SHIFT_P2PON_DIS_TXTIME_8822E) +#define BITS_P2PON_DIS_TXTIME_8822E \ + (BIT_MASK_P2PON_DIS_TXTIME_8822E << BIT_SHIFT_P2PON_DIS_TXTIME_8822E) +#define BIT_CLEAR_P2PON_DIS_TXTIME_8822E(x) \ + ((x) & (~BITS_P2PON_DIS_TXTIME_8822E)) +#define BIT_GET_P2PON_DIS_TXTIME_8822E(x) \ + (((x) >> BIT_SHIFT_P2PON_DIS_TXTIME_8822E) & \ + BIT_MASK_P2PON_DIS_TXTIME_8822E) +#define BIT_SET_P2PON_DIS_TXTIME_8822E(x, v) \ + (BIT_CLEAR_P2PON_DIS_TXTIME_8822E(x) | BIT_P2PON_DIS_TXTIME_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_CCA_TXEN_CNT_8822E */ +#define BIT_ENABLE_STOP_UPDATE_NAV_8822E BIT(21) +#define BIT_ENABLE_GEN_RANDON_SLOT_TX_8822E BIT(20) +#define BIT_ENABLE_RANDOM_SHIFT_TX_8822E BIT(19) +#define BIT_ENABLE_EDCA_REF_FUNCTION_8822E BIT(18) +#define BIT_CCA_TXEN_CNT_SWITCH_8822E BIT(17) +#define BIT_CCA_TXEN_CNT_EN_8822E BIT(16) + +#define BIT_SHIFT_CCA_TXEN_BIG_CNT_8822E 8 +#define BIT_MASK_CCA_TXEN_BIG_CNT_8822E 0xff +#define BIT_CCA_TXEN_BIG_CNT_8822E(x) \ + (((x) & BIT_MASK_CCA_TXEN_BIG_CNT_8822E) \ + << BIT_SHIFT_CCA_TXEN_BIG_CNT_8822E) +#define BITS_CCA_TXEN_BIG_CNT_8822E \ + (BIT_MASK_CCA_TXEN_BIG_CNT_8822E << BIT_SHIFT_CCA_TXEN_BIG_CNT_8822E) +#define BIT_CLEAR_CCA_TXEN_BIG_CNT_8822E(x) \ + ((x) & (~BITS_CCA_TXEN_BIG_CNT_8822E)) +#define BIT_GET_CCA_TXEN_BIG_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_CCA_TXEN_BIG_CNT_8822E) & \ + BIT_MASK_CCA_TXEN_BIG_CNT_8822E) +#define BIT_SET_CCA_TXEN_BIG_CNT_8822E(x, v) \ + (BIT_CLEAR_CCA_TXEN_BIG_CNT_8822E(x) | BIT_CCA_TXEN_BIG_CNT_8822E(v)) + +#define BIT_SHIFT_CCA_TXEN_SMALL_CNT_8822E 0 +#define BIT_MASK_CCA_TXEN_SMALL_CNT_8822E 0xff +#define BIT_CCA_TXEN_SMALL_CNT_8822E(x) \ + (((x) & BIT_MASK_CCA_TXEN_SMALL_CNT_8822E) \ + << BIT_SHIFT_CCA_TXEN_SMALL_CNT_8822E) +#define BITS_CCA_TXEN_SMALL_CNT_8822E \ + (BIT_MASK_CCA_TXEN_SMALL_CNT_8822E \ + << BIT_SHIFT_CCA_TXEN_SMALL_CNT_8822E) +#define BIT_CLEAR_CCA_TXEN_SMALL_CNT_8822E(x) \ + ((x) & (~BITS_CCA_TXEN_SMALL_CNT_8822E)) +#define BIT_GET_CCA_TXEN_SMALL_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_CCA_TXEN_SMALL_CNT_8822E) & \ + BIT_MASK_CCA_TXEN_SMALL_CNT_8822E) +#define BIT_SET_CCA_TXEN_SMALL_CNT_8822E(x, v) \ + (BIT_CLEAR_CCA_TXEN_SMALL_CNT_8822E(x) | \ + BIT_CCA_TXEN_SMALL_CNT_8822E(v)) + +/* 2 REG_MAX_INTER_COLLISION_8822E */ + +#define BIT_SHIFT_MAX_INTER_COLLISION_BK_8822E 24 +#define BIT_MASK_MAX_INTER_COLLISION_BK_8822E 0xff +#define BIT_MAX_INTER_COLLISION_BK_8822E(x) \ + (((x) & BIT_MASK_MAX_INTER_COLLISION_BK_8822E) \ + << BIT_SHIFT_MAX_INTER_COLLISION_BK_8822E) +#define BITS_MAX_INTER_COLLISION_BK_8822E \ + (BIT_MASK_MAX_INTER_COLLISION_BK_8822E \ + << BIT_SHIFT_MAX_INTER_COLLISION_BK_8822E) +#define BIT_CLEAR_MAX_INTER_COLLISION_BK_8822E(x) \ + ((x) & (~BITS_MAX_INTER_COLLISION_BK_8822E)) +#define BIT_GET_MAX_INTER_COLLISION_BK_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_INTER_COLLISION_BK_8822E) & \ + BIT_MASK_MAX_INTER_COLLISION_BK_8822E) +#define BIT_SET_MAX_INTER_COLLISION_BK_8822E(x, v) \ + (BIT_CLEAR_MAX_INTER_COLLISION_BK_8822E(x) | \ + BIT_MAX_INTER_COLLISION_BK_8822E(v)) + +#define BIT_SHIFT_MAX_INTER_COLLISION_BE_8822E 16 +#define BIT_MASK_MAX_INTER_COLLISION_BE_8822E 0xff +#define BIT_MAX_INTER_COLLISION_BE_8822E(x) \ + (((x) & BIT_MASK_MAX_INTER_COLLISION_BE_8822E) \ + << BIT_SHIFT_MAX_INTER_COLLISION_BE_8822E) +#define BITS_MAX_INTER_COLLISION_BE_8822E \ + (BIT_MASK_MAX_INTER_COLLISION_BE_8822E \ + << BIT_SHIFT_MAX_INTER_COLLISION_BE_8822E) +#define BIT_CLEAR_MAX_INTER_COLLISION_BE_8822E(x) \ + ((x) & (~BITS_MAX_INTER_COLLISION_BE_8822E)) +#define BIT_GET_MAX_INTER_COLLISION_BE_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_INTER_COLLISION_BE_8822E) & \ + BIT_MASK_MAX_INTER_COLLISION_BE_8822E) +#define BIT_SET_MAX_INTER_COLLISION_BE_8822E(x, v) \ + (BIT_CLEAR_MAX_INTER_COLLISION_BE_8822E(x) | \ + BIT_MAX_INTER_COLLISION_BE_8822E(v)) + +#define BIT_SHIFT_MAX_INTER_COLLISION_VI_8822E 8 +#define BIT_MASK_MAX_INTER_COLLISION_VI_8822E 0xff +#define BIT_MAX_INTER_COLLISION_VI_8822E(x) \ + (((x) & BIT_MASK_MAX_INTER_COLLISION_VI_8822E) \ + << BIT_SHIFT_MAX_INTER_COLLISION_VI_8822E) +#define BITS_MAX_INTER_COLLISION_VI_8822E \ + (BIT_MASK_MAX_INTER_COLLISION_VI_8822E \ + << BIT_SHIFT_MAX_INTER_COLLISION_VI_8822E) +#define BIT_CLEAR_MAX_INTER_COLLISION_VI_8822E(x) \ + ((x) & (~BITS_MAX_INTER_COLLISION_VI_8822E)) +#define BIT_GET_MAX_INTER_COLLISION_VI_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_INTER_COLLISION_VI_8822E) & \ + BIT_MASK_MAX_INTER_COLLISION_VI_8822E) +#define BIT_SET_MAX_INTER_COLLISION_VI_8822E(x, v) \ + (BIT_CLEAR_MAX_INTER_COLLISION_VI_8822E(x) | \ + BIT_MAX_INTER_COLLISION_VI_8822E(v)) + +#define BIT_SHIFT_MAX_INTER_COLLISION_VO_8822E 0 +#define BIT_MASK_MAX_INTER_COLLISION_VO_8822E 0xff +#define BIT_MAX_INTER_COLLISION_VO_8822E(x) \ + (((x) & BIT_MASK_MAX_INTER_COLLISION_VO_8822E) \ + << BIT_SHIFT_MAX_INTER_COLLISION_VO_8822E) +#define BITS_MAX_INTER_COLLISION_VO_8822E \ + (BIT_MASK_MAX_INTER_COLLISION_VO_8822E \ + << BIT_SHIFT_MAX_INTER_COLLISION_VO_8822E) +#define BIT_CLEAR_MAX_INTER_COLLISION_VO_8822E(x) \ + ((x) & (~BITS_MAX_INTER_COLLISION_VO_8822E)) +#define BIT_GET_MAX_INTER_COLLISION_VO_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_INTER_COLLISION_VO_8822E) & \ + BIT_MASK_MAX_INTER_COLLISION_VO_8822E) +#define BIT_SET_MAX_INTER_COLLISION_VO_8822E(x, v) \ + (BIT_CLEAR_MAX_INTER_COLLISION_VO_8822E(x) | \ + BIT_MAX_INTER_COLLISION_VO_8822E(v)) + +/* 2 REG_MAX_INTER_COLLISION_CNT_8822E */ +#define BIT_MAX_INTER_COLLISION_EN_8822E BIT(16) + +#define BIT_SHIFT_MAX_INTER_COLLISION_CNT_BK_8822E 12 +#define BIT_MASK_MAX_INTER_COLLISION_CNT_BK_8822E 0xf +#define BIT_MAX_INTER_COLLISION_CNT_BK_8822E(x) \ + (((x) & BIT_MASK_MAX_INTER_COLLISION_CNT_BK_8822E) \ + << BIT_SHIFT_MAX_INTER_COLLISION_CNT_BK_8822E) +#define BITS_MAX_INTER_COLLISION_CNT_BK_8822E \ + (BIT_MASK_MAX_INTER_COLLISION_CNT_BK_8822E \ + << BIT_SHIFT_MAX_INTER_COLLISION_CNT_BK_8822E) +#define BIT_CLEAR_MAX_INTER_COLLISION_CNT_BK_8822E(x) \ + ((x) & (~BITS_MAX_INTER_COLLISION_CNT_BK_8822E)) +#define BIT_GET_MAX_INTER_COLLISION_CNT_BK_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_INTER_COLLISION_CNT_BK_8822E) & \ + BIT_MASK_MAX_INTER_COLLISION_CNT_BK_8822E) +#define BIT_SET_MAX_INTER_COLLISION_CNT_BK_8822E(x, v) \ + (BIT_CLEAR_MAX_INTER_COLLISION_CNT_BK_8822E(x) | \ + BIT_MAX_INTER_COLLISION_CNT_BK_8822E(v)) + +#define BIT_SHIFT_MAX_INTER_COLLISION_CNT_BE_8822E 8 +#define BIT_MASK_MAX_INTER_COLLISION_CNT_BE_8822E 0xf +#define BIT_MAX_INTER_COLLISION_CNT_BE_8822E(x) \ + (((x) & BIT_MASK_MAX_INTER_COLLISION_CNT_BE_8822E) \ + << BIT_SHIFT_MAX_INTER_COLLISION_CNT_BE_8822E) +#define BITS_MAX_INTER_COLLISION_CNT_BE_8822E \ + (BIT_MASK_MAX_INTER_COLLISION_CNT_BE_8822E \ + << BIT_SHIFT_MAX_INTER_COLLISION_CNT_BE_8822E) +#define BIT_CLEAR_MAX_INTER_COLLISION_CNT_BE_8822E(x) \ + ((x) & (~BITS_MAX_INTER_COLLISION_CNT_BE_8822E)) +#define BIT_GET_MAX_INTER_COLLISION_CNT_BE_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_INTER_COLLISION_CNT_BE_8822E) & \ + BIT_MASK_MAX_INTER_COLLISION_CNT_BE_8822E) +#define BIT_SET_MAX_INTER_COLLISION_CNT_BE_8822E(x, v) \ + (BIT_CLEAR_MAX_INTER_COLLISION_CNT_BE_8822E(x) | \ + BIT_MAX_INTER_COLLISION_CNT_BE_8822E(v)) + +#define BIT_SHIFT_MAX_INTER_COLLISION_CNT_VI_8822E 4 +#define BIT_MASK_MAX_INTER_COLLISION_CNT_VI_8822E 0xf +#define BIT_MAX_INTER_COLLISION_CNT_VI_8822E(x) \ + (((x) & BIT_MASK_MAX_INTER_COLLISION_CNT_VI_8822E) \ + << BIT_SHIFT_MAX_INTER_COLLISION_CNT_VI_8822E) +#define BITS_MAX_INTER_COLLISION_CNT_VI_8822E \ + (BIT_MASK_MAX_INTER_COLLISION_CNT_VI_8822E \ + << BIT_SHIFT_MAX_INTER_COLLISION_CNT_VI_8822E) +#define BIT_CLEAR_MAX_INTER_COLLISION_CNT_VI_8822E(x) \ + ((x) & (~BITS_MAX_INTER_COLLISION_CNT_VI_8822E)) +#define BIT_GET_MAX_INTER_COLLISION_CNT_VI_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_INTER_COLLISION_CNT_VI_8822E) & \ + BIT_MASK_MAX_INTER_COLLISION_CNT_VI_8822E) +#define BIT_SET_MAX_INTER_COLLISION_CNT_VI_8822E(x, v) \ + (BIT_CLEAR_MAX_INTER_COLLISION_CNT_VI_8822E(x) | \ + BIT_MAX_INTER_COLLISION_CNT_VI_8822E(v)) + +#define BIT_SHIFT_MAX_INTER_COLLISION_CNT_VO_8822E 0 +#define BIT_MASK_MAX_INTER_COLLISION_CNT_VO_8822E 0xf +#define BIT_MAX_INTER_COLLISION_CNT_VO_8822E(x) \ + (((x) & BIT_MASK_MAX_INTER_COLLISION_CNT_VO_8822E) \ + << BIT_SHIFT_MAX_INTER_COLLISION_CNT_VO_8822E) +#define BITS_MAX_INTER_COLLISION_CNT_VO_8822E \ + (BIT_MASK_MAX_INTER_COLLISION_CNT_VO_8822E \ + << BIT_SHIFT_MAX_INTER_COLLISION_CNT_VO_8822E) +#define BIT_CLEAR_MAX_INTER_COLLISION_CNT_VO_8822E(x) \ + ((x) & (~BITS_MAX_INTER_COLLISION_CNT_VO_8822E)) +#define BIT_GET_MAX_INTER_COLLISION_CNT_VO_8822E(x) \ + (((x) >> BIT_SHIFT_MAX_INTER_COLLISION_CNT_VO_8822E) & \ + BIT_MASK_MAX_INTER_COLLISION_CNT_VO_8822E) +#define BIT_SET_MAX_INTER_COLLISION_CNT_VO_8822E(x, v) \ + (BIT_CLEAR_MAX_INTER_COLLISION_CNT_VO_8822E(x) | \ + BIT_MAX_INTER_COLLISION_CNT_VO_8822E(v)) + +/* 2 REG_TBTT_PROHIBIT_8822E */ + +#define BIT_SHIFT_TBTT_HOLD_TIME_AP_8822E 8 +#define BIT_MASK_TBTT_HOLD_TIME_AP_8822E 0xfff +#define BIT_TBTT_HOLD_TIME_AP_8822E(x) \ + (((x) & BIT_MASK_TBTT_HOLD_TIME_AP_8822E) \ + << BIT_SHIFT_TBTT_HOLD_TIME_AP_8822E) +#define BITS_TBTT_HOLD_TIME_AP_8822E \ + (BIT_MASK_TBTT_HOLD_TIME_AP_8822E << BIT_SHIFT_TBTT_HOLD_TIME_AP_8822E) +#define BIT_CLEAR_TBTT_HOLD_TIME_AP_8822E(x) \ + ((x) & (~BITS_TBTT_HOLD_TIME_AP_8822E)) +#define BIT_GET_TBTT_HOLD_TIME_AP_8822E(x) \ + (((x) >> BIT_SHIFT_TBTT_HOLD_TIME_AP_8822E) & \ + BIT_MASK_TBTT_HOLD_TIME_AP_8822E) +#define BIT_SET_TBTT_HOLD_TIME_AP_8822E(x, v) \ + (BIT_CLEAR_TBTT_HOLD_TIME_AP_8822E(x) | BIT_TBTT_HOLD_TIME_AP_8822E(v)) + +#define BIT_SHIFT_TBTT_PROHIBIT_SETUP_8822E 0 +#define BIT_MASK_TBTT_PROHIBIT_SETUP_8822E 0xf +#define BIT_TBTT_PROHIBIT_SETUP_8822E(x) \ + (((x) & BIT_MASK_TBTT_PROHIBIT_SETUP_8822E) \ + << BIT_SHIFT_TBTT_PROHIBIT_SETUP_8822E) +#define BITS_TBTT_PROHIBIT_SETUP_8822E \ + (BIT_MASK_TBTT_PROHIBIT_SETUP_8822E \ + << BIT_SHIFT_TBTT_PROHIBIT_SETUP_8822E) +#define BIT_CLEAR_TBTT_PROHIBIT_SETUP_8822E(x) \ + ((x) & (~BITS_TBTT_PROHIBIT_SETUP_8822E)) +#define BIT_GET_TBTT_PROHIBIT_SETUP_8822E(x) \ + (((x) >> BIT_SHIFT_TBTT_PROHIBIT_SETUP_8822E) & \ + BIT_MASK_TBTT_PROHIBIT_SETUP_8822E) +#define BIT_SET_TBTT_PROHIBIT_SETUP_8822E(x, v) \ + (BIT_CLEAR_TBTT_PROHIBIT_SETUP_8822E(x) | \ + BIT_TBTT_PROHIBIT_SETUP_8822E(v)) + +/* 2 REG_P2PPS_STATE_8822E */ +#define BIT_POWER_STATE_8822E BIT(7) +#define BIT_CTWINDOW_ON_8822E BIT(6) +#define BIT_BEACON_AREA_ON_8822E BIT(5) +#define BIT_CTWIN_EARLY_DISTX_8822E BIT(4) +#define BIT_NOA1_OFF_PERIOD_8822E BIT(3) +#define BIT_FORCE_DOZE1_8822E BIT(2) +#define BIT_NOA0_OFF_PERIOD_8822E BIT(1) +#define BIT_FORCE_DOZE0_8822E BIT(0) + +/* 2 REG_RD_NAV_NXT_8822E */ + +#define BIT_SHIFT_RD_NAV_PROT_NXT_8822E 0 +#define BIT_MASK_RD_NAV_PROT_NXT_8822E 0xffff +#define BIT_RD_NAV_PROT_NXT_8822E(x) \ + (((x) & BIT_MASK_RD_NAV_PROT_NXT_8822E) \ + << BIT_SHIFT_RD_NAV_PROT_NXT_8822E) +#define BITS_RD_NAV_PROT_NXT_8822E \ + (BIT_MASK_RD_NAV_PROT_NXT_8822E << BIT_SHIFT_RD_NAV_PROT_NXT_8822E) +#define BIT_CLEAR_RD_NAV_PROT_NXT_8822E(x) ((x) & (~BITS_RD_NAV_PROT_NXT_8822E)) +#define BIT_GET_RD_NAV_PROT_NXT_8822E(x) \ + (((x) >> BIT_SHIFT_RD_NAV_PROT_NXT_8822E) & \ + BIT_MASK_RD_NAV_PROT_NXT_8822E) +#define BIT_SET_RD_NAV_PROT_NXT_8822E(x, v) \ + (BIT_CLEAR_RD_NAV_PROT_NXT_8822E(x) | BIT_RD_NAV_PROT_NXT_8822E(v)) + +/* 2 REG_NAV_PROT_LEN_8822E */ + +#define BIT_SHIFT_NAV_PROT_LEN_8822E 0 +#define BIT_MASK_NAV_PROT_LEN_8822E 0xffff +#define BIT_NAV_PROT_LEN_8822E(x) \ + (((x) & BIT_MASK_NAV_PROT_LEN_8822E) << BIT_SHIFT_NAV_PROT_LEN_8822E) +#define BITS_NAV_PROT_LEN_8822E \ + (BIT_MASK_NAV_PROT_LEN_8822E << BIT_SHIFT_NAV_PROT_LEN_8822E) +#define BIT_CLEAR_NAV_PROT_LEN_8822E(x) ((x) & (~BITS_NAV_PROT_LEN_8822E)) +#define BIT_GET_NAV_PROT_LEN_8822E(x) \ + (((x) >> BIT_SHIFT_NAV_PROT_LEN_8822E) & BIT_MASK_NAV_PROT_LEN_8822E) +#define BIT_SET_NAV_PROT_LEN_8822E(x, v) \ + (BIT_CLEAR_NAV_PROT_LEN_8822E(x) | BIT_NAV_PROT_LEN_8822E(v)) + +/* 2 REG_FTM_PTT_8822E */ + +#define BIT_SHIFT_FTM_PTT_TSF_R2T_SEL_8822E 22 +#define BIT_MASK_FTM_PTT_TSF_R2T_SEL_8822E 0x7 +#define BIT_FTM_PTT_TSF_R2T_SEL_8822E(x) \ + (((x) & BIT_MASK_FTM_PTT_TSF_R2T_SEL_8822E) \ + << BIT_SHIFT_FTM_PTT_TSF_R2T_SEL_8822E) +#define BITS_FTM_PTT_TSF_R2T_SEL_8822E \ + (BIT_MASK_FTM_PTT_TSF_R2T_SEL_8822E \ + << BIT_SHIFT_FTM_PTT_TSF_R2T_SEL_8822E) +#define BIT_CLEAR_FTM_PTT_TSF_R2T_SEL_8822E(x) \ + ((x) & (~BITS_FTM_PTT_TSF_R2T_SEL_8822E)) +#define BIT_GET_FTM_PTT_TSF_R2T_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_FTM_PTT_TSF_R2T_SEL_8822E) & \ + BIT_MASK_FTM_PTT_TSF_R2T_SEL_8822E) +#define BIT_SET_FTM_PTT_TSF_R2T_SEL_8822E(x, v) \ + (BIT_CLEAR_FTM_PTT_TSF_R2T_SEL_8822E(x) | \ + BIT_FTM_PTT_TSF_R2T_SEL_8822E(v)) + +#define BIT_SHIFT_FTM_PTT_TSF_T2R_SEL_8822E 19 +#define BIT_MASK_FTM_PTT_TSF_T2R_SEL_8822E 0x7 +#define BIT_FTM_PTT_TSF_T2R_SEL_8822E(x) \ + (((x) & BIT_MASK_FTM_PTT_TSF_T2R_SEL_8822E) \ + << BIT_SHIFT_FTM_PTT_TSF_T2R_SEL_8822E) +#define BITS_FTM_PTT_TSF_T2R_SEL_8822E \ + (BIT_MASK_FTM_PTT_TSF_T2R_SEL_8822E \ + << BIT_SHIFT_FTM_PTT_TSF_T2R_SEL_8822E) +#define BIT_CLEAR_FTM_PTT_TSF_T2R_SEL_8822E(x) \ + ((x) & (~BITS_FTM_PTT_TSF_T2R_SEL_8822E)) +#define BIT_GET_FTM_PTT_TSF_T2R_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_FTM_PTT_TSF_T2R_SEL_8822E) & \ + BIT_MASK_FTM_PTT_TSF_T2R_SEL_8822E) +#define BIT_SET_FTM_PTT_TSF_T2R_SEL_8822E(x, v) \ + (BIT_CLEAR_FTM_PTT_TSF_T2R_SEL_8822E(x) | \ + BIT_FTM_PTT_TSF_T2R_SEL_8822E(v)) + +#define BIT_SHIFT_FTM_PTT_TSF_SEL_8822E 16 +#define BIT_MASK_FTM_PTT_TSF_SEL_8822E 0x7 +#define BIT_FTM_PTT_TSF_SEL_8822E(x) \ + (((x) & BIT_MASK_FTM_PTT_TSF_SEL_8822E) \ + << BIT_SHIFT_FTM_PTT_TSF_SEL_8822E) +#define BITS_FTM_PTT_TSF_SEL_8822E \ + (BIT_MASK_FTM_PTT_TSF_SEL_8822E << BIT_SHIFT_FTM_PTT_TSF_SEL_8822E) +#define BIT_CLEAR_FTM_PTT_TSF_SEL_8822E(x) ((x) & (~BITS_FTM_PTT_TSF_SEL_8822E)) +#define BIT_GET_FTM_PTT_TSF_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_FTM_PTT_TSF_SEL_8822E) & \ + BIT_MASK_FTM_PTT_TSF_SEL_8822E) +#define BIT_SET_FTM_PTT_TSF_SEL_8822E(x, v) \ + (BIT_CLEAR_FTM_PTT_TSF_SEL_8822E(x) | BIT_FTM_PTT_TSF_SEL_8822E(v)) + +#define BIT_SHIFT_FTM_PTT_VALUE_8822E 0 +#define BIT_MASK_FTM_PTT_VALUE_8822E 0xffff +#define BIT_FTM_PTT_VALUE_8822E(x) \ + (((x) & BIT_MASK_FTM_PTT_VALUE_8822E) << BIT_SHIFT_FTM_PTT_VALUE_8822E) +#define BITS_FTM_PTT_VALUE_8822E \ + (BIT_MASK_FTM_PTT_VALUE_8822E << BIT_SHIFT_FTM_PTT_VALUE_8822E) +#define BIT_CLEAR_FTM_PTT_VALUE_8822E(x) ((x) & (~BITS_FTM_PTT_VALUE_8822E)) +#define BIT_GET_FTM_PTT_VALUE_8822E(x) \ + (((x) >> BIT_SHIFT_FTM_PTT_VALUE_8822E) & BIT_MASK_FTM_PTT_VALUE_8822E) +#define BIT_SET_FTM_PTT_VALUE_8822E(x, v) \ + (BIT_CLEAR_FTM_PTT_VALUE_8822E(x) | BIT_FTM_PTT_VALUE_8822E(v)) + +/* 2 REG_FTM_TSF_8822E */ + +#define BIT_SHIFT_FTM_T2_TSF_8822E 16 +#define BIT_MASK_FTM_T2_TSF_8822E 0xffff +#define BIT_FTM_T2_TSF_8822E(x) \ + (((x) & BIT_MASK_FTM_T2_TSF_8822E) << BIT_SHIFT_FTM_T2_TSF_8822E) +#define BITS_FTM_T2_TSF_8822E \ + (BIT_MASK_FTM_T2_TSF_8822E << BIT_SHIFT_FTM_T2_TSF_8822E) +#define BIT_CLEAR_FTM_T2_TSF_8822E(x) ((x) & (~BITS_FTM_T2_TSF_8822E)) +#define BIT_GET_FTM_T2_TSF_8822E(x) \ + (((x) >> BIT_SHIFT_FTM_T2_TSF_8822E) & BIT_MASK_FTM_T2_TSF_8822E) +#define BIT_SET_FTM_T2_TSF_8822E(x, v) \ + (BIT_CLEAR_FTM_T2_TSF_8822E(x) | BIT_FTM_T2_TSF_8822E(v)) + +#define BIT_SHIFT_FTM_T1_TSF_8822E 0 +#define BIT_MASK_FTM_T1_TSF_8822E 0xffff +#define BIT_FTM_T1_TSF_8822E(x) \ + (((x) & BIT_MASK_FTM_T1_TSF_8822E) << BIT_SHIFT_FTM_T1_TSF_8822E) +#define BITS_FTM_T1_TSF_8822E \ + (BIT_MASK_FTM_T1_TSF_8822E << BIT_SHIFT_FTM_T1_TSF_8822E) +#define BIT_CLEAR_FTM_T1_TSF_8822E(x) ((x) & (~BITS_FTM_T1_TSF_8822E)) +#define BIT_GET_FTM_T1_TSF_8822E(x) \ + (((x) >> BIT_SHIFT_FTM_T1_TSF_8822E) & BIT_MASK_FTM_T1_TSF_8822E) +#define BIT_SET_FTM_T1_TSF_8822E(x, v) \ + (BIT_CLEAR_FTM_T1_TSF_8822E(x) | BIT_FTM_T1_TSF_8822E(v)) + +/* 2 REG_BCN_CTRL_8822E */ +#define BIT_DIS_RX_BSSID_FIT_8822E BIT(6) +#define BIT_P0_EN_TXBCN_RPT_8822E BIT(5) +#define BIT_DIS_TSF_UDT_8822E BIT(4) +#define BIT_EN_BCN_FUNCTION_8822E BIT(3) +#define BIT_P0_EN_RXBCN_RPT_8822E BIT(2) +#define BIT_EN_P2P_CTWINDOW_8822E BIT(1) +#define BIT_EN_P2P_BCNQ_AREA_8822E BIT(0) + +/* 2 REG_BCN_CTRL_CLINT0_8822E */ +#define BIT_CLI0_DIS_RX_BSSID_FIT_8822E BIT(6) +#define BIT_CLI0_DIS_TSF_UDT_8822E BIT(4) +#define BIT_CLI0_EN_BCN_FUNCTION_8822E BIT(3) +#define BIT_CLI0_EN_RXBCN_RPT_8822E BIT(2) +#define BIT_CLI0_ENP2P_CTWINDOW_8822E BIT(1) +#define BIT_CLI0_ENP2P_BCNQ_AREA_8822E BIT(0) + +/* 2 REG_MBID_NUM_8822E */ +#define BIT_EN_PRE_DL_BEACON_8822E BIT(3) + +#define BIT_SHIFT_MBID_BCN_NUM_8822E 0 +#define BIT_MASK_MBID_BCN_NUM_8822E 0x7 +#define BIT_MBID_BCN_NUM_8822E(x) \ + (((x) & BIT_MASK_MBID_BCN_NUM_8822E) << BIT_SHIFT_MBID_BCN_NUM_8822E) +#define BITS_MBID_BCN_NUM_8822E \ + (BIT_MASK_MBID_BCN_NUM_8822E << BIT_SHIFT_MBID_BCN_NUM_8822E) +#define BIT_CLEAR_MBID_BCN_NUM_8822E(x) ((x) & (~BITS_MBID_BCN_NUM_8822E)) +#define BIT_GET_MBID_BCN_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_MBID_BCN_NUM_8822E) & BIT_MASK_MBID_BCN_NUM_8822E) +#define BIT_SET_MBID_BCN_NUM_8822E(x, v) \ + (BIT_CLEAR_MBID_BCN_NUM_8822E(x) | BIT_MBID_BCN_NUM_8822E(v)) + +/* 2 REG_DUAL_TSF_RST_8822E */ +#define BIT_FREECNT_RST_8822E BIT(5) +#define BIT_TSFTR_CLI3_RST_8822E BIT(4) +#define BIT_TSFTR_CLI2_RST_8822E BIT(3) +#define BIT_TSFTR_CLI1_RST_8822E BIT(2) +#define BIT_TSFTR_CLI0_RST_8822E BIT(1) +#define BIT_TSFTR_RST_8822E BIT(0) + +/* 2 REG_MBSSID_BCN_SPACE_8822E */ + +#define BIT_SHIFT_BCN_TIMER_SEL_FWRD_8822E 28 +#define BIT_MASK_BCN_TIMER_SEL_FWRD_8822E 0x7 +#define BIT_BCN_TIMER_SEL_FWRD_8822E(x) \ + (((x) & BIT_MASK_BCN_TIMER_SEL_FWRD_8822E) \ + << BIT_SHIFT_BCN_TIMER_SEL_FWRD_8822E) +#define BITS_BCN_TIMER_SEL_FWRD_8822E \ + (BIT_MASK_BCN_TIMER_SEL_FWRD_8822E \ + << BIT_SHIFT_BCN_TIMER_SEL_FWRD_8822E) +#define BIT_CLEAR_BCN_TIMER_SEL_FWRD_8822E(x) \ + ((x) & (~BITS_BCN_TIMER_SEL_FWRD_8822E)) +#define BIT_GET_BCN_TIMER_SEL_FWRD_8822E(x) \ + (((x) >> BIT_SHIFT_BCN_TIMER_SEL_FWRD_8822E) & \ + BIT_MASK_BCN_TIMER_SEL_FWRD_8822E) +#define BIT_SET_BCN_TIMER_SEL_FWRD_8822E(x, v) \ + (BIT_CLEAR_BCN_TIMER_SEL_FWRD_8822E(x) | \ + BIT_BCN_TIMER_SEL_FWRD_8822E(v)) + +#define BIT_SHIFT_BCN_SPACE_CLINT0_8822E 16 +#define BIT_MASK_BCN_SPACE_CLINT0_8822E 0xfff +#define BIT_BCN_SPACE_CLINT0_8822E(x) \ + (((x) & BIT_MASK_BCN_SPACE_CLINT0_8822E) \ + << BIT_SHIFT_BCN_SPACE_CLINT0_8822E) +#define BITS_BCN_SPACE_CLINT0_8822E \ + (BIT_MASK_BCN_SPACE_CLINT0_8822E << BIT_SHIFT_BCN_SPACE_CLINT0_8822E) +#define BIT_CLEAR_BCN_SPACE_CLINT0_8822E(x) \ + ((x) & (~BITS_BCN_SPACE_CLINT0_8822E)) +#define BIT_GET_BCN_SPACE_CLINT0_8822E(x) \ + (((x) >> BIT_SHIFT_BCN_SPACE_CLINT0_8822E) & \ + BIT_MASK_BCN_SPACE_CLINT0_8822E) +#define BIT_SET_BCN_SPACE_CLINT0_8822E(x, v) \ + (BIT_CLEAR_BCN_SPACE_CLINT0_8822E(x) | BIT_BCN_SPACE_CLINT0_8822E(v)) + +#define BIT_SHIFT_BCN_SPACE0_8822E 0 +#define BIT_MASK_BCN_SPACE0_8822E 0xffff +#define BIT_BCN_SPACE0_8822E(x) \ + (((x) & BIT_MASK_BCN_SPACE0_8822E) << BIT_SHIFT_BCN_SPACE0_8822E) +#define BITS_BCN_SPACE0_8822E \ + (BIT_MASK_BCN_SPACE0_8822E << BIT_SHIFT_BCN_SPACE0_8822E) +#define BIT_CLEAR_BCN_SPACE0_8822E(x) ((x) & (~BITS_BCN_SPACE0_8822E)) +#define BIT_GET_BCN_SPACE0_8822E(x) \ + (((x) >> BIT_SHIFT_BCN_SPACE0_8822E) & BIT_MASK_BCN_SPACE0_8822E) +#define BIT_SET_BCN_SPACE0_8822E(x, v) \ + (BIT_CLEAR_BCN_SPACE0_8822E(x) | BIT_BCN_SPACE0_8822E(v)) + +/* 2 REG_DRVERLYINT_8822E */ + +#define BIT_SHIFT_DRVERLYITV_8822E 0 +#define BIT_MASK_DRVERLYITV_8822E 0xff +#define BIT_DRVERLYITV_8822E(x) \ + (((x) & BIT_MASK_DRVERLYITV_8822E) << BIT_SHIFT_DRVERLYITV_8822E) +#define BITS_DRVERLYITV_8822E \ + (BIT_MASK_DRVERLYITV_8822E << BIT_SHIFT_DRVERLYITV_8822E) +#define BIT_CLEAR_DRVERLYITV_8822E(x) ((x) & (~BITS_DRVERLYITV_8822E)) +#define BIT_GET_DRVERLYITV_8822E(x) \ + (((x) >> BIT_SHIFT_DRVERLYITV_8822E) & BIT_MASK_DRVERLYITV_8822E) +#define BIT_SET_DRVERLYITV_8822E(x, v) \ + (BIT_CLEAR_DRVERLYITV_8822E(x) | BIT_DRVERLYITV_8822E(v)) + +/* 2 REG_BCNDMATIM_8822E */ + +#define BIT_SHIFT_BCNDMATIM_8822E 0 +#define BIT_MASK_BCNDMATIM_8822E 0xff +#define BIT_BCNDMATIM_8822E(x) \ + (((x) & BIT_MASK_BCNDMATIM_8822E) << BIT_SHIFT_BCNDMATIM_8822E) +#define BITS_BCNDMATIM_8822E \ + (BIT_MASK_BCNDMATIM_8822E << BIT_SHIFT_BCNDMATIM_8822E) +#define BIT_CLEAR_BCNDMATIM_8822E(x) ((x) & (~BITS_BCNDMATIM_8822E)) +#define BIT_GET_BCNDMATIM_8822E(x) \ + (((x) >> BIT_SHIFT_BCNDMATIM_8822E) & BIT_MASK_BCNDMATIM_8822E) +#define BIT_SET_BCNDMATIM_8822E(x, v) \ + (BIT_CLEAR_BCNDMATIM_8822E(x) | BIT_BCNDMATIM_8822E(v)) + +/* 2 REG_ATIMWND_8822E */ + +#define BIT_SHIFT_ATIMWND0_8822E 0 +#define BIT_MASK_ATIMWND0_8822E 0xffff +#define BIT_ATIMWND0_8822E(x) \ + (((x) & BIT_MASK_ATIMWND0_8822E) << BIT_SHIFT_ATIMWND0_8822E) +#define BITS_ATIMWND0_8822E \ + (BIT_MASK_ATIMWND0_8822E << BIT_SHIFT_ATIMWND0_8822E) +#define BIT_CLEAR_ATIMWND0_8822E(x) ((x) & (~BITS_ATIMWND0_8822E)) +#define BIT_GET_ATIMWND0_8822E(x) \ + (((x) >> BIT_SHIFT_ATIMWND0_8822E) & BIT_MASK_ATIMWND0_8822E) +#define BIT_SET_ATIMWND0_8822E(x, v) \ + (BIT_CLEAR_ATIMWND0_8822E(x) | BIT_ATIMWND0_8822E(v)) + +/* 2 REG_USTIME_TSF_8822E */ + +#define BIT_SHIFT_USTIME_TSF_V1_8822E 0 +#define BIT_MASK_USTIME_TSF_V1_8822E 0xff +#define BIT_USTIME_TSF_V1_8822E(x) \ + (((x) & BIT_MASK_USTIME_TSF_V1_8822E) << BIT_SHIFT_USTIME_TSF_V1_8822E) +#define BITS_USTIME_TSF_V1_8822E \ + (BIT_MASK_USTIME_TSF_V1_8822E << BIT_SHIFT_USTIME_TSF_V1_8822E) +#define BIT_CLEAR_USTIME_TSF_V1_8822E(x) ((x) & (~BITS_USTIME_TSF_V1_8822E)) +#define BIT_GET_USTIME_TSF_V1_8822E(x) \ + (((x) >> BIT_SHIFT_USTIME_TSF_V1_8822E) & BIT_MASK_USTIME_TSF_V1_8822E) +#define BIT_SET_USTIME_TSF_V1_8822E(x, v) \ + (BIT_CLEAR_USTIME_TSF_V1_8822E(x) | BIT_USTIME_TSF_V1_8822E(v)) + +/* 2 REG_BCN_MAX_ERR_8822E */ + +#define BIT_SHIFT_BCN_MAX_ERR_8822E 0 +#define BIT_MASK_BCN_MAX_ERR_8822E 0xff +#define BIT_BCN_MAX_ERR_8822E(x) \ + (((x) & BIT_MASK_BCN_MAX_ERR_8822E) << BIT_SHIFT_BCN_MAX_ERR_8822E) +#define BITS_BCN_MAX_ERR_8822E \ + (BIT_MASK_BCN_MAX_ERR_8822E << BIT_SHIFT_BCN_MAX_ERR_8822E) +#define BIT_CLEAR_BCN_MAX_ERR_8822E(x) ((x) & (~BITS_BCN_MAX_ERR_8822E)) +#define BIT_GET_BCN_MAX_ERR_8822E(x) \ + (((x) >> BIT_SHIFT_BCN_MAX_ERR_8822E) & BIT_MASK_BCN_MAX_ERR_8822E) +#define BIT_SET_BCN_MAX_ERR_8822E(x, v) \ + (BIT_CLEAR_BCN_MAX_ERR_8822E(x) | BIT_BCN_MAX_ERR_8822E(v)) + +/* 2 REG_RXTSF_OFFSET_CCK_8822E */ + +#define BIT_SHIFT_CCK_RXTSF_OFFSET_8822E 0 +#define BIT_MASK_CCK_RXTSF_OFFSET_8822E 0xff +#define BIT_CCK_RXTSF_OFFSET_8822E(x) \ + (((x) & BIT_MASK_CCK_RXTSF_OFFSET_8822E) \ + << BIT_SHIFT_CCK_RXTSF_OFFSET_8822E) +#define BITS_CCK_RXTSF_OFFSET_8822E \ + (BIT_MASK_CCK_RXTSF_OFFSET_8822E << BIT_SHIFT_CCK_RXTSF_OFFSET_8822E) +#define BIT_CLEAR_CCK_RXTSF_OFFSET_8822E(x) \ + ((x) & (~BITS_CCK_RXTSF_OFFSET_8822E)) +#define BIT_GET_CCK_RXTSF_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_CCK_RXTSF_OFFSET_8822E) & \ + BIT_MASK_CCK_RXTSF_OFFSET_8822E) +#define BIT_SET_CCK_RXTSF_OFFSET_8822E(x, v) \ + (BIT_CLEAR_CCK_RXTSF_OFFSET_8822E(x) | BIT_CCK_RXTSF_OFFSET_8822E(v)) + +/* 2 REG_RXTSF_OFFSET_OFDM_8822E */ + +#define BIT_SHIFT_OFDM_RXTSF_OFFSET_8822E 0 +#define BIT_MASK_OFDM_RXTSF_OFFSET_8822E 0xff +#define BIT_OFDM_RXTSF_OFFSET_8822E(x) \ + (((x) & BIT_MASK_OFDM_RXTSF_OFFSET_8822E) \ + << BIT_SHIFT_OFDM_RXTSF_OFFSET_8822E) +#define BITS_OFDM_RXTSF_OFFSET_8822E \ + (BIT_MASK_OFDM_RXTSF_OFFSET_8822E << BIT_SHIFT_OFDM_RXTSF_OFFSET_8822E) +#define BIT_CLEAR_OFDM_RXTSF_OFFSET_8822E(x) \ + ((x) & (~BITS_OFDM_RXTSF_OFFSET_8822E)) +#define BIT_GET_OFDM_RXTSF_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_OFDM_RXTSF_OFFSET_8822E) & \ + BIT_MASK_OFDM_RXTSF_OFFSET_8822E) +#define BIT_SET_OFDM_RXTSF_OFFSET_8822E(x, v) \ + (BIT_CLEAR_OFDM_RXTSF_OFFSET_8822E(x) | BIT_OFDM_RXTSF_OFFSET_8822E(v)) + +/* 2 REG_TSFTR_8822E */ + +#define BIT_SHIFT_TSF_TIMER_V1_8822E 0 +#define BIT_MASK_TSF_TIMER_V1_8822E 0xffffffffL +#define BIT_TSF_TIMER_V1_8822E(x) \ + (((x) & BIT_MASK_TSF_TIMER_V1_8822E) << BIT_SHIFT_TSF_TIMER_V1_8822E) +#define BITS_TSF_TIMER_V1_8822E \ + (BIT_MASK_TSF_TIMER_V1_8822E << BIT_SHIFT_TSF_TIMER_V1_8822E) +#define BIT_CLEAR_TSF_TIMER_V1_8822E(x) ((x) & (~BITS_TSF_TIMER_V1_8822E)) +#define BIT_GET_TSF_TIMER_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TSF_TIMER_V1_8822E) & BIT_MASK_TSF_TIMER_V1_8822E) +#define BIT_SET_TSF_TIMER_V1_8822E(x, v) \ + (BIT_CLEAR_TSF_TIMER_V1_8822E(x) | BIT_TSF_TIMER_V1_8822E(v)) + +/* 2 REG_TSFTR_1_8822E */ + +#define BIT_SHIFT_TSF_TIMER_V2_8822E 0 +#define BIT_MASK_TSF_TIMER_V2_8822E 0xffffffffL +#define BIT_TSF_TIMER_V2_8822E(x) \ + (((x) & BIT_MASK_TSF_TIMER_V2_8822E) << BIT_SHIFT_TSF_TIMER_V2_8822E) +#define BITS_TSF_TIMER_V2_8822E \ + (BIT_MASK_TSF_TIMER_V2_8822E << BIT_SHIFT_TSF_TIMER_V2_8822E) +#define BIT_CLEAR_TSF_TIMER_V2_8822E(x) ((x) & (~BITS_TSF_TIMER_V2_8822E)) +#define BIT_GET_TSF_TIMER_V2_8822E(x) \ + (((x) >> BIT_SHIFT_TSF_TIMER_V2_8822E) & BIT_MASK_TSF_TIMER_V2_8822E) +#define BIT_SET_TSF_TIMER_V2_8822E(x, v) \ + (BIT_CLEAR_TSF_TIMER_V2_8822E(x) | BIT_TSF_TIMER_V2_8822E(v)) + +/* 2 REG_FREERUN_CNT_8822E */ + +#define BIT_SHIFT_FREERUN_CNT_V1_8822E 0 +#define BIT_MASK_FREERUN_CNT_V1_8822E 0xffffffffL +#define BIT_FREERUN_CNT_V1_8822E(x) \ + (((x) & BIT_MASK_FREERUN_CNT_V1_8822E) \ + << BIT_SHIFT_FREERUN_CNT_V1_8822E) +#define BITS_FREERUN_CNT_V1_8822E \ + (BIT_MASK_FREERUN_CNT_V1_8822E << BIT_SHIFT_FREERUN_CNT_V1_8822E) +#define BIT_CLEAR_FREERUN_CNT_V1_8822E(x) ((x) & (~BITS_FREERUN_CNT_V1_8822E)) +#define BIT_GET_FREERUN_CNT_V1_8822E(x) \ + (((x) >> BIT_SHIFT_FREERUN_CNT_V1_8822E) & \ + BIT_MASK_FREERUN_CNT_V1_8822E) +#define BIT_SET_FREERUN_CNT_V1_8822E(x, v) \ + (BIT_CLEAR_FREERUN_CNT_V1_8822E(x) | BIT_FREERUN_CNT_V1_8822E(v)) + +/* 2 REG_FREERUN_CNT_1_8822E */ + +#define BIT_SHIFT_FREERUN_CNT_V2_8822E 0 +#define BIT_MASK_FREERUN_CNT_V2_8822E 0xffffffffL +#define BIT_FREERUN_CNT_V2_8822E(x) \ + (((x) & BIT_MASK_FREERUN_CNT_V2_8822E) \ + << BIT_SHIFT_FREERUN_CNT_V2_8822E) +#define BITS_FREERUN_CNT_V2_8822E \ + (BIT_MASK_FREERUN_CNT_V2_8822E << BIT_SHIFT_FREERUN_CNT_V2_8822E) +#define BIT_CLEAR_FREERUN_CNT_V2_8822E(x) ((x) & (~BITS_FREERUN_CNT_V2_8822E)) +#define BIT_GET_FREERUN_CNT_V2_8822E(x) \ + (((x) >> BIT_SHIFT_FREERUN_CNT_V2_8822E) & \ + BIT_MASK_FREERUN_CNT_V2_8822E) +#define BIT_SET_FREERUN_CNT_V2_8822E(x, v) \ + (BIT_CLEAR_FREERUN_CNT_V2_8822E(x) | BIT_FREERUN_CNT_V2_8822E(v)) + +/* 2 REG_ATIMWND1_V1_8822E */ + +#define BIT_SHIFT_ATIMWND1_V1_8822E 0 +#define BIT_MASK_ATIMWND1_V1_8822E 0xff +#define BIT_ATIMWND1_V1_8822E(x) \ + (((x) & BIT_MASK_ATIMWND1_V1_8822E) << BIT_SHIFT_ATIMWND1_V1_8822E) +#define BITS_ATIMWND1_V1_8822E \ + (BIT_MASK_ATIMWND1_V1_8822E << BIT_SHIFT_ATIMWND1_V1_8822E) +#define BIT_CLEAR_ATIMWND1_V1_8822E(x) ((x) & (~BITS_ATIMWND1_V1_8822E)) +#define BIT_GET_ATIMWND1_V1_8822E(x) \ + (((x) >> BIT_SHIFT_ATIMWND1_V1_8822E) & BIT_MASK_ATIMWND1_V1_8822E) +#define BIT_SET_ATIMWND1_V1_8822E(x, v) \ + (BIT_CLEAR_ATIMWND1_V1_8822E(x) | BIT_ATIMWND1_V1_8822E(v)) + +/* 2 REG_TBTT_PROHIBIT_INFRA_8822E */ + +#define BIT_SHIFT_TBTT_PROHIBIT_INFRA_8822E 0 +#define BIT_MASK_TBTT_PROHIBIT_INFRA_8822E 0xff +#define BIT_TBTT_PROHIBIT_INFRA_8822E(x) \ + (((x) & BIT_MASK_TBTT_PROHIBIT_INFRA_8822E) \ + << BIT_SHIFT_TBTT_PROHIBIT_INFRA_8822E) +#define BITS_TBTT_PROHIBIT_INFRA_8822E \ + (BIT_MASK_TBTT_PROHIBIT_INFRA_8822E \ + << BIT_SHIFT_TBTT_PROHIBIT_INFRA_8822E) +#define BIT_CLEAR_TBTT_PROHIBIT_INFRA_8822E(x) \ + ((x) & (~BITS_TBTT_PROHIBIT_INFRA_8822E)) +#define BIT_GET_TBTT_PROHIBIT_INFRA_8822E(x) \ + (((x) >> BIT_SHIFT_TBTT_PROHIBIT_INFRA_8822E) & \ + BIT_MASK_TBTT_PROHIBIT_INFRA_8822E) +#define BIT_SET_TBTT_PROHIBIT_INFRA_8822E(x, v) \ + (BIT_CLEAR_TBTT_PROHIBIT_INFRA_8822E(x) | \ + BIT_TBTT_PROHIBIT_INFRA_8822E(v)) + +/* 2 REG_CTWND_8822E */ + +#define BIT_SHIFT_CTWND_8822E 0 +#define BIT_MASK_CTWND_8822E 0xff +#define BIT_CTWND_8822E(x) \ + (((x) & BIT_MASK_CTWND_8822E) << BIT_SHIFT_CTWND_8822E) +#define BITS_CTWND_8822E (BIT_MASK_CTWND_8822E << BIT_SHIFT_CTWND_8822E) +#define BIT_CLEAR_CTWND_8822E(x) ((x) & (~BITS_CTWND_8822E)) +#define BIT_GET_CTWND_8822E(x) \ + (((x) >> BIT_SHIFT_CTWND_8822E) & BIT_MASK_CTWND_8822E) +#define BIT_SET_CTWND_8822E(x, v) \ + (BIT_CLEAR_CTWND_8822E(x) | BIT_CTWND_8822E(v)) + +/* 2 REG_BCNIVLCUNT_8822E */ + +#define BIT_SHIFT_BCNIVLCUNT_8822E 0 +#define BIT_MASK_BCNIVLCUNT_8822E 0x7f +#define BIT_BCNIVLCUNT_8822E(x) \ + (((x) & BIT_MASK_BCNIVLCUNT_8822E) << BIT_SHIFT_BCNIVLCUNT_8822E) +#define BITS_BCNIVLCUNT_8822E \ + (BIT_MASK_BCNIVLCUNT_8822E << BIT_SHIFT_BCNIVLCUNT_8822E) +#define BIT_CLEAR_BCNIVLCUNT_8822E(x) ((x) & (~BITS_BCNIVLCUNT_8822E)) +#define BIT_GET_BCNIVLCUNT_8822E(x) \ + (((x) >> BIT_SHIFT_BCNIVLCUNT_8822E) & BIT_MASK_BCNIVLCUNT_8822E) +#define BIT_SET_BCNIVLCUNT_8822E(x, v) \ + (BIT_CLEAR_BCNIVLCUNT_8822E(x) | BIT_BCNIVLCUNT_8822E(v)) + +/* 2 REG_BCNDROPCTRL_8822E */ +#define BIT_BEACON_DROP_EN_8822E BIT(7) + +#define BIT_SHIFT_BEACON_DROP_IVL_8822E 0 +#define BIT_MASK_BEACON_DROP_IVL_8822E 0x7f +#define BIT_BEACON_DROP_IVL_8822E(x) \ + (((x) & BIT_MASK_BEACON_DROP_IVL_8822E) \ + << BIT_SHIFT_BEACON_DROP_IVL_8822E) +#define BITS_BEACON_DROP_IVL_8822E \ + (BIT_MASK_BEACON_DROP_IVL_8822E << BIT_SHIFT_BEACON_DROP_IVL_8822E) +#define BIT_CLEAR_BEACON_DROP_IVL_8822E(x) ((x) & (~BITS_BEACON_DROP_IVL_8822E)) +#define BIT_GET_BEACON_DROP_IVL_8822E(x) \ + (((x) >> BIT_SHIFT_BEACON_DROP_IVL_8822E) & \ + BIT_MASK_BEACON_DROP_IVL_8822E) +#define BIT_SET_BEACON_DROP_IVL_8822E(x, v) \ + (BIT_CLEAR_BEACON_DROP_IVL_8822E(x) | BIT_BEACON_DROP_IVL_8822E(v)) + +/* 2 REG_HGQ_TIMEOUT_PERIOD_8822E */ + +#define BIT_SHIFT_HGQ_TIMEOUT_PERIOD_8822E 0 +#define BIT_MASK_HGQ_TIMEOUT_PERIOD_8822E 0xff +#define BIT_HGQ_TIMEOUT_PERIOD_8822E(x) \ + (((x) & BIT_MASK_HGQ_TIMEOUT_PERIOD_8822E) \ + << BIT_SHIFT_HGQ_TIMEOUT_PERIOD_8822E) +#define BITS_HGQ_TIMEOUT_PERIOD_8822E \ + (BIT_MASK_HGQ_TIMEOUT_PERIOD_8822E \ + << BIT_SHIFT_HGQ_TIMEOUT_PERIOD_8822E) +#define BIT_CLEAR_HGQ_TIMEOUT_PERIOD_8822E(x) \ + ((x) & (~BITS_HGQ_TIMEOUT_PERIOD_8822E)) +#define BIT_GET_HGQ_TIMEOUT_PERIOD_8822E(x) \ + (((x) >> BIT_SHIFT_HGQ_TIMEOUT_PERIOD_8822E) & \ + BIT_MASK_HGQ_TIMEOUT_PERIOD_8822E) +#define BIT_SET_HGQ_TIMEOUT_PERIOD_8822E(x, v) \ + (BIT_CLEAR_HGQ_TIMEOUT_PERIOD_8822E(x) | \ + BIT_HGQ_TIMEOUT_PERIOD_8822E(v)) + +/* 2 REG_TXCMD_TIMEOUT_PERIOD_8822E */ + +#define BIT_SHIFT_TXCMD_TIMEOUT_PERIOD_8822E 0 +#define BIT_MASK_TXCMD_TIMEOUT_PERIOD_8822E 0xff +#define BIT_TXCMD_TIMEOUT_PERIOD_8822E(x) \ + (((x) & BIT_MASK_TXCMD_TIMEOUT_PERIOD_8822E) \ + << BIT_SHIFT_TXCMD_TIMEOUT_PERIOD_8822E) +#define BITS_TXCMD_TIMEOUT_PERIOD_8822E \ + (BIT_MASK_TXCMD_TIMEOUT_PERIOD_8822E \ + << BIT_SHIFT_TXCMD_TIMEOUT_PERIOD_8822E) +#define BIT_CLEAR_TXCMD_TIMEOUT_PERIOD_8822E(x) \ + ((x) & (~BITS_TXCMD_TIMEOUT_PERIOD_8822E)) +#define BIT_GET_TXCMD_TIMEOUT_PERIOD_8822E(x) \ + (((x) >> BIT_SHIFT_TXCMD_TIMEOUT_PERIOD_8822E) & \ + BIT_MASK_TXCMD_TIMEOUT_PERIOD_8822E) +#define BIT_SET_TXCMD_TIMEOUT_PERIOD_8822E(x, v) \ + (BIT_CLEAR_TXCMD_TIMEOUT_PERIOD_8822E(x) | \ + BIT_TXCMD_TIMEOUT_PERIOD_8822E(v)) + +/* 2 REG_MISC_CTRL_8822E */ +#define BIT_DIS_MARK_TSF_US_V2_8822E BIT(7) +#define BIT_AUTO_SYNC_BY_TBTT_8822E BIT(6) +#define BIT_DIS_TRX_CAL_BCN_8822E BIT(5) +#define BIT_DIS_TX_CAL_TBTT_8822E BIT(4) +#define BIT_EN_FREECNT_8822E BIT(3) +#define BIT_BCN_AGGRESSION_8822E BIT(2) + +#define BIT_SHIFT_DIS_SECONDARY_CCA_8822E 0 +#define BIT_MASK_DIS_SECONDARY_CCA_8822E 0x3 +#define BIT_DIS_SECONDARY_CCA_8822E(x) \ + (((x) & BIT_MASK_DIS_SECONDARY_CCA_8822E) \ + << BIT_SHIFT_DIS_SECONDARY_CCA_8822E) +#define BITS_DIS_SECONDARY_CCA_8822E \ + (BIT_MASK_DIS_SECONDARY_CCA_8822E << BIT_SHIFT_DIS_SECONDARY_CCA_8822E) +#define BIT_CLEAR_DIS_SECONDARY_CCA_8822E(x) \ + ((x) & (~BITS_DIS_SECONDARY_CCA_8822E)) +#define BIT_GET_DIS_SECONDARY_CCA_8822E(x) \ + (((x) >> BIT_SHIFT_DIS_SECONDARY_CCA_8822E) & \ + BIT_MASK_DIS_SECONDARY_CCA_8822E) +#define BIT_SET_DIS_SECONDARY_CCA_8822E(x, v) \ + (BIT_CLEAR_DIS_SECONDARY_CCA_8822E(x) | BIT_DIS_SECONDARY_CCA_8822E(v)) + +/* 2 REG_BCN_CTRL_CLINT1_8822E */ +#define BIT_CLI1_DIS_RX_BSSID_FIT_8822E BIT(6) +#define BIT_CLI1_DIS_TSF_UDT_8822E BIT(4) +#define BIT_CLI1_EN_BCN_FUNCTION_8822E BIT(3) +#define BIT_CLI1_EN_RXBCN_RPT_8822E BIT(2) +#define BIT_CLI1_ENP2P_CTWINDOW_8822E BIT(1) +#define BIT_CLI1_ENP2P_BCNQ_AREA_8822E BIT(0) + +/* 2 REG_BCN_CTRL_CLINT2_8822E */ +#define BIT_CLI2_DIS_RX_BSSID_FIT_8822E BIT(6) +#define BIT_CLI2_DIS_TSF_UDT_8822E BIT(4) +#define BIT_CLI2_EN_BCN_FUNCTION_8822E BIT(3) +#define BIT_CLI2_EN_RXBCN_RPT_8822E BIT(2) +#define BIT_CLI2_ENP2P_CTWINDOW_8822E BIT(1) +#define BIT_CLI2_ENP2P_BCNQ_AREA_8822E BIT(0) + +/* 2 REG_BCN_CTRL_CLINT3_8822E */ +#define BIT_CLI3_DIS_RX_BSSID_FIT_8822E BIT(6) +#define BIT_CLI3_DIS_TSF_UDT_8822E BIT(4) +#define BIT_CLI3_EN_BCN_FUNCTION_8822E BIT(3) +#define BIT_CLI3_EN_RXBCN_RPT_8822E BIT(2) +#define BIT_CLI3_ENP2P_CTWINDOW_8822E BIT(1) +#define BIT_CLI3_ENP2P_BCNQ_AREA_8822E BIT(0) + +/* 2 REG_EXTEND_CTRL_8822E */ +#define BIT_EN_TSFBIT32_RST_P2P2_8822E BIT(5) +#define BIT_EN_TSFBIT32_RST_P2P1_8822E BIT(4) + +#define BIT_SHIFT_PORT_SEL_8822E 0 +#define BIT_MASK_PORT_SEL_8822E 0x7 +#define BIT_PORT_SEL_8822E(x) \ + (((x) & BIT_MASK_PORT_SEL_8822E) << BIT_SHIFT_PORT_SEL_8822E) +#define BITS_PORT_SEL_8822E \ + (BIT_MASK_PORT_SEL_8822E << BIT_SHIFT_PORT_SEL_8822E) +#define BIT_CLEAR_PORT_SEL_8822E(x) ((x) & (~BITS_PORT_SEL_8822E)) +#define BIT_GET_PORT_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_PORT_SEL_8822E) & BIT_MASK_PORT_SEL_8822E) +#define BIT_SET_PORT_SEL_8822E(x, v) \ + (BIT_CLEAR_PORT_SEL_8822E(x) | BIT_PORT_SEL_8822E(v)) + +/* 2 REG_P2PPS1_SPEC_STATE_8822E */ +#define BIT_P2P1_SPEC_POWER_STATE_8822E BIT(7) +#define BIT_P2P1_SPEC_CTWINDOW_ON_8822E BIT(6) +#define BIT_P2P1_SPEC_BCN_AREA_ON_8822E BIT(5) +#define BIT_P2P1_SPEC_CTWIN_EARLY_DISTX_8822E BIT(4) +#define BIT_P2P1_SPEC_NOA1_OFF_PERIOD_8822E BIT(3) +#define BIT_P2P1_SPEC_FORCE_DOZE1_8822E BIT(2) +#define BIT_P2P1_SPEC_NOA0_OFF_PERIOD_8822E BIT(1) +#define BIT_P2P1_SPEC_FORCE_DOZE0_8822E BIT(0) + +/* 2 REG_P2PPS1_STATE_8822E */ +#define BIT_P2P1_POWER_STATE_8822E BIT(7) +#define BIT_P2P1_CTWINDOW_ON_8822E BIT(6) +#define BIT_P2P1_BEACON_AREA_ON_8822E BIT(5) +#define BIT_P2P1_CTWIN_EARLY_DISTX_8822E BIT(4) +#define BIT_P2P1_NOA1_OFF_PERIOD_8822E BIT(3) +#define BIT_P2P1_FORCE_DOZE1_8822E BIT(2) +#define BIT_P2P1_NOA0_OFF_PERIOD_8822E BIT(1) +#define BIT_P2P1_FORCE_DOZE0_8822E BIT(0) + +/* 2 REG_P2PPS2_SPEC_STATE_8822E */ +#define BIT_P2P2_SPEC_POWER_STATE_8822E BIT(7) +#define BIT_P2P2_SPEC_CTWINDOW_ON_8822E BIT(6) +#define BIT_P2P2_SPEC_BCN_AREA_ON_8822E BIT(5) +#define BIT_P2P2_SPEC_CTWIN_EARLY_DISTX_8822E BIT(4) +#define BIT_P2P2_SPEC_NOA1_OFF_PERIOD_8822E BIT(3) +#define BIT_P2P2_SPEC_FORCE_DOZE1_8822E BIT(2) +#define BIT_P2P2_SPEC_NOA0_OFF_PERIOD_8822E BIT(1) +#define BIT_P2P2_SPEC_FORCE_DOZE0_8822E BIT(0) + +/* 2 REG_P2PPS2_STATE_8822E */ +#define BIT_P2P2_POWER_STATE_8822E BIT(7) +#define BIT_P2P2_CTWINDOW_ON_8822E BIT(6) +#define BIT_P2P2_BEACON_AREA_ON_8822E BIT(5) +#define BIT_P2P2_CTWIN_EARLY_DISTX_8822E BIT(4) +#define BIT_P2P2_NOA1_OFF_PERIOD_8822E BIT(3) +#define BIT_P2P2_FORCE_DOZE1_8822E BIT(2) +#define BIT_P2P2_NOA0_OFF_PERIOD_8822E BIT(1) +#define BIT_P2P2_FORCE_DOZE0_8822E BIT(0) + +/* 2 REG_PS_TIMER0_8822E */ + +#define BIT_SHIFT_PSTIMER0_INT_8822E 5 +#define BIT_MASK_PSTIMER0_INT_8822E 0x7ffffff +#define BIT_PSTIMER0_INT_8822E(x) \ + (((x) & BIT_MASK_PSTIMER0_INT_8822E) << BIT_SHIFT_PSTIMER0_INT_8822E) +#define BITS_PSTIMER0_INT_8822E \ + (BIT_MASK_PSTIMER0_INT_8822E << BIT_SHIFT_PSTIMER0_INT_8822E) +#define BIT_CLEAR_PSTIMER0_INT_8822E(x) ((x) & (~BITS_PSTIMER0_INT_8822E)) +#define BIT_GET_PSTIMER0_INT_8822E(x) \ + (((x) >> BIT_SHIFT_PSTIMER0_INT_8822E) & BIT_MASK_PSTIMER0_INT_8822E) +#define BIT_SET_PSTIMER0_INT_8822E(x, v) \ + (BIT_CLEAR_PSTIMER0_INT_8822E(x) | BIT_PSTIMER0_INT_8822E(v)) + +/* 2 REG_PS_TIMER1_8822E */ + +#define BIT_SHIFT_PSTIMER1_INT_8822E 5 +#define BIT_MASK_PSTIMER1_INT_8822E 0x7ffffff +#define BIT_PSTIMER1_INT_8822E(x) \ + (((x) & BIT_MASK_PSTIMER1_INT_8822E) << BIT_SHIFT_PSTIMER1_INT_8822E) +#define BITS_PSTIMER1_INT_8822E \ + (BIT_MASK_PSTIMER1_INT_8822E << BIT_SHIFT_PSTIMER1_INT_8822E) +#define BIT_CLEAR_PSTIMER1_INT_8822E(x) ((x) & (~BITS_PSTIMER1_INT_8822E)) +#define BIT_GET_PSTIMER1_INT_8822E(x) \ + (((x) >> BIT_SHIFT_PSTIMER1_INT_8822E) & BIT_MASK_PSTIMER1_INT_8822E) +#define BIT_SET_PSTIMER1_INT_8822E(x, v) \ + (BIT_CLEAR_PSTIMER1_INT_8822E(x) | BIT_PSTIMER1_INT_8822E(v)) + +/* 2 REG_PS_TIMER2_8822E */ + +#define BIT_SHIFT_PSTIMER2_INT_8822E 5 +#define BIT_MASK_PSTIMER2_INT_8822E 0x7ffffff +#define BIT_PSTIMER2_INT_8822E(x) \ + (((x) & BIT_MASK_PSTIMER2_INT_8822E) << BIT_SHIFT_PSTIMER2_INT_8822E) +#define BITS_PSTIMER2_INT_8822E \ + (BIT_MASK_PSTIMER2_INT_8822E << BIT_SHIFT_PSTIMER2_INT_8822E) +#define BIT_CLEAR_PSTIMER2_INT_8822E(x) ((x) & (~BITS_PSTIMER2_INT_8822E)) +#define BIT_GET_PSTIMER2_INT_8822E(x) \ + (((x) >> BIT_SHIFT_PSTIMER2_INT_8822E) & BIT_MASK_PSTIMER2_INT_8822E) +#define BIT_SET_PSTIMER2_INT_8822E(x, v) \ + (BIT_CLEAR_PSTIMER2_INT_8822E(x) | BIT_PSTIMER2_INT_8822E(v)) + +/* 2 REG_TBTT_CTN_AREA_8822E */ + +#define BIT_SHIFT_TBTT_CTN_AREA_8822E 0 +#define BIT_MASK_TBTT_CTN_AREA_8822E 0xff +#define BIT_TBTT_CTN_AREA_8822E(x) \ + (((x) & BIT_MASK_TBTT_CTN_AREA_8822E) << BIT_SHIFT_TBTT_CTN_AREA_8822E) +#define BITS_TBTT_CTN_AREA_8822E \ + (BIT_MASK_TBTT_CTN_AREA_8822E << BIT_SHIFT_TBTT_CTN_AREA_8822E) +#define BIT_CLEAR_TBTT_CTN_AREA_8822E(x) ((x) & (~BITS_TBTT_CTN_AREA_8822E)) +#define BIT_GET_TBTT_CTN_AREA_8822E(x) \ + (((x) >> BIT_SHIFT_TBTT_CTN_AREA_8822E) & BIT_MASK_TBTT_CTN_AREA_8822E) +#define BIT_SET_TBTT_CTN_AREA_8822E(x, v) \ + (BIT_CLEAR_TBTT_CTN_AREA_8822E(x) | BIT_TBTT_CTN_AREA_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_FORCE_BCN_IFS_8822E */ + +#define BIT_SHIFT_FORCE_BCN_IFS_8822E 0 +#define BIT_MASK_FORCE_BCN_IFS_8822E 0xff +#define BIT_FORCE_BCN_IFS_8822E(x) \ + (((x) & BIT_MASK_FORCE_BCN_IFS_8822E) << BIT_SHIFT_FORCE_BCN_IFS_8822E) +#define BITS_FORCE_BCN_IFS_8822E \ + (BIT_MASK_FORCE_BCN_IFS_8822E << BIT_SHIFT_FORCE_BCN_IFS_8822E) +#define BIT_CLEAR_FORCE_BCN_IFS_8822E(x) ((x) & (~BITS_FORCE_BCN_IFS_8822E)) +#define BIT_GET_FORCE_BCN_IFS_8822E(x) \ + (((x) >> BIT_SHIFT_FORCE_BCN_IFS_8822E) & BIT_MASK_FORCE_BCN_IFS_8822E) +#define BIT_SET_FORCE_BCN_IFS_8822E(x, v) \ + (BIT_CLEAR_FORCE_BCN_IFS_8822E(x) | BIT_FORCE_BCN_IFS_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_TXOP_MIN_8822E */ +#define BIT_HIQ_NAV_BREAK_EN_8822E BIT(15) +#define BIT_MGQ_NAV_BREAK_EN_8822E BIT(14) + +#define BIT_SHIFT_TXOP_MIN_8822E 0 +#define BIT_MASK_TXOP_MIN_8822E 0x3fff +#define BIT_TXOP_MIN_8822E(x) \ + (((x) & BIT_MASK_TXOP_MIN_8822E) << BIT_SHIFT_TXOP_MIN_8822E) +#define BITS_TXOP_MIN_8822E \ + (BIT_MASK_TXOP_MIN_8822E << BIT_SHIFT_TXOP_MIN_8822E) +#define BIT_CLEAR_TXOP_MIN_8822E(x) ((x) & (~BITS_TXOP_MIN_8822E)) +#define BIT_GET_TXOP_MIN_8822E(x) \ + (((x) >> BIT_SHIFT_TXOP_MIN_8822E) & BIT_MASK_TXOP_MIN_8822E) +#define BIT_SET_TXOP_MIN_8822E(x, v) \ + (BIT_CLEAR_TXOP_MIN_8822E(x) | BIT_TXOP_MIN_8822E(v)) + +/* 2 REG_PRE_BKF_TIME_8822E */ + +#define BIT_SHIFT_PRE_BKF_TIME_8822E 0 +#define BIT_MASK_PRE_BKF_TIME_8822E 0xff +#define BIT_PRE_BKF_TIME_8822E(x) \ + (((x) & BIT_MASK_PRE_BKF_TIME_8822E) << BIT_SHIFT_PRE_BKF_TIME_8822E) +#define BITS_PRE_BKF_TIME_8822E \ + (BIT_MASK_PRE_BKF_TIME_8822E << BIT_SHIFT_PRE_BKF_TIME_8822E) +#define BIT_CLEAR_PRE_BKF_TIME_8822E(x) ((x) & (~BITS_PRE_BKF_TIME_8822E)) +#define BIT_GET_PRE_BKF_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_PRE_BKF_TIME_8822E) & BIT_MASK_PRE_BKF_TIME_8822E) +#define BIT_SET_PRE_BKF_TIME_8822E(x, v) \ + (BIT_CLEAR_PRE_BKF_TIME_8822E(x) | BIT_PRE_BKF_TIME_8822E(v)) + +/* 2 REG_CROSS_TXOP_CTRL_8822E */ +#define BIT_TXFAIL_BREACK_TXOP_EN_8822E BIT(3) +#define BIT_DTIM_BYPASS_8822E BIT(2) +#define BIT_RTS_NAV_TXOP_8822E BIT(1) +#define BIT_NOT_CROSS_TXOP_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_RX_TBTT_SHIFT_V1_8822E */ +#define BIT_RX_TBTT_SHIFT_RW_FLAG_V1_8822E BIT(31) + +#define BIT_SHIFT_RX_TBTT_SHIFT_OFFSET_V1_8822E 16 +#define BIT_MASK_RX_TBTT_SHIFT_OFFSET_V1_8822E 0xfff +#define BIT_RX_TBTT_SHIFT_OFFSET_V1_8822E(x) \ + (((x) & BIT_MASK_RX_TBTT_SHIFT_OFFSET_V1_8822E) \ + << BIT_SHIFT_RX_TBTT_SHIFT_OFFSET_V1_8822E) +#define BITS_RX_TBTT_SHIFT_OFFSET_V1_8822E \ + (BIT_MASK_RX_TBTT_SHIFT_OFFSET_V1_8822E \ + << BIT_SHIFT_RX_TBTT_SHIFT_OFFSET_V1_8822E) +#define BIT_CLEAR_RX_TBTT_SHIFT_OFFSET_V1_8822E(x) \ + ((x) & (~BITS_RX_TBTT_SHIFT_OFFSET_V1_8822E)) +#define BIT_GET_RX_TBTT_SHIFT_OFFSET_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RX_TBTT_SHIFT_OFFSET_V1_8822E) & \ + BIT_MASK_RX_TBTT_SHIFT_OFFSET_V1_8822E) +#define BIT_SET_RX_TBTT_SHIFT_OFFSET_V1_8822E(x, v) \ + (BIT_CLEAR_RX_TBTT_SHIFT_OFFSET_V1_8822E(x) | \ + BIT_RX_TBTT_SHIFT_OFFSET_V1_8822E(v)) + +#define BIT_SHIFT_RX_TBTT_SHIFT_SEL_V1_8822E 8 +#define BIT_MASK_RX_TBTT_SHIFT_SEL_V1_8822E 0x7 +#define BIT_RX_TBTT_SHIFT_SEL_V1_8822E(x) \ + (((x) & BIT_MASK_RX_TBTT_SHIFT_SEL_V1_8822E) \ + << BIT_SHIFT_RX_TBTT_SHIFT_SEL_V1_8822E) +#define BITS_RX_TBTT_SHIFT_SEL_V1_8822E \ + (BIT_MASK_RX_TBTT_SHIFT_SEL_V1_8822E \ + << BIT_SHIFT_RX_TBTT_SHIFT_SEL_V1_8822E) +#define BIT_CLEAR_RX_TBTT_SHIFT_SEL_V1_8822E(x) \ + ((x) & (~BITS_RX_TBTT_SHIFT_SEL_V1_8822E)) +#define BIT_GET_RX_TBTT_SHIFT_SEL_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RX_TBTT_SHIFT_SEL_V1_8822E) & \ + BIT_MASK_RX_TBTT_SHIFT_SEL_V1_8822E) +#define BIT_SET_RX_TBTT_SHIFT_SEL_V1_8822E(x, v) \ + (BIT_CLEAR_RX_TBTT_SHIFT_SEL_V1_8822E(x) | \ + BIT_RX_TBTT_SHIFT_SEL_V1_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_ATIMWND2_8822E */ + +#define BIT_SHIFT_ATIMWND2_8822E 0 +#define BIT_MASK_ATIMWND2_8822E 0xff +#define BIT_ATIMWND2_8822E(x) \ + (((x) & BIT_MASK_ATIMWND2_8822E) << BIT_SHIFT_ATIMWND2_8822E) +#define BITS_ATIMWND2_8822E \ + (BIT_MASK_ATIMWND2_8822E << BIT_SHIFT_ATIMWND2_8822E) +#define BIT_CLEAR_ATIMWND2_8822E(x) ((x) & (~BITS_ATIMWND2_8822E)) +#define BIT_GET_ATIMWND2_8822E(x) \ + (((x) >> BIT_SHIFT_ATIMWND2_8822E) & BIT_MASK_ATIMWND2_8822E) +#define BIT_SET_ATIMWND2_8822E(x, v) \ + (BIT_CLEAR_ATIMWND2_8822E(x) | BIT_ATIMWND2_8822E(v)) + +/* 2 REG_ATIMWND3_8822E */ + +#define BIT_SHIFT_ATIMWND3_8822E 0 +#define BIT_MASK_ATIMWND3_8822E 0xff +#define BIT_ATIMWND3_8822E(x) \ + (((x) & BIT_MASK_ATIMWND3_8822E) << BIT_SHIFT_ATIMWND3_8822E) +#define BITS_ATIMWND3_8822E \ + (BIT_MASK_ATIMWND3_8822E << BIT_SHIFT_ATIMWND3_8822E) +#define BIT_CLEAR_ATIMWND3_8822E(x) ((x) & (~BITS_ATIMWND3_8822E)) +#define BIT_GET_ATIMWND3_8822E(x) \ + (((x) >> BIT_SHIFT_ATIMWND3_8822E) & BIT_MASK_ATIMWND3_8822E) +#define BIT_SET_ATIMWND3_8822E(x, v) \ + (BIT_CLEAR_ATIMWND3_8822E(x) | BIT_ATIMWND3_8822E(v)) + +/* 2 REG_ATIMWND4_8822E */ + +#define BIT_SHIFT_ATIMWND4_8822E 0 +#define BIT_MASK_ATIMWND4_8822E 0xff +#define BIT_ATIMWND4_8822E(x) \ + (((x) & BIT_MASK_ATIMWND4_8822E) << BIT_SHIFT_ATIMWND4_8822E) +#define BITS_ATIMWND4_8822E \ + (BIT_MASK_ATIMWND4_8822E << BIT_SHIFT_ATIMWND4_8822E) +#define BIT_CLEAR_ATIMWND4_8822E(x) ((x) & (~BITS_ATIMWND4_8822E)) +#define BIT_GET_ATIMWND4_8822E(x) \ + (((x) >> BIT_SHIFT_ATIMWND4_8822E) & BIT_MASK_ATIMWND4_8822E) +#define BIT_SET_ATIMWND4_8822E(x, v) \ + (BIT_CLEAR_ATIMWND4_8822E(x) | BIT_ATIMWND4_8822E(v)) + +/* 2 REG_ATIMWND5_8822E */ + +#define BIT_SHIFT_ATIMWND5_8822E 0 +#define BIT_MASK_ATIMWND5_8822E 0xff +#define BIT_ATIMWND5_8822E(x) \ + (((x) & BIT_MASK_ATIMWND5_8822E) << BIT_SHIFT_ATIMWND5_8822E) +#define BITS_ATIMWND5_8822E \ + (BIT_MASK_ATIMWND5_8822E << BIT_SHIFT_ATIMWND5_8822E) +#define BIT_CLEAR_ATIMWND5_8822E(x) ((x) & (~BITS_ATIMWND5_8822E)) +#define BIT_GET_ATIMWND5_8822E(x) \ + (((x) >> BIT_SHIFT_ATIMWND5_8822E) & BIT_MASK_ATIMWND5_8822E) +#define BIT_SET_ATIMWND5_8822E(x, v) \ + (BIT_CLEAR_ATIMWND5_8822E(x) | BIT_ATIMWND5_8822E(v)) + +/* 2 REG_ATIMWND6_8822E */ + +#define BIT_SHIFT_ATIMWND6_8822E 0 +#define BIT_MASK_ATIMWND6_8822E 0xff +#define BIT_ATIMWND6_8822E(x) \ + (((x) & BIT_MASK_ATIMWND6_8822E) << BIT_SHIFT_ATIMWND6_8822E) +#define BITS_ATIMWND6_8822E \ + (BIT_MASK_ATIMWND6_8822E << BIT_SHIFT_ATIMWND6_8822E) +#define BIT_CLEAR_ATIMWND6_8822E(x) ((x) & (~BITS_ATIMWND6_8822E)) +#define BIT_GET_ATIMWND6_8822E(x) \ + (((x) >> BIT_SHIFT_ATIMWND6_8822E) & BIT_MASK_ATIMWND6_8822E) +#define BIT_SET_ATIMWND6_8822E(x, v) \ + (BIT_CLEAR_ATIMWND6_8822E(x) | BIT_ATIMWND6_8822E(v)) + +/* 2 REG_ATIMWND7_8822E */ + +#define BIT_SHIFT_ATIMWND7_8822E 0 +#define BIT_MASK_ATIMWND7_8822E 0xff +#define BIT_ATIMWND7_8822E(x) \ + (((x) & BIT_MASK_ATIMWND7_8822E) << BIT_SHIFT_ATIMWND7_8822E) +#define BITS_ATIMWND7_8822E \ + (BIT_MASK_ATIMWND7_8822E << BIT_SHIFT_ATIMWND7_8822E) +#define BIT_CLEAR_ATIMWND7_8822E(x) ((x) & (~BITS_ATIMWND7_8822E)) +#define BIT_GET_ATIMWND7_8822E(x) \ + (((x) >> BIT_SHIFT_ATIMWND7_8822E) & BIT_MASK_ATIMWND7_8822E) +#define BIT_SET_ATIMWND7_8822E(x, v) \ + (BIT_CLEAR_ATIMWND7_8822E(x) | BIT_ATIMWND7_8822E(v)) + +/* 2 REG_ATIMUGT_8822E */ + +#define BIT_SHIFT_ATIM_URGENT_8822E 0 +#define BIT_MASK_ATIM_URGENT_8822E 0xff +#define BIT_ATIM_URGENT_8822E(x) \ + (((x) & BIT_MASK_ATIM_URGENT_8822E) << BIT_SHIFT_ATIM_URGENT_8822E) +#define BITS_ATIM_URGENT_8822E \ + (BIT_MASK_ATIM_URGENT_8822E << BIT_SHIFT_ATIM_URGENT_8822E) +#define BIT_CLEAR_ATIM_URGENT_8822E(x) ((x) & (~BITS_ATIM_URGENT_8822E)) +#define BIT_GET_ATIM_URGENT_8822E(x) \ + (((x) >> BIT_SHIFT_ATIM_URGENT_8822E) & BIT_MASK_ATIM_URGENT_8822E) +#define BIT_SET_ATIM_URGENT_8822E(x, v) \ + (BIT_CLEAR_ATIM_URGENT_8822E(x) | BIT_ATIM_URGENT_8822E(v)) + +/* 2 REG_HIQ_NO_LMT_EN_8822E */ +#define BIT_HIQ_NO_LMT_EN_VAP7_8822E BIT(7) +#define BIT_HIQ_NO_LMT_EN_VAP6_8822E BIT(6) +#define BIT_HIQ_NO_LMT_EN_VAP5_8822E BIT(5) +#define BIT_HIQ_NO_LMT_EN_VAP4_8822E BIT(4) +#define BIT_HIQ_NO_LMT_EN_VAP3_8822E BIT(3) +#define BIT_HIQ_NO_LMT_EN_VAP2_8822E BIT(2) +#define BIT_HIQ_NO_LMT_EN_VAP1_8822E BIT(1) +#define BIT_HIQ_NO_LMT_EN_ROOT_8822E BIT(0) + +/* 2 REG_DTIM_COUNTER_ROOT_8822E */ + +#define BIT_SHIFT_DTIM_COUNT_ROOT_8822E 0 +#define BIT_MASK_DTIM_COUNT_ROOT_8822E 0xff +#define BIT_DTIM_COUNT_ROOT_8822E(x) \ + (((x) & BIT_MASK_DTIM_COUNT_ROOT_8822E) \ + << BIT_SHIFT_DTIM_COUNT_ROOT_8822E) +#define BITS_DTIM_COUNT_ROOT_8822E \ + (BIT_MASK_DTIM_COUNT_ROOT_8822E << BIT_SHIFT_DTIM_COUNT_ROOT_8822E) +#define BIT_CLEAR_DTIM_COUNT_ROOT_8822E(x) ((x) & (~BITS_DTIM_COUNT_ROOT_8822E)) +#define BIT_GET_DTIM_COUNT_ROOT_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_COUNT_ROOT_8822E) & \ + BIT_MASK_DTIM_COUNT_ROOT_8822E) +#define BIT_SET_DTIM_COUNT_ROOT_8822E(x, v) \ + (BIT_CLEAR_DTIM_COUNT_ROOT_8822E(x) | BIT_DTIM_COUNT_ROOT_8822E(v)) + +/* 2 REG_DTIM_COUNTER_VAP1_8822E */ + +#define BIT_SHIFT_DTIM_COUNT_VAP1_8822E 0 +#define BIT_MASK_DTIM_COUNT_VAP1_8822E 0xff +#define BIT_DTIM_COUNT_VAP1_8822E(x) \ + (((x) & BIT_MASK_DTIM_COUNT_VAP1_8822E) \ + << BIT_SHIFT_DTIM_COUNT_VAP1_8822E) +#define BITS_DTIM_COUNT_VAP1_8822E \ + (BIT_MASK_DTIM_COUNT_VAP1_8822E << BIT_SHIFT_DTIM_COUNT_VAP1_8822E) +#define BIT_CLEAR_DTIM_COUNT_VAP1_8822E(x) ((x) & (~BITS_DTIM_COUNT_VAP1_8822E)) +#define BIT_GET_DTIM_COUNT_VAP1_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_COUNT_VAP1_8822E) & \ + BIT_MASK_DTIM_COUNT_VAP1_8822E) +#define BIT_SET_DTIM_COUNT_VAP1_8822E(x, v) \ + (BIT_CLEAR_DTIM_COUNT_VAP1_8822E(x) | BIT_DTIM_COUNT_VAP1_8822E(v)) + +/* 2 REG_DTIM_COUNTER_VAP2_8822E */ + +#define BIT_SHIFT_DTIM_COUNT_VAP2_8822E 0 +#define BIT_MASK_DTIM_COUNT_VAP2_8822E 0xff +#define BIT_DTIM_COUNT_VAP2_8822E(x) \ + (((x) & BIT_MASK_DTIM_COUNT_VAP2_8822E) \ + << BIT_SHIFT_DTIM_COUNT_VAP2_8822E) +#define BITS_DTIM_COUNT_VAP2_8822E \ + (BIT_MASK_DTIM_COUNT_VAP2_8822E << BIT_SHIFT_DTIM_COUNT_VAP2_8822E) +#define BIT_CLEAR_DTIM_COUNT_VAP2_8822E(x) ((x) & (~BITS_DTIM_COUNT_VAP2_8822E)) +#define BIT_GET_DTIM_COUNT_VAP2_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_COUNT_VAP2_8822E) & \ + BIT_MASK_DTIM_COUNT_VAP2_8822E) +#define BIT_SET_DTIM_COUNT_VAP2_8822E(x, v) \ + (BIT_CLEAR_DTIM_COUNT_VAP2_8822E(x) | BIT_DTIM_COUNT_VAP2_8822E(v)) + +/* 2 REG_DTIM_COUNTER_VAP3_8822E */ + +#define BIT_SHIFT_DTIM_COUNT_VAP3_8822E 0 +#define BIT_MASK_DTIM_COUNT_VAP3_8822E 0xff +#define BIT_DTIM_COUNT_VAP3_8822E(x) \ + (((x) & BIT_MASK_DTIM_COUNT_VAP3_8822E) \ + << BIT_SHIFT_DTIM_COUNT_VAP3_8822E) +#define BITS_DTIM_COUNT_VAP3_8822E \ + (BIT_MASK_DTIM_COUNT_VAP3_8822E << BIT_SHIFT_DTIM_COUNT_VAP3_8822E) +#define BIT_CLEAR_DTIM_COUNT_VAP3_8822E(x) ((x) & (~BITS_DTIM_COUNT_VAP3_8822E)) +#define BIT_GET_DTIM_COUNT_VAP3_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_COUNT_VAP3_8822E) & \ + BIT_MASK_DTIM_COUNT_VAP3_8822E) +#define BIT_SET_DTIM_COUNT_VAP3_8822E(x, v) \ + (BIT_CLEAR_DTIM_COUNT_VAP3_8822E(x) | BIT_DTIM_COUNT_VAP3_8822E(v)) + +/* 2 REG_DTIM_COUNTER_VAP4_8822E */ + +#define BIT_SHIFT_DTIM_COUNT_VAP4_8822E 0 +#define BIT_MASK_DTIM_COUNT_VAP4_8822E 0xff +#define BIT_DTIM_COUNT_VAP4_8822E(x) \ + (((x) & BIT_MASK_DTIM_COUNT_VAP4_8822E) \ + << BIT_SHIFT_DTIM_COUNT_VAP4_8822E) +#define BITS_DTIM_COUNT_VAP4_8822E \ + (BIT_MASK_DTIM_COUNT_VAP4_8822E << BIT_SHIFT_DTIM_COUNT_VAP4_8822E) +#define BIT_CLEAR_DTIM_COUNT_VAP4_8822E(x) ((x) & (~BITS_DTIM_COUNT_VAP4_8822E)) +#define BIT_GET_DTIM_COUNT_VAP4_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_COUNT_VAP4_8822E) & \ + BIT_MASK_DTIM_COUNT_VAP4_8822E) +#define BIT_SET_DTIM_COUNT_VAP4_8822E(x, v) \ + (BIT_CLEAR_DTIM_COUNT_VAP4_8822E(x) | BIT_DTIM_COUNT_VAP4_8822E(v)) + +/* 2 REG_DTIM_COUNTER_VAP5_8822E */ + +#define BIT_SHIFT_DTIM_COUNT_VAP5_8822E 0 +#define BIT_MASK_DTIM_COUNT_VAP5_8822E 0xff +#define BIT_DTIM_COUNT_VAP5_8822E(x) \ + (((x) & BIT_MASK_DTIM_COUNT_VAP5_8822E) \ + << BIT_SHIFT_DTIM_COUNT_VAP5_8822E) +#define BITS_DTIM_COUNT_VAP5_8822E \ + (BIT_MASK_DTIM_COUNT_VAP5_8822E << BIT_SHIFT_DTIM_COUNT_VAP5_8822E) +#define BIT_CLEAR_DTIM_COUNT_VAP5_8822E(x) ((x) & (~BITS_DTIM_COUNT_VAP5_8822E)) +#define BIT_GET_DTIM_COUNT_VAP5_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_COUNT_VAP5_8822E) & \ + BIT_MASK_DTIM_COUNT_VAP5_8822E) +#define BIT_SET_DTIM_COUNT_VAP5_8822E(x, v) \ + (BIT_CLEAR_DTIM_COUNT_VAP5_8822E(x) | BIT_DTIM_COUNT_VAP5_8822E(v)) + +/* 2 REG_DTIM_COUNTER_VAP6_8822E */ + +#define BIT_SHIFT_DTIM_COUNT_VAP6_8822E 0 +#define BIT_MASK_DTIM_COUNT_VAP6_8822E 0xff +#define BIT_DTIM_COUNT_VAP6_8822E(x) \ + (((x) & BIT_MASK_DTIM_COUNT_VAP6_8822E) \ + << BIT_SHIFT_DTIM_COUNT_VAP6_8822E) +#define BITS_DTIM_COUNT_VAP6_8822E \ + (BIT_MASK_DTIM_COUNT_VAP6_8822E << BIT_SHIFT_DTIM_COUNT_VAP6_8822E) +#define BIT_CLEAR_DTIM_COUNT_VAP6_8822E(x) ((x) & (~BITS_DTIM_COUNT_VAP6_8822E)) +#define BIT_GET_DTIM_COUNT_VAP6_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_COUNT_VAP6_8822E) & \ + BIT_MASK_DTIM_COUNT_VAP6_8822E) +#define BIT_SET_DTIM_COUNT_VAP6_8822E(x, v) \ + (BIT_CLEAR_DTIM_COUNT_VAP6_8822E(x) | BIT_DTIM_COUNT_VAP6_8822E(v)) + +/* 2 REG_DTIM_COUNTER_VAP7_8822E */ + +#define BIT_SHIFT_DTIM_COUNT_VAP7_8822E 0 +#define BIT_MASK_DTIM_COUNT_VAP7_8822E 0xff +#define BIT_DTIM_COUNT_VAP7_8822E(x) \ + (((x) & BIT_MASK_DTIM_COUNT_VAP7_8822E) \ + << BIT_SHIFT_DTIM_COUNT_VAP7_8822E) +#define BITS_DTIM_COUNT_VAP7_8822E \ + (BIT_MASK_DTIM_COUNT_VAP7_8822E << BIT_SHIFT_DTIM_COUNT_VAP7_8822E) +#define BIT_CLEAR_DTIM_COUNT_VAP7_8822E(x) ((x) & (~BITS_DTIM_COUNT_VAP7_8822E)) +#define BIT_GET_DTIM_COUNT_VAP7_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_COUNT_VAP7_8822E) & \ + BIT_MASK_DTIM_COUNT_VAP7_8822E) +#define BIT_SET_DTIM_COUNT_VAP7_8822E(x, v) \ + (BIT_CLEAR_DTIM_COUNT_VAP7_8822E(x) | BIT_DTIM_COUNT_VAP7_8822E(v)) + +/* 2 REG_DIS_ATIM_8822E */ +#define BIT_DIS_ATIM_VAP7_8822E BIT(7) +#define BIT_DIS_ATIM_VAP6_8822E BIT(6) +#define BIT_DIS_ATIM_VAP5_8822E BIT(5) +#define BIT_DIS_ATIM_VAP4_8822E BIT(4) +#define BIT_DIS_ATIM_VAP3_8822E BIT(3) +#define BIT_DIS_ATIM_VAP2_8822E BIT(2) +#define BIT_DIS_ATIM_VAP1_8822E BIT(1) +#define BIT_DIS_ATIM_ROOT_8822E BIT(0) + +/* 2 REG_EARLY_128US_8822E */ + +#define BIT_SHIFT_TSFT_SEL_TIMER1_8822E 3 +#define BIT_MASK_TSFT_SEL_TIMER1_8822E 0x7 +#define BIT_TSFT_SEL_TIMER1_8822E(x) \ + (((x) & BIT_MASK_TSFT_SEL_TIMER1_8822E) \ + << BIT_SHIFT_TSFT_SEL_TIMER1_8822E) +#define BITS_TSFT_SEL_TIMER1_8822E \ + (BIT_MASK_TSFT_SEL_TIMER1_8822E << BIT_SHIFT_TSFT_SEL_TIMER1_8822E) +#define BIT_CLEAR_TSFT_SEL_TIMER1_8822E(x) ((x) & (~BITS_TSFT_SEL_TIMER1_8822E)) +#define BIT_GET_TSFT_SEL_TIMER1_8822E(x) \ + (((x) >> BIT_SHIFT_TSFT_SEL_TIMER1_8822E) & \ + BIT_MASK_TSFT_SEL_TIMER1_8822E) +#define BIT_SET_TSFT_SEL_TIMER1_8822E(x, v) \ + (BIT_CLEAR_TSFT_SEL_TIMER1_8822E(x) | BIT_TSFT_SEL_TIMER1_8822E(v)) + +#define BIT_SHIFT_EARLY_128US_8822E 0 +#define BIT_MASK_EARLY_128US_8822E 0x7 +#define BIT_EARLY_128US_8822E(x) \ + (((x) & BIT_MASK_EARLY_128US_8822E) << BIT_SHIFT_EARLY_128US_8822E) +#define BITS_EARLY_128US_8822E \ + (BIT_MASK_EARLY_128US_8822E << BIT_SHIFT_EARLY_128US_8822E) +#define BIT_CLEAR_EARLY_128US_8822E(x) ((x) & (~BITS_EARLY_128US_8822E)) +#define BIT_GET_EARLY_128US_8822E(x) \ + (((x) >> BIT_SHIFT_EARLY_128US_8822E) & BIT_MASK_EARLY_128US_8822E) +#define BIT_SET_EARLY_128US_8822E(x, v) \ + (BIT_CLEAR_EARLY_128US_8822E(x) | BIT_EARLY_128US_8822E(v)) + +/* 2 REG_P2PPS1_CTRL_8822E */ +#define BIT_P2P1_CTW_ALLSTASLEEP_8822E BIT(7) +#define BIT_P2P1_OFF_DISTX_EN_8822E BIT(6) +#define BIT_P2P1_PWR_MGT_EN_8822E BIT(5) +#define BIT_P2P1_NOA1_EN_8822E BIT(2) +#define BIT_P2P1_NOA0_EN_8822E BIT(1) + +/* 2 REG_P2PPS2_CTRL_8822E */ +#define BIT_P2P2_CTW_ALLSTASLEEP_8822E BIT(7) +#define BIT_P2P2_OFF_DISTX_EN_8822E BIT(6) +#define BIT_P2P2_PWR_MGT_EN_8822E BIT(5) +#define BIT_P2P2_NOA1_EN_8822E BIT(2) +#define BIT_P2P2_NOA0_EN_8822E BIT(1) + +/* 2 REG_TIMER0_SRC_SEL_8822E */ + +#define BIT_SHIFT_SYNC_CLI_SEL_8822E 4 +#define BIT_MASK_SYNC_CLI_SEL_8822E 0x7 +#define BIT_SYNC_CLI_SEL_8822E(x) \ + (((x) & BIT_MASK_SYNC_CLI_SEL_8822E) << BIT_SHIFT_SYNC_CLI_SEL_8822E) +#define BITS_SYNC_CLI_SEL_8822E \ + (BIT_MASK_SYNC_CLI_SEL_8822E << BIT_SHIFT_SYNC_CLI_SEL_8822E) +#define BIT_CLEAR_SYNC_CLI_SEL_8822E(x) ((x) & (~BITS_SYNC_CLI_SEL_8822E)) +#define BIT_GET_SYNC_CLI_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_SYNC_CLI_SEL_8822E) & BIT_MASK_SYNC_CLI_SEL_8822E) +#define BIT_SET_SYNC_CLI_SEL_8822E(x, v) \ + (BIT_CLEAR_SYNC_CLI_SEL_8822E(x) | BIT_SYNC_CLI_SEL_8822E(v)) + +#define BIT_SHIFT_TSFT_SEL_TIMER0_8822E 0 +#define BIT_MASK_TSFT_SEL_TIMER0_8822E 0x7 +#define BIT_TSFT_SEL_TIMER0_8822E(x) \ + (((x) & BIT_MASK_TSFT_SEL_TIMER0_8822E) \ + << BIT_SHIFT_TSFT_SEL_TIMER0_8822E) +#define BITS_TSFT_SEL_TIMER0_8822E \ + (BIT_MASK_TSFT_SEL_TIMER0_8822E << BIT_SHIFT_TSFT_SEL_TIMER0_8822E) +#define BIT_CLEAR_TSFT_SEL_TIMER0_8822E(x) ((x) & (~BITS_TSFT_SEL_TIMER0_8822E)) +#define BIT_GET_TSFT_SEL_TIMER0_8822E(x) \ + (((x) >> BIT_SHIFT_TSFT_SEL_TIMER0_8822E) & \ + BIT_MASK_TSFT_SEL_TIMER0_8822E) +#define BIT_SET_TSFT_SEL_TIMER0_8822E(x, v) \ + (BIT_CLEAR_TSFT_SEL_TIMER0_8822E(x) | BIT_TSFT_SEL_TIMER0_8822E(v)) + +/* 2 REG_NOA_UNIT_SEL_8822E */ + +#define BIT_SHIFT_NOA_UNIT2_SEL_8822E 8 +#define BIT_MASK_NOA_UNIT2_SEL_8822E 0x7 +#define BIT_NOA_UNIT2_SEL_8822E(x) \ + (((x) & BIT_MASK_NOA_UNIT2_SEL_8822E) << BIT_SHIFT_NOA_UNIT2_SEL_8822E) +#define BITS_NOA_UNIT2_SEL_8822E \ + (BIT_MASK_NOA_UNIT2_SEL_8822E << BIT_SHIFT_NOA_UNIT2_SEL_8822E) +#define BIT_CLEAR_NOA_UNIT2_SEL_8822E(x) ((x) & (~BITS_NOA_UNIT2_SEL_8822E)) +#define BIT_GET_NOA_UNIT2_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_NOA_UNIT2_SEL_8822E) & BIT_MASK_NOA_UNIT2_SEL_8822E) +#define BIT_SET_NOA_UNIT2_SEL_8822E(x, v) \ + (BIT_CLEAR_NOA_UNIT2_SEL_8822E(x) | BIT_NOA_UNIT2_SEL_8822E(v)) + +#define BIT_SHIFT_NOA_UNIT1_SEL_8822E 4 +#define BIT_MASK_NOA_UNIT1_SEL_8822E 0x7 +#define BIT_NOA_UNIT1_SEL_8822E(x) \ + (((x) & BIT_MASK_NOA_UNIT1_SEL_8822E) << BIT_SHIFT_NOA_UNIT1_SEL_8822E) +#define BITS_NOA_UNIT1_SEL_8822E \ + (BIT_MASK_NOA_UNIT1_SEL_8822E << BIT_SHIFT_NOA_UNIT1_SEL_8822E) +#define BIT_CLEAR_NOA_UNIT1_SEL_8822E(x) ((x) & (~BITS_NOA_UNIT1_SEL_8822E)) +#define BIT_GET_NOA_UNIT1_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_NOA_UNIT1_SEL_8822E) & BIT_MASK_NOA_UNIT1_SEL_8822E) +#define BIT_SET_NOA_UNIT1_SEL_8822E(x, v) \ + (BIT_CLEAR_NOA_UNIT1_SEL_8822E(x) | BIT_NOA_UNIT1_SEL_8822E(v)) + +#define BIT_SHIFT_NOA_UNIT0_SEL_8822E 0 +#define BIT_MASK_NOA_UNIT0_SEL_8822E 0x7 +#define BIT_NOA_UNIT0_SEL_8822E(x) \ + (((x) & BIT_MASK_NOA_UNIT0_SEL_8822E) << BIT_SHIFT_NOA_UNIT0_SEL_8822E) +#define BITS_NOA_UNIT0_SEL_8822E \ + (BIT_MASK_NOA_UNIT0_SEL_8822E << BIT_SHIFT_NOA_UNIT0_SEL_8822E) +#define BIT_CLEAR_NOA_UNIT0_SEL_8822E(x) ((x) & (~BITS_NOA_UNIT0_SEL_8822E)) +#define BIT_GET_NOA_UNIT0_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_NOA_UNIT0_SEL_8822E) & BIT_MASK_NOA_UNIT0_SEL_8822E) +#define BIT_SET_NOA_UNIT0_SEL_8822E(x, v) \ + (BIT_CLEAR_NOA_UNIT0_SEL_8822E(x) | BIT_NOA_UNIT0_SEL_8822E(v)) + +/* 2 REG_P2POFF_DIS_TXTIME_8822E */ + +#define BIT_SHIFT_P2POFF_DIS_TXTIME_8822E 0 +#define BIT_MASK_P2POFF_DIS_TXTIME_8822E 0xff +#define BIT_P2POFF_DIS_TXTIME_8822E(x) \ + (((x) & BIT_MASK_P2POFF_DIS_TXTIME_8822E) \ + << BIT_SHIFT_P2POFF_DIS_TXTIME_8822E) +#define BITS_P2POFF_DIS_TXTIME_8822E \ + (BIT_MASK_P2POFF_DIS_TXTIME_8822E << BIT_SHIFT_P2POFF_DIS_TXTIME_8822E) +#define BIT_CLEAR_P2POFF_DIS_TXTIME_8822E(x) \ + ((x) & (~BITS_P2POFF_DIS_TXTIME_8822E)) +#define BIT_GET_P2POFF_DIS_TXTIME_8822E(x) \ + (((x) >> BIT_SHIFT_P2POFF_DIS_TXTIME_8822E) & \ + BIT_MASK_P2POFF_DIS_TXTIME_8822E) +#define BIT_SET_P2POFF_DIS_TXTIME_8822E(x, v) \ + (BIT_CLEAR_P2POFF_DIS_TXTIME_8822E(x) | BIT_P2POFF_DIS_TXTIME_8822E(v)) + +/* 2 REG_MBSSID_BCN_SPACE2_8822E */ + +#define BIT_SHIFT_BCN_SPACE_CLINT2_8822E 16 +#define BIT_MASK_BCN_SPACE_CLINT2_8822E 0xfff +#define BIT_BCN_SPACE_CLINT2_8822E(x) \ + (((x) & BIT_MASK_BCN_SPACE_CLINT2_8822E) \ + << BIT_SHIFT_BCN_SPACE_CLINT2_8822E) +#define BITS_BCN_SPACE_CLINT2_8822E \ + (BIT_MASK_BCN_SPACE_CLINT2_8822E << BIT_SHIFT_BCN_SPACE_CLINT2_8822E) +#define BIT_CLEAR_BCN_SPACE_CLINT2_8822E(x) \ + ((x) & (~BITS_BCN_SPACE_CLINT2_8822E)) +#define BIT_GET_BCN_SPACE_CLINT2_8822E(x) \ + (((x) >> BIT_SHIFT_BCN_SPACE_CLINT2_8822E) & \ + BIT_MASK_BCN_SPACE_CLINT2_8822E) +#define BIT_SET_BCN_SPACE_CLINT2_8822E(x, v) \ + (BIT_CLEAR_BCN_SPACE_CLINT2_8822E(x) | BIT_BCN_SPACE_CLINT2_8822E(v)) + +#define BIT_SHIFT_BCN_SPACE_CLINT1_8822E 0 +#define BIT_MASK_BCN_SPACE_CLINT1_8822E 0xfff +#define BIT_BCN_SPACE_CLINT1_8822E(x) \ + (((x) & BIT_MASK_BCN_SPACE_CLINT1_8822E) \ + << BIT_SHIFT_BCN_SPACE_CLINT1_8822E) +#define BITS_BCN_SPACE_CLINT1_8822E \ + (BIT_MASK_BCN_SPACE_CLINT1_8822E << BIT_SHIFT_BCN_SPACE_CLINT1_8822E) +#define BIT_CLEAR_BCN_SPACE_CLINT1_8822E(x) \ + ((x) & (~BITS_BCN_SPACE_CLINT1_8822E)) +#define BIT_GET_BCN_SPACE_CLINT1_8822E(x) \ + (((x) >> BIT_SHIFT_BCN_SPACE_CLINT1_8822E) & \ + BIT_MASK_BCN_SPACE_CLINT1_8822E) +#define BIT_SET_BCN_SPACE_CLINT1_8822E(x, v) \ + (BIT_CLEAR_BCN_SPACE_CLINT1_8822E(x) | BIT_BCN_SPACE_CLINT1_8822E(v)) + +/* 2 REG_MBSSID_BCN_SPACE3_8822E */ + +#define BIT_SHIFT_SUB_BCN_SPACE_8822E 16 +#define BIT_MASK_SUB_BCN_SPACE_8822E 0xff +#define BIT_SUB_BCN_SPACE_8822E(x) \ + (((x) & BIT_MASK_SUB_BCN_SPACE_8822E) << BIT_SHIFT_SUB_BCN_SPACE_8822E) +#define BITS_SUB_BCN_SPACE_8822E \ + (BIT_MASK_SUB_BCN_SPACE_8822E << BIT_SHIFT_SUB_BCN_SPACE_8822E) +#define BIT_CLEAR_SUB_BCN_SPACE_8822E(x) ((x) & (~BITS_SUB_BCN_SPACE_8822E)) +#define BIT_GET_SUB_BCN_SPACE_8822E(x) \ + (((x) >> BIT_SHIFT_SUB_BCN_SPACE_8822E) & BIT_MASK_SUB_BCN_SPACE_8822E) +#define BIT_SET_SUB_BCN_SPACE_8822E(x, v) \ + (BIT_CLEAR_SUB_BCN_SPACE_8822E(x) | BIT_SUB_BCN_SPACE_8822E(v)) + +#define BIT_SHIFT_BCN_SPACE_CLINT3_8822E 0 +#define BIT_MASK_BCN_SPACE_CLINT3_8822E 0xfff +#define BIT_BCN_SPACE_CLINT3_8822E(x) \ + (((x) & BIT_MASK_BCN_SPACE_CLINT3_8822E) \ + << BIT_SHIFT_BCN_SPACE_CLINT3_8822E) +#define BITS_BCN_SPACE_CLINT3_8822E \ + (BIT_MASK_BCN_SPACE_CLINT3_8822E << BIT_SHIFT_BCN_SPACE_CLINT3_8822E) +#define BIT_CLEAR_BCN_SPACE_CLINT3_8822E(x) \ + ((x) & (~BITS_BCN_SPACE_CLINT3_8822E)) +#define BIT_GET_BCN_SPACE_CLINT3_8822E(x) \ + (((x) >> BIT_SHIFT_BCN_SPACE_CLINT3_8822E) & \ + BIT_MASK_BCN_SPACE_CLINT3_8822E) +#define BIT_SET_BCN_SPACE_CLINT3_8822E(x, v) \ + (BIT_CLEAR_BCN_SPACE_CLINT3_8822E(x) | BIT_BCN_SPACE_CLINT3_8822E(v)) + +/* 2 REG_ACMHWCTRL_8822E */ +#define BIT_BEQ_ACM_STATUS_8822E BIT(7) +#define BIT_VIQ_ACM_STATUS_8822E BIT(6) +#define BIT_VOQ_ACM_STATUS_8822E BIT(5) +#define BIT_BEQ_ACM_EN_8822E BIT(3) +#define BIT_VIQ_ACM_EN_8822E BIT(2) +#define BIT_VOQ_ACM_EN_8822E BIT(1) +#define BIT_ACMHWEN_8822E BIT(0) + +/* 2 REG_ACMRSTCTRL_8822E */ +#define BIT_BE_ACM_RESET_USED_TIME_8822E BIT(2) +#define BIT_VI_ACM_RESET_USED_TIME_8822E BIT(1) +#define BIT_VO_ACM_RESET_USED_TIME_8822E BIT(0) + +/* 2 REG_ACMAVG_8822E */ + +#define BIT_SHIFT_AVGPERIOD_8822E 0 +#define BIT_MASK_AVGPERIOD_8822E 0xffff +#define BIT_AVGPERIOD_8822E(x) \ + (((x) & BIT_MASK_AVGPERIOD_8822E) << BIT_SHIFT_AVGPERIOD_8822E) +#define BITS_AVGPERIOD_8822E \ + (BIT_MASK_AVGPERIOD_8822E << BIT_SHIFT_AVGPERIOD_8822E) +#define BIT_CLEAR_AVGPERIOD_8822E(x) ((x) & (~BITS_AVGPERIOD_8822E)) +#define BIT_GET_AVGPERIOD_8822E(x) \ + (((x) >> BIT_SHIFT_AVGPERIOD_8822E) & BIT_MASK_AVGPERIOD_8822E) +#define BIT_SET_AVGPERIOD_8822E(x, v) \ + (BIT_CLEAR_AVGPERIOD_8822E(x) | BIT_AVGPERIOD_8822E(v)) + +/* 2 REG_VO_ADMTIME_8822E */ + +#define BIT_SHIFT_VO_ADMITTED_TIME_8822E 0 +#define BIT_MASK_VO_ADMITTED_TIME_8822E 0xffff +#define BIT_VO_ADMITTED_TIME_8822E(x) \ + (((x) & BIT_MASK_VO_ADMITTED_TIME_8822E) \ + << BIT_SHIFT_VO_ADMITTED_TIME_8822E) +#define BITS_VO_ADMITTED_TIME_8822E \ + (BIT_MASK_VO_ADMITTED_TIME_8822E << BIT_SHIFT_VO_ADMITTED_TIME_8822E) +#define BIT_CLEAR_VO_ADMITTED_TIME_8822E(x) \ + ((x) & (~BITS_VO_ADMITTED_TIME_8822E)) +#define BIT_GET_VO_ADMITTED_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_VO_ADMITTED_TIME_8822E) & \ + BIT_MASK_VO_ADMITTED_TIME_8822E) +#define BIT_SET_VO_ADMITTED_TIME_8822E(x, v) \ + (BIT_CLEAR_VO_ADMITTED_TIME_8822E(x) | BIT_VO_ADMITTED_TIME_8822E(v)) + +/* 2 REG_VI_ADMTIME_8822E */ + +#define BIT_SHIFT_VI_ADMITTED_TIME_8822E 0 +#define BIT_MASK_VI_ADMITTED_TIME_8822E 0xffff +#define BIT_VI_ADMITTED_TIME_8822E(x) \ + (((x) & BIT_MASK_VI_ADMITTED_TIME_8822E) \ + << BIT_SHIFT_VI_ADMITTED_TIME_8822E) +#define BITS_VI_ADMITTED_TIME_8822E \ + (BIT_MASK_VI_ADMITTED_TIME_8822E << BIT_SHIFT_VI_ADMITTED_TIME_8822E) +#define BIT_CLEAR_VI_ADMITTED_TIME_8822E(x) \ + ((x) & (~BITS_VI_ADMITTED_TIME_8822E)) +#define BIT_GET_VI_ADMITTED_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_VI_ADMITTED_TIME_8822E) & \ + BIT_MASK_VI_ADMITTED_TIME_8822E) +#define BIT_SET_VI_ADMITTED_TIME_8822E(x, v) \ + (BIT_CLEAR_VI_ADMITTED_TIME_8822E(x) | BIT_VI_ADMITTED_TIME_8822E(v)) + +/* 2 REG_BE_ADMTIME_8822E */ + +#define BIT_SHIFT_BE_ADMITTED_TIME_8822E 0 +#define BIT_MASK_BE_ADMITTED_TIME_8822E 0xffff +#define BIT_BE_ADMITTED_TIME_8822E(x) \ + (((x) & BIT_MASK_BE_ADMITTED_TIME_8822E) \ + << BIT_SHIFT_BE_ADMITTED_TIME_8822E) +#define BITS_BE_ADMITTED_TIME_8822E \ + (BIT_MASK_BE_ADMITTED_TIME_8822E << BIT_SHIFT_BE_ADMITTED_TIME_8822E) +#define BIT_CLEAR_BE_ADMITTED_TIME_8822E(x) \ + ((x) & (~BITS_BE_ADMITTED_TIME_8822E)) +#define BIT_GET_BE_ADMITTED_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_BE_ADMITTED_TIME_8822E) & \ + BIT_MASK_BE_ADMITTED_TIME_8822E) +#define BIT_SET_BE_ADMITTED_TIME_8822E(x, v) \ + (BIT_CLEAR_BE_ADMITTED_TIME_8822E(x) | BIT_BE_ADMITTED_TIME_8822E(v)) + +/* 2 REG_MAC_HEADER_NAV_OFFSET_8822E */ + +#define BIT_SHIFT_MAC_HEADER_NAV_OFFSET_8822E 0 +#define BIT_MASK_MAC_HEADER_NAV_OFFSET_8822E 0xff +#define BIT_MAC_HEADER_NAV_OFFSET_8822E(x) \ + (((x) & BIT_MASK_MAC_HEADER_NAV_OFFSET_8822E) \ + << BIT_SHIFT_MAC_HEADER_NAV_OFFSET_8822E) +#define BITS_MAC_HEADER_NAV_OFFSET_8822E \ + (BIT_MASK_MAC_HEADER_NAV_OFFSET_8822E \ + << BIT_SHIFT_MAC_HEADER_NAV_OFFSET_8822E) +#define BIT_CLEAR_MAC_HEADER_NAV_OFFSET_8822E(x) \ + ((x) & (~BITS_MAC_HEADER_NAV_OFFSET_8822E)) +#define BIT_GET_MAC_HEADER_NAV_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_MAC_HEADER_NAV_OFFSET_8822E) & \ + BIT_MASK_MAC_HEADER_NAV_OFFSET_8822E) +#define BIT_SET_MAC_HEADER_NAV_OFFSET_8822E(x, v) \ + (BIT_CLEAR_MAC_HEADER_NAV_OFFSET_8822E(x) | \ + BIT_MAC_HEADER_NAV_OFFSET_8822E(v)) + +/* 2 REG_DIS_NDPA_NAV_CHECK_8822E */ +#define BIT_CHG_POWER_BCN_AREA_V1_8822E BIT(1) +#define BIT_DIS_NDPA_NAV_CHECK_8822E BIT(0) + +/* 2 REG_EDCA_RANDOM_GEN_8822E */ + +#define BIT_SHIFT_RANDOM_GEN_8822E 0 +#define BIT_MASK_RANDOM_GEN_8822E 0xffffff +#define BIT_RANDOM_GEN_8822E(x) \ + (((x) & BIT_MASK_RANDOM_GEN_8822E) << BIT_SHIFT_RANDOM_GEN_8822E) +#define BITS_RANDOM_GEN_8822E \ + (BIT_MASK_RANDOM_GEN_8822E << BIT_SHIFT_RANDOM_GEN_8822E) +#define BIT_CLEAR_RANDOM_GEN_8822E(x) ((x) & (~BITS_RANDOM_GEN_8822E)) +#define BIT_GET_RANDOM_GEN_8822E(x) \ + (((x) >> BIT_SHIFT_RANDOM_GEN_8822E) & BIT_MASK_RANDOM_GEN_8822E) +#define BIT_SET_RANDOM_GEN_8822E(x, v) \ + (BIT_CLEAR_RANDOM_GEN_8822E(x) | BIT_RANDOM_GEN_8822E(v)) + +/* 2 REG_TXCMD_NOA_SEL_8822E */ + +#define BIT_SHIFT_NOA_SEL_V2_8822E 4 +#define BIT_MASK_NOA_SEL_V2_8822E 0x7 +#define BIT_NOA_SEL_V2_8822E(x) \ + (((x) & BIT_MASK_NOA_SEL_V2_8822E) << BIT_SHIFT_NOA_SEL_V2_8822E) +#define BITS_NOA_SEL_V2_8822E \ + (BIT_MASK_NOA_SEL_V2_8822E << BIT_SHIFT_NOA_SEL_V2_8822E) +#define BIT_CLEAR_NOA_SEL_V2_8822E(x) ((x) & (~BITS_NOA_SEL_V2_8822E)) +#define BIT_GET_NOA_SEL_V2_8822E(x) \ + (((x) >> BIT_SHIFT_NOA_SEL_V2_8822E) & BIT_MASK_NOA_SEL_V2_8822E) +#define BIT_SET_NOA_SEL_V2_8822E(x, v) \ + (BIT_CLEAR_NOA_SEL_V2_8822E(x) | BIT_NOA_SEL_V2_8822E(v)) + +#define BIT_SHIFT_TXCMD_SEG_SEL_8822E 0 +#define BIT_MASK_TXCMD_SEG_SEL_8822E 0xf +#define BIT_TXCMD_SEG_SEL_8822E(x) \ + (((x) & BIT_MASK_TXCMD_SEG_SEL_8822E) << BIT_SHIFT_TXCMD_SEG_SEL_8822E) +#define BITS_TXCMD_SEG_SEL_8822E \ + (BIT_MASK_TXCMD_SEG_SEL_8822E << BIT_SHIFT_TXCMD_SEG_SEL_8822E) +#define BIT_CLEAR_TXCMD_SEG_SEL_8822E(x) ((x) & (~BITS_TXCMD_SEG_SEL_8822E)) +#define BIT_GET_TXCMD_SEG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_TXCMD_SEG_SEL_8822E) & BIT_MASK_TXCMD_SEG_SEL_8822E) +#define BIT_SET_TXCMD_SEG_SEL_8822E(x, v) \ + (BIT_CLEAR_TXCMD_SEG_SEL_8822E(x) | BIT_TXCMD_SEG_SEL_8822E(v)) + +/* 2 REG_32K_CLK_SEL_8822E */ +#define BIT_R_BCNERR_CNT_EN_8822E BIT(20) + +#define BIT_SHIFT_R_BCNERR_PORT_SEL_8822E 16 +#define BIT_MASK_R_BCNERR_PORT_SEL_8822E 0x7 +#define BIT_R_BCNERR_PORT_SEL_8822E(x) \ + (((x) & BIT_MASK_R_BCNERR_PORT_SEL_8822E) \ + << BIT_SHIFT_R_BCNERR_PORT_SEL_8822E) +#define BITS_R_BCNERR_PORT_SEL_8822E \ + (BIT_MASK_R_BCNERR_PORT_SEL_8822E << BIT_SHIFT_R_BCNERR_PORT_SEL_8822E) +#define BIT_CLEAR_R_BCNERR_PORT_SEL_8822E(x) \ + ((x) & (~BITS_R_BCNERR_PORT_SEL_8822E)) +#define BIT_GET_R_BCNERR_PORT_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_R_BCNERR_PORT_SEL_8822E) & \ + BIT_MASK_R_BCNERR_PORT_SEL_8822E) +#define BIT_SET_R_BCNERR_PORT_SEL_8822E(x, v) \ + (BIT_CLEAR_R_BCNERR_PORT_SEL_8822E(x) | BIT_R_BCNERR_PORT_SEL_8822E(v)) + +#define BIT_SHIFT_R_TXPAUSE1_8822E 8 +#define BIT_MASK_R_TXPAUSE1_8822E 0xff +#define BIT_R_TXPAUSE1_8822E(x) \ + (((x) & BIT_MASK_R_TXPAUSE1_8822E) << BIT_SHIFT_R_TXPAUSE1_8822E) +#define BITS_R_TXPAUSE1_8822E \ + (BIT_MASK_R_TXPAUSE1_8822E << BIT_SHIFT_R_TXPAUSE1_8822E) +#define BIT_CLEAR_R_TXPAUSE1_8822E(x) ((x) & (~BITS_R_TXPAUSE1_8822E)) +#define BIT_GET_R_TXPAUSE1_8822E(x) \ + (((x) >> BIT_SHIFT_R_TXPAUSE1_8822E) & BIT_MASK_R_TXPAUSE1_8822E) +#define BIT_SET_R_TXPAUSE1_8822E(x, v) \ + (BIT_CLEAR_R_TXPAUSE1_8822E(x) | BIT_R_TXPAUSE1_8822E(v)) + +#define BIT_SLEEP_32K_EN_V1_8822E BIT(2) + +#define BIT_SHIFT_BW_CFG_8822E 0 +#define BIT_MASK_BW_CFG_8822E 0x3 +#define BIT_BW_CFG_8822E(x) \ + (((x) & BIT_MASK_BW_CFG_8822E) << BIT_SHIFT_BW_CFG_8822E) +#define BITS_BW_CFG_8822E (BIT_MASK_BW_CFG_8822E << BIT_SHIFT_BW_CFG_8822E) +#define BIT_CLEAR_BW_CFG_8822E(x) ((x) & (~BITS_BW_CFG_8822E)) +#define BIT_GET_BW_CFG_8822E(x) \ + (((x) >> BIT_SHIFT_BW_CFG_8822E) & BIT_MASK_BW_CFG_8822E) +#define BIT_SET_BW_CFG_8822E(x, v) \ + (BIT_CLEAR_BW_CFG_8822E(x) | BIT_BW_CFG_8822E(v)) + +/* 2 REG_EARLYINT_ADJUST_8822E */ + +#define BIT_SHIFT_RXBCN_TIMER_8822E 16 +#define BIT_MASK_RXBCN_TIMER_8822E 0xffff +#define BIT_RXBCN_TIMER_8822E(x) \ + (((x) & BIT_MASK_RXBCN_TIMER_8822E) << BIT_SHIFT_RXBCN_TIMER_8822E) +#define BITS_RXBCN_TIMER_8822E \ + (BIT_MASK_RXBCN_TIMER_8822E << BIT_SHIFT_RXBCN_TIMER_8822E) +#define BIT_CLEAR_RXBCN_TIMER_8822E(x) ((x) & (~BITS_RXBCN_TIMER_8822E)) +#define BIT_GET_RXBCN_TIMER_8822E(x) \ + (((x) >> BIT_SHIFT_RXBCN_TIMER_8822E) & BIT_MASK_RXBCN_TIMER_8822E) +#define BIT_SET_RXBCN_TIMER_8822E(x, v) \ + (BIT_CLEAR_RXBCN_TIMER_8822E(x) | BIT_RXBCN_TIMER_8822E(v)) + +#define BIT_SHIFT_R_ERLYINTADJ_8822E 0 +#define BIT_MASK_R_ERLYINTADJ_8822E 0xffff +#define BIT_R_ERLYINTADJ_8822E(x) \ + (((x) & BIT_MASK_R_ERLYINTADJ_8822E) << BIT_SHIFT_R_ERLYINTADJ_8822E) +#define BITS_R_ERLYINTADJ_8822E \ + (BIT_MASK_R_ERLYINTADJ_8822E << BIT_SHIFT_R_ERLYINTADJ_8822E) +#define BIT_CLEAR_R_ERLYINTADJ_8822E(x) ((x) & (~BITS_R_ERLYINTADJ_8822E)) +#define BIT_GET_R_ERLYINTADJ_8822E(x) \ + (((x) >> BIT_SHIFT_R_ERLYINTADJ_8822E) & BIT_MASK_R_ERLYINTADJ_8822E) +#define BIT_SET_R_ERLYINTADJ_8822E(x, v) \ + (BIT_CLEAR_R_ERLYINTADJ_8822E(x) | BIT_R_ERLYINTADJ_8822E(v)) + +/* 2 REG_BCNERR_CNT_8822E */ + +#define BIT_SHIFT_BCNERR_CNT_OTHERS_8822E 24 +#define BIT_MASK_BCNERR_CNT_OTHERS_8822E 0xff +#define BIT_BCNERR_CNT_OTHERS_8822E(x) \ + (((x) & BIT_MASK_BCNERR_CNT_OTHERS_8822E) \ + << BIT_SHIFT_BCNERR_CNT_OTHERS_8822E) +#define BITS_BCNERR_CNT_OTHERS_8822E \ + (BIT_MASK_BCNERR_CNT_OTHERS_8822E << BIT_SHIFT_BCNERR_CNT_OTHERS_8822E) +#define BIT_CLEAR_BCNERR_CNT_OTHERS_8822E(x) \ + ((x) & (~BITS_BCNERR_CNT_OTHERS_8822E)) +#define BIT_GET_BCNERR_CNT_OTHERS_8822E(x) \ + (((x) >> BIT_SHIFT_BCNERR_CNT_OTHERS_8822E) & \ + BIT_MASK_BCNERR_CNT_OTHERS_8822E) +#define BIT_SET_BCNERR_CNT_OTHERS_8822E(x, v) \ + (BIT_CLEAR_BCNERR_CNT_OTHERS_8822E(x) | BIT_BCNERR_CNT_OTHERS_8822E(v)) + +#define BIT_SHIFT_BCNERR_CNT_INVALID_8822E 16 +#define BIT_MASK_BCNERR_CNT_INVALID_8822E 0xff +#define BIT_BCNERR_CNT_INVALID_8822E(x) \ + (((x) & BIT_MASK_BCNERR_CNT_INVALID_8822E) \ + << BIT_SHIFT_BCNERR_CNT_INVALID_8822E) +#define BITS_BCNERR_CNT_INVALID_8822E \ + (BIT_MASK_BCNERR_CNT_INVALID_8822E \ + << BIT_SHIFT_BCNERR_CNT_INVALID_8822E) +#define BIT_CLEAR_BCNERR_CNT_INVALID_8822E(x) \ + ((x) & (~BITS_BCNERR_CNT_INVALID_8822E)) +#define BIT_GET_BCNERR_CNT_INVALID_8822E(x) \ + (((x) >> BIT_SHIFT_BCNERR_CNT_INVALID_8822E) & \ + BIT_MASK_BCNERR_CNT_INVALID_8822E) +#define BIT_SET_BCNERR_CNT_INVALID_8822E(x, v) \ + (BIT_CLEAR_BCNERR_CNT_INVALID_8822E(x) | \ + BIT_BCNERR_CNT_INVALID_8822E(v)) + +#define BIT_SHIFT_BCNERR_CNT_MAC_8822E 8 +#define BIT_MASK_BCNERR_CNT_MAC_8822E 0xff +#define BIT_BCNERR_CNT_MAC_8822E(x) \ + (((x) & BIT_MASK_BCNERR_CNT_MAC_8822E) \ + << BIT_SHIFT_BCNERR_CNT_MAC_8822E) +#define BITS_BCNERR_CNT_MAC_8822E \ + (BIT_MASK_BCNERR_CNT_MAC_8822E << BIT_SHIFT_BCNERR_CNT_MAC_8822E) +#define BIT_CLEAR_BCNERR_CNT_MAC_8822E(x) ((x) & (~BITS_BCNERR_CNT_MAC_8822E)) +#define BIT_GET_BCNERR_CNT_MAC_8822E(x) \ + (((x) >> BIT_SHIFT_BCNERR_CNT_MAC_8822E) & \ + BIT_MASK_BCNERR_CNT_MAC_8822E) +#define BIT_SET_BCNERR_CNT_MAC_8822E(x, v) \ + (BIT_CLEAR_BCNERR_CNT_MAC_8822E(x) | BIT_BCNERR_CNT_MAC_8822E(v)) + +#define BIT_SHIFT_BCNERR_CNT_CCA_8822E 0 +#define BIT_MASK_BCNERR_CNT_CCA_8822E 0xff +#define BIT_BCNERR_CNT_CCA_8822E(x) \ + (((x) & BIT_MASK_BCNERR_CNT_CCA_8822E) \ + << BIT_SHIFT_BCNERR_CNT_CCA_8822E) +#define BITS_BCNERR_CNT_CCA_8822E \ + (BIT_MASK_BCNERR_CNT_CCA_8822E << BIT_SHIFT_BCNERR_CNT_CCA_8822E) +#define BIT_CLEAR_BCNERR_CNT_CCA_8822E(x) ((x) & (~BITS_BCNERR_CNT_CCA_8822E)) +#define BIT_GET_BCNERR_CNT_CCA_8822E(x) \ + (((x) >> BIT_SHIFT_BCNERR_CNT_CCA_8822E) & \ + BIT_MASK_BCNERR_CNT_CCA_8822E) +#define BIT_SET_BCNERR_CNT_CCA_8822E(x, v) \ + (BIT_CLEAR_BCNERR_CNT_CCA_8822E(x) | BIT_BCNERR_CNT_CCA_8822E(v)) + +/* 2 REG_BCNERR_CNT_2_8822E */ + +#define BIT_SHIFT_BCNERR_CNT_EDCCA_8822E 0 +#define BIT_MASK_BCNERR_CNT_EDCCA_8822E 0xff +#define BIT_BCNERR_CNT_EDCCA_8822E(x) \ + (((x) & BIT_MASK_BCNERR_CNT_EDCCA_8822E) \ + << BIT_SHIFT_BCNERR_CNT_EDCCA_8822E) +#define BITS_BCNERR_CNT_EDCCA_8822E \ + (BIT_MASK_BCNERR_CNT_EDCCA_8822E << BIT_SHIFT_BCNERR_CNT_EDCCA_8822E) +#define BIT_CLEAR_BCNERR_CNT_EDCCA_8822E(x) \ + ((x) & (~BITS_BCNERR_CNT_EDCCA_8822E)) +#define BIT_GET_BCNERR_CNT_EDCCA_8822E(x) \ + (((x) >> BIT_SHIFT_BCNERR_CNT_EDCCA_8822E) & \ + BIT_MASK_BCNERR_CNT_EDCCA_8822E) +#define BIT_SET_BCNERR_CNT_EDCCA_8822E(x, v) \ + (BIT_CLEAR_BCNERR_CNT_EDCCA_8822E(x) | BIT_BCNERR_CNT_EDCCA_8822E(v)) + +/* 2 REG_NOA_PARAM_8822E */ + +#define BIT_SHIFT_NOA_DURATION_V1_8822E 0 +#define BIT_MASK_NOA_DURATION_V1_8822E 0xffffffffL +#define BIT_NOA_DURATION_V1_8822E(x) \ + (((x) & BIT_MASK_NOA_DURATION_V1_8822E) \ + << BIT_SHIFT_NOA_DURATION_V1_8822E) +#define BITS_NOA_DURATION_V1_8822E \ + (BIT_MASK_NOA_DURATION_V1_8822E << BIT_SHIFT_NOA_DURATION_V1_8822E) +#define BIT_CLEAR_NOA_DURATION_V1_8822E(x) ((x) & (~BITS_NOA_DURATION_V1_8822E)) +#define BIT_GET_NOA_DURATION_V1_8822E(x) \ + (((x) >> BIT_SHIFT_NOA_DURATION_V1_8822E) & \ + BIT_MASK_NOA_DURATION_V1_8822E) +#define BIT_SET_NOA_DURATION_V1_8822E(x, v) \ + (BIT_CLEAR_NOA_DURATION_V1_8822E(x) | BIT_NOA_DURATION_V1_8822E(v)) + +/* 2 REG_NOA_PARAM_1_8822E */ + +#define BIT_SHIFT_NOA_INTERVAL_V1_8822E 0 +#define BIT_MASK_NOA_INTERVAL_V1_8822E 0xffffffffL +#define BIT_NOA_INTERVAL_V1_8822E(x) \ + (((x) & BIT_MASK_NOA_INTERVAL_V1_8822E) \ + << BIT_SHIFT_NOA_INTERVAL_V1_8822E) +#define BITS_NOA_INTERVAL_V1_8822E \ + (BIT_MASK_NOA_INTERVAL_V1_8822E << BIT_SHIFT_NOA_INTERVAL_V1_8822E) +#define BIT_CLEAR_NOA_INTERVAL_V1_8822E(x) ((x) & (~BITS_NOA_INTERVAL_V1_8822E)) +#define BIT_GET_NOA_INTERVAL_V1_8822E(x) \ + (((x) >> BIT_SHIFT_NOA_INTERVAL_V1_8822E) & \ + BIT_MASK_NOA_INTERVAL_V1_8822E) +#define BIT_SET_NOA_INTERVAL_V1_8822E(x, v) \ + (BIT_CLEAR_NOA_INTERVAL_V1_8822E(x) | BIT_NOA_INTERVAL_V1_8822E(v)) + +/* 2 REG_NOA_PARAM_2_8822E */ + +#define BIT_SHIFT_NOA_START_TIME_V1_8822E 0 +#define BIT_MASK_NOA_START_TIME_V1_8822E 0xffffffffL +#define BIT_NOA_START_TIME_V1_8822E(x) \ + (((x) & BIT_MASK_NOA_START_TIME_V1_8822E) \ + << BIT_SHIFT_NOA_START_TIME_V1_8822E) +#define BITS_NOA_START_TIME_V1_8822E \ + (BIT_MASK_NOA_START_TIME_V1_8822E << BIT_SHIFT_NOA_START_TIME_V1_8822E) +#define BIT_CLEAR_NOA_START_TIME_V1_8822E(x) \ + ((x) & (~BITS_NOA_START_TIME_V1_8822E)) +#define BIT_GET_NOA_START_TIME_V1_8822E(x) \ + (((x) >> BIT_SHIFT_NOA_START_TIME_V1_8822E) & \ + BIT_MASK_NOA_START_TIME_V1_8822E) +#define BIT_SET_NOA_START_TIME_V1_8822E(x, v) \ + (BIT_CLEAR_NOA_START_TIME_V1_8822E(x) | BIT_NOA_START_TIME_V1_8822E(v)) + +/* 2 REG_NOA_PARAM_3_8822E */ + +#define BIT_SHIFT_NOA_COUNT_V1_8822E 0 +#define BIT_MASK_NOA_COUNT_V1_8822E 0xffffffffL +#define BIT_NOA_COUNT_V1_8822E(x) \ + (((x) & BIT_MASK_NOA_COUNT_V1_8822E) << BIT_SHIFT_NOA_COUNT_V1_8822E) +#define BITS_NOA_COUNT_V1_8822E \ + (BIT_MASK_NOA_COUNT_V1_8822E << BIT_SHIFT_NOA_COUNT_V1_8822E) +#define BIT_CLEAR_NOA_COUNT_V1_8822E(x) ((x) & (~BITS_NOA_COUNT_V1_8822E)) +#define BIT_GET_NOA_COUNT_V1_8822E(x) \ + (((x) >> BIT_SHIFT_NOA_COUNT_V1_8822E) & BIT_MASK_NOA_COUNT_V1_8822E) +#define BIT_SET_NOA_COUNT_V1_8822E(x, v) \ + (BIT_CLEAR_NOA_COUNT_V1_8822E(x) | BIT_NOA_COUNT_V1_8822E(v)) + +/* 2 REG_P2P_RST_8822E */ +#define BIT_P2P2_PWR_RST1_8822E BIT(5) +#define BIT_P2P2_PWR_RST0_8822E BIT(4) +#define BIT_P2P1_PWR_RST1_8822E BIT(3) +#define BIT_P2P1_PWR_RST0_8822E BIT(2) +#define BIT_P2P_PWR_RST1_V1_8822E BIT(1) +#define BIT_P2P_PWR_RST0_V1_8822E BIT(0) + +/* 2 REG_SCHEDULER_RST_8822E */ +#define BIT_SYNC_CLI_ONCE_RIGHT_NOW_8822E BIT(2) +#define BIT_SYNC_CLI_ONCE_BY_TBTT_8822E BIT(1) +#define BIT_SCHEDULER_RST_V1_8822E BIT(0) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_SCH_DBG_VALUE_8822E */ + +#define BIT_SHIFT_SCH_DBG_VALUE_8822E 0 +#define BIT_MASK_SCH_DBG_VALUE_8822E 0xffffffffL +#define BIT_SCH_DBG_VALUE_8822E(x) \ + (((x) & BIT_MASK_SCH_DBG_VALUE_8822E) << BIT_SHIFT_SCH_DBG_VALUE_8822E) +#define BITS_SCH_DBG_VALUE_8822E \ + (BIT_MASK_SCH_DBG_VALUE_8822E << BIT_SHIFT_SCH_DBG_VALUE_8822E) +#define BIT_CLEAR_SCH_DBG_VALUE_8822E(x) ((x) & (~BITS_SCH_DBG_VALUE_8822E)) +#define BIT_GET_SCH_DBG_VALUE_8822E(x) \ + (((x) >> BIT_SHIFT_SCH_DBG_VALUE_8822E) & BIT_MASK_SCH_DBG_VALUE_8822E) +#define BIT_SET_SCH_DBG_VALUE_8822E(x, v) \ + (BIT_CLEAR_SCH_DBG_VALUE_8822E(x) | BIT_SCH_DBG_VALUE_8822E(v)) + +/* 2 REG_SCH_TXCMD_8822E */ + +#define BIT_SHIFT_SCH_TXCMD_8822E 0 +#define BIT_MASK_SCH_TXCMD_8822E 0xffffffffL +#define BIT_SCH_TXCMD_8822E(x) \ + (((x) & BIT_MASK_SCH_TXCMD_8822E) << BIT_SHIFT_SCH_TXCMD_8822E) +#define BITS_SCH_TXCMD_8822E \ + (BIT_MASK_SCH_TXCMD_8822E << BIT_SHIFT_SCH_TXCMD_8822E) +#define BIT_CLEAR_SCH_TXCMD_8822E(x) ((x) & (~BITS_SCH_TXCMD_8822E)) +#define BIT_GET_SCH_TXCMD_8822E(x) \ + (((x) >> BIT_SHIFT_SCH_TXCMD_8822E) & BIT_MASK_SCH_TXCMD_8822E) +#define BIT_SET_SCH_TXCMD_8822E(x, v) \ + (BIT_CLEAR_SCH_TXCMD_8822E(x) | BIT_SCH_TXCMD_8822E(v)) + +/* 2 REG_PAGE5_DUMMY_8822E */ + +/* 2 REG_CPUMGQ_TX_TIMER_8822E */ + +#define BIT_SHIFT_CPUMGQ_TX_TIMER_V1_8822E 0 +#define BIT_MASK_CPUMGQ_TX_TIMER_V1_8822E 0xffffffffL +#define BIT_CPUMGQ_TX_TIMER_V1_8822E(x) \ + (((x) & BIT_MASK_CPUMGQ_TX_TIMER_V1_8822E) \ + << BIT_SHIFT_CPUMGQ_TX_TIMER_V1_8822E) +#define BITS_CPUMGQ_TX_TIMER_V1_8822E \ + (BIT_MASK_CPUMGQ_TX_TIMER_V1_8822E \ + << BIT_SHIFT_CPUMGQ_TX_TIMER_V1_8822E) +#define BIT_CLEAR_CPUMGQ_TX_TIMER_V1_8822E(x) \ + ((x) & (~BITS_CPUMGQ_TX_TIMER_V1_8822E)) +#define BIT_GET_CPUMGQ_TX_TIMER_V1_8822E(x) \ + (((x) >> BIT_SHIFT_CPUMGQ_TX_TIMER_V1_8822E) & \ + BIT_MASK_CPUMGQ_TX_TIMER_V1_8822E) +#define BIT_SET_CPUMGQ_TX_TIMER_V1_8822E(x, v) \ + (BIT_CLEAR_CPUMGQ_TX_TIMER_V1_8822E(x) | \ + BIT_CPUMGQ_TX_TIMER_V1_8822E(v)) + +/* 2 REG_PS_TIMER_A_8822E */ + +#define BIT_SHIFT_PS_TIMER_A_V1_8822E 0 +#define BIT_MASK_PS_TIMER_A_V1_8822E 0xffffffffL +#define BIT_PS_TIMER_A_V1_8822E(x) \ + (((x) & BIT_MASK_PS_TIMER_A_V1_8822E) << BIT_SHIFT_PS_TIMER_A_V1_8822E) +#define BITS_PS_TIMER_A_V1_8822E \ + (BIT_MASK_PS_TIMER_A_V1_8822E << BIT_SHIFT_PS_TIMER_A_V1_8822E) +#define BIT_CLEAR_PS_TIMER_A_V1_8822E(x) ((x) & (~BITS_PS_TIMER_A_V1_8822E)) +#define BIT_GET_PS_TIMER_A_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PS_TIMER_A_V1_8822E) & BIT_MASK_PS_TIMER_A_V1_8822E) +#define BIT_SET_PS_TIMER_A_V1_8822E(x, v) \ + (BIT_CLEAR_PS_TIMER_A_V1_8822E(x) | BIT_PS_TIMER_A_V1_8822E(v)) + +/* 2 REG_PS_TIMER_B_8822E */ + +#define BIT_SHIFT_PS_TIMER_B_V1_8822E 0 +#define BIT_MASK_PS_TIMER_B_V1_8822E 0xffffffffL +#define BIT_PS_TIMER_B_V1_8822E(x) \ + (((x) & BIT_MASK_PS_TIMER_B_V1_8822E) << BIT_SHIFT_PS_TIMER_B_V1_8822E) +#define BITS_PS_TIMER_B_V1_8822E \ + (BIT_MASK_PS_TIMER_B_V1_8822E << BIT_SHIFT_PS_TIMER_B_V1_8822E) +#define BIT_CLEAR_PS_TIMER_B_V1_8822E(x) ((x) & (~BITS_PS_TIMER_B_V1_8822E)) +#define BIT_GET_PS_TIMER_B_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PS_TIMER_B_V1_8822E) & BIT_MASK_PS_TIMER_B_V1_8822E) +#define BIT_SET_PS_TIMER_B_V1_8822E(x, v) \ + (BIT_CLEAR_PS_TIMER_B_V1_8822E(x) | BIT_PS_TIMER_B_V1_8822E(v)) + +/* 2 REG_PS_TIMER_C_8822E */ + +#define BIT_SHIFT_PS_TIMER_C_V1_8822E 0 +#define BIT_MASK_PS_TIMER_C_V1_8822E 0xffffffffL +#define BIT_PS_TIMER_C_V1_8822E(x) \ + (((x) & BIT_MASK_PS_TIMER_C_V1_8822E) << BIT_SHIFT_PS_TIMER_C_V1_8822E) +#define BITS_PS_TIMER_C_V1_8822E \ + (BIT_MASK_PS_TIMER_C_V1_8822E << BIT_SHIFT_PS_TIMER_C_V1_8822E) +#define BIT_CLEAR_PS_TIMER_C_V1_8822E(x) ((x) & (~BITS_PS_TIMER_C_V1_8822E)) +#define BIT_GET_PS_TIMER_C_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PS_TIMER_C_V1_8822E) & BIT_MASK_PS_TIMER_C_V1_8822E) +#define BIT_SET_PS_TIMER_C_V1_8822E(x, v) \ + (BIT_CLEAR_PS_TIMER_C_V1_8822E(x) | BIT_PS_TIMER_C_V1_8822E(v)) + +/* 2 REG_PS_TIMER_ABC_CPUMGQ_TIMER_CRTL_8822E */ +#define BIT_CPUMGQ_TIMER_EN_8822E BIT(31) +#define BIT_CPUMGQ_TX_EN_8822E BIT(28) + +#define BIT_SHIFT_CPUMGQ_TIMER_TSF_SEL_8822E 24 +#define BIT_MASK_CPUMGQ_TIMER_TSF_SEL_8822E 0x7 +#define BIT_CPUMGQ_TIMER_TSF_SEL_8822E(x) \ + (((x) & BIT_MASK_CPUMGQ_TIMER_TSF_SEL_8822E) \ + << BIT_SHIFT_CPUMGQ_TIMER_TSF_SEL_8822E) +#define BITS_CPUMGQ_TIMER_TSF_SEL_8822E \ + (BIT_MASK_CPUMGQ_TIMER_TSF_SEL_8822E \ + << BIT_SHIFT_CPUMGQ_TIMER_TSF_SEL_8822E) +#define BIT_CLEAR_CPUMGQ_TIMER_TSF_SEL_8822E(x) \ + ((x) & (~BITS_CPUMGQ_TIMER_TSF_SEL_8822E)) +#define BIT_GET_CPUMGQ_TIMER_TSF_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_CPUMGQ_TIMER_TSF_SEL_8822E) & \ + BIT_MASK_CPUMGQ_TIMER_TSF_SEL_8822E) +#define BIT_SET_CPUMGQ_TIMER_TSF_SEL_8822E(x, v) \ + (BIT_CLEAR_CPUMGQ_TIMER_TSF_SEL_8822E(x) | \ + BIT_CPUMGQ_TIMER_TSF_SEL_8822E(v)) + +#define BIT_PS_TIMER_C_EN_8822E BIT(23) + +#define BIT_SHIFT_PS_TIMER_C_TSF_SEL_8822E 16 +#define BIT_MASK_PS_TIMER_C_TSF_SEL_8822E 0x7 +#define BIT_PS_TIMER_C_TSF_SEL_8822E(x) \ + (((x) & BIT_MASK_PS_TIMER_C_TSF_SEL_8822E) \ + << BIT_SHIFT_PS_TIMER_C_TSF_SEL_8822E) +#define BITS_PS_TIMER_C_TSF_SEL_8822E \ + (BIT_MASK_PS_TIMER_C_TSF_SEL_8822E \ + << BIT_SHIFT_PS_TIMER_C_TSF_SEL_8822E) +#define BIT_CLEAR_PS_TIMER_C_TSF_SEL_8822E(x) \ + ((x) & (~BITS_PS_TIMER_C_TSF_SEL_8822E)) +#define BIT_GET_PS_TIMER_C_TSF_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_PS_TIMER_C_TSF_SEL_8822E) & \ + BIT_MASK_PS_TIMER_C_TSF_SEL_8822E) +#define BIT_SET_PS_TIMER_C_TSF_SEL_8822E(x, v) \ + (BIT_CLEAR_PS_TIMER_C_TSF_SEL_8822E(x) | \ + BIT_PS_TIMER_C_TSF_SEL_8822E(v)) + +#define BIT_PS_TIMER_B_EN_8822E BIT(15) + +#define BIT_SHIFT_PS_TIMER_B_TSF_SEL_8822E 8 +#define BIT_MASK_PS_TIMER_B_TSF_SEL_8822E 0x7 +#define BIT_PS_TIMER_B_TSF_SEL_8822E(x) \ + (((x) & BIT_MASK_PS_TIMER_B_TSF_SEL_8822E) \ + << BIT_SHIFT_PS_TIMER_B_TSF_SEL_8822E) +#define BITS_PS_TIMER_B_TSF_SEL_8822E \ + (BIT_MASK_PS_TIMER_B_TSF_SEL_8822E \ + << BIT_SHIFT_PS_TIMER_B_TSF_SEL_8822E) +#define BIT_CLEAR_PS_TIMER_B_TSF_SEL_8822E(x) \ + ((x) & (~BITS_PS_TIMER_B_TSF_SEL_8822E)) +#define BIT_GET_PS_TIMER_B_TSF_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_PS_TIMER_B_TSF_SEL_8822E) & \ + BIT_MASK_PS_TIMER_B_TSF_SEL_8822E) +#define BIT_SET_PS_TIMER_B_TSF_SEL_8822E(x, v) \ + (BIT_CLEAR_PS_TIMER_B_TSF_SEL_8822E(x) | \ + BIT_PS_TIMER_B_TSF_SEL_8822E(v)) + +#define BIT_PS_TIMER_A_EN_8822E BIT(7) + +#define BIT_SHIFT_PS_TIMER_A_TSF_SEL_8822E 0 +#define BIT_MASK_PS_TIMER_A_TSF_SEL_8822E 0x7 +#define BIT_PS_TIMER_A_TSF_SEL_8822E(x) \ + (((x) & BIT_MASK_PS_TIMER_A_TSF_SEL_8822E) \ + << BIT_SHIFT_PS_TIMER_A_TSF_SEL_8822E) +#define BITS_PS_TIMER_A_TSF_SEL_8822E \ + (BIT_MASK_PS_TIMER_A_TSF_SEL_8822E \ + << BIT_SHIFT_PS_TIMER_A_TSF_SEL_8822E) +#define BIT_CLEAR_PS_TIMER_A_TSF_SEL_8822E(x) \ + ((x) & (~BITS_PS_TIMER_A_TSF_SEL_8822E)) +#define BIT_GET_PS_TIMER_A_TSF_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_PS_TIMER_A_TSF_SEL_8822E) & \ + BIT_MASK_PS_TIMER_A_TSF_SEL_8822E) +#define BIT_SET_PS_TIMER_A_TSF_SEL_8822E(x, v) \ + (BIT_CLEAR_PS_TIMER_A_TSF_SEL_8822E(x) | \ + BIT_PS_TIMER_A_TSF_SEL_8822E(v)) + +/* 2 REG_CPUMGQ_TX_TIMER_EARLY_8822E */ + +#define BIT_SHIFT_CPUMGQ_TX_TIMER_EARLY_8822E 0 +#define BIT_MASK_CPUMGQ_TX_TIMER_EARLY_8822E 0xff +#define BIT_CPUMGQ_TX_TIMER_EARLY_8822E(x) \ + (((x) & BIT_MASK_CPUMGQ_TX_TIMER_EARLY_8822E) \ + << BIT_SHIFT_CPUMGQ_TX_TIMER_EARLY_8822E) +#define BITS_CPUMGQ_TX_TIMER_EARLY_8822E \ + (BIT_MASK_CPUMGQ_TX_TIMER_EARLY_8822E \ + << BIT_SHIFT_CPUMGQ_TX_TIMER_EARLY_8822E) +#define BIT_CLEAR_CPUMGQ_TX_TIMER_EARLY_8822E(x) \ + ((x) & (~BITS_CPUMGQ_TX_TIMER_EARLY_8822E)) +#define BIT_GET_CPUMGQ_TX_TIMER_EARLY_8822E(x) \ + (((x) >> BIT_SHIFT_CPUMGQ_TX_TIMER_EARLY_8822E) & \ + BIT_MASK_CPUMGQ_TX_TIMER_EARLY_8822E) +#define BIT_SET_CPUMGQ_TX_TIMER_EARLY_8822E(x, v) \ + (BIT_CLEAR_CPUMGQ_TX_TIMER_EARLY_8822E(x) | \ + BIT_CPUMGQ_TX_TIMER_EARLY_8822E(v)) + +/* 2 REG_PS_TIMER_A_EARLY_8822E */ + +#define BIT_SHIFT_PS_TIMER_A_EARLY_8822E 0 +#define BIT_MASK_PS_TIMER_A_EARLY_8822E 0xff +#define BIT_PS_TIMER_A_EARLY_8822E(x) \ + (((x) & BIT_MASK_PS_TIMER_A_EARLY_8822E) \ + << BIT_SHIFT_PS_TIMER_A_EARLY_8822E) +#define BITS_PS_TIMER_A_EARLY_8822E \ + (BIT_MASK_PS_TIMER_A_EARLY_8822E << BIT_SHIFT_PS_TIMER_A_EARLY_8822E) +#define BIT_CLEAR_PS_TIMER_A_EARLY_8822E(x) \ + ((x) & (~BITS_PS_TIMER_A_EARLY_8822E)) +#define BIT_GET_PS_TIMER_A_EARLY_8822E(x) \ + (((x) >> BIT_SHIFT_PS_TIMER_A_EARLY_8822E) & \ + BIT_MASK_PS_TIMER_A_EARLY_8822E) +#define BIT_SET_PS_TIMER_A_EARLY_8822E(x, v) \ + (BIT_CLEAR_PS_TIMER_A_EARLY_8822E(x) | BIT_PS_TIMER_A_EARLY_8822E(v)) + +/* 2 REG_PS_TIMER_B_EARLY_8822E */ + +#define BIT_SHIFT_PS_TIMER_B_EARLY_8822E 0 +#define BIT_MASK_PS_TIMER_B_EARLY_8822E 0xff +#define BIT_PS_TIMER_B_EARLY_8822E(x) \ + (((x) & BIT_MASK_PS_TIMER_B_EARLY_8822E) \ + << BIT_SHIFT_PS_TIMER_B_EARLY_8822E) +#define BITS_PS_TIMER_B_EARLY_8822E \ + (BIT_MASK_PS_TIMER_B_EARLY_8822E << BIT_SHIFT_PS_TIMER_B_EARLY_8822E) +#define BIT_CLEAR_PS_TIMER_B_EARLY_8822E(x) \ + ((x) & (~BITS_PS_TIMER_B_EARLY_8822E)) +#define BIT_GET_PS_TIMER_B_EARLY_8822E(x) \ + (((x) >> BIT_SHIFT_PS_TIMER_B_EARLY_8822E) & \ + BIT_MASK_PS_TIMER_B_EARLY_8822E) +#define BIT_SET_PS_TIMER_B_EARLY_8822E(x, v) \ + (BIT_CLEAR_PS_TIMER_B_EARLY_8822E(x) | BIT_PS_TIMER_B_EARLY_8822E(v)) + +/* 2 REG_PS_TIMER_C_EARLY_8822E */ + +#define BIT_SHIFT_PS_TIMER_C_EARLY_8822E 0 +#define BIT_MASK_PS_TIMER_C_EARLY_8822E 0xff +#define BIT_PS_TIMER_C_EARLY_8822E(x) \ + (((x) & BIT_MASK_PS_TIMER_C_EARLY_8822E) \ + << BIT_SHIFT_PS_TIMER_C_EARLY_8822E) +#define BITS_PS_TIMER_C_EARLY_8822E \ + (BIT_MASK_PS_TIMER_C_EARLY_8822E << BIT_SHIFT_PS_TIMER_C_EARLY_8822E) +#define BIT_CLEAR_PS_TIMER_C_EARLY_8822E(x) \ + ((x) & (~BITS_PS_TIMER_C_EARLY_8822E)) +#define BIT_GET_PS_TIMER_C_EARLY_8822E(x) \ + (((x) >> BIT_SHIFT_PS_TIMER_C_EARLY_8822E) & \ + BIT_MASK_PS_TIMER_C_EARLY_8822E) +#define BIT_SET_PS_TIMER_C_EARLY_8822E(x, v) \ + (BIT_CLEAR_PS_TIMER_C_EARLY_8822E(x) | BIT_PS_TIMER_C_EARLY_8822E(v)) + +/* 2 REG_CPUMGQ_PARAMETER_8822E */ + +/* 2 REG_NOT_VALID_8822E */ +#define BIT_MAC_STOP_CPUMGQ_8822E BIT(16) + +#define BIT_SHIFT_CW_8822E 8 +#define BIT_MASK_CW_8822E 0xff +#define BIT_CW_8822E(x) (((x) & BIT_MASK_CW_8822E) << BIT_SHIFT_CW_8822E) +#define BITS_CW_8822E (BIT_MASK_CW_8822E << BIT_SHIFT_CW_8822E) +#define BIT_CLEAR_CW_8822E(x) ((x) & (~BITS_CW_8822E)) +#define BIT_GET_CW_8822E(x) (((x) >> BIT_SHIFT_CW_8822E) & BIT_MASK_CW_8822E) +#define BIT_SET_CW_8822E(x, v) (BIT_CLEAR_CW_8822E(x) | BIT_CW_8822E(v)) + +#define BIT_SHIFT_AIFS_8822E 0 +#define BIT_MASK_AIFS_8822E 0xff +#define BIT_AIFS_8822E(x) (((x) & BIT_MASK_AIFS_8822E) << BIT_SHIFT_AIFS_8822E) +#define BITS_AIFS_8822E (BIT_MASK_AIFS_8822E << BIT_SHIFT_AIFS_8822E) +#define BIT_CLEAR_AIFS_8822E(x) ((x) & (~BITS_AIFS_8822E)) +#define BIT_GET_AIFS_8822E(x) \ + (((x) >> BIT_SHIFT_AIFS_8822E) & BIT_MASK_AIFS_8822E) +#define BIT_SET_AIFS_8822E(x, v) (BIT_CLEAR_AIFS_8822E(x) | BIT_AIFS_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_TSF_SYNC_ADJ_8822E */ + +#define BIT_SHIFT_R_P0_TSFT_ADJ_VAL_8822E 16 +#define BIT_MASK_R_P0_TSFT_ADJ_VAL_8822E 0xffff +#define BIT_R_P0_TSFT_ADJ_VAL_8822E(x) \ + (((x) & BIT_MASK_R_P0_TSFT_ADJ_VAL_8822E) \ + << BIT_SHIFT_R_P0_TSFT_ADJ_VAL_8822E) +#define BITS_R_P0_TSFT_ADJ_VAL_8822E \ + (BIT_MASK_R_P0_TSFT_ADJ_VAL_8822E << BIT_SHIFT_R_P0_TSFT_ADJ_VAL_8822E) +#define BIT_CLEAR_R_P0_TSFT_ADJ_VAL_8822E(x) \ + ((x) & (~BITS_R_P0_TSFT_ADJ_VAL_8822E)) +#define BIT_GET_R_P0_TSFT_ADJ_VAL_8822E(x) \ + (((x) >> BIT_SHIFT_R_P0_TSFT_ADJ_VAL_8822E) & \ + BIT_MASK_R_P0_TSFT_ADJ_VAL_8822E) +#define BIT_SET_R_P0_TSFT_ADJ_VAL_8822E(x, v) \ + (BIT_CLEAR_R_P0_TSFT_ADJ_VAL_8822E(x) | BIT_R_P0_TSFT_ADJ_VAL_8822E(v)) + +#define BIT_R_X_COMP_Y_OVER_8822E BIT(8) + +#define BIT_SHIFT_R_X_SYNC_SEL_8822E 3 +#define BIT_MASK_R_X_SYNC_SEL_8822E 0x7 +#define BIT_R_X_SYNC_SEL_8822E(x) \ + (((x) & BIT_MASK_R_X_SYNC_SEL_8822E) << BIT_SHIFT_R_X_SYNC_SEL_8822E) +#define BITS_R_X_SYNC_SEL_8822E \ + (BIT_MASK_R_X_SYNC_SEL_8822E << BIT_SHIFT_R_X_SYNC_SEL_8822E) +#define BIT_CLEAR_R_X_SYNC_SEL_8822E(x) ((x) & (~BITS_R_X_SYNC_SEL_8822E)) +#define BIT_GET_R_X_SYNC_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_R_X_SYNC_SEL_8822E) & BIT_MASK_R_X_SYNC_SEL_8822E) +#define BIT_SET_R_X_SYNC_SEL_8822E(x, v) \ + (BIT_CLEAR_R_X_SYNC_SEL_8822E(x) | BIT_R_X_SYNC_SEL_8822E(v)) + +#define BIT_SHIFT_R_SYNC_Y_SEL_8822E 0 +#define BIT_MASK_R_SYNC_Y_SEL_8822E 0x7 +#define BIT_R_SYNC_Y_SEL_8822E(x) \ + (((x) & BIT_MASK_R_SYNC_Y_SEL_8822E) << BIT_SHIFT_R_SYNC_Y_SEL_8822E) +#define BITS_R_SYNC_Y_SEL_8822E \ + (BIT_MASK_R_SYNC_Y_SEL_8822E << BIT_SHIFT_R_SYNC_Y_SEL_8822E) +#define BIT_CLEAR_R_SYNC_Y_SEL_8822E(x) ((x) & (~BITS_R_SYNC_Y_SEL_8822E)) +#define BIT_GET_R_SYNC_Y_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_R_SYNC_Y_SEL_8822E) & BIT_MASK_R_SYNC_Y_SEL_8822E) +#define BIT_SET_R_SYNC_Y_SEL_8822E(x, v) \ + (BIT_CLEAR_R_SYNC_Y_SEL_8822E(x) | BIT_R_SYNC_Y_SEL_8822E(v)) + +/* 2 REG_TSF_ADJ_VLAUE_8822E */ + +#define BIT_SHIFT_R_CLI1_TSFT_ADJ_VAL_8822E 16 +#define BIT_MASK_R_CLI1_TSFT_ADJ_VAL_8822E 0xffff +#define BIT_R_CLI1_TSFT_ADJ_VAL_8822E(x) \ + (((x) & BIT_MASK_R_CLI1_TSFT_ADJ_VAL_8822E) \ + << BIT_SHIFT_R_CLI1_TSFT_ADJ_VAL_8822E) +#define BITS_R_CLI1_TSFT_ADJ_VAL_8822E \ + (BIT_MASK_R_CLI1_TSFT_ADJ_VAL_8822E \ + << BIT_SHIFT_R_CLI1_TSFT_ADJ_VAL_8822E) +#define BIT_CLEAR_R_CLI1_TSFT_ADJ_VAL_8822E(x) \ + ((x) & (~BITS_R_CLI1_TSFT_ADJ_VAL_8822E)) +#define BIT_GET_R_CLI1_TSFT_ADJ_VAL_8822E(x) \ + (((x) >> BIT_SHIFT_R_CLI1_TSFT_ADJ_VAL_8822E) & \ + BIT_MASK_R_CLI1_TSFT_ADJ_VAL_8822E) +#define BIT_SET_R_CLI1_TSFT_ADJ_VAL_8822E(x, v) \ + (BIT_CLEAR_R_CLI1_TSFT_ADJ_VAL_8822E(x) | \ + BIT_R_CLI1_TSFT_ADJ_VAL_8822E(v)) + +#define BIT_SHIFT_R_CLI0_TSFT_ADJ_VAL_8822E 0 +#define BIT_MASK_R_CLI0_TSFT_ADJ_VAL_8822E 0xffff +#define BIT_R_CLI0_TSFT_ADJ_VAL_8822E(x) \ + (((x) & BIT_MASK_R_CLI0_TSFT_ADJ_VAL_8822E) \ + << BIT_SHIFT_R_CLI0_TSFT_ADJ_VAL_8822E) +#define BITS_R_CLI0_TSFT_ADJ_VAL_8822E \ + (BIT_MASK_R_CLI0_TSFT_ADJ_VAL_8822E \ + << BIT_SHIFT_R_CLI0_TSFT_ADJ_VAL_8822E) +#define BIT_CLEAR_R_CLI0_TSFT_ADJ_VAL_8822E(x) \ + ((x) & (~BITS_R_CLI0_TSFT_ADJ_VAL_8822E)) +#define BIT_GET_R_CLI0_TSFT_ADJ_VAL_8822E(x) \ + (((x) >> BIT_SHIFT_R_CLI0_TSFT_ADJ_VAL_8822E) & \ + BIT_MASK_R_CLI0_TSFT_ADJ_VAL_8822E) +#define BIT_SET_R_CLI0_TSFT_ADJ_VAL_8822E(x, v) \ + (BIT_CLEAR_R_CLI0_TSFT_ADJ_VAL_8822E(x) | \ + BIT_R_CLI0_TSFT_ADJ_VAL_8822E(v)) + +/* 2 REG_TSF_ADJ_VLAUE_2_8822E */ + +#define BIT_SHIFT_R_CLI3_TSFT_ADJ_VAL_8822E 16 +#define BIT_MASK_R_CLI3_TSFT_ADJ_VAL_8822E 0xffff +#define BIT_R_CLI3_TSFT_ADJ_VAL_8822E(x) \ + (((x) & BIT_MASK_R_CLI3_TSFT_ADJ_VAL_8822E) \ + << BIT_SHIFT_R_CLI3_TSFT_ADJ_VAL_8822E) +#define BITS_R_CLI3_TSFT_ADJ_VAL_8822E \ + (BIT_MASK_R_CLI3_TSFT_ADJ_VAL_8822E \ + << BIT_SHIFT_R_CLI3_TSFT_ADJ_VAL_8822E) +#define BIT_CLEAR_R_CLI3_TSFT_ADJ_VAL_8822E(x) \ + ((x) & (~BITS_R_CLI3_TSFT_ADJ_VAL_8822E)) +#define BIT_GET_R_CLI3_TSFT_ADJ_VAL_8822E(x) \ + (((x) >> BIT_SHIFT_R_CLI3_TSFT_ADJ_VAL_8822E) & \ + BIT_MASK_R_CLI3_TSFT_ADJ_VAL_8822E) +#define BIT_SET_R_CLI3_TSFT_ADJ_VAL_8822E(x, v) \ + (BIT_CLEAR_R_CLI3_TSFT_ADJ_VAL_8822E(x) | \ + BIT_R_CLI3_TSFT_ADJ_VAL_8822E(v)) + +#define BIT_SHIFT_R_CLI2_TSFT_ADJ_VAL_8822E 0 +#define BIT_MASK_R_CLI2_TSFT_ADJ_VAL_8822E 0xffff +#define BIT_R_CLI2_TSFT_ADJ_VAL_8822E(x) \ + (((x) & BIT_MASK_R_CLI2_TSFT_ADJ_VAL_8822E) \ + << BIT_SHIFT_R_CLI2_TSFT_ADJ_VAL_8822E) +#define BITS_R_CLI2_TSFT_ADJ_VAL_8822E \ + (BIT_MASK_R_CLI2_TSFT_ADJ_VAL_8822E \ + << BIT_SHIFT_R_CLI2_TSFT_ADJ_VAL_8822E) +#define BIT_CLEAR_R_CLI2_TSFT_ADJ_VAL_8822E(x) \ + ((x) & (~BITS_R_CLI2_TSFT_ADJ_VAL_8822E)) +#define BIT_GET_R_CLI2_TSFT_ADJ_VAL_8822E(x) \ + (((x) >> BIT_SHIFT_R_CLI2_TSFT_ADJ_VAL_8822E) & \ + BIT_MASK_R_CLI2_TSFT_ADJ_VAL_8822E) +#define BIT_SET_R_CLI2_TSFT_ADJ_VAL_8822E(x, v) \ + (BIT_CLEAR_R_CLI2_TSFT_ADJ_VAL_8822E(x) | \ + BIT_R_CLI2_TSFT_ADJ_VAL_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_P2PPS_HW_AUTO_PAUSE_CTRL_8822E */ +#define BIT_P2PPS_NOA_STOP_TX_HANG_8822E BIT(31) +#define BIT_P2PPS_MACID_PAUSE_EN_8822E BIT(11) +#define BIT_P2PPS__MGQ_PAUSE_8822E BIT(10) +#define BIT_P2PPS__HIQ_PAUSE_8822E BIT(9) +#define BIT_P2PPS__BCNQ_PAUSE_8822E BIT(8) + +#define BIT_SHIFT_P2PPS_MACID_PAUSE_8822E 0 +#define BIT_MASK_P2PPS_MACID_PAUSE_8822E 0xff +#define BIT_P2PPS_MACID_PAUSE_8822E(x) \ + (((x) & BIT_MASK_P2PPS_MACID_PAUSE_8822E) \ + << BIT_SHIFT_P2PPS_MACID_PAUSE_8822E) +#define BITS_P2PPS_MACID_PAUSE_8822E \ + (BIT_MASK_P2PPS_MACID_PAUSE_8822E << BIT_SHIFT_P2PPS_MACID_PAUSE_8822E) +#define BIT_CLEAR_P2PPS_MACID_PAUSE_8822E(x) \ + ((x) & (~BITS_P2PPS_MACID_PAUSE_8822E)) +#define BIT_GET_P2PPS_MACID_PAUSE_8822E(x) \ + (((x) >> BIT_SHIFT_P2PPS_MACID_PAUSE_8822E) & \ + BIT_MASK_P2PPS_MACID_PAUSE_8822E) +#define BIT_SET_P2PPS_MACID_PAUSE_8822E(x, v) \ + (BIT_CLEAR_P2PPS_MACID_PAUSE_8822E(x) | BIT_P2PPS_MACID_PAUSE_8822E(v)) + +/* 2 REG_P2PPS1_HW_AUTO_PAUSE_CTRL_8822E */ +#define BIT_P2PPS1_NOA_STOP_TX_HANG_8822E BIT(31) +#define BIT_P2PPS1_MACID_PAUSE_EN_8822E BIT(11) +#define BIT_P2PPS1__MGQ_PAUSE_8822E BIT(10) +#define BIT_P2PPS1__HIQ_PAUSE_8822E BIT(9) +#define BIT_P2PPS1__BCNQ_PAUSE_8822E BIT(8) + +#define BIT_SHIFT_P2PPS1_MACID_PAUSE_8822E 0 +#define BIT_MASK_P2PPS1_MACID_PAUSE_8822E 0xff +#define BIT_P2PPS1_MACID_PAUSE_8822E(x) \ + (((x) & BIT_MASK_P2PPS1_MACID_PAUSE_8822E) \ + << BIT_SHIFT_P2PPS1_MACID_PAUSE_8822E) +#define BITS_P2PPS1_MACID_PAUSE_8822E \ + (BIT_MASK_P2PPS1_MACID_PAUSE_8822E \ + << BIT_SHIFT_P2PPS1_MACID_PAUSE_8822E) +#define BIT_CLEAR_P2PPS1_MACID_PAUSE_8822E(x) \ + ((x) & (~BITS_P2PPS1_MACID_PAUSE_8822E)) +#define BIT_GET_P2PPS1_MACID_PAUSE_8822E(x) \ + (((x) >> BIT_SHIFT_P2PPS1_MACID_PAUSE_8822E) & \ + BIT_MASK_P2PPS1_MACID_PAUSE_8822E) +#define BIT_SET_P2PPS1_MACID_PAUSE_8822E(x, v) \ + (BIT_CLEAR_P2PPS1_MACID_PAUSE_8822E(x) | \ + BIT_P2PPS1_MACID_PAUSE_8822E(v)) + +/* 2 REG_P2PPS2_HW_AUTO_PAUSE_CTRL_8822E */ +#define BIT_P2PPS2_NOA_STOP_TX_HANG_8822E BIT(31) +#define BIT_P2PPS2_MACID_PAUSE_EN_8822E BIT(11) +#define BIT_P2PPS2__MGQ_PAUSE_8822E BIT(10) +#define BIT_P2PPS2__HIQ_PAUSE_8822E BIT(9) +#define BIT_P2PPS2__BCNQ_PAUSE_8822E BIT(8) + +#define BIT_SHIFT_P2PPS2_MACID_PAUSE_8822E 0 +#define BIT_MASK_P2PPS2_MACID_PAUSE_8822E 0xff +#define BIT_P2PPS2_MACID_PAUSE_8822E(x) \ + (((x) & BIT_MASK_P2PPS2_MACID_PAUSE_8822E) \ + << BIT_SHIFT_P2PPS2_MACID_PAUSE_8822E) +#define BITS_P2PPS2_MACID_PAUSE_8822E \ + (BIT_MASK_P2PPS2_MACID_PAUSE_8822E \ + << BIT_SHIFT_P2PPS2_MACID_PAUSE_8822E) +#define BIT_CLEAR_P2PPS2_MACID_PAUSE_8822E(x) \ + ((x) & (~BITS_P2PPS2_MACID_PAUSE_8822E)) +#define BIT_GET_P2PPS2_MACID_PAUSE_8822E(x) \ + (((x) >> BIT_SHIFT_P2PPS2_MACID_PAUSE_8822E) & \ + BIT_MASK_P2PPS2_MACID_PAUSE_8822E) +#define BIT_SET_P2PPS2_MACID_PAUSE_8822E(x, v) \ + (BIT_CLEAR_P2PPS2_MACID_PAUSE_8822E(x) | \ + BIT_P2PPS2_MACID_PAUSE_8822E(v)) + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_SCHEDULER_COUNTER_8822E */ + +#define BIT_SHIFT__SCHEDULER_COUNTER_8822E 16 +#define BIT_MASK__SCHEDULER_COUNTER_8822E 0xffff +#define BIT__SCHEDULER_COUNTER_8822E(x) \ + (((x) & BIT_MASK__SCHEDULER_COUNTER_8822E) \ + << BIT_SHIFT__SCHEDULER_COUNTER_8822E) +#define BITS__SCHEDULER_COUNTER_8822E \ + (BIT_MASK__SCHEDULER_COUNTER_8822E \ + << BIT_SHIFT__SCHEDULER_COUNTER_8822E) +#define BIT_CLEAR__SCHEDULER_COUNTER_8822E(x) \ + ((x) & (~BITS__SCHEDULER_COUNTER_8822E)) +#define BIT_GET__SCHEDULER_COUNTER_8822E(x) \ + (((x) >> BIT_SHIFT__SCHEDULER_COUNTER_8822E) & \ + BIT_MASK__SCHEDULER_COUNTER_8822E) +#define BIT_SET__SCHEDULER_COUNTER_8822E(x, v) \ + (BIT_CLEAR__SCHEDULER_COUNTER_8822E(x) | \ + BIT__SCHEDULER_COUNTER_8822E(v)) + +#define BIT__SCHEDULER_COUNTER_RST_8822E BIT(8) + +#define BIT_SHIFT_SCHEDULER_COUNTER_SEL_8822E 0 +#define BIT_MASK_SCHEDULER_COUNTER_SEL_8822E 0xff +#define BIT_SCHEDULER_COUNTER_SEL_8822E(x) \ + (((x) & BIT_MASK_SCHEDULER_COUNTER_SEL_8822E) \ + << BIT_SHIFT_SCHEDULER_COUNTER_SEL_8822E) +#define BITS_SCHEDULER_COUNTER_SEL_8822E \ + (BIT_MASK_SCHEDULER_COUNTER_SEL_8822E \ + << BIT_SHIFT_SCHEDULER_COUNTER_SEL_8822E) +#define BIT_CLEAR_SCHEDULER_COUNTER_SEL_8822E(x) \ + ((x) & (~BITS_SCHEDULER_COUNTER_SEL_8822E)) +#define BIT_GET_SCHEDULER_COUNTER_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_SCHEDULER_COUNTER_SEL_8822E) & \ + BIT_MASK_SCHEDULER_COUNTER_SEL_8822E) +#define BIT_SET_SCHEDULER_COUNTER_SEL_8822E(x, v) \ + (BIT_CLEAR_SCHEDULER_COUNTER_SEL_8822E(x) | \ + BIT_SCHEDULER_COUNTER_SEL_8822E(v)) + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_WMAC_CR_8822E (WMAC CR AND APSD CONTROL REGISTER) */ +#define BIT_IC_MACPHY_M_8822E BIT(0) + +/* 2 REG_WMAC_FWPKT_CR_8822E */ +#define BIT_FWEN_8822E BIT(7) +#define BIT_PHYSTS_PKT_CTRL_8822E BIT(6) +#define BIT_APPHDR_MIDSRCH_FAIL_8822E BIT(4) +#define BIT_FWPARSING_EN_8822E BIT(3) + +#define BIT_SHIFT_APPEND_MHDR_LEN_8822E 0 +#define BIT_MASK_APPEND_MHDR_LEN_8822E 0x7 +#define BIT_APPEND_MHDR_LEN_8822E(x) \ + (((x) & BIT_MASK_APPEND_MHDR_LEN_8822E) \ + << BIT_SHIFT_APPEND_MHDR_LEN_8822E) +#define BITS_APPEND_MHDR_LEN_8822E \ + (BIT_MASK_APPEND_MHDR_LEN_8822E << BIT_SHIFT_APPEND_MHDR_LEN_8822E) +#define BIT_CLEAR_APPEND_MHDR_LEN_8822E(x) ((x) & (~BITS_APPEND_MHDR_LEN_8822E)) +#define BIT_GET_APPEND_MHDR_LEN_8822E(x) \ + (((x) >> BIT_SHIFT_APPEND_MHDR_LEN_8822E) & \ + BIT_MASK_APPEND_MHDR_LEN_8822E) +#define BIT_SET_APPEND_MHDR_LEN_8822E(x, v) \ + (BIT_CLEAR_APPEND_MHDR_LEN_8822E(x) | BIT_APPEND_MHDR_LEN_8822E(v)) + +/* 2 REG_FW_STS_FILTER_8822E */ +#define BIT_DATA_FW_STS_FILTER_8822E BIT(2) +#define BIT_CTRL_FW_STS_FILTER_8822E BIT(1) +#define BIT_MGNT_FW_STS_FILTER_8822E BIT(0) + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_TCR_8822E (TRANSMISSION CONFIGURATION REGISTER) */ +#define BIT_WMAC_EN_RTS_ADDR_8822E BIT(31) +#define BIT_WMAC_DISABLE_CCK_8822E BIT(30) +#define BIT_WMAC_RAW_LEN_8822E BIT(29) +#define BIT_WMAC_NOTX_IN_RXNDP_8822E BIT(28) +#define BIT_WMAC_EN_EOF_8822E BIT(27) +#define BIT_WMAC_BF_SEL_8822E BIT(26) +#define BIT_WMAC_ANTMODE_SEL_8822E BIT(25) +#define BIT_WMAC_TCRPWRMGT_HWCTL_8822E BIT(24) +#define BIT_WMAC_SMOOTH_VAL_8822E BIT(23) +#define BIT_WMAC_EN_SCRAM_INC_8822E BIT(22) +#define BIT_UNDERFLOWEN_CMPLEN_SEL_8822E BIT(21) +#define BIT_FETCH_MPDU_AFTER_WSEC_RDY_8822E BIT(20) +#define BIT_WMAC_TCR_EN_20MST_8822E BIT(19) +#define BIT_WMAC_DIS_SIGTA_8822E BIT(18) +#define BIT_WMAC_DIS_A2B0_8822E BIT(17) +#define BIT_WMAC_MSK_SIGBCRC_8822E BIT(16) +#define BIT_WMAC_TCR_ERRSTEN_3_8822E BIT(15) +#define BIT_WMAC_TCR_ERRSTEN_2_8822E BIT(14) +#define BIT_WMAC_TCR_ERRSTEN_1_8822E BIT(13) +#define BIT_WMAC_TCR_ERRSTEN_0_8822E BIT(12) +#define BIT_WMAC_TCR_TXSK_PERPKT_8822E BIT(11) +#define BIT_ICV_8822E BIT(10) +#define BIT_CFEND_FORMAT_8822E BIT(9) +#define BIT_CRC_8822E BIT(8) +#define BIT_WMAC_TCRPWRMGT_HWDATA_EN_8822E BIT(7) +#define BIT_PWR_ST_8822E BIT(6) +#define BIT_WMAC_TCR_UPD_TIMIE_8822E BIT(5) +#define BIT_WMAC_TCR_UPD_HGQMD_8822E BIT(4) +#define BIT_VHTSIGA1_TXPS_8822E BIT(3) +#define BIT_PAD_SEL_8822E BIT(2) +#define BIT_DIS_GCLK_8822E BIT(1) +#define BIT_WMAC_TCRPWRMGT_HWACT_EN_8822E BIT(0) + +/* 2 REG_RCR_8822E (RECEIVE CONFIGURATION REGISTER) */ +#define BIT_APP_FCS_8822E BIT(31) +#define BIT_APP_MIC_8822E BIT(30) +#define BIT_APP_ICV_8822E BIT(29) +#define BIT_APP_PHYSTS_8822E BIT(28) +#define BIT_APP_BASSN_8822E BIT(27) +#define BIT_VHT_DACK_8822E BIT(26) +#define BIT_TCPOFLD_EN_8822E BIT(25) +#define BIT_ENMBID_8822E BIT(24) +#define BIT_LSIGEN_8822E BIT(23) +#define BIT_MFBEN_8822E BIT(22) +#define BIT_DISCHKPPDLLEN_8822E BIT(21) +#define BIT_PKTCTL_DLEN_8822E BIT(20) +#define BIT_DISGCLK_8822E BIT(19) +#define BIT_TIM_PARSER_EN_8822E BIT(18) +#define BIT_BC_MD_EN_8822E BIT(17) +#define BIT_UC_MD_EN_8822E BIT(16) +#define BIT_RXSK_PERPKT_8822E BIT(15) +#define BIT_HTC_LOC_CTRL_8822E BIT(14) +#define BIT_ACK_WITH_CBSSID_DATA_OPTION_8822E BIT(13) +#define BIT_RPFM_CAM_ENABLE_8822E BIT(12) +#define BIT_TA_BCN_8822E BIT(11) +#define BIT_DISDECMYPKT_8822E BIT(10) +#define BIT_AICV_8822E BIT(9) +#define BIT_ACRC32_8822E BIT(8) +#define BIT_CBSSID_BCN_8822E BIT(7) +#define BIT_CBSSID_DATA_8822E BIT(6) +#define BIT_APWRMGT_8822E BIT(5) +#define BIT_ADD3_8822E BIT(4) +#define BIT_AB_8822E BIT(3) +#define BIT_AM_8822E BIT(2) +#define BIT_APM_8822E BIT(1) +#define BIT_AAP_8822E BIT(0) + +/* 2 REG_RX_PKT_LIMIT_8822E (RX PACKET LENGTH LIMIT REGISTER) */ + +#define BIT_SHIFT_RXPKTLMT_8822E 0 +#define BIT_MASK_RXPKTLMT_8822E 0x3f +#define BIT_RXPKTLMT_8822E(x) \ + (((x) & BIT_MASK_RXPKTLMT_8822E) << BIT_SHIFT_RXPKTLMT_8822E) +#define BITS_RXPKTLMT_8822E \ + (BIT_MASK_RXPKTLMT_8822E << BIT_SHIFT_RXPKTLMT_8822E) +#define BIT_CLEAR_RXPKTLMT_8822E(x) ((x) & (~BITS_RXPKTLMT_8822E)) +#define BIT_GET_RXPKTLMT_8822E(x) \ + (((x) >> BIT_SHIFT_RXPKTLMT_8822E) & BIT_MASK_RXPKTLMT_8822E) +#define BIT_SET_RXPKTLMT_8822E(x, v) \ + (BIT_CLEAR_RXPKTLMT_8822E(x) | BIT_RXPKTLMT_8822E(v)) + +/* 2 REG_RX_DLK_TIME_8822E (RX DEADLOCK TIME REGISTER) */ + +#define BIT_SHIFT_RX_DLK_TIME_8822E 0 +#define BIT_MASK_RX_DLK_TIME_8822E 0xff +#define BIT_RX_DLK_TIME_8822E(x) \ + (((x) & BIT_MASK_RX_DLK_TIME_8822E) << BIT_SHIFT_RX_DLK_TIME_8822E) +#define BITS_RX_DLK_TIME_8822E \ + (BIT_MASK_RX_DLK_TIME_8822E << BIT_SHIFT_RX_DLK_TIME_8822E) +#define BIT_CLEAR_RX_DLK_TIME_8822E(x) ((x) & (~BITS_RX_DLK_TIME_8822E)) +#define BIT_GET_RX_DLK_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_RX_DLK_TIME_8822E) & BIT_MASK_RX_DLK_TIME_8822E) +#define BIT_SET_RX_DLK_TIME_8822E(x, v) \ + (BIT_CLEAR_RX_DLK_TIME_8822E(x) | BIT_RX_DLK_TIME_8822E(v)) + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RX_DRVINFO_SZ_8822E (RX DRIVER INFO SIZE REGISTER) */ +#define BIT_PHYSTS_PER_PKT_MODE_8822E BIT(7) + +#define BIT_SHIFT_DRVINFO_SZ_V1_8822E 0 +#define BIT_MASK_DRVINFO_SZ_V1_8822E 0xf +#define BIT_DRVINFO_SZ_V1_8822E(x) \ + (((x) & BIT_MASK_DRVINFO_SZ_V1_8822E) << BIT_SHIFT_DRVINFO_SZ_V1_8822E) +#define BITS_DRVINFO_SZ_V1_8822E \ + (BIT_MASK_DRVINFO_SZ_V1_8822E << BIT_SHIFT_DRVINFO_SZ_V1_8822E) +#define BIT_CLEAR_DRVINFO_SZ_V1_8822E(x) ((x) & (~BITS_DRVINFO_SZ_V1_8822E)) +#define BIT_GET_DRVINFO_SZ_V1_8822E(x) \ + (((x) >> BIT_SHIFT_DRVINFO_SZ_V1_8822E) & BIT_MASK_DRVINFO_SZ_V1_8822E) +#define BIT_SET_DRVINFO_SZ_V1_8822E(x, v) \ + (BIT_CLEAR_DRVINFO_SZ_V1_8822E(x) | BIT_DRVINFO_SZ_V1_8822E(v)) + +/* 2 REG_MACID_8822E (MAC ID REGISTER) */ + +#define BIT_SHIFT_MACID_V1_8822E 0 +#define BIT_MASK_MACID_V1_8822E 0xffffffffL +#define BIT_MACID_V1_8822E(x) \ + (((x) & BIT_MASK_MACID_V1_8822E) << BIT_SHIFT_MACID_V1_8822E) +#define BITS_MACID_V1_8822E \ + (BIT_MASK_MACID_V1_8822E << BIT_SHIFT_MACID_V1_8822E) +#define BIT_CLEAR_MACID_V1_8822E(x) ((x) & (~BITS_MACID_V1_8822E)) +#define BIT_GET_MACID_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MACID_V1_8822E) & BIT_MASK_MACID_V1_8822E) +#define BIT_SET_MACID_V1_8822E(x, v) \ + (BIT_CLEAR_MACID_V1_8822E(x) | BIT_MACID_V1_8822E(v)) + +/* 2 REG_MACID_H_8822E (MAC ID REGISTER) */ + +#define BIT_SHIFT_MACID_H_V1_8822E 0 +#define BIT_MASK_MACID_H_V1_8822E 0xffff +#define BIT_MACID_H_V1_8822E(x) \ + (((x) & BIT_MASK_MACID_H_V1_8822E) << BIT_SHIFT_MACID_H_V1_8822E) +#define BITS_MACID_H_V1_8822E \ + (BIT_MASK_MACID_H_V1_8822E << BIT_SHIFT_MACID_H_V1_8822E) +#define BIT_CLEAR_MACID_H_V1_8822E(x) ((x) & (~BITS_MACID_H_V1_8822E)) +#define BIT_GET_MACID_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MACID_H_V1_8822E) & BIT_MASK_MACID_H_V1_8822E) +#define BIT_SET_MACID_H_V1_8822E(x, v) \ + (BIT_CLEAR_MACID_H_V1_8822E(x) | BIT_MACID_H_V1_8822E(v)) + +/* 2 REG_BSSID_8822E (BSSID REGISTER) */ + +#define BIT_SHIFT_BSSID_V1_8822E 0 +#define BIT_MASK_BSSID_V1_8822E 0xffffffffL +#define BIT_BSSID_V1_8822E(x) \ + (((x) & BIT_MASK_BSSID_V1_8822E) << BIT_SHIFT_BSSID_V1_8822E) +#define BITS_BSSID_V1_8822E \ + (BIT_MASK_BSSID_V1_8822E << BIT_SHIFT_BSSID_V1_8822E) +#define BIT_CLEAR_BSSID_V1_8822E(x) ((x) & (~BITS_BSSID_V1_8822E)) +#define BIT_GET_BSSID_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID_V1_8822E) & BIT_MASK_BSSID_V1_8822E) +#define BIT_SET_BSSID_V1_8822E(x, v) \ + (BIT_CLEAR_BSSID_V1_8822E(x) | BIT_BSSID_V1_8822E(v)) + +/* 2 REG_BSSID_H_8822E (BSSID REGISTER) */ + +/* 2 REG_NOT_VALID_8822E */ + +#define BIT_SHIFT_BSSID_H_V1_8822E 0 +#define BIT_MASK_BSSID_H_V1_8822E 0xffff +#define BIT_BSSID_H_V1_8822E(x) \ + (((x) & BIT_MASK_BSSID_H_V1_8822E) << BIT_SHIFT_BSSID_H_V1_8822E) +#define BITS_BSSID_H_V1_8822E \ + (BIT_MASK_BSSID_H_V1_8822E << BIT_SHIFT_BSSID_H_V1_8822E) +#define BIT_CLEAR_BSSID_H_V1_8822E(x) ((x) & (~BITS_BSSID_H_V1_8822E)) +#define BIT_GET_BSSID_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID_H_V1_8822E) & BIT_MASK_BSSID_H_V1_8822E) +#define BIT_SET_BSSID_H_V1_8822E(x, v) \ + (BIT_CLEAR_BSSID_H_V1_8822E(x) | BIT_BSSID_H_V1_8822E(v)) + +/* 2 REG_MAR_8822E (MULTICAST ADDRESS REGISTER) */ + +#define BIT_SHIFT_MAR_V1_8822E 0 +#define BIT_MASK_MAR_V1_8822E 0xffffffffL +#define BIT_MAR_V1_8822E(x) \ + (((x) & BIT_MASK_MAR_V1_8822E) << BIT_SHIFT_MAR_V1_8822E) +#define BITS_MAR_V1_8822E (BIT_MASK_MAR_V1_8822E << BIT_SHIFT_MAR_V1_8822E) +#define BIT_CLEAR_MAR_V1_8822E(x) ((x) & (~BITS_MAR_V1_8822E)) +#define BIT_GET_MAR_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MAR_V1_8822E) & BIT_MASK_MAR_V1_8822E) +#define BIT_SET_MAR_V1_8822E(x, v) \ + (BIT_CLEAR_MAR_V1_8822E(x) | BIT_MAR_V1_8822E(v)) + +/* 2 REG_MAR_H_8822E (MULTICAST ADDRESS REGISTER) */ + +#define BIT_SHIFT_MAR_H_V1_8822E 0 +#define BIT_MASK_MAR_H_V1_8822E 0xffffffffL +#define BIT_MAR_H_V1_8822E(x) \ + (((x) & BIT_MASK_MAR_H_V1_8822E) << BIT_SHIFT_MAR_H_V1_8822E) +#define BITS_MAR_H_V1_8822E \ + (BIT_MASK_MAR_H_V1_8822E << BIT_SHIFT_MAR_H_V1_8822E) +#define BIT_CLEAR_MAR_H_V1_8822E(x) ((x) & (~BITS_MAR_H_V1_8822E)) +#define BIT_GET_MAR_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MAR_H_V1_8822E) & BIT_MASK_MAR_H_V1_8822E) +#define BIT_SET_MAR_H_V1_8822E(x, v) \ + (BIT_CLEAR_MAR_H_V1_8822E(x) | BIT_MAR_H_V1_8822E(v)) + +/* 2 REG_MBIDCAMCFG_1_8822E (MBSSID CAM CONFIGURATION REGISTER) */ + +#define BIT_SHIFT_MBIDCAM_RWDATA_L_8822E 0 +#define BIT_MASK_MBIDCAM_RWDATA_L_8822E 0xffffffffL +#define BIT_MBIDCAM_RWDATA_L_8822E(x) \ + (((x) & BIT_MASK_MBIDCAM_RWDATA_L_8822E) \ + << BIT_SHIFT_MBIDCAM_RWDATA_L_8822E) +#define BITS_MBIDCAM_RWDATA_L_8822E \ + (BIT_MASK_MBIDCAM_RWDATA_L_8822E << BIT_SHIFT_MBIDCAM_RWDATA_L_8822E) +#define BIT_CLEAR_MBIDCAM_RWDATA_L_8822E(x) \ + ((x) & (~BITS_MBIDCAM_RWDATA_L_8822E)) +#define BIT_GET_MBIDCAM_RWDATA_L_8822E(x) \ + (((x) >> BIT_SHIFT_MBIDCAM_RWDATA_L_8822E) & \ + BIT_MASK_MBIDCAM_RWDATA_L_8822E) +#define BIT_SET_MBIDCAM_RWDATA_L_8822E(x, v) \ + (BIT_CLEAR_MBIDCAM_RWDATA_L_8822E(x) | BIT_MBIDCAM_RWDATA_L_8822E(v)) + +/* 2 REG_MBIDCAMCFG_2_8822E (MBSSID CAM CONFIGURATION REGISTER) */ +#define BIT_MBIDCAM_POLL_8822E BIT(31) +#define BIT_MBIDCAM_WT_EN_8822E BIT(30) + +#define BIT_SHIFT_MBIDCAM_ADDR_V1_8822E 24 +#define BIT_MASK_MBIDCAM_ADDR_V1_8822E 0x3f +#define BIT_MBIDCAM_ADDR_V1_8822E(x) \ + (((x) & BIT_MASK_MBIDCAM_ADDR_V1_8822E) \ + << BIT_SHIFT_MBIDCAM_ADDR_V1_8822E) +#define BITS_MBIDCAM_ADDR_V1_8822E \ + (BIT_MASK_MBIDCAM_ADDR_V1_8822E << BIT_SHIFT_MBIDCAM_ADDR_V1_8822E) +#define BIT_CLEAR_MBIDCAM_ADDR_V1_8822E(x) ((x) & (~BITS_MBIDCAM_ADDR_V1_8822E)) +#define BIT_GET_MBIDCAM_ADDR_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MBIDCAM_ADDR_V1_8822E) & \ + BIT_MASK_MBIDCAM_ADDR_V1_8822E) +#define BIT_SET_MBIDCAM_ADDR_V1_8822E(x, v) \ + (BIT_CLEAR_MBIDCAM_ADDR_V1_8822E(x) | BIT_MBIDCAM_ADDR_V1_8822E(v)) + +#define BIT_MBIDCAM_VALID_8822E BIT(23) +#define BIT_LSIC_TXOP_EN_8822E BIT(17) +#define BIT_CTS_EN_8822E BIT(16) + +#define BIT_SHIFT_MBIDCAM_RWDATA_H_8822E 0 +#define BIT_MASK_MBIDCAM_RWDATA_H_8822E 0xffff +#define BIT_MBIDCAM_RWDATA_H_8822E(x) \ + (((x) & BIT_MASK_MBIDCAM_RWDATA_H_8822E) \ + << BIT_SHIFT_MBIDCAM_RWDATA_H_8822E) +#define BITS_MBIDCAM_RWDATA_H_8822E \ + (BIT_MASK_MBIDCAM_RWDATA_H_8822E << BIT_SHIFT_MBIDCAM_RWDATA_H_8822E) +#define BIT_CLEAR_MBIDCAM_RWDATA_H_8822E(x) \ + ((x) & (~BITS_MBIDCAM_RWDATA_H_8822E)) +#define BIT_GET_MBIDCAM_RWDATA_H_8822E(x) \ + (((x) >> BIT_SHIFT_MBIDCAM_RWDATA_H_8822E) & \ + BIT_MASK_MBIDCAM_RWDATA_H_8822E) +#define BIT_SET_MBIDCAM_RWDATA_H_8822E(x, v) \ + (BIT_CLEAR_MBIDCAM_RWDATA_H_8822E(x) | BIT_MBIDCAM_RWDATA_H_8822E(v)) + +/* 2 REG_WMAC_TCR_TSFT_OFS_8822E */ + +#define BIT_SHIFT_WMAC_TCR_TSFT_OFS_8822E 0 +#define BIT_MASK_WMAC_TCR_TSFT_OFS_8822E 0xffff +#define BIT_WMAC_TCR_TSFT_OFS_8822E(x) \ + (((x) & BIT_MASK_WMAC_TCR_TSFT_OFS_8822E) \ + << BIT_SHIFT_WMAC_TCR_TSFT_OFS_8822E) +#define BITS_WMAC_TCR_TSFT_OFS_8822E \ + (BIT_MASK_WMAC_TCR_TSFT_OFS_8822E << BIT_SHIFT_WMAC_TCR_TSFT_OFS_8822E) +#define BIT_CLEAR_WMAC_TCR_TSFT_OFS_8822E(x) \ + ((x) & (~BITS_WMAC_TCR_TSFT_OFS_8822E)) +#define BIT_GET_WMAC_TCR_TSFT_OFS_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_TCR_TSFT_OFS_8822E) & \ + BIT_MASK_WMAC_TCR_TSFT_OFS_8822E) +#define BIT_SET_WMAC_TCR_TSFT_OFS_8822E(x, v) \ + (BIT_CLEAR_WMAC_TCR_TSFT_OFS_8822E(x) | BIT_WMAC_TCR_TSFT_OFS_8822E(v)) + +/* 2 REG_UDF_THSD_8822E */ +#define BIT_UDF_THSD_V1_8822E BIT(7) + +#define BIT_SHIFT_UDF_THSD_VALUE_8822E 0 +#define BIT_MASK_UDF_THSD_VALUE_8822E 0x7f +#define BIT_UDF_THSD_VALUE_8822E(x) \ + (((x) & BIT_MASK_UDF_THSD_VALUE_8822E) \ + << BIT_SHIFT_UDF_THSD_VALUE_8822E) +#define BITS_UDF_THSD_VALUE_8822E \ + (BIT_MASK_UDF_THSD_VALUE_8822E << BIT_SHIFT_UDF_THSD_VALUE_8822E) +#define BIT_CLEAR_UDF_THSD_VALUE_8822E(x) ((x) & (~BITS_UDF_THSD_VALUE_8822E)) +#define BIT_GET_UDF_THSD_VALUE_8822E(x) \ + (((x) >> BIT_SHIFT_UDF_THSD_VALUE_8822E) & \ + BIT_MASK_UDF_THSD_VALUE_8822E) +#define BIT_SET_UDF_THSD_VALUE_8822E(x, v) \ + (BIT_CLEAR_UDF_THSD_VALUE_8822E(x) | BIT_UDF_THSD_VALUE_8822E(v)) + +/* 2 REG_ZLD_NUM_8822E */ + +#define BIT_SHIFT_ZLD_NUM_8822E 0 +#define BIT_MASK_ZLD_NUM_8822E 0xff +#define BIT_ZLD_NUM_8822E(x) \ + (((x) & BIT_MASK_ZLD_NUM_8822E) << BIT_SHIFT_ZLD_NUM_8822E) +#define BITS_ZLD_NUM_8822E (BIT_MASK_ZLD_NUM_8822E << BIT_SHIFT_ZLD_NUM_8822E) +#define BIT_CLEAR_ZLD_NUM_8822E(x) ((x) & (~BITS_ZLD_NUM_8822E)) +#define BIT_GET_ZLD_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_ZLD_NUM_8822E) & BIT_MASK_ZLD_NUM_8822E) +#define BIT_SET_ZLD_NUM_8822E(x, v) \ + (BIT_CLEAR_ZLD_NUM_8822E(x) | BIT_ZLD_NUM_8822E(v)) + +/* 2 REG_STMP_THSD_8822E */ + +#define BIT_SHIFT_STMP_THSD_8822E 0 +#define BIT_MASK_STMP_THSD_8822E 0xff +#define BIT_STMP_THSD_8822E(x) \ + (((x) & BIT_MASK_STMP_THSD_8822E) << BIT_SHIFT_STMP_THSD_8822E) +#define BITS_STMP_THSD_8822E \ + (BIT_MASK_STMP_THSD_8822E << BIT_SHIFT_STMP_THSD_8822E) +#define BIT_CLEAR_STMP_THSD_8822E(x) ((x) & (~BITS_STMP_THSD_8822E)) +#define BIT_GET_STMP_THSD_8822E(x) \ + (((x) >> BIT_SHIFT_STMP_THSD_8822E) & BIT_MASK_STMP_THSD_8822E) +#define BIT_SET_STMP_THSD_8822E(x, v) \ + (BIT_CLEAR_STMP_THSD_8822E(x) | BIT_STMP_THSD_8822E(v)) + +/* 2 REG_WMAC_TXTIMEOUT_8822E */ + +#define BIT_SHIFT_WMAC_TXTIMEOUT_8822E 0 +#define BIT_MASK_WMAC_TXTIMEOUT_8822E 0xff +#define BIT_WMAC_TXTIMEOUT_8822E(x) \ + (((x) & BIT_MASK_WMAC_TXTIMEOUT_8822E) \ + << BIT_SHIFT_WMAC_TXTIMEOUT_8822E) +#define BITS_WMAC_TXTIMEOUT_8822E \ + (BIT_MASK_WMAC_TXTIMEOUT_8822E << BIT_SHIFT_WMAC_TXTIMEOUT_8822E) +#define BIT_CLEAR_WMAC_TXTIMEOUT_8822E(x) ((x) & (~BITS_WMAC_TXTIMEOUT_8822E)) +#define BIT_GET_WMAC_TXTIMEOUT_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_TXTIMEOUT_8822E) & \ + BIT_MASK_WMAC_TXTIMEOUT_8822E) +#define BIT_SET_WMAC_TXTIMEOUT_8822E(x, v) \ + (BIT_CLEAR_WMAC_TXTIMEOUT_8822E(x) | BIT_WMAC_TXTIMEOUT_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_USTIME_EDCA_8822E (US TIME TUNING FOR EDCA REGISTER) */ + +#define BIT_SHIFT_USTIME_EDCA_8822E 0 +#define BIT_MASK_USTIME_EDCA_8822E 0xff +#define BIT_USTIME_EDCA_8822E(x) \ + (((x) & BIT_MASK_USTIME_EDCA_8822E) << BIT_SHIFT_USTIME_EDCA_8822E) +#define BITS_USTIME_EDCA_8822E \ + (BIT_MASK_USTIME_EDCA_8822E << BIT_SHIFT_USTIME_EDCA_8822E) +#define BIT_CLEAR_USTIME_EDCA_8822E(x) ((x) & (~BITS_USTIME_EDCA_8822E)) +#define BIT_GET_USTIME_EDCA_8822E(x) \ + (((x) >> BIT_SHIFT_USTIME_EDCA_8822E) & BIT_MASK_USTIME_EDCA_8822E) +#define BIT_SET_USTIME_EDCA_8822E(x, v) \ + (BIT_CLEAR_USTIME_EDCA_8822E(x) | BIT_USTIME_EDCA_8822E(v)) + +/* 2 REG_ACKTO_CCK_8822E (ACK TIMEOUT REGISTER FOR CCK RATE) */ + +#define BIT_SHIFT_ACKTO_CCK_8822E 0 +#define BIT_MASK_ACKTO_CCK_8822E 0xff +#define BIT_ACKTO_CCK_8822E(x) \ + (((x) & BIT_MASK_ACKTO_CCK_8822E) << BIT_SHIFT_ACKTO_CCK_8822E) +#define BITS_ACKTO_CCK_8822E \ + (BIT_MASK_ACKTO_CCK_8822E << BIT_SHIFT_ACKTO_CCK_8822E) +#define BIT_CLEAR_ACKTO_CCK_8822E(x) ((x) & (~BITS_ACKTO_CCK_8822E)) +#define BIT_GET_ACKTO_CCK_8822E(x) \ + (((x) >> BIT_SHIFT_ACKTO_CCK_8822E) & BIT_MASK_ACKTO_CCK_8822E) +#define BIT_SET_ACKTO_CCK_8822E(x, v) \ + (BIT_CLEAR_ACKTO_CCK_8822E(x) | BIT_ACKTO_CCK_8822E(v)) + +/* 2 REG_MAC_SPEC_SIFS_8822E (SPECIFICATION SIFS REGISTER) */ + +#define BIT_SHIFT_SPEC_SIFS_OFDM_8822E 8 +#define BIT_MASK_SPEC_SIFS_OFDM_8822E 0xff +#define BIT_SPEC_SIFS_OFDM_8822E(x) \ + (((x) & BIT_MASK_SPEC_SIFS_OFDM_8822E) \ + << BIT_SHIFT_SPEC_SIFS_OFDM_8822E) +#define BITS_SPEC_SIFS_OFDM_8822E \ + (BIT_MASK_SPEC_SIFS_OFDM_8822E << BIT_SHIFT_SPEC_SIFS_OFDM_8822E) +#define BIT_CLEAR_SPEC_SIFS_OFDM_8822E(x) ((x) & (~BITS_SPEC_SIFS_OFDM_8822E)) +#define BIT_GET_SPEC_SIFS_OFDM_8822E(x) \ + (((x) >> BIT_SHIFT_SPEC_SIFS_OFDM_8822E) & \ + BIT_MASK_SPEC_SIFS_OFDM_8822E) +#define BIT_SET_SPEC_SIFS_OFDM_8822E(x, v) \ + (BIT_CLEAR_SPEC_SIFS_OFDM_8822E(x) | BIT_SPEC_SIFS_OFDM_8822E(v)) + +#define BIT_SHIFT_SPEC_SIFS_CCK_8822E 0 +#define BIT_MASK_SPEC_SIFS_CCK_8822E 0xff +#define BIT_SPEC_SIFS_CCK_8822E(x) \ + (((x) & BIT_MASK_SPEC_SIFS_CCK_8822E) << BIT_SHIFT_SPEC_SIFS_CCK_8822E) +#define BITS_SPEC_SIFS_CCK_8822E \ + (BIT_MASK_SPEC_SIFS_CCK_8822E << BIT_SHIFT_SPEC_SIFS_CCK_8822E) +#define BIT_CLEAR_SPEC_SIFS_CCK_8822E(x) ((x) & (~BITS_SPEC_SIFS_CCK_8822E)) +#define BIT_GET_SPEC_SIFS_CCK_8822E(x) \ + (((x) >> BIT_SHIFT_SPEC_SIFS_CCK_8822E) & BIT_MASK_SPEC_SIFS_CCK_8822E) +#define BIT_SET_SPEC_SIFS_CCK_8822E(x, v) \ + (BIT_CLEAR_SPEC_SIFS_CCK_8822E(x) | BIT_SPEC_SIFS_CCK_8822E(v)) + +/* 2 REG_RESP_SIFS_CCK_8822E (RESPONSE SIFS FOR CCK REGISTER) */ + +#define BIT_SHIFT_SIFS_R2T_CCK_8822E 8 +#define BIT_MASK_SIFS_R2T_CCK_8822E 0xff +#define BIT_SIFS_R2T_CCK_8822E(x) \ + (((x) & BIT_MASK_SIFS_R2T_CCK_8822E) << BIT_SHIFT_SIFS_R2T_CCK_8822E) +#define BITS_SIFS_R2T_CCK_8822E \ + (BIT_MASK_SIFS_R2T_CCK_8822E << BIT_SHIFT_SIFS_R2T_CCK_8822E) +#define BIT_CLEAR_SIFS_R2T_CCK_8822E(x) ((x) & (~BITS_SIFS_R2T_CCK_8822E)) +#define BIT_GET_SIFS_R2T_CCK_8822E(x) \ + (((x) >> BIT_SHIFT_SIFS_R2T_CCK_8822E) & BIT_MASK_SIFS_R2T_CCK_8822E) +#define BIT_SET_SIFS_R2T_CCK_8822E(x, v) \ + (BIT_CLEAR_SIFS_R2T_CCK_8822E(x) | BIT_SIFS_R2T_CCK_8822E(v)) + +#define BIT_SHIFT_SIFS_T2T_CCK_8822E 0 +#define BIT_MASK_SIFS_T2T_CCK_8822E 0xff +#define BIT_SIFS_T2T_CCK_8822E(x) \ + (((x) & BIT_MASK_SIFS_T2T_CCK_8822E) << BIT_SHIFT_SIFS_T2T_CCK_8822E) +#define BITS_SIFS_T2T_CCK_8822E \ + (BIT_MASK_SIFS_T2T_CCK_8822E << BIT_SHIFT_SIFS_T2T_CCK_8822E) +#define BIT_CLEAR_SIFS_T2T_CCK_8822E(x) ((x) & (~BITS_SIFS_T2T_CCK_8822E)) +#define BIT_GET_SIFS_T2T_CCK_8822E(x) \ + (((x) >> BIT_SHIFT_SIFS_T2T_CCK_8822E) & BIT_MASK_SIFS_T2T_CCK_8822E) +#define BIT_SET_SIFS_T2T_CCK_8822E(x, v) \ + (BIT_CLEAR_SIFS_T2T_CCK_8822E(x) | BIT_SIFS_T2T_CCK_8822E(v)) + +/* 2 REG_RESP_SIFS_OFDM_8822E (RESPONSE SIFS FOR OFDM REGISTER) */ + +#define BIT_SHIFT_SIFS_R2T_OFDM_8822E 8 +#define BIT_MASK_SIFS_R2T_OFDM_8822E 0xff +#define BIT_SIFS_R2T_OFDM_8822E(x) \ + (((x) & BIT_MASK_SIFS_R2T_OFDM_8822E) << BIT_SHIFT_SIFS_R2T_OFDM_8822E) +#define BITS_SIFS_R2T_OFDM_8822E \ + (BIT_MASK_SIFS_R2T_OFDM_8822E << BIT_SHIFT_SIFS_R2T_OFDM_8822E) +#define BIT_CLEAR_SIFS_R2T_OFDM_8822E(x) ((x) & (~BITS_SIFS_R2T_OFDM_8822E)) +#define BIT_GET_SIFS_R2T_OFDM_8822E(x) \ + (((x) >> BIT_SHIFT_SIFS_R2T_OFDM_8822E) & BIT_MASK_SIFS_R2T_OFDM_8822E) +#define BIT_SET_SIFS_R2T_OFDM_8822E(x, v) \ + (BIT_CLEAR_SIFS_R2T_OFDM_8822E(x) | BIT_SIFS_R2T_OFDM_8822E(v)) + +#define BIT_SHIFT_SIFS_T2T_OFDM_8822E 0 +#define BIT_MASK_SIFS_T2T_OFDM_8822E 0xff +#define BIT_SIFS_T2T_OFDM_8822E(x) \ + (((x) & BIT_MASK_SIFS_T2T_OFDM_8822E) << BIT_SHIFT_SIFS_T2T_OFDM_8822E) +#define BITS_SIFS_T2T_OFDM_8822E \ + (BIT_MASK_SIFS_T2T_OFDM_8822E << BIT_SHIFT_SIFS_T2T_OFDM_8822E) +#define BIT_CLEAR_SIFS_T2T_OFDM_8822E(x) ((x) & (~BITS_SIFS_T2T_OFDM_8822E)) +#define BIT_GET_SIFS_T2T_OFDM_8822E(x) \ + (((x) >> BIT_SHIFT_SIFS_T2T_OFDM_8822E) & BIT_MASK_SIFS_T2T_OFDM_8822E) +#define BIT_SET_SIFS_T2T_OFDM_8822E(x, v) \ + (BIT_CLEAR_SIFS_T2T_OFDM_8822E(x) | BIT_SIFS_T2T_OFDM_8822E(v)) + +/* 2 REG_ACKTO_8822E (ACK TIMEOUT REGISTER) */ + +#define BIT_SHIFT_ACKTO_8822E 0 +#define BIT_MASK_ACKTO_8822E 0xff +#define BIT_ACKTO_8822E(x) \ + (((x) & BIT_MASK_ACKTO_8822E) << BIT_SHIFT_ACKTO_8822E) +#define BITS_ACKTO_8822E (BIT_MASK_ACKTO_8822E << BIT_SHIFT_ACKTO_8822E) +#define BIT_CLEAR_ACKTO_8822E(x) ((x) & (~BITS_ACKTO_8822E)) +#define BIT_GET_ACKTO_8822E(x) \ + (((x) >> BIT_SHIFT_ACKTO_8822E) & BIT_MASK_ACKTO_8822E) +#define BIT_SET_ACKTO_8822E(x, v) \ + (BIT_CLEAR_ACKTO_8822E(x) | BIT_ACKTO_8822E(v)) + +/* 2 REG_CTS2TO_8822E (CTS2 TIMEOUT REGISTER) */ + +#define BIT_SHIFT_CTS2TO_8822E 0 +#define BIT_MASK_CTS2TO_8822E 0xff +#define BIT_CTS2TO_8822E(x) \ + (((x) & BIT_MASK_CTS2TO_8822E) << BIT_SHIFT_CTS2TO_8822E) +#define BITS_CTS2TO_8822E (BIT_MASK_CTS2TO_8822E << BIT_SHIFT_CTS2TO_8822E) +#define BIT_CLEAR_CTS2TO_8822E(x) ((x) & (~BITS_CTS2TO_8822E)) +#define BIT_GET_CTS2TO_8822E(x) \ + (((x) >> BIT_SHIFT_CTS2TO_8822E) & BIT_MASK_CTS2TO_8822E) +#define BIT_SET_CTS2TO_8822E(x, v) \ + (BIT_CLEAR_CTS2TO_8822E(x) | BIT_CTS2TO_8822E(v)) + +/* 2 REG_EIFS_8822E (EIFS REGISTER) */ + +#define BIT_SHIFT_EIFS_8822E 0 +#define BIT_MASK_EIFS_8822E 0xffff +#define BIT_EIFS_8822E(x) (((x) & BIT_MASK_EIFS_8822E) << BIT_SHIFT_EIFS_8822E) +#define BITS_EIFS_8822E (BIT_MASK_EIFS_8822E << BIT_SHIFT_EIFS_8822E) +#define BIT_CLEAR_EIFS_8822E(x) ((x) & (~BITS_EIFS_8822E)) +#define BIT_GET_EIFS_8822E(x) \ + (((x) >> BIT_SHIFT_EIFS_8822E) & BIT_MASK_EIFS_8822E) +#define BIT_SET_EIFS_8822E(x, v) (BIT_CLEAR_EIFS_8822E(x) | BIT_EIFS_8822E(v)) + +/* 2 REG_RPFM_MAP0_8822E (RX PAYLOAD FILTER MAP FRAME TYPE CONTROL REGISTER GROUP 0) */ +#define BIT_MGT_RPFM15EN_8822E BIT(15) +#define BIT_MGT_RPFM14EN_8822E BIT(14) +#define BIT_MGT_RPFM13EN_8822E BIT(13) +#define BIT_MGT_RPFM12EN_8822E BIT(12) +#define BIT_MGT_RPFM11EN_8822E BIT(11) +#define BIT_MGT_RPFM10EN_8822E BIT(10) +#define BIT_MGT_RPFM9EN_8822E BIT(9) +#define BIT_MGT_RPFM8EN_8822E BIT(8) +#define BIT_MGT_RPFM7EN_8822E BIT(7) +#define BIT_MGT_RPFM6EN_8822E BIT(6) +#define BIT_MGT_RPFM5EN_8822E BIT(5) +#define BIT_MGT_RPFM4EN_8822E BIT(4) +#define BIT_MGT_RPFM3EN_8822E BIT(3) +#define BIT_MGT_RPFM2EN_8822E BIT(2) +#define BIT_MGT_RPFM1EN_8822E BIT(1) +#define BIT_MGT_RPFM0EN_8822E BIT(0) + +/* 2 REG_RPFM_MAP1_V1_8822E (RX PAYLOAD FILTER MAP FRAME TYPE CONTROL REGISTER GROUP 1) */ +#define BIT_DATA_RPFM15EN_8822E BIT(15) +#define BIT_DATA_RPFM14EN_8822E BIT(14) +#define BIT_DATA_RPFM13EN_8822E BIT(13) +#define BIT_DATA_RPFM12EN_8822E BIT(12) +#define BIT_DATA_RPFM11EN_8822E BIT(11) +#define BIT_DATA_RPFM10EN_8822E BIT(10) +#define BIT_DATA_RPFM9EN_8822E BIT(9) +#define BIT_DATA_RPFM8EN_8822E BIT(8) +#define BIT_DATA_RPFM7EN_8822E BIT(7) +#define BIT_DATA_RPFM6EN_8822E BIT(6) +#define BIT_DATA_RPFM5EN_8822E BIT(5) +#define BIT_DATA_RPFM4EN_8822E BIT(4) +#define BIT_DATA_RPFM3EN_8822E BIT(3) +#define BIT_DATA_RPFM2EN_8822E BIT(2) +#define BIT_DATA_RPFM1EN_8822E BIT(1) +#define BIT_DATA_RPFM0EN_8822E BIT(0) + +/* 2 REG_RPFM_CAM_CMD_8822E (RX PAYLOAD FRAME MASK CAM COMMAND REGISTER) */ +#define BIT_RPFM_CAM_POLLING_8822E BIT(31) +#define BIT_RPFM_CAM_CLR_8822E BIT(30) +#define BIT_RPFM_CAM_WE_8822E BIT(16) + +#define BIT_SHIFT_RPFM_CAM_ADDR_8822E 0 +#define BIT_MASK_RPFM_CAM_ADDR_8822E 0x7f +#define BIT_RPFM_CAM_ADDR_8822E(x) \ + (((x) & BIT_MASK_RPFM_CAM_ADDR_8822E) << BIT_SHIFT_RPFM_CAM_ADDR_8822E) +#define BITS_RPFM_CAM_ADDR_8822E \ + (BIT_MASK_RPFM_CAM_ADDR_8822E << BIT_SHIFT_RPFM_CAM_ADDR_8822E) +#define BIT_CLEAR_RPFM_CAM_ADDR_8822E(x) ((x) & (~BITS_RPFM_CAM_ADDR_8822E)) +#define BIT_GET_RPFM_CAM_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_RPFM_CAM_ADDR_8822E) & BIT_MASK_RPFM_CAM_ADDR_8822E) +#define BIT_SET_RPFM_CAM_ADDR_8822E(x, v) \ + (BIT_CLEAR_RPFM_CAM_ADDR_8822E(x) | BIT_RPFM_CAM_ADDR_8822E(v)) + +/* 2 REG_RPFM_CAM_RWD_8822E (ACK TIMEOUT REGISTER) */ + +#define BIT_SHIFT_RPFM_CAM_RWD_8822E 0 +#define BIT_MASK_RPFM_CAM_RWD_8822E 0xffffffffL +#define BIT_RPFM_CAM_RWD_8822E(x) \ + (((x) & BIT_MASK_RPFM_CAM_RWD_8822E) << BIT_SHIFT_RPFM_CAM_RWD_8822E) +#define BITS_RPFM_CAM_RWD_8822E \ + (BIT_MASK_RPFM_CAM_RWD_8822E << BIT_SHIFT_RPFM_CAM_RWD_8822E) +#define BIT_CLEAR_RPFM_CAM_RWD_8822E(x) ((x) & (~BITS_RPFM_CAM_RWD_8822E)) +#define BIT_GET_RPFM_CAM_RWD_8822E(x) \ + (((x) >> BIT_SHIFT_RPFM_CAM_RWD_8822E) & BIT_MASK_RPFM_CAM_RWD_8822E) +#define BIT_SET_RPFM_CAM_RWD_8822E(x, v) \ + (BIT_CLEAR_RPFM_CAM_RWD_8822E(x) | BIT_RPFM_CAM_RWD_8822E(v)) + +/* 2 REG_NAV_CTRL_8822E (NAV CONTROL REGISTER) */ + +#define BIT_SHIFT_NAV_UPPER_8822E 16 +#define BIT_MASK_NAV_UPPER_8822E 0xff +#define BIT_NAV_UPPER_8822E(x) \ + (((x) & BIT_MASK_NAV_UPPER_8822E) << BIT_SHIFT_NAV_UPPER_8822E) +#define BITS_NAV_UPPER_8822E \ + (BIT_MASK_NAV_UPPER_8822E << BIT_SHIFT_NAV_UPPER_8822E) +#define BIT_CLEAR_NAV_UPPER_8822E(x) ((x) & (~BITS_NAV_UPPER_8822E)) +#define BIT_GET_NAV_UPPER_8822E(x) \ + (((x) >> BIT_SHIFT_NAV_UPPER_8822E) & BIT_MASK_NAV_UPPER_8822E) +#define BIT_SET_NAV_UPPER_8822E(x, v) \ + (BIT_CLEAR_NAV_UPPER_8822E(x) | BIT_NAV_UPPER_8822E(v)) + +#define BIT_SHIFT_RXMYRTS_NAV_8822E 8 +#define BIT_MASK_RXMYRTS_NAV_8822E 0xf +#define BIT_RXMYRTS_NAV_8822E(x) \ + (((x) & BIT_MASK_RXMYRTS_NAV_8822E) << BIT_SHIFT_RXMYRTS_NAV_8822E) +#define BITS_RXMYRTS_NAV_8822E \ + (BIT_MASK_RXMYRTS_NAV_8822E << BIT_SHIFT_RXMYRTS_NAV_8822E) +#define BIT_CLEAR_RXMYRTS_NAV_8822E(x) ((x) & (~BITS_RXMYRTS_NAV_8822E)) +#define BIT_GET_RXMYRTS_NAV_8822E(x) \ + (((x) >> BIT_SHIFT_RXMYRTS_NAV_8822E) & BIT_MASK_RXMYRTS_NAV_8822E) +#define BIT_SET_RXMYRTS_NAV_8822E(x, v) \ + (BIT_CLEAR_RXMYRTS_NAV_8822E(x) | BIT_RXMYRTS_NAV_8822E(v)) + +#define BIT_SHIFT_RTSRST_8822E 0 +#define BIT_MASK_RTSRST_8822E 0xff +#define BIT_RTSRST_8822E(x) \ + (((x) & BIT_MASK_RTSRST_8822E) << BIT_SHIFT_RTSRST_8822E) +#define BITS_RTSRST_8822E (BIT_MASK_RTSRST_8822E << BIT_SHIFT_RTSRST_8822E) +#define BIT_CLEAR_RTSRST_8822E(x) ((x) & (~BITS_RTSRST_8822E)) +#define BIT_GET_RTSRST_8822E(x) \ + (((x) >> BIT_SHIFT_RTSRST_8822E) & BIT_MASK_RTSRST_8822E) +#define BIT_SET_RTSRST_8822E(x, v) \ + (BIT_CLEAR_RTSRST_8822E(x) | BIT_RTSRST_8822E(v)) + +/* 2 REG_BACAMCMD_8822E (BLOCK ACK CAM COMMAND REGISTER) */ +#define BIT_BACAM_POLL_8822E BIT(31) +#define BIT_BACAM_RST_8822E BIT(17) +#define BIT_BACAM_RW_8822E BIT(16) + +#define BIT_SHIFT_TXSBM_8822E 14 +#define BIT_MASK_TXSBM_8822E 0x3 +#define BIT_TXSBM_8822E(x) \ + (((x) & BIT_MASK_TXSBM_8822E) << BIT_SHIFT_TXSBM_8822E) +#define BITS_TXSBM_8822E (BIT_MASK_TXSBM_8822E << BIT_SHIFT_TXSBM_8822E) +#define BIT_CLEAR_TXSBM_8822E(x) ((x) & (~BITS_TXSBM_8822E)) +#define BIT_GET_TXSBM_8822E(x) \ + (((x) >> BIT_SHIFT_TXSBM_8822E) & BIT_MASK_TXSBM_8822E) +#define BIT_SET_TXSBM_8822E(x, v) \ + (BIT_CLEAR_TXSBM_8822E(x) | BIT_TXSBM_8822E(v)) + +#define BIT_SHIFT_BACAM_ADDR_8822E 0 +#define BIT_MASK_BACAM_ADDR_8822E 0x3f +#define BIT_BACAM_ADDR_8822E(x) \ + (((x) & BIT_MASK_BACAM_ADDR_8822E) << BIT_SHIFT_BACAM_ADDR_8822E) +#define BITS_BACAM_ADDR_8822E \ + (BIT_MASK_BACAM_ADDR_8822E << BIT_SHIFT_BACAM_ADDR_8822E) +#define BIT_CLEAR_BACAM_ADDR_8822E(x) ((x) & (~BITS_BACAM_ADDR_8822E)) +#define BIT_GET_BACAM_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_BACAM_ADDR_8822E) & BIT_MASK_BACAM_ADDR_8822E) +#define BIT_SET_BACAM_ADDR_8822E(x, v) \ + (BIT_CLEAR_BACAM_ADDR_8822E(x) | BIT_BACAM_ADDR_8822E(v)) + +/* 2 REG_BACAMCONTENT_8822E (BLOCK ACK CAM CONTENT REGISTER) */ + +#define BIT_SHIFT_BA_CONTENT_L_8822E 0 +#define BIT_MASK_BA_CONTENT_L_8822E 0xffffffffL +#define BIT_BA_CONTENT_L_8822E(x) \ + (((x) & BIT_MASK_BA_CONTENT_L_8822E) << BIT_SHIFT_BA_CONTENT_L_8822E) +#define BITS_BA_CONTENT_L_8822E \ + (BIT_MASK_BA_CONTENT_L_8822E << BIT_SHIFT_BA_CONTENT_L_8822E) +#define BIT_CLEAR_BA_CONTENT_L_8822E(x) ((x) & (~BITS_BA_CONTENT_L_8822E)) +#define BIT_GET_BA_CONTENT_L_8822E(x) \ + (((x) >> BIT_SHIFT_BA_CONTENT_L_8822E) & BIT_MASK_BA_CONTENT_L_8822E) +#define BIT_SET_BA_CONTENT_L_8822E(x, v) \ + (BIT_CLEAR_BA_CONTENT_L_8822E(x) | BIT_BA_CONTENT_L_8822E(v)) + +/* 2 REG_BACAMCONTENT_H_8822E (BLOCK ACK CAM CONTENT REGISTER) */ + +#define BIT_SHIFT_BA_CONTENT_H_8822E 0 +#define BIT_MASK_BA_CONTENT_H_8822E 0xffffffffL +#define BIT_BA_CONTENT_H_8822E(x) \ + (((x) & BIT_MASK_BA_CONTENT_H_8822E) << BIT_SHIFT_BA_CONTENT_H_8822E) +#define BITS_BA_CONTENT_H_8822E \ + (BIT_MASK_BA_CONTENT_H_8822E << BIT_SHIFT_BA_CONTENT_H_8822E) +#define BIT_CLEAR_BA_CONTENT_H_8822E(x) ((x) & (~BITS_BA_CONTENT_H_8822E)) +#define BIT_GET_BA_CONTENT_H_8822E(x) \ + (((x) >> BIT_SHIFT_BA_CONTENT_H_8822E) & BIT_MASK_BA_CONTENT_H_8822E) +#define BIT_SET_BA_CONTENT_H_8822E(x, v) \ + (BIT_CLEAR_BA_CONTENT_H_8822E(x) | BIT_BA_CONTENT_H_8822E(v)) + +/* 2 REG_LBDLY_8822E (LOOPBACK DELAY REGISTER) */ + +#define BIT_SHIFT_LBDLY_8822E 0 +#define BIT_MASK_LBDLY_8822E 0x1f +#define BIT_LBDLY_8822E(x) \ + (((x) & BIT_MASK_LBDLY_8822E) << BIT_SHIFT_LBDLY_8822E) +#define BITS_LBDLY_8822E (BIT_MASK_LBDLY_8822E << BIT_SHIFT_LBDLY_8822E) +#define BIT_CLEAR_LBDLY_8822E(x) ((x) & (~BITS_LBDLY_8822E)) +#define BIT_GET_LBDLY_8822E(x) \ + (((x) >> BIT_SHIFT_LBDLY_8822E) & BIT_MASK_LBDLY_8822E) +#define BIT_SET_LBDLY_8822E(x, v) \ + (BIT_CLEAR_LBDLY_8822E(x) | BIT_LBDLY_8822E(v)) + +/* 2 REG_WMAC_BACAM_RPMEN_8822E */ + +#define BIT_SHIFT_BITMAP_SSNBK_COUNTER_8822E 2 +#define BIT_MASK_BITMAP_SSNBK_COUNTER_8822E 0x3f +#define BIT_BITMAP_SSNBK_COUNTER_8822E(x) \ + (((x) & BIT_MASK_BITMAP_SSNBK_COUNTER_8822E) \ + << BIT_SHIFT_BITMAP_SSNBK_COUNTER_8822E) +#define BITS_BITMAP_SSNBK_COUNTER_8822E \ + (BIT_MASK_BITMAP_SSNBK_COUNTER_8822E \ + << BIT_SHIFT_BITMAP_SSNBK_COUNTER_8822E) +#define BIT_CLEAR_BITMAP_SSNBK_COUNTER_8822E(x) \ + ((x) & (~BITS_BITMAP_SSNBK_COUNTER_8822E)) +#define BIT_GET_BITMAP_SSNBK_COUNTER_8822E(x) \ + (((x) >> BIT_SHIFT_BITMAP_SSNBK_COUNTER_8822E) & \ + BIT_MASK_BITMAP_SSNBK_COUNTER_8822E) +#define BIT_SET_BITMAP_SSNBK_COUNTER_8822E(x, v) \ + (BIT_CLEAR_BITMAP_SSNBK_COUNTER_8822E(x) | \ + BIT_BITMAP_SSNBK_COUNTER_8822E(v)) + +#define BIT_BITMAP_EN_8822E BIT(1) +#define BIT_WMAC_BACAM_RPMEN_8822E BIT(0) + +/* 2 REG_TX_RX_8822E STATUS */ + +#define BIT_SHIFT_RXPKT_TYPE_8822E 2 +#define BIT_MASK_RXPKT_TYPE_8822E 0x3f +#define BIT_RXPKT_TYPE_8822E(x) \ + (((x) & BIT_MASK_RXPKT_TYPE_8822E) << BIT_SHIFT_RXPKT_TYPE_8822E) +#define BITS_RXPKT_TYPE_8822E \ + (BIT_MASK_RXPKT_TYPE_8822E << BIT_SHIFT_RXPKT_TYPE_8822E) +#define BIT_CLEAR_RXPKT_TYPE_8822E(x) ((x) & (~BITS_RXPKT_TYPE_8822E)) +#define BIT_GET_RXPKT_TYPE_8822E(x) \ + (((x) >> BIT_SHIFT_RXPKT_TYPE_8822E) & BIT_MASK_RXPKT_TYPE_8822E) +#define BIT_SET_RXPKT_TYPE_8822E(x, v) \ + (BIT_CLEAR_RXPKT_TYPE_8822E(x) | BIT_RXPKT_TYPE_8822E(v)) + +#define BIT_TXACT_IND_8822E BIT(1) +#define BIT_RXACT_IND_8822E BIT(0) + +/* 2 REG_WMAC_BITMAP_CTL_8822E */ +#define BIT_BITMAP_VO_8822E BIT(7) +#define BIT_BITMAP_VI_8822E BIT(6) +#define BIT_BITMAP_BE_8822E BIT(5) +#define BIT_BITMAP_BK_8822E BIT(4) + +#define BIT_SHIFT_BITMAP_CONDITION_8822E 2 +#define BIT_MASK_BITMAP_CONDITION_8822E 0x3 +#define BIT_BITMAP_CONDITION_8822E(x) \ + (((x) & BIT_MASK_BITMAP_CONDITION_8822E) \ + << BIT_SHIFT_BITMAP_CONDITION_8822E) +#define BITS_BITMAP_CONDITION_8822E \ + (BIT_MASK_BITMAP_CONDITION_8822E << BIT_SHIFT_BITMAP_CONDITION_8822E) +#define BIT_CLEAR_BITMAP_CONDITION_8822E(x) \ + ((x) & (~BITS_BITMAP_CONDITION_8822E)) +#define BIT_GET_BITMAP_CONDITION_8822E(x) \ + (((x) >> BIT_SHIFT_BITMAP_CONDITION_8822E) & \ + BIT_MASK_BITMAP_CONDITION_8822E) +#define BIT_SET_BITMAP_CONDITION_8822E(x, v) \ + (BIT_CLEAR_BITMAP_CONDITION_8822E(x) | BIT_BITMAP_CONDITION_8822E(v)) + +#define BIT_BITMAP_SSNBK_COUNTER_CLR_8822E BIT(1) +#define BIT_BITMAP_FORCE_8822E BIT(0) + +/* 2 REG_RXERR_RPT_8822E (RX ERROR REPORT REGISTER) */ + +#define BIT_SHIFT_RXERR_RPT_SEL_V1_3_0_8822E 28 +#define BIT_MASK_RXERR_RPT_SEL_V1_3_0_8822E 0xf +#define BIT_RXERR_RPT_SEL_V1_3_0_8822E(x) \ + (((x) & BIT_MASK_RXERR_RPT_SEL_V1_3_0_8822E) \ + << BIT_SHIFT_RXERR_RPT_SEL_V1_3_0_8822E) +#define BITS_RXERR_RPT_SEL_V1_3_0_8822E \ + (BIT_MASK_RXERR_RPT_SEL_V1_3_0_8822E \ + << BIT_SHIFT_RXERR_RPT_SEL_V1_3_0_8822E) +#define BIT_CLEAR_RXERR_RPT_SEL_V1_3_0_8822E(x) \ + ((x) & (~BITS_RXERR_RPT_SEL_V1_3_0_8822E)) +#define BIT_GET_RXERR_RPT_SEL_V1_3_0_8822E(x) \ + (((x) >> BIT_SHIFT_RXERR_RPT_SEL_V1_3_0_8822E) & \ + BIT_MASK_RXERR_RPT_SEL_V1_3_0_8822E) +#define BIT_SET_RXERR_RPT_SEL_V1_3_0_8822E(x, v) \ + (BIT_CLEAR_RXERR_RPT_SEL_V1_3_0_8822E(x) | \ + BIT_RXERR_RPT_SEL_V1_3_0_8822E(v)) + +#define BIT_RXERR_RPT_RST_8822E BIT(27) +#define BIT_RXERR_RPT_SEL_V1_4_8822E BIT(26) + +#define BIT_SHIFT_UD_SELECT_BSSID_2_1_8822E 24 +#define BIT_MASK_UD_SELECT_BSSID_2_1_8822E 0x3 +#define BIT_UD_SELECT_BSSID_2_1_8822E(x) \ + (((x) & BIT_MASK_UD_SELECT_BSSID_2_1_8822E) \ + << BIT_SHIFT_UD_SELECT_BSSID_2_1_8822E) +#define BITS_UD_SELECT_BSSID_2_1_8822E \ + (BIT_MASK_UD_SELECT_BSSID_2_1_8822E \ + << BIT_SHIFT_UD_SELECT_BSSID_2_1_8822E) +#define BIT_CLEAR_UD_SELECT_BSSID_2_1_8822E(x) \ + ((x) & (~BITS_UD_SELECT_BSSID_2_1_8822E)) +#define BIT_GET_UD_SELECT_BSSID_2_1_8822E(x) \ + (((x) >> BIT_SHIFT_UD_SELECT_BSSID_2_1_8822E) & \ + BIT_MASK_UD_SELECT_BSSID_2_1_8822E) +#define BIT_SET_UD_SELECT_BSSID_2_1_8822E(x, v) \ + (BIT_CLEAR_UD_SELECT_BSSID_2_1_8822E(x) | \ + BIT_UD_SELECT_BSSID_2_1_8822E(v)) + +#define BIT_W1S_8822E BIT(23) +#define BIT_UD_SELECT_BSSID_0_8822E BIT(22) + +#define BIT_SHIFT_UD_SUB_TYPE_8822E 18 +#define BIT_MASK_UD_SUB_TYPE_8822E 0xf +#define BIT_UD_SUB_TYPE_8822E(x) \ + (((x) & BIT_MASK_UD_SUB_TYPE_8822E) << BIT_SHIFT_UD_SUB_TYPE_8822E) +#define BITS_UD_SUB_TYPE_8822E \ + (BIT_MASK_UD_SUB_TYPE_8822E << BIT_SHIFT_UD_SUB_TYPE_8822E) +#define BIT_CLEAR_UD_SUB_TYPE_8822E(x) ((x) & (~BITS_UD_SUB_TYPE_8822E)) +#define BIT_GET_UD_SUB_TYPE_8822E(x) \ + (((x) >> BIT_SHIFT_UD_SUB_TYPE_8822E) & BIT_MASK_UD_SUB_TYPE_8822E) +#define BIT_SET_UD_SUB_TYPE_8822E(x, v) \ + (BIT_CLEAR_UD_SUB_TYPE_8822E(x) | BIT_UD_SUB_TYPE_8822E(v)) + +#define BIT_SHIFT_UD_TYPE_8822E 16 +#define BIT_MASK_UD_TYPE_8822E 0x3 +#define BIT_UD_TYPE_8822E(x) \ + (((x) & BIT_MASK_UD_TYPE_8822E) << BIT_SHIFT_UD_TYPE_8822E) +#define BITS_UD_TYPE_8822E (BIT_MASK_UD_TYPE_8822E << BIT_SHIFT_UD_TYPE_8822E) +#define BIT_CLEAR_UD_TYPE_8822E(x) ((x) & (~BITS_UD_TYPE_8822E)) +#define BIT_GET_UD_TYPE_8822E(x) \ + (((x) >> BIT_SHIFT_UD_TYPE_8822E) & BIT_MASK_UD_TYPE_8822E) +#define BIT_SET_UD_TYPE_8822E(x, v) \ + (BIT_CLEAR_UD_TYPE_8822E(x) | BIT_UD_TYPE_8822E(v)) + +#define BIT_SHIFT_RPT_COUNTER_8822E 0 +#define BIT_MASK_RPT_COUNTER_8822E 0xffff +#define BIT_RPT_COUNTER_8822E(x) \ + (((x) & BIT_MASK_RPT_COUNTER_8822E) << BIT_SHIFT_RPT_COUNTER_8822E) +#define BITS_RPT_COUNTER_8822E \ + (BIT_MASK_RPT_COUNTER_8822E << BIT_SHIFT_RPT_COUNTER_8822E) +#define BIT_CLEAR_RPT_COUNTER_8822E(x) ((x) & (~BITS_RPT_COUNTER_8822E)) +#define BIT_GET_RPT_COUNTER_8822E(x) \ + (((x) >> BIT_SHIFT_RPT_COUNTER_8822E) & BIT_MASK_RPT_COUNTER_8822E) +#define BIT_SET_RPT_COUNTER_8822E(x, v) \ + (BIT_CLEAR_RPT_COUNTER_8822E(x) | BIT_RPT_COUNTER_8822E(v)) + +/* 2 REG_WMAC_TRXPTCL_CTL_8822E (WMAC TX/RX PROTOCOL CONTROL REGISTER) */ +#define BIT_ACKTO_BLOCK_SCH_EN_8822E BIT(27) +#define BIT_EIFS_BLOCK_SCH_EN_8822E BIT(26) +#define BIT_PLCPCHK_RST_EIFS_8822E BIT(25) +#define BIT_CCA_RST_EIFS_8822E BIT(24) +#define BIT_DIS_UPD_MYRXPKTNAV_8822E BIT(23) +#define BIT_EARLY_TXBA_8822E BIT(22) + +#define BIT_SHIFT_RESP_CHNBUSY_8822E 20 +#define BIT_MASK_RESP_CHNBUSY_8822E 0x3 +#define BIT_RESP_CHNBUSY_8822E(x) \ + (((x) & BIT_MASK_RESP_CHNBUSY_8822E) << BIT_SHIFT_RESP_CHNBUSY_8822E) +#define BITS_RESP_CHNBUSY_8822E \ + (BIT_MASK_RESP_CHNBUSY_8822E << BIT_SHIFT_RESP_CHNBUSY_8822E) +#define BIT_CLEAR_RESP_CHNBUSY_8822E(x) ((x) & (~BITS_RESP_CHNBUSY_8822E)) +#define BIT_GET_RESP_CHNBUSY_8822E(x) \ + (((x) >> BIT_SHIFT_RESP_CHNBUSY_8822E) & BIT_MASK_RESP_CHNBUSY_8822E) +#define BIT_SET_RESP_CHNBUSY_8822E(x, v) \ + (BIT_CLEAR_RESP_CHNBUSY_8822E(x) | BIT_RESP_CHNBUSY_8822E(v)) + +#define BIT_RESP_DCTS_EN_8822E BIT(19) +#define BIT_RESP_DCFE_EN_8822E BIT(18) +#define BIT_RESP_SPLCPEN_8822E BIT(17) +#define BIT_RESP_SGIEN_8822E BIT(16) +#define BIT_RESP_LDPC_EN_8822E BIT(15) +#define BIT_DIS_RESP_ACKINCCA_8822E BIT(14) +#define BIT_DIS_RESP_CTSINCCA_8822E BIT(13) + +#define BIT_SHIFT_R_WMAC_SECOND_CCA_TIMER_8822E 10 +#define BIT_MASK_R_WMAC_SECOND_CCA_TIMER_8822E 0x7 +#define BIT_R_WMAC_SECOND_CCA_TIMER_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_SECOND_CCA_TIMER_8822E) \ + << BIT_SHIFT_R_WMAC_SECOND_CCA_TIMER_8822E) +#define BITS_R_WMAC_SECOND_CCA_TIMER_8822E \ + (BIT_MASK_R_WMAC_SECOND_CCA_TIMER_8822E \ + << BIT_SHIFT_R_WMAC_SECOND_CCA_TIMER_8822E) +#define BIT_CLEAR_R_WMAC_SECOND_CCA_TIMER_8822E(x) \ + ((x) & (~BITS_R_WMAC_SECOND_CCA_TIMER_8822E)) +#define BIT_GET_R_WMAC_SECOND_CCA_TIMER_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_SECOND_CCA_TIMER_8822E) & \ + BIT_MASK_R_WMAC_SECOND_CCA_TIMER_8822E) +#define BIT_SET_R_WMAC_SECOND_CCA_TIMER_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_SECOND_CCA_TIMER_8822E(x) | \ + BIT_R_WMAC_SECOND_CCA_TIMER_8822E(v)) + +#define BIT_SHIFT_RFMOD_8822E 7 +#define BIT_MASK_RFMOD_8822E 0x3 +#define BIT_RFMOD_8822E(x) \ + (((x) & BIT_MASK_RFMOD_8822E) << BIT_SHIFT_RFMOD_8822E) +#define BITS_RFMOD_8822E (BIT_MASK_RFMOD_8822E << BIT_SHIFT_RFMOD_8822E) +#define BIT_CLEAR_RFMOD_8822E(x) ((x) & (~BITS_RFMOD_8822E)) +#define BIT_GET_RFMOD_8822E(x) \ + (((x) >> BIT_SHIFT_RFMOD_8822E) & BIT_MASK_RFMOD_8822E) +#define BIT_SET_RFMOD_8822E(x, v) \ + (BIT_CLEAR_RFMOD_8822E(x) | BIT_RFMOD_8822E(v)) + +#define BIT_SHIFT_RESP_CTS_DYNBW_SEL_8822E 5 +#define BIT_MASK_RESP_CTS_DYNBW_SEL_8822E 0x3 +#define BIT_RESP_CTS_DYNBW_SEL_8822E(x) \ + (((x) & BIT_MASK_RESP_CTS_DYNBW_SEL_8822E) \ + << BIT_SHIFT_RESP_CTS_DYNBW_SEL_8822E) +#define BITS_RESP_CTS_DYNBW_SEL_8822E \ + (BIT_MASK_RESP_CTS_DYNBW_SEL_8822E \ + << BIT_SHIFT_RESP_CTS_DYNBW_SEL_8822E) +#define BIT_CLEAR_RESP_CTS_DYNBW_SEL_8822E(x) \ + ((x) & (~BITS_RESP_CTS_DYNBW_SEL_8822E)) +#define BIT_GET_RESP_CTS_DYNBW_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_RESP_CTS_DYNBW_SEL_8822E) & \ + BIT_MASK_RESP_CTS_DYNBW_SEL_8822E) +#define BIT_SET_RESP_CTS_DYNBW_SEL_8822E(x, v) \ + (BIT_CLEAR_RESP_CTS_DYNBW_SEL_8822E(x) | \ + BIT_RESP_CTS_DYNBW_SEL_8822E(v)) + +#define BIT_DLY_TX_WAIT_RXANTSEL_8822E BIT(4) +#define BIT_TXRESP_BY_RXANTSEL_8822E BIT(3) + +#define BIT_SHIFT_ORIG_DCTS_CHK_8822E 0 +#define BIT_MASK_ORIG_DCTS_CHK_8822E 0x3 +#define BIT_ORIG_DCTS_CHK_8822E(x) \ + (((x) & BIT_MASK_ORIG_DCTS_CHK_8822E) << BIT_SHIFT_ORIG_DCTS_CHK_8822E) +#define BITS_ORIG_DCTS_CHK_8822E \ + (BIT_MASK_ORIG_DCTS_CHK_8822E << BIT_SHIFT_ORIG_DCTS_CHK_8822E) +#define BIT_CLEAR_ORIG_DCTS_CHK_8822E(x) ((x) & (~BITS_ORIG_DCTS_CHK_8822E)) +#define BIT_GET_ORIG_DCTS_CHK_8822E(x) \ + (((x) >> BIT_SHIFT_ORIG_DCTS_CHK_8822E) & BIT_MASK_ORIG_DCTS_CHK_8822E) +#define BIT_SET_ORIG_DCTS_CHK_8822E(x, v) \ + (BIT_CLEAR_ORIG_DCTS_CHK_8822E(x) | BIT_ORIG_DCTS_CHK_8822E(v)) + +/* 2 REG_WMAC_TRXPTCL_CTL_H_8822E (WMAC TX/RX PROTOCOL CONTROL REGISTER) */ + +#define BIT_SHIFT_ACKBA_TYPSEL_8822E 28 +#define BIT_MASK_ACKBA_TYPSEL_8822E 0xf +#define BIT_ACKBA_TYPSEL_8822E(x) \ + (((x) & BIT_MASK_ACKBA_TYPSEL_8822E) << BIT_SHIFT_ACKBA_TYPSEL_8822E) +#define BITS_ACKBA_TYPSEL_8822E \ + (BIT_MASK_ACKBA_TYPSEL_8822E << BIT_SHIFT_ACKBA_TYPSEL_8822E) +#define BIT_CLEAR_ACKBA_TYPSEL_8822E(x) ((x) & (~BITS_ACKBA_TYPSEL_8822E)) +#define BIT_GET_ACKBA_TYPSEL_8822E(x) \ + (((x) >> BIT_SHIFT_ACKBA_TYPSEL_8822E) & BIT_MASK_ACKBA_TYPSEL_8822E) +#define BIT_SET_ACKBA_TYPSEL_8822E(x, v) \ + (BIT_CLEAR_ACKBA_TYPSEL_8822E(x) | BIT_ACKBA_TYPSEL_8822E(v)) + +#define BIT_SHIFT_ACKBA_ACKPCHK_8822E 24 +#define BIT_MASK_ACKBA_ACKPCHK_8822E 0xf +#define BIT_ACKBA_ACKPCHK_8822E(x) \ + (((x) & BIT_MASK_ACKBA_ACKPCHK_8822E) << BIT_SHIFT_ACKBA_ACKPCHK_8822E) +#define BITS_ACKBA_ACKPCHK_8822E \ + (BIT_MASK_ACKBA_ACKPCHK_8822E << BIT_SHIFT_ACKBA_ACKPCHK_8822E) +#define BIT_CLEAR_ACKBA_ACKPCHK_8822E(x) ((x) & (~BITS_ACKBA_ACKPCHK_8822E)) +#define BIT_GET_ACKBA_ACKPCHK_8822E(x) \ + (((x) >> BIT_SHIFT_ACKBA_ACKPCHK_8822E) & BIT_MASK_ACKBA_ACKPCHK_8822E) +#define BIT_SET_ACKBA_ACKPCHK_8822E(x, v) \ + (BIT_CLEAR_ACKBA_ACKPCHK_8822E(x) | BIT_ACKBA_ACKPCHK_8822E(v)) + +#define BIT_SHIFT_ACKBAR_TYPESEL_8822E 16 +#define BIT_MASK_ACKBAR_TYPESEL_8822E 0xff +#define BIT_ACKBAR_TYPESEL_8822E(x) \ + (((x) & BIT_MASK_ACKBAR_TYPESEL_8822E) \ + << BIT_SHIFT_ACKBAR_TYPESEL_8822E) +#define BITS_ACKBAR_TYPESEL_8822E \ + (BIT_MASK_ACKBAR_TYPESEL_8822E << BIT_SHIFT_ACKBAR_TYPESEL_8822E) +#define BIT_CLEAR_ACKBAR_TYPESEL_8822E(x) ((x) & (~BITS_ACKBAR_TYPESEL_8822E)) +#define BIT_GET_ACKBAR_TYPESEL_8822E(x) \ + (((x) >> BIT_SHIFT_ACKBAR_TYPESEL_8822E) & \ + BIT_MASK_ACKBAR_TYPESEL_8822E) +#define BIT_SET_ACKBAR_TYPESEL_8822E(x, v) \ + (BIT_CLEAR_ACKBAR_TYPESEL_8822E(x) | BIT_ACKBAR_TYPESEL_8822E(v)) + +#define BIT_SHIFT_ACKBAR_ACKPCHK_8822E 12 +#define BIT_MASK_ACKBAR_ACKPCHK_8822E 0xf +#define BIT_ACKBAR_ACKPCHK_8822E(x) \ + (((x) & BIT_MASK_ACKBAR_ACKPCHK_8822E) \ + << BIT_SHIFT_ACKBAR_ACKPCHK_8822E) +#define BITS_ACKBAR_ACKPCHK_8822E \ + (BIT_MASK_ACKBAR_ACKPCHK_8822E << BIT_SHIFT_ACKBAR_ACKPCHK_8822E) +#define BIT_CLEAR_ACKBAR_ACKPCHK_8822E(x) ((x) & (~BITS_ACKBAR_ACKPCHK_8822E)) +#define BIT_GET_ACKBAR_ACKPCHK_8822E(x) \ + (((x) >> BIT_SHIFT_ACKBAR_ACKPCHK_8822E) & \ + BIT_MASK_ACKBAR_ACKPCHK_8822E) +#define BIT_SET_ACKBAR_ACKPCHK_8822E(x, v) \ + (BIT_CLEAR_ACKBAR_ACKPCHK_8822E(x) | BIT_ACKBAR_ACKPCHK_8822E(v)) + +#define BIT_RXBA_IGNOREA2_V1_8822E BIT(10) +#define BIT_EN_SAVE_ALL_TXOPADDR_V1_8822E BIT(9) +#define BIT_EN_TXCTS_TO_TXOPOWNER_INRXNAV_V1_8822E BIT(8) +#define BIT_DIS_TXBA_AMPDUFCSERR_V1_8822E BIT(7) +#define BIT_DIS_TXBA_RXBARINFULL_V1_8822E BIT(6) +#define BIT_DIS_TXCFE_INFULL_V1_8822E BIT(5) +#define BIT_DIS_TXCTS_INFULL_V1_8822E BIT(4) +#define BIT_EN_TXACKBA_IN_TX_RDG_V1_8822E BIT(3) +#define BIT_EN_TXACKBA_IN_TXOP_V1_8822E BIT(2) +#define BIT_EN_TXCTS_IN_RXNAV_V1_8822E BIT(1) +#define BIT_EN_TXCTS_INTXOP_V1_8822E BIT(0) + +/* 2 REG_CAMCMD_8822E (CAM COMMAND REGISTER) */ +#define BIT_SECCAM_POLLING_8822E BIT(31) +#define BIT_SECCAM_CLR_8822E BIT(30) +#define BIT_SECCAM_WE_8822E BIT(16) + +#define BIT_SHIFT_SECCAM_ADDR_V2_8822E 0 +#define BIT_MASK_SECCAM_ADDR_V2_8822E 0x3ff +#define BIT_SECCAM_ADDR_V2_8822E(x) \ + (((x) & BIT_MASK_SECCAM_ADDR_V2_8822E) \ + << BIT_SHIFT_SECCAM_ADDR_V2_8822E) +#define BITS_SECCAM_ADDR_V2_8822E \ + (BIT_MASK_SECCAM_ADDR_V2_8822E << BIT_SHIFT_SECCAM_ADDR_V2_8822E) +#define BIT_CLEAR_SECCAM_ADDR_V2_8822E(x) ((x) & (~BITS_SECCAM_ADDR_V2_8822E)) +#define BIT_GET_SECCAM_ADDR_V2_8822E(x) \ + (((x) >> BIT_SHIFT_SECCAM_ADDR_V2_8822E) & \ + BIT_MASK_SECCAM_ADDR_V2_8822E) +#define BIT_SET_SECCAM_ADDR_V2_8822E(x, v) \ + (BIT_CLEAR_SECCAM_ADDR_V2_8822E(x) | BIT_SECCAM_ADDR_V2_8822E(v)) + +/* 2 REG_CAMWRITE_8822E (CAM WRITE REGISTER) */ + +#define BIT_SHIFT_CAMW_DATA_8822E 0 +#define BIT_MASK_CAMW_DATA_8822E 0xffffffffL +#define BIT_CAMW_DATA_8822E(x) \ + (((x) & BIT_MASK_CAMW_DATA_8822E) << BIT_SHIFT_CAMW_DATA_8822E) +#define BITS_CAMW_DATA_8822E \ + (BIT_MASK_CAMW_DATA_8822E << BIT_SHIFT_CAMW_DATA_8822E) +#define BIT_CLEAR_CAMW_DATA_8822E(x) ((x) & (~BITS_CAMW_DATA_8822E)) +#define BIT_GET_CAMW_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_CAMW_DATA_8822E) & BIT_MASK_CAMW_DATA_8822E) +#define BIT_SET_CAMW_DATA_8822E(x, v) \ + (BIT_CLEAR_CAMW_DATA_8822E(x) | BIT_CAMW_DATA_8822E(v)) + +/* 2 REG_CAMREAD_8822E (CAM READ REGISTER) */ + +#define BIT_SHIFT_CAMR_DATA_8822E 0 +#define BIT_MASK_CAMR_DATA_8822E 0xffffffffL +#define BIT_CAMR_DATA_8822E(x) \ + (((x) & BIT_MASK_CAMR_DATA_8822E) << BIT_SHIFT_CAMR_DATA_8822E) +#define BITS_CAMR_DATA_8822E \ + (BIT_MASK_CAMR_DATA_8822E << BIT_SHIFT_CAMR_DATA_8822E) +#define BIT_CLEAR_CAMR_DATA_8822E(x) ((x) & (~BITS_CAMR_DATA_8822E)) +#define BIT_GET_CAMR_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_CAMR_DATA_8822E) & BIT_MASK_CAMR_DATA_8822E) +#define BIT_SET_CAMR_DATA_8822E(x, v) \ + (BIT_CLEAR_CAMR_DATA_8822E(x) | BIT_CAMR_DATA_8822E(v)) + +/* 2 REG_CAMDBG_8822E (CAM DEBUG REGISTER) */ +#define BIT_SECCAM_INFO_8822E BIT(31) +#define BIT_SEC_KEYFOUND_8822E BIT(15) + +#define BIT_SHIFT_CAMDBG_SEC_TYPE_8822E 12 +#define BIT_MASK_CAMDBG_SEC_TYPE_8822E 0x7 +#define BIT_CAMDBG_SEC_TYPE_8822E(x) \ + (((x) & BIT_MASK_CAMDBG_SEC_TYPE_8822E) \ + << BIT_SHIFT_CAMDBG_SEC_TYPE_8822E) +#define BITS_CAMDBG_SEC_TYPE_8822E \ + (BIT_MASK_CAMDBG_SEC_TYPE_8822E << BIT_SHIFT_CAMDBG_SEC_TYPE_8822E) +#define BIT_CLEAR_CAMDBG_SEC_TYPE_8822E(x) ((x) & (~BITS_CAMDBG_SEC_TYPE_8822E)) +#define BIT_GET_CAMDBG_SEC_TYPE_8822E(x) \ + (((x) >> BIT_SHIFT_CAMDBG_SEC_TYPE_8822E) & \ + BIT_MASK_CAMDBG_SEC_TYPE_8822E) +#define BIT_SET_CAMDBG_SEC_TYPE_8822E(x, v) \ + (BIT_CLEAR_CAMDBG_SEC_TYPE_8822E(x) | BIT_CAMDBG_SEC_TYPE_8822E(v)) + +#define BIT_CAMDBG_EXT_SECTYPE_8822E BIT(11) + +#define BIT_SHIFT_CAMDBG_MIC_KEY_IDX_8822E 5 +#define BIT_MASK_CAMDBG_MIC_KEY_IDX_8822E 0x1f +#define BIT_CAMDBG_MIC_KEY_IDX_8822E(x) \ + (((x) & BIT_MASK_CAMDBG_MIC_KEY_IDX_8822E) \ + << BIT_SHIFT_CAMDBG_MIC_KEY_IDX_8822E) +#define BITS_CAMDBG_MIC_KEY_IDX_8822E \ + (BIT_MASK_CAMDBG_MIC_KEY_IDX_8822E \ + << BIT_SHIFT_CAMDBG_MIC_KEY_IDX_8822E) +#define BIT_CLEAR_CAMDBG_MIC_KEY_IDX_8822E(x) \ + ((x) & (~BITS_CAMDBG_MIC_KEY_IDX_8822E)) +#define BIT_GET_CAMDBG_MIC_KEY_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_CAMDBG_MIC_KEY_IDX_8822E) & \ + BIT_MASK_CAMDBG_MIC_KEY_IDX_8822E) +#define BIT_SET_CAMDBG_MIC_KEY_IDX_8822E(x, v) \ + (BIT_CLEAR_CAMDBG_MIC_KEY_IDX_8822E(x) | \ + BIT_CAMDBG_MIC_KEY_IDX_8822E(v)) + +#define BIT_SHIFT_CAMDBG_SEC_KEY_IDX_8822E 0 +#define BIT_MASK_CAMDBG_SEC_KEY_IDX_8822E 0x1f +#define BIT_CAMDBG_SEC_KEY_IDX_8822E(x) \ + (((x) & BIT_MASK_CAMDBG_SEC_KEY_IDX_8822E) \ + << BIT_SHIFT_CAMDBG_SEC_KEY_IDX_8822E) +#define BITS_CAMDBG_SEC_KEY_IDX_8822E \ + (BIT_MASK_CAMDBG_SEC_KEY_IDX_8822E \ + << BIT_SHIFT_CAMDBG_SEC_KEY_IDX_8822E) +#define BIT_CLEAR_CAMDBG_SEC_KEY_IDX_8822E(x) \ + ((x) & (~BITS_CAMDBG_SEC_KEY_IDX_8822E)) +#define BIT_GET_CAMDBG_SEC_KEY_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_CAMDBG_SEC_KEY_IDX_8822E) & \ + BIT_MASK_CAMDBG_SEC_KEY_IDX_8822E) +#define BIT_SET_CAMDBG_SEC_KEY_IDX_8822E(x, v) \ + (BIT_CLEAR_CAMDBG_SEC_KEY_IDX_8822E(x) | \ + BIT_CAMDBG_SEC_KEY_IDX_8822E(v)) + +/* 2 REG_SECCFG_8822E (SECURITY CONFIGURATION REGISTER) */ +#define BIT_DIS_GCLK_WAPI_8822E BIT(15) +#define BIT_DIS_GCLK_AES_8822E BIT(14) +#define BIT_DIS_GCLK_TKIP_8822E BIT(13) +#define BIT_AES_SEL_QC_1_8822E BIT(12) +#define BIT_AES_SEL_QC_0_8822E BIT(11) +#define BIT_CHK_BMC_8822E BIT(9) +#define BIT_CHK_KEYID_8822E BIT(8) +#define BIT_RXBCUSEDK_8822E BIT(7) +#define BIT_TXBCUSEDK_8822E BIT(6) +#define BIT_NOSKMC_8822E BIT(5) +#define BIT_SKBYA2_8822E BIT(4) +#define BIT_RXDEC_8822E BIT(3) +#define BIT_TXENC_8822E BIT(2) +#define BIT_RXUHUSEDK_8822E BIT(1) +#define BIT_TXUHUSEDK_8822E BIT(0) + +/* 2 REG_RXFILTER_CATEGORY_1_8822E */ + +#define BIT_SHIFT_RXFILTER_CATEGORY_1_8822E 0 +#define BIT_MASK_RXFILTER_CATEGORY_1_8822E 0xff +#define BIT_RXFILTER_CATEGORY_1_8822E(x) \ + (((x) & BIT_MASK_RXFILTER_CATEGORY_1_8822E) \ + << BIT_SHIFT_RXFILTER_CATEGORY_1_8822E) +#define BITS_RXFILTER_CATEGORY_1_8822E \ + (BIT_MASK_RXFILTER_CATEGORY_1_8822E \ + << BIT_SHIFT_RXFILTER_CATEGORY_1_8822E) +#define BIT_CLEAR_RXFILTER_CATEGORY_1_8822E(x) \ + ((x) & (~BITS_RXFILTER_CATEGORY_1_8822E)) +#define BIT_GET_RXFILTER_CATEGORY_1_8822E(x) \ + (((x) >> BIT_SHIFT_RXFILTER_CATEGORY_1_8822E) & \ + BIT_MASK_RXFILTER_CATEGORY_1_8822E) +#define BIT_SET_RXFILTER_CATEGORY_1_8822E(x, v) \ + (BIT_CLEAR_RXFILTER_CATEGORY_1_8822E(x) | \ + BIT_RXFILTER_CATEGORY_1_8822E(v)) + +/* 2 REG_RXFILTER_ACTION_1_8822E */ + +#define BIT_SHIFT_RXFILTER_ACTION_1_8822E 0 +#define BIT_MASK_RXFILTER_ACTION_1_8822E 0xff +#define BIT_RXFILTER_ACTION_1_8822E(x) \ + (((x) & BIT_MASK_RXFILTER_ACTION_1_8822E) \ + << BIT_SHIFT_RXFILTER_ACTION_1_8822E) +#define BITS_RXFILTER_ACTION_1_8822E \ + (BIT_MASK_RXFILTER_ACTION_1_8822E << BIT_SHIFT_RXFILTER_ACTION_1_8822E) +#define BIT_CLEAR_RXFILTER_ACTION_1_8822E(x) \ + ((x) & (~BITS_RXFILTER_ACTION_1_8822E)) +#define BIT_GET_RXFILTER_ACTION_1_8822E(x) \ + (((x) >> BIT_SHIFT_RXFILTER_ACTION_1_8822E) & \ + BIT_MASK_RXFILTER_ACTION_1_8822E) +#define BIT_SET_RXFILTER_ACTION_1_8822E(x, v) \ + (BIT_CLEAR_RXFILTER_ACTION_1_8822E(x) | BIT_RXFILTER_ACTION_1_8822E(v)) + +/* 2 REG_RXFILTER_CATEGORY_2_8822E */ + +#define BIT_SHIFT_RXFILTER_CATEGORY_2_8822E 0 +#define BIT_MASK_RXFILTER_CATEGORY_2_8822E 0xff +#define BIT_RXFILTER_CATEGORY_2_8822E(x) \ + (((x) & BIT_MASK_RXFILTER_CATEGORY_2_8822E) \ + << BIT_SHIFT_RXFILTER_CATEGORY_2_8822E) +#define BITS_RXFILTER_CATEGORY_2_8822E \ + (BIT_MASK_RXFILTER_CATEGORY_2_8822E \ + << BIT_SHIFT_RXFILTER_CATEGORY_2_8822E) +#define BIT_CLEAR_RXFILTER_CATEGORY_2_8822E(x) \ + ((x) & (~BITS_RXFILTER_CATEGORY_2_8822E)) +#define BIT_GET_RXFILTER_CATEGORY_2_8822E(x) \ + (((x) >> BIT_SHIFT_RXFILTER_CATEGORY_2_8822E) & \ + BIT_MASK_RXFILTER_CATEGORY_2_8822E) +#define BIT_SET_RXFILTER_CATEGORY_2_8822E(x, v) \ + (BIT_CLEAR_RXFILTER_CATEGORY_2_8822E(x) | \ + BIT_RXFILTER_CATEGORY_2_8822E(v)) + +/* 2 REG_RXFILTER_ACTION_2_8822E */ + +#define BIT_SHIFT_RXFILTER_ACTION_2_8822E 0 +#define BIT_MASK_RXFILTER_ACTION_2_8822E 0xff +#define BIT_RXFILTER_ACTION_2_8822E(x) \ + (((x) & BIT_MASK_RXFILTER_ACTION_2_8822E) \ + << BIT_SHIFT_RXFILTER_ACTION_2_8822E) +#define BITS_RXFILTER_ACTION_2_8822E \ + (BIT_MASK_RXFILTER_ACTION_2_8822E << BIT_SHIFT_RXFILTER_ACTION_2_8822E) +#define BIT_CLEAR_RXFILTER_ACTION_2_8822E(x) \ + ((x) & (~BITS_RXFILTER_ACTION_2_8822E)) +#define BIT_GET_RXFILTER_ACTION_2_8822E(x) \ + (((x) >> BIT_SHIFT_RXFILTER_ACTION_2_8822E) & \ + BIT_MASK_RXFILTER_ACTION_2_8822E) +#define BIT_SET_RXFILTER_ACTION_2_8822E(x, v) \ + (BIT_CLEAR_RXFILTER_ACTION_2_8822E(x) | BIT_RXFILTER_ACTION_2_8822E(v)) + +/* 2 REG_RXFILTER_CATEGORY_3_8822E */ + +#define BIT_SHIFT_RXFILTER_CATEGORY_3_8822E 0 +#define BIT_MASK_RXFILTER_CATEGORY_3_8822E 0xff +#define BIT_RXFILTER_CATEGORY_3_8822E(x) \ + (((x) & BIT_MASK_RXFILTER_CATEGORY_3_8822E) \ + << BIT_SHIFT_RXFILTER_CATEGORY_3_8822E) +#define BITS_RXFILTER_CATEGORY_3_8822E \ + (BIT_MASK_RXFILTER_CATEGORY_3_8822E \ + << BIT_SHIFT_RXFILTER_CATEGORY_3_8822E) +#define BIT_CLEAR_RXFILTER_CATEGORY_3_8822E(x) \ + ((x) & (~BITS_RXFILTER_CATEGORY_3_8822E)) +#define BIT_GET_RXFILTER_CATEGORY_3_8822E(x) \ + (((x) >> BIT_SHIFT_RXFILTER_CATEGORY_3_8822E) & \ + BIT_MASK_RXFILTER_CATEGORY_3_8822E) +#define BIT_SET_RXFILTER_CATEGORY_3_8822E(x, v) \ + (BIT_CLEAR_RXFILTER_CATEGORY_3_8822E(x) | \ + BIT_RXFILTER_CATEGORY_3_8822E(v)) + +/* 2 REG_RXFILTER_ACTION_3_8822E */ + +#define BIT_SHIFT_RXFILTER_ACTION_3_8822E 0 +#define BIT_MASK_RXFILTER_ACTION_3_8822E 0xff +#define BIT_RXFILTER_ACTION_3_8822E(x) \ + (((x) & BIT_MASK_RXFILTER_ACTION_3_8822E) \ + << BIT_SHIFT_RXFILTER_ACTION_3_8822E) +#define BITS_RXFILTER_ACTION_3_8822E \ + (BIT_MASK_RXFILTER_ACTION_3_8822E << BIT_SHIFT_RXFILTER_ACTION_3_8822E) +#define BIT_CLEAR_RXFILTER_ACTION_3_8822E(x) \ + ((x) & (~BITS_RXFILTER_ACTION_3_8822E)) +#define BIT_GET_RXFILTER_ACTION_3_8822E(x) \ + (((x) >> BIT_SHIFT_RXFILTER_ACTION_3_8822E) & \ + BIT_MASK_RXFILTER_ACTION_3_8822E) +#define BIT_SET_RXFILTER_ACTION_3_8822E(x, v) \ + (BIT_CLEAR_RXFILTER_ACTION_3_8822E(x) | BIT_RXFILTER_ACTION_3_8822E(v)) + +/* 2 REG_RXFLTMAP3_8822E (RX FILTER MAP GROUP 3) */ +#define BIT_MGTFLT15EN_FW_8822E BIT(15) +#define BIT_MGTFLT14EN_FW_8822E BIT(14) +#define BIT_MGTFLT13EN_FW_8822E BIT(13) +#define BIT_MGTFLT12EN_FW_8822E BIT(12) +#define BIT_MGTFLT11EN_FW_8822E BIT(11) +#define BIT_MGTFLT10EN_FW_8822E BIT(10) +#define BIT_MGTFLT9EN_FW_8822E BIT(9) +#define BIT_MGTFLT8EN_FW_8822E BIT(8) +#define BIT_MGTFLT7EN_FW_8822E BIT(7) +#define BIT_MGTFLT6EN_FW_8822E BIT(6) +#define BIT_MGTFLT5EN_FW_8822E BIT(5) +#define BIT_MGTFLT4EN_FW_8822E BIT(4) +#define BIT_MGTFLT3EN_FW_8822E BIT(3) +#define BIT_MGTFLT2EN_FW_8822E BIT(2) +#define BIT_MGTFLT1EN_FW_8822E BIT(1) +#define BIT_MGTFLT0EN_FW_8822E BIT(0) + +/* 2 REG_RXFLTMAP4_8822E (RX FILTER MAP GROUP 4) */ +#define BIT_CTRLFLT15EN_FW_8822E BIT(15) +#define BIT_CTRLFLT14EN_FW_8822E BIT(14) +#define BIT_CTRLFLT13EN_FW_8822E BIT(13) +#define BIT_CTRLFLT12EN_FW_8822E BIT(12) +#define BIT_CTRLFLT11EN_FW_8822E BIT(11) +#define BIT_CTRLFLT10EN_FW_8822E BIT(10) +#define BIT_CTRLFLT9EN_FW_8822E BIT(9) +#define BIT_CTRLFLT8EN_FW_8822E BIT(8) +#define BIT_CTRLFLT7EN_FW_8822E BIT(7) +#define BIT_CTRLFLT6EN_FW_8822E BIT(6) +#define BIT_CTRLFLT5EN_FW_8822E BIT(5) +#define BIT_CTRLFLT4EN_FW_8822E BIT(4) +#define BIT_CTRLFLT3EN_FW_8822E BIT(3) +#define BIT_CTRLFLT2EN_FW_8822E BIT(2) +#define BIT_CTRLFLT1EN_FW_8822E BIT(1) +#define BIT_CTRLFLT0EN_FW_8822E BIT(0) + +/* 2 REG_RXFLTMAP5_8822E (RX FILTER MAP GROUP 5) */ +#define BIT_DATAFLT15EN_FW_8822E BIT(15) +#define BIT_DATAFLT14EN_FW_8822E BIT(14) +#define BIT_DATAFLT13EN_FW_8822E BIT(13) +#define BIT_DATAFLT12EN_FW_8822E BIT(12) +#define BIT_DATAFLT11EN_FW_8822E BIT(11) +#define BIT_DATAFLT10EN_FW_8822E BIT(10) +#define BIT_DATAFLT9EN_FW_8822E BIT(9) +#define BIT_DATAFLT8EN_FW_8822E BIT(8) +#define BIT_DATAFLT7EN_FW_8822E BIT(7) +#define BIT_DATAFLT6EN_FW_8822E BIT(6) +#define BIT_DATAFLT5EN_FW_8822E BIT(5) +#define BIT_DATAFLT4EN_FW_8822E BIT(4) +#define BIT_DATAFLT3EN_FW_8822E BIT(3) +#define BIT_DATAFLT2EN_FW_8822E BIT(2) +#define BIT_DATAFLT1EN_FW_8822E BIT(1) +#define BIT_DATAFLT0EN_FW_8822E BIT(0) + +/* 2 REG_RXFLTMAP6_8822E (RX FILTER MAP GROUP 6) */ +#define BIT_ACTIONFLT15EN_FW_8822E BIT(15) +#define BIT_ACTIONFLT14EN_FW_8822E BIT(14) +#define BIT_ACTIONFLT13EN_FW_8822E BIT(13) +#define BIT_ACTIONFLT12EN_FW_8822E BIT(12) +#define BIT_ACTIONFLT11EN_FW_8822E BIT(11) +#define BIT_ACTIONFLT10EN_FW_8822E BIT(10) +#define BIT_ACTIONFLT9EN_FW_8822E BIT(9) +#define BIT_ACTIONFLT8EN_FW_8822E BIT(8) +#define BIT_ACTIONFLT7EN_FW_8822E BIT(7) +#define BIT_ACTIONFLT6EN_FW_8822E BIT(6) +#define BIT_ACTIONFLT5EN_FW_8822E BIT(5) +#define BIT_ACTIONFLT4EN_FW_8822E BIT(4) +#define BIT_ACTIONFLT3EN_FW_8822E BIT(3) +#define BIT_ACTIONFLT2EN_FW_8822E BIT(2) +#define BIT_ACTIONFLT1EN_FW_8822E BIT(1) +#define BIT_ACTIONFLT0EN_FW_8822E BIT(0) + +/* 2 REG_WOW_CTRL_8822E (WAKE ON WLAN CONTROL REGISTER) */ + +#define BIT_SHIFT_PSF_BSSIDSEL_B2B1_8822E 6 +#define BIT_MASK_PSF_BSSIDSEL_B2B1_8822E 0x3 +#define BIT_PSF_BSSIDSEL_B2B1_8822E(x) \ + (((x) & BIT_MASK_PSF_BSSIDSEL_B2B1_8822E) \ + << BIT_SHIFT_PSF_BSSIDSEL_B2B1_8822E) +#define BITS_PSF_BSSIDSEL_B2B1_8822E \ + (BIT_MASK_PSF_BSSIDSEL_B2B1_8822E << BIT_SHIFT_PSF_BSSIDSEL_B2B1_8822E) +#define BIT_CLEAR_PSF_BSSIDSEL_B2B1_8822E(x) \ + ((x) & (~BITS_PSF_BSSIDSEL_B2B1_8822E)) +#define BIT_GET_PSF_BSSIDSEL_B2B1_8822E(x) \ + (((x) >> BIT_SHIFT_PSF_BSSIDSEL_B2B1_8822E) & \ + BIT_MASK_PSF_BSSIDSEL_B2B1_8822E) +#define BIT_SET_PSF_BSSIDSEL_B2B1_8822E(x, v) \ + (BIT_CLEAR_PSF_BSSIDSEL_B2B1_8822E(x) | BIT_PSF_BSSIDSEL_B2B1_8822E(v)) + +#define BIT_WOWHCI_8822E BIT(5) +#define BIT_PSF_BSSIDSEL_B0_8822E BIT(4) +#define BIT_UWF_8822E BIT(3) +#define BIT_MAGIC_8822E BIT(2) +#define BIT_WOWEN_8822E BIT(1) +#define BIT_FORCE_WAKEUP_8822E BIT(0) + +/* 2 REG_NAN_RX_TSF_FILTER_8822E(NAN_RX_TSF_ADDRESS_FILTER) */ +#define BIT_CHK_TSF_TA_8822E BIT(2) +#define BIT_CHK_TSF_CBSSID_8822E BIT(1) +#define BIT_CHK_TSF_EN_8822E BIT(0) + +/* 2 REG_PS_RX_INFO_8822E (POWER SAVE RX INFORMATION REGISTER) */ + +#define BIT_SHIFT_PORTSEL__PS_RX_INFO_8822E 5 +#define BIT_MASK_PORTSEL__PS_RX_INFO_8822E 0x7 +#define BIT_PORTSEL__PS_RX_INFO_8822E(x) \ + (((x) & BIT_MASK_PORTSEL__PS_RX_INFO_8822E) \ + << BIT_SHIFT_PORTSEL__PS_RX_INFO_8822E) +#define BITS_PORTSEL__PS_RX_INFO_8822E \ + (BIT_MASK_PORTSEL__PS_RX_INFO_8822E \ + << BIT_SHIFT_PORTSEL__PS_RX_INFO_8822E) +#define BIT_CLEAR_PORTSEL__PS_RX_INFO_8822E(x) \ + ((x) & (~BITS_PORTSEL__PS_RX_INFO_8822E)) +#define BIT_GET_PORTSEL__PS_RX_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_PORTSEL__PS_RX_INFO_8822E) & \ + BIT_MASK_PORTSEL__PS_RX_INFO_8822E) +#define BIT_SET_PORTSEL__PS_RX_INFO_8822E(x, v) \ + (BIT_CLEAR_PORTSEL__PS_RX_INFO_8822E(x) | \ + BIT_PORTSEL__PS_RX_INFO_8822E(v)) + +#define BIT_RXCTRLIN0_8822E BIT(4) +#define BIT_RXMGTIN0_8822E BIT(3) +#define BIT_RXDATAIN2_8822E BIT(2) +#define BIT_RXDATAIN1_8822E BIT(1) +#define BIT_RXDATAIN0_8822E BIT(0) + +/* 2 REG_WMMPS_UAPSD_TID_8822E (WMM POWER SAVE UAPSD TID REGISTER) */ +#define BIT_WMMPS_UAPSD_TID7_8822E BIT(7) +#define BIT_WMMPS_UAPSD_TID6_8822E BIT(6) +#define BIT_WMMPS_UAPSD_TID5_8822E BIT(5) +#define BIT_WMMPS_UAPSD_TID4_8822E BIT(4) +#define BIT_WMMPS_UAPSD_TID3_8822E BIT(3) +#define BIT_WMMPS_UAPSD_TID2_8822E BIT(2) +#define BIT_WMMPS_UAPSD_TID1_8822E BIT(1) +#define BIT_WMMPS_UAPSD_TID0_8822E BIT(0) + +/* 2 REG_RRSR_CTS_8822E */ + +#define BIT_SHIFT_RRCTSSR_RSC_AC_8822E 22 +#define BIT_MASK_RRCTSSR_RSC_AC_8822E 0x3 +#define BIT_RRCTSSR_RSC_AC_8822E(x) \ + (((x) & BIT_MASK_RRCTSSR_RSC_AC_8822E) \ + << BIT_SHIFT_RRCTSSR_RSC_AC_8822E) +#define BITS_RRCTSSR_RSC_AC_8822E \ + (BIT_MASK_RRCTSSR_RSC_AC_8822E << BIT_SHIFT_RRCTSSR_RSC_AC_8822E) +#define BIT_CLEAR_RRCTSSR_RSC_AC_8822E(x) ((x) & (~BITS_RRCTSSR_RSC_AC_8822E)) +#define BIT_GET_RRCTSSR_RSC_AC_8822E(x) \ + (((x) >> BIT_SHIFT_RRCTSSR_RSC_AC_8822E) & \ + BIT_MASK_RRCTSSR_RSC_AC_8822E) +#define BIT_SET_RRCTSSR_RSC_AC_8822E(x, v) \ + (BIT_CLEAR_RRCTSSR_RSC_AC_8822E(x) | BIT_RRCTSSR_RSC_AC_8822E(v)) + +#define BIT_SHIFT_RRCTSSR_RSC_N_8822E 20 +#define BIT_MASK_RRCTSSR_RSC_N_8822E 0x3 +#define BIT_RRCTSSR_RSC_N_8822E(x) \ + (((x) & BIT_MASK_RRCTSSR_RSC_N_8822E) << BIT_SHIFT_RRCTSSR_RSC_N_8822E) +#define BITS_RRCTSSR_RSC_N_8822E \ + (BIT_MASK_RRCTSSR_RSC_N_8822E << BIT_SHIFT_RRCTSSR_RSC_N_8822E) +#define BIT_CLEAR_RRCTSSR_RSC_N_8822E(x) ((x) & (~BITS_RRCTSSR_RSC_N_8822E)) +#define BIT_GET_RRCTSSR_RSC_N_8822E(x) \ + (((x) >> BIT_SHIFT_RRCTSSR_RSC_N_8822E) & BIT_MASK_RRCTSSR_RSC_N_8822E) +#define BIT_SET_RRCTSSR_RSC_N_8822E(x, v) \ + (BIT_CLEAR_RRCTSSR_RSC_N_8822E(x) | BIT_RRCTSSR_RSC_N_8822E(v)) + +#define BIT_SHIFT_RRCTSSC_BITMAP_8822E 0 +#define BIT_MASK_RRCTSSC_BITMAP_8822E 0xfffff +#define BIT_RRCTSSC_BITMAP_8822E(x) \ + (((x) & BIT_MASK_RRCTSSC_BITMAP_8822E) \ + << BIT_SHIFT_RRCTSSC_BITMAP_8822E) +#define BITS_RRCTSSC_BITMAP_8822E \ + (BIT_MASK_RRCTSSC_BITMAP_8822E << BIT_SHIFT_RRCTSSC_BITMAP_8822E) +#define BIT_CLEAR_RRCTSSC_BITMAP_8822E(x) ((x) & (~BITS_RRCTSSC_BITMAP_8822E)) +#define BIT_GET_RRCTSSC_BITMAP_8822E(x) \ + (((x) >> BIT_SHIFT_RRCTSSC_BITMAP_8822E) & \ + BIT_MASK_RRCTSSC_BITMAP_8822E) +#define BIT_SET_RRCTSSC_BITMAP_8822E(x, v) \ + (BIT_CLEAR_RRCTSSC_BITMAP_8822E(x) | BIT_RRCTSSC_BITMAP_8822E(v)) + +/* 2 REG_WKFMCAM_CMD_8822E (WAKEUP FRAME CAM COMMAND REGISTER) */ +#define BIT_WKFCAM_POLLING_V1_8822E BIT(31) +#define BIT_WKFCAM_CLR_V1_8822E BIT(30) +#define BIT_WKFCAM_WE_8822E BIT(16) + +#define BIT_SHIFT_WKFCAM_ADDR_V2_8822E 8 +#define BIT_MASK_WKFCAM_ADDR_V2_8822E 0xff +#define BIT_WKFCAM_ADDR_V2_8822E(x) \ + (((x) & BIT_MASK_WKFCAM_ADDR_V2_8822E) \ + << BIT_SHIFT_WKFCAM_ADDR_V2_8822E) +#define BITS_WKFCAM_ADDR_V2_8822E \ + (BIT_MASK_WKFCAM_ADDR_V2_8822E << BIT_SHIFT_WKFCAM_ADDR_V2_8822E) +#define BIT_CLEAR_WKFCAM_ADDR_V2_8822E(x) ((x) & (~BITS_WKFCAM_ADDR_V2_8822E)) +#define BIT_GET_WKFCAM_ADDR_V2_8822E(x) \ + (((x) >> BIT_SHIFT_WKFCAM_ADDR_V2_8822E) & \ + BIT_MASK_WKFCAM_ADDR_V2_8822E) +#define BIT_SET_WKFCAM_ADDR_V2_8822E(x, v) \ + (BIT_CLEAR_WKFCAM_ADDR_V2_8822E(x) | BIT_WKFCAM_ADDR_V2_8822E(v)) + +#define BIT_SHIFT_WKFCAM_CAM_NUM_V1_8822E 0 +#define BIT_MASK_WKFCAM_CAM_NUM_V1_8822E 0xff +#define BIT_WKFCAM_CAM_NUM_V1_8822E(x) \ + (((x) & BIT_MASK_WKFCAM_CAM_NUM_V1_8822E) \ + << BIT_SHIFT_WKFCAM_CAM_NUM_V1_8822E) +#define BITS_WKFCAM_CAM_NUM_V1_8822E \ + (BIT_MASK_WKFCAM_CAM_NUM_V1_8822E << BIT_SHIFT_WKFCAM_CAM_NUM_V1_8822E) +#define BIT_CLEAR_WKFCAM_CAM_NUM_V1_8822E(x) \ + ((x) & (~BITS_WKFCAM_CAM_NUM_V1_8822E)) +#define BIT_GET_WKFCAM_CAM_NUM_V1_8822E(x) \ + (((x) >> BIT_SHIFT_WKFCAM_CAM_NUM_V1_8822E) & \ + BIT_MASK_WKFCAM_CAM_NUM_V1_8822E) +#define BIT_SET_WKFCAM_CAM_NUM_V1_8822E(x, v) \ + (BIT_CLEAR_WKFCAM_CAM_NUM_V1_8822E(x) | BIT_WKFCAM_CAM_NUM_V1_8822E(v)) + +/* 2 REG_WKFMCAM_RWD_8822E (WAKEUP FRAME READ/WRITE DATA) */ + +#define BIT_SHIFT_WKFMCAM_RWD_8822E 0 +#define BIT_MASK_WKFMCAM_RWD_8822E 0xffffffffL +#define BIT_WKFMCAM_RWD_8822E(x) \ + (((x) & BIT_MASK_WKFMCAM_RWD_8822E) << BIT_SHIFT_WKFMCAM_RWD_8822E) +#define BITS_WKFMCAM_RWD_8822E \ + (BIT_MASK_WKFMCAM_RWD_8822E << BIT_SHIFT_WKFMCAM_RWD_8822E) +#define BIT_CLEAR_WKFMCAM_RWD_8822E(x) ((x) & (~BITS_WKFMCAM_RWD_8822E)) +#define BIT_GET_WKFMCAM_RWD_8822E(x) \ + (((x) >> BIT_SHIFT_WKFMCAM_RWD_8822E) & BIT_MASK_WKFMCAM_RWD_8822E) +#define BIT_SET_WKFMCAM_RWD_8822E(x, v) \ + (BIT_CLEAR_WKFMCAM_RWD_8822E(x) | BIT_WKFMCAM_RWD_8822E(v)) + +/* 2 REG_RXFLTMAP0_8822E (RX FILTER MAP GROUP 0) */ +#define BIT_MGTFLT15EN_8822E BIT(15) +#define BIT_MGTFLT14EN_8822E BIT(14) +#define BIT_MGTFLT13EN_8822E BIT(13) +#define BIT_MGTFLT12EN_8822E BIT(12) +#define BIT_MGTFLT11EN_8822E BIT(11) +#define BIT_MGTFLT10EN_8822E BIT(10) +#define BIT_MGTFLT9EN_8822E BIT(9) +#define BIT_MGTFLT8EN_8822E BIT(8) +#define BIT_MGTFLT7EN_8822E BIT(7) +#define BIT_MGTFLT6EN_8822E BIT(6) +#define BIT_MGTFLT5EN_8822E BIT(5) +#define BIT_MGTFLT4EN_8822E BIT(4) +#define BIT_MGTFLT3EN_8822E BIT(3) +#define BIT_MGTFLT2EN_8822E BIT(2) +#define BIT_MGTFLT1EN_8822E BIT(1) +#define BIT_MGTFLT0EN_8822E BIT(0) + +/* 2 REG_RXFLTMAP1_8822E (RX FILTER MAP GROUP 1) */ +#define BIT_CTRLFLT15EN_8822E BIT(15) +#define BIT_CTRLFLT14EN_8822E BIT(14) +#define BIT_CTRLFLT13EN_8822E BIT(13) +#define BIT_CTRLFLT12EN_8822E BIT(12) +#define BIT_CTRLFLT11EN_8822E BIT(11) +#define BIT_CTRLFLT10EN_8822E BIT(10) +#define BIT_CTRLFLT9EN_8822E BIT(9) +#define BIT_CTRLFLT8EN_8822E BIT(8) +#define BIT_CTRLFLT7EN_8822E BIT(7) +#define BIT_CTRLFLT6EN_8822E BIT(6) +#define BIT_CTRLFLT5EN_8822E BIT(5) +#define BIT_CTRLFLT4EN_8822E BIT(4) +#define BIT_CTRLFLT3EN_8822E BIT(3) +#define BIT_CTRLFLT2EN_8822E BIT(2) +#define BIT_CTRLFLT1EN_8822E BIT(1) +#define BIT_CTRLFLT0EN_8822E BIT(0) + +/* 2 REG_RXFLTMAP2_8822E (RX FILTER MAP GROUP 2) */ +#define BIT_DATAFLT15EN_8822E BIT(15) +#define BIT_DATAFLT14EN_8822E BIT(14) +#define BIT_DATAFLT13EN_8822E BIT(13) +#define BIT_DATAFLT12EN_8822E BIT(12) +#define BIT_DATAFLT11EN_8822E BIT(11) +#define BIT_DATAFLT10EN_8822E BIT(10) +#define BIT_DATAFLT9EN_8822E BIT(9) +#define BIT_DATAFLT8EN_8822E BIT(8) +#define BIT_DATAFLT7EN_8822E BIT(7) +#define BIT_DATAFLT6EN_8822E BIT(6) +#define BIT_DATAFLT5EN_8822E BIT(5) +#define BIT_DATAFLT4EN_8822E BIT(4) +#define BIT_DATAFLT3EN_8822E BIT(3) +#define BIT_DATAFLT2EN_8822E BIT(2) +#define BIT_DATAFLT1EN_8822E BIT(1) +#define BIT_DATAFLT0EN_8822E BIT(0) + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_BCN_PSR_RPT_8822E (BEACON PARSER REPORT REGISTER) */ + +#define BIT_SHIFT_DTIM_CNT_8822E 24 +#define BIT_MASK_DTIM_CNT_8822E 0xff +#define BIT_DTIM_CNT_8822E(x) \ + (((x) & BIT_MASK_DTIM_CNT_8822E) << BIT_SHIFT_DTIM_CNT_8822E) +#define BITS_DTIM_CNT_8822E \ + (BIT_MASK_DTIM_CNT_8822E << BIT_SHIFT_DTIM_CNT_8822E) +#define BIT_CLEAR_DTIM_CNT_8822E(x) ((x) & (~BITS_DTIM_CNT_8822E)) +#define BIT_GET_DTIM_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_CNT_8822E) & BIT_MASK_DTIM_CNT_8822E) +#define BIT_SET_DTIM_CNT_8822E(x, v) \ + (BIT_CLEAR_DTIM_CNT_8822E(x) | BIT_DTIM_CNT_8822E(v)) + +#define BIT_SHIFT_DTIM_PERIOD_8822E 16 +#define BIT_MASK_DTIM_PERIOD_8822E 0xff +#define BIT_DTIM_PERIOD_8822E(x) \ + (((x) & BIT_MASK_DTIM_PERIOD_8822E) << BIT_SHIFT_DTIM_PERIOD_8822E) +#define BITS_DTIM_PERIOD_8822E \ + (BIT_MASK_DTIM_PERIOD_8822E << BIT_SHIFT_DTIM_PERIOD_8822E) +#define BIT_CLEAR_DTIM_PERIOD_8822E(x) ((x) & (~BITS_DTIM_PERIOD_8822E)) +#define BIT_GET_DTIM_PERIOD_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_PERIOD_8822E) & BIT_MASK_DTIM_PERIOD_8822E) +#define BIT_SET_DTIM_PERIOD_8822E(x, v) \ + (BIT_CLEAR_DTIM_PERIOD_8822E(x) | BIT_DTIM_PERIOD_8822E(v)) + +#define BIT_DTIM_8822E BIT(15) +#define BIT_TIM_8822E BIT(14) +#define BIT_RPT_VALID_8822E BIT(13) + +#define BIT_SHIFT_PS_AID_0_8822E 0 +#define BIT_MASK_PS_AID_0_8822E 0x7ff +#define BIT_PS_AID_0_8822E(x) \ + (((x) & BIT_MASK_PS_AID_0_8822E) << BIT_SHIFT_PS_AID_0_8822E) +#define BITS_PS_AID_0_8822E \ + (BIT_MASK_PS_AID_0_8822E << BIT_SHIFT_PS_AID_0_8822E) +#define BIT_CLEAR_PS_AID_0_8822E(x) ((x) & (~BITS_PS_AID_0_8822E)) +#define BIT_GET_PS_AID_0_8822E(x) \ + (((x) >> BIT_SHIFT_PS_AID_0_8822E) & BIT_MASK_PS_AID_0_8822E) +#define BIT_SET_PS_AID_0_8822E(x, v) \ + (BIT_CLEAR_PS_AID_0_8822E(x) | BIT_PS_AID_0_8822E(v)) + +/* 2 REG_FLC_RPC_8822E (FW LPS CONDITION -- RX PKT COUNTER) */ + +#define BIT_SHIFT_FLC_RPC_8822E 0 +#define BIT_MASK_FLC_RPC_8822E 0xff +#define BIT_FLC_RPC_8822E(x) \ + (((x) & BIT_MASK_FLC_RPC_8822E) << BIT_SHIFT_FLC_RPC_8822E) +#define BITS_FLC_RPC_8822E (BIT_MASK_FLC_RPC_8822E << BIT_SHIFT_FLC_RPC_8822E) +#define BIT_CLEAR_FLC_RPC_8822E(x) ((x) & (~BITS_FLC_RPC_8822E)) +#define BIT_GET_FLC_RPC_8822E(x) \ + (((x) >> BIT_SHIFT_FLC_RPC_8822E) & BIT_MASK_FLC_RPC_8822E) +#define BIT_SET_FLC_RPC_8822E(x, v) \ + (BIT_CLEAR_FLC_RPC_8822E(x) | BIT_FLC_RPC_8822E(v)) + +/* 2 REG_FLC_RPCT_8822E (FLC_RPC THRESHOLD) */ + +#define BIT_SHIFT_FLC_RPCT_8822E 0 +#define BIT_MASK_FLC_RPCT_8822E 0xff +#define BIT_FLC_RPCT_8822E(x) \ + (((x) & BIT_MASK_FLC_RPCT_8822E) << BIT_SHIFT_FLC_RPCT_8822E) +#define BITS_FLC_RPCT_8822E \ + (BIT_MASK_FLC_RPCT_8822E << BIT_SHIFT_FLC_RPCT_8822E) +#define BIT_CLEAR_FLC_RPCT_8822E(x) ((x) & (~BITS_FLC_RPCT_8822E)) +#define BIT_GET_FLC_RPCT_8822E(x) \ + (((x) >> BIT_SHIFT_FLC_RPCT_8822E) & BIT_MASK_FLC_RPCT_8822E) +#define BIT_SET_FLC_RPCT_8822E(x, v) \ + (BIT_CLEAR_FLC_RPCT_8822E(x) | BIT_FLC_RPCT_8822E(v)) + +/* 2 REG_FLC_PTS_8822E (PKT TYPE SELECTION OF FLC_RPC T) */ +#define BIT_CMF_8822E BIT(2) +#define BIT_CCF_8822E BIT(1) +#define BIT_CDF_8822E BIT(0) + +/* 2 REG_FLC_TRPC_8822E (TIMER OF FLC_RPC) */ +#define BIT_FLC_RPCT_V1_8822E BIT(7) +#define BIT_MODE_8822E BIT(6) + +#define BIT_SHIFT_TRPCD_8822E 0 +#define BIT_MASK_TRPCD_8822E 0x3f +#define BIT_TRPCD_8822E(x) \ + (((x) & BIT_MASK_TRPCD_8822E) << BIT_SHIFT_TRPCD_8822E) +#define BITS_TRPCD_8822E (BIT_MASK_TRPCD_8822E << BIT_SHIFT_TRPCD_8822E) +#define BIT_CLEAR_TRPCD_8822E(x) ((x) & (~BITS_TRPCD_8822E)) +#define BIT_GET_TRPCD_8822E(x) \ + (((x) >> BIT_SHIFT_TRPCD_8822E) & BIT_MASK_TRPCD_8822E) +#define BIT_SET_TRPCD_8822E(x, v) \ + (BIT_CLEAR_TRPCD_8822E(x) | BIT_TRPCD_8822E(v)) + +/* 2 REG_RXPKTMON_CTRL_8822E */ + +#define BIT_SHIFT_RXBKQPKT_SEQ_8822E 20 +#define BIT_MASK_RXBKQPKT_SEQ_8822E 0xf +#define BIT_RXBKQPKT_SEQ_8822E(x) \ + (((x) & BIT_MASK_RXBKQPKT_SEQ_8822E) << BIT_SHIFT_RXBKQPKT_SEQ_8822E) +#define BITS_RXBKQPKT_SEQ_8822E \ + (BIT_MASK_RXBKQPKT_SEQ_8822E << BIT_SHIFT_RXBKQPKT_SEQ_8822E) +#define BIT_CLEAR_RXBKQPKT_SEQ_8822E(x) ((x) & (~BITS_RXBKQPKT_SEQ_8822E)) +#define BIT_GET_RXBKQPKT_SEQ_8822E(x) \ + (((x) >> BIT_SHIFT_RXBKQPKT_SEQ_8822E) & BIT_MASK_RXBKQPKT_SEQ_8822E) +#define BIT_SET_RXBKQPKT_SEQ_8822E(x, v) \ + (BIT_CLEAR_RXBKQPKT_SEQ_8822E(x) | BIT_RXBKQPKT_SEQ_8822E(v)) + +#define BIT_SHIFT_RXBEQPKT_SEQ_8822E 16 +#define BIT_MASK_RXBEQPKT_SEQ_8822E 0xf +#define BIT_RXBEQPKT_SEQ_8822E(x) \ + (((x) & BIT_MASK_RXBEQPKT_SEQ_8822E) << BIT_SHIFT_RXBEQPKT_SEQ_8822E) +#define BITS_RXBEQPKT_SEQ_8822E \ + (BIT_MASK_RXBEQPKT_SEQ_8822E << BIT_SHIFT_RXBEQPKT_SEQ_8822E) +#define BIT_CLEAR_RXBEQPKT_SEQ_8822E(x) ((x) & (~BITS_RXBEQPKT_SEQ_8822E)) +#define BIT_GET_RXBEQPKT_SEQ_8822E(x) \ + (((x) >> BIT_SHIFT_RXBEQPKT_SEQ_8822E) & BIT_MASK_RXBEQPKT_SEQ_8822E) +#define BIT_SET_RXBEQPKT_SEQ_8822E(x, v) \ + (BIT_CLEAR_RXBEQPKT_SEQ_8822E(x) | BIT_RXBEQPKT_SEQ_8822E(v)) + +#define BIT_SHIFT_RXVIQPKT_SEQ_8822E 12 +#define BIT_MASK_RXVIQPKT_SEQ_8822E 0xf +#define BIT_RXVIQPKT_SEQ_8822E(x) \ + (((x) & BIT_MASK_RXVIQPKT_SEQ_8822E) << BIT_SHIFT_RXVIQPKT_SEQ_8822E) +#define BITS_RXVIQPKT_SEQ_8822E \ + (BIT_MASK_RXVIQPKT_SEQ_8822E << BIT_SHIFT_RXVIQPKT_SEQ_8822E) +#define BIT_CLEAR_RXVIQPKT_SEQ_8822E(x) ((x) & (~BITS_RXVIQPKT_SEQ_8822E)) +#define BIT_GET_RXVIQPKT_SEQ_8822E(x) \ + (((x) >> BIT_SHIFT_RXVIQPKT_SEQ_8822E) & BIT_MASK_RXVIQPKT_SEQ_8822E) +#define BIT_SET_RXVIQPKT_SEQ_8822E(x, v) \ + (BIT_CLEAR_RXVIQPKT_SEQ_8822E(x) | BIT_RXVIQPKT_SEQ_8822E(v)) + +#define BIT_SHIFT_RXVOQPKT_SEQ_8822E 8 +#define BIT_MASK_RXVOQPKT_SEQ_8822E 0xf +#define BIT_RXVOQPKT_SEQ_8822E(x) \ + (((x) & BIT_MASK_RXVOQPKT_SEQ_8822E) << BIT_SHIFT_RXVOQPKT_SEQ_8822E) +#define BITS_RXVOQPKT_SEQ_8822E \ + (BIT_MASK_RXVOQPKT_SEQ_8822E << BIT_SHIFT_RXVOQPKT_SEQ_8822E) +#define BIT_CLEAR_RXVOQPKT_SEQ_8822E(x) ((x) & (~BITS_RXVOQPKT_SEQ_8822E)) +#define BIT_GET_RXVOQPKT_SEQ_8822E(x) \ + (((x) >> BIT_SHIFT_RXVOQPKT_SEQ_8822E) & BIT_MASK_RXVOQPKT_SEQ_8822E) +#define BIT_SET_RXVOQPKT_SEQ_8822E(x, v) \ + (BIT_CLEAR_RXVOQPKT_SEQ_8822E(x) | BIT_RXVOQPKT_SEQ_8822E(v)) + +#define BIT_RXBKQPKT_ERR_8822E BIT(7) +#define BIT_RXBEQPKT_ERR_8822E BIT(6) +#define BIT_RXVIQPKT_ERR_8822E BIT(5) +#define BIT_RXVOQPKT_ERR_8822E BIT(4) +#define BIT_RXDMA_MON_EN_8822E BIT(2) +#define BIT_RXPKT_MON_RST_8822E BIT(1) +#define BIT_RXPKT_MON_EN_8822E BIT(0) + +/* 2 REG_STATE_MON_8822E */ + +#define BIT_SHIFT_STATE_SEL_8822E 24 +#define BIT_MASK_STATE_SEL_8822E 0x1f +#define BIT_STATE_SEL_8822E(x) \ + (((x) & BIT_MASK_STATE_SEL_8822E) << BIT_SHIFT_STATE_SEL_8822E) +#define BITS_STATE_SEL_8822E \ + (BIT_MASK_STATE_SEL_8822E << BIT_SHIFT_STATE_SEL_8822E) +#define BIT_CLEAR_STATE_SEL_8822E(x) ((x) & (~BITS_STATE_SEL_8822E)) +#define BIT_GET_STATE_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_STATE_SEL_8822E) & BIT_MASK_STATE_SEL_8822E) +#define BIT_SET_STATE_SEL_8822E(x, v) \ + (BIT_CLEAR_STATE_SEL_8822E(x) | BIT_STATE_SEL_8822E(v)) + +#define BIT_SHIFT_STATE_INFO_8822E 8 +#define BIT_MASK_STATE_INFO_8822E 0xff +#define BIT_STATE_INFO_8822E(x) \ + (((x) & BIT_MASK_STATE_INFO_8822E) << BIT_SHIFT_STATE_INFO_8822E) +#define BITS_STATE_INFO_8822E \ + (BIT_MASK_STATE_INFO_8822E << BIT_SHIFT_STATE_INFO_8822E) +#define BIT_CLEAR_STATE_INFO_8822E(x) ((x) & (~BITS_STATE_INFO_8822E)) +#define BIT_GET_STATE_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_STATE_INFO_8822E) & BIT_MASK_STATE_INFO_8822E) +#define BIT_SET_STATE_INFO_8822E(x, v) \ + (BIT_CLEAR_STATE_INFO_8822E(x) | BIT_STATE_INFO_8822E(v)) + +#define BIT_UPD_NXT_STATE_8822E BIT(7) + +#define BIT_SHIFT_CUR_STATE_8822E 0 +#define BIT_MASK_CUR_STATE_8822E 0x7f +#define BIT_CUR_STATE_8822E(x) \ + (((x) & BIT_MASK_CUR_STATE_8822E) << BIT_SHIFT_CUR_STATE_8822E) +#define BITS_CUR_STATE_8822E \ + (BIT_MASK_CUR_STATE_8822E << BIT_SHIFT_CUR_STATE_8822E) +#define BIT_CLEAR_CUR_STATE_8822E(x) ((x) & (~BITS_CUR_STATE_8822E)) +#define BIT_GET_CUR_STATE_8822E(x) \ + (((x) >> BIT_SHIFT_CUR_STATE_8822E) & BIT_MASK_CUR_STATE_8822E) +#define BIT_SET_CUR_STATE_8822E(x, v) \ + (BIT_CLEAR_CUR_STATE_8822E(x) | BIT_CUR_STATE_8822E(v)) + +/* 2 REG_ERROR_MON_8822E */ +#define BIT_CSIRPT_LEN_BB_MORE_THAN_MAC_8822E BIT(23) +#define BIT_CSI_CHKSUM_ERROR_8822E BIT(22) +#define BIT_MACRX_ERR_4_8822E BIT(20) +#define BIT_MACRX_ERR_3_8822E BIT(19) +#define BIT_MACRX_ERR_2_8822E BIT(18) +#define BIT_MACRX_ERR_1_8822E BIT(17) +#define BIT_MACRX_ERR_0_8822E BIT(16) +#define BIT_WMAC_PRETX_ERRHDL_EN_8822E BIT(15) +#define BIT_MACTX_ERR_5_8822E BIT(5) +#define BIT_MACTX_ERR_4_8822E BIT(4) +#define BIT_MACTX_ERR_3_8822E BIT(3) +#define BIT_MACTX_ERR_2_8822E BIT(2) +#define BIT_MACTX_ERR_1_8822E BIT(1) +#define BIT_MACTX_ERR_0_8822E BIT(0) + +/* 2 REG_SEARCH_MACID_8822E */ +#define BIT_EN_TXRPTBUF_CLK_8822E BIT(31) + +#define BIT_SHIFT_INFO_INDEX_OFFSET_8822E 16 +#define BIT_MASK_INFO_INDEX_OFFSET_8822E 0x1fff +#define BIT_INFO_INDEX_OFFSET_8822E(x) \ + (((x) & BIT_MASK_INFO_INDEX_OFFSET_8822E) \ + << BIT_SHIFT_INFO_INDEX_OFFSET_8822E) +#define BITS_INFO_INDEX_OFFSET_8822E \ + (BIT_MASK_INFO_INDEX_OFFSET_8822E << BIT_SHIFT_INFO_INDEX_OFFSET_8822E) +#define BIT_CLEAR_INFO_INDEX_OFFSET_8822E(x) \ + ((x) & (~BITS_INFO_INDEX_OFFSET_8822E)) +#define BIT_GET_INFO_INDEX_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_INFO_INDEX_OFFSET_8822E) & \ + BIT_MASK_INFO_INDEX_OFFSET_8822E) +#define BIT_SET_INFO_INDEX_OFFSET_8822E(x, v) \ + (BIT_CLEAR_INFO_INDEX_OFFSET_8822E(x) | BIT_INFO_INDEX_OFFSET_8822E(v)) + +#define BIT_WMAC_SRCH_FIFOFULL_8822E BIT(15) +#define BIT_DIS_INFOSRCH_8822E BIT(14) + +#define BIT_SHIFT_INFO_ADDR_OFFSET_8822E 0 +#define BIT_MASK_INFO_ADDR_OFFSET_8822E 0x1fff +#define BIT_INFO_ADDR_OFFSET_8822E(x) \ + (((x) & BIT_MASK_INFO_ADDR_OFFSET_8822E) \ + << BIT_SHIFT_INFO_ADDR_OFFSET_8822E) +#define BITS_INFO_ADDR_OFFSET_8822E \ + (BIT_MASK_INFO_ADDR_OFFSET_8822E << BIT_SHIFT_INFO_ADDR_OFFSET_8822E) +#define BIT_CLEAR_INFO_ADDR_OFFSET_8822E(x) \ + ((x) & (~BITS_INFO_ADDR_OFFSET_8822E)) +#define BIT_GET_INFO_ADDR_OFFSET_8822E(x) \ + (((x) >> BIT_SHIFT_INFO_ADDR_OFFSET_8822E) & \ + BIT_MASK_INFO_ADDR_OFFSET_8822E) +#define BIT_SET_INFO_ADDR_OFFSET_8822E(x, v) \ + (BIT_CLEAR_INFO_ADDR_OFFSET_8822E(x) | BIT_INFO_ADDR_OFFSET_8822E(v)) + +/* 2 REG_BT_COEX_TABLE_8822E (BT-COEXISTENCE CONTROL REGISTER) */ + +#define BIT_SHIFT_COEX_TABLE_1_8822E 0 +#define BIT_MASK_COEX_TABLE_1_8822E 0xffffffffL +#define BIT_COEX_TABLE_1_8822E(x) \ + (((x) & BIT_MASK_COEX_TABLE_1_8822E) << BIT_SHIFT_COEX_TABLE_1_8822E) +#define BITS_COEX_TABLE_1_8822E \ + (BIT_MASK_COEX_TABLE_1_8822E << BIT_SHIFT_COEX_TABLE_1_8822E) +#define BIT_CLEAR_COEX_TABLE_1_8822E(x) ((x) & (~BITS_COEX_TABLE_1_8822E)) +#define BIT_GET_COEX_TABLE_1_8822E(x) \ + (((x) >> BIT_SHIFT_COEX_TABLE_1_8822E) & BIT_MASK_COEX_TABLE_1_8822E) +#define BIT_SET_COEX_TABLE_1_8822E(x, v) \ + (BIT_CLEAR_COEX_TABLE_1_8822E(x) | BIT_COEX_TABLE_1_8822E(v)) + +/* 2 REG_BT_COEX_TABLE2_8822E (BT-COEXISTENCE CONTROL REGISTER) */ + +#define BIT_SHIFT_COEX_TABLE_2_8822E 0 +#define BIT_MASK_COEX_TABLE_2_8822E 0xffffffffL +#define BIT_COEX_TABLE_2_8822E(x) \ + (((x) & BIT_MASK_COEX_TABLE_2_8822E) << BIT_SHIFT_COEX_TABLE_2_8822E) +#define BITS_COEX_TABLE_2_8822E \ + (BIT_MASK_COEX_TABLE_2_8822E << BIT_SHIFT_COEX_TABLE_2_8822E) +#define BIT_CLEAR_COEX_TABLE_2_8822E(x) ((x) & (~BITS_COEX_TABLE_2_8822E)) +#define BIT_GET_COEX_TABLE_2_8822E(x) \ + (((x) >> BIT_SHIFT_COEX_TABLE_2_8822E) & BIT_MASK_COEX_TABLE_2_8822E) +#define BIT_SET_COEX_TABLE_2_8822E(x, v) \ + (BIT_CLEAR_COEX_TABLE_2_8822E(x) | BIT_COEX_TABLE_2_8822E(v)) + +/* 2 REG_BT_COEX_BREAK_TABLE_8822E (BT-COEXISTENCE CONTROL REGISTER) */ + +#define BIT_SHIFT_BREAK_TABLE_2_8822E 16 +#define BIT_MASK_BREAK_TABLE_2_8822E 0xffff +#define BIT_BREAK_TABLE_2_8822E(x) \ + (((x) & BIT_MASK_BREAK_TABLE_2_8822E) << BIT_SHIFT_BREAK_TABLE_2_8822E) +#define BITS_BREAK_TABLE_2_8822E \ + (BIT_MASK_BREAK_TABLE_2_8822E << BIT_SHIFT_BREAK_TABLE_2_8822E) +#define BIT_CLEAR_BREAK_TABLE_2_8822E(x) ((x) & (~BITS_BREAK_TABLE_2_8822E)) +#define BIT_GET_BREAK_TABLE_2_8822E(x) \ + (((x) >> BIT_SHIFT_BREAK_TABLE_2_8822E) & BIT_MASK_BREAK_TABLE_2_8822E) +#define BIT_SET_BREAK_TABLE_2_8822E(x, v) \ + (BIT_CLEAR_BREAK_TABLE_2_8822E(x) | BIT_BREAK_TABLE_2_8822E(v)) + +#define BIT_SHIFT_BREAK_TABLE_1_8822E 0 +#define BIT_MASK_BREAK_TABLE_1_8822E 0xffff +#define BIT_BREAK_TABLE_1_8822E(x) \ + (((x) & BIT_MASK_BREAK_TABLE_1_8822E) << BIT_SHIFT_BREAK_TABLE_1_8822E) +#define BITS_BREAK_TABLE_1_8822E \ + (BIT_MASK_BREAK_TABLE_1_8822E << BIT_SHIFT_BREAK_TABLE_1_8822E) +#define BIT_CLEAR_BREAK_TABLE_1_8822E(x) ((x) & (~BITS_BREAK_TABLE_1_8822E)) +#define BIT_GET_BREAK_TABLE_1_8822E(x) \ + (((x) >> BIT_SHIFT_BREAK_TABLE_1_8822E) & BIT_MASK_BREAK_TABLE_1_8822E) +#define BIT_SET_BREAK_TABLE_1_8822E(x, v) \ + (BIT_CLEAR_BREAK_TABLE_1_8822E(x) | BIT_BREAK_TABLE_1_8822E(v)) + +/* 2 REG_BT_COEX_TABLE_H_8822E (BT-COEXISTENCE CONTROL REGISTER) */ +#define BIT_PRI_MASK_RX_RESP_V1_8822E BIT(30) +#define BIT_PRI_MASK_RXOFDM_V1_8822E BIT(29) +#define BIT_PRI_MASK_RXCCK_V1_8822E BIT(28) + +#define BIT_SHIFT_PRI_MASK_TXAC_8822E 21 +#define BIT_MASK_PRI_MASK_TXAC_8822E 0x7f +#define BIT_PRI_MASK_TXAC_8822E(x) \ + (((x) & BIT_MASK_PRI_MASK_TXAC_8822E) << BIT_SHIFT_PRI_MASK_TXAC_8822E) +#define BITS_PRI_MASK_TXAC_8822E \ + (BIT_MASK_PRI_MASK_TXAC_8822E << BIT_SHIFT_PRI_MASK_TXAC_8822E) +#define BIT_CLEAR_PRI_MASK_TXAC_8822E(x) ((x) & (~BITS_PRI_MASK_TXAC_8822E)) +#define BIT_GET_PRI_MASK_TXAC_8822E(x) \ + (((x) >> BIT_SHIFT_PRI_MASK_TXAC_8822E) & BIT_MASK_PRI_MASK_TXAC_8822E) +#define BIT_SET_PRI_MASK_TXAC_8822E(x, v) \ + (BIT_CLEAR_PRI_MASK_TXAC_8822E(x) | BIT_PRI_MASK_TXAC_8822E(v)) + +#define BIT_SHIFT_PRI_MASK_NAV_8822E 13 +#define BIT_MASK_PRI_MASK_NAV_8822E 0xff +#define BIT_PRI_MASK_NAV_8822E(x) \ + (((x) & BIT_MASK_PRI_MASK_NAV_8822E) << BIT_SHIFT_PRI_MASK_NAV_8822E) +#define BITS_PRI_MASK_NAV_8822E \ + (BIT_MASK_PRI_MASK_NAV_8822E << BIT_SHIFT_PRI_MASK_NAV_8822E) +#define BIT_CLEAR_PRI_MASK_NAV_8822E(x) ((x) & (~BITS_PRI_MASK_NAV_8822E)) +#define BIT_GET_PRI_MASK_NAV_8822E(x) \ + (((x) >> BIT_SHIFT_PRI_MASK_NAV_8822E) & BIT_MASK_PRI_MASK_NAV_8822E) +#define BIT_SET_PRI_MASK_NAV_8822E(x, v) \ + (BIT_CLEAR_PRI_MASK_NAV_8822E(x) | BIT_PRI_MASK_NAV_8822E(v)) + +#define BIT_PRI_MASK_CCK_V1_8822E BIT(12) +#define BIT_PRI_MASK_OFDM_V1_8822E BIT(11) +#define BIT_PRI_MASK_RTY_V1_8822E BIT(10) + +#define BIT_SHIFT_PRI_MASK_NUM_8822E 6 +#define BIT_MASK_PRI_MASK_NUM_8822E 0xf +#define BIT_PRI_MASK_NUM_8822E(x) \ + (((x) & BIT_MASK_PRI_MASK_NUM_8822E) << BIT_SHIFT_PRI_MASK_NUM_8822E) +#define BITS_PRI_MASK_NUM_8822E \ + (BIT_MASK_PRI_MASK_NUM_8822E << BIT_SHIFT_PRI_MASK_NUM_8822E) +#define BIT_CLEAR_PRI_MASK_NUM_8822E(x) ((x) & (~BITS_PRI_MASK_NUM_8822E)) +#define BIT_GET_PRI_MASK_NUM_8822E(x) \ + (((x) >> BIT_SHIFT_PRI_MASK_NUM_8822E) & BIT_MASK_PRI_MASK_NUM_8822E) +#define BIT_SET_PRI_MASK_NUM_8822E(x, v) \ + (BIT_CLEAR_PRI_MASK_NUM_8822E(x) | BIT_PRI_MASK_NUM_8822E(v)) + +#define BIT_SHIFT_PRI_MASK_TYPE_8822E 2 +#define BIT_MASK_PRI_MASK_TYPE_8822E 0xf +#define BIT_PRI_MASK_TYPE_8822E(x) \ + (((x) & BIT_MASK_PRI_MASK_TYPE_8822E) << BIT_SHIFT_PRI_MASK_TYPE_8822E) +#define BITS_PRI_MASK_TYPE_8822E \ + (BIT_MASK_PRI_MASK_TYPE_8822E << BIT_SHIFT_PRI_MASK_TYPE_8822E) +#define BIT_CLEAR_PRI_MASK_TYPE_8822E(x) ((x) & (~BITS_PRI_MASK_TYPE_8822E)) +#define BIT_GET_PRI_MASK_TYPE_8822E(x) \ + (((x) >> BIT_SHIFT_PRI_MASK_TYPE_8822E) & BIT_MASK_PRI_MASK_TYPE_8822E) +#define BIT_SET_PRI_MASK_TYPE_8822E(x, v) \ + (BIT_CLEAR_PRI_MASK_TYPE_8822E(x) | BIT_PRI_MASK_TYPE_8822E(v)) + +#define BIT_OOB_V1_8822E BIT(1) +#define BIT_ANT_SEL_V1_8822E BIT(0) + +/* 2 REG_RXCMD_0_8822E */ +#define BIT_RXCMD_EN_8822E BIT(31) + +#define BIT_SHIFT_RXCMD_INFO_8822E 0 +#define BIT_MASK_RXCMD_INFO_8822E 0x7fffffffL +#define BIT_RXCMD_INFO_8822E(x) \ + (((x) & BIT_MASK_RXCMD_INFO_8822E) << BIT_SHIFT_RXCMD_INFO_8822E) +#define BITS_RXCMD_INFO_8822E \ + (BIT_MASK_RXCMD_INFO_8822E << BIT_SHIFT_RXCMD_INFO_8822E) +#define BIT_CLEAR_RXCMD_INFO_8822E(x) ((x) & (~BITS_RXCMD_INFO_8822E)) +#define BIT_GET_RXCMD_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_RXCMD_INFO_8822E) & BIT_MASK_RXCMD_INFO_8822E) +#define BIT_SET_RXCMD_INFO_8822E(x, v) \ + (BIT_CLEAR_RXCMD_INFO_8822E(x) | BIT_RXCMD_INFO_8822E(v)) + +/* 2 REG_RXCMD_1_8822E */ + +#define BIT_SHIFT_RXCMD_PRD_8822E 0 +#define BIT_MASK_RXCMD_PRD_8822E 0xffff +#define BIT_RXCMD_PRD_8822E(x) \ + (((x) & BIT_MASK_RXCMD_PRD_8822E) << BIT_SHIFT_RXCMD_PRD_8822E) +#define BITS_RXCMD_PRD_8822E \ + (BIT_MASK_RXCMD_PRD_8822E << BIT_SHIFT_RXCMD_PRD_8822E) +#define BIT_CLEAR_RXCMD_PRD_8822E(x) ((x) & (~BITS_RXCMD_PRD_8822E)) +#define BIT_GET_RXCMD_PRD_8822E(x) \ + (((x) >> BIT_SHIFT_RXCMD_PRD_8822E) & BIT_MASK_RXCMD_PRD_8822E) +#define BIT_SET_RXCMD_PRD_8822E(x, v) \ + (BIT_CLEAR_RXCMD_PRD_8822E(x) | BIT_RXCMD_PRD_8822E(v)) + +/* 2 REG_WMAC_RESP_TXINFO_8822E (RESPONSE TXINFO REGISTER) */ + +#define BIT_SHIFT_WMAC_RESP_MFB_8822E 25 +#define BIT_MASK_WMAC_RESP_MFB_8822E 0x7f +#define BIT_WMAC_RESP_MFB_8822E(x) \ + (((x) & BIT_MASK_WMAC_RESP_MFB_8822E) << BIT_SHIFT_WMAC_RESP_MFB_8822E) +#define BITS_WMAC_RESP_MFB_8822E \ + (BIT_MASK_WMAC_RESP_MFB_8822E << BIT_SHIFT_WMAC_RESP_MFB_8822E) +#define BIT_CLEAR_WMAC_RESP_MFB_8822E(x) ((x) & (~BITS_WMAC_RESP_MFB_8822E)) +#define BIT_GET_WMAC_RESP_MFB_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_RESP_MFB_8822E) & BIT_MASK_WMAC_RESP_MFB_8822E) +#define BIT_SET_WMAC_RESP_MFB_8822E(x, v) \ + (BIT_CLEAR_WMAC_RESP_MFB_8822E(x) | BIT_WMAC_RESP_MFB_8822E(v)) + +#define BIT_SHIFT_WMAC_ANTINF_SEL_8822E 23 +#define BIT_MASK_WMAC_ANTINF_SEL_8822E 0x3 +#define BIT_WMAC_ANTINF_SEL_8822E(x) \ + (((x) & BIT_MASK_WMAC_ANTINF_SEL_8822E) \ + << BIT_SHIFT_WMAC_ANTINF_SEL_8822E) +#define BITS_WMAC_ANTINF_SEL_8822E \ + (BIT_MASK_WMAC_ANTINF_SEL_8822E << BIT_SHIFT_WMAC_ANTINF_SEL_8822E) +#define BIT_CLEAR_WMAC_ANTINF_SEL_8822E(x) ((x) & (~BITS_WMAC_ANTINF_SEL_8822E)) +#define BIT_GET_WMAC_ANTINF_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_ANTINF_SEL_8822E) & \ + BIT_MASK_WMAC_ANTINF_SEL_8822E) +#define BIT_SET_WMAC_ANTINF_SEL_8822E(x, v) \ + (BIT_CLEAR_WMAC_ANTINF_SEL_8822E(x) | BIT_WMAC_ANTINF_SEL_8822E(v)) + +#define BIT_SHIFT_WMAC_ANTSEL_SEL_8822E 21 +#define BIT_MASK_WMAC_ANTSEL_SEL_8822E 0x3 +#define BIT_WMAC_ANTSEL_SEL_8822E(x) \ + (((x) & BIT_MASK_WMAC_ANTSEL_SEL_8822E) \ + << BIT_SHIFT_WMAC_ANTSEL_SEL_8822E) +#define BITS_WMAC_ANTSEL_SEL_8822E \ + (BIT_MASK_WMAC_ANTSEL_SEL_8822E << BIT_SHIFT_WMAC_ANTSEL_SEL_8822E) +#define BIT_CLEAR_WMAC_ANTSEL_SEL_8822E(x) ((x) & (~BITS_WMAC_ANTSEL_SEL_8822E)) +#define BIT_GET_WMAC_ANTSEL_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_ANTSEL_SEL_8822E) & \ + BIT_MASK_WMAC_ANTSEL_SEL_8822E) +#define BIT_SET_WMAC_ANTSEL_SEL_8822E(x, v) \ + (BIT_CLEAR_WMAC_ANTSEL_SEL_8822E(x) | BIT_WMAC_ANTSEL_SEL_8822E(v)) + +#define BIT_SHIFT_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E 18 +#define BIT_MASK_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E 0x3 +#define BIT_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E(x) \ + (((x) & BIT_MASK_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E) \ + << BIT_SHIFT_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E) +#define BITS_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E \ + (BIT_MASK_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E \ + << BIT_SHIFT_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E) +#define BIT_CLEAR_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E(x) \ + ((x) & (~BITS_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E)) +#define BIT_GET_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E) & \ + BIT_MASK_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E) +#define BIT_SET_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E(x, v) \ + (BIT_CLEAR_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E(x) | \ + BIT_WMAC_RESP_TXPOWER_OFFSET_TYPE_8822E(v)) + +#define BIT_SHIFT_WMAC_RESP_TXANT_V1_8822E 6 +#define BIT_MASK_WMAC_RESP_TXANT_V1_8822E 0xfff +#define BIT_WMAC_RESP_TXANT_V1_8822E(x) \ + (((x) & BIT_MASK_WMAC_RESP_TXANT_V1_8822E) \ + << BIT_SHIFT_WMAC_RESP_TXANT_V1_8822E) +#define BITS_WMAC_RESP_TXANT_V1_8822E \ + (BIT_MASK_WMAC_RESP_TXANT_V1_8822E \ + << BIT_SHIFT_WMAC_RESP_TXANT_V1_8822E) +#define BIT_CLEAR_WMAC_RESP_TXANT_V1_8822E(x) \ + ((x) & (~BITS_WMAC_RESP_TXANT_V1_8822E)) +#define BIT_GET_WMAC_RESP_TXANT_V1_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_RESP_TXANT_V1_8822E) & \ + BIT_MASK_WMAC_RESP_TXANT_V1_8822E) +#define BIT_SET_WMAC_RESP_TXANT_V1_8822E(x, v) \ + (BIT_CLEAR_WMAC_RESP_TXANT_V1_8822E(x) | \ + BIT_WMAC_RESP_TXANT_V1_8822E(v)) + +/* 2 REG_BBPSF_CTRL_8822E */ +#define BIT_CTL_IDLE_CLR_CSI_RPT_8822E BIT(31) +#define BIT_WMAC_USE_NDPARATE_8822E BIT(30) + +#define BIT_SHIFT_WMAC_CSI_RATE_8822E 24 +#define BIT_MASK_WMAC_CSI_RATE_8822E 0x3f +#define BIT_WMAC_CSI_RATE_8822E(x) \ + (((x) & BIT_MASK_WMAC_CSI_RATE_8822E) << BIT_SHIFT_WMAC_CSI_RATE_8822E) +#define BITS_WMAC_CSI_RATE_8822E \ + (BIT_MASK_WMAC_CSI_RATE_8822E << BIT_SHIFT_WMAC_CSI_RATE_8822E) +#define BIT_CLEAR_WMAC_CSI_RATE_8822E(x) ((x) & (~BITS_WMAC_CSI_RATE_8822E)) +#define BIT_GET_WMAC_CSI_RATE_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_CSI_RATE_8822E) & BIT_MASK_WMAC_CSI_RATE_8822E) +#define BIT_SET_WMAC_CSI_RATE_8822E(x, v) \ + (BIT_CLEAR_WMAC_CSI_RATE_8822E(x) | BIT_WMAC_CSI_RATE_8822E(v)) + +#define BIT_SHIFT_WMAC_RESP_TXRATE_8822E 16 +#define BIT_MASK_WMAC_RESP_TXRATE_8822E 0xff +#define BIT_WMAC_RESP_TXRATE_8822E(x) \ + (((x) & BIT_MASK_WMAC_RESP_TXRATE_8822E) \ + << BIT_SHIFT_WMAC_RESP_TXRATE_8822E) +#define BITS_WMAC_RESP_TXRATE_8822E \ + (BIT_MASK_WMAC_RESP_TXRATE_8822E << BIT_SHIFT_WMAC_RESP_TXRATE_8822E) +#define BIT_CLEAR_WMAC_RESP_TXRATE_8822E(x) \ + ((x) & (~BITS_WMAC_RESP_TXRATE_8822E)) +#define BIT_GET_WMAC_RESP_TXRATE_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_RESP_TXRATE_8822E) & \ + BIT_MASK_WMAC_RESP_TXRATE_8822E) +#define BIT_SET_WMAC_RESP_TXRATE_8822E(x, v) \ + (BIT_CLEAR_WMAC_RESP_TXRATE_8822E(x) | BIT_WMAC_RESP_TXRATE_8822E(v)) + +#define BIT_SHIFT_CSI_RSC_8822E 13 +#define BIT_MASK_CSI_RSC_8822E 0x3 +#define BIT_CSI_RSC_8822E(x) \ + (((x) & BIT_MASK_CSI_RSC_8822E) << BIT_SHIFT_CSI_RSC_8822E) +#define BITS_CSI_RSC_8822E (BIT_MASK_CSI_RSC_8822E << BIT_SHIFT_CSI_RSC_8822E) +#define BIT_CLEAR_CSI_RSC_8822E(x) ((x) & (~BITS_CSI_RSC_8822E)) +#define BIT_GET_CSI_RSC_8822E(x) \ + (((x) >> BIT_SHIFT_CSI_RSC_8822E) & BIT_MASK_CSI_RSC_8822E) +#define BIT_SET_CSI_RSC_8822E(x, v) \ + (BIT_CLEAR_CSI_RSC_8822E(x) | BIT_CSI_RSC_8822E(v)) + +#define BIT_CSI_GID_SEL_8822E BIT(12) +#define BIT_NDPVLD_PROTECT_RDRDY_DIS_8822E BIT(9) +#define BIT_RDCSI_EMPTY_APPZERO_8822E BIT(8) +#define BIT_CSI_RATE_FB_EN_8822E BIT(7) +#define BIT_RXFIFO_WRPTR_WO_CHKSUM_8822E BIT(6) + +/* 2 REG_P2P_RX_BCN_NOA_8822E (P2P RX BEACON NOA REGISTER) */ +#define BIT_NOA_PARSER_EN_8822E BIT(15) + +#define BIT_SHIFT_BSSID_SEL_V1_8822E 12 +#define BIT_MASK_BSSID_SEL_V1_8822E 0x7 +#define BIT_BSSID_SEL_V1_8822E(x) \ + (((x) & BIT_MASK_BSSID_SEL_V1_8822E) << BIT_SHIFT_BSSID_SEL_V1_8822E) +#define BITS_BSSID_SEL_V1_8822E \ + (BIT_MASK_BSSID_SEL_V1_8822E << BIT_SHIFT_BSSID_SEL_V1_8822E) +#define BIT_CLEAR_BSSID_SEL_V1_8822E(x) ((x) & (~BITS_BSSID_SEL_V1_8822E)) +#define BIT_GET_BSSID_SEL_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID_SEL_V1_8822E) & BIT_MASK_BSSID_SEL_V1_8822E) +#define BIT_SET_BSSID_SEL_V1_8822E(x, v) \ + (BIT_CLEAR_BSSID_SEL_V1_8822E(x) | BIT_BSSID_SEL_V1_8822E(v)) + +#define BIT_SHIFT_P2P_OUI_TYPE_8822E 0 +#define BIT_MASK_P2P_OUI_TYPE_8822E 0xff +#define BIT_P2P_OUI_TYPE_8822E(x) \ + (((x) & BIT_MASK_P2P_OUI_TYPE_8822E) << BIT_SHIFT_P2P_OUI_TYPE_8822E) +#define BITS_P2P_OUI_TYPE_8822E \ + (BIT_MASK_P2P_OUI_TYPE_8822E << BIT_SHIFT_P2P_OUI_TYPE_8822E) +#define BIT_CLEAR_P2P_OUI_TYPE_8822E(x) ((x) & (~BITS_P2P_OUI_TYPE_8822E)) +#define BIT_GET_P2P_OUI_TYPE_8822E(x) \ + (((x) >> BIT_SHIFT_P2P_OUI_TYPE_8822E) & BIT_MASK_P2P_OUI_TYPE_8822E) +#define BIT_SET_P2P_OUI_TYPE_8822E(x, v) \ + (BIT_CLEAR_P2P_OUI_TYPE_8822E(x) | BIT_P2P_OUI_TYPE_8822E(v)) + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_ASSOCIATED_BFMER0_INFO_8822E (ASSOCIATED BEAMFORMER0 INFO REGISTER) */ + +#define BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R0_V1_8822E 0 +#define BIT_MASK_R_WMAC_SOUNDING_RXADD_R0_V1_8822E 0xffffffffL +#define BIT_R_WMAC_SOUNDING_RXADD_R0_V1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_SOUNDING_RXADD_R0_V1_8822E) \ + << BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R0_V1_8822E) +#define BITS_R_WMAC_SOUNDING_RXADD_R0_V1_8822E \ + (BIT_MASK_R_WMAC_SOUNDING_RXADD_R0_V1_8822E \ + << BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R0_V1_8822E) +#define BIT_CLEAR_R_WMAC_SOUNDING_RXADD_R0_V1_8822E(x) \ + ((x) & (~BITS_R_WMAC_SOUNDING_RXADD_R0_V1_8822E)) +#define BIT_GET_R_WMAC_SOUNDING_RXADD_R0_V1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R0_V1_8822E) & \ + BIT_MASK_R_WMAC_SOUNDING_RXADD_R0_V1_8822E) +#define BIT_SET_R_WMAC_SOUNDING_RXADD_R0_V1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_SOUNDING_RXADD_R0_V1_8822E(x) | \ + BIT_R_WMAC_SOUNDING_RXADD_R0_V1_8822E(v)) + +/* 2 REG_ASSOCIATED_BFMER0_INFO_H_8822E (ASSOCIATED BEAMFORMER0 INFO REGISTER) */ + +#define BIT_SHIFT_R_WMAC_TXCSI_AID0_8822E 16 +#define BIT_MASK_R_WMAC_TXCSI_AID0_8822E 0x1ff +#define BIT_R_WMAC_TXCSI_AID0_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_TXCSI_AID0_8822E) \ + << BIT_SHIFT_R_WMAC_TXCSI_AID0_8822E) +#define BITS_R_WMAC_TXCSI_AID0_8822E \ + (BIT_MASK_R_WMAC_TXCSI_AID0_8822E << BIT_SHIFT_R_WMAC_TXCSI_AID0_8822E) +#define BIT_CLEAR_R_WMAC_TXCSI_AID0_8822E(x) \ + ((x) & (~BITS_R_WMAC_TXCSI_AID0_8822E)) +#define BIT_GET_R_WMAC_TXCSI_AID0_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_TXCSI_AID0_8822E) & \ + BIT_MASK_R_WMAC_TXCSI_AID0_8822E) +#define BIT_SET_R_WMAC_TXCSI_AID0_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_TXCSI_AID0_8822E(x) | BIT_R_WMAC_TXCSI_AID0_8822E(v)) + +#define BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E 0 +#define BIT_MASK_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E 0xffff +#define BIT_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E) \ + << BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E) +#define BITS_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E \ + (BIT_MASK_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E \ + << BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E) +#define BIT_CLEAR_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E(x) \ + ((x) & (~BITS_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E)) +#define BIT_GET_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E) & \ + BIT_MASK_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E) +#define BIT_SET_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E(x) | \ + BIT_R_WMAC_SOUNDING_RXADD_R0_H_V1_8822E(v)) + +/* 2 REG_ASSOCIATED_BFMER1_INFO_8822E (ASSOCIATED BEAMFORMER1 INFO REGISTER) */ + +#define BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R1_V1_8822E 0 +#define BIT_MASK_R_WMAC_SOUNDING_RXADD_R1_V1_8822E 0xffffffffL +#define BIT_R_WMAC_SOUNDING_RXADD_R1_V1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_SOUNDING_RXADD_R1_V1_8822E) \ + << BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R1_V1_8822E) +#define BITS_R_WMAC_SOUNDING_RXADD_R1_V1_8822E \ + (BIT_MASK_R_WMAC_SOUNDING_RXADD_R1_V1_8822E \ + << BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R1_V1_8822E) +#define BIT_CLEAR_R_WMAC_SOUNDING_RXADD_R1_V1_8822E(x) \ + ((x) & (~BITS_R_WMAC_SOUNDING_RXADD_R1_V1_8822E)) +#define BIT_GET_R_WMAC_SOUNDING_RXADD_R1_V1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R1_V1_8822E) & \ + BIT_MASK_R_WMAC_SOUNDING_RXADD_R1_V1_8822E) +#define BIT_SET_R_WMAC_SOUNDING_RXADD_R1_V1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_SOUNDING_RXADD_R1_V1_8822E(x) | \ + BIT_R_WMAC_SOUNDING_RXADD_R1_V1_8822E(v)) + +/* 2 REG_ASSOCIATED_BFMER1_INFO_H_8822E (ASSOCIATED BEAMFORMER1 INFO REGISTER) */ + +#define BIT_SHIFT_R_WMAC_TXCSI_AID1_8822E 16 +#define BIT_MASK_R_WMAC_TXCSI_AID1_8822E 0x1ff +#define BIT_R_WMAC_TXCSI_AID1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_TXCSI_AID1_8822E) \ + << BIT_SHIFT_R_WMAC_TXCSI_AID1_8822E) +#define BITS_R_WMAC_TXCSI_AID1_8822E \ + (BIT_MASK_R_WMAC_TXCSI_AID1_8822E << BIT_SHIFT_R_WMAC_TXCSI_AID1_8822E) +#define BIT_CLEAR_R_WMAC_TXCSI_AID1_8822E(x) \ + ((x) & (~BITS_R_WMAC_TXCSI_AID1_8822E)) +#define BIT_GET_R_WMAC_TXCSI_AID1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_TXCSI_AID1_8822E) & \ + BIT_MASK_R_WMAC_TXCSI_AID1_8822E) +#define BIT_SET_R_WMAC_TXCSI_AID1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_TXCSI_AID1_8822E(x) | BIT_R_WMAC_TXCSI_AID1_8822E(v)) + +#define BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E 0 +#define BIT_MASK_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E 0xffff +#define BIT_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E) \ + << BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E) +#define BITS_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E \ + (BIT_MASK_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E \ + << BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E) +#define BIT_CLEAR_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E(x) \ + ((x) & (~BITS_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E)) +#define BIT_GET_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E) & \ + BIT_MASK_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E) +#define BIT_SET_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E(x) | \ + BIT_R_WMAC_SOUNDING_RXADD_R1_H_V1_8822E(v)) + +/* 2 REG_TX_CSI_RPT_PARAM_BW20_8822E (TX CSI REPORT PARAMETER REGISTER) */ + +#define BIT_SHIFT_R_WMAC_BFINFO_20M_1_8822E 16 +#define BIT_MASK_R_WMAC_BFINFO_20M_1_8822E 0xfff +#define BIT_R_WMAC_BFINFO_20M_1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_BFINFO_20M_1_8822E) \ + << BIT_SHIFT_R_WMAC_BFINFO_20M_1_8822E) +#define BITS_R_WMAC_BFINFO_20M_1_8822E \ + (BIT_MASK_R_WMAC_BFINFO_20M_1_8822E \ + << BIT_SHIFT_R_WMAC_BFINFO_20M_1_8822E) +#define BIT_CLEAR_R_WMAC_BFINFO_20M_1_8822E(x) \ + ((x) & (~BITS_R_WMAC_BFINFO_20M_1_8822E)) +#define BIT_GET_R_WMAC_BFINFO_20M_1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_BFINFO_20M_1_8822E) & \ + BIT_MASK_R_WMAC_BFINFO_20M_1_8822E) +#define BIT_SET_R_WMAC_BFINFO_20M_1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_BFINFO_20M_1_8822E(x) | \ + BIT_R_WMAC_BFINFO_20M_1_8822E(v)) + +#define BIT_SHIFT_R_WMAC_BFINFO_20M_0_8822E 0 +#define BIT_MASK_R_WMAC_BFINFO_20M_0_8822E 0xfff +#define BIT_R_WMAC_BFINFO_20M_0_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_BFINFO_20M_0_8822E) \ + << BIT_SHIFT_R_WMAC_BFINFO_20M_0_8822E) +#define BITS_R_WMAC_BFINFO_20M_0_8822E \ + (BIT_MASK_R_WMAC_BFINFO_20M_0_8822E \ + << BIT_SHIFT_R_WMAC_BFINFO_20M_0_8822E) +#define BIT_CLEAR_R_WMAC_BFINFO_20M_0_8822E(x) \ + ((x) & (~BITS_R_WMAC_BFINFO_20M_0_8822E)) +#define BIT_GET_R_WMAC_BFINFO_20M_0_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_BFINFO_20M_0_8822E) & \ + BIT_MASK_R_WMAC_BFINFO_20M_0_8822E) +#define BIT_SET_R_WMAC_BFINFO_20M_0_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_BFINFO_20M_0_8822E(x) | \ + BIT_R_WMAC_BFINFO_20M_0_8822E(v)) + +/* 2 REG_TX_CSI_RPT_PARAM_BW40_8822E (TX CSI REPORT PARAMETER_BW40 REGISTER) */ + +#define BIT_SHIFT_WMAC_RESP_ANTD_8822E 12 +#define BIT_MASK_WMAC_RESP_ANTD_8822E 0xf +#define BIT_WMAC_RESP_ANTD_8822E(x) \ + (((x) & BIT_MASK_WMAC_RESP_ANTD_8822E) \ + << BIT_SHIFT_WMAC_RESP_ANTD_8822E) +#define BITS_WMAC_RESP_ANTD_8822E \ + (BIT_MASK_WMAC_RESP_ANTD_8822E << BIT_SHIFT_WMAC_RESP_ANTD_8822E) +#define BIT_CLEAR_WMAC_RESP_ANTD_8822E(x) ((x) & (~BITS_WMAC_RESP_ANTD_8822E)) +#define BIT_GET_WMAC_RESP_ANTD_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_RESP_ANTD_8822E) & \ + BIT_MASK_WMAC_RESP_ANTD_8822E) +#define BIT_SET_WMAC_RESP_ANTD_8822E(x, v) \ + (BIT_CLEAR_WMAC_RESP_ANTD_8822E(x) | BIT_WMAC_RESP_ANTD_8822E(v)) + +#define BIT_SHIFT_WMAC_RESP_ANTC_8822E 8 +#define BIT_MASK_WMAC_RESP_ANTC_8822E 0xf +#define BIT_WMAC_RESP_ANTC_8822E(x) \ + (((x) & BIT_MASK_WMAC_RESP_ANTC_8822E) \ + << BIT_SHIFT_WMAC_RESP_ANTC_8822E) +#define BITS_WMAC_RESP_ANTC_8822E \ + (BIT_MASK_WMAC_RESP_ANTC_8822E << BIT_SHIFT_WMAC_RESP_ANTC_8822E) +#define BIT_CLEAR_WMAC_RESP_ANTC_8822E(x) ((x) & (~BITS_WMAC_RESP_ANTC_8822E)) +#define BIT_GET_WMAC_RESP_ANTC_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_RESP_ANTC_8822E) & \ + BIT_MASK_WMAC_RESP_ANTC_8822E) +#define BIT_SET_WMAC_RESP_ANTC_8822E(x, v) \ + (BIT_CLEAR_WMAC_RESP_ANTC_8822E(x) | BIT_WMAC_RESP_ANTC_8822E(v)) + +#define BIT_SHIFT_WMAC_RESP_ANTB_8822E 4 +#define BIT_MASK_WMAC_RESP_ANTB_8822E 0xf +#define BIT_WMAC_RESP_ANTB_8822E(x) \ + (((x) & BIT_MASK_WMAC_RESP_ANTB_8822E) \ + << BIT_SHIFT_WMAC_RESP_ANTB_8822E) +#define BITS_WMAC_RESP_ANTB_8822E \ + (BIT_MASK_WMAC_RESP_ANTB_8822E << BIT_SHIFT_WMAC_RESP_ANTB_8822E) +#define BIT_CLEAR_WMAC_RESP_ANTB_8822E(x) ((x) & (~BITS_WMAC_RESP_ANTB_8822E)) +#define BIT_GET_WMAC_RESP_ANTB_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_RESP_ANTB_8822E) & \ + BIT_MASK_WMAC_RESP_ANTB_8822E) +#define BIT_SET_WMAC_RESP_ANTB_8822E(x, v) \ + (BIT_CLEAR_WMAC_RESP_ANTB_8822E(x) | BIT_WMAC_RESP_ANTB_8822E(v)) + +#define BIT_SHIFT_WMAC_RESP_ANTA_8822E 0 +#define BIT_MASK_WMAC_RESP_ANTA_8822E 0xf +#define BIT_WMAC_RESP_ANTA_8822E(x) \ + (((x) & BIT_MASK_WMAC_RESP_ANTA_8822E) \ + << BIT_SHIFT_WMAC_RESP_ANTA_8822E) +#define BITS_WMAC_RESP_ANTA_8822E \ + (BIT_MASK_WMAC_RESP_ANTA_8822E << BIT_SHIFT_WMAC_RESP_ANTA_8822E) +#define BIT_CLEAR_WMAC_RESP_ANTA_8822E(x) ((x) & (~BITS_WMAC_RESP_ANTA_8822E)) +#define BIT_GET_WMAC_RESP_ANTA_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_RESP_ANTA_8822E) & \ + BIT_MASK_WMAC_RESP_ANTA_8822E) +#define BIT_SET_WMAC_RESP_ANTA_8822E(x, v) \ + (BIT_CLEAR_WMAC_RESP_ANTA_8822E(x) | BIT_WMAC_RESP_ANTA_8822E(v)) + +/* 2 REG_CSI_PTR_8822E */ + +#define BIT_SHIFT_CSI_RADDR_LATCH_V2_8822E 16 +#define BIT_MASK_CSI_RADDR_LATCH_V2_8822E 0xffff +#define BIT_CSI_RADDR_LATCH_V2_8822E(x) \ + (((x) & BIT_MASK_CSI_RADDR_LATCH_V2_8822E) \ + << BIT_SHIFT_CSI_RADDR_LATCH_V2_8822E) +#define BITS_CSI_RADDR_LATCH_V2_8822E \ + (BIT_MASK_CSI_RADDR_LATCH_V2_8822E \ + << BIT_SHIFT_CSI_RADDR_LATCH_V2_8822E) +#define BIT_CLEAR_CSI_RADDR_LATCH_V2_8822E(x) \ + ((x) & (~BITS_CSI_RADDR_LATCH_V2_8822E)) +#define BIT_GET_CSI_RADDR_LATCH_V2_8822E(x) \ + (((x) >> BIT_SHIFT_CSI_RADDR_LATCH_V2_8822E) & \ + BIT_MASK_CSI_RADDR_LATCH_V2_8822E) +#define BIT_SET_CSI_RADDR_LATCH_V2_8822E(x, v) \ + (BIT_CLEAR_CSI_RADDR_LATCH_V2_8822E(x) | \ + BIT_CSI_RADDR_LATCH_V2_8822E(v)) + +#define BIT_SHIFT_CSI_WADDR_LATCH_V2_8822E 0 +#define BIT_MASK_CSI_WADDR_LATCH_V2_8822E 0xffff +#define BIT_CSI_WADDR_LATCH_V2_8822E(x) \ + (((x) & BIT_MASK_CSI_WADDR_LATCH_V2_8822E) \ + << BIT_SHIFT_CSI_WADDR_LATCH_V2_8822E) +#define BITS_CSI_WADDR_LATCH_V2_8822E \ + (BIT_MASK_CSI_WADDR_LATCH_V2_8822E \ + << BIT_SHIFT_CSI_WADDR_LATCH_V2_8822E) +#define BIT_CLEAR_CSI_WADDR_LATCH_V2_8822E(x) \ + ((x) & (~BITS_CSI_WADDR_LATCH_V2_8822E)) +#define BIT_GET_CSI_WADDR_LATCH_V2_8822E(x) \ + (((x) >> BIT_SHIFT_CSI_WADDR_LATCH_V2_8822E) & \ + BIT_MASK_CSI_WADDR_LATCH_V2_8822E) +#define BIT_SET_CSI_WADDR_LATCH_V2_8822E(x, v) \ + (BIT_CLEAR_CSI_WADDR_LATCH_V2_8822E(x) | \ + BIT_CSI_WADDR_LATCH_V2_8822E(v)) + +/* 2 REG_BCN_PSR_RPT2_8822E (BEACON PARSER REPORT REGISTER2) */ + +#define BIT_SHIFT_DTIM_CNT2_8822E 24 +#define BIT_MASK_DTIM_CNT2_8822E 0xff +#define BIT_DTIM_CNT2_8822E(x) \ + (((x) & BIT_MASK_DTIM_CNT2_8822E) << BIT_SHIFT_DTIM_CNT2_8822E) +#define BITS_DTIM_CNT2_8822E \ + (BIT_MASK_DTIM_CNT2_8822E << BIT_SHIFT_DTIM_CNT2_8822E) +#define BIT_CLEAR_DTIM_CNT2_8822E(x) ((x) & (~BITS_DTIM_CNT2_8822E)) +#define BIT_GET_DTIM_CNT2_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_CNT2_8822E) & BIT_MASK_DTIM_CNT2_8822E) +#define BIT_SET_DTIM_CNT2_8822E(x, v) \ + (BIT_CLEAR_DTIM_CNT2_8822E(x) | BIT_DTIM_CNT2_8822E(v)) + +#define BIT_SHIFT_DTIM_PERIOD2_8822E 16 +#define BIT_MASK_DTIM_PERIOD2_8822E 0xff +#define BIT_DTIM_PERIOD2_8822E(x) \ + (((x) & BIT_MASK_DTIM_PERIOD2_8822E) << BIT_SHIFT_DTIM_PERIOD2_8822E) +#define BITS_DTIM_PERIOD2_8822E \ + (BIT_MASK_DTIM_PERIOD2_8822E << BIT_SHIFT_DTIM_PERIOD2_8822E) +#define BIT_CLEAR_DTIM_PERIOD2_8822E(x) ((x) & (~BITS_DTIM_PERIOD2_8822E)) +#define BIT_GET_DTIM_PERIOD2_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_PERIOD2_8822E) & BIT_MASK_DTIM_PERIOD2_8822E) +#define BIT_SET_DTIM_PERIOD2_8822E(x, v) \ + (BIT_CLEAR_DTIM_PERIOD2_8822E(x) | BIT_DTIM_PERIOD2_8822E(v)) + +#define BIT_DTIM2_8822E BIT(15) +#define BIT_TIM2_8822E BIT(14) +#define BIT_RPT_VALID_8822E BIT(13) + +#define BIT_SHIFT_PS_AID_2_8822E 0 +#define BIT_MASK_PS_AID_2_8822E 0x7ff +#define BIT_PS_AID_2_8822E(x) \ + (((x) & BIT_MASK_PS_AID_2_8822E) << BIT_SHIFT_PS_AID_2_8822E) +#define BITS_PS_AID_2_8822E \ + (BIT_MASK_PS_AID_2_8822E << BIT_SHIFT_PS_AID_2_8822E) +#define BIT_CLEAR_PS_AID_2_8822E(x) ((x) & (~BITS_PS_AID_2_8822E)) +#define BIT_GET_PS_AID_2_8822E(x) \ + (((x) >> BIT_SHIFT_PS_AID_2_8822E) & BIT_MASK_PS_AID_2_8822E) +#define BIT_SET_PS_AID_2_8822E(x, v) \ + (BIT_CLEAR_PS_AID_2_8822E(x) | BIT_PS_AID_2_8822E(v)) + +/* 2 REG_BCN_PSR_RPT3_8822E (BEACON PARSER REPORT REGISTER3) */ + +#define BIT_SHIFT_DTIM_CNT3_8822E 24 +#define BIT_MASK_DTIM_CNT3_8822E 0xff +#define BIT_DTIM_CNT3_8822E(x) \ + (((x) & BIT_MASK_DTIM_CNT3_8822E) << BIT_SHIFT_DTIM_CNT3_8822E) +#define BITS_DTIM_CNT3_8822E \ + (BIT_MASK_DTIM_CNT3_8822E << BIT_SHIFT_DTIM_CNT3_8822E) +#define BIT_CLEAR_DTIM_CNT3_8822E(x) ((x) & (~BITS_DTIM_CNT3_8822E)) +#define BIT_GET_DTIM_CNT3_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_CNT3_8822E) & BIT_MASK_DTIM_CNT3_8822E) +#define BIT_SET_DTIM_CNT3_8822E(x, v) \ + (BIT_CLEAR_DTIM_CNT3_8822E(x) | BIT_DTIM_CNT3_8822E(v)) + +#define BIT_SHIFT_DTIM_PERIOD3_8822E 16 +#define BIT_MASK_DTIM_PERIOD3_8822E 0xff +#define BIT_DTIM_PERIOD3_8822E(x) \ + (((x) & BIT_MASK_DTIM_PERIOD3_8822E) << BIT_SHIFT_DTIM_PERIOD3_8822E) +#define BITS_DTIM_PERIOD3_8822E \ + (BIT_MASK_DTIM_PERIOD3_8822E << BIT_SHIFT_DTIM_PERIOD3_8822E) +#define BIT_CLEAR_DTIM_PERIOD3_8822E(x) ((x) & (~BITS_DTIM_PERIOD3_8822E)) +#define BIT_GET_DTIM_PERIOD3_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_PERIOD3_8822E) & BIT_MASK_DTIM_PERIOD3_8822E) +#define BIT_SET_DTIM_PERIOD3_8822E(x, v) \ + (BIT_CLEAR_DTIM_PERIOD3_8822E(x) | BIT_DTIM_PERIOD3_8822E(v)) + +#define BIT_DTIM3_8822E BIT(15) +#define BIT_TIM3_8822E BIT(14) +#define BIT_RPT_VALID_8822E BIT(13) + +#define BIT_SHIFT_PS_AID_3_8822E 0 +#define BIT_MASK_PS_AID_3_8822E 0x7ff +#define BIT_PS_AID_3_8822E(x) \ + (((x) & BIT_MASK_PS_AID_3_8822E) << BIT_SHIFT_PS_AID_3_8822E) +#define BITS_PS_AID_3_8822E \ + (BIT_MASK_PS_AID_3_8822E << BIT_SHIFT_PS_AID_3_8822E) +#define BIT_CLEAR_PS_AID_3_8822E(x) ((x) & (~BITS_PS_AID_3_8822E)) +#define BIT_GET_PS_AID_3_8822E(x) \ + (((x) >> BIT_SHIFT_PS_AID_3_8822E) & BIT_MASK_PS_AID_3_8822E) +#define BIT_SET_PS_AID_3_8822E(x, v) \ + (BIT_CLEAR_PS_AID_3_8822E(x) | BIT_PS_AID_3_8822E(v)) + +/* 2 REG_BCN_PSR_RPT4_8822E (BEACON PARSER REPORT REGISTER4) */ + +#define BIT_SHIFT_DTIM_CNT4_8822E 24 +#define BIT_MASK_DTIM_CNT4_8822E 0xff +#define BIT_DTIM_CNT4_8822E(x) \ + (((x) & BIT_MASK_DTIM_CNT4_8822E) << BIT_SHIFT_DTIM_CNT4_8822E) +#define BITS_DTIM_CNT4_8822E \ + (BIT_MASK_DTIM_CNT4_8822E << BIT_SHIFT_DTIM_CNT4_8822E) +#define BIT_CLEAR_DTIM_CNT4_8822E(x) ((x) & (~BITS_DTIM_CNT4_8822E)) +#define BIT_GET_DTIM_CNT4_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_CNT4_8822E) & BIT_MASK_DTIM_CNT4_8822E) +#define BIT_SET_DTIM_CNT4_8822E(x, v) \ + (BIT_CLEAR_DTIM_CNT4_8822E(x) | BIT_DTIM_CNT4_8822E(v)) + +#define BIT_SHIFT_DTIM_PERIOD4_8822E 16 +#define BIT_MASK_DTIM_PERIOD4_8822E 0xff +#define BIT_DTIM_PERIOD4_8822E(x) \ + (((x) & BIT_MASK_DTIM_PERIOD4_8822E) << BIT_SHIFT_DTIM_PERIOD4_8822E) +#define BITS_DTIM_PERIOD4_8822E \ + (BIT_MASK_DTIM_PERIOD4_8822E << BIT_SHIFT_DTIM_PERIOD4_8822E) +#define BIT_CLEAR_DTIM_PERIOD4_8822E(x) ((x) & (~BITS_DTIM_PERIOD4_8822E)) +#define BIT_GET_DTIM_PERIOD4_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_PERIOD4_8822E) & BIT_MASK_DTIM_PERIOD4_8822E) +#define BIT_SET_DTIM_PERIOD4_8822E(x, v) \ + (BIT_CLEAR_DTIM_PERIOD4_8822E(x) | BIT_DTIM_PERIOD4_8822E(v)) + +#define BIT_DTIM4_8822E BIT(15) +#define BIT_TIM4_8822E BIT(14) +#define BIT_RPT_VALID_8822E BIT(13) + +#define BIT_SHIFT_PS_AID_4_8822E 0 +#define BIT_MASK_PS_AID_4_8822E 0x7ff +#define BIT_PS_AID_4_8822E(x) \ + (((x) & BIT_MASK_PS_AID_4_8822E) << BIT_SHIFT_PS_AID_4_8822E) +#define BITS_PS_AID_4_8822E \ + (BIT_MASK_PS_AID_4_8822E << BIT_SHIFT_PS_AID_4_8822E) +#define BIT_CLEAR_PS_AID_4_8822E(x) ((x) & (~BITS_PS_AID_4_8822E)) +#define BIT_GET_PS_AID_4_8822E(x) \ + (((x) >> BIT_SHIFT_PS_AID_4_8822E) & BIT_MASK_PS_AID_4_8822E) +#define BIT_SET_PS_AID_4_8822E(x, v) \ + (BIT_CLEAR_PS_AID_4_8822E(x) | BIT_PS_AID_4_8822E(v)) + +/* 2 REG_A1_ADDR_MASK_8822E (A1 ADDR MASK REGISTER) */ + +#define BIT_SHIFT_A1_ADDR_MASK_8822E 0 +#define BIT_MASK_A1_ADDR_MASK_8822E 0xffffffffL +#define BIT_A1_ADDR_MASK_8822E(x) \ + (((x) & BIT_MASK_A1_ADDR_MASK_8822E) << BIT_SHIFT_A1_ADDR_MASK_8822E) +#define BITS_A1_ADDR_MASK_8822E \ + (BIT_MASK_A1_ADDR_MASK_8822E << BIT_SHIFT_A1_ADDR_MASK_8822E) +#define BIT_CLEAR_A1_ADDR_MASK_8822E(x) ((x) & (~BITS_A1_ADDR_MASK_8822E)) +#define BIT_GET_A1_ADDR_MASK_8822E(x) \ + (((x) >> BIT_SHIFT_A1_ADDR_MASK_8822E) & BIT_MASK_A1_ADDR_MASK_8822E) +#define BIT_SET_A1_ADDR_MASK_8822E(x, v) \ + (BIT_CLEAR_A1_ADDR_MASK_8822E(x) | BIT_A1_ADDR_MASK_8822E(v)) + +/* 2 REG_RXPSF_CTRL_8822E */ +#define BIT_RXGCK_FIFOTHR_EN_8822E BIT(28) + +#define BIT_SHIFT_RXGCK_VHT_FIFOTHR_8822E 26 +#define BIT_MASK_RXGCK_VHT_FIFOTHR_8822E 0x3 +#define BIT_RXGCK_VHT_FIFOTHR_8822E(x) \ + (((x) & BIT_MASK_RXGCK_VHT_FIFOTHR_8822E) \ + << BIT_SHIFT_RXGCK_VHT_FIFOTHR_8822E) +#define BITS_RXGCK_VHT_FIFOTHR_8822E \ + (BIT_MASK_RXGCK_VHT_FIFOTHR_8822E << BIT_SHIFT_RXGCK_VHT_FIFOTHR_8822E) +#define BIT_CLEAR_RXGCK_VHT_FIFOTHR_8822E(x) \ + ((x) & (~BITS_RXGCK_VHT_FIFOTHR_8822E)) +#define BIT_GET_RXGCK_VHT_FIFOTHR_8822E(x) \ + (((x) >> BIT_SHIFT_RXGCK_VHT_FIFOTHR_8822E) & \ + BIT_MASK_RXGCK_VHT_FIFOTHR_8822E) +#define BIT_SET_RXGCK_VHT_FIFOTHR_8822E(x, v) \ + (BIT_CLEAR_RXGCK_VHT_FIFOTHR_8822E(x) | BIT_RXGCK_VHT_FIFOTHR_8822E(v)) + +#define BIT_SHIFT_RXGCK_HT_FIFOTHR_8822E 24 +#define BIT_MASK_RXGCK_HT_FIFOTHR_8822E 0x3 +#define BIT_RXGCK_HT_FIFOTHR_8822E(x) \ + (((x) & BIT_MASK_RXGCK_HT_FIFOTHR_8822E) \ + << BIT_SHIFT_RXGCK_HT_FIFOTHR_8822E) +#define BITS_RXGCK_HT_FIFOTHR_8822E \ + (BIT_MASK_RXGCK_HT_FIFOTHR_8822E << BIT_SHIFT_RXGCK_HT_FIFOTHR_8822E) +#define BIT_CLEAR_RXGCK_HT_FIFOTHR_8822E(x) \ + ((x) & (~BITS_RXGCK_HT_FIFOTHR_8822E)) +#define BIT_GET_RXGCK_HT_FIFOTHR_8822E(x) \ + (((x) >> BIT_SHIFT_RXGCK_HT_FIFOTHR_8822E) & \ + BIT_MASK_RXGCK_HT_FIFOTHR_8822E) +#define BIT_SET_RXGCK_HT_FIFOTHR_8822E(x, v) \ + (BIT_CLEAR_RXGCK_HT_FIFOTHR_8822E(x) | BIT_RXGCK_HT_FIFOTHR_8822E(v)) + +#define BIT_SHIFT_RXGCK_OFDM_FIFOTHR_8822E 22 +#define BIT_MASK_RXGCK_OFDM_FIFOTHR_8822E 0x3 +#define BIT_RXGCK_OFDM_FIFOTHR_8822E(x) \ + (((x) & BIT_MASK_RXGCK_OFDM_FIFOTHR_8822E) \ + << BIT_SHIFT_RXGCK_OFDM_FIFOTHR_8822E) +#define BITS_RXGCK_OFDM_FIFOTHR_8822E \ + (BIT_MASK_RXGCK_OFDM_FIFOTHR_8822E \ + << BIT_SHIFT_RXGCK_OFDM_FIFOTHR_8822E) +#define BIT_CLEAR_RXGCK_OFDM_FIFOTHR_8822E(x) \ + ((x) & (~BITS_RXGCK_OFDM_FIFOTHR_8822E)) +#define BIT_GET_RXGCK_OFDM_FIFOTHR_8822E(x) \ + (((x) >> BIT_SHIFT_RXGCK_OFDM_FIFOTHR_8822E) & \ + BIT_MASK_RXGCK_OFDM_FIFOTHR_8822E) +#define BIT_SET_RXGCK_OFDM_FIFOTHR_8822E(x, v) \ + (BIT_CLEAR_RXGCK_OFDM_FIFOTHR_8822E(x) | \ + BIT_RXGCK_OFDM_FIFOTHR_8822E(v)) + +#define BIT_SHIFT_RXGCK_CCK_FIFOTHR_8822E 20 +#define BIT_MASK_RXGCK_CCK_FIFOTHR_8822E 0x3 +#define BIT_RXGCK_CCK_FIFOTHR_8822E(x) \ + (((x) & BIT_MASK_RXGCK_CCK_FIFOTHR_8822E) \ + << BIT_SHIFT_RXGCK_CCK_FIFOTHR_8822E) +#define BITS_RXGCK_CCK_FIFOTHR_8822E \ + (BIT_MASK_RXGCK_CCK_FIFOTHR_8822E << BIT_SHIFT_RXGCK_CCK_FIFOTHR_8822E) +#define BIT_CLEAR_RXGCK_CCK_FIFOTHR_8822E(x) \ + ((x) & (~BITS_RXGCK_CCK_FIFOTHR_8822E)) +#define BIT_GET_RXGCK_CCK_FIFOTHR_8822E(x) \ + (((x) >> BIT_SHIFT_RXGCK_CCK_FIFOTHR_8822E) & \ + BIT_MASK_RXGCK_CCK_FIFOTHR_8822E) +#define BIT_SET_RXGCK_CCK_FIFOTHR_8822E(x, v) \ + (BIT_CLEAR_RXGCK_CCK_FIFOTHR_8822E(x) | BIT_RXGCK_CCK_FIFOTHR_8822E(v)) + +#define BIT_SHIFT_RXGCK_ENTRY_DELAY_8822E 17 +#define BIT_MASK_RXGCK_ENTRY_DELAY_8822E 0x7 +#define BIT_RXGCK_ENTRY_DELAY_8822E(x) \ + (((x) & BIT_MASK_RXGCK_ENTRY_DELAY_8822E) \ + << BIT_SHIFT_RXGCK_ENTRY_DELAY_8822E) +#define BITS_RXGCK_ENTRY_DELAY_8822E \ + (BIT_MASK_RXGCK_ENTRY_DELAY_8822E << BIT_SHIFT_RXGCK_ENTRY_DELAY_8822E) +#define BIT_CLEAR_RXGCK_ENTRY_DELAY_8822E(x) \ + ((x) & (~BITS_RXGCK_ENTRY_DELAY_8822E)) +#define BIT_GET_RXGCK_ENTRY_DELAY_8822E(x) \ + (((x) >> BIT_SHIFT_RXGCK_ENTRY_DELAY_8822E) & \ + BIT_MASK_RXGCK_ENTRY_DELAY_8822E) +#define BIT_SET_RXGCK_ENTRY_DELAY_8822E(x, v) \ + (BIT_CLEAR_RXGCK_ENTRY_DELAY_8822E(x) | BIT_RXGCK_ENTRY_DELAY_8822E(v)) + +#define BIT_RXGCK_OFDMCCA_EN_8822E BIT(16) + +#define BIT_SHIFT_RXPSF_PKTLENTHR_8822E 13 +#define BIT_MASK_RXPSF_PKTLENTHR_8822E 0x7 +#define BIT_RXPSF_PKTLENTHR_8822E(x) \ + (((x) & BIT_MASK_RXPSF_PKTLENTHR_8822E) \ + << BIT_SHIFT_RXPSF_PKTLENTHR_8822E) +#define BITS_RXPSF_PKTLENTHR_8822E \ + (BIT_MASK_RXPSF_PKTLENTHR_8822E << BIT_SHIFT_RXPSF_PKTLENTHR_8822E) +#define BIT_CLEAR_RXPSF_PKTLENTHR_8822E(x) ((x) & (~BITS_RXPSF_PKTLENTHR_8822E)) +#define BIT_GET_RXPSF_PKTLENTHR_8822E(x) \ + (((x) >> BIT_SHIFT_RXPSF_PKTLENTHR_8822E) & \ + BIT_MASK_RXPSF_PKTLENTHR_8822E) +#define BIT_SET_RXPSF_PKTLENTHR_8822E(x, v) \ + (BIT_CLEAR_RXPSF_PKTLENTHR_8822E(x) | BIT_RXPSF_PKTLENTHR_8822E(v)) + +#define BIT_RXPSF_CTRLEN_8822E BIT(12) +#define BIT_RXPSF_VHTCHKEN_8822E BIT(11) +#define BIT_RXPSF_HTCHKEN_8822E BIT(10) +#define BIT_RXPSF_OFDMCHKEN_8822E BIT(9) +#define BIT_RXPSF_CCKCHKEN_8822E BIT(8) +#define BIT_RXPSF_OFDMRST_8822E BIT(7) +#define BIT_RXPSF_CCKRST_8822E BIT(6) +#define BIT_RXPSF_MHCHKEN_8822E BIT(5) +#define BIT_RXPSF_CONT_ERRCHKEN_8822E BIT(4) +#define BIT_RXPSF_ALL_ERRCHKEN_8822E BIT(3) + +#define BIT_SHIFT_RXPSF_ERRTHR_8822E 0 +#define BIT_MASK_RXPSF_ERRTHR_8822E 0x7 +#define BIT_RXPSF_ERRTHR_8822E(x) \ + (((x) & BIT_MASK_RXPSF_ERRTHR_8822E) << BIT_SHIFT_RXPSF_ERRTHR_8822E) +#define BITS_RXPSF_ERRTHR_8822E \ + (BIT_MASK_RXPSF_ERRTHR_8822E << BIT_SHIFT_RXPSF_ERRTHR_8822E) +#define BIT_CLEAR_RXPSF_ERRTHR_8822E(x) ((x) & (~BITS_RXPSF_ERRTHR_8822E)) +#define BIT_GET_RXPSF_ERRTHR_8822E(x) \ + (((x) >> BIT_SHIFT_RXPSF_ERRTHR_8822E) & BIT_MASK_RXPSF_ERRTHR_8822E) +#define BIT_SET_RXPSF_ERRTHR_8822E(x, v) \ + (BIT_CLEAR_RXPSF_ERRTHR_8822E(x) | BIT_RXPSF_ERRTHR_8822E(v)) + +/* 2 REG_RXPSF_TYPE_CTRL_8822E */ +#define BIT_RXPSF_DATA15EN_8822E BIT(31) +#define BIT_RXPSF_DATA14EN_8822E BIT(30) +#define BIT_RXPSF_DATA13EN_8822E BIT(29) +#define BIT_RXPSF_DATA12EN_8822E BIT(28) +#define BIT_RXPSF_DATA11EN_8822E BIT(27) +#define BIT_RXPSF_DATA10EN_8822E BIT(26) +#define BIT_RXPSF_DATA9EN_8822E BIT(25) +#define BIT_RXPSF_DATA8EN_8822E BIT(24) +#define BIT_RXPSF_DATA7EN_8822E BIT(23) +#define BIT_RXPSF_DATA6EN_8822E BIT(22) +#define BIT_RXPSF_DATA5EN_8822E BIT(21) +#define BIT_RXPSF_DATA4EN_8822E BIT(20) +#define BIT_RXPSF_DATA3EN_8822E BIT(19) +#define BIT_RXPSF_DATA2EN_8822E BIT(18) +#define BIT_RXPSF_DATA1EN_8822E BIT(17) +#define BIT_RXPSF_DATA0EN_8822E BIT(16) +#define BIT_RXPSF_MGT15EN_8822E BIT(15) +#define BIT_RXPSF_MGT14EN_8822E BIT(14) +#define BIT_RXPSF_MGT13EN_8822E BIT(13) +#define BIT_RXPSF_MGT12EN_8822E BIT(12) +#define BIT_RXPSF_MGT11EN_8822E BIT(11) +#define BIT_RXPSF_MGT10EN_8822E BIT(10) +#define BIT_RXPSF_MGT9EN_8822E BIT(9) +#define BIT_RXPSF_MGT8EN_8822E BIT(8) +#define BIT_RXPSF_MGT7EN_8822E BIT(7) +#define BIT_RXPSF_MGT6EN_8822E BIT(6) +#define BIT_RXPSF_MGT5EN_8822E BIT(5) +#define BIT_RXPSF_MGT4EN_8822E BIT(4) +#define BIT_RXPSF_MGT3EN_8822E BIT(3) +#define BIT_RXPSF_MGT2EN_8822E BIT(2) +#define BIT_RXPSF_MGT1EN_8822E BIT(1) +#define BIT_RXPSF_MGT0EN_8822E BIT(0) + +/* 2 REG_CAM_ACCESS_CTRL_8822E */ +#define BIT_INDIRECT_ERR_8822E BIT(6) +#define BIT_DIRECT_ERR_8822E BIT(5) +#define BIT_DIR_ACCESS_EN_RX_BA_8822E BIT(4) +#define BIT_DIR_ACCESS_EN_MBSSIDCAM_8822E BIT(3) +#define BIT_DIR_ACCESS_EN_KEY_8822E BIT(2) +#define BIT_DIR_ACCESS_EN_WOWLAN_8822E BIT(1) +#define BIT_DIR_ACCESS_EN_FW_FILTER_8822E BIT(0) + +/* 2 REG_HT_SND_REF_RATE_8822E */ + +#define BIT_SHIFT_WMAC_HT_CSI_RATE_8822E 0 +#define BIT_MASK_WMAC_HT_CSI_RATE_8822E 0x3f +#define BIT_WMAC_HT_CSI_RATE_8822E(x) \ + (((x) & BIT_MASK_WMAC_HT_CSI_RATE_8822E) \ + << BIT_SHIFT_WMAC_HT_CSI_RATE_8822E) +#define BITS_WMAC_HT_CSI_RATE_8822E \ + (BIT_MASK_WMAC_HT_CSI_RATE_8822E << BIT_SHIFT_WMAC_HT_CSI_RATE_8822E) +#define BIT_CLEAR_WMAC_HT_CSI_RATE_8822E(x) \ + ((x) & (~BITS_WMAC_HT_CSI_RATE_8822E)) +#define BIT_GET_WMAC_HT_CSI_RATE_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_HT_CSI_RATE_8822E) & \ + BIT_MASK_WMAC_HT_CSI_RATE_8822E) +#define BIT_SET_WMAC_HT_CSI_RATE_8822E(x, v) \ + (BIT_CLEAR_WMAC_HT_CSI_RATE_8822E(x) | BIT_WMAC_HT_CSI_RATE_8822E(v)) + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_MACID2_8822E (MAC ID2 REGISTER) */ + +#define BIT_SHIFT_MACID2_V1_8822E 0 +#define BIT_MASK_MACID2_V1_8822E 0xffffffffL +#define BIT_MACID2_V1_8822E(x) \ + (((x) & BIT_MASK_MACID2_V1_8822E) << BIT_SHIFT_MACID2_V1_8822E) +#define BITS_MACID2_V1_8822E \ + (BIT_MASK_MACID2_V1_8822E << BIT_SHIFT_MACID2_V1_8822E) +#define BIT_CLEAR_MACID2_V1_8822E(x) ((x) & (~BITS_MACID2_V1_8822E)) +#define BIT_GET_MACID2_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MACID2_V1_8822E) & BIT_MASK_MACID2_V1_8822E) +#define BIT_SET_MACID2_V1_8822E(x, v) \ + (BIT_CLEAR_MACID2_V1_8822E(x) | BIT_MACID2_V1_8822E(v)) + +/* 2 REG_MACID2_H_8822E (MAC ID2 REGISTER) */ + +#define BIT_SHIFT_MACID2_H_V1_8822E 0 +#define BIT_MASK_MACID2_H_V1_8822E 0xffff +#define BIT_MACID2_H_V1_8822E(x) \ + (((x) & BIT_MASK_MACID2_H_V1_8822E) << BIT_SHIFT_MACID2_H_V1_8822E) +#define BITS_MACID2_H_V1_8822E \ + (BIT_MASK_MACID2_H_V1_8822E << BIT_SHIFT_MACID2_H_V1_8822E) +#define BIT_CLEAR_MACID2_H_V1_8822E(x) ((x) & (~BITS_MACID2_H_V1_8822E)) +#define BIT_GET_MACID2_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MACID2_H_V1_8822E) & BIT_MASK_MACID2_H_V1_8822E) +#define BIT_SET_MACID2_H_V1_8822E(x, v) \ + (BIT_CLEAR_MACID2_H_V1_8822E(x) | BIT_MACID2_H_V1_8822E(v)) + +/* 2 REG_BSSID2_8822E (BSSID2 REGISTER) */ + +#define BIT_SHIFT_BSSID2_V1_8822E 0 +#define BIT_MASK_BSSID2_V1_8822E 0xffffffffL +#define BIT_BSSID2_V1_8822E(x) \ + (((x) & BIT_MASK_BSSID2_V1_8822E) << BIT_SHIFT_BSSID2_V1_8822E) +#define BITS_BSSID2_V1_8822E \ + (BIT_MASK_BSSID2_V1_8822E << BIT_SHIFT_BSSID2_V1_8822E) +#define BIT_CLEAR_BSSID2_V1_8822E(x) ((x) & (~BITS_BSSID2_V1_8822E)) +#define BIT_GET_BSSID2_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID2_V1_8822E) & BIT_MASK_BSSID2_V1_8822E) +#define BIT_SET_BSSID2_V1_8822E(x, v) \ + (BIT_CLEAR_BSSID2_V1_8822E(x) | BIT_BSSID2_V1_8822E(v)) + +/* 2 REG_BSSID2_H_8822E (BSSID2 REGISTER) */ + +#define BIT_SHIFT_BSSID2_H_V1_8822E 0 +#define BIT_MASK_BSSID2_H_V1_8822E 0xffff +#define BIT_BSSID2_H_V1_8822E(x) \ + (((x) & BIT_MASK_BSSID2_H_V1_8822E) << BIT_SHIFT_BSSID2_H_V1_8822E) +#define BITS_BSSID2_H_V1_8822E \ + (BIT_MASK_BSSID2_H_V1_8822E << BIT_SHIFT_BSSID2_H_V1_8822E) +#define BIT_CLEAR_BSSID2_H_V1_8822E(x) ((x) & (~BITS_BSSID2_H_V1_8822E)) +#define BIT_GET_BSSID2_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID2_H_V1_8822E) & BIT_MASK_BSSID2_H_V1_8822E) +#define BIT_SET_BSSID2_H_V1_8822E(x, v) \ + (BIT_CLEAR_BSSID2_H_V1_8822E(x) | BIT_BSSID2_H_V1_8822E(v)) + +/* 2 REG_MACID3_8822E (MAC ID3 REGISTER) */ + +#define BIT_SHIFT_MACID3_V1_8822E 0 +#define BIT_MASK_MACID3_V1_8822E 0xffffffffL +#define BIT_MACID3_V1_8822E(x) \ + (((x) & BIT_MASK_MACID3_V1_8822E) << BIT_SHIFT_MACID3_V1_8822E) +#define BITS_MACID3_V1_8822E \ + (BIT_MASK_MACID3_V1_8822E << BIT_SHIFT_MACID3_V1_8822E) +#define BIT_CLEAR_MACID3_V1_8822E(x) ((x) & (~BITS_MACID3_V1_8822E)) +#define BIT_GET_MACID3_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MACID3_V1_8822E) & BIT_MASK_MACID3_V1_8822E) +#define BIT_SET_MACID3_V1_8822E(x, v) \ + (BIT_CLEAR_MACID3_V1_8822E(x) | BIT_MACID3_V1_8822E(v)) + +/* 2 REG_MACID3_H_8822E (MAC ID3 REGISTER) */ + +#define BIT_SHIFT_MACID3_H_V1_8822E 0 +#define BIT_MASK_MACID3_H_V1_8822E 0xffff +#define BIT_MACID3_H_V1_8822E(x) \ + (((x) & BIT_MASK_MACID3_H_V1_8822E) << BIT_SHIFT_MACID3_H_V1_8822E) +#define BITS_MACID3_H_V1_8822E \ + (BIT_MASK_MACID3_H_V1_8822E << BIT_SHIFT_MACID3_H_V1_8822E) +#define BIT_CLEAR_MACID3_H_V1_8822E(x) ((x) & (~BITS_MACID3_H_V1_8822E)) +#define BIT_GET_MACID3_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MACID3_H_V1_8822E) & BIT_MASK_MACID3_H_V1_8822E) +#define BIT_SET_MACID3_H_V1_8822E(x, v) \ + (BIT_CLEAR_MACID3_H_V1_8822E(x) | BIT_MACID3_H_V1_8822E(v)) + +/* 2 REG_BSSID3_8822E (BSSID3 REGISTER) */ + +#define BIT_SHIFT_BSSID3_V1_8822E 0 +#define BIT_MASK_BSSID3_V1_8822E 0xffffffffL +#define BIT_BSSID3_V1_8822E(x) \ + (((x) & BIT_MASK_BSSID3_V1_8822E) << BIT_SHIFT_BSSID3_V1_8822E) +#define BITS_BSSID3_V1_8822E \ + (BIT_MASK_BSSID3_V1_8822E << BIT_SHIFT_BSSID3_V1_8822E) +#define BIT_CLEAR_BSSID3_V1_8822E(x) ((x) & (~BITS_BSSID3_V1_8822E)) +#define BIT_GET_BSSID3_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID3_V1_8822E) & BIT_MASK_BSSID3_V1_8822E) +#define BIT_SET_BSSID3_V1_8822E(x, v) \ + (BIT_CLEAR_BSSID3_V1_8822E(x) | BIT_BSSID3_V1_8822E(v)) + +/* 2 REG_BSSID3_H_8822E (BSSID3 REGISTER) */ + +#define BIT_SHIFT_BSSID3_H_V1_8822E 0 +#define BIT_MASK_BSSID3_H_V1_8822E 0xffff +#define BIT_BSSID3_H_V1_8822E(x) \ + (((x) & BIT_MASK_BSSID3_H_V1_8822E) << BIT_SHIFT_BSSID3_H_V1_8822E) +#define BITS_BSSID3_H_V1_8822E \ + (BIT_MASK_BSSID3_H_V1_8822E << BIT_SHIFT_BSSID3_H_V1_8822E) +#define BIT_CLEAR_BSSID3_H_V1_8822E(x) ((x) & (~BITS_BSSID3_H_V1_8822E)) +#define BIT_GET_BSSID3_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID3_H_V1_8822E) & BIT_MASK_BSSID3_H_V1_8822E) +#define BIT_SET_BSSID3_H_V1_8822E(x, v) \ + (BIT_CLEAR_BSSID3_H_V1_8822E(x) | BIT_BSSID3_H_V1_8822E(v)) + +/* 2 REG_MACID4_8822E (MAC ID4 REGISTER) */ + +#define BIT_SHIFT_MACID4_V1_8822E 0 +#define BIT_MASK_MACID4_V1_8822E 0xffffffffL +#define BIT_MACID4_V1_8822E(x) \ + (((x) & BIT_MASK_MACID4_V1_8822E) << BIT_SHIFT_MACID4_V1_8822E) +#define BITS_MACID4_V1_8822E \ + (BIT_MASK_MACID4_V1_8822E << BIT_SHIFT_MACID4_V1_8822E) +#define BIT_CLEAR_MACID4_V1_8822E(x) ((x) & (~BITS_MACID4_V1_8822E)) +#define BIT_GET_MACID4_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MACID4_V1_8822E) & BIT_MASK_MACID4_V1_8822E) +#define BIT_SET_MACID4_V1_8822E(x, v) \ + (BIT_CLEAR_MACID4_V1_8822E(x) | BIT_MACID4_V1_8822E(v)) + +/* 2 REG_MACID4_H_8822E (MAC ID4 REGISTER) */ + +#define BIT_SHIFT_MACID4_H_V1_8822E 0 +#define BIT_MASK_MACID4_H_V1_8822E 0xffff +#define BIT_MACID4_H_V1_8822E(x) \ + (((x) & BIT_MASK_MACID4_H_V1_8822E) << BIT_SHIFT_MACID4_H_V1_8822E) +#define BITS_MACID4_H_V1_8822E \ + (BIT_MASK_MACID4_H_V1_8822E << BIT_SHIFT_MACID4_H_V1_8822E) +#define BIT_CLEAR_MACID4_H_V1_8822E(x) ((x) & (~BITS_MACID4_H_V1_8822E)) +#define BIT_GET_MACID4_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MACID4_H_V1_8822E) & BIT_MASK_MACID4_H_V1_8822E) +#define BIT_SET_MACID4_H_V1_8822E(x, v) \ + (BIT_CLEAR_MACID4_H_V1_8822E(x) | BIT_MACID4_H_V1_8822E(v)) + +/* 2 REG_BSSID4_8822E (BSSID4 REGISTER) */ + +#define BIT_SHIFT_BSSID4_V1_8822E 0 +#define BIT_MASK_BSSID4_V1_8822E 0xffffffffL +#define BIT_BSSID4_V1_8822E(x) \ + (((x) & BIT_MASK_BSSID4_V1_8822E) << BIT_SHIFT_BSSID4_V1_8822E) +#define BITS_BSSID4_V1_8822E \ + (BIT_MASK_BSSID4_V1_8822E << BIT_SHIFT_BSSID4_V1_8822E) +#define BIT_CLEAR_BSSID4_V1_8822E(x) ((x) & (~BITS_BSSID4_V1_8822E)) +#define BIT_GET_BSSID4_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID4_V1_8822E) & BIT_MASK_BSSID4_V1_8822E) +#define BIT_SET_BSSID4_V1_8822E(x, v) \ + (BIT_CLEAR_BSSID4_V1_8822E(x) | BIT_BSSID4_V1_8822E(v)) + +/* 2 REG_BSSID4_H_8822E (BSSID4 REGISTER) */ + +#define BIT_SHIFT_BSSID4_H_V1_8822E 0 +#define BIT_MASK_BSSID4_H_V1_8822E 0xffff +#define BIT_BSSID4_H_V1_8822E(x) \ + (((x) & BIT_MASK_BSSID4_H_V1_8822E) << BIT_SHIFT_BSSID4_H_V1_8822E) +#define BITS_BSSID4_H_V1_8822E \ + (BIT_MASK_BSSID4_H_V1_8822E << BIT_SHIFT_BSSID4_H_V1_8822E) +#define BIT_CLEAR_BSSID4_H_V1_8822E(x) ((x) & (~BITS_BSSID4_H_V1_8822E)) +#define BIT_GET_BSSID4_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID4_H_V1_8822E) & BIT_MASK_BSSID4_H_V1_8822E) +#define BIT_SET_BSSID4_H_V1_8822E(x, v) \ + (BIT_CLEAR_BSSID4_H_V1_8822E(x) | BIT_BSSID4_H_V1_8822E(v)) + +/* 2 REG_NOA_REPORT_8822E */ + +/* 2 REG_NOA_REPORT_1_8822E */ + +/* 2 REG_NOA_REPORT_2_8822E */ + +/* 2 REG_NOA_REPORT_3_8822E */ + +/* 2 REG_PWRBIT_SETTING_8822E */ +#define BIT_CLI3_WMAC_TCRPWRMGT_HWCTL_EN_8822E BIT(15) +#define BIT_CLI3_WMAC_TCRPWRMGT_HWDATA_EN_8822E BIT(14) +#define BIT_CLI3_WMAC_TCRPWRMGT_HWACT_EN_8822E BIT(13) +#define BIT_CLI3_PWR_ST_V1_8822E BIT(12) +#define BIT_CLI2_WMAC_TCRPWRMGT_HWCTL_EN_8822E BIT(11) +#define BIT_CLI2_WMAC_TCRPWRMGT_HWDATA_EN_8822E BIT(10) +#define BIT_CLI2_WMAC_TCRPWRMGT_HWACT_EN_8822E BIT(9) +#define BIT_CLI2_PWR_ST_V1_8822E BIT(8) +#define BIT_CLI1_WMAC_TCRPWRMGT_HWCTL_EN_8822E BIT(7) +#define BIT_CLI1_WMAC_TCRPWRMGT_HWDATA_EN_8822E BIT(6) +#define BIT_CLI1_WMAC_TCRPWRMGT_HWACT_EN_8822E BIT(5) +#define BIT_CLI1_PWR_ST_V1_8822E BIT(4) +#define BIT_CLI0_WMAC_TCRPWRMGT_HWCTL_EN_8822E BIT(3) +#define BIT_CLI0_WMAC_TCRPWRMGT_HWDATA_EN_8822E BIT(2) +#define BIT_CLI0_WMAC_TCRPWRMGT_HWACT_EN_8822E BIT(1) +#define BIT_CLI0_PWR_ST_V1_8822E BIT(0) + +/* 2 REG_GENERAL_OPTION_8822E */ +#define BIT_WMAC_RXRST_NDP_TIMEOUT_8822E BIT(11) +#define BIT_WMAC_NDP_STANDBY_WAIT_RXEND_8822E BIT(10) +#define BIT_DUMMY_FCS_READY_MASK_EN_8822E BIT(9) +#define BIT_RXFIFO_GNT_CUT_8822E BIT(8) +#define BIT_DUMMY_RXD_FCS_ERROR_MASK_EN_V1_8822E BIT(7) +#define BIT_WMAC_EXT_DBG_SEL_V1_8822E BIT(6) +#define BIT_WMAC_FIX_FIRST_MPDU_WITH_PHYSTS_8822E BIT(5) +#define BIT_RX_DMA_BYPASS_CHECK_DATABYPASS_CHECK_DATA_8822E BIT(4) +#define BIT_RX_DMA_BYPASS_CHECK_MGTBIT_RX_DMA_BYPASS_CHECK_MGT_8822E BIT(3) +#define BIT_TXSERV_FIELD_SEL_8822E BIT(2) +#define BIT_RXVHT_LEN_SEL_8822E BIT(1) +#define BIT_RXMIC_PROTECT_EN_8822E BIT(0) + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_CSI_RRSR_8822E */ +#define BIT_CSI_LDPC_EN_8822E BIT(29) +#define BIT_CSI_STBC_EN_8822E BIT(28) + +#define BIT_SHIFT_CSI_RRSC_BITMAP_8822E 4 +#define BIT_MASK_CSI_RRSC_BITMAP_8822E 0xffffff +#define BIT_CSI_RRSC_BITMAP_8822E(x) \ + (((x) & BIT_MASK_CSI_RRSC_BITMAP_8822E) \ + << BIT_SHIFT_CSI_RRSC_BITMAP_8822E) +#define BITS_CSI_RRSC_BITMAP_8822E \ + (BIT_MASK_CSI_RRSC_BITMAP_8822E << BIT_SHIFT_CSI_RRSC_BITMAP_8822E) +#define BIT_CLEAR_CSI_RRSC_BITMAP_8822E(x) ((x) & (~BITS_CSI_RRSC_BITMAP_8822E)) +#define BIT_GET_CSI_RRSC_BITMAP_8822E(x) \ + (((x) >> BIT_SHIFT_CSI_RRSC_BITMAP_8822E) & \ + BIT_MASK_CSI_RRSC_BITMAP_8822E) +#define BIT_SET_CSI_RRSC_BITMAP_8822E(x, v) \ + (BIT_CLEAR_CSI_RRSC_BITMAP_8822E(x) | BIT_CSI_RRSC_BITMAP_8822E(v)) + +#define BIT_SHIFT_OFDM_LEN_TH_8822E 0 +#define BIT_MASK_OFDM_LEN_TH_8822E 0xf +#define BIT_OFDM_LEN_TH_8822E(x) \ + (((x) & BIT_MASK_OFDM_LEN_TH_8822E) << BIT_SHIFT_OFDM_LEN_TH_8822E) +#define BITS_OFDM_LEN_TH_8822E \ + (BIT_MASK_OFDM_LEN_TH_8822E << BIT_SHIFT_OFDM_LEN_TH_8822E) +#define BIT_CLEAR_OFDM_LEN_TH_8822E(x) ((x) & (~BITS_OFDM_LEN_TH_8822E)) +#define BIT_GET_OFDM_LEN_TH_8822E(x) \ + (((x) >> BIT_SHIFT_OFDM_LEN_TH_8822E) & BIT_MASK_OFDM_LEN_TH_8822E) +#define BIT_SET_OFDM_LEN_TH_8822E(x, v) \ + (BIT_CLEAR_OFDM_LEN_TH_8822E(x) | BIT_OFDM_LEN_TH_8822E(v)) + +/* 2 REG_MU_BF_OPTION_8822E */ +#define BIT_WMAC_RESP_NONSTA1_DIS_8822E BIT(7) +#define BIT_WMAC_TXMU_ACKPOLICY_EN_8822E BIT(6) + +#define BIT_SHIFT_WMAC_TXMU_ACKPOLICY_8822E 4 +#define BIT_MASK_WMAC_TXMU_ACKPOLICY_8822E 0x3 +#define BIT_WMAC_TXMU_ACKPOLICY_8822E(x) \ + (((x) & BIT_MASK_WMAC_TXMU_ACKPOLICY_8822E) \ + << BIT_SHIFT_WMAC_TXMU_ACKPOLICY_8822E) +#define BITS_WMAC_TXMU_ACKPOLICY_8822E \ + (BIT_MASK_WMAC_TXMU_ACKPOLICY_8822E \ + << BIT_SHIFT_WMAC_TXMU_ACKPOLICY_8822E) +#define BIT_CLEAR_WMAC_TXMU_ACKPOLICY_8822E(x) \ + ((x) & (~BITS_WMAC_TXMU_ACKPOLICY_8822E)) +#define BIT_GET_WMAC_TXMU_ACKPOLICY_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_TXMU_ACKPOLICY_8822E) & \ + BIT_MASK_WMAC_TXMU_ACKPOLICY_8822E) +#define BIT_SET_WMAC_TXMU_ACKPOLICY_8822E(x, v) \ + (BIT_CLEAR_WMAC_TXMU_ACKPOLICY_8822E(x) | \ + BIT_WMAC_TXMU_ACKPOLICY_8822E(v)) + +#define BIT_SHIFT_WMAC_MU_BFEE_PORT_SEL_8822E 1 +#define BIT_MASK_WMAC_MU_BFEE_PORT_SEL_8822E 0x7 +#define BIT_WMAC_MU_BFEE_PORT_SEL_8822E(x) \ + (((x) & BIT_MASK_WMAC_MU_BFEE_PORT_SEL_8822E) \ + << BIT_SHIFT_WMAC_MU_BFEE_PORT_SEL_8822E) +#define BITS_WMAC_MU_BFEE_PORT_SEL_8822E \ + (BIT_MASK_WMAC_MU_BFEE_PORT_SEL_8822E \ + << BIT_SHIFT_WMAC_MU_BFEE_PORT_SEL_8822E) +#define BIT_CLEAR_WMAC_MU_BFEE_PORT_SEL_8822E(x) \ + ((x) & (~BITS_WMAC_MU_BFEE_PORT_SEL_8822E)) +#define BIT_GET_WMAC_MU_BFEE_PORT_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MU_BFEE_PORT_SEL_8822E) & \ + BIT_MASK_WMAC_MU_BFEE_PORT_SEL_8822E) +#define BIT_SET_WMAC_MU_BFEE_PORT_SEL_8822E(x, v) \ + (BIT_CLEAR_WMAC_MU_BFEE_PORT_SEL_8822E(x) | \ + BIT_WMAC_MU_BFEE_PORT_SEL_8822E(v)) + +#define BIT_WMAC_MU_BFEE_DIS_8822E BIT(0) + +/* 2 REG_WMAC_PAUSE_BB_CLR_TH_8822E */ + +#define BIT_SHIFT_WMAC_PAUSE_BB_CLR_TH_8822E 0 +#define BIT_MASK_WMAC_PAUSE_BB_CLR_TH_8822E 0xff +#define BIT_WMAC_PAUSE_BB_CLR_TH_8822E(x) \ + (((x) & BIT_MASK_WMAC_PAUSE_BB_CLR_TH_8822E) \ + << BIT_SHIFT_WMAC_PAUSE_BB_CLR_TH_8822E) +#define BITS_WMAC_PAUSE_BB_CLR_TH_8822E \ + (BIT_MASK_WMAC_PAUSE_BB_CLR_TH_8822E \ + << BIT_SHIFT_WMAC_PAUSE_BB_CLR_TH_8822E) +#define BIT_CLEAR_WMAC_PAUSE_BB_CLR_TH_8822E(x) \ + ((x) & (~BITS_WMAC_PAUSE_BB_CLR_TH_8822E)) +#define BIT_GET_WMAC_PAUSE_BB_CLR_TH_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_PAUSE_BB_CLR_TH_8822E) & \ + BIT_MASK_WMAC_PAUSE_BB_CLR_TH_8822E) +#define BIT_SET_WMAC_PAUSE_BB_CLR_TH_8822E(x, v) \ + (BIT_CLEAR_WMAC_PAUSE_BB_CLR_TH_8822E(x) | \ + BIT_WMAC_PAUSE_BB_CLR_TH_8822E(v)) + +/* 2 REG__WMAC_MULBK_BUF_8822E */ + +#define BIT_SHIFT_WMAC_MULBK_PAGE_SIZE_8822E 0 +#define BIT_MASK_WMAC_MULBK_PAGE_SIZE_8822E 0xff +#define BIT_WMAC_MULBK_PAGE_SIZE_8822E(x) \ + (((x) & BIT_MASK_WMAC_MULBK_PAGE_SIZE_8822E) \ + << BIT_SHIFT_WMAC_MULBK_PAGE_SIZE_8822E) +#define BITS_WMAC_MULBK_PAGE_SIZE_8822E \ + (BIT_MASK_WMAC_MULBK_PAGE_SIZE_8822E \ + << BIT_SHIFT_WMAC_MULBK_PAGE_SIZE_8822E) +#define BIT_CLEAR_WMAC_MULBK_PAGE_SIZE_8822E(x) \ + ((x) & (~BITS_WMAC_MULBK_PAGE_SIZE_8822E)) +#define BIT_GET_WMAC_MULBK_PAGE_SIZE_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MULBK_PAGE_SIZE_8822E) & \ + BIT_MASK_WMAC_MULBK_PAGE_SIZE_8822E) +#define BIT_SET_WMAC_MULBK_PAGE_SIZE_8822E(x, v) \ + (BIT_CLEAR_WMAC_MULBK_PAGE_SIZE_8822E(x) | \ + BIT_WMAC_MULBK_PAGE_SIZE_8822E(v)) + +/* 2 REG_WMAC_MU_OPTION_8822E */ + +/* 2 REG_WMAC_MU_BF_CTL_8822E */ +#define BIT_WMAC_INVLD_BFPRT_CHK_8822E BIT(15) +#define BIT_WMAC_RETXBFRPTSEQ_UPD_8822E BIT(14) + +#define BIT_SHIFT_WMAC_MU_BFRPTSEG_SEL_8822E 12 +#define BIT_MASK_WMAC_MU_BFRPTSEG_SEL_8822E 0x3 +#define BIT_WMAC_MU_BFRPTSEG_SEL_8822E(x) \ + (((x) & BIT_MASK_WMAC_MU_BFRPTSEG_SEL_8822E) \ + << BIT_SHIFT_WMAC_MU_BFRPTSEG_SEL_8822E) +#define BITS_WMAC_MU_BFRPTSEG_SEL_8822E \ + (BIT_MASK_WMAC_MU_BFRPTSEG_SEL_8822E \ + << BIT_SHIFT_WMAC_MU_BFRPTSEG_SEL_8822E) +#define BIT_CLEAR_WMAC_MU_BFRPTSEG_SEL_8822E(x) \ + ((x) & (~BITS_WMAC_MU_BFRPTSEG_SEL_8822E)) +#define BIT_GET_WMAC_MU_BFRPTSEG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MU_BFRPTSEG_SEL_8822E) & \ + BIT_MASK_WMAC_MU_BFRPTSEG_SEL_8822E) +#define BIT_SET_WMAC_MU_BFRPTSEG_SEL_8822E(x, v) \ + (BIT_CLEAR_WMAC_MU_BFRPTSEG_SEL_8822E(x) | \ + BIT_WMAC_MU_BFRPTSEG_SEL_8822E(v)) + +#define BIT_SHIFT_WMAC_MU_BF_MYAID_8822E 0 +#define BIT_MASK_WMAC_MU_BF_MYAID_8822E 0xfff +#define BIT_WMAC_MU_BF_MYAID_8822E(x) \ + (((x) & BIT_MASK_WMAC_MU_BF_MYAID_8822E) \ + << BIT_SHIFT_WMAC_MU_BF_MYAID_8822E) +#define BITS_WMAC_MU_BF_MYAID_8822E \ + (BIT_MASK_WMAC_MU_BF_MYAID_8822E << BIT_SHIFT_WMAC_MU_BF_MYAID_8822E) +#define BIT_CLEAR_WMAC_MU_BF_MYAID_8822E(x) \ + ((x) & (~BITS_WMAC_MU_BF_MYAID_8822E)) +#define BIT_GET_WMAC_MU_BF_MYAID_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MU_BF_MYAID_8822E) & \ + BIT_MASK_WMAC_MU_BF_MYAID_8822E) +#define BIT_SET_WMAC_MU_BF_MYAID_8822E(x, v) \ + (BIT_CLEAR_WMAC_MU_BF_MYAID_8822E(x) | BIT_WMAC_MU_BF_MYAID_8822E(v)) + +/* 2 REG_WMAC_MU_BFRPT_PARA_8822E */ + +#define BIT_SHIFT_BFRPT_PARA_USERID_SEL_V1_8822E 13 +#define BIT_MASK_BFRPT_PARA_USERID_SEL_V1_8822E 0x7 +#define BIT_BFRPT_PARA_USERID_SEL_V1_8822E(x) \ + (((x) & BIT_MASK_BFRPT_PARA_USERID_SEL_V1_8822E) \ + << BIT_SHIFT_BFRPT_PARA_USERID_SEL_V1_8822E) +#define BITS_BFRPT_PARA_USERID_SEL_V1_8822E \ + (BIT_MASK_BFRPT_PARA_USERID_SEL_V1_8822E \ + << BIT_SHIFT_BFRPT_PARA_USERID_SEL_V1_8822E) +#define BIT_CLEAR_BFRPT_PARA_USERID_SEL_V1_8822E(x) \ + ((x) & (~BITS_BFRPT_PARA_USERID_SEL_V1_8822E)) +#define BIT_GET_BFRPT_PARA_USERID_SEL_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BFRPT_PARA_USERID_SEL_V1_8822E) & \ + BIT_MASK_BFRPT_PARA_USERID_SEL_V1_8822E) +#define BIT_SET_BFRPT_PARA_USERID_SEL_V1_8822E(x, v) \ + (BIT_CLEAR_BFRPT_PARA_USERID_SEL_V1_8822E(x) | \ + BIT_BFRPT_PARA_USERID_SEL_V1_8822E(v)) + +#define BIT_SHIFT_BFRPT_PARA_V1_8822E 0 +#define BIT_MASK_BFRPT_PARA_V1_8822E 0x1fff +#define BIT_BFRPT_PARA_V1_8822E(x) \ + (((x) & BIT_MASK_BFRPT_PARA_V1_8822E) << BIT_SHIFT_BFRPT_PARA_V1_8822E) +#define BITS_BFRPT_PARA_V1_8822E \ + (BIT_MASK_BFRPT_PARA_V1_8822E << BIT_SHIFT_BFRPT_PARA_V1_8822E) +#define BIT_CLEAR_BFRPT_PARA_V1_8822E(x) ((x) & (~BITS_BFRPT_PARA_V1_8822E)) +#define BIT_GET_BFRPT_PARA_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BFRPT_PARA_V1_8822E) & BIT_MASK_BFRPT_PARA_V1_8822E) +#define BIT_SET_BFRPT_PARA_V1_8822E(x, v) \ + (BIT_CLEAR_BFRPT_PARA_V1_8822E(x) | BIT_BFRPT_PARA_V1_8822E(v)) + +/* 2 REG_WMAC_ASSOCIATED_MU_BFMEE2_8822E */ +#define BIT_STATUS_BFEE2_8822E BIT(10) +#define BIT_WMAC_MU_BFEE2_EN_8822E BIT(9) + +#define BIT_SHIFT_WMAC_MU_BFEE2_AID_8822E 0 +#define BIT_MASK_WMAC_MU_BFEE2_AID_8822E 0x1ff +#define BIT_WMAC_MU_BFEE2_AID_8822E(x) \ + (((x) & BIT_MASK_WMAC_MU_BFEE2_AID_8822E) \ + << BIT_SHIFT_WMAC_MU_BFEE2_AID_8822E) +#define BITS_WMAC_MU_BFEE2_AID_8822E \ + (BIT_MASK_WMAC_MU_BFEE2_AID_8822E << BIT_SHIFT_WMAC_MU_BFEE2_AID_8822E) +#define BIT_CLEAR_WMAC_MU_BFEE2_AID_8822E(x) \ + ((x) & (~BITS_WMAC_MU_BFEE2_AID_8822E)) +#define BIT_GET_WMAC_MU_BFEE2_AID_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MU_BFEE2_AID_8822E) & \ + BIT_MASK_WMAC_MU_BFEE2_AID_8822E) +#define BIT_SET_WMAC_MU_BFEE2_AID_8822E(x, v) \ + (BIT_CLEAR_WMAC_MU_BFEE2_AID_8822E(x) | BIT_WMAC_MU_BFEE2_AID_8822E(v)) + +/* 2 REG_WMAC_ASSOCIATED_MU_BFMEE3_8822E */ +#define BIT_STATUS_BFEE3_8822E BIT(10) +#define BIT_WMAC_MU_BFEE3_EN_8822E BIT(9) + +#define BIT_SHIFT_WMAC_MU_BFEE3_AID_8822E 0 +#define BIT_MASK_WMAC_MU_BFEE3_AID_8822E 0x1ff +#define BIT_WMAC_MU_BFEE3_AID_8822E(x) \ + (((x) & BIT_MASK_WMAC_MU_BFEE3_AID_8822E) \ + << BIT_SHIFT_WMAC_MU_BFEE3_AID_8822E) +#define BITS_WMAC_MU_BFEE3_AID_8822E \ + (BIT_MASK_WMAC_MU_BFEE3_AID_8822E << BIT_SHIFT_WMAC_MU_BFEE3_AID_8822E) +#define BIT_CLEAR_WMAC_MU_BFEE3_AID_8822E(x) \ + ((x) & (~BITS_WMAC_MU_BFEE3_AID_8822E)) +#define BIT_GET_WMAC_MU_BFEE3_AID_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MU_BFEE3_AID_8822E) & \ + BIT_MASK_WMAC_MU_BFEE3_AID_8822E) +#define BIT_SET_WMAC_MU_BFEE3_AID_8822E(x, v) \ + (BIT_CLEAR_WMAC_MU_BFEE3_AID_8822E(x) | BIT_WMAC_MU_BFEE3_AID_8822E(v)) + +/* 2 REG_WMAC_ASSOCIATED_MU_BFMEE4_8822E */ +#define BIT_STATUS_BFEE4_8822E BIT(10) +#define BIT_WMAC_MU_BFEE4_EN_8822E BIT(9) + +#define BIT_SHIFT_WMAC_MU_BFEE4_AID_8822E 0 +#define BIT_MASK_WMAC_MU_BFEE4_AID_8822E 0x1ff +#define BIT_WMAC_MU_BFEE4_AID_8822E(x) \ + (((x) & BIT_MASK_WMAC_MU_BFEE4_AID_8822E) \ + << BIT_SHIFT_WMAC_MU_BFEE4_AID_8822E) +#define BITS_WMAC_MU_BFEE4_AID_8822E \ + (BIT_MASK_WMAC_MU_BFEE4_AID_8822E << BIT_SHIFT_WMAC_MU_BFEE4_AID_8822E) +#define BIT_CLEAR_WMAC_MU_BFEE4_AID_8822E(x) \ + ((x) & (~BITS_WMAC_MU_BFEE4_AID_8822E)) +#define BIT_GET_WMAC_MU_BFEE4_AID_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MU_BFEE4_AID_8822E) & \ + BIT_MASK_WMAC_MU_BFEE4_AID_8822E) +#define BIT_SET_WMAC_MU_BFEE4_AID_8822E(x, v) \ + (BIT_CLEAR_WMAC_MU_BFEE4_AID_8822E(x) | BIT_WMAC_MU_BFEE4_AID_8822E(v)) + +/* 2 REG_WMAC_ASSOCIATED_MU_BFMEE5_8822E */ +#define BIT_BIT_STATUS_BFEE5_8822E BIT(10) +#define BIT_WMAC_MU_BFEE5_EN_8822E BIT(9) + +#define BIT_SHIFT_WMAC_MU_BFEE5_AID_8822E 0 +#define BIT_MASK_WMAC_MU_BFEE5_AID_8822E 0x1ff +#define BIT_WMAC_MU_BFEE5_AID_8822E(x) \ + (((x) & BIT_MASK_WMAC_MU_BFEE5_AID_8822E) \ + << BIT_SHIFT_WMAC_MU_BFEE5_AID_8822E) +#define BITS_WMAC_MU_BFEE5_AID_8822E \ + (BIT_MASK_WMAC_MU_BFEE5_AID_8822E << BIT_SHIFT_WMAC_MU_BFEE5_AID_8822E) +#define BIT_CLEAR_WMAC_MU_BFEE5_AID_8822E(x) \ + ((x) & (~BITS_WMAC_MU_BFEE5_AID_8822E)) +#define BIT_GET_WMAC_MU_BFEE5_AID_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MU_BFEE5_AID_8822E) & \ + BIT_MASK_WMAC_MU_BFEE5_AID_8822E) +#define BIT_SET_WMAC_MU_BFEE5_AID_8822E(x, v) \ + (BIT_CLEAR_WMAC_MU_BFEE5_AID_8822E(x) | BIT_WMAC_MU_BFEE5_AID_8822E(v)) + +/* 2 REG_WMAC_ASSOCIATED_MU_BFMEE6_8822E */ +#define BIT_STATUS_BFEE6_8822E BIT(10) +#define BIT_WMAC_MU_BFEE6_EN_8822E BIT(9) + +#define BIT_SHIFT_WMAC_MU_BFEE6_AID_8822E 0 +#define BIT_MASK_WMAC_MU_BFEE6_AID_8822E 0x1ff +#define BIT_WMAC_MU_BFEE6_AID_8822E(x) \ + (((x) & BIT_MASK_WMAC_MU_BFEE6_AID_8822E) \ + << BIT_SHIFT_WMAC_MU_BFEE6_AID_8822E) +#define BITS_WMAC_MU_BFEE6_AID_8822E \ + (BIT_MASK_WMAC_MU_BFEE6_AID_8822E << BIT_SHIFT_WMAC_MU_BFEE6_AID_8822E) +#define BIT_CLEAR_WMAC_MU_BFEE6_AID_8822E(x) \ + ((x) & (~BITS_WMAC_MU_BFEE6_AID_8822E)) +#define BIT_GET_WMAC_MU_BFEE6_AID_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MU_BFEE6_AID_8822E) & \ + BIT_MASK_WMAC_MU_BFEE6_AID_8822E) +#define BIT_SET_WMAC_MU_BFEE6_AID_8822E(x, v) \ + (BIT_CLEAR_WMAC_MU_BFEE6_AID_8822E(x) | BIT_WMAC_MU_BFEE6_AID_8822E(v)) + +/* 2 REG_WMAC_ASSOCIATED_MU_BFMEE7_8822E */ +#define BIT_STATUS_BFEE7_8822E BIT(10) +#define BIT_WMAC_MU_BFEE7_EN_8822E BIT(9) + +#define BIT_SHIFT_WMAC_MU_BFEE7_AID_8822E 0 +#define BIT_MASK_WMAC_MU_BFEE7_AID_8822E 0x1ff +#define BIT_WMAC_MU_BFEE7_AID_8822E(x) \ + (((x) & BIT_MASK_WMAC_MU_BFEE7_AID_8822E) \ + << BIT_SHIFT_WMAC_MU_BFEE7_AID_8822E) +#define BITS_WMAC_MU_BFEE7_AID_8822E \ + (BIT_MASK_WMAC_MU_BFEE7_AID_8822E << BIT_SHIFT_WMAC_MU_BFEE7_AID_8822E) +#define BIT_CLEAR_WMAC_MU_BFEE7_AID_8822E(x) \ + ((x) & (~BITS_WMAC_MU_BFEE7_AID_8822E)) +#define BIT_GET_WMAC_MU_BFEE7_AID_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_MU_BFEE7_AID_8822E) & \ + BIT_MASK_WMAC_MU_BFEE7_AID_8822E) +#define BIT_SET_WMAC_MU_BFEE7_AID_8822E(x, v) \ + (BIT_CLEAR_WMAC_MU_BFEE7_AID_8822E(x) | BIT_WMAC_MU_BFEE7_AID_8822E(v)) + +/* 2 REG_WMAC_BB_STOP_RX_COUNTER_8822E */ +#define BIT_RST_ALL_COUNTER_8822E BIT(31) + +#define BIT_SHIFT_ABORT_RX_VBON_COUNTER_8822E 16 +#define BIT_MASK_ABORT_RX_VBON_COUNTER_8822E 0xff +#define BIT_ABORT_RX_VBON_COUNTER_8822E(x) \ + (((x) & BIT_MASK_ABORT_RX_VBON_COUNTER_8822E) \ + << BIT_SHIFT_ABORT_RX_VBON_COUNTER_8822E) +#define BITS_ABORT_RX_VBON_COUNTER_8822E \ + (BIT_MASK_ABORT_RX_VBON_COUNTER_8822E \ + << BIT_SHIFT_ABORT_RX_VBON_COUNTER_8822E) +#define BIT_CLEAR_ABORT_RX_VBON_COUNTER_8822E(x) \ + ((x) & (~BITS_ABORT_RX_VBON_COUNTER_8822E)) +#define BIT_GET_ABORT_RX_VBON_COUNTER_8822E(x) \ + (((x) >> BIT_SHIFT_ABORT_RX_VBON_COUNTER_8822E) & \ + BIT_MASK_ABORT_RX_VBON_COUNTER_8822E) +#define BIT_SET_ABORT_RX_VBON_COUNTER_8822E(x, v) \ + (BIT_CLEAR_ABORT_RX_VBON_COUNTER_8822E(x) | \ + BIT_ABORT_RX_VBON_COUNTER_8822E(v)) + +#define BIT_SHIFT_ABORT_RX_RDRDY_COUNTER_8822E 8 +#define BIT_MASK_ABORT_RX_RDRDY_COUNTER_8822E 0xff +#define BIT_ABORT_RX_RDRDY_COUNTER_8822E(x) \ + (((x) & BIT_MASK_ABORT_RX_RDRDY_COUNTER_8822E) \ + << BIT_SHIFT_ABORT_RX_RDRDY_COUNTER_8822E) +#define BITS_ABORT_RX_RDRDY_COUNTER_8822E \ + (BIT_MASK_ABORT_RX_RDRDY_COUNTER_8822E \ + << BIT_SHIFT_ABORT_RX_RDRDY_COUNTER_8822E) +#define BIT_CLEAR_ABORT_RX_RDRDY_COUNTER_8822E(x) \ + ((x) & (~BITS_ABORT_RX_RDRDY_COUNTER_8822E)) +#define BIT_GET_ABORT_RX_RDRDY_COUNTER_8822E(x) \ + (((x) >> BIT_SHIFT_ABORT_RX_RDRDY_COUNTER_8822E) & \ + BIT_MASK_ABORT_RX_RDRDY_COUNTER_8822E) +#define BIT_SET_ABORT_RX_RDRDY_COUNTER_8822E(x, v) \ + (BIT_CLEAR_ABORT_RX_RDRDY_COUNTER_8822E(x) | \ + BIT_ABORT_RX_RDRDY_COUNTER_8822E(v)) + +#define BIT_SHIFT_VBON_EARLY_FALLING_COUNTER_8822E 0 +#define BIT_MASK_VBON_EARLY_FALLING_COUNTER_8822E 0xff +#define BIT_VBON_EARLY_FALLING_COUNTER_8822E(x) \ + (((x) & BIT_MASK_VBON_EARLY_FALLING_COUNTER_8822E) \ + << BIT_SHIFT_VBON_EARLY_FALLING_COUNTER_8822E) +#define BITS_VBON_EARLY_FALLING_COUNTER_8822E \ + (BIT_MASK_VBON_EARLY_FALLING_COUNTER_8822E \ + << BIT_SHIFT_VBON_EARLY_FALLING_COUNTER_8822E) +#define BIT_CLEAR_VBON_EARLY_FALLING_COUNTER_8822E(x) \ + ((x) & (~BITS_VBON_EARLY_FALLING_COUNTER_8822E)) +#define BIT_GET_VBON_EARLY_FALLING_COUNTER_8822E(x) \ + (((x) >> BIT_SHIFT_VBON_EARLY_FALLING_COUNTER_8822E) & \ + BIT_MASK_VBON_EARLY_FALLING_COUNTER_8822E) +#define BIT_SET_VBON_EARLY_FALLING_COUNTER_8822E(x, v) \ + (BIT_CLEAR_VBON_EARLY_FALLING_COUNTER_8822E(x) | \ + BIT_VBON_EARLY_FALLING_COUNTER_8822E(v)) + +/* 2 REG_WMAC_PLCP_MONITOR_8822E */ +#define BIT_WMAC_PLCP_TRX_SEL_8822E BIT(31) + +#define BIT_SHIFT_WMAC_PLCP_RDSIG_SEL_8822E 28 +#define BIT_MASK_WMAC_PLCP_RDSIG_SEL_8822E 0x7 +#define BIT_WMAC_PLCP_RDSIG_SEL_8822E(x) \ + (((x) & BIT_MASK_WMAC_PLCP_RDSIG_SEL_8822E) \ + << BIT_SHIFT_WMAC_PLCP_RDSIG_SEL_8822E) +#define BITS_WMAC_PLCP_RDSIG_SEL_8822E \ + (BIT_MASK_WMAC_PLCP_RDSIG_SEL_8822E \ + << BIT_SHIFT_WMAC_PLCP_RDSIG_SEL_8822E) +#define BIT_CLEAR_WMAC_PLCP_RDSIG_SEL_8822E(x) \ + ((x) & (~BITS_WMAC_PLCP_RDSIG_SEL_8822E)) +#define BIT_GET_WMAC_PLCP_RDSIG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_PLCP_RDSIG_SEL_8822E) & \ + BIT_MASK_WMAC_PLCP_RDSIG_SEL_8822E) +#define BIT_SET_WMAC_PLCP_RDSIG_SEL_8822E(x, v) \ + (BIT_CLEAR_WMAC_PLCP_RDSIG_SEL_8822E(x) | \ + BIT_WMAC_PLCP_RDSIG_SEL_8822E(v)) + +#define BIT_SHIFT_WMAC_RATE_IDX_8822E 24 +#define BIT_MASK_WMAC_RATE_IDX_8822E 0xf +#define BIT_WMAC_RATE_IDX_8822E(x) \ + (((x) & BIT_MASK_WMAC_RATE_IDX_8822E) << BIT_SHIFT_WMAC_RATE_IDX_8822E) +#define BITS_WMAC_RATE_IDX_8822E \ + (BIT_MASK_WMAC_RATE_IDX_8822E << BIT_SHIFT_WMAC_RATE_IDX_8822E) +#define BIT_CLEAR_WMAC_RATE_IDX_8822E(x) ((x) & (~BITS_WMAC_RATE_IDX_8822E)) +#define BIT_GET_WMAC_RATE_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_RATE_IDX_8822E) & BIT_MASK_WMAC_RATE_IDX_8822E) +#define BIT_SET_WMAC_RATE_IDX_8822E(x, v) \ + (BIT_CLEAR_WMAC_RATE_IDX_8822E(x) | BIT_WMAC_RATE_IDX_8822E(v)) + +#define BIT_SHIFT_WMAC_PLCP_RDSIG_8822E 0 +#define BIT_MASK_WMAC_PLCP_RDSIG_8822E 0xffffff +#define BIT_WMAC_PLCP_RDSIG_8822E(x) \ + (((x) & BIT_MASK_WMAC_PLCP_RDSIG_8822E) \ + << BIT_SHIFT_WMAC_PLCP_RDSIG_8822E) +#define BITS_WMAC_PLCP_RDSIG_8822E \ + (BIT_MASK_WMAC_PLCP_RDSIG_8822E << BIT_SHIFT_WMAC_PLCP_RDSIG_8822E) +#define BIT_CLEAR_WMAC_PLCP_RDSIG_8822E(x) ((x) & (~BITS_WMAC_PLCP_RDSIG_8822E)) +#define BIT_GET_WMAC_PLCP_RDSIG_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_PLCP_RDSIG_8822E) & \ + BIT_MASK_WMAC_PLCP_RDSIG_8822E) +#define BIT_SET_WMAC_PLCP_RDSIG_8822E(x, v) \ + (BIT_CLEAR_WMAC_PLCP_RDSIG_8822E(x) | BIT_WMAC_PLCP_RDSIG_8822E(v)) + +/* 2 REG_WMAC_PLCP_MONITOR_MUTX_8822E */ +#define BIT_WMAC_MUTX_IDX_8822E BIT(24) + +#define BIT_SHIFT_WMAC_PLCP_RDSIG_8822E 0 +#define BIT_MASK_WMAC_PLCP_RDSIG_8822E 0xffffff +#define BIT_WMAC_PLCP_RDSIG_8822E(x) \ + (((x) & BIT_MASK_WMAC_PLCP_RDSIG_8822E) \ + << BIT_SHIFT_WMAC_PLCP_RDSIG_8822E) +#define BITS_WMAC_PLCP_RDSIG_8822E \ + (BIT_MASK_WMAC_PLCP_RDSIG_8822E << BIT_SHIFT_WMAC_PLCP_RDSIG_8822E) +#define BIT_CLEAR_WMAC_PLCP_RDSIG_8822E(x) ((x) & (~BITS_WMAC_PLCP_RDSIG_8822E)) +#define BIT_GET_WMAC_PLCP_RDSIG_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_PLCP_RDSIG_8822E) & \ + BIT_MASK_WMAC_PLCP_RDSIG_8822E) +#define BIT_SET_WMAC_PLCP_RDSIG_8822E(x, v) \ + (BIT_CLEAR_WMAC_PLCP_RDSIG_8822E(x) | BIT_WMAC_PLCP_RDSIG_8822E(v)) + +/* 2 REG_WMAC_CSIDMA_CFG_8822E */ + +#define BIT_SHIFT_CSI_SEG_SIZE_8822E 16 +#define BIT_MASK_CSI_SEG_SIZE_8822E 0xfff +#define BIT_CSI_SEG_SIZE_8822E(x) \ + (((x) & BIT_MASK_CSI_SEG_SIZE_8822E) << BIT_SHIFT_CSI_SEG_SIZE_8822E) +#define BITS_CSI_SEG_SIZE_8822E \ + (BIT_MASK_CSI_SEG_SIZE_8822E << BIT_SHIFT_CSI_SEG_SIZE_8822E) +#define BIT_CLEAR_CSI_SEG_SIZE_8822E(x) ((x) & (~BITS_CSI_SEG_SIZE_8822E)) +#define BIT_GET_CSI_SEG_SIZE_8822E(x) \ + (((x) >> BIT_SHIFT_CSI_SEG_SIZE_8822E) & BIT_MASK_CSI_SEG_SIZE_8822E) +#define BIT_SET_CSI_SEG_SIZE_8822E(x, v) \ + (BIT_CLEAR_CSI_SEG_SIZE_8822E(x) | BIT_CSI_SEG_SIZE_8822E(v)) + +#define BIT_SHIFT_CSI_START_PAGE_8822E 0 +#define BIT_MASK_CSI_START_PAGE_8822E 0xfff +#define BIT_CSI_START_PAGE_8822E(x) \ + (((x) & BIT_MASK_CSI_START_PAGE_8822E) \ + << BIT_SHIFT_CSI_START_PAGE_8822E) +#define BITS_CSI_START_PAGE_8822E \ + (BIT_MASK_CSI_START_PAGE_8822E << BIT_SHIFT_CSI_START_PAGE_8822E) +#define BIT_CLEAR_CSI_START_PAGE_8822E(x) ((x) & (~BITS_CSI_START_PAGE_8822E)) +#define BIT_GET_CSI_START_PAGE_8822E(x) \ + (((x) >> BIT_SHIFT_CSI_START_PAGE_8822E) & \ + BIT_MASK_CSI_START_PAGE_8822E) +#define BIT_SET_CSI_START_PAGE_8822E(x, v) \ + (BIT_CLEAR_CSI_START_PAGE_8822E(x) | BIT_CSI_START_PAGE_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_0_8822E (TA0 REGISTER) */ + +#define BIT_SHIFT_TA0_V1_8822E 0 +#define BIT_MASK_TA0_V1_8822E 0xffffffffL +#define BIT_TA0_V1_8822E(x) \ + (((x) & BIT_MASK_TA0_V1_8822E) << BIT_SHIFT_TA0_V1_8822E) +#define BITS_TA0_V1_8822E (BIT_MASK_TA0_V1_8822E << BIT_SHIFT_TA0_V1_8822E) +#define BIT_CLEAR_TA0_V1_8822E(x) ((x) & (~BITS_TA0_V1_8822E)) +#define BIT_GET_TA0_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA0_V1_8822E) & BIT_MASK_TA0_V1_8822E) +#define BIT_SET_TA0_V1_8822E(x, v) \ + (BIT_CLEAR_TA0_V1_8822E(x) | BIT_TA0_V1_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_0_H_8822E (TA0 REGISTER) */ + +#define BIT_SHIFT_TA0_H_V1_8822E 0 +#define BIT_MASK_TA0_H_V1_8822E 0xffff +#define BIT_TA0_H_V1_8822E(x) \ + (((x) & BIT_MASK_TA0_H_V1_8822E) << BIT_SHIFT_TA0_H_V1_8822E) +#define BITS_TA0_H_V1_8822E \ + (BIT_MASK_TA0_H_V1_8822E << BIT_SHIFT_TA0_H_V1_8822E) +#define BIT_CLEAR_TA0_H_V1_8822E(x) ((x) & (~BITS_TA0_H_V1_8822E)) +#define BIT_GET_TA0_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA0_H_V1_8822E) & BIT_MASK_TA0_H_V1_8822E) +#define BIT_SET_TA0_H_V1_8822E(x, v) \ + (BIT_CLEAR_TA0_H_V1_8822E(x) | BIT_TA0_H_V1_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_1_8822E (TA1 REGISTER) */ + +#define BIT_SHIFT_TA1_V1_8822E 0 +#define BIT_MASK_TA1_V1_8822E 0xffffffffL +#define BIT_TA1_V1_8822E(x) \ + (((x) & BIT_MASK_TA1_V1_8822E) << BIT_SHIFT_TA1_V1_8822E) +#define BITS_TA1_V1_8822E (BIT_MASK_TA1_V1_8822E << BIT_SHIFT_TA1_V1_8822E) +#define BIT_CLEAR_TA1_V1_8822E(x) ((x) & (~BITS_TA1_V1_8822E)) +#define BIT_GET_TA1_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA1_V1_8822E) & BIT_MASK_TA1_V1_8822E) +#define BIT_SET_TA1_V1_8822E(x, v) \ + (BIT_CLEAR_TA1_V1_8822E(x) | BIT_TA1_V1_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_1_H_8822E (TA1 REGISTER) */ + +#define BIT_SHIFT_TA1_H_V1_8822E 0 +#define BIT_MASK_TA1_H_V1_8822E 0xffff +#define BIT_TA1_H_V1_8822E(x) \ + (((x) & BIT_MASK_TA1_H_V1_8822E) << BIT_SHIFT_TA1_H_V1_8822E) +#define BITS_TA1_H_V1_8822E \ + (BIT_MASK_TA1_H_V1_8822E << BIT_SHIFT_TA1_H_V1_8822E) +#define BIT_CLEAR_TA1_H_V1_8822E(x) ((x) & (~BITS_TA1_H_V1_8822E)) +#define BIT_GET_TA1_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA1_H_V1_8822E) & BIT_MASK_TA1_H_V1_8822E) +#define BIT_SET_TA1_H_V1_8822E(x, v) \ + (BIT_CLEAR_TA1_H_V1_8822E(x) | BIT_TA1_H_V1_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_2_8822E (TA2 REGISTER) */ + +#define BIT_SHIFT_TA2_V1_8822E 0 +#define BIT_MASK_TA2_V1_8822E 0xffffffffL +#define BIT_TA2_V1_8822E(x) \ + (((x) & BIT_MASK_TA2_V1_8822E) << BIT_SHIFT_TA2_V1_8822E) +#define BITS_TA2_V1_8822E (BIT_MASK_TA2_V1_8822E << BIT_SHIFT_TA2_V1_8822E) +#define BIT_CLEAR_TA2_V1_8822E(x) ((x) & (~BITS_TA2_V1_8822E)) +#define BIT_GET_TA2_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA2_V1_8822E) & BIT_MASK_TA2_V1_8822E) +#define BIT_SET_TA2_V1_8822E(x, v) \ + (BIT_CLEAR_TA2_V1_8822E(x) | BIT_TA2_V1_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_2_H_8822E (TA2 REGISTER) */ + +#define BIT_SHIFT_TA2_H_V1_8822E 0 +#define BIT_MASK_TA2_H_V1_8822E 0xffff +#define BIT_TA2_H_V1_8822E(x) \ + (((x) & BIT_MASK_TA2_H_V1_8822E) << BIT_SHIFT_TA2_H_V1_8822E) +#define BITS_TA2_H_V1_8822E \ + (BIT_MASK_TA2_H_V1_8822E << BIT_SHIFT_TA2_H_V1_8822E) +#define BIT_CLEAR_TA2_H_V1_8822E(x) ((x) & (~BITS_TA2_H_V1_8822E)) +#define BIT_GET_TA2_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA2_H_V1_8822E) & BIT_MASK_TA2_H_V1_8822E) +#define BIT_SET_TA2_H_V1_8822E(x, v) \ + (BIT_CLEAR_TA2_H_V1_8822E(x) | BIT_TA2_H_V1_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_3_8822E (TA3 REGISTER) */ + +#define BIT_SHIFT_TA2_V1_8822E 0 +#define BIT_MASK_TA2_V1_8822E 0xffffffffL +#define BIT_TA2_V1_8822E(x) \ + (((x) & BIT_MASK_TA2_V1_8822E) << BIT_SHIFT_TA2_V1_8822E) +#define BITS_TA2_V1_8822E (BIT_MASK_TA2_V1_8822E << BIT_SHIFT_TA2_V1_8822E) +#define BIT_CLEAR_TA2_V1_8822E(x) ((x) & (~BITS_TA2_V1_8822E)) +#define BIT_GET_TA2_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA2_V1_8822E) & BIT_MASK_TA2_V1_8822E) +#define BIT_SET_TA2_V1_8822E(x, v) \ + (BIT_CLEAR_TA2_V1_8822E(x) | BIT_TA2_V1_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_3_H_8822E (TA3 REGISTER) */ + +#define BIT_SHIFT_TA3_H_V1_8822E 0 +#define BIT_MASK_TA3_H_V1_8822E 0xffff +#define BIT_TA3_H_V1_8822E(x) \ + (((x) & BIT_MASK_TA3_H_V1_8822E) << BIT_SHIFT_TA3_H_V1_8822E) +#define BITS_TA3_H_V1_8822E \ + (BIT_MASK_TA3_H_V1_8822E << BIT_SHIFT_TA3_H_V1_8822E) +#define BIT_CLEAR_TA3_H_V1_8822E(x) ((x) & (~BITS_TA3_H_V1_8822E)) +#define BIT_GET_TA3_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA3_H_V1_8822E) & BIT_MASK_TA3_H_V1_8822E) +#define BIT_SET_TA3_H_V1_8822E(x, v) \ + (BIT_CLEAR_TA3_H_V1_8822E(x) | BIT_TA3_H_V1_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_4_8822E (TA4 REGISTER) */ + +#define BIT_SHIFT_TA4_V1_8822E 0 +#define BIT_MASK_TA4_V1_8822E 0xffffffffL +#define BIT_TA4_V1_8822E(x) \ + (((x) & BIT_MASK_TA4_V1_8822E) << BIT_SHIFT_TA4_V1_8822E) +#define BITS_TA4_V1_8822E (BIT_MASK_TA4_V1_8822E << BIT_SHIFT_TA4_V1_8822E) +#define BIT_CLEAR_TA4_V1_8822E(x) ((x) & (~BITS_TA4_V1_8822E)) +#define BIT_GET_TA4_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA4_V1_8822E) & BIT_MASK_TA4_V1_8822E) +#define BIT_SET_TA4_V1_8822E(x, v) \ + (BIT_CLEAR_TA4_V1_8822E(x) | BIT_TA4_V1_8822E(v)) + +/* 2 REG_TRANSMIT_ADDRSS_4_H_8822E (TA4 REGISTER) */ + +#define BIT_SHIFT_TA4_H_V1_8822E 0 +#define BIT_MASK_TA4_H_V1_8822E 0xffff +#define BIT_TA4_H_V1_8822E(x) \ + (((x) & BIT_MASK_TA4_H_V1_8822E) << BIT_SHIFT_TA4_H_V1_8822E) +#define BITS_TA4_H_V1_8822E \ + (BIT_MASK_TA4_H_V1_8822E << BIT_SHIFT_TA4_H_V1_8822E) +#define BIT_CLEAR_TA4_H_V1_8822E(x) ((x) & (~BITS_TA4_H_V1_8822E)) +#define BIT_GET_TA4_H_V1_8822E(x) \ + (((x) >> BIT_SHIFT_TA4_H_V1_8822E) & BIT_MASK_TA4_H_V1_8822E) +#define BIT_SET_TA4_H_V1_8822E(x, v) \ + (BIT_CLEAR_TA4_H_V1_8822E(x) | BIT_TA4_H_V1_8822E(v)) + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_RSVD_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_MACID1_8822E */ + +#define BIT_SHIFT_MACID1_0_8822E 0 +#define BIT_MASK_MACID1_0_8822E 0xffffffffL +#define BIT_MACID1_0_8822E(x) \ + (((x) & BIT_MASK_MACID1_0_8822E) << BIT_SHIFT_MACID1_0_8822E) +#define BITS_MACID1_0_8822E \ + (BIT_MASK_MACID1_0_8822E << BIT_SHIFT_MACID1_0_8822E) +#define BIT_CLEAR_MACID1_0_8822E(x) ((x) & (~BITS_MACID1_0_8822E)) +#define BIT_GET_MACID1_0_8822E(x) \ + (((x) >> BIT_SHIFT_MACID1_0_8822E) & BIT_MASK_MACID1_0_8822E) +#define BIT_SET_MACID1_0_8822E(x, v) \ + (BIT_CLEAR_MACID1_0_8822E(x) | BIT_MACID1_0_8822E(v)) + +/* 2 REG_MACID1_1_8822E */ + +#define BIT_SHIFT_MACID1_1_8822E 0 +#define BIT_MASK_MACID1_1_8822E 0xffff +#define BIT_MACID1_1_8822E(x) \ + (((x) & BIT_MASK_MACID1_1_8822E) << BIT_SHIFT_MACID1_1_8822E) +#define BITS_MACID1_1_8822E \ + (BIT_MASK_MACID1_1_8822E << BIT_SHIFT_MACID1_1_8822E) +#define BIT_CLEAR_MACID1_1_8822E(x) ((x) & (~BITS_MACID1_1_8822E)) +#define BIT_GET_MACID1_1_8822E(x) \ + (((x) >> BIT_SHIFT_MACID1_1_8822E) & BIT_MASK_MACID1_1_8822E) +#define BIT_SET_MACID1_1_8822E(x, v) \ + (BIT_CLEAR_MACID1_1_8822E(x) | BIT_MACID1_1_8822E(v)) + +/* 2 REG_BSSID1_8822E */ + +#define BIT_SHIFT_BSSID1_0_8822E 0 +#define BIT_MASK_BSSID1_0_8822E 0xffffffffL +#define BIT_BSSID1_0_8822E(x) \ + (((x) & BIT_MASK_BSSID1_0_8822E) << BIT_SHIFT_BSSID1_0_8822E) +#define BITS_BSSID1_0_8822E \ + (BIT_MASK_BSSID1_0_8822E << BIT_SHIFT_BSSID1_0_8822E) +#define BIT_CLEAR_BSSID1_0_8822E(x) ((x) & (~BITS_BSSID1_0_8822E)) +#define BIT_GET_BSSID1_0_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID1_0_8822E) & BIT_MASK_BSSID1_0_8822E) +#define BIT_SET_BSSID1_0_8822E(x, v) \ + (BIT_CLEAR_BSSID1_0_8822E(x) | BIT_BSSID1_0_8822E(v)) + +/* 2 REG_BSSID1_1_8822E */ + +#define BIT_SHIFT_BSSID1_1_8822E 0 +#define BIT_MASK_BSSID1_1_8822E 0xffff +#define BIT_BSSID1_1_8822E(x) \ + (((x) & BIT_MASK_BSSID1_1_8822E) << BIT_SHIFT_BSSID1_1_8822E) +#define BITS_BSSID1_1_8822E \ + (BIT_MASK_BSSID1_1_8822E << BIT_SHIFT_BSSID1_1_8822E) +#define BIT_CLEAR_BSSID1_1_8822E(x) ((x) & (~BITS_BSSID1_1_8822E)) +#define BIT_GET_BSSID1_1_8822E(x) \ + (((x) >> BIT_SHIFT_BSSID1_1_8822E) & BIT_MASK_BSSID1_1_8822E) +#define BIT_SET_BSSID1_1_8822E(x, v) \ + (BIT_CLEAR_BSSID1_1_8822E(x) | BIT_BSSID1_1_8822E(v)) + +/* 2 REG_BCN_PSR_RPT1_8822E */ + +#define BIT_SHIFT_DTIM_CNT1_8822E 24 +#define BIT_MASK_DTIM_CNT1_8822E 0xff +#define BIT_DTIM_CNT1_8822E(x) \ + (((x) & BIT_MASK_DTIM_CNT1_8822E) << BIT_SHIFT_DTIM_CNT1_8822E) +#define BITS_DTIM_CNT1_8822E \ + (BIT_MASK_DTIM_CNT1_8822E << BIT_SHIFT_DTIM_CNT1_8822E) +#define BIT_CLEAR_DTIM_CNT1_8822E(x) ((x) & (~BITS_DTIM_CNT1_8822E)) +#define BIT_GET_DTIM_CNT1_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_CNT1_8822E) & BIT_MASK_DTIM_CNT1_8822E) +#define BIT_SET_DTIM_CNT1_8822E(x, v) \ + (BIT_CLEAR_DTIM_CNT1_8822E(x) | BIT_DTIM_CNT1_8822E(v)) + +#define BIT_SHIFT_DTIM_PERIOD1_8822E 16 +#define BIT_MASK_DTIM_PERIOD1_8822E 0xff +#define BIT_DTIM_PERIOD1_8822E(x) \ + (((x) & BIT_MASK_DTIM_PERIOD1_8822E) << BIT_SHIFT_DTIM_PERIOD1_8822E) +#define BITS_DTIM_PERIOD1_8822E \ + (BIT_MASK_DTIM_PERIOD1_8822E << BIT_SHIFT_DTIM_PERIOD1_8822E) +#define BIT_CLEAR_DTIM_PERIOD1_8822E(x) ((x) & (~BITS_DTIM_PERIOD1_8822E)) +#define BIT_GET_DTIM_PERIOD1_8822E(x) \ + (((x) >> BIT_SHIFT_DTIM_PERIOD1_8822E) & BIT_MASK_DTIM_PERIOD1_8822E) +#define BIT_SET_DTIM_PERIOD1_8822E(x, v) \ + (BIT_CLEAR_DTIM_PERIOD1_8822E(x) | BIT_DTIM_PERIOD1_8822E(v)) + +#define BIT_DTIM1_8822E BIT(15) +#define BIT_TIM1_8822E BIT(14) +#define BIT_BCN_VALID_V2_8822E BIT(13) + +#define BIT_SHIFT_PS_AID_1_8822E 0 +#define BIT_MASK_PS_AID_1_8822E 0x7ff +#define BIT_PS_AID_1_8822E(x) \ + (((x) & BIT_MASK_PS_AID_1_8822E) << BIT_SHIFT_PS_AID_1_8822E) +#define BITS_PS_AID_1_8822E \ + (BIT_MASK_PS_AID_1_8822E << BIT_SHIFT_PS_AID_1_8822E) +#define BIT_CLEAR_PS_AID_1_8822E(x) ((x) & (~BITS_PS_AID_1_8822E)) +#define BIT_GET_PS_AID_1_8822E(x) \ + (((x) >> BIT_SHIFT_PS_AID_1_8822E) & BIT_MASK_PS_AID_1_8822E) +#define BIT_SET_PS_AID_1_8822E(x, v) \ + (BIT_CLEAR_PS_AID_1_8822E(x) | BIT_PS_AID_1_8822E(v)) + +/* 2 REG_ASSOCIATED_BFMEE_SEL_8822E */ +#define BIT_TXUSER_ID1_8822E BIT(25) + +#define BIT_SHIFT_AID1_8822E 16 +#define BIT_MASK_AID1_8822E 0x1ff +#define BIT_AID1_8822E(x) (((x) & BIT_MASK_AID1_8822E) << BIT_SHIFT_AID1_8822E) +#define BITS_AID1_8822E (BIT_MASK_AID1_8822E << BIT_SHIFT_AID1_8822E) +#define BIT_CLEAR_AID1_8822E(x) ((x) & (~BITS_AID1_8822E)) +#define BIT_GET_AID1_8822E(x) \ + (((x) >> BIT_SHIFT_AID1_8822E) & BIT_MASK_AID1_8822E) +#define BIT_SET_AID1_8822E(x, v) (BIT_CLEAR_AID1_8822E(x) | BIT_AID1_8822E(v)) + +#define BIT_TXUSER_ID0_8822E BIT(9) + +#define BIT_SHIFT_AID0_8822E 0 +#define BIT_MASK_AID0_8822E 0x1ff +#define BIT_AID0_8822E(x) (((x) & BIT_MASK_AID0_8822E) << BIT_SHIFT_AID0_8822E) +#define BITS_AID0_8822E (BIT_MASK_AID0_8822E << BIT_SHIFT_AID0_8822E) +#define BIT_CLEAR_AID0_8822E(x) ((x) & (~BITS_AID0_8822E)) +#define BIT_GET_AID0_8822E(x) \ + (((x) >> BIT_SHIFT_AID0_8822E) & BIT_MASK_AID0_8822E) +#define BIT_SET_AID0_8822E(x, v) (BIT_CLEAR_AID0_8822E(x) | BIT_AID0_8822E(v)) + +/* 2 REG_SND_PTCL_CTRL_8822E */ + +#define BIT_SHIFT_NDP_RX_STANDBY_TIMER_8822E 24 +#define BIT_MASK_NDP_RX_STANDBY_TIMER_8822E 0xff +#define BIT_NDP_RX_STANDBY_TIMER_8822E(x) \ + (((x) & BIT_MASK_NDP_RX_STANDBY_TIMER_8822E) \ + << BIT_SHIFT_NDP_RX_STANDBY_TIMER_8822E) +#define BITS_NDP_RX_STANDBY_TIMER_8822E \ + (BIT_MASK_NDP_RX_STANDBY_TIMER_8822E \ + << BIT_SHIFT_NDP_RX_STANDBY_TIMER_8822E) +#define BIT_CLEAR_NDP_RX_STANDBY_TIMER_8822E(x) \ + ((x) & (~BITS_NDP_RX_STANDBY_TIMER_8822E)) +#define BIT_GET_NDP_RX_STANDBY_TIMER_8822E(x) \ + (((x) >> BIT_SHIFT_NDP_RX_STANDBY_TIMER_8822E) & \ + BIT_MASK_NDP_RX_STANDBY_TIMER_8822E) +#define BIT_SET_NDP_RX_STANDBY_TIMER_8822E(x, v) \ + (BIT_CLEAR_NDP_RX_STANDBY_TIMER_8822E(x) | \ + BIT_NDP_RX_STANDBY_TIMER_8822E(v)) + +#define BIT_R_WMAC_CHK_RPTPOLL_A2_DIS_8822E BIT(23) +#define BIT_R_WMAC_CHK_UCNDPA_A2_DIS_8822E BIT(22) + +#define BIT_SHIFT_CSI_RPT_OFFSET_HT_V1_8822E 16 +#define BIT_MASK_CSI_RPT_OFFSET_HT_V1_8822E 0x3f +#define BIT_CSI_RPT_OFFSET_HT_V1_8822E(x) \ + (((x) & BIT_MASK_CSI_RPT_OFFSET_HT_V1_8822E) \ + << BIT_SHIFT_CSI_RPT_OFFSET_HT_V1_8822E) +#define BITS_CSI_RPT_OFFSET_HT_V1_8822E \ + (BIT_MASK_CSI_RPT_OFFSET_HT_V1_8822E \ + << BIT_SHIFT_CSI_RPT_OFFSET_HT_V1_8822E) +#define BIT_CLEAR_CSI_RPT_OFFSET_HT_V1_8822E(x) \ + ((x) & (~BITS_CSI_RPT_OFFSET_HT_V1_8822E)) +#define BIT_GET_CSI_RPT_OFFSET_HT_V1_8822E(x) \ + (((x) >> BIT_SHIFT_CSI_RPT_OFFSET_HT_V1_8822E) & \ + BIT_MASK_CSI_RPT_OFFSET_HT_V1_8822E) +#define BIT_SET_CSI_RPT_OFFSET_HT_V1_8822E(x, v) \ + (BIT_CLEAR_CSI_RPT_OFFSET_HT_V1_8822E(x) | \ + BIT_CSI_RPT_OFFSET_HT_V1_8822E(v)) + +#define BIT_R_WMAC_OFFSET_RPTPOLL_EN_8822E BIT(15) +#define BIT_R_WMAC_CSI_CHKSUM_DIS_8822E BIT(14) + +#define BIT_SHIFT_R_WMAC_VHT_CATEGORY_V1_8822E 8 +#define BIT_MASK_R_WMAC_VHT_CATEGORY_V1_8822E 0x3f +#define BIT_R_WMAC_VHT_CATEGORY_V1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_VHT_CATEGORY_V1_8822E) \ + << BIT_SHIFT_R_WMAC_VHT_CATEGORY_V1_8822E) +#define BITS_R_WMAC_VHT_CATEGORY_V1_8822E \ + (BIT_MASK_R_WMAC_VHT_CATEGORY_V1_8822E \ + << BIT_SHIFT_R_WMAC_VHT_CATEGORY_V1_8822E) +#define BIT_CLEAR_R_WMAC_VHT_CATEGORY_V1_8822E(x) \ + ((x) & (~BITS_R_WMAC_VHT_CATEGORY_V1_8822E)) +#define BIT_GET_R_WMAC_VHT_CATEGORY_V1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_VHT_CATEGORY_V1_8822E) & \ + BIT_MASK_R_WMAC_VHT_CATEGORY_V1_8822E) +#define BIT_SET_R_WMAC_VHT_CATEGORY_V1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_VHT_CATEGORY_V1_8822E(x) | \ + BIT_R_WMAC_VHT_CATEGORY_V1_8822E(v)) + +#define BIT_R_WMAC_USE_NSTS_8822E BIT(7) +#define BIT_R_DISABLE_CHECK_VHTSIGB_CRC_8822E BIT(6) +#define BIT_R_DISABLE_CHECK_VHTSIGA_CRC_8822E BIT(5) +#define BIT_R_WMAC_BFPARAM_SEL_8822E BIT(4) +#define BIT_R_WMAC_CSISEQ_SEL_8822E BIT(3) +#define BIT_R_WMAC_CSI_WITHHTC_EN_8822E BIT(2) +#define BIT_R_WMAC_HT_NDPA_EN_8822E BIT(1) +#define BIT_R_WMAC_VHT_NDPA_EN_8822E BIT(0) + +/* 2 REG_RX_CSI_RPT_INFO_8822E */ +#define BIT_WRITE_ENABLE_8822E BIT(31) +#define BIT_WMAC_CHECK_SOUNDING_SEQ_8822E BIT(30) + +#define BIT_SHIFT_VHTHT_MIMO_CTRL_FIELD_8822E 1 +#define BIT_MASK_VHTHT_MIMO_CTRL_FIELD_8822E 0xffffff +#define BIT_VHTHT_MIMO_CTRL_FIELD_8822E(x) \ + (((x) & BIT_MASK_VHTHT_MIMO_CTRL_FIELD_8822E) \ + << BIT_SHIFT_VHTHT_MIMO_CTRL_FIELD_8822E) +#define BITS_VHTHT_MIMO_CTRL_FIELD_8822E \ + (BIT_MASK_VHTHT_MIMO_CTRL_FIELD_8822E \ + << BIT_SHIFT_VHTHT_MIMO_CTRL_FIELD_8822E) +#define BIT_CLEAR_VHTHT_MIMO_CTRL_FIELD_8822E(x) \ + ((x) & (~BITS_VHTHT_MIMO_CTRL_FIELD_8822E)) +#define BIT_GET_VHTHT_MIMO_CTRL_FIELD_8822E(x) \ + (((x) >> BIT_SHIFT_VHTHT_MIMO_CTRL_FIELD_8822E) & \ + BIT_MASK_VHTHT_MIMO_CTRL_FIELD_8822E) +#define BIT_SET_VHTHT_MIMO_CTRL_FIELD_8822E(x, v) \ + (BIT_CLEAR_VHTHT_MIMO_CTRL_FIELD_8822E(x) | \ + BIT_VHTHT_MIMO_CTRL_FIELD_8822E(v)) + +#define BIT_CSI_INTRRUPT_STATUS_8822E BIT(0) + +/* 2 REG_NS_ARP_CTRL_8822E */ +#define BIT_R_WMAC_NSARP_RSPEN_8822E BIT(15) +#define BIT_R_WMAC_NSARP_RARP_8822E BIT(9) +#define BIT_R_WMAC_NSARP_RIPV6_8822E BIT(8) + +#define BIT_SHIFT_R_WMAC_NSARP_MODEN_8822E 6 +#define BIT_MASK_R_WMAC_NSARP_MODEN_8822E 0x3 +#define BIT_R_WMAC_NSARP_MODEN_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_NSARP_MODEN_8822E) \ + << BIT_SHIFT_R_WMAC_NSARP_MODEN_8822E) +#define BITS_R_WMAC_NSARP_MODEN_8822E \ + (BIT_MASK_R_WMAC_NSARP_MODEN_8822E \ + << BIT_SHIFT_R_WMAC_NSARP_MODEN_8822E) +#define BIT_CLEAR_R_WMAC_NSARP_MODEN_8822E(x) \ + ((x) & (~BITS_R_WMAC_NSARP_MODEN_8822E)) +#define BIT_GET_R_WMAC_NSARP_MODEN_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_NSARP_MODEN_8822E) & \ + BIT_MASK_R_WMAC_NSARP_MODEN_8822E) +#define BIT_SET_R_WMAC_NSARP_MODEN_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_NSARP_MODEN_8822E(x) | \ + BIT_R_WMAC_NSARP_MODEN_8822E(v)) + +#define BIT_SHIFT_R_WMAC_NSARP_RSPFTP_8822E 4 +#define BIT_MASK_R_WMAC_NSARP_RSPFTP_8822E 0x3 +#define BIT_R_WMAC_NSARP_RSPFTP_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_NSARP_RSPFTP_8822E) \ + << BIT_SHIFT_R_WMAC_NSARP_RSPFTP_8822E) +#define BITS_R_WMAC_NSARP_RSPFTP_8822E \ + (BIT_MASK_R_WMAC_NSARP_RSPFTP_8822E \ + << BIT_SHIFT_R_WMAC_NSARP_RSPFTP_8822E) +#define BIT_CLEAR_R_WMAC_NSARP_RSPFTP_8822E(x) \ + ((x) & (~BITS_R_WMAC_NSARP_RSPFTP_8822E)) +#define BIT_GET_R_WMAC_NSARP_RSPFTP_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_NSARP_RSPFTP_8822E) & \ + BIT_MASK_R_WMAC_NSARP_RSPFTP_8822E) +#define BIT_SET_R_WMAC_NSARP_RSPFTP_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_NSARP_RSPFTP_8822E(x) | \ + BIT_R_WMAC_NSARP_RSPFTP_8822E(v)) + +#define BIT_SHIFT_R_WMAC_NSARP_RSPSEC_8822E 0 +#define BIT_MASK_R_WMAC_NSARP_RSPSEC_8822E 0xf +#define BIT_R_WMAC_NSARP_RSPSEC_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_NSARP_RSPSEC_8822E) \ + << BIT_SHIFT_R_WMAC_NSARP_RSPSEC_8822E) +#define BITS_R_WMAC_NSARP_RSPSEC_8822E \ + (BIT_MASK_R_WMAC_NSARP_RSPSEC_8822E \ + << BIT_SHIFT_R_WMAC_NSARP_RSPSEC_8822E) +#define BIT_CLEAR_R_WMAC_NSARP_RSPSEC_8822E(x) \ + ((x) & (~BITS_R_WMAC_NSARP_RSPSEC_8822E)) +#define BIT_GET_R_WMAC_NSARP_RSPSEC_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_NSARP_RSPSEC_8822E) & \ + BIT_MASK_R_WMAC_NSARP_RSPSEC_8822E) +#define BIT_SET_R_WMAC_NSARP_RSPSEC_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_NSARP_RSPSEC_8822E(x) | \ + BIT_R_WMAC_NSARP_RSPSEC_8822E(v)) + +/* 2 REG_NS_ARP_INFO_8822E */ +#define BIT_REQ_IS_MCNS_8822E BIT(23) +#define BIT_REQ_IS_UCNS_8822E BIT(22) +#define BIT_REQ_IS_USNS_8822E BIT(21) +#define BIT_REQ_IS_ARP_8822E BIT(20) +#define BIT_EXPRSP_MH_WITHQC_8822E BIT(19) + +#define BIT_SHIFT_EXPRSP_SECTYPE_8822E 16 +#define BIT_MASK_EXPRSP_SECTYPE_8822E 0x7 +#define BIT_EXPRSP_SECTYPE_8822E(x) \ + (((x) & BIT_MASK_EXPRSP_SECTYPE_8822E) \ + << BIT_SHIFT_EXPRSP_SECTYPE_8822E) +#define BITS_EXPRSP_SECTYPE_8822E \ + (BIT_MASK_EXPRSP_SECTYPE_8822E << BIT_SHIFT_EXPRSP_SECTYPE_8822E) +#define BIT_CLEAR_EXPRSP_SECTYPE_8822E(x) ((x) & (~BITS_EXPRSP_SECTYPE_8822E)) +#define BIT_GET_EXPRSP_SECTYPE_8822E(x) \ + (((x) >> BIT_SHIFT_EXPRSP_SECTYPE_8822E) & \ + BIT_MASK_EXPRSP_SECTYPE_8822E) +#define BIT_SET_EXPRSP_SECTYPE_8822E(x, v) \ + (BIT_CLEAR_EXPRSP_SECTYPE_8822E(x) | BIT_EXPRSP_SECTYPE_8822E(v)) + +#define BIT_SHIFT_EXPRSP_CHKSM_7_TO_0_8822E 8 +#define BIT_MASK_EXPRSP_CHKSM_7_TO_0_8822E 0xff +#define BIT_EXPRSP_CHKSM_7_TO_0_8822E(x) \ + (((x) & BIT_MASK_EXPRSP_CHKSM_7_TO_0_8822E) \ + << BIT_SHIFT_EXPRSP_CHKSM_7_TO_0_8822E) +#define BITS_EXPRSP_CHKSM_7_TO_0_8822E \ + (BIT_MASK_EXPRSP_CHKSM_7_TO_0_8822E \ + << BIT_SHIFT_EXPRSP_CHKSM_7_TO_0_8822E) +#define BIT_CLEAR_EXPRSP_CHKSM_7_TO_0_8822E(x) \ + ((x) & (~BITS_EXPRSP_CHKSM_7_TO_0_8822E)) +#define BIT_GET_EXPRSP_CHKSM_7_TO_0_8822E(x) \ + (((x) >> BIT_SHIFT_EXPRSP_CHKSM_7_TO_0_8822E) & \ + BIT_MASK_EXPRSP_CHKSM_7_TO_0_8822E) +#define BIT_SET_EXPRSP_CHKSM_7_TO_0_8822E(x, v) \ + (BIT_CLEAR_EXPRSP_CHKSM_7_TO_0_8822E(x) | \ + BIT_EXPRSP_CHKSM_7_TO_0_8822E(v)) + +#define BIT_SHIFT_EXPRSP_CHKSM_15_TO_8_8822E 0 +#define BIT_MASK_EXPRSP_CHKSM_15_TO_8_8822E 0xff +#define BIT_EXPRSP_CHKSM_15_TO_8_8822E(x) \ + (((x) & BIT_MASK_EXPRSP_CHKSM_15_TO_8_8822E) \ + << BIT_SHIFT_EXPRSP_CHKSM_15_TO_8_8822E) +#define BITS_EXPRSP_CHKSM_15_TO_8_8822E \ + (BIT_MASK_EXPRSP_CHKSM_15_TO_8_8822E \ + << BIT_SHIFT_EXPRSP_CHKSM_15_TO_8_8822E) +#define BIT_CLEAR_EXPRSP_CHKSM_15_TO_8_8822E(x) \ + ((x) & (~BITS_EXPRSP_CHKSM_15_TO_8_8822E)) +#define BIT_GET_EXPRSP_CHKSM_15_TO_8_8822E(x) \ + (((x) >> BIT_SHIFT_EXPRSP_CHKSM_15_TO_8_8822E) & \ + BIT_MASK_EXPRSP_CHKSM_15_TO_8_8822E) +#define BIT_SET_EXPRSP_CHKSM_15_TO_8_8822E(x, v) \ + (BIT_CLEAR_EXPRSP_CHKSM_15_TO_8_8822E(x) | \ + BIT_EXPRSP_CHKSM_15_TO_8_8822E(v)) + +/* 2 REG_BEAMFORMING_INFO_NSARP_V1_8822E */ + +#define BIT_SHIFT_WMAC_ARPIP_8822E 0 +#define BIT_MASK_WMAC_ARPIP_8822E 0xffffffffL +#define BIT_WMAC_ARPIP_8822E(x) \ + (((x) & BIT_MASK_WMAC_ARPIP_8822E) << BIT_SHIFT_WMAC_ARPIP_8822E) +#define BITS_WMAC_ARPIP_8822E \ + (BIT_MASK_WMAC_ARPIP_8822E << BIT_SHIFT_WMAC_ARPIP_8822E) +#define BIT_CLEAR_WMAC_ARPIP_8822E(x) ((x) & (~BITS_WMAC_ARPIP_8822E)) +#define BIT_GET_WMAC_ARPIP_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_ARPIP_8822E) & BIT_MASK_WMAC_ARPIP_8822E) +#define BIT_SET_WMAC_ARPIP_8822E(x, v) \ + (BIT_CLEAR_WMAC_ARPIP_8822E(x) | BIT_WMAC_ARPIP_8822E(v)) + +/* 2 REG_BEAMFORMING_INFO_NSARP_8822E */ + +#define BIT_SHIFT_UPD_BFMEE_USERID_8822E 13 +#define BIT_MASK_UPD_BFMEE_USERID_8822E 0x7 +#define BIT_UPD_BFMEE_USERID_8822E(x) \ + (((x) & BIT_MASK_UPD_BFMEE_USERID_8822E) \ + << BIT_SHIFT_UPD_BFMEE_USERID_8822E) +#define BITS_UPD_BFMEE_USERID_8822E \ + (BIT_MASK_UPD_BFMEE_USERID_8822E << BIT_SHIFT_UPD_BFMEE_USERID_8822E) +#define BIT_CLEAR_UPD_BFMEE_USERID_8822E(x) \ + ((x) & (~BITS_UPD_BFMEE_USERID_8822E)) +#define BIT_GET_UPD_BFMEE_USERID_8822E(x) \ + (((x) >> BIT_SHIFT_UPD_BFMEE_USERID_8822E) & \ + BIT_MASK_UPD_BFMEE_USERID_8822E) +#define BIT_SET_UPD_BFMEE_USERID_8822E(x, v) \ + (BIT_CLEAR_UPD_BFMEE_USERID_8822E(x) | BIT_UPD_BFMEE_USERID_8822E(v)) + +#define BIT_UPD_BFMEE_FBTP_8822E BIT(12) + +#define BIT_SHIFT_UPD_BFMEE_BW_8822E 0 +#define BIT_MASK_UPD_BFMEE_BW_8822E 0xfff +#define BIT_UPD_BFMEE_BW_8822E(x) \ + (((x) & BIT_MASK_UPD_BFMEE_BW_8822E) << BIT_SHIFT_UPD_BFMEE_BW_8822E) +#define BITS_UPD_BFMEE_BW_8822E \ + (BIT_MASK_UPD_BFMEE_BW_8822E << BIT_SHIFT_UPD_BFMEE_BW_8822E) +#define BIT_CLEAR_UPD_BFMEE_BW_8822E(x) ((x) & (~BITS_UPD_BFMEE_BW_8822E)) +#define BIT_GET_UPD_BFMEE_BW_8822E(x) \ + (((x) >> BIT_SHIFT_UPD_BFMEE_BW_8822E) & BIT_MASK_UPD_BFMEE_BW_8822E) +#define BIT_SET_UPD_BFMEE_BW_8822E(x, v) \ + (BIT_CLEAR_UPD_BFMEE_BW_8822E(x) | BIT_UPD_BFMEE_BW_8822E(v)) + +#define BIT_SHIFT_UPD_BFMEE_CB_8822E 8 +#define BIT_MASK_UPD_BFMEE_CB_8822E 0x3 +#define BIT_UPD_BFMEE_CB_8822E(x) \ + (((x) & BIT_MASK_UPD_BFMEE_CB_8822E) << BIT_SHIFT_UPD_BFMEE_CB_8822E) +#define BITS_UPD_BFMEE_CB_8822E \ + (BIT_MASK_UPD_BFMEE_CB_8822E << BIT_SHIFT_UPD_BFMEE_CB_8822E) +#define BIT_CLEAR_UPD_BFMEE_CB_8822E(x) ((x) & (~BITS_UPD_BFMEE_CB_8822E)) +#define BIT_GET_UPD_BFMEE_CB_8822E(x) \ + (((x) >> BIT_SHIFT_UPD_BFMEE_CB_8822E) & BIT_MASK_UPD_BFMEE_CB_8822E) +#define BIT_SET_UPD_BFMEE_CB_8822E(x, v) \ + (BIT_CLEAR_UPD_BFMEE_CB_8822E(x) | BIT_UPD_BFMEE_CB_8822E(v)) + +#define BIT_SHIFT_UPD_BFMEE_NG_8822E 6 +#define BIT_MASK_UPD_BFMEE_NG_8822E 0x3 +#define BIT_UPD_BFMEE_NG_8822E(x) \ + (((x) & BIT_MASK_UPD_BFMEE_NG_8822E) << BIT_SHIFT_UPD_BFMEE_NG_8822E) +#define BITS_UPD_BFMEE_NG_8822E \ + (BIT_MASK_UPD_BFMEE_NG_8822E << BIT_SHIFT_UPD_BFMEE_NG_8822E) +#define BIT_CLEAR_UPD_BFMEE_NG_8822E(x) ((x) & (~BITS_UPD_BFMEE_NG_8822E)) +#define BIT_GET_UPD_BFMEE_NG_8822E(x) \ + (((x) >> BIT_SHIFT_UPD_BFMEE_NG_8822E) & BIT_MASK_UPD_BFMEE_NG_8822E) +#define BIT_SET_UPD_BFMEE_NG_8822E(x, v) \ + (BIT_CLEAR_UPD_BFMEE_NG_8822E(x) | BIT_UPD_BFMEE_NG_8822E(v)) + +#define BIT_SHIFT_UPD_BFMEE_NR_8822E 3 +#define BIT_MASK_UPD_BFMEE_NR_8822E 0x7 +#define BIT_UPD_BFMEE_NR_8822E(x) \ + (((x) & BIT_MASK_UPD_BFMEE_NR_8822E) << BIT_SHIFT_UPD_BFMEE_NR_8822E) +#define BITS_UPD_BFMEE_NR_8822E \ + (BIT_MASK_UPD_BFMEE_NR_8822E << BIT_SHIFT_UPD_BFMEE_NR_8822E) +#define BIT_CLEAR_UPD_BFMEE_NR_8822E(x) ((x) & (~BITS_UPD_BFMEE_NR_8822E)) +#define BIT_GET_UPD_BFMEE_NR_8822E(x) \ + (((x) >> BIT_SHIFT_UPD_BFMEE_NR_8822E) & BIT_MASK_UPD_BFMEE_NR_8822E) +#define BIT_SET_UPD_BFMEE_NR_8822E(x, v) \ + (BIT_CLEAR_UPD_BFMEE_NR_8822E(x) | BIT_UPD_BFMEE_NR_8822E(v)) + +#define BIT_SHIFT_UPD_BFMEE_NC_8822E 0 +#define BIT_MASK_UPD_BFMEE_NC_8822E 0x7 +#define BIT_UPD_BFMEE_NC_8822E(x) \ + (((x) & BIT_MASK_UPD_BFMEE_NC_8822E) << BIT_SHIFT_UPD_BFMEE_NC_8822E) +#define BITS_UPD_BFMEE_NC_8822E \ + (BIT_MASK_UPD_BFMEE_NC_8822E << BIT_SHIFT_UPD_BFMEE_NC_8822E) +#define BIT_CLEAR_UPD_BFMEE_NC_8822E(x) ((x) & (~BITS_UPD_BFMEE_NC_8822E)) +#define BIT_GET_UPD_BFMEE_NC_8822E(x) \ + (((x) >> BIT_SHIFT_UPD_BFMEE_NC_8822E) & BIT_MASK_UPD_BFMEE_NC_8822E) +#define BIT_SET_UPD_BFMEE_NC_8822E(x, v) \ + (BIT_CLEAR_UPD_BFMEE_NC_8822E(x) | BIT_UPD_BFMEE_NC_8822E(v)) + +/* 2 REG_IPV6_8822E */ + +#define BIT_SHIFT_R_WMAC_IPV6_MYIPAD_0_8822E 0 +#define BIT_MASK_R_WMAC_IPV6_MYIPAD_0_8822E 0xffffffffL +#define BIT_R_WMAC_IPV6_MYIPAD_0_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_IPV6_MYIPAD_0_8822E) \ + << BIT_SHIFT_R_WMAC_IPV6_MYIPAD_0_8822E) +#define BITS_R_WMAC_IPV6_MYIPAD_0_8822E \ + (BIT_MASK_R_WMAC_IPV6_MYIPAD_0_8822E \ + << BIT_SHIFT_R_WMAC_IPV6_MYIPAD_0_8822E) +#define BIT_CLEAR_R_WMAC_IPV6_MYIPAD_0_8822E(x) \ + ((x) & (~BITS_R_WMAC_IPV6_MYIPAD_0_8822E)) +#define BIT_GET_R_WMAC_IPV6_MYIPAD_0_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_IPV6_MYIPAD_0_8822E) & \ + BIT_MASK_R_WMAC_IPV6_MYIPAD_0_8822E) +#define BIT_SET_R_WMAC_IPV6_MYIPAD_0_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_IPV6_MYIPAD_0_8822E(x) | \ + BIT_R_WMAC_IPV6_MYIPAD_0_8822E(v)) + +/* 2 REG_IPV6_1_8822E */ + +#define BIT_SHIFT_R_WMAC_IPV6_MYIPAD_1_8822E 0 +#define BIT_MASK_R_WMAC_IPV6_MYIPAD_1_8822E 0xffffffffL +#define BIT_R_WMAC_IPV6_MYIPAD_1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_IPV6_MYIPAD_1_8822E) \ + << BIT_SHIFT_R_WMAC_IPV6_MYIPAD_1_8822E) +#define BITS_R_WMAC_IPV6_MYIPAD_1_8822E \ + (BIT_MASK_R_WMAC_IPV6_MYIPAD_1_8822E \ + << BIT_SHIFT_R_WMAC_IPV6_MYIPAD_1_8822E) +#define BIT_CLEAR_R_WMAC_IPV6_MYIPAD_1_8822E(x) \ + ((x) & (~BITS_R_WMAC_IPV6_MYIPAD_1_8822E)) +#define BIT_GET_R_WMAC_IPV6_MYIPAD_1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_IPV6_MYIPAD_1_8822E) & \ + BIT_MASK_R_WMAC_IPV6_MYIPAD_1_8822E) +#define BIT_SET_R_WMAC_IPV6_MYIPAD_1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_IPV6_MYIPAD_1_8822E(x) | \ + BIT_R_WMAC_IPV6_MYIPAD_1_8822E(v)) + +/* 2 REG_IPV6_2_8822E */ + +#define BIT_SHIFT_R_WMAC_IPV6_MYIPAD_2_8822E 0 +#define BIT_MASK_R_WMAC_IPV6_MYIPAD_2_8822E 0xffffffffL +#define BIT_R_WMAC_IPV6_MYIPAD_2_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_IPV6_MYIPAD_2_8822E) \ + << BIT_SHIFT_R_WMAC_IPV6_MYIPAD_2_8822E) +#define BITS_R_WMAC_IPV6_MYIPAD_2_8822E \ + (BIT_MASK_R_WMAC_IPV6_MYIPAD_2_8822E \ + << BIT_SHIFT_R_WMAC_IPV6_MYIPAD_2_8822E) +#define BIT_CLEAR_R_WMAC_IPV6_MYIPAD_2_8822E(x) \ + ((x) & (~BITS_R_WMAC_IPV6_MYIPAD_2_8822E)) +#define BIT_GET_R_WMAC_IPV6_MYIPAD_2_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_IPV6_MYIPAD_2_8822E) & \ + BIT_MASK_R_WMAC_IPV6_MYIPAD_2_8822E) +#define BIT_SET_R_WMAC_IPV6_MYIPAD_2_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_IPV6_MYIPAD_2_8822E(x) | \ + BIT_R_WMAC_IPV6_MYIPAD_2_8822E(v)) + +/* 2 REG_IPV6_3_8822E */ + +#define BIT_SHIFT_R_WMAC_IPV6_MYIPAD_3_8822E 0 +#define BIT_MASK_R_WMAC_IPV6_MYIPAD_3_8822E 0xffffffffL +#define BIT_R_WMAC_IPV6_MYIPAD_3_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_IPV6_MYIPAD_3_8822E) \ + << BIT_SHIFT_R_WMAC_IPV6_MYIPAD_3_8822E) +#define BITS_R_WMAC_IPV6_MYIPAD_3_8822E \ + (BIT_MASK_R_WMAC_IPV6_MYIPAD_3_8822E \ + << BIT_SHIFT_R_WMAC_IPV6_MYIPAD_3_8822E) +#define BIT_CLEAR_R_WMAC_IPV6_MYIPAD_3_8822E(x) \ + ((x) & (~BITS_R_WMAC_IPV6_MYIPAD_3_8822E)) +#define BIT_GET_R_WMAC_IPV6_MYIPAD_3_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_IPV6_MYIPAD_3_8822E) & \ + BIT_MASK_R_WMAC_IPV6_MYIPAD_3_8822E) +#define BIT_SET_R_WMAC_IPV6_MYIPAD_3_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_IPV6_MYIPAD_3_8822E(x) | \ + BIT_R_WMAC_IPV6_MYIPAD_3_8822E(v)) + +/* 2 REG_WMAC_RTX_CTX_SUBTYPE_CFG_8822E */ + +#define BIT_SHIFT_R_WMAC_CTX_SUBTYPE_8822E 4 +#define BIT_MASK_R_WMAC_CTX_SUBTYPE_8822E 0xf +#define BIT_R_WMAC_CTX_SUBTYPE_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_CTX_SUBTYPE_8822E) \ + << BIT_SHIFT_R_WMAC_CTX_SUBTYPE_8822E) +#define BITS_R_WMAC_CTX_SUBTYPE_8822E \ + (BIT_MASK_R_WMAC_CTX_SUBTYPE_8822E \ + << BIT_SHIFT_R_WMAC_CTX_SUBTYPE_8822E) +#define BIT_CLEAR_R_WMAC_CTX_SUBTYPE_8822E(x) \ + ((x) & (~BITS_R_WMAC_CTX_SUBTYPE_8822E)) +#define BIT_GET_R_WMAC_CTX_SUBTYPE_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_CTX_SUBTYPE_8822E) & \ + BIT_MASK_R_WMAC_CTX_SUBTYPE_8822E) +#define BIT_SET_R_WMAC_CTX_SUBTYPE_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_CTX_SUBTYPE_8822E(x) | \ + BIT_R_WMAC_CTX_SUBTYPE_8822E(v)) + +#define BIT_SHIFT_R_WMAC_RTX_SUBTYPE_8822E 0 +#define BIT_MASK_R_WMAC_RTX_SUBTYPE_8822E 0xf +#define BIT_R_WMAC_RTX_SUBTYPE_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_RTX_SUBTYPE_8822E) \ + << BIT_SHIFT_R_WMAC_RTX_SUBTYPE_8822E) +#define BITS_R_WMAC_RTX_SUBTYPE_8822E \ + (BIT_MASK_R_WMAC_RTX_SUBTYPE_8822E \ + << BIT_SHIFT_R_WMAC_RTX_SUBTYPE_8822E) +#define BIT_CLEAR_R_WMAC_RTX_SUBTYPE_8822E(x) \ + ((x) & (~BITS_R_WMAC_RTX_SUBTYPE_8822E)) +#define BIT_GET_R_WMAC_RTX_SUBTYPE_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_RTX_SUBTYPE_8822E) & \ + BIT_MASK_R_WMAC_RTX_SUBTYPE_8822E) +#define BIT_SET_R_WMAC_RTX_SUBTYPE_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_RTX_SUBTYPE_8822E(x) | \ + BIT_R_WMAC_RTX_SUBTYPE_8822E(v)) + +/* 2 REG_WMAC_SWAES_DIO_B63_B32_8822E */ + +#define BIT_SHIFT_WMAC_SWAES_DIO_B63_B32_8822E 0 +#define BIT_MASK_WMAC_SWAES_DIO_B63_B32_8822E 0xffffffffL +#define BIT_WMAC_SWAES_DIO_B63_B32_8822E(x) \ + (((x) & BIT_MASK_WMAC_SWAES_DIO_B63_B32_8822E) \ + << BIT_SHIFT_WMAC_SWAES_DIO_B63_B32_8822E) +#define BITS_WMAC_SWAES_DIO_B63_B32_8822E \ + (BIT_MASK_WMAC_SWAES_DIO_B63_B32_8822E \ + << BIT_SHIFT_WMAC_SWAES_DIO_B63_B32_8822E) +#define BIT_CLEAR_WMAC_SWAES_DIO_B63_B32_8822E(x) \ + ((x) & (~BITS_WMAC_SWAES_DIO_B63_B32_8822E)) +#define BIT_GET_WMAC_SWAES_DIO_B63_B32_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_SWAES_DIO_B63_B32_8822E) & \ + BIT_MASK_WMAC_SWAES_DIO_B63_B32_8822E) +#define BIT_SET_WMAC_SWAES_DIO_B63_B32_8822E(x, v) \ + (BIT_CLEAR_WMAC_SWAES_DIO_B63_B32_8822E(x) | \ + BIT_WMAC_SWAES_DIO_B63_B32_8822E(v)) + +/* 2 REG_WMAC_SWAES_DIO_B95_B64_8822E */ + +#define BIT_SHIFT_WMAC_SWAES_DIO_B95_B64_8822E 0 +#define BIT_MASK_WMAC_SWAES_DIO_B95_B64_8822E 0xffffffffL +#define BIT_WMAC_SWAES_DIO_B95_B64_8822E(x) \ + (((x) & BIT_MASK_WMAC_SWAES_DIO_B95_B64_8822E) \ + << BIT_SHIFT_WMAC_SWAES_DIO_B95_B64_8822E) +#define BITS_WMAC_SWAES_DIO_B95_B64_8822E \ + (BIT_MASK_WMAC_SWAES_DIO_B95_B64_8822E \ + << BIT_SHIFT_WMAC_SWAES_DIO_B95_B64_8822E) +#define BIT_CLEAR_WMAC_SWAES_DIO_B95_B64_8822E(x) \ + ((x) & (~BITS_WMAC_SWAES_DIO_B95_B64_8822E)) +#define BIT_GET_WMAC_SWAES_DIO_B95_B64_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_SWAES_DIO_B95_B64_8822E) & \ + BIT_MASK_WMAC_SWAES_DIO_B95_B64_8822E) +#define BIT_SET_WMAC_SWAES_DIO_B95_B64_8822E(x, v) \ + (BIT_CLEAR_WMAC_SWAES_DIO_B95_B64_8822E(x) | \ + BIT_WMAC_SWAES_DIO_B95_B64_8822E(v)) + +/* 2 REG_WMAC_SWAES_DIO_B127_B96_8822E */ + +#define BIT_SHIFT_WMAC_SWAES_DIO_B127_B96_8822E 0 +#define BIT_MASK_WMAC_SWAES_DIO_B127_B96_8822E 0xffffffffL +#define BIT_WMAC_SWAES_DIO_B127_B96_8822E(x) \ + (((x) & BIT_MASK_WMAC_SWAES_DIO_B127_B96_8822E) \ + << BIT_SHIFT_WMAC_SWAES_DIO_B127_B96_8822E) +#define BITS_WMAC_SWAES_DIO_B127_B96_8822E \ + (BIT_MASK_WMAC_SWAES_DIO_B127_B96_8822E \ + << BIT_SHIFT_WMAC_SWAES_DIO_B127_B96_8822E) +#define BIT_CLEAR_WMAC_SWAES_DIO_B127_B96_8822E(x) \ + ((x) & (~BITS_WMAC_SWAES_DIO_B127_B96_8822E)) +#define BIT_GET_WMAC_SWAES_DIO_B127_B96_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_SWAES_DIO_B127_B96_8822E) & \ + BIT_MASK_WMAC_SWAES_DIO_B127_B96_8822E) +#define BIT_SET_WMAC_SWAES_DIO_B127_B96_8822E(x, v) \ + (BIT_CLEAR_WMAC_SWAES_DIO_B127_B96_8822E(x) | \ + BIT_WMAC_SWAES_DIO_B127_B96_8822E(v)) + +/* 2 REG_WMAC_SWAES_CFG_8822E */ + +/* 2 REG_BT_COEX_V2_8822E */ +#define BIT_GNT_BT_POLARITY_8822E BIT(12) +#define BIT_GNT_BT_BYPASS_PRIORITY_8822E BIT(8) + +#define BIT_SHIFT_TIMER_8822E 0 +#define BIT_MASK_TIMER_8822E 0xff +#define BIT_TIMER_8822E(x) \ + (((x) & BIT_MASK_TIMER_8822E) << BIT_SHIFT_TIMER_8822E) +#define BITS_TIMER_8822E (BIT_MASK_TIMER_8822E << BIT_SHIFT_TIMER_8822E) +#define BIT_CLEAR_TIMER_8822E(x) ((x) & (~BITS_TIMER_8822E)) +#define BIT_GET_TIMER_8822E(x) \ + (((x) >> BIT_SHIFT_TIMER_8822E) & BIT_MASK_TIMER_8822E) +#define BIT_SET_TIMER_8822E(x, v) \ + (BIT_CLEAR_TIMER_8822E(x) | BIT_TIMER_8822E(v)) + +/* 2 REG_BT_COEX_8822E */ +#define BIT_R_GNT_BT_RFC_SW_8822E BIT(12) +#define BIT_R_GNT_BT_RFC_SW_EN_8822E BIT(11) +#define BIT_R_GNT_BT_BB_SW_8822E BIT(10) +#define BIT_R_GNT_BT_BB_SW_EN_8822E BIT(9) +#define BIT_R_BT_CNT_THREN_8822E BIT(8) + +#define BIT_SHIFT_R_BT_CNT_THR_8822E 0 +#define BIT_MASK_R_BT_CNT_THR_8822E 0xff +#define BIT_R_BT_CNT_THR_8822E(x) \ + (((x) & BIT_MASK_R_BT_CNT_THR_8822E) << BIT_SHIFT_R_BT_CNT_THR_8822E) +#define BITS_R_BT_CNT_THR_8822E \ + (BIT_MASK_R_BT_CNT_THR_8822E << BIT_SHIFT_R_BT_CNT_THR_8822E) +#define BIT_CLEAR_R_BT_CNT_THR_8822E(x) ((x) & (~BITS_R_BT_CNT_THR_8822E)) +#define BIT_GET_R_BT_CNT_THR_8822E(x) \ + (((x) >> BIT_SHIFT_R_BT_CNT_THR_8822E) & BIT_MASK_R_BT_CNT_THR_8822E) +#define BIT_SET_R_BT_CNT_THR_8822E(x, v) \ + (BIT_CLEAR_R_BT_CNT_THR_8822E(x) | BIT_R_BT_CNT_THR_8822E(v)) + +/* 2 REG_WLAN_ACT_MASK_CTRL_8822E */ + +#define BIT_SHIFT_RXMYRTS_NAV_V1_8822E 8 +#define BIT_MASK_RXMYRTS_NAV_V1_8822E 0xff +#define BIT_RXMYRTS_NAV_V1_8822E(x) \ + (((x) & BIT_MASK_RXMYRTS_NAV_V1_8822E) \ + << BIT_SHIFT_RXMYRTS_NAV_V1_8822E) +#define BITS_RXMYRTS_NAV_V1_8822E \ + (BIT_MASK_RXMYRTS_NAV_V1_8822E << BIT_SHIFT_RXMYRTS_NAV_V1_8822E) +#define BIT_CLEAR_RXMYRTS_NAV_V1_8822E(x) ((x) & (~BITS_RXMYRTS_NAV_V1_8822E)) +#define BIT_GET_RXMYRTS_NAV_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RXMYRTS_NAV_V1_8822E) & \ + BIT_MASK_RXMYRTS_NAV_V1_8822E) +#define BIT_SET_RXMYRTS_NAV_V1_8822E(x, v) \ + (BIT_CLEAR_RXMYRTS_NAV_V1_8822E(x) | BIT_RXMYRTS_NAV_V1_8822E(v)) + +#define BIT_SHIFT_RTSRST_V1_8822E 0 +#define BIT_MASK_RTSRST_V1_8822E 0xff +#define BIT_RTSRST_V1_8822E(x) \ + (((x) & BIT_MASK_RTSRST_V1_8822E) << BIT_SHIFT_RTSRST_V1_8822E) +#define BITS_RTSRST_V1_8822E \ + (BIT_MASK_RTSRST_V1_8822E << BIT_SHIFT_RTSRST_V1_8822E) +#define BIT_CLEAR_RTSRST_V1_8822E(x) ((x) & (~BITS_RTSRST_V1_8822E)) +#define BIT_GET_RTSRST_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RTSRST_V1_8822E) & BIT_MASK_RTSRST_V1_8822E) +#define BIT_SET_RTSRST_V1_8822E(x, v) \ + (BIT_CLEAR_RTSRST_V1_8822E(x) | BIT_RTSRST_V1_8822E(v)) + +/* 2 REG_WLAN_ACT_MASK_CTRL_1_8822E */ +#define BIT_WLRX_TER_BY_CTL_1_8822E BIT(11) +#define BIT_WLRX_TER_BY_AD_1_8822E BIT(10) +#define BIT_ANT_DIVERSITY_SEL_1_8822E BIT(9) +#define BIT_ANTSEL_FOR_BT_CTRL_EN_1_8822E BIT(8) +#define BIT_WLACT_LOW_GNTWL_EN_1_8822E BIT(2) +#define BIT_WLACT_HIGH_GNTBT_EN_1_8822E BIT(1) +#define BIT_NAV_UPPER_1_V1_8822E BIT(0) + +/* 2 REG_BT_COEX_ENHANCED_INTR_CTRL_8822E */ + +#define BIT_SHIFT_BT_STAT_DELAY_8822E 12 +#define BIT_MASK_BT_STAT_DELAY_8822E 0xf +#define BIT_BT_STAT_DELAY_8822E(x) \ + (((x) & BIT_MASK_BT_STAT_DELAY_8822E) << BIT_SHIFT_BT_STAT_DELAY_8822E) +#define BITS_BT_STAT_DELAY_8822E \ + (BIT_MASK_BT_STAT_DELAY_8822E << BIT_SHIFT_BT_STAT_DELAY_8822E) +#define BIT_CLEAR_BT_STAT_DELAY_8822E(x) ((x) & (~BITS_BT_STAT_DELAY_8822E)) +#define BIT_GET_BT_STAT_DELAY_8822E(x) \ + (((x) >> BIT_SHIFT_BT_STAT_DELAY_8822E) & BIT_MASK_BT_STAT_DELAY_8822E) +#define BIT_SET_BT_STAT_DELAY_8822E(x, v) \ + (BIT_CLEAR_BT_STAT_DELAY_8822E(x) | BIT_BT_STAT_DELAY_8822E(v)) + +#define BIT_SHIFT_BT_TRX_INIT_DETECT_8822E 8 +#define BIT_MASK_BT_TRX_INIT_DETECT_8822E 0xf +#define BIT_BT_TRX_INIT_DETECT_8822E(x) \ + (((x) & BIT_MASK_BT_TRX_INIT_DETECT_8822E) \ + << BIT_SHIFT_BT_TRX_INIT_DETECT_8822E) +#define BITS_BT_TRX_INIT_DETECT_8822E \ + (BIT_MASK_BT_TRX_INIT_DETECT_8822E \ + << BIT_SHIFT_BT_TRX_INIT_DETECT_8822E) +#define BIT_CLEAR_BT_TRX_INIT_DETECT_8822E(x) \ + ((x) & (~BITS_BT_TRX_INIT_DETECT_8822E)) +#define BIT_GET_BT_TRX_INIT_DETECT_8822E(x) \ + (((x) >> BIT_SHIFT_BT_TRX_INIT_DETECT_8822E) & \ + BIT_MASK_BT_TRX_INIT_DETECT_8822E) +#define BIT_SET_BT_TRX_INIT_DETECT_8822E(x, v) \ + (BIT_CLEAR_BT_TRX_INIT_DETECT_8822E(x) | \ + BIT_BT_TRX_INIT_DETECT_8822E(v)) + +#define BIT_SHIFT_BT_PRI_DETECT_TO_8822E 4 +#define BIT_MASK_BT_PRI_DETECT_TO_8822E 0xf +#define BIT_BT_PRI_DETECT_TO_8822E(x) \ + (((x) & BIT_MASK_BT_PRI_DETECT_TO_8822E) \ + << BIT_SHIFT_BT_PRI_DETECT_TO_8822E) +#define BITS_BT_PRI_DETECT_TO_8822E \ + (BIT_MASK_BT_PRI_DETECT_TO_8822E << BIT_SHIFT_BT_PRI_DETECT_TO_8822E) +#define BIT_CLEAR_BT_PRI_DETECT_TO_8822E(x) \ + ((x) & (~BITS_BT_PRI_DETECT_TO_8822E)) +#define BIT_GET_BT_PRI_DETECT_TO_8822E(x) \ + (((x) >> BIT_SHIFT_BT_PRI_DETECT_TO_8822E) & \ + BIT_MASK_BT_PRI_DETECT_TO_8822E) +#define BIT_SET_BT_PRI_DETECT_TO_8822E(x, v) \ + (BIT_CLEAR_BT_PRI_DETECT_TO_8822E(x) | BIT_BT_PRI_DETECT_TO_8822E(v)) + +#define BIT_R_GRANTALL_WLMASK_8822E BIT(3) +#define BIT_STATIS_BT_EN_8822E BIT(2) +#define BIT_WL_ACT_MASK_ENABLE_8822E BIT(1) +#define BIT_ENHANCED_BT_8822E BIT(0) + +/* 2 REG_BT_ACT_STATISTICS_8822E */ + +#define BIT_SHIFT_STATIS_BT_HI_RX_8822E 16 +#define BIT_MASK_STATIS_BT_HI_RX_8822E 0xffff +#define BIT_STATIS_BT_HI_RX_8822E(x) \ + (((x) & BIT_MASK_STATIS_BT_HI_RX_8822E) \ + << BIT_SHIFT_STATIS_BT_HI_RX_8822E) +#define BITS_STATIS_BT_HI_RX_8822E \ + (BIT_MASK_STATIS_BT_HI_RX_8822E << BIT_SHIFT_STATIS_BT_HI_RX_8822E) +#define BIT_CLEAR_STATIS_BT_HI_RX_8822E(x) ((x) & (~BITS_STATIS_BT_HI_RX_8822E)) +#define BIT_GET_STATIS_BT_HI_RX_8822E(x) \ + (((x) >> BIT_SHIFT_STATIS_BT_HI_RX_8822E) & \ + BIT_MASK_STATIS_BT_HI_RX_8822E) +#define BIT_SET_STATIS_BT_HI_RX_8822E(x, v) \ + (BIT_CLEAR_STATIS_BT_HI_RX_8822E(x) | BIT_STATIS_BT_HI_RX_8822E(v)) + +#define BIT_SHIFT_STATIS_BT_HI_TX_8822E 0 +#define BIT_MASK_STATIS_BT_HI_TX_8822E 0xffff +#define BIT_STATIS_BT_HI_TX_8822E(x) \ + (((x) & BIT_MASK_STATIS_BT_HI_TX_8822E) \ + << BIT_SHIFT_STATIS_BT_HI_TX_8822E) +#define BITS_STATIS_BT_HI_TX_8822E \ + (BIT_MASK_STATIS_BT_HI_TX_8822E << BIT_SHIFT_STATIS_BT_HI_TX_8822E) +#define BIT_CLEAR_STATIS_BT_HI_TX_8822E(x) ((x) & (~BITS_STATIS_BT_HI_TX_8822E)) +#define BIT_GET_STATIS_BT_HI_TX_8822E(x) \ + (((x) >> BIT_SHIFT_STATIS_BT_HI_TX_8822E) & \ + BIT_MASK_STATIS_BT_HI_TX_8822E) +#define BIT_SET_STATIS_BT_HI_TX_8822E(x, v) \ + (BIT_CLEAR_STATIS_BT_HI_TX_8822E(x) | BIT_STATIS_BT_HI_TX_8822E(v)) + +/* 2 REG_BT_ACT_STATISTICS_1_8822E */ + +#define BIT_SHIFT_STATIS_BT_LO_RX_1_8822E 16 +#define BIT_MASK_STATIS_BT_LO_RX_1_8822E 0xffff +#define BIT_STATIS_BT_LO_RX_1_8822E(x) \ + (((x) & BIT_MASK_STATIS_BT_LO_RX_1_8822E) \ + << BIT_SHIFT_STATIS_BT_LO_RX_1_8822E) +#define BITS_STATIS_BT_LO_RX_1_8822E \ + (BIT_MASK_STATIS_BT_LO_RX_1_8822E << BIT_SHIFT_STATIS_BT_LO_RX_1_8822E) +#define BIT_CLEAR_STATIS_BT_LO_RX_1_8822E(x) \ + ((x) & (~BITS_STATIS_BT_LO_RX_1_8822E)) +#define BIT_GET_STATIS_BT_LO_RX_1_8822E(x) \ + (((x) >> BIT_SHIFT_STATIS_BT_LO_RX_1_8822E) & \ + BIT_MASK_STATIS_BT_LO_RX_1_8822E) +#define BIT_SET_STATIS_BT_LO_RX_1_8822E(x, v) \ + (BIT_CLEAR_STATIS_BT_LO_RX_1_8822E(x) | BIT_STATIS_BT_LO_RX_1_8822E(v)) + +#define BIT_SHIFT_STATIS_BT_LO_TX_1_8822E 0 +#define BIT_MASK_STATIS_BT_LO_TX_1_8822E 0xffff +#define BIT_STATIS_BT_LO_TX_1_8822E(x) \ + (((x) & BIT_MASK_STATIS_BT_LO_TX_1_8822E) \ + << BIT_SHIFT_STATIS_BT_LO_TX_1_8822E) +#define BITS_STATIS_BT_LO_TX_1_8822E \ + (BIT_MASK_STATIS_BT_LO_TX_1_8822E << BIT_SHIFT_STATIS_BT_LO_TX_1_8822E) +#define BIT_CLEAR_STATIS_BT_LO_TX_1_8822E(x) \ + ((x) & (~BITS_STATIS_BT_LO_TX_1_8822E)) +#define BIT_GET_STATIS_BT_LO_TX_1_8822E(x) \ + (((x) >> BIT_SHIFT_STATIS_BT_LO_TX_1_8822E) & \ + BIT_MASK_STATIS_BT_LO_TX_1_8822E) +#define BIT_SET_STATIS_BT_LO_TX_1_8822E(x, v) \ + (BIT_CLEAR_STATIS_BT_LO_TX_1_8822E(x) | BIT_STATIS_BT_LO_TX_1_8822E(v)) + +/* 2 REG_BT_STATISTICS_CONTROL_REGISTER_8822E */ + +#define BIT_SHIFT_R_BT_CMD_RPT_8822E 16 +#define BIT_MASK_R_BT_CMD_RPT_8822E 0xffff +#define BIT_R_BT_CMD_RPT_8822E(x) \ + (((x) & BIT_MASK_R_BT_CMD_RPT_8822E) << BIT_SHIFT_R_BT_CMD_RPT_8822E) +#define BITS_R_BT_CMD_RPT_8822E \ + (BIT_MASK_R_BT_CMD_RPT_8822E << BIT_SHIFT_R_BT_CMD_RPT_8822E) +#define BIT_CLEAR_R_BT_CMD_RPT_8822E(x) ((x) & (~BITS_R_BT_CMD_RPT_8822E)) +#define BIT_GET_R_BT_CMD_RPT_8822E(x) \ + (((x) >> BIT_SHIFT_R_BT_CMD_RPT_8822E) & BIT_MASK_R_BT_CMD_RPT_8822E) +#define BIT_SET_R_BT_CMD_RPT_8822E(x, v) \ + (BIT_CLEAR_R_BT_CMD_RPT_8822E(x) | BIT_R_BT_CMD_RPT_8822E(v)) + +#define BIT_SHIFT_R_RPT_FROM_BT_8822E 8 +#define BIT_MASK_R_RPT_FROM_BT_8822E 0xff +#define BIT_R_RPT_FROM_BT_8822E(x) \ + (((x) & BIT_MASK_R_RPT_FROM_BT_8822E) << BIT_SHIFT_R_RPT_FROM_BT_8822E) +#define BITS_R_RPT_FROM_BT_8822E \ + (BIT_MASK_R_RPT_FROM_BT_8822E << BIT_SHIFT_R_RPT_FROM_BT_8822E) +#define BIT_CLEAR_R_RPT_FROM_BT_8822E(x) ((x) & (~BITS_R_RPT_FROM_BT_8822E)) +#define BIT_GET_R_RPT_FROM_BT_8822E(x) \ + (((x) >> BIT_SHIFT_R_RPT_FROM_BT_8822E) & BIT_MASK_R_RPT_FROM_BT_8822E) +#define BIT_SET_R_RPT_FROM_BT_8822E(x, v) \ + (BIT_CLEAR_R_RPT_FROM_BT_8822E(x) | BIT_R_RPT_FROM_BT_8822E(v)) + +#define BIT_SHIFT_BT_HID_ISR_SET_8822E 6 +#define BIT_MASK_BT_HID_ISR_SET_8822E 0x3 +#define BIT_BT_HID_ISR_SET_8822E(x) \ + (((x) & BIT_MASK_BT_HID_ISR_SET_8822E) \ + << BIT_SHIFT_BT_HID_ISR_SET_8822E) +#define BITS_BT_HID_ISR_SET_8822E \ + (BIT_MASK_BT_HID_ISR_SET_8822E << BIT_SHIFT_BT_HID_ISR_SET_8822E) +#define BIT_CLEAR_BT_HID_ISR_SET_8822E(x) ((x) & (~BITS_BT_HID_ISR_SET_8822E)) +#define BIT_GET_BT_HID_ISR_SET_8822E(x) \ + (((x) >> BIT_SHIFT_BT_HID_ISR_SET_8822E) & \ + BIT_MASK_BT_HID_ISR_SET_8822E) +#define BIT_SET_BT_HID_ISR_SET_8822E(x, v) \ + (BIT_CLEAR_BT_HID_ISR_SET_8822E(x) | BIT_BT_HID_ISR_SET_8822E(v)) + +#define BIT_TDMA_BT_START_NOTIFY_8822E BIT(5) +#define BIT_ENABLE_TDMA_FW_MODE_8822E BIT(4) +#define BIT_ENABLE_PTA_TDMA_MODE_8822E BIT(3) +#define BIT_ENABLE_COEXIST_TAB_IN_TDMA_8822E BIT(2) +#define BIT_GPIO2_GPIO3_EXANGE_OR_NO_BT_CCA_8822E BIT(1) +#define BIT_RTK_BT_ENABLE_8822E BIT(0) + +/* 2 REG_BT_STATUS_REPORT_REGISTER_8822E */ + +#define BIT_SHIFT_BT_PROFILE_8822E 24 +#define BIT_MASK_BT_PROFILE_8822E 0xff +#define BIT_BT_PROFILE_8822E(x) \ + (((x) & BIT_MASK_BT_PROFILE_8822E) << BIT_SHIFT_BT_PROFILE_8822E) +#define BITS_BT_PROFILE_8822E \ + (BIT_MASK_BT_PROFILE_8822E << BIT_SHIFT_BT_PROFILE_8822E) +#define BIT_CLEAR_BT_PROFILE_8822E(x) ((x) & (~BITS_BT_PROFILE_8822E)) +#define BIT_GET_BT_PROFILE_8822E(x) \ + (((x) >> BIT_SHIFT_BT_PROFILE_8822E) & BIT_MASK_BT_PROFILE_8822E) +#define BIT_SET_BT_PROFILE_8822E(x, v) \ + (BIT_CLEAR_BT_PROFILE_8822E(x) | BIT_BT_PROFILE_8822E(v)) + +#define BIT_SHIFT_BT_POWER_8822E 16 +#define BIT_MASK_BT_POWER_8822E 0xff +#define BIT_BT_POWER_8822E(x) \ + (((x) & BIT_MASK_BT_POWER_8822E) << BIT_SHIFT_BT_POWER_8822E) +#define BITS_BT_POWER_8822E \ + (BIT_MASK_BT_POWER_8822E << BIT_SHIFT_BT_POWER_8822E) +#define BIT_CLEAR_BT_POWER_8822E(x) ((x) & (~BITS_BT_POWER_8822E)) +#define BIT_GET_BT_POWER_8822E(x) \ + (((x) >> BIT_SHIFT_BT_POWER_8822E) & BIT_MASK_BT_POWER_8822E) +#define BIT_SET_BT_POWER_8822E(x, v) \ + (BIT_CLEAR_BT_POWER_8822E(x) | BIT_BT_POWER_8822E(v)) + +#define BIT_SHIFT_BT_PREDECT_STATUS_8822E 8 +#define BIT_MASK_BT_PREDECT_STATUS_8822E 0xff +#define BIT_BT_PREDECT_STATUS_8822E(x) \ + (((x) & BIT_MASK_BT_PREDECT_STATUS_8822E) \ + << BIT_SHIFT_BT_PREDECT_STATUS_8822E) +#define BITS_BT_PREDECT_STATUS_8822E \ + (BIT_MASK_BT_PREDECT_STATUS_8822E << BIT_SHIFT_BT_PREDECT_STATUS_8822E) +#define BIT_CLEAR_BT_PREDECT_STATUS_8822E(x) \ + ((x) & (~BITS_BT_PREDECT_STATUS_8822E)) +#define BIT_GET_BT_PREDECT_STATUS_8822E(x) \ + (((x) >> BIT_SHIFT_BT_PREDECT_STATUS_8822E) & \ + BIT_MASK_BT_PREDECT_STATUS_8822E) +#define BIT_SET_BT_PREDECT_STATUS_8822E(x, v) \ + (BIT_CLEAR_BT_PREDECT_STATUS_8822E(x) | BIT_BT_PREDECT_STATUS_8822E(v)) + +#define BIT_SHIFT_BT_CMD_INFO_8822E 0 +#define BIT_MASK_BT_CMD_INFO_8822E 0xff +#define BIT_BT_CMD_INFO_8822E(x) \ + (((x) & BIT_MASK_BT_CMD_INFO_8822E) << BIT_SHIFT_BT_CMD_INFO_8822E) +#define BITS_BT_CMD_INFO_8822E \ + (BIT_MASK_BT_CMD_INFO_8822E << BIT_SHIFT_BT_CMD_INFO_8822E) +#define BIT_CLEAR_BT_CMD_INFO_8822E(x) ((x) & (~BITS_BT_CMD_INFO_8822E)) +#define BIT_GET_BT_CMD_INFO_8822E(x) \ + (((x) >> BIT_SHIFT_BT_CMD_INFO_8822E) & BIT_MASK_BT_CMD_INFO_8822E) +#define BIT_SET_BT_CMD_INFO_8822E(x, v) \ + (BIT_CLEAR_BT_CMD_INFO_8822E(x) | BIT_BT_CMD_INFO_8822E(v)) + +/* 2 REG_BT_INTERRUPT_CONTROL_REGISTER_8822E */ +#define BIT_EN_MAC_NULL_PKT_NOTIFY_8822E BIT(31) +#define BIT_EN_WLAN_RPT_AND_BT_QUERY_8822E BIT(30) +#define BIT_EN_BT_STSTUS_RPT_8822E BIT(29) +#define BIT_EN_BT_POWER_8822E BIT(28) +#define BIT_EN_BT_CHANNEL_8822E BIT(27) +#define BIT_EN_BT_SLOT_CHANGE_8822E BIT(26) +#define BIT_EN_BT_PROFILE_OR_HID_8822E BIT(25) +#define BIT_WLAN_RPT_NOTIFY_8822E BIT(24) + +#define BIT_SHIFT_WLAN_RPT_DATA_8822E 16 +#define BIT_MASK_WLAN_RPT_DATA_8822E 0xff +#define BIT_WLAN_RPT_DATA_8822E(x) \ + (((x) & BIT_MASK_WLAN_RPT_DATA_8822E) << BIT_SHIFT_WLAN_RPT_DATA_8822E) +#define BITS_WLAN_RPT_DATA_8822E \ + (BIT_MASK_WLAN_RPT_DATA_8822E << BIT_SHIFT_WLAN_RPT_DATA_8822E) +#define BIT_CLEAR_WLAN_RPT_DATA_8822E(x) ((x) & (~BITS_WLAN_RPT_DATA_8822E)) +#define BIT_GET_WLAN_RPT_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_WLAN_RPT_DATA_8822E) & BIT_MASK_WLAN_RPT_DATA_8822E) +#define BIT_SET_WLAN_RPT_DATA_8822E(x, v) \ + (BIT_CLEAR_WLAN_RPT_DATA_8822E(x) | BIT_WLAN_RPT_DATA_8822E(v)) + +#define BIT_SHIFT_CMD_ID_8822E 8 +#define BIT_MASK_CMD_ID_8822E 0xff +#define BIT_CMD_ID_8822E(x) \ + (((x) & BIT_MASK_CMD_ID_8822E) << BIT_SHIFT_CMD_ID_8822E) +#define BITS_CMD_ID_8822E (BIT_MASK_CMD_ID_8822E << BIT_SHIFT_CMD_ID_8822E) +#define BIT_CLEAR_CMD_ID_8822E(x) ((x) & (~BITS_CMD_ID_8822E)) +#define BIT_GET_CMD_ID_8822E(x) \ + (((x) >> BIT_SHIFT_CMD_ID_8822E) & BIT_MASK_CMD_ID_8822E) +#define BIT_SET_CMD_ID_8822E(x, v) \ + (BIT_CLEAR_CMD_ID_8822E(x) | BIT_CMD_ID_8822E(v)) + +#define BIT_SHIFT_BT_DATA_8822E 0 +#define BIT_MASK_BT_DATA_8822E 0xff +#define BIT_BT_DATA_8822E(x) \ + (((x) & BIT_MASK_BT_DATA_8822E) << BIT_SHIFT_BT_DATA_8822E) +#define BITS_BT_DATA_8822E (BIT_MASK_BT_DATA_8822E << BIT_SHIFT_BT_DATA_8822E) +#define BIT_CLEAR_BT_DATA_8822E(x) ((x) & (~BITS_BT_DATA_8822E)) +#define BIT_GET_BT_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_BT_DATA_8822E) & BIT_MASK_BT_DATA_8822E) +#define BIT_SET_BT_DATA_8822E(x, v) \ + (BIT_CLEAR_BT_DATA_8822E(x) | BIT_BT_DATA_8822E(v)) + +/* 2 REG_WLAN_REPORT_TIME_OUT_CONTROL_REGISTER_8822E */ + +#define BIT_SHIFT_WLAN_RPT_TO_8822E 0 +#define BIT_MASK_WLAN_RPT_TO_8822E 0xff +#define BIT_WLAN_RPT_TO_8822E(x) \ + (((x) & BIT_MASK_WLAN_RPT_TO_8822E) << BIT_SHIFT_WLAN_RPT_TO_8822E) +#define BITS_WLAN_RPT_TO_8822E \ + (BIT_MASK_WLAN_RPT_TO_8822E << BIT_SHIFT_WLAN_RPT_TO_8822E) +#define BIT_CLEAR_WLAN_RPT_TO_8822E(x) ((x) & (~BITS_WLAN_RPT_TO_8822E)) +#define BIT_GET_WLAN_RPT_TO_8822E(x) \ + (((x) >> BIT_SHIFT_WLAN_RPT_TO_8822E) & BIT_MASK_WLAN_RPT_TO_8822E) +#define BIT_SET_WLAN_RPT_TO_8822E(x, v) \ + (BIT_CLEAR_WLAN_RPT_TO_8822E(x) | BIT_WLAN_RPT_TO_8822E(v)) + +/* 2 REG_BT_ISOLATION_TABLE_REGISTER_REGISTER_8822E */ + +#define BIT_SHIFT_ISOLATION_CHK_0_8822E 1 +#define BIT_MASK_ISOLATION_CHK_0_8822E 0x7fffff +#define BIT_ISOLATION_CHK_0_8822E(x) \ + (((x) & BIT_MASK_ISOLATION_CHK_0_8822E) \ + << BIT_SHIFT_ISOLATION_CHK_0_8822E) +#define BITS_ISOLATION_CHK_0_8822E \ + (BIT_MASK_ISOLATION_CHK_0_8822E << BIT_SHIFT_ISOLATION_CHK_0_8822E) +#define BIT_CLEAR_ISOLATION_CHK_0_8822E(x) ((x) & (~BITS_ISOLATION_CHK_0_8822E)) +#define BIT_GET_ISOLATION_CHK_0_8822E(x) \ + (((x) >> BIT_SHIFT_ISOLATION_CHK_0_8822E) & \ + BIT_MASK_ISOLATION_CHK_0_8822E) +#define BIT_SET_ISOLATION_CHK_0_8822E(x, v) \ + (BIT_CLEAR_ISOLATION_CHK_0_8822E(x) | BIT_ISOLATION_CHK_0_8822E(v)) + +#define BIT_ISOLATION_EN_8822E BIT(0) + +/* 2 REG_BT_ISOLATION_TABLE_REGISTER_REGISTER_1_8822E */ + +#define BIT_SHIFT_ISOLATION_CHK_1_8822E 0 +#define BIT_MASK_ISOLATION_CHK_1_8822E 0xffffffffL +#define BIT_ISOLATION_CHK_1_8822E(x) \ + (((x) & BIT_MASK_ISOLATION_CHK_1_8822E) \ + << BIT_SHIFT_ISOLATION_CHK_1_8822E) +#define BITS_ISOLATION_CHK_1_8822E \ + (BIT_MASK_ISOLATION_CHK_1_8822E << BIT_SHIFT_ISOLATION_CHK_1_8822E) +#define BIT_CLEAR_ISOLATION_CHK_1_8822E(x) ((x) & (~BITS_ISOLATION_CHK_1_8822E)) +#define BIT_GET_ISOLATION_CHK_1_8822E(x) \ + (((x) >> BIT_SHIFT_ISOLATION_CHK_1_8822E) & \ + BIT_MASK_ISOLATION_CHK_1_8822E) +#define BIT_SET_ISOLATION_CHK_1_8822E(x, v) \ + (BIT_CLEAR_ISOLATION_CHK_1_8822E(x) | BIT_ISOLATION_CHK_1_8822E(v)) + +/* 2 REG_BT_ISOLATION_TABLE_REGISTER_REGISTER_2_8822E */ + +#define BIT_SHIFT_ISOLATION_CHK_2_8822E 0 +#define BIT_MASK_ISOLATION_CHK_2_8822E 0xffffff +#define BIT_ISOLATION_CHK_2_8822E(x) \ + (((x) & BIT_MASK_ISOLATION_CHK_2_8822E) \ + << BIT_SHIFT_ISOLATION_CHK_2_8822E) +#define BITS_ISOLATION_CHK_2_8822E \ + (BIT_MASK_ISOLATION_CHK_2_8822E << BIT_SHIFT_ISOLATION_CHK_2_8822E) +#define BIT_CLEAR_ISOLATION_CHK_2_8822E(x) ((x) & (~BITS_ISOLATION_CHK_2_8822E)) +#define BIT_GET_ISOLATION_CHK_2_8822E(x) \ + (((x) >> BIT_SHIFT_ISOLATION_CHK_2_8822E) & \ + BIT_MASK_ISOLATION_CHK_2_8822E) +#define BIT_SET_ISOLATION_CHK_2_8822E(x, v) \ + (BIT_CLEAR_ISOLATION_CHK_2_8822E(x) | BIT_ISOLATION_CHK_2_8822E(v)) + +/* 2 REG_BT_INTERRUPT_STATUS_REGISTER_8822E */ +#define BIT_BT_HID_ISR_8822E BIT(7) +#define BIT_BT_QUERY_ISR_8822E BIT(6) +#define BIT_MAC_NULL_PKT_NOTIFY_ISR_8822E BIT(5) +#define BIT_WLAN_RPT_ISR_8822E BIT(4) +#define BIT_BT_POWER_ISR_8822E BIT(3) +#define BIT_BT_CHANNEL_ISR_8822E BIT(2) +#define BIT_BT_SLOT_CHANGE_ISR_8822E BIT(1) +#define BIT_BT_PROFILE_ISR_8822E BIT(0) + +/* 2 REG_BT_TDMA_TIME_REGISTER_8822E */ + +#define BIT_SHIFT_BT_TIME_8822E 6 +#define BIT_MASK_BT_TIME_8822E 0x3ffffff +#define BIT_BT_TIME_8822E(x) \ + (((x) & BIT_MASK_BT_TIME_8822E) << BIT_SHIFT_BT_TIME_8822E) +#define BITS_BT_TIME_8822E (BIT_MASK_BT_TIME_8822E << BIT_SHIFT_BT_TIME_8822E) +#define BIT_CLEAR_BT_TIME_8822E(x) ((x) & (~BITS_BT_TIME_8822E)) +#define BIT_GET_BT_TIME_8822E(x) \ + (((x) >> BIT_SHIFT_BT_TIME_8822E) & BIT_MASK_BT_TIME_8822E) +#define BIT_SET_BT_TIME_8822E(x, v) \ + (BIT_CLEAR_BT_TIME_8822E(x) | BIT_BT_TIME_8822E(v)) + +#define BIT_SHIFT_BT_RPT_SAMPLE_RATE_8822E 0 +#define BIT_MASK_BT_RPT_SAMPLE_RATE_8822E 0x3f +#define BIT_BT_RPT_SAMPLE_RATE_8822E(x) \ + (((x) & BIT_MASK_BT_RPT_SAMPLE_RATE_8822E) \ + << BIT_SHIFT_BT_RPT_SAMPLE_RATE_8822E) +#define BITS_BT_RPT_SAMPLE_RATE_8822E \ + (BIT_MASK_BT_RPT_SAMPLE_RATE_8822E \ + << BIT_SHIFT_BT_RPT_SAMPLE_RATE_8822E) +#define BIT_CLEAR_BT_RPT_SAMPLE_RATE_8822E(x) \ + ((x) & (~BITS_BT_RPT_SAMPLE_RATE_8822E)) +#define BIT_GET_BT_RPT_SAMPLE_RATE_8822E(x) \ + (((x) >> BIT_SHIFT_BT_RPT_SAMPLE_RATE_8822E) & \ + BIT_MASK_BT_RPT_SAMPLE_RATE_8822E) +#define BIT_SET_BT_RPT_SAMPLE_RATE_8822E(x, v) \ + (BIT_CLEAR_BT_RPT_SAMPLE_RATE_8822E(x) | \ + BIT_BT_RPT_SAMPLE_RATE_8822E(v)) + +/* 2 REG_BT_ACT_REGISTER_8822E */ + +#define BIT_SHIFT_BT_EISR_EN_8822E 16 +#define BIT_MASK_BT_EISR_EN_8822E 0xff +#define BIT_BT_EISR_EN_8822E(x) \ + (((x) & BIT_MASK_BT_EISR_EN_8822E) << BIT_SHIFT_BT_EISR_EN_8822E) +#define BITS_BT_EISR_EN_8822E \ + (BIT_MASK_BT_EISR_EN_8822E << BIT_SHIFT_BT_EISR_EN_8822E) +#define BIT_CLEAR_BT_EISR_EN_8822E(x) ((x) & (~BITS_BT_EISR_EN_8822E)) +#define BIT_GET_BT_EISR_EN_8822E(x) \ + (((x) >> BIT_SHIFT_BT_EISR_EN_8822E) & BIT_MASK_BT_EISR_EN_8822E) +#define BIT_SET_BT_EISR_EN_8822E(x, v) \ + (BIT_CLEAR_BT_EISR_EN_8822E(x) | BIT_BT_EISR_EN_8822E(v)) + +#define BIT_BT_ACT_FALLING_ISR_8822E BIT(10) +#define BIT_BT_ACT_RISING_ISR_8822E BIT(9) +#define BIT_TDMA_TO_ISR_8822E BIT(8) + +#define BIT_SHIFT_BT_CH_V1_8822E 0 +#define BIT_MASK_BT_CH_V1_8822E 0x7f +#define BIT_BT_CH_V1_8822E(x) \ + (((x) & BIT_MASK_BT_CH_V1_8822E) << BIT_SHIFT_BT_CH_V1_8822E) +#define BITS_BT_CH_V1_8822E \ + (BIT_MASK_BT_CH_V1_8822E << BIT_SHIFT_BT_CH_V1_8822E) +#define BIT_CLEAR_BT_CH_V1_8822E(x) ((x) & (~BITS_BT_CH_V1_8822E)) +#define BIT_GET_BT_CH_V1_8822E(x) \ + (((x) >> BIT_SHIFT_BT_CH_V1_8822E) & BIT_MASK_BT_CH_V1_8822E) +#define BIT_SET_BT_CH_V1_8822E(x, v) \ + (BIT_CLEAR_BT_CH_V1_8822E(x) | BIT_BT_CH_V1_8822E(v)) + +/* 2 REG_OBFF_CTRL_BASIC_8822E */ +#define BIT_OBFF_EN_V1_8822E BIT(31) + +#define BIT_SHIFT_OBFF_STATE_V1_8822E 28 +#define BIT_MASK_OBFF_STATE_V1_8822E 0x3 +#define BIT_OBFF_STATE_V1_8822E(x) \ + (((x) & BIT_MASK_OBFF_STATE_V1_8822E) << BIT_SHIFT_OBFF_STATE_V1_8822E) +#define BITS_OBFF_STATE_V1_8822E \ + (BIT_MASK_OBFF_STATE_V1_8822E << BIT_SHIFT_OBFF_STATE_V1_8822E) +#define BIT_CLEAR_OBFF_STATE_V1_8822E(x) ((x) & (~BITS_OBFF_STATE_V1_8822E)) +#define BIT_GET_OBFF_STATE_V1_8822E(x) \ + (((x) >> BIT_SHIFT_OBFF_STATE_V1_8822E) & BIT_MASK_OBFF_STATE_V1_8822E) +#define BIT_SET_OBFF_STATE_V1_8822E(x, v) \ + (BIT_CLEAR_OBFF_STATE_V1_8822E(x) | BIT_OBFF_STATE_V1_8822E(v)) + +#define BIT_OBFF_ACT_RXDMA_EN_8822E BIT(27) +#define BIT_OBFF_BLOCK_INT_EN_8822E BIT(26) +#define BIT_OBFF_AUTOACT_EN_8822E BIT(25) +#define BIT_OBFF_AUTOIDLE_EN_8822E BIT(24) + +#define BIT_SHIFT_WAKE_MAX_PLS_8822E 20 +#define BIT_MASK_WAKE_MAX_PLS_8822E 0x7 +#define BIT_WAKE_MAX_PLS_8822E(x) \ + (((x) & BIT_MASK_WAKE_MAX_PLS_8822E) << BIT_SHIFT_WAKE_MAX_PLS_8822E) +#define BITS_WAKE_MAX_PLS_8822E \ + (BIT_MASK_WAKE_MAX_PLS_8822E << BIT_SHIFT_WAKE_MAX_PLS_8822E) +#define BIT_CLEAR_WAKE_MAX_PLS_8822E(x) ((x) & (~BITS_WAKE_MAX_PLS_8822E)) +#define BIT_GET_WAKE_MAX_PLS_8822E(x) \ + (((x) >> BIT_SHIFT_WAKE_MAX_PLS_8822E) & BIT_MASK_WAKE_MAX_PLS_8822E) +#define BIT_SET_WAKE_MAX_PLS_8822E(x, v) \ + (BIT_CLEAR_WAKE_MAX_PLS_8822E(x) | BIT_WAKE_MAX_PLS_8822E(v)) + +#define BIT_SHIFT_WAKE_MIN_PLS_8822E 16 +#define BIT_MASK_WAKE_MIN_PLS_8822E 0x7 +#define BIT_WAKE_MIN_PLS_8822E(x) \ + (((x) & BIT_MASK_WAKE_MIN_PLS_8822E) << BIT_SHIFT_WAKE_MIN_PLS_8822E) +#define BITS_WAKE_MIN_PLS_8822E \ + (BIT_MASK_WAKE_MIN_PLS_8822E << BIT_SHIFT_WAKE_MIN_PLS_8822E) +#define BIT_CLEAR_WAKE_MIN_PLS_8822E(x) ((x) & (~BITS_WAKE_MIN_PLS_8822E)) +#define BIT_GET_WAKE_MIN_PLS_8822E(x) \ + (((x) >> BIT_SHIFT_WAKE_MIN_PLS_8822E) & BIT_MASK_WAKE_MIN_PLS_8822E) +#define BIT_SET_WAKE_MIN_PLS_8822E(x, v) \ + (BIT_CLEAR_WAKE_MIN_PLS_8822E(x) | BIT_WAKE_MIN_PLS_8822E(v)) + +#define BIT_SHIFT_WAKE_MAX_F2F_8822E 12 +#define BIT_MASK_WAKE_MAX_F2F_8822E 0x7 +#define BIT_WAKE_MAX_F2F_8822E(x) \ + (((x) & BIT_MASK_WAKE_MAX_F2F_8822E) << BIT_SHIFT_WAKE_MAX_F2F_8822E) +#define BITS_WAKE_MAX_F2F_8822E \ + (BIT_MASK_WAKE_MAX_F2F_8822E << BIT_SHIFT_WAKE_MAX_F2F_8822E) +#define BIT_CLEAR_WAKE_MAX_F2F_8822E(x) ((x) & (~BITS_WAKE_MAX_F2F_8822E)) +#define BIT_GET_WAKE_MAX_F2F_8822E(x) \ + (((x) >> BIT_SHIFT_WAKE_MAX_F2F_8822E) & BIT_MASK_WAKE_MAX_F2F_8822E) +#define BIT_SET_WAKE_MAX_F2F_8822E(x, v) \ + (BIT_CLEAR_WAKE_MAX_F2F_8822E(x) | BIT_WAKE_MAX_F2F_8822E(v)) + +#define BIT_SHIFT_WAKE_MIN_F2F_8822E 8 +#define BIT_MASK_WAKE_MIN_F2F_8822E 0x7 +#define BIT_WAKE_MIN_F2F_8822E(x) \ + (((x) & BIT_MASK_WAKE_MIN_F2F_8822E) << BIT_SHIFT_WAKE_MIN_F2F_8822E) +#define BITS_WAKE_MIN_F2F_8822E \ + (BIT_MASK_WAKE_MIN_F2F_8822E << BIT_SHIFT_WAKE_MIN_F2F_8822E) +#define BIT_CLEAR_WAKE_MIN_F2F_8822E(x) ((x) & (~BITS_WAKE_MIN_F2F_8822E)) +#define BIT_GET_WAKE_MIN_F2F_8822E(x) \ + (((x) >> BIT_SHIFT_WAKE_MIN_F2F_8822E) & BIT_MASK_WAKE_MIN_F2F_8822E) +#define BIT_SET_WAKE_MIN_F2F_8822E(x, v) \ + (BIT_CLEAR_WAKE_MIN_F2F_8822E(x) | BIT_WAKE_MIN_F2F_8822E(v)) + +#define BIT_APP_CPU_ACT_V1_8822E BIT(3) +#define BIT_APP_OBFF_V1_8822E BIT(2) +#define BIT_APP_IDLE_V1_8822E BIT(1) +#define BIT_APP_INIT_V1_8822E BIT(0) + +/* 2 REG_OBFF_CTRL2_TIMER_8822E */ + +#define BIT_SHIFT_RX_HIGH_TIMER_IDX_8822E 24 +#define BIT_MASK_RX_HIGH_TIMER_IDX_8822E 0x7 +#define BIT_RX_HIGH_TIMER_IDX_8822E(x) \ + (((x) & BIT_MASK_RX_HIGH_TIMER_IDX_8822E) \ + << BIT_SHIFT_RX_HIGH_TIMER_IDX_8822E) +#define BITS_RX_HIGH_TIMER_IDX_8822E \ + (BIT_MASK_RX_HIGH_TIMER_IDX_8822E << BIT_SHIFT_RX_HIGH_TIMER_IDX_8822E) +#define BIT_CLEAR_RX_HIGH_TIMER_IDX_8822E(x) \ + ((x) & (~BITS_RX_HIGH_TIMER_IDX_8822E)) +#define BIT_GET_RX_HIGH_TIMER_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RX_HIGH_TIMER_IDX_8822E) & \ + BIT_MASK_RX_HIGH_TIMER_IDX_8822E) +#define BIT_SET_RX_HIGH_TIMER_IDX_8822E(x, v) \ + (BIT_CLEAR_RX_HIGH_TIMER_IDX_8822E(x) | BIT_RX_HIGH_TIMER_IDX_8822E(v)) + +#define BIT_SHIFT_RX_MED_TIMER_IDX_8822E 16 +#define BIT_MASK_RX_MED_TIMER_IDX_8822E 0x7 +#define BIT_RX_MED_TIMER_IDX_8822E(x) \ + (((x) & BIT_MASK_RX_MED_TIMER_IDX_8822E) \ + << BIT_SHIFT_RX_MED_TIMER_IDX_8822E) +#define BITS_RX_MED_TIMER_IDX_8822E \ + (BIT_MASK_RX_MED_TIMER_IDX_8822E << BIT_SHIFT_RX_MED_TIMER_IDX_8822E) +#define BIT_CLEAR_RX_MED_TIMER_IDX_8822E(x) \ + ((x) & (~BITS_RX_MED_TIMER_IDX_8822E)) +#define BIT_GET_RX_MED_TIMER_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RX_MED_TIMER_IDX_8822E) & \ + BIT_MASK_RX_MED_TIMER_IDX_8822E) +#define BIT_SET_RX_MED_TIMER_IDX_8822E(x, v) \ + (BIT_CLEAR_RX_MED_TIMER_IDX_8822E(x) | BIT_RX_MED_TIMER_IDX_8822E(v)) + +#define BIT_SHIFT_RX_LOW_TIMER_IDX_8822E 8 +#define BIT_MASK_RX_LOW_TIMER_IDX_8822E 0x7 +#define BIT_RX_LOW_TIMER_IDX_8822E(x) \ + (((x) & BIT_MASK_RX_LOW_TIMER_IDX_8822E) \ + << BIT_SHIFT_RX_LOW_TIMER_IDX_8822E) +#define BITS_RX_LOW_TIMER_IDX_8822E \ + (BIT_MASK_RX_LOW_TIMER_IDX_8822E << BIT_SHIFT_RX_LOW_TIMER_IDX_8822E) +#define BIT_CLEAR_RX_LOW_TIMER_IDX_8822E(x) \ + ((x) & (~BITS_RX_LOW_TIMER_IDX_8822E)) +#define BIT_GET_RX_LOW_TIMER_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RX_LOW_TIMER_IDX_8822E) & \ + BIT_MASK_RX_LOW_TIMER_IDX_8822E) +#define BIT_SET_RX_LOW_TIMER_IDX_8822E(x, v) \ + (BIT_CLEAR_RX_LOW_TIMER_IDX_8822E(x) | BIT_RX_LOW_TIMER_IDX_8822E(v)) + +#define BIT_SHIFT_OBFF_INT_TIMER_IDX_8822E 0 +#define BIT_MASK_OBFF_INT_TIMER_IDX_8822E 0x7 +#define BIT_OBFF_INT_TIMER_IDX_8822E(x) \ + (((x) & BIT_MASK_OBFF_INT_TIMER_IDX_8822E) \ + << BIT_SHIFT_OBFF_INT_TIMER_IDX_8822E) +#define BITS_OBFF_INT_TIMER_IDX_8822E \ + (BIT_MASK_OBFF_INT_TIMER_IDX_8822E \ + << BIT_SHIFT_OBFF_INT_TIMER_IDX_8822E) +#define BIT_CLEAR_OBFF_INT_TIMER_IDX_8822E(x) \ + ((x) & (~BITS_OBFF_INT_TIMER_IDX_8822E)) +#define BIT_GET_OBFF_INT_TIMER_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_OBFF_INT_TIMER_IDX_8822E) & \ + BIT_MASK_OBFF_INT_TIMER_IDX_8822E) +#define BIT_SET_OBFF_INT_TIMER_IDX_8822E(x, v) \ + (BIT_CLEAR_OBFF_INT_TIMER_IDX_8822E(x) | \ + BIT_OBFF_INT_TIMER_IDX_8822E(v)) + +/* 2 REG_LTR_CTRL_BASIC_8822E */ +#define BIT_LTR_EN_V1_8822E BIT(31) +#define BIT_LTR_HW_EN_V1_8822E BIT(30) +#define BIT_LRT_ACT_CTS_EN_8822E BIT(29) +#define BIT_LTR_ACT_RXPKT_EN_8822E BIT(28) +#define BIT_LTR_ACT_RXDMA_EN_8822E BIT(27) +#define BIT_LTR_IDLE_NO_SNOOP_8822E BIT(26) +#define BIT_SPDUP_MGTPKT_8822E BIT(25) +#define BIT_RX_AGG_EN_8822E BIT(24) +#define BIT_APP_LTR_ACT_8822E BIT(23) +#define BIT_APP_LTR_IDLE_8822E BIT(22) + +#define BIT_SHIFT_HIGH_RATE_TRIG_SEL_8822E 20 +#define BIT_MASK_HIGH_RATE_TRIG_SEL_8822E 0x3 +#define BIT_HIGH_RATE_TRIG_SEL_8822E(x) \ + (((x) & BIT_MASK_HIGH_RATE_TRIG_SEL_8822E) \ + << BIT_SHIFT_HIGH_RATE_TRIG_SEL_8822E) +#define BITS_HIGH_RATE_TRIG_SEL_8822E \ + (BIT_MASK_HIGH_RATE_TRIG_SEL_8822E \ + << BIT_SHIFT_HIGH_RATE_TRIG_SEL_8822E) +#define BIT_CLEAR_HIGH_RATE_TRIG_SEL_8822E(x) \ + ((x) & (~BITS_HIGH_RATE_TRIG_SEL_8822E)) +#define BIT_GET_HIGH_RATE_TRIG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_HIGH_RATE_TRIG_SEL_8822E) & \ + BIT_MASK_HIGH_RATE_TRIG_SEL_8822E) +#define BIT_SET_HIGH_RATE_TRIG_SEL_8822E(x, v) \ + (BIT_CLEAR_HIGH_RATE_TRIG_SEL_8822E(x) | \ + BIT_HIGH_RATE_TRIG_SEL_8822E(v)) + +#define BIT_SHIFT_MED_RATE_TRIG_SEL_8822E 18 +#define BIT_MASK_MED_RATE_TRIG_SEL_8822E 0x3 +#define BIT_MED_RATE_TRIG_SEL_8822E(x) \ + (((x) & BIT_MASK_MED_RATE_TRIG_SEL_8822E) \ + << BIT_SHIFT_MED_RATE_TRIG_SEL_8822E) +#define BITS_MED_RATE_TRIG_SEL_8822E \ + (BIT_MASK_MED_RATE_TRIG_SEL_8822E << BIT_SHIFT_MED_RATE_TRIG_SEL_8822E) +#define BIT_CLEAR_MED_RATE_TRIG_SEL_8822E(x) \ + ((x) & (~BITS_MED_RATE_TRIG_SEL_8822E)) +#define BIT_GET_MED_RATE_TRIG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_MED_RATE_TRIG_SEL_8822E) & \ + BIT_MASK_MED_RATE_TRIG_SEL_8822E) +#define BIT_SET_MED_RATE_TRIG_SEL_8822E(x, v) \ + (BIT_CLEAR_MED_RATE_TRIG_SEL_8822E(x) | BIT_MED_RATE_TRIG_SEL_8822E(v)) + +#define BIT_SHIFT_LOW_RATE_TRIG_SEL_8822E 16 +#define BIT_MASK_LOW_RATE_TRIG_SEL_8822E 0x3 +#define BIT_LOW_RATE_TRIG_SEL_8822E(x) \ + (((x) & BIT_MASK_LOW_RATE_TRIG_SEL_8822E) \ + << BIT_SHIFT_LOW_RATE_TRIG_SEL_8822E) +#define BITS_LOW_RATE_TRIG_SEL_8822E \ + (BIT_MASK_LOW_RATE_TRIG_SEL_8822E << BIT_SHIFT_LOW_RATE_TRIG_SEL_8822E) +#define BIT_CLEAR_LOW_RATE_TRIG_SEL_8822E(x) \ + ((x) & (~BITS_LOW_RATE_TRIG_SEL_8822E)) +#define BIT_GET_LOW_RATE_TRIG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_LOW_RATE_TRIG_SEL_8822E) & \ + BIT_MASK_LOW_RATE_TRIG_SEL_8822E) +#define BIT_SET_LOW_RATE_TRIG_SEL_8822E(x, v) \ + (BIT_CLEAR_LOW_RATE_TRIG_SEL_8822E(x) | BIT_LOW_RATE_TRIG_SEL_8822E(v)) + +#define BIT_SHIFT_HIGH_RATE_BD_IDX_8822E 8 +#define BIT_MASK_HIGH_RATE_BD_IDX_8822E 0x7f +#define BIT_HIGH_RATE_BD_IDX_8822E(x) \ + (((x) & BIT_MASK_HIGH_RATE_BD_IDX_8822E) \ + << BIT_SHIFT_HIGH_RATE_BD_IDX_8822E) +#define BITS_HIGH_RATE_BD_IDX_8822E \ + (BIT_MASK_HIGH_RATE_BD_IDX_8822E << BIT_SHIFT_HIGH_RATE_BD_IDX_8822E) +#define BIT_CLEAR_HIGH_RATE_BD_IDX_8822E(x) \ + ((x) & (~BITS_HIGH_RATE_BD_IDX_8822E)) +#define BIT_GET_HIGH_RATE_BD_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_HIGH_RATE_BD_IDX_8822E) & \ + BIT_MASK_HIGH_RATE_BD_IDX_8822E) +#define BIT_SET_HIGH_RATE_BD_IDX_8822E(x, v) \ + (BIT_CLEAR_HIGH_RATE_BD_IDX_8822E(x) | BIT_HIGH_RATE_BD_IDX_8822E(v)) + +#define BIT_SHIFT_LOW_RATE_BD_IDX_8822E 0 +#define BIT_MASK_LOW_RATE_BD_IDX_8822E 0x7f +#define BIT_LOW_RATE_BD_IDX_8822E(x) \ + (((x) & BIT_MASK_LOW_RATE_BD_IDX_8822E) \ + << BIT_SHIFT_LOW_RATE_BD_IDX_8822E) +#define BITS_LOW_RATE_BD_IDX_8822E \ + (BIT_MASK_LOW_RATE_BD_IDX_8822E << BIT_SHIFT_LOW_RATE_BD_IDX_8822E) +#define BIT_CLEAR_LOW_RATE_BD_IDX_8822E(x) ((x) & (~BITS_LOW_RATE_BD_IDX_8822E)) +#define BIT_GET_LOW_RATE_BD_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_LOW_RATE_BD_IDX_8822E) & \ + BIT_MASK_LOW_RATE_BD_IDX_8822E) +#define BIT_SET_LOW_RATE_BD_IDX_8822E(x, v) \ + (BIT_CLEAR_LOW_RATE_BD_IDX_8822E(x) | BIT_LOW_RATE_BD_IDX_8822E(v)) + +/* 2 REG_LTR_CTRL2_TIMER_THRESHOLD_8822E */ + +#define BIT_SHIFT_RX_EMPTY_TIMER_IDX_8822E 24 +#define BIT_MASK_RX_EMPTY_TIMER_IDX_8822E 0x7 +#define BIT_RX_EMPTY_TIMER_IDX_8822E(x) \ + (((x) & BIT_MASK_RX_EMPTY_TIMER_IDX_8822E) \ + << BIT_SHIFT_RX_EMPTY_TIMER_IDX_8822E) +#define BITS_RX_EMPTY_TIMER_IDX_8822E \ + (BIT_MASK_RX_EMPTY_TIMER_IDX_8822E \ + << BIT_SHIFT_RX_EMPTY_TIMER_IDX_8822E) +#define BIT_CLEAR_RX_EMPTY_TIMER_IDX_8822E(x) \ + ((x) & (~BITS_RX_EMPTY_TIMER_IDX_8822E)) +#define BIT_GET_RX_EMPTY_TIMER_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RX_EMPTY_TIMER_IDX_8822E) & \ + BIT_MASK_RX_EMPTY_TIMER_IDX_8822E) +#define BIT_SET_RX_EMPTY_TIMER_IDX_8822E(x, v) \ + (BIT_CLEAR_RX_EMPTY_TIMER_IDX_8822E(x) | \ + BIT_RX_EMPTY_TIMER_IDX_8822E(v)) + +#define BIT_SHIFT_RX_AFULL_TH_IDX_8822E 20 +#define BIT_MASK_RX_AFULL_TH_IDX_8822E 0x7 +#define BIT_RX_AFULL_TH_IDX_8822E(x) \ + (((x) & BIT_MASK_RX_AFULL_TH_IDX_8822E) \ + << BIT_SHIFT_RX_AFULL_TH_IDX_8822E) +#define BITS_RX_AFULL_TH_IDX_8822E \ + (BIT_MASK_RX_AFULL_TH_IDX_8822E << BIT_SHIFT_RX_AFULL_TH_IDX_8822E) +#define BIT_CLEAR_RX_AFULL_TH_IDX_8822E(x) ((x) & (~BITS_RX_AFULL_TH_IDX_8822E)) +#define BIT_GET_RX_AFULL_TH_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RX_AFULL_TH_IDX_8822E) & \ + BIT_MASK_RX_AFULL_TH_IDX_8822E) +#define BIT_SET_RX_AFULL_TH_IDX_8822E(x, v) \ + (BIT_CLEAR_RX_AFULL_TH_IDX_8822E(x) | BIT_RX_AFULL_TH_IDX_8822E(v)) + +#define BIT_SHIFT_RX_HIGH_TH_IDX_8822E 16 +#define BIT_MASK_RX_HIGH_TH_IDX_8822E 0x7 +#define BIT_RX_HIGH_TH_IDX_8822E(x) \ + (((x) & BIT_MASK_RX_HIGH_TH_IDX_8822E) \ + << BIT_SHIFT_RX_HIGH_TH_IDX_8822E) +#define BITS_RX_HIGH_TH_IDX_8822E \ + (BIT_MASK_RX_HIGH_TH_IDX_8822E << BIT_SHIFT_RX_HIGH_TH_IDX_8822E) +#define BIT_CLEAR_RX_HIGH_TH_IDX_8822E(x) ((x) & (~BITS_RX_HIGH_TH_IDX_8822E)) +#define BIT_GET_RX_HIGH_TH_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RX_HIGH_TH_IDX_8822E) & \ + BIT_MASK_RX_HIGH_TH_IDX_8822E) +#define BIT_SET_RX_HIGH_TH_IDX_8822E(x, v) \ + (BIT_CLEAR_RX_HIGH_TH_IDX_8822E(x) | BIT_RX_HIGH_TH_IDX_8822E(v)) + +#define BIT_SHIFT_RX_MED_TH_IDX_8822E 12 +#define BIT_MASK_RX_MED_TH_IDX_8822E 0x7 +#define BIT_RX_MED_TH_IDX_8822E(x) \ + (((x) & BIT_MASK_RX_MED_TH_IDX_8822E) << BIT_SHIFT_RX_MED_TH_IDX_8822E) +#define BITS_RX_MED_TH_IDX_8822E \ + (BIT_MASK_RX_MED_TH_IDX_8822E << BIT_SHIFT_RX_MED_TH_IDX_8822E) +#define BIT_CLEAR_RX_MED_TH_IDX_8822E(x) ((x) & (~BITS_RX_MED_TH_IDX_8822E)) +#define BIT_GET_RX_MED_TH_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RX_MED_TH_IDX_8822E) & BIT_MASK_RX_MED_TH_IDX_8822E) +#define BIT_SET_RX_MED_TH_IDX_8822E(x, v) \ + (BIT_CLEAR_RX_MED_TH_IDX_8822E(x) | BIT_RX_MED_TH_IDX_8822E(v)) + +#define BIT_SHIFT_RX_LOW_TH_IDX_8822E 8 +#define BIT_MASK_RX_LOW_TH_IDX_8822E 0x7 +#define BIT_RX_LOW_TH_IDX_8822E(x) \ + (((x) & BIT_MASK_RX_LOW_TH_IDX_8822E) << BIT_SHIFT_RX_LOW_TH_IDX_8822E) +#define BITS_RX_LOW_TH_IDX_8822E \ + (BIT_MASK_RX_LOW_TH_IDX_8822E << BIT_SHIFT_RX_LOW_TH_IDX_8822E) +#define BIT_CLEAR_RX_LOW_TH_IDX_8822E(x) ((x) & (~BITS_RX_LOW_TH_IDX_8822E)) +#define BIT_GET_RX_LOW_TH_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_RX_LOW_TH_IDX_8822E) & BIT_MASK_RX_LOW_TH_IDX_8822E) +#define BIT_SET_RX_LOW_TH_IDX_8822E(x, v) \ + (BIT_CLEAR_RX_LOW_TH_IDX_8822E(x) | BIT_RX_LOW_TH_IDX_8822E(v)) + +#define BIT_SHIFT_LTR_SPACE_IDX_8822E 4 +#define BIT_MASK_LTR_SPACE_IDX_8822E 0x3 +#define BIT_LTR_SPACE_IDX_8822E(x) \ + (((x) & BIT_MASK_LTR_SPACE_IDX_8822E) << BIT_SHIFT_LTR_SPACE_IDX_8822E) +#define BITS_LTR_SPACE_IDX_8822E \ + (BIT_MASK_LTR_SPACE_IDX_8822E << BIT_SHIFT_LTR_SPACE_IDX_8822E) +#define BIT_CLEAR_LTR_SPACE_IDX_8822E(x) ((x) & (~BITS_LTR_SPACE_IDX_8822E)) +#define BIT_GET_LTR_SPACE_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_LTR_SPACE_IDX_8822E) & BIT_MASK_LTR_SPACE_IDX_8822E) +#define BIT_SET_LTR_SPACE_IDX_8822E(x, v) \ + (BIT_CLEAR_LTR_SPACE_IDX_8822E(x) | BIT_LTR_SPACE_IDX_8822E(v)) + +#define BIT_SHIFT_LTR_IDLE_TIMER_IDX_8822E 0 +#define BIT_MASK_LTR_IDLE_TIMER_IDX_8822E 0x7 +#define BIT_LTR_IDLE_TIMER_IDX_8822E(x) \ + (((x) & BIT_MASK_LTR_IDLE_TIMER_IDX_8822E) \ + << BIT_SHIFT_LTR_IDLE_TIMER_IDX_8822E) +#define BITS_LTR_IDLE_TIMER_IDX_8822E \ + (BIT_MASK_LTR_IDLE_TIMER_IDX_8822E \ + << BIT_SHIFT_LTR_IDLE_TIMER_IDX_8822E) +#define BIT_CLEAR_LTR_IDLE_TIMER_IDX_8822E(x) \ + ((x) & (~BITS_LTR_IDLE_TIMER_IDX_8822E)) +#define BIT_GET_LTR_IDLE_TIMER_IDX_8822E(x) \ + (((x) >> BIT_SHIFT_LTR_IDLE_TIMER_IDX_8822E) & \ + BIT_MASK_LTR_IDLE_TIMER_IDX_8822E) +#define BIT_SET_LTR_IDLE_TIMER_IDX_8822E(x, v) \ + (BIT_CLEAR_LTR_IDLE_TIMER_IDX_8822E(x) | \ + BIT_LTR_IDLE_TIMER_IDX_8822E(v)) + +/* 2 REG_LTR_IDLE_LATENCY_V1_8822E */ + +#define BIT_SHIFT_LTR_IDLE_L_8822E 0 +#define BIT_MASK_LTR_IDLE_L_8822E 0xffffffffL +#define BIT_LTR_IDLE_L_8822E(x) \ + (((x) & BIT_MASK_LTR_IDLE_L_8822E) << BIT_SHIFT_LTR_IDLE_L_8822E) +#define BITS_LTR_IDLE_L_8822E \ + (BIT_MASK_LTR_IDLE_L_8822E << BIT_SHIFT_LTR_IDLE_L_8822E) +#define BIT_CLEAR_LTR_IDLE_L_8822E(x) ((x) & (~BITS_LTR_IDLE_L_8822E)) +#define BIT_GET_LTR_IDLE_L_8822E(x) \ + (((x) >> BIT_SHIFT_LTR_IDLE_L_8822E) & BIT_MASK_LTR_IDLE_L_8822E) +#define BIT_SET_LTR_IDLE_L_8822E(x, v) \ + (BIT_CLEAR_LTR_IDLE_L_8822E(x) | BIT_LTR_IDLE_L_8822E(v)) + +/* 2 REG_LTR_ACTIVE_LATENCY_V1_8822E */ + +#define BIT_SHIFT_LTR_ACT_L_8822E 0 +#define BIT_MASK_LTR_ACT_L_8822E 0xffffffffL +#define BIT_LTR_ACT_L_8822E(x) \ + (((x) & BIT_MASK_LTR_ACT_L_8822E) << BIT_SHIFT_LTR_ACT_L_8822E) +#define BITS_LTR_ACT_L_8822E \ + (BIT_MASK_LTR_ACT_L_8822E << BIT_SHIFT_LTR_ACT_L_8822E) +#define BIT_CLEAR_LTR_ACT_L_8822E(x) ((x) & (~BITS_LTR_ACT_L_8822E)) +#define BIT_GET_LTR_ACT_L_8822E(x) \ + (((x) >> BIT_SHIFT_LTR_ACT_L_8822E) & BIT_MASK_LTR_ACT_L_8822E) +#define BIT_SET_LTR_ACT_L_8822E(x, v) \ + (BIT_CLEAR_LTR_ACT_L_8822E(x) | BIT_LTR_ACT_L_8822E(v)) + +/* 2 REG_ANTENNA_TRAINING_CONTROL_REGISTER_8822E */ + +#define BIT_SHIFT_TRAIN_STA_ADDR_0_8822E 0 +#define BIT_MASK_TRAIN_STA_ADDR_0_8822E 0xffffffffL +#define BIT_TRAIN_STA_ADDR_0_8822E(x) \ + (((x) & BIT_MASK_TRAIN_STA_ADDR_0_8822E) \ + << BIT_SHIFT_TRAIN_STA_ADDR_0_8822E) +#define BITS_TRAIN_STA_ADDR_0_8822E \ + (BIT_MASK_TRAIN_STA_ADDR_0_8822E << BIT_SHIFT_TRAIN_STA_ADDR_0_8822E) +#define BIT_CLEAR_TRAIN_STA_ADDR_0_8822E(x) \ + ((x) & (~BITS_TRAIN_STA_ADDR_0_8822E)) +#define BIT_GET_TRAIN_STA_ADDR_0_8822E(x) \ + (((x) >> BIT_SHIFT_TRAIN_STA_ADDR_0_8822E) & \ + BIT_MASK_TRAIN_STA_ADDR_0_8822E) +#define BIT_SET_TRAIN_STA_ADDR_0_8822E(x, v) \ + (BIT_CLEAR_TRAIN_STA_ADDR_0_8822E(x) | BIT_TRAIN_STA_ADDR_0_8822E(v)) + +/* 2 REG_ANTENNA_TRAINING_CONTROL_REGISTER_1_8822E */ +#define BIT_ANTTRN_SWITCH_8822E BIT(19) +#define BIT_APPEND_MACID_IN_RESP_EN_1_8822E BIT(18) +#define BIT_ADDR2_MATCH_EN_1_8822E BIT(17) +#define BIT_ANTTRN_EN_1_8822E BIT(16) + +#define BIT_SHIFT_TRAIN_STA_ADDR_1_8822E 0 +#define BIT_MASK_TRAIN_STA_ADDR_1_8822E 0xffff +#define BIT_TRAIN_STA_ADDR_1_8822E(x) \ + (((x) & BIT_MASK_TRAIN_STA_ADDR_1_8822E) \ + << BIT_SHIFT_TRAIN_STA_ADDR_1_8822E) +#define BITS_TRAIN_STA_ADDR_1_8822E \ + (BIT_MASK_TRAIN_STA_ADDR_1_8822E << BIT_SHIFT_TRAIN_STA_ADDR_1_8822E) +#define BIT_CLEAR_TRAIN_STA_ADDR_1_8822E(x) \ + ((x) & (~BITS_TRAIN_STA_ADDR_1_8822E)) +#define BIT_GET_TRAIN_STA_ADDR_1_8822E(x) \ + (((x) >> BIT_SHIFT_TRAIN_STA_ADDR_1_8822E) & \ + BIT_MASK_TRAIN_STA_ADDR_1_8822E) +#define BIT_SET_TRAIN_STA_ADDR_1_8822E(x, v) \ + (BIT_CLEAR_TRAIN_STA_ADDR_1_8822E(x) | BIT_TRAIN_STA_ADDR_1_8822E(v)) + +/* 2 REG_WMAC_PKTCNT_RWD_8822E */ + +#define BIT_SHIFT_PKTCNT_BSSIDMAP_8822E 4 +#define BIT_MASK_PKTCNT_BSSIDMAP_8822E 0xf +#define BIT_PKTCNT_BSSIDMAP_8822E(x) \ + (((x) & BIT_MASK_PKTCNT_BSSIDMAP_8822E) \ + << BIT_SHIFT_PKTCNT_BSSIDMAP_8822E) +#define BITS_PKTCNT_BSSIDMAP_8822E \ + (BIT_MASK_PKTCNT_BSSIDMAP_8822E << BIT_SHIFT_PKTCNT_BSSIDMAP_8822E) +#define BIT_CLEAR_PKTCNT_BSSIDMAP_8822E(x) ((x) & (~BITS_PKTCNT_BSSIDMAP_8822E)) +#define BIT_GET_PKTCNT_BSSIDMAP_8822E(x) \ + (((x) >> BIT_SHIFT_PKTCNT_BSSIDMAP_8822E) & \ + BIT_MASK_PKTCNT_BSSIDMAP_8822E) +#define BIT_SET_PKTCNT_BSSIDMAP_8822E(x, v) \ + (BIT_CLEAR_PKTCNT_BSSIDMAP_8822E(x) | BIT_PKTCNT_BSSIDMAP_8822E(v)) + +#define BIT_PKTCNT_CNTRST_8822E BIT(1) +#define BIT_PKTCNT_CNTEN_8822E BIT(0) + +/* 2 REG_WMAC_PKTCNT_CTRL_8822E */ +#define BIT_WMAC_PKTCNT_TRST_8822E BIT(9) +#define BIT_WMAC_PKTCNT_FEN_8822E BIT(8) + +#define BIT_SHIFT_WMAC_PKTCNT_CFGAD_8822E 0 +#define BIT_MASK_WMAC_PKTCNT_CFGAD_8822E 0xff +#define BIT_WMAC_PKTCNT_CFGAD_8822E(x) \ + (((x) & BIT_MASK_WMAC_PKTCNT_CFGAD_8822E) \ + << BIT_SHIFT_WMAC_PKTCNT_CFGAD_8822E) +#define BITS_WMAC_PKTCNT_CFGAD_8822E \ + (BIT_MASK_WMAC_PKTCNT_CFGAD_8822E << BIT_SHIFT_WMAC_PKTCNT_CFGAD_8822E) +#define BIT_CLEAR_WMAC_PKTCNT_CFGAD_8822E(x) \ + ((x) & (~BITS_WMAC_PKTCNT_CFGAD_8822E)) +#define BIT_GET_WMAC_PKTCNT_CFGAD_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_PKTCNT_CFGAD_8822E) & \ + BIT_MASK_WMAC_PKTCNT_CFGAD_8822E) +#define BIT_SET_WMAC_PKTCNT_CFGAD_8822E(x, v) \ + (BIT_CLEAR_WMAC_PKTCNT_CFGAD_8822E(x) | BIT_WMAC_PKTCNT_CFGAD_8822E(v)) + +/* 2 REG_IQ_DUMP_8822E */ + +#define BIT_SHIFT_DUMP_OK_ADDR_8822E 16 +#define BIT_MASK_DUMP_OK_ADDR_8822E 0xffff +#define BIT_DUMP_OK_ADDR_8822E(x) \ + (((x) & BIT_MASK_DUMP_OK_ADDR_8822E) << BIT_SHIFT_DUMP_OK_ADDR_8822E) +#define BITS_DUMP_OK_ADDR_8822E \ + (BIT_MASK_DUMP_OK_ADDR_8822E << BIT_SHIFT_DUMP_OK_ADDR_8822E) +#define BIT_CLEAR_DUMP_OK_ADDR_8822E(x) ((x) & (~BITS_DUMP_OK_ADDR_8822E)) +#define BIT_GET_DUMP_OK_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_DUMP_OK_ADDR_8822E) & BIT_MASK_DUMP_OK_ADDR_8822E) +#define BIT_SET_DUMP_OK_ADDR_8822E(x, v) \ + (BIT_CLEAR_DUMP_OK_ADDR_8822E(x) | BIT_DUMP_OK_ADDR_8822E(v)) + +#define BIT_MACDBG_TRIG_IQDUMP_8822E BIT(15) + +#define BIT_SHIFT_R_TRIG_TIME_SEL_8822E 8 +#define BIT_MASK_R_TRIG_TIME_SEL_8822E 0x7f +#define BIT_R_TRIG_TIME_SEL_8822E(x) \ + (((x) & BIT_MASK_R_TRIG_TIME_SEL_8822E) \ + << BIT_SHIFT_R_TRIG_TIME_SEL_8822E) +#define BITS_R_TRIG_TIME_SEL_8822E \ + (BIT_MASK_R_TRIG_TIME_SEL_8822E << BIT_SHIFT_R_TRIG_TIME_SEL_8822E) +#define BIT_CLEAR_R_TRIG_TIME_SEL_8822E(x) ((x) & (~BITS_R_TRIG_TIME_SEL_8822E)) +#define BIT_GET_R_TRIG_TIME_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_R_TRIG_TIME_SEL_8822E) & \ + BIT_MASK_R_TRIG_TIME_SEL_8822E) +#define BIT_SET_R_TRIG_TIME_SEL_8822E(x, v) \ + (BIT_CLEAR_R_TRIG_TIME_SEL_8822E(x) | BIT_R_TRIG_TIME_SEL_8822E(v)) + +#define BIT_SHIFT_R_MAC_TRIG_SEL_8822E 6 +#define BIT_MASK_R_MAC_TRIG_SEL_8822E 0x3 +#define BIT_R_MAC_TRIG_SEL_8822E(x) \ + (((x) & BIT_MASK_R_MAC_TRIG_SEL_8822E) \ + << BIT_SHIFT_R_MAC_TRIG_SEL_8822E) +#define BITS_R_MAC_TRIG_SEL_8822E \ + (BIT_MASK_R_MAC_TRIG_SEL_8822E << BIT_SHIFT_R_MAC_TRIG_SEL_8822E) +#define BIT_CLEAR_R_MAC_TRIG_SEL_8822E(x) ((x) & (~BITS_R_MAC_TRIG_SEL_8822E)) +#define BIT_GET_R_MAC_TRIG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_R_MAC_TRIG_SEL_8822E) & \ + BIT_MASK_R_MAC_TRIG_SEL_8822E) +#define BIT_SET_R_MAC_TRIG_SEL_8822E(x, v) \ + (BIT_CLEAR_R_MAC_TRIG_SEL_8822E(x) | BIT_R_MAC_TRIG_SEL_8822E(v)) + +#define BIT_MAC_TRIG_REG_8822E BIT(5) + +#define BIT_SHIFT_R_LEVEL_PULSE_SEL_8822E 3 +#define BIT_MASK_R_LEVEL_PULSE_SEL_8822E 0x3 +#define BIT_R_LEVEL_PULSE_SEL_8822E(x) \ + (((x) & BIT_MASK_R_LEVEL_PULSE_SEL_8822E) \ + << BIT_SHIFT_R_LEVEL_PULSE_SEL_8822E) +#define BITS_R_LEVEL_PULSE_SEL_8822E \ + (BIT_MASK_R_LEVEL_PULSE_SEL_8822E << BIT_SHIFT_R_LEVEL_PULSE_SEL_8822E) +#define BIT_CLEAR_R_LEVEL_PULSE_SEL_8822E(x) \ + ((x) & (~BITS_R_LEVEL_PULSE_SEL_8822E)) +#define BIT_GET_R_LEVEL_PULSE_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_R_LEVEL_PULSE_SEL_8822E) & \ + BIT_MASK_R_LEVEL_PULSE_SEL_8822E) +#define BIT_SET_R_LEVEL_PULSE_SEL_8822E(x, v) \ + (BIT_CLEAR_R_LEVEL_PULSE_SEL_8822E(x) | BIT_R_LEVEL_PULSE_SEL_8822E(v)) + +#define BIT_EN_LA_MAC_8822E BIT(2) +#define BIT_R_EN_IQDUMP_8822E BIT(1) +#define BIT_R_IQDATA_DUMP_8822E BIT(0) + +/* 2 REG_IQ_DUMP_1_8822E */ + +#define BIT_SHIFT_R_WMAC_MASK_LA_MAC_1_8822E 0 +#define BIT_MASK_R_WMAC_MASK_LA_MAC_1_8822E 0xffffffffL +#define BIT_R_WMAC_MASK_LA_MAC_1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_MASK_LA_MAC_1_8822E) \ + << BIT_SHIFT_R_WMAC_MASK_LA_MAC_1_8822E) +#define BITS_R_WMAC_MASK_LA_MAC_1_8822E \ + (BIT_MASK_R_WMAC_MASK_LA_MAC_1_8822E \ + << BIT_SHIFT_R_WMAC_MASK_LA_MAC_1_8822E) +#define BIT_CLEAR_R_WMAC_MASK_LA_MAC_1_8822E(x) \ + ((x) & (~BITS_R_WMAC_MASK_LA_MAC_1_8822E)) +#define BIT_GET_R_WMAC_MASK_LA_MAC_1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_MASK_LA_MAC_1_8822E) & \ + BIT_MASK_R_WMAC_MASK_LA_MAC_1_8822E) +#define BIT_SET_R_WMAC_MASK_LA_MAC_1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_MASK_LA_MAC_1_8822E(x) | \ + BIT_R_WMAC_MASK_LA_MAC_1_8822E(v)) + +/* 2 REG_IQ_DUMP_2_8822E */ + +#define BIT_SHIFT_R_WMAC_MATCH_REF_MAC_2_8822E 0 +#define BIT_MASK_R_WMAC_MATCH_REF_MAC_2_8822E 0xffffffffL +#define BIT_R_WMAC_MATCH_REF_MAC_2_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_MATCH_REF_MAC_2_8822E) \ + << BIT_SHIFT_R_WMAC_MATCH_REF_MAC_2_8822E) +#define BITS_R_WMAC_MATCH_REF_MAC_2_8822E \ + (BIT_MASK_R_WMAC_MATCH_REF_MAC_2_8822E \ + << BIT_SHIFT_R_WMAC_MATCH_REF_MAC_2_8822E) +#define BIT_CLEAR_R_WMAC_MATCH_REF_MAC_2_8822E(x) \ + ((x) & (~BITS_R_WMAC_MATCH_REF_MAC_2_8822E)) +#define BIT_GET_R_WMAC_MATCH_REF_MAC_2_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_MATCH_REF_MAC_2_8822E) & \ + BIT_MASK_R_WMAC_MATCH_REF_MAC_2_8822E) +#define BIT_SET_R_WMAC_MATCH_REF_MAC_2_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_MATCH_REF_MAC_2_8822E(x) | \ + BIT_R_WMAC_MATCH_REF_MAC_2_8822E(v)) + +/* 2 REG_WMAC_FTM_CTL_8822E */ +#define BIT_RXFTM_TXACK_SC_8822E BIT(6) +#define BIT_RXFTM_TXACK_BW_8822E BIT(5) +#define BIT_RXFTM_EN_8822E BIT(3) +#define BIT_RXFTMREQ_BYDRV_8822E BIT(2) +#define BIT_RXFTMREQ_EN_8822E BIT(1) +#define BIT_FTM_EN_8822E BIT(0) + +/* 2 REG_WMAC_IQ_MDPK_FUNC_8822E */ + +/* 2 REG_WMAC_OPTION_FUNCTION_8822E */ + +#define BIT_SHIFT_R_OFDM_LEN_V1_8822E 16 +#define BIT_MASK_R_OFDM_LEN_V1_8822E 0xffff +#define BIT_R_OFDM_LEN_V1_8822E(x) \ + (((x) & BIT_MASK_R_OFDM_LEN_V1_8822E) << BIT_SHIFT_R_OFDM_LEN_V1_8822E) +#define BITS_R_OFDM_LEN_V1_8822E \ + (BIT_MASK_R_OFDM_LEN_V1_8822E << BIT_SHIFT_R_OFDM_LEN_V1_8822E) +#define BIT_CLEAR_R_OFDM_LEN_V1_8822E(x) ((x) & (~BITS_R_OFDM_LEN_V1_8822E)) +#define BIT_GET_R_OFDM_LEN_V1_8822E(x) \ + (((x) >> BIT_SHIFT_R_OFDM_LEN_V1_8822E) & BIT_MASK_R_OFDM_LEN_V1_8822E) +#define BIT_SET_R_OFDM_LEN_V1_8822E(x, v) \ + (BIT_CLEAR_R_OFDM_LEN_V1_8822E(x) | BIT_R_OFDM_LEN_V1_8822E(v)) + +#define BIT_SHIFT_R_CCK_LEN_8822E 0 +#define BIT_MASK_R_CCK_LEN_8822E 0xffff +#define BIT_R_CCK_LEN_8822E(x) \ + (((x) & BIT_MASK_R_CCK_LEN_8822E) << BIT_SHIFT_R_CCK_LEN_8822E) +#define BITS_R_CCK_LEN_8822E \ + (BIT_MASK_R_CCK_LEN_8822E << BIT_SHIFT_R_CCK_LEN_8822E) +#define BIT_CLEAR_R_CCK_LEN_8822E(x) ((x) & (~BITS_R_CCK_LEN_8822E)) +#define BIT_GET_R_CCK_LEN_8822E(x) \ + (((x) >> BIT_SHIFT_R_CCK_LEN_8822E) & BIT_MASK_R_CCK_LEN_8822E) +#define BIT_SET_R_CCK_LEN_8822E(x, v) \ + (BIT_CLEAR_R_CCK_LEN_8822E(x) | BIT_R_CCK_LEN_8822E(v)) + +/* 2 REG_WMAC_OPTION_FUNCTION_1_8822E */ + +#define BIT_SHIFT_R_WMAC_RXFIFO_FULL_TH_1_8822E 24 +#define BIT_MASK_R_WMAC_RXFIFO_FULL_TH_1_8822E 0xff +#define BIT_R_WMAC_RXFIFO_FULL_TH_1_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_RXFIFO_FULL_TH_1_8822E) \ + << BIT_SHIFT_R_WMAC_RXFIFO_FULL_TH_1_8822E) +#define BITS_R_WMAC_RXFIFO_FULL_TH_1_8822E \ + (BIT_MASK_R_WMAC_RXFIFO_FULL_TH_1_8822E \ + << BIT_SHIFT_R_WMAC_RXFIFO_FULL_TH_1_8822E) +#define BIT_CLEAR_R_WMAC_RXFIFO_FULL_TH_1_8822E(x) \ + ((x) & (~BITS_R_WMAC_RXFIFO_FULL_TH_1_8822E)) +#define BIT_GET_R_WMAC_RXFIFO_FULL_TH_1_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_RXFIFO_FULL_TH_1_8822E) & \ + BIT_MASK_R_WMAC_RXFIFO_FULL_TH_1_8822E) +#define BIT_SET_R_WMAC_RXFIFO_FULL_TH_1_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_RXFIFO_FULL_TH_1_8822E(x) | \ + BIT_R_WMAC_RXFIFO_FULL_TH_1_8822E(v)) + +#define BIT_R_WMAC_RX_SYNCFIFO_SYNC_1_8822E BIT(23) +#define BIT_R_WMAC_RXRST_DLY_1_8822E BIT(22) +#define BIT_R_WMAC_SRCH_TXRPT_REF_DROP_1_8822E BIT(21) +#define BIT_R_WMAC_SRCH_TXRPT_UA1_1_8822E BIT(20) +#define BIT_R_WMAC_SRCH_TXRPT_TYPE_1_8822E BIT(19) +#define BIT_R_WMAC_NDP_RST_1_8822E BIT(18) +#define BIT_R_WMAC_POWINT_EN_1_8822E BIT(17) +#define BIT_R_WMAC_SRCH_TXRPT_PERPKT_1_8822E BIT(16) +#define BIT_R_WMAC_SRCH_TXRPT_MID_1_8822E BIT(15) +#define BIT_R_WMAC_PFIN_TOEN_1_8822E BIT(14) +#define BIT_R_WMAC_FIL_SECERR_1_8822E BIT(13) +#define BIT_R_WMAC_FIL_CTLPKTLEN_1_8822E BIT(12) +#define BIT_R_WMAC_FIL_FCTYPE_1_8822E BIT(11) +#define BIT_R_WMAC_FIL_FCPROVER_1_8822E BIT(10) +#define BIT_R_WMAC_PHYSTS_SNIF_1_8822E BIT(9) +#define BIT_R_WMAC_PHYSTS_PLCP_1_8822E BIT(8) +#define BIT_R_MAC_TCR_VBONF_RD_1_8822E BIT(7) +#define BIT_R_WMAC_TCR_MPAR_NDP_1_8822E BIT(6) +#define BIT_R_WMAC_NDP_FILTER_1_8822E BIT(5) +#define BIT_R_WMAC_RXLEN_SEL_1_8822E BIT(4) +#define BIT_R_WMAC_RXLEN_SEL1_1_8822E BIT(3) +#define BIT_R_OFDM_FILTER_1_8822E BIT(2) +#define BIT_R_WMAC_CHK_OFDM_LEN_1_8822E BIT(1) +#define BIT_R_WMAC_CHK_CCK_LEN_1_8822E BIT(0) + +/* 2 REG_WMAC_OPTION_FUNCTION_2_8822E */ + +#define BIT_SHIFT_R_WMAC_RX_FIL_LEN_2_8822E 0 +#define BIT_MASK_R_WMAC_RX_FIL_LEN_2_8822E 0xffff +#define BIT_R_WMAC_RX_FIL_LEN_2_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_RX_FIL_LEN_2_8822E) \ + << BIT_SHIFT_R_WMAC_RX_FIL_LEN_2_8822E) +#define BITS_R_WMAC_RX_FIL_LEN_2_8822E \ + (BIT_MASK_R_WMAC_RX_FIL_LEN_2_8822E \ + << BIT_SHIFT_R_WMAC_RX_FIL_LEN_2_8822E) +#define BIT_CLEAR_R_WMAC_RX_FIL_LEN_2_8822E(x) \ + ((x) & (~BITS_R_WMAC_RX_FIL_LEN_2_8822E)) +#define BIT_GET_R_WMAC_RX_FIL_LEN_2_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_RX_FIL_LEN_2_8822E) & \ + BIT_MASK_R_WMAC_RX_FIL_LEN_2_8822E) +#define BIT_SET_R_WMAC_RX_FIL_LEN_2_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_RX_FIL_LEN_2_8822E(x) | \ + BIT_R_WMAC_RX_FIL_LEN_2_8822E(v)) + +/* 2 REG_RX_FILTER_FUNCTION_8822E */ +#define BIT_RXHANG_EN_8822E BIT(15) +#define BIT_R_WMAC_MHRDDY_LATCH_8822E BIT(14) +#define BIT_R_WMAC_MHRDDY_CLR_8822E BIT(13) +#define BIT_R_RXPKTCTL_FSM_BASED_MPDURDY1_8822E BIT(12) +#define BIT_WMAC_DIS_VHT_PLCP_CHK_MU_8822E BIT(11) +#define BIT_R_CHK_DELIMIT_LEN_8822E BIT(10) +#define BIT_R_REAPTER_ADDR_MATCH_8822E BIT(9) +#define BIT_R_RXPKTCTL_FSM_BASED_MPDURDY_8822E BIT(8) +#define BIT_R_LATCH_MACHRDY_8822E BIT(7) +#define BIT_R_WMAC_RXFIL_REND_8822E BIT(6) +#define BIT_R_WMAC_MPDURDY_CLR_8822E BIT(5) +#define BIT_R_WMAC_CLRRXSEC_8822E BIT(4) +#define BIT_R_WMAC_RXFIL_RDEL_8822E BIT(3) +#define BIT_R_WMAC_RXFIL_FCSE_8822E BIT(2) +#define BIT_R_WMAC_RXFIL_MESH_DEL_8822E BIT(1) +#define BIT_R_WMAC_RXFIL_MASKM_8822E BIT(0) + +/* 2 REG_NDP_SIG_8822E */ + +#define BIT_SHIFT_R_WMAC_TXNDP_SIGB_8822E 0 +#define BIT_MASK_R_WMAC_TXNDP_SIGB_8822E 0x1fffff +#define BIT_R_WMAC_TXNDP_SIGB_8822E(x) \ + (((x) & BIT_MASK_R_WMAC_TXNDP_SIGB_8822E) \ + << BIT_SHIFT_R_WMAC_TXNDP_SIGB_8822E) +#define BITS_R_WMAC_TXNDP_SIGB_8822E \ + (BIT_MASK_R_WMAC_TXNDP_SIGB_8822E << BIT_SHIFT_R_WMAC_TXNDP_SIGB_8822E) +#define BIT_CLEAR_R_WMAC_TXNDP_SIGB_8822E(x) \ + ((x) & (~BITS_R_WMAC_TXNDP_SIGB_8822E)) +#define BIT_GET_R_WMAC_TXNDP_SIGB_8822E(x) \ + (((x) >> BIT_SHIFT_R_WMAC_TXNDP_SIGB_8822E) & \ + BIT_MASK_R_WMAC_TXNDP_SIGB_8822E) +#define BIT_SET_R_WMAC_TXNDP_SIGB_8822E(x, v) \ + (BIT_CLEAR_R_WMAC_TXNDP_SIGB_8822E(x) | BIT_R_WMAC_TXNDP_SIGB_8822E(v)) + +/* 2 REG_TXCMD_INFO_FOR_RSP_PKT_8822E */ + +#define BIT_SHIFT_R_MAC_DBG_SHIFT_8822E 8 +#define BIT_MASK_R_MAC_DBG_SHIFT_8822E 0x7 +#define BIT_R_MAC_DBG_SHIFT_8822E(x) \ + (((x) & BIT_MASK_R_MAC_DBG_SHIFT_8822E) \ + << BIT_SHIFT_R_MAC_DBG_SHIFT_8822E) +#define BITS_R_MAC_DBG_SHIFT_8822E \ + (BIT_MASK_R_MAC_DBG_SHIFT_8822E << BIT_SHIFT_R_MAC_DBG_SHIFT_8822E) +#define BIT_CLEAR_R_MAC_DBG_SHIFT_8822E(x) ((x) & (~BITS_R_MAC_DBG_SHIFT_8822E)) +#define BIT_GET_R_MAC_DBG_SHIFT_8822E(x) \ + (((x) >> BIT_SHIFT_R_MAC_DBG_SHIFT_8822E) & \ + BIT_MASK_R_MAC_DBG_SHIFT_8822E) +#define BIT_SET_R_MAC_DBG_SHIFT_8822E(x, v) \ + (BIT_CLEAR_R_MAC_DBG_SHIFT_8822E(x) | BIT_R_MAC_DBG_SHIFT_8822E(v)) + +#define BIT_SHIFT_R_MAC_DBG_SEL_8822E 0 +#define BIT_MASK_R_MAC_DBG_SEL_8822E 0x3 +#define BIT_R_MAC_DBG_SEL_8822E(x) \ + (((x) & BIT_MASK_R_MAC_DBG_SEL_8822E) << BIT_SHIFT_R_MAC_DBG_SEL_8822E) +#define BITS_R_MAC_DBG_SEL_8822E \ + (BIT_MASK_R_MAC_DBG_SEL_8822E << BIT_SHIFT_R_MAC_DBG_SEL_8822E) +#define BIT_CLEAR_R_MAC_DBG_SEL_8822E(x) ((x) & (~BITS_R_MAC_DBG_SEL_8822E)) +#define BIT_GET_R_MAC_DBG_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_R_MAC_DBG_SEL_8822E) & BIT_MASK_R_MAC_DBG_SEL_8822E) +#define BIT_SET_R_MAC_DBG_SEL_8822E(x, v) \ + (BIT_CLEAR_R_MAC_DBG_SEL_8822E(x) | BIT_R_MAC_DBG_SEL_8822E(v)) + +/* 2 REG_TXCMD_INFO_FOR_RSP_PKT_1_8822E */ + +#define BIT_SHIFT_R_MAC_DEBUG_1_8822E 0 +#define BIT_MASK_R_MAC_DEBUG_1_8822E 0xffffffffL +#define BIT_R_MAC_DEBUG_1_8822E(x) \ + (((x) & BIT_MASK_R_MAC_DEBUG_1_8822E) << BIT_SHIFT_R_MAC_DEBUG_1_8822E) +#define BITS_R_MAC_DEBUG_1_8822E \ + (BIT_MASK_R_MAC_DEBUG_1_8822E << BIT_SHIFT_R_MAC_DEBUG_1_8822E) +#define BIT_CLEAR_R_MAC_DEBUG_1_8822E(x) ((x) & (~BITS_R_MAC_DEBUG_1_8822E)) +#define BIT_GET_R_MAC_DEBUG_1_8822E(x) \ + (((x) >> BIT_SHIFT_R_MAC_DEBUG_1_8822E) & BIT_MASK_R_MAC_DEBUG_1_8822E) +#define BIT_SET_R_MAC_DEBUG_1_8822E(x, v) \ + (BIT_CLEAR_R_MAC_DEBUG_1_8822E(x) | BIT_R_MAC_DEBUG_1_8822E(v)) + +/* 2 REG_WSEC_OPTION_8822E */ +#define BIT_RXDEC_BM_MGNT_8822E BIT(22) +#define BIT_TXENC_BM_MGNT_8822E BIT(21) +#define BIT_RXDEC_UNI_MGNT_8822E BIT(20) +#define BIT_TXENC_UNI_MGNT_8822E BIT(19) +#define BIT_WMAC_SEC_MASKIV_8822E BIT(18) + +#define BIT_SHIFT_WMAC_SEC_PN_SEL_8822E 16 +#define BIT_MASK_WMAC_SEC_PN_SEL_8822E 0x3 +#define BIT_WMAC_SEC_PN_SEL_8822E(x) \ + (((x) & BIT_MASK_WMAC_SEC_PN_SEL_8822E) \ + << BIT_SHIFT_WMAC_SEC_PN_SEL_8822E) +#define BITS_WMAC_SEC_PN_SEL_8822E \ + (BIT_MASK_WMAC_SEC_PN_SEL_8822E << BIT_SHIFT_WMAC_SEC_PN_SEL_8822E) +#define BIT_CLEAR_WMAC_SEC_PN_SEL_8822E(x) ((x) & (~BITS_WMAC_SEC_PN_SEL_8822E)) +#define BIT_GET_WMAC_SEC_PN_SEL_8822E(x) \ + (((x) >> BIT_SHIFT_WMAC_SEC_PN_SEL_8822E) & \ + BIT_MASK_WMAC_SEC_PN_SEL_8822E) +#define BIT_SET_WMAC_SEC_PN_SEL_8822E(x, v) \ + (BIT_CLEAR_WMAC_SEC_PN_SEL_8822E(x) | BIT_WMAC_SEC_PN_SEL_8822E(v)) + +#define BIT_SHIFT_BT_TIME_CNT_8822E 0 +#define BIT_MASK_BT_TIME_CNT_8822E 0xff +#define BIT_BT_TIME_CNT_8822E(x) \ + (((x) & BIT_MASK_BT_TIME_CNT_8822E) << BIT_SHIFT_BT_TIME_CNT_8822E) +#define BITS_BT_TIME_CNT_8822E \ + (BIT_MASK_BT_TIME_CNT_8822E << BIT_SHIFT_BT_TIME_CNT_8822E) +#define BIT_CLEAR_BT_TIME_CNT_8822E(x) ((x) & (~BITS_BT_TIME_CNT_8822E)) +#define BIT_GET_BT_TIME_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_BT_TIME_CNT_8822E) & BIT_MASK_BT_TIME_CNT_8822E) +#define BIT_SET_BT_TIME_CNT_8822E(x, v) \ + (BIT_CLEAR_BT_TIME_CNT_8822E(x) | BIT_BT_TIME_CNT_8822E(v)) + +/* 2 REG_RTS_ADDRESS_0_8822E */ + +/* 2 REG_RTS_ADDRESS_0_1_8822E */ + +/* 2 REG_RTS_ADDRESS_1_8822E */ + +/* 2 REG_RTS_ADDRESS_1_1_8822E */ + +/* 2 REG_WL2LTECOEX_INDIRECT_ACCESS_CTRL_V1_8822E */ +#define BIT_LTECOEX_ACCESS_START_V1_8822E BIT(31) +#define BIT_LTECOEX_WRITE_MODE_V1_8822E BIT(30) +#define BIT_LTECOEX_READY_BIT_V1_8822E BIT(29) + +#define BIT_SHIFT_WRITE_BYTE_EN_V1_8822E 16 +#define BIT_MASK_WRITE_BYTE_EN_V1_8822E 0xf +#define BIT_WRITE_BYTE_EN_V1_8822E(x) \ + (((x) & BIT_MASK_WRITE_BYTE_EN_V1_8822E) \ + << BIT_SHIFT_WRITE_BYTE_EN_V1_8822E) +#define BITS_WRITE_BYTE_EN_V1_8822E \ + (BIT_MASK_WRITE_BYTE_EN_V1_8822E << BIT_SHIFT_WRITE_BYTE_EN_V1_8822E) +#define BIT_CLEAR_WRITE_BYTE_EN_V1_8822E(x) \ + ((x) & (~BITS_WRITE_BYTE_EN_V1_8822E)) +#define BIT_GET_WRITE_BYTE_EN_V1_8822E(x) \ + (((x) >> BIT_SHIFT_WRITE_BYTE_EN_V1_8822E) & \ + BIT_MASK_WRITE_BYTE_EN_V1_8822E) +#define BIT_SET_WRITE_BYTE_EN_V1_8822E(x, v) \ + (BIT_CLEAR_WRITE_BYTE_EN_V1_8822E(x) | BIT_WRITE_BYTE_EN_V1_8822E(v)) + +#define BIT_SHIFT_LTECOEX_REG_ADDR_V1_8822E 0 +#define BIT_MASK_LTECOEX_REG_ADDR_V1_8822E 0xffff +#define BIT_LTECOEX_REG_ADDR_V1_8822E(x) \ + (((x) & BIT_MASK_LTECOEX_REG_ADDR_V1_8822E) \ + << BIT_SHIFT_LTECOEX_REG_ADDR_V1_8822E) +#define BITS_LTECOEX_REG_ADDR_V1_8822E \ + (BIT_MASK_LTECOEX_REG_ADDR_V1_8822E \ + << BIT_SHIFT_LTECOEX_REG_ADDR_V1_8822E) +#define BIT_CLEAR_LTECOEX_REG_ADDR_V1_8822E(x) \ + ((x) & (~BITS_LTECOEX_REG_ADDR_V1_8822E)) +#define BIT_GET_LTECOEX_REG_ADDR_V1_8822E(x) \ + (((x) >> BIT_SHIFT_LTECOEX_REG_ADDR_V1_8822E) & \ + BIT_MASK_LTECOEX_REG_ADDR_V1_8822E) +#define BIT_SET_LTECOEX_REG_ADDR_V1_8822E(x, v) \ + (BIT_CLEAR_LTECOEX_REG_ADDR_V1_8822E(x) | \ + BIT_LTECOEX_REG_ADDR_V1_8822E(v)) + +/* 2 REG_WL2LTECOEX_INDIRECT_ACCESS_WRITE_DATA_V1_8822E */ + +#define BIT_SHIFT_LTECOEX_W_DATA_V1_8822E 0 +#define BIT_MASK_LTECOEX_W_DATA_V1_8822E 0xffffffffL +#define BIT_LTECOEX_W_DATA_V1_8822E(x) \ + (((x) & BIT_MASK_LTECOEX_W_DATA_V1_8822E) \ + << BIT_SHIFT_LTECOEX_W_DATA_V1_8822E) +#define BITS_LTECOEX_W_DATA_V1_8822E \ + (BIT_MASK_LTECOEX_W_DATA_V1_8822E << BIT_SHIFT_LTECOEX_W_DATA_V1_8822E) +#define BIT_CLEAR_LTECOEX_W_DATA_V1_8822E(x) \ + ((x) & (~BITS_LTECOEX_W_DATA_V1_8822E)) +#define BIT_GET_LTECOEX_W_DATA_V1_8822E(x) \ + (((x) >> BIT_SHIFT_LTECOEX_W_DATA_V1_8822E) & \ + BIT_MASK_LTECOEX_W_DATA_V1_8822E) +#define BIT_SET_LTECOEX_W_DATA_V1_8822E(x, v) \ + (BIT_CLEAR_LTECOEX_W_DATA_V1_8822E(x) | BIT_LTECOEX_W_DATA_V1_8822E(v)) + +/* 2 REG_WL2LTECOEX_INDIRECT_ACCESS_READ_DATA_V1_8822E */ + +#define BIT_SHIFT_LTECOEX_R_DATA_V1_8822E 0 +#define BIT_MASK_LTECOEX_R_DATA_V1_8822E 0xffffffffL +#define BIT_LTECOEX_R_DATA_V1_8822E(x) \ + (((x) & BIT_MASK_LTECOEX_R_DATA_V1_8822E) \ + << BIT_SHIFT_LTECOEX_R_DATA_V1_8822E) +#define BITS_LTECOEX_R_DATA_V1_8822E \ + (BIT_MASK_LTECOEX_R_DATA_V1_8822E << BIT_SHIFT_LTECOEX_R_DATA_V1_8822E) +#define BIT_CLEAR_LTECOEX_R_DATA_V1_8822E(x) \ + ((x) & (~BITS_LTECOEX_R_DATA_V1_8822E)) +#define BIT_GET_LTECOEX_R_DATA_V1_8822E(x) \ + (((x) >> BIT_SHIFT_LTECOEX_R_DATA_V1_8822E) & \ + BIT_MASK_LTECOEX_R_DATA_V1_8822E) +#define BIT_SET_LTECOEX_R_DATA_V1_8822E(x, v) \ + (BIT_CLEAR_LTECOEX_R_DATA_V1_8822E(x) | BIT_LTECOEX_R_DATA_V1_8822E(v)) + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_NOT_VALID_8822E */ + +/* 2 REG_SDIO_TX_CTRL_8822E */ + +#define BIT_SHIFT_SDIO_INT_TIMEOUT_8822E 16 +#define BIT_MASK_SDIO_INT_TIMEOUT_8822E 0xffff +#define BIT_SDIO_INT_TIMEOUT_8822E(x) \ + (((x) & BIT_MASK_SDIO_INT_TIMEOUT_8822E) \ + << BIT_SHIFT_SDIO_INT_TIMEOUT_8822E) +#define BITS_SDIO_INT_TIMEOUT_8822E \ + (BIT_MASK_SDIO_INT_TIMEOUT_8822E << BIT_SHIFT_SDIO_INT_TIMEOUT_8822E) +#define BIT_CLEAR_SDIO_INT_TIMEOUT_8822E(x) \ + ((x) & (~BITS_SDIO_INT_TIMEOUT_8822E)) +#define BIT_GET_SDIO_INT_TIMEOUT_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_INT_TIMEOUT_8822E) & \ + BIT_MASK_SDIO_INT_TIMEOUT_8822E) +#define BIT_SET_SDIO_INT_TIMEOUT_8822E(x, v) \ + (BIT_CLEAR_SDIO_INT_TIMEOUT_8822E(x) | BIT_SDIO_INT_TIMEOUT_8822E(v)) + +#define BIT_IO_ERR_STATUS_8822E BIT(15) +#define BIT_CMD53_W_MIX_8822E BIT(14) +#define BIT_CMD53_TX_FORMAT_8822E BIT(13) +#define BIT_CMD53_R_TIMEOUT_MASK_8822E BIT(12) + +#define BIT_SHIFT_CMD53_R_TIMEOUT_UNIT_8822E 10 +#define BIT_MASK_CMD53_R_TIMEOUT_UNIT_8822E 0x3 +#define BIT_CMD53_R_TIMEOUT_UNIT_8822E(x) \ + (((x) & BIT_MASK_CMD53_R_TIMEOUT_UNIT_8822E) \ + << BIT_SHIFT_CMD53_R_TIMEOUT_UNIT_8822E) +#define BITS_CMD53_R_TIMEOUT_UNIT_8822E \ + (BIT_MASK_CMD53_R_TIMEOUT_UNIT_8822E \ + << BIT_SHIFT_CMD53_R_TIMEOUT_UNIT_8822E) +#define BIT_CLEAR_CMD53_R_TIMEOUT_UNIT_8822E(x) \ + ((x) & (~BITS_CMD53_R_TIMEOUT_UNIT_8822E)) +#define BIT_GET_CMD53_R_TIMEOUT_UNIT_8822E(x) \ + (((x) >> BIT_SHIFT_CMD53_R_TIMEOUT_UNIT_8822E) & \ + BIT_MASK_CMD53_R_TIMEOUT_UNIT_8822E) +#define BIT_SET_CMD53_R_TIMEOUT_UNIT_8822E(x, v) \ + (BIT_CLEAR_CMD53_R_TIMEOUT_UNIT_8822E(x) | \ + BIT_CMD53_R_TIMEOUT_UNIT_8822E(v)) + +#define BIT_REPLY_ERRCRC_IN_DATA_8822E BIT(9) +#define BIT_EN_CMD53_OVERLAP_8822E BIT(8) +#define BIT_REPLY_ERR_IN_R5_8822E BIT(7) +#define BIT_R18A_EN_8822E BIT(6) +#define BIT_SDIO_CMD_FORCE_VLD_8822E BIT(5) +#define BIT_INIT_CMD_EN_8822E BIT(4) +#define BIT_RXINT_READ_MASK_DIS_8822E BIT(3) +#define BIT_EN_RXDMA_MASK_INT_8822E BIT(2) +#define BIT_EN_MASK_TIMER_8822E BIT(1) +#define BIT_CMD_ERR_STOP_INT_EN_8822E BIT(0) + +/* 2 REG_SDIO_CMD11_VOL_SWITCH_8822E */ + +#define BIT_SHIFT_CMD11_SEQ_END_DELAY_8822E 4 +#define BIT_MASK_CMD11_SEQ_END_DELAY_8822E 0xf +#define BIT_CMD11_SEQ_END_DELAY_8822E(x) \ + (((x) & BIT_MASK_CMD11_SEQ_END_DELAY_8822E) \ + << BIT_SHIFT_CMD11_SEQ_END_DELAY_8822E) +#define BITS_CMD11_SEQ_END_DELAY_8822E \ + (BIT_MASK_CMD11_SEQ_END_DELAY_8822E \ + << BIT_SHIFT_CMD11_SEQ_END_DELAY_8822E) +#define BIT_CLEAR_CMD11_SEQ_END_DELAY_8822E(x) \ + ((x) & (~BITS_CMD11_SEQ_END_DELAY_8822E)) +#define BIT_GET_CMD11_SEQ_END_DELAY_8822E(x) \ + (((x) >> BIT_SHIFT_CMD11_SEQ_END_DELAY_8822E) & \ + BIT_MASK_CMD11_SEQ_END_DELAY_8822E) +#define BIT_SET_CMD11_SEQ_END_DELAY_8822E(x, v) \ + (BIT_CLEAR_CMD11_SEQ_END_DELAY_8822E(x) | \ + BIT_CMD11_SEQ_END_DELAY_8822E(v)) + +#define BIT_SHIFT_CMD11_SEQ_SAMPLE_INTERVAL_8822E 1 +#define BIT_MASK_CMD11_SEQ_SAMPLE_INTERVAL_8822E 0x7 +#define BIT_CMD11_SEQ_SAMPLE_INTERVAL_8822E(x) \ + (((x) & BIT_MASK_CMD11_SEQ_SAMPLE_INTERVAL_8822E) \ + << BIT_SHIFT_CMD11_SEQ_SAMPLE_INTERVAL_8822E) +#define BITS_CMD11_SEQ_SAMPLE_INTERVAL_8822E \ + (BIT_MASK_CMD11_SEQ_SAMPLE_INTERVAL_8822E \ + << BIT_SHIFT_CMD11_SEQ_SAMPLE_INTERVAL_8822E) +#define BIT_CLEAR_CMD11_SEQ_SAMPLE_INTERVAL_8822E(x) \ + ((x) & (~BITS_CMD11_SEQ_SAMPLE_INTERVAL_8822E)) +#define BIT_GET_CMD11_SEQ_SAMPLE_INTERVAL_8822E(x) \ + (((x) >> BIT_SHIFT_CMD11_SEQ_SAMPLE_INTERVAL_8822E) & \ + BIT_MASK_CMD11_SEQ_SAMPLE_INTERVAL_8822E) +#define BIT_SET_CMD11_SEQ_SAMPLE_INTERVAL_8822E(x, v) \ + (BIT_CLEAR_CMD11_SEQ_SAMPLE_INTERVAL_8822E(x) | \ + BIT_CMD11_SEQ_SAMPLE_INTERVAL_8822E(v)) + +#define BIT_CMD11_SEQ_EN_8822E BIT(0) + +/* 2 REG_SDIO_CTRL_8822E */ +#define BIT_SIG_OUT_PH_8822E BIT(0) + +/* 2 REG_SDIO_DRIVING_8822E */ + +#define BIT_SHIFT_SDIO_DRV_TYPE_D_8822E 12 +#define BIT_MASK_SDIO_DRV_TYPE_D_8822E 0xf +#define BIT_SDIO_DRV_TYPE_D_8822E(x) \ + (((x) & BIT_MASK_SDIO_DRV_TYPE_D_8822E) \ + << BIT_SHIFT_SDIO_DRV_TYPE_D_8822E) +#define BITS_SDIO_DRV_TYPE_D_8822E \ + (BIT_MASK_SDIO_DRV_TYPE_D_8822E << BIT_SHIFT_SDIO_DRV_TYPE_D_8822E) +#define BIT_CLEAR_SDIO_DRV_TYPE_D_8822E(x) ((x) & (~BITS_SDIO_DRV_TYPE_D_8822E)) +#define BIT_GET_SDIO_DRV_TYPE_D_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_DRV_TYPE_D_8822E) & \ + BIT_MASK_SDIO_DRV_TYPE_D_8822E) +#define BIT_SET_SDIO_DRV_TYPE_D_8822E(x, v) \ + (BIT_CLEAR_SDIO_DRV_TYPE_D_8822E(x) | BIT_SDIO_DRV_TYPE_D_8822E(v)) + +#define BIT_SHIFT_SDIO_DRV_TYPE_C_8822E 8 +#define BIT_MASK_SDIO_DRV_TYPE_C_8822E 0xf +#define BIT_SDIO_DRV_TYPE_C_8822E(x) \ + (((x) & BIT_MASK_SDIO_DRV_TYPE_C_8822E) \ + << BIT_SHIFT_SDIO_DRV_TYPE_C_8822E) +#define BITS_SDIO_DRV_TYPE_C_8822E \ + (BIT_MASK_SDIO_DRV_TYPE_C_8822E << BIT_SHIFT_SDIO_DRV_TYPE_C_8822E) +#define BIT_CLEAR_SDIO_DRV_TYPE_C_8822E(x) ((x) & (~BITS_SDIO_DRV_TYPE_C_8822E)) +#define BIT_GET_SDIO_DRV_TYPE_C_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_DRV_TYPE_C_8822E) & \ + BIT_MASK_SDIO_DRV_TYPE_C_8822E) +#define BIT_SET_SDIO_DRV_TYPE_C_8822E(x, v) \ + (BIT_CLEAR_SDIO_DRV_TYPE_C_8822E(x) | BIT_SDIO_DRV_TYPE_C_8822E(v)) + +#define BIT_SHIFT_SDIO_DRV_TYPE_B_8822E 4 +#define BIT_MASK_SDIO_DRV_TYPE_B_8822E 0xf +#define BIT_SDIO_DRV_TYPE_B_8822E(x) \ + (((x) & BIT_MASK_SDIO_DRV_TYPE_B_8822E) \ + << BIT_SHIFT_SDIO_DRV_TYPE_B_8822E) +#define BITS_SDIO_DRV_TYPE_B_8822E \ + (BIT_MASK_SDIO_DRV_TYPE_B_8822E << BIT_SHIFT_SDIO_DRV_TYPE_B_8822E) +#define BIT_CLEAR_SDIO_DRV_TYPE_B_8822E(x) ((x) & (~BITS_SDIO_DRV_TYPE_B_8822E)) +#define BIT_GET_SDIO_DRV_TYPE_B_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_DRV_TYPE_B_8822E) & \ + BIT_MASK_SDIO_DRV_TYPE_B_8822E) +#define BIT_SET_SDIO_DRV_TYPE_B_8822E(x, v) \ + (BIT_CLEAR_SDIO_DRV_TYPE_B_8822E(x) | BIT_SDIO_DRV_TYPE_B_8822E(v)) + +#define BIT_SHIFT_SDIO_DRV_TYPE_A_8822E 0 +#define BIT_MASK_SDIO_DRV_TYPE_A_8822E 0xf +#define BIT_SDIO_DRV_TYPE_A_8822E(x) \ + (((x) & BIT_MASK_SDIO_DRV_TYPE_A_8822E) \ + << BIT_SHIFT_SDIO_DRV_TYPE_A_8822E) +#define BITS_SDIO_DRV_TYPE_A_8822E \ + (BIT_MASK_SDIO_DRV_TYPE_A_8822E << BIT_SHIFT_SDIO_DRV_TYPE_A_8822E) +#define BIT_CLEAR_SDIO_DRV_TYPE_A_8822E(x) ((x) & (~BITS_SDIO_DRV_TYPE_A_8822E)) +#define BIT_GET_SDIO_DRV_TYPE_A_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_DRV_TYPE_A_8822E) & \ + BIT_MASK_SDIO_DRV_TYPE_A_8822E) +#define BIT_SET_SDIO_DRV_TYPE_A_8822E(x, v) \ + (BIT_CLEAR_SDIO_DRV_TYPE_A_8822E(x) | BIT_SDIO_DRV_TYPE_A_8822E(v)) + +/* 2 REG_SDIO_MONITOR_8822E */ + +#define BIT_SHIFT_SDIO_INT_START_8822E 0 +#define BIT_MASK_SDIO_INT_START_8822E 0xffffffffL +#define BIT_SDIO_INT_START_8822E(x) \ + (((x) & BIT_MASK_SDIO_INT_START_8822E) \ + << BIT_SHIFT_SDIO_INT_START_8822E) +#define BITS_SDIO_INT_START_8822E \ + (BIT_MASK_SDIO_INT_START_8822E << BIT_SHIFT_SDIO_INT_START_8822E) +#define BIT_CLEAR_SDIO_INT_START_8822E(x) ((x) & (~BITS_SDIO_INT_START_8822E)) +#define BIT_GET_SDIO_INT_START_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_INT_START_8822E) & \ + BIT_MASK_SDIO_INT_START_8822E) +#define BIT_SET_SDIO_INT_START_8822E(x, v) \ + (BIT_CLEAR_SDIO_INT_START_8822E(x) | BIT_SDIO_INT_START_8822E(v)) + +/* 2 REG_SDIO_MONITOR_2_8822E */ +#define BIT_CMD53_WT_EN_8822E BIT(23) + +#define BIT_SHIFT_SDIO_CLK_MONITOR_8822E 21 +#define BIT_MASK_SDIO_CLK_MONITOR_8822E 0x3 +#define BIT_SDIO_CLK_MONITOR_8822E(x) \ + (((x) & BIT_MASK_SDIO_CLK_MONITOR_8822E) \ + << BIT_SHIFT_SDIO_CLK_MONITOR_8822E) +#define BITS_SDIO_CLK_MONITOR_8822E \ + (BIT_MASK_SDIO_CLK_MONITOR_8822E << BIT_SHIFT_SDIO_CLK_MONITOR_8822E) +#define BIT_CLEAR_SDIO_CLK_MONITOR_8822E(x) \ + ((x) & (~BITS_SDIO_CLK_MONITOR_8822E)) +#define BIT_GET_SDIO_CLK_MONITOR_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_CLK_MONITOR_8822E) & \ + BIT_MASK_SDIO_CLK_MONITOR_8822E) +#define BIT_SET_SDIO_CLK_MONITOR_8822E(x, v) \ + (BIT_CLEAR_SDIO_CLK_MONITOR_8822E(x) | BIT_SDIO_CLK_MONITOR_8822E(v)) + +#define BIT_SHIFT_SDIO_CLK_CNT_8822E 0 +#define BIT_MASK_SDIO_CLK_CNT_8822E 0x1fffff +#define BIT_SDIO_CLK_CNT_8822E(x) \ + (((x) & BIT_MASK_SDIO_CLK_CNT_8822E) << BIT_SHIFT_SDIO_CLK_CNT_8822E) +#define BITS_SDIO_CLK_CNT_8822E \ + (BIT_MASK_SDIO_CLK_CNT_8822E << BIT_SHIFT_SDIO_CLK_CNT_8822E) +#define BIT_CLEAR_SDIO_CLK_CNT_8822E(x) ((x) & (~BITS_SDIO_CLK_CNT_8822E)) +#define BIT_GET_SDIO_CLK_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_CLK_CNT_8822E) & BIT_MASK_SDIO_CLK_CNT_8822E) +#define BIT_SET_SDIO_CLK_CNT_8822E(x, v) \ + (BIT_CLEAR_SDIO_CLK_CNT_8822E(x) | BIT_SDIO_CLK_CNT_8822E(v)) + +/* 2 REG_SDIO_HIMR_8822E */ +#define BIT_SDIO_CRCERR_MSK_8822E BIT(31) +#define BIT_SDIO_HSISR3_IND_MSK_8822E BIT(30) +#define BIT_SDIO_HSISR2_IND_MSK_8822E BIT(29) +#define BIT_SDIO_HEISR_IND_MSK_8822E BIT(28) +#define BIT_SDIO_CTWEND_MSK_8822E BIT(27) +#define BIT_SDIO_ATIMEND_E_MSK_8822E BIT(26) +#define BIT_SDIIO_ATIMEND_MSK_8822E BIT(25) +#define BIT_SDIO_OCPINT_MSK_8822E BIT(24) +#define BIT_SDIO_PSTIMEOUT_MSK_8822E BIT(23) +#define BIT_SDIO_GTINT4_MSK_8822E BIT(22) +#define BIT_SDIO_GTINT3_MSK_8822E BIT(21) +#define BIT_SDIO_HSISR_IND_MSK_8822E BIT(20) +#define BIT_SDIO_CPWM2_MSK_8822E BIT(19) +#define BIT_SDIO_CPWM1_MSK_8822E BIT(18) +#define BIT_SDIO_C2HCMD_INT_MSK_8822E BIT(17) +#define BIT_SDIO_BCNERLY_INT_MSK_8822E BIT(16) +#define BIT_BT_INT_MASK_8822E BIT(8) +#define BIT_SDIO_TXBCNERR_MSK_8822E BIT(7) +#define BIT_SDIO_TXBCNOK_MSK_8822E BIT(6) +#define BIT_SDIO_RXFOVW_MSK_8822E BIT(5) +#define BIT_SDIO_TXFOVW_MSK_8822E BIT(4) +#define BIT_SDIO_RXERR_MSK_8822E BIT(3) +#define BIT_SDIO_TXERR_MSK_8822E BIT(2) +#define BIT_SDIO_AVAL_MSK_8822E BIT(1) +#define BIT_RX_REQUEST_MSK_8822E BIT(0) + +/* 2 REG_SDIO_HISR_8822E */ +#define BIT_SDIO_CRCERR_8822E BIT(31) +#define BIT_SDIO_HSISR3_IND_8822E BIT(30) +#define BIT_SDIO_HSISR2_IND_8822E BIT(29) +#define BIT_SDIO_HEISR_IND_8822E BIT(28) +#define BIT_SDIO_CTWEND_8822E BIT(27) +#define BIT_SDIO_ATIMEND_E_8822E BIT(26) +#define BIT_SDIO_ATIMEND_8822E BIT(25) +#define BIT_SDIO_OCPINT_8822E BIT(24) +#define BIT_SDIO_PSTIMEOUT_8822E BIT(23) +#define BIT_SDIO_GTINT4_8822E BIT(22) +#define BIT_SDIO_GTINT3_8822E BIT(21) +#define BIT_SDIO_HSISR_IND_8822E BIT(20) +#define BIT_SDIO_CPWM2_8822E BIT(19) +#define BIT_SDIO_CPWM1_8822E BIT(18) +#define BIT_SDIO_C2HCMD_INT_8822E BIT(17) +#define BIT_SDIO_BCNERLY_INT_8822E BIT(16) +#define BIT_BT_INT_8822E BIT(8) +#define BIT_SDIO_TXBCNERR_8822E BIT(7) +#define BIT_SDIO_TXBCNOK_8822E BIT(6) +#define BIT_SDIO_RXFOVW_8822E BIT(5) +#define BIT_SDIO_TXFOVW_8822E BIT(4) +#define BIT_SDIO_RXERR_8822E BIT(3) +#define BIT_SDIO_TXERR_8822E BIT(2) +#define BIT_SDIO_AVAL_8822E BIT(1) +#define BIT_RX_REQUEST_8822E BIT(0) + +/* 2 REG_SDIO_RX_REQ_LEN_8822E */ + +#define BIT_SHIFT_RX_REQ_LEN_V1_8822E 0 +#define BIT_MASK_RX_REQ_LEN_V1_8822E 0x3ffff +#define BIT_RX_REQ_LEN_V1_8822E(x) \ + (((x) & BIT_MASK_RX_REQ_LEN_V1_8822E) << BIT_SHIFT_RX_REQ_LEN_V1_8822E) +#define BITS_RX_REQ_LEN_V1_8822E \ + (BIT_MASK_RX_REQ_LEN_V1_8822E << BIT_SHIFT_RX_REQ_LEN_V1_8822E) +#define BIT_CLEAR_RX_REQ_LEN_V1_8822E(x) ((x) & (~BITS_RX_REQ_LEN_V1_8822E)) +#define BIT_GET_RX_REQ_LEN_V1_8822E(x) \ + (((x) >> BIT_SHIFT_RX_REQ_LEN_V1_8822E) & BIT_MASK_RX_REQ_LEN_V1_8822E) +#define BIT_SET_RX_REQ_LEN_V1_8822E(x, v) \ + (BIT_CLEAR_RX_REQ_LEN_V1_8822E(x) | BIT_RX_REQ_LEN_V1_8822E(v)) + +/* 2 REG_SDIO_FREE_TXPG_SEQ_V1_8822E */ + +#define BIT_SHIFT_FREE_TXPG_SEQ_8822E 0 +#define BIT_MASK_FREE_TXPG_SEQ_8822E 0xff +#define BIT_FREE_TXPG_SEQ_8822E(x) \ + (((x) & BIT_MASK_FREE_TXPG_SEQ_8822E) << BIT_SHIFT_FREE_TXPG_SEQ_8822E) +#define BITS_FREE_TXPG_SEQ_8822E \ + (BIT_MASK_FREE_TXPG_SEQ_8822E << BIT_SHIFT_FREE_TXPG_SEQ_8822E) +#define BIT_CLEAR_FREE_TXPG_SEQ_8822E(x) ((x) & (~BITS_FREE_TXPG_SEQ_8822E)) +#define BIT_GET_FREE_TXPG_SEQ_8822E(x) \ + (((x) >> BIT_SHIFT_FREE_TXPG_SEQ_8822E) & BIT_MASK_FREE_TXPG_SEQ_8822E) +#define BIT_SET_FREE_TXPG_SEQ_8822E(x, v) \ + (BIT_CLEAR_FREE_TXPG_SEQ_8822E(x) | BIT_FREE_TXPG_SEQ_8822E(v)) + +/* 2 REG_SDIO_FREE_TXPG_8822E */ + +#define BIT_SHIFT_MID_FREEPG_V1_8822E 16 +#define BIT_MASK_MID_FREEPG_V1_8822E 0xfff +#define BIT_MID_FREEPG_V1_8822E(x) \ + (((x) & BIT_MASK_MID_FREEPG_V1_8822E) << BIT_SHIFT_MID_FREEPG_V1_8822E) +#define BITS_MID_FREEPG_V1_8822E \ + (BIT_MASK_MID_FREEPG_V1_8822E << BIT_SHIFT_MID_FREEPG_V1_8822E) +#define BIT_CLEAR_MID_FREEPG_V1_8822E(x) ((x) & (~BITS_MID_FREEPG_V1_8822E)) +#define BIT_GET_MID_FREEPG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_MID_FREEPG_V1_8822E) & BIT_MASK_MID_FREEPG_V1_8822E) +#define BIT_SET_MID_FREEPG_V1_8822E(x, v) \ + (BIT_CLEAR_MID_FREEPG_V1_8822E(x) | BIT_MID_FREEPG_V1_8822E(v)) + +#define BIT_SHIFT_HIQ_FREEPG_V1_8822E 0 +#define BIT_MASK_HIQ_FREEPG_V1_8822E 0xfff +#define BIT_HIQ_FREEPG_V1_8822E(x) \ + (((x) & BIT_MASK_HIQ_FREEPG_V1_8822E) << BIT_SHIFT_HIQ_FREEPG_V1_8822E) +#define BITS_HIQ_FREEPG_V1_8822E \ + (BIT_MASK_HIQ_FREEPG_V1_8822E << BIT_SHIFT_HIQ_FREEPG_V1_8822E) +#define BIT_CLEAR_HIQ_FREEPG_V1_8822E(x) ((x) & (~BITS_HIQ_FREEPG_V1_8822E)) +#define BIT_GET_HIQ_FREEPG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_HIQ_FREEPG_V1_8822E) & BIT_MASK_HIQ_FREEPG_V1_8822E) +#define BIT_SET_HIQ_FREEPG_V1_8822E(x, v) \ + (BIT_CLEAR_HIQ_FREEPG_V1_8822E(x) | BIT_HIQ_FREEPG_V1_8822E(v)) + +/* 2 REG_SDIO_FREE_TXPG2_8822E */ + +#define BIT_SHIFT_PUB_FREEPG_V1_8822E 16 +#define BIT_MASK_PUB_FREEPG_V1_8822E 0xfff +#define BIT_PUB_FREEPG_V1_8822E(x) \ + (((x) & BIT_MASK_PUB_FREEPG_V1_8822E) << BIT_SHIFT_PUB_FREEPG_V1_8822E) +#define BITS_PUB_FREEPG_V1_8822E \ + (BIT_MASK_PUB_FREEPG_V1_8822E << BIT_SHIFT_PUB_FREEPG_V1_8822E) +#define BIT_CLEAR_PUB_FREEPG_V1_8822E(x) ((x) & (~BITS_PUB_FREEPG_V1_8822E)) +#define BIT_GET_PUB_FREEPG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_PUB_FREEPG_V1_8822E) & BIT_MASK_PUB_FREEPG_V1_8822E) +#define BIT_SET_PUB_FREEPG_V1_8822E(x, v) \ + (BIT_CLEAR_PUB_FREEPG_V1_8822E(x) | BIT_PUB_FREEPG_V1_8822E(v)) + +#define BIT_SHIFT_LOW_FREEPG_V1_8822E 0 +#define BIT_MASK_LOW_FREEPG_V1_8822E 0xfff +#define BIT_LOW_FREEPG_V1_8822E(x) \ + (((x) & BIT_MASK_LOW_FREEPG_V1_8822E) << BIT_SHIFT_LOW_FREEPG_V1_8822E) +#define BITS_LOW_FREEPG_V1_8822E \ + (BIT_MASK_LOW_FREEPG_V1_8822E << BIT_SHIFT_LOW_FREEPG_V1_8822E) +#define BIT_CLEAR_LOW_FREEPG_V1_8822E(x) ((x) & (~BITS_LOW_FREEPG_V1_8822E)) +#define BIT_GET_LOW_FREEPG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_LOW_FREEPG_V1_8822E) & BIT_MASK_LOW_FREEPG_V1_8822E) +#define BIT_SET_LOW_FREEPG_V1_8822E(x, v) \ + (BIT_CLEAR_LOW_FREEPG_V1_8822E(x) | BIT_LOW_FREEPG_V1_8822E(v)) + +/* 2 REG_SDIO_OQT_FREE_TXPG_V1_8822E */ + +#define BIT_SHIFT_NOAC_OQT_FREEPG_V1_8822E 24 +#define BIT_MASK_NOAC_OQT_FREEPG_V1_8822E 0xff +#define BIT_NOAC_OQT_FREEPG_V1_8822E(x) \ + (((x) & BIT_MASK_NOAC_OQT_FREEPG_V1_8822E) \ + << BIT_SHIFT_NOAC_OQT_FREEPG_V1_8822E) +#define BITS_NOAC_OQT_FREEPG_V1_8822E \ + (BIT_MASK_NOAC_OQT_FREEPG_V1_8822E \ + << BIT_SHIFT_NOAC_OQT_FREEPG_V1_8822E) +#define BIT_CLEAR_NOAC_OQT_FREEPG_V1_8822E(x) \ + ((x) & (~BITS_NOAC_OQT_FREEPG_V1_8822E)) +#define BIT_GET_NOAC_OQT_FREEPG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_NOAC_OQT_FREEPG_V1_8822E) & \ + BIT_MASK_NOAC_OQT_FREEPG_V1_8822E) +#define BIT_SET_NOAC_OQT_FREEPG_V1_8822E(x, v) \ + (BIT_CLEAR_NOAC_OQT_FREEPG_V1_8822E(x) | \ + BIT_NOAC_OQT_FREEPG_V1_8822E(v)) + +#define BIT_SHIFT_AC_OQT_FREEPG_V1_8822E 16 +#define BIT_MASK_AC_OQT_FREEPG_V1_8822E 0xff +#define BIT_AC_OQT_FREEPG_V1_8822E(x) \ + (((x) & BIT_MASK_AC_OQT_FREEPG_V1_8822E) \ + << BIT_SHIFT_AC_OQT_FREEPG_V1_8822E) +#define BITS_AC_OQT_FREEPG_V1_8822E \ + (BIT_MASK_AC_OQT_FREEPG_V1_8822E << BIT_SHIFT_AC_OQT_FREEPG_V1_8822E) +#define BIT_CLEAR_AC_OQT_FREEPG_V1_8822E(x) \ + ((x) & (~BITS_AC_OQT_FREEPG_V1_8822E)) +#define BIT_GET_AC_OQT_FREEPG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_AC_OQT_FREEPG_V1_8822E) & \ + BIT_MASK_AC_OQT_FREEPG_V1_8822E) +#define BIT_SET_AC_OQT_FREEPG_V1_8822E(x, v) \ + (BIT_CLEAR_AC_OQT_FREEPG_V1_8822E(x) | BIT_AC_OQT_FREEPG_V1_8822E(v)) + +#define BIT_SHIFT_EXQ_FREEPG_V1_8822E 0 +#define BIT_MASK_EXQ_FREEPG_V1_8822E 0xfff +#define BIT_EXQ_FREEPG_V1_8822E(x) \ + (((x) & BIT_MASK_EXQ_FREEPG_V1_8822E) << BIT_SHIFT_EXQ_FREEPG_V1_8822E) +#define BITS_EXQ_FREEPG_V1_8822E \ + (BIT_MASK_EXQ_FREEPG_V1_8822E << BIT_SHIFT_EXQ_FREEPG_V1_8822E) +#define BIT_CLEAR_EXQ_FREEPG_V1_8822E(x) ((x) & (~BITS_EXQ_FREEPG_V1_8822E)) +#define BIT_GET_EXQ_FREEPG_V1_8822E(x) \ + (((x) >> BIT_SHIFT_EXQ_FREEPG_V1_8822E) & BIT_MASK_EXQ_FREEPG_V1_8822E) +#define BIT_SET_EXQ_FREEPG_V1_8822E(x, v) \ + (BIT_CLEAR_EXQ_FREEPG_V1_8822E(x) | BIT_EXQ_FREEPG_V1_8822E(v)) + +/* 2 REG_SDIO_TXPKT_EMPTY_8822E */ +#define BIT_SDIO_BCNQ_EMPTY_8822E BIT(11) +#define BIT_SDIO_HQQ_EMPTY_8822E BIT(10) +#define BIT_SDIO_MQQ_EMPTY_8822E BIT(9) +#define BIT_SDIO_MGQ_CPU_EMPTY_8822E BIT(8) +#define BIT_SDIO_AC7Q_EMPTY_8822E BIT(7) +#define BIT_SDIO_AC6Q_EMPTY_8822E BIT(6) +#define BIT_SDIO_AC5Q_EMPTY_8822E BIT(5) +#define BIT_SDIO_AC4Q_EMPTY_8822E BIT(4) +#define BIT_SDIO_AC3Q_EMPTY_8822E BIT(3) +#define BIT_SDIO_AC2Q_EMPTY_8822E BIT(2) +#define BIT_SDIO_AC1Q_EMPTY_8822E BIT(1) +#define BIT_SDIO_AC0Q_EMPTY_8822E BIT(0) + +/* 2 REG_SDIO_HTSFR_INFO_8822E */ + +#define BIT_SHIFT_HTSFR1_8822E 16 +#define BIT_MASK_HTSFR1_8822E 0xffff +#define BIT_HTSFR1_8822E(x) \ + (((x) & BIT_MASK_HTSFR1_8822E) << BIT_SHIFT_HTSFR1_8822E) +#define BITS_HTSFR1_8822E (BIT_MASK_HTSFR1_8822E << BIT_SHIFT_HTSFR1_8822E) +#define BIT_CLEAR_HTSFR1_8822E(x) ((x) & (~BITS_HTSFR1_8822E)) +#define BIT_GET_HTSFR1_8822E(x) \ + (((x) >> BIT_SHIFT_HTSFR1_8822E) & BIT_MASK_HTSFR1_8822E) +#define BIT_SET_HTSFR1_8822E(x, v) \ + (BIT_CLEAR_HTSFR1_8822E(x) | BIT_HTSFR1_8822E(v)) + +#define BIT_SHIFT_HTSFR0_8822E 0 +#define BIT_MASK_HTSFR0_8822E 0xffff +#define BIT_HTSFR0_8822E(x) \ + (((x) & BIT_MASK_HTSFR0_8822E) << BIT_SHIFT_HTSFR0_8822E) +#define BITS_HTSFR0_8822E (BIT_MASK_HTSFR0_8822E << BIT_SHIFT_HTSFR0_8822E) +#define BIT_CLEAR_HTSFR0_8822E(x) ((x) & (~BITS_HTSFR0_8822E)) +#define BIT_GET_HTSFR0_8822E(x) \ + (((x) >> BIT_SHIFT_HTSFR0_8822E) & BIT_MASK_HTSFR0_8822E) +#define BIT_SET_HTSFR0_8822E(x, v) \ + (BIT_CLEAR_HTSFR0_8822E(x) | BIT_HTSFR0_8822E(v)) + +/* 2 REG_SDIO_HCPWM1_V2_8822E */ +#define BIT_TOGGLE_8822E BIT(7) +#define BIT_CUR_PS_8822E BIT(0) + +/* 2 REG_SDIO_HCPWM2_V2_8822E */ + +/* 2 REG_SDIO_INDIRECT_REG_CFG_8822E */ +#define BIT_INDIRECT_REG_RDY_8822E BIT(20) +#define BIT_INDIRECT_REG_R_8822E BIT(19) +#define BIT_INDIRECT_REG_W_8822E BIT(18) + +#define BIT_SHIFT_INDIRECT_REG_SIZE_8822E 16 +#define BIT_MASK_INDIRECT_REG_SIZE_8822E 0x3 +#define BIT_INDIRECT_REG_SIZE_8822E(x) \ + (((x) & BIT_MASK_INDIRECT_REG_SIZE_8822E) \ + << BIT_SHIFT_INDIRECT_REG_SIZE_8822E) +#define BITS_INDIRECT_REG_SIZE_8822E \ + (BIT_MASK_INDIRECT_REG_SIZE_8822E << BIT_SHIFT_INDIRECT_REG_SIZE_8822E) +#define BIT_CLEAR_INDIRECT_REG_SIZE_8822E(x) \ + ((x) & (~BITS_INDIRECT_REG_SIZE_8822E)) +#define BIT_GET_INDIRECT_REG_SIZE_8822E(x) \ + (((x) >> BIT_SHIFT_INDIRECT_REG_SIZE_8822E) & \ + BIT_MASK_INDIRECT_REG_SIZE_8822E) +#define BIT_SET_INDIRECT_REG_SIZE_8822E(x, v) \ + (BIT_CLEAR_INDIRECT_REG_SIZE_8822E(x) | BIT_INDIRECT_REG_SIZE_8822E(v)) + +#define BIT_SHIFT_INDIRECT_REG_ADDR_8822E 0 +#define BIT_MASK_INDIRECT_REG_ADDR_8822E 0xffff +#define BIT_INDIRECT_REG_ADDR_8822E(x) \ + (((x) & BIT_MASK_INDIRECT_REG_ADDR_8822E) \ + << BIT_SHIFT_INDIRECT_REG_ADDR_8822E) +#define BITS_INDIRECT_REG_ADDR_8822E \ + (BIT_MASK_INDIRECT_REG_ADDR_8822E << BIT_SHIFT_INDIRECT_REG_ADDR_8822E) +#define BIT_CLEAR_INDIRECT_REG_ADDR_8822E(x) \ + ((x) & (~BITS_INDIRECT_REG_ADDR_8822E)) +#define BIT_GET_INDIRECT_REG_ADDR_8822E(x) \ + (((x) >> BIT_SHIFT_INDIRECT_REG_ADDR_8822E) & \ + BIT_MASK_INDIRECT_REG_ADDR_8822E) +#define BIT_SET_INDIRECT_REG_ADDR_8822E(x, v) \ + (BIT_CLEAR_INDIRECT_REG_ADDR_8822E(x) | BIT_INDIRECT_REG_ADDR_8822E(v)) + +/* 2 REG_SDIO_INDIRECT_REG_DATA_8822E */ + +#define BIT_SHIFT_INDIRECT_REG_DATA_8822E 0 +#define BIT_MASK_INDIRECT_REG_DATA_8822E 0xffffffffL +#define BIT_INDIRECT_REG_DATA_8822E(x) \ + (((x) & BIT_MASK_INDIRECT_REG_DATA_8822E) \ + << BIT_SHIFT_INDIRECT_REG_DATA_8822E) +#define BITS_INDIRECT_REG_DATA_8822E \ + (BIT_MASK_INDIRECT_REG_DATA_8822E << BIT_SHIFT_INDIRECT_REG_DATA_8822E) +#define BIT_CLEAR_INDIRECT_REG_DATA_8822E(x) \ + ((x) & (~BITS_INDIRECT_REG_DATA_8822E)) +#define BIT_GET_INDIRECT_REG_DATA_8822E(x) \ + (((x) >> BIT_SHIFT_INDIRECT_REG_DATA_8822E) & \ + BIT_MASK_INDIRECT_REG_DATA_8822E) +#define BIT_SET_INDIRECT_REG_DATA_8822E(x, v) \ + (BIT_CLEAR_INDIRECT_REG_DATA_8822E(x) | BIT_INDIRECT_REG_DATA_8822E(v)) + +/* 2 REG_SDIO_H2C_8822E */ + +#define BIT_SHIFT_SDIO_H2C_MSG_8822E 0 +#define BIT_MASK_SDIO_H2C_MSG_8822E 0xffffffffL +#define BIT_SDIO_H2C_MSG_8822E(x) \ + (((x) & BIT_MASK_SDIO_H2C_MSG_8822E) << BIT_SHIFT_SDIO_H2C_MSG_8822E) +#define BITS_SDIO_H2C_MSG_8822E \ + (BIT_MASK_SDIO_H2C_MSG_8822E << BIT_SHIFT_SDIO_H2C_MSG_8822E) +#define BIT_CLEAR_SDIO_H2C_MSG_8822E(x) ((x) & (~BITS_SDIO_H2C_MSG_8822E)) +#define BIT_GET_SDIO_H2C_MSG_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_H2C_MSG_8822E) & BIT_MASK_SDIO_H2C_MSG_8822E) +#define BIT_SET_SDIO_H2C_MSG_8822E(x, v) \ + (BIT_CLEAR_SDIO_H2C_MSG_8822E(x) | BIT_SDIO_H2C_MSG_8822E(v)) + +/* 2 REG_SDIO_C2H_8822E */ + +#define BIT_SHIFT_SDIO_C2H_MSG_8822E 0 +#define BIT_MASK_SDIO_C2H_MSG_8822E 0xffffffffL +#define BIT_SDIO_C2H_MSG_8822E(x) \ + (((x) & BIT_MASK_SDIO_C2H_MSG_8822E) << BIT_SHIFT_SDIO_C2H_MSG_8822E) +#define BITS_SDIO_C2H_MSG_8822E \ + (BIT_MASK_SDIO_C2H_MSG_8822E << BIT_SHIFT_SDIO_C2H_MSG_8822E) +#define BIT_CLEAR_SDIO_C2H_MSG_8822E(x) ((x) & (~BITS_SDIO_C2H_MSG_8822E)) +#define BIT_GET_SDIO_C2H_MSG_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_C2H_MSG_8822E) & BIT_MASK_SDIO_C2H_MSG_8822E) +#define BIT_SET_SDIO_C2H_MSG_8822E(x, v) \ + (BIT_CLEAR_SDIO_C2H_MSG_8822E(x) | BIT_SDIO_C2H_MSG_8822E(v)) + +/* 2 REG_SDIO_HRPWM1_8822E */ +#define BIT_TOGGLE_8822E BIT(7) +#define BIT_ACK_8822E BIT(6) +#define BIT_REQ_PS_8822E BIT(0) + +/* 2 REG_SDIO_HRPWM2_8822E */ + +/* 2 REG_SDIO_HPS_CLKR_8822E */ + +/* 2 REG_SDIO_BUS_CTRL_8822E */ +#define BIT_HISR_W_CLR_EN_8822E BIT(5) +#define BIT_INT_MASK_DIS_8822E BIT(4) +#define BIT_PAD_CLK_XHGE_EN_8822E BIT(3) +#define BIT_INTER_CLK_EN_8822E BIT(2) +#define BIT_EN_RPT_TXCRC_8822E BIT(1) +#define BIT_DIS_RXDMA_STS_8822E BIT(0) + +/* 2 REG_SDIO_HSUS_CTRL_8822E */ +#define BIT_INTR_CTRL_8822E BIT(4) +#define BIT_SDIO_VOLTAGE_8822E BIT(3) +#define BIT_BYPASS_INIT_8822E BIT(2) +#define BIT_HCI_RESUME_RDY_8822E BIT(1) +#define BIT_HCI_SUS_REQ_8822E BIT(0) + +/* 2 REG_SDIO_RESPONSE_TIMER_8822E */ + +#define BIT_SHIFT_CMDIN_2RESP_TIMER_8822E 0 +#define BIT_MASK_CMDIN_2RESP_TIMER_8822E 0xffff +#define BIT_CMDIN_2RESP_TIMER_8822E(x) \ + (((x) & BIT_MASK_CMDIN_2RESP_TIMER_8822E) \ + << BIT_SHIFT_CMDIN_2RESP_TIMER_8822E) +#define BITS_CMDIN_2RESP_TIMER_8822E \ + (BIT_MASK_CMDIN_2RESP_TIMER_8822E << BIT_SHIFT_CMDIN_2RESP_TIMER_8822E) +#define BIT_CLEAR_CMDIN_2RESP_TIMER_8822E(x) \ + ((x) & (~BITS_CMDIN_2RESP_TIMER_8822E)) +#define BIT_GET_CMDIN_2RESP_TIMER_8822E(x) \ + (((x) >> BIT_SHIFT_CMDIN_2RESP_TIMER_8822E) & \ + BIT_MASK_CMDIN_2RESP_TIMER_8822E) +#define BIT_SET_CMDIN_2RESP_TIMER_8822E(x, v) \ + (BIT_CLEAR_CMDIN_2RESP_TIMER_8822E(x) | BIT_CMDIN_2RESP_TIMER_8822E(v)) + +/* 2 REG_SDIO_CMD_CRC_8822E */ + +#define BIT_SHIFT_SDIO_CMD_CRC_V1_8822E 0 +#define BIT_MASK_SDIO_CMD_CRC_V1_8822E 0xff +#define BIT_SDIO_CMD_CRC_V1_8822E(x) \ + (((x) & BIT_MASK_SDIO_CMD_CRC_V1_8822E) \ + << BIT_SHIFT_SDIO_CMD_CRC_V1_8822E) +#define BITS_SDIO_CMD_CRC_V1_8822E \ + (BIT_MASK_SDIO_CMD_CRC_V1_8822E << BIT_SHIFT_SDIO_CMD_CRC_V1_8822E) +#define BIT_CLEAR_SDIO_CMD_CRC_V1_8822E(x) ((x) & (~BITS_SDIO_CMD_CRC_V1_8822E)) +#define BIT_GET_SDIO_CMD_CRC_V1_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_CMD_CRC_V1_8822E) & \ + BIT_MASK_SDIO_CMD_CRC_V1_8822E) +#define BIT_SET_SDIO_CMD_CRC_V1_8822E(x, v) \ + (BIT_CLEAR_SDIO_CMD_CRC_V1_8822E(x) | BIT_SDIO_CMD_CRC_V1_8822E(v)) + +/* 2 REG_SDIO_HSISR_8822E */ +#define BIT_DRV_WLAN_INT_CLR_8822E BIT(1) +#define BIT_DRV_WLAN_INT_8822E BIT(0) + +/* 2 REG_SDIO_HSIMR_8822E */ +#define BIT_HISR_MASK_8822E BIT(0) + +/* 2 REG_SDIO_DIOERR_RPT_8822E */ +#define BIT_SDIO_PAGE_ERR_8822E BIT(0) + +/* 2 REG_SDIO_CMD_ERRCNT_8822E */ + +#define BIT_SHIFT_CMD_CRC_ERR_CNT_8822E 0 +#define BIT_MASK_CMD_CRC_ERR_CNT_8822E 0xff +#define BIT_CMD_CRC_ERR_CNT_8822E(x) \ + (((x) & BIT_MASK_CMD_CRC_ERR_CNT_8822E) \ + << BIT_SHIFT_CMD_CRC_ERR_CNT_8822E) +#define BITS_CMD_CRC_ERR_CNT_8822E \ + (BIT_MASK_CMD_CRC_ERR_CNT_8822E << BIT_SHIFT_CMD_CRC_ERR_CNT_8822E) +#define BIT_CLEAR_CMD_CRC_ERR_CNT_8822E(x) ((x) & (~BITS_CMD_CRC_ERR_CNT_8822E)) +#define BIT_GET_CMD_CRC_ERR_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_CMD_CRC_ERR_CNT_8822E) & \ + BIT_MASK_CMD_CRC_ERR_CNT_8822E) +#define BIT_SET_CMD_CRC_ERR_CNT_8822E(x, v) \ + (BIT_CLEAR_CMD_CRC_ERR_CNT_8822E(x) | BIT_CMD_CRC_ERR_CNT_8822E(v)) + +/* 2 REG_SDIO_DATA_ERRCNT_8822E */ + +#define BIT_SHIFT_DATA_CRC_ERR_CNT_8822E 0 +#define BIT_MASK_DATA_CRC_ERR_CNT_8822E 0xff +#define BIT_DATA_CRC_ERR_CNT_8822E(x) \ + (((x) & BIT_MASK_DATA_CRC_ERR_CNT_8822E) \ + << BIT_SHIFT_DATA_CRC_ERR_CNT_8822E) +#define BITS_DATA_CRC_ERR_CNT_8822E \ + (BIT_MASK_DATA_CRC_ERR_CNT_8822E << BIT_SHIFT_DATA_CRC_ERR_CNT_8822E) +#define BIT_CLEAR_DATA_CRC_ERR_CNT_8822E(x) \ + ((x) & (~BITS_DATA_CRC_ERR_CNT_8822E)) +#define BIT_GET_DATA_CRC_ERR_CNT_8822E(x) \ + (((x) >> BIT_SHIFT_DATA_CRC_ERR_CNT_8822E) & \ + BIT_MASK_DATA_CRC_ERR_CNT_8822E) +#define BIT_SET_DATA_CRC_ERR_CNT_8822E(x, v) \ + (BIT_CLEAR_DATA_CRC_ERR_CNT_8822E(x) | BIT_DATA_CRC_ERR_CNT_8822E(v)) + +/* 2 REG_SDIO_CMD_ERR_CONTENT_8822E */ + +#define BIT_SHIFT_SDIO_CMD_ERR_CONTENT_8822E 0 +#define BIT_MASK_SDIO_CMD_ERR_CONTENT_8822E 0xffffffffffL +#define BIT_SDIO_CMD_ERR_CONTENT_8822E(x) \ + (((x) & BIT_MASK_SDIO_CMD_ERR_CONTENT_8822E) \ + << BIT_SHIFT_SDIO_CMD_ERR_CONTENT_8822E) +#define BITS_SDIO_CMD_ERR_CONTENT_8822E \ + (BIT_MASK_SDIO_CMD_ERR_CONTENT_8822E \ + << BIT_SHIFT_SDIO_CMD_ERR_CONTENT_8822E) +#define BIT_CLEAR_SDIO_CMD_ERR_CONTENT_8822E(x) \ + ((x) & (~BITS_SDIO_CMD_ERR_CONTENT_8822E)) +#define BIT_GET_SDIO_CMD_ERR_CONTENT_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_CMD_ERR_CONTENT_8822E) & \ + BIT_MASK_SDIO_CMD_ERR_CONTENT_8822E) +#define BIT_SET_SDIO_CMD_ERR_CONTENT_8822E(x, v) \ + (BIT_CLEAR_SDIO_CMD_ERR_CONTENT_8822E(x) | \ + BIT_SDIO_CMD_ERR_CONTENT_8822E(v)) + +/* 2 REG_SDIO_CRC_ERR_IDX_8822E */ +#define BIT_D3_CRC_ERR_8822E BIT(4) +#define BIT_D2_CRC_ERR_8822E BIT(3) +#define BIT_D1_CRC_ERR_8822E BIT(2) +#define BIT_D0_CRC_ERR_8822E BIT(1) +#define BIT_CMD_CRC_ERR_8822E BIT(0) + +/* 2 REG_SDIO_DATA_CRC_8822E */ + +#define BIT_SHIFT_SDIO_DATA_CRC_8822E 0 +#define BIT_MASK_SDIO_DATA_CRC_8822E 0xffff +#define BIT_SDIO_DATA_CRC_8822E(x) \ + (((x) & BIT_MASK_SDIO_DATA_CRC_8822E) << BIT_SHIFT_SDIO_DATA_CRC_8822E) +#define BITS_SDIO_DATA_CRC_8822E \ + (BIT_MASK_SDIO_DATA_CRC_8822E << BIT_SHIFT_SDIO_DATA_CRC_8822E) +#define BIT_CLEAR_SDIO_DATA_CRC_8822E(x) ((x) & (~BITS_SDIO_DATA_CRC_8822E)) +#define BIT_GET_SDIO_DATA_CRC_8822E(x) \ + (((x) >> BIT_SHIFT_SDIO_DATA_CRC_8822E) & BIT_MASK_SDIO_DATA_CRC_8822E) +#define BIT_SET_SDIO_DATA_CRC_8822E(x, v) \ + (BIT_CLEAR_SDIO_DATA_CRC_8822E(x) | BIT_SDIO_DATA_CRC_8822E(v)) + +/* 2 REG_SDIO_TRANS_FIFO_STATUS_8822E */ +#define BIT_TRANS_FIFO_UNDERFLOW_8822E BIT(1) +#define BIT_TRANS_FIFO_OVERFLOW_8822E BIT(0) + +#endif diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_gpio_cmd.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_gpio_cmd.h index 40efa5773..fa1d3afaa 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_gpio_cmd.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_gpio_cmd.h @@ -36,6 +36,7 @@ #define HALMAC_GPIO14 14 #define HALMAC_GPIO15 15 #define HALMAC_GPIO_NUM 16 +#define HALMAC_EECS 17 /* GPIO type */ #define HALMAC_GPIO_IN 0 diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_hw_cfg.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_hw_cfg.h index 24e262202..ad40ab3d7 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_hw_cfg.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_hw_cfg.h @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2016 - 2018 Realtek Corporation. All rights reserved. + * Copyright(c) 2016 - 2022 Realtek Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -184,6 +184,12 @@ #define HALMAC_8812F_SUPPORT 0 #endif +#ifdef CONFIG_RTL8822E +#define HALMAC_8822E_SUPPORT 1 +#else +#define HALMAC_8822E_SUPPORT 0 +#endif + /* Interface support */ #ifdef CONFIG_SDIO_HCI diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_reg2.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_reg2.h index be4b847de..cf3db48e4 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_reg2.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_reg2.h @@ -22,7 +22,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SYS_ISO_CTRL 0x0000 @@ -30,7 +30,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_TX_CTRL 0x10250000 @@ -40,14 +40,14 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SYS_FUNC_EN 0x0002 #define REG_SYS_PW_CTRL 0x0004 #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_CMD11_VOL_SWITCH 0x10250004 #define REG_SDIO_CTRL 0x10250005 @@ -59,13 +59,13 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SYS_CLK_CTRL 0x0008 #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_MONITOR 0x10250008 @@ -75,14 +75,14 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SYS_EEPROM_CTRL 0x000A #define REG_EE_VPD 0x000C #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_MONITOR_2 0x1025000C @@ -92,7 +92,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SYS_SWR_CTRL1 0x0010 @@ -108,7 +108,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SYS_SWR_CTRL2 0x0014 @@ -116,7 +116,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_HIMR 0x10250014 @@ -126,7 +126,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SYS_SWR_CTRL3 0x0018 @@ -134,7 +134,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_HISR 0x10250018 @@ -144,7 +144,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RSV_CTRL 0x001C @@ -152,7 +152,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_RX_REQ_LEN 0x1025001C @@ -161,7 +161,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RF_CTRL 0x001F @@ -175,7 +175,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_FREE_TXPG_SEQ_V1 0x1025001F @@ -185,7 +185,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_AFE_LDO_CTRL 0x0020 @@ -193,7 +193,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_FREE_TXPG 0x10250020 @@ -203,7 +203,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_AFE_CTRL1 0x0024 @@ -211,7 +211,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_FREE_TXPG2 0x10250024 @@ -228,13 +228,14 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_OQT_FREE_TXPG_V1 0x10250028 #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_ANAPARSW_POW_MAC 0x0028 #define REG_ANAPARLDO_POW_MAC 0x0029 @@ -252,13 +253,14 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_ANAPARLDO_MAC 0x002C #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_TXPKT_EMPTY 0x1025002C @@ -268,7 +270,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_EFUSE_CTRL 0x0030 @@ -276,7 +278,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_HTSFR_INFO 0x10250030 @@ -286,7 +288,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_LDO_EFUSE_CTRL 0x0034 #define REG_PWR_OPTION_CTRL 0x0038 @@ -295,7 +297,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_HCPWM1_V2 0x10250038 #define REG_SDIO_HCPWM2_V2 0x1025003A @@ -306,14 +308,14 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_CAL_TIMER 0x003C #define REG_ACLK_MON 0x003E #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_GPIO_MUXCFG_2 0x003F @@ -323,7 +325,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_GPIO_MUXCFG 0x0040 @@ -331,7 +333,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_INDIRECT_REG_CFG 0x10250040 @@ -341,7 +343,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_GPIO_PIN_CTRL 0x0044 @@ -349,7 +351,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_INDIRECT_REG_DATA 0x10250044 @@ -359,7 +361,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_GPIO_INTM 0x0048 #define REG_LED_CFG 0x004C @@ -373,7 +375,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_H2C 0x10250060 @@ -383,7 +385,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PAD_CTRL1 0x0064 @@ -391,7 +393,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_C2H 0x10250064 @@ -401,7 +403,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_WL_BT_PWR_CTRL 0x0068 @@ -410,7 +412,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SDM_DEBUG 0x006C @@ -425,7 +427,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SYS_SDIO_CTRL 0x0070 @@ -441,7 +443,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_HCI_OPT_CTRL 0x0074 @@ -455,7 +457,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_HCI_BG_CTRL 0x0078 @@ -467,7 +469,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_HCI_LDO_CTRL 0x007A @@ -477,7 +479,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_LDO_SWR_CTRL 0x007C @@ -492,7 +494,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MCUFW_CTRL 0x0080 @@ -500,7 +502,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_HRPWM1 0x10250080 #define REG_SDIO_HRPWM2 0x10250082 @@ -511,14 +513,14 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_MCU_TST_CFG 0x0084 #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_HPS_CLKR 0x10250084 #define REG_SDIO_BUS_CTRL 0x10250085 @@ -527,7 +529,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_HSUS_CTRL 0x10250086 @@ -537,14 +539,14 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_HMEBOX_E0_E1 0x0088 #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_RESPONSE_TIMER 0x10250088 @@ -552,7 +554,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_CMD_CRC 0x1025008A @@ -562,7 +564,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_HMEBOX_E2_E3 0x008C #define REG_WLLPS_CTRL 0x0090 @@ -570,13 +572,13 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_HSISR 0x10250090 #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_HSIMR 0x10250091 @@ -594,7 +596,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_GPIO_DEBOUNCE_CTRL 0x0098 #define REG_RPWM2 0x009C @@ -610,11 +612,18 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +#define REG_EFUSE_CTRL_1 0x00A4 + +#endif + + #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PMC_DBG_CTRL1 0x00A8 @@ -632,7 +641,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_HIMR0 0x00B0 #define REG_HISR0 0x00B4 @@ -642,7 +651,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_DIOERR_RPT 0x102500C0 @@ -657,7 +666,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_CMD_ERRCNT 0x102500C2 #define REG_SDIO_DATA_ERRCNT 0x102500C3 @@ -668,7 +677,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PAD_CTRL2 0x00C4 @@ -676,7 +685,7 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_CMD_ERR_CONTENT 0x102500C4 @@ -690,14 +699,14 @@ #if (HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_CRC_ERR_IDX 0x102500C9 #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_DATA_CRC 0x102500CA @@ -713,13 +722,13 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PMC_DBG_CTRL2 0x00CC #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SDIO_TRANS_FIFO_STATUS 0x102500CC @@ -728,7 +737,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BIST_CTRL 0x00D0 #define REG_BIST_RPT 0x00D4 @@ -739,7 +749,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_MEM_CTRL 0x00D8 @@ -767,7 +777,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_USB_SIE_INTF 0x00E0 @@ -783,7 +793,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PCIE_MIO_INTF 0x00E4 #define REG_PCIE_MIO_INTD 0x00E8 @@ -793,7 +803,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_WLRF1 0x00EC @@ -809,7 +819,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SYS_CFG1 0x00F0 #define REG_SYS_STATUS1 0x00F4 @@ -820,7 +830,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PG_SIZE 0x0104 @@ -828,7 +838,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PKT_BUFF_ACCESS_CTRL 0x0106 @@ -838,7 +848,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TSF_CLK_STATE 0x0108 #define REG_TXDMA_PQ_MAP 0x010C @@ -848,7 +858,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_TRXFF_BNDY 0x0114 @@ -863,7 +874,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_PTA_I2C_MBOX 0x0118 @@ -884,7 +896,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_RXFF_BNDY 0x011C @@ -899,7 +912,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FE1IMR 0x0120 @@ -914,7 +927,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FE1ISR 0x0124 @@ -924,7 +937,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_CPWM 0x012C #define REG_FWIMR 0x0130 @@ -955,7 +968,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MBIST_DRF_FAIL 0x0170 @@ -964,7 +977,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MBIST_START_PAUSE 0x0174 #define REG_MBIST_DONE 0x0178 @@ -990,7 +1004,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MBIST_READ_BIST_RPT 0x017C @@ -1000,7 +1015,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_AES_DECRPT_DATA 0x0180 #define REG_AES_DECRPT_CFG 0x0184 @@ -1013,7 +1028,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_HIOE_CTRL 0x0188 @@ -1026,7 +1042,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_HIOE_CFG_FILE 0x018C @@ -1036,7 +1053,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TMETER 0x0190 #define REG_OSC_32K_CTRL 0x0194 @@ -1046,7 +1063,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_32K_CAL_REG1 0x0198 @@ -1062,7 +1079,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_C2HEVT 0x01A0 @@ -1070,7 +1087,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_C2HEVT_1 0x01A4 #define REG_C2HEVT_2 0x01A8 @@ -1112,14 +1129,15 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SW_DEFINED_PAGE1 0x01B8 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_SW_DEFINED_PAGE2 0x01BC @@ -1129,7 +1147,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_MCUTST_I 0x01C0 #define REG_MCUTST_II 0x01C4 @@ -1179,7 +1197,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_BB_ACCESS_CTRL 0x01E8 #define REG_BB_ACCESS_DATA 0x01EC @@ -1198,7 +1216,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FIFOPAGE_CTRL_1 0x0200 @@ -1218,7 +1237,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FIFOPAGE_CTRL_2 0x0204 @@ -1239,7 +1259,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_AUTO_LLT_V1 0x0208 @@ -1249,7 +1269,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TXDMA_OFFSET_CHK 0x020C #define REG_TXDMA_STATUS 0x0210 @@ -1265,7 +1285,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TX_DMA_DBG 0x0214 @@ -1274,7 +1294,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_TQPNT1 0x0218 @@ -1289,7 +1310,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_TQPNT2 0x021C @@ -1309,7 +1331,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_TQPNT3 0x0220 @@ -1329,7 +1352,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_TQPNT4 0x0224 @@ -1343,7 +1367,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_RQPN_CTRL_1 0x0228 #define REG_RQPN_CTRL_2 0x022C @@ -1358,7 +1383,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FIFOPAGE_INFO_1 0x0230 @@ -1378,7 +1404,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FIFOPAGE_INFO_2 0x0234 @@ -1392,7 +1419,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FIFOPAGE_INFO_3 0x0238 @@ -1406,7 +1434,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FIFOPAGE_INFO_4 0x023C @@ -1420,7 +1449,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FIFOPAGE_INFO_5 0x0240 @@ -1435,7 +1465,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_H2C_HEAD 0x0244 #define REG_H2C_TAIL 0x0248 @@ -1483,7 +1513,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PGSUB_CNT 0x026C @@ -1495,7 +1525,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PGSUB_H 0x0270 #define REG_PGSUB_N 0x0274 @@ -1508,7 +1538,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RXDMA_AGG_PG_TH 0x0280 @@ -1517,7 +1547,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_RXPKT_NUM 0x0284 @@ -1533,7 +1564,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RXDMA_STATUS 0x0288 #define REG_RXDMA_DPR 0x028C @@ -1545,7 +1576,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FWFF_C2H 0x0298 #define REG_FWFF_CTRL 0x029C @@ -1565,7 +1596,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_RXPKTNUM 0x02B0 #define REG_RXPKTNUM_TH 0x02B4 @@ -1578,7 +1610,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FW_MSG1 0x02E0 #define REG_FW_MSG2 0x02E4 @@ -1589,7 +1621,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_PCIE_CTRL 0x0300 @@ -1610,7 +1643,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_INT_MIG 0x0304 @@ -1625,7 +1659,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BCNQ_TXBD_DESA 0x0308 @@ -1641,7 +1676,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MGQ_TXBD_DESA 0x0310 @@ -1657,7 +1693,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_VOQ_TXBD_DESA 0x0318 @@ -1673,7 +1710,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_VIQ_TXBD_DESA 0x0320 @@ -1689,7 +1727,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BEQ_TXBD_DESA 0x0328 @@ -1705,7 +1744,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BKQ_TXBD_DESA 0x0330 @@ -1721,7 +1761,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_RXQ_RXBD_DESA 0x0338 @@ -1737,7 +1778,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI0Q_TXBD_DESA 0x0340 @@ -1753,7 +1795,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI1Q_TXBD_DESA 0x0348 @@ -1769,7 +1812,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI2Q_TXBD_DESA 0x0350 @@ -1784,7 +1828,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI3Q_TXBD_DESA 0x0358 @@ -1800,7 +1845,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI4Q_TXBD_DESA 0x0360 #define REG_HI5Q_TXBD_DESA 0x0368 @@ -1816,7 +1862,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI6Q_TXBD_DESA 0x0370 @@ -1832,7 +1879,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI7Q_TXBD_DESA 0x0378 @@ -1848,7 +1896,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MGQ_TXBD_NUM 0x0380 @@ -1863,7 +1912,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_RX_RXBD_NUM 0x0382 #define REG_VOQ_TXBD_NUM 0x0384 @@ -1879,7 +1929,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_VIQ_TXBD_NUM 0x0386 #define REG_BEQ_TXBD_NUM 0x0388 @@ -1895,7 +1946,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BKQ_TXBD_NUM 0x038A #define REG_HI0Q_TXBD_NUM 0x038C @@ -1911,7 +1963,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI1Q_TXBD_NUM 0x038E #define REG_HI2Q_TXBD_NUM 0x0390 @@ -1927,7 +1980,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI3Q_TXBD_NUM 0x0392 #define REG_HI4Q_TXBD_NUM 0x0394 @@ -1943,7 +1997,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI5Q_TXBD_NUM 0x0396 #define REG_HI6Q_TXBD_NUM 0x0398 @@ -1959,7 +2014,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI7Q_TXBD_NUM 0x039A @@ -1969,7 +2025,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TSFTIMER_HCI 0x039C @@ -1978,7 +2034,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BD_RWPTR_CLR 0x039C @@ -1993,7 +2050,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_VOQ_TXBD_IDX 0x03A0 @@ -2008,7 +2066,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_VIQ_TXBD_IDX 0x03A4 @@ -2023,7 +2082,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BEQ_TXBD_IDX 0x03A8 @@ -2038,7 +2098,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BKQ_TXBD_IDX 0x03AC @@ -2053,7 +2114,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MGQ_TXBD_IDX 0x03B0 @@ -2068,7 +2130,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_RXQ_RXBD_IDX 0x03B4 @@ -2083,7 +2146,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI0Q_TXBD_IDX 0x03B8 @@ -2098,7 +2162,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI1Q_TXBD_IDX 0x03BC @@ -2113,7 +2178,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI2Q_TXBD_IDX 0x03C0 @@ -2128,7 +2194,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI3Q_TXBD_IDX 0x03C4 @@ -2143,7 +2210,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI4Q_TXBD_IDX 0x03C8 @@ -2158,7 +2226,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI5Q_TXBD_IDX 0x03CC @@ -2173,7 +2242,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI6Q_TXBD_IDX 0x03D0 @@ -2188,7 +2258,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HI7Q_TXBD_IDX 0x03D4 @@ -2203,7 +2274,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_DBG_SEL_V1 0x03D8 @@ -2217,7 +2288,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_PCIE_HRPWM1_V1 0x03D9 @@ -2231,7 +2303,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_PCIE_HCPWM1_V1 0x03DA @@ -2245,7 +2318,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PCIE_CTRL2 0x03DB @@ -2265,7 +2338,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_PCIE_HRPWM2_V1 0x03DC @@ -2285,7 +2359,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_PCIE_HCPWM2_V1 0x03DE @@ -2300,7 +2375,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PCIE_H2C_MSG_V1 0x03E0 @@ -2315,7 +2390,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PCIE_C2H_MSG_V1 0x03E4 @@ -2330,7 +2405,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_DBI_WDATA_V1 0x03E8 @@ -2345,7 +2421,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_DBI_RDATA_V1 0x03EC @@ -2359,7 +2436,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_DBI_FLAG_V1 0x03F0 @@ -2380,7 +2458,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MDIO_V1 0x03F4 @@ -2394,7 +2473,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PCIE_MIX_CFG 0x03F8 @@ -2415,7 +2494,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_HCI_MIX_CFG 0x03FC @@ -2429,7 +2508,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_Q0_INFO 0x0400 @@ -2449,7 +2529,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_Q1_INFO 0x0404 @@ -2469,7 +2550,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_Q2_INFO 0x0408 @@ -2489,7 +2571,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_Q3_INFO 0x040C @@ -2509,7 +2592,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MGQ_INFO 0x0410 @@ -2529,7 +2613,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_HIQ_INFO 0x0414 @@ -2555,7 +2640,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BCNQ_INFO 0x0418 @@ -2575,7 +2661,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_TXPKT_EMPTY 0x041A @@ -2585,7 +2672,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_CPU_MGQ_INFO 0x041C #define REG_FWHW_TXQ_CTRL 0x0420 @@ -2600,7 +2687,7 @@ #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_DATAFB_SEL 0x0423 @@ -2614,7 +2701,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_BCNQ_BDNY_V1 0x0424 @@ -2636,7 +2724,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_LIFETIME_EN 0x0426 @@ -2652,7 +2740,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SPEC_SIFS 0x0428 #define REG_RETRY_LIMIT 0x042A @@ -2662,7 +2750,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_DARFRCH 0x0434 @@ -2672,14 +2761,15 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RARFRC 0x0438 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_RARFRCH 0x043C @@ -2689,7 +2779,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RRSR 0x0440 @@ -2705,14 +2795,15 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ARFR0 0x0444 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_ARFRH0 0x0448 @@ -2721,7 +2812,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ARFR1_V1 0x044C @@ -2746,7 +2837,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ARFRH1_V1 0x0450 @@ -2762,7 +2853,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_CCK_CHECK 0x0454 @@ -2783,7 +2874,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_AMPDU_MAX_TIME_V1 0x0455 @@ -2797,7 +2888,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_BCNQ1_BDNY_V1 0x0456 @@ -2830,7 +2922,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_AMPDU_MAX_LENGTH_HT 0x0458 @@ -2838,7 +2931,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_ACQ_STOP 0x045C @@ -2853,7 +2947,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NDPA_RATE 0x045D @@ -2863,7 +2957,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TX_HANG_CTRL 0x045E #define REG_NDPA_OPT_CTRL 0x045F @@ -2876,7 +2970,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_AMPDU_MAX_LENGTH_VHT 0x0460 @@ -2886,7 +2981,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RD_RESP_PKT_TH 0x0463 @@ -2895,7 +2990,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_CMDQ_INFO 0x0464 @@ -2909,7 +3004,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_Q4_INFO 0x0468 @@ -2923,7 +3019,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_Q5_INFO 0x046C #define REG_Q6_INFO 0x0470 @@ -2934,7 +3031,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WMAC_LBK_BUF_HD_V1 0x0478 #define REG_MGQ_BDNY_V1 0x047A @@ -2945,7 +3042,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TXRPT_CTRL 0x047C #define REG_INIRTS_RATE_SEL 0x0480 @@ -2958,7 +3055,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MACID_SLEEP3 0x0484 @@ -2986,7 +3084,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MACID_SLEEP1 0x0488 @@ -2995,7 +3094,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ARFR2_V1 0x048C @@ -3009,7 +3108,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ARFRH2_V1 0x0490 @@ -3018,7 +3117,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ARFR3_V1 0x0494 @@ -3032,7 +3131,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ARFRH3_V1 0x0498 @@ -3041,14 +3140,15 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_ARFR4 0x049C #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ARFRH4 0x04A0 @@ -3057,14 +3157,15 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_ARFR5 0x04A4 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ARFRH5 0x04A8 @@ -3074,7 +3175,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TXRPT_START_OFFSET 0x04AC @@ -3092,17 +3193,11 @@ #endif -#if (HALMAC_8812F_SUPPORT) - -#define REG_RRSR_CTS 0x04B0 - -#endif - #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_POWER_STAGE1 0x04B4 @@ -3111,7 +3206,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_POWER_STAGE2 0x04B8 @@ -3121,7 +3216,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SW_AMPDU_BURST_MODE_CTRL 0x04BC #define REG_PKT_LIFE_TIME 0x04C0 @@ -3138,7 +3233,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MACID_SLEEP2 0x04D0 @@ -3153,7 +3249,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MACID_SLEEP 0x04D4 @@ -3168,7 +3265,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_HW_SEQ0 0x04D8 #define REG_HW_SEQ1 0x04DA @@ -3191,7 +3288,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_NULL_PKT_STATUS_V1 0x04E0 @@ -3200,7 +3298,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PTCL_ERR_STATUS 0x04E2 @@ -3220,7 +3318,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NULL_PKT_STATUS_EXTEND 0x04E3 @@ -3232,7 +3330,8 @@ #endif -#if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_HQMGQ_DROP 0x04E4 @@ -3254,7 +3353,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PRECNT_CTRL 0x04E5 @@ -3274,7 +3373,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_POLLUTE_PKT_CNT 0x04E8 @@ -3287,7 +3386,7 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PTCL_DBG 0x04EC @@ -3337,7 +3436,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_CPUMGQ_TIMER_CTRL2 0x04F4 @@ -3358,7 +3457,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_DUMMY_PAGE4_V1 0x04FC @@ -3372,7 +3472,7 @@ #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MOREDATA 0x04FE @@ -3382,7 +3482,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_EDCA_VO_PARAM 0x0500 #define REG_EDCA_VI_PARAM 0x0504 @@ -3398,7 +3498,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_TSFTR_SYN_OFFSET 0x0518 @@ -3414,7 +3515,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_AGGR_BREAK_TIME 0x051A #define REG_SLOT 0x051B @@ -3422,7 +3523,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NOA_ON_ERLY_TIME 0x051C @@ -3435,7 +3536,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NOA_OFF_ERLY_TIME 0x051D @@ -3457,7 +3558,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TX_PTCL_CTRL 0x0520 #define REG_TXPAUSE 0x0522 @@ -3469,7 +3570,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_MBSSID_CTRL 0x0526 @@ -3478,7 +3579,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_P2PPS_CTRL 0x0527 @@ -3488,7 +3590,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PKT_LIFETIME_CTRL 0x0528 @@ -3497,7 +3599,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_P2PPS_SPEC_STATE 0x052B @@ -3522,21 +3624,22 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TXOP_LIMIT_CTRL 0x052C #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BAR_TX_CTRL 0x0530 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_P2PON_DIS_TXTIME 0x0531 @@ -3554,7 +3657,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_CCA_TXEN_CNT 0x0534 @@ -3567,7 +3671,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MAX_INTER_COLLISION 0x0538 @@ -3580,7 +3685,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MAX_INTER_COLLISION_CNT 0x053C @@ -3589,7 +3695,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_TBTT_PROHIBIT 0x0540 #define REG_P2PPS_STATE 0x0543 @@ -3600,7 +3707,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RD_NAV_NXT 0x0544 #define REG_NAV_PROT_LEN 0x0546 @@ -3619,7 +3726,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FTM_PTT 0x0548 @@ -3632,7 +3740,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FTM_TSF 0x054C @@ -3641,7 +3750,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_BCN_CTRL 0x0550 @@ -3655,7 +3765,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_BCN_CTRL_CLINT0 0x0551 @@ -3664,7 +3775,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MBID_NUM 0x0552 #define REG_DUAL_TSF_RST 0x0553 @@ -3677,7 +3789,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ATIMWND 0x055A @@ -3686,7 +3798,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_USTIME_TSF 0x055C #define REG_BCN_MAX_ERR 0x055D @@ -3698,7 +3811,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TSFTR 0x0560 @@ -3712,7 +3825,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TSFTR_1 0x0564 @@ -3732,7 +3845,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_FREERUN_CNT 0x0568 @@ -3745,7 +3859,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FREERUN_CNT_1 0x056C @@ -3760,7 +3874,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ATIMWND1_V1 0x0570 @@ -3768,7 +3882,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_TBTT_PROHIBIT_INFRA 0x0571 @@ -3777,7 +3892,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_CTWND 0x0572 #define REG_BCNIVLCUNT 0x0573 @@ -3789,7 +3905,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_HGQ_TIMEOUT_PERIOD 0x0575 @@ -3798,7 +3914,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TXCMD_TIMEOUT_PERIOD 0x0576 #define REG_MISC_CTRL 0x0577 @@ -3813,7 +3929,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_BCN_CTRL_CLINT1 0x0578 #define REG_BCN_CTRL_CLINT2 0x0579 @@ -3823,7 +3940,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_EXTEND_CTRL 0x057B @@ -3837,7 +3954,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_P2PPS1_SPEC_STATE 0x057C #define REG_P2PPS1_STATE 0x057D @@ -3855,7 +3973,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PS_TIMER0 0x0580 @@ -3870,7 +3988,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PS_TIMER1 0x0584 @@ -3885,7 +4003,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PS_TIMER2 0x0588 @@ -3894,7 +4012,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_TBTT_CTN_AREA 0x058C #define REG_FORCE_BCN_IFS 0x058E @@ -3911,7 +4030,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TXOP_MIN 0x0590 #define REG_PRE_BKF_TIME 0x0592 @@ -3957,7 +4076,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RX_TBTT_SHIFT_V1 0x0598 @@ -3966,7 +4085,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ATIMWND2 0x05A0 @@ -3981,7 +4100,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ATIMWND3 0x05A1 @@ -3996,7 +4115,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ATIMWND4 0x05A2 @@ -4011,7 +4130,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ATIMWND5 0x05A3 @@ -4026,7 +4145,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ATIMWND6 0x05A4 @@ -4041,7 +4160,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ATIMWND7 0x05A5 @@ -4056,7 +4175,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ATIMUGT 0x05A6 @@ -4071,7 +4190,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_HIQ_NO_LMT_EN 0x05A7 @@ -4086,7 +4205,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_DTIM_COUNTER_ROOT 0x05A8 @@ -4101,7 +4220,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_DTIM_COUNTER_VAP1 0x05A9 #define REG_DTIM_COUNTER_VAP2 0x05AA @@ -4119,7 +4238,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_DTIM_COUNTER_VAP5 0x05AD #define REG_DTIM_COUNTER_VAP6 0x05AE @@ -4131,7 +4250,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_EARLY_128US 0x05B1 @@ -4145,7 +4264,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_P2PPS1_CTRL 0x05B2 @@ -4159,7 +4279,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_P2PPS2_CTRL 0x05B3 @@ -4173,7 +4294,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_TIMER0_SRC_SEL 0x05B4 #define REG_NOA_UNIT_SEL 0x05B5 @@ -4183,7 +4305,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_P2POFF_DIS_TXTIME 0x05B7 @@ -4191,7 +4313,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MBSSID_BCN_SPACE2 0x05B8 #define REG_MBSSID_BCN_SPACE3 0x05BC @@ -4202,7 +4325,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ACMHWCTRL 0x05C0 #define REG_ACMRSTCTRL 0x05C1 @@ -4213,7 +4336,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MAC_HEADER_NAV_OFFSET 0x05CA #define REG_DIS_NDPA_NAV_CHECK 0x05CB @@ -4224,7 +4348,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_EDCA_RANDOM_GEN 0x05CC @@ -4233,7 +4357,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_TXCMD_NOA_SEL 0x05CF @@ -4257,7 +4382,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_32K_CLK_SEL 0x05D0 @@ -4275,7 +4400,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_EARLYINT_ADJUST 0x05D4 @@ -4293,7 +4418,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BCNERR_CNT 0x05D8 @@ -4311,7 +4436,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BCNERR_CNT_2 0x05DC @@ -4320,14 +4445,15 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_NOA_PARAM 0x05E0 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NOA_PARAM_1 0x05E4 #define REG_NOA_PARAM_2 0x05E8 @@ -4341,7 +4467,7 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NOA_PARAM_3 0x05EC @@ -4361,7 +4487,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_P2P_RST 0x05F0 @@ -4376,7 +4503,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SCHEDULER_RST 0x05F1 @@ -4395,7 +4522,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_SCH_DBG_VALUE 0x05F4 @@ -4405,7 +4533,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SCH_TXCMD 0x05F8 #define REG_PAGE5_DUMMY 0x05FC @@ -4415,14 +4543,15 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_FWPKT_CR 0x0601 #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FW_STS_FILTER 0x0602 @@ -4445,7 +4574,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TCR 0x0604 #define REG_RCR 0x0608 @@ -4455,7 +4584,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_RX_PKT_LIMIT 0x060C @@ -4471,7 +4601,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RX_DLK_TIME 0x060D @@ -4487,7 +4617,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RX_DRVINFO_SZ 0x060F #define REG_MACID 0x0610 @@ -4495,7 +4625,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MACID_H 0x0614 @@ -4505,14 +4636,15 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_BSSID 0x0618 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_BSSID_H 0x061C @@ -4522,14 +4654,15 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_MAR 0x0620 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MAR_H 0x0624 @@ -4538,7 +4671,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_MBIDCAMCFG_1 0x0628 @@ -4547,7 +4681,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_MBIDCAMCFG_2 0x062C @@ -4574,7 +4708,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WMAC_TCR_TSFT_OFS 0x0630 #define REG_UDF_THSD 0x0632 @@ -4591,7 +4725,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_STMP_THSD 0x0634 #define REG_WMAC_TXTIMEOUT 0x0635 @@ -4610,14 +4744,15 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_USTIME_EDCA 0x0638 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_ACKTO_CCK 0x0639 @@ -4627,7 +4762,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_MAC_SPEC_SIFS 0x063A #define REG_RESP_SIFS_CCK 0x063C @@ -4639,7 +4774,7 @@ #endif #if (HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RPFM_MAP0 0x0644 @@ -4652,14 +4787,14 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RPFM_MAP1_V1 0x0646 #endif #if (HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RPFM_CAM_CMD 0x0648 #define REG_RPFM_CAM_RWD 0x064C @@ -4670,7 +4805,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_NAV_CTRL 0x0650 #define REG_BACAMCMD 0x0654 @@ -4680,7 +4815,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_BACAMCONTENT 0x0658 @@ -4694,7 +4829,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BACAMCONTENT_H 0x065C @@ -4703,7 +4838,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_LBDLY 0x0660 @@ -4718,7 +4853,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_BACAM_RPMEN 0x0661 @@ -4726,7 +4862,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TX_RX 0x0662 @@ -4734,7 +4870,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_BITMAP_CTL 0x0663 @@ -4744,7 +4881,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_RXERR_RPT 0x0664 #define REG_WMAC_TRXPTCL_CTL 0x0668 @@ -4752,7 +4889,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_TRXPTCL_CTL_H 0x066C @@ -4762,7 +4900,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_CAMCMD 0x0670 #define REG_CAMWRITE 0x0674 @@ -4774,7 +4912,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_RXFILTER_CATEGORY_1 0x0682 #define REG_RXFILTER_ACTION_1 0x0683 @@ -4793,14 +4932,14 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_WOW_CTRL 0x0690 #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NAN_RX_TSF_FILTER 0x0691 @@ -4810,10 +4949,18 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_PS_RX_INFO 0x0692 #define REG_WMMPS_UAPSD_TID 0x0693 + +#endif + +#if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ + HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8881A_SUPPORT) + #define REG_LPNAV_CTRL 0x0694 #endif @@ -4827,7 +4974,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WKFMCAM_CMD 0x0698 @@ -4835,7 +4982,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WKFMCAM_RWD 0x069C @@ -4844,7 +4992,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_RXFLTMAP0 0x06A0 @@ -4859,7 +5008,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_RXFLTMAP1 0x06A2 @@ -4886,7 +5036,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RXFLTMAP2 0x06A4 @@ -4896,7 +5046,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_BCN_PSR_RPT 0x06A8 @@ -4904,7 +5054,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_FLC_RPC 0x06AC #define REG_FLC_RPCT 0x06AD @@ -4916,7 +5067,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RXPKTMON_CTRL 0x06B0 @@ -4926,7 +5077,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_STATE_MON 0x06B4 @@ -4940,7 +5091,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_ERROR_MON 0x06B8 @@ -4955,7 +5107,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SEARCH_MACID 0x06BC @@ -4964,7 +5116,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_BT_COEX_TABLE 0x06C0 @@ -4978,14 +5130,15 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_COEX_TABLE2 0x06C4 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_BT_COEX_BREAK_TABLE 0x06C8 @@ -4998,7 +5151,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_COEX_TABLE_H 0x06CC @@ -5007,7 +5160,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RXCMD_0 0x06D0 #define REG_RXCMD_1 0x06D4 @@ -5017,7 +5170,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_WMAC_RESP_TXINFO 0x06D8 @@ -5032,7 +5185,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BBPSF_CTRL 0x06DC @@ -5048,7 +5201,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_P2P_RX_BCN_NOA 0x06E0 #define REG_ASSOCIATED_BFMER0_INFO 0x06E4 @@ -5062,7 +5215,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ASSOCIATED_BFMER0_INFO_H 0x06E8 @@ -5071,7 +5224,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_ASSOCIATED_BFMER1_INFO 0x06EC @@ -5085,7 +5238,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ASSOCIATED_BFMER1_INFO_H 0x06F0 @@ -5094,7 +5247,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TX_CSI_RPT_PARAM_BW20 0x06F4 @@ -5109,7 +5262,7 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_TX_CSI_RPT_PARAM_BW40 0x06F8 @@ -5129,7 +5282,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_CSI_PTR 0x06FC @@ -5145,14 +5299,15 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_MACID1 0x0700 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MACID1_1 0x0704 @@ -5161,7 +5316,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BSSID1 0x0708 @@ -5175,7 +5330,8 @@ #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_BSSID1_1 0x070C @@ -5193,7 +5349,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_BCN_PSR_RPT1 0x0710 @@ -5208,7 +5364,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_ASSOCIATED_BFMEE_SEL 0x0714 @@ -5224,7 +5381,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_SND_PTCL_CTRL 0x0718 @@ -5242,7 +5399,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_RX_CSI_RPT_INFO 0x071C @@ -5264,7 +5422,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_NS_ARP_CTRL 0x0720 #define REG_NS_ARP_INFO 0x0724 @@ -5292,7 +5451,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BEAMFORMING_INFO_NSARP_V1 0x0728 @@ -5313,7 +5472,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BEAMFORMING_INFO_NSARP 0x072C @@ -5332,7 +5491,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_IPV6 0x0730 @@ -5345,7 +5504,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_IPV6_1 0x0734 @@ -5358,7 +5517,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_IPV6_2 0x0738 @@ -5371,7 +5530,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_IPV6_3 0x073C @@ -5388,7 +5547,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WMAC_RTX_CTX_SUBTYPE_CFG 0x0750 @@ -5400,7 +5559,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_SWAES_DIO_B63_B32 0x0754 @@ -5412,7 +5572,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_SWAES_DIO_B95_B64 0x0758 @@ -5424,7 +5585,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_SWAES_DIO_B127_B96 0x075C @@ -5432,7 +5594,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_SWAES_CFG 0x0760 @@ -5441,7 +5604,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_COEX_V2 0x0762 @@ -5451,7 +5614,7 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_BT_COEX 0x0764 @@ -5466,14 +5629,15 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WLAN_ACT_MASK_CTRL 0x0768 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WLAN_ACT_MASK_CTRL_1 0x076C @@ -5489,7 +5653,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_COEX_ENHANCED_INTR_CTRL 0x076E @@ -5499,14 +5663,15 @@ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8881A_SUPPORT) + HALMAC_8822E_SUPPORT || HALMAC_8881A_SUPPORT) #define REG_BT_ACT_STATISTICS 0x0770 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_BT_ACT_STATISTICS_1 0x0774 @@ -5521,7 +5686,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_STATISTICS_CONTROL_REGISTER 0x0778 @@ -5536,7 +5701,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_STATUS_REPORT_REGISTER 0x077C @@ -5552,7 +5717,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_INTERRUPT_CONTROL_REGISTER 0x0780 @@ -5569,7 +5734,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WLAN_REPORT_TIME_OUT_CONTROL_REGISTER 0x0784 @@ -5584,14 +5749,15 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_ISOLATION_TABLE_REGISTER_REGISTER 0x0785 #endif #if (HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_BT_ISOLATION_TABLE_REGISTER_REGISTER_1 0x0788 #define REG_BT_ISOLATION_TABLE_REGISTER_REGISTER_2 0x078C @@ -5607,7 +5773,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_INTERRUPT_STATUS_REGISTER 0x078F @@ -5622,7 +5788,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_TDMA_TIME_REGISTER 0x0790 @@ -5637,7 +5803,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BT_ACT_REGISTER 0x0794 @@ -5659,7 +5825,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_OBFF_CTRL_BASIC 0x0798 @@ -5680,7 +5846,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_OBFF_CTRL2_TIMER 0x079C @@ -5695,7 +5861,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_LTR_CTRL_BASIC 0x07A0 @@ -5710,7 +5876,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_LTR_CTRL2_TIMER_THRESHOLD 0x07A4 @@ -5725,7 +5891,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_LTR_IDLE_LATENCY_V1 0x07A8 #define REG_LTR_ACTIVE_LATENCY_V1 0x07AC @@ -5746,7 +5912,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_ANTENNA_TRAINING_CONTROL_REGISTER 0x07B0 @@ -5765,7 +5932,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ANTENNA_TRAINING_CONTROL_REGISTER_1 0x07B4 @@ -5780,7 +5947,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_WMAC_PKTCNT_RWD 0x07B8 @@ -5795,7 +5963,8 @@ #if (HALMAC_8192E_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8881A_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT || \ + HALMAC_8881A_SUPPORT) #define REG_WMAC_PKTCNT_CTRL 0x07BC @@ -5816,7 +5985,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_IQ_DUMP 0x07C0 @@ -5829,7 +5998,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_IQ_DUMP_1 0x07C4 @@ -5842,7 +6011,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_IQ_DUMP_2 0x07C8 @@ -5850,14 +6019,16 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_FTM_CTL 0x07CC #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_IQ_MDPK_FUNC 0x07CE @@ -5877,7 +6048,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_OPTION_FUNCTION 0x07D0 @@ -5890,7 +6062,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WMAC_OPTION_FUNCTION_1 0x07D4 @@ -5903,7 +6075,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WMAC_OPTION_FUNCTION_2 0x07D8 @@ -5911,7 +6083,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RX_FILTER_FUNCTION 0x07DA @@ -5927,7 +6099,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NDP_SIG 0x07E0 @@ -5942,7 +6114,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TXCMD_INFO_FOR_RSP_PKT 0x07E4 @@ -5955,7 +6127,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TXCMD_INFO_FOR_RSP_PKT_1 0x07E8 @@ -5980,7 +6152,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WSEC_OPTION 0x07EC @@ -5994,7 +6166,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RTS_ADDRESS_0 0x07F0 @@ -6013,7 +6185,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RTS_ADDRESS_0_1 0x07F4 @@ -6027,7 +6199,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RTS_ADDRESS_1 0x07F8 @@ -6046,7 +6218,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RTS_ADDRESS_1_1 0x07FC @@ -6060,13 +6232,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SYS_CFG3 0x1000 #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_ANAPARSW_MAC_0 0x1010 #define REG_ANAPARSW_MAC_1 0x1014 @@ -6076,10 +6249,26 @@ #endif -#if (HALMAC_8814B_SUPPORT) +#if (HALMAC_8814B_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ANAPAR_MAC_3 0x1024 + +#endif + +#if (HALMAC_8814B_SUPPORT) + #define REG_ANAPAR_MAC_4 0x1028 + +#endif + +#if (HALMAC_8822E_SUPPORT) + +#define REG_ANAPARSW_MAC_2 0x1028 + +#endif + +#if (HALMAC_8814B_SUPPORT) + #define REG_ANAPAR_MAC_5 0x102C #define REG_ANAPAR_MAC_6 0x1030 @@ -6099,7 +6288,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_ANAPAR_XTAL_0 0x1040 #define REG_ANAPAR_XTAL_1 0x1044 @@ -6107,7 +6297,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ANAPAR_XTAL_3 0x104C @@ -6120,7 +6310,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ANAPAR_XTAL_AACK_0 0x1054 @@ -6132,7 +6322,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ANAPAR_XTAL_AACK_1 0x1058 @@ -6145,13 +6335,13 @@ #endif -#if (HALMAC_8822C_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_XTAL_AAC_OUTPUT 0x1060 #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_ANAPAR_XTAL_MODE_DECODER 0x1064 @@ -6165,8 +6355,14 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +#define REG_ANAPAR_XTAL_CAP_CTRL 0x106C + +#endif + #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SYS_CFG5 0x1070 @@ -6199,14 +6395,14 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_CPU_DMEM_CON 0x1080 #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BOOT_REASON 0x1088 @@ -6277,7 +6473,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_HIMR2 0x10B0 #define REG_HISR2 0x10B4 @@ -6326,7 +6522,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_H2C_PKT_READADDR 0x10D0 @@ -6339,7 +6535,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_H2C_PKT_WRITEADDR 0x10D4 @@ -6352,7 +6548,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MEM_PWR_CRTL 0x10D8 @@ -6393,7 +6589,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FW_DBG6 0x10F8 #define REG_FW_DBG7 0x10FC @@ -6403,7 +6599,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_CR_EXT 0x1100 @@ -6421,7 +6617,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FWFF 0x1114 @@ -6429,7 +6625,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_RXFF_PTR_V1 0x1118 #define REG_RXFF_WTR_V1 0x111C @@ -6439,7 +6636,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FE2IMR 0x1120 #define REG_FE2ISR 0x1124 @@ -6459,7 +6656,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_TC7_CTRL_V1 0x1158 #define REG_TC8_CTRL_V1 0x115C @@ -6473,7 +6671,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RX_BCN_TBTT_ITVL0 0x1160 @@ -6486,7 +6684,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RX_BCN_TBTT_ITVL1 0x1164 @@ -6500,7 +6698,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_IO_WRAP_ERR_FLAG 0x1170 @@ -6520,7 +6719,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SPEED_SENSOR 0x1180 #define REG_SPEED_SENSOR1 0x1184 @@ -6545,7 +6744,8 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8814AMP_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_EXT_QUEUE_REG 0x11C0 @@ -6565,7 +6765,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_COUNTER_CTRL 0x11C4 @@ -6579,7 +6779,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_COUNTER_THRESHOLD 0x11C8 @@ -6587,7 +6787,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_COUNTER_SET 0x11CC #define REG_COUNTER_OVERFLOW 0x11D0 @@ -6602,7 +6802,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TXDMA_LEN_THRESHOLD 0x11D4 @@ -6616,7 +6816,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RXDMA_LEN_THRESHOLD 0x11D8 @@ -6630,7 +6830,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PCIE_EXEC_TIME_THRESHOLD 0x11DC @@ -6638,7 +6838,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FT2IMR 0x11E0 #define REG_FT2ISR 0x11E4 @@ -6648,7 +6848,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MSG2 0x11F0 #define REG_MSG3 0x11F4 @@ -6682,7 +6882,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_DDMA_CH5CTRL 0x1258 @@ -6691,7 +6891,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_DDMA_INT_MSK 0x12E0 #define REG_DDMA_CHSTATUS 0x12E8 @@ -6703,7 +6903,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_STC_INT_CS 0x1300 #define REG_ST_INT_CFG 0x1304 @@ -6734,7 +6934,8 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_H2CQ_TXBD_DESA 0x1320 @@ -6750,7 +6951,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_H2CQ_TXBD_NUM 0x1328 @@ -6758,7 +6959,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_H2CQ_TXBD_IDX 0x132C @@ -6767,7 +6969,7 @@ #if (HALMAC_8192F_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_H2CQ_CSR 0x1330 @@ -6831,7 +7033,7 @@ #endif #if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_CHANGE_PCIE_SPEED 0x1350 @@ -6849,7 +7051,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_DEBUG_STATE1 0x1354 @@ -6867,7 +7070,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_DEBUG_STATE2 0x1358 @@ -6885,7 +7089,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_DEBUG_STATE3 0x135C @@ -6975,7 +7180,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_CHNL_DMA_CFG_V1 0x137C @@ -7077,7 +7282,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PCIE_HISR0_V1 0x13B4 @@ -7108,7 +7313,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PCIE_HISR1_V1 0x13BC @@ -7184,7 +7389,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_Q0_Q1_INFO 0x1400 @@ -7204,7 +7409,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_Q2_Q3_INFO 0x1404 @@ -7218,7 +7423,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_Q4_Q5_INFO 0x1408 @@ -7232,7 +7437,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_Q6_Q7_INFO 0x140C @@ -7246,7 +7451,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MGQ_HIQ_INFO 0x1410 @@ -7260,7 +7465,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || \ HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_CMDQ_BCNQ_INFO 0x1414 @@ -7280,7 +7485,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_LOOPBACK_OPTION 0x1420 @@ -7288,7 +7493,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_AESIV_SETTING 0x1424 @@ -7297,7 +7503,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BF0_TIME_SETTING 0x1428 #define REG_BF1_TIME_SETTING 0x142C @@ -7307,7 +7513,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MACID_RELEASE0 0x1434 @@ -7321,7 +7528,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MACID_RELEASE1 0x1438 @@ -7335,7 +7543,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MACID_RELEASE2 0x143C @@ -7349,7 +7558,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MACID_RELEASE3 0x1440 #define REG_MACID_RELEASE_SETTING 0x1444 @@ -7359,7 +7569,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_FAST_EDCA_VOVI_SETTING 0x1448 #define REG_FAST_EDCA_BEBK_SETTING 0x144C @@ -7368,7 +7578,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MACID_DROP0 0x1450 @@ -7382,7 +7593,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MACID_DROP1 0x1454 @@ -7396,7 +7608,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MACID_DROP2 0x1458 #define REG_MACID_DROP3 0x145C @@ -7405,7 +7618,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_R_MACID_RELEASE_SUCCESS_0 0x1460 #define REG_R_MACID_RELEASE_SUCCESS_1 0x1464 @@ -7421,7 +7634,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MGQ_FIFO_WRITE_POINTER 0x1470 #define REG_MGQ_FIFO_READ_POINTER 0x1472 @@ -7436,7 +7649,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MGQ_FIFO_RELEASE_INT_MASK 0x1474 #define REG_MGQ_FIFO_RELEASE_INT_FLAG 0x1476 @@ -7450,7 +7663,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MGQ_FIFO_VALID_MAP 0x1478 #define REG_MGQ_FIFO_LIFETIME 0x147A @@ -7459,7 +7672,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET 0x147C @@ -7467,7 +7680,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_SHCUT_SETTING 0x1480 @@ -7481,7 +7694,8 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814AMP_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_SHCUT_LLC_ETH_TYPE0 0x1484 #define REG_SHCUT_LLC_ETH_TYPE1 0x1488 @@ -7508,7 +7722,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MU_TX_CTL 0x14C0 @@ -7521,7 +7735,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MU_STA_GID_VLD 0x14C4 #define REG_MU_STA_USER_POS_INFO 0x14C8 @@ -7529,14 +7744,15 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MU_STA_USER_POS_INFO_H 0x14CC #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_CHNL_INFO_CTRL 0x14D0 @@ -7549,14 +7765,16 @@ #endif #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_CHNL_IDLE_TIME 0x14D4 #define REG_CHNL_BUSY_TIME 0x14D8 #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_MU_TRX_DBG_CNT_V1 0x14DC @@ -7602,7 +7820,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_CPUMGQ_TX_TIMER 0x1500 @@ -7617,7 +7835,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PS_TIMER_A 0x1504 @@ -7632,7 +7850,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PS_TIMER_B 0x1508 @@ -7649,7 +7867,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PS_TIMER_C 0x150C @@ -7664,7 +7882,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PS_TIMER_ABC_CPUMGQ_TIMER_CRTL 0x1510 @@ -7679,7 +7897,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_CPUMGQ_TX_TIMER_EARLY 0x1514 #define REG_PS_TIMER_A_EARLY 0x1515 @@ -7689,7 +7907,8 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_CPUMGQ_PARAMETER 0x1518 @@ -7707,7 +7926,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TSF_SYNC_ADJ 0x1520 @@ -7732,7 +7951,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TSF_ADJ_VLAUE 0x1524 @@ -7750,7 +7969,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TSF_ADJ_VLAUE_2 0x1528 @@ -7830,7 +8049,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_P2PPS_HW_AUTO_PAUSE_CTRL 0x156C #define REG_P2PPS1_HW_AUTO_PAUSE_CTRL 0x1570 @@ -7861,7 +8081,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_SCHEDULER_COUNTER 0x15D0 @@ -7870,7 +8091,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BCN_PSR_RPT2 0x1600 #define REG_BCN_PSR_RPT3 0x1604 @@ -7880,7 +8101,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_RXPSF_CTRL 0x1610 #define REG_RXPSF_TYPE_CTRL 0x1614 @@ -7888,7 +8109,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_HT_SND_REF_RATE 0x161C @@ -7903,14 +8124,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MACID2 0x1620 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MACID2_H 0x1624 @@ -7919,14 +8140,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BSSID2 0x1628 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BSSID2_H 0x162C @@ -7935,14 +8156,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MACID3 0x1630 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MACID3_H 0x1634 @@ -7951,14 +8172,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BSSID3 0x1638 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BSSID3_H 0x163C @@ -7967,14 +8188,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MACID4 0x1640 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MACID4_H 0x1644 @@ -7983,14 +8204,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814A_SUPPORT || HALMAC_8814AMP_SUPPORT || \ HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BSSID4 0x1648 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_BSSID4_H 0x164C @@ -7998,14 +8219,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NOA_REPORT 0x1650 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_NOA_REPORT_1 0x1654 #define REG_NOA_REPORT_2 0x1658 @@ -8015,7 +8236,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PWRBIT_SETTING 0x1660 @@ -8027,7 +8248,8 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_GENERAL_OPTION 0x1664 @@ -8049,7 +8271,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_CSI_RRSR 0x1678 @@ -8068,7 +8290,7 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_MU_BF_OPTION 0x167C @@ -8076,7 +8298,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WMAC_PAUSE_BB_CLR_TH 0x167D @@ -8089,7 +8311,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG__WMAC_MULBK_BUF 0x167E @@ -8103,7 +8325,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WMAC_MU_OPTION 0x167F #define REG_WMAC_MU_BF_CTL 0x1680 @@ -8118,14 +8340,15 @@ #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WMAC_BB_STOP_RX_COUNTER 0x1690 #define REG_WMAC_PLCP_MONITOR 0x1694 #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_PLCP_MONITOR_MUTX 0x1698 @@ -8137,7 +8360,8 @@ #endif -#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define REG_WMAC_CSIDMA_CFG 0x169C @@ -8145,14 +8369,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_0 0x16A0 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_0_H 0x16A4 @@ -8160,14 +8384,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_1 0x16A8 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_1_H 0x16AC @@ -8175,14 +8399,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_2 0x16B0 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_2_H 0x16B4 @@ -8190,14 +8414,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_3 0x16B8 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_3_H 0x16BC @@ -8205,14 +8429,14 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_4 0x16C0 #endif #if (HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_TRANSMIT_ADDRSS_4_H 0x16C4 @@ -8227,7 +8451,7 @@ #if (HALMAC_8197F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8812F_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8822B_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_WL2LTECOEX_INDIRECT_ACCESS_CTRL_V1 0x1700 #define REG_WL2LTECOEX_INDIRECT_ACCESS_WRITE_DATA_V1 0x1704 @@ -8324,7 +8548,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PCIE_HISR2_V1 0x23B4 @@ -8336,7 +8560,7 @@ #endif -#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT) +#if (HALMAC_8812F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8822E_SUPPORT) #define REG_PCIE_HISR3_V1 0x23BC @@ -8461,9 +8685,9 @@ #define REG_8051ERRFLAG_MASK 0xFD09 #define REG_TXADDRH 0xFD10 /* Tx Packet High Address */ #define REG_RXADDRH 0xFD11 /* Rx Packet High Address */ -#define REG_TXADDRH_EXT 0xFD12 +#define REG_TXADDRH_EXT 0xFD12 /* 0xFD12[0] : for 8051 access txpktbuf high64k as external register */ -#define REG_U3_STATE 0xFD48 +#define REG_U3_STATE 0xFD48 /* (Read only) [7:4] : usb3 changed last state. [3:0] usb3 state */ /* for MAILBOX */ #define REG_OUTDATA0 0xFD50 @@ -8544,17 +8768,17 @@ #define REG_USB_VID 0xFE60 #define REG_USB_PID 0xFE62 #define REG_USB_OPT 0xFE64 -#define REG_USB_CONFIG 0xFE65 - -#define REG_USB_PHY_PARA1 0xFE68 -#define REG_USB_PHY_PARA2 0xFE69 -#define REG_USB_PHY_PARA3 0xFE6A -#define REG_USB_PHY_PARA4 0xFE6B +#define REG_USB_CONFIG 0xFE65 /* RX EP setting. 0xFE65 Bit[3:0] : RXQ, Bit[7:4] : INTQ */ +/* TX EP setting. 0xFE66 Bit[3:0] : TXQ0, Bit[7:4] : TXQ1, 0xFE67 Bit[3:0] : TXQ2 */ +#define REG_USB_PHY_PARA1 0xFE68 /* Bit[7:4]: XCVR_SEN (USB PHY 0xE2[7:4]), Bit[3:0]: XCVR_SH (USB PHY 0xE2[3:0]) */ +#define REG_USB_PHY_PARA2 0xFE69 /* Bit[7:5]: XCVR_BG (USB PHY 0xE3[5:3]), Bit[4:2]: XCVR_DR (USB PHY 0xE3[2:0]), Bit[1]: SE0_LVL (USB PHY 0xE5[7]), Bit[0]: FORCE_XTL_ON (USB PHY 0xE5[1]) */ +#define REG_USB_PHY_PARA3 0xFE6A /* Bit[7:5]: XCVR_SRC (USB PHY 0xE5[4:2]), Bit[4]: LATE_DLLEN (USB PHY 0xF0[4]), Bit[3]: HS_LP_MODE (USB PHY 0xF0[3]), Bit[2]: UTMI_POS_OUT (USB PHY 0xF1 [7]), Bit[1:0]: TX_DELAY (USB PHY 0xF1 [2:1]) */ +#define REG_USB_PHY_PARA4 0xFE6B /* (USB PHY 0xE7[7:0]) */ #define REG_USB_OPT2 0xFE6C -#define REG_USB_MAC_ADDR 0xFE70 -#define REG_USB_MANUFACTURE_SETTING 0xFE80 -#define REG_USB_PRODUCT_STRING 0xFEA0 -#define REG_USB_SERIAL_NUMBER_STRING 0xFED0 +#define REG_USB_MAC_ADDR 0xFE70 /* 0xFE70~0xFE75 */ +#define REG_USB_MANUFACTURE_SETTING 0xFE80 /* 0xFE80~0xFE90 Max : 32 bytes */ +#define REG_USB_PRODUCT_STRING 0xFEA0 /* 0xFEA0~0xFECF Max : 48 bytes */ +#define REG_USB_SERIAL_NUMBER_STRING 0xFED0 /* 0xFED0~0xFEDF Max : 12 bytes */ #define REG_USB_ALTERNATE_SETTING 0xFE4F #define REG_USB_INT_BINTERVAL 0xFE6E diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_reg_8822e.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_reg_8822e.h new file mode 100644 index 000000000..3f79a49fd --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_reg_8822e.h @@ -0,0 +1,883 @@ +/****************************************************************************** + * + * Copyright(c) 2017 - 2019 Realtek Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + ******************************************************************************/ + +#ifndef __INC_HALMAC_REG_8822E_H +#define __INC_HALMAC_REG_8822E_H + +#define REG_SYS_ISO_CTRL_8822E 0x0000 +#define REG_SYS_FUNC_EN_8822E 0x0002 +#define REG_SYS_PW_CTRL_8822E 0x0004 +#define REG_SYS_CLK_CTRL_8822E 0x0008 +#define REG_SYS_EEPROM_CTRL_8822E 0x000A +#define REG_EE_VPD_8822E 0x000C +#define REG_SYS_SWR_CTRL1_8822E 0x0010 +#define REG_SYS_SWR_CTRL2_8822E 0x0014 +#define REG_SYS_SWR_CTRL3_8822E 0x0018 +#define REG_RSV_CTRL_8822E 0x001C +#define REG_RF_CTRL_8822E 0x001F +#define REG_AFE_LDO_CTRL_8822E 0x0020 +#define REG_AFE_CTRL1_8822E 0x0024 +#define REG_ANAPARSW_POW_MAC_8822E 0x0028 +#define REG_ANAPARLDO_POW_MAC_8822E 0x0029 +#define REG_ANAPAR_POW_MAC_8822E 0x002A +#define REG_ANAPAR_POW_XTAL_8822E 0x002B +#define REG_ANAPARLDO_MAC_8822E 0x002C +#define REG_EFUSE_CTRL_8822E 0x0030 +#define REG_LDO_EFUSE_CTRL_8822E 0x0034 +#define REG_PWR_OPTION_CTRL_8822E 0x0038 +#define REG_CAL_TIMER_8822E 0x003C +#define REG_ACLK_MON_8822E 0x003E +#define REG_GPIO_MUXCFG_2_8822E 0x003F +#define REG_GPIO_MUXCFG_8822E 0x0040 +#define REG_GPIO_PIN_CTRL_8822E 0x0044 +#define REG_GPIO_INTM_8822E 0x0048 +#define REG_LED_CFG_8822E 0x004C +#define REG_FSIMR_8822E 0x0050 +#define REG_FSISR_8822E 0x0054 +#define REG_HSIMR_8822E 0x0058 +#define REG_HSISR_8822E 0x005C +#define REG_GPIO_EXT_CTRL_8822E 0x0060 +#define REG_PAD_CTRL1_8822E 0x0064 +#define REG_WL_BT_PWR_CTRL_8822E 0x0068 +#define REG_SDM_DEBUG_8822E 0x006C +#define REG_SYS_SDIO_CTRL_8822E 0x0070 +#define REG_HCI_OPT_CTRL_8822E 0x0074 +#define REG_HCI_BG_CTRL_8822E 0x0078 +#define REG_HCI_LDO_CTRL_8822E 0x007A +#define REG_LDO_SWR_CTRL_8822E 0x007C +#define REG_MCUFW_CTRL_8822E 0x0080 +#define REG_MCU_TST_CFG_8822E 0x0084 +#define REG_HMEBOX_E0_E1_8822E 0x0088 +#define REG_HMEBOX_E2_E3_8822E 0x008C +#define REG_WLLPS_CTRL_8822E 0x0090 +#define REG_GPIO_DEBOUNCE_CTRL_8822E 0x0098 +#define REG_RPWM2_8822E 0x009C +#define REG_SYSON_FSM_MON_8822E 0x00A0 +#define REG_EFUSE_CTRL_1_8822E 0x00A4 +#define REG_PMC_DBG_CTRL1_8822E 0x00A8 +#define REG_HIMR0_8822E 0x00B0 +#define REG_HISR0_8822E 0x00B4 +#define REG_HIMR1_8822E 0x00B8 +#define REG_HISR1_8822E 0x00BC +#define REG_DBG_PORT_SEL_8822E 0x00C0 +#define REG_PAD_CTRL2_8822E 0x00C4 +#define REG_PMC_DBG_CTRL2_8822E 0x00CC +#define REG_BIST_CTRL_8822E 0x00D0 +#define REG_BIST_RPT_8822E 0x00D4 +#define REG_MEM_CTRL_8822E 0x00D8 +#define REG_USB_SIE_INTF_8822E 0x00E0 +#define REG_PCIE_MIO_INTF_8822E 0x00E4 +#define REG_PCIE_MIO_INTD_8822E 0x00E8 +#define REG_WLRF1_8822E 0x00EC +#define REG_SYS_CFG1_8822E 0x00F0 +#define REG_SYS_STATUS1_8822E 0x00F4 +#define REG_SYS_STATUS2_8822E 0x00F8 +#define REG_SYS_CFG2_8822E 0x00FC +#define REG_SYS_CFG3_8822E 0x1000 +#define REG_ANAPARSW_MAC_0_8822E 0x1010 +#define REG_ANAPARSW_MAC_1_8822E 0x1014 +#define REG_ANAPAR_MAC_0_8822E 0x1018 +#define REG_ANAPAR_MAC_1_8822E 0x101C +#define REG_ANAPAR_MAC_2_8822E 0x1020 +#define REG_ANAPAR_MAC_3_8822E 0x1024 +#define REG_ANAPARSW_MAC_2_8822E 0x1028 +#define REG_ANAPAR_XTAL_0_8822E 0x1040 +#define REG_ANAPAR_XTAL_1_8822E 0x1044 +#define REG_ANAPAR_XTAL_2_8822E 0x1048 +#define REG_ANAPAR_XTAL_3_8822E 0x104C +#define REG_ANAPAR_XTAL_AACK_0_8822E 0x1054 +#define REG_ANAPAR_XTAL_AACK_1_8822E 0x1058 +#define REG_XTAL_AAC_OUTPUT_8822E 0x1060 +#define REG_ANAPAR_XTAL_MODE_DECODER_8822E 0x1064 +#define REG_ANAPAR_XTAL_CAP_CTRL_8822E 0x106C +#define REG_SYS_CFG5_8822E 0x1070 +#define REG_CPU_DMEM_CON_8822E 0x1080 +#define REG_BOOT_REASON_8822E 0x1088 +#define REG_HIMR2_8822E 0x10B0 +#define REG_HISR2_8822E 0x10B4 +#define REG_HIMR3_8822E 0x10B8 +#define REG_HISR3_8822E 0x10BC +#define REG_SW_MDIO_8822E 0x10C0 +#define REG_H2C_PKT_READADDR_8822E 0x10D0 +#define REG_H2C_PKT_WRITEADDR_8822E 0x10D4 +#define REG_MEM_PWR_CRTL_8822E 0x10D8 +#define REG_FW_DBG6_8822E 0x10F8 +#define REG_FW_DBG7_8822E 0x10FC +#define REG_CR_8822E 0x0100 +#define REG_PG_SIZE_8822E 0x0104 +#define REG_PKT_BUFF_ACCESS_CTRL_8822E 0x0106 +#define REG_TSF_CLK_STATE_8822E 0x0108 +#define REG_TXDMA_PQ_MAP_8822E 0x010C +#define REG_TRXFF_BNDY_8822E 0x0114 +#define REG_PTA_I2C_MBOX_8822E 0x0118 +#define REG_RXFF_BNDY_8822E 0x011C +#define REG_FE1IMR_8822E 0x0120 +#define REG_FE1ISR_8822E 0x0124 +#define REG_CPWM_8822E 0x012C +#define REG_FWIMR_8822E 0x0130 +#define REG_FWISR_8822E 0x0134 +#define REG_FTIMR_8822E 0x0138 +#define REG_FTISR_8822E 0x013C +#define REG_PKTBUF_DBG_CTRL_8822E 0x0140 +#define REG_PKTBUF_DBG_DATA_L_8822E 0x0144 +#define REG_PKTBUF_DBG_DATA_H_8822E 0x0148 +#define REG_CPWM2_8822E 0x014C +#define REG_TC0_CTRL_8822E 0x0150 +#define REG_TC1_CTRL_8822E 0x0154 +#define REG_TC2_CTRL_8822E 0x0158 +#define REG_TC3_CTRL_8822E 0x015C +#define REG_TC4_CTRL_8822E 0x0160 +#define REG_TCUNIT_BASE_8822E 0x0164 +#define REG_TC5_CTRL_8822E 0x0168 +#define REG_TC6_CTRL_8822E 0x016C +#define REG_MBIST_DRF_FAIL_8822E 0x0170 +#define REG_MBIST_START_PAUSE_8822E 0x0174 +#define REG_MBIST_DONE_8822E 0x0178 +#define REG_OTP_PARA_8822E 0x017C +#define REG_AES_DECRPT_DATA_8822E 0x0180 +#define REG_AES_DECRPT_CFG_8822E 0x0184 +#define REG_HIOE_CTRL_8822E 0x0188 +#define REG_HIOE_CFG_FILE_8822E 0x018C +#define REG_TMETER_8822E 0x0190 +#define REG_OSC_32K_CTRL_8822E 0x0194 +#define REG_32K_CAL_REG1_8822E 0x0198 +#define REG_C2HEVT_8822E 0x01A0 +#define REG_C2HEVT_1_8822E 0x01A4 +#define REG_C2HEVT_2_8822E 0x01A8 +#define REG_C2HEVT_3_8822E 0x01AC +#define REG_SW_DEFINED_PAGE1_8822E 0x01B8 +#define REG_SW_DEFINED_PAGE2_8822E 0x01BC +#define REG_MCUTST_I_8822E 0x01C0 +#define REG_MCUTST_II_8822E 0x01C4 +#define REG_FMETHR_8822E 0x01C8 +#define REG_HMETFR_8822E 0x01CC +#define REG_HMEBOX0_8822E 0x01D0 +#define REG_HMEBOX1_8822E 0x01D4 +#define REG_HMEBOX2_8822E 0x01D8 +#define REG_HMEBOX3_8822E 0x01DC +#define REG_BB_ACCESS_CTRL_8822E 0x01E8 +#define REG_BB_ACCESS_DATA_8822E 0x01EC +#define REG_HMEBOX_E0_8822E 0x01F0 +#define REG_HMEBOX_E1_8822E 0x01F4 +#define REG_HMEBOX_E2_8822E 0x01F8 +#define REG_HMEBOX_E3_8822E 0x01FC +#define REG_CR_EXT_8822E 0x1100 +#define REG_FWFF_8822E 0x1114 +#define REG_RXFF_PTR_V1_8822E 0x1118 +#define REG_RXFF_WTR_V1_8822E 0x111C +#define REG_FE2IMR_8822E 0x1120 +#define REG_FE2ISR_8822E 0x1124 +#define REG_FE3IMR_8822E 0x1128 +#define REG_FE3ISR_8822E 0x112C +#define REG_FE4IMR_8822E 0x1130 +#define REG_FE4ISR_8822E 0x1134 +#define REG_FT1IMR_8822E 0x1138 +#define REG_FT1ISR_8822E 0x113C +#define REG_SPWR0_8822E 0x1140 +#define REG_SPWR1_8822E 0x1144 +#define REG_SPWR2_8822E 0x1148 +#define REG_SPWR3_8822E 0x114C +#define REG_POWSEQ_8822E 0x1150 +#define REG_TC7_CTRL_V1_8822E 0x1158 +#define REG_TC8_CTRL_V1_8822E 0x115C +#define REG_RX_BCN_TBTT_ITVL0_8822E 0x1160 +#define REG_RX_BCN_TBTT_ITVL1_8822E 0x1164 +#define REG_IO_WRAP_ERR_FLAG_8822E 0x1170 +#define REG_SPEED_SENSOR_8822E 0x1180 +#define REG_SPEED_SENSOR1_8822E 0x1184 +#define REG_SPEED_SENSOR2_8822E 0x1188 +#define REG_SPEED_SENSOR3_8822E 0x118C +#define REG_SPEED_SENSOR4_8822E 0x1190 +#define REG_SPEED_SENSOR5_8822E 0x1194 +#define REG_EXT_QUEUE_REG_8822E 0x11C0 +#define REG_COUNTER_CTRL_8822E 0x11C4 +#define REG_COUNTER_THRESHOLD_8822E 0x11C8 +#define REG_COUNTER_SET_8822E 0x11CC +#define REG_COUNTER_OVERFLOW_8822E 0x11D0 +#define REG_TXDMA_LEN_THRESHOLD_8822E 0x11D4 +#define REG_RXDMA_LEN_THRESHOLD_8822E 0x11D8 +#define REG_PCIE_EXEC_TIME_THRESHOLD_8822E 0x11DC +#define REG_FT2IMR_8822E 0x11E0 +#define REG_FT2ISR_8822E 0x11E4 +#define REG_MSG2_8822E 0x11F0 +#define REG_MSG3_8822E 0x11F4 +#define REG_MSG4_8822E 0x11F8 +#define REG_MSG5_8822E 0x11FC +#define REG_FIFOPAGE_CTRL_1_8822E 0x0200 +#define REG_FIFOPAGE_CTRL_2_8822E 0x0204 +#define REG_AUTO_LLT_V1_8822E 0x0208 +#define REG_TXDMA_OFFSET_CHK_8822E 0x020C +#define REG_TXDMA_STATUS_8822E 0x0210 +#define REG_TX_DMA_DBG_8822E 0x0214 +#define REG_TQPNT1_8822E 0x0218 +#define REG_TQPNT2_8822E 0x021C +#define REG_TQPNT3_8822E 0x0220 +#define REG_TQPNT4_8822E 0x0224 +#define REG_RQPN_CTRL_1_8822E 0x0228 +#define REG_RQPN_CTRL_2_8822E 0x022C +#define REG_FIFOPAGE_INFO_1_8822E 0x0230 +#define REG_FIFOPAGE_INFO_2_8822E 0x0234 +#define REG_FIFOPAGE_INFO_3_8822E 0x0238 +#define REG_FIFOPAGE_INFO_4_8822E 0x023C +#define REG_FIFOPAGE_INFO_5_8822E 0x0240 +#define REG_H2C_HEAD_8822E 0x0244 +#define REG_H2C_TAIL_8822E 0x0248 +#define REG_H2C_READ_ADDR_8822E 0x024C +#define REG_H2C_WR_ADDR_8822E 0x0250 +#define REG_H2C_INFO_8822E 0x0254 +#define REG_PGSUB_CNT_8822E 0x026C +#define REG_PGSUB_H_8822E 0x0270 +#define REG_PGSUB_N_8822E 0x0274 +#define REG_PGSUB_L_8822E 0x0278 +#define REG_PGSUB_E_8822E 0x027C +#define REG_RXDMA_AGG_PG_TH_8822E 0x0280 +#define REG_RXPKT_NUM_8822E 0x0284 +#define REG_RXDMA_STATUS_8822E 0x0288 +#define REG_RXDMA_DPR_8822E 0x028C +#define REG_RXDMA_MODE_8822E 0x0290 +#define REG_C2H_PKT_8822E 0x0294 +#define REG_FWFF_C2H_8822E 0x0298 +#define REG_FWFF_CTRL_8822E 0x029C +#define REG_FWFF_PKT_INFO_8822E 0x02A0 +#define REG_RXPKTNUM_8822E 0x02B0 +#define REG_RXPKTNUM_TH_8822E 0x02B4 +#define REG_FW_MSG1_8822E 0x02E0 +#define REG_FW_MSG2_8822E 0x02E4 +#define REG_FW_MSG3_8822E 0x02E8 +#define REG_FW_MSG4_8822E 0x02EC +#define REG_DDMA_CH0SA_8822E 0x1200 +#define REG_DDMA_CH0DA_8822E 0x1204 +#define REG_DDMA_CH0CTRL_8822E 0x1208 +#define REG_DDMA_CH1SA_8822E 0x1210 +#define REG_DDMA_CH1DA_8822E 0x1214 +#define REG_DDMA_CH1CTRL_8822E 0x1218 +#define REG_DDMA_CH2SA_8822E 0x1220 +#define REG_DDMA_CH2DA_8822E 0x1224 +#define REG_DDMA_CH2CTRL_8822E 0x1228 +#define REG_DDMA_CH3SA_8822E 0x1230 +#define REG_DDMA_CH3DA_8822E 0x1234 +#define REG_DDMA_CH3CTRL_8822E 0x1238 +#define REG_DDMA_CH4SA_8822E 0x1240 +#define REG_DDMA_CH4DA_8822E 0x1244 +#define REG_DDMA_CH4CTRL_8822E 0x1248 +#define REG_DDMA_CH5SA_8822E 0x1250 +#define REG_DDMA_CH5DA_8822E 0x1254 +#define REG_DDMA_CH5CTRL_8822E 0x1258 +#define REG_DDMA_INT_MSK_8822E 0x12E0 +#define REG_DDMA_CHSTATUS_8822E 0x12E8 +#define REG_DDMA_CHKSUM_8822E 0x12F0 +#define REG_DDMA_MONITOR_8822E 0x12FC +#define REG_PCIE_CTRL_8822E 0x0300 +#define REG_INT_MIG_8822E 0x0304 +#define REG_BCNQ_TXBD_DESA_8822E 0x0308 +#define REG_MGQ_TXBD_DESA_8822E 0x0310 +#define REG_VOQ_TXBD_DESA_8822E 0x0318 +#define REG_VIQ_TXBD_DESA_8822E 0x0320 +#define REG_BEQ_TXBD_DESA_8822E 0x0328 +#define REG_BKQ_TXBD_DESA_8822E 0x0330 +#define REG_RXQ_RXBD_DESA_8822E 0x0338 +#define REG_HI0Q_TXBD_DESA_8822E 0x0340 +#define REG_HI1Q_TXBD_DESA_8822E 0x0348 +#define REG_HI2Q_TXBD_DESA_8822E 0x0350 +#define REG_HI3Q_TXBD_DESA_8822E 0x0358 +#define REG_HI4Q_TXBD_DESA_8822E 0x0360 +#define REG_HI5Q_TXBD_DESA_8822E 0x0368 +#define REG_HI6Q_TXBD_DESA_8822E 0x0370 +#define REG_HI7Q_TXBD_DESA_8822E 0x0378 +#define REG_MGQ_TXBD_NUM_8822E 0x0380 +#define REG_RX_RXBD_NUM_8822E 0x0382 +#define REG_VOQ_TXBD_NUM_8822E 0x0384 +#define REG_VIQ_TXBD_NUM_8822E 0x0386 +#define REG_BEQ_TXBD_NUM_8822E 0x0388 +#define REG_BKQ_TXBD_NUM_8822E 0x038A +#define REG_HI0Q_TXBD_NUM_8822E 0x038C +#define REG_HI1Q_TXBD_NUM_8822E 0x038E +#define REG_HI2Q_TXBD_NUM_8822E 0x0390 +#define REG_HI3Q_TXBD_NUM_8822E 0x0392 +#define REG_HI4Q_TXBD_NUM_8822E 0x0394 +#define REG_HI5Q_TXBD_NUM_8822E 0x0396 +#define REG_HI6Q_TXBD_NUM_8822E 0x0398 +#define REG_HI7Q_TXBD_NUM_8822E 0x039A +#define REG_TSFTIMER_HCI_8822E 0x039C +#define REG_BD_RWPTR_CLR_8822E 0x039C +#define REG_VOQ_TXBD_IDX_8822E 0x03A0 +#define REG_VIQ_TXBD_IDX_8822E 0x03A4 +#define REG_BEQ_TXBD_IDX_8822E 0x03A8 +#define REG_BKQ_TXBD_IDX_8822E 0x03AC +#define REG_MGQ_TXBD_IDX_8822E 0x03B0 +#define REG_RXQ_RXBD_IDX_8822E 0x03B4 +#define REG_HI0Q_TXBD_IDX_8822E 0x03B8 +#define REG_HI1Q_TXBD_IDX_8822E 0x03BC +#define REG_HI2Q_TXBD_IDX_8822E 0x03C0 +#define REG_HI3Q_TXBD_IDX_8822E 0x03C4 +#define REG_HI4Q_TXBD_IDX_8822E 0x03C8 +#define REG_HI5Q_TXBD_IDX_8822E 0x03CC +#define REG_HI6Q_TXBD_IDX_8822E 0x03D0 +#define REG_HI7Q_TXBD_IDX_8822E 0x03D4 +#define REG_DBG_SEL_V1_8822E 0x03D8 +#define REG_PCIE_HRPWM1_V1_8822E 0x03D9 +#define REG_PCIE_HCPWM1_V1_8822E 0x03DA +#define REG_PCIE_CTRL2_8822E 0x03DB +#define REG_PCIE_HRPWM2_V1_8822E 0x03DC +#define REG_PCIE_HCPWM2_V1_8822E 0x03DE +#define REG_PCIE_H2C_MSG_V1_8822E 0x03E0 +#define REG_PCIE_C2H_MSG_V1_8822E 0x03E4 +#define REG_DBI_WDATA_V1_8822E 0x03E8 +#define REG_DBI_RDATA_V1_8822E 0x03EC +#define REG_DBI_FLAG_V1_8822E 0x03F0 +#define REG_MDIO_V1_8822E 0x03F4 +#define REG_PCIE_MIX_CFG_8822E 0x03F8 +#define REG_HCI_MIX_CFG_8822E 0x03FC +#define REG_STC_INT_CS_8822E 0x1300 +#define REG_ST_INT_CFG_8822E 0x1304 +#define REG_H2CQ_TXBD_DESA_8822E 0x1320 +#define REG_H2CQ_TXBD_NUM_8822E 0x1328 +#define REG_H2CQ_TXBD_IDX_8822E 0x132C +#define REG_H2CQ_CSR_8822E 0x1330 +#define REG_CHANGE_PCIE_SPEED_8822E 0x1350 +#define REG_DEBUG_STATE1_8822E 0x1354 +#define REG_DEBUG_STATE2_8822E 0x1358 +#define REG_DEBUG_STATE3_8822E 0x135C +#define REG_CHNL_DMA_CFG_V1_8822E 0x137C +#define REG_PCIE_HISR0_V1_8822E 0x13B4 +#define REG_PCIE_HISR1_V1_8822E 0x13BC +#define REG_PCIE_HISR2_V1_8822E 0x23B4 +#define REG_PCIE_HISR3_V1_8822E 0x23BC +#define REG_Q0_INFO_8822E 0x0400 +#define REG_Q1_INFO_8822E 0x0404 +#define REG_Q2_INFO_8822E 0x0408 +#define REG_Q3_INFO_8822E 0x040C +#define REG_MGQ_INFO_8822E 0x0410 +#define REG_HIQ_INFO_8822E 0x0414 +#define REG_BCNQ_INFO_8822E 0x0418 +#define REG_TXPKT_EMPTY_8822E 0x041A +#define REG_CPU_MGQ_INFO_8822E 0x041C +#define REG_FWHW_TXQ_CTRL_8822E 0x0420 +#define REG_DATAFB_SEL_8822E 0x0423 +#define REG_BCNQ_BDNY_V1_8822E 0x0424 +#define REG_LIFETIME_EN_8822E 0x0426 +#define REG_SPEC_SIFS_8822E 0x0428 +#define REG_RETRY_LIMIT_8822E 0x042A +#define REG_TXBF_CTRL_8822E 0x042C +#define REG_DARFRC_8822E 0x0430 +#define REG_DARFRCH_8822E 0x0434 +#define REG_RARFRC_8822E 0x0438 +#define REG_RARFRCH_8822E 0x043C +#define REG_RRSR_8822E 0x0440 +#define REG_ARFR0_8822E 0x0444 +#define REG_ARFRH0_8822E 0x0448 +#define REG_ARFR1_V1_8822E 0x044C +#define REG_ARFRH1_V1_8822E 0x0450 +#define REG_CCK_CHECK_8822E 0x0454 +#define REG_AMPDU_MAX_TIME_V1_8822E 0x0455 +#define REG_BCNQ1_BDNY_V1_8822E 0x0456 +#define REG_AMPDU_MAX_LENGTH_HT_8822E 0x0458 +#define REG_ACQ_STOP_8822E 0x045C +#define REG_NDPA_RATE_8822E 0x045D +#define REG_TX_HANG_CTRL_8822E 0x045E +#define REG_NDPA_OPT_CTRL_8822E 0x045F +#define REG_AMPDU_MAX_LENGTH_VHT_8822E 0x0460 +#define REG_RD_RESP_PKT_TH_8822E 0x0463 +#define REG_CMDQ_INFO_8822E 0x0464 +#define REG_Q4_INFO_8822E 0x0468 +#define REG_Q5_INFO_8822E 0x046C +#define REG_Q6_INFO_8822E 0x0470 +#define REG_Q7_INFO_8822E 0x0474 +#define REG_WMAC_LBK_BUF_HD_V1_8822E 0x0478 +#define REG_MGQ_BDNY_V1_8822E 0x047A +#define REG_TXRPT_CTRL_8822E 0x047C +#define REG_INIRTS_RATE_SEL_8822E 0x0480 +#define REG_BASIC_CFEND_RATE_8822E 0x0481 +#define REG_STBC_CFEND_RATE_8822E 0x0482 +#define REG_DATA_SC_8822E 0x0483 +#define REG_MACID_SLEEP3_8822E 0x0484 +#define REG_MACID_SLEEP1_8822E 0x0488 +#define REG_ARFR2_V1_8822E 0x048C +#define REG_ARFRH2_V1_8822E 0x0490 +#define REG_ARFR3_V1_8822E 0x0494 +#define REG_ARFRH3_V1_8822E 0x0498 +#define REG_ARFR4_8822E 0x049C +#define REG_ARFRH4_8822E 0x04A0 +#define REG_ARFR5_8822E 0x04A4 +#define REG_ARFRH5_8822E 0x04A8 +#define REG_TXRPT_START_OFFSET_8822E 0x04AC +#define REG_POWER_STAGE1_8822E 0x04B4 +#define REG_POWER_STAGE2_8822E 0x04B8 +#define REG_SW_AMPDU_BURST_MODE_CTRL_8822E 0x04BC +#define REG_PKT_LIFE_TIME_8822E 0x04C0 +#define REG_STBC_SETTING_8822E 0x04C4 +#define REG_STBC_SETTING2_8822E 0x04C5 +#define REG_QUEUE_CTRL_8822E 0x04C6 +#define REG_SINGLE_AMPDU_CTRL_8822E 0x04C7 +#define REG_PROT_MODE_CTRL_8822E 0x04C8 +#define REG_BAR_MODE_CTRL_8822E 0x04CC +#define REG_RA_TRY_RATE_AGG_LMT_8822E 0x04CF +#define REG_MACID_SLEEP2_8822E 0x04D0 +#define REG_MACID_SLEEP_8822E 0x04D4 +#define REG_HW_SEQ0_8822E 0x04D8 +#define REG_HW_SEQ1_8822E 0x04DA +#define REG_HW_SEQ2_8822E 0x04DC +#define REG_HW_SEQ3_8822E 0x04DE +#define REG_NULL_PKT_STATUS_V1_8822E 0x04E0 +#define REG_PTCL_ERR_STATUS_8822E 0x04E2 +#define REG_NULL_PKT_STATUS_EXTEND_8822E 0x04E3 +#define REG_HQMGQ_DROP_8822E 0x04E4 +#define REG_PRECNT_CTRL_8822E 0x04E5 +#define REG_BT_POLLUTE_PKT_CNT_8822E 0x04E8 +#define REG_PTCL_DBG_8822E 0x04EC +#define REG_CPUMGQ_TIMER_CTRL2_8822E 0x04F4 +#define REG_DUMMY_PAGE4_V1_8822E 0x04FC +#define REG_MOREDATA_8822E 0x04FE +#define REG_Q0_Q1_INFO_8822E 0x1400 +#define REG_Q2_Q3_INFO_8822E 0x1404 +#define REG_Q4_Q5_INFO_8822E 0x1408 +#define REG_Q6_Q7_INFO_8822E 0x140C +#define REG_MGQ_HIQ_INFO_8822E 0x1410 +#define REG_CMDQ_BCNQ_INFO_8822E 0x1414 +#define REG_LOOPBACK_OPTION_8822E 0x1420 +#define REG_AESIV_SETTING_8822E 0x1424 +#define REG_BF0_TIME_SETTING_8822E 0x1428 +#define REG_BF1_TIME_SETTING_8822E 0x142C +#define REG_BF_TIMEOUT_EN_8822E 0x1430 +#define REG_MACID_RELEASE0_8822E 0x1434 +#define REG_MACID_RELEASE1_8822E 0x1438 +#define REG_MACID_RELEASE2_8822E 0x143C +#define REG_MACID_RELEASE3_8822E 0x1440 +#define REG_MACID_RELEASE_SETTING_8822E 0x1444 +#define REG_FAST_EDCA_VOVI_SETTING_8822E 0x1448 +#define REG_FAST_EDCA_BEBK_SETTING_8822E 0x144C +#define REG_MACID_DROP0_8822E 0x1450 +#define REG_MACID_DROP1_8822E 0x1454 +#define REG_MACID_DROP2_8822E 0x1458 +#define REG_MACID_DROP3_8822E 0x145C +#define REG_R_MACID_RELEASE_SUCCESS_0_8822E 0x1460 +#define REG_R_MACID_RELEASE_SUCCESS_1_8822E 0x1464 +#define REG_R_MACID_RELEASE_SUCCESS_2_8822E 0x1468 +#define REG_R_MACID_RELEASE_SUCCESS_3_8822E 0x146C +#define REG_MGQ_FIFO_WRITE_POINTER_8822E 0x1470 +#define REG_MGQ_FIFO_READ_POINTER_8822E 0x1472 +#define REG_MGQ_FIFO_ENABLE_8822E 0x1472 +#define REG_MGQ_FIFO_RELEASE_INT_MASK_8822E 0x1474 +#define REG_MGQ_FIFO_RELEASE_INT_FLAG_8822E 0x1476 +#define REG_MGQ_FIFO_VALID_MAP_8822E 0x1478 +#define REG_MGQ_FIFO_LIFETIME_8822E 0x147A +#define REG_R_MACID_RELEASE_SUCCESS_CLEAR_OFFSET_8822E 0x147C +#define REG_SHCUT_SETTING_8822E 0x1480 +#define REG_SHCUT_LLC_ETH_TYPE0_8822E 0x1484 +#define REG_SHCUT_LLC_ETH_TYPE1_8822E 0x1488 +#define REG_SHCUT_LLC_OUI0_8822E 0x148C +#define REG_SHCUT_LLC_OUI1_8822E 0x1490 +#define REG_SHCUT_LLC_OUI2_8822E 0x1494 +#define REG_MU_TX_CTL_8822E 0x14C0 +#define REG_MU_STA_GID_VLD_8822E 0x14C4 +#define REG_MU_STA_USER_POS_INFO_8822E 0x14C8 +#define REG_MU_STA_USER_POS_INFO_H_8822E 0x14CC +#define REG_CHNL_INFO_CTRL_8822E 0x14D0 +#define REG_CHNL_IDLE_TIME_8822E 0x14D4 +#define REG_CHNL_BUSY_TIME_8822E 0x14D8 +#define REG_MU_TRX_DBG_CNT_V1_8822E 0x14DC +#define REG_EDCA_VO_PARAM_8822E 0x0500 +#define REG_EDCA_VI_PARAM_8822E 0x0504 +#define REG_EDCA_BE_PARAM_8822E 0x0508 +#define REG_EDCA_BK_PARAM_8822E 0x050C +#define REG_BCNTCFG_8822E 0x0510 +#define REG_PIFS_8822E 0x0512 +#define REG_RDG_PIFS_8822E 0x0513 +#define REG_SIFS_8822E 0x0514 +#define REG_TSFTR_SYN_OFFSET_8822E 0x0518 +#define REG_AGGR_BREAK_TIME_8822E 0x051A +#define REG_SLOT_8822E 0x051B +#define REG_NOA_ON_ERLY_TIME_8822E 0x051C +#define REG_NOA_OFF_ERLY_TIME_8822E 0x051D +#define REG_TX_PTCL_CTRL_8822E 0x0520 +#define REG_TXPAUSE_8822E 0x0522 +#define REG_DIS_TXREQ_CLR_8822E 0x0523 +#define REG_RD_CTRL_8822E 0x0524 +#define REG_MBSSID_CTRL_8822E 0x0526 +#define REG_P2PPS_CTRL_8822E 0x0527 +#define REG_PKT_LIFETIME_CTRL_8822E 0x0528 +#define REG_P2PPS_SPEC_STATE_8822E 0x052B +#define REG_TXOP_LIMIT_CTRL_8822E 0x052C +#define REG_BAR_TX_CTRL_8822E 0x0530 +#define REG_P2PON_DIS_TXTIME_8822E 0x0531 +#define REG_CCA_TXEN_CNT_8822E 0x0534 +#define REG_MAX_INTER_COLLISION_8822E 0x0538 +#define REG_MAX_INTER_COLLISION_CNT_8822E 0x053C +#define REG_TBTT_PROHIBIT_8822E 0x0540 +#define REG_P2PPS_STATE_8822E 0x0543 +#define REG_RD_NAV_NXT_8822E 0x0544 +#define REG_NAV_PROT_LEN_8822E 0x0546 +#define REG_FTM_PTT_8822E 0x0548 +#define REG_FTM_TSF_8822E 0x054C +#define REG_BCN_CTRL_8822E 0x0550 +#define REG_BCN_CTRL_CLINT0_8822E 0x0551 +#define REG_MBID_NUM_8822E 0x0552 +#define REG_DUAL_TSF_RST_8822E 0x0553 +#define REG_MBSSID_BCN_SPACE_8822E 0x0554 +#define REG_DRVERLYINT_8822E 0x0558 +#define REG_BCNDMATIM_8822E 0x0559 +#define REG_ATIMWND_8822E 0x055A +#define REG_USTIME_TSF_8822E 0x055C +#define REG_BCN_MAX_ERR_8822E 0x055D +#define REG_RXTSF_OFFSET_CCK_8822E 0x055E +#define REG_RXTSF_OFFSET_OFDM_8822E 0x055F +#define REG_TSFTR_8822E 0x0560 +#define REG_TSFTR_1_8822E 0x0564 +#define REG_FREERUN_CNT_8822E 0x0568 +#define REG_FREERUN_CNT_1_8822E 0x056C +#define REG_ATIMWND1_V1_8822E 0x0570 +#define REG_TBTT_PROHIBIT_INFRA_8822E 0x0571 +#define REG_CTWND_8822E 0x0572 +#define REG_BCNIVLCUNT_8822E 0x0573 +#define REG_BCNDROPCTRL_8822E 0x0574 +#define REG_HGQ_TIMEOUT_PERIOD_8822E 0x0575 +#define REG_TXCMD_TIMEOUT_PERIOD_8822E 0x0576 +#define REG_MISC_CTRL_8822E 0x0577 +#define REG_BCN_CTRL_CLINT1_8822E 0x0578 +#define REG_BCN_CTRL_CLINT2_8822E 0x0579 +#define REG_BCN_CTRL_CLINT3_8822E 0x057A +#define REG_EXTEND_CTRL_8822E 0x057B +#define REG_P2PPS1_SPEC_STATE_8822E 0x057C +#define REG_P2PPS1_STATE_8822E 0x057D +#define REG_P2PPS2_SPEC_STATE_8822E 0x057E +#define REG_P2PPS2_STATE_8822E 0x057F +#define REG_PS_TIMER0_8822E 0x0580 +#define REG_PS_TIMER1_8822E 0x0584 +#define REG_PS_TIMER2_8822E 0x0588 +#define REG_TBTT_CTN_AREA_8822E 0x058C +#define REG_FORCE_BCN_IFS_8822E 0x058E +#define REG_TXOP_MIN_8822E 0x0590 +#define REG_PRE_BKF_TIME_8822E 0x0592 +#define REG_CROSS_TXOP_CTRL_8822E 0x0593 +#define REG_RX_TBTT_SHIFT_V1_8822E 0x0598 +#define REG_ATIMWND2_8822E 0x05A0 +#define REG_ATIMWND3_8822E 0x05A1 +#define REG_ATIMWND4_8822E 0x05A2 +#define REG_ATIMWND5_8822E 0x05A3 +#define REG_ATIMWND6_8822E 0x05A4 +#define REG_ATIMWND7_8822E 0x05A5 +#define REG_ATIMUGT_8822E 0x05A6 +#define REG_HIQ_NO_LMT_EN_8822E 0x05A7 +#define REG_DTIM_COUNTER_ROOT_8822E 0x05A8 +#define REG_DTIM_COUNTER_VAP1_8822E 0x05A9 +#define REG_DTIM_COUNTER_VAP2_8822E 0x05AA +#define REG_DTIM_COUNTER_VAP3_8822E 0x05AB +#define REG_DTIM_COUNTER_VAP4_8822E 0x05AC +#define REG_DTIM_COUNTER_VAP5_8822E 0x05AD +#define REG_DTIM_COUNTER_VAP6_8822E 0x05AE +#define REG_DTIM_COUNTER_VAP7_8822E 0x05AF +#define REG_DIS_ATIM_8822E 0x05B0 +#define REG_EARLY_128US_8822E 0x05B1 +#define REG_P2PPS1_CTRL_8822E 0x05B2 +#define REG_P2PPS2_CTRL_8822E 0x05B3 +#define REG_TIMER0_SRC_SEL_8822E 0x05B4 +#define REG_NOA_UNIT_SEL_8822E 0x05B5 +#define REG_P2POFF_DIS_TXTIME_8822E 0x05B7 +#define REG_MBSSID_BCN_SPACE2_8822E 0x05B8 +#define REG_MBSSID_BCN_SPACE3_8822E 0x05BC +#define REG_ACMHWCTRL_8822E 0x05C0 +#define REG_ACMRSTCTRL_8822E 0x05C1 +#define REG_ACMAVG_8822E 0x05C2 +#define REG_VO_ADMTIME_8822E 0x05C4 +#define REG_VI_ADMTIME_8822E 0x05C6 +#define REG_BE_ADMTIME_8822E 0x05C8 +#define REG_MAC_HEADER_NAV_OFFSET_8822E 0x05CA +#define REG_DIS_NDPA_NAV_CHECK_8822E 0x05CB +#define REG_EDCA_RANDOM_GEN_8822E 0x05CC +#define REG_TXCMD_NOA_SEL_8822E 0x05CF +#define REG_32K_CLK_SEL_8822E 0x05D0 +#define REG_EARLYINT_ADJUST_8822E 0x05D4 +#define REG_BCNERR_CNT_8822E 0x05D8 +#define REG_BCNERR_CNT_2_8822E 0x05DC +#define REG_NOA_PARAM_8822E 0x05E0 +#define REG_NOA_PARAM_1_8822E 0x05E4 +#define REG_NOA_PARAM_2_8822E 0x05E8 +#define REG_NOA_PARAM_3_8822E 0x05EC +#define REG_P2P_RST_8822E 0x05F0 +#define REG_SCHEDULER_RST_8822E 0x05F1 +#define REG_SCH_DBG_VALUE_8822E 0x05F4 +#define REG_SCH_TXCMD_8822E 0x05F8 +#define REG_PAGE5_DUMMY_8822E 0x05FC +#define REG_CPUMGQ_TX_TIMER_8822E 0x1500 +#define REG_PS_TIMER_A_8822E 0x1504 +#define REG_PS_TIMER_B_8822E 0x1508 +#define REG_PS_TIMER_C_8822E 0x150C +#define REG_PS_TIMER_ABC_CPUMGQ_TIMER_CRTL_8822E 0x1510 +#define REG_CPUMGQ_TX_TIMER_EARLY_8822E 0x1514 +#define REG_PS_TIMER_A_EARLY_8822E 0x1515 +#define REG_PS_TIMER_B_EARLY_8822E 0x1516 +#define REG_PS_TIMER_C_EARLY_8822E 0x1517 +#define REG_CPUMGQ_PARAMETER_8822E 0x1518 +#define REG_TSF_SYNC_ADJ_8822E 0x1520 +#define REG_TSF_ADJ_VLAUE_8822E 0x1524 +#define REG_TSF_ADJ_VLAUE_2_8822E 0x1528 +#define REG_P2PPS_HW_AUTO_PAUSE_CTRL_8822E 0x156C +#define REG_P2PPS1_HW_AUTO_PAUSE_CTRL_8822E 0x1570 +#define REG_P2PPS2_HW_AUTO_PAUSE_CTRL_8822E 0x1574 +#define REG_SCHEDULER_COUNTER_8822E 0x15D0 +#define REG_WMAC_CR_8822E 0x0600 +#define REG_WMAC_FWPKT_CR_8822E 0x0601 +#define REG_FW_STS_FILTER_8822E 0x0602 +#define REG_TCR_8822E 0x0604 +#define REG_RCR_8822E 0x0608 +#define REG_RX_PKT_LIMIT_8822E 0x060C +#define REG_RX_DLK_TIME_8822E 0x060D +#define REG_RX_DRVINFO_SZ_8822E 0x060F +#define REG_MACID_8822E 0x0610 +#define REG_MACID_H_8822E 0x0614 +#define REG_BSSID_8822E 0x0618 +#define REG_BSSID_H_8822E 0x061C +#define REG_MAR_8822E 0x0620 +#define REG_MAR_H_8822E 0x0624 +#define REG_MBIDCAMCFG_1_8822E 0x0628 +#define REG_MBIDCAMCFG_2_8822E 0x062C +#define REG_WMAC_TCR_TSFT_OFS_8822E 0x0630 +#define REG_UDF_THSD_8822E 0x0632 +#define REG_ZLD_NUM_8822E 0x0633 +#define REG_STMP_THSD_8822E 0x0634 +#define REG_WMAC_TXTIMEOUT_8822E 0x0635 +#define REG_USTIME_EDCA_8822E 0x0638 +#define REG_ACKTO_CCK_8822E 0x0639 +#define REG_MAC_SPEC_SIFS_8822E 0x063A +#define REG_RESP_SIFS_CCK_8822E 0x063C +#define REG_RESP_SIFS_OFDM_8822E 0x063E +#define REG_ACKTO_8822E 0x0640 +#define REG_CTS2TO_8822E 0x0641 +#define REG_EIFS_8822E 0x0642 +#define REG_RPFM_MAP0_8822E 0x0644 +#define REG_RPFM_MAP1_V1_8822E 0x0646 +#define REG_RPFM_CAM_CMD_8822E 0x0648 +#define REG_RPFM_CAM_RWD_8822E 0x064C +#define REG_NAV_CTRL_8822E 0x0650 +#define REG_BACAMCMD_8822E 0x0654 +#define REG_BACAMCONTENT_8822E 0x0658 +#define REG_BACAMCONTENT_H_8822E 0x065C +#define REG_LBDLY_8822E 0x0660 +#define REG_WMAC_BACAM_RPMEN_8822E 0x0661 +#define REG_TX_RX_8822E 0x0662 +#define REG_WMAC_BITMAP_CTL_8822E 0x0663 +#define REG_RXERR_RPT_8822E 0x0664 +#define REG_WMAC_TRXPTCL_CTL_8822E 0x0668 +#define REG_WMAC_TRXPTCL_CTL_H_8822E 0x066C +#define REG_CAMCMD_8822E 0x0670 +#define REG_CAMWRITE_8822E 0x0674 +#define REG_CAMREAD_8822E 0x0678 +#define REG_CAMDBG_8822E 0x067C +#define REG_SECCFG_8822E 0x0680 +#define REG_RXFILTER_CATEGORY_1_8822E 0x0682 +#define REG_RXFILTER_ACTION_1_8822E 0x0683 +#define REG_RXFILTER_CATEGORY_2_8822E 0x0684 +#define REG_RXFILTER_ACTION_2_8822E 0x0685 +#define REG_RXFILTER_CATEGORY_3_8822E 0x0686 +#define REG_RXFILTER_ACTION_3_8822E 0x0687 +#define REG_RXFLTMAP3_8822E 0x0688 +#define REG_RXFLTMAP4_8822E 0x068A +#define REG_RXFLTMAP5_8822E 0x068C +#define REG_RXFLTMAP6_8822E 0x068E +#define REG_WOW_CTRL_8822E 0x0690 +#define REG_NAN_RX_TSF_FILTER_8822E 0x0691 +#define REG_PS_RX_INFO_8822E 0x0692 +#define REG_WMMPS_UAPSD_TID_8822E 0x0693 +#define REG_RRSR_CTS_8822E 0x0694 +#define REG_WKFMCAM_CMD_8822E 0x0698 +#define REG_WKFMCAM_RWD_8822E 0x069C +#define REG_RXFLTMAP0_8822E 0x06A0 +#define REG_RXFLTMAP1_8822E 0x06A2 +#define REG_RXFLTMAP2_8822E 0x06A4 +#define REG_BCN_PSR_RPT_8822E 0x06A8 +#define REG_FLC_RPC_8822E 0x06AC +#define REG_FLC_RPCT_8822E 0x06AD +#define REG_FLC_PTS_8822E 0x06AE +#define REG_FLC_TRPC_8822E 0x06AF +#define REG_RXPKTMON_CTRL_8822E 0x06B0 +#define REG_STATE_MON_8822E 0x06B4 +#define REG_ERROR_MON_8822E 0x06B8 +#define REG_SEARCH_MACID_8822E 0x06BC +#define REG_BT_COEX_TABLE_8822E 0x06C0 +#define REG_BT_COEX_TABLE2_8822E 0x06C4 +#define REG_BT_COEX_BREAK_TABLE_8822E 0x06C8 +#define REG_BT_COEX_TABLE_H_8822E 0x06CC +#define REG_RXCMD_0_8822E 0x06D0 +#define REG_RXCMD_1_8822E 0x06D4 +#define REG_WMAC_RESP_TXINFO_8822E 0x06D8 +#define REG_BBPSF_CTRL_8822E 0x06DC +#define REG_P2P_RX_BCN_NOA_8822E 0x06E0 +#define REG_ASSOCIATED_BFMER0_INFO_8822E 0x06E4 +#define REG_ASSOCIATED_BFMER0_INFO_H_8822E 0x06E8 +#define REG_ASSOCIATED_BFMER1_INFO_8822E 0x06EC +#define REG_ASSOCIATED_BFMER1_INFO_H_8822E 0x06F0 +#define REG_TX_CSI_RPT_PARAM_BW20_8822E 0x06F4 +#define REG_TX_CSI_RPT_PARAM_BW40_8822E 0x06F8 +#define REG_CSI_PTR_8822E 0x06FC +#define REG_BCN_PSR_RPT2_8822E 0x1600 +#define REG_BCN_PSR_RPT3_8822E 0x1604 +#define REG_BCN_PSR_RPT4_8822E 0x1608 +#define REG_A1_ADDR_MASK_8822E 0x160C +#define REG_RXPSF_CTRL_8822E 0x1610 +#define REG_RXPSF_TYPE_CTRL_8822E 0x1614 +#define REG_CAM_ACCESS_CTRL_8822E 0x1618 +#define REG_HT_SND_REF_RATE_8822E 0x161C +#define REG_MACID2_8822E 0x1620 +#define REG_MACID2_H_8822E 0x1624 +#define REG_BSSID2_8822E 0x1628 +#define REG_BSSID2_H_8822E 0x162C +#define REG_MACID3_8822E 0x1630 +#define REG_MACID3_H_8822E 0x1634 +#define REG_BSSID3_8822E 0x1638 +#define REG_BSSID3_H_8822E 0x163C +#define REG_MACID4_8822E 0x1640 +#define REG_MACID4_H_8822E 0x1644 +#define REG_BSSID4_8822E 0x1648 +#define REG_BSSID4_H_8822E 0x164C +#define REG_NOA_REPORT_8822E 0x1650 +#define REG_NOA_REPORT_1_8822E 0x1654 +#define REG_NOA_REPORT_2_8822E 0x1658 +#define REG_NOA_REPORT_3_8822E 0x165C +#define REG_PWRBIT_SETTING_8822E 0x1660 +#define REG_GENERAL_OPTION_8822E 0x1664 +#define REG_CSI_RRSR_8822E 0x1678 +#define REG_MU_BF_OPTION_8822E 0x167C +#define REG_WMAC_PAUSE_BB_CLR_TH_8822E 0x167D +#define REG__WMAC_MULBK_BUF_8822E 0x167E +#define REG_WMAC_MU_OPTION_8822E 0x167F +#define REG_WMAC_MU_BF_CTL_8822E 0x1680 +#define REG_WMAC_MU_BFRPT_PARA_8822E 0x1682 +#define REG_WMAC_ASSOCIATED_MU_BFMEE2_8822E 0x1684 +#define REG_WMAC_ASSOCIATED_MU_BFMEE3_8822E 0x1686 +#define REG_WMAC_ASSOCIATED_MU_BFMEE4_8822E 0x1688 +#define REG_WMAC_ASSOCIATED_MU_BFMEE5_8822E 0x168A +#define REG_WMAC_ASSOCIATED_MU_BFMEE6_8822E 0x168C +#define REG_WMAC_ASSOCIATED_MU_BFMEE7_8822E 0x168E +#define REG_WMAC_BB_STOP_RX_COUNTER_8822E 0x1690 +#define REG_WMAC_PLCP_MONITOR_8822E 0x1694 +#define REG_WMAC_PLCP_MONITOR_MUTX_8822E 0x1698 +#define REG_WMAC_CSIDMA_CFG_8822E 0x169C +#define REG_TRANSMIT_ADDRSS_0_8822E 0x16A0 +#define REG_TRANSMIT_ADDRSS_0_H_8822E 0x16A4 +#define REG_TRANSMIT_ADDRSS_1_8822E 0x16A8 +#define REG_TRANSMIT_ADDRSS_1_H_8822E 0x16AC +#define REG_TRANSMIT_ADDRSS_2_8822E 0x16B0 +#define REG_TRANSMIT_ADDRSS_2_H_8822E 0x16B4 +#define REG_TRANSMIT_ADDRSS_3_8822E 0x16B8 +#define REG_TRANSMIT_ADDRSS_3_H_8822E 0x16BC +#define REG_TRANSMIT_ADDRSS_4_8822E 0x16C0 +#define REG_TRANSMIT_ADDRSS_4_H_8822E 0x16C4 +#define REG_MACID1_8822E 0x0700 +#define REG_MACID1_1_8822E 0x0704 +#define REG_BSSID1_8822E 0x0708 +#define REG_BSSID1_1_8822E 0x070C +#define REG_BCN_PSR_RPT1_8822E 0x0710 +#define REG_ASSOCIATED_BFMEE_SEL_8822E 0x0714 +#define REG_SND_PTCL_CTRL_8822E 0x0718 +#define REG_RX_CSI_RPT_INFO_8822E 0x071C +#define REG_NS_ARP_CTRL_8822E 0x0720 +#define REG_NS_ARP_INFO_8822E 0x0724 +#define REG_BEAMFORMING_INFO_NSARP_V1_8822E 0x0728 +#define REG_BEAMFORMING_INFO_NSARP_8822E 0x072C +#define REG_IPV6_8822E 0x0730 +#define REG_IPV6_1_8822E 0x0734 +#define REG_IPV6_2_8822E 0x0738 +#define REG_IPV6_3_8822E 0x073C +#define REG_WMAC_RTX_CTX_SUBTYPE_CFG_8822E 0x0750 +#define REG_WMAC_SWAES_DIO_B63_B32_8822E 0x0754 +#define REG_WMAC_SWAES_DIO_B95_B64_8822E 0x0758 +#define REG_WMAC_SWAES_DIO_B127_B96_8822E 0x075C +#define REG_WMAC_SWAES_CFG_8822E 0x0760 +#define REG_BT_COEX_V2_8822E 0x0762 +#define REG_BT_COEX_8822E 0x0764 +#define REG_WLAN_ACT_MASK_CTRL_8822E 0x0768 +#define REG_WLAN_ACT_MASK_CTRL_1_8822E 0x076C +#define REG_BT_COEX_ENHANCED_INTR_CTRL_8822E 0x076E +#define REG_BT_ACT_STATISTICS_8822E 0x0770 +#define REG_BT_ACT_STATISTICS_1_8822E 0x0774 +#define REG_BT_STATISTICS_CONTROL_REGISTER_8822E 0x0778 +#define REG_BT_STATUS_REPORT_REGISTER_8822E 0x077C +#define REG_BT_INTERRUPT_CONTROL_REGISTER_8822E 0x0780 +#define REG_WLAN_REPORT_TIME_OUT_CONTROL_REGISTER_8822E 0x0784 +#define REG_BT_ISOLATION_TABLE_REGISTER_REGISTER_8822E 0x0785 +#define REG_BT_ISOLATION_TABLE_REGISTER_REGISTER_1_8822E 0x0788 +#define REG_BT_ISOLATION_TABLE_REGISTER_REGISTER_2_8822E 0x078C +#define REG_BT_INTERRUPT_STATUS_REGISTER_8822E 0x078F +#define REG_BT_TDMA_TIME_REGISTER_8822E 0x0790 +#define REG_BT_ACT_REGISTER_8822E 0x0794 +#define REG_OBFF_CTRL_BASIC_8822E 0x0798 +#define REG_OBFF_CTRL2_TIMER_8822E 0x079C +#define REG_LTR_CTRL_BASIC_8822E 0x07A0 +#define REG_LTR_CTRL2_TIMER_THRESHOLD_8822E 0x07A4 +#define REG_LTR_IDLE_LATENCY_V1_8822E 0x07A8 +#define REG_LTR_ACTIVE_LATENCY_V1_8822E 0x07AC +#define REG_ANTENNA_TRAINING_CONTROL_REGISTER_8822E 0x07B0 +#define REG_ANTENNA_TRAINING_CONTROL_REGISTER_1_8822E 0x07B4 +#define REG_WMAC_PKTCNT_RWD_8822E 0x07B8 +#define REG_WMAC_PKTCNT_CTRL_8822E 0x07BC +#define REG_IQ_DUMP_8822E 0x07C0 +#define REG_IQ_DUMP_1_8822E 0x07C4 +#define REG_IQ_DUMP_2_8822E 0x07C8 +#define REG_WMAC_FTM_CTL_8822E 0x07CC +#define REG_WMAC_IQ_MDPK_FUNC_8822E 0x07CE +#define REG_WMAC_OPTION_FUNCTION_8822E 0x07D0 +#define REG_WMAC_OPTION_FUNCTION_1_8822E 0x07D4 +#define REG_WMAC_OPTION_FUNCTION_2_8822E 0x07D8 +#define REG_RX_FILTER_FUNCTION_8822E 0x07DA +#define REG_NDP_SIG_8822E 0x07E0 +#define REG_TXCMD_INFO_FOR_RSP_PKT_8822E 0x07E4 +#define REG_TXCMD_INFO_FOR_RSP_PKT_1_8822E 0x07E8 +#define REG_WSEC_OPTION_8822E 0x07EC +#define REG_RTS_ADDRESS_0_8822E 0x07F0 +#define REG_RTS_ADDRESS_0_1_8822E 0x07F4 +#define REG_RTS_ADDRESS_1_8822E 0x07F8 +#define REG_RTS_ADDRESS_1_1_8822E 0x07FC +#define REG_WL2LTECOEX_INDIRECT_ACCESS_CTRL_V1_8822E 0x1700 +#define REG_WL2LTECOEX_INDIRECT_ACCESS_WRITE_DATA_V1_8822E 0x1704 +#define REG_WL2LTECOEX_INDIRECT_ACCESS_READ_DATA_V1_8822E 0x1708 +#define REG_SDIO_TX_CTRL_8822E 0x10250000 +#define REG_SDIO_CMD11_VOL_SWITCH_8822E 0x10250004 +#define REG_SDIO_CTRL_8822E 0x10250005 +#define REG_SDIO_DRIVING_8822E 0x10250006 +#define REG_SDIO_MONITOR_8822E 0x10250008 +#define REG_SDIO_MONITOR_2_8822E 0x1025000C +#define REG_SDIO_HIMR_8822E 0x10250014 +#define REG_SDIO_HISR_8822E 0x10250018 +#define REG_SDIO_RX_REQ_LEN_8822E 0x1025001C +#define REG_SDIO_FREE_TXPG_SEQ_V1_8822E 0x1025001F +#define REG_SDIO_FREE_TXPG_8822E 0x10250020 +#define REG_SDIO_FREE_TXPG2_8822E 0x10250024 +#define REG_SDIO_OQT_FREE_TXPG_V1_8822E 0x10250028 +#define REG_SDIO_TXPKT_EMPTY_8822E 0x1025002C +#define REG_SDIO_HTSFR_INFO_8822E 0x10250030 +#define REG_SDIO_HCPWM1_V2_8822E 0x10250038 +#define REG_SDIO_HCPWM2_V2_8822E 0x1025003A +#define REG_SDIO_INDIRECT_REG_CFG_8822E 0x10250040 +#define REG_SDIO_INDIRECT_REG_DATA_8822E 0x10250044 +#define REG_SDIO_H2C_8822E 0x10250060 +#define REG_SDIO_C2H_8822E 0x10250064 +#define REG_SDIO_HRPWM1_8822E 0x10250080 +#define REG_SDIO_HRPWM2_8822E 0x10250082 +#define REG_SDIO_HPS_CLKR_8822E 0x10250084 +#define REG_SDIO_BUS_CTRL_8822E 0x10250085 +#define REG_SDIO_HSUS_CTRL_8822E 0x10250086 +#define REG_SDIO_RESPONSE_TIMER_8822E 0x10250088 +#define REG_SDIO_CMD_CRC_8822E 0x1025008A +#define REG_SDIO_HSISR_8822E 0x10250090 +#define REG_SDIO_HSIMR_8822E 0x10250091 +#define REG_SDIO_DIOERR_RPT_8822E 0x102500C0 +#define REG_SDIO_CMD_ERRCNT_8822E 0x102500C2 +#define REG_SDIO_DATA_ERRCNT_8822E 0x102500C3 +#define REG_SDIO_CMD_ERR_CONTENT_8822E 0x102500C4 +#define REG_SDIO_CRC_ERR_IDX_8822E 0x102500C9 +#define REG_SDIO_DATA_CRC_8822E 0x102500CA +#define REG_SDIO_TRANS_FIFO_STATUS_8822E 0x102500CC + +#endif diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_bd_nic.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_bd_nic.h index 741f9ecc4..7fa0e53b8 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_bd_nic.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_bd_nic.h @@ -16,8 +16,9 @@ #ifndef _HALMAC_RX_BD_NIC_H_ #define _HALMAC_RX_BD_NIC_H_ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT ||\ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8814B_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8814B_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXBD_DW0*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_ap.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_ap.h index 312d5b835..bd8c2f3c4 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_ap.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_ap.h @@ -17,7 +17,8 @@ #define _HALMAC_RX_DESC_AP_H_ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*RXDESC_WORD0*/ @@ -29,7 +30,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PHYPKTIDC(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword0, 0x1, \ @@ -48,7 +49,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_SWDEC(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword0, 0x1, \ @@ -91,7 +92,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_TY_PE(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x3, \ @@ -110,7 +112,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_MF(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x1, \ @@ -126,7 +128,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PAM(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x1, \ @@ -144,7 +147,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_CHK_VLD(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x1, \ @@ -163,7 +167,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_IS_TCP_UDP(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x1, \ @@ -176,7 +180,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_CHKERR(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x1, \ @@ -200,7 +205,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PAGGR(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x1, \ @@ -218,7 +224,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RXID_MATCH(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x1, \ @@ -237,7 +244,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_AMSDU(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x1, \ @@ -247,7 +254,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_MACID_VLD(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x1, \ @@ -258,7 +266,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_TID(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0xf, 8) @@ -267,7 +275,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_MACID(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword1, 0x7f, \ @@ -291,7 +300,7 @@ #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PPDU_CNT(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword2, 0x3, \ @@ -302,7 +311,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_C2H(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword2, 0x1, \ @@ -319,7 +328,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_HWRSVD(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword2, 0xf, \ @@ -338,7 +348,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_WLANHD_IV_LEN(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword2, 0x3f, \ @@ -354,7 +364,8 @@ #endif -#if (HALMAC_8822C_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_STATISTICS(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword2, 0x1, \ @@ -364,7 +375,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_IS_QOS(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword2, 0x1, \ @@ -383,7 +395,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_FRAG(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword2, 0xf, \ @@ -396,7 +408,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*RXDESC_WORD3*/ @@ -411,7 +424,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PATTERN_MATCH(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword3, 0x1, \ @@ -428,7 +441,8 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RXPAYLOAD_MATCH(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword3, 0x1, \ @@ -442,7 +456,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_DMA_AGG_NUM(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword3, 0xff, \ @@ -452,7 +466,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_BSSID_FIT_1_0(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword3, 0x3, \ @@ -474,7 +489,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_HTC(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword3, 0x1, \ @@ -493,7 +508,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_BSSID_FIT_4_2(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword3, 0x7, 7) @@ -510,7 +525,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_RATE(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword3, 0x7f, \ @@ -520,7 +535,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) /*RXDESC_WORD4*/ @@ -556,7 +571,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_MACID_RPT_BUFF(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword4, 0x7f, \ @@ -566,7 +582,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_PRE_NDP_VLD(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword4, 0x1, \ @@ -603,7 +619,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_SCRAMBLER(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword4, 0x7f, \ @@ -643,7 +659,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PATTERN_IDX(rxdesc) \ HALMAC_GET_DESC_FIELD(((struct halmac_rx_desc *)rxdesc)->dword4, 0xff, \ @@ -669,7 +686,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*RXDESC_WORD5*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_chip.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_chip.h index 15ac23e99..2f05b52ff 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_chip.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_chip.h @@ -859,4 +859,91 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/*RXDESC_WORD0*/ + +#define GET_RX_DESC_EOR_8822E(rxdesc) GET_RX_DESC_EOR(rxdesc) +#define GET_RX_DESC_PHYPKTIDC_8822E(rxdesc) GET_RX_DESC_PHYPKTIDC(rxdesc) +#define GET_RX_DESC_SWDEC_8822E(rxdesc) GET_RX_DESC_SWDEC(rxdesc) +#define GET_RX_DESC_PHYST_8822E(rxdesc) GET_RX_DESC_PHYST(rxdesc) +#define GET_RX_DESC_SHIFT_8822E(rxdesc) GET_RX_DESC_SHIFT(rxdesc) +#define GET_RX_DESC_QOS_8822E(rxdesc) GET_RX_DESC_QOS(rxdesc) +#define GET_RX_DESC_SECURITY_8822E(rxdesc) GET_RX_DESC_SECURITY(rxdesc) +#define GET_RX_DESC_DRV_INFO_SIZE_8822E(rxdesc) \ + GET_RX_DESC_DRV_INFO_SIZE(rxdesc) +#define GET_RX_DESC_ICV_ERR_8822E(rxdesc) GET_RX_DESC_ICV_ERR(rxdesc) +#define GET_RX_DESC_CRC32_8822E(rxdesc) GET_RX_DESC_CRC32(rxdesc) +#define GET_RX_DESC_PKT_LEN_8822E(rxdesc) GET_RX_DESC_PKT_LEN(rxdesc) + +/*RXDESC_WORD1*/ + +#define GET_RX_DESC_BC_8822E(rxdesc) GET_RX_DESC_BC(rxdesc) +#define GET_RX_DESC_MC_8822E(rxdesc) GET_RX_DESC_MC(rxdesc) +#define GET_RX_DESC_TY_PE_8822E(rxdesc) GET_RX_DESC_TY_PE(rxdesc) +#define GET_RX_DESC_MF_8822E(rxdesc) GET_RX_DESC_MF(rxdesc) +#define GET_RX_DESC_MD_8822E(rxdesc) GET_RX_DESC_MD(rxdesc) +#define GET_RX_DESC_PWR_8822E(rxdesc) GET_RX_DESC_PWR(rxdesc) +#define GET_RX_DESC_PAM_8822E(rxdesc) GET_RX_DESC_PAM(rxdesc) +#define GET_RX_DESC_CHK_VLD_8822E(rxdesc) GET_RX_DESC_CHK_VLD(rxdesc) +#define GET_RX_DESC_RX_IS_TCP_UDP_8822E(rxdesc) \ + GET_RX_DESC_RX_IS_TCP_UDP(rxdesc) +#define GET_RX_DESC_RX_IPV_8822E(rxdesc) GET_RX_DESC_RX_IPV(rxdesc) +#define GET_RX_DESC_CHKERR_8822E(rxdesc) GET_RX_DESC_CHKERR(rxdesc) +#define GET_RX_DESC_PAGGR_8822E(rxdesc) GET_RX_DESC_PAGGR(rxdesc) +#define GET_RX_DESC_RXID_MATCH_8822E(rxdesc) GET_RX_DESC_RXID_MATCH(rxdesc) +#define GET_RX_DESC_AMSDU_8822E(rxdesc) GET_RX_DESC_AMSDU(rxdesc) +#define GET_RX_DESC_MACID_VLD_8822E(rxdesc) GET_RX_DESC_MACID_VLD(rxdesc) +#define GET_RX_DESC_TID_8822E(rxdesc) GET_RX_DESC_TID(rxdesc) +#define GET_RX_DESC_MACID_8822E(rxdesc) GET_RX_DESC_MACID(rxdesc) + +/*RXDESC_WORD2*/ + +#define GET_RX_DESC_FCS_OK_8822E(rxdesc) GET_RX_DESC_FCS_OK(rxdesc) +#define GET_RX_DESC_PPDU_CNT_8822E(rxdesc) GET_RX_DESC_PPDU_CNT(rxdesc) +#define GET_RX_DESC_C2H_8822E(rxdesc) GET_RX_DESC_C2H(rxdesc) +#define GET_RX_DESC_HWRSVD_8822E(rxdesc) GET_RX_DESC_HWRSVD(rxdesc) +#define GET_RX_DESC_WLANHD_IV_LEN_8822E(rxdesc) \ + GET_RX_DESC_WLANHD_IV_LEN(rxdesc) +#define GET_RX_DESC_RX_STATISTICS_8822E(rxdesc) \ + GET_RX_DESC_RX_STATISTICS(rxdesc) +#define GET_RX_DESC_RX_IS_QOS_8822E(rxdesc) GET_RX_DESC_RX_IS_QOS(rxdesc) +#define GET_RX_DESC_FRAG_8822E(rxdesc) GET_RX_DESC_FRAG(rxdesc) +#define GET_RX_DESC_SEQ_8822E(rxdesc) GET_RX_DESC_SEQ(rxdesc) + +/*RXDESC_WORD3*/ + +#define GET_RX_DESC_MAGIC_WAKE_8822E(rxdesc) GET_RX_DESC_MAGIC_WAKE(rxdesc) +#define GET_RX_DESC_UNICAST_WAKE_8822E(rxdesc) GET_RX_DESC_UNICAST_WAKE(rxdesc) +#define GET_RX_DESC_PATTERN_MATCH_8822E(rxdesc) \ + GET_RX_DESC_PATTERN_MATCH(rxdesc) +#define GET_RX_DESC_RXPAYLOAD_MATCH_8822E(rxdesc) \ + GET_RX_DESC_RXPAYLOAD_MATCH(rxdesc) +#define GET_RX_DESC_RXPAYLOAD_ID_8822E(rxdesc) GET_RX_DESC_RXPAYLOAD_ID(rxdesc) +#define GET_RX_DESC_DMA_AGG_NUM_8822E(rxdesc) GET_RX_DESC_DMA_AGG_NUM(rxdesc) +#define GET_RX_DESC_BSSID_FIT_1_0_8822E(rxdesc) \ + GET_RX_DESC_BSSID_FIT_1_0(rxdesc) +#define GET_RX_DESC_EOSP_8822E(rxdesc) GET_RX_DESC_EOSP(rxdesc) +#define GET_RX_DESC_HTC_8822E(rxdesc) GET_RX_DESC_HTC(rxdesc) +#define GET_RX_DESC_BSSID_FIT_4_2_8822E(rxdesc) \ + GET_RX_DESC_BSSID_FIT_4_2(rxdesc) +#define GET_RX_DESC_RX_RATE_8822E(rxdesc) GET_RX_DESC_RX_RATE(rxdesc) + +/*RXDESC_WORD4*/ + +#define GET_RX_DESC_A1_FIT_8822E(rxdesc) GET_RX_DESC_A1_FIT(rxdesc) +#define GET_RX_DESC_MACID_RPT_BUFF_8822E(rxdesc) \ + GET_RX_DESC_MACID_RPT_BUFF(rxdesc) +#define GET_RX_DESC_RX_PRE_NDP_VLD_8822E(rxdesc) \ + GET_RX_DESC_RX_PRE_NDP_VLD(rxdesc) +#define GET_RX_DESC_RX_SCRAMBLER_8822E(rxdesc) GET_RX_DESC_RX_SCRAMBLER(rxdesc) +#define GET_RX_DESC_RX_EOF_8822E(rxdesc) GET_RX_DESC_RX_EOF(rxdesc) +#define GET_RX_DESC_PATTERN_IDX_8822E(rxdesc) GET_RX_DESC_PATTERN_IDX(rxdesc) + +/*RXDESC_WORD5*/ + +#define GET_RX_DESC_TSFL_8822E(rxdesc) GET_RX_DESC_TSFL(rxdesc) + +#endif + #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_nic.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_nic.h index 6ee7a773a..b07ca0f30 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_nic.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_rx_desc_nic.h @@ -17,7 +17,8 @@ #define _HALMAC_RX_DESC_NIC_H_ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*RXDESC_WORD0*/ @@ -27,7 +28,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PHYPKTIDC(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x00, 28, 1) @@ -42,7 +43,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_SWDEC(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x00, 27, 1) #define GET_RX_DESC_PHYST(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x00, 26, 1) @@ -63,7 +64,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_TY_PE(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 28, 2) @@ -78,7 +80,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_MF(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 27, 1) #define GET_RX_DESC_MD(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 26, 1) @@ -88,7 +90,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PAM(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 24, 1) @@ -102,7 +105,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_CHK_VLD(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 23, 1) @@ -118,7 +122,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_IS_TCP_UDP(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 22, 1) #define GET_RX_DESC_RX_IPV(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 21, 1) @@ -127,7 +131,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_CHKERR(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 20, 1) @@ -144,7 +149,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PAGGR(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 15, 1) @@ -158,7 +164,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RXID_MATCH(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 14, 1) @@ -173,7 +180,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_AMSDU(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 13, 1) @@ -181,7 +188,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_MACID_VLD(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 12, 1) @@ -190,7 +198,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_TID(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 8, 4) @@ -198,7 +206,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_MACID(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x04, 0, 7) @@ -216,7 +225,7 @@ #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PPDU_CNT(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x08, 29, 2) @@ -225,7 +234,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_C2H(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x08, 28, 1) @@ -238,7 +247,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_HWRSVD(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x08, 24, 4) @@ -253,7 +263,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_WLANHD_IV_LEN(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x08, 18, 6) @@ -265,7 +275,8 @@ #endif -#if (HALMAC_8822C_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_STATISTICS(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x08, 17, 1) @@ -273,7 +284,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_IS_QOS(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x08, 16, 1) @@ -288,7 +300,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_FRAG(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x08, 12, 4) #define GET_RX_DESC_SEQ(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x08, 0, 12) @@ -297,7 +309,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*RXDESC_WORD3*/ @@ -308,7 +321,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PATTERN_MATCH(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x0C, 29, 1) @@ -321,7 +334,8 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || \ - HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RXPAYLOAD_MATCH(rxdesc) \ LE_BITS_TO_4BYTE(rxdesc + 0x0C, 28, 1) @@ -332,7 +346,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_DMA_AGG_NUM(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x0C, 16, 8) @@ -340,7 +354,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_BSSID_FIT_1_0(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x0C, 12, 2) #define GET_RX_DESC_EOSP(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x0C, 11, 1) @@ -356,7 +371,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_HTC(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x0C, 10, 1) @@ -372,7 +387,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_BSSID_FIT_4_2(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x0C, 7, 3) @@ -387,7 +402,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_RATE(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x0C, 0, 7) @@ -395,7 +410,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) /*RXDESC_WORD4*/ @@ -423,7 +438,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_MACID_RPT_BUFF(rxdesc) \ LE_BITS_TO_4BYTE(rxdesc + 0x10, 17, 7) @@ -432,7 +448,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_PRE_NDP_VLD(rxdesc) \ LE_BITS_TO_4BYTE(rxdesc + 0x10, 16, 1) @@ -461,7 +477,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define GET_RX_DESC_RX_SCRAMBLER(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x10, 9, 7) #define GET_RX_DESC_RX_EOF(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x10, 8, 1) @@ -494,7 +510,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define GET_RX_DESC_PATTERN_IDX(rxdesc) LE_BITS_TO_4BYTE(rxdesc + 0x10, 0, 8) @@ -514,7 +531,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*RXDESC_WORD5*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_bd_nic.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_bd_nic.h index 394441e63..d7615127f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_bd_nic.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_bd_nic.h @@ -16,8 +16,9 @@ #ifndef _HALMAC_TX_BD_NIC_H_ #define _HALMAC_TX_BD_NIC_H_ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT ||\ - HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8814B_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8192F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8814B_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXBD_DW0*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_ap.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_ap.h index de9d418d1..cf7822927 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_ap.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_ap.h @@ -17,7 +17,7 @@ #define _HALMAC_TX_DESC_AP_H_ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) /*TXDESC_WORD0*/ @@ -49,7 +49,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_GF(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword0, \ @@ -79,7 +80,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_NO_ACM(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword0, \ @@ -109,7 +111,7 @@ #if (HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8821C_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8197G_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_BCNPKT_TSF_CTRL(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword0, \ @@ -125,7 +127,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_AMSDU_PAD_EN(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword0, \ @@ -141,7 +144,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_LS(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword0, \ @@ -157,7 +160,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_HTC(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword0, \ @@ -197,7 +201,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8197G_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_OFFSET(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword0, \ @@ -280,7 +284,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MOREDATA(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword1, \ @@ -319,7 +324,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_PKT_OFFSET(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword1, \ @@ -349,7 +355,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SEC_TYPE(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword1, \ @@ -397,7 +404,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_PIFS(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword1, \ @@ -446,7 +454,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8197G_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_QSEL(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword1, \ @@ -475,7 +483,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MACID(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword1, \ @@ -504,7 +513,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD2*/ @@ -535,7 +545,8 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_FTM_EN(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword2, \ @@ -579,7 +590,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_G_ID(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword2, \ @@ -623,7 +634,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_BT_NULL(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword2, \ @@ -698,7 +710,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_NULL_1(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword2, \ @@ -750,7 +763,7 @@ #if (HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8821C_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TRI_FRAME(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword2, \ @@ -765,7 +778,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_P_AID(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword2, \ @@ -795,7 +809,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD3*/ @@ -854,7 +869,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_NAVUSEHDR(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword3, \ @@ -920,7 +936,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_DISDATAFB(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword3, \ @@ -981,7 +998,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_WHEADER_LEN(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword3, \ @@ -1011,7 +1029,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD4*/ @@ -1110,7 +1129,7 @@ #endif -#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANTSEL_EN_V1(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword5, \ @@ -1139,7 +1158,7 @@ #endif -#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TXPWR_OFSET_TYPE(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword5, \ @@ -1169,7 +1188,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TX_ANT(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword5, \ @@ -1213,7 +1232,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_PORT_ID(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword5, \ @@ -1243,7 +1262,7 @@ #if (HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8821C_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8197G_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MULTIPLE_PORT(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword5, \ @@ -1259,7 +1278,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SIGNALING_TAPKT_EN(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword5, \ @@ -1289,7 +1308,7 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SIGNALING_TA_PKT_SC(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword5, \ @@ -1305,7 +1324,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_RTS_SHORT(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword5, \ @@ -1369,7 +1389,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD6*/ @@ -1414,7 +1435,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANT_MAPD(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword6, \ @@ -1457,7 +1479,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANT_MAPC(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword6, \ @@ -1500,7 +1523,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANT_MAPB(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword6, \ @@ -1543,7 +1567,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANT_MAPA(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword6, \ @@ -1572,7 +1597,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANTSEL_C(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword6, \ @@ -1615,7 +1641,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANTSEL_B(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword6, \ @@ -1668,7 +1695,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MBSSID(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword6, \ @@ -1683,7 +1711,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SW_DEFINE(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword6, \ @@ -1713,7 +1742,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD7*/ @@ -1731,7 +1761,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_FINAL_DATA_RATE(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword7, \ @@ -1770,7 +1800,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_NTX_MAP(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword7, \ @@ -1823,7 +1853,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TX_BUFF_SIZE(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword7, \ @@ -1857,7 +1888,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) /*TXDESC_WORD8*/ @@ -1938,7 +1969,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TAILPAGE_L(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword8, \ @@ -1972,7 +2004,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_EN_HWSEQ(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword8, \ @@ -1987,7 +2019,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_EN_HWEXSEQ(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword8, \ @@ -2017,7 +2050,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_DATA_RC(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword8, \ @@ -2050,7 +2084,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) /*TXDESC_WORD9*/ @@ -2091,7 +2125,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SW_SEQ(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword9, \ @@ -2107,7 +2142,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TXBF_PATH(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword9, \ @@ -2123,7 +2158,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_PADDING_LEN(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword9, \ @@ -2177,7 +2213,7 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MU_DATARATE(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword10, \ @@ -2224,7 +2260,7 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SND_PKT_SEL(txdesc, value) \ HALMAC_SET_DESC_FIELD_CLR(((struct halmac_tx_desc *)txdesc)->dword10, \ diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_chip.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_chip.h index 1d0963b7d..cbedcf686 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_chip.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_chip.h @@ -3490,4 +3490,391 @@ #endif +#if (HALMAC_8822E_SUPPORT) + +/*TXDESC_WORD0*/ + +#define SET_TX_DESC_DISQSELSEQ_8822E(txdesc, value) \ + SET_TX_DESC_DISQSELSEQ(txdesc, value) +#define GET_TX_DESC_DISQSELSEQ_8822E(txdesc) GET_TX_DESC_DISQSELSEQ(txdesc) +#define SET_TX_DESC_GF_8822E(txdesc, value) SET_TX_DESC_GF(txdesc, value) +#define GET_TX_DESC_GF_8822E(txdesc) GET_TX_DESC_GF(txdesc) +#define SET_TX_DESC_NO_ACM_8822E(txdesc, value) \ + SET_TX_DESC_NO_ACM(txdesc, value) +#define GET_TX_DESC_NO_ACM_8822E(txdesc) GET_TX_DESC_NO_ACM(txdesc) +#define SET_TX_DESC_BCNPKT_TSF_CTRL_8822E(txdesc, value) \ + SET_TX_DESC_BCNPKT_TSF_CTRL(txdesc, value) +#define GET_TX_DESC_BCNPKT_TSF_CTRL_8822E(txdesc) \ + GET_TX_DESC_BCNPKT_TSF_CTRL(txdesc) +#define SET_TX_DESC_AMSDU_PAD_EN_8822E(txdesc, value) \ + SET_TX_DESC_AMSDU_PAD_EN(txdesc, value) +#define GET_TX_DESC_AMSDU_PAD_EN_8822E(txdesc) GET_TX_DESC_AMSDU_PAD_EN(txdesc) +#define SET_TX_DESC_LS_8822E(txdesc, value) SET_TX_DESC_LS(txdesc, value) +#define GET_TX_DESC_LS_8822E(txdesc) GET_TX_DESC_LS(txdesc) +#define SET_TX_DESC_HTC_8822E(txdesc, value) SET_TX_DESC_HTC(txdesc, value) +#define GET_TX_DESC_HTC_8822E(txdesc) GET_TX_DESC_HTC(txdesc) +#define SET_TX_DESC_BMC_8822E(txdesc, value) SET_TX_DESC_BMC(txdesc, value) +#define GET_TX_DESC_BMC_8822E(txdesc) GET_TX_DESC_BMC(txdesc) +#define SET_TX_DESC_OFFSET_8822E(txdesc, value) \ + SET_TX_DESC_OFFSET(txdesc, value) +#define GET_TX_DESC_OFFSET_8822E(txdesc) GET_TX_DESC_OFFSET(txdesc) +#define SET_TX_DESC_TXPKTSIZE_8822E(txdesc, value) \ + SET_TX_DESC_TXPKTSIZE(txdesc, value) +#define GET_TX_DESC_TXPKTSIZE_8822E(txdesc) GET_TX_DESC_TXPKTSIZE(txdesc) + +/*WORD1*/ + +#define SET_TX_DESC_MOREDATA_8822E(txdesc, value) \ + SET_TX_DESC_MOREDATA(txdesc, value) +#define GET_TX_DESC_MOREDATA_8822E(txdesc) GET_TX_DESC_MOREDATA(txdesc) +#define SET_TX_DESC_PKT_OFFSET_8822E(txdesc, value) \ + SET_TX_DESC_PKT_OFFSET(txdesc, value) +#define GET_TX_DESC_PKT_OFFSET_8822E(txdesc) GET_TX_DESC_PKT_OFFSET(txdesc) +#define SET_TX_DESC_SEC_TYPE_8822E(txdesc, value) \ + SET_TX_DESC_SEC_TYPE(txdesc, value) +#define GET_TX_DESC_SEC_TYPE_8822E(txdesc) GET_TX_DESC_SEC_TYPE(txdesc) +#define SET_TX_DESC_EN_DESC_ID_8822E(txdesc, value) \ + SET_TX_DESC_EN_DESC_ID(txdesc, value) +#define GET_TX_DESC_EN_DESC_ID_8822E(txdesc) GET_TX_DESC_EN_DESC_ID(txdesc) +#define SET_TX_DESC_RATE_ID_8822E(txdesc, value) \ + SET_TX_DESC_RATE_ID(txdesc, value) +#define GET_TX_DESC_RATE_ID_8822E(txdesc) GET_TX_DESC_RATE_ID(txdesc) +#define SET_TX_DESC_PIFS_8822E(txdesc, value) SET_TX_DESC_PIFS(txdesc, value) +#define GET_TX_DESC_PIFS_8822E(txdesc) GET_TX_DESC_PIFS(txdesc) +#define SET_TX_DESC_LSIG_TXOP_EN_8822E(txdesc, value) \ + SET_TX_DESC_LSIG_TXOP_EN(txdesc, value) +#define GET_TX_DESC_LSIG_TXOP_EN_8822E(txdesc) GET_TX_DESC_LSIG_TXOP_EN(txdesc) +#define SET_TX_DESC_RD_NAV_EXT_8822E(txdesc, value) \ + SET_TX_DESC_RD_NAV_EXT(txdesc, value) +#define GET_TX_DESC_RD_NAV_EXT_8822E(txdesc) GET_TX_DESC_RD_NAV_EXT(txdesc) +#define SET_TX_DESC_QSEL_8822E(txdesc, value) SET_TX_DESC_QSEL(txdesc, value) +#define GET_TX_DESC_QSEL_8822E(txdesc) GET_TX_DESC_QSEL(txdesc) +#define SET_TX_DESC_MACID_8822E(txdesc, value) SET_TX_DESC_MACID(txdesc, value) +#define GET_TX_DESC_MACID_8822E(txdesc) GET_TX_DESC_MACID(txdesc) + +/*TXDESC_WORD2*/ + +#define SET_TX_DESC_HW_AES_IV_8822E(txdesc, value) \ + SET_TX_DESC_HW_AES_IV(txdesc, value) +#define GET_TX_DESC_HW_AES_IV_8822E(txdesc) GET_TX_DESC_HW_AES_IV(txdesc) +#define SET_TX_DESC_FTM_EN_8822E(txdesc, value) \ + SET_TX_DESC_FTM_EN(txdesc, value) +#define GET_TX_DESC_FTM_EN_8822E(txdesc) GET_TX_DESC_FTM_EN(txdesc) +#define SET_TX_DESC_G_ID_8822E(txdesc, value) SET_TX_DESC_G_ID(txdesc, value) +#define GET_TX_DESC_G_ID_8822E(txdesc) GET_TX_DESC_G_ID(txdesc) +#define SET_TX_DESC_BT_NULL_8822E(txdesc, value) \ + SET_TX_DESC_BT_NULL(txdesc, value) +#define GET_TX_DESC_BT_NULL_8822E(txdesc) GET_TX_DESC_BT_NULL(txdesc) +#define SET_TX_DESC_AMPDU_DENSITY_8822E(txdesc, value) \ + SET_TX_DESC_AMPDU_DENSITY(txdesc, value) +#define GET_TX_DESC_AMPDU_DENSITY_8822E(txdesc) \ + GET_TX_DESC_AMPDU_DENSITY(txdesc) +#define SET_TX_DESC_SPE_RPT_8822E(txdesc, value) \ + SET_TX_DESC_SPE_RPT(txdesc, value) +#define GET_TX_DESC_SPE_RPT_8822E(txdesc) GET_TX_DESC_SPE_RPT(txdesc) +#define SET_TX_DESC_RAW_8822E(txdesc, value) SET_TX_DESC_RAW(txdesc, value) +#define GET_TX_DESC_RAW_8822E(txdesc) GET_TX_DESC_RAW(txdesc) +#define SET_TX_DESC_MOREFRAG_8822E(txdesc, value) \ + SET_TX_DESC_MOREFRAG(txdesc, value) +#define GET_TX_DESC_MOREFRAG_8822E(txdesc) GET_TX_DESC_MOREFRAG(txdesc) +#define SET_TX_DESC_BK_8822E(txdesc, value) SET_TX_DESC_BK(txdesc, value) +#define GET_TX_DESC_BK_8822E(txdesc) GET_TX_DESC_BK(txdesc) +#define SET_TX_DESC_NULL_1_8822E(txdesc, value) \ + SET_TX_DESC_NULL_1(txdesc, value) +#define GET_TX_DESC_NULL_1_8822E(txdesc) GET_TX_DESC_NULL_1(txdesc) +#define SET_TX_DESC_NULL_0_8822E(txdesc, value) \ + SET_TX_DESC_NULL_0(txdesc, value) +#define GET_TX_DESC_NULL_0_8822E(txdesc) GET_TX_DESC_NULL_0(txdesc) +#define SET_TX_DESC_RDG_EN_8822E(txdesc, value) \ + SET_TX_DESC_RDG_EN(txdesc, value) +#define GET_TX_DESC_RDG_EN_8822E(txdesc) GET_TX_DESC_RDG_EN(txdesc) +#define SET_TX_DESC_AGG_EN_8822E(txdesc, value) \ + SET_TX_DESC_AGG_EN(txdesc, value) +#define GET_TX_DESC_AGG_EN_8822E(txdesc) GET_TX_DESC_AGG_EN(txdesc) +#define SET_TX_DESC_CCA_RTS_8822E(txdesc, value) \ + SET_TX_DESC_CCA_RTS(txdesc, value) +#define GET_TX_DESC_CCA_RTS_8822E(txdesc) GET_TX_DESC_CCA_RTS(txdesc) +#define SET_TX_DESC_TRI_FRAME_8822E(txdesc, value) \ + SET_TX_DESC_TRI_FRAME(txdesc, value) +#define GET_TX_DESC_TRI_FRAME_8822E(txdesc) GET_TX_DESC_TRI_FRAME(txdesc) +#define SET_TX_DESC_P_AID_8822E(txdesc, value) SET_TX_DESC_P_AID(txdesc, value) +#define GET_TX_DESC_P_AID_8822E(txdesc) GET_TX_DESC_P_AID(txdesc) + +/*TXDESC_WORD3*/ + +#define SET_TX_DESC_AMPDU_MAX_TIME_8822E(txdesc, value) \ + SET_TX_DESC_AMPDU_MAX_TIME(txdesc, value) +#define GET_TX_DESC_AMPDU_MAX_TIME_8822E(txdesc) \ + GET_TX_DESC_AMPDU_MAX_TIME(txdesc) +#define SET_TX_DESC_NDPA_8822E(txdesc, value) SET_TX_DESC_NDPA(txdesc, value) +#define GET_TX_DESC_NDPA_8822E(txdesc) GET_TX_DESC_NDPA(txdesc) +#define SET_TX_DESC_MAX_AGG_NUM_8822E(txdesc, value) \ + SET_TX_DESC_MAX_AGG_NUM(txdesc, value) +#define GET_TX_DESC_MAX_AGG_NUM_8822E(txdesc) GET_TX_DESC_MAX_AGG_NUM(txdesc) +#define SET_TX_DESC_USE_MAX_TIME_EN_8822E(txdesc, value) \ + SET_TX_DESC_USE_MAX_TIME_EN(txdesc, value) +#define GET_TX_DESC_USE_MAX_TIME_EN_8822E(txdesc) \ + GET_TX_DESC_USE_MAX_TIME_EN(txdesc) +#define SET_TX_DESC_NAVUSEHDR_8822E(txdesc, value) \ + SET_TX_DESC_NAVUSEHDR(txdesc, value) +#define GET_TX_DESC_NAVUSEHDR_8822E(txdesc) GET_TX_DESC_NAVUSEHDR(txdesc) +#define SET_TX_DESC_CHK_EN_8822E(txdesc, value) \ + SET_TX_DESC_CHK_EN(txdesc, value) +#define GET_TX_DESC_CHK_EN_8822E(txdesc) GET_TX_DESC_CHK_EN(txdesc) +#define SET_TX_DESC_HW_RTS_EN_8822E(txdesc, value) \ + SET_TX_DESC_HW_RTS_EN(txdesc, value) +#define GET_TX_DESC_HW_RTS_EN_8822E(txdesc) GET_TX_DESC_HW_RTS_EN(txdesc) +#define SET_TX_DESC_RTSEN_8822E(txdesc, value) SET_TX_DESC_RTSEN(txdesc, value) +#define GET_TX_DESC_RTSEN_8822E(txdesc) GET_TX_DESC_RTSEN(txdesc) +#define SET_TX_DESC_CTS2SELF_8822E(txdesc, value) \ + SET_TX_DESC_CTS2SELF(txdesc, value) +#define GET_TX_DESC_CTS2SELF_8822E(txdesc) GET_TX_DESC_CTS2SELF(txdesc) +#define SET_TX_DESC_DISDATAFB_8822E(txdesc, value) \ + SET_TX_DESC_DISDATAFB(txdesc, value) +#define GET_TX_DESC_DISDATAFB_8822E(txdesc) GET_TX_DESC_DISDATAFB(txdesc) +#define SET_TX_DESC_DISRTSFB_8822E(txdesc, value) \ + SET_TX_DESC_DISRTSFB(txdesc, value) +#define GET_TX_DESC_DISRTSFB_8822E(txdesc) GET_TX_DESC_DISRTSFB(txdesc) +#define SET_TX_DESC_USE_RATE_8822E(txdesc, value) \ + SET_TX_DESC_USE_RATE(txdesc, value) +#define GET_TX_DESC_USE_RATE_8822E(txdesc) GET_TX_DESC_USE_RATE(txdesc) +#define SET_TX_DESC_HW_SSN_SEL_8822E(txdesc, value) \ + SET_TX_DESC_HW_SSN_SEL(txdesc, value) +#define GET_TX_DESC_HW_SSN_SEL_8822E(txdesc) GET_TX_DESC_HW_SSN_SEL(txdesc) +#define SET_TX_DESC_WHEADER_LEN_8822E(txdesc, value) \ + SET_TX_DESC_WHEADER_LEN(txdesc, value) +#define GET_TX_DESC_WHEADER_LEN_8822E(txdesc) GET_TX_DESC_WHEADER_LEN(txdesc) + +/*TXDESC_WORD4*/ + +#define SET_TX_DESC_PCTS_MASK_IDX_8822E(txdesc, value) \ + SET_TX_DESC_PCTS_MASK_IDX(txdesc, value) +#define GET_TX_DESC_PCTS_MASK_IDX_8822E(txdesc) \ + GET_TX_DESC_PCTS_MASK_IDX(txdesc) +#define SET_TX_DESC_PCTS_EN_8822E(txdesc, value) \ + SET_TX_DESC_PCTS_EN(txdesc, value) +#define GET_TX_DESC_PCTS_EN_8822E(txdesc) GET_TX_DESC_PCTS_EN(txdesc) +#define SET_TX_DESC_RTSRATE_8822E(txdesc, value) \ + SET_TX_DESC_RTSRATE(txdesc, value) +#define GET_TX_DESC_RTSRATE_8822E(txdesc) GET_TX_DESC_RTSRATE(txdesc) +#define SET_TX_DESC_RTS_DATA_RTY_LMT_8822E(txdesc, value) \ + SET_TX_DESC_RTS_DATA_RTY_LMT(txdesc, value) +#define GET_TX_DESC_RTS_DATA_RTY_LMT_8822E(txdesc) \ + GET_TX_DESC_RTS_DATA_RTY_LMT(txdesc) +#define SET_TX_DESC_RTY_LMT_EN_8822E(txdesc, value) \ + SET_TX_DESC_RTY_LMT_EN(txdesc, value) +#define GET_TX_DESC_RTY_LMT_EN_8822E(txdesc) GET_TX_DESC_RTY_LMT_EN(txdesc) +#define SET_TX_DESC_RTS_RTY_LOWEST_RATE_8822E(txdesc, value) \ + SET_TX_DESC_RTS_RTY_LOWEST_RATE(txdesc, value) +#define GET_TX_DESC_RTS_RTY_LOWEST_RATE_8822E(txdesc) \ + GET_TX_DESC_RTS_RTY_LOWEST_RATE(txdesc) +#define SET_TX_DESC_DATA_RTY_LOWEST_RATE_8822E(txdesc, value) \ + SET_TX_DESC_DATA_RTY_LOWEST_RATE(txdesc, value) +#define GET_TX_DESC_DATA_RTY_LOWEST_RATE_8822E(txdesc) \ + GET_TX_DESC_DATA_RTY_LOWEST_RATE(txdesc) +#define SET_TX_DESC_TRY_RATE_8822E(txdesc, value) \ + SET_TX_DESC_TRY_RATE(txdesc, value) +#define GET_TX_DESC_TRY_RATE_8822E(txdesc) GET_TX_DESC_TRY_RATE(txdesc) +#define SET_TX_DESC_DATARATE_8822E(txdesc, value) \ + SET_TX_DESC_DATARATE(txdesc, value) +#define GET_TX_DESC_DATARATE_8822E(txdesc) GET_TX_DESC_DATARATE(txdesc) + +/*TXDESC_WORD5*/ + +#define SET_TX_DESC_POLLUTED_8822E(txdesc, value) \ + SET_TX_DESC_POLLUTED(txdesc, value) +#define GET_TX_DESC_POLLUTED_8822E(txdesc) GET_TX_DESC_POLLUTED(txdesc) +#define SET_TX_DESC_ANTSEL_EN_8822E(txdesc, value) \ + SET_TX_DESC_ANTSEL_EN_V1(txdesc, value) +#define GET_TX_DESC_ANTSEL_EN_8822E(txdesc) GET_TX_DESC_ANTSEL_EN_V1(txdesc) +#define SET_TX_DESC_TXPWR_OFSET_TYPE_8822E(txdesc, value) \ + SET_TX_DESC_TXPWR_OFSET_TYPE(txdesc, value) +#define GET_TX_DESC_TXPWR_OFSET_TYPE_8822E(txdesc) \ + GET_TX_DESC_TXPWR_OFSET_TYPE(txdesc) +#define SET_TX_DESC_TX_ANT_8822E(txdesc, value) \ + SET_TX_DESC_TX_ANT(txdesc, value) +#define GET_TX_DESC_TX_ANT_8822E(txdesc) GET_TX_DESC_TX_ANT(txdesc) +#define SET_TX_DESC_PORT_ID_8822E(txdesc, value) \ + SET_TX_DESC_PORT_ID(txdesc, value) +#define GET_TX_DESC_PORT_ID_8822E(txdesc) GET_TX_DESC_PORT_ID(txdesc) +#define SET_TX_DESC_MULTIPLE_PORT_8822E(txdesc, value) \ + SET_TX_DESC_MULTIPLE_PORT(txdesc, value) +#define GET_TX_DESC_MULTIPLE_PORT_8822E(txdesc) \ + GET_TX_DESC_MULTIPLE_PORT(txdesc) +#define SET_TX_DESC_SIGNALING_TAPKT_EN_8822E(txdesc, value) \ + SET_TX_DESC_SIGNALING_TAPKT_EN(txdesc, value) +#define GET_TX_DESC_SIGNALING_TAPKT_EN_8822E(txdesc) \ + GET_TX_DESC_SIGNALING_TAPKT_EN(txdesc) +#define SET_TX_DESC_SIGNALING_TA_PKT_SC_8822E(txdesc, value) \ + SET_TX_DESC_SIGNALING_TA_PKT_SC(txdesc, value) +#define GET_TX_DESC_SIGNALING_TA_PKT_SC_8822E(txdesc) \ + GET_TX_DESC_SIGNALING_TA_PKT_SC(txdesc) +#define SET_TX_DESC_RTS_SHORT_8822E(txdesc, value) \ + SET_TX_DESC_RTS_SHORT(txdesc, value) +#define GET_TX_DESC_RTS_SHORT_8822E(txdesc) GET_TX_DESC_RTS_SHORT(txdesc) +#define SET_TX_DESC_VCS_STBC_8822E(txdesc, value) \ + SET_TX_DESC_VCS_STBC(txdesc, value) +#define GET_TX_DESC_VCS_STBC_8822E(txdesc) GET_TX_DESC_VCS_STBC(txdesc) +#define SET_TX_DESC_DATA_STBC_8822E(txdesc, value) \ + SET_TX_DESC_DATA_STBC(txdesc, value) +#define GET_TX_DESC_DATA_STBC_8822E(txdesc) GET_TX_DESC_DATA_STBC(txdesc) +#define SET_TX_DESC_DATA_LDPC_8822E(txdesc, value) \ + SET_TX_DESC_DATA_LDPC(txdesc, value) +#define GET_TX_DESC_DATA_LDPC_8822E(txdesc) GET_TX_DESC_DATA_LDPC(txdesc) +#define SET_TX_DESC_DATA_BW_8822E(txdesc, value) \ + SET_TX_DESC_DATA_BW(txdesc, value) +#define GET_TX_DESC_DATA_BW_8822E(txdesc) GET_TX_DESC_DATA_BW(txdesc) +#define SET_TX_DESC_DATA_SHORT_8822E(txdesc, value) \ + SET_TX_DESC_DATA_SHORT(txdesc, value) +#define GET_TX_DESC_DATA_SHORT_8822E(txdesc) GET_TX_DESC_DATA_SHORT(txdesc) +#define SET_TX_DESC_DATA_SC_8822E(txdesc, value) \ + SET_TX_DESC_DATA_SC(txdesc, value) +#define GET_TX_DESC_DATA_SC_8822E(txdesc) GET_TX_DESC_DATA_SC(txdesc) + +/*TXDESC_WORD6*/ + +#define SET_TX_DESC_ANTSEL_D_8822E(txdesc, value) \ + SET_TX_DESC_ANTSEL_D(txdesc, value) +#define GET_TX_DESC_ANTSEL_D_8822E(txdesc) GET_TX_DESC_ANTSEL_D(txdesc) +#define SET_TX_DESC_ANT_MAPD_8822E(txdesc, value) \ + SET_TX_DESC_ANT_MAPD(txdesc, value) +#define GET_TX_DESC_ANT_MAPD_8822E(txdesc) GET_TX_DESC_ANT_MAPD(txdesc) +#define SET_TX_DESC_ANT_MAPC_8822E(txdesc, value) \ + SET_TX_DESC_ANT_MAPC(txdesc, value) +#define GET_TX_DESC_ANT_MAPC_8822E(txdesc) GET_TX_DESC_ANT_MAPC(txdesc) +#define SET_TX_DESC_ANT_MAPB_8822E(txdesc, value) \ + SET_TX_DESC_ANT_MAPB(txdesc, value) +#define GET_TX_DESC_ANT_MAPB_8822E(txdesc) GET_TX_DESC_ANT_MAPB(txdesc) +#define SET_TX_DESC_ANT_MAPA_8822E(txdesc, value) \ + SET_TX_DESC_ANT_MAPA(txdesc, value) +#define GET_TX_DESC_ANT_MAPA_8822E(txdesc) GET_TX_DESC_ANT_MAPA(txdesc) +#define SET_TX_DESC_ANTSEL_C_8822E(txdesc, value) \ + SET_TX_DESC_ANTSEL_C(txdesc, value) +#define GET_TX_DESC_ANTSEL_C_8822E(txdesc) GET_TX_DESC_ANTSEL_C(txdesc) +#define SET_TX_DESC_ANTSEL_B_8822E(txdesc, value) \ + SET_TX_DESC_ANTSEL_B(txdesc, value) +#define GET_TX_DESC_ANTSEL_B_8822E(txdesc) GET_TX_DESC_ANTSEL_B(txdesc) +#define SET_TX_DESC_ANTSEL_A_8822E(txdesc, value) \ + SET_TX_DESC_ANTSEL_A(txdesc, value) +#define GET_TX_DESC_ANTSEL_A_8822E(txdesc) GET_TX_DESC_ANTSEL_A(txdesc) +#define SET_TX_DESC_MBSSID_8822E(txdesc, value) \ + SET_TX_DESC_MBSSID(txdesc, value) +#define GET_TX_DESC_MBSSID_8822E(txdesc) GET_TX_DESC_MBSSID(txdesc) +#define SET_TX_DESC_SW_DEFINE_8822E(txdesc, value) \ + SET_TX_DESC_SW_DEFINE(txdesc, value) +#define GET_TX_DESC_SW_DEFINE_8822E(txdesc) GET_TX_DESC_SW_DEFINE(txdesc) + +/*TXDESC_WORD7*/ + +#define SET_TX_DESC_DMA_TXAGG_NUM_8822E(txdesc, value) \ + SET_TX_DESC_DMA_TXAGG_NUM(txdesc, value) +#define GET_TX_DESC_DMA_TXAGG_NUM_8822E(txdesc) \ + GET_TX_DESC_DMA_TXAGG_NUM(txdesc) +#define SET_TX_DESC_FINAL_DATA_RATE_8822E(txdesc, value) \ + SET_TX_DESC_FINAL_DATA_RATE(txdesc, value) +#define GET_TX_DESC_FINAL_DATA_RATE_8822E(txdesc) \ + GET_TX_DESC_FINAL_DATA_RATE(txdesc) +#define SET_TX_DESC_NTX_MAP_8822E(txdesc, value) \ + SET_TX_DESC_NTX_MAP(txdesc, value) +#define GET_TX_DESC_NTX_MAP_8822E(txdesc) GET_TX_DESC_NTX_MAP(txdesc) +#define SET_TX_DESC_TX_BUFF_SIZE_8822E(txdesc, value) \ + SET_TX_DESC_TX_BUFF_SIZE(txdesc, value) +#define GET_TX_DESC_TX_BUFF_SIZE_8822E(txdesc) GET_TX_DESC_TX_BUFF_SIZE(txdesc) +#define SET_TX_DESC_TXDESC_CHECKSUM_8822E(txdesc, value) \ + SET_TX_DESC_TXDESC_CHECKSUM(txdesc, value) +#define GET_TX_DESC_TXDESC_CHECKSUM_8822E(txdesc) \ + GET_TX_DESC_TXDESC_CHECKSUM(txdesc) +#define SET_TX_DESC_TIMESTAMP_8822E(txdesc, value) \ + SET_TX_DESC_TIMESTAMP(txdesc, value) +#define GET_TX_DESC_TIMESTAMP_8822E(txdesc) GET_TX_DESC_TIMESTAMP(txdesc) + +/*TXDESC_WORD8*/ + +#define SET_TX_DESC_TXWIFI_CP_8822E(txdesc, value) \ + SET_TX_DESC_TXWIFI_CP(txdesc, value) +#define GET_TX_DESC_TXWIFI_CP_8822E(txdesc) GET_TX_DESC_TXWIFI_CP(txdesc) +#define SET_TX_DESC_MAC_CP_8822E(txdesc, value) \ + SET_TX_DESC_MAC_CP(txdesc, value) +#define GET_TX_DESC_MAC_CP_8822E(txdesc) GET_TX_DESC_MAC_CP(txdesc) +#define SET_TX_DESC_STW_PKTRE_DIS_8822E(txdesc, value) \ + SET_TX_DESC_STW_PKTRE_DIS(txdesc, value) +#define GET_TX_DESC_STW_PKTRE_DIS_8822E(txdesc) \ + GET_TX_DESC_STW_PKTRE_DIS(txdesc) +#define SET_TX_DESC_STW_RB_DIS_8822E(txdesc, value) \ + SET_TX_DESC_STW_RB_DIS(txdesc, value) +#define GET_TX_DESC_STW_RB_DIS_8822E(txdesc) GET_TX_DESC_STW_RB_DIS(txdesc) +#define SET_TX_DESC_STW_RATE_DIS_8822E(txdesc, value) \ + SET_TX_DESC_STW_RATE_DIS(txdesc, value) +#define GET_TX_DESC_STW_RATE_DIS_8822E(txdesc) GET_TX_DESC_STW_RATE_DIS(txdesc) +#define SET_TX_DESC_STW_ANT_DIS_8822E(txdesc, value) \ + SET_TX_DESC_STW_ANT_DIS(txdesc, value) +#define GET_TX_DESC_STW_ANT_DIS_8822E(txdesc) GET_TX_DESC_STW_ANT_DIS(txdesc) +#define SET_TX_DESC_STW_EN_8822E(txdesc, value) \ + SET_TX_DESC_STW_EN(txdesc, value) +#define GET_TX_DESC_STW_EN_8822E(txdesc) GET_TX_DESC_STW_EN(txdesc) +#define SET_TX_DESC_SMH_EN_8822E(txdesc, value) \ + SET_TX_DESC_SMH_EN(txdesc, value) +#define GET_TX_DESC_SMH_EN_8822E(txdesc) GET_TX_DESC_SMH_EN(txdesc) +#define SET_TX_DESC_TAILPAGE_L_8822E(txdesc, value) \ + SET_TX_DESC_TAILPAGE_L(txdesc, value) +#define GET_TX_DESC_TAILPAGE_L_8822E(txdesc) GET_TX_DESC_TAILPAGE_L(txdesc) +#define SET_TX_DESC_SDIO_DMASEQ_8822E(txdesc, value) \ + SET_TX_DESC_SDIO_DMASEQ(txdesc, value) +#define GET_TX_DESC_SDIO_DMASEQ_8822E(txdesc) GET_TX_DESC_SDIO_DMASEQ(txdesc) +#define SET_TX_DESC_NEXTHEADPAGE_L_8822E(txdesc, value) \ + SET_TX_DESC_NEXTHEADPAGE_L(txdesc, value) +#define GET_TX_DESC_NEXTHEADPAGE_L_8822E(txdesc) \ + GET_TX_DESC_NEXTHEADPAGE_L(txdesc) +#define SET_TX_DESC_EN_HWSEQ_8822E(txdesc, value) \ + SET_TX_DESC_EN_HWSEQ(txdesc, value) +#define GET_TX_DESC_EN_HWSEQ_8822E(txdesc) GET_TX_DESC_EN_HWSEQ(txdesc) +#define SET_TX_DESC_EN_HWEXSEQ_8822E(txdesc, value) \ + SET_TX_DESC_EN_HWEXSEQ(txdesc, value) +#define GET_TX_DESC_EN_HWEXSEQ_8822E(txdesc) GET_TX_DESC_EN_HWEXSEQ(txdesc) +#define SET_TX_DESC_DATA_RC_8822E(txdesc, value) \ + SET_TX_DESC_DATA_RC(txdesc, value) +#define GET_TX_DESC_DATA_RC_8822E(txdesc) GET_TX_DESC_DATA_RC(txdesc) +#define SET_TX_DESC_BAR_RTY_TH_8822E(txdesc, value) \ + SET_TX_DESC_BAR_RTY_TH(txdesc, value) +#define GET_TX_DESC_BAR_RTY_TH_8822E(txdesc) GET_TX_DESC_BAR_RTY_TH(txdesc) +#define SET_TX_DESC_RTS_RC_8822E(txdesc, value) \ + SET_TX_DESC_RTS_RC(txdesc, value) +#define GET_TX_DESC_RTS_RC_8822E(txdesc) GET_TX_DESC_RTS_RC(txdesc) + +/*TXDESC_WORD9*/ + +#define SET_TX_DESC_TAILPAGE_H_8822E(txdesc, value) \ + SET_TX_DESC_TAILPAGE_H(txdesc, value) +#define GET_TX_DESC_TAILPAGE_H_8822E(txdesc) GET_TX_DESC_TAILPAGE_H(txdesc) +#define SET_TX_DESC_NEXTHEADPAGE_H_8822E(txdesc, value) \ + SET_TX_DESC_NEXTHEADPAGE_H(txdesc, value) +#define GET_TX_DESC_NEXTHEADPAGE_H_8822E(txdesc) \ + GET_TX_DESC_NEXTHEADPAGE_H(txdesc) +#define SET_TX_DESC_SW_SEQ_8822E(txdesc, value) \ + SET_TX_DESC_SW_SEQ(txdesc, value) +#define GET_TX_DESC_SW_SEQ_8822E(txdesc) GET_TX_DESC_SW_SEQ(txdesc) +#define SET_TX_DESC_TXBF_PATH_8822E(txdesc, value) \ + SET_TX_DESC_TXBF_PATH(txdesc, value) +#define GET_TX_DESC_TXBF_PATH_8822E(txdesc) GET_TX_DESC_TXBF_PATH(txdesc) +#define SET_TX_DESC_PADDING_LEN_8822E(txdesc, value) \ + SET_TX_DESC_PADDING_LEN(txdesc, value) +#define GET_TX_DESC_PADDING_LEN_8822E(txdesc) GET_TX_DESC_PADDING_LEN(txdesc) +#define SET_TX_DESC_GROUP_BIT_IE_OFFSET_8822E(txdesc, value) \ + SET_TX_DESC_GROUP_BIT_IE_OFFSET(txdesc, value) +#define GET_TX_DESC_GROUP_BIT_IE_OFFSET_8822E(txdesc) \ + GET_TX_DESC_GROUP_BIT_IE_OFFSET(txdesc) + +/*WORD10*/ + +#define SET_TX_DESC_MU_DATARATE_8822E(txdesc, value) \ + SET_TX_DESC_MU_DATARATE(txdesc, value) +#define GET_TX_DESC_MU_DATARATE_8822E(txdesc) GET_TX_DESC_MU_DATARATE(txdesc) +#define SET_TX_DESC_MU_RC_8822E(txdesc, value) SET_TX_DESC_MU_RC(txdesc, value) +#define GET_TX_DESC_MU_RC_8822E(txdesc) GET_TX_DESC_MU_RC(txdesc) +#define SET_TX_DESC_SND_PKT_SEL_8822E(txdesc, value) \ + SET_TX_DESC_SND_PKT_SEL(txdesc, value) +#define GET_TX_DESC_SND_PKT_SEL_8822E(txdesc) GET_TX_DESC_SND_PKT_SEL(txdesc) + +#endif + #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_nic.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_nic.h index a1f6eab0a..06e801a2c 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_nic.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_tx_desc_nic.h @@ -17,7 +17,7 @@ #define _HALMAC_TX_DESC_NIC_H_ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) /*TXDESC_WORD0*/ @@ -37,7 +37,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_GF(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 30, 1, value) @@ -55,7 +56,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_NO_ACM(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 29, 1, value) @@ -73,7 +75,7 @@ #if (HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8821C_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8197G_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_BCNPKT_TSF_CTRL(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 28, 1, value) @@ -84,7 +86,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_AMSDU_PAD_EN(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 27, 1, value) @@ -94,7 +97,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_LS(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 26, 1, value) @@ -104,7 +107,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_HTC(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 25, 1, value) @@ -126,7 +130,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8197G_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_OFFSET(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 16, 8, value) @@ -173,7 +177,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MOREDATA(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 29, 1, value) @@ -194,7 +199,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_PKT_OFFSET(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 24, 5, value) @@ -212,7 +218,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SEC_TYPE(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 22, 2, value) @@ -236,7 +243,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_PIFS(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 15, 1, value) @@ -261,7 +269,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8814B_SUPPORT || HALMAC_8198F_SUPPORT || \ HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8197G_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_QSEL(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 8, 5, value) @@ -279,7 +287,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MACID(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 0, 7, value) @@ -296,7 +305,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD2*/ @@ -315,7 +325,8 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8821C_SUPPORT || \ - HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_FTM_EN(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 30, 1, value) @@ -341,7 +352,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_G_ID(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 24, 6, value) @@ -368,7 +379,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_BT_NULL(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 23, 1, value) @@ -402,7 +414,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_NULL_1(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 15, 1, value) @@ -424,7 +437,7 @@ #if (HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8821C_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TRI_FRAME(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 9, 1, value) @@ -434,7 +447,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_P_AID(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 0, 9, value) @@ -453,7 +467,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD3*/ @@ -484,7 +499,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_NAVUSEHDR(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 15, 1, value) @@ -514,7 +530,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_DISDATAFB(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 10, 1, value) @@ -544,7 +561,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_WHEADER_LEN(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 0, 5, value) @@ -562,7 +580,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD4*/ @@ -605,7 +624,7 @@ #endif -#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANTSEL_EN_V1(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 30, 1, value) @@ -622,7 +641,7 @@ #endif -#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) +#if (HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TXPWR_OFSET_TYPE(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 28, 2, value) @@ -642,7 +661,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8192F_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TX_ANT(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 24, 4, value) @@ -668,7 +687,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_PORT_ID(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 21, 3, value) @@ -686,7 +705,7 @@ #if (HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || HALMAC_8821C_SUPPORT || \ HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ - HALMAC_8197G_SUPPORT) + HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MULTIPLE_PORT(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 18, 3, value) @@ -696,7 +715,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SIGNALING_TAPKT_EN(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 17, 1, value) @@ -715,7 +734,7 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SIGNALING_TA_PKT_SC(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 13, 4, value) @@ -726,7 +745,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_RTS_SHORT(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 12, 1, value) @@ -753,7 +773,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD6*/ @@ -780,7 +801,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANT_MAPD(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 28, 2, value) @@ -805,7 +827,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANT_MAPC(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 26, 2, value) @@ -830,7 +853,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANT_MAPB(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 24, 2, value) @@ -855,7 +879,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANT_MAPA(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 22, 2, value) @@ -872,7 +897,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANTSEL_C(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 20, 2, value) @@ -897,7 +923,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_ANTSEL_B(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 18, 2, value) @@ -926,7 +953,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MBSSID(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 12, 4, value) @@ -935,7 +963,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || HALMAC_8812F_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SW_DEFINE(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 0, 12, value) @@ -953,7 +982,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) /*TXDESC_WORD7*/ @@ -965,7 +995,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_FINAL_DATA_RATE(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 24, 8, value) @@ -987,7 +1017,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_NTX_MAP(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 20, 4, value) @@ -1016,7 +1046,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TX_BUFF_SIZE(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 0, 16, value) @@ -1033,7 +1064,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) /*TXDESC_WORD8*/ @@ -1066,7 +1097,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TAILPAGE_L(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 24, 8, value) @@ -1083,7 +1115,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_EN_HWSEQ(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 15, 1, value) @@ -1092,7 +1124,8 @@ #endif #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ - HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT) + HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_EN_HWEXSEQ(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 14, 1, value) @@ -1110,7 +1143,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_DATA_RC(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 8, 6, value) @@ -1126,7 +1160,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) /*TXDESC_WORD9*/ @@ -1151,7 +1185,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SW_SEQ(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 12, 12, value) @@ -1161,7 +1196,7 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_TXBF_PATH(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 11, 1, value) @@ -1171,7 +1206,8 @@ #if (HALMAC_8814A_SUPPORT || HALMAC_8822B_SUPPORT || HALMAC_8197F_SUPPORT || \ HALMAC_8821C_SUPPORT || HALMAC_8198F_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8192F_SUPPORT || HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || \ + HALMAC_8822E_SUPPORT) #define SET_TX_DESC_PADDING_LEN(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 0, 11, value) @@ -1202,7 +1238,7 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_MU_DATARATE(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 8, 8, value) @@ -1225,7 +1261,7 @@ #endif #if (HALMAC_8822B_SUPPORT || HALMAC_8821C_SUPPORT || HALMAC_8822C_SUPPORT || \ - HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT) + HALMAC_8812F_SUPPORT || HALMAC_8197G_SUPPORT || HALMAC_8822E_SUPPORT) #define SET_TX_DESC_SND_PKT_SEL(txdesc, value) \ SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 0, 2, value) diff --git a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_type.h b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_type.h index cc694a146..749fb1782 100644 --- a/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_type.h +++ b/drivers/net/wireless/rtl8822cs/hal/halmac/halmac_type.h @@ -547,6 +547,7 @@ enum halmac_ret_status { HALMAC_RET_PINMUX_NOT_SUPPORT = 0x77, HALMAC_RET_FWFF_NO_EMPTY = 0x78, HALMAC_RET_ADR_NOT_ALIGN = 0x79, + HALMAC_RET_EFUSE_VER_ERR = 0x7A, }; enum halmac_chip_id { @@ -556,6 +557,7 @@ enum halmac_chip_id { HALMAC_CHIP_ID_8197F = 3, HALMAC_CHIP_ID_8822C = 4, HALMAC_CHIP_ID_8812F = 5, + HALMAC_CHIP_ID_8822E = 6, HALMAC_CHIP_ID_UNDEFINE = 0x7F, }; @@ -1815,6 +1817,12 @@ enum halmac_gpio_func { HALMAC_GPIO_FUNC_S1_TRSWB = 25, HALMAC_GPIO_FUNC_ANTSW = 26, HALMAC_GPIO_FUNC_ANTSWB = 27, + HALMAC_GPIO_FUNC_RFE_CTRL_3 = 28, + HALMAC_GPIO_FUNC_RFE_CTRL_5 = 29, + HALMAC_GPIO_FUNC_RFE_CTRL_7 = 30, + HALMAC_GPIO_FUNC_RFE_CTRL_8 = 31, + HALMAC_GPIO_FUNC_RFE_CTRL_9 = 32, + HALMAC_GPIO_FUNC_RFE_CTRL_11 = 33, HALMAC_GPIO_FUNC_UNDEFINE = 0X7F, }; @@ -2048,6 +2056,7 @@ struct halmac_sdio_hw_info { u8 tx_seq; u8 io_indir_flag; /* Halmac internal use */ u8 io_warn_flag; /* SW */ + u8 tx_512_by_byte_mode; }; struct halmac_edca_para { @@ -2114,6 +2123,13 @@ struct halmac_pinmux_info { u8 s1_trswb:1; u8 antswb:1; u8 antsw:1; + /* byte4 */ + u8 rfe_ctrl_3:1; + u8 rfe_ctrl_5:1; + u8 rfe_ctrl_7:1; + u8 rfe_ctrl_8:1; + u8 rfe_ctrl_9:1; + u8 rfe_ctrl_11:1; }; struct halmac_ofld_func_info { diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/ap_makefile.mk b/drivers/net/wireless/rtl8822cs/hal/phydm/ap_makefile.mk index 980bc8510..76eca160c 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/ap_makefile.mk +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/ap_makefile.mk @@ -246,3 +246,29 @@ ifeq ($(CONFIG_WLAN_HAL_8723FE),y) phydm/rtl8723f/phydm_hal_api8723f.o endif endif +ifeq ($(CONFIG_WLAN_HAL_8730A),y) + _PHYDM_FILES += phydm/halrf/rtl8730a/halrf_8730a.o + _PHYDM_FILES += phydm/halrf/rtl8730a/halrf_iqk_8730a.o + _PHYDM_FILES += phydm/halrf/rtl8730a/halrf_dpk_8730a.o + _PHYDM_FILES += phydm/halrf/rtl8730a/halrf_rfk_init_8730a.o + _PHYDM_FILES += phydm/halrf/rtl8730a/halhwimg8730a_rf.o + ifeq ($(CONFIG_RTL_ODM_WLAN_DRIVER),y) + _PHYDM_FILES += \ + phydm/rtl8723f/halhwimg8730a_bb.o\ + phydm/rtl8723f/phydm_regconfig8730a.o\ + phydm/rtl8723f/phydm_hal_api8730a.o + endif +endif +ifeq ($(CONFIG_WLAN_HAL_8822EE),y) + _PHYDM_FILES += phydm/halrf/rtl8822e/halrf_8822e.o + _PHYDM_FILES += phydm/halrf/rtl8822e/halrf_iqk_8822e.o + _PHYDM_FILES += phydm/halrf/rtl8822e/halrf_dpk_8822e.o + _PHYDM_FILES += phydm/halrf/rtl8822e/halrf_rfk_init_8822e.o + _PHYDM_FILES += phydm/halrf/rtl8822e/halhwimg8822e_rf.o + ifeq ($(CONFIG_RTL_ODM_WLAN_DRIVER),y) + _PHYDM_FILES += \ + phydm/rtl8822e/halhwimg8822e_bb.o\ + phydm/rtl8822e/phydm_regconfig8822e.o\ + phydm/rtl8822e/phydm_hal_api8822e.o + endif +endif \ No newline at end of file diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ap.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ap.c index 0cafd6978..b0dc8f2db 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ap.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ap.c @@ -13,8 +13,8 @@ * *****************************************************************************/ -#include "mp_precomp.h" -#include "phydm_precomp.h" +#include "../mp_precomp.h" +#include "../phydm_precomp.h" #ifndef index_mapping_NUM_88E #define index_mapping_NUM_88E 15 diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ap.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ap.h index 8cc2797bc..c7dfebd52 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ap.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ap.h @@ -86,6 +86,7 @@ struct txpwrtrack_cfg { u8 swing_table_size_ofdm; u8 threshold_iqk; u8 threshold_dpk; + u8 threshold_lck; u8 average_thermal_num; u8 rf_path_count; u32 thermal_reg_addr; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ce.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ce.c index 88aa9c6bc..0dfab0f8e 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ce.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ce.c @@ -120,6 +120,11 @@ void configure_txpower_track(void *dm_void, struct txpwrtrack_cfg *config) configure_txpower_track_8723f(config); #endif +#if RTL8822E_SUPPORT + if (dm->support_ic_type == ODM_RTL8822E) + configure_txpower_track_8822e(config); +#endif + } /*@ ********************************************************************** @@ -192,6 +197,9 @@ void odm_get_tracking_table(void *dm_void, u8 thermal_value, u8 delta) configure_txpower_track(dm, &c); + if (c.get_delta_swing_table == NULL) + return; + (*c.get_delta_swing_table)(dm, (u8 **)&pwrtrk_tab_up_a, (u8 **)&pwrtrk_tab_down_a, @@ -377,6 +385,9 @@ void odm_pwrtrk_method(void *dm_void) configure_txpower_track(dm, &c); + if (c.odm_tx_pwr_track_set_pwr == NULL) + return; + if (dm->support_ic_type & (ODM_RTL8188E | ODM_RTL8192E | ODM_RTL8821 | ODM_RTL8812 | ODM_RTL8723B | ODM_RTL8814A | ODM_RTL8703B | ODM_RTL8188F | @@ -852,7 +863,7 @@ void odm_txpowertracking_callback_thermal_meter(void *adapter) cali_info->tx_powercount = 0; } -#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8723F_SUPPORT == 1) +#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8723F_SUPPORT == 1 || RTL8822E_SUPPORT == 1) void odm_txpowertracking_new_callback_thermal_meter(void *dm_void) { @@ -862,8 +873,6 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) struct _hal_rf_ *rf = &dm->rf_table; struct _halrf_tssi_data *tssi = &rf->halrf_tssi_data; u8 thermal_value[MAX_RF_PATH] = {0}, delta[MAX_RF_PATH] = {0}; - u8 delta_swing_table_idx_tup[DELTA_SWINGIDX_SIZE] = {0}; - u8 delta_swing_table_idx_tdown[DELTA_SWINGIDX_SIZE] = {0}; u8 delta_LCK = 0, delta_IQK = 0, i = 0, j = 0, p; u8 thermal_value_avg_count[MAX_RF_PATH] = {0}; u32 thermal_value_avg[MAX_RF_PATH] = {0}; @@ -902,7 +911,7 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) "cali_info->txpowertrack_control=%d, tssi->thermal[RF_PATH_A]=%d tssi->thermal[RF_PATH_B]=%d\n", cali_info->txpowertrack_control, tssi->thermal[RF_PATH_A], tssi->thermal[RF_PATH_B]); - if (dm->support_ic_type == ODM_RTL8822C) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) { for (i = 0; i < c.rf_path_count; i++) thermal_value[i] = (u8)odm_get_rf_reg(dm, i, c.thermal_reg_addr, 0x7e); /* 0x42: RF Reg[6:1] Thermal Trim*/ } else { @@ -952,6 +961,7 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) if (thermal_value_avg_count[j]) { /* Calculate Average thermal_value after average enough times */ thermal_value[j] = (u8)(thermal_value_avg[j] / thermal_value_avg_count[j]); + cali_info->thermal_value_avg_pwrtrk[j] = thermal_value[j]; RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "AVG Thermal Meter = 0x%X, tssi->thermal[%d] = 0x%x\n", thermal_value[j], j, tssi->thermal[j]); @@ -973,11 +983,13 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) if( (*dm->is_scan_in_process == false) && (!iqk_info->rfk_forbidden)) { /* Delta temperature is equal to or larger than 20 centigrade.*/ if (delta_LCK >= c.threshold_iqk) { - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "delta_LCK(%d) >= threshold_iqk(%d)\n", delta_LCK, c.threshold_iqk); + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "delta_LCK(%d) >= c.threshold_iqk(%d)\n", delta_LCK, c.threshold_iqk); cali_info->thermal_value_lck = thermal_value[RF_PATH_A]; /*Use RTLCK, so close power tracking driver LCK*/ - if ((!(dm->support_ic_type & ODM_RTL8814A)) && (!(dm->support_ic_type & ODM_RTL8822B))) { + if ((!(dm->support_ic_type & ODM_RTL8814A)) && + (!(dm->support_ic_type & ODM_RTL8822B)) && + (!(dm->support_ic_type & ODM_RTL8822E))) { if (c.phy_lc_calibrate) (*c.phy_lc_calibrate)(dm); } else @@ -987,20 +999,6 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) /*3 7. If necessary, move the index of swing table to adjust Tx power.*/ for (i = 0; i < c.rf_path_count; i++) { - if (i == RF_PATH_B) { - odm_move_memory(dm, delta_swing_table_idx_tup, delta_swing_table_idx_tup_b, DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, delta_swing_table_idx_tdown, delta_swing_table_idx_tdown_b, DELTA_SWINGIDX_SIZE); - } else if (i == RF_PATH_C) { - odm_move_memory(dm, delta_swing_table_idx_tup, delta_swing_table_idx_tup_c, DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, delta_swing_table_idx_tdown, delta_swing_table_idx_tdown_c, DELTA_SWINGIDX_SIZE); - } else if (i == RF_PATH_D) { - odm_move_memory(dm, delta_swing_table_idx_tup, delta_swing_table_idx_tup_d, DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, delta_swing_table_idx_tdown, delta_swing_table_idx_tdown_d, DELTA_SWINGIDX_SIZE); - } else { - odm_move_memory(dm, delta_swing_table_idx_tup, delta_swing_table_idx_tup_a, DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, delta_swing_table_idx_tdown, delta_swing_table_idx_tdown_a, DELTA_SWINGIDX_SIZE); - } - cali_info->delta_power_index_last[i] = cali_info->delta_power_index[i]; /*recording poer index offset*/ delta[i] = thermal_value[i] > tssi->thermal[i] ? (thermal_value[i] - tssi->thermal[i]) : (tssi->thermal[i] - thermal_value[i]); @@ -1008,18 +1006,69 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) delta[i] = TXPWR_TRACK_TABLE_SIZE - 1; if (thermal_value[i] > tssi->thermal[i]) { + if (i == RF_PATH_B) { + if (delta_swing_table_idx_tup_b) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "delta_swing_table_idx_tup_b[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tup_b[delta[i]], i); + cali_info->delta_power_index[i] = delta_swing_table_idx_tup_b[delta[i]]; + cali_info->absolute_ofdm_swing_idx[i] = delta_swing_table_idx_tup_b[delta[i]]; /*Record delta swing for mix mode power tracking*/ + } + } else if (i == RF_PATH_C) { + if (delta_swing_table_idx_tup_c) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "delta_swing_table_idx_tup_c[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tup_c[delta[i]], i); + cali_info->delta_power_index[i] = delta_swing_table_idx_tup_c[delta[i]]; + cali_info->absolute_ofdm_swing_idx[i] = delta_swing_table_idx_tup_c[delta[i]]; /*Record delta swing for mix mode power tracking*/ + } + } else if (i == RF_PATH_D) { + if (delta_swing_table_idx_tup_d) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "delta_swing_table_idx_tup_d[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tup_d[delta[i]], i); + cali_info->delta_power_index[i] = delta_swing_table_idx_tup_d[delta[i]]; + cali_info->absolute_ofdm_swing_idx[i] = delta_swing_table_idx_tup_d[delta[i]]; /*Record delta swing for mix mode power tracking*/ + } + } else { + if (delta_swing_table_idx_tup_a) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "delta_swing_table_idx_tup_a[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tup_a[delta[i]], i); + cali_info->delta_power_index[i] = delta_swing_table_idx_tup_a[delta[i]]; + cali_info->absolute_ofdm_swing_idx[i] = delta_swing_table_idx_tup_a[delta[i]]; /*Record delta swing for mix mode power tracking*/ + } + } + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "delta_swing_table_idx_tup[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tup[delta[i]], i); - - cali_info->delta_power_index[i] = delta_swing_table_idx_tup[delta[i]]; - cali_info->absolute_ofdm_swing_idx[i] = delta_swing_table_idx_tup[delta[i]]; /*Record delta swing for mix mode power tracking*/ - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "******Temp is higher and cali_info->absolute_ofdm_swing_idx[%d]=%d Path=%d\n", delta[i], cali_info->absolute_ofdm_swing_idx[i], i); + "******Temp is higher and cali_info->absolute_ofdm_swing_idx[%d]=%d Path=%d\n", delta[i], cali_info->absolute_ofdm_swing_idx[i], i); } else { - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "delta_swing_table_idx_tdown[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tdown[delta[i]], i); - cali_info->delta_power_index[i] = -1 * delta_swing_table_idx_tdown[delta[i]]; - cali_info->absolute_ofdm_swing_idx[i] = -1 * delta_swing_table_idx_tdown[delta[i]]; /*Record delta swing for mix mode power tracking*/ + if (i == RF_PATH_B) { + if (delta_swing_table_idx_tdown_b) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "delta_swing_table_idx_tdown_b[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tdown_b[delta[i]], i); + cali_info->delta_power_index[i] = -1 * delta_swing_table_idx_tdown_b[delta[i]]; + cali_info->absolute_ofdm_swing_idx[i] = -1 * delta_swing_table_idx_tdown_b[delta[i]]; /*Record delta swing for mix mode power tracking*/ + } + } else if (i == RF_PATH_C) { + if (delta_swing_table_idx_tdown_c) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "delta_swing_table_idx_tdown_c[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tdown_c[delta[i]], i); + cali_info->delta_power_index[i] = -1 * delta_swing_table_idx_tdown_c[delta[i]]; + cali_info->absolute_ofdm_swing_idx[i] = -1 * delta_swing_table_idx_tdown_c[delta[i]]; /*Record delta swing for mix mode power tracking*/ + } + } else if (i == RF_PATH_D) { + if (delta_swing_table_idx_tdown_d) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "delta_swing_table_idx_tdown_d[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tdown_d[delta[i]], i); + cali_info->delta_power_index[i] = -1 * delta_swing_table_idx_tdown_d[delta[i]]; + cali_info->absolute_ofdm_swing_idx[i] = -1 * delta_swing_table_idx_tdown_d[delta[i]]; /*Record delta swing for mix mode power tracking*/ + } + } else { + if (delta_swing_table_idx_tdown_a) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "delta_swing_table_idx_tdown_a[%d]=%d Path=%d\n", delta[i], delta_swing_table_idx_tdown_a[delta[i]], i); + cali_info->delta_power_index[i] = -1 * delta_swing_table_idx_tdown_a[delta[i]]; + cali_info->absolute_ofdm_swing_idx[i] = -1 * delta_swing_table_idx_tdown_a[delta[i]]; /*Record delta swing for mix mode power tracking*/ + } + } + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "******Temp is lower and cali_info->absolute_ofdm_swing_idx[%d]=%d Path=%d\n", delta[i], cali_info->absolute_ofdm_swing_idx[i], i); } @@ -1052,7 +1101,7 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) tracking_method = TSSI_MODE; } } else { - if (rf->power_track_type >= 0 && rf->power_track_type <= 3) { + if (rf->power_track_type <= 3) { RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "**********Enter POWER Tracking MIX_MODE**********\n"); tracking_method = MIX_MODE; } else if (rf->power_track_type >= 4 && rf->power_track_type <= 7) { @@ -1061,7 +1110,7 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) } } - if (dm->support_ic_type == ODM_RTL8822C || dm->support_ic_type == ODM_RTL8814B) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8822E)) for (p = RF_PATH_A; p < c.rf_path_count; p++) (*c.odm_tx_pwr_track_set_pwr)(dm, tracking_method, p, 0); diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ce.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ce.h index e7945c690..bcbf2784e 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ce.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_ce.h @@ -26,7 +26,7 @@ #ifndef __HALPHYRF_H__ #define __HALPHYRF_H__ -#include "../halrf/halrf_kfree.h" +#include "halrf_kfree.h" #if (RTL8814A_SUPPORT == 1) #include "halrf/rtl8814a/halrf_iqk_8814a.h" #endif @@ -52,7 +52,7 @@ #include "halrf/rtl8814b/halrf_txgapk_8814b.h" #endif -#include "../halrf/halrf_powertracking_ce.h" +#include "halrf_powertracking_ce.h" enum spur_cal_method { PLL_RESET, @@ -83,6 +83,7 @@ struct txpwrtrack_cfg { u8 swing_table_size_ofdm; u8 threshold_iqk; u8 threshold_dpk; + u8 threshold_lck; u8 average_thermal_num; u8 rf_path_count; u32 thermal_reg_addr; @@ -108,7 +109,7 @@ void odm_txpowertracking_callback_thermal_meter(void *dm); void odm_txpowertracking_callback_thermal_meter(void *adapter); #endif -#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1) +#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8822E_SUPPORT == 1) void odm_txpowertracking_new_callback_thermal_meter(void *dm_void); #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_iot.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_iot.c index 66baf71f6..d81081237 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_iot.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_iot.c @@ -57,6 +57,14 @@ void configure_txpower_track( if (dm->support_ic_type == ODM_RTL8721D) configure_txpower_track_8721d(config); #endif +#if RTL8730A_SUPPORT + if (dm->support_ic_type == ODM_RTL8730A) + configure_txpower_track_8730a(config); +#endif +#if RTL8735B_SUPPORT + if (dm->support_ic_type == ODM_RTL8735B) + configure_txpower_track_8735b(config); +#endif } @@ -78,6 +86,8 @@ odm_clear_txpowertracking_state( u8 p = 0; struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "======>%s\n", __func__); + cali_info->bb_swing_idx_cck_base = cali_info->default_cck_index; cali_info->bb_swing_idx_cck = cali_info->default_cck_index; dm->rf_calibrate_info.CCK_index = 0; @@ -126,6 +136,7 @@ odm_txpowertracking_callback_thermal_meter( u8 xtal_offset_eanble = 0; s8 thermal_value_temp = 0; u8 xtal_track_efuse = 0; + u8 tracking_method = TSSI_MODE; struct txpwrtrack_cfg c = {0}; @@ -144,6 +155,8 @@ odm_txpowertracking_callback_thermal_meter( s8 *delta_swing_table_xtal_up = NULL; s8 *delta_swing_table_xtal_down = NULL; + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "======>%s\n", __func__); + /* 4 2. Initialization ( 7 steps in total ) */ indexforchannel = odm_get_right_chnl_place_for_iqk(*dm->channel); configure_txpower_track(dm, &c); @@ -163,7 +176,8 @@ odm_txpowertracking_callback_thermal_meter( xtal_track_efuse = xtal_track_efuse & 0x3; if (dm->support_ic_type == ODM_RTL8195B || dm->support_ic_type == ODM_RTL8721D || - (dm->support_ic_type == ODM_RTL8710C && xtal_track_efuse == 0x2)) + (dm->support_ic_type == ODM_RTL8710C && xtal_track_efuse == 0x2) || + dm->support_ic_type == ODM_RTL8735B) (*c.get_delta_swing_xtal_table)(dm, (s8 **)&delta_swing_table_xtal_up, (s8 **)&delta_swing_table_xtal_down); @@ -186,7 +200,14 @@ odm_txpowertracking_callback_thermal_meter( thermal_value = (u8)odm_get_rf_reg(dm, RF_PATH_A, c.thermal_reg_addr, 0x7e0); /* 0x42: RF Reg[10:5] 8721D */ - else + else if (dm->support_ic_type == ODM_RTL8735B) { + thermal_value = (u8)odm_get_rf_reg(dm, RF_PATH_A, + c.thermal_reg_addr, 0x1f8); + if (thermal_value == 0) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "Get Current Thermal == 0, Return !!!\n"); + } + } else thermal_value = (u8)odm_get_rf_reg(dm, RF_PATH_A, c.thermal_reg_addr, 0xfc00); /* 0x42: RF Reg[15:10] 88E */ @@ -232,6 +253,7 @@ odm_txpowertracking_callback_thermal_meter( if (thermal_value_avg_count) { /* Calculate Average thermal_value after average enough times */ thermal_value = (u8)(thermal_value_avg / thermal_value_avg_count); cali_info->thermal_value_delta = thermal_value - rf->eeprom_thermal; + cali_info->thermal_current_avg_value = thermal_value; RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "AVG Thermal Meter = 0x%X, EFUSE Thermal base = 0x%X\n", thermal_value, rf->eeprom_thermal); } @@ -259,7 +281,7 @@ odm_txpowertracking_callback_thermal_meter( } /*3 7. If necessary, move the index of swing table to adjust Tx power.*/ - if (delta > 0 && cali_info->txpowertrack_control) { + if (cali_info->txpowertrack_control) { /* "delta" here is used to record the absolute value of difference. */ delta = thermal_value > rf->eeprom_thermal ? (thermal_value - rf->eeprom_thermal) : (rf->eeprom_thermal - thermal_value); @@ -285,11 +307,9 @@ odm_txpowertracking_callback_thermal_meter( cali_info->absolute_cck_swing_idx[p]); #endif cali_info->delta_power_index[p] = - delta_swing_table_idx_tup_b - [delta]; + delta_swing_table_idx_tup_b[delta]; cali_info->absolute_ofdm_swing_idx[p] = - delta_swing_table_idx_tup_b - [delta]; + delta_swing_table_idx_tup_b[delta]; /*Record delta swing for mix mode*/ RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "******Temp is higher and cali_info->absolute_ofdm_swing_idx[RF_PATH_B] = %d\n", cali_info->absolute_ofdm_swing_idx[p]); @@ -307,9 +327,10 @@ odm_txpowertracking_callback_thermal_meter( RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "******Temp is higher and cali_info->absolute_cck_swing_idx[RF_PATH_A] = %d\n", cali_info->absolute_cck_swing_idx[p]); #endif - cali_info->delta_power_index[p] = delta_swing_table_idx_tup_a[delta]; + cali_info->delta_power_index[p] = + delta_swing_table_idx_tup_a[delta]; cali_info->absolute_ofdm_swing_idx[p] = - delta_swing_table_idx_tup_a[delta]; + delta_swing_table_idx_tup_a[delta]; /*Record delta swing*/ /*for mix mode power tracking*/ RF_DBG(dm, DBG_RF_TX_PWR_TRACK, @@ -320,7 +341,8 @@ odm_txpowertracking_callback_thermal_meter( /* JJ ADD 20161014 */ if (dm->support_ic_type == ODM_RTL8195B || dm->support_ic_type == ODM_RTL8721D || - (dm->support_ic_type == ODM_RTL8710C && xtal_track_efuse == 0x2)) { + (dm->support_ic_type == ODM_RTL8710C && xtal_track_efuse == 0x2) || + dm->support_ic_type == ODM_RTL8735B) { /*Save xtal_offset from Xtal table*/ cali_info->xtal_offset_last = cali_info->xtal_offset; /*recording last Xtal offset*/ RF_DBG(dm, DBG_RF_TX_PWR_TRACK, @@ -375,7 +397,8 @@ odm_txpowertracking_callback_thermal_meter( if (dm->support_ic_type == ODM_RTL8195B || dm->support_ic_type == ODM_RTL8721D || - (dm->support_ic_type == ODM_RTL8710C && xtal_track_efuse == 0x2)) { + (dm->support_ic_type == ODM_RTL8710C && xtal_track_efuse == 0x2) || + dm->support_ic_type == ODM_RTL8735B) { /*Save xtal_offset from Xtal table*/ cali_info->xtal_offset_last = cali_info->xtal_offset; /*recording last Xtal offset*/ RF_DBG(dm, DBG_RF_TX_PWR_TRACK, @@ -384,48 +407,6 @@ odm_txpowertracking_callback_thermal_meter( xtal_offset_eanble = (cali_info->xtal_offset_last != cali_info->xtal_offset); } } -#if 0 - for (p = RF_PATH_A; p < c.rf_path_count; p++) { - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "\n\n=========================== [path-%d] Calculating power_index_offset===========================\n", p); - - if (cali_info->delta_power_index[p] == cali_info->delta_power_index_last[p]) /*If Thermal value changes but lookup table value still the same*/ - cali_info->power_index_offset[p] = 0; - else - cali_info->power_index_offset[p] = cali_info->delta_power_index[p] - cali_info->delta_power_index_last[p]; /*Power index diff between 2 times Power Tracking*/ - - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "[path-%d] power_index_offset(%d) = delta_power_index(%d) - delta_power_index_last(%d)\n", p, cali_info->power_index_offset[p], cali_info->delta_power_index[p], cali_info->delta_power_index_last[p]); - - cali_info->OFDM_index[p] = cali_info->bb_swing_idx_ofdm_base[p] + cali_info->power_index_offset[p]; - cali_info->CCK_index = cali_info->bb_swing_idx_cck_base + cali_info->power_index_offset[p]; - - cali_info->bb_swing_idx_cck = cali_info->CCK_index; - cali_info->bb_swing_idx_ofdm[p] = cali_info->OFDM_index[p]; - - /*************Print BB Swing base and index Offset*************/ - - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "The 'CCK' final index(%d) = BaseIndex(%d) + power_index_offset(%d)\n", cali_info->bb_swing_idx_cck, cali_info->bb_swing_idx_cck_base, cali_info->power_index_offset[p]); - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "The 'OFDM' final index(%d) = BaseIndex[%d](%d) + power_index_offset(%d)\n", cali_info->bb_swing_idx_ofdm[p], p, cali_info->bb_swing_idx_ofdm_base[p], cali_info->power_index_offset[p]); - - /*4 7.1 Handle boundary conditions of index.*/ - - if (cali_info->OFDM_index[p] > c.swing_table_size_ofdm - 1) - cali_info->OFDM_index[p] = c.swing_table_size_ofdm - 1; - else if (cali_info->OFDM_index[p] <= OFDM_min_index) - cali_info->OFDM_index[p] = OFDM_min_index; - } - - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "\n\n========================================================================================================\n"); - - if (cali_info->CCK_index > c.swing_table_size_cck - 1) - cali_info->CCK_index = c.swing_table_size_cck - 1; - else if (cali_info->CCK_index <= 0) - cali_info->CCK_index = 0; -#endif } else { RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "The thermal meter is unchanged or TxPowerTracking OFF(%d): thermal_value: %d, cali_info->thermal_value: %d\n", @@ -434,17 +415,6 @@ odm_txpowertracking_callback_thermal_meter( for (p = RF_PATH_A; p < c.rf_path_count; p++) cali_info->power_index_offset[p] = 0; } -#if 0 - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "TxPowerTracking: [CCK] Swing Current index: %d, Swing base index: %d\n", - cali_info->CCK_index, cali_info->bb_swing_idx_cck_base); /*Print Swing base & current*/ - - for (p = RF_PATH_A; p < c.rf_path_count; p++) { - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, - "TxPowerTracking: [OFDM] Swing Current index: %d, Swing base index[%d]: %d\n", - cali_info->OFDM_index[p], p, cali_info->bb_swing_idx_ofdm_base[p]); - } -#endif #if (RTL8721D_SUPPORT == 1) if (thermal_value != cali_info->thermal_value) { @@ -472,10 +442,36 @@ odm_txpowertracking_callback_thermal_meter( "cali_info->thermal_value = %d thermal_value= %d\n", cali_info->thermal_value, thermal_value); /*Record last Power Tracking Thermal value*/ - cali_info->thermal_value = thermal_value; + if(!dm->mp_mode) + cali_info->thermal_value = thermal_value; } #else + + if (dm->support_ic_type == ODM_RTL8735B) { + if (*dm->mp_mode == 1) { + if (cali_info->txpowertrack_control == 1) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "**********Enter POWER Tracking MIX_MODE**********\n"); + tracking_method = MIX_MODE; + } else if (cali_info->txpowertrack_control == 3) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "**********Enter POWER Tracking TSSI_MODE**********\n"); + tracking_method = TSSI_MODE; + } + } else { + if (rf->power_track_type >= 0 && rf->power_track_type <= 3) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "**********Enter POWER Tracking MIX_MODE**********\n"); + tracking_method = MIX_MODE; + } else if (rf->power_track_type >= 4 && rf->power_track_type <= 7) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, + "**********Enter POWER Tracking TSSI_MODE**********\n"); + tracking_method = TSSI_MODE; + } + } + } + if (thermal_value > rf->eeprom_thermal) { RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "Temperature(%d) higher than PG value(%d)\n", thermal_value, rf->eeprom_thermal); @@ -498,6 +494,11 @@ odm_txpowertracking_callback_thermal_meter( RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "**********Enter POWER Tracking MIX_MODE**********\n"); for (p = RF_PATH_A; p < c.rf_path_count; p++) (*c.odm_tx_pwr_track_set_pwr)(dm, MIX_MODE, p, 0); + } else if (dm->support_ic_type == ODM_RTL8735B) { + for (p = RF_PATH_A; p < c.rf_path_count; p++) { + (*c.odm_tx_pwr_track_set_pwr)(dm, tracking_method, p, 0); + (*c.halrf_pa_dynamic_bias)(dm, p, (s8)(thermal_value - rf->eeprom_thermal)); + } } else { RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "**********Enter POWER Tracking BBSWING_MODE**********\n"); for (p = RF_PATH_A; p < c.rf_path_count; p++) @@ -525,6 +526,10 @@ odm_txpowertracking_callback_thermal_meter( RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "**********Enter POWER Tracking MIX_MODE**********\n"); for (p = RF_PATH_A; p < c.rf_path_count; p++) (*c.odm_tx_pwr_track_set_pwr)(dm, MIX_MODE, p, indexforchannel); + } else if (dm->support_ic_type == ODM_RTL8735B) { + for (p = RF_PATH_A; p < c.rf_path_count; p++) + (*c.odm_tx_pwr_track_set_pwr)(dm, tracking_method, p, 0); + (*c.halrf_pa_dynamic_bias)(dm, p, (s8)(thermal_value - rf->eeprom_thermal)); } else { RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "**********Enter POWER Tracking BBSWING_MODE**********\n"); for (p = RF_PATH_A; p < c.rf_path_count; p++) @@ -551,8 +556,9 @@ odm_txpowertracking_callback_thermal_meter( xtal_offset_eanble, cali_info->txpowertrack_control, rf->eeprom_thermal, xtal_track_efuse); if (dm->support_ic_type == ODM_RTL8195B || - dm->support_ic_type == ODM_RTL8721D || - (dm->support_ic_type == ODM_RTL8710C && xtal_track_efuse == 0x2)) { + dm->support_ic_type == ODM_RTL8721D || + (dm->support_ic_type == ODM_RTL8710C && xtal_track_efuse == 0x2) || + dm->support_ic_type == ODM_RTL8735B) { if (xtal_offset_eanble != 0 && cali_info->txpowertrack_control && (rf->eeprom_thermal != 0xff)) { RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "**********Enter Xtal Tracking**********\n"); @@ -576,7 +582,8 @@ odm_txpowertracking_callback_thermal_meter( cali_info->thermal_value_iqk = thermal_value; RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "delta_IQK(%d) >= threshold_iqk(%d)\n", delta_IQK, c.threshold_iqk); if (!cali_info->is_iqk_in_progress) - (*c.do_iqk)(dm, delta_IQK, thermal_value, 8); + if (dm->support_ic_type != ODM_RTL8735B) + (*c.do_iqk)(dm, delta_IQK, thermal_value, 8); } } #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_iot.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_iot.h index 8d4395a1f..d4fe94f02 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_iot.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_iot.h @@ -76,12 +76,14 @@ typedef void (*func_lck)(void *); typedef void (*func_swing8814only)(void *, u8 **, u8 **, u8 **, u8 **); typedef void(*func_swing_xtal)(void *, s8 **, s8 **); typedef void(*func_set_xtal)(void *); +typedef void(*func_pa_dynamic_bias)(void *, u8, s8); struct txpwrtrack_cfg { u8 swing_table_size_cck; u8 swing_table_size_ofdm; u8 threshold_iqk; u8 threshold_dpk; + u8 threshold_lck; u8 average_thermal_num; u8 rf_path_count; u32 thermal_reg_addr; @@ -92,6 +94,7 @@ struct txpwrtrack_cfg { func_swing8814only get_delta_swing_table8814only; func_swing_xtal get_delta_swing_xtal_table; func_set_xtal odm_txxtaltrack_set_xtal; + func_pa_dynamic_bias halrf_pa_dynamic_bias; }; void diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_win.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_win.c index 4c418da68..8b7e7d685 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_win.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_win.c @@ -119,6 +119,10 @@ void configure_txpower_track( configure_txpower_track_8814c(config); #endif +#if RTL8822E_SUPPORT + if (dm->support_ic_type == ODM_RTL8822E) + configure_txpower_track_8822e(config); +#endif } @@ -766,7 +770,8 @@ odm_txpowertracking_callback_thermal_meter( cali_info->tx_powercount = 0; } -#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8723F_SUPPORT == 1 || RTL8814C_SUPPORT == 1) +#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8723F_SUPPORT == 1 ||\ + RTL8814C_SUPPORT == 1 || RTL8822E_SUPPORT == 1) void odm_txpowertracking_new_callback_thermal_meter(void *dm_void) { @@ -816,7 +821,7 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) "cali_info->txpowertrack_control=%d, tssi->thermal[RF_PATH_A]=%d tssi->thermal[RF_PATH_B]=%d\n", cali_info->txpowertrack_control, tssi->thermal[RF_PATH_A], tssi->thermal[RF_PATH_B]); - if (dm->support_ic_type == ODM_RTL8822C) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) { for (i = 0; i < c.rf_path_count; i++) thermal_value[i] = (u8)odm_get_rf_reg(dm, i, c.thermal_reg_addr, 0x7e); /* 0x42: RF Reg[6:1] Thermal Trim*/ } else { @@ -865,6 +870,7 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) if (thermal_value_avg_count[j]) { /* Calculate Average thermal_value after average enough times */ thermal_value[j] = (u8)(thermal_value_avg[j] / thermal_value_avg_count[j]); + cali_info->thermal_value_avg_pwrtrk[j] = thermal_value[j]; RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "AVG Thermal Meter = 0x%X, tssi->thermal[%d] = 0x%x\n", thermal_value[j], j, tssi->thermal[j]); @@ -886,13 +892,14 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) if( (*dm->is_scan_in_process == false) && (!iqk_info->rfk_forbidden)) { /* Delta temperature is equal to or larger than 20 centigrade.*/ if (delta_LCK >= c.threshold_iqk) { - RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "delta_LCK(%d) >= threshold_iqk(%d)\n", delta_LCK, c.threshold_iqk); + RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "delta_LCK(%d) >= c.threshold_iqk(%d)\n", delta_LCK, c.threshold_iqk); cali_info->thermal_value_lck = thermal_value[RF_PATH_A]; /*Use RTLCK, so close power tracking driver LCK*/ if ((!(dm->support_ic_type & ODM_RTL8814A)) && (!(dm->support_ic_type & ODM_RTL8822B)) && - (!(dm->support_ic_type & ODM_RTL8723F))) { + (!(dm->support_ic_type & ODM_RTL8723F)) && + (!(dm->support_ic_type & ODM_RTL8822E))) { if (c.phy_lc_calibrate) (*c.phy_lc_calibrate)(dm); } else @@ -976,7 +983,7 @@ odm_txpowertracking_new_callback_thermal_meter(void *dm_void) } } - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8814C)) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8814C | ODM_RTL8822E)) for (p = RF_PATH_A; p < c.rf_path_count; p++) (*c.odm_tx_pwr_track_set_pwr)(dm, tracking_method, p, 0); diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_win.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_win.h index 0d5fc97a5..94c5533df 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_win.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halphyrf_win.h @@ -73,6 +73,7 @@ struct txpwrtrack_cfg { u8 swing_table_size_ofdm; u8 threshold_iqk; u8 threshold_dpk; + u8 threshold_lck; u8 average_thermal_num; u8 rf_path_count; u32 thermal_reg_addr; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf.c index 0c7e7a926..8f2aa65f8 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf.c @@ -35,7 +35,8 @@ RTL8195B_SUPPORT == 1 || RTL8198F_SUPPORT == 1 ||\ RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\ RTL8812F_SUPPORT == 1 || RTL8710C_SUPPORT == 1 ||\ - RTL8197G_SUPPORT == 1 || RTL8814C_SUPPORT == 1 ) + RTL8197G_SUPPORT == 1 || RTL8814C_SUPPORT == 1 ||\ + RTL8735B_SUPPORT == 1 || RTL8822E_SUPPORT == 1) void _iqk_check_if_reload(void *dm_void) { @@ -443,11 +444,11 @@ void halrf_iqk_dbg(void *dm_void) dm->rf_calibrate_info.iqk_progressing_time, "(ms)"); tmp = odm_read_4byte(dm, 0x1bf0); - for (rf_path = RF_PATH_A; rf_path <= RF_PATH_B; rf_path++) + for (rf_path = RF_PATH_A; rf_path < NUM; rf_path++) { for (j = 0; j < 2; j++) iqk_result[0][rf_path][j] = (boolean) - (tmp & (BIT(rf_path + (j * 4)) >> (rf_path + (j * 4)))); - + (tmp & (BIT(rf_path + (j * 4)) >> (rf_path + (j * 4)))); + } RF_DBG(dm, DBG_RF_IQK, "%-20s: 0x%08x\n", "Reg0x1bf0", tmp); RF_DBG(dm, DBG_RF_IQK, "%-20s: 0x%08x\n", "Reg0x1be8", odm_read_4byte(dm, 0x1be8)); @@ -865,8 +866,7 @@ void halrf_support_ability_debug(void *dm_void, char input[][16], u32 *_used, u8 i; for (i = 0; i < 5; i++) - if (input[i + 1]) - PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &dm_value[i]); + PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &dm_value[i]); if (dm_value[0] == 100) { PDM_SNPF(out_len, used, output + used, out_len - used, @@ -906,10 +906,20 @@ void halrf_support_ability_debug(void *dm_void, char input[][16], u32 *_used, ("."))); #endif PDM_SNPF(out_len, used, output + used, out_len - used, - "08. (( %s ))HAL_RF_RXDCK\n", + "08. (( %s ))RXDCK\n", ((rf->rf_supportability & HAL_RF_RXDCK) ? ("V") : ("."))); + PDM_SNPF(out_len, used, output + used, out_len - used, + "10. (( %s ))PA Dynamic Bias\n", + ((rf->rf_supportability & HAL_RF_PA_DYNAMIC_BIAS) ? ("V") : + ("."))); + + PDM_SNPF(out_len, used, output + used, out_len - used, + "11. (( %s ))RX SPUR K\n", + ((rf->rf_supportability & HAL_RF_RX_SPURK) ? ("V") : + ("."))); + } else { if (dm_value[1] == 1) /* enable */ rf->rf_supportability |= BIT(dm_value[0]); @@ -959,6 +969,10 @@ void halrf_support_band_shift_debug(void *dm_void, char input[][16], u32 *_used, PDM_SNPF(out_len, used, output + used, out_len - used, "\n[rf_shift_band] = %d\nRF Band Shift to 2.5G!\n", rf->rf_shift_band); + } else if(dm_value[0] == 03) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "\n[rf_shift_band] = %d\nRF Band (0=>2.4;1=>2.3;2=>2.5)\n", + rf->rf_shift_band); } else { rf->rf_shift_band = HAL_RF_2P4; halrf_lck_trigger(dm); @@ -1051,7 +1065,6 @@ void halrf_cmn_info_set(void *dm_void, u32 cmn_info, u64 value) case HALRF_CMNINFO_RATE_INDEX: rf->p_rate_index = (u32)value; break; -#if !(DM_ODM_SUPPORT_TYPE & ODM_IOT) case HALRF_CMNINFO_MP_PSD_POINT: rf->halrf_psd_data.point = (u32)value; break; @@ -1064,7 +1077,6 @@ void halrf_cmn_info_set(void *dm_void, u32 cmn_info, u64 value) case HALRF_CMNINFO_MP_PSD_AVERAGE: rf->halrf_psd_data.average = (u32)value; break; -#endif case HALRF_CMNINFO_POWER_TRACK_CONTROL: cali_info->txpowertrack_control = (u8)value; break; @@ -1207,7 +1219,7 @@ void halrf_supportability_init_mp(void *dm_void) HAL_RF_DPK | /*@HAL_RF_TXGAPK |*/ #ifdef CONFIG_2G_BAND_SHIFT - /*@HAL_2GBAND_SHIFT |*/ + HAL_2GBAND_SHIFT | #endif 0; break; @@ -1260,8 +1272,8 @@ void halrf_supportability_init_mp(void *dm_void) 0; break; #endif - case ODM_RTL8814C: #if (RTL8814C_SUPPORT == 1) + case ODM_RTL8814C: rf->rf_supportability = /*HAL_RF_TX_PWR_TRACK |*/ HAL_RF_IQK | @@ -1271,8 +1283,50 @@ void halrf_supportability_init_mp(void *dm_void) HAL_RF_TXGAPK | HAL_RF_DPK_TRACK | 0; + break; +#endif +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + rf->rf_supportability = + /*HAL_RF_TX_PWR_TRACK |*/ + HAL_RF_IQK | + /*HAL_RF_LCK |*/ + HAL_RF_DPK | + /*HAL_RF_TXGAPK |*/ + /*HAL_RF_DPK_TRACK |*/ + 0; + break; +#endif +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + rf->rf_supportability = + /*HAL_RF_TX_PWR_TRACK |*/ + HAL_RF_IQK | + HAL_RF_LCK | + HAL_RF_DPK | + HAL_RF_TXGAPK | + HAL_RF_DACK | + HAL_RF_DPK_TRACK | + HAL_RF_RXDCK | + /*HAL_RF_PA_DYNAMIC_BIAS |*/ + 0; + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + rf->rf_supportability = + /*HAL_RF_TX_PWR_TRACK |*/ + HAL_RF_IQK | + HAL_RF_LCK | + HAL_RF_DPK | + HAL_RF_DACK | + HAL_RF_DPK_TRACK | + HAL_RF_RXDCK | + HAL_RF_TXGAPK | + HAL_RF_RX_SPURK | + 0; + break; #endif - break; default: rf->rf_supportability = @@ -1389,7 +1443,7 @@ void halrf_supportability_init(void *dm_void) HAL_RF_DPK | /*@HAL_RF_TXGAPK |*/ #ifdef CONFIG_2G_BAND_SHIFT - /*@HAL_2GBAND_SHIFT |*/ + HAL_2GBAND_SHIFT | #endif 0; break; @@ -1445,8 +1499,8 @@ void halrf_supportability_init(void *dm_void) 0; break; #endif - case ODM_RTL8814C: #if (RTL8814C_SUPPORT == 1) + case ODM_RTL8814C: rf->rf_supportability = HAL_RF_TX_PWR_TRACK | HAL_RF_IQK | @@ -1456,8 +1510,50 @@ void halrf_supportability_init(void *dm_void) HAL_RF_DPK_TRACK | HAL_RF_TXGAPK | 0; -#endif break; +#endif +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + rf->rf_supportability = + /*HAL_RF_TX_PWR_TRACK |*/ + HAL_RF_IQK | + /*HAL_RF_LCK |*/ + HAL_RF_DPK | + /*HAL_RF_TXGAPK |*/ + /*HAL_RF_DPK_TRACK |*/ + 0; + break; +#endif +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + rf->rf_supportability = + HAL_RF_TX_PWR_TRACK | + HAL_RF_IQK | + HAL_RF_LCK | + HAL_RF_DPK | + HAL_RF_TXGAPK | + HAL_RF_DACK | + HAL_RF_DPK_TRACK | + HAL_RF_RXDCK | + /*HAL_RF_PA_DYNAMIC_BIAS |*/ + 0; + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + rf->rf_supportability = + HAL_RF_TX_PWR_TRACK | + HAL_RF_IQK | + HAL_RF_LCK | + HAL_RF_DPK | + HAL_RF_DACK | + HAL_RF_DPK_TRACK | + HAL_RF_RXDCK | + HAL_RF_TXGAPK | + HAL_RF_RX_SPURK | + 0; + break; +#endif default: rf->rf_supportability = @@ -1465,6 +1561,7 @@ void halrf_supportability_init(void *dm_void) HAL_RF_IQK | HAL_RF_LCK | /*@HAL_RF_DPK |*/ + /*HAL_RF_RXDCK |*/ 0; break; } @@ -1482,18 +1579,21 @@ void halrf_watchdog(void *dm_void) /*RF_DBG(dm, DBG_RF_TMP, "%s\n", __func__);*/ #endif if (rf->is_dpk_in_progress || dm->rf_calibrate_info.is_iqk_in_progress || - rf->is_tssi_in_progress) + rf->is_tssi_in_progress || rf->is_rxspurk_in_progress) return; if (!(dm->support_ic_type & ODM_RTL8723F)) phydm_rf_watchdog(dm); + if (dm->support_ic_type & ODM_RTL8822E) + halrf_lck_track(dm); + halrf_dpk_track(dm); #if (RTL8723F_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8723F){ halrf_xtal_thermal_track(dm); - halrf_powertracking_thermal(dm); - } + halrf_powertracking_thermal(dm); + } #endif } @@ -1553,6 +1653,11 @@ void halrf_rfk_power_save(void *dm_void, boolean is_power_save) case ODM_RTL8814C: break; #endif +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + halrf_rfk_power_save_8730a(dm, is_power_save); + break; +#endif default: break; @@ -1623,7 +1728,16 @@ void halrf_rfk_handshake(void *dm_void, boolean is_before_k) case ODM_RTL8814C: break; #endif - +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + halrf_rfk_handshake_8730a(dm, is_before_k); + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_rfk_handshake_8822e(dm, is_before_k); + break; +#endif default: break; } @@ -1645,7 +1759,11 @@ void halrf_bbreset(void *dm_void) phydm_bb_reset_8814c(dm); break; #endif - +#if (RTL8812F_SUPPORT == 1) + case ODM_RTL8812F: + phydm_bb_reset_8812f(dm); + break; +#endif default: break; } @@ -1669,6 +1787,23 @@ void halrf_rf_k_connect_trigger(void *dm_void, boolean is_recovery, return; } +// if(dm->support_ic_type == ODM_RTL8822E) +// halrf_dack_trigger(dm, false); + +#if (RTL8723F_SUPPORT == 1) + if(dm->support_ic_type == ODM_RTL8723F) { + rf->reg1c68 = odm_get_bb_reg(dm,0x1c68,MASKDWORD); + rf->reg2a24 = odm_get_bb_reg(dm,0x2a24,MASKDWORD); + halrf_dis_cca_8723f(dm, true); + } +#endif + + /*[RX Spur K]*/ + halrf_rxspurk_trigger(dm); + + /*[RX DCK]*/ + halrf_rx_dck_trigger(dm); + /*[TX GAP K]*/ halrf_txgapk_trigger(dm); @@ -1690,6 +1825,12 @@ void halrf_rf_k_connect_trigger(void *dm_void, boolean is_recovery, halrf_spur_compensation(dm); halrf_bbreset(dm); + +#if (RTL8723F_SUPPORT == 1) + if(dm->support_ic_type == ODM_RTL8723F) + halrf_dis_cca_8723f(dm, false); +#endif + } void config_halrf_path_adda_setting_trigger(void *dm_void) @@ -1764,7 +1905,16 @@ void halrf_dack_trigger(void *dm_void, boolean force) halrf_dac_cal_8814c(dm); break; #endif - +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_afedck_8735b(dm); + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_dac_cal_8822e(dm, force); + break; +#endif default: break; } @@ -1961,12 +2111,26 @@ void halrf_segment_iqk_trigger(void *dm_void, boolean clear, phy_iq_calibrate_8814c(dm, clear, segment_iqk); break; #endif - +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + phy_iq_calibrate_8730a(dm, false); + break; +#endif +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + phy_iq_calibrate_8735b(dm, clear, segment_iqk); + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + phy_iq_calibrate_8822e(dm, clear, segment_iqk); + break; +#endif default: break; } - + halrf_rfk_power_save(dm, true); dm->rf_calibrate_info.iqk_progressing_time = odm_get_progressing_time(dm, start_time); @@ -2149,6 +2313,21 @@ void halrf_iqk_trigger(void *dm_void, boolean is_recovery) phy_iq_calibrate_8814c(dm, false, false); break; #endif +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + phy_iq_calibrate_8730a(dm, false); + break; +#endif +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + phy_iq_calibrate_8735b(dm, false, false); + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + phy_iq_calibrate_8822e(dm, false, false); + break; +#endif default: break; @@ -2326,8 +2505,21 @@ void halrf_lck_trigger(void *dm_void) phy_lc_calibrate_8814c(dm); break; #endif - - +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + phy_lc_calibrate_8730a(dm); + break; +#endif +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + phy_lc_calibrate_8735b(dm); + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + phy_lc_calibrate_8822e(dm); + break; +#endif default: break; } @@ -2347,6 +2539,34 @@ void halrf_lck_trigger(void *dm_void) } } +void halrf_lck_track(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + + if (rf->is_dpk_in_progress || dm->rf_calibrate_info.is_iqk_in_progress || + dm->is_psd_in_process || + !(rf->rf_supportability & HAL_RF_LCK) || rf->is_tssi_in_progress + || rf->is_txgapk_in_progress) + return; + +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + if (*dm->is_fcs_mode_enable) + return; +#endif + + switch (dm->support_ic_type) { +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_lck_track_8822e(dm); + break; +#endif + + default: + break; + } +} + void halrf_aac_check(struct dm_struct *dm) { switch (dm->support_ic_type) { @@ -2369,7 +2589,99 @@ void halrf_aac_check(struct dm_struct *dm) } } -void halrf_rxdck(void *dm_void) +void halrf_rck_trigger(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + +#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) + if (odm_check_power_status(dm) == false) + return; +#endif + + if (!dm->mp_mode) + return; + + if (dm->mp_mode && rf->is_con_tx && rf->is_single_tone && + rf->is_carrier_suppresion) { + if (*dm->mp_mode & + (*rf->is_con_tx || *rf->is_single_tone || + *rf->is_carrier_suppresion)) + return; + } + + switch (dm->support_ic_type) { +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_rck_8735b(dm); + break; +#endif + default: + break; + } +} + +void halrf_rx_dck_trigger(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + + u64 start_time; + +#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) + if (odm_check_power_status(dm) == false) + return; +#endif + + if (!dm->mp_mode) + return; + + if (dm->mp_mode && rf->is_con_tx && rf->is_single_tone && + rf->is_carrier_suppresion) { + if (*dm->mp_mode & + (*rf->is_con_tx || *rf->is_single_tone || + *rf->is_carrier_suppresion)) + return; + } + + if (!(rf->rf_supportability & HAL_RF_RXDCK)) + return; + + rf->rfk_type = RF08_RXDCK; + halrf_rfk_handshake(dm, true); + + start_time = odm_get_current_time(dm); + + switch (dm->support_ic_type) { +#if 0 + case ODM_RTL8822C: +#if (RTL8822C_SUPPORT == 1) + halrf_rxdck_8822c(dm); + break; +#endif +#endif +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_rx_dck_8735b(dm); + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_rx_dck_8822e(dm); + break; +#endif + default: + break; + } + + rf->rxdck_progressing_time = odm_get_progressing_time(dm, start_time); + RF_DBG(dm, DBG_RF_RXDCK, "[RX_DCK]RXDCK progressing_time = %lld ms\n", + rf->rxdck_progressing_time); + + halrf_rfk_handshake(dm, false); +} + +void halrf_rx_dck_enable_disable(void *dm_void, boolean is_enable) { struct dm_struct *dm = (struct dm_struct *)dm_void; struct _hal_rf_ *rf = &dm->rf_table; @@ -2378,9 +2690,14 @@ void halrf_rxdck(void *dm_void) return; switch (dm->support_ic_type) { - case ODM_RTL8822C: -#if (RTL8822C_SUPPORT == 1) - halrf_rxdck_8822c(dm); +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_rx_dck_enable_disable_8735b(dm, is_enable); + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_rx_dck_enable_disable_8822e(dm, is_enable); break; #endif default: @@ -2388,6 +2705,133 @@ void halrf_rxdck(void *dm_void) } } +void _halrf_rx_dck_info_by_chip(void *dm_void, u32 *_used, char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + + u32 used = *_used; + u32 out_len = *_out_len; + + switch (dm->support_ic_type) { +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_rx_dck_dbg_info_8735b(dm, &used, output, &out_len); + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_rx_dck_dbg_info_8822e(dm, &used, output, &out_len); + break; +#endif + default: + break; + } + + *_used = used; + *_out_len = out_len; +} + +void _halrf_display_rx_dck_info(void *dm_void, u32 *_used, char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &(dm->rf_table); + struct _halrf_rxdck_info *rx_dck = &(rf->halrf_rxdck_info); + + u32 used = *_used; + u32 out_len = *_out_len; + char *ic_name = NULL; + u8 path; + u32 addr = 0; + u32 reg_05[KPATH]; + + switch (dm->support_ic_type) { + +#if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + ic_name = "8735B"; + break; +#endif +#if (RTL8822E_SUPPORT) + case ODM_RTL8822E: + ic_name = "8822E"; + break; +#endif + default: + break; + } + + PDM_SNPF(out_len, used, output + used, out_len - used, + "\n===============[ RX_DCK info %s ]===============\n", ic_name); + + PDM_SNPF(out_len, used, output + used, out_len - used, " %-25s = %s\n", + "RX_DCK Ver", HALRF_RXDCK_VER); + + if (rx_dck->rxdck_ch == 0) { + PDM_SNPF(out_len, used, output + used, out_len - used, "\n %-25s\n", + "No RX_DCK had been done before!!!"); + return; + } + + PDM_SNPF(out_len, used, output + used, out_len - used, " %-25s = %s / %d / %s\n", + "Band / CH / BW", rx_dck->rxdck_band == 0 ? "2G" : "5G", rx_dck->rxdck_ch, + rx_dck->rxdck_bw == 3 ? "20M" : (rx_dck->rxdck_bw == 2 ? "40M" : "80M")); + + PDM_SNPF(out_len, used, output + used, out_len - used, " %-25s = %s\n", + "RX_DCK timeout", rx_dck->is_rxdck_timeout ? "Yes" : "No"); + + PDM_SNPF(out_len, used, output + used, out_len - used, " %-25s = %s\n", + "RX_DCK status", rx_dck->is_rxdck_off ? "Off" : "On"); + + _halrf_rx_dck_info_by_chip(dm, &used, output, &out_len); + + *_used = used; + *_out_len = out_len; +} + +void halrf_rx_dck_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &(dm->rf_table); + struct _halrf_rxdck_info *rx_dck = &(rf->halrf_rxdck_info); + + char *cmd[5] = {"-h", "on", "off", "info", "trigger"}; + u32 used = *_used; + u32 out_len = *_out_len; + u8 i; + + if (!(rf->rf_supportability & HAL_RF_RXDCK)) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "RX_DCK is Unsupported!!!\n"); + return; + } + + if (strcmp(input[2], cmd[0]) == 0) { + for (i = 1; i < 5; i++) { + PDM_SNPF(out_len, used, output + used, out_len - used, + " %s\n", cmd[i]); + } + } else if (strcmp(input[2], cmd[1]) == 0) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "RX_DCK is Enabled!!\n"); + rx_dck->is_rxdck_off = false; + halrf_rx_dck_enable_disable(dm, !rx_dck->is_rxdck_off); + } else if (strcmp(input[2], cmd[2]) == 0) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "RX_DCK is Disabled!!\n"); + rx_dck->is_rxdck_off = true; + halrf_rx_dck_enable_disable(dm, !rx_dck->is_rxdck_off); + } else if (strcmp(input[2], cmd[3]) == 0) + _halrf_display_rx_dck_info(dm, &used, output, &out_len); + else if (strcmp(input[2], cmd[4]) == 0) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "RX_DCK trigger!!\n"); + halrf_rx_dck_trigger(dm); + } else + PDM_SNPF(out_len, used, output + used, out_len - used, + " No CMD find!!\n"); +} + void halrf_x2k_check(struct dm_struct *dm) { @@ -2465,8 +2909,10 @@ void halrf_init(void *dm_void) halrf_rfe_definition(dm); #if 1 /*Init all RF funciton*/ + /*halrf_rck_trigger(dm);*/ halrf_aac_check(dm); halrf_dack_trigger(dm, false); + halrf_rx_dck_trigger(dm); halrf_x2k_check(dm); #endif @@ -2477,8 +2923,12 @@ void halrf_init(void *dm_void) halrf_tssi_dck(dm, true); halrf_tssi_get_efuse(dm); halrf_tssi_set_de(dm); -#if (RTL8723F_SUPPORT == 1) + +#if (RTL8723F_SUPPORT == 1 || RTL8735B_SUPPORT == 1) halrf_do_tssi(dm); +#endif + +#if (RTL8723F_SUPPORT == 1) halrf_rx_port_ctl_8723f(dm); #endif @@ -2541,7 +2991,11 @@ void halrf_dpk_trigger(void *dm_void) do_dpk_8814c(dm); break; #endif - +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + do_dpk_8822e(dm); + break; +#endif #if (DM_ODM_SUPPORT_TYPE & (ODM_AP)) #if (RTL8197F_SUPPORT == 1) case ODM_RTL8197F: @@ -2594,7 +3048,16 @@ void halrf_dpk_trigger(void *dm_void) do_dpk_8721d(dm); break; #endif - +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + do_dpk_8730a(dm); + break; +#endif +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + do_dpk_8735b(dm); + break; +#endif #endif default: break; @@ -2979,6 +3442,21 @@ void halrf_dpk_enable_disable(void *dm_void) phy_dpk_enable_disable_8721d(dm); break; #endif +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + dpk_enable_disable_8730a(dm); + break; +#endif +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + dpk_enable_disable_8735b(dm); + break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + dpk_enable_disable_8822e(dm); + break; +#endif #if (DM_ODM_SUPPORT_TYPE & (ODM_AP)) @@ -3051,7 +3529,7 @@ void halrf_dpk_track(void *dm_void) if (rf->is_dpk_in_progress || dm->rf_calibrate_info.is_iqk_in_progress || dm->is_psd_in_process || (dpk_info->dpk_path_ok == 0) || !(rf->rf_supportability & HAL_RF_DPK_TRACK) || rf->is_tssi_in_progress - || rf->is_txgapk_in_progress) + || rf->is_txgapk_in_progress || rf->is_rxspurk_in_progress) return; #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) @@ -3072,6 +3550,12 @@ void halrf_dpk_track(void *dm_void) break; #endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + dpk_track_8822e(dm); + break; +#endif + #if (RTL8195B_SUPPORT == 1) case ODM_RTL8195B: dpk_track_8195b(dm); @@ -3090,6 +3574,18 @@ void halrf_dpk_track(void *dm_void) break; #endif +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + dpk_track_8730a(dm); + break; +#endif + +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + dpk_track_8735b(dm); + break; +#endif + #if (DM_ODM_SUPPORT_TYPE & (ODM_AP)) #if (RTL8197F_SUPPORT == 1) @@ -3255,6 +3751,17 @@ void _halrf_dpk_info_by_chip(void *dm_void, u32 *_used, char *output, u32 *_out_ break; #endif +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + dpk_info_by_8735b(dm, &used, output, &out_len); + break; +#endif + +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + dpk_info_by_8822e(dm, &used, output, &out_len); + break; +#endif default: break; } @@ -3334,6 +3841,22 @@ void _halrf_display_dpk_info(void *dm_void, u32 *_used, char *output, u32 *_out_ ic_name = "8814C"; break; #endif +#if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + ic_name = "8735B"; + break; +#endif +#if (RTL8730A_SUPPORT) + case ODM_RTL8730A: + ic_name = "8730A"; + break; +#endif +#if (RTL8822E_SUPPORT) + case ODM_RTL8822E: + ic_name = "8822E"; + break; +#endif + default: break; } @@ -3468,6 +3991,52 @@ void halrf_dpk_debug_cmd(void *dm_void, char input[][16], u32 *_used, } } +void halrf_txgapk_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &(dm->rf_table); + + char *cmd[5] = {"-h", "on", "off", "info", "trigger"}; + u32 used = *_used; + u32 out_len = *_out_len; + u8 i; + + if (strcmp(input[2], cmd[4]) != 0) { + if (!(rf->rf_supportability & HAL_RF_TXGAPK)) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "TxGapK is Unsupported!!!\n"); + return; + } + } + + if (strcmp(input[2], cmd[0]) == 0) { + for (i = 1; i < 4; i++) { + PDM_SNPF(out_len, used, output + used, out_len - used, + " %s\n", cmd[i]); + } + } else if (strcmp(input[2], cmd[1]) == 0) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "TxGAPK Trigger \n"); + halrf_txgapk_trigger(dm); + } else if (strcmp(input[2], cmd[2]) == 0){ + PDM_SNPF(out_len, used, output + used, out_len - used, + "reset txgapk table!!\n"); + halrf_txgapk_disable(dm); + } else if ((strcmp(input[2], cmd[3]) == 0)) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "TBD: info!!\n"); + halrf_txgapk_info(dm, _used, output, _out_len); + } + else if ((strcmp(input[2], cmd[4]) == 0)) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "TxGAPK Trigger Start!!\n"); + halrf_txgapk_trigger(dm); + } +} + + + void halrf_dpk_c2h_report_transfer(void *dm_void, boolean is_ok, u8 *buf, u8 buf_size) { struct dm_struct *dm = (struct dm_struct *)dm_void; @@ -3502,6 +4071,11 @@ void halrf_dpk_info_rsvd_page(void *dm_void, u8 *buf, u32 *buf_size) case ODM_RTL8822C: dpk_info_rsvd_page_8822c(dm, buf, buf_size); break; +#endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + dpk_info_rsvd_page_8822e(dm, buf, buf_size); + break; #endif default: break; @@ -3530,7 +4104,28 @@ void halrf_iqk_info_rsvd_page(void *dm_void, u8 *buf, u32 *buf_size) iqk_info_rsvd_page_8195b(dm, buf, buf_size); break; #endif +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + iqk_info_rsvd_page_8822e(dm, buf, buf_size); + break; +#endif + + default: + break; + } +} + +void halrf_kip_rsvd_page(void *dm_void, u8 *buf, u32 *buf_size) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + + switch (dm->support_ic_type) { +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_kip_rsvd_page_8822e(dm, buf, buf_size); + break; +#endif default: break; } @@ -3603,7 +4198,24 @@ halrf_config_rfk_with_header_file(void *dm_void, u32 config_type) odm_read_and_config_mp_8814c_cal_init(dm); } #endif - +#if (RTL8730A_SUPPORT == 1) + if (dm->support_ic_type == ODM_RTL8730A) { + if (config_type == CONFIG_BB_RF_CAL_INIT) + odm_read_and_config_mp_8730a_cal_init(dm); + } +#endif +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type == ODM_RTL8735B) { + if (config_type == CONFIG_BB_RF_CAL_INIT) + odm_read_and_config_mp_8735b_cal_init(dm); + } +#endif +#if (RTL8822E_SUPPORT == 1) + if (dm->support_ic_type == ODM_RTL8822E) { + if (config_type == CONFIG_BB_RF_CAL_INIT) + odm_read_and_config_mp_8822e_cal_init(dm); + } +#endif #if 1 if (dm->fw_offload_ability & PHYDM_PHY_PARAM_OFFLOAD) { @@ -3671,18 +4283,134 @@ void halrf_txgapk_trigger(void *dm_void) break; #endif +#if (RTL8730A_SUPPORT == 1) + case ODM_RTL8730A: + halrf_txgapk_8730a(dm); + break; +#endif + +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_txgapk_8735b(dm); + break; +#endif + +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_txgapk_8822e(dm); + break; +#endif + default: break; - } + } halrf_rfk_power_save(dm, true); rf->is_txgapk_in_progress = false; halrf_rfk_handshake(dm, false); - rf->dpk_progressing_time = + rf->txgapk_progressing_time = odm_get_progressing_time(dm_void, start_time); RF_DBG(dm, DBG_RF_TXGAPK, "[TGGC]TXGAPK progressing_time = %lld ms\n", - rf->dpk_progressing_time); + rf->txgapk_progressing_time); +} + + +void halrf_txgapk_disable(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + + if (!(rf->rf_supportability & HAL_RF_TXGAPK)) + return; + + switch (dm->support_ic_type) { + +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_txgapk_write_table_default_8735b(dm); + break; +#endif + default: + break; + } +} + + +void halrf_txgapk_info(void *dm_void, u32 *_used, char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + + u32 used = *_used; + u32 out_len = *_out_len; + + switch (dm->support_ic_type) { + +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_txgapk_info_8735b(dm, _used, output, _out_len); + break; +#endif + default: + break; + } + + *_used = used; + *_out_len = out_len; +} + +void halrf_rxspurk_trigger(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + u64 start_time = 0x0; + + if (!dm->mp_mode) + return; + + if (dm->mp_mode && rf->is_con_tx && rf->is_single_tone && + rf->is_carrier_suppresion) { + if (*dm->mp_mode & + (*rf->is_con_tx || *rf->is_single_tone || + *rf->is_carrier_suppresion)) + return; + } + + if (!(rf->rf_supportability & HAL_RF_RX_SPURK)) + return; + + rf->rfk_type = RF11_RX_SPURK; + halrf_rfk_handshake(dm, true); + + start_time = odm_get_current_time(dm); + odm_acquire_spin_lock(dm, RT_IQK_SPINLOCK); + rf->is_rxspurk_in_progress = true; + odm_release_spin_lock(dm, RT_IQK_SPINLOCK); + halrf_rfk_power_save(dm, false); + + switch (dm->support_ic_type) { + +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_rxspurk_8822e(dm); + break; +#endif + + default: + break; + } + + halrf_rfk_power_save(dm, true); + odm_acquire_spin_lock(dm, RT_IQK_SPINLOCK); + rf->is_rxspurk_in_progress = false; + odm_release_spin_lock(dm, RT_IQK_SPINLOCK); + + halrf_rfk_handshake(dm, false); + + rf->rxspurk_progressing_time = + odm_get_progressing_time(dm_void, start_time); + RF_DBG(dm, DBG_RF_RXSPURK, "[RX SPURK] RX SPURK progressing_time = %lld ms\n", + rf->rxspurk_progressing_time); } void halrf_spur_compensation(void *dm_void) @@ -3745,6 +4473,18 @@ void halrf_tssi_get_efuse(void *dm_void) } #endif +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8735B) { + halrf_tssi_get_efuse_8735b(dm); + } +#endif + +#if (RTL8822E_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8822E) { + halrf_get_efuse_thermal_pwrtype_8822e(dm); + } +#endif + } void halrf_do_rxbb_dck(void *dm_void) @@ -3796,6 +4536,17 @@ void halrf_do_tssi(void *dm_void) halrf_tssi_trigger_bit_reset_8814c(dm); #endif +#if (RTL8730A_SUPPORT == 1) + if (dm->support_ic_type == ODM_RTL8730A) + halrf_do_tssi_8730a(dm); +#endif + +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type == ODM_RTL8735B) + halrf_do_tssi_8735b(dm); +#endif + + } u8 halrf_do_tssi_by_manual(void *dm_void, u8 path) @@ -3863,6 +4614,10 @@ u32 halrf_set_tssi_value(void *dm_void, u32 tssi_value) if (dm->support_ic_type & ODM_RTL8814C) return halrf_set_tssi_value_8814c(dm, tssi_value); #endif +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8735B) + return halrf_tssi_set_de_8735b(dm, tssi_value); +#endif return 0; } @@ -3908,6 +4663,11 @@ void halrf_tssi_set_de_for_tx_verify(void *dm_void, u32 tssi_de, u8 path) if (dm->support_ic_type & ODM_RTL8814C) halrf_tssi_set_de_for_tx_verify_8814c(dm, tssi_de, path); #endif +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8735B) + halrf_tssi_set_de_for_tx_verify_8735b(dm, tssi_de, path); +#endif + } @@ -3927,6 +4687,27 @@ u32 halrf_tssi_turn_target_power(void *dm_void, s16 power_offset, u8 path) return pout; } +void halrf_tssi_set_power(void *dm_void, u32 tx_rate, u32 power) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8735B) + halrf_tssi_set_power_8735b(dm, tx_rate, power); +#endif +} + +u32 halrf_tssi_get_power(void *dm_void, u32 tx_rate) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8735B) + return halrf_tssi_get_power_8735b(dm, tx_rate); +#endif + return 0; +} + void halrf_tssi_set_power_offset(void *dm_void, s16 power_offset, u8 path) { struct dm_struct *dm = (struct dm_struct *)dm_void; @@ -4000,7 +4781,11 @@ void halrf_tssi_set_de(void *dm_void) void halrf_tssi_dck(void *dm_void, u8 direct_do) { struct dm_struct *dm = (struct dm_struct *)dm_void; - + +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8735B) + return; +#endif halrf_rfk_handshake(dm, true); #if (RTL8814B_SUPPORT == 1) @@ -4030,6 +4815,7 @@ void halrf_tssi_dck(void *dm_void, u8 direct_do) if (dm->support_ic_type == ODM_RTL8197G) halrf_tssi_dck_8197g(dm); #endif + #if (RTL8814C_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8814C) { #if (DM_ODM_SUPPORT_TYPE & (ODM_AP)) @@ -4043,7 +4829,6 @@ void halrf_tssi_dck(void *dm_void, u8 direct_do) } #endif - halrf_rfk_handshake(dm, false); } @@ -4225,12 +5010,47 @@ u32 halrf_get_online_tssi_de(void *dm_void, u8 path, s32 pout) return 0; } +u32 halrf_get_online_tssi_de_new(void *dm_void, u8 path, s32 dbm, s32 pout) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8735B) + return halrf_get_online_tssi_de_8735b(dm, path, dbm, pout); +#endif + return 0; +} + void halrf_tssi_trigger(void *dm_void) { struct dm_struct *dm = (struct dm_struct *)dm_void; struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info); struct _hal_rf_ *rf = &(dm->rf_table); +#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) + if (odm_check_power_status(dm) == false) + return; +#endif + + if (!dm->mp_mode) + return; + + if (dm->mp_mode && rf->is_con_tx && rf->is_single_tone && + rf->is_carrier_suppresion) { + if (*dm->mp_mode & + (*rf->is_con_tx || *rf->is_single_tone || + *rf->is_carrier_suppresion)) + return; + } + + if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK)) + return; + +#if DISABLE_BB_RF + return; +#endif + + #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE)) if (*dm->mp_mode == 1) { if (cali_info->txpowertrack_control == 0 || @@ -4240,7 +5060,7 @@ void halrf_tssi_trigger(void *dm_void) return; } } else { - if (rf->power_track_type >= 0 && rf->power_track_type <= 3) { + if (rf->power_track_type <= 3) { RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "[TSSI]======>%s Normal Mode efues is thermal tracking. return !!!\n", __func__); return; @@ -4270,6 +5090,10 @@ void halrf_txgapk_write_gain_table(void *dm_void) if (dm->support_ic_type & ODM_RTL8814C) halrf_txgapk_save_all_tx_gain_table_8814c(dm); #endif +#if (RTL8822E_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8822E) + halrf_txgapk_save_all_tx_gain_table_8822e(dm); +#endif } @@ -4287,6 +5111,11 @@ void halrf_txgapk_reload_tx_gain(void *dm_void) halrf_txgapk_reload_tx_gain_8814c(dm); #endif */ + +#if (RTL8822E_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8822E) + halrf_txgapk_reload_tx_gain_8822e(dm); +#endif } void halrf_txgap_enable_disable(void *dm_void, u8 enable) @@ -4420,7 +5249,8 @@ void halrf_powertracking_thermal(void *dm_void) u8 thermal_base = 0, temp[2] = {0}; u8 path; u8 rate = phydm_get_tx_rate(dm); - //RF_DBG(dm, DBG_RF_TX_PWR_TRACK,"[RF][TSSI] ======>%s\n", __func__); + s8 pwr_threshold = 0xe4; + s8 offset = 0; if(rf->is_tssi_in_progress == 1) return; @@ -4438,9 +5268,11 @@ void halrf_powertracking_thermal(void *dm_void) } } - if (odm_get_bb_reg(dm, R_0x4318, BIT30) == 1){ - RF_DBG(dm, DBG_RF_TX_PWR_TRACK,"[RF][TSSI] return!! txpowertrack_control = %d, 0x4318 = 0x%x\n", - cali_info->txpowertrack_control,odm_get_bb_reg(dm, R_0x4318, MASKDWORD)); + offset = (s8)odm_get_bb_reg(dm, R_0x3a10, MASKBYTE3); + + if (odm_get_bb_reg(dm, R_0x4318, BIT30) == 1 || offset >= pwr_threshold) { + RF_DBG(dm, DBG_RF_TX_PWR_TRACK,"[RF][TSSI] return!! 0x3a10 = 0x%x, 0x4318 = 0x%x\n", + offset,odm_get_bb_reg(dm, R_0x4318, MASKDWORD)); return; } path = (u8)odm_get_bb_reg(dm, 0x1884, BIT(20)); @@ -4452,13 +5284,8 @@ void halrf_powertracking_thermal(void *dm_void) power_offset0 = _halrf_get_power_offset_by_thermal_8723f(dm, 0, thermal_detla); power_offset1 = _halrf_get_power_offset_by_thermal_8723f(dm, 1, thermal_detla); - if (rate == ODM_MGN_1M || rate == ODM_MGN_2M || rate == ODM_MGN_5_5M || rate == ODM_MGN_11M){ - temp[0] = tssi->txagc_offset_thermaltrack[0] -0x18 + 4*(power_offset0);/*s0*/ - temp[1] = tssi->txagc_offset_thermaltrack[1] - 0x8 + 4*(power_offset1);/*s1*/ - } else { - temp[0] = tssi->txagc_offset_thermaltrack[0] + 4*(power_offset0); - temp[1] = tssi->txagc_offset_thermaltrack[1] + 4*(power_offset1); - } + temp[0] = tssi->txagc_offset_thermaltrack[0] + 4*(power_offset0);/*s0*/ + temp[1] = tssi->txagc_offset_thermaltrack[1] + 4*(power_offset1);/*s1*/ /*S0:in the same index,cck_pwr-ofdm_pwr=7dB*/ odm_set_bb_reg(dm, R_0x4388, MASKBYTE0, temp[0]);/*s0*/ /*S1:in the same index,cck_pwr-ofdm_pwr=5dB*/ @@ -4487,7 +5314,7 @@ void halrf_xtal_thermal_track(void *dm_void) u8 thermal_base = 0; s8 xtal_table_up[DELTA_SWINGIDX_SIZE] = {0}; s8 xtal_table_down[DELTA_SWINGIDX_SIZE] = {0}; - u32 reg_val = 0, crystal_cap = 0; + s32 reg_val = 0, crystal_cap = 0; RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "[RF][xtal] ======>%s\n", __func__); @@ -4562,6 +5389,11 @@ void halrf_xtal_thermal_track(void *dm_void) RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "[RF][Xtal] DEFAULT crystal_cap = 0x%x\n", crystal_cap); reg_val = crystal_cap + cali_info->xtal_offset; + if (reg_val > 0x7F) + reg_val = 0x7F; + else if (reg_val < 0) + reg_val = 0x0; + //reg_val = (u32)(odm_get_mac_reg(dm, R_0x103c, 0x0001FC00) + cali_info->xtal_offset); RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "[RF][Xtal] reg_val = 0x%x\n", reg_val); @@ -4582,6 +5414,107 @@ void halrf_xtal_thermal_track(void *dm_void) } #endif +void halrf_pwr_table_info(void *dm_void, u32 *_used, char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + + switch (dm->support_ic_type) { +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_pwr_table_info_8735b(dm, _used, output, _out_len); + break; +#endif + default: + break; + } +} + +void halrf_xtal_trk_info(void *dm_void, u32 *_used, char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + + switch (dm->support_ic_type) { +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_xtal_trk_info_8735b(dm, _used, output, _out_len); + break; +#endif + default: + break; + } +} + +void halrf_tssi_info(void *dm_void, u32 *_used, char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + + switch (dm->support_ic_type) { +#if (RTL8735B_SUPPORT == 1) + case ODM_RTL8735B: + halrf_tssi_info_8735b(dm, _used, output, _out_len); + break; +#endif + default: + break; + } +} + +void halrf_rxspurk_info(void *dm_void, u32 *_used, char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + + switch (dm->support_ic_type) { +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_rxspurk_info_8822e(dm, _used, output, _out_len); + break; +#endif + default: + break; + } +} + +void halrf_set_pwr_trk_pg_ther(void *dm_void, u8 thera, u8 therb) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info); + struct _halrf_tssi_data *tssi = &rf->halrf_tssi_data; + + switch (dm->support_ic_type) { +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + cali_info->thermal_value_path[RF_PATH_A] = thera; + cali_info->thermal_value_path[RF_PATH_B] = therb; + tssi->thermal[RF_PATH_A] = thera; + tssi->thermal[RF_PATH_B] = therb; + break; +#endif + default: + break; + } +} + +void halrf_pwr_trk_info(void *dm_void, u32 *_used, char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + + switch (dm->support_ic_type) { +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_pwr_trk_info_8822e(dm, _used, output, _out_len); + break; +#endif + default: + break; + } +} + void _halrf_dump_subpage(void *dm_void, u32 *_used, char *output, u32 *_out_len, u8 page) { struct dm_struct *dm = (struct dm_struct *)dm_void; @@ -4656,8 +5589,7 @@ void halrf_dump_rfk_reg(void *dm_void, char input[][16], u32 *_used, reg_1b00 = odm_get_bb_reg(dm, R_0x1b00, MASKDWORD); - if (input[2]) - PHYDM_SSCANF(input[2], DCMD_DECIMAL, &var1[0]); + PHYDM_SSCANF(input[2], DCMD_DECIMAL, &var1[0]); if ((strcmp(input[2], help) == 0)) PDM_SNPF(out_len, used, output + used, out_len - used, @@ -4679,6 +5611,113 @@ void halrf_dump_rfk_reg(void *dm_void, char input[][16], u32 *_used, *_out_len = out_len; } +void halrf_pwr_table_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct dm_dpk_info *dpk_info = &dm->dpk_info; + struct _hal_rf_ *rf = &(dm->rf_table); + + char *cmd[2] = {"-h", "info"}; + u8 i; + + if ((strcmp(input[2], cmd[0]) == 0)) { + for (i = 0; i < 2; i++) { + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + " %s\n", cmd[i]); + } + } else if ((strcmp(input[2], cmd[1]) == 0)) + halrf_pwr_table_info(dm, _used, output, _out_len); +} + +void halrf_xtal_trk_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct dm_dpk_info *dpk_info = &dm->dpk_info; + struct _hal_rf_ *rf = &(dm->rf_table); + + char *cmd[2] = {"-h", "info"}; + u8 i; + + if ((strcmp(input[2], cmd[0]) == 0)) { + for (i = 0; i < 2; i++) { + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + " %s\n", cmd[i]); + } + } else if ((strcmp(input[2], cmd[1]) == 0)) + halrf_xtal_trk_info(dm, _used, output, _out_len); +} + +void halrf_tssi_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &(dm->rf_table); + + char *cmd[2] = {"-h", "info"}; + u8 i; + + if ((strcmp(input[2], cmd[0]) == 0)) { + for (i = 0; i < 2; i++) { + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + " %s\n", cmd[i]); + } + } else if ((strcmp(input[2], cmd[1]) == 0)) + halrf_tssi_info(dm, _used, output, _out_len); +} + +void halrf_rxspurk_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &(dm->rf_table); + + char *cmd[3] = {"-h", "info", "trigger"}; + u8 i; + + if (strcmp(input[2], cmd[0]) == 0) { + for (i = 0; i < 3; i++) { + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + " %s\n", cmd[i]); + } + } else if ((strcmp(input[2], cmd[1]) == 0)) { + halrf_rxspurk_info(dm, _used, output, _out_len); + } else if ((strcmp(input[2], cmd[2]) == 0)) { + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + " halrf_rxspurk_trigger !!!\n"); + halrf_rxspurk_trigger(dm); + } +} + +void halrf_pwr_trk_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &(dm->rf_table); + + char *cmd[3] = {"-h", "info", "set"}; + u8 i; + + if (strcmp(input[2], cmd[0]) == 0) { + for (i = 0; i < 3; i++) { + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + " %s\n", cmd[i]); + } + } else if ((strcmp(input[2], cmd[1]) == 0)) { + halrf_pwr_trk_info(dm, _used, output, _out_len); + } else if ((strcmp(input[2], cmd[2]) == 0)) { + u32 thera, therb; + PHYDM_SSCANF(input[3], DCMD_HEX, &thera); + PHYDM_SSCANF(input[4], DCMD_HEX, &therb); + + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + " Set Power Tracking PG Thermal TherA=0x%x TherB=0x%x\n", + thera, therb); + halrf_set_pwr_trk_pg_ther(dm, (u8)thera, (u8)therb); + } +} + /*Golbal function*/ void halrf_reload_bp(void *dm_void, u32 *bp_reg, u32 *bp, u32 num) { @@ -4955,6 +5994,7 @@ void halrf_mode(void *dm_void, u32 *i_value, u32 *q_value) *q_value = t; #endif } + void halrf_delay_10us(u16 v1) { u16 i = 0; @@ -4963,3 +6003,57 @@ void halrf_delay_10us(u16 v1) ODM_delay_us(10); } +void halrf_delay_1us(u16 v1) +{ + u16 i = 0; + + for (i = 0; i < v1; i++) + ODM_delay_us(1); +} + +u8 halrf_get_thermal( + void *dm_void, + u8 path) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + u8 thermal = 0; + + switch (dm->support_ic_type) { +#if (RTL8822C_SUPPORT == 1) + case ODM_RTL8822C: + thermal = halrf_get_thermal_8822c(dm, path); + break; +#endif + +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + thermal = halrf_get_thermal_8822e(dm, path); + break; +#endif + + default: + thermal = 0; + break; + } + + return thermal; +} + +void halrf_ex_dac_fifo_rst(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct _hal_rf_ *rf = &dm->rf_table; + +// if (!(rf->rf_supportability & HAL_RF_DACK)) +// return; + + switch (dm->support_ic_type) { +#if (RTL8822E_SUPPORT == 1) + case ODM_RTL8822E: + halrf_ex_dac_fifo_rst_8822e(dm); + break; +#endif + default: + break; + } +} \ No newline at end of file diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf.h index 6103dd692..294a01a07 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf.h @@ -29,16 +29,24 @@ /*@============================================================*/ /*@include files*/ /*@============================================================*/ -#include "../halrf/halrf_psd.h" +#include "halrf_psd.h" #if (RTL8822B_SUPPORT == 1) #include "halrf/rtl8822b/halrf_rfk_init_8822b.h" #endif #if (RTL8822C_SUPPORT == 1) -#include "../halrf/rtl8822c/halrf_rfk_init_8822c.h" -#include "../halrf/rtl8822c/halrf_iqk_8822c.h" -#include "../halrf/rtl8822c/halrf_tssi_8822c.h" -#include "../halrf/rtl8822c/halrf_dpk_8822c.h" -#include "../halrf/rtl8822c/halrf_txgapk_8822c.h" +#include "rtl8822c/halrf_rfk_init_8822c.h" +#include "rtl8822c/halrf_iqk_8822c.h" +#include "rtl8822c/halrf_tssi_8822c.h" +#include "rtl8822c/halrf_dpk_8822c.h" +#include "rtl8822c/halrf_txgapk_8822c.h" +#endif + +#if (RTL8822E_SUPPORT == 1) +#include "halrf/rtl8822e/halrf_rfk_init_8822e.h" +#include "halrf/rtl8822e/halrf_iqk_8822e.h" +#include "halrf/rtl8822e/halrf_tssi_8822e.h" +#include "halrf/rtl8822e/halrf_dpk_8822e.h" +#include "halrf/rtl8822e/halrf_txgapk_8822e.h" #endif #if (DM_ODM_SUPPORT_TYPE & ODM_AP) @@ -118,6 +126,8 @@ #define IQK_VER_8197G "0x03" #define IQK_VER_8723F "0x00" #define IQK_VER_8814C "0x00" +#define IQK_VER_8735B "0x03" +#define IQK_VER_8822E "0x14" /*LCK version*/ #define LCK_VER_8188E "0x02" @@ -134,14 +144,14 @@ #define LCK_VER_8723D "0x01" #define LCK_VER_8822B "0x02" #define LCK_VER_8822C "0x00" -#define LCK_VER_8821C "0x03" +#define LCK_VER_8821C "0x04" #define LCK_VER_8814B "0x02" #define LCK_VER_8195B "0x02" #define LCK_VER_8710C "0x02" #define LCK_VER_8197G "0x01" #define LCK_VER_8198F "0x01" #define LCK_VER_8814C "0x00" - +#define LCK_VER_8735B "0x01" /*power tracking version*/ #define PWRTRK_VER_8188E "0x01" #define PWRTRK_VER_8192E "0x01" @@ -161,6 +171,7 @@ #define PWRTRK_VER_8814B "0x00" #define PWRTRK_VER_8197G "0x00" #define PWRTRK_VER_8814C "0x00" +#define PWRTRK_VER_8822E "0x01" /*DPK version*/ #define DPK_VER_8188E "NONE" @@ -182,8 +193,10 @@ #define DPK_VER_8814B "0x0f" #define DPK_VER_8195B "0x0c" #define DPK_VER_8812F "0x0a" -#define DPK_VER_8197G "0x09" +#define DPK_VER_8197G "0x0b" #define DPK_VER_8814C "0x01" +#define DPK_VER_8735B "0x0b" +#define DPK_VER_8822E "0x0e" /*RFK_INIT version*/ #define RFK_INIT_VER_8822B "0x8" @@ -194,15 +207,29 @@ #define RFK_INIT_VER_8812F "0x4" #define RFK_INIT_VER_8197G "0x4" #define RFK_INIT_VER_8814C "0x0" +#define RFK_INIT_VER_8735B "0xe" +#define RFK_INIT_VER_8822E "0xc" /*DACK version*/ #define DACK_VER_8822C "0xa" #define DACK_VER_8814B "0x4" #define DACK_VER_8814C "0x0" - +#define DACK_VER_8735B "0x3" +#define DACK_VER_8822E "0x5" /*TXGAPK version*/ #define TXGAPK_VER_8814B "0x1" #define TXGAPK_VER_8195B "0x2" +#define TXGAPK_VER_8822E "0x6" + +/*RXDCK version*/ +#define RXDCK_VER_8735B "0x6" +#define RXDCK_VER_8822E "0x4" + +/*RCK version*/ +#define RCK_VER_8735B "0x1" + +/*RX Spur K version*/ +#define RXSPURK_VER_8822E "0x10" /*Kfree tracking version*/ #define KFREE_VER_8188E \ @@ -246,6 +273,7 @@ #define TSSI_VER_8814B "0x1" #define TSSI_VER_8197G "0x1" #define TSSI_VER_8723F "0x1" +#define TSSI_VER_8735B "0x15" /*PA Bias Calibration version*/ #define PABIASK_VER_8188E \ @@ -339,7 +367,8 @@ (dm->support_ic_type == ODM_RTL8822B) ? PWRTRK_VER_8822B : \ (dm->support_ic_type == ODM_RTL8822C) ? PWRTRK_VER_8822C : \ (dm->support_ic_type == ODM_RTL8821C) ? PWRTRK_VER_8821C : \ - (dm->support_ic_type == ODM_RTL8197G) ? PWRTRK_VER_8197G : "unknown" + (dm->support_ic_type == ODM_RTL8197G) ? PWRTRK_VER_8197G : \ + (dm->support_ic_type == ODM_RTL8822E) ? PWRTRK_VER_8822E : "unknown" #define HALRF_DPK_VER \ (dm->support_ic_type == ODM_RTL8188E) ? DPK_VER_8188E : \ @@ -360,7 +389,9 @@ (dm->support_ic_type == ODM_RTL8812F) ? DPK_VER_8812F : \ (dm->support_ic_type == ODM_RTL8821C) ? DPK_VER_8821C : \ (dm->support_ic_type == ODM_RTL8814B) ? DPK_VER_8814B : \ - (dm->support_ic_type == ODM_RTL8197G) ? DPK_VER_8197G : "unknown" + (dm->support_ic_type == ODM_RTL8197G) ? DPK_VER_8197G : \ + (dm->support_ic_type == ODM_RTL8735B) ? DPK_VER_8735B : \ + (dm->support_ic_type == ODM_RTL8822E) ? DPK_VER_8822E : "unknown" #define HALRF_KFREE_VER \ (dm->support_ic_type == ODM_RTL8188E) ? KFREE_VER_8188E : \ @@ -387,7 +418,8 @@ (dm->support_ic_type == ODM_RTL8821C) ? TSSI_VER_8821C : \ (dm->support_ic_type == ODM_RTL8814B) ? TSSI_VER_8814B : \ (dm->support_ic_type == ODM_RTL8197G) ? TSSI_VER_8197G : \ - (dm->support_ic_type == ODM_RTL8723F) ? TSSI_VER_8723F : "unknown" + (dm->support_ic_type == ODM_RTL8723F) ? TSSI_VER_8723F : \ + (dm->support_ic_type == ODM_RTL8735B) ? TSSI_VER_8735B : "unknown" #define HALRF_PABIASK_VER \ (dm->support_ic_type == ODM_RTL8188E) ? PABIASK_VER_8188E : \ @@ -414,12 +446,25 @@ (dm->support_ic_type == ODM_RTL8812F) ? RFK_INIT_VER_8812F : \ (dm->support_ic_type == ODM_RTL8198F) ? RFK_INIT_VER_8198F : \ (dm->support_ic_type == ODM_RTL8814B) ? RFK_INIT_VER_8814B : \ - (dm->support_ic_type == ODM_RTL8197G) ? RFK_INIT_VER_8197G : "unknown" + (dm->support_ic_type == ODM_RTL8197G) ? RFK_INIT_VER_8197G : \ + (dm->support_ic_type == ODM_RTL8735B) ? RFK_INIT_VER_8735B : \ + (dm->support_ic_type == ODM_RTL8822E) ? RFK_INIT_VER_8822E : "unknown" #define HALRF_DACK_VER \ (dm->support_ic_type == ODM_RTL8822C) ? DACK_VER_8822C : \ (dm->support_ic_type == ODM_RTL8814B) ? DACK_VER_8814B : "unknown" +#define HALRF_RXDCK_VER \ + (dm->support_ic_type == ODM_RTL8735B) ? RXDCK_VER_8735B : \ + (dm->support_ic_type == ODM_RTL8822E) ? RXDCK_VER_8822E : "unknown" + +#define HALRF_RCK_VER \ + (dm->support_ic_type == ODM_RTL8735B) ? RCK_VER_8735B : "unknown" + +#define HALRF_RXSPURK_VER \ + (dm->support_ic_type == ODM_RTL8822E) ? RXSPURK_VER_8822E : "unknown" + + #define IQK_THRESHOLD 8 #define DPK_THRESHOLD 4 #define HALRF_ABS(a,b) ((a>b) ? (a-b) : (b-a)) @@ -452,7 +497,9 @@ enum halrf_func_idx { /*F_XXX = PHYDM XXX function*/ RF06_DPK_TRK = 6, RF07_2GBAND_SHIFT = 7, RF08_RXDCK = 8, - RF09_RFK = 9 + RF09_RFK = 9, + RF10_PA_DYNAMIC_BIAS = 10, + RF11_RX_SPURK = 11 }; enum halrf_ability { @@ -464,7 +511,9 @@ enum halrf_ability { HAL_RF_DACK = BIT(RF05_DACK), HAL_RF_DPK_TRACK = BIT(RF06_DPK_TRK), HAL_2GBAND_SHIFT = BIT(RF07_2GBAND_SHIFT), - HAL_RF_RXDCK = BIT(RF08_RXDCK) + HAL_RF_RXDCK = BIT(RF08_RXDCK), + HAL_RF_PA_DYNAMIC_BIAS = BIT(RF10_PA_DYNAMIC_BIAS), + HAL_RF_RX_SPURK = BIT(RF11_RX_SPURK) }; enum halrf_shift_band { @@ -481,7 +530,9 @@ enum halrf_dbg_comp { DBG_RF_TXGAPK = BIT(RF04_TXGAPK), DBG_RF_DACK = BIT(RF05_DACK), DBG_RF_DPK_TRACK = BIT(RF06_DPK_TRK), + DBG_RF_RXDCK = BIT(RF08_RXDCK), DBG_RF_RFK = BIT(RF09_RFK), + DBG_RF_RXSPURK = BIT(RF11_RX_SPURK), DBG_RF_MP = BIT(29), DBG_RF_TMP = BIT(30), DBG_RF_INIT = BIT(31) @@ -559,14 +610,44 @@ struct _halrf_tssi_data { #endif }; +#define RF_GAIN_TABLE_NUM 12 + struct _halrf_txgapk_info { - u32 txgapk_rf3f_bp[5][12][PHYDM_MAX_RF_PATH]; /* band(2Gcck/2GOFDM/5GL/5GM/5GH)/idx/path */ + u32 txgapk_rf3f_bp[5][RF_GAIN_TABLE_NUM][PHYDM_MAX_RF_PATH]; /* band(2Gcck/2GOFDM/5GL/5GM/5GH)/idx/path */ + u32 txgapk_rf3f_same[5][RF_GAIN_TABLE_NUM][PHYDM_MAX_RF_PATH]; /* band(2Gcck/2GOFDM/5GL/5GM/5GH)/idx/path */ boolean txgapk_bp_done; - s8 offset[12][PHYDM_MAX_RF_PATH]; - s8 fianl_offset[12][PHYDM_MAX_RF_PATH]; + s8 offset[RF_GAIN_TABLE_NUM][PHYDM_MAX_RF_PATH]; + s8 fianl_offset[RF_GAIN_TABLE_NUM][PHYDM_MAX_RF_PATH]; u8 read_txgain; + + s32 track_d[2][11]; + s32 track_ta[2][11]; + s32 power_d[2][11]; + s32 power_ta[2][11]; + + boolean is_txgapk_ok; }; +struct _halrf_rxdck_info { + boolean is_rxdck_timeout; + boolean is_rxdck_off; + u8 rxdck_ch; + u8 rxdck_band; + u8 rxdck_bw; +}; + +struct _halrf_afedck_info { + u8 dadck_d[2][2]; /*path/IQ*/ + boolean dadck_fail; +}; + +#define RXSPURK_PSD_RESULT_NUM 24 + +struct _halrf_rxspurk_info { + u32 rxspurk_psd_result[RXSPURK_PSD_RESULT_NUM]; + u32 final_psd_idx; + boolean nbi_csi_en; +}; /*@============================================================*/ /*@ structure */ @@ -586,6 +667,9 @@ struct _hal_rf_ { boolean dpk_done; u64 dpk_progressing_time; u64 iqk_progressing_time; + u64 txgapk_progressing_time; + u64 rxdck_progressing_time; + u64 rxspurk_progressing_time; u32 fw_ver; boolean *is_con_tx; @@ -597,6 +681,8 @@ struct _hal_rf_ { boolean is_rfk_h2c_timeout; boolean aac_checked; boolean is_txgapk_in_progress; + boolean is_rxspurk_in_progress; + boolean is_tssi_mode[KPATH]; u8 *mp_rate_index; u32 *manual_rf_supportability; @@ -610,14 +696,17 @@ struct _hal_rf_ { u8 ext_lna_5g; /*@with 5G external LNA NO/Yes = 0/1*/ u8 ext_pa; /*@with 2G external PNA NO/Yes = 0/1*/ u8 ext_pa_5g; /*@with 5G external PNA NO/Yes = 0/1*/ -#if !(DM_ODM_SUPPORT_TYPE & ODM_IOT) struct _halrf_psd_data halrf_psd_data; struct _halrf_tssi_data halrf_tssi_data; -#endif struct _halrf_txgapk_info halrf_txgapk_info; + struct _halrf_rxdck_info halrf_rxdck_info; + struct _halrf_afedck_info halrf_afedck_info; + struct _halrf_rxspurk_info halrf_rxspurk_info; u8 power_track_type; u8 mp_pwt_type; u8 pre_band_type; + u32 reg1c68; + u32 reg2a24; }; /*@============================================================*/ @@ -671,6 +760,8 @@ void halrf_segment_iqk_trigger(void *dm_void, boolean clear, void halrf_lck_trigger(void *dm_void); +void halrf_lck_track(void *dm_void); + void halrf_iqk_debug(void *dm_void, u32 *const dm_value, u32 *_used, char *output, u32 *_out_len); @@ -688,6 +779,8 @@ void halrf_dpk_trigger(void *dm_void); void halrf_txgapk_trigger(void *dm_void); +void halrf_rxspurk_trigger(void *dm_void); + u8 halrf_dpk_result_check(void *dm_void); void halrf_dpk_sram_read(void *dm_void); @@ -707,6 +800,10 @@ void halrf_dpk_c2h_report_transfer(void *dm_void, boolean is_ok, u8 *buf, u8 buf void halrf_dpk_info_rsvd_page(void *dm_void, u8 *buf, u32 *buf_size); +void halrf_rx_dck_trigger(void *dm_void); + +void halrf_rx_dck_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len); /*Global function*/ void halrf_reload_bp(void *dm_void, u32 *bp_reg, u32 *bp, u32 num); @@ -739,7 +836,7 @@ halrf_config_rfk_with_header_file(void *dm_void, u32 config_type); RTL8195B_SUPPORT == 1 || RTL8198F_SUPPORT == 1 ||\ RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\ RTL8812F_SUPPORT == 1 || RTL8710C_SUPPORT == 1 ||\ - RTL8197G_SUPPORT == 1) + RTL8197G_SUPPORT == 1 || RTL8822E_SUPPORT == 1) void halrf_iqk_dbg(void *dm_void); #endif @@ -784,6 +881,8 @@ u32 halrf_tssi_get_de(void *dm_void, u8 path); u32 halrf_get_online_tssi_de(void *dm_void, u8 path, s32 pout); +u32 halrf_get_online_tssi_de_new(void *dm_void, u8 path, s32 dbm, s32 pout); + void halrf_tssi_trigger(void *dm_void); void halrf_spur_compensation(void *dm_void); @@ -794,6 +893,12 @@ void halrf_txgapk_reload_tx_gain(void *dm_void); void halrf_txgap_enable_disable(void *dm_void, u8 enable); +void halrf_pwr_table_info(void *dm_void, u32 *_used, char *output, u32 *_out_len); + +void halrf_xtal_trk_info(void *dm_void, u32 *_used, char *output, u32 *_out_len); + +void halrf_tssi_info(void *dm_void, u32 *_used, char *output, u32 *_out_len); + void halrf_set_dpk_track(void *dm_void, u8 enable); void halrf_set_dpkbychannel(void *dm_void, boolean dpk_by_ch); @@ -826,17 +931,50 @@ void halrf_rxdck(void *dm_void); void halrf_delay_10us(u16 v1); +void halrf_delay_1us(u16 v1); + void halrf_dump_rfk_reg(void *dm_void, char input[][16], u32 *_used, char *output, u32 *_out_len); +void halrf_pwr_table_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len); + +void halrf_xtal_trk_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len); + +void halrf_tssi_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len); + +void halrf_rxspurk_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len); + +void halrf_pwr_trk_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len); + void halrf_xtal_thermal_track(void *dm_void); void halrf_powertracking_thermal(void *dm_void); u32 halrf_tssi_turn_target_power(void *dm_void, s16 power_offset, u8 path); +void halrf_tssi_set_power(void *dm_void, u32 tx_rate, u32 power); + +u32 halrf_tssi_get_power(void *dm_void, u32 tx_rate); + void halrf_tssi_set_power_offset(void *dm_void, s16 power_offset, u8 path); void halrf_rfk_power_save(void *dm_void, boolean is_power_save); +void halrf_txgapk_debug_cmd(void *dm_void, char input[][16], u32 *_used, + char *output, u32 *_out_len); + +void halrf_txgapk_disable(void *dm_void); + +void halrf_txgapk_info(void *dm_void, u32 *_used, char *output, u32 *_out_len); + +u8 halrf_get_thermal(void *dm_void, u8 path); + +void halrf_ex_dac_fifo_rst(void *dm_void); + +void halrf_kip_rsvd_page(void *dm_void, u8 *buf, u32 *buf_size); #endif /*__HALRF_H__*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_debug.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_debug.c index a7c93c722..6e9b5b2ad 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_debug.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_debug.c @@ -105,6 +105,18 @@ void halrf_basic_profile(void *dm_void, u32 *_used, char *output, u32 *_out_len) rf_release_ver = RF_RELEASE_VERSION_8195B; break; #endif +#if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + rf_release_ver = RF_RELEASE_VERSION_8735B; + break; +#endif + +#if (RTL8822E_SUPPORT) + case ODM_RTL8822E: + rf_release_ver = RF_RELEASE_VERSION_8822E; + break; +#endif + } PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %d\n", @@ -127,8 +139,14 @@ void halrf_basic_profile(void *dm_void, u32 *_used, char *output, u32 *_out_len) "DPK", HALRF_DPK_VER); PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n", "TSSI", HALRF_TSSI_VER); + PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n", + "RXDCK", HALRF_RXDCK_VER); + PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n", + "RCK", HALRF_RCK_VER); PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n", "KFREE", HALRF_KFREE_VER); + PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n", + "RX Spur K", HALRF_RXSPURK_VER); PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n", "TX 2G Current Calibration", HALRF_PABIASK_VER); PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n", @@ -151,8 +169,7 @@ void halrf_debug_trace(void *dm_void, char input[][16], u32 *_used, u8 i; for (i = 0; i < 5; i++) - if (input[i + 1]) - PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &rf_var[i]); + PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &rf_var[i]); if (rf_var[0] == 100) { PDM_SNPF(out_len, used, output + used, out_len - used, @@ -176,6 +193,15 @@ void halrf_debug_trace(void *dm_void, char input[][16], u32 *_used, PDM_SNPF(out_len, used, output + used, out_len - used, "06. (( %s ))DPK_TRACK\n", ((rf->rf_dbg_comp & DBG_RF_DPK_TRACK) ? ("V") : ("."))); + PDM_SNPF(out_len, used, output + used, out_len - used, + "08. (( %s ))RX_DCK\n", + ((rf->rf_dbg_comp & DBG_RF_RXDCK) ? ("V") : ("."))); + PDM_SNPF(out_len, used, output + used, out_len - used, + "09. (( %s ))RFK\n", + ((rf->rf_dbg_comp & DBG_RF_RFK) ? ("V") : ("."))); + PDM_SNPF(out_len, used, output + used, out_len - used, + "11. (( %s ))RX Spur K\n", + ((rf->rf_dbg_comp & DBG_RF_RXSPURK) ? ("V") : ("."))); PDM_SNPF(out_len, used, output + used, out_len - used, "29. (( %s ))MP\n", ((rf->rf_dbg_comp & DBG_RF_MP) ? ("V") : ("."))); @@ -211,8 +237,7 @@ void halrf_dack_debug_cmd(void *dm_void, char input[][16]) u8 i; for (i = 0; i < 7; i++) - if (input[i + 1]) - PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &dm_value[i]); + PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &dm_value[i]); if (dm_value[0] == 1) halrf_dack_trigger(dm, true); @@ -236,10 +261,17 @@ enum halrf_CMD_ID { HALRF_DPK, HALRF_DACK, HALRF_DACK_DEBUG, + HALRF_RX_DCK, HALRF_DUMP_RFK_REG, #ifdef CONFIG_2G_BAND_SHIFT HAL_BAND_SHIFT, #endif + HALRF_PWR_TABLE, + HALRF_TXGAPK, + HALRF_XTAL_TRK, + HALRF_TSSI, + HALRF_RX_SPURK, + HALRF_POWER_TRACKING, }; struct halrf_command halrf_cmd_ary[] = { @@ -253,10 +285,17 @@ struct halrf_command halrf_cmd_ary[] = { {"dpk", HALRF_DPK}, {"dack", HALRF_DACK}, {"dack_dbg", HALRF_DACK_DEBUG}, + {"rx_dck", HALRF_RX_DCK}, {"dump_rfk_reg", HALRF_DUMP_RFK_REG}, #ifdef CONFIG_2G_BAND_SHIFT {"band_shift", HAL_BAND_SHIFT}, #endif + {"pwr_table", HALRF_PWR_TABLE}, + {"txgapk", HALRF_TXGAPK}, + {"xtal_trk", HALRF_XTAL_TRK}, + {"tssi", HALRF_TSSI}, + {"rxspurk", HALRF_RX_SPURK}, + {"pwr_trk", HALRF_POWER_TRACKING}, }; void halrf_cmd_parser(void *dm_void, char input[][16], u32 *_used, char *output, @@ -329,11 +368,8 @@ void halrf_cmd_parser(void *dm_void, char input[][16], u32 *_used, char *output, PDM_SNPF(out_len, used, output + used, out_len - used, "IQK DEBUG!!!!!\n"); for (i = 0; i < 5; i++) { - if (input[i + 1]) { - PHYDM_SSCANF(input[i + 2], DCMD_HEX, - &rf_var[i]); - input_idx++; - } + PHYDM_SSCANF(input[i + 2], DCMD_HEX, &rf_var[i]); + input_idx++; } if (input_idx >= 1) { @@ -357,9 +393,30 @@ void halrf_cmd_parser(void *dm_void, char input[][16], u32 *_used, char *output, "DACK DEBUG\n"); halrf_dack_dbg(dm); break; + case HALRF_RX_DCK: + halrf_rx_dck_debug_cmd(dm, input, &used, output, &out_len); + break; case HALRF_DUMP_RFK_REG: halrf_dump_rfk_reg(dm, input, &used, output, &out_len); break; + case HALRF_PWR_TABLE: + halrf_pwr_table_debug_cmd(dm, input, &used, output, &out_len); + break; + case HALRF_TXGAPK: + halrf_txgapk_debug_cmd(dm, input, &used, output, &out_len); + break; + case HALRF_XTAL_TRK: + halrf_xtal_trk_debug_cmd(dm, input, &used, output, &out_len); + break; + case HALRF_TSSI: + halrf_tssi_debug_cmd(dm, input, &used, output, &out_len); + break; + case HALRF_RX_SPURK: + halrf_rxspurk_debug_cmd(dm, input, &used, output, &out_len); + break; + case HALRF_POWER_TRACKING: + halrf_pwr_trk_debug_cmd(dm, input, &used, output, &out_len); + break; default: break; } @@ -376,7 +433,6 @@ void halrf_init_debug_setting(void *dm_void) rf->rf_dbg_comp = - DBG_RF_RFK | #if DBG #if 1 /*DBG_RF_TX_PWR_TRACK | */ @@ -386,9 +442,12 @@ void halrf_init_debug_setting(void *dm_void) /*DBG_RF_TXGAPK | */ /*DBG_RF_DACK | */ /*DBG_RF_DPK_TRACK | */ + /*DBG_RF_RXDCK | */ + /*DBG_RF_RFK | */ /*DBG_RF_MP | */ /*DBG_RF_TMP | */ /*DBG_RF_INIT | */ + /*DBG_RF_RXSPURK | */ #endif #endif 0; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_dpk.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_dpk.h index f51ff6f6e..a1ca7b49c 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_dpk.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_dpk.h @@ -27,6 +27,7 @@ #define __HALRF_DPK_H__ /*@--------------------------Define Parameters-------------------------------*/ +#define LBK_RXIQK 0 #define GAIN_LOSS 1 #define DO_DPK 2 #define DPK_ON 3 @@ -36,18 +37,24 @@ #define DPK_LOK 4 #define DPK_TXK 5 #define DAGC 4 +#define SYNC_DC 5 +#define MDPK_DC 6 #define LOSS_CHK 0 #define GAIN_CHK 1 +#define SYNC_CHK 3 #define PAS_READ 2 #define AVG_THERMAL_NUM 8 #define AVG_THERMAL_NUM_DPK 8 #define THERMAL_DPK_AVG_NUM 4 +#define DPK_RF18 2 + /*define RF path numer*/ #if (RTL8198F_SUPPORT == 1 || RTL8814B_SUPPORT == 1|| RTL8814C_SUPPORT == 1) #define KPATH 4 #elif (RTL8192F_SUPPORT == 1 || RTL8197F_SUPPORT == 1 ||RTL8197G_SUPPORT == 1 ||\ - RTL8822C_SUPPORT == 1 || RTL8812F_SUPPORT == 1 || RTL8723F_SUPPORT == 1) + RTL8822C_SUPPORT == 1 || RTL8812F_SUPPORT == 1 || RTL8723F_SUPPORT == 1 ||\ + RTL8822E_SUPPORT == 1) #define KPATH 2 #else #define KPATH 1 @@ -74,30 +81,35 @@ struct dm_dpk_info { u8 thermal_dpk[KPATH]; /*path*/ u8 thermal_dpk_avg[KPATH][AVG_THERMAL_NUM_DPK]; /*path*/ u8 pre_pwsf[KPATH]; + u16 pwsf[KPATH]; /*path*/ u8 thermal_dpk_avg_index; u32 gnt_control; u32 gnt_value; u8 dpk_ch; u8 dpk_band; u8 dpk_bw; - u32 dpk_rf18[2]; + u32 dpk_rf18[DPK_RF18]; u32 dpk_cal_cnt; u32 dpk_ok_cnt; u32 dpk_reload_cnt; + u8 txagc_k[KPATH]; /*txagc@dpk with path*/ -#if (RTL8822C_SUPPORT == 1 || RTL8812F_SUPPORT == 1 || RTL8197G_SUPPORT == 1) +#if (RTL8822C_SUPPORT == 1 || RTL8812F_SUPPORT == 1 || RTL8197G_SUPPORT == 1 || RTL8735B_SUPPORT == 1 || \ + RTL8822E_SUPPORT == 1) u16 dc_i[2]; /*MDPD DC I path*/ u16 dc_q[2]; /*MDPD DC Q path*/ u8 corr_val[2]; /*Corr value path*/ u8 corr_idx[2]; /*Corr index path*/ #endif -#if (RTL8822C_SUPPORT == 1 || RTL8812F_SUPPORT == 1) +#if (RTL8822C_SUPPORT == 1 || RTL8812F_SUPPORT == 1 || RTL8822E_SUPPORT == 1) u8 result[2]; /*path*/ u8 dpk_txagc[2]; /*path*/ u32 coef[2][20]; /*path/MDPD coefficient*/ u16 dpk_gs[2]; /*MDPD coef gs*/ u8 thermal_dpk_delta[2]; /*path*/ + u32 dpk_lms_err[2]; /*path*/ + u32 dpk_data[11]; /*path/MDPD coefficient*/ #endif #if (RTL8198F_SUPPORT == 1 || RTL8192F_SUPPORT == 1 || RTL8197F_SUPPORT == 1 ||\ @@ -168,7 +180,7 @@ struct dm_dpk_info { #endif #endif -#if(RTL8723F_SUPPORT == 1) +#if(RTL8723F_SUPPORT == 1 || RTL8730A_SUPPORT == 1) u8 one_shot_cnt; u8 dpk_current_path; u8 thermal_init[KPATH]; @@ -177,12 +189,12 @@ struct dm_dpk_info { u8 txagc[KPATH]; /*path*/ u8 tssi_txagc[KPATH][2]; /*path/0:txagc_rf,1:tssi_offset*/ u16 digital_bbgain[KPATH]; /*path*/ - u16 pwsf[KPATH]; /*path*/ + //u16 pwsf[KPATH]; /*path*/ #endif }; -#if (RTL8822C_SUPPORT == 1) +#if (RTL8822C_SUPPORT == 1 || RTL8822E_SUPPORT == 1) struct dm_dpk_c2h_report { u8 result[2]; /*ch0_result/ch1_result*/ u8 therm[2][2]; /*therm0_s0/therm0_s1/therm1_s0/therm1_s1*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_iqk.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_iqk.h index 0c7fe30f3..aa893d903 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_iqk.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_iqk.h @@ -32,8 +32,14 @@ #define TX_IQK 0 #define RX_IQK 1 #define TXIQK 0 +#define RXIQK 1 #define RXIQK1 1 #define RXIQK2 2 +#define NBTXK 3 +#define NBRXK 4 +#define LOK1 5 +#define LOK2 6 + #define kcount_limit_80m 2 #define kcount_limit_others 4 #define rxiqk_gs_limit 6 @@ -44,7 +50,7 @@ #define NUM 4 #elif (RTL8822B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\ RTL8812F_SUPPORT == 1 || RTL8197G_SUPPORT == 1 ||\ - RTL8723F_SUPPORT == 1) + RTL8723F_SUPPORT == 1 || RTL8822E_SUPPORT == 1 ) #define NUM 2 #else #define NUM 1 @@ -57,6 +63,20 @@ struct dm_dack_info { u16 msbk_d[2][2][15]; u8 dck_d[2][2][2]; u16 biask_d[2][2]; + + u8 new_msbk_d[2][2][16]; + u16 new_biask_d[2]; + u8 dadck_d[2][2]; + boolean dack_done; + u16 addck_d[2][2]; + u16 addc[2][2]; + u32 dack_cnt; + u32 dack_time; + boolean addck_timeout[2]; + boolean dadck_timeout[2]; + boolean msbk_timeout[2]; + boolean dack_fail; + u32 afedig_d[128]; }; struct dm_iqk_info { @@ -73,13 +93,16 @@ struct dm_iqk_info { u8 txgain; u32 txgain56; u8 kcount; + u8 fail_count; + u8 fail_step; u8 rfk_ing; /*bit0:IQKing, bit1:LCKing, bit2:DPKing*/ - boolean rfk_forbidden; + boolean rfk_forbidden; + boolean is_nbiqk; u8 rxbb; u32 rf_reg58; boolean segment_iqk; boolean is_tssi_mode; - u8 iqk_band; + u8 iqk_band; u8 iqk_ch; u8 iqk_bw; #if (RTL8814A_SUPPORT == 1 || RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1 ||\ @@ -87,7 +110,8 @@ struct dm_iqk_info { RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\ RTL8812F_SUPPORT == 1 || RTL8197G_SUPPORT == 1 ||\ RTL8710C_SUPPORT == 1 || RTL8723F_SUPPORT == 1 ||\ - RTL8814C_SUPPORT == 1) + RTL8814C_SUPPORT == 1 || RTL8735B_SUPPORT == 1 ||\ + RTL8730A_SUPPORT == 1 || RTL8822E_SUPPORT == 1) u32 iqk_channel[2]; boolean iqk_fail_report[2][NUM][2]; /*channel/path/TRX(TX:0, RX:1) */ /*channel / path / TRX(TX:0, RX:1) / CFIR_real*/ @@ -98,15 +122,14 @@ struct dm_iqk_info { u32 rx_cfir_real[2][NUM][17]; u32 rx_cfir_imag[2][NUM][17]; u32 rx_cfir[2][NUM]; -#elif (RTL8812F_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ) - u16 iqk_cfir_real[3][2][2][17]; +#elif (RTL8812F_SUPPORT == 1 || RTL8822C_SUPPORT == 1 || RTL8822E_SUPPORT == 1) /*channel / path / TRX(TX:0, RX:1) / CFIR_imag*/ /*channel index = 2 is just for debug*/ + u16 iqk_cfir_real[3][2][2][17]; u16 iqk_cfir_imag[3][2][2][17]; u32 rx_cfir_real[2][2][17]; u32 rx_cfir_imag[2][2][17]; u32 rx_cfir[2][2]; - /*times/path*/ #elif (RTL8195B_SUPPORT == 1) u32 iqk_cfir_real[3][NUM][2][9]; u32 iqk_cfir_imag[3][NUM][2][9]; @@ -135,7 +158,7 @@ struct dm_iqk_info { boolean xym_read; boolean trximr_enable; #if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1 ||\ - RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1) + RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 || RTL8822E_SUPPORT == 1) u32 rx_xym[2][10]; u32 tx_xym[2][10]; u32 gs1_xym[2][6]; @@ -143,12 +166,16 @@ struct dm_iqk_info { u32 rxk1_xym[2][6]; u32 nbtxk_1b38[2]; u32 nbrxk_1b3c[2]; + u32 txxy[2][2]; + u32 rxxy[2][2]; + u32 cfir_en[2][2]; + u32 iqk_tab[2]; #endif -#if (RTL8710C_SUPPORT == 1 || RTL8197G_SUPPORT == 1 ) +#if (RTL8710C_SUPPORT == 1 || RTL8197G_SUPPORT == 1 || RTL8730A_SUPPORT == 1) u32 txxy[2][2]; u32 rxxy[2][2]; #endif -#if (RTL8723F_SUPPORT == 1) +#if (RTL8723F_SUPPORT == 1 || RTL8735B_SUPPORT == 1) u32 txxy[2][2]; u32 rxxy[2][2][2]; #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_kfree.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_kfree.c index fd7a227bb..ebf9818b9 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_kfree.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_kfree.c @@ -2346,9 +2346,9 @@ s8 phydm_get_tssi_trim_de_8197g(void *dm_void, u8 path) if (channel >= 1 && channel <= 3) group = 0; - else if (channel >= 4 && channel <= 9) + else if (channel >= 4 && channel <= 8) group = 1; - else if (channel >= 10 && channel <= 14) + else if (channel >= 9 && channel <= 14) group = 2; else { RF_DBG(dm, DBG_RF_MP, "[kfree] Channel(%d) is not exist in Group\n", @@ -2451,6 +2451,31 @@ void phydm_set_lna_trim_offset_8197g(void *dm_void, u8 path, u8 cg_cs, u8 enable } } +u8 phydm_check_efuse_8710c(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + u8 i, j = 0, pg[5] = {0}; + + odm_efuse_one_byte_read(dm, PPG_THERMAL_OFFSET_10C, &pg[0], false); + + odm_efuse_one_byte_read(dm, PPG_2GL_TX_10C, &pg[1], false); + odm_efuse_one_byte_read(dm, PPG_2GM_TX_10C, &pg[2], false); + odm_efuse_one_byte_read(dm, PPG_2GH_TX_10C, &pg[3], false); + + odm_efuse_one_byte_read(dm, PPG_PABIAS_10C, &pg[4], false); + + for (i = 0; i < 5; i++) { + if (pg[i] == 0xff) + j++; + } + + if (j == 5) { + RF_DBG(dm, DBG_RF_MP, "[kfree] 8710c All efuse no PG !!!\n"); + return false; + } + + return true; +} void phydm_get_thermal_trim_offset_8710c(void *dm_void) { @@ -2462,15 +2487,13 @@ void phydm_get_thermal_trim_offset_8710c(void *dm_void) odm_efuse_one_byte_read(dm, PPG_THERMAL_OFFSET_10C, &pg_therm, false); RF_DBG(dm, DBG_RF_MP, "[kfree] 8710c Efuse thermal:0x%x\n", pg_therm); - if (pg_therm != 0xff) { - pg_therm = pg_therm & 0x1f; - if ((pg_therm & BIT(0)) == 0) - power_trim_info->thermal = (-1 * (pg_therm >> 1)); - else - power_trim_info->thermal = (pg_therm >> 1); + pg_therm = pg_therm & 0x1f; + if ((pg_therm & BIT(0)) == 0) + power_trim_info->thermal = (-1 * (pg_therm >> 1)); + else + power_trim_info->thermal = (pg_therm >> 1); - power_trim_info->flag |= KFREE_FLAG_THERMAL_K_ON; - } + power_trim_info->flag |= KFREE_FLAG_THERMAL_K_ON; RF_DBG(dm, DBG_RF_MP, "[kfree] 8710c thermal trim flag:0x%02x\n", power_trim_info->flag); @@ -2509,20 +2532,18 @@ void phydm_get_set_power_trim_offset_8710c(void *dm_void) odm_efuse_one_byte_read(dm, PPG_2GL_TX_10C, &pg_power, false); - if (pg_power != 0xff) { - power_trim_info->bb_gain[0][RF_PATH_A] = pg_power & 0xf; + power_trim_info->bb_gain[0][RF_PATH_A] = pg_power & 0xf; - odm_efuse_one_byte_read(dm, PPG_2GM_TX_10C, &pg_power, false); - power_trim_info->bb_gain[1][RF_PATH_A] = pg_power & 0xf; + odm_efuse_one_byte_read(dm, PPG_2GM_TX_10C, &pg_power, false); + power_trim_info->bb_gain[1][RF_PATH_A] = pg_power & 0xf; - odm_efuse_one_byte_read(dm, PPG_2GH_TX_10C, &pg_power, false); - power_trim_info->bb_gain[2][RF_PATH_A] = pg_power & 0xf; + odm_efuse_one_byte_read(dm, PPG_2GH_TX_10C, &pg_power, false); + power_trim_info->bb_gain[2][RF_PATH_A] = pg_power & 0xf; - phydm_set_power_trim_offset_8710c(dm); + phydm_set_power_trim_offset_8710c(dm); - power_trim_info->flag = - power_trim_info->flag | KFREE_FLAG_ON | KFREE_FLAG_ON_2G; - } + power_trim_info->flag = + power_trim_info->flag | KFREE_FLAG_ON | KFREE_FLAG_ON_2G; RF_DBG(dm, DBG_RF_MP, "[kfree] 8710c power trim flag:0x%02x\n", power_trim_info->flag); @@ -2548,18 +2569,14 @@ void phydm_get_set_pa_bias_offset_8710c(void *dm_void) odm_efuse_one_byte_read(dm, PPG_PABIAS_10C, &pg_pa_bias, false); - if (pg_pa_bias != 0xff) { - tx_pa_bias = pg_pa_bias & 0xf; + tx_pa_bias = pg_pa_bias & 0xf; - RF_DBG(dm, DBG_RF_MP, - "[kfree] 8710c PathA_pa_bias:0x%x\n", tx_pa_bias); + RF_DBG(dm, DBG_RF_MP, + "[kfree] 8710c PathA_pa_bias:0x%x\n", tx_pa_bias); - odm_set_rf_reg(dm, RF_PATH_A, 0x60, 0x0000f000, tx_pa_bias); + odm_set_rf_reg(dm, RF_PATH_A, 0x60, 0x0000f000, tx_pa_bias); - power_trim_info->pa_bias_flag |= PA_BIAS_FLAG_ON; - } else { - RF_DBG(dm, DBG_RF_MP, "[kfree] 8710c tx pa bias no pg\n"); - } + power_trim_info->pa_bias_flag |= PA_BIAS_FLAG_ON; } void phydm_set_power_trim_offset_8814b(void *dm_void) @@ -3636,6 +3653,668 @@ void phydm_get_set_lna_offset_8723f(void *dm_void) } } +void phydm_get_set_thermal_trim_offset_8735b(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 pg_therm = 0xff, thermal = 0; + + odm_efuse_one_byte_read(dm, PPG_THERMAL_A_OFFSET_35B, &pg_therm, false); + + RF_DBG(dm, DBG_RF_MP, "===>%s hide efuse 0x%x=0x%x\n", + __func__, PPG_THERMAL_A_OFFSET_35B, pg_therm); + + if (pg_therm != 0xff) { + /*s0*/ + pg_therm = pg_therm & 0x1f; + + if (pg_therm & BIT(4)) + thermal = BIT(5) | (pg_therm & 0xf); + else + thermal = pg_therm & 0xf; + + odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, 0x0003f000, thermal); + + power_trim_info->flag |= KFREE_FLAG_THERMAL_K_ON; + + } + + RF_DBG(dm, DBG_RF_MP, "[kfree] 8735b thermal trim flag:0x%02x\n", + power_trim_info->flag); + + if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) + RF_DBG(dm, DBG_RF_MP, "[kfree] 8735b thermalA:%d\n", + thermal); +} + +void phydm_get_set_pa_bias_offset_8735b(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 pg_pa_bias = 0xff; + s8 pg_pa_bias_2g, pg_pa_bias_5g; + + odm_efuse_one_byte_read(dm, PPG_PABIAS_35B, &pg_pa_bias, false); + + RF_DBG(dm, DBG_RF_MP, "======>%s hide efuse 0x%x=0x%x\n", + __func__, PPG_PABIAS_35B, pg_pa_bias); + + if (pg_pa_bias != 0xff) { + /*2G s0*/ + odm_efuse_one_byte_read(dm, PPG_PABIAS_35B, + &pg_pa_bias, false); + pg_pa_bias = pg_pa_bias & 0xf; + + if (pg_pa_bias & BIT(3)) + pg_pa_bias_2g = (-1 * (pg_pa_bias & 0x7)); + else + pg_pa_bias_2g = pg_pa_bias & 0x7; + + RF_DBG(dm, DBG_RF_MP, "[kfree] 2G s0 efuse:pa_bias=0x%x Real:pg_pa_bias_2g=0x%X\n", + pg_pa_bias, pg_pa_bias_2g); + + odm_set_rf_reg(dm, RF_PATH_A, 0x60, 0x0000000f, (pg_pa_bias_2g & 0xf)); + + /*5G s0*/ + odm_efuse_one_byte_read(dm, PPG_PABIAS_35B, + &pg_pa_bias, false); + pg_pa_bias = (pg_pa_bias & 0xf0) >> 4; + + if (pg_pa_bias & BIT(3)) + pg_pa_bias_5g = (-1 * (pg_pa_bias & 0x7)); + else + pg_pa_bias_5g = pg_pa_bias & 0x7; + + RF_DBG(dm, DBG_RF_MP, "[kfree] 5G s0 efuse:pa_bias=0x%x Real:pg_pa_bias=0x%X\n", + pg_pa_bias, pg_pa_bias_5g); + + odm_set_rf_reg(dm, RF_PATH_A, 0x60, 0x00000f00, (pg_pa_bias_5g & 0xf)); + } else { + RF_DBG(dm, DBG_RF_MP, "[kfree] 8735B tx pa bias no pg\n"); + } +} + +void phydm_get_tssi_trim_offset_8735b(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 i, j; + u8 pg_power[8] = {0}; + + odm_efuse_one_byte_read(dm, TSSI_2GM_TXA_35B, &pg_power[0], false); + odm_efuse_one_byte_read(dm, TSSI_2GH_TXA_35B, &pg_power[1], false); + odm_efuse_one_byte_read(dm, TSSI_5GL1_TXA_35B, &pg_power[2], false); + odm_efuse_one_byte_read(dm, TSSI_5GL2_TXA_35B, &pg_power[3], false); + odm_efuse_one_byte_read(dm, TSSI_5GM1_TXA_35B, &pg_power[4], false); + odm_efuse_one_byte_read(dm, TSSI_5GM2_TXA_35B, &pg_power[5], false); + odm_efuse_one_byte_read(dm, TSSI_5GH1_TXA_35B, &pg_power[6], false); + odm_efuse_one_byte_read(dm, TSSI_5GH2_TXA_35B, &pg_power[7], false); + + j = 0; + for (i = 0; i < 8; i++) { + RF_DBG(dm, DBG_RF_MP, "======>%s hide efuse value=x%x\n", + __func__, pg_power[i]); + if (pg_power[i] == 0xff) + j++; + } + + if (j == 8) { + RF_DBG(dm, DBG_RF_MP, "[kfree] 8735b tssi trim no PG\n"); + } else { + power_trim_info->tssi_trim[0][0] = (s8)pg_power[0]; + power_trim_info->tssi_trim[1][0] = (s8)pg_power[0]; + power_trim_info->tssi_trim[2][0] = (s8)pg_power[1]; + power_trim_info->tssi_trim[3][0] = (s8)pg_power[2]; + power_trim_info->tssi_trim[4][0] = (s8)pg_power[3]; + power_trim_info->tssi_trim[5][0] = (s8)pg_power[4]; + power_trim_info->tssi_trim[6][0] = (s8)pg_power[5]; + power_trim_info->tssi_trim[7][0] = (s8)pg_power[6]; + power_trim_info->tssi_trim[8][0] = (s8)pg_power[7]; + + power_trim_info->flag = + power_trim_info->flag | TSSI_TRIM_FLAG_ON; + + if (power_trim_info->flag & TSSI_TRIM_FLAG_ON) { + for (i = 0; i < KFREE_BAND_NUM; i++) { + for (j = 0; j < 1; j++) { + RF_DBG(dm, DBG_RF_MP, + "[kfree] 8735b tssi_trim[%d][%d]=0x%X\n", + i, j, power_trim_info->tssi_trim[i][j]); + } + } + } + } +} + +s8 phydm_get_tssi_trim_de_8735b(void *dm_void, u8 path) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 channel = *dm->channel, group = 0; + + if (channel >= 1 && channel <= 3) + group = 0; + else if (channel >= 4 && channel <= 9) + group = 1; + else if (channel >= 10 && channel <= 14) + group = 2; + else if (channel >= 36 && channel <= 50) + group = 3; + else if (channel >= 52 && channel <= 64) + group = 4; + else if (channel >= 100 && channel <= 120) + group = 5; + else if (channel >= 122 && channel <= 144) + group = 6; + else if (channel >= 149 && channel <= 165) + group = 7; + else if (channel >= 167 && channel <= 177) + group = 8; + else { + RF_DBG(dm, DBG_RF_MP, "[kfree] Channel(%d) is not exist in Group\n", + channel); + return 0; + } + + return power_trim_info->tssi_trim[group][path]; +} + +void phydm_get_set_adck_8735b(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 adck_1 = 0xff, adck_2 = 0xff; + s32 adck_tmp = 0; + + odm_efuse_one_byte_read(dm, PPG_ADCDCK1_35B, &adck_1, false); + odm_efuse_one_byte_read(dm, PPG_ADCDCK2_35B, &adck_2, false); + + RF_DBG(dm, DBG_RF_MP, "======>%s hide efuse 0x%x=0x%x 0x%x=0x%x\n", + __func__, PPG_ADCDCK1_35B, adck_1, PPG_ADCDCK2_35B, adck_2); + + if (adck_1 != 0xff && adck_2 != 0xff) { + if (adck_1 & BIT(7)) + adck_tmp = (-1 * (adck_1 & 0x7f)); + else + adck_tmp = adck_1 & 0x7f; + + odm_set_bb_reg(dm, 0x1868, 0x000003fe, (adck_tmp & 0x1ff)); + + RF_DBG(dm, DBG_RF_MP, "[kfree] hide efuse 0x%x=0x%x adc_dck_bias_tmp=0x%x 0x1868[9:1]=0x%x\n", + PPG_ADCDCK1_35B, adck_1, adck_tmp, + odm_get_bb_reg(dm, 0x1868, 0x000003fe)); + + if (adck_2 & BIT(7)) + adck_tmp = (-1 * (adck_2 & 0x7f)); + else + adck_tmp = adck_2 & 0x7f; + + odm_set_bb_reg(dm, 0x1868, 0x000ff800, (adck_tmp & 0x1ff)); + + RF_DBG(dm, DBG_RF_MP, "[kfree] hide efuse 0x%x=0x%x adc_dck_bias_tmp=0x%x 0x1868[19:11]=0x%x\n", + PPG_ADCDCK2_35B, adck_2, adck_tmp, + odm_get_bb_reg(dm, 0x1868, 0x000ff800)); + } else { + RF_DBG(dm, DBG_RF_MP, "[kfree] 8735B tx ADCK no pg\n"); + } +} + +void phydm_get_set_rx_gain_trim_8735b(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + u8 rx_gain_trim = 0xff; + + odm_efuse_one_byte_read(dm, PPG_RXGAINTRIM_35B, &rx_gain_trim, false); + + RF_DBG(dm, DBG_RF_MP, "======>%s hide efuse 0x%x=0x%x\n", + __func__, PPG_RXGAINTRIM_35B, rx_gain_trim); + + rx_gain_trim = rx_gain_trim & 0xf; + + if ((rx_gain_trim & BIT(3)) == 0x0) { + if (rx_gain_trim == 0x2 && dm->cut_version == ODM_CUT_B) + odm_set_rf_reg(dm, RF_PATH_A, RF_0x88, 0x00007000, 0x3); + else + odm_set_rf_reg(dm, RF_PATH_A, RF_0x88, 0x00007000, (rx_gain_trim & 0x7)); + + RF_DBG(dm, DBG_RF_MP, "[kfree] hide efuse 0x%x[3:0]=0x%x RF 0x88[14:12]=0x%x\n", + PPG_RXGAINTRIM_35B, rx_gain_trim, + odm_get_rf_reg(dm, RF_PATH_A, RF_0x88, 0x00007000)); + } else + RF_DBG(dm, DBG_RF_MP, "[kfree] 8735B RX Gain Trim no pg\n"); +} + +void phydm_get_set_thermal_trim_offset_8730a(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 pg_therm = 0xff, thermal = 0; + + odm_efuse_one_byte_read(dm, PPG_THERMAL_A_OFFSET_30A, &pg_therm, false); + + RF_DBG(dm, DBG_RF_MP, "===>%s hide efuse 0x%x=0x%x\n", + __func__, PPG_THERMAL_A_OFFSET_30A, pg_therm); + + if (pg_therm != 0xff) { + /*s0*/ + pg_therm = pg_therm & 0x1f; + + thermal = + ((pg_therm & 0x1) << 3) | ((pg_therm >> 1) & 0x7); + + /*odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, 0x000f0000, thermal);*/ + + power_trim_info->flag |= KFREE_FLAG_THERMAL_K_ON; + + } + + RF_DBG(dm, DBG_RF_MP, "[kfree] 8730a thermal trim flag:0x%02x\n", + power_trim_info->flag); + + if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) + RF_DBG(dm, DBG_RF_MP, "[kfree] 8730a thermalA:%d\n", + thermal); +} + +void phydm_get_set_pa_bias_offset_8730a(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 pg_pa_bias = 0xff; + u8 pg_pa_bias_2g, pg_pa_bias_5g; + + odm_efuse_one_byte_read(dm, PPG_PABIAS_30A, &pg_pa_bias, false); + + RF_DBG(dm, DBG_RF_MP, "======>%s hide efuse 0x%x=0x%x\n", + __func__, PPG_PABIAS_30A, pg_pa_bias); + + if (pg_pa_bias != 0xff) { + /*2G s0*/ + pg_pa_bias_2g = pg_pa_bias & 0xf; + + RF_DBG(dm, DBG_RF_MP, "[kfree] 2G s0 pa_bias=0x%x\n", pg_pa_bias_2g); + + odm_set_rf_reg(dm, RF_PATH_A, 0x60, 0x0000000f, pg_pa_bias_2g); + + /*5G s0*/ + pg_pa_bias_5g = (pg_pa_bias & 0xf0) >> 4; + + RF_DBG(dm, DBG_RF_MP, "[kfree] 5G s0 pa_bias=0x%x\n", pg_pa_bias_5g); + + odm_set_rf_reg(dm, RF_PATH_A, 0x60, 0x00000f00, pg_pa_bias_5g); + } else { + RF_DBG(dm, DBG_RF_MP, "[kfree] 8730A tx pa bias no pg\n"); + } +} + +void phydm_get_set_thermal_trim_offset_8822e(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 pg_therm = 0xff, thermal[2] = {0}; + + odm_efuse_one_byte_read(dm, PPG_THERMAL_A_OFFSET_22E, &pg_therm, false); + + if (pg_therm != 0xff) { + /*s0*/ + pg_therm = pg_therm & 0x1f; + + thermal[RF_PATH_A] = + ((pg_therm & 0x1) << 3) | ((pg_therm >> 1) & 0x7); + + odm_set_rf_reg(dm, RF_PATH_A, RF_0x43, 0x000f0000, thermal[RF_PATH_A]); + + /*s1*/ + odm_efuse_one_byte_read(dm, PPG_THERMAL_B_OFFSET_22E, &pg_therm, false); + + pg_therm = pg_therm & 0x1f; + + thermal[RF_PATH_B] = ((pg_therm & 0x1) << 3) | ((pg_therm >> 1) & 0x7); + + odm_set_rf_reg(dm, RF_PATH_B, RF_0x43, 0x000f0000, thermal[RF_PATH_B]); + + power_trim_info->flag |= KFREE_FLAG_THERMAL_K_ON; + + } + + RF_DBG(dm, DBG_RF_MP, "[kfree] 8822e thermal trim flag:0x%02x\n", + power_trim_info->flag); + + if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) + RF_DBG(dm, DBG_RF_MP, "[kfree] 8822e thermalA:%d thermalB:%d\n", + thermal[RF_PATH_A], + thermal[RF_PATH_B]); +} + +void phydm_set_power_trim_offset_8822e(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + u8 e_rf_path; + + for (e_rf_path = RF_PATH_A; e_rf_path < 2; e_rf_path++) + { + odm_set_rf_reg(dm, e_rf_path, RF_0xee, BIT(19), 1); + + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x0); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[0][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x1); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[1][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x2); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[2][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x3); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[2][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x4); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[3][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x5); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[4][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x6); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[5][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x7); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[6][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x8); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[7][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0x9); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[3][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0xa); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[4][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0xb); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[5][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0xc); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[6][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0xd); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[7][e_rf_path]); + odm_set_rf_reg(dm, e_rf_path, RF_0x33, RFREGOFFSETMASK, 0xe); + odm_set_rf_reg(dm, e_rf_path, RF_0x3f, RFREGOFFSETMASK, + power_trim_info->bb_gain[7][e_rf_path]); + + odm_set_rf_reg(dm, e_rf_path, RF_0xee, BIT(19), 0); + } +} + +void phydm_get_set_power_trim_offset_8822e(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 pg_power = 0xff, i, j; + u8 pg_power1, pg_power2 , pg_power3, pg_power4, pg_power5; + + odm_efuse_one_byte_read(dm, PPG_2GL_TXAB_22E, &pg_power1, false); + odm_efuse_one_byte_read(dm, PPG_2GM_TXAB_22E, &pg_power2, false); + odm_efuse_one_byte_read(dm, PPG_2GH_TXAB_22E, &pg_power3, false); + odm_efuse_one_byte_read(dm, PPG_5GL1_TXA_22E, &pg_power4, false); + odm_efuse_one_byte_read(dm, PPG_5GL1_TXB_22E, &pg_power5, false); + + if (pg_power1 != 0xff || pg_power2 != 0xff || pg_power3 != 0xff || + pg_power4 != 0xff || pg_power5 != 0xff) { + odm_efuse_one_byte_read(dm, PPG_2GM_TXAB_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[0][0] = pg_power & 0xf; + power_trim_info->bb_gain[0][1] = (pg_power & 0xf0) >> 4; + + odm_efuse_one_byte_read(dm, PPG_2GM_TXAB_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[1][0] = pg_power & 0xf; + power_trim_info->bb_gain[1][1] = (pg_power & 0xf0) >> 4; + + odm_efuse_one_byte_read(dm, PPG_2GM_TXAB_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[2][0] = pg_power & 0xf; + power_trim_info->bb_gain[2][1] = (pg_power & 0xf0) >> 4; + + odm_efuse_one_byte_read(dm, PPG_5GL1_TXA_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[3][0] = pg_power & 0x1f; + odm_efuse_one_byte_read(dm, PPG_5GL1_TXB_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[3][1] = pg_power & 0x1f; + + odm_efuse_one_byte_read(dm, PPG_5GL2_TXA_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[4][0] = pg_power & 0x1f; + odm_efuse_one_byte_read(dm, PPG_5GL2_TXB_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[4][1] = pg_power & 0x1f; + + odm_efuse_one_byte_read(dm, PPG_5GM1_TXA_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[5][0] = pg_power & 0x1f; + odm_efuse_one_byte_read(dm, PPG_5GM1_TXB_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[5][1] = pg_power & 0x1f; + + odm_efuse_one_byte_read(dm, PPG_5GM2_TXA_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[6][0] = pg_power & 0x1f; + odm_efuse_one_byte_read(dm, PPG_5GM2_TXB_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[6][1] = pg_power & 0x1f; + + odm_efuse_one_byte_read(dm, PPG_5GH1_TXA_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[7][0] = pg_power & 0x1f; + odm_efuse_one_byte_read(dm, PPG_5GH1_TXB_22E, &pg_power, false); + if (pg_power == 0xff) + pg_power = 0; + power_trim_info->bb_gain[7][1] = pg_power & 0x1f; + + power_trim_info->flag = + power_trim_info->flag | KFREE_FLAG_ON | + KFREE_FLAG_ON_2G | + KFREE_FLAG_ON_5G; + + phydm_set_power_trim_offset_8822e(dm); + } + + RF_DBG(dm, DBG_RF_MP, "[kfree] 8822e power trim flag:0x%02x\n", + power_trim_info->flag); + + if (power_trim_info->flag & KFREE_FLAG_ON) { + for (i = 0; i < KFREE_BAND_NUM; i++) { + for (j = 0; j < 2; j++) { + RF_DBG(dm, DBG_RF_MP, + "[kfree] 8822e pwr_trim->bb_gain[%d][%d]=0x%X\n", + i, j, power_trim_info->bb_gain[i][j]); + } + } + } +} + +void phydm_get_tssi_trim_offset_8822e(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 i, j; + u8 pg_power[16] = {0}; + + odm_efuse_one_byte_read(dm, TSSI_2GM_TXA_22E, &pg_power[0], false); + odm_efuse_one_byte_read(dm, TSSI_2GM_TXB_22E, &pg_power[1], false); + odm_efuse_one_byte_read(dm, TSSI_2GH_TXA_22E, &pg_power[2], false); + odm_efuse_one_byte_read(dm, TSSI_2GH_TXB_22E, &pg_power[3], false); + odm_efuse_one_byte_read(dm, TSSI_5GL1_TXA_22E, &pg_power[4], false); + odm_efuse_one_byte_read(dm, TSSI_5GL1_TXB_22E, &pg_power[5], false); + odm_efuse_one_byte_read(dm, TSSI_5GL2_TXA_22E, &pg_power[6], false); + odm_efuse_one_byte_read(dm, TSSI_5GL2_TXB_22E, &pg_power[7], false); + odm_efuse_one_byte_read(dm, TSSI_5GM1_TXA_22E, &pg_power[8], false); + odm_efuse_one_byte_read(dm, TSSI_5GM1_TXB_22E, &pg_power[9], false); + odm_efuse_one_byte_read(dm, TSSI_5GM2_TXA_22E, &pg_power[10], false); + odm_efuse_one_byte_read(dm, TSSI_5GM2_TXB_22E, &pg_power[11], false); + odm_efuse_one_byte_read(dm, TSSI_5GH1_TXA_22E, &pg_power[12], false); + odm_efuse_one_byte_read(dm, TSSI_5GH1_TXB_22E, &pg_power[13], false); + odm_efuse_one_byte_read(dm, TSSI_5GH2_TXA_22E, &pg_power[14], false); + odm_efuse_one_byte_read(dm, TSSI_5GH2_TXB_22E, &pg_power[15], false); + + j = 0; + for (i = 0; i < 16; i++) { + if (pg_power[i] == 0xff) + j++; + } + + if (j == 16) { + RF_DBG(dm, DBG_RF_MP, "[kfree] 8822e tssi trim no PG\n"); + } else { + power_trim_info->tssi_trim[0][0] = (s8)pg_power[0]; + power_trim_info->tssi_trim[0][1] = (s8)pg_power[1]; + power_trim_info->tssi_trim[1][0] = (s8)pg_power[0]; + power_trim_info->tssi_trim[1][1] = (s8)pg_power[1]; + power_trim_info->tssi_trim[2][0] = (s8)pg_power[2]; + power_trim_info->tssi_trim[2][1] = (s8)pg_power[3]; + power_trim_info->tssi_trim[3][0] = (s8)pg_power[4]; + power_trim_info->tssi_trim[3][1] = (s8)pg_power[5]; + power_trim_info->tssi_trim[4][0] = (s8)pg_power[6]; + power_trim_info->tssi_trim[4][1] = (s8)pg_power[7]; + power_trim_info->tssi_trim[5][0] = (s8)pg_power[8]; + power_trim_info->tssi_trim[5][1] = (s8)pg_power[9]; + power_trim_info->tssi_trim[6][0] = (s8)pg_power[10]; + power_trim_info->tssi_trim[6][1] = (s8)pg_power[11]; + power_trim_info->tssi_trim[7][0] = (s8)pg_power[12]; + power_trim_info->tssi_trim[7][1] = (s8)pg_power[13]; + power_trim_info->tssi_trim[8][0] = (s8)pg_power[14]; + power_trim_info->tssi_trim[8][1] = (s8)pg_power[15]; + + power_trim_info->flag = + power_trim_info->flag | TSSI_TRIM_FLAG_ON; + + if (power_trim_info->flag & TSSI_TRIM_FLAG_ON) { + for (i = 0; i < KFREE_BAND_NUM; i++) { + for (j = 0; j < 2; j++) { + RF_DBG(dm, DBG_RF_MP, + "[kfree] 8822e tssi_trim[%d][%d]=0x%X\n", + i, j, power_trim_info->tssi_trim[i][j]); + } + } + } + } +} + +s8 phydm_get_tssi_trim_de_8822e(void *dm_void, u8 path) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 channel = *dm->channel, group = 0; + + if (channel >= 1 && channel <= 3) + group = 0; + else if (channel >= 4 && channel <= 9) + group = 1; + else if (channel >= 10 && channel <= 14) + group = 2; + else if (channel >= 36 && channel <= 50) + group = 3; + else if (channel >= 52 && channel <= 64) + group = 4; + else if (channel >= 100 && channel <= 118) + group = 5; + else if (channel >= 120 && channel <= 144) + group = 6; + else if (channel >= 149 && channel <= 165) + group = 7; + else if (channel >= 167 && channel <= 177) + group = 8; + else { + RF_DBG(dm, DBG_RF_MP, "[kfree] Channel(%d) is not exist in Group\n", + channel); + return 0; + } + + return power_trim_info->tssi_trim[group][path]; +} + + + +void phydm_get_set_pa_bias_offset_8822e(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct odm_power_trim_data *power_trim_info = &dm->power_trim_data; + + u8 pg_pa_bias = 0xff; + + RF_DBG(dm, DBG_RF_MP, "======>%s\n", __func__); + + odm_efuse_one_byte_read(dm, PPG_PABIAS_2GA_22E, &pg_pa_bias, false); + + if (pg_pa_bias != 0xff) { + /*2G s0*/ + odm_efuse_one_byte_read(dm, PPG_PABIAS_2GA_22E, + &pg_pa_bias, false); + pg_pa_bias = pg_pa_bias & 0xf; + + RF_DBG(dm, DBG_RF_MP, "[kfree] 2G s0 pa_bias=0x%x\n", pg_pa_bias); + + odm_set_rf_reg(dm, RF_PATH_A, 0x60, 0x0000f000, pg_pa_bias); + + /*2G s1*/ + odm_efuse_one_byte_read(dm, PPG_PABIAS_2GB_22E, + &pg_pa_bias, false); + pg_pa_bias = pg_pa_bias & 0xf; + + RF_DBG(dm, DBG_RF_MP, "[kfree] 2G s1 pa_bias=0x%x\n", pg_pa_bias); + + odm_set_rf_reg(dm, RF_PATH_B, 0x60, 0x0000f000, pg_pa_bias); + + /*5G s0*/ + odm_efuse_one_byte_read(dm, PPG_PABIAS_5GA_22E, + &pg_pa_bias, false); + pg_pa_bias = pg_pa_bias & 0xf; + + RF_DBG(dm, DBG_RF_MP, "[kfree] 5G s0 pa_bias=0x%x\n", pg_pa_bias); + + odm_set_rf_reg(dm, RF_PATH_A, 0x60, 0x000f0000, pg_pa_bias); + + /*5G s1*/ + odm_efuse_one_byte_read(dm, PPG_PABIAS_5GB_22E, + &pg_pa_bias, false); + pg_pa_bias = pg_pa_bias & 0xf; + + RF_DBG(dm, DBG_RF_MP, "[kfree] 5G s1 pa_bias=0x%x\n", pg_pa_bias); + + odm_set_rf_reg(dm, RF_PATH_B, 0x60, 0x000f0000, pg_pa_bias); + + power_trim_info->pa_bias_flag |= PA_BIAS_FLAG_ON; + } else { + RF_DBG(dm, DBG_RF_MP, "[kfree] 8822e tx pa bias no pg\n"); + } + +} + + s8 phydm_get_tssi_trim_de(void *dm_void, u8 path) { struct dm_struct *dm = (struct dm_struct *)dm_void; @@ -3650,6 +4329,8 @@ s8 phydm_get_tssi_trim_de(void *dm_void, u8 path) return phydm_get_tssi_trim_de_8814b(dm, path); else if (dm->support_ic_type & ODM_RTL8723F) return phydm_get_tssi_trim_de_8723f(dm, path); + else if (dm->support_ic_type & ODM_RTL8735B) + return phydm_get_tssi_trim_de_8735b(dm, path); else return 0; } @@ -3658,37 +4339,48 @@ void phydm_do_new_kfree(void *dm_void) { struct dm_struct *dm = (struct dm_struct *)dm_void; +#if (RTL8822C_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8822C) { phydm_get_set_thermal_trim_offset_8822c(dm); phydm_get_set_power_trim_offset_8822c(dm); phydm_get_set_pa_bias_offset_8822c(dm); phydm_get_tssi_trim_offset_8822c(dm); } +#endif +#if(RTL8812F_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8812F) { phydm_get_set_thermal_trim_offset_8812f(dm); phydm_get_set_power_trim_offset_8812f(dm); phydm_get_set_pa_bias_offset_8812f(dm); phydm_get_tssi_trim_offset_8812f(dm); } +#endif +#if(RTL8195B_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8195B) { phydm_get_thermal_trim_offset_8195b(dm); phydm_get_set_power_trim_offset_8195b(dm); phydm_get_set_pa_bias_offset_8195b(dm); } +#endif +#if(RTL8721D_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8721D) { phydm_get_thermal_trim_offset_8721d(dm); phydm_get_set_power_trim_offset_8721d(dm); /*phydm_get_set_pa_bias_offset_8721d(dm);*/ } +#endif +#if(RTL8198F_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8198F) { phydm_get_pa_bias_offset_8198f(dm); phydm_get_set_lna_offset_8198f(dm); } +#endif +#if(RTL8197G_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8197G) { phydm_get_thermal_trim_offset_8197g(dm); phydm_get_set_power_trim_offset_8197g(dm); @@ -3696,19 +4388,28 @@ void phydm_do_new_kfree(void *dm_void) phydm_get_tssi_trim_offset_8197g(dm); phydm_get_set_lna_offset_8197g(dm); } +#endif +#if(RTL8710C_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8710C) { + if (!phydm_check_efuse_8710c(dm)) + return; phydm_get_thermal_trim_offset_8710c(dm); phydm_get_set_power_trim_offset_8710c(dm); phydm_get_set_pa_bias_offset_8710c(dm); } +#endif +#if(RTL8814B_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8814B) { phydm_get_thermal_trim_offset_8814b(dm); phydm_get_set_power_trim_offset_8814b(dm); phydm_get_pa_bias_offset_8814b(dm); phydm_get_tssi_trim_offset_8814b(dm); } +#endif + +#if(RTL8723F_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8723F) { phydm_get_thermal_trim_offset_8723f(dm); phydm_get_set_power_trim_offset_8723f(dm); @@ -3716,6 +4417,35 @@ void phydm_do_new_kfree(void *dm_void) phydm_get_set_lna_offset_8723f(dm); phydm_get_tssi_trim_offset_8723f(dm); } +#endif + +#if(RTL8730A_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8730A) { + phydm_get_set_thermal_trim_offset_8730a(dm); + phydm_get_set_pa_bias_offset_8730a(dm); + } +#endif + +#if(RTL8735B_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8735B) { + phydm_get_set_thermal_trim_offset_8735b(dm); + //phydm_get_set_power_trim_offset_8735b(dm); + phydm_get_set_pa_bias_offset_8735b(dm); + phydm_get_tssi_trim_offset_8735b(dm); + phydm_get_set_adck_8735b(dm); + phydm_get_set_rx_gain_trim_8735b(dm); + } +#endif + +#if (RTL8822E_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8822E) { + phydm_get_set_thermal_trim_offset_8822e(dm); + phydm_get_set_power_trim_offset_8822e(dm); + phydm_get_set_pa_bias_offset_8822e(dm); + /*phydm_get_tssi_trim_offset_8822e(dm);*/ + } +#endif + } void phydm_set_kfree_to_rf(void *dm_void, u8 e_rf_path, u8 data) @@ -3984,6 +4714,9 @@ void phydm_config_kfree(void *dm_void, u8 channel_to_sw) RF_DBG(dm, DBG_RF_MP, "===>[kfree] phy_ConfigKFree()\n"); + if (dm->support_ic_type & ODM_RTL8822E) + return; + if (cali_info->reg_rf_kfree_enable == 2) { RF_DBG(dm, DBG_RF_MP, "[kfree] %s: reg_rf_kfree_enable == 2, Disable\n", diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_kfree.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_kfree.h index 0446c4b6f..38ca9cb72 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_kfree.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_kfree.h @@ -271,6 +271,75 @@ #define TSSI_5GH2_TXC_14B 0x3a2 #define TSSI_5GH2_TXD_14B 0x3a1 +/*8735B*/ +#define PPG_THERMAL_A_OFFSET_35B 0x4c0 + +#define PPG_PABIAS_35B 0x4c1 + +#define TSSI_2GM_TXA_35B 0x4c5 +#define TSSI_2GH_TXA_35B 0x4c6 +#define TSSI_5GL1_TXA_35B 0x4c7 +#define TSSI_5GL2_TXA_35B 0x4c8 +#define TSSI_5GM1_TXA_35B 0x4c9 +#define TSSI_5GM2_TXA_35B 0x4ca +#define TSSI_5GH1_TXA_35B 0x4cb +#define TSSI_5GH2_TXA_35B 0x4cc + +#define PPG_ADCDCK1_35B 0x4de +#define PPG_ADCDCK2_35B 0x4df + +#define PPG_RXGAINTRIM_35B 0x4e1 + +/*8730A*/ +#define PPG_THERMAL_A_OFFSET_30A 0x7b0 +#define PPG_PABIAS_30A 0x7b1 +#define TSSI_2GM_TXA_30A 0x7b5 +#define TSSI_2GH_TXA_30A 0x7b6 +#define TSSI_5GL1_TXA_30A 0x7b7 +#define TSSI_5GL2_TXA_30A 0x7b8 +#define TSSI_5GM1_TXA_30A 0x7b9 +#define TSSI_5GM2_TXA_30A 0x7ba +#define TSSI_5GH1_TXA_30A 0x7bb +#define TSSI_5GH2_TXA_30A 0x7bc + +/*8822E*/ +#define PPG_THERMAL_A_OFFSET_22E 0x5df +#define PPG_THERMAL_B_OFFSET_22E 0x5a0 +#define PPG_2GL_TXAB_22E 0x5c4 +#define PPG_2GM_TXAB_22E 0x5de +#define PPG_2GH_TXAB_22E 0x5c2 +#define PPG_5GL1_TXA_22E 0x5dc +#define PPG_5GL1_TXB_22E 0x5db +#define PPG_5GL2_TXA_22E 0x5d8 +#define PPG_5GL2_TXB_22E 0x5d7 +#define PPG_5GM1_TXA_22E 0x5d4 +#define PPG_5GM1_TXB_22E 0x5d3 +#define PPG_5GM2_TXA_22E 0x5d0 +#define PPG_5GM2_TXB_22E 0x5cf +#define PPG_5GH1_TXA_22E 0x5cc +#define PPG_5GH1_TXB_22E 0x5cb + +#define PPG_PABIAS_2GA_22E 0x5c6 +#define PPG_PABIAS_2GB_22E 0x5c5 +#define PPG_PABIAS_5GA_22E 0x5c8 +#define PPG_PABIAS_5GB_22E 0x5c7 + +#define TSSI_2GM_TXA_22E 0x1c0 +#define TSSI_2GM_TXB_22E 0x1bf +#define TSSI_2GH_TXA_22E 0x1be +#define TSSI_2GH_TXB_22E 0x1bd +#define TSSI_5GL1_TXA_22E 0x1bc +#define TSSI_5GL1_TXB_22E 0x1bb +#define TSSI_5GL2_TXA_22E 0x1ba +#define TSSI_5GL2_TXB_22E 0x1b9 +#define TSSI_5GM1_TXA_22E 0x1b8 +#define TSSI_5GM1_TXB_22E 0x1b7 +#define TSSI_5GM2_TXA_22E 0x1b6 +#define TSSI_5GM2_TXB_22E 0x1b5 +#define TSSI_5GH1_TXA_22E 0x1b4 +#define TSSI_5GH1_TXB_22E 0x1b3 +#define TSSI_5GH2_TXA_22E 0x1b2 +#define TSSI_5GH2_TXB_22E 0x1b1 struct odm_power_trim_data { u8 flag; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking.c index 7cf046e47..c55adf00f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking.c @@ -163,14 +163,22 @@ void halrf_set_pwr_track(void *dm_void, u8 enable) if (enable) { rf->rf_supportability = rf->rf_supportability | HAL_RF_TX_PWR_TRACK; - if (dm->support_ic_type != ODM_RTL8723F) { - if (cali_info->txpowertrack_control == 1 || cali_info->txpowertrack_control == 3) + if (dm->support_ic_type == ODM_RTL8735B){ + if (cali_info->txpowertrack_control == 3 || + cali_info->txpowertrack_control == 4) { + halrf_tssi_get_efuse(dm); halrf_do_tssi(dm); + } + } else if (dm->support_ic_type != ODM_RTL8723F) { + /*if (cali_info->txpowertrack_control == 1 || cali_info->txpowertrack_control == 3)*/ + if (cali_info->txpowertrack_control == 3) { + halrf_tssi_get_efuse(dm); + halrf_do_tssi(dm); + } + } else { + halrf_tssi_get_efuse(dm); + halrf_do_tssi(dm); } - - halrf_tssi_get_efuse(dm); - halrf_do_tssi(dm); - } else { rf->rf_supportability = rf->rf_supportability & ~HAL_RF_TX_PWR_TRACK; odm_clear_txpowertracking_state(dm); diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_ce.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_ce.c index e1a9b597e..413d8b046 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_ce.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_ce.c @@ -713,9 +713,8 @@ void odm_txpowertracking_thermal_meter_init(void *dm_void) cali_info->thermal_value_iqk = rf->eeprom_thermal; cali_info->thermal_value_lck = rf->eeprom_thermal; -#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8723F_SUPPORT == 1) - if (dm->support_ic_type == ODM_RTL8822C || - dm->support_ic_type == ODM_RTL8723F) { +#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8723F_SUPPORT == 1 || RTL8822E_SUPPORT == 1) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F | ODM_RTL8822E)) { cali_info->thermal_value_path[RF_PATH_A] = tssi->thermal[RF_PATH_A]; cali_info->thermal_value_path[RF_PATH_B] = tssi->thermal[RF_PATH_B]; cali_info->thermal_value_iqk = tssi->thermal[RF_PATH_A]; @@ -833,7 +832,7 @@ void odm_txpowertracking_check_ce(void *dm_void) #endif if ((rf->power_track_type & 0xf0) >> 4 != 0) { - if (dm->support_ic_type & ODM_RTL8822C) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) { /*halrf_tssi_cck(dm);*/ /*halrf_thermal_cck(dm);*/ return; @@ -849,7 +848,7 @@ void odm_txpowertracking_check_ce(void *dm_void) ODM_RTL8192F)) odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER_NEW, (BIT(17) | BIT(16)), 0x03); - else if (dm->support_ic_type & ODM_RTL8822C) { + else if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) { odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01); odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x00); odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01); @@ -866,8 +865,8 @@ void odm_txpowertracking_check_ce(void *dm_void) odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER_OLD, RFREGOFFSETMASK, 0x60); -#if (RTL8814B_SUPPORT == 1) - if (dm->support_ic_type & ODM_RTL8814B) { +#if (RTL8814B_SUPPORT == 1 || RTL8822E_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8822E)) { ODM_delay_us(300); odm_txpowertracking_new_callback_thermal_meter(dm); tssi->thermal_trigger = 1; @@ -877,10 +876,10 @@ void odm_txpowertracking_check_ce(void *dm_void) return; } - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B)) { -#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8822E)) { +#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8822E_SUPPORT == 1) odm_txpowertracking_new_callback_thermal_meter(dm); - if (dm->support_ic_type & ODM_RTL8814B) + if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8822E)) tssi->thermal_trigger = 0; #endif } else diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_ce.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_ce.h index 3fec1abf7..9f09ebbc6 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_ce.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_ce.h @@ -36,6 +36,7 @@ /*@JJ ADD 20161014 */ #define CCK_TABLE_SIZE_8710B 41 #define CCK_TABLE_SIZE_8192F 41 +#define AVG_THERMAL_NUM_LCK 2 #define TXPWR_TRACK_TABLE_SIZE 30 #define DELTA_SWINGIDX_SIZE 30 @@ -118,6 +119,7 @@ struct dm_rf_calibration_struct { u8 thermal_value_avg_path[MAX_RF_PATH][AVG_THERMAL_NUM]; u8 thermal_value_avg_index; u8 thermal_value_avg_index_path[MAX_RF_PATH]; + u8 thermal_value_avg_pwrtrk[MAX_RF_PATH]; u8 thermal_value_rx_gain; u8 thermal_value_crystal; u8 thermal_value_dpk_store; @@ -291,6 +293,9 @@ struct dm_rf_calibration_struct { /*@Add by Yuchen for Kfree Phydm*/ u8 reg_rf_kfree_enable; /*for registry*/ u8 rf_kfree_enable; /*for efuse enable check*/ + u8 thermal_lck[MAX_RF_PATH]; + u8 thermal_lck_avg[MAX_RF_PATH][AVG_THERMAL_NUM_LCK]; + u8 thermal_lck_avg_index; }; void odm_txpowertracking_check(void *dm_void); diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_iot.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_iot.c index 5b7202929..117b9457b 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_iot.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_iot.c @@ -956,6 +956,9 @@ odm_txpowertracking_check_iot( if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK)) return; + if (dm->support_ic_type == ODM_RTL8735B && rf->is_tssi_in_progress == 1) + return; + if (!dm->rf_calibrate_info.tm_trigger) { if (dm->support_ic_type == ODM_RTL8195B) odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER_NEW, (BIT(17) | BIT(16)), 0x03); @@ -963,10 +966,17 @@ odm_txpowertracking_check_iot( dm->support_ic_type == ODM_RTL8710C) odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER_NEW, (BIT(12) | BIT(11)), 0x03); + else if (dm->support_ic_type == ODM_RTL8735B) { + odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(19), 0x0); + odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(19), 0x1); + odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(19), 0x0); + ODM_delay_us(100); + } dm->rf_calibrate_info.tm_trigger = 1; return; } + odm_txpowertracking_callback_thermal_meter(dm); dm->rf_calibrate_info.tm_trigger = 0; } diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_iot.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_iot.h index 082e248c2..bd7d4a8a2 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_iot.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_iot.h @@ -131,6 +131,7 @@ struct dm_rf_calibration_struct { u8 thermal_value_crystal; u8 thermal_value_dpk_store; u8 thermal_value_dpk_track; + u8 thermal_current_avg_value; boolean txpowertracking_in_progress; boolean is_reloadtxpowerindex; @@ -148,6 +149,7 @@ struct dm_rf_calibration_struct { boolean is_tx_power_changed; s8 xtal_offset; s8 xtal_offset_last; + u8 xtal_final; #if (RTL8710B_SUPPORT == 1) struct iqk_matrix_regs_setting iqk_matrix_reg_setting[IQK_MATRIX_SETTINGS_NUM]; @@ -160,50 +162,19 @@ struct dm_rf_calibration_struct { u8 delta_swing_table_idx_2g_cck_a_n[DELTA_SWINGIDX_SIZE]; u8 delta_swing_table_idx_2g_cck_b_p[DELTA_SWINGIDX_SIZE]; u8 delta_swing_table_idx_2g_cck_b_n[DELTA_SWINGIDX_SIZE]; -#if !(DM_ODM_SUPPORT_TYPE & ODM_IOT) - u8 delta_swing_table_idx_2g_cck_c_p[DELTA_SWINGIDX_SIZE]; - u8 delta_swing_table_idx_2g_cck_c_n[DELTA_SWINGIDX_SIZE]; - u8 delta_swing_table_idx_2g_cck_d_p[DELTA_SWINGIDX_SIZE]; - u8 delta_swing_table_idx_2g_cck_d_n[DELTA_SWINGIDX_SIZE]; -#endif + u8 delta_swing_table_idx_2ga_p[DELTA_SWINGIDX_SIZE]; u8 delta_swing_table_idx_2ga_n[DELTA_SWINGIDX_SIZE]; u8 delta_swing_table_idx_2gb_p[DELTA_SWINGIDX_SIZE]; u8 delta_swing_table_idx_2gb_n[DELTA_SWINGIDX_SIZE]; -#if !(DM_ODM_SUPPORT_TYPE & ODM_IOT) - u8 delta_swing_table_idx_2gc_p[DELTA_SWINGIDX_SIZE]; - u8 delta_swing_table_idx_2gc_n[DELTA_SWINGIDX_SIZE]; - u8 delta_swing_table_idx_2gd_p[DELTA_SWINGIDX_SIZE]; - u8 delta_swing_table_idx_2gd_n[DELTA_SWINGIDX_SIZE]; -#endif -#if (RTL8195B_SUPPORT == 1 || RTL8721D_SUPPORT == 1) +#if (RTL8195B_SUPPORT == 1 || RTL8721D_SUPPORT == 1 || RTL8730A_SUPPORT == 1 || RTL8735B_SUPPORT) u8 delta_swing_table_idx_5ga_p[BAND_NUM][DELTA_SWINGIDX_SIZE]; u8 delta_swing_table_idx_5ga_n[BAND_NUM][DELTA_SWINGIDX_SIZE]; u8 delta_swing_table_idx_5gb_p[BAND_NUM][DELTA_SWINGIDX_SIZE]; u8 delta_swing_table_idx_5gb_n[BAND_NUM][DELTA_SWINGIDX_SIZE]; #endif -#if !(DM_ODM_SUPPORT_TYPE & ODM_IOT) - u8 delta_swing_table_idx_5gc_p[BAND_NUM][DELTA_SWINGIDX_SIZE]; - u8 delta_swing_table_idx_5gc_n[BAND_NUM][DELTA_SWINGIDX_SIZE]; - u8 delta_swing_table_idx_5gd_p[BAND_NUM][DELTA_SWINGIDX_SIZE]; - u8 delta_swing_table_idx_5gd_n[BAND_NUM][DELTA_SWINGIDX_SIZE]; -#endif -#if !(DM_ODM_SUPPORT_TYPE & ODM_IOT) - u8 delta_swing_tssi_table_2g_cck_a[DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_2g_cck_b[DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_2g_cck_c[DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_2g_cck_d[DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_2ga[DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_2gb[DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_2gc[DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_2gd[DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_5ga[BAND_NUM][DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_5gb[BAND_NUM][DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_5gc[BAND_NUM][DELTA_SWINTSSI_SIZE]; - u8 delta_swing_tssi_table_5gd[BAND_NUM][DELTA_SWINTSSI_SIZE]; -#endif s8 delta_swing_table_xtal_p[DELTA_SWINGIDX_SIZE]; s8 delta_swing_table_xtal_n[DELTA_SWINGIDX_SIZE]; u8 delta_swing_table_idx_2ga_p_8188e[DELTA_SWINGIDX_SIZE]; @@ -211,11 +182,8 @@ struct dm_rf_calibration_struct { u8 bb_swing_idx_ofdm[MAX_RF_PATH]; u8 bb_swing_idx_ofdm_current; -#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE | ODM_IOT)) u8 bb_swing_idx_ofdm_base[MAX_RF_PATH]; -#else - u8 bb_swing_idx_ofdm_base; -#endif + boolean default_bb_swing_index_flag; boolean bb_swing_flag_ofdm; u8 bb_swing_idx_cck; @@ -263,17 +231,12 @@ struct dm_rf_calibration_struct { u32 IQK_MAC_backup[IQK_MAC_REG_NUM]; u32 IQK_BB_backup_recover[9]; u32 IQK_BB_backup[IQK_BB_REG_NUM]; -#if !(DM_ODM_SUPPORT_TYPE & ODM_IOT) - u32 tx_iqc_8723b[2][3][2]; /* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}} */ - u32 rx_iqc_8723b[2][2][2]; /* { {S1: 0xc14, 0xca0} , {S0: 0xc14, 0xca0}} */ - u32 tx_iqc_8703b[3][2]; /* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}*/ - u32 rx_iqc_8703b[2][2]; /* { {S1: 0xc14, 0xca0} , {S0: 0xc14, 0xca0}}*/ - u32 tx_iqc_8723d[2][3][2]; /* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}*/ - u32 rx_iqc_8723d[2][2][2]; /* { {S1: 0xc14, 0xca0} , {S0: 0xc14, 0xca0}}*/ -#endif + /* JJ ADD 20161014 */ +#if (RTL8710B_SUPPORT == 1) u32 tx_iqc_8710b[2][3][2]; /* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}*/ u32 rx_iqc_8710b[2][2][2]; /* { {S1: 0xc14, 0xca0} , {S0: 0xc14, 0xca0}}*/ +#endif u8 iqk_step; u8 kcount; @@ -311,6 +274,7 @@ struct dm_rf_calibration_struct { /*Add by Yuchen for Kfree Phydm*/ u8 reg_rf_kfree_enable; /*for registry*/ u8 rf_kfree_enable; /*for efuse enable check*/ + boolean pa_dynamic_bias_enable; }; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_win.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_win.c index 02637f584..648116475 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_win.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_win.c @@ -677,9 +677,9 @@ odm_txpowertracking_thermal_meter_init( cali_info->thermal_value_iqk = hal_data->eeprom_thermal_meter; cali_info->thermal_value_lck = hal_data->eeprom_thermal_meter; -#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8723F_SUPPORT == 1 || RTL8814C_SUPPORT == 1) - if (dm->support_ic_type == ODM_RTL8822C || - dm->support_ic_type == ODM_RTL8723F) { +#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8723F_SUPPORT == 1 ||\ + RTL8814C_SUPPORT == 1 || RTL8822E_SUPPORT == 1) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F | ODM_RTL8822E)) { cali_info->thermal_value_path[RF_PATH_A] = tssi->thermal[RF_PATH_A]; cali_info->thermal_value_path[RF_PATH_B] = tssi->thermal[RF_PATH_B]; cali_info->thermal_value_iqk = tssi->thermal[RF_PATH_A]; @@ -860,8 +860,8 @@ odm_txpowertracking_direct_call( return; #endif } - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8814C)) { -#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8814C_SUPPORT == 1) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8814C | ODM_RTL8822E)) { +#if (RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || RTL8814C_SUPPORT == 1 || RTL8822E_SUPPORT == 1) odm_txpowertracking_new_callback_thermal_meter(dm); #endif } else @@ -891,7 +891,7 @@ odm_txpowertracking_thermal_meter_check( || IS_HARDWARE_TYPE_8822B(adapter) || IS_HARDWARE_TYPE_8723D(adapter) || IS_HARDWARE_TYPE_8821C(adapter) || IS_HARDWARE_TYPE_8710B(adapter) )/* JJ ADD 20161014 */ PHY_SetRFReg(adapter, RF_PATH_A, RF_T_METER_88E, BIT(17) | BIT(16), 0x03); - else if (IS_HARDWARE_TYPE_8822C(adapter)) { + else if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) { odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01); odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x00); odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01); @@ -904,7 +904,7 @@ odm_txpowertracking_thermal_meter_check( odm_set_rf_reg(dm, RF_PATH_B, 0x42, BIT(17), 0x1); odm_set_rf_reg(dm, RF_PATH_C, 0x42, BIT(17), 0x1); odm_set_rf_reg(dm, RF_PATH_D, 0x42, BIT(17), 0x1); - } else if (IS_HARDWARE_TYPE_8723F(adapter)) { + } else if (dm->support_ic_type & ODM_RTL8723F) { odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(16), 0x01); odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(16), 0x00); odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(16), 0x01); @@ -912,7 +912,7 @@ odm_txpowertracking_thermal_meter_check( else PHY_SetRFReg(adapter, RF_PATH_A, RF_T_METER, RFREGOFFSETMASK, 0x60); - if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) { + if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C | ODM_RTL8822E)) { ODM_delay_us(300); odm_txpowertracking_direct_call(adapter); tssi->thermal_trigger = 1; @@ -926,7 +926,7 @@ odm_txpowertracking_thermal_meter_check( RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("Schedule TxPowerTracking direct call!!\n")); odm_txpowertracking_direct_call(adapter); - if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) + if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C | ODM_RTL8822E)) tssi->thermal_trigger = 0; tm_trigger = 0; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_win.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_win.h index f84d440da..c96931807 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_win.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_powertracking_win.h @@ -28,6 +28,9 @@ #define BAND_NUM 3 #define MAX_RF_PATH 4 #define CCK_TABLE_SIZE_88F 21 +#define AVG_THERMAL_NUM_LCK 2 + + /* JJ ADD 20161014 */ #define CCK_TABLE_SIZE_8710B 41 #define CCK_TABLE_SIZE_8192F 41 @@ -140,6 +143,7 @@ struct dm_rf_calibration_struct { u8 thermal_value_avg_index; u8 thermal_value_avg_index_path[MAX_RF_PATH]; u8 thermal_value_rx_gain; + u8 thermal_value_avg_pwrtrk[MAX_RF_PATH]; boolean is_reloadtxpowerindex; @@ -296,8 +300,11 @@ struct dm_rf_calibration_struct { s8 modify_tx_agc_value_cck; /*Add by Yuchen for Kfree Phydm*/ - u8 reg_rf_kfree_enable; /*for registry*/ - u8 rf_kfree_enable; /*for efuse enable check*/ + u8 reg_rf_kfree_enable; /*for registry*/ + u8 rf_kfree_enable; /*for efuse enable check*/ + u8 thermal_lck[MAX_RF_PATH]; + u8 thermal_lck_avg[MAX_RF_PATH][AVG_THERMAL_NUM_LCK]; + u8 thermal_lck_avg_index; }; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_psd.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_psd.c index b7747f142..60b0ba8bd 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_psd.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_psd.c @@ -140,9 +140,15 @@ void halrf_psd( dbg_print("[PSD]point=%d, start_point=%d, stop_point=%d, average=%d, average_tmp=%d, buf_size=%d\n", point, start_point, stop_point, average, average_tmp, psd->buf_size); #endif - +#if (DM_ODM_SUPPORT_TYPE & ODM_IOT) +#ifdef CONFIG_MP_INCLUDED for (i = 0; i < psd->buf_size; i++) psd->psd_data[i] = 0; +#endif +#else + for (i = 0; i < psd->buf_size; i++) + psd->psd_data[i] = 0; +#endif if (dm->support_ic_type & ODM_RTL8710B) avg_org = odm_get_bb_reg(dm, psd_reg, 0x30000); @@ -191,8 +197,15 @@ void halrf_psd( /*dbg_print("\n");*/ #endif +#if (DM_ODM_SUPPORT_TYPE & ODM_IOT) +#ifdef CONFIG_MP_INCLUDED data_tatal = phydm_division64((data_tatal * 100), average_tmp); psd->psd_data[j] = (u32)_sqrt(data_tatal); +#endif +#else + data_tatal = phydm_division64((data_tatal * 100), average_tmp); + psd->psd_data[j] = (u32)_sqrt(data_tatal); +#endif i++; j++; @@ -333,6 +346,75 @@ void _halrf_iqk_psd_init_8723f(void *dm_void, boolean onoff) } } +void _halrf_iqk_psd_init_8730a(void *dm_void, boolean onoff) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + + if (onoff) { + /*01_D2_AFE_ON_BB_settings.txt*/ + odm_set_bb_reg(dm, 0x1c38, MASKDWORD, 0x0); + odm_set_bb_reg(dm, R_0x1810, MASKDWORD, 0x10001600); + odm_set_bb_reg(dm, R_0x1814, MASKDWORD, 0x5bba5020); + odm_set_bb_reg(dm, R_0x1818, MASKDWORD, 0x0001d429); + odm_set_bb_reg(dm, R_0x181c, MASKDWORD, 0x00000140); + odm_set_bb_reg(dm, R_0x1830, BIT(30), 0x0); + odm_set_bb_reg(dm, R_0x1860, 0xFF000000, 0x0F); + odm_set_bb_reg(dm, R_0x1860, 0x00FFF000, 0x001); + odm_set_bb_reg(dm, 0x09f0, 0x0000FFFF, 0x5555); + odm_set_bb_reg(dm, 0x1d40, BIT(3), 0x1); + odm_set_bb_reg(dm, 0x1d40, 0x00000007, 0x4); + + odm_set_bb_reg(dm, 0x09b4, 0x00000700, 0x5); + odm_set_bb_reg(dm, 0x09b4, 0x00003800, 0x5); + odm_set_bb_reg(dm, 0x09b4, 0x0001C000, 0x5); + odm_set_bb_reg(dm, 0x09b4, 0x000E0000, 0x5); + odm_set_bb_reg(dm, R_0x1c20, BIT(5), 0x1); + + odm_set_bb_reg(dm, R_0x1e24, BIT(31), 0x0); + odm_set_bb_reg(dm, R_0x1e28, 0x0000000F, 0x1); + odm_set_bb_reg(dm, R_0x824, 0x000F0000, 0x1); + odm_set_bb_reg(dm, R_0x1cd0, 0xF0000000, 0x7); + odm_set_bb_reg(dm, R_0x2a24, BIT(13), 0x1); + odm_set_bb_reg(dm, R_0x1c68, BIT(24), 0x1); + odm_set_bb_reg(dm, R_0x1864, BIT(31), 0x1); + odm_set_bb_reg(dm, R_0x180c, BIT(27), 0x1); + odm_set_bb_reg(dm, R_0x180c, BIT(30), 0x1); + odm_set_bb_reg(dm, R_0x1e24, BIT(17), 0x1); + odm_set_bb_reg(dm, R_0x180c, BIT(31), 0x1); + odm_set_bb_reg(dm, R_0x1880, BIT(21), 0x0); + odm_set_bb_reg(dm, R_0x1c38, MASKDWORD, 0xffffffff); + /*02_1_backup_and_nctl_rst_on.txt*/ + odm_set_bb_reg(dm, R_0x1b80, MASKDWORD, 0x00000006); + /*02_IQK_Preset.txt*/ + odm_set_bb_reg(dm, R_0x1b08, MASKDWORD, 0x00000080); + /*04 init*/ + odm_set_bb_reg(dm, R_0x1b00, MASKDWORD, 0x00000008); + odm_set_bb_reg(dm, R_0x1b18, MASKDWORD, 0x40010101); + odm_set_bb_reg(dm, R_0x1b14, MASKDWORD, 0x40010100); + odm_set_bb_reg(dm, R_0x1b0c, 0x00000c00, 0x3); + odm_set_bb_reg(dm, R_0x1bcc, 0x0000003f, 0x3f); + //DbgPrint("[PSD][8730A]iqkpsd init!\n"); + } else { + /*10_IQK_Reg_PSD_Restore.txt*/ + odm_set_bb_reg(dm, R_0x1b80, MASKDWORD, 0x00000002); + odm_set_bb_reg(dm, R_0x1b08, MASKDWORD, 0x00000000); + //10 or1 0xEE 0x0 [19] + //10 or1 0x0 0x3 [19:16] + //10 or1 0x5 0x1 [0] + /*11_restore_AFE_BB_settings.txt*/ + odm_set_bb_reg(dm, 0x1c38, MASKDWORD, 0x0); + odm_set_bb_reg(dm, R_0x1830, BIT(30), 0x1); + odm_set_bb_reg(dm, R_0x1e24, BIT(31), 0x1); + odm_set_bb_reg(dm, R_0x2a24, BIT(13), 0x0); + odm_set_bb_reg(dm, R_0x1c68, BIT(24), 0x0); + odm_set_bb_reg(dm, R_0x1864, BIT(31), 0x0); + odm_set_bb_reg(dm, R_0x180c, BIT(27), 0x0); + odm_set_bb_reg(dm, R_0x180c, BIT(30), 0x0); + odm_set_bb_reg(dm, R_0x1880, BIT(21), 0x0); + //DbgPrint("[PSD][8730A]iqkpsd resotre!\n"); + } +} + void _halrf_psd_iqk_init_8814c(struct dm_struct *dm) { odm_set_bb_reg(dm, 0x1b04, MASKDWORD, 0x0); @@ -345,6 +427,364 @@ void _halrf_psd_iqk_init_8814c(struct dm_struct *dm) odm_set_bb_reg(dm, 0x1bcc, 0x3f, 0x3f); } +void _halrf_psd_iqk_init_8735b(struct dm_struct *dm) +{ + odm_set_bb_reg(dm, R_0x1b08, MASKDWORD, 0x00000080); + odm_set_bb_reg(dm, R_0x1b00, MASKDWORD, 0x00000008); + odm_set_bb_reg(dm, R_0x1b18, MASKDWORD, 0x40010101); + odm_set_bb_reg(dm, R_0x1b14, MASKDWORD, 0x40010100); + odm_set_bb_reg(dm, R_0x1b0c, 0x00000c00, 0x3); + odm_set_bb_reg(dm, R_0x1bcc, 0x0000003f, 0x3f); +} + +void _halrf_psd_iqk_init_8822e(struct dm_struct *dm) +{ + /*02_8822E_BB_for_IQK*/ + odm_set_bb_reg(dm, R_0x1e24, 0x00020000, 0x1); + odm_set_bb_reg(dm, R_0x1cd0, 0x10000000, 0x1); + odm_set_bb_reg(dm, R_0x1cd0, 0x20000000, 0x1); + odm_set_bb_reg(dm, R_0x1cd0, 0x40000000, 0x1); + odm_set_bb_reg(dm, R_0x1cd0, 0x80000000, 0x0); + odm_set_bb_reg(dm, R_0x1c68, 0x0f000000, 0xf); + odm_set_bb_reg(dm, R_0x1864, 0x80000000, 0x1); + odm_set_bb_reg(dm, R_0x4164, 0x80000000, 0x1); + odm_set_bb_reg(dm, R_0x180c, 0x08000000, 0x1); + odm_set_bb_reg(dm, R_0x410c, 0x08000000, 0x1); + odm_set_bb_reg(dm, R_0x186c, 0x00000080, 0x1); + odm_set_bb_reg(dm, R_0x416c, 0x00000080, 0x1); + odm_set_bb_reg(dm, R_0x180c, 0x00000003, 0x0); + odm_set_bb_reg(dm, R_0x410c, 0x00000003, 0x0); + odm_set_bb_reg(dm, R_0x1a00, 0x00000003, 0x2); + odm_set_bb_reg(dm, R_0x1b08, MASKDWORD, 0x00000080); + + /*03_8822E_AFE_for_IQK*/ + odm_set_bb_reg(dm, R_0x1c38, MASKDWORD, 0x00000000); + odm_set_bb_reg(dm, R_0x1c38, MASKDWORD, 0xffffffff); +#if 0 + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x700f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x700f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x701f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x702f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x703f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x704f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x705f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x706f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x707f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x708f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x709f0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70af0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70bf0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70cf0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70df0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70ef0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70ff0001); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70ff0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x700f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x700f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x701f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x702f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x703f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x704f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x705f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x706f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x707f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x708f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x709f0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70af0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70bf0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70cf0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70df0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70ef0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70ff0001); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70ff0001); +#endif + + /*RX_IQK_PSD_8822E_S0_20220211*/ + odm_set_bb_reg(dm, R_0x1b04, MASKDWORD, 0x00000000); + odm_set_bb_reg(dm, R_0x1b08, MASKDWORD, 0x00000080); + odm_set_bb_reg(dm, R_0x1b0c, 0x00000c00, 0x3); + odm_set_bb_reg(dm, R_0x1b14, MASKDWORD, 0x00000000); + odm_set_bb_reg(dm, R_0x1b18, MASKDWORD, 0x00000001); + odm_set_bb_reg(dm, R_0x1b1c, MASKDWORD, 0x821e3d21); + odm_set_bb_reg(dm, R_0x1b20, 0x20000000, 0x0); + odm_set_bb_reg(dm, R_0x1b28, MASKDWORD, 0x00000000); + odm_set_bb_reg(dm, R_0x1bcc, 0x0000003f, 0x3f); +} + +void _halrf_psd_iqk_reload_8822e(struct dm_struct *dm) +{ + /*10_8822E_AFE_for_IQK_restore*/ + odm_set_bb_reg(dm, R_0x1c38, MASKDWORD, 0x00000000); + odm_set_bb_reg(dm, R_0x1c38, MASKDWORD, 0xffa1005e); +#if 0 + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x700b8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70144041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70244041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70344041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70444041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x705b8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70644041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x707b8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x708b8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x709b8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70ab8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70bb8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70cb8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70db8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70eb8041); + odm_set_bb_reg(dm, R_0x1830, MASKDWORD, 0x70fb8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x700b8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70144041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70244041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70344041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70444041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x705b8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70644041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x707b8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x708b8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x709b8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70ab8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70bb8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70cb8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70db8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70eb8041); + odm_set_bb_reg(dm, R_0x4130, MASKDWORD, 0x70fb8041); +#endif + + /*11_8822E_BB_for_IQK_restore*/ + /*odm_set_bb_reg(dm, R_0x1b00, 0x00000006, 0x0);*/ + odm_set_bb_reg(dm, R_0x1b08, MASKDWORD, 0x00000000); + odm_set_bb_reg(dm, R_0x1c68, 0x0f000000, 0x0); + odm_set_bb_reg(dm, R_0x1d0c, 0x00010000, 0x1); + odm_set_bb_reg(dm, R_0x1d0c, 0x00010000, 0x0); + odm_set_bb_reg(dm, R_0x1d0c, 0x00010000, 0x1); + odm_set_bb_reg(dm, R_0x1864, 0x80000000, 0x0); + odm_set_bb_reg(dm, R_0x4164, 0x80000000, 0x0); + odm_set_bb_reg(dm, R_0x180c, 0x08000000, 0x0); + odm_set_bb_reg(dm, R_0x410c, 0x08000000, 0x0); + odm_set_bb_reg(dm, R_0x186c, 0x00000080, 0x0); + odm_set_bb_reg(dm, R_0x416c, 0x00000080, 0x0); + odm_set_bb_reg(dm, R_0x180c, 0x00000003, 0x3); + odm_set_bb_reg(dm, R_0x410c, 0x00000003, 0x3); + odm_set_bb_reg(dm, R_0x1a00, 0x00000003, 0x0); +} + + + +#if (RTL8814C_SUPPORT == 1) +void _halrf_iqk_psd_enterpsd_8814c(struct dm_struct *dm) +{ + struct _hal_rf_ *rf = &(dm->rf_table); + struct _halrf_psd_data *psd = &(rf->halrf_psd_data); + + u32 backup_bb_reg_8814c[18] = {0x1e24, 0x1cd0, 0x1b08, 0x1d58, 0x1834, + 0x4134, 0x5234, 0x5334, 0x180c, 0x410c, + 0x520c, 0x530c, 0x186c, 0x416c, 0x526c, + 0x536c, 0x1a00, 0x1c38}; + + backup_bb_register(dm, psd->bb_backup, backup_bb_reg_8814c, 18); + + odm_set_bb_reg(dm, 0x1e24, 0x00020000, 0x1); + odm_set_bb_reg(dm, 0x1cd0, 0x10000000, 0x1); + odm_set_bb_reg(dm, 0x1cd0, 0x20000000, 0x1); + odm_set_bb_reg(dm, 0x1cd0, 0x40000000, 0x1); + odm_set_bb_reg(dm, 0x1cd0, 0x80000000, 0x0); + odm_set_bb_reg(dm, 0x1b08, 0xffffffff, 0x00000080); + odm_set_bb_reg(dm, 0x1d58, 0x00000ff8, 0x1ff); + odm_set_bb_reg(dm, 0x1834, 0x00008000, 0x1); + odm_set_bb_reg(dm, 0x4134, 0x00008000, 0x1); + odm_set_bb_reg(dm, 0x5234, 0x00008000, 0x1); + odm_set_bb_reg(dm, 0x5334, 0x00008000, 0x1); + odm_set_bb_reg(dm, 0x180c, 0x08000000, 0x1); + odm_set_bb_reg(dm, 0x410c, 0x08000000, 0x1); + odm_set_bb_reg(dm, 0x520c, 0x08000000, 0x1); + odm_set_bb_reg(dm, 0x530c, 0x08000000, 0x1); + odm_set_bb_reg(dm, 0x186c, 0x00000080, 0x1); + odm_set_bb_reg(dm, 0x416c, 0x00000080, 0x1); + odm_set_bb_reg(dm, 0x526c, 0x00000080, 0x1); + odm_set_bb_reg(dm, 0x536c, 0x00000080, 0x1); + odm_set_bb_reg(dm, 0x180c, 0x00000003, 0x0); + odm_set_bb_reg(dm, 0x410c, 0x00000003, 0x0); + odm_set_bb_reg(dm, 0x520c, 0x00000003, 0x0); + odm_set_bb_reg(dm, 0x530c, 0x00000003, 0x0); + odm_set_bb_reg(dm, 0x1a00, 0x00000003, 0x2); + odm_set_bb_reg(dm, 0x1c38, 0xffffffff, 0xffffffff); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x700f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x700f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x701f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x702f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x703f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x704f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x705f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x706f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x707f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x708f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x709f0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70af0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70bf0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70cf0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70df0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70ef0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70ff0001); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70ff0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x700f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x700f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x701f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x702f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x703f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x704f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x705f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x706f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x707f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x708f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x709f0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70af0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70bf0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70cf0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70df0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70ef0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70ff0001); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70ff0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x700f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x700f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x701f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x702f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x703f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x704f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x705f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x706f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x707f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x708f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x709f0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70af0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70bf0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70cf0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70df0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70ef0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70ff0001); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70ff0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x700f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x700f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x701f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x702f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x703f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x704f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x705f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x706f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x707f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x708f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x709f0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70af0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70bf0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70cf0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70df0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70ef0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70ff0001); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70ff0001); + odm_set_bb_reg(dm, 0x1b1c, 0xffffffff, 0x821a3d21); + odm_set_bb_reg(dm, 0x1b18, 0x00000001, 0x00000001); +} +#endif + +#if (RTL8814C_SUPPORT == 1) +void _halrf_iqk_psd_reload_8814c(struct dm_struct *dm) +{ + struct _hal_rf_ *rf = &(dm->rf_table); + struct _halrf_psd_data *psd = &(rf->halrf_psd_data); + + u32 backup_bb_reg_8814c[18] = {0x1e24, 0x1cd0, 0x1b08, 0x1d58, 0x1834, + 0x4134, 0x5234, 0x5334, 0x180c, 0x410c, + 0x520c, 0x530c, 0x186c, 0x416c, 0x526c, + 0x536c, 0x1a00, 0x1c38}; + + odm_set_bb_reg(dm, 0x1b08, 0xffffffff, 0x00000000); + odm_set_bb_reg(dm, 0x1c38, 0xffffffff, 0xffa1005e); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x700b8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70144041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70244041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70344041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70444041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x705b8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70644041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x707b8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x708b8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x709b8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70ab8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70bb8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70cb8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70db8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70eb8041); + odm_set_bb_reg(dm, 0x1830, 0xffffffff, 0x70fb8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x700b8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70144041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70244041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70344041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70444041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x705b8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70644041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x707b8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x708b8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x709b8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70ab8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70bb8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70cb8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70db8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70eb8041); + odm_set_bb_reg(dm, 0x4130, 0xffffffff, 0x70fb8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x700b8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70144041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70244041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70344041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70444041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x705b8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70644041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x707b8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x708b8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x709b8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70ab8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70bb8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70cb8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70db8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70eb8041); + odm_set_bb_reg(dm, 0x5230, 0xffffffff, 0x70fb8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x700b8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70144041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70244041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70344041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70444041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x705b8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70644041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x707b8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x708b8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x709b8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70ab8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70bb8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70cb8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70db8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70eb8041); + odm_set_bb_reg(dm, 0x5330, 0xffffffff, 0x70fb8041); + odm_set_bb_reg(dm, 0x1d58, 0x00000ff8, 0x000); + odm_set_bb_reg(dm, 0x1834, 0x00008000, 0x0); + odm_set_bb_reg(dm, 0x4134, 0x00008000, 0x0); + odm_set_bb_reg(dm, 0x5234, 0x00008000, 0x0); + odm_set_bb_reg(dm, 0x5334, 0x00008000, 0x0); + odm_set_bb_reg(dm, 0x180c, 0x08000000, 0x0); + odm_set_bb_reg(dm, 0x410c, 0x08000000, 0x0); + odm_set_bb_reg(dm, 0x520c, 0x08000000, 0x0); + odm_set_bb_reg(dm, 0x530c, 0x08000000, 0x0); + odm_set_bb_reg(dm, 0x186c, 0x00000080, 0x0); + odm_set_bb_reg(dm, 0x416c, 0x00000080, 0x0); + odm_set_bb_reg(dm, 0x526c, 0x00000080, 0x0); + odm_set_bb_reg(dm, 0x536c, 0x00000080, 0x0); + odm_set_bb_reg(dm, 0x180c, 0x00000003, 0x3); + odm_set_bb_reg(dm, 0x410c, 0x00000003, 0x3); + odm_set_bb_reg(dm, 0x520c, 0x00000003, 0x3); + odm_set_bb_reg(dm, 0x530c, 0x00000003, 0x3); + odm_set_bb_reg(dm, 0x1a00, 0x00000003, 0x0); + + restore_bb_register(dm, psd->bb_backup, backup_bb_reg_8814c, 18); +} +#endif u64 halrf_get_iqk_psd_data(void *dm_void, u32 point) { @@ -352,33 +792,32 @@ u64 halrf_get_iqk_psd_data(void *dm_void, u32 point) struct _hal_rf_ *rf = &(dm->rf_table); struct _halrf_psd_data *psd = &(rf->halrf_psd_data); u64 psd_val, psd_val1, psd_val2; - u32 psd_point, i, delay_time = 0; + u32 i, delay_time = 0; #if (DEV_BUS_TYPE == RT_USB_INTERFACE) || (DEV_BUS_TYPE == RT_SDIO_INTERFACE) if (dm->support_interface == ODM_ITRF_USB || dm->support_interface == ODM_ITRF_SDIO) { - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F | ODM_RTL8814C)) - delay_time = 1000; + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F | ODM_RTL8814C | ODM_RTL8822E)) + delay_time = 2000; else delay_time = 0; } #endif #if (DEV_BUS_TYPE == RT_PCI_INTERFACE) if (dm->support_interface == ODM_ITRF_PCIE) { - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814C)) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814C | ODM_RTL8822E)) delay_time = 1000; else delay_time = 150; } #endif - psd_point = odm_get_bb_reg(dm, R_0x1b2c, MASKDWORD); - psd_point &= 0xF000FFFF; + if (dm->support_ic_type & ODM_RTL8735B) + delay_time = 1000; - point &= 0xFFF; + if (dm->support_ic_type & ODM_RTL8730A) + delay_time = 1000; - psd_point = psd_point | (point << 16); - - odm_set_bb_reg(dm, R_0x1b2c, MASKDWORD, psd_point); + odm_set_bb_reg(dm, R_0x1b2c, 0x0fff0000, (point & 0xfff)); odm_set_bb_reg(dm, R_0x1b34, BIT(0), 0x1); @@ -413,17 +852,26 @@ u64 halrf_get_iqk_psd_data(void *dm_void, u32 point) psd_val2 = odm_get_bb_reg(dm, R_0x1bfc, MASKDWORD); //psd_val = (psd_val1 << 27) + (psd_val2 >> 5); psd_val = (psd_val1 << 32) + psd_val2; + } else if (dm->support_ic_type & ODM_RTL8730A) { + odm_set_bb_reg(dm, R_0x1bd4, MASKDWORD, 0x00210001); + psd_val1 = odm_get_bb_reg(dm, R_0x1bfc, MASKDWORD); + psd_val1 = (psd_val1 & 0x00FF0000) >> 16; + odm_set_bb_reg(dm, R_0x1bd4, MASKDWORD, 0x00220001); + psd_val2 = odm_get_bb_reg(dm, R_0x1bfc, MASKDWORD); + //psd_val = (psd_val1 << 27) + (psd_val2 >> 5); + psd_val = (psd_val1 << 32) + psd_val2; + } else if (dm->support_ic_type & ODM_RTL8735B) { + odm_set_bb_reg(dm, R_0x1bd4, MASKDWORD, 0x00210001); + psd_val1 = odm_get_bb_reg(dm, R_0x1bfc, 0x00ff0000); + odm_set_bb_reg(dm, R_0x1bd4, MASKDWORD, 0x00220001); + psd_val2 = odm_get_bb_reg(dm, R_0x1bfc, MASKDWORD); + //psd_val = (psd_val1 << 24) + (psd_val2 >> 8); + psd_val = (psd_val1 << 32) + psd_val2; } else { odm_set_bb_reg(dm, R_0x1bd4, MASKDWORD, 0x00250001); - - psd_val1 = odm_get_bb_reg(dm, R_0x1bfc, MASKDWORD); - - psd_val1 = (psd_val1 & 0x07FF0000) >> 16; - + psd_val1 = odm_get_bb_reg(dm, R_0x1bfc, 0x07ff0000); odm_set_bb_reg(dm, R_0x1bd4, MASKDWORD, 0x002e0001); - psd_val2 = odm_get_bb_reg(dm, R_0x1bfc, MASKDWORD); - psd_val = (psd_val1 << 21) + (psd_val2 >> 11); } @@ -445,12 +893,17 @@ void halrf_iqk_psd( u64 data_tatal = 0, data_temp[64] = {0}; s32 s_point_tmp; +#if (RTL8735B_SUPPORT == 1 || RTL8730A_SUPPORT == 1) + psd->buf_size = 320; +#else psd->buf_size = 256; +#endif mode = average >> 16; if (mode == 2) { - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F | ODM_RTL8814C)) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F | ODM_RTL8814C | + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E)) average_tmp = 1; //HW average else { reg_tmp = odm_get_bb_reg(dm, R_0x1b1c, 0x000e0000); @@ -474,7 +927,7 @@ void halrf_iqk_psd( average_tmp = 16; else if (reg_tmp == 5) average_tmp = 32; - if (!(dm->support_ic_type & ODM_RTL8723F)) + if (!((dm->support_ic_type & ODM_RTL8723F)&&(dm->support_ic_type & ODM_RTL8730A))) odm_set_bb_reg(dm, R_0x1b1c, 0x000e0000, 0x0); } @@ -483,12 +936,20 @@ void halrf_iqk_psd( point, start_point, stop_point, average, average_tmp, psd->buf_size, mode); #endif +#if (DM_ODM_SUPPORT_TYPE & ODM_IOT) +#ifdef CONFIG_MP_INCLUDED for (i = 0; i < psd->buf_size; i++) psd->psd_data[i] = 0; +#endif +#else + for (i = 0; i < psd->buf_size; i++) + psd->psd_data[i] = 0; +#endif + i = start_point; - if (dm->support_ic_type & ODM_RTL8723F) { + if ((dm->support_ic_type & ODM_RTL8723F)||(dm->support_ic_type & ODM_RTL8730A)) { while (i < stop_point) { data_tatal = 0; @@ -499,10 +960,26 @@ void halrf_iqk_psd( //-640:0xD80,640:0x280,0x280+0xB00 =0xD80 //point_temp = i + 0xC00; //-512:0xE00,512:0x200,0x200+0xC00 = 0xE00 + /*for (k = 0; k < average_tmp; k++) { + data_temp[k] = halrf_get_iqk_psd_data(dm, point_temp); + data_tatal = data_tatal + data_temp[k]; + }*/ - data_temp[k] = halrf_get_iqk_psd_data(dm, point_temp); - data_tatal = data_temp[k]; + //data_tatal = phydm_division64((data_tatal * 10), average_tmp); + + data_tatal = halrf_get_iqk_psd_data(dm, point_temp); +#if (DM_ODM_SUPPORT_TYPE & ODM_IOT) +#ifdef CONFIG_MP_INCLUDED + + if (dm->support_ic_type & ODM_RTL8730A) + psd->psd_data_64[j] = data_tatal; + else + psd->psd_data[j] = (u32)data_tatal; +#endif +#else + psd->psd_data[j] = (u32)data_tatal; +#endif i++; j++; } @@ -514,9 +991,12 @@ void halrf_iqk_psd( point_temp = i - point; else { - if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) + if (dm->support_ic_type & + (ODM_RTL8814B | ODM_RTL8814C | ODM_RTL8735B | + ODM_RTL8822E)) { - s_point_tmp = i - point - 1; + /*s_point_tmp = i - point - 1;*/ + s_point_tmp = i - point; point_temp = s_point_tmp & 0xfff; } else @@ -537,7 +1017,17 @@ void halrf_iqk_psd( } data_tatal = phydm_division64((data_tatal * 10), average_tmp); +#if (DM_ODM_SUPPORT_TYPE & ODM_IOT) +#ifdef CONFIG_MP_INCLUDED + + if (dm->support_ic_type & ODM_RTL8735B) + psd->psd_data_64[j] = data_tatal; + else + psd->psd_data[j] = (u32)data_tatal; +#endif +#else psd->psd_data[j] = (u32)data_tatal; +#endif i++; j++; @@ -562,68 +1052,129 @@ void halrf_iqk_psd( u32 -halrf_psd_init( - void *dm_void) +halrf_psd_init(void *dm_void) { enum rt_status ret_status = RT_STATUS_SUCCESS; struct dm_struct *dm = (struct dm_struct *)dm_void; struct _hal_rf_ *rf = &(dm->rf_table); struct _halrf_psd_data *psd = &(rf->halrf_psd_data); + u32 bb_backup[29]; - u32 bb_backup[18]; - u32 backup_bb_addr[18] = {0}; - u32 bk_counter = 18; - +#if (RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 || RTL8812F_SUPPORT == 1 || \ + RTL8198F_SUPPORT == 1 || RTL8197G_SUPPORT == 1) u32 backup_bb_reg[12] = {0x1b04, 0x1b08, 0x1b0c, 0x1b14, 0x1b18, 0x1b1c, 0x1b28, 0x1bcc, 0x1b2c, 0x1b34, 0x1bd4, 0x1bfc}; +#endif +#if (RTL8723F_SUPPORT == 1) u32 backup_bb_reg_8723f[11] = {0x09f0, 0x09b4, 0x1c38, 0x1860, 0x1cd0, 0x824, 0x2a24, 0x1d40, 0x1c20, 0x1880, 0x180c}; +#endif +#if (RTL8730A_SUPPORT == 1) + u32 backup_bb_reg_8730a[29] = {0x1b08, 0x1e24, 0x1e28, 0x0824, 0x1cd0, + 0x2a24, 0x1c68, 0x1864, 0x180c, 0x1c38, + 0x1810, 0x1814, 0x1830, 0x1860, 0x09f0, + 0x1d40, 0x09b4, 0x1c20, 0x1b80, 0x1b00, + 0x1b18, 0x1b14, 0x1b1c, 0x1b0c, 0x1bcc, + 0x1b2c, 0x1b34, 0x1bd4, 0x1bfc}; +#endif + +#if (RTL8814C_SUPPORT == 1) u32 backup_bb_reg_8814c[18] = {0x1e24, 0x1cd0, 0x1b08, 0x1d58, 0x1834, 0x4134, 0x5234, 0x5334, 0x180c, 0x410c, 0x520c, 0x530c, 0x186c, 0x416c, 0x526c, 0x536c, 0x1a00, 0x1c38}; +#endif + +#if (RTL8735B_SUPPORT == 1) + u32 backup_bb_reg_8735b[29] = {0x1b08, 0x1e24, 0x1e28, 0x0824, 0x1cd0, + 0x2a24, 0x1c68, 0x1864, 0x180c, 0x1c38, + 0x1810, 0x1814, 0x1830, 0x1860, 0x09f0, + 0x1d40, 0x09b4, 0x1c20, 0x1b80, 0x1b00, + 0x1b18, 0x1b14, 0x1b1c, 0x1b0c, 0x1bcc, + 0x1b2c, 0x1b34, 0x1bd4, 0x1bfc}; +#endif + +#if (RTL8822E_SUPPORT == 1) + u32 backup_bb_reg_8822e[24] = {0x1e24, 0x1cd0, 0x1c68, 0x1864, 0x4164, + 0x180c, 0x410c, 0x186c, 0x416c, 0x1a00, + 0x1b08, 0x1c38, 0x1b04, 0x1b0c, 0x1b14, + 0x1b18, 0x1b1c, 0x1b20, 0x1b28, 0x1bcc, + 0x1b2c, 0x1b34, 0x1bd4, 0x1bfc}; +#endif - if (dm->support_ic_type & ODM_RTL8723F) { - odm_move_memory(dm, backup_bb_addr, backup_bb_reg_8723f, - sizeof(backup_bb_addr)); - bk_counter = 11; - } else if (dm->support_ic_type & ODM_RTL8814C) { - odm_move_memory(dm, backup_bb_addr, backup_bb_reg_8814c, - sizeof(backup_bb_addr)); - bk_counter = 18; - } else { - odm_move_memory(dm, backup_bb_addr, backup_bb_reg, - sizeof(backup_bb_addr)); - bk_counter = 12; - } if (psd->psd_progress) { ret_status = RT_STATUS_PENDING; } else { psd->psd_progress = 1; +#if (RTL8723F_SUPPORT == 1) if (dm->support_ic_type & ODM_RTL8723F) { - backup_bb_register(dm, bb_backup, backup_bb_addr, bk_counter); + backup_bb_register(dm, bb_backup, backup_bb_reg_8723f, 11); _halrf_iqk_psd_init_8723f(dm, true); halrf_iqk_psd(dm, psd->point, psd->start_point, psd->stop_point, psd->average); _halrf_iqk_psd_init_8723f(dm, false); - restore_bb_register(dm, bb_backup, backup_bb_addr, bk_counter); - } else if (dm->support_ic_type & ODM_RTL8814C) { - backup_bb_register(dm, bb_backup, backup_bb_addr, bk_counter); + restore_bb_register(dm, bb_backup, backup_bb_reg_8723f, 11); + } +#endif + +#if (RTL8730A_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8730A) { + backup_bb_register(dm, bb_backup, backup_bb_reg_8730a, 29); + _halrf_iqk_psd_init_8730a(dm, true); + halrf_iqk_psd(dm, psd->point, psd->start_point, psd->stop_point, psd->average); + _halrf_iqk_psd_init_8730a(dm, false); + restore_bb_register(dm, bb_backup, backup_bb_reg_8730a, 29); + } +#endif + +#if (RTL8814C_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8814C) { + backup_bb_register(dm, bb_backup, backup_bb_reg_8814c, 18); _halrf_psd_iqk_init_8814c(dm); halrf_iqk_psd(dm, psd->point, psd->start_point, psd->stop_point, psd->average); - restore_bb_register(dm, bb_backup, backup_bb_addr, bk_counter); - } else if (dm->support_ic_type & - (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8198F | ODM_RTL8197G)) { - backup_bb_register(dm, bb_backup, backup_bb_addr, bk_counter); + restore_bb_register(dm, bb_backup, backup_bb_reg_8814c, 18); + } +#endif + +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8735B) { + backup_bb_register(dm, bb_backup, backup_bb_reg_8735b, 29); + _halrf_psd_iqk_init_8735b(dm); + halrf_iqk_psd(dm, psd->point, psd->start_point, psd->stop_point, psd->average); + restore_bb_register(dm, bb_backup, backup_bb_reg_8735b, 29); + } +#endif + +#if (RTL8822E_SUPPORT == 1) + if (dm->support_ic_type & ODM_RTL8822E) { + backup_bb_register(dm, bb_backup, backup_bb_reg_8822e, 24); + _halrf_psd_iqk_init_8822e(dm); + halrf_iqk_psd(dm, psd->point, psd->start_point, psd->stop_point, psd->average); + _halrf_psd_iqk_reload_8822e(dm); + restore_bb_register(dm, bb_backup, backup_bb_reg_8822e, 24); + } +#endif + +#if (RTL8822C_SUPPORT == 1 || RTL8812F_SUPPORT == 1 || RTL8814B_SUPPORT == 1 || \ + RTL8198F_SUPPORT == 1 || RTL8197G_SUPPORT == 1) + if (dm->support_ic_type & + (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8814B | ODM_RTL8198F | ODM_RTL8197G)) { + backup_bb_register(dm, bb_backup, backup_bb_reg, 12); _halrf_psd_iqk_init(dm); halrf_iqk_psd(dm, psd->point, psd->start_point, psd->stop_point, psd->average); - restore_bb_register(dm, bb_backup, backup_bb_addr, bk_counter); - } else + restore_bb_register(dm, bb_backup, backup_bb_reg, 12); + } +#endif + + if (!(dm->support_ic_type & + (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8814B | ODM_RTL8198F | ODM_RTL8197G | + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8814C | ODM_RTL8723F | ODM_RTL8822E))) { halrf_psd(dm, psd->point, psd->start_point, psd->stop_point, psd->average); + } psd->psd_progress = 0; } return ret_status; @@ -640,11 +1191,25 @@ halrf_psd_query( struct _hal_rf_ *rf = &(dm->rf_table); struct _halrf_psd_data *psd = &(rf->halrf_psd_data); - if (psd->psd_progress) + if (psd->psd_progress) { ret_status = RT_STATUS_PENDING; - else + } else { + +#if (DM_ODM_SUPPORT_TYPE & ODM_IOT) +#ifdef CONFIG_MP_INCLUDED + if (dm->support_ic_type & (ODM_RTL8730A| ODM_RTL8735B)) { + odm_move_memory(dm, outbuf, psd->psd_data_64, + sizeof(u64) * buf_size); + } else { + odm_move_memory(dm, outbuf, psd->psd_data, + sizeof(u32) * buf_size); + } +#endif +#else odm_move_memory(dm, outbuf, psd->psd_data, - sizeof(u32) * psd->buf_size); + sizeof(u32) * buf_size); +#endif + } return ret_status; } @@ -673,10 +1238,54 @@ halrf_psd_init_query( ret_status = RT_STATUS_PENDING; } else { psd->psd_progress = 1; + +#if (DM_ODM_SUPPORT_TYPE & ODM_IOT) +#ifdef CONFIG_MP_INCLUDED halrf_psd(dm, psd->point, psd->start_point, psd->stop_point, psd->average); odm_move_memory(dm, outbuf, psd->psd_data, 0x400); +#endif +#else + halrf_psd(dm, psd->point, psd->start_point, psd->stop_point, psd->average); + odm_move_memory(dm, outbuf, psd->psd_data, 0x400); +#endif psd->psd_progress = 0; } return ret_status; } + +void halrf_iqk_psd_init(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + +#if (RTL8814C_SUPPORT == 1) + if (dm->support_ic_type & (ODM_RTL8814C)) { + _halrf_iqk_psd_enterpsd_8814c(dm); + _halrf_psd_iqk_init_8814c(dm); + } +#endif +} + +u32 halrf_iqk_psd_result(void *dm_void, u32 ch_freq, u32 spur_freq) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + +#if (RTL8814C_SUPPORT == 1) + if (dm->support_ic_type & (ODM_RTL8814C)) { + s32 point; + point = ((32 * spur_freq) - (32 * ch_freq)) / 5; + return (u32)halrf_get_iqk_psd_data(dm, (u32)(point & 0xfff)); + } +#endif + return 0; +} + +void halrf_iqk_psd_reload(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + +#if (RTL8814C_SUPPORT == 1) + if (dm->support_ic_type & (ODM_RTL8814C)) + _halrf_iqk_psd_reload_8814c(dm); +#endif +} diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_psd.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_psd.h index d714a5623..5eb294ee1 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_psd.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/halrf_psd.h @@ -23,8 +23,20 @@ struct _halrf_psd_data { u32 stop_point; u32 average; u32 buf_size; - u32 psd_data[256]; u32 psd_progress; + u32 bb_backup[30]; +#if (DM_ODM_SUPPORT_TYPE & ODM_IOT) +#ifdef CONFIG_MP_INCLUDED + u64 psd_data_64[320]; + u32 psd_data[320]; +#endif +#else +#if (RTL8735B_SUPPORT == 1 || RTL8730A_SUPPORT == 1) + u32 psd_data[320]; +#else + u32 psd_data[256]; +#endif +#endif }; u32 @@ -35,7 +47,10 @@ void _halrf_iqk_psd_init_8723f( void *dm_void, boolean onoff); - +void +_halrf_iqk_psd_init_8730a( + void *dm_void, + boolean onoff); u64 halrf_get_iqk_psd_data( void *dm_void, @@ -57,4 +72,11 @@ halrf_psd_init_query( u32 average, u32 buf_size); +void halrf_iqk_psd_init(void *dm_void); + +u32 halrf_iqk_psd_result(void *dm_void, u32 ch_freq, u32 spur_freq); + +void halrf_iqk_psd_reload(void *dm_void); + + #endif /*#__HALRF_PSD_H__*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halhwimg8822c_rf.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halhwimg8822c_rf.c index 7627b11d3..2d2f6287f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halhwimg8822c_rf.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halhwimg8822c_rf.c @@ -23,7 +23,7 @@ * *****************************************************************************/ -/*Image2HeaderVersion: R3 1.5.12*/ +/*Image2HeaderVersion: R3 1.5.17*/ #include "../../mp_precomp.h" #define ODM_WIN 0x08 @@ -16866,9 +16866,9 @@ const u32 array_mp_8822c_radioa[] = { 0x033, 0x00000065, 0x03F, 0x000008CE, 0x033, 0x00000066, - 0x03F, 0x000008D1, + 0x03F, 0x00000DCB, 0x033, 0x00000067, - 0x03F, 0x000008D4, + 0x03F, 0x00000DCE, 0x033, 0x00000068, 0x03F, 0x00000DD1, 0x033, 0x00000069, @@ -16889,9 +16889,9 @@ const u32 array_mp_8822c_radioa[] = { 0x033, 0x00000065, 0x03F, 0x000008CE, 0x033, 0x00000066, - 0x03F, 0x000008D1, + 0x03F, 0x00000DCB, 0x033, 0x00000067, - 0x03F, 0x000008D4, + 0x03F, 0x00000DCE, 0x033, 0x00000068, 0x03F, 0x00000DD1, 0x033, 0x00000069, @@ -18240,7 +18240,7 @@ odm_read_and_config_mp_8822c_radioa(struct dm_struct *dm) PHYDM_DBG(dm, ODM_COMP_INIT, "*else\n"); is_matched = false; if (!find_target) { - PHYDM_DBG(dm, ODM_COMP_INIT, "Init Fail in Reg 0x%x\n", array[i]); + PHYDM_DBG(dm, ODM_COMP_INIT, "Init Fail in idx %d\n", i); return; } break; @@ -18277,7 +18277,7 @@ odm_read_and_config_mp_8822c_radioa(struct dm_struct *dm) u32 odm_get_version_mp_8822c_radioa(void) { - return 62; + return 70; } /****************************************************************************** @@ -36833,7 +36833,7 @@ odm_read_and_config_mp_8822c_radiob(struct dm_struct *dm) PHYDM_DBG(dm, ODM_COMP_INIT, "*else\n"); is_matched = false; if (!find_target) { - PHYDM_DBG(dm, ODM_COMP_INIT, "Init Fail in Reg 0x%x\n", array[i]); + PHYDM_DBG(dm, ODM_COMP_INIT, "Init Fail in idx %d\n", i); return; } break; @@ -36870,7 +36870,7 @@ odm_read_and_config_mp_8822c_radiob(struct dm_struct *dm) u32 odm_get_version_mp_8822c_radiob(void) { - return 62; + return 70; } /****************************************************************************** @@ -37123,6 +37123,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 1, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 1, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 1, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 68}, @@ -37133,6 +37135,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 68}, @@ -37143,6 +37147,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 68}, @@ -37153,6 +37159,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 68}, @@ -37163,6 +37171,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 68}, @@ -37173,6 +37183,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 68}, @@ -37183,6 +37195,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 68}, @@ -37193,6 +37207,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 68}, @@ -37203,6 +37219,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 68}, @@ -37213,6 +37231,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 68}, @@ -37223,6 +37243,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 68}, @@ -37233,6 +37255,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 48}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 68}, @@ -37243,6 +37267,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 48}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 68}, @@ -37253,6 +37279,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 56}, @@ -37263,6 +37291,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 56}, @@ -37273,6 +37303,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 56}, @@ -37283,6 +37315,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 56}, @@ -37293,6 +37327,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 56}, @@ -37303,6 +37339,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 56}, @@ -37313,6 +37351,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 56}, @@ -37323,6 +37363,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 56}, @@ -37333,6 +37375,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 56}, @@ -37343,6 +37387,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 56}, @@ -37353,6 +37399,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 56}, @@ -37363,6 +37411,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 56}, @@ -37373,6 +37423,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 36}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 56}, @@ -37383,6 +37435,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 36}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 56}, @@ -37393,6 +37447,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 76}, @@ -37403,6 +37459,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 76}, @@ -37413,6 +37471,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 76}, @@ -37423,6 +37483,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 76}, @@ -37433,6 +37495,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 76}, @@ -37443,6 +37507,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 76}, @@ -37453,6 +37519,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 76}, @@ -37463,6 +37531,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 76}, @@ -37473,6 +37543,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 76}, @@ -37483,6 +37555,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 76}, @@ -37493,6 +37567,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 76}, @@ -37502,7 +37578,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 52}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 44}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 76}, @@ -37512,7 +37590,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 40}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 40}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 44}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 76}, @@ -37522,7 +37602,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 28}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 28}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, @@ -37533,6 +37615,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 64}, @@ -37543,6 +37627,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 64}, @@ -37553,6 +37639,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 64}, @@ -37563,6 +37651,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 64}, @@ -37573,6 +37663,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 64}, @@ -37583,6 +37675,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 64}, @@ -37593,6 +37687,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 64}, @@ -37603,6 +37699,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 64}, @@ -37613,6 +37711,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 64}, @@ -37623,6 +37723,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 64}, @@ -37633,6 +37735,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 48}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 64}, @@ -37642,7 +37746,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 52}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 52}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 44}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 64}, @@ -37652,7 +37758,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 40}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 40}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 44}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 64}, @@ -37662,7 +37770,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 48}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 28}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 48}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, @@ -37673,6 +37783,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 76}, @@ -37683,6 +37795,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 76}, @@ -37693,6 +37807,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 76}, @@ -37703,6 +37819,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 76}, @@ -37713,6 +37831,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 76}, @@ -37723,6 +37843,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 76}, @@ -37733,6 +37855,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 76}, @@ -37743,6 +37867,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 76}, @@ -37753,6 +37879,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 76}, @@ -37763,6 +37891,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 76}, @@ -37773,6 +37903,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 76}, @@ -37782,7 +37914,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 52}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 46}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 76}, @@ -37792,7 +37926,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 40}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 40}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 42}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 76}, @@ -37802,7 +37938,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 28}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 28}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 34}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, @@ -37813,6 +37951,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 66}, @@ -37823,6 +37963,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 66}, @@ -37833,6 +37975,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 66}, @@ -37843,6 +37987,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 66}, @@ -37853,6 +37999,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 66}, @@ -37863,6 +38011,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 66}, @@ -37873,6 +38023,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 66}, @@ -37883,6 +38035,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 66}, @@ -37893,6 +38047,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 66}, @@ -37903,6 +38059,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 66}, @@ -37913,6 +38071,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 66}, @@ -37923,6 +38083,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 66}, @@ -37933,6 +38095,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 40}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 66}, @@ -37942,7 +38106,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 28}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 34}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, @@ -37953,6 +38119,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, @@ -37963,6 +38131,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, @@ -37973,6 +38143,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 72}, @@ -37983,6 +38155,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 72}, @@ -37993,6 +38167,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 72}, @@ -38003,6 +38179,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 72}, @@ -38013,6 +38191,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 72}, @@ -38023,6 +38203,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 72}, @@ -38033,6 +38215,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 72}, @@ -38042,7 +38226,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 52}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 52}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 44}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 72}, @@ -38052,7 +38238,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 40}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 40}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 44}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 72}, @@ -38062,7 +38250,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 28}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 28}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 16}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, @@ -38073,6 +38263,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, @@ -38083,6 +38275,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, @@ -38093,6 +38287,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, @@ -38103,6 +38299,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, @@ -38113,6 +38311,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 66}, @@ -38123,6 +38323,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 66}, @@ -38133,6 +38335,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 66}, @@ -38143,6 +38347,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 66}, @@ -38153,6 +38359,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 66}, @@ -38163,6 +38371,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 66}, @@ -38173,6 +38383,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 66}, @@ -38183,6 +38395,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 66}, @@ -38193,6 +38407,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 40}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 26}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 66}, @@ -38202,7 +38418,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 26}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 26}, - {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 16}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, @@ -38213,6 +38431,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, @@ -38223,6 +38443,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, @@ -38233,6 +38455,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 74}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 60}, @@ -38243,6 +38467,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 62}, @@ -38253,6 +38479,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 62}, @@ -38263,6 +38491,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 62}, @@ -38273,6 +38503,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 62}, @@ -38283,6 +38515,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 62}, @@ -38293,6 +38527,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 62}, @@ -38303,6 +38539,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 74}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 60}, @@ -38313,6 +38551,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 74}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 76}, @@ -38323,6 +38563,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 76}, @@ -38333,6 +38575,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 76}, @@ -38343,6 +38587,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 76}, @@ -38353,6 +38599,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 76}, @@ -38363,6 +38611,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 76}, @@ -38373,6 +38623,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 76}, @@ -38383,6 +38635,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 76}, @@ -38393,6 +38647,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 76}, @@ -38403,6 +38659,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 76}, @@ -38413,6 +38671,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 76}, @@ -38423,6 +38683,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 127}, @@ -38433,6 +38695,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 127}, @@ -38443,6 +38707,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 58}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 127}, @@ -38453,6 +38719,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 58}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 127}, @@ -38463,6 +38731,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 58}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 127}, @@ -38473,6 +38743,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 58}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 127}, @@ -38483,6 +38755,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 58}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 48}, @@ -38493,6 +38767,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 50}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 50}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 50}, @@ -38503,6 +38779,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 50}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 50}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 50}, @@ -38513,6 +38791,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 50}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 50}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 50}, @@ -38523,6 +38803,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 50}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 50}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 50}, @@ -38533,6 +38815,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 50}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 50}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 50}, @@ -38543,6 +38827,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 50}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 50}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 50}, @@ -38553,6 +38839,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 66}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 50}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 50}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 48}, @@ -38563,6 +38851,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 50}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 50}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 70}, @@ -38573,6 +38863,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 70}, @@ -38583,6 +38875,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 70}, @@ -38593,6 +38887,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 70}, @@ -38603,6 +38899,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 70}, @@ -38613,6 +38911,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 70}, @@ -38623,6 +38923,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 70}, @@ -38633,6 +38935,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 70}, @@ -38643,6 +38947,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 70}, @@ -38653,6 +38959,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 70}, @@ -38663,6 +38971,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 50}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 70}, @@ -38673,6 +38983,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 42}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 50}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 127}, @@ -38683,6 +38995,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 70}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 127}, @@ -38693,6 +39007,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 16}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 46}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 127}, @@ -38703,6 +39019,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 16}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 46}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 127}, @@ -38713,6 +39031,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 16}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 46}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 127}, @@ -38723,6 +39043,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 16}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 46}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 127}, @@ -38733,6 +39055,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 42}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 16}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 46}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 62}, @@ -38743,6 +39067,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 62}, @@ -38753,6 +39079,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 62}, @@ -38763,6 +39091,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 62}, @@ -38773,6 +39103,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 62}, @@ -38783,6 +39115,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 62}, @@ -38793,6 +39127,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 62}, @@ -38803,6 +39139,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 74}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 60}, @@ -38813,6 +39151,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 74}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 62}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 62}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 70}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 76}, @@ -38823,6 +39163,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 70}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 76}, @@ -38833,6 +39175,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 76}, @@ -38843,6 +39187,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 76}, @@ -38853,6 +39199,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 76}, @@ -38863,6 +39211,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 76}, @@ -38873,6 +39223,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 76}, @@ -38883,6 +39235,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 76}, @@ -38893,6 +39247,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 76}, @@ -38903,6 +39259,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 76}, @@ -38913,6 +39271,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 70}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 62}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 76}, @@ -38923,6 +39283,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 70}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 127}, @@ -38933,6 +39295,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 127}, @@ -38943,6 +39307,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 127}, @@ -38953,6 +39319,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 127}, @@ -38963,6 +39331,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 127}, @@ -38973,6 +39343,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 127}, @@ -38983,6 +39355,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 50}, @@ -38993,6 +39367,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 38}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 38}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 50}, @@ -39003,6 +39379,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 38}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 38}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 50}, @@ -39013,6 +39391,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 38}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 38}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 50}, @@ -39023,6 +39403,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 38}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 38}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 50}, @@ -39033,6 +39415,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 38}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 38}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 50}, @@ -39043,6 +39427,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 38}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 38}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 50}, @@ -39053,6 +39439,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 66}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 38}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 38}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 50}, @@ -39063,6 +39451,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 38}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 38}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 70}, @@ -39073,6 +39463,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 70}, @@ -39083,6 +39475,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 70}, @@ -39093,6 +39487,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 70}, @@ -39103,6 +39499,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 70}, @@ -39113,6 +39511,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 70}, @@ -39123,6 +39523,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 70}, @@ -39133,6 +39535,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 70}, @@ -39143,6 +39547,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 70}, @@ -39153,6 +39559,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 70}, @@ -39163,6 +39571,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 38}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 70}, @@ -39173,6 +39583,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 60}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 38}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 127}, @@ -39183,6 +39595,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 127}, @@ -39193,6 +39607,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 4}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 127}, @@ -39203,6 +39619,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 4}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 127}, @@ -39213,6 +39631,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 4}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 127}, @@ -39223,6 +39643,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 4}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 127}, @@ -39233,6 +39655,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 76}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 4}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 62}, @@ -39243,6 +39667,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 62}, @@ -39253,6 +39679,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 64}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 64}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 62}, @@ -39263,6 +39691,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 64}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 64}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 62}, @@ -39273,6 +39703,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 64}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 64}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 64}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 58}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 72}, @@ -39283,6 +39715,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 58}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 72}, @@ -39293,6 +39727,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 72}, @@ -39303,6 +39739,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 72}, @@ -39313,6 +39751,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 72}, @@ -39323,6 +39763,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 127}, @@ -39333,6 +39775,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 127}, @@ -39343,6 +39787,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 127}, @@ -39353,6 +39799,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 50}, @@ -39363,6 +39811,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 40}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 40}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 50}, @@ -39373,6 +39823,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 40}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 40}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 50}, @@ -39383,6 +39835,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 40}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 40}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 58}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 48}, @@ -39393,6 +39847,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 58}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 40}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 40}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 54}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 70}, @@ -39403,6 +39859,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 54}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 70}, @@ -39413,6 +39871,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 70}, @@ -39423,6 +39883,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 70}, @@ -39433,6 +39895,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 70}, @@ -39443,6 +39907,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 127}, @@ -39453,6 +39919,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 62}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 127}, @@ -39463,6 +39931,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 4}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 127}, @@ -39473,6 +39943,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 4}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, @@ -39483,6 +39955,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 62}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 64}, @@ -39493,6 +39967,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 62}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 64}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 64}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 58}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 72}, @@ -39503,6 +39979,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 58}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 72}, @@ -39513,6 +39991,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 54}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 127}, @@ -39523,6 +40003,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 72}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 127}, @@ -39533,6 +40015,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 54}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 68}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 28}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 54}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 50}, @@ -39543,6 +40027,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 40}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 40}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 50}, @@ -39553,6 +40039,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 52}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 40}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 40}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 50}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 72}, @@ -39563,6 +40051,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 50}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 72}, @@ -39573,6 +40063,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 66}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 30}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 127}, @@ -39583,6 +40075,8 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 127}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 66}, {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 127}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 127}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 62}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, -128}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 127}, @@ -39592,7 +40086,9 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt[] = { {PW_LMT_REGU_CHILE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 62}, {PW_LMT_REGU_UKRAINE, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 30}, {PW_LMT_REGU_MEXICO, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 62}, - {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, -128} + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, -128}, + {PW_LMT_REGU_QATAR, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 4}, + {PW_LMT_REGU_UK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 40} }; #endif @@ -39601,12 +40097,12 @@ odm_read_and_config_mp_8822c_txpwr_lmt(struct dm_struct *dm) { #ifdef CONFIG_8822C - int i = 0; + u32 i = 0; const struct txpwr_lmt_t_8822c *array = (const struct txpwr_lmt_t_8822c *)array_mp_8822c_txpwr_lmt; + u32 array_len = sizeof(array_mp_8822c_txpwr_lmt)/sizeof(struct txpwr_lmt_t_8822c); PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); -#define array_len sizeof(array_mp_8822c_txpwr_lmt)/sizeof(struct txpwr_lmt_t_8822c) for (i = 0; i < array_len; i++) { u8 regulation = array[i].reg; u8 band = array[i].band; @@ -39635,1488 +40131,1736 @@ const struct txpwr_lmt_t_8822c array_mp_8822c_txpwr_lmt_type5[] = { {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 1, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 1, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 1, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 48}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 56}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 48}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 56}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 1, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 2, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 5, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 6, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 7, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 8, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 9, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 10, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 11, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 12, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 44}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 44}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 58}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 44}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 44}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 13, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_CCK, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 12, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 28}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 13, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 1, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 2, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 5, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 6, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 7, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 8, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 9, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 10, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 11, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 12, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 48}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 48}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 48}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 28}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 28}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 1, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 2, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 3, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 4, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 5, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 6, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 7, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 8, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 9, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 10, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 28}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 28}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 60}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 11, 44}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 12, 44}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 13, 20}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 1, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 2, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 48}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 3, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 48}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 4, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 5, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 6, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 7, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 8, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 52}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 9, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 40}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 10, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 26}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 66}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 26}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 11, 32}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 12, 32}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 13, 8}, {PW_LMT_REGU_FCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_2_4G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 14, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 74}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 62}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 36, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 40, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 44, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 58}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 48, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 52, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 56, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 60, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 64, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 100, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 104, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 108, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 112, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 116, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 120, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 124, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 128, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 132, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 136, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 74}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 74}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 140, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 144, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 48}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 36, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 40, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 44, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 46}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 48, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 52, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 56, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 60, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 52}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 64, 52}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 62}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 62}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 100, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 104, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 108, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 112, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 66}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 116, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 120, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 124, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 128, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 132, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 136, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 46}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 46}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 140, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 144, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 16}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 149, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 16}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 153, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 16}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 157, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 16}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 161, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 16}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_OFDM, PW_LMT_PH_2T, 165, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 70}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 62}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 36, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 62}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 40, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 62}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 44, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 62}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 58}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 48, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 52, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 56, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 60, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 70}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 64, 60}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 66}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 100, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 104, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 108, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 112, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 116, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 120, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 124, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 128, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 132, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 136, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 58}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 66}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 58}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 140, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 76}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 144, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 149, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 153, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 157, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 161, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 74}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_1T, 165, 76}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 38}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 36, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 38}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 40, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 38}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 44, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 38}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 42}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 48, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 52, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 56, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 60, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 64, 36}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 64}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 100, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 104, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 108, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 112, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 116, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 120, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 124, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 128, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 132, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 136, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 58}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 36}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 58}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 36}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 140, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 144, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 4}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 62}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 149, 68}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 4}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 62}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 153, 68}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 4}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 62}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 157, 68}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 4}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 62}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 161, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 76}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 4}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 76}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 62}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 76}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_20M, PW_LMT_RS_HT, PW_LMT_PH_2T, 165, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 66}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 38, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 46, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 54, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 62}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 60}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 62, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 64}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 102, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 110, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 118, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 126, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 134, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 142, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 72}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 151, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 72}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 72}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_1T, 159, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 54}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 38, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 54}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 46, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 54, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 58}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 48}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 50}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 62, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 56}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 56}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 54}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 102, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 110, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 118, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 126, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 134, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 70}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 68}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 142, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 4}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 72}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 151, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 4}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 66}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 72}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_40M, PW_LMT_RS_HT, PW_LMT_PH_2T, 159, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 68}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 60}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 42, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 64}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 56}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 58, 64}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 60}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 60}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 58}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 64}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 106, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 64}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 68}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 122, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 70}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 138, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 28}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 62}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 72}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_1T, 155, 72}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 56}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 50}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 42, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 54}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 50}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 40}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 46}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 58, 40}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 48}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 48}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 50}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 40}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 106, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 70}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 40}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 127}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 62}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 122, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 70}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 127}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 72}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 70}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 62}, {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 127}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 138, 127}, {PW_LMT_REGU_FCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 72}, {PW_LMT_REGU_ETSI, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 4}, {PW_LMT_REGU_MKK, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 127}, {PW_LMT_REGU_IC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 72}, {PW_LMT_REGU_KCC, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 52}, - {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 72} + {PW_LMT_REGU_ACMA, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 72}, + {PW_LMT_REGU_CN, PW_LMT_BAND_5G, PW_LMT_BW_80M, PW_LMT_RS_VHT, PW_LMT_PH_2T, 155, 66} }; #endif @@ -41125,12 +41869,12 @@ odm_read_and_config_mp_8822c_txpwr_lmt_type5(struct dm_struct *dm) { #ifdef CONFIG_8822C_TYPE5 - int i = 0; + u32 i = 0; const struct txpwr_lmt_t_8822c *array = (const struct txpwr_lmt_t_8822c *)array_mp_8822c_txpwr_lmt_type5; + u32 array_len = sizeof(array_mp_8822c_txpwr_lmt_type5)/sizeof(struct txpwr_lmt_t_8822c); PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__); -#define array_len sizeof(array_mp_8822c_txpwr_lmt)/sizeof(struct txpwr_lmt_t_8822c) for (i = 0; i < array_len; i++) { u8 regulation = array[i].reg; u8 band = array[i].band; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halhwimg8822c_rf.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halhwimg8822c_rf.h index 23ef712c6..0338979a1 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halhwimg8822c_rf.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halhwimg8822c_rf.h @@ -23,7 +23,7 @@ * *****************************************************************************/ -/*Image2HeaderVersion: R3 1.5.12*/ +/*Image2HeaderVersion: R3 1.5.17*/ #if (RTL8822C_SUPPORT == 1) #ifndef __INC_MP_RF_HW_IMG_8822C_H #define __INC_MP_RF_HW_IMG_8822C_H diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_8822c.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_8822c.c index 75119fc33..b37c1456a 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_8822c.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_8822c.c @@ -804,7 +804,7 @@ void halrf_dack_restore_8822c(void *dm_void) halrf_biask_restore_8822c(dm); } -void halrf_polling_check(void *dm_void, u32 add, u32 bmask, u32 data) +void halrf_polling_check_8822c(void *dm_void, u32 add, u32 bmask, u32 data) { struct dm_struct *dm = (struct dm_struct *)dm_void; u32 c = 0; @@ -946,8 +946,8 @@ void halrf_dac_cal_8822c(void *dm_void, boolean force) // ODM_delay_ms(20); odm_write_4byte(dm, 0x18d4, 0x62000000); ODM_delay_ms(1); - halrf_polling_check(dm, 0x2808, 0x7fff80, 0xffff); - halrf_polling_check(dm, 0x2834, 0x7fff80, 0xffff); + halrf_polling_check_8822c(dm, 0x2808, 0x7fff80, 0xffff); + halrf_polling_check_8822c(dm, 0x2834, 0x7fff80, 0xffff); odm_write_4byte(dm, 0x18b8, 0x02000000); ODM_delay_ms(1); odm_write_4byte(dm, 0x18bc, 0x0008ff87); @@ -1017,8 +1017,8 @@ void halrf_dac_cal_8822c(void *dm_void, boolean force) odm_write_4byte(dm, 0x18b8, 0x62000000); odm_write_4byte(dm, 0x18d4, 0x62000000); ODM_delay_ms(1); - halrf_polling_check(dm, 0x2824, 0x07f80000, ic); - halrf_polling_check(dm, 0x2850, 0x07f80000, qc); + halrf_polling_check_8822c(dm, 0x2824, 0x07f80000, ic); + halrf_polling_check_8822c(dm, 0x2850, 0x07f80000, qc); odm_write_4byte(dm, 0x18b8, 0x02000000); ODM_delay_ms(1); odm_set_bb_reg(dm, 0x18bc, 0xe, 0x3); @@ -1148,8 +1148,8 @@ void halrf_dac_cal_8822c(void *dm_void, boolean force) odm_write_4byte(dm, 0x41b8, 0x62000000); odm_write_4byte(dm, 0x41d4, 0x62000000); ODM_delay_ms(1); - halrf_polling_check(dm, 0x4508, 0x7fff80, 0xffff); - halrf_polling_check(dm, 0x4534, 0x7fff80, 0xffff); + halrf_polling_check_8822c(dm, 0x4508, 0x7fff80, 0xffff); + halrf_polling_check_8822c(dm, 0x4534, 0x7fff80, 0xffff); odm_write_4byte(dm, 0x41b8, 0x02000000); ODM_delay_ms(1); odm_write_4byte(dm, 0x41bc, 0x0008ff87); @@ -1218,8 +1218,8 @@ void halrf_dac_cal_8822c(void *dm_void, boolean force) odm_write_4byte(dm, 0x41b8, 0x62000000); odm_write_4byte(dm, 0x41d4, 0x62000000); ODM_delay_ms(1); - halrf_polling_check(dm, 0x4524, 0x07f80000, ic); - halrf_polling_check(dm, 0x4550, 0x07f80000, qc); + halrf_polling_check_8822c(dm, 0x4524, 0x07f80000, ic); + halrf_polling_check_8822c(dm, 0x4550, 0x07f80000, qc); odm_write_4byte(dm, 0x41b8, 0x02000000); ODM_delay_ms(1); odm_set_bb_reg(dm, 0x41bc, 0xe, 0x3); @@ -1618,4 +1618,18 @@ void halrf_rfk_power_save_8822c( } } +u8 halrf_get_thermal_8822c( + void *dm_void, + u8 path) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + + odm_set_rf_reg(dm, (enum rf_path)path, RF_0x42, BIT(19), 0x1); + odm_set_rf_reg(dm, (enum rf_path)path, RF_0x42, BIT(19), 0x0); + odm_set_rf_reg(dm, (enum rf_path)path, RF_0x42, BIT(19), 0x1); + ODM_delay_us(15); + + return (u8)odm_get_rf_reg(dm, (enum rf_path)path, RF_0x42, 0x0007e); +} + #endif /*(RTL8822C_SUPPORT == 0)*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_8822c.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_8822c.h index 1cf291004..c58018af9 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_8822c.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_8822c.h @@ -96,4 +96,6 @@ void halrf_dack_restore_8822c(void *dm_void); void halrf_rfk_power_save_8822c(void *dm_void, boolean is_power_save); +u8 halrf_get_thermal_8822c(void *dm_void, u8 path); + #endif /*__HALRF_8822C_H__*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_dpk_8822c.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_dpk_8822c.c index b87c65059..df63bcd1c 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_dpk_8822c.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_dpk_8822c.c @@ -1814,7 +1814,7 @@ u8 dpk_reload_8822c( i = _dpk_reload_index_8822c(dm); - if (i != 99) { + if (i < DPK_RF18) { RF_DBG(dm, DBG_RF_DPK, "[DPK] DPK reload for RF0x18 0x%x!!\n", dpk_info->dpk_rf18[i]); _dpk_reload_data_8822c(dm, i); dpk_info->dpk_status = dpk_info->dpk_status | BIT(0); @@ -2228,11 +2228,11 @@ void dpk_c2h_report_transfer_8822c( } idx = _dpk_reload_index_8822c(dm); - - for (i = 0; i < DPK_RF_PATH_NUM_8822C; i++) { - dpk_info->thermal_dpk[i] = dpk_c2h_report.therm[idx][i]; - dpk_info->thermal_dpk_delta[i] = dpk_c2h_report.therm_delta[idx][i]; - } + if (idx < 2) + for (i = 0; i < DPK_RF_PATH_NUM_8822C; i++) { + dpk_info->thermal_dpk[i] = dpk_c2h_report.therm[idx][i]; + dpk_info->thermal_dpk_delta[i] = dpk_c2h_report.therm_delta[idx][i]; + } #if 0 for (i = 0; i < DPK_C2H_REPORT_LEN_8822C; i++) RF_DBG(dm, DBG_RF_DPK, "[DPK] buf[%d] = 0x%x\n", i, *(buf + i)); diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_iqk_8822c.c b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_iqk_8822c.c index a6af3cceb..1884e001d 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_iqk_8822c.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/halrf_iqk_8822c.c @@ -80,7 +80,7 @@ _iqk_check_cal_8822c( return false; } -void _iqk_idft(struct dm_struct *dm) +void _iqk_idft_8822c(struct dm_struct *dm) { odm_write_4byte(dm, 0x1b00, 0x8); @@ -3609,8 +3609,8 @@ _iqk_rx_iqk_gain_search_fail_8822c( if (iqk->isbnd) fail = false; - - iqk->tmp1bcc = IQMUX[idx]; + if(idx < 5) + iqk->tmp1bcc = IQMUX[idx]; if (fail == false){ tmp = (iqk->tmp1bcc << 8) | bb_idx ; @@ -4188,7 +4188,7 @@ void _iqk_iqk_by_path_8822c( case 6: /*IDFT*/ #if 0 RF_DBG(dm, DBG_RF_IQK, "[CC]IDFT\n"); - _iqk_idft(dm); + _iqk_idft_8822c(dm); iqk_info->iqk_step++; #else iqk_info->iqk_step++; @@ -4250,7 +4250,7 @@ void _iqk_iqk_by_path_8822c( } -void _iqk_dpd_in_sel( +void _iqk_dpd_in_sel_8822c( struct dm_struct *dm, u8 input) { @@ -4555,7 +4555,7 @@ void _iqk_rximr_test_8822c( boolean kfail; u8 i, step, count, side; u32 imr_result = 0, tone_index; - u32 temp = 0, temp1b38[2][15]; + u32 temp = 0, temp1b38[2][15] = {0}; char *freq[15] = {"1.25MHz", "3.75MHz", "6.25MHz", "8.75MHz", "11.25MHz", "13.75MHz", "16.25MHz", "18.75MHz", "21.25MHz", "23.75MHz", "26.25MHz", "28.75MHz", "31.25MHz", "33.75MHz", "36.25MHz"}; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/version_rtl8822c_rf.h b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/version_rtl8822c_rf.h index 177a36165..3b29267c5 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/version_rtl8822c_rf.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/halrf/rtl8822c/version_rtl8822c_rf.h @@ -23,4 +23,4 @@ * *****************************************************************************/ /*RTL8822C RF Parameters*/ -#define RF_RELEASE_VERSION_8822C 42 +#define RF_RELEASE_VERSION_8822C 50 diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.c index 3b2e948b8..148851911 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.c @@ -123,21 +123,21 @@ void phydm_cck_new_agc_chk(struct dm_struct *dm) #if (RTL8723D_SUPPORT || RTL8822B_SUPPORT || RTL8821C_SUPPORT ||\ RTL8197F_SUPPORT || RTL8710B_SUPPORT || RTL8192F_SUPPORT ||\ RTL8195B_SUPPORT || RTL8198F_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8721D_SUPPORT || RTL8710C_SUPPORT) + RTL8721D_SUPPORT || RTL8710C_SUPPORT || RTL8822E_SUPPORT) if (dm->support_ic_type & (ODM_RTL8723D | ODM_RTL8822B | ODM_RTL8821C | ODM_RTL8197F | ODM_RTL8710B | ODM_RTL8192F | ODM_RTL8195B | ODM_RTL8721D | ODM_RTL8710C)) { new_agc_addr = R_0xa9c; } else if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8822C | - ODM_RTL8814B | ODM_RTL8197G | ODM_RTL8814C)) { + ODM_RTL8814B | ODM_RTL8197G | ODM_RTL8814C | ODM_RTL8822E)) { new_agc_addr = R_0x1a9c; } /*@1: new agc 0: old agc*/ dm->cck_new_agc = (boolean)odm_get_bb_reg(dm, new_agc_addr, BIT(17)); #endif -#if (RTL8723F_SUPPORT) - if (dm->support_ic_type & (ODM_RTL8723F)) +#if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) dm->cck_new_agc = true; #endif } @@ -585,6 +585,11 @@ void phydm_hw_setting(struct dm_struct *dm) phydm_hwsetting_8822c(dm); #endif +#if (RTL8822E_SUPPORT) + if (dm->support_ic_type & ODM_RTL8822E) + phydm_hwsetting_8822e(dm); +#endif + #if (RTL8197G_SUPPORT) if (dm->support_ic_type & ODM_RTL8197G) phydm_hwsetting_8197g(dm); @@ -595,6 +600,16 @@ void phydm_hw_setting(struct dm_struct *dm) phydm_hwsetting_8723f(dm); #endif +#if (RTL8735B_SUPPORT) + if (dm->support_ic_type & ODM_RTL8735B) + phydm_hwsetting_8735b(dm); +#endif + +#if (RTL8730A_SUPPORT) + if (dm->support_ic_type & ODM_RTL8730A) + phydm_hwsetting_8730a(dm); +#endif + #if (RTL8821C_SUPPORT) if (dm->support_ic_type & ODM_RTL8821C) phydm_hwsetting_8821c(dm); @@ -665,6 +680,24 @@ boolean phydm_chk_bb_rf_pkg_set_valid(struct dm_struct *dm) RELEASE_VERSION_8723F, RF_RELEASE_VERSION_8723F); #endif + #if (RTL8735B_SUPPORT) + } else if (dm->support_ic_type == ODM_RTL8735B) { + valid = phydm_chk_pkg_set_valid_8735b(dm, + RELEASE_VERSION_8735B, + RF_RELEASE_VERSION_8735B); + #endif + #if (RTL8730A_SUPPORT) + } else if (dm->support_ic_type == ODM_RTL8730A) { + valid = phydm_chk_pkg_set_valid_8730a(dm, + RELEASE_VERSION_8730A, + RF_RELEASE_VERSION_8730A); + #endif + #if (RTL8822E_SUPPORT) + } else if (dm->support_ic_type == ODM_RTL8822E) { + //valid = phydm_chk_pkg_set_valid_8822e(dm, + // RELEASE_VERSION_8822E, + // RF_RELEASE_VERSION_8822E); + #endif } return valid; @@ -947,6 +980,57 @@ u64 phydm_supportability_init_win( ODM_BB_ENV_MONITOR; break; #endif + +#if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + /* ODM_BB_DYNAMIC_TXPWR |*/ + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + /*ODM_BB_PWR_TRAIN |*/ + ODM_BB_RATE_ADAPTIVE | + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif + +#if (RTL8730A_SUPPORT) + case ODM_RTL8730A: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + /* ODM_BB_DYNAMIC_TXPWR |*/ + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + /*ODM_BB_PWR_TRAIN |*/ + ODM_BB_RATE_ADAPTIVE | + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif + +#if (RTL8822E_SUPPORT) + case ODM_RTL8822E: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + ODM_BB_DYNAMIC_TXPWR | + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + ODM_BB_RATE_ADAPTIVE | + ODM_BB_PATH_DIV | + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif default: support_ability |= ODM_BB_DIG | @@ -1225,6 +1309,7 @@ u64 phydm_supportability_init_ce(void *dm_void) /*ODM_BB_ENV_MONITOR;*/ break; #endif + #if (RTL8723F_SUPPORT) case ODM_RTL8723F: support_ability |= @@ -1241,6 +1326,57 @@ u64 phydm_supportability_init_ce(void *dm_void) ODM_BB_ENV_MONITOR; break; #endif + +#if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + ODM_BB_DYNAMIC_TXPWR | + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + ODM_BB_RATE_ADAPTIVE | + /* ODM_BB_PATH_DIV | */ + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif + +#if (RTL8730A_SUPPORT) + case ODM_RTL8730A: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + ODM_BB_DYNAMIC_TXPWR | + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + ODM_BB_RATE_ADAPTIVE | + /* ODM_BB_PATH_DIV | */ + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif + +#if (RTL8822E_SUPPORT) + case ODM_RTL8822E: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + ODM_BB_DYNAMIC_TXPWR | + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + ODM_BB_RATE_ADAPTIVE | + /* ODM_BB_PATH_DIV | */ + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif default: support_ability |= ODM_BB_DIG | @@ -1368,7 +1504,7 @@ u64 phydm_supportability_init_ap( /*ODM_BB_PWR_TRAIN |*/ ODM_BB_RATE_ADAPTIVE | ODM_BB_ADAPTIVITY | - /*ODM_BB_CFO_TRACKING |*/ + ODM_BB_CFO_TRACKING | ODM_BB_ADAPTIVE_SOML | /*ODM_BB_PATH_DIV |*/ ODM_BB_ENV_MONITOR | @@ -1525,6 +1661,38 @@ u64 phydm_supportability_init_ap( ODM_BB_ENV_MONITOR; break; #endif + +#if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + /*ODM_BB_PWR_TRAIN |*/ + ODM_BB_RATE_ADAPTIVE | + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif + +#if (RTL8730A_SUPPORT) + case ODM_RTL8730A: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + /*ODM_BB_PWR_TRAIN |*/ + ODM_BB_RATE_ADAPTIVE | + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif default: support_ability |= ODM_BB_DIG | @@ -1636,6 +1804,41 @@ u64 phydm_supportability_init_iot( ODM_BB_ENV_MONITOR; break; #endif + +#if (RTL8730A_SUPPORT) + case ODM_RTL8730A: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + /*ODM_BB_DYNAMIC_TXPWR |*/ + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + ODM_BB_RATE_ADAPTIVE | + /* ODM_BB_PATH_DIV | */ + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif + +#if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + support_ability |= + ODM_BB_DIG | + ODM_BB_RA_MASK | + /*ODM_BB_DYNAMIC_TXPWR |*/ + ODM_BB_FA_CNT | + ODM_BB_RSSI_MONITOR | + ODM_BB_CCK_PD | + /*ODM_BB_PWR_TRAIN |*/ + ODM_BB_RATE_ADAPTIVE | + ODM_BB_ADAPTIVITY | + ODM_BB_CFO_TRACKING | + ODM_BB_ENV_MONITOR; + break; +#endif + default: support_ability |= ODM_BB_DIG | @@ -1719,6 +1922,9 @@ void phydm_supportability_init(void *dm_void) support_ability = *dm->manual_supportability; } else if (*dm->mp_mode) { support_ability = 0; + /*@[Config Antenna Diversity]*/ + if (IS_FUNC_EN(dm->enable_antdiv)) + support_ability |= ODM_BB_ANT_DIV; } else { #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) support_ability = phydm_supportability_init_win(dm); @@ -1744,11 +1950,8 @@ void phydm_supportability_init(void *dm_void) /*@[DYNAMIC_TXPWR and TSSI cannot coexist]*/ if(IS_FUNC_EN(&dm->en_tssi_mode) && - (dm->support_ic_type & ODM_RTL8822C)) - support_ability &= ~ODM_BB_DYNAMIC_TXPWR; - /*@[DYNAMIC_TXPWR and TSSI cannot coexist]*/ - if(IS_FUNC_EN(&dm->en_tssi_mode) && - (dm->support_ic_type & ODM_RTL8723F)) + (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F |\ + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E))) support_ability &= ~ODM_BB_DYNAMIC_TXPWR; } dm->support_ability = support_ability; @@ -1783,6 +1986,11 @@ struct dm_struct *dm = (struct dm_struct *)dm_void; phydm_tx_collsion_th_init_8812f(dm); #endif +#if (RTL8735B_SUPPORT) + if (dm->support_ic_type & ODM_RTL8735B) + phydm_tx_collsion_th_init_8735b(dm); +#endif + } void phydm_tx_collsion_th_set(void *dm_void, u8 val_r2t, u8 val_t2r) @@ -1798,6 +2006,11 @@ void phydm_tx_collsion_th_set(void *dm_void, u8 val_r2t, u8 val_t2r) if (dm->support_ic_type & ODM_RTL8812F) phydm_tx_collsion_th_set_8812f(dm, val_r2t, val_t2r); #endif + +#if (RTL8735B_SUPPORT) + if (dm->support_ic_type & ODM_RTL8735B) + phydm_tx_collsion_th_set_8735b(dm, val_r2t, val_t2r); +#endif } #endif @@ -3035,6 +3248,12 @@ void odm_cmn_info_update(struct dm_struct *dm, u32 cmn_info, u64 value) case ODM_CMNINFO_ATHEROS_HWID: dm->is_R2R_CCA_MASKT_TIME_SHORT = (boolean)value; break; + case ODM_CMNINFO_BROADCOM_HWID: + dm->is_fixed_chsm_winsize_bc = (boolean)value; + break; + case ODM_CMNINFO_RALINK_HWID: + dm->is_fixed_chsm_winsize_mtk = (boolean)value; + break; default: break; } @@ -3134,6 +3353,10 @@ u32 phydm_cmn_info_query(struct dm_struct *dm, enum phydm_info_query info_type) return (u32)fa_t->cnt_cck_txen; case PHYDM_INFO_TXEN_OFDM: return (u32)fa_t->cnt_ofdm_txen; + case PHYDM_INFO_NHM_IDLE_RATIO: + return (u32)ccx_info->nhm_idle_ratio; + case PHYDM_INFO_NHM_TX_RATIO: + return (u32)ccx_info->nhm_tx_ratio; default: return 0xffffffff; } @@ -3776,6 +3999,13 @@ void phydm_dc_cancellation(struct dm_struct *dm) odm_set_bb_reg(dm, R_0x950, 0x1ff, offset_i_hex[0]); odm_set_bb_reg(dm, R_0x950, 0x1ff0000, offset_q_hex[0]); } +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) || (DM_ODM_SUPPORT_TYPE == ODM_AP) + if (dm->support_ic_type & ODM_RTL8192F) { + odm_set_bb_reg(dm, R_0xa78, MASKDWORD, 0x000089f0); + odm_set_bb_reg(dm, R_0xaa8, MASKDWORD, 0xba0a0048); + odm_set_bb_reg(dm, R_0xabc, MASKDWORD, 0x0001f7ff); + } +#endif #endif } diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.h index eb7c06719..85cb0f54a 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.h @@ -215,6 +215,8 @@ extern const u16 phy_rate_table[84]; #define HW_IGI_TXINFO_TABLE_SIZE 64 +#define PHYDM_SNPRINT_SIZE 64 + #ifdef BB_RAM_SUPPORT struct phydm_bb_ram_per_sta { @@ -360,6 +362,7 @@ struct odm_phy_dbg_info { #endif u32 condi_num; /*@condition number U(18,4)*/ u8 condi_num_cdf[CN_CNT_MAX]; + u8 band_idx; u8 num_qry_beacon_pkt; u8 beacon_cnt_in_period; /*@beacon cnt within watchdog period*/ u8 beacon_phy_rate; @@ -440,6 +443,8 @@ enum odm_cmninfo { ODM_CMNINFO_HP_HWID, ODM_CMNINFO_HUAWEI_HWID, ODM_CMNINFO_ATHEROS_HWID, + ODM_CMNINFO_BROADCOM_HWID, + ODM_CMNINFO_RALINK_HWID, ODM_CMNINFO_TSSI_ENABLE, /*also for cmn_info_update*/ ODM_CMNINFO_DIS_DPD, ODM_CMNINFO_POWER_VOLTAGE, @@ -576,7 +581,8 @@ enum phydm_info_query { PHYDM_INFO_NHM_ENV_RATIO, PHYDM_INFO_TXEN_CCK, PHYDM_INFO_TXEN_OFDM, - + PHYDM_INFO_NHM_IDLE_RATIO, + PHYDM_INFO_NHM_TX_RATIO, }; enum phydm_api { @@ -653,6 +659,7 @@ enum phydm_dbg_comp { DBG_ADPTV_SOML = BIT(F17_ADPTV_SOML), DBG_LNA_SAT_CHK = BIT(F18_LNA_SAT_CHK), /*Neet to re-arrange*/ + DBG_CMN_OTHER = BIT(19), DBG_PHY_STATUS = BIT(20), DBG_TMP = BIT(21), DBG_FW_TRACE = BIT(22), @@ -768,7 +775,8 @@ struct _phydm_mcc_dm_ { }; #endif -#if (RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8814B_SUPPORT || RTL8822E_SUPPORT) struct phydm_physts { u8 cck_gi_u_bnd; u8 cck_gi_l_bnd; @@ -801,6 +809,8 @@ struct dm_struct { u32 rx_pwdb_ave; boolean is_init_hw_info_by_rfe; boolean is_R2R_CCA_MASKT_TIME_SHORT; + boolean is_fixed_chsm_winsize_bc; + boolean is_fixed_chsm_winsize_mtk; #if (DM_ODM_SUPPORT_TYPE & ODM_WIN) u32 rts_drop_cnt; u32 low_rate_tx_fail_cnt; @@ -809,7 +819,7 @@ struct dm_struct { //TSSI u8 en_tssi_mode; - #if (RTL8723F_SUPPORT) + #if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) //ZWDFS for 80M u8 en_zwdfs_bw80; #endif @@ -884,14 +894,16 @@ struct dm_struct { u8 en_auto_bw_th; boolean is_pause_dig; boolean en_nbi_detect; - #if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8197G_SUPPORT) + #if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8197G_SUPPORT ||\ + RTL8730A_SUPPORT || RTL8822E_SUPPORT) u8 txagc_buff[RF_PATH_MEM_SIZE][PHY_NUM_RATE_IDX]; u32 bp_0x9b0; - #elif (RTL8723F_SUPPORT) + #elif (RTL8723F_SUPPORT || RTL8735B_SUPPORT) u8 txagc_buff[2][PHY_NUM_RATE_IDX]; u32 bp_0x9b0; #endif - #if (RTL8822C_SUPPORT || RTL8723F_SUPPORT) + #if (RTL8822C_SUPPORT || RTL8723F_SUPPORT || RTL8735B_SUPPORT ||\ + RTL8730A_SUPPORT || RTL8822E_SUPPORT) u8 ofdm_rxagc_l_bnd[16]; boolean l_bnd_detect[16]; u16 agc_rf_gain_ori[16][64];/*[table][mp_gain_idx]*/ @@ -900,6 +912,16 @@ struct dm_struct { boolean is_agc_tab_pos_shift; u8 agc_table_shift; #endif + #if (RTL8822E_SUPPORT) + boolean bt_is_linked; + boolean btc_rssi_processing; + boolean btc_mcs_rssi_en; + u8 bt_iso_tbl_idx; + u8 bt_cck_rssi_th; + #endif + boolean is_nbi_csi; + char dbg_buf[PHYDM_SNPRINT_SIZE]; + u8 rx_rate_plurality; /*@-----------HOOK BEFORE REG INIT-----------*/ /*@===========================================================*/ /*@====[ CALL BY Reference ]=========================================*/ @@ -944,7 +966,7 @@ struct dm_struct { /*@===========================================================*/ /*@====[ CALL BY VALUE ]===========================================*/ /*@===========================================================*/ - + u8 retry_cnt; u8 disable_phydm_watchdog; boolean is_link_in_process; boolean is_wifi_direct; @@ -960,6 +982,7 @@ struct dm_struct { u8 rssi_max; u8 rssi_max_macid; u8 rssi_min_by_path; + u8 is_orientation_env; boolean is_mp_chip; boolean is_one_entry_only; u32 one_entry_macid; @@ -1108,6 +1131,8 @@ struct dm_struct { #if (RTL8814B_SUPPORT || RTL8198F_SUPPORT) u8 csi_wgt_th_db[5]; /*@wgt 4,3,2,1,0 */ /* ^ ^ ^ ^ ^ */ + u8 psd_trials_sw_log2; + u8 psd_trials_hw_log2; #endif /*@------------------------------------------*/ @@ -1260,7 +1285,7 @@ struct dm_struct { #if (DM_ODM_SUPPORT_TYPE & ODM_WIN) struct odm_phy_dbg_info phy_dbg_info_win_bkp; #endif -#ifdef PHYDM_IC_JGR3_SERIES_SUPPORT +#if (defined (PHYDM_IC_JGR3_SERIES_SUPPORT) && defined (CONFIG_BB_TXBF_API)) struct phydm_bf_rate_info_jgr3 bf_rate_info_jgr3; #endif @@ -1373,7 +1398,8 @@ struct dm_struct { #endif /*@==========================================================*/ -#if (RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8814B_SUPPORT || RTL8822E_SUPPORT) /*@-------------------phydm_phystatus report --------------------*/ struct phydm_physts dm_physts_table; #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.mk b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.mk index 2c007b79f..7dd07a630 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.mk +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm.mk @@ -237,6 +237,7 @@ _PHYDM_FILES += hal/phydm/$(RTL871X)/halhwimg8814b_bb.o\ hal/phydm/halrf/rtl8814c/halrf_iqk_8814c.o\ hal/phydm/halrf/rtl8814c/halrf_dpk_8814c.o\ hal/phydm/halrf/rtl8814c/halrf_rfk_init_8814c.o\ + hal/phydm/halrf/rtl8814c/halrf_txgapk_8814c.o\ hal/phydm/halrf/rtl8814c/halhwimg8814c_rf.o\ hal/phydm/halrf/rtl8814c/halrf_8814c.o\ hal/phydm/rtl8814c/halhwimg8814c_bb.o\ @@ -256,4 +257,32 @@ _PHYDM_FILES += hal/phydm/$(RTL871X)/halhwimg8723f_bb.o\ hal/phydm/halrf/$(RTL871X)/halrf_txgapk_8723f.o\ hal/phydm/halrf/$(RTL871X)/halrf_rfk_init_8723f.o\ hal/phydm/halrf/$(RTL871X)/halhwimg8723f_rf.o -endif \ No newline at end of file +endif +ifeq ($(CONFIG_RTL8730A), y) +RTL871X = rtl8730a +_PHYDM_FILES += hal/phydm/$(RTL871X)/halhwimg8730a_bb.o\ + hal/phydm/$(RTL871X)/phydm_hal_api8730a.o\ + hal/phydm/$(RTL871X)/phydm_regconfig8730a.o\ + hal/phydm/$(RTL871X)/phydm_rtl8730a.o\ + hal/phydm/halrf/$(RTL871X)/halrf_8730a.o\ + hal/phydm/halrf/$(RTL871X)/halrf_iqk_8730a.o\ + hal/phydm/halrf/$(RTL871X)/halrf_tssi_8730a.o\ + hal/phydm/halrf/$(RTL871X)/halrf_dpk_8730a.o\ + hal/phydm/halrf/$(RTL871X)/halrf_txgapk_8730a.o\ + hal/phydm/halrf/$(RTL871X)/halrf_rfk_init_8730a.o\ + hal/phydm/halrf/$(RTL871X)/halhwimg8730a_rf.o +endif +ifeq ($(CONFIG_RTL8822E), y) +RTL871X = rtl8822e +_PHYDM_FILES += hal/phydm/$(RTL871X)/halhwimg8822e_bb.o\ + hal/phydm/$(RTL871X)/phydm_hal_api8822e.o\ + hal/phydm/$(RTL871X)/phydm_regconfig8822e.o\ + hal/phydm/$(RTL871X)/phydm_rtl8822e.o\ + hal/phydm/halrf/$(RTL871X)/halrf_8822e.o\ + hal/phydm/halrf/$(RTL871X)/halrf_iqk_8822e.o\ + hal/phydm/halrf/$(RTL871X)/halrf_tssi_8822e.o\ + hal/phydm/halrf/$(RTL871X)/halrf_dpk_8822e.o\ + hal/phydm/halrf/$(RTL871X)/halrf_txgapk_8822e.o\ + hal/phydm/halrf/$(RTL871X)/halrf_rfk_init_8822e.o\ + hal/phydm/halrf/$(RTL871X)/halhwimg8822e_rf.o +endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adaptivity.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adaptivity.c index ed6fea4d9..b3495c545 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adaptivity.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adaptivity.c @@ -152,7 +152,8 @@ void phydm_set_l2h_th_ini_win(void *dm_void) /*@ [New Format: JGR3]IGI-idx:45 = RSSI:35 = -65dBm*/ if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F)) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F |\ + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E)) dm->th_l2h_ini = 45; else if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) dm->th_l2h_ini = 49; @@ -634,7 +635,8 @@ void phydm_set_l2h_th_ini(void *dm_void) /*@ [New Format: JGR3]IGI-idx:45 = RSSI:35 = -65dBm*/ if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F)) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F |\ + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E)) dm->th_l2h_ini = 45; else if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) dm->th_l2h_ini = 49; @@ -1022,7 +1024,7 @@ void phydm_adaptivity_init(void *dm_void) if (dm->support_ic_type & ODM_RTL8822C) { adaptivity->l2h_ini_range_max = 45; - adaptivity->l2h_ini_range_min = 35; + adaptivity->l2h_ini_range_min = 45; } else { adaptivity->l2h_ini_range_max = dm->th_l2h_ini; adaptivity->l2h_ini_range_min = dm->th_l2h_ini; @@ -1149,7 +1151,7 @@ void phydm_adaptivity(void *dm_void) if (dm->support_ic_type & ODM_RTL8822C) phydm_dyn_l2h_ini(dm); #endif -#if (DM_ODM_SUPPORT_TYPE == ODM_CE) +/*#if (DM_ODM_SUPPORT_TYPE == ODM_CE) if (!adapt->debug_mode) { if (*dm->edcca_mode == PHYDM_EDCCA_ADAPT_MODE && dm->carrier_sense_enable) @@ -1157,7 +1159,8 @@ void phydm_adaptivity(void *dm_void) else if (*dm->edcca_mode == PHYDM_EDCCA_ADAPT_MODE) phydm_set_l2h_th_ini(dm); } -#endif +#endif*/ +/*@SD4 reports that if th_l2h updates in every watchdogs, th_l2h can't be modified by drvier layer with cmd */ PHYDM_DBG(dm, DBG_ADPTVTY, "%s ====>\n", __func__); PHYDM_DBG(dm, DBG_ADPTVTY, "mode = %s, debug_mode = %d\n", (*dm->edcca_mode ? diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adc_sampling.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adc_sampling.c index 6cfb9147a..f44890b1d 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adc_sampling.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adc_sampling.c @@ -135,14 +135,14 @@ phydm_la_clk_en(void *dm_void, boolean enable) } #endif -#if (RTL8723F_SUPPORT) +#if (RTL8723F_SUPPORT || RTL8730A_SUPPORT) void phydm_la_mac_clk_en(void *dm_void, boolean enable) { struct dm_struct *dm = (struct dm_struct *)dm_void; u8 val = (enable) ? 1 : 0; - if (!(dm->support_ic_type & ODM_RTL8723F)) + if (!(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8730A))) return; odm_set_mac_reg(dm, R_0x1008, BIT(1), val); @@ -271,6 +271,69 @@ phydm_la_mv_data_2_tx_buffer_rtl8723f(void *dm_void, u32 source, u32 dest, u32 } #endif +#if(RTL8730A_SUPPORT) +void +phydm_la_mv_data_2_tx_buffer_rtl8730a(void *dm_void, u32 source, u32 dest, u32 length) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct rt_adcsmp *smp = &dm->adcsmp; + struct rt_adcsmp_string *buf = &smp->adc_smp_buf; + //u32 ch0ctrl = (BIT(29)|BIT(31)); + u32 ch0ctrl = BIT(31); + u32 cnt=25000; + + pr_debug("GetTxPktBuf from iMEM\n"); + /*Disable LA mode HW block*/ + odm_set_mac_reg(dm, R_0x7c0, BIT(0), 0x0); + + /* @move LA mode content from IMEM to TxPktBuffer + * Source : OCPBASE_IMEM 0x14040000 + * Destination : OCPBASE_TXBUF 0x18780000 + * Length : 32K + */ + /* + OCPBASE_IMEM = 0x18600000; + OCPBASE_TXBUF = 0x18780000; + GET_HAL_INTERFACE(dm->priv)->init_ddma_handler(dm->priv, + OCPBASE_IMEM, + OCPBASE_TXBUF + + buf->start_pos, + 0x8000); + */ + + // TODO: Replace all register define & bit define + + + //check if ddma ch0 is idle + while(odm_get_mac_reg(dm, R_0x1208 , BIT(31))){ + ODM_delay_ms(10); + cnt--; + if(cnt==0){ + pr_debug("1 InitDDMA88XX polling fail \n"); + return; + } + } + + ch0ctrl |= length & 0x3FFFF; + + //check if chksum continuous + //ch0ctrl |= BIT(24); + + odm_set_mac_reg(dm, R_0x1200, MASKDWORD, source); /*0x1200[31:0]:Source Address*/ + odm_set_mac_reg(dm, R_0x1204, MASKDWORD, dest); /*0x1204[31:0]:Destination Address*/ + odm_set_mac_reg(dm, R_0x1208, MASKDWORD, ch0ctrl); /*0x1208[17:0]:DMA Length*/ +//check if ddma ch0 is idle + while(odm_get_mac_reg(dm, R_0x1208 , BIT(31))){ + ODM_delay_ms(10); + cnt--; + if(cnt==0){ + pr_debug("2 InitDDMA88XX polling fail \n"); + return ; + } + } +} +#endif + #ifdef PHYDM_IC_JGR3_SERIES_SUPPORT void phydm_la_bb_adv_reset_jgr3(void *dm_void) @@ -1022,6 +1085,62 @@ void phydm_la_get_tx_pkt_buf(void *dm_void) if (imem_start_addr_offset > (finish_addr << 3)) break; } + } +#elif(RTL8730A_SUPPORT) + imem_base = 0x14040000; + txbuf_base = 0x18780000; + dma_len = 0x8000; + txbuff_start_addr = txbuf_base; + imem_start_addr_offset = addr; + if (is_round_up) { + for(index = 0;index < 4;index++) { + dma_len = 0x8000; + imem_start_addr= imem_base + (imem_start_addr_offset&0x1FFFF); + if((imem_start_addr_offset + 0x8000) >= buf->end_pos) { + dma_len = buf->end_pos-imem_start_addr_offset; + phydm_la_mv_data_2_tx_buffer_rtl8730a(dm, imem_start_addr, txbuff_start_addr, dma_len); + tx_buff_addr = 0; + for (i = 0; i < (dma_len >> 3); i++) { + phydm_la_access_tx_pkt_buf(dm, tx_buff_addr, i << 1); + tx_buff_addr += 8; + } + imem_start_addr = imem_base; + dma_len = 0x8000-dma_len; + phydm_la_mv_data_2_tx_buffer_rtl8730a(dm, imem_start_addr, txbuff_start_addr, dma_len); + tx_buff_addr = 0; + for (i = 0; i < (dma_len >> 3); i++) { + phydm_la_access_tx_pkt_buf(dm, tx_buff_addr, i << 1); + tx_buff_addr += 8; + } + imem_start_addr_offset = dma_len; + } + else { + dma_len = 0x8000; + phydm_la_mv_data_2_tx_buffer_rtl8730a(dm, imem_start_addr, txbuff_start_addr, dma_len); + tx_buff_addr = 0; + for (i = 0; i <4096; i++) { + phydm_la_access_tx_pkt_buf(dm, tx_buff_addr, i << 1); + tx_buff_addr += 8; + } + imem_start_addr_offset += 0x8000; + } + } + } else { + for(index = 0; index < 4;index++) { + imem_start_addr = imem_base + (imem_start_addr_offset & 0x1FFFF); + if ((imem_start_addr_offset + 0x8000) > (finish_addr << 3)) + dma_len = (finish_addr << 3) - imem_start_addr_offset; /*0x1208[17:0]:DMA Length*/ + phydm_la_mv_data_2_tx_buffer_rtl8730a(dm,imem_start_addr, txbuff_start_addr, dma_len); + tx_buff_addr = 0; + for (i = 0; i < (dma_len >> 3); i++) { + phydm_la_access_tx_pkt_buf(dm, tx_buff_addr, i << 1); + tx_buff_addr += 8; + } + dma_len = 0x8000; + imem_start_addr_offset += 0x8000; + if (imem_start_addr_offset > (finish_addr << 3)) + break; + } } #else @@ -1048,6 +1167,7 @@ void phydm_la_get_tx_pkt_buf(void *dm_void) #if (RTL8197F_SUPPORT) phydm_la_stop_dma_8197f(dm, PHYDM_RESTORE); #endif + #endif pr_debug("Dump_End\n"); } @@ -1084,10 +1204,11 @@ void phydm_la_set_mac_iq_dump(void *dm_void, boolean impossible_trig_condi) /*@Enable LA mode HW block*/ odm_set_mac_reg(dm, reg1, BIT(0), 1); - #if (RTL8723F_SUPPORT) - if (dm->support_ic_type & ODM_RTL8723F) + #if (RTL8723F_SUPPORT || RTL8730A_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8730A)) phydm_la_mac_clk_en(dm, true); #endif + if (smp->la_trig_mode == PHYDM_MAC_TRIG) { smp->la_dump_mode = LA_MAC_DBG_DUMP; @@ -1291,7 +1412,7 @@ void phydm_la_set_mac_trigger_time(void *dm_void, u32 trigger_time_mu_sec) else if (trigger_time_mu_sec < 8192) unit = 6; /*unit: 64mu sec*/ else if (trigger_time_mu_sec < 16384) - if (dm->support_ic_type & ODM_RTL8723F) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8730A)) unit = 7; /*unit: 128mu sec*/ time_unit_num = (u8)(trigger_time_mu_sec >> unit); @@ -1342,6 +1463,7 @@ void phydm_la_set_buff_mode(void *dm_void, enum la_buff_mode mode) case ODM_RTL8822B: case ODM_RTL8822C: case ODM_RTL8812F: + case ODM_RTL8822E: buff_size_base = 0x20000; /*@WIN: TX_FIFO_SIZE_LA_8822C*/ end_pos_tmp = 0x40000; break; @@ -1374,6 +1496,14 @@ void phydm_la_set_buff_mode(void *dm_void, enum la_buff_mode mode) buff_size_base = 0x20000; end_pos_tmp = 0x20000; break; + case ODM_RTL8735B: + buff_size_base = 0x4000; + end_pos_tmp = 0x8000; + break; + case ODM_RTL8730A: + buff_size_base = 0x20000; + end_pos_tmp = 0x20000; + break; default: pr_debug("[%s] Warning!", __func__); break; @@ -1401,9 +1531,9 @@ void phydm_la_set_buff_mode(void *dm_void, enum la_buff_mode mode) buf->start_pos = end_pos_tmp - buf->buffer_size; smp->smp_number_max = buf->buffer_size >> 3; - //pr_debug("start_addr=(0x%x), end_addr=(0x%x), buffer_size=(0x%x), smp_number_max=(%d)\n", - // buf->start_pos, buf->end_pos, buf->buffer_size, - // smp->smp_number_max); + pr_debug("start_addr=(0x%x), end_addr=(0x%x), buffer_size=(0x%x), smp_number_max=(%d)\n", + buf->start_pos, buf->end_pos, buf->buffer_size, + smp->smp_number_max); } void phydm_la_adc_smp_start(void *dm_void) @@ -1413,7 +1543,9 @@ void phydm_la_adc_smp_start(void *dm_void) u8 tmp_u1b = 0; u8 i = 0; u8 polling_bit = 0; +#if (RTL8723F_SUPPORT || RTL8730A_SUPPORT) u8 bkp_val = 0; +#endif boolean polling_ok = false; boolean impossible_trig_condi = (smp->en_fake_trig) ? true : false; @@ -1427,8 +1559,12 @@ void phydm_la_adc_smp_start(void *dm_void) smp->la_trig_mode, smp->la_dbg_port, smp->la_trigger_edge, smp->la_smp_rate, smp->la_trig_sig_sel, smp->la_dma_type); +#if (RTL8723F_SUPPORT || RTL8730A_SUPPORT) if(dm->support_ic_type & ODM_RTL8723F) bkp_val = (u8)odm_get_mac_reg(dm, R_0x1008, BIT(1)); + else if(dm->support_ic_type & ODM_RTL8730A) + bkp_val = (u8)odm_get_mac_reg(dm, R_0x1008, BIT(1)); +#endif phydm_la_set_mac_trigger_time(dm, smp->la_trigger_time); phydm_la_set_bb(dm); @@ -1505,8 +1641,8 @@ void phydm_la_adc_smp_start(void *dm_void) #if (RTL8821C_SUPPORT || RTL8195B_SUPPORT) phydm_la_clk_en(dm, false); #endif - #if (RTL8723F_SUPPORT) - if(dm->support_ic_type & ODM_RTL8723F) + #if (RTL8723F_SUPPORT || RTL8730A_SUPPORT) + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8730A)) phydm_la_mac_clk_en(dm, (bkp_val == 1) ? true : false); #endif } else { diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adc_sampling.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adc_sampling.h index d0ad1c173..93a87129c 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adc_sampling.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_adc_sampling.h @@ -45,7 +45,8 @@ #define PHYDM_LA_STORE_IN_IMEM_IC (ODM_RTL8197F | ODM_RTL8198F | ODM_RTL8197G) #define FULL_BUFF_MODE_SUPPORT (ODM_RTL8821C | ODM_RTL8195B | ODM_RTL8822C |\ - ODM_RTL8812F | ODM_RTL8814B | ODM_RTL8814C) + ODM_RTL8812F | ODM_RTL8814B | ODM_RTL8814C |\ + ODM_RTL8735B | ODM_RTL8822E) /* @ ============================================================ * enumrate diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdect.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdect.c index a3213896c..7a95fbb80 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdect.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdect.c @@ -667,6 +667,7 @@ void odm_single_dual_antenna_detection_psd( u8 initial_gain = 0x36; u8 tone_idx; u8 tone_lenth_1 = 7, tone_lenth_2 = 4; + u8 tone_lenth_total = tone_lenth_1 + tone_lenth_2; u16 tone_idx_1[7] = {88, 104, 120, 8, 24, 40, 56}; u16 tone_idx_2[4] = {8, 24, 40, 56}; u32 psd_report_main[11] = {0}, psd_report_aux[11] = {0}; @@ -783,7 +784,7 @@ void odm_single_dual_antenna_detection_psd( /* @2 [ Calculate Result ] */ PHYDM_DBG(dm, DBG_ANT_DIV, "\nMain PSD Result: (ALL)\n"); - for (tone_idx = 0; tone_idx < (tone_lenth_1 + tone_lenth_2); tone_idx++) { + for (tone_idx = 0; tone_idx < tone_lenth_total; tone_idx++) { PHYDM_DBG(dm, DBG_ANT_DIV, "[Tone-%d]: %d,\n", (tone_idx + 1), psd_report_main[tone_idx]); main_psd_result += psd_report_main[tone_idx]; @@ -797,7 +798,7 @@ void odm_single_dual_antenna_detection_psd( max_psd_report_main); PHYDM_DBG(dm, DBG_ANT_DIV, "\nAux PSD Result: (ALL)\n"); - for (tone_idx = 0; tone_idx < (tone_lenth_1 + tone_lenth_2); tone_idx++) { + for (tone_idx = 0; tone_idx < tone_lenth_total; tone_idx++) { PHYDM_DBG(dm, DBG_ANT_DIV, "[Tone-%d]: %d,\n", (tone_idx + 1), psd_report_aux[tone_idx]); aux_psd_result += psd_report_aux[tone_idx]; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdiv.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdiv.c index 3c2cc583e..00f03e428 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdiv.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdiv.c @@ -495,13 +495,13 @@ void phydm_jgr3_on_off(void *dm_void, u8 swch, u8 path) odm_set_bb_reg(dm, R_0x8a0, BIT(17), swch); /* OFDM AntDiv function block enable */ - if (dm->support_ic_type & ODM_RTL8723F) { - odm_set_bb_reg(dm, R_0x1a48, BIT(16), swch); - /* @CCK AntDiv function block enable */ - } - else{ - odm_set_bb_reg(dm, R_0xa00, BIT(15), swch); - /* @CCK AntDiv function block enable */ + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { + odm_set_bb_reg(dm, R_0x1a48, BIT(16), swch); + odm_set_bb_reg(dm, R_0x1c68, BIT(1), swch); + /* @CCK AntDiv function block enable */ + } else{ + odm_set_bb_reg(dm, R_0xa00, BIT(15), swch); + /* @CCK AntDiv function block enable */ } PHYDM_DBG(dm, DBG_ANT_DIV, "[8723F] AntDiv_on\n"); @@ -613,9 +613,16 @@ void phydm_keep_rx_ack_ant_by_tx_ant_time(void *dm_void, u32 time) odm_set_bb_reg(dm, R_0xe20, 0xf00000, time); else if (dm->support_ic_type & ODM_AC_ANTDIV_SUPPORT) odm_set_bb_reg(dm, R_0x818, 0xf00000, time); + if (dm->support_ic_type & ODM_RTL8723F) { odm_set_bb_reg(dm, R_0x1c8c, 0xf00, time); /* keep antenna index after tx */ + }else if (dm->support_ic_type & ODM_RTL8735B) { + odm_set_bb_reg(dm, R_0x1c8c, 0xf00, time); + /* keep antenna index after tx */ + }else if (dm->support_ic_type & ODM_RTL8730A) { + odm_set_bb_reg(dm, R_0x1c8c, 0xf00, time); + /* keep antenna index after tx */ } @@ -1913,6 +1920,92 @@ void phydm_rx_hw_ant_div_init_97g(void *dm_void) #if (RTL8723F_SUPPORT == 1) void phydm_rx_hw_ant_div_init_23f(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct phydm_fat_struct *fat_tab = &dm->dm_fat_table; + u32 HW_special_type; + u32 QFN40=0,QFN48=0; + + PHYDM_DBG(dm, DBG_ANT_DIV, "[%s]=====>\n", __func__); + /* @3 --RFE pin setting--------- */ + odm_set_mac_reg(dm, R_0x30, 0xffffffff,0x27a1f900); + HW_special_type=odm_get_mac_reg(dm, R_0x30, 0xf0); + PHYDM_DBG(dm, DBG_ANT_DIV, + "[QF40/48 report] 0x1f9[7:4] =%x\n",odm_get_mac_reg(dm, R_0x30, 0xf0)); + if(HW_special_type==0){ + odm_set_mac_reg(dm, R_0x30, 0xffffffff,0x27a1fc00); + PHYDM_DBG(dm, DBG_ANT_DIV,"[QF40/48 report] 0x1fc[7:4] =%x\n",odm_get_mac_reg(dm, R_0x30, 0xf0)); + HW_special_type=odm_get_mac_reg(dm, R_0x30, 0xf0); + } + switch(HW_special_type){ + case 0x1: + case 0x7: + case 0x8: + case 0xa: + QFN40=1; + PHYDM_DBG(dm, DBG_ANT_DIV,"[QF40 is used] \n"); + break; + case 0xc: + case 0xe: + QFN48=1; + PHYDM_DBG(dm, DBG_ANT_DIV,"[QF48 is used] \n"); + break; + case 0xf: + PHYDM_DBG(dm, DBG_ANT_DIV,"[QF40/48 no used] \n"); + break; + case 0x0: + PHYDM_DBG(dm, DBG_ANT_DIV,"[QF40/48 abort] \n"); + break; + default: + PHYDM_DBG(dm, DBG_ANT_DIV,"[QF40/48 not defined] \n"); + } + + /* @3 --RFE pin setting--------- */ + /* @[MAC] */ + if(QFN40==1){ + /* @gpioA_15 funciion id*/ + odm_set_mac_reg(dm, R_0x10dc, 0xFF000000, 0x16); + /* @[BB] */ + odm_set_bb_reg(dm, R_0x1c94, BIT(5), 0x1); /* rfe_ctrl_5 output enable */ + odm_set_bb_reg(dm, R_0x1ca0, BIT(5), 0x0);/*rfe_ctrl_5 output source 0:rfe_ctrl_src,1:rfe_gpio_dbg */ + odm_set_bb_reg(dm, R_0x1c98, BIT(10) | BIT(11), 0x0);/* r_rfe_path_sel_ (RFE_CTRL_5) */ + odm_set_bb_reg(dm, R_0x183c, BIT(5), 0); /* rfe_inv (RFE_CTRL_5) */ + odm_set_bb_reg(dm, R_0x1840, 0xF00000, 0x8); /* path-A, RFE_CTRL_5 */ + } + if(QFN48==1){ + /* @gpioA_11 funciion id*/ + odm_set_mac_reg(dm, R_0x10d8, 0xFF000000, 0x16); + /* @[BB] */ + odm_set_bb_reg(dm, R_0x1c94, BIT(2), 0x1); /* rfe_ctrl_2 output enable */ + odm_set_bb_reg(dm, R_0x1ca0, BIT(2), 0x0);/* rfe_ctrl_2 output source 0:rfe_ctrl_src,1:rfe_gpio_dbg */ + odm_set_bb_reg(dm, R_0x1c98, BIT(4) | BIT(5), 0x0);/* r_rfe_path_sel_ (RFE_CTRL_2) */ + odm_set_bb_reg(dm, R_0x183c, BIT(2), 0); /* rfe_inv (RFE_CTRL_2) */ + odm_set_bb_reg(dm, R_0x1840, 0xF00, 0x8); /* path-A, RFE_CTRL_2 */ + } + odm_set_bb_reg(dm, R_0x1838, BIT(28), 0); /* RFE_buffer_en */ + /* Pin Settings */ + odm_set_bb_reg(dm, R_0x1884, BIT(23), 0); + odm_set_bb_reg(dm, R_0x1884, BIT(25), 0); + /* reg1844[23]=1'b0 *//*"CG switching" is controlled by HWs*/ + /* reg1844[25]=1'b0 *//*"CG switching" is controlled by HWs*/ + odm_set_bb_reg(dm, R_0x1884, BIT(16), 1); + /* reg1844[16]=1'b1 *//*"antsel" is controlled by HWs*/ + + /* @Mapping table */ + odm_set_bb_reg(dm, R_0x1870, 0xFFFF, 0x0100); + /* @antenna mapping table */ + + /* OFDM Settings */ + odm_set_bb_reg(dm, R_0x1938, 0xFFE0, 0xA0); /* thershold */ + odm_set_bb_reg(dm, R_0x1938, 0x7FF0000, 0x0); /* @bias */ +#ifdef ODM_EVM_ENHANCE_ANTDIV + phydm_evm_sw_antdiv_init(dm); +#endif +} +#endif //#if (RTL8723F_SUPPORT == 1) + +#if (RTL8735B_SUPPORT == 1) +void phydm_rx_hw_ant_div_init_8735b(void *dm_void) { struct dm_struct *dm = (struct dm_struct *)dm_void; struct phydm_fat_struct *fat_tab = &dm->dm_fat_table; @@ -1956,7 +2049,56 @@ void phydm_rx_hw_ant_div_init_23f(void *dm_void) phydm_evm_sw_antdiv_init(dm); #endif } -#endif //#if (RTL8723F_SUPPORT == 1) +#endif //#if (RTL8735B_SUPPORT == 1) + +#if (RTL8730A_SUPPORT == 1) +void phydm_rx_hw_ant_div_init_8730a(void *dm_void) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct phydm_fat_struct *fat_tab = &dm->dm_fat_table; + + PHYDM_DBG(dm, DBG_ANT_DIV, "[%s]=====>\n", __func__); + /* @3 --RFE pin setting--------- */ + /* @[MAC] */ + /* @gpioB_6,gpioB_7 */ + /* PA[15] 0x42008a3c[4:0]=0x16 */ + /* PA[16] 0x42008a40[4:0]=0x16 */ + HAL_WRITE8(SYSTEM_CTRL_BASE_LP, 0xa3c, HAL_READ8(SYSTEM_CTRL_BASE_LP, 0xa3c)&0xE0 | 0x16); + HAL_WRITE8(SYSTEM_CTRL_BASE_LP, 0xa40, HAL_READ8(SYSTEM_CTRL_BASE_LP, 0xa40)&0xE0 | 0x16); + /* @[BB] */ + odm_set_bb_reg(dm, R_0x1c94, BIT(0) | BIT(1), 0x3); /* output enable */ + odm_set_bb_reg(dm, R_0x1ca0, BIT(0) | BIT(1), 0x0); + odm_set_bb_reg(dm, R_0x1c98, BIT(0) | BIT(1), 0x0); + /* r_rfe_path_sel_ (RFE_CTRL_0) */ + odm_set_bb_reg(dm, R_0x1c98, BIT(2) | BIT(3), 0x0); + /* r_rfe_path_sel_ (RFE_CTRL_1) */ + odm_set_bb_reg(dm, R_0x1838, BIT(28), 0); /* RFE_buffer_en */ + odm_set_bb_reg(dm, R_0x183c, BIT(0), 1); /* rfe_inv (RFE_CTRL_0) */ + odm_set_bb_reg(dm, R_0x183c, BIT(1), 0); /* rfe_inv (RFE_CTRL_1) */ + odm_set_bb_reg(dm, R_0x1840, 0xF, 0x8); /* path-A, RFE_CTRL_0 */ + odm_set_bb_reg(dm, R_0x1840, 0xF0, 0x8); /* path-A, RFE_CTRL_1 */ + /* @3 ------------------------- */ + + /* Pin Settings */ + odm_set_bb_reg(dm, R_0x1884, BIT(23), 0); + odm_set_bb_reg(dm, R_0x1884, BIT(25), 0); + /* reg1844[23]=1'b0 *//*"CG switching" is controlled by HWs*/ + /* reg1844[25]=1'b0 *//*"CG switching" is controlled by HWs*/ + odm_set_bb_reg(dm, R_0x1884, BIT(16), 1); + /* reg1844[16]=1'b1 *//*"antsel" is controlled by HWs*/ + + /* @Mapping table */ + odm_set_bb_reg(dm, R_0x1870, 0xFFFF, 0x0100); + /* @antenna mapping table */ + + /* OFDM Settings */ + odm_set_bb_reg(dm, R_0x1938, 0xFFE0, 0xA0); /* thershold */ + odm_set_bb_reg(dm, R_0x1938, 0x7FF0000, 0x0); /* @bias */ +#ifdef ODM_EVM_ENHANCE_ANTDIV + phydm_evm_sw_antdiv_init(dm); +#endif +} +#endif //#if (RTL8730A_SUPPORT == 1) #if (RTL8723D_SUPPORT == 1) void odm_trx_hw_ant_div_init_8723d(void *dm_void) @@ -4996,6 +5138,34 @@ void odm_ant_div_init(void *dm_void) phydm_rx_hw_ant_div_init_23f(dm); } #endif + +#if (RTL8735B_SUPPORT == 1) + else if (dm->support_ic_type == ODM_RTL8735B) { + dm->ant_div_type = CG_TRX_HW_ANTDIV; + + if (dm->ant_div_type != CG_TRX_HW_ANTDIV) { + PHYDM_DBG(dm, DBG_ANT_DIV, + "[Return!!!] 8735B Not Supprrt This AntDiv type\n"); + dm->support_ability &= ~(ODM_BB_ANT_DIV); + return; + } + phydm_rx_hw_ant_div_init_8735b(dm); + } +#endif + +#if (RTL8730A_SUPPORT == 1) + else if (dm->support_ic_type == ODM_RTL8730A) { + dm->ant_div_type = CG_TRX_HW_ANTDIV; + + if (dm->ant_div_type != CG_TRX_HW_ANTDIV) { + PHYDM_DBG(dm, DBG_ANT_DIV, + "[Return!!!] 8730A Not Supprrt This AntDiv type\n"); + dm->support_ability &= ~(ODM_BB_ANT_DIV); + return; + } + phydm_rx_hw_ant_div_init_8730a(dm); + } +#endif /* @2 [--8723B---] */ #if (RTL8723B_SUPPORT == 1) else if (dm->support_ic_type == ODM_RTL8723B) { @@ -5453,6 +5623,21 @@ void odm_ant_div(void *dm_void) } #endif +/*@ [--8735B--] */ +#if (RTL8735B_SUPPORT == 1) + else if (dm->support_ic_type == ODM_RTL8735B) { + if (dm->ant_div_type == CG_TRX_HW_ANTDIV) + odm_hw_ant_div(dm); + } +#endif + +/*@ [--8730A--] */ +#if (RTL8730A_SUPPORT == 1) + else if (dm->support_ic_type == ODM_RTL8730A) { + if (dm->ant_div_type == CG_TRX_HW_ANTDIV) + odm_hw_ant_div(dm); + } +#endif #if (RTL8723B_SUPPORT == 1) /*@ [--8723B---] */ else if (dm->support_ic_type == ODM_RTL8723B) { diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdiv.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdiv.h index f68bbdb25..63526185a 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdiv.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_antdiv.h @@ -88,7 +88,8 @@ #define ODM_AC_ANTDIV_SUPPORT (ODM_RTL8821 | ODM_RTL8881A | ODM_RTL8812 |\ ODM_RTL8821C | ODM_RTL8822B | ODM_RTL8814B |\ ODM_RTL8195B | ODM_RTL8814C) -#define ODM_JGR3_ANTDIV_SUPPORT (ODM_RTL8197G | ODM_RTL8723F) +#define ODM_JGR3_ANTDIV_SUPPORT (ODM_RTL8197G | ODM_RTL8723F | ODM_RTL8735B |\ + ODM_RTL8730A) #define ODM_ANTDIV_SUPPORT (ODM_N_ANTDIV_SUPPORT | ODM_AC_ANTDIV_SUPPORT |\ ODM_JGR3_ANTDIV_SUPPORT) #define ODM_SMART_ANT_SUPPORT (ODM_RTL8188E | ODM_RTL8192E) @@ -96,9 +97,11 @@ #define ODM_ANTDIV_2G_SUPPORT_IC (ODM_RTL8188E | ODM_RTL8192E | ODM_RTL8723B |\ ODM_RTL8881A | ODM_RTL8188F | ODM_RTL8723D |\ - ODM_RTL8197F | ODM_RTL8197G|ODM_RTL8723F) + ODM_RTL8197F | ODM_RTL8197G | ODM_RTL8723F |\ + ODM_RTL8735B | ODM_RTL8730A) #define ODM_ANTDIV_5G_SUPPORT_IC (ODM_RTL8821 | ODM_RTL8881A | ODM_RTL8812 |\ - ODM_RTL8821C | ODM_RTL8822B | ODM_RTL8195B|ODM_RTL8723F) + ODM_RTL8821C | ODM_RTL8822B | ODM_RTL8195B |\ + ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A) #define ODM_ANTDIV_SUPPORT_IC (ODM_ANTDIV_2G_SUPPORT_IC | ODM_ANTDIV_5G_SUPPORT_IC) diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_api.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_api.c index 349f35744..b87728adf 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_api.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_api.c @@ -61,6 +61,18 @@ void phydm_reset_bb_hw_cnt(void *dm_void) odm_set_bb_reg(dm, R_0x2a44, BIT(21), 1); } #endif + #if (RTL8735B_SUPPORT) + if (dm->support_ic_type & ODM_RTL8735B) { + odm_set_bb_reg(dm, R_0x2a44, BIT(21), 0); + odm_set_bb_reg(dm, R_0x2a44, BIT(21), 1); + } + #endif + #if (RTL8730A_SUPPORT) + if (dm->support_ic_type & ODM_RTL8730A) { + odm_set_bb_reg(dm, R_0x2a44, BIT(21), 0); + odm_set_bb_reg(dm, R_0x2a44, BIT(21), 1); + } + #endif odm_set_bb_reg(dm, R_0x1eb4, BIT(25), 1); odm_set_bb_reg(dm, R_0x1eb4, BIT(25), 0); } else if (dm->support_ic_type & ODM_IC_11AC_SERIES) { @@ -144,8 +156,13 @@ void phydm_trx_antenna_setting_init(void *dm_void, u8 num_rf_path) /*PHYDM_DBG(dm, ODM_COMP_INIT, "path_bitmap=0x%x\n", path_bitmap);*/ - dm->tx_ant_status = path_bitmap; - dm->rx_ant_status = path_bitmap; + if (!(dm->support_ic_type & ODM_IC_JGR3_SERIES)) { + dm->tx_ant_status = path_bitmap; + dm->rx_ant_status = path_bitmap; + } else if (dm->support_ic_type & ODM_IC_JGR3_1SS) { + dm->tx_ant_status = path_bitmap; + dm->rx_ant_status = path_bitmap; + } if (num_rf_path == PDM_1SS) return; @@ -359,7 +376,7 @@ void phydm_config_trx_path_v2(void *dm_void, char input[][16], u32 *_used, { #if (RTL8822B_SUPPORT || RTL8197F_SUPPORT || RTL8192F_SUPPORT ||\ RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8197G_SUPPORT ||\ - RTL8812F_SUPPORT || RTL8198F_SUPPORT) + RTL8812F_SUPPORT || RTL8198F_SUPPORT || RTL8822E_SUPPORT) struct dm_struct *dm = (struct dm_struct *)dm_void; u32 used = *_used; u32 out_len = *_out_len; @@ -372,7 +389,7 @@ void phydm_config_trx_path_v2(void *dm_void, char input[][16], u32 *_used, if (!(dm->support_ic_type & (ODM_RTL8822B | ODM_RTL8197F | ODM_RTL8192F | ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8812F | ODM_RTL8197G | ODM_RTL8198F | - ODM_RTL8814C))) + ODM_RTL8814C | ODM_RTL8822E))) return; for (i = 0; i < 5; i++) { @@ -390,7 +407,7 @@ void phydm_config_trx_path_v2(void *dm_void, char input[][16], u32 *_used, if ((strcmp(input[1], help) == 0)) { if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822B | - ODM_RTL8192F)) { + ODM_RTL8192F | ODM_RTL8822E)) { PDM_SNPF(out_len, used, output + used, out_len - used, "{en} {tx_path} {rx_path} {ff:auto, else:1ss_tx_path}\n" ); @@ -504,11 +521,12 @@ void phydm_config_trx_path(void *dm_void, char input[][16], u32 *_used, } else if (dm->support_ic_type & (ODM_RTL8822B | ODM_RTL8197F | ODM_RTL8192F | ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G | ODM_RTL8814B | ODM_RTL8198F | - ODM_RTL8814C)) { + ODM_RTL8814C | ODM_RTL8822E)) { #if (RTL8822B_SUPPORT || RTL8197F_SUPPORT ||\ RTL8192F_SUPPORT || RTL8822C_SUPPORT ||\ RTL8814B_SUPPORT || RTL8812F_SUPPORT ||\ - RTL8197G_SUPPORT || RTL8198F_SUPPORT) + RTL8197G_SUPPORT || RTL8198F_SUPPORT ||\ + RTL8822E_SUPPORT) phydm_config_trx_path_v2(dm, input, _used, output, _out_len); #endif } @@ -527,9 +545,10 @@ void phydm_tx_2path(void *dm_void) return; #if (RTL8822B_SUPPORT || RTL8192F_SUPPORT || RTL8197F_SUPPORT ||\ - RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8197G_SUPPORT) + RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8197G_SUPPORT ||\ + RTL8822E_SUPPORT) if (dm->support_ic_type & (ODM_RTL8822B | ODM_RTL8197F | ODM_RTL8192F | - ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G)) + ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G | ODM_RTL8822E)) phydm_api_trx_mode(dm, BB_PATH_AB, rx_path, BB_PATH_AB); #endif @@ -616,7 +635,7 @@ u8 phydm_stop_ic_trx(void *dm_void, u8 set_type) if (set_type == PHYDM_SET) { /*[Stop TRX]---------------------------------------------------------*/ if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - #if (RTL8723F_SUPPORT) + #if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) /*Judy 2020-0515*/ /*set debug port to 0x0*/ if (!phydm_set_bb_dbg_port(dm, DBGPORT_PRI_3, 0x0)) @@ -727,7 +746,7 @@ void phydm_dis_cck_trx(void *dm_void, u8 set_type) if (set_type == PHYDM_SET) { if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - if(dm->support_ic_type & ODM_RTL8723F) { + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { api->ccktx_path = 1; /* @disable CCK CCA */ odm_set_bb_reg(dm, R_0x2a24, BIT(13), 0x1); @@ -758,7 +777,7 @@ void phydm_dis_cck_trx(void *dm_void, u8 set_type) } } else if (set_type == PHYDM_REVERT) { if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - if(dm->support_ic_type & ODM_RTL8723F) { + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { /* @enable CCK CCA */ odm_set_bb_reg(dm, R_0x2a24, BIT(13), 0x0); /* @enable CCK Tx */ @@ -794,8 +813,10 @@ void phydm_bw_fixed_enable(void *dm_void, u8 enable) if (dm->support_ic_type & (ODM_RTL8821C | ODM_RTL8822B | ODM_RTL8195B)) odm_set_bb_reg(dm, R_0x840, BIT(4), val); - else if (dm->support_ic_type & ODM_RTL8822C) + else if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E | ODM_RTL8197G)) odm_set_bb_reg(dm, R_0x878, BIT(28), val); + else if (dm->support_ic_type & ODM_RTL8192F) + odm_set_bb_reg(dm, R_0xc00, 0xc, val); #endif } @@ -815,10 +836,14 @@ void phydm_bw_fixed_setting(void *dm_void) reg = R_0x840; reg_mask = 0xf; reg_value = api->pri_ch_idx; - } else if (dm->support_ic_type & ODM_RTL8822C) { + } else if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E | ODM_RTL8197G)) { reg = R_0x878; reg_mask = 0xc0000000; reg_value = 0x0; + } else if (dm->support_ic_type & ODM_RTL8192F) { + reg = R_0xc00; + reg_mask = 0xc; + reg_value = api->pri_ch_idx; } switch (bw) { @@ -903,7 +928,7 @@ void phydm_clean_all_csi_mask(void *dm_void) u8 i = 0, idx_lmt = 0; if (dm->support_ic_type & - (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G)) + (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G | ODM_RTL8822E)) idx_lmt = 127; else /*@for IC supporting 80 + 80*/ idx_lmt = 255; @@ -991,13 +1016,13 @@ void phydm_set_nbi_reg(void *dm_void, u32 tone_idx_tmp, u32 bw) { struct dm_struct *dm = (struct dm_struct *)dm_void; /*tone_idx X 10*/ - u32 nbi_128[NBI_128TONE] = {25, 55, 85, 115, 135, + static const u32 nbi_128[NBI_128TONE] = {25, 55, 85, 115, 135, 155, 185, 205, 225, 245, 265, 285, 305, 335, 355, 375, 395, 415, 435, 455, 485, 505, 525, 555, 585, 615, 635}; /*tone_idx X 10*/ - u32 nbi_256[NBI_256TONE] = {25, 55, 85, 115, 135, + static const u32 nbi_256[NBI_256TONE] = {25, 55, 85, 115, 135, 155, 175, 195, 225, 245, 265, 285, 305, 325, 345, 365, 385, 405, 425, 445, @@ -1316,11 +1341,8 @@ u32 phydm_rf_psd_jgr3(void *dm_void, u8 path, u32 tone_idx) odm_set_bb_reg(dm, R_0x1b0c, 0xc00, 0x3); odm_set_bb_reg(dm, R_0x1b14, MASKDWORD, 0x0); odm_set_bb_reg(dm, R_0x1b18, MASKDWORD, 0x1); -/*#if (DM_ODM_SUPPORT_TYPE == ODM_AP)*/ odm_set_bb_reg(dm, R_0x1b1c, MASKDWORD, 0x82103D21); -/*#else*/ - /*odm_set_bb_reg(dm, R_0x1b1c, MASKDWORD, 0x821A3D21);*/ -/*#endif*/ + odm_set_bb_reg(dm, R_0x1b1c, 0xe0000, dm->psd_trials_hw_log2); odm_set_bb_reg(dm, R_0x1b28, MASKDWORD, 0x0); odm_set_bb_reg(dm, R_0x1bcc, 0x3f, 0x3f); odm_set_bb_reg(dm, R_0x8a0, 0xf, 0x0); /* AGC off */ @@ -1333,7 +1355,7 @@ u32 phydm_rf_psd_jgr3(void *dm_void, u8 path, u32 tone_idx) odm_set_bb_reg(dm, R_0x1b34, MASKDWORD, 0x1); odm_set_bb_reg(dm, R_0x1b34, MASKDWORD, 0x0); - if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) + if (dm->support_ic_type & ODM_RTL8814B) { for (poll_cnt = 0; poll_cnt < 20; poll_cnt++) { odm_set_bb_reg(dm, R_0x1bd4, 0x3f0000, 0x2b); psd_status_temp = odm_get_bb_reg(dm, R_0x1bfc, @@ -1343,8 +1365,17 @@ u32 phydm_rf_psd_jgr3(void *dm_void, u8 path, u32 tone_idx) else break; } - else + } else if (dm->support_ic_type & ODM_RTL8814C) { + odm_set_bb_reg(dm, R_0x1bd4, 0x3f0000, 0x2b); + for (poll_cnt = 0; poll_cnt < 20; poll_cnt++) { + if (!odm_get_bb_reg(dm, R_0x1bfc, BIT(1))) + ODM_delay_ms(1); + else + break; + } + } else { ODM_delay_us(250); + } /*read RxIQK power*/ odm_set_bb_reg(dm, R_0x1bd4, MASKDWORD, 0x00250001); @@ -1820,7 +1851,8 @@ void phydm_nbi_enable_jgr3(void *dm_void, u32 enable, u8 path) if (dm->support_ic_type & ODM_RTL8814B) { odm_set_bb_reg(dm, R_0x1d3c, BIT(19), val); odm_set_bb_reg(dm, R_0x818, BIT(3), val); - } else if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8812F)) { + } else if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8812F |\ + ODM_RTL8822E)) { odm_set_bb_reg(dm, R_0x818, BIT(3), !val); } odm_set_bb_reg(dm, R_0x818, BIT(11), val); @@ -2071,6 +2103,9 @@ u8 phydm_nbi_setting(void *dm_void, u32 enable, u32 ch, u32 bw, u32 f_intf, else direction = FREQ_NEGATIVE; + PHYDM_DBG(dm, ODM_PHY_CONFIG, "direction %d\n", + direction); + phydm_set_nbi_reg(dm, tone_idx, bw); set_result = PHYDM_SET_SUCCESS; @@ -2399,9 +2434,10 @@ phydm_api_shift_txagc(void *dm_void, u32 pwr_offset, enum rf_path path, u32 r_txagc_cck[4] = {R_0x18a0, R_0x41a0, R_0x52a0, R_0x53a0}; u32 r_new_txagc[1] = {R_0x4308}; - #if (RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8197G_SUPPORT) + #if (RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8197G_SUPPORT ||\ + RTL8822E_SUPPORT) if (dm->support_ic_type & - (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G)) { + (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G | ODM_RTL8822E)) { if (path > RF_PATH_B) { PHYDM_DBG(dm, ODM_PHY_CONFIG, "Unsupported path (%d)\n", path); @@ -2443,6 +2479,12 @@ phydm_api_shift_txagc(void *dm_void, u32 pwr_offset, enum rf_path path, ret &= config_phydm_write_txagc_ref_8197g(dm, (u8)txagc_ofdm, path, PDM_OFDM); #endif + #if (RTL8822E_SUPPORT) + ret = config_phydm_write_txagc_ref_8822e(dm, (u8)txagc_cck, + path, PDM_CCK); + ret &= config_phydm_write_txagc_ref_8822e(dm, (u8)txagc_ofdm, + path, PDM_OFDM); + #endif PHYDM_DBG(dm, ODM_PHY_CONFIG, "%s: path-%d txagc_cck_ref=%x txagc_ofdm_ref=0x%x\n", __func__, path, txagc_cck, txagc_ofdm); @@ -2530,6 +2572,80 @@ phydm_api_shift_txagc(void *dm_void, u32 pwr_offset, enum rf_path path, } #endif + #if (RTL8735B_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8735B)) { + if (path > RF_PATH_A) { + PHYDM_DBG(dm, ODM_PHY_CONFIG, "Unsupported path (%d)\n", + path); + return false; + } + txagc_cck = (u8)odm_get_bb_reg(dm, r_new_txagc[path], + 0x0000007f); + txagc_ofdm = (u8)odm_get_bb_reg(dm, r_new_txagc[path], + 0x00007f00); + if (is_positive) { + if (((txagc_cck + pwr_offset) > 127) || + ((txagc_ofdm + pwr_offset) > 127)) + return false; + + txagc_cck += pwr_offset; + txagc_ofdm += pwr_offset; + } else { + if (pwr_offset > txagc_cck || pwr_offset > txagc_ofdm) + return false; + + txagc_cck -= pwr_offset; + txagc_ofdm -= pwr_offset; + } + #if (RTL8735B_SUPPORT) + ret = config_phydm_write_txagc_ref_8735b(dm, (u8)txagc_cck, + path, PDM_CCK); + ret &= config_phydm_write_txagc_ref_8735b(dm, (u8)txagc_ofdm, + path, PDM_OFDM); + #endif + PHYDM_DBG(dm, ODM_PHY_CONFIG, + "%s: path-%d txagc_cck_ref=%x txagc_ofdm_ref=0x%x\n", + __func__, path, txagc_cck, txagc_ofdm); + } + #endif + + #if (RTL8730A_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8730A)) { + if (path > RF_PATH_A) { + PHYDM_DBG(dm, ODM_PHY_CONFIG, "Unsupported path (%d)\n", + path); + return false; + } + txagc_cck = (u8)odm_get_bb_reg(dm, r_new_txagc[path], + 0x0000007f); + txagc_ofdm = (u8)odm_get_bb_reg(dm, r_new_txagc[path], + 0x00007f00); + if (is_positive) { + if (((txagc_cck + pwr_offset) > 127) || + ((txagc_ofdm + pwr_offset) > 127)) + return false; + + txagc_cck += pwr_offset; + txagc_ofdm += pwr_offset; + } else { + if (pwr_offset > txagc_cck || pwr_offset > txagc_ofdm) + return false; + + txagc_cck -= pwr_offset; + txagc_ofdm -= pwr_offset; + } + #if (RTL8730A_SUPPORT) + ret = config_phydm_write_txagc_ref_8730a(dm, (u8)txagc_cck, + path, PDM_CCK); + ret &= config_phydm_write_txagc_ref_8730a(dm, (u8)txagc_ofdm, + path, PDM_OFDM); + #endif + PHYDM_DBG(dm, ODM_PHY_CONFIG, + "%s: path-%d txagc_cck_ref=%x txagc_ofdm_ref=0x%x\n", + __func__, path, txagc_cck, txagc_ofdm); + } + #endif + return ret; } @@ -2540,7 +2656,8 @@ phydm_api_set_txagc(void *dm_void, u32 pwr_idx, enum rf_path path, struct dm_struct *dm = (struct dm_struct *)dm_void; boolean ret = false; #if (RTL8198F_SUPPORT || RTL8822C_SUPPORT || RTL8812F_SUPPORT ||\ - RTL8814B_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT) + RTL8814B_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8822E_SUPPORT) u8 base = 0; u8 txagc_tmp = 0; s8 pw_by_rate_tmp = 0; @@ -2758,7 +2875,78 @@ phydm_api_set_txagc(void *dm_void, u32 pwr_idx, enum rf_path path, __func__, path, rate, base, pw_by_rate_new); } #endif +#if (RTL8735B_SUPPORT) + if (dm->support_ic_type & ODM_RTL8735B) { + if (rate < 0x4) + txagc_tmp = config_phydm_read_txagc_8735b(dm, path, + rate, + PDM_CCK); + else + txagc_tmp = config_phydm_read_txagc_8735b(dm, path, + rate, + PDM_OFDM); + pw_by_rate_tmp = config_phydm_read_txagc_diff_8735b(dm, rate); + base = txagc_tmp - pw_by_rate_tmp; + base = base & 0x7f; + if (DIFF_2((pwr_idx & 0x7f), base) > 63 || pwr_idx > 127) + return false; + + pw_by_rate_new = (s8)(pwr_idx - base); + ret = phydm_write_txagc_1byte_8735b(dm, pw_by_rate_new, rate); + PHYDM_DBG(dm, ODM_PHY_CONFIG, + "%s: path-%d rate_idx=%x base=0x%x new_diff=0x%x\n", + __func__, path, rate, base, pw_by_rate_new); + } +#endif +#if (RTL8730A_SUPPORT) + if (dm->support_ic_type & ODM_RTL8730A) { + if (rate < 0x4) + txagc_tmp = config_phydm_read_txagc_8730a(dm, path, + rate, + PDM_CCK); + else + txagc_tmp = config_phydm_read_txagc_8730a(dm, path, + rate, + PDM_OFDM); + + pw_by_rate_tmp = config_phydm_read_txagc_diff_8730a(dm, rate); + base = txagc_tmp - pw_by_rate_tmp; + base = base & 0x7f; + if (DIFF_2((pwr_idx & 0x7f), base) > 63 || pwr_idx > 127) + return false; + + pw_by_rate_new = (s8)(pwr_idx - base); + ret = phydm_write_txagc_1byte_8730a(dm, pw_by_rate_new, rate); + PHYDM_DBG(dm, ODM_PHY_CONFIG, + "%s: path-%d rate_idx=%x base=0x%x new_diff=0x%x\n", + __func__, path, rate, base, pw_by_rate_new); + } +#endif +#if (RTL8822E_SUPPORT) + if (dm->support_ic_type & ODM_RTL8822E) { + if (rate < 0x4) + txagc_tmp = config_phydm_read_txagc_8822e(dm, path, + rate, + PDM_CCK); + else + txagc_tmp = config_phydm_read_txagc_8822e(dm, path, + rate, + PDM_OFDM); + + pw_by_rate_tmp = config_phydm_read_txagc_diff_8822e(dm, rate); + base = txagc_tmp - pw_by_rate_tmp; + base = base & 0x7f; + if (DIFF_2((pwr_idx & 0x7f), base) > 63 || pwr_idx > 127) + return false; + + pw_by_rate_new = (s8)(pwr_idx - base); + ret = phydm_write_txagc_1byte_8822e(dm, pw_by_rate_new, rate); + PHYDM_DBG(dm, ODM_PHY_CONFIG, + "%s: path-%d rate_idx=%x base=0x%x new_diff=0x%x\n", + __func__, path, rate, base, pw_by_rate_new); + } +#endif #if (RTL8197F_SUPPORT) if (dm->support_ic_type & ODM_RTL8197F) ret = config_phydm_write_txagc_8197f(dm, pwr_idx, path, rate); @@ -2847,6 +3035,30 @@ u8 phydm_api_get_txagc(void *dm_void, enum rf_path path, u8 hw_rate) } #endif +#if (RTL8735B_SUPPORT) + if (dm->support_ic_type & ODM_RTL8735B) { + if (hw_rate < 0x4) { + ret = config_phydm_read_txagc_8735b(dm, path, hw_rate, + PDM_CCK); + } else { + ret = config_phydm_read_txagc_8735b(dm, path, hw_rate, + PDM_OFDM); + } + } +#endif + +#if (RTL8730A_SUPPORT) + if (dm->support_ic_type & ODM_RTL8730A) { + if (hw_rate < 0x4) { + ret = config_phydm_read_txagc_8730a(dm, path, hw_rate, + PDM_CCK); + } else { + ret = config_phydm_read_txagc_8730a(dm, path, hw_rate, + PDM_OFDM); + } + } +#endif + #if (RTL8814B_SUPPORT) if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) { if (hw_rate < 0x4) { @@ -2885,6 +3097,18 @@ u8 phydm_api_get_txagc(void *dm_void, enum rf_path path, u8 hw_rate) } #endif +#if (RTL8822E_SUPPORT) + if (dm->support_ic_type & ODM_RTL8822E) { + if (hw_rate < 0x4) { + ret = config_phydm_read_txagc_8822e(dm, path, hw_rate, + PDM_CCK); + } else { + ret = config_phydm_read_txagc_8822e(dm, path, hw_rate, + PDM_OFDM); + } + } +#endif + #if (RTL8721D_SUPPORT) if (dm->support_ic_type & ODM_RTL8721D) ret = config_phydm_read_txagc_8721d(dm, path, hw_rate); @@ -2896,7 +3120,7 @@ u8 phydm_api_get_txagc(void *dm_void, enum rf_path path, u8 hw_rate) return ret; } -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) void phydm_shift_rxagc_table(void *dm_void, boolean is_pos_shift, u8 sft) { struct dm_struct *dm = (struct dm_struct *)dm_void; @@ -2913,7 +3137,7 @@ void phydm_shift_rxagc_table(void *dm_void, boolean is_pos_shift, u8 sft) max_rf_gain = dm->agc_rf_gain_ori[i][0]; min_rf_gain = dm->agc_rf_gain_ori[i][63]; - if (dm->support_ic_type & ODM_RTL8822C) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) dm->l_bnd_detect[i] = false; for (j = 0; j < 64; j++) { @@ -2940,8 +3164,14 @@ void phydm_shift_rxagc_table(void *dm_void, boolean is_pos_shift, u8 sft) } } + #if (RTL8822C_SUPPORT) if (dm->support_ic_type & ODM_RTL8822C) odm_set_bb_reg(dm, R_0x828, 0xf8, L_BND_DEFAULT_8822C); + #endif + #if (RTL8822E_SUPPORT) + if (dm->support_ic_type & ODM_RTL8822E) + odm_set_bb_reg(dm, R_0x828, 0xf8, L_BND_DEFAULT_8822E); + #endif } #endif @@ -3001,6 +3231,18 @@ phydm_api_switch_bw_channel(void *dm_void, u8 ch, u8 pri_ch, break; #endif +#if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + ret = config_phydm_switch_channel_bw_8735b(dm, ch, pri_ch, bw); + break; +#endif + +#if (RTL8730A_SUPPORT) + case ODM_RTL8730A: + ret = config_phydm_switch_channel_bw_8730a(dm, ch, pri_ch, bw); + break; +#endif + #if (RTL8814B_SUPPORT) case ODM_RTL8814B: case ODM_RTL8814C: @@ -3031,6 +3273,12 @@ phydm_api_switch_bw_channel(void *dm_void, u8 ch, u8 pri_ch, break; #endif +#if (RTL8822E_SUPPORT) + case ODM_RTL8822E: + ret = config_phydm_switch_channel_bw_8822e(dm, ch, pri_ch, bw); + break; +#endif + default: break; } @@ -3048,6 +3296,8 @@ phydm_api_trx_mode(void *dm_void, enum bb_path tx_path, enum bb_path rx_path, if (tx_path_ctrl == BB_PATH_AB) is_2tx = true; + PHYDM_DBG(dm, ODM_PHY_CONFIG, "is_2tx: %d\n", is_2tx); + switch (dm->support_ic_type) { #if (RTL8822B_SUPPORT) case ODM_RTL8822B: @@ -3096,6 +3346,20 @@ phydm_api_trx_mode(void *dm_void, enum bb_path tx_path, enum bb_path rx_path, break; #endif + #if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + ret = config_phydm_trx_mode_8735b(dm, tx_path, rx_path, + tx_path_ctrl); + break; + #endif + + #if (RTL8730A_SUPPORT) + case ODM_RTL8730A: + ret = config_phydm_trx_mode_8730a(dm, tx_path, rx_path, + tx_path_ctrl); + break; + #endif + #if (RTL8812F_SUPPORT) case ODM_RTL8812F: ret = config_phydm_trx_mode_8812f(dm, tx_path, rx_path, is_2tx); @@ -3119,6 +3383,13 @@ phydm_api_trx_mode(void *dm_void, enum bb_path tx_path, enum bb_path rx_path, ret = config_phydm_trx_mode_8710c(dm, tx_path, rx_path, is_2tx); break; #endif + + #if (RTL8822E_SUPPORT) + case ODM_RTL8822E: + ret = config_phydm_trx_mode_8822e(dm, tx_path, rx_path, + tx_path_ctrl); + break; + #endif } return ret; } diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_api.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_api.h index a27b72514..a2d6c6ddf 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_api.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_api.h @@ -196,7 +196,7 @@ phydm_api_set_txagc(void *dm_void, u32 power_index, enum rf_path path, u8 phydm_api_get_txagc(void *dm_void, enum rf_path path, u8 hw_rate); -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) void phydm_shift_rxagc_table(void *dm_void, boolean shift_up, u8 shift); #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_pd.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_pd.c index 15a4b9319..482dca693 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_pd.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_pd.c @@ -810,6 +810,10 @@ void phydm_read_cckpd_para_type4(void *dm_void) reg1 = odm_get_bb_reg(dm, R_0x1acc, MASKDWORD); reg2 = odm_get_bb_reg(dm, R_0x1ad0, MASKDWORD); reg3 = odm_get_bb_reg(dm, R_0x1ad4, MASKDWORD); + + PHYDM_DBG(dm, DBG_CCKPD, "reg={0x%x,0x%x,0x%x,0x%x}\n", + reg0, reg1, reg2, reg3); + curr_cck_pd_t[0][0][0] = (u8)(reg0 & 0x000000ff); curr_cck_pd_t[1][0][0] = (u8)(reg1 & 0x000000ff); curr_cck_pd_t[0][0][1] = (u8)(reg2 & 0x0000001f); @@ -989,6 +993,9 @@ void phydm_cck_pd_init_type4(void *dm_void) reg2 = odm_get_bb_reg(dm, R_0x1ad0, MASKDWORD); reg3 = odm_get_bb_reg(dm, R_0x1ad4, MASKDWORD); + PHYDM_DBG(dm, DBG_CCKPD, "reg={0x%x,0x%x,0x%x,0x%x}\n", + reg0, reg1, reg2, reg3); + for (i = 0 ; i < CCK_PD_LV_MAX ; i++) { pw_step = i * 2; cs_step = i * 2; @@ -1004,8 +1011,8 @@ void phydm_cck_pd_init_type4(void *dm_void) } #endif - #if (RTL8822C_SUPPORT) - if (dm->support_ic_type & ODM_RTL8822C) { + #if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) { if (i == CCK_PD_LV_1) { pw_step = 9; /*IGI-19.2:0x11=d'17*/ cs_step = 0; @@ -1493,6 +1500,40 @@ void phydm_cck_pd_init_type5(void *dm_void) } } #endif + #if (RTL8735B_SUPPORT) + if (dm->support_ic_type & ODM_RTL8735B) { + if (i == CCK_PD_LV_1) { + pw_step = 9; /*IGI-19.2:0x11=d'17*/ + cs_step = 0; + } else if (i == CCK_PD_LV_2) { + pw_step = 12; /*IGI-15.5:0x14=d'20*/ + cs_step = 1; + } else if (i == CCK_PD_LV_3) { + pw_step = 14; /*IGI-14:0x16=d'22*/ + cs_step = 1; + } else if (i == CCK_PD_LV_4) { + pw_step = 17; /*IGI-12:0x19=d'25*/ + cs_step = 1; + } + } + #endif + #if (RTL8730A_SUPPORT) + if (dm->support_ic_type & ODM_RTL8730A) { + if (i == CCK_PD_LV_1) { + pw_step = 9; /*IGI-19.2:0x11=d'17*/ + cs_step = 0; + } else if (i == CCK_PD_LV_2) { + pw_step = 12; /*IGI-15.5:0x14=d'20*/ + cs_step = 1; + } else if (i == CCK_PD_LV_3) { + pw_step = 14; /*IGI-14:0x16=d'22*/ + cs_step = 1; + } else if (i == CCK_PD_LV_4) { + pw_step = 17; /*IGI-12:0x19=d'25*/ + cs_step = 1; + } + } + #endif val = (u8)(reg0 & 0x0000001F) + pw_step; PHYDM_DBG(dm, DBG_CCKPD, "lvl %d val = %x\n\n", i, val); cckpd_t->cck_pd_table_jgr3[0][0][0][i] = val; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_pd.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_pd.h index 2a1d3eab5..368ffa194 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_pd.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_pd.h @@ -52,7 +52,7 @@ /*@extend for different bw & path*/ #define CCK_PD_IC_TYPE4 ODM_IC_JGR3_SERIES /*@extend for different bw & path*/ -#define CCK_PD_IC_TYPE5 (ODM_RTL8723F) /*@extend for different CR*/ +#define CCK_PD_IC_TYPE5 (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A) /*@extend for different CR*/ /*@Compile time flag of CCK_PD HW type*/ #if (RTL8188E_SUPPORT || RTL8812A_SUPPORT || RTL8821A_SUPPORT ||\ @@ -74,7 +74,7 @@ #ifdef PHYDM_IC_JGR3_SERIES_SUPPORT #define PHYDM_COMPILE_CCKPD_TYPE4 /*@extend for different bw & path*/ #endif -#if (RTL8723F_SUPPORT) +#if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) #define PHYDM_COMPILE_CCKPD_TYPE5 /*@extend for different & path*/ #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_rx_pathdiv.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_rx_pathdiv.c index 3106f1939..f768f108f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_rx_pathdiv.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cck_rx_pathdiv.c @@ -127,7 +127,7 @@ void phydm_cck_rx_pathdiv_dbg(void *dm_void, char input[][16], u32 *_used, u32 out_len = *_out_len; u8 i = 0; - if (!(dm->support_ic_type & ODM_RTL8822C)) + if (!(dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E))) return; for (i = 0; i < 3; i++) { diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_ccx.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_ccx.c index dc88a20e9..07373f973 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_ccx.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_ccx.c @@ -290,6 +290,13 @@ void phydm_nhm_get_utility(void *dm_void) NHM_RPT_MAX); ccx->nhm_env_ratio = phydm_ccx_get_rpt_ratio(dm, nhm_env, NHM_RPT_MAX); + if ((ccx->nhm_include_txon == NHM_EXCLUDE_TXON) && + (ccx->nhm_include_cca == NHM_EXCLUDE_CCA)) + ccx->nhm_idle_ratio = phydm_ccx_get_rpt_ratio(dm, + ccx->nhm_duration, + ccx->nhm_period); + else + ccx->nhm_idle_ratio = ENV_MNTR_FAIL; ccx->nhm_level_valid = phydm_ccx_get_rpt_ratio(dm, nhm_rpt_non_11, NHM_RPT_MAX); ccx->nhm_level = phydm_nhm_cal_wgt_avg(dm, 0, NHM_RPT_NUM - 2, @@ -298,8 +305,9 @@ void phydm_nhm_get_utility(void *dm_void) ccx->nhm_rpt_sum); } else { PHYDM_DBG(dm, DBG_ENV_MNTR, "[warning] nhm_rpt_sum invalid\n"); - ccx->nhm_ratio = 0; - ccx->nhm_env_ratio = 0; + ccx->nhm_ratio = ENV_MNTR_FAIL; + ccx->nhm_env_ratio = ENV_MNTR_FAIL; + ccx->nhm_idle_ratio = ENV_MNTR_FAIL; } PHYDM_DBG(dm, DBG_ENV_MNTR, @@ -652,11 +660,16 @@ void phydm_nhm_set(void *dm_void, enum nhm_option_txon_all include_tx, } /*Set NHM period*/ + if (*dm->band_width == CHANNEL_WIDTH_10) + period >>= 1; + else if (*dm->band_width == CHANNEL_WIDTH_5) + period >>= 2; + if (period != ccx->nhm_period) { pdm_set_reg(dm, reg2, MASKHWORD, period); PHYDM_DBG(dm, DBG_ENV_MNTR, - "Update NHM period ((%d)) -> ((%d))\n", - ccx->nhm_period, period); + "Update NHM period ((%d)) -> ((%d)), bw = %d\n", + ccx->nhm_period, period, *dm->band_width); ccx->nhm_period = period; } @@ -818,7 +831,7 @@ phydm_nhm_dym_pw_th_en(void *dm_void) struct ccx_info *ccx = &dm->dm_ccx_info; struct phydm_iot_center *iot_table = &dm->iot_table; - if (!(dm->support_ic_type & ODM_RTL8822C)) + if (!(dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E))) return false; if (ccx->dym_pwth_manual_ctrl) @@ -960,7 +973,7 @@ void phydm_nhm_init(void *dm_void) ccx->nhm_rpt_stamp = 0; #ifdef NHM_DYM_PW_TH_SUPPORT - if (dm->support_ic_type & ODM_RTL8822C) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) { ccx->nhm_dym_pw_th_en = false; ccx->pw_th_rf20_ori = (u8)odm_get_bb_reg(dm, R_0x82c, 0x3f); ccx->pw_th_rf20_cur = ccx->pw_th_rf20_ori; @@ -994,7 +1007,7 @@ void phydm_nhm_dbg(void *dm_void, char input[][16], u32 *_used, char *output, PDM_SNPF(out_len, used, output + used, out_len - used, "NHM Adv-Trigger: {2} {Include TXON} {Include CCA}\n{0:Cnt_all, 1:Cnt valid} {App:5 for dbg} {LV:1~4} {0~262ms}, 1dB mode :{en} {t[0](RSSI)}\n"); #ifdef NHM_DYM_PW_TH_SUPPORT - if (dm->support_ic_type & ODM_RTL8822C) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) { PDM_SNPF(out_len, used, output + used, out_len - used, "NHM dym_pw_th: {3} {0:off}\n"); PDM_SNPF(out_len, used, output + used, out_len - used, @@ -1029,8 +1042,9 @@ void phydm_nhm_dbg(void *dm_void, char input[][16], u32 *_used, char *output, PDM_SNPF(out_len, used, output + used, out_len - used, "NHM_pwr: nhm_pwr (RSSI) = %d\n", ccx->nhm_pwr); PDM_SNPF(out_len, used, output + used, out_len - used, - "ratio: nhm_ratio=%d, nhm_env_ratio=%d\n", - ccx->nhm_ratio, ccx->nhm_env_ratio); + "ratio: nhm_ratio=%d, nhm_env_ratio=%d, nhm_idle_ratio=%d\n", + ccx->nhm_ratio, ccx->nhm_env_ratio, + ccx->nhm_idle_ratio); } else { PDM_SNPF(out_len, used, output + used, out_len - used, "Get NHM_rpt Fail\n"); @@ -1038,7 +1052,7 @@ void phydm_nhm_dbg(void *dm_void, char input[][16], u32 *_used, char *output, ccx->nhm_manual_ctrl = 0; #ifdef NHM_DYM_PW_TH_SUPPORT } else if (var1[0] == 3) { /*NMH dym_pw_th*/ - if (dm->support_ic_type & ODM_RTL8822C) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E)) { for (i = 1; i < 7; i++) { PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &var1[i]); @@ -1225,6 +1239,11 @@ void phydm_clm_setting(void *dm_void, u16 clm_period /*@4us sample 1 time*/) struct dm_struct *dm = (struct dm_struct *)dm_void; struct ccx_info *ccx = &dm->dm_ccx_info; + if (*dm->band_width == CHANNEL_WIDTH_10) + clm_period >>= 1; + else if (*dm->band_width == CHANNEL_WIDTH_5) + clm_period >>= 2; + if (ccx->clm_period != clm_period) { if (dm->support_ic_type & ODM_IC_11AC_SERIES) odm_set_bb_reg(dm, R_0x990, MASKLWORD, clm_period); @@ -1237,12 +1256,12 @@ void phydm_clm_setting(void *dm_void, u16 clm_period /*@4us sample 1 time*/) ccx->clm_period = clm_period; PHYDM_DBG(dm, DBG_ENV_MNTR, - "Update CLM period ((%d)) -> ((%d))\n", - ccx->clm_period, clm_period); + "Update CLM period ((%d)) -> ((%d)), bw = %d\n", + ccx->clm_period, clm_period, *dm->band_width); } - PHYDM_DBG(dm, DBG_ENV_MNTR, "Set CLM period=%d * 4us\n", - ccx->clm_period); + PHYDM_DBG(dm, DBG_ENV_MNTR, "Set CLM period = %d, bw = %d\n", + ccx->clm_period, *dm->band_width); } void phydm_clm_trigger(void *dm_void) @@ -1469,6 +1488,12 @@ phydm_clm_mntr_result(void *dm_void) if (phydm_clm_get_result(dm)) { PHYDM_DBG(dm, DBG_ENV_MNTR, "Get CLM_rpt success\n"); phydm_clm_get_utility(dm); + if ((ccx->ccx_watchdog_result & NHM_SUCCESS) && + ((ccx->nhm_idle_ratio != ENV_MNTR_FAIL))) + ccx->nhm_tx_ratio = 100 - ccx->clm_ratio - + ccx->nhm_idle_ratio; + else + ccx->nhm_tx_ratio = ENV_MNTR_FAIL; clm_chk_result = true; } } else { @@ -1484,6 +1509,7 @@ phydm_clm_mntr_result(void *dm_void) "clm_fw_result_acc=%d, clm_fw_result_cnt=%d\n", ccx->clm_fw_result_acc, ccx->clm_fw_result_cnt); + ccx->nhm_tx_ratio = ENV_MNTR_FAIL; ccx->clm_fw_result_acc = 0; ccx->clm_fw_result_cnt = 0; } @@ -1665,6 +1691,7 @@ u8 phydm_env_mntr_result(void *dm_void, struct env_mntr_rpt *rpt) phydm_nhm_get_utility(dm); rpt->nhm_ratio = ccx->nhm_ratio; rpt->nhm_env_ratio = ccx->nhm_env_ratio; + rpt->nhm_idle_ratio = ccx->nhm_idle_ratio; rpt->nhm_noise_pwr = ccx->nhm_level; rpt->nhm_pwr = ccx->nhm_pwr; env_mntr_rpt |= NHM_SUCCESS; @@ -1674,6 +1701,7 @@ u8 phydm_env_mntr_result(void *dm_void, struct env_mntr_rpt *rpt) } else { rpt->nhm_ratio = ENV_MNTR_FAIL; rpt->nhm_env_ratio = ENV_MNTR_FAIL; + rpt->nhm_idle_ratio = ENV_MNTR_FAIL; } /*@Get CLM result*/ @@ -1683,10 +1711,16 @@ u8 phydm_env_mntr_result(void *dm_void, struct env_mntr_rpt *rpt) phydm_clm_get_utility(dm); env_mntr_rpt |= CLM_SUCCESS; rpt->clm_ratio = ccx->clm_ratio; + if ((env_mntr_rpt & NHM_SUCCESS) && + (rpt->nhm_idle_ratio != ENV_MNTR_FAIL)) + rpt->nhm_tx_ratio = 100 - rpt->clm_ratio - + rpt->nhm_idle_ratio; + else + rpt->nhm_tx_ratio = ENV_MNTR_FAIL; } else { rpt->clm_ratio = ENV_MNTR_FAIL; + rpt->nhm_tx_ratio = ENV_MNTR_FAIL; } - } else { if (ccx->clm_fw_result_cnt != 0) { val_tmp = ccx->clm_fw_result_acc @@ -1701,6 +1735,7 @@ u8 phydm_env_mntr_result(void *dm_void, struct env_mntr_rpt *rpt) "clm_fw_result_acc=%d, clm_fw_result_cnt=%d\n", ccx->clm_fw_result_acc, ccx->clm_fw_result_cnt); + rpt->nhm_tx_ratio = ENV_MNTR_FAIL; ccx->clm_fw_result_acc = 0; ccx->clm_fw_result_cnt = 0; env_mntr_rpt |= CLM_SUCCESS; @@ -1747,7 +1782,9 @@ void phydm_env_mntr_dbg(void *dm_void, char input[][16], u32 *_used, "Set Result=%d\n nhm_ratio=%d nhm_env_ratio=%d clm_ratio=%d\n nhm_rpt_stamp=%d, clm_rpt_stamp=%d,\n", set_result, rpt.nhm_ratio, rpt.nhm_env_ratio, rpt.clm_ratio, rpt.nhm_rpt_stamp, rpt.clm_rpt_stamp); - + PDM_SNPF(out_len, used, output + used, out_len - used, + "nhm_idle_ratio=%d, nhm_tx_ratio=%d\n", + rpt.nhm_idle_ratio, rpt.nhm_tx_ratio); for (i = 0; i <= 11; i++) { PDM_SNPF(out_len, used, output + used, out_len - used, "nhm_rpt[%d] = %d (%d percent)\n", i, @@ -2218,7 +2255,7 @@ void phydm_fahm_set(void *dm_void, u8 numer_opt, u8 denom_opt, /*[PHYDM-400]*/ /*Counting B mode pkt for new B mode IP or fahm_opt is non-FA*/ - if ((dm->support_ic_type & ODM_RTL8723F) || + if ((dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) || (((numer_opt | denom_opt) & FAHM_INCLU_FA) == 0)) ccx->fahm_inclu_cck = true; else @@ -2230,6 +2267,11 @@ void phydm_fahm_set(void *dm_void, u8 numer_opt, u8 denom_opt, } /*Set FAHM period*/ + if (*dm->band_width == CHANNEL_WIDTH_10) + period >>= 1; + else if (*dm->band_width == CHANNEL_WIDTH_5) + period >>= 2; + if (period != ccx->fahm_period) { switch (dm->ic_ip_series) { case PHYDM_IC_AC: @@ -2245,8 +2287,8 @@ void phydm_fahm_set(void *dm_void, u8 numer_opt, u8 denom_opt, } PHYDM_DBG(dm, DBG_ENV_MNTR, - "Update FAHM period ((%d)) -> ((%d))\n", - ccx->fahm_period, period); + "Update FAHM period ((%d)) -> ((%d)), bw = %d\n", + ccx->fahm_period, period, *dm->band_width); ccx->fahm_period = period; } @@ -2463,7 +2505,7 @@ void phydm_fahm_dbg(void *dm_void, char input[][16], u32 *_used, char *output, PDM_SNPF(out_len, used, output + used, out_len - used, "===>The following fahm report does not count CCK pkt\n"); - + for (i = 0; i < FAHM_RPT_NUM; i++) { result_tmp = ccx->fahm_result[i]; PDM_SNPF(out_len, used, output + used, @@ -2707,7 +2749,7 @@ void phydm_ifs_clm_set_th_reg(void *dm_void) struct dm_struct *dm = (struct dm_struct *)dm_void; struct ccx_info *ccx = &dm->dm_ccx_info; u8 i = 0; - + PHYDM_DBG(dm, DBG_ENV_MNTR, "[%s]===>\n", __func__); /*Set IFS period TH*/ @@ -2799,11 +2841,11 @@ void phydm_ifs_clm_set(void *dm_void, enum ifs_clm_application ifs_clm_app, ctrl_unit); /*Set Unit*/ - if (ctrl_unit != ccx->ifs_clm_ctrl_unit) { + if (ctrl_unit != ccx->ifs_clm_ctrl_unit) { odm_set_bb_reg(dm, R_0x1ee4, 0xc0000000, ctrl_unit); PHYDM_DBG(dm, DBG_ENV_MNTR, - "Update IFS_CLM unit ((%d)) -> ((%d))\n", - ccx->ifs_clm_ctrl_unit, ctrl_unit); + "Update IFS_CLM unit ((%d)) -> ((%d)), bw = %d\n", + ccx->ifs_clm_ctrl_unit, ctrl_unit, *dm->band_width); ccx->ifs_clm_ctrl_unit = ctrl_unit; } @@ -2817,8 +2859,8 @@ void phydm_ifs_clm_set(void *dm_void, enum ifs_clm_application ifs_clm_app, odm_set_bb_reg(dm, R_0x1ef8, 0x3e000000, ((period >> 11) & 0x1f)); PHYDM_DBG(dm, DBG_ENV_MNTR, - "Update IFS_CLM period ((%d)) -> ((%d))\n", - ccx->ifs_clm_period, period); + "Update IFS_CLM period ((%d)) -> ((%d)), bw = %d\n", + ccx->ifs_clm_period, period, *dm->band_width); ccx->ifs_clm_period = period; } @@ -2860,6 +2902,11 @@ phydm_ifs_clm_mntr_set(void *dm_void, struct ifs_clm_para_info *ifs_clm_para) if (phydm_ifs_clm_racing_ctrl(dm, ifs_clm_para->ifs_clm_lv) == PHYDM_SET_FAIL) return false; + if (*dm->band_width == CHANNEL_WIDTH_10) + ifs_clm_para->mntr_time >>= 1; + else if (*dm->band_width == CHANNEL_WIDTH_5) + ifs_clm_para->mntr_time >>= 2; + if (ifs_clm_para->mntr_time >= 1048) { unit = IFS_CLM_16; ifs_clm_time = IFS_CLM_PERIOD_MAX; /*65535 * 16us = 1048ms*/ @@ -2997,9 +3044,7 @@ void phydm_ifs_clm_dbg(void *dm_void, char input[][16], u32 *_used, return; for (i = 0; i < 5; i++) { - if (input[i + 1]) - PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, - &var1[i]); + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &var1[i]); } if ((strcmp(input[1], help) == 0)) { @@ -3171,6 +3216,7 @@ u8 phydm_enhance_mntr_result(void *dm_void, struct enhance_mntr_rpt *rpt) phydm_nhm_get_utility(dm); rpt->nhm_ratio = ccx->nhm_ratio; rpt->nhm_env_ratio = ccx->nhm_env_ratio; + rpt->nhm_idle_ratio = ccx->nhm_idle_ratio; rpt->nhm_noise_pwr = ccx->nhm_level; rpt->nhm_pwr = ccx->nhm_pwr; enhance_mntr_rpt |= NHM_SUCCESS; @@ -3180,6 +3226,7 @@ u8 phydm_enhance_mntr_result(void *dm_void, struct enhance_mntr_rpt *rpt) } else { rpt->nhm_ratio = ENV_MNTR_FAIL; rpt->nhm_env_ratio = ENV_MNTR_FAIL; + rpt->nhm_idle_ratio = ENV_MNTR_FAIL; } PHYDM_DBG(dm, DBG_ENV_MNTR, @@ -3194,8 +3241,15 @@ u8 phydm_enhance_mntr_result(void *dm_void, struct enhance_mntr_rpt *rpt) phydm_clm_get_utility(dm); enhance_mntr_rpt |= CLM_SUCCESS; rpt->clm_ratio = ccx->clm_ratio; + if ((enhance_mntr_rpt & NHM_SUCCESS) && + (rpt->nhm_idle_ratio != ENV_MNTR_FAIL)) + rpt->nhm_tx_ratio = 100 - rpt->clm_ratio - + rpt->nhm_idle_ratio; + else + rpt->nhm_tx_ratio = ENV_MNTR_FAIL; } else { rpt->clm_ratio = ENV_MNTR_FAIL; + rpt->nhm_tx_ratio = ENV_MNTR_FAIL; } } else { if (ccx->clm_fw_result_cnt != 0) { @@ -3210,6 +3264,7 @@ u8 phydm_enhance_mntr_result(void *dm_void, struct enhance_mntr_rpt *rpt) "clm_fw_result_acc=%d, clm_fw_result_cnt=%d\n", ccx->clm_fw_result_acc, ccx->clm_fw_result_cnt); + rpt->nhm_tx_ratio = ENV_MNTR_FAIL; ccx->clm_fw_result_acc = 0; ccx->clm_fw_result_cnt = 0; enhance_mntr_rpt |= CLM_SUCCESS; @@ -3256,7 +3311,7 @@ u8 phydm_enhance_mntr_result(void *dm_void, struct enhance_mntr_rpt *rpt) PHYDM_DBG(dm, DBG_ENV_MNTR, "[IFS_CLM]rpt_stamp = %d, Tx_ratio = %d, EDCCA_exclude_CCA_ratio = %d\n", ccx->ifs_clm_rpt_stamp, ccx->ifs_clm_tx_ratio, - ccx->ifs_clm_edcca_excl_cca_ratio); + ccx->ifs_clm_edcca_excl_cca_ratio); PHYDM_DBG(dm, DBG_ENV_MNTR, "CCK : FA_ratio = %d, CCA_exclude_FA_ratio = %d\n", ccx->ifs_clm_cck_fa_ratio, ccx->ifs_clm_cck_cca_excl_fa_ratio); @@ -3273,24 +3328,78 @@ u8 phydm_enhance_mntr_result(void *dm_void, struct enhance_mntr_rpt *rpt) return enhance_mntr_rpt; } +void phydm_enhance_mntr_dbg_rpt(void *dm_void, u32 *_used, char *output, u32 *_out_len) +{ +#if (defined(NHM_SUPPORT) && defined(CLM_SUPPORT) && defined(FAHM_SUPPORT) && defined(IFS_CLM_SUPPORT)) + struct dm_struct *dm = (struct dm_struct *)dm_void; + struct ccx_info *ccx = &dm->dm_ccx_info; + struct enhance_mntr_rpt rpt = {0}; + u8 set_result = 0; + u8 i = 0; + + set_result = phydm_enhance_mntr_result(dm, &rpt); + + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "Set Result=%d, rpt_stamp{NHM, CLM, FAHM, IFS_CLM}={%d, %d, %d, %d}\n", + set_result, rpt.nhm_rpt_stamp, rpt.clm_rpt_stamp, + rpt.fahm_rpt_stamp, rpt.ifs_clm_rpt_stamp); + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "clm_ratio=%d, nhm_idle_ratio=%d, nhm_tx_ratio=%d\n", + rpt.clm_ratio, rpt.nhm_idle_ratio, rpt.nhm_tx_ratio); + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "nhm_IGI=0x%x, nhm_ratio=%d, nhm_env_ratio=%d, nhm_noise_pwr=%d, nhm_pwr=%d\n", + ccx->nhm_igi, rpt.nhm_ratio, rpt.nhm_env_ratio, + rpt.nhm_noise_pwr, rpt.nhm_pwr); + for (i = 0; i < NHM_RPT_NUM; i++) { + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "nhm_rpt[%d] = %d (%d percent)\n", i, + rpt.nhm_result[i], + (((rpt.nhm_result[i] * 100) + 128) >> 8)); + } + if (!(rpt.fahm_inclu_cck)) + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "===>The following fahm report does not count CCK pkt\n"); + + for (i = 0; i < FAHM_RPT_NUM; i++) { + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "fahm_rpt[%d] = %d (%d percent)\n", i, + rpt.fahm_result[i], + (((rpt.fahm_result[i] * 100) + 32768) >> 16)); + } + + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "fahm_IGI=0x%x, fahm_pwr=%d, fahm_ratio=%d, fahm_denom_ratio=%d\n", + ccx->fahm_igi, rpt.fahm_pwr, rpt.fahm_ratio, + rpt.fahm_denom_ratio); + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "ifs_clm_Tx_ratio = %d, ifs_clm_EDCCA_exclude_CCA_ratio = %d \n", + rpt.ifs_clm_tx_ratio, + rpt.ifs_clm_edcca_excl_cca_ratio); + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "ifs_clm_cck_fa_ratio = %d, ifs_clm_cck_cca_exclude_FA_ratio = %d \n", + rpt.ifs_clm_cck_fa_ratio, + rpt.ifs_clm_cck_cca_excl_fa_ratio); + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, + "ifs_clm_ofdm_fa_ratio = %d, ifs_clm_ofdm_cca_exclude_FA_ratio = %d \n", + rpt.ifs_clm_ofdm_fa_ratio, + rpt.ifs_clm_ofdm_cca_excl_fa_ratio); +#endif +} + void phydm_enhance_mntr_dbg(void *dm_void, char input[][16], u32 *_used, char *output, u32 *_out_len) { #if (defined(NHM_SUPPORT) && defined(CLM_SUPPORT) && defined(FAHM_SUPPORT) && defined(IFS_CLM_SUPPORT)) struct dm_struct *dm = (struct dm_struct *)dm_void; char help[] = "-h"; - u32 var1[10] = {0}; - u32 used = *_used; - u32 out_len = *_out_len; + u32 var1[3] = {0}; struct nhm_para_info nhm_para = {0}; struct clm_para_info clm_para = {0}; struct fahm_para_info fahm_para = {0}; struct ifs_clm_para_info ifs_clm_para = {0}; - struct enhance_mntr_rpt rpt = {0}; struct enhance_mntr_trig_rpt trig_rpt = {0}; struct ccx_info *ccx = &dm->dm_ccx_info; u8 set_result = 0; - u8 i = 0; if (!(dm->support_ic_type & PHYDM_IC_SUPPORT_FAHM) || !(dm->support_ic_type & PHYDM_IC_SUPPORT_IFS_CLM)) @@ -3299,60 +3408,12 @@ void phydm_enhance_mntr_dbg(void *dm_void, char input[][16], u32 *_used, PHYDM_SSCANF(input[1], DCMD_DECIMAL, &var1[0]); if ((strcmp(input[1], help) == 0)) { - PDM_SNPF(out_len, used, output + used, out_len - used, + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, "Basic-Trigger 960ms for ifs_clm, 262ms for others: {1}\n"); - PDM_SNPF(out_len, used, output + used, out_len - used, + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, "Get Result: {100}\n"); } else if (var1[0] == 100) { /* Get results */ - set_result = phydm_enhance_mntr_result(dm, &rpt); - - PDM_SNPF(out_len, used, output + used, out_len - used, - "Set Result=%d, rpt_stamp{NHM, CLM, FAHM, IFS_CLM}={%d, %d, %d, %d}\n", - set_result, rpt.nhm_rpt_stamp, rpt.clm_rpt_stamp, - rpt.fahm_rpt_stamp, rpt.ifs_clm_rpt_stamp); - PDM_SNPF(out_len, used, output + used, out_len - used, - "clm_ratio=%d\n", rpt.clm_ratio); - - for (i = 0; i < NHM_RPT_NUM; i++) { - PDM_SNPF(out_len, used, output + used, out_len - used, - "nhm_rpt[%d] = %d (%d percent)\n", i, - rpt.nhm_result[i], - (((rpt.nhm_result[i] * 100) + 128) >> 8)); - } - - PDM_SNPF(out_len, used, output + used, out_len - used, - "nhm_IGI=0x%x, nhm_ratio=%d, nhm_env_ratio=%d, nhm_noise_pwr=%d, nhm_pwr=%d\n", - ccx->nhm_igi, rpt.nhm_ratio, rpt.nhm_env_ratio, - rpt.nhm_noise_pwr, rpt.nhm_pwr); - - if (!(rpt.fahm_inclu_cck)) - PDM_SNPF(out_len, used, output + used, - out_len - used, - "===>The following fahm report does not count CCK pkt\n"); - - for (i = 0; i < FAHM_RPT_NUM; i++) { - PDM_SNPF(out_len, used, output + used, out_len - used, - "fahm_rpt[%d] = %d (%d percent)\n", i, - rpt.fahm_result[i], - (((rpt.fahm_result[i] * 100) + 32768) >> 16)); - } - - PDM_SNPF(out_len, used, output + used, out_len - used, - "fahm_IGI=0x%x, fahm_pwr=%d, fahm_ratio=%d, fahm_denom_ratio=%d\n", - ccx->fahm_igi, rpt.fahm_pwr, rpt.fahm_ratio, - rpt.fahm_denom_ratio); - PDM_SNPF(out_len, used, output + used, out_len - used, - "ifs_clm_Tx_ratio = %d, ifs_clm_EDCCA_exclude_CCA_ratio = %d \n", - rpt.ifs_clm_tx_ratio, - rpt.ifs_clm_edcca_excl_cca_ratio); - PDM_SNPF(out_len, used, output + used, out_len - used, - "ifs_clm_cck_fa_ratio = %d, ifs_clm_cck_cca_exclude_FA_ratio = %d \n", - rpt.ifs_clm_cck_fa_ratio, - rpt.ifs_clm_cck_cca_excl_fa_ratio); - PDM_SNPF(out_len, used, output + used, out_len - used, - "ifs_clm_ofdm_fa_ratio = %d, ifs_clm_ofdm_cca_exclude_FA_ratio = %d \n", - rpt.ifs_clm_ofdm_fa_ratio, - rpt.ifs_clm_ofdm_cca_excl_fa_ratio); + phydm_enhance_mntr_dbg_rpt(dm, _used, output, _out_len); } else { /* Set & trigger*/ /*nhm para*/ nhm_para.incld_txon = NHM_EXCLUDE_TXON; @@ -3386,14 +3447,12 @@ void phydm_enhance_mntr_dbg(void *dm_void, char input[][16], u32 *_used, &ifs_clm_para, &trig_rpt); - PDM_SNPF(out_len, used, output + used, out_len - used, + PDM_SNPF(*_out_len, *_used, output + *_used, *_out_len - *_used, "Set Result=%d, rpt_stamp{NHM, CLM, FAHM, IFS_CLM}={%d, %d ,%d, %d}\n", set_result, trig_rpt.nhm_rpt_stamp, trig_rpt.clm_rpt_stamp, trig_rpt.fahm_rpt_stamp, trig_rpt.ifs_clm_rpt_stamp); } - *_used = used; - *_out_len = out_len; #endif } @@ -3601,8 +3660,7 @@ void phydm_edcca_clm_dbg(void *dm_void, char input[][16], u32 *_used, return; for (i = 0; i < 4; i++) { - if (input[i + 1]) - PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &var1[i]); + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &var1[i]); } if ((strcmp(input[1], help) == 0)) { @@ -3671,8 +3729,11 @@ void phydm_env_mntr_result_watchdog(void *dm_void) ccx->ccx_watchdog_result |= CLM_SUCCESS; PHYDM_DBG(dm, DBG_ENV_MNTR, - "Summary: nhm_ratio=((%d)) clm_ratio=((%d))\n\n", - ccx->nhm_ratio, ccx->clm_ratio); + "Summary: nhm_ratio=((%d)) nhm_env_ratio=((%d)) clm_ratio=((%d))\n", + ccx->nhm_ratio, ccx->nhm_env_ratio, ccx->clm_ratio); + PHYDM_DBG(dm, DBG_ENV_MNTR, + "nhm_idle_ratio=((%d)) nhm_tx_ratio=((%d))\n\n", + ccx->nhm_idle_ratio, ccx->nhm_tx_ratio); #endif #ifdef FAHM_SUPPORT diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_ccx.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_ccx.h index 28efbe536..2dd7c57de 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_ccx.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_ccx.h @@ -204,6 +204,8 @@ struct env_trig_rpt { struct env_mntr_rpt { u8 nhm_ratio; u8 nhm_env_ratio; /*exclude nhm_r[0] above -80dBm or first cluster under -80dBm*/ + u8 nhm_idle_ratio; + u8 nhm_tx_ratio; u8 nhm_result[NHM_RPT_NUM]; u8 clm_ratio; u8 nhm_rpt_stamp; @@ -222,6 +224,8 @@ struct enhance_mntr_trig_rpt { struct enhance_mntr_rpt { u8 nhm_ratio; u8 nhm_env_ratio; /*exclude nhm_r[0] above -80dBm or first cluster under -80dBm*/ + u8 nhm_idle_ratio; + u8 nhm_tx_ratio; u8 nhm_result[NHM_RPT_NUM]; u8 clm_ratio; u8 nhm_rpt_stamp; @@ -308,6 +312,8 @@ struct ccx_info { u8 nhm_manual_ctrl; u8 nhm_ratio; /*@1% per nuit, it means the interference igi can't overcome.*/ u8 nhm_env_ratio; /*exclude nhm_r[0] above -80dBm or first cluster under -80dBm*/ + u8 nhm_idle_ratio; + u8 nhm_tx_ratio; u8 nhm_rpt_sum; u16 nhm_duration; /*@Real time of NHM_VALID */ u8 nhm_set_lv; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cfotracking.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cfotracking.c index 766511a4a..e71c5b5c7 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cfotracking.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cfotracking.c @@ -210,9 +210,10 @@ phydm_set_crystal_cap_reg(void *dm_void, u8 crystal_cap) struct phydm_cfo_track_struct *cfo_track = &dm->dm_cfo_track; u32 reg_val = 0; - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | - ODM_RTL8195B | ODM_RTL8812F | ODM_RTL8721D | - ODM_RTL8710C | ODM_RTL8723F | ODM_RTL8814C)) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B |\ + ODM_RTL8195B | ODM_RTL8812F | ODM_RTL8721D |\ + ODM_RTL8710C | ODM_RTL8723F | ODM_RTL8814C |\ + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E)) { crystal_cap &= 0x7F; reg_val = crystal_cap | (crystal_cap << 7); } else { @@ -296,9 +297,23 @@ phydm_set_crystal_cap_reg(void *dm_void, u8 crystal_cap) odm_set_mac_reg(dm, R_0x103c, 0x00FFFC00, reg_val); } #endif -#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8812F_SUPPORT) + #if (RTL8730A_SUPPORT) + else if (dm->support_ic_type & ODM_RTL8730A) { + /* write 0x42008804[23:17] = 0x42008804[16:10] = crystal_cap */ + XTAL_BASE->XTAL_ANAPAR_XTAL_ON_0 &= (~ 0x00FFFC00); + XTAL_BASE->XTAL_ANAPAR_XTAL_ON_0 |= (reg_val << 10); + } + #endif + #if (RTL8735B_SUPPORT) + else if (dm->support_ic_type & ODM_RTL8735B) { + /* write 0x103c[23:17] = 0x103c[16:10] = crystal_cap */ + odm_set_mac_reg(dm, R_0x103c, 0x00FFFC00, reg_val); + } + #endif + #if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8812F_SUPPORT ||\ + RTL8822E_SUPPORT) else if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | - ODM_RTL8812F | ODM_RTL8814C)) { + ODM_RTL8812F | ODM_RTL8814C | ODM_RTL8822E)) { /* write 0x1040[23:17] = 0x1040[16:10] = crystal_cap */ odm_set_mac_reg(dm, R_0x1040, 0x00FFFC00, reg_val); } else { @@ -332,7 +347,7 @@ void phydm_cfo_tracking_reset(void *dm_void) if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8195B | ODM_RTL8812F | ODM_RTL8710C | ODM_RTL8721D | ODM_RTL8723F | - ODM_RTL8814C)) + ODM_RTL8814C | ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E)) cfo_track->def_x_cap = cfo_track->crystal_cap_default & 0x7f; else cfo_track->def_x_cap = cfo_track->crystal_cap_default & 0x3f; @@ -374,7 +389,7 @@ void phydm_cfo_tracking_init(void *dm_void) PHYDM_DBG(dm, DBG_CFO_TRK, "[%s]=========>\n", __func__); if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8195B | ODM_RTL8812F | ODM_RTL8710C | ODM_RTL8721D | ODM_RTL8723F | - ODM_RTL8814C)) + ODM_RTL8814C | ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E)) cfo_track->crystal_cap = cfo_track->crystal_cap_default & 0x7f; else cfo_track->crystal_cap = cfo_track->crystal_cap_default & 0x3f; @@ -488,9 +503,10 @@ void phydm_cfo_tracking(void *dm_void) else if (cfo_avg < (-CFO_TRK_STOP_TH)) crystal_cap -= 1; - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B | - ODM_RTL8195B | ODM_RTL8812F | ODM_RTL8710C | - ODM_RTL8721D | ODM_RTL8723F | ODM_RTL8814C)) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8814B |\ + ODM_RTL8195B | ODM_RTL8812F | ODM_RTL8710C |\ + ODM_RTL8721D | ODM_RTL8723F | ODM_RTL8814C |\ + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E)) { if (crystal_cap > 0x7F) crystal_cap = 0x7F; } else { diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cfotracking.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cfotracking.h index 253f3ba3e..11720471d 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cfotracking.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_cfotracking.h @@ -29,7 +29,7 @@ /* 2019.03.28 fix 8197G crystal_cap register address*/ #define CFO_TRACKING_VERSION "2.4" -#define CFO_TRK_ENABLE_TH 20 /* @kHz enable CFO_Track threshold*/ +#define CFO_TRK_ENABLE_TH 11 /* @kHz enable CFO_Track threshold*/ #define CFO_TRK_STOP_TH 10 /* @kHz disable CFO_Track threshold*/ #define CFO_TH_ATC 80 /* @kHz */ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_debug.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_debug.c index dde032311..9f238e5fd 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_debug.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_debug.c @@ -744,7 +744,7 @@ void phydm_bb_hw_dbg_info_jgr3(void *dm_void, u32 *_used, char *output, "\r\n %-35s %s", "mode", tmp_string); /*@ [RX counter Info] ===============================================*/ - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { PDM_SNPF(out_len, used, output + used, out_len - used, "\r\n %-35s = %d", "CCK CCA cnt", odm_get_bb_reg(dm, R_0x2aa0, 0xFFFF)); @@ -1088,12 +1088,13 @@ void phydm_dm_summary_cli_win(void *dm_void, char *buf, u8 macid) RT_PRINT(buf); RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, - "15.(%s) %-12s: ratio{nhm, clm}={%d, %d}, nhm_pwr=%d\n", + "15.(%s) %-12s: ratio{nhm, nhm_env, clm, idle, tx}={%d, %d, %d, %d, %d}, nhm_pwr=%d\n", ((comp & ODM_BB_ENV_MONITOR) ? ((pause_comp & ODM_BB_ENV_MONITOR) ? "P" : "V") : "."), "EnvMntr", - dm->dm_ccx_info.nhm_ratio, dm->dm_ccx_info.clm_ratio, - dm->dm_ccx_info.nhm_pwr); + dm->dm_ccx_info.nhm_ratio, dm->dm_ccx_info.nhm_env_ratio, + dm->dm_ccx_info.clm_ratio, dm->dm_ccx_info.nhm_idle_ratio, + dm->dm_ccx_info.nhm_tx_ratio, dm->dm_ccx_info.nhm_pwr); RT_PRINT(buf); RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, "15.(%s) %-12s: NHM_Rpt(H->L)[%d %d %d %d %d %d %d %d %d %d %d %d]\n", @@ -1167,7 +1168,10 @@ void phydm_basic_dbg_msg_cli_win(void *dm_void, char *buf) u8 ss_ofst = 0; struct cmn_sta_info *entry = NULL; char dbg_buf[PHYDM_SNPRINT_SIZE] = {0}; - + static char bw[CHANNEL_WIDTH_MAX+1][MAX_ARGC] = { {"20"}, {"40"}, + {"80"}, {"160"}, + {"80+80"}, {"5"}, + {"10"}, {"MAX"}}; RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, "\r\n PHYDM Common Dbg Msg --------->"); RT_PRINT(buf); @@ -1175,8 +1179,8 @@ void phydm_basic_dbg_msg_cli_win(void *dm_void, char *buf) RT_PRINT(buf); if (dm->is_linked) { - RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, "\r\n ID=((%d)), BW=((%d)), fc=((CH-%d))", - dm->curr_station_id, 20 << *dm->band_width, *dm->channel); + RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, "\r\n ID=((%d)), BW=((%s)), fc=((CH-%d))", + dm->curr_station_id, bw[*dm->band_width], *dm->channel); RT_PRINT(buf); if (((*dm->channel <= 14) && (*dm->band_width == CHANNEL_WIDTH_40)) && @@ -1506,14 +1510,14 @@ void phydm_basic_dbg_msg_cli_win(void *dm_void, char *buf) RT_PRINT(buf); } - RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, + RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, "\r\n [Tx cnt] {CCK_TxEN, CCK_TxON, OFDM_TxEN, OFDM_TxON} = {%d, %d, %d, %d}", fa_t->cnt_cck_txen, fa_t->cnt_cck_txon, fa_t->cnt_ofdm_txen, fa_t->cnt_ofdm_txon); RT_PRINT(buf); - RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, "\r\n [CCA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}", - fa_t->cnt_cck_cca, fa_t->cnt_ofdm_cca, fa_t->cnt_cca_all); + RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, "\r\n [CCA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}, [BT polluted] = {%d}", + fa_t->cnt_cck_cca, fa_t->cnt_ofdm_cca, fa_t->cnt_cca_all, fa_t->cnt_bt_polluted); RT_PRINT(buf); RT_SPRINTF(buf, DBGM_CLI_BUF_SIZE, "\r\n [FA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}", @@ -1850,8 +1854,11 @@ u16 phydm_rx_avg_phy_rate(void *dm_void) struct odm_phy_dbg_info *dbg = &dm->phy_dbg_info; u8 i = 0, rate_num = 0, rate_base = 0; u16 rate = 0, avg_phy_rate = 0; + u16 max_rate_num = 0; u32 pkt_cnt = 0, phy_rate_sum = 0; + dm->rx_rate_plurality = (*dm->channel < 36) ? ODM_RATE1M : ODM_RATE6M; + if (dbg->ht_pkt_not_zero) { rate_num = HT_RATE_NUM; rate_base = ODM_RATEMCS0; @@ -1859,6 +1866,10 @@ u16 phydm_rx_avg_phy_rate(void *dm_void) rate = phy_rate_table[i + rate_base] << *dm->band_width; phy_rate_sum += dbg->num_qry_ht_pkt[i] * rate; pkt_cnt += dbg->num_qry_ht_pkt[i]; + if (max_rate_num <= dbg->num_qry_ht_pkt[i]) { + max_rate_num = dbg->num_qry_ht_pkt[i]; + dm->rx_rate_plurality = i + rate_base; + } } } #if (ODM_IC_11AC_SERIES_SUPPORT || defined(PHYDM_IC_JGR3_SERIES_SUPPORT)) @@ -1869,21 +1880,41 @@ u16 phydm_rx_avg_phy_rate(void *dm_void) rate = phy_rate_table[i + rate_base] << *dm->band_width; phy_rate_sum += dbg->num_qry_vht_pkt[i] * rate; pkt_cnt += dbg->num_qry_vht_pkt[i]; + if (max_rate_num <= dbg->num_qry_vht_pkt[i]) { + max_rate_num = dbg->num_qry_vht_pkt[i]; + dm->rx_rate_plurality = i + rate_base; + } } } #endif - else { - for (i = ODM_RATE1M; i <= ODM_RATE54M; i++) { - /*SKIP 1M & 6M for beacon case*/ - if (*dm->channel < 36 && i == ODM_RATE1M) - continue; + for (i = ODM_RATE1M; i <= ODM_RATE54M; i++) { + /*SKIP 1M & 6M for beacon case*/ + if (*dm->channel < 36 && i == ODM_RATE1M) { + if (max_rate_num <= dbg->num_qry_legacy_pkt[i] - + dbg->num_qry_beacon_pkt) { + max_rate_num = dbg->num_qry_legacy_pkt[i] - + dbg->num_qry_beacon_pkt; + dm->rx_rate_plurality = i; + } + continue; + } - if (*dm->channel >= 36 && i == ODM_RATE6M) - continue; + if (*dm->channel >= 36 && i == ODM_RATE6M) { + if (max_rate_num <= dbg->num_qry_legacy_pkt[i] - + dbg->num_qry_beacon_pkt) { + max_rate_num = dbg->num_qry_legacy_pkt[i] - + dbg->num_qry_beacon_pkt; + dm->rx_rate_plurality = i; + } + continue; + } - rate = phy_rate_table[i]; - phy_rate_sum += dbg->num_qry_legacy_pkt[i] * rate; - pkt_cnt += dbg->num_qry_legacy_pkt[i]; + rate = phy_rate_table[i]; + phy_rate_sum += dbg->num_qry_legacy_pkt[i] * rate; + pkt_cnt += dbg->num_qry_legacy_pkt[i]; + if (max_rate_num <= dbg->num_qry_legacy_pkt[i]) { + max_rate_num = dbg->num_qry_legacy_pkt[i]; + dm->rx_rate_plurality = i; } } @@ -1894,6 +1925,10 @@ u16 phydm_rx_avg_phy_rate(void *dm_void) << CHANNEL_WIDTH_40; phy_rate_sum += dbg->num_qry_pkt_sc_40m[i] * rate; pkt_cnt += dbg->num_qry_pkt_sc_40m[i]; + if (max_rate_num <= dbg->num_qry_pkt_sc_40m[i]) { + max_rate_num = dbg->num_qry_pkt_sc_40m[i]; + dm->rx_rate_plurality = i + rate_base; + } } } #endif @@ -1903,11 +1938,17 @@ u16 phydm_rx_avg_phy_rate(void *dm_void) rate = phy_rate_table[i + rate_base]; phy_rate_sum += dbg->num_qry_pkt_sc_20m[i] * rate; pkt_cnt += dbg->num_qry_pkt_sc_20m[i]; + if (max_rate_num <= dbg->num_qry_pkt_sc_20m[i]) { + max_rate_num = dbg->num_qry_pkt_sc_20m[i]; + dm->rx_rate_plurality = i + rate_base; + } } } avg_phy_rate = (pkt_cnt == 0) ? 0 : (u16)(phy_rate_sum / pkt_cnt); + phydm_print_rate_2_buff(dm, dm->rx_rate_plurality, dm->dbg_buf, PHYDM_SNPRINT_SIZE); + PHYDM_DBG(dm, DBG_CMN, "[RxRate Plurality]=%s (0x%x)\n", dm->dbg_buf, dm->rx_rate_plurality); return avg_phy_rate; } @@ -1966,9 +2007,9 @@ void phydm_nss_hitogram(void *dm_void, enum PDM_RATE_TYPE rate_type) } phydm_print_hist_2_buf(dm, evm_hist, h_size, buf, buf_size); - PHYDM_DBG(dm, DBG_CMN, "[%d-SS][EVM][%d]=%s\n", ss, i, buf); + PHYDM_DBG(dm, DBG_CMN_OTHER, "[%d-SS][EVM][%d]=%s\n", ss, i, buf); phydm_print_hist_2_buf(dm, snr_hist, h_size, buf, buf_size); - PHYDM_DBG(dm, DBG_CMN, "[%d-SS][SNR][%d]=%s\n", ss, i, buf); + PHYDM_DBG(dm, DBG_CMN_OTHER, "[%d-SS][SNR][%d]=%s\n", ss, i, buf); } } @@ -1990,18 +2031,18 @@ void phydm_show_cn_hitogram(void *dm_void) if (dm->num_rf_path == 1) return; - PHYDM_DBG(dm, DBG_CMN, "[Condition number Histogram] ========>\n"); + PHYDM_DBG(dm, DBG_CMN_OTHER, "[Condition number Histogram] ========>\n"); /*@===[Threshold]=============================================================*/ for (i = 0; i < PHY_HIST_TH_SIZE; i++) th_tmp[i] = dbg_i->cn_hist_th[i] >> 1; phydm_print_hist_2_buf(dm, th_tmp, PHY_HIST_TH_SIZE, buf, PHYDM_SNPRINT_SIZE); - PHYDM_DBG(dm, DBG_CMN, "%-24s=%s\n", "[CN_TH]", buf); + PHYDM_DBG(dm, DBG_CMN_OTHER, "%-24s=%s\n", "[CN_TH]", buf); /*@===[Histogram]=============================================================*/ - for (i = 1; i <= dm->num_rf_path; i++) { + for (i = 1; i < dm->num_rf_path; i++) { if (dbg_s->p4_cnt[i] == 0) continue; @@ -2012,7 +2053,7 @@ void phydm_show_cn_hitogram(void *dm_void) cn_hist = &dbg_s->cn_hist[i][0]; phydm_print_hist_2_buf(dm, cn_hist, PHY_HIST_SIZE, buf, PHYDM_SNPRINT_SIZE); - PHYDM_DBG(dm, DBG_CMN, "[%d-SS]%s=(avg:%d.%4d)%s\n", + PHYDM_DBG(dm, DBG_CMN_OTHER, "[%d-SS]%s=(avg:%d.%4d)%s\n", i + 1, "[CN]", cn_avg >> 3, phydm_show_fraction_num(cn_avg & 0x7, 3), buf); } @@ -2029,22 +2070,22 @@ void phydm_show_phy_hitogram(void *dm_void) u16 th_size = PHY_HIST_SIZE - 1; u8 i = 0; - PHYDM_DBG(dm, DBG_CMN, "[PHY Histogram] ==============>\n"); + PHYDM_DBG(dm, DBG_CMN_OTHER, "[PHY Histogram] ==============>\n"); /*@===[Threshold]=============================================================*/ phydm_print_hist_2_buf(dm, dbg_i->evm_hist_th, th_size, buf, buf_size); - PHYDM_DBG(dm, DBG_CMN, "%-16s=%s\n", "[EVM_TH]", buf); + PHYDM_DBG(dm, DBG_CMN_OTHER, "%-16s=%s\n", "[EVM_TH]", buf); phydm_print_hist_2_buf(dm, dbg_i->snr_hist_th, th_size, buf, buf_size); - PHYDM_DBG(dm, DBG_CMN, "%-16s=%s\n", "[SNR_TH]", buf); + PHYDM_DBG(dm, DBG_CMN_OTHER, "%-16s=%s\n", "[SNR_TH]", buf); /*@===[OFDM]==================================================================*/ if (dbg_s->rssi_ofdm_cnt) { phydm_print_hist_2_buf(dm, dbg_s->evm_ofdm_hist, PHY_HIST_SIZE, buf, buf_size); - PHYDM_DBG(dm, DBG_CMN, "%-14s=%s\n", "[OFDM][EVM]", buf); + PHYDM_DBG(dm, DBG_CMN_OTHER, "%-14s=%s\n", "[OFDM][EVM]", buf); phydm_print_hist_2_buf(dm, dbg_s->snr_ofdm_hist, PHY_HIST_SIZE, buf, buf_size); - PHYDM_DBG(dm, DBG_CMN, "%-14s=%s\n", "[OFDM][SNR]", buf); + PHYDM_DBG(dm, DBG_CMN_OTHER, "%-14s=%s\n", "[OFDM][SNR]", buf); } /*@===[1-SS]==================================================================*/ if (dbg_s->rssi_1ss_cnt) @@ -2347,12 +2388,15 @@ void phydm_basic_dbg_msg_linked(void *dm_void) u16 macid, client_cnt = 0; u8 rate = 0; struct cmn_sta_info *entry = NULL; - char dbg_buf[PHYDM_SNPRINT_SIZE] = {0}; struct phydm_cfo_rpt cfo; u8 i = 0; + static char bw[CHANNEL_WIDTH_MAX+1][MAX_ARGC] = { {"20"}, {"40"}, + {"80"}, {"160"}, + {"80+80"}, {"5"}, + {"10"}, {"MAX"}}; - PHYDM_DBG(dm, DBG_CMN, "ID=((%d)), BW=((%d)), fc=((CH-%d))\n", - dm->curr_station_id, 20 << *dm->band_width, *dm->channel); + PHYDM_DBG(dm, DBG_CMN, "ID=((%d)), BW=((%s)), fc=((CH-%d))\n", + dm->curr_station_id, bw[*dm->band_width], *dm->channel); #ifdef ODM_IC_11N_SERIES_SUPPORT #ifdef PHYDM_PRIMARY_CCA @@ -2367,27 +2411,27 @@ void phydm_basic_dbg_msg_linked(void *dm_void) #endif if (dm->cck_new_agc || dm->rx_rate > ODM_RATE11M) { - PHYDM_DBG(dm, DBG_CMN, "[AGC Idx] {0x%x, 0x%x, 0x%x, 0x%x}\n", + PHYDM_DBG(dm, DBG_CMN_OTHER, "[AGC Idx] {0x%x, 0x%x, 0x%x, 0x%x}\n", dm->ofdm_agc_idx[0], dm->ofdm_agc_idx[1], dm->ofdm_agc_idx[2], dm->ofdm_agc_idx[3]); } else { - PHYDM_DBG(dm, DBG_CMN, "[CCK AGC Idx] {LNA,VGA}={0x%x, 0x%x}\n", + PHYDM_DBG(dm, DBG_CMN_OTHER, "[CCK AGC Idx] {LNA,VGA}={0x%x, 0x%x}\n", dm->cck_lna_idx, dm->cck_vga_idx); } - phydm_print_rate_2_buff(dm, dm->rx_rate, dbg_buf, PHYDM_SNPRINT_SIZE); + phydm_print_rate_2_buff(dm, dm->rx_rate, dm->dbg_buf, PHYDM_SNPRINT_SIZE); PHYDM_DBG(dm, DBG_CMN, "RSSI:{%d, %d, %d, %d}, RxRate:%s (0x%x)\n", (dm->rssi_a == 0xff) ? 0 : dm->rssi_a, (dm->rssi_b == 0xff) ? 0 : dm->rssi_b, (dm->rssi_c == 0xff) ? 0 : dm->rssi_c, (dm->rssi_d == 0xff) ? 0 : dm->rssi_d, - dbg_buf, dm->rx_rate); + dm->dbg_buf, dm->rx_rate); rate = dbg_t->beacon_phy_rate; - phydm_print_rate_2_buff(dm, rate, dbg_buf, PHYDM_SNPRINT_SIZE); + phydm_print_rate_2_buff(dm, rate, dm->dbg_buf, PHYDM_SNPRINT_SIZE); PHYDM_DBG(dm, DBG_CMN, "Beacon_cnt=%d, rate_idx=%s (0x%x)\n", - dbg_t->num_qry_beacon_pkt, dbg_buf, dbg_t->beacon_phy_rate); + dbg_t->num_qry_beacon_pkt, dm->dbg_buf, dbg_t->beacon_phy_rate); phydm_get_phy_statistic(dm); @@ -2403,9 +2447,9 @@ void phydm_basic_dbg_msg_linked(void *dm_void) continue; rate = entry->ra_info.curr_tx_rate; - phydm_print_rate_2_buff(dm, rate, dbg_buf, PHYDM_SNPRINT_SIZE); + phydm_print_rate_2_buff(dm, rate, dm->dbg_buf, PHYDM_SNPRINT_SIZE); PHYDM_DBG(dm, DBG_CMN, "TxRate[%d]=%s (0x%x)\n", - macid, dbg_buf, entry->ra_info.curr_tx_rate); + macid, dm->dbg_buf, entry->ra_info.curr_tx_rate); client_cnt++; @@ -2417,21 +2461,23 @@ void phydm_basic_dbg_msg_linked(void *dm_void) "TP {Tx, Rx, Total} = {%d, %d, %d}Mbps, Traffic_Load=(%d))\n", dm->tx_tp, dm->rx_tp, dm->total_tp, dm->traffic_load); - PHYDM_DBG(dm, DBG_CMN, "CFO_avg=((%d kHz)), CFO_traking = ((%s%d))\n", - cfo_t->CFO_ave_pre, - ((cfo_t->crystal_cap > cfo_t->def_x_cap) ? "+" : "-"), - DIFF_2(cfo_t->crystal_cap, cfo_t->def_x_cap)); - /* @CFO report */ switch (dm->ic_ip_series) { #ifdef PHYDM_IC_JGR3_SERIES_SUPPORT case PHYDM_IC_JGR3: - PHYDM_DBG(dm, DBG_CMN, "cfo_tail = {%d, %d, %d, %d}\n", + PHYDM_DBG(dm, DBG_CMN, "CFO_avg=((%d kHz)), CFO_traking = ((%s%d)), cfo_tail = {%d, %d, %d, %d}\n", + cfo_t->CFO_ave_pre, + ((cfo_t->crystal_cap > cfo_t->def_x_cap) ? "+" : "-"), + DIFF_2(cfo_t->crystal_cap, cfo_t->def_x_cap), dbg_t->cfo_tail[0], dbg_t->cfo_tail[1], dbg_t->cfo_tail[2], dbg_t->cfo_tail[3]); break; #endif default: + PHYDM_DBG(dm, DBG_CMN, "CFO_avg=((%d kHz)), CFO_traking = ((%s%d))\n", + cfo_t->CFO_ave_pre, + ((cfo_t->crystal_cap > cfo_t->def_x_cap) ? "+" : "-"), + DIFF_2(cfo_t->crystal_cap, cfo_t->def_x_cap)); phydm_get_cfo_info(dm, &cfo); for (i = 0; i < dm->num_rf_path; i++) { PHYDM_DBG(dm, DBG_CMN, @@ -2462,18 +2508,17 @@ void phydm_basic_dbg_msg_linked(void *dm_void) #if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT || defined(PHYSTS_3RD_TYPE_SUPPORT)) /*STBC or LDPC pkt*/ - if (dm->support_ic_type & (PHYSTS_2ND_TYPE_IC | PHYSTS_3RD_TYPE_IC)) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F | ODM_RTL8735B |\ + ODM_RTL8730A | ODM_RTL8822E)) + PHYDM_DBG(dm, DBG_CMN, "Coding: LDPC=((%s)), STBC=((%s)), Beamformed=((%s))\n", + (dbg_t->is_ldpc_pkt) ? "Y" : "N", + (dbg_t->is_stbc_pkt) ? "Y" : "N", + (dm->is_beamformed) ? "Y" : "N"); + else if (dm->support_ic_type & (PHYSTS_2ND_TYPE_IC | PHYSTS_3RD_TYPE_IC)) PHYDM_DBG(dm, DBG_CMN, "Coding: LDPC=((%s)), STBC=((%s))\n", (dbg_t->is_ldpc_pkt) ? "Y" : "N", (dbg_t->is_stbc_pkt) ? "Y" : "N"); #endif - -#if (RTL8822C_SUPPORT || RTL8723F_SUPPORT) - /*Beamformed pkt*/ - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8723F)) - PHYDM_DBG(dm, DBG_CMN, "Beamformed=((%s))\n", - (dm->is_beamformed) ? "Y" : "N"); -#endif } void phydm_dm_summary(void *dm_void, u8 macid) @@ -2621,6 +2666,9 @@ void phydm_basic_dbg_message(void *dm_void) /* backup memory*/ odm_move_memory(dm, dbg_b, dbg, sizeof(struct odm_phy_dbg_info)); #endif + + if (dm->is_linked && !(dm->debug_components & DBG_CMN)) + phydm_get_phy_statistic(dm); if (!(dm->debug_components & DBG_CMN)) { #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) @@ -2653,23 +2701,23 @@ void phydm_basic_dbg_message(void *dm_void) "[Tx cnt] {CCK_TxEN, CCK_TxON, OFDM_TxEN, OFDM_TxON} = {%d, %d, %d, %d}\n", fa_t->cnt_cck_txen, fa_t->cnt_cck_txon, fa_t->cnt_ofdm_txen, fa_t->cnt_ofdm_txon); - PHYDM_DBG(dm, DBG_CMN, "[CCA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}\n", - fa_t->cnt_cck_cca, fa_t->cnt_ofdm_cca, fa_t->cnt_cca_all); + PHYDM_DBG(dm, DBG_CMN, "[CCA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}, [BT polluted] = {%d}\n", + fa_t->cnt_cck_cca, fa_t->cnt_ofdm_cca, fa_t->cnt_cca_all, fa_t->cnt_bt_polluted); PHYDM_DBG(dm, DBG_CMN, "[FA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}\n", fa_t->cnt_cck_fail, fa_t->cnt_ofdm_fail, fa_t->cnt_all); - PHYDM_DBG(dm, DBG_CMN, + PHYDM_DBG(dm, DBG_CMN_OTHER, "[FA duration(us)] {exp, ifs_clm, fahm} = {%d, %d, %d}\n", fa_t->time_fa_exp, fa_t->time_fa_ifs_clm, fa_t->time_fa_fahm); - PHYDM_DBG(dm, DBG_CMN, + PHYDM_DBG(dm, DBG_CMN_OTHER, "[OFDM FA] Parity=%d, Rate=%d, Fast_Fsync=%d, SBD=%d\n", fa_t->cnt_parity_fail, fa_t->cnt_rate_illegal, fa_t->cnt_fast_fsync, fa_t->cnt_sb_search_fail); - PHYDM_DBG(dm, DBG_CMN, "[HT FA] CRC8=%d, MCS=%d\n", + PHYDM_DBG(dm, DBG_CMN_OTHER, "[HT FA] CRC8=%d, MCS=%d\n", fa_t->cnt_crc8_fail, fa_t->cnt_mcs_fail); #if (ODM_IC_11AC_SERIES_SUPPORT || defined(PHYDM_IC_JGR3_SERIES_SUPPORT)) if (dm->support_ic_type & (ODM_IC_11AC_SERIES | ODM_IC_JGR3_SERIES)) { - PHYDM_DBG(dm, DBG_CMN, + PHYDM_DBG(dm, DBG_CMN_OTHER, "[VHT FA] SIGA_CRC8=%d, SIGB_CRC8=%d, MCS=%d\n", fa_t->cnt_crc8_fail_vhta, fa_t->cnt_crc8_fail_vhtb, fa_t->cnt_mcs_fail_vht); @@ -2685,6 +2733,12 @@ void phydm_basic_dbg_message(void *dm_void) fa_t->cnt_cck_crc32_error, fa_t->cnt_ofdm_crc32_error, fa_t->cnt_ht_crc32_error, fa_t->cnt_vht_crc32_error, fa_t->cnt_crc32_error_all); + PHYDM_DBG(dm, DBG_CMN_OTHER, + "[MPDU CRC32 Cnt] {OK, Error, Miss} = {%d, %d, %d}\n", + fa_t->cnt_mpdu_crc32_ok, fa_t->cnt_mpdu_crc32_error, fa_t->cnt_mpdu_miss); + PHYDM_DBG(dm, DBG_CMN_OTHER, + "[MAC664 Cnt] {Type, Report}= {%d, %d}\n", + fa_t->cnt_mac664_type, fa_t->cnt_mac664_report); if (dm->support_ic_type & (ODM_IC_11N_SERIES | ODM_IC_11AC_SERIES)) PHYDM_DBG(dm, DBG_CMN, @@ -2697,8 +2751,16 @@ void phydm_basic_dbg_message(void *dm_void) dm->is_linked, dm->number_linked_client, dm->rssi_min, dm->dm_dig_table.cur_ig_value); - PHYDM_DBG(dm, DBG_CMN, "ratio{nhm, clm}={%d, %d}, nhm_pwr=%d\n", - ccx->nhm_ratio, ccx->clm_ratio, ccx->nhm_pwr); + #if (RTL8822E_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8822E)) { + PHYDM_DBG(dm, DBG_CMN, "bt_is_linked = %d, btc_rssi_en = %d, cck_rssi_th = %d, btc_mcs_rssi_en = %d\n", dm->bt_is_linked, dm->btc_rssi_processing, dm->bt_cck_rssi_th, dm->btc_mcs_rssi_en); + } + #endif + + PHYDM_DBG(dm, DBG_CMN, + "ratio{nhm, nhm_env, clm, idle, tx}={%d, %d, %d, %d, %d}, nhm_pwr=%d\n", + ccx->nhm_ratio, ccx->nhm_env_ratio, ccx->clm_ratio, + ccx->nhm_idle_ratio, ccx->nhm_tx_ratio, ccx->nhm_pwr); PHYDM_DBG(dm, DBG_CMN, "NHM_Rpt(H->L)[%d %d %d %d %d %d %d %d %d %d %d %d]\n", @@ -2707,12 +2769,18 @@ void phydm_basic_dbg_message(void *dm_void) ccx->nhm_result[5], ccx->nhm_result[4], ccx->nhm_result[3], ccx->nhm_result[2], ccx->nhm_result[1], ccx->nhm_result[0]); + PHYDM_DBG(dm, DBG_CMN_OTHER, + "[NBI/CSI] = %s\n", dm->is_nbi_csi ? "Yes" : "No"); + #ifdef EDCCA_CLM_SUPPORT if (dm->support_ic_type & PHYDM_IC_SUPPORT_EDCCA_CLM) { - PHYDM_DBG(dm, DBG_CMN, "edcca_clm_ratio=%d\n", + PHYDM_DBG(dm, DBG_CMN_OTHER, "edcca_clm_ratio=%d\n", ccx->edcca_clm_ratio); } #endif + + + } void phydm_basic_profile(void *dm_void, u32 *_used, char *output, u32 *_out_len) @@ -2890,6 +2958,34 @@ void phydm_basic_profile(void *dm_void, u32 *_used, char *output, u32 *_out_len) release_ver = RELEASE_VERSION_8723F; } #endif + +#if (RTL8735B_SUPPORT) + else if (dm->support_ic_type == ODM_RTL8735B) { + ic_type = "RTL8735B"; + date = RELEASE_DATE_8735B; + commit_by = COMMIT_BY_8735B; + release_ver = RELEASE_VERSION_8735B; + } +#endif + +#if (RTL8730A_SUPPORT) + else if (dm->support_ic_type == ODM_RTL8730A) { + ic_type = "RTL8730A"; + date = RELEASE_DATE_8730A; + commit_by = COMMIT_BY_8730A; + release_ver = RELEASE_VERSION_8730A; + } +#endif + +#if (RTL8822E_SUPPORT) + else if (dm->support_ic_type == ODM_RTL8822E) { + ic_type = "RTL8822E"; + date = RELEASE_DATE_8822E; + commit_by = COMMIT_BY_8822E; + release_ver = RELEASE_VERSION_8822E; + } +#endif + #if (RTL8812F_SUPPORT) else if (dm->support_ic_type == ODM_RTL8812F) { ic_type = "RTL8812F"; @@ -3044,7 +3140,6 @@ void phydm_basic_profile(void *dm_void, u32 *_used, char *output, u32 *_out_len) " %-35s: %s\n", "PHY config 8197F", PHY_CONFIG_VERSION_8197F); #endif - /*@jj add 20170822*/ #if (RTL8192F_SUPPORT) if (dm->support_ic_type & ODM_RTL8192F) @@ -3058,13 +3153,18 @@ void phydm_basic_profile(void *dm_void, u32 *_used, char *output, u32 *_out_len) " %-35s: %s\n", "PHY config 8721D", PHY_CONFIG_VERSION_8721D); #endif - #if (RTL8710C_SUPPORT) if (dm->support_ic_type & ODM_RTL8710C) PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n", "PHY config 8710C", PHY_CONFIG_VERSION_8710C); #endif +#if (RTL8822E_SUPPORT) + if (dm->support_ic_type & ODM_RTL8822E) + PDM_SNPF(out_len, used, output + used, out_len - used, + " %-35s: %s\n", "PHY config 8822E", + PHY_CONFIG_VERSION_8822E); +#endif *_used = used; *_out_len = out_len; @@ -3185,7 +3285,7 @@ void phydm_get_txagc(void *dm_void, u32 *_used, char *output, u32 *_out_len) u32 out_len = *_out_len; u8 i = 0; - #if (RTL8822C_SUPPORT) + #if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) PDM_SNPF(out_len, used, output + used, out_len - used, "Disabled DPD rate mask: 0x%x\n", dm->dis_dpd_rate); @@ -3264,7 +3364,8 @@ void phydm_set_txagc(void *dm_void, u32 *const val, u32 *_used, for (i = 0; i <= ODM_RATEVHTSS4MCS9; i++) rpt &= phydm_api_set_txagc(dm, pow, path, i, 0); } else if (dm->support_ic_type & - (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G)) { + (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G |\ + ODM_RTL8822E)) { pow = (val[3] & 0x7f); for (i = 0; i <= ODM_RATEMCS15; i++) rpt &= phydm_api_set_txagc(dm, pow, path, i, 0); @@ -3275,7 +3376,7 @@ void phydm_set_txagc(void *dm_void, u32 *const val, u32 *_used, pow = (val[3] & 0x3f); for (i = 0; i <= ODM_RATEMCS7; i++) rpt &= phydm_api_set_txagc(dm, pow, path, i, 0); - } else if (dm->support_ic_type &(ODM_RTL8723F)) { + } else if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { pow = (val[3] & 0x7f); for (i = 0; i <= ODM_RATEMCS7; i++) rpt &= phydm_api_set_txagc(dm, pow, path, i, 0); @@ -3387,8 +3488,9 @@ void phydm_shift_txagc(void *dm_void, u32 *const val, u32 *_used, char *output, rpt &= phydm_api_set_txagc(dm, pow, path, i, 1); } } else if (dm->support_ic_type & - (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8814C | - ODM_RTL8812F | ODM_RTL8197G | ODM_RTL8723F)) { + (ODM_RTL8822C | ODM_RTL8814B | ODM_RTL8814C |\ + ODM_RTL8812F | ODM_RTL8197G | ODM_RTL8723F |\ + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E)) { rpt &= phydm_api_shift_txagc(dm, val[3], path, 1); } } @@ -3447,6 +3549,10 @@ void phydm_set_txagc_dbg(void *dm_void, char input[][16], u32 *_used, config_phydm_write_txagc_8814b(dm, var1[3], (enum rf_path)var1[1], (u8)var1[2]); + #elif (defined(CONFIG_TXAGC_DEBUG_8822E)) + config_phydm_write_txagc_8822e(dm, var1[3], + (enum rf_path)var1[1], + (u8)var1[2]); #else phydm_set_txagc(dm, (u32 *)var1, &used, output, &out_len); #endif @@ -3484,6 +3590,16 @@ void phydm_set_txagc_dbg(void *dm_void, char input[][16], u32 *_used, config_phydm_set_txagc_to_hw_8814b(dm); dm->is_disable_phy_api = true; } + #elif (defined(CONFIG_TXAGC_DEBUG_8822E)) + else if (var1[0] == 3) { + dm->is_disable_phy_api = false; + phydm_txagc_tab_buff_show_8822e(dm); + dm->is_disable_phy_api = true; + } else if (var1[0] == 4) { + dm->is_disable_phy_api = false; + config_phydm_set_txagc_to_hw_8822e(dm); + dm->is_disable_phy_api = true; + } #endif *_used = used; @@ -3598,6 +3714,9 @@ void phydm_debug_trace(void *dm_void, char input[][16], u32 *_used, PDM_SNPF(out_len, used, output + used, out_len - used, "18. (( %s ))LNA_SAT_CHK\n", ((comp & DBG_LNA_SAT_CHK) ? ("V") : ("."))); + PDM_SNPF(out_len, used, output + used, out_len - used, + "19. (( %s ))COMMON_OTHER\n", + ((comp & DBG_CMN_OTHER) ? ("V") : ("."))); PDM_SNPF(out_len, used, output + used, out_len - used, "20. (( %s ))PHY_STATUS\n", ((comp & DBG_PHY_STATUS) ? ("V") : ("."))); @@ -3674,7 +3793,7 @@ void phydm_fw_debug_trace(void *dm_void, char input[][16], u32 *_used, u32 val[10] = {0}; u8 i, input_idx = 0; char help[] = "-h"; - u32 pre_fw_debug_components = 0, one = 1; + u32 one = 1; u32 comp = 0; for (i = 0; i < 5; i++) { @@ -3685,7 +3804,6 @@ void phydm_fw_debug_trace(void *dm_void, char input[][16], u32 *_used, if (input_idx == 0) return; - pre_fw_debug_components = dm->fw_debug_components; comp = dm->fw_debug_components; if ((strcmp(input[1], help) == 0)) { @@ -3819,13 +3937,25 @@ void phydm_dump_bb_reg_jgr3(void *dm_void, u32 *_used, char *output, out_len - used, "0x%04x 0x%08x\n", addr, odm_get_bb_reg(dm, addr, MASKDWORD)); + #if (defined(RTL8735B_SUPPORT)) + if (dm->support_ic_type & (ODM_RTL8735B)) { + for (addr = 0x1b00; addr < 0x1bff; addr += 4) { + PDM_VAST_SNPF(out_len, used, output + used, + out_len - used, "0x%04x 0x%08x\n", + addr, + odm_get_bb_reg(dm, addr, + MASKDWORD)); + } + } + #endif + for (addr = 0x1c00; addr < 0x1eff; addr += 4) PDM_VAST_SNPF(out_len, used, output + used, out_len - used, "0x%04x 0x%08x\n", addr, odm_get_bb_reg(dm, addr, MASKDWORD)); - #if (defined(RTL8723F_SUPPORT)) - if (dm->support_ic_type & ODM_RTL8723F) { + #if (defined(RTL8723F_SUPPORT) || defined(RTL8735B_SUPPORT) || defined(RTL8730A_SUPPORT)) + if (dm->support_ic_type & (ODM_RTL8723F| ODM_RTL8735B | ODM_RTL8730A)) { for (addr = 0x2a00; addr < 0x2a5c; addr += 4) { PDM_VAST_SNPF(out_len, used, output + used, out_len - used, "0x%04x 0x%08x\n", @@ -3841,8 +3971,8 @@ void phydm_dump_bb_reg_jgr3(void *dm_void, u32 *_used, char *output, out_len - used, "0x%04x 0x%08x\n", addr, odm_get_bb_reg(dm, addr, MASKDWORD)); - #if (defined(RTL8723F_SUPPORT)) - if (dm->support_ic_type & ODM_RTL8723F) { + #if (defined(RTL8723F_SUPPORT) || defined(RTL8735B_SUPPORT) || defined(RTL8730A_SUPPORT)) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { for (addr = 0x4300; addr < 0x43bf; addr += 4) { PDM_VAST_SNPF(out_len, used, output + used, out_len - used, "0x%04x 0x%08x\n", @@ -3883,8 +4013,8 @@ void phydm_dump_bb_reg2_jgr3(void *dm_void, u32 *_used, char *output, PDM_VAST_SNPF(out_len, used, output + used, out_len - used, "------ BB report-register start ------\n"); - #if (defined(RTL8723F_SUPPORT)) - if (dm->support_ic_type & ODM_RTL8723F) { + #if (defined(RTL8723F_SUPPORT) || defined(RTL8735B_SUPPORT) || defined(RTL8730A_SUPPORT)) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { for (addr = 0x2aa0; addr < 0x2aff; addr += 4) { PDM_VAST_SNPF(out_len, used, output + used, out_len - used, "0x%04x 0x%08x\n", @@ -3900,6 +4030,17 @@ void phydm_dump_bb_reg2_jgr3(void *dm_void, u32 *_used, char *output, addr, odm_get_bb_reg(dm, addr, MASKDWORD)); } + #if (defined(RTL8822E_SUPPORT)) + if (dm->support_ic_type & (ODM_RTL8822E)) { + for (addr = 0x3800; addr < 0x39ff; addr += 4) { + PDM_VAST_SNPF(out_len, used, output + used, + out_len - used, "0x%04x 0x%08x\n", + addr, + odm_get_bb_reg(dm, addr, MASKDWORD)); + } + } + #endif + *_used = used; *_out_len = out_len; } @@ -4220,7 +4361,8 @@ void phydm_show_rx_rate(void *dm_void, char input[][16], u32 *_used, char *output, u32 *_out_len) { #if (RTL8822B_SUPPORT || RTL8821C_SUPPORT || RTL8814B_SUPPORT ||\ - RTL8195B_SUPPORT || RTL8822C_SUPPORT || RTL8723F_SUPPORT) + RTL8195B_SUPPORT || RTL8822C_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8822E_SUPPORT) struct dm_struct *dm = (struct dm_struct *)dm_void; struct odm_phy_dbg_info *dbg = &dm->phy_dbg_info; u32 used = *_used; @@ -4306,7 +4448,7 @@ void phydm_per_tone_evm(void *dm_void, char input[][16], u32 *_used, char *output, u32 *_out_len) { struct dm_struct *dm = (struct dm_struct *)dm_void; - u8 i, j; + u32 i, j; u32 used = *_used; u32 out_len = *_out_len; u32 var1[4] = {0}; @@ -4314,6 +4456,10 @@ void phydm_per_tone_evm(void *dm_void, char input[][16], u32 *_used, s8 rxevm_0, rxevm_1; s32 avg_num, evm_tone_0[256] = {0}, evm_tone_1[256] = {0}; s32 rxevm_sum_0, rxevm_sum_1; + static char bw[CHANNEL_WIDTH_MAX+1][MAX_ARGC] = { {"20"}, {"40"}, + {"80"}, {"160"}, + {"80+80"}, {"5"}, + {"10"}, {"MAX"}}; if (dm->support_ic_type & ODM_IC_11N_SERIES) { pr_debug("n series not support yet !\n"); @@ -4337,8 +4483,15 @@ void phydm_per_tone_evm(void *dm_void, char input[][16], u32 *_used, return; } - pr_debug("ID=((%d)), BW=((%d)), fc=((CH-%d))\n", dm->curr_station_id, - 20 << *dm->band_width, *dm->channel); + if (round > 10000) + round = 10000; + if (avg_num > 10000) + avg_num = 10000; + if (avg_num == 0) + avg_num = 1; + + pr_debug("ID=((%d)), BW=((%s)), fc=((CH-%d))\n", dm->curr_station_id, + bw[*dm->band_width], *dm->channel); pr_debug("avg_num =((%d)), round =((%d))\n", avg_num, round); #if (DM_ODM_SUPPORT_TYPE & ODM_AP) watchdog_stop(dm->priv); @@ -4350,7 +4503,7 @@ void phydm_per_tone_evm(void *dm_void, char input[][16], u32 *_used, odm_set_bb_reg(dm, R_0x8c4, 0xff8, tone_num); rxevm_sum_0 = 0; rxevm_sum_1 = 0; - for (i = 0; i < avg_num; i++) { + for (i = 0; i < (u32)avg_num; i++) { val = odm_read_4byte(dm, R_0xf8c); rxevm_0 = (s8)((val & MASKBYTE2) >> 16); @@ -4377,7 +4530,7 @@ void phydm_per_tone_evm(void *dm_void, char input[][16], u32 *_used, odm_set_bb_reg(dm, R_0x8c4, 0xff8, tone_num); rxevm_sum_0 = 0; rxevm_sum_1 = 0; - for (i = 0; i < avg_num; i++) { + for (i = 0; i < (u32)avg_num; i++) { val = odm_read_4byte(dm, R_0xf8c); rxevm_0 = (s8)((val & MASKBYTE2) >> 16); @@ -4404,7 +4557,7 @@ void phydm_per_tone_evm(void *dm_void, char input[][16], u32 *_used, odm_set_bb_reg(dm, R_0x8c4, 0xff8, tone_num); rxevm_sum_0 = 0; rxevm_sum_1 = 0; - for (i = 0; i < avg_num; i++) { + for (i = 0; i < (u32)avg_num; i++) { val = odm_read_4byte(dm, R_0xf8c); rxevm_0 = (s8)((val & MASKBYTE2) >> 16); @@ -4432,7 +4585,7 @@ void phydm_per_tone_evm(void *dm_void, char input[][16], u32 *_used, odm_set_bb_reg(dm, R_0x8c4, 0xff8, tone_num); rxevm_sum_0 = 0; rxevm_sum_1 = 0; - for (i = 0; i < avg_num; i++) { + for (i = 0; i < (u32)avg_num; i++) { val = odm_read_4byte(dm, R_0xf8c); rxevm_0 = (s8)((val & MASKBYTE2) >> 16); @@ -4459,7 +4612,7 @@ void phydm_per_tone_evm(void *dm_void, char input[][16], u32 *_used, odm_set_bb_reg(dm, R_0x8c4, 0xff8, tone_num); rxevm_sum_0 = 0; rxevm_sum_1 = 0; - for (i = 0; i < avg_num; i++) { + for (i = 0; i < (u32)avg_num; i++) { val = odm_read_4byte(dm, R_0xf8c); rxevm_0 = (s8)((val & MASKBYTE2) >> 16); @@ -4486,7 +4639,7 @@ void phydm_per_tone_evm(void *dm_void, char input[][16], u32 *_used, odm_set_bb_reg(dm, R_0x8c4, 0xff8, tone_num); rxevm_sum_0 = 0; rxevm_sum_1 = 0; - for (i = 0; i < avg_num; i++) { + for (i = 0; i < (u32)avg_num; i++) { val = odm_read_4byte(dm, R_0xf8c); rxevm_0 = (s8)((val & MASKBYTE2) >> 16); @@ -4787,31 +4940,34 @@ void phydm_mp_dbg(void *dm_void, char input[][16], u32 *_used, char *output, u8 tmp_snr_avg[4]; u8 tmp_evm_avg[4]; u32 tmp_cnt = 0; - char buf[PHYDM_SNPRINT_SIZE] = {0}; u32 used = *_used; u32 out_len = *_out_len; u32 var1[10] = {0}; u16 buf_size = PHYDM_SNPRINT_SIZE; u16 th_size = PHY_HIST_SIZE - 1; u8 i = 0; + static char bw[CHANNEL_WIDTH_MAX+1][MAX_ARGC] = { {"20"}, {"40"}, + {"80"}, {"160"}, + {"80+80"}, {"5"}, + {"10"}, {"MAX"}}; if (!(*dm->mp_mode)) return; PDM_SNPF(out_len, used, output + used, out_len - used, - "BW=((%d)), fc=((CH-%d))\n", - 20 << *dm->band_width, *dm->channel); + "BW=((%s)), fc=((CH-%d))\n", + bw[*dm->band_width], *dm->channel); /*@===[PHY Histogram]================================================*/ PDM_SNPF(out_len, used, output + used, out_len - used, "[PHY Histogram] ==============>\n"); /*@===[Threshold]===*/ - phydm_print_hist_2_buf(dm, dbg_i->evm_hist_th, th_size, buf, buf_size); + phydm_print_hist_2_buf(dm, dbg_i->evm_hist_th, th_size, dm->dbg_buf, buf_size); PDM_SNPF(out_len, used, output + used, out_len - used, - "%-16s=%s\n", "[EVM_TH]", buf); - phydm_print_hist_2_buf(dm, dbg_i->snr_hist_th, th_size, buf, buf_size); + "%-16s=%s\n", "[EVM_TH]", dm->dbg_buf); + phydm_print_hist_2_buf(dm, dbg_i->snr_hist_th, th_size, dm->dbg_buf, buf_size); PDM_SNPF(out_len, used, output + used, out_len - used, - "%-16s=%s\n", "[SNR_TH]", buf); + "%-16s=%s\n", "[SNR_TH]", dm->dbg_buf); /*@===[OFDM]===*/ phydm_nss_hitogram_mp(dm, PDM_OFDM, &used, output, &out_len); /*@===[1-SS]===*/ @@ -5054,12 +5210,15 @@ void phydm_reg_monitor(void *dm_void, char input[][16], u32 *_used, *_out_len = out_len; } -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) u16 phydm_get_agc_rf_gain(void *dm_void, boolean is_mod, u8 tab, u8 mp_gain_i) { struct dm_struct *dm = (struct dm_struct *)dm_void; u16 rf_gain = 0x0; + if (tab >= 16 || mp_gain_i >= 64) + return rf_gain; + if (is_mod) rf_gain = dm->agc_rf_gain[tab][mp_gain_i]; else @@ -5083,8 +5242,8 @@ void phydm_get_rxagc_table_dbg(void *dm_void, char input[][16], u32 *_used, u16 rf_gain = 0; u8 i = 0; -#if (RTL8822C_SUPPORT) - if (!(dm->support_ic_type & ODM_RTL8822C)) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) + if (!(dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E))) return; if ((strcmp(input[1], help) == 0)) { @@ -5139,8 +5298,8 @@ void phydm_shift_rxagc_table_dbg(void *dm_void, char input[][16], u32 *_used, u8 i = 0; u16 value_db = 0; -#if (RTL8822C_SUPPORT) - if (!(dm->support_ic_type & ODM_RTL8822C)) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) + if (!(dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8822E))) return; if ((strcmp(input[1], help) == 0)) { @@ -5188,6 +5347,10 @@ void phydm_spur_detect_dbg(void *dm_void, char input[][16], u32 *_used, "{If CSI always ON (Mode 2 or 4) -> CSI wgt manual(0~7)}\n"); PDM_SNPF(out_len, used, output + used, out_len - used, "{5: Adjust CSI weight threshold} {0:-,1:+} {th offset}\n"); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{6: PSD trials} {log2(sw): %d} {log2(hw): %d}\n", + dm->psd_trials_sw_log2, + dm->psd_trials_hw_log2); } else { for (i = 0; i < 10; i++) { if (input[i + 1]) @@ -5222,6 +5385,13 @@ void phydm_spur_detect_dbg(void *dm_void, char input[][16], u32 *_used, PDM_SNPF(out_len, used, output + used, out_len - used, "--%d--|", i); PDM_SNPF(out_len, used, output + used, out_len - used, "\n"); + } else if (var1[0] == 6) { + dm->psd_trials_sw_log2 = (u8)var1[1]; + dm->psd_trials_hw_log2 = (u8)var1[2]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "PSD trials (log2(sw),log2(hw))=(%2d,%2d)\n", + dm->psd_trials_sw_log2, + dm->psd_trials_hw_log2); } else { PDM_SNPF(out_len, used, output + used, out_len - used, "Spur detection mode invalid!\n"); @@ -5843,7 +6013,7 @@ s32 phydm_cmd(struct dm_struct *dm, char *input, u32 in_len, u8 flag, { char *token; u32 argc = 0; - char argv[MAX_ARGC][MAX_ARGV]; + static char argv[MAX_ARGC][MAX_ARGV]; do { token = strsep(&input, ", "); @@ -6187,11 +6357,11 @@ void phydm_fw_trace_handler_8051(void *dm_void, u8 *buffer, u8 cmd_len) if (cmd_len > 127) return; - extend_c2h_sub_id = buffer[0]; - extend_c2h_dbg_len = buffer[1]; extend_c2h_dbg_content = buffer + 2; /*@DbgSeq+DbgContent for show HEX*/ #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + extend_c2h_sub_id = buffer[0]; + extend_c2h_dbg_len = buffer[1]; RT_DISP(FC2H, C2H_Summary, ("[Extend C2H packet], Extend_c2hSubId=0x%x, extend_c2h_dbg_len=%d\n", extend_c2h_sub_id, extend_c2h_dbg_len)); @@ -6200,10 +6370,11 @@ void phydm_fw_trace_handler_8051(void *dm_void, u8 *buffer, u8 cmd_len) go_backfor_aggre_dbg_pkt: i = 0; - extend_c2h_dbg_seq = buffer[2]; + extend_c2h_dbg_content = buffer + 3; #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + extend_c2h_dbg_seq = buffer[2]; RT_DISP(FC2H, C2H_Summary, ("[RTKFW, SEQ= %d] :", extend_c2h_dbg_seq)); #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dfs.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dfs.c index 983296f9a..db8a6c00e 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dfs.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dfs.c @@ -72,8 +72,9 @@ void phydm_radar_detect_reset(void *dm_void) { struct dm_struct *dm = (struct dm_struct *)dm_void; - if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8822C | ODM_RTL8812F | - ODM_RTL8197G | ODM_RTL8723F)) { + if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8822C | ODM_RTL8812F |\ + ODM_RTL8197G | ODM_RTL8723F | ODM_RTL8735B |\ + ODM_RTL8730A | ODM_RTL8822E)) { odm_set_bb_reg(dm, R_0xa40, BIT(15), 0); odm_set_bb_reg(dm, R_0xa40, BIT(15), 1); #if (RTL8721D_SUPPORT) @@ -99,8 +100,9 @@ void phydm_radar_detect_disable(void *dm_void) { struct dm_struct *dm = (struct dm_struct *)dm_void; - if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8822C | ODM_RTL8812F | - ODM_RTL8197G | ODM_RTL8723F)) + if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8822C | ODM_RTL8812F |\ + ODM_RTL8197G | ODM_RTL8723F | ODM_RTL8735B |\ + ODM_RTL8730A | ODM_RTL8822E)) odm_set_bb_reg(dm, R_0xa40, BIT(15), 0); else if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) { if (dm->seg1_dfs_flag == 1) { @@ -257,40 +259,40 @@ void phydm_radar_detect_enable(void *dm_void) if (region_domain == PHYDM_DFS_DOMAIN_ETSI) { odm_set_bb_reg(dm, R_0x918, MASKDWORD, 0x1c16acdf); - odm_set_bb_reg(dm, R_0x924, MASKDWORD, 0x095a8500); - odm_set_bb_reg(dm, R_0x91c, MASKDWORD, 0x0fc01a1f); + odm_set_bb_reg(dm, R_0x924, MASKDWORD, 0x095a8562); + odm_set_bb_reg(dm, R_0x91c, MASKDWORD, 0x0fc01a24); odm_set_bb_reg(dm, R_0x920, MASKDWORD, 0xe0f57204); } else if (region_domain == PHYDM_DFS_DOMAIN_MKK) { - odm_set_bb_reg(dm, R_0x924, MASKDWORD, 0x095a8500); + odm_set_bb_reg(dm, R_0x924, MASKDWORD, 0x095a8562); odm_set_bb_reg(dm, R_0x920, MASKDWORD, 0xe0d67234); if (c_channel >= 52 && c_channel <= 64) { odm_set_bb_reg(dm, R_0x918, MASKDWORD, 0x1c16ecdf); odm_set_bb_reg(dm, R_0x91c, MASKDWORD, - 0x0f141a1f); + 0x0f141a24); } else { odm_set_bb_reg(dm, R_0x918, MASKDWORD, 0x1c166cdf); if (band_width == CHANNEL_WIDTH_20) odm_set_bb_reg(dm, R_0x91c, MASKDWORD, - 0x64721a1f); + 0x64721a24); else odm_set_bb_reg(dm, R_0x91c, MASKDWORD, - 0x68721a1f); + 0x68721a24); } } else if (region_domain == PHYDM_DFS_DOMAIN_FCC) { odm_set_bb_reg(dm, R_0x918, MASKDWORD, 0x1c176cdf); - odm_set_bb_reg(dm, R_0x924, MASKDWORD, 0x095a8400); + odm_set_bb_reg(dm, R_0x924, MASKDWORD, 0x095a8462); odm_set_bb_reg(dm, R_0x920, MASKDWORD, 0xe076d231); if (band_width == CHANNEL_WIDTH_20) odm_set_bb_reg(dm, R_0x91c, MASKDWORD, - 0x64901a1f); + 0x64901a24); else odm_set_bb_reg(dm, R_0x91c, MASKDWORD, - 0x62901a1f); + 0x62901a24); } else { /* not supported */ @@ -629,16 +631,18 @@ void phydm_dfs_parameter_init(void *dm_void) } /*@for dfs mode*/ + dfs->dbg_mode = 0; dfs->force_TP_mode = 0; dfs->sw_trigger_mode = 0; dfs->det_print = 0; - dfs->det_print2 = 0; + dfs->det_print2 = 0; // HW detect print in n-series + dfs->det_print_sw = 0; // SW detect print dfs->print_hist_rpt = 0; if (dm->support_ic_type & (ODM_RTL8814A | ODM_RTL8822B | ODM_RTL8821C)) dfs->hist_cond_on = 1; else dfs->hist_cond_on = 0; - if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8822C)) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8822C | ODM_RTL8822E)) { dfs->det_print_jar3 = 1; dfs->nhm_dfs_en = true; dfs->det_jar3_en = true; @@ -654,6 +658,8 @@ void phydm_dfs_parameter_init(void *dm_void) dfs->loct_flag_en = true; dfs->nhm_cnt_th = 4; dfs->nhm_dty_th = 40; + dfs->fa_cnt_th = 3000; + dfs->fa_cnt_th_backup = dfs->fa_cnt_th; /*@for jgar3*/ dfs->pri_var_offset = 2; @@ -670,9 +676,19 @@ void phydm_dfs_parameter_init(void *dm_void) dfs->pwdb_scalar_factor = 12; /*@for dfs histogram*/ - dfs->pri_hist_th = 5; - dfs->pri_sum_g1_th = 9; - dfs->pri_sum_g5_th = 5; + dfs->pri_hist_idle_th = 4; + dfs->pri_hist_th = 2; // due to ESTI type1 in TP (may set to 3 to prevent FRD) + dfs->pri_sum_g1_th = 0; + dfs->pri_sum_g0_idle_th = 0; + dfs->pri_sum_g0_th = 0; + dfs->pri_sum_g5_idle_th = 0; + dfs->pri_sum_g5_th = 2; + dfs->pw_sum_g0_idle_th = 10; + dfs->pw_sum_g0_th = 20; + dfs->pw_sum_g5_idle_th = 0; + dfs->pw_sum_g5_th = 0; + dfs->pw_pri_valid_set_idle_th = 3; + dfs->pw_pri_valid_set_th = 5; dfs->pri_sum_g1_fcc_th = 4; /*@FCC Type6*/ dfs->pri_sum_g3_fcc_th = 6; dfs->pri_sum_safe_th = 50; @@ -680,7 +696,8 @@ void phydm_dfs_parameter_init(void *dm_void) dfs->pri_sum_type4_th = 16; dfs->pri_sum_type6_th = 12; dfs->pri_sum_g5_under_g1_th = 4; - dfs->pri_pw_diff_th = 4; + dfs->pri_pw_diff_idle_th = 6; + dfs->pri_pw_diff_th = 10; dfs->pri_pw_diff_fcc_th = 8; dfs->pri_pw_diff_fcc_idle_th = 2; dfs->pri_pw_diff_w53_th = 10; @@ -712,6 +729,8 @@ void phydm_dfs_dynamic_setting( u8 peak_window_cur = 0; u8 region_domain = dm->dfs_region_domain; u8 c_channel = *dm->channel; + u8 band_width = *dm->band_width; + u32 fa_cnt_th = 0; if (dm->rx_tp + dm->tx_tp <= 2) { dfs->idle_mode = 1; @@ -722,6 +741,7 @@ void phydm_dfs_dynamic_setting( } if (dfs->idle_mode == 1) { /*@idle (no traffic)*/ + fa_cnt_th = 110; peak_th_cur = 3; short_pulse_cnt_th_cur = 6; long_pulse_cnt_th_cur = 9; @@ -757,6 +777,12 @@ void phydm_dfs_dynamic_setting( three_peak_th2_cur = 0; } else { /*@in service (with TP)*/ + if (band_width == CHANNEL_WIDTH_40) + fa_cnt_th = 500; + else if (band_width == CHANNEL_WIDTH_80) + fa_cnt_th = 1500; + else + fa_cnt_th = 110; peak_th_cur = 2; short_pulse_cnt_th_cur = 6; long_pulse_cnt_th_cur = 7; @@ -779,11 +805,14 @@ void phydm_dfs_dynamic_setting( short_pulse_cnt_th_cur = 5; /*for 80M FCC*/ } else if (region_domain == PHYDM_DFS_DOMAIN_ETSI) { long_pulse_cnt_th_cur = 15; - short_pulse_cnt_th_cur = 5; + short_pulse_cnt_th_cur = 3; three_peak_opt_cur = 0; } } + if (dm->phydm_sys_up_time <= 62) // in CAC + fa_cnt_th = 3000; + if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { /* if (dfs->peak_th != peak_th_cur) @@ -844,6 +873,10 @@ void phydm_dfs_dynamic_setting( three_peak_th2_cur); } + if (dfs->fa_cnt_th_backup != fa_cnt_th) + dfs->fa_cnt_th = fa_cnt_th; + + dfs->fa_cnt_th_backup = fa_cnt_th; dfs->peak_th = peak_th_cur; dfs->short_pulse_cnt_th = short_pulse_cnt_th_cur; dfs->long_pulse_cnt_th = long_pulse_cnt_th_cur; @@ -869,7 +902,7 @@ phydm_radar_detect_dm_check( u32 reg920_value = 0, reg924_value = 0, radar_rpt_reg_value = 0; u32 regf54_value = 0, regf58_value = 0, regf5c_value = 0; u32 regdf4_value = 0, regf70_value = 0, regf74_value = 0; - #if (RTL8812F_SUPPORT || RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT) + #if (RTL8812F_SUPPORT || RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT ||RTL8822E_SUPPORT) u32 rega40_value = 0, rega44_value = 0, rega48_value = 0; u32 rega4c_value = 0, rega50_value = 0, rega54_value = 0; u32 reg_2e08 = 0, reg_2e24 = 0, reg_2e28 = 0; @@ -891,7 +924,7 @@ phydm_radar_detect_dm_check( if (dm->support_ic_type & ODM_IC_JGR3_SERIES) /*fa_count_cur = (u16)odm_get_bb_reg(dm, R_0x2d00, MASKLWORD);*/ /*1-sec period*/ - fa_count_cur = fa_t->cnt_all * dfs->dfs_polling_time / 1000; + fa_count_cur = (u16)(fa_t->cnt_all * dfs->dfs_polling_time / 1000); #if (RTL8721D_SUPPORT) else if (dm->support_ic_type & (ODM_RTL8721D)) { fa_count_cur = (u16)odm_get_bb_reg(dm, @@ -937,8 +970,9 @@ phydm_radar_detect_dm_check( else index = 5 + dfs->mask_idx - 2; - if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8822C | ODM_RTL8812F | - ODM_RTL8197G| ODM_RTL8723F)) { + if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8822C | ODM_RTL8812F |\ + ODM_RTL8197G| ODM_RTL8723F | ODM_RTL8735B |\ + ODM_RTL8730A | ODM_RTL8822E)) { radar_rpt_reg_value = odm_get_bb_reg(dm, R_0x2e00, 0xffffffff); short_pulse_cnt_cur = (u16)((radar_rpt_reg_value & 0x000ff800) >> 11); @@ -995,6 +1029,7 @@ phydm_radar_detect_dm_check( dfs->long_pulse_cnt_pre = long_pulse_cnt_cur; total_pulse_count_inc = short_pulse_cnt_inc + long_pulse_cnt_inc; + //PHYDM_DBG(dm, DBG_DFS, "total_pulse_count_inc=%d\n", total_pulse_count_inc); if (dfs->det_print) { PHYDM_DBG(dm, DBG_DFS, @@ -1020,7 +1055,8 @@ phydm_radar_detect_dm_check( dfs->igi_cur, dfs->st_l2h_cur, radar_rpt_reg_value, short_pulse_cnt_inc, long_pulse_cnt_inc); - #if (RTL8812F_SUPPORT || RTL8822C_SUPPORT || RTL8814B_SUPPORT) + #if (RTL8812F_SUPPORT || RTL8822C_SUPPORT || RTL8814B_SUPPORT ||\ + RTL8822E_SUPPORT) rega40_value = odm_get_bb_reg(dm, R_0xa40, MASKDWORD); rega44_value = odm_get_bb_reg(dm, R_0xa44, MASKDWORD); rega48_value = odm_get_bb_reg(dm, R_0xa48, MASKDWORD); @@ -1068,15 +1104,19 @@ phydm_radar_detect_dm_check( } if (tri_long_pulse){ - PHYDM_DBG(dm, DBG_DFS, "\n"); - PHYDM_DBG(dm, DBG_DFS, "tri_long_pulse = %d\n", tri_long_pulse); + if (dfs->det_print2 ||dfs->det_print_jar3) { + PHYDM_DBG(dm, DBG_DFS, "\n"); + PHYDM_DBG(dm, DBG_DFS, "tri_long_pulse = %d\n", tri_long_pulse); + } dfs->pulse_flag_hist[dfs->mask_idx] = 1; dfs->pulse_type_hist[dfs->mask_idx] = 1; } else if (tri_short_pulse){ - PHYDM_DBG(dm, DBG_DFS, "\n"); - PHYDM_DBG(dm, DBG_DFS, "tri_short_pulse = %d\n", tri_short_pulse); + if (dfs->det_print2 ||dfs->det_print_jar3) { + PHYDM_DBG(dm, DBG_DFS, "\n"); + PHYDM_DBG(dm, DBG_DFS, "tri_short_pulse = %d\n", tri_short_pulse); + } dfs->pulse_flag_hist[dfs->mask_idx] = 1; dfs->pulse_type_hist[dfs->mask_idx] = 0; } @@ -1108,7 +1148,7 @@ phydm_radar_detect_dm_check( } st_l2h_new = dfs->st_l2h_cur; -#if (RTL8723F_SUPPORT||RTL8822C_SUPPORT) +#if (RTL8723F_SUPPORT||RTL8822C_SUPPORT || RTL8822E_SUPPORT) if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { if (dfs->pulse_type_hist[dfs->mask_idx]) dfs->radar_type = 1; @@ -1174,7 +1214,7 @@ phydm_radar_detect_dm_check( if (dfs->mask_hist_checked <= 5) dfs->mask_hist_checked++; - if (dfs->mask_hist_checked >= 5 && dfs->pulse_flag_hist[dfs->mask_idx]) { + if (dfs->mask_hist_checked >= 5 && dfs->pulse_flag_hist[index]) { if (sum <= 2) { if (dfs->hist_cond_on) { /*return the value from hist_radar_detected*/ @@ -1265,7 +1305,7 @@ phydm_radar_detect_dm_check( return radar_detected; } -#if (RTL8723F_SUPPORT || RTL8822C_SUPPORT) +#if (RTL8723F_SUPPORT || RTL8822C_SUPPORT || RTL8822E_SUPPORT) void phydm_dfs_rpt_distinguish(void *dm_void) { struct dm_struct *dm = (struct dm_struct *)dm_void; @@ -1355,8 +1395,8 @@ void phydm_dfs_rpt_distinguish(void *dm_void) dfs->nhm_dfs_flag = false; dfs->b_flag = false; - short_cnt_th = odm_get_bb_reg(dm, 0xa50, 0x00f00000); - long_cnt_th = odm_get_bb_reg(dm, 0xa4c, 0xf0000000); + short_cnt_th = (u8)odm_get_bb_reg(dm, 0xa50, 0x00f00000); + long_cnt_th = (u8)odm_get_bb_reg(dm, 0xa4c, 0xf0000000); if (dfs->radar_type) loop_cnt = long_cnt_th + 2; @@ -1565,8 +1605,8 @@ void phydm_dfs_rpt_distinguish(void *dm_void) } for (i = 0; i < loop_cnt; i++) { - dfs->pw_rslt[i] = pw_rpt_set[i]; - dfs->pri_rslt[i] = pri_rpt_set[i]; + dfs->pw_rslt[i] = (u8)pw_rpt_set[i]; + dfs->pri_rslt[i] = (u8)pri_rpt_set[i]; for (j = 0; j < rdr_num; j++) { if (dfs->radar_type) { if ((pw_lth[j] <= dfs->pw_rslt[i]) && (dfs->pw_rslt[i] <= pw_uth[j])) @@ -1585,12 +1625,13 @@ void phydm_dfs_rpt_distinguish(void *dm_void) } /* Pattern Judgement */ - for (i = 0; i < rdr_num; i++){ - if (rdr_cnt[i] >= cnt_th){ + for (i = 0; i < rdr_num; i++) { + if (rdr_cnt[i] >= cnt_th) { dfs->pw_flag = true; rdr_tmp = i; - } - } + } + } + //PHYDM_DBG(dm, DBG_DFS, "rdr_tmp=%d\n", rdr_tmp); /* Add NHM to decide the validity of the three flags */ /* Use for chaotic open space */ @@ -1820,13 +1861,13 @@ void phydm_dfs_histogram_radar_distinguish( u8 max_pri_cnt_fcc_g1_th = 0, max_pri_cnt_fcc_g3_th = 0; u8 safe_pri_pw_diff_th = 0, safe_pri_pw_diff_fcc_th = 0; u8 safe_pri_pw_diff_w53_th = 0, safe_pri_pw_diff_fcc_idle_th = 0; - u8 j = 0; + u16 j = 0; u32 dfs_hist1_pw = 0, dfs_hist2_pw = 0, g_pw[6] = {0}; u32 dfs_hist1_pri = 0, dfs_hist2_pri = 0, g_pri[6] = {0}; u8 pw_sum_g0g5 = 0, pw_sum_g1g2g3g4 = 0; u8 pri_sum_g0g5 = 0, pri_sum_g1g2g3g4 = 0; u16 pw_sum_ss_g1g2g3g4 = 0, pri_sum_ss_g1g2g3g4 = 0; - u8 max_pri_cnt = 0, max_pw_cnt = 0; + u8 max_pri_cnt = 0, max_pw_cnt = 0, valid_set = 0; #if (RTL8721D_SUPPORT) if (dm->support_ic_type & (ODM_RTL8721D)) return; @@ -1863,6 +1904,7 @@ void phydm_dfs_histogram_radar_distinguish( dfs->pri_cond3 = 0; dfs->pri_cond4 = 0; dfs->pri_cond5 = 0; + dfs->pri_cond6 = 0; dfs->pw_cond1 = 0; dfs->pw_cond2 = 0; dfs->pw_cond3 = 0; @@ -1881,12 +1923,14 @@ void phydm_dfs_histogram_radar_distinguish( for (i = 0; i < 6; i++) { dfs->pw_hold_sum[i] = 0; dfs->pri_hold_sum[i] = 0; + dfs->pw_long_hold_sum[i] = 0; + dfs->pri_long_hold_sum[i] = 0; } if (dfs->idle_mode == 1) - pri_th = dfs->pri_hist_th; + pri_th = dfs->pri_hist_idle_th; else - pri_th = dfs->pri_hist_th - 1; + pri_th = dfs->pri_hist_th; for (i = 0; i < 6; i++) { dfs->pw_hold[dfs->hist_idx][i] = (u8)g_pw[i]; @@ -1902,18 +1946,23 @@ void phydm_dfs_histogram_radar_distinguish( dfs->pri_hold[(dfs->hist_idx + 2) % 3][i]; } /*@For long radar type*/ - for (j = 1; j < 4; j++) { - dfs->pw_long_hold_sum[i] = dfs->pw_long_hold_sum[i] + - dfs->pw_hold[(dfs->hist_long_idx + j) % 4][i]; - dfs->pri_long_hold_sum[i] = dfs->pri_long_hold_sum[i] + - dfs->pri_hold[(dfs->hist_long_idx + j) % 4][i]; + for (i = 0; i < 6; i++) { + dfs->pw_long_hold[dfs->hist_long_idx][i] = (u8)g_pw[i]; + dfs->pri_long_hold[dfs->hist_long_idx][i] = (u8)g_pri[i]; + /*collect whole histogram report may take some time, so we add the counter of 299 time slots for long radar*/ + for (j = 1; j < 300; j++) { + dfs->pw_long_hold_sum[i] = dfs->pw_long_hold_sum[i] + + dfs->pw_long_hold[(dfs->hist_long_idx + j) % 300][i]; + dfs->pri_long_hold_sum[i] = dfs->pri_long_hold_sum[i] + + dfs->pri_long_hold[(dfs->hist_long_idx + j) % 300][i]; + } } dfs->hist_idx++; if (dfs->hist_idx == 3) dfs->hist_idx = 0; dfs->hist_long_idx++; - if (dfs->hist_long_idx == 4) + if (dfs->hist_long_idx == 300) dfs->hist_long_idx = 0; max_pri_cnt = 0; @@ -1930,6 +1979,10 @@ void phydm_dfs_histogram_radar_distinguish( /*@g1 to g4 is the reseasonable range of pri and pw*/ for (i = 1; i <= 4; i++) { + if (dfs->pri_hold_sum[i] > 0) + valid_set++; + if (dfs->pw_hold_sum[i]>0) + valid_set++; if (dfs->pri_hold_sum[i] > max_pri_cnt) { max_pri_cnt = dfs->pri_hold_sum[i]; max_pri_idx = i; @@ -2123,12 +2176,23 @@ void phydm_dfs_histogram_radar_distinguish( dfs->pri_cond3 = 1; /*@Cancel the condition that the abs between pri and pw*/ - dfs->pri_cond4 = 1; + if (dfs->idle_mode) { + if (ABS_8(pri_sum_g1g2g3g4 - pw_sum_g1g2g3g4) <= dfs->pri_pw_diff_idle_th) + dfs->pri_cond4 = 1; + if (dfs->pri_hold_sum[5] <= dfs->pri_sum_g5_idle_th) + dfs->pri_cond5 = 1; + if (dfs->pri_hold_sum[0] <= dfs->pri_sum_g0_idle_th) + dfs->pri_cond6 = 1; + } else { + if (ABS_8(pri_sum_g1g2g3g4 - pw_sum_g1g2g3g4) <= dfs->pri_pw_diff_th) + dfs->pri_cond4 = 1; + if (dfs->pri_hold_sum[5] <= dfs->pri_sum_g5_th) + dfs->pri_cond5 = 1; + if (dfs->pri_hold_sum[0] <= dfs->pri_sum_g0_th) + dfs->pri_cond6 = 1; + } - if (dfs->pri_hold_sum[5] <= dfs->pri_sum_g5_th) - dfs->pri_cond5 = 1; - - if (band_width == CHANNEL_WIDTH_40) { + /*if (band_width == CHANNEL_WIDTH_40) { if (max_pw_idx == 4) { if (max_pw_cnt >= dfs->type4_pw_max_cnt && pri_sum_g1g2g3g4 >= @@ -2138,13 +2202,28 @@ void phydm_dfs_histogram_radar_distinguish( dfs->pri_type3_4_cond1 = 1; } } - } + }*/ if (dfs->pri_cond1 && dfs->pri_cond2 && - dfs->pri_cond3 && dfs->pri_cond4 && dfs->pri_cond5) + dfs->pri_cond3 && dfs->pri_cond4 && dfs->pri_cond5 && dfs->pri_cond6) dfs->pri_flag = 1; if (((pw_sum_g0g5 + pw_sum_g1g2g3g4) / pw_sum_g0g5 > 2)) + dfs->pw_cond1 = 1; + + if (dfs->idle_mode) { + if (dfs->pw_hold_sum[0] <= dfs->pw_sum_g0_idle_th && dfs->pw_hold_sum[5] <= dfs->pw_sum_g5_idle_th) + dfs->pw_cond2 = 1; + if (valid_set <= dfs->pw_pri_valid_set_idle_th) + dfs->pw_cond3 = 1; + } else { + if (dfs->pw_hold_sum[0] <= dfs->pw_sum_g0_th && dfs->pw_hold_sum[5] <= dfs->pw_sum_g5_th) + dfs->pw_cond2 = 1; + if (valid_set <= dfs->pw_pri_valid_set_th) + dfs->pw_cond3 = 1; + } + + if(dfs->pw_cond1 && dfs->pw_cond2 && dfs->pw_cond3) dfs->pw_flag = 1; /*@max num pri group is g1 means radar type3 or type4*/ @@ -2247,9 +2326,16 @@ boolean phydm_dfs_hist_log(void *dm_void, u8 index) { struct dm_struct *dm = (struct dm_struct *)dm_void; struct _DFS_STATISTICS *dfs = &dm->dfs; + struct phydm_fa_struct *fa_t = &dm->false_alm_cnt; u8 i = 0, j = 0; + u32 fa_cnt = 0; boolean hist_radar_detected = 0; + fa_cnt = fa_t->cnt_all; + + if (dfs->det_print2) + PHYDM_DBG(dm, DBG_DFS, "fa_cnt = %d, fa_cnt_th = %d\n", fa_cnt, dfs->fa_cnt_th); + if (dfs->pulse_type_hist[index] == 0) { dfs->radar_type = 0; if (dfs->pw_flag && dfs->pri_flag && @@ -2259,7 +2345,7 @@ boolean phydm_dfs_hist_log(void *dm_void, u8 index) "Detected type %d radar signal!\n", dfs->radar_type); if (dfs->det_print2) { - PHYDM_DBG(dm, DBG_DFS, + /*PHYDM_DBG(dm, DBG_DFS, "hist_idx= %d\n", (dfs->hist_idx + 3) % 4); for (j = 0; j < 4; j++) { @@ -2277,7 +2363,7 @@ boolean phydm_dfs_hist_log(void *dm_void, u8 index) dfs->pw_hold[j][i]); } PHYDM_DBG(dm, DBG_DFS, "\n"); - } + }*/ PHYDM_DBG(dm, DBG_DFS, "\n"); PHYDM_DBG(dm, DBG_DFS, "idle_mode = %d\n", dfs->idle_mode); @@ -2321,6 +2407,9 @@ boolean phydm_dfs_hist_log(void *dm_void, u8 index) if (dfs->pri_cond5 == 0) PHYDM_DBG(dm, DBG_DFS, "pri_cond5 is not satisfied!\n"); + if (dfs->pri_cond6 == 0) + PHYDM_DBG(dm, DBG_DFS, + "pri_cond6 is not satisfied!\n"); } if (dfs->pulse_flag_hist[index] && dfs->pw_flag == 0) { @@ -2349,7 +2438,7 @@ boolean phydm_dfs_hist_log(void *dm_void, u8 index) PHYDM_DBG(dm, DBG_DFS, "pri_type3_4_cond2 is not satisfied!\n"); } - PHYDM_DBG(dm, DBG_DFS, "hist_idx= %d\n", + /*PHYDM_DBG(dm, DBG_DFS, "hist_idx= %d\n", (dfs->hist_idx + 3) % 4); for (j = 0; j < 4; j++) { for (i = 0; i < 6; i++) { @@ -2366,7 +2455,7 @@ boolean phydm_dfs_hist_log(void *dm_void, u8 index) "pw_hold = %d ", dfs->pw_hold[j][i]); PHYDM_DBG(dm, DBG_DFS, "\n"); - } + }*/ PHYDM_DBG(dm, DBG_DFS, "\n"); PHYDM_DBG(dm, DBG_DFS, "idle_mode = %d\n", dfs->idle_mode); @@ -2409,6 +2498,40 @@ boolean phydm_dfs_hist_log(void *dm_void, u8 index) } } } + + if (hist_radar_detected) { + if (fa_cnt > dfs->fa_cnt_th) { + hist_radar_detected = false; + if(dfs->det_print2 || dfs->det_print_sw) { + PHYDM_DBG(dm, DBG_DFS, "RDR is in FA ENV !!\n"); + } + } + } + + if (hist_radar_detected) { + if (dfs->det_print_sw) { + PHYDM_DBG(dm, DBG_DFS, "\n"); + PHYDM_DBG(dm, DBG_DFS, "fa_cnt = %d, fa_cnt_th = %d\n", fa_cnt, dfs->fa_cnt_th); + PHYDM_DBG(dm, DBG_DFS, "idle_mode = %d\n", + dfs->idle_mode); + PHYDM_DBG(dm, DBG_DFS, + "pw_hold_sum = %d %d %d %d %d %d\n", + dfs->pw_hold_sum[0], + dfs->pw_hold_sum[1], + dfs->pw_hold_sum[2], + dfs->pw_hold_sum[3], + dfs->pw_hold_sum[4], + dfs->pw_hold_sum[5]); + PHYDM_DBG(dm, DBG_DFS, + "pri_hold_sum = %d %d %d %d %d %d\n", + dfs->pri_hold_sum[0], + dfs->pri_hold_sum[1], + dfs->pri_hold_sum[2], + dfs->pri_hold_sum[3], + dfs->pri_hold_sum[4], + dfs->pri_hold_sum[5]); + } + } return hist_radar_detected; } @@ -2601,6 +2724,41 @@ void phydm_dfs_hist_dbg(void *dm_void, char input[][16], u32 *_used, PDM_SNPF(out_len, used, output + used, out_len - used, "{38} dc_cnt_th = %d\n", dfs->dc_cnt_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{39} pri_sum_g0_idle_th = %d\n", + dfs->pri_sum_g0_idle_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{40} pri_sum_g0_th = %d\n", + dfs->pri_sum_g0_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{41} pri_sum_g5_idle_th = %d\n", + dfs->pri_sum_g5_idle_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{42} pw_sum_g0_idle_th = %d\n", + dfs->pw_sum_g0_idle_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{43} pw_sum_g0_th = %d\n", + dfs->pw_sum_g0_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{44} pw_sum_g5_idle_th = %d\n", + dfs->pw_sum_g5_idle_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{45} pw_sum_g5_th = %d\n", + dfs->pw_sum_g5_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{46} pw_pri_valid_set_idle_th = %d\n", + dfs->pw_pri_valid_set_idle_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{47} pw_pri_valid_set_th = %d\n", + dfs->pw_pri_valid_set_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{48} pri_pw_diff_idle_th = %d\n", + dfs->pri_pw_diff_idle_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{49} fa_cnt_th = %d\n", + dfs->fa_cnt_th); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{50} pri_hist_idle_th = %d\n", dfs->pri_hist_idle_th); } else { PHYDM_SSCANF(input[1], DCMD_DECIMAL, &argv[0]); @@ -2803,6 +2961,66 @@ void phydm_dfs_hist_dbg(void *dm_void, char input[][16], u32 *_used, PDM_SNPF(out_len, used, output + used, out_len - used, "dc_cnt_th = %d\n", dfs->dc_cnt_th); + } else if (argv[0] == 39) { + dfs->pri_sum_g0_idle_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pri_sum_g0_idle_th = %d\n", + dfs->pri_sum_g0_idle_th); + } else if (argv[0] == 40) { + dfs->pri_sum_g0_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pri_sum_g0_th = %d\n", + dfs->pri_sum_g0_th); + } else if (argv[0] == 41) { + dfs->pri_sum_g5_idle_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pri_sum_g5_idle_th = %d\n", + dfs->pri_sum_g5_idle_th); + } else if (argv[0] == 42) { + dfs->pw_sum_g0_idle_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pw_sum_g0_idle_th = %d\n", + dfs->pw_sum_g0_idle_th); + } else if (argv[0] == 43) { + dfs->pw_sum_g0_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pw_sum_g0_th = %d\n", + dfs->pw_sum_g0_th); + } else if (argv[0] == 44) { + dfs->pw_sum_g5_idle_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pw_sum_g5_idle_th = %d\n", + dfs->pw_sum_g5_idle_th); + } else if (argv[0] == 45) { + dfs->pw_sum_g5_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pw_sum_g5_th = %d\n", + dfs->pw_sum_g5_th); + } else if (argv[0] == 46) { + dfs->pw_pri_valid_set_idle_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pw_pri_valid_set_idle_th = %d\n", + dfs->pw_pri_valid_set_idle_th); + } else if (argv[0] == 47) { + dfs->pw_pri_valid_set_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pw_pri_valid_set_th = %d\n", + dfs->pw_pri_valid_set_th); + } else if (argv[0] == 48) { + dfs->pri_pw_diff_idle_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pri_pw_diff_idle_th = %d\n", + dfs->pri_pw_diff_idle_th); + } else if (argv[0] == 49) { + dfs->fa_cnt_th = (u32)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "fa_cnt_th = %d\n", + dfs->fa_cnt_th); + } else if (argv[0] == 50) { + dfs->pri_hist_idle_th = (u8)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "pri_hist_idle_th = %d\n", + dfs->pri_hist_idle_th); } } *_used = used; @@ -2814,36 +3032,90 @@ void phydm_dfs_debug(void *dm_void, char input[][16], u32 *_used, { struct dm_struct *dm = (struct dm_struct *)dm_void; struct _DFS_STATISTICS *dfs = &dm->dfs; + char help[] = "-h"; + u32 argv[5] = {0}; u32 used = *_used; u32 out_len = *_out_len; - u32 argv[10] = {0}; - u8 i, input_idx = 0; + u8 i; - for (i = 0; i < 10; i++) { - PHYDM_SSCANF(input[i + 1], DCMD_HEX, &argv[i]); - input_idx++; + if ((strcmp(input[1], help) == 0)) { + PDM_SNPF(out_len, used, output + used, out_len - used, + "{0} dbg_mode = %d\n", dfs->dbg_mode); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{1} sw_trigger_mode = %d\n", dfs->sw_trigger_mode); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{2} force_TP_mode = %d\n", dfs->force_TP_mode); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{3} det_print = %d\n", dfs->det_print); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{4} det_print2 = %d\n", dfs->det_print2); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{5} det_print_sw = %d\n", dfs->det_print_sw); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{6} print_hist_rpt = %d\n", dfs->print_hist_rpt); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{7} hist_cond_on = %d\n", dfs->hist_cond_on); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{8} det_print_jar3 = %d\n", dfs->det_print_jar3); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{9} nhm_dfs_en = %d\n", dfs->nhm_dfs_en); + PDM_SNPF(out_len, used, output + used, out_len - used, + "{10} det_jar3_en = %d\n", dfs->det_jar3_en); + } else { + PHYDM_SSCANF(input[1], DCMD_DECIMAL, &argv[0]); + + for (i = 1; i < 5; i++) { + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, + &argv[i]); + } + if (argv[0] == 0) { + dfs->dbg_mode = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "dbg_mode = %d\n", dfs->dbg_mode); + } else if (argv[0] == 1) { + dfs->sw_trigger_mode = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "sw_trigger_mode = %d\n", dfs->sw_trigger_mode); + } else if (argv[0] == 2) { + dfs->force_TP_mode = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "force_TP_mode = %d\n", dfs->force_TP_mode); + } else if (argv[0] == 3) { + dfs->det_print = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "det_print = %d\n", dfs->det_print); + } else if (argv[0] == 4) { + dfs->det_print2 = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "det_print2 = %d\n", dfs->det_print2); + } else if (argv[0] == 5) { + dfs->det_print_sw = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "det_print_sw = %d\n", dfs->det_print_sw); + } else if (argv[0] == 6) { + dfs->print_hist_rpt = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "print_hist_rpt = %d\n", dfs->print_hist_rpt); + } else if (argv[0] == 7) { + dfs->hist_cond_on = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "hist_cond_on = %d\n", dfs->hist_cond_on); + } else if (argv[0] == 8) { + dfs->det_print_jar3 = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "det_print_jar3 = %d\n", dfs->det_print_jar3); + } else if (argv[0] == 9) { + dfs->nhm_dfs_en = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "nhm_dfs_en = %d\n", dfs->nhm_dfs_en); + } else if (argv[0] == 10) { + dfs->det_jar3_en = (boolean)argv[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, + "det_jar3_en = %d\n", dfs->det_jar3_en); + } } - - if (input_idx == 0) - return; - - dfs->dbg_mode = (boolean)argv[0]; - dfs->sw_trigger_mode = (boolean)argv[1]; - dfs->force_TP_mode = (boolean)argv[2]; - dfs->det_print = (boolean)argv[3]; - dfs->det_print2 = (boolean)argv[4]; - dfs->print_hist_rpt = (boolean)argv[5]; - dfs->hist_cond_on = (boolean)argv[6]; - dfs->det_print_jar3 = (boolean)argv[7]; - dfs->nhm_dfs_en = (boolean)argv[8]; - dfs->det_jar3_en = (boolean)argv[9]; - - PDM_SNPF(out_len, used, output + used, out_len - used, - "dbg_mode: %d, sw_trigger_mode: %d, force_TP_mode: %d, det_print: %d, det_print2: %d, print_hist_rpt: %d, hist_cond_on: %d\n, det_print_jar3: %d, nhm_dfs_en: %d, dfs->det_jar3_en: %d\n", - dfs->dbg_mode, dfs->sw_trigger_mode, dfs->force_TP_mode, - dfs->det_print, dfs->det_print2, dfs->print_hist_rpt, - dfs->hist_cond_on, dfs->det_print_jar3, dfs->nhm_dfs_en, - dfs->det_jar3_en); + *_used = used; + *_out_len = out_len; } u8 phydm_dfs_polling_time(void *dm_void) @@ -2851,7 +3123,7 @@ u8 phydm_dfs_polling_time(void *dm_void) struct dm_struct *dm = (struct dm_struct *)dm_void; struct _DFS_STATISTICS *dfs = &dm->dfs; - if (dm->support_ic_type & (ODM_RTL8814A | ODM_RTL8822B | ODM_RTL8821C | ODM_RTL8822C | ODM_RTL8723F)) + if (dm->support_ic_type & (ODM_RTL8814A | ODM_RTL8822B | ODM_RTL8821C | ODM_RTL8822C | ODM_RTL8723F | ODM_RTL8822E)) dfs->dfs_polling_time = 40; else dfs->dfs_polling_time = 100; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dfs.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dfs.h index c63f237a5..b772c978f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dfs.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dfs.h @@ -72,6 +72,7 @@ struct _DFS_STATISTICS { boolean sw_trigger_mode; boolean det_print; boolean det_print2; + boolean det_print_sw; boolean det_print_jar3; boolean det_jar3_en; boolean radar_type; @@ -83,6 +84,7 @@ struct _DFS_STATISTICS { boolean pri_cond3; boolean pri_cond4; boolean pri_cond5; + boolean pri_cond6; boolean pw_cond1; boolean pw_cond2; boolean pw_cond3; @@ -101,15 +103,27 @@ struct _DFS_STATISTICS { u8 pri_long_hold_sum[6]; u8 pw_long_hold_sum[6]; u8 hist_idx; - u8 hist_long_idx; + u16 hist_long_idx; u8 pw_hold[4][6]; u8 pri_hold[4][6]; + u8 pw_long_hold[300][6]; + u8 pri_long_hold[300][6]; u8 pw_std; /*@The std(var) of reasonable num of pw group*/ u8 pri_std;/*@The std(var) of reasonable num of pri group*/ /*@dfs histogram threshold*/ - u8 pri_hist_th : 3; - u8 pri_sum_g1_th : 4; - u8 pri_sum_g5_th : 4; + u8 pri_hist_idle_th; + u8 pri_hist_th; + u8 pri_sum_g1_th; + u8 pri_sum_g0_idle_th; + u8 pri_sum_g0_th; + u8 pri_sum_g5_idle_th; + u8 pri_sum_g5_th; + u8 pw_sum_g0_idle_th; + u8 pw_sum_g0_th; + u8 pw_sum_g5_idle_th; + u8 pw_sum_g5_th; + u8 pw_pri_valid_set_idle_th; + u8 pw_pri_valid_set_th; u8 pri_sum_g1_fcc_th : 3; u8 pri_sum_g3_fcc_th : 3; u8 pri_sum_safe_fcc_th : 7; @@ -117,7 +131,8 @@ struct _DFS_STATISTICS { u8 pri_sum_type6_th : 5; u8 pri_sum_safe_th : 6; u8 pri_sum_g5_under_g1_th : 3; - u8 pri_pw_diff_th : 3; + u8 pri_pw_diff_idle_th; + u8 pri_pw_diff_th; u8 pri_pw_diff_fcc_th : 4; u8 pri_pw_diff_fcc_idle_th : 2; u8 pri_pw_diff_w53_th : 4; @@ -158,6 +173,8 @@ struct _DFS_STATISTICS { u8 pri_cnt_th; u8 loct_diff_th; u8 dc_cnt_th; + u32 fa_cnt_th; + u32 fa_cnt_th_backup; }; /*@ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dig.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dig.c index 3798f989d..e4071995f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dig.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dig.c @@ -135,7 +135,7 @@ void phydm_dig_damping_chk(void *dm_void) switch (igi_bitmap_4bit) { case 0x5: - /*@ 4b'0101 + /*@ 4b'0101 * IGI:[3]down(0x24)->[2]up(0x26)->[1]down(0x24)->[0]up(0x26)->[new](Lock @ 0x26) * FA: [3] >high1 ->[2] [1] >high1 ->[0] [new] dm_dig_table; u8 i = 0; - +#ifdef CONFIG_RTL8672 + u32 manual_dig_fa_th = dm->priv->pshare->rf_ft_var.manual_dig_fa_th; +#endif dig_t->dm_dig_fa_th1 = DM_DIG_FA_TH1; if (dig_t->is_dbg_fa_th) { @@ -210,7 +212,15 @@ void phydm_fa_threshold_check(void *dm_void, boolean is_dfs_band) dig_t->fa_th[0] = 500; dig_t->fa_th[1] = 750; dig_t->fa_th[2] = 1000; - } else if (((dm->rx_tp >> 2) > dm->tx_tp) && /*Test RX TP*/ + } +#ifdef CONFIG_RTL8672 + else if(manual_dig_fa_th){ + dig_t->fa_th[0] = manual_dig_fa_th & 0x3FF; + dig_t->fa_th[1] = (manual_dig_fa_th >> 10) & 0x3FF; + dig_t->fa_th[2] = (manual_dig_fa_th >> 20) & 0x3FF; + } +#endif + else if (((dm->rx_tp >> 2) > dm->tx_tp) && /*Test RX TP*/ (dm->rx_tp < 10) && (dm->rx_tp > 1)) { /*TP=1~10Mb*/ dig_t->fa_th[0] = 125; dig_t->fa_th[1] = 250; @@ -364,7 +374,7 @@ void phydm_fa_cnt_statistics_jgr3(void *dm_void) fa_t->cnt_mcs_fail = ret_value & 0xffff; /* read CCK CRC32 counter */ - if (dm->support_ic_type & ODM_RTL8723F) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) ret_value = odm_get_bb_reg(dm, R_0x2aac, MASKDWORD); else ret_value = odm_get_bb_reg(dm, R_0x2c04, MASKDWORD); @@ -391,9 +401,26 @@ void phydm_fa_cnt_statistics_jgr3(void *dm_void) fa_t->cnt_ht2_crc32_ok = ret_value & 0xffff; fa_t->cnt_ht2_crc32_error = (ret_value & 0xffff0000) >> 16; + /* read mpdu CRC32 counter */ + ret_value = odm_get_bb_reg(dm, R_0x2c40, MASKDWORD); + fa_t->cnt_mpdu_crc32_ok = ret_value & 0xffff; + fa_t->cnt_mpdu_crc32_error = (ret_value & 0xffff0000) >> 16; + + /* read mpdu MISS counter */ + ret_value = odm_get_bb_reg(dm, R_0x2c2c, MASKDWORD); + fa_t->cnt_mpdu_miss = (ret_value & 0xff000000) >> 24; + ret_value = odm_get_bb_reg(dm, R_0x2c30, MASKDWORD); + fa_t->cnt_mpdu_miss += (((ret_value & 0xff000000) >> 24) << 8); + + /* read mac counter */ + ret_value = odm_get_mac_reg(dm, R_0x664, MASKDWORD); + fa_t->cnt_mac664_report = ret_value & 0xffff; + fa_t->cnt_mac664_type= (u8)(((ret_value & 0xf0000000) >> 28) + + ((ret_value & 0x04000000) >> 22)); + /*for VHT part */ if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8812F | - ODM_RTL8814B | ODM_RTL8814C)) { + ODM_RTL8814B | ODM_RTL8814C | ODM_RTL8822E)) { /*read VHT CRC32 counter */ ret_value = odm_get_bb_reg(dm, R_0x2c0c, MASKDWORD); fa_t->cnt_vht_crc32_ok = ret_value & 0xffff; @@ -427,7 +454,7 @@ void phydm_fa_cnt_statistics_jgr3(void *dm_void) fa_t->cnt_mcs_fail_vht + fa_t->cnt_crc8_fail_vhta; /* Read CCK FA counter */ - if (dm->support_ic_type & ODM_RTL8723F){ + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)){ ret_value= odm_get_bb_reg(dm, R_0x2aa8, MASKLWORD); fa_t->cnt_cck_fail=(ret_value&0xffff)+((ret_value&0xffff0000)>>16); } @@ -437,16 +464,16 @@ void phydm_fa_cnt_statistics_jgr3(void *dm_void) /* read CCK/OFDM CCA counter */ ret_value = odm_get_bb_reg(dm, R_0x2c08, MASKDWORD); fa_t->cnt_ofdm_cca = ((ret_value & 0xffff0000) >> 16); - if (dm->support_ic_type & ODM_RTL8723F) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) ret_value = odm_get_bb_reg(dm, R_0x2aa0, MASKDWORD); fa_t->cnt_cck_cca = ret_value & 0xffff; /* @CCK RxIQ weighting = 1 => 0x1a14[9:8]=0x0 */ - if (dm->support_ic_type & ODM_RTL8723F) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) cck_enable = odm_get_bb_reg(dm, R_0x2a24, BIT(13)); else cck_enable = odm_get_bb_reg(dm, R_0x1a14, 0x300); - + if (cck_enable == 0x0) { /* @if(*dm->band_type == ODM_BAND_2_4G) */ fa_t->cnt_all = fa_t->cnt_ofdm_fail + fa_t->cnt_cck_fail; fa_t->cnt_cca_all = fa_t->cnt_cck_cca + fa_t->cnt_ofdm_cca; @@ -898,7 +925,7 @@ void phydm_hwigi(void *dm_void) dm_ram_per_sta = &bb_ctrl->pram_sta_ctrl[macid]; rssi = &sta->rssi_stat; - macid_mask = (u64)BIT(sta->mac_id); + macid_mask = (u64)BIT(macid); bb_ctrl->hwigi_macid_is_linked |= macid_mask; macid_cur |= macid_mask; PHYDM_DBG(dm, DBG_DIG, @@ -969,9 +996,7 @@ void phydm_hwigi_dbg(void *dm_void, char input[][16], u32 *_used, "Reset all hwigi : {5}\n"); } else { for (i = 0; i < 7; i++) { - if (input[i + 1]) - PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, - &var1[i]); + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &var1[i]); } switch (var1[0]) { case 0: @@ -1118,7 +1143,7 @@ void phydm_dig_abs_boundary_decision(struct dm_struct *dm, boolean is_dfs_band) } else if (*dm->bb_op_mode == PHYDM_PERFORMANCE_MODE) { /*service 1 devices*/ if (*dm->edcca_mode == PHYDM_EDCCA_ADAPT_MODE && - dm->support_ic_type & (ODM_RTL8197F | ODM_RTL8192F)) + dm->support_ic_type & (ODM_RTL8197F | ODM_RTL8192F | ODM_RTL8710C | ODM_RTL8721D | ODM_RTL8723D )) /*dig_max shouldn't be too high because of adaptivity*/ dig_t->dm_dig_max = MIN_2((adapt->th_l2h + 30), @@ -1159,12 +1184,15 @@ void phydm_dig_dym_boundary_decision(struct dm_struct *dm, boolean is_dfs_band) u8 max_of_rssi_min = 0; PHYDM_DBG(dm, DBG_DIG, "%s ======>\n", __func__); +#ifdef CONFIG_RTL8672 + offset = dm->priv->pshare->rf_ft_var.dig_rssi_ofst; +#endif #if (RTL8822B_SUPPORT == 1) if (dm->is_dig_low_bond) offset = 5; else offset = 15; - #else + #else offset = 15; #endif @@ -1205,11 +1233,20 @@ void phydm_dig_dym_boundary_decision(struct dm_struct *dm, boolean is_dfs_band) /* @DIG upper bound */ tmp_max = dig_t->rx_gain_range_min + offset; +#ifdef CONFIG_RTL8672 + PHYDM_DBG(dm, DBG_DIG, "tmp_max= 0x%x, rx_gain_range_min= 0x%x\n", tmp_max, dig_t->rx_gain_range_min); +#endif if (dig_t->rx_gain_range_min != dm->rssi_min) { max_of_rssi_min = dm->rssi_min + offset; +#ifdef CONFIG_RTL8672 + PHYDM_DBG(dm, DBG_DIG, "max_of_rssi_min= 0x%x, rssi_min= 0x%x\n", max_of_rssi_min, dm->rssi_min ); +#endif if (tmp_max > max_of_rssi_min) tmp_max = max_of_rssi_min; } +#ifdef CONFIG_RTL8672 + PHYDM_DBG(dm, DBG_DIG, "tmp_max= 0x%x, dm_dig_max= 0x%x, dm_dig_min= 0x%x\n", tmp_max, dig_t->dm_dig_max, dig_t->dm_dig_min); +#endif if (tmp_max > dig_t->dm_dig_max) dig_t->rx_gain_range_max = dig_t->dm_dig_max; @@ -1251,7 +1288,7 @@ void phydm_dig_abnormal_case(struct dm_struct *dm) } u8 phydm_new_igi_by_fa(struct dm_struct *dm, u8 igi, u32 fa_metrics, - u8 *step_size) + u8 *step_size, u8 retry) { struct phydm_dig_struct *dig_t = &dm->dm_dig_table; @@ -1262,11 +1299,17 @@ u8 phydm_new_igi_by_fa(struct dm_struct *dm, u8 igi, u32 fa_metrics, else if (fa_metrics < dig_t->fa_th[0]) igi = igi - step_size[2]; + if ( dm->is_linked && (retry > 10) &&(dm->rssi_min > 70) ) { + igi = igi + 8; // increase 4dBm + } + if(dm->is_orientation_env) + igi = 0x50; + return igi; } u8 phydm_get_new_igi(struct dm_struct *dm, u8 igi, u32 fa_metrics, - boolean is_dfs_band) + boolean is_dfs_band, u8 retry) { struct phydm_dig_struct *dig_t = &dm->dm_dig_table; u8 step[3] = {0}; @@ -1317,18 +1360,17 @@ u8 phydm_get_new_igi(struct dm_struct *dm, u8 igi, u32 fa_metrics, #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE)) if (dm->phy_dbg_info.num_qry_beacon_pkt < 5 && fa_metrics < dig_t->dm_dig_fa_th1 && dm->bsta_state && - dm->support_ic_type != ODM_RTL8723D && - dm->support_ic_type != ODM_RTL8822B && - dm->support_ic_type != ODM_RTL8822C) { + !(dm->support_ic_type & (ODM_RTL8723D | ODM_RTL8822B |\ + ODM_RTL8822C | ODM_RTL8822E))) { dig_t->rx_gain_range_min = 0x1c; igi = dig_t->rx_gain_range_min; PHYDM_DBG(dm, DBG_DIG, "Beacon_num=%d,force igi=0x%x\n", dm->phy_dbg_info.num_qry_beacon_pkt, igi); } else { - igi = phydm_new_igi_by_fa(dm, igi, fa_metrics, step); + igi = phydm_new_igi_by_fa(dm, igi, fa_metrics, step, 0); } #else - igi = phydm_new_igi_by_fa(dm, igi, fa_metrics, step); + igi = phydm_new_igi_by_fa(dm, igi, fa_metrics, step, retry); #endif } else { /* @2 Before link */ @@ -1342,7 +1384,7 @@ u8 phydm_get_new_igi(struct dm_struct *dm, u8 igi, u32 fa_metrics, PHYDM_DBG(dm, DBG_DIG, "Pre_IGI=((0x%x)), FA=((%d))\n", igi, fa_metrics); - igi = phydm_new_igi_by_fa(dm, igi, fa_metrics, step); + igi = phydm_new_igi_by_fa(dm, igi, fa_metrics, step, 0); } } @@ -1350,7 +1392,7 @@ u8 phydm_get_new_igi(struct dm_struct *dm, u8 igi, u32 fa_metrics, if (igi < dig_t->rx_gain_range_min) igi = dig_t->rx_gain_range_min; - if (igi >= dig_t->rx_gain_range_max) { + if (igi >= dig_t->rx_gain_range_max && !dm->is_orientation_env) { igi = dig_t->rx_gain_range_max; dig_t->igi_dyn_up_hit = true; } else { @@ -1494,7 +1536,7 @@ void phydm_dig(void *dm_void) phydm_fa_threshold_check(dm, dfs_mode_en); /*Select new IGI by FA */ - new_igi = phydm_get_new_igi(dm, igi, fa_metrics, dfs_mode_en); + new_igi = phydm_get_new_igi(dm, igi, fa_metrics, dfs_mode_en, dm->retry_cnt); /* @1 Update status */ #ifdef PHYDM_TDMA_DIG_SUPPORT @@ -1612,10 +1654,11 @@ void phydm_false_alarm_counter_reg_reset(void *dm_void) { false_alm_cnt = falm_cnt->cnt_all; } + PHYDM_DBG(dm, DBG_FA_CNT, "false_alm_cnt=%d\n", false_alm_cnt); #ifdef PHYDM_IC_JGR3_SERIES_SUPPORT if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { /* @reset CCK FA and CCA counter */ odm_set_bb_reg(dm, R_0x2a44, BIT(21), 0); odm_set_bb_reg(dm, R_0x2a44, BIT(21), 1); @@ -1696,7 +1739,7 @@ void phydm_false_alarm_counter_reg_hold(void *dm_void) { struct dm_struct *dm = (struct dm_struct *)dm_void; - if (dm->support_ic_type & ODM_RTL8723F) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) return; if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { @@ -1908,6 +1951,12 @@ void phydm_fa_cnt_statistics_ac(void *dm_void) fa_t->cnt_vht2_crc32_ok = ret_value & 0xffff; fa_t->cnt_vht2_crc32_error = (ret_value & 0xffff0000) >> 16; + /* read mpdu MISS counter */ + ret_value = odm_get_bb_reg(dm, R_0xf2c, MASKDWORD); + fa_t->cnt_mpdu_miss = (ret_value & 0xff000000) >> 24; + ret_value = odm_get_bb_reg(dm, R_0xf30, MASKDWORD); + fa_t->cnt_mpdu_miss += (((ret_value & 0xff000000) >> 24) << 8); + #if (RTL8881A_SUPPORT) if (dm->support_ic_type == ODM_RTL8881A) { u32 tmp = 0; @@ -2142,8 +2191,8 @@ void phydm_false_alarm_counter_statistics(void *dm_void) fa_t->cnt_cck_txen, fa_t->cnt_cck_txon, fa_t->cnt_ofdm_txen, fa_t->cnt_ofdm_txon); PHYDM_DBG(dm, DBG_FA_CNT, - "[CCA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}\n", - fa_t->cnt_cck_cca, fa_t->cnt_ofdm_cca, fa_t->cnt_cca_all); + "[CCA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}, [BT polluted] = {%d}\n", + fa_t->cnt_cck_cca, fa_t->cnt_ofdm_cca, fa_t->cnt_cca_all, fa_t->cnt_bt_polluted); PHYDM_DBG(dm, DBG_FA_CNT, "[FA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}\n", fa_t->cnt_cck_fail, fa_t->cnt_ofdm_fail, fa_t->cnt_all); @@ -2223,6 +2272,8 @@ void phydm_false_alarm_counter_statistics(void *dm_void) } } #endif + + fa_t->cnt_bt_polluted = 0; } void phydm_fill_fw_dig_info(void *dm_void, boolean *enable, @@ -2317,10 +2368,11 @@ void phydm_tdma_dig_timer_check(void *dm_void) dig_t->tdma_dig_cnt == dig_t->pre_tdma_dig_cnt) { if (dm->support_ability & ODM_BB_DIG) { #ifdef IS_USE_NEW_TDMA - if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8814B | - ODM_RTL8812F | ODM_RTL8822B | ODM_RTL8192F | - ODM_RTL8821C | ODM_RTL8197G | ODM_RTL8822C | - ODM_RTL8723D | ODM_RTL8723F | ODM_RTL8814C)) { + if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8814B |\ + ODM_RTL8812F | ODM_RTL8822B | ODM_RTL8192F |\ + ODM_RTL8821C | ODM_RTL8197G | ODM_RTL8822C |\ + ODM_RTL8723D | ODM_RTL8723F | ODM_RTL8814C |\ + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E | ODM_RTL8188F)) { PHYDM_DBG(dm, DBG_DIG, "Check fail, Restart timer\n\n"); phydm_false_alarm_counter_reset(dm); @@ -2739,7 +2791,7 @@ u8 get_new_igi_bound(struct dm_struct *dm, u8 igi, u32 fa_cnt, u8 *rx_gain_max, PHYDM_DBG(dm, DBG_DIG, "Pre_IGI=((0x%x)), FA=((%d))\n", igi, fa_cnt); - igi = phydm_new_igi_by_fa(dm, igi, fa_cnt, step); + igi = phydm_new_igi_by_fa(dm, igi, fa_cnt, step, 0); } } /*@Check IGI by dyn-upper/lower bound */ @@ -3199,7 +3251,7 @@ void phydm_tdma_low_dig(void *dm_void) &tdma_l_dym_min, dfs_mode_en); } else { - new_igi = phydm_get_new_igi(dm, igi, fa_cnt, dfs_mode_en); + new_igi = phydm_get_new_igi(dm, igi, fa_cnt, dfs_mode_en, 0); } /*Update status*/ @@ -3290,7 +3342,7 @@ void phydm_tdma_high_dig(void *dm_void) } else if (*dm->bb_op_mode == PHYDM_PERFORMANCE_MODE) { /*service 1 devices*/ if (*dm->edcca_mode == PHYDM_EDCCA_ADAPT_MODE && - (dm->support_ic_type & ODM_RTL8192F)) { + (dm->support_ic_type & (ODM_RTL8192F | ODM_RTL8822E))) { /*dig_max shouldn't be too high becaus of adaptivity*/ dig_t->dm_dig_max = MIN_2((adapt->th_l2h + 30), DIG_MAX_PERFORMANCE_MODE); @@ -3403,7 +3455,7 @@ void phydm_tdma_high_dig(void *dm_void) &tdma_h_dym_min, dfs_mode_en); } else { - new_igi = phydm_get_new_igi(dm, igi, fa_cnt, dfs_mode_en); + new_igi = phydm_get_new_igi(dm, igi, fa_cnt, dfs_mode_en, 0); } /*Update status*/ @@ -3626,7 +3678,8 @@ void phydm_dig_debug(void *dm_void, char input[][16], u32 *_used, char *output, } #ifdef CONFIG_MCC_DM -#if (RTL8822B_SUPPORT || RTL8822C_SUPPORT|| RTL8723F_SUPPORT) +#if (RTL8822B_SUPPORT || RTL8822C_SUPPORT || RTL8723F_SUPPORT || RTL8735B_SUPPORT ||\ + RTL8730A_SUPPORT || RTL8822E_SUPPORT) void phydm_mcc_igi_clr(void *dm_void, u8 clr_port) { struct dm_struct *dm = (struct dm_struct *)dm_void; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dig.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dig.h index 68b96ad52..c62653e1c 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dig.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dig.h @@ -177,7 +177,8 @@ struct phydm_dig_struct { RTL8198F_SUPPORT || RTL8192F_SUPPORT || RTL8195B_SUPPORT ||\ RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8721D_SUPPORT ||\ RTL8710C_SUPPORT || RTL8812F_SUPPORT || RTL8197G_SUPPORT ||\ - RTL8723F_SUPPORT) + RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT ||\ + RTL8822E_SUPPORT) u8 rf_gain_idx; u8 agc_table_idx; u8 big_jump_lmt[16]; @@ -271,6 +272,12 @@ struct phydm_fa_struct { u32 cnt_cck_txon; u32 cnt_ofdm_txen; u32 cnt_ofdm_txon; + u32 cnt_mpdu_crc32_ok; + u32 cnt_mpdu_crc32_error; + u32 cnt_mpdu_miss; + u32 cnt_mac664_report; + u8 cnt_mac664_type; + u32 cnt_bt_polluted; }; #ifdef PHYDM_TDMA_DIG_SUPPORT diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dynamictxpower.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dynamictxpower.c index 2ccbd1ae8..b0af7a6b2 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dynamictxpower.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_dynamictxpower.c @@ -226,8 +226,8 @@ void phydm_dtp_init_2nd(void *dm_void) if (!(dm->support_ability & ODM_BB_DYNAMIC_TXPWR)) return; - #if (RTL8822C_SUPPORT || RTL8812F_SUPPORT) - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8812F)) { + #if (RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8822E_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8822E)) { phydm_rst_ram_pwr(dm); /* rsp tx use type 0*/ odm_set_mac_reg(dm, R_0x6d8, BIT(19) | BIT(18), RAM_PWR_OFST0); @@ -243,7 +243,7 @@ phydm_check_rates(void *dm_void, u8 rate_idx) u32 check_rate_bitmap0 = 0x08080808; /* @check CCK11M, OFDM54M, MCS7, MCS15*/ u32 check_rate_bitmap1 = 0x80200808; /* @check MCS23, MCS31, VHT1SS M9, VHT2SS M9*/ u32 check_rate_bitmap2 = 0x00080200; /* @check VHT3SS M9, VHT4SS M9*/ - u32 bitmap_result; + u32 bitmap_result = 0; #if (RTL8822B_SUPPORT) if (dm->support_ic_type & ODM_RTL8822B) { @@ -291,7 +291,7 @@ phydm_check_rates(void *dm_void, u8 rate_idx) bitmap_result = BIT(rate_idx - 64) & check_rate_bitmap2; else if (rate_idx >= 32) bitmap_result = BIT(rate_idx - 32) & check_rate_bitmap1; - else if (rate_idx <= 31) + else // if (rate_idx <= 31) bitmap_result = BIT(rate_idx) & check_rate_bitmap0; if (bitmap_result != 0) @@ -359,7 +359,7 @@ u8 phydm_search_min_power_index(void *dm_void) if (gain_index == 0xff) { min_gain_index = 0x20; - PHYDM_DBG(dm, DBG_DYN_TXPWR, + PHYDM_DBG(dm, DBG_DYN_TXPWR, "Error Gain idx!! Rewite to: ((%d))\n", min_gain_index); break; @@ -524,6 +524,7 @@ void phydm_dtp_per_sta(void *dm_void) struct phydm_bb_ram_ctrl *bb_ctrl = &dm->p_bb_ram_ctrl; u8 sta_cnt = 0; u8 i = 0; + u8 macid = 0; u8 curr_pwr_lv = 0; u8 last_pwr_lv = 0; u8 mac_id_cnt = 0; @@ -536,9 +537,14 @@ void phydm_dtp_per_sta(void *dm_void) if (is_sta_active(sta)) { sta_cnt++; + if (sta->mac_id > 63) + macid = 63; + else + macid = sta->mac_id; + dtp = &sta->dtp_stat; rssi = &sta->rssi_stat; - macid_mask = (u64)BIT(sta->mac_id); + macid_mask = (u64)BIT(macid); if (!(bb_ctrl->macid_is_linked & macid_mask)) dtp->sta_last_dtp_lvl = tx_high_pwr_level_normal; @@ -653,9 +659,7 @@ void phydm_dtp_debug(void *dm_void, char input[][16], u32 *_used, char *output, #endif } else { for (i = 0; i < 7; i++) { - if (input[i + 1]) - PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, - &var1[i]); + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &var1[i]); } switch (var1[0]) { case 1: diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features.h index bbbc9edab..e937f68b7 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features.h @@ -36,9 +36,9 @@ ODM_RTL8723D | \ ODM_RTL8710C) #define ODM_RECEIVER_BLOCKING_SUPPORT (ODM_RTL8188E | ODM_RTL8192E) -#define ODM_DYM_BW_INDICATION_SUPPORT (ODM_RTL8821C | \ - ODM_RTL8822B | \ - ODM_RTL8822C) +#define ODM_DYM_BW_INDICATION_SUPPORT (ODM_RTL8821C | ODM_RTL8192F |\ + ODM_RTL8822B | ODM_RTL8197G |\ + ODM_RTL8822C | ODM_RTL8822E) /*@20170103 YuChen add for FW API*/ #define PHYDM_FW_API_ENABLE_8822B 1 @@ -59,6 +59,12 @@ #define PHYDM_FW_API_FUNC_ENABLE_8197G 1 #define PHYDM_FW_API_ENABLE_8723F 1 #define PHYDM_FW_API_FUNC_ENABLE_8723F 1 +#define PHYDM_FW_API_ENABLE_8735B 1 +#define PHYDM_FW_API_FUNC_ENABLE_8735B 1 +#define PHYDM_FW_API_ENABLE_8730A 1 +#define PHYDM_FW_API_FUNC_ENABLE_8730A 1 +#define PHYDM_FW_API_ENABLE_8822E 1 +#define PHYDM_FW_API_FUNC_ENABLE_8822E 1 #define CONFIG_POWERSAVING 0 diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ap.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ap.h index ce422991e..684117dbd 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ap.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ap.h @@ -19,7 +19,8 @@ #if (RTL8814A_SUPPORT || RTL8821C_SUPPORT || RTL8822B_SUPPORT ||\ RTL8197F_SUPPORT || RTL8192F_SUPPORT || RTL8198F_SUPPORT ||\ RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8814B_SUPPORT ||\ - RTL8197G_SUPPORT || RTL8723F_SUPPORT) + RTL8197G_SUPPORT || RTL8723F_SUPPORT || RTL8735B_SUPPORT ||\ + RTL8822E_SUPPORT) #define PHYDM_LA_MODE_SUPPORT 1 #else #define PHYDM_LA_MODE_SUPPORT 0 @@ -31,11 +32,13 @@ #endif #if (RTL8822B_SUPPORT || RTL8198F_SUPPORT || RTL8814B_SUPPORT ||\ - RTL8197G_SUPPORT || RTL8812F_SUPPORT || RTL8723F_SUPPORT) + RTL8197G_SUPPORT || RTL8812F_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT) #define FAHM_SUPPORT #endif -#if (RTL8197G_SUPPORT || RTL8812F_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8197G_SUPPORT || RTL8812F_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT) #define IFS_CLM_SUPPORT #endif #define NHM_SUPPORT @@ -45,8 +48,8 @@ #define EDCCA_CLM_SUPPORT #endif -#if (RTL8812F_SUPPORT) - /*#define PHYDM_PHYSTAUS_AUTO_SWITCH*/ +#if (RTL8812F_SUPPORT || RTL8814B_SUPPORT || RTL8814C_SUPPORT) + #define PHYDM_PHYSTAUS_AUTO_SWITCH #endif #if (RTL8197F_SUPPORT) @@ -54,7 +57,7 @@ #endif #if (RTL8198F_SUPPORT || RTL8814B_SUPPORT || RTL8812F_SUPPORT ||\ - RTL8197G_SUPPORT || RTL8723F_SUPPORT) + RTL8197G_SUPPORT || RTL8723F_SUPPORT || RTL8735B_SUPPORT) #define PHYDM_TDMA_DIG_SUPPORT 1 #ifdef PHYDM_TDMA_DIG_SUPPORT #define IS_USE_NEW_TDMA /*new tdma dig test*/ @@ -85,12 +88,14 @@ #endif #if (RTL8814B_SUPPORT || RTL8198F_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT) + RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_PMAC_TX_SETTING_SUPPORT #endif #if (RTL8814B_SUPPORT || RTL8198F_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT) + RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_MP_SUPPORT #endif @@ -107,6 +112,10 @@ #define PHYDM_DC_CANCELLATION #endif +#if (RTL8192F_SUPPORT || RTL8197G_SUPPORT) + #define CONFIG_BW_INDICATION +#endif + #if (RTL8822B_SUPPORT || RTL8197F_SUPPORT || RTL8192F_SUPPORT) #define CONFIG_ADAPTIVE_SOML #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ce.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ce.h index 9dc238aff..c860fee89 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ce.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ce.h @@ -27,8 +27,8 @@ #define __PHYDM_FEATURES_CE_H__ #if (RTL8814A_SUPPORT || RTL8821C_SUPPORT || RTL8822B_SUPPORT ||\ - RTL8197F_SUPPORT || RTL8192F_SUPPORT || RTL8198F_SUPPORT ||\ - RTL8822C_SUPPORT || RTL8723F_SUPPORT) + RTL8197F_SUPPORT || RTL8192F_SUPPORT || RTL8198F_SUPPORT ||\ + RTL8822C_SUPPORT || RTL8723F_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_LA_MODE_SUPPORT 1 #else #define PHYDM_LA_MODE_SUPPORT 0 @@ -40,32 +40,32 @@ #endif #if (RTL8822B_SUPPORT || RTL8821C_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8814B_SUPPORT || RTL8723F_SUPPORT) + RTL8814B_SUPPORT || RTL8723F_SUPPORT || RTL8822E_SUPPORT) #define FAHM_SUPPORT #endif -#if (RTL8822C_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8723F_SUPPORT || RTL8822E_SUPPORT) #define IFS_CLM_SUPPORT #endif #define NHM_SUPPORT #define CLM_SUPPORT -#if (RTL8822C_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8723F_SUPPORT || RTL8822E_SUPPORT) #define EDCCA_CLM_SUPPORT #endif -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) #define NHM_DYM_PW_TH_SUPPORT #endif -#if (RTL8822C_SUPPORT) - /*@#define PHYDM_PHYSTAUS_AUTO_SWITCH*/ +#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8822E_SUPPORT) + #define PHYDM_PHYSTAUS_AUTO_SWITCH #endif /*@#define PHYDM_TDMA_DIG_SUPPORT*/ #if (RTL8822B_SUPPORT || RTL8192F_SUPPORT || RTL8821C_SUPPORT ||\ - RTL8822C_SUPPORT || RTL8723D_SUPPORT ) + RTL8822C_SUPPORT || RTL8723D_SUPPORT || RTL8822E_SUPPORT|| RTL8188F_SUPPORT) #ifdef CONFIG_TDMADIG #define PHYDM_TDMA_DIG_SUPPORT #ifdef PHYDM_TDMA_DIG_SUPPORT @@ -103,15 +103,15 @@ #define PHYDM_POWER_TRAINING_SUPPORT #endif -#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_PMAC_TX_SETTING_SUPPORT #endif -#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_MP_SUPPORT #endif -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_CCK_RX_PATHDIV_SUPPORT #endif @@ -136,7 +136,7 @@ #define CONFIG_RECEIVER_BLOCKING #endif -#if (RTL8821C_SUPPORT || RTL8822C_SUPPORT || RTL8822B_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822B_SUPPORT || RTL8822E_SUPPORT) //RTL8821C_SUPPORT #define CONFIG_BW_INDICATION #endif @@ -151,7 +151,7 @@ #ifdef CONFIG_SUPPORT_DYNAMIC_TXPWR #define CONFIG_DYNAMIC_TX_TWR #endif -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_HW_IGI #endif #define PHYDM_SUPPORT_CCKPD @@ -165,7 +165,7 @@ #if (RTL8723B_SUPPORT || RTL8821A_SUPPORT ||\ RTL8188F_SUPPORT || RTL8821C_SUPPORT ||\ - RTL8723D_SUPPORT||RTL8723F_SUPPORT) + RTL8723D_SUPPORT || RTL8723F_SUPPORT) #define CONFIG_S0S1_SW_ANTENNA_DIVERSITY #endif @@ -180,7 +180,7 @@ #endif #endif -#if (RTL8822B_SUPPORT || RTL8822C_SUPPORT || RTL8192F_SUPPORT) +#if (RTL8822B_SUPPORT || RTL8822C_SUPPORT || RTL8192F_SUPPORT || RTL8822E_SUPPORT) #define CONFIG_PATH_DIVERSITY #endif @@ -221,12 +221,12 @@ #endif #if (RTL8192F_SUPPORT || RTL8195B_SUPPORT || RTL8821C_SUPPORT ||\ RTL8822B_SUPPORT || RTL8197F_SUPPORT || RTL8198F_SUPPORT ||\ - RTL8822C_SUPPORT || RTL8814B_SUPPORT) + RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8822E_SUPPORT) #define DRIVER_BEAMFORMING_VERSION2 #endif #endif -#if (RTL8822B_SUPPORT || RTL8822C_SUPPORT) +#if (RTL8822B_SUPPORT || RTL8822C_SUPPORT || RTL8822E_SUPPORT) #ifdef CONFIG_MCC_MODE #define CONFIG_MCC_DM #endif @@ -242,7 +242,7 @@ #define CONFIG_DIRECTIONAL_BF #endif -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) #define CONFIG_MU_RSOML #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ce2_kernel.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ce2_kernel.h index c206ea605..a18fb57a1 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ce2_kernel.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_ce2_kernel.h @@ -76,7 +76,7 @@ #ifdef PHYDM_BEAMFORMING_SUPPORT #if (RTL8192F_SUPPORT || RTL8195B_SUPPORT || RTL8821C_SUPPORT ||\ RTL8822B_SUPPORT || RTL8197F_SUPPORT || RTL8198F_SUPPORT ||\ - RTL8822C_SUPPORT || RTL8814B_SUPPORT) + RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8822E_SUPPORT) #define DRIVER_BEAMFORMING_VERSION2 #endif #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_iot.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_iot.h index 5d2231cd1..0d6cde1b8 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_iot.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_iot.h @@ -28,7 +28,8 @@ #if (RTL8814A_SUPPORT || RTL8821C_SUPPORT || RTL8822B_SUPPORT ||\ RTL8197F_SUPPORT || RTL8192F_SUPPORT || RTL8198F_SUPPORT ||\ - RTL8822C_SUPPORT || RTL8195B_SUPPORT) + RTL8822C_SUPPORT || RTL8195B_SUPPORT || RTL8735B_SUPPORT ||\ + RTL8822E_SUPPORT) #define PHYDM_LA_MODE_SUPPORT 1 #else #define PHYDM_LA_MODE_SUPPORT 0 @@ -39,13 +40,13 @@ #define DYN_ANT_WEIGHTING_SUPPORT #endif -#if (RTL8822B_SUPPORT || RTL8821C_SUPPORT) +#if (RTL8822B_SUPPORT || RTL8821C_SUPPORT || RTL8735B_SUPPORT) #define FAHM_SUPPORT #endif #define NHM_SUPPORT #define CLM_SUPPORT -#if (RTL8197G_SUPPORT || RTL8812F_SUPPORT) +#if (RTL8197G_SUPPORT || RTL8812F_SUPPORT || RTL8735B_SUPPORT) #define EDCCA_CLM_SUPPORT #endif @@ -68,12 +69,12 @@ #define PHYDM_POWER_TRAINING_SUPPORT #endif -#if (RTL8822C_SUPPORT) - /* #define PHYDM_PMAC_TX_SETTING_SUPPORT */ +#if (RTL8735B_SUPPORT || RTL8730A_SUPPORT) + #define PHYDM_PMAC_TX_SETTING_SUPPORT #endif -#if (RTL8822C_SUPPORT) - /* #define PHYDM_MP_SUPPORT */ +#if (RTL8735B_SUPPORT || RTL8730A_SUPPORT) + #define PHYDM_MP_SUPPORT #endif #if (RTL8822B_SUPPORT) @@ -105,6 +106,11 @@ #define CONFIG_RECEIVER_BLOCKING #endif +#if (RTL8735B_SUPPORT) + #define CONFIG_DYNAMIC_TXCOLLISION_TH +#endif + + #ifdef CONFIG_SUPPORT_DYNAMIC_TXPWR #define CONFIG_DYNAMIC_TX_TWR #endif @@ -118,7 +124,8 @@ #ifdef CONFIG_PHYDM_ANTENNA_DIVERSITY #if (RTL8723B_SUPPORT || RTL8821A_SUPPORT ||\ - RTL8188F_SUPPORT || RTL8821C_SUPPORT || RTL8195B_SUPPORT) + RTL8188F_SUPPORT || RTL8821C_SUPPORT || RTL8195B_SUPPORT ||\ + RTL8735B_SUPPORT) #define CONFIG_S0S1_SW_ANTENNA_DIVERSITY #endif @@ -172,7 +179,8 @@ #ifdef PHYDM_BEAMFORMING_SUPPORT #if (RTL8192F_SUPPORT || RTL8195B_SUPPORT || RTL8821C_SUPPORT ||\ RTL8822B_SUPPORT || RTL8197F_SUPPORT || RTL8198F_SUPPORT ||\ - RTL8822C_SUPPORT || RTL8814B_SUPPORT) + RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8735B_SUPPORT ||\ + RTL8822E_SUPPORT) #define DRIVER_BEAMFORMING_VERSION2 #define CONFIG_BB_TXBF_API #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_win.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_win.h index 061476821..ad36dec59 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_win.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_features_win.h @@ -17,8 +17,9 @@ #define __PHYDM_FEATURES_WIN_H__ #if (RTL8814A_SUPPORT || RTL8821C_SUPPORT || RTL8822B_SUPPORT ||\ - RTL8197F_SUPPORT || RTL8192F_SUPPORT || RTL8198F_SUPPORT ||\ - RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT) + RTL8197F_SUPPORT || RTL8192F_SUPPORT || RTL8198F_SUPPORT ||\ + RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_LA_MODE_SUPPORT 1 #else #define PHYDM_LA_MODE_SUPPORT 0 @@ -30,25 +31,28 @@ #endif #if (RTL8822B_SUPPORT || RTL8821C_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8814B_SUPPORT || RTL8723F_SUPPORT) + RTL8814B_SUPPORT || RTL8723F_SUPPORT || RTL8735B_SUPPORT ||\ + RTL8730A_SUPPORT || RTL8822E_SUPPORT) #define FAHM_SUPPORT #endif -#if (RTL8822C_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8723F_SUPPORT || RTL8735B_SUPPORT ||\ + RTL8730A_SUPPORT || RTL8822E_SUPPORT) #define IFS_CLM_SUPPORT #endif #define NHM_SUPPORT #define CLM_SUPPORT -#if (RTL8822C_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8723F_SUPPORT || RTL8735B_SUPPORT ||\ + RTL8730A_SUPPORT || RTL8822E_SUPPORT) #define EDCCA_CLM_SUPPORT #endif -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) #define NHM_DYM_PW_TH_SUPPORT #endif -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_PHYSTAUS_AUTO_SWITCH #endif @@ -84,15 +88,17 @@ #define PHYDM_POWER_TRAINING_SUPPORT #endif -#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_PMAC_TX_SETTING_SUPPORT #endif -#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_MP_SUPPORT #endif -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_CCK_RX_PATHDIV_SUPPORT #endif @@ -150,7 +156,7 @@ #endif -#if (RTL8822B_SUPPORT || RTL8822C_SUPPORT || RTL8192F_SUPPORT) +#if (RTL8822B_SUPPORT || RTL8822C_SUPPORT || RTL8192F_SUPPORT || RTL8822E_SUPPORT) #define CONFIG_PATH_DIVERSITY #endif @@ -165,7 +171,7 @@ #define CONFIG_RECEIVER_BLOCKING #endif -#if (RTL8821C_SUPPORT || RTL8822C_SUPPORT || RTL8822B_SUPPORT) +#if (RTL8821C_SUPPORT || RTL8822C_SUPPORT || RTL8822B_SUPPORT || RTL8822E_SUPPORT) #define CONFIG_BW_INDICATION #endif @@ -177,13 +183,13 @@ /* #ifdef CONFIG_SUPPORT_DYNAMIC_TXPWR */ #define CONFIG_DYNAMIC_TX_TWR /* #endif */ -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_HW_IGI #endif #define CONFIG_PSD_TOOL #define PHYDM_SUPPORT_ADAPTIVITY #define PHYDM_SUPPORT_CCKPD -#if (defined(PHYDM_SUPPORT_CCKPD) && RTL8822C_SUPPORT) +#if (defined(PHYDM_SUPPORT_CCKPD) && (RTL8822C_SUPPORT || RTL8822E_SUPPORT)) #define PHYDM_DCC_ENHANCE #endif /*#define CONFIG_RA_DYNAMIC_RTY_LIMIT*/ @@ -203,7 +209,7 @@ #endif #if (RTL8192F_SUPPORT || RTL8195B_SUPPORT || RTL8821C_SUPPORT ||\ RTL8822B_SUPPORT || RTL8197F_SUPPORT || RTL8198F_SUPPORT ||\ - RTL8822C_SUPPORT || RTL8814B_SUPPORT) + RTL8822C_SUPPORT || RTL8814B_SUPPORT || RTL8822E_SUPPORT) #define DRIVER_BEAMFORMING_VERSION2 #endif #endif @@ -212,7 +218,7 @@ /*#define CONFIG_DIRECTIONAL_BF*/ #endif -#if (RTL8822C_SUPPORT) +#if (RTL8822C_SUPPORT || RTL8822E_SUPPORT) #define CONFIG_MU_RSOML #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_hwconfig.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_hwconfig.c index 2d6893a84..0498cf428 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_hwconfig.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_hwconfig.c @@ -383,11 +383,11 @@ odm_config_rf_with_header_file(struct dm_struct *dm, #endif #if (RTL8195B_SUPPORT == 1) if (dm->support_ic_type == ODM_RTL8195B) { - if (config_type == CONFIG_RF_RADIO) { - if (e_rf_path == RF_PATH_A) - READ_AND_CONFIG(8195b, _radioa); + if (config_type == CONFIG_RF_RADIO) { + if (e_rf_path == RF_PATH_A) + READ_AND_CONFIG(8195b, _radioa); } else if (config_type == CONFIG_RF_TXPWR_LMT) { - READ_AND_CONFIG(8195b, _txpwr_lmt); + READ_AND_CONFIG(8195b, _txpwr_lmt); } } #endif @@ -432,6 +432,41 @@ odm_config_rf_with_header_file(struct dm_struct *dm, } } #endif +#if (RTL8735B_SUPPORT) + if (dm->support_ic_type == ODM_RTL8735B) { + if (config_type == CONFIG_RF_RADIO) { + if (e_rf_path == RF_PATH_A) + READ_AND_CONFIG_MP(8735b, _radioa); + } else if (config_type == CONFIG_RF_TXPWR_LMT) { + READ_AND_CONFIG_MP(8735b, _txpwr_lmt); + } + } +#endif +#if (RTL8730A_SUPPORT) + if (dm->support_ic_type == ODM_RTL8730A) { + if (config_type == CONFIG_RF_RADIO) { + if (e_rf_path == RF_PATH_A) + READ_AND_CONFIG_MP(8730a, _radioa); + } else if (config_type == CONFIG_RF_TXPWR_LMT) { + READ_AND_CONFIG_MP(8730a, _txpwr_lmt); + } + } +#endif +#if (RTL8822E_SUPPORT) + if (dm->support_ic_type == ODM_RTL8822E) { + if (config_type == CONFIG_RF_RADIO) { + if (e_rf_path == RF_PATH_A) + READ_AND_CONFIG_MP(8822e, _radioa); + else if (e_rf_path == RF_PATH_B) + READ_AND_CONFIG_MP(8822e, _radiob); + } else if (config_type == CONFIG_RF_TXPWR_LMT) { + //if (dm->rfe_type == 5) + //READ_AND_CONFIG_MP(8822e, _txpwr_lmt_type5); + //else + READ_AND_CONFIG_MP(8822e, _txpwr_lmt); + } + } +#endif #if (RTL8812F_SUPPORT) if (dm->support_ic_type == ODM_RTL8812F) { if (config_type == CONFIG_RF_RADIO) { @@ -857,6 +892,33 @@ odm_config_rf_with_tx_pwr_track_header_file(struct dm_struct *dm) READ_AND_CONFIG_MP(8723f, _txxtaltrack); } #endif + +#if (RTL8735B_SUPPORT) + if (dm->support_ic_type == ODM_RTL8735B) { + if (dm->en_tssi_mode) + READ_AND_CONFIG_MP(8735b, _txpowertracktssi); + else + READ_AND_CONFIG_MP(8735b, _txpowertrack); + READ_AND_CONFIG_MP(8735b, _txxtaltrack); + } +#endif + +#if (RTL8730A_SUPPORT) + if (dm->support_ic_type == ODM_RTL8730A) { + if (dm->en_tssi_mode) + READ_AND_CONFIG_MP(8730a, _txpowertracktssi); + else + READ_AND_CONFIG_MP(8730a, _txpowertrack); + READ_AND_CONFIG_MP(8730a, _txxtaltrack); + } +#endif + +#if (RTL8822E_SUPPORT) + if (dm->support_ic_type == ODM_RTL8822E) { + READ_AND_CONFIG_MP(8822e, _txpowertrack); + } +#endif + #if (RTL8812F_SUPPORT) if (dm->support_ic_type == ODM_RTL8812F) { if (dm->rfe_type == 0) @@ -1350,6 +1412,36 @@ odm_config_bb_with_header_file(struct dm_struct *dm, READ_AND_CONFIG(8723f, _phy_reg_pg); } #endif +#if (RTL8735B_SUPPORT) + if (dm->support_ic_type == ODM_RTL8735B) { + if (config_type == CONFIG_BB_PHY_REG) + READ_AND_CONFIG_MP(8735b, _phy_reg); + else if (config_type == CONFIG_BB_AGC_TAB) + READ_AND_CONFIG_MP(8735b, _agc_tab); + else if (config_type == CONFIG_BB_PHY_REG_PG) + READ_AND_CONFIG(8735b, _phy_reg_pg); + } +#endif +#if (RTL8730A_SUPPORT) + if (dm->support_ic_type == ODM_RTL8730A) { + if (config_type == CONFIG_BB_PHY_REG) + READ_AND_CONFIG_MP(8730a, _phy_reg); + else if (config_type == CONFIG_BB_AGC_TAB) + READ_AND_CONFIG_MP(8730a, _agc_tab); + else if (config_type == CONFIG_BB_PHY_REG_PG) + READ_AND_CONFIG(8730a, _phy_reg_pg); + } +#endif +#if (RTL8822E_SUPPORT) + if (dm->support_ic_type == ODM_RTL8822E) { + if (config_type == CONFIG_BB_PHY_REG) + READ_AND_CONFIG_MP(8822e, _phy_reg); + else if (config_type == CONFIG_BB_AGC_TAB) + READ_AND_CONFIG_MP(8822e, _agc_tab); + else if (config_type == CONFIG_BB_PHY_REG_PG) + READ_AND_CONFIG(8822e, _phy_reg_pg); + } +#endif #if (RTL8812F_SUPPORT) if (dm->support_ic_type == ODM_RTL8812F) { if (config_type == CONFIG_BB_PHY_REG) @@ -1493,7 +1585,14 @@ odm_config_mac_with_header_file(struct dm_struct *dm) if (dm->support_ic_type == ODM_RTL8197G) READ_AND_CONFIG_MP(8197g, _mac_reg); #endif - +#if (RTL8730A_SUPPORT == 1) + if (dm->support_ic_type == ODM_RTL8730A) + READ_AND_CONFIG_MP(8730a, _mac_reg); +#endif +#if (RTL8735B_SUPPORT == 1) + if (dm->support_ic_type == ODM_RTL8735B) + READ_AND_CONFIG_MP(8735b, _mac_reg); +#endif if (dm->fw_offload_ability & PHYDM_PHY_PARAM_OFFLOAD) { result = phydm_set_reg_by_fw(dm, PHYDM_HALMAC_CMD_END, @@ -1612,6 +1711,11 @@ u32 odm_get_hw_img_version(struct dm_struct *dm) version = odm_get_version_mp_8822c_phy_reg(); break; #endif +#if (RTL8822E_SUPPORT) + case ODM_RTL8822E: + version = odm_get_version_mp_8822e_phy_reg(); + break; +#endif #if (RTL8812F_SUPPORT) case ODM_RTL8812F: version = odm_get_version_mp_8812f_phy_reg(); @@ -1627,6 +1731,16 @@ u32 odm_get_hw_img_version(struct dm_struct *dm) version = odm_get_version_mp_8723f_phy_reg(); break; #endif +#if (RTL8735B_SUPPORT) + case ODM_RTL8735B: + version = odm_get_version_mp_8735b_phy_reg(); + break; +#endif +#if (RTL8730A_SUPPORT) + case ODM_RTL8730A: + version = odm_get_version_mp_8730a_phy_reg(); + break; +#endif #if (RTL8814B_SUPPORT) case ODM_RTL8814B: version = odm_get_version_mp_8814b_phy_reg(); diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_interface.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_interface.c index 96f0c025d..26bb9c8dd 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_interface.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_interface.c @@ -1393,8 +1393,10 @@ u8 phydm_get_hwrate_to_mrate(struct dm_struct *dm, u8 rate) void phydm_set_crystalcap(struct dm_struct *dm, u8 crystal_cap) { #if (DM_ODM_SUPPORT_TYPE == ODM_IOT) +#if (! RTL8730A_SUPPORT) ROM_odm_SetCrystalCap(dm, crystal_cap); #endif +#endif } void phydm_run_in_thread_cmd(struct dm_struct *dm, void (*func)(void *), diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_math_lib.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_math_lib.c index c6c1035af..df552798b 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_math_lib.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_math_lib.c @@ -107,7 +107,7 @@ u16 phydm_find_intrvl(void *dm_void, u16 val, u16 *threshold, u16 th_len) void phydm_seq_sorting(void *dm_void, u32 *value, u32 *rank_idx, u32 *idx_out, u8 seq_length) { - u8 i = 0, j = 0; + u8 i = 0, j = 0, max_j = 0; u32 tmp_a, tmp_b; u32 tmp_idx_a, tmp_idx_b; @@ -115,7 +115,8 @@ void phydm_seq_sorting(void *dm_void, u32 *value, u32 *rank_idx, u32 *idx_out, rank_idx[i] = i; for (i = 0; i < (seq_length - 1); i++) { - for (j = 0; j < (seq_length - 1 - i); j++) { + max_j = seq_length - 1 - i; + for (j = 0; j < max_j; j++) { tmp_a = value[j]; tmp_b = value[j + 1]; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_math_lib.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_math_lib.h index a96ae5ee4..a602c9bc6 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_math_lib.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_math_lib.h @@ -34,7 +34,7 @@ * 1 Definition * 1 ============================================================ */ - +#define ABS_8(X) (((X) & BIT(7)) ? (0 - (X)) : (X)) #define PHYDM_DIV(a, b) ((b) ? ((a) / (b)) : 0) #define DIVIDED_2(X) ((X) >> 1) /*@1/3 ~ 11/32*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_mp.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_mp.c index 7512cc01b..013b465f0 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_mp.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_mp.c @@ -39,6 +39,7 @@ void phydm_mp_set_single_tone_jgr3(void *dm_void, boolean is_single_tone, struct dm_struct *dm = (struct dm_struct *)dm_void; struct phydm_mp *mp = &dm->dm_mp_table; u8 start = RF_PATH_A, end = RF_PATH_A; + u8 max_rf_path = RF_PATH_A; u8 i = 0; u8 central_ch = 0; boolean is_2g_ch = false; @@ -102,41 +103,50 @@ void phydm_mp_set_single_tone_jgr3(void *dm_void, boolean is_single_tone, central_ch = (u8)odm_get_rf_reg(dm, RF_PATH_A, RF_0x18, 0xff); is_2g_ch = (central_ch <= 14) ? true : false; + if (dm->support_ic_type & ODM_RTL8723F) + max_rf_path = RF_PATH_C; + else + max_rf_path = RF_PATH_MEM_SIZE; + if (is_single_tone) { /*Disable CCA*/ if (is_2g_ch) { /*CCK RxIQ weighting = [0,0]*/ - if(!(dm->support_ic_type & ODM_RTL8723F)) { + if(!(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A))) { odm_set_bb_reg(dm, R_0x1a9c, BIT(20), 0x0); odm_set_bb_reg(dm, R_0x1a14, 0x300, 0x3); } } /*Disable CCK CCA*/ - if(dm->support_ic_type & ODM_RTL8723F) + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) odm_set_bb_reg(dm, R_0x2a24, BIT(13), 0x1); /*Disable OFDM CCA*/ odm_set_bb_reg(dm, R_0x1d58, 0xff8, 0x1ff); - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { for (i = start; i <= end; i++) { - odm_set_rf_reg(dm, i, RF_0x5, BIT(0), 0x0); - mp->rf0[i] = odm_get_rf_reg(dm, i, RF_0x0, RFREG_MASK); - /*Tx mode: RF0x00[19:16]=4'b0010 */ - odm_set_rf_reg(dm, i, RF_0x0, 0xF0000, 0x2); - /*Lowest RF gain index: RF_0x1[5:0] TX power*/ - mp->rf1[i] = odm_get_rf_reg(dm, i, RF_0x1, RFREG_MASK); - odm_set_rf_reg(dm, i, RF_0x1, 0x3f, 0x0);//TX power - /*RF LO enabled */ - odm_set_rf_reg(dm, i, RF_0x58, BIT(1), 0x1); + if (i < max_rf_path) { + odm_set_rf_reg(dm, i, RF_0x5, BIT(0), 0x0); + mp->rf0[RF_PATH_MEM_SIZE-1] = odm_get_rf_reg(dm, i, RF_0x0, RFREG_MASK); + /*Tx mode: RF0x00[19:16]=4'b0010 */ + odm_set_rf_reg(dm, i, RF_0x0, 0xF0000, 0x2); + /*Lowest RF gain index: RF_0x1[5:0] TX power*/ + mp->rf1[RF_PATH_MEM_SIZE-1] = odm_get_rf_reg(dm, i, RF_0x1, RFREG_MASK); + odm_set_rf_reg(dm, i, RF_0x1, 0x3f, 0x0);//TX power + /*RF LO enabled */ + odm_set_rf_reg(dm, i, RF_0x58, BIT(1), 0x1); + } } } else { for (i = start; i <= end; i++) { - mp->rf0[i] = odm_get_rf_reg(dm, i, RF_0x0, RFREG_MASK); - /*Tx mode: RF0x00[19:16]=4'b0010 */ - odm_set_rf_reg(dm, i, RF_0x0, 0xF0000, 0x2); - /*Lowest RF gain index: RF_0x0[4:0] = 0*/ - odm_set_rf_reg(dm, i, RF_0x0, 0x1f, 0x0); - /*RF LO enabled */ - odm_set_rf_reg(dm, i, RF_0x58, BIT(1), 0x1); + if (i < max_rf_path) { + mp->rf0[i] = odm_get_rf_reg(dm, i, RF_0x0, RFREG_MASK); + /*Tx mode: RF0x00[19:16]=4'b0010 */ + odm_set_rf_reg(dm, i, RF_0x0, 0xF0000, 0x2); + /*Lowest RF gain index: RF_0x0[4:0] = 0*/ + odm_set_rf_reg(dm, i, RF_0x0, 0x1f, 0x0); + /*RF LO enabled */ + odm_set_rf_reg(dm, i, RF_0x58, BIT(1), 0x1); + } } } @@ -167,30 +177,34 @@ void phydm_mp_set_single_tone_jgr3(void *dm_void, boolean is_single_tone, } else { /*Enable CCA*/ if (is_2g_ch) { /*CCK RxIQ weighting = [1,1]*/ - if(!(dm->support_ic_type & ODM_RTL8723F)) { + if(!(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A))) { odm_set_bb_reg(dm, R_0x1a9c, BIT(20), 0x1); odm_set_bb_reg(dm, R_0x1a14, 0x300, 0x0); } } /*Enable CCK CCA*/ - if(dm->support_ic_type & ODM_RTL8723F) + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) odm_set_bb_reg(dm, R_0x2a24, BIT(13), 0x0); /*Enable OFDM CCA*/ odm_set_bb_reg(dm, R_0x1d58, 0xff8, 0x0); - if(dm->support_ic_type & ODM_RTL8723F) { + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { for (i = start; i <= end; i++) { - odm_set_rf_reg(dm, i, RF_0x0, RFREG_MASK, mp->rf0[i]); - odm_set_rf_reg(dm, i, RF_0x1, RFREG_MASK, mp->rf1[i]); - /*RF LO disabled */ - odm_set_rf_reg(dm, i, RF_0x58, BIT(1), 0x0); - odm_set_rf_reg(dm, i, RF_0x5, BIT(0), 0x1); + if (i < max_rf_path) { + odm_set_rf_reg(dm, i, RF_0x0, RFREG_MASK, mp->rf0[RF_PATH_MEM_SIZE-1]); + odm_set_rf_reg(dm, i, RF_0x1, RFREG_MASK, mp->rf1[RF_PATH_MEM_SIZE-1]); + /*RF LO disabled */ + odm_set_rf_reg(dm, i, RF_0x58, BIT(1), 0x0); + odm_set_rf_reg(dm, i, RF_0x5, BIT(0), 0x1); + } } } else { for (i = start; i <= end; i++) { - odm_set_rf_reg(dm, i, RF_0x0, RFREG_MASK, mp->rf0[i]); - /*RF LO disabled */ - odm_set_rf_reg(dm, i, RF_0x58, BIT(1), 0x0); + if (i < max_rf_path) { + odm_set_rf_reg(dm, i, RF_0x0, RFREG_MASK, mp->rf0[i]); + /*RF LO disabled */ + odm_set_rf_reg(dm, i, RF_0x58, BIT(1), 0x0); + } } } #if (RTL8814B_SUPPORT) @@ -227,7 +241,7 @@ void phydm_mp_set_carrier_supp_jgr3(void *dm_void, boolean is_carrier_supp, if (!odm_get_bb_reg(dm, R_0x1c3c, BIT(1))) odm_set_bb_reg(dm, R_0x1c3c, BIT(1), 1); - if(dm->support_ic_type & ODM_RTL8723F){ + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)){ /* @Carrier suppress tx */ odm_set_bb_reg(dm, R_0x2a08, BIT(18), 0x1); /*turn off scramble setting */ @@ -255,7 +269,7 @@ void phydm_mp_set_carrier_supp_jgr3(void *dm_void, boolean is_carrier_supp, } } else { /*Stop Carrier Suppression. */ if (phydm_is_cck_rate(dm, (u8)rate_index)) { - if(dm->support_ic_type & ODM_RTL8723F) { + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { /* TX Stop */ odm_set_bb_reg(dm, R_0x2a00, BIT(0), 0x1); /* Clear BB cont tx */ @@ -292,7 +306,7 @@ void phydm_mp_set_single_carrier_jgr3(void *dm_void, boolean is_single_carrier) if (!odm_get_bb_reg(dm, R_0x1c3c, BIT(0))) odm_set_bb_reg(dm, R_0x1c3c, BIT(0), 1); - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { /*3. turn on scramble setting */ odm_set_bb_reg(dm, R_0x2a04, BIT(5), 0); /*4. Turn On single carrier. */ @@ -337,14 +351,14 @@ void phydm_mp_get_rx_ok_jgr3(void *dm_void) u32 cck_ok = 0, ofdm_ok = 0, ht_ok = 0, vht_ok = 0; u32 cck_err = 0, ofdm_err = 0, ht_err = 0, vht_err = 0; - if(dm->support_ic_type & ODM_RTL8723F) + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) cck_ok = odm_get_bb_reg(dm, R_0x2aac, MASKLWORD); else cck_ok = odm_get_bb_reg(dm, R_0x2c04, MASKLWORD); ofdm_ok = odm_get_bb_reg(dm, R_0x2c14, MASKLWORD); ht_ok = odm_get_bb_reg(dm, R_0x2c10, MASKLWORD); vht_ok = odm_get_bb_reg(dm, R_0x2c0c, MASKLWORD); - if(dm->support_ic_type & ODM_RTL8723F) + if(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) cck_err = odm_get_bb_reg(dm, R_0x2aac, MASKHWORD); else cck_err = odm_get_bb_reg(dm, R_0x2c04, MASKHWORD); diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_noisemonitor.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_noisemonitor.c index d2e95cfa0..802080d9f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_noisemonitor.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_noisemonitor.c @@ -247,7 +247,7 @@ s16 phydm_idle_noise_measure_ac(struct dm_struct *dm, u8 pause_dig, odm_pause_dig(dm, PHYDM_RESUME, PHYDM_PAUSE_LEVEL_1, igi); func_end = odm_get_progressing_time(dm, func_start); - PHYDM_DBG(dm, DBG_ENV_MNTR, "end\n"); + PHYDM_DBG(dm, DBG_ENV_MNTR, "end, func_end=%lld\n", func_end); return dm->noise_level.noise_all; } @@ -378,7 +378,7 @@ s16 odm_inband_noise_monitor_ac(struct dm_struct *dm, u8 pause_dig, u8 igi, func_end = odm_get_progressing_time(dm, func_start); - PHYDM_DBG(dm, DBG_ENV_MNTR, "%s <==\n", __func__); + PHYDM_DBG(dm, DBG_ENV_MNTR, "%s <==, func_end=%lld\n", __func__, func_end); return dm->noise_level.noise_all; } diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pathdiv.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pathdiv.c index a6b347cf7..442e357bb 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pathdiv.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pathdiv.c @@ -687,6 +687,7 @@ void phydm_tx_path_by_mac_or_reg(void *dm_void, enum phydm_path_ctrl ctrl) case ODM_RTL8822C: case ODM_RTL8812F: case ODM_RTL8197G: + case ODM_RTL8822E: if (ctrl == TX_PATH_BY_REG) { odm_set_bb_reg(dm, R_0x1e24, BIT(16), 0); /*OFDM*/ odm_set_bb_reg(dm, R_0x1a84, 0xe0, 0); /*CCK*/ @@ -811,6 +812,13 @@ void phydm_set_tx_path_by_bb_reg(void *dm_void, enum bb_path tx_path_sel_1ss) phydm_update_tx_path_8812a(dm, tx_path_sel_1ss); break; #endif + + #if RTL8822E_SUPPORT + case ODM_RTL8822E: + phydm_config_tx_path_8822e(dm, dm->tx_2ss_status, + tx_path_sel_1ss, tx_path_sel_cck); + break; + #endif default: break; } @@ -921,6 +929,7 @@ void phydm_tx_path_diversity(void *dm_void) case ODM_RTL8192F: case ODM_RTL8812F: case ODM_RTL8197G: + case ODM_RTL8822E: if (dm->rx_ant_status != BB_PATH_AB) { PHYDM_DBG(dm, DBG_PATH_DIV, "[Return] tx_Path_en=%d, rx_Path_en=%d\n", @@ -984,6 +993,7 @@ void phydm_tx_path_diversity_init(void *dm_void) case ODM_RTL8192F: case ODM_RTL8812F: case ODM_RTL8197G: + case ODM_RTL8822E: phydm_tx_path_diversity_init_v2(dm); /*@ After 8822B*/ break; #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pathdiv.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pathdiv.h index ee3438252..5f9210050 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pathdiv.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pathdiv.h @@ -31,7 +31,7 @@ #define PATHDIV_VERSION "4.4" #if (RTL8192F_SUPPORT || RTL8822B_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8812F_SUPPORT || RTL8197G_SUPPORT) + RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_CONFIG_PATH_DIV_V2 #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_phystatus.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_phystatus.c index 8d1ed66df..4572dc3ee 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_phystatus.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_phystatus.c @@ -75,7 +75,7 @@ void phydm_rx_statistic_cal(struct dm_struct *dm, { struct odm_phy_dbg_info *dbg_i = &dm->phy_dbg_info; -#ifdef PHYDM_IC_JGR3_SERIES_SUPPORT +#if (defined (PHYDM_IC_JGR3_SERIES_SUPPORT) && defined (CONFIG_BB_TXBF_API)) struct phydm_bf_rate_info_jgr3 *bfrateinfo = &dm->bf_rate_info_jgr3; #endif @@ -129,7 +129,7 @@ void phydm_rx_statistic_cal(struct dm_struct *dm, #if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT ||\ (defined(PHYSTS_3RD_TYPE_SUPPORT))) dbg_i->num_mu_vht_pkt[offset]++; - #ifdef PHYDM_IC_JGR3_SERIES_SUPPORT + #if (defined (PHYDM_IC_JGR3_SERIES_SUPPORT) && defined(CONFIG_BB_TXBF_API)) bfrateinfo->num_mu_vht_pkt[offset]++; #endif #else @@ -144,7 +144,7 @@ void phydm_rx_statistic_cal(struct dm_struct *dm, (PHYSTS_2ND_TYPE_IC | PHYSTS_3RD_TYPE_IC)) { if (bw_idx == *dm->band_width) { dbg_i->num_qry_vht_pkt[offset]++; - #ifdef PHYDM_IC_JGR3_SERIES_SUPPORT + #if (defined (PHYDM_IC_JGR3_SERIES_SUPPORT) && defined (CONFIG_BB_TXBF_API)) bfrateinfo->num_qry_vht_pkt[offset]++; #endif @@ -1653,6 +1653,9 @@ void phydm_avg_condi_num(void *dm_void, arry_idx = pktinfo->rate_ss - 1; + if (arry_idx >= RF_PATH_MEM_SIZE) + return; + dbg_s->p4_cnt[arry_idx]++; dbg_s->cn_sum[arry_idx] += dbg_i->condition_num_seg0; @@ -1674,8 +1677,10 @@ void phydm_print_phystat_jgr3(struct dm_struct *dm, u8 *phy_sts, struct phy_sts_rpt_jgr3_type2_3 *rpt2 = NULL; struct phy_sts_rpt_jgr3_type4 *rpt3 = NULL; struct phy_sts_rpt_jgr3_type5 *rpt4 = NULL; +#if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) struct phy_sts_rpt_jgr3_type6 *rpt5 = NULL; - +#endif + struct odm_phy_dbg_info *dbg = &dm->phy_dbg_info; u8 phy_status_page_num = (*phy_sts & 0xf); u32 *phy_status_tmp = NULL; @@ -1691,12 +1696,14 @@ void phydm_print_phystat_jgr3(struct dm_struct *dm, u8 *phy_sts, rpt3 = (struct phy_sts_rpt_jgr3_type4 *)phy_sts; rpt4 = (struct phy_sts_rpt_jgr3_type5 *)phy_sts; - if (dm->support_ic_type & ODM_RTL8723F) { +#if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { rpt5 = (struct phy_sts_rpt_jgr3_type6 *)phy_sts; - + if (pktinfo->is_cck_rate) phy_status_page_num = 0; } +#endif phy_status_tmp = (u32 *)phy_sts; @@ -1726,8 +1733,8 @@ void phydm_print_phystat_jgr3(struct dm_struct *dm, u8 *phy_sts, ((4 * i) + 3), (4 * i), phy_status_tmp[i]); if (phy_status_page_num == 0) { /* @CCK(default) */ - if (dm->support_ic_type & ODM_RTL8723F) { - #if (RTL8723F_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { + #if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) pr_debug("[0] Pop_idx=%d, Pkt_cnt=%d, Channel_msb=%d, AGC_table_path0=%d, TRSW_mux_keep=%d, HW_AntSW_occur_keep_cck=%d, Gnt_BT_keep_cnt=%d,Rssi_msb=%d\n", rpt5->pop_idx, rpt5->pkt_cnt, rpt5->channel_msb, rpt5->agc_table_a, @@ -1960,6 +1967,7 @@ void phydm_get_physts_0_jgr3(struct dm_struct *dm, u8 *phy_status_inf, /* type 0 is used for cck packet */ struct phy_sts_rpt_jgr3_type0 *phy_sts = NULL; struct odm_phy_dbg_info *dbg_i = &dm->phy_dbg_info; + struct phydm_physts *physts_table = &dm->dm_physts_table; u8 sq = 0, i, rx_cnt = 0; s8 rx_power[4], pwdb; s8 rx_pwr_db_max = -120; @@ -1982,9 +1990,11 @@ void phydm_get_physts_0_jgr3(struct dm_struct *dm, u8 *phy_status_inf, rx_power[2] = phy_sts->pwdb_c; rx_power[3] = phy_sts->pwdb_d; - #if (RTL8822C_SUPPORT || RTL8197G_SUPPORT) - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8197G)) { - struct phydm_physts *physts_table = &dm->dm_physts_table; + #if (RTL8822C_SUPPORT || RTL8197G_SUPPORT || RTL8814B_SUPPORT ||\ + RTL8822E_SUPPORT) + if (dm->support_ic_type & + (ODM_RTL8822C | ODM_RTL8197G | ODM_RTL8814B | ODM_RTL8814C |\ + ODM_RTL8822E)) { if (phy_sts->gain_a < physts_table->cck_gi_l_bnd) rx_power[0] += ((physts_table->cck_gi_l_bnd - phy_sts->gain_a) << 1); @@ -1999,6 +2009,22 @@ void phydm_get_physts_0_jgr3(struct dm_struct *dm, u8 *phy_status_inf, rx_power[1] -= ((phy_sts->gain_b - physts_table->cck_gi_u_bnd) << 1); } + if (dm->support_ic_type & + (ODM_RTL8814B | ODM_RTL8814C)) { + if (phy_sts->gain_c < physts_table->cck_gi_l_bnd) + rx_power[2] += ((physts_table->cck_gi_l_bnd - + phy_sts->gain_c) << 1); + else if (phy_sts->gain_c > physts_table->cck_gi_u_bnd) + rx_power[2] -= ((phy_sts->gain_c - + physts_table->cck_gi_u_bnd) << 1); + + if (phy_sts->gain_d < physts_table->cck_gi_l_bnd) + rx_power[3] += ((physts_table->cck_gi_l_bnd - + phy_sts->gain_d) << 1); + else if (phy_sts->gain_d > physts_table->cck_gi_u_bnd) + rx_power[3] -= ((phy_sts->gain_d - + physts_table->cck_gi_u_bnd) << 1); + } #endif /* @Update per-path information */ @@ -2037,6 +2063,7 @@ void phydm_get_physts_0_jgr3(struct dm_struct *dm, u8 *phy_status_inf, } /* @Modify CCK PWDB if old AGC */ + #if 0 if (!dm->cck_new_agc) { u8 lna_idx[4], vga_idx[4]; @@ -2049,6 +2076,7 @@ void phydm_get_physts_0_jgr3(struct dm_struct *dm, u8 *phy_status_inf, lna_idx[3] = ((phy_sts->lna_h_d << 3) | phy_sts->lna_l_d); vga_idx[3] = phy_sts->vga_d; } + #endif /*@CCK no STBC and LDPC*/ dbg_i->is_ldpc_pkt = false; @@ -2080,6 +2108,7 @@ void phydm_get_physts_1_others_jgr3(struct dm_struct *dm, u8 *phy_status_inf, { struct phy_sts_rpt_jgr3_type1 *phy_sts = NULL; struct odm_phy_dbg_info *dbg_i = &dm->phy_dbg_info; + struct phydm_fa_struct *fa_t = &dm->false_alm_cnt; s8 evm = 0; u8 i; s8 sq = 0; @@ -2112,6 +2141,9 @@ void phydm_get_physts_1_others_jgr3(struct dm_struct *dm, u8 *phy_status_inf, phy_info->is_mu_packet = false; } + if (phy_sts->gnt_bt && pktinfo->is_packet_match_bssid) + fa_t->cnt_bt_polluted++; + phydm_parsing_cfo(dm, pktinfo, phy_sts->cfo_tail, pktinfo->rate_ss); #if (defined(CONFIG_PHYDM_ANTENNA_DIVERSITY)) @@ -2136,6 +2168,7 @@ void phydm_get_physts_4_others_jgr3(struct dm_struct *dm, u8 *phy_status_inf, { struct phy_sts_rpt_jgr3_type4 *phy_sts = NULL; struct odm_phy_dbg_info *dbg_i = &dm->phy_dbg_info; + struct phydm_fa_struct *fa_t = &dm->false_alm_cnt; s8 evm = 0; u8 i; s8 sq = 0; @@ -2157,6 +2190,10 @@ void phydm_get_physts_4_others_jgr3(struct dm_struct *dm, u8 *phy_status_inf, phy_info->rx_snr[i] = phy_sts->rxsnr[i] >> 1; } phy_info->signal_quality = phy_info->rx_mimo_signal_quality[0]; + + if (phy_sts->gnt_bt && pktinfo->is_packet_match_bssid) + fa_t->cnt_bt_polluted++; + #if (defined(CONFIG_PHYDM_ANTENNA_DIVERSITY)) dm->dm_fat_table.antsel_rx_keep_0 = phy_sts->antidx_a; dm->dm_fat_table.antsel_rx_keep_1 = phy_sts->antidx_b; @@ -2174,7 +2211,7 @@ void phydm_get_physts_5_others_jgr3(struct dm_struct *dm, u8 *phy_status_inf, struct phy_sts_rpt_jgr3_type5 *phy_sts = NULL; } -#if (RTL8723F_SUPPORT) +#if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) void phydm_get_physts_6_jgr3(struct dm_struct *dm, u8 *phy_status_inf, struct phydm_perpkt_info_struct *pktinfo, struct phydm_phyinfo_struct *phy_info) @@ -2213,7 +2250,7 @@ void phydm_get_physts_6_jgr3(struct dm_struct *dm, u8 *phy_status_inf, if (pwdb > rx_pwr_db_max) rx_pwr_db_max = pwdb; } - + /* @Calculate EVM U(8,2)*/ evm = phy_sts->evm_pld >> 2; if (pktinfo->data_rate > ODM_RATE2M) @@ -2236,9 +2273,9 @@ void phydm_get_physts_6_jgr3(struct dm_struct *dm, u8 *phy_status_inf, phy_info->is_mu_packet = false; phy_info->rx_pwdb_all = phydm_pw_2_percent(rx_pwr_db_max); phy_info->band_width = CHANNEL_WIDTH_20; - + //phydm_parsing_cfo(dm, pktinfo, phy_sts->avg_cfo, pktinfo->rate_ss); - + #ifdef CONFIG_PHYDM_ANTENNA_DIVERSITY dm->dm_fat_table.antsel_rx_keep_0 = phy_sts->antidx_a; dm->dm_fat_table.antsel_rx_keep_1 = 0; @@ -2292,6 +2329,7 @@ void phydm_get_physts_ofdm_cmn_jgr3(struct dm_struct *dm, u8 *phy_status_inf, dbg_i->is_ldpc_pkt = phy_sts->ldpc; dbg_i->is_stbc_pkt = phy_sts->stbc; dbg_i->num_qry_bf_pkt += phy_sts->beamformed; + dbg_i->band_idx = phy_sts->band; } void phydm_process_dm_rssi_jgr3(struct dm_struct *dm, @@ -2395,7 +2433,7 @@ void phydm_rx_physts_jgr3(void *dm_void, u8 *phy_sts, { struct dm_struct *dm = (struct dm_struct *)dm_void; u8 phy_status_type = (*phy_sts & 0xf); - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { if (pktinfo->data_rate <= ODM_RATE11M) phy_status_type = 6; } @@ -2424,7 +2462,7 @@ void phydm_rx_physts_jgr3(void *dm_void, u8 *phy_sts, phydm_get_physts_ofdm_cmn_jgr3(dm, phy_sts, pktinfo, phy_info); phydm_get_physts_5_others_jgr3(dm, phy_sts, pktinfo, phy_info); break; -#if (RTL8723F_SUPPORT) +#if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) case 6: phydm_get_physts_6_jgr3(dm, phy_sts, pktinfo, phy_info); break; @@ -3114,8 +3152,16 @@ boolean odm_phy_status_query(struct dm_struct *dm, struct pkt_process_info *pkt_proc = &dm->pkt_proc_struct; boolean auto_swch_en = dm->pkt_proc_struct.physts_auto_swch_en; #endif + struct odm_phy_dbg_info *dbg_i = &dm->phy_dbg_info; + struct phydm_phystatus_avg *dbg_avg = &dbg_i->phystatus_statistic_avg; u8 rate = pktinfo->data_rate; u8 page = (*phy_sts & 0xf); + u8 i = 0; + #if (RTL8822E_SUPPORT) + u8 rssi_tmp = 0, rssi_diff[2] = {0, 0}; + //u8 mcs_rssi[16] = {12, 14, 18, 21, 25, 28, 31, 34, 12, 14, 18, 21, 25, 28, 31, 34}; + u8 mcs_rssi[16] = {7, 9, 12, 15, 19, 21, 22, 25, 7, 9, 12, 15, 19, 21, 22, 25}; + #endif pktinfo->is_cck_rate = PHYDM_IS_CCK_RATE(rate); pktinfo->rate_ss = phydm_rate_to_num_ss(dm, rate); @@ -3139,6 +3185,57 @@ boolean odm_phy_status_query(struct dm_struct *dm, } #endif phydm_rx_physts_jgr3(dm, phy_sts, pktinfo, phy_info); + #if (RTL8723F_SUPPORT || RTL8735B_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B)) { + if (!pktinfo->is_cck_rate) { + for (i = RF_PATH_A; i < dm->num_rf_path; i++) { + if (phy_info->rx_mimo_signal_strength[i] == 0) { + PHYDM_DBG(dm, DBG_PHY_STATUS, "SKIP parsing, rssi = 0\n"); + phy_info->physts_rpt_valid = false; + return false; + } + } + } + } + #endif + #if (RTL8822E_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8822E)) { + if (dbg_avg->rssi_beacon_avg[0] >= dbg_avg->rssi_beacon_avg[1]) { + rssi_diff[0] = dbg_avg->rssi_beacon_avg[0] - dbg_avg->rssi_beacon_avg[1]; + } else { + rssi_diff[1] = dbg_avg->rssi_beacon_avg[1] - dbg_avg->rssi_beacon_avg[0]; + } + if ((!pktinfo->is_cck_rate) && (dm->bt_is_linked) && (dbg_i->band_idx == 0) && (rate <= ODM_RATEMCS15) && (dm->btc_rssi_processing)) { + for (i = RF_PATH_A; i < dm->num_rf_path; i++) { + if (phy_info->rx_mimo_signal_strength[i] <= 42) { + rssi_tmp = phy_info->rx_mimo_signal_strength[i]; + if (dm->btc_mcs_rssi_en) { + if ((rssi_tmp >= mcs_rssi[rate - ODM_RATEMCS0 + 1]) || (rssi_tmp < mcs_rssi[rate - ODM_RATEMCS0])) { + phy_info->rx_mimo_signal_strength[i] = mcs_rssi[rate - ODM_RATEMCS0]; + PHYDM_DBG(dm, DBG_RSSI_MNTR, "MCS check rate[0x%x] : rssi{origin, new} = {%d, %d}\n", rate, rssi_tmp, mcs_rssi[rate - ODM_RATEMCS0]); + } + } + if (phy_info->rx_mimo_signal_strength[i] > dbg_avg->rssi_beacon_avg[i]) { + rssi_tmp = phy_info->rx_mimo_signal_strength[i]; + phy_info->rx_mimo_signal_strength[i] = dbg_avg->rssi_beacon_avg[i]; + PHYDM_DBG(dm, DBG_RSSI_MNTR, "Data rssi > Beacon rssi, rate[0x%x] : rssi{origin, new} = {%d, %d}\n", rate, rssi_tmp, phy_info->rx_mimo_signal_strength[i]); + } + if (dbg_avg->rssi_beacon_avg[i] >= dm->bt_cck_rssi_th) { + rssi_tmp = phy_info->rx_mimo_signal_strength[i]; + phy_info->rx_mimo_signal_strength[i] = dbg_avg->rssi_beacon_avg[i] - 14; + PHYDM_DBG(dm, DBG_RSSI_MNTR, "Beacon rssi >= %d, rate[0x%x] : rssi{origin, new} = {%d, %d}\n", dm->bt_cck_rssi_th, rate, rssi_tmp, phy_info->rx_mimo_signal_strength[i]); + } + } + } + } + if (phy_info->rx_mimo_signal_strength[0] == phy_info->rx_mimo_signal_strength[1]) { + if (rssi_diff[0] != 0) + phy_info->rx_mimo_signal_strength[0] += rssi_diff[0]; + else if (rssi_diff[1] != 0) + phy_info->rx_mimo_signal_strength[1] += rssi_diff[1]; + } + } + #endif phydm_process_dm_rssi_jgr3(dm, phy_info, pktinfo); #endif } else if (dm->support_ic_type & PHYSTS_2ND_TYPE_IC) { @@ -3206,6 +3303,12 @@ void phydm_rx_phy_status_init(void *dm_void) dbg->show_phy_sts_max_cnt = 1; dbg->show_phy_sts_cnt = 0; + #if (RTL8822E_SUPPORT) + dm->btc_rssi_processing = true; + dm->btc_mcs_rssi_en = false; + dm->bt_cck_rssi_th = 35; + #endif + phydm_avg_phystatus_init(dm); #ifdef PHYDM_PHYSTAUS_AUTO_SWITCH @@ -3231,6 +3334,12 @@ void phydm_physts_dbg(void *dm_void, char input[][16], u32 *_used, if ((strcmp(input[1], help) == 0)) { PDM_SNPF(out_len, used, output + used, out_len - used, "Page Auto Switching: swh {en} {bitmap(hex)}\n"); + PDM_SNPF(out_len, used, output + used, out_len - used, + "BT is linked : bt_en {en}\n"); + PDM_SNPF(out_len, used, output + used, out_len - used, + "BT rssi by mcs rate : btc_mcs_rssi_en {en}\n"); + PDM_SNPF(out_len, used, output + used, out_len - used, + "BT rssi sw processing : btc_rssi_en {en} {cck_rssi_th}\n"); } else if ((strcmp(input[1], "swh") == 0)) { #ifdef PHYDM_PHYSTAUS_AUTO_SWITCH PHYDM_SSCANF(input[3], DCMD_HEX, &var[2]); @@ -3241,6 +3350,27 @@ void phydm_physts_dbg(void *dm_void, char input[][16], u32 *_used, "Page Auto Switching: en=%d, bitmap=0x%x\n", enable, var[2]); #endif + } else if ((strcmp(input[1], "bt_en") == 0)) { + PHYDM_SSCANF(input[3], DCMD_DECIMAL, &var[2]); + #if (RTL8822E_SUPPORT) + phydm_set_agc_table_8822e(dm, (boolean)var[1], (u8)var[2]); + PDM_SNPF(out_len, used, output + used, out_len - used, "bt_is_linked = %d, agc table idx = %d\n", + dm->bt_is_linked, dm->bt_iso_tbl_idx); + #endif + } else if ((strcmp(input[1], "btc_mcs_rssi_en") == 0)) { + #if (RTL8822E_SUPPORT) + dm->btc_mcs_rssi_en = (boolean)var[1]; + PDM_SNPF(out_len, used, output + used, out_len - used, "btc_mcs_rssi_en = %d\n", + dm->btc_mcs_rssi_en); + #endif + } else if ((strcmp(input[1], "btc_rssi_en") == 0)) { + #if (RTL8822E_SUPPORT) + PHYDM_SSCANF(input[3], DCMD_DECIMAL, &var[2]); + dm->btc_rssi_processing = (boolean)var[1]; + dm->bt_cck_rssi_th = (u8)var[2]; + PDM_SNPF(out_len, used, output + used, out_len - used, "btc_rssi_processing = %d, bt_cck_rssi_th = %d\n", + dm->btc_rssi_processing, dm->bt_cck_rssi_th); + #endif } *_used = used; *_out_len = out_len; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_phystatus.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_phystatus.h index c65b6245f..2e40350a5 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_phystatus.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_phystatus.h @@ -648,7 +648,7 @@ __PACK struct phy_sts_rpt_jgr3_type0 { u8 gain_d : 6; #endif }; -#if(RTL8723F_SUPPORT) +#if(RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) __PACK struct phy_sts_rpt_jgr3_type6 { /* judy_add_8723F_0512 */ /* @DW0 : Offset 0 */ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pmac_tx_setting.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pmac_tx_setting.c index 296f39c39..712a39a17 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pmac_tx_setting.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pmac_tx_setting.c @@ -32,6 +32,7 @@ #ifdef PHYDM_PMAC_TX_SETTING_SUPPORT #ifdef PHYDM_IC_JGR3_SERIES_SUPPORT +boolean bk_cck_disable_cca = 0; void phydm_start_cck_cont_tx_jgr3(void *dm_void, struct phydm_pmac_info *tx_info) { @@ -42,7 +43,7 @@ void phydm_start_cck_cont_tx_jgr3(void *dm_void, /* if CCK block on? */ if (!odm_get_bb_reg(dm, R_0x1c3c, BIT(1))) odm_set_bb_reg(dm, R_0x1c3c, BIT(1), 0x1); - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { odm_set_bb_reg(dm, R_0x2a08, BIT(21)|BIT(20), rate); odm_set_bb_reg(dm, R_0x2a04, BIT(5), 0x0); /* turn on scrambler*/ } else { @@ -72,7 +73,7 @@ void phydm_stop_cck_cont_tx_jgr3(void *dm_void) pmac_tx->cck_cont_tx = false; pmac_tx->ofdm_cont_tx = false; - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { /* @Disable pmac tx_en*/ odm_set_bb_reg(dm, R_0x2a04, BIT(5), 0x0); /* turn on scrambler*/ } else { @@ -97,7 +98,7 @@ void phydm_start_ofdm_cont_tx_jgr3(void *dm_void) /* 1. if OFDM block on */ if (!odm_get_bb_reg(dm, R_0x1c3c, BIT(0))) odm_set_bb_reg(dm, R_0x1c3c, BIT(0), 0x1); - if (!(dm->support_ic_type & ODM_RTL8723F)) { + if (!(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A))) { /* 2. set CCK test mode off, set to CCK normal mode */ odm_set_bb_reg(dm, R_0x1a00, 0x3, 0x0); @@ -138,7 +139,7 @@ void phydm_stop_pmac_tx_jgr3(void *dm_void, struct phydm_pmac_info *tx_info) u32 tmp = 0; odm_set_bb_reg(dm, R_0x1e70, 0xf, 0x2); /* TX Stop */ - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { if (tx_info->mode == CONT_TX) { if (pmac_tx->is_cck_rate) { /* TX Stop */ @@ -150,7 +151,7 @@ void phydm_stop_pmac_tx_jgr3(void *dm_void, struct phydm_pmac_info *tx_info) /* Clear TX Stop */ odm_set_bb_reg(dm, R_0x2a00, BIT(0), 0x0); phydm_stop_cck_cont_tx_jgr3(dm); - } else + } else phydm_stop_ofdm_cont_tx_jgr3(dm); } else { if (pmac_tx->is_cck_rate) { @@ -162,7 +163,7 @@ void phydm_stop_pmac_tx_jgr3(void *dm_void, struct phydm_pmac_info *tx_info) odm_set_bb_reg(dm, R_0x2a08, BIT(31), 0x1); phydm_stop_cck_cont_tx_jgr3(dm); } - } + } }else { if (tx_info->mode == CONT_TX) { if (pmac_tx->is_cck_rate) @@ -185,7 +186,7 @@ void phydm_set_mac_phy_txinfo_jgr3(void *dm_void, /*0x900[1] ndp_sound */ odm_set_bb_reg(dm, R_0x900, BIT(1), tx_info->ndp_sound); - #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE)) + #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE | ODM_IOT)) tx_info->m_stbc = tx_info->m_stbc - 1; #endif /*0x900[27:24] txsc [29:28] bw [31:30] m_stbc */ @@ -273,8 +274,8 @@ void phydm_set_cck_preamble_hdr_jgr3(void *dm_void, if (!pmac_tx->is_cck_rate) return; - if (dm->support_ic_type & ODM_RTL8723F) { - #if (RTL8723F_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { + #if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) odm_set_bb_reg(dm, R_0x2a04, 0x03ff0000, tx_info->packet_count); odm_set_bb_reg(dm, R_0x2a08, BIT(22), tx_info->service_field_bit2); odm_set_bb_reg(dm, R_0x2a08, BIT(21) | BIT(20), rate); @@ -326,7 +327,7 @@ void phydm_set_pmac_txon_jgr3(void *dm_void, struct phydm_pmac_info *tx_info) odm_set_bb_reg(dm, R_0x1d08, BIT(0), 0x1); /*Turn on PMAC */ - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { if (pmac_tx->is_cck_rate) { if (tx_info->mode == CONT_TX) { /* BB and PMAC cont tx */ @@ -347,7 +348,7 @@ void phydm_set_pmac_txon_jgr3(void *dm_void, struct phydm_pmac_info *tx_info) if (!odm_get_bb_reg(dm, R_0x1d10, BIT(16))) odm_set_bb_reg(dm, R_0x1d10, BIT(16), 0x1); #endif - + if (pmac_tx->is_cck_rate){ odm_set_bb_reg(dm, R_0x1e70, 0xf, 0x8); /*TX CCK ON */ odm_set_bb_reg(dm, R_0x1a84, BIT(31), 0x0); @@ -401,7 +402,7 @@ void phydm_set_tmac_tx_jgr3(void *dm_void) #endif /* Turn on TMAC CCK */ - if (!(dm->support_ic_type & ODM_RTL8723F)) { + if (!(dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A))) { if (!odm_get_bb_reg(dm, R_0x1a84, BIT(31))) odm_set_bb_reg(dm, R_0x1a84, BIT(31), 0x1); } @@ -469,14 +470,26 @@ void phydm_set_tmac_tx(void *dm_void) #endif } +void phydm_set_cck_disable_cca_jgr3(void *dm_void, boolean value) +{ + struct dm_struct *dm = (struct dm_struct *)dm_void; + if (dm->support_ic_type & ODM_RTL8730A) { + if (value == 1){ + bk_cck_disable_cca = (boolean)odm_get_bb_reg(dm, R_0x2a24, BIT(13)); + odm_set_bb_reg(dm, R_0x2a24, BIT(13), value); + } + else + odm_set_bb_reg(dm, R_0x2a24, BIT(13), bk_cck_disable_cca); + } +} + void phydm_pmac_tx_dbg(void *dm_void, char input[][16], u32 *_used, char *output, u32 *_out_len) { struct dm_struct *dm = (struct dm_struct *)dm_void; struct phydm_pmac_info tx_info; char help[] = "-h"; - char dbg_buf[PHYDM_SNPRINT_SIZE] = {0}; - u32 var[10] = {0}; + u32 var[3] = {0}; u32 used = *_used; u32 out_len = *_out_len; u8 i = 0; @@ -492,13 +505,11 @@ void phydm_pmac_tx_dbg(void *dm_void, char input[][16], u32 *_used, PDM_SNPF(out_len, used, output + used, out_len - used, "[pmac_tx] basic : {1} {rate_idx}(only 1M & 6M) {count}\n"); } else { - for (i = 1; i < 7; i++) { - if (input[i + 1]) { - PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, - &var[i]); - } + for (i = 1; i < 3; i++) { + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &var[i]); } + odm_memory_set(dm, &tx_info, 0, sizeof(struct phydm_pmac_info)); tx_info.en_pmac_tx = true; tx_info.mode = PKTS_TX; tx_info.ndp_sound = false; @@ -512,7 +523,7 @@ void phydm_pmac_tx_dbg(void *dm_void, char input[][16], u32 *_used, if (tx_info.tx_rate == ODM_RATE1M) { tx_info.signal_field = 0xa; /*rate = 1M*/ tx_info.service_field = 0x0; - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { tx_info.service_field_bit2= 0x1; tx_info.packet_length = 1000; /*1000 bytes*/ } @@ -530,11 +541,11 @@ void phydm_pmac_tx_dbg(void *dm_void, char input[][16], u32 *_used, tx_info.lsig[1] = 0x7d; tx_info.lsig[2] = 0x2; } - phydm_print_rate_2_buff(dm, tx_info.tx_rate, dbg_buf, + phydm_print_rate_2_buff(dm, tx_info.tx_rate, dm->dbg_buf, PHYDM_SNPRINT_SIZE); PDM_SNPF(out_len, used, output + used, out_len - used, "rate=%s, count=%d, pkt_interval=500(us), length=1000(bytes)\n", - dbg_buf, tx_info.packet_count); + dm->dbg_buf, tx_info.packet_count); if (phydm_stop_ic_trx(dm, PHYDM_SET) == PHYDM_SET_FAIL) { PDM_SNPF(out_len, used, output + used, out_len - used, diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pmac_tx_setting.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pmac_tx_setting.h index 532219ba6..b5e51d3b6 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pmac_tx_setting.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pmac_tx_setting.h @@ -106,6 +106,8 @@ void phydm_set_pmac_tx(void *dm_void, struct phydm_pmac_info *tx_info, void phydm_set_tmac_tx(void *dm_void); +void phydm_set_cck_disable_cca_jgr3(void *dm_void, boolean value); + void phydm_pmac_tx_dbg(void *dm_void, char input[][16], u32 *_used, char *output, u32 *_out_len); #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pre_define.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pre_define.h index a9c0e6a16..341937228 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pre_define.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_pre_define.h @@ -32,8 +32,8 @@ * 1 ============================================================ ***************************************************************/ -#define PHYDM_CODE_BASE "PHYDM_V051_GIT" -#define PHYDM_RELEASE_DATE "20210415.0" +#define PHYDM_CODE_BASE "PHYDM_V052" +#define PHYDM_RELEASE_DATE "20220428.0" /*PHYDM API status*/ #define PHYDM_SET_FAIL 0 @@ -60,15 +60,17 @@ #define MAX_PATH_NUM_8721D 1 #define MAX_PATH_NUM_8710C 1 #define MAX_PATH_NUM_8723F 2 +#define MAX_PATH_NUM_8735B 1 +#define MAX_PATH_NUM_8730A 1 /*@AC-IC*/ #define MAX_PATH_NUM_8821A 1 #define MAX_PATH_NUM_8881A 1 #define MAX_PATH_NUM_8821C 1 -#define MAX_PATH_NUM_8195B 1 #define MAX_PATH_NUM_8812A 2 #define MAX_PATH_NUM_8822B 2 #define MAX_PATH_NUM_8822C 2 +#define MAX_PATH_NUM_8822E 2 #define MAX_PATH_NUM_8814A 4 #define MAX_PATH_NUM_8814B 4 #define MAX_PATH_NUM_8814C 4 @@ -341,7 +343,7 @@ enum phydm_legacy_spec_rate { #define PHY_NUM_RATE_IDX NUM_RATE_AC_3SS /*[AC-2SS]*/ #elif (RTL8812A_SUPPORT || RTL8822B_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8812F_SUPPORT) + RTL8812F_SUPPORT || RTL8822E_SUPPORT) #define PHY_NUM_RATE_IDX NUM_RATE_AC_2SS /*[AC-1SS]*/ #elif (RTL8881A_SUPPORT || RTL8821A_SUPPORT || RTL8821C_SUPPORT ||\ @@ -357,7 +359,8 @@ enum phydm_legacy_spec_rate { /*[N-1SS]*/ #elif (RTL8723B_SUPPORT || RTL8703B_SUPPORT || RTL8188E_SUPPORT || \ RTL8188F_SUPPORT || RTL8723D_SUPPORT || RTL8195A_SUPPORT ||\ - RTL8710B_SUPPORT || RTL8721D_SUPPORT || RTL8710C_SUPPORT || RTL8723F_SUPPORT) + RTL8710B_SUPPORT || RTL8721D_SUPPORT || RTL8710C_SUPPORT ||\ + RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) #define PHY_NUM_RATE_IDX NUM_RATE_N_1SS #else #define PHY_NUM_RATE_IDX NUM_RATE_AC_4SS @@ -390,8 +393,8 @@ enum phydm_api_host { enum phydm_ic { ODM_RTL8188E = BIT(0), - ODM_RTL8812 = BIT(1), - ODM_RTL8821 = BIT(2), + ODM_RTL8812 = BIT(1), + ODM_RTL8821 = BIT(2), ODM_RTL8192E = BIT(3), ODM_RTL8723B = BIT(4), ODM_RTL8814A = BIT(5), @@ -414,7 +417,10 @@ enum phydm_ic { ODM_RTL8721D = BIT(22), ODM_RTL8710C = BIT(23), ODM_RTL8723F = BIT(24), - ODM_RTL8814C = BIT(25) + ODM_RTL8814C = BIT(25), + ODM_RTL8735B = BIT(26), + ODM_RTL8730A = BIT(27), + ODM_RTL8822E = BIT(28) }; #define ODM_IC_N_1SS (ODM_RTL8188E | ODM_RTL8188F | ODM_RTL8723B |\ @@ -430,8 +436,9 @@ enum phydm_ic { #define ODM_IC_AC_3SS 0 #define ODM_IC_AC_4SS (ODM_RTL8814A) -#define ODM_IC_JGR3_1SS (ODM_RTL8723F) -#define ODM_IC_JGR3_2SS (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G) +#define ODM_IC_JGR3_1SS (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A) +#define ODM_IC_JGR3_2SS (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G |\ + ODM_RTL8822E) #define ODM_IC_JGR3_3SS 0 #define ODM_IC_JGR3_4SS (ODM_RTL8198F | ODM_RTL8814B | ODM_RTL8814C) @@ -465,7 +472,8 @@ enum phydm_ic { ODM_RTL8192F | ODM_RTL8721D | ODM_RTL8710C) #define PHYSTS_3RD_TYPE_IC (ODM_RTL8198F | ODM_RTL8814B | ODM_RTL8822C |\ ODM_RTL8812F | ODM_RTL8197G | ODM_RTL8723F |\ - ODM_RTL8814C) + ODM_RTL8814C | ODM_RTL8735B | ODM_RTL8730A |\ + ODM_RTL8822E) /*@[FW Type]*/ #define PHYDM_IC_8051_SERIES (ODM_RTL8881A | ODM_RTL8812 | ODM_RTL8821 |\ ODM_RTL8192E | ODM_RTL8723B | ODM_RTL8703B |\ @@ -474,24 +482,29 @@ enum phydm_ic { #define PHYDM_IC_3081_SERIES (ODM_RTL8814A | ODM_RTL8822B | ODM_RTL8197F |\ ODM_RTL8821C | ODM_RTL8195B | ODM_RTL8198F |\ ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8814B |\ - ODM_RTL8197G | ODM_RTL8723F | ODM_RTL8814C) + ODM_RTL8197G | ODM_RTL8723F | ODM_RTL8814C |\ + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E) /*@[LA mode]*/ #define PHYDM_IC_SUPPORT_LA_MODE (ODM_RTL8814A | ODM_RTL8822B | ODM_RTL8197F |\ ODM_RTL8821C | ODM_RTL8195B | ODM_RTL8198F |\ ODM_RTL8192F | ODM_RTL8822C | ODM_RTL8812F |\ ODM_RTL8195B | ODM_RTL8814B | ODM_RTL8197G |\ - ODM_RTL8723F | ODM_RTL8814C) + ODM_RTL8723F | ODM_RTL8814C | ODM_RTL8735B |\ + ODM_RTL8730A | ODM_RTL8822E) /*@[BF]*/ #define ODM_IC_TXBF_SUPPORT (ODM_RTL8192E | ODM_RTL8812 | ODM_RTL8821 |\ ODM_RTL8814A | ODM_RTL8881A | ODM_RTL8822B |\ ODM_RTL8197F | ODM_RTL8821C | ODM_RTL8195B |\ ODM_RTL8198F | ODM_RTL8822C | ODM_RTL8812F |\ - ODM_RTL8814B | ODM_RTL8197G | ODM_RTL8814C) + ODM_RTL8814B | ODM_RTL8197G | ODM_RTL8814C |\ + ODM_RTL8822E) #define PHYDM_IC_SUPPORT_MU_BFEE (ODM_RTL8822B | ODM_RTL8821C | ODM_RTL8814B |\ ODM_RTL8195B | ODM_RTL8198F | ODM_RTL8822C |\ - ODM_RTL8812F | ODM_RTL8723F | ODM_RTL8814C) + ODM_RTL8812F | ODM_RTL8723F | ODM_RTL8814C |\ + ODM_RTL8730A | ODM_RTL8822E) #define PHYDM_IC_SUPPORT_MU_BFER (ODM_RTL8822B | ODM_RTL8814B | ODM_RTL8198F |\ - ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8814C) + ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8814C |\ + ODM_RTL8822E) #define PHYDM_IC_SUPPORT_MU (PHYDM_IC_SUPPORT_MU_BFEE |\ PHYDM_IC_SUPPORT_MU_BFER) @@ -500,44 +513,51 @@ enum phydm_ic { ODM_RTL8821C | ODM_RTL8195B | ODM_RTL8822C |\ ODM_RTL8198F | ODM_RTL8812F | ODM_RTL8814B |\ ODM_RTL8197G | ODM_RTL8721D | ODM_RTL8710C |\ - ODM_RTL8723F | ODM_RTL8814C) + ODM_RTL8723F | ODM_RTL8814C | ODM_RTL8735B |\ + ODM_RTL8730A | ODM_RTL8822E) /* fw offload ability*/ #define PHYDM_IC_SUPPORT_FW_PARAM_OFFLOAD (ODM_RTL8814A | ODM_RTL8822B |\ - ODM_RTL8821C | ODM_RTL8822C) + ODM_RTL8821C | ODM_RTL8822C |\ + ODM_RTL8822E) /* halmac offload ability*/ #define PHYDM_IC_SUPPORT_HALMAC_PARAM_OFFLOAD (ODM_RTL8822C | ODM_RTL8812F |\ ODM_RTL8814B | ODM_RTL8723F |\ - ODM_RTL8814C) + ODM_RTL8814C | ODM_RTL8822E) /*[CCX]*/ #define PHYDM_IC_SUPPORT_FAHM (ODM_RTL8822B | ODM_RTL8821C | ODM_RTL8198F |\ ODM_RTL8814B | ODM_RTL8822C | ODM_RTL8812F |\ - ODM_RTL8197G | ODM_RTL8723F | ODM_RTL8814C) + ODM_RTL8197G | ODM_RTL8723F | ODM_RTL8814C |\ + ODM_RTL8735B | ODM_RTL8730A | ODM_RTL8822E) #define PHYDM_IC_SUPPORT_IFS_CLM (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8197G |\ - ODM_RTL8723F) + ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A |\ + ODM_RTL8822E) #define PHYDM_IC_SUPPORT_EDCCA_CLM (ODM_RTL8822C | ODM_RTL8812F |\ - ODM_RTL8197G | ODM_RTL8723F) + ODM_RTL8197G | ODM_RTL8723F | ODM_RTL8735B |\ + ODM_RTL8730A | ODM_RTL8822E) /*[ARFR]*/ /*for MAC HW control rate_id=0~12 and 2.4g vht mode(1ss/2ss) support*/ #define PHYDM_IC_RATEID_IDX_TYPE2 (ODM_RTL8822B | ODM_RTL8822C | ODM_RTL8195B |\ - ODM_RTL8821C) + ODM_RTL8821C | ODM_RTL8822E) /*@========[Compile time IC flag] ========================*/ /*@========[AC-3/AC/N Support] ===========================*/ #if (RTL8814B_SUPPORT || RTL8198F_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT) + RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_IC_JGR3_SERIES_SUPPORT - #if (RTL8814B_SUPPORT || RTL8822C_SUPPORT || RTL8812F_SUPPORT) + #if (RTL8814B_SUPPORT || RTL8822C_SUPPORT || RTL8812F_SUPPORT ||\ + RTL8822E_SUPPORT) #define PHYDM_IC_JGR3_80M_SUPPORT #endif #endif #if (RTL8822C_SUPPORT || RTL8812F_SUPPORT || RTL8814B_SUPPORT ||\ - RTL8723F_SUPPORT) + RTL8723F_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_IC_HALMAC_PARAM_SUPPORT #endif @@ -585,14 +605,14 @@ enum phydm_ic { RTL8703B_SUPPORT || RTL8723D_SUPPORT || RTL8881A_SUPPORT ||\ RTL8821A_SUPPORT || RTL8821C_SUPPORT || RTL8195A_SUPPORT ||\ RTL8710B_SUPPORT || RTL8195B_SUPPORT || RTL8721D_SUPPORT ||\ - RTL8710C_SUPPORT || RTL8723F_SUPPORT) - + RTL8710C_SUPPORT || RTL8723F_SUPPORT || RTL8735B_SUPPORT ||\ + RTL8730A_SUPPORT) #define PHYDM_COMPILE_IC_1SS #endif #if (RTL8192E_SUPPORT || RTL8197F_SUPPORT || RTL8812A_SUPPORT ||\ RTL8822B_SUPPORT || RTL8192F_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8812F_SUPPORT || RTL8197G_SUPPORT) + RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_COMPILE_IC_2SS #endif @@ -644,22 +664,25 @@ enum phydm_ic { #endif #if (RTL8198F_SUPPORT || RTL8814B_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT) + RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8822E_SUPPORT) #define PHYSTS_3RD_TYPE_SUPPORT #endif #ifdef PHYSTS_3RD_TYPE_SUPPORT - #define PHYSTS_AUTO_SWITCH_IC (ODM_RTL8822C) + #define PHYSTS_AUTO_SWITCH_IC (ODM_RTL8822C | ODM_RTL8812F | ODM_RTL8814B |\ + ODM_RTL8814C | ODM_RTL8822E) #endif #if (RTL8198F_SUPPORT || RTL8814B_SUPPORT || RTL8822C_SUPPORT ||\ - RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT) + RTL8812F_SUPPORT || RTL8197G_SUPPORT || RTL8723F_SUPPORT ||\ + RTL8735B_SUPPORT || RTL8730A_SUPPORT || RTL8822E_SUPPORT) #define BB_RAM_SUPPORT #endif #if (RTL8821C_SUPPORT || RTL8822B_SUPPORT || RTL8822C_SUPPORT ||\ RTL8812F_SUPPORT || RTL8814B_SUPPORT || RTL8195B_SUPPORT ||\ - RTL8198F_SUPPORT) + RTL8198F_SUPPORT || RTL8822E_SUPPORT) #define PHYDM_COMPILE_MU #endif @@ -667,14 +690,16 @@ enum phydm_ic { #define CONFIG_MU_JAGUAR_2 #endif -#if (RTL8814B_SUPPORT || RTL8822C_SUPPORT || RTL8812F_SUPPORT) +#if (RTL8814B_SUPPORT || RTL8822C_SUPPORT || RTL8812F_SUPPORT ||\ + RTL8822E_SUPPORT) #define CONFIG_MU_JAGUAR_3 #endif #if (defined(CONFIG_MU_JAGUAR_2) || defined(CONFIG_MU_JAGUAR_3)) #if (RTL8814B_SUPPORT) #define MU_EX_MACID 76 - #elif (RTL8822B_SUPPORT || RTL8822C_SUPPORT || RTL8812F_SUPPORT) + #elif (RTL8822B_SUPPORT || RTL8822C_SUPPORT || RTL8812F_SUPPORT ||\ + RTL8822E_SUPPORT) #define MU_EX_MACID 30 #endif #endif @@ -683,7 +708,9 @@ enum phydm_ic { #if (RTL8822B_SUPPORT || RTL8197F_SUPPORT || RTL8821C_SUPPORT ||\ RTL8192F_SUPPORT || RTL8195B_SUPPORT || RTL8822C_SUPPORT ||\ RTL8198F_SUPPORT || RTL8812F_SUPPORT || RTL8814B_SUPPORT ||\ - RTL8197G_SUPPORT || RTL8721D_SUPPORT || RTL8710C_SUPPORT || RTL8723F_SUPPORT) + RTL8197G_SUPPORT || RTL8721D_SUPPORT || RTL8710C_SUPPORT ||\ + RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT ||\ + RTL8822E_SUPPORT) #define PHYDM_COMMON_API_SUPPORT #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_precomp.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_precomp.h index bd9f6b010..81a1a4d86 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_precomp.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_precomp.h @@ -175,6 +175,15 @@ #ifndef RTL8723F_SUPPORT #define RTL8723F_SUPPORT 0 #endif +#ifndef RTL8735B_SUPPORT + #define RTL8735B_SUPPORT 0 +#endif +#ifndef RTL8730A_SUPPORT + #define RTL8730A_SUPPORT 0 +#endif +#ifndef RTL8822E_SUPPORT + #define RTL8822E_SUPPORT 0 +#endif #if (DM_ODM_SUPPORT_TYPE & ODM_CE) && \ (!defined(DM_ODM_CE_MAC80211) && !defined(DM_ODM_CE_MAC80211_V2)) @@ -604,7 +613,7 @@ rtw_phydm_cfg_phy_para( #include "rtl8814b/phydm_hal_api8814b.h" #include "rtl8814b/version_rtl8814b.h" #include "rtl8814b/phydm_extraagc8814b.h" -#if (RTL8814C_SUPPORT == 1) + #if (RTL8814C_SUPPORT == 1) #include "rtl8814c/halhwimg8814c_bb.h" #include "rtl8814c/phydm_regconfig8814c.h" #include "halrf/rtl8814c/halrf_8814c.h" @@ -613,7 +622,7 @@ rtw_phydm_cfg_phy_para( #include "rtl8814c/phydm_hal_api8814c.h" #include "rtl8814c/version_rtl8814c.h" #include "rtl8814c/phydm_extraagc8814c.h" -#endif + #endif #if (DM_ODM_SUPPORT_TYPE == ODM_CE) #include /* @struct HAL_DATA_TYPE */ #include /* @RX_SMOOTH_FACTOR, reg definition and etc.*/ @@ -662,4 +671,59 @@ rtw_phydm_cfg_phy_para( #include #endif #endif +#if (RTL8735B_SUPPORT) + #include "rtl8735b/halhwimg8735b_bb.h" + #include "rtl8735b/halhwimg8735b_mac.h" + #include "rtl8735b/phydm_regconfig8735b.h" + #include "halrf/rtl8735b/halrf_8735b.h" + #include "halrf/rtl8735b/halhwimg8735b_rf.h" + #include "halrf/rtl8735b/version_rtl8735b_rf.h" + #include "halrf/rtl8735b/halrf_iqk_8735b.h" + #include "halrf/rtl8735b/halrf_dpk_8735b.h" + #include "halrf/rtl8735b/halrf_txgapk_8735b.h" + #include "halrf/rtl8735b/halrf_tssi_8735b.h" + #include "halrf/rtl8735b/halrf_rfk_init_8735b.h" + #include "rtl8735b/phydm_hal_api8735b.h" + #include "rtl8735b/version_rtl8735b.h" + #include "rtl8735b/phydm_rtl8735b.h" + #if (DM_ODM_SUPPORT_TYPE == ODM_CE) + /* @struct HAL_DATA_TYPE */ + #include + /* @RX_SMOOTH_FACTOR, reg definition and etc.*/ + #include + #endif +#endif +#if (RTL8730A_SUPPORT) + #include "rtl8730a/halhwimg8730a_bb.h" + #include "rtl8730a/halhwimg8730a_mac.h" + #include "rtl8730a/phydm_regconfig8730a.h" + #include "halrf/rtl8730a/halrf_8730a.h" + #include "halrf/rtl8730a/halhwimg8730a_rf.h" + #include "halrf/rtl8730a/version_rtl8730a_rf.h" + #include "halrf/rtl8730a/halrf_iqk_8730a.h" + #include "halrf/rtl8730a/halrf_dpk_8730a.h" + #include "halrf/rtl8730a/halrf_txgapk_8730a.h" + #include "halrf/rtl8730a/halrf_tssi_8730a.h" + #include "halrf/rtl8730a/halrf_rfk_init_8730a.h" + #include "rtl8730a/phydm_hal_api8730a.h" + #include "rtl8730a/version_rtl8730a.h" + #include "rtl8730a/phydm_rtl8730a.h" + #include +#endif +#if (RTL8822E_SUPPORT) + #include "rtl8822e/halhwimg8822e_bb.h" + #include "rtl8822e/phydm_regconfig8822e.h" + #include "rtl8822e/phydm_hal_api8822e.h" + #include "rtl8822e/version_rtl8822e.h" + #include "rtl8822e/phydm_rtl8822e.h" + #include "halrf/rtl8822e/halrf_8822e.h" + #include "halrf/rtl8822e/halhwimg8822e_rf.h" + #include "halrf/rtl8822e/version_rtl8822e_rf.h" + #if (DM_ODM_SUPPORT_TYPE == ODM_CE) + /* @struct HAL_DATA_TYPE */ + #include + /* @RX_SMOOTH_FACTOR, reg definition and etc.*/ + #include + #endif +#endif #endif /* @__ODM_PRECOMP_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_psd.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_psd.c index 8a19160b9..5c8ea563a 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_psd.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_psd.c @@ -37,8 +37,8 @@ u32 phydm_get_psd_data(void *dm_void, u32 psd_tone_idx, u32 igi) u32 psd_report = 0; if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - #if(RTL8723F_SUPPORT) - if (dm->support_ic_type & (ODM_RTL8723F)) { + #if(RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { odm_set_bb_reg(dm, dm_psd_table->psd_reg, 0x3ff80000, psd_tone_idx & 0x7ff); /*PSD trigger start*/ odm_set_bb_reg(dm, dm_psd_table->psd_reg, BIT(16), 1); @@ -81,8 +81,8 @@ u32 phydm_get_psd_data(void *dm_void, u32 psd_tone_idx, u32 igi) 0xffffff); psd_report = psd_report >> 5; } else if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - #if(RTL8723F_SUPPORT) - if (dm->support_ic_type & (ODM_RTL8723F)) { + #if(RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { psd_report = odm_get_bb_reg(dm, dm_psd_table->psd_report_reg, 0x1ffffff); } @@ -158,8 +158,8 @@ u8 phydm_psd(void *dm_void, u32 igi, u16 start_point, u16 stop_point) if (psd_fc_channel > 14) { is_5G = 1; - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8812F | - ODM_RTL8197G)) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8812F |\ + ODM_RTL8197G | ODM_RTL8822E)) { #if 0 if (psd_fc_channel < 80) ag_rf_mode_reg = 0x1; @@ -168,7 +168,7 @@ u8 phydm_psd(void *dm_void, u32 igi, u16 start_point, u16 stop_point) else if (psd_fc_channel > 140) ag_rf_mode_reg = 0x5; #endif - } else if (dm->support_ic_type & ODM_RTL8723F) { + } else if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { if (psd_fc_channel < 80) ag_rf_mode_reg = 0x1; else if (psd_fc_channel >= 80 && psd_fc_channel <= 144) @@ -197,8 +197,8 @@ u8 phydm_psd(void *dm_void, u32 igi, u16 start_point, u16 stop_point) odm_set_rf_reg(dm, RF_PATH_B, RF_0x18, 0xff, psd_fc_channel); odm_set_rf_reg(dm, RF_PATH_A, RF_0x18, 0x300, is_5G); odm_set_rf_reg(dm, RF_PATH_B, RF_0x18, 0x300, is_5G); - if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8812F | - ODM_RTL8197G)) { + if (dm->support_ic_type & (ODM_RTL8822C | ODM_RTL8812F |\ + ODM_RTL8197G | ODM_RTL8822E)) { #if 0 /* @2b'11: 20MHz, 2b'10: 40MHz, 2b'01: 80MHz */ odm_set_rf_reg(dm, RF_PATH_A, RF_0x18, 0x3000, @@ -211,7 +211,7 @@ u8 phydm_psd(void *dm_void, u32 igi, u16 start_point, u16 stop_point) odm_set_rf_reg(dm, RF_PATH_B, RF_0x18, 0x70000, ag_rf_mode_reg); #endif - } else if (dm->support_ic_type & ODM_RTL8723F) { + } else if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { /* @2b'11: 20MHz, 2b'10: 40MHz, 2b'01: 80MHz */ odm_set_rf_reg(dm, RF_PATH_A, RF_0x18, 0x1c00, dm_psd_table->psd_bw_rf_reg); @@ -257,7 +257,7 @@ u8 phydm_psd(void *dm_void, u32 igi, u16 start_point, u16 stop_point) } if (dm->support_ic_type & ODM_IC_JGR3_SERIES){ - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { PHYDM_DBG(dm, ODM_COMP_API, "0x1d70=((0x%x))\n", odm_get_bb_reg(dm, R_0x1d70, MASKDWORD)); PHYDM_DBG(dm, ODM_COMP_API, "RF0x19=((0x%x))\n", @@ -335,7 +335,7 @@ u8 phydm_psd(void *dm_void, u32 igi, u16 start_point, u16 stop_point) odm_set_rf_reg(dm, RF_PATH_B, RF_0x18, RFREG_MASK, dm_psd_table->rf_0x18_bkp_b); - PHYDM_DBG(dm, ODM_COMP_API, "PSD finished\n\n"); + PHYDM_DBG(dm, ODM_COMP_API, "PSD finished, set_result=%d\n\n", set_result); phydm_pause_func(dm, F00_DIG, PHYDM_RESUME, PHYDM_PAUSE_LEVEL_3, 1, &igi_tmp); @@ -360,7 +360,7 @@ void phydm_psd_para_setting(void *dm_void, u8 sw_avg_time, u8 hw_avg_time, dm_psd_table->sw_avg_time = sw_avg_time; dm_psd_table->psd_fc_channel = channel; dm_psd_table->noise_k_en = noise_k_en; - if (dm->support_ic_type & ODM_RTL8723F) { + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { if (fft_smp_point == 128) fft_smp_point_idx = 3; else if (fft_smp_point == 256) @@ -381,7 +381,7 @@ void phydm_psd_para_setting(void *dm_void, u8 sw_avg_time, u8 hw_avg_time, fft_smp_point_idx = 3; } if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - #if (RTL8723F_SUPPORT) + #if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) odm_set_bb_reg(dm, R_0x1e8c, BIT(12) | BIT(11), hw_avg_time); odm_set_bb_reg(dm, R_0x1e8c, BIT(14) | BIT(13), fft_smp_point_idx); @@ -438,8 +438,8 @@ void phydm_psd_init(void *dm_void) dm_psd_table->psd_in_progress = false; if (dm->support_ic_type & ODM_IC_JGR3_SERIES) { - #if (RTL8723F_SUPPORT) - if (dm->support_ic_type & ODM_RTL8723F) { + #if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) { dm_psd_table->psd_reg = R_0x1e8c; dm_psd_table->psd_report_reg = R_0x2d90; @@ -493,8 +493,8 @@ void phydm_psd_debug(void *dm_void, char input[][16], u32 *_used, if ((strcmp(input[1], help) == 0)) { #ifdef PHYDM_IC_JGR3_SERIES_SUPPORT - #if (RTL8723F_SUPPORT) - if (dm->support_ic_type & ODM_RTL8723F) + #if (RTL8723F_SUPPORT || RTL8735B_SUPPORT || RTL8730A_SUPPORT) + if (dm->support_ic_type & (ODM_RTL8723F | ODM_RTL8735B | ODM_RTL8730A)) PDM_SNPF(out_len, used, output + used, out_len - used, "{0} {sw_avg} {hw_avg 0:3} {1:I,2:Q,3:IQ} {fft_point: 128*(1:4)}\n{path_sel 0~3} {0:ADC, 1:rxdata_fir_in, 2:rx_nbi_nf_stage2} {CH} {noise_k}\n\n"); #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_rainfo.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_rainfo.c index 97be65844..c7d35565b 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_rainfo.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_rainfo.c @@ -309,7 +309,8 @@ void phydm_ra_mask_report_h2c_trigger(void *dm_void, phydm_fw_trace_en_h2c(dm, true, 1, 2, trig_rpt->macid); - trig_rpt->ra_mask_rpt_stamp = ra_tab->ra_mask_rpt_stamp; + /*Avoid the problem that the trigger's stamp is always less then result's stamp*/ + trig_rpt->ra_mask_rpt_stamp = ra_tab->ra_mask_rpt_stamp + 1; } void phydm_ra_mask_report_c2h_result(void *dm_void, struct ra_mask_rpt *rpt) { @@ -947,6 +948,7 @@ u64 phydm_get_bb_mod_ra_mask(void *dm_void, u8 sta_idx) u8 tx_stream_num = 1; u8 rssi_lv = 0; u64 ra_mask_bitmap = 0; + u64 ra_mask_before_rssi_lv = 0; if (is_sta_active(sta)) { ra = &sta->ra_info; @@ -1061,6 +1063,9 @@ u64 phydm_get_bb_mod_ra_mask(void *dm_void, u8 sta_idx) return ra_mask_bitmap; } #endif + + ra_mask_before_rssi_lv = ra_mask_bitmap; + /*@[Modify RA Mask by RSSI level]*/ if (wrls_mode != WIRELESS_CCK) { if (iot_table->patch_id_40010700) { @@ -1083,6 +1088,21 @@ u64 phydm_get_bb_mod_ra_mask(void *dm_void, u8 sta_idx) else if (rssi_lv >= 5) ra_mask_bitmap &= 0xffffffffffff0f00; } + + /*Avoid empty HT/VHT ramask when HT/VHT mode is enabled*/ + if ((ra_mask_bitmap >> 12) == 0x0) { + ra_mask_bitmap |= (ra_mask_before_rssi_lv & 0xfffffffffffff000); + PHYDM_DBG(dm, DBG_RA, + "Empty HT/VHT ramask! Bypass HT/VHT ramask_by_rssi\n"); + } + + /*Avoid empty legacy ramask after foolproof of HT/VHT mode*/ + if (ra_mask_bitmap == 0x0) { + ra_mask_bitmap |= (ra_mask_before_rssi_lv & 0xfff); + PHYDM_DBG(dm, DBG_RA, + "Empty ramask! Bypass a/b/g ramask_by_rssi\n"); + } + PHYDM_DBG(dm, DBG_RA, "Mod by RSSI=0x%llx\n", ra_mask_bitmap); return ra_mask_bitmap; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_regtable.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_regtable.h index aed2fb8be..82bdaff60 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_regtable.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_regtable.h @@ -24,6 +24,7 @@ #define R_0x0 0x0 #define R_0x00 0x00 +#define R_0x04 0x04 #define R_0x08 0x08 #define R_0x0106 0x0106 #define R_0x0140 0x0140 @@ -108,6 +109,7 @@ #define R_0x1950 0x1950 #define R_0x1954 0x1954 #define R_0x195c 0x195c +#define R_0x1968 0x1968 #define R_0x1970 0x1970 #define R_0x1984 0x1984 #define R_0x1988 0x1988 @@ -265,6 +267,7 @@ #define R_0x1cc0 0x1cc0 #define R_0x1cd0 0x1cd0 #define R_0x1cd8 0x1cd8 +#define R_0x1cdc 0x1cdc #define R_0x1ce4 0x1ce4 #define R_0x1ce8 0x1ce8 #define R_0x1cec 0x1cec @@ -336,6 +339,13 @@ #define R_0x1f98 0x1f98 #define R_0x24 0x24 #define R_0x28 0x28 +#define R_0x2908 0x2908 +#define R_0x2920 0x2920 +#define R_0x2938 0x2938 +#define R_0x29bc 0x29bc +#define R_0x29d4 0x29d4 +#define R_0x29dc 0x29dc +#define R_0x29fc 0x29fc #define R_0x2a00 0x2a00 #define R_0x2a04 0x2a04 #define R_0x2a08 0x2a08 @@ -361,6 +371,7 @@ #define R_0x2c2c 0x2c2c #define R_0x2c30 0x2c30 #define R_0x2c34 0x2c34 +#define R_0x2c40 0x2c40 #define R_0x2c54 0x2c54 #define R_0x2d00 0x2d00 #define R_0x2d04 0x2d04 @@ -397,7 +408,12 @@ #define R_0x2e7c 0x2e7c #define R_0x2e80 0x2e80 #define R_0x300 0x300 +#define R_0x30 0x30 #define R_0x38 0x38 +#define R_0x3804 0x3804 +#define R_0x3830 0x3830 +#define R_0x3904 0x3904 +#define R_0x3930 0x3930 #define R_0x3a00 0x3a00 #define R_0x3a04 0x3a04 #define R_0x3a08 0x3a08 @@ -611,6 +627,7 @@ #define R_0x64 0x64 #define R_0x66 0x66 #define R_0x660 0x660 +#define R_0x664 0x664 #define R_0x668 0x668 #define R_0x688 0x688 #define R_0x6a0 0x6a0 @@ -651,7 +668,7 @@ #define R_0x838 0x838 #define R_0x83c 0x83c #define R_0x840 0x840 -#define R_0x844 0x840 +#define R_0x844 0x844 #define R_0x848 0x848 #define R_0x84c 0x84c #define R_0x850 0x850 @@ -1052,6 +1069,7 @@ #define RF_0x32 0x32 #define RF_0x33 0x33 #define RF_0x35 0x35 +#define RF_0x3d 0x3d #define RF_0x3e 0x3e #define RF_0x3f 0x3f #define RF_0x4 0x4 @@ -1097,6 +1115,7 @@ #define RF_0x8b 0x8b #define RF_0x8c 0x8c #define RF_0x8d 0x8d +#define RF_0x8e 0x8e #define RF_0x8f 0x8f #define RF_0x92 0x92 #define RF_0x93 0x93 diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_rssi_monitor.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_rssi_monitor.c index 1fde03691..279d892a7 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_rssi_monitor.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_rssi_monitor.c @@ -61,6 +61,9 @@ void phydm_rssi_monitor_h2c(void *dm_void, u8 macid) stbc_en = (sta->stbc_en) ? 1 : 0; ldpc_en = (sta->ldpc_en) ? 1 : 0; + PHYDM_DBG(dm, DBG_RSSI_MNTR, "is_rx/tx=%d/%d, stbc_en=%d, ldpc_en=%d\n", + is_rx, is_tx, stbc_en, ldpc_en); + #ifdef CONFIG_BEAMFORMING bf = &sta->bf_info; diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_soml.c b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_soml.c index cd4001afd..4acc2efd4 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_soml.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_soml.c @@ -1077,7 +1077,7 @@ void phydm_adsl_decision_state(void *dm_void) PHYDM_DBG(dm, DBG_ADPTV_SOML, "[ rate_per_pkt_on = %d ; rate_per_pkt_off = %d ]\n", rate_per_pkt_on, rate_per_pkt_off); - #if (DM_ODM_SUPPORT_TYPE == ODM_AP) + #if 0 // (DM_ODM_SUPPORT_TYPE == ODM_AP) if (max_idx_on == max_idx_off && max_idx_on != 0) { PHYDM_DBG(dm, DBG_ADPTV_SOML, "[ max_idx_on == max_idx_off ]\n"); diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_types.h b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_types.h index 6ee74c1bb..be9551927 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_types.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/phydm_types.h @@ -170,7 +170,9 @@ enum rt_spinlock_type { PW_LMT_REGU_CHILE = 7, PW_LMT_REGU_UKRAINE = 8, PW_LMT_REGU_MEXICO = 9, - PW_LMT_REGU_CN = 10 + PW_LMT_REGU_CN = 10, + PW_LMT_REGU_QATAR = 11, + PW_LMT_REGU_UK = 12 }; enum odm_pw_lmt_band_type { @@ -305,7 +307,9 @@ enum rt_spinlock_type { PW_LMT_REGU_CHILE = 7, PW_LMT_REGU_UKRAINE = 8, PW_LMT_REGU_MEXICO = 9, - PW_LMT_REGU_CN = 10 + PW_LMT_REGU_CN = 10, + PW_LMT_REGU_QATAR = 11, + PW_LMT_REGU_UK = 12 }; enum odm_pw_lmt_band_type { @@ -341,48 +345,45 @@ enum rt_spinlock_type { // for power limit table enum odm_pw_lmt_regulation_type { - PW_LMT_REGU_NULL = 0, - PW_LMT_REGU_FCC = 1, - PW_LMT_REGU_ETSI = 2, - PW_LMT_REGU_MKK = 3, - PW_LMT_REGU_WW13 = 4, - PW_LMT_REGU_IC = 5, - PW_LMT_REGU_KCC = 6, - PW_LMT_REGU_ACMA = 7, - PW_LMT_REGU_CHILE = 8, - PW_LMT_REGU_UKRAINE = 9, - PW_LMT_REGU_MEXICO = 10, - PW_LMT_REGU_CN = 11, - PW_LMT_REGU_MAX_NUM = 12 + PW_LMT_REGU_FCC = 0, + PW_LMT_REGU_ETSI = 1, + PW_LMT_REGU_MKK = 2, + PW_LMT_REGU_WW13 = 3, + PW_LMT_REGU_IC = 4, + PW_LMT_REGU_KCC = 5, + PW_LMT_REGU_ACMA = 6, + PW_LMT_REGU_CHILE = 7, + PW_LMT_REGU_UKRAINE = 8, + PW_LMT_REGU_MEXICO = 9, + PW_LMT_REGU_CN = 10, + PW_LMT_REGU_QATAR = 11, + PW_LMT_REGU_UK = 12, + PW_LMT_REGU_MAX_NUM = 13 }; enum odm_pw_lmt_band_type { - PW_LMT_BAND_NULL = 0, - PW_LMT_BAND_2_4G = 1, - PW_LMT_BAND_5G = 2 + PW_LMT_BAND_2_4G = 0, + PW_LMT_BAND_5G = 1 }; enum odm_pw_lmt_bandwidth_type { - PW_LMT_BW_NULL = 0, - PW_LMT_BW_20M = 1, - PW_LMT_BW_40M = 2, - PW_LMT_BW_80M = 3 + PW_LMT_BW_20M = 0, + PW_LMT_BW_40M = 1, + PW_LMT_BW_80M = 2 }; enum odm_pw_lmt_ratesection_type { - PW_LMT_RS_NULL = 0, - PW_LMT_RS_CCK = 1, - PW_LMT_RS_OFDM = 2, - PW_LMT_RS_HT = 3, - PW_LMT_RS_VHT = 4 + PW_LMT_RS_CCK = 0, + PW_LMT_RS_OFDM = 1, + PW_LMT_RS_HT = 2, + PW_LMT_RS_VHT = 3 }; enum odm_pw_lmt_rfpath_type { - PW_LMT_PH_NULL = 0, - PW_LMT_PH_1T = 1, - PW_LMT_PH_2T = 2, - PW_LMT_PH_3T = 3, - PW_LMT_PH_4T = 4 + PW_LMT_PH_1T = 0, + PW_LMT_PH_2T = 1, + PW_LMT_PH_3T = 2, + PW_LMT_PH_4T = 3 }; #define phydm_timer_list timer_list diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/halhwimg8822c_bb.c b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/halhwimg8822c_bb.c index b5c00352b..55ef69ced 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/halhwimg8822c_bb.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/halhwimg8822c_bb.c @@ -23,7 +23,7 @@ * *****************************************************************************/ -/*Image2HeaderVersion: R3 1.5.12*/ +/*Image2HeaderVersion: R3 1.5.17*/ #include "mp_precomp.h" #include "../phydm_precomp.h" @@ -2044,7 +2044,7 @@ odm_read_and_config_mp_8822c_agc_tab(struct dm_struct *dm) PHYDM_DBG(dm, ODM_COMP_INIT, "*else\n"); is_matched = false; if (!find_target) { - PHYDM_DBG(dm, ODM_COMP_INIT, "Init Fail in Reg 0x%x\n", array[i]); + PHYDM_DBG(dm, ODM_COMP_INIT, "Init Fail in idx %d\n", i); return; } break; @@ -2081,7 +2081,7 @@ odm_read_and_config_mp_8822c_agc_tab(struct dm_struct *dm) u32 odm_get_version_mp_8822c_agc_tab(void) { - return 62; + return 70; } /****************************************************************************** @@ -3591,7 +3591,7 @@ odm_read_and_config_mp_8822c_phy_reg(struct dm_struct *dm) PHYDM_DBG(dm, ODM_COMP_INIT, "*else\n"); is_matched = false; if (!find_target) { - PHYDM_DBG(dm, ODM_COMP_INIT, "Init Fail in Reg 0x%x\n", array[i]); + PHYDM_DBG(dm, ODM_COMP_INIT, "Init Fail in idx %d\n", i); return; } break; @@ -3628,7 +3628,7 @@ odm_read_and_config_mp_8822c_phy_reg(struct dm_struct *dm) u32 odm_get_version_mp_8822c_phy_reg(void) { - return 62; + return 70; } /****************************************************************************** diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/halhwimg8822c_bb.h b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/halhwimg8822c_bb.h index a946dea53..25478d521 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/halhwimg8822c_bb.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/halhwimg8822c_bb.h @@ -23,7 +23,7 @@ * *****************************************************************************/ -/*Image2HeaderVersion: R3 1.5.12*/ +/*Image2HeaderVersion: R3 1.5.17*/ #if (RTL8822C_SUPPORT == 1) #ifndef __INC_MP_BB_HW_IMG_8822C_H #define __INC_MP_BB_HW_IMG_8822C_H diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/phydm_hal_api8822c.c b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/phydm_hal_api8822c.c index 83bd22bff..d6c30f3e2 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/phydm_hal_api8822c.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/phydm_hal_api8822c.c @@ -112,6 +112,10 @@ void phydm_sdm_reset_8822c(struct dm_struct *dm) odm_set_rf_reg(dm, RF_PATH_A, RF_0xbc, BIT(19), 0x0); odm_set_rf_reg(dm, RF_PATH_A, RF_0xbc, BIT(19), 0x1); odm_set_rf_reg(dm, RF_PATH_A, RF_0xbc, BIT(19), 0x0); + /*write rf dummy register*/ + odm_set_rf_reg(dm, RF_PATH_B, 0xff, BIT(19), 0x0); + odm_set_rf_reg(dm, RF_PATH_B, 0xff, BIT(19), 0x1); + odm_set_rf_reg(dm, RF_PATH_B, 0xff, BIT(19), 0x0); /*reset HSSI*/ phydm_rstb_3wire_8822c(dm, true); } @@ -1427,11 +1431,17 @@ void phydm_tx_dfir_setting_8822c(struct dm_struct *dm, u8 central_ch) { if (central_ch <= 14) { + if (central_ch == 11) + odm_set_bb_reg(dm, R_0x808, 0x700000, 0x3); + else + odm_set_bb_reg(dm, R_0x808, 0x700000, 0x1); + if (central_ch == 13) odm_set_bb_reg(dm, R_0x808, 0x70, 0x3); else odm_set_bb_reg(dm, R_0x808, 0x70, 0x1); } else { + odm_set_bb_reg(dm, R_0x808, 0x700000, 0x1); odm_set_bb_reg(dm, R_0x808, 0x70, 0x3); } } diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/phydm_hal_api8822c.h b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/phydm_hal_api8822c.h index 392247ca3..74db8d713 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/phydm_hal_api8822c.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/phydm_hal_api8822c.h @@ -26,8 +26,8 @@ #define __INC_PHYDM_API_H_8822C__ #if (RTL8822C_SUPPORT) -/*2021.02.05: Let the auto_nbi_detect th be 0x1 due to technicolor issue*/ -#define PHY_CONFIG_VERSION_8822C "1.8.9" +/*2023.11.22: Fix RCK corner issue for SRRC*/ +#define PHY_CONFIG_VERSION_8822C "1.9.1" /*#define CONFIG_TXAGC_DEBUG_8822C*/ #define INVALID_RF_DATA 0xffffffff diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/version_rtl8822c.h b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/version_rtl8822c.h index 2b0c91280..c87160363 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/version_rtl8822c.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/rtl8822c/version_rtl8822c.h @@ -28,6 +28,6 @@ Since 01/Aug/2015, the commit rules will be simplified. You do not need to fill up the version.h anymore, only the maintenance supervisor fills it before formal release. */ -#define RELEASE_DATE_8822C 20210329 -#define COMMIT_BY_8822C "BB_YR" -#define RELEASE_VERSION_8822C 62 +#define RELEASE_DATE_8822C 20230926 +#define COMMIT_BY_8822C "BB_YJ" +#define RELEASE_VERSION_8822C 70 diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/haltxbfjaguar.c b/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/haltxbfjaguar.c index 6f1892837..f63f5a0a5 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/haltxbfjaguar.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/haltxbfjaguar.c @@ -18,7 +18,7 @@ * This file is for 8812/8821/8811 TXBF mechanism * ************************************************************/ -#include "mp_precomp.h" +#include "../mp_precomp.h" #include "../phydm_precomp.h" #ifdef PHYDM_BEAMFORMING_SUPPORT diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/phydm_hal_txbf_api.c b/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/phydm_hal_txbf_api.c index 8d7182bc0..b1aabbe4f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/phydm_hal_txbf_api.c +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/phydm_hal_txbf_api.c @@ -18,7 +18,8 @@ #if (defined(CONFIG_BB_TXBF_API)) #if (RTL8822B_SUPPORT == 1 || RTL8192F_SUPPORT == 1 || RTL8812F_SUPPORT == 1 ||\ - RTL8822C_SUPPORT == 1 || RTL8198F_SUPPORT == 1 || RTL8814B_SUPPORT == 1) + RTL8822C_SUPPORT == 1 || RTL8198F_SUPPORT == 1 || RTL8814B_SUPPORT == 1 ||\ + RTL8822E_SUPPORT == 1) /*@Add by YuChen for 8822B MU-MIMO API*/ /*this function is only used for BFer*/ @@ -51,7 +52,7 @@ u8 phydm_get_beamforming_sounding_info(void *dm_void, u16 *throughput, tx_rate[idx] <= ODM_RATEVHTSS3MCS9)) snddecision = snddecision & ~(1 << idx); } else if (dm->support_ic_type & (ODM_RTL8822B | ODM_RTL8822C | - ODM_RTL8812 | ODM_RTL8192F)) { + ODM_RTL8812 | ODM_RTL8192F | ODM_RTL8822E)) { if ((tx_rate[idx] >= ODM_RATEVHTSS2MCS7 && tx_rate[idx] <= ODM_RATEVHTSS2MCS9)) snddecision = snddecision & ~(1 << idx); @@ -251,6 +252,67 @@ void phydm_txbf_rfmode(void *dm_void, u8 su_bfee_cnt, u8 mu_bfee_cnt) } } #endif +#if (RTL8822E_SUPPORT) + if (dm->support_ic_type == ODM_RTL8822E) { + if (su_bfee_cnt > 0 || mu_bfee_cnt > 0) { + /*Path A ==================*/ + /*RF mode table write enable*/ + odm_set_rf_reg(dm, RF_PATH_A, RF_0xef, BIT(19), 0x1); + /*Select RX mode*/ + odm_set_rf_reg(dm, RF_PATH_A, RF_0x33, 0xF, 0x3); + /*Set Table data*/ + odm_set_rf_reg(dm, RF_PATH_A, RF_0x3e, 0xF, 0x4); + /*Set Table data*/ + odm_set_rf_reg(dm, RF_PATH_A, RF_0x3f, 0xfffff, + 0xc1aff); + /*RF mode table write disable*/ + odm_set_rf_reg(dm, RF_PATH_A, RF_0xef, BIT(19), 0x0); + + /*Path B ==================*/ + /*RF mode table write enable*/ + odm_set_rf_reg(dm, RF_PATH_B, RF_0xef, BIT(19), 0x1); + /*Select RX mode*/ + odm_set_rf_reg(dm, RF_PATH_B, RF_0x33, 0xF, 0x3); + /*Set Table data*/ + odm_set_rf_reg(dm, RF_PATH_B, RF_0x3e, 0xF, 0x1); + /*Set Table data*/ + odm_set_rf_reg(dm, RF_PATH_B, RF_0x3f, 0xfffff, + 0x306bf); + /*Select Standby mode*/ + //odm_set_rf_reg(dm, RF_PATH_B, RF_0x33, 0xF, 1); + /*Set Table data*/ + //odm_set_rf_reg(dm, RF_PATH_B, RF_0x3e, 0xF, 0x1); + /*Set Table data TXIQG+RXIQG turn on*/ + //odm_set_rf_reg(dm, RF_PATH_B, RF_0x3f, 0xfffff, + // 0x300a0); + /*RF mode table write disable*/ + odm_set_rf_reg(dm, RF_PATH_B, RF_0xef, BIT(19), 0x0); + } + + /*@if Nsts > Nc, don't apply V matrix*/ + odm_set_bb_reg(dm, R_0x1e24, BIT(11), 1); + + if (su_bfee_cnt > 0 || mu_bfee_cnt > 0) { + /*@enable BB TxBF ant mapping register*/ + odm_set_bb_reg(dm, R_0x1e24, BIT(28) | BIT29, 0x2); + odm_set_bb_reg(dm, R_0x1e24, BIT(30), 1); + + /* logic mapping */ + /* TX BF logic map and TX path en for Nsts = 1~2 */ + odm_set_bb_reg(dm, R_0x820, 0xff, 0x33); + odm_set_bb_reg(dm, R_0x1e2c, 0xffff, 0x404); + odm_set_bb_reg(dm, R_0x820, 0xffff0000, 0x33); + odm_set_bb_reg(dm, R_0x1e30, 0xffff, 0x404); + } else { + /*@Disable BB TxBF ant mapping register*/ + odm_set_bb_reg(dm, R_0x1e24, BIT(28) | BIT29, 0x0); + odm_set_bb_reg(dm, R_0x1e24, BIT(31), 0); + /*@1SS~2ss A, AB*/ + odm_set_bb_reg(dm, R_0x820, 0xff, 0x31); + odm_set_bb_reg(dm, R_0x1e2c, 0xffff, 0x400); + } + } +#endif #if (RTL8812F_SUPPORT) if (dm->support_ic_type == ODM_RTL8812F) { if (su_bfee_cnt > 0 || mu_bfee_cnt > 0) { @@ -669,9 +731,9 @@ void phydm_txbf_80p80_rfmode(void *dm_void, u8 su_bfee_cnt, u8 mu_bfee_cnt) void phydm_txbf_avoid_hang(void *dm_void) { struct dm_struct *dm = (struct dm_struct *)dm_void; - + /* avoid CCK CCA hang when the BF mode */ -#ifdef PHYDM_IC_JGR3_SERIES_SUPPORT +#ifdef PHYDM_IC_JGR3_SERIES_SUPPORT odm_set_bb_reg(dm, R_0x1e6c, 0x100000, 0x1); #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/phydm_hal_txbf_api.h b/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/phydm_hal_txbf_api.h index 15659ccb3..9c3b8e373 100644 --- a/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/phydm_hal_txbf_api.h +++ b/drivers/net/wireless/rtl8822cs/hal/phydm/txbf/phydm_hal_txbf_api.h @@ -44,7 +44,8 @@ u8 beamforming_get_vht_ndp_tx_rate(void *dm_void, u8 bfer_str_num); #endif #if (RTL8822B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 || RTL8192F_SUPPORT == 1 ||\ - RTL8814B_SUPPORT == 1 || RTL8198F_SUPPORT == 1 || RTL8812F_SUPPORT == 1) + RTL8814B_SUPPORT == 1 || RTL8198F_SUPPORT == 1 || RTL8812F_SUPPORT == 1 ||\ + RTL8822E_SUPPORT == 1) u8 phydm_get_beamforming_sounding_info(void *dm_void, u16 *throughput, u8 total_bfee_num, u8 *tx_rate); u8 phydm_get_ndpa_rate(void *dm_void); diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw.c index 94d20168a..c6fe20e8f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw.c @@ -22,13 +22,13 @@ #if (defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP))) u8 array_mp_8822c_fw_ap[] = { -0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x00, -0x0D, 0x9C, 0xA8, 0x60, 0x00, 0x00, 0x00, 0x00, -0x09, 0x18, 0x0E, 0x2A, 0xE5, 0x07, 0x00, 0x00, +0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x11, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x14, 0x0F, 0x28, 0xE8, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, -0x00, 0x00, 0x20, 0x80, 0xD8, 0x2D, 0x00, 0x00, +0x00, 0x00, 0x20, 0x80, 0xF8, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x20, 0x4E, 0x00, 0x00, 0xB0, 0x7F, 0x01, 0x00, +0xB8, 0x4E, 0x00, 0x00, 0x40, 0x81, 0x01, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, @@ -519,7 +519,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x85, 0x17, 0x03, 0x80, 0xFD, 0xFF, 0xFF, 0xFF, +0xB9, 0x17, 0x03, 0x80, 0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -528,7 +528,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xC5, 0x16, 0x03, 0x80, +0x00, 0x00, 0x00, 0x00, 0xF9, 0x16, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -538,7 +538,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x81, 0x16, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, +0xB5, 0x16, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -547,8 +547,8 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xDC, 0x2D, 0x20, 0x80, -0xE4, 0x2D, 0x20, 0x80, 0xA1, 0x19, 0x03, 0x80, +0x00, 0x00, 0x00, 0x00, 0xFC, 0x2D, 0x20, 0x80, +0x04, 0x2E, 0x20, 0x80, 0xD5, 0x19, 0x03, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -558,7 +558,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xF4, 0x2D, 0x20, 0x80, 0xEC, 0x2D, 0x20, 0x80, +0x14, 0x2E, 0x20, 0x80, 0x0C, 0x2E, 0x20, 0x80, 0x41, 0x4E, 0x59, 0x00, 0x61, 0x6E, 0x79, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x05, 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, @@ -583,31 +583,31 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x9F, 0x14, 0x03, 0x80, -0x99, 0x14, 0x03, 0x80, 0xA5, 0x14, 0x03, 0x80, -0xAB, 0x14, 0x03, 0x80, 0xB1, 0x14, 0x03, 0x80, -0xB7, 0x14, 0x03, 0x80, 0x09, 0x12, 0x1B, 0x24, +0x00, 0x00, 0x00, 0x00, 0xD3, 0x14, 0x03, 0x80, +0xCD, 0x14, 0x03, 0x80, 0xD9, 0x14, 0x03, 0x80, +0xDF, 0x14, 0x03, 0x80, 0xE5, 0x14, 0x03, 0x80, +0xEB, 0x14, 0x03, 0x80, 0x09, 0x12, 0x1B, 0x24, 0x94, 0x0C, 0x94, 0x0E, 0x94, 0x18, 0x94, 0x1A, -0x31, 0x15, 0x11, 0x80, 0x7F, 0x15, 0x11, 0x80, -0x39, 0x15, 0x11, 0x80, 0x71, 0x15, 0x11, 0x80, -0x7F, 0x15, 0x11, 0x80, 0x7F, 0x15, 0x11, 0x80, -0x41, 0x15, 0x11, 0x80, 0x49, 0x15, 0x11, 0x80, -0x51, 0x15, 0x11, 0x80, 0x59, 0x15, 0x11, 0x80, -0x7F, 0x15, 0x11, 0x80, 0x69, 0x15, 0x11, 0x80, -0x7F, 0x15, 0x11, 0x80, 0x7F, 0x15, 0x11, 0x80, -0x61, 0x15, 0x11, 0x80, 0x7F, 0x15, 0x11, 0x80, -0x7F, 0x15, 0x11, 0x80, 0x7F, 0x15, 0x11, 0x80, -0x79, 0x15, 0x11, 0x80, 0x04, 0x08, 0x08, 0x08, +0x39, 0x15, 0x11, 0x80, 0x87, 0x15, 0x11, 0x80, +0x41, 0x15, 0x11, 0x80, 0x79, 0x15, 0x11, 0x80, +0x87, 0x15, 0x11, 0x80, 0x87, 0x15, 0x11, 0x80, +0x49, 0x15, 0x11, 0x80, 0x51, 0x15, 0x11, 0x80, +0x59, 0x15, 0x11, 0x80, 0x61, 0x15, 0x11, 0x80, +0x87, 0x15, 0x11, 0x80, 0x71, 0x15, 0x11, 0x80, +0x87, 0x15, 0x11, 0x80, 0x87, 0x15, 0x11, 0x80, +0x69, 0x15, 0x11, 0x80, 0x87, 0x15, 0x11, 0x80, +0x87, 0x15, 0x11, 0x80, 0x87, 0x15, 0x11, 0x80, +0x81, 0x15, 0x11, 0x80, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x14, 0x1C, 0x24, 0x2C, 0x36, -0x40, 0x00, 0x00, 0x00, 0x97, 0x31, 0x11, 0x80, -0xAF, 0x31, 0x11, 0x80, 0x97, 0x31, 0x11, 0x80, -0xAF, 0x31, 0x11, 0x80, 0x97, 0x31, 0x11, 0x80, -0xAF, 0x31, 0x11, 0x80, 0xBB, 0x31, 0x11, 0x80, -0xBB, 0x31, 0x11, 0x80, 0xBB, 0x31, 0x11, 0x80, -0x97, 0x31, 0x11, 0x80, 0xAF, 0x31, 0x11, 0x80, -0xAF, 0x31, 0x11, 0x80, 0x97, 0x31, 0x11, 0x80, -0xC1, 0x31, 0x11, 0x80, 0xC1, 0x31, 0x11, 0x80, +0x40, 0x00, 0x00, 0x00, 0x7F, 0x32, 0x11, 0x80, +0x9B, 0x32, 0x11, 0x80, 0x7F, 0x32, 0x11, 0x80, +0x9B, 0x32, 0x11, 0x80, 0x7F, 0x32, 0x11, 0x80, +0x9B, 0x32, 0x11, 0x80, 0xA9, 0x32, 0x11, 0x80, +0xA9, 0x32, 0x11, 0x80, 0xA9, 0x32, 0x11, 0x80, +0x7F, 0x32, 0x11, 0x80, 0x9B, 0x32, 0x11, 0x80, +0x9B, 0x32, 0x11, 0x80, 0x7F, 0x32, 0x11, 0x80, +0xB1, 0x32, 0x11, 0x80, 0xB1, 0x32, 0x11, 0x80, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x00, 0x00, 0x12, 0x12, 0x14, 0x12, 0x0F, 0x0F, 0x0C, 0x0C, 0x09, 0x08, 0x08, 0x07, @@ -632,16 +632,16 @@ u8 array_mp_8822c_fw_ap[] = { 0x0A, 0x08, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x4A, 0x40, 0x36, 0x2C, 0x24, 0x1C, 0x14, 0x0C, 0x04, 0x00, 0x00, 0x00, -0x49, 0x4D, 0x10, 0x80, 0x1D, 0x4E, 0x10, 0x80, -0x59, 0x4D, 0x10, 0x80, 0x8F, 0x4D, 0x10, 0x80, -0xCB, 0x4D, 0x10, 0x80, 0x1D, 0x4E, 0x10, 0x80, -0x67, 0x4E, 0x10, 0x80, 0x7F, 0x4E, 0x10, 0x80, -0x8B, 0x4E, 0x10, 0x80, 0xBD, 0x4E, 0x10, 0x80, -0xEF, 0x4E, 0x10, 0x80, 0xFF, 0x4E, 0x10, 0x80, -0x09, 0x12, 0x1B, 0x24, 0x5F, 0x5E, 0x11, 0x80, -0xE3, 0x5F, 0x11, 0x80, 0xC5, 0x60, 0x11, 0x80, -0x2B, 0x61, 0x11, 0x80, 0x2B, 0x61, 0x11, 0x80, -0x5F, 0x5E, 0x11, 0x80, 0x5F, 0x5E, 0x11, 0x80, +0x71, 0x4D, 0x10, 0x80, 0x45, 0x4E, 0x10, 0x80, +0x81, 0x4D, 0x10, 0x80, 0xB7, 0x4D, 0x10, 0x80, +0xF3, 0x4D, 0x10, 0x80, 0x45, 0x4E, 0x10, 0x80, +0x8F, 0x4E, 0x10, 0x80, 0xA7, 0x4E, 0x10, 0x80, +0xB3, 0x4E, 0x10, 0x80, 0xE5, 0x4E, 0x10, 0x80, +0x17, 0x4F, 0x10, 0x80, 0x27, 0x4F, 0x10, 0x80, +0x09, 0x12, 0x1B, 0x24, 0xEB, 0x5F, 0x11, 0x80, +0x6F, 0x61, 0x11, 0x80, 0x51, 0x62, 0x11, 0x80, +0xB7, 0x62, 0x11, 0x80, 0xB7, 0x62, 0x11, 0x80, +0xEB, 0x5F, 0x11, 0x80, 0xEB, 0x5F, 0x11, 0x80, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x5F, 0x70, 0x68, 0x79, 0x64, 0x6D, 0x5F, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x5F, 0x69, @@ -692,34 +692,34 @@ u8 array_mp_8822c_fw_ap[] = { 0x6B, 0x5F, 0x70, 0x6B, 0x67, 0x5F, 0x73, 0x65, 0x74, 0x5F, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x5F, 0x38, 0x38, 0x32, 0x32, 0x63, 0x00, 0x00, 0x00, -0x85, 0x75, 0x11, 0x80, 0xA7, 0x75, 0x11, 0x80, -0xC9, 0x75, 0x11, 0x80, 0xEB, 0x75, 0x11, 0x80, -0x0F, 0x76, 0x11, 0x80, 0x49, 0x76, 0x11, 0x80, -0x6D, 0x76, 0x11, 0x80, 0x91, 0x76, 0x11, 0x80, -0xB5, 0x76, 0x11, 0x80, 0xDB, 0x76, 0x11, 0x80, +0x11, 0x77, 0x11, 0x80, 0x33, 0x77, 0x11, 0x80, +0x55, 0x77, 0x11, 0x80, 0x77, 0x77, 0x11, 0x80, +0x9B, 0x77, 0x11, 0x80, 0xD5, 0x77, 0x11, 0x80, +0xF9, 0x77, 0x11, 0x80, 0x1D, 0x78, 0x11, 0x80, +0x41, 0x78, 0x11, 0x80, 0x67, 0x78, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, 0x40, 0x00, 0x00, 0x00, 0xE0, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, -0xE3, 0x04, 0x00, 0x00, 0x47, 0x2F, 0x03, 0x80, -0x57, 0x2F, 0x03, 0x80, 0x61, 0x2F, 0x03, 0x80, -0x6B, 0x2F, 0x03, 0x80, 0x7D, 0x2F, 0x03, 0x80, -0xFD, 0x39, 0x03, 0x80, 0xF9, 0x39, 0x03, 0x80, -0xFD, 0x39, 0x03, 0x80, 0xF9, 0x39, 0x03, 0x80, -0x1D, 0x3A, 0x03, 0x80, 0xF9, 0x39, 0x03, 0x80, -0x1D, 0x3A, 0x03, 0x80, 0xF9, 0x39, 0x03, 0x80, -0x3D, 0x3A, 0x03, 0x80, 0xF9, 0x39, 0x03, 0x80, -0x3D, 0x3A, 0x03, 0x80, 0xF9, 0x39, 0x03, 0x80, -0x5D, 0x3A, 0x03, 0x80, 0xF9, 0x39, 0x03, 0x80, -0x5D, 0x3A, 0x03, 0x80, 0x65, 0x3B, 0x03, 0x80, -0x65, 0x3B, 0x03, 0x80, 0x65, 0x3B, 0x03, 0x80, -0x65, 0x3B, 0x03, 0x80, 0x85, 0x3B, 0x03, 0x80, -0x85, 0x3B, 0x03, 0x80, 0x85, 0x3B, 0x03, 0x80, -0x85, 0x3B, 0x03, 0x80, 0xA5, 0x3B, 0x03, 0x80, -0xA5, 0x3B, 0x03, 0x80, 0xA5, 0x3B, 0x03, 0x80, -0xA5, 0x3B, 0x03, 0x80, 0xC5, 0x3B, 0x03, 0x80, -0xC5, 0x3B, 0x03, 0x80, 0xC5, 0x3B, 0x03, 0x80, -0xC5, 0x3B, 0x03, 0x80, 0x47, 0x44, 0x03, 0x80, -0xA7, 0x44, 0x03, 0x80, 0x3B, 0x45, 0x03, 0x80, -0xD9, 0x45, 0x03, 0x80, 0x7D, 0x46, 0x03, 0x80, +0xE3, 0x04, 0x00, 0x00, 0x8B, 0x2F, 0x03, 0x80, +0x9B, 0x2F, 0x03, 0x80, 0xA5, 0x2F, 0x03, 0x80, +0xAF, 0x2F, 0x03, 0x80, 0xC1, 0x2F, 0x03, 0x80, +0x91, 0x3A, 0x03, 0x80, 0x8D, 0x3A, 0x03, 0x80, +0x91, 0x3A, 0x03, 0x80, 0x8D, 0x3A, 0x03, 0x80, +0xB1, 0x3A, 0x03, 0x80, 0x8D, 0x3A, 0x03, 0x80, +0xB1, 0x3A, 0x03, 0x80, 0x8D, 0x3A, 0x03, 0x80, +0xD1, 0x3A, 0x03, 0x80, 0x8D, 0x3A, 0x03, 0x80, +0xD1, 0x3A, 0x03, 0x80, 0x8D, 0x3A, 0x03, 0x80, +0xF1, 0x3A, 0x03, 0x80, 0x8D, 0x3A, 0x03, 0x80, +0xF1, 0x3A, 0x03, 0x80, 0xF9, 0x3B, 0x03, 0x80, +0xF9, 0x3B, 0x03, 0x80, 0xF9, 0x3B, 0x03, 0x80, +0xF9, 0x3B, 0x03, 0x80, 0x19, 0x3C, 0x03, 0x80, +0x19, 0x3C, 0x03, 0x80, 0x19, 0x3C, 0x03, 0x80, +0x19, 0x3C, 0x03, 0x80, 0x39, 0x3C, 0x03, 0x80, +0x39, 0x3C, 0x03, 0x80, 0x39, 0x3C, 0x03, 0x80, +0x39, 0x3C, 0x03, 0x80, 0x59, 0x3C, 0x03, 0x80, +0x59, 0x3C, 0x03, 0x80, 0x59, 0x3C, 0x03, 0x80, +0x59, 0x3C, 0x03, 0x80, 0xDB, 0x44, 0x03, 0x80, +0x3B, 0x45, 0x03, 0x80, 0xCF, 0x45, 0x03, 0x80, +0x6D, 0x46, 0x03, 0x80, 0x11, 0x47, 0x03, 0x80, 0xFC, 0x10, 0x60, 0xB8, 0xFA, 0xFA, 0xFA, 0xFA, 0xCF, 0x01, 0x64, 0xB8, 0x8C, 0x04, 0x64, 0xB8, 0x90, 0x04, 0x64, 0xB8, 0x94, 0x04, 0x64, 0xB8, @@ -733,126 +733,124 @@ u8 array_mp_8822c_fw_ap[] = { 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x09, 0x00, 0xF4, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFC, 0xFF, 0x00, 0x00, 0x01, 0x00, 0xC0, 0x00, 0x60, 0xB8, -0xBC, 0x01, 0x64, 0xB8, 0x01, 0x00, 0x00, 0x80, -0x00, 0x00, 0x00, 0x80, 0x4D, 0x01, 0x64, 0xB8, -0x00, 0x01, 0x64, 0xB8, 0x04, 0x02, 0x64, 0xB8, -0x24, 0x04, 0x64, 0xB8, 0x56, 0x04, 0x64, 0xB8, -0x1C, 0x04, 0x64, 0xB8, 0x00, 0x00, 0x00, 0x10, -0x00, 0x00, 0x00, 0x40, 0x7A, 0x04, 0x64, 0xB8, -0x04, 0x00, 0x70, 0xB8, 0x0A, 0x00, 0x70, 0xB8, -0x34, 0x00, 0x78, 0xB8, 0x18, 0x11, 0x64, 0xB8, -0x55, 0x00, 0x78, 0xB8, 0x56, 0x00, 0x78, 0xB8, -0x40, 0x00, 0x78, 0xB8, 0x3A, 0x00, 0x78, 0xB8, -0x4C, 0x04, 0x64, 0xB8, 0x4D, 0x04, 0x64, 0xB8, -0x16, 0x00, 0x70, 0xB8, 0x4E, 0x04, 0x64, 0xB8, -0x17, 0x00, 0x70, 0xB8, 0x4F, 0x04, 0x64, 0xB8, -0xC7, 0x01, 0x64, 0xB8, 0x3C, 0x01, 0x64, 0xB8, -0x1C, 0x01, 0x64, 0xB8, 0xFF, 0xFF, 0x03, 0x00, -0x52, 0x05, 0x64, 0xB8, 0x20, 0x04, 0x64, 0xB8, -0xFF, 0xFF, 0xEF, 0xFF, 0x5F, 0x11, 0x64, 0xB8, -0x86, 0x00, 0x60, 0xB8, 0x87, 0x00, 0x60, 0xB8, -0x88, 0x00, 0x60, 0xB8, 0x89, 0x00, 0x60, 0xB8, -0x8A, 0x00, 0x60, 0xB8, 0x84, 0x00, 0x60, 0xB8, -0xF8, 0x10, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x02, -0xCB, 0x01, 0x64, 0xB8, 0x00, 0x00, 0x68, 0xB8, -0x04, 0x00, 0x68, 0xB8, 0x08, 0x00, 0x68, 0xB8, -0x0C, 0x00, 0x68, 0xB8, 0x00, 0x00, 0x00, 0x03, -0x00, 0x00, 0x00, 0x42, 0xE0, 0x00, 0x60, 0xB8, -0xFF, 0xFF, 0xFF, 0xFD, 0xE3, 0x00, 0x60, 0xB8, -0x00, 0x00, 0x00, 0x01, 0xE1, 0x00, 0x60, 0xB8, -0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, -0xCC, 0x00, 0x60, 0xB8, 0x02, 0x00, 0x60, 0xB8, -0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFB, -0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0x1F, -0x04, 0x00, 0x60, 0xB8, 0x04, 0x00, 0x64, 0xB8, -0x08, 0x00, 0x60, 0xB8, 0x08, 0x00, 0x64, 0xB8, -0xE8, 0x12, 0x64, 0xB8, 0x24, 0x00, 0x60, 0xB8, -0x80, 0x00, 0x60, 0xB8, 0x8C, 0x00, 0x60, 0xB8, -0xFF, 0xFF, 0xFF, 0xEF, 0xB0, 0x02, 0x64, 0xB8, -0x00, 0x0C, 0x01, 0x00, 0x08, 0x00, 0x00, 0xF8, -0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0x00, -0x01, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xFF, 0x0F, -0x21, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xC0, -0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x0F, -0x62, 0x06, 0x64, 0xB8, 0xB4, 0x06, 0x64, 0xB8, -0x06, 0x00, 0x00, 0x89, 0x00, 0x0A, 0x08, 0x00, -0x01, 0x00, 0x66, 0xB8, 0x00, 0x00, 0x02, 0x00, -0x00, 0x00, 0x66, 0xB8, 0x00, 0xFF, 0xFF, 0x00, -0xCD, 0x9B, 0x78, 0x56, 0x04, 0x1C, 0x66, 0xB8, -0x08, 0x1C, 0x66, 0xB8, 0xFF, 0xFF, 0xFF, 0x3F, -0x1F, 0x00, 0x60, 0xB8, 0x05, 0xEA, 0xEF, 0xFD, -0x06, 0xEA, 0xEF, 0xFD, 0x00, 0x1C, 0x66, 0xB8, -0xFF, 0xFF, 0x3F, 0x00, 0x04, 0xEA, 0xEF, 0xFD, -0x07, 0xEA, 0xEF, 0xFD, 0x08, 0xEA, 0xEF, 0xFD, -0x09, 0xEA, 0xEF, 0xFD, 0x0A, 0xEA, 0xEF, 0xFD, -0x00, 0x10, 0x66, 0xB8, 0x23, 0x04, 0x64, 0xB8, -0x30, 0x04, 0x64, 0xB8, 0x34, 0x04, 0x64, 0xB8, -0x04, 0x05, 0x07, 0x08, 0x00, 0x01, 0x01, 0x02, -0x2D, 0x04, 0x64, 0xB8, 0x06, 0x00, 0x66, 0xB8, -0x52, 0x04, 0x64, 0xB8, 0x53, 0x04, 0x64, 0xB8, -0x50, 0x04, 0x64, 0xB8, 0x51, 0x04, 0x64, 0xB8, -0x01, 0x1C, 0x66, 0xB8, 0x02, 0x1C, 0x66, 0xB8, -0x03, 0x1C, 0x66, 0xB8, 0x05, 0x1C, 0x66, 0xB8, -0x06, 0x1C, 0x66, 0xB8, 0x07, 0x1C, 0x66, 0xB8, -0x00, 0x00, 0x78, 0xB8, 0x44, 0x00, 0x78, 0xB8, -0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x60, -0x52, 0x29, 0x46, 0xE2, 0x03, 0x29, 0x29, 0x00, -0x32, 0xFC, 0x18, 0xA2, 0x08, 0x00, 0x04, 0x05, -0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x0F, 0x70, -0x01, 0x00, 0x1F, 0x70, 0x01, 0x00, 0x2F, 0x70, -0x01, 0x00, 0x3F, 0x70, 0x01, 0x00, 0x4F, 0x70, -0x01, 0x00, 0x5F, 0x70, 0x01, 0x00, 0x6F, 0x70, -0x01, 0x00, 0x7F, 0x70, 0x01, 0x00, 0x8F, 0x70, -0x01, 0x00, 0x9F, 0x70, 0x01, 0x00, 0xAF, 0x70, -0x01, 0x00, 0xBF, 0x70, 0x01, 0x00, 0xCF, 0x70, -0x01, 0x00, 0xDF, 0x70, 0x01, 0x00, 0xEF, 0x70, -0x01, 0x00, 0xFF, 0x70, 0x5E, 0x00, 0xD5, 0xF7, -0x41, 0x80, 0x0B, 0x70, 0x40, 0x00, 0x1F, 0x70, -0x40, 0x00, 0x2F, 0x70, 0x40, 0x00, 0x3F, 0x70, -0x40, 0x00, 0x4F, 0x70, 0x41, 0x80, 0x5B, 0x70, -0x40, 0x00, 0x6F, 0x70, 0x41, 0x40, 0x14, 0x70, -0x41, 0x40, 0x24, 0x70, 0x41, 0x40, 0x34, 0x70, -0x41, 0x40, 0x44, 0x70, 0x41, 0x40, 0x64, 0x70, -0x41, 0x80, 0x7B, 0x70, 0x41, 0x80, 0x8B, 0x70, -0x41, 0x80, 0x9B, 0x70, 0x41, 0x80, 0xAB, 0x70, -0x41, 0x80, 0xBB, 0x70, 0x41, 0x80, 0xCB, 0x70, -0x41, 0x80, 0xDB, 0x70, 0x41, 0x80, 0xEB, 0x70, -0x41, 0x80, 0xFB, 0x70, 0x00, 0x00, 0x10, 0x00, -0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x70, -0x00, 0x00, 0x03, 0x00, 0xEF, 0x00, 0x60, 0xB8, -0x03, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x60, -0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0x80, -0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x20, 0x00, -0x08, 0x18, 0x07, 0x00, 0x08, 0x0C, 0x07, 0x00, -0x00, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x04, 0x00, -0x00, 0x00, 0x08, 0x00, 0xFF, 0x60, 0x0F, 0x00, -0x3F, 0xD8, 0x0F, 0x00, 0xFF, 0x60, 0x07, 0x00, -0x3F, 0xD8, 0x0D, 0x00, 0xFF, 0xDE, 0x07, 0x00, -0xBF, 0xF7, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x06, -0x00, 0xC0, 0x0F, 0x00, 0x12, 0x33, 0x03, 0x00, -0x11, 0x33, 0x03, 0x00, 0x12, 0x11, 0x01, 0x00, -0x00, 0x00, 0xFF, 0xFF, 0x31, 0xC9, 0x62, 0x49, -0x55, 0x24, 0x01, 0xFF, 0xC8, 0xFE, 0x18, 0x3E, -0xDE, 0xF0, 0xFA, 0x00, 0x44, 0x23, 0x12, 0x00, -0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xF0, 0x1F, 0x00, -0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, -0x3F, 0xFF, 0xFE, 0xDF, 0x00, 0xFF, 0x0F, 0x00, -0x01, 0x80, 0x03, 0x70, 0x01, 0x80, 0x53, 0x70, -0x01, 0x80, 0x73, 0x70, 0x01, 0x80, 0x83, 0x70, -0x01, 0x80, 0x93, 0x70, 0x01, 0x80, 0xA3, 0x70, -0x01, 0x80, 0xB3, 0x70, 0x01, 0x80, 0xC3, 0x70, -0x01, 0x80, 0xD3, 0x70, 0x01, 0x80, 0xE3, 0x70, -0x01, 0x80, 0xF3, 0x70, 0x01, 0x80, 0x0B, 0x70, -0x01, 0x80, 0x5B, 0x70, 0x01, 0x80, 0x7B, 0x70, -0x01, 0x80, 0x8B, 0x70, 0x01, 0x80, 0x9B, 0x70, -0x01, 0x80, 0xAB, 0x70, 0x01, 0x80, 0xBB, 0x70, -0x01, 0x80, 0xCB, 0x70, 0x01, 0x80, 0xDB, 0x70, -0x01, 0x80, 0xEB, 0x70, 0x01, 0x80, 0xFB, 0x70, -0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x06, 0x00, -0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, -0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, -0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, -0x00, 0x00, 0x40, 0x00, 0x00, 0xFC, 0xF8, 0xFF, +0x00, 0x00, 0x40, 0x00, 0xBC, 0x01, 0x64, 0xB8, +0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, +0x4D, 0x01, 0x64, 0xB8, 0x00, 0x01, 0x64, 0xB8, +0x04, 0x02, 0x64, 0xB8, 0x24, 0x04, 0x64, 0xB8, +0x56, 0x04, 0x64, 0xB8, 0x1C, 0x04, 0x64, 0xB8, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, +0x7A, 0x04, 0x64, 0xB8, 0x04, 0x00, 0x70, 0xB8, +0x0A, 0x00, 0x70, 0xB8, 0x34, 0x00, 0x78, 0xB8, +0x18, 0x11, 0x64, 0xB8, 0x55, 0x00, 0x78, 0xB8, +0x56, 0x00, 0x78, 0xB8, 0x40, 0x00, 0x78, 0xB8, +0x3A, 0x00, 0x78, 0xB8, 0x4C, 0x04, 0x64, 0xB8, +0x4D, 0x04, 0x64, 0xB8, 0x16, 0x00, 0x70, 0xB8, +0x4E, 0x04, 0x64, 0xB8, 0x17, 0x00, 0x70, 0xB8, +0x4F, 0x04, 0x64, 0xB8, 0xC7, 0x01, 0x64, 0xB8, +0x3C, 0x01, 0x64, 0xB8, 0x1C, 0x01, 0x64, 0xB8, +0xFF, 0xFF, 0x03, 0x00, 0x52, 0x05, 0x64, 0xB8, +0x20, 0x04, 0x64, 0xB8, 0xFF, 0xFF, 0xEF, 0xFF, +0x5F, 0x11, 0x64, 0xB8, 0x86, 0x00, 0x60, 0xB8, +0x87, 0x00, 0x60, 0xB8, 0x88, 0x00, 0x60, 0xB8, +0x89, 0x00, 0x60, 0xB8, 0x8A, 0x00, 0x60, 0xB8, +0x84, 0x00, 0x60, 0xB8, 0xF8, 0x10, 0x60, 0xB8, +0x00, 0x00, 0x00, 0x02, 0xCB, 0x01, 0x64, 0xB8, +0x00, 0x00, 0x68, 0xB8, 0x04, 0x00, 0x68, 0xB8, +0x08, 0x00, 0x68, 0xB8, 0x0C, 0x00, 0x68, 0xB8, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x42, +0xE0, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFF, 0xFD, +0xE3, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x01, +0xE1, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x60, +0x00, 0x00, 0x00, 0x20, 0xCC, 0x00, 0x60, 0xB8, +0x02, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x04, +0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xDF, +0xFF, 0xFF, 0xFF, 0x1F, 0x04, 0x00, 0x60, 0xB8, +0x04, 0x00, 0x64, 0xB8, 0x08, 0x00, 0x60, 0xB8, +0x08, 0x00, 0x64, 0xB8, 0xE8, 0x12, 0x64, 0xB8, +0x24, 0x00, 0x60, 0xB8, 0x80, 0x00, 0x60, 0xB8, +0x8C, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFF, 0xEF, +0xB0, 0x02, 0x64, 0xB8, 0x00, 0x0C, 0x01, 0x00, +0x08, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, +0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x00, 0xE0, +0x00, 0x00, 0xFF, 0x0F, 0x21, 0x00, 0x00, 0xE0, +0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x0F, +0x00, 0x00, 0x00, 0x0F, 0x62, 0x06, 0x64, 0xB8, +0xB4, 0x06, 0x64, 0xB8, 0x06, 0x00, 0x00, 0x89, +0x00, 0x0A, 0x08, 0x00, 0x01, 0x00, 0x66, 0xB8, +0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0xB8, +0x00, 0xFF, 0xFF, 0x00, 0xCD, 0x9B, 0x78, 0x56, +0x04, 0x1C, 0x66, 0xB8, 0x08, 0x1C, 0x66, 0xB8, +0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00, 0x60, 0xB8, +0x05, 0xEA, 0xEF, 0xFD, 0x06, 0xEA, 0xEF, 0xFD, +0x00, 0x1C, 0x66, 0xB8, 0xFF, 0xFF, 0x3F, 0x00, +0x04, 0xEA, 0xEF, 0xFD, 0x07, 0xEA, 0xEF, 0xFD, +0x08, 0xEA, 0xEF, 0xFD, 0x09, 0xEA, 0xEF, 0xFD, +0x0A, 0xEA, 0xEF, 0xFD, 0x00, 0x10, 0x66, 0xB8, +0x23, 0x04, 0x64, 0xB8, 0x30, 0x04, 0x64, 0xB8, +0x34, 0x04, 0x64, 0xB8, 0x04, 0x05, 0x07, 0x08, +0x00, 0x01, 0x01, 0x02, 0x2D, 0x04, 0x64, 0xB8, +0x06, 0x00, 0x66, 0xB8, 0x52, 0x04, 0x64, 0xB8, +0x53, 0x04, 0x64, 0xB8, 0x50, 0x04, 0x64, 0xB8, +0x51, 0x04, 0x64, 0xB8, 0x01, 0x1C, 0x66, 0xB8, +0x02, 0x1C, 0x66, 0xB8, 0x03, 0x1C, 0x66, 0xB8, +0x05, 0x1C, 0x66, 0xB8, 0x06, 0x1C, 0x66, 0xB8, +0x07, 0x1C, 0x66, 0xB8, 0x00, 0x00, 0x78, 0xB8, +0x44, 0x00, 0x78, 0xB8, 0x01, 0x00, 0x00, 0xC0, +0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x08, +0x01, 0x00, 0x0F, 0x70, 0x01, 0x00, 0x1F, 0x70, +0x01, 0x00, 0x2F, 0x70, 0x01, 0x00, 0x3F, 0x70, +0x01, 0x00, 0x4F, 0x70, 0x01, 0x00, 0x5F, 0x70, +0x01, 0x00, 0x6F, 0x70, 0x01, 0x00, 0x7F, 0x70, +0x01, 0x00, 0x8F, 0x70, 0x01, 0x00, 0x9F, 0x70, +0x01, 0x00, 0xAF, 0x70, 0x01, 0x00, 0xBF, 0x70, +0x01, 0x00, 0xCF, 0x70, 0x01, 0x00, 0xDF, 0x70, +0x01, 0x00, 0xEF, 0x70, 0x01, 0x00, 0xFF, 0x70, +0x5E, 0x00, 0xD5, 0xF7, 0x41, 0x80, 0x0B, 0x70, +0x40, 0x00, 0x1F, 0x70, 0x40, 0x00, 0x2F, 0x70, +0x40, 0x00, 0x3F, 0x70, 0x40, 0x00, 0x4F, 0x70, +0x41, 0x80, 0x5B, 0x70, 0x40, 0x00, 0x6F, 0x70, +0x41, 0x40, 0x14, 0x70, 0x41, 0x40, 0x24, 0x70, +0x41, 0x40, 0x34, 0x70, 0x41, 0x40, 0x44, 0x70, +0x41, 0x40, 0x64, 0x70, 0x41, 0x80, 0x7B, 0x70, +0x41, 0x80, 0x8B, 0x70, 0x41, 0x80, 0x9B, 0x70, +0x41, 0x80, 0xAB, 0x70, 0x41, 0x80, 0xBB, 0x70, +0x41, 0x80, 0xCB, 0x70, 0x41, 0x80, 0xDB, 0x70, +0x41, 0x80, 0xEB, 0x70, 0x41, 0x80, 0xFB, 0x70, +0x00, 0x00, 0x10, 0x00, 0x50, 0x50, 0x50, 0x50, +0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03, 0x00, +0xEF, 0x00, 0x60, 0xB8, 0x03, 0x00, 0x00, 0xC0, +0x03, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xFF, +0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xC0, +0x00, 0x00, 0x20, 0x00, 0x08, 0x18, 0x07, 0x00, +0x08, 0x0C, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x00, +0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, +0xFF, 0x60, 0x0F, 0x00, 0x3F, 0xD8, 0x0F, 0x00, +0xFF, 0x60, 0x07, 0x00, 0x3F, 0xD8, 0x0D, 0x00, +0xFF, 0xDE, 0x07, 0x00, 0xBF, 0xF7, 0x0D, 0x00, +0x00, 0x00, 0x00, 0x06, 0x00, 0xC0, 0x0F, 0x00, +0x12, 0x33, 0x03, 0x00, 0x11, 0x33, 0x03, 0x00, +0x12, 0x11, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0x31, 0xC9, 0x62, 0x49, 0x55, 0x24, 0x01, 0xFF, +0xC8, 0xFE, 0x18, 0x3E, 0xDE, 0xF0, 0xFA, 0x00, +0x44, 0x23, 0x12, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, +0x00, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x78, +0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0xDF, +0x00, 0xFF, 0x0F, 0x00, 0x01, 0x80, 0x03, 0x70, +0x01, 0x80, 0x53, 0x70, 0x01, 0x80, 0x73, 0x70, +0x01, 0x80, 0x83, 0x70, 0x01, 0x80, 0x93, 0x70, +0x01, 0x80, 0xA3, 0x70, 0x01, 0x80, 0xB3, 0x70, +0x01, 0x80, 0xC3, 0x70, 0x01, 0x80, 0xD3, 0x70, +0x01, 0x80, 0xE3, 0x70, 0x01, 0x80, 0xF3, 0x70, +0x01, 0x80, 0x0B, 0x70, 0x01, 0x80, 0x5B, 0x70, +0x01, 0x80, 0x7B, 0x70, 0x01, 0x80, 0x8B, 0x70, +0x01, 0x80, 0x9B, 0x70, 0x01, 0x80, 0xAB, 0x70, +0x01, 0x80, 0xBB, 0x70, 0x01, 0x80, 0xCB, 0x70, +0x01, 0x80, 0xDB, 0x70, 0x01, 0x80, 0xEB, 0x70, +0x01, 0x80, 0xFB, 0x70, 0x00, 0x00, 0x00, 0xF0, +0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, +0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, +0x00, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x01, 0x00, +0x00, 0x00, 0x70, 0x00, 0x00, 0xFC, 0xF8, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x96, 0x02, 0x64, 0xB8, 0x00, 0x00, 0x70, 0xB8, 0x18, 0x00, 0x70, 0xB8, @@ -1015,188 +1013,191 @@ u8 array_mp_8822c_fw_ap[] = { 0x52, 0x65, 0x73, 0x65, 0x74, 0x20, 0x54, 0x78, 0x52, 0x70, 0x74, 0x00, 0x49, 0x44, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x52, 0x5B, 0x25, 0x62, 0x78, -0x5D, 0x2C, 0x52, 0x61, 0x74, 0x65, 0x3D, 0x25, -0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, 0x78, 0x2C, -0x54, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x4F, 0x6B, -0x3A, 0x25, 0x62, 0x78, 0x2C, 0x44, 0x70, 0x3A, -0x25, 0x62, 0x78, 0x2C, 0x54, 0x72, 0x79, 0x3A, -0x25, 0x62, 0x78, 0x00, 0x44, 0x72, 0x76, 0x46, -0x69, 0x78, 0x52, 0x61, 0x74, 0x65, 0x00, 0x00, -0x52, 0x54, 0x53, 0x20, 0x44, 0x72, 0x6F, 0x70, -0x00, 0x00, 0x00, 0x00, 0x53, 0x55, 0x20, 0x52, -0x61, 0x74, 0x65, 0x20, 0x52, 0x70, 0x74, 0x3A, -0x25, 0x62, 0x78, 0x21, 0x3D, 0x43, 0x54, 0x52, -0x4C, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x44, 0x69, 0x73, 0x52, 0x41, 0x20, 0x49, 0x44, -0x25, 0x62, 0x78, 0x00, 0x31, 0x52, 0x70, 0x74, -0x25, 0x62, 0x78, 0x20, 0x50, 0x72, 0x74, 0x79, -0x25, 0x62, 0x78, 0x20, 0x43, 0x54, 0x72, 0x79, -0x25, 0x62, 0x78, 0x00, 0x54, 0x3D, 0x4F, 0x4B, -0x2B, 0x44, 0x52, 0x4F, 0x50, 0x00, 0x00, 0x00, -0x54, 0x21, 0x3D, 0x4F, 0x4B, 0x2B, 0x44, 0x52, -0x4F, 0x50, 0x00, 0x00, 0x5B, 0x44, 0x65, 0x63, -0x5D, 0x54, 0x5F, 0x61, 0x63, 0x63, 0x25, 0x62, -0x78, 0x2C, 0x74, 0x72, 0x79, 0x5F, 0x6E, 0x65, -0x73, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x44, 0x6F, 0x20, 0x52, 0x41, 0x20, 0x25, 0x62, -0x78, 0x2C, 0x20, 0x74, 0x68, 0x3D, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x54, 0x62, 0x74, 0x74, -0x52, 0x41, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, -0x50, 0x45, 0x52, 0x3A, 0x4E, 0x65, 0x77, 0x4D, -0x61, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x4F, -0x6C, 0x64, 0x4D, 0x61, 0x3A, 0x25, 0x62, 0x78, -0x2C, 0x20, 0x43, 0x75, 0x72, 0x3A, 0x25, 0x62, -0x78, 0x20, 0x00, 0x00, 0x4D, 0x61, 0x70, 0x3A, -0x25, 0x62, 0x78, 0x20, 0x44, 0x69, 0x66, 0x3A, -0x25, 0x62, 0x78, 0x20, 0x6F, 0x66, 0x74, 0x3A, -0x25, 0x62, 0x78, 0x00, 0x56, 0x41, 0x52, 0x3A, -0x20, 0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x44, 0x65, 0x63, 0x5F, -0x6F, 0x66, 0x73, 0x74, 0x7B, 0x50, 0x2C, 0x4E, -0x7D, 0x3A, 0x20, 0x25, 0x62, 0x78, 0x2C, 0x25, -0x62, 0x78, 0x00, 0x00, 0x30, 0x55, 0x70, 0x25, -0x62, 0x78, 0x2C, 0x44, 0x77, 0x6E, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x31, 0x55, 0x70, 0x25, -0x62, 0x78, 0x2C, 0x44, 0x77, 0x6E, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x53, 0x74, 0x61, 0x72, -0x74, 0x25, 0x62, 0x78, 0x3A, 0x25, 0x62, 0x78, +0x5D, 0x2C, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, +0x2D, 0x3E, 0x25, 0x62, 0x78, 0x2C, 0x42, 0x77, +0x3A, 0x25, 0x62, 0x78, 0x2C, 0x53, 0x63, 0x3A, +0x25, 0x62, 0x78, 0x2C, 0x54, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x4F, 0x6B, 0x3A, 0x25, 0x62, 0x78, +0x2C, 0x44, 0x70, 0x3A, 0x25, 0x62, 0x78, 0x2C, +0x54, 0x72, 0x79, 0x3A, 0x25, 0x62, 0x78, 0x00, +0x44, 0x72, 0x76, 0x46, 0x69, 0x78, 0x52, 0x61, +0x74, 0x65, 0x00, 0x00, 0x52, 0x54, 0x53, 0x20, +0x44, 0x72, 0x6F, 0x70, 0x00, 0x00, 0x00, 0x00, +0x53, 0x55, 0x20, 0x52, 0x61, 0x74, 0x65, 0x20, +0x52, 0x70, 0x74, 0x3A, 0x25, 0x62, 0x78, 0x21, +0x3D, 0x43, 0x54, 0x52, 0x4C, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x44, 0x69, 0x73, 0x52, +0x41, 0x20, 0x49, 0x44, 0x25, 0x62, 0x78, 0x00, +0x31, 0x52, 0x70, 0x74, 0x25, 0x62, 0x78, 0x20, +0x50, 0x72, 0x74, 0x79, 0x25, 0x62, 0x78, 0x20, +0x43, 0x54, 0x72, 0x79, 0x25, 0x62, 0x78, 0x00, +0x54, 0x3D, 0x4F, 0x4B, 0x2B, 0x44, 0x52, 0x4F, +0x50, 0x00, 0x00, 0x00, 0x54, 0x21, 0x3D, 0x4F, +0x4B, 0x2B, 0x44, 0x52, 0x4F, 0x50, 0x00, 0x00, +0x5B, 0x44, 0x65, 0x63, 0x5D, 0x54, 0x5F, 0x61, +0x63, 0x63, 0x25, 0x62, 0x78, 0x2C, 0x74, 0x72, +0x79, 0x5F, 0x6E, 0x65, 0x73, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x44, 0x6F, 0x20, 0x52, +0x41, 0x20, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x74, +0x68, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x54, 0x62, 0x74, 0x74, 0x52, 0x41, 0x20, 0x25, +0x62, 0x78, 0x00, 0x00, 0x50, 0x45, 0x52, 0x3A, +0x4E, 0x65, 0x77, 0x4D, 0x61, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x20, 0x4F, 0x6C, 0x64, 0x4D, 0x61, +0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x43, 0x75, +0x72, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x00, 0x00, +0x4D, 0x61, 0x70, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x44, 0x69, 0x66, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x6F, 0x66, 0x74, 0x3A, 0x25, 0x62, 0x78, 0x00, +0x56, 0x41, 0x52, 0x3A, 0x20, 0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x4D, 0x74, 0x42, 0x77, 0x20, 0x55, 0x70, 0x44, -0x77, 0x25, 0x62, 0x78, 0x20, 0x42, 0x57, 0x25, -0x62, 0x78, 0x20, 0x52, 0x74, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x48, 0x69, 0x74, 0x25, -0x62, 0x78, 0x20, 0x52, 0x74, 0x30, 0x3D, 0x25, -0x77, 0x78, 0x20, 0x52, 0x74, 0x31, 0x3D, 0x25, -0x77, 0x78, 0x00, 0x00, 0x6C, 0x6D, 0x74, 0x20, -0x52, 0x25, 0x62, 0x78, 0x20, 0x4C, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x52, 0x53, 0x53, 0x49, -0x20, 0x52, 0x6C, 0x73, 0x4C, 0x6D, 0x74, 0x00, -0x52, 0x53, 0x53, 0x49, 0x20, 0x49, 0x6E, 0x4C, -0x6D, 0x74, 0x00, 0x00, 0x4C, 0x6D, 0x74, 0x20, -0x31, 0x53, 0x53, 0x25, 0x62, 0x78, 0x20, 0x25, -0x62, 0x78, 0x2C, 0x32, 0x53, 0x53, 0x25, 0x62, -0x78, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x57, 0x72, 0x69, 0x74, 0x65, 0x45, 0x6E, 0x3A, -0x25, 0x62, 0x78, 0x20, 0x42, 0x46, 0x63, 0x74, -0x72, 0x6C, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, -0x52, 0x65, 0x63, 0x45, 0x6E, 0x3A, 0x25, 0x62, -0x78, 0x20, 0x42, 0x46, 0x63, 0x74, 0x72, 0x6C, -0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x53, 0x6E, 0x64, 0x44, 0x20, 0x4D, 0x3A, 0x25, -0x62, 0x78, 0x20, 0x52, 0x3A, 0x25, 0x62, 0x78, -0x20, 0x52, 0x25, 0x62, 0x78, 0x20, 0x43, 0x74, -0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x41, 0x70, 0x70, 0x6C, 0x56, 0x3A, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x4E, 0x61, 0x70, 0x70, -0x6C, 0x56, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, -0x53, 0x74, 0x6F, 0x72, 0x45, 0x6E, 0x3A, 0x25, -0x62, 0x78, 0x20, 0x42, 0x46, 0x63, 0x74, 0x72, -0x6C, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x52, 0x74, 0x25, 0x62, 0x78, 0x2C, 0x52, 0x74, -0x5F, 0x63, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x48, 0x52, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x4C, -0x52, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x54, 0x79, -0x70, 0x65, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, -0x46, 0x69, 0x78, 0x20, 0x69, 0x64, 0x3D, 0x25, -0x62, 0x78, 0x20, 0x42, 0x77, 0x3D, 0x25, 0x62, -0x78, 0x20, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x49, 0x44, 0x3D, 0x25, -0x62, 0x78, 0x2C, 0x42, 0x43, 0x6E, 0x74, 0x3D, -0x25, 0x62, 0x78, 0x2C, 0x42, 0x54, 0x3A, 0x25, -0x78, 0x2C, 0x42, 0x4F, 0x6B, 0x3A, 0x25, 0x78, -0x00, 0x00, 0x00, 0x00, 0x49, 0x44, 0x3D, 0x25, -0x62, 0x78, 0x2C, 0x42, 0x52, 0x61, 0x74, 0x65, -0x3D, 0x25, 0x62, 0x78, 0x2C, 0x42, 0x50, 0x45, -0x52, 0x3A, 0x25, 0x78, 0x00, 0x00, 0x00, 0x00, -0x52, 0x61, 0x4F, 0x63, 0x63, 0x4E, 0x75, 0x6D, -0x25, 0x62, 0x78, 0x00, 0x55, 0x70, 0x52, 0x61, -0x74, 0x65, 0x25, 0x62, 0x78, 0x20, 0x42, 0x57, -0x25, 0x62, 0x78, 0x20, 0x4D, 0x61, 0x78, 0x42, -0x57, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x31, 0x2E, 0x48, 0x2D, 0x65, 0x73, 0x74, 0x20, -0x25, 0x62, 0x78, 0x00, 0x32, 0x2E, 0x48, 0x2D, -0x65, 0x73, 0x74, 0x53, 0x20, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x33, 0x2E, 0x3E, 0x48, -0x2D, 0x65, 0x73, 0x74, 0x20, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x34, 0x2E, 0x4D, 0x2D, -0x42, 0x77, 0x55, 0x70, 0x20, 0x52, 0x61, 0x74, -0x65, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x42, -0x77, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x35, 0x2E, 0x42, 0x77, 0x55, 0x70, 0x3D, 0x25, -0x62, 0x78, 0x00, 0x00, 0x36, 0x2E, 0x53, 0x47, -0x49, 0x5F, 0x55, 0x70, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x25, 0x62, 0x78, 0x3A, -0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x37, 0x2E, 0x52, 0x61, -0x74, 0x65, 0x55, 0x70, 0x25, 0x62, 0x78, 0x00, -0x30, 0x52, 0x74, 0x25, 0x62, 0x78, 0x20, 0x25, -0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, -0x31, 0x52, 0x74, 0x25, 0x62, 0x78, 0x20, 0x25, -0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, -0x4E, 0x6F, 0x20, 0x55, 0x70, 0x20, 0x52, 0x61, -0x74, 0x65, 0x00, 0x00, 0x32, 0x52, 0x74, 0x3A, -0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x20, -0x25, 0x62, 0x78, 0x2C, 0x54, 0x72, 0x79, 0x3D, -0x25, 0x62, 0x78, 0x2C, 0x4D, 0x2D, 0x54, 0x72, -0x79, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x44, 0x6E, 0x52, 0x61, 0x74, 0x65, 0x25, 0x62, -0x78, 0x20, 0x42, 0x57, 0x25, 0x62, 0x78, 0x20, -0x4D, 0x61, 0x78, 0x42, 0x57, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x35, 0x2E, 0x42, 0x77, -0x44, 0x77, 0x6E, 0x3D, 0x25, 0x62, 0x78, 0x00, -0x36, 0x2E, 0x53, 0x47, 0x49, 0x5F, 0x44, 0x77, +0x44, 0x65, 0x63, 0x5F, 0x6F, 0x66, 0x73, 0x74, +0x7B, 0x50, 0x2C, 0x4E, 0x7D, 0x3A, 0x20, 0x25, +0x62, 0x78, 0x2C, 0x25, 0x62, 0x78, 0x00, 0x00, +0x30, 0x55, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x44, +0x77, 0x6E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x31, 0x55, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x44, +0x77, 0x6E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x53, 0x74, 0x61, 0x72, 0x74, 0x25, 0x62, 0x78, +0x3A, 0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x4D, 0x74, 0x42, 0x77, +0x20, 0x55, 0x70, 0x44, 0x77, 0x25, 0x62, 0x78, +0x20, 0x42, 0x57, 0x25, 0x62, 0x78, 0x20, 0x52, +0x74, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x48, 0x69, 0x74, 0x25, 0x62, 0x78, 0x20, 0x52, +0x74, 0x30, 0x3D, 0x25, 0x77, 0x78, 0x20, 0x52, +0x74, 0x31, 0x3D, 0x25, 0x77, 0x78, 0x00, 0x00, +0x6C, 0x6D, 0x74, 0x20, 0x52, 0x25, 0x62, 0x78, +0x20, 0x4C, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x52, 0x53, 0x53, 0x49, 0x20, 0x52, 0x6C, 0x73, +0x4C, 0x6D, 0x74, 0x00, 0x52, 0x53, 0x53, 0x49, +0x20, 0x49, 0x6E, 0x4C, 0x6D, 0x74, 0x00, 0x00, +0x4C, 0x6D, 0x74, 0x20, 0x31, 0x53, 0x53, 0x25, +0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x2C, 0x32, +0x53, 0x53, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x57, 0x72, 0x69, 0x74, +0x65, 0x45, 0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x42, 0x46, 0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x52, 0x65, 0x63, 0x45, +0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, 0x46, +0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x53, 0x6E, 0x64, 0x44, +0x20, 0x4D, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, +0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, 0x25, 0x62, +0x78, 0x20, 0x43, 0x74, 0x3A, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x41, 0x70, 0x70, 0x6C, +0x56, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x4E, 0x61, 0x70, 0x70, 0x6C, 0x56, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x53, 0x74, 0x6F, 0x72, +0x45, 0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, +0x46, 0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x52, 0x74, 0x25, 0x62, +0x78, 0x2C, 0x52, 0x74, 0x5F, 0x63, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x48, 0x52, 0x3A, 0x25, +0x62, 0x78, 0x2C, 0x4C, 0x52, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x46, 0x69, 0x78, 0x20, +0x69, 0x64, 0x3D, 0x25, 0x62, 0x78, 0x20, 0x42, +0x77, 0x3D, 0x25, 0x62, 0x78, 0x20, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x37, 0x2E, 0x52, 0x61, 0x74, 0x65, 0x44, 0x77, -0x6E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x52, 0x74, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x25, -0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x2C, 0x54, -0x72, 0x79, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x4D, -0x2D, 0x54, 0x72, 0x79, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x54, 0x72, 0x79, 0x69, -0x6E, 0x67, 0x00, 0x00, 0x3E, 0x48, 0x2D, 0x65, -0x73, 0x74, 0x20, 0x52, 0x74, 0x00, 0x00, 0x00, -0x49, 0x44, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x4F, -0x6B, 0x25, 0x62, 0x78, 0x2C, 0x54, 0x6F, 0x74, -0x25, 0x62, 0x78, 0x2C, 0x44, 0x70, 0x25, 0x62, -0x78, 0x2C, 0x61, 0x2D, 0x4F, 0x4B, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x50, 0x45, 0x52, 0x25, -0x62, 0x78, 0x2C, 0x52, 0x44, 0x52, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x42, 0x77, 0x3D, 0x25, -0x62, 0x78, 0x2C, 0x42, 0x77, 0x32, 0x3D, 0x25, -0x62, 0x78, 0x2C, 0x52, 0x74, 0x3D, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x32, 0x55, 0x70, 0x25, -0x62, 0x78, 0x2C, 0x44, 0x77, 0x6E, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x46, 0x77, 0x20, 0x46, -0x69, 0x78, 0x20, 0x52, 0x61, 0x74, 0x65, 0x00, -0x46, 0x6F, 0x72, 0x63, 0x65, 0x52, 0x61, 0x74, -0x65, 0x44, 0x77, 0x00, 0x52, 0x74, 0x44, 0x77, -0x6E, 0x43, 0x6E, 0x74, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x52, 0x61, 0x74, 0x65, -0x20, 0x44, 0x6F, 0x77, 0x6E, 0x00, 0x00, 0x00, -0x52, 0x74, 0x55, 0x70, 0x43, 0x6E, 0x74, 0x3D, -0x25, 0x62, 0x78, 0x00, 0x52, 0x61, 0x74, 0x65, -0x20, 0x55, 0x50, 0x00, 0x52, 0x61, 0x74, 0x65, -0x20, 0x53, 0x74, 0x61, 0x79, 0x00, 0x00, 0x00, -0x49, 0x6E, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, +0x49, 0x44, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x42, +0x43, 0x6E, 0x74, 0x3D, 0x25, 0x62, 0x78, 0x2C, +0x42, 0x54, 0x3A, 0x25, 0x78, 0x2C, 0x42, 0x4F, +0x6B, 0x3A, 0x25, 0x78, 0x00, 0x00, 0x00, 0x00, +0x49, 0x44, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x42, +0x52, 0x61, 0x74, 0x65, 0x3D, 0x25, 0x62, 0x78, +0x2C, 0x42, 0x50, 0x45, 0x52, 0x3A, 0x25, 0x78, +0x00, 0x00, 0x00, 0x00, 0x52, 0x61, 0x4F, 0x63, +0x63, 0x4E, 0x75, 0x6D, 0x25, 0x62, 0x78, 0x00, +0x55, 0x70, 0x52, 0x61, 0x74, 0x65, 0x3A, 0x25, +0x62, 0x78, 0x20, 0x42, 0x57, 0x25, 0x62, 0x78, +0x20, 0x4D, 0x61, 0x78, 0x42, 0x57, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x31, 0x2E, 0x48, 0x2D, +0x65, 0x73, 0x74, 0x20, 0x25, 0x62, 0x78, 0x00, +0x32, 0x2E, 0x48, 0x2D, 0x65, 0x73, 0x74, 0x53, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x52, 0x61, 0x44, 0x77, 0x6E, 0x54, 0x72, 0x79, -0x20, 0x52, 0x61, 0x74, 0x65, 0x3D, 0x25, 0x62, -0x78, 0x2C, 0x42, 0x77, 0x25, 0x62, 0x78, 0x00, -0x54, 0x72, 0x79, 0x53, 0x75, 0x63, 0x63, 0x65, -0x73, 0x73, 0x00, 0x00, 0x54, 0x72, 0x79, 0x66, -0x61, 0x69, 0x6C, 0x00, 0x4D, 0x74, 0x54, 0x72, -0x79, 0x49, 0x64, 0x78, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x4D, 0x74, 0x54, 0x72, +0x33, 0x2E, 0x3E, 0x48, 0x2D, 0x65, 0x73, 0x74, +0x20, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x33, 0x5F, 0x35, 0x2E, 0x53, 0x47, 0x49, 0x5F, +0x55, 0x70, 0x3D, 0x25, 0x62, 0x78, 0x20, 0x42, +0x57, 0x25, 0x62, 0x78, 0x20, 0x00, 0x00, 0x00, +0x34, 0x2E, 0x4D, 0x2D, 0x42, 0x77, 0x55, 0x70, +0x20, 0x52, 0x61, 0x74, 0x65, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x20, 0x42, 0x77, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x35, 0x2E, 0x42, 0x77, +0x55, 0x70, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, +0x25, 0x62, 0x78, 0x3A, 0x25, 0x62, 0x78, 0x2D, +0x3E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x37, 0x2E, 0x52, 0x61, 0x74, 0x65, 0x55, 0x70, +0x25, 0x62, 0x78, 0x00, 0x30, 0x52, 0x74, 0x3A, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x00, 0x31, 0x52, 0x74, 0x3A, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x00, 0x4E, 0x6F, 0x20, 0x55, +0x70, 0x20, 0x52, 0x61, 0x74, 0x65, 0x00, 0x00, +0x32, 0x52, 0x74, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x2C, +0x54, 0x72, 0x79, 0x3D, 0x25, 0x62, 0x78, 0x2C, +0x4D, 0x2D, 0x54, 0x72, 0x79, 0x3D, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x44, 0x6E, 0x52, 0x61, +0x74, 0x65, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, +0x57, 0x25, 0x62, 0x78, 0x20, 0x4D, 0x61, 0x78, +0x42, 0x57, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x34, 0x5F, 0x35, 0x2E, 0x53, 0x47, 0x49, 0x5F, +0x44, 0x77, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, +0x35, 0x2E, 0x42, 0x77, 0x44, 0x77, 0x6E, 0x3D, +0x25, 0x62, 0x78, 0x00, 0x37, 0x2E, 0x52, 0x61, +0x74, 0x65, 0x44, 0x77, 0x6E, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x52, 0x74, 0x3A, 0x25, +0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x20, 0x25, +0x62, 0x78, 0x2C, 0x54, 0x72, 0x79, 0x3D, 0x25, +0x62, 0x78, 0x2C, 0x4D, 0x2D, 0x54, 0x72, 0x79, +0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x54, 0x72, 0x79, 0x69, 0x6E, 0x67, 0x00, 0x00, +0x3E, 0x48, 0x2D, 0x65, 0x73, 0x74, 0x20, 0x52, +0x74, 0x00, 0x00, 0x00, 0x49, 0x44, 0x3A, 0x25, +0x62, 0x78, 0x2C, 0x4F, 0x6B, 0x25, 0x62, 0x78, +0x2C, 0x54, 0x6F, 0x74, 0x25, 0x62, 0x78, 0x2C, +0x44, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x61, 0x2D, +0x4F, 0x4B, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x50, 0x45, 0x52, 0x25, 0x62, 0x78, 0x2C, 0x52, +0x44, 0x52, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x42, 0x77, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x42, +0x77, 0x32, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x52, +0x74, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x32, 0x55, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x44, +0x77, 0x6E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x46, 0x77, 0x20, 0x46, 0x69, 0x78, 0x20, 0x52, +0x61, 0x74, 0x65, 0x00, 0x46, 0x6F, 0x72, 0x63, +0x65, 0x52, 0x61, 0x74, 0x65, 0x44, 0x77, 0x00, +0x52, 0x74, 0x44, 0x77, 0x6E, 0x43, 0x6E, 0x74, +0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x52, 0x61, 0x74, 0x65, 0x20, 0x44, 0x6F, 0x77, +0x6E, 0x00, 0x00, 0x00, 0x52, 0x74, 0x55, 0x70, +0x43, 0x6E, 0x74, 0x3D, 0x25, 0x62, 0x78, 0x00, +0x52, 0x61, 0x74, 0x65, 0x20, 0x55, 0x50, 0x00, +0x52, 0x61, 0x74, 0x65, 0x20, 0x53, 0x74, 0x61, +0x79, 0x00, 0x00, 0x00, 0x49, 0x6E, 0x69, 0x74, +0x52, 0x61, 0x74, 0x65, 0x20, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x52, 0x61, 0x44, 0x77, +0x6E, 0x54, 0x72, 0x79, 0x20, 0x52, 0x61, 0x74, +0x65, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x42, 0x77, +0x25, 0x62, 0x78, 0x00, 0x54, 0x72, 0x79, 0x53, +0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, +0x54, 0x72, 0x79, 0x66, 0x61, 0x69, 0x6C, 0x00, +0x4D, 0x74, 0x54, 0x72, 0x79, 0x49, 0x64, 0x78, +0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x25, 0x62, 0x78, 0x3A, 0x4D, 0x74, 0x54, 0x72, 0x79, 0x42, 0x57, 0x3D, 0x25, 0x62, 0x78, 0x00, -0x54, 0x72, 0x79, 0x20, 0x52, 0x74, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x5B, 0x54, 0x72, 0x79, -0x20, 0x44, 0x65, 0x63, 0x5D, 0x00, 0x00, 0x00, -0x4F, 0x6B, 0x25, 0x62, 0x78, 0x2C, 0x54, 0x6F, -0x74, 0x25, 0x62, 0x78, 0x2C, 0x44, 0x70, 0x25, -0x62, 0x78, 0x2C, 0x61, 0x2D, 0x4F, 0x4B, 0x25, -0x62, 0x78, 0x00, 0x00, 0x42, 0x77, 0x25, 0x62, -0x78, 0x2C, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x62, 0x77, 0x20, 0x25, +0x25, 0x62, 0x78, 0x3A, 0x4D, 0x74, 0x54, 0x72, +0x79, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, 0x00, +0x5B, 0x54, 0x72, 0x79, 0x20, 0x44, 0x65, 0x63, +0x5D, 0x00, 0x00, 0x00, 0x4F, 0x6B, 0x25, 0x62, +0x78, 0x2C, 0x54, 0x6F, 0x74, 0x25, 0x62, 0x78, +0x2C, 0x44, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x61, +0x2D, 0x4F, 0x4B, 0x25, 0x62, 0x78, 0x00, 0x00, +0x42, 0x77, 0x25, 0x62, 0x78, 0x2C, 0x52, 0x74, +0x25, 0x62, 0x78, 0x00, 0x62, 0x77, 0x20, 0x25, 0x77, 0x78, 0x2D, 0x3E, 0x25, 0x77, 0x78, 0x00, 0x50, 0x72, 0x6F, 0x62, 0x20, 0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, @@ -1417,8 +1418,11 @@ u8 array_mp_8822c_fw_ap[] = { 0x06, 0x08, 0x0A, 0x0C, 0x12, 0x18, 0x1E, 0x2E, 0x36, 0x40, 0x0A, 0x0C, 0x0C, 0x12, 0x16, 0x1C, 0x20, 0x2E, 0x36, 0x40, 0x2C, 0x00, 0x04, 0x00, -0x2D, 0x00, 0x2C, 0x01, 0x2D, 0x01, 0x2C, 0x02, -0x2E, 0x01, 0xFF, 0x00, 0x2D, 0x02, 0xFF, 0x00, +0xFF, 0x00, 0x36, 0x00, 0x2D, 0x00, 0x2C, 0x01, +0x37, 0x00, 0x2D, 0x01, 0x2C, 0x02, 0x38, 0x00, +0x2E, 0x01, 0x36, 0x01, 0x37, 0x01, 0x2D, 0x02, +0x36, 0x02, 0x38, 0x01, 0x2E, 0x02, 0xFF, 0x00, +0x37, 0x02, 0x2F, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x36, 0x2D, 0xFF, 0x36, 0x2E, 0xFF, 0x37, 0x2F, 0xFF, 0x38, 0x30, 0xFF, 0x39, 0x31, 0xFF, 0x3A, 0x32, 0xFF, 0x3A, 0x33, 0xFF, 0x3A, 0x34, 0xFF, @@ -1497,7 +1501,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, -0x4A, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x14, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x21, 0x6C, 0x00, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x94, 0xB8, 0x00, 0x65, 0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, 0x94, 0xB9, @@ -1517,52 +1521,52 @@ u8 array_mp_8822c_fw_ap[] = { 0xC0, 0xF1, 0x14, 0x4C, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x41, 0xF7, 0x08, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, -0x30, 0xF0, 0x20, 0x6C, 0xC5, 0xF5, 0x1C, 0x4C, -0x00, 0x6E, 0x30, 0xF0, 0x21, 0x6F, 0x10, 0xF7, -0x18, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, +0x30, 0xF0, 0x20, 0x6C, 0xE5, 0xF5, 0x1C, 0x4C, +0x00, 0x6E, 0x30, 0xF0, 0x21, 0x6F, 0x50, 0xF7, +0x00, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, 0x10, 0xF0, 0x23, 0x6C, 0xC0, 0xF0, 0x01, 0x4C, 0x00, 0xEC, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xC0, 0xF0, 0x01, 0x4A, 0x40, 0xDB, 0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, -0x95, 0x5E, 0x80, 0x18, 0xA7, 0x5B, 0x80, 0x18, -0xCE, 0x5B, 0x80, 0x18, 0x67, 0x5E, 0x80, 0x18, -0xEB, 0x5B, 0x80, 0x18, 0x5E, 0x5E, 0x00, 0x18, +0xF8, 0x5E, 0x80, 0x18, 0x0A, 0x5C, 0x80, 0x18, +0x31, 0x5C, 0x80, 0x18, 0xCA, 0x5E, 0x80, 0x18, +0x4E, 0x5C, 0x80, 0x18, 0xC1, 0x5E, 0x00, 0x18, 0xA2, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x41, 0xF7, 0x08, 0x4C, 0x1D, 0xF0, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x25, 0xF6, 0x40, 0xDB, 0x01, 0xF0, +0x20, 0x6B, 0x45, 0xF6, 0x40, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF0, 0x10, 0x4C, 0x01, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x25, 0xF6, 0x54, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x45, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0xE1, 0xF7, 0x00, 0x4C, 0x1D, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x25, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x45, 0xF6, 0x48, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF0, 0x0C, 0x4C, 0x01, 0x6D, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x25, 0xF6, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x45, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x81, 0xF7, 0x14, 0x4C, 0x1E, 0xF0, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x25, 0xF6, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x45, 0xF6, 0x44, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0x6D, 0x82, 0xF0, 0x04, 0x4C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x25, 0xF6, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x45, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF0, 0x00, 0x4C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x25, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6C, +0x45, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x22, 0xF0, 0x14, 0x4C, 0x1E, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x25, 0xF6, 0x4C, 0xDB, 0x80, 0x18, -0x96, 0x5F, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, -0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, +0x20, 0x6B, 0x45, 0xF6, 0x4C, 0xDB, 0x80, 0x18, +0xF9, 0x5F, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, +0x6C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x58, 0x9A, 0x40, 0xEA, @@ -1690,7 +1694,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x65, 0x5F, 0x67, 0x5A, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x1C, 0x7D, 0x35, 0x5A, 0xB8, 0x00, 0x65, 0x00, 0xEA, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF6, 0x60, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF6, 0x64, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, 0x80, 0xA3, 0x10, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0xE2, 0xF1, 0x10, 0x4A, 0xE2, 0xF1, 0x10, 0x6B, 0x31, 0x10, 0x7F, 0x4A, @@ -1708,19 +1712,19 @@ u8 array_mp_8822c_fw_ap[] = { 0x91, 0xE3, 0x01, 0x4D, 0xC0, 0xC4, 0x01, 0x4B, 0x4A, 0xEB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x5C, 0x9A, 0x64, 0x9C, 0xFF, 0x68, 0xAC, 0xE8, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x64, 0x9C, 0xFF, 0x68, 0xAC, 0xE8, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, 0x14, 0x4C, +0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, 0x1C, 0x4C, 0x82, 0xF3, 0x0C, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x01, 0x70, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x83, 0xF0, 0xBC, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, +0x83, 0xF0, 0xB0, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, 0x15, 0x10, 0x02, 0x70, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF0, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF0, 0xB0, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, @@ -1744,7 +1748,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0x6B, 0x89, 0x9A, 0xA2, 0xF5, 0x6C, 0x9B, 0x80, 0xDB, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, 0x50, 0x9A, 0x01, 0x6C, 0xA4, 0x67, -0x60, 0xDA, 0x80, 0x18, 0xF3, 0x02, 0x00, 0x1C, +0x60, 0xDA, 0x80, 0x18, 0x04, 0x03, 0x00, 0x1C, 0xAC, 0x39, 0xFF, 0x17, 0x4C, 0xB8, 0x00, 0x65, 0x80, 0x34, 0x8D, 0xEA, 0x8A, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, @@ -1766,9 +1770,9 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0x6A, 0xA2, 0xF5, 0x54, 0x9A, 0x08, 0x6B, 0x40, 0xA2, 0x4C, 0xEB, 0x00, 0x6A, 0x11, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, 0x58, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0x9A, 0x45, 0xF6, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0x9A, 0x65, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, -0x5C, 0x9A, 0x45, 0xF6, 0x00, 0x4B, 0x40, 0x9A, +0x5C, 0x9A, 0x65, 0xF6, 0x00, 0x4B, 0x40, 0x9A, 0x41, 0xDB, 0x20, 0xE8, 0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF5, 0x90, 0x9C, 0x10, 0xF0, 0x23, 0x6B, 0x61, 0xF0, 0x1D, 0x4B, @@ -1777,7 +1781,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x1C, 0x23, 0x05, 0x5A, 0x1A, 0x60, 0x0C, 0x6D, 0xB8, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, 0x78, 0x9B, 0x80, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0x45, 0xF6, 0x08, 0x4B, 0x12, 0xEA, 0x49, 0xE3, +0x65, 0xF6, 0x08, 0x4B, 0x12, 0xEA, 0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, 0x7C, 0x9B, 0x81, 0xDA, 0x80, 0xA2, 0x60, 0x9B, 0x62, 0xDA, 0x01, 0x6B, 0x8D, 0xEB, 0x60, 0xC2, 0x01, 0x6A, @@ -1788,7 +1792,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0x6B, 0xA2, 0xF5, 0x74, 0x9B, 0x80, 0xA3, 0x08, 0x6B, 0x8C, 0xEB, 0x1B, 0x23, 0x05, 0x5A, 0x19, 0x60, 0x0C, 0x6C, 0x98, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x45, 0xF6, 0x08, 0x4B, 0x12, 0xEA, +0x20, 0x6B, 0x65, 0xF6, 0x08, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0D, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, 0x78, 0x9B, 0x42, 0x9A, 0xA0, 0x9B, 0x30, 0xF0, @@ -1798,7 +1802,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x82, 0xF5, 0x90, 0x9C, 0x10, 0xF0, 0x23, 0x6A, 0x41, 0xF1, 0x01, 0x4A, 0x05, 0x5B, 0x40, 0xDC, 0x00, 0x6A, 0x11, 0x60, 0x0C, 0x6C, 0x98, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF6, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x65, 0xF6, 0x08, 0x4A, 0x12, 0xEB, 0x4D, 0xE3, 0x80, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6A, 0x41, 0xDB, 0x42, 0xDB, 0x01, 0x6A, 0x20, 0xE8, @@ -1982,7 +1986,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x10, 0xF0, 0x21, 0x6A, 0x7E, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, 0x9E, 0xF1, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC5, 0xF5, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE5, 0xF5, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, 0xDE, 0xF1, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, 0xDE, 0xF3, 0x1C, 0x4A, @@ -1996,12 +2000,12 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x8E, 0x36, 0x07, 0x6B, 0x01, 0x75, 0x4C, 0xEE, 0x8C, 0xEB, -0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x59, 0xE6, 0x01, 0x6A, 0x44, 0xEB, 0x23, 0xF3, 0x6C, 0xA6, 0x00, 0x6D, 0x6D, 0xEA, 0x23, 0xF3, 0x4C, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x40, 0x9A, 0x12, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x59, 0xE6, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x59, 0xE6, 0x01, 0x6A, 0x44, 0xEB, 0x23, 0xF3, 0x6C, 0xA6, 0x4F, 0xEA, 0x01, 0x6D, 0x6C, 0xEA, 0x23, 0xF3, 0x4C, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, @@ -2052,8 +2056,8 @@ u8 array_mp_8822c_fw_ap[] = { 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x96, 0x40, 0xF4, 0x58, 0x9A, 0xB0, 0x67, 0x91, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0x21, 0xC4, -0xA2, 0x67, 0x90, 0x67, 0x00, 0x18, 0x1A, 0xD2, -0x04, 0x95, 0x90, 0x67, 0x00, 0x18, 0x29, 0xD2, +0xA2, 0x67, 0x90, 0x67, 0x00, 0x18, 0x3F, 0xD2, +0x04, 0x95, 0x90, 0x67, 0x00, 0x18, 0x4E, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x06, 0x95, 0x00, 0x6C, 0x27, 0x6E, 0x40, 0xEA, 0x1D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0x96, @@ -2062,8 +2066,8 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0x6A, 0x04, 0x96, 0x40, 0xF4, 0x58, 0x9A, 0xB0, 0x67, 0x91, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0x21, 0xC4, 0xA2, 0x67, 0x90, 0x67, -0x00, 0x18, 0x1A, 0xD2, 0x04, 0x95, 0x90, 0x67, -0x00, 0x18, 0x29, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0x3F, 0xD2, 0x04, 0x95, 0x90, 0x67, +0x00, 0x18, 0x4E, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x7C, 0x9A, @@ -2075,2336 +2079,2368 @@ u8 array_mp_8822c_fw_ap[] = { 0x40, 0x9B, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF5, 0x90, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x54, 0x9A, -0x01, 0x6B, 0x40, 0x9A, 0x80, 0xF5, 0x42, 0x32, -0x6E, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0xA4, 0x80, 0x18, -0x00, 0x00, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x6A, 0x0E, 0x90, 0x24, 0x67, -0x4C, 0xE9, 0x03, 0x6B, 0x4C, 0xEF, 0x2C, 0xEB, -0x00, 0x6A, 0x0B, 0xD5, 0x0C, 0xD6, 0x04, 0xD7, -0x40, 0xC8, 0x00, 0x6A, 0x0A, 0x23, 0x28, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0x40, 0xA8, 0x01, 0x4A, -0x40, 0xC8, 0x1F, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, -0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x48, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, -0x4C, 0x9A, 0x49, 0xE1, 0x0B, 0x93, 0x40, 0x9A, -0x6C, 0xEA, 0x0C, 0x93, 0x6E, 0xEA, 0x04, 0x22, -0x40, 0xA8, 0x04, 0x93, 0x63, 0xEA, 0xDC, 0x61, -0x40, 0xA8, 0x04, 0x93, 0x63, 0xEA, 0x58, 0x67, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0xA0, 0x35, -0x4C, 0xEC, 0xA0, 0x35, 0xCC, 0xEA, 0x4D, 0xED, -0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, -0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF6, 0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF6, 0x9C, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0x60, 0x9B, 0xAD, 0xEA, 0x40, 0xDC, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, -0x44, 0x9A, 0x60, 0xDC, 0x00, 0x6B, 0x60, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0xFF, 0xF7, -0x1F, 0x6B, 0x8C, 0xEA, 0xAC, 0xEB, 0x05, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, -0x48, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x4D, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x78, 0x9B, +0x40, 0x9A, 0x6C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0x83, 0xF3, +0x4B, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, 0x00, 0x6A, +0x10, 0x24, 0x63, 0xF3, 0x54, 0x83, 0xC0, 0xF7, +0x42, 0x32, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x83, 0xF3, 0x8B, 0xA2, +0x02, 0x6B, 0x8D, 0xEB, 0x83, 0xF3, 0x6B, 0xC2, +0x01, 0x6A, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x80, 0xA4, 0x80, 0x18, 0x00, 0x00, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x0E, 0x90, 0x24, 0x67, 0x4C, 0xE9, 0x03, 0x6B, +0x4C, 0xEF, 0x2C, 0xEB, 0x00, 0x6A, 0x0B, 0xD5, +0x0C, 0xD6, 0x04, 0xD7, 0x40, 0xC8, 0x00, 0x6A, +0x0A, 0x23, 0x28, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, +0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, 0x1F, 0xF7, +0x00, 0x6A, 0x2C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF5, 0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF5, 0x4C, 0x9A, 0x49, 0xE1, +0x0B, 0x93, 0x40, 0x9A, 0x6C, 0xEA, 0x0C, 0x93, +0x6E, 0xEA, 0x04, 0x22, 0x40, 0xA8, 0x04, 0x93, +0x63, 0xEA, 0xDC, 0x61, 0x40, 0xA8, 0x04, 0x93, +0x63, 0xEA, 0x58, 0x67, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6A, 0xA0, 0x35, 0x4C, 0xEC, 0xA0, 0x35, +0xCC, 0xEA, 0x4D, 0xED, 0x05, 0x2C, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x5C, 0x9A, -0x00, 0x6C, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF6, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0x64, 0x9B, 0x40, 0xA2, 0x80, 0xC3, -0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF6, 0x70, 0x9B, 0xFF, 0x6A, -0xCC, 0xEA, 0x6D, 0xEA, 0xE0, 0xF1, 0x1F, 0x6B, -0xAC, 0xEB, 0x60, 0x33, 0x60, 0x33, 0x6D, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x1C, 0x9B, -0x01, 0x6C, 0x40, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x00, 0x6A, -0x40, 0xD8, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xE0, 0xF1, 0x1F, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xAC, 0xEA, 0xC2, 0xF6, -0x74, 0x9B, 0x40, 0x32, 0x40, 0x32, 0x6D, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x1C, 0x4B, -0x60, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x01, 0x6C, -0x40, 0xDB, 0x80, 0xF3, 0x4C, 0x98, 0xFF, 0x69, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, -0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xA2, 0x4C, 0xE9, -0x80, 0xF3, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6C, 0xA2, 0xF6, 0x1C, 0x4C, 0x80, 0x9C, -0x00, 0x6A, 0x40, 0xDC, 0x07, 0x97, 0x51, 0x67, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0xD8, 0x9B, -0xFF, 0x6A, 0x04, 0x6D, 0x60, 0xA6, 0x4C, 0xEC, -0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC6, -0x11, 0x24, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, -0x9C, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xC4, -0x85, 0xF7, 0x08, 0x4A, 0x00, 0x6B, 0xE2, 0xF5, -0x6D, 0xC2, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF6, 0x7C, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x68, 0xF5, 0x75, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF6, 0x78, 0x9A, 0xFB, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x0E, 0x92, 0x0F, 0x91, 0x04, 0x67, 0x04, 0xD2, -0x04, 0x93, 0xFF, 0x6A, 0x4C, 0xE8, 0x4C, 0xEB, -0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x5C, 0x9A, 0x0B, 0xD5, 0x0C, 0xD6, 0x0D, 0xD7, -0x04, 0xD3, 0x90, 0x67, 0x40, 0xEA, 0x80, 0xF0, -0x07, 0x22, 0x06, 0x58, 0x80, 0xF0, 0x04, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x08, 0x30, 0x42, 0xF1, -0x0C, 0x4A, 0x09, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x02, 0xF2, 0x10, 0x6A, 0x0E, 0x10, 0x02, 0xF2, -0x00, 0x6A, 0x0B, 0x10, 0x22, 0xF2, 0x00, 0x6A, -0x08, 0x10, 0x22, 0xF2, 0x10, 0x6A, 0x05, 0x10, -0x42, 0xF2, 0x00, 0x6A, 0x02, 0x10, 0x42, 0xF2, -0x10, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x0D, 0x94, -0x62, 0xF6, 0x6C, 0x9B, 0x8C, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x02, 0xF6, 0x80, 0x9C, 0x8D, 0xEB, -0x06, 0x21, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF6, -0x80, 0x9C, 0x6D, 0xEC, 0x05, 0x10, 0x30, 0xF0, -0x20, 0x6C, 0xE2, 0xF6, 0x84, 0x9C, 0x6C, 0xEC, -0x04, 0x96, 0x06, 0x26, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0x74, 0x9B, 0x8D, 0xEB, 0x05, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x68, 0x9B, -0x8C, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, -0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, 0xA8, 0x9C, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, -0xAC, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x0B, 0x96, -0xE2, 0xF6, 0x8C, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, -0x80, 0xDD, 0x84, 0x42, 0x1F, 0xF7, 0x00, 0x6D, -0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, -0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF6, -0xB0, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0xE2, 0xF6, 0xB4, 0x9C, 0x30, 0xF0, 0x20, 0x6C, -0x0C, 0x96, 0xE2, 0xF6, 0x8C, 0x9C, 0xB5, 0xE2, -0xCC, 0xEC, 0x80, 0xDD, 0x87, 0x42, 0x01, 0x4C, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x80, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x64, 0x9B, +0xAD, 0xEA, 0x40, 0xDC, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x48, 0x9A, 0x60, 0xDC, +0x00, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEA, +0xAC, 0xEB, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x4C, 0x9A, 0x60, 0x33, +0x60, 0x33, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF6, 0x40, 0x9A, 0x00, 0x6C, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x68, 0x9B, +0x40, 0xA2, 0x80, 0xC3, 0xFF, 0x6B, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, +0x74, 0x9B, 0xFF, 0x6A, 0xCC, 0xEA, 0x6D, 0xEA, +0xE0, 0xF1, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0x33, +0x60, 0x33, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF6, 0x00, 0x9B, 0x01, 0x6C, 0x40, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x40, 0xEA, 0x00, 0x6A, 0x40, 0xD8, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xE0, 0xF1, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xAC, 0xEA, 0xC2, 0xF6, 0x78, 0x9B, 0x40, 0x32, +0x40, 0x32, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF6, 0x00, 0x4B, 0x60, 0x9B, 0x30, 0xF0, +0x20, 0x68, 0x01, 0x6C, 0x40, 0xDB, 0x80, 0xF3, +0x4C, 0x98, 0xFF, 0x69, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x50, 0x9A, 0x01, 0x6C, +0x40, 0xA2, 0x4C, 0xE9, 0x80, 0xF3, 0x4C, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF6, +0x00, 0x4C, 0x80, 0x9C, 0x00, 0x6A, 0x40, 0xDC, +0x07, 0x97, 0x51, 0x67, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF6, 0xDC, 0x9B, 0xFF, 0x6A, 0x04, 0x6D, +0x60, 0xA6, 0x4C, 0xEC, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC6, 0x11, 0x24, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF6, 0x80, 0x9B, 0x60, 0xA4, +0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xC4, 0xA5, 0xF7, 0x08, 0x4A, +0x00, 0x6B, 0xE2, 0xF5, 0x6D, 0xC2, 0x0D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, 0x60, 0x9A, +0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0xF5, +0x75, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, +0x7C, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x0E, 0x92, 0x0F, 0x91, +0x04, 0x67, 0x04, 0xD2, 0x04, 0x93, 0xFF, 0x6A, +0x4C, 0xE8, 0x4C, 0xEB, 0x4C, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x5C, 0x9A, 0x0B, 0xD5, +0x0C, 0xD6, 0x0D, 0xD7, 0x04, 0xD3, 0x90, 0x67, +0x40, 0xEA, 0x80, 0xF0, 0x07, 0x22, 0x06, 0x58, +0x80, 0xF0, 0x04, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0x30, 0x42, 0xF1, 0x0C, 0x4A, 0x09, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x02, 0xF2, 0x10, 0x6A, +0x0E, 0x10, 0x02, 0xF2, 0x00, 0x6A, 0x0B, 0x10, +0x22, 0xF2, 0x00, 0x6A, 0x08, 0x10, 0x22, 0xF2, +0x10, 0x6A, 0x05, 0x10, 0x42, 0xF2, 0x00, 0x6A, +0x02, 0x10, 0x42, 0xF2, 0x10, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x0D, 0x94, 0x62, 0xF6, 0x70, 0x9B, +0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF6, +0x84, 0x9C, 0x8D, 0xEB, 0x06, 0x21, 0x30, 0xF0, +0x20, 0x6C, 0xE2, 0xF6, 0x84, 0x9C, 0x6D, 0xEC, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF6, +0x88, 0x9C, 0x6C, 0xEC, 0x04, 0x96, 0x06, 0x26, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x78, 0x9B, +0x8D, 0xEB, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF6, 0x6C, 0x9B, 0x8C, 0xEB, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0xC2, 0xF5, 0xA8, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0xC2, 0xF5, 0xAC, 0x9C, 0x30, 0xF0, +0x20, 0x6C, 0x0B, 0x96, 0xE2, 0xF6, 0x90, 0x9C, +0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, 0x84, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0xE2, 0xF6, 0x98, 0x9C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF6, 0x9C, 0x9C, -0x89, 0xE2, 0x60, 0xDA, 0x01, 0x6A, 0x01, 0x10, -0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x01, 0x68, 0x04, 0xEC, -0x82, 0xF3, 0x08, 0x69, 0x1C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, -0xFF, 0x49, 0x40, 0xEA, 0x14, 0x29, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x78, 0x9A, 0x08, 0xF0, -0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, -0x64, 0xDA, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF7, 0x40, 0x9A, 0x60, 0xAA, -0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x0C, 0xEA, -0xDA, 0x2A, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x04, 0xF7, -0x10, 0x68, 0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0xFF, 0x48, -0x40, 0xEA, 0x14, 0x28, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x78, 0x9A, 0x08, 0xF0, 0x00, 0x6C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, -0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, -0x00, 0x6A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF7, 0x40, 0x9A, 0x60, 0xAA, 0x3F, 0x6A, -0x6C, 0xEA, 0xDC, 0x2A, 0x01, 0x6A, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x40, 0x9A, -0x40, 0xAA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF7, 0x40, 0x9A, 0x40, 0xAA, 0x20, 0xE8, +0x20, 0x6C, 0xE2, 0xF6, 0xB4, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF6, 0xB8, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x0C, 0x96, 0xE2, 0xF6, +0x90, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, +0x87, 0x42, 0x01, 0x4C, 0x1F, 0xF7, 0x00, 0x6D, +0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF6, +0x9C, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x02, 0xF7, 0x80, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x30, 0x9A, -0x10, 0xF0, 0x23, 0x68, 0x82, 0xF6, 0x01, 0x48, -0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x01, 0xF0, 0x54, 0x9A, 0x25, 0xF6, -0x94, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, -0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x01, 0x68, 0x04, 0xEC, 0x82, 0xF3, 0x08, 0x69, +0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x01, 0x6C, 0xFF, 0x49, 0x40, 0xEA, +0x14, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, +0x7C, 0x9A, 0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x00, 0x6A, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, +0x44, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x0C, 0xEA, 0xDA, 0x2A, 0x01, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x04, 0xF7, 0x10, 0x68, 0x1C, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x05, 0x6C, 0xFF, 0x48, 0x40, 0xEA, 0x14, 0x28, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, +0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, +0x63, 0xF3, 0x64, 0xDA, 0x00, 0x6A, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x44, 0x9A, +0x60, 0xAA, 0x3F, 0x6A, 0x6C, 0xEA, 0xDC, 0x2A, +0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF7, 0x44, 0x9A, 0x40, 0xAA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x44, 0x9A, +0x40, 0xAA, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x30, 0x9A, 0x10, 0xF0, 0x23, 0x68, -0xC2, 0xF6, 0x05, 0x48, 0x00, 0xD9, 0x30, 0xF0, +0xA2, 0xF6, 0x15, 0x48, 0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, -0x54, 0x9A, 0x25, 0xF6, 0x90, 0x9B, 0x01, 0x6D, +0x54, 0x9A, 0x45, 0xF6, 0x94, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, 0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x02, 0xF7, 0x09, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, -0x9C, 0x9B, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, -0x04, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x08, 0x23, -0x04, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, 0xC8, 0x00, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x25, 0xF6, 0x9C, 0x9B, 0xC5, 0xF5, 0x58, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, -0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x02, 0xF7, -0x0A, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x69, 0x00, 0x68, -0x00, 0x6C, 0x00, 0x18, 0xC2, 0xC5, 0x01, 0x48, -0xFF, 0x6A, 0x4C, 0xE8, 0x0A, 0x70, 0xF8, 0x61, -0x01, 0x6B, 0x6E, 0xE9, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF5, 0x70, 0x9B, 0x4C, 0xE9, 0x10, 0xF0, -0x23, 0x6A, 0x82, 0xF7, 0x05, 0x4A, 0x29, 0xE2, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x25, 0xF6, 0x9C, 0x9B, 0x01, 0xF0, -0x48, 0x98, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x80, 0x18, 0xDA, 0x02, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, 0x9C, 0x9B, -0xC5, 0xF5, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x25, 0xF6, 0x9C, 0x9B, 0x01, 0xF0, -0x48, 0x98, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA0, 0xF0, 0x84, 0x9A, 0x02, 0x6B, 0x8C, 0xEB, -0x09, 0x23, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, 0x23, 0x17, -0x80, 0x18, 0x79, 0x17, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, 0x9C, 0x98, -0xC5, 0xF5, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x25, 0xF6, 0x9C, 0x98, 0x01, 0xF0, -0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA0, 0xF0, 0x84, 0x9A, 0x04, 0x6B, 0x8C, 0xEB, -0x09, 0x23, 0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, 0x08, 0xC8, -0x00, 0x18, 0x90, 0xC8, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, 0x9C, 0x98, -0xC5, 0xF5, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x25, 0xF6, 0x9C, 0x98, 0x01, 0xF0, -0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA0, 0xF0, 0x84, 0x9A, 0x10, 0x6B, 0x8C, 0xEB, -0x07, 0x23, 0x11, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, 0x85, 0x4C, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, -0x25, 0xF6, 0x9C, 0x98, 0xC5, 0xF5, 0x58, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, -0x9C, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, -0x02, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x08, 0x23, -0x02, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, 0x25, 0xCD, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, -0x25, 0xF6, 0x9C, 0x98, 0xC5, 0xF5, 0x58, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, -0x9C, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0x7C, 0x9B, 0xA0, 0xF0, 0x84, 0x9A, -0x8C, 0xEB, 0x09, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF7, 0x70, 0x9B, 0x8C, 0xEB, 0xA0, 0xF0, -0x64, 0xDA, 0x80, 0x18, 0x49, 0x16, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, -0x9C, 0x98, 0xC5, 0xF5, 0x58, 0x9A, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, 0x9C, 0x98, -0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0xE3, 0xF1, 0x14, 0xA2, 0x01, 0x6B, -0x04, 0xD2, 0x6E, 0xE8, 0x06, 0x28, 0x0B, 0x6C, -0x80, 0x18, 0x23, 0x5B, 0x04, 0x92, 0xE3, 0xF1, -0x14, 0xC2, 0x80, 0x18, 0x37, 0x5B, 0x80, 0x18, -0x51, 0x5B, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x25, 0xF6, 0x9C, 0x9B, 0xC5, 0xF5, -0x58, 0x9A, 0x40, 0xEA, 0xF8, 0x16, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x10, 0x4A, -0x40, 0x9A, 0x10, 0xF0, 0x23, 0x68, 0xA3, 0xF1, -0x01, 0x48, 0x00, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x01, 0x69, 0x01, 0xF0, -0x54, 0x9A, 0x25, 0xF6, 0x98, 0x9B, 0x2B, 0xE9, -0xB1, 0x67, 0x40, 0xEA, 0x01, 0x4A, 0x0A, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x5C, 0x9A, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0x00, 0x1C, 0xAC, 0x39, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x30, 0x9A, +0x10, 0xF0, 0x23, 0x68, 0xE2, 0xF6, 0x19, 0x48, +0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0xF0, 0x54, 0x9A, 0x45, 0xF6, +0x90, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, +0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x22, 0xF7, 0x1D, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x45, 0xF6, 0x9C, 0x9B, 0x01, 0xF0, +0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xA0, 0xF0, 0x84, 0x9A, 0x04, 0xF0, 0x00, 0x6B, +0x8C, 0xEB, 0x08, 0x23, 0x04, 0xF0, 0x01, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x80, 0x18, 0xD9, 0x00, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF6, 0x9C, 0x9B, +0xE5, 0xF5, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, +0x23, 0x6A, 0x22, 0xF7, 0x1E, 0x4A, 0x40, 0xDB, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x00, 0x69, 0x00, 0x68, 0x00, 0x6C, 0x00, 0x18, +0xCF, 0xC5, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x0A, 0x70, 0xF8, 0x61, 0x01, 0x6B, 0x6E, 0xE9, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, +0x4C, 0xE9, 0x10, 0xF0, 0x23, 0x6A, 0xA2, 0xF7, +0x19, 0x4A, 0x29, 0xE2, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x45, 0xF6, +0x9C, 0x9B, 0x01, 0xF0, 0x48, 0x98, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x80, 0x18, 0xEB, 0x02, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x25, 0xF6, 0x9C, 0x9B, 0x01, 0xF0, 0x48, 0x9A, -0xB1, 0x67, 0x01, 0x48, 0x40, 0xEA, 0x00, 0x18, -0x12, 0xC7, 0x00, 0x18, 0x0E, 0xC7, 0x00, 0x18, -0x0A, 0xC7, 0x00, 0x18, 0x06, 0xC7, 0x00, 0x18, -0x02, 0xC7, 0x00, 0x18, 0xFE, 0xC6, 0xFC, 0x6C, -0x00, 0x18, 0xEF, 0xC1, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, 0x9C, 0x9B, -0xC5, 0xF5, 0x58, 0x9A, 0x40, 0xEA, 0x00, 0x1C, -0xAB, 0x39, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, -0x10, 0x4A, 0x40, 0x9A, 0x00, 0xDA, 0xB0, 0x17, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, -0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0xF4, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x25, 0xF6, -0x98, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, -0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0xF4, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x25, 0xF6, -0x98, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, -0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0xF4, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x25, 0xF6, -0x98, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, -0x01, 0x72, 0x0E, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0xF4, 0xC1, 0x00, 0x18, 0x5B, 0xCA, 0x30, 0xF0, +0x45, 0xF6, 0x9C, 0x9B, 0xE5, 0xF5, 0x58, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x45, 0xF6, +0x9C, 0x9B, 0x01, 0xF0, 0x48, 0x98, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, +0x02, 0x6B, 0x8C, 0xEB, 0x09, 0x23, 0x03, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x80, 0x18, 0x2D, 0x17, 0x80, 0x18, 0x83, 0x17, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, +0x45, 0xF6, 0x9C, 0x98, 0xE5, 0xF5, 0x58, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF6, +0x9C, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, +0x04, 0x6B, 0x8C, 0xEB, 0x09, 0x23, 0x05, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x00, 0x18, 0x15, 0xC8, 0x00, 0x18, 0x9D, 0xC8, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, +0x45, 0xF6, 0x9C, 0x98, 0xE5, 0xF5, 0x58, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF6, +0x9C, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, +0x10, 0x6B, 0x8C, 0xEB, 0x07, 0x23, 0x11, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x80, 0x18, 0xC3, 0x4C, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF6, 0x9C, 0x98, +0xE5, 0xF5, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x45, 0xF6, 0x9C, 0x98, 0x01, 0xF0, +0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xA0, 0xF0, 0x84, 0x9A, 0x02, 0xF0, 0x00, 0x6B, +0x8C, 0xEB, 0x08, 0x23, 0x02, 0xF0, 0x01, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x00, 0x18, 0x36, 0xCD, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF6, 0x9C, 0x98, +0xE5, 0xF5, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x45, 0xF6, 0x9C, 0x98, 0x01, 0xF0, +0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x60, 0x9B, +0xA0, 0xF0, 0x84, 0x9A, 0x8C, 0xEB, 0x09, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF7, 0x74, 0x9B, +0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, +0x53, 0x16, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x45, 0xF6, 0x9C, 0x98, 0xE5, 0xF5, +0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x45, 0xF6, 0x9C, 0x98, 0x01, 0xF0, 0x48, 0x9A, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xE3, 0xF1, +0x14, 0xA2, 0x01, 0x6B, 0x04, 0xD2, 0x6E, 0xE8, +0x06, 0x28, 0x0B, 0x6C, 0x80, 0x18, 0x86, 0x5B, +0x04, 0x92, 0xE3, 0xF1, 0x14, 0xC2, 0x80, 0x18, +0x9A, 0x5B, 0x80, 0x18, 0xB4, 0x5B, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF6, +0x9C, 0x9B, 0xE5, 0xF5, 0x58, 0x9A, 0x40, 0xEA, +0xF8, 0x16, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF5, 0x10, 0x4A, 0x40, 0x9A, 0x10, 0xF0, +0x23, 0x68, 0xC3, 0xF1, 0x15, 0x48, 0x00, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0x69, 0x01, 0xF0, 0x54, 0x9A, 0x45, 0xF6, +0x98, 0x9B, 0x2B, 0xE9, 0xB1, 0x67, 0x40, 0xEA, +0x01, 0x4A, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF6, 0x5C, 0x9A, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x00, 0x1C, 0xAC, 0x39, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF6, 0x9C, 0x9B, +0x01, 0xF0, 0x48, 0x9A, 0xB1, 0x67, 0x01, 0x48, +0x40, 0xEA, 0x00, 0x18, 0x1F, 0xC7, 0x00, 0x18, +0x1B, 0xC7, 0x00, 0x18, 0x17, 0xC7, 0x00, 0x18, +0x13, 0xC7, 0x00, 0x18, 0x0F, 0xC7, 0x00, 0x18, +0x0B, 0xC7, 0xFC, 0x6C, 0x00, 0x18, 0xEF, 0xC1, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x45, 0xF6, 0x9C, 0x9B, 0xE5, 0xF5, 0x58, 0x9A, +0x40, 0xEA, 0x00, 0x1C, 0xAB, 0x39, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF5, 0x10, 0x4A, 0x40, 0x9A, +0x00, 0xDA, 0xB0, 0x17, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, +0xFC, 0x6C, 0x00, 0x18, 0xF4, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0x25, 0xF6, 0x98, 0x9B, 0x40, 0xEA, +0x58, 0x9A, 0x45, 0xF6, 0x98, 0x9B, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, +0xFC, 0x6C, 0x00, 0x18, 0xF4, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, +0x58, 0x9A, 0x45, 0xF6, 0x98, 0x9B, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, +0xFC, 0x6C, 0x00, 0x18, 0xF4, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, +0x58, 0x9A, 0x45, 0xF6, 0x98, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0E, 0x61, 0xFC, 0x6C, 0x00, 0x18, 0xF4, 0xC1, 0x00, 0x18, -0x2B, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x25, 0xF6, +0x68, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x45, 0xF6, 0x98, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x44, 0x9A, 0x01, 0x72, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x68, 0xFC, 0x6C, 0x85, 0xF7, 0x08, 0x48, -0x00, 0x18, 0xF4, 0xC1, 0x00, 0x18, 0x32, 0xCA, -0x48, 0x98, 0x20, 0x6B, 0x6C, 0xEA, 0x07, 0x22, -0x00, 0x18, 0x3B, 0xCB, 0x48, 0x98, 0x21, 0x6B, -0x6B, 0xEB, 0x6C, 0xEA, 0x48, 0xD8, 0x30, 0xF0, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, +0x01, 0x72, 0x0E, 0x61, 0xFC, 0x6C, 0x00, 0x18, +0xF4, 0xC1, 0x00, 0x18, 0x38, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0x25, 0xF6, 0x98, 0x9B, 0x40, 0xEA, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x50, 0x9A, -0xE1, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF7, 0x54, 0x9A, 0x60, 0x9A, 0xFF, 0xF7, -0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x58, 0x9A, -0x01, 0x6B, 0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, -0x6E, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF6, 0x68, 0x9B, -0x44, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x60, 0x9B, -0x62, 0xF6, 0x8C, 0x9C, 0x8C, 0xEB, 0x43, 0xEB, -0x02, 0x60, 0x6F, 0xEB, 0x69, 0xE2, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x23, 0xCF, +0x58, 0x9A, 0x45, 0xF6, 0x98, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x1D, 0xCF, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x6F, 0xCF, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x13, 0xCF, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xE8, 0xCF, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x0D, 0xCF, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x03, 0x6F, 0x8C, 0xEF, 0x64, 0x67, 0x46, 0x67, -0x04, 0x27, 0x0B, 0x10, 0xA0, 0xDB, 0xFC, 0x4A, -0x04, 0x4B, 0x04, 0x5A, 0xFB, 0x60, 0x03, 0x6A, -0x4C, 0xEE, 0x03, 0x10, 0xA0, 0xC4, 0xFF, 0x4E, -0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, 0x20, 0xE8, -0xFF, 0x6A, 0xAC, 0xEA, 0x03, 0x10, 0x40, 0xC4, -0xFF, 0x4E, 0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x03, 0x6B, 0x05, 0x67, 0x6C, 0xE8, 0x44, 0x67, -0xE4, 0x67, 0x85, 0x67, 0x12, 0x28, 0x4C, 0xEB, -0x10, 0x2B, 0x86, 0x67, 0x06, 0x10, 0x61, 0xE5, -0x00, 0x98, 0x7D, 0xE2, 0xFC, 0x4C, 0x00, 0xDF, -0x04, 0x4B, 0x04, 0x5C, 0xF8, 0x60, 0xCA, 0x34, -0x88, 0x34, 0x03, 0x6B, 0x9D, 0xE2, 0x6C, 0xEE, -0x91, 0xE5, 0x00, 0x6B, 0x06, 0x10, 0x61, 0xE4, -0x00, 0xA0, 0x75, 0xE7, 0xFF, 0x4E, 0x00, 0xC5, -0x01, 0x4B, 0xF9, 0x2E, 0x01, 0x90, 0x01, 0x63, -0x20, 0xE8, 0x00, 0x65, 0x09, 0x10, 0x60, 0xA4, -0x40, 0xA5, 0xFF, 0x4E, 0x4A, 0xEB, 0x02, 0x60, -0x4B, 0xE3, 0x20, 0xE8, 0x01, 0x4C, 0x01, 0x4D, -0xF6, 0x2E, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0x06, 0x2C, 0x64, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x05, 0xF6, 0x6C, 0xDA, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x05, 0xF6, 0x8C, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x05, 0xF6, 0x4C, 0x9A, 0x32, 0x72, -0x2A, 0x60, 0x33, 0x5A, 0x0C, 0x60, 0x14, 0x72, -0x2E, 0x60, 0x15, 0x5A, 0x03, 0x60, 0x0A, 0x72, -0x12, 0x60, 0x20, 0xE8, 0x19, 0x72, 0x17, 0x60, -0x28, 0x72, 0x25, 0x60, 0x20, 0xE8, 0x64, 0x72, -0x2A, 0x60, 0x65, 0x5A, 0x03, 0x60, 0x50, 0x72, -0x1E, 0x60, 0x20, 0xE8, 0x78, 0x72, 0x2B, 0x60, -0xC8, 0x72, 0x31, 0x60, 0x20, 0xE8, 0x02, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x70, 0xDA, -0xE0, 0xF7, 0x1E, 0x4B, 0x31, 0x10, 0x09, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x70, 0xDA, -0xE4, 0xF3, 0x17, 0x4B, 0x29, 0x10, 0x11, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x70, 0xDA, -0xE8, 0xF3, 0x0F, 0x4B, 0x21, 0x10, 0x0D, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x70, 0xDA, -0x06, 0xF4, 0x08, 0x4B, 0x19, 0x10, 0x22, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x70, 0xDA, -0x11, 0xF0, 0x00, 0x6B, 0x11, 0x10, 0x28, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x70, 0xDA, -0x14, 0xF0, 0x00, 0x6B, 0x09, 0x10, 0x43, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x70, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x78, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x74, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x05, 0xF6, 0x4C, 0x9A, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x54, 0x9A, -0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, -0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, -0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x50, 0x9A, -0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, -0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, -0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x39, 0xC7, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xED, -0x00, 0x18, 0x20, 0xC7, 0x05, 0x97, 0x00, 0x6A, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xEE, -0x00, 0x18, 0x25, 0xC7, 0x50, 0x67, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, -0x20, 0x10, 0xE0, 0xF3, 0x08, 0x70, 0x13, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x78, 0x9A, -0x80, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, -0x64, 0xDA, 0x00, 0x6A, 0x13, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x44, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0xD8, 0x2A, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF1, 0x68, 0x9B, 0xC3, 0xF1, -0x8C, 0x9C, 0x6D, 0xE5, 0x91, 0xE5, 0x00, 0x6E, -0xC0, 0xDB, 0x04, 0x4B, 0x8A, 0xEB, 0xFB, 0x61, -0xE7, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x40, 0x9A, 0x10, 0x6C, -0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x48, 0x9A, 0x49, 0xE5, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0x50, 0x9A, 0xFF, 0x6B, -0x55, 0xE5, 0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, -0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, 0x79, 0xA2, -0x08, 0xD4, 0x30, 0xF0, 0x20, 0x69, 0x61, 0xC5, -0x01, 0x4B, 0x05, 0xF6, 0x79, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x88, 0x9B, 0x08, 0x93, -0x80, 0xF2, 0x4C, 0x99, 0x02, 0x6E, 0x91, 0xE3, -0x05, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x94, 0x9B, 0x08, 0x93, 0xCE, 0xA0, -0x80, 0xF2, 0x4C, 0x99, 0xA2, 0x40, 0x91, 0xE3, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x24, 0x67, 0x00, 0x18, -0x98, 0xC7, 0x00, 0x6B, 0x46, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x48, 0x9A, 0xFF, 0xF7, -0x1F, 0x6E, 0xFF, 0x6F, 0x00, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x4C, 0x9A, 0x10, 0x6C, -0x8B, 0xEC, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA1, 0x40, 0xC3, 0xF1, 0x58, 0x9A, 0x65, 0x67, -0xCC, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x5C, 0x9A, 0x60, 0xA2, 0xFA, 0x65, -0xA2, 0x32, 0xEC, 0xEB, 0x8C, 0xEB, 0x42, 0x32, -0x6D, 0xEA, 0xEC, 0xEA, 0x7F, 0x67, 0x40, 0xC3, -0x87, 0xA9, 0x02, 0x4C, 0xCC, 0xEC, 0x00, 0x18, -0xB1, 0xC7, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, -0x00, 0x18, 0xC8, 0xC7, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x44, 0x9A, 0x01, 0x6B, 0x80, 0xF2, -0x16, 0x6C, 0x60, 0xC2, 0x06, 0x02, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, -0x01, 0x6D, 0x00, 0x6E, 0x04, 0xF7, 0x10, 0x6F, -0x40, 0xEA, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, -0x62, 0x33, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x43, 0x67, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, 0x40, 0xF6, -0x9A, 0xA0, 0x40, 0xF6, 0x5B, 0xA0, 0x8E, 0xEA, -0x37, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x7C, 0x9B, 0x40, 0x9A, 0x6C, 0xEA, 0x2C, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x90, 0x34, 0xE6, 0xF0, -0x02, 0x4A, 0x91, 0xE2, 0x00, 0x18, 0xDD, 0xC7, -0x1D, 0x22, 0x40, 0xF6, 0x5A, 0xA0, 0x01, 0x4A, -0x40, 0xF6, 0x5A, 0xC0, 0x40, 0xF6, 0x7A, 0xA0, -0x40, 0xF6, 0x5B, 0xA0, 0x6E, 0xEA, 0x06, 0x22, -0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, -0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x40, 0xF6, 0x7A, 0xA2, -0x50, 0x6C, 0x8E, 0xEB, 0x09, 0x2B, 0x40, 0xF6, -0x7A, 0xC2, 0x06, 0x10, 0xA0, 0xF0, 0x44, 0x98, -0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, 0xA0, 0xF0, -0x44, 0x98, 0x04, 0x6B, 0xA4, 0x67, 0x6D, 0xEA, -0xA0, 0xF0, 0x44, 0xD8, 0x40, 0xF6, 0x5A, 0xA8, -0x09, 0xF7, 0x00, 0x72, 0x07, 0x60, 0x40, 0xF6, -0x5A, 0xA0, 0x40, 0xF6, 0x9B, 0xA0, 0xFF, 0x4A, -0x8E, 0xEA, 0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x78, 0x9A, 0x00, 0xF2, 0x00, 0x6C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, -0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, -0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9A, 0xE6, 0xF0, -0x02, 0x4B, 0x90, 0x34, 0x91, 0xE3, 0x10, 0x6E, -0x40, 0xEA, 0x40, 0xF6, 0x5B, 0xA0, 0x50, 0x6B, -0x01, 0x4A, 0x40, 0xF6, 0x5B, 0xC0, 0x40, 0xF6, -0x5B, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, 0x40, 0xF6, -0x5B, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xFC, 0x6C, +0xA5, 0xF7, 0x08, 0x48, 0x00, 0x18, 0xF4, 0xC1, +0x00, 0x18, 0x3F, 0xCA, 0x48, 0x98, 0x20, 0x6B, +0x6C, 0xEA, 0x07, 0x22, 0x00, 0x18, 0x25, 0xCB, +0x48, 0x98, 0x21, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, +0x48, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x45, 0xF6, +0x98, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF6, 0x54, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, +0x40, 0xAA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x58, 0x9A, +0x60, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF6, 0x5C, 0x9A, 0x01, 0x6B, 0x40, 0x9A, +0x42, 0x32, 0x52, 0x32, 0x6E, 0xEA, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF6, 0x6C, 0x9B, 0x44, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x60, 0x9B, 0x62, 0xF6, 0x90, 0x9C, +0x8C, 0xEB, 0x43, 0xEB, 0x02, 0x60, 0x6F, 0xEB, +0x69, 0xE2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x48, 0xCF, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x05, 0xF6, -0x58, 0xA3, 0xFF, 0x6F, 0xE0, 0xF0, 0xC7, 0xA5, -0x41, 0xC5, 0x43, 0xA5, 0x05, 0xF6, 0x78, 0xA3, -0x03, 0x4A, 0xEC, 0xEA, 0x09, 0x10, 0xED, 0x42, -0xFF, 0x68, 0x0C, 0xEF, 0xFD, 0xE5, 0x64, 0xC7, -0xE6, 0xA7, 0x03, 0x4F, 0xE9, 0xE2, 0x0C, 0xEA, -0xEF, 0x46, 0xE2, 0xEA, 0xF4, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x05, 0xF6, 0x78, 0xA2, 0x01, 0x4B, -0x05, 0xF6, 0x78, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x68, 0x9B, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0x71, 0xE4, 0x40, 0xEA, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x24, 0x67, 0x00, 0x18, 0x98, 0xC7, 0x00, 0x6B, -0x3C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x48, 0x9A, 0x0F, 0x6C, 0xFF, 0xF7, 0x1F, 0x6B, -0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x4C, 0x9A, 0x4C, 0xE8, 0xA1, 0x40, 0xA2, 0x32, -0x42, 0x32, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xC3, 0xF1, 0x98, 0x9C, 0xAC, 0xEB, 0x60, 0xCC, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x7C, 0x9B, -0x40, 0xC3, 0xE0, 0xF0, 0x87, 0xA1, 0x00, 0x18, -0xB1, 0xC7, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, -0x00, 0x18, 0x51, 0xC8, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x44, 0x9A, 0x01, 0x6B, 0x80, 0xF2, -0x16, 0x6C, 0x60, 0xC2, 0x06, 0x02, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, -0x01, 0x6D, 0x00, 0x6E, 0x04, 0xF7, 0x10, 0x6F, -0x40, 0xEA, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, -0x62, 0x33, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x43, 0x67, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, 0xC2, 0xF4, -0x7F, 0xA0, 0xE2, 0xF4, 0x40, 0xA0, 0x6E, 0xEA, -0x3E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, -0x9C, 0x9C, 0x40, 0x9A, 0x8C, 0xEA, 0x33, 0x2A, -0xE8, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xE6, 0xF5, 0x04, 0x4A, 0x12, 0xEB, 0x71, 0xE2, -0x00, 0x18, 0x6A, 0xC8, 0x07, 0x2A, 0xA0, 0xF0, -0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, -0x44, 0xD8, 0x21, 0x10, 0xC2, 0xF4, 0x5F, 0xA0, -0x10, 0x6B, 0x01, 0x4A, 0xC2, 0xF4, 0x5F, 0xC0, -0xC2, 0xF4, 0x5F, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, -0xC2, 0xF4, 0x5F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xC2, 0xF4, 0x9F, 0xA2, -0xE2, 0xF4, 0x60, 0xA2, 0x8E, 0xEB, 0x07, 0x23, -0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x04, 0x10, 0xC2, 0xF4, -0x9E, 0xC2, 0xC2, 0xF4, 0x7C, 0xCA, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xC2, 0xF4, 0x7F, 0xA2, 0xA4, 0x67, 0x04, 0x2B, -0xE2, 0xF4, 0x40, 0xA2, 0x0F, 0x72, 0x0B, 0x60, -0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, -0xC2, 0xF4, 0x5F, 0xA0, 0xE2, 0xF4, 0x60, 0xA0, -0xFF, 0x4A, 0x6E, 0xEA, 0x15, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x78, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF0, 0x98, 0x9C, 0x40, 0x9B, +0x00, 0x18, 0x42, 0xCF, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x94, 0xCF, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x38, 0xCF, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x0D, 0xD0, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x32, 0xCF, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x03, 0x6F, 0x8C, 0xEF, +0x64, 0x67, 0x46, 0x67, 0x04, 0x27, 0x0B, 0x10, +0xA0, 0xDB, 0xFC, 0x4A, 0x04, 0x4B, 0x04, 0x5A, +0xFB, 0x60, 0x03, 0x6A, 0x4C, 0xEE, 0x03, 0x10, +0xA0, 0xC4, 0xFF, 0x4E, 0x01, 0x4C, 0xFC, 0x2E, +0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6A, 0xAC, 0xEA, +0x03, 0x10, 0x40, 0xC4, 0xFF, 0x4E, 0x01, 0x4C, +0xFC, 0x2E, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x03, 0x6B, 0x05, 0x67, +0x6C, 0xE8, 0x44, 0x67, 0xE4, 0x67, 0x85, 0x67, +0x12, 0x28, 0x4C, 0xEB, 0x10, 0x2B, 0x86, 0x67, +0x06, 0x10, 0x61, 0xE5, 0x00, 0x98, 0x7D, 0xE2, +0xFC, 0x4C, 0x00, 0xDF, 0x04, 0x4B, 0x04, 0x5C, +0xF8, 0x60, 0xCA, 0x34, 0x88, 0x34, 0x03, 0x6B, +0x9D, 0xE2, 0x6C, 0xEE, 0x91, 0xE5, 0x00, 0x6B, +0x06, 0x10, 0x61, 0xE4, 0x00, 0xA0, 0x75, 0xE7, +0xFF, 0x4E, 0x00, 0xC5, 0x01, 0x4B, 0xF9, 0x2E, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x09, 0x10, 0x60, 0xA4, 0x40, 0xA5, 0xFF, 0x4E, +0x4A, 0xEB, 0x02, 0x60, 0x4B, 0xE3, 0x20, 0xE8, +0x01, 0x4C, 0x01, 0x4D, 0xF6, 0x2E, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0x06, 0x2C, 0x64, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, 0x70, 0xDA, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, +0x90, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, +0x50, 0x9A, 0x32, 0x72, 0x2A, 0x60, 0x33, 0x5A, +0x0C, 0x60, 0x14, 0x72, 0x2E, 0x60, 0x15, 0x5A, +0x03, 0x60, 0x0A, 0x72, 0x12, 0x60, 0x20, 0xE8, +0x19, 0x72, 0x17, 0x60, 0x28, 0x72, 0x25, 0x60, +0x20, 0xE8, 0x64, 0x72, 0x2A, 0x60, 0x65, 0x5A, +0x03, 0x60, 0x50, 0x72, 0x1E, 0x60, 0x20, 0xE8, +0x78, 0x72, 0x2B, 0x60, 0xC8, 0x72, 0x31, 0x60, +0x20, 0xE8, 0x02, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x74, 0xDA, 0xE0, 0xF7, 0x1E, 0x4B, +0x31, 0x10, 0x09, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x74, 0xDA, 0xE4, 0xF3, 0x17, 0x4B, +0x29, 0x10, 0x11, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x74, 0xDA, 0xE8, 0xF3, 0x0F, 0x4B, +0x21, 0x10, 0x0D, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x74, 0xDA, 0x06, 0xF4, 0x08, 0x4B, +0x19, 0x10, 0x22, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x74, 0xDA, 0x11, 0xF0, 0x00, 0x6B, +0x11, 0x10, 0x28, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x74, 0xDA, 0x14, 0xF0, 0x00, 0x6B, +0x09, 0x10, 0x43, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x74, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF7, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x78, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, 0x50, 0x9A, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x58, 0x9A, 0xFF, 0x63, 0x58, 0xEC, +0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, +0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x54, 0x9A, 0xFF, 0x63, 0x58, 0xEC, +0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, +0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x46, 0xC7, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xED, 0x00, 0x18, 0x2D, 0xC7, +0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x04, 0x67, 0x4C, 0xEE, 0x00, 0x18, 0x32, 0xC7, +0x50, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x68, 0x20, 0x10, 0xE0, 0xF3, +0x08, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF6, 0x7C, 0x9A, 0x80, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, -0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0xAC, 0x10, -0x23, 0xA5, 0xFF, 0xF7, 0x1F, 0x6A, 0x04, 0x49, -0x4C, 0xE9, 0xC2, 0xF4, 0x5C, 0xA8, 0x22, 0x2A, -0xE8, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9A, -0xE6, 0xF5, 0x04, 0x4C, 0xFF, 0x6E, 0x2C, 0xEE, -0x12, 0xEB, 0x71, 0xE4, 0x40, 0xEA, 0xE2, 0xF4, -0x40, 0xA0, 0xC2, 0xF4, 0x7F, 0xA0, 0xC2, 0xF4, -0x3C, 0xC8, 0x4E, 0xEB, 0x79, 0x2B, 0x01, 0x4A, -0xE2, 0xF4, 0x40, 0xC0, 0xE2, 0xF4, 0x40, 0xA0, -0x10, 0x6B, 0x6E, 0xEA, 0x71, 0x2A, 0xE2, 0xF4, -0x40, 0xC0, 0x6E, 0x10, 0x62, 0xA5, 0x39, 0x2B, -0x4D, 0xE1, 0xE3, 0x53, 0x36, 0x60, 0xC2, 0xF4, -0x7E, 0xA0, 0xE8, 0x6C, 0x98, 0xEB, 0x12, 0xEB, -0x0D, 0xE3, 0x40, 0xF6, 0x9E, 0xA3, 0x2D, 0x2C, -0x40, 0xF6, 0x9F, 0xA3, 0xFF, 0x6E, 0xFC, 0x4A, -0xFF, 0x4C, 0x40, 0xF6, 0x9F, 0xC3, 0xC2, 0xF4, -0x7C, 0xA8, 0xC2, 0xF4, 0x9E, 0xA0, 0xCC, 0xEA, -0xFF, 0x4B, 0xC2, 0xF4, 0x7C, 0xC8, 0xE8, 0x6B, -0x78, 0xEC, 0x2C, 0xEE, 0x12, 0xEC, 0x91, 0xE0, -0x51, 0xE4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x40, 0xF6, 0x1F, 0x4C, 0x40, 0xEA, -0xC2, 0xF4, 0x5E, 0xA0, 0xE8, 0x6B, 0x78, 0xEA, -0x12, 0xEA, 0x09, 0xE2, 0x40, 0xF6, 0x7F, 0xA2, -0x6D, 0xE1, 0x40, 0xF6, 0x7F, 0xC2, 0xC2, 0xF4, -0x5C, 0xA8, 0x45, 0xE1, 0xC2, 0xF4, 0x3C, 0xC8, -0x33, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, -0x08, 0x48, 0xE2, 0xF4, 0x80, 0xA0, 0xE8, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x58, 0xEC, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xE6, 0xF5, -0x04, 0x4B, 0xFF, 0x6E, 0x2C, 0xEE, 0x12, 0xEC, -0x91, 0xE3, 0x40, 0xEA, 0xE2, 0xF4, 0x40, 0xA0, -0x10, 0x6B, 0xC2, 0xF4, 0x3C, 0xC8, 0x01, 0x4A, -0xE2, 0xF4, 0x40, 0xC0, 0xE2, 0xF4, 0x40, 0xA0, -0x6E, 0xEA, 0x02, 0x2A, 0xE2, 0xF4, 0x40, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xC2, 0xF4, 0x7E, 0xA2, 0x10, 0x6C, 0x01, 0x4B, -0xC2, 0xF4, 0x7E, 0xC2, 0xC2, 0xF4, 0x7E, 0xA2, -0x8E, 0xEB, 0x02, 0x2B, 0xC2, 0xF4, 0x7E, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xC2, 0xF4, 0x9E, 0xA2, 0xE8, 0x6B, 0x78, 0xEC, -0xC2, 0xF4, 0x9C, 0xAA, 0x12, 0xEB, 0x4D, 0xE3, -0x40, 0xF7, 0x83, 0xC3, 0xA0, 0xF0, 0x64, 0x9A, -0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x60, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0xC0, 0xF0, -0xBC, 0xA2, 0x01, 0x6C, 0x6C, 0xEC, 0x02, 0x6B, -0x6B, 0xEB, 0xAC, 0xEB, 0x8D, 0xEB, 0xC0, 0xF0, -0x7C, 0xC2, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xED, -0xFF, 0x75, 0x4C, 0xEC, 0xCC, 0xEA, 0x06, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x71, 0xE4, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x71, 0xE4, 0x43, 0xF3, -0x60, 0xA4, 0xAC, 0xEA, 0xAF, 0xED, 0x6C, 0xED, -0xAD, 0xEA, 0x43, 0xF3, 0x40, 0xC4, 0x20, 0xE8, -0xFF, 0x6A, 0x4C, 0xEC, 0xFF, 0x74, 0xAC, 0xEA, -0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF2, -0x46, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x23, 0xF3, 0xBE, 0xA3, -0x8C, 0xEA, 0x8F, 0xEC, 0xAC, 0xEC, 0x8D, 0xEA, -0x23, 0xF3, 0x5E, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x00, 0x6A, +0x13, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF1, 0x54, 0x9A, 0x60, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0xD8, 0x2A, 0x01, 0x6A, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, +0x78, 0x9B, 0xA3, 0xF1, 0x9C, 0x9C, 0x6D, 0xE5, +0x91, 0xE5, 0x00, 0x6E, 0xC0, 0xDB, 0x04, 0x4B, +0x8A, 0xEB, 0xFB, 0x61, 0xE7, 0xF7, 0x1F, 0x6B, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, +0x44, 0x9A, 0x10, 0x6C, 0x4D, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF1, 0x58, 0x9A, 0x49, 0xE5, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, +0x40, 0x9A, 0xFF, 0x6B, 0x55, 0xE5, 0x40, 0xA5, +0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC5, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x7D, 0xA2, 0x08, 0xD4, 0x30, 0xF0, +0x20, 0x69, 0x61, 0xC5, 0x01, 0x4B, 0x25, 0xF6, +0x7D, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, +0x98, 0x9B, 0x08, 0x93, 0x80, 0xF2, 0x4C, 0x99, +0x02, 0x6E, 0x91, 0xE3, 0x05, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x84, 0x9B, +0x08, 0x93, 0xCE, 0xA0, 0x80, 0xF2, 0x4C, 0x99, +0xA2, 0x40, 0x91, 0xE3, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x01, 0xA4, 0x20, 0xA4, 0x0C, 0x20, 0x90, 0x67, -0xB1, 0x67, 0x00, 0x18, 0x3E, 0xC9, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x90, 0x67, -0xB1, 0x67, 0x53, 0x6E, 0x40, 0xEA, 0x7D, 0x67, -0x20, 0x6A, 0x50, 0xC3, 0x03, 0x6A, 0x4F, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x58, 0x9A, -0x9D, 0x67, 0x40, 0xA2, 0x52, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x23, 0xF3, -0x7E, 0xA2, 0x23, 0xF3, 0x5F, 0xA2, 0x73, 0xC4, -0x54, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, -0x40, 0xA4, 0x08, 0xD2, 0x08, 0x93, 0x1F, 0x6A, -0x4C, 0xEB, 0x08, 0xD3, 0x42, 0xA4, 0x61, 0xA4, -0x0B, 0xD2, 0x43, 0xA4, 0x84, 0xA4, 0x09, 0xD4, -0x08, 0x94, 0x08, 0x5C, 0x44, 0x60, 0x84, 0x31, -0x09, 0x94, 0x01, 0x2C, 0x28, 0x22, 0xFF, 0x68, -0x0C, 0xEA, 0x0C, 0xEB, 0xA2, 0x67, 0xC3, 0x67, -0x91, 0x67, 0x0C, 0xD2, 0x0D, 0xD3, 0x00, 0x18, -0x31, 0xC9, 0x0B, 0x94, 0x09, 0x93, 0x41, 0x41, -0x0C, 0xEC, 0x0B, 0xD4, 0x0B, 0x96, 0x0C, 0xEA, -0x0C, 0xEB, 0x82, 0x67, 0xA3, 0x67, 0x30, 0xF0, -0x20, 0x68, 0x0A, 0xD2, 0x09, 0xD3, 0x00, 0x18, -0x31, 0xC9, 0x40, 0xF4, 0x40, 0x98, 0x0C, 0x95, -0x0D, 0x96, 0x91, 0x67, 0x01, 0x6F, 0x40, 0xEA, -0x40, 0xF4, 0x40, 0x98, 0x0A, 0x94, 0x09, 0x95, -0x0B, 0x96, 0x02, 0x6F, 0x40, 0xEA, 0x91, 0x67, -0x00, 0x18, 0x78, 0xCE, 0x7D, 0x67, 0x53, 0xC3, -0x42, 0x32, 0x54, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x45, 0xE1, 0x43, 0xF3, -0x40, 0xA1, 0x55, 0xC3, 0x43, 0xF3, 0x41, 0xA1, -0x56, 0xC3, 0x43, 0xF3, 0x50, 0xA1, 0x57, 0xC3, -0x43, 0xF3, 0x51, 0xA1, 0x58, 0xC3, 0x9D, 0x67, -0x21, 0x6A, 0x72, 0xA4, 0x50, 0xC4, 0x07, 0x6A, -0x4F, 0xCC, 0x20, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x08, 0x93, 0x6D, 0xEA, 0x52, 0xC4, 0x30, 0xF0, +0x24, 0x67, 0x00, 0x18, 0xA5, 0xC7, 0x00, 0x6B, +0x46, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x4C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6E, 0xFF, 0x6F, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x50, 0x9A, 0x10, 0x6C, 0x8B, 0xEC, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0x40, 0xC3, 0xF1, +0x48, 0x9A, 0x65, 0x67, 0xCC, 0xEB, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x4C, 0x9A, +0x60, 0xA2, 0xFA, 0x65, 0xA2, 0x32, 0xEC, 0xEB, +0x8C, 0xEB, 0x42, 0x32, 0x6D, 0xEA, 0xEC, 0xEA, +0x7F, 0x67, 0x40, 0xC3, 0x87, 0xA9, 0x02, 0x4C, +0xCC, 0xEC, 0x00, 0x18, 0xBE, 0xC7, 0x87, 0x40, +0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0xD5, 0xC7, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x54, 0x9A, +0x01, 0x6B, 0x80, 0xF2, 0x16, 0x6C, 0x60, 0xC2, +0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x48, 0x9A, 0x01, 0x6D, 0x00, 0x6E, +0x04, 0xF7, 0x10, 0x6F, 0x40, 0xEA, 0x4B, 0xEB, +0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x43, 0x67, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, +0x08, 0x48, 0x40, 0xF6, 0x9A, 0xA0, 0x40, 0xF6, +0x5B, 0xA0, 0x8E, 0xEA, 0x37, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF1, 0x50, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF1, 0x6C, 0x9B, 0x40, 0x9A, +0x6C, 0xEA, 0x2C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x90, 0x34, 0x06, 0xF1, 0x02, 0x4A, 0x91, 0xE2, +0x00, 0x18, 0xEA, 0xC7, 0x1D, 0x22, 0x40, 0xF6, +0x5A, 0xA0, 0x01, 0x4A, 0x40, 0xF6, 0x5A, 0xC0, +0x40, 0xF6, 0x7A, 0xA0, 0x40, 0xF6, 0x5B, 0xA0, +0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, +0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x40, 0xF6, 0x7A, 0xA2, 0x50, 0x6C, 0x8E, 0xEB, +0x09, 0x2B, 0x40, 0xF6, 0x7A, 0xC2, 0x06, 0x10, +0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, +0xA0, 0xF0, 0x44, 0xD8, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, +0x08, 0x48, 0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, +0xA4, 0x67, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, +0x40, 0xF6, 0x5A, 0xA8, 0x09, 0xF7, 0x00, 0x72, +0x07, 0x60, 0x40, 0xF6, 0x5A, 0xA0, 0x40, 0xF6, +0x9B, 0xA0, 0xFF, 0x4A, 0x8E, 0xEA, 0x13, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, +0x00, 0xF2, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, +0x63, 0xF3, 0x64, 0xDA, 0x18, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, +0x4C, 0x9A, 0x06, 0xF1, 0x02, 0x4B, 0x90, 0x34, +0x91, 0xE3, 0x10, 0x6E, 0x40, 0xEA, 0x40, 0xF6, +0x5B, 0xA0, 0x50, 0x6B, 0x01, 0x4A, 0x40, 0xF6, +0x5B, 0xC0, 0x40, 0xF6, 0x5B, 0xA0, 0x6E, 0xEA, +0x02, 0x2A, 0x40, 0xF6, 0x5B, 0xC0, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x25, 0xF6, 0x5C, 0xA3, 0xFF, 0x6F, +0xE0, 0xF0, 0xC7, 0xA5, 0x41, 0xC5, 0x43, 0xA5, +0x25, 0xF6, 0x7C, 0xA3, 0x03, 0x4A, 0xEC, 0xEA, +0x09, 0x10, 0xED, 0x42, 0xFF, 0x68, 0x0C, 0xEF, +0xFD, 0xE5, 0x64, 0xC7, 0xE6, 0xA7, 0x03, 0x4F, +0xE9, 0xE2, 0x0C, 0xEA, 0xEF, 0x46, 0xE2, 0xEA, +0xF4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, +0x7C, 0xA2, 0x01, 0x4B, 0x25, 0xF6, 0x7C, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x78, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0x71, 0xE4, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x24, 0x67, 0x00, 0x18, +0xA5, 0xC7, 0x00, 0x6B, 0x3C, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF6, 0x4C, 0x9A, 0x0F, 0x6C, +0xFF, 0xF7, 0x1F, 0x6B, 0x00, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF6, 0x50, 0x9A, 0x4C, 0xE8, +0xA1, 0x40, 0xA2, 0x32, 0x42, 0x32, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF1, 0x88, 0x9C, +0xAC, 0xEB, 0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF1, 0x6C, 0x9B, 0x40, 0xC3, 0xE0, 0xF0, +0x87, 0xA1, 0x00, 0x18, 0xBE, 0xC7, 0x87, 0x40, +0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0x5E, 0xC8, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x54, 0x9A, +0x01, 0x6B, 0x80, 0xF2, 0x16, 0x6C, 0x60, 0xC2, +0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x48, 0x9A, 0x01, 0x6D, 0x00, 0x6E, +0x04, 0xF7, 0x10, 0x6F, 0x40, 0xEA, 0x4B, 0xEB, +0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x43, 0x67, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, +0x08, 0x48, 0xC2, 0xF4, 0x7F, 0xA0, 0xE2, 0xF4, +0x40, 0xA0, 0x6E, 0xEA, 0x3E, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF1, 0x50, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xA3, 0xF1, 0x8C, 0x9C, 0x40, 0x9A, +0x8C, 0xEA, 0x33, 0x2A, 0xE8, 0x6A, 0x58, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF6, 0x04, 0x4A, +0x12, 0xEB, 0x71, 0xE2, 0x00, 0x18, 0x77, 0xC8, +0x07, 0x2A, 0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, +0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x21, 0x10, +0xC2, 0xF4, 0x5F, 0xA0, 0x10, 0x6B, 0x01, 0x4A, +0xC2, 0xF4, 0x5F, 0xC0, 0xC2, 0xF4, 0x5F, 0xA0, +0x6E, 0xEA, 0x02, 0x2A, 0xC2, 0xF4, 0x5F, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xC2, 0xF4, 0x9F, 0xA2, 0xE2, 0xF4, 0x60, 0xA2, +0x8E, 0xEB, 0x07, 0x23, 0xA0, 0xF0, 0x64, 0x9A, +0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x04, 0x10, 0xC2, 0xF4, 0x9E, 0xC2, 0xC2, 0xF4, +0x7C, 0xCA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xC2, 0xF4, 0x7F, 0xA2, +0xA4, 0x67, 0x04, 0x2B, 0xE2, 0xF4, 0x40, 0xA2, +0x0F, 0x72, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF7, 0x08, 0x48, 0xC2, 0xF4, 0x5F, 0xA0, +0xE2, 0xF4, 0x60, 0xA0, 0xFF, 0x4A, 0x6E, 0xEA, +0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, +0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF0, +0x8C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, +0x64, 0xDA, 0xAC, 0x10, 0x23, 0xA5, 0xFF, 0xF7, +0x1F, 0x6A, 0x04, 0x49, 0x4C, 0xE9, 0xC2, 0xF4, +0x5C, 0xA8, 0x22, 0x2A, 0xE8, 0x6A, 0x58, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF2, 0x4C, 0x9A, 0x06, 0xF6, 0x04, 0x4C, +0xFF, 0x6E, 0x2C, 0xEE, 0x12, 0xEB, 0x71, 0xE4, +0x40, 0xEA, 0xE2, 0xF4, 0x40, 0xA0, 0xC2, 0xF4, +0x7F, 0xA0, 0xC2, 0xF4, 0x3C, 0xC8, 0x4E, 0xEB, +0x79, 0x2B, 0x01, 0x4A, 0xE2, 0xF4, 0x40, 0xC0, +0xE2, 0xF4, 0x40, 0xA0, 0x10, 0x6B, 0x6E, 0xEA, +0x71, 0x2A, 0xE2, 0xF4, 0x40, 0xC0, 0x6E, 0x10, +0x62, 0xA5, 0x39, 0x2B, 0x4D, 0xE1, 0xE3, 0x53, +0x36, 0x60, 0xC2, 0xF4, 0x7E, 0xA0, 0xE8, 0x6C, +0x98, 0xEB, 0x12, 0xEB, 0x0D, 0xE3, 0x40, 0xF6, +0x9E, 0xA3, 0x2D, 0x2C, 0x40, 0xF6, 0x9F, 0xA3, +0xFF, 0x6E, 0xFC, 0x4A, 0xFF, 0x4C, 0x40, 0xF6, +0x9F, 0xC3, 0xC2, 0xF4, 0x7C, 0xA8, 0xC2, 0xF4, +0x9E, 0xA0, 0xCC, 0xEA, 0xFF, 0x4B, 0xC2, 0xF4, +0x7C, 0xC8, 0xE8, 0x6B, 0x78, 0xEC, 0x2C, 0xEE, +0x12, 0xEC, 0x91, 0xE0, 0x51, 0xE4, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x40, 0xF6, +0x1F, 0x4C, 0x40, 0xEA, 0xC2, 0xF4, 0x5E, 0xA0, +0xE8, 0x6B, 0x78, 0xEA, 0x12, 0xEA, 0x09, 0xE2, +0x40, 0xF6, 0x7F, 0xA2, 0x6D, 0xE1, 0x40, 0xF6, +0x7F, 0xC2, 0xC2, 0xF4, 0x5C, 0xA8, 0x45, 0xE1, +0xC2, 0xF4, 0x3C, 0xC8, 0x33, 0x10, 0x30, 0xF0, +0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, 0xE2, 0xF4, +0x80, 0xA0, 0xE8, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x4C, 0x9A, 0x06, 0xF6, 0x04, 0x4B, 0xFF, 0x6E, +0x2C, 0xEE, 0x12, 0xEC, 0x91, 0xE3, 0x40, 0xEA, +0xE2, 0xF4, 0x40, 0xA0, 0x10, 0x6B, 0xC2, 0xF4, +0x3C, 0xC8, 0x01, 0x4A, 0xE2, 0xF4, 0x40, 0xC0, +0xE2, 0xF4, 0x40, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, +0xE2, 0xF4, 0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xC2, 0xF4, 0x7E, 0xA2, +0x10, 0x6C, 0x01, 0x4B, 0xC2, 0xF4, 0x7E, 0xC2, +0xC2, 0xF4, 0x7E, 0xA2, 0x8E, 0xEB, 0x02, 0x2B, +0xC2, 0xF4, 0x7E, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xC2, 0xF4, 0x9E, 0xA2, +0xE8, 0x6B, 0x78, 0xEC, 0xC2, 0xF4, 0x9C, 0xAA, +0x12, 0xEB, 0x4D, 0xE3, 0x40, 0xF7, 0x83, 0xC3, +0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, +0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0xC0, 0xF0, 0xBC, 0xA2, 0x01, 0x6C, +0x6C, 0xEC, 0x02, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, +0x8D, 0xEB, 0xC0, 0xF0, 0x7C, 0xC2, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, +0xCC, 0xEA, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0x71, 0xE4, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x71, 0xE4, 0x43, 0xF3, 0x60, 0xA4, 0xAC, 0xEA, +0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0x43, 0xF3, +0x40, 0xC4, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0xFF, 0x74, 0xAC, 0xEA, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xE9, 0xF2, 0x46, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x23, 0xF3, 0xBE, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, +0xAC, 0xEC, 0x8D, 0xEA, 0x23, 0xF3, 0x5E, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x01, 0xA4, 0x20, 0xA4, +0x0C, 0x20, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, +0x4B, 0xC9, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x50, 0x9A, 0x90, 0x67, 0xB1, 0x67, 0x53, 0x6E, +0x40, 0xEA, 0x7D, 0x67, 0x20, 0x6A, 0x50, 0xC3, +0x03, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF5, 0x58, 0x9A, 0x9D, 0x67, 0x40, 0xA2, +0x52, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x23, 0xF3, 0x7E, 0xA2, 0x23, 0xF3, +0x5F, 0xA2, 0x73, 0xC4, 0x54, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, -0x40, 0xEA, 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, -0x09, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x1A, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, -0x12, 0x04, 0x07, 0x6A, 0x4F, 0xCB, 0x80, 0x18, -0x59, 0x5C, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x19, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, -0x12, 0x04, 0x08, 0x6A, 0x4F, 0xCB, 0x80, 0x18, -0x22, 0x5C, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, -0x05, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x8C, 0xEA, 0x43, 0xF2, -0x70, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF2, -0x94, 0x9C, 0xCC, 0xEB, 0x40, 0xF6, 0xA0, 0x35, -0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, -0x02, 0xF0, 0x00, 0x74, 0xAD, 0xEB, 0x01, 0x60, -0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, -0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xF5, 0x8C, 0x9C, 0x89, 0xE2, 0x60, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, -0xFF, 0x6B, 0x02, 0xF0, 0x00, 0x74, 0xAC, 0xEB, -0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xF5, 0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6C, 0xC2, 0xF5, 0x8C, 0x9C, 0x91, 0xE2, -0x00, 0x6D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF2, 0x90, 0x9C, 0xD4, 0x36, 0x40, 0xF6, -0x60, 0x33, 0x8C, 0xEE, 0x6D, 0xEE, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF2, 0x74, 0x9B, 0x6D, 0xEE, -0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, -0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF5, 0x68, 0x9B, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0x6C, 0x9B, -0x69, 0xE2, 0xC0, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x0F, 0xF5, 0x00, 0x6B, 0x78, 0xEE, 0xFF, 0xF7, -0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF2, 0x90, 0x9C, 0x40, 0xF6, 0xA0, 0x35, -0x12, 0xEB, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF2, 0x94, 0x9C, 0xAD, 0xEB, 0x8D, 0xEB, -0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, -0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, +0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0x40, 0xA4, 0x08, 0xD2, +0x08, 0x93, 0x1F, 0x6A, 0x4C, 0xEB, 0x08, 0xD3, +0x42, 0xA4, 0x61, 0xA4, 0x0B, 0xD2, 0x43, 0xA4, +0x84, 0xA4, 0x09, 0xD4, 0x08, 0x94, 0x08, 0x5C, +0x44, 0x60, 0x84, 0x31, 0x09, 0x94, 0x01, 0x2C, +0x28, 0x22, 0xFF, 0x68, 0x0C, 0xEA, 0x0C, 0xEB, +0xA2, 0x67, 0xC3, 0x67, 0x91, 0x67, 0x0C, 0xD2, +0x0D, 0xD3, 0x00, 0x18, 0x3E, 0xC9, 0x0B, 0x94, +0x09, 0x93, 0x41, 0x41, 0x0C, 0xEC, 0x0B, 0xD4, +0x0B, 0x96, 0x0C, 0xEA, 0x0C, 0xEB, 0x82, 0x67, +0xA3, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0xD2, +0x09, 0xD3, 0x00, 0x18, 0x3E, 0xC9, 0x40, 0xF4, +0x40, 0x98, 0x0C, 0x95, 0x0D, 0x96, 0x91, 0x67, +0x01, 0x6F, 0x40, 0xEA, 0x40, 0xF4, 0x40, 0x98, +0x0A, 0x94, 0x09, 0x95, 0x0B, 0x96, 0x02, 0x6F, +0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0x9D, 0xCE, +0x7D, 0x67, 0x53, 0xC3, 0x42, 0x32, 0x54, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x45, 0xE1, 0x43, 0xF3, 0x40, 0xA1, 0x55, 0xC3, +0x43, 0xF3, 0x41, 0xA1, 0x56, 0xC3, 0x43, 0xF3, +0x50, 0xA1, 0x57, 0xC3, 0x43, 0xF3, 0x51, 0xA1, +0x58, 0xC3, 0x9D, 0x67, 0x21, 0x6A, 0x72, 0xA4, +0x50, 0xC4, 0x07, 0x6A, 0x4F, 0xCC, 0x20, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x08, 0x93, 0x6D, 0xEA, +0x52, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x11, 0x97, +0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x1A, 0x6A, 0x7D, 0x67, +0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x07, 0x6A, +0x4F, 0xCB, 0x80, 0x18, 0xBC, 0x5C, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, +0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x19, 0x6A, 0x7D, 0x67, +0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x08, 0x6A, +0x4F, 0xCB, 0x80, 0x18, 0x85, 0x5C, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, +0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xFF, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x8C, 0xEA, 0x43, 0xF2, 0x60, 0x9B, 0x30, 0xF0, +0x20, 0x6C, 0x43, 0xF2, 0x84, 0x9C, 0xCC, 0xEB, +0x40, 0xF6, 0xA0, 0x35, 0x8D, 0xEB, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0xAD, 0xEB, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, 0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, 0x8C, 0x9C, 0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, 0x58, 0x9A, -0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, -0x5C, 0x9A, 0x40, 0x9A, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x8C, 0xEA, 0x01, 0x72, 0x06, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, 0x58, 0x9A, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0xFF, 0x6B, 0x02, 0xF0, +0x00, 0x74, 0xAC, 0xEB, 0x01, 0x60, 0x05, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, 0x88, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, +0x8C, 0x9C, 0x91, 0xE2, 0x00, 0x6D, 0xA0, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF2, 0x80, 0x9C, +0xD4, 0x36, 0x40, 0xF6, 0x60, 0x33, 0x8C, 0xEE, +0x6D, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, +0x64, 0x9B, 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6B, +0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, +0x68, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF5, 0x6C, 0x9B, 0x69, 0xE2, 0xC0, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x0F, 0xF5, 0x00, 0x6B, +0x78, 0xEE, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF2, 0x80, 0x9C, +0x40, 0xF6, 0xA0, 0x35, 0x12, 0xEB, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF2, 0x84, 0x9C, +0xAD, 0xEB, 0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, +0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, +0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xC2, 0xF5, 0x8C, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF5, 0x58, 0x9A, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF5, 0x5C, 0x9A, 0x40, 0x9A, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, +0x01, 0x72, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF5, 0x58, 0x9A, 0x40, 0x9A, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, 0x5C, 0x9A, 0x40, 0x9A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF5, 0x5C, 0x9A, 0x40, 0x9A, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF5, 0x54, 0xA2, -0x01, 0x72, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x60, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, -0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF4, 0xC0, 0x9B, 0xFD, 0x63, 0xE2, 0xF4, -0x00, 0x4B, 0x02, 0xD6, 0xC1, 0x9B, 0x64, 0xAB, -0xFF, 0x6A, 0x03, 0xD6, 0xDD, 0x67, 0x68, 0xCE, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, 0xD8, 0x9B, -0xC2, 0xF4, 0x18, 0x4B, 0x64, 0xA3, 0x4C, 0xEC, -0x00, 0xD6, 0xDD, 0x67, 0x64, 0xC6, 0x8D, 0xE6, -0xE0, 0xA3, 0x84, 0x33, 0x6D, 0xE6, 0xC4, 0xAB, -0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xED, 0xCC, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x0C, 0x2B, -0x5D, 0x67, 0x84, 0x34, 0x91, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xAC, 0xC2, 0xF5, 0x48, 0x9A, -0x49, 0xE3, 0x60, 0xA2, 0xFF, 0x6A, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0x6C, 0x9B, -0x79, 0xE6, 0x60, 0xA6, 0xE4, 0xED, 0x6C, 0xEA, -0xA7, 0x67, 0x4C, 0xED, 0x00, 0x6B, 0x01, 0x25, -0x01, 0x6B, 0xFF, 0x6A, 0x6C, 0xEA, 0x03, 0x63, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x88, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0xA0, 0x9C, 0x52, 0x9B, -0xAC, 0xEA, 0x53, 0xDB, 0x40, 0xDC, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0xD1, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x30, 0x9A, 0x30, 0xF0, +0x88, 0xF5, 0x54, 0xA2, 0x01, 0x72, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x70, 0x9A, +0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0xC0, 0x9B, +0xFD, 0x63, 0xE2, 0xF4, 0x00, 0x4B, 0x02, 0xD6, +0xC1, 0x9B, 0x64, 0xAB, 0xFF, 0x6A, 0x03, 0xD6, +0xDD, 0x67, 0x68, 0xCE, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF4, 0xD8, 0x9B, 0xC2, 0xF4, 0x18, 0x4B, +0x64, 0xA3, 0x4C, 0xEC, 0x00, 0xD6, 0xDD, 0x67, +0x64, 0xC6, 0x8D, 0xE6, 0xE0, 0xA3, 0x84, 0x33, +0x6D, 0xE6, 0xC4, 0xAB, 0x1F, 0xF7, 0x00, 0x6B, +0x4C, 0xED, 0xCC, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x0C, 0x2B, 0x5D, 0x67, 0x84, 0x34, +0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xAC, +0xC2, 0xF5, 0x48, 0x9A, 0x49, 0xE3, 0x60, 0xA2, +0xFF, 0x6A, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF5, 0x6C, 0x9B, 0x79, 0xE6, 0x60, 0xA6, +0xE4, 0xED, 0x6C, 0xEA, 0xA7, 0x67, 0x4C, 0xED, +0x00, 0x6B, 0x01, 0x25, 0x01, 0x6B, 0xFF, 0x6A, +0x6C, 0xEA, 0x03, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x98, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0xA0, 0x9C, 0x52, 0x9B, 0xAC, 0xEA, 0x53, 0xDB, +0x40, 0xDC, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0xD1, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, +0x20, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, +0x04, 0x4A, 0x40, 0x9A, 0x60, 0x99, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF2, 0x4C, 0x9A, 0x63, 0xF2, 0x14, 0x4C, +0x80, 0x9C, 0x00, 0x9A, 0x1A, 0x65, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0x9C, 0x63, 0xF2, 0x1C, 0x4A, +0x40, 0x9A, 0x01, 0xD4, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0x9A, 0xA5, 0xF7, 0xE8, 0x9C, 0x00, 0xD2, +0x44, 0x67, 0xA5, 0xF7, 0x08, 0x4A, 0xC1, 0x9A, +0x83, 0x9A, 0x6C, 0xEF, 0xAC, 0xEE, 0x01, 0x93, +0xA2, 0x9A, 0xE8, 0xDA, 0x6C, 0xEC, 0x0C, 0xED, +0x64, 0x9A, 0x00, 0x90, 0x8B, 0xDA, 0xC9, 0xDA, +0x0C, 0xEB, 0xAA, 0xDA, 0x6C, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF2, 0x04, 0x4A, 0x40, 0x9A, +0xE0, 0xD9, 0x18, 0x67, 0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x14, 0x4A, 0x40, 0x9A, -0x60, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x5C, 0x9A, -0x83, 0xF2, 0x04, 0x4C, 0x80, 0x9C, 0x00, 0x9A, -0x1A, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0x9C, -0x83, 0xF2, 0x0C, 0x4A, 0x40, 0x9A, 0x01, 0xD4, -0x30, 0xF0, 0x20, 0x6C, 0x40, 0x9A, 0x85, 0xF7, -0xE8, 0x9C, 0x00, 0xD2, 0x44, 0x67, 0x85, 0xF7, -0x08, 0x4A, 0xC1, 0x9A, 0x83, 0x9A, 0x6C, 0xEF, -0xAC, 0xEE, 0x01, 0x93, 0xA2, 0x9A, 0xE8, 0xDA, -0x6C, 0xEC, 0x0C, 0xED, 0x64, 0x9A, 0x00, 0x90, -0x8B, 0xDA, 0xC9, 0xDA, 0x0C, 0xEB, 0xAA, 0xDA, -0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x14, 0x4A, 0x40, 0x9A, 0xE0, 0xD9, 0x18, 0x67, -0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0x04, 0x4A, 0x40, 0x9A, 0xA0, 0xD8, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, 0x0C, 0x4C, -0x80, 0x9C, 0x60, 0xDC, 0x05, 0x91, 0x04, 0x90, -0x03, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD1, -0x00, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x04, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0xF8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x80, 0x98, 0xB4, 0x9A, 0x60, 0x9F, -0x20, 0x9E, 0x8C, 0xED, 0x95, 0x9A, 0xB7, 0xDA, -0x6C, 0xEC, 0x76, 0x9A, 0x98, 0xDA, 0x2C, 0xEB, -0x79, 0xDA, 0xA0, 0xD8, 0x80, 0xDF, 0x60, 0xDE, -0x01, 0x91, 0x00, 0x90, 0x01, 0x63, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x4C, 0x9A, -0xFF, 0x6B, 0x80, 0xA2, 0x03, 0x6A, 0x8C, 0xEA, -0x03, 0x72, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x66, 0xF0, 0x84, 0xA2, 0x01, 0x6A, 0x8C, 0xEA, -0x6C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x90, 0x9A, 0x80, 0x6D, 0xAB, 0xED, -0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x48, 0x9A, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x8F, 0xA2, -0x01, 0x6B, 0x8C, 0xEB, 0x07, 0x23, 0xA0, 0xF0, -0x64, 0x9A, 0x04, 0xF0, 0x00, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xA0, 0xD8, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6C, +0x63, 0xF2, 0x1C, 0x4C, 0x80, 0x9C, 0x60, 0xDC, +0x05, 0x91, 0x04, 0x90, 0x03, 0x63, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD1, 0x00, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF6, 0x08, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF2, 0xE8, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF2, 0xD0, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x80, 0x98, +0xB4, 0x9A, 0x60, 0x9F, 0x20, 0x9E, 0x8C, 0xED, +0x95, 0x9A, 0xB7, 0xDA, 0x6C, 0xEC, 0x76, 0x9A, +0x98, 0xDA, 0x2C, 0xEB, 0x79, 0xDA, 0xA0, 0xD8, +0x80, 0xDF, 0x60, 0xDE, 0x01, 0x91, 0x00, 0x90, +0x01, 0x63, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF2, 0x5C, 0x9A, 0xFF, 0x6B, 0x80, 0xA2, +0x03, 0x6A, 0x8C, 0xEA, 0x03, 0x72, 0x13, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF0, 0x84, 0xA2, +0x01, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x0B, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x80, 0x9A, +0x80, 0x6D, 0xAB, 0xED, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x6E, 0xCA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0x74, 0x0A, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x94, 0x9B, -0x01, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, -0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x48, 0x9A, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xA0, 0xF0, 0x8F, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, +0x07, 0x23, 0xA0, 0xF0, 0x64, 0x9A, 0x04, 0xF0, +0x00, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x7B, 0xCA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0x06, 0x74, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF2, 0x84, 0x9B, 0x01, 0x6D, 0x60, 0xA4, +0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF5, 0x90, 0x9C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, +0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xE2, 0xF5, 0x90, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, -0x63, 0xF3, 0x64, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x4C, 0x9A, +0x83, 0xF2, 0x5C, 0x9A, 0x60, 0xA2, 0x03, 0x6A, +0x6C, 0xEA, 0x03, 0x72, 0x08, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF2, 0x60, 0x9A, 0x7F, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x5C, 0x9A, 0x60, 0xA2, 0x03, 0x6A, 0x6C, 0xEA, 0x03, 0x72, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x70, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x4C, 0x9A, 0x60, 0xA2, 0x03, 0x6A, -0x6C, 0xEA, 0x03, 0x72, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x70, 0x9A, 0x7F, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0x60, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0x07, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x01, 0x6E, 0x12, 0xEC, -0x71, 0xE4, 0xC0, 0xF0, 0xBD, 0xA4, 0xCC, 0xED, -0x1D, 0x25, 0xC0, 0xF0, 0xBE, 0xA4, 0xE2, 0xF5, -0x68, 0x9B, 0xC0, 0xF0, 0x9D, 0xA4, 0x75, 0xE5, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, 0x60, 0x9B, -0xBC, 0x35, 0x21, 0x4D, 0x75, 0xE5, 0xE0, 0xA5, -0x9E, 0x33, 0x9A, 0x34, 0xCC, 0xEC, 0x78, 0x33, -0x9C, 0x34, 0x4C, 0xEF, 0x8D, 0xEB, 0xED, 0xEB, -0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, -0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x01, 0x15, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x29, 0xF3, 0x4E, 0xA2, 0x09, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x40, 0x9A, 0x66, 0x6B, -0x00, 0x6C, 0x60, 0xC2, 0x80, 0x18, 0x00, 0x00, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x6F, 0xC1, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x29, 0xF3, 0x74, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0xDB, 0xCC, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF2, 0x6C, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, -0xA0, 0xA3, 0x03, 0x6B, 0xAC, 0xEB, 0x03, 0x73, -0x13, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x66, 0xF0, -0xA4, 0xA3, 0x01, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, -0x0B, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, -0xB0, 0x9B, 0x80, 0x6E, 0xCB, 0xEE, 0x60, 0xA5, -0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA3, 0xF3, 0x6D, 0xA2, 0x8E, 0xEB, 0x11, 0x2B, -0xA3, 0xF3, 0x6C, 0xA2, 0x1F, 0x6D, 0x6A, 0x32, -0xAC, 0xEA, 0x47, 0xEC, 0x01, 0x6C, 0x8C, 0xEA, -0x08, 0x22, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, -0xDB, 0xCC, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0xFA, 0xCA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x8F, 0x19, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x26, 0xF0, 0x77, 0xA2, -0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, -0x6F, 0x00, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x26, 0xF0, 0x77, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x6F, 0x00, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0xA0, 0x1A, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x9D, 0xC5, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x9A, 0xC5, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x2F, 0x16, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x77, 0x15, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, 0x60, 0x9B, -0xFF, 0x6A, 0x4C, 0xEE, 0x6D, 0xE4, 0x08, 0x68, -0x80, 0xA3, 0xDB, 0xE0, 0x02, 0x67, 0x4C, 0xED, -0x07, 0xEE, 0xD0, 0x67, 0x4C, 0xEF, 0x04, 0xED, -0x4C, 0xEC, 0xCC, 0xEF, 0x0F, 0xE8, 0x8C, 0xE8, -0xE4, 0xED, 0xED, 0xE8, 0x4C, 0xE8, 0x00, 0xC3, -0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x40, 0x9A, -0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x4D, 0xE3, -0x40, 0xA3, 0xFF, 0x6C, 0x8C, 0xEE, 0x08, 0x6B, -0xDB, 0xE3, 0x8C, 0xED, 0x8C, 0xEA, 0x64, 0x67, -0x47, 0xED, 0x67, 0xEE, 0x6C, 0xEA, 0x8C, 0xEA, +0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x6D, 0xB8, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x01, 0x6E, 0x12, 0xEC, 0x71, 0xE4, 0xC0, 0xF0, +0xBD, 0xA4, 0xCC, 0xED, 0x1D, 0x25, 0xC0, 0xF0, +0xBE, 0xA4, 0xE2, 0xF5, 0x68, 0x9B, 0xC0, 0xF0, +0x9D, 0xA4, 0x75, 0xE5, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF7, 0x64, 0x9B, 0xBC, 0x35, 0x21, 0x4D, +0x75, 0xE5, 0xE0, 0xA5, 0x9E, 0x33, 0x9A, 0x34, +0xCC, 0xEC, 0x78, 0x33, 0x9C, 0x34, 0x4C, 0xEF, +0x8D, 0xEB, 0xED, 0xEB, 0x00, 0xF6, 0x60, 0x33, +0x00, 0xF6, 0x63, 0x33, 0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0x0B, 0x15, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF3, 0x4C, 0xA2, +0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x44, 0x9A, 0x66, 0x6B, 0x00, 0x6C, 0x60, 0xC2, +0x80, 0x18, 0x00, 0x00, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x6F, 0xC1, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF3, 0x70, 0xA2, +0x02, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0xEC, 0xCC, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0x99, 0x19, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF0, 0x77, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, +0x80, 0x00, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x46, 0xF0, 0x77, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x80, 0x18, 0x80, 0x00, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xAA, 0x1A, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xAA, 0xC5, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xA7, 0xC5, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0x39, 0x16, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0x81, 0x15, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x24, 0x67, 0x80, 0x18, +0x3C, 0x03, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x5C, 0x9A, 0xFF, 0x68, 0x0C, 0xE9, 0x60, 0xA2, +0x03, 0x6A, 0x6C, 0xEA, 0x03, 0x72, 0x13, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF0, 0x64, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0x0C, 0xEA, 0x0B, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x60, 0x9A, +0x80, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, +0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xA3, 0xF3, +0x69, 0xA2, 0x2E, 0xEB, 0x11, 0x2B, 0xA3, 0xF3, +0x68, 0xA2, 0x1F, 0x6C, 0x6A, 0x32, 0x8C, 0xEA, +0x47, 0xE9, 0x01, 0x6C, 0x8C, 0xEA, 0x08, 0x22, +0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xEC, 0xCC, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x2D, 0xCB, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF7, 0x64, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, +0x6D, 0xE4, 0x08, 0x68, 0x80, 0xA3, 0xDB, 0xE0, +0x02, 0x67, 0x4C, 0xED, 0x07, 0xEE, 0xD0, 0x67, +0x4C, 0xEF, 0x04, 0xED, 0x4C, 0xEC, 0xCC, 0xEF, +0x0F, 0xE8, 0x8C, 0xE8, 0xE4, 0xED, 0xED, 0xE8, +0x4C, 0xE8, 0x00, 0xC3, 0x01, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF7, 0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x8C, 0xEB, 0x4D, 0xE3, 0x40, 0xA3, 0xFF, 0x6C, +0x8C, 0xEE, 0x08, 0x6B, 0xDB, 0xE3, 0x8C, 0xED, +0x8C, 0xEA, 0x64, 0x67, 0x47, 0xED, 0x67, 0xEE, +0x6C, 0xEA, 0x8C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, +0x23, 0x6A, 0xA5, 0xF5, 0x19, 0x4A, 0x40, 0xDB, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, +0x58, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, +0x09, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF6, 0x7C, 0x9A, 0x20, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x00, 0x6A, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD9, 0x17, +0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0x94, 0x34, 0x4C, 0xED, 0x4C, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF2, 0x5C, 0x9A, 0x80, 0xC2, +0xA0, 0xC2, 0x20, 0xE8, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF2, 0x7C, 0x9B, 0x4C, 0xEC, +0x94, 0x34, 0x4C, 0xEC, 0x80, 0xC3, 0x60, 0xA3, +0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xED, +0xFF, 0x75, 0x4C, 0xEC, 0xCC, 0xEA, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x71, 0xE4, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0x71, 0xE4, 0x43, 0xF3, +0x70, 0xA4, 0xAC, 0xEA, 0xAF, 0xED, 0x6C, 0xED, +0xAD, 0xEA, 0x43, 0xF3, 0x50, 0xC4, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6B, +0x6C, 0xEC, 0x07, 0x6A, 0x6C, 0xED, 0x8C, 0xEA, +0x01, 0x68, 0xE6, 0x67, 0x04, 0xEA, 0xAB, 0xEE, +0x30, 0xF0, 0x20, 0x6A, 0xAD, 0xEE, 0x40, 0xF4, +0x40, 0x9A, 0x6C, 0xE8, 0xC0, 0xF7, 0xC3, 0x36, +0x8E, 0x34, 0x6C, 0xEF, 0xB0, 0x67, 0x0C, 0xEE, +0x6C, 0xEC, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, +0xFF, 0x74, 0xAC, 0xEA, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xE9, 0xF2, 0x47, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x23, 0xF3, 0xBF, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, +0xAC, 0xEC, 0x8D, 0xEA, 0x23, 0xF3, 0x5F, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x26, 0x67, +0x0C, 0xE9, 0x53, 0x71, 0x0C, 0xEC, 0x0C, 0xED, +0x09, 0x60, 0x06, 0x2C, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF2, 0x46, 0xA2, 0xAD, 0xEA, 0x0B, 0x10, +0x00, 0x18, 0xB3, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x23, 0xF3, 0x7F, 0xA2, +0x23, 0xF3, 0x5E, 0xA2, 0x6D, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF5, 0x78, 0x9B, 0x0C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF2, +0x24, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, +0x10, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x49, 0xF3, 0x51, 0xA2, 0xFF, 0x63, 0x05, 0x5A, +0x36, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, +0xE2, 0xF4, 0x0C, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, +0x40, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0x9A, +0x1A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, +0x40, 0x9A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x50, 0x9A, 0x0D, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x50, 0x9A, 0x40, 0x9A, +0x50, 0x32, 0x00, 0xF5, 0x42, 0x32, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x54, 0x9A, +0x40, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x00, 0xD2, 0x00, 0x93, 0xE0, 0xF3, 0x08, 0x6A, +0x60, 0x33, 0x68, 0x33, 0x5B, 0xEB, 0x01, 0x2A, +0xE5, 0xE8, 0x12, 0xEA, 0x01, 0x10, 0x66, 0x6A, +0x00, 0xD2, 0x00, 0x92, 0x01, 0x63, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD0, 0x15, 0x2C, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x02, 0xF6, 0x84, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x5D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xA3, 0xF3, 0xA8, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0xA3, 0xF3, 0x68, 0xC2, 0xA3, 0xF3, +0xCC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF3, +0x10, 0x4A, 0x00, 0x6D, 0x18, 0x6F, 0xF8, 0xED, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x12, 0xEF, 0x6D, 0xE7, 0xA3, 0xF3, 0x1C, 0xA3, +0x01, 0x6F, 0xEC, 0xE8, 0x23, 0x20, 0xA3, 0xF3, +0x7C, 0xA3, 0x66, 0x33, 0xEC, 0xEB, 0xFF, 0x6F, +0xEC, 0xEB, 0x1C, 0x23, 0xFF, 0xF7, 0x78, 0x9A, +0x9B, 0xEB, 0x01, 0x2C, 0xE5, 0xE8, 0x12, 0xEB, +0xFF, 0xF7, 0x7C, 0xDA, 0x10, 0xEF, 0x03, 0x27, +0x01, 0x4B, 0xFF, 0xF7, 0x7C, 0xDA, 0x60, 0x9A, +0x78, 0xEE, 0x12, 0xEB, 0x9B, 0xEB, 0x01, 0x2C, +0xE5, 0xE8, 0x12, 0xEB, 0x60, 0xDA, 0xFF, 0xF7, +0x7C, 0x9A, 0x04, 0x2B, 0x01, 0x6F, 0xFF, 0xF7, +0xFC, 0xDA, 0x60, 0xDA, 0x01, 0x4D, 0x0A, 0x75, +0x18, 0x4A, 0xCC, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xA3, 0xF3, 0x70, 0x9A, +0xA3, 0xF3, 0x8C, 0xDA, 0x7B, 0xEC, 0x01, 0x2B, +0xE5, 0xE8, 0xA3, 0xF3, 0x88, 0xA2, 0x12, 0xEB, +0xA3, 0xF3, 0x74, 0xDA, 0x78, 0x67, 0xA3, 0xF3, +0x78, 0xDA, 0x02, 0x6B, 0x8D, 0xEB, 0xA3, 0xF3, +0x68, 0xC2, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, +0xA3, 0xF3, 0x48, 0xA0, 0x03, 0x69, 0x4C, 0xE9, +0x00, 0x6A, 0x26, 0x29, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xFF, 0x6E, 0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x48, 0x9A, 0x49, 0xF3, 0x10, 0x4C, +0x00, 0x6D, 0x05, 0x4E, 0x40, 0xEA, 0x66, 0x6A, +0xA3, 0xF3, 0x88, 0xA0, 0xA3, 0xF3, 0x4C, 0xD8, +0xA3, 0xF3, 0x54, 0xD8, 0x80, 0x4A, 0x9D, 0x4A, +0x8C, 0xEA, 0x04, 0x6C, 0x01, 0x6B, 0x8D, 0xEA, +0x6D, 0xEA, 0xA3, 0xF3, 0x48, 0xC0, 0xA3, 0xF3, +0x70, 0xD8, 0xA3, 0xF3, 0x29, 0xC0, 0x43, 0x67, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, +0x08, 0x48, 0xA3, 0xF3, 0x88, 0xA0, 0x01, 0x6B, +0x00, 0x6A, 0x8C, 0xEB, 0x22, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x58, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0xA3, 0xF3, 0x48, 0xC0, 0x00, 0x18, 0xDB, 0xCB, +0x04, 0xD2, 0x04, 0x94, 0x00, 0x18, 0xFC, 0xCB, +0xA3, 0xF3, 0x68, 0xA0, 0x02, 0x6A, 0xA3, 0xF3, +0xD0, 0x98, 0x6D, 0xEA, 0xA3, 0xF3, 0x48, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, +0xFF, 0x6C, 0x6D, 0x4C, 0x01, 0x6D, 0x40, 0xEA, +0x01, 0x6A, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0xA3, 0xF3, 0xA8, 0xA3, +0x02, 0x6C, 0x00, 0x6A, 0xAC, 0xEC, 0x0C, 0x24, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x58, 0x9A, +0x00, 0x6C, 0x80, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, +0xAC, 0xEA, 0xA3, 0xF3, 0x48, 0xC3, 0x01, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x18, 0x6C, +0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, +0x08, 0x4B, 0x01, 0x4A, 0x0A, 0x72, 0x12, 0xEC, +0x71, 0xE4, 0xA3, 0xF3, 0xBC, 0xA4, 0x02, 0x6B, +0x6B, 0xEB, 0xAC, 0xEB, 0xA3, 0xF3, 0x7C, 0xC4, +0xEE, 0x61, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x49, 0xF3, 0x50, 0xA2, 0x01, 0x6B, 0x4C, 0xEB, +0x00, 0x6A, 0x1C, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x69, 0xF3, 0x14, 0x4A, 0x00, 0x6B, 0xA0, 0x9A, +0x8E, 0xED, 0x0F, 0x2D, 0x18, 0x6E, 0xD8, 0xEB, +0x30, 0xF0, 0x20, 0x6D, 0xA5, 0xF7, 0x08, 0x4D, +0x12, 0xEE, 0xB9, 0xE6, 0xA3, 0xF3, 0xFC, 0xA6, +0x02, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0xA3, 0xF3, +0xBC, 0xC6, 0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, +0xEA, 0x61, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x5D, 0x67, 0x0A, 0xD4, 0x20, 0xF0, 0x98, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xD5, 0x0C, 0xD6, +0xA5, 0xF7, 0x08, 0x4A, 0xA3, 0xF3, 0xA8, 0xA2, +0x01, 0x6B, 0x00, 0xF6, 0xE0, 0x31, 0xAC, 0xEB, +0x00, 0xF6, 0x23, 0x31, 0x80, 0xF0, 0x0A, 0x23, +0x22, 0x24, 0x01, 0x74, 0x80, 0xF0, 0x06, 0x61, +0x0A, 0x93, 0x80, 0xF0, 0x03, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF2, 0x7C, 0x9B, 0xC3, 0xEB, +0x7D, 0x61, 0x7F, 0x71, 0x7B, 0x60, 0xFF, 0xF7, +0x1F, 0x51, 0x78, 0x61, 0xA3, 0xF3, 0x0C, 0x9A, +0x1B, 0xEE, 0x01, 0x28, 0xE5, 0xE8, 0x10, 0xEA, +0x12, 0xE8, 0x02, 0x22, 0x01, 0x48, 0x05, 0x10, +0x04, 0x28, 0x01, 0x6A, 0x04, 0xD2, 0x02, 0x67, +0x21, 0x10, 0x01, 0x6B, 0x1E, 0x10, 0x0A, 0x94, +0x65, 0x24, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, +0x7C, 0x9B, 0x0C, 0x95, 0xA3, 0xEB, 0x5E, 0x61, +0x7F, 0x71, 0x5C, 0x60, 0xFF, 0xF7, 0x1F, 0x51, +0x59, 0x61, 0xA3, 0xF3, 0x10, 0x9A, 0x1B, 0xED, +0x01, 0x28, 0xE5, 0xE8, 0x10, 0xEA, 0x12, 0xE8, +0x02, 0x22, 0x01, 0x48, 0x05, 0x10, 0x04, 0x28, +0x00, 0x6A, 0x04, 0xD2, 0x01, 0x68, 0x02, 0x10, +0x00, 0x6B, 0x04, 0xD3, 0x0A, 0x94, 0x00, 0x18, +0x85, 0xCC, 0x00, 0x6C, 0xFF, 0x6E, 0xA4, 0x67, +0xCC, 0xED, 0x1D, 0x65, 0x18, 0x6D, 0xB8, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x01, 0x6D, 0x12, 0xEA, 0x69, 0xE2, 0xA3, 0xF3, +0x5C, 0xA2, 0xAC, 0xEA, 0xCC, 0xEA, 0x2F, 0x2A, +0xD8, 0x67, 0x18, 0x6F, 0xF8, 0xEE, 0x04, 0x96, +0xC4, 0x36, 0x04, 0xD6, 0x03, 0x6E, 0xCB, 0xEE, +0x12, 0xEC, 0x71, 0xE4, 0xA3, 0xF3, 0xFC, 0xA4, +0xEC, 0xEE, 0x04, 0x97, 0xED, 0xEE, 0xA3, 0xF3, +0xDC, 0xC4, 0x0A, 0x96, 0xC3, 0xF3, 0xCC, 0xDC, +0x0B, 0x97, 0xC3, 0xF3, 0xF0, 0xDC, 0x0C, 0x96, +0x18, 0x6F, 0xC3, 0xF3, 0xC0, 0xDC, 0xD8, 0x67, +0x01, 0x4E, 0xF8, 0xEE, 0x12, 0xEE, 0x6D, 0xE6, +0xA3, 0xF3, 0x50, 0xDB, 0xA3, 0xF3, 0x0C, 0xDB, +0xA3, 0xF3, 0x5D, 0xC4, 0xA3, 0xF3, 0x5C, 0xA4, +0xA3, 0xF3, 0x3E, 0xC4, 0x4D, 0xED, 0xA3, 0xF3, +0xBC, 0xC4, 0x01, 0x6A, 0x04, 0x10, 0x01, 0x4C, +0x0A, 0x74, 0xBC, 0x61, 0x00, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF3, +0x10, 0x4A, 0x00, 0x6C, 0x2C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x69, 0xF3, 0x10, 0x4A, 0x00, 0x6B, +0x18, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0xA5, 0xF7, 0x08, 0x4C, 0x12, 0xED, 0x91, 0xE5, +0xA3, 0xF3, 0xDC, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, +0x08, 0x26, 0xA3, 0xF3, 0x9C, 0xA4, 0x86, 0x34, +0xAC, 0xEC, 0x03, 0x24, 0x80, 0x9A, 0x01, 0x4C, +0x80, 0xDA, 0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, +0xE7, 0x61, 0x00, 0x18, 0xDB, 0xCB, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0x93, 0x49, 0xF3, +0x54, 0x9A, 0x6E, 0xEA, 0x52, 0x22, 0x04, 0x94, +0x00, 0x18, 0xFC, 0xCB, 0x4E, 0x10, 0x18, 0x6D, +0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, +0x08, 0x4B, 0x12, 0xED, 0x6D, 0xE5, 0xA3, 0xF3, +0xDC, 0xA3, 0x01, 0x6D, 0xAC, 0xEE, 0x0A, 0x26, +0xA3, 0xF3, 0x7C, 0xA3, 0x66, 0x33, 0xAC, 0xEB, +0xFF, 0x6D, 0xAC, 0xEB, 0x03, 0x2B, 0x60, 0x9A, +0x01, 0x4B, 0x60, 0xDA, 0x01, 0x4C, 0x0A, 0x74, +0x18, 0x4A, 0xE5, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xA3, 0xF3, 0x69, 0xA2, +0xFF, 0x73, 0x2B, 0x61, 0xA3, 0xF3, 0x78, 0x9A, +0x01, 0x4B, 0xA3, 0xF3, 0x78, 0xDA, 0xA3, 0xF3, +0x54, 0x9A, 0x4E, 0xEB, 0x22, 0x2B, 0x30, 0xF0, +0x20, 0x6A, 0x69, 0xF3, 0x10, 0x4A, 0x18, 0x6D, +0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF7, +0x08, 0x4C, 0x12, 0xED, 0x91, 0xE5, 0xA3, 0xF3, +0xDC, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, +0xA3, 0xF3, 0x9C, 0xA4, 0x86, 0x34, 0xAC, 0xEC, +0x03, 0x24, 0x80, 0x9A, 0x01, 0x4C, 0x80, 0xDA, +0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, 0xE7, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x78, 0x67, 0x69, 0xF3, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x69, 0xF3, 0x05, 0x48, +0x00, 0x69, 0x18, 0x6A, 0x58, 0xE9, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0x12, 0xEA, +0x69, 0xE2, 0xA3, 0xF3, 0x9C, 0xA2, 0x01, 0x6B, +0x8C, 0xEB, 0x27, 0x23, 0x00, 0xF0, 0x8B, 0x98, +0x00, 0xF0, 0x67, 0x98, 0x63, 0xEC, 0x21, 0x61, +0x61, 0x80, 0x81, 0x43, 0x04, 0xD4, 0x07, 0x2C, +0x00, 0xF0, 0x4F, 0x98, 0x00, 0xF0, 0x93, 0x98, +0x40, 0xEA, 0x04, 0x92, 0x14, 0x10, 0x80, 0xA0, +0x01, 0x4C, 0x80, 0xC0, 0x80, 0xA0, 0x82, 0xEB, +0x08, 0x60, 0xA3, 0xF3, 0x9C, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xA3, 0xF3, 0x7C, 0xC2, +0x08, 0x10, 0x00, 0xF0, 0x4F, 0x98, 0x00, 0xF0, +0x93, 0x98, 0x40, 0xEA, 0x00, 0x6A, 0x00, 0xF0, +0x4B, 0xD8, 0x01, 0x49, 0x0A, 0x71, 0x18, 0x48, +0xC8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, +0x44, 0xED, 0x00, 0x6C, 0xA2, 0x67, 0x80, 0x18, +0xBF, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, +0xA2, 0x67, 0x80, 0x18, 0xF0, 0x5D, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xDD, 0x63, 0x45, 0x62, +0x44, 0xD1, 0x43, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x69, 0xE3, 0xF2, 0x48, 0x9A, 0x8C, 0xE9, +0x30, 0x31, 0x49, 0xE1, 0x40, 0xD2, 0x40, 0xA2, +0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, +0x00, 0x52, 0x40, 0x60, 0x01, 0x6A, 0x7D, 0x67, +0x4B, 0xEA, 0x54, 0xC3, 0x0F, 0x6A, 0x56, 0xC3, +0x10, 0x6A, 0x57, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF7, 0x5C, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0x06, 0x04, 0x49, 0xE1, 0x40, 0x9A, 0x04, 0x05, +0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, +0x4C, 0x9A, 0x07, 0x04, 0x04, 0x05, 0x49, 0xE1, +0x40, 0x9A, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, +0x4C, 0x98, 0x40, 0xEA, 0x40, 0x93, 0x08, 0x04, +0x04, 0x05, 0x40, 0x9B, 0x04, 0x6E, 0x04, 0xD2, +0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF2, 0x50, 0x9A, 0x09, 0x04, +0x04, 0x05, 0x45, 0xE1, 0x40, 0x99, 0x04, 0x6E, +0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, +0x05, 0x04, 0x40, 0xEA, 0x45, 0x97, 0x44, 0x91, +0x43, 0x90, 0x23, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF7, 0x9C, 0x9C, +0x50, 0x33, 0x91, 0xE3, 0x80, 0x9C, 0x30, 0xF0, +0x20, 0x6C, 0xE3, 0xF2, 0x8C, 0x9C, 0x8D, 0xE3, +0x82, 0x67, 0x60, 0x9B, 0x00, 0x18, 0x67, 0xCD, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF2, 0x54, 0x9A, 0xE3, 0xF2, 0x78, 0x9B, +0x00, 0xA2, 0x20, 0xA3, 0xFF, 0x6A, 0x4C, 0xE8, +0x4C, 0xE9, 0x2A, 0xE8, 0x35, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF7, 0x5C, 0x9A, 0x10, 0x33, +0x49, 0xE3, 0x40, 0xA2, 0xFF, 0x6B, 0x6C, 0xEA, +0x56, 0x32, 0x6C, 0xEA, 0x02, 0x72, 0x0E, 0x60, +0x03, 0x5A, 0x02, 0x60, 0x06, 0x22, 0x1A, 0x10, +0x04, 0x72, 0x0D, 0x60, 0x06, 0x72, 0x10, 0x60, +0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x4C, 0x9A, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x54, 0x9A, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x58, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x5C, 0x9A, +0x90, 0x67, 0x40, 0xEA, 0x01, 0x48, 0x7F, 0x6A, +0x4C, 0xE8, 0x0A, 0xE9, 0xD0, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF2, 0x54, 0x9A, 0x20, 0xC2, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0xFF, 0x6B, 0xE2, 0x67, 0x6C, 0xEE, +0x6C, 0xEF, 0x1E, 0x65, 0x87, 0x67, 0x03, 0x6E, +0xCC, 0xEC, 0x80, 0xF0, 0x10, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0xE3, 0xF2, 0x1C, 0x9C, 0x08, 0x69, +0x42, 0x32, 0x80, 0xA0, 0x52, 0x32, 0x6C, 0xEA, +0x6C, 0xEC, 0x2D, 0xEC, 0x6C, 0xEC, 0x80, 0xC0, +0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, 0x80, 0x9C, +0xCC, 0xEA, 0xE0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF3, 0x84, 0x9C, 0x40, 0xC4, 0x0F, 0x6A, +0x98, 0x67, 0x8C, 0xEA, 0x74, 0x22, 0x01, 0x6C, +0x4C, 0xEC, 0x06, 0x24, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF3, 0x88, 0x9C, 0xAC, 0xEB, 0x60, 0xC4, +0x02, 0x6B, 0x4C, 0xEB, 0x08, 0x23, 0xFF, 0x6C, +0xA2, 0x33, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF3, 0x8C, 0x9C, 0x60, 0xC4, 0x04, 0x6B, +0x4C, 0xEB, 0x09, 0x23, 0xA2, 0x33, 0xFF, 0x6C, +0x62, 0x33, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF3, 0x90, 0x9C, 0x60, 0xC4, 0x4E, 0x33, +0x07, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, +0x74, 0x9B, 0x00, 0xF6, 0xA2, 0x35, 0xA0, 0xC3, +0x20, 0x6B, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF3, 0x58, 0x9A, 0x64, 0x68, 0x60, 0xC2, +0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0xFF, 0x48, 0x40, 0xEA, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x21, 0x28, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF7, 0x94, 0x9C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, +0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, +0x60, 0xA1, 0xD0, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x7C, 0x9A, +0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x16, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, +0x38, 0x9A, 0x20, 0x6A, 0x60, 0xA1, 0x6C, 0xEA, +0xCC, 0x2A, 0x60, 0xA1, 0xF0, 0x6A, 0x6C, 0xEA, +0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, +0x7C, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0xC2, 0x67, 0xFF, 0x6C, 0x8C, 0xEE, +0x03, 0x6D, 0x66, 0x67, 0xAC, 0xEB, 0x4B, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0xFC, 0x9B, +0x08, 0x68, 0x42, 0x32, 0x60, 0xA7, 0x52, 0x32, +0x8C, 0xEA, 0x8C, 0xEB, 0x0D, 0xEB, 0x8C, 0xEB, +0x60, 0xC7, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, +0x60, 0x9B, 0xAC, 0xEA, 0x64, 0x68, 0xC0, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x64, 0x9B, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, +0x58, 0x9A, 0x30, 0x6B, 0x60, 0xC2, 0x2E, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0xFF, 0x48, 0x40, 0xEA, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0x23, 0x28, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xE2, 0xF7, 0x94, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x60, 0xA1, +0xCF, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF2, 0x7C, 0x9A, 0xF7, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, +0x4B, 0xEA, 0x19, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF3, 0x38, 0x9A, 0x20, 0x6A, 0x60, 0xA1, +0x6C, 0xEA, 0xCA, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF3, 0x48, 0x9A, 0xEF, 0x6B, 0x40, 0x9A, +0x80, 0xA1, 0x8C, 0xEB, 0x60, 0xC1, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF2, 0x9C, 0x9B, 0xF7, 0x6B, +0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF3, 0xBC, 0x9A, 0xE0, 0xF3, 0x10, 0x6C, +0x0F, 0x6E, 0x00, 0x18, 0xC7, 0xCD, 0xE0, 0xF3, +0x0C, 0x6C, 0x00, 0x18, 0x1B, 0xCE, 0xFF, 0x6B, +0x4C, 0xEB, 0x0B, 0x73, 0x0B, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF3, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x23, 0xF3, 0x84, 0x9C, 0x40, 0x9B, +0x8C, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x63, 0xF3, 0xD4, 0xA3, 0x40, 0x6A, 0x82, 0x67, +0xCC, 0xEC, 0xFF, 0x6D, 0x29, 0x2C, 0x4D, 0xEE, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x88, 0x9A, +0x63, 0xF3, 0xD4, 0xC3, 0x01, 0x6F, 0x40, 0xA4, +0xAC, 0xEA, 0xED, 0xEA, 0xAC, 0xEA, 0x40, 0xC4, +0x83, 0xF3, 0x8B, 0xA3, 0x02, 0x6A, 0x8C, 0xEA, +0xAC, 0xEA, 0x16, 0x2A, 0x80, 0x6C, 0x8B, 0xEC, +0xCC, 0xEC, 0xAC, 0xEC, 0x11, 0x24, 0x41, 0x6C, +0x8B, 0xEC, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xCC, 0xEC, 0x00, 0xF3, 0x4C, 0x9A, 0x63, 0xF3, +0x94, 0xC3, 0x10, 0xF0, 0x23, 0x6C, 0xA7, 0xF1, +0x05, 0x4C, 0x00, 0x6D, 0x64, 0x6E, 0x40, 0xEA, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0xF5, 0x54, 0xA2, 0x01, 0x72, 0x0C, 0x61, +0x01, 0x6C, 0x10, 0x6D, 0x00, 0x18, 0xEE, 0xC4, +0x04, 0x6B, 0x4D, 0xEB, 0xFF, 0x6E, 0x01, 0x6C, +0x10, 0x6D, 0x6C, 0xEE, 0x00, 0x18, 0xDD, 0xC4, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0xF5, 0x54, 0xA2, 0x01, 0x72, 0x0A, 0x61, +0x01, 0x6C, 0x10, 0x6D, 0x00, 0x18, 0xEE, 0xC4, +0xFB, 0x6E, 0x01, 0x6C, 0x10, 0x6D, 0x4C, 0xEE, +0x00, 0x18, 0xDD, 0xC4, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, +0x0F, 0x5A, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0x34, 0x02, 0xF5, 0x00, 0x4B, 0x8D, 0xE3, +0x60, 0x9B, 0x00, 0xEB, 0x00, 0x6A, 0x20, 0xE8, +0xD0, 0xF4, 0x64, 0x42, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF3, 0x7C, 0x9B, 0x2F, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF3, 0x60, 0x9B, 0x2A, 0x10, +0x80, 0xF4, 0x64, 0x42, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF3, 0x64, 0x9B, 0x1F, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF3, 0x68, 0x9B, 0x1A, 0x10, +0xC0, 0xF4, 0x68, 0x42, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF3, 0x6C, 0x9B, 0x0F, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF3, 0x70, 0x9B, 0x0A, 0x10, +0x70, 0xF4, 0x68, 0x42, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF3, 0x74, 0x9B, 0x69, 0xE2, 0x60, 0xAA, +0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, 0x78, 0x9B, +0x69, 0xE2, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, -0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x65, 0xF5, -0x15, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF2, 0x48, 0x9A, 0x40, 0x9A, +0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x27, 0xF3, +0x05, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, 0x09, 0x70, 0x13, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, 0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD9, 0x17, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x4C, 0xED, -0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, -0x4C, 0x9A, 0x80, 0xC2, 0xA0, 0xC2, 0x20, 0xE8, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, -0x6C, 0x9B, 0x4C, 0xEC, 0x94, 0x34, 0x4C, 0xEC, -0x80, 0xC3, 0x60, 0xA3, 0x6C, 0xEA, 0x20, 0xE8, -0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, -0xCC, 0xEA, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x71, 0xE4, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x71, 0xE4, 0x43, 0xF3, 0x70, 0xA4, 0xAC, 0xEA, -0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0x43, 0xF3, -0x50, 0xC4, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x6B, 0x6C, 0xEC, 0x07, 0x6A, -0x6C, 0xED, 0x8C, 0xEA, 0x01, 0x68, 0xE6, 0x67, -0x04, 0xEA, 0xAB, 0xEE, 0x30, 0xF0, 0x20, 0x6A, -0xAD, 0xEE, 0x40, 0xF4, 0x40, 0x9A, 0x6C, 0xE8, -0xC0, 0xF7, 0xC3, 0x36, 0x8E, 0x34, 0x6C, 0xEF, -0xB0, 0x67, 0x0C, 0xEE, 0x6C, 0xEC, 0x40, 0xEA, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFF, 0x6A, 0x4C, 0xEC, 0xFF, 0x74, 0xAC, 0xEA, -0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF2, -0x47, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x23, 0xF3, 0xBF, 0xA3, -0x8C, 0xEA, 0x8F, 0xEC, 0xAC, 0xEC, 0x8D, 0xEA, -0x23, 0xF3, 0x5F, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0xF5, 0x54, 0xA2, +0x03, 0x72, 0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF2, 0x9C, 0x9A, 0xFF, 0x6A, 0x60, 0xA4, +0x6C, 0xEA, 0x10, 0x6B, 0x4C, 0xEB, 0x03, 0x23, +0xEF, 0x6B, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x68, 0x26, 0x67, 0x0C, 0xE9, 0x53, 0x71, -0x0C, 0xEC, 0x0C, 0xED, 0x09, 0x60, 0x06, 0x2C, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x46, 0xA2, -0xAD, 0xEA, 0x0B, 0x10, 0x00, 0x18, 0xA2, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x23, 0xF3, 0x7F, 0xA2, 0x23, 0xF3, 0x5E, 0xA2, -0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, -0x78, 0x9B, 0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xC9, 0xF2, 0x24, 0xC2, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA0, 0xF0, 0x64, 0x9A, 0x10, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF3, 0x55, 0xA2, -0xFF, 0x63, 0x05, 0x5A, 0x36, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x48, 0x32, 0xE2, 0xF4, 0x0C, 0x4B, -0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF5, 0x40, 0x9A, 0xFF, 0xF7, -0x1F, 0x6B, 0x40, 0x9A, 0x1A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF5, 0x40, 0x9A, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x40, 0x9A, -0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x40, 0x9A, 0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, -0x42, 0x32, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x44, 0x9A, 0x40, 0x9A, 0xE1, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x00, 0xD2, 0x00, 0x93, -0xE0, 0xF3, 0x08, 0x6A, 0x60, 0x33, 0x68, 0x33, -0x5B, 0xEB, 0x01, 0x2A, 0xE5, 0xE8, 0x12, 0xEA, -0x01, 0x10, 0x66, 0x6A, 0x00, 0xD2, 0x00, 0x92, -0x01, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD0, -0x15, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF6, -0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, -0x64, 0xDA, 0x5D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xA3, 0xF3, 0xAC, 0xA2, -0x03, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0xA3, 0xF3, -0x6C, 0xC2, 0xA3, 0xF3, 0xD0, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x49, 0xF3, 0x14, 0x4A, 0x00, 0x6D, -0x18, 0x6F, 0xF8, 0xED, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x12, 0xEF, 0x6D, 0xE7, -0xC3, 0xF3, 0x00, 0xA3, 0x01, 0x6F, 0xEC, 0xE8, -0x23, 0x20, 0xC3, 0xF3, 0x60, 0xA3, 0x66, 0x33, -0xEC, 0xEB, 0xFF, 0x6F, 0xEC, 0xEB, 0x1C, 0x23, -0xFF, 0xF7, 0x78, 0x9A, 0x9B, 0xEB, 0x01, 0x2C, -0xE5, 0xE8, 0x12, 0xEB, 0xFF, 0xF7, 0x7C, 0xDA, -0x10, 0xEF, 0x03, 0x27, 0x01, 0x4B, 0xFF, 0xF7, -0x7C, 0xDA, 0x60, 0x9A, 0x78, 0xEE, 0x12, 0xEB, -0x9B, 0xEB, 0x01, 0x2C, 0xE5, 0xE8, 0x12, 0xEB, -0x60, 0xDA, 0xFF, 0xF7, 0x7C, 0x9A, 0x04, 0x2B, -0x01, 0x6F, 0xFF, 0xF7, 0xFC, 0xDA, 0x60, 0xDA, -0x01, 0x4D, 0x0A, 0x75, 0x18, 0x4A, 0xCC, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA3, 0xF3, 0x74, 0x9A, 0xA3, 0xF3, 0x90, 0xDA, -0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0xA3, 0xF3, -0x8C, 0xA2, 0x12, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, -0x78, 0x67, 0xA3, 0xF3, 0x7C, 0xDA, 0x02, 0x6B, -0x8D, 0xEB, 0xA3, 0xF3, 0x6C, 0xC2, 0x01, 0x90, -0x01, 0x63, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x85, 0xF7, 0x08, 0x48, 0xA3, 0xF3, 0x4C, 0xA0, -0x03, 0x69, 0x4C, 0xE9, 0x00, 0x6A, 0x26, 0x29, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x48, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xFF, 0x6E, 0x20, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x29, 0xF3, 0x14, 0x4C, 0x00, 0x6D, 0x05, 0x4E, -0x40, 0xEA, 0x66, 0x6A, 0xA3, 0xF3, 0x8C, 0xA0, -0xA3, 0xF3, 0x50, 0xD8, 0xA3, 0xF3, 0x58, 0xD8, -0x80, 0x4A, 0x9D, 0x4A, 0x8C, 0xEA, 0x04, 0x6C, -0x01, 0x6B, 0x8D, 0xEA, 0x6D, 0xEA, 0xA3, 0xF3, -0x4C, 0xC0, 0xA3, 0xF3, 0x74, 0xD8, 0xA3, 0xF3, -0x2D, 0xC0, 0x43, 0x67, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, 0xA3, 0xF3, -0x8C, 0xA0, 0x01, 0x6B, 0x00, 0x6A, 0x8C, 0xEB, -0x22, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x03, 0x6A, -0x4B, 0xEA, 0x8C, 0xEA, 0xA3, 0xF3, 0x4C, 0xC0, -0x00, 0x18, 0xCA, 0xCB, 0x04, 0xD2, 0x04, 0x94, -0x00, 0x18, 0xEB, 0xCB, 0xA3, 0xF3, 0x6C, 0xA0, -0x02, 0x6A, 0xA3, 0xF3, 0xD4, 0x98, 0x6D, 0xEA, -0xA3, 0xF3, 0x4C, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, 0x6D, 0x4C, -0x01, 0x6D, 0x40, 0xEA, 0x01, 0x6A, 0x07, 0x97, -0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0xA3, 0xF3, 0xAC, 0xA3, 0x02, 0x6C, 0x00, 0x6A, -0xAC, 0xEC, 0x0C, 0x24, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x48, 0x9A, 0x00, 0x6C, 0x80, 0xC2, -0x03, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0xA3, 0xF3, -0x4C, 0xC3, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0x00, 0x6A, 0x18, 0x6C, 0x98, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x01, 0x4A, -0x0A, 0x72, 0x12, 0xEC, 0x71, 0xE4, 0xC3, 0xF3, -0xA0, 0xA4, 0x02, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, -0xC3, 0xF3, 0x60, 0xC4, 0xEE, 0x61, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF3, 0x54, 0xA2, -0x01, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, 0x1C, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF3, 0x18, 0x4A, -0x00, 0x6B, 0xA0, 0x9A, 0x8E, 0xED, 0x0F, 0x2D, -0x18, 0x6E, 0xD8, 0xEB, 0x30, 0xF0, 0x20, 0x6D, -0x85, 0xF7, 0x08, 0x4D, 0x12, 0xEE, 0xB9, 0xE6, -0xC3, 0xF3, 0xE0, 0xA6, 0x02, 0x6D, 0xAB, 0xED, -0xEC, 0xED, 0xC3, 0xF3, 0xA0, 0xC6, 0x01, 0x4B, -0x0A, 0x73, 0x18, 0x4A, 0xEA, 0x61, 0x01, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x5D, 0x67, 0x0A, 0xD4, -0x20, 0xF0, 0x98, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x0B, 0xD5, 0x0C, 0xD6, 0x85, 0xF7, 0x08, 0x4A, -0xA3, 0xF3, 0xAC, 0xA2, 0x01, 0x6B, 0x00, 0xF6, -0xE0, 0x31, 0xAC, 0xEB, 0x00, 0xF6, 0x23, 0x31, -0x80, 0xF0, 0x09, 0x23, 0x21, 0x24, 0x01, 0x74, -0x80, 0xF0, 0x05, 0x61, 0x0A, 0x93, 0x80, 0xF0, -0x02, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, -0x6C, 0x9B, 0xC3, 0xEB, 0x7C, 0x61, 0x7F, 0x71, -0x7A, 0x60, 0xFF, 0xF7, 0x1F, 0x51, 0x77, 0x61, -0xA3, 0xF3, 0x10, 0x9A, 0x1B, 0xEE, 0x01, 0x28, -0xE5, 0xE8, 0x10, 0xEA, 0x12, 0xE8, 0x02, 0x22, -0x01, 0x48, 0x04, 0x10, 0x03, 0x28, 0x01, 0x68, -0x50, 0x67, 0x1D, 0x10, 0x01, 0x6B, 0x1E, 0x10, -0x0A, 0x94, 0x65, 0x24, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x6C, 0x9B, 0x0C, 0x95, 0xA3, 0xEB, -0x5E, 0x61, 0x7F, 0x71, 0x5C, 0x60, 0xFF, 0xF7, -0x1F, 0x51, 0x59, 0x61, 0xA3, 0xF3, 0x14, 0x9A, -0x1B, 0xED, 0x01, 0x28, 0xE5, 0xE8, 0x10, 0xEA, -0x12, 0xE8, 0x02, 0x22, 0x01, 0x48, 0x05, 0x10, -0x04, 0x28, 0x01, 0x68, 0x00, 0x6A, 0x04, 0xD2, -0x02, 0x10, 0x00, 0x6B, 0x04, 0xD3, 0x0A, 0x94, -0x00, 0x18, 0x74, 0xCC, 0x00, 0x6C, 0xFF, 0x6E, -0xA4, 0x67, 0xCC, 0xED, 0x1D, 0x65, 0x18, 0x6D, -0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, -0x08, 0x4B, 0x01, 0x6D, 0x12, 0xEA, 0x69, 0xE2, -0xC3, 0xF3, 0x40, 0xA2, 0xAC, 0xEA, 0xCC, 0xEA, -0x2F, 0x2A, 0xD8, 0x67, 0x18, 0x6F, 0xF8, 0xEE, -0x04, 0x96, 0xC4, 0x36, 0x04, 0xD6, 0x03, 0x6E, -0xCB, 0xEE, 0x12, 0xEC, 0x71, 0xE4, 0xC3, 0xF3, -0xE0, 0xA4, 0xEC, 0xEE, 0x04, 0x97, 0xED, 0xEE, -0xC3, 0xF3, 0xC0, 0xC4, 0x0A, 0x96, 0xC3, 0xF3, -0xD0, 0xDC, 0x0B, 0x97, 0xC3, 0xF3, 0xF4, 0xDC, -0x0C, 0x96, 0x18, 0x6F, 0xC3, 0xF3, 0xC4, 0xDC, -0xD8, 0x67, 0x01, 0x4E, 0xF8, 0xEE, 0x12, 0xEE, -0x6D, 0xE6, 0xA3, 0xF3, 0x54, 0xDB, 0xA3, 0xF3, -0x10, 0xDB, 0xC3, 0xF3, 0x41, 0xC4, 0xC3, 0xF3, -0x40, 0xA4, 0xC3, 0xF3, 0x22, 0xC4, 0x4D, 0xED, -0xC3, 0xF3, 0xA0, 0xC4, 0x01, 0x6A, 0x04, 0x10, -0x01, 0x4C, 0x0A, 0x74, 0xBC, 0x61, 0x00, 0x6A, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x06, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x49, 0xF3, 0x14, 0x4A, 0x00, 0x6C, -0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF3, -0x14, 0x4A, 0x00, 0x6B, 0x18, 0x6D, 0xB8, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF7, 0x08, 0x4C, -0x12, 0xED, 0x91, 0xE5, 0xC3, 0xF3, 0xC0, 0xA4, -0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, 0xC3, 0xF3, -0x80, 0xA4, 0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, -0x80, 0x9A, 0x01, 0x4C, 0x80, 0xDA, 0x01, 0x4B, -0x0A, 0x73, 0x18, 0x4A, 0xE7, 0x61, 0x00, 0x18, -0xCA, 0xCB, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0x93, 0x29, 0xF3, 0x58, 0x9A, 0x6E, 0xEA, -0x52, 0x22, 0x04, 0x94, 0x00, 0x18, 0xEB, 0xCB, -0x4E, 0x10, 0x18, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x12, 0xED, -0x6D, 0xE5, 0xC3, 0xF3, 0xC0, 0xA3, 0x01, 0x6D, -0xAC, 0xEE, 0x0A, 0x26, 0xC3, 0xF3, 0x60, 0xA3, -0x66, 0x33, 0xAC, 0xEB, 0xFF, 0x6D, 0xAC, 0xEB, -0x03, 0x2B, 0x60, 0x9A, 0x01, 0x4B, 0x60, 0xDA, -0x01, 0x4C, 0x0A, 0x74, 0x18, 0x4A, 0xE5, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA3, 0xF3, 0x6D, 0xA2, 0xFF, 0x73, 0x2B, 0x61, -0xA3, 0xF3, 0x7C, 0x9A, 0x01, 0x4B, 0xA3, 0xF3, -0x7C, 0xDA, 0xA3, 0xF3, 0x58, 0x9A, 0x4E, 0xEB, -0x22, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF3, -0x14, 0x4A, 0x18, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x85, 0xF7, 0x08, 0x4C, 0x12, 0xED, -0x91, 0xE5, 0xC3, 0xF3, 0xC0, 0xA4, 0x01, 0x6D, -0xAC, 0xEE, 0x08, 0x26, 0xC3, 0xF3, 0x80, 0xA4, -0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, 0x80, 0x9A, -0x01, 0x4C, 0x80, 0xDA, 0x01, 0x4B, 0x0A, 0x73, -0x18, 0x4A, 0xE7, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x78, 0x67, 0x49, 0xF3, 0x64, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, -0x64, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x49, 0xF3, 0x09, 0x48, 0x00, 0x69, 0x18, 0x6A, -0x58, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, -0x08, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0xC3, 0xF3, -0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x27, 0x23, -0x00, 0xF0, 0x8B, 0x98, 0x00, 0xF0, 0x67, 0x98, -0x63, 0xEC, 0x21, 0x61, 0x61, 0x80, 0x81, 0x43, -0x04, 0xD4, 0x07, 0x2C, 0x00, 0xF0, 0x4F, 0x98, -0x00, 0xF0, 0x93, 0x98, 0x40, 0xEA, 0x04, 0x92, -0x14, 0x10, 0x80, 0xA0, 0x01, 0x4C, 0x80, 0xC0, -0x80, 0xA0, 0x82, 0xEB, 0x08, 0x60, 0xC3, 0xF3, -0x80, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xC3, 0xF3, 0x60, 0xC2, 0x08, 0x10, 0x00, 0xF0, -0x4F, 0x98, 0x00, 0xF0, 0x93, 0x98, 0x40, 0xEA, -0x00, 0x6A, 0x00, 0xF0, 0x4B, 0xD8, 0x01, 0x49, -0x0A, 0x71, 0x18, 0x48, 0xC8, 0x61, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, -0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, -0xA2, 0x67, 0x80, 0x18, 0x5C, 0x5D, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, -0x44, 0xED, 0x00, 0x6C, 0xA2, 0x67, 0x80, 0x18, -0x8D, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xDD, 0x63, 0x45, 0x62, 0x44, 0xD1, 0x43, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x69, 0xE3, 0xF2, -0x58, 0x9A, 0x8C, 0xE9, 0x30, 0x31, 0x49, 0xE1, -0x40, 0xD2, 0x40, 0xA2, 0x00, 0xF6, 0x40, 0x32, -0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, 0x40, 0x60, -0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x54, 0xC3, -0x0F, 0x6A, 0x56, 0xC3, 0x10, 0x6A, 0x57, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0x58, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0x06, 0x04, 0x49, 0xE1, -0x40, 0x9A, 0x04, 0x05, 0x04, 0x6E, 0x04, 0xD2, -0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x5C, 0x9A, 0x07, 0x04, -0x04, 0x05, 0x49, 0xE1, 0x40, 0x9A, 0x04, 0x6E, -0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, -0x40, 0x93, 0x08, 0x04, 0x04, 0x05, 0x40, 0x9B, -0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x40, 0x9A, 0x09, 0x04, 0x04, 0x05, 0x45, 0xE1, -0x40, 0x99, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, -0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x40, 0x9A, 0x05, 0x04, 0x40, 0xEA, -0x45, 0x97, 0x44, 0x91, 0x43, 0x90, 0x23, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x82, 0xF7, 0x98, 0x9C, 0x50, 0x33, 0x91, 0xE3, -0x80, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, -0x9C, 0x9C, 0x8D, 0xE3, 0x82, 0x67, 0x60, 0x9B, -0x00, 0x18, 0x56, 0xCD, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x44, 0x9A, -0x03, 0xF3, 0x68, 0x9B, 0x00, 0xA2, 0x20, 0xA3, -0xFF, 0x6A, 0x4C, 0xE8, 0x4C, 0xE9, 0x2A, 0xE8, -0x35, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, -0x58, 0x9A, 0x10, 0x33, 0x49, 0xE3, 0x40, 0xA2, -0xFF, 0x6B, 0x6C, 0xEA, 0x56, 0x32, 0x6C, 0xEA, -0x02, 0x72, 0x0E, 0x60, 0x03, 0x5A, 0x02, 0x60, -0x06, 0x22, 0x1A, 0x10, 0x04, 0x72, 0x0D, 0x60, -0x06, 0x72, 0x10, 0x60, 0x15, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x4C, 0x9A, 0x0E, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x54, 0x9A, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, -0x01, 0x48, 0x7F, 0x6A, 0x4C, 0xE8, 0x0A, 0xE9, -0xD0, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x44, 0x9A, 0x20, 0xC2, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0xFF, 0x6B, -0xE2, 0x67, 0x6C, 0xEE, 0x6C, 0xEF, 0x1E, 0x65, -0x87, 0x67, 0x03, 0x6E, 0xCC, 0xEC, 0x80, 0xF0, -0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, -0x0C, 0x9C, 0x08, 0x69, 0x42, 0x32, 0x80, 0xA0, -0x52, 0x32, 0x6C, 0xEA, 0x6C, 0xEC, 0x2D, 0xEC, -0x6C, 0xEC, 0x80, 0xC0, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF3, 0x90, 0x9C, 0xCC, 0xEA, 0xE0, 0xC4, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, 0x94, 0x9C, -0x40, 0xC4, 0x0F, 0x6A, 0x98, 0x67, 0x8C, 0xEA, -0x74, 0x22, 0x01, 0x6C, 0x4C, 0xEC, 0x06, 0x24, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, 0x98, 0x9C, -0xAC, 0xEB, 0x60, 0xC4, 0x02, 0x6B, 0x4C, 0xEB, -0x08, 0x23, 0xFF, 0x6C, 0xA2, 0x33, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, 0x9C, 0x9C, -0x60, 0xC4, 0x04, 0x6B, 0x4C, 0xEB, 0x09, 0x23, -0xA2, 0x33, 0xFF, 0x6C, 0x62, 0x33, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF3, 0x80, 0x9C, -0x60, 0xC4, 0x4E, 0x33, 0x07, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF3, 0x64, 0x9B, 0x00, 0xF6, -0xA2, 0x35, 0xA0, 0xC3, 0x20, 0x6B, 0x4D, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x48, 0x9A, -0x64, 0x68, 0x60, 0xC2, 0x2C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0xFF, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE8, 0x21, 0x28, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF0, 0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, -0x63, 0xF3, 0x64, 0xDA, 0x60, 0xA1, 0xD0, 0x6A, -0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF3, 0x6C, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x16, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF3, 0x28, 0x9A, 0x20, 0x6A, -0x60, 0xA1, 0x6C, 0xEA, 0xCC, 0x2A, 0x60, 0xA1, -0xF0, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0x6C, 0x9A, 0xF7, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, -0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0xC2, 0x67, -0xFF, 0x6C, 0x8C, 0xEE, 0x03, 0x6D, 0x66, 0x67, -0xAC, 0xEB, 0x4B, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF3, 0xEC, 0x9B, 0x08, 0x68, 0x42, 0x32, -0x60, 0xA7, 0x52, 0x32, 0x8C, 0xEA, 0x8C, 0xEB, -0x0D, 0xEB, 0x8C, 0xEB, 0x60, 0xC7, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF3, 0x70, 0x9B, 0xAC, 0xEA, -0x64, 0x68, 0xC0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF3, 0x74, 0x9B, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF3, 0x48, 0x9A, 0x30, 0x6B, -0x60, 0xC2, 0x2E, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0xFF, 0x48, -0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, -0x23, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF0, -0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, -0x64, 0xDA, 0x60, 0xA1, 0xCF, 0x6A, 0x6C, 0xEA, -0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x6C, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x01, 0x6A, 0x4B, 0xEA, 0x19, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x28, 0x9A, -0x20, 0x6A, 0x60, 0xA1, 0x6C, 0xEA, 0xCA, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, 0x58, 0x9A, -0xEF, 0x6B, 0x40, 0x9A, 0x80, 0xA1, 0x8C, 0xEB, -0x60, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, -0x8C, 0x9B, 0xF7, 0x6B, 0xA0, 0xA4, 0xAC, 0xEB, -0x60, 0xC4, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0xAC, 0x9A, -0xE0, 0xF3, 0x10, 0x6C, 0x0F, 0x6E, 0x00, 0x18, -0xB6, 0xCD, 0xE0, 0xF3, 0x0C, 0x6C, 0x00, 0x18, -0x0A, 0xCE, 0xFF, 0x6B, 0x4C, 0xEB, 0x0B, 0x73, -0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, -0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF3, -0x94, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x78, 0x9A, -0xFF, 0x6C, 0x20, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x40, 0xA3, -0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF5, 0x54, 0xA2, -0x01, 0x72, 0x0C, 0x61, 0x01, 0x6C, 0x10, 0x6D, -0x00, 0x18, 0xE1, 0xC4, 0x04, 0x6B, 0x4D, 0xEB, -0xFF, 0x6E, 0x01, 0x6C, 0x10, 0x6D, 0x6C, 0xEE, -0x00, 0x18, 0xD0, 0xC4, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF5, 0x54, 0xA2, -0x01, 0x72, 0x0A, 0x61, 0x01, 0x6C, 0x10, 0x6D, -0x00, 0x18, 0xE1, 0xC4, 0xFB, 0x6E, 0x01, 0x6C, -0x10, 0x6D, 0x4C, 0xEE, 0x00, 0x18, 0xD0, 0xC4, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6A, 0x8C, 0xEA, 0x0F, 0x5A, 0x08, 0x60, -0x30, 0xF0, 0x20, 0x6B, 0x48, 0x34, 0x02, 0xF5, -0x00, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, -0x00, 0x6A, 0x20, 0xE8, 0xD0, 0xF4, 0x64, 0x42, -0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, 0x6C, 0x9B, -0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, -0x70, 0x9B, 0x2A, 0x10, 0x80, 0xF4, 0x64, 0x42, -0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, 0x74, 0x9B, -0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, -0x78, 0x9B, 0x1A, 0x10, 0xC0, 0xF4, 0x68, 0x42, -0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, 0x7C, 0x9B, -0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x60, 0x9B, 0x0A, 0x10, 0x70, 0xF4, 0x68, 0x42, -0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x0A, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x64, 0x9B, -0x69, 0xE2, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, -0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x68, 0x9B, 0x69, 0xE2, 0x60, 0xAA, -0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0x87, 0xF2, 0x11, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, -0x48, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, -0x09, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x78, 0x9A, 0x20, 0x6C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, -0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x00, 0x6A, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD9, 0x17, -0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x68, 0xF5, 0x54, 0xA2, 0x03, 0x72, 0x0D, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, 0x8C, 0x9A, -0xFF, 0x6A, 0x60, 0xA4, 0x6C, 0xEA, 0x10, 0x6B, -0x4C, 0xEB, 0x03, 0x23, 0xEF, 0x6B, 0x4C, 0xEB, -0x60, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x27, 0x67, -0x4C, 0xE9, 0x6F, 0x41, 0x4C, 0xEB, 0x04, 0x67, -0x02, 0x5B, 0x4C, 0xE8, 0x4C, 0xED, 0x4C, 0xEE, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x86, 0xCB, -0x10, 0x58, 0x55, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x08, 0x33, 0x22, 0xF5, 0x1C, 0x4A, 0x69, 0xE2, -0x40, 0x9A, 0x00, 0xEA, 0xD0, 0xF4, 0x44, 0x40, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, 0x6C, 0x9A, -0x34, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, -0x70, 0x9A, 0x2F, 0x10, 0x80, 0xF4, 0x44, 0x40, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, 0x74, 0x9A, -0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, -0x78, 0x9A, 0x1F, 0x10, 0xC0, 0xF4, 0x48, 0x40, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, 0x7C, 0x9A, -0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x60, 0x9A, 0x0F, 0x10, 0x70, 0xF4, 0x48, 0x40, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x64, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x6D, 0xE0, 0x41, 0xE0, 0x43, 0xF3, -0x80, 0xA0, 0x43, 0xF3, 0x50, 0xA0, 0x8D, 0xEA, -0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xC9, 0xF2, 0x25, 0xC2, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x54, 0x9A, 0x63, 0xF3, 0x78, 0x9B, -0x40, 0xAA, 0x60, 0xAB, 0x6E, 0xEA, 0xFF, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x01, 0x5A, 0x58, 0x67, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x27, 0xF4, 0x15, 0x4A, 0x40, 0xDB, 0x01, 0x4A, -0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF5, 0x90, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x47, 0xF4, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xDC, 0x85, 0xF7, 0x08, 0x4B, 0xB3, 0x9B, -0x04, 0x25, 0x00, 0x6D, 0x01, 0x4A, 0xB3, 0xDB, -0x40, 0xDC, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x67, 0xF4, 0x15, 0x4A, 0x40, 0xDB, 0x01, 0x4A, -0x40, 0xDB, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x87, 0xF4, 0x0D, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x7C, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF1, 0x50, 0x9A, 0x80, 0x9B, -0xA4, 0x67, 0x4C, 0xED, 0x4E, 0xED, 0x02, 0x25, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x5C, 0x9A, -0x01, 0x6B, 0x40, 0x9A, 0x6C, 0xEA, 0x60, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x40, 0x9A, -0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0x44, 0x9A, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF3, 0x48, 0x9A, 0xC0, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF3, 0x4C, 0x9A, 0xA0, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x50, 0x9A, -0x80, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0x54, 0x9A, 0x40, 0x9A, 0x41, 0x22, 0x30, 0xF0, -0x20, 0x69, 0x83, 0xF3, 0x38, 0x99, 0x60, 0xD9, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x68, 0x9B, -0x00, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF7, -0x60, 0x9B, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF3, 0x7C, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF3, 0x60, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x64, 0x9B, -0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, -0x68, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF0, -0x9C, 0x9C, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x78, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x5C, 0xB9, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x77, 0xF0, 0x24, 0x6C, 0xC0, 0xF1, -0x04, 0x4C, 0xAE, 0xB8, 0x00, 0x65, 0xA0, 0xDC, -0x9A, 0xB8, 0x00, 0x65, 0xBB, 0xB8, 0x00, 0x65, +0xFF, 0x6A, 0x27, 0x67, 0x4C, 0xE9, 0x6F, 0x41, +0x4C, 0xEB, 0x04, 0x67, 0x02, 0x5B, 0x4C, 0xE8, +0x4C, 0xED, 0x4C, 0xEE, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x97, 0xCB, 0x10, 0x58, 0x55, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0x33, 0x22, 0xF5, +0x1C, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0xD0, 0xF4, 0x44, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF3, 0x7C, 0x9A, 0x34, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF3, 0x60, 0x9A, 0x2F, 0x10, +0x80, 0xF4, 0x44, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF3, 0x64, 0x9A, 0x24, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF3, 0x68, 0x9A, 0x1F, 0x10, +0xC0, 0xF4, 0x48, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF3, 0x6C, 0x9A, 0x14, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF3, 0x70, 0x9A, 0x0F, 0x10, +0x70, 0xF4, 0x48, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF3, 0x74, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF3, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x6D, 0xE0, +0x41, 0xE0, 0x43, 0xF3, 0x80, 0xA0, 0x43, 0xF3, +0x50, 0xA0, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF2, +0x25, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x44, 0x9A, +0x63, 0xF3, 0x68, 0x9B, 0x40, 0xAA, 0x60, 0xAB, +0x6E, 0xEA, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0x87, 0xF4, 0x0E, 0x4A, -0x40, 0xDB, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x10, 0xF0, 0x23, 0x6A, 0xC7, 0xF4, 0x09, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x90, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0xE7, 0xF4, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xDC, 0xA5, 0xF7, +0x08, 0x4B, 0xB3, 0x9B, 0x04, 0x25, 0x00, 0x6D, +0x01, 0x4A, 0xB3, 0xDB, 0x40, 0xDC, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0xA7, 0xF5, 0x1D, 0x4A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF7, -0x64, 0x9A, 0x63, 0x23, 0x01, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x9C, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0xE5, 0xF7, 0x44, 0x9A, 0x02, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x9D, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF7, 0x44, 0x9A, -0x04, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x1D, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF7, -0x44, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x9E, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0xE5, 0xF7, 0x44, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x9F, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0xE5, 0xF7, 0x44, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xA0, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF7, 0x44, 0x9A, -0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xF2, 0xCA, 0x30, 0xF0, 0x20, 0x6B, 0xE5, 0xF7, -0x64, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xE4, 0xCA, 0x30, 0xF0, -0x20, 0x6B, 0xE5, 0xF7, 0x64, 0x9B, 0x04, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xA1, 0xCA, 0x30, 0xF0, 0x20, 0x6B, 0xE5, 0xF7, -0x64, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xA2, 0xCA, 0x30, 0xF0, -0x20, 0x6B, 0xE5, 0xF7, 0x64, 0x9B, 0x10, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xA3, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF7, -0x68, 0x9A, 0x14, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF6, 0x48, 0x9A, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0xA7, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF6, 0x5C, 0x9A, -0xE5, 0xF7, 0x68, 0x9B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0xE0, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0xE5, 0xF7, 0x6C, 0x9A, 0x4C, 0x23, 0x01, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, -0xA4, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF7, -0x4C, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0xA5, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0xE5, 0xF7, 0x4C, 0x9A, 0x04, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, -0xA4, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF7, -0x4C, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x02, 0x6C, 0x00, 0x18, 0xA5, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0xE5, 0xF7, 0x4C, 0x9A, 0x10, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0xA4, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF7, -0x4C, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x03, 0x6C, 0x00, 0x18, 0xA5, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0xE5, 0xF7, 0x4C, 0x9A, 0x40, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, -0xA4, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF7, -0x4C, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x04, 0x6C, 0x00, 0x18, 0xA5, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x00, 0x6B, -0x77, 0xDA, 0x78, 0xDA, 0x79, 0xDA, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0xA7, 0xF5, 0x1E, 0x4A, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x10, 0xF0, 0x23, 0x6A, 0x07, 0xF5, 0x09, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x27, 0xF5, 0x01, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, +0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, +0x44, 0x9A, 0x80, 0x9B, 0xA4, 0x67, 0x4C, 0xED, +0x4E, 0xED, 0x02, 0x25, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF3, 0x4C, 0x9A, 0x01, 0x6B, 0x40, 0x9A, +0x6C, 0xEA, 0x60, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF3, 0x50, 0x9A, 0x00, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF3, 0x54, 0x9A, 0xE0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x58, 0x9A, +0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, +0x5C, 0x9A, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x40, 0x9A, 0x80, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0x44, 0x9A, 0x40, 0x9A, +0x41, 0x22, 0x30, 0xF0, 0x20, 0x69, 0x83, 0xF3, +0x28, 0x99, 0x60, 0xD9, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF6, 0x6C, 0x9B, 0x00, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF7, 0x64, 0x9B, 0xE0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x6C, 0x9B, +0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, +0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x74, 0x9B, 0x80, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0x78, 0x9B, 0x30, 0xF0, +0x20, 0x6C, 0x83, 0xF0, 0x90, 0x9C, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x5C, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x7D, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x77, 0xF0, +0x24, 0x6C, 0xC0, 0xF1, 0x04, 0x4C, 0xAE, 0xB8, +0x00, 0x65, 0xA0, 0xDC, 0x9A, 0xB8, 0x00, 0x65, +0xBB, 0xB8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, +0x27, 0xF5, 0x02, 0x4A, 0x40, 0xDB, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0xA7, 0xF7, 0x01, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA5, 0xF7, 0x68, 0x9A, 0xE0, 0xF0, -0x14, 0x23, 0x02, 0x6A, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x7E, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0xA5, 0xF7, 0x48, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x3F, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xA5, 0xF7, 0x48, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x3B, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x48, 0x9A, -0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x83, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, -0x48, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x05, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x48, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, -0x68, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x37, 0xCB, 0x30, 0xF0, -0x20, 0x6B, 0xA5, 0xF7, 0x68, 0x9B, 0x00, 0xF2, +0x47, 0xF6, 0x11, 0x4A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0xF0, 0x64, 0x9A, 0x63, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xA9, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF0, +0x44, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xAA, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x06, 0xF0, 0x44, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x07, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0xF0, 0x44, 0x9A, 0x08, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xAB, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF0, 0x44, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xAC, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF0, +0x44, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xAD, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x06, 0xF0, 0x44, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xFF, 0xCA, 0x30, 0xF0, +0x20, 0x6B, 0x06, 0xF0, 0x64, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xF1, 0xCA, 0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF0, +0x64, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xAE, 0xCA, 0x30, 0xF0, +0x20, 0x6B, 0x06, 0xF0, 0x64, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x33, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF3, 0x4C, 0x9A, 0xA5, 0xF7, -0x68, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF6, 0x48, 0x9A, 0x6C, 0xEA, -0x04, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xBB, 0xCA, -0x03, 0x10, 0x00, 0x6C, 0x00, 0x18, 0xB2, 0xCA, +0xAF, 0xCA, 0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF0, +0x64, 0x9B, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xB0, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0xF0, 0x68, 0x9A, 0x14, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x4C, 0x9A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xB4, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF3, 0x50, 0x9A, 0xA5, 0xF7, 0x68, 0x9B, -0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x5C, 0x9A, 0x6C, 0xEA, 0x04, 0x22, -0x01, 0x6C, 0x00, 0x18, 0xBB, 0xCA, 0x03, 0x10, -0x01, 0x6C, 0x00, 0x18, 0xB2, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, -0x54, 0x9A, 0xA5, 0xF7, 0x68, 0x9B, 0x6C, 0xEA, -0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, -0x40, 0x9A, 0x6C, 0xEA, 0x04, 0x22, 0x02, 0x6C, -0x00, 0x18, 0xBB, 0xCA, 0x03, 0x10, 0x02, 0x6C, -0x00, 0x18, 0xB2, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x58, 0x9A, -0xA5, 0xF7, 0x68, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x40, 0x9A, -0x6C, 0xEA, 0x04, 0x22, 0x03, 0x6C, 0x00, 0x18, -0xBB, 0xCA, 0x03, 0x10, 0x03, 0x6C, 0x00, 0x18, -0xB2, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF3, 0x5C, 0x9A, 0xA5, 0xF7, -0x68, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x6C, 0xEA, -0x04, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xBB, 0xCA, -0x03, 0x10, 0x04, 0x6C, 0x00, 0x18, 0xB2, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF3, 0x40, 0x9A, 0xA5, 0xF7, 0x68, 0x9B, -0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF6, 0x54, 0x9A, 0x6C, 0xEA, 0x04, 0x22, -0x05, 0x6C, 0x00, 0x18, 0xBB, 0xCA, 0x03, 0x10, -0x05, 0x6C, 0x00, 0x18, 0xB2, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, -0x44, 0x9A, 0xA5, 0xF7, 0x68, 0x9B, 0x6C, 0xEA, -0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, -0x40, 0x9A, 0x6C, 0xEA, 0x04, 0x22, 0x06, 0x6C, -0x00, 0x18, 0xBB, 0xCA, 0x03, 0x10, 0x06, 0x6C, -0x00, 0x18, 0xB2, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x48, 0x9A, -0xA5, 0xF7, 0x68, 0x9B, 0x6C, 0xEA, 0x09, 0x22, -0x00, 0x53, 0x04, 0x60, 0x07, 0x6C, 0x00, 0x18, -0xBB, 0xCA, 0x03, 0x10, 0x07, 0x6C, 0x00, 0x18, -0xB2, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, -0x6C, 0x9A, 0x12, 0x23, 0x08, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x2F, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF5, 0x50, 0x9A, 0xA5, 0xF7, 0x6C, 0x9B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x85, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x70, 0x9A, -0x78, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0x18, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xA5, 0xF7, 0x50, 0x9A, 0x02, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x10, 0x6C, 0x00, 0x18, -0x8F, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, -0x50, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x20, 0x6C, 0x00, 0x18, 0x8F, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0xA5, 0xF7, 0x50, 0x9A, 0x08, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x30, 0x6C, 0x00, 0x18, -0x8F, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, -0x50, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x40, 0x6C, 0x00, 0x18, 0x8F, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0xA5, 0xF7, 0x50, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x50, 0x6C, 0x00, 0x18, -0x8F, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, -0x50, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x60, 0x6C, 0x00, 0x18, 0x8F, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0xA5, 0xF7, 0x50, 0x9A, 0x80, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x70, 0x6C, 0x00, 0x18, -0x8F, 0xCA, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, -0x70, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x18, 0xCB, -0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x70, 0x9B, -0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x02, 0x6C, 0x00, 0x18, 0x18, 0xCB, 0x30, 0xF0, -0x20, 0x6B, 0xA5, 0xF7, 0x70, 0x9B, 0x00, 0xF4, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, -0x00, 0x18, 0x18, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0xA5, 0xF7, 0x70, 0x9B, 0x01, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, -0x18, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, -0x74, 0x9A, 0x78, 0x23, 0x01, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x28, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x54, 0x9A, -0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x10, 0x6C, -0x00, 0x18, 0x21, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0xA5, 0xF7, 0x54, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x20, 0x6C, 0x00, 0x18, 0x21, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x54, 0x9A, -0x08, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x30, 0x6C, -0x00, 0x18, 0x21, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0xA5, 0xF7, 0x54, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x40, 0x6C, 0x00, 0x18, 0x21, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x54, 0x9A, -0x20, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x50, 0x6C, -0x00, 0x18, 0x21, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0xA5, 0xF7, 0x54, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x60, 0x6C, 0x00, 0x18, 0x21, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x54, 0x9A, -0x80, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x70, 0x6C, -0x00, 0x18, 0x21, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0xA5, 0xF7, 0x74, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0xA2, 0xF6, 0x40, 0x9A, 0x06, 0xF0, 0x68, 0x9B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xED, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF0, 0x6C, 0x9A, +0x4C, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0xB1, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0xF0, 0x4C, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, -0x28, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, -0x74, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x28, 0xCB, -0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x74, 0x9B, -0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x03, 0x6C, 0x00, 0x18, 0x28, 0xCB, 0x30, 0xF0, -0x20, 0x6B, 0xA5, 0xF7, 0x74, 0x9B, 0x01, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, -0x00, 0x18, 0x28, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x00, 0x6B, 0x68, 0xDA, -0x69, 0xDA, 0x6A, 0xDA, 0x6B, 0xDA, 0x6C, 0xDA, +0xB2, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF0, +0x4C, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x02, 0x6C, 0x00, 0x18, 0xB1, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0xF0, 0x4C, 0x9A, 0x08, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0xB2, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF0, +0x4C, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0xB1, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0xF0, 0x4C, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0xB2, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF0, +0x4C, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0xB1, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0xF0, 0x4C, 0x9A, 0x80, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, +0xB2, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x00, 0x6B, 0x77, 0xDA, 0x78, 0xDA, +0x79, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, +0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x47, 0xF6, +0x12, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0xA7, 0xF7, 0x02, 0x4A, -0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0B, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0xAC, 0x9B, -0x30, 0xF0, 0x20, 0x6E, 0xC3, 0xF3, 0xD0, 0x9E, -0x60, 0x9D, 0xCC, 0xEB, 0x0C, 0x10, 0x01, 0x72, -0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, -0xAC, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0xC2, 0xF6, -0xC8, 0x9E, 0x60, 0x9D, 0xCD, 0xEB, 0x60, 0xDD, -0x05, 0x5C, 0x60, 0xF1, 0x1A, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x88, 0x34, 0x62, 0xF5, 0x1C, 0x4B, -0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x6C, 0x9A, -0x7F, 0x6A, 0x80, 0xA3, 0x12, 0x10, 0x01, 0x72, -0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x6C, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x40, 0xA3, 0x80, 0x4D, 0xC0, 0x4D, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0x02, 0x72, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x6C, 0x9A, 0x5B, 0x10, 0x03, 0x72, -0x40, 0xF1, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x6C, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, -0x40, 0xA3, 0x8C, 0xEA, 0xE9, 0x17, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x74, 0x9A, -0xFB, 0x6A, 0x80, 0xA3, 0xE2, 0x17, 0x01, 0x72, -0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x8C, 0x9A, 0xFF, 0x6A, 0x40, 0x6D, 0x60, 0xA4, +0x10, 0xF0, 0x23, 0x6A, 0x28, 0xF0, 0x15, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, +0x68, 0x9A, 0xE0, 0xF0, 0x14, 0x23, 0x02, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x8B, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, 0x48, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x29, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, +0x48, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x25, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF7, 0x48, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x90, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0xC5, 0xF7, 0x48, 0x9A, 0x80, 0x6B, +0x6C, 0xEA, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x48, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC5, 0xF7, 0x68, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x21, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0xC5, 0xF7, +0x68, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x1D, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, +0x5C, 0x9A, 0xC5, 0xF7, 0x68, 0x9B, 0x6C, 0xEA, +0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, +0x4C, 0x9A, 0x6C, 0xEA, 0x04, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xC8, 0xCA, 0x03, 0x10, 0x00, 0x6C, +0x00, 0x18, 0xBF, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x40, 0x9A, +0xC5, 0xF7, 0x68, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x40, 0x9A, +0x6C, 0xEA, 0x04, 0x22, 0x01, 0x6C, 0x00, 0x18, +0xC8, 0xCA, 0x03, 0x10, 0x01, 0x6C, 0x00, 0x18, +0xBF, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF3, 0x44, 0x9A, 0xC5, 0xF7, +0x68, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF6, 0x44, 0x9A, 0x6C, 0xEA, +0x04, 0x22, 0x02, 0x6C, 0x00, 0x18, 0xC8, 0xCA, +0x03, 0x10, 0x02, 0x6C, 0x00, 0x18, 0xBF, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF3, 0x48, 0x9A, 0xC5, 0xF7, 0x68, 0x9B, +0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF7, 0x54, 0x9A, 0x6C, 0xEA, 0x04, 0x22, +0x03, 0x6C, 0x00, 0x18, 0xC8, 0xCA, 0x03, 0x10, +0x03, 0x6C, 0x00, 0x18, 0xBF, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0x4C, 0x9A, 0xC5, 0xF7, 0x68, 0x9B, 0x6C, 0xEA, +0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x6C, 0xEA, 0x04, 0x22, 0x04, 0x6C, +0x00, 0x18, 0xC8, 0xCA, 0x03, 0x10, 0x04, 0x6C, +0x00, 0x18, 0xBF, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x50, 0x9A, +0xC5, 0xF7, 0x68, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x58, 0x9A, +0x6C, 0xEA, 0x04, 0x22, 0x05, 0x6C, 0x00, 0x18, +0xC8, 0xCA, 0x03, 0x10, 0x05, 0x6C, 0x00, 0x18, +0xBF, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF3, 0x54, 0x9A, 0xC5, 0xF7, +0x68, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x44, 0x9A, 0x6C, 0xEA, +0x04, 0x22, 0x06, 0x6C, 0x00, 0x18, 0xC8, 0xCA, +0x03, 0x10, 0x06, 0x6C, 0x00, 0x18, 0xBF, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF3, 0x58, 0x9A, 0xC5, 0xF7, 0x68, 0x9B, +0x6C, 0xEA, 0x09, 0x22, 0x00, 0x53, 0x04, 0x60, +0x07, 0x6C, 0x00, 0x18, 0xC8, 0xCA, 0x03, 0x10, +0x07, 0x6C, 0x00, 0x18, 0xBF, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0xC5, 0xF7, 0x6C, 0x9A, 0x12, 0x23, +0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x19, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x50, 0x9A, +0xC5, 0xF7, 0x6C, 0x9B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x92, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF7, 0x70, 0x9A, 0x78, 0x23, 0x01, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, +0x50, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x10, 0x6C, 0x00, 0x18, 0x9C, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0xC5, 0xF7, 0x50, 0x9A, 0x04, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x20, 0x6C, 0x00, 0x18, +0x9C, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, +0x50, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x30, 0x6C, 0x00, 0x18, 0x9C, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0xC5, 0xF7, 0x50, 0x9A, 0x10, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x40, 0x6C, 0x00, 0x18, +0x9C, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, +0x50, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x50, 0x6C, 0x00, 0x18, 0x9C, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0xC5, 0xF7, 0x50, 0x9A, 0x40, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x60, 0x6C, 0x00, 0x18, +0x9C, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, +0x50, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x70, 0x6C, 0x00, 0x18, 0x9C, 0xCA, 0x30, 0xF0, +0x20, 0x6B, 0xC5, 0xF7, 0x70, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6B, +0xC5, 0xF7, 0x70, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0xC5, 0xF7, +0x70, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x4F, 0xCB, +0x30, 0xF0, 0x20, 0x6B, 0xC5, 0xF7, 0x70, 0x9B, +0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0x4F, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0xC5, 0xF7, 0x74, 0x9A, 0x78, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x12, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF7, 0x54, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x10, 0x6C, 0x00, 0x18, 0x0B, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, 0x54, 0x9A, +0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x20, 0x6C, +0x00, 0x18, 0x0B, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF7, 0x54, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x30, 0x6C, 0x00, 0x18, 0x0B, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, 0x54, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x40, 0x6C, +0x00, 0x18, 0x0B, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF7, 0x54, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x50, 0x6C, 0x00, 0x18, 0x0B, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF7, 0x54, 0x9A, +0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x60, 0x6C, +0x00, 0x18, 0x0B, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF7, 0x54, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x70, 0x6C, 0x00, 0x18, 0x0B, 0xCB, +0x30, 0xF0, 0x20, 0x6B, 0xC5, 0xF7, 0x74, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0x12, 0xCB, 0x30, 0xF0, +0x20, 0x6B, 0xC5, 0xF7, 0x74, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0x12, 0xCB, 0x30, 0xF0, 0x20, 0x6B, +0xC5, 0xF7, 0x74, 0x9B, 0x00, 0xF4, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0x12, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0xC5, 0xF7, +0x74, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x12, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x00, 0x6B, 0x68, 0xDA, 0x69, 0xDA, 0x6A, 0xDA, +0x6B, 0xDA, 0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, +0x28, 0xF0, 0x16, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, +0xAC, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF3, 0xBC, 0x9B, 0x30, 0xF0, 0x20, 0x6E, +0xC3, 0xF3, 0xC0, 0x9E, 0x60, 0x9D, 0xCC, 0xEB, +0x0C, 0x10, 0x01, 0x72, 0x0B, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF3, 0xBC, 0x9B, 0x30, 0xF0, +0x20, 0x6E, 0xC2, 0xF6, 0xCC, 0x9E, 0x60, 0x9D, +0xCD, 0xEB, 0x60, 0xDD, 0x05, 0x5C, 0x60, 0xF1, +0x1A, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x88, 0x34, +0x62, 0xF5, 0x1C, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, +0x00, 0xEB, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF3, 0x7C, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, +0x12, 0x10, 0x01, 0x72, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF3, 0x7C, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x40, 0xA3, 0x80, 0x4D, +0xC0, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x02, 0x72, 0x05, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x7C, 0x9A, +0x5B, 0x10, 0x03, 0x72, 0x40, 0xF1, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x7C, 0x9A, +0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xE9, 0x17, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF3, 0x64, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, +0xE2, 0x17, 0x01, 0x72, 0x19, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF3, 0x9C, 0x9A, 0xFF, 0x6A, +0x40, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF3, 0x84, 0x9B, 0x01, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x94, 0x9B, -0x01, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, -0x4C, 0xEB, 0x60, 0xC4, 0x60, 0xA4, 0x04, 0x6D, -0x4C, 0xEB, 0x48, 0x10, 0x02, 0x72, 0x0F, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x6C, 0x9A, -0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x74, 0x9A, -0xFE, 0x6A, 0x80, 0xA3, 0xB6, 0x17, 0x03, 0x72, -0x00, 0xF1, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x8C, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, +0x60, 0xA4, 0x04, 0x6D, 0x4C, 0xEB, 0x48, 0x10, +0x02, 0x72, 0x0F, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF3, 0x7C, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF3, 0x64, 0x9A, 0xFE, 0x6A, 0x80, 0xA3, +0xB6, 0x17, 0x03, 0x72, 0x00, 0xF1, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x9C, 0x9A, +0xFF, 0x6B, 0x40, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF3, 0x84, 0x9A, 0x01, 0x6D, +0x40, 0xA4, 0x6C, 0xEA, 0x4B, 0x10, 0x07, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x64, 0x9A, +0x80, 0xA3, 0xBF, 0x6A, 0x98, 0x17, 0x01, 0x72, +0x1B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, +0x9C, 0x9A, 0xFF, 0x6A, 0x40, 0x6D, 0x60, 0xA4, +0x10, 0x6E, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, +0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, +0x84, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0xCD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x60, 0xA4, 0x4C, 0xEB, +0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, +0x02, 0x72, 0x0F, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF3, 0x7C, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF3, 0x64, 0x9A, 0xEF, 0x6A, 0x80, 0xA3, +0x6A, 0x17, 0x03, 0x72, 0xA0, 0xF0, 0x1F, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x9C, 0x9A, +0xFF, 0x6B, 0x40, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF3, 0x84, 0x9A, 0x10, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x94, 0x9A, 0x01, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0x4B, 0x10, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x74, 0x9A, 0x80, 0xA3, 0xBF, 0x6A, -0x98, 0x17, 0x01, 0x72, 0x1B, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x8C, 0x9A, 0xFF, 0x6A, -0x40, 0x6D, 0x60, 0xA4, 0x10, 0x6E, 0x4C, 0xEB, -0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF3, 0x94, 0x9B, 0x60, 0xA4, -0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, -0x60, 0xC4, 0x20, 0xE8, 0x02, 0x72, 0x0F, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x6C, 0x9A, +0x40, 0xC4, 0x20, 0xE8, 0x08, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF3, 0x64, 0x9A, 0xFF, 0xF3, +0x1F, 0x6A, 0x80, 0xAB, 0x83, 0x10, 0x01, 0x72, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, +0x7C, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x64, 0x9A, +0xFF, 0xF7, 0x1F, 0x6C, 0x7F, 0x4D, 0x40, 0xAB, +0x41, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xCB, 0x40, 0xAB, 0x00, 0xF3, 0x00, 0x4D, +0x8C, 0xEA, 0x51, 0x10, 0x02, 0x72, 0x10, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x7C, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x74, 0x9A, -0xEF, 0x6A, 0x80, 0xA3, 0x6A, 0x17, 0x03, 0x72, -0xA0, 0xF0, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x8C, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, -0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x94, 0x9A, 0x10, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x64, 0x9A, +0xFF, 0xF6, 0x1F, 0x6A, 0x80, 0xAB, 0x52, 0x10, +0x03, 0x72, 0x6D, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF3, 0x7C, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, +0x64, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x7F, 0x4D, +0x40, 0xAB, 0x41, 0x4D, 0x8C, 0xEA, 0x27, 0x10, 0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x74, 0x9A, 0xFF, 0xF3, 0x1F, 0x6A, 0x80, 0xAB, -0x83, 0x10, 0x01, 0x72, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x6C, 0x9A, 0xFF, 0x6C, +0x64, 0x9A, 0xF7, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, +0x31, 0x10, 0x01, 0x72, 0x1E, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF3, 0x7C, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x74, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, -0x7F, 0x4D, 0x40, 0xAB, 0x41, 0x4D, 0x8C, 0xEA, +0xC3, 0xF3, 0x64, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0xC1, 0xF7, 0x00, 0x4D, 0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x40, 0xAB, -0x00, 0xF3, 0x00, 0x4D, 0x8C, 0xEA, 0x51, 0x10, -0x02, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x6C, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x06, 0xF0, 0x00, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, +0x11, 0x10, 0x02, 0x72, 0x12, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF3, 0x7C, 0x9A, 0xBF, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF3, 0x64, 0x9A, 0xFD, 0xF7, +0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x40, 0xCB, +0x20, 0xE8, 0x03, 0x72, 0x18, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF3, 0x7C, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x74, 0x9A, 0xFF, 0xF6, 0x1F, 0x6A, -0x80, 0xAB, 0x52, 0x10, 0x03, 0x72, 0x6D, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x6C, 0x9A, -0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x74, 0x9A, 0xFF, 0xF7, -0x1F, 0x6C, 0x7F, 0x4D, 0x40, 0xAB, 0x41, 0x4D, -0x8C, 0xEA, 0x27, 0x10, 0x08, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x74, 0x9A, 0xF7, 0xF7, -0x1F, 0x6A, 0x80, 0xAB, 0x31, 0x10, 0x01, 0x72, -0x1E, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x6C, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x74, 0x9A, -0xFF, 0xF7, 0x1F, 0x6C, 0xC1, 0xF7, 0x00, 0x4D, -0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xCB, 0x40, 0xAB, 0x06, 0xF0, 0x00, 0x4D, -0x8C, 0xEA, 0xAD, 0xEA, 0x11, 0x10, 0x02, 0x72, -0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x6C, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x74, 0x9A, 0xFD, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, -0x8C, 0xEA, 0x40, 0xCB, 0x20, 0xE8, 0x03, 0x72, -0x18, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x6C, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x74, 0x9A, -0xFF, 0xF7, 0x1F, 0x6C, 0xC1, 0xF7, 0x00, 0x4D, -0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xCB, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD0, -0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEE, 0x4C, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x50, 0x9A, -0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x00, 0xAA, -0xE1, 0xF7, 0x1F, 0x6A, 0x0C, 0xEA, 0x30, 0xF0, -0x20, 0x68, 0x22, 0xF6, 0x04, 0x98, 0x51, 0xE4, -0x6C, 0xEC, 0x80, 0xC8, 0x9C, 0x32, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF3, 0x98, 0x9C, 0x30, 0xF0, -0x20, 0x68, 0xC3, 0xF3, 0x1C, 0x98, 0x91, 0xE2, -0x80, 0xAC, 0x01, 0xE2, 0x00, 0x98, 0x6C, 0xEC, -0x05, 0x25, 0x10, 0xF0, 0x00, 0x6D, 0xAB, 0xED, -0xAD, 0xEC, 0x6C, 0xEC, 0xD8, 0xF0, 0x00, 0x6B, -0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF3, -0x98, 0x9C, 0x91, 0xE2, 0x60, 0xCC, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF3, 0x60, 0x9B, 0x6D, 0xE2, -0x80, 0xA3, 0x01, 0x6B, 0x8C, 0xEB, 0x05, 0x23, -0x03, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, 0x0C, 0xEB, -0x06, 0x10, 0x1F, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, -0x0C, 0xEB, 0xE0, 0x37, 0xED, 0xEB, 0xFF, 0x76, -0x13, 0x60, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF3, -0x84, 0x9C, 0x80, 0xF4, 0xC0, 0x36, 0x6C, 0xEC, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, 0x74, 0x9B, -0x6D, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, -0x7C, 0x9B, 0x8D, 0xEE, 0x6D, 0xE2, 0xC0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF3, 0x88, 0x9B, -0x7F, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF3, -0x6C, 0x9B, 0x1C, 0x6C, 0x80, 0xC3, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF3, 0x70, 0x9B, 0x08, 0xF4, -0x13, 0x6C, 0x80, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF5, 0x90, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, -0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x01, 0x90, -0x01, 0x63, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x78, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF6, 0x94, 0x9C, -0x40, 0x9B, 0x10, 0x6D, 0x00, 0x6E, 0x8D, 0xEA, -0x40, 0xDB, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x00, 0xF4, -0x1D, 0x6C, 0x82, 0xF3, 0x08, 0x6F, 0x40, 0xEA, -0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF3, 0x74, 0x9B, -0xFF, 0x6A, 0x4C, 0xED, 0x6D, 0xE4, 0xC0, 0xA3, -0x3F, 0x6C, 0xCC, 0xEC, 0x80, 0xC3, 0x07, 0x2D, -0x80, 0xA3, 0x40, 0x6D, 0x4C, 0xEC, 0xAD, 0xEC, -0x4C, 0xEC, 0x80, 0xC3, 0x20, 0xE8, 0x01, 0x75, -0x07, 0x61, 0x80, 0xA3, 0x80, 0x6D, 0xAB, 0xED, +0xC3, 0xF3, 0x64, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0xC1, 0xF7, 0x00, 0x4D, 0x40, 0xAB, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, +0x4C, 0xEE, 0x4C, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF6, 0x54, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x6C, 0xEC, 0x00, 0xAA, 0xE1, 0xF7, 0x1F, 0x6A, +0x0C, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x22, 0xF6, +0x08, 0x98, 0x51, 0xE4, 0x6C, 0xEC, 0x80, 0xC8, +0x9C, 0x32, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF3, +0x88, 0x9C, 0x30, 0xF0, 0x20, 0x68, 0xC3, 0xF3, +0x0C, 0x98, 0x91, 0xE2, 0x80, 0xAC, 0x01, 0xE2, +0x00, 0x98, 0x6C, 0xEC, 0x05, 0x25, 0x10, 0xF0, +0x00, 0x6D, 0xAB, 0xED, 0xAD, 0xEC, 0x6C, 0xEC, +0xD8, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF3, 0x88, 0x9C, 0x91, 0xE2, +0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, +0x70, 0x9B, 0x6D, 0xE2, 0x80, 0xA3, 0x01, 0x6B, +0x8C, 0xEB, 0x05, 0x23, 0x03, 0xF7, 0x01, 0x6B, +0x6B, 0xEB, 0x0C, 0xEB, 0x06, 0x10, 0x1F, 0xF7, +0x01, 0x6B, 0x6B, 0xEB, 0x0C, 0xEB, 0xE0, 0x37, +0xED, 0xEB, 0xFF, 0x76, 0x13, 0x60, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF3, 0x94, 0x9C, 0x80, 0xF4, +0xC0, 0x36, 0x6C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF7, 0x78, 0x9B, 0x6D, 0xEE, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF3, 0x6C, 0x9B, 0x8D, 0xEE, +0x6D, 0xE2, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF3, 0x98, 0x9B, 0x7F, 0x6B, 0x91, 0xE2, +0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF3, 0x7C, 0x9B, 0x1C, 0x6C, +0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF3, +0x60, 0x9B, 0x08, 0xF4, 0x13, 0x6C, 0x80, 0xCB, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0x90, 0x9B, +0xF7, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, +0x60, 0xC4, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF6, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xC2, 0xF6, 0x98, 0x9C, 0x40, 0x9B, 0x10, 0x6D, +0x00, 0x6E, 0x8D, 0xEA, 0x40, 0xDB, 0x06, 0x02, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x48, 0x9A, 0x00, 0xF4, 0x1D, 0x6C, 0x82, 0xF3, +0x08, 0x6F, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF3, 0x64, 0x9B, 0xFF, 0x6A, 0x4C, 0xED, +0x6D, 0xE4, 0xC0, 0xA3, 0x3F, 0x6C, 0xCC, 0xEC, +0x80, 0xC3, 0x07, 0x2D, 0x80, 0xA3, 0x40, 0x6D, 0x4C, 0xEC, 0xAD, 0xEC, 0x4C, 0xEC, 0x80, 0xC3, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF3, 0x78, 0x9B, 0xFF, 0x6A, 0xAC, 0xEA, -0x6D, 0xE4, 0x80, 0x9B, 0x80, 0xF4, 0x40, 0x32, -0x8D, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF7, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6E, -0xE3, 0xF3, 0xDC, 0x9E, 0x6D, 0xE4, 0x40, 0x9B, -0x30, 0xF0, 0x20, 0x68, 0x03, 0xF4, 0x04, 0x98, -0xCC, 0xEA, 0x30, 0xF0, 0x20, 0x6E, 0x03, 0xF4, -0xC0, 0x9E, 0xCD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0xF0, 0x9A, 0x83, 0xF7, -0x00, 0x6A, 0x4B, 0xEA, 0xFD, 0xE4, 0x60, 0x9F, -0x7F, 0x6E, 0x4C, 0xEB, 0x43, 0xA5, 0xCC, 0xEA, -0x0D, 0xEA, 0x6D, 0xEA, 0x40, 0xDF, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF4, 0x68, 0x9A, 0x30, 0xF0, -0x20, 0x6F, 0xC3, 0xF0, 0xF8, 0x9F, 0x6D, 0xE4, -0x40, 0x9B, 0xED, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF4, 0x6C, 0x9A, 0xFF, 0x6F, -0x01, 0x4F, 0x6D, 0xE4, 0x40, 0x9B, 0xED, 0xEA, -0x3F, 0xF6, 0x1F, 0x4F, 0xEC, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x5C, 0x9A, -0x49, 0xE4, 0x60, 0x9A, 0x40, 0xA5, 0xCC, 0xEA, -0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0x40, 0x9A, 0x49, 0xE4, 0xC0, 0xA2, 0x01, 0x6A, -0xCC, 0xEA, 0x05, 0x22, 0x03, 0xF7, 0x01, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x07, 0x10, 0x1F, 0xF7, -0x01, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x61, 0xA5, -0x60, 0x33, 0x6D, 0xEA, 0xC2, 0xA5, 0xFF, 0x76, -0x0D, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF3, -0x64, 0x9B, 0x4C, 0xEB, 0x80, 0xF4, 0xC0, 0x32, -0x30, 0xF0, 0x20, 0x6E, 0x42, 0xF7, 0xD4, 0x9E, -0xCD, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF3, 0x7C, 0x9B, 0x6D, 0xE4, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, 0xD0, 0x9A, -0x02, 0xF0, 0x00, 0x6B, 0x6B, 0xEB, 0xD9, 0xE4, -0x40, 0x9E, 0x6C, 0xEA, 0x62, 0xAD, 0xE1, 0xF7, -0x1F, 0x6D, 0xAC, 0xEB, 0x6D, 0xEA, 0x40, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x78, 0x9A, -0x0E, 0xF0, 0x01, 0x4D, 0x6D, 0xE4, 0x40, 0x9B, -0xAD, 0xEA, 0xC8, 0xF0, 0x00, 0x4D, 0xAC, 0xEA, +0x20, 0xE8, 0x01, 0x75, 0x07, 0x61, 0x80, 0xA3, +0x80, 0x6D, 0xAB, 0xED, 0x4C, 0xEC, 0xAD, 0xEC, +0x4C, 0xEC, 0x80, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF3, 0x68, 0x9B, +0xFF, 0x6A, 0xAC, 0xEA, 0x6D, 0xE4, 0x80, 0x9B, +0x80, 0xF4, 0x40, 0x32, 0x8D, 0xEA, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x64, 0x9A, +0x30, 0xF0, 0x20, 0x6E, 0xE3, 0xF3, 0xCC, 0x9E, +0x6D, 0xE4, 0x40, 0x9B, 0x30, 0xF0, 0x20, 0x68, +0xE3, 0xF3, 0x14, 0x98, 0xCC, 0xEA, 0x30, 0xF0, +0x20, 0x6E, 0xE3, 0xF3, 0xD0, 0x9E, 0xCD, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0xE0, 0x9A, 0x83, 0xF7, 0x00, 0x6A, 0x4B, 0xEA, +0xFD, 0xE4, 0x60, 0x9F, 0x7F, 0x6E, 0x4C, 0xEB, +0x43, 0xA5, 0xCC, 0xEA, 0x0D, 0xEA, 0x6D, 0xEA, +0x40, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6F, 0xC3, 0xF0, +0xEC, 0x9F, 0x6D, 0xE4, 0x40, 0x9B, 0xED, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0x48, 0x9A, 0x51, 0xE4, 0x60, 0xA4, 0x7F, 0x6A, -0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF3, 0x4C, 0x9A, 0x1C, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x50, 0x9A, -0x08, 0xF4, 0x13, 0x6B, 0x60, 0xCA, 0x01, 0x90, -0x01, 0x63, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, -0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF4, 0x54, 0x9A, 0x8C, 0x34, 0x30, 0xF0, -0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0xC2, 0xF6, -0x74, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF4, 0x54, 0x9A, 0x8C, 0x34, -0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0xE2, 0xF6, 0x68, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF4, 0x54, 0x9A, 0x8C, 0x34, 0x30, 0xF0, -0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0x02, 0xF6, -0x7C, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF4, 0x54, 0x9A, 0x8C, 0x34, -0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0x02, 0xF7, 0x70, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0x03, 0xF4, 0x54, 0x9A, 0x6C, 0xEC, -0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, -0x40, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0x03, 0xF4, 0x54, 0x9A, 0x6C, 0xEC, -0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, -0x00, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x00, 0x68, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0x85, 0xD2, 0x90, 0x67, 0x01, 0x6D, -0x01, 0x48, 0x00, 0x18, 0x95, 0xD2, 0x0B, 0x70, -0xF5, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x0C, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x0A, 0x69, 0x12, 0xED, 0x4C, 0xED, 0x04, 0xD5, -0xFF, 0x68, 0x2C, 0xE8, 0x90, 0x67, 0x00, 0x18, -0xA5, 0xD2, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, -0x20, 0x31, 0x90, 0x67, 0x01, 0x6D, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x18, 0x95, 0xD2, 0x41, 0x41, -0xEF, 0x2A, 0x01, 0x69, 0x2B, 0xE9, 0x09, 0x10, -0x04, 0x94, 0xFF, 0x49, 0x00, 0x6D, 0x00, 0xF6, -0x20, 0x31, 0x00, 0x18, 0x95, 0xD2, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x51, 0xF5, 0x60, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x0C, 0x68, 0x4C, 0xEC, 0x1B, 0xEC, -0x01, 0x28, 0xE5, 0xE8, 0x4C, 0xED, 0x10, 0xE9, -0x4C, 0xE9, 0x12, 0xE8, 0x4C, 0xE8, 0x0F, 0x25, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x85, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF1, 0x1C, 0x4A, -0x41, 0xE0, 0x60, 0xA0, 0x01, 0x6A, 0x44, 0xE9, -0x6D, 0xEA, 0x40, 0xC0, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA5, 0xF1, 0x1C, 0x4A, 0x49, 0xE0, -0x80, 0xA2, 0x01, 0x6B, 0x64, 0xE9, 0x6F, 0xEB, -0x8C, 0xEB, 0x60, 0xC2, 0x40, 0xA2, 0x04, 0x2A, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x85, 0xD2, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, -0x0C, 0xE9, 0xAC, 0xE8, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xD8, 0xD2, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xBF, 0xD2, 0x07, 0x97, 0x06, 0x91, +0x7C, 0x9A, 0xFF, 0x6F, 0x01, 0x4F, 0x6D, 0xE4, +0x40, 0x9B, 0xED, 0xEA, 0x3F, 0xF6, 0x1F, 0x4F, +0xEC, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF3, 0x4C, 0x9A, 0x49, 0xE4, 0x60, 0x9A, +0x40, 0xA5, 0xCC, 0xEA, 0x4D, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF3, 0x50, 0x9A, 0x49, 0xE4, +0xC0, 0xA2, 0x01, 0x6A, 0xCC, 0xEA, 0x05, 0x22, +0x03, 0xF7, 0x01, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x07, 0x10, 0x1F, 0xF7, 0x01, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x61, 0xA5, 0x60, 0x33, 0x6D, 0xEA, +0xC2, 0xA5, 0xFF, 0x76, 0x0D, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF3, 0x74, 0x9B, 0x4C, 0xEB, +0x80, 0xF4, 0xC0, 0x32, 0x30, 0xF0, 0x20, 0x6E, +0x42, 0xF7, 0xD8, 0x9E, 0xCD, 0xEA, 0x6D, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x6C, 0x9B, +0x6D, 0xE4, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF4, 0xC0, 0x9A, 0x02, 0xF0, 0x00, 0x6B, +0x6B, 0xEB, 0xD9, 0xE4, 0x40, 0x9E, 0x6C, 0xEA, +0x62, 0xAD, 0xE1, 0xF7, 0x1F, 0x6D, 0xAC, 0xEB, +0x6D, 0xEA, 0x40, 0xDE, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF3, 0x68, 0x9A, 0x0E, 0xF0, 0x01, 0x4D, +0x6D, 0xE4, 0x40, 0x9B, 0xAD, 0xEA, 0xC8, 0xF0, +0x00, 0x4D, 0xAC, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF3, 0x58, 0x9A, 0x51, 0xE4, +0x60, 0xA4, 0x7F, 0x6A, 0x6C, 0xEA, 0x40, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x5C, 0x9A, +0x1C, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF3, 0x40, 0x9A, 0x08, 0xF4, 0x13, 0x6B, +0x60, 0xCA, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, 0x44, 0x9A, +0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, +0x40, 0x9C, 0xC2, 0xF6, 0x78, 0x9B, 0x6D, 0xEA, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, +0x44, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, +0x51, 0xE4, 0x40, 0x9C, 0xE2, 0xF6, 0x6C, 0x9B, +0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, 0x44, 0x9A, +0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, +0x40, 0x9C, 0x22, 0xF6, 0x60, 0x9B, 0x6D, 0xEA, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, +0x44, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, +0x51, 0xE4, 0x40, 0x9C, 0x02, 0xF7, 0x74, 0x9B, +0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6B, 0x03, 0xF4, +0x44, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x01, 0x6C, 0x40, 0xF7, 0x42, 0x32, +0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6B, 0x03, 0xF4, +0x44, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x01, 0x6C, 0x00, 0xF7, 0x42, 0x32, +0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xAA, 0xD2, +0x90, 0x67, 0x01, 0x6D, 0x01, 0x48, 0x00, 0x18, +0xBA, 0xD2, 0x0B, 0x70, 0xF5, 0x61, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0x6B, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x0A, 0x69, 0x12, 0xED, +0x4C, 0xED, 0x04, 0xD5, 0xFF, 0x68, 0x2C, 0xE8, +0x90, 0x67, 0x00, 0x18, 0xCA, 0xD2, 0x17, 0x2A, +0xFF, 0x49, 0x00, 0xF6, 0x20, 0x31, 0x90, 0x67, +0x01, 0x6D, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x18, +0xBA, 0xD2, 0x41, 0x41, 0xEF, 0x2A, 0x01, 0x69, +0x2B, 0xE9, 0x09, 0x10, 0x04, 0x94, 0xFF, 0x49, +0x00, 0x6D, 0x00, 0xF6, 0x20, 0x31, 0x00, 0x18, +0xBA, 0xD2, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x51, +0xF5, 0x60, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x0C, 0x68, +0x4C, 0xEC, 0x1B, 0xEC, 0x01, 0x28, 0xE5, 0xE8, +0x4C, 0xED, 0x10, 0xE9, 0x4C, 0xE9, 0x12, 0xE8, +0x4C, 0xE8, 0x0F, 0x25, 0x90, 0x67, 0x01, 0x6D, +0x00, 0x18, 0xAA, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF1, 0x04, 0x4A, 0x41, 0xE0, 0x60, 0xA0, +0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x40, 0xC0, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF1, +0x04, 0x4A, 0x49, 0xE0, 0x80, 0xA2, 0x01, 0x6B, +0x64, 0xE9, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, +0x40, 0xA2, 0x04, 0x2A, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xAA, 0xD2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x0C, 0x6B, 0x7B, 0xED, 0x01, 0x2B, 0xE5, 0xE8, -0x05, 0x6E, 0xFF, 0x6A, 0x4C, 0xEC, 0x10, 0xEB, -0x12, 0xED, 0x4C, 0xED, 0xD8, 0xEB, 0x12, 0xEB, -0x4C, 0xEB, 0x1E, 0x73, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF4, 0x78, 0x9A, 0xAC, 0x35, -0x30, 0xF0, 0x20, 0x6E, 0x6D, 0xE5, 0x40, 0x9B, -0x62, 0xF7, 0xCC, 0x9E, 0xCC, 0xEA, 0x80, 0xF7, -0x80, 0x36, 0xCD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF4, 0x54, 0x9A, 0x08, 0x6B, -0x6B, 0xEB, 0x55, 0xE5, 0x40, 0x9D, 0x8A, 0x34, -0x6C, 0xEA, 0x07, 0x6B, 0x6C, 0xEC, 0x1E, 0x10, -0x20, 0x5B, 0x0C, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF4, 0x58, 0x9A, 0x1F, 0x6E, 0xAC, 0x35, -0xE6, 0x67, 0x55, 0xE5, 0xE4, 0xEB, 0x40, 0x9D, -0xEF, 0xEF, 0x0D, 0x10, 0xE0, 0x4B, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, 0x54, 0x9A, -0xAC, 0x35, 0x1F, 0x6E, 0x55, 0xE5, 0xE0, 0x9D, -0x46, 0x67, 0x44, 0xEB, 0x4F, 0xEA, 0xCC, 0xEC, -0xEC, 0xEA, 0x84, 0xEB, 0x8D, 0xEA, 0x40, 0xDD, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, -0xCC, 0xE9, 0x05, 0x67, 0x01, 0x29, 0x00, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0xFE, 0xD2, 0xFF, 0x6C, -0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0xF3, 0xD2, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0xFD, 0xD2, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0xE4, 0xD2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xAE, 0xEC, 0x01, 0x6A, -0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x06, 0xD2, 0x05, 0xD4, 0x00, 0x69, 0x1F, 0x68, -0x22, 0x10, 0x05, 0x92, 0x40, 0xA2, 0x07, 0xD2, -0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, 0x07, 0x94, -0x12, 0x35, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x31, 0xD3, 0x06, 0x22, 0xFF, 0x6A, -0x04, 0x30, 0x4C, 0xE8, 0x05, 0x6A, 0x4E, 0xE8, -0x01, 0x10, 0x04, 0x30, 0xFF, 0x6A, 0x4C, 0xE8, -0x04, 0x92, 0x01, 0x4A, 0x08, 0x72, 0x04, 0xD2, -0xE9, 0x61, 0xFF, 0x6A, 0x01, 0x49, 0x4C, 0xE9, -0x05, 0x92, 0x01, 0x4A, 0x05, 0xD2, 0x06, 0x92, -0x43, 0xE9, 0xDB, 0x61, 0x1F, 0x6A, 0x4E, 0xE8, -0x0C, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x60, 0xA4, 0x01, 0x6A, 0x04, 0x67, -0x6C, 0xEA, 0x44, 0x22, 0x66, 0x32, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF4, 0x7C, 0x9B, 0x54, 0x32, -0x69, 0xE2, 0x61, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x60, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x62, 0xA4, +0x00, 0xEF, 0x00, 0x65, 0x0C, 0x6B, 0x7B, 0xED, +0x01, 0x2B, 0xE5, 0xE8, 0x05, 0x6E, 0xFF, 0x6A, +0x4C, 0xEC, 0x10, 0xEB, 0x12, 0xED, 0x4C, 0xED, +0xD8, 0xEB, 0x12, 0xEB, 0x4C, 0xEB, 0x1E, 0x73, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, +0x68, 0x9A, 0xAC, 0x35, 0x30, 0xF0, 0x20, 0x6E, +0x6D, 0xE5, 0x40, 0x9B, 0x62, 0xF7, 0xD0, 0x9E, +0xCC, 0xEA, 0x80, 0xF7, 0x80, 0x36, 0xCD, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, +0x44, 0x9A, 0x08, 0x6B, 0x6B, 0xEB, 0x55, 0xE5, +0x40, 0x9D, 0x8A, 0x34, 0x6C, 0xEA, 0x07, 0x6B, +0x6C, 0xEC, 0x1E, 0x10, 0x20, 0x5B, 0x0C, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, 0x48, 0x9A, +0x1F, 0x6E, 0xAC, 0x35, 0xE6, 0x67, 0x55, 0xE5, +0xE4, 0xEB, 0x40, 0x9D, 0xEF, 0xEF, 0x0D, 0x10, +0xE0, 0x4B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF4, 0x44, 0x9A, 0xAC, 0x35, 0x1F, 0x6E, +0x55, 0xE5, 0xE0, 0x9D, 0x46, 0x67, 0x44, 0xEB, +0x4F, 0xEA, 0xCC, 0xEC, 0xEC, 0xEA, 0x84, 0xEB, +0x8D, 0xEA, 0x40, 0xDD, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xE9, 0x05, 0x67, +0x01, 0x29, 0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0x23, 0xD3, 0xFF, 0x6C, 0x0C, 0xEC, 0xB1, 0x67, +0x00, 0x18, 0x18, 0xD3, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xAE, 0xEC, 0x01, 0x6A, 0x8C, 0xEA, 0x20, 0xE8, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0xAC, 0xEA, 0x06, 0xD2, 0x05, 0xD4, +0x00, 0x69, 0x1F, 0x68, 0x22, 0x10, 0x05, 0x92, +0x40, 0xA2, 0x07, 0xD2, 0x00, 0x6A, 0x04, 0xD2, +0x04, 0x92, 0x07, 0x94, 0x12, 0x35, 0x87, 0xEA, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x56, 0xD3, +0x06, 0x22, 0xFF, 0x6A, 0x04, 0x30, 0x4C, 0xE8, +0x05, 0x6A, 0x4E, 0xE8, 0x01, 0x10, 0x04, 0x30, +0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x92, 0x01, 0x4A, +0x08, 0x72, 0x04, 0xD2, 0xE9, 0x61, 0xFF, 0x6A, +0x01, 0x49, 0x4C, 0xE9, 0x05, 0x92, 0x01, 0x4A, +0x05, 0xD2, 0x06, 0x92, 0x43, 0xE9, 0xDB, 0x61, +0x1F, 0x6A, 0x4E, 0xE8, 0x0C, 0xEA, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x60, 0xA4, +0x01, 0x6A, 0x04, 0x67, 0x6C, 0xEA, 0x44, 0x22, +0x66, 0x32, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, +0x6C, 0x9B, 0x54, 0x32, 0x69, 0xE2, 0x61, 0xA4, 0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF4, 0x64, 0x9B, 0x46, 0x32, 0x54, 0x32, -0x69, 0xE2, 0x63, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x68, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x64, 0xA4, +0x03, 0xF4, 0x70, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x62, 0xA4, 0x60, 0xC2, 0x40, 0xA4, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, 0x74, 0x9B, +0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x63, 0xA4, 0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF4, 0x6C, 0x9B, 0x46, 0x32, 0x54, 0x32, -0x69, 0xE2, 0x65, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x70, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x66, 0xA4, -0x10, 0xF0, 0x00, 0x6C, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF4, 0x74, 0x9A, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x81, 0x40, 0x06, 0x6D, -0x00, 0x18, 0x33, 0xD3, 0x60, 0xA0, 0x01, 0x6E, -0x82, 0x67, 0x66, 0x35, 0x6C, 0xEE, 0x00, 0x18, -0x25, 0xD3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xB5, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF4, 0x78, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, -0x80, 0xAB, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xA2, 0xF6, 0x94, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x44, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0xF4, 0x78, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x64, 0xA4, 0x60, 0xC2, 0x40, 0xA4, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, 0x7C, 0x9B, +0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x65, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF4, 0x60, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x66, 0xA4, 0x10, 0xF0, 0x00, 0x6C, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, +0x64, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x81, 0x40, 0x06, 0x6D, 0x00, 0x18, 0x58, 0xD3, +0x60, 0xA0, 0x01, 0x6E, 0x82, 0x67, 0x66, 0x35, +0x6C, 0xEE, 0x00, 0x18, 0x4A, 0xD3, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xDA, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, 0x68, 0x9A, +0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, 0x98, 0x9C, +0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0x08, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x63, 0xF3, +0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0x63, 0xF3, 0xB4, 0xA3, 0x04, 0x67, 0x08, 0x6C, 0xAD, 0xEC, 0x63, 0xF3, 0x94, 0xC3, 0xE2, 0xF5, 0x6C, 0xA3, -0xFF, 0x6A, 0x4C, 0xE8, 0x03, 0x73, 0x40, 0x61, +0xFF, 0x6A, 0x4C, 0xE8, 0x03, 0x73, 0x62, 0x61, 0x10, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x58, 0x9A, -0x60, 0xDA, 0x00, 0x18, 0x70, 0xC4, 0x34, 0x2A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0x01, 0x6E, -0x10, 0xF0, 0x23, 0x6C, 0x05, 0xF6, 0x00, 0xC5, -0x02, 0xF2, 0x19, 0x4C, 0x05, 0xF6, 0x00, 0x4D, -0xE6, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x94, 0xA2, -0x10, 0x6B, 0xA3, 0x67, 0x8C, 0xED, 0x0B, 0x2D, -0x30, 0xF0, 0x20, 0x6D, 0xE2, 0xF5, 0xDC, 0x9D, -0x30, 0xF0, 0x20, 0x6D, 0xE2, 0xF5, 0xB8, 0x9D, -0x8D, 0xEB, 0xC0, 0xDD, 0x3D, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF5, 0x78, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x02, 0xF6, 0x80, 0x9C, 0x40, 0x9B, -0x8D, 0xEA, 0x01, 0x4A, 0x40, 0xDB, 0x32, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF5, 0x54, 0xA2, -0x02, 0x72, 0x03, 0x61, 0x01, 0x70, 0x10, 0x61, -0x1E, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x48, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x64, 0x6C, 0x40, 0xEA, 0x00, 0x18, 0x58, 0xCE, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x64, 0x9A, -0xFF, 0x6C, 0x80, 0x6D, 0x40, 0xA3, 0xAB, 0xED, -0x8C, 0xEA, 0xAE, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x90, 0x67, 0x80, 0x18, 0x4B, 0x19, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, -0x94, 0xA2, 0x09, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x63, 0xF3, 0x74, 0xC2, 0x07, 0x97, 0x06, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x26, 0xF0, -0x1E, 0x4C, 0x05, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0xCC, 0xEA, 0x00, 0x6B, 0x09, 0x10, -0x79, 0xE5, 0xE0, 0xA4, 0xC0, 0xA6, 0x01, 0x4B, -0x01, 0x4C, 0xEE, 0xEE, 0x02, 0x26, 0x00, 0x6A, -0x20, 0xE8, 0xFF, 0x6E, 0x6C, 0xEE, 0x43, 0xEE, -0xF3, 0x61, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA0, 0xF0, 0x8F, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xA0, 0xF0, 0x6F, 0xC2, 0x00, 0x6B, -0xA0, 0xF0, 0x70, 0xC2, 0xA0, 0xF0, 0x71, 0xC2, -0xA3, 0xF3, 0x66, 0xC2, 0xA3, 0xF3, 0x67, 0xC2, -0xA3, 0xF3, 0x68, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x6C, 0x9B, -0xFF, 0x6A, 0x8C, 0xEA, 0x80, 0xAB, 0xE1, 0xF7, -0x1F, 0x6B, 0x8C, 0xEB, 0x69, 0xE2, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF6, 0x70, 0x9B, 0x40, 0xCB, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x74, 0x9B, -0x40, 0xCB, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, -0x08, 0x48, 0x83, 0xF3, 0x5A, 0xA0, 0x83, 0xF3, -0x78, 0xA8, 0x5A, 0xEB, 0x01, 0x2A, 0xE5, 0xE8, -0x10, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x02, 0xF6, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0xA0, 0xF0, 0x9B, 0xA0, 0x3F, 0x10, -0x01, 0x72, 0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x22, 0xF6, 0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0xA0, 0xF0, 0x9C, 0xA0, 0x2F, 0x10, -0x02, 0x72, 0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x02, 0xF6, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0xA0, 0xF0, 0x9D, 0xA0, 0x1F, 0x10, -0x03, 0x72, 0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x22, 0xF6, 0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0xA0, 0xF0, 0x9E, 0xA0, 0x0F, 0x10, -0x04, 0x72, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x02, 0xF6, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0xA0, 0xF0, 0x9F, 0xA0, 0x80, 0x18, -0x64, 0x00, 0x83, 0xF3, 0x58, 0xA8, 0x01, 0x4A, -0x83, 0xF3, 0x58, 0xC8, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x46, 0xF0, -0x03, 0x4C, 0x05, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, -0x08, 0x48, 0xA0, 0xF0, 0x6F, 0xA0, 0x02, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xA0, 0xF0, 0x4F, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0xB0, 0x9A, -0x01, 0x6C, 0x80, 0x18, 0x8D, 0x5D, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x4C, 0x9A, 0x30, 0xF0, -0x20, 0x6D, 0x02, 0xF6, 0xB0, 0x9D, 0x80, 0x9A, -0xE1, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x80, 0xCD, -0x80, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0x22, 0xF6, -0xA4, 0x9D, 0x6C, 0xEC, 0x80, 0xCD, 0x40, 0x9A, -0x42, 0x32, 0x42, 0x32, 0x6C, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF6, 0x74, 0x9B, 0x40, 0xCB, -0x00, 0x6A, 0x83, 0xF3, 0x58, 0xC8, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xE4, 0x63, 0x37, 0x62, 0x36, 0xD1, 0x35, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA0, 0xF0, 0x76, 0xA2, 0x9D, 0x67, 0x78, 0xC4, -0xA0, 0xF0, 0x77, 0xA2, 0x79, 0xC4, 0xA0, 0xF0, -0x78, 0xA2, 0x7A, 0xC4, 0xA0, 0xF0, 0x79, 0xA2, -0x7B, 0xC4, 0xA0, 0xF0, 0x7A, 0xA2, 0x7C, 0xC4, -0x83, 0xF3, 0x7C, 0xA2, 0x20, 0xF0, 0x60, 0xC4, -0x83, 0xF3, 0x7D, 0xA2, 0x20, 0xF0, 0x61, 0xC4, -0x83, 0xF3, 0x7E, 0xA2, 0x20, 0xF0, 0x62, 0xC4, -0x83, 0xF3, 0x7F, 0xA2, 0x20, 0xF0, 0x63, 0xC4, -0xA3, 0xF3, 0x60, 0xA2, 0x20, 0xF0, 0x64, 0xC4, -0xA3, 0xF3, 0x61, 0xA2, 0x20, 0xF0, 0x68, 0xC4, -0xA3, 0xF3, 0x62, 0xA2, 0x20, 0xF0, 0x69, 0xC4, -0xA3, 0xF3, 0x63, 0xA2, 0x20, 0xF0, 0x6A, 0xC4, -0xA3, 0xF3, 0x64, 0xA2, 0x20, 0xF0, 0x6B, 0xC4, -0xA3, 0xF3, 0x65, 0xA2, 0x20, 0xF0, 0x6C, 0xC4, -0x00, 0x6B, 0x20, 0xF0, 0x70, 0xC4, 0x20, 0xF0, -0x71, 0xC4, 0x20, 0xF0, 0x72, 0xC4, 0x20, 0xF0, -0x73, 0xC4, 0x83, 0xF3, 0x5A, 0xA2, 0x20, 0xF0, -0x74, 0xC4, 0x0C, 0x03, 0x69, 0xE2, 0x03, 0x10, -0x01, 0x6C, 0x80, 0xC3, 0x01, 0x4B, 0x4A, 0xEB, -0xFB, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x4C, 0x9A, 0xE1, 0xF7, 0x1F, 0x6E, 0xFF, 0xF7, -0x1F, 0x68, 0x40, 0xAA, 0x1A, 0x05, 0x10, 0x04, -0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, -0x54, 0x9A, 0x15, 0x03, 0x40, 0xAA, 0x2D, 0xD6, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF3, -0xE2, 0xA2, 0x00, 0x6A, 0x2C, 0xD7, 0x20, 0x10, -0xFD, 0x67, 0x59, 0xE7, 0x38, 0xA6, 0x2D, 0x96, -0x30, 0xF0, 0x20, 0x6F, 0x25, 0xE6, 0x22, 0xF6, -0xD8, 0x9F, 0x3C, 0x31, 0x20, 0xDD, 0x3D, 0xE6, -0xC0, 0xA7, 0xFD, 0x67, 0x5D, 0xE7, 0xD0, 0xC7, -0x30, 0xF0, 0x20, 0x6E, 0x22, 0xF6, 0xFC, 0x9E, -0x01, 0x4A, 0x04, 0x4D, 0xF9, 0xE1, 0x30, 0xF0, -0x20, 0x6F, 0xC0, 0xDC, 0x42, 0xF6, 0xC0, 0x9F, -0x04, 0x4C, 0xC5, 0xE1, 0x20, 0xDB, 0x04, 0x4B, -0x2C, 0x97, 0xFF, 0x69, 0x4C, 0xE9, 0xE3, 0xE9, -0xDB, 0x61, 0x00, 0x69, 0x2F, 0xD1, 0x34, 0x12, -0x7D, 0x67, 0x00, 0x6A, 0x30, 0xF0, 0x20, 0x69, -0x20, 0xF0, 0x58, 0xC3, 0x20, 0xF0, 0x59, 0xC3, -0x20, 0xF0, 0x5A, 0xC3, 0x20, 0xF0, 0x5B, 0xC3, -0x20, 0xF0, 0x5C, 0xC3, 0xC0, 0xF3, 0x40, 0x99, -0x81, 0x40, 0x40, 0xEA, 0x2C, 0xD2, 0xC0, 0xF3, -0x40, 0x99, 0x90, 0x67, 0x40, 0xEA, 0x2C, 0x94, -0x80, 0x34, 0x4D, 0xEC, 0xE7, 0xF7, 0x1F, 0x6A, -0x4C, 0xEC, 0xC0, 0xF3, 0x40, 0x99, 0x2C, 0xD4, -0x82, 0x40, 0x40, 0xEA, 0x0F, 0x6B, 0x4C, 0xEB, -0xFF, 0x6D, 0xC0, 0xF3, 0x40, 0x99, 0x6C, 0x33, -0xAC, 0xEB, 0x30, 0xD3, 0x87, 0x40, 0x40, 0xEA, -0x30, 0x96, 0xFF, 0x6F, 0x32, 0xD2, 0x18, 0x4E, -0xC0, 0xF3, 0x40, 0x99, 0x31, 0xD6, 0xEC, 0xEE, -0x11, 0xE6, 0x2E, 0xD6, 0x40, 0xEA, 0x22, 0x67, -0x2C, 0x93, 0x31, 0x95, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x50, 0x9A, 0xB1, 0xE3, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x2D, 0x96, -0x09, 0xE2, 0x2C, 0xD2, 0x2C, 0x97, 0xE2, 0xF5, -0x44, 0x9E, 0xE3, 0xEA, 0x03, 0x60, 0x4F, 0xEA, -0x5D, 0xE7, 0x2C, 0xD7, 0x04, 0x6A, 0x4B, 0xEA, -0x2C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x40, 0x72, -0x00, 0xF1, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x69, -0x2E, 0x93, 0x87, 0x40, 0xC0, 0xF3, 0x40, 0x99, -0x11, 0x4C, 0x71, 0xE4, 0x40, 0xEA, 0xE0, 0xF0, -0x1A, 0x2A, 0x2E, 0x95, 0xC0, 0xF3, 0x40, 0x99, -0x87, 0x40, 0x12, 0x4C, 0xB1, 0xE4, 0x40, 0xEA, -0x30, 0x96, 0x00, 0x6F, 0x2E, 0xD2, 0xC5, 0xE0, -0x32, 0x49, 0x2D, 0xD7, 0x0E, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x91, 0x67, -0x01, 0x49, 0x40, 0xEA, 0x2D, 0x95, 0x9D, 0x67, -0xAD, 0xE4, 0x01, 0x4D, 0x60, 0xF0, 0x5C, 0xC3, -0x2D, 0xD5, 0x2D, 0x96, 0x2E, 0x97, 0xFF, 0x6A, -0xCC, 0xEA, 0xE3, 0xEA, 0xEC, 0x61, 0x00, 0x69, -0x46, 0x2F, 0x30, 0xF0, 0x20, 0x6C, 0x29, 0xF3, -0x82, 0xA4, 0x0E, 0x02, 0x08, 0x03, 0x51, 0xE4, -0x5C, 0x10, 0x04, 0x02, 0x2D, 0xE2, 0x2D, 0xD3, -0x2E, 0x94, 0x60, 0xA3, 0x8E, 0xEB, 0x0D, 0x2B, -0x28, 0x33, 0x69, 0xE2, 0x8C, 0x9A, 0x2E, 0x96, -0x1F, 0x05, 0x80, 0x18, 0x4E, 0x00, 0x05, 0x22, -0x2D, 0x95, 0x01, 0x6A, 0x20, 0xF0, 0x48, 0xC5, -0x27, 0x10, 0x2E, 0x96, 0x03, 0x76, 0x1F, 0x61, -0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF0, 0x08, 0x4C, -0x1F, 0x05, 0x03, 0x6E, 0x80, 0x18, 0x4E, 0x00, -0x09, 0x2A, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF0, -0x0C, 0x4C, 0x1F, 0x05, 0x03, 0x6E, 0x80, 0x18, -0x4E, 0x00, 0x08, 0x22, 0x04, 0x02, 0x29, 0xE2, -0x78, 0xA2, 0x0B, 0x2B, 0x90, 0xA2, 0x0A, 0x2C, -0x01, 0x6B, 0x08, 0x10, 0xFD, 0x67, 0x2D, 0xE7, -0x20, 0xF0, 0x58, 0xC3, 0x05, 0x10, 0x04, 0x02, -0x29, 0xE2, 0x00, 0x6B, 0x20, 0xF0, 0x68, 0xC2, -0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, 0x30, 0xF0, -0x20, 0x6A, 0x29, 0xF3, 0x42, 0xA2, 0x43, 0xE9, -0xBC, 0x61, 0x3D, 0x67, 0x20, 0xF0, 0x58, 0xA1, -0x1A, 0x2A, 0x20, 0xF0, 0x59, 0xA1, 0x17, 0x2A, -0x20, 0xF0, 0x5A, 0xA1, 0x14, 0x2A, 0x20, 0xF0, -0x5B, 0xA1, 0x11, 0x2A, 0x20, 0xF0, 0x5C, 0xA1, -0x1C, 0x10, 0xA0, 0xA3, 0x02, 0x25, 0x00, 0x6D, -0x01, 0x10, 0x01, 0x6D, 0xA0, 0xC2, 0x01, 0x4B, -0x01, 0x4A, 0x8A, 0xEA, 0xF6, 0x61, 0x7D, 0x67, -0x20, 0xF0, 0x58, 0xA3, 0x02, 0x22, 0x00, 0x69, -0x64, 0x10, 0x9D, 0x67, 0x20, 0xF0, 0x59, 0xA4, -0xFA, 0x2A, 0x20, 0xF0, 0x5A, 0xA4, 0xF7, 0x2A, -0x20, 0xF0, 0x5B, 0xA4, 0xF4, 0x2A, 0x20, 0xF0, -0x5C, 0xA4, 0x5D, 0x22, 0xF0, 0x17, 0xBD, 0x67, -0x29, 0xE5, 0x20, 0xF0, 0x78, 0xA2, 0x00, 0x6A, -0x08, 0x2B, 0x4C, 0x10, 0xE0, 0xF3, 0x09, 0x72, -0x0D, 0x60, 0x01, 0x4A, 0xFF, 0xF7, 0x1F, 0x6B, -0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, -0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6C, 0x60, 0x9B, -0x8C, 0xEB, 0xF0, 0x2B, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x58, 0x9A, 0x02, 0xF0, 0x00, 0x6B, -0x40, 0x9A, 0x6C, 0xEA, 0x33, 0x2A, 0xDD, 0x67, -0x2D, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0x98, 0xA3, -0xA0, 0xF2, 0x54, 0x9A, 0x01, 0x6D, 0x08, 0x6E, -0x04, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0x8C, 0x9B, 0x30, 0x93, 0x30, 0xF0, -0x20, 0x6D, 0x91, 0xE0, 0x18, 0x4B, 0x71, 0xE4, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x70, 0x9B, -0x42, 0xF6, 0xA4, 0x9D, 0x6D, 0xE2, 0xA9, 0xE2, -0xA0, 0xA4, 0xFF, 0x6F, 0x01, 0x4C, 0xEC, 0xED, -0xA0, 0xC3, 0x01, 0x4B, 0x4A, 0xEB, 0xF8, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, -0x40, 0xEA, 0x20, 0x6B, 0x4D, 0xEB, 0xFF, 0x6A, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, -0x48, 0x9A, 0x60, 0xC2, 0x01, 0x49, 0xFF, 0x6A, -0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF3, -0x42, 0xA2, 0x43, 0xE9, 0xA4, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF4, 0x4C, 0x9A, 0x2C, 0x94, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, -0x4C, 0x9A, 0x23, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, -0xCA, 0x10, 0x32, 0x94, 0x40, 0x6A, 0x4B, 0xEA, -0x8C, 0xEA, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF4, 0x4C, 0x9A, 0x2C, 0x94, -0x40, 0xEA, 0xBD, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF6, 0x50, 0x9A, 0x2E, 0x95, 0x49, 0xE0, -0xA9, 0xE2, 0x80, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF6, 0x54, 0x9A, 0x6C, 0xEC, 0x80, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x58, 0x9A, -0x15, 0x04, 0x49, 0xE0, 0xA9, 0xE2, 0x40, 0xA2, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, -0x5C, 0x9A, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0x29, 0xF3, 0x62, 0xA3, 0x0C, 0x02, 0x4D, 0xE3, -0x1B, 0x65, 0x12, 0x10, 0xC0, 0xA3, 0xFE, 0x65, -0x3F, 0x67, 0xFF, 0x6E, 0x2C, 0xEE, 0x20, 0xA5, -0x2E, 0xEE, 0x03, 0x26, 0x00, 0x6B, 0x60, 0xC2, -0x05, 0x10, 0x01, 0x4B, 0xC3, 0x67, 0xEE, 0xEE, -0x01, 0x4D, 0xF0, 0x2E, 0x01, 0x4A, 0x04, 0x4C, -0x78, 0x67, 0x4E, 0xEB, 0x80, 0xF0, 0x13, 0x2B, -0x9D, 0x67, 0x20, 0xF0, 0x50, 0xA4, 0x01, 0x72, -0x12, 0x60, 0x20, 0xF0, 0x51, 0xA4, 0x01, 0x72, -0x0E, 0x60, 0x20, 0xF0, 0x52, 0xA4, 0x01, 0x72, -0x0A, 0x60, 0x20, 0xF0, 0x53, 0xA4, 0x01, 0x72, -0x06, 0x60, 0x20, 0xF0, 0x54, 0xA4, 0x01, 0x72, -0x02, 0x60, 0x2F, 0x95, 0x4D, 0x25, 0x80, 0x18, -0xAB, 0x00, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x40, 0x9A, 0x66, 0x6B, 0x00, 0x6C, 0x60, 0xC2, -0x80, 0x18, 0x00, 0x00, 0x30, 0xF0, 0x20, 0x6A, -0x29, 0xF3, 0x4E, 0xA2, 0x01, 0x6E, 0x2F, 0xD6, -0x5A, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x64, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, -0x8C, 0xEA, 0x01, 0x22, 0x80, 0xDB, 0xFF, 0x68, -0x01, 0x48, 0x00, 0x6C, 0xB0, 0x67, 0x80, 0x18, -0xC0, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0xA3, 0xF3, 0xC7, 0xA2, 0x0C, 0x26, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, -0x42, 0xF1, 0x1C, 0x6C, 0x01, 0x6D, 0xCC, 0x36, -0x40, 0xEA, 0x01, 0x6F, 0x2F, 0xD7, 0x37, 0x10, -0xA3, 0xF3, 0xC8, 0xA2, 0x09, 0x26, 0x42, 0xF1, -0x1C, 0x6C, 0x01, 0x6D, 0xC4, 0x36, 0x01, 0x69, -0x00, 0x18, 0xDE, 0xC9, 0x2F, 0xD1, 0x2B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, -0x42, 0xF1, 0x1C, 0x6C, 0x01, 0x6D, 0xD0, 0x67, -0x40, 0xEA, 0x01, 0x6A, 0x2F, 0xD2, 0x1F, 0x10, -0x9D, 0x67, 0x20, 0xF0, 0x70, 0xC4, 0x20, 0xF0, -0x71, 0xC4, 0x20, 0xF0, 0x72, 0xC4, 0x20, 0xF0, -0x73, 0xC4, 0x20, 0xF0, 0x74, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0x29, 0xF3, 0x62, 0xA3, 0x0C, 0x02, -0x4D, 0xE3, 0x03, 0x10, 0x01, 0x6C, 0x80, 0xC2, -0x01, 0x4A, 0x6A, 0xEA, 0xFB, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF4, 0x4C, 0x9A, 0x2C, 0x94, -0x40, 0xEA, 0x00, 0x6D, 0x2F, 0xD5, 0x2C, 0x90, -0x00, 0x18, 0xEB, 0xC6, 0x1C, 0x22, 0x30, 0xF0, -0x20, 0x6E, 0x85, 0xF7, 0x08, 0x4E, 0x2D, 0xD6, -0xA0, 0xF0, 0x6F, 0xA6, 0x01, 0x6A, 0x6C, 0xEA, -0xBF, 0xF5, 0x1E, 0x2A, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6F, 0x22, 0xF6, -0x68, 0x9B, 0x30, 0x96, 0x22, 0xF6, 0xEC, 0x9F, -0x6D, 0xE0, 0x18, 0x4E, 0xFD, 0xE0, 0xCD, 0xE3, -0xA0, 0x9C, 0xDD, 0xE7, 0x47, 0x17, 0x37, 0x97, -0x36, 0x91, 0x35, 0x90, 0x1C, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x5C, 0x9A, +0x60, 0xDA, 0x00, 0x18, 0x70, 0xC4, 0x56, 0x2A, +0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF6, 0x00, 0xC5, 0xA5, 0xF7, 0x08, 0x4A, +0x83, 0xF3, 0x8B, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, +0x08, 0x2B, 0x63, 0xF3, 0x94, 0xA2, 0x80, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x11, 0x2A, 0x00, 0x6A, 0x04, 0xD2, 0x10, 0xF0, +0x23, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6D, 0x01, 0x6E, 0x00, 0xF3, 0x4C, 0x9A, +0x42, 0xF2, 0x0D, 0x4C, 0x25, 0xF6, 0x00, 0x4D, +0xE6, 0x67, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x23, 0x6C, +0x04, 0xD3, 0x42, 0xF2, 0x0D, 0x4C, 0x25, 0xF6, +0x00, 0x4D, 0x64, 0x6E, 0x01, 0x6F, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x63, 0xF3, 0x94, 0xA2, 0x10, 0x6B, 0xA3, 0x67, +0x8C, 0xED, 0x0B, 0x2D, 0x30, 0xF0, 0x20, 0x6D, +0x02, 0xF6, 0xC0, 0x9D, 0x30, 0xF0, 0x20, 0x6D, +0xE2, 0xF5, 0xBC, 0x9D, 0x8D, 0xEB, 0xC0, 0xDD, +0x3D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, +0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF6, +0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x01, 0x4A, +0x40, 0xDB, 0x32, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0xF5, 0x54, 0xA2, 0x02, 0x72, 0x03, 0x61, +0x01, 0x70, 0x10, 0x61, 0x1E, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF6, 0x4C, 0x9A, 0x01, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x64, 0x6C, 0x40, 0xEA, +0x00, 0x18, 0x69, 0xCE, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF6, 0x68, 0x9A, 0xFF, 0x6C, 0x80, 0x6D, +0x40, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, 0xAE, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x90, 0x67, 0x80, 0x18, +0x55, 0x19, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x63, 0xF3, 0x94, 0xA2, 0x09, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x63, 0xF3, 0x74, 0xC2, +0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x46, 0xF0, 0x1E, 0x4C, 0x05, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0xCC, 0xEA, +0x00, 0x6B, 0x09, 0x10, 0x79, 0xE5, 0xE0, 0xA4, +0xC0, 0xA6, 0x01, 0x4B, 0x01, 0x4C, 0xEE, 0xEE, +0x02, 0x26, 0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6E, +0x6C, 0xEE, 0x43, 0xEE, 0xF3, 0x61, 0x01, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x8F, 0xA2, +0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, +0x6F, 0xC2, 0x00, 0x6B, 0xA0, 0xF0, 0x70, 0xC2, +0xA0, 0xF0, 0x71, 0xC2, 0xA3, 0xF3, 0x64, 0xC2, +0xA3, 0xF3, 0x65, 0xC2, 0xA3, 0xF3, 0x66, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x02, 0xF6, 0x70, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, +0x80, 0xAB, 0xE1, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, +0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, +0x74, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, +0x02, 0xF6, 0x78, 0x9B, 0x40, 0xCB, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x48, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF6, 0x6C, 0x9B, 0x40, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, -0x6C, 0xEA, 0x01, 0x6C, 0xE2, 0xF5, 0x44, 0xD8, -0x80, 0x18, 0x08, 0x1B, 0xA0, 0xF0, 0x6F, 0xA0, -0x01, 0x6A, 0x01, 0x6C, 0x6D, 0xEA, 0xA0, 0xF0, -0x4F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, -0xB0, 0x9A, 0x80, 0x18, 0x5C, 0x5D, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x50, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x62, 0xF6, 0x98, 0x9C, 0x60, 0xA2, -0x07, 0x6A, 0x6C, 0xEA, 0x01, 0x4A, 0x83, 0xF3, -0x5A, 0xC0, 0x00, 0x6A, 0x83, 0xF3, 0x58, 0xC8, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x74, 0x9A, -0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x60, 0xA4, 0x01, 0x6A, 0x04, 0x67, 0x6C, 0xEA, -0x0D, 0x22, 0x80, 0x18, 0x40, 0x02, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x40, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x00, 0x18, 0x00, 0xCA, 0x00, 0x18, -0x61, 0xCE, 0x1D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x29, 0xF3, 0x4E, 0xA2, 0x14, 0x22, 0xFF, 0x69, -0x01, 0x49, 0x00, 0x6C, 0xB1, 0x67, 0x80, 0x18, -0xDD, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x64, 0x9A, 0x40, 0x9B, 0x2C, 0xEA, 0x01, 0x22, -0x20, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x5C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x80, 0x18, -0xAB, 0x00, 0x00, 0x18, 0x6D, 0xCE, 0x61, 0xA0, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA0, 0xF0, 0x70, 0xC2, 0x62, 0xA0, 0x02, 0x6F, -0x01, 0x68, 0x04, 0x6E, 0x08, 0x6D, 0x10, 0x6C, -0x6C, 0xE8, 0x6C, 0xEF, 0x6C, 0xEE, 0x6C, 0xED, -0x6C, 0xEC, 0xA0, 0xF0, 0x71, 0xC2, 0x83, 0xF3, -0x1C, 0xC2, 0x83, 0xF3, 0xFD, 0xC2, 0x83, 0xF3, -0xDE, 0xC2, 0x83, 0xF3, 0xBF, 0xC2, 0xA3, 0xF3, -0x80, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x00, 0x6B, 0xC2, 0xF4, -0x7F, 0xC2, 0xE2, 0xF4, 0x60, 0xC2, 0xC2, 0xF4, -0x7E, 0xC2, 0x00, 0x6B, 0xC2, 0xF4, 0x7C, 0xCA, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0xD1, -0x06, 0xD0, 0xFF, 0x6A, 0xCC, 0xEA, 0x08, 0xD4, -0x03, 0xD2, 0xE1, 0x9C, 0x00, 0x68, 0x00, 0x69, -0xA3, 0xEF, 0x40, 0x9C, 0x00, 0xD0, 0x01, 0xD1, -0x0A, 0x61, 0xBB, 0xEF, 0x01, 0x2D, 0xE5, 0xE8, -0x00, 0x69, 0x00, 0xD1, 0x12, 0xEB, 0x01, 0xD3, -0xB8, 0xEB, 0x12, 0xEB, 0x7F, 0xE7, 0xC5, 0x67, -0x00, 0x6B, 0x01, 0x6C, 0x00, 0x6D, 0x0C, 0x10, -0xC4, 0x30, 0xC3, 0xE8, 0x64, 0x33, 0xD0, 0x67, -0x18, 0x67, 0x6D, 0xE0, 0x84, 0x30, 0x83, 0xE8, -0x38, 0x67, 0xA4, 0x34, 0x95, 0xE1, 0x90, 0x67, -0x01, 0x53, 0x02, 0x60, 0x07, 0x2B, 0x06, 0x26, -0xE3, 0xEB, 0xEE, 0x61, 0x6A, 0xEF, 0x02, 0x61, -0x43, 0xEE, 0xEA, 0x61, 0x63, 0xEF, 0x18, 0x61, -0xEA, 0xEB, 0x02, 0x61, 0xC3, 0xEA, 0x14, 0x61, -0x00, 0x91, 0xC3, 0xE2, 0x03, 0xEA, 0x7F, 0xE7, -0x50, 0x67, 0x18, 0x67, 0x1F, 0xE7, 0x81, 0xE1, -0x23, 0xE8, 0x01, 0x91, 0x00, 0xD0, 0x18, 0x67, -0xA5, 0xE1, 0x21, 0xE0, 0x02, 0xD0, 0x04, 0xD1, -0x00, 0x90, 0x02, 0x91, 0x00, 0xD0, 0x01, 0xD1, -0x86, 0x30, 0xC0, 0xF7, 0xA0, 0x31, 0x0D, 0xE9, -0x19, 0x65, 0xA6, 0x31, 0x98, 0x67, 0x11, 0x67, -0x8D, 0xE8, 0x02, 0xD1, 0xB1, 0x67, 0x06, 0x20, -0xC0, 0xF7, 0x60, 0x30, 0xC6, 0x36, 0x0D, 0xEE, -0x66, 0x33, 0xD4, 0x17, 0x03, 0x93, 0x01, 0x73, -0x05, 0x61, 0x00, 0x94, 0x01, 0x95, 0x08, 0x90, -0x80, 0xD8, 0xA1, 0xD8, 0x07, 0x91, 0x06, 0x90, -0x04, 0x63, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0x40, 0xF4, 0x4C, 0x99, 0xFF, 0x68, 0x8C, 0xE8, -0x0D, 0xD5, 0x90, 0x67, 0x01, 0x6D, 0x40, 0xEA, -0x06, 0xD2, 0x40, 0xF4, 0x4C, 0x99, 0x90, 0x67, -0x00, 0x6D, 0x40, 0xEA, 0x04, 0xD2, 0x0D, 0x95, -0x06, 0x92, 0x04, 0x04, 0x00, 0x6E, 0x05, 0xD2, -0x80, 0x18, 0x93, 0x02, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x40, 0x9A, -0xFF, 0x6B, 0x80, 0xA2, 0x00, 0xF6, 0x80, 0x34, -0x00, 0xF6, 0x83, 0x34, 0x00, 0x54, 0x25, 0x60, -0xA0, 0xA2, 0x7F, 0x6C, 0xAC, 0xEC, 0x40, 0x6D, -0xAD, 0xEC, 0x6C, 0xEC, 0x80, 0xC2, 0x30, 0xF0, -0x20, 0x6C, 0x82, 0xF6, 0x84, 0x9C, 0x3F, 0x6D, +0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, 0x83, 0xF3, +0x58, 0xA0, 0x83, 0xF3, 0x76, 0xA8, 0x5A, 0xEB, +0x01, 0x2A, 0xE5, 0xE8, 0x10, 0xEA, 0x0E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, 0x80, 0x9C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0xA0, 0xF0, +0x9B, 0xA0, 0x3F, 0x10, 0x01, 0x72, 0x0E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, 0x84, 0x9C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0xA0, 0xF0, +0x9C, 0xA0, 0x2F, 0x10, 0x02, 0x72, 0x0E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, 0x80, 0x9C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0xA0, 0xF0, +0x9D, 0xA0, 0x1F, 0x10, 0x03, 0x72, 0x0E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, 0x84, 0x9C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0xA0, 0xF0, +0x9E, 0xA0, 0x0F, 0x10, 0x04, 0x72, 0x14, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, 0x80, 0x9C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0xA0, 0xF0, +0x9F, 0xA0, 0x80, 0x18, 0x75, 0x00, 0x83, 0xF3, +0x56, 0xA8, 0x01, 0x4A, 0x83, 0xF3, 0x56, 0xC8, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x66, 0xF0, 0x03, 0x4C, 0x05, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, 0xA0, 0xF0, +0x6F, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xA0, 0xF0, 0x4F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF5, 0xB0, 0x9A, 0x01, 0x6C, 0x80, 0x18, +0xF0, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, +0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0x02, 0xF6, +0xB4, 0x9D, 0x80, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, +0x6C, 0xEC, 0x80, 0xCD, 0x80, 0x9A, 0x30, 0xF0, +0x20, 0x6D, 0x22, 0xF6, 0xA8, 0x9D, 0x6C, 0xEC, +0x80, 0xCD, 0x40, 0x9A, 0x42, 0x32, 0x42, 0x32, +0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, +0x78, 0x9B, 0x40, 0xCB, 0x00, 0x6A, 0x83, 0xF3, +0x56, 0xC8, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xE4, 0x63, 0x37, 0x62, +0x36, 0xD1, 0x35, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x76, 0xA2, +0x9D, 0x67, 0x78, 0xC4, 0xA0, 0xF0, 0x77, 0xA2, +0x79, 0xC4, 0xA0, 0xF0, 0x78, 0xA2, 0x7A, 0xC4, +0xA0, 0xF0, 0x79, 0xA2, 0x7B, 0xC4, 0xA0, 0xF0, +0x7A, 0xA2, 0x7C, 0xC4, 0x83, 0xF3, 0x7A, 0xA2, +0x20, 0xF0, 0x60, 0xC4, 0x83, 0xF3, 0x7B, 0xA2, +0x20, 0xF0, 0x61, 0xC4, 0x83, 0xF3, 0x7C, 0xA2, +0x20, 0xF0, 0x62, 0xC4, 0x83, 0xF3, 0x7D, 0xA2, +0x20, 0xF0, 0x63, 0xC4, 0x83, 0xF3, 0x7E, 0xA2, +0x20, 0xF0, 0x64, 0xC4, 0x83, 0xF3, 0x7F, 0xA2, +0x20, 0xF0, 0x68, 0xC4, 0xA3, 0xF3, 0x60, 0xA2, +0x20, 0xF0, 0x69, 0xC4, 0xA3, 0xF3, 0x61, 0xA2, +0x20, 0xF0, 0x6A, 0xC4, 0xA3, 0xF3, 0x62, 0xA2, +0x20, 0xF0, 0x6B, 0xC4, 0xA3, 0xF3, 0x63, 0xA2, +0x20, 0xF0, 0x6C, 0xC4, 0x00, 0x6B, 0x20, 0xF0, +0x70, 0xC4, 0x20, 0xF0, 0x71, 0xC4, 0x20, 0xF0, +0x72, 0xC4, 0x20, 0xF0, 0x73, 0xC4, 0x83, 0xF3, +0x58, 0xA2, 0x20, 0xF0, 0x74, 0xC4, 0x0C, 0x03, +0x69, 0xE2, 0x03, 0x10, 0x01, 0x6C, 0x80, 0xC3, +0x01, 0x4B, 0x4A, 0xEB, 0xFB, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF6, 0x50, 0x9A, 0xE1, 0xF7, +0x1F, 0x6E, 0xFF, 0xF7, 0x1F, 0x68, 0x40, 0xAA, +0x1A, 0x05, 0x10, 0x04, 0x4C, 0xEE, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x58, 0x9A, 0x15, 0x03, +0x40, 0xAA, 0x2D, 0xD6, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x49, 0xF3, 0xE0, 0xA2, 0x00, 0x6A, +0x2C, 0xD7, 0x20, 0x10, 0xFD, 0x67, 0x59, 0xE7, +0x38, 0xA6, 0x2D, 0x96, 0x30, 0xF0, 0x20, 0x6F, +0x25, 0xE6, 0x22, 0xF6, 0xDC, 0x9F, 0x3C, 0x31, +0x20, 0xDD, 0x3D, 0xE6, 0xC0, 0xA7, 0xFD, 0x67, +0x5D, 0xE7, 0xD0, 0xC7, 0x30, 0xF0, 0x20, 0x6E, +0x42, 0xF6, 0xE0, 0x9E, 0x01, 0x4A, 0x04, 0x4D, +0xF9, 0xE1, 0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xDC, +0x42, 0xF6, 0xC4, 0x9F, 0x04, 0x4C, 0xC5, 0xE1, +0x20, 0xDB, 0x04, 0x4B, 0x2C, 0x97, 0xFF, 0x69, +0x4C, 0xE9, 0xE3, 0xE9, 0xDB, 0x61, 0x00, 0x69, +0x2F, 0xD1, 0x34, 0x12, 0x7D, 0x67, 0x00, 0x6A, +0x30, 0xF0, 0x20, 0x69, 0x20, 0xF0, 0x58, 0xC3, +0x20, 0xF0, 0x59, 0xC3, 0x20, 0xF0, 0x5A, 0xC3, +0x20, 0xF0, 0x5B, 0xC3, 0x20, 0xF0, 0x5C, 0xC3, +0xC0, 0xF3, 0x40, 0x99, 0x81, 0x40, 0x40, 0xEA, +0x2C, 0xD2, 0xC0, 0xF3, 0x40, 0x99, 0x90, 0x67, +0x40, 0xEA, 0x2C, 0x94, 0x80, 0x34, 0x4D, 0xEC, +0xE7, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0xC0, 0xF3, +0x40, 0x99, 0x2C, 0xD4, 0x82, 0x40, 0x40, 0xEA, +0x0F, 0x6B, 0x4C, 0xEB, 0xFF, 0x6D, 0xC0, 0xF3, +0x40, 0x99, 0x6C, 0x33, 0xAC, 0xEB, 0x30, 0xD3, +0x87, 0x40, 0x40, 0xEA, 0x30, 0x96, 0xFF, 0x6F, +0x32, 0xD2, 0x18, 0x4E, 0xC0, 0xF3, 0x40, 0x99, +0x31, 0xD6, 0xEC, 0xEE, 0x11, 0xE6, 0x2E, 0xD6, +0x40, 0xEA, 0x22, 0x67, 0x2C, 0x93, 0x31, 0x95, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x50, 0x9A, +0xB1, 0xE3, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6B, +0x6C, 0xEA, 0x2D, 0x96, 0x09, 0xE2, 0x2C, 0xD2, +0x2C, 0x97, 0xE2, 0xF5, 0x44, 0x9E, 0xE3, 0xEA, +0x03, 0x60, 0x4F, 0xEA, 0x5D, 0xE7, 0x2C, 0xD7, +0x04, 0x6A, 0x4B, 0xEA, 0x2C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x40, 0x72, 0x00, 0xF1, 0x13, 0x61, +0x30, 0xF0, 0x20, 0x69, 0x2E, 0x93, 0x87, 0x40, +0xC0, 0xF3, 0x40, 0x99, 0x11, 0x4C, 0x71, 0xE4, +0x40, 0xEA, 0xE0, 0xF0, 0x1A, 0x2A, 0x2E, 0x95, +0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, 0x12, 0x4C, +0xB1, 0xE4, 0x40, 0xEA, 0x30, 0x96, 0x00, 0x6F, +0x2E, 0xD2, 0xC5, 0xE0, 0x32, 0x49, 0x2D, 0xD7, +0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x40, 0x9A, 0x91, 0x67, 0x01, 0x49, 0x40, 0xEA, +0x2D, 0x95, 0x9D, 0x67, 0xAD, 0xE4, 0x01, 0x4D, +0x60, 0xF0, 0x5C, 0xC3, 0x2D, 0xD5, 0x2D, 0x96, +0x2E, 0x97, 0xFF, 0x6A, 0xCC, 0xEA, 0xE3, 0xEA, +0xEC, 0x61, 0x00, 0x69, 0x46, 0x2F, 0x30, 0xF0, +0x20, 0x6C, 0x49, 0xF3, 0x80, 0xA4, 0x0E, 0x02, +0x08, 0x03, 0x51, 0xE4, 0x5C, 0x10, 0x04, 0x02, +0x2D, 0xE2, 0x2D, 0xD3, 0x2E, 0x94, 0x60, 0xA3, +0x8E, 0xEB, 0x0D, 0x2B, 0x28, 0x33, 0x69, 0xE2, +0x8C, 0x9A, 0x2E, 0x96, 0x1F, 0x05, 0x80, 0x18, +0x5F, 0x00, 0x05, 0x22, 0x2D, 0x95, 0x01, 0x6A, +0x20, 0xF0, 0x48, 0xC5, 0x27, 0x10, 0x2E, 0x96, +0x03, 0x76, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x82, 0xF0, 0x08, 0x4C, 0x1F, 0x05, 0x03, 0x6E, +0x80, 0x18, 0x5F, 0x00, 0x09, 0x2A, 0x30, 0xF0, +0x20, 0x6C, 0x82, 0xF0, 0x0C, 0x4C, 0x1F, 0x05, +0x03, 0x6E, 0x80, 0x18, 0x5F, 0x00, 0x08, 0x22, +0x04, 0x02, 0x29, 0xE2, 0x78, 0xA2, 0x0B, 0x2B, +0x90, 0xA2, 0x0A, 0x2C, 0x01, 0x6B, 0x08, 0x10, +0xFD, 0x67, 0x2D, 0xE7, 0x20, 0xF0, 0x58, 0xC3, +0x05, 0x10, 0x04, 0x02, 0x29, 0xE2, 0x00, 0x6B, +0x20, 0xF0, 0x68, 0xC2, 0x01, 0x49, 0xFF, 0x6A, +0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF3, +0x40, 0xA2, 0x43, 0xE9, 0xBC, 0x61, 0x3D, 0x67, +0x20, 0xF0, 0x58, 0xA1, 0x1A, 0x2A, 0x20, 0xF0, +0x59, 0xA1, 0x17, 0x2A, 0x20, 0xF0, 0x5A, 0xA1, +0x14, 0x2A, 0x20, 0xF0, 0x5B, 0xA1, 0x11, 0x2A, +0x20, 0xF0, 0x5C, 0xA1, 0x1C, 0x10, 0xA0, 0xA3, +0x02, 0x25, 0x00, 0x6D, 0x01, 0x10, 0x01, 0x6D, +0xA0, 0xC2, 0x01, 0x4B, 0x01, 0x4A, 0x8A, 0xEA, +0xF6, 0x61, 0x7D, 0x67, 0x20, 0xF0, 0x58, 0xA3, +0x02, 0x22, 0x00, 0x69, 0x64, 0x10, 0x9D, 0x67, +0x20, 0xF0, 0x59, 0xA4, 0xFA, 0x2A, 0x20, 0xF0, +0x5A, 0xA4, 0xF7, 0x2A, 0x20, 0xF0, 0x5B, 0xA4, +0xF4, 0x2A, 0x20, 0xF0, 0x5C, 0xA4, 0x5D, 0x22, +0xF0, 0x17, 0xBD, 0x67, 0x29, 0xE5, 0x20, 0xF0, +0x78, 0xA2, 0x00, 0x6A, 0x08, 0x2B, 0x4C, 0x10, +0xE0, 0xF3, 0x09, 0x72, 0x0D, 0x60, 0x01, 0x4A, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x02, 0xF6, 0x7C, 0x9B, 0x02, 0xF0, +0x00, 0x6C, 0x60, 0x9B, 0x8C, 0xEB, 0xF0, 0x2B, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, +0x02, 0xF0, 0x00, 0x6B, 0x40, 0x9A, 0x6C, 0xEA, +0x33, 0x2A, 0xDD, 0x67, 0x2D, 0xE6, 0x30, 0xF0, +0x20, 0x6A, 0x98, 0xA3, 0xA0, 0xF2, 0x54, 0x9A, +0x01, 0x6D, 0x08, 0x6E, 0x04, 0x6F, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x90, 0x9B, +0x30, 0x93, 0x30, 0xF0, 0x20, 0x6D, 0x91, 0xE0, +0x18, 0x4B, 0x71, 0xE4, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF6, 0x74, 0x9B, 0x42, 0xF6, 0xA8, 0x9D, +0x6D, 0xE2, 0xA9, 0xE2, 0xA0, 0xA4, 0xFF, 0x6F, +0x01, 0x4C, 0xEC, 0xED, 0xA0, 0xC3, 0x01, 0x4B, +0x4A, 0xEB, 0xF8, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x20, 0x6B, +0x4D, 0xEB, 0xFF, 0x6A, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF6, 0x4C, 0x9A, 0x60, 0xC2, +0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0x49, 0xF3, 0x40, 0xA2, 0x43, 0xE9, +0xA4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x4C, 0x9A, 0x2C, 0x94, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF6, 0x50, 0x9A, 0x23, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0xCA, 0x10, 0x32, 0x94, +0x40, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x6C, 0xEA, +0x07, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x4C, 0x9A, 0x2C, 0x94, 0x40, 0xEA, 0xBD, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x54, 0x9A, +0x2E, 0x95, 0x49, 0xE0, 0xA9, 0xE2, 0x80, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x58, 0x9A, +0x6C, 0xEC, 0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF6, 0x5C, 0x9A, 0x15, 0x04, 0x49, 0xE0, +0xA9, 0xE2, 0x40, 0xA2, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF6, 0x40, 0x9A, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF3, 0x60, 0xA3, +0x0C, 0x02, 0x4D, 0xE3, 0x1B, 0x65, 0x12, 0x10, +0xC0, 0xA3, 0xFE, 0x65, 0x3F, 0x67, 0xFF, 0x6E, +0x2C, 0xEE, 0x20, 0xA5, 0x2E, 0xEE, 0x03, 0x26, +0x00, 0x6B, 0x60, 0xC2, 0x05, 0x10, 0x01, 0x4B, +0xC3, 0x67, 0xEE, 0xEE, 0x01, 0x4D, 0xF0, 0x2E, +0x01, 0x4A, 0x04, 0x4C, 0x78, 0x67, 0x4E, 0xEB, +0x80, 0xF0, 0x13, 0x2B, 0x9D, 0x67, 0x20, 0xF0, +0x50, 0xA4, 0x01, 0x72, 0x12, 0x60, 0x20, 0xF0, +0x51, 0xA4, 0x01, 0x72, 0x0E, 0x60, 0x20, 0xF0, +0x52, 0xA4, 0x01, 0x72, 0x0A, 0x60, 0x20, 0xF0, +0x53, 0xA4, 0x01, 0x72, 0x06, 0x60, 0x20, 0xF0, +0x54, 0xA4, 0x01, 0x72, 0x02, 0x60, 0x2F, 0x95, +0x4D, 0x25, 0x80, 0x18, 0xBC, 0x00, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF6, 0x44, 0x9A, 0x66, 0x6B, +0x00, 0x6C, 0x60, 0xC2, 0x80, 0x18, 0x00, 0x00, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF3, 0x4C, 0xA2, +0x01, 0x6E, 0x2F, 0xD6, 0x5A, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF6, 0x68, 0x9A, 0xFF, 0x6C, +0x01, 0x4C, 0x40, 0x9B, 0x8C, 0xEA, 0x01, 0x22, +0x80, 0xDB, 0xFF, 0x68, 0x01, 0x48, 0x00, 0x6C, +0xB0, 0x67, 0x80, 0x18, 0x23, 0x5E, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xA3, 0xF3, +0xC5, 0xA2, 0x0C, 0x26, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x48, 0x9A, 0x42, 0xF1, 0x1C, 0x6C, +0x01, 0x6D, 0xCC, 0x36, 0x40, 0xEA, 0x01, 0x6F, +0x2F, 0xD7, 0x37, 0x10, 0xA3, 0xF3, 0xC6, 0xA2, +0x09, 0x26, 0x42, 0xF1, 0x1C, 0x6C, 0x01, 0x6D, +0xC4, 0x36, 0x01, 0x69, 0x00, 0x18, 0xEB, 0xC9, +0x2F, 0xD1, 0x2B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x48, 0x9A, 0x42, 0xF1, 0x1C, 0x6C, +0x01, 0x6D, 0xD0, 0x67, 0x40, 0xEA, 0x01, 0x6A, +0x2F, 0xD2, 0x1F, 0x10, 0x9D, 0x67, 0x20, 0xF0, +0x70, 0xC4, 0x20, 0xF0, 0x71, 0xC4, 0x20, 0xF0, +0x72, 0xC4, 0x20, 0xF0, 0x73, 0xC4, 0x20, 0xF0, +0x74, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF3, +0x60, 0xA3, 0x0C, 0x02, 0x4D, 0xE3, 0x03, 0x10, +0x01, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, +0xFB, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x4C, 0x9A, 0x2C, 0x94, 0x40, 0xEA, 0x00, 0x6D, +0x2F, 0xD5, 0x2C, 0x90, 0x00, 0x18, 0xF8, 0xC6, +0x1C, 0x22, 0x30, 0xF0, 0x20, 0x6E, 0xA5, 0xF7, +0x08, 0x4E, 0x2D, 0xD6, 0xA0, 0xF0, 0x6F, 0xA6, +0x01, 0x6A, 0x6C, 0xEA, 0xBF, 0xF5, 0x1E, 0x2A, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6F, 0x22, 0xF6, 0x6C, 0x9B, 0x30, 0x96, +0x22, 0xF6, 0xF0, 0x9F, 0x6D, 0xE0, 0x18, 0x4E, +0xFD, 0xE0, 0xCD, 0xE3, 0xA0, 0x9C, 0xDD, 0xE7, +0x47, 0x17, 0x37, 0x97, 0x36, 0x91, 0x35, 0x90, +0x1C, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF6, +0x70, 0x9B, 0x40, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF7, 0x08, 0x48, 0x6C, 0xEA, 0x01, 0x6C, +0xE2, 0xF5, 0x44, 0xD8, 0x80, 0x18, 0x12, 0x1B, +0xA0, 0xF0, 0x6F, 0xA0, 0x01, 0x6A, 0x01, 0x6C, +0x6D, 0xEA, 0xA0, 0xF0, 0x4F, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF5, 0xB0, 0x9A, 0x80, 0x18, +0xBF, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x54, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF6, +0x9C, 0x9C, 0x60, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, +0x01, 0x4A, 0x83, 0xF3, 0x58, 0xC0, 0x00, 0x6A, +0x83, 0xF3, 0x56, 0xC8, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF6, 0x78, 0x9A, 0x40, 0x9B, 0x8C, 0xEA, +0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x60, 0xA4, 0x01, 0x6A, +0x04, 0x67, 0x6C, 0xEA, 0x0D, 0x22, 0x80, 0x18, +0x51, 0x02, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x00, 0x18, +0x0D, 0xCA, 0x00, 0x18, 0x86, 0xCE, 0x1D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF3, 0x4C, 0xA2, +0x14, 0x22, 0xFF, 0x69, 0x01, 0x49, 0x00, 0x6C, +0xB1, 0x67, 0x80, 0x18, 0x40, 0x5E, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF6, 0x68, 0x9A, 0x40, 0x9B, +0x2C, 0xEA, 0x01, 0x22, 0x20, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF6, 0x40, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x80, 0x18, 0xBC, 0x00, 0x00, 0x18, +0x92, 0xCE, 0x61, 0xA0, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x70, 0xC2, +0x62, 0xA0, 0x02, 0x6F, 0x01, 0x68, 0x04, 0x6E, +0x08, 0x6D, 0x10, 0x6C, 0x6C, 0xE8, 0x6C, 0xEF, +0x6C, 0xEE, 0x6C, 0xED, 0x6C, 0xEC, 0xA0, 0xF0, +0x71, 0xC2, 0x83, 0xF3, 0x1A, 0xC2, 0x83, 0xF3, +0xFB, 0xC2, 0x83, 0xF3, 0xDC, 0xC2, 0x83, 0xF3, +0xBD, 0xC2, 0x83, 0xF3, 0x9E, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x00, 0x6B, 0xC2, 0xF4, 0x7F, 0xC2, 0xE2, 0xF4, +0x60, 0xC2, 0xC2, 0xF4, 0x7E, 0xC2, 0x00, 0x6B, +0xC2, 0xF4, 0x7C, 0xCA, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0xD1, 0x06, 0xD0, 0xFF, 0x6A, +0xCC, 0xEA, 0x08, 0xD4, 0x03, 0xD2, 0xE1, 0x9C, +0x00, 0x68, 0x00, 0x69, 0xA3, 0xEF, 0x40, 0x9C, +0x00, 0xD0, 0x01, 0xD1, 0x0A, 0x61, 0xBB, 0xEF, +0x01, 0x2D, 0xE5, 0xE8, 0x00, 0x69, 0x00, 0xD1, +0x12, 0xEB, 0x01, 0xD3, 0xB8, 0xEB, 0x12, 0xEB, +0x7F, 0xE7, 0xC5, 0x67, 0x00, 0x6B, 0x01, 0x6C, +0x00, 0x6D, 0x0C, 0x10, 0xC4, 0x30, 0xC3, 0xE8, +0x64, 0x33, 0xD0, 0x67, 0x18, 0x67, 0x6D, 0xE0, +0x84, 0x30, 0x83, 0xE8, 0x38, 0x67, 0xA4, 0x34, +0x95, 0xE1, 0x90, 0x67, 0x01, 0x53, 0x02, 0x60, +0x07, 0x2B, 0x06, 0x26, 0xE3, 0xEB, 0xEE, 0x61, +0x6A, 0xEF, 0x02, 0x61, 0x43, 0xEE, 0xEA, 0x61, +0x63, 0xEF, 0x18, 0x61, 0xEA, 0xEB, 0x02, 0x61, +0xC3, 0xEA, 0x14, 0x61, 0x00, 0x91, 0xC3, 0xE2, +0x03, 0xEA, 0x7F, 0xE7, 0x50, 0x67, 0x18, 0x67, +0x1F, 0xE7, 0x81, 0xE1, 0x23, 0xE8, 0x01, 0x91, +0x00, 0xD0, 0x18, 0x67, 0xA5, 0xE1, 0x21, 0xE0, +0x02, 0xD0, 0x04, 0xD1, 0x00, 0x90, 0x02, 0x91, +0x00, 0xD0, 0x01, 0xD1, 0x86, 0x30, 0xC0, 0xF7, +0xA0, 0x31, 0x0D, 0xE9, 0x19, 0x65, 0xA6, 0x31, +0x98, 0x67, 0x11, 0x67, 0x8D, 0xE8, 0x02, 0xD1, +0xB1, 0x67, 0x06, 0x20, 0xC0, 0xF7, 0x60, 0x30, +0xC6, 0x36, 0x0D, 0xEE, 0x66, 0x33, 0xD4, 0x17, +0x03, 0x93, 0x01, 0x73, 0x05, 0x61, 0x00, 0x94, +0x01, 0x95, 0x08, 0x90, 0x80, 0xD8, 0xA1, 0xD8, +0x07, 0x91, 0x06, 0x90, 0x04, 0x63, 0x20, 0xE8, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x69, 0x40, 0xF4, 0x4C, 0x99, +0xFF, 0x68, 0x8C, 0xE8, 0x0D, 0xD5, 0x90, 0x67, +0x01, 0x6D, 0x40, 0xEA, 0x06, 0xD2, 0x40, 0xF4, +0x4C, 0x99, 0x90, 0x67, 0x00, 0x6D, 0x40, 0xEA, +0x04, 0xD2, 0x0D, 0x95, 0x06, 0x92, 0x04, 0x04, +0x00, 0x6E, 0x05, 0xD2, 0x80, 0x18, 0xA4, 0x02, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF6, 0x44, 0x9A, 0xFF, 0x6B, 0x80, 0xA2, +0x00, 0xF6, 0x80, 0x34, 0x00, 0xF6, 0x83, 0x34, +0x00, 0x54, 0x25, 0x60, 0xA0, 0xA2, 0x7F, 0x6C, +0xAC, 0xEC, 0x40, 0x6D, 0xAD, 0xEC, 0x6C, 0xEC, +0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF6, +0x88, 0x9C, 0x3F, 0x6D, 0x80, 0xA4, 0x30, 0xF0, +0x20, 0x6C, 0x82, 0xF6, 0x8C, 0x9C, 0x80, 0xA4, +0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF6, 0x90, 0x9C, 0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF6, -0x88, 0x9C, 0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, -0x82, 0xF6, 0x8C, 0x9C, 0x80, 0xA4, 0x30, 0xF0, -0x20, 0x6C, 0x82, 0xF6, 0x90, 0x9C, 0x80, 0xA4, -0x80, 0xA2, 0x6C, 0xEC, 0xAD, 0xEC, 0x6C, 0xEC, -0x80, 0xC2, 0x80, 0xA2, 0xBF, 0x6B, 0x8C, 0xEB, -0x60, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF6, 0x74, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, -0xC0, 0xA3, 0x4C, 0xED, 0x15, 0x26, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x78, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x82, 0xF6, 0x9C, 0x9C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, -0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x20, 0xE8, -0x80, 0xC3, 0x0B, 0x25, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF6, 0x80, 0x9B, 0x80, 0x6D, 0xAB, 0xED, -0x60, 0xA4, 0x4C, 0xEB, 0xAE, 0xEB, 0x4C, 0xEB, -0x60, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF5, 0x7C, 0x9B, 0x30, 0xF0, 0x20, 0x69, -0x05, 0xF6, 0x48, 0x99, 0xE0, 0x9B, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF6, 0x64, 0x9B, 0x50, 0x32, -0x6D, 0xE2, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF6, 0x68, 0x9B, 0x6D, 0xE2, 0x80, 0xDB, +0x94, 0x9C, 0x80, 0xA4, 0x80, 0xA2, 0x6C, 0xEC, +0xAD, 0xEC, 0x6C, 0xEC, 0x80, 0xC2, 0x80, 0xA2, +0xBF, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF6, 0x78, 0x9B, +0xFF, 0x6A, 0x4C, 0xEC, 0xC0, 0xA3, 0x4C, 0xED, +0x15, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, +0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, +0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, +0x64, 0xDA, 0x20, 0xE8, 0x80, 0xC3, 0x0B, 0x25, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x84, 0x9B, +0x80, 0x6D, 0xAB, 0xED, 0x60, 0xA4, 0x4C, 0xEB, +0xAE, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, 0x7C, 0x9B, +0x30, 0xF0, 0x20, 0x69, 0x25, 0xF6, 0x4C, 0x99, +0xE0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x68, 0x9B, 0x50, 0x32, 0x6D, 0xE2, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x6C, 0x9B, -0x6D, 0xE2, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF6, 0x70, 0x9B, 0x69, 0xE2, 0xC0, 0xDA, -0x05, 0xF6, 0x08, 0x99, 0x01, 0x48, 0x00, 0xF1, -0x00, 0x70, 0x05, 0xF6, 0x08, 0xD9, 0x05, 0x60, -0x00, 0xF2, 0x00, 0x6A, 0x4E, 0xE8, 0x06, 0x20, -0x0B, 0x10, 0x10, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0xF3, 0x02, 0x06, 0x10, 0x11, 0x6C, 0x01, 0x6D, -0x80, 0x18, 0xF3, 0x02, 0x05, 0xF6, 0x08, 0xD9, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x6D, 0xE2, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x70, 0x9B, 0x6D, 0xE2, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x74, 0x9B, +0x69, 0xE2, 0xC0, 0xDA, 0x25, 0xF6, 0x0C, 0x99, +0x01, 0x48, 0x00, 0xF1, 0x00, 0x70, 0x25, 0xF6, +0x0C, 0xD9, 0x05, 0x60, 0x00, 0xF2, 0x00, 0x6A, +0x4E, 0xE8, 0x06, 0x20, 0x0B, 0x10, 0x10, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0x04, 0x03, 0x06, 0x10, +0x11, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x04, 0x03, +0x25, 0xF6, 0x0C, 0xD9, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, 0x68, 0xA2, +0x01, 0x4B, 0x25, 0xF6, 0x68, 0xC2, 0x25, 0xF6, +0x88, 0xA2, 0x14, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, +0xE5, 0xE8, 0x10, 0xEB, 0x02, 0x2B, 0x25, 0xF6, +0x68, 0xC2, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6A, 0x0B, 0xD7, 0xE0, 0xAE, 0x1F, 0xF7, 0x00, 0x6B, 0xEC, 0xEB, 0x02, 0xF0, 0x00, 0x73, @@ -4421,648 +4457,640 @@ u8 array_mp_8822c_fw_ap[] = { 0x04, 0x49, 0xF1, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0xD1, 0x08, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, -0x76, 0xA2, 0x73, 0x2B, 0x01, 0x6B, 0x30, 0xF0, -0x21, 0x6E, 0x30, 0xF0, 0x21, 0x6D, 0xCA, 0xF3, -0x65, 0xC2, 0xCA, 0xF3, 0x66, 0xC2, 0x70, 0xF4, -0x0C, 0x4E, 0x70, 0xF3, 0x14, 0x4D, 0x00, 0x6A, -0x00, 0x6B, 0x60, 0xDE, 0x30, 0xF0, 0x20, 0x6C, -0x91, 0xF2, 0x6F, 0x42, 0x85, 0xF7, 0x08, 0x4C, -0x6C, 0x33, 0x6D, 0xE4, 0x04, 0x4B, 0x03, 0xD3, -0x32, 0xF5, 0x6C, 0x42, 0x68, 0x33, 0x6D, 0xE4, -0x04, 0x4B, 0x02, 0xD3, 0x06, 0x6B, 0x78, 0xEA, -0x00, 0xD5, 0x00, 0x6F, 0x12, 0xEB, 0x6D, 0xE4, -0x4A, 0xF7, 0x1D, 0x4B, 0x03, 0x90, 0x00, 0x6C, -0x00, 0x69, 0x80, 0xD8, 0x02, 0x90, 0x80, 0xC8, -0x44, 0x30, 0x01, 0xE7, 0x65, 0xF2, 0x0C, 0x48, -0x30, 0xF0, 0x20, 0x6C, 0x04, 0x30, 0x85, 0xF7, -0x08, 0x4C, 0x11, 0xE4, 0x04, 0x4C, 0x04, 0xD4, -0x00, 0x94, 0x01, 0xD4, 0x04, 0x90, 0x01, 0x6C, -0x06, 0xD2, 0x80, 0xC0, 0x44, 0x34, 0xF1, 0xE4, -0x84, 0x34, 0x91, 0xE1, 0x30, 0xF0, 0x20, 0x68, -0x90, 0x34, 0x85, 0xF7, 0x08, 0x48, 0x91, 0xE0, -0xCA, 0xF3, 0x1C, 0x4C, 0x01, 0x92, 0x00, 0x68, -0x00, 0xCC, 0x80, 0xF0, 0x00, 0xCC, 0x02, 0x4C, -0x4A, 0xEC, 0xF8, 0x61, 0x04, 0x94, 0x01, 0x49, -0x02, 0x71, 0x01, 0x4C, 0x04, 0xD4, 0x01, 0x94, -0x06, 0x92, 0x10, 0x4C, 0x01, 0xD4, 0xDE, 0x61, -0x00, 0xC3, 0x01, 0xC3, 0x02, 0xC3, 0x03, 0x90, -0x02, 0x94, 0x01, 0x4F, 0x04, 0x48, 0x03, 0xD0, -0x00, 0x90, 0x02, 0x4C, 0x02, 0x77, 0x20, 0x48, -0x02, 0xD4, 0x03, 0x4B, 0x00, 0xD0, 0xBA, 0x61, -0x01, 0x4A, 0x02, 0x72, 0x04, 0x4E, 0x40, 0x4D, -0x9B, 0x61, 0x09, 0x91, 0x08, 0x90, 0x05, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0xE0, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF4, 0x08, 0x4C, -0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x05, 0x56, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF4, 0x00, 0x6C, -0x85, 0xF7, 0x08, 0x4B, 0x4C, 0xEC, 0xEA, 0xF4, -0x4C, 0xDB, 0x82, 0x32, 0x4A, 0x32, 0x02, 0x72, -0x0A, 0x60, 0x03, 0x6C, 0x4E, 0xEC, 0x04, 0x24, -0x01, 0x72, 0x02, 0x6A, 0x05, 0x60, 0x06, 0x10, -0xAA, 0xF3, 0x95, 0xC3, 0x03, 0x10, 0x01, 0x6A, -0xAA, 0xF3, 0x55, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF5, 0x70, 0x9B, 0xEA, 0xF4, 0x8C, 0x9A, -0x8C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0xAA, 0xF3, -0x74, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x68, 0x05, 0xD5, 0x04, 0xD4, 0x05, 0x92, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x00, 0x4B, -0xE0, 0x9B, 0xC0, 0xA2, 0x30, 0xF0, 0x20, 0x69, -0x49, 0xF4, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x05, 0x56, 0x04, 0x93, 0x91, 0x67, -0x01, 0x6D, 0x40, 0xDB, 0x05, 0x92, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF7, 0x00, 0x4B, 0xE0, 0x9B, -0xC0, 0xA2, 0x01, 0x48, 0x80, 0x18, 0x05, 0x56, -0x04, 0x93, 0x41, 0xDB, 0xFF, 0x6A, 0x4C, 0xE8, -0x05, 0x92, 0x08, 0x4B, 0x03, 0x70, 0x01, 0x4A, -0x05, 0xD2, 0x04, 0xD3, 0xD8, 0x61, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x69, 0xAC, 0xE9, 0x00, 0x68, 0x85, 0xF5, -0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0xA5, 0x19, -0x55, 0x72, 0x0C, 0x61, 0x00, 0x6A, 0x15, 0x21, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, 0xA0, 0x9A, -0x03, 0xF3, 0x08, 0x6C, 0x80, 0x18, 0xA5, 0x19, -0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x01, 0x48, -0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, -0x01, 0x6A, 0x32, 0x58, 0x01, 0x60, 0xDF, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x00, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x01, 0x72, -0x05, 0xD4, 0x24, 0x61, 0x44, 0x67, 0x04, 0x4A, -0x01, 0x68, 0x30, 0xF0, 0x20, 0x69, 0x04, 0xEA, -0x00, 0xF2, 0x08, 0x6A, 0x4D, 0xE8, 0xC0, 0xF3, -0x44, 0x99, 0x01, 0x6D, 0xD0, 0x67, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x01, 0x6D, 0xAB, 0xED, 0xC1, 0x40, -0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, -0x40, 0xEA, 0x05, 0x94, 0x01, 0x6D, 0x80, 0x18, -0xC2, 0x03, 0xD2, 0x10, 0x02, 0x72, 0x01, 0x6A, -0xC0, 0xF0, 0x0E, 0x61, 0x30, 0xF0, 0x21, 0x6A, -0x50, 0xF3, 0x42, 0xA2, 0x00, 0x68, 0x09, 0x72, -0x0C, 0x60, 0x12, 0x72, 0x01, 0x68, 0x09, 0x60, -0x1B, 0x72, 0x02, 0x68, 0x06, 0x60, 0x24, 0x68, -0x4E, 0xE8, 0x01, 0x58, 0x18, 0x67, 0x04, 0x6A, -0x03, 0xE2, 0x05, 0x92, 0x30, 0xF0, 0x20, 0x69, -0x01, 0x6D, 0x44, 0x32, 0x07, 0xD2, 0x07, 0x93, -0x08, 0x6A, 0x03, 0xF3, 0x00, 0x6C, 0x4D, 0xEB, -0xC0, 0xF3, 0x44, 0x99, 0xC3, 0x67, 0x07, 0xD3, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x85, 0xF7, 0x08, 0x4C, 0x04, 0xD4, 0x04, 0x93, -0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xAA, 0xF3, -0xDA, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x05, 0x92, 0x01, 0x6C, 0x01, 0x6D, -0x04, 0x4A, 0x84, 0xEA, 0x00, 0xF3, 0x08, 0x6A, -0x4D, 0xEC, 0x06, 0xD4, 0xC0, 0xF3, 0x44, 0x99, -0x06, 0x96, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x06, 0x96, 0xC0, 0xF3, 0x44, 0x99, -0x01, 0x6D, 0xAB, 0xED, 0x01, 0x4E, 0x03, 0xF3, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x48, 0x9A, 0x02, 0x6C, 0x40, 0xEA, -0x05, 0x94, 0x01, 0x6D, 0x80, 0x18, 0xC2, 0x03, -0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF1, 0x04, 0x4A, 0x41, 0xE0, 0x40, 0xA0, -0x04, 0x93, 0xAA, 0xF3, 0x5A, 0xC3, 0x6B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0x95, 0x22, 0xF7, -0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF4, -0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, 0x05, 0x56, -0x05, 0xD2, 0x07, 0x96, 0xC0, 0xF3, 0x44, 0x99, -0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x05, 0x94, 0xE3, 0xF7, 0x00, 0x6A, -0x04, 0x93, 0x8C, 0xEA, 0x56, 0x34, 0x96, 0x32, -0xAA, 0xF3, 0x5C, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, -0x02, 0x5A, 0xFF, 0x6B, 0x0B, 0x60, 0x03, 0x70, -0x03, 0x60, 0x01, 0x48, 0x6C, 0xE8, 0x49, 0x10, -0x04, 0x94, 0x01, 0x6B, 0x03, 0x68, 0x6A, 0xF7, -0x71, 0xC4, 0x43, 0x10, 0x0A, 0x5A, 0x0B, 0x61, -0x04, 0x20, 0xFF, 0x48, 0x6C, 0xE8, 0x01, 0x6B, -0x0B, 0x10, 0x04, 0x94, 0x01, 0x6B, 0x6A, 0xF7, -0x71, 0xC4, 0x01, 0x6B, 0x09, 0x10, 0x04, 0x94, -0x00, 0x6B, 0x6A, 0xF7, 0x71, 0xC4, 0x00, 0x6B, -0x03, 0x20, 0x04, 0x58, 0x01, 0x61, 0x03, 0x68, -0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF1, 0x04, 0x4D, -0xA1, 0xE0, 0xA0, 0xA0, 0x30, 0xF0, 0x20, 0x6C, -0x85, 0xF7, 0x08, 0x4C, 0xAA, 0xF3, 0xBA, 0xC4, -0x0F, 0x2B, 0xAA, 0xF3, 0xDA, 0xA4, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x64, 0x9B, 0xC0, 0x36, -0x01, 0x6D, 0x4D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, -0xAB, 0xED, 0x40, 0xEB, 0x00, 0x6A, 0x0C, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x01, 0x6D, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, -0xFF, 0xF7, 0x1F, 0x6E, 0x40, 0xEA, 0x01, 0x6A, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x01, 0x6B, 0xCE, 0x17, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x00, 0x6B, 0x0B, 0xD7, 0xE0, 0xAE, 0x1F, 0xF7, -0x00, 0x6A, 0xEC, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xAE, 0xC2, 0xF5, 0x48, 0x9A, 0x49, 0xE7, -0xE0, 0xA2, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF5, 0x4C, 0x9A, 0x5D, 0xE7, 0xE0, 0xA7, -0xFF, 0x6A, 0xEC, 0xEA, 0x7D, 0xE4, 0x01, 0x4B, -0x03, 0x73, 0x40, 0xC7, 0x02, 0x4E, 0xE2, 0x61, -0x25, 0x67, 0x00, 0x68, 0x0B, 0x93, 0x01, 0x6D, -0xAB, 0xED, 0x09, 0xE3, 0x80, 0xAA, 0x02, 0x48, -0x80, 0x18, 0xA5, 0x19, 0x16, 0x70, 0x40, 0xD9, -0x04, 0x49, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x69, 0x02, 0xF7, -0x7C, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, -0xC0, 0xF3, 0x44, 0x98, 0xAC, 0xE9, 0x24, 0x36, -0x01, 0x6D, 0x04, 0xD4, 0xAB, 0xED, 0x03, 0xF3, -0x00, 0x6C, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, -0x08, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, -0x07, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x22, 0xF7, -0xA4, 0x9B, 0xC3, 0xF3, 0x14, 0x6C, 0x10, 0x6E, -0x40, 0xEA, 0x04, 0x93, 0x24, 0x30, 0x30, 0xF0, -0x20, 0x6A, 0x01, 0xE3, 0x85, 0xF7, 0x08, 0x4A, -0x10, 0x30, 0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0x48, 0x9A, 0xCA, 0xF3, 0x1C, 0x48, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, -0x44, 0x99, 0x04, 0x96, 0x01, 0x6D, 0xC3, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x6D, -0xE3, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0xA5, 0x19, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x6C, 0x9B, 0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, -0x60, 0xC8, 0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, -0x04, 0x92, 0x80, 0xF0, 0x60, 0xC8, 0x02, 0x48, -0x04, 0x4A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0x50, 0x9A, 0x04, 0x93, 0x6E, 0xEA, -0xD8, 0x2A, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, -0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x05, 0x67, 0x01, 0x74, 0x4C, 0xE8, 0x80, 0xF0, -0x0D, 0x60, 0x04, 0x24, 0x04, 0x5C, 0xA0, 0xF0, -0x04, 0x60, 0x9E, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xEA, 0xF4, 0x64, 0x9A, -0x30, 0xF0, 0x21, 0x6D, 0x30, 0xF0, 0x21, 0x6C, -0xEA, 0xF4, 0x68, 0xDA, 0x30, 0xF0, 0x21, 0x6F, -0x30, 0xF0, 0x21, 0x6B, 0x90, 0xF4, 0x04, 0x4D, -0x70, 0xF4, 0x1C, 0x4C, 0x70, 0xF4, 0x18, 0x4B, -0x70, 0xF3, 0x14, 0x4F, 0x00, 0x6E, 0x40, 0x9D, -0x65, 0xF2, 0x0C, 0x46, 0x04, 0x30, 0x42, 0xDD, -0x40, 0xAC, 0x04, 0xD7, 0x00, 0x69, 0x42, 0xCC, -0x40, 0xA3, 0x08, 0xD3, 0x42, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x01, 0xE2, -0x04, 0x48, 0x40, 0xA0, 0x44, 0xC0, 0xC4, 0x32, -0x49, 0xE1, 0x50, 0x32, 0x1A, 0x65, 0x30, 0xF0, -0x20, 0x6A, 0x78, 0x67, 0x85, 0xF7, 0x08, 0x4A, -0x69, 0xE2, 0xCA, 0xF3, 0x1C, 0x4A, 0x1A, 0x65, -0x08, 0x92, 0x06, 0xD2, 0x58, 0x67, 0x60, 0xAA, -0x40, 0xF0, 0x60, 0xCA, 0x80, 0xF0, 0x60, 0xAA, -0xC0, 0xF0, 0x60, 0xCA, 0x04, 0x93, 0x02, 0x4A, -0x6A, 0xEA, 0xF5, 0x61, 0x06, 0x92, 0x01, 0x49, -0x10, 0x4B, 0x02, 0x71, 0x08, 0xD2, 0x01, 0x48, -0x04, 0xD3, 0xDB, 0x61, 0x01, 0x4E, 0x02, 0x68, -0x62, 0x67, 0xCE, 0xE8, 0x04, 0x4D, 0x02, 0x4C, -0x01, 0x4B, 0x20, 0x4F, 0xC0, 0x28, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x00, 0x6B, -0x6A, 0xF7, 0x69, 0xC2, 0x6A, 0xF7, 0x6A, 0xC2, -0x4A, 0xF7, 0x7D, 0xC2, 0x4A, 0xF7, 0x7E, 0xC2, -0x4A, 0xF7, 0x7F, 0xC2, 0xEA, 0xF4, 0x71, 0xC2, -0x6A, 0xF7, 0x6B, 0xC2, 0x6A, 0xF7, 0x6C, 0xC2, -0x6A, 0xF7, 0x60, 0xC2, 0x6A, 0xF7, 0x61, 0xC2, -0x6A, 0xF7, 0x62, 0xC2, 0xEA, 0xF4, 0x6C, 0x9A, -0x01, 0x6C, 0xEA, 0xF4, 0x10, 0xC2, 0xEA, 0xF4, -0x14, 0xCA, 0xCA, 0xF4, 0x9C, 0xC2, 0xCA, 0xF4, -0x9D, 0xC2, 0xEA, 0xF4, 0x16, 0xCA, 0xCA, 0xF4, -0x9E, 0xC2, 0xCA, 0xF4, 0x9F, 0xC2, 0xEA, 0xF4, -0x64, 0xDA, 0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xB0, 0x67, 0x49, 0xF4, 0x08, 0x4C, 0x58, 0x6E, -0x80, 0x18, 0x05, 0x56, 0x22, 0xF5, 0x1E, 0x48, -0x30, 0xF0, 0x20, 0x6B, 0x08, 0x30, 0x85, 0xF7, -0x08, 0x4B, 0x6D, 0xE0, 0x41, 0xDB, 0x05, 0x10, -0xFE, 0x4C, 0x4C, 0xEC, 0xB0, 0x67, 0x80, 0x18, -0x7E, 0x04, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, -0x07, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x21, 0x6A, 0x50, 0xF3, 0x49, 0xA2, -0x18, 0x2A, 0x01, 0x6C, 0x00, 0x6D, 0x80, 0x18, -0xBF, 0x04, 0x02, 0x6C, 0x00, 0x6D, 0x80, 0x18, -0xBF, 0x04, 0x03, 0x6C, 0x00, 0x6D, 0x80, 0x18, -0xBF, 0x04, 0x01, 0x6C, 0xA4, 0x67, 0x80, 0x18, -0xBF, 0x04, 0x02, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0xBF, 0x04, 0x03, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0xBF, 0x04, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x69, 0x00, 0x6A, 0x8C, 0xE9, 0x06, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, -0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x49, 0xF4, -0x08, 0x48, 0x00, 0x6B, 0x90, 0x67, 0xB1, 0x67, -0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, -0xE0, 0x9A, 0x00, 0x6B, 0x90, 0x67, 0xB1, 0x67, -0x08, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x00, 0x4B, -0xE0, 0x9B, 0x90, 0x67, 0xB1, 0x67, 0x08, 0x6E, -0x80, 0x18, 0x05, 0x56, 0x0B, 0x22, 0x06, 0x92, -0x01, 0x4A, 0x06, 0xD2, 0x06, 0x93, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xEB, 0x2E, 0xF5, 0x10, 0x73, -0x06, 0xD3, 0xCE, 0x61, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF1, 0x08, 0x4A, 0x64, 0x67, -0x07, 0xD2, 0x22, 0xF5, 0x16, 0x4B, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x68, 0x33, -0x6D, 0xE2, 0x04, 0x4B, 0x09, 0xD3, 0x64, 0x67, -0x81, 0xF2, 0x1F, 0x4B, 0x6C, 0x33, 0x69, 0xE2, -0x04, 0x4A, 0x00, 0x6B, 0x0E, 0xD4, 0x10, 0xD5, -0x0B, 0xD2, 0x08, 0xD3, 0x08, 0x92, 0x10, 0x93, -0xFF, 0x69, 0x4C, 0xE9, 0x18, 0x2B, 0x30, 0xF0, -0x20, 0x68, 0x49, 0xF4, 0x08, 0x48, 0x01, 0x6A, -0x90, 0x67, 0xB1, 0x67, 0xDF, 0x6E, 0x10, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x0B, 0x93, -0x90, 0x67, 0xB1, 0x67, 0x40, 0x9B, 0x58, 0x6E, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0xE0, 0x9A, 0x80, 0x18, 0x78, 0x56, 0x08, 0x92, -0x44, 0x32, 0x0D, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF7, 0x5C, 0x9A, 0x0D, 0x93, 0x4D, 0xEB, -0x00, 0x6A, 0x0D, 0xD3, 0x06, 0xD2, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x0D, 0x96, -0x01, 0x69, 0x2B, 0xE9, 0x03, 0xF3, 0x00, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x0C, 0x6C, 0xB1, 0x67, 0x07, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, -0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, -0x1C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xB1, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0x06, 0x93, 0xFF, 0x6A, -0x6C, 0xEA, 0x08, 0x2A, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, -0x03, 0x6E, 0x07, 0x10, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x22, 0xF7, 0xA4, 0x9B, 0xC3, 0xF3, 0x14, 0x6C, -0x10, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x06, 0x93, 0x22, 0xF7, 0x54, 0x9A, 0x46, 0xEB, -0x0E, 0x93, 0x64, 0x30, 0x08, 0x93, 0x61, 0xE0, -0x06, 0x93, 0x04, 0x30, 0x01, 0xE3, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x10, 0x30, -0x01, 0xE3, 0x63, 0x42, 0x0A, 0xD3, 0x61, 0x42, -0x23, 0x4A, 0xCA, 0xF3, 0x1C, 0x48, 0x0C, 0xD3, -0x0F, 0xD2, 0xC0, 0xA8, 0x0A, 0x93, 0x30, 0xF0, -0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0xC0, 0x36, -0xC4, 0x36, 0x01, 0x6D, 0xD9, 0xE3, 0xC3, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x80, 0xF0, -0xC0, 0xA8, 0x0C, 0x93, 0xC0, 0xF3, 0x44, 0x99, -0xC0, 0x36, 0xC4, 0x36, 0x01, 0x6D, 0xD9, 0xE3, -0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x0C, 0x93, 0x0A, 0x92, 0x02, 0x48, 0x04, 0x4B, -0x0C, 0xD3, 0x0F, 0x93, 0x04, 0x4A, 0x0A, 0xD2, -0x6A, 0xEA, 0xDB, 0x61, 0x06, 0x93, 0xFF, 0x6A, -0x6C, 0xEA, 0x08, 0x2A, 0x09, 0x92, 0x07, 0x93, -0x01, 0x6D, 0xC0, 0xA2, 0x80, 0xAB, 0xC0, 0xF3, -0x44, 0x99, 0x08, 0x10, 0x09, 0x92, 0x07, 0x93, -0x00, 0xF4, 0x00, 0x6D, 0xC1, 0xA2, 0x80, 0xAB, -0xC0, 0xF3, 0x44, 0x99, 0xCF, 0xEE, 0x40, 0xEA, -0x06, 0x92, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, -0x5F, 0xF7, 0x15, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, -0x06, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x08, 0x93, 0x07, 0x92, 0x01, 0x4B, 0x08, 0xD3, -0x09, 0x93, 0x02, 0x4A, 0x07, 0xD2, 0x02, 0x4B, -0x0B, 0x92, 0x09, 0xD3, 0x08, 0x93, 0x04, 0x4A, -0x0B, 0xD2, 0x02, 0x73, 0x1F, 0xF7, 0x0A, 0x61, -0x15, 0x97, 0x14, 0x91, 0x13, 0x90, 0x0B, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x00, 0x6B, 0x6A, 0xF7, 0x78, 0xC2, 0x1A, 0x2C, -0xAA, 0xF3, 0x76, 0xA2, 0x17, 0x23, 0xEA, 0xF4, -0x6C, 0x9A, 0xEA, 0xF4, 0x84, 0x9A, 0x00, 0x68, -0x6E, 0xEC, 0x05, 0x24, 0xEA, 0xF4, 0x48, 0x9A, -0x4E, 0xEB, 0x0C, 0x2B, 0x01, 0x68, 0x01, 0x6B, -0x30, 0xF0, 0x21, 0x6A, 0x90, 0x67, 0x10, 0xF7, -0x60, 0xC2, 0x80, 0x18, 0x4C, 0x05, 0x90, 0x67, -0x80, 0x18, 0x4E, 0x40, 0x30, 0xF0, 0x21, 0x6A, -0x10, 0xF7, 0x40, 0xA2, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x21, 0x6A, 0x50, 0xF3, 0x49, 0xA2, -0x05, 0x22, 0x00, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0xDB, 0x05, 0x04, 0x10, 0x00, 0x6C, 0x01, 0x6D, -0x80, 0x18, 0x4C, 0x05, 0x05, 0x97, 0x03, 0x63, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, +0x7E, 0xA2, 0x7E, 0x2B, 0x01, 0x6B, 0x30, 0xF0, +0x21, 0x6D, 0x30, 0xF0, 0x21, 0x6C, 0xCA, 0xF3, +0x6D, 0xC2, 0xCA, 0xF3, 0x6E, 0xC2, 0x90, 0xF4, +0x14, 0x4D, 0x90, 0xF3, 0x1C, 0x4C, 0x00, 0x6A, +0x00, 0x6B, 0x60, 0xDD, 0x30, 0xF0, 0x20, 0x6E, +0xA1, 0xF2, 0x60, 0x42, 0xA5, 0xF7, 0x08, 0x4E, +0x6C, 0x33, 0x6D, 0xE6, 0x04, 0x4B, 0x04, 0xD3, +0x32, 0xF5, 0x6E, 0x42, 0x68, 0x33, 0x6D, 0xE6, +0x04, 0x4B, 0x03, 0xD3, 0x06, 0x6B, 0x78, 0xEA, +0x01, 0xD4, 0x12, 0xEB, 0x6D, 0xE6, 0x6A, 0xF7, +0x05, 0x4B, 0x00, 0x6E, 0x04, 0x90, 0x00, 0x6F, +0xE0, 0xD8, 0x03, 0x90, 0xE0, 0xC8, 0x44, 0x30, +0x01, 0xE6, 0x65, 0xF2, 0x10, 0x48, 0x30, 0xF0, +0x20, 0x6F, 0x04, 0x30, 0xA5, 0xF7, 0x08, 0x4F, +0x1D, 0xE7, 0x04, 0x4F, 0x05, 0xD7, 0x01, 0x97, +0x00, 0x68, 0x00, 0xD0, 0x02, 0xD7, 0x05, 0x90, +0x01, 0x6F, 0x44, 0x31, 0xE0, 0xC0, 0x00, 0x97, +0xC5, 0xE1, 0x24, 0x31, 0x25, 0xE7, 0x30, 0xF5, +0x0E, 0x41, 0x30, 0xF0, 0x20, 0x6F, 0x40, 0xF5, +0x06, 0x49, 0xA5, 0xF7, 0x08, 0x4F, 0x10, 0x30, +0x30, 0x31, 0x01, 0xE7, 0x25, 0xE7, 0x04, 0x48, +0x04, 0x49, 0x06, 0xD2, 0x02, 0x92, 0x00, 0x6F, +0xE0, 0xC8, 0x02, 0x48, 0x4A, 0xE8, 0xE0, 0xC9, +0x02, 0x49, 0xF8, 0x61, 0x00, 0x90, 0x06, 0x92, +0x01, 0x48, 0x00, 0xD0, 0x05, 0x90, 0x01, 0x48, +0x05, 0xD0, 0x02, 0x90, 0x10, 0x48, 0x02, 0xD0, +0x00, 0x90, 0x02, 0x70, 0xD4, 0x61, 0xE0, 0xC3, +0xE1, 0xC3, 0xE2, 0xC3, 0x04, 0x97, 0x03, 0x90, +0x01, 0x4E, 0x04, 0x4F, 0x04, 0xD7, 0x01, 0x97, +0x02, 0x48, 0x02, 0x76, 0x20, 0x4F, 0x03, 0xD0, +0x03, 0x4B, 0x01, 0xD7, 0xAF, 0x61, 0x01, 0x4A, +0x02, 0x72, 0x04, 0x4D, 0x40, 0x4C, 0x90, 0x61, +0x09, 0x91, 0x08, 0x90, 0x05, 0x63, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x69, 0xF4, 0x08, 0x4C, 0x00, 0x6D, 0x18, 0x6E, +0x80, 0x18, 0x5C, 0x56, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF4, 0x00, 0x6C, 0xA5, 0xF7, 0x08, 0x4B, +0x4C, 0xEC, 0xEA, 0xF4, 0x54, 0xDB, 0x82, 0x32, +0x4A, 0x32, 0x02, 0x72, 0x0A, 0x60, 0x03, 0x6C, +0x4E, 0xEC, 0x04, 0x24, 0x01, 0x72, 0x02, 0x6A, +0x05, 0x60, 0x06, 0x10, 0xAA, 0xF3, 0x9D, 0xC3, +0x03, 0x10, 0x01, 0x6A, 0xAA, 0xF3, 0x5D, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x70, 0x9B, +0xEA, 0xF4, 0x94, 0x9A, 0x8C, 0xEB, 0x62, 0x33, +0x62, 0x33, 0xAA, 0xF3, 0x7C, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x05, 0xD5, +0x04, 0xD4, 0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF7, 0x04, 0x4B, 0xE0, 0x9B, 0xC0, 0xA2, +0x30, 0xF0, 0x20, 0x69, 0x69, 0xF4, 0x08, 0x49, +0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x5C, 0x56, +0x04, 0x93, 0x91, 0x67, 0x01, 0x6D, 0x40, 0xDB, +0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, +0x04, 0x4B, 0xE0, 0x9B, 0xC0, 0xA2, 0x01, 0x48, +0x80, 0x18, 0x5C, 0x56, 0x04, 0x93, 0x41, 0xDB, +0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x08, 0x4B, +0x03, 0x70, 0x01, 0x4A, 0x05, 0xD2, 0x04, 0xD3, +0xD8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0xAC, 0xE9, +0x00, 0x68, 0x85, 0xF5, 0x1C, 0x6C, 0xFF, 0x6D, +0x80, 0x18, 0xAF, 0x19, 0x55, 0x72, 0x0C, 0x61, +0x00, 0x6A, 0x15, 0x21, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF6, 0xA4, 0x9A, 0x03, 0xF3, 0x08, 0x6C, +0x80, 0x18, 0xAF, 0x19, 0x00, 0x6A, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, +0x01, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0x01, 0x6A, 0x32, 0x58, +0x01, 0x60, 0xDF, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, +0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x00, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x7D, 0x67, -0x4C, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, -0x30, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0x00, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x68, -0x49, 0xF4, 0x08, 0x48, 0x00, 0x6D, 0x90, 0x67, -0xC5, 0x67, 0x04, 0xD1, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x00, 0x4B, -0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0x00, 0x6E, -0x30, 0xF0, 0x20, 0x68, 0x04, 0xD1, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE1, 0xF0, -0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0xE1, 0xF0, 0x1C, 0x6C, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0xAC, 0xEA, 0x01, 0x72, 0x05, 0xD4, 0x24, 0x61, +0x44, 0x67, 0x04, 0x4A, 0x01, 0x68, 0x30, 0xF0, +0x20, 0x69, 0x04, 0xEA, 0x00, 0xF2, 0x08, 0x6A, +0x4D, 0xE8, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, +0xD0, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, +0xAB, 0xED, 0xC1, 0x40, 0x03, 0xF3, 0x00, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x05, 0x94, +0x01, 0x6D, 0x80, 0x18, 0xE1, 0x03, 0xD2, 0x10, +0x02, 0x72, 0x01, 0x6A, 0xC0, 0xF0, 0x0E, 0x61, +0x30, 0xF0, 0x21, 0x6A, 0x70, 0xF3, 0x4A, 0xA2, +0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, 0x12, 0x72, +0x01, 0x68, 0x09, 0x60, 0x1B, 0x72, 0x02, 0x68, +0x06, 0x60, 0x24, 0x68, 0x4E, 0xE8, 0x01, 0x58, +0x18, 0x67, 0x04, 0x6A, 0x03, 0xE2, 0x05, 0x92, +0x30, 0xF0, 0x20, 0x69, 0x01, 0x6D, 0x44, 0x32, +0x07, 0xD2, 0x07, 0x93, 0x08, 0x6A, 0x03, 0xF3, +0x00, 0x6C, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, +0xC3, 0x67, 0x07, 0xD3, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF7, 0x08, 0x4C, +0x04, 0xD4, 0x04, 0x93, 0xC0, 0xF3, 0x44, 0x99, +0x01, 0x6D, 0xCA, 0xF3, 0xC2, 0xA3, 0xC3, 0xF3, +0x0C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x05, 0x92, +0x01, 0x6C, 0x01, 0x6D, 0x04, 0x4A, 0x84, 0xEA, +0x00, 0xF3, 0x08, 0x6A, 0x4D, 0xEC, 0x06, 0xD4, +0xC0, 0xF3, 0x44, 0x99, 0x06, 0x96, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x06, 0x96, +0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xAB, 0xED, +0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, +0x02, 0x6C, 0x40, 0xEA, 0x05, 0x94, 0x01, 0x6D, +0x80, 0x18, 0xE1, 0x03, 0x01, 0x72, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF1, 0x04, 0x4A, +0x41, 0xE0, 0x40, 0xA0, 0x04, 0x93, 0xCA, 0xF3, +0x42, 0xC3, 0x6B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x05, 0x95, 0x22, 0xF7, 0xE4, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x69, 0xF4, 0x08, 0x4C, 0x00, 0x6E, +0x80, 0x18, 0x5C, 0x56, 0x05, 0xD2, 0x07, 0x96, +0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x05, 0x94, +0xE3, 0xF7, 0x00, 0x6A, 0x04, 0x93, 0x8C, 0xEA, +0x56, 0x34, 0x96, 0x32, 0xCA, 0xF3, 0x44, 0xDB, +0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, 0xFF, 0x6B, +0x0B, 0x60, 0x03, 0x70, 0x03, 0x60, 0x01, 0x48, +0x6C, 0xE8, 0x49, 0x10, 0x04, 0x94, 0x01, 0x6B, +0x03, 0x68, 0x6A, 0xF7, 0x79, 0xC4, 0x43, 0x10, +0x0A, 0x5A, 0x0B, 0x61, 0x04, 0x20, 0xFF, 0x48, +0x6C, 0xE8, 0x01, 0x6B, 0x0B, 0x10, 0x04, 0x94, +0x01, 0x6B, 0x6A, 0xF7, 0x79, 0xC4, 0x01, 0x6B, +0x09, 0x10, 0x04, 0x94, 0x00, 0x6B, 0x6A, 0xF7, +0x79, 0xC4, 0x00, 0x6B, 0x03, 0x20, 0x04, 0x58, +0x01, 0x61, 0x03, 0x68, 0x30, 0xF0, 0x20, 0x6D, +0x62, 0xF1, 0x04, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, +0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF7, 0x08, 0x4C, +0xCA, 0xF3, 0xA2, 0xC4, 0x0F, 0x2B, 0xCA, 0xF3, +0xC2, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x64, 0x9B, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, +0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEB, +0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xE3, 0xF3, +0x08, 0x6C, 0xAB, 0xED, 0xFF, 0xF7, 0x1F, 0x6E, +0x40, 0xEA, 0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x01, 0x6B, +0xCE, 0x17, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6B, 0x0B, 0xD7, +0xE0, 0xAE, 0x1F, 0xF7, 0x00, 0x6A, 0xEC, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x08, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xAE, 0xC2, 0xF5, +0x48, 0x9A, 0x49, 0xE7, 0xE0, 0xA2, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x4C, 0x9A, +0x5D, 0xE7, 0xE0, 0xA7, 0xFF, 0x6A, 0xEC, 0xEA, +0x7D, 0xE4, 0x01, 0x4B, 0x03, 0x73, 0x40, 0xC7, +0x02, 0x4E, 0xE2, 0x61, 0x25, 0x67, 0x00, 0x68, +0x0B, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0x09, 0xE3, +0x80, 0xAA, 0x02, 0x48, 0x80, 0x18, 0xAF, 0x19, +0x16, 0x70, 0x40, 0xD9, 0x04, 0x49, 0xF4, 0x61, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x69, 0x22, 0xF7, 0x60, 0x9B, 0x30, 0xF0, +0x20, 0x68, 0x2C, 0xEC, 0xC0, 0xF3, 0x44, 0x98, +0xAC, 0xE9, 0x24, 0x36, 0x01, 0x6D, 0x04, 0xD4, +0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x6D, 0xEE, +0x40, 0xEA, 0x04, 0x92, 0x08, 0x2A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x03, 0x6E, 0x07, 0x10, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x22, 0xF7, 0xA8, 0x9B, 0xC3, 0xF3, +0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, 0x04, 0x94, +0x24, 0x31, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xE4, +0x30, 0xF5, 0x6E, 0x41, 0x40, 0xF5, 0x06, 0x49, +0xA5, 0xF7, 0x08, 0x4A, 0x30, 0x31, 0x70, 0x33, +0x6D, 0xE2, 0x29, 0xE2, 0x04, 0x4A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x2C, 0x9A, +0x04, 0x4B, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, +0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, +0x80, 0x18, 0xAF, 0x19, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF7, 0x70, 0x9B, 0x05, 0x94, 0x04, 0x49, +0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x60, 0xCC, +0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, +0x02, 0x4C, 0x05, 0xD4, 0x60, 0xCA, 0x02, 0x4A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, +0x54, 0x9A, 0x2E, 0xEA, 0xD7, 0x2A, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x07, 0x6D, 0xC5, 0x67, 0x83, 0xF1, -0x0C, 0x6C, 0x40, 0xEA, 0x06, 0x02, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, -0xA1, 0xF3, 0x18, 0x6F, 0xA1, 0xF7, 0x00, 0x6C, -0x08, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0xF0, 0x08, 0x6C, 0xFF, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF7, 0xBC, 0x9B, -0x01, 0xF2, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x7C, 0x9A, -0xFF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0xFE, 0x6C, -0x4C, 0xEC, 0x80, 0xC3, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF7, 0x40, 0x9A, 0x60, 0xA2, -0x01, 0x6A, 0x6C, 0xEA, 0x09, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF7, 0x68, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF7, 0x44, 0x9A, 0x60, 0xDA, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x05, 0x67, 0x01, 0x74, +0x4C, 0xE8, 0x80, 0xF0, 0x1D, 0x60, 0x04, 0x24, +0x04, 0x5C, 0xA0, 0xF0, 0x14, 0x60, 0xAE, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xEA, 0xF4, 0x6C, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0x30, 0xF0, 0x21, 0x6D, 0xEA, 0xF4, 0x70, 0xDA, +0x30, 0xF0, 0x21, 0x6B, 0x30, 0xF0, 0x21, 0x6A, +0xB0, 0xF4, 0x0C, 0x4C, 0xB0, 0xF4, 0x04, 0x4B, +0xB0, 0xF4, 0x00, 0x4A, 0x90, 0xF3, 0x1C, 0x4D, +0x00, 0x69, 0xC0, 0x9C, 0x75, 0xF2, 0x00, 0x41, +0x04, 0x30, 0xC2, 0xDC, 0xC0, 0xAB, 0x05, 0xD5, +0xE5, 0x67, 0xC2, 0xCB, 0xC0, 0xA2, 0xC2, 0xC2, +0x30, 0xF0, 0x20, 0x6E, 0xA5, 0xF7, 0x08, 0x4E, +0x01, 0xE6, 0x00, 0x6E, 0x04, 0x48, 0x04, 0xD6, +0xA0, 0xA0, 0x24, 0x36, 0xA4, 0xC0, 0x04, 0x95, +0xD9, 0xE5, 0xA6, 0x67, 0x20, 0xF5, 0x1E, 0x4D, +0xB0, 0x35, 0x06, 0xD5, 0x09, 0xD6, 0x30, 0xF0, +0x20, 0x6E, 0xA6, 0x67, 0x06, 0x96, 0xA5, 0xF7, +0x08, 0x4D, 0x1D, 0x65, 0xD5, 0xE5, 0x09, 0x96, +0x04, 0x4D, 0x08, 0xD5, 0x40, 0xF5, 0x06, 0x4E, +0xD0, 0x36, 0xB8, 0x67, 0xD5, 0xE5, 0xC5, 0x67, +0x08, 0x95, 0x04, 0x4E, 0x06, 0xD2, 0x40, 0xAD, +0x40, 0xF0, 0x40, 0xCD, 0x40, 0xAE, 0x02, 0x4D, +0x40, 0xF0, 0x40, 0xCE, 0x05, 0x92, 0x02, 0x4E, +0x4A, 0xED, 0xF5, 0x61, 0x04, 0x95, 0x05, 0x96, +0x06, 0x92, 0x01, 0x4D, 0x10, 0x4E, 0x02, 0x75, +0x04, 0xD5, 0x01, 0x48, 0x05, 0xD6, 0xCC, 0x61, +0x01, 0x49, 0x02, 0x6E, 0xA7, 0x67, 0x2E, 0xEE, +0x04, 0x4C, 0x02, 0x4B, 0x01, 0x4A, 0x20, 0x4D, +0xB0, 0x2E, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x00, 0x6B, 0x6A, 0xF7, 0x71, 0xC2, +0x6A, 0xF7, 0x72, 0xC2, 0x6A, 0xF7, 0x65, 0xC2, +0x6A, 0xF7, 0x66, 0xC2, 0x6A, 0xF7, 0x67, 0xC2, +0xEA, 0xF4, 0x79, 0xC2, 0x6A, 0xF7, 0x73, 0xC2, +0x6A, 0xF7, 0x74, 0xC2, 0x6A, 0xF7, 0x68, 0xC2, +0x6A, 0xF7, 0x69, 0xC2, 0x6A, 0xF7, 0x6A, 0xC2, +0xEA, 0xF4, 0x74, 0x9A, 0x01, 0x6C, 0xEA, 0xF4, +0xD8, 0xC2, 0xEA, 0xF4, 0xDC, 0xCA, 0xEA, 0xF4, +0x84, 0xC2, 0xEA, 0xF4, 0x85, 0xC2, 0xEA, 0xF4, +0xDE, 0xCA, 0xEA, 0xF4, 0x86, 0xC2, 0xEA, 0xF4, +0x87, 0xC2, 0xEA, 0xF4, 0x6C, 0xDA, 0x1B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0xE4, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xB0, 0x67, 0x69, 0xF4, +0x08, 0x4C, 0x58, 0x6E, 0x80, 0x18, 0x5C, 0x56, +0x42, 0xF5, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0x30, 0xA5, 0xF7, 0x08, 0x4B, 0x6D, 0xE0, +0x41, 0xDB, 0x05, 0x10, 0xFE, 0x4C, 0x4C, 0xEC, +0xB0, 0x67, 0x80, 0x18, 0x9D, 0x04, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x21, 0x6A, +0x70, 0xF3, 0x51, 0xA2, 0x18, 0x2A, 0x01, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0xE2, 0x04, 0x02, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0xE2, 0x04, 0x03, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0xE2, 0x04, 0x01, 0x6C, +0xA4, 0x67, 0x80, 0x18, 0xE2, 0x04, 0x02, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0xE2, 0x04, 0x03, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0xE2, 0x04, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x00, 0x6A, +0x8C, 0xE9, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x04, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, +0x20, 0x68, 0x69, 0xF4, 0x08, 0x48, 0x00, 0x6B, +0x90, 0x67, 0xB1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x04, 0x4A, 0xE0, 0x9A, 0x00, 0x6B, +0x90, 0x67, 0xB1, 0x67, 0x08, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF7, 0x04, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0xB1, 0x67, 0x08, 0x6E, 0x80, 0x18, 0x5C, 0x56, +0x0B, 0x22, 0x06, 0x92, 0x01, 0x4A, 0x06, 0xD2, +0x06, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, +0x2E, 0xF5, 0x10, 0x73, 0x06, 0xD3, 0xCE, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0x20, 0x9A, 0x30, 0xF0, 0x20, 0x68, -0x49, 0xF4, 0x08, 0x48, 0x90, 0x67, 0xF1, 0x67, -0x01, 0xF2, 0x00, 0x6A, 0x00, 0x6D, 0xB8, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF7, 0x4C, 0x9A, 0x90, 0x67, -0xF1, 0x67, 0x00, 0x6D, 0xB8, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x00, 0xEF, 0x00, 0x65, 0xF5, 0x63, 0x15, 0x62, +0x14, 0xD1, 0x13, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF1, +0x08, 0x4A, 0x64, 0x67, 0x06, 0xD2, 0x22, 0xF5, +0x18, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x68, 0x33, 0x6D, 0xE2, 0x04, 0x4B, +0x08, 0xD3, 0x64, 0x67, 0xA1, 0xF2, 0x00, 0x4B, +0x6C, 0x33, 0x69, 0xE2, 0x04, 0x4A, 0x00, 0x6B, +0x0F, 0xD4, 0x11, 0xD5, 0x0A, 0xD2, 0x07, 0xD3, +0x07, 0x95, 0x11, 0x92, 0xFF, 0x69, 0xAC, 0xE9, +0x18, 0x2A, 0x30, 0xF0, 0x20, 0x68, 0x69, 0xF4, +0x08, 0x48, 0x01, 0x6A, 0x90, 0x67, 0xB1, 0x67, +0xDF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xCF, 0x56, 0x0A, 0x93, 0x90, 0x67, 0xB1, 0x67, +0x40, 0x9B, 0x58, 0x6E, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0xE4, 0x9A, 0x80, 0x18, +0xCF, 0x56, 0x07, 0x95, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x40, 0x9A, 0xA4, 0x35, 0x00, 0x69, +0x4D, 0xED, 0x0E, 0xD5, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x0E, 0x96, 0x01, 0x6D, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, +0x0C, 0x6C, 0xAB, 0xED, 0x07, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, +0x0C, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, +0xFF, 0x6A, 0x2C, 0xEA, 0x08, 0x2A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x03, 0x6E, 0x07, 0x10, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, +0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, +0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, 0x0F, 0x95, +0x07, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0x34, +0x71, 0xE4, 0x84, 0x34, 0x91, 0xE1, 0x30, 0xF5, +0xAE, 0x44, 0x22, 0xF7, 0x58, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x40, 0xF5, 0x06, 0x4C, 0xA5, 0xF7, +0x08, 0x4B, 0xB0, 0x35, 0x90, 0x34, 0xB5, 0xE3, +0x8D, 0xE3, 0x46, 0xE9, 0x04, 0x4D, 0x04, 0x4B, +0x0D, 0xD5, 0x0C, 0xD3, 0xA3, 0x42, 0x61, 0x42, +0x23, 0x4A, 0x09, 0xD5, 0x0B, 0xD3, 0x10, 0xD2, +0x0D, 0x95, 0x09, 0x93, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xAD, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xC0, 0x36, 0xC4, 0x36, 0xD9, 0xE3, 0xC3, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x0C, 0x95, +0x0B, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0xAD, +0x01, 0x6D, 0xAB, 0xED, 0xC0, 0x36, 0xC4, 0x36, +0xD9, 0xE3, 0xC3, 0xF3, 0x18, 0x6C, 0x40, 0xEA, +0x0D, 0x95, 0x0C, 0x93, 0x09, 0x92, 0x02, 0x4D, +0x02, 0x4B, 0x0D, 0xD5, 0x0C, 0xD3, 0x0B, 0x95, +0x10, 0x93, 0x04, 0x4A, 0x04, 0x4D, 0x6A, 0xEA, +0x09, 0xD2, 0x0B, 0xD5, 0xD5, 0x61, 0xFF, 0x6A, +0x2C, 0xEA, 0x08, 0x2A, 0x08, 0x95, 0x06, 0x93, +0xC0, 0xF3, 0x44, 0x98, 0xC0, 0xA5, 0x80, 0xAB, +0x01, 0x6D, 0x08, 0x10, 0x06, 0x93, 0x08, 0x95, +0xC0, 0xF3, 0x44, 0x98, 0x80, 0xAB, 0xC1, 0xA5, +0x00, 0xF4, 0x00, 0x6D, 0xCF, 0xEE, 0x01, 0x49, +0x40, 0xEA, 0x02, 0x71, 0x5F, 0xF7, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x06, 0xF0, 0x00, 0x6D, 0x03, 0xF3, 0x0C, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x07, 0x95, 0x06, 0x92, +0x08, 0x93, 0x01, 0x4D, 0x07, 0xD5, 0x02, 0x4A, +0x0A, 0x95, 0x06, 0xD2, 0x07, 0x92, 0x02, 0x4B, +0x04, 0x4D, 0x02, 0x72, 0x08, 0xD3, 0x0A, 0xD5, +0x1F, 0xF7, 0x02, 0x61, 0x15, 0x97, 0x14, 0x91, +0x13, 0x90, 0x0B, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x4C, 0xEC, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x00, 0x6B, 0x8A, 0xF7, +0x60, 0xC2, 0x1A, 0x2C, 0xAA, 0xF3, 0x7E, 0xA2, +0x17, 0x23, 0xEA, 0xF4, 0x74, 0x9A, 0xEA, 0xF4, +0x8C, 0x9A, 0x00, 0x68, 0x6E, 0xEC, 0x05, 0x24, +0xEA, 0xF4, 0x50, 0x9A, 0x4E, 0xEB, 0x0C, 0x2B, +0x01, 0x68, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, +0x90, 0x67, 0x30, 0xF7, 0x68, 0xC2, 0x80, 0x18, +0x77, 0x05, 0x90, 0x67, 0x80, 0x18, 0x4E, 0x40, +0x30, 0xF0, 0x21, 0x6A, 0x30, 0xF7, 0x48, 0xA2, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x21, 0x6A, +0x70, 0xF3, 0x51, 0xA2, 0x05, 0x22, 0x00, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0x0A, 0x06, 0x04, 0x10, +0x00, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x77, 0x05, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x0E, 0xD6, 0x0F, 0xD7, 0x04, 0xD7, 0xFF, 0x68, -0xFF, 0xF7, 0x1F, 0x69, 0x0E, 0x97, 0x8C, 0xE8, -0xAC, 0xE9, 0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF4, -0x08, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, -0x78, 0x56, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, -0x20, 0x6B, 0x0E, 0x97, 0x49, 0xF4, 0x08, 0x4B, -0x83, 0x67, 0xB0, 0x67, 0xD1, 0x67, 0x06, 0xD3, -0x80, 0x18, 0x05, 0x56, 0x0F, 0x93, 0x6E, 0xEA, -0x1E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x0F, 0x92, -0x06, 0x94, 0x0E, 0x97, 0xB0, 0x67, 0xD1, 0x67, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x07, 0x93, -0x01, 0x4B, 0xE0, 0xF3, 0x08, 0x73, 0x07, 0xD3, -0xDE, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0xA0, 0xF1, 0x00, 0x6C, 0x1F, 0xF7, -0x00, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x68, 0xFF, 0xF7, -0x1F, 0x69, 0x22, 0xF7, 0xE0, 0x9A, 0x8C, 0xE8, -0xAC, 0xE9, 0x30, 0xF0, 0x20, 0x6C, 0x0E, 0xD6, -0x04, 0xD6, 0x49, 0xF4, 0x08, 0x4C, 0xB0, 0x67, -0xD1, 0x67, 0x80, 0x18, 0x78, 0x56, 0x00, 0x6A, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0x9A, -0x49, 0xF4, 0x08, 0x4B, 0x83, 0x67, 0xB0, 0x67, -0xD1, 0x67, 0x06, 0xD3, 0x80, 0x18, 0x05, 0x56, -0x0E, 0x93, 0x6E, 0xEA, 0x18, 0x22, 0x30, 0xF0, +0x00, 0x6A, 0x7D, 0x67, 0x4C, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF5, 0x30, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0x04, 0x4A, 0xE0, 0x9A, +0x30, 0xF0, 0x20, 0x68, 0x69, 0xF4, 0x08, 0x48, +0x00, 0x6D, 0x90, 0x67, 0xC5, 0x67, 0x04, 0xD1, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF7, 0x04, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0x01, 0x6D, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, +0x04, 0xD1, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF7, 0xBC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xE1, 0xF0, 0x18, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xE1, 0xF0, 0x1C, 0x6C, 0xAB, 0xED, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x07, 0x6D, +0xC5, 0x67, 0x83, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, +0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x48, 0x9A, 0xA1, 0xF3, 0x18, 0x6F, +0xA1, 0xF7, 0x00, 0x6C, 0x08, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, +0x08, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x42, 0xF7, 0xA0, 0x9B, 0x01, 0xF2, 0x04, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF6, 0x60, 0x9A, 0xFF, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0xFE, 0x6C, 0x4C, 0xEC, 0x80, 0xC3, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x44, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x48, 0x9A, 0x60, 0xDA, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x24, 0x9A, +0x30, 0xF0, 0x20, 0x68, 0x69, 0xF4, 0x08, 0x48, +0x90, 0x67, 0xF1, 0x67, 0x01, 0xF2, 0x00, 0x6A, +0x00, 0x6D, 0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x50, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, +0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x0E, 0xD6, 0x0F, 0xD7, +0x04, 0xD7, 0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, +0x0E, 0x97, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, +0x20, 0x6C, 0x69, 0xF4, 0x08, 0x4C, 0xB0, 0x67, +0xD1, 0x67, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6A, +0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x0E, 0x97, +0x69, 0xF4, 0x08, 0x4B, 0x83, 0x67, 0xB0, 0x67, +0xD1, 0x67, 0x06, 0xD3, 0x80, 0x18, 0x5C, 0x56, +0x0F, 0x93, 0x6E, 0xEA, 0x1E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x00, 0x4B, 0x0E, 0x92, 0x06, 0x94, 0xE0, 0x9B, +0x40, 0xEA, 0x0F, 0x92, 0x06, 0x94, 0x0E, 0x97, 0xB0, 0x67, 0xD1, 0x67, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x07, 0x92, 0x01, 0x4A, 0xE0, 0xF3, -0x08, 0x72, 0x07, 0xD2, 0xD6, 0x61, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x00, 0x6A, 0x0C, 0xD4, 0x05, 0x67, 0x06, 0xD2, -0x06, 0x92, 0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x69, -0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x00, 0x4B, 0x07, 0xD2, 0xE0, 0x9B, 0x07, 0x95, -0x49, 0xF4, 0x08, 0x49, 0x00, 0x6A, 0x91, 0x67, -0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x40, 0x98, 0x06, 0x94, 0x11, 0x6E, 0xCB, 0xEE, -0x4C, 0xEE, 0xDF, 0x6D, 0x80, 0x18, 0x74, 0x06, -0x0C, 0x92, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x00, 0x4B, 0xC1, 0xA2, 0xE0, 0x9B, 0x42, 0x98, -0x07, 0x95, 0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x0C, 0x92, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF7, 0x00, 0x4B, 0xC2, 0xA2, 0x07, 0x95, -0x44, 0x98, 0xE0, 0x9B, 0x91, 0x67, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x06, 0x92, 0x04, 0x48, -0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, 0xC4, 0x61, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x01, 0x6B, 0x6B, 0xEB, -0x30, 0xF0, 0x21, 0x6A, 0x0A, 0xD4, 0x30, 0xF3, -0x7E, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, -0x20, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0x93, +0xCF, 0x56, 0x07, 0x93, 0x01, 0x4B, 0xE0, 0xF3, +0x08, 0x73, 0x07, 0xD3, 0xDE, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xA0, 0xF1, +0x00, 0x6C, 0x1F, 0xF7, 0x00, 0x6D, 0x0A, 0x6E, +0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0x22, 0xF7, +0xE4, 0x9A, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, +0x20, 0x6C, 0x0E, 0xD6, 0x04, 0xD6, 0x69, 0xF4, +0x08, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, +0xCF, 0x56, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0x04, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0xE0, 0x9A, 0x69, 0xF4, 0x08, 0x4B, +0x83, 0x67, 0xB0, 0x67, 0xD1, 0x67, 0x06, 0xD3, +0x80, 0x18, 0x5C, 0x56, 0x0E, 0x93, 0x6E, 0xEA, +0x18, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF7, 0x04, 0x4B, 0x0E, 0x92, +0x06, 0x94, 0xE0, 0x9B, 0xB0, 0x67, 0xD1, 0x67, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x07, 0x92, +0x01, 0x4A, 0xE0, 0xF3, 0x08, 0x72, 0x07, 0xD2, +0xD6, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x0C, 0xD4, +0x05, 0x67, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, +0x30, 0xF0, 0x20, 0x69, 0x6C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF7, 0x04, 0x4B, 0x07, 0xD2, +0xE0, 0x9B, 0x07, 0x95, 0x69, 0xF4, 0x08, 0x49, +0x00, 0x6A, 0x91, 0x67, 0xEF, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xCF, 0x56, 0x40, 0x98, 0x06, 0x94, +0x11, 0x6E, 0xCB, 0xEE, 0x4C, 0xEE, 0xDF, 0x6D, +0x80, 0x18, 0xA3, 0x06, 0x0C, 0x92, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF7, 0x04, 0x4B, 0xC1, 0xA2, +0xE0, 0x9B, 0x42, 0x98, 0x07, 0x95, 0x91, 0x67, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x0C, 0x92, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x04, 0x4B, +0xC2, 0xA2, 0x07, 0x95, 0x44, 0x98, 0xE0, 0x9B, +0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x06, 0x92, 0x04, 0x48, 0x01, 0x4A, 0x02, 0x72, +0x06, 0xD2, 0xC4, 0x61, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x21, 0x6A, +0x0A, 0xD4, 0x70, 0xF3, 0x66, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF7, 0x24, 0x9A, 0x30, 0xF0, +0x20, 0x68, 0x0A, 0x93, 0x80, 0xF2, 0x4C, 0x98, +0x30, 0xF0, 0x21, 0x6C, 0x35, 0xE3, 0xF0, 0xF6, +0x04, 0x4C, 0x08, 0x6E, 0x40, 0xEA, 0x0A, 0x95, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x21, 0x6C, -0x35, 0xE3, 0xB0, 0xF6, 0x1C, 0x4C, 0x08, 0x6E, -0x40, 0xEA, 0x0A, 0x95, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x21, 0x6C, 0x08, 0x4D, 0x35, 0xE5, -0x90, 0xF4, 0x14, 0x4C, 0x44, 0x6E, 0x40, 0xEA, -0x0A, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0xD0, 0xF4, -0x18, 0x4C, 0x4C, 0x4A, 0x04, 0xD2, 0x04, 0x93, -0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, -0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, -0x10, 0xF5, 0x1C, 0x4C, 0x44, 0x4A, 0x04, 0xD2, -0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, -0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, -0x21, 0x6C, 0x70, 0xF5, 0x00, 0x4C, 0x44, 0x4A, +0x08, 0x4D, 0x35, 0xE5, 0xB0, 0xF4, 0x1C, 0x4C, +0x44, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0x30, 0xF0, +0x21, 0x6C, 0x10, 0xF5, 0x00, 0x4C, 0x4C, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, -0x30, 0xF0, 0x21, 0x6C, 0xB0, 0xF5, 0x04, 0x4C, +0x30, 0xF0, 0x21, 0x6C, 0x50, 0xF5, 0x04, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, -0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0xF0, 0xF5, +0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0x90, 0xF5, 0x08, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, -0x30, 0xF6, 0x0C, 0x4C, 0x44, 0x4A, 0x04, 0xD2, +0xD0, 0xF5, 0x0C, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, -0x21, 0x6C, 0x70, 0xF6, 0x10, 0x4C, 0x44, 0x4A, +0x21, 0x6C, 0x10, 0xF6, 0x10, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, -0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF7, 0xA4, 0x9B, 0x04, 0x93, -0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x21, 0x6C, -0xD0, 0xF6, 0x14, 0x4C, 0xB5, 0xE3, 0x10, 0x6E, -0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0xD1, -0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF1, -0x60, 0xA2, 0x80, 0xF0, 0x1E, 0x23, 0x30, 0xF0, -0x20, 0x6C, 0x00, 0x6B, 0x22, 0xF6, 0x80, 0x9C, -0x02, 0xF1, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x30, 0xF0, 0x21, 0x6E, -0x30, 0xF0, 0x21, 0x6D, 0xCA, 0xF3, 0x67, 0xC2, -0xCA, 0xF3, 0x8C, 0xDA, 0xCA, 0xF3, 0x65, 0xC2, -0xCA, 0xF3, 0x69, 0xC2, 0xCA, 0xF3, 0x94, 0xDA, -0xCA, 0xF3, 0x68, 0xC2, 0xCA, 0xF3, 0x90, 0xDA, -0xCA, 0xF3, 0x66, 0xC2, 0xCA, 0xF3, 0x6A, 0xC2, -0xCA, 0xF3, 0x98, 0xDA, 0xB0, 0xF6, 0x1C, 0x4E, -0xB0, 0xF4, 0x16, 0x4D, 0x00, 0x6A, 0x00, 0x6B, -0x60, 0xDE, 0x30, 0xF0, 0x20, 0x6C, 0xE1, 0xF2, -0x69, 0x42, 0x85, 0xF7, 0x08, 0x4C, 0x6C, 0x33, -0x6D, 0xE4, 0x04, 0x4B, 0x04, 0xD3, 0xD2, 0xF5, -0x60, 0x42, 0x68, 0x33, 0x6D, 0xE4, 0x04, 0x4B, -0x03, 0xD3, 0x06, 0x6B, 0x78, 0xEA, 0x01, 0xD5, -0x00, 0x69, 0x05, 0x67, 0x12, 0xEB, 0x6D, 0xE4, -0x4A, 0xF7, 0x1D, 0x4B, 0x04, 0x95, 0x00, 0x6C, -0x80, 0xDD, 0x03, 0x95, 0x80, 0xCD, 0x44, 0x35, -0xB5, 0xE1, 0x85, 0xF3, 0x14, 0x4D, 0x30, 0xF0, -0x20, 0x6C, 0xA4, 0x35, 0x85, 0xF7, 0x08, 0x4C, -0xB1, 0xE4, 0x04, 0x4C, 0x05, 0xD4, 0x01, 0x94, -0x00, 0x6D, 0x00, 0xD5, 0x02, 0xD4, 0x05, 0x95, -0x00, 0x6C, 0x22, 0x6F, 0x80, 0xC5, 0x00, 0x94, -0x30, 0xF0, 0x20, 0x6D, 0x85, 0xF7, 0x08, 0x4D, -0xF8, 0xEC, 0x44, 0x6C, 0x06, 0xD2, 0x12, 0xEF, -0x98, 0xE9, 0x12, 0xEC, 0x9D, 0xE7, 0x88, 0x6C, -0x98, 0xEA, 0x12, 0xEC, 0x9D, 0xE7, 0xF1, 0xE5, -0xFD, 0xE5, 0x0A, 0xF5, 0x0C, 0x4C, 0x0A, 0xF6, -0x1C, 0x4F, 0x02, 0x92, 0x00, 0x6D, 0xA0, 0xCC, -0x02, 0x4C, 0x4A, 0xEC, 0xA0, 0xCF, 0x02, 0x4F, -0xF8, 0x61, 0x00, 0x94, 0x06, 0x92, 0x01, 0x4C, -0x00, 0xD4, 0x05, 0x94, 0x01, 0x4C, 0x05, 0xD4, -0x02, 0x94, 0x22, 0x4C, 0x02, 0xD4, 0x00, 0x94, -0x02, 0x74, 0xD1, 0x61, 0xA0, 0xC3, 0xA1, 0xC3, -0xA2, 0xC3, 0x04, 0x95, 0x03, 0x94, 0x01, 0x49, -0x04, 0x4D, 0x04, 0xD5, 0x01, 0x95, 0x02, 0x4C, -0x02, 0x71, 0x44, 0x4D, 0x03, 0xD4, 0x03, 0x4B, -0x01, 0xD5, 0xAC, 0x61, 0xB0, 0x67, 0x01, 0x4A, -0x7F, 0x4D, 0x02, 0x72, 0x04, 0x4E, 0x09, 0x4D, -0x8A, 0x61, 0x09, 0x91, 0x08, 0x90, 0x05, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, -0x4C, 0xEC, 0xCC, 0xEA, 0x4B, 0xEA, 0xC0, 0xF7, -0x42, 0x32, 0x30, 0xF0, 0x20, 0x68, 0x44, 0x32, -0xC0, 0xF3, 0x64, 0x98, 0x07, 0xD5, 0x04, 0xD2, -0xA4, 0x36, 0x08, 0x6A, 0x01, 0x6D, 0x06, 0xD4, -0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEB, 0x06, 0x92, 0x0F, 0x2A, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF7, -0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, -0x48, 0x9A, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF7, 0xB4, 0x9B, -0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x4C, 0x9A, -0x05, 0xD2, 0x06, 0x92, 0x22, 0x68, 0x07, 0x93, -0x18, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xE8, -0x58, 0xEB, 0x04, 0x93, 0x12, 0xEA, 0x41, 0xE0, -0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x01, 0xE2, 0x0A, 0xF5, 0x0C, 0x48, 0xC0, 0xA8, -0x05, 0x92, 0x01, 0x6D, 0xC0, 0x36, 0x4D, 0xEE, -0x28, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, 0x18, 0x6C, -0xAB, 0xED, 0x02, 0x4E, 0x01, 0x49, 0x40, 0xEA, -0x11, 0x71, 0x02, 0x48, 0xEC, 0x61, 0x06, 0x92, -0x22, 0x68, 0x07, 0x93, 0x18, 0xEA, 0x44, 0x6A, -0x12, 0xE8, 0x58, 0xEB, 0x04, 0x93, 0x12, 0xEA, -0x41, 0xE0, 0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, -0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x01, 0xE2, 0x00, 0x6A, 0x0A, 0xF6, -0x1C, 0x48, 0x04, 0xD2, 0xC0, 0xA8, 0x05, 0x93, -0x04, 0x92, 0xC0, 0x36, 0x30, 0xF0, 0x20, 0x69, -0x6D, 0xEE, 0x48, 0x33, 0xC0, 0xF3, 0x44, 0x99, -0x01, 0x6D, 0x6D, 0xEE, 0xC3, 0xF3, 0x18, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x04, 0x93, 0x02, 0x48, -0x01, 0x4B, 0x11, 0x73, 0x04, 0xD3, 0xEA, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0x22, 0xF7, 0xC8, 0x9B, 0x01, 0x6D, 0xC3, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, 0x22, 0xF7, -0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0xC2, 0xF5, 0x8A, 0x42, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF3, 0x1C, 0x4A, 0x85, 0xF7, 0x08, 0x4B, -0x88, 0x34, 0x44, 0x32, 0x91, 0xE3, 0x4D, 0xE3, -0x00, 0x68, 0x04, 0x4C, 0x08, 0x4B, 0x04, 0xD4, -0x05, 0xD3, 0x06, 0xD0, 0x07, 0xD0, 0x08, 0xD0, -0x04, 0x95, 0x01, 0x6C, 0x08, 0x93, 0x40, 0xA5, -0x30, 0xF0, 0x20, 0x69, 0x04, 0x36, 0x8C, 0xEA, -0x44, 0xE8, 0x4D, 0xE3, 0x41, 0xA5, 0x05, 0x95, -0x08, 0xD3, 0x8C, 0xEA, 0x07, 0x94, 0x64, 0x40, -0x44, 0xEB, 0x51, 0xE4, 0x40, 0xA5, 0x07, 0xD4, -0x03, 0x6C, 0x64, 0x33, 0x8C, 0xEA, 0x44, 0xEB, -0x04, 0x94, 0x06, 0x93, 0x01, 0x6D, 0x8C, 0xAC, -0x4D, 0xE3, 0x06, 0xD3, 0xC0, 0xF3, 0x64, 0x99, -0x08, 0x6A, 0x4D, 0xEE, 0x09, 0xD4, 0xAB, 0xED, -0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEB, 0x08, 0x95, -0x07, 0x96, 0x06, 0x93, 0xC0, 0xF3, 0x44, 0x99, -0xAD, 0xEE, 0x6D, 0xEE, 0xE3, 0xF3, 0x10, 0x6C, -0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x09, 0x96, 0x01, 0x6D, 0xE3, 0xF3, -0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x04, 0x94, -0x05, 0x95, 0x01, 0x48, 0x02, 0x4C, 0x01, 0x4D, -0x02, 0x70, 0x04, 0xD4, 0x05, 0xD5, 0xBC, 0x61, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x05, 0xD2, 0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x64, 0x98, -0x01, 0x69, 0x2B, 0xE9, 0x44, 0x36, 0x08, 0x6A, -0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xB1, 0x67, -0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xE2, 0xF7, 0xD0, 0x9B, 0x03, 0xF3, -0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x05, 0x92, -0x07, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x08, 0x6C, 0xB1, 0x67, 0x80, 0x6E, 0x06, 0x10, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xEA, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, -0x2B, 0xE9, 0x03, 0xF3, 0x0C, 0x6C, 0xB1, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF7, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x14, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF7, 0xD4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0xB1, 0x67, +0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, +0x30, 0xF0, 0x21, 0x6C, 0x50, 0xF6, 0x14, 0x4C, +0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, +0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, +0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0x90, 0xF6, +0x18, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, +0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, -0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x1C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE2, 0xF7, -0xDC, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x02, 0x72, -0x04, 0xD2, 0x99, 0x61, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xA8, 0x9B, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, +0x30, 0xF0, 0x21, 0x6C, 0xF0, 0xF6, 0x1C, 0x4C, +0xB5, 0xE3, 0x10, 0x6E, 0x40, 0xEA, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0xD1, 0x08, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF1, 0x60, 0xA2, 0x80, 0xF0, +0x1E, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0x6B, +0x22, 0xF6, 0x84, 0x9C, 0x02, 0xF1, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x21, 0x6E, 0x30, 0xF0, 0x21, 0x6D, +0xCA, 0xF3, 0x6F, 0xC2, 0xCA, 0xF3, 0x94, 0xDA, +0xCA, 0xF3, 0x6D, 0xC2, 0xCA, 0xF3, 0x71, 0xC2, +0xCA, 0xF3, 0x9C, 0xDA, 0xCA, 0xF3, 0x70, 0xC2, +0xCA, 0xF3, 0x98, 0xDA, 0xCA, 0xF3, 0x6E, 0xC2, +0xCA, 0xF3, 0x72, 0xC2, 0xEA, 0xF3, 0x80, 0xDA, +0xF0, 0xF6, 0x04, 0x4E, 0xD0, 0xF4, 0x1E, 0x4D, +0x00, 0x6A, 0x00, 0x6B, 0x60, 0xDE, 0x30, 0xF0, +0x20, 0x6C, 0xE1, 0xF2, 0x6A, 0x42, 0xA5, 0xF7, +0x08, 0x4C, 0x6C, 0x33, 0x6D, 0xE4, 0x04, 0x4B, +0x04, 0xD3, 0xD2, 0xF5, 0x62, 0x42, 0x68, 0x33, +0x6D, 0xE4, 0x04, 0x4B, 0x03, 0xD3, 0x06, 0x6B, +0x78, 0xEA, 0x01, 0xD5, 0x00, 0x69, 0x05, 0x67, +0x12, 0xEB, 0x6D, 0xE4, 0x6A, 0xF7, 0x05, 0x4B, +0x04, 0x95, 0x00, 0x6C, 0x80, 0xDD, 0x03, 0x95, +0x80, 0xCD, 0x44, 0x35, 0xB5, 0xE1, 0x85, 0xF3, +0x18, 0x4D, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0x35, +0xA5, 0xF7, 0x08, 0x4C, 0xB1, 0xE4, 0x04, 0x4C, +0x05, 0xD4, 0x01, 0x94, 0x00, 0x6D, 0x00, 0xD5, +0x02, 0xD4, 0x05, 0x95, 0x00, 0x6C, 0x22, 0x6F, +0x80, 0xC5, 0x00, 0x94, 0x30, 0xF0, 0x20, 0x6D, +0xA5, 0xF7, 0x08, 0x4D, 0xF8, 0xEC, 0x44, 0x6C, +0x06, 0xD2, 0x12, 0xEF, 0x98, 0xE9, 0x12, 0xEC, +0x9D, 0xE7, 0x88, 0x6C, 0x98, 0xEA, 0x12, 0xEC, +0x9D, 0xE7, 0xF1, 0xE5, 0xFD, 0xE5, 0x0A, 0xF5, +0x14, 0x4C, 0x2A, 0xF6, 0x04, 0x4F, 0x02, 0x92, +0x00, 0x6D, 0xA0, 0xCC, 0x02, 0x4C, 0x4A, 0xEC, +0xA0, 0xCF, 0x02, 0x4F, 0xF8, 0x61, 0x00, 0x94, +0x06, 0x92, 0x01, 0x4C, 0x00, 0xD4, 0x05, 0x94, +0x01, 0x4C, 0x05, 0xD4, 0x02, 0x94, 0x22, 0x4C, +0x02, 0xD4, 0x00, 0x94, 0x02, 0x74, 0xD1, 0x61, +0xA0, 0xC3, 0xA1, 0xC3, 0xA2, 0xC3, 0x04, 0x95, +0x03, 0x94, 0x01, 0x49, 0x04, 0x4D, 0x04, 0xD5, +0x01, 0x95, 0x02, 0x4C, 0x02, 0x71, 0x44, 0x4D, +0x03, 0xD4, 0x03, 0x4B, 0x01, 0xD5, 0xAC, 0x61, +0xB0, 0x67, 0x01, 0x4A, 0x7F, 0x4D, 0x02, 0x72, +0x04, 0x4E, 0x09, 0x4D, 0x8A, 0x61, 0x09, 0x91, +0x08, 0x90, 0x05, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEC, 0xCC, 0xEA, +0x4B, 0xEA, 0xC0, 0xF7, 0x42, 0x32, 0x30, 0xF0, +0x20, 0x68, 0x44, 0x32, 0xC0, 0xF3, 0x64, 0x98, +0x07, 0xD5, 0x04, 0xD2, 0xA4, 0x36, 0x08, 0x6A, +0x01, 0x6D, 0x06, 0xD4, 0x4D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x06, 0x92, +0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x22, 0xF7, 0xB8, 0x9B, 0x23, 0xF3, +0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF7, 0x4C, 0x9A, 0x0E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x22, 0xF7, 0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF7, 0x50, 0x9A, 0x05, 0xD2, 0x06, 0x92, +0x22, 0x68, 0x07, 0x93, 0x18, 0xEA, 0x44, 0x6A, +0x00, 0x69, 0x12, 0xE8, 0x58, 0xEB, 0x04, 0x93, +0x12, 0xEA, 0x41, 0xE0, 0x88, 0x6A, 0x58, 0xEB, +0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x01, 0xE2, 0x0A, 0xF5, +0x14, 0x48, 0xC0, 0xA8, 0x05, 0x92, 0x01, 0x6D, +0xC0, 0x36, 0x4D, 0xEE, 0x28, 0x32, 0x4D, 0xEE, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x02, 0x4E, +0x01, 0x49, 0x40, 0xEA, 0x11, 0x71, 0x02, 0x48, +0xEC, 0x61, 0x06, 0x92, 0x22, 0x68, 0x07, 0x93, +0x18, 0xEA, 0x44, 0x6A, 0x12, 0xE8, 0x58, 0xEB, +0x04, 0x93, 0x12, 0xEA, 0x41, 0xE0, 0x88, 0x6A, +0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x01, 0xE2, +0x00, 0x6A, 0x2A, 0xF6, 0x04, 0x48, 0x04, 0xD2, +0xC0, 0xA8, 0x05, 0x93, 0x04, 0x92, 0xC0, 0x36, +0x30, 0xF0, 0x20, 0x69, 0x6D, 0xEE, 0x48, 0x33, +0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0x6D, 0xEE, +0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x04, 0x93, 0x02, 0x48, 0x01, 0x4B, 0x11, 0x73, +0x04, 0xD3, 0xEA, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x99, 0x22, 0xF7, 0xCC, 0x9B, +0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x99, 0x22, 0xF7, 0xB8, 0x9B, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0xC2, 0xF5, 0x8C, 0x42, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF3, 0x00, 0x4A, +0xA5, 0xF7, 0x08, 0x4B, 0x88, 0x34, 0x44, 0x32, +0x91, 0xE3, 0x4D, 0xE3, 0x00, 0x68, 0x04, 0x4C, +0x08, 0x4B, 0x04, 0xD4, 0x05, 0xD3, 0x06, 0xD0, +0x07, 0xD0, 0x08, 0xD0, 0x04, 0x95, 0x01, 0x6C, +0x08, 0x93, 0x40, 0xA5, 0x30, 0xF0, 0x20, 0x69, +0x04, 0x36, 0x8C, 0xEA, 0x44, 0xE8, 0x4D, 0xE3, +0x41, 0xA5, 0x05, 0x95, 0x08, 0xD3, 0x8C, 0xEA, +0x07, 0x94, 0x64, 0x40, 0x44, 0xEB, 0x51, 0xE4, +0x40, 0xA5, 0x07, 0xD4, 0x03, 0x6C, 0x64, 0x33, +0x8C, 0xEA, 0x44, 0xEB, 0x04, 0x94, 0x06, 0x93, +0x01, 0x6D, 0x8C, 0xAC, 0x4D, 0xE3, 0x06, 0xD3, +0xC0, 0xF3, 0x64, 0x99, 0x08, 0x6A, 0x4D, 0xEE, +0x09, 0xD4, 0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, +0x40, 0xEB, 0x08, 0x95, 0x07, 0x96, 0x06, 0x93, +0xC0, 0xF3, 0x44, 0x99, 0xAD, 0xEE, 0x6D, 0xEE, +0xE3, 0xF3, 0x10, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x09, 0x96, +0x01, 0x6D, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x04, 0x94, 0x05, 0x95, 0x01, 0x48, +0x02, 0x4C, 0x01, 0x4D, 0x02, 0x70, 0x04, 0xD4, +0x05, 0xD5, 0xBC, 0x61, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0xD2, 0x00, 0x69, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x6B, 0x24, 0x36, 0x01, 0x6D, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, +0x04, 0x92, 0x07, 0x2A, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, 0x01, 0x6E, +0x06, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x08, 0x6C, 0x80, 0x6D, 0x00, 0x6E, 0x01, 0x49, +0x40, 0xEA, 0x02, 0x71, 0xE1, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x00, 0xF2, 0x1C, 0x22, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, 0xB4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x22, 0xF6, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF4, 0x10, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, -0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x22, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF6, 0x00, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0x02, 0xF6, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0xE0, 0xF1, 0x1F, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x02, 0xF6, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, -0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x20, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x34, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x08, 0xF1, 0x0C, 0x6C, @@ -5078,175 +5106,186 @@ u8 array_mp_8822c_fw_ap[] = { 0x40, 0xEA, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, 0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, 0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF7, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, 0x1C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF0, 0x00, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, -0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF0, 0x0C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x03, 0xF0, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF0, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x03, 0xF0, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, -0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x23, 0xF0, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF0, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x23, 0xF0, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, -0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF0, 0x0C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x23, 0xF0, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF0, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x23, 0xF0, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x18, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0x20, 0x6B, 0xE2, 0xF7, 0x18, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, +0xE2, 0xF7, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF0, 0x04, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x03, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x03, 0xF0, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, -0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF0, 0x14, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x03, 0xF0, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF0, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF0, 0x04, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x03, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, -0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF0, 0x14, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x23, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF0, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x23, 0xF0, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x00, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF0, 0x00, 0x4B, 0xC0, 0xF3, +0x20, 0x6B, 0x23, 0xF0, 0x14, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0xC0, 0x9B, 0xC9, 0x12, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x04, 0xD2, 0x4A, 0xF7, -0x5C, 0xA2, 0xE0, 0xF0, 0x1B, 0x22, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, -0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, +0xA5, 0xF7, 0x08, 0x4A, 0x04, 0xD2, 0x6A, 0xF7, +0x44, 0xA2, 0xE0, 0xF0, 0x1B, 0x22, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, +0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x93, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF0, 0x00, 0x6C, 0xCA, 0xF3, 0xC2, 0xA3, +0x63, 0xF0, 0x00, 0x6C, 0xCA, 0xF3, 0xCA, 0xA3, 0x04, 0x6B, 0x0E, 0xF0, 0x00, 0x6D, 0x67, 0xEE, 0xC3, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x23, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0xCA, 0xF3, 0xC2, 0xA2, 0xC0, 0xF3, +0x10, 0x6C, 0xCA, 0xF3, 0xCA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0xCA, 0xF3, -0xC2, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xCA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x43, 0xF0, 0x04, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0xCA, 0xF3, 0xC2, 0xA2, 0xC0, 0xF3, +0x10, 0x6C, 0xCA, 0xF3, 0xCA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x08, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0xCA, 0xF3, -0xC2, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xCA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x43, 0xF0, 0x0C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, -0xCA, 0xF3, 0xC2, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xCA, 0xF3, 0xCA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF0, 0x00, 0x4B, 0x60, 0x9B, +0x20, 0x6B, 0x43, 0xF0, 0x14, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x23, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, -0x10, 0x6C, 0xCA, 0xF3, 0xC2, 0xA2, 0xC0, 0xF3, +0x10, 0x6C, 0xCA, 0xF3, 0xCA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0xCA, 0xF3, -0xC2, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xCA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x43, 0xF0, 0x04, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, -0x10, 0x6C, 0xCA, 0xF3, 0xC2, 0xA2, 0xC0, 0xF3, +0x10, 0x6C, 0xCA, 0xF3, 0xCA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x08, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0xCA, 0xF3, -0xC2, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xCA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x43, 0xF0, 0x0C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, -0xCA, 0xF3, 0xC2, 0xA2, 0xB1, 0x67, 0xC0, 0xF3, +0xCA, 0xF3, 0xCA, 0xA2, 0xB1, 0x67, 0xC0, 0xF3, 0x44, 0x98, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF0, 0x00, 0x4B, 0x60, 0x9B, +0x20, 0x6B, 0x43, 0xF0, 0x14, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x63, 0x11, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x43, 0xF0, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x68, 0x23, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, -0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x1C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF0, 0x00, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF0, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, @@ -5256,41 +5295,41 @@ u8 array_mp_8822c_fw_ap[] = { 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF0, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x04, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF0, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF0, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF0, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF0, 0x0C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x1C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF0, 0x00, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF0, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, @@ -5300,49 +5339,38 @@ u8 array_mp_8822c_fw_ap[] = { 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF0, 0x18, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x63, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF0, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x83, 0xF0, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x04, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF0, 0x08, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF0, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF0, 0x18, 0x4B, 0xC0, 0xF3, +0x20, 0x6B, 0x83, 0xF0, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xBC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, +0x24, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x68, 0xF1, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF0, 0x20, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0xE2, 0xF7, 0x34, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, @@ -5359,7 +5387,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x06, 0x67, 0xA3, 0xF0, 0xC0, 0x9B, 0x09, 0xD5, +0x06, 0x67, 0x83, 0xF0, 0xD4, 0x9B, 0x09, 0xD5, 0x01, 0x6D, 0x24, 0x67, 0x0B, 0xD7, 0x63, 0xF5, 0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x00, 0x6A, 0x80, 0x98, 0x1F, 0xF7, 0x00, 0x6B, 0x8C, 0xEB, @@ -5374,60 +5402,60 @@ u8 array_mp_8822c_fw_ap[] = { 0x11, 0xE2, 0x09, 0x92, 0x80, 0xAC, 0xAB, 0xED, 0x0D, 0xE2, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x04, 0x48, 0x40, 0xEA, 0x2C, 0x70, 0xF0, 0x61, -0x30, 0xF0, 0x21, 0x6A, 0xB0, 0xF6, 0x55, 0xA2, +0x30, 0xF0, 0x21, 0x6A, 0xD0, 0xF6, 0x5D, 0xA2, 0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF0, 0x0C, 0x6C, -0x02, 0xF6, 0xA0, 0x9B, 0x00, 0x6E, 0x09, 0x10, +0x02, 0xF6, 0xA4, 0x9B, 0x00, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0x02, 0xF6, 0xA0, 0x9B, 0x03, 0xF0, 0x0C, 0x6C, +0x02, 0xF6, 0xA4, 0x9B, 0x03, 0xF0, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x21, 0x6A, -0xB0, 0xF6, 0x57, 0xA2, 0x01, 0x72, 0x0C, 0x61, +0xD0, 0xF6, 0x5F, 0xA2, 0x01, 0x72, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x08, 0xF1, 0x0C, 0x6C, -0x02, 0xF6, 0xA0, 0x9B, 0x00, 0x6E, 0x0B, 0x10, +0x02, 0xF6, 0xA4, 0x9B, 0x00, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9A, 0x02, 0xF6, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x9A, 0x02, 0xF6, 0xA4, 0x9B, 0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x21, 0x6A, 0xF0, 0xF6, 0x44, 0xA2, +0x30, 0xF0, 0x21, 0x6A, 0x10, 0xF7, 0x4C, 0xA2, 0x1E, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF6, 0xA0, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x22, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, 0x1C, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x58, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x42, 0xF7, 0xB4, 0x9B, 0x23, 0xF6, 0x04, 0x6C, +0x42, 0xF7, 0xB8, 0x9B, 0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0xA4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF0, 0xB8, 0x9B, 0xC3, 0xF4, 0x10, 0x6C, 0x07, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0xA0, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF5, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, 0xCB, 0xEE, 0xA6, 0x67, 0x23, 0xF4, 0x18, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0xA8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF0, 0xBC, 0x9B, 0x21, 0xF0, 0x04, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0xF8, 0x9B, 0xFF, 0x6A, 0x04, 0x6B, +0xC2, 0xF6, 0xFC, 0x9B, 0xFF, 0x6A, 0x04, 0x6B, 0xC0, 0xA7, 0x4C, 0xED, 0x4C, 0xEC, 0x4C, 0xEE, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC7, 0x06, 0x2D, 0x07, 0x6B, 0x07, 0x24, 0x01, 0x74, 0x07, 0x6B, 0x12, 0x61, 0x0C, 0x10, 0x07, 0x2C, 0x79, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x50, 0x9A, 0x08, 0x10, 0x01, 0x74, 0x07, 0x61, +0x54, 0x9A, 0x08, 0x10, 0x01, 0x74, 0x07, 0x61, 0x79, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF0, 0x4C, 0x9A, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF6, 0x58, 0x9A, 0xC0, 0xC2, +0xA3, 0xF0, 0x40, 0x9A, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x5C, 0x9A, 0xC0, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0xCC, 0xEC, 0xC0, 0xF3, 0x44, 0x98, @@ -5438,13 +5466,13 @@ u8 array_mp_8822c_fw_ap[] = { 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, -0xA3, 0xF0, 0xD0, 0x9B, 0x11, 0x10, 0xC0, 0xF3, +0xA3, 0xF0, 0xC4, 0x9B, 0x11, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, -0xD4, 0x9B, 0xC3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, +0xC8, 0x9B, 0xC3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x30, 0xF0, 0x20, 0x68, 0xC3, 0xF3, 0x18, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x00, 0x6E, @@ -5453,52 +5481,52 @@ u8 array_mp_8822c_fw_ap[] = { 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF0, 0xB8, 0x9A, 0x02, 0xF7, 0x00, 0x6C, -0x80, 0x18, 0x1D, 0x1A, 0x20, 0x6B, 0x4C, 0xEB, +0xA3, 0xF0, 0xAC, 0x9A, 0x02, 0xF7, 0x00, 0x6C, +0x80, 0x18, 0x27, 0x1A, 0x20, 0x6B, 0x4C, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0x0A, 0x70, 0xEC, 0x61, 0x0A, 0x68, 0x50, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, 0x8C, 0xE8, 0x80, 0x18, -0x59, 0x0B, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF0, -0xDC, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x0D, 0xEE, +0x63, 0x0B, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF0, +0xD0, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x0D, 0xEE, 0xB1, 0x67, 0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, -0x32, 0x1A, 0xB1, 0x67, 0x02, 0xF7, 0x08, 0x6C, -0x80, 0x18, 0x1D, 0x1A, 0x07, 0x97, 0x06, 0x91, +0x3C, 0x1A, 0xB1, 0x67, 0x02, 0xF7, 0x08, 0x6C, +0x80, 0x18, 0x27, 0x1A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, 0x37, 0x25, 0x61, 0x45, 0x00, 0x6A, -0x0E, 0x2B, 0x80, 0x18, 0x59, 0x0B, 0x01, 0x69, +0x0E, 0x2B, 0x80, 0x18, 0x63, 0x0B, 0x01, 0x69, 0x0C, 0x96, 0x2B, 0xE9, 0x02, 0xF7, 0x04, 0x6C, -0xB1, 0x67, 0x80, 0x18, 0x32, 0x1A, 0x02, 0xF7, +0xB1, 0x67, 0x80, 0x18, 0x3C, 0x1A, 0x02, 0xF7, 0x00, 0x6C, 0xB1, 0x67, 0x1F, 0x10, 0x71, 0x67, 0x66, 0xEA, 0x01, 0x6C, 0x8C, 0xEB, 0x04, 0x2B, 0x01, 0x4A, 0x20, 0x72, 0xF8, 0x61, 0x00, 0x6A, 0x90, 0x67, 0x04, 0xD2, 0x2F, 0xE9, 0x80, 0x18, -0x68, 0x0B, 0x4C, 0xE9, 0x80, 0x18, 0x59, 0x0B, +0x72, 0x0B, 0x4C, 0xE9, 0x80, 0x18, 0x63, 0x0B, 0x0C, 0x96, 0x04, 0x92, 0x01, 0x6D, 0x02, 0xF7, 0x04, 0x6C, 0xC4, 0xEA, 0xAB, 0xED, 0x2D, 0xEE, -0x80, 0x18, 0x32, 0x1A, 0x01, 0x6D, 0x02, 0xF7, +0x80, 0x18, 0x3C, 0x1A, 0x01, 0x6D, 0x02, 0xF7, 0x00, 0x6C, 0xAB, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0xC0, 0x9A, 0x0D, 0xEE, 0x80, 0x18, -0x32, 0x1A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0xA3, 0xF0, 0xD4, 0x9A, 0x0D, 0xEE, 0x80, 0x18, +0x3C, 0x1A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x38, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0x78, 0x0B, 0x38, 0x6C, 0x01, 0xF4, -0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0x78, 0x0B, +0x80, 0x18, 0x82, 0x0B, 0x38, 0x6C, 0x01, 0xF4, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0x82, 0x0B, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x38, 0x6C, 0x06, 0xF0, -0x00, 0x6D, 0x03, 0x6E, 0x80, 0x18, 0x78, 0x0B, +0x00, 0x6D, 0x03, 0x6E, 0x80, 0x18, 0x82, 0x0B, 0x38, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, -0x80, 0x18, 0x78, 0x0B, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0x82, 0x0B, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x22, 0x80, 0x18, -0xA4, 0x0B, 0x80, 0x18, 0x9B, 0x0B, 0x09, 0x10, -0x30, 0xF0, 0x21, 0x6A, 0xF0, 0xF6, 0xDC, 0x9A, +0xAE, 0x0B, 0x80, 0x18, 0xA5, 0x0B, 0x09, 0x10, +0x30, 0xF0, 0x21, 0x6A, 0x30, 0xF7, 0xC4, 0x9A, 0x01, 0x6D, 0x38, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0x78, 0x0B, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x82, 0x0B, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6A, 0x09, 0xD5, 0x27, 0x67, 0xA0, 0x9E, 0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEB, 0x02, 0xF0, @@ -5509,7 +5537,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x60, 0x9D, 0x55, 0xE4, 0x04, 0x4A, 0x0C, 0x72, 0x60, 0xDD, 0x04, 0x4E, 0xE4, 0x61, 0x00, 0x68, 0x09, 0xE1, 0x80, 0xAA, 0x01, 0x6D, 0xAB, 0xED, -0x80, 0x18, 0xA5, 0x19, 0x09, 0x94, 0x0D, 0xE4, +0x80, 0x18, 0xAF, 0x19, 0x09, 0x94, 0x0D, 0xE4, 0x04, 0x48, 0x2C, 0x70, 0x40, 0xDB, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, @@ -5521,34 +5549,34 @@ u8 array_mp_8822c_fw_ap[] = { 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x05, 0x92, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, -0x00, 0x6C, 0x22, 0xF7, 0xB4, 0x9B, 0x03, 0x6E, +0x00, 0x6C, 0x22, 0xF7, 0xB8, 0x9B, 0x03, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x22, 0xF7, 0xB4, 0x9B, 0x23, 0xF3, +0x44, 0x98, 0x22, 0xF7, 0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF0, 0xA4, 0x9B, 0xC3, 0xF3, +0x44, 0x98, 0xA3, 0xF0, 0xB8, 0x9B, 0xC3, 0xF3, 0x14, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x22, 0xF7, 0xA4, 0x9B, 0x91, 0x67, 0x10, 0x6E, +0x22, 0xF7, 0xA8, 0x9B, 0x91, 0x67, 0x10, 0x6E, 0x40, 0xEA, 0x05, 0x92, 0x22, 0x69, 0x06, 0x93, 0x38, 0xEA, 0x44, 0x6A, 0x12, 0xE9, 0x58, 0xEB, 0x04, 0x93, 0x12, 0xEA, 0x45, 0xE1, 0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x45, 0xE1, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x21, 0xE2, -0x25, 0xE2, 0x00, 0x6A, 0x0A, 0xF5, 0x0C, 0x48, -0x0A, 0xF6, 0x1C, 0x49, 0x04, 0xD2, 0x04, 0x93, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x21, 0xE2, +0x25, 0xE2, 0x00, 0x6A, 0x0A, 0xF5, 0x14, 0x48, +0x2A, 0xF6, 0x04, 0x49, 0x04, 0xD2, 0x04, 0x93, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0x68, 0x36, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x68, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x6C, 0x9B, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0xA5, 0x19, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x6C, 0x9B, 0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, +0xAF, 0x19, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, +0x70, 0x9B, 0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x60, 0xC8, 0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, 0x60, 0xC9, 0x02, 0x48, 0x01, 0x4A, 0x11, 0x72, 0x04, 0xD2, 0x02, 0x49, 0xD7, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0xB4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, @@ -5556,47 +5584,47 @@ u8 array_mp_8822c_fw_ap[] = { 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6A, 0x24, 0x67, -0x85, 0xF7, 0x08, 0x48, 0x4C, 0xED, 0x4C, 0xE9, -0xAA, 0xF3, 0x55, 0xA0, 0x06, 0xD5, 0x24, 0x36, +0xA5, 0xF7, 0x08, 0x48, 0x4C, 0xED, 0x4C, 0xE9, +0xAA, 0xF3, 0x5D, 0xA0, 0x06, 0xD5, 0x24, 0x36, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x9A, 0x01, 0x6D, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0xB4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xAA, 0xF3, 0x54, 0xA0, 0x4B, 0x2A, 0x06, 0x92, -0x03, 0x22, 0x12, 0x6A, 0xAA, 0xF3, 0x5A, 0xC0, +0xAA, 0xF3, 0x5C, 0xA0, 0x4B, 0x2A, 0x06, 0x92, +0x03, 0x22, 0x12, 0x6A, 0xCA, 0xF3, 0x42, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x21, 0x6B, -0x50, 0xF3, 0xC2, 0xA3, 0xC0, 0xF3, 0x44, 0x98, +0x70, 0xF3, 0xCA, 0xA3, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x08, 0x4B, 0x83, 0x67, 0xB1, 0x67, -0xDE, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0x78, 0x56, +0x69, 0xF4, 0x08, 0x4B, 0x83, 0x67, 0xB1, 0x67, +0xDE, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x06, 0x94, 0xE1, 0xF7, 0x1F, 0x6F, 0x20, 0x6A, 0xB1, 0x67, 0x56, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0xCF, 0x56, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0x02, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0xC8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x18, 0x6E, 0x49, 0x10, 0x06, 0x92, 0x03, 0x22, -0x12, 0x6A, 0xAA, 0xF3, 0x5A, 0xC0, 0x01, 0x6A, +0x12, 0x6A, 0xCA, 0xF3, 0x42, 0xC0, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, -0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x49, 0xF4, +0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x69, 0xF4, 0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, 0xDE, 0x6E, -0x80, 0x18, 0x78, 0x56, 0xE1, 0xF7, 0x1F, 0x6F, +0x80, 0x18, 0xCF, 0x56, 0xE1, 0xF7, 0x1F, 0x6F, 0x90, 0x67, 0x00, 0x6A, 0xB1, 0x67, 0x56, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x21, 0x6B, 0x50, 0xF3, -0xC2, 0xA3, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0xCF, 0x56, 0x30, 0xF0, 0x21, 0x6B, 0x70, 0xF3, +0xCA, 0xA3, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0x02, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF0, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, @@ -5608,37 +5636,37 @@ u8 array_mp_8822c_fw_ap[] = { 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x06, 0xD2, 0x85, 0xF7, -0x08, 0x4B, 0xAA, 0xF3, 0x55, 0xA3, 0x07, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0x06, 0xD2, 0xA5, 0xF7, +0x08, 0x4B, 0xAA, 0xF3, 0x5D, 0xA3, 0x07, 0xD3, 0x06, 0x93, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xD2, 0x64, 0x31, 0x08, 0x6A, 0x4D, 0xE9, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF0, 0x1C, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0x83, 0xF0, 0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, -0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0xB4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x69, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x07, 0x93, 0xAA, 0xF3, -0x54, 0xA3, 0x11, 0x2A, 0x01, 0x6A, 0x04, 0xD2, +0x5C, 0xA3, 0x11, 0x2A, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x69, -0x06, 0x95, 0xE2, 0xF5, 0xF0, 0x9A, 0x49, 0xF4, +0x06, 0x95, 0xE2, 0xF5, 0xF0, 0x9A, 0x69, 0xF4, 0x08, 0x49, 0x91, 0x67, 0xDE, 0x6E, 0x80, 0x18, -0x78, 0x56, 0x20, 0x6A, 0x10, 0x10, 0x01, 0x6A, +0xCF, 0x56, 0x20, 0x6A, 0x10, 0x10, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x06, 0x95, 0xE2, 0xF5, 0xF0, 0x9A, -0x49, 0xF4, 0x08, 0x49, 0x91, 0x67, 0xDE, 0x6E, -0x80, 0x18, 0x78, 0x56, 0x00, 0x6A, 0x06, 0x95, +0x69, 0xF4, 0x08, 0x49, 0x91, 0x67, 0xDE, 0x6E, +0x80, 0x18, 0xCF, 0x56, 0x00, 0x6A, 0x06, 0x95, 0x91, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0xC0, 0xF3, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x08, 0x92, 0x06, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, @@ -5649,87 +5677,87 @@ u8 array_mp_8822c_fw_ap[] = { 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xFF, 0x68, 0xAA, 0xF3, -0x75, 0xA2, 0x8C, 0xE8, 0x06, 0xD2, 0x04, 0x32, +0xA5, 0xF7, 0x08, 0x4A, 0xFF, 0x68, 0xAA, 0xF3, +0x7D, 0xA2, 0x8C, 0xE8, 0x06, 0xD2, 0x04, 0x32, 0x07, 0xD2, 0x08, 0xD3, 0x07, 0x93, 0x30, 0xF0, 0x20, 0x69, 0x08, 0x6A, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xC3, 0x67, 0x07, 0xD3, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xBC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x06, 0x92, -0xAA, 0xF3, 0x54, 0xA2, 0x06, 0xD2, 0x5B, 0x2A, +0xAA, 0xF3, 0x5C, 0xA2, 0x06, 0xD2, 0x5B, 0x2A, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x69, -0x49, 0xF4, 0x08, 0x49, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x6E, 0x80, 0x18, 0x78, 0x56, 0x01, 0x6B, +0xC3, 0xF0, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x69, +0x69, 0xF4, 0x08, 0x49, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x6E, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, -0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, 0x01, 0x6A, +0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, -0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x10, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, +0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x10, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0xCF, 0x56, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, +0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x10, 0x4B, 0xE0, 0x9B, 0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, +0xCF, 0x56, 0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, +0xCF, 0x56, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x06, 0x93, 0x5A, 0x10, 0x07, 0x6A, +0xCF, 0x56, 0x06, 0x93, 0x5A, 0x10, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, -0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0x49, 0xF4, +0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0x69, 0xF4, 0x08, 0x49, 0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, -0x80, 0x18, 0x78, 0x56, 0x01, 0x6A, 0x91, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x01, 0x6B, 0x91, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, -0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, +0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x10, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x00, 0x6A, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, -0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, -0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, +0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x10, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, -0xE2, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0xE2, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, -0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6B, 0x91, 0x67, 0x30, 0xF0, 0x20, 0x69, -0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x49, 0xF4, -0x08, 0x49, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, +0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x69, 0xF4, +0x08, 0x49, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, -0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, -0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x21, 0x6A, 0x30, 0xF3, 0x5C, 0xA2, +0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x30, 0xF0, 0x21, 0x6A, 0x70, 0xF3, 0x44, 0xA2, 0x01, 0x22, 0x20, 0x6A, 0x7F, 0x6F, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x30, 0xF0, 0x20, 0x69, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0xC0, 0xF3, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x09, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xB0, 0x67, 0x10, 0x6F, 0x01, 0x6A, 0x49, 0xF4, +0xB0, 0x67, 0x10, 0x6F, 0x01, 0x6A, 0x69, 0xF4, 0x08, 0x4C, 0xEF, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0xC0, 0xF3, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x12, 0x6E, @@ -5741,22 +5769,22 @@ u8 array_mp_8822c_fw_ap[] = { 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x75, 0xA2, +0xA5, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x7D, 0xA2, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0x8C, 0xE9, 0x07, 0xD3, 0xC0, 0xF3, 0x64, 0x98, 0x06, 0xD2, 0x24, 0x36, 0x08, 0x6A, 0x01, 0x6D, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xBC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0xD4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0xC8, 0x9B, 0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x06, 0x93, 0xAA, 0xF3, 0x54, 0xA3, +0x40, 0xEA, 0x06, 0x93, 0xAA, 0xF3, 0x5C, 0xA3, 0x03, 0x2A, 0x81, 0xF0, 0x07, 0x4A, 0x02, 0x10, 0xC1, 0xF0, 0x0A, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0x49, 0xF4, 0x08, 0x4C, 0xB1, 0x67, 0x56, 0x6E, +0x69, 0xF4, 0x08, 0x4C, 0xB1, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0xCF, 0x56, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x09, 0x6E, 0x40, 0xEA, 0x07, 0x92, 0x06, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, @@ -5769,70 +5797,70 @@ u8 array_mp_8822c_fw_ap[] = { 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xFF, 0x68, 0x8C, 0xE8, -0xAA, 0xF3, 0x75, 0xA2, 0x06, 0xD2, 0x04, 0x32, +0xA5, 0xF7, 0x08, 0x4A, 0xFF, 0x68, 0x8C, 0xE8, +0xAA, 0xF3, 0x7D, 0xA2, 0x06, 0xD2, 0x04, 0x32, 0x07, 0xD2, 0x08, 0xD3, 0x07, 0x93, 0x30, 0xF0, 0x20, 0x69, 0x08, 0x6A, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xC3, 0x67, 0x07, 0xD3, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xBC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x30, 0xF0, 0x20, 0x69, 0x49, 0xF4, +0x44, 0x99, 0x30, 0xF0, 0x20, 0x69, 0x69, 0xF4, 0x08, 0x49, 0x23, 0xF3, 0x00, 0x6C, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDF, 0x6E, 0x10, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x00, 0x6B, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, -0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, 0x00, 0x6A, +0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, -0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x06, 0x93, 0xAA, 0xF3, 0x74, 0xA3, 0x06, 0xD3, +0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x06, 0x93, 0xAA, 0xF3, 0x7C, 0xA3, 0x06, 0xD3, 0x35, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x10, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x81, 0xF0, 0x07, 0x6A, 0x91, 0x67, +0xCF, 0x56, 0x81, 0xF0, 0x07, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x01, 0x6A, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x10, 0x4A, 0x06, 0x93, 0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, -0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, 0x04, 0x6A, +0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x06, 0x93, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x06, 0x93, 0x04, 0xD3, 0x3C, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x10, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x61, 0xF0, 0x08, 0x6A, +0x80, 0x18, 0xCF, 0x56, 0x61, 0xF0, 0x08, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, -0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, -0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x10, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, +0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, -0x01, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, +0x01, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, -0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6A, 0x04, 0xD2, 0x91, 0x67, 0x30, 0xF0, 0x20, 0x69, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, -0x49, 0xF4, 0x08, 0x49, 0x80, 0x18, 0x78, 0x56, +0x69, 0xF4, 0x08, 0x49, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, -0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, -0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x21, 0x6A, 0x30, 0xF3, 0x5C, 0xA2, +0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x30, 0xF0, 0x21, 0x6A, 0x70, 0xF3, 0x44, 0xA2, 0x01, 0x22, 0x20, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x7F, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x09, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0x06, 0x73, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, @@ -5845,135 +5873,135 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x6E, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x04, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x69, -0x49, 0xF4, 0x08, 0x48, 0x0E, 0xD4, 0x0F, 0xD5, +0x69, 0xF4, 0x08, 0x48, 0x0E, 0xD4, 0x0F, 0xD5, 0x90, 0x67, 0xB1, 0x67, 0xEF, 0x6E, 0x04, 0xD1, -0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF7, 0x00, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF7, 0x04, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD1, 0x80, 0x18, -0x78, 0x56, 0x0E, 0x90, 0x0F, 0x91, 0x00, 0x6A, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, +0xCF, 0x56, 0x0E, 0x90, 0x0F, 0x91, 0x00, 0x6A, +0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x08, 0x4B, 0x06, 0xD3, 0x40, 0x99, 0xC0, 0x98, 0x83, 0x67, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0x00, 0x4A, 0xE0, 0x9A, 0x00, 0x6D, -0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF7, 0x00, 0x4B, 0xC0, 0x98, 0x41, 0x99, +0x22, 0xF7, 0x04, 0x4A, 0xE0, 0x9A, 0x00, 0x6D, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF7, 0x04, 0x4B, 0xC0, 0x98, 0x41, 0x99, 0xE0, 0x9B, 0x06, 0x94, 0x01, 0x6D, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x07, 0x92, 0x04, 0x48, +0x80, 0x18, 0xCF, 0x56, 0x07, 0x92, 0x04, 0x48, 0x08, 0x49, 0x01, 0x4A, 0x07, 0xD2, 0x07, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x03, 0x73, 0x58, 0x67, 0x07, 0xD3, 0x08, 0xD2, 0xD6, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x10, 0x9A, 0x06, 0x94, 0x78, 0x67, 0xF0, 0x67, 0x00, 0x6D, 0xDE, 0x6E, -0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, 0x08, 0x92, +0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x08, 0x92, 0x06, 0x94, 0xF0, 0x67, 0x01, 0x6D, 0xDE, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x0D, 0x97, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF0, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0x83, 0xF0, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x20, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x18, 0x4A, -0x40, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x49, 0xF4, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x24, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x0C, 0x4A, +0x40, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x69, 0xF4, 0x08, 0x48, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, -0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x04, 0x6B, 0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, -0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, +0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x90, 0x67, 0xF1, 0x67, 0x03, 0x6A, 0x00, 0x6D, -0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x5C, 0x9A, +0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x50, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x00, 0x6B, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, 0xEF, 0x6E, -0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF0, 0x18, 0x4A, 0x40, 0x9A, +0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF0, 0x0C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x04, 0x6B, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x04, 0x6B, 0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, -0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF0, 0x40, 0x9A, 0x90, 0x67, +0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF0, 0x54, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x90, 0x67, 0xF1, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x18, 0x4B, 0x60, 0x9B, 0x90, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF0, 0x0C, 0x4B, 0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x78, 0x56, 0x90, 0x67, 0x06, 0x6A, +0x80, 0x18, 0xCF, 0x56, 0x90, 0x67, 0x06, 0x6A, 0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x03, 0x6B, 0x90, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x03, 0x6B, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x44, 0x9A, 0x90, 0x67, 0xF1, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF0, 0x58, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, +0xCF, 0x56, 0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x18, 0x4B, 0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, +0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, +0x0C, 0x4B, 0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0x78, 0x56, 0x90, 0x67, 0x06, 0x6A, 0x01, 0x6D, +0xCF, 0x56, 0x90, 0x67, 0x06, 0x6A, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, -0x48, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, -0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, +0x5C, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, +0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6B, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, -0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x18, 0x4A, +0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x0C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, -0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x07, 0x6B, 0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, -0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, +0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x90, 0x67, 0xF1, 0x67, 0x03, 0x6A, 0x00, 0x6D, -0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x4C, 0x9A, +0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x00, 0x6B, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, 0xEF, 0x6E, -0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF0, 0x18, 0x4A, 0x40, 0x9A, +0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF0, 0x0C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x07, 0x6B, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x07, 0x6B, 0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, -0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF0, 0x50, 0x9A, 0x90, 0x67, +0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF0, 0x44, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x90, 0x67, 0xF1, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x00, 0x6B, 0xA3, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, 0x19, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x78, 0x56, 0x90, 0x67, 0xF1, 0x67, +0x80, 0x18, 0xCF, 0x56, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, 0x19, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x09, 0x97, 0x08, 0x91, +0x80, 0x18, 0xCF, 0x56, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x06, 0xD4, 0x07, 0xD5, 0x01, 0x68, 0x00, 0x69, 0x85, 0xF5, -0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0xA5, 0x19, +0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0xAF, 0x19, 0x55, 0x72, 0x11, 0x61, 0x07, 0x92, 0x03, 0x2A, 0x00, 0x68, 0x50, 0x67, 0x17, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF6, 0xA0, 0x9A, 0x03, 0xF3, -0x08, 0x6C, 0xFF, 0x68, 0x80, 0x18, 0xA5, 0x19, +0x20, 0x6A, 0xE2, 0xF6, 0xA4, 0x9A, 0x03, 0xF3, +0x08, 0x6C, 0xFF, 0x68, 0x80, 0x18, 0xAF, 0x19, 0x4C, 0xE8, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x64, 0x6C, 0x01, 0x49, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0x01, 0x6A, 0xA1, 0xF3, 0x18, 0x59, 0x02, 0x61, 0x01, 0x68, 0x01, 0x10, 0xD7, 0x2A, -0x06, 0x95, 0x30, 0xF0, 0x20, 0x69, 0x49, 0xF4, +0x06, 0x95, 0x30, 0xF0, 0x20, 0x69, 0x69, 0xF4, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6A, 0x8F, 0x6E, 0x08, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0x95, 0xC3, 0xF0, 0xF0, 0x9A, -0x91, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x78, 0x56, +0xCF, 0x56, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0x95, 0xC3, 0xF0, 0xE4, 0x9A, +0x91, 0x67, 0x00, 0x6E, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, 0x06, 0x92, 0x01, 0x6D, 0x08, 0x6B, 0x44, 0x36, 0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x0A, 0x28, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0x23, 0xF3, 0x00, 0x6C, 0xE3, 0xF0, 0xB4, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0xE3, 0xF0, 0xA8, 0x9B, 0x02, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x99, 0xE3, 0xF0, 0xB4, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0xE3, 0xF0, 0xA8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, @@ -5981,13 +6009,13 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x6A, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x05, 0xD5, 0x04, 0xD4, 0x05, 0x92, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x00, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x04, 0x4B, 0xE0, 0x9B, 0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x69, -0x49, 0xF4, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x05, 0x56, 0x04, 0x93, 0x91, 0x67, +0x69, 0xF4, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x5C, 0x56, 0x04, 0x93, 0x91, 0x67, 0x01, 0x6D, 0x40, 0xDB, 0x05, 0x92, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF7, 0x00, 0x4B, 0xE0, 0x9B, -0xC0, 0x9A, 0x01, 0x48, 0x80, 0x18, 0x05, 0x56, +0x20, 0x6B, 0x22, 0xF7, 0x04, 0x4B, 0xE0, 0x9B, +0xC0, 0x9A, 0x01, 0x48, 0x80, 0x18, 0x5C, 0x56, 0x04, 0x93, 0x41, 0xDB, 0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x08, 0x4B, 0x03, 0x70, 0x04, 0x4A, 0x05, 0xD2, 0x04, 0xD3, 0xD8, 0x61, 0x09, 0x97, @@ -5997,58 +6025,58 @@ u8 array_mp_8822c_fw_ap[] = { 0x2C, 0xE8, 0xC0, 0xF3, 0x44, 0x9A, 0x08, 0x6B, 0x04, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0xE0, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x49, 0xF4, 0x08, 0x4C, 0xB0, 0x67, -0x58, 0x6E, 0x80, 0x18, 0x05, 0x56, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, 0x4C, 0xEB, +0x20, 0x6A, 0x22, 0xF7, 0xE4, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x69, 0xF4, 0x08, 0x4C, 0xB0, 0x67, +0x58, 0x6E, 0x80, 0x18, 0x5C, 0x56, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x6C, 0x9B, 0x4C, 0xEB, 0x62, 0x33, 0x7A, 0x33, 0x2C, 0xEB, 0x0B, 0x23, 0x3F, 0x73, 0x09, 0x60, 0x07, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x62, 0x32, 0x2C, 0xEA, 0x03, 0x22, 0x3F, 0x72, 0x00, 0x6A, 0x56, 0x61, 0x30, 0xF0, -0x20, 0x69, 0x49, 0xF4, 0x08, 0x49, 0x00, 0x6A, +0x20, 0x69, 0x69, 0xF4, 0x08, 0x49, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x01, 0x6A, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, -0x21, 0x6A, 0x30, 0xF3, 0x5C, 0xA2, 0x01, 0x22, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, +0x21, 0x6A, 0x70, 0xF3, 0x44, 0xA2, 0x01, 0x22, 0x20, 0x6A, 0x91, 0x67, 0x30, 0xF0, 0x20, 0x69, -0x49, 0xF4, 0x08, 0x49, 0xB0, 0x67, 0x33, 0x6E, -0x7F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x69, 0xF4, 0x08, 0x49, 0xB0, 0x67, 0x33, 0x6E, +0x7F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x20, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x07, 0xF7, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, -0xF8, 0x9A, 0x20, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0x08, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, +0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, +0xEC, 0x9A, 0x20, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0x08, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x04, 0x4A, 0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, -0x80, 0x18, 0x05, 0x56, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF7, 0x00, 0x4B, 0xE0, 0x9B, 0x91, 0x67, -0xB0, 0x67, 0x58, 0x6E, 0x80, 0x18, 0x05, 0x56, +0x80, 0x18, 0x5C, 0x56, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF7, 0x04, 0x4B, 0xE0, 0x9B, 0x91, 0x67, +0xB0, 0x67, 0x58, 0x6E, 0x80, 0x18, 0x5C, 0x56, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, -0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, +0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, 0x01, 0x74, 0xAC, 0xE8, 0x80, 0xF0, 0x0E, 0x60, 0x07, 0x24, 0x02, 0x74, 0xA0, 0xF0, 0x00, 0x60, 0x03, 0x74, 0xA0, 0xF0, 0x01, 0x60, 0xA5, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x2A, 0xF7, 0x74, 0x9A, 0x30, 0xF0, 0x21, 0x6D, -0x30, 0xF0, 0x21, 0x6C, 0x2A, 0xF7, 0x78, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x2A, 0xF7, 0x7C, 0x9A, 0x30, 0xF0, 0x21, 0x6D, +0x30, 0xF0, 0x21, 0x6C, 0x4A, 0xF7, 0x60, 0xDA, 0x30, 0xF0, 0x21, 0x6F, 0x30, 0xF0, 0x21, 0x6B, -0xD0, 0xF6, 0x14, 0x4D, 0xD0, 0xF6, 0x0C, 0x4C, -0xD0, 0xF6, 0x08, 0x4B, 0xB0, 0xF4, 0x16, 0x4F, -0x00, 0x69, 0x40, 0x9D, 0x95, 0xF3, 0x04, 0x41, +0xF0, 0xF6, 0x1C, 0x4D, 0xF0, 0xF6, 0x14, 0x4C, +0xF0, 0xF6, 0x10, 0x4B, 0xD0, 0xF4, 0x1E, 0x4F, +0x00, 0x69, 0x40, 0x9D, 0x95, 0xF3, 0x08, 0x41, 0x04, 0x30, 0x42, 0xDD, 0x40, 0xAC, 0x05, 0xD7, 0x42, 0xCC, 0x40, 0xA3, 0x42, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x01, 0xE2, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x01, 0xE2, 0x00, 0x6A, 0x04, 0x48, 0x04, 0xD2, 0x40, 0xA0, 0x22, 0x6E, 0x07, 0xD3, 0x44, 0xC0, 0x04, 0x92, 0xD8, 0xEA, 0x44, 0x6A, 0x12, 0xEE, 0x58, 0xE9, 0x12, 0xEA, 0x49, 0xE6, 0x30, 0xF0, 0x20, 0x6E, -0x85, 0xF7, 0x08, 0x4E, 0x1A, 0x65, 0x49, 0xE6, -0x0A, 0xF5, 0x0C, 0x4A, 0x06, 0xD2, 0x58, 0x67, -0x59, 0xE6, 0x06, 0x92, 0x0A, 0xF6, 0x1C, 0x4E, +0xA5, 0xF7, 0x08, 0x4E, 0x1A, 0x65, 0x49, 0xE6, +0x0A, 0xF5, 0x14, 0x4A, 0x06, 0xD2, 0x58, 0x67, +0x59, 0xE6, 0x06, 0x92, 0x2A, 0xF6, 0x04, 0x4E, 0x60, 0xAA, 0x80, 0xF0, 0x68, 0xCA, 0x60, 0xAE, 0x02, 0x4A, 0x80, 0xF0, 0x68, 0xCE, 0x05, 0x93, 0x02, 0x4E, 0x6A, 0xEA, 0xF5, 0x61, 0x04, 0x92, @@ -6056,42 +6084,42 @@ u8 array_mp_8822c_fw_ap[] = { 0x05, 0x92, 0x22, 0x4A, 0x05, 0xD2, 0x04, 0x92, 0x02, 0x72, 0xD1, 0x61, 0x01, 0x49, 0x02, 0x71, 0x04, 0x4D, 0x02, 0x4C, 0x01, 0x4B, 0x44, 0x4F, -0xB8, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0xD0, 0xF6, -0x08, 0x4B, 0x44, 0x43, 0xA7, 0x43, 0x16, 0x4D, +0xB8, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0xF0, 0xF6, +0x10, 0x4B, 0x44, 0x43, 0xA7, 0x43, 0x16, 0x4D, 0xC2, 0x67, 0x00, 0x6C, 0x80, 0xC3, 0x01, 0x4B, 0x00, 0x6C, 0xCA, 0xEB, 0x80, 0xCA, 0xFF, 0xF7, 0x88, 0xC2, 0x20, 0xF0, 0x85, 0xC2, 0xFF, 0xF7, 0x89, 0xC2, 0x20, 0xF0, 0x86, 0xC2, 0x80, 0xC5, 0x81, 0xC5, 0x82, 0xC5, 0x02, 0x4A, 0x03, 0x4D, -0xEC, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x2A, 0xF7, 0x7C, 0x9A, 0x2A, 0xF7, -0x74, 0xDA, 0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xB0, 0x67, 0x49, 0xF4, 0x08, 0x4C, 0x58, 0x6E, -0x80, 0x18, 0x05, 0x56, 0xC2, 0xF5, 0x12, 0x48, -0x30, 0xF0, 0x20, 0x6B, 0x08, 0x30, 0x85, 0xF7, +0xEC, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x4A, 0xF7, 0x64, 0x9A, 0x2A, 0xF7, +0x7C, 0xDA, 0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xB0, 0x67, 0x69, 0xF4, 0x08, 0x4C, 0x58, 0x6E, +0x80, 0x18, 0x5C, 0x56, 0xC2, 0xF5, 0x14, 0x48, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0x30, 0xA5, 0xF7, 0x08, 0x4B, 0x6D, 0xE0, 0x41, 0xDB, 0x09, 0x10, 0x00, 0x6C, 0xB0, 0x67, 0xC4, 0x67, 0x03, 0x10, 0x01, 0x6C, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, -0xD3, 0x0B, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0xDD, 0x0B, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, 0x0E, 0x22, 0x08, 0x6A, 0x04, 0x31, 0x4D, 0xE9, 0x01, 0x6B, 0x44, 0x40, -0x64, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, +0x64, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF4, 0x08, 0x4A, 0x06, 0xD2, 0x6D, 0xE9, 0x06, 0x6A, 0x0D, 0x10, 0x08, 0x6A, 0x04, 0x31, 0x4D, 0xE9, 0x01, 0x6B, 0x44, 0x40, 0x64, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x49, 0xF4, 0x08, 0x4A, 0x06, 0xD2, +0x20, 0x6A, 0x69, 0xF4, 0x08, 0x4A, 0x06, 0xD2, 0x6D, 0xE9, 0x04, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0x94, 0xC3, 0xF0, 0xF0, 0x9A, -0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x78, 0x56, +0x20, 0x6A, 0x06, 0x94, 0xC3, 0xF0, 0xE4, 0x9A, +0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0xCF, 0x56, 0x06, 0x94, 0x08, 0xF0, 0x00, 0x6F, 0x01, 0x6B, 0x8F, 0x6E, 0xB0, 0x67, 0x04, 0xD3, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x01, 0x6C, -0x80, 0x18, 0xAD, 0x0B, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x15, 0x0B, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0x18, 0xB7, 0x0B, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x1F, 0x0B, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, @@ -6099,134 +6127,134 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xEF, 0x6E, 0x10, 0x6F, -0x00, 0x6A, 0x49, 0xF4, 0x08, 0x4C, 0xB0, 0x67, -0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, 0x01, 0x6D, -0x90, 0x67, 0x80, 0x18, 0x15, 0x0B, 0x00, 0x6C, -0x80, 0x18, 0xAD, 0x0B, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x36, 0x0F, 0x22, 0x67, 0x04, 0x2A, -0x01, 0x6C, 0xB0, 0x67, 0x80, 0x18, 0xD9, 0x0F, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x41, 0xE0, 0xCA, 0xF3, 0x25, 0xC0, 0x51, 0x67, +0x00, 0x6A, 0x69, 0xF4, 0x08, 0x4C, 0xB0, 0x67, +0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6D, +0x90, 0x67, 0x80, 0x18, 0x1F, 0x0B, 0x00, 0x6C, +0x80, 0x18, 0xB7, 0x0B, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x40, 0x0F, 0x22, 0x67, 0x04, 0x2A, +0x01, 0x6C, 0xB0, 0x67, 0x80, 0x18, 0xE3, 0x0F, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x41, 0xE0, 0xCA, 0xF3, 0x2D, 0xC0, 0x51, 0x67, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xED, 0x4C, 0xE8, 0x30, 0xF0, 0x21, 0x6A, -0x30, 0xF3, 0x5D, 0xA2, 0x06, 0x6B, 0x08, 0xD5, +0x70, 0xF3, 0x45, 0xA2, 0x06, 0x6B, 0x08, 0xD5, 0x4E, 0xEB, 0x01, 0x5B, 0x98, 0x67, 0x07, 0xD4, 0x16, 0x2D, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, 0x04, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x49, 0xF4, 0x08, 0x4A, 0x08, 0x69, 0x06, 0xD2, +0x69, 0xF4, 0x08, 0x4A, 0x08, 0x69, 0x06, 0xD2, 0x6D, 0xE9, 0x04, 0x6A, 0x19, 0x10, 0x08, 0x93, 0x01, 0x73, 0x22, 0x61, 0x07, 0x94, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, 0x07, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF4, 0x08, 0x4A, 0x08, 0x69, 0x06, 0xD2, 0x6D, 0xE9, 0x06, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, -0xC3, 0xF0, 0xF0, 0x9A, 0xB0, 0x67, 0x00, 0x6E, -0x80, 0x18, 0x78, 0x56, 0x01, 0x6A, 0x25, 0x10, +0xC3, 0xF0, 0xE4, 0x9A, 0xB0, 0x67, 0x00, 0x6E, +0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x25, 0x10, 0x08, 0x93, 0x00, 0x69, 0x02, 0x73, 0x2F, 0x61, 0x07, 0x94, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, 0x0A, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x49, 0xF4, 0x08, 0x4A, 0x06, 0xD2, 0x07, 0x6A, +0x69, 0xF4, 0x08, 0x4A, 0x06, 0xD2, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, -0xC3, 0xF0, 0xF0, 0x9A, 0x08, 0x69, 0xB0, 0x67, -0x00, 0x6E, 0x6D, 0xE9, 0x80, 0x18, 0x78, 0x56, +0xC3, 0xF0, 0xE4, 0x9A, 0x08, 0x69, 0xB0, 0x67, +0x00, 0x6E, 0x6D, 0xE9, 0x80, 0x18, 0xCF, 0x56, 0x00, 0x6A, 0x06, 0x94, 0xB0, 0x67, 0x8F, 0x6E, 0x08, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x01, 0x6C, -0x80, 0x18, 0xAD, 0x0B, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0x18, 0xB7, 0x0B, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, 0x01, 0x6D, 0xC1, 0x41, 0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x01, 0x6D, 0x90, 0x67, 0x80, 0x18, 0x36, 0x0F, -0x00, 0x6C, 0x06, 0xD2, 0x80, 0x18, 0xAD, 0x0B, +0x01, 0x6D, 0x90, 0x67, 0x80, 0x18, 0x40, 0x0F, +0x00, 0x6C, 0x06, 0xD2, 0x80, 0x18, 0xB7, 0x0B, 0x04, 0x32, 0x09, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x09, 0x93, 0x01, 0x6D, 0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x94, 0x1C, 0x2C, 0x7D, 0x67, 0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, -0x30, 0xF0, 0x20, 0x69, 0x95, 0xF3, 0x44, 0x40, -0x06, 0x94, 0x44, 0x32, 0x85, 0xF7, 0x08, 0x49, +0x30, 0xF0, 0x20, 0x69, 0x95, 0xF3, 0x48, 0x40, +0x06, 0x94, 0x44, 0x32, 0xA5, 0xF7, 0x08, 0x49, 0x29, 0xE2, 0x64, 0xC2, 0x48, 0x2C, 0x07, 0x92, 0x09, 0x22, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x4C, -0xAB, 0xED, 0x80, 0x18, 0xA5, 0x19, 0xC2, 0xF5, -0x1E, 0x48, 0x35, 0x10, 0x02, 0x6C, 0x38, 0x10, +0xAB, 0xED, 0x80, 0x18, 0xAF, 0x19, 0xE2, 0xF5, +0x00, 0x48, 0x35, 0x10, 0x02, 0x6C, 0x38, 0x10, 0x08, 0x93, 0x02, 0x73, 0x38, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0xE0, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x85, 0xF7, -0x08, 0x49, 0x49, 0xF4, 0x08, 0x4C, 0xB0, 0x67, -0x00, 0x6E, 0x80, 0x18, 0x05, 0x56, 0xAA, 0xF3, -0x9A, 0xA1, 0xFF, 0x6B, 0x56, 0x32, 0x6C, 0xEA, -0x80, 0x34, 0xA5, 0xF3, 0x60, 0x40, 0x8D, 0xEA, +0x20, 0x6A, 0x22, 0xF7, 0xE4, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0xA5, 0xF7, +0x08, 0x49, 0x69, 0xF4, 0x08, 0x4C, 0xB0, 0x67, +0x00, 0x6E, 0x80, 0x18, 0x5C, 0x56, 0xCA, 0xF3, +0x82, 0xA1, 0xFF, 0x6B, 0x56, 0x32, 0x6C, 0xEA, +0x80, 0x34, 0xA5, 0xF3, 0x64, 0x40, 0x8D, 0xEA, 0x64, 0x33, 0x09, 0x94, 0x2D, 0xE3, 0x42, 0xCB, 0x7D, 0x67, 0x29, 0xE4, 0x87, 0x43, 0x11, 0x4C, -0x60, 0xA4, 0x06, 0x94, 0x2A, 0xF7, 0x6D, 0xC2, +0x60, 0xA4, 0x06, 0x94, 0x2A, 0xF7, 0x75, 0xC2, 0x12, 0x2C, 0x07, 0x92, 0x0C, 0x22, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x4C, 0xAB, 0xED, 0x80, 0x18, -0xA5, 0x19, 0xE2, 0xF5, 0x00, 0x48, 0x08, 0x30, +0xAF, 0x19, 0xE2, 0xF5, 0x02, 0x48, 0x08, 0x30, 0x25, 0xE0, 0x41, 0xD9, 0x04, 0x10, 0x03, 0x6C, -0xB0, 0x67, 0x80, 0x18, 0xD9, 0x0F, 0x06, 0x92, +0xB0, 0x67, 0x80, 0x18, 0xE3, 0x0F, 0x06, 0x92, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x75, 0xA2, +0xA5, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x7D, 0xA2, 0x0C, 0xD5, 0x00, 0x69, 0x0D, 0xD3, 0xE1, 0xF2, -0x69, 0x40, 0x6C, 0x33, 0x69, 0xE2, 0x04, 0x4A, -0x0A, 0xD2, 0x30, 0xF0, 0x21, 0x6A, 0x10, 0xF7, -0x04, 0x4A, 0x08, 0xD2, 0x09, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, 0xE0, 0x9A, +0x6A, 0x40, 0x6C, 0x33, 0x69, 0xE2, 0x04, 0x4A, +0x0A, 0xD2, 0x30, 0xF0, 0x21, 0x6A, 0x30, 0xF7, +0x0C, 0x4A, 0x08, 0xD2, 0x09, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0x04, 0x4A, 0xE0, 0x9A, 0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEB, -0x49, 0xF4, 0x08, 0x48, 0x90, 0x67, 0xA3, 0x67, -0xDF, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0x05, 0x56, +0x69, 0xF4, 0x08, 0x48, 0x90, 0x67, 0xA3, 0x67, +0xDF, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0x5C, 0x56, 0x10, 0x6B, 0x4D, 0xEB, 0x04, 0xD3, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF7, 0x00, 0x4B, 0xE0, 0x9B, +0x20, 0x6B, 0x22, 0xF7, 0x04, 0x4B, 0xE0, 0x9B, 0x06, 0x95, 0x90, 0x67, 0xDF, 0x6E, 0x80, 0x18, -0x78, 0x56, 0x0A, 0x93, 0x06, 0x95, 0x90, 0x67, +0xCF, 0x56, 0x0A, 0x93, 0x06, 0x95, 0x90, 0x67, 0x40, 0x9B, 0x58, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0x00, 0x4A, 0xE0, 0x9A, 0x80, 0x18, 0x78, 0x56, +0x04, 0x4A, 0xE0, 0x9A, 0x80, 0x18, 0xCF, 0x56, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x24, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x0D, 0x93, 0x06, 0x73, 0x1C, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0xA0, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC0, 0x9B, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x08, 0x93, 0x01, 0x6D, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0xC2, 0x9B, 0x21, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0xA0, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x22, 0xF6, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0x22, 0xF6, 0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x0C, 0x92, 0x06, 0x22, 0x00, 0x6B, 0x01, 0x72, 0x06, 0xD3, 0xC0, 0xF0, 0x05, 0x61, 0x62, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x22, 0xF7, 0xB4, 0x9B, 0x44, 0x68, 0x23, 0xF3, +0x22, 0xF7, 0xB8, 0x9B, 0x44, 0x68, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, 0x12, 0xE8, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x01, 0xE2, 0x00, 0x6A, -0x0A, 0xF5, 0x0C, 0x48, 0x06, 0xD2, 0xC0, 0xA8, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x48, 0x9A, +0xA5, 0xF7, 0x08, 0x4A, 0x01, 0xE2, 0x00, 0x6A, +0x0A, 0xF5, 0x14, 0x48, 0x06, 0xD2, 0xC0, 0xA8, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x4C, 0x9A, 0x06, 0x93, 0xC0, 0x36, 0x4D, 0xEE, 0x68, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, @@ -6234,24 +6262,24 @@ u8 array_mp_8822c_fw_ap[] = { 0x02, 0x48, 0x01, 0x4A, 0x11, 0x72, 0x06, 0xD2, 0xE6, 0x61, 0x44, 0x68, 0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, 0x12, 0xE8, 0x58, 0xEB, 0x12, 0xEA, -0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x01, 0xE2, 0x00, 0x6A, 0x0A, 0xF6, -0x1C, 0x48, 0x06, 0xD2, 0xC0, 0xA8, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF7, 0x48, 0x9A, 0xC0, 0x36, +0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x01, 0xE2, 0x00, 0x6A, 0x2A, 0xF6, +0x04, 0x48, 0x06, 0xD2, 0xC0, 0xA8, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF7, 0x4C, 0x9A, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0x06, 0x92, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x48, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x6D, 0xEE, 0x02, 0x48, 0x40, 0xEA, 0x06, 0x93, 0x01, 0x4B, 0x11, 0x73, 0x06, 0xD3, 0xE7, 0x61, 0xE2, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x22, 0xF7, 0xB4, 0x9B, +0xC0, 0xF3, 0x44, 0x9A, 0x22, 0xF7, 0xB8, 0x9B, 0x44, 0x68, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, 0x12, 0xE8, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x01, 0xE2, 0x00, 0x6A, 0x2A, 0xF5, 0x0E, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x01, 0xE2, 0x00, 0x6A, 0x2A, 0xF5, 0x16, 0x48, 0x06, 0xD2, 0xC0, 0xA8, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF7, 0x4C, 0x9A, 0x06, 0x93, 0xC0, 0x36, +0xE2, 0xF7, 0x50, 0x9A, 0x06, 0x93, 0xC0, 0x36, 0x4D, 0xEE, 0x68, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x02, 0x4E, @@ -6259,10 +6287,10 @@ u8 array_mp_8822c_fw_ap[] = { 0x11, 0x72, 0x06, 0xD2, 0xE6, 0x61, 0x44, 0x68, 0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, 0x12, 0xE8, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x01, 0xE2, -0x00, 0x6A, 0x2A, 0xF6, 0x1E, 0x48, 0x06, 0xD2, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x01, 0xE2, +0x00, 0x6A, 0x4A, 0xF6, 0x06, 0x48, 0x06, 0xD2, 0xC0, 0xA8, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, -0x4C, 0x9A, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, +0x50, 0x9A, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0x06, 0x92, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x48, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x6D, 0xEE, 0x02, 0x48, 0x40, 0xEA, @@ -6270,19 +6298,19 @@ u8 array_mp_8822c_fw_ap[] = { 0xE7, 0x61, 0x80, 0x10, 0x0B, 0xD1, 0x06, 0x93, 0xFF, 0x6A, 0x6C, 0xEA, 0x11, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x22, 0xF7, 0xB4, 0x9B, 0x23, 0xF3, +0x44, 0x9A, 0x22, 0xF7, 0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF7, 0x48, 0x9A, 0x10, 0x10, +0x20, 0x6A, 0xE2, 0xF7, 0x4C, 0x9A, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x22, 0xF7, 0xB4, 0x9B, +0xC0, 0xF3, 0x44, 0x9A, 0x22, 0xF7, 0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x50, 0x9A, 0x07, 0xD2, 0x06, 0x92, 0x22, 0x68, 0x0B, 0x93, 0x18, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xE8, 0x58, 0xEB, 0x09, 0x93, 0x12, 0xEA, 0x41, 0xE0, 0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x01, 0xE2, 0x0A, 0xF5, 0x0C, 0x48, 0xC0, 0xA8, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x01, 0xE2, 0x0A, 0xF5, 0x14, 0x48, 0xC0, 0xA8, 0x07, 0x92, 0x01, 0x6D, 0xC0, 0x36, 0x4D, 0xEE, 0x28, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, 0x18, 0x6C, @@ -6292,111 +6320,111 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x69, 0x12, 0xE8, 0x58, 0xEB, 0x09, 0x93, 0x12, 0xEA, 0x41, 0xE0, 0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x01, 0xE2, 0x0A, 0xF6, -0x1C, 0x48, 0xC0, 0xA8, 0x07, 0x92, 0x28, 0x33, +0xA5, 0xF7, 0x08, 0x4A, 0x01, 0xE2, 0x2A, 0xF6, +0x04, 0x48, 0xC0, 0xA8, 0x07, 0x92, 0x28, 0x33, 0xC0, 0x36, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x01, 0x49, 0x40, 0xEA, 0x11, 0x71, 0x02, 0x48, 0xED, 0x61, 0x06, 0x93, 0x01, 0x4B, 0x02, 0x73, 0x06, 0xD3, 0x82, 0x61, 0x0B, 0x91, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x22, 0xF7, 0xC8, 0x9B, +0x30, 0xF0, 0x20, 0x68, 0x22, 0xF7, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF7, -0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, +0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x6C, 0xEA, 0x06, 0x93, 0x07, 0xD2, 0x01, 0x6D, 0x64, 0x36, 0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0xA0, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, -0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x03, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x95, -0xC3, 0xF0, 0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x49, 0xF4, 0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, -0x78, 0x56, 0x06, 0x92, 0x01, 0x4A, 0x02, 0x72, +0xC3, 0xF0, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x69, 0xF4, 0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, +0xCF, 0x56, 0x06, 0x92, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, 0xA9, 0x61, 0x0A, 0x93, 0x08, 0x92, 0x01, 0x49, 0x04, 0x4B, 0x04, 0x4A, 0x02, 0x71, 0x0A, 0xD3, 0x08, 0xD2, 0xBF, 0xF5, 0x1B, 0x61, 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, 0x00, 0x6B, -0x8C, 0xEA, 0x6A, 0xF7, 0x78, 0xC0, 0x2A, 0x2A, -0xAA, 0xF3, 0x56, 0xA0, 0x27, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0xE0, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x49, 0xF4, 0x08, 0x4C, 0x00, 0x6D, -0x18, 0x6E, 0x80, 0x18, 0x05, 0x56, 0x2A, 0xF7, -0x74, 0x98, 0x2A, 0xF7, 0x5C, 0xD8, 0x00, 0x69, -0x4E, 0xEB, 0x05, 0x23, 0x2A, 0xF7, 0x78, 0x98, +0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, 0x00, 0x6B, +0x8C, 0xEA, 0x8A, 0xF7, 0x60, 0xC0, 0x2A, 0x2A, +0xAA, 0xF3, 0x5E, 0xA0, 0x27, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0xE4, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x69, 0xF4, 0x08, 0x4C, 0x00, 0x6D, +0x18, 0x6E, 0x80, 0x18, 0x5C, 0x56, 0x2A, 0xF7, +0x7C, 0x98, 0x4A, 0xF7, 0x44, 0xD8, 0x00, 0x69, +0x4E, 0xEB, 0x05, 0x23, 0x4A, 0xF7, 0x60, 0x98, 0x6E, 0xEA, 0x10, 0x2A, 0x01, 0x69, 0x02, 0x6D, -0x91, 0x67, 0x80, 0x18, 0x05, 0x11, 0x91, 0x67, -0x80, 0x18, 0xB3, 0x07, 0x01, 0x6C, 0x80, 0x18, -0xE5, 0x07, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, -0x10, 0xF7, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x68, +0x91, 0x67, 0x80, 0x18, 0x0F, 0x11, 0x91, 0x67, +0x80, 0x18, 0xE2, 0x07, 0x01, 0x6C, 0x80, 0x18, +0x14, 0x08, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, +0x30, 0xF7, 0x68, 0xC2, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x49, 0xE2, 0xF5, 0x10, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x6A, 0xF7, -0xD8, 0xA1, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, +0xA5, 0xF7, 0x08, 0x49, 0xE2, 0xF5, 0x10, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x8A, 0xF7, +0xC0, 0xA1, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x0A, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x10, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0x6A, 0xF7, 0xD8, 0xA1, +0xC0, 0xF3, 0x44, 0x98, 0x8A, 0xF7, 0xC0, 0xA1, 0xA0, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, -0x6A, 0xF7, 0x58, 0xA1, 0x07, 0x97, 0x06, 0x91, +0x8A, 0xF7, 0x40, 0xA1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0xA0, 0x9A, -0x63, 0xF6, 0x1C, 0x6C, 0x80, 0x18, 0xA5, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0xA4, 0x9A, +0x63, 0xF6, 0x1C, 0x6C, 0x80, 0x18, 0xAF, 0x19, 0x06, 0x22, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, -0xF0, 0xF6, 0x64, 0xC2, 0x04, 0x10, 0x30, 0xF0, -0x21, 0x6B, 0xF0, 0xF6, 0x44, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, 0xE0, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0x49, 0xF4, 0x08, 0x48, +0x10, 0xF7, 0x6C, 0xC2, 0x04, 0x10, 0x30, 0xF0, +0x21, 0x6B, 0x10, 0xF7, 0x4C, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0x04, 0x4A, 0xE0, 0x9A, +0x30, 0xF0, 0x20, 0x68, 0x69, 0xF4, 0x08, 0x48, 0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, -0x05, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x00, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x00, 0x6D, -0x18, 0x6E, 0x22, 0x67, 0x80, 0x18, 0x05, 0x56, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x2A, 0xF7, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF5, 0x50, 0x9A, 0xCA, 0xF3, 0x23, 0xC3, +0x5C, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, +0x04, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x00, 0x6D, +0x18, 0x6E, 0x22, 0x67, 0x80, 0x18, 0x5C, 0x56, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x4A, 0xF7, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF5, 0x50, 0x9A, 0xCA, 0xF3, 0x2B, 0xC3, 0x2C, 0xEA, 0x42, 0x32, 0x42, 0x32, 0xCA, 0xF3, -0x42, 0xC3, 0x06, 0xF0, 0x00, 0x6A, 0x2C, 0xEA, -0x42, 0x32, 0x52, 0x32, 0xCA, 0xF3, 0x44, 0xC3, +0x4A, 0xC3, 0x06, 0xF0, 0x00, 0x6A, 0x2C, 0xEA, +0x42, 0x32, 0x52, 0x32, 0xCA, 0xF3, 0x4C, 0xC3, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x80, 0x18, -0x70, 0x12, 0x00, 0x6C, 0x80, 0x18, 0xE5, 0x07, +0x7A, 0x12, 0x00, 0x6C, 0x80, 0x18, 0x14, 0x08, 0x03, 0x28, 0x00, 0x6C, 0xA4, 0x67, 0x07, 0x10, 0x01, 0x70, 0x03, 0x61, 0x00, 0x6C, 0x01, 0x6D, 0x02, 0x10, 0x00, 0x6C, 0x02, 0x6D, 0x80, 0x18, -0x05, 0x11, 0x01, 0x6C, 0x80, 0x18, 0xE5, 0x07, +0x0F, 0x11, 0x01, 0x6C, 0x80, 0x18, 0x14, 0x08, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xE9, 0xAC, 0xEA, 0x01, 0x72, 0x43, 0x61, 0x44, 0x41, 0x01, 0x6B, 0x64, 0xEA, 0x00, 0xF2, 0x08, 0x6A, 0x4D, 0xEB, 0x04, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x68, -0x49, 0xF4, 0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, -0x00, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0x78, 0x56, +0xC3, 0xF0, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0x69, 0xF4, 0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, +0x00, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0xCF, 0x56, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6F, 0xB1, 0x67, 0x04, 0xD4, 0x8F, 0x6E, 0x90, 0x67, 0x80, 0x18, -0x78, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x06, 0x96, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, @@ -6404,10 +6432,10 @@ u8 array_mp_8822c_fw_ap[] = { 0x01, 0x6D, 0xAB, 0xED, 0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x36, 0x0F, +0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x40, 0x0F, 0xF0, 0x10, 0x02, 0x72, 0x01, 0x6A, 0xE0, 0xF0, -0x0C, 0x61, 0x30, 0xF0, 0x21, 0x6A, 0x50, 0xF3, -0x42, 0xA2, 0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, +0x0C, 0x61, 0x30, 0xF0, 0x21, 0x6A, 0x70, 0xF3, +0x4A, 0xA2, 0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, 0x12, 0x72, 0x01, 0x68, 0x09, 0x60, 0x1B, 0x72, 0x02, 0x68, 0x06, 0x60, 0x24, 0x68, 0x4E, 0xE8, 0x01, 0x58, 0x18, 0x67, 0x04, 0x6A, 0x03, 0xE2, @@ -6415,10 +6443,10 @@ u8 array_mp_8822c_fw_ap[] = { 0x30, 0xF0, 0x20, 0x6C, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x9C, 0x01, 0x6D, 0xC3, 0x67, 0x08, 0xD3, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x06, 0x93, 0x01, 0x6D, 0xAB, 0xED, -0xAA, 0xF3, 0xDA, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, +0xCA, 0xF3, 0xC2, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0x44, 0x41, 0x01, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xEA, 0x00, 0xF3, 0x08, 0x6A, 0x4D, 0xEC, 0x80, 0xF3, 0x4C, 0x9B, 0x07, 0xD4, @@ -6430,35 +6458,35 @@ u8 array_mp_8822c_fw_ap[] = { 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF3, 0x4C, 0x9C, 0xC8, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x00, 0x4B, 0xE0, 0x9B, 0x30, 0xF0, 0x20, 0x6A, -0x49, 0xF4, 0x08, 0x4A, 0x82, 0x67, 0xB1, 0x67, -0x00, 0x6E, 0x07, 0xD2, 0x80, 0x18, 0x05, 0x56, -0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x36, 0x0F, +0x04, 0x4B, 0xE0, 0x9B, 0x30, 0xF0, 0x20, 0x6A, +0x69, 0xF4, 0x08, 0x4A, 0x82, 0x67, 0xB1, 0x67, +0x00, 0x6E, 0x07, 0xD2, 0x80, 0x18, 0x5C, 0x56, +0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x40, 0x0F, 0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, 0x00, 0x4A, 0x41, 0xE0, 0x40, 0xA0, -0x06, 0x94, 0xAA, 0xF3, 0x5A, 0xC4, 0x70, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, +0x06, 0x94, 0xCA, 0xF3, 0x42, 0xC4, 0x70, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x04, 0x4A, 0x07, 0x94, 0xE0, 0x9A, 0xB1, 0x67, 0x00, 0x6E, -0x80, 0x18, 0x05, 0x56, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0x18, 0x5C, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0x67, 0x08, 0x96, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xE3, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, -0x06, 0x93, 0x56, 0x34, 0x96, 0x32, 0xAA, 0xF3, -0x5C, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, +0x06, 0x93, 0x56, 0x34, 0x96, 0x32, 0xCA, 0xF3, +0x44, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, 0xFF, 0x6B, 0x0B, 0x60, 0x03, 0x70, 0x03, 0x60, 0x01, 0x48, 0x6C, 0xE8, 0x4F, 0x10, 0x06, 0x94, -0x01, 0x6B, 0x03, 0x68, 0x6A, 0xF7, 0x71, 0xC4, +0x01, 0x6B, 0x03, 0x68, 0x6A, 0xF7, 0x79, 0xC4, 0x49, 0x10, 0x0A, 0x5A, 0x0B, 0x61, 0x04, 0x20, 0xFF, 0x48, 0x6C, 0xE8, 0x01, 0x6B, 0x0B, 0x10, -0x06, 0x94, 0x01, 0x6B, 0x6A, 0xF7, 0x71, 0xC4, +0x06, 0x94, 0x01, 0x6B, 0x6A, 0xF7, 0x79, 0xC4, 0x01, 0x6B, 0x09, 0x10, 0x06, 0x94, 0x00, 0x6B, -0x6A, 0xF7, 0x71, 0xC4, 0x00, 0x6B, 0x03, 0x20, +0x6A, 0xF7, 0x79, 0xC4, 0x00, 0x6B, 0x03, 0x20, 0x04, 0x58, 0x01, 0x61, 0x03, 0x68, 0x30, 0xF0, -0x20, 0x6C, 0x85, 0xF7, 0x08, 0x4C, 0x6A, 0xF7, -0xB1, 0xA4, 0x01, 0x5D, 0xB8, 0x67, 0xAB, 0xED, +0x20, 0x6C, 0xA5, 0xF7, 0x08, 0x4C, 0x6A, 0xF7, +0xB9, 0xA4, 0x01, 0x5D, 0xB8, 0x67, 0xAB, 0xED, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, 0x02, 0xF3, -0x00, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, 0xAA, 0xF3, -0xBA, 0xC4, 0x0F, 0x2B, 0xAA, 0xF3, 0xDA, 0xA4, +0x00, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, 0xCA, 0xF3, +0xA2, 0xC4, 0x0F, 0x2B, 0xCA, 0xF3, 0xC2, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x64, 0x9B, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x00, 0x6A, @@ -6468,119 +6496,119 @@ u8 array_mp_8822c_fw_ap[] = { 0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x01, 0x6B, 0xC8, 0x17, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x21, 0x6A, 0x30, 0xF3, 0x7F, 0xA2, 0xFF, 0x68, +0x21, 0x6A, 0x70, 0xF3, 0x67, 0xA2, 0xFF, 0x68, 0x8C, 0xE8, 0x06, 0x5B, 0x01, 0x6A, 0x7C, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0x33, 0xC2, 0xF2, 0x10, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x90, 0x67, 0x80, 0x18, 0xE1, 0x0C, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0x37, 0x10, 0x62, 0x10, -0x90, 0x67, 0x80, 0x18, 0x8F, 0x0C, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0x7B, 0x10, 0x52, 0x22, +0x90, 0x67, 0x80, 0x18, 0xEB, 0x0C, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0x41, 0x10, 0x62, 0x10, +0x90, 0x67, 0x80, 0x18, 0x99, 0x0C, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0x85, 0x10, 0x52, 0x22, 0x03, 0x6C, 0x98, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x12, 0xEC, 0x71, 0xE4, -0x4A, 0xF7, 0xBE, 0xA4, 0x02, 0x5D, 0x04, 0x60, -0x01, 0x4D, 0x4A, 0xF7, 0xBE, 0xC4, 0xEB, 0x17, +0xA5, 0xF7, 0x08, 0x4B, 0x12, 0xEC, 0x71, 0xE4, +0x6A, 0xF7, 0xA6, 0xA4, 0x02, 0x5D, 0x04, 0x60, +0x01, 0x4D, 0x6A, 0xF7, 0xA6, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x01, 0x6C, 0x39, 0x10, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0x26, 0x0C, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x00, 0x6B, -0x6A, 0xF7, 0x71, 0xC2, 0x90, 0x67, 0x02, 0x6D, -0x80, 0x18, 0xA6, 0x12, 0x2F, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0x34, 0x85, 0xF7, 0x08, 0x4B, -0x6D, 0xE4, 0x6A, 0xF7, 0x8A, 0xA3, 0x0A, 0x5C, -0x25, 0x60, 0x01, 0x4C, 0x6A, 0xF7, 0x8A, 0xC3, +0x01, 0x6D, 0x80, 0x18, 0x30, 0x0C, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x00, 0x6B, +0x6A, 0xF7, 0x79, 0xC2, 0x90, 0x67, 0x02, 0x6D, +0x80, 0x18, 0xB0, 0x12, 0x2F, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0x34, 0xA5, 0xF7, 0x08, 0x4B, +0x6D, 0xE4, 0x6A, 0xF7, 0x92, 0xA3, 0x0A, 0x5C, +0x25, 0x60, 0x01, 0x4C, 0x6A, 0xF7, 0x92, 0xC3, 0xED, 0x17, 0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, -0x26, 0x0C, 0x90, 0x67, 0x02, 0x6D, 0x80, 0x18, -0x7B, 0x10, 0x18, 0x22, 0x03, 0x6C, 0x98, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x12, 0xEC, 0x71, 0xE4, 0x4A, 0xF7, 0xBF, 0xA4, -0x02, 0x5D, 0x04, 0x60, 0x01, 0x4D, 0x4A, 0xF7, -0xBF, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x02, 0x6C, -0xEA, 0xF4, 0x90, 0xC0, 0x06, 0x6C, 0xAA, 0xF3, -0x97, 0xC3, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0xAA, 0xF3, 0x97, 0xA3, +0x30, 0x0C, 0x90, 0x67, 0x02, 0x6D, 0x80, 0x18, +0x85, 0x10, 0x18, 0x22, 0x03, 0x6C, 0x98, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x12, 0xEC, 0x71, 0xE4, 0x6A, 0xF7, 0xA7, 0xA4, +0x02, 0x5D, 0x04, 0x60, 0x01, 0x4D, 0x6A, 0xF7, +0xA7, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x02, 0x6C, +0xEA, 0xF4, 0x98, 0xC0, 0x06, 0x6C, 0xAA, 0xF3, +0x9F, 0xC3, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0xAA, 0xF3, 0x9F, 0xA3, 0x01, 0x4C, 0xF5, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x77, 0xA2, -0x01, 0x4B, 0xAA, 0xF3, 0x77, 0xC2, 0x01, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x7F, 0xA2, +0x01, 0x4B, 0xAA, 0xF3, 0x7F, 0xC2, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xAA, 0xF3, 0x75, 0xA2, 0xAA, 0xF3, 0x58, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xAA, 0xF3, 0x7D, 0xA2, 0xCA, 0xF3, 0x40, 0xA2, 0x08, 0xD3, 0x06, 0x5A, 0x76, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, 0xE2, 0xF2, 0x08, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x00, 0x6C, -0x80, 0x18, 0x48, 0x13, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x77, 0xA2, +0x80, 0x18, 0x52, 0x13, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x7F, 0xA2, 0x06, 0x73, 0xF5, 0x61, 0x2A, 0x10, 0x00, 0x6C, -0x80, 0x18, 0xD1, 0x0D, 0x00, 0x6C, 0xA4, 0x67, -0x37, 0x10, 0x00, 0x6C, 0x80, 0x18, 0x99, 0x0D, -0x00, 0x6C, 0xA4, 0x67, 0x80, 0x18, 0x7B, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0xCA, 0xF3, 0x80, 0xA3, 0x01, 0x4C, 0xCA, 0xF3, -0x80, 0xC3, 0x42, 0x22, 0x4A, 0xF7, 0x5D, 0xA3, -0x03, 0x5A, 0x3E, 0x60, 0x01, 0x4A, 0x4A, 0xF7, -0x5D, 0xC3, 0x43, 0x10, 0x01, 0x6C, 0x80, 0x18, -0x48, 0x13, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0xAA, 0xF3, 0x77, 0xA2, 0x06, 0x73, -0xF5, 0x61, 0xAA, 0xF3, 0x78, 0xA2, 0x01, 0x4B, -0xAA, 0xF3, 0x78, 0xC2, 0x78, 0x67, 0xAA, 0xF3, -0x77, 0xC2, 0xCA, 0xF3, 0x60, 0xA2, 0x01, 0x4B, -0xCA, 0xF3, 0x60, 0xC2, 0x2A, 0x10, 0x01, 0x6C, -0x80, 0x18, 0xD1, 0x0D, 0x01, 0x6C, 0x00, 0x6D, -0x80, 0x18, 0x37, 0x10, 0x19, 0x10, 0x01, 0x6C, -0x80, 0x18, 0x99, 0x0D, 0x01, 0x6C, 0x00, 0x6D, -0x80, 0x18, 0x7B, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0xCA, 0xF3, 0x80, 0xA3, -0x01, 0x4C, 0xCA, 0xF3, 0x80, 0xC3, 0x08, 0x22, -0x6A, 0xF7, 0x40, 0xA3, 0x03, 0x5A, 0x04, 0x60, -0x01, 0x4A, 0x6A, 0xF7, 0x40, 0xC3, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xAA, 0xF3, 0x78, 0xA2, 0x01, 0x4B, 0xAA, 0xF3, -0x78, 0xC2, 0x30, 0xF0, 0x21, 0x6A, 0x50, 0xF3, -0x40, 0xA2, 0x06, 0x72, 0x80, 0xF0, 0x08, 0x61, -0x30, 0xF0, 0x21, 0x69, 0x00, 0x6A, 0x10, 0xF7, -0x04, 0x49, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, +0x80, 0x18, 0xDB, 0x0D, 0x00, 0x6C, 0xA4, 0x67, +0x37, 0x10, 0x00, 0x6C, 0x80, 0x18, 0xA3, 0x0D, +0x00, 0x6C, 0xA4, 0x67, 0x80, 0x18, 0x85, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0xCA, 0xF3, 0x88, 0xA3, 0x01, 0x4C, 0xCA, 0xF3, +0x88, 0xC3, 0x42, 0x22, 0x6A, 0xF7, 0x45, 0xA3, +0x03, 0x5A, 0x3E, 0x60, 0x01, 0x4A, 0x6A, 0xF7, +0x45, 0xC3, 0x43, 0x10, 0x01, 0x6C, 0x80, 0x18, +0x52, 0x13, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0xAA, 0xF3, 0x7F, 0xA2, 0x06, 0x73, +0xF5, 0x61, 0xCA, 0xF3, 0x60, 0xA2, 0x01, 0x4B, +0xCA, 0xF3, 0x60, 0xC2, 0x78, 0x67, 0xAA, 0xF3, +0x7F, 0xC2, 0xCA, 0xF3, 0x68, 0xA2, 0x01, 0x4B, +0xCA, 0xF3, 0x68, 0xC2, 0x2A, 0x10, 0x01, 0x6C, +0x80, 0x18, 0xDB, 0x0D, 0x01, 0x6C, 0x00, 0x6D, +0x80, 0x18, 0x41, 0x10, 0x19, 0x10, 0x01, 0x6C, +0x80, 0x18, 0xA3, 0x0D, 0x01, 0x6C, 0x00, 0x6D, +0x80, 0x18, 0x85, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0xCA, 0xF3, 0x88, 0xA3, +0x01, 0x4C, 0xCA, 0xF3, 0x88, 0xC3, 0x08, 0x22, +0x6A, 0xF7, 0x48, 0xA3, 0x03, 0x5A, 0x04, 0x60, +0x01, 0x4A, 0x6A, 0xF7, 0x48, 0xC3, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xCA, 0xF3, 0x60, 0xA2, 0x01, 0x4B, 0xCA, 0xF3, +0x60, 0xC2, 0x30, 0xF0, 0x21, 0x6A, 0x70, 0xF3, +0x48, 0xA2, 0x06, 0x72, 0x80, 0xF0, 0x08, 0x61, +0x30, 0xF0, 0x21, 0x69, 0x00, 0x6A, 0x30, 0xF7, +0x0C, 0x49, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x6C, 0xEA, 0x06, 0x93, 0x07, 0xD2, 0x01, 0x6D, 0x64, 0x36, 0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF0, 0xBC, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x83, 0xF0, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x08, 0x92, 0x06, 0x72, 0x1A, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF6, 0xA0, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0xE2, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x99, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x6D, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0xC2, 0x99, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF6, 0x00, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x22, 0xF6, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF6, 0x00, 0x4B, 0xC0, 0xF3, +0x20, 0x6B, 0x22, 0xF6, 0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF0, -0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x03, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x95, -0xC3, 0xF0, 0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x49, 0xF4, 0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, -0x78, 0x56, 0x06, 0x92, 0x04, 0x49, 0x01, 0x4A, +0xC3, 0xF0, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x69, 0xF4, 0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, +0xCF, 0x56, 0x06, 0x92, 0x04, 0x49, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, 0x7F, 0xF7, 0x1E, 0x61, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x21, 0x6A, -0x30, 0xF3, 0x5D, 0xA2, 0xFF, 0x69, 0x8C, 0xE9, +0x70, 0xF3, 0x45, 0xA2, 0xFF, 0x69, 0x8C, 0xE9, 0x02, 0x72, 0x02, 0x6A, 0x05, 0xD2, 0x02, 0x60, 0x04, 0x6B, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, 0x03, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0xA5, 0x19, 0x04, 0xD2, 0xC0, 0xF3, 0x44, 0x98, +0xAF, 0x19, 0x04, 0xD2, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, @@ -6588,10 +6616,10 @@ u8 array_mp_8822c_fw_ap[] = { 0x06, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0x91, 0x67, -0x80, 0x18, 0x8E, 0x13, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x78, 0xA2, +0x80, 0x18, 0x98, 0x13, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xCA, 0xF3, 0x60, 0xA2, 0x06, 0x73, 0x0B, 0x60, 0x05, 0x21, 0xCA, 0xF3, -0x40, 0xA2, 0x05, 0x93, 0x6E, 0xEA, 0x05, 0x22, +0x48, 0xA2, 0x05, 0x93, 0x6E, 0xEA, 0x05, 0x22, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x64, 0x70, 0xEA, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, @@ -6603,75 +6631,75 @@ u8 array_mp_8822c_fw_ap[] = { 0x04, 0x96, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0xE0, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF4, 0x08, 0x4C, -0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x05, 0x56, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0xE4, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x69, 0xF4, 0x08, 0x4C, +0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x5C, 0x56, 0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF0, 0x00, 0x6C, -0x85, 0xF7, 0x08, 0x4B, 0x4C, 0xEC, 0x2A, 0xF7, -0x5C, 0xDB, 0x82, 0x32, 0x52, 0x32, 0x02, 0x72, +0xA5, 0xF7, 0x08, 0x4B, 0x4C, 0xEC, 0x4A, 0xF7, +0x44, 0xDB, 0x82, 0x32, 0x52, 0x32, 0x02, 0x72, 0x0A, 0x60, 0x03, 0x6C, 0x4E, 0xEC, 0x04, 0x24, 0x01, 0x72, 0x02, 0x6A, 0x07, 0x60, 0x05, 0x10, -0xAA, 0xF3, 0x95, 0xC3, 0x05, 0x10, 0x01, 0x6A, -0x01, 0x10, 0x00, 0x6A, 0xAA, 0xF3, 0x55, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0xAA, 0xF3, 0x9D, 0xC3, 0x05, 0x10, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0xAA, 0xF3, 0x5D, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x70, 0x9B, -0x2A, 0xF7, 0x9C, 0x9A, 0x8C, 0xEB, 0x62, 0x33, -0x62, 0x33, 0xAA, 0xF3, 0x74, 0xC2, 0x05, 0x97, +0x4A, 0xF7, 0x84, 0x9A, 0x8C, 0xEB, 0x62, 0x33, +0x62, 0x33, 0xAA, 0xF3, 0x7C, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xF1, 0x63, 0x1D, 0x62, 0x1C, 0xD1, 0x1B, 0xD0, 0x08, 0xA4, 0x02, 0x6A, 0x01, 0x69, 0x0C, 0xEA, 0x46, 0x32, 0x18, 0xD2, -0x80, 0x18, 0x07, 0x07, 0x80, 0x18, 0x57, 0x14, -0x80, 0x18, 0x70, 0x12, 0x00, 0x6C, 0x80, 0x18, -0xE5, 0x07, 0x90, 0x67, 0x2C, 0xEC, 0x00, 0x6D, -0x80, 0x18, 0x39, 0x12, 0x80, 0xF0, 0x00, 0x2A, -0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, -0xAA, 0xF3, 0x76, 0xA0, 0xAA, 0xF3, 0x58, 0xC0, -0xAA, 0xF3, 0x57, 0xC0, 0x01, 0x4B, 0xAA, 0xF3, -0x76, 0xC0, 0xCA, 0xF3, 0x40, 0xC0, 0xCA, 0xF3, -0x21, 0xC0, 0x38, 0x6C, 0x80, 0x18, 0x68, 0x0B, -0x00, 0x6C, 0x6A, 0xF7, 0x54, 0xD8, 0xA4, 0x67, -0x80, 0x18, 0xD9, 0x0F, 0x30, 0xF0, 0x20, 0x6E, +0x80, 0x18, 0x36, 0x07, 0x80, 0x18, 0x61, 0x14, +0x80, 0x18, 0x7A, 0x12, 0x00, 0x6C, 0x80, 0x18, +0x14, 0x08, 0x90, 0x67, 0x2C, 0xEC, 0x00, 0x6D, +0x80, 0x18, 0x43, 0x12, 0x80, 0xF0, 0x00, 0x2A, +0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, +0xAA, 0xF3, 0x7E, 0xA0, 0xCA, 0xF3, 0x40, 0xC0, +0xAA, 0xF3, 0x5F, 0xC0, 0x01, 0x4B, 0xAA, 0xF3, +0x7E, 0xC0, 0xCA, 0xF3, 0x48, 0xC0, 0xCA, 0xF3, +0x29, 0xC0, 0x38, 0x6C, 0x80, 0x18, 0x72, 0x0B, +0x00, 0x6C, 0x6A, 0xF7, 0x5C, 0xD8, 0xA4, 0x67, +0x80, 0x18, 0xE3, 0x0F, 0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x04, 0x04, 0x0D, 0x05, 0x82, 0xF0, 0x14, 0x4E, 0xA2, 0xF0, 0x00, 0x4F, -0x80, 0x18, 0xB8, 0x0B, 0x30, 0xF0, 0x20, 0x6D, +0x80, 0x18, 0xC2, 0x0B, 0x30, 0xF0, 0x20, 0x6D, 0x07, 0x04, 0xE2, 0xF0, 0x14, 0x4D, 0x80, 0x18, -0x78, 0x0F, 0x00, 0x68, 0x80, 0x18, 0xDE, 0x0A, -0x01, 0x6C, 0x80, 0x18, 0x21, 0x08, 0x18, 0x94, -0x80, 0x18, 0x1B, 0x14, 0x00, 0x6C, 0x80, 0x18, -0x21, 0x08, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF0, -0x14, 0x4C, 0x07, 0x05, 0x80, 0x18, 0x6A, 0x0E, +0x82, 0x0F, 0x00, 0x68, 0x80, 0x18, 0xE8, 0x0A, +0x01, 0x6C, 0x80, 0x18, 0x2B, 0x08, 0x18, 0x94, +0x80, 0x18, 0x25, 0x14, 0x00, 0x6C, 0x80, 0x18, +0x2B, 0x08, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF0, +0x14, 0x4C, 0x07, 0x05, 0x80, 0x18, 0x74, 0x0E, 0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x04, 0x04, 0x0D, 0x05, 0x82, 0xF0, 0x14, 0x4E, -0xA2, 0xF0, 0x00, 0x4F, 0x80, 0x18, 0x9B, 0x0A, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xAA, 0xF3, 0x78, 0xA2, 0x06, 0x73, 0x08, 0x60, +0xA2, 0xF0, 0x00, 0x4F, 0x80, 0x18, 0xA5, 0x0A, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xCA, 0xF3, 0x60, 0xA2, 0x06, 0x73, 0x08, 0x60, 0xFF, 0x6B, 0x01, 0x48, 0x6C, 0xE8, 0x03, 0x70, -0x00, 0x6B, 0xCA, 0xF3, 0x60, 0xC2, 0xD2, 0x61, +0x00, 0x6B, 0xCA, 0xF3, 0x68, 0xC2, 0xD2, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x6C, 0x80, 0x18, -0xB3, 0x07, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0xE2, 0x07, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0xFF, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x69, 0x91, 0x67, 0xFF, 0x6D, 0xAA, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0xFF, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0xFF, 0x6D, 0xAA, 0x6E, -0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0xE5, 0x07, +0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0x14, 0x08, 0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, 0x00, 0x6A, 0x0F, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x26, 0xF0, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x46, 0xF0, 0x10, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0xA0, 0xA4, 0x00, 0xF1, +0xA5, 0xF7, 0x08, 0x4B, 0xA0, 0xA4, 0x00, 0xF1, 0xF5, 0xA3, 0x02, 0x6A, 0x01, 0x6E, 0x4B, 0xEA, 0xCC, 0xED, 0xEC, 0xEA, 0xAD, 0xEA, 0x00, 0xF1, 0x55, 0xC3, 0xA1, 0xA4, 0xCC, 0xEA, 0x00, 0xF1, 0xB6, 0xC3, 0xFF, 0x6D, 0x0D, 0x22, 0x61, 0xA4, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, 0x58, 0x9A, 0x74, 0x33, 0x40, 0x6C, 0x4D, 0xE3, 0x40, 0xA3, 0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x0A, 0x10, 0x61, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, -0x54, 0x9A, 0x74, 0x33, 0x4D, 0xE3, 0x80, 0xA3, +0x58, 0x9A, 0x74, 0x33, 0x4D, 0xE3, 0x80, 0xA3, 0xBF, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0xE0, 0x63, 0x3F, 0x62, 0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x50, 0xC3, 0x01, 0x6A, 0x52, 0xC3, @@ -6689,25 +6717,25 @@ u8 array_mp_8822c_fw_ap[] = { 0x04, 0x04, 0x40, 0xEA, 0x3F, 0x97, 0x20, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x44, 0x9A, 0x60, 0xA2, 0x03, 0x6A, +0xC3, 0xF1, 0x54, 0x9A, 0x60, 0xA2, 0x03, 0x6A, 0x6C, 0xEA, 0x10, 0x6B, 0x64, 0xEA, 0xFF, 0x6A, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x48, 0x9A, 0x04, 0xD3, 0x40, 0x9A, 0x05, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x4C, 0x9A, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, +0x58, 0x9A, 0x04, 0xD3, 0x40, 0x9A, 0x05, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x5C, 0x9A, 0x00, 0x9A, 0x05, 0x92, 0x0A, 0xEA, 0xC0, 0xF0, -0x07, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x07, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x02, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x30, 0xF0, -0x20, 0x69, 0x85, 0xF7, 0x08, 0x49, 0xE2, 0xF5, +0x20, 0x69, 0xA5, 0xF7, 0x08, 0x49, 0xE2, 0xF5, 0x42, 0xA9, 0x00, 0xF7, 0x00, 0x72, 0x07, 0x60, 0xE2, 0xF5, 0x62, 0xA1, 0xE2, 0xF5, 0x83, 0xA1, 0xAF, 0x43, 0x8E, 0xED, 0x13, 0x2D, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x78, 0x9A, 0xFF, 0x6C, +0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x9A, 0x10, 0x30, 0xF0, 0x20, 0x6D, -0xE2, 0xF7, 0xA0, 0x9D, 0x7F, 0x6E, 0xB5, 0xE0, +0xE2, 0xF7, 0xA4, 0x9D, 0x7F, 0x6E, 0xB5, 0xE0, 0xE0, 0xA5, 0xCC, 0xEF, 0x47, 0x2F, 0x00, 0xF4, 0x00, 0x72, 0x80, 0xF0, 0x0D, 0x60, 0xAC, 0x43, 0x8E, 0xED, 0x80, 0xF0, 0x09, 0x25, 0x00, 0xF5, @@ -6715,20 +6743,20 @@ u8 array_mp_8822c_fw_ap[] = { 0x02, 0x72, 0x80, 0xF0, 0x01, 0x60, 0x00, 0xF7, 0x03, 0x72, 0x7E, 0x60, 0x00, 0xF5, 0x00, 0x72, 0x7B, 0x60, 0xFD, 0x4B, 0x6E, 0xEC, 0x78, 0x24, -0x30, 0xF0, 0x20, 0x69, 0x85, 0xF7, 0x08, 0x49, +0x30, 0xF0, 0x20, 0x69, 0xA5, 0xF7, 0x08, 0x49, 0xE2, 0xF5, 0x42, 0xA9, 0x00, 0xF6, 0x01, 0x72, 0x6F, 0x60, 0x00, 0xF7, 0x02, 0x72, 0x6C, 0x60, 0x00, 0xF6, 0x00, 0x72, 0x69, 0x60, 0xE2, 0xF5, 0x62, 0xA1, 0xE2, 0xF5, 0x83, 0xA1, 0xFE, 0x4B, 0x8E, 0xEB, 0x62, 0x23, 0x00, 0xF7, 0x01, 0x72, 0x5F, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x50, 0x9A, 0x7F, 0x4C, 0x30, 0xF0, 0x20, 0x6D, -0x28, 0x4C, 0xE2, 0xF7, 0xA0, 0x9D, 0x49, 0xE0, +0x40, 0x9A, 0x7F, 0x4C, 0x30, 0xF0, 0x20, 0x6D, +0x28, 0x4C, 0xE2, 0xF7, 0xA4, 0x9D, 0x49, 0xE0, 0x94, 0x34, 0x60, 0xAA, 0x91, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x02, 0x4C, 0xB5, 0xE0, 0x13, 0x10, 0x40, 0xA5, 0x4C, 0xEE, 0x01, 0x76, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x50, 0x9A, 0x7F, 0x4C, 0x28, 0x4C, +0xE3, 0xF1, 0x40, 0x9A, 0x7F, 0x4C, 0x28, 0x4C, 0x49, 0xE0, 0x60, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x94, 0x34, 0x80, 0xF2, 0x4C, 0x9A, 0x91, 0xE1, 0x02, 0x4C, 0xFF, 0x6E, 0x6C, 0xEE, 0x40, 0xEA, @@ -6736,107 +6764,107 @@ u8 array_mp_8822c_fw_ap[] = { 0xE2, 0xF5, 0x43, 0xC1, 0xE2, 0xF5, 0x43, 0xA1, 0x6E, 0xEA, 0x13, 0x2A, 0xE2, 0xF5, 0x43, 0xC1, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x98, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, -0x60, 0x9B, 0x40, 0x9C, 0x6D, 0xEA, 0x40, 0xDC, +0x9C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, +0x64, 0x9B, 0x40, 0x9C, 0x6D, 0xEA, 0x40, 0xDC, 0x63, 0xF3, 0x44, 0x99, 0x6D, 0xEA, 0x63, 0xF3, 0x44, 0xD9, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x54, 0x9A, 0x04, 0x93, 0x40, 0x9A, 0x0E, 0xEA, +0x44, 0x9A, 0x04, 0x93, 0x40, 0x9A, 0x0E, 0xEA, 0x61, 0xE0, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x58, 0x9A, 0x00, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x4C, 0x9A, 0x00, 0xDA, +0xE3, 0xF1, 0x48, 0x9A, 0x00, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF1, 0x5C, 0x9A, 0x00, 0xDA, 0x05, 0x92, 0x4A, 0xE8, 0x5F, 0xF7, 0x03, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFE, 0x63, 0x03, 0xD1, -0x02, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x02, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x02, 0x6D, 0xAC, 0xEB, 0x40, 0xF1, 0x1E, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF1, 0x7C, 0x9B, 0x80, 0xA3, +0x20, 0x6B, 0xE3, 0xF1, 0x6C, 0x9B, 0x80, 0xA3, 0x0F, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0xA0, 0xF0, 0x84, 0x9A, 0xAD, 0xEC, 0xA0, 0xF0, 0x84, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF0, 0x5F, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF0, 0x5F, 0xA2, 0x00, 0xD2, 0xFF, 0x4A, 0x01, 0xD2, 0x47, 0x11, 0x00, 0x92, 0x06, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE6, 0xF0, 0x40, 0xA2, 0x07, 0x72, 0x09, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x06, 0xF1, 0x40, 0xA2, 0x07, 0x72, 0x09, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x40, 0xF1, 0x18, 0xA2, 0x01, 0x94, 0x8A, 0xE8, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x78, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, +0x7C, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, +0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x25, 0x11, -0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF6, 0xDA, 0xA4, +0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF6, 0xDE, 0xA4, 0xE3, 0x67, 0xFF, 0x6D, 0xE7, 0xEE, 0xC7, 0x67, 0x01, 0x6F, 0xEC, 0xEE, 0xA0, 0xF0, 0x0A, 0x26, 0x0C, 0x34, 0x89, 0xE2, 0x00, 0xF1, 0x1B, 0x4A, -0x00, 0x6C, 0x30, 0xF0, 0x20, 0x6E, 0x05, 0xF6, -0xFA, 0xA6, 0xFF, 0x6D, 0x1F, 0xF7, 0x00, 0x69, +0x00, 0x6C, 0x30, 0xF0, 0x20, 0x6E, 0x25, 0xF6, +0xFE, 0xA6, 0xFF, 0x6D, 0x1F, 0xF7, 0x00, 0x69, 0xAC, 0xEF, 0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE4, 0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, -0x05, 0xF6, 0xFA, 0xA6, 0xAC, 0xEF, 0x74, 0x4F, +0x25, 0xF6, 0xFE, 0xA6, 0xAC, 0xEF, 0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE4, 0x2C, 0xEF, 0x0F, 0x2F, -0x30, 0xF0, 0x20, 0x6D, 0x05, 0xF6, 0x3A, 0xA5, +0x30, 0xF0, 0x20, 0x6D, 0x25, 0xF6, 0x3E, 0xA5, 0xFF, 0x6D, 0x30, 0xF0, 0x20, 0x6E, 0xAC, 0xE9, 0x74, 0x49, 0x28, 0x31, 0xE4, 0x67, 0x25, 0xE4, -0xC2, 0xF5, 0xC8, 0x9E, 0x0B, 0x10, 0x05, 0xF6, -0x3A, 0xA6, 0x30, 0xF0, 0x20, 0x6E, 0xC2, 0xF5, +0xC2, 0xF5, 0xC8, 0x9E, 0x0B, 0x10, 0x25, 0xF6, +0x3E, 0xA6, 0x30, 0xF0, 0x20, 0x6E, 0xC2, 0xF5, 0xCC, 0x9E, 0xAC, 0xE9, 0x74, 0x49, 0x28, 0x31, 0xE4, 0x67, 0x25, 0xE4, 0xD9, 0xE1, 0xC0, 0xA6, 0x0C, 0x31, 0xCC, 0xED, 0x30, 0xF0, 0x20, 0x6E, -0x85, 0xF7, 0x08, 0x4E, 0xD9, 0xE1, 0xF9, 0xE6, +0xA5, 0xF7, 0x08, 0x4E, 0xD9, 0xE1, 0xF9, 0xE6, 0x00, 0xF1, 0xB7, 0xC6, 0x30, 0xF0, 0x20, 0x6E, -0x05, 0xF6, 0xFA, 0xA6, 0xFF, 0x6D, 0x1F, 0xF7, +0x25, 0xF6, 0xFE, 0xA6, 0xFF, 0x6D, 0x1F, 0xF7, 0x00, 0x69, 0xAC, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE4, 0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, -0x08, 0x60, 0x05, 0xF6, 0xFA, 0xA6, 0xAC, 0xEF, +0x08, 0x60, 0x25, 0xF6, 0xFE, 0xA6, 0xAC, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE4, 0x2C, 0xEF, -0x0E, 0x2F, 0x30, 0xF0, 0x20, 0x6D, 0x05, 0xF6, -0xFA, 0xA5, 0xFF, 0x6D, 0x30, 0xF0, 0x20, 0x6E, +0x0E, 0x2F, 0x30, 0xF0, 0x20, 0x6D, 0x25, 0xF6, +0xFE, 0xA5, 0xFF, 0x6D, 0x30, 0xF0, 0x20, 0x6E, 0xAC, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE4, -0xC2, 0xF5, 0xC8, 0x9E, 0x0A, 0x10, 0x05, 0xF6, -0xFA, 0xA6, 0x30, 0xF0, 0x20, 0x6E, 0xC2, 0xF5, +0xC2, 0xF5, 0xC8, 0x9E, 0x0A, 0x10, 0x25, 0xF6, +0xFE, 0xA6, 0x30, 0xF0, 0x20, 0x6E, 0xC2, 0xF5, 0xCC, 0x9E, 0xAC, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE4, 0xD9, 0xE7, 0xC0, 0xA6, 0x01, 0x4C, 0x04, 0x74, 0xCC, 0xED, 0xA0, 0xC2, 0x01, 0x4A, -0x8C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF6, -0xBA, 0xA2, 0x01, 0x6C, 0xC4, 0x67, 0xC4, 0xED, -0xCF, 0xED, 0x05, 0xF6, 0xDA, 0xA2, 0xAC, 0xEB, +0x8C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF6, +0xBE, 0xA2, 0x01, 0x6C, 0xC4, 0x67, 0xC4, 0xED, +0xCF, 0xED, 0x25, 0xF6, 0xDE, 0xA2, 0xAC, 0xEB, 0xFF, 0x6D, 0x84, 0xEE, 0x30, 0xF0, 0x20, 0x6E, -0xE3, 0xF1, 0xDC, 0x9E, 0xAC, 0xEC, 0x08, 0x6F, -0x80, 0xC6, 0x05, 0xF6, 0x9A, 0xA2, 0xAC, 0xEC, -0x01, 0x4C, 0xAC, 0xEC, 0x05, 0xF6, 0x9A, 0xC2, -0x05, 0xF6, 0xBA, 0xA2, 0x03, 0x6C, 0xAC, 0xEC, -0x05, 0xF6, 0x9A, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x40, 0xF1, 0x98, 0xA2, +0xE3, 0xF1, 0xCC, 0x9E, 0xAC, 0xEC, 0x08, 0x6F, +0x80, 0xC6, 0x25, 0xF6, 0x9E, 0xA2, 0xAC, 0xEC, +0x01, 0x4C, 0xAC, 0xEC, 0x25, 0xF6, 0x9E, 0xC2, +0x25, 0xF6, 0xBE, 0xA2, 0x03, 0x6C, 0xAC, 0xEC, +0x25, 0xF6, 0x9E, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x40, 0xF1, 0x98, 0xA2, 0x01, 0x4C, 0x40, 0xF1, 0x98, 0xC2, 0x40, 0xF1, 0x98, 0xA2, 0xEE, 0xEC, 0x70, 0x2C, 0x40, 0xF1, 0x98, 0xC2, 0x6D, 0x10, 0x30, 0xF0, 0x20, 0x6E, -0x82, 0xF6, 0x18, 0x9E, 0x02, 0x6F, 0xC0, 0x98, +0x82, 0xF6, 0x1C, 0x9E, 0x02, 0x6F, 0xC0, 0x98, 0xED, 0xEE, 0xC0, 0xD8, 0x63, 0xF3, 0xC4, 0x9A, -0x63, 0xF3, 0x70, 0xC2, 0x05, 0xF6, 0x7A, 0xA4, +0x63, 0xF3, 0x70, 0xC2, 0x25, 0xF6, 0x7E, 0xA4, 0xED, 0xEE, 0x63, 0xF3, 0xC4, 0xDA, 0x63, 0xF3, -0x71, 0xC2, 0x05, 0xF6, 0x5A, 0xA4, 0x1F, 0xF7, +0x71, 0xC2, 0x25, 0xF6, 0x5E, 0xA4, 0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEA, 0x74, 0x4A, 0x48, 0x32, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x07, 0x60, -0x05, 0xF6, 0x5A, 0xA4, 0xAC, 0xEA, 0x74, 0x4A, +0x25, 0xF6, 0x5E, 0xA4, 0xAC, 0xEA, 0x74, 0x4A, 0x48, 0x32, 0x6C, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x05, 0xF6, 0x7A, 0xA2, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF2, 0x80, 0x9C, 0xFF, 0x6A, +0x20, 0x6A, 0x25, 0xF6, 0x7E, 0xA2, 0x30, 0xF0, +0x20, 0x6C, 0xE3, 0xF1, 0x90, 0x9C, 0xFF, 0x6A, 0x4C, 0xEB, 0x8D, 0xE3, 0x68, 0x33, 0xA0, 0xA3, -0x0A, 0x10, 0x05, 0xF6, 0x5A, 0xA4, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF2, 0x64, 0x9B, 0xAC, 0xEA, +0x0A, 0x10, 0x25, 0xF6, 0x5E, 0xA4, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF1, 0x74, 0x9B, 0xAC, 0xEA, 0x69, 0xE2, 0x48, 0x32, 0x40, 0xA2, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF2, 0xBA, 0xC2, 0x05, 0xF6, 0x5A, 0xA3, -0x05, 0xF6, 0x9A, 0xA3, 0xFF, 0x6A, 0x1F, 0xF7, +0x09, 0xF3, 0xBA, 0xC2, 0x25, 0xF6, 0x5E, 0xA3, +0x25, 0xF6, 0x9E, 0xA3, 0xFF, 0x6A, 0x1F, 0xF7, 0x00, 0x6D, 0x4C, 0xEC, 0x88, 0x34, 0xC0, 0xF1, -0x11, 0x4C, 0xAC, 0xEC, 0x0B, 0x2C, 0x05, 0xF6, -0x7A, 0xA3, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0x4C, 0xEB, 0x74, 0x4B, 0x68, 0x33, 0x03, 0xF2, -0x88, 0x9C, 0x09, 0x10, 0x05, 0xF6, 0x7A, 0xA3, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF2, 0x8C, 0x9C, +0x11, 0x4C, 0xAC, 0xEC, 0x0B, 0x2C, 0x25, 0xF6, +0x7E, 0xA3, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6C, +0x4C, 0xEB, 0x74, 0x4B, 0x68, 0x33, 0xE3, 0xF1, +0x98, 0x9C, 0x09, 0x10, 0x25, 0xF6, 0x7E, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF1, 0x9C, 0x9C, 0x4C, 0xEB, 0x74, 0x4B, 0x68, 0x33, 0x8D, 0xE3, 0x60, 0xA3, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE9, 0xF2, 0x5B, 0xC3, 0x02, 0x10, 0xBF, 0xF6, +0x09, 0xF3, 0x5B, 0xC3, 0x02, 0x10, 0xBF, 0xF6, 0x17, 0x2B, 0x03, 0x91, 0x02, 0x90, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, @@ -6844,19 +6872,19 @@ u8 array_mp_8822c_fw_ap[] = { 0x25, 0x20, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x50, 0x9A, 0x20, 0x6B, 0x01, 0x70, 0x60, 0xC2, +0x40, 0x9A, 0x20, 0x6B, 0x01, 0x70, 0x60, 0xC2, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x5C, 0x9A, 0x40, 0xEA, 0x0F, 0x10, 0x20, 0x70, -0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, -0x64, 0x9A, 0x02, 0xF6, 0x9C, 0x9C, 0x8D, 0xEB, +0x64, 0x9A, 0x22, 0xF6, 0x80, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x30, 0x6A, -0x2B, 0xF1, 0x05, 0x4A, 0x40, 0xDB, 0x00, 0x1C, -0xAC, 0x39, 0x80, 0x18, 0xFC, 0x5D, 0x05, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0xF3, 0x02, 0x20, 0xBA, +0x4B, 0xF1, 0x0D, 0x4A, 0x40, 0xDB, 0x00, 0x1C, +0xAC, 0x39, 0x80, 0x18, 0x5F, 0x5E, 0x05, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0x04, 0x03, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, @@ -6871,14 +6899,14 @@ u8 array_mp_8822c_fw_ap[] = { 0xFF, 0x6A, 0x4C, 0xEC, 0x68, 0x44, 0xFA, 0x4B, 0x4C, 0xEB, 0x04, 0x5B, 0x03, 0x60, 0x80, 0x18, 0x39, 0x41, 0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x42, 0xF7, 0x94, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x82, 0xF6, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x42, 0xF7, 0x98, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0xFF, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x40, 0xA4, 0xC0, 0xF0, +0xA5, 0xF7, 0x08, 0x4B, 0x40, 0xA4, 0xC0, 0xF0, 0xC0, 0xA3, 0x7F, 0x68, 0x5E, 0x32, 0x5C, 0x32, 0x0C, 0xEE, 0x4D, 0xEE, 0xC0, 0xF0, 0xC0, 0xC3, 0xA0, 0xA4, 0x01, 0x6A, 0x41, 0x6F, 0xBA, 0x35, @@ -6901,7 +6929,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x02, 0x6D, 0xAB, 0xED, 0x4C, 0xEC, 0xEC, 0xED, 0x8D, 0xED, 0xC0, 0xF0, 0xA3, 0xC3, 0xC0, 0xF0, 0xA0, 0xA3, 0x86, 0x67, 0x2C, 0xEC, 0xBA, 0x35, -0x4E, 0xED, 0x4C, 0xED, 0x80, 0x18, 0xAB, 0x18, +0x4E, 0xED, 0x4C, 0xED, 0x80, 0x18, 0xB5, 0x18, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x60, 0xA4, 0x01, 0xA4, @@ -6912,28 +6940,28 @@ u8 array_mp_8822c_fw_ap[] = { 0x80, 0xF3, 0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x58, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF7, 0x54, 0x9A, 0x14, 0x33, +0x20, 0x6A, 0xA2, 0xF7, 0x58, 0x9A, 0x14, 0x33, 0x4D, 0xE3, 0x80, 0xA3, 0xBF, 0x6A, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x54, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF7, 0x54, 0x9A, 0x14, 0x33, 0xFF, 0x6C, +0xA2, 0xF7, 0x58, 0x9A, 0x14, 0x33, 0xFF, 0x6C, 0x4D, 0xE3, 0x40, 0xA3, 0x8C, 0xEA, 0x40, 0x6C, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x06, 0x92, 0x03, 0xEA, 0xCA, 0x60, 0x30, 0xF0, 0x20, 0x68, -0x85, 0xF7, 0x08, 0x48, 0xA3, 0xF3, 0x6C, 0xA0, +0xA5, 0xF7, 0x08, 0x48, 0xA3, 0xF3, 0x68, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x1A, 0x22, 0x03, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xA3, 0xF3, 0x4C, 0xC0, -0x00, 0x18, 0xCA, 0xCB, 0x04, 0xD2, 0x04, 0x93, -0xA3, 0xF3, 0x50, 0x98, 0x6E, 0xEA, 0x03, 0x22, -0x04, 0x94, 0x00, 0x18, 0xEB, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0xA3, 0xF3, -0x8C, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0xA3, 0xF3, -0x6C, 0xC2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x4B, 0xEA, 0x6C, 0xEA, 0xA3, 0xF3, 0x48, 0xC0, +0x00, 0x18, 0xDB, 0xCB, 0x04, 0xD2, 0x04, 0x93, +0xA3, 0xF3, 0x4C, 0x98, 0x6E, 0xEA, 0x03, 0x22, +0x04, 0x94, 0x00, 0x18, 0xFC, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xA3, 0xF3, +0x88, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0xA3, 0xF3, +0x68, 0xC2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x68, 0x44, 0xC8, 0x4B, 0x4C, 0xEB, 0x20, 0x5B, 0x05, 0x67, -0x03, 0x60, 0x80, 0x18, 0x44, 0x45, 0x64, 0x10, +0x03, 0x60, 0x80, 0x18, 0x46, 0x45, 0x64, 0x10, 0x13, 0x74, 0x37, 0x60, 0x14, 0x5C, 0x0D, 0x60, 0x08, 0x74, 0x27, 0x60, 0x09, 0x5C, 0x04, 0x60, 0x18, 0x24, 0x01, 0x74, 0x1A, 0x60, 0x45, 0x10, @@ -6942,69 +6970,69 @@ u8 array_mp_8822c_fw_ap[] = { 0x05, 0x60, 0x1E, 0x74, 0x2A, 0x60, 0x1F, 0x74, 0x24, 0x60, 0x37, 0x10, 0xC3, 0x74, 0x31, 0x60, 0xCD, 0x74, 0x2B, 0x60, 0xC2, 0x74, 0x25, 0x60, -0x30, 0x10, 0x85, 0x67, 0x80, 0x18, 0xC5, 0x14, -0x3F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xB1, 0x16, -0x3B, 0x10, 0x85, 0x67, 0x00, 0x18, 0x4F, 0xD3, -0x37, 0x10, 0x85, 0x67, 0x80, 0x18, 0x60, 0x02, -0x33, 0x10, 0x85, 0x67, 0x80, 0x18, 0x45, 0x00, -0x2F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xA3, 0x00, -0x2B, 0x10, 0x85, 0x67, 0x80, 0x18, 0x7B, 0x16, -0x27, 0x10, 0x85, 0x67, 0x00, 0x18, 0x64, 0xC9, -0x23, 0x10, 0x85, 0x67, 0x00, 0x18, 0x4A, 0xC9, -0x1F, 0x10, 0x85, 0x67, 0x00, 0x18, 0x29, 0xC9, -0x1B, 0x10, 0x85, 0x67, 0x80, 0x18, 0xCD, 0x14, -0x17, 0x10, 0x85, 0x67, 0x80, 0x18, 0x1D, 0x5B, +0x30, 0x10, 0x85, 0x67, 0x80, 0x18, 0xCF, 0x14, +0x3F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xBB, 0x16, +0x3B, 0x10, 0x85, 0x67, 0x00, 0x18, 0x74, 0xD3, +0x37, 0x10, 0x85, 0x67, 0x80, 0x18, 0x71, 0x02, +0x33, 0x10, 0x85, 0x67, 0x80, 0x18, 0x56, 0x00, +0x2F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xB4, 0x00, +0x2B, 0x10, 0x85, 0x67, 0x80, 0x18, 0x85, 0x16, +0x27, 0x10, 0x85, 0x67, 0x00, 0x18, 0x71, 0xC9, +0x23, 0x10, 0x85, 0x67, 0x00, 0x18, 0x57, 0xC9, +0x1F, 0x10, 0x85, 0x67, 0x00, 0x18, 0x36, 0xC9, +0x1B, 0x10, 0x85, 0x67, 0x80, 0x18, 0xD7, 0x14, +0x17, 0x10, 0x85, 0x67, 0x80, 0x18, 0x80, 0x5B, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x78, 0x9A, 0x01, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x7C, 0x9A, 0x01, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x0E, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x40, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, 0x40, 0xF1, 0x57, 0xA0, 0x40, 0xF1, 0x78, 0xA0, 0x4E, 0xEB, 0x29, 0x23, 0x67, 0x42, 0x1B, 0x4B, 0x6C, 0x33, 0x0D, 0xE3, 0x4C, 0x32, 0x87, 0xA3, 0x55, 0xE0, 0x00, 0xF1, 0x18, 0x4D, -0x80, 0x18, 0xE7, 0x16, 0x40, 0xF1, 0x57, 0xA0, +0x80, 0x18, 0xF1, 0x16, 0x40, 0xF1, 0x57, 0xA0, 0x01, 0x4A, 0x40, 0xF1, 0x57, 0xC0, 0x40, 0xF1, 0x77, 0xA0, 0x40, 0xF1, 0x58, 0xA0, 0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, 0x02, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x40, 0xF1, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x40, 0xF1, 0x77, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, -0x40, 0xF1, 0x77, 0xC2, 0x80, 0x18, 0x77, 0x15, +0x40, 0xF1, 0x77, 0xC2, 0x80, 0x18, 0x81, 0x15, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, 0xE2, 0xF5, +0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, 0xE2, 0xF5, 0x42, 0xA0, 0x7F, 0x6C, 0xA0, 0xF0, 0xA7, 0x42, 0xB4, 0x35, 0x15, 0xE5, 0x62, 0xA5, 0x8C, 0xEB, 0x24, 0x2B, 0xA0, 0xF0, 0x62, 0x42, 0x74, 0x33, 0x0D, 0xE3, 0x54, 0x32, 0xA0, 0xF0, 0x8A, 0xA3, 0x55, 0xE0, 0xE2, 0xF4, 0x0B, 0x4D, 0x80, 0x18, -0xE7, 0x16, 0xE2, 0xF5, 0x42, 0xA0, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF2, 0x94, 0x9C, 0x54, 0x33, +0xF1, 0x16, 0xE2, 0xF5, 0x42, 0xA0, 0x30, 0xF0, +0x20, 0x6C, 0x03, 0xF2, 0x84, 0x9C, 0x54, 0x33, 0x0D, 0xE3, 0xE2, 0xF4, 0xA8, 0xA3, 0x7F, 0x4A, 0x28, 0x4A, 0xA0, 0xC4, 0xE2, 0xF4, 0x89, 0xA3, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x78, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x68, 0x9B, 0x54, 0x32, 0x41, 0xE0, 0x80, 0xC3, 0x82, 0x40, 0x37, 0x10, 0x01, 0x73, 0x37, 0x61, 0x54, 0x33, 0x0D, 0xE3, 0xE2, 0xF4, 0x83, 0xA3, 0xFF, 0x74, 0x0C, 0x61, 0xE2, 0xF4, 0x84, 0xA3, 0x02, 0x4D, -0x80, 0x18, 0x69, 0x16, 0xE2, 0xF5, 0x62, 0xA0, +0x80, 0x18, 0x73, 0x16, 0xE2, 0xF5, 0x62, 0xA0, 0x7F, 0x4B, 0x23, 0x4B, 0x74, 0x33, 0x01, 0xE3, 0x06, 0x10, 0x7F, 0x4A, 0x23, 0x4A, 0x54, 0x32, 0x01, 0xE2, 0x01, 0x6A, 0x4B, 0xEA, 0xA0, 0xF0, -0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xE2, 0xF5, 0x62, 0xA2, 0x30, 0xF0, -0x20, 0x6D, 0x03, 0xF2, 0xB4, 0x9D, 0x74, 0x34, +0x20, 0x6D, 0x03, 0xF2, 0xA4, 0x9D, 0x74, 0x34, 0x51, 0xE4, 0xE2, 0xF4, 0xC8, 0xA4, 0x7F, 0x4B, 0x28, 0x4B, 0xC0, 0xC5, 0xE2, 0xF4, 0xA9, 0xA4, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF2, 0x98, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF2, 0x88, 0x9C, 0x74, 0x33, 0x69, 0xE2, 0xA0, 0xC4, 0x82, 0x42, -0x80, 0x18, 0xE4, 0x14, 0x05, 0x97, 0x04, 0x90, +0x80, 0x18, 0xEE, 0x14, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, 0xE2, 0xF5, 0x62, 0xA0, 0xE2, 0xF5, 0x43, 0xA0, 0x6E, 0xEA, 0x42, 0x22, 0x40, 0xF6, 0x5A, 0xA8, 0x09, 0xF6, 0x00, 0x72, 0x10, 0x60, @@ -7012,63 +7040,63 @@ u8 array_mp_8822c_fw_ap[] = { 0xAE, 0x44, 0x6E, 0xED, 0x09, 0x25, 0x09, 0xF7, 0x01, 0x72, 0x06, 0x60, 0x09, 0xF7, 0x00, 0x72, 0x03, 0x60, 0xFF, 0x4C, 0x8E, 0xEB, 0x0D, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0xA0, 0xF0, 0x44, 0x9B, 0x04, 0x6C, 0x8D, 0xEA, 0x02, 0x6C, 0x8D, 0xEA, 0xA0, 0xF0, 0x44, 0xDB, -0x20, 0x10, 0x80, 0x18, 0x40, 0x17, 0xE2, 0xF5, +0x20, 0x10, 0x80, 0x18, 0x4A, 0x17, 0xE2, 0xF5, 0x42, 0xA0, 0x01, 0x4A, 0xE2, 0xF5, 0x42, 0xC0, 0xE2, 0xF5, 0x62, 0xA0, 0xE2, 0xF5, 0x43, 0xA0, 0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, 0x02, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xE2, 0xF5, 0x62, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, 0xE2, 0xF5, 0x62, 0xC2, 0x80, 0x18, -0x01, 0x15, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x0B, 0x15, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0x64, 0x9B, -0x30, 0xF0, 0x20, 0x68, 0x23, 0xF2, 0x08, 0x98, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x74, 0x9B, +0x30, 0xF0, 0x20, 0x68, 0x03, 0xF2, 0x18, 0x98, 0xE0, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0xEF, 0x08, 0x5C, 0x4C, 0xED, 0x4C, 0xEE, 0xE0, 0xDB, 0x46, 0x60, 0xB0, 0x75, 0x2E, 0x61, 0xB2, 0x76, -0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0xAC, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, +0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, +0xBC, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, 0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, 0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, 0xCC, 0xEC, 0x80, 0xDD, 0x80, 0x9B, 0x4E, 0x10, 0xB1, 0x76, 0x80, 0xF0, 0x13, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0xAC, 0x9A, 0x01, 0x6A, +0x20, 0x6A, 0x03, 0xF2, 0xBC, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, 0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, 0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, 0xCC, 0xEC, 0x80, 0xDD, 0x80, 0x9B, 0x4F, 0xEA, 0x8C, 0xEA, 0x40, 0xDB, 0x7B, 0x10, 0xA0, 0x75, 0x7D, 0x61, 0xA1, 0x76, -0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x4C, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, +0x5C, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, 0x51, 0x10, 0xA2, 0x76, 0x6F, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, 0x01, 0x6B, +0x20, 0x6A, 0x03, 0xF2, 0x5C, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, 0x5A, 0x10, 0xE8, 0x44, 0x4C, 0xEF, 0x08, 0x5F, 0xE0, 0x6A, 0x65, 0x60, 0xB0, 0x75, 0x35, 0x61, 0xB2, 0x76, 0x18, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x40, 0x9A, 0x01, 0x6E, 0xA6, 0x67, 0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, 0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, 0xE0, 0x37, 0xE0, 0x37, 0xEF, 0xEF, 0xAC, 0xEF, 0xE0, 0xDA, 0x40, 0x9B, 0xC4, 0xEC, 0x86, 0x67, 0x4D, 0xEC, 0x19, 0x10, 0xB1, 0x76, 0x44, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x50, 0x9A, 0x01, 0x6E, 0xA6, 0x67, +0x23, 0xF2, 0x40, 0x9A, 0x01, 0x6E, 0xA6, 0x67, 0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, 0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, 0xE0, 0x37, 0xE0, 0x37, 0xEF, 0xEF, 0xAC, 0xEF, 0xE0, 0xDA, 0x40, 0x9B, 0xC4, 0xEC, 0xCF, 0xEC, 0x4C, 0xEC, 0x80, 0xDB, 0x29, 0x10, 0xA0, 0x75, 0x2B, 0x61, 0xA1, 0x76, 0x11, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x50, 0x9A, 0x01, 0x6B, +0x20, 0x6A, 0x23, 0xF2, 0x40, 0x9A, 0x01, 0x6B, 0x64, 0xEF, 0xA0, 0x9A, 0x00, 0xF6, 0x60, 0x34, 0x8F, 0xEC, 0xAC, 0xEC, 0x80, 0xDA, 0x80, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x8D, 0xEB, 0x13, 0x10, 0xA2, 0x76, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x50, 0x9A, 0x01, 0x6B, 0x64, 0xEF, +0x23, 0xF2, 0x40, 0x9A, 0x01, 0x6B, 0x64, 0xEF, 0xA0, 0x9A, 0x00, 0xF6, 0x60, 0x34, 0x8F, 0xEC, 0xAC, 0xEC, 0x80, 0xDA, 0x80, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xDA, @@ -7076,73 +7104,73 @@ u8 array_mp_8822c_fw_ap[] = { 0xE1, 0x6A, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0xFF, 0x63, 0x18, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x54, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, +0x44, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x37, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x58, 0x9A, 0x40, 0xA2, +0x20, 0x6A, 0x23, 0xF2, 0x48, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x30, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x5C, 0x9A, 0x1C, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x27, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x5C, 0x9A, 0x01, 0x6D, 0x40, 0xA2, +0x23, 0xF2, 0x4C, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x1A, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x50, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x50, 0x9A, 0x40, 0xA2, 0xA4, 0xEC, 0x85, 0x67, +0x40, 0x9A, 0x40, 0xA2, 0xA4, 0xEC, 0x85, 0x67, 0x6C, 0xEC, 0x4C, 0xEC, 0x5D, 0x67, 0x80, 0xC2, 0x40, 0xA2, 0x4C, 0xEB, 0x6B, 0xEA, 0xC0, 0xF7, 0x42, 0x32, 0x03, 0x10, 0xE4, 0x6A, 0x01, 0x10, 0xE6, 0x6A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x6C, 0xED, 0x20, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x54, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, +0x44, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x48, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x58, 0x9A, 0xC4, 0xEC, +0x20, 0x6A, 0x23, 0xF2, 0x48, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0x40, 0xA2, 0x6C, 0xEA, 0xCC, 0xEA, 0xCE, 0xEA, 0x3B, 0x2A, 0x05, 0x25, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0xA4, 0x9A, 0x24, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x44, 0x9A, +0x20, 0x6A, 0x23, 0xF2, 0xB4, 0x9A, 0x24, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x54, 0x9A, 0x29, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x2E, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x5C, 0x9A, 0x01, 0x6E, 0x40, 0xA2, +0x23, 0xF2, 0x4C, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x23, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x50, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0x40, 0xA2, 0x6C, 0xEA, 0xCC, 0xEA, 0xCE, 0xEA, 0x16, 0x2A, 0x0A, 0x25, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0xA8, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0xB8, 0x9A, 0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC5, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x48, 0x9A, 0xA0, 0xA2, 0x8F, 0xEC, +0x23, 0xF2, 0x58, 0x9A, 0xA0, 0xA2, 0x8F, 0xEC, 0x6C, 0xEC, 0xAC, 0xEC, 0x80, 0xC2, 0xF0, 0x6A, 0x20, 0xE8, 0xE5, 0x6A, 0x20, 0xE8, 0xE4, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x0F, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x54, 0x9A, 0x01, 0x6D, 0x40, 0xA2, +0x23, 0xF2, 0x44, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x1F, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x48, 0x9A, 0x13, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x16, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x5C, 0x9A, 0x01, 0x6D, 0x40, 0xA2, +0x23, 0xF2, 0x4C, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x0B, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x50, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, 0x67, 0xEC, 0x45, 0x67, 0x6E, 0xEA, 0xAC, 0xEA, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x1A, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x54, 0x9A, 0x01, 0x6E, 0x40, 0xA2, +0x23, 0xF2, 0x44, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x35, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x48, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0xA0, 0xA2, 0x6C, 0xED, 0xCC, 0xED, 0xCE, 0xED, 0x2A, 0x2D, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x44, 0x9A, 0x1E, 0x10, +0x20, 0x6A, 0x23, 0xF2, 0x54, 0x9A, 0x1E, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x21, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x5C, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, +0x4C, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x16, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x40, 0x9A, 0xC4, 0xEC, +0x20, 0x6A, 0x23, 0xF2, 0x50, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0xA0, 0xA2, 0x6C, 0xED, 0xCC, 0xED, 0xCE, 0xED, 0x0B, 0x2D, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x48, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, +0x23, 0xF2, 0x58, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, 0x8C, 0xEB, 0x6E, 0xEC, 0x01, 0x5C, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, @@ -7153,92 +7181,92 @@ u8 array_mp_8822c_fw_ap[] = { 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x04, 0x67, 0x2C, 0xE8, 0x90, 0x67, 0xA0, 0x6D, 0xA2, 0x6E, -0x80, 0x18, 0xA3, 0x17, 0x90, 0x67, 0x80, 0x18, -0x06, 0x18, 0x7D, 0x67, 0x50, 0xC3, 0x50, 0xA3, +0x80, 0x18, 0xAD, 0x17, 0x90, 0x67, 0x80, 0x18, +0x10, 0x18, 0x7D, 0x67, 0x50, 0xC3, 0x50, 0xA3, 0x09, 0x97, 0x07, 0x90, 0x2C, 0xEA, 0x08, 0x91, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0x91, 0x67, 0xAC, 0xE8, 0xA1, 0x6E, -0xA0, 0x6D, 0x80, 0x18, 0xA3, 0x17, 0x91, 0x67, -0xB0, 0x67, 0x80, 0x18, 0x2C, 0x18, 0x07, 0x97, +0xA0, 0x6D, 0x80, 0x18, 0xAD, 0x17, 0x91, 0x67, +0xB0, 0x67, 0x80, 0x18, 0x36, 0x18, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6D, -0x23, 0xF2, 0xA8, 0x9D, 0x40, 0x9B, 0xA2, 0x6E, +0x03, 0xF2, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6D, +0x03, 0xF2, 0xB8, 0x9D, 0x40, 0x9B, 0xA2, 0x6E, 0xAC, 0xEA, 0x40, 0xDB, 0xFF, 0x6A, 0x4C, 0xEC, -0xA0, 0x6D, 0x80, 0x18, 0xA3, 0x17, 0x05, 0x97, +0xA0, 0x6D, 0x80, 0x18, 0xAD, 0x17, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0xB0, 0x6D, 0xB2, 0x6E, -0x80, 0x18, 0xA3, 0x17, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xAD, 0x17, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0xB0, 0x6D, 0xB1, 0x6E, -0x80, 0x18, 0xA3, 0x17, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xAD, 0x17, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, 0xA4, 0x72, 0x0C, 0x61, 0x90, 0x67, -0x80, 0x18, 0x59, 0x18, 0x01, 0x72, 0x04, 0x61, -0x90, 0x67, 0x80, 0x18, 0xB6, 0x18, 0x1F, 0x10, +0x80, 0x18, 0x63, 0x18, 0x01, 0x72, 0x04, 0x61, +0x90, 0x67, 0x80, 0x18, 0xC0, 0x18, 0x1F, 0x10, 0x90, 0x67, 0x00, 0x6D, 0x0D, 0x10, 0xA5, 0x72, -0x11, 0x61, 0x90, 0x67, 0x80, 0x18, 0x59, 0x18, +0x11, 0x61, 0x90, 0x67, 0x80, 0x18, 0x63, 0x18, 0x01, 0x72, 0x04, 0x61, 0x90, 0x67, 0x80, 0x18, -0xB6, 0x18, 0x18, 0x10, 0x90, 0x67, 0x01, 0x6D, -0x80, 0x18, 0xAB, 0x18, 0x90, 0x67, 0x80, 0x18, -0xB6, 0x18, 0x14, 0x10, 0x90, 0x67, 0x80, 0x18, -0x71, 0x18, 0x01, 0x72, 0x07, 0x61, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0xAB, 0x18, 0x90, 0x67, +0xC0, 0x18, 0x18, 0x10, 0x90, 0x67, 0x01, 0x6D, +0x80, 0x18, 0xB5, 0x18, 0x90, 0x67, 0x80, 0x18, +0xC0, 0x18, 0x14, 0x10, 0x90, 0x67, 0x80, 0x18, +0x7B, 0x18, 0x01, 0x72, 0x07, 0x61, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0xB5, 0x18, 0x90, 0x67, 0x00, 0x6D, 0x06, 0x10, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0xAB, 0x18, 0x90, 0x67, 0x01, 0x6D, -0x80, 0x18, 0xAB, 0x18, 0x05, 0x97, 0x04, 0x90, +0x80, 0x18, 0xB5, 0x18, 0x90, 0x67, 0x01, 0x6D, +0x80, 0x18, 0xB5, 0x18, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0xA3, 0xF4, 0x79, 0xA2, 0xFF, 0xF7, +0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0xA3, 0xF4, 0x75, 0xA2, 0xFF, 0xF7, 0x1F, 0x69, 0x04, 0xD4, 0xAC, 0xE9, 0x05, 0xD6, -0x0B, 0x23, 0xA3, 0xF4, 0x7A, 0xA2, 0x04, 0x23, -0xA3, 0xF4, 0x97, 0xA2, 0xA5, 0x6D, 0x07, 0x10, -0xA3, 0xF4, 0x97, 0xA2, 0xA4, 0x6D, 0x03, 0x10, -0xA3, 0xF4, 0x97, 0xA2, 0xA3, 0x6D, 0x30, 0xF0, -0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, 0x80, 0x18, -0xCD, 0x18, 0xA3, 0xF4, 0x5B, 0xA0, 0x7D, 0x22, -0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x94, 0x18, -0xA3, 0xF4, 0x59, 0xA0, 0x0B, 0x22, 0xA3, 0xF4, -0x5A, 0xA0, 0x04, 0x22, 0xA3, 0xF4, 0x97, 0xA0, -0xA5, 0x6D, 0x07, 0x10, 0xA3, 0xF4, 0x97, 0xA0, -0xA4, 0x6D, 0x03, 0x10, 0xA3, 0xF4, 0x97, 0xA0, -0xA3, 0x6D, 0x80, 0x18, 0xCD, 0x18, 0x30, 0xF0, -0x20, 0x6A, 0x49, 0xF4, 0x44, 0xA2, 0x01, 0x68, -0x5D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x4C, 0x9A, 0x60, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x0B, 0x23, 0xA3, 0xF4, 0x76, 0xA2, 0x04, 0x23, +0xA3, 0xF4, 0x93, 0xA2, 0xA5, 0x6D, 0x07, 0x10, +0xA3, 0xF4, 0x93, 0xA2, 0xA4, 0x6D, 0x03, 0x10, +0xA3, 0xF4, 0x93, 0xA2, 0xA3, 0x6D, 0x30, 0xF0, +0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, 0x80, 0x18, +0xD7, 0x18, 0xA3, 0xF4, 0x57, 0xA0, 0x7D, 0x22, +0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x9E, 0x18, +0xA3, 0xF4, 0x55, 0xA0, 0x0B, 0x22, 0xA3, 0xF4, +0x56, 0xA0, 0x04, 0x22, 0xA3, 0xF4, 0x93, 0xA0, +0xA5, 0x6D, 0x07, 0x10, 0xA3, 0xF4, 0x93, 0xA0, +0xA4, 0x6D, 0x03, 0x10, 0xA3, 0xF4, 0x93, 0xA0, +0xA3, 0x6D, 0x80, 0x18, 0xD7, 0x18, 0x30, 0xF0, +0x20, 0x6A, 0x69, 0xF4, 0x40, 0xA2, 0x01, 0x68, +0x5D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, +0x5C, 0x9A, 0x60, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0x58, 0x2A, 0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, -0x94, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0xA3, 0xF4, 0x79, 0xA2, 0x0B, 0x23, -0xA3, 0xF4, 0x7A, 0xA2, 0x04, 0x23, 0xA3, 0xF4, -0x97, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0xA3, 0xF4, -0x97, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0xA3, 0xF4, -0x97, 0xA2, 0xA3, 0x6D, 0x80, 0x18, 0xCD, 0x18, +0x9E, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0xA3, 0xF4, 0x75, 0xA2, 0x0B, 0x23, +0xA3, 0xF4, 0x76, 0xA2, 0x04, 0x23, 0xA3, 0xF4, +0x93, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0xA3, 0xF4, +0x93, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0xA3, 0xF4, +0x93, 0xA2, 0xA3, 0x6D, 0x80, 0x18, 0xD7, 0x18, 0xDC, 0x17, 0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, -0x94, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0xA3, 0xF4, 0x79, 0xA2, 0x0B, 0x23, -0xA3, 0xF4, 0x7A, 0xA2, 0x04, 0x23, 0xA3, 0xF4, -0x97, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0xA3, 0xF4, -0x97, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0xA3, 0xF4, -0x97, 0xA2, 0xA3, 0x6D, 0x80, 0x18, 0xCD, 0x18, -0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x94, 0x18, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xA3, 0xF4, 0x79, 0xA2, 0x0B, 0x23, 0xA3, 0xF4, -0x7A, 0xA2, 0x04, 0x23, 0xA3, 0xF4, 0x97, 0xA2, -0xA5, 0x6D, 0x07, 0x10, 0xA3, 0xF4, 0x97, 0xA2, -0xA4, 0x6D, 0x03, 0x10, 0xA3, 0xF4, 0x97, 0xA2, -0xA3, 0x6D, 0x80, 0x18, 0xCD, 0x18, 0x01, 0x48, +0x9E, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0xA3, 0xF4, 0x75, 0xA2, 0x0B, 0x23, +0xA3, 0xF4, 0x76, 0xA2, 0x04, 0x23, 0xA3, 0xF4, +0x93, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0xA3, 0xF4, +0x93, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0xA3, 0xF4, +0x93, 0xA2, 0xA3, 0x6D, 0x80, 0x18, 0xD7, 0x18, +0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x9E, 0x18, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xA3, 0xF4, 0x75, 0xA2, 0x0B, 0x23, 0xA3, 0xF4, +0x76, 0xA2, 0x04, 0x23, 0xA3, 0xF4, 0x93, 0xA2, +0xA5, 0x6D, 0x07, 0x10, 0xA3, 0xF4, 0x93, 0xA2, +0xA4, 0x6D, 0x03, 0x10, 0xA3, 0xF4, 0x93, 0xA2, +0xA3, 0x6D, 0x80, 0x18, 0xD7, 0x18, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x43, 0xE8, 0xC4, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x29, 0xF4, 0x1F, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF4, 0x1B, 0x4C, 0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x85, 0xF7, 0x08, 0x48, 0xC0, 0xF0, 0x41, 0xA0, +0xA5, 0xF7, 0x08, 0x48, 0xC0, 0xF0, 0x41, 0xA0, 0x7F, 0x6B, 0xFF, 0x69, 0x4C, 0xEB, 0xC0, 0xF0, 0x42, 0xA0, 0x2C, 0xEC, 0x2C, 0xEB, 0x01, 0x74, 0x04, 0xD3, 0x05, 0xD2, 0x5B, 0x60, 0xC0, 0xF0, @@ -7246,10 +7274,10 @@ u8 array_mp_8822c_fw_ap[] = { 0x2C, 0xEA, 0x54, 0x22, 0xC0, 0xF0, 0xA0, 0xA0, 0x01, 0x6A, 0x0F, 0x6B, 0xBA, 0x35, 0x6C, 0xEC, 0x4E, 0xED, 0x4C, 0xED, 0x2C, 0xEC, 0x80, 0x18, -0xAB, 0x18, 0xC0, 0xF0, 0xA0, 0xA0, 0xC0, 0xF0, +0xB5, 0x18, 0xC0, 0xF0, 0xA0, 0xA0, 0xC0, 0xF0, 0x80, 0xA0, 0x0F, 0x6B, 0x01, 0x6A, 0xBA, 0x35, 0x6C, 0xEC, 0x4C, 0xED, 0x2C, 0xEC, 0x2C, 0xED, -0x80, 0x18, 0xAB, 0x18, 0xC0, 0xF0, 0x60, 0xA0, +0x80, 0x18, 0xB5, 0x18, 0xC0, 0xF0, 0x60, 0xA0, 0x20, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x25, 0x22, 0x04, 0x93, 0x80, 0x6A, 0x4B, 0xEA, 0x74, 0x36, 0xC0, 0xF0, 0x61, 0xA0, 0x6C, 0xEA, 0x2C, 0xEA, @@ -7260,7 +7288,7 @@ u8 array_mp_8822c_fw_ap[] = { 0xC0, 0xF0, 0xA0, 0xA0, 0xC0, 0xF0, 0x80, 0xA0, 0x01, 0x6B, 0x0F, 0x6A, 0xBA, 0x35, 0x4C, 0xEC, 0x6E, 0xED, 0x2C, 0xEC, 0x6C, 0xED, 0x80, 0x18, -0xAB, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF0, +0xB5, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF0, 0x68, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0x93, 0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, 0x59, 0x4C, 0x00, 0x6D, @@ -7271,16 +7299,16 @@ u8 array_mp_8822c_fw_ap[] = { 0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF0, 0x88, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF0, 0x88, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x1D, 0x22, 0x10, 0x6A, 0x8C, 0xEA, -0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, 0x86, 0x19, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, 0x90, 0x19, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xC0, 0xF0, 0x81, 0xA2, 0x80, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0xC0, 0xF0, 0xA0, 0xA2, 0x0F, 0x6B, 0x01, 0x6A, 0xAC, 0xEB, 0xBA, 0x35, 0x4E, 0xED, 0x6C, 0xEC, -0x4C, 0xED, 0x80, 0x18, 0xAB, 0x18, 0x05, 0x97, +0x4C, 0xED, 0x80, 0x18, 0xB5, 0x18, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0x6C, 0x9B, 0xFF, 0xF7, 0x1F, 0x6A, @@ -7294,7 +7322,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x0C, 0xD6, 0x8C, 0xE8, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x4C, 0x9A, 0x41, 0xE0, 0xC0, 0xD8, 0x1A, 0x10, 0x01, 0x6D, 0x90, 0x67, -0xAB, 0xED, 0x80, 0x18, 0xA5, 0x19, 0x04, 0xD2, +0xAB, 0xED, 0x80, 0x18, 0xAF, 0x19, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, 0x40, 0xEA, 0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, 0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, @@ -7304,27 +7332,27 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0xEF, 0x00, 0x65, 0x01, 0x74, 0x0D, 0x60, 0x06, 0x24, 0x02, 0x74, 0x10, 0x60, 0x03, 0x74, 0x00, 0x6A, 0x1C, 0x61, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA8, 0x35, 0xA3, 0xF2, 0x58, 0x9A, +0x20, 0x6A, 0xA8, 0x35, 0xA3, 0xF2, 0x48, 0x9A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA8, 0x35, -0xA3, 0xF2, 0x5C, 0x9A, 0x05, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF2, 0x40, 0x9A, 0xA8, 0x35, +0xA3, 0xF2, 0x4C, 0x9A, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF2, 0x50, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF2, 0x44, 0x9A, 0xA8, 0x35, +0x20, 0x6A, 0xA3, 0xF2, 0x54, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF1, 0x00, 0x4A, 0x88, 0x34, 0x91, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x60, 0x9A, +0xA9, 0xF1, 0x00, 0x4A, 0x88, 0x34, 0x91, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0xA0, 0x35, -0xCC, 0xEB, 0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF1, -0xC0, 0x9E, 0xC0, 0xF3, 0x44, 0x9A, 0x80, 0xAC, +0xCC, 0xEB, 0x30, 0xF0, 0x20, 0x6E, 0x03, 0xF1, +0xD4, 0x9E, 0xC0, 0xF3, 0x44, 0x9A, 0x80, 0xAC, 0xAD, 0xEB, 0x01, 0x6D, 0xAB, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6B, 0x8C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, 0x81, 0x46, 0x06, 0x67, 0xAC, 0xEA, 0x06, 0x2C, -0x83, 0x67, 0xA2, 0x67, 0x80, 0x18, 0xCD, 0x19, +0x83, 0x67, 0xA2, 0x67, 0x80, 0x18, 0xD7, 0x19, 0x02, 0x67, 0x0D, 0x10, 0x83, 0x67, 0xA2, 0x67, -0x80, 0x18, 0xCD, 0x19, 0x22, 0x67, 0x30, 0xF0, +0x80, 0x18, 0xD7, 0x19, 0x22, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x90, 0x67, 0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, @@ -7333,12 +7361,12 @@ u8 array_mp_8822c_fw_ap[] = { 0xFF, 0xF7, 0x1F, 0x69, 0x01, 0x4A, 0x0C, 0xD6, 0x0D, 0xD7, 0x8C, 0xE8, 0xAC, 0xE9, 0x04, 0x2A, 0x90, 0x67, 0xB1, 0x67, 0xC7, 0x67, 0x15, 0x10, -0xB1, 0x67, 0x90, 0x67, 0x80, 0x18, 0xCD, 0x19, +0xB1, 0x67, 0x90, 0x67, 0x80, 0x18, 0xD7, 0x19, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x94, 0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x0D, 0x96, 0x90, 0x67, 0xB1, 0x67, 0xC4, 0xEA, 0x0C, 0x92, 0x4C, 0xEE, 0x4F, 0xEB, 0x04, 0x92, 0x4C, 0xEB, -0x6D, 0xEE, 0x80, 0x18, 0xE0, 0x19, 0x30, 0xF0, +0x6D, 0xEE, 0x80, 0x18, 0xEA, 0x19, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, @@ -7375,7 +7403,7 @@ u8 array_mp_8822c_fw_ap[] = { 0xC2, 0xF5, 0x6C, 0x9B, 0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x03, 0xF0, 0x08, 0x6B, +0xA5, 0xF7, 0x08, 0x4A, 0x03, 0xF0, 0x08, 0x6B, 0xE3, 0xF1, 0x78, 0xDA, 0x05, 0xF1, 0x00, 0x4B, 0xE3, 0xF1, 0x7C, 0xDA, 0x02, 0xF1, 0x00, 0x4B, 0x03, 0xF2, 0x60, 0xDA, 0x00, 0xF1, 0x00, 0x4B, @@ -7401,38 +7429,38 @@ u8 array_mp_8822c_fw_ap[] = { 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, 0x05, 0x96, 0x22, 0xF7, -0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF4, -0x08, 0x4C, 0x80, 0x18, 0x05, 0x56, 0x0C, 0x93, +0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x69, 0xF4, +0x08, 0x4C, 0x80, 0x18, 0x5C, 0x56, 0x0C, 0x93, 0x6C, 0xEA, 0x0D, 0x93, 0x6E, 0xEA, 0x03, 0x22, 0x40, 0xA8, 0x23, 0xEA, 0xE3, 0x61, 0x40, 0xA8, 0x09, 0x97, 0x07, 0x90, 0x23, 0xEA, 0x08, 0x91, 0x58, 0x67, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF2, 0x70, 0x9A, 0x7F, 0x6A, 0xFD, 0x67, +0xC3, 0xF2, 0x60, 0x9A, 0x7F, 0x6A, 0xFD, 0x67, 0x80, 0xA3, 0x01, 0x6D, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x44, 0x9A, 0xD2, 0xA7, 0x02, 0x6B, 0x80, 0xA2, 0x6B, 0xEB, 0xCC, 0xEB, 0xAC, 0xEC, 0x8D, 0xEB, 0x72, 0xC7, 0x02, 0x6B, 0x70, 0xC7, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0x78, 0x9B, 0xAF, 0xCF, 0xFF, 0x6A, +0xC3, 0xF2, 0x68, 0x9B, 0xAF, 0xCF, 0xFF, 0x6A, 0xA0, 0xAB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF7, -0xF4, 0x9B, 0x4C, 0xED, 0xB4, 0x35, 0xF5, 0xE5, +0xF8, 0x9B, 0x4C, 0xED, 0xB4, 0x35, 0xF5, 0xE5, 0x60, 0xA5, 0x40, 0x6E, 0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0x7C, 0x9B, 0xA0, 0xAB, 0x4C, 0xED, +0xC3, 0xF2, 0x6C, 0x9B, 0xA0, 0xAB, 0x4C, 0xED, 0xB4, 0x35, 0xF5, 0xE5, 0x60, 0xA5, 0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, 0x80, 0x18, -0x6E, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0xA7, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF6, 0xA8, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x62, 0xF6, 0x8C, 0x9C, 0x60, 0x9D, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x8C, 0xEB, +0x62, 0xF6, 0xAC, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x62, 0xF6, 0x90, 0x9C, 0x60, 0x9D, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x8C, 0xEB, 0xE2, 0xF5, 0x64, 0xDA, 0x60, 0x9D, 0x8C, 0xEB, 0xE2, 0xF5, 0x70, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x58, 0x9A, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x4C, 0x9A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x50, 0x9A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, 0x82, 0x46, 0x26, 0x67, 0x40, 0xEA, 0x04, 0xD2, @@ -7445,7 +7473,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x06, 0x93, 0x60, 0x34, 0x4D, 0xEC, 0xE7, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x70, 0x9A, 0x91, 0xE5, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0x68, 0xF5, 0x6C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x88, 0xF5, 0x6C, 0x9B, 0x29, 0xE2, 0x43, 0xEB, 0x02, 0x60, 0x6F, 0xEB, 0x69, 0xE2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, @@ -7460,11 +7488,11 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0xF4, 0x4C, 0x9A, 0x85, 0x67, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xA3, 0xF1, 0x9C, 0x9C, 0x40, 0x9B, +0x20, 0x6A, 0xC3, 0xF1, 0x70, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xA3, 0xF1, 0x8C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF3, 0x90, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0xC3, 0xF1, 0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x63, 0xF3, 0x80, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x6B, 0x8C, 0xEB, 0x4C, 0xED, 0x8E, 0x34, 0x42, 0xF4, 0x10, 0x4C, 0x36, 0x25, 0x1F, 0xF7, @@ -12186,11 +12214,6 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x06, 0xD4, 0x09, 0xD7, 0x07, 0xD5, 0x08, 0xD6, 0x06, 0x04, 0x40, 0xEA, @@ -12229,53 +12252,53 @@ u8 array_mp_8822c_fw_ap[] = { 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x85, 0x67, 0xA6, 0x67, 0xC7, 0x67, 0x00, 0x18, -0x25, 0xC7, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x32, 0xC7, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0xD2, 0x04, 0x95, -0x30, 0xF0, 0x20, 0x69, 0x85, 0xF7, 0x08, 0x49, +0x30, 0xF0, 0x20, 0x69, 0xA5, 0xF7, 0x08, 0x49, 0xA8, 0x34, 0x31, 0xE4, 0x05, 0xD4, 0x05, 0x90, -0x22, 0xF5, 0x16, 0x4A, 0x48, 0x32, 0x29, 0xE2, -0xCA, 0xF4, 0xDE, 0xA0, 0x64, 0xA2, 0x01, 0x6A, -0x4C, 0xEE, 0x4C, 0xEB, 0xC4, 0x36, 0xCA, 0xF4, -0xFD, 0xA4, 0xD9, 0xE3, 0xCA, 0xF4, 0x7F, 0xA0, +0x22, 0xF5, 0x18, 0x4A, 0x48, 0x32, 0x29, 0xE2, +0xEA, 0xF4, 0xC6, 0xA0, 0x64, 0xA2, 0x01, 0x6A, +0x4C, 0xEE, 0x4C, 0xEB, 0xC4, 0x36, 0xEA, 0xF4, +0xE5, 0xA4, 0xD9, 0xE3, 0xEA, 0xF4, 0x67, 0xA0, 0x4C, 0xEF, 0xF0, 0x37, 0x4C, 0xEB, 0x74, 0x33, 0x6D, 0xE7, 0x07, 0xD3, 0x04, 0x93, 0x85, 0x67, -0x65, 0xF2, 0x14, 0x4C, 0x64, 0x32, 0x29, 0xE2, -0x84, 0x34, 0x31, 0xE4, 0xEA, 0xF4, 0x51, 0xA2, +0x65, 0xF2, 0x18, 0x4C, 0x64, 0x32, 0x29, 0xE2, +0x84, 0x34, 0x31, 0xE4, 0xEA, 0xF4, 0x59, 0xA2, 0xA8, 0xA4, 0x03, 0x6C, 0x8C, 0xEA, 0x8C, 0xED, 0x40, 0x32, 0xA0, 0x35, 0x48, 0x32, 0x49, 0xE5, 0x30, 0xF0, 0x20, 0x68, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xD6, 0xC0, 0xF3, 0x64, 0x98, -0x02, 0xF7, 0xDC, 0x9A, 0x01, 0x6D, 0xE3, 0xF2, +0x22, 0xF7, 0xC0, 0x9A, 0x01, 0x6D, 0xE3, 0xF2, 0x1D, 0x4C, 0xAB, 0xED, 0x40, 0xEB, 0x08, 0x94, 0x07, 0x96, 0x06, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x8D, 0xEE, 0x6D, 0xEE, 0xE3, 0xF3, 0x10, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0xEA, 0x04, 0x92, -0x05, 0x94, 0x01, 0x6D, 0x22, 0xF5, 0x1C, 0x4A, -0xEA, 0xF4, 0xD6, 0xAC, 0x48, 0x32, 0x29, 0xE2, +0x05, 0x94, 0x01, 0x6D, 0x22, 0xF5, 0x1E, 0x4A, +0xEA, 0xF4, 0xDE, 0xAC, 0x48, 0x32, 0x29, 0xE2, 0x62, 0xAA, 0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x36, 0x6D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x04, 0x92, 0x05, 0x95, -0xE3, 0xF3, 0x0C, 0x6C, 0x22, 0xF5, 0x1D, 0x4A, -0xEA, 0xF4, 0xDA, 0xAD, 0x48, 0x32, 0x29, 0xE2, +0xE3, 0xF3, 0x0C, 0x6C, 0x22, 0xF5, 0x1F, 0x4A, +0x0A, 0xF5, 0xC2, 0xAD, 0x48, 0x32, 0x29, 0xE2, 0x62, 0xAA, 0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x6A, 0xF7, 0xD8, 0xA1, 0xE2, 0xF5, +0x44, 0x98, 0x8A, 0xF7, 0xC0, 0xA1, 0xE2, 0xF5, 0xB0, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x00, 0x6B, 0xC3, 0xF4, 0x7B, 0xC2, -0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x03, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF4, 0x03, 0x4B, 0x03, 0xF5, 0x68, 0xDA, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF7, 0x70, 0x9B, 0x54, 0x34, +0x20, 0x6B, 0x42, 0xF7, 0x74, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x71, 0xE4, 0xA0, 0xA4, 0xF8, 0x6B, 0x80, 0x68, 0xAC, 0xEB, 0x60, 0xC4, 0xFF, 0x6B, 0x6C, 0xEA, 0x4E, 0xE8, 0xF0, 0x28, 0x80, 0x18, -0x61, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF4, -0x1A, 0xC2, 0x80, 0x18, 0xED, 0x48, 0x80, 0x18, -0x67, 0x45, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x63, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF4, +0x1A, 0xC2, 0x80, 0x18, 0xFE, 0x48, 0x80, 0x18, +0x69, 0x45, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0xD1, 0x08, 0xD0, 0x0A, 0xD4, 0x44, 0x67, 0x82, 0x10, 0x25, 0x73, 0x04, 0x60, 0x60, 0xA5, 0x60, 0xC2, @@ -12284,7 +12307,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x03, 0x60, 0x58, 0x73, 0x7D, 0x67, 0x1A, 0x61, 0x82, 0x85, 0x60, 0xA6, 0x78, 0x6F, 0xEE, 0xEC, 0x30, 0xF0, 0x20, 0x6F, 0x72, 0x30, 0x23, 0xF4, -0x1C, 0x4F, 0xE1, 0xE0, 0x00, 0xA0, 0x01, 0x5C, +0x0C, 0x4F, 0xE1, 0xE0, 0x00, 0xA0, 0x01, 0x5C, 0x98, 0x67, 0x94, 0x34, 0x8D, 0xE8, 0x3D, 0x67, 0x00, 0xC1, 0x0F, 0x68, 0x6C, 0xE8, 0xFD, 0xE0, 0x60, 0xA7, 0x02, 0x4D, 0x8D, 0xEB, 0x61, 0xC1, @@ -12295,7 +12318,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x01, 0x5F, 0x18, 0x67, 0x14, 0x30, 0x18, 0x65, 0x0C, 0x6C, 0x07, 0x97, 0x0F, 0x68, 0x30, 0xF0, 0x20, 0x69, 0xE7, 0xEC, 0x0C, 0xEF, 0x23, 0xF4, -0x1C, 0x49, 0x3D, 0xE7, 0xE0, 0xA7, 0x06, 0x90, +0x0C, 0x49, 0x3D, 0xE7, 0xE0, 0xA7, 0x06, 0x90, 0x38, 0x67, 0x2D, 0xEF, 0xFC, 0x4C, 0xE0, 0xC0, 0x01, 0x48, 0xE4, 0x44, 0x06, 0xD0, 0xED, 0x2F, 0x04, 0x4B, 0x02, 0x4D, 0x25, 0x10, 0x81, 0x85, @@ -12304,7 +12327,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x98, 0x67, 0x01, 0x5C, 0xF8, 0x67, 0xF4, 0x37, 0x07, 0xD1, 0x1F, 0x65, 0x1C, 0x6C, 0x07, 0x97, 0x0F, 0x68, 0x30, 0xF0, 0x20, 0x69, 0xE6, 0xEC, -0x0C, 0xEF, 0x23, 0xF4, 0x1C, 0x49, 0x3D, 0xE7, +0x0C, 0xEF, 0x23, 0xF4, 0x0C, 0x49, 0x3D, 0xE7, 0xE0, 0xA7, 0x06, 0x91, 0x18, 0x67, 0x0D, 0xEF, 0xFC, 0x4C, 0xE0, 0xC1, 0x01, 0x49, 0xE4, 0x44, 0x06, 0xD1, 0xED, 0x2F, 0x08, 0x4B, 0x01, 0x4D, @@ -12314,16 +12337,16 @@ u8 array_mp_8822c_fw_ap[] = { 0x1B, 0x2B, 0x0A, 0x94, 0x01, 0x24, 0x60, 0xC2, 0x0A, 0x97, 0x09, 0x91, 0x08, 0x90, 0xEB, 0xE2, 0x05, 0x63, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x01, 0x6B, 0x85, 0xF7, 0x08, 0x4A, 0x6B, 0xEB, -0x07, 0xF3, 0x6C, 0xC2, 0x07, 0xF3, 0x6D, 0xC2, -0x07, 0xF3, 0x6E, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x01, 0x6B, 0xA5, 0xF7, 0x08, 0x4A, 0x6B, 0xEB, +0x07, 0xF4, 0x74, 0xC2, 0x07, 0xF4, 0x75, 0xC2, +0x07, 0xF4, 0x76, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x00, 0xF0, 0x12, 0x02, 0x00, 0xF0, 0x1E, 0x03, 0x00, 0x6D, 0xA0, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFB, 0x61, 0x61, 0xA4, 0x40, 0xA4, 0x02, 0x5B, 0x29, 0x60, 0x80, 0x6C, 0x8B, 0xEC, 0x7C, 0x33, 0x4D, 0xEC, 0x6D, 0xE2, -0xBD, 0x67, 0x92, 0xC5, 0x61, 0xF1, 0x13, 0x4B, -0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF7, 0x08, 0x4C, +0xBD, 0x67, 0x92, 0xC5, 0x61, 0xF1, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF7, 0x08, 0x4C, 0x6C, 0x33, 0x6D, 0xE4, 0x04, 0x4B, 0x00, 0xF0, 0x13, 0x02, 0x00, 0xF0, 0x1B, 0x04, 0xA0, 0xAB, 0xA0, 0xC2, 0xA2, 0x35, 0xA1, 0xC2, 0x02, 0x4A, @@ -12333,16 +12356,16 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x68, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0xE3, 0xF4, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xE3, 0xF4, 0x64, 0xC2, 0x69, 0xA4, 0xC3, 0xF4, 0x79, 0xC2, 0x6A, 0xA4, 0xE3, 0xF4, 0x63, 0xC2, 0xAB, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, 0xE3, 0xF4, 0x6D, 0xC2, 0x6B, 0xA4, 0x72, 0x33, 0xE3, 0xF4, 0x6A, 0xC2, 0x8E, 0xA4, 0x01, 0x6B, 0x8C, 0xEB, 0xC3, 0xF4, -0x7B, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x7B, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF4, 0x03, 0x4B, 0x03, 0xF5, 0x68, 0xDA, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0x60, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0xE3, 0xF4, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xE3, 0xF4, 0x64, 0xC2, 0x61, 0xA4, 0xC3, 0xF4, 0x79, 0xC2, 0x62, 0xA4, 0xE3, 0xF4, 0x63, 0xC2, 0xA3, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, 0xE3, 0xF4, 0x6D, 0xC2, @@ -12350,12 +12373,12 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x0E, 0x72, 0x03, 0x60, 0x11, 0x72, 0x05, 0x60, 0x08, 0x10, 0x85, 0x67, -0x80, 0x18, 0x75, 0x14, 0x19, 0x10, 0x85, 0x67, +0x80, 0x18, 0x7F, 0x14, 0x19, 0x10, 0x85, 0x67, 0x80, 0x18, 0x1B, 0x41, 0x15, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x78, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x42, 0xF7, 0x94, 0x9C, 0x40, 0x9B, +0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x42, 0xF7, 0x98, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, +0xA5, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0xFF, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, @@ -12364,67 +12387,67 @@ u8 array_mp_8822c_fw_ap[] = { 0x02, 0x04, 0x00, 0x6D, 0xA0, 0xC2, 0x01, 0x4A, 0x8A, 0xEA, 0xFB, 0x61, 0x01, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x04, 0x04, 0x00, 0xF0, 0x11, 0x05, -0x80, 0x18, 0x5F, 0x47, 0x7D, 0x67, 0x50, 0xA3, +0x80, 0x18, 0x60, 0x47, 0x7D, 0x67, 0x50, 0xA3, 0x01, 0x6C, 0x96, 0xC3, 0x57, 0xC3, 0x51, 0xA3, 0x58, 0xC3, 0x26, 0x6A, 0x54, 0xC3, 0x03, 0x6A, 0x51, 0xCB, 0x0A, 0x95, 0x01, 0x6A, 0x4C, 0xED, 0x1E, 0x25, 0x1E, 0x30, 0xE0, 0xF0, 0x13, 0x20, 0x3E, 0x31, 0xE0, 0xF0, 0x10, 0x21, 0xBD, 0x67, -0x56, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x89, 0xF0, 0x78, 0x9A, 0x62, 0x34, +0x56, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0xA9, 0xF0, 0x60, 0x9A, 0x62, 0x34, 0x77, 0xC5, 0x00, 0xF6, 0x62, 0x33, 0x7A, 0xC5, 0x0D, 0x6B, 0x74, 0xC5, 0x05, 0x6B, 0x98, 0xC5, 0x71, 0xCD, 0x82, 0x34, 0x00, 0x6B, 0x99, 0xC5, -0x89, 0xF0, 0x78, 0xDA, 0xD8, 0x10, 0x0A, 0x93, +0xA9, 0xF0, 0x60, 0xDA, 0xD8, 0x10, 0x0A, 0x93, 0x02, 0x6C, 0x8C, 0xEB, 0x31, 0x23, 0xDD, 0x67, -0x1E, 0x32, 0x96, 0xC6, 0x17, 0x2A, 0xC4, 0xF4, -0x6C, 0x40, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x1E, 0x32, 0x96, 0xC6, 0x17, 0x2A, 0xD4, 0xF4, +0x60, 0x40, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x64, 0x33, 0x4D, 0xE3, 0x82, 0xAB, -0x44, 0xF4, 0x0C, 0x48, 0x04, 0x30, 0x49, 0xE0, +0x44, 0xF4, 0x10, 0x48, 0x04, 0x30, 0x49, 0xE0, 0x97, 0xC6, 0x82, 0x34, 0x98, 0xC6, 0x82, 0xAA, 0xA2, 0xCB, 0xA2, 0xCA, 0x99, 0xC6, 0x82, 0x34, 0x9A, 0xC6, 0x04, 0x10, 0x16, 0x6A, 0x4B, 0xEA, 0x7D, 0x67, 0x57, 0xC3, 0x3E, 0x32, 0x4E, 0x2A, -0xC4, 0xF4, 0x6C, 0x41, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0x33, 0x85, 0xF7, 0x08, 0x4A, 0x4D, 0xE3, -0x82, 0xAB, 0xBD, 0x67, 0x44, 0xF4, 0x0C, 0x49, +0xD4, 0xF4, 0x60, 0x41, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0x33, 0xA5, 0xF7, 0x08, 0x4A, 0x4D, 0xE3, +0x82, 0xAB, 0xBD, 0x67, 0x44, 0xF4, 0x10, 0x49, 0x9B, 0xC5, 0x82, 0x34, 0x9C, 0xC5, 0x34, 0x10, 0x0A, 0x95, 0x08, 0x6A, 0xAC, 0xEA, 0x43, 0x22, 0xDD, 0x67, 0x1E, 0x32, 0x96, 0xC6, 0x17, 0x2A, -0xC4, 0xF4, 0x8C, 0x40, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x84, 0x34, 0x51, 0xE4, -0xA2, 0xAC, 0x44, 0xF5, 0x0C, 0x48, 0x04, 0x30, +0xD4, 0xF4, 0x80, 0x40, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x84, 0x34, 0x51, 0xE4, +0xA2, 0xAC, 0x44, 0xF5, 0x10, 0x48, 0x04, 0x30, 0x49, 0xE0, 0xB7, 0xC6, 0xA2, 0x35, 0xB8, 0xC6, 0xA2, 0xAA, 0x62, 0xCC, 0x62, 0xCA, 0xB9, 0xC6, 0xA2, 0x35, 0xBA, 0xC6, 0x04, 0x10, 0x16, 0x6A, 0x4B, 0xEA, 0x7D, 0x67, 0x57, 0xC3, 0x3E, 0x32, -0x19, 0x2A, 0xC4, 0xF4, 0x6C, 0x41, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0x33, 0x85, 0xF7, 0x08, 0x4A, +0x19, 0x2A, 0xD4, 0xF4, 0x60, 0x41, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x33, 0xA5, 0xF7, 0x08, 0x4A, 0x4D, 0xE3, 0x82, 0xAB, 0xBD, 0x67, 0x44, 0xF5, -0x0C, 0x49, 0x9B, 0xC5, 0x82, 0x34, 0x9C, 0xC5, +0x10, 0x49, 0x9B, 0xC5, 0x82, 0x34, 0x9C, 0xC5, 0x24, 0x31, 0x49, 0xE1, 0x82, 0xAA, 0x9D, 0xC5, 0x82, 0x34, 0x9E, 0xC5, 0x00, 0x6C, 0x82, 0xCB, 0x82, 0xCA, 0x04, 0x10, 0x16, 0x6A, 0x4B, 0xEA, 0xDD, 0x67, 0x5B, 0xC6, 0x0D, 0x6A, 0x7D, 0x67, 0x54, 0xC3, 0x09, 0x6A, 0x56, 0x10, 0x0A, 0x94, -0x56, 0x2C, 0x1E, 0x32, 0x24, 0x2A, 0x44, 0xF3, -0x6C, 0x40, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x56, 0x2C, 0x1E, 0x32, 0x24, 0x2A, 0x54, 0xF3, +0x60, 0x40, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x64, 0x33, 0x4D, 0xE3, 0x80, 0xAB, 0xBD, 0x67, 0x16, 0xC5, 0x97, 0xC5, 0x82, 0x34, -0x98, 0xC5, 0xC4, 0xF3, 0x8C, 0x40, 0x84, 0x34, +0x98, 0xC5, 0xD4, 0xF3, 0x80, 0x40, 0x84, 0x34, 0x49, 0xE4, 0x80, 0xAA, 0x14, 0x30, 0xC7, 0x45, 0x99, 0xC5, 0x82, 0x34, 0x9A, 0xC5, 0x30, 0xF0, -0x20, 0x6C, 0x42, 0xF7, 0x98, 0x9C, 0x21, 0x4E, +0x20, 0x6C, 0x42, 0xF7, 0x9C, 0x9C, 0x21, 0x4E, 0xC0, 0xAE, 0x81, 0xE0, 0x80, 0xA0, 0xC0, 0xCB, 0xC0, 0xCA, 0x9B, 0xC5, 0x02, 0x10, 0x9D, 0x67, -0x16, 0xC4, 0x3E, 0x32, 0x24, 0x2A, 0x44, 0xF3, -0x6C, 0x41, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x16, 0xC4, 0x3E, 0x32, 0x24, 0x2A, 0x54, 0xF3, +0x60, 0x41, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x64, 0x33, 0x4D, 0xE3, 0x80, 0xAB, 0xBD, 0x67, 0x3C, 0xC5, 0x9D, 0xC5, 0x82, 0x34, -0x9E, 0xC5, 0xC4, 0xF3, 0x8C, 0x41, 0x84, 0x34, +0x9E, 0xC5, 0xD4, 0xF3, 0x80, 0x41, 0x84, 0x34, 0x49, 0xE4, 0x80, 0xAA, 0x34, 0x31, 0x9F, 0xC5, 0x82, 0x34, 0x20, 0xF0, 0x80, 0xC5, 0x30, 0xF0, -0x20, 0x6C, 0x42, 0xF7, 0x98, 0x9C, 0x85, 0xE1, +0x20, 0x6C, 0x42, 0xF7, 0x9C, 0x9C, 0x85, 0xE1, 0x80, 0xA1, 0x20, 0xF0, 0x81, 0xC5, 0x00, 0x6C, 0x80, 0xCB, 0x80, 0xCA, 0x02, 0x10, 0x5D, 0x67, 0x3C, 0xC2, 0x04, 0x6A, 0x7D, 0x67, 0x54, 0xC3, @@ -12433,16 +12456,16 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x05, 0x04, 0x40, 0xEA, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0x00, 0x6B, 0x10, 0xD4, -0x01, 0x68, 0x43, 0x67, 0xA0, 0xA4, 0x0E, 0x25, +0x0E, 0xD1, 0x0D, 0xD0, 0x00, 0x6A, 0x10, 0xD4, +0x01, 0x68, 0x62, 0x67, 0xA0, 0xA4, 0x0E, 0x25, 0xFF, 0x6D, 0x01, 0x4B, 0xAC, 0xEB, 0x01, 0x4A, 0x0B, 0x73, 0xAC, 0xEA, 0x03, 0x61, 0x01, 0x48, 0xAC, 0xE8, 0x00, 0x6B, 0x37, 0x72, 0x01, 0x4C, 0xF1, 0x61, 0x37, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x07, 0xF3, 0x90, 0xA3, +0xA5, 0xF7, 0x08, 0x4B, 0x07, 0xF4, 0x98, 0xA3, 0x0F, 0x5C, 0x01, 0x4C, 0x01, 0x61, 0x00, 0x6C, -0x07, 0xF3, 0x90, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x8D, 0xF2, 0x78, 0xA3, 0x0B, 0x6D, 0x2F, 0x40, +0x07, 0xF4, 0x98, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0xCD, 0xF3, 0x60, 0xA3, 0x0B, 0x6D, 0x2F, 0x40, 0x70, 0x33, 0x0A, 0xD3, 0x0A, 0x94, 0xFF, 0x6B, 0x6C, 0xE9, 0x6C, 0xEC, 0x0A, 0xD4, 0x01, 0x6C, 0x13, 0xE4, 0xB8, 0xEC, 0x12, 0xEC, 0x91, 0xE2, @@ -12467,63 +12490,63 @@ u8 array_mp_8822c_fw_ap[] = { 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF7, 0x5C, 0x9A, 0x8D, 0xF2, -0x78, 0x9B, 0x07, 0xD5, 0x08, 0xD6, 0x6C, 0xEA, +0x20, 0x6B, 0x62, 0xF7, 0x40, 0x9A, 0xCD, 0xF3, +0x60, 0x9B, 0x07, 0xD5, 0x08, 0xD6, 0x6C, 0xEA, 0x00, 0xF1, 0x00, 0x72, 0x09, 0xD7, 0x06, 0xD4, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x06, 0x95, -0x85, 0xF6, 0x04, 0x48, 0x90, 0x67, 0x07, 0x06, +0xA5, 0xF6, 0x04, 0x48, 0x90, 0x67, 0x07, 0x06, 0x80, 0x18, 0xAB, 0x40, 0x90, 0x67, 0x80, 0x18, 0xE3, 0x41, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x61, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0x61, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xA0, 0xA4, 0xE3, 0xF4, 0x6B, 0xC2, 0xC3, 0xF4, 0x70, 0x9A, 0x20, 0x6C, 0x8C, 0xEB, 0x08, 0x23, 0xE3, 0xF4, 0xCB, 0xA2, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF4, 0x10, 0x4C, 0x80, 0x18, +0x20, 0x6C, 0x43, 0xF4, 0x00, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xF3, 0x63, 0x19, 0x62, 0x18, 0xD1, 0x17, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x15, 0xD2, 0x40, 0xF0, 0x06, 0x03, 0x20, 0xF0, 0x1A, 0x02, 0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFB, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x8D, 0xF2, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xAD, 0xF3, 0x1C, 0x4B, 0x00, 0x68, 0x12, 0xD3, 0x14, 0xD0, 0x70, 0x10, 0x12, 0x92, 0x40, 0xA2, 0xFF, 0x72, 0x13, 0xD2, 0x0A, 0x61, 0x7D, 0x67, 0x09, 0xE3, 0x01, 0x6B, 0x6B, 0xEB, 0x20, 0xF0, 0x7A, 0xC2, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x65, 0x10, 0x13, 0x92, -0x30, 0x69, 0x9D, 0x67, 0x38, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x8A, 0xF0, 0x10, 0x4A, 0x0E, 0x03, +0x32, 0x69, 0x9D, 0x67, 0x38, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xAA, 0xF0, 0x18, 0x4A, 0x0E, 0x03, 0x0D, 0xE3, 0x04, 0x48, 0x12, 0xE9, 0x25, 0xE2, 0x47, 0x44, 0x45, 0x4A, 0x80, 0xA2, 0x82, 0xC3, -0x4A, 0xA9, 0x03, 0x6C, 0x43, 0xC3, 0x42, 0xA1, +0x4B, 0xA9, 0x03, 0x6C, 0x43, 0xC3, 0x42, 0xA1, 0x44, 0xC3, 0x47, 0xA1, 0x4A, 0x32, 0x8C, 0xEA, 0x45, 0xC3, 0xFF, 0x6B, 0x6C, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0xC3, 0xF4, +0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0xC3, 0xF4, 0xB0, 0x9B, 0xE7, 0xF7, 0x1D, 0x4C, 0xAC, 0xEC, 0x0E, 0x24, 0xC3, 0xF4, 0x74, 0x9B, 0x05, 0x5B, -0x0A, 0x61, 0xCA, 0xA9, 0xE2, 0xA1, 0x13, 0x95, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF4, 0x08, 0x4C, +0x0A, 0x61, 0xCB, 0xA9, 0xE2, 0xA1, 0x13, 0x95, +0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF4, 0x18, 0x4C, 0x04, 0xD2, 0x80, 0x18, 0x25, 0x42, 0x15, 0x92, -0x02, 0x6B, 0x6E, 0xEA, 0x21, 0x2A, 0x96, 0xA9, -0x0E, 0x03, 0x0D, 0xE3, 0x82, 0xC3, 0x96, 0xA9, -0x02, 0x48, 0x82, 0x34, 0x83, 0xC3, 0x56, 0xC9, +0x02, 0x6B, 0x6E, 0xEA, 0x21, 0x2A, 0x97, 0xA9, +0x0E, 0x03, 0x0D, 0xE3, 0x82, 0xC3, 0x97, 0xA9, +0x02, 0x48, 0x82, 0x34, 0x83, 0xC3, 0x57, 0xC9, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x90, 0x9A, +0xA5, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x90, 0x9A, 0x08, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x0C, 0x23, 0xC3, 0xF4, 0x54, 0x9A, 0x05, 0x5A, 0x08, 0x61, -0x13, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF4, -0x0C, 0x4C, 0x00, 0x6E, 0x80, 0x18, 0x25, 0x42, +0x13, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF4, +0x1C, 0x4C, 0x00, 0x6E, 0x80, 0x18, 0x25, 0x42, 0x14, 0x94, 0xFF, 0x6A, 0x01, 0x4C, 0x4C, 0xEC, 0x12, 0x92, 0x14, 0xD4, 0x01, 0x4A, 0x12, 0xD2, 0x14, 0x93, 0x15, 0x94, 0x83, 0xEB, 0x8C, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x90, 0x9A, 0x08, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x2D, 0x23, 0xC3, 0xF4, 0x54, 0x9A, 0x05, 0x5A, 0x29, 0x61, 0x5D, 0x67, 0x20, 0xF0, 0xBA, 0xA2, 0x20, 0xF0, 0xDB, 0xA2, 0x20, 0xF0, 0xFC, 0xA2, 0x20, 0xF0, 0x5D, 0xA2, 0x7D, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xD2, 0x20, 0xF0, -0x5E, 0xA3, 0xA3, 0xF4, 0x04, 0x4C, 0x05, 0xD2, +0x5E, 0xA3, 0x83, 0xF4, 0x14, 0x4C, 0x05, 0xD2, 0x20, 0xF0, 0x5F, 0xA3, 0x06, 0xD2, 0x40, 0xF0, 0x40, 0xA3, 0x07, 0xD2, 0x40, 0xF0, 0x41, 0xA3, 0x08, 0xD2, 0x40, 0xF0, 0x42, 0xA3, 0x09, 0xD2, @@ -12542,29 +12565,29 @@ u8 array_mp_8822c_fw_ap[] = { 0x49, 0xE3, 0x08, 0xD2, 0xB4, 0x32, 0x06, 0xD2, 0x06, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x06, 0xD3, 0x03, 0x6A, 0x78, 0x67, 0x6F, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x90, 0x9A, 0x07, 0xD3, 0x08, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x0B, 0x23, 0xC3, 0xF4, 0x54, 0x9A, 0x05, 0x5A, 0x07, 0x61, 0x08, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0xE3, 0xF4, 0x00, 0x4C, 0x80, 0x18, +0x20, 0x6C, 0xC3, 0xF4, 0x10, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x80, 0x18, 0xF5, 0x40, 0x00, 0x68, 0x06, 0x91, 0x4E, 0x10, 0x08, 0x94, 0x01, 0x6A, 0x44, 0xE9, 0x8C, 0xEA, 0x1C, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x4D, 0xE0, -0x07, 0xF3, 0x2C, 0xC3, 0xC3, 0xF4, 0x90, 0x9A, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x4D, 0xE0, +0x07, 0xF4, 0x34, 0xC3, 0xC3, 0xF4, 0x90, 0x9A, 0xFF, 0x6B, 0x01, 0x48, 0x6C, 0xE8, 0x07, 0xF7, 0x01, 0x4B, 0x8C, 0xEB, 0x0C, 0x23, 0xC3, 0xF4, 0x54, 0x9A, 0x05, 0x5A, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF5, 0x08, 0x4C, 0xB0, 0x67, +0x20, 0x6C, 0xE3, 0xF4, 0x18, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, 0x25, 0x42, 0x07, 0x92, 0x4A, 0xE8, 0x04, 0x60, 0x06, 0x92, 0x1F, 0x4A, 0x2E, 0xEA, 0x23, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x90, 0x9A, +0xA5, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x90, 0x9A, 0x08, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x12, 0x23, 0xC3, 0xF4, 0x74, 0x9A, 0x05, 0x5B, 0x0E, 0x61, -0x07, 0xF3, 0xCC, 0xA2, 0x07, 0xF3, 0xED, 0xA2, -0x07, 0xF3, 0x4E, 0xA2, 0x30, 0xF0, 0x20, 0x6C, -0x23, 0xF5, 0x08, 0x4C, 0xB0, 0x67, 0x04, 0xD2, +0x07, 0xF4, 0xD4, 0xA2, 0x07, 0xF4, 0xF5, 0xA2, +0x07, 0xF4, 0x56, 0xA2, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF5, 0x18, 0x4C, 0xB0, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x25, 0x42, 0x0D, 0x20, 0x07, 0x94, 0x00, 0x68, 0x80, 0x18, 0x44, 0x42, 0x80, 0x18, 0xF5, 0x40, 0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, @@ -12594,9 +12617,9 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0xF0, 0x48, 0xC4, 0x08, 0x6A, 0x20, 0xF0, 0x4A, 0xC4, 0x40, 0xA1, 0x20, 0xF0, 0x4B, 0xC4, 0x00, 0x6A, 0x0E, 0x10, 0x9D, 0x67, 0x55, 0xE4, -0xC0, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF7, -0x08, 0x4C, 0x91, 0xE2, 0xD1, 0xE4, 0x07, 0xF1, -0x88, 0xA4, 0x01, 0x4A, 0x20, 0xF0, 0x8C, 0xC5, +0xC0, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF7, +0x08, 0x4C, 0x91, 0xE2, 0xD1, 0xE4, 0x07, 0xF2, +0x90, 0xA4, 0x01, 0x4A, 0x20, 0xF0, 0x8C, 0xC5, 0xFF, 0x6C, 0x4C, 0xEC, 0x63, 0xEC, 0xEE, 0x61, 0x0A, 0x94, 0x0B, 0x95, 0x0C, 0x96, 0x0D, 0x97, 0x01, 0x48, 0x01, 0x49, 0x80, 0x18, 0x00, 0x40, @@ -12609,8 +12632,8 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0xF0, 0x4A, 0xC4, 0x40, 0xA1, 0x20, 0xF0, 0x4B, 0xC4, 0x00, 0x6A, 0x0E, 0x10, 0x9D, 0x67, 0x55, 0xE4, 0xC0, 0xA1, 0x30, 0xF0, 0x20, 0x6C, -0x85, 0xF7, 0x08, 0x4C, 0x91, 0xE2, 0xD1, 0xE4, -0x47, 0xF1, 0x9C, 0xA4, 0x01, 0x4A, 0x20, 0xF0, +0xA5, 0xF7, 0x08, 0x4C, 0x91, 0xE2, 0xD1, 0xE4, +0x67, 0xF2, 0x84, 0xA4, 0x01, 0x4A, 0x20, 0xF0, 0x8C, 0xC5, 0xFF, 0x6C, 0x4C, 0xEC, 0x63, 0xEC, 0xEE, 0x61, 0x0A, 0x94, 0x0B, 0x95, 0x0C, 0x96, 0x0D, 0x97, 0x01, 0x48, 0x01, 0x49, 0x80, 0x18, @@ -12621,29 +12644,29 @@ u8 array_mp_8822c_fw_ap[] = { 0x02, 0x6D, 0x81, 0xA4, 0xAC, 0xEB, 0x03, 0x23, 0x80, 0x18, 0xF7, 0x42, 0x3D, 0x10, 0x01, 0x74, 0x22, 0xA2, 0x04, 0xA2, 0x43, 0xA2, 0x07, 0x61, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF5, 0x10, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF5, 0x00, 0x4C, 0x80, 0x18, 0xE3, 0x41, 0x31, 0x10, 0x10, 0x30, 0x08, 0x74, 0x4D, 0xE8, 0x0E, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF5, 0x1C, 0x4C, 0x80, 0x18, -0xE3, 0x41, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x45, 0xE1, 0x07, 0xF1, 0x08, 0xC1, +0x20, 0x6C, 0x43, 0xF5, 0x0C, 0x4C, 0x80, 0x18, +0xE3, 0x41, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x45, 0xE1, 0x07, 0xF2, 0x10, 0xC1, 0x1F, 0x10, 0x09, 0x74, 0x0E, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF5, 0x1C, 0x4C, 0x80, 0x18, -0xE3, 0x41, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x45, 0xE1, 0x47, 0xF1, 0x1C, 0xC1, +0x20, 0x6C, 0x63, 0xF5, 0x0C, 0x4C, 0x80, 0x18, +0xE3, 0x41, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x45, 0xE1, 0x67, 0xF2, 0x04, 0xC1, 0x0F, 0x10, 0x0A, 0x74, 0x0D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0xE0, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF5, 0x0C, 0x4C, 0xF9, 0x6D, +0x20, 0x6A, 0x62, 0xF7, 0xE4, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x63, 0xF5, 0x1C, 0x4C, 0xF9, 0x6D, 0x28, 0xF3, 0x01, 0x6E, 0x80, 0x18, 0x25, 0x42, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0x6B, 0x78, 0xEC, -0x30, 0xF0, 0x20, 0x6E, 0x8A, 0xF0, 0x10, 0x4E, +0xFF, 0x6A, 0x4C, 0xEC, 0x32, 0x6B, 0x78, 0xEC, +0x30, 0xF0, 0x20, 0x6E, 0xAA, 0xF0, 0x18, 0x4E, 0xAC, 0xEA, 0x05, 0x6D, 0x12, 0xEB, 0x6D, 0xE6, 0xDD, 0x67, 0xAF, 0xCE, 0x0F, 0x6D, 0xB0, 0xC6, -0x92, 0xC6, 0x53, 0xC6, 0x5B, 0xA3, 0x07, 0x97, -0x04, 0x94, 0x54, 0xC6, 0x5C, 0xA3, 0x55, 0xC6, -0x5D, 0xA3, 0x56, 0xC6, 0x05, 0x95, 0x06, 0x96, +0x92, 0xC6, 0x53, 0xC6, 0x5D, 0xA3, 0x07, 0x97, +0x04, 0x94, 0x54, 0xC6, 0x5E, 0xA3, 0x55, 0xC6, +0x5F, 0xA3, 0x56, 0xC6, 0x05, 0x95, 0x06, 0x96, 0x80, 0x18, 0x00, 0x40, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, 0x14, 0x92, 0x15, 0x93, @@ -12652,11 +12675,11 @@ u8 array_mp_8822c_fw_ap[] = { 0x17, 0x91, 0x1A, 0x65, 0x0A, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEF, 0xAC, 0xEA, 0xAC, 0xEB, 0xAC, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, 0x20, 0x6D, -0x85, 0xF7, 0x08, 0x4D, 0xC3, 0xF4, 0xD0, 0x9D, +0xA5, 0xF7, 0x08, 0x4D, 0xC3, 0xF4, 0xD0, 0x9D, 0x0A, 0xD2, 0x8C, 0xEE, 0x36, 0x26, 0xC3, 0xF4, 0x94, 0x9D, 0x05, 0x6A, 0x4E, 0xEC, 0x31, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF7, 0x9C, 0x9C, -0x07, 0xF3, 0xB0, 0x9D, 0x7F, 0x4A, 0x7C, 0x4A, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, 0x80, 0x9C, +0x07, 0xF4, 0xB8, 0x9D, 0x7F, 0x4A, 0x7C, 0x4A, 0xAC, 0xEC, 0x4E, 0xEC, 0x26, 0x2C, 0x9D, 0x67, 0x47, 0x44, 0x19, 0x4A, 0x40, 0xA2, 0xF4, 0xC4, 0xE2, 0x37, 0x52, 0xC4, 0x58, 0x67, 0x53, 0xC4, @@ -12671,740 +12694,750 @@ u8 array_mp_8822c_fw_ap[] = { 0x08, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x40, 0xA4, 0x70, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x06, 0xD2, 0x81, 0xA4, -0x85, 0xF7, 0x08, 0x48, 0x05, 0xD4, 0x05, 0x92, +0xA5, 0xF7, 0x08, 0x48, 0x05, 0xD4, 0x05, 0x92, 0x9E, 0x33, 0x07, 0xD3, 0x8C, 0xE9, 0x7D, 0x67, 0x03, 0x6C, 0x8C, 0xEA, 0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, 0x32, 0x31, 0x04, 0xD2, 0x9D, 0x67, -0x09, 0xE1, 0xE4, 0xF0, 0x78, 0xC2, 0x67, 0x44, -0x09, 0x4B, 0x80, 0xA3, 0xE4, 0xF0, 0x9A, 0xC2, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF5, 0x18, 0x4C, +0x09, 0xE1, 0x04, 0xF1, 0x60, 0xC2, 0x67, 0x44, +0x09, 0x4B, 0x80, 0xA3, 0x04, 0xF1, 0x82, 0xC2, +0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF5, 0x08, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x5D, 0x67, 0x67, 0x42, 0x15, 0x4B, 0x40, 0xA3, 0x07, 0x93, 0x04, 0xF1, -0x41, 0xC0, 0x21, 0x23, 0xE4, 0xF0, 0x7E, 0xA0, -0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0xE4, 0xF0, -0x5E, 0xC0, 0xC3, 0xF4, 0x50, 0x98, 0x10, 0x6B, +0x49, 0xC0, 0x21, 0x23, 0x04, 0xF1, 0x66, 0xA0, +0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x04, 0xF1, +0x46, 0xC0, 0xC3, 0xF4, 0x50, 0x98, 0x10, 0x6B, 0x6C, 0xEA, 0x0D, 0x22, 0xC3, 0xF4, 0x54, 0x98, 0x05, 0x5A, 0x09, 0x61, 0x04, 0x96, 0x06, 0x97, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF5, 0x04, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF5, 0x14, 0x4C, 0xB1, 0x67, 0x80, 0x18, 0x25, 0x42, 0x05, 0x94, 0x0C, 0x6D, 0x8C, 0xED, 0xAA, 0x35, 0x91, 0x67, -0x80, 0x18, 0xB2, 0x4B, 0x23, 0x10, 0xE4, 0xF0, -0x7E, 0xA0, 0x01, 0x6A, 0x44, 0xE9, 0x4F, 0xEA, -0x6C, 0xEA, 0xE4, 0xF0, 0x5E, 0xC0, 0xC3, 0xF4, +0x80, 0x18, 0xEB, 0x4B, 0x23, 0x10, 0x04, 0xF1, +0x66, 0xA0, 0x01, 0x6A, 0x44, 0xE9, 0x4F, 0xEA, +0x6C, 0xEA, 0x04, 0xF1, 0x46, 0xC0, 0xC3, 0xF4, 0x50, 0x98, 0x10, 0x6B, 0x6C, 0xEA, 0x0D, 0x22, 0xC3, 0xF4, 0x54, 0x98, 0x05, 0x5A, 0x09, 0x61, 0x04, 0x96, 0x06, 0x97, 0x30, 0xF0, 0x20, 0x6C, -0xC3, 0xF5, 0x18, 0x4C, 0xB1, 0x67, 0x80, 0x18, -0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, +0xC3, 0xF5, 0x08, 0x4C, 0xB1, 0x67, 0x80, 0x18, +0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x45, 0xE1, 0x01, 0x6A, 0x4B, 0xEA, -0xE4, 0xF0, 0x58, 0xC1, 0x0B, 0x97, 0x0A, 0x91, +0x04, 0xF1, 0x40, 0xC1, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, -0x40, 0xA4, 0x30, 0x68, 0x20, 0x6B, 0x18, 0xEA, -0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x8A, 0xF0, -0x10, 0x4A, 0x24, 0x67, 0x12, 0xE8, 0x01, 0xE2, -0x58, 0xA0, 0x0A, 0xD2, 0x42, 0xA4, 0xBA, 0xA0, -0x58, 0xC0, 0x43, 0xA4, 0x01, 0x6C, 0x6C, 0xEA, -0xBF, 0x4B, 0xAC, 0xEB, 0x4D, 0xEB, 0x7A, 0xC0, +0x40, 0xA4, 0x32, 0x68, 0x20, 0x6B, 0x18, 0xEA, +0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, +0x18, 0x4A, 0x24, 0x67, 0x12, 0xE8, 0x01, 0xE2, +0x5A, 0xA0, 0x0A, 0xD2, 0x42, 0xA4, 0xBC, 0xA0, +0x5A, 0xC0, 0x43, 0xA4, 0x01, 0x6C, 0x6C, 0xEA, +0xBF, 0x4B, 0xAC, 0xEB, 0x4D, 0xEB, 0x7C, 0xC0, 0x43, 0xA1, 0xA8, 0xA0, 0x4C, 0xEC, 0x02, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x8D, 0xEA, 0x5A, 0xC0, +0x4B, 0xEA, 0x6C, 0xEA, 0x8D, 0xEA, 0x5C, 0xC0, 0x83, 0xA1, 0x02, 0x6B, 0x6C, 0xEC, 0xFB, 0x4B, -0x4C, 0xEB, 0x8D, 0xEB, 0x7A, 0xC0, 0x83, 0xA1, +0x4C, 0xEB, 0x8D, 0xEB, 0x7C, 0xC0, 0x83, 0xA1, 0x40, 0x6A, 0x4C, 0xEC, 0x80, 0x4A, 0xFF, 0x4A, -0x6C, 0xEA, 0x8D, 0xEA, 0x5A, 0xC0, 0x83, 0xA1, +0x6C, 0xEA, 0x8D, 0xEA, 0x5C, 0xC0, 0x83, 0xA1, 0x7F, 0x6B, 0xAC, 0xEB, 0x9E, 0x34, 0x9C, 0x34, 0x8D, 0xEB, 0x68, 0xC0, 0x83, 0xA1, 0x09, 0xD4, -0x64, 0xA1, 0x7E, 0xC0, 0x65, 0xA1, 0x07, 0xD3, -0x86, 0xA1, 0x04, 0x6B, 0x8C, 0xEB, 0x6B, 0x33, -0x08, 0xD4, 0x20, 0xF0, 0x6E, 0xC0, 0x20, 0x6B, -0x6C, 0xEA, 0x22, 0x22, 0x06, 0x94, 0x80, 0x18, -0x95, 0x45, 0xC7, 0xA0, 0x03, 0x6C, 0xB8, 0xA0, -0xCA, 0x36, 0x8C, 0xEE, 0x06, 0x94, 0xFF, 0x6A, -0x4C, 0xEE, 0x80, 0x18, 0x42, 0x4F, 0x30, 0xF0, -0x20, 0x6A, 0x49, 0xF4, 0x58, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x0E, 0x22, 0xE7, 0xA0, 0x03, 0x6C, -0x06, 0x95, 0xEA, 0x37, 0xD8, 0xA0, 0x8C, 0xEF, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF5, -0x10, 0x4C, 0x4C, 0xEF, 0x80, 0x18, 0x25, 0x42, -0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, 0x58, 0x9A, -0x20, 0x6B, 0x6C, 0xEA, 0x0E, 0x22, 0x5E, 0xA0, -0xD8, 0xA0, 0xE3, 0xA1, 0x04, 0xD2, 0x20, 0xF0, -0x4E, 0xA0, 0x06, 0x95, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF6, 0x08, 0x4C, 0x05, 0xD2, 0x80, 0x18, -0x25, 0x42, 0x09, 0x93, 0x08, 0x6A, 0x6C, 0xEA, -0x19, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, -0x58, 0x9A, 0x08, 0x94, 0x20, 0x6B, 0x03, 0x69, -0x6C, 0xEA, 0x8C, 0xE9, 0x09, 0x22, 0x06, 0x95, -0x07, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF6, -0x08, 0x4C, 0xF1, 0x67, 0x80, 0x18, 0x25, 0x42, -0x06, 0x94, 0x07, 0x95, 0x00, 0x6E, 0xF1, 0x67, -0x80, 0x18, 0xE7, 0x4B, 0xFA, 0xA0, 0xD8, 0xA0, -0x06, 0x94, 0x0A, 0x95, 0x01, 0x6A, 0xF6, 0x37, -0x4C, 0xEF, 0x80, 0x18, 0xE6, 0x4A, 0x0F, 0x97, -0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x03, 0xA4, -0x44, 0xA4, 0xC0, 0xA4, 0x00, 0x30, 0x00, 0x30, -0x00, 0xF6, 0x40, 0x32, 0xA5, 0xA4, 0xE6, 0xA4, -0x0D, 0xEA, 0x01, 0xA4, 0x82, 0xA4, 0x30, 0xF0, -0x20, 0x6B, 0x0D, 0xEA, 0x80, 0x34, 0x85, 0xF7, -0x08, 0x4B, 0x8D, 0xEA, 0xC3, 0xF4, 0x50, 0xDB, -0x07, 0xF3, 0xD1, 0xC3, 0x0A, 0x26, 0x01, 0x6C, -0x4C, 0xEC, 0x07, 0x24, 0x07, 0xF3, 0xB2, 0xC3, -0x07, 0xF3, 0xF3, 0xC3, 0x02, 0x25, 0x80, 0x18, -0xB1, 0x50, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xA4, -0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF7, 0x44, 0x9A, -0x62, 0xF7, 0xA8, 0x9D, 0x0C, 0x33, 0x49, 0xE3, -0x03, 0x4C, 0xAD, 0xE3, 0xA0, 0xA4, 0x01, 0x4C, -0xA0, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFA, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xC3, 0xF4, 0x70, 0x9A, 0x20, 0x6C, 0x8C, 0xEB, -0x11, 0x23, 0xC3, 0xF4, 0x54, 0x9A, 0x05, 0x5A, -0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x44, 0x9A, 0x0C, 0x33, 0x30, 0xF0, 0x20, 0x6C, -0x49, 0xE3, 0xA0, 0x9A, 0x43, 0xF6, 0x04, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF7, 0x44, 0x9A, 0x0C, 0x33, 0x30, 0xF0, -0x20, 0x6C, 0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF7, 0x6C, 0x9B, 0x40, 0x9A, 0x85, 0xF7, -0x08, 0x4C, 0xFF, 0x6E, 0x6C, 0xEA, 0xA3, 0xF4, -0x71, 0xA4, 0xA3, 0xF4, 0x96, 0xA4, 0xAF, 0x43, -0xCC, 0xED, 0x02, 0x5D, 0x04, 0x61, 0x01, 0x74, -0x02, 0x60, 0x02, 0x74, 0x11, 0x61, 0x10, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x50, 0x9A, -0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF7, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF5, 0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, -0x03, 0x73, 0x13, 0x61, 0x00, 0xF4, 0x00, 0x5A, -0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x50, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0x78, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF5, 0x50, 0x9A, 0x60, 0xDA, -0xF0, 0x17, 0x90, 0x67, 0x80, 0x18, 0x38, 0x4C, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x20, 0xA4, 0x30, 0x6E, 0x30, 0xF0, 0x20, 0x6A, -0xD8, 0xE9, 0x8A, 0xF0, 0x10, 0x4A, 0x61, 0xA4, -0x7E, 0x33, 0x68, 0x33, 0x12, 0xE8, 0x01, 0xE2, -0xAC, 0xA0, 0x05, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, -0x6D, 0xEA, 0x4C, 0xC0, 0xA1, 0xA4, 0x60, 0x6B, -0xAC, 0xEB, 0x76, 0x33, 0x06, 0xD3, 0xE8, 0xA0, -0x1F, 0x6B, 0xAC, 0xEB, 0x20, 0x6D, 0xAB, 0xED, -0xEC, 0xED, 0x6D, 0xED, 0xA8, 0xC0, 0xE2, 0xA4, -0x41, 0x6B, 0x6B, 0xEB, 0xFE, 0x37, 0xF8, 0x37, -0xAC, 0xEB, 0xED, 0xEB, 0x68, 0xC0, 0xA2, 0xA4, -0x40, 0x6F, 0xEC, 0xED, 0xBA, 0x35, 0xB4, 0x37, -0x21, 0x6D, 0xAB, 0xED, 0x6C, 0xED, 0xED, 0xED, -0xA8, 0xC0, 0xA2, 0xA4, 0x03, 0x6B, 0xCC, 0xED, -0xCC, 0x4E, 0xB2, 0x35, 0xCC, 0xEA, 0xAD, 0xEA, -0x4C, 0xC0, 0x42, 0xA4, 0x08, 0x6D, 0x03, 0x4C, -0x4C, 0xED, 0xAE, 0x35, 0x07, 0xD5, 0x4C, 0xEB, -0x47, 0xA0, 0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF7, -0xA4, 0x9D, 0xCC, 0xEA, 0x6D, 0xEA, 0x47, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x5C, 0x9A, -0x2C, 0x33, 0x49, 0xE3, 0xAD, 0xE3, 0xA0, 0xA4, +0x64, 0xA1, 0x20, 0xF0, 0x60, 0xC0, 0x65, 0xA1, +0x07, 0xD3, 0x86, 0xA1, 0x04, 0x6B, 0x8C, 0xEB, +0x6B, 0x33, 0x08, 0xD4, 0x20, 0xF0, 0x70, 0xC0, +0x20, 0x6B, 0x6C, 0xEA, 0x22, 0x22, 0x06, 0x94, +0x80, 0x18, 0x94, 0x45, 0xC7, 0xA0, 0x03, 0x6C, +0xBA, 0xA0, 0xCA, 0x36, 0x8C, 0xEE, 0x06, 0x94, +0xFF, 0x6A, 0x4C, 0xEE, 0x80, 0x18, 0x93, 0x4F, +0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, +0x20, 0x6B, 0x6C, 0xEA, 0x0E, 0x22, 0xE7, 0xA0, +0x03, 0x6C, 0x06, 0x95, 0xEA, 0x37, 0xDA, 0xA0, +0x8C, 0xEF, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6C, +0xE3, 0xF5, 0x00, 0x4C, 0x4C, 0xEF, 0x80, 0x18, +0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF4, +0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x0F, 0x22, +0x20, 0xF0, 0x40, 0xA0, 0xDA, 0xA0, 0xE3, 0xA1, +0x04, 0xD2, 0x20, 0xF0, 0x50, 0xA0, 0x06, 0x95, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF5, 0x18, 0x4C, +0x05, 0xD2, 0x80, 0x18, 0x25, 0x42, 0x09, 0x93, +0x08, 0x6A, 0x6C, 0xEA, 0x19, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, 0x08, 0x94, +0x20, 0x6B, 0x03, 0x69, 0x6C, 0xEA, 0x8C, 0xE9, +0x09, 0x22, 0x06, 0x95, 0x07, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0x03, 0xF6, 0x18, 0x4C, 0xF1, 0x67, +0x80, 0x18, 0x25, 0x42, 0x06, 0x94, 0x07, 0x95, +0x00, 0x6E, 0xF1, 0x67, 0x80, 0x18, 0x20, 0x4C, +0xFC, 0xA0, 0xDA, 0xA0, 0x06, 0x94, 0x0A, 0x95, +0x01, 0x6A, 0xF6, 0x37, 0x4C, 0xEF, 0x80, 0x18, +0x1F, 0x4B, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x03, 0xA4, 0x44, 0xA4, 0xC0, 0xA4, +0x00, 0x30, 0x00, 0x30, 0x00, 0xF6, 0x40, 0x32, +0xA5, 0xA4, 0xE6, 0xA4, 0x0D, 0xEA, 0x01, 0xA4, +0x82, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0x0D, 0xEA, +0x80, 0x34, 0xA5, 0xF7, 0x08, 0x4B, 0x8D, 0xEA, +0xC3, 0xF4, 0x50, 0xDB, 0x07, 0xF4, 0xD9, 0xC3, +0x0A, 0x26, 0x01, 0x6C, 0x4C, 0xEC, 0x07, 0x24, +0x07, 0xF4, 0xBA, 0xC3, 0x07, 0xF4, 0xFB, 0xC3, +0x02, 0x25, 0x80, 0x18, 0x08, 0x51, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xA4, 0x30, 0xF0, 0x20, 0x6D, +0x62, 0xF7, 0x48, 0x9A, 0x62, 0xF7, 0xAC, 0x9D, +0x0C, 0x33, 0x49, 0xE3, 0x03, 0x4C, 0xAD, 0xE3, +0xA0, 0xA4, 0x01, 0x4C, 0xA0, 0xC2, 0x01, 0x4A, +0x6A, 0xEA, 0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x70, 0x9A, +0x20, 0x6C, 0x8C, 0xEB, 0x11, 0x23, 0xC3, 0xF4, +0x54, 0x9A, 0x05, 0x5A, 0x0D, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x48, 0x9A, 0x0C, 0x33, +0x30, 0xF0, 0x20, 0x6C, 0x49, 0xE3, 0xA0, 0x9A, +0x23, 0xF6, 0x14, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x48, 0x9A, +0x0C, 0x33, 0x30, 0xF0, 0x20, 0x6C, 0x49, 0xE3, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF7, 0x70, 0x9B, +0x40, 0x9A, 0xA5, 0xF7, 0x08, 0x4C, 0xFF, 0x6E, +0x6C, 0xEA, 0xA3, 0xF4, 0x6D, 0xA4, 0xA3, 0xF4, +0x92, 0xA4, 0xAF, 0x43, 0xCC, 0xED, 0x02, 0x5D, +0x04, 0x61, 0x01, 0x74, 0x02, 0x60, 0x02, 0x74, +0x11, 0x61, 0x10, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF7, 0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x50, 0x9A, +0x60, 0xDA, 0xF0, 0x17, 0x03, 0x73, 0x13, 0x61, +0x00, 0xF4, 0x00, 0x5A, 0x10, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x54, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, +0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, +0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x90, 0x67, +0x80, 0x18, 0x72, 0x4C, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x20, 0xA4, 0x32, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x18, 0xE9, 0xAA, 0xF0, +0x18, 0x4A, 0x61, 0xA4, 0x7E, 0x33, 0x68, 0x33, +0x12, 0xE8, 0x01, 0xE2, 0xAC, 0xA0, 0x05, 0x6A, +0x4B, 0xEA, 0xAC, 0xEA, 0x6D, 0xEA, 0x4C, 0xC0, +0xA1, 0xA4, 0x60, 0x6B, 0xAC, 0xEB, 0x76, 0x33, +0x06, 0xD3, 0xC8, 0xA0, 0x1F, 0x6B, 0xAC, 0xEB, +0x20, 0x6D, 0xAB, 0xED, 0xCC, 0xED, 0x6D, 0xED, +0xA8, 0xC0, 0xC2, 0xA4, 0x41, 0x6B, 0x6B, 0xEB, +0xDE, 0x36, 0xD8, 0x36, 0xAC, 0xEB, 0xCD, 0xEB, +0x68, 0xC0, 0xA2, 0xA4, 0x40, 0x6E, 0xCC, 0xED, +0xBA, 0x35, 0xB4, 0x36, 0x21, 0x6D, 0xAB, 0xED, +0x6C, 0xED, 0xCD, 0xED, 0xA8, 0xC0, 0xA2, 0xA4, +0x30, 0x6B, 0x04, 0x6E, 0x6C, 0xED, 0xCB, 0xEE, +0xB2, 0x35, 0xCC, 0xEA, 0xAD, 0xEA, 0x4C, 0xC0, +0x42, 0xA4, 0x08, 0x6D, 0x03, 0x6B, 0x4C, 0xED, +0xAE, 0x35, 0x07, 0xD5, 0x4C, 0xEB, 0x47, 0xA0, +0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF7, 0xA8, 0x9D, +0xCC, 0xEA, 0x6D, 0xEA, 0x47, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF7, 0x40, 0x9A, 0x2C, 0x33, +0x03, 0x4C, 0x49, 0xE3, 0xAD, 0xE3, 0xA0, 0xA4, 0x01, 0x4C, 0xA0, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFA, 0x61, 0x07, 0x92, 0x09, 0x2A, 0x67, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, 0x48, 0x34, 0x0D, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x8D, 0xEA, 0x47, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x13, 0x22, 0x8C, 0xA0, 0xC7, 0xA0, 0x03, 0x6A, 0x8A, 0x33, 0x4C, 0xEC, 0xCA, 0x37, 0x01, 0x6D, 0x05, 0xD4, 0x30, 0xF0, -0x20, 0x6C, 0xAC, 0xEB, 0x43, 0xF6, 0x10, 0x4C, +0x20, 0x6C, 0xAC, 0xEB, 0x43, 0xF6, 0x00, 0x4C, 0xB1, 0x67, 0x4C, 0xEE, 0x4C, 0xEF, 0x04, 0xD3, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, -0x49, 0xF4, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, +0x69, 0xF4, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x12, 0x22, 0x06, 0x94, 0x48, 0xA0, 0x01, 0x6B, 0x04, 0xD4, 0x07, 0x94, 0x5A, 0x35, 0x56, 0x36, 0x05, 0xD4, 0x1F, 0x6F, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF6, 0x18, 0x4C, 0x6C, 0xED, 0x6C, 0xEE, +0x63, 0xF6, 0x08, 0x4C, 0x6C, 0xED, 0x6C, 0xEE, 0x4C, 0xEF, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, -0x20, 0x6A, 0x49, 0xF4, 0x58, 0x9A, 0x20, 0x6B, +0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF7, 0x5C, 0x9A, 0x2C, 0x33, 0x30, 0xF0, -0x20, 0x6C, 0x49, 0xE3, 0xA0, 0x9A, 0xA3, 0xF6, -0x04, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0x5C, 0x9A, 0x2C, 0x33, +0x82, 0xF7, 0x40, 0x9A, 0x2C, 0x33, 0x30, 0xF0, +0x20, 0x6C, 0x49, 0xE3, 0xA0, 0x9A, 0x83, 0xF6, +0x14, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF7, 0x40, 0x9A, 0x2C, 0x33, 0x49, 0xE3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xA3, 0xF4, 0x91, 0xA2, -0x01, 0x74, 0x04, 0x60, 0xA3, 0xF4, 0x56, 0xA2, +0xA5, 0xF7, 0x08, 0x4A, 0xA3, 0xF4, 0x8D, 0xA2, +0x01, 0x74, 0x04, 0x60, 0xA3, 0xF4, 0x52, 0xA2, 0x01, 0x72, 0x16, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF7, 0x40, 0x9A, 0x63, 0xEA, 0x10, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x50, 0x9A, +0x82, 0xF7, 0x44, 0x9A, 0x63, 0xEA, 0x10, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF7, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF7, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x47, 0xA0, 0x03, 0x6B, 0x4A, 0x32, 0x6C, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x29, 0xF4, 0x78, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x74, 0xA3, 0x05, 0x73, 0x11, 0x61, 0x38, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0x50, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, -0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x06, 0x73, -0x12, 0x61, 0x02, 0x5A, 0x24, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0x50, 0x9A, 0x00, 0x6B, +0x20, 0x6A, 0x62, 0xF7, 0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, -0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x07, 0x73, -0x12, 0x61, 0x03, 0x72, 0x10, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0x50, 0x9A, 0x00, 0x6B, +0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x06, 0x73, +0x12, 0x61, 0x02, 0x5A, 0x24, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, +0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x07, 0x73, +0x12, 0x61, 0x03, 0x72, 0x10, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x54, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, +0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x30, 0xF0, -0x20, 0x6A, 0x29, 0xF4, 0x5A, 0xA2, 0x02, 0x72, +0x20, 0x6A, 0x49, 0xF4, 0x56, 0xA2, 0x02, 0x72, 0x14, 0x61, 0x6C, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x50, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF7, 0x74, 0x9A, 0x30, 0xF0, +0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF7, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x50, 0x9A, 0x60, 0xDA, -0xF0, 0x17, 0x91, 0x67, 0x80, 0x18, 0x38, 0x4C, +0xF0, 0x17, 0x91, 0x67, 0x80, 0x18, 0x72, 0x4C, 0x06, 0x92, 0x0D, 0x22, 0x04, 0x6B, 0xC7, 0xA0, 0x4F, 0xE3, 0x09, 0x6A, 0x44, 0xEB, 0xFF, 0x6D, 0xCA, 0x36, 0x4C, 0xED, 0x03, 0x6A, 0x91, 0x67, -0x4C, 0xEE, 0x80, 0x18, 0x42, 0x4F, 0x0B, 0x97, +0x4C, 0xEE, 0x80, 0x18, 0x93, 0x4F, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0xC0, 0x4C, 0x4C, 0xEC, 0x13, 0x5C, 0x2F, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x62, 0xF1, 0x10, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x85, 0x67, 0x80, 0x18, 0xA0, 0x44, 0x23, 0x10, +0x85, 0x67, 0x80, 0x18, 0xA1, 0x44, 0x23, 0x10, 0x85, 0x67, 0x80, 0x18, 0xF8, 0x43, 0x1F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x63, 0x44, 0x1B, 0x10, +0x85, 0x67, 0x80, 0x18, 0x64, 0x44, 0x1B, 0x10, 0x85, 0x67, 0x80, 0x18, 0x53, 0x43, 0x17, 0x10, 0x85, 0x67, 0x80, 0x18, 0x37, 0x42, 0x13, 0x10, -0x85, 0x67, 0x80, 0x18, 0x4E, 0x44, 0x0F, 0x10, +0x85, 0x67, 0x80, 0x18, 0x4F, 0x44, 0x0F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xAE, 0x42, 0x0B, 0x10, 0x85, 0x67, 0x80, 0x18, 0xBB, 0x43, 0x07, 0x10, 0x85, 0x67, 0x80, 0x18, 0x4E, 0x41, 0x03, 0x10, 0x85, 0x67, 0x80, 0x18, 0xFC, 0x40, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x05, 0x6B, 0xC3, 0xF4, +0xA5, 0xF7, 0x08, 0x4A, 0x05, 0x6B, 0xC3, 0xF4, 0x74, 0xDA, 0x09, 0x6B, 0xC3, 0xF4, 0x70, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x00, 0x6A, 0x83, 0xF5, 0xAC, 0x42, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0xA4, 0x35, -0x00, 0x6C, 0x75, 0xE5, 0x80, 0xCD, 0x03, 0xF6, -0xAC, 0x42, 0xC4, 0xF1, 0x0C, 0x42, 0xA4, 0x35, -0x75, 0xE5, 0x04, 0x30, 0x80, 0xCD, 0x61, 0xE0, -0x75, 0xE2, 0x07, 0xF7, 0x98, 0xC5, 0x87, 0xF7, -0x98, 0xC5, 0x44, 0xF1, 0xEC, 0x42, 0x80, 0xC8, -0xC4, 0xF2, 0xCC, 0x42, 0x44, 0xF2, 0x0C, 0x42, -0xE4, 0x37, 0xC4, 0x36, 0x04, 0x30, 0x79, 0xE6, -0x7D, 0xE7, 0x61, 0xE0, 0x80, 0xC8, 0x80, 0xCF, -0x80, 0xCE, 0xC4, 0xF3, 0xCC, 0x42, 0xC4, 0x36, -0x79, 0xE6, 0x80, 0xCE, 0x44, 0xF3, 0xCC, 0x42, -0xC4, 0x36, 0x79, 0xE6, 0x80, 0xCE, 0x44, 0xF4, -0xCC, 0x42, 0xC4, 0x36, 0x79, 0xE6, 0x82, 0xCE, -0xC4, 0xF4, 0xCC, 0x42, 0xC4, 0x36, 0x79, 0xE6, -0x82, 0xCE, 0x44, 0xF5, 0xCC, 0x42, 0xC4, 0x36, -0x79, 0xE6, 0x82, 0xCE, 0x04, 0xF0, 0xCC, 0x42, -0xC4, 0x36, 0x79, 0xE6, 0x80, 0xCE, 0x84, 0xF0, -0xCC, 0x42, 0xC4, 0x36, 0x79, 0xE6, 0x80, 0xCE, -0x01, 0x4A, 0x08, 0xF2, 0x98, 0xC5, 0xFF, 0x6C, -0x8C, 0xEA, 0x80, 0x72, 0xAE, 0x61, 0x01, 0x90, -0x58, 0x67, 0x89, 0xF0, 0x58, 0xDB, 0x01, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, -0xC4, 0xF3, 0xAC, 0x42, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0xA4, 0x35, 0x00, 0x6C, -0x75, 0xE5, 0x80, 0xCD, 0x44, 0xF3, 0xAC, 0x42, -0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, 0x44, 0xF4, -0xAC, 0x42, 0xA4, 0x35, 0x75, 0xE5, 0x82, 0xCD, -0xC4, 0xF4, 0xAC, 0x42, 0x44, 0xF5, 0x0C, 0x4A, -0xA4, 0x35, 0x44, 0x32, 0x75, 0xE5, 0x6D, 0xE2, -0x82, 0xCD, 0x82, 0xCB, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0xF0, 0xAC, 0x42, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, +0x00, 0x6A, 0x13, 0xF6, 0xA0, 0x42, 0x30, 0xF0, +0x20, 0x6C, 0xA5, 0xF7, 0x08, 0x4C, 0xA4, 0x35, +0x00, 0x6B, 0x95, 0xE5, 0x60, 0xCD, 0x93, 0xF6, +0xA0, 0x42, 0xD4, 0xF1, 0x00, 0x42, 0xA4, 0x35, +0x95, 0xE5, 0x04, 0x30, 0x60, 0xCD, 0x81, 0xE0, +0x95, 0xE2, 0x28, 0xF0, 0x60, 0xC5, 0xA8, 0xF0, +0x60, 0xC5, 0x54, 0xF1, 0xE0, 0x42, 0x60, 0xC8, +0xD4, 0xF2, 0xC0, 0x42, 0x54, 0xF2, 0x00, 0x42, +0xE4, 0x37, 0xC4, 0x36, 0x04, 0x30, 0x99, 0xE6, +0x9D, 0xE7, 0x81, 0xE0, 0x60, 0xC8, 0x60, 0xCF, +0x60, 0xCE, 0xD4, 0xF3, 0xC0, 0x42, 0xC4, 0x36, +0x99, 0xE6, 0x60, 0xCE, 0x54, 0xF3, 0xC0, 0x42, +0xC4, 0x36, 0x99, 0xE6, 0x60, 0xCE, 0x54, 0xF4, +0xC0, 0x42, 0xC4, 0x36, 0x99, 0xE6, 0x62, 0xCE, +0xD4, 0xF4, 0xC0, 0x42, 0xC4, 0x36, 0x99, 0xE6, +0x62, 0xCE, 0x54, 0xF5, 0xC0, 0x42, 0xC4, 0x36, +0x99, 0xE6, 0x62, 0xCE, 0x01, 0x4A, 0x28, 0xF1, +0x60, 0xC5, 0xA8, 0xF1, 0x60, 0xC5, 0x28, 0xF2, +0x60, 0xC5, 0xFF, 0x6B, 0x6C, 0xEA, 0x80, 0x72, +0xB4, 0x61, 0x58, 0x67, 0xA9, 0xF0, 0x40, 0xDC, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x8C, 0xEA, 0xD4, 0xF3, 0xA0, 0x42, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0xA4, 0x35, 0x00, 0x6C, 0x75, 0xE5, 0x80, 0xCD, -0x84, 0xF0, 0xAC, 0x42, 0xA4, 0x35, 0x75, 0xE5, -0x69, 0xE2, 0x80, 0xCD, 0x08, 0xF2, 0x98, 0xC2, +0x54, 0xF3, 0xA0, 0x42, 0xA4, 0x35, 0x75, 0xE5, +0x80, 0xCD, 0x54, 0xF4, 0xA0, 0x42, 0xA4, 0x35, +0x75, 0xE5, 0x82, 0xCD, 0xD4, 0xF4, 0xA0, 0x42, +0x44, 0xF5, 0x10, 0x4A, 0xA4, 0x35, 0x44, 0x32, +0x75, 0xE5, 0x6D, 0xE2, 0x82, 0xCD, 0x82, 0xCB, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0x8C, 0xEA, +0x69, 0xE2, 0x00, 0x6B, 0x28, 0xF1, 0x60, 0xC2, +0xA8, 0xF1, 0x60, 0xC2, 0x28, 0xF2, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, -0x44, 0xF1, 0xAC, 0x42, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0xA4, 0x35, 0x00, 0x6C, -0x75, 0xE5, 0x80, 0xCD, 0xC4, 0xF2, 0xAC, 0x42, -0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, 0xC4, 0xF1, -0xAC, 0x42, 0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, -0x44, 0xF2, 0xAC, 0x42, 0xA4, 0x35, 0x75, 0xE5, -0x80, 0xCD, 0x30, 0x6C, 0x98, 0xEA, 0xB0, 0x4C, -0x12, 0xEA, 0x6D, 0xE2, 0x24, 0xF1, 0x47, 0xA3, -0x4C, 0xEC, 0x24, 0xF1, 0x87, 0xC3, 0x20, 0xE8, +0x54, 0xF1, 0xA0, 0x42, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0xA4, 0x35, 0x00, 0x6C, +0x75, 0xE5, 0x80, 0xCD, 0xD4, 0xF2, 0xA0, 0x42, +0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, 0xD4, 0xF1, +0xA0, 0x42, 0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, +0x54, 0xF2, 0xA0, 0x42, 0xA4, 0x35, 0x75, 0xE5, +0x80, 0xCD, 0x32, 0x6C, 0x98, 0xEA, 0xAE, 0x4C, +0x12, 0xEA, 0x6D, 0xE2, 0x24, 0xF1, 0x51, 0xA3, +0x4C, 0xEC, 0x24, 0xF1, 0x91, 0xC3, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0xD1, 0x06, 0xD0, 0x0D, 0x92, 0xFF, 0xF7, 0x1F, 0x6B, 0x1B, 0x65, 0x02, 0xD2, 0xCC, 0xEB, 0x00, 0xD3, 0x0C, 0x90, 0x02, 0x93, 0xD8, 0x67, 0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xEF, -0xCC, 0xEB, 0xCC, 0xE8, 0x30, 0x6E, 0xD8, 0xEC, -0x0E, 0x92, 0x30, 0xF0, 0x20, 0x6E, 0x8A, 0xF0, -0x10, 0x4E, 0x2C, 0xEA, 0x02, 0xD3, 0x03, 0xE7, +0xCC, 0xEB, 0xCC, 0xE8, 0x32, 0x6E, 0xD8, 0xEC, +0x0E, 0x92, 0x30, 0xF0, 0x20, 0x6E, 0xAA, 0xF0, +0x18, 0x4E, 0x2C, 0xEA, 0x02, 0xD3, 0x03, 0xE7, 0x78, 0x67, 0x6C, 0xE8, 0x12, 0xE9, 0x39, 0xE6, 0x00, 0x91, 0x01, 0xD6, 0x3B, 0xE5, 0xFB, 0xE6, -0x03, 0xD6, 0xC4, 0xF3, 0x2C, 0x44, 0x30, 0xF0, -0x20, 0x6E, 0x24, 0x31, 0x85, 0xF7, 0x08, 0x4E, +0x03, 0xD6, 0xD4, 0xF3, 0x20, 0x44, 0x30, 0xF0, +0x20, 0x6E, 0x24, 0x31, 0xA5, 0xF7, 0x08, 0x4E, 0xD9, 0xE1, 0x00, 0x91, 0x04, 0xD6, 0xC0, 0xAE, 0x2F, 0xE3, 0xC2, 0xEB, 0x03, 0x61, 0x04, 0x93, 0xD9, 0xE1, 0xC0, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x44, 0xF3, 0xCC, 0x44, 0x85, 0xF7, 0x08, 0x4B, +0x54, 0xF3, 0xC0, 0x44, 0xA5, 0xF7, 0x08, 0x4B, 0xC4, 0x36, 0x79, 0xE6, 0x60, 0xAE, 0xFF, 0xF7, 0x1F, 0x69, 0xE7, 0xE1, 0x62, 0xE9, 0x02, 0x61, 0x6D, 0xE7, 0x60, 0xCE, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x89, 0xF0, 0xD8, 0x9B, +0xA5, 0xF7, 0x08, 0x4B, 0xA9, 0xF0, 0xC0, 0x9B, 0x0F, 0xE9, 0xC3, 0xE9, 0x03, 0x61, 0xC1, 0xE0, -0x89, 0xF0, 0x18, 0xDB, 0x30, 0xF0, 0x20, 0x6E, -0x44, 0xF4, 0x6C, 0x44, 0x85, 0xF7, 0x08, 0x4E, +0xA9, 0xF0, 0x00, 0xDB, 0x30, 0xF0, 0x20, 0x6E, +0x54, 0xF4, 0x60, 0x44, 0xA5, 0xF7, 0x08, 0x4E, 0x64, 0x33, 0xCD, 0xE3, 0x03, 0x91, 0xC2, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, 0x23, 0xE0, 0xC3, 0xE8, 0x02, 0x61, 0xD9, 0xE1, 0xC2, 0xCB, 0x30, 0xF0, -0x20, 0x6E, 0x44, 0xF5, 0x6C, 0x44, 0x85, 0xF7, +0x20, 0x6E, 0x54, 0xF5, 0x60, 0x44, 0xA5, 0xF7, 0x08, 0x4E, 0x64, 0x33, 0xCD, 0xE3, 0x02, 0x91, 0xC2, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, 0x23, 0xE0, 0xC2, 0xE8, 0x02, 0x61, 0xD9, 0xE1, 0xC2, 0xCB, -0x30, 0xF0, 0x20, 0x6E, 0xC4, 0xF4, 0x6C, 0x44, -0x85, 0xF7, 0x08, 0x4E, 0x64, 0x33, 0xCD, 0xE3, +0x30, 0xF0, 0x20, 0x6E, 0xD4, 0xF4, 0x60, 0x44, +0xA5, 0xF7, 0x08, 0x4E, 0x64, 0x33, 0xCD, 0xE3, 0xC2, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, 0xA3, 0xE0, 0xC3, 0xE8, 0x02, 0x61, 0xD9, 0xE5, 0xC2, 0xCB, -0x01, 0x96, 0x75, 0xAE, 0xFF, 0xF7, 0x1F, 0x6E, +0x01, 0x96, 0x76, 0xAE, 0xFF, 0xF7, 0x1F, 0x6E, 0xBB, 0xE6, 0xC3, 0xEB, 0x03, 0x60, 0x01, 0x90, -0x6D, 0xE5, 0x75, 0xC8, 0x01, 0x91, 0xFF, 0xF7, -0x1F, 0x6E, 0xBB, 0xE6, 0x76, 0xA9, 0xC3, 0xEB, -0x02, 0x60, 0x75, 0xE5, 0xB6, 0xC9, 0x6A, 0x42, +0x6D, 0xE5, 0x76, 0xC8, 0x01, 0x91, 0xFF, 0xF7, +0x1F, 0x6E, 0xBB, 0xE6, 0x77, 0xA9, 0xC3, 0xEB, +0x02, 0x60, 0x75, 0xE5, 0xB7, 0xC9, 0x6A, 0x42, 0xFF, 0x6D, 0xAC, 0xEB, 0x02, 0x5B, 0x00, 0x6B, 0x0A, 0x61, 0x6C, 0x42, 0xAC, 0xEB, 0x02, 0x5B, 0x01, 0x6B, 0x05, 0x61, 0x03, 0x22, 0x03, 0x72, 0x03, 0x6B, 0x01, 0x61, 0x02, 0x6B, 0x88, 0x32, 0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6D, 0xC4, 0xF5, -0x0C, 0x4A, 0x85, 0xF7, 0x08, 0x4D, 0x44, 0x32, +0x10, 0x4A, 0xA5, 0xF7, 0x08, 0x4D, 0x44, 0x32, 0xA9, 0xE2, 0xA2, 0xAA, 0xFF, 0xF7, 0x1F, 0x6E, 0xFB, 0xE6, 0xC2, 0xED, 0x02, 0x60, 0xBD, 0xE7, 0xE2, 0xCA, 0x88, 0x34, 0x6D, 0xE4, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF7, 0x0C, 0x4B, 0x85, 0xF7, +0x20, 0x6A, 0xC4, 0xF7, 0x10, 0x4B, 0xA5, 0xF7, 0x08, 0x4A, 0x64, 0x33, 0x4D, 0xE3, 0x00, 0x95, 0x42, 0xAB, 0xFF, 0xF7, 0x1F, 0x6C, 0xB3, 0xE4, 0x82, 0xEA, 0x02, 0x60, 0x49, 0xE5, 0x42, 0xCB, 0x07, 0x91, 0x06, 0x90, 0x04, 0x63, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x49, 0xF4, 0x58, 0x9A, 0x01, 0x6B, +0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, 0x01, 0x6B, 0xFF, 0x68, 0x6C, 0xEA, 0x8C, 0xE8, 0x06, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF6, 0x10, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x83, 0xF6, 0x8C, 0x40, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF6, 0x00, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x13, 0xF7, 0x80, 0x40, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x84, 0x34, 0x00, 0x6B, 0x51, 0xE4, 0x60, 0xCC, -0x03, 0xF7, 0x8C, 0x40, 0x84, 0x34, 0x51, 0xE4, -0x60, 0xCC, 0x03, 0xF6, 0x8C, 0x40, 0x84, 0x34, -0x51, 0xE4, 0x60, 0xCC, 0x83, 0xF5, 0x8C, 0x40, +0x93, 0xF7, 0x80, 0x40, 0x84, 0x34, 0x51, 0xE4, +0x60, 0xCC, 0x93, 0xF6, 0x80, 0x40, 0x84, 0x34, +0x51, 0xE4, 0x60, 0xCC, 0x13, 0xF6, 0x80, 0x40, 0x84, 0x34, 0x41, 0xE0, 0x51, 0xE4, 0x60, 0xCC, -0x07, 0xF7, 0x78, 0xC0, 0x87, 0xF7, 0x78, 0xC0, +0x28, 0xF0, 0x60, 0xC0, 0xA8, 0xF0, 0x60, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF7, 0x78, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, +0x82, 0xF7, 0x7C, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, 0x50, 0x32, 0x69, 0xE2, 0x60, 0x9A, 0x30, 0xF0, -0x21, 0x6C, 0x30, 0xF3, 0x04, 0x4C, 0x04, 0xD3, +0x21, 0x6C, 0x50, 0xF3, 0x0C, 0x4C, 0x04, 0xD3, 0x61, 0x9A, 0x04, 0x05, 0x10, 0x6E, 0x05, 0xD3, 0x62, 0x9A, 0x06, 0xD3, 0x43, 0x9A, 0x07, 0xD2, -0x00, 0x18, 0x25, 0xC7, 0x09, 0x97, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, -0x80, 0x18, 0x46, 0x46, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x8A, 0xF3, 0x7E, 0xA2, -0x7F, 0x68, 0x01, 0x6C, 0x6C, 0xE8, 0xC3, 0xF4, -0x70, 0x9A, 0x2C, 0xE8, 0x8C, 0xEB, 0x21, 0x23, -0xAA, 0xF3, 0x85, 0xA2, 0xAA, 0xF3, 0xC4, 0xA2, -0x8A, 0xF3, 0xFF, 0xA2, 0x04, 0xD4, 0xAA, 0xF3, -0x88, 0xA2, 0x3F, 0x6B, 0x6C, 0xEE, 0x6C, 0xEC, -0x05, 0xD4, 0xAA, 0xF3, 0x80, 0xA2, 0xB0, 0x67, -0x2C, 0xEE, 0x6C, 0xEC, 0x06, 0xD4, 0xAA, 0xF3, -0x81, 0xA2, 0x8C, 0xEB, 0x07, 0xD3, 0xAA, 0xF3, -0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF6, -0x1C, 0x4C, 0x5E, 0x32, 0x08, 0xD2, 0x80, 0x18, -0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0xC0, 0xF1, -0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x8A, 0xF3, 0x9D, 0xA2, 0x80, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, -0x0B, 0x23, 0xC3, 0xF4, 0x50, 0x9A, 0x01, 0x6B, -0x6C, 0xEA, 0xA0, 0xF1, 0x1D, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xE3, 0xF6, 0x14, 0x4C, 0x10, 0x10, -0xAA, 0xF3, 0xA3, 0xA2, 0x10, 0x6B, 0xAC, 0xEB, -0x8C, 0xEB, 0x0D, 0x23, 0xC3, 0xF4, 0x50, 0x9A, -0x01, 0x6B, 0x6C, 0xEA, 0xA0, 0xF1, 0x0C, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF7, 0x00, 0x4C, -0x80, 0x18, 0x25, 0x42, 0xA5, 0x11, 0xAA, 0xF3, -0x69, 0xA2, 0x3F, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, -0x02, 0x22, 0x3F, 0x72, 0x1E, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF7, 0x58, 0x9A, 0x14, 0x33, -0xFF, 0x6E, 0x49, 0xE3, 0x40, 0xA2, 0x4C, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x8A, 0xF3, 0xBF, 0xA2, 0xCA, 0xED, 0x0D, 0x60, -0xC3, 0xF4, 0x50, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, -0x80, 0xF1, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF7, 0x0C, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x7F, 0x11, 0x30, 0x69, 0x38, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x8A, 0xF0, 0x10, 0x4A, 0x12, 0xE9, -0x25, 0xE2, 0x68, 0xA1, 0x40, 0x6A, 0x6C, 0xEA, -0x10, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, -0x58, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, 0x60, 0xF1, -0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF7, -0x08, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, -0x63, 0x11, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, -0x81, 0xA2, 0xDF, 0xF6, 0x01, 0x4B, 0x8C, 0xEB, -0xAA, 0xF3, 0x61, 0xC2, 0x5F, 0xA1, 0x1F, 0x6E, -0x3F, 0x6F, 0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x64, 0xA2, -0xC3, 0xF4, 0x50, 0x9A, 0x6C, 0xEF, 0x01, 0x6B, -0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xEF, 0x23, 0xF7, 0x14, 0x4C, 0xB8, 0x67, +0x00, 0x18, 0x32, 0xC7, 0x09, 0x97, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, +0x80, 0x18, 0x42, 0x46, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x66, 0xA2, +0x7F, 0x68, 0xC3, 0xF4, 0x90, 0x9A, 0x6C, 0xE8, +0xFF, 0x6B, 0x01, 0x4B, 0x8C, 0xEB, 0x2C, 0xE8, +0x29, 0x23, 0xAA, 0xF3, 0x8D, 0xA2, 0xAA, 0xF3, +0xCC, 0xA2, 0xAA, 0xF3, 0xE7, 0xA2, 0x04, 0xD4, +0xAA, 0xF3, 0x8F, 0xA2, 0x3F, 0x6B, 0x6C, 0xEE, +0x9A, 0x35, 0x05, 0xD5, 0x8A, 0x34, 0x0F, 0x6D, +0xAC, 0xEC, 0x06, 0xD4, 0xAA, 0xF3, 0x90, 0xA2, +0xB0, 0x67, 0x2C, 0xEE, 0x6C, 0xEC, 0x07, 0xD4, +0xAA, 0xF3, 0x88, 0xA2, 0x6C, 0xEC, 0x08, 0xD4, +0xAA, 0xF3, 0x89, 0xA2, 0x8C, 0xEB, 0x09, 0xD3, +0xAA, 0xF3, 0x48, 0xA2, 0x30, 0xF0, 0x20, 0x6C, +0xA3, 0xF6, 0x0C, 0x4C, 0x5E, 0x32, 0x0A, 0xD2, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x64, 0xA2, -0xDF, 0xA1, 0x1F, 0x6D, 0x6C, 0xED, 0x20, 0x6B, -0x6B, 0xEB, 0xCC, 0xEB, 0xAD, 0xEB, 0x7F, 0xC1, -0xAA, 0xF3, 0x60, 0xA2, 0xAA, 0xF3, 0xA8, 0xA2, -0xAA, 0xF3, 0xC1, 0xA2, 0x3F, 0x6C, 0x8C, 0xED, +0x80, 0xF3, 0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, +0xC0, 0xF1, 0x11, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0x85, 0xA2, +0x80, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6C, +0x8C, 0xEB, 0x0B, 0x23, 0xC3, 0xF4, 0x50, 0x9A, +0x01, 0x6B, 0x6C, 0xEA, 0xA0, 0xF1, 0x1F, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF6, 0x10, 0x4C, +0x10, 0x10, 0xAA, 0xF3, 0xAB, 0xA2, 0x10, 0x6B, +0xAC, 0xEB, 0x8C, 0xEB, 0x0D, 0x23, 0xC3, 0xF4, +0x50, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, 0xA0, 0xF1, +0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF6, +0x1C, 0x4C, 0x80, 0x18, 0x25, 0x42, 0xA7, 0x11, +0xAA, 0xF3, 0x71, 0xA2, 0x3F, 0x6A, 0x6C, 0xEA, +0x8C, 0xEA, 0x02, 0x22, 0x3F, 0x72, 0x1E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x5C, 0x9A, +0x14, 0x33, 0xFF, 0x6E, 0x49, 0xE3, 0x40, 0xA2, +0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0xAA, 0xF3, 0xA7, 0xA2, 0xCA, 0xED, +0x0D, 0x60, 0xC3, 0xF4, 0x50, 0x9A, 0x01, 0x6B, +0x6C, 0xEA, 0x80, 0xF1, 0x08, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x03, 0xF7, 0x08, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x81, 0x11, 0x32, 0x69, 0x38, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, 0x18, 0x4A, +0x12, 0xE9, 0x25, 0xE2, 0x68, 0xA1, 0x40, 0x6A, +0x6C, 0xEA, 0x10, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x69, 0xF4, 0x58, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, +0x60, 0xF1, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x23, 0xF7, 0x04, 0x4C, 0xB0, 0x67, 0x80, 0x18, +0x25, 0x42, 0x65, 0x11, 0x80, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x0B, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xAA, 0xF3, 0x89, 0xA2, 0xDF, 0xF6, 0x01, 0x4B, +0x8C, 0xEB, 0xAA, 0xF3, 0x69, 0xC2, 0x20, 0xF0, +0x41, 0xA1, 0x1F, 0x6E, 0x3F, 0x6F, 0x4C, 0xEE, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xAA, 0xF3, 0x6C, 0xA2, 0xC3, 0xF4, 0x50, 0x9A, +0x6C, 0xEF, 0x01, 0x6B, 0x6C, 0xEA, 0x08, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xEF, 0x23, 0xF7, +0x10, 0x4C, 0xB8, 0x67, 0x80, 0x18, 0x25, 0x42, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xAA, 0xF3, 0x6C, 0xA2, 0x20, 0xF0, 0xC1, 0xA1, +0x1F, 0x6D, 0x6C, 0xED, 0x20, 0x6B, 0x6B, 0xEB, +0xCC, 0xEB, 0xAD, 0xEB, 0x20, 0xF0, 0x61, 0xC1, +0xAA, 0xF3, 0x68, 0xA2, 0xAA, 0xF3, 0xB0, 0xA2, +0xAA, 0xF3, 0xC9, 0xA2, 0x3F, 0x6C, 0x8C, 0xED, 0x8C, 0xEE, 0x6C, 0xEC, 0x8D, 0xE6, 0x85, 0x67, 0x6E, 0xEC, 0x0A, 0x2C, 0xC3, 0xF4, 0x50, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, 0x10, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF7, 0x0C, 0x4C, 0x09, 0x10, +0x20, 0x6C, 0x43, 0xF7, 0x08, 0x4C, 0x09, 0x10, 0xC3, 0xF4, 0x50, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF7, -0x18, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, -0x21, 0x6A, 0x30, 0xF3, 0x68, 0xA2, 0x80, 0x6A, +0x14, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, +0x21, 0x6A, 0x50, 0xF3, 0x70, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x00, 0x6B, 0x03, 0x22, 0x6C, 0x81, 0xC0, 0xF7, -0x62, 0x33, 0x30, 0xF0, 0x21, 0x6A, 0x30, 0xF3, -0x91, 0xA2, 0x3F, 0x6A, 0x8C, 0xEA, 0x02, 0x22, +0x62, 0x33, 0x30, 0xF0, 0x21, 0x6A, 0x50, 0xF3, +0x99, 0xA2, 0x3F, 0x6A, 0x8C, 0xEA, 0x02, 0x22, 0x3F, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0xA5, 0xA2, -0x8A, 0xF3, 0x9F, 0xA2, 0xAE, 0xEC, 0x06, 0x2C, -0xAA, 0xF3, 0x40, 0xA2, 0x3F, 0x6C, 0x4C, 0xEC, -0x0A, 0xD4, 0x02, 0x10, 0x00, 0x6D, 0x0A, 0xD5, -0x43, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, -0x6C, 0x40, 0x85, 0xF7, 0x08, 0x4A, 0x64, 0x33, -0x4D, 0xE3, 0x80, 0xAB, 0x0A, 0x97, 0x91, 0xE7, -0x80, 0xCB, 0xC4, 0xF1, 0x6C, 0x40, 0x64, 0x33, -0x4D, 0xE3, 0xAA, 0xF3, 0xA8, 0xA2, 0xC0, 0xAB, +0xA5, 0xF7, 0x08, 0x4A, 0xAA, 0xF3, 0xAD, 0xA2, +0xAA, 0xF3, 0x87, 0xA2, 0xAE, 0xEC, 0x06, 0x2C, +0xAA, 0xF3, 0x48, 0xA2, 0x3F, 0x6C, 0x4C, 0xEC, +0x0C, 0xD4, 0x02, 0x10, 0x00, 0x6D, 0x0C, 0xD5, +0x43, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x54, 0xF1, +0x60, 0x40, 0xA5, 0xF7, 0x08, 0x4A, 0x64, 0x33, +0x4D, 0xE3, 0x80, 0xAB, 0x0C, 0x96, 0x91, 0xE6, +0x80, 0xCB, 0xD4, 0xF1, 0x60, 0x40, 0x64, 0x33, +0x4D, 0xE3, 0xAA, 0xF3, 0xB0, 0xA2, 0xC0, 0xAB, 0x3F, 0x6C, 0x8C, 0xED, 0xB5, 0xE6, 0xA0, 0xCB, -0xC4, 0xF2, 0xAC, 0x40, 0xA4, 0x35, 0x55, 0xE5, -0xAA, 0xF3, 0xC0, 0xA2, 0xE0, 0xAD, 0x8C, 0xEE, -0xD9, 0xE7, 0xC0, 0xCD, 0xAA, 0xF3, 0xC1, 0xA2, -0x44, 0xF2, 0xAC, 0x40, 0xA4, 0x35, 0x55, 0xE5, +0xD4, 0xF2, 0xA0, 0x40, 0xA4, 0x35, 0x55, 0xE5, +0xAA, 0xF3, 0xC8, 0xA2, 0xE0, 0xAD, 0x8C, 0xEE, +0xD9, 0xE7, 0xC0, 0xCD, 0xAA, 0xF3, 0xC9, 0xA2, +0x54, 0xF2, 0xA0, 0x40, 0xA4, 0x35, 0x55, 0xE5, 0xCC, 0xEC, 0xC0, 0xAD, 0x91, 0xE6, 0x80, 0xCD, -0xA0, 0xAB, 0x70, 0xA1, 0x63, 0xED, 0x80, 0xF0, -0x13, 0x61, 0xC3, 0xF4, 0x50, 0x9A, 0x01, 0x6B, -0x6C, 0xEA, 0x07, 0x22, 0xD1, 0xA1, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF7, 0x04, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x90, 0x67, 0x80, 0x18, 0xD6, 0x4F, -0x90, 0x67, 0x80, 0x18, 0xB1, 0x45, 0x80, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF6, 0x6C, 0x40, -0x85, 0xF7, 0x08, 0x4A, 0x64, 0x33, 0x4D, 0xE3, -0x80, 0xAB, 0x0A, 0x95, 0x91, 0xE5, 0x80, 0xCB, -0x83, 0xF5, 0x8C, 0x40, 0x84, 0x34, 0xAA, 0xF3, -0xA8, 0xA2, 0x51, 0xE4, 0xC0, 0xAC, 0x3F, 0x6B, -0x6C, 0xED, 0xB5, 0xE6, 0xA0, 0xCC, 0x03, 0xF7, -0xAC, 0x40, 0xA4, 0x35, 0xAA, 0xF3, 0xC0, 0xA2, -0x55, 0xE5, 0xE0, 0xAD, 0x6C, 0xEE, 0xD9, 0xE7, -0xC0, 0xCD, 0x03, 0xF6, 0xAC, 0x40, 0xA4, 0x35, -0xAA, 0xF3, 0xC1, 0xA2, 0x55, 0xE5, 0xE0, 0xAD, -0x6C, 0xEE, 0xD9, 0xE7, 0xC0, 0xCD, 0x84, 0xF0, -0xAC, 0x40, 0xA4, 0x35, 0x55, 0xE5, 0xC0, 0xAD, -0x0A, 0x97, 0xD9, 0xE7, 0xC0, 0xCD, 0xAA, 0xF3, -0xC8, 0xA2, 0x04, 0xF0, 0xAC, 0x40, 0xA4, 0x35, -0x55, 0xE5, 0xCC, 0xEB, 0xC0, 0xAD, 0x6D, 0xE6, -0x60, 0xCD, 0x80, 0xAC, 0x20, 0xF0, 0x68, 0xA1, -0x63, 0xEC, 0x1A, 0x61, 0x20, 0xF0, 0x6E, 0xA1, -0x17, 0x2B, 0xC3, 0xF4, 0x50, 0x9A, 0x01, 0x6B, -0x6C, 0xEA, 0x09, 0x22, 0x20, 0xF0, 0xC8, 0xA1, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF7, 0x00, 0x4C, -0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, 0x90, 0x67, -0x80, 0x18, 0x69, 0x4E, 0x20, 0xF0, 0x45, 0xA1, -0x01, 0x4A, 0x20, 0xF0, 0x45, 0xC1, 0x24, 0x10, -0x6F, 0xA1, 0x40, 0x6A, 0x6C, 0xEA, 0x20, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, 0x58, 0x9A, -0x01, 0x6B, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF7, 0x14, 0x4C, 0xB0, 0x67, -0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF5, 0x6C, 0x40, 0x64, 0x33, 0x85, 0xF7, -0x08, 0x4A, 0x49, 0xE3, 0x40, 0xAA, 0x03, 0x22, -0x90, 0x67, 0x80, 0x18, 0x69, 0x4E, 0x6F, 0xA1, -0x41, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4F, 0xC1, -0x0A, 0x94, 0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, -0x08, 0x4B, 0xAA, 0xF3, 0xA8, 0xA3, 0xAA, 0xF3, -0xC1, 0xA3, 0xAA, 0xF3, 0xE0, 0xA3, 0x04, 0xD4, -0xAA, 0xF3, 0x84, 0xA3, 0x3F, 0x6A, 0x4C, 0xED, -0x4C, 0xEC, 0x05, 0xD4, 0x8A, 0xF3, 0x9D, 0xA3, -0x1F, 0x6B, 0x4C, 0xEE, 0x8C, 0xEB, 0x4C, 0xEF, -0x90, 0x67, 0x06, 0xD3, 0x80, 0x18, 0xC4, 0x45, -0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF0, 0x70, 0xA2, 0x82, 0xF0, 0x10, 0x4A, -0x60, 0xC4, 0x41, 0xA2, 0x40, 0xC5, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, 0x78, 0x9B, -0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x71, 0xE4, -0x60, 0xA4, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, 0x70, 0x9B, -0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x71, 0xE4, -0x60, 0xA4, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x40, 0xA4, 0x60, 0xA5, 0x60, 0xC4, 0x40, 0xC5, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, -0x0C, 0x5C, 0x13, 0x61, 0x2C, 0x5C, 0x06, 0x60, -0x48, 0x44, 0xFC, 0x4A, 0x4F, 0x32, 0x01, 0x4A, -0x6C, 0xEA, 0x20, 0xE8, 0x36, 0x5C, 0x09, 0x61, -0x40, 0x5C, 0x02, 0x6A, 0x07, 0x61, 0x4A, 0x5C, -0x03, 0x6A, 0x04, 0x61, 0x54, 0x5C, 0x04, 0x6A, -0x01, 0x61, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xAA, 0xEC, 0x64, 0x6A, 0x31, 0x60, 0x2F, 0x24, -0x83, 0xED, 0x2D, 0x61, 0x02, 0xF0, 0x00, 0x5D, -0x04, 0x6A, 0x0C, 0x61, 0x04, 0xF0, 0x00, 0x5D, -0x03, 0x6A, 0x08, 0x61, 0x08, 0xF0, 0x00, 0x5D, -0x02, 0x6A, 0x04, 0x61, 0xEF, 0xF7, 0x1E, 0x4A, -0x43, 0xED, 0x58, 0x67, 0xA4, 0xEA, 0x84, 0xEA, -0x00, 0x6B, 0x01, 0x6A, 0xA6, 0x35, 0x83, 0xED, -0x11, 0x60, 0x81, 0xF4, 0x00, 0x6E, 0xC7, 0xEB, -0xC9, 0xE2, 0x01, 0x75, 0xFF, 0xF7, 0x1F, 0x6E, -0xCC, 0xEA, 0xB3, 0xE4, 0x04, 0x61, 0x02, 0x5C, -0x04, 0x60, 0x01, 0x74, 0x06, 0x60, 0x02, 0x2C, -0x04, 0x10, 0x02, 0x6D, 0x01, 0x4B, 0x0C, 0x73, -0xE9, 0x61, 0x5A, 0x32, 0x01, 0x10, 0x00, 0x6A, -0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6B, 0x8C, 0xEB, -0xC2, 0xF2, 0x84, 0x9A, 0xFE, 0x63, 0xC2, 0xF2, -0x04, 0x4A, 0x00, 0xD4, 0x81, 0x9A, 0x44, 0xAA, -0x00, 0xF0, 0x0A, 0x05, 0x01, 0xD4, 0x9D, 0x67, -0x44, 0xCC, 0x40, 0xA4, 0x43, 0xEB, 0x05, 0x61, -0x01, 0x4B, 0x4B, 0xE3, 0xFF, 0x6B, 0x6C, 0xEA, -0x04, 0x10, 0x01, 0x4C, 0xAA, 0xEC, 0xF5, 0x61, -0x00, 0x6A, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, -0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, 0x7F, 0x6B, -0x82, 0x67, 0x6C, 0xEC, 0x80, 0x18, 0x9C, 0x47, -0x30, 0x6B, 0x78, 0xE8, 0x14, 0x6C, 0x30, 0xF0, -0x20, 0x6B, 0x8A, 0xF0, 0x10, 0x4B, 0x12, 0xE8, -0x0D, 0xE3, 0x98, 0xEA, 0x12, 0xEA, 0x20, 0xF0, -0x48, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, -0x45, 0x67, 0x30, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, -0x20, 0x6D, 0x8A, 0xF0, 0x10, 0x4D, 0x6C, 0xEA, -0x12, 0xEC, 0x95, 0xE5, 0xC0, 0xA5, 0x81, 0xA5, -0x30, 0xF0, 0x20, 0x6D, 0x8D, 0xF2, 0xFC, 0xA5, -0x04, 0x6D, 0xEC, 0xED, 0x6C, 0xED, 0x16, 0x2D, -0xFF, 0x72, 0x02, 0x61, 0x43, 0x67, 0x20, 0xE8, -0x7F, 0x6D, 0xAC, 0xEE, 0x4C, 0xED, 0xA3, 0xEE, -0x0A, 0x60, 0x80, 0x6C, 0x8B, 0xEC, 0x4C, 0xEC, -0xCD, 0xEC, 0x00, 0xF6, 0x80, 0x32, 0x00, 0xF6, -0x43, 0x32, 0x6C, 0xEA, 0x20, 0xE8, 0x83, 0xED, -0x01, 0x60, 0x44, 0x67, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x4C, 0xEE, 0x4C, 0xEC, 0x4C, 0xED, -0x06, 0x26, 0x2C, 0x5C, 0x04, 0x61, 0x68, 0x44, -0xE8, 0x4B, 0x4C, 0xEB, 0x01, 0x10, 0x64, 0x67, -0x20, 0x5B, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF7, 0x44, 0x9A, 0xAC, 0x35, 0xE0, 0x4B, -0x55, 0xE5, 0x40, 0x9D, 0xFF, 0x6D, 0xAC, 0xEB, -0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x5C, 0x9A, 0xAC, 0x35, 0x55, 0xE5, 0x40, 0x9D, -0x01, 0x6D, 0xA4, 0xEB, 0x4C, 0xED, 0xFF, 0x6A, -0x01, 0x25, 0x44, 0x67, 0x20, 0xE8, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x4C, 0xEE, 0x30, 0x68, 0x18, 0xEE, -0x30, 0xF0, 0x20, 0x6B, 0x8A, 0xF0, 0x10, 0x4B, -0x4C, 0xED, 0x4C, 0xEC, 0x27, 0x67, 0x01, 0x75, -0x09, 0xD6, 0x4C, 0xE9, 0x12, 0xE8, 0x01, 0xE3, -0x7F, 0x6B, 0x6C, 0xEC, 0x1F, 0x61, 0x0C, 0x5C, -0x05, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF2, -0x00, 0x4A, 0x1E, 0x10, 0x0A, 0x29, 0xF4, 0x4C, -0x4C, 0xEC, 0x03, 0x6A, 0x58, 0xEC, 0x30, 0xF0, -0x20, 0x6A, 0xC5, 0xF3, 0x04, 0x4A, 0x12, 0xEC, -0x36, 0x10, 0x2C, 0x5C, 0xC0, 0xF0, 0x0F, 0x61, -0xD4, 0x4C, 0x4C, 0xEC, 0x03, 0x6A, 0x58, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0x65, 0xF3, 0x08, 0x4A, -0x12, 0xEC, 0x29, 0x10, 0x0C, 0x5C, 0x10, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF2, 0x0C, 0x4A, -0x91, 0xE2, 0x80, 0xA4, 0x09, 0x95, 0xD1, 0x67, -0x80, 0x18, 0xD2, 0x47, 0x8C, 0xA0, 0x19, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0x6C, 0xC0, 0xB4, 0x10, -0x0A, 0x29, 0xF4, 0x4C, 0x4C, 0xEC, 0x03, 0x6A, -0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x65, 0xF4, -0x08, 0x4A, 0x12, 0xEC, 0x0C, 0x10, 0x2C, 0x5C, -0xA0, 0xF0, 0x05, 0x61, 0xD4, 0x4C, 0x4C, 0xEC, -0x03, 0x6A, 0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, -0x05, 0xF4, 0x0C, 0x4A, 0x12, 0xEC, 0x89, 0xE2, -0x08, 0xD2, 0x01, 0x6A, 0x4B, 0xEA, 0x7D, 0x67, -0x00, 0x6C, 0x50, 0xC3, 0x51, 0xC3, 0x52, 0xC3, -0x07, 0xD4, 0x06, 0xD4, 0x07, 0x94, 0x08, 0x93, -0x89, 0xE3, 0x80, 0xA2, 0x2C, 0x74, 0x03, 0x61, -0x2C, 0x6C, 0x01, 0x29, 0x0C, 0x6C, 0x09, 0x95, -0xD1, 0x67, 0x80, 0x18, 0xD2, 0x47, 0xFF, 0x72, -0x08, 0x60, 0x06, 0x94, 0xBD, 0x67, 0x8D, 0xE5, -0x50, 0xC3, 0x01, 0x4C, 0xFF, 0x6A, 0x4C, 0xEC, -0x06, 0xD4, 0x07, 0x95, 0x01, 0x4D, 0x03, 0x75, -0x07, 0xD5, 0xE4, 0x61, 0x06, 0x92, 0x05, 0x2A, -0x6C, 0xA0, 0xE7, 0x4A, 0x6C, 0xEA, 0x4C, 0xC0, -0x6E, 0x10, 0x7A, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, -0x1F, 0x22, 0x6F, 0xA0, 0x30, 0x6A, 0x6C, 0xEA, +0xA0, 0xAB, 0x71, 0xA1, 0x63, 0xED, 0x80, 0xF0, +0x12, 0x61, 0xC3, 0xF4, 0x50, 0x9A, 0x01, 0x6B, +0x6C, 0xEA, 0x07, 0x22, 0xD2, 0xA1, 0x30, 0xF0, +0x20, 0x6C, 0x63, 0xF7, 0x00, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x90, 0x67, 0x80, 0x18, 0x2D, 0x50, +0x90, 0x67, 0x80, 0x18, 0xAD, 0x45, 0x7F, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x13, 0xF7, 0x60, 0x40, +0xA5, 0xF7, 0x08, 0x4A, 0x64, 0x33, 0x4D, 0xE3, +0x80, 0xAB, 0x0C, 0x95, 0x91, 0xE5, 0x13, 0xF6, +0xA0, 0x40, 0x80, 0xCB, 0xA4, 0x35, 0xAA, 0xF3, +0x70, 0xA2, 0x55, 0xE5, 0xC0, 0xAD, 0x3F, 0x6C, +0x8C, 0xEB, 0x6D, 0xE6, 0x60, 0xCD, 0x93, 0xF7, +0x60, 0x40, 0x64, 0x33, 0xAA, 0xF3, 0xC8, 0xA2, +0x4D, 0xE3, 0xE0, 0xAB, 0x8C, 0xEE, 0xD9, 0xE7, +0xC0, 0xCB, 0x93, 0xF6, 0x60, 0x40, 0x64, 0x33, +0xAA, 0xF3, 0xC9, 0xA2, 0x4D, 0xE3, 0xE0, 0xAB, +0x8C, 0xEE, 0xD9, 0xE7, 0xC0, 0xCB, 0x0C, 0x96, +0x4D, 0xE0, 0xC6, 0x37, 0xA8, 0xF1, 0xC0, 0xA3, +0xD9, 0xE7, 0xA8, 0xF1, 0xC0, 0xC3, 0xAA, 0xF3, +0xD0, 0xA2, 0xCC, 0xEC, 0x28, 0xF1, 0xC0, 0xA3, +0x87, 0x34, 0xD1, 0xE4, 0x28, 0xF1, 0x80, 0xC3, +0x80, 0xAD, 0x20, 0xF0, 0x6A, 0xA1, 0x63, 0xEC, +0x1A, 0x61, 0x20, 0xF0, 0x70, 0xA1, 0x17, 0x2B, +0xC3, 0xF4, 0x50, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, +0x09, 0x22, 0x20, 0xF0, 0xCA, 0xA1, 0x30, 0xF0, +0x20, 0x6C, 0x63, 0xF7, 0x1C, 0x4C, 0xB0, 0x67, +0x80, 0x18, 0x25, 0x42, 0x90, 0x67, 0x80, 0x18, +0xBA, 0x4E, 0x20, 0xF0, 0x47, 0xA1, 0x01, 0x4A, +0x20, 0xF0, 0x47, 0xC1, 0x24, 0x10, 0x70, 0xA1, +0x40, 0x6A, 0x6C, 0xEA, 0x20, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, 0x01, 0x6B, +0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x83, 0xF7, 0x10, 0x4C, 0xB0, 0x67, 0x80, 0x18, +0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0x13, 0xF6, +0x60, 0x40, 0x64, 0x33, 0xA5, 0xF7, 0x08, 0x4A, +0x49, 0xE3, 0x40, 0xAA, 0x03, 0x22, 0x90, 0x67, +0x80, 0x18, 0xBA, 0x4E, 0x70, 0xA1, 0x41, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x50, 0xC1, 0x0C, 0x94, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0xAA, 0xF3, 0xB0, 0xA3, 0xAA, 0xF3, 0xC9, 0xA3, +0xAA, 0xF3, 0xE8, 0xA3, 0x04, 0xD4, 0xAA, 0xF3, +0x8C, 0xA3, 0x3F, 0x6A, 0x4C, 0xED, 0x4C, 0xEC, +0x05, 0xD4, 0xAA, 0xF3, 0x85, 0xA3, 0x1F, 0x6B, +0x4C, 0xEE, 0x8C, 0xEB, 0x4C, 0xEF, 0x90, 0x67, +0x06, 0xD3, 0x80, 0x18, 0xC0, 0x45, 0x11, 0x97, +0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF0, 0x70, 0xA2, +0x82, 0xF0, 0x10, 0x4A, 0x60, 0xC4, 0x41, 0xA2, +0x40, 0xC5, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF7, 0x7C, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, +0x94, 0x34, 0x71, 0xE4, 0x60, 0xA4, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF7, 0x74, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, +0x94, 0x34, 0x71, 0xE4, 0x60, 0xA4, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x40, 0xA4, 0x60, 0xA5, +0x60, 0xC4, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6B, 0x6C, 0xEC, 0x0C, 0x5C, 0x13, 0x61, +0x2C, 0x5C, 0x06, 0x60, 0x48, 0x44, 0xFC, 0x4A, +0x4F, 0x32, 0x01, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, +0x36, 0x5C, 0x09, 0x61, 0x40, 0x5C, 0x02, 0x6A, +0x07, 0x61, 0x4A, 0x5C, 0x03, 0x6A, 0x04, 0x61, +0x54, 0x5C, 0x04, 0x6A, 0x01, 0x61, 0x01, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xAA, 0xEC, 0x64, 0x6A, +0x31, 0x60, 0x2F, 0x24, 0x83, 0xED, 0x2D, 0x61, +0x02, 0xF0, 0x00, 0x5D, 0x04, 0x6A, 0x0C, 0x61, +0x04, 0xF0, 0x00, 0x5D, 0x03, 0x6A, 0x08, 0x61, +0x08, 0xF0, 0x00, 0x5D, 0x02, 0x6A, 0x04, 0x61, +0xEF, 0xF7, 0x1E, 0x4A, 0x43, 0xED, 0x58, 0x67, +0xA4, 0xEA, 0x84, 0xEA, 0x00, 0x6B, 0x01, 0x6A, +0xA6, 0x35, 0x83, 0xED, 0x11, 0x60, 0x81, 0xF4, +0x00, 0x6E, 0xC7, 0xEB, 0xC9, 0xE2, 0x01, 0x75, +0xFF, 0xF7, 0x1F, 0x6E, 0xCC, 0xEA, 0xB3, 0xE4, +0x04, 0x61, 0x02, 0x5C, 0x04, 0x60, 0x01, 0x74, +0x06, 0x60, 0x02, 0x2C, 0x04, 0x10, 0x02, 0x6D, +0x01, 0x4B, 0x0C, 0x73, 0xE9, 0x61, 0x5A, 0x32, +0x01, 0x10, 0x00, 0x6A, 0xFF, 0x6B, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x6B, 0x8C, 0xEB, 0xC2, 0xF2, 0x84, 0x9A, +0xFE, 0x63, 0xC2, 0xF2, 0x04, 0x4A, 0x00, 0xD4, +0x81, 0x9A, 0x44, 0xAA, 0x00, 0xF0, 0x0A, 0x05, +0x01, 0xD4, 0x9D, 0x67, 0x44, 0xCC, 0x40, 0xA4, +0x43, 0xEB, 0x05, 0x61, 0x01, 0x4B, 0x4B, 0xE3, +0xFF, 0x6B, 0x6C, 0xEA, 0x04, 0x10, 0x01, 0x4C, +0xAA, 0xEC, 0xF5, 0x61, 0x00, 0x6A, 0x02, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, +0xAC, 0xEA, 0x7F, 0x6B, 0x82, 0x67, 0x6C, 0xEC, +0x80, 0x18, 0x9D, 0x47, 0x32, 0x6B, 0x78, 0xE8, +0x14, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0xAA, 0xF0, +0x18, 0x4B, 0x12, 0xE8, 0x0D, 0xE3, 0x98, 0xEA, +0x12, 0xEA, 0x20, 0xF0, 0x4A, 0xC3, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6B, 0x6C, 0xEC, 0x45, 0x67, 0x32, 0x6D, +0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6D, 0xAA, 0xF0, +0x18, 0x4D, 0x6C, 0xEA, 0x12, 0xEC, 0x95, 0xE5, +0xC0, 0xA5, 0x81, 0xA5, 0x30, 0xF0, 0x20, 0x6D, +0xCD, 0xF3, 0xE4, 0xA5, 0x04, 0x6D, 0xEC, 0xED, +0x6C, 0xED, 0x16, 0x2D, 0xFF, 0x72, 0x02, 0x61, +0x43, 0x67, 0x20, 0xE8, 0x7F, 0x6D, 0xAC, 0xEE, +0x4C, 0xED, 0xA3, 0xEE, 0x0A, 0x60, 0x80, 0x6C, +0x8B, 0xEC, 0x4C, 0xEC, 0xCD, 0xEC, 0x00, 0xF6, +0x80, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x6C, 0xEA, +0x20, 0xE8, 0x83, 0xED, 0x01, 0x60, 0x44, 0x67, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEE, +0x4C, 0xEC, 0x4C, 0xED, 0x06, 0x26, 0x2C, 0x5C, +0x04, 0x61, 0x68, 0x44, 0xE8, 0x4B, 0x4C, 0xEB, +0x01, 0x10, 0x64, 0x67, 0x20, 0x5B, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x48, 0x9A, +0xAC, 0x35, 0xE0, 0x4B, 0x55, 0xE5, 0x40, 0x9D, +0xFF, 0x6D, 0xAC, 0xEB, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF7, 0x40, 0x9A, 0xAC, 0x35, +0x55, 0xE5, 0x40, 0x9D, 0x01, 0x6D, 0xA4, 0xEB, +0x4C, 0xED, 0xFF, 0x6A, 0x01, 0x25, 0x44, 0x67, +0x20, 0xE8, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x6A, 0x4C, 0xEF, +0x32, 0x68, 0x18, 0xEF, 0x14, 0x91, 0x30, 0xF0, +0x20, 0x6B, 0xAA, 0xF0, 0x18, 0x4B, 0x4C, 0xEE, +0x4C, 0xEC, 0x4C, 0xED, 0x01, 0x76, 0x0B, 0xD4, +0x09, 0xD5, 0x0A, 0xD7, 0x4C, 0xE9, 0x12, 0xE8, +0x01, 0xE3, 0x7F, 0x6B, 0x8C, 0xEB, 0x1F, 0x61, +0x0C, 0x5B, 0x05, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x45, 0xF2, 0x08, 0x4A, 0x1E, 0x10, 0x0A, 0x29, +0xF4, 0x4B, 0x4C, 0xEB, 0x03, 0x6A, 0x58, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0xE5, 0xF3, 0x04, 0x4A, +0x12, 0xEB, 0x36, 0x10, 0x2C, 0x5B, 0x00, 0xF1, +0x01, 0x61, 0xD4, 0x4B, 0x4C, 0xEB, 0x03, 0x6A, +0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF3, +0x08, 0x4A, 0x12, 0xEB, 0x29, 0x10, 0x0C, 0x5B, +0x10, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF2, +0x14, 0x4A, 0x6D, 0xE2, 0x80, 0xA3, 0x0A, 0x95, +0xD1, 0x67, 0x80, 0x18, 0xD3, 0x47, 0x8C, 0xA0, +0x19, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x6C, 0xC0, +0xE6, 0x10, 0x0A, 0x29, 0xF4, 0x4B, 0x4C, 0xEB, +0x03, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF4, 0x08, 0x4A, 0x12, 0xEB, 0x0C, 0x10, +0x2C, 0x5B, 0xC0, 0xF0, 0x17, 0x61, 0xD4, 0x4B, +0x4C, 0xEB, 0x03, 0x6A, 0x58, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x25, 0xF4, 0x0C, 0x4A, 0x12, 0xEB, +0x69, 0xE2, 0x08, 0xD2, 0x01, 0x6A, 0x4B, 0xEA, +0x7D, 0x67, 0x00, 0x6C, 0x50, 0xC3, 0x51, 0xC3, +0x52, 0xC3, 0x07, 0xD4, 0x06, 0xD4, 0x07, 0x94, +0x08, 0x93, 0x89, 0xE3, 0x80, 0xA2, 0x2C, 0x74, +0x03, 0x61, 0x2C, 0x6C, 0x01, 0x29, 0x0C, 0x6C, +0x0A, 0x95, 0xD1, 0x67, 0x80, 0x18, 0xD3, 0x47, +0xFF, 0x72, 0x08, 0x60, 0x06, 0x94, 0xBD, 0x67, +0x8D, 0xE5, 0x50, 0xC3, 0x01, 0x4C, 0xFF, 0x6A, +0x4C, 0xEC, 0x06, 0xD4, 0x07, 0x95, 0x01, 0x4D, +0x03, 0x75, 0x07, 0xD5, 0xE4, 0x61, 0x06, 0x92, +0x05, 0x2A, 0x6C, 0xA0, 0xE7, 0x4A, 0x6C, 0xEA, +0x4C, 0xC0, 0xA0, 0x10, 0x7C, 0xA0, 0x02, 0x6A, +0x6C, 0xEA, 0x1F, 0x22, 0x70, 0xA0, 0x30, 0x6A, +0x6C, 0xEA, 0x20, 0x72, 0x1A, 0x61, 0x05, 0x21, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF5, 0x1C, 0x4A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF5, +0x14, 0x4A, 0x9D, 0x67, 0x71, 0xA4, 0x2D, 0x5B, +0x01, 0x61, 0xE0, 0x4B, 0x40, 0x9A, 0x01, 0x6C, +0x84, 0xEB, 0x4C, 0xEC, 0x29, 0x24, 0x04, 0x04, +0x00, 0xF0, 0x11, 0x05, 0x80, 0x18, 0x71, 0x47, +0x23, 0x10, 0x7C, 0xA0, 0x40, 0x6A, 0x6C, 0xEA, +0x1F, 0x22, 0x70, 0xA0, 0x30, 0x6A, 0x6C, 0xEA, 0x20, 0x72, 0x1A, 0x61, 0x05, 0x21, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF5, 0x1C, 0x4A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF5, 0x14, 0x4A, -0x9D, 0x67, 0x71, 0xA4, 0x2D, 0x5B, 0x01, 0x61, +0x20, 0x6A, 0xC5, 0xF5, 0x0C, 0x4A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF5, 0x04, 0x4A, +0xBD, 0x67, 0x71, 0xA5, 0x2D, 0x5B, 0x01, 0x61, 0xE0, 0x4B, 0x40, 0x9A, 0x01, 0x6C, 0x84, 0xEB, -0x4C, 0xEC, 0x29, 0x24, 0x04, 0x04, 0x00, 0xF0, -0x11, 0x05, 0x80, 0x18, 0x70, 0x47, 0x23, 0x10, -0x7A, 0xA0, 0x40, 0x6A, 0x6C, 0xEA, 0x1F, 0x22, -0x6F, 0xA0, 0x30, 0x6A, 0x6C, 0xEA, 0x20, 0x72, -0x1A, 0x61, 0x05, 0x21, 0x30, 0xF0, 0x20, 0x6A, -0xA5, 0xF5, 0x0C, 0x4A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA5, 0xF5, 0x04, 0x4A, 0xBD, 0x67, -0x71, 0xA5, 0x2D, 0x5B, 0x01, 0x61, 0xE0, 0x4B, -0x40, 0x9A, 0x01, 0x6C, 0x84, 0xEB, 0x4C, 0xEC, -0x06, 0x24, 0x7D, 0x67, 0x51, 0xA3, 0x50, 0xC3, -0x01, 0x6A, 0x4B, 0xEA, 0x51, 0xC3, 0x9D, 0x67, -0x71, 0xA4, 0xFF, 0x73, 0x0B, 0x60, 0x52, 0xA4, -0xFF, 0x72, 0x08, 0x60, 0x65, 0xC0, 0x6C, 0xA0, -0x44, 0xC0, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x10, 0x6B, 0x14, 0x10, 0xBD, 0x67, 0x51, 0xA5, -0xFF, 0x72, 0x03, 0x60, 0x72, 0xA5, 0xFF, 0x73, -0x07, 0x60, 0x7D, 0x67, 0x51, 0xA3, 0xFF, 0x72, -0x0B, 0x61, 0x52, 0xA3, 0xFF, 0x72, 0x08, 0x60, -0x6C, 0xA0, 0x44, 0xC0, 0x19, 0x6A, 0x4B, 0xEA, +0x4C, 0xEC, 0x06, 0x24, 0x7D, 0x67, 0x51, 0xA3, +0x50, 0xC3, 0x01, 0x6A, 0x4B, 0xEA, 0x51, 0xC3, +0x9D, 0x67, 0x71, 0xA4, 0xFF, 0x73, 0x15, 0x60, +0x52, 0xA4, 0xFF, 0x72, 0x12, 0x60, 0xA7, 0x44, +0x65, 0xC0, 0x1D, 0x4D, 0xA0, 0xA5, 0x44, 0xC0, +0x47, 0x44, 0x20, 0xF0, 0xA9, 0xC0, 0x1D, 0x4A, +0x40, 0xA2, 0x6C, 0xA0, 0x20, 0xF0, 0x48, 0xC0, +0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x10, 0x6B, +0x21, 0x10, 0x7D, 0x67, 0x51, 0xA3, 0xFF, 0x72, +0x0B, 0x60, 0x72, 0xA3, 0xFF, 0x73, 0x08, 0x61, +0x9D, 0x67, 0xA7, 0x44, 0x44, 0xC0, 0x1D, 0x4D, +0x80, 0xA5, 0x20, 0xF0, 0x88, 0xC0, 0x0D, 0x10, +0xBD, 0x67, 0x51, 0xA5, 0xFF, 0x72, 0x10, 0x61, +0x52, 0xA5, 0xFF, 0x72, 0x0D, 0x60, 0x44, 0xC0, +0x47, 0x45, 0x1D, 0x4A, 0x40, 0xA2, 0x20, 0xF0, +0x48, 0xC0, 0x6C, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x08, 0x6B, 0x6D, 0xEA, 0x4C, 0xC0, -0x9D, 0x67, 0x50, 0xA4, 0x01, 0x10, 0xFF, 0x6A, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD1, -0x00, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0x6B, -0x78, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x8A, 0xF0, -0x10, 0x4B, 0x06, 0x67, 0x4C, 0xE8, 0xE0, 0xA5, -0x12, 0xEC, 0x91, 0xE3, 0xCC, 0xA4, 0x03, 0x6B, -0xCC, 0xEB, 0x4C, 0xEB, 0x54, 0x23, 0x04, 0x6B, -0xCC, 0xEB, 0x4C, 0xEB, 0x50, 0x23, 0xDF, 0xA4, -0x20, 0x6B, 0x6B, 0xEB, 0xCC, 0xEB, 0x4C, 0xEB, -0x4A, 0x23, 0x7F, 0xA4, 0x0A, 0x69, 0x7F, 0x6E, -0x76, 0x33, 0xFF, 0x4B, 0x38, 0xEB, 0xEC, 0xEE, -0x12, 0xEB, 0x4C, 0xEB, 0x27, 0x43, 0x2C, 0x49, -0x22, 0xEE, 0x3D, 0x61, 0x80, 0x69, 0x7B, 0xE6, -0x02, 0x70, 0xEC, 0xE9, 0x4C, 0xEE, 0x11, 0x61, -0x33, 0x76, 0x35, 0x60, 0x02, 0x21, 0xC4, 0xC4, -0x02, 0x10, 0x4F, 0x46, 0x44, 0xC4, 0x80, 0x6A, -0xEF, 0x46, 0x4B, 0xEA, 0x4D, 0xEF, 0xFF, 0x6A, -0x4C, 0xEF, 0xCC, 0xA4, 0xFF, 0xF6, 0x08, 0x4A, -0x17, 0x10, 0x35, 0x76, 0x24, 0x60, 0x34, 0x76, -0x03, 0x61, 0xB5, 0x6F, 0x15, 0x29, 0x06, 0x10, -0x05, 0x21, 0x80, 0x68, 0xE1, 0x46, 0x0B, 0xE8, -0x0D, 0xEF, 0x04, 0x10, 0x80, 0x6F, 0xEB, 0xEF, -0xCD, 0xEF, 0xFF, 0x6A, 0x01, 0x4E, 0xC4, 0xC4, -0xCC, 0xA4, 0x4C, 0xEF, 0x19, 0x6A, 0x4B, 0xEA, -0xCC, 0xEA, 0x08, 0x6E, 0xCD, 0xEA, 0x4C, 0xC4, -0xCC, 0xA4, 0x18, 0x6A, 0xCC, 0xEA, 0x03, 0x22, -0x44, 0xA4, 0x49, 0xE3, 0x44, 0xC4, 0x6D, 0xE7, -0x60, 0xC5, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x01, 0x91, 0x00, 0x90, 0x01, 0x63, 0x20, 0xE8, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0x6B, 0x78, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x8A, 0xF0, 0x10, 0x4C, -0x12, 0xEB, 0x6D, 0xE4, 0x03, 0x2E, 0x25, 0x67, -0x00, 0x68, 0x02, 0x10, 0x26, 0x67, 0x20, 0x68, -0x1F, 0x6C, 0x00, 0xF6, 0x80, 0x37, 0x00, 0xF6, -0xE3, 0x37, 0x1F, 0x65, 0x01, 0x6F, 0xE4, 0xEC, -0x2C, 0xEF, 0x10, 0x27, 0xEC, 0xA3, 0x38, 0x67, -0x21, 0xE0, 0x1F, 0x65, 0x38, 0x67, 0x03, 0x6F, -0xFF, 0x6C, 0x2C, 0xEF, 0x8C, 0xEF, 0x8C, 0xE8, -0x09, 0x27, 0x0C, 0x58, 0x07, 0x61, 0x20, 0x48, -0x8C, 0xE8, 0x04, 0x10, 0xFF, 0x4C, 0xE1, 0x44, -0xE4, 0x2F, 0x00, 0x68, 0x00, 0x69, 0x02, 0x2D, -0xA6, 0x67, 0x20, 0x69, 0x00, 0x6C, 0x01, 0x6F, -0xE4, 0xEC, 0x00, 0xF6, 0x80, 0x36, 0xAC, 0xEF, -0x00, 0xF6, 0xC3, 0x36, 0x0D, 0x27, 0xC5, 0xE1, -0xCC, 0xA3, 0x03, 0x6D, 0xFF, 0x6C, 0xCC, 0xED, -0x8C, 0xED, 0x8C, 0xE9, 0x09, 0x25, 0x0C, 0x59, -0x07, 0x61, 0x20, 0x49, 0x8C, 0xE9, 0x04, 0x10, -0x01, 0x4C, 0x20, 0x74, 0xE8, 0x61, 0x00, 0x69, -0x00, 0xC3, 0x21, 0xC3, 0x82, 0x67, 0x80, 0x18, -0x64, 0x47, 0x7F, 0x6B, 0x4C, 0xEB, 0x63, 0xE8, -0x50, 0x67, 0x09, 0x61, 0xFF, 0x6A, 0x83, 0x67, -0x4C, 0xEB, 0x2C, 0xEA, 0x43, 0xEB, 0x01, 0x60, -0x91, 0x67, 0xFF, 0x6A, 0x8C, 0xEA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF7, 0xDC, 0x9A, 0x03, 0x6A, 0x02, 0x68, -0x40, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, -0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0xFC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, -0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, -0x88, 0x9A, 0x01, 0x6A, 0xE0, 0xDD, 0x80, 0xDB, -0x00, 0xC6, 0xE0, 0xDD, 0x80, 0xDB, 0x40, 0xC6, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, 0x4C, 0x9A, -0x40, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x80, 0xDB, 0xA7, 0xF1, 0x11, 0xC2, -0x00, 0x68, 0x00, 0xC6, 0xE0, 0xDD, 0x80, 0xDB, -0x04, 0x6B, 0xA7, 0xF1, 0x70, 0xC2, 0x01, 0x90, -0x01, 0x63, 0x20, 0xE8, 0xE5, 0x63, 0x35, 0x62, -0x34, 0xD1, 0x33, 0xD0, 0x30, 0xF0, 0x20, 0x6D, -0x07, 0x04, 0x62, 0xF2, 0x10, 0x4D, 0x54, 0x6E, -0x00, 0x18, 0x25, 0xC7, 0x30, 0xF0, 0x20, 0x6D, -0x1C, 0x04, 0x02, 0xF2, 0x1C, 0x4D, 0x54, 0x6E, -0x00, 0x18, 0x25, 0xC7, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF2, 0x70, 0x9A, 0x02, 0xF2, 0x10, 0x4A, -0x00, 0x69, 0x04, 0xD3, 0x61, 0x9A, 0x44, 0xAA, -0x05, 0xD3, 0x7D, 0x67, 0x4C, 0xCB, 0x30, 0x68, -0x18, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x8A, 0xF0, -0x10, 0x4A, 0x00, 0x6C, 0x33, 0x6D, 0x01, 0x49, -0x12, 0xE8, 0x01, 0xE2, 0x68, 0xA0, 0x20, 0x6A, -0xC7, 0xA0, 0x4B, 0xEA, 0x6C, 0xEA, 0x09, 0x6B, -0x6D, 0xEA, 0xEA, 0x4B, 0xCC, 0xEB, 0x04, 0x6E, -0xEC, 0xA0, 0xCB, 0xEE, 0xCC, 0xEB, 0x67, 0xC0, -0x04, 0x6B, 0xED, 0xEB, 0xCC, 0xEB, 0x20, 0x6E, -0xCD, 0xEA, 0x40, 0x6E, 0xCD, 0xEA, 0xDA, 0xA0, -0x48, 0xC0, 0x03, 0x6A, 0x4B, 0xEA, 0xCC, 0xEA, -0x41, 0x6E, 0xCB, 0xEE, 0xCC, 0xEA, 0xCF, 0xA0, -0x81, 0xC0, 0x82, 0xC0, 0x99, 0xC0, 0x31, 0x6C, -0x8B, 0xEC, 0xCC, 0xEC, 0x8F, 0xC0, 0x7F, 0x6C, -0x8C, 0xEB, 0x00, 0x6C, 0x8A, 0xC0, 0x8A, 0xC8, -0xDF, 0x4C, 0x8C, 0xEA, 0x8D, 0xA0, 0x5A, 0xC0, -0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x6C, 0xC0, -0x4D, 0xC0, 0x00, 0x6B, 0x01, 0x6A, 0xA0, 0xC0, -0xA6, 0xC0, 0x7F, 0xC0, 0x20, 0xF0, 0x6E, 0xC0, -0x20, 0xF0, 0x48, 0xC0, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x48, 0x9B, 0x87, 0x40, 0x1A, 0x4C, +0x0B, 0x93, 0x80, 0x6A, 0x9D, 0x67, 0x6C, 0xEA, +0x70, 0xA4, 0x2D, 0x5B, 0x02, 0x61, 0x4D, 0xEB, +0x70, 0xC4, 0x64, 0xA0, 0xFF, 0x6D, 0x88, 0x43, +0xDB, 0x4C, 0xAC, 0xEC, 0xD2, 0x5C, 0x02, 0x60, +0x4D, 0xEB, 0x64, 0xC0, 0x65, 0xA0, 0xFF, 0x6D, +0x88, 0x43, 0xDB, 0x4C, 0xAC, 0xEC, 0xD2, 0x5C, +0x02, 0x60, 0x6D, 0xEA, 0x45, 0xC0, 0xBD, 0x67, +0x50, 0xA5, 0x01, 0x10, 0xFF, 0x6A, 0x0F, 0x97, +0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, +0xFE, 0x63, 0x03, 0xD1, 0x02, 0xD0, 0xFF, 0x6A, +0x4C, 0xEC, 0x32, 0x6B, 0x78, 0xEC, 0x30, 0xF0, +0x20, 0x6B, 0x4C, 0xEF, 0xAA, 0xF0, 0x18, 0x4B, +0x00, 0xD7, 0xC0, 0xA5, 0x12, 0xEC, 0x91, 0xE3, +0xEC, 0xA4, 0x03, 0x6B, 0xEC, 0xEB, 0x4C, 0xEB, +0x3F, 0x23, 0x04, 0x6B, 0xEC, 0xEB, 0x4C, 0xEB, +0x3B, 0x23, 0x20, 0xF0, 0xE1, 0xA4, 0x20, 0x6B, +0x6B, 0xEB, 0xEC, 0xEB, 0x4C, 0xEB, 0x34, 0x23, +0xED, 0xA4, 0x07, 0x6B, 0x07, 0x67, 0x6C, 0xE8, +0x30, 0x67, 0x4C, 0xE9, 0x08, 0x21, 0xFF, 0x48, +0xFF, 0xF6, 0x19, 0x4A, 0x6C, 0xE8, 0xEC, 0xEA, +0x0D, 0xEA, 0x4D, 0xC4, 0x25, 0x10, 0x08, 0x68, +0x0B, 0xE8, 0xEC, 0xE8, 0x05, 0x6F, 0xED, 0xE8, +0x0D, 0xC4, 0x20, 0xF0, 0x81, 0xA4, 0x7F, 0x6B, +0xCC, 0xEB, 0x96, 0x34, 0x2D, 0x5B, 0x4C, 0xEC, +0x14, 0x61, 0x00, 0x90, 0x80, 0x6F, 0xCC, 0xEF, +0x02, 0x70, 0x02, 0x61, 0x0E, 0x2F, 0x10, 0x10, +0xFF, 0x4C, 0x0A, 0x6B, 0x78, 0xEC, 0x12, 0xEC, +0x93, 0xE6, 0x4C, 0xEC, 0xB5, 0x74, 0x08, 0x60, +0x07, 0x2F, 0x80, 0x4B, 0xF6, 0x4B, 0xCD, 0xEB, +0x4C, 0xEB, 0x60, 0xC5, 0x01, 0x6A, 0x01, 0x10, +0x00, 0x6A, 0x03, 0x91, 0x02, 0x90, 0x02, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x32, 0x6B, 0x78, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0xAA, 0xF0, 0x18, 0x4C, 0x12, 0xEB, 0x6D, 0xE4, +0x03, 0x2E, 0x25, 0x67, 0x00, 0x68, 0x02, 0x10, +0x26, 0x67, 0x20, 0x68, 0x1F, 0x6C, 0x00, 0xF6, +0x80, 0x37, 0x00, 0xF6, 0xE3, 0x37, 0x1F, 0x65, +0x01, 0x6F, 0xE4, 0xEC, 0x2C, 0xEF, 0x10, 0x27, +0xEC, 0xA3, 0x38, 0x67, 0x21, 0xE0, 0x1F, 0x65, +0x38, 0x67, 0x03, 0x6F, 0xFF, 0x6C, 0x2C, 0xEF, +0x8C, 0xEF, 0x8C, 0xE8, 0x09, 0x27, 0x0C, 0x58, +0x07, 0x61, 0x20, 0x48, 0x8C, 0xE8, 0x04, 0x10, +0xFF, 0x4C, 0xE1, 0x44, 0xE4, 0x2F, 0x00, 0x68, +0x00, 0x69, 0x02, 0x2D, 0xA6, 0x67, 0x20, 0x69, +0x00, 0x6C, 0x01, 0x6F, 0xE4, 0xEC, 0x00, 0xF6, +0x80, 0x36, 0xAC, 0xEF, 0x00, 0xF6, 0xC3, 0x36, +0x0D, 0x27, 0xC5, 0xE1, 0xCC, 0xA3, 0x03, 0x6D, +0xFF, 0x6C, 0xCC, 0xED, 0x8C, 0xED, 0x8C, 0xE9, +0x09, 0x25, 0x0C, 0x59, 0x07, 0x61, 0x20, 0x49, +0x8C, 0xE9, 0x04, 0x10, 0x01, 0x4C, 0x20, 0x74, +0xE8, 0x61, 0x00, 0x69, 0x00, 0xC3, 0x21, 0xC3, +0x82, 0x67, 0x80, 0x18, 0x65, 0x47, 0x7F, 0x6B, +0x4C, 0xEB, 0x63, 0xE8, 0x50, 0x67, 0x09, 0x61, +0xFF, 0x6A, 0x83, 0x67, 0x4C, 0xEB, 0x2C, 0xEA, +0x43, 0xEB, 0x01, 0x60, 0x91, 0x67, 0xFF, 0x6A, +0x8C, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, 0xC0, 0x9A, +0x03, 0x6A, 0x02, 0x68, 0x40, 0xC6, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF7, 0xA4, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0xE0, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF7, 0x68, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF7, 0x8C, 0x9A, 0x01, 0x6A, +0xE0, 0xDD, 0x80, 0xDB, 0x00, 0xC6, 0xE0, 0xDD, +0x80, 0xDB, 0x40, 0xC6, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF7, 0x50, 0x9A, 0x40, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x80, 0xDB, +0xA7, 0xF2, 0x19, 0xC2, 0x00, 0x68, 0x00, 0xC6, +0xE0, 0xDD, 0x80, 0xDB, 0x04, 0x6B, 0xA7, 0xF2, +0x78, 0xC2, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0xE5, 0x63, 0x35, 0x62, 0x34, 0xD1, 0x33, 0xD0, +0x30, 0xF0, 0x20, 0x6D, 0x07, 0x04, 0x62, 0xF2, +0x10, 0x4D, 0x54, 0x6E, 0x00, 0x18, 0x32, 0xC7, +0x30, 0xF0, 0x20, 0x6D, 0x1C, 0x04, 0x02, 0xF2, +0x1C, 0x4D, 0x54, 0x6E, 0x00, 0x18, 0x32, 0xC7, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF2, 0x70, 0x9A, +0x02, 0xF2, 0x10, 0x4A, 0x00, 0x69, 0x04, 0xD3, +0x61, 0x9A, 0x44, 0xAA, 0x05, 0xD3, 0x7D, 0x67, +0x4C, 0xCB, 0x32, 0x68, 0x18, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0xAA, 0xF0, 0x18, 0x4A, 0x00, 0x6C, +0x33, 0x6D, 0x01, 0x49, 0x12, 0xE8, 0x01, 0xE2, +0x68, 0xA0, 0x20, 0x6A, 0xC7, 0xA0, 0x4B, 0xEA, +0x6C, 0xEA, 0x09, 0x6B, 0x6D, 0xEA, 0xEA, 0x4B, +0xCC, 0xEB, 0x04, 0x6E, 0xEC, 0xA0, 0xCB, 0xEE, +0xCC, 0xEB, 0x67, 0xC0, 0x04, 0x6B, 0xED, 0xEB, +0xCC, 0xEB, 0x20, 0x6E, 0xCD, 0xEA, 0x40, 0x6E, +0xCD, 0xEA, 0xDC, 0xA0, 0x48, 0xC0, 0x03, 0x6A, +0x4B, 0xEA, 0xCC, 0xEA, 0x41, 0x6E, 0xCB, 0xEE, +0xCC, 0xEA, 0xD0, 0xA0, 0x81, 0xC0, 0x82, 0xC0, +0x9B, 0xC0, 0x31, 0x6C, 0x8B, 0xEC, 0xCC, 0xEC, +0x90, 0xC0, 0x7F, 0x6C, 0x8C, 0xEB, 0x00, 0x6C, +0x8A, 0xC0, 0x8B, 0xC8, 0xDF, 0x4C, 0x8C, 0xEA, +0x8D, 0xA0, 0x6C, 0xC0, 0x5C, 0xC0, 0x00, 0x6B, +0x09, 0x6A, 0x20, 0xF0, 0x61, 0xC0, 0x20, 0xF0, +0x70, 0xC0, 0x4B, 0xEA, 0x08, 0x6B, 0x8C, 0xEA, +0x6B, 0xEB, 0x6C, 0xEA, 0x05, 0x6B, 0x6D, 0xEA, +0x01, 0x6C, 0xA0, 0xC0, 0xA6, 0xC0, 0x20, 0xF0, +0x8A, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0x4D, 0xC0, +0x80, 0xF2, 0x48, 0x9B, 0x87, 0x40, 0x1C, 0x4C, 0xFF, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0x9B, 0x87, 0x40, -0x1C, 0x4C, 0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, -0xFF, 0x6A, 0x4C, 0xE9, 0x80, 0x71, 0xA3, 0x61, -0x30, 0xF0, 0x20, 0x68, 0x80, 0x18, 0xD2, 0x48, +0x1E, 0x4C, 0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, +0xFF, 0x6A, 0x4C, 0xE9, 0x80, 0x71, 0x9D, 0x61, +0x30, 0xF0, 0x20, 0x68, 0x80, 0x18, 0xE3, 0x48, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6C, -0x8D, 0xF0, 0x10, 0x4C, 0x1C, 0x05, 0x54, 0x6E, +0xAD, 0xF1, 0x18, 0x4C, 0x1C, 0x05, 0x54, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, -0x20, 0x6C, 0xED, 0xF0, 0x04, 0x4C, 0x07, 0x05, +0x20, 0x6C, 0x0D, 0xF2, 0x0C, 0x4C, 0x07, 0x05, 0x54, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0x8D, 0xF2, 0x0A, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0xAD, 0xF3, 0x12, 0x4C, 0x04, 0x05, 0x0A, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x2D, 0xF1, -0x1A, 0x4A, 0xED, 0xF1, 0x02, 0x4B, 0x0A, 0x6C, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x6D, 0xF2, +0x02, 0x4A, 0x0D, 0xF3, 0x0A, 0x4B, 0x0A, 0x6C, 0x80, 0xCA, 0x00, 0x6C, 0xA0, 0xF0, 0x88, 0xCA, 0x02, 0x4A, 0x6A, 0xEA, 0xF8, 0x61, 0x35, 0x97, 0x34, 0x91, 0x33, 0x90, 0x1B, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xEE, 0x30, 0x6A, -0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x8A, 0xF0, -0x10, 0x4A, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xED, +0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xEE, 0x32, 0x6A, +0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, +0x18, 0x4A, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xED, 0x11, 0xD7, 0x04, 0xD5, 0x05, 0xD6, 0x12, 0xEC, -0x89, 0xE2, 0x86, 0x67, 0x06, 0xD2, 0xC3, 0xF4, -0x18, 0x4C, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0x34, -0x85, 0xF7, 0x08, 0x4A, 0x49, 0xE4, 0x01, 0xAA, +0x89, 0xE2, 0x86, 0x67, 0x06, 0xD2, 0x43, 0xF5, +0x1C, 0x4C, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0x34, +0xA5, 0xF7, 0x08, 0x4A, 0x49, 0xE4, 0x01, 0xAA, 0x03, 0xED, 0x13, 0xE5, 0x02, 0x60, 0x04, 0x92, 0x53, 0xE0, 0x6C, 0xEC, 0x05, 0x93, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x23, 0xF5, -0x0C, 0x4B, 0x64, 0x33, 0x4D, 0xE3, 0x61, 0xAB, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xA3, 0xF5, +0x10, 0x4B, 0x64, 0x33, 0x4D, 0xE3, 0x61, 0xAB, 0xFF, 0x4C, 0x07, 0xD3, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x07, 0x5C, 0x13, 0x60, 0x04, 0x93, -0x03, 0xEB, 0x08, 0x60, 0x05, 0x93, 0xC3, 0xF4, -0x18, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x61, 0xAA, -0xFF, 0x4B, 0x12, 0x10, 0x05, 0x93, 0xC3, 0xF4, -0x18, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x61, 0xAA, +0x03, 0xEB, 0x08, 0x60, 0x05, 0x93, 0x43, 0xF5, +0x1C, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x61, 0xAA, +0xFF, 0x4B, 0x12, 0x10, 0x05, 0x93, 0x43, 0xF5, +0x1C, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x61, 0xAA, 0x01, 0x4B, 0x0A, 0x10, 0x05, 0x93, 0x04, 0x94, -0xC3, 0xF4, 0x18, 0x4B, 0x64, 0x33, 0x49, 0xE3, +0x43, 0xF5, 0x1C, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x0C, 0x33, 0x0F, 0xE3, 0x8D, 0xE3, 0x6F, 0x33, 0x61, 0xCA, 0x05, 0x93, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x18, 0x4B, +0xA5, 0xF7, 0x08, 0x4A, 0x43, 0xF5, 0x1C, 0x4B, 0x64, 0x33, 0x4D, 0xE3, 0x61, 0xAB, 0xC3, 0xF4, 0x50, 0x9A, 0x08, 0xD3, 0xFF, 0x6B, 0x01, 0x4B, 0x4C, 0xEB, 0x09, 0x23, 0x08, 0x95, 0x04, 0x97, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF7, 0x00, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF7, 0x1C, 0x4C, 0xD0, 0x67, 0x80, 0x18, 0x25, 0x42, 0x04, 0x92, 0x43, 0xE8, 0x14, 0x61, 0x06, 0x94, 0x43, 0xE0, 0xFF, 0xF7, 0x1F, 0x6A, 0x69, 0xA4, 0x4C, 0xE8, @@ -13421,24 +13454,24 @@ u8 array_mp_8822c_fw_ap[] = { 0x04, 0x61, 0x03, 0x58, 0x07, 0x91, 0x40, 0x60, 0x07, 0x10, 0x09, 0x58, 0x09, 0x6A, 0x01, 0x60, 0x50, 0x67, 0xFF, 0xF7, 0x1F, 0x68, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x90, 0x9A, 0xFF, 0x6B, 0x01, 0x4B, 0x8C, 0xEB, 0x0F, 0x23, 0x06, 0x93, 0x49, 0xE0, -0x07, 0xF3, 0xE2, 0xA2, 0xA9, 0xA3, 0x30, 0xF0, +0x07, 0xF4, 0xEA, 0xA2, 0xA9, 0xA3, 0x30, 0xF0, 0x20, 0x6C, 0x0F, 0x6B, 0xAA, 0x35, 0xC3, 0xF7, -0x04, 0x4C, 0x6C, 0xED, 0xD0, 0x67, 0x80, 0x18, -0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x41, 0xE0, 0x07, 0xF3, 0x42, 0xA0, +0x00, 0x4C, 0x6C, 0xED, 0xD0, 0x67, 0x80, 0x18, +0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x41, 0xE0, 0x07, 0xF4, 0x4A, 0xA0, 0x07, 0x94, 0xFF, 0xF7, 0x1F, 0x6B, 0x00, 0x69, 0x49, 0xE4, 0x6C, 0xEA, 0x0A, 0x5A, 0x06, 0x61, 0x28, 0x42, 0xFE, 0x49, 0x6C, 0xE9, 0x1F, 0x59, 0x01, 0x61, 0x1E, 0x69, 0x05, 0x93, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x23, 0xF5, -0x0C, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x21, 0xCA, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xA3, 0xF5, +0x10, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x21, 0xCA, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x08, 0x22, 0x07, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF7, -0x1C, 0x4C, 0xD1, 0x67, 0x80, 0x18, 0x25, 0x42, +0x18, 0x4C, 0xD1, 0x67, 0x80, 0x18, 0x25, 0x42, 0x08, 0x94, 0x11, 0x67, 0x0B, 0x5C, 0x10, 0x61, 0x15, 0x59, 0x01, 0x6A, 0x06, 0x60, 0x0B, 0x59, 0x58, 0x67, 0x01, 0x5A, 0x58, 0x67, 0x03, 0x6B, @@ -13446,1239 +13479,1280 @@ u8 array_mp_8822c_fw_ap[] = { 0x01, 0xE1, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x28, 0x58, 0x01, 0x61, 0x28, 0x68, 0x03, 0x59, 0x00, 0x69, 0x02, 0x60, 0x04, 0x92, 0x4A, 0x31, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x08, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF7, 0x0C, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF7, 0x08, 0x4C, 0xB1, 0x67, 0xD0, 0x67, 0x80, 0x18, 0x25, 0x42, 0x12, 0x92, 0x20, 0xCA, 0x11, 0x93, 0x00, 0xCB, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, -0x30, 0x6B, 0x78, 0xEC, 0x5D, 0x67, 0x25, 0x67, +0x32, 0x6B, 0x78, 0xEC, 0x5D, 0x67, 0x25, 0x67, 0x40, 0xF0, 0xA8, 0xAA, 0x30, 0xF0, 0x20, 0x6A, -0x8A, 0xF0, 0x10, 0x4A, 0x0C, 0xE9, 0x10, 0xD6, +0xAA, 0xF0, 0x18, 0x4A, 0x0C, 0xE9, 0x10, 0xD6, 0x11, 0xD7, 0x06, 0x07, 0x12, 0xEB, 0x69, 0xE2, 0x09, 0xD2, 0x7F, 0x6A, 0x2C, 0xEA, 0x08, 0xD2, 0x08, 0x96, 0x7D, 0x67, 0x00, 0x6A, 0x4C, 0xCB, 0x4D, 0xCB, 0x00, 0xF0, 0x1A, 0x02, 0x04, 0xD2, -0x80, 0x18, 0x46, 0x49, 0x80, 0x6B, 0x6B, 0xEB, +0x80, 0x18, 0x5A, 0x49, 0x80, 0x6B, 0x6B, 0xEB, 0x2C, 0xEB, 0x0C, 0xEB, 0x0A, 0x6A, 0x08, 0x2B, -0x08, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, -0x08, 0x4A, 0x49, 0xE4, 0x47, 0xF1, 0x5C, 0xA2, +0x08, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, +0x08, 0x4A, 0x49, 0xE4, 0x67, 0xF2, 0x44, 0xA2, 0xDD, 0x67, 0x8C, 0xAE, 0x6D, 0xAE, 0x00, 0x69, 0xA3, 0x44, 0x55, 0xE5, 0xA2, 0xEB, 0x05, 0x60, 0x23, 0x44, 0x67, 0xE1, 0x25, 0xE2, 0xFF, 0x6A, 0x4C, 0xE9, 0x08, 0x93, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x49, 0xE3, 0xDD, 0x67, -0x07, 0xF1, 0x48, 0xA2, 0x8C, 0xAE, 0x6D, 0xAE, +0xA5, 0xF7, 0x08, 0x4A, 0x49, 0xE3, 0xDD, 0x67, +0x07, 0xF2, 0x50, 0xA2, 0x8C, 0xAE, 0x6D, 0xAE, 0x00, 0x68, 0x95, 0xE2, 0xA2, 0xEB, 0x04, 0x60, 0x63, 0xE4, 0x41, 0xE0, 0xFF, 0x6A, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x90, 0x9A, 0xFF, 0x6B, 0x01, 0x4B, 0x8C, 0xEB, 0x0C, 0x23, 0x08, 0x93, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF0, 0x04, 0x4C, 0x49, 0xE3, -0x07, 0xF1, 0xA8, 0xA2, 0x47, 0xF1, 0xDC, 0xA2, +0x20, 0x6C, 0x04, 0xF0, 0x00, 0x4C, 0x49, 0xE3, +0x07, 0xF2, 0xB0, 0xA2, 0x67, 0xF2, 0xC4, 0xA2, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x69, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF0, 0x14, 0x4C, 0xB0, 0x67, 0xD1, 0x67, +0x04, 0xF0, 0x10, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, 0x25, 0x42, 0x09, 0x94, 0x3F, 0x6B, -0x5E, 0xA4, 0x6C, 0xEA, 0x7E, 0x84, 0x00, 0x53, -0x0F, 0x60, 0x43, 0xE9, 0x02, 0x60, 0x00, 0x69, -0x03, 0x10, 0x47, 0xE1, 0xFF, 0x6B, 0x6C, 0xE9, -0x43, 0xE8, 0x02, 0x60, 0x00, 0x68, 0x0A, 0x10, -0x43, 0xE0, 0xFF, 0x6A, 0x4C, 0xE8, 0x06, 0x10, -0x05, 0x22, 0xFF, 0x6B, 0x45, 0xE1, 0x41, 0xE0, -0x6C, 0xE9, 0x6C, 0xE8, 0x42, 0x58, 0x50, 0x67, -0x01, 0x61, 0x41, 0x6A, 0x10, 0x96, 0x5B, 0x59, -0x40, 0xC6, 0x51, 0x67, 0x01, 0x61, 0x5A, 0x6A, -0x11, 0x93, 0x40, 0xC3, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x20, 0xF0, 0x40, 0xA4, 0x6C, 0xEA, 0x20, 0xF0, +0x60, 0x84, 0x00, 0x53, 0x0F, 0x60, 0x43, 0xE9, +0x02, 0x60, 0x00, 0x69, 0x03, 0x10, 0x47, 0xE1, +0xFF, 0x6B, 0x6C, 0xE9, 0x43, 0xE8, 0x02, 0x60, +0x00, 0x68, 0x0A, 0x10, 0x43, 0xE0, 0xFF, 0x6A, +0x4C, 0xE8, 0x06, 0x10, 0x05, 0x22, 0xFF, 0x6B, +0x45, 0xE1, 0x41, 0xE0, 0x6C, 0xE9, 0x6C, 0xE8, +0x42, 0x58, 0x50, 0x67, 0x01, 0x61, 0x41, 0x6A, +0x10, 0x96, 0x5B, 0x59, 0x40, 0xC6, 0x51, 0x67, +0x01, 0x61, 0x5A, 0x6A, 0x11, 0x93, 0x40, 0xC3, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x32, 0x68, 0x18, 0xEC, 0x4C, 0xED, 0x4C, 0xEE, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, 0x18, 0x4A, +0x09, 0xD4, 0x08, 0xD5, 0x0B, 0xD6, 0x01, 0x69, +0x12, 0xE8, 0x01, 0xE2, 0x46, 0xA0, 0x0A, 0xD2, +0x00, 0x6A, 0x07, 0xD2, 0x6C, 0xA0, 0x81, 0xA0, +0x03, 0x6A, 0x6C, 0xEA, 0x0B, 0x95, 0x09, 0x97, +0x04, 0xD2, 0x91, 0xE1, 0xFF, 0x6A, 0x4C, 0xEC, +0x01, 0x6E, 0x80, 0x18, 0xE7, 0x47, 0x30, 0xF0, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x06, 0xD2, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x0C, 0x22, +0x07, 0x92, 0xC1, 0xA0, 0x06, 0x97, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF0, 0x00, 0x4C, +0xA2, 0x67, 0xD9, 0xE2, 0x80, 0x18, 0x25, 0x42, +0x06, 0x92, 0xFF, 0x72, 0x0E, 0x61, 0x07, 0x93, +0x81, 0xA0, 0x40, 0xA0, 0x01, 0x4B, 0x91, 0xE3, +0x42, 0xEC, 0x06, 0x60, 0x01, 0x49, 0xFF, 0x6A, +0x4C, 0xE9, 0x54, 0x71, 0x07, 0xD3, 0xCE, 0x61, +0x06, 0xD2, 0x08, 0x92, 0x38, 0x5A, 0x02, 0x61, +0x46, 0xA0, 0x0D, 0x10, 0x08, 0x92, 0x24, 0x5A, +0x05, 0x61, 0x0A, 0x92, 0xFF, 0x6B, 0xFE, 0x4A, +0x6C, 0xEA, 0x05, 0x10, 0x08, 0x92, 0x15, 0x5A, +0x06, 0x92, 0x01, 0x60, 0x41, 0xA0, 0x0F, 0x97, +0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0x68, 0x18, 0xEC, -0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0x8A, 0xF0, -0x10, 0x4A, 0x07, 0xD4, 0x06, 0xD5, 0x01, 0x69, -0x12, 0xE8, 0x01, 0xE2, 0x46, 0xA0, 0x08, 0xD2, -0x00, 0x6A, 0x05, 0xD2, 0x81, 0xA0, 0x4C, 0xA0, -0x07, 0x96, 0xFF, 0x6B, 0x91, 0xE1, 0x03, 0x6F, -0x6C, 0xEC, 0x01, 0x6D, 0x4C, 0xEF, 0x80, 0x18, -0xE6, 0x47, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, -0x78, 0x9B, 0x04, 0xD2, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0x0C, 0x22, 0x05, 0x92, 0xC1, 0xA0, -0x04, 0x97, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6C, -0x24, 0xF0, 0x04, 0x4C, 0xA2, 0x67, 0xD9, 0xE2, -0x80, 0x18, 0x25, 0x42, 0x04, 0x92, 0xFF, 0x72, -0x0E, 0x61, 0x05, 0x93, 0x81, 0xA0, 0x40, 0xA0, -0x01, 0x4B, 0x91, 0xE3, 0x42, 0xEC, 0x06, 0x60, -0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, 0x54, 0x71, -0x05, 0xD3, 0xD0, 0x61, 0x04, 0xD2, 0x06, 0x92, -0x38, 0x5A, 0x02, 0x61, 0x46, 0xA0, 0x0D, 0x10, -0x06, 0x92, 0x24, 0x5A, 0x05, 0x61, 0x08, 0x92, -0xFF, 0x6B, 0xFE, 0x4A, 0x6C, 0xEA, 0x05, 0x10, -0x06, 0x92, 0x15, 0x5A, 0x04, 0x92, 0x01, 0x60, -0x41, 0xA0, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, -0x07, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x30, 0x68, 0x18, 0xEC, 0x4C, 0xEF, 0x30, 0xF0, -0x20, 0x6B, 0x0D, 0xD5, 0x0E, 0xD6, 0x06, 0xD4, -0x05, 0xD7, 0x8A, 0xF0, 0x10, 0x4B, 0x20, 0xA5, -0x03, 0x6D, 0x12, 0xE8, 0x01, 0xE3, 0x60, 0xA6, -0x04, 0xD3, 0x87, 0xA0, 0x04, 0x96, 0xAC, 0xEC, -0x64, 0x67, 0x4C, 0xEB, 0xC2, 0xEB, 0x03, 0x60, -0x0E, 0x91, 0x80, 0xC1, 0xA2, 0x10, 0xA0, 0xF0, -0x00, 0x23, 0x2F, 0x59, 0x80, 0xF0, 0x1D, 0x60, -0x6C, 0xA0, 0x6C, 0xED, 0x4C, 0xED, 0x80, 0xF0, -0x18, 0x25, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, -0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x09, 0x22, 0x05, 0x95, 0x04, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0x24, 0xF0, 0x18, 0x4C, 0xF1, 0x67, -0x80, 0x18, 0x25, 0x42, 0x05, 0x92, 0x01, 0x72, -0x03, 0x60, 0x05, 0x6B, 0x01, 0x6A, 0x42, 0x10, -0x04, 0x6B, 0x00, 0x6A, 0x3F, 0x10, 0x05, 0x93, -0x81, 0x42, 0x01, 0x73, 0x01, 0x60, 0x8F, 0x42, -0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6F, -0x45, 0xF3, 0x14, 0x4F, 0x88, 0x32, 0xE9, 0xE2, -0xC0, 0xAA, 0xFF, 0x6D, 0x88, 0x34, 0x26, 0x67, -0xAC, 0xE9, 0x04, 0xD1, 0x47, 0xA0, 0x91, 0xE7, -0xE1, 0xAC, 0x1A, 0x65, 0x38, 0x67, 0x03, 0x6A, -0x2C, 0xEA, 0xE2, 0x34, 0xAC, 0xEA, 0xAC, 0xEC, -0xC2, 0x33, 0x82, 0xEA, 0xAC, 0xEB, 0x41, 0x61, -0xE4, 0xC0, 0x30, 0xF0, 0x20, 0x6D, 0x05, 0xD5, -0x06, 0x95, 0x30, 0x69, 0x38, 0xED, 0x05, 0x91, -0x85, 0xF7, 0x08, 0x49, 0x12, 0xED, 0x35, 0xE5, -0x24, 0xF1, 0x8E, 0xC5, 0x84, 0xA0, 0xFF, 0x74, -0x30, 0x60, 0xAC, 0xA0, 0x19, 0x6C, 0x8B, 0xEC, -0xAC, 0xEC, 0x08, 0x6D, 0xAD, 0xEC, 0x8C, 0xC0, -0x28, 0x10, 0x01, 0x4A, 0xFF, 0x6C, 0x8C, 0xEA, -0x63, 0xEA, 0x46, 0x60, 0x30, 0xF0, 0x20, 0x6C, -0x48, 0x35, 0x45, 0xF3, 0x14, 0x4C, 0x91, 0xE5, -0xA0, 0xAC, 0xFF, 0x6C, 0xC5, 0x67, 0x8C, 0xEE, -0x2E, 0xEE, 0x05, 0x2E, 0xA2, 0x35, 0x8C, 0xED, -0x04, 0x94, 0x8E, 0xED, 0xB0, 0x25, 0x30, 0xF0, -0x20, 0x6C, 0x48, 0x35, 0x45, 0xF3, 0x14, 0x4C, -0xB1, 0xE4, 0xA1, 0xAC, 0xFF, 0x6C, 0xC5, 0x67, -0x8C, 0xEE, 0x2E, 0xEE, 0xDE, 0x2E, 0x04, 0x96, -0xA2, 0x35, 0x8C, 0xED, 0xCE, 0xED, 0xD9, 0x2D, -0x9E, 0x17, 0x62, 0xEA, 0x00, 0x68, 0x09, 0x61, -0x3D, 0x67, 0x47, 0x41, 0x09, 0x4A, 0x40, 0xA2, -0x0D, 0x91, 0x01, 0x68, 0x40, 0xC1, 0x0E, 0x94, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, -0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x09, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF0, -0x14, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, -0x01, 0x10, 0x00, 0x68, 0x50, 0x67, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0x00, 0x68, 0xF0, 0x67, 0xD0, 0x67, 0xE5, 0x17, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x68, 0x0C, 0xEC, 0xAC, 0xE8, 0xFF, 0x70, -0x04, 0xD4, 0x33, 0x60, 0x7F, 0x69, 0x0C, 0xE9, -0x91, 0x67, 0x80, 0x18, 0x73, 0x47, 0x04, 0x93, -0x30, 0x6C, 0x98, 0xEB, 0x30, 0xF0, 0x20, 0x6B, -0x8A, 0xF0, 0x10, 0x4B, 0x12, 0xEC, 0x8D, 0xE3, -0x4D, 0xE3, 0x20, 0xF0, 0x60, 0xA3, 0x00, 0xF2, -0x00, 0x6A, 0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x6C, 0xEA, 0x08, 0x22, -0x04, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF0, -0x0C, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, -0x04, 0x94, 0xFF, 0x74, 0x0F, 0x60, 0x7F, 0x6A, -0x8C, 0xEA, 0x23, 0xEA, 0x0A, 0x61, 0x4E, 0xE9, -0x09, 0x29, 0x80, 0x6A, 0x70, 0x67, 0x4C, 0xEB, -0x8C, 0xEA, 0x4A, 0xEB, 0x02, 0x60, 0x02, 0x23, -0x01, 0x2A, 0xFF, 0x68, 0x50, 0x67, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEE, 0xC3, 0xED, -0x4C, 0xEC, 0xEC, 0xEA, 0x02, 0x61, 0xD7, 0xE5, -0x01, 0x10, 0xB7, 0xE6, 0x03, 0x55, 0x01, 0x60, -0x25, 0x22, 0x30, 0x69, 0x38, 0xEC, 0x30, 0xF0, -0x20, 0x6A, 0x8A, 0xF0, 0x10, 0x4A, 0x30, 0xF0, -0x20, 0x68, 0xFF, 0x6D, 0x02, 0x6E, 0x12, 0xE9, -0x25, 0xE2, 0x80, 0xF2, 0x48, 0x98, 0x87, 0x41, -0x1A, 0x4C, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, -0x87, 0x41, 0x1C, 0x4C, 0x00, 0x6D, 0x02, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, -0x78, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x13, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF0, -0x1C, 0x4C, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x01, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x84, 0xF0, 0x08, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0x6B, 0x78, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x8A, 0xF0, 0x10, 0x4C, -0x12, 0xEB, 0x6D, 0xE4, 0x20, 0xF0, 0x81, 0xA3, -0xFF, 0x74, 0x0F, 0x60, 0x20, 0xF0, 0x83, 0xA3, -0x32, 0x5C, 0x04, 0x60, 0x01, 0x4C, 0x20, 0xF0, -0x83, 0xC3, 0x07, 0x10, 0x00, 0x6C, 0x20, 0xF0, -0x83, 0xC3, 0x01, 0x6C, 0x8B, 0xEC, 0x20, 0xF0, -0x81, 0xC3, 0x20, 0xF0, 0x82, 0xA3, 0xFF, 0x74, -0x0F, 0x60, 0x20, 0xF0, 0x84, 0xA3, 0x32, 0x5C, -0x08, 0x61, 0x00, 0x6C, 0x20, 0xF0, 0x84, 0xC3, -0x01, 0x6C, 0x8B, 0xEC, 0x20, 0xF0, 0x82, 0xC3, -0x03, 0x10, 0x01, 0x4C, 0x20, 0xF0, 0x84, 0xC3, -0x01, 0x72, 0x17, 0x61, 0x30, 0xF0, 0x20, 0x6C, -0x49, 0xF4, 0x98, 0x9C, 0x01, 0xF0, 0x00, 0x6A, -0x8C, 0xEA, 0x0F, 0x22, 0x20, 0xF0, 0xA1, 0xA3, -0x20, 0xF0, 0xC3, 0xA3, 0x20, 0xF0, 0xE2, 0xA3, -0x20, 0xF0, 0x44, 0xA3, 0x30, 0xF0, 0x20, 0x6C, -0x84, 0xF0, 0x14, 0x4C, 0x04, 0xD2, 0x80, 0x18, -0x25, 0x42, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6E, 0x44, 0x67, -0x20, 0xF4, 0x0D, 0x6B, 0x9D, 0x67, 0x68, 0xCC, -0xCC, 0xEA, 0x20, 0xF4, 0x0F, 0x6B, 0x69, 0xCC, -0x44, 0x33, 0x6D, 0xE4, 0x68, 0xAB, 0x1F, 0xF7, -0x00, 0x6C, 0xAC, 0xEE, 0x6C, 0xEC, 0x02, 0xF0, -0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0xC2, 0xF5, 0x88, 0x9C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, 0x8C, 0x9C, -0x91, 0xE3, 0xA0, 0xA4, 0xF1, 0x6C, 0xAC, 0xEC, -0xC4, 0x35, 0x8D, 0xED, 0x00, 0xF6, 0xA0, 0x34, -0x00, 0xF6, 0x83, 0x34, 0xFF, 0x6D, 0xAC, 0xEC, -0x1F, 0xF7, 0x00, 0x6D, 0x6C, 0xED, 0x02, 0xF0, -0x00, 0x75, 0x01, 0x60, 0x05, 0x2D, 0x30, 0xF0, -0x20, 0x6D, 0xC2, 0xF5, 0xA8, 0x9D, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0xC2, 0xF5, 0xAC, 0x9D, -0xAD, 0xE3, 0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x10, 0x6C, 0x8C, 0xEB, -0x07, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF0, -0x10, 0x4C, 0xA2, 0x67, 0x80, 0x18, 0x25, 0x42, -0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, -0x04, 0xF1, 0x41, 0xA0, 0xFF, 0x69, 0x8C, 0xE9, -0x16, 0x22, 0x09, 0xE1, 0xE4, 0xF0, 0xBC, 0xA2, -0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x32, 0x4B, -0xC3, 0xF4, 0x50, 0x98, 0x10, 0x6B, 0x6C, 0xEA, -0x0A, 0x22, 0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, -0xC4, 0xF0, 0x08, 0x4C, 0xE4, 0xF0, 0xDC, 0xA2, -0xB1, 0x67, 0x80, 0x18, 0x25, 0x42, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0xA2, 0xF7, -0x70, 0x9B, 0x4C, 0xEC, 0x08, 0xD4, 0x00, 0xA3, -0x10, 0x6B, 0x30, 0xF0, 0x20, 0x69, 0x6C, 0xE8, -0x13, 0x30, 0x4C, 0xE8, 0x85, 0xF7, 0x08, 0x49, -0x35, 0xE0, 0xE4, 0xF0, 0x58, 0xA5, 0x06, 0xD5, -0x82, 0x67, 0x07, 0xD2, 0x80, 0x18, 0x64, 0x47, -0x7F, 0x6C, 0x4C, 0xEC, 0x09, 0xD2, 0x80, 0x18, -0x73, 0x47, 0x06, 0x93, 0x0A, 0xD2, 0x04, 0xF1, -0x41, 0xA1, 0xE4, 0xF0, 0x7A, 0xA3, 0x06, 0xD3, -0x59, 0x22, 0xC3, 0xF4, 0x50, 0x99, 0x10, 0x6D, -0xAC, 0xEA, 0x0C, 0x22, 0x04, 0xF1, 0x40, 0xA1, -0x07, 0x95, 0x08, 0x96, 0x09, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0xE4, 0xF0, 0x00, 0x4C, 0x04, 0xD2, -0x80, 0x18, 0x25, 0x42, 0x08, 0x92, 0x12, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0xE4, 0xF0, 0xBF, 0xA2, 0x01, 0x6B, 0x83, 0x67, -0x84, 0xE8, 0xAD, 0xEC, 0xE4, 0xF0, 0x9F, 0xC2, -0x06, 0x94, 0x0A, 0x95, 0x01, 0x4C, 0xA2, 0xEC, -0x0E, 0x60, 0x22, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xE4, 0xF0, 0x9F, 0xA2, -0x01, 0x6B, 0x64, 0xE8, 0x6F, 0xEB, 0x8C, 0xEB, -0xE4, 0xF0, 0x7F, 0xC2, 0x15, 0x10, 0x04, 0xF1, -0x80, 0xA2, 0x87, 0xE8, 0x6C, 0xEC, 0x10, 0x24, -0xC3, 0xF4, 0x50, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, -0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF1, -0x00, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, -0x90, 0x67, 0x80, 0x18, 0x5A, 0x4B, 0x12, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, 0x58, 0x9A, -0x10, 0x6B, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF1, 0x0C, 0x4C, 0xB0, 0x67, -0x80, 0x18, 0x25, 0x42, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x32, 0x4B, 0x0F, 0x97, 0x0E, 0x91, -0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6B, 0x44, 0x67, -0x6C, 0xEA, 0xAC, 0xEB, 0x01, 0x73, 0x0B, 0x60, -0x03, 0x23, 0x02, 0x73, 0x0F, 0x60, 0x16, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x6D, 0xE2, 0x01, 0x6C, 0x0D, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x6D, 0xE2, -0x03, 0x6C, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x6D, 0xE2, 0x07, 0x6C, -0xE4, 0xF0, 0x9C, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0xC3, 0xF4, 0x90, 0x9B, -0x10, 0x6D, 0xAC, 0xEC, 0x0A, 0x24, 0x6D, 0xE2, -0xE4, 0xF0, 0xDC, 0xA3, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF1, 0x18, 0x4C, 0xA2, 0x67, 0x80, 0x18, -0x25, 0x42, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x4C, 0xEE, 0x4C, 0xED, 0xEC, 0xEA, 0x30, 0x6F, -0xF8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x8A, 0xF0, -0x10, 0x4B, 0x12, 0xEF, 0xED, 0xE3, 0xFD, 0x67, -0xB2, 0xC7, 0x93, 0xC7, 0x55, 0xC7, 0x4B, 0xAB, -0x56, 0xC7, 0x4A, 0xAB, 0xD8, 0xC7, 0x57, 0xC7, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x49, 0xE4, 0x87, 0xF7, 0x98, 0xA2, 0x07, 0xF7, -0xB8, 0xA2, 0x80, 0x18, 0x80, 0x47, 0x7D, 0x67, -0x59, 0xC3, 0x0C, 0x6A, 0x50, 0xC3, 0x08, 0x6A, -0x4F, 0xCB, 0x07, 0x97, 0x04, 0x94, 0x05, 0x95, -0x06, 0x96, 0x80, 0x18, 0x00, 0x40, 0x09, 0x97, -0x05, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0x4C, 0xEC, 0x32, 0x68, 0x18, 0xEC, +0x4C, 0xEF, 0x30, 0xF0, 0x20, 0x6B, 0x10, 0xD6, +0x0F, 0xD5, 0x07, 0xD4, 0x05, 0xD7, 0xAA, 0xF0, +0x18, 0x4B, 0x12, 0xE8, 0x01, 0xE3, 0x60, 0xA5, +0x06, 0xD3, 0x80, 0xA6, 0x03, 0x6B, 0x04, 0xD4, +0xA7, 0xA0, 0x04, 0x96, 0x6C, 0xED, 0x85, 0x67, +0x4C, 0xEC, 0xC2, 0xEC, 0x03, 0x60, 0x10, 0x91, +0xA0, 0xC1, 0xE4, 0x10, 0xE0, 0xF0, 0x02, 0x24, +0x06, 0x94, 0x7F, 0x69, 0x8C, 0xE9, 0x39, 0x59, +0xC0, 0xF0, 0x1C, 0x60, 0x8C, 0xA0, 0x8C, 0xEB, +0x4C, 0xEB, 0xC0, 0xF0, 0x17, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x09, 0x22, 0x05, 0x95, +0x04, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF0, +0x14, 0x4C, 0xF1, 0x67, 0x80, 0x18, 0x25, 0x42, +0x05, 0x96, 0x01, 0x76, 0x03, 0x60, 0x07, 0x6B, +0x01, 0x6A, 0x8A, 0x10, 0x06, 0x6B, 0x00, 0x6A, +0x87, 0x10, 0xE0, 0xAD, 0xFF, 0x6C, 0xC7, 0x67, +0x8C, 0xEE, 0x2E, 0xEE, 0x77, 0x2E, 0x04, 0x96, +0xE2, 0x37, 0x8C, 0xEF, 0xCE, 0xEF, 0x72, 0x2F, +0x05, 0x91, 0x01, 0x71, 0x02, 0x61, 0x01, 0x4A, +0x01, 0x10, 0xFF, 0x4A, 0x8C, 0xEA, 0x06, 0x94, +0x80, 0x6B, 0x30, 0xF0, 0x20, 0x6D, 0x8C, 0xEB, +0x06, 0x6C, 0x98, 0xEA, 0x45, 0xF3, 0x1C, 0x4D, +0xFF, 0x6E, 0x12, 0xEC, 0xB1, 0xE4, 0xE0, 0xAC, +0x27, 0x67, 0xCC, 0xE9, 0x05, 0xD1, 0x03, 0x69, +0x38, 0xEA, 0xE2, 0x34, 0x06, 0xD4, 0x87, 0xA0, +0x2C, 0xEC, 0xCC, 0xEC, 0x12, 0xE9, 0x01, 0x49, +0x24, 0x31, 0xB5, 0xE1, 0xA0, 0xAD, 0x04, 0xD5, +0xA2, 0x35, 0xCC, 0xED, 0xA2, 0xEC, 0x1D, 0x61, +0x04, 0x91, 0x2C, 0xEE, 0x2D, 0x5E, 0x01, 0x61, +0x6D, 0xEE, 0xC4, 0xC0, 0x30, 0xF0, 0x20, 0x6E, +0x08, 0xD6, 0x07, 0x96, 0x32, 0x69, 0x38, 0xEE, +0x08, 0x91, 0xA5, 0xF7, 0x08, 0x49, 0x12, 0xEE, +0x39, 0xE6, 0x24, 0xF1, 0xB8, 0xC6, 0xA4, 0xA0, +0xFF, 0x75, 0x07, 0x60, 0xCC, 0xA0, 0x19, 0x6D, +0xAB, 0xED, 0xCC, 0xED, 0x08, 0x6E, 0xCD, 0xED, +0xAC, 0xC0, 0x06, 0x6E, 0xD8, 0xEA, 0x30, 0xF0, +0x20, 0x6D, 0x45, 0xF3, 0x1C, 0x4D, 0xC7, 0xA0, +0x1E, 0x65, 0x38, 0x67, 0x03, 0x6E, 0x2C, 0xEE, +0x12, 0xEA, 0xA9, 0xE2, 0x42, 0xAA, 0x42, 0x35, +0xA2, 0xEE, 0x32, 0x61, 0xFF, 0x6E, 0xCC, 0xEA, +0x2D, 0x5A, 0x01, 0x61, 0x6D, 0xEA, 0x45, 0xC0, +0x07, 0x91, 0x32, 0x6E, 0x30, 0xF0, 0x20, 0x6A, +0xD8, 0xE9, 0xA5, 0xF7, 0x08, 0x4A, 0x12, 0xEE, +0x49, 0xE6, 0x24, 0xF1, 0xB9, 0xC2, 0x45, 0xA0, +0xFF, 0x72, 0x1E, 0x60, 0xAC, 0xA0, 0x19, 0x6A, +0x4B, 0xEA, 0xAC, 0xEA, 0x10, 0x6D, 0xAD, 0xEA, +0x4C, 0xC0, 0x16, 0x10, 0x02, 0x4D, 0x98, 0x67, +0xAE, 0xEC, 0x7F, 0xF7, 0x1E, 0x2C, 0x01, 0x4A, +0xFF, 0x6C, 0x8C, 0xEA, 0x63, 0xEA, 0x3D, 0x60, +0x06, 0x6E, 0xD8, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x45, 0xF3, 0x1C, 0x4C, 0x12, 0xEE, 0xD5, 0xE4, +0x06, 0x4C, 0xD1, 0xE4, 0x1C, 0x65, 0x6D, 0x17, +0x06, 0x92, 0x00, 0x68, 0x42, 0xEC, 0x14, 0x61, +0x05, 0x94, 0x2D, 0x5C, 0x04, 0x61, 0x0F, 0x96, +0x8D, 0xEB, 0x60, 0xC6, 0x06, 0x10, 0x3D, 0x67, +0x47, 0x41, 0x0D, 0x4A, 0x40, 0xA2, 0x0F, 0x91, +0x40, 0xC1, 0x7D, 0x67, 0x87, 0x43, 0x11, 0x4C, +0x80, 0xA4, 0x10, 0x93, 0x01, 0x68, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x0B, 0x22, +0xC7, 0x67, 0x04, 0x97, 0x30, 0xF0, 0x20, 0x6C, +0x44, 0xF0, 0x10, 0x4C, 0xB0, 0x67, 0x80, 0x18, +0x25, 0x42, 0x01, 0x10, 0x00, 0x68, 0x50, 0x67, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x68, 0x04, 0xD0, 0xF0, 0x67, +0xE3, 0x17, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, +0xAC, 0xE8, 0xFF, 0x70, 0x04, 0xD4, 0x33, 0x60, +0x7F, 0x69, 0x0C, 0xE9, 0x91, 0x67, 0x80, 0x18, +0x74, 0x47, 0x04, 0x93, 0x32, 0x6C, 0x98, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0xAA, 0xF0, 0x18, 0x4B, +0x12, 0xEC, 0x8D, 0xE3, 0x4D, 0xE3, 0x20, 0xF0, +0x62, 0xA3, 0x00, 0xF2, 0x00, 0x6A, 0x04, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0x6C, 0xEA, 0x08, 0x22, 0x04, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF0, 0x08, 0x4C, 0xB0, 0x67, +0x80, 0x18, 0x25, 0x42, 0x04, 0x94, 0xFF, 0x74, +0x0F, 0x60, 0x7F, 0x6A, 0x8C, 0xEA, 0x23, 0xEA, +0x0A, 0x61, 0x4E, 0xE9, 0x09, 0x29, 0x80, 0x6A, +0x70, 0x67, 0x4C, 0xEB, 0x8C, 0xEA, 0x4A, 0xEB, +0x02, 0x60, 0x02, 0x23, 0x01, 0x2A, 0xFF, 0x68, +0x50, 0x67, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, +0x4C, 0xEE, 0xC3, 0xED, 0x4C, 0xEC, 0xEC, 0xEA, +0x02, 0x61, 0xD7, 0xE5, 0x01, 0x10, 0xB7, 0xE6, +0x03, 0x55, 0x01, 0x60, 0x25, 0x22, 0x32, 0x69, +0x38, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, +0x18, 0x4A, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6D, +0x02, 0x6E, 0x12, 0xE9, 0x25, 0xE2, 0x80, 0xF2, +0x48, 0x98, 0x87, 0x41, 0x1C, 0x4C, 0x40, 0xEA, +0x80, 0xF2, 0x48, 0x98, 0x87, 0x41, 0x1E, 0x4C, +0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x01, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x13, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF0, 0x18, 0x4C, 0x0C, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, 0x04, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x32, 0x6B, 0x78, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0xAA, 0xF0, 0x18, 0x4C, 0x12, 0xEB, 0x6D, 0xE4, +0x20, 0xF0, 0x83, 0xA3, 0xFF, 0x74, 0x0F, 0x60, +0x20, 0xF0, 0x85, 0xA3, 0x32, 0x5C, 0x04, 0x60, +0x01, 0x4C, 0x20, 0xF0, 0x85, 0xC3, 0x07, 0x10, +0x00, 0x6C, 0x20, 0xF0, 0x85, 0xC3, 0x01, 0x6C, +0x8B, 0xEC, 0x20, 0xF0, 0x83, 0xC3, 0x20, 0xF0, +0x84, 0xA3, 0xFF, 0x74, 0x0F, 0x60, 0x20, 0xF0, +0x86, 0xA3, 0x32, 0x5C, 0x08, 0x61, 0x00, 0x6C, +0x20, 0xF0, 0x86, 0xC3, 0x01, 0x6C, 0x8B, 0xEC, +0x20, 0xF0, 0x84, 0xC3, 0x03, 0x10, 0x01, 0x4C, +0x20, 0xF0, 0x86, 0xC3, 0x01, 0x72, 0x17, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x69, 0xF4, 0x98, 0x9C, +0x01, 0xF0, 0x00, 0x6A, 0x8C, 0xEA, 0x0F, 0x22, +0x20, 0xF0, 0xA3, 0xA3, 0x20, 0xF0, 0xC5, 0xA3, +0x20, 0xF0, 0xE4, 0xA3, 0x20, 0xF0, 0x46, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, 0x10, 0x4C, +0x04, 0xD2, 0x80, 0x18, 0x25, 0x42, 0x07, 0x97, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0xFF, 0x6E, 0x44, 0x67, 0x20, 0xF4, 0x0D, 0x6B, +0x9D, 0x67, 0x68, 0xCC, 0xCC, 0xEA, 0x20, 0xF4, +0x0F, 0x6B, 0x69, 0xCC, 0x44, 0x33, 0x6D, 0xE4, +0x68, 0xAB, 0x1F, 0xF7, 0x00, 0x6C, 0xAC, 0xEE, +0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, +0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xC2, 0xF5, 0x8C, 0x9C, 0x91, 0xE3, 0xA0, 0xA4, +0xF1, 0x6C, 0xAC, 0xEC, 0xC4, 0x35, 0x8D, 0xED, +0x00, 0xF6, 0xA0, 0x34, 0x00, 0xF6, 0x83, 0x34, +0xFF, 0x6D, 0xAC, 0xEC, 0x1F, 0xF7, 0x00, 0x6D, +0x6C, 0xED, 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, +0x05, 0x2D, 0x30, 0xF0, 0x20, 0x6D, 0xC2, 0xF5, +0xA8, 0x9D, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6D, +0xC2, 0xF5, 0xAC, 0x9D, 0xAD, 0xE3, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0x10, 0x6C, 0x8C, 0xEB, 0x07, 0x23, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF0, 0x0C, 0x4C, 0xA2, 0x67, +0x80, 0x18, 0x25, 0x42, 0x07, 0x97, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF7, 0x08, 0x48, 0x04, 0xF1, 0x49, 0xA0, +0xFF, 0x69, 0x8C, 0xE9, 0x16, 0x22, 0x09, 0xE1, +0x04, 0xF1, 0xA4, 0xA2, 0x91, 0x67, 0x04, 0xD2, +0x80, 0x18, 0x6B, 0x4B, 0xC3, 0xF4, 0x50, 0x98, +0x10, 0x6B, 0x6C, 0xEA, 0x0A, 0x22, 0x04, 0x92, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF0, 0x04, 0x4C, +0x04, 0xF1, 0xC4, 0xA2, 0xB1, 0x67, 0x80, 0x18, +0x25, 0x42, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0xA2, 0xF7, 0x74, 0x9B, 0x4C, 0xEC, -0x04, 0xD4, 0x4C, 0xED, 0x4C, 0xEE, 0x4C, 0xEF, -0x94, 0x34, 0x06, 0xD5, 0x07, 0xD6, 0x05, 0xD7, -0x6D, 0xE4, 0x60, 0xA3, 0x04, 0x94, 0x6C, 0xEA, -0x08, 0xD2, 0x80, 0x18, 0x6A, 0x47, 0x04, 0x94, -0x06, 0x95, 0x09, 0xD2, 0x80, 0x18, 0xBB, 0x47, -0xFF, 0x72, 0x22, 0x67, 0x7C, 0x60, 0x04, 0x92, -0x30, 0x68, 0x0C, 0x59, 0x18, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x8A, 0xF0, 0x10, 0x4A, 0x12, 0xE8, -0x01, 0xE2, 0x22, 0xC0, 0x08, 0x60, 0x67, 0xA0, -0x0D, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x00, 0x6C, -0x47, 0xC0, 0x05, 0xD4, 0x0A, 0x10, 0x05, 0x95, -0x87, 0xA0, 0x03, 0x6B, 0x0D, 0x6A, 0xAC, 0xEB, -0x4B, 0xEA, 0x68, 0x33, 0x8C, 0xEA, 0x6D, 0xEA, -0x47, 0xC0, 0x07, 0x96, 0x15, 0x2E, 0x43, 0xA0, -0x2E, 0xEA, 0x01, 0x22, 0xD6, 0xC8, 0x6C, 0xA0, -0x7F, 0x6A, 0xB1, 0x67, 0x6C, 0xEA, 0x4C, 0xC0, -0x04, 0x94, 0x80, 0x18, 0xAC, 0x47, 0x04, 0x94, -0x05, 0x96, 0xB1, 0x67, 0x00, 0x6F, 0x80, 0x18, -0xCE, 0x4B, 0x00, 0x6A, 0x62, 0x67, 0x1C, 0x10, -0x6C, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, 0x6D, 0xEA, -0x4C, 0xC0, 0x04, 0x94, 0x05, 0x96, 0xB1, 0x67, -0x05, 0x6F, 0x80, 0x18, 0xCE, 0x4B, 0x06, 0x94, -0x30, 0xF0, 0x20, 0x6A, 0x7F, 0x6B, 0x8C, 0xEB, -0x05, 0xF3, 0x00, 0x4A, 0x49, 0xE3, 0x40, 0xA2, -0x50, 0xC0, 0x70, 0xA0, 0x51, 0xA0, 0x63, 0xEA, -0x01, 0x60, 0x50, 0xC0, 0x40, 0x6A, 0x01, 0x6B, -0x05, 0x96, 0x07, 0x6C, 0xCC, 0x35, 0x09, 0x96, -0xCC, 0xEC, 0x91, 0xE5, 0x08, 0x96, 0x4D, 0xEC, -0x04, 0x6A, 0x4B, 0xEA, 0xCC, 0xEA, 0x6D, 0xEA, -0x00, 0xF6, 0x80, 0x34, 0x00, 0xF6, 0x40, 0x32, -0xFF, 0x6D, 0x00, 0xF6, 0x83, 0x34, 0x00, 0xF6, -0x43, 0x32, 0xAC, 0xEC, 0xAC, 0xEA, 0x04, 0x95, -0xB4, 0x33, 0x30, 0xF0, 0x20, 0x6D, 0x42, 0xF7, -0xB8, 0x9D, 0xB5, 0xE3, 0x20, 0xC5, 0x30, 0xF0, -0x20, 0x6D, 0x42, 0xF7, 0xB0, 0x9D, 0xB5, 0xE3, -0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF7, -0x94, 0x9C, 0x8D, 0xE3, 0x40, 0xC3, 0x0D, 0x97, +0x08, 0xD4, 0x00, 0xA3, 0x10, 0x6B, 0x30, 0xF0, +0x20, 0x69, 0x6C, 0xE8, 0x13, 0x30, 0x4C, 0xE8, +0xA5, 0xF7, 0x08, 0x49, 0x35, 0xE0, 0x04, 0xF1, +0x40, 0xA5, 0x06, 0xD5, 0x82, 0x67, 0x07, 0xD2, +0x80, 0x18, 0x65, 0x47, 0x7F, 0x6C, 0x4C, 0xEC, +0x09, 0xD2, 0x80, 0x18, 0x74, 0x47, 0x06, 0x93, +0x0A, 0xD2, 0x04, 0xF1, 0x49, 0xA1, 0x04, 0xF1, +0x62, 0xA3, 0x06, 0xD3, 0x59, 0x22, 0xC3, 0xF4, +0x50, 0x99, 0x10, 0x6D, 0xAC, 0xEA, 0x0C, 0x22, +0x04, 0xF1, 0x48, 0xA1, 0x07, 0x95, 0x08, 0x96, +0x09, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF0, +0x1C, 0x4C, 0x04, 0xD2, 0x80, 0x18, 0x25, 0x42, +0x08, 0x92, 0x12, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x04, 0xF1, 0xA7, 0xA2, +0x01, 0x6B, 0x83, 0x67, 0x84, 0xE8, 0xAD, 0xEC, +0x04, 0xF1, 0x87, 0xC2, 0x06, 0x94, 0x0A, 0x95, +0x01, 0x4C, 0xA2, 0xEC, 0x0E, 0x60, 0x22, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x04, 0xF1, 0x87, 0xA2, 0x01, 0x6B, 0x64, 0xE8, +0x6F, 0xEB, 0x8C, 0xEB, 0x04, 0xF1, 0x67, 0xC2, +0x15, 0x10, 0x04, 0xF1, 0x88, 0xA2, 0x87, 0xE8, +0x6C, 0xEC, 0x10, 0x24, 0xC3, 0xF4, 0x50, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0xE4, 0xF0, 0x1C, 0x4C, 0xB0, 0x67, +0x80, 0x18, 0x25, 0x42, 0x90, 0x67, 0x80, 0x18, +0x93, 0x4B, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x69, 0xF4, 0x58, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, +0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF1, +0x08, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, +0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x6B, 0x4B, +0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6B, 0x44, 0x67, 0x6C, 0xEA, 0xAC, 0xEB, +0x01, 0x73, 0x0B, 0x60, 0x03, 0x23, 0x02, 0x73, +0x0F, 0x60, 0x16, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0x6D, 0xE2, 0x01, 0x6C, +0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, +0x08, 0x4B, 0x6D, 0xE2, 0x03, 0x6C, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x6D, 0xE2, 0x07, 0x6C, 0x04, 0xF1, 0x84, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0xC3, 0xF4, 0x90, 0x9B, 0x10, 0x6D, 0xAC, 0xEC, +0x0A, 0x24, 0x6D, 0xE2, 0x04, 0xF1, 0xC4, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF1, 0x14, 0x4C, +0xA2, 0x67, 0x80, 0x18, 0x25, 0x42, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xEE, 0x4C, 0xED, +0xEC, 0xEA, 0x32, 0x6F, 0xF8, 0xEC, 0x30, 0xF0, +0x20, 0x6B, 0xAA, 0xF0, 0x18, 0x4B, 0x12, 0xEF, +0xED, 0xE3, 0xFD, 0x67, 0xB2, 0xC7, 0x93, 0xC7, +0x55, 0xC7, 0x4C, 0xAB, 0x56, 0xC7, 0x4B, 0xAB, +0xD8, 0xC7, 0x57, 0xC7, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x49, 0xE4, 0xA8, 0xF0, +0x80, 0xA2, 0x28, 0xF0, 0xA0, 0xA2, 0x80, 0x18, +0x81, 0x47, 0x7D, 0x67, 0x59, 0xC3, 0x0C, 0x6A, +0x50, 0xC3, 0x08, 0x6A, 0x4F, 0xCB, 0x07, 0x97, +0x04, 0x94, 0x05, 0x95, 0x06, 0x96, 0x80, 0x18, +0x00, 0x40, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0xA2, 0xF7, +0x78, 0x9B, 0x4C, 0xEC, 0x04, 0xD4, 0x4C, 0xED, +0x4C, 0xEE, 0x4C, 0xEF, 0x94, 0x34, 0x06, 0xD5, +0x07, 0xD6, 0x05, 0xD7, 0x6D, 0xE4, 0x60, 0xA3, +0x04, 0x94, 0x6C, 0xEA, 0x08, 0xD2, 0x80, 0x18, +0x6B, 0x47, 0x04, 0x94, 0x06, 0x95, 0x09, 0xD2, +0x80, 0x18, 0xBC, 0x47, 0xFF, 0x72, 0x22, 0x67, +0x7E, 0x60, 0x04, 0x92, 0x32, 0x68, 0x0C, 0x59, +0x18, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, +0x18, 0x4A, 0x12, 0xE8, 0x01, 0xE2, 0x22, 0xC0, +0x08, 0x60, 0x67, 0xA0, 0x0D, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x00, 0x6C, 0x47, 0xC0, 0x05, 0xD4, +0x0A, 0x10, 0x05, 0x95, 0x87, 0xA0, 0x03, 0x6B, +0x0D, 0x6A, 0xAC, 0xEB, 0x4B, 0xEA, 0x68, 0x33, +0x8C, 0xEA, 0x6D, 0xEA, 0x47, 0xC0, 0x07, 0x96, +0x15, 0x2E, 0x43, 0xA0, 0x2E, 0xEA, 0x01, 0x22, +0xD7, 0xC8, 0x6C, 0xA0, 0x7F, 0x6A, 0xB1, 0x67, +0x6C, 0xEA, 0x4C, 0xC0, 0x04, 0x94, 0x80, 0x18, +0xAD, 0x47, 0x04, 0x94, 0x05, 0x96, 0xB1, 0x67, +0x00, 0x6F, 0x80, 0x18, 0x07, 0x4C, 0x00, 0x6B, +0x83, 0x67, 0x1C, 0x10, 0x6C, 0xA0, 0x80, 0x6A, +0x4B, 0xEA, 0x6D, 0xEA, 0x4C, 0xC0, 0x04, 0x94, +0x05, 0x96, 0xB1, 0x67, 0x05, 0x6F, 0x80, 0x18, +0x07, 0x4C, 0x06, 0x94, 0x30, 0xF0, 0x20, 0x6A, +0x7F, 0x6B, 0x8C, 0xEB, 0x05, 0xF3, 0x08, 0x4A, +0x49, 0xE3, 0x40, 0xA2, 0x51, 0xC0, 0x71, 0xA0, +0x52, 0xA0, 0x63, 0xEA, 0x01, 0x60, 0x51, 0xC0, +0x40, 0x6B, 0x01, 0x6C, 0x05, 0x96, 0x07, 0x6A, +0xCC, 0x35, 0x09, 0x96, 0xCC, 0xEA, 0x49, 0xE5, +0x6D, 0xEA, 0x00, 0xF6, 0x40, 0x32, 0xFF, 0x6D, +0x08, 0x96, 0x00, 0xF6, 0x43, 0x32, 0xAC, 0xEA, +0x20, 0x6B, 0x6D, 0xEA, 0xDC, 0x4B, 0xCC, 0xEB, +0x8D, 0xEB, 0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, +0x63, 0x33, 0xAC, 0xEA, 0xAC, 0xEB, 0x04, 0x95, +0xB4, 0x34, 0x30, 0xF0, 0x20, 0x6D, 0x42, 0xF7, +0xBC, 0x9D, 0xB5, 0xE4, 0x20, 0xC5, 0x30, 0xF0, +0x20, 0x6D, 0x42, 0xF7, 0xB4, 0x9D, 0xB5, 0xE4, +0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, +0x58, 0x9A, 0x51, 0xE4, 0x60, 0xC4, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x69, 0x8C, 0xE9, 0x30, 0x68, 0x18, 0xE9, -0x30, 0xF0, 0x20, 0x6A, 0x8A, 0xF0, 0x10, 0x4A, +0xFF, 0x69, 0x8C, 0xE9, 0x32, 0x68, 0x18, 0xE9, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, 0x18, 0x4A, 0x91, 0x67, 0x12, 0xE8, 0x01, 0xE2, 0x80, 0x18, -0x64, 0x47, 0x7F, 0x6B, 0x4C, 0xEB, 0x04, 0xD3, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF7, 0x7C, 0x9B, +0x65, 0x47, 0x7F, 0x6B, 0x4C, 0xEB, 0x04, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF7, 0x60, 0x9B, 0x2C, 0x32, 0x91, 0x67, 0x6D, 0xE2, 0xA0, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF7, 0x64, 0x9B, -0x69, 0xE2, 0xC0, 0x9A, 0x80, 0x18, 0x9E, 0x48, -0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF7, 0x68, 0x9B, +0x69, 0xE2, 0xC0, 0x9A, 0x80, 0x18, 0xAF, 0x48, +0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x08, 0x22, 0x04, 0x95, 0x05, 0x96, 0x30, 0xF0, 0x20, 0x6C, -0x24, 0xF1, 0x10, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x24, 0xF1, 0x0C, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x04, 0x92, 0x05, 0x93, 0x6E, 0xEA, 0x09, 0x22, 0xE7, 0xA0, 0x03, 0x6A, 0x91, 0x67, 0xEA, 0x37, 0xA3, 0x67, 0x00, 0x6E, 0x4C, 0xEF, 0x80, 0x18, -0xE7, 0x4B, 0x6C, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, +0x20, 0x4C, 0x6C, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x33, 0x6A, 0x01, 0x10, 0x13, 0x6A, 0x46, 0xC0, 0x66, 0xA0, 0x40, 0xA0, 0x63, 0xEA, 0x01, 0x60, 0x46, 0xC0, 0x68, 0xA0, 0x1F, 0x6A, -0x4C, 0xEB, 0x0F, 0x5B, 0x26, 0x60, 0x30, 0xF0, +0x4C, 0xEB, 0x0F, 0x5B, 0x2C, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0x33, 0xC2, 0xF1, 0x14, 0x4A, -0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x7F, 0xA0, -0x1F, 0x6A, 0x6C, 0xEA, 0x40, 0x6B, 0x6D, 0xEA, -0x6F, 0xA0, 0x5F, 0xC0, 0x31, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x20, 0x6B, 0x1A, 0x10, 0x7F, 0xA0, -0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, -0x0E, 0x10, 0x7F, 0xA0, 0x1F, 0x6A, 0x0A, 0x10, -0x7F, 0xA0, 0x1F, 0x6A, 0x6C, 0xEA, 0x60, 0x6B, -0x6D, 0xEA, 0x5F, 0xC0, 0x6F, 0xA0, 0x30, 0x6A, -0x08, 0x10, 0x7F, 0xA0, 0x6C, 0xEA, 0x6F, 0xA0, -0x5F, 0xC0, 0x31, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x10, 0x6B, 0x6D, 0xEA, 0x4F, 0xC0, 0x30, 0xF0, -0x20, 0x6A, 0x49, 0xF4, 0x58, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x0A, 0x22, 0xFF, 0xA0, 0xA0, 0xA0, -0xC1, 0xA0, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF1, -0x00, 0x4C, 0xF6, 0x37, 0x80, 0x18, 0x25, 0x42, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF7, 0x58, 0x9A, 0x00, 0x68, 0x60, 0xA2, +0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x20, 0xF0, +0x61, 0xA0, 0x1F, 0x6A, 0x6C, 0xEA, 0x40, 0x6B, +0x6D, 0xEA, 0x70, 0xA0, 0x20, 0xF0, 0x41, 0xC0, +0x31, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x20, 0x6B, +0x20, 0x10, 0x20, 0xF0, 0x61, 0xA0, 0x1F, 0x6A, +0x6C, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, 0x12, 0x10, +0x20, 0xF0, 0x61, 0xA0, 0x1F, 0x6A, 0x0D, 0x10, +0x20, 0xF0, 0x61, 0xA0, 0x1F, 0x6A, 0x6C, 0xEA, +0x60, 0x6B, 0x6D, 0xEA, 0x20, 0xF0, 0x41, 0xC0, +0x70, 0xA0, 0x30, 0x6A, 0x0A, 0x10, 0x20, 0xF0, +0x61, 0xA0, 0x6C, 0xEA, 0x70, 0xA0, 0x20, 0xF0, +0x41, 0xC0, 0x31, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x10, 0x6B, 0x6D, 0xEA, 0x50, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x0B, 0x22, 0x20, 0xF0, 0xE1, 0xA0, +0xA0, 0xA0, 0xC1, 0xA0, 0x30, 0xF0, 0x20, 0x6C, +0x24, 0xF1, 0x1C, 0x4C, 0xF6, 0x37, 0x80, 0x18, +0x25, 0x42, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF7, 0x5C, 0x9A, 0x00, 0x68, 0x60, 0xA2, 0xFF, 0x6A, 0x83, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF7, 0x7C, 0x9B, 0x4C, 0xEC, 0x08, 0xD4, +0xC2, 0xF7, 0x60, 0x9B, 0x4C, 0xEC, 0x08, 0xD4, 0x60, 0xA3, 0x01, 0x6C, 0x6C, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x56, 0x32, -0x8C, 0xEA, 0x07, 0xF3, 0xB4, 0xA3, 0x48, 0x34, +0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0x56, 0x32, +0x8C, 0xEA, 0x07, 0xF4, 0xBC, 0xA3, 0x48, 0x34, 0x05, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x8D, 0xEA, -0x07, 0xF3, 0x54, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x07, 0xF4, 0x5C, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, -0xC0, 0xF0, 0x12, 0x22, 0x30, 0x69, 0x38, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x8A, 0xF0, 0x10, 0x4A, +0xC0, 0xF0, 0x09, 0x22, 0x32, 0x69, 0x38, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, 0x18, 0x4A, 0x40, 0x6B, 0x12, 0xE9, 0x25, 0xE2, 0x88, 0xA1, -0xFF, 0x6A, 0x8C, 0xEB, 0xC0, 0xF0, 0x04, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x07, 0xF3, 0xB4, 0xA3, 0x04, 0x6C, 0xAC, 0xEC, +0xFF, 0x6A, 0x8C, 0xEB, 0xA0, 0xF0, 0x1B, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x07, 0xF4, 0xBC, 0xA3, 0x04, 0x6C, 0xAC, 0xEC, 0x4C, 0xEC, 0x4D, 0x24, 0x08, 0x94, 0x0A, 0xEC, 0x23, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF7, -0x80, 0x9C, 0xC3, 0xF4, 0x70, 0x9B, 0x80, 0xA4, +0x84, 0x9C, 0xC3, 0xF4, 0x70, 0x9B, 0x80, 0xA4, 0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF7, -0x84, 0x9C, 0x4C, 0xED, 0x06, 0xD5, 0x80, 0xA4, +0x88, 0x9C, 0x4C, 0xED, 0x06, 0xD5, 0x80, 0xA4, 0x8C, 0xEA, 0x07, 0xD2, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x09, 0x22, 0x07, 0x96, 0x06, 0x97, -0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF1, 0x18, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF1, 0x14, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, 0x90, 0x67, 0x06, 0x95, 0x00, 0x6E, 0x07, 0x97, 0x25, 0x10, 0x08, 0x94, 0xFF, 0x74, 0x24, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0xC2, 0xF7, 0x80, 0x9C, 0xC3, 0xF4, +0x20, 0x6C, 0xC2, 0xF7, 0x84, 0x9C, 0xC3, 0xF4, 0x70, 0x9B, 0x80, 0xA4, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0xC2, 0xF7, 0x84, 0x9C, 0x4C, 0xED, +0x20, 0x6C, 0xC2, 0xF7, 0x88, 0x9C, 0x4C, 0xED, 0x07, 0xD5, 0x80, 0xA4, 0x8C, 0xEA, 0x06, 0xD2, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x09, 0x22, 0x06, 0x96, 0x07, 0x97, 0x30, 0xF0, 0x20, 0x6C, -0x44, 0xF1, 0x18, 0x4C, 0xB0, 0x67, 0x80, 0x18, +0x44, 0xF1, 0x14, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, 0x07, 0x95, 0x06, 0x97, 0x90, 0x67, -0x00, 0x6E, 0x80, 0x18, 0xE7, 0x4B, 0x20, 0xF0, -0x45, 0xA1, 0x04, 0x2A, 0x6F, 0xA1, 0x40, 0x6A, -0x6D, 0xEA, 0x04, 0x10, 0x6F, 0xA1, 0x41, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x4F, 0xC1, 0x30, 0xF0, -0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, 0x4D, 0xE0, -0x06, 0xD2, 0x08, 0xF2, 0x58, 0xA3, 0x07, 0xD3, -0x01, 0x4A, 0x08, 0xF2, 0x58, 0xC3, 0x08, 0xF2, -0x58, 0xA3, 0x28, 0x5A, 0x39, 0x61, 0x06, 0x94, -0x04, 0xF0, 0x4C, 0x40, 0x44, 0x32, 0x89, 0xE2, -0xA0, 0xAA, 0x09, 0xD2, 0x84, 0xF0, 0x4C, 0x40, -0x44, 0x32, 0x89, 0xE2, 0x80, 0xAA, 0x0A, 0xD2, -0x93, 0xE5, 0x80, 0x18, 0x80, 0x47, 0x06, 0x95, -0x0B, 0xD2, 0x10, 0x6B, 0xC3, 0xF4, 0x50, 0x9D, -0x6C, 0xEA, 0x0F, 0x22, 0x07, 0x92, 0x0A, 0x94, -0x09, 0x93, 0x08, 0xF2, 0xD8, 0xA2, 0x40, 0xAC, -0xE0, 0xAB, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF1, -0x14, 0x4C, 0xB0, 0x67, 0x04, 0xD2, 0x80, 0x18, -0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, -0x58, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x09, 0x22, -0xC3, 0xA1, 0x0B, 0x97, 0x30, 0xF0, 0x20, 0x6C, -0x84, 0xF1, 0x14, 0x4C, 0xB0, 0x67, 0x80, 0x18, -0x25, 0x42, 0x90, 0x67, 0x80, 0x18, 0xA6, 0x45, -0x01, 0x70, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x01, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x08, 0x22, 0x20, 0xF0, 0xA5, 0xA1, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF1, 0x10, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x00, 0x6A, 0x20, 0xF0, -0x45, 0xC1, 0x90, 0x67, 0x80, 0x18, 0x0B, 0x4B, -0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x80, 0x70, -0x3F, 0xF7, 0x00, 0x61, 0x0F, 0x97, 0x0E, 0x91, -0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0x68, 0x18, 0xEA, -0x08, 0xD2, 0x08, 0x94, 0xFF, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xAC, 0xEB, 0x8A, 0xF0, 0x10, 0x4A, -0x0B, 0xD3, 0x7F, 0x69, 0x12, 0xE8, 0x01, 0xE2, -0x80, 0x18, 0x64, 0x47, 0x7D, 0x67, 0x58, 0xC3, -0x98, 0xA3, 0x03, 0x6B, 0x09, 0xD4, 0x40, 0xA0, -0x8C, 0xE9, 0x9D, 0x67, 0x0A, 0xD2, 0xE7, 0xA0, -0xEA, 0x32, 0x6C, 0xEA, 0x59, 0xC4, 0x01, 0x6A, -0x4B, 0xEA, 0x8C, 0xA0, 0x44, 0xC0, 0x45, 0xC0, -0x20, 0xF0, 0x46, 0xC0, 0x20, 0xF0, 0x47, 0xC0, -0x19, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x4C, 0xC0, -0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF4, 0x98, 0x9C, -0x00, 0xF2, 0x00, 0x6A, 0x8C, 0xEA, 0x0C, 0x22, -0x5D, 0x67, 0x09, 0x95, 0xD9, 0xA2, 0x6C, 0xEF, -0x30, 0xF0, 0x20, 0x6C, 0xFF, 0x6B, 0xA4, 0xF1, -0x1C, 0x4C, 0x6C, 0xEF, 0x80, 0x18, 0x25, 0x42, -0x0A, 0x94, 0x8A, 0xE9, 0x2F, 0x61, 0x6C, 0xA0, -0x04, 0x6A, 0x6C, 0xEA, 0x19, 0x22, 0x09, 0x92, -0x80, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, 0xFF, 0x6C, -0x8C, 0xEA, 0x12, 0x2A, 0x0A, 0x92, 0x9D, 0x67, -0x4D, 0xEB, 0x78, 0xC4, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0xA0, 0xF0, 0x19, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xC4, 0xF1, 0x18, 0x4C, 0xB0, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, -0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x40, 0xF1, -0x19, 0x22, 0x7D, 0x67, 0xB8, 0xA3, 0x30, 0xF0, -0x20, 0x6C, 0xE4, 0xF1, 0x04, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x50, 0x11, 0x0A, 0x94, 0x23, 0xEC, -0x17, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, +0x00, 0x6E, 0x80, 0x18, 0x20, 0x4C, 0x20, 0xF0, +0x47, 0xA1, 0x04, 0x2A, 0x70, 0xA1, 0x40, 0x6A, +0x6D, 0xEA, 0x04, 0x10, 0x70, 0xA1, 0x41, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x50, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, 0x4D, 0xE0, +0x07, 0xD2, 0x28, 0xF2, 0x40, 0xA3, 0x06, 0xD3, +0x01, 0x4A, 0x28, 0xF2, 0x40, 0xC3, 0x28, 0xF2, +0x40, 0xA3, 0x28, 0x5A, 0x30, 0x61, 0x28, 0xF1, +0xA0, 0xA3, 0xA8, 0xF1, 0x80, 0xA3, 0x93, 0xE5, +0x80, 0x18, 0x81, 0x47, 0x07, 0x94, 0x09, 0xD2, +0x10, 0x6B, 0xC3, 0xF4, 0x50, 0x9C, 0x6C, 0xEA, +0x0F, 0x22, 0x06, 0x95, 0x30, 0xF0, 0x20, 0x6C, +0x64, 0xF1, 0x10, 0x4C, 0x28, 0xF2, 0xC0, 0xA5, +0x28, 0xF1, 0xE0, 0xA5, 0xA8, 0xF1, 0x40, 0xA5, +0xB0, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x25, 0x42, +0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x09, 0x22, 0xC3, 0xA1, +0x09, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF1, +0x10, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, +0x90, 0x67, 0x80, 0x18, 0xA5, 0x45, 0x01, 0x70, +0x10, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x08, 0x22, 0x20, 0xF0, 0xA7, 0xA1, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF1, 0x0C, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x00, 0x6A, 0x20, 0xF0, 0x47, 0xC1, +0x90, 0x67, 0x80, 0x18, 0x44, 0x4B, 0x01, 0x48, +0xFF, 0x6A, 0x4C, 0xE8, 0x80, 0x70, 0x3F, 0xF7, +0x09, 0x61, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, +0x32, 0x69, 0x38, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0x0C, 0xED, 0xAA, 0xF0, 0x18, 0x4A, 0x09, 0xD4, +0x0D, 0xD5, 0x12, 0xE9, 0x25, 0xE2, 0x80, 0x18, +0x65, 0x47, 0x7D, 0x67, 0x58, 0xC3, 0x98, 0xA3, +0x7F, 0x6A, 0x08, 0xD4, 0x08, 0x93, 0x4C, 0xEC, +0x0B, 0xD4, 0x0C, 0xD3, 0x80, 0xA1, 0x7D, 0x67, +0x0A, 0xD4, 0xE7, 0xA1, 0x03, 0x6C, 0xEA, 0x32, +0x8C, 0xEA, 0x59, 0xC3, 0x01, 0x6A, 0x4B, 0xEA, +0x6C, 0xA1, 0x44, 0xC1, 0x45, 0xC1, 0x20, 0xF0, +0x48, 0xC1, 0x20, 0xF0, 0x49, 0xC1, 0x19, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC1, 0x30, 0xF0, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x0B, 0x22, 0x5D, 0x67, +0x08, 0x95, 0xD9, 0xA2, 0x8C, 0xEF, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF1, 0x18, 0x4C, 0x0C, 0xEF, +0x80, 0x18, 0x25, 0x42, 0x0B, 0x93, 0x0A, 0x94, +0x8A, 0xEB, 0x31, 0x61, 0x6C, 0xA1, 0x04, 0x6A, +0x6C, 0xEA, 0x1B, 0x22, 0x0C, 0x92, 0x80, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x14, 0x2A, 0x0A, 0x92, 0x9D, 0x67, 0x4D, 0xEB, +0x78, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, -0x08, 0x22, 0x5D, 0x67, 0xB8, 0xA2, 0x30, 0xF0, -0x20, 0x6C, 0xE4, 0xF1, 0x14, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x7D, 0x67, 0x87, 0x43, 0x21, 0x4C, -0x80, 0xA4, 0x00, 0x69, 0x98, 0xC3, 0x89, 0x10, -0x08, 0x94, 0x06, 0x05, 0x00, 0xF0, 0x19, 0x06, -0x01, 0x6F, 0x80, 0x18, 0x5D, 0x4A, 0x12, 0x22, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, -0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x78, 0x22, +0xC0, 0xF0, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x5D, 0x67, 0xC4, 0xF1, 0x14, 0x4C, 0xB8, 0xA2, +0xC1, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x60, 0xF1, 0x1F, 0x22, 0x7D, 0x67, 0xB8, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF1, 0x00, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x76, 0x11, 0x0B, 0x94, +0x0A, 0x92, 0x83, 0xEA, 0x17, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x7D, 0x67, +0xB8, 0xA3, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF1, +0x10, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x9D, 0x67, +0x47, 0x44, 0x21, 0x4A, 0x40, 0xA2, 0x00, 0x68, +0x58, 0xC4, 0x97, 0x10, 0x09, 0x94, 0x06, 0x00, +0xB0, 0x67, 0x00, 0xF0, 0x19, 0x06, 0x01, 0x6F, +0x80, 0x18, 0x82, 0x48, 0x11, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x80, 0xF0, 0x04, 0x22, +0x7D, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF2, +0x00, 0x4C, 0xB8, 0xA3, 0xD9, 0xA3, 0x17, 0x10, +0x09, 0x94, 0xB0, 0x67, 0x00, 0xF0, 0x19, 0x06, +0x01, 0x6F, 0x80, 0x18, 0x74, 0x4A, 0x12, 0x22, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x6C, 0x22, 0x5D, 0x67, 0xB8, 0xA2, 0xD9, 0xA2, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF2, 0x04, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x6E, 0x10, 0x7D, 0x67, 0x87, 0xA0, +0x20, 0x6C, 0x04, 0xF2, 0x18, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x62, 0x10, 0x7D, 0x67, 0x87, 0xA1, 0x59, 0xA3, 0x03, 0x6B, 0x8C, 0xEB, 0x62, 0xEA, -0x15, 0x60, 0x9D, 0x67, 0x78, 0xA4, 0x0C, 0x5B, -0x11, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, -0x78, 0x9B, 0x01, 0x4A, 0x59, 0xC4, 0x00, 0xF2, -0x00, 0x6A, 0x6C, 0xEA, 0x59, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x5D, 0x67, 0x24, 0xF2, 0x00, 0x4C, -0xB9, 0xA2, 0x50, 0x10, 0x08, 0x94, 0x06, 0x05, -0x01, 0x6E, 0x80, 0x18, 0x67, 0x48, 0x00, 0x6B, -0x09, 0xD3, 0x10, 0x22, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0x42, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x24, 0xF2, 0x0C, 0x4C, 0x39, 0x10, 0x01, 0x49, -0xFF, 0x6A, 0x4C, 0xE9, 0x4C, 0xA0, 0x08, 0x96, -0x03, 0x6F, 0x91, 0x67, 0x01, 0x6D, 0x4C, 0xEF, -0x80, 0x18, 0xE6, 0x47, 0x7D, 0x67, 0x58, 0xC3, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, -0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, -0x5D, 0x67, 0x09, 0x95, 0xF8, 0xA2, 0x30, 0xF0, -0x20, 0x6C, 0x24, 0xF2, 0x1C, 0x4C, 0xD1, 0x67, -0x80, 0x18, 0x25, 0x42, 0x7D, 0x67, 0x58, 0xA3, -0xFF, 0x72, 0x0A, 0x61, 0x0A, 0x94, 0x83, 0xE9, -0x02, 0x61, 0x98, 0xC3, 0x05, 0x10, 0x09, 0x93, -0x01, 0x4B, 0x54, 0x73, 0x09, 0xD3, 0xD3, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, +0x02, 0x61, 0x00, 0x68, 0x1A, 0x10, 0x0B, 0x94, +0x0C, 0x5C, 0xFB, 0x61, 0x01, 0x4A, 0x7D, 0x67, +0x59, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x4B, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x5D, 0x67, +0x24, 0xF2, 0x14, 0x4C, 0xB9, 0xA2, 0x42, 0x10, +0x08, 0x93, 0xFF, 0x6A, 0x01, 0x4B, 0x4C, 0xEB, +0x08, 0xD3, 0x6C, 0xA1, 0x9D, 0x67, 0xB9, 0xA4, +0x09, 0x97, 0x08, 0x94, 0x03, 0x6A, 0x6C, 0xEA, +0x01, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE7, 0x47, +0x7D, 0x67, 0x58, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x0A, 0x22, 0x5D, 0x67, 0x08, 0x96, +0xF8, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF2, +0x00, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x25, 0x42, +0x7D, 0x67, 0x58, 0xA3, 0xFF, 0x72, 0x0C, 0x61, +0x08, 0x94, 0x0A, 0x93, 0x7F, 0x6A, 0x8C, 0xEA, +0x62, 0xEA, 0x03, 0x61, 0x9D, 0x67, 0x78, 0xC4, +0x03, 0x10, 0x01, 0x48, 0x54, 0x70, 0xCC, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF2, 0x0C, 0x4C, -0x5D, 0x67, 0xB8, 0xA2, 0x80, 0x18, 0x25, 0x42, -0x01, 0x69, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, +0x7D, 0x67, 0xB8, 0xA3, 0x30, 0xF0, 0x20, 0x6C, +0x44, 0xF2, 0x10, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x01, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, -0x0A, 0x22, 0x7D, 0x67, 0xB8, 0xA3, 0xC4, 0xA0, -0xE5, 0xA0, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF2, -0x18, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x5D, 0x67, -0x08, 0x94, 0xB8, 0xA2, 0x80, 0x18, 0xC4, 0x4A, -0x7D, 0x67, 0x58, 0xC3, 0x6C, 0xA0, 0x18, 0x6A, -0x6C, 0xEA, 0x0A, 0x22, 0x08, 0x94, 0xA4, 0xA0, -0x80, 0x18, 0xC4, 0x4A, 0x44, 0xC0, 0x08, 0x94, -0xA5, 0xA0, 0x80, 0x18, 0xC4, 0x4A, 0x45, 0xC0, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, +0x0A, 0x22, 0x5D, 0x67, 0xB8, 0xA2, 0xC4, 0xA1, +0xE5, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF2, +0x1C, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x7D, 0x67, +0x09, 0x94, 0xB8, 0xA3, 0x80, 0x18, 0xFD, 0x4A, +0x9D, 0x67, 0x58, 0xC4, 0x6C, 0xA1, 0x18, 0x6A, +0x6C, 0xEA, 0x0A, 0x22, 0x09, 0x94, 0xA4, 0xA1, +0x80, 0x18, 0xFD, 0x4A, 0x44, 0xC1, 0x09, 0x94, +0xA5, 0xA1, 0x80, 0x18, 0xFD, 0x4A, 0x45, 0xC1, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, -0x5D, 0x67, 0xB8, 0xA2, 0xC4, 0xA0, 0xE5, 0xA0, -0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF2, 0x08, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x45, 0xA0, 0xFF, 0x6B, -0x84, 0xA0, 0x4E, 0xEB, 0x01, 0x5B, 0x78, 0x67, -0xFF, 0x74, 0x05, 0x61, 0x44, 0xC0, 0x01, 0x6A, -0x4B, 0xEA, 0x45, 0xC0, 0x01, 0x4B, 0x9D, 0x67, -0x58, 0xA4, 0xFF, 0x72, 0x09, 0x61, 0x44, 0xA0, -0x01, 0x4B, 0x58, 0xC4, 0x01, 0x6A, 0x4B, 0xEA, -0x44, 0xC0, 0xFF, 0x6A, 0x4C, 0xEB, 0x07, 0x10, -0x06, 0x2B, 0x6C, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x10, 0x6B, 0x07, 0x10, 0x01, 0x73, -0x07, 0x61, 0x6C, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x08, 0x6B, 0x6D, 0xEA, 0x06, 0x10, -0x02, 0x73, 0x09, 0x61, 0x6C, 0xA0, 0x19, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC0, 0x0B, 0x92, -0x01, 0x72, 0x1B, 0x61, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x00, 0xF2, -0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x64, 0xF2, 0x18, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x6C, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x4C, 0xC0, 0x2B, 0x10, 0x6C, 0xA0, -0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC0, -0x00, 0x69, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, -0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, -0x10, 0x22, 0x7D, 0x67, 0xB8, 0xA3, 0xC4, 0xA0, -0xE5, 0xA0, 0x04, 0xD1, 0x4C, 0xA0, 0x03, 0x6B, -0x30, 0xF0, 0x20, 0x6C, 0x4E, 0x32, 0x6C, 0xEA, -0x84, 0xF2, 0x04, 0x4C, 0x05, 0xD2, 0x80, 0x18, -0x25, 0x42, 0x6B, 0xA0, 0x0F, 0x6A, 0xD1, 0x67, -0x6C, 0xEA, 0x10, 0x6B, 0x6D, 0xEA, 0x4B, 0xC0, -0x5D, 0x67, 0x08, 0x94, 0xB8, 0xA2, 0xF9, 0xA2, -0x80, 0x18, 0xE7, 0x4B, 0x0F, 0x97, 0x0E, 0x91, -0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, -0xFF, 0x68, 0x0C, 0xEC, 0x30, 0x69, 0x38, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xED, 0x0C, 0xEE, -0x8A, 0xF0, 0x10, 0x4A, 0x09, 0xD4, 0x0D, 0xD5, -0x0E, 0xD6, 0x12, 0xE9, 0x25, 0xE2, 0x80, 0x18, -0x64, 0x47, 0x7D, 0x67, 0x58, 0xC3, 0x98, 0xA3, -0x0C, 0xD4, 0x40, 0xA1, 0x9D, 0x67, 0x0A, 0xD2, -0x61, 0xA1, 0x0B, 0xD3, 0xE7, 0xA1, 0x03, 0x6B, -0xEA, 0x32, 0x6C, 0xEA, 0x59, 0xC4, 0x01, 0x6A, -0x4B, 0xEA, 0x8C, 0xA1, 0x44, 0xC1, 0x45, 0xC1, -0x20, 0xF0, 0x46, 0xC1, 0x20, 0xF0, 0x47, 0xC1, -0x19, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x4C, 0xC1, -0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF4, 0x98, 0x9C, -0x00, 0xF4, 0x00, 0x6A, 0x8C, 0xEA, 0x0B, 0x22, -0x5D, 0x67, 0x0C, 0x95, 0xD9, 0xA2, 0x6C, 0xEF, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF2, 0x08, 0x4C, -0x0C, 0xEF, 0x80, 0x18, 0x25, 0x42, 0x0D, 0x93, -0xA0, 0xF0, 0x07, 0x23, 0x0C, 0x92, 0x0A, 0x93, -0x7F, 0x6C, 0x8C, 0xEA, 0x43, 0xEB, 0x08, 0xD2, -0x02, 0x60, 0x9D, 0x67, 0x78, 0xC4, 0x08, 0x93, -0x0B, 0x94, 0x8A, 0xEB, 0x80, 0xF0, 0x19, 0x60, -0x63, 0xEC, 0x04, 0x61, 0x5D, 0x67, 0x98, 0xC2, -0x00, 0x68, 0x65, 0x10, 0x09, 0x94, 0x06, 0x00, -0xB0, 0x67, 0x00, 0xF0, 0x19, 0x06, 0x02, 0x6F, -0x80, 0x18, 0x5D, 0x4A, 0x0D, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x00, 0xF4, -0x00, 0x6A, 0x6C, 0xEA, 0x53, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xC4, 0xF2, 0x04, 0x4C, 0x4A, 0x10, -0x09, 0x94, 0xB0, 0x67, 0x02, 0x6E, 0x80, 0x18, -0x67, 0x48, 0x00, 0x68, 0x2E, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x00, 0xF4, -0x00, 0x6A, 0x6C, 0xEA, 0x3F, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x7D, 0x67, 0xC4, 0xF2, 0x10, 0x4C, -0xB8, 0xA3, 0x36, 0x10, 0x4C, 0xA1, 0x08, 0x94, -0x09, 0x96, 0x03, 0x6F, 0x02, 0x6D, 0x4C, 0xEF, -0x80, 0x18, 0xE6, 0x47, 0x9D, 0x67, 0x58, 0xC4, -0x0B, 0x93, 0x08, 0x92, 0x43, 0xEB, 0x02, 0x61, -0x78, 0xC4, 0x0C, 0x10, 0x7D, 0x67, 0x58, 0xA3, -0xFF, 0x72, 0x08, 0x61, 0x08, 0x94, 0xFF, 0x6A, -0xFF, 0x4C, 0x4C, 0xEC, 0x0A, 0x92, 0x08, 0xD4, -0x4A, 0xEC, 0xE4, 0x61, 0x01, 0x48, 0xFF, 0x6A, -0x4C, 0xE8, 0x0D, 0x93, 0x63, 0xE8, 0x06, 0x60, -0x08, 0x94, 0xFF, 0x6A, 0xAC, 0x4C, 0x4C, 0xEC, -0x0A, 0xD4, 0xD8, 0x17, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, -0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0xE4, 0xF2, 0x00, 0x4C, 0x5D, 0x67, 0xB8, 0xA2, -0x80, 0x18, 0x25, 0x42, 0x01, 0x68, 0x0E, 0x93, -0x01, 0x73, 0x06, 0x61, 0x6C, 0xA1, 0x19, 0x6A, +0x5D, 0x67, 0xB8, 0xA2, 0xC4, 0xA1, 0xE5, 0xA1, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF2, 0x0C, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x45, 0xA1, 0xFF, 0x72, +0x00, 0x6A, 0x05, 0x61, 0x01, 0x6A, 0x4B, 0xEA, +0x20, 0xF0, 0x49, 0xC1, 0x01, 0x6A, 0x64, 0xA1, +0xFF, 0x73, 0x0E, 0x61, 0x65, 0xA1, 0x01, 0x4A, +0x64, 0xC1, 0x20, 0xF0, 0x69, 0xA1, 0x20, 0xF0, +0x68, 0xC1, 0x01, 0x6B, 0x6B, 0xEB, 0x65, 0xC1, +0x20, 0xF0, 0x69, 0xC1, 0xFF, 0x6B, 0x6C, 0xEA, +0x9D, 0x67, 0x78, 0xA4, 0xFF, 0x73, 0x14, 0x61, +0x64, 0xA1, 0x01, 0x4A, 0x78, 0xC4, 0x20, 0xF0, +0x68, 0xA1, 0x79, 0xC4, 0x65, 0xA1, 0x64, 0xC1, +0x20, 0xF0, 0x69, 0xA1, 0x20, 0xF0, 0x68, 0xC1, +0x01, 0x6B, 0x6B, 0xEB, 0x65, 0xC1, 0x20, 0xF0, +0x69, 0xC1, 0xFF, 0x6B, 0x6C, 0xEA, 0x06, 0x10, +0x05, 0x2A, 0x6C, 0xA1, 0xE7, 0x4A, 0x6C, 0xEA, +0x10, 0x6B, 0x07, 0x10, 0x01, 0x72, 0x07, 0x61, +0x6C, 0xA1, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x08, 0x6B, 0x6D, 0xEA, 0x06, 0x10, 0x02, 0x72, +0x09, 0x61, 0x6C, 0xA1, 0x19, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x4C, 0xC1, 0x0D, 0x92, 0x01, 0x72, +0x1B, 0x61, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x64, 0xF2, 0x1C, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x6C, 0xA1, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x4C, 0xC1, 0x2B, 0x10, 0x6C, 0xA1, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC1, 0x00, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, -0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x10, 0x22, -0x9D, 0x67, 0xB8, 0xA4, 0xC4, 0xA1, 0xE5, 0xA1, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x10, 0x22, +0x7D, 0x67, 0xB8, 0xA3, 0xC4, 0xA1, 0xE5, 0xA1, 0x04, 0xD0, 0x4C, 0xA1, 0x03, 0x6B, 0x30, 0xF0, -0x20, 0x6C, 0x4E, 0x32, 0x6C, 0xEA, 0xE4, 0xF2, -0x10, 0x4C, 0x05, 0xD2, 0x80, 0x18, 0x25, 0x42, +0x20, 0x6C, 0x4E, 0x32, 0x6C, 0xEA, 0x84, 0xF2, +0x08, 0x4C, 0x05, 0xD2, 0x80, 0x18, 0x25, 0x42, 0x6B, 0xA1, 0x0F, 0x6A, 0xD0, 0x67, 0x6C, 0xEA, -0x20, 0x6B, 0x6D, 0xEA, 0x4B, 0xC1, 0x5D, 0x67, +0x10, 0x6B, 0x6D, 0xEA, 0x4B, 0xC1, 0x5D, 0x67, 0x09, 0x94, 0xB8, 0xA2, 0xF9, 0xA2, 0x80, 0x18, -0xE7, 0x4B, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, -0x0A, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, -0x12, 0xD1, 0x11, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, -0x30, 0x68, 0x18, 0xE9, 0x30, 0xF0, 0x20, 0x6A, -0x8A, 0xF0, 0x10, 0x4A, 0x91, 0x67, 0x12, 0xE8, -0x01, 0xE2, 0x80, 0x18, 0x64, 0x47, 0x91, 0x67, -0x0B, 0xD2, 0x80, 0x18, 0x6A, 0x47, 0x8C, 0xA0, -0x80, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6C, -0x8C, 0xEB, 0x0E, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, -0x6C, 0xEA, 0x80, 0xF1, 0x04, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF3, 0x14, 0x4C, 0x7D, 0x11, -0x18, 0x6B, 0x4C, 0xEB, 0x6F, 0x33, 0xFF, 0x6D, -0xAC, 0xEB, 0x08, 0xD3, 0x0B, 0x93, 0x7F, 0x6A, -0x6C, 0xEA, 0x60, 0xA0, 0x42, 0xEB, 0x15, 0x60, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, -0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x06, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF3, 0x1C, 0x4C, -0x80, 0x18, 0x25, 0x42, 0xA0, 0xA0, 0x08, 0x97, -0x91, 0x67, 0x00, 0x6E, 0x80, 0x18, 0xE7, 0x4B, -0x61, 0x11, 0x9D, 0x67, 0xA7, 0x44, 0x25, 0x4D, -0x80, 0xA5, 0x31, 0x6A, 0x4B, 0xEA, 0x83, 0xC0, -0x08, 0x95, 0x87, 0xA0, 0xB0, 0x33, 0x8C, 0xEA, -0x6D, 0xEA, 0x47, 0xC0, 0x83, 0xF6, 0x6C, 0x41, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x64, 0x33, 0x4D, 0xE3, 0x60, 0xAB, 0x0D, 0xD3, -0x03, 0xF7, 0x6C, 0x41, 0x64, 0x33, 0x4D, 0xE3, -0x60, 0xAB, 0x0C, 0xD3, 0x83, 0xF5, 0x6C, 0x41, -0x64, 0x33, 0x49, 0xE3, 0x40, 0xAA, 0x0D, 0x93, -0xA2, 0x67, 0x73, 0xE2, 0x0A, 0xD2, 0x80, 0x18, -0x80, 0x47, 0x09, 0xD2, 0x0C, 0x95, 0x0D, 0x92, -0x53, 0xE5, 0x80, 0x18, 0x80, 0x47, 0x7D, 0x67, -0x87, 0x43, 0x1D, 0x4C, 0x60, 0xAC, 0x0E, 0xD2, -0x6A, 0xC8, 0x0A, 0x94, 0x40, 0x6B, 0x86, 0x32, -0x41, 0x5A, 0x03, 0x60, 0x61, 0x42, 0xFF, 0x6D, -0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x71, 0xC0, -0x85, 0xF7, 0x08, 0x4A, 0xC3, 0xF4, 0x90, 0x9A, -0xFF, 0x6B, 0x01, 0x4B, 0x8C, 0xEB, 0x11, 0x23, -0x03, 0xF6, 0x6C, 0x41, 0x64, 0x33, 0x49, 0xE3, -0x40, 0xAA, 0x0D, 0x96, 0x0A, 0x97, 0x04, 0xD2, -0x0C, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF3, -0x08, 0x4C, 0xB1, 0x67, 0x05, 0xD2, 0x80, 0x18, -0x25, 0x42, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, -0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x08, 0x22, 0x09, 0x95, 0x0E, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0x44, 0xF3, 0x0C, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, -0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x0C, 0x22, 0xA7, 0xA0, 0x08, 0x96, 0x0B, 0x97, -0xAA, 0x35, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0x6A, -0x44, 0xF3, 0x1C, 0x4C, 0x4C, 0xED, 0x80, 0x18, -0x25, 0x42, 0x09, 0x93, 0x0B, 0x95, 0x91, 0x67, -0x06, 0x06, 0x00, 0xF0, 0x19, 0x07, 0x04, 0xD3, -0x80, 0x18, 0xDB, 0x49, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, -0x6C, 0xEA, 0x09, 0x22, 0x5D, 0x67, 0xB8, 0xA2, -0xD9, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF3, -0x14, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x07, 0xF3, -0xB4, 0xA3, 0x04, 0x6C, 0xFF, 0x6A, 0xAC, 0xEC, -0x0B, 0x24, 0xC3, 0xF4, 0x70, 0x9B, 0x01, 0x4A, -0x6C, 0xEA, 0xA0, 0xF0, 0x18, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x84, 0xF3, 0x04, 0x4C, 0xB1, 0x10, -0xBD, 0x67, 0x99, 0xA5, 0x09, 0x95, 0x83, 0xED, -0x03, 0x60, 0x0E, 0x94, 0x1E, 0x5C, 0x52, 0x61, -0x0E, 0x95, 0x50, 0x5D, 0x15, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, -0x01, 0x4A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x84, 0xF3, 0x10, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x01, 0x6D, 0x91, 0x67, 0xC5, 0x67, -0x80, 0x18, 0xF0, 0x4D, 0x00, 0x6A, 0x72, 0x10, -0x8A, 0xA0, 0x0F, 0x6D, 0x10, 0x6A, 0x64, 0x67, -0xAC, 0xEB, 0x01, 0x4B, 0x4B, 0xEA, 0xAC, 0xEB, -0x8C, 0xEA, 0x6D, 0xEA, 0x4A, 0xC0, 0x30, 0xF0, -0x20, 0x6C, 0x49, 0xF4, 0x98, 0x9C, 0xFF, 0x6B, -0x01, 0x4B, 0x8C, 0xEB, 0x07, 0x23, 0x30, 0xF0, -0x20, 0x6C, 0x84, 0xF3, 0x1C, 0x4C, 0x4C, 0xED, -0x80, 0x18, 0x25, 0x42, 0x6A, 0xA0, 0x0F, 0x6A, -0x6C, 0xEA, 0x02, 0x52, 0x18, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, -0x01, 0x4A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xA4, 0xF3, 0x0C, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x91, 0x67, 0x01, 0x6D, 0x00, 0x6E, -0x80, 0x18, 0xF0, 0x4D, 0x6A, 0xA0, 0x10, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x4A, 0xC0, 0x6A, 0xA0, -0x0F, 0x6A, 0x37, 0x10, 0x9D, 0x67, 0xB8, 0xA4, -0xFF, 0xF7, 0x1F, 0x6C, 0xAC, 0xEC, 0x09, 0x95, -0x83, 0xED, 0x32, 0x60, 0x8A, 0xA0, 0x10, 0x4C, -0x8A, 0xC0, 0xC3, 0xF4, 0x70, 0x9B, 0xFF, 0x6C, -0x01, 0x4C, 0x6C, 0xEC, 0x09, 0x24, 0xAA, 0xA0, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF3, 0x18, 0x4C, -0xB2, 0x35, 0x4C, 0xED, 0x80, 0x18, 0x25, 0x42, -0x4A, 0xA0, 0x52, 0x32, 0x03, 0x52, 0x16, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, -0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x06, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF3, 0x04, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x91, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x0A, 0x4D, 0x6A, 0xA0, 0x0F, 0x6A, -0x6C, 0xEA, 0x4A, 0xC0, 0x6A, 0xA0, 0x10, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x4A, 0xC0, 0x1F, 0x10, -0x8A, 0xA0, 0x92, 0x33, 0x4C, 0xEB, 0x02, 0x23, -0xF0, 0x4C, 0x8A, 0xC0, 0x8A, 0xA0, 0x0F, 0x6A, -0x64, 0x67, 0x4C, 0xEB, 0x06, 0x23, 0x0F, 0x4B, -0x4C, 0xEB, 0xE1, 0x4A, 0x8C, 0xEA, 0x6D, 0xEA, -0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, -0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF3, -0x0C, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x91, 0x67, -0x80, 0x18, 0x2C, 0x46, 0x13, 0x97, 0x12, 0x91, +0x20, 0x4C, 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, +0x09, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, +0x32, 0x69, 0x38, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0x0C, 0xED, 0x0C, 0xEE, 0xAA, 0xF0, 0x18, 0x4A, +0x09, 0xD4, 0x0C, 0xD5, 0x0E, 0xD6, 0x12, 0xE9, +0x25, 0xE2, 0x80, 0x18, 0x65, 0x47, 0x7D, 0x67, +0x58, 0xC3, 0x98, 0xA3, 0x08, 0xD4, 0x0D, 0xD4, +0x40, 0xA1, 0x9D, 0x67, 0x0A, 0xD2, 0x61, 0xA1, +0x0B, 0xD3, 0xE7, 0xA1, 0x03, 0x6B, 0xEA, 0x32, +0x6C, 0xEA, 0x59, 0xC4, 0x01, 0x6A, 0x4B, 0xEA, +0x8C, 0xA1, 0x44, 0xC1, 0x45, 0xC1, 0x20, 0xF0, +0x48, 0xC1, 0x20, 0xF0, 0x49, 0xC1, 0x19, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0x4C, 0xC1, 0x30, 0xF0, +0x20, 0x6C, 0x69, 0xF4, 0x98, 0x9C, 0x00, 0xF4, +0x00, 0x6A, 0x8C, 0xEA, 0x0B, 0x22, 0x5D, 0x67, +0x08, 0x95, 0xD9, 0xA2, 0x6C, 0xEF, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF2, 0x0C, 0x4C, 0x0C, 0xEF, +0x80, 0x18, 0x25, 0x42, 0x0C, 0x93, 0xA0, 0xF0, +0x0D, 0x23, 0x0D, 0x94, 0x0A, 0x93, 0x7F, 0x6A, +0x8C, 0xEA, 0x43, 0xEB, 0x02, 0x60, 0x9D, 0x67, +0x78, 0xC4, 0x0B, 0x94, 0x8A, 0xEA, 0xA0, 0xF0, +0x01, 0x60, 0x43, 0xEC, 0x04, 0x61, 0x5D, 0x67, +0x98, 0xC2, 0x00, 0x68, 0x6D, 0x10, 0x09, 0x94, +0x06, 0x00, 0xB0, 0x67, 0x00, 0xF0, 0x19, 0x06, +0x02, 0x6F, 0x80, 0x18, 0x82, 0x48, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x5B, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF2, 0x08, 0x4C, +0x52, 0x10, 0x09, 0x94, 0xB0, 0x67, 0x00, 0xF0, +0x19, 0x06, 0x02, 0x6F, 0x80, 0x18, 0x74, 0x4A, +0x00, 0x68, 0x34, 0x22, 0x30, 0xF0, 0x20, 0x6B, +0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, +0x6C, 0xEA, 0x45, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x7D, 0x67, 0xC4, 0xF2, 0x18, 0x4C, 0xB8, 0xA3, +0x3C, 0x10, 0x6C, 0xA1, 0x9D, 0x67, 0xB9, 0xA4, +0x09, 0x97, 0x08, 0x94, 0x03, 0x6A, 0x6C, 0xEA, +0x02, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE7, 0x47, +0x7D, 0x67, 0x08, 0x94, 0x58, 0xC3, 0x0B, 0x93, +0x7F, 0x6A, 0x8C, 0xEA, 0x42, 0xEB, 0x03, 0x61, +0x9D, 0x67, 0x78, 0xC4, 0x0C, 0x10, 0x7D, 0x67, +0x58, 0xA3, 0xFF, 0x72, 0x08, 0x61, 0x08, 0x94, +0xFF, 0x6A, 0xFF, 0x4C, 0x4C, 0xEC, 0x0A, 0x92, +0x08, 0xD4, 0x4A, 0xEC, 0xDE, 0x61, 0x01, 0x48, +0xFF, 0x6A, 0x4C, 0xE8, 0x0C, 0x93, 0x63, 0xE8, +0x06, 0x60, 0x08, 0x94, 0xFF, 0x6A, 0xAC, 0x4C, +0x4C, 0xEC, 0x0A, 0xD4, 0xD2, 0x17, 0x30, 0xF0, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF4, +0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0xE4, 0xF2, 0x04, 0x4C, 0x5D, 0x67, +0xB8, 0xA2, 0x80, 0x18, 0x25, 0x42, 0x01, 0x68, +0x0E, 0x93, 0x01, 0x73, 0x06, 0x61, 0x6C, 0xA1, +0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC1, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, +0x10, 0x22, 0x9D, 0x67, 0xB8, 0xA4, 0xC4, 0xA1, +0xE5, 0xA1, 0x04, 0xD0, 0x4C, 0xA1, 0x03, 0x6B, +0x30, 0xF0, 0x20, 0x6C, 0x4E, 0x32, 0x6C, 0xEA, +0xE4, 0xF2, 0x14, 0x4C, 0x05, 0xD2, 0x80, 0x18, +0x25, 0x42, 0x6B, 0xA1, 0x0F, 0x6A, 0xD0, 0x67, +0x6C, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, 0x4B, 0xC1, +0x5D, 0x67, 0x09, 0x94, 0xB8, 0xA2, 0xF9, 0xA2, +0x80, 0x18, 0x20, 0x4C, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x04, 0x67, 0x26, 0x67, 0x4C, 0xE8, -0x4C, 0xE9, 0x90, 0x67, 0x4C, 0xED, 0xD1, 0x67, -0x80, 0x18, 0x2E, 0x4A, 0xA2, 0x67, 0x90, 0x67, -0x00, 0x6E, 0xF1, 0x67, 0x04, 0xD2, 0x80, 0x18, -0xE7, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, -0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x07, 0x22, -0x04, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF3, -0x18, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0x69, 0x38, 0xEC, -0x30, 0xF0, 0x20, 0x6B, 0x8A, 0xF0, 0x10, 0x4B, -0x05, 0xD4, 0x12, 0xE9, 0x25, 0xE3, 0x07, 0xA1, -0x03, 0x6B, 0x12, 0x30, 0x6C, 0xE8, 0x4C, 0xE8, -0x43, 0xA1, 0x7F, 0x6B, 0x04, 0xD2, 0x4C, 0xEB, -0x40, 0xA1, 0x63, 0xEA, 0x01, 0x60, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, -0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, -0x04, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF3, -0x08, 0x4C, 0xD0, 0x67, 0x80, 0x18, 0x25, 0x42, -0x43, 0xA1, 0x04, 0x93, 0x80, 0x6D, 0xAB, 0xED, -0x4C, 0xED, 0x6D, 0xED, 0x05, 0x94, 0x00, 0xF6, -0xA0, 0x35, 0xFF, 0x6A, 0x00, 0xF6, 0xA3, 0x35, -0xF0, 0x67, 0x4C, 0xED, 0x00, 0x6E, 0x80, 0x18, -0xE7, 0x4B, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x30, 0x68, 0x18, 0xEA, 0x04, 0xD2, 0x04, 0x94, -0xFF, 0x6E, 0x30, 0xF0, 0x20, 0x6A, 0xAC, 0xEE, -0x8A, 0xF0, 0x10, 0x4A, 0x06, 0xD6, 0x18, 0x69, -0x12, 0xE8, 0x01, 0xE2, 0x80, 0x18, 0x64, 0x47, -0x04, 0x94, 0x05, 0xD2, 0x80, 0x18, 0x6A, 0x47, -0x06, 0x96, 0x4C, 0xE9, 0x2F, 0x31, 0xFF, 0x6A, -0x01, 0x76, 0x4C, 0xE9, 0x1C, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x01, 0xF7, -0x01, 0x4A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF4, 0x00, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x6B, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x4B, 0xC0, 0x04, 0x94, 0x05, 0x95, -0x00, 0x6E, 0xF1, 0x67, 0x80, 0x18, 0xE7, 0x4B, -0x6C, 0xA0, 0x19, 0x6A, 0x21, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x02, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF4, 0x0C, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x8B, 0xA0, 0x0F, 0x6A, 0x64, 0x67, -0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, 0xE1, 0x4A, -0x8C, 0xEA, 0x6D, 0xEA, 0x6C, 0xA0, 0x4B, 0xC0, -0x18, 0x6A, 0x6C, 0xEA, 0x09, 0x2A, 0x04, 0x94, -0x80, 0x18, 0x56, 0x4F, 0x6C, 0xA0, 0x61, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC0, 0x57, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, -0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x0C, 0x22, -0xAC, 0xA0, 0x03, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0xAE, 0x35, 0x4C, 0xED, 0xFF, 0x6A, 0x04, 0xF4, -0x14, 0x4C, 0x4C, 0xED, 0x80, 0x18, 0x25, 0x42, -0xAC, 0xA0, 0x03, 0x6B, 0xB6, 0x32, 0x6C, 0xEA, -0x51, 0xE0, 0xC4, 0xA4, 0x01, 0x4A, 0x6C, 0xEA, -0x05, 0xD6, 0x54, 0x36, 0x61, 0x6A, 0x4B, 0xEA, -0xAC, 0xEA, 0xCD, 0xEA, 0x4C, 0xC0, 0xAC, 0xA0, -0xAE, 0x32, 0x6C, 0xEA, 0x03, 0x4A, 0x6C, 0xEA, -0x4C, 0x33, 0x19, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, -0x6D, 0xEA, 0x4C, 0xC0, 0x20, 0xF0, 0x46, 0xA4, -0xFF, 0x72, 0x10, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x22, 0x67, 0x02, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x24, 0xF4, 0x04, 0x4C, 0xB1, 0x67, -0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x07, 0x22, 0x05, 0x95, 0x30, 0xF0, -0x20, 0x6C, 0x24, 0xF4, 0x10, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x04, 0x94, 0x05, 0x95, 0x01, 0x6E, -0xF1, 0x67, 0x80, 0x18, 0xE7, 0x4B, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, -0xFF, 0x69, 0x8C, 0xE9, 0x30, 0x68, 0x18, 0xE9, -0x30, 0xF0, 0x20, 0x6A, 0x8A, 0xF0, 0x10, 0x4A, +0xFF, 0x69, 0x8C, 0xE9, 0x32, 0x68, 0x18, 0xE9, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, 0x18, 0x4A, 0x91, 0x67, 0x12, 0xE8, 0x01, 0xE2, 0x80, 0x18, -0x64, 0x47, 0x91, 0x67, 0x09, 0xD2, 0x80, 0x18, -0x6A, 0x47, 0x0B, 0xD2, 0x4A, 0xA8, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x0E, 0xD2, -0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF4, 0x1C, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x6C, 0xA0, 0x80, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x80, 0xF1, 0x03, 0x22, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF6, 0x4C, 0x41, 0x85, 0xF7, 0x08, 0x4B, -0x44, 0x32, 0x69, 0xE2, 0x40, 0xAA, 0x06, 0xD3, -0x03, 0x5A, 0x0F, 0x61, 0xC3, 0xF4, 0x70, 0x9B, -0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF7, 0x04, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x91, 0x67, 0x00, 0x6D, -0x66, 0x11, 0x06, 0x94, 0xC4, 0xF1, 0x4C, 0x41, -0x44, 0x32, 0x89, 0xE2, 0xA0, 0xAA, 0x08, 0xD2, -0x44, 0xF1, 0x4C, 0x41, 0x44, 0x32, 0x89, 0xE2, -0x80, 0xAA, 0x07, 0xD2, 0x93, 0xE5, 0x80, 0x18, -0x80, 0x47, 0x06, 0x93, 0x0D, 0xD2, 0xC4, 0xF2, -0x4C, 0x41, 0x44, 0x32, 0x69, 0xE2, 0xA0, 0xAA, -0x0A, 0xD2, 0x07, 0x92, 0x80, 0xAA, 0x93, 0xE5, -0x80, 0x18, 0x80, 0x47, 0x06, 0x94, 0x0C, 0xD2, -0x02, 0xF0, 0x00, 0x6A, 0xC3, 0xF4, 0x70, 0x9C, -0x6C, 0xEA, 0x12, 0x22, 0x07, 0x92, 0x08, 0x93, -0xA0, 0xAA, 0x44, 0xF2, 0x4C, 0x41, 0x44, 0x32, -0x89, 0xE2, 0x0A, 0x94, 0xE0, 0xAA, 0xC0, 0xAB, -0x40, 0xAC, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF4, -0x08, 0x4C, 0x04, 0xD2, 0x80, 0x18, 0x25, 0x42, -0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, -0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, -0x0D, 0x95, 0x0C, 0x96, 0x30, 0xF0, 0x20, 0x6C, -0x44, 0xF3, 0x0C, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x0B, 0x93, 0x18, 0x6A, 0x6C, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x4E, 0x32, -0x0A, 0xD2, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x08, 0x22, 0x0A, 0x95, 0x09, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0x64, 0xF4, 0x04, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x09, 0x92, 0x7F, 0x6C, 0x09, 0x93, -0x8C, 0xEA, 0x06, 0xD2, 0x80, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x0F, 0x22, -0x06, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF4, -0x10, 0x4A, 0x84, 0x33, 0x49, 0xE3, 0x40, 0xAA, -0x52, 0x34, 0x56, 0x33, 0x6D, 0xE4, 0x4D, 0xE3, -0x5E, 0x32, 0x49, 0xE3, 0x08, 0x10, 0x06, 0x94, -0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF4, 0x10, 0x4A, -0x84, 0x33, 0x49, 0xE3, 0x40, 0xAA, 0x0B, 0xD2, -0x43, 0x80, 0x00, 0x52, 0x12, 0x60, 0x63, 0xA0, -0x7F, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xEB, -0xA5, 0xF4, 0x10, 0x4A, 0x64, 0x33, 0x4D, 0xE3, -0x40, 0xAB, 0x52, 0x34, 0x56, 0x33, 0x6D, 0xE4, -0x4D, 0xE3, 0x5E, 0x32, 0x49, 0xE3, 0x08, 0xD2, -0x0B, 0x10, 0x63, 0xA0, 0x7F, 0x6C, 0x30, 0xF0, -0x20, 0x6A, 0x8C, 0xEB, 0x64, 0x33, 0xA5, 0xF4, -0x10, 0x4A, 0x4D, 0xE3, 0x60, 0xAB, 0x08, 0xD3, -0x4B, 0xA0, 0x10, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, -0xFF, 0x6A, 0x10, 0x6C, 0x4C, 0xEB, 0x8E, 0xEB, -0x01, 0x5B, 0x78, 0x67, 0x6B, 0xEB, 0x05, 0x6C, -0x6C, 0xEC, 0x07, 0xD4, 0x30, 0xF0, 0x20, 0x6C, -0x49, 0xF4, 0x98, 0x9C, 0x02, 0xF0, 0x00, 0x6B, -0x8C, 0xEB, 0x0C, 0x23, 0xA7, 0xA0, 0x03, 0x6B, -0x0A, 0x96, 0xB2, 0x35, 0x6C, 0xED, 0x30, 0xF0, -0x20, 0x6C, 0x64, 0xF4, 0x14, 0x4C, 0x4C, 0xED, -0x80, 0x18, 0x25, 0x42, 0x0E, 0x92, 0x07, 0x94, -0xFF, 0x6D, 0x64, 0x6B, 0x4C, 0xED, 0xAB, 0xE3, -0x89, 0xE2, 0x08, 0x94, 0x98, 0xEA, 0x12, 0xEC, -0x08, 0xD4, 0x47, 0xA0, 0x03, 0x6C, 0x52, 0x32, -0x8C, 0xEA, 0x12, 0xEC, 0x84, 0xEA, 0x0D, 0x92, -0x08, 0xD4, 0x4F, 0xE3, 0x0B, 0x92, 0x78, 0xEA, -0x0A, 0x93, 0x12, 0xEA, 0x44, 0xEB, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x07, 0xD2, -0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x07, 0x22, -0x0D, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF4, -0x00, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x02, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0xA3, 0xA0, -0x09, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF4, +0x65, 0x47, 0x91, 0x67, 0x0B, 0xD2, 0x80, 0x18, +0x6B, 0x47, 0x8C, 0xA0, 0x80, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x0E, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x80, 0xF1, +0x04, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF3, +0x18, 0x4C, 0x7D, 0x11, 0x18, 0x6B, 0x4C, 0xEB, +0x6F, 0x33, 0xFF, 0x6D, 0xAC, 0xEB, 0x08, 0xD3, +0x0B, 0x93, 0x7F, 0x6A, 0x6C, 0xEA, 0x60, 0xA0, +0x42, 0xEB, 0x15, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0x69, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x24, 0xF3, 0x00, 0x4C, 0x80, 0x18, 0x25, 0x42, +0xA0, 0xA0, 0x08, 0x97, 0x91, 0x67, 0x00, 0x6E, +0x80, 0x18, 0x20, 0x4C, 0x61, 0x11, 0x9D, 0x67, +0xA7, 0x44, 0x25, 0x4D, 0x80, 0xA5, 0x31, 0x6A, +0x4B, 0xEA, 0x83, 0xC0, 0x08, 0x95, 0x87, 0xA0, +0xB0, 0x33, 0x8C, 0xEA, 0x6D, 0xEA, 0x47, 0xC0, +0x13, 0xF7, 0x60, 0x41, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x64, 0x33, 0x4D, 0xE3, +0x60, 0xAB, 0x0D, 0xD3, 0x93, 0xF7, 0x60, 0x41, +0x64, 0x33, 0x4D, 0xE3, 0x60, 0xAB, 0x0C, 0xD3, +0x13, 0xF6, 0x60, 0x41, 0x64, 0x33, 0x49, 0xE3, +0x40, 0xAA, 0x0D, 0x93, 0xA2, 0x67, 0x73, 0xE2, +0x0A, 0xD2, 0x80, 0x18, 0x81, 0x47, 0x09, 0xD2, +0x0C, 0x95, 0x0D, 0x92, 0x53, 0xE5, 0x80, 0x18, +0x81, 0x47, 0x7D, 0x67, 0x87, 0x43, 0x1D, 0x4C, +0x60, 0xAC, 0x0E, 0xD2, 0x6B, 0xC8, 0x0A, 0x94, +0x40, 0x6B, 0x86, 0x32, 0x41, 0x5A, 0x03, 0x60, +0x61, 0x42, 0xFF, 0x6D, 0xAC, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x72, 0xC0, 0xA5, 0xF7, 0x08, 0x4A, +0xC3, 0xF4, 0x90, 0x9A, 0xFF, 0x6B, 0x01, 0x4B, +0x8C, 0xEB, 0x11, 0x23, 0x93, 0xF6, 0x60, 0x41, +0x64, 0x33, 0x49, 0xE3, 0x40, 0xAA, 0x0D, 0x96, +0x0A, 0x97, 0x04, 0xD2, 0x0C, 0x92, 0x30, 0xF0, +0x20, 0x6C, 0x24, 0xF3, 0x0C, 0x4C, 0xB1, 0x67, +0x05, 0xD2, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x08, 0x22, 0x09, 0x95, +0x0E, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF3, 0x10, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x02, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, 0x08, 0x92, -0x07, 0x93, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF4, -0x00, 0x4C, 0x4E, 0x35, 0x6E, 0x36, 0x80, 0x18, -0x25, 0x42, 0x07, 0x94, 0x08, 0x92, 0x43, 0xEC, -0x03, 0x61, 0x0C, 0x93, 0x1E, 0x5B, 0x2F, 0x61, -0x6B, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0x10, 0x72, 0x38, 0x61, -0x0C, 0x94, 0x1E, 0x5C, 0x35, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x49, 0xF4, 0x78, 0x9B, 0x02, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x07, 0x22, 0x09, 0x95, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF4, 0x10, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x06, 0x94, 0x80, 0x18, -0x73, 0x47, 0x02, 0x72, 0x09, 0x61, 0x5D, 0x67, -0x67, 0x42, 0x1D, 0x4B, 0x40, 0xA3, 0x00, 0x6B, -0x20, 0xF0, 0x42, 0xC0, 0x06, 0xD3, 0x1A, 0x10, -0x9D, 0x67, 0x47, 0x44, 0x1D, 0x4A, 0x80, 0xA2, -0x20, 0xF0, 0x81, 0xC0, 0x11, 0x10, 0x6B, 0xA0, -0x10, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, 0xFF, 0x6C, -0x8C, 0xEB, 0x10, 0x73, 0x01, 0x6B, 0x06, 0xD3, -0x09, 0x61, 0x6A, 0xA0, 0x6C, 0xEA, 0x01, 0x6B, -0x6D, 0xEA, 0x4A, 0xC0, 0x06, 0xD3, 0x02, 0x10, -0x00, 0x6A, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF4, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x07, 0x22, 0x06, 0x95, 0x30, 0xF0, -0x20, 0x6C, 0xA4, 0xF4, 0x1C, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x06, 0x95, 0x91, 0x67, 0x80, 0x18, -0x77, 0x4F, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, -0x0A, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x07, 0xF3, 0x33, 0xA2, -0x30, 0x68, 0x07, 0xF3, 0x52, 0xA2, 0x18, 0xE9, -0x30, 0xF0, 0x20, 0x6B, 0x8A, 0xF0, 0x10, 0x4B, -0x02, 0x72, 0x12, 0xE8, 0x01, 0xE3, 0x34, 0x60, -0x03, 0x5A, 0x03, 0x60, 0x01, 0x72, 0x09, 0x60, -0xB7, 0x10, 0x03, 0x72, 0x78, 0x67, 0x08, 0xD3, -0x74, 0x23, 0x04, 0x72, 0x80, 0xF0, 0x19, 0x60, -0xAF, 0x10, 0x9D, 0x67, 0x0C, 0x6A, 0x0E, 0x6B, -0x70, 0xC4, 0x4F, 0xCC, 0x52, 0xC4, 0x58, 0xA0, -0xBD, 0x67, 0x53, 0xC4, 0x42, 0xA0, 0x54, 0xC4, -0x87, 0xA0, 0x03, 0x6A, 0x8A, 0x33, 0x4C, 0xEB, -0x4C, 0xEC, 0x96, 0xC5, 0x75, 0xC5, 0x64, 0xA0, -0x01, 0x6C, 0x77, 0xC5, 0x65, 0xA0, 0x78, 0xC5, -0x68, 0xA0, 0x7A, 0x33, 0x8C, 0xEB, 0x79, 0xC5, -0x6C, 0xA0, 0x6C, 0xEA, 0x5A, 0xC5, 0x4C, 0xA0, -0x4A, 0x32, 0x8C, 0xEA, 0x5B, 0xC5, 0x4A, 0xA8, -0x5C, 0xC5, 0x4B, 0xA8, 0x5D, 0xC5, 0x82, 0x10, -0x7D, 0x67, 0x0C, 0x6A, 0x4F, 0xCB, 0x0E, 0x6A, -0x50, 0xC3, 0x0D, 0x6A, 0x52, 0xC3, 0x68, 0xA0, -0x1F, 0x6A, 0x9D, 0x67, 0x6C, 0xEA, 0x53, 0xC4, -0x40, 0xA0, 0x2C, 0x31, 0x54, 0xC4, 0x41, 0xA0, -0x55, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x5C, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x56, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF7, 0x48, 0x9A, -0x49, 0xE1, 0x40, 0xA2, 0x57, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF7, 0x4C, 0x9A, 0x49, 0xE1, -0x40, 0xA2, 0x58, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF7, 0x50, 0x9A, 0x49, 0xE1, 0x40, 0xA2, -0x59, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x44, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x5A, 0xC4, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x0C, 0x22, 0xA7, 0xA0, +0x08, 0x96, 0x0B, 0x97, 0xAA, 0x35, 0x30, 0xF0, +0x20, 0x6C, 0x03, 0x6A, 0x64, 0xF3, 0x00, 0x4C, +0x4C, 0xED, 0x80, 0x18, 0x25, 0x42, 0x09, 0x93, +0x0B, 0x95, 0x91, 0x67, 0x06, 0x06, 0x00, 0xF0, +0x19, 0x07, 0x04, 0xD3, 0x80, 0x18, 0xEF, 0x49, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x09, 0x22, +0x5D, 0x67, 0xB8, 0xA2, 0xD9, 0xA2, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF3, 0x18, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, +0x08, 0x4B, 0x07, 0xF4, 0xBC, 0xA3, 0x04, 0x6C, +0xFF, 0x6A, 0xAC, 0xEC, 0x0B, 0x24, 0xC3, 0xF4, +0x70, 0x9B, 0x01, 0x4A, 0x6C, 0xEA, 0xA0, 0xF0, +0x18, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF3, +0x08, 0x4C, 0xB1, 0x10, 0xBD, 0x67, 0x99, 0xA5, +0x09, 0x95, 0x83, 0xED, 0x03, 0x60, 0x0E, 0x94, +0x1E, 0x5C, 0x52, 0x61, 0x0E, 0x95, 0x50, 0x5D, +0x15, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF3, +0x14, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x01, 0x6D, +0x91, 0x67, 0xC5, 0x67, 0x80, 0x18, 0x3D, 0x4E, +0x00, 0x6A, 0x72, 0x10, 0x8A, 0xA0, 0x0F, 0x6D, +0x10, 0x6A, 0x64, 0x67, 0xAC, 0xEB, 0x01, 0x4B, +0x4B, 0xEA, 0xAC, 0xEB, 0x8C, 0xEA, 0x6D, 0xEA, +0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x6C, 0x69, 0xF4, +0x98, 0x9C, 0xFF, 0x6B, 0x01, 0x4B, 0x8C, 0xEB, +0x07, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF3, +0x00, 0x4C, 0x4C, 0xED, 0x80, 0x18, 0x25, 0x42, +0x6A, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x02, 0x52, +0x18, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF3, +0x10, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x91, 0x67, +0x01, 0x6D, 0x00, 0x6E, 0x80, 0x18, 0x3D, 0x4E, +0x6A, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x4A, 0xC0, 0x6A, 0xA0, 0x0F, 0x6A, 0x37, 0x10, +0x9D, 0x67, 0xB8, 0xA4, 0xFF, 0xF7, 0x1F, 0x6C, +0xAC, 0xEC, 0x09, 0x95, 0x83, 0xED, 0x32, 0x60, +0x8A, 0xA0, 0x10, 0x4C, 0x8A, 0xC0, 0xC3, 0xF4, +0x70, 0x9B, 0xFF, 0x6C, 0x01, 0x4C, 0x6C, 0xEC, +0x09, 0x24, 0xAA, 0xA0, 0x30, 0xF0, 0x20, 0x6C, +0xA4, 0xF3, 0x1C, 0x4C, 0xB2, 0x35, 0x4C, 0xED, +0x80, 0x18, 0x25, 0x42, 0x4A, 0xA0, 0x52, 0x32, +0x03, 0x52, 0x16, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x69, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF3, 0x08, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x43, 0x4D, +0x6A, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x4A, 0xC0, +0x6A, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x4A, 0xC0, 0x1F, 0x10, 0x8A, 0xA0, 0x92, 0x33, +0x4C, 0xEB, 0x02, 0x23, 0xF0, 0x4C, 0x8A, 0xC0, +0x8A, 0xA0, 0x0F, 0x6A, 0x64, 0x67, 0x4C, 0xEB, +0x06, 0x23, 0x0F, 0x4B, 0x4C, 0xEB, 0xE1, 0x4A, +0x8C, 0xEA, 0x6D, 0xEA, 0x4A, 0xC0, 0x30, 0xF0, +0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0xC4, 0xF3, 0x10, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x91, 0x67, 0x80, 0x18, 0x28, 0x46, +0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x04, 0x67, +0x26, 0x67, 0x4C, 0xE8, 0x4C, 0xE9, 0x90, 0x67, +0x4C, 0xED, 0xD1, 0x67, 0x80, 0x18, 0x43, 0x4A, +0xA2, 0x67, 0x90, 0x67, 0x00, 0x6E, 0xF1, 0x67, +0x04, 0xD2, 0x80, 0x18, 0x20, 0x4C, 0x30, 0xF0, +0x20, 0x6A, 0x69, 0xF4, 0x58, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x07, 0x22, 0x04, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0xC4, 0xF3, 0x1C, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x32, 0x69, 0x38, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0xAA, 0xF0, 0x18, 0x4B, 0x05, 0xD4, 0x12, 0xE9, +0x25, 0xE3, 0x07, 0xA1, 0x03, 0x6B, 0x12, 0x30, +0x6C, 0xE8, 0x4C, 0xE8, 0x43, 0xA1, 0x7F, 0x6B, +0x04, 0xD2, 0x4C, 0xEB, 0x40, 0xA1, 0x63, 0xEA, +0x01, 0x60, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6B, +0x69, 0xF4, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x08, 0x22, 0x04, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0xE4, 0xF3, 0x0C, 0x4C, 0xD0, 0x67, +0x80, 0x18, 0x25, 0x42, 0x43, 0xA1, 0x04, 0x93, +0x80, 0x6D, 0xAB, 0xED, 0x4C, 0xED, 0x6D, 0xED, +0x05, 0x94, 0x00, 0xF6, 0xA0, 0x35, 0xFF, 0x6A, +0x00, 0xF6, 0xA3, 0x35, 0xF0, 0x67, 0x4C, 0xED, +0x00, 0x6E, 0x80, 0x18, 0x20, 0x4C, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0xD2, 0xFF, 0x6A, +0xAC, 0xEA, 0x06, 0xD2, 0x04, 0x92, 0x32, 0x68, +0x04, 0x94, 0x18, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xAA, 0xF0, 0x18, 0x4A, 0x18, 0x69, 0x12, 0xE8, +0x01, 0xE2, 0x80, 0x18, 0x65, 0x47, 0x04, 0x94, +0x05, 0xD2, 0x80, 0x18, 0x6B, 0x47, 0x4C, 0xE9, +0x2F, 0x31, 0xFF, 0x6A, 0x4C, 0xE9, 0x06, 0x92, +0x01, 0x72, 0x22, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x69, 0xF4, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x04, 0xF4, 0x04, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x04, 0x94, 0x05, 0x95, 0x00, 0x6E, 0xF1, 0x67, +0x80, 0x18, 0x20, 0x4C, 0x6C, 0xA0, 0x19, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x61, 0x6B, 0x6B, 0xEB, +0x6C, 0xEA, 0x6B, 0xA0, 0x4C, 0xC0, 0x10, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x4B, 0xC0, 0x80, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF4, 0x10, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x8B, 0xA0, 0x0F, 0x6A, +0x64, 0x67, 0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, +0xE1, 0x4A, 0x8C, 0xEA, 0x6D, 0xEA, 0x6C, 0xA0, +0x4B, 0xC0, 0x18, 0x6A, 0x6C, 0xEA, 0x09, 0x2A, +0x04, 0x94, 0x80, 0x18, 0xA7, 0x4F, 0x6C, 0xA0, +0x61, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC0, +0x5B, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x0C, 0x22, 0xAC, 0xA0, 0x03, 0x6A, 0x30, 0xF0, +0x20, 0x6C, 0xAE, 0x35, 0x4C, 0xED, 0xFF, 0x6A, +0x04, 0xF4, 0x18, 0x4C, 0x4C, 0xED, 0x80, 0x18, +0x25, 0x42, 0xAC, 0xA0, 0x03, 0x6B, 0xB6, 0x32, +0x6C, 0xEA, 0x05, 0xD2, 0x51, 0xE0, 0x44, 0xA4, +0x06, 0xD2, 0x05, 0x92, 0x01, 0x4A, 0x6C, 0xEA, +0x54, 0x36, 0x61, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, +0xCD, 0xEA, 0x4C, 0xC0, 0xAC, 0xA0, 0xAE, 0x32, +0x6C, 0xEA, 0x03, 0x4A, 0x6C, 0xEA, 0x4C, 0x33, +0x19, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x6D, 0xEA, +0x4C, 0xC0, 0x20, 0xF0, 0x48, 0xA4, 0xFF, 0x72, +0x11, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x22, 0x67, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x08, 0x22, 0x05, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0x24, 0xF4, 0x08, 0x4C, 0xD1, 0x67, +0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, 0x20, 0x6B, +0x69, 0xF4, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x08, 0x22, 0x05, 0x95, 0x06, 0x96, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF4, 0x18, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x04, 0x94, 0x06, 0x95, +0x01, 0x6E, 0xF1, 0x67, 0x80, 0x18, 0x20, 0x4C, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, +0x32, 0x68, 0x18, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0xAA, 0xF0, 0x18, 0x4A, 0x91, 0x67, 0x12, 0xE8, +0x01, 0xE2, 0x80, 0x18, 0x65, 0x47, 0x91, 0x67, +0x09, 0xD2, 0x80, 0x18, 0x6B, 0x47, 0x0B, 0xD2, +0x4B, 0xA8, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x0E, 0xD2, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x44, 0xF4, 0x08, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x6C, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x80, 0xF1, 0x03, 0x22, +0x30, 0xF0, 0x20, 0x6B, 0x93, 0xF6, 0x40, 0x41, +0xA5, 0xF7, 0x08, 0x4B, 0x44, 0x32, 0x69, 0xE2, +0x40, 0xAA, 0x06, 0xD3, 0x03, 0x5A, 0x0F, 0x61, +0xC3, 0xF4, 0x70, 0x9B, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF7, 0x00, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x91, 0x67, 0x00, 0x6D, 0x66, 0x11, 0x06, 0x94, +0xD4, 0xF1, 0x40, 0x41, 0x44, 0x32, 0x89, 0xE2, +0xA0, 0xAA, 0x08, 0xD2, 0x54, 0xF1, 0x40, 0x41, +0x44, 0x32, 0x89, 0xE2, 0x80, 0xAA, 0x07, 0xD2, +0x93, 0xE5, 0x80, 0x18, 0x81, 0x47, 0x06, 0x93, +0x0D, 0xD2, 0xD4, 0xF2, 0x40, 0x41, 0x44, 0x32, +0x69, 0xE2, 0xA0, 0xAA, 0x0A, 0xD2, 0x07, 0x92, +0x80, 0xAA, 0x93, 0xE5, 0x80, 0x18, 0x81, 0x47, +0x06, 0x94, 0x0C, 0xD2, 0x02, 0xF0, 0x00, 0x6A, +0xC3, 0xF4, 0x70, 0x9C, 0x6C, 0xEA, 0x12, 0x22, +0x07, 0x92, 0x08, 0x93, 0xA0, 0xAA, 0x54, 0xF2, +0x40, 0x41, 0x44, 0x32, 0x89, 0xE2, 0x0A, 0x94, +0xE0, 0xAA, 0xC0, 0xAB, 0x40, 0xAC, 0x30, 0xF0, +0x20, 0x6C, 0x44, 0xF4, 0x14, 0x4C, 0x04, 0xD2, +0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, 0x20, 0x6B, +0x69, 0xF4, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x08, 0x22, 0x0D, 0x95, 0x0C, 0x96, +0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF3, 0x10, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x0B, 0x93, 0x18, 0x6A, +0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x4E, 0x32, 0x0A, 0xD2, 0x02, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x0A, 0x95, +0x09, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF4, +0x10, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x09, 0x92, +0x7F, 0x6C, 0x09, 0x93, 0x8C, 0xEA, 0x06, 0xD2, +0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x0F, 0x22, 0x06, 0x94, 0x30, 0xF0, +0x20, 0x6A, 0xC5, 0xF4, 0x10, 0x4A, 0x84, 0x33, +0x49, 0xE3, 0x40, 0xAA, 0x52, 0x34, 0x56, 0x33, +0x6D, 0xE4, 0x4D, 0xE3, 0x5E, 0x32, 0x49, 0xE3, +0x08, 0x10, 0x06, 0x94, 0x30, 0xF0, 0x20, 0x6A, +0xC5, 0xF4, 0x10, 0x4A, 0x84, 0x33, 0x49, 0xE3, +0x40, 0xAA, 0x0B, 0xD2, 0x43, 0x80, 0x00, 0x52, +0x12, 0x60, 0x63, 0xA0, 0x7F, 0x6C, 0x30, 0xF0, +0x20, 0x6A, 0x8C, 0xEB, 0xC5, 0xF4, 0x10, 0x4A, +0x64, 0x33, 0x4D, 0xE3, 0x40, 0xAB, 0x52, 0x34, +0x56, 0x33, 0x6D, 0xE4, 0x4D, 0xE3, 0x5E, 0x32, +0x49, 0xE3, 0x08, 0xD2, 0x0B, 0x10, 0x63, 0xA0, +0x7F, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xEB, +0x64, 0x33, 0xC5, 0xF4, 0x10, 0x4A, 0x4D, 0xE3, +0x60, 0xAB, 0x08, 0xD3, 0x4B, 0xA0, 0x10, 0x6B, +0x6B, 0xEB, 0x4C, 0xEB, 0xFF, 0x6A, 0x10, 0x6C, +0x4C, 0xEB, 0x8E, 0xEB, 0x01, 0x5B, 0x78, 0x67, +0x6B, 0xEB, 0x05, 0x6C, 0x6C, 0xEC, 0x07, 0xD4, +0x30, 0xF0, 0x20, 0x6C, 0x69, 0xF4, 0x98, 0x9C, +0x02, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x0C, 0x23, +0xA7, 0xA0, 0x03, 0x6B, 0x0A, 0x96, 0xB2, 0x35, +0x6C, 0xED, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF4, +0x1C, 0x4C, 0x4C, 0xED, 0x80, 0x18, 0x25, 0x42, +0x0E, 0x92, 0x07, 0x94, 0xFF, 0x6D, 0x64, 0x6B, +0x4C, 0xED, 0xAB, 0xE3, 0x89, 0xE2, 0x08, 0x94, +0x98, 0xEA, 0x12, 0xEC, 0x08, 0xD4, 0x47, 0xA0, +0x03, 0x6C, 0x52, 0x32, 0x8C, 0xEA, 0x12, 0xEC, +0x84, 0xEA, 0x0D, 0x92, 0x08, 0xD4, 0x4F, 0xE3, +0x0B, 0x92, 0x78, 0xEA, 0x0A, 0x93, 0x12, 0xEA, +0x44, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x07, 0xD2, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x07, 0x22, 0x0D, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0x84, 0xF4, 0x08, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x08, 0x22, 0xA3, 0xA0, 0x09, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0x84, 0xF4, 0x18, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x0A, 0x22, 0x08, 0x92, 0x07, 0x93, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF4, 0x08, 0x4C, 0x4E, 0x35, +0x6E, 0x36, 0x80, 0x18, 0x25, 0x42, 0x07, 0x94, +0x08, 0x92, 0x43, 0xEC, 0x03, 0x61, 0x0C, 0x93, +0x1E, 0x5B, 0x2F, 0x61, 0x6B, 0xA0, 0x10, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x10, 0x72, 0x38, 0x61, 0x0C, 0x94, 0x1E, 0x5C, +0x35, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, +0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x07, 0x22, 0x09, 0x95, 0x30, 0xF0, 0x20, 0x6C, +0xA4, 0xF4, 0x18, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x06, 0x94, 0x80, 0x18, 0x74, 0x47, 0x02, 0x72, +0x09, 0x61, 0x5D, 0x67, 0x67, 0x42, 0x1D, 0x4B, +0x40, 0xA3, 0x00, 0x6B, 0x20, 0xF0, 0x44, 0xC0, +0x06, 0xD3, 0x1A, 0x10, 0x9D, 0x67, 0x47, 0x44, +0x1D, 0x4A, 0x80, 0xA2, 0x20, 0xF0, 0x83, 0xC0, +0x11, 0x10, 0x6B, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, +0x4C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x10, 0x73, +0x01, 0x6B, 0x06, 0xD3, 0x09, 0x61, 0x6A, 0xA0, +0x6C, 0xEA, 0x01, 0x6B, 0x6D, 0xEA, 0x4A, 0xC0, +0x06, 0xD3, 0x02, 0x10, 0x00, 0x6A, 0x06, 0xD2, +0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF4, 0x78, 0x9B, +0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x07, 0x22, +0x06, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF4, +0x04, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x06, 0x95, +0x91, 0x67, 0x80, 0x18, 0xC8, 0x4F, 0x13, 0x97, +0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x07, 0xF4, 0x3B, 0xA2, 0x32, 0x68, 0x07, 0xF4, +0x5A, 0xA2, 0x18, 0xE9, 0x30, 0xF0, 0x20, 0x6B, +0xAA, 0xF0, 0x18, 0x4B, 0x02, 0x72, 0x12, 0xE8, +0x01, 0xE3, 0x34, 0x60, 0x03, 0x5A, 0x03, 0x60, +0x01, 0x72, 0x09, 0x60, 0xB8, 0x10, 0x03, 0x72, +0x78, 0x67, 0x08, 0xD3, 0x74, 0x23, 0x04, 0x72, +0x80, 0xF0, 0x1A, 0x60, 0xB0, 0x10, 0x9D, 0x67, +0x0C, 0x6A, 0x0E, 0x6B, 0x70, 0xC4, 0x4F, 0xCC, +0x52, 0xC4, 0x5A, 0xA0, 0xBD, 0x67, 0x53, 0xC4, +0x42, 0xA0, 0x54, 0xC4, 0x87, 0xA0, 0x03, 0x6A, +0x8A, 0x33, 0x4C, 0xEB, 0x4C, 0xEC, 0x96, 0xC5, +0x75, 0xC5, 0x64, 0xA0, 0x01, 0x6C, 0x77, 0xC5, +0x65, 0xA0, 0x78, 0xC5, 0x68, 0xA0, 0x7A, 0x33, +0x8C, 0xEB, 0x79, 0xC5, 0x6C, 0xA0, 0x6C, 0xEA, +0x5A, 0xC5, 0x4C, 0xA0, 0x4A, 0x32, 0x8C, 0xEA, +0x5B, 0xC5, 0x4B, 0xA8, 0x5C, 0xC5, 0x4C, 0xA8, +0x5D, 0xC5, 0x83, 0x10, 0x7D, 0x67, 0x0C, 0x6A, +0x4F, 0xCB, 0x0E, 0x6A, 0x50, 0xC3, 0x0D, 0x6A, +0x52, 0xC3, 0x68, 0xA0, 0x1F, 0x6A, 0x9D, 0x67, +0x6C, 0xEA, 0x53, 0xC4, 0x40, 0xA0, 0x2C, 0x31, +0x54, 0xC4, 0x41, 0xA0, 0x55, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF7, 0x40, 0x9A, 0x49, 0xE1, +0x40, 0xA2, 0x56, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF7, 0x4C, 0x9A, 0x49, 0xE1, 0x40, 0xA2, +0x57, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF7, +0x50, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x58, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF7, 0x54, 0x9A, -0x49, 0xE1, 0x40, 0xA2, 0x5B, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF7, 0x58, 0x9A, 0x49, 0xE1, -0x40, 0xA2, 0x5C, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF7, 0x5C, 0x9A, 0x45, 0xE1, 0x40, 0xA1, -0x26, 0x10, 0xBD, 0x67, 0x0C, 0x6A, 0x4F, 0xCD, -0x0E, 0x6A, 0x50, 0xC5, 0x52, 0xC5, 0x4A, 0xA8, -0x91, 0x67, 0x53, 0xC5, 0x4B, 0xA8, 0x54, 0xC5, -0x5E, 0xA0, 0x55, 0xC5, 0x6A, 0xA0, 0x72, 0x32, -0x56, 0xC5, 0x0F, 0x6A, 0x6C, 0xEA, 0x57, 0xC5, -0x20, 0xF0, 0x45, 0xA0, 0x58, 0xC5, 0x80, 0x18, -0x64, 0x47, 0x7D, 0x67, 0x91, 0x67, 0x59, 0xC3, -0x80, 0x18, 0x6A, 0x47, 0x9D, 0x67, 0xA7, 0x44, -0x19, 0x4D, 0xA0, 0xA5, 0x5A, 0xC4, 0xBB, 0xC4, -0x42, 0xA0, 0x5C, 0xC4, 0x43, 0xA0, 0x5D, 0xC4, -0x11, 0x10, 0x7D, 0x67, 0x03, 0x6A, 0x4F, 0xCB, -0x0E, 0x6A, 0x50, 0xC3, 0x0F, 0x6A, 0x52, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF0, 0x70, 0xA2, -0x82, 0xF0, 0x10, 0x4A, 0x41, 0xA2, 0x9D, 0x67, -0x73, 0xC4, 0x54, 0xC4, 0x04, 0x94, 0x05, 0x95, -0x06, 0x96, 0x07, 0x97, 0x80, 0x18, 0x00, 0x40, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x1C, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, -0x01, 0x4D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF6, 0x34, 0x9A, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, -0x01, 0x4D, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF7, 0x60, 0x9B, 0x46, 0x67, 0x8E, 0xEB, -0x12, 0x23, 0x00, 0x6E, 0x66, 0x67, 0xE4, 0x67, -0xE6, 0xEE, 0x01, 0x68, 0x0C, 0xEF, 0x07, 0x2F, -0x01, 0x4B, 0xFF, 0x6F, 0xEC, 0xEB, 0x14, 0x73, -0x01, 0x4E, 0xF5, 0x61, 0x14, 0x6B, 0x8F, 0xEC, -0x44, 0xEB, 0xAC, 0xEC, 0x8D, 0xEA, 0x01, 0x90, -0x01, 0x63, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, -0x20, 0xE8, 0x00, 0x65, 0x01, 0x6A, 0x20, 0xE8, -0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x20, 0xE8, +0x49, 0xE1, 0x40, 0xA2, 0x59, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x48, 0x9A, 0x49, 0xE1, +0x40, 0xA2, 0x5A, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF7, 0x58, 0x9A, 0x49, 0xE1, 0x40, 0xA2, +0x5B, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF7, +0x5C, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x5C, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x40, 0x9A, +0x45, 0xE1, 0x40, 0xA1, 0x27, 0x10, 0xBD, 0x67, +0x0C, 0x6A, 0x4F, 0xCD, 0x0E, 0x6A, 0x50, 0xC5, +0x52, 0xC5, 0x4B, 0xA8, 0x91, 0x67, 0x53, 0xC5, +0x4C, 0xA8, 0x54, 0xC5, 0x20, 0xF0, 0x40, 0xA0, +0x55, 0xC5, 0x6A, 0xA0, 0x72, 0x32, 0x56, 0xC5, +0x0F, 0x6A, 0x6C, 0xEA, 0x57, 0xC5, 0x20, 0xF0, +0x47, 0xA0, 0x58, 0xC5, 0x80, 0x18, 0x65, 0x47, +0x7D, 0x67, 0x91, 0x67, 0x59, 0xC3, 0x80, 0x18, +0x6B, 0x47, 0x9D, 0x67, 0xA7, 0x44, 0x19, 0x4D, +0xA0, 0xA5, 0x5A, 0xC4, 0xBB, 0xC4, 0x42, 0xA0, +0x5C, 0xC4, 0x43, 0xA0, 0x5D, 0xC4, 0x11, 0x10, +0x7D, 0x67, 0x03, 0x6A, 0x4F, 0xCB, 0x0E, 0x6A, +0x50, 0xC3, 0x0F, 0x6A, 0x52, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF0, 0x70, 0xA2, 0x82, 0xF0, +0x10, 0x4A, 0x41, 0xA2, 0x9D, 0x67, 0x73, 0xC4, +0x54, 0xC4, 0x04, 0x94, 0x05, 0x95, 0x06, 0x96, +0x07, 0x97, 0x80, 0x18, 0x00, 0x40, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x01, 0x75, 0x33, 0x61, 0x01, 0x76, 0x17, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x20, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF0, 0xDC, 0x9B, -0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x81, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0x20, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xE3, 0xF0, -0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, -0x00, 0x6C, 0xB1, 0x67, 0x03, 0xF1, 0xC0, 0x9B, -0x67, 0x10, 0x02, 0x75, 0x2C, 0x61, 0x01, 0x76, -0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0x20, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x00, 0x6C, 0xB1, 0x67, 0x03, 0xF1, 0xC0, 0x9B, -0x2D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0x20, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x03, 0xF1, 0xC0, 0x9B, 0xC0, 0xF3, +0xFF, 0x6A, 0xAC, 0xEA, 0x1C, 0x22, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xFF, 0x6D, +0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, +0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x01, 0x6E, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xFF, 0x6D, +0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x00, 0x6E, +0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x64, 0x9B, +0x46, 0x67, 0x8E, 0xEB, 0x12, 0x23, 0x00, 0x6E, +0x66, 0x67, 0xE4, 0x67, 0xE6, 0xEE, 0x01, 0x68, +0x0C, 0xEF, 0x07, 0x2F, 0x01, 0x4B, 0xFF, 0x6F, +0xEC, 0xEB, 0x14, 0x73, 0x01, 0x4E, 0xF5, 0x61, +0x14, 0x6B, 0x8F, 0xEC, 0x44, 0xEB, 0xAC, 0xEC, +0x8D, 0xEA, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0x00, 0x6A, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, +0x01, 0x6A, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, +0x00, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x01, 0x75, 0x33, 0x61, +0x01, 0x76, 0x17, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x24, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0xE3, 0xF0, 0xD0, 0x9B, 0x03, 0xF0, 0x00, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, +0x81, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, +0x24, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0xE3, 0xF0, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, -0xE3, 0xF0, 0xDC, 0x9B, 0x39, 0x10, 0x03, 0x75, -0x38, 0x61, 0x01, 0x76, 0x1A, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0x20, 0x9A, 0x30, 0xF0, +0xE3, 0xF0, 0xD4, 0x9B, 0x67, 0x10, 0x02, 0x75, +0x2C, 0x61, 0x01, 0x76, 0x10, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0x24, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF0, 0xDC, 0x9B, 0x03, 0xF0, +0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, +0xE3, 0xF0, 0xD4, 0x9B, 0x2D, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0x24, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xE3, 0xF0, +0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, -0x00, 0x6C, 0xB1, 0x67, 0x03, 0xF1, 0xC4, 0x9B, -0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF7, 0x20, 0x9A, 0xE3, 0xF0, -0x1C, 0x4B, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xC0, 0x9B, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0x01, 0x6A, 0x20, 0xE8, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0xAC, 0xEA, 0x0E, 0x72, 0x51, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0x03, 0xF1, 0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF2, 0x00, 0x6C, 0xA7, 0xF5, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF2, 0x04, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF2, 0x08, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, -0xAD, 0xF2, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x08, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x18, 0x6C, -0x75, 0xF2, 0x1B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF2, 0x1C, 0x6C, 0xFF, 0xF7, -0x1F, 0x6D, 0xDE, 0xF3, 0x17, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x00, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF1, -0xD0, 0x9B, 0xA3, 0xF2, 0x0C, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, -0x10, 0x6C, 0xB1, 0x67, 0xFF, 0xF7, 0x1F, 0x6E, -0x55, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x03, 0xF1, 0x08, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x00, 0x6C, -0x8A, 0xF2, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0xD4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF2, -0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF2, 0x08, 0x6C, 0xFF, 0xF7, -0x1F, 0x6D, 0x81, 0xF2, 0x08, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x08, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, -0x18, 0x6C, 0xD5, 0xF4, 0x04, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x1C, 0x6C, -0xFF, 0xF7, 0x1F, 0x6D, 0xB9, 0xF0, 0x12, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, -0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, -0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0xDC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF2, 0x0C, 0x6C, 0xB1, 0x67, +0x00, 0x6C, 0xB1, 0x67, 0xE3, 0xF0, 0xD0, 0x9B, +0x39, 0x10, 0x03, 0x75, 0x38, 0x61, 0x01, 0x76, +0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, +0x24, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF0, +0xD0, 0x9B, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF1, 0xC0, 0x9B, 0xA3, 0xF2, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x07, 0x97, +0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, +0xE3, 0xF0, 0xD8, 0x9B, 0x1B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, +0x24, 0x9A, 0xE3, 0xF0, 0x10, 0x4B, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x10, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x08, 0xF1, +0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, -0xFF, 0x68, 0xAC, 0xE8, 0xD0, 0x67, 0xA3, 0xF0, -0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0xD0, 0x67, 0xA8, 0xF1, -0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x40, 0xEA, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, -0x09, 0xE4, 0x0A, 0xD4, 0x05, 0xD2, 0x40, 0xF0, -0x71, 0xA2, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, -0x44, 0x99, 0x04, 0xD3, 0xA3, 0xF0, 0x0C, 0x6C, -0xE0, 0xF1, 0x10, 0x6D, 0xD0, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0xA8, 0xF1, 0x0C, 0x6C, -0xE0, 0xF1, 0x10, 0x6D, 0xD0, 0x67, 0x40, 0xEA, -0x0A, 0x92, 0x40, 0xF0, 0x10, 0xC2, 0x05, 0x93, -0x60, 0xF0, 0x41, 0xA3, 0x02, 0x2A, 0x0D, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x04, 0x96, 0x21, 0xF0, 0x08, 0x6C, -0xF8, 0x6D, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xED, -0x68, 0x45, 0xFB, 0x4B, 0x4C, 0xEB, 0x02, 0x5B, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, -0x1F, 0x6D, 0x61, 0xF1, 0x09, 0x6E, 0x78, 0x10, -0x68, 0x45, 0xFD, 0x4B, 0x4C, 0xEB, 0x02, 0x5B, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, -0x1F, 0x6D, 0x61, 0xF1, 0x0A, 0x6E, 0x68, 0x10, -0x6F, 0x45, 0x4C, 0xEB, 0x0A, 0x5B, 0x0B, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0xA1, 0xF1, 0x0A, 0x6E, 0x59, 0x10, 0x68, 0x45, -0xE4, 0x4B, 0x4C, 0xEB, 0x10, 0x5B, 0x0B, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x80, 0xF4, 0x14, 0x6E, 0x49, 0x10, 0x68, 0x45, -0xD4, 0x4B, 0x4C, 0xEB, 0x04, 0x5B, 0x0B, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x80, 0xF4, 0x13, 0x6E, 0x39, 0x10, 0x68, 0x45, -0xD0, 0x4B, 0x4C, 0xEB, 0x38, 0x5B, 0x0B, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x40, 0xF4, 0x13, 0x6E, 0x29, 0x10, 0x68, 0x45, -0x98, 0x4B, 0x4C, 0xEB, 0x08, 0x5B, 0x0B, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x40, 0xF4, 0x12, 0x6E, 0x19, 0x10, 0x88, 0x4D, -0x4C, 0xED, 0x35, 0x5D, 0x0B, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, -0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, -0x12, 0x6E, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x11, 0x6E, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0xAC, 0xEA, -0x0F, 0x5A, 0x0B, 0x60, 0x0D, 0x72, 0x09, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x01, 0xF0, 0x08, 0x6C, 0x70, 0x6D, 0x01, 0x6E, -0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x01, 0xF0, 0x08, 0x6C, 0x70, 0x6D, -0x03, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x01, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x26, 0x67, 0x3B, 0x22, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x23, 0xF1, 0x04, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, -0x04, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF1, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xD1, 0x67, 0x48, 0xF0, 0x04, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, -0x00, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF0, 0x00, 0x6C, -0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x01, 0xF0, -0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, -0x1C, 0x6C, 0x23, 0xF1, 0xA8, 0x9B, 0x0F, 0x6E, -0x37, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x23, 0xF1, 0x24, 0x9A, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF1, 0x04, 0x6C, 0xB1, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x48, 0xF0, 0x04, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, -0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF0, 0x00, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x01, 0xF0, -0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF1, -0xA8, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x13, 0x22, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0xF0, 0x18, 0x6C, 0x08, 0x6D, 0x01, 0x6E, +0x0E, 0x72, 0x51, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0xE3, 0xF0, 0x1C, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, +0x00, 0x6C, 0xA7, 0xF5, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, +0x23, 0xF2, 0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x08, 0x6C, +0xFF, 0xF7, 0x1F, 0x6D, 0xAD, 0xF2, 0x03, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x83, 0xF2, 0x18, 0x6C, 0x75, 0xF2, 0x1B, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, +0x1C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0xDE, 0xF3, +0x17, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xA3, 0xF2, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF5, 0x1C, 0x6C, 0x23, 0xF1, -0xA8, 0x9B, 0x0F, 0x6E, 0x12, 0x10, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, -0x18, 0x6C, 0x08, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF1, 0xA8, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, -0x00, 0x6D, 0x24, 0x67, 0x80, 0x18, 0xB9, 0x52, -0x99, 0x70, 0x07, 0x61, 0x50, 0x99, 0x40, 0xA2, -0x04, 0x2A, 0x91, 0x67, 0x01, 0x6D, 0x70, 0x6E, -0x03, 0x10, 0x00, 0x6D, 0x91, 0x67, 0xC5, 0x67, -0x80, 0x18, 0x79, 0x52, 0x07, 0x97, 0x06, 0x91, +0x44, 0x98, 0x03, 0xF1, 0xC4, 0x9B, 0xA3, 0xF2, +0x0C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xA3, 0xF2, 0x10, 0x6C, 0xB1, 0x67, +0xFF, 0xF7, 0x1F, 0x6E, 0x55, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xE3, 0xF0, +0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF2, 0x00, 0x6C, 0x8A, 0xF2, 0x04, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, +0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, +0x2B, 0xE9, 0x23, 0xF2, 0x04, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, +0x08, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x81, 0xF2, +0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x83, 0xF2, 0x18, 0x6C, 0xD5, 0xF4, +0x04, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x83, 0xF2, 0x1C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, +0xB9, 0xF0, 0x12, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF1, 0xCC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xA3, 0xF2, 0x00, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, +0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, +0x0C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF1, +0xD4, 0x9B, 0xA3, 0xF2, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x68, 0xAC, 0xE8, +0xD0, 0x67, 0xA3, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, +0x00, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0xD0, 0x67, 0xA8, 0xF1, 0x0C, 0x6C, 0x1E, 0xF0, +0x00, 0x6D, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0xAC, 0xEA, -0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x63, 0xF4, -0x04, 0x6C, 0x22, 0xF6, 0xA0, 0x9B, 0x01, 0x6E, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x22, 0xF6, -0xA0, 0x9B, 0x63, 0xF4, 0x04, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0xAC, 0xEA, -0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x41, 0xF4, 0x14, 0x6C, 0x80, 0x6D, -0x01, 0x6E, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x41, 0xF4, 0x14, 0x6C, -0x80, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x5B, 0xAC, 0x20, 0xE8, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0xFF, 0xF7, 0x1F, 0x68, 0xAC, 0xE8, 0x24, 0x67, -0xD0, 0x67, 0x61, 0xF2, 0x10, 0x6C, 0xE0, 0xF3, -0x1F, 0x6D, 0x40, 0xEA, 0x1B, 0xC9, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0xAC, 0x9B, -0xC0, 0xF3, 0x44, 0x9A, 0x00, 0x6E, 0x23, 0xF4, -0x1C, 0x6C, 0x40, 0xEA, 0x01, 0x6D, 0xA5, 0xF5, -0x14, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0xA5, 0x19, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x70, 0x9B, -0x05, 0x97, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0x54, 0x9A, 0x4E, 0xEB, 0x01, 0x5B, -0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x83, 0xF2, 0x18, 0x68, 0x24, 0x67, 0x18, 0xF0, -0x00, 0x6D, 0x90, 0x67, 0x80, 0x18, 0xA5, 0x19, -0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, -0xB0, 0x9A, 0xA3, 0xF2, 0x08, 0x6C, 0x80, 0x18, -0xA5, 0x19, 0x90, 0x67, 0xC0, 0x6D, 0x04, 0xD2, -0x80, 0x18, 0xA5, 0x19, 0x02, 0x67, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0xBC, 0x9A, 0x63, 0xF2, -0x10, 0x6C, 0x80, 0x18, 0xA5, 0x19, 0x05, 0x93, -0x04, 0x95, 0xFF, 0x6C, 0x8C, 0xEB, 0x8C, 0xE8, -0x70, 0x33, 0x10, 0x30, 0x4D, 0xE8, 0xAD, 0xEB, -0x60, 0xF0, 0x71, 0xC1, 0x60, 0xF0, 0x12, 0xC1, +0xFF, 0x68, 0xAC, 0xE8, 0x09, 0xE4, 0x0A, 0xD4, +0x05, 0xD2, 0x40, 0xF0, 0x71, 0xA2, 0x30, 0xF0, +0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0x04, 0xD3, +0xA3, 0xF0, 0x0C, 0x6C, 0xE0, 0xF1, 0x10, 0x6D, +0xD0, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0xA8, 0xF1, 0x0C, 0x6C, 0xE0, 0xF1, 0x10, 0x6D, +0xD0, 0x67, 0x40, 0xEA, 0x0A, 0x92, 0x40, 0xF0, +0x10, 0xC2, 0x05, 0x93, 0x60, 0xF0, 0x41, 0xA3, +0x02, 0x2A, 0x0D, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x04, 0x96, +0x21, 0xF0, 0x08, 0x6C, 0xF8, 0x6D, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, -0x08, 0xD4, 0xCC, 0xEA, 0xC0, 0xF0, 0x1C, 0x25, -0x20, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x23, 0xF1, 0xB4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x21, 0xF0, -0x13, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, -0x02, 0x6E, 0x40, 0xEA, 0x01, 0x6D, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xAB, 0xED, 0x23, 0xF1, 0xD8, 0x9B, -0x90, 0x11, 0x08, 0x93, 0x50, 0x9B, 0x40, 0xA2, -0x01, 0x72, 0x80, 0xF1, 0x0B, 0x61, 0x01, 0x69, -0x2B, 0xE9, 0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x80, 0x18, 0xA5, 0x19, 0x08, 0x93, 0x30, 0xF0, -0x20, 0x68, 0x03, 0xF0, 0x00, 0x6C, 0x5D, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0xB4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x08, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, -0x18, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, -0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x04, 0xF2, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF1, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF1, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xED, 0x68, 0x45, 0xFB, 0x4B, +0x4C, 0xEB, 0x02, 0x5B, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, +0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x61, 0xF1, +0x09, 0x6E, 0x78, 0x10, 0x68, 0x45, 0xFD, 0x4B, +0x4C, 0xEB, 0x02, 0x5B, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, +0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x61, 0xF1, +0x0A, 0x6E, 0x68, 0x10, 0x6F, 0x45, 0x4C, 0xEB, +0x0A, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0xA1, 0xF1, 0x0A, 0x6E, +0x59, 0x10, 0x68, 0x45, 0xE4, 0x4B, 0x4C, 0xEB, +0x10, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x80, 0xF4, 0x14, 0x6E, +0x49, 0x10, 0x68, 0x45, 0xD4, 0x4B, 0x4C, 0xEB, +0x04, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x80, 0xF4, 0x13, 0x6E, +0x39, 0x10, 0x68, 0x45, 0xD0, 0x4B, 0x4C, 0xEB, +0x38, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x40, 0xF4, 0x13, 0x6E, +0x29, 0x10, 0x68, 0x45, 0x98, 0x4B, 0x4C, 0xEB, +0x08, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x40, 0xF4, 0x12, 0x6E, +0x19, 0x10, 0x88, 0x4D, 0x4C, 0xED, 0x35, 0x5D, +0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, +0x1F, 0x6D, 0x00, 0xF4, 0x12, 0x6E, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, +0x00, 0xF4, 0x11, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0xAC, 0xEA, 0x0F, 0x5A, 0x0B, 0x60, +0x0D, 0x72, 0x09, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x01, 0xF0, 0x08, 0x6C, +0x70, 0x6D, 0x01, 0x6E, 0x08, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0xF0, +0x08, 0x6C, 0x70, 0x6D, 0x03, 0x6E, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0xAC, 0xEA, 0x26, 0x67, 0x3B, 0x22, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0x03, 0xF1, 0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF1, 0x04, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x18, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xD1, 0x67, +0x48, 0xF0, 0x04, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF6, 0x24, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF1, 0x00, 0x6C, 0xB1, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x48, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, +0x18, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF5, 0x1C, 0x6C, 0x03, 0xF1, +0xBC, 0x9B, 0x0F, 0x6E, 0x37, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x03, 0xF1, +0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, +0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x48, 0xF0, +0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF6, 0x24, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF1, 0x00, 0x6C, 0xB1, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x48, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, +0x18, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF1, 0xBC, 0x9B, 0x23, 0xF5, +0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0xAC, 0xEA, 0x13, 0x22, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, +0x08, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, +0x1C, 0x6C, 0x03, 0xF1, 0xBC, 0x9B, 0x0F, 0x6E, +0x12, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x08, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF1, 0xBC, 0x9B, +0x23, 0xF5, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x68, 0xAC, 0xE8, 0x00, 0x6D, 0x24, 0x67, +0x80, 0x18, 0x10, 0x53, 0x99, 0x70, 0x07, 0x61, +0x50, 0x99, 0x40, 0xA2, 0x04, 0x2A, 0x91, 0x67, +0x01, 0x6D, 0x70, 0x6E, 0x03, 0x10, 0x00, 0x6D, +0x91, 0x67, 0xC5, 0x67, 0x80, 0x18, 0xD0, 0x52, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0xAC, 0xEA, 0x0C, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9A, 0x63, 0xF4, 0x04, 0x6C, 0x22, 0xF6, +0xA4, 0x9B, 0x01, 0x6E, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9A, 0x22, 0xF6, 0xA4, 0x9B, 0x63, 0xF4, +0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0xAC, 0xEA, 0x09, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x41, 0xF4, +0x14, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x41, 0xF4, 0x14, 0x6C, 0x80, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x5B, 0xAC, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x68, +0xAC, 0xE8, 0x24, 0x67, 0xD0, 0x67, 0x61, 0xF2, +0x10, 0x6C, 0xE0, 0xF3, 0x1F, 0x6D, 0x40, 0xEA, +0x1B, 0xC9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF1, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0x00, 0x6E, 0x23, 0xF4, 0x1C, 0x6C, 0x40, 0xEA, +0x01, 0x6D, 0xA5, 0xF5, 0x14, 0x6C, 0xAB, 0xED, +0x80, 0x18, 0xAF, 0x19, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF1, 0x64, 0x9B, 0x05, 0x97, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x58, 0x9A, +0x4E, 0xEB, 0x01, 0x5B, 0x58, 0x67, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x83, 0xF2, 0x18, 0x68, +0x24, 0x67, 0x18, 0xF0, 0x00, 0x6D, 0x90, 0x67, +0x80, 0x18, 0xAF, 0x19, 0x05, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF0, 0xA4, 0x9A, 0xA3, 0xF2, +0x08, 0x6C, 0x80, 0x18, 0xAF, 0x19, 0x90, 0x67, +0xC0, 0x6D, 0x04, 0xD2, 0x80, 0x18, 0xAF, 0x19, +0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0xA0, 0x9A, 0x63, 0xF2, 0x10, 0x6C, 0x80, 0x18, +0xAF, 0x19, 0x05, 0x93, 0x04, 0x95, 0xFF, 0x6C, +0x8C, 0xEB, 0x8C, 0xE8, 0x70, 0x33, 0x10, 0x30, +0x4D, 0xE8, 0xAD, 0xEB, 0x60, 0xF0, 0x73, 0xC1, +0x60, 0xF0, 0x14, 0xC1, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0x08, 0xD4, 0xCC, 0xEA, +0xC0, 0xF0, 0x1C, 0x25, 0x20, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x23, 0xF1, +0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x00, 0x6C, 0x21, 0xF0, 0x13, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, +0x18, 0xF0, 0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, +0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xAB, 0xED, +0x23, 0xF1, 0xCC, 0x9B, 0x90, 0x11, 0x08, 0x93, +0x50, 0x9B, 0x40, 0xA2, 0x01, 0x72, 0x80, 0xF1, +0x0B, 0x61, 0x01, 0x69, 0x2B, 0xE9, 0xA1, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x80, 0x18, 0xAF, 0x19, +0x08, 0x93, 0x30, 0xF0, 0x20, 0x68, 0x03, 0xF0, +0x00, 0x6C, 0x5E, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF1, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x81, 0xF0, 0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x81, 0xF0, 0x18, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, +0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x04, 0xF2, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x0C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF1, 0xD0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, +0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF1, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, @@ -14696,42 +14770,42 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0x6B, 0x43, 0xF1, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0xD8, 0x9B, 0xC0, 0xF3, +0x14, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x43, 0xF1, +0x14, 0x4B, 0xD4, 0x10, 0x20, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x23, 0xF1, +0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x00, 0x6C, 0x20, 0xF3, 0x13, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, +0x18, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xAB, 0xED, +0x43, 0xF1, 0xD8, 0x9B, 0xB4, 0x10, 0x08, 0x93, +0x50, 0x9B, 0x40, 0xA2, 0x01, 0x72, 0xA0, 0xF0, +0x0F, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF1, 0xA8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x20, 0xF3, +0x13, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x81, 0xF0, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, +0x18, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x08, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, +0xDE, 0x9B, 0x2B, 0xE9, 0xA1, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF1, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0x00, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xC0, 0x9B, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x63, 0xF1, 0x00, 0x4B, 0xD4, 0x10, -0x20, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x23, 0xF1, 0xB4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x20, 0xF3, -0x13, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x01, 0x6D, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xAB, 0xED, 0x63, 0xF1, 0xC4, 0x9B, -0xB4, 0x10, 0x08, 0x93, 0x50, 0x9B, 0x40, 0xA2, -0x01, 0x72, 0xA0, 0xF0, 0x0F, 0x61, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, -0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x00, 0x6C, 0x20, 0xF3, 0x13, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x18, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x69, 0xDD, 0x9B, 0x2B, 0xE9, -0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x04, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0x04, 0x4B, 0xC0, 0x9B, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF1, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, @@ -14749,1551 +14823,1550 @@ u8 array_mp_8822c_fw_ap[] = { 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0xC4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x0C, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x83, 0xF1, 0x0C, 0x4B, -0xC0, 0x9B, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x05, 0x67, 0xC3, 0xF0, 0xB0, 0x9A, -0x21, 0xF0, 0x04, 0x6C, 0x80, 0x18, 0xA5, 0x19, -0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0xBC, 0x9A, 0x03, 0xF2, 0x04, 0x6C, 0x80, 0x18, -0xA5, 0x19, 0x01, 0x72, 0x02, 0x61, 0x03, 0x6A, -0x06, 0x10, 0x02, 0x2A, 0x01, 0x6A, 0x03, 0x10, -0x05, 0x72, 0x02, 0x61, 0x02, 0x6A, 0x41, 0xC0, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x05, 0x67, -0x01, 0x6D, 0x21, 0xF0, 0x00, 0x6C, 0xAB, 0xED, -0x80, 0x18, 0xA5, 0x19, 0xF0, 0x6B, 0x4C, 0xEB, -0x72, 0x33, 0x61, 0xC0, 0x0F, 0x6B, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, 0xB0, 0x9A, -0x60, 0xC0, 0x03, 0xF2, 0x04, 0x6C, 0x80, 0x18, -0xA5, 0x19, 0x0C, 0x72, 0x02, 0x61, 0x03, 0x6A, -0x09, 0x10, 0x08, 0x72, 0x02, 0x61, 0x01, 0x6A, -0x05, 0x10, 0x04, 0x72, 0x02, 0x61, 0x02, 0x6A, -0x01, 0x10, 0x01, 0x2A, 0x42, 0xC0, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF5, 0xB0, 0x9A, 0x23, 0xF6, -0x04, 0x6C, 0x80, 0x18, 0xA5, 0x19, 0x4F, 0xEA, -0x43, 0xC0, 0x01, 0x6A, 0x44, 0xC0, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x63, 0xF5, 0x10, 0x69, 0x01, 0x6D, 0x91, 0x67, -0xAB, 0xED, 0x80, 0x18, 0xA5, 0x19, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x68, 0x04, 0x96, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, -0xFF, 0xF5, 0x1E, 0x4E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x04, 0x96, 0x01, 0x6D, 0x91, 0x67, -0xAB, 0xED, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xED, -0xC3, 0xF0, 0x10, 0x4A, 0x04, 0xD5, 0xA0, 0x9A, -0x21, 0xF0, 0x04, 0x69, 0x91, 0x67, 0x80, 0x18, -0xA5, 0x19, 0x04, 0x93, 0x48, 0x23, 0x4C, 0xE8, -0x03, 0x70, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6C, -0xC4, 0xF4, 0x08, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x00, 0x6A, 0x7B, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x1C, 0x6C, -0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF7, 0x1C, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0xF1, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x1C, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, -0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF1, 0xB4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x83, 0xF1, -0xB8, 0x9B, 0x00, 0x6E, 0x3C, 0x10, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, -0x1C, 0x6C, 0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x1C, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF2, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0xB4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, -0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF1, -0xB8, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0xCC, 0xEA, -0x08, 0xD2, 0x0E, 0xD4, 0x0F, 0xD5, 0x11, 0xD7, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, -0x64, 0x9C, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, -0x14, 0x4C, 0xC2, 0xF3, 0x00, 0x4D, 0x80, 0x18, -0x25, 0x42, 0x0F, 0x93, 0x02, 0x5B, 0x03, 0x60, -0x08, 0x94, 0x54, 0x5C, 0x12, 0x61, 0x0E, 0x94, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, -0x64, 0x9C, 0xFF, 0x69, 0x6C, 0xEA, 0x80, 0xF0, -0x15, 0x22, 0x0F, 0x95, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF5, 0x00, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x8D, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x83, 0xF1, 0x1C, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x1C, 0x69, -0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0xA0, 0x9A, 0xC0, 0xF3, -0x64, 0x98, 0x08, 0x96, 0x91, 0x67, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x1C, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0xE5, 0xF5, 0x08, 0x6C, -0xFF, 0x6D, 0x80, 0x18, 0xA5, 0x19, 0x00, 0xF6, -0x40, 0x31, 0x00, 0xF6, 0x23, 0x31, 0x40, 0x6A, -0x2C, 0xEA, 0x03, 0x22, 0x80, 0x6A, 0x4B, 0xEA, -0x4D, 0xE9, 0x11, 0x94, 0x0B, 0x74, 0x10, 0x61, -0x0F, 0x93, 0xA3, 0xF0, 0x00, 0x6A, 0x06, 0xD2, -0x05, 0xF1, 0x00, 0x4A, 0x07, 0xD2, 0x9D, 0x67, -0x68, 0x32, 0x49, 0xE4, 0x8C, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0xA4, 0x9A, 0x13, 0x10, -0x11, 0x92, 0x00, 0x68, 0x0C, 0x72, 0x13, 0x61, -0x0F, 0x93, 0xE3, 0xF0, 0x08, 0x6A, 0x04, 0xD2, -0x05, 0xF1, 0x00, 0x4A, 0x05, 0xD2, 0x9D, 0x67, -0x68, 0x32, 0x49, 0xE4, 0x88, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0xA8, 0x9A, 0x80, 0x18, -0xA5, 0x19, 0xFF, 0x68, 0x4C, 0xE8, 0x0E, 0x94, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, -0x64, 0x9C, 0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF5, 0x18, 0x4C, 0xB1, 0x67, -0xD0, 0x67, 0x80, 0x18, 0x25, 0x42, 0x21, 0xE0, -0x00, 0x50, 0x00, 0x69, 0x02, 0x61, 0xFF, 0x69, -0x0C, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF1, -0xBC, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x0E, 0x94, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, -0x09, 0x22, 0x0F, 0x95, 0x08, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0x24, 0xF5, 0x08, 0x4C, 0xF1, 0x67, -0x80, 0x18, 0x25, 0x42, 0x51, 0x67, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x00, 0xF6, 0xA0, 0x35, 0x00, 0xF6, 0xC0, 0x36, -0x00, 0xF6, 0xE0, 0x37, 0x00, 0xF6, 0xA3, 0x35, -0x00, 0xF6, 0xC3, 0x36, 0x00, 0xF6, 0xE3, 0x37, -0x05, 0xD5, 0x06, 0xD6, 0x07, 0xD7, 0x5D, 0x67, -0x40, 0xF0, 0x48, 0x82, 0x7D, 0x67, 0x24, 0x67, -0x08, 0xD2, 0x40, 0xF0, 0x6C, 0xA3, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x04, 0xD3, -0x64, 0x9C, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, -0x14, 0x4C, 0xE2, 0xF3, 0x00, 0x4D, 0x80, 0x18, -0x25, 0x42, 0x20, 0xF0, 0x4F, 0xA1, 0x0E, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, -0x64, 0x99, 0x6C, 0xEA, 0x5F, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x44, 0xF5, 0x08, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x58, 0x10, 0x04, 0x92, 0x40, 0x5A, -0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x7C, 0x9A, 0x44, 0x99, 0x4C, 0xEB, 0x00, 0x6A, -0x4E, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF5, -0x04, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x00, 0x6A, -0x46, 0x10, 0x83, 0xF4, 0x10, 0x68, 0x90, 0x67, -0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0xA5, 0x19, -0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x90, 0x67, 0x10, 0xF0, 0x00, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x06, 0x90, 0x05, 0x93, -0x7F, 0x6A, 0x4C, 0xE8, 0x4C, 0xEB, 0x00, 0x30, -0x6D, 0xE8, 0x07, 0x93, 0x04, 0x6C, 0x8B, 0xEC, -0x4C, 0xEB, 0x60, 0x33, 0x60, 0x33, 0x6D, 0xE8, -0x08, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0x6C, 0xEA, -0x00, 0xF6, 0x40, 0x32, 0x4D, 0xE8, 0x04, 0x92, -0xFF, 0xF7, 0x1F, 0x6B, 0xD0, 0x67, 0x4C, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x07, 0xF2, 0x00, 0x4C, 0x6C, 0xEC, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, -0x64, 0x99, 0x6C, 0xEA, 0x0B, 0x22, 0x04, 0x95, -0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF5, 0x18, 0x4C, -0xC5, 0x67, 0x07, 0xF2, 0x00, 0x4E, 0xF0, 0x67, -0x80, 0x18, 0x25, 0x42, 0x01, 0x6A, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x12, 0xD6, 0x13, 0xD7, -0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x9C, 0xFF, 0x69, -0x04, 0x67, 0x6C, 0xEA, 0xAC, 0xE9, 0x0A, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, -0xE4, 0xF4, 0x14, 0x4C, 0x02, 0xF4, 0x04, 0x4D, -0x80, 0x18, 0x25, 0x42, 0x20, 0xF0, 0x4F, 0xA0, -0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x7E, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF5, 0x08, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x77, 0x10, 0x12, 0x92, -0x02, 0x5A, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x7C, 0x9A, 0x44, 0x98, 0x4C, 0xEB, -0x00, 0x6A, 0x6D, 0x23, 0x12, 0x95, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF5, 0x00, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x00, 0x6A, 0x64, 0x10, 0x83, 0xF4, -0x10, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, -0xA5, 0x19, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF4, 0x10, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x13, 0x93, 0x0B, 0x73, 0x27, 0x61, 0x12, 0x93, -0xA3, 0xF0, 0x00, 0x6A, 0x08, 0xD2, 0x05, 0xF1, -0x00, 0x4A, 0x09, 0xD2, 0x68, 0x32, 0x06, 0x03, -0x4D, 0xE3, 0x0A, 0xD3, 0x84, 0xAB, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9A, 0xA3, 0xF1, 0xA4, 0x9B, 0xD1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x32, 0x22, -0x0A, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF5, -0x18, 0x4C, 0xE2, 0x9A, 0x12, 0x95, 0x04, 0xD1, -0x0B, 0x6E, 0x26, 0x10, 0x12, 0x93, 0xE3, 0xF0, -0x08, 0x6A, 0x06, 0xD2, 0x05, 0xF1, 0x00, 0x4A, -0x07, 0xD2, 0x68, 0x32, 0x06, 0x03, 0x4D, 0xE3, -0x0B, 0xD3, 0x80, 0xAB, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0xA3, 0xF1, 0xA8, 0x9B, 0xD1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, -0x64, 0x98, 0x6C, 0xEA, 0x0B, 0x22, 0x0B, 0x92, -0x12, 0x95, 0x13, 0x96, 0x30, 0xF0, 0x20, 0x6C, -0xE0, 0x9A, 0x84, 0xF5, 0x18, 0x4C, 0x04, 0xD1, -0x80, 0x18, 0x25, 0x42, 0x01, 0x6A, 0x0F, 0x97, -0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x0C, 0xD4, 0x25, 0x67, 0xA0, 0xA5, 0x00, 0x6E, -0x0B, 0x6F, 0x80, 0x18, 0x58, 0x55, 0x0C, 0x94, -0xA1, 0xA1, 0x01, 0x6E, 0x0B, 0x6F, 0x80, 0x18, -0x58, 0x55, 0x0C, 0x94, 0xA2, 0xA1, 0x00, 0x6E, -0x0C, 0x6F, 0x80, 0x18, 0x58, 0x55, 0x0C, 0x94, -0xA3, 0xA1, 0x01, 0x6E, 0x0C, 0x6F, 0x80, 0x18, -0x58, 0x55, 0xFD, 0x6A, 0x00, 0x6B, 0x11, 0x67, -0x06, 0xD2, 0x07, 0xD3, 0x07, 0x93, 0x03, 0x6A, -0x6C, 0xEA, 0x03, 0x72, 0x0A, 0x61, 0x44, 0x80, -0xA1, 0x80, 0xC2, 0x80, 0xE3, 0x80, 0x0C, 0x94, -0x04, 0xD2, 0x06, 0x92, 0x05, 0xD2, 0x80, 0x18, -0x0A, 0x55, 0x06, 0x92, 0x07, 0x93, 0x01, 0x48, -0x01, 0x4A, 0x06, 0xD2, 0x01, 0x4B, 0x07, 0xD3, -0x06, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x07, 0x92, -0x06, 0xD3, 0x1C, 0x72, 0xE3, 0x61, 0x11, 0x67, -0x29, 0x69, 0x43, 0x41, 0x03, 0x6B, 0x6C, 0xEA, -0x03, 0x72, 0x0D, 0x61, 0x20, 0xF0, 0xAD, 0x80, -0x20, 0xF0, 0xCE, 0x80, 0x20, 0xF0, 0xEF, 0x80, -0x20, 0xF0, 0x50, 0x80, 0x0C, 0x94, 0x05, 0xD1, -0x04, 0xD2, 0x80, 0x18, 0x0A, 0x55, 0x01, 0x49, -0x3D, 0x71, 0x01, 0x48, 0xEA, 0x61, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xD4, 0x0D, 0xD5, -0x0F, 0xD7, 0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x9C, -0x06, 0x67, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, -0x14, 0x4C, 0x42, 0xF4, 0x08, 0x4D, 0x80, 0x18, -0x25, 0x42, 0x07, 0xF4, 0x00, 0x6A, 0x06, 0xD2, -0x02, 0xF0, 0x00, 0x4A, 0x07, 0xD2, 0xFF, 0x69, -0x30, 0xF0, 0x20, 0x6A, 0x0D, 0x93, 0x0C, 0xE9, -0x22, 0xF7, 0x00, 0x9A, 0x0F, 0x92, 0x28, 0x34, -0x10, 0x96, 0x4C, 0xE8, 0x68, 0x32, 0x7D, 0x67, -0x49, 0xE3, 0x46, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, -0xB0, 0x67, 0x51, 0xE4, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x6C, 0xEC, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x01, 0x6C, 0x40, 0xEA, 0x0C, 0x94, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x9C, -0x6C, 0xEA, 0x0A, 0x22, 0x0D, 0x95, 0x10, 0x97, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF5, 0x1C, 0x4C, -0xD1, 0x67, 0x04, 0xD0, 0x80, 0x18, 0x25, 0x42, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x01, 0x6A, -0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x0F, 0xD5, 0x11, 0xD7, 0x02, 0xF6, 0x5C, 0x9A, -0x64, 0x9C, 0x04, 0x67, 0x26, 0x67, 0x6C, 0xEA, -0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0xE4, 0xF4, 0x14, 0x4C, 0x62, 0xF4, -0x10, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x0F, 0x92, -0x02, 0x5A, 0x16, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, -0x04, 0x2A, 0x01, 0x6B, 0x6B, 0xEB, 0x08, 0xD3, -0x39, 0x10, 0x0F, 0x95, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF5, 0x00, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x01, 0x6A, 0x4B, 0xEA, 0x08, 0xD2, 0x2E, 0x10, -0x07, 0xF4, 0x00, 0x6A, 0x06, 0xD2, 0xFF, 0x6B, -0x02, 0xF0, 0x00, 0x4A, 0x2C, 0xEB, 0x07, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x20, 0x9A, -0x09, 0xD3, 0x11, 0x92, 0x68, 0x34, 0x0F, 0x93, -0x4C, 0xE9, 0xB1, 0x67, 0x68, 0x32, 0x7D, 0x67, -0x49, 0xE3, 0x46, 0x9A, 0x51, 0xE4, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xEC, 0x80, 0x18, 0xA5, 0x19, -0x08, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0A, 0x22, -0x0F, 0x95, 0x09, 0x96, 0x08, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0xE4, 0xF5, 0x04, 0x4C, 0x04, 0xD1, -0x80, 0x18, 0x25, 0x42, 0x08, 0x92, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x20, 0xF0, 0x44, 0xA4, 0x25, 0x67, 0x18, 0x6E, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0xE0, 0x9A, 0x00, 0x6D, 0x04, 0x67, 0x80, 0x18, -0x05, 0x56, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, -0x0B, 0x22, 0x20, 0xF0, 0xAA, 0xA0, 0x20, 0xF0, -0xCD, 0xA0, 0x04, 0x97, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF6, 0x08, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x04, 0x93, 0xFF, 0x6A, 0xEB, 0x4B, 0x4C, 0xEB, -0x02, 0x5B, 0x50, 0x60, 0x05, 0x93, 0x6C, 0xEA, -0x0F, 0x5A, 0x58, 0x67, 0x01, 0x5A, 0x58, 0x67, -0x4B, 0xEA, 0x4C, 0xE9, 0x01, 0x71, 0x12, 0x60, -0x05, 0x21, 0x02, 0x71, 0x23, 0x60, 0x03, 0x71, -0x2D, 0x60, 0x40, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xFF, 0xF7, 0x1F, 0x69, 0xC0, 0xF3, 0x44, 0x98, -0x43, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x6E, 0xF7, -0x10, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0xFF, 0xF7, 0x1F, 0x69, -0x43, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x04, 0xF3, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x48, 0xF1, 0x04, 0x6C, 0xB1, 0x67, 0x6E, 0xF0, -0x17, 0x6E, 0x1F, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xFF, 0xF7, 0x1F, 0x69, 0xC0, 0xF3, 0x44, 0x98, -0x43, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x6E, 0xF7, -0x10, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0xFF, 0xF7, 0x1F, 0x69, -0x43, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x04, 0xF3, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x48, 0xF1, 0x04, 0x6C, 0xB1, 0x67, 0x24, 0xF0, -0x10, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x10, 0xD6, 0x11, 0xD7, -0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x9C, 0x04, 0x67, -0x25, 0x67, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, -0x14, 0x4C, 0x22, 0xF4, 0x08, 0x4D, 0x80, 0x18, -0x25, 0x42, 0x02, 0x59, 0x0F, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, -0x6C, 0xEA, 0x6D, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x44, 0xF6, 0x08, 0x4C, 0xB1, 0x67, 0x80, 0x18, -0x25, 0x42, 0x65, 0x10, 0x10, 0x92, 0x09, 0x22, -0x12, 0x94, 0x11, 0x97, 0xB1, 0x67, 0x04, 0xD4, -0xC2, 0x67, 0x90, 0x67, 0x80, 0x18, 0xDA, 0x55, -0x5B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0xE0, 0x9A, 0x11, 0x92, 0x00, 0x6C, 0x08, 0xD4, -0xEC, 0xEA, 0xEA, 0xEA, 0x09, 0xD2, 0x1C, 0x60, -0x90, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x80, 0x18, -0x05, 0x56, 0x08, 0xD2, 0x01, 0x4A, 0x0E, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, -0x64, 0x98, 0x6C, 0xEA, 0x40, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x44, 0xF6, 0x1C, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x39, 0x10, 0x09, 0x94, 0x08, 0x95, -0x12, 0x96, 0x80, 0x18, 0x36, 0x51, 0x12, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x9A, -0x03, 0xF0, 0x08, 0x6A, 0x06, 0xD2, 0x05, 0xF1, -0x00, 0x4A, 0x07, 0xD2, 0x9D, 0x67, 0x28, 0x32, -0x49, 0xE4, 0x8C, 0xAA, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0xC0, 0x9A, 0x12, 0x92, 0x01, 0x6D, -0xAB, 0xED, 0x4C, 0xEE, 0x40, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, -0x6C, 0xEA, 0x0D, 0x22, 0x08, 0x94, 0x09, 0x92, -0x12, 0x97, 0x04, 0xD4, 0x30, 0xF0, 0x20, 0x6C, -0x64, 0xF6, 0x18, 0x4C, 0xB1, 0x67, 0x00, 0x6E, -0x05, 0xD2, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0D, 0x6C, -0x40, 0xEA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6D, 0x0A, 0xD4, -0x80, 0x18, 0x1D, 0x51, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x38, 0x9A, 0x30, 0xF0, 0x20, 0x68, -0x49, 0xF4, 0x08, 0x48, 0x00, 0x6A, 0x90, 0x67, -0xF1, 0x67, 0xA2, 0x67, 0xBC, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x90, 0x67, 0xF1, 0x67, -0x01, 0x6A, 0x00, 0x6D, 0xBC, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x00, 0x6A, 0xF1, 0x67, -0x90, 0x67, 0xBC, 0x6E, 0xA2, 0x67, 0x04, 0xD2, -0x80, 0x18, 0x78, 0x56, 0x0A, 0x94, 0x01, 0x6D, -0x80, 0x18, 0x1D, 0x51, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x68, 0x25, 0x67, 0x0C, 0xE9, 0x29, 0x59, -0xCC, 0xE8, 0x03, 0x61, 0x17, 0x58, 0x03, 0x60, -0x08, 0x10, 0x17, 0x58, 0x06, 0x60, 0x01, 0x6A, +0x83, 0xF1, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xC0, 0x9B, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x83, 0xF1, 0x00, 0x4B, 0xC0, 0x9B, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x23, 0xF4, 0x1C, 0x6C, 0x03, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xF0, 0x20, 0x6D, 0xA4, 0xF6, 0x10, 0x4C, -0x82, 0xF4, 0x10, 0x4D, 0xD1, 0x67, 0xF0, 0x67, -0x80, 0x18, 0x25, 0x42, 0x00, 0x6A, 0xE4, 0x17, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, -0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF5, 0x10, 0x9A, 0x00, 0x6C, 0x01, 0x6E, -0xB0, 0x67, 0x80, 0x18, 0x32, 0x1A, 0x00, 0x6C, -0xB0, 0x67, 0xC4, 0x67, 0x80, 0x18, 0x32, 0x1A, -0xB0, 0x67, 0x00, 0x6C, 0x01, 0x6E, 0x80, 0x18, -0x32, 0x1A, 0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x6D, -0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x01, 0x6E, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x52, 0x9C, 0x40, 0xA2, 0x13, 0x2A, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0x67, +0xC3, 0xF0, 0xA4, 0x9A, 0x21, 0xF0, 0x04, 0x6C, +0x80, 0x18, 0xAF, 0x19, 0x40, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF7, 0xA0, 0x9A, 0x03, 0xF2, +0x04, 0x6C, 0x80, 0x18, 0xAF, 0x19, 0x01, 0x72, +0x02, 0x61, 0x03, 0x6A, 0x06, 0x10, 0x02, 0x2A, +0x01, 0x6A, 0x03, 0x10, 0x05, 0x72, 0x02, 0x61, +0x02, 0x6A, 0x41, 0xC0, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x05, 0x67, 0x01, 0x6D, 0x21, 0xF0, +0x00, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0xAF, 0x19, +0xF0, 0x6B, 0x4C, 0xEB, 0x72, 0x33, 0x61, 0xC0, +0x0F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF1, 0xA4, 0x9A, 0x60, 0xC0, 0x03, 0xF2, +0x04, 0x6C, 0x80, 0x18, 0xAF, 0x19, 0x0C, 0x72, +0x02, 0x61, 0x03, 0x6A, 0x09, 0x10, 0x08, 0x72, +0x02, 0x61, 0x01, 0x6A, 0x05, 0x10, 0x04, 0x72, +0x02, 0x61, 0x02, 0x6A, 0x01, 0x10, 0x01, 0x2A, +0x42, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, +0xB0, 0x9A, 0x23, 0xF6, 0x04, 0x6C, 0x80, 0x18, +0xAF, 0x19, 0x4F, 0xEA, 0x43, 0xC0, 0x01, 0x6A, +0x44, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x63, 0xF5, 0x10, 0x69, +0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0x80, 0x18, +0xAF, 0x19, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x68, +0x04, 0x96, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0x91, 0x67, 0xAB, 0xED, 0xFF, 0xF5, 0x1E, 0x4E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, +0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0x40, 0xEA, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x0C, 0xED, 0xC3, 0xF0, 0x04, 0x4A, +0x04, 0xD5, 0xA0, 0x9A, 0x21, 0xF0, 0x04, 0x69, +0x91, 0x67, 0x80, 0x18, 0xAF, 0x19, 0x04, 0x93, +0x48, 0x23, 0x4C, 0xE8, 0x03, 0x70, 0x08, 0x60, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF4, 0x10, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x00, 0x6A, 0x7B, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x21, 0xF0, 0x1C, 0x6C, 0x04, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, +0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF0, 0x04, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF7, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, +0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, +0x0C, 0x69, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x91, 0x67, 0x83, 0xF1, 0xAC, 0x9B, 0x00, 0x6E, +0x3C, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x21, 0xF0, 0x1C, 0x6C, 0x04, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF7, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x04, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, +0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x42, 0xF7, 0x00, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF1, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x83, 0xF1, 0xAC, 0x9B, 0x91, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0x01, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0xCC, 0xEA, 0x08, 0xD2, 0x0E, 0xD4, +0x0F, 0xD5, 0x11, 0xD7, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x40, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, +0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6D, 0xE4, 0xF4, 0x1C, 0x4C, 0xC2, 0xF3, +0x00, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x0F, 0x93, +0x02, 0x5B, 0x03, 0x60, 0x08, 0x94, 0x54, 0x5C, +0x12, 0x61, 0x0E, 0x94, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x40, 0x9A, 0x64, 0x9C, 0xFF, 0x69, +0x6C, 0xEA, 0x80, 0xF0, 0x15, 0x22, 0x0F, 0x95, +0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF5, 0x08, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x8D, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x83, 0xF1, +0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF4, 0x1C, 0x69, 0x91, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, +0xB4, 0x9A, 0xC0, 0xF3, 0x64, 0x98, 0x08, 0x96, +0x91, 0x67, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF1, 0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0xE5, 0xF5, 0x08, 0x6C, 0xFF, 0x6D, 0x80, 0x18, +0xAF, 0x19, 0x00, 0xF6, 0x40, 0x31, 0x00, 0xF6, +0x23, 0x31, 0x40, 0x6A, 0x2C, 0xEA, 0x03, 0x22, +0x80, 0x6A, 0x4B, 0xEA, 0x4D, 0xE9, 0x11, 0x94, +0x0B, 0x74, 0x10, 0x61, 0x0F, 0x93, 0xA3, 0xF0, +0x00, 0x6A, 0x06, 0xD2, 0x05, 0xF1, 0x00, 0x4A, +0x07, 0xD2, 0x9D, 0x67, 0x68, 0x32, 0x49, 0xE4, +0x8C, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, +0xB8, 0x9A, 0x13, 0x10, 0x11, 0x92, 0x00, 0x68, +0x0C, 0x72, 0x13, 0x61, 0x0F, 0x93, 0xE3, 0xF0, +0x08, 0x6A, 0x04, 0xD2, 0x05, 0xF1, 0x00, 0x4A, +0x05, 0xD2, 0x9D, 0x67, 0x68, 0x32, 0x49, 0xE4, +0x88, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, +0xBC, 0x9A, 0x80, 0x18, 0xAF, 0x19, 0xFF, 0x68, +0x4C, 0xE8, 0x0E, 0x94, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x40, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, +0x08, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF5, +0x00, 0x4C, 0xB1, 0x67, 0xD0, 0x67, 0x80, 0x18, +0x25, 0x42, 0x21, 0xE0, 0x00, 0x50, 0x00, 0x69, +0x02, 0x61, 0xFF, 0x69, 0x0C, 0xE9, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x83, 0xF1, 0xB0, 0x9B, 0x63, 0xF4, +0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x0E, 0x94, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, +0x64, 0x9C, 0x6C, 0xEA, 0x09, 0x22, 0x0F, 0x95, +0x08, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF5, +0x10, 0x4C, 0xF1, 0x67, 0x80, 0x18, 0x25, 0x42, +0x51, 0x67, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x00, 0xF6, 0xA0, 0x35, +0x00, 0xF6, 0xC0, 0x36, 0x00, 0xF6, 0xE0, 0x37, +0x00, 0xF6, 0xA3, 0x35, 0x00, 0xF6, 0xC3, 0x36, +0x00, 0xF6, 0xE3, 0x37, 0x05, 0xD5, 0x06, 0xD6, +0x07, 0xD7, 0x5D, 0x67, 0x40, 0xF0, 0x48, 0x82, +0x7D, 0x67, 0x24, 0x67, 0x08, 0xD2, 0x40, 0xF0, +0x6C, 0xA3, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x04, 0xD3, 0x64, 0x9C, 0x6C, 0xEA, +0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6D, 0xE4, 0xF4, 0x1C, 0x4C, 0xE2, 0xF3, +0x00, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x20, 0xF0, +0x4F, 0xA1, 0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x40, 0x9A, 0x64, 0x99, 0x6C, 0xEA, +0x5F, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF5, +0x10, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x58, 0x10, +0x04, 0x92, 0x40, 0x5A, 0x10, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x60, 0x9A, 0x44, 0x99, +0x4C, 0xEB, 0x00, 0x6A, 0x4E, 0x23, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF5, 0x0C, 0x4C, 0x80, 0x18, +0x25, 0x42, 0x00, 0x6A, 0x46, 0x10, 0x83, 0xF4, +0x10, 0x68, 0x90, 0x67, 0x10, 0xF0, 0x00, 0x6D, +0x80, 0x18, 0xAF, 0x19, 0x09, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x90, 0x67, +0x10, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x06, 0x90, 0x05, 0x93, 0x7F, 0x6A, 0x4C, 0xE8, +0x4C, 0xEB, 0x00, 0x30, 0x6D, 0xE8, 0x07, 0x93, +0x04, 0x6C, 0x8B, 0xEC, 0x4C, 0xEB, 0x60, 0x33, +0x60, 0x33, 0x6D, 0xE8, 0x08, 0x93, 0x01, 0x6D, +0xAB, 0xED, 0x6C, 0xEA, 0x00, 0xF6, 0x40, 0x32, +0x4D, 0xE8, 0x04, 0x92, 0xFF, 0xF7, 0x1F, 0x6B, +0xD0, 0x67, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x07, 0xF2, 0x00, 0x4C, +0x6C, 0xEC, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x40, 0x9A, 0x64, 0x99, 0x6C, 0xEA, +0x0B, 0x22, 0x04, 0x95, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF5, 0x00, 0x4C, 0xC5, 0x67, 0x07, 0xF2, +0x00, 0x4E, 0xF0, 0x67, 0x80, 0x18, 0x25, 0x42, +0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x12, 0xD6, 0x13, 0xD7, 0x22, 0xF6, 0x40, 0x9A, +0x64, 0x9C, 0xFF, 0x69, 0x04, 0x67, 0x6C, 0xEA, +0xAC, 0xE9, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, 0x1C, 0x4C, +0x02, 0xF4, 0x04, 0x4D, 0x80, 0x18, 0x25, 0x42, +0x20, 0xF0, 0x4F, 0xA0, 0x0E, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, 0x64, 0x98, +0x6C, 0xEA, 0x7E, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x44, 0xF5, 0x10, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x77, 0x10, 0x12, 0x92, 0x02, 0x5A, 0x11, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x60, 0x9A, +0x44, 0x98, 0x4C, 0xEB, 0x00, 0x6A, 0x6D, 0x23, +0x12, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF5, +0x08, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x00, 0x6A, +0x64, 0x10, 0x83, 0xF4, 0x10, 0x6C, 0x10, 0xF0, +0x00, 0x6D, 0x80, 0x18, 0xAF, 0x19, 0x0A, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x83, 0xF4, 0x10, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x13, 0x93, 0x0B, 0x73, +0x27, 0x61, 0x12, 0x93, 0xA3, 0xF0, 0x00, 0x6A, +0x08, 0xD2, 0x05, 0xF1, 0x00, 0x4A, 0x09, 0xD2, +0x68, 0x32, 0x06, 0x03, 0x4D, 0xE3, 0x0A, 0xD3, +0x84, 0xAB, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF1, +0xB8, 0x9B, 0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, 0x64, 0x98, +0x6C, 0xEA, 0x32, 0x22, 0x0A, 0x92, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF5, 0x00, 0x4C, 0xE2, 0x9A, +0x12, 0x95, 0x04, 0xD1, 0x0B, 0x6E, 0x26, 0x10, +0x12, 0x93, 0xE3, 0xF0, 0x08, 0x6A, 0x06, 0xD2, +0x05, 0xF1, 0x00, 0x4A, 0x07, 0xD2, 0x68, 0x32, +0x06, 0x03, 0x4D, 0xE3, 0x0B, 0xD3, 0x80, 0xAB, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF1, 0xBC, 0x9B, +0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x40, 0x9A, 0x64, 0x98, 0x6C, 0xEA, +0x0B, 0x22, 0x0B, 0x92, 0x12, 0x95, 0x13, 0x96, +0x30, 0xF0, 0x20, 0x6C, 0xE0, 0x9A, 0xA4, 0xF5, +0x00, 0x4C, 0x04, 0xD1, 0x80, 0x18, 0x25, 0x42, +0x01, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x0C, 0xD4, 0x25, 0x67, +0xA0, 0xA5, 0x00, 0x6E, 0x0B, 0x6F, 0x80, 0x18, +0xAF, 0x55, 0x0C, 0x94, 0xA1, 0xA1, 0x01, 0x6E, +0x0B, 0x6F, 0x80, 0x18, 0xAF, 0x55, 0x0C, 0x94, +0xA2, 0xA1, 0x00, 0x6E, 0x0C, 0x6F, 0x80, 0x18, +0xAF, 0x55, 0x0C, 0x94, 0xA3, 0xA1, 0x01, 0x6E, +0x0C, 0x6F, 0x80, 0x18, 0xAF, 0x55, 0xFD, 0x6A, +0x00, 0x6B, 0x11, 0x67, 0x06, 0xD2, 0x07, 0xD3, +0x07, 0x93, 0x03, 0x6A, 0x6C, 0xEA, 0x03, 0x72, +0x0A, 0x61, 0x44, 0x80, 0xA1, 0x80, 0xC2, 0x80, +0xE3, 0x80, 0x0C, 0x94, 0x04, 0xD2, 0x06, 0x92, +0x05, 0xD2, 0x80, 0x18, 0x61, 0x55, 0x06, 0x92, +0x07, 0x93, 0x01, 0x48, 0x01, 0x4A, 0x06, 0xD2, +0x01, 0x4B, 0x07, 0xD3, 0x06, 0x93, 0xFF, 0x6A, +0x4C, 0xEB, 0x07, 0x92, 0x06, 0xD3, 0x1C, 0x72, +0xE3, 0x61, 0x11, 0x67, 0x29, 0x69, 0x43, 0x41, +0x03, 0x6B, 0x6C, 0xEA, 0x03, 0x72, 0x0D, 0x61, +0x20, 0xF0, 0xAD, 0x80, 0x20, 0xF0, 0xCE, 0x80, +0x20, 0xF0, 0xEF, 0x80, 0x20, 0xF0, 0x50, 0x80, +0x0C, 0x94, 0x05, 0xD1, 0x04, 0xD2, 0x80, 0x18, +0x61, 0x55, 0x01, 0x49, 0x3D, 0x71, 0x01, 0x48, +0xEA, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x0C, 0xD4, 0x0D, 0xD5, 0x0F, 0xD7, 0x22, 0xF6, +0x40, 0x9A, 0x64, 0x9C, 0x06, 0x67, 0x6C, 0xEA, +0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6D, 0xE4, 0xF4, 0x1C, 0x4C, 0x42, 0xF4, +0x08, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x07, 0xF4, +0x00, 0x6A, 0x06, 0xD2, 0x02, 0xF0, 0x00, 0x4A, +0x07, 0xD2, 0xFF, 0x69, 0x30, 0xF0, 0x20, 0x6A, +0x0D, 0x93, 0x0C, 0xE9, 0x22, 0xF7, 0x04, 0x9A, +0x0F, 0x92, 0x28, 0x34, 0x10, 0x96, 0x4C, 0xE8, +0x68, 0x32, 0x7D, 0x67, 0x49, 0xE3, 0x46, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0xB0, 0x67, 0x51, 0xE4, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x6C, 0xEC, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, +0x0C, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, 0x0A, 0x22, +0x0D, 0x95, 0x10, 0x97, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF5, 0x04, 0x4C, 0xD1, 0x67, 0x04, 0xD0, +0x80, 0x18, 0x25, 0x42, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x01, 0x6A, 0x06, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xD5, 0x11, 0xD7, +0x22, 0xF6, 0x40, 0x9A, 0x64, 0x9C, 0x04, 0x67, +0x26, 0x67, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, +0x1C, 0x4C, 0x62, 0xF4, 0x10, 0x4D, 0x80, 0x18, +0x25, 0x42, 0x0F, 0x92, 0x02, 0x5A, 0x16, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, +0x64, 0x98, 0x6C, 0xEA, 0x04, 0x2A, 0x01, 0x6B, +0x6B, 0xEB, 0x08, 0xD3, 0x39, 0x10, 0x0F, 0x95, +0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF5, 0x08, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x01, 0x6A, 0x4B, 0xEA, +0x08, 0xD2, 0x2E, 0x10, 0x07, 0xF4, 0x00, 0x6A, +0x06, 0xD2, 0xFF, 0x6B, 0x02, 0xF0, 0x00, 0x4A, +0x2C, 0xEB, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x24, 0x9A, 0x09, 0xD3, 0x11, 0x92, +0x68, 0x34, 0x0F, 0x93, 0x4C, 0xE9, 0xB1, 0x67, +0x68, 0x32, 0x7D, 0x67, 0x49, 0xE3, 0x46, 0x9A, +0x51, 0xE4, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, +0x80, 0x18, 0xAF, 0x19, 0x08, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, 0x64, 0x98, +0x6C, 0xEA, 0x0A, 0x22, 0x0F, 0x95, 0x09, 0x96, +0x08, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF5, +0x0C, 0x4C, 0x04, 0xD1, 0x80, 0x18, 0x25, 0x42, +0x08, 0x92, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x20, 0xF0, 0x44, 0xA4, +0x25, 0x67, 0x18, 0x6E, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0xE4, 0x9A, 0x00, 0x6D, +0x04, 0x67, 0x80, 0x18, 0x5C, 0x56, 0x05, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, +0x64, 0x98, 0x6C, 0xEA, 0x0B, 0x22, 0x20, 0xF0, +0xAA, 0xA0, 0x20, 0xF0, 0xCD, 0xA0, 0x04, 0x97, +0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF6, 0x10, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x04, 0x93, 0xFF, 0x6A, +0xEB, 0x4B, 0x4C, 0xEB, 0x02, 0x5B, 0x50, 0x60, +0x05, 0x93, 0x6C, 0xEA, 0x0F, 0x5A, 0x58, 0x67, +0x01, 0x5A, 0x58, 0x67, 0x4B, 0xEA, 0x4C, 0xE9, +0x01, 0x71, 0x12, 0x60, 0x05, 0x21, 0x02, 0x71, +0x23, 0x60, 0x03, 0x71, 0x2D, 0x60, 0x40, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0xF7, 0x1F, 0x69, +0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF0, 0x00, 0x6C, +0xB1, 0x67, 0x6E, 0xF7, 0x10, 0x6E, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0xFF, 0xF7, 0x1F, 0x69, 0x43, 0xF0, 0x00, 0x6C, +0xB1, 0x67, 0x04, 0xF3, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF1, 0x04, 0x6C, +0xB1, 0x67, 0x6E, 0xF0, 0x17, 0x6E, 0x1F, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0xF7, 0x1F, 0x69, +0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF0, 0x00, 0x6C, +0xB1, 0x67, 0x6E, 0xF7, 0x10, 0x6E, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0xFF, 0xF7, 0x1F, 0x69, 0x43, 0xF0, 0x00, 0x6C, +0xB1, 0x67, 0x04, 0xF3, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF1, 0x04, 0x6C, +0xB1, 0x67, 0x24, 0xF0, 0x10, 0x6E, 0x40, 0xEA, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x10, 0xD6, 0x11, 0xD7, 0x22, 0xF6, 0x40, 0x9A, +0x64, 0x9C, 0x04, 0x67, 0x25, 0x67, 0x6C, 0xEA, +0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6D, 0xE4, 0xF4, 0x1C, 0x4C, 0x22, 0xF4, +0x08, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x02, 0x59, +0x0F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x6D, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF6, 0x10, 0x4C, +0xB1, 0x67, 0x80, 0x18, 0x25, 0x42, 0x65, 0x10, +0x10, 0x92, 0x09, 0x22, 0x12, 0x94, 0x11, 0x97, +0xB1, 0x67, 0x04, 0xD4, 0xC2, 0x67, 0x90, 0x67, +0x80, 0x18, 0x31, 0x56, 0x5B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0xE4, 0x9A, 0x11, 0x92, +0x00, 0x6C, 0x08, 0xD4, 0xEC, 0xEA, 0xEA, 0xEA, +0x09, 0xD2, 0x1C, 0x60, 0x90, 0x67, 0xB1, 0x67, +0x00, 0x6E, 0x80, 0x18, 0x5C, 0x56, 0x08, 0xD2, +0x01, 0x4A, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x40, 0x9A, 0x64, 0x98, 0x6C, 0xEA, +0x40, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF6, +0x04, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x39, 0x10, +0x09, 0x94, 0x08, 0x95, 0x12, 0x96, 0x80, 0x18, +0x8D, 0x51, 0x12, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x9A, 0x03, 0xF0, 0x08, 0x6A, +0x06, 0xD2, 0x05, 0xF1, 0x00, 0x4A, 0x07, 0xD2, +0x9D, 0x67, 0x28, 0x32, 0x49, 0xE4, 0x8C, 0xAA, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0xC4, 0x9A, +0x12, 0x92, 0x01, 0x6D, 0xAB, 0xED, 0x4C, 0xEE, +0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0D, 0x22, +0x08, 0x94, 0x09, 0x92, 0x12, 0x97, 0x04, 0xD4, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF6, 0x00, 0x4C, +0xB1, 0x67, 0x00, 0x6E, 0x05, 0xD2, 0x80, 0x18, +0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0D, 0x6C, 0x40, 0xEA, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x00, 0x6D, 0x0A, 0xD4, 0x80, 0x18, 0x74, 0x51, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x2C, 0x9A, +0x30, 0xF0, 0x20, 0x68, 0x69, 0xF4, 0x08, 0x48, +0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, +0xBC, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x90, 0x67, 0xF1, 0x67, 0x01, 0x6A, 0x00, 0x6D, +0xBC, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, +0xBC, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, +0xFF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x01, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, +0xFF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0xF1, 0x67, 0x90, 0x67, 0xFF, 0x6E, 0x00, 0x6A, +0x01, 0x6D, 0x04, 0xD2, 0x80, 0x18, 0xCF, 0x56, +0x0A, 0x94, 0x01, 0x6D, 0x80, 0x18, 0x74, 0x51, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x25, 0x67, +0x0C, 0xE9, 0x29, 0x59, 0xCC, 0xE8, 0x03, 0x61, +0x17, 0x58, 0x03, 0x60, 0x08, 0x10, 0x17, 0x58, +0x06, 0x60, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF4, +0x1C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, +0xA4, 0xF6, 0x18, 0x4C, 0x82, 0xF4, 0x10, 0x4D, +0xD1, 0x67, 0xF0, 0x67, 0x80, 0x18, 0x25, 0x42, +0x00, 0x6A, 0xE4, 0x17, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x6D, 0x83, 0xF4, +0x10, 0x6C, 0x01, 0x4D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x10, 0x9A, 0x00, 0x6C, 0x01, 0x6E, 0xB0, 0x67, 0x80, 0x18, -0x32, 0x1A, 0x00, 0x6C, 0xC4, 0x67, 0xB0, 0x67, -0x80, 0x18, 0x32, 0x1A, 0x00, 0x6C, 0xB0, 0x67, -0x01, 0x6E, 0x80, 0x18, 0x32, 0x1A, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x09, 0xD5, 0x02, 0xF6, -0x5C, 0x9A, 0x64, 0x9C, 0x04, 0x67, 0x6C, 0xEA, -0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0xE4, 0xF4, 0x14, 0x4C, 0x22, 0xF3, -0x00, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x90, 0x67, -0x80, 0x18, 0x1C, 0x53, 0x52, 0x98, 0x40, 0xA2, -0x04, 0x22, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, -0xF0, 0x52, 0x20, 0xF0, 0x58, 0xA0, 0x04, 0x22, -0x90, 0x67, 0xE0, 0xF3, 0x1F, 0x6D, 0x02, 0x10, -0x90, 0x67, 0x00, 0x6D, 0x30, 0xF0, 0x20, 0x69, -0x80, 0x18, 0xFE, 0x52, 0xC0, 0xF3, 0x44, 0x99, -0x03, 0x6D, 0xC5, 0x67, 0x03, 0xF0, 0x0C, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, -0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0x03, 0xF0, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x3C, 0x1A, 0x00, 0x6C, 0xB0, 0x67, 0xC4, 0x67, +0x80, 0x18, 0x3C, 0x1A, 0xB0, 0x67, 0x00, 0x6C, +0x01, 0x6E, 0x80, 0x18, 0x3C, 0x1A, 0xC0, 0xF3, +0x44, 0x99, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, +0x01, 0x4D, 0x01, 0x6E, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x52, 0x9C, +0x40, 0xA2, 0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF5, 0x10, 0x9A, 0x00, 0x6C, 0x01, 0x6E, +0xB0, 0x67, 0x80, 0x18, 0x3C, 0x1A, 0x00, 0x6C, +0xC4, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x3C, 0x1A, +0x00, 0x6C, 0xB0, 0x67, 0x01, 0x6E, 0x80, 0x18, +0x3C, 0x1A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x09, 0xD5, 0x22, 0xF6, 0x40, 0x9A, 0x64, 0x9C, +0x04, 0x67, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, +0x1C, 0x4C, 0x22, 0xF3, 0x00, 0x4D, 0x80, 0x18, +0x25, 0x42, 0x90, 0x67, 0x80, 0x18, 0x73, 0x53, +0x52, 0x98, 0x40, 0xA2, 0x04, 0x22, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0x47, 0x53, 0x20, 0xF0, +0x58, 0xA0, 0x04, 0x22, 0x90, 0x67, 0xE0, 0xF3, +0x1F, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x00, 0x6D, +0x30, 0xF0, 0x20, 0x69, 0x80, 0x18, 0x55, 0x53, 0xC0, 0xF3, 0x44, 0x99, 0x03, 0x6D, 0xC5, 0x67, -0x08, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF6, 0x1C, 0x4B, 0xC0, 0xF3, -0x44, 0x99, 0xA0, 0x9B, 0x08, 0xF1, 0x0C, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x09, 0x92, 0x14, 0x2A, -0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF4, 0x1C, 0x6C, -0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF6, 0x1C, 0x4B, 0x44, 0x98, -0x60, 0x9B, 0x6C, 0xEA, 0x2F, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xE4, 0xF6, 0x10, 0x4C, 0x16, 0x10, -0x09, 0x92, 0x01, 0x72, 0x16, 0x61, 0xC0, 0xF3, -0x44, 0x99, 0x03, 0x6D, 0x23, 0xF4, 0x1C, 0x6C, -0xC5, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0x1C, 0x4B, 0x44, 0x98, 0x60, 0x9B, -0x6C, 0xEA, 0x18, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF7, 0x1C, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x1C, 0x4A, 0x40, 0x9A, 0x64, 0x98, 0x4C, 0xEB, -0x00, 0x6A, 0x0C, 0x23, 0x30, 0xF0, 0x20, 0x6C, -0x44, 0xF7, 0x08, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x00, 0x6A, 0x04, 0x10, 0x90, 0x67, 0x80, 0x18, -0x09, 0x57, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0xAC, 0xEA, 0x06, 0xD2, 0x10, 0xD6, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, -0x64, 0x9C, 0x04, 0x67, 0x6C, 0xEA, 0x0A, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, -0xE4, 0xF4, 0x14, 0x4C, 0x42, 0xF3, 0x04, 0x4D, -0x80, 0x18, 0x25, 0x42, 0x20, 0xF0, 0x4F, 0xA0, -0x10, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x7C, 0x9A, 0x44, 0x98, 0x4C, 0xEB, 0x01, 0x6A, -0x40, 0xF2, 0x0D, 0x23, 0x30, 0xF0, 0x20, 0x6C, -0x44, 0xF7, 0x18, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x43, 0x12, 0x10, 0x93, 0x07, 0x5B, 0x0B, 0x60, -0x01, 0x73, 0x03, 0x61, 0x06, 0x92, 0x03, 0x5A, -0x05, 0x10, 0x10, 0x93, 0x02, 0x73, 0x10, 0x61, -0x06, 0x92, 0x05, 0x5A, 0x0D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, -0x6C, 0xEA, 0x20, 0xF2, 0x0F, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x64, 0xF7, 0x18, 0x4C, 0x0E, 0x12, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0xE0, 0x9A, -0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, -0x05, 0x56, 0x06, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, -0x09, 0xD2, 0x6C, 0xEA, 0x07, 0xD2, 0x10, 0x92, -0x07, 0x5A, 0x60, 0xF1, 0x0E, 0x60, 0x48, 0x33, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, 0x04, 0x4A, -0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x10, 0x93, -0x05, 0x73, 0x25, 0x61, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x44, 0x99, 0x01, 0xF0, 0x10, 0x6C, -0xE7, 0xF7, 0x10, 0x6D, 0xA0, 0xF2, 0x0B, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, -0x10, 0x6C, 0xDF, 0xF7, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, -0x14, 0x6C, 0x00, 0xF7, 0x00, 0x6D, 0x04, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0xA3, 0xF1, -0xAC, 0x9B, 0x04, 0x6E, 0x4E, 0x10, 0x10, 0x92, -0x06, 0x72, 0x25, 0x61, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x44, 0x99, 0x01, 0xF0, 0x10, 0x6C, -0xE7, 0xF7, 0x10, 0x6D, 0xA0, 0xF2, 0x0B, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, -0x10, 0x6C, 0xDF, 0xF7, 0x00, 0x6D, 0x02, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, -0x14, 0x6C, 0x00, 0xF7, 0x00, 0x6D, 0x06, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0xA3, 0xF1, -0xAC, 0x9B, 0x05, 0x6E, 0x26, 0x10, 0x10, 0x93, -0x25, 0x2B, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, -0x44, 0x99, 0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, -0x10, 0x6D, 0x80, 0xF1, 0x1B, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, -0xDF, 0xF7, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, -0x00, 0xF7, 0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0xA3, 0xF1, 0xAC, 0x9B, 0xA1, 0xF1, 0x14, 0x6C, -0x06, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, -0x0F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x93, -0x06, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, -0x4D, 0xEB, 0x07, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0xA3, 0xF2, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x99, 0xE3, 0xF2, 0x08, 0x6C, +0x03, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF6, 0x00, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF0, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, -0xE3, 0xF2, 0x0C, 0x6C, 0x0F, 0x6D, 0x06, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x81, 0xF0, -0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x53, 0x98, 0x18, 0x6B, 0x40, 0xA2, -0x08, 0xD3, 0xC0, 0xF0, 0x01, 0x2A, 0x90, 0x67, -0x05, 0x6D, 0x80, 0x18, 0xF8, 0x51, 0x90, 0x67, -0x06, 0x6D, 0x80, 0x18, 0x07, 0x52, 0x18, 0x6A, -0xB6, 0x10, 0x06, 0x93, 0x01, 0x73, 0x09, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF2, 0x00, 0x6C, 0x10, 0x6D, 0x01, 0x6E, -0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x03, 0xF2, 0x00, 0x6C, 0x10, 0x6D, -0x00, 0x6E, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, -0x0F, 0x6D, 0x05, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, 0xC0, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x06, 0x92, 0x06, 0x93, -0xA1, 0xF1, 0x10, 0x6C, 0x50, 0x36, 0xC0, 0xF3, -0x44, 0x99, 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6D, -0x40, 0xEA, 0x07, 0x93, 0x04, 0xF0, 0x00, 0x6A, +0x03, 0x6D, 0xC5, 0x67, 0x08, 0xF1, 0x0C, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, +0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, +0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x09, 0x92, 0x14, 0x2A, 0xC0, 0xF3, 0x44, 0x99, +0x23, 0xF4, 0x1C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, +0x00, 0x4B, 0x44, 0x98, 0x60, 0x9B, 0x6C, 0xEA, +0x2F, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF6, +0x18, 0x4C, 0x16, 0x10, 0x09, 0x92, 0x01, 0x72, +0x16, 0x61, 0xC0, 0xF3, 0x44, 0x99, 0x03, 0x6D, +0x23, 0xF4, 0x1C, 0x6C, 0xC5, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x00, 0x4B, +0x44, 0x98, 0x60, 0x9B, 0x6C, 0xEA, 0x18, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF7, 0x04, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x11, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x00, 0x4A, 0x40, 0x9A, +0x64, 0x98, 0x4C, 0xEB, 0x00, 0x6A, 0x0C, 0x23, +0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF7, 0x10, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x00, 0x6A, 0x04, 0x10, +0x90, 0x67, 0x80, 0x18, 0x6C, 0x57, 0x01, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, +0x06, 0xD2, 0x10, 0xD6, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x40, 0x9A, 0x64, 0x9C, 0x04, 0x67, +0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, 0x1C, 0x4C, +0x42, 0xF3, 0x04, 0x4D, 0x80, 0x18, 0x25, 0x42, +0x20, 0xF0, 0x4F, 0xA0, 0x10, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x60, 0x9A, 0x44, 0x98, +0x4C, 0xEB, 0x01, 0x6A, 0x40, 0xF2, 0x0D, 0x23, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, 0x00, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x43, 0x12, 0x10, 0x93, +0x07, 0x5B, 0x0B, 0x60, 0x01, 0x73, 0x03, 0x61, +0x06, 0x92, 0x03, 0x5A, 0x05, 0x10, 0x10, 0x93, +0x02, 0x73, 0x10, 0x61, 0x06, 0x92, 0x05, 0x5A, +0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x20, 0xF2, +0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF7, +0x00, 0x4C, 0x0E, 0x12, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0xE4, 0x9A, 0x90, 0x67, 0x00, 0x6D, +0x18, 0x6E, 0x80, 0x18, 0x5C, 0x56, 0x06, 0xF0, +0x01, 0x6B, 0x6B, 0xEB, 0x09, 0xD2, 0x6C, 0xEA, +0x07, 0xD2, 0x10, 0x92, 0x07, 0x5A, 0x60, 0xF1, +0x0E, 0x60, 0x48, 0x33, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF3, 0x04, 0x4A, 0x69, 0xE2, 0x40, 0x9A, +0x00, 0xEA, 0x10, 0x93, 0x05, 0x73, 0x25, 0x61, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, +0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, +0xA0, 0xF2, 0x0B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, 0xDF, 0xF7, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0x00, 0xF7, +0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, +0x14, 0x6C, 0xA3, 0xF1, 0xA0, 0x9B, 0x04, 0x6E, +0x4E, 0x10, 0x10, 0x92, 0x06, 0x72, 0x25, 0x61, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, +0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, +0xA0, 0xF2, 0x0B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, 0xDF, 0xF7, +0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0x00, 0xF7, +0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, +0x14, 0x6C, 0xA3, 0xF1, 0xA0, 0x9B, 0x05, 0x6E, +0x26, 0x10, 0x10, 0x93, 0x25, 0x2B, 0x30, 0xF0, +0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0xF0, +0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, 0x80, 0xF1, +0x1B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0xA1, 0xF1, 0x10, 0x6C, 0xDF, 0xF7, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0xA1, 0xF1, 0x14, 0x6C, 0x00, 0xF7, 0x00, 0x6D, +0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF1, 0xA0, 0x9B, +0xA1, 0xF1, 0x14, 0x6C, 0x06, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, +0xA1, 0xF1, 0x10, 0x6C, 0x0F, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x07, 0x93, 0x06, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, 0x07, 0xD3, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0xA4, 0x9B, -0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0xA0, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0xB8, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF2, 0x1C, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0xE3, 0xF2, 0x08, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x02, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0xE3, 0xF2, 0x08, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xE3, 0xF2, 0x0C, 0x6C, -0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x0F, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x81, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x53, 0x98, -0x10, 0x6B, 0x40, 0xA2, 0x08, 0xD3, 0x50, 0x2A, -0x90, 0x67, 0x04, 0x6D, 0x80, 0x18, 0xF8, 0x51, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x07, 0x52, -0x10, 0x6A, 0x45, 0x10, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, -0x0F, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, 0xC0, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x06, 0x93, 0xC0, 0xF3, -0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, 0x70, 0x36, -0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6D, 0x40, 0xEA, -0x07, 0x93, 0x02, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, -0x1C, 0x6C, 0x4D, 0xEB, 0x07, 0xD3, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0xA4, 0x9B, 0xC0, 0xF3, -0x44, 0x99, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x81, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, -0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x08, 0x6A, -0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0x98, -0x02, 0xF6, 0x5C, 0x9A, 0x6C, 0xEA, 0x00, 0x6B, -0x08, 0xD3, 0x0A, 0x22, 0x10, 0x95, 0x06, 0x96, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF7, 0x00, 0x4C, -0x80, 0x18, 0x25, 0x42, 0x00, 0x6A, 0x08, 0xD2, -0x30, 0xF0, 0x20, 0x69, 0x49, 0xF4, 0x08, 0x49, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x1D, 0x51, -0x01, 0x6B, 0x91, 0x67, 0x00, 0x6D, 0xEE, 0x6E, -0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x12, 0x6A, 0x91, 0x67, 0x00, 0x6D, 0x33, 0x6E, -0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, -0x08, 0x93, 0xE0, 0x9A, 0x91, 0x67, 0x00, 0x6D, -0x3F, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x00, 0x6B, 0xA3, 0x67, 0x91, 0x67, 0xEE, 0x6E, -0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x01, 0x6A, 0x91, 0x67, 0xA2, 0x67, 0xEE, 0x6E, -0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x12, 0x6B, 0x91, 0x67, 0x01, 0x6D, 0x33, 0x6E, -0x1F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x00, 0x4B, -0xE0, 0x9B, 0x08, 0x92, 0x91, 0x67, 0x01, 0x6D, -0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x00, 0x6A, 0x91, 0x67, 0x01, 0x6D, 0xEE, 0x6E, -0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, -0x07, 0x93, 0xE0, 0x9A, 0x91, 0x67, 0x00, 0x6D, -0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, -0x07, 0x93, 0xE0, 0x9A, 0x91, 0x67, 0x01, 0x6D, -0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x56, -0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x1D, 0x51, -0x09, 0x92, 0x01, 0x4A, 0x10, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, -0x6C, 0xEA, 0x20, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0xC4, 0xF7, 0x08, 0x4C, 0x10, 0x95, 0x06, 0x96, -0x80, 0x18, 0x25, 0x42, 0x17, 0x10, 0x90, 0x67, -0x80, 0x18, 0x46, 0x54, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, -0x08, 0x22, 0x10, 0x95, 0x06, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0x05, 0xF0, 0x18, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x90, 0x67, 0x80, 0x18, 0x09, 0x57, -0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x08, 0xD4, 0x09, 0xD5, 0x52, 0x9C, 0x60, 0xA2, -0x45, 0x67, 0x55, 0x2B, 0x02, 0x75, 0x29, 0x61, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0xC1, 0xF4, 0x00, 0x69, 0x91, 0x67, 0xE0, 0xF7, -0x1F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x10, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x49, +0x18, 0x6B, 0x40, 0xA2, 0x08, 0xD3, 0xC0, 0xF0, +0x01, 0x2A, 0x90, 0x67, 0x05, 0x6D, 0x80, 0x18, +0x4F, 0x52, 0x90, 0x67, 0x06, 0x6D, 0x80, 0x18, +0x5E, 0x52, 0x18, 0x6A, 0xB6, 0x10, 0x06, 0x93, +0x01, 0x73, 0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, 0x00, 0x6C, +0x10, 0x6D, 0x01, 0x6E, 0x08, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, +0x00, 0x6C, 0x10, 0x6D, 0x00, 0x6E, 0x30, 0xF0, +0x20, 0x69, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0xA1, 0xF1, 0x10, 0x6C, 0x0F, 0x6D, 0x05, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, +0x10, 0x6C, 0xC0, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x06, 0x92, 0x06, 0x93, 0xA1, 0xF1, 0x10, 0x6C, +0x50, 0x36, 0xC0, 0xF3, 0x44, 0x99, 0x6D, 0xEE, +0x1F, 0xF7, 0x00, 0x6D, 0x40, 0xEA, 0x07, 0x93, +0x04, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, +0x4D, 0xEB, 0x07, 0xD3, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF0, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF6, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0xA3, 0xF2, 0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0xA4, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0xE3, 0xF2, 0x08, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0xE3, 0xF2, 0x0C, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x81, 0xF0, +0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0x53, 0x98, 0x10, 0x6B, 0x40, 0xA2, +0x08, 0xD3, 0x50, 0x2A, 0x90, 0x67, 0x04, 0x6D, +0x80, 0x18, 0x4F, 0x52, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x5E, 0x52, 0x10, 0x6A, 0x45, 0x10, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, +0xA1, 0xF1, 0x10, 0x6C, 0x0F, 0x6D, 0x0A, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, +0x10, 0x6C, 0xC0, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x06, 0x93, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, +0x10, 0x6C, 0x70, 0x36, 0x6D, 0xEE, 0x1F, 0xF7, +0x00, 0x6D, 0x40, 0xEA, 0x07, 0x93, 0x02, 0xF0, +0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, +0x07, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x81, 0xF0, +0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x06, 0x6E, +0x40, 0xEA, 0x08, 0x6A, 0x12, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x98, 0x22, 0xF6, 0x40, 0x9A, +0x6C, 0xEA, 0x00, 0x6B, 0x08, 0xD3, 0x0A, 0x22, +0x10, 0x95, 0x06, 0x96, 0x30, 0xF0, 0x20, 0x6C, +0xA4, 0xF7, 0x08, 0x4C, 0x80, 0x18, 0x25, 0x42, +0x00, 0x6A, 0x08, 0xD2, 0x30, 0xF0, 0x20, 0x69, +0x69, 0xF4, 0x08, 0x49, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x74, 0x51, 0x01, 0x6B, 0x91, 0x67, +0x00, 0x6D, 0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD3, +0x80, 0x18, 0xCF, 0x56, 0x12, 0x6A, 0x91, 0x67, +0x00, 0x6D, 0x33, 0x6E, 0x1F, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x04, 0x4A, 0x08, 0x93, 0xE0, 0x9A, +0x91, 0x67, 0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xCF, 0x56, 0x00, 0x6B, 0xA3, 0x67, +0x91, 0x67, 0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD3, +0x80, 0x18, 0xCF, 0x56, 0x01, 0x6A, 0x91, 0x67, +0xA2, 0x67, 0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0xCF, 0x56, 0x12, 0x6B, 0x91, 0x67, +0x01, 0x6D, 0x33, 0x6E, 0x1F, 0x6F, 0x04, 0xD3, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF7, 0x04, 0x4B, 0xE0, 0x9B, 0x08, 0x92, +0x91, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xCF, 0x56, 0x00, 0x6A, 0x91, 0x67, +0x01, 0x6D, 0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x04, 0x4A, 0x07, 0x93, 0xE0, 0x9A, +0x91, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xCF, 0x56, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x04, 0x4A, 0x07, 0x93, 0xE0, 0x9A, +0x91, 0x67, 0x01, 0x6D, 0x18, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xCF, 0x56, 0x90, 0x67, 0x01, 0x6D, +0x80, 0x18, 0x74, 0x51, 0x09, 0x92, 0x01, 0x4A, +0x10, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x20, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF7, 0x10, 0x4C, +0x10, 0x95, 0x06, 0x96, 0x80, 0x18, 0x25, 0x42, +0x17, 0x10, 0x90, 0x67, 0x80, 0x18, 0x9D, 0x54, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, +0x64, 0x98, 0x6C, 0xEA, 0x08, 0x22, 0x10, 0x95, +0x06, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF0, +0x00, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x90, 0x67, +0x80, 0x18, 0x6C, 0x57, 0x01, 0x6A, 0x01, 0x10, +0x00, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x08, 0xD4, 0x09, 0xD5, +0x52, 0x9C, 0x60, 0xA2, 0x45, 0x67, 0x55, 0x2B, +0x02, 0x75, 0x29, 0x61, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0xC1, 0xF4, 0x00, 0x69, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x10, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, -0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x03, 0x6A, -0x2A, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0xC1, 0xF4, 0x00, 0x69, 0x91, 0x67, -0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, +0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x49, 0x91, 0x67, 0xE0, 0xF7, -0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x10, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0x09, 0x92, 0x6F, 0x42, -0x02, 0x5B, 0x46, 0x60, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, 0x10, 0x69, -0x91, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x1F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF5, 0x18, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0x03, 0x6A, 0x2A, 0x10, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xC1, 0xF4, +0x00, 0x69, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, +0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF5, 0x18, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x49, +0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF7, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x41, 0xF4, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xBC, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x14, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x21, 0xF4, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x09, 0x96, 0xFD, 0xF2, -0x14, 0x49, 0x91, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x22, 0xF7, 0xBC, 0x9B, 0x09, 0x96, 0x47, 0x10, -0x03, 0x72, 0x46, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, 0x10, 0x69, -0x91, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF7, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x41, 0xF4, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0xBC, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x14, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x21, 0xF4, 0x18, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xFD, 0xF2, 0x14, 0x49, -0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF7, -0xBC, 0x9B, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, -0x08, 0x94, 0x80, 0x18, 0x09, 0x57, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x03, 0x75, 0x24, 0x67, 0x53, 0x60, 0x01, 0x76, -0x09, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, -0x01, 0x6E, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, -0xFF, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF6, 0x0C, 0x6C, 0xFF, 0xF7, -0x1F, 0x6D, 0x00, 0x6E, 0x2E, 0x10, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, -0x00, 0x6C, 0xFF, 0x6D, 0x31, 0x6E, 0x0A, 0x10, -0x02, 0x76, 0x12, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, -0xFF, 0x6D, 0x32, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF6, 0x0C, 0x6C, 0xFF, 0xF7, -0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x11, 0x10, +0xE2, 0xF5, 0x18, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xA0, 0x9B, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0x09, 0x92, 0x6F, 0x42, 0x02, 0x5B, 0x46, 0x60, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, 0x33, 0x6E, +0x23, 0xF5, 0x10, 0x69, 0x91, 0x67, 0x00, 0xF3, +0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF1, 0xAC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, 0xB8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x04, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF0, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x41, 0xF4, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0xAC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF4, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF0, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x09, 0x96, 0xFD, 0xF2, 0x14, 0x49, 0x91, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x42, 0xF7, 0xA0, 0x9B, +0x09, 0x96, 0x47, 0x10, 0x03, 0x72, 0x46, 0x61, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF5, 0x10, 0x69, 0x91, 0x67, 0x00, 0xF3, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF1, 0xAC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, 0xB8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x04, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF0, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x41, 0xF4, 0x14, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0xAC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF4, 0x18, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF0, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xFD, 0xF2, 0x14, 0x49, 0x91, 0x67, 0x03, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x42, 0xF7, 0xA0, 0x9B, 0x91, 0x67, +0x03, 0x6E, 0x40, 0xEA, 0x08, 0x94, 0x80, 0x18, +0x6C, 0x57, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x03, 0x75, 0x24, 0x67, +0x53, 0x60, 0x01, 0x76, 0x09, 0x61, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, +0x00, 0x6C, 0xFF, 0x6D, 0x01, 0x6E, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, 0x02, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, +0x0C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x00, 0x6E, +0x2E, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, +0x31, 0x6E, 0x0A, 0x10, 0x02, 0x76, 0x12, 0x61, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, 0x32, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0x0C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, -0x04, 0x6E, 0x40, 0xEA, 0x91, 0x67, 0x80, 0x18, -0x09, 0x57, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0x01, 0x76, 0xD0, 0x61, -0xC6, 0x17, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x01, 0x75, 0x08, 0xD4, -0x26, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF7, 0xBC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, -0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x83, 0xF1, -0xB8, 0x9B, 0x00, 0x6E, 0x46, 0x10, 0x02, 0x75, -0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x22, 0xF7, 0xBC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x05, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, -0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x83, 0xF1, 0xB4, 0x9B, -0x00, 0x6E, 0x1E, 0x10, 0x03, 0x75, 0x26, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0x22, 0xF7, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF2, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, -0x91, 0x67, 0x20, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x83, 0xF1, 0xB4, 0x9B, 0x91, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF1, 0xB8, 0x9B, 0x91, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0x08, 0x94, 0x80, 0x18, -0x09, 0x57, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x01, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x00, 0x6E, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, +0xFF, 0x6D, 0x33, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF6, 0x0C, 0x6C, 0xFF, 0xF7, +0x1F, 0x6D, 0x00, 0xF4, 0x04, 0x6E, 0x40, 0xEA, +0x91, 0x67, 0x80, 0x18, 0x6C, 0x57, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x01, 0x76, 0xD0, 0x61, 0xC6, 0x17, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x04, 0x67, 0x25, 0x67, 0x80, 0x18, 0x4D, 0x59, -0xB1, 0x67, 0x90, 0x67, 0x80, 0x18, 0xA2, 0x58, -0x20, 0xF0, 0x2D, 0xC0, 0x90, 0x67, 0x80, 0x18, -0x09, 0x57, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x01, 0x75, 0x04, 0x67, 0x0C, 0x61, +0x01, 0x75, 0x08, 0xD4, 0x26, 0x61, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, +0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, +0x20, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF1, 0xA8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x91, 0x67, 0x83, 0xF1, 0xAC, 0x9B, 0x00, 0x6E, +0x46, 0x10, 0x02, 0x75, 0x1D, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x42, 0xF7, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, +0x04, 0x6C, 0x05, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, +0x20, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x83, 0xF1, 0xA8, 0x9B, 0x00, 0x6E, 0x1E, 0x10, +0x03, 0x75, 0x26, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0x42, 0xF7, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF1, 0xA8, 0x9B, +0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF1, +0xAC, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x08, 0x94, 0x80, 0x18, 0x6C, 0x57, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x01, 0x6A, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x04, 0x67, 0x25, 0x67, +0x80, 0x18, 0xB0, 0x59, 0xB1, 0x67, 0x90, 0x67, +0x80, 0x18, 0x05, 0x59, 0x20, 0xF0, 0x2D, 0xC0, +0x90, 0x67, 0x80, 0x18, 0x6C, 0x57, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x01, 0x75, +0x04, 0x67, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, +0x03, 0xF2, 0x04, 0x6C, 0x83, 0xF1, 0xA4, 0x9B, +0x08, 0x6E, 0x19, 0x10, 0x02, 0x75, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, 0x04, 0x6C, -0x83, 0xF1, 0xB0, 0x9B, 0x08, 0x6E, 0x19, 0x10, -0x02, 0x75, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF2, 0x04, 0x6C, 0x83, 0xF1, 0xB0, 0x9B, -0x04, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x83, 0xF1, 0xB0, 0x9B, 0x03, 0xF2, 0x04, 0x6C, -0x0C, 0x6E, 0x40, 0xEA, 0x90, 0x67, 0x80, 0x18, -0x09, 0x57, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x7D, 0x67, 0x04, 0x67, -0x47, 0x43, 0x0A, 0xD6, 0x20, 0xF0, 0xAC, 0xC0, -0x21, 0x4A, 0x60, 0xA2, 0x46, 0x67, 0xAD, 0xEA, -0x0B, 0xD7, 0x25, 0x67, 0x20, 0xF0, 0x6B, 0xC4, -0x20, 0xF0, 0x4A, 0xC4, 0xA7, 0x67, 0x80, 0x18, -0x97, 0x59, 0x0A, 0x96, 0x90, 0x67, 0xB1, 0x67, -0x80, 0x18, 0x1E, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, -0x09, 0x22, 0x0A, 0x96, 0x0B, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0x45, 0xF0, 0x04, 0x4C, 0xB1, 0x67, -0x80, 0x18, 0x25, 0x42, 0x90, 0x67, 0x80, 0x18, -0x09, 0x57, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x0D, 0xD5, 0x0E, 0xD6, -0x20, 0xF0, 0x44, 0xA4, 0x04, 0x67, 0x27, 0x67, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x5C, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, 0x0A, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, -0xE4, 0xF4, 0x14, 0x4C, 0xA2, 0xF3, 0x04, 0x4D, -0x80, 0x18, 0x25, 0x42, 0x20, 0xF0, 0x4F, 0xA0, -0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0x65, 0xF0, 0x08, 0x4C, 0xA2, 0xF3, -0x04, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x8D, 0x10, -0x0E, 0x93, 0x04, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0x85, 0xF0, 0x00, 0x4C, 0xA2, 0xF3, -0x04, 0x4D, 0xC3, 0x67, 0x16, 0x10, 0x0D, 0x92, -0xFF, 0x72, 0x02, 0x61, 0xFF, 0x71, 0x15, 0x60, -0x0D, 0x93, 0x04, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x03, 0x2A, 0xA3, 0x67, 0x06, 0xD2, 0x10, 0x10, -0x0D, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0x85, 0xF0, 0x18, 0x4C, 0xA2, 0xF3, -0x04, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x00, 0x6A, -0x65, 0x10, 0x01, 0x6B, 0x03, 0x6D, 0x06, 0xD3, -0x0E, 0x96, 0x90, 0x67, 0x80, 0x18, 0x4A, 0x51, -0x0E, 0x95, 0x90, 0x67, 0x80, 0x18, 0x8C, 0x59, -0x20, 0xF0, 0x4B, 0xA0, 0x03, 0x2A, 0x01, 0x6A, -0x20, 0xF0, 0x4B, 0xC0, 0x0D, 0x92, 0xFF, 0x4A, -0x02, 0x5A, 0x02, 0x60, 0x0D, 0x91, 0x0D, 0x10, -0x0D, 0x93, 0x03, 0x73, 0x06, 0x61, 0xFF, 0x71, -0x0B, 0x61, 0x20, 0xF0, 0x2B, 0xA0, 0x03, 0x6A, -0x05, 0x10, 0x06, 0x93, 0x05, 0x23, 0x20, 0xF0, -0x2B, 0xA0, 0x00, 0x6A, 0x06, 0xD2, 0x02, 0x10, -0x03, 0x6B, 0x06, 0xD3, 0x06, 0x95, 0x90, 0x67, -0xD1, 0x67, 0xF1, 0x67, 0x80, 0x18, 0xB1, 0x59, -0x07, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, -0x02, 0x5A, 0x18, 0x60, 0x20, 0xF0, 0x4A, 0xA0, -0x01, 0x72, 0x06, 0x61, 0x0E, 0x92, 0x01, 0x72, -0x03, 0x61, 0x90, 0x67, 0x01, 0x6D, 0x0C, 0x10, -0x20, 0xF0, 0x4A, 0xA0, 0x02, 0x72, 0x06, 0x61, -0x0E, 0x93, 0x02, 0x73, 0x03, 0x61, 0x90, 0x67, -0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, -0x80, 0x18, 0x38, 0x56, 0x90, 0x67, 0x80, 0x18, -0x46, 0x54, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0A, 0x22, -0x0E, 0x95, 0x0D, 0x96, 0x06, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0xA5, 0xF0, 0x10, 0x4C, 0x04, 0xD1, -0x80, 0x18, 0x25, 0x42, 0x90, 0x67, 0x80, 0x18, -0x09, 0x57, 0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, -0x20, 0xF0, 0x44, 0xA4, 0xFF, 0x69, 0x04, 0x67, -0x0A, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x5C, 0x9A, 0x64, 0x9C, 0xAC, 0xE9, 0x6C, 0xEA, -0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0xE4, 0xF4, 0x14, 0x4C, 0x62, 0xF3, -0x08, 0x4D, 0x80, 0x18, 0x25, 0x42, 0x20, 0xF0, -0x4F, 0xA0, 0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, -0x80, 0xF1, 0x1A, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0xC5, 0xF0, 0x14, 0x4C, 0x80, 0x18, 0x25, 0x42, -0x93, 0x11, 0x48, 0x41, 0xF9, 0x4A, 0xFF, 0x6B, -0x6C, 0xEA, 0x15, 0x5A, 0x0C, 0x61, 0x48, 0x41, -0xC7, 0x4A, 0x6C, 0xEA, 0x23, 0x5A, 0x07, 0x61, -0x47, 0x41, 0x68, 0x4A, 0x6C, 0xEA, 0x04, 0x5A, -0x02, 0x61, 0xB2, 0x59, 0x10, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, -0x6C, 0xEA, 0x60, 0xF1, 0x1B, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xE5, 0xF0, 0x08, 0x4C, 0xB1, 0x67, -0x80, 0x18, 0x25, 0x42, 0x73, 0x11, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0xE0, 0x9A, 0x90, 0x67, -0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x05, 0x56, -0x09, 0xD2, 0x01, 0x4A, 0x0F, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, -0x6C, 0xEA, 0x40, 0xF1, 0x1F, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xE5, 0xF0, 0x18, 0x4C, 0x80, 0x18, -0x25, 0x42, 0x58, 0x11, 0x20, 0xF0, 0x6B, 0xA0, -0x0F, 0x59, 0x58, 0x67, 0x0B, 0xD2, 0x06, 0xD3, -0x15, 0x2B, 0x21, 0xF0, 0x00, 0x6C, 0x0F, 0x6D, -0x80, 0x18, 0xA5, 0x19, 0xFF, 0x6B, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, -0x20, 0xF0, 0x6B, 0xC0, 0x05, 0xF1, 0x0C, 0x4C, -0x62, 0xF3, 0x08, 0x4D, 0xC3, 0x67, 0x06, 0xD3, -0x80, 0x18, 0x25, 0x42, 0x20, 0xF0, 0x4A, 0xA0, -0x08, 0xD2, 0x1B, 0x2A, 0x21, 0xF0, 0x00, 0x6C, -0xF0, 0x6D, 0x80, 0x18, 0xA5, 0x19, 0xC2, 0x67, -0x06, 0x92, 0xFF, 0x6B, 0x6C, 0xEE, 0xCD, 0xEA, -0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0x20, 0xF0, 0xCC, 0xC0, 0x20, 0xF0, -0x4A, 0xC0, 0x25, 0xF1, 0x14, 0x4C, 0x62, 0xF3, -0x08, 0x4D, 0xE2, 0x67, 0x08, 0xD2, 0x80, 0x18, -0x25, 0x42, 0x20, 0xF0, 0x6D, 0xA0, 0x07, 0xD3, -0x18, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, -0xB0, 0x9A, 0x21, 0xF0, 0x04, 0x6C, 0x80, 0x18, -0xA5, 0x19, 0xFF, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, +0x83, 0xF1, 0xA4, 0x9B, 0x04, 0x6E, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF1, 0xA4, 0x9B, +0x03, 0xF2, 0x04, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, +0x90, 0x67, 0x80, 0x18, 0x6C, 0x57, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x7D, 0x67, 0x04, 0x67, 0x47, 0x43, 0x0A, 0xD6, +0x20, 0xF0, 0xAC, 0xC0, 0x21, 0x4A, 0x60, 0xA2, +0x46, 0x67, 0xAD, 0xEA, 0x0B, 0xD7, 0x25, 0x67, +0x20, 0xF0, 0x6B, 0xC4, 0x20, 0xF0, 0x4A, 0xC4, +0xA7, 0x67, 0x80, 0x18, 0xFA, 0x59, 0x0A, 0x96, +0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0x81, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, +0x64, 0x98, 0x6C, 0xEA, 0x09, 0x22, 0x0A, 0x96, +0x0B, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF0, +0x0C, 0x4C, 0xB1, 0x67, 0x80, 0x18, 0x25, 0x42, +0x90, 0x67, 0x80, 0x18, 0x6C, 0x57, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x0D, 0xD5, 0x0E, 0xD6, 0x20, 0xF0, 0x44, 0xA4, +0x04, 0x67, 0x27, 0x67, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, 0x64, 0x9C, +0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, 0x1C, 0x4C, +0xA2, 0xF3, 0x04, 0x4D, 0x80, 0x18, 0x25, 0x42, +0x20, 0xF0, 0x4F, 0xA0, 0x0B, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x65, 0xF0, +0x10, 0x4C, 0xA2, 0xF3, 0x04, 0x4D, 0x80, 0x18, +0x25, 0x42, 0x8D, 0x10, 0x0E, 0x93, 0x04, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x85, 0xF0, +0x08, 0x4C, 0xA2, 0xF3, 0x04, 0x4D, 0xC3, 0x67, +0x16, 0x10, 0x0D, 0x92, 0xFF, 0x72, 0x02, 0x61, +0xFF, 0x71, 0x15, 0x60, 0x0D, 0x93, 0x04, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x2A, 0xA3, 0x67, +0x06, 0xD2, 0x10, 0x10, 0x0D, 0x96, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xA5, 0xF0, +0x00, 0x4C, 0xA2, 0xF3, 0x04, 0x4D, 0x80, 0x18, +0x25, 0x42, 0x00, 0x6A, 0x65, 0x10, 0x01, 0x6B, +0x03, 0x6D, 0x06, 0xD3, 0x0E, 0x96, 0x90, 0x67, +0x80, 0x18, 0xA1, 0x51, 0x0E, 0x95, 0x90, 0x67, +0x80, 0x18, 0xEF, 0x59, 0x20, 0xF0, 0x4B, 0xA0, +0x03, 0x2A, 0x01, 0x6A, 0x20, 0xF0, 0x4B, 0xC0, +0x0D, 0x92, 0xFF, 0x4A, 0x02, 0x5A, 0x02, 0x60, +0x0D, 0x91, 0x0D, 0x10, 0x0D, 0x93, 0x03, 0x73, +0x06, 0x61, 0xFF, 0x71, 0x0B, 0x61, 0x20, 0xF0, +0x2B, 0xA0, 0x03, 0x6A, 0x05, 0x10, 0x06, 0x93, +0x05, 0x23, 0x20, 0xF0, 0x2B, 0xA0, 0x00, 0x6A, +0x06, 0xD2, 0x02, 0x10, 0x03, 0x6B, 0x06, 0xD3, +0x06, 0x95, 0x90, 0x67, 0xD1, 0x67, 0xF1, 0x67, +0x80, 0x18, 0x14, 0x5A, 0x07, 0x92, 0xFF, 0x6B, +0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, 0x18, 0x60, +0x20, 0xF0, 0x4A, 0xA0, 0x01, 0x72, 0x06, 0x61, +0x0E, 0x92, 0x01, 0x72, 0x03, 0x61, 0x90, 0x67, +0x01, 0x6D, 0x0C, 0x10, 0x20, 0xF0, 0x4A, 0xA0, +0x02, 0x72, 0x06, 0x61, 0x0E, 0x93, 0x02, 0x73, +0x03, 0x61, 0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, +0x90, 0x67, 0x03, 0x6D, 0x80, 0x18, 0x8F, 0x56, +0x90, 0x67, 0x80, 0x18, 0x9D, 0x54, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, 0x64, 0x98, +0x6C, 0xEA, 0x0A, 0x22, 0x0E, 0x95, 0x0D, 0x96, +0x06, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF0, +0x18, 0x4C, 0x04, 0xD1, 0x80, 0x18, 0x25, 0x42, +0x90, 0x67, 0x80, 0x18, 0x6C, 0x57, 0x01, 0x6A, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x20, 0xF0, 0x44, 0xA4, +0xFF, 0x69, 0x04, 0x67, 0x0A, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, 0x64, 0x9C, +0xAC, 0xE9, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF4, +0x1C, 0x4C, 0x62, 0xF3, 0x08, 0x4D, 0x80, 0x18, +0x25, 0x42, 0x20, 0xF0, 0x4F, 0xA0, 0x0F, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, +0x64, 0x98, 0x6C, 0xEA, 0x80, 0xF1, 0x1A, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0xC5, 0xF0, 0x1C, 0x4C, +0x80, 0x18, 0x25, 0x42, 0x93, 0x11, 0x48, 0x41, +0xF9, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x15, 0x5A, +0x0C, 0x61, 0x48, 0x41, 0xC7, 0x4A, 0x6C, 0xEA, +0x23, 0x5A, 0x07, 0x61, 0x47, 0x41, 0x68, 0x4A, +0x6C, 0xEA, 0x04, 0x5A, 0x02, 0x61, 0xB2, 0x59, +0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x60, 0xF1, +0x1B, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xE5, 0xF0, +0x10, 0x4C, 0xB1, 0x67, 0x80, 0x18, 0x25, 0x42, +0x73, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, +0xE4, 0x9A, 0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, +0x80, 0x18, 0x5C, 0x56, 0x09, 0xD2, 0x01, 0x4A, +0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x40, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x40, 0xF1, +0x1F, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF1, +0x00, 0x4C, 0x80, 0x18, 0x25, 0x42, 0x58, 0x11, +0x20, 0xF0, 0x6B, 0xA0, 0x0F, 0x59, 0x58, 0x67, +0x0B, 0xD2, 0x06, 0xD3, 0x15, 0x2B, 0x21, 0xF0, +0x00, 0x6C, 0x0F, 0x6D, 0x80, 0x18, 0xAF, 0x19, +0xFF, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x30, 0xF0, 0x20, 0x6D, 0x20, 0xF0, 0x6B, 0xC0, +0x05, 0xF1, 0x14, 0x4C, 0x62, 0xF3, 0x08, 0x4D, +0xC3, 0x67, 0x06, 0xD3, 0x80, 0x18, 0x25, 0x42, +0x20, 0xF0, 0x4A, 0xA0, 0x08, 0xD2, 0x1B, 0x2A, +0x21, 0xF0, 0x00, 0x6C, 0xF0, 0x6D, 0x80, 0x18, +0xAF, 0x19, 0xC2, 0x67, 0x06, 0x92, 0xFF, 0x6B, +0x6C, 0xEE, 0xCD, 0xEA, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x20, 0xF0, -0x6D, 0xC0, 0x65, 0xF1, 0x10, 0x4C, 0x62, 0xF3, -0x08, 0x4D, 0xC3, 0x67, 0x07, 0xD3, 0x80, 0x18, -0x25, 0x42, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x54, 0x9A, 0x09, 0x93, 0x4C, 0xEB, 0x0B, 0x92, -0x2D, 0xEB, 0x06, 0xD3, 0x16, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x58, 0x9A, 0x91, 0x59, -0x4D, 0xEB, 0x06, 0xD3, 0x05, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x5C, 0x9A, 0x07, 0x10, -0x50, 0x59, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF7, 0x54, 0x9A, 0x06, 0x93, 0x4D, 0xEB, -0x06, 0xD3, 0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, -0x1D, 0x51, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF4, -0x08, 0x4A, 0x82, 0x67, 0x09, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0x00, 0x4A, 0x06, 0x93, -0xE0, 0x9A, 0x00, 0x6D, 0x18, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x78, 0x56, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0x00, 0x4A, 0x06, 0x93, 0x09, 0x94, -0xE0, 0x9A, 0x01, 0x6D, 0x18, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x78, 0x56, 0x90, 0x67, 0x01, 0x6D, -0x80, 0x18, 0x1D, 0x51, 0x0F, 0x59, 0x11, 0x60, -0x50, 0x98, 0x40, 0xA2, 0x07, 0x2A, 0x90, 0x67, -0x05, 0x6D, 0x80, 0x18, 0xF8, 0x51, 0x90, 0x67, -0x06, 0x6D, 0x1A, 0x10, 0x90, 0x67, 0x04, 0x6D, -0x80, 0x18, 0xF8, 0x51, 0x90, 0x67, 0x00, 0x6D, -0x13, 0x10, 0x68, 0x41, 0xE4, 0x4B, 0xFF, 0x6A, -0x4C, 0xEB, 0x1D, 0x5B, 0x03, 0x60, 0x90, 0x67, -0x01, 0x6D, 0x0A, 0x10, 0x68, 0x41, 0xA4, 0x4B, -0x4C, 0xEB, 0x2D, 0x5B, 0x03, 0x60, 0x90, 0x67, -0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, -0x80, 0x18, 0x07, 0x52, 0x90, 0x67, 0xB1, 0x67, -0x80, 0x18, 0x22, 0x52, 0x90, 0x67, 0xB1, 0x67, -0x80, 0x18, 0x6A, 0x52, 0x0B, 0x93, 0x2F, 0x23, -0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0x9E, 0x51, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0xA3, 0xC1, -0x40, 0xF4, 0x14, 0x6C, 0x80, 0x6D, 0x00, 0x6E, -0x80, 0x18, 0x32, 0x1A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0xBC, 0x9B, 0x83, 0xF2, 0x00, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0xA0, 0x9B, 0x83, 0xF4, 0x00, 0x6C, -0x0F, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0xFF, 0x6B, -0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, 0x41, 0x60, -0x90, 0x67, 0x00, 0x6D, 0x3C, 0x10, 0x30, 0xF0, +0xCC, 0xC0, 0x20, 0xF0, 0x4A, 0xC0, 0x25, 0xF1, +0x1C, 0x4C, 0x62, 0xF3, 0x08, 0x4D, 0xE2, 0x67, +0x08, 0xD2, 0x80, 0x18, 0x25, 0x42, 0x20, 0xF0, +0x6D, 0xA0, 0x07, 0xD3, 0x18, 0x2B, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF0, 0xA4, 0x9A, 0x21, 0xF0, +0x04, 0x6C, 0x80, 0x18, 0xAF, 0x19, 0xFF, 0x6B, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6D, 0x20, 0xF0, 0x6D, 0xC0, 0x65, 0xF1, +0x18, 0x4C, 0x62, 0xF3, 0x08, 0x4D, 0xC3, 0x67, +0x07, 0xD3, 0x80, 0x18, 0x25, 0x42, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF1, 0x44, 0x9A, 0x09, 0x93, +0x4C, 0xEB, 0x0B, 0x92, 0x2D, 0xEB, 0x06, 0xD3, +0x16, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, +0x48, 0x9A, 0x91, 0x59, 0x4D, 0xEB, 0x06, 0xD3, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, +0x4C, 0x9A, 0x07, 0x10, 0x50, 0x59, 0x07, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x58, 0x9A, +0x06, 0x93, 0x4D, 0xEB, 0x06, 0xD3, 0x90, 0x67, +0x00, 0x6D, 0x80, 0x18, 0x74, 0x51, 0x30, 0xF0, +0x20, 0x6A, 0x69, 0xF4, 0x08, 0x4A, 0x82, 0x67, +0x09, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, +0x04, 0x4A, 0x06, 0x93, 0xE0, 0x9A, 0x00, 0x6D, +0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x04, 0x4A, +0x06, 0x93, 0x09, 0x94, 0xE0, 0x9A, 0x01, 0x6D, +0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xCF, 0x56, +0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x74, 0x51, +0x0F, 0x59, 0x11, 0x60, 0x50, 0x98, 0x40, 0xA2, +0x07, 0x2A, 0x90, 0x67, 0x05, 0x6D, 0x80, 0x18, +0x4F, 0x52, 0x90, 0x67, 0x06, 0x6D, 0x1A, 0x10, +0x90, 0x67, 0x04, 0x6D, 0x80, 0x18, 0x4F, 0x52, +0x90, 0x67, 0x00, 0x6D, 0x13, 0x10, 0x68, 0x41, +0xE4, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, 0x1D, 0x5B, +0x03, 0x60, 0x90, 0x67, 0x01, 0x6D, 0x0A, 0x10, +0x68, 0x41, 0xA4, 0x4B, 0x4C, 0xEB, 0x2D, 0x5B, +0x03, 0x60, 0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, +0x90, 0x67, 0x03, 0x6D, 0x80, 0x18, 0x5E, 0x52, +0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0x79, 0x52, +0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0xC1, 0x52, +0x0B, 0x93, 0x2F, 0x23, 0x90, 0x67, 0xB1, 0x67, +0x80, 0x18, 0xF5, 0x51, 0x90, 0x67, 0x01, 0x6D, +0x00, 0x18, 0xA3, 0xC1, 0x40, 0xF4, 0x14, 0x6C, +0x80, 0x6D, 0x00, 0x6E, 0x80, 0x18, 0x3C, 0x1A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0xAC, 0x9B, +0x83, 0xF2, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0xB0, 0x9B, +0x83, 0xF4, 0x00, 0x6C, 0x0F, 0x6E, 0x40, 0xEA, +0x0A, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, +0x02, 0x5A, 0x41, 0x60, 0x90, 0x67, 0x00, 0x6D, +0x3C, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, +0xAC, 0x9B, 0x83, 0xF2, 0x00, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0x01, 0x6E, 0x40, 0xF4, 0x14, 0x6C, +0x80, 0x6D, 0x80, 0x18, 0x3C, 0x1A, 0x90, 0x67, +0x02, 0x6D, 0x00, 0x18, 0xA3, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0xBC, 0x9B, 0x83, 0xF2, -0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x01, 0x6E, -0x40, 0xF4, 0x14, 0x6C, 0x80, 0x6D, 0x80, 0x18, -0x32, 0x1A, 0x90, 0x67, 0x02, 0x6D, 0x00, 0x18, -0xA3, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0xA0, 0x9B, 0x83, 0xF4, 0x00, 0x6C, 0x22, 0x6E, -0x40, 0xEA, 0x0A, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, -0x6C, 0xEA, 0x02, 0x5A, 0x16, 0x60, 0x08, 0x92, -0x01, 0x72, 0x06, 0x61, 0x07, 0x93, 0x01, 0x73, -0x0C, 0x61, 0x90, 0x67, 0x01, 0x6D, 0x0B, 0x10, -0x08, 0x92, 0x02, 0x72, 0x06, 0x61, 0x07, 0x93, -0x02, 0x73, 0x03, 0x61, 0x90, 0x67, 0x02, 0x6D, -0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, 0x80, 0x18, -0x38, 0x56, 0x90, 0x67, 0x80, 0x18, 0x46, 0x54, -0x52, 0x98, 0x40, 0xA2, 0x04, 0x22, 0x90, 0x67, -0xB1, 0x67, 0x80, 0x18, 0xD1, 0x52, 0x90, 0x67, -0x80, 0x18, 0x09, 0x57, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, -0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF1, -0x00, 0x4C, 0xB1, 0x67, 0x80, 0x18, 0x25, 0x42, -0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x0F, 0x97, -0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x26, 0x67, 0x4C, 0xED, 0x04, 0x67, -0x0B, 0xD7, 0x4C, 0xE9, 0x80, 0x18, 0x2A, 0x5A, -0x00, 0x6B, 0x09, 0x22, 0x0B, 0x96, 0x90, 0x67, -0xB1, 0x67, 0x80, 0x18, 0x66, 0x57, 0x4B, 0xEB, -0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x43, 0x67, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x40, 0xA4, 0x01, 0x72, 0x04, 0x61, 0x00, 0x18, -0xA5, 0xC9, 0x00, 0x18, 0x9B, 0xC9, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x22, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x01, 0x6A, -0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x5C, 0x9A, 0x92, 0xC3, 0x04, 0x04, 0x40, 0xEA, -0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6B, 0x6C, 0xEC, 0x03, 0x5C, 0x58, 0x67, -0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF2, 0x14, 0x4A, 0x67, 0x42, 0x09, 0x4B, -0x80, 0xA2, 0x02, 0x24, 0x01, 0x6A, 0x20, 0xE8, -0x01, 0x4A, 0x6A, 0xEA, 0xF9, 0x61, 0x00, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF4, 0x5C, 0xA2, -0x0E, 0x72, 0x29, 0x61, 0x80, 0x18, 0x2F, 0x5B, -0x26, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF4, -0x08, 0x4C, 0x04, 0x05, 0x80, 0x18, 0x2A, 0x54, -0x5D, 0x67, 0x92, 0xA2, 0x80, 0x18, 0x2C, 0x5B, -0x0A, 0x22, 0x5D, 0x67, 0x90, 0xA2, 0x80, 0x18, -0x2C, 0x5B, 0x05, 0x22, 0x5D, 0x67, 0x91, 0xA2, -0x80, 0x18, 0x2C, 0x5B, 0x10, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0x50, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, -0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x07, 0x97, -0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF4, -0x59, 0xA2, 0x01, 0x72, 0x4A, 0x61, 0x80, 0x18, -0x2F, 0x5B, 0x47, 0x22, 0x30, 0xF0, 0x20, 0x68, -0x49, 0xF4, 0x08, 0x48, 0x90, 0x67, 0x05, 0x05, -0x80, 0x18, 0x2A, 0x54, 0x7D, 0x67, 0x56, 0xA3, -0x01, 0x72, 0x0E, 0x60, 0x03, 0x72, 0x0C, 0x60, -0x54, 0xA3, 0x01, 0x72, 0x09, 0x60, 0x03, 0x72, -0x07, 0x60, 0x55, 0xA3, 0x01, 0x72, 0x04, 0x60, -0x02, 0x72, 0x02, 0x60, 0x03, 0x72, 0x10, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x50, 0x9A, -0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF7, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF5, 0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, -0x90, 0x67, 0x04, 0x05, 0x80, 0x18, 0x18, 0x54, -0x7D, 0x67, 0x51, 0xA3, 0x01, 0x72, 0x05, 0x60, -0x03, 0x72, 0x03, 0x60, 0x50, 0xA3, 0x01, 0x72, -0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x50, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF7, 0x64, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF1, 0xB0, 0x9B, 0x83, 0xF4, +0x00, 0x6C, 0x22, 0x6E, 0x40, 0xEA, 0x0A, 0x92, +0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, +0x16, 0x60, 0x08, 0x92, 0x01, 0x72, 0x06, 0x61, +0x07, 0x93, 0x01, 0x73, 0x0C, 0x61, 0x90, 0x67, +0x01, 0x6D, 0x0B, 0x10, 0x08, 0x92, 0x02, 0x72, +0x06, 0x61, 0x07, 0x93, 0x02, 0x73, 0x03, 0x61, +0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, +0x03, 0x6D, 0x80, 0x18, 0x8F, 0x56, 0x90, 0x67, +0x80, 0x18, 0x9D, 0x54, 0x52, 0x98, 0x40, 0xA2, +0x04, 0x22, 0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, +0x28, 0x53, 0x90, 0x67, 0x80, 0x18, 0x6C, 0x57, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, +0x64, 0x98, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0xA5, 0xF1, 0x08, 0x4C, 0xB1, 0x67, +0x80, 0x18, 0x25, 0x42, 0x01, 0x6A, 0x01, 0x10, +0x00, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x26, 0x67, +0x4C, 0xED, 0x04, 0x67, 0x0B, 0xD7, 0x4C, 0xE9, +0x80, 0x18, 0x8D, 0x5A, 0x00, 0x6B, 0x09, 0x22, +0x0B, 0x96, 0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, +0xC9, 0x57, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, +0x62, 0x33, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x43, 0x67, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x40, 0xA4, 0x01, 0x72, +0x04, 0x61, 0x00, 0x18, 0xB2, 0xC9, 0x00, 0x18, +0xA8, 0xC9, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x22, 0x6A, 0x7D, 0x67, +0x50, 0xC3, 0x01, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x92, 0xC3, +0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, +0x03, 0x5C, 0x58, 0x67, 0x6C, 0xEA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x14, 0x4A, +0x67, 0x42, 0x09, 0x4B, 0x80, 0xA2, 0x02, 0x24, +0x01, 0x6A, 0x20, 0xE8, 0x01, 0x4A, 0x6A, 0xEA, +0xF9, 0x61, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x49, 0xF4, 0x58, 0xA2, 0x0E, 0x72, 0x29, 0x61, +0x80, 0x18, 0x92, 0x5B, 0x26, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x69, 0xF4, 0x08, 0x4C, 0x04, 0x05, +0x80, 0x18, 0x81, 0x54, 0x5D, 0x67, 0x92, 0xA2, +0x80, 0x18, 0x8F, 0x5B, 0x0A, 0x22, 0x5D, 0x67, +0x90, 0xA2, 0x80, 0x18, 0x8F, 0x5B, 0x05, 0x22, +0x5D, 0x67, 0x91, 0xA2, 0x80, 0x18, 0x8F, 0x5B, +0x10, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, +0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF3, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x50, 0x9A, 0x60, 0xDA, -0xF0, 0x17, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x10, 0xF0, 0x23, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x09, 0x4B, -0x40, 0xF1, 0x68, 0xDA, 0x10, 0xF0, 0x23, 0x6B, -0x40, 0xF1, 0x08, 0x4A, 0xC0, 0xF5, 0x15, 0x4B, -0x61, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0xA3, 0xF2, -0x0D, 0x4B, 0x62, 0xDA, 0x10, 0xF0, 0x23, 0x6B, -0x43, 0xF3, 0x05, 0x4B, 0x63, 0xDA, 0x10, 0xF0, -0x23, 0x6B, 0x03, 0xF3, 0x11, 0x4B, 0x64, 0xDA, -0x10, 0xF0, 0x23, 0x6B, 0xC3, 0xF2, 0x1D, 0x4B, -0x65, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0x63, 0xF2, -0x1D, 0x4B, 0x66, 0xDA, 0x10, 0xF0, 0x23, 0x6B, -0x43, 0xF2, 0x0D, 0x4B, 0x67, 0xDA, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF2, 0x14, 0x4A, -0x67, 0x42, 0x09, 0x4B, 0x00, 0x6C, 0x80, 0xC2, -0x01, 0x4A, 0x6A, 0xEA, 0xFB, 0x61, 0x42, 0xF4, -0x10, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0x68, 0x9B, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, -0x6C, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, -0x62, 0xF4, 0x00, 0x72, 0x80, 0xDB, 0xE9, 0x61, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x44, 0x9A, -0x03, 0x6C, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF7, 0x48, 0x9A, 0x00, 0xF5, 0x62, 0x33, -0x8C, 0xEB, 0x40, 0x9A, 0x01, 0x73, 0x42, 0x32, -0x52, 0x32, 0x8C, 0xEA, 0x05, 0x60, 0x0B, 0x2B, -0x02, 0x5A, 0x50, 0x6C, 0x0D, 0x60, 0x03, 0x10, -0x02, 0x5A, 0x0A, 0x60, 0x28, 0x6C, 0x87, 0xEA, -0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0x10, 0x02, 0x5A, -0x28, 0x6C, 0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, -0x50, 0x6C, 0x80, 0x18, 0x77, 0x5E, 0x80, 0x18, -0x8B, 0x02, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF6, -0x78, 0x9B, 0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF6, 0x74, 0x9B, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF6, -0x60, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF6, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF7, 0x6C, 0x9B, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, -0x00, 0x69, 0xA0, 0xF0, 0x24, 0xD8, 0x40, 0xF1, -0x37, 0xC0, 0x80, 0x18, 0x7D, 0x5B, 0xC0, 0xF0, -0x7C, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0xC0, 0xF0, -0x5C, 0xC0, 0x80, 0x18, 0xEB, 0x5C, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF1, -0x34, 0xC0, 0xC9, 0xF2, 0x08, 0x4A, 0xC9, 0xF2, -0x18, 0x4C, 0x00, 0x6B, 0x60, 0xC2, 0x70, 0xC2, -0x01, 0x4A, 0x62, 0x67, 0x8E, 0xEB, 0xF9, 0x2B, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x23, 0xF3, 0x7D, 0xC2, 0x23, 0xF3, 0x7E, 0xC2, -0x23, 0xF3, 0x7F, 0xC2, 0x23, 0xF3, 0x7C, 0xC2, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x80, 0x18, 0x94, 0x5B, 0x80, 0x18, 0x00, 0x5C, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x50, 0x9A, -0x40, 0xEA, 0x80, 0x18, 0x93, 0x40, 0x00, 0x18, -0x7D, 0xD3, 0x80, 0x18, 0x58, 0x00, 0x80, 0x18, -0x43, 0x19, 0x00, 0x18, 0x27, 0xCC, 0x00, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x10, 0xF0, 0x23, 0x6C, 0x01, 0x6F, -0x05, 0xF7, 0x11, 0x4C, 0x00, 0x6D, 0x64, 0x6E, -0xEB, 0xEF, 0x40, 0xEA, 0x00, 0x18, 0x44, 0xCC, -0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF7, 0x08, 0x4A, -0x00, 0x6B, 0x40, 0xF6, 0x7A, 0xC2, 0x40, 0xF6, -0x7B, 0xC2, 0x40, 0xF1, 0x77, 0xC2, 0x40, 0xF1, -0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xA3, 0xF4, 0x71, 0xA2, -0x0F, 0x23, 0xA3, 0xF4, 0x70, 0xA2, 0x0C, 0x23, -0xA3, 0xF4, 0x76, 0xA2, 0x09, 0x23, 0xA3, 0xF4, -0x72, 0xA2, 0x06, 0x23, 0xA3, 0xF4, 0x74, 0xA2, -0x03, 0x23, 0xA3, 0xF4, 0x53, 0xA2, 0x1E, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x68, 0x9A, -0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, -0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, -0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF7, 0x50, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x7C, 0x9A, +0xF0, 0x17, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x49, 0xF4, 0x55, 0xA2, 0x01, 0x72, +0x4A, 0x61, 0x80, 0x18, 0x92, 0x5B, 0x47, 0x22, +0x30, 0xF0, 0x20, 0x68, 0x69, 0xF4, 0x08, 0x48, +0x90, 0x67, 0x05, 0x05, 0x80, 0x18, 0x81, 0x54, +0x7D, 0x67, 0x56, 0xA3, 0x01, 0x72, 0x0E, 0x60, +0x03, 0x72, 0x0C, 0x60, 0x54, 0xA3, 0x01, 0x72, +0x09, 0x60, 0x03, 0x72, 0x07, 0x60, 0x55, 0xA3, +0x01, 0x72, 0x04, 0x60, 0x02, 0x72, 0x02, 0x60, +0x03, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF7, 0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, 0x50, 0x9A, -0x60, 0xDA, 0xF0, 0x17, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x48, 0x98, -0x0A, 0xD4, 0x04, 0x05, 0xE0, 0xF1, 0x14, 0x6C, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x15, 0x6C, 0x30, 0xF0, 0x20, 0x69, -0x40, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x85, 0xF7, 0x08, 0x49, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x16, 0x6C, -0x41, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x17, 0x6C, 0x42, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x18, 0x6C, -0x43, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x19, 0x6C, 0x44, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0xBD, 0x67, -0x90, 0xA5, 0xA3, 0xF4, 0x54, 0xA1, 0x0F, 0x6B, -0x8C, 0xEB, 0x50, 0x32, 0x6D, 0xEA, 0x0A, 0x93, -0x04, 0x05, 0xE0, 0xF1, 0x1B, 0x6C, 0x45, 0xC3, -0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0xA3, 0xF4, -0x56, 0xA1, 0xA3, 0xF4, 0x71, 0xA1, 0x0A, 0x95, -0x4C, 0x32, 0x74, 0x33, 0x6D, 0xEA, 0xA3, 0xF4, -0x70, 0xA1, 0x6D, 0xEA, 0x46, 0xC5, 0xA3, 0xF4, -0x52, 0xA1, 0xA3, 0xF4, 0x73, 0xA1, 0x48, 0x32, -0x78, 0x33, 0x6D, 0xEA, 0x33, 0x6B, 0x6D, 0xEA, -0x47, 0xC5, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x48, 0x98, 0x24, 0x67, 0x04, 0x05, -0xE0, 0xF1, 0x10, 0x6C, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x11, 0x6C, -0x40, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, -0x12, 0x6C, 0x41, 0xC1, 0xC0, 0xF3, 0x48, 0x98, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, -0xE0, 0xF1, 0x13, 0x6C, 0x42, 0xC1, 0xC0, 0xF3, -0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x04, 0x05, 0xE0, 0xF1, 0x1C, 0x6C, 0x43, 0xC1, -0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x1D, 0x6C, -0x44, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, -0x1E, 0x6C, 0x45, 0xC1, 0xC0, 0xF3, 0x48, 0x98, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0xE0, 0xF1, -0x1F, 0x6C, 0x04, 0x05, 0x46, 0xC1, 0xC0, 0xF3, -0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x47, 0xC1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD0, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, -0x22, 0x5C, 0xA0, 0xF1, 0x02, 0x6A, 0x1F, 0xF7, +0x60, 0xDA, 0xF0, 0x17, 0x90, 0x67, 0x04, 0x05, +0x80, 0x18, 0x6F, 0x54, 0x7D, 0x67, 0x51, 0xA3, +0x01, 0x72, 0x05, 0x60, 0x03, 0x72, 0x03, 0x60, +0x50, 0xA3, 0x01, 0x72, 0x10, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x54, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, +0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF5, +0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x09, 0x97, +0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x10, 0xF0, 0x23, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF2, 0x1D, 0x4B, 0x40, 0xF1, 0x68, 0xDA, +0x10, 0xF0, 0x23, 0x6B, 0x40, 0xF1, 0x08, 0x4A, +0xC0, 0xF5, 0x15, 0x4B, 0x61, 0xDA, 0x10, 0xF0, +0x23, 0x6B, 0xE3, 0xF2, 0x01, 0x4B, 0x62, 0xDA, +0x10, 0xF0, 0x23, 0x6B, 0x63, 0xF3, 0x19, 0x4B, +0x63, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0x43, 0xF3, +0x05, 0x4B, 0x64, 0xDA, 0x10, 0xF0, 0x23, 0x6B, +0x03, 0xF3, 0x11, 0x4B, 0x65, 0xDA, 0x10, 0xF0, +0x23, 0x6B, 0xA3, 0xF2, 0x11, 0x4B, 0x66, 0xDA, +0x10, 0xF0, 0x23, 0x6B, 0x83, 0xF2, 0x01, 0x4B, +0x67, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF2, 0x14, 0x4A, 0x67, 0x42, 0x09, 0x4B, +0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, +0xFB, 0x61, 0x42, 0xF4, 0x10, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0x68, 0x9B, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF5, 0x6C, 0x9B, 0x80, 0xA0, -0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0A, 0x72, -0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x04, 0x00, -0x90, 0x67, 0x80, 0x18, 0x59, 0x5C, 0xA0, 0xF1, -0x0A, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, +0x20, 0x6B, 0xC2, 0xF5, 0x6C, 0x9B, 0x6D, 0xE2, +0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, +0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF7, 0x48, 0x9A, 0x03, 0x6C, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x4C, 0x9A, +0x00, 0xF5, 0x62, 0x33, 0x8C, 0xEB, 0x40, 0x9A, +0x01, 0x73, 0x42, 0x32, 0x52, 0x32, 0x8C, 0xEA, +0x05, 0x60, 0x0B, 0x2B, 0x02, 0x5A, 0x50, 0x6C, +0x0D, 0x60, 0x03, 0x10, 0x02, 0x5A, 0x0A, 0x60, +0x28, 0x6C, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, +0x06, 0x10, 0x02, 0x5A, 0x28, 0x6C, 0x03, 0x60, +0x14, 0x6C, 0x01, 0x10, 0x50, 0x6C, 0x80, 0x18, +0xDA, 0x5E, 0x80, 0x18, 0x9C, 0x02, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF6, 0x7C, 0x9B, 0x00, 0x6A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, +0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x82, 0xF6, 0x78, 0x9B, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF6, 0x64, 0x9B, 0x40, 0xCB, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF6, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF7, +0x70, 0x9B, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF7, 0x08, 0x48, 0x00, 0x69, 0xA0, 0xF0, +0x24, 0xD8, 0x40, 0xF1, 0x37, 0xC0, 0x80, 0x18, +0xE0, 0x5B, 0xC0, 0xF0, 0x7C, 0xA0, 0x01, 0x6A, +0x6D, 0xEA, 0xC0, 0xF0, 0x5C, 0xC0, 0x80, 0x18, +0x4E, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6C, 0xE3, 0xF1, 0x34, 0xC0, 0xE9, 0xF2, +0x08, 0x4A, 0xE9, 0xF2, 0x18, 0x4C, 0x00, 0x6B, +0x60, 0xC2, 0x70, 0xC2, 0x01, 0x4A, 0x62, 0x67, +0x8E, 0xEB, 0xF9, 0x2B, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x23, 0xF3, 0x7D, 0xC2, +0x23, 0xF3, 0x7E, 0xC2, 0x23, 0xF3, 0x7F, 0xC2, +0x23, 0xF3, 0x7C, 0xC2, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x80, 0x18, 0xF7, 0x5B, +0x80, 0x18, 0x63, 0x5C, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x50, 0x9A, 0x40, 0xEA, 0x80, 0x18, +0x93, 0x40, 0x00, 0x18, 0xA2, 0xD3, 0x80, 0x18, +0x69, 0x00, 0x80, 0x18, 0x4D, 0x19, 0x00, 0x18, +0x38, 0xCC, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, +0x23, 0x6C, 0x01, 0x6F, 0x45, 0xF7, 0x15, 0x4C, +0x00, 0x6D, 0x64, 0x6E, 0xEB, 0xEF, 0x40, 0xEA, +0x00, 0x18, 0x55, 0xCC, 0x07, 0x97, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF7, 0x08, 0x4A, 0x00, 0x6B, 0x40, 0xF6, +0x7A, 0xC2, 0x40, 0xF6, 0x7B, 0xC2, 0x40, 0xF1, +0x77, 0xC2, 0x40, 0xF1, 0x78, 0xC2, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xA3, 0xF4, 0x6D, 0xA2, 0x0F, 0x23, 0xA3, 0xF4, +0x6C, 0xA2, 0x0C, 0x23, 0xA3, 0xF4, 0x72, 0xA2, +0x09, 0x23, 0xA3, 0xF4, 0x6E, 0xA2, 0x06, 0x23, +0xA3, 0xF4, 0x70, 0xA2, 0x03, 0x23, 0xA3, 0xF4, +0x4F, 0xA2, 0x1E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF7, 0x6C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x54, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF2, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF5, 0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x48, 0x98, 0x0A, 0xD4, 0x04, 0x05, +0xE0, 0xF1, 0x14, 0x6C, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x15, 0x6C, +0x30, 0xF0, 0x20, 0x69, 0x40, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0xA5, 0xF7, 0x08, 0x49, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x16, 0x6C, 0x41, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x17, 0x6C, +0x42, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x18, 0x6C, 0x43, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x19, 0x6C, +0x44, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0xBD, 0x67, 0x90, 0xA5, 0xA3, 0xF4, +0x50, 0xA1, 0x0F, 0x6B, 0x8C, 0xEB, 0x50, 0x32, +0x6D, 0xEA, 0x0A, 0x93, 0x04, 0x05, 0xE0, 0xF1, +0x1B, 0x6C, 0x45, 0xC3, 0xC0, 0xF3, 0x48, 0x98, +0x40, 0xEA, 0xA3, 0xF4, 0x52, 0xA1, 0xA3, 0xF4, +0x6D, 0xA1, 0x0A, 0x95, 0x4C, 0x32, 0x74, 0x33, +0x6D, 0xEA, 0xA3, 0xF4, 0x6C, 0xA1, 0x6D, 0xEA, +0x46, 0xC5, 0xA3, 0xF4, 0x4E, 0xA1, 0xA3, 0xF4, +0x6F, 0xA1, 0x48, 0x32, 0x78, 0x33, 0x6D, 0xEA, +0x33, 0x6B, 0x6D, 0xEA, 0x47, 0xC5, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x48, 0x98, +0x24, 0x67, 0x04, 0x05, 0xE0, 0xF1, 0x10, 0x6C, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, +0xE0, 0xF1, 0x11, 0x6C, 0x40, 0xC1, 0xC0, 0xF3, +0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, +0x04, 0x05, 0xE0, 0xF1, 0x12, 0x6C, 0x41, 0xC1, +0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x13, 0x6C, +0x42, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, +0x1C, 0x6C, 0x43, 0xC1, 0xC0, 0xF3, 0x48, 0x98, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, +0xE0, 0xF1, 0x1D, 0x6C, 0x44, 0xC1, 0xC0, 0xF3, +0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, +0x04, 0x05, 0xE0, 0xF1, 0x1E, 0x6C, 0x45, 0xC1, +0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0xE0, 0xF1, 0x1F, 0x6C, 0x04, 0x05, +0x46, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x7D, 0x67, 0x50, 0xA3, 0x47, 0xC1, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x04, 0x00, +0x90, 0x67, 0x80, 0x18, 0x85, 0x5C, 0xA0, 0xF1, +0x02, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0x68, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0x6C, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, -0xA0, 0xF1, 0x0F, 0x72, 0x80, 0xC3, 0x01, 0x48, -0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x40, 0x9A, 0x19, 0x6B, 0x60, 0xC2, 0x09, 0x97, -0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, 0xA3, 0xF4, -0x50, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, -0x07, 0x6A, 0x6C, 0xEA, 0xA3, 0xF4, 0x50, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, -0xA3, 0xF4, 0x51, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x56, 0x32, 0xA3, 0xF4, 0x51, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, -0xA3, 0xF4, 0x56, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, -0x50, 0xA4, 0x18, 0x6B, 0x6C, 0xEA, 0x4F, 0x32, -0xA3, 0xF4, 0x56, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0x85, 0xF7, 0x08, 0x48, 0xA3, 0xF4, 0x54, 0xA0, +0xA0, 0xF1, 0x0A, 0x72, 0x80, 0xC3, 0x01, 0x48, +0xE8, 0x61, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, +0xBC, 0x5C, 0xA0, 0xF1, 0x0A, 0x6A, 0x1F, 0xF7, +0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF5, 0x68, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF5, 0x6C, 0x9B, 0x80, 0xA0, +0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0F, 0x72, +0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF2, 0x50, 0x9A, 0x19, 0x6B, +0x60, 0xC2, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, +0x08, 0x48, 0xA3, 0xF4, 0x4C, 0xA0, 0x0E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, +0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, +0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, +0xA3, 0xF4, 0x4C, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF7, 0x08, 0x48, 0xA3, 0xF4, 0x4D, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1C, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x52, 0x32, -0xA3, 0xF4, 0x54, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0x85, 0xF7, 0x08, 0x48, 0xA3, 0xF4, 0x52, 0xA0, -0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x03, 0x6A, -0x6C, 0xEA, 0xA3, 0xF4, 0x52, 0xC0, 0x30, 0xF0, -0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, 0xA3, 0xF4, -0x53, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x30, 0x6B, 0x6C, 0xEA, 0x53, 0x32, 0xA3, 0xF4, -0x53, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x19, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x30, 0xF0, 0x20, 0x68, 0x85, 0xF7, 0x08, 0x48, -0x52, 0x32, 0xA3, 0xF4, 0x54, 0xC0, 0xC0, 0xF3, -0x48, 0x99, 0xE0, 0xF1, 0x1B, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, -0x6C, 0xEA, 0xA3, 0xF4, 0x50, 0xC0, 0x43, 0x67, -0x18, 0x6B, 0x4C, 0xEB, 0x6F, 0x33, 0xA3, 0xF4, -0x76, 0xC0, 0x4F, 0x72, 0x56, 0x33, 0xA3, 0xF4, -0x71, 0xC0, 0x0E, 0x61, 0xC0, 0xF3, 0x48, 0x99, -0xE0, 0xF1, 0x1A, 0x6C, 0x00, 0xF0, 0x11, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x51, 0xA3, 0x57, 0x72, -0x03, 0x61, 0x02, 0x6A, 0xA3, 0xF4, 0x56, 0xC0, +0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x56, 0x32, +0xA3, 0xF4, 0x4D, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF7, 0x08, 0x48, 0xA3, 0xF4, 0x52, 0xA0, +0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x9D, 0x67, 0x50, 0xA4, 0x18, 0x6B, +0x6C, 0xEA, 0x4F, 0x32, 0xA3, 0xF4, 0x52, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, +0xA3, 0xF4, 0x50, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1C, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x52, 0x32, 0xA3, 0xF4, 0x50, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, 0x08, 0x48, +0xA3, 0xF4, 0x4E, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, +0x70, 0xA4, 0x03, 0x6A, 0x6C, 0xEA, 0xA3, 0xF4, +0x4E, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF7, +0x08, 0x48, 0xA3, 0xF4, 0x4F, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, -0x7D, 0x67, 0x90, 0xA3, 0x0C, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x8C, 0xEB, 0x85, 0xF7, 0x08, 0x4A, -0x6B, 0x33, 0x9A, 0x34, 0xA3, 0xF4, 0x72, 0xC2, -0xA3, 0xF4, 0x93, 0xC2, 0x80, 0x18, 0xA8, 0x5C, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x40, 0x9A, -0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0xFD, 0x72, -0x02, 0x61, 0x80, 0x18, 0x83, 0x5C, 0x80, 0x18, -0x07, 0x5C, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x58, 0x9A, 0x01, 0x6B, 0x60, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x9C, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, +0x7D, 0x67, 0x50, 0xA3, 0x30, 0x6B, 0x6C, 0xEA, +0x53, 0x32, 0xA3, 0xF4, 0x4F, 0xC0, 0x07, 0x97, +0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x48, 0x99, +0xE0, 0xF1, 0x19, 0x6C, 0x04, 0x05, 0x40, 0xEA, +0x7D, 0x67, 0x50, 0xA3, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF7, 0x08, 0x48, 0x52, 0x32, 0xA3, 0xF4, +0x50, 0xC0, 0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, +0x1B, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, +0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, 0xA3, 0xF4, +0x4C, 0xC0, 0x43, 0x67, 0x18, 0x6B, 0x4C, 0xEB, +0x6F, 0x33, 0xA3, 0xF4, 0x72, 0xC0, 0x4F, 0x72, +0x56, 0x33, 0xA3, 0xF4, 0x6D, 0xC0, 0x0E, 0x61, +0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x1A, 0x6C, +0x00, 0xF0, 0x11, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x51, 0xA3, 0x57, 0x72, 0x03, 0x61, 0x02, 0x6A, +0xA3, 0xF4, 0x52, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, +0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x90, 0xA3, +0x0C, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xEB, +0xA5, 0xF7, 0x08, 0x4A, 0x6B, 0x33, 0x9A, 0x34, +0xA3, 0xF4, 0x6E, 0xC2, 0xA3, 0xF4, 0x8F, 0xC2, +0x80, 0x18, 0x0B, 0x5D, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF2, 0x50, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, +0x6C, 0xEA, 0xFD, 0x72, 0x02, 0x61, 0x80, 0x18, +0xE6, 0x5C, 0x80, 0x18, 0x6A, 0x5C, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x48, 0x9A, +0x01, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x8C, 0x9A, +0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF5, 0x94, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, -0x94, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x64, 0x9A, -0xFD, 0x6A, 0xFF, 0x6C, 0xA0, 0xA3, 0xAC, 0xEA, -0x40, 0xC3, 0x40, 0xA3, 0x01, 0x6D, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x42, 0xF7, 0x98, 0x9B, 0x00, 0x6D, 0x02, 0xF0, -0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF7, 0x78, 0x9B, 0x54, 0x34, -0x01, 0x4A, 0x6D, 0xE4, 0x80, 0x72, 0x04, 0x6C, -0x80, 0xC3, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x9C, 0x9B, -0x80, 0xF2, 0x48, 0x9A, 0x00, 0x6D, 0x00, 0xF4, -0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x52, 0x9B, 0x8D, 0xEA, -0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x68, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF2, 0x6C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0xB2, 0x9B, 0x8F, 0xEA, 0xAC, 0xEA, 0x52, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x48, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0xA2, 0xF4, 0x10, 0x4A, 0x89, 0xE2, -0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x48, 0x9B, 0xAD, 0xEA, 0x85, 0xF7, -0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, -0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF2, 0x70, 0x9B, 0x32, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x41, 0x9B, -0xAD, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x74, 0x9A, 0xFD, 0x6A, 0xFF, 0x6C, +0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x40, 0xA3, +0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x48, 0x9A, 0x42, 0xF7, 0x9C, 0x9B, +0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, 0x40, 0xEA, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF7, +0x7C, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x6D, 0xE4, +0x80, 0x72, 0x04, 0x6C, 0x80, 0xC3, 0xF5, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x82, 0xF7, 0x80, 0x9B, 0x80, 0xF2, 0x48, 0x9A, +0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x52, 0x9B, 0x8D, 0xEA, 0x52, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF2, 0x78, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x7C, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0xB2, 0x9B, 0x8F, 0xEA, +0xAC, 0xEA, 0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF2, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x58, 0x9A, 0x80, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x5E, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0xA2, 0xF4, +0x10, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x48, 0x9B, +0xAD, 0xEA, 0xA5, 0xF7, 0x48, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF2, 0x60, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x60, 0x9B, +0x32, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, +0x08, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x64, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, +0x68, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, +0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, +0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF2, 0x70, 0x9B, 0x10, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0x43, 0x9B, +0xAD, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0x78, 0x9B, 0x21, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x42, 0x9B, 0xAD, 0xEA, 0x42, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0x7C, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x60, 0x9B, -0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, -0x08, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x64, 0x9B, +0x20, 0x6B, 0x63, 0xF2, 0x78, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, +0x08, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x44, 0x9B, -0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x70, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0xC2, 0xF4, -0x04, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x88, 0x9B, -0xAF, 0xEA, 0x8C, 0xEA, 0x85, 0xF7, 0x48, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x70, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x50, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF2, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x54, 0x9A, 0x23, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x60, 0x9B, +0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x05, 0x5C, 0x63, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0xC2, 0xF4, 0x04, 0x4A, 0x89, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x88, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0xA5, 0xF7, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF2, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF2, 0x40, 0x9A, 0x35, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x81, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x5C, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF2, 0x44, 0x9A, 0xA0, 0xDA, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, -0x08, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, -0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x4C, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, -0x01, 0x74, 0x15, 0x60, 0x03, 0x24, 0x02, 0x74, -0x23, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x54, 0x9B, 0xAD, 0xEA, -0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF6, -0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x74, 0x9B, 0x21, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, 0x55, 0x9B, -0xAD, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x7C, 0x9B, 0x10, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x56, 0x9B, 0xAD, 0xEA, 0x56, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF2, 0x60, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x64, 0x9B, -0x40, 0xDB, 0x20, 0xE8, 0x01, 0x74, 0x16, 0x60, -0x03, 0x24, 0x02, 0x74, 0x25, 0x60, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x94, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x54, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x74, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x44, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0x95, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF2, 0x58, 0x9A, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, 0x08, 0x4B, -0x96, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x56, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x64, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x40, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF2, 0x90, 0x9C, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF7, -0x48, 0xDB, 0x85, 0xF7, 0x08, 0x4B, 0x41, 0xDB, -0x42, 0xDB, 0x43, 0xDB, 0x44, 0xDB, 0x40, 0xDC, +0xA5, 0xF7, 0x08, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF2, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x83, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x78, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, +0x54, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, 0x84, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0x44, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF2, 0x60, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x5C, 0x9A, +0xA0, 0xDA, 0x20, 0xE8, 0x01, 0x74, 0x15, 0x60, +0x03, 0x24, 0x02, 0x74, 0x23, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x54, 0x9B, 0xAD, 0xEA, 0x54, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF6, 0x68, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x64, 0x9B, +0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, +0x08, 0x4B, 0x55, 0x9B, 0xAD, 0xEA, 0x55, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x68, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, +0x6C, 0x9B, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0x56, 0x9B, 0xAD, 0xEA, +0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, +0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF2, 0x74, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x01, 0x74, 0x16, 0x60, 0x03, 0x24, 0x02, 0x74, +0x25, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0x94, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF2, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF6, 0x48, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0x95, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x55, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x48, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF7, 0x08, 0x4B, 0x96, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF2, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, +0x63, 0xF2, 0x80, 0x9C, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF7, 0x48, 0xDB, 0xA5, 0xF7, +0x08, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, +0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0x63, 0xF2, 0x88, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0x63, 0xF2, 0x90, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF2, 0x98, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, 0x80, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF2, 0x88, 0x9C, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF2, 0x90, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, 0x94, 0x9C, -0x54, 0xDB, 0x55, 0xDB, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF2, 0x9C, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF2, 0x84, 0x9C, -0x56, 0xDB, 0x40, 0xDC, 0x52, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0x6C, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF2, 0x70, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, +0x83, 0xF2, 0x84, 0x9C, 0x54, 0xDB, 0x55, 0xDB, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, +0x8C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0x83, 0xF2, 0x94, 0x9C, 0x56, 0xDB, 0x40, 0xDC, +0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, +0x7C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x60, 0x9B, +0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF2, 0x64, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x64, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF6, -0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF2, 0x60, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x68, 0x9B, -0x40, 0xDB, 0x20, 0xE8, 0x1F, 0xF4, 0x0E, 0x6E, -0x30, 0xF0, 0x20, 0x6B, 0xCB, 0xEE, 0x85, 0xF7, -0xC8, 0xDB, 0xE1, 0xF7, 0x1F, 0x6A, 0x85, 0xF7, -0x08, 0x4B, 0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6C, -0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, 0x84, 0xDB, +0x20, 0x6B, 0x62, 0xF6, 0x68, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x68, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, +0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF2, 0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x1F, 0xF4, 0x0E, 0x6E, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xEE, 0xA5, 0xF7, 0xC8, 0xDB, 0xE1, 0xF7, +0x1F, 0x6A, 0xA5, 0xF7, 0x08, 0x4B, 0x08, 0xF0, +0x00, 0x6D, 0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, +0xA1, 0xDB, 0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF2, 0x60, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF2, 0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x70, 0x9B, -0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x68, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, -0x80, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x00, 0x6B, 0x72, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, -0x60, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF6, 0x94, 0x9B, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0xC6, 0x6D, 0xFF, 0x6B, -0xB4, 0xDA, 0x95, 0xDA, 0x76, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF2, 0x54, 0x9A, 0xA0, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x5C, 0x9A, -0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x44, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xFC, 0x5D, -0x80, 0x18, 0x1B, 0x5E, 0x80, 0x18, 0x33, 0x5E, -0x80, 0x18, 0x4F, 0x5E, 0x80, 0x18, 0x49, 0x5E, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, +0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF2, 0x40, 0x9A, 0x80, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x00, 0x6B, 0x72, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x5C, 0x9A, 0x60, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x98, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0xC6, 0x6D, 0xFF, 0x6B, 0xB4, 0xDA, 0x95, 0xDA, +0x76, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x44, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF2, 0x4C, 0x9A, 0x80, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF2, 0x54, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x8B, 0x5E, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x08, 0x4B, 0xE2, 0xF5, 0x4C, 0xC3, -0x00, 0x6A, 0xE2, 0xF5, 0x4D, 0xC3, 0x80, 0x18, -0x2C, 0x5D, 0x80, 0x18, 0xC2, 0x5F, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x48, 0x9A, 0x3F, 0x6B, -0x60, 0xC2, 0x80, 0x18, 0x1D, 0x5D, 0x80, 0x18, -0x21, 0x5D, 0x80, 0x18, 0x34, 0x5D, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x40, 0xC7, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x50, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, -0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF6, 0x74, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x23, 0xF2, 0x88, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF5, 0x48, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, -0x40, 0xAA, 0x4C, 0xEB, 0x62, 0x33, 0x03, 0x6A, -0x72, 0x33, 0x4C, 0xEB, 0x02, 0x6A, 0x04, 0x23, -0x01, 0x73, 0x01, 0x6A, 0x01, 0x60, 0x03, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0x10, 0xF0, 0x23, 0x6A, -0x23, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x43, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xEF, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x26, 0xF6, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x43, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x06, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA5, 0xF6, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x28, 0xF7, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x29, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x42, 0xF4, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x82, 0xF5, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x05, 0xF5, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA4, 0xF6, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x04, 0xF7, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x06, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA4, 0xF0, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE4, 0xF2, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x87, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x27, 0xF3, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x25, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x82, 0xF0, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE8, 0xF3, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xC2, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0xCC, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xC3, 0xF5, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x03, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE3, 0xF5, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x4D, 0xF4, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x08, 0xF5, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x21, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x54, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x62, 0xF7, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x26, 0xF0, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x68, 0xF5, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF1, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF6, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF2, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF2, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x49, 0xF4, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF6, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x21, 0xF0, 0x00, 0x4B, 0x80, 0xF2, 0x08, 0x4A, -0x13, 0x10, 0x80, 0x9A, 0x10, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x82, 0xF6, 0xB8, 0x9C, 0x30, 0xF0, -0x20, 0x6E, 0x22, 0xF6, 0xC0, 0x9E, 0x80, 0x9D, -0xCD, 0xEC, 0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6C, -0xE2, 0xF5, 0x98, 0x9C, 0x40, 0xDC, 0x04, 0x4A, -0x43, 0xEB, 0xEB, 0x60, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xD5, 0x23, 0xF3, 0xBC, 0x9B, -0xFF, 0x6A, 0x40, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, -0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, -0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, 0x40, 0x9A, -0x00, 0xAA, 0x04, 0x92, 0x2C, 0xE8, 0x2A, 0xEA, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x44, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x04, 0x93, -0x2C, 0xEA, 0x6C, 0xE8, 0x07, 0xEA, 0x2C, 0xE8, -0x50, 0x67, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, -0x2C, 0xED, 0xFF, 0x68, 0x0C, 0xEC, 0x2C, 0xEE, -0x2A, 0xED, 0x05, 0xD4, 0x04, 0xD5, 0x06, 0xD6, -0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, -0x7C, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, -0x0C, 0xEA, 0x8C, 0xEA, 0x05, 0x94, 0x8D, 0xEA, -0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF1, 0x88, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF6, 0x80, 0x9C, -0x8D, 0xEA, 0xCD, 0xEA, 0x40, 0xDB, 0x34, 0x10, -0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x3E, 0x5F, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, -0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF3, 0x9C, 0x9B, 0x40, 0x6D, -0xAB, 0xED, 0x60, 0xA4, 0x2C, 0xEA, 0x0C, 0xEB, -0xAC, 0xEB, 0x05, 0x95, 0xAD, 0xEB, 0x0C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, -0x80, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x03, 0xF1, -0xA8, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0x02, 0xF6, 0xA0, 0x9D, -0xC4, 0xEA, 0x46, 0x67, 0xAD, 0xEB, 0x04, 0x95, -0x07, 0x96, 0xAC, 0xEA, 0xAF, 0xED, 0xCC, 0xED, -0xAD, 0xEA, 0x2C, 0xEA, 0x4D, 0xEB, 0x60, 0xDC, +0x80, 0x18, 0x5F, 0x5E, 0x80, 0x18, 0x7E, 0x5E, +0x80, 0x18, 0x96, 0x5E, 0x80, 0x18, 0xB2, 0x5E, +0x80, 0x18, 0xAC, 0x5E, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xEE, 0x5E, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF7, 0x08, 0x4B, +0xE2, 0xF5, 0x4C, 0xC3, 0x00, 0x6A, 0xE2, 0xF5, +0x4D, 0xC3, 0x80, 0x18, 0x8F, 0x5D, 0x80, 0x18, +0x25, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x58, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x80, 0x18, +0x80, 0x5D, 0x80, 0x18, 0x84, 0x5D, 0x80, 0x18, +0x97, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x4D, 0xC7, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x40, 0x9A, +0xE0, 0xF1, 0x1B, 0x6B, 0x6B, 0xEB, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x78, 0x9A, +0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x64, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF2, 0x98, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x48, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x4C, 0xEB, +0x62, 0x33, 0x03, 0x6A, 0x72, 0x33, 0x4C, 0xEB, +0x02, 0x6A, 0x04, 0x23, 0x01, 0x73, 0x01, 0x6A, +0x01, 0x60, 0x03, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x10, 0xF0, 0x23, 0x6A, 0x63, 0xF6, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x63, 0xF6, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x8F, 0xF3, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x50, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x86, 0xF6, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x48, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x43, 0xF1, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x46, 0xF6, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE5, 0xF6, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x50, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xC8, 0xF7, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xC9, 0xF0, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x82, 0xF4, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x58, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xC2, 0xF5, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x45, 0xF5, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE4, 0xF6, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x24, 0xF7, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x66, 0xF2, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE4, 0xF0, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x04, 0xF3, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x27, 0xF3, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xC7, 0xF3, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x45, 0xF0, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x82, 0xF0, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x58, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x88, 0xF4, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xC2, 0xF0, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x50, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0xEC, 0xF6, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x03, 0xF6, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x23, 0xF6, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x03, 0xF6, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x48, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x6D, 0xF4, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x40, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x68, 0xF6, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x50, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0xA1, 0xF6, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x54, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x23, 0xF0, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF0, 0x0C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0xF5, 0x1C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF1, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, 0x64, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF1, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, 0x0C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF4, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF0, 0x00, 0x4B, +0x80, 0xF2, 0x08, 0x4A, 0x13, 0x10, 0x80, 0x9A, +0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF6, +0xBC, 0x9C, 0x30, 0xF0, 0x20, 0x6E, 0x22, 0xF6, +0xC4, 0x9E, 0x80, 0x9D, 0xCD, 0xEC, 0x80, 0xDD, +0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF5, 0x9C, 0x9C, +0x40, 0xDC, 0x04, 0x4A, 0x43, 0xEB, 0xEB, 0x60, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, +0x2C, 0xED, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD5, +0x23, 0xF3, 0xAC, 0x9B, 0xFF, 0x6A, 0x40, 0x6E, +0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, +0xCC, 0xEB, 0x6D, 0xEC, 0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x10, 0xF0, -0x00, 0x6D, 0x80, 0x18, 0x3E, 0x5F, 0x05, 0x97, -0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, -0x31, 0x6A, 0x4F, 0xF6, 0x19, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x31, 0x10, 0x82, 0xF3, 0x08, 0x70, -0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x78, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x85, 0xF7, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, -0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x40, 0x9A, 0x03, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x18, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x40, 0xEA, 0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x4C, 0x9A, 0x60, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x2A, 0x80, 0x18, -0x90, 0x5F, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x40, 0x9A, 0x02, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF5, 0x70, 0x9B, 0x10, 0xF0, 0x31, 0x6A, -0x4F, 0xF6, 0x1A, 0x4A, 0x40, 0xDB, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF3, 0x64, 0x9A, 0x02, 0x6C, -0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0x9B, 0xFF, 0x6E, -0x41, 0x4E, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x68, 0x9A, 0xE0, 0xF3, -0x1E, 0x4C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xAB, -0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xCB, -0x02, 0x6C, 0x80, 0x18, 0x59, 0x5F, 0x80, 0xF3, -0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, 0x00, 0x6C, -0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0x59, 0x5F, -0x00, 0x6C, 0xC4, 0x67, 0x02, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0x59, 0x5F, 0x00, 0x6C, 0xC4, 0x67, -0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x59, 0x5F, -0x00, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0x59, 0x5F, 0x10, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0x59, 0x5F, -0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, 0x68, 0x9A, -0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xBA, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF3, 0x50, 0x9A, 0x00, 0xAA, 0x04, 0x92, +0x2C, 0xE8, 0x2A, 0xEA, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x04, 0x94, +0x40, 0xEA, 0x04, 0x93, 0x2C, 0xEA, 0x6C, 0xE8, +0x07, 0xEA, 0x2C, 0xE8, 0x50, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0xFF, 0x68, +0x0C, 0xEC, 0x2C, 0xEE, 0x2A, 0xED, 0x05, 0xD4, +0x04, 0xD5, 0x06, 0xD6, 0x1F, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF3, 0x6C, 0x9A, 0x40, 0x6C, +0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, 0x8C, 0xEA, +0x05, 0x94, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, 0x9C, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x02, 0xF6, 0x84, 0x9C, 0x8D, 0xEA, 0xCD, 0xEA, +0x40, 0xDB, 0x34, 0x10, 0x05, 0x94, 0xB1, 0x67, +0x80, 0x18, 0xA1, 0x5F, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x94, 0xA0, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, +0x8C, 0x9B, 0x40, 0x6D, 0xAB, 0xED, 0x60, 0xA4, +0x2C, 0xEA, 0x0C, 0xEB, 0xAC, 0xEB, 0x05, 0x95, +0xAD, 0xEB, 0x0C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF3, 0x90, 0x9B, 0x30, 0xF0, +0x20, 0x6D, 0xE3, 0xF0, 0xBC, 0x9D, 0x60, 0x9C, +0x06, 0x96, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x02, 0xF6, 0xA4, 0x9D, 0xC4, 0xEA, 0x46, 0x67, +0xAD, 0xEB, 0x04, 0x95, 0x07, 0x96, 0xAC, 0xEA, +0xAF, 0xED, 0xCC, 0xED, 0xAD, 0xEA, 0x2C, 0xEA, +0x4D, 0xEB, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, +0xA1, 0x5F, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, +0x70, 0x9B, 0x10, 0xF0, 0x31, 0x6A, 0xEF, 0xF7, +0x05, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x31, 0x10, +0x82, 0xF3, 0x08, 0x70, 0x1A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF6, 0x7C, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x08, 0x4A, +0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, +0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x44, 0x9A, 0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x18, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, +0x5C, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x04, 0x2A, 0x80, 0x18, 0xF3, 0x5F, 0x01, 0x72, +0xCB, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x44, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x70, 0x9B, +0x10, 0xF0, 0x31, 0x6A, 0xEF, 0xF7, 0x06, 0x4A, +0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, +0x74, 0x9A, 0x02, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, +0x40, 0x9B, 0xFF, 0x6E, 0x41, 0x4E, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, +0x6C, 0x9A, 0xE0, 0xF3, 0x1E, 0x4C, 0x30, 0xF0, +0x20, 0x68, 0x40, 0xAB, 0xAC, 0xEA, 0x8D, 0xEA, +0xAC, 0xEA, 0x40, 0xCB, 0x02, 0x6C, 0x80, 0x18, +0xBC, 0x5F, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, +0x40, 0xEA, 0x00, 0x6C, 0xC0, 0x6D, 0x02, 0x6E, +0x80, 0x18, 0xBC, 0x5F, 0x00, 0x6C, 0xC4, 0x67, +0x02, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0xBC, 0x5F, +0x00, 0x6C, 0xC4, 0x67, 0x0C, 0xF0, 0x00, 0x6D, +0x80, 0x18, 0xBC, 0x5F, 0x00, 0x6C, 0x01, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0xBC, 0x5F, +0x10, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x00, 0x6C, +0x80, 0x18, 0xBC, 0x5F, 0x80, 0xF3, 0x4C, 0x98, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF3, 0x78, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0xCF, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u32 array_length_mp_8822c_fw_ap = 130048; +u32 array_length_mp_8822c_fw_ap = 130632; #endif /*defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP))*/ #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) || (DM_ODM_SUPPORT_TYPE & (ODM_CE)) u8 array_mp_8822c_fw_nic[] = { -0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x00, -0x0D, 0x9C, 0xA8, 0x60, 0x00, 0x00, 0x00, 0x00, -0x09, 0x18, 0x0E, 0x2A, 0xE5, 0x07, 0x00, 0x00, +0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x11, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x14, 0x0F, 0x27, 0xE8, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, -0x00, 0x00, 0x20, 0x80, 0xC0, 0x46, 0x00, 0x00, +0x00, 0x00, 0x20, 0x80, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0xC8, 0xD2, 0x00, 0x00, 0x38, 0xE7, 0x01, 0x00, +0x60, 0xD9, 0x00, 0x00, 0xF0, 0xEE, 0x01, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, @@ -16784,7 +16857,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xED, 0x54, 0x03, 0x80, 0xFD, 0xFF, 0xFF, 0xFF, +0x59, 0x5A, 0x03, 0x80, 0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16793,7 +16866,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x2D, 0x54, 0x03, 0x80, +0x00, 0x00, 0x00, 0x00, 0x6D, 0x59, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16803,7 +16876,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xE9, 0x53, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, +0x29, 0x59, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16812,8 +16885,8 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xC8, 0x46, 0x20, 0x80, -0xD0, 0x46, 0x20, 0x80, 0xF5, 0x57, 0x03, 0x80, +0x00, 0x00, 0x00, 0x00, 0x10, 0x47, 0x20, 0x80, +0x18, 0x47, 0x20, 0x80, 0x61, 0x5D, 0x03, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16823,7 +16896,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xE0, 0x46, 0x20, 0x80, 0xD8, 0x46, 0x20, 0x80, +0x28, 0x47, 0x20, 0x80, 0x20, 0x47, 0x20, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x05, 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, @@ -16848,23 +16921,23 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xE9, 0x36, 0x03, 0x80, -0xF5, 0x36, 0x03, 0x80, 0xFB, 0x36, 0x03, 0x80, -0x01, 0x37, 0x03, 0x80, 0x09, 0x37, 0x03, 0x80, -0x3B, 0x37, 0x03, 0x80, 0x47, 0x37, 0x03, 0x80, -0x4D, 0x37, 0x03, 0x80, 0x53, 0x37, 0x03, 0x80, -0x5B, 0x37, 0x03, 0x80, 0x9D, 0x37, 0x03, 0x80, -0xA3, 0x37, 0x03, 0x80, 0xAF, 0x37, 0x03, 0x80, -0xBB, 0x37, 0x03, 0x80, 0xC7, 0x37, 0x03, 0x80, -0xEB, 0x37, 0x03, 0x80, 0xF1, 0x37, 0x03, 0x80, -0xFD, 0x37, 0x03, 0x80, 0x09, 0x38, 0x03, 0x80, -0x15, 0x38, 0x03, 0x80, 0xAD, 0x39, 0x03, 0x80, -0x97, 0x3A, 0x03, 0x80, 0x0F, 0x3A, 0x03, 0x80, -0x97, 0x3A, 0x03, 0x80, 0x53, 0x39, 0x03, 0x80, -0x97, 0x3A, 0x03, 0x80, 0x97, 0x3A, 0x03, 0x80, -0x97, 0x3A, 0x03, 0x80, 0x79, 0x3A, 0x03, 0x80, -0x97, 0x3A, 0x03, 0x80, 0x97, 0x3A, 0x03, 0x80, -0x97, 0x3A, 0x03, 0x80, 0xEB, 0x38, 0x03, 0x80, +0x00, 0x00, 0x00, 0x00, 0x31, 0x3B, 0x03, 0x80, +0x3D, 0x3B, 0x03, 0x80, 0x43, 0x3B, 0x03, 0x80, +0x49, 0x3B, 0x03, 0x80, 0x51, 0x3B, 0x03, 0x80, +0x83, 0x3B, 0x03, 0x80, 0x8F, 0x3B, 0x03, 0x80, +0x95, 0x3B, 0x03, 0x80, 0x9B, 0x3B, 0x03, 0x80, +0xA3, 0x3B, 0x03, 0x80, 0xE5, 0x3B, 0x03, 0x80, +0xEB, 0x3B, 0x03, 0x80, 0xF7, 0x3B, 0x03, 0x80, +0x03, 0x3C, 0x03, 0x80, 0x0F, 0x3C, 0x03, 0x80, +0x33, 0x3C, 0x03, 0x80, 0x39, 0x3C, 0x03, 0x80, +0x45, 0x3C, 0x03, 0x80, 0x51, 0x3C, 0x03, 0x80, +0x5D, 0x3C, 0x03, 0x80, 0x09, 0x3E, 0x03, 0x80, +0x3B, 0x3F, 0x03, 0x80, 0x6B, 0x3E, 0x03, 0x80, +0x3B, 0x3F, 0x03, 0x80, 0xAB, 0x3D, 0x03, 0x80, +0x3B, 0x3F, 0x03, 0x80, 0x3B, 0x3F, 0x03, 0x80, +0x3B, 0x3F, 0x03, 0x80, 0xD5, 0x3E, 0x03, 0x80, +0x3B, 0x3F, 0x03, 0x80, 0x3B, 0x3F, 0x03, 0x80, +0x3B, 0x3F, 0x03, 0x80, 0x43, 0x3D, 0x03, 0x80, 0x0C, 0x1D, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x90, 0x1C, 0x00, 0x00, 0xB0, 0x09, 0x00, 0x00, 0x20, 0x0A, 0x00, 0x00, 0x2C, 0x0A, 0x00, 0x00, @@ -16900,31 +16973,31 @@ u8 array_mp_8822c_fw_nic[] = { 0x50, 0x05, 0x51, 0x05, 0x78, 0x05, 0x79, 0x05, 0x7A, 0x05, 0x00, 0x00, 0xA8, 0x06, 0x10, 0x07, 0x00, 0x16, 0x04, 0x16, 0x08, 0x16, 0x00, 0x00, -0x07, 0x52, 0x03, 0x80, 0x01, 0x52, 0x03, 0x80, -0x0D, 0x52, 0x03, 0x80, 0x13, 0x52, 0x03, 0x80, -0x19, 0x52, 0x03, 0x80, 0x1F, 0x52, 0x03, 0x80, +0x47, 0x57, 0x03, 0x80, 0x41, 0x57, 0x03, 0x80, +0x4D, 0x57, 0x03, 0x80, 0x53, 0x57, 0x03, 0x80, +0x59, 0x57, 0x03, 0x80, 0x5F, 0x57, 0x03, 0x80, 0x09, 0x12, 0x1B, 0x24, 0x94, 0x0C, 0x94, 0x0E, -0x94, 0x18, 0x94, 0x1A, 0xBD, 0x19, 0x11, 0x80, -0x23, 0x1A, 0x11, 0x80, 0xC5, 0x19, 0x11, 0x80, -0xFD, 0x19, 0x11, 0x80, 0x23, 0x1A, 0x11, 0x80, -0x23, 0x1A, 0x11, 0x80, 0xCD, 0x19, 0x11, 0x80, -0xD5, 0x19, 0x11, 0x80, 0xDD, 0x19, 0x11, 0x80, -0xE5, 0x19, 0x11, 0x80, 0x23, 0x1A, 0x11, 0x80, -0xF5, 0x19, 0x11, 0x80, 0x0D, 0x1A, 0x11, 0x80, -0x15, 0x1A, 0x11, 0x80, 0xED, 0x19, 0x11, 0x80, -0x1D, 0x1A, 0x11, 0x80, 0x23, 0x1A, 0x11, 0x80, -0x23, 0x1A, 0x11, 0x80, 0x05, 0x1A, 0x11, 0x80, +0x94, 0x18, 0x94, 0x1A, 0xED, 0x19, 0x11, 0x80, +0x53, 0x1A, 0x11, 0x80, 0xF5, 0x19, 0x11, 0x80, +0x2D, 0x1A, 0x11, 0x80, 0x53, 0x1A, 0x11, 0x80, +0x53, 0x1A, 0x11, 0x80, 0xFD, 0x19, 0x11, 0x80, +0x05, 0x1A, 0x11, 0x80, 0x0D, 0x1A, 0x11, 0x80, +0x15, 0x1A, 0x11, 0x80, 0x53, 0x1A, 0x11, 0x80, +0x25, 0x1A, 0x11, 0x80, 0x3D, 0x1A, 0x11, 0x80, +0x45, 0x1A, 0x11, 0x80, 0x1D, 0x1A, 0x11, 0x80, +0x4D, 0x1A, 0x11, 0x80, 0x53, 0x1A, 0x11, 0x80, +0x53, 0x1A, 0x11, 0x80, 0x35, 0x1A, 0x11, 0x80, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x14, 0x1C, 0x24, 0x2C, 0x36, 0x40, 0x00, 0x00, 0x00, -0x77, 0x38, 0x11, 0x80, 0x8F, 0x38, 0x11, 0x80, -0x77, 0x38, 0x11, 0x80, 0x8F, 0x38, 0x11, 0x80, -0x77, 0x38, 0x11, 0x80, 0x8F, 0x38, 0x11, 0x80, -0x9B, 0x38, 0x11, 0x80, 0x9B, 0x38, 0x11, 0x80, -0x9B, 0x38, 0x11, 0x80, 0x77, 0x38, 0x11, 0x80, -0x8F, 0x38, 0x11, 0x80, 0x8F, 0x38, 0x11, 0x80, -0x77, 0x38, 0x11, 0x80, 0xA1, 0x38, 0x11, 0x80, -0xA1, 0x38, 0x11, 0x80, 0x07, 0x08, 0x09, 0x0A, +0x93, 0x39, 0x11, 0x80, 0xAF, 0x39, 0x11, 0x80, +0x93, 0x39, 0x11, 0x80, 0xAF, 0x39, 0x11, 0x80, +0x93, 0x39, 0x11, 0x80, 0xAF, 0x39, 0x11, 0x80, +0xBD, 0x39, 0x11, 0x80, 0xBD, 0x39, 0x11, 0x80, +0xBD, 0x39, 0x11, 0x80, 0x93, 0x39, 0x11, 0x80, +0xAF, 0x39, 0x11, 0x80, 0xAF, 0x39, 0x11, 0x80, +0x93, 0x39, 0x11, 0x80, 0xC5, 0x39, 0x11, 0x80, +0xC5, 0x39, 0x11, 0x80, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x00, 0x00, 0x12, 0x12, 0x14, 0x12, 0x0F, 0x0F, 0x0C, 0x0C, 0x09, 0x08, 0x08, 0x07, 0x0A, 0x0A, 0x09, 0x07, @@ -16948,16 +17021,16 @@ u8 array_mp_8822c_fw_nic[] = { 0x18, 0x16, 0x0D, 0x0D, 0x0A, 0x08, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x4A, 0x40, 0x36, 0x2C, 0x24, 0x1C, 0x14, 0x0C, -0x04, 0x00, 0x00, 0x00, 0x09, 0x52, 0x10, 0x80, -0xDD, 0x52, 0x10, 0x80, 0x19, 0x52, 0x10, 0x80, -0x4F, 0x52, 0x10, 0x80, 0x8B, 0x52, 0x10, 0x80, -0xDD, 0x52, 0x10, 0x80, 0x27, 0x53, 0x10, 0x80, -0x3F, 0x53, 0x10, 0x80, 0x4B, 0x53, 0x10, 0x80, -0x7D, 0x53, 0x10, 0x80, 0xAF, 0x53, 0x10, 0x80, -0xBF, 0x53, 0x10, 0x80, 0x09, 0x12, 0x1B, 0x24, -0x5B, 0x7D, 0x10, 0x80, 0xB7, 0x7D, 0x10, 0x80, -0xDB, 0x7D, 0x10, 0x80, 0x0B, 0x7E, 0x10, 0x80, -0x2F, 0x7E, 0x10, 0x80, 0x57, 0x7E, 0x10, 0x80, +0x04, 0x00, 0x00, 0x00, 0xA5, 0x51, 0x10, 0x80, +0x79, 0x52, 0x10, 0x80, 0xB5, 0x51, 0x10, 0x80, +0xEB, 0x51, 0x10, 0x80, 0x27, 0x52, 0x10, 0x80, +0x79, 0x52, 0x10, 0x80, 0xC3, 0x52, 0x10, 0x80, +0xDB, 0x52, 0x10, 0x80, 0xE7, 0x52, 0x10, 0x80, +0x19, 0x53, 0x10, 0x80, 0x4B, 0x53, 0x10, 0x80, +0x5B, 0x53, 0x10, 0x80, 0x09, 0x12, 0x1B, 0x24, +0xF7, 0x7C, 0x10, 0x80, 0x53, 0x7D, 0x10, 0x80, +0x77, 0x7D, 0x10, 0x80, 0xA7, 0x7D, 0x10, 0x80, +0xCB, 0x7D, 0x10, 0x80, 0xF3, 0x7D, 0x10, 0x80, 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, @@ -16981,10 +17054,10 @@ u8 array_mp_8822c_fw_nic[] = { 0x2A, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xC7, 0x68, 0x11, 0x80, 0x4B, 0x6A, 0x11, 0x80, -0x2D, 0x6B, 0x11, 0x80, 0x93, 0x6B, 0x11, 0x80, -0x93, 0x6B, 0x11, 0x80, 0xC7, 0x68, 0x11, 0x80, -0xC7, 0x68, 0x11, 0x80, 0x63, 0x6F, 0x6E, 0x66, +0x8F, 0x6A, 0x11, 0x80, 0x13, 0x6C, 0x11, 0x80, +0xF5, 0x6C, 0x11, 0x80, 0x5B, 0x6D, 0x11, 0x80, +0x5B, 0x6D, 0x11, 0x80, 0x8F, 0x6A, 0x11, 0x80, +0x8F, 0x6A, 0x11, 0x80, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x5F, 0x70, 0x68, 0x79, 0x64, 0x6D, 0x5F, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x5F, 0x69, 0x6E, 0x69, 0x74, 0x5F, @@ -17034,94 +17107,99 @@ u8 array_mp_8822c_fw_nic[] = { 0x6D, 0x5F, 0x63, 0x68, 0x6B, 0x5F, 0x70, 0x6B, 0x67, 0x5F, 0x73, 0x65, 0x74, 0x5F, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x5F, 0x38, 0x38, 0x32, 0x32, -0x63, 0x00, 0x00, 0x00, 0xED, 0x84, 0x11, 0x80, -0xE9, 0x84, 0x11, 0x80, 0xF3, 0x84, 0x11, 0x80, -0xF7, 0x84, 0x11, 0x80, 0xFB, 0x84, 0x11, 0x80, -0x01, 0x85, 0x11, 0x80, 0x09, 0x85, 0x11, 0x80, -0x33, 0x85, 0x11, 0x80, 0x61, 0x85, 0x11, 0x80, -0x67, 0x85, 0x11, 0x80, 0xB3, 0x85, 0x11, 0x80, -0xC1, 0x85, 0x11, 0x80, 0xD9, 0x85, 0x11, 0x80, -0xFB, 0x85, 0x11, 0x80, 0x29, 0xD9, 0x11, 0x80, -0x4B, 0xD9, 0x11, 0x80, 0x6D, 0xD9, 0x11, 0x80, -0x8F, 0xD9, 0x11, 0x80, 0xB3, 0xD9, 0x11, 0x80, -0xED, 0xD9, 0x11, 0x80, 0x11, 0xDA, 0x11, 0x80, -0x35, 0xDA, 0x11, 0x80, 0x59, 0xDA, 0x11, 0x80, -0x7F, 0xDA, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, +0x63, 0x00, 0x00, 0x00, 0x19, 0x8A, 0x11, 0x80, +0x15, 0x8A, 0x11, 0x80, 0x1F, 0x8A, 0x11, 0x80, +0x23, 0x8A, 0x11, 0x80, 0x27, 0x8A, 0x11, 0x80, +0x2D, 0x8A, 0x11, 0x80, 0x35, 0x8A, 0x11, 0x80, +0x5F, 0x8A, 0x11, 0x80, 0x8D, 0x8A, 0x11, 0x80, +0x93, 0x8A, 0x11, 0x80, 0xDF, 0x8A, 0x11, 0x80, +0xED, 0x8A, 0x11, 0x80, 0x05, 0x8B, 0x11, 0x80, +0x27, 0x8B, 0x11, 0x80, 0xCD, 0xE0, 0x11, 0x80, +0xEF, 0xE0, 0x11, 0x80, 0x11, 0xE1, 0x11, 0x80, +0x33, 0xE1, 0x11, 0x80, 0x57, 0xE1, 0x11, 0x80, +0x91, 0xE1, 0x11, 0x80, 0xB5, 0xE1, 0x11, 0x80, +0xD9, 0xE1, 0x11, 0x80, 0xFD, 0xE1, 0x11, 0x80, +0x23, 0xE2, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, 0x40, 0x00, 0x00, 0x00, 0xE0, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0x00, 0x00, -0x45, 0x93, 0x11, 0x80, 0x45, 0x93, 0x11, 0x80, -0x45, 0x93, 0x11, 0x80, 0x5F, 0x93, 0x11, 0x80, -0x45, 0x93, 0x11, 0x80, 0x45, 0x93, 0x11, 0x80, -0x45, 0x93, 0x11, 0x80, 0x41, 0x93, 0x11, 0x80, -0x41, 0x93, 0x11, 0x80, 0x41, 0x93, 0x11, 0x80, -0x41, 0x93, 0x11, 0x80, 0x41, 0x93, 0x11, 0x80, -0xCF, 0x93, 0x11, 0x80, 0xD9, 0x93, 0x11, 0x80, +0x71, 0x99, 0x11, 0x80, 0x71, 0x99, 0x11, 0x80, +0x71, 0x99, 0x11, 0x80, 0x8B, 0x99, 0x11, 0x80, +0x71, 0x99, 0x11, 0x80, 0x71, 0x99, 0x11, 0x80, +0x71, 0x99, 0x11, 0x80, 0x6D, 0x99, 0x11, 0x80, +0x6D, 0x99, 0x11, 0x80, 0x6D, 0x99, 0x11, 0x80, +0x6D, 0x99, 0x11, 0x80, 0x6D, 0x99, 0x11, 0x80, +0xFB, 0x99, 0x11, 0x80, 0x05, 0x9A, 0x11, 0x80, 0xA8, 0x06, 0x10, 0x07, 0x00, 0x16, 0x04, 0x16, 0x08, 0x16, 0x00, 0x00, 0x18, 0x06, 0x08, 0x07, 0x28, 0x16, 0x38, 0x16, 0x48, 0x16, 0x00, 0x00, -0x5F, 0x98, 0x03, 0x80, 0x6F, 0x98, 0x03, 0x80, -0x79, 0x98, 0x03, 0x80, 0x83, 0x98, 0x03, 0x80, -0x95, 0x98, 0x03, 0x80, 0xE5, 0xA7, 0x03, 0x80, -0xE1, 0xA7, 0x03, 0x80, 0xE5, 0xA7, 0x03, 0x80, -0xE1, 0xA7, 0x03, 0x80, 0x05, 0xA8, 0x03, 0x80, -0xE1, 0xA7, 0x03, 0x80, 0x05, 0xA8, 0x03, 0x80, -0xE1, 0xA7, 0x03, 0x80, 0x25, 0xA8, 0x03, 0x80, -0xE1, 0xA7, 0x03, 0x80, 0x25, 0xA8, 0x03, 0x80, -0xE1, 0xA7, 0x03, 0x80, 0x45, 0xA8, 0x03, 0x80, -0xE1, 0xA7, 0x03, 0x80, 0x45, 0xA8, 0x03, 0x80, -0x4D, 0xA9, 0x03, 0x80, 0x4D, 0xA9, 0x03, 0x80, -0x4D, 0xA9, 0x03, 0x80, 0x4D, 0xA9, 0x03, 0x80, -0x6D, 0xA9, 0x03, 0x80, 0x6D, 0xA9, 0x03, 0x80, -0x6D, 0xA9, 0x03, 0x80, 0x6D, 0xA9, 0x03, 0x80, -0x8D, 0xA9, 0x03, 0x80, 0x8D, 0xA9, 0x03, 0x80, -0x8D, 0xA9, 0x03, 0x80, 0x8D, 0xA9, 0x03, 0x80, -0xAD, 0xA9, 0x03, 0x80, 0xAD, 0xA9, 0x03, 0x80, -0xAD, 0xA9, 0x03, 0x80, 0xAD, 0xA9, 0x03, 0x80, +0xF3, 0x9E, 0x03, 0x80, 0x03, 0x9F, 0x03, 0x80, +0x0D, 0x9F, 0x03, 0x80, 0x17, 0x9F, 0x03, 0x80, +0x29, 0x9F, 0x03, 0x80, 0x79, 0xAE, 0x03, 0x80, +0x75, 0xAE, 0x03, 0x80, 0x79, 0xAE, 0x03, 0x80, +0x75, 0xAE, 0x03, 0x80, 0x99, 0xAE, 0x03, 0x80, +0x75, 0xAE, 0x03, 0x80, 0x99, 0xAE, 0x03, 0x80, +0x75, 0xAE, 0x03, 0x80, 0xB9, 0xAE, 0x03, 0x80, +0x75, 0xAE, 0x03, 0x80, 0xB9, 0xAE, 0x03, 0x80, +0x75, 0xAE, 0x03, 0x80, 0xD9, 0xAE, 0x03, 0x80, +0x75, 0xAE, 0x03, 0x80, 0xD9, 0xAE, 0x03, 0x80, +0xE1, 0xAF, 0x03, 0x80, 0xE1, 0xAF, 0x03, 0x80, +0xE1, 0xAF, 0x03, 0x80, 0xE1, 0xAF, 0x03, 0x80, +0x01, 0xB0, 0x03, 0x80, 0x01, 0xB0, 0x03, 0x80, +0x01, 0xB0, 0x03, 0x80, 0x01, 0xB0, 0x03, 0x80, +0x21, 0xB0, 0x03, 0x80, 0x21, 0xB0, 0x03, 0x80, +0x21, 0xB0, 0x03, 0x80, 0x21, 0xB0, 0x03, 0x80, +0x41, 0xB0, 0x03, 0x80, 0x41, 0xB0, 0x03, 0x80, +0x41, 0xB0, 0x03, 0x80, 0x41, 0xB0, 0x03, 0x80, 0x50, 0x05, 0x00, 0x00, 0x51, 0x05, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x79, 0x05, 0x00, 0x00, 0x7A, 0x05, 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x51, 0x05, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x79, 0x05, 0x00, 0x00, 0x7A, 0x05, 0x00, 0x00, -0x13, 0xC1, 0x11, 0x80, 0x63, 0xC1, 0x11, 0x80, -0xBB, 0xC1, 0x11, 0x80, 0x13, 0xC2, 0x11, 0x80, -0x79, 0xC2, 0x11, 0x80, 0xE3, 0xC7, 0x11, 0x80, -0x0B, 0xC8, 0x11, 0x80, 0x31, 0xC8, 0x11, 0x80, -0x57, 0xC8, 0x11, 0x80, 0x7D, 0xC8, 0x11, 0x80, -0x47, 0xBF, 0x03, 0x80, 0xA7, 0xBF, 0x03, 0x80, -0x3B, 0xC0, 0x03, 0x80, 0xD9, 0xC0, 0x03, 0x80, -0x7D, 0xC1, 0x03, 0x80, 0xFC, 0x10, 0x60, 0xB8, -0xFA, 0xFA, 0xFA, 0xFA, 0xCF, 0x01, 0x64, 0xB8, -0x8C, 0x04, 0x64, 0xB8, 0x90, 0x04, 0x64, 0xB8, -0x94, 0x04, 0x64, 0xB8, 0x98, 0x04, 0x64, 0xB8, -0x9C, 0x04, 0x64, 0xB8, 0xA0, 0x04, 0x64, 0xB8, -0x01, 0x06, 0x64, 0xB8, 0xDD, 0xCC, 0xBB, 0xAA, -0x00, 0x00, 0x68, 0xB8, 0x04, 0x00, 0x68, 0xB8, -0x77, 0x05, 0x64, 0xB8, 0x6C, 0x05, 0x64, 0xB8, -0x68, 0x05, 0x64, 0xB8, 0x54, 0x05, 0x64, 0xB8, -0x00, 0x00, 0x00, 0x80, 0x70, 0x06, 0x64, 0xB8, -0x78, 0x06, 0x64, 0xB8, 0x00, 0x00, 0x01, 0x80, -0x74, 0x06, 0x64, 0xB8, 0x98, 0x06, 0x64, 0xB8, -0x9C, 0x06, 0x64, 0xB8, 0x54, 0x06, 0x64, 0xB8, -0x58, 0x06, 0x64, 0xB8, 0x5C, 0x06, 0x64, 0xB8, -0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x60, 0xB8, -0x00, 0x00, 0x64, 0xB8, 0xBF, 0x01, 0x64, 0xB8, -0x89, 0x00, 0x60, 0xB8, 0x8A, 0x00, 0x60, 0xB8, -0x1A, 0x04, 0x64, 0xB8, 0x1B, 0x04, 0x64, 0xB8, -0xF4, 0x11, 0x64, 0xB8, 0x58, 0x05, 0x64, 0xB8, -0xE2, 0x10, 0x60, 0xB8, 0x30, 0x01, 0x64, 0xB8, -0x20, 0x01, 0x64, 0xB8, 0x20, 0x11, 0x64, 0xB8, -0x01, 0x8F, 0x00, 0xF0, 0x28, 0x11, 0x64, 0xB8, -0x30, 0x11, 0x64, 0xB8, 0x38, 0x11, 0x64, 0xB8, -0xE0, 0x11, 0x64, 0xB8, 0x50, 0x00, 0x60, 0xB8, -0x38, 0x01, 0x64, 0xB8, 0x18, 0x34, 0x00, 0xB8, -0x88, 0x10, 0x60, 0xB8, 0xFB, 0x11, 0x64, 0xB8, -0xFA, 0x11, 0x64, 0xB8, 0xF8, 0x11, 0x64, 0xB8, -0xC6, 0x04, 0x64, 0xB8, 0x00, 0x00, 0x66, 0xB8, -0x02, 0x00, 0x60, 0xB8, 0xBF, 0xD8, 0xF1, 0x02, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x41, 0xB7, 0xD8, 0xF1, 0x02, -0x28, 0x06, 0x64, 0xB8, 0x00, 0x00, 0x80, 0xC0, -0x2C, 0x06, 0x64, 0xB8, 0xFF, 0x00, 0xFF, 0x00, +0x69, 0xA8, 0x10, 0x80, 0x3F, 0xA9, 0x10, 0x80, +0x3F, 0xA9, 0x10, 0x80, 0x3F, 0xA9, 0x10, 0x80, +0xC3, 0xA8, 0x10, 0x80, 0xE3, 0xA8, 0x10, 0x80, +0x3F, 0xA9, 0x10, 0x80, 0xFB, 0xA8, 0x10, 0x80, +0x2B, 0xA9, 0x10, 0x80, 0xB3, 0xC8, 0x11, 0x80, +0x03, 0xC9, 0x11, 0x80, 0x5B, 0xC9, 0x11, 0x80, +0xB3, 0xC9, 0x11, 0x80, 0x19, 0xCA, 0x11, 0x80, +0x83, 0xCF, 0x11, 0x80, 0xAB, 0xCF, 0x11, 0x80, +0xD1, 0xCF, 0x11, 0x80, 0xF7, 0xCF, 0x11, 0x80, +0x1D, 0xD0, 0x11, 0x80, 0xDB, 0xC5, 0x03, 0x80, +0x3B, 0xC6, 0x03, 0x80, 0xCF, 0xC6, 0x03, 0x80, +0x6D, 0xC7, 0x03, 0x80, 0x11, 0xC8, 0x03, 0x80, +0xFC, 0x10, 0x60, 0xB8, 0xFA, 0xFA, 0xFA, 0xFA, +0xCF, 0x01, 0x64, 0xB8, 0x8C, 0x04, 0x64, 0xB8, +0x90, 0x04, 0x64, 0xB8, 0x94, 0x04, 0x64, 0xB8, +0x98, 0x04, 0x64, 0xB8, 0x9C, 0x04, 0x64, 0xB8, +0xA0, 0x04, 0x64, 0xB8, 0x01, 0x06, 0x64, 0xB8, +0xDD, 0xCC, 0xBB, 0xAA, 0x00, 0x00, 0x68, 0xB8, +0x04, 0x00, 0x68, 0xB8, 0x77, 0x05, 0x64, 0xB8, +0x6C, 0x05, 0x64, 0xB8, 0x68, 0x05, 0x64, 0xB8, +0x54, 0x05, 0x64, 0xB8, 0x00, 0x00, 0x00, 0x80, +0x70, 0x06, 0x64, 0xB8, 0x78, 0x06, 0x64, 0xB8, +0x00, 0x00, 0x01, 0x80, 0x74, 0x06, 0x64, 0xB8, +0x98, 0x06, 0x64, 0xB8, 0x9C, 0x06, 0x64, 0xB8, +0x54, 0x06, 0x64, 0xB8, 0x58, 0x06, 0x64, 0xB8, +0x5C, 0x06, 0x64, 0xB8, 0xFF, 0xFF, 0xFF, 0x8F, +0x00, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x64, 0xB8, +0xBF, 0x01, 0x64, 0xB8, 0x89, 0x00, 0x60, 0xB8, +0x8A, 0x00, 0x60, 0xB8, 0x1A, 0x04, 0x64, 0xB8, +0x1B, 0x04, 0x64, 0xB8, 0xF4, 0x11, 0x64, 0xB8, +0x58, 0x05, 0x64, 0xB8, 0xE2, 0x10, 0x60, 0xB8, +0x30, 0x01, 0x64, 0xB8, 0x20, 0x01, 0x64, 0xB8, +0x20, 0x11, 0x64, 0xB8, 0x01, 0x8F, 0x00, 0xF0, +0x28, 0x11, 0x64, 0xB8, 0x30, 0x11, 0x64, 0xB8, +0x38, 0x11, 0x64, 0xB8, 0xE0, 0x11, 0x64, 0xB8, +0x50, 0x00, 0x60, 0xB8, 0x38, 0x01, 0x64, 0xB8, +0x18, 0x34, 0x00, 0xB8, 0x88, 0x10, 0x60, 0xB8, +0xFB, 0x11, 0x64, 0xB8, 0xFA, 0x11, 0x64, 0xB8, +0xF8, 0x11, 0x64, 0xB8, 0xC6, 0x04, 0x64, 0xB8, +0x00, 0x00, 0x66, 0xB8, 0x02, 0x00, 0x60, 0xB8, +0xBF, 0xD8, 0xF1, 0x02, 0x00, 0x00, 0x00, 0x40, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, +0xB7, 0xD8, 0xF1, 0x02, 0x28, 0x06, 0x64, 0xB8, +0x00, 0x00, 0x80, 0xC0, 0x2C, 0x06, 0x64, 0xB8, +0xFF, 0x00, 0xFF, 0x00, 0xB1, 0x05, 0x64, 0xB8, 0x96, 0x02, 0x64, 0xB8, 0x84, 0x00, 0x60, 0xB8, 0x00, 0x01, 0x64, 0xB8, 0x2C, 0x02, 0x64, 0xB8, 0x44, 0x02, 0x64, 0xB8, 0x4C, 0x02, 0x64, 0xB8, @@ -17139,162 +17217,160 @@ u8 array_mp_8822c_fw_nic[] = { 0x8C, 0x00, 0x60, 0xB8, 0x86, 0x02, 0x64, 0xB8, 0xA2, 0x02, 0x64, 0xB8, 0xCC, 0x01, 0x64, 0xB8, 0x62, 0x06, 0x64, 0xB8, 0x0A, 0x06, 0x64, 0xB8, -0xB1, 0x05, 0x64, 0xB8, 0xCA, 0x01, 0x64, 0xB8, -0x5B, 0x01, 0x64, 0xB8, 0x3C, 0x01, 0x64, 0xB8, -0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, -0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, -0x22, 0x05, 0x64, 0xB8, 0x3F, 0x42, 0x0F, 0x00, -0xFE, 0x11, 0x64, 0xB8, 0xFC, 0x11, 0x64, 0xB8, -0xE0, 0x10, 0x60, 0xB8, 0x57, 0x01, 0x64, 0xB8, -0x31, 0x00, 0x78, 0xB8, 0x1D, 0x04, 0x64, 0xB8, -0x32, 0x00, 0x78, 0xB8, 0x33, 0x00, 0x78, 0xB8, -0x7A, 0x04, 0x64, 0xB8, 0x24, 0x04, 0x64, 0xB8, -0x56, 0x04, 0x64, 0xB8, 0x1C, 0x04, 0x64, 0xB8, -0x00, 0x00, 0x00, 0x10, 0x20, 0x04, 0x64, 0xB8, -0xFF, 0xFF, 0xEF, 0xFF, 0x00, 0x00, 0x10, 0x00, -0x86, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x02, -0xCB, 0x01, 0x64, 0xB8, 0x08, 0x00, 0x68, 0xB8, -0x0C, 0x00, 0x68, 0xB8, 0x87, 0x00, 0x60, 0xB8, -0x88, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x03, -0x00, 0x00, 0x00, 0x42, 0xE0, 0x00, 0x60, 0xB8, -0xFF, 0xFF, 0xFF, 0xFD, 0xE3, 0x00, 0x60, 0xB8, -0x00, 0x00, 0x00, 0x01, 0xE1, 0x00, 0x60, 0xB8, -0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, -0xCC, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0x03, 0x00, -0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFB, -0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0x1F, -0x04, 0x00, 0x60, 0xB8, 0x04, 0x00, 0x64, 0xB8, -0x08, 0x00, 0x60, 0xB8, 0x08, 0x00, 0x64, 0xB8, -0xE8, 0x12, 0x64, 0xB8, 0x24, 0x00, 0x60, 0xB8, -0xFF, 0xFF, 0xFF, 0xEF, 0xB0, 0x02, 0x64, 0xB8, -0x1C, 0x01, 0x64, 0xB8, 0x00, 0x0C, 0x01, 0x00, -0x00, 0x00, 0x70, 0xB8, 0x00, 0x00, 0x21, 0x80, -0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x12, 0x80, -0x00, 0x00, 0x10, 0x80, 0x00, 0x80, 0xFF, 0x01, -0x08, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, -0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x00, 0xE0, -0x00, 0x00, 0xFF, 0x0F, 0x21, 0x00, 0x00, 0xE0, -0x00, 0xDB, 0x66, 0xDB, 0x00, 0x00, 0x00, 0x08, -0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x06, -0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF0, -0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0x00, 0xC0, -0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x0F, -0xB4, 0x06, 0x64, 0xB8, 0x06, 0x00, 0x00, 0x89, -0x00, 0x0A, 0x08, 0x00, 0x01, 0x00, 0x66, 0xB8, -0x00, 0xFF, 0xFF, 0x00, 0xCD, 0x9B, 0x78, 0x56, -0x04, 0x1C, 0x66, 0xB8, 0x08, 0x1C, 0x66, 0xB8, -0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00, 0x60, 0xB8, -0x05, 0xEA, 0xEF, 0xFD, 0x06, 0xEA, 0xEF, 0xFD, -0x00, 0x1C, 0x66, 0xB8, 0xFF, 0xFF, 0x3F, 0x00, -0x04, 0xEA, 0xEF, 0xFD, 0x07, 0xEA, 0xEF, 0xFD, -0x08, 0xEA, 0xEF, 0xFD, 0x09, 0xEA, 0xEF, 0xFD, -0x0A, 0xEA, 0xEF, 0xFD, 0x00, 0x10, 0x66, 0xB8, -0x23, 0x04, 0x64, 0xB8, 0x30, 0x04, 0x64, 0xB8, -0x34, 0x04, 0x64, 0xB8, 0x04, 0x05, 0x07, 0x08, -0x00, 0x01, 0x01, 0x02, 0x2D, 0x04, 0x64, 0xB8, -0x06, 0x00, 0x66, 0xB8, 0x52, 0x04, 0x64, 0xB8, -0x53, 0x04, 0x64, 0xB8, 0x50, 0x04, 0x64, 0xB8, -0x51, 0x04, 0x64, 0xB8, 0x01, 0x1C, 0x66, 0xB8, -0x02, 0x1C, 0x66, 0xB8, 0x03, 0x1C, 0x66, 0xB8, -0x05, 0x1C, 0x66, 0xB8, 0x06, 0x1C, 0x66, 0xB8, -0x07, 0x1C, 0x66, 0xB8, 0x44, 0x00, 0x78, 0xB8, -0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x60, -0x52, 0x29, 0x46, 0xE2, 0x03, 0x29, 0x29, 0x00, -0x32, 0xFC, 0x18, 0xA2, 0x08, 0x00, 0x04, 0x05, -0x01, 0x00, 0x0F, 0x70, 0x01, 0x00, 0x1F, 0x70, -0x01, 0x00, 0x2F, 0x70, 0x01, 0x00, 0x3F, 0x70, -0x01, 0x00, 0x4F, 0x70, 0x01, 0x00, 0x5F, 0x70, -0x01, 0x00, 0x6F, 0x70, 0x01, 0x00, 0x7F, 0x70, -0x01, 0x00, 0x8F, 0x70, 0x01, 0x00, 0x9F, 0x70, -0x01, 0x00, 0xAF, 0x70, 0x01, 0x00, 0xBF, 0x70, -0x01, 0x00, 0xCF, 0x70, 0x01, 0x00, 0xDF, 0x70, -0x01, 0x00, 0xEF, 0x70, 0x01, 0x00, 0xFF, 0x70, -0x5E, 0x00, 0xD5, 0xF7, 0x41, 0x80, 0x0B, 0x70, -0x40, 0x00, 0x1F, 0x70, 0x40, 0x00, 0x2F, 0x70, -0x40, 0x00, 0x3F, 0x70, 0x40, 0x00, 0x4F, 0x70, -0x41, 0x80, 0x5B, 0x70, 0x40, 0x00, 0x6F, 0x70, -0x41, 0x40, 0x14, 0x70, 0x41, 0x40, 0x24, 0x70, -0x41, 0x40, 0x34, 0x70, 0x41, 0x40, 0x44, 0x70, -0x41, 0x40, 0x64, 0x70, 0x41, 0x80, 0x7B, 0x70, -0x41, 0x80, 0x8B, 0x70, 0x41, 0x80, 0x9B, 0x70, -0x41, 0x80, 0xAB, 0x70, 0x41, 0x80, 0xBB, 0x70, -0x41, 0x80, 0xCB, 0x70, 0x41, 0x80, 0xDB, 0x70, -0x41, 0x80, 0xEB, 0x70, 0x41, 0x80, 0xFB, 0x70, -0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x70, -0x00, 0x00, 0x03, 0x00, 0xEF, 0x00, 0x60, 0xB8, -0x03, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x60, -0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0x80, -0x00, 0x00, 0x0F, 0xC0, 0x08, 0x18, 0x07, 0x00, -0x08, 0x0C, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x00, -0x08, 0x00, 0x04, 0x00, 0xFF, 0x60, 0x0F, 0x00, -0x3F, 0xD8, 0x0F, 0x00, 0xFF, 0x60, 0x07, 0x00, -0x3F, 0xD8, 0x0D, 0x00, 0xFF, 0xDE, 0x07, 0x00, -0xBF, 0xF7, 0x0D, 0x00, 0x00, 0xC0, 0x0F, 0x00, -0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x01, 0x00, -0x5E, 0x00, 0xA1, 0xFF, 0x00, 0x00, 0xFF, 0x1F, -0xFF, 0x1F, 0x00, 0x04, 0x00, 0x00, 0xFF, 0x00, -0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x30, -0xF0, 0x00, 0x04, 0x00, 0xF0, 0x00, 0x04, 0x04, -0xF0, 0x00, 0x04, 0x08, 0xF0, 0x00, 0x04, 0x01, -0xF0, 0x00, 0x04, 0x05, 0xF0, 0x00, 0x04, 0x09, -0xF0, 0x00, 0x04, 0x02, 0xF0, 0x00, 0x04, 0x06, -0xF0, 0x00, 0x04, 0x0A, 0xF0, 0x00, 0x04, 0x03, -0xF0, 0x00, 0x04, 0x07, 0xF0, 0x00, 0x04, 0x0B, -0xF0, 0x00, 0x04, 0x0C, 0xF0, 0x00, 0x04, 0x10, -0xF0, 0x00, 0x04, 0x0D, 0xF0, 0x00, 0x04, 0x11, -0xF0, 0x00, 0x04, 0x0E, 0xF0, 0x00, 0x04, 0x12, -0xF0, 0x00, 0x04, 0x0F, 0xF0, 0x00, 0x04, 0x13, -0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, -0xF0, 0x00, 0x09, 0x00, 0x17, 0x00, 0x05, 0x00, -0x00, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x10, 0x1F, -0x00, 0x00, 0x0D, 0x1F, 0x0B, 0x17, 0x23, 0x3B, -0x47, 0x53, 0x5F, 0x77, 0x00, 0x48, 0x08, 0x00, -0x01, 0x48, 0x08, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, -0x80, 0x66, 0x06, 0x01, 0x10, 0x13, 0x00, 0x80, -0xDB, 0x00, 0x00, 0x81, 0xDB, 0x00, 0x00, 0x01, -0x00, 0x00, 0x02, 0x05, 0x0C, 0x19, 0x00, 0x82, -0x0C, 0x19, 0x00, 0x02, 0x14, 0xEE, 0x01, 0x83, -0x14, 0xEE, 0x01, 0x03, 0x08, 0x00, 0x02, 0x05, -0x3F, 0x00, 0x00, 0xC0, 0x14, 0x3E, 0x03, 0x00, -0xFF, 0xFF, 0xFF, 0x03, 0x12, 0x33, 0x03, 0x00, -0x11, 0x33, 0x03, 0x00, 0x12, 0x11, 0x01, 0x00, -0x31, 0xC9, 0x62, 0x49, 0x55, 0x24, 0x01, 0xFF, -0xC8, 0xFE, 0x18, 0x3E, 0xDE, 0xF0, 0xFA, 0x00, -0x44, 0x23, 0x12, 0x00, 0x00, 0xF0, 0x1F, 0x00, -0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, -0x3F, 0xFF, 0xFE, 0xDF, 0x00, 0xFF, 0x0F, 0x00, -0x01, 0x80, 0x03, 0x70, 0x01, 0x80, 0x53, 0x70, -0x01, 0x80, 0x73, 0x70, 0x01, 0x80, 0x83, 0x70, -0x01, 0x80, 0x93, 0x70, 0x01, 0x80, 0xA3, 0x70, -0x01, 0x80, 0xB3, 0x70, 0x01, 0x80, 0xC3, 0x70, -0x01, 0x80, 0xD3, 0x70, 0x01, 0x80, 0xE3, 0x70, -0x01, 0x80, 0xF3, 0x70, 0x01, 0x80, 0x0B, 0x70, -0x01, 0x80, 0x5B, 0x70, 0x01, 0x80, 0x7B, 0x70, -0x01, 0x80, 0x8B, 0x70, 0x01, 0x80, 0x9B, 0x70, -0x01, 0x80, 0xAB, 0x70, 0x01, 0x80, 0xBB, 0x70, -0x01, 0x80, 0xCB, 0x70, 0x01, 0x80, 0xDB, 0x70, -0x01, 0x80, 0xEB, 0x70, 0x01, 0x80, 0xFB, 0x70, -0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7F, -0x00, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x01, 0x00, -0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, -0x00, 0xFC, 0xF8, 0xFF, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x3F, 0xAA, 0x00, 0x60, 0xB8, -0xC4, 0x06, 0x64, 0xB8, 0xCC, 0x06, 0x64, 0xB8, -0x78, 0x07, 0x64, 0xB8, 0x5A, 0x5A, 0x5A, 0x5A, -0x70, 0x07, 0x64, 0xB8, 0x74, 0x07, 0x64, 0xB8, -0x5A, 0x5A, 0x5A, 0xAA, 0x1F, 0x04, 0x64, 0xB8, -0x65, 0x07, 0x64, 0xB8, 0x40, 0x00, 0x60, 0xB8, -0x68, 0x00, 0x60, 0xB8, 0x6E, 0x07, 0x64, 0xB8, -0x64, 0x07, 0x64, 0xB8, 0x23, 0x05, 0x64, 0xB8, -0x64, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0x40, 0xFF, -0xBF, 0xD4, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, -0x73, 0x00, 0x60, 0xB8, 0xBF, 0x27, 0x09, 0x00, -0x54, 0x04, 0x64, 0xB8, 0x20, 0x34, 0x00, 0xB8, -0x18, 0x00, 0x70, 0xB8, 0x0B, 0x00, 0x70, 0xB8, -0x02, 0x00, 0x70, 0xB8, 0x94, 0x02, 0x64, 0xB8, -0x97, 0x02, 0x64, 0xB8, 0x84, 0x02, 0x64, 0xB8, -0x50, 0x02, 0x64, 0xB8, 0x04, 0x00, 0x78, 0xB8, -0x48, 0x02, 0x64, 0xB8, 0x74, 0x00, 0x18, 0x2E, +0xCA, 0x01, 0x64, 0xB8, 0x5B, 0x01, 0x64, 0xB8, +0x3C, 0x01, 0x64, 0xB8, 0x00, 0x00, 0x1E, 0x00, +0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, +0x00, 0x00, 0x08, 0x00, 0x22, 0x05, 0x64, 0xB8, +0x3F, 0x42, 0x0F, 0x00, 0xFE, 0x11, 0x64, 0xB8, +0xFC, 0x11, 0x64, 0xB8, 0xE0, 0x10, 0x60, 0xB8, +0x57, 0x01, 0x64, 0xB8, 0x31, 0x00, 0x78, 0xB8, +0x1D, 0x04, 0x64, 0xB8, 0x32, 0x00, 0x78, 0xB8, +0x33, 0x00, 0x78, 0xB8, 0x7A, 0x04, 0x64, 0xB8, +0x24, 0x04, 0x64, 0xB8, 0x56, 0x04, 0x64, 0xB8, +0x1C, 0x04, 0x64, 0xB8, 0x00, 0x00, 0x00, 0x10, +0x20, 0x04, 0x64, 0xB8, 0xFF, 0xFF, 0xEF, 0xFF, +0x00, 0x00, 0x10, 0x00, 0x86, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x00, 0x02, 0xCB, 0x01, 0x64, 0xB8, +0x08, 0x00, 0x68, 0xB8, 0x0C, 0x00, 0x68, 0xB8, +0x87, 0x00, 0x60, 0xB8, 0x88, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x42, +0xE0, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFF, 0xFD, +0xE3, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x01, +0xE1, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x60, +0x00, 0x00, 0x00, 0x20, 0xCC, 0x00, 0x60, 0xB8, +0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, +0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xDF, +0xFF, 0xFF, 0xFF, 0x1F, 0x04, 0x00, 0x60, 0xB8, +0x04, 0x00, 0x64, 0xB8, 0x08, 0x00, 0x60, 0xB8, +0x08, 0x00, 0x64, 0xB8, 0xE8, 0x12, 0x64, 0xB8, +0x24, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFF, 0xEF, +0xB0, 0x02, 0x64, 0xB8, 0x1C, 0x01, 0x64, 0xB8, +0x00, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x70, 0xB8, +0x00, 0x00, 0x21, 0x80, 0x00, 0x00, 0x20, 0x80, +0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x10, 0x80, +0x00, 0x80, 0xFF, 0x01, 0x08, 0x00, 0x00, 0xF8, +0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0x00, +0x01, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xFF, 0x0F, +0x21, 0x00, 0x00, 0xE0, 0x00, 0xDB, 0x66, 0xDB, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFC, +0x00, 0x00, 0x00, 0x06, 0x80, 0xFF, 0x7F, 0x00, +0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFC, 0x07, +0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x0F, +0x00, 0x00, 0x00, 0x0F, 0xB4, 0x06, 0x64, 0xB8, +0x06, 0x00, 0x00, 0x89, 0x00, 0x0A, 0x08, 0x00, +0x01, 0x00, 0x66, 0xB8, 0x00, 0xFF, 0xFF, 0x00, +0xCD, 0x9B, 0x78, 0x56, 0x04, 0x1C, 0x66, 0xB8, +0x08, 0x1C, 0x66, 0xB8, 0xFF, 0xFF, 0xFF, 0x3F, +0x1F, 0x00, 0x60, 0xB8, 0x05, 0xEA, 0xEF, 0xFD, +0x06, 0xEA, 0xEF, 0xFD, 0x00, 0x1C, 0x66, 0xB8, +0xFF, 0xFF, 0x3F, 0x00, 0x04, 0xEA, 0xEF, 0xFD, +0x07, 0xEA, 0xEF, 0xFD, 0x08, 0xEA, 0xEF, 0xFD, +0x09, 0xEA, 0xEF, 0xFD, 0x0A, 0xEA, 0xEF, 0xFD, +0x00, 0x10, 0x66, 0xB8, 0x23, 0x04, 0x64, 0xB8, +0x30, 0x04, 0x64, 0xB8, 0x34, 0x04, 0x64, 0xB8, +0x04, 0x05, 0x07, 0x08, 0x00, 0x01, 0x01, 0x02, +0x2D, 0x04, 0x64, 0xB8, 0x06, 0x00, 0x66, 0xB8, +0x52, 0x04, 0x64, 0xB8, 0x53, 0x04, 0x64, 0xB8, +0x50, 0x04, 0x64, 0xB8, 0x51, 0x04, 0x64, 0xB8, +0x01, 0x1C, 0x66, 0xB8, 0x02, 0x1C, 0x66, 0xB8, +0x03, 0x1C, 0x66, 0xB8, 0x05, 0x1C, 0x66, 0xB8, +0x06, 0x1C, 0x66, 0xB8, 0x07, 0x1C, 0x66, 0xB8, +0x44, 0x00, 0x78, 0xB8, 0x01, 0x00, 0x00, 0xC0, +0x01, 0x00, 0x00, 0x60, 0x01, 0x00, 0x0F, 0x70, +0x01, 0x00, 0x1F, 0x70, 0x01, 0x00, 0x2F, 0x70, +0x01, 0x00, 0x3F, 0x70, 0x01, 0x00, 0x4F, 0x70, +0x01, 0x00, 0x5F, 0x70, 0x01, 0x00, 0x6F, 0x70, +0x01, 0x00, 0x7F, 0x70, 0x01, 0x00, 0x8F, 0x70, +0x01, 0x00, 0x9F, 0x70, 0x01, 0x00, 0xAF, 0x70, +0x01, 0x00, 0xBF, 0x70, 0x01, 0x00, 0xCF, 0x70, +0x01, 0x00, 0xDF, 0x70, 0x01, 0x00, 0xEF, 0x70, +0x01, 0x00, 0xFF, 0x70, 0x5E, 0x00, 0xD5, 0xF7, +0x41, 0x80, 0x0B, 0x70, 0x40, 0x00, 0x1F, 0x70, +0x40, 0x00, 0x2F, 0x70, 0x40, 0x00, 0x3F, 0x70, +0x40, 0x00, 0x4F, 0x70, 0x41, 0x80, 0x5B, 0x70, +0x40, 0x00, 0x6F, 0x70, 0x41, 0x40, 0x14, 0x70, +0x41, 0x40, 0x24, 0x70, 0x41, 0x40, 0x34, 0x70, +0x41, 0x40, 0x44, 0x70, 0x41, 0x40, 0x64, 0x70, +0x41, 0x80, 0x7B, 0x70, 0x41, 0x80, 0x8B, 0x70, +0x41, 0x80, 0x9B, 0x70, 0x41, 0x80, 0xAB, 0x70, +0x41, 0x80, 0xBB, 0x70, 0x41, 0x80, 0xCB, 0x70, +0x41, 0x80, 0xDB, 0x70, 0x41, 0x80, 0xEB, 0x70, +0x41, 0x80, 0xFB, 0x70, 0x50, 0x50, 0x50, 0x50, +0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03, 0x00, +0xEF, 0x00, 0x60, 0xB8, 0x03, 0x00, 0x00, 0xC0, +0x03, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xFF, +0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xC0, +0x08, 0x18, 0x07, 0x00, 0x08, 0x0C, 0x07, 0x00, +0x00, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x04, 0x00, +0xFF, 0x60, 0x0F, 0x00, 0x3F, 0xD8, 0x0F, 0x00, +0xFF, 0x60, 0x07, 0x00, 0x3F, 0xD8, 0x0D, 0x00, +0xFF, 0xDE, 0x07, 0x00, 0xBF, 0xF7, 0x0D, 0x00, +0x00, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x7C, 0x00, +0x00, 0xF0, 0x01, 0x00, 0x5E, 0x00, 0xA1, 0xFF, +0x00, 0x00, 0xFF, 0x1F, 0xFF, 0x1F, 0x00, 0x04, +0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0x80, 0x00, 0x00, 0x30, 0xF0, 0x00, 0x04, 0x00, +0xF0, 0x00, 0x04, 0x04, 0xF0, 0x00, 0x04, 0x08, +0xF0, 0x00, 0x04, 0x01, 0xF0, 0x00, 0x04, 0x05, +0xF0, 0x00, 0x04, 0x09, 0xF0, 0x00, 0x04, 0x02, +0xF0, 0x00, 0x04, 0x06, 0xF0, 0x00, 0x04, 0x0A, +0xF0, 0x00, 0x04, 0x03, 0xF0, 0x00, 0x04, 0x07, +0xF0, 0x00, 0x04, 0x0B, 0xF0, 0x00, 0x04, 0x0C, +0xF0, 0x00, 0x04, 0x10, 0xF0, 0x00, 0x04, 0x0D, +0xF0, 0x00, 0x04, 0x11, 0xF0, 0x00, 0x04, 0x0E, +0xF0, 0x00, 0x04, 0x12, 0xF0, 0x00, 0x04, 0x0F, +0xF0, 0x00, 0x04, 0x13, 0x00, 0x00, 0x06, 0x00, +0x01, 0x00, 0x06, 0x00, 0xF0, 0x00, 0x09, 0x00, +0x17, 0x00, 0x05, 0x00, 0x00, 0xC0, 0x07, 0x00, +0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x0D, 0x1F, +0x0B, 0x17, 0x23, 0x3B, 0x47, 0x53, 0x5F, 0x77, +0x00, 0x48, 0x08, 0x00, 0x01, 0x48, 0x08, 0x00, +0xFF, 0xFF, 0xFF, 0x0F, 0x80, 0x66, 0x06, 0x01, +0x10, 0x13, 0x00, 0x80, 0xDB, 0x00, 0x00, 0x81, +0xDB, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x05, +0x0C, 0x19, 0x00, 0x82, 0x0C, 0x19, 0x00, 0x02, +0x14, 0xEE, 0x01, 0x83, 0x14, 0xEE, 0x01, 0x03, +0x08, 0x00, 0x02, 0x05, 0x3F, 0x00, 0x00, 0xC0, +0x14, 0x3E, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0x03, +0x12, 0x33, 0x03, 0x00, 0x11, 0x33, 0x03, 0x00, +0x12, 0x11, 0x01, 0x00, 0x31, 0xC9, 0x62, 0x49, +0x55, 0x24, 0x01, 0xFF, 0xC8, 0xFE, 0x18, 0x3E, +0xDE, 0xF0, 0xFA, 0x00, 0x44, 0x23, 0x12, 0x00, +0x00, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x78, +0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0xDF, +0x00, 0xFF, 0x0F, 0x00, 0x01, 0x80, 0x03, 0x70, +0x01, 0x80, 0x53, 0x70, 0x01, 0x80, 0x73, 0x70, +0x01, 0x80, 0x83, 0x70, 0x01, 0x80, 0x93, 0x70, +0x01, 0x80, 0xA3, 0x70, 0x01, 0x80, 0xB3, 0x70, +0x01, 0x80, 0xC3, 0x70, 0x01, 0x80, 0xD3, 0x70, +0x01, 0x80, 0xE3, 0x70, 0x01, 0x80, 0xF3, 0x70, +0x01, 0x80, 0x0B, 0x70, 0x01, 0x80, 0x5B, 0x70, +0x01, 0x80, 0x7B, 0x70, 0x01, 0x80, 0x8B, 0x70, +0x01, 0x80, 0x9B, 0x70, 0x01, 0x80, 0xAB, 0x70, +0x01, 0x80, 0xBB, 0x70, 0x01, 0x80, 0xCB, 0x70, +0x01, 0x80, 0xDB, 0x70, 0x01, 0x80, 0xEB, 0x70, +0x01, 0x80, 0xFB, 0x70, 0x00, 0x00, 0x60, 0x00, +0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, +0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, +0x00, 0x00, 0x70, 0x00, 0x00, 0xFC, 0xF8, 0xFF, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3F, +0xAA, 0x00, 0x60, 0xB8, 0xC4, 0x06, 0x64, 0xB8, +0xCC, 0x06, 0x64, 0xB8, 0x78, 0x07, 0x64, 0xB8, +0x5A, 0x5A, 0x5A, 0x5A, 0x70, 0x07, 0x64, 0xB8, +0x74, 0x07, 0x64, 0xB8, 0x5A, 0x5A, 0x5A, 0xAA, +0x1F, 0x04, 0x64, 0xB8, 0x65, 0x07, 0x64, 0xB8, +0x40, 0x00, 0x60, 0xB8, 0x68, 0x00, 0x60, 0xB8, +0x6E, 0x07, 0x64, 0xB8, 0x64, 0x07, 0x64, 0xB8, +0x23, 0x05, 0x64, 0xB8, 0x64, 0x00, 0x60, 0xB8, +0xFF, 0xFF, 0x40, 0xFF, 0xBF, 0xD4, 0x01, 0x00, +0x04, 0x00, 0x04, 0x00, 0x73, 0x00, 0x60, 0xB8, +0xBF, 0x27, 0x09, 0x00, 0x54, 0x04, 0x64, 0xB8, +0x20, 0x34, 0x00, 0xB8, 0x18, 0x00, 0x70, 0xB8, +0x0B, 0x00, 0x70, 0xB8, 0x02, 0x00, 0x70, 0xB8, +0x94, 0x02, 0x64, 0xB8, 0x97, 0x02, 0x64, 0xB8, +0x84, 0x02, 0x64, 0xB8, 0x50, 0x02, 0x64, 0xB8, +0x04, 0x00, 0x78, 0xB8, 0x48, 0x02, 0x64, 0xB8, +0x00, 0x00, 0x07, 0x00, 0x74, 0x00, 0x18, 0x2E, 0x74, 0x00, 0x19, 0x2E, 0x01, 0x00, 0x60, 0xB8, 0x01, 0x00, 0x64, 0xB8, 0x34, 0x01, 0x64, 0xB8, 0x64, 0x05, 0x64, 0xB8, 0x60, 0x05, 0x64, 0xB8, @@ -17503,188 +17579,191 @@ u8 array_mp_8822c_fw_nic[] = { 0x52, 0x65, 0x73, 0x65, 0x74, 0x20, 0x54, 0x78, 0x52, 0x70, 0x74, 0x00, 0x49, 0x44, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x52, 0x5B, 0x25, 0x62, 0x78, -0x5D, 0x2C, 0x52, 0x61, 0x74, 0x65, 0x3D, 0x25, -0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, 0x78, 0x2C, -0x54, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x4F, 0x6B, -0x3A, 0x25, 0x62, 0x78, 0x2C, 0x44, 0x70, 0x3A, -0x25, 0x62, 0x78, 0x2C, 0x54, 0x72, 0x79, 0x3A, -0x25, 0x62, 0x78, 0x00, 0x44, 0x72, 0x76, 0x46, -0x69, 0x78, 0x52, 0x61, 0x74, 0x65, 0x00, 0x00, -0x52, 0x54, 0x53, 0x20, 0x44, 0x72, 0x6F, 0x70, -0x00, 0x00, 0x00, 0x00, 0x53, 0x55, 0x20, 0x52, -0x61, 0x74, 0x65, 0x20, 0x52, 0x70, 0x74, 0x3A, -0x25, 0x62, 0x78, 0x21, 0x3D, 0x43, 0x54, 0x52, -0x4C, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x44, 0x69, 0x73, 0x52, 0x41, 0x20, 0x49, 0x44, -0x25, 0x62, 0x78, 0x00, 0x31, 0x52, 0x70, 0x74, -0x25, 0x62, 0x78, 0x20, 0x50, 0x72, 0x74, 0x79, -0x25, 0x62, 0x78, 0x20, 0x43, 0x54, 0x72, 0x79, -0x25, 0x62, 0x78, 0x00, 0x54, 0x3D, 0x4F, 0x4B, -0x2B, 0x44, 0x52, 0x4F, 0x50, 0x00, 0x00, 0x00, -0x54, 0x21, 0x3D, 0x4F, 0x4B, 0x2B, 0x44, 0x52, -0x4F, 0x50, 0x00, 0x00, 0x5B, 0x44, 0x65, 0x63, -0x5D, 0x54, 0x5F, 0x61, 0x63, 0x63, 0x25, 0x62, -0x78, 0x2C, 0x74, 0x72, 0x79, 0x5F, 0x6E, 0x65, -0x73, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x44, 0x6F, 0x20, 0x52, 0x41, 0x20, 0x25, 0x62, -0x78, 0x2C, 0x20, 0x74, 0x68, 0x3D, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x54, 0x62, 0x74, 0x74, -0x52, 0x41, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, -0x50, 0x45, 0x52, 0x3A, 0x4E, 0x65, 0x77, 0x4D, -0x61, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x4F, -0x6C, 0x64, 0x4D, 0x61, 0x3A, 0x25, 0x62, 0x78, -0x2C, 0x20, 0x43, 0x75, 0x72, 0x3A, 0x25, 0x62, -0x78, 0x20, 0x00, 0x00, 0x4D, 0x61, 0x70, 0x3A, -0x25, 0x62, 0x78, 0x20, 0x44, 0x69, 0x66, 0x3A, -0x25, 0x62, 0x78, 0x20, 0x6F, 0x66, 0x74, 0x3A, -0x25, 0x62, 0x78, 0x00, 0x56, 0x41, 0x52, 0x3A, -0x20, 0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x44, 0x65, 0x63, 0x5F, -0x6F, 0x66, 0x73, 0x74, 0x7B, 0x50, 0x2C, 0x4E, -0x7D, 0x3A, 0x20, 0x25, 0x62, 0x78, 0x2C, 0x25, -0x62, 0x78, 0x00, 0x00, 0x30, 0x55, 0x70, 0x25, -0x62, 0x78, 0x2C, 0x44, 0x77, 0x6E, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x31, 0x55, 0x70, 0x25, -0x62, 0x78, 0x2C, 0x44, 0x77, 0x6E, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x53, 0x74, 0x61, 0x72, -0x74, 0x25, 0x62, 0x78, 0x3A, 0x25, 0x62, 0x78, +0x5D, 0x2C, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, +0x2D, 0x3E, 0x25, 0x62, 0x78, 0x2C, 0x42, 0x77, +0x3A, 0x25, 0x62, 0x78, 0x2C, 0x53, 0x63, 0x3A, +0x25, 0x62, 0x78, 0x2C, 0x54, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x4F, 0x6B, 0x3A, 0x25, 0x62, 0x78, +0x2C, 0x44, 0x70, 0x3A, 0x25, 0x62, 0x78, 0x2C, +0x54, 0x72, 0x79, 0x3A, 0x25, 0x62, 0x78, 0x00, +0x44, 0x72, 0x76, 0x46, 0x69, 0x78, 0x52, 0x61, +0x74, 0x65, 0x00, 0x00, 0x52, 0x54, 0x53, 0x20, +0x44, 0x72, 0x6F, 0x70, 0x00, 0x00, 0x00, 0x00, +0x53, 0x55, 0x20, 0x52, 0x61, 0x74, 0x65, 0x20, +0x52, 0x70, 0x74, 0x3A, 0x25, 0x62, 0x78, 0x21, +0x3D, 0x43, 0x54, 0x52, 0x4C, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x44, 0x69, 0x73, 0x52, +0x41, 0x20, 0x49, 0x44, 0x25, 0x62, 0x78, 0x00, +0x31, 0x52, 0x70, 0x74, 0x25, 0x62, 0x78, 0x20, +0x50, 0x72, 0x74, 0x79, 0x25, 0x62, 0x78, 0x20, +0x43, 0x54, 0x72, 0x79, 0x25, 0x62, 0x78, 0x00, +0x54, 0x3D, 0x4F, 0x4B, 0x2B, 0x44, 0x52, 0x4F, +0x50, 0x00, 0x00, 0x00, 0x54, 0x21, 0x3D, 0x4F, +0x4B, 0x2B, 0x44, 0x52, 0x4F, 0x50, 0x00, 0x00, +0x5B, 0x44, 0x65, 0x63, 0x5D, 0x54, 0x5F, 0x61, +0x63, 0x63, 0x25, 0x62, 0x78, 0x2C, 0x74, 0x72, +0x79, 0x5F, 0x6E, 0x65, 0x73, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x44, 0x6F, 0x20, 0x52, +0x41, 0x20, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x74, +0x68, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x54, 0x62, 0x74, 0x74, 0x52, 0x41, 0x20, 0x25, +0x62, 0x78, 0x00, 0x00, 0x50, 0x45, 0x52, 0x3A, +0x4E, 0x65, 0x77, 0x4D, 0x61, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x20, 0x4F, 0x6C, 0x64, 0x4D, 0x61, +0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x43, 0x75, +0x72, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x00, 0x00, +0x4D, 0x61, 0x70, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x44, 0x69, 0x66, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x6F, 0x66, 0x74, 0x3A, 0x25, 0x62, 0x78, 0x00, +0x56, 0x41, 0x52, 0x3A, 0x20, 0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x4D, 0x74, 0x42, 0x77, 0x20, 0x55, 0x70, 0x44, -0x77, 0x25, 0x62, 0x78, 0x20, 0x42, 0x57, 0x25, -0x62, 0x78, 0x20, 0x52, 0x74, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x48, 0x69, 0x74, 0x25, -0x62, 0x78, 0x20, 0x52, 0x74, 0x30, 0x3D, 0x25, -0x77, 0x78, 0x20, 0x52, 0x74, 0x31, 0x3D, 0x25, -0x77, 0x78, 0x00, 0x00, 0x6C, 0x6D, 0x74, 0x20, -0x52, 0x25, 0x62, 0x78, 0x20, 0x4C, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x52, 0x53, 0x53, 0x49, -0x20, 0x52, 0x6C, 0x73, 0x4C, 0x6D, 0x74, 0x00, -0x52, 0x53, 0x53, 0x49, 0x20, 0x49, 0x6E, 0x4C, -0x6D, 0x74, 0x00, 0x00, 0x4C, 0x6D, 0x74, 0x20, -0x31, 0x53, 0x53, 0x25, 0x62, 0x78, 0x20, 0x25, -0x62, 0x78, 0x2C, 0x32, 0x53, 0x53, 0x25, 0x62, -0x78, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x57, 0x72, 0x69, 0x74, 0x65, 0x45, 0x6E, 0x3A, -0x25, 0x62, 0x78, 0x20, 0x42, 0x46, 0x63, 0x74, -0x72, 0x6C, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, -0x52, 0x65, 0x63, 0x45, 0x6E, 0x3A, 0x25, 0x62, -0x78, 0x20, 0x42, 0x46, 0x63, 0x74, 0x72, 0x6C, -0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x53, 0x6E, 0x64, 0x44, 0x20, 0x4D, 0x3A, 0x25, -0x62, 0x78, 0x20, 0x52, 0x3A, 0x25, 0x62, 0x78, -0x20, 0x52, 0x25, 0x62, 0x78, 0x20, 0x43, 0x74, -0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x41, 0x70, 0x70, 0x6C, 0x56, 0x3A, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x4E, 0x61, 0x70, 0x70, -0x6C, 0x56, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, -0x53, 0x74, 0x6F, 0x72, 0x45, 0x6E, 0x3A, 0x25, -0x62, 0x78, 0x20, 0x42, 0x46, 0x63, 0x74, 0x72, -0x6C, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x52, 0x74, 0x25, 0x62, 0x78, 0x2C, 0x52, 0x74, -0x5F, 0x63, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x48, 0x52, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x4C, -0x52, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x54, 0x79, -0x70, 0x65, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, -0x46, 0x69, 0x78, 0x20, 0x69, 0x64, 0x3D, 0x25, -0x62, 0x78, 0x20, 0x42, 0x77, 0x3D, 0x25, 0x62, -0x78, 0x20, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x49, 0x44, 0x3D, 0x25, -0x62, 0x78, 0x2C, 0x42, 0x43, 0x6E, 0x74, 0x3D, -0x25, 0x62, 0x78, 0x2C, 0x42, 0x54, 0x3A, 0x25, -0x78, 0x2C, 0x42, 0x4F, 0x6B, 0x3A, 0x25, 0x78, -0x00, 0x00, 0x00, 0x00, 0x49, 0x44, 0x3D, 0x25, -0x62, 0x78, 0x2C, 0x42, 0x52, 0x61, 0x74, 0x65, -0x3D, 0x25, 0x62, 0x78, 0x2C, 0x42, 0x50, 0x45, -0x52, 0x3A, 0x25, 0x78, 0x00, 0x00, 0x00, 0x00, -0x52, 0x61, 0x4F, 0x63, 0x63, 0x4E, 0x75, 0x6D, -0x25, 0x62, 0x78, 0x00, 0x55, 0x70, 0x52, 0x61, -0x74, 0x65, 0x25, 0x62, 0x78, 0x20, 0x42, 0x57, -0x25, 0x62, 0x78, 0x20, 0x4D, 0x61, 0x78, 0x42, -0x57, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x31, 0x2E, 0x48, 0x2D, 0x65, 0x73, 0x74, 0x20, -0x25, 0x62, 0x78, 0x00, 0x32, 0x2E, 0x48, 0x2D, -0x65, 0x73, 0x74, 0x53, 0x20, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x33, 0x2E, 0x3E, 0x48, -0x2D, 0x65, 0x73, 0x74, 0x20, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x34, 0x2E, 0x4D, 0x2D, -0x42, 0x77, 0x55, 0x70, 0x20, 0x52, 0x61, 0x74, -0x65, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x20, 0x42, -0x77, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x35, 0x2E, 0x42, 0x77, 0x55, 0x70, 0x3D, 0x25, -0x62, 0x78, 0x00, 0x00, 0x36, 0x2E, 0x53, 0x47, -0x49, 0x5F, 0x55, 0x70, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x25, 0x62, 0x78, 0x3A, -0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x37, 0x2E, 0x52, 0x61, -0x74, 0x65, 0x55, 0x70, 0x25, 0x62, 0x78, 0x00, -0x30, 0x52, 0x74, 0x25, 0x62, 0x78, 0x20, 0x25, -0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, -0x31, 0x52, 0x74, 0x25, 0x62, 0x78, 0x20, 0x25, -0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, -0x4E, 0x6F, 0x20, 0x55, 0x70, 0x20, 0x52, 0x61, -0x74, 0x65, 0x00, 0x00, 0x32, 0x52, 0x74, 0x3A, -0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x20, -0x25, 0x62, 0x78, 0x2C, 0x54, 0x72, 0x79, 0x3D, -0x25, 0x62, 0x78, 0x2C, 0x4D, 0x2D, 0x54, 0x72, -0x79, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, -0x44, 0x6E, 0x52, 0x61, 0x74, 0x65, 0x25, 0x62, -0x78, 0x20, 0x42, 0x57, 0x25, 0x62, 0x78, 0x20, -0x4D, 0x61, 0x78, 0x42, 0x57, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x35, 0x2E, 0x42, 0x77, -0x44, 0x77, 0x6E, 0x3D, 0x25, 0x62, 0x78, 0x00, -0x36, 0x2E, 0x53, 0x47, 0x49, 0x5F, 0x44, 0x77, +0x44, 0x65, 0x63, 0x5F, 0x6F, 0x66, 0x73, 0x74, +0x7B, 0x50, 0x2C, 0x4E, 0x7D, 0x3A, 0x20, 0x25, +0x62, 0x78, 0x2C, 0x25, 0x62, 0x78, 0x00, 0x00, +0x30, 0x55, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x44, +0x77, 0x6E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x31, 0x55, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x44, +0x77, 0x6E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x53, 0x74, 0x61, 0x72, 0x74, 0x25, 0x62, 0x78, +0x3A, 0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x4D, 0x74, 0x42, 0x77, +0x20, 0x55, 0x70, 0x44, 0x77, 0x25, 0x62, 0x78, +0x20, 0x42, 0x57, 0x25, 0x62, 0x78, 0x20, 0x52, +0x74, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x48, 0x69, 0x74, 0x25, 0x62, 0x78, 0x20, 0x52, +0x74, 0x30, 0x3D, 0x25, 0x77, 0x78, 0x20, 0x52, +0x74, 0x31, 0x3D, 0x25, 0x77, 0x78, 0x00, 0x00, +0x6C, 0x6D, 0x74, 0x20, 0x52, 0x25, 0x62, 0x78, +0x20, 0x4C, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x52, 0x53, 0x53, 0x49, 0x20, 0x52, 0x6C, 0x73, +0x4C, 0x6D, 0x74, 0x00, 0x52, 0x53, 0x53, 0x49, +0x20, 0x49, 0x6E, 0x4C, 0x6D, 0x74, 0x00, 0x00, +0x4C, 0x6D, 0x74, 0x20, 0x31, 0x53, 0x53, 0x25, +0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x2C, 0x32, +0x53, 0x53, 0x25, 0x62, 0x78, 0x20, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x57, 0x72, 0x69, 0x74, +0x65, 0x45, 0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x42, 0x46, 0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x52, 0x65, 0x63, 0x45, +0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, 0x46, +0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x53, 0x6E, 0x64, 0x44, +0x20, 0x4D, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, +0x3A, 0x25, 0x62, 0x78, 0x20, 0x52, 0x25, 0x62, +0x78, 0x20, 0x43, 0x74, 0x3A, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x41, 0x70, 0x70, 0x6C, +0x56, 0x3A, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x4E, 0x61, 0x70, 0x70, 0x6C, 0x56, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x53, 0x74, 0x6F, 0x72, +0x45, 0x6E, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, +0x46, 0x63, 0x74, 0x72, 0x6C, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x52, 0x74, 0x25, 0x62, +0x78, 0x2C, 0x52, 0x74, 0x5F, 0x63, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x48, 0x52, 0x3A, 0x25, +0x62, 0x78, 0x2C, 0x4C, 0x52, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x25, +0x62, 0x78, 0x00, 0x00, 0x46, 0x69, 0x78, 0x20, +0x69, 0x64, 0x3D, 0x25, 0x62, 0x78, 0x20, 0x42, +0x77, 0x3D, 0x25, 0x62, 0x78, 0x20, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x37, 0x2E, 0x52, 0x61, 0x74, 0x65, 0x44, 0x77, -0x6E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x52, 0x74, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x25, -0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x2C, 0x54, -0x72, 0x79, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x4D, -0x2D, 0x54, 0x72, 0x79, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x54, 0x72, 0x79, 0x69, -0x6E, 0x67, 0x00, 0x00, 0x3E, 0x48, 0x2D, 0x65, -0x73, 0x74, 0x20, 0x52, 0x74, 0x00, 0x00, 0x00, -0x49, 0x44, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x4F, -0x6B, 0x25, 0x62, 0x78, 0x2C, 0x54, 0x6F, 0x74, -0x25, 0x62, 0x78, 0x2C, 0x44, 0x70, 0x25, 0x62, -0x78, 0x2C, 0x61, 0x2D, 0x4F, 0x4B, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x50, 0x45, 0x52, 0x25, -0x62, 0x78, 0x2C, 0x52, 0x44, 0x52, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x42, 0x77, 0x3D, 0x25, -0x62, 0x78, 0x2C, 0x42, 0x77, 0x32, 0x3D, 0x25, -0x62, 0x78, 0x2C, 0x52, 0x74, 0x3D, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x32, 0x55, 0x70, 0x25, -0x62, 0x78, 0x2C, 0x44, 0x77, 0x6E, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x46, 0x77, 0x20, 0x46, -0x69, 0x78, 0x20, 0x52, 0x61, 0x74, 0x65, 0x00, -0x46, 0x6F, 0x72, 0x63, 0x65, 0x52, 0x61, 0x74, -0x65, 0x44, 0x77, 0x00, 0x52, 0x74, 0x44, 0x77, -0x6E, 0x43, 0x6E, 0x74, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x52, 0x61, 0x74, 0x65, -0x20, 0x44, 0x6F, 0x77, 0x6E, 0x00, 0x00, 0x00, -0x52, 0x74, 0x55, 0x70, 0x43, 0x6E, 0x74, 0x3D, -0x25, 0x62, 0x78, 0x00, 0x52, 0x61, 0x74, 0x65, -0x20, 0x55, 0x50, 0x00, 0x52, 0x61, 0x74, 0x65, -0x20, 0x53, 0x74, 0x61, 0x79, 0x00, 0x00, 0x00, -0x49, 0x6E, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, +0x49, 0x44, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x42, +0x43, 0x6E, 0x74, 0x3D, 0x25, 0x62, 0x78, 0x2C, +0x42, 0x54, 0x3A, 0x25, 0x78, 0x2C, 0x42, 0x4F, +0x6B, 0x3A, 0x25, 0x78, 0x00, 0x00, 0x00, 0x00, +0x49, 0x44, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x42, +0x52, 0x61, 0x74, 0x65, 0x3D, 0x25, 0x62, 0x78, +0x2C, 0x42, 0x50, 0x45, 0x52, 0x3A, 0x25, 0x78, +0x00, 0x00, 0x00, 0x00, 0x52, 0x61, 0x4F, 0x63, +0x63, 0x4E, 0x75, 0x6D, 0x25, 0x62, 0x78, 0x00, +0x55, 0x70, 0x52, 0x61, 0x74, 0x65, 0x3A, 0x25, +0x62, 0x78, 0x20, 0x42, 0x57, 0x25, 0x62, 0x78, +0x20, 0x4D, 0x61, 0x78, 0x42, 0x57, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x31, 0x2E, 0x48, 0x2D, +0x65, 0x73, 0x74, 0x20, 0x25, 0x62, 0x78, 0x00, +0x32, 0x2E, 0x48, 0x2D, 0x65, 0x73, 0x74, 0x53, 0x20, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, -0x52, 0x61, 0x44, 0x77, 0x6E, 0x54, 0x72, 0x79, -0x20, 0x52, 0x61, 0x74, 0x65, 0x3D, 0x25, 0x62, -0x78, 0x2C, 0x42, 0x77, 0x25, 0x62, 0x78, 0x00, -0x54, 0x72, 0x79, 0x53, 0x75, 0x63, 0x63, 0x65, -0x73, 0x73, 0x00, 0x00, 0x54, 0x72, 0x79, 0x66, -0x61, 0x69, 0x6C, 0x00, 0x4D, 0x74, 0x54, 0x72, -0x79, 0x49, 0x64, 0x78, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x4D, 0x74, 0x54, 0x72, +0x33, 0x2E, 0x3E, 0x48, 0x2D, 0x65, 0x73, 0x74, +0x20, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x33, 0x5F, 0x35, 0x2E, 0x53, 0x47, 0x49, 0x5F, +0x55, 0x70, 0x3D, 0x25, 0x62, 0x78, 0x20, 0x42, +0x57, 0x25, 0x62, 0x78, 0x20, 0x00, 0x00, 0x00, +0x34, 0x2E, 0x4D, 0x2D, 0x42, 0x77, 0x55, 0x70, +0x20, 0x52, 0x61, 0x74, 0x65, 0x3A, 0x25, 0x62, +0x78, 0x2C, 0x20, 0x42, 0x77, 0x3A, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x35, 0x2E, 0x42, 0x77, +0x55, 0x70, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, +0x25, 0x62, 0x78, 0x3A, 0x25, 0x62, 0x78, 0x2D, +0x3E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x37, 0x2E, 0x52, 0x61, 0x74, 0x65, 0x55, 0x70, +0x25, 0x62, 0x78, 0x00, 0x30, 0x52, 0x74, 0x3A, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x00, 0x31, 0x52, 0x74, 0x3A, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x00, 0x4E, 0x6F, 0x20, 0x55, +0x70, 0x20, 0x52, 0x61, 0x74, 0x65, 0x00, 0x00, +0x32, 0x52, 0x74, 0x3A, 0x25, 0x62, 0x78, 0x20, +0x25, 0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x2C, +0x54, 0x72, 0x79, 0x3D, 0x25, 0x62, 0x78, 0x2C, +0x4D, 0x2D, 0x54, 0x72, 0x79, 0x3D, 0x25, 0x62, +0x78, 0x00, 0x00, 0x00, 0x44, 0x6E, 0x52, 0x61, +0x74, 0x65, 0x3A, 0x25, 0x62, 0x78, 0x20, 0x42, +0x57, 0x25, 0x62, 0x78, 0x20, 0x4D, 0x61, 0x78, +0x42, 0x57, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x34, 0x5F, 0x35, 0x2E, 0x53, 0x47, 0x49, 0x5F, +0x44, 0x77, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, +0x35, 0x2E, 0x42, 0x77, 0x44, 0x77, 0x6E, 0x3D, +0x25, 0x62, 0x78, 0x00, 0x37, 0x2E, 0x52, 0x61, +0x74, 0x65, 0x44, 0x77, 0x6E, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x52, 0x74, 0x3A, 0x25, +0x62, 0x78, 0x20, 0x25, 0x62, 0x78, 0x20, 0x25, +0x62, 0x78, 0x2C, 0x54, 0x72, 0x79, 0x3D, 0x25, +0x62, 0x78, 0x2C, 0x4D, 0x2D, 0x54, 0x72, 0x79, +0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x54, 0x72, 0x79, 0x69, 0x6E, 0x67, 0x00, 0x00, +0x3E, 0x48, 0x2D, 0x65, 0x73, 0x74, 0x20, 0x52, +0x74, 0x00, 0x00, 0x00, 0x49, 0x44, 0x3A, 0x25, +0x62, 0x78, 0x2C, 0x4F, 0x6B, 0x25, 0x62, 0x78, +0x2C, 0x54, 0x6F, 0x74, 0x25, 0x62, 0x78, 0x2C, +0x44, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x61, 0x2D, +0x4F, 0x4B, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x50, 0x45, 0x52, 0x25, 0x62, 0x78, 0x2C, 0x52, +0x44, 0x52, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x42, 0x77, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x42, +0x77, 0x32, 0x3D, 0x25, 0x62, 0x78, 0x2C, 0x52, +0x74, 0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x32, 0x55, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x44, +0x77, 0x6E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, +0x46, 0x77, 0x20, 0x46, 0x69, 0x78, 0x20, 0x52, +0x61, 0x74, 0x65, 0x00, 0x46, 0x6F, 0x72, 0x63, +0x65, 0x52, 0x61, 0x74, 0x65, 0x44, 0x77, 0x00, +0x52, 0x74, 0x44, 0x77, 0x6E, 0x43, 0x6E, 0x74, +0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x52, 0x61, 0x74, 0x65, 0x20, 0x44, 0x6F, 0x77, +0x6E, 0x00, 0x00, 0x00, 0x52, 0x74, 0x55, 0x70, +0x43, 0x6E, 0x74, 0x3D, 0x25, 0x62, 0x78, 0x00, +0x52, 0x61, 0x74, 0x65, 0x20, 0x55, 0x50, 0x00, +0x52, 0x61, 0x74, 0x65, 0x20, 0x53, 0x74, 0x61, +0x79, 0x00, 0x00, 0x00, 0x49, 0x6E, 0x69, 0x74, +0x52, 0x61, 0x74, 0x65, 0x20, 0x25, 0x62, 0x78, +0x00, 0x00, 0x00, 0x00, 0x52, 0x61, 0x44, 0x77, +0x6E, 0x54, 0x72, 0x79, 0x20, 0x52, 0x61, 0x74, +0x65, 0x3A, 0x25, 0x62, 0x78, 0x2C, 0x42, 0x77, +0x25, 0x62, 0x78, 0x00, 0x54, 0x72, 0x79, 0x53, +0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, +0x54, 0x72, 0x79, 0x66, 0x61, 0x69, 0x6C, 0x00, +0x4D, 0x74, 0x54, 0x72, 0x79, 0x49, 0x64, 0x78, +0x3D, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, 0x00, +0x25, 0x62, 0x78, 0x3A, 0x4D, 0x74, 0x54, 0x72, 0x79, 0x42, 0x57, 0x3D, 0x25, 0x62, 0x78, 0x00, -0x54, 0x72, 0x79, 0x20, 0x52, 0x74, 0x25, 0x62, -0x78, 0x00, 0x00, 0x00, 0x5B, 0x54, 0x72, 0x79, -0x20, 0x44, 0x65, 0x63, 0x5D, 0x00, 0x00, 0x00, -0x4F, 0x6B, 0x25, 0x62, 0x78, 0x2C, 0x54, 0x6F, -0x74, 0x25, 0x62, 0x78, 0x2C, 0x44, 0x70, 0x25, -0x62, 0x78, 0x2C, 0x61, 0x2D, 0x4F, 0x4B, 0x25, -0x62, 0x78, 0x00, 0x00, 0x42, 0x77, 0x25, 0x62, -0x78, 0x2C, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, -0x00, 0x00, 0x00, 0x00, 0x62, 0x77, 0x20, 0x25, +0x25, 0x62, 0x78, 0x3A, 0x4D, 0x74, 0x54, 0x72, +0x79, 0x52, 0x74, 0x3D, 0x25, 0x62, 0x78, 0x00, +0x5B, 0x54, 0x72, 0x79, 0x20, 0x44, 0x65, 0x63, +0x5D, 0x00, 0x00, 0x00, 0x4F, 0x6B, 0x25, 0x62, +0x78, 0x2C, 0x54, 0x6F, 0x74, 0x25, 0x62, 0x78, +0x2C, 0x44, 0x70, 0x25, 0x62, 0x78, 0x2C, 0x61, +0x2D, 0x4F, 0x4B, 0x25, 0x62, 0x78, 0x00, 0x00, +0x42, 0x77, 0x25, 0x62, 0x78, 0x2C, 0x52, 0x74, +0x25, 0x62, 0x78, 0x00, 0x62, 0x77, 0x20, 0x25, 0x77, 0x78, 0x2D, 0x3E, 0x25, 0x77, 0x78, 0x00, 0x50, 0x72, 0x6F, 0x62, 0x20, 0x25, 0x62, 0x78, 0x2D, 0x3E, 0x25, 0x62, 0x78, 0x00, 0x00, 0x00, @@ -18479,9 +18558,12 @@ u8 array_mp_8822c_fw_nic[] = { 0x1C, 0x28, 0x34, 0x3C, 0x06, 0x08, 0x0A, 0x0C, 0x12, 0x18, 0x1E, 0x2E, 0x36, 0x40, 0x0A, 0x0C, 0x0C, 0x12, 0x16, 0x1C, 0x20, 0x2E, 0x36, 0x40, -0x2C, 0x00, 0x04, 0x00, 0x2D, 0x00, 0x2C, 0x01, -0x2D, 0x01, 0x2C, 0x02, 0x2E, 0x01, 0xFF, 0x00, -0x2D, 0x02, 0xFF, 0x00, 0x36, 0x2D, 0xFF, 0x36, +0x2C, 0x00, 0x04, 0x00, 0xFF, 0x00, 0x36, 0x00, +0x2D, 0x00, 0x2C, 0x01, 0x37, 0x00, 0x2D, 0x01, +0x2C, 0x02, 0x38, 0x00, 0x2E, 0x01, 0x36, 0x01, +0x37, 0x01, 0x2D, 0x02, 0x36, 0x02, 0x38, 0x01, +0x2E, 0x02, 0xFF, 0x00, 0x37, 0x02, 0x2F, 0x02, +0xFF, 0x00, 0x00, 0x00, 0x36, 0x2D, 0xFF, 0x36, 0x2E, 0xFF, 0x37, 0x2F, 0xFF, 0x38, 0x30, 0xFF, 0x39, 0x31, 0xFF, 0x3A, 0x32, 0xFF, 0x3A, 0x33, 0xFF, 0x3A, 0x34, 0xFF, 0x3A, 0x35, 0xFF, 0x3B, @@ -18559,7 +18641,7 @@ u8 array_mp_8822c_fw_nic[] = { 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE0, -0x21, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xB5, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x21, 0x6C, 0x00, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x94, 0xB8, 0x00, 0x65, 0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, 0x94, 0xB9, @@ -18579,52 +18661,52 @@ u8 array_mp_8822c_fw_nic[] = { 0xC0, 0xF1, 0x14, 0x4C, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x41, 0xF7, 0x08, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, -0x30, 0xF0, 0x20, 0x6C, 0xC8, 0xF6, 0x08, 0x4C, -0x00, 0x6E, 0x30, 0xF0, 0x21, 0x6F, 0x15, 0xF3, -0x08, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, +0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF7, 0x10, 0x4C, +0x00, 0x6E, 0x30, 0xF0, 0x21, 0x6F, 0xD5, 0xF3, +0x10, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, 0x10, 0xF0, 0x23, 0x6C, 0xC0, 0xF0, 0x01, 0x4C, 0x00, 0xEC, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xC0, 0xF0, 0x01, 0x4A, 0x40, 0xDB, 0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, -0x80, 0x77, 0x80, 0x18, 0x80, 0x74, 0x80, 0x18, -0xA7, 0x74, 0x80, 0x18, 0x51, 0x77, 0x80, 0x18, -0xC1, 0x74, 0x80, 0x18, 0x48, 0x77, 0x00, 0x18, +0x69, 0x79, 0x80, 0x18, 0x68, 0x76, 0x80, 0x18, +0x8F, 0x76, 0x80, 0x18, 0x3A, 0x79, 0x80, 0x18, +0xA9, 0x76, 0x80, 0x18, 0x31, 0x79, 0x00, 0x18, 0x8B, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x41, 0xF7, 0x08, 0x4C, 0x1D, 0xF0, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x89, 0xF6, 0x48, 0xDB, 0x01, 0xF0, +0x20, 0x6B, 0xC9, 0xF6, 0x50, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF0, 0x10, 0x4C, 0x01, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x89, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE9, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0xE1, 0xF7, 0x00, 0x4C, 0x1D, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF6, 0x58, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF0, 0x0C, 0x4C, 0x01, 0x6D, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE9, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x81, 0xF7, 0x14, 0x4C, 0x1E, 0xF0, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, -0x4C, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF6, +0x54, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0x6D, 0x82, 0xF0, 0x04, 0x4C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA9, 0xF6, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE9, 0xF6, +0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF0, 0x00, 0x4C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA9, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6C, +0xE9, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x22, 0xF0, 0x14, 0x4C, 0x1E, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x89, 0xF6, 0x54, 0xDB, 0x80, 0x18, -0x78, 0x79, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x74, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, +0x20, 0x6B, 0xC9, 0xF6, 0x5C, 0xDB, 0x80, 0x18, +0x65, 0x7B, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, +0x7C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x58, 0x9A, 0x40, 0xEA, @@ -18752,37 +18834,37 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x65, 0x5F, 0x67, 0x5A, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x1C, 0x7D, 0x35, 0x5A, 0xB8, 0x00, 0x65, 0x00, 0xEA, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x68, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x6C, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, 0x80, 0xA3, 0x10, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0xE2, 0xF1, 0x10, 0x4A, 0xE2, 0xF1, 0x10, 0x6B, 0x31, 0x10, 0x7F, 0x4A, 0x09, 0x4A, 0x88, 0x6B, 0x15, 0x10, 0x1F, 0xF7, 0x00, 0x6C, 0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF1, 0x84, 0x9C, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF1, 0x88, 0x9C, 0xC0, 0xA5, +0x63, 0xF1, 0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x63, 0xF1, 0x8C, 0x9C, 0xC0, 0xA5, 0x91, 0xE3, 0x01, 0x4D, 0xC0, 0xC4, 0x01, 0x4B, 0x4A, 0xEB, 0xE9, 0x61, 0x20, 0xE8, 0x1F, 0xF7, 0x00, 0x6C, 0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF1, 0x84, 0x9C, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF1, 0x88, 0x9C, 0xC0, 0xA5, +0x63, 0xF1, 0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x63, 0xF1, 0x8C, 0x9C, 0xC0, 0xA5, 0x91, 0xE3, 0x01, 0x4D, 0xC0, 0xC4, 0x01, 0x4B, 0x4A, 0xEB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x58, 0x9A, 0x64, 0x9C, 0xFF, 0x68, 0xAC, 0xE8, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x5C, 0x9A, 0x64, 0x9C, 0xFF, 0x68, 0xAC, 0xE8, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xF0, 0x20, 0x6D, 0xA5, 0xF4, 0x0C, 0x4C, -0xE2, 0xF5, 0x18, 0x4D, 0x80, 0x18, 0x48, 0x43, +0x30, 0xF0, 0x20, 0x6D, 0xC5, 0xF4, 0x1C, 0x4C, +0xE2, 0xF5, 0x18, 0x4D, 0x80, 0x18, 0x52, 0x43, 0x01, 0x70, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF2, 0xA4, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, +0xE3, 0xF2, 0xA8, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, 0x15, 0x10, 0x02, 0x70, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF2, 0xA4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0xA8, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, @@ -18790,59 +18872,59 @@ u8 array_mp_8822c_fw_nic[] = { 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6C, -0x2B, 0xF1, 0x18, 0x48, 0x0B, 0xF2, 0x16, 0x4C, +0x8B, 0xF1, 0x00, 0x48, 0x4B, 0xF2, 0x1E, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0xC0, 0xF0, 0x9E, 0xA0, -0x00, 0x18, 0x8F, 0xDD, 0xA4, 0xF5, 0x58, 0xA0, +0x00, 0x18, 0x0C, 0xDF, 0x24, 0xF6, 0x50, 0xA0, 0x1F, 0x6B, 0x01, 0x6C, 0x4A, 0x32, 0x6C, 0xEA, 0xC0, 0xF0, 0x7E, 0xA0, 0x47, 0xEB, 0x8C, 0xEA, -0x03, 0x22, 0xA4, 0xF5, 0x79, 0xC0, 0x04, 0x10, -0x01, 0x6A, 0x4B, 0xEA, 0xA4, 0xF5, 0x59, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xA4, 0xF5, 0x78, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x24, 0xF6, 0x71, 0xC0, 0x04, 0x10, +0x01, 0x6A, 0x4B, 0xEA, 0x24, 0xF6, 0x51, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x24, 0xF6, 0x70, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x1A, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xA4, 0xF5, 0x58, 0xC0, 0x00, 0x18, 0x10, 0xE6, -0x04, 0xD2, 0x04, 0x93, 0xA4, 0xF5, 0x5C, 0x98, +0x24, 0xF6, 0x50, 0xC0, 0x00, 0x18, 0xB5, 0xE7, +0x04, 0xD2, 0x04, 0x93, 0x24, 0xF6, 0x54, 0x98, 0x6E, 0xEA, 0x03, 0x22, 0x04, 0x94, 0x00, 0x18, -0x31, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA4, 0xF5, 0x98, 0xA2, 0x02, 0x6B, -0x8D, 0xEB, 0xA4, 0xF5, 0x78, 0xC2, 0x07, 0x97, +0xD6, 0xE7, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x24, 0xF6, 0x90, 0xA2, 0x02, 0x6B, +0x8D, 0xEB, 0x24, 0xF6, 0x70, 0xC2, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, -0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0x86, 0xCF, -0x90, 0x67, 0x00, 0x18, 0xDB, 0xE7, 0x01, 0x6C, -0x00, 0x18, 0xB3, 0xC6, 0x30, 0xF0, 0x20, 0x6A, -0x4B, 0xF2, 0x6E, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, -0x0E, 0xEA, 0x02, 0x2A, 0x80, 0x18, 0xB6, 0x5F, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0xFF, 0xCE, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0xBC, 0xD0, +0x90, 0x67, 0x00, 0x18, 0x80, 0xE9, 0x01, 0x6C, +0x00, 0x18, 0xED, 0xC6, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF2, 0x76, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, +0x0E, 0xEA, 0x02, 0x2A, 0x80, 0x18, 0xF7, 0x60, +0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x32, 0xD0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x44, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, 0x4C, 0xA2, 0x10, 0x6B, 0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF2, 0x44, 0xA2, 0x01, 0x5A, 0x58, 0x67, +0x09, 0xF3, 0x4C, 0xA2, 0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF2, 0x47, 0xA2, 0x01, 0x6B, 0x6E, 0xEA, +0x09, 0xF3, 0x4F, 0xA2, 0x01, 0x6B, 0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x40, 0xC4, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF1, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF2, 0x1C, 0x4B, 0x00, 0x6C, 0x40, 0xA3, 0x0B, 0x2A, 0x05, 0x6B, -0x78, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF1, -0x0C, 0x4A, 0x01, 0x6B, 0x12, 0xEC, 0x49, 0xE4, +0x78, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF2, +0x1C, 0x4A, 0x01, 0x6B, 0x12, 0xEC, 0x49, 0xE4, 0x60, 0xC2, 0x20, 0xE8, 0x01, 0x4C, 0x08, 0x74, 0x05, 0x4B, 0xEF, 0x61, 0x00, 0x6A, 0x20, 0xE8, 0x06, 0x5C, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0x86, 0xF1, 0x08, 0x4A, 0x49, 0xE4, +0x88, 0x34, 0xA6, 0xF1, 0x18, 0x4A, 0x49, 0xE4, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF1, 0x08, 0x4A, 0x70, 0x9A, 0x01, 0x4B, +0xA6, 0xF1, 0x18, 0x4A, 0x70, 0x9A, 0x01, 0x4B, 0x70, 0xDA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x80, 0xF2, 0x48, 0x9A, 0x86, 0xF1, -0x08, 0x48, 0x90, 0x67, 0x64, 0x6E, 0x00, 0x6D, +0x20, 0x68, 0x80, 0xF2, 0x48, 0x9A, 0xA6, 0xF1, +0x18, 0x48, 0x90, 0x67, 0x64, 0x6E, 0x00, 0x6D, 0x40, 0xEA, 0x01, 0x6A, 0x10, 0xF0, 0x32, 0x6D, -0x56, 0xC8, 0x00, 0x6C, 0x30, 0x6A, 0xF4, 0xF0, -0x1D, 0x4D, 0x57, 0xC8, 0x00, 0x18, 0x1A, 0xC2, +0x56, 0xC8, 0x00, 0x6C, 0x30, 0x6A, 0x34, 0xF7, +0x09, 0x4D, 0x57, 0xC8, 0x00, 0x18, 0x1A, 0xC2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x10, 0xF0, 0x32, 0x6D, -0x01, 0x6C, 0x14, 0xF4, 0x1D, 0x4D, 0x00, 0x18, +0x01, 0x6C, 0x55, 0xF2, 0x09, 0x4D, 0x00, 0x18, 0x1A, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x44, 0x9A, 0x42, 0xF1, 0x18, 0x6C, @@ -18850,60 +18932,60 @@ u8 array_mp_8822c_fw_nic[] = { 0x03, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x17, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x54, 0x9A, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF0, 0x5C, 0x9A, 0x00, 0x6B, +0xE3, 0xF0, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF0, 0x58, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF1, 0x40, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xEF, 0x9A, -0xE3, 0xF0, 0x60, 0x9B, 0x8C, 0x9A, 0xCE, 0x9A, +0x03, 0xF1, 0x64, 0x9B, 0x8C, 0x9A, 0xCE, 0x9A, 0xAD, 0x9A, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x64, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x68, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x6C, 0x9B, +0x03, 0xF1, 0x68, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF1, 0x6C, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x70, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0x9A, -0xE3, 0xF0, 0x70, 0x9B, 0x80, 0xDB, 0x68, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x54, 0x9A, +0x03, 0xF1, 0x74, 0x9B, 0x80, 0xDB, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x58, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF1, 0x6C, 0xAA, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x48, 0x35, 0x60, 0xF2, 0x08, 0x4C, 0x91, 0xE5, 0x80, 0x9C, 0x05, 0x24, 0x01, 0x4A, 0xFF, 0x6C, 0x8C, 0xEA, 0x63, 0xEA, 0xF3, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x98, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x9C, 0x9B, 0x40, 0x32, 0x7F, 0x6B, 0xA0, 0xA4, 0x48, 0x32, 0x04, 0x6E, 0xAC, 0xEB, 0x60, 0xC4, 0x7D, 0x67, 0x08, 0xD2, 0x40, 0xF4, 0x1C, 0x4A, 0x4C, 0xCB, 0x80, 0x6A, 0x4B, 0xEA, 0x5A, 0xC3, 0x01, 0x6A, -0x5B, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, -0x5C, 0x9A, 0x06, 0x04, 0xFF, 0xF7, 0x1F, 0x68, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x00, 0x4A, 0xA0, 0x9A, 0x00, 0x18, 0xB9, 0xD7, +0x5B, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x40, 0x9A, 0x06, 0x04, 0xFF, 0xF7, 0x1F, 0x68, +0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x04, 0x4A, 0xA0, 0x9A, 0x00, 0x18, 0x14, 0xD9, 0x04, 0x6A, 0xA2, 0x67, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0xE4, 0x9A, 0x90, 0x67, -0x07, 0x06, 0x00, 0x18, 0xD8, 0xD7, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x00, 0x4B, 0x60, 0x9B, +0x20, 0x6A, 0x23, 0xF1, 0xE8, 0x9A, 0x90, 0x67, +0x07, 0x06, 0x00, 0x18, 0x33, 0xD9, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF1, 0x04, 0x4B, 0x60, 0x9B, 0x24, 0x42, 0x0C, 0xE9, 0x48, 0x6A, 0x30, 0xF0, 0x20, 0x6E, 0x7D, 0xE1, 0x00, 0x6C, 0xA2, 0x67, 0x00, 0xF1, 0x00, 0x4E, 0x04, 0xD2, 0x00, 0x18, -0xD8, 0xD7, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x00, 0x4A, 0x40, 0x9A, 0x0C, 0xE9, +0x33, 0xD9, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF1, 0x04, 0x4A, 0x40, 0x9A, 0x0C, 0xE9, 0x30, 0xF0, 0x20, 0x6E, 0x00, 0xF4, 0x00, 0x6D, 0x5D, 0xE1, 0x01, 0x6C, 0x41, 0xF3, 0x08, 0x4E, -0x04, 0xD5, 0x00, 0x18, 0xD8, 0xD7, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x00, 0x4B, 0x60, 0x9B, +0x04, 0xD5, 0x00, 0x18, 0x33, 0xD9, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF1, 0x04, 0x4B, 0x60, 0x9B, 0x08, 0x95, 0x45, 0xE1, 0x0C, 0xE9, 0x30, 0xF0, 0x21, 0x6E, 0x0C, 0xED, 0x1D, 0xF0, 0x00, 0x4E, 0x7D, 0xE1, 0x02, 0x6C, 0x04, 0xD5, 0x00, 0x18, -0xD8, 0xD7, 0x01, 0x6C, 0xA4, 0x67, 0x80, 0x18, +0x33, 0xD9, 0x01, 0x6C, 0xA4, 0x67, 0x80, 0x18, 0x20, 0x01, 0x00, 0x1C, 0xAC, 0x39, 0x30, 0xF0, -0x20, 0x6C, 0x2B, 0xF1, 0x18, 0x4C, 0x01, 0x6A, -0x08, 0xD4, 0xCA, 0xF1, 0x10, 0x68, 0x09, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x5C, 0x9A, +0x20, 0x6C, 0x8B, 0xF1, 0x00, 0x4C, 0x01, 0x6A, +0x08, 0xD4, 0x4A, 0xF2, 0x10, 0x68, 0x09, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x40, 0x9A, 0xFF, 0x69, 0x40, 0xA2, 0x4C, 0xE9, 0x0D, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x40, 0x9A, 0xFF, 0x69, 0x01, 0x6C, 0x40, 0xA2, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0xF2, 0x21, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x5C, 0x9A, 0x00, 0x6B, 0xE5, 0xF7, +0x03, 0xF1, 0x40, 0x9A, 0x00, 0x6B, 0xE5, 0xF7, 0x1D, 0x58, 0x60, 0xC2, 0x09, 0x61, 0x9D, 0x67, 0x7A, 0xA4, 0x80, 0x6A, 0x4B, 0xEA, 0x6D, 0xEA, 0x5A, 0xC4, 0xE5, 0xF7, 0x1C, 0x69, 0x06, 0x10, @@ -18913,13 +18995,13 @@ u8 array_mp_8822c_fw_nic[] = { 0x01, 0x4B, 0x4C, 0xEB, 0x80, 0x4A, 0x81, 0x4A, 0x8C, 0xEA, 0x6D, 0xEA, 0x9D, 0x67, 0x5A, 0xC4, 0x01, 0x6A, 0x5B, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0xA0, 0x9A, 0x06, 0x04, 0x04, 0x6E, -0x00, 0x18, 0xB9, 0xD7, 0x09, 0x92, 0x0C, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x08, 0x96, 0x03, 0xF1, -0xE4, 0x9A, 0x03, 0x6C, 0xCA, 0xF1, 0x10, 0x6D, -0x04, 0xD1, 0x00, 0x18, 0xD8, 0xD7, 0x08, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x08, 0x94, 0x03, 0xF1, -0xA4, 0x9A, 0xD1, 0x67, 0x00, 0x18, 0xB9, 0xD7, +0x23, 0xF1, 0xA4, 0x9A, 0x06, 0x04, 0x04, 0x6E, +0x00, 0x18, 0x14, 0xD9, 0x09, 0x92, 0x0C, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0x96, 0x23, 0xF1, +0xE8, 0x9A, 0x03, 0x6C, 0x4A, 0xF2, 0x10, 0x6D, +0x04, 0xD1, 0x00, 0x18, 0x33, 0xD9, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0x94, 0x23, 0xF1, +0xA8, 0x9A, 0xD1, 0x67, 0x00, 0x18, 0x14, 0xD9, 0x23, 0xE0, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x6C, 0x4C, 0xE8, 0xA4, 0x67, 0x80, 0x18, 0x20, 0x01, 0x06, 0x20, 0x08, 0x93, 0x00, 0x6C, 0x09, 0xD4, @@ -18939,57 +19021,57 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x65, 0x6E, 0xDA, 0x6E, 0xB8, 0x00, 0x65, 0x6F, 0xDA, 0x10, 0xF0, 0x23, 0x6A, 0x01, 0xF1, 0x05, 0x4A, 0x00, 0xEA, 0x00, 0x65, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xC1, 0xF3, 0x19, 0x4A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x48, 0x9A, 0x08, 0x6B, 0x40, 0xA2, 0x4C, 0xEB, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x4C, 0x9A, 0x08, 0x6B, 0x40, 0xA2, 0x4C, 0xEB, 0x00, 0x6A, 0x11, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0x9A, 0xA9, 0xF6, 0x48, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x50, 0x9A, 0xA9, 0xF6, -0x08, 0x4B, 0x40, 0x9A, 0x41, 0xDB, 0x20, 0xE8, +0x23, 0xF1, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0x9A, 0xE9, 0xF6, 0x50, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF1, 0x54, 0x9A, 0xE9, 0xF6, +0x10, 0x4B, 0x40, 0x9A, 0x41, 0xDB, 0x20, 0xE8, 0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xC3, 0xF0, 0x94, 0x9C, 0x10, 0xF0, 0x23, 0x6B, +0xE3, 0xF0, 0x98, 0x9C, 0x10, 0xF0, 0x23, 0x6B, 0x21, 0xF4, 0x01, 0x4B, 0x60, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x68, 0x9B, 0x80, 0xA3, +0x20, 0x6B, 0x23, 0xF1, 0x6C, 0x9B, 0x80, 0xA3, 0x08, 0x6B, 0x8C, 0xEB, 0x1C, 0x23, 0x05, 0x5A, 0x1A, 0x60, 0x0C, 0x6D, 0xB8, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x6C, 0x9B, 0x80, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0xA9, 0xF6, 0x10, 0x4B, +0x20, 0x6B, 0x23, 0xF1, 0x70, 0x9B, 0x80, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE9, 0xF6, 0x18, 0x4B, 0x12, 0xEA, 0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0x70, 0x9B, 0x81, 0xDA, 0x80, 0xA2, +0x23, 0xF1, 0x74, 0x9B, 0x81, 0xDA, 0x80, 0xA2, 0x60, 0x9B, 0x62, 0xDA, 0x01, 0x6B, 0x8D, 0xEB, 0x60, 0xC2, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF0, 0x94, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, 0x98, 0x9C, 0x10, 0xF0, 0x23, 0x6B, 0x81, 0xF4, 0x05, 0x4B, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, -0x68, 0x9B, 0x80, 0xA3, 0x08, 0x6B, 0x8C, 0xEB, +0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, +0x6C, 0x9B, 0x80, 0xA3, 0x08, 0x6B, 0x8C, 0xEB, 0x1B, 0x23, 0x05, 0x5A, 0x19, 0x60, 0x0C, 0x6C, -0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA9, 0xF6, -0x10, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0x80, 0xA2, +0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE9, 0xF6, +0x18, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0D, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x6C, 0x9B, 0x42, 0x9A, -0xA0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, -0x70, 0x9B, 0x60, 0x9B, 0x4B, 0xE3, 0x20, 0xE8, +0x20, 0x6B, 0x23, 0xF1, 0x70, 0x9B, 0x42, 0x9A, +0xA0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, +0x74, 0x9B, 0x60, 0x9B, 0x4B, 0xE3, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6B, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF0, 0x94, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, 0x98, 0x9C, 0x10, 0xF0, 0x23, 0x6A, 0xE1, 0xF4, 0x05, 0x4A, 0x05, 0x5B, 0x40, 0xDC, 0x00, 0x6A, 0x11, 0x60, 0x0C, 0x6C, 0x98, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF6, 0x10, 0x4A, 0x12, 0xEB, 0x4D, 0xE3, +0xE9, 0xF6, 0x18, 0x4A, 0x12, 0xEB, 0x4D, 0xE3, 0x80, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6A, 0x41, 0xDB, 0x42, 0xDB, 0x01, 0x6A, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x74, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x21, 0xF5, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x21, 0xF5, 0x05, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0x40, 0xEA, 0x03, 0x22, 0x00, 0x18, 0xF6, 0xC2, 0x05, 0x10, 0x10, 0xF0, 0x23, 0x68, 0xC1, 0xF3, 0x19, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x61, 0xF5, 0x01, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, 0x40, 0xEA, 0x04, 0x22, @@ -18997,8 +19079,8 @@ u8 array_mp_8822c_fw_nic[] = { 0x90, 0x67, 0x10, 0xF0, 0x23, 0x68, 0x21, 0xF4, 0x01, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x74, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xA1, 0xF5, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xA1, 0xF5, 0x05, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, 0x40, 0xEA, 0x04, 0x22, 0x90, 0x67, 0x00, 0x18, @@ -19006,7 +19088,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x23, 0x68, 0x81, 0xF4, 0x05, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xE1, 0xF5, 0x09, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, 0x40, 0xEA, 0x04, 0x22, @@ -19161,7 +19243,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x7E, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, 0x9E, 0xF1, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC8, 0xF6, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x08, 0xF7, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, 0xDE, 0xF1, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, 0xDE, 0xF3, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, @@ -19176,88 +19258,88 @@ u8 array_mp_8822c_fw_nic[] = { 0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xE9, 0x4C, 0xED, 0x2E, 0x34, 0x07, 0x6B, 0x01, 0x75, 0x4C, 0xEC, 0x2C, 0xEB, 0x22, 0x61, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x11, 0xE4, 0x01, 0x6A, -0x44, 0xEB, 0x63, 0xF3, 0x74, 0xA4, 0x00, 0x6D, -0x6D, 0xEA, 0x63, 0xF3, 0x54, 0xC4, 0x30, 0xF0, +0x8B, 0xF1, 0x00, 0x48, 0x11, 0xE4, 0x01, 0x6A, +0x44, 0xEB, 0x63, 0xF3, 0x78, 0xA4, 0x00, 0x6D, +0x6D, 0xEA, 0x63, 0xF3, 0x58, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x40, 0x9A, 0x91, 0x67, 0x40, 0xEA, 0xC0, 0xF0, 0x5F, 0xA0, 0x4E, 0xE9, -0x1F, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x54, 0x9A, 0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, -0x42, 0x32, 0x03, 0xF6, 0x44, 0xC8, 0x14, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, +0x1F, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x58, 0x9A, 0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, +0x42, 0x32, 0x03, 0xF6, 0x48, 0xC8, 0x14, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x51, 0xE4, 0x01, 0x6A, 0x44, 0xEB, 0x63, 0xF3, -0x74, 0xA4, 0x4F, 0xEA, 0x01, 0x6D, 0x6C, 0xEA, -0x63, 0xF3, 0x54, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0x78, 0xA4, 0x4F, 0xEA, 0x01, 0x6D, 0x6C, 0xEA, +0x63, 0xF3, 0x58, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x40, 0x9A, 0x91, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x68, 0x03, 0xF1, -0x58, 0x9A, 0x8C, 0xE8, 0x0C, 0x30, 0x0D, 0xD5, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x68, 0x23, 0xF1, +0x5C, 0x9A, 0x8C, 0xE8, 0x0C, 0x30, 0x0D, 0xD5, 0x4D, 0xE8, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x5C, 0x9A, 0x60, 0xF6, 0x13, 0x6C, +0x43, 0xF1, 0x40, 0x9A, 0x60, 0xF6, 0x13, 0x6C, 0x80, 0x6D, 0x00, 0xDA, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x00, 0x6E, 0x14, 0x6F, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x40, 0x9A, 0x0D, 0x94, +0x20, 0x6A, 0x43, 0xF1, 0x44, 0x9A, 0x0D, 0x94, 0x01, 0x48, 0x60, 0x9A, 0x29, 0xE4, 0x04, 0x49, 0x18, 0x71, 0x60, 0xDA, 0xE3, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x68, 0x23, 0xF1, -0x44, 0x9A, 0x8C, 0xE8, 0x0C, 0x30, 0x0D, 0xD5, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x68, 0x43, 0xF1, +0x48, 0x9A, 0x8C, 0xE8, 0x0C, 0x30, 0x0D, 0xD5, 0x4D, 0xE8, 0x00, 0x69, 0x0D, 0x93, 0x60, 0xF6, 0x13, 0x6C, 0x80, 0x6D, 0x29, 0xE3, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x4C, 0x9A, 0x00, 0x6E, 0x14, 0x6F, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x5C, 0x9A, 0x04, 0x49, +0x20, 0x6A, 0x43, 0xF1, 0x40, 0x9A, 0x04, 0x49, 0x00, 0xDA, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x01, 0x48, 0x40, 0xEA, 0x18, 0x71, 0xE3, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE8, -0x03, 0xF1, 0x58, 0x9A, 0x00, 0x30, 0x0C, 0x30, +0x23, 0xF1, 0x5C, 0x9A, 0x00, 0x30, 0x0C, 0x30, 0x0D, 0xD5, 0x4D, 0xE8, 0x00, 0x69, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x4C, 0x9A, 0x80, 0xF6, +0x20, 0x6A, 0x43, 0xF1, 0x50, 0x9A, 0x80, 0xF6, 0x1B, 0x6C, 0x80, 0x6D, 0x00, 0xDA, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x00, 0x6E, 0x14, 0x6F, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x54, 0x9A, 0x0D, 0x94, 0x00, 0xF1, 0x00, 0x48, 0x60, 0x9A, 0x29, 0xE4, 0x04, 0x49, 0x14, 0x71, 0x60, 0xDA, 0xE2, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0x8C, 0xE8, 0x23, 0xF1, 0x44, 0x9A, +0x20, 0x6A, 0x8C, 0xE8, 0x43, 0xF1, 0x48, 0x9A, 0x00, 0x30, 0x0C, 0x30, 0x0D, 0xD5, 0x4D, 0xE8, 0x00, 0x69, 0x0D, 0x93, 0x80, 0xF6, 0x1B, 0x6C, 0x80, 0x6D, 0x29, 0xE3, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x50, 0x9A, 0x00, 0x6E, +0x20, 0x6A, 0x43, 0xF1, 0x54, 0x9A, 0x00, 0x6E, 0x14, 0x6F, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF1, 0x4C, 0x9A, 0x04, 0x49, 0x00, 0xDA, +0x43, 0xF1, 0x50, 0x9A, 0x04, 0x49, 0x00, 0xDA, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x00, 0xF1, 0x00, 0x48, 0x40, 0xEA, 0x14, 0x71, 0xE2, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x78, 0x9B, 0xFF, 0x6A, +0x20, 0x6B, 0x23, 0xF1, 0x7C, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF1, 0x74, 0x9B, 0x05, 0x67, 0x40, 0xF6, +0x43, 0xF1, 0x78, 0x9B, 0x05, 0x67, 0x40, 0xF6, 0x17, 0x6C, 0x40, 0xDB, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x80, 0x6D, 0x00, 0x6E, 0x14, 0x6F, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, 0x09, 0x97, 0x40, 0x9A, 0x40, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x5C, 0x9A, 0x40, 0x9A, +0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x40, 0x9A, 0x41, 0xD8, 0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF1, 0x64, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, +0x43, 0xF1, 0x68, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0x9D, -0x23, 0xF1, 0x78, 0x9B, 0x00, 0x6E, 0x14, 0x6F, +0x43, 0xF1, 0x7C, 0x9B, 0x00, 0x6E, 0x14, 0x6F, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x81, 0x9D, -0x23, 0xF1, 0x7C, 0x9B, 0x80, 0x6D, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x74, 0x9B, +0x63, 0xF1, 0x60, 0x9B, 0x80, 0x6D, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, 0x78, 0x9B, 0x40, 0xF6, 0x17, 0x6C, 0x40, 0xDB, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, @@ -19265,15 +19347,15 @@ u8 array_mp_8822c_fw_nic[] = { 0x01, 0x6B, 0xAC, 0xEA, 0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x05, 0x5C, 0x48, 0x32, 0x03, 0x61, 0x01, 0x6A, 0x4B, 0xEA, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0xB4, 0x9B, 0x30, 0xF0, -0x20, 0x6E, 0x43, 0xF1, 0xC0, 0x9E, 0x60, 0x9D, +0x20, 0x6B, 0x23, 0xF1, 0xB8, 0x9B, 0x30, 0xF0, +0x20, 0x6E, 0x63, 0xF1, 0xC4, 0x9E, 0x60, 0x9D, 0x00, 0xF7, 0x80, 0x34, 0xCC, 0xEB, 0x6D, 0xEC, 0x80, 0xDD, 0x1F, 0xF7, 0x00, 0x6B, 0x60, 0xF5, 0x80, 0x42, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x64, 0x9B, 0x60, 0xF5, 0x00, 0x4A, +0x63, 0xF1, 0x68, 0x9B, 0x60, 0xF5, 0x00, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x51, 0xE4, +0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0x51, 0xE4, 0x40, 0x9C, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0xD0, 0x9B, 0xFE, 0x63, 0xC2, 0xF2, 0x10, 0x4B, 0x00, 0xD6, 0xC1, 0x9B, 0x64, 0xAB, @@ -19285,13 +19367,13 @@ u8 array_mp_8822c_fw_nic[] = { 0xA0, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x0B, 0x2A, 0x84, 0x34, 0xBD, 0x67, 0x91, 0xE5, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x44, 0x9A, 0x60, 0xAC, +0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, 0x60, 0xAC, 0x4D, 0xE3, 0x40, 0xA3, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x64, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x6D, 0xE5, +0x20, 0x6A, 0x63, 0xF1, 0x68, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0x6D, 0xE5, 0x55, 0xE5, 0x40, 0xA5, 0xFF, 0x6C, 0x8C, 0xEA, 0x08, 0x6D, 0xAD, 0xEA, 0x3E, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x88, 0x9B, 0x91, 0xE5, +0x20, 0x6B, 0x63, 0xF1, 0x8C, 0x9B, 0x91, 0xE5, 0x60, 0xA4, 0x08, 0x6D, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x34, 0x10, 0x84, 0x32, 0xDD, 0x67, 0x49, 0xE6, 0x60, 0xAA, 0x1F, 0xF7, @@ -19300,125 +19382,154 @@ u8 array_mp_8822c_fw_nic[] = { 0x49, 0xE3, 0xA0, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x09, 0x2A, 0x84, 0x34, 0xBD, 0x67, 0x91, 0xE5, -0x30, 0xF0, 0x20, 0x6A, 0x60, 0xAC, 0x43, 0xF1, -0x44, 0x9A, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x48, 0x9A, 0x6D, 0xE5, 0x55, 0xE5, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xAC, 0x63, 0xF1, +0x48, 0x9A, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x4C, 0x9A, 0x6D, 0xE5, 0x55, 0xE5, 0x80, 0xA5, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x48, 0x9A, 0x4D, 0xE3, 0x80, 0xA3, +0x63, 0xF1, 0x4C, 0x9A, 0x4D, 0xE3, 0x80, 0xA3, 0xF7, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0xAC, 0xEA, 0x13, 0x60, 0x03, 0x24, -0x02, 0x74, 0x15, 0x60, 0x18, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0xE3, 0xF5, -0xBC, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, 0x02, 0x6A, -0x4B, 0xEA, 0xAC, 0xEA, 0x8D, 0xEA, 0xE3, 0xF5, -0x5C, 0xC3, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x2E, 0xF7, 0x57, 0xC3, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xAE, 0xF7, 0x50, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x4C, 0x9A, 0x60, 0xA2, -0x10, 0x6A, 0x6C, 0xEA, 0x1C, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE3, 0xF5, -0x9C, 0xA2, 0xE3, 0xF5, 0xBF, 0xA2, 0x01, 0x6B, -0x8C, 0xEB, 0x7F, 0x6C, 0xAC, 0xEC, 0x7C, 0x33, -0x8D, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF1, 0x90, 0x9C, 0x60, 0xC4, -0x63, 0xF6, 0x78, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x54, 0x9A, 0x60, 0xC2, 0x20, 0xE8, +0x02, 0x74, 0x4B, 0x60, 0x4E, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x03, 0xF6, +0xA0, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, 0x02, 0x6A, +0x4B, 0xEA, 0xAC, 0xEA, 0x8D, 0xEA, 0x03, 0xF6, +0x40, 0xC3, 0x3F, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x03, 0xF6, 0x43, 0xC3, +0x03, 0xF6, 0x43, 0xA3, 0x0C, 0x72, 0x06, 0x61, +0x24, 0xF5, 0x5A, 0xAB, 0x01, 0x4A, 0x24, 0xF5, +0x5A, 0xCB, 0x2F, 0x10, 0x0E, 0x72, 0x06, 0x61, +0x24, 0xF5, 0x5C, 0xAB, 0x01, 0x4A, 0x24, 0xF5, +0x5C, 0xCB, 0x27, 0x10, 0x04, 0x72, 0x06, 0x61, +0x24, 0xF5, 0x5E, 0xAB, 0x01, 0x4A, 0x24, 0xF5, +0x5E, 0xCB, 0x1F, 0x10, 0x06, 0x72, 0x06, 0x61, +0x44, 0xF5, 0x40, 0xAB, 0x01, 0x4A, 0x44, 0xF5, +0x40, 0xCB, 0x17, 0x10, 0x06, 0x2A, 0x44, 0xF5, +0x42, 0xAB, 0x01, 0x4A, 0x44, 0xF5, 0x42, 0xCB, +0x10, 0x10, 0x02, 0x72, 0x0E, 0x60, 0x08, 0x72, +0x0C, 0x60, 0xF0, 0x72, 0x0A, 0x61, 0x44, 0xF5, +0x44, 0xAB, 0x01, 0x4A, 0x44, 0xF5, 0x44, 0xCB, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xEE, 0xF7, +0x5C, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x50, 0x9A, 0x60, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x1C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x03, 0xF6, 0x80, 0xA2, 0x03, 0xF6, +0xA3, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x7F, 0x6C, +0xAC, 0xEC, 0x7C, 0x33, 0x8D, 0xEB, 0xFF, 0x6C, +0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, +0x94, 0x9C, 0x60, 0xC4, 0x63, 0xF6, 0x7C, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x58, 0x9A, +0x60, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x2B, 0xF2, 0x7B, 0xA2, 0x7F, 0x6A, 0x6C, 0xEA, +0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x0B, 0xF2, 0x16, 0x4C, 0x00, 0x6D, 0x07, 0x6E, +0x4B, 0xF2, 0x1E, 0x4C, 0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x5C, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0xFF, 0x72, 0x00, 0x6A, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x5C, 0x9A, 0x60, 0xA2, 0x07, 0x6A, +0x83, 0xF1, 0x40, 0x9A, 0x60, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, 0x07, 0x6B, 0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0xAC, 0xEA, 0x03, 0x60, 0x02, 0x74, 0x09, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x02, 0x6B, 0x03, 0xF6, -0x66, 0xC2, 0x15, 0x10, 0x09, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xC0, 0xF0, -0x65, 0xA2, 0x03, 0xF6, 0x66, 0xC2, 0x05, 0x10, -0xFF, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x2E, 0xF7, -0x5E, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x03, 0xF6, 0x66, 0xA2, 0xE3, 0xF5, -0x9C, 0xA2, 0x03, 0xF6, 0x67, 0xC2, 0x40, 0x6B, -0x8D, 0xEB, 0xE3, 0xF5, 0x7C, 0xC2, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x02, 0xC6, -0x01, 0x72, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE3, 0xF5, 0x9C, 0xA2, -0x04, 0x6B, 0x8C, 0xEB, 0x08, 0x2B, 0x63, 0xF6, -0x98, 0xA2, 0x05, 0x5C, 0x04, 0x60, 0x24, 0xF5, -0x74, 0xDA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x8B, 0xF1, 0x00, 0x4A, 0x02, 0x6B, 0x03, 0xF6, +0x6A, 0xC2, 0x15, 0x10, 0x09, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xC0, 0xF0, +0x65, 0xA2, 0x03, 0xF6, 0x6A, 0xC2, 0x05, 0x10, +0xFF, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x8E, 0xF7, +0x4A, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x03, 0xF6, 0x6A, 0xA2, 0x03, 0xF6, +0x80, 0xA2, 0x03, 0xF6, 0x6B, 0xC2, 0x40, 0x6B, +0x8D, 0xEB, 0x03, 0xF6, 0x60, 0xC2, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x44, 0xF5, +0x5C, 0xA8, 0x01, 0x4A, 0x44, 0xF5, 0x5C, 0xC8, +0x00, 0x18, 0x22, 0xC6, 0x01, 0x72, 0x17, 0x60, +0x01, 0x6A, 0x84, 0xF5, 0x44, 0xC8, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x5C, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x83, 0xF1, 0x80, 0x9C, 0x40, 0xA2, +0xFF, 0x6B, 0x80, 0xA4, 0x6C, 0xEA, 0x84, 0xF5, +0x48, 0xC8, 0x07, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, +0x84, 0xF5, 0x4A, 0xC8, 0x17, 0x10, 0x03, 0xF6, +0x60, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x02, 0x6A, 0x05, 0x10, 0x63, 0xF6, 0x7C, 0xA0, +0x05, 0x5B, 0x04, 0x61, 0x08, 0x6A, 0x84, 0xF5, +0x44, 0xC8, 0x08, 0x10, 0x84, 0xF5, 0x44, 0xC8, +0x84, 0xF5, 0x4C, 0xD8, 0x44, 0xF5, 0x5C, 0xC8, +0x01, 0x6A, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0x6B, 0x0F, 0xF7, 0x66, 0xCA, 0x00, 0x6A, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x01, 0x74, 0x18, 0x60, 0x03, 0x24, 0x02, 0x74, 0x0B, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x44, 0xF5, 0x6E, 0xAA, -0x01, 0x4B, 0x44, 0xF5, 0x6E, 0xCA, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x44, 0xF5, 0x72, 0xAA, 0x01, 0x4B, 0x44, 0xF5, -0x72, 0xCA, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x44, 0xF5, 0x70, 0xAA, -0x01, 0x4B, 0x44, 0xF5, 0x70, 0xCA, 0xE3, 0xF5, -0x9D, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xE3, 0xF5, 0x7D, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x8B, 0xF1, 0x00, 0x4A, 0xA4, 0xF5, 0x6C, 0xAA, +0x01, 0x4B, 0xA4, 0xF5, 0x6C, 0xCA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA4, 0xF5, 0x70, 0xAA, 0x01, 0x4B, 0xA4, 0xF5, +0x70, 0xCA, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA4, 0xF5, 0x6E, 0xAA, +0x01, 0x4B, 0xA4, 0xF5, 0x6E, 0xCA, 0x03, 0xF6, +0x81, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x03, 0xF6, 0x61, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF4, 0x5C, 0x9A, 0xFF, 0x6B, 0x6C, 0xEC, -0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xC5, 0x67, -0xFF, 0x6C, 0x40, 0xEA, 0x01, 0x6C, 0x0C, 0x6D, -0x00, 0x18, 0xD7, 0xC5, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x30, 0xF0, 0x20, 0x6F, 0x2B, 0xF1, 0x18, 0x4F, +0x8B, 0xF1, 0x00, 0x4A, 0x44, 0xF5, 0x6C, 0xAA, +0x00, 0x6D, 0x01, 0x4B, 0x44, 0xF5, 0x6C, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, +0xFF, 0x6B, 0x6C, 0xEC, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x64, 0x6E, +0xFF, 0x6C, 0x00, 0x6D, 0x40, 0xEA, 0x01, 0x6C, +0x0C, 0x6D, 0x00, 0x18, 0xD7, 0xC5, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6F, 0x8B, 0xF1, 0x00, 0x4F, 0xC0, 0xF0, 0x17, 0xA7, 0x01, 0x6B, 0xFF, 0x6A, 0x0C, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x4C, 0xED, 0x4C, 0xEE, 0x05, 0x23, 0xC0, 0xF0, 0x59, 0xA7, 0xFF, 0x72, 0xA0, 0xF0, 0x04, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE3, 0xF5, -0x1D, 0xA2, 0x20, 0x6F, 0xFF, 0x6B, 0x0C, 0xEF, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x01, 0xA2, 0x20, 0x6F, 0xFF, 0x6B, 0x0C, 0xEF, 0x80, 0xF0, 0x15, 0x2F, 0xC0, 0xF0, 0x17, 0xA2, 0x01, 0x6F, 0xEC, 0xE8, 0x6C, 0xE8, 0x53, 0x28, -0xE3, 0xF5, 0x1C, 0xA2, 0x0C, 0xEF, 0x6C, 0xEF, -0x08, 0x27, 0x03, 0xF6, 0x7A, 0xA2, 0x03, 0x4B, -0x03, 0xF6, 0x75, 0xC2, 0x03, 0xF6, 0x74, 0xC2, -0x08, 0x10, 0x06, 0x6F, 0x03, 0xF6, 0xF5, 0xC2, -0x06, 0x4E, 0x05, 0x6F, 0x03, 0xF6, 0xF4, 0xC2, -0x6C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x03, 0xF6, 0xF3, 0xA2, 0x03, 0xF6, -0x74, 0xA2, 0xE3, 0xEB, 0x09, 0x61, 0x03, 0xF6, -0x75, 0xA2, 0x03, 0xF6, 0xC8, 0xC2, 0x71, 0xE4, -0xB7, 0xE4, 0x03, 0xF6, 0xB6, 0xC2, 0x09, 0x10, -0x03, 0xF6, 0x95, 0xA2, 0x77, 0xE5, 0xB9, 0xE6, -0x6F, 0xE4, 0x03, 0xF6, 0xC8, 0xC2, 0x03, 0xF6, -0x76, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x03, 0xF6, 0x75, 0xA2, 0x03, 0xF6, -0x96, 0xA2, 0x0A, 0x4B, 0x82, 0xEB, 0x02, 0x60, -0x03, 0xF6, 0x76, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x03, 0xF6, 0x76, 0xA2, -0x03, 0xF6, 0x88, 0xA2, 0x23, 0x4B, 0x82, 0xEB, -0x02, 0x60, 0x03, 0xF6, 0x68, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x03, 0xF6, -0x76, 0xA2, 0x03, 0xF6, 0x70, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x60, 0xA2, +0x03, 0xF6, 0x00, 0xA2, 0x0C, 0xEF, 0x6C, 0xEF, +0x08, 0x27, 0x03, 0xF6, 0x7E, 0xA2, 0x03, 0x4B, +0x03, 0xF6, 0x79, 0xC2, 0x03, 0xF6, 0x78, 0xC2, +0x08, 0x10, 0x06, 0x6F, 0x03, 0xF6, 0xF9, 0xC2, +0x06, 0x4E, 0x05, 0x6F, 0x03, 0xF6, 0xF8, 0xC2, +0x6C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x03, 0xF6, 0xF7, 0xA2, 0x03, 0xF6, +0x78, 0xA2, 0xE3, 0xEB, 0x09, 0x61, 0x03, 0xF6, +0x79, 0xA2, 0x03, 0xF6, 0xCC, 0xC2, 0x71, 0xE4, +0xB7, 0xE4, 0x03, 0xF6, 0xBA, 0xC2, 0x09, 0x10, +0x03, 0xF6, 0x99, 0xA2, 0x77, 0xE5, 0xB9, 0xE6, +0x6F, 0xE4, 0x03, 0xF6, 0xCC, 0xC2, 0x03, 0xF6, +0x7A, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x03, 0xF6, 0x79, 0xA2, 0x03, 0xF6, +0x9A, 0xA2, 0x0A, 0x4B, 0x82, 0xEB, 0x02, 0x60, +0x03, 0xF6, 0x7A, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, 0x7A, 0xA2, +0x03, 0xF6, 0x8C, 0xA2, 0x23, 0x4B, 0x82, 0xEB, +0x02, 0x60, 0x03, 0xF6, 0x6C, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x7A, 0xA2, 0x03, 0xF6, 0x74, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF1, 0x44, 0x9A, 0x60, 0xA2, 0x07, 0x23, 0x60, 0xA2, 0xFF, 0x6A, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x4E, 0xF7, 0x68, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, 0x74, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x9E, 0xA2, 0x18, 0x6B, 0x8C, 0xEB, -0x10, 0x73, 0x0C, 0x61, 0x03, 0xF6, 0x7A, 0xA2, -0x03, 0x6C, 0x03, 0x4B, 0x03, 0xF6, 0x76, 0xC2, +0x10, 0x73, 0x0C, 0x61, 0x03, 0xF6, 0x7E, 0xA2, +0x03, 0x6C, 0x03, 0x4B, 0x03, 0xF6, 0x7A, 0xC2, 0xC0, 0xF0, 0x61, 0xA2, 0x76, 0x33, 0x8C, 0xEB, -0x03, 0xF6, 0x68, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x4E, 0xF7, 0x88, 0xAC, 0xA0, 0xA2, 0xFF, 0x6B, +0x03, 0xF6, 0x6C, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF1, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x8E, 0xF7, 0x94, 0xAC, 0xA0, 0xA2, 0xFF, 0x6B, 0x6C, 0xED, 0x8E, 0xED, 0x02, 0x25, 0x8C, 0xEB, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE3, 0xF5, 0x9D, 0xA2, 0x41, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x03, 0xF6, 0x81, 0xA2, 0x41, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x02, 0x10, 0x40, 0x6B, -0x0D, 0xEB, 0xE3, 0xF5, 0x7D, 0xC2, 0x01, 0x90, +0x0D, 0xEB, 0x03, 0xF6, 0x61, 0xC2, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0xEB, 0xF1, 0xB6, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF2, 0xBE, 0xA3, 0x04, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x0C, 0x23, 0x7D, 0x67, 0x1E, 0x6A, 0x50, 0xC3, 0x01, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, @@ -19429,7 +19540,7 @@ u8 array_mp_8822c_fw_nic[] = { 0xA2, 0xF2, 0x6C, 0x9A, 0xA2, 0xF2, 0x0C, 0x4A, 0xFF, 0x69, 0x04, 0xD3, 0x61, 0x9A, 0x44, 0xAA, 0x30, 0xF0, 0x20, 0x68, 0x05, 0xD3, 0x7D, 0x67, -0x2C, 0xEC, 0x4C, 0xCB, 0x2B, 0xF1, 0x18, 0x48, +0x2C, 0xEC, 0x4C, 0xCB, 0x8B, 0xF1, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xD4, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x3E, 0x61, 0xA0, 0xF0, 0x7B, 0xA0, @@ -19438,902 +19549,1010 @@ u8 array_mp_8822c_fw_nic[] = { 0x68, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x0C, 0x2A, 0x08, 0x93, 0x64, 0x32, 0x7D, 0x67, 0x49, 0xE3, -0x68, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x44, 0x9A, 0x49, 0xE3, 0x60, 0x9A, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, +0x68, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x48, 0x9A, 0x49, 0xE3, 0x60, 0x9A, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0x4D, 0xE3, 0x60, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x16, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0x83, 0xF1, 0x6C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x40, 0xAB, 0x8C, 0xEA, 0x01, 0x4A, 0x8C, 0xEA, -0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x24, 0xF5, 0x6C, 0x9A, 0x01, 0x4B, -0x24, 0xF5, 0x6C, 0xDA, 0x00, 0x6A, 0x01, 0x10, +0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x64, 0xF5, 0x64, 0xAA, 0x01, 0x4B, +0x64, 0xF5, 0x64, 0xCA, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, -0x38, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x83, 0xF6, 0x68, 0xA2, 0x2F, 0x23, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, -0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x70, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF1, 0x74, 0x9B, 0x80, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0x9A, 0x63, 0xF1, 0x78, 0x9B, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x5C, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF1, 0x40, 0x9A, 0x01, 0x6B, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, 0x44, 0x9A, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, -0x48, 0x9A, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF1, 0x4C, 0x9A, 0x80, 0xDA, 0x00, 0x6B, -0x4A, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0x94, 0x9B, 0x02, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, -0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0x67, 0x2B, 0xF1, 0x18, 0x4A, -0x83, 0xF6, 0x88, 0xA2, 0x37, 0x24, 0x2B, 0xF1, -0x98, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x6C, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x81, 0x9A, 0x63, 0xF1, 0x70, 0x9B, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0x9A, 0x63, 0xF1, +0x38, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x83, 0xF6, 0x6C, 0xA2, 0x2F, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x70, 0x9B, +0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x74, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0x9A, 0x63, 0xF1, 0x7C, 0x9B, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x84, 0x9A, 0x83, 0xF1, -0x60, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x94, 0x9A, 0x83, 0xF1, 0x70, 0x9B, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x95, 0x9A, 0x83, 0xF1, +0x83, 0xF1, 0x78, 0x9B, 0x80, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0x9A, 0x83, 0xF1, 0x7C, 0x9B, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, +0x40, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF1, 0x44, 0x9A, 0x01, 0x6B, 0x80, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x48, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, +0x4C, 0x9A, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF1, 0x50, 0x9A, 0x80, 0xDA, 0x00, 0x6B, +0x4A, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, +0x98, 0x9B, 0x02, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, +0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0x67, 0x8B, 0xF1, 0x00, 0x4A, +0x83, 0xF6, 0x8C, 0xA2, 0x37, 0x24, 0x8B, 0xF1, +0x80, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, +0x70, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x81, 0x9A, 0x83, 0xF1, 0x74, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0x9A, 0x83, 0xF1, +0x78, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0x9A, 0xA3, 0xF1, 0x60, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0x9A, 0xA3, 0xF1, 0x64, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x96, 0x9A, 0x83, 0xF1, 0x68, 0x9B, 0x80, 0xDB, -0x72, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, -0x4C, 0x9A, 0x05, 0x10, 0x74, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF1, 0x50, 0x9A, 0x60, 0xDA, +0x94, 0x9A, 0xA3, 0xF1, 0x74, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x95, 0x9A, 0xA3, 0xF1, +0x68, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x96, 0x9A, 0xA3, 0xF1, 0x6C, 0x9B, 0x80, 0xDB, +0x72, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, +0x50, 0x9A, 0x05, 0x10, 0x74, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF1, 0x54, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF1, 0x58, 0x9A, 0x80, 0xA2, 0xFF, 0x6A, +0xA3, 0xF1, 0x5C, 0x9A, 0x80, 0xA2, 0xFF, 0x6A, 0x4C, 0xEC, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x9C, 0x9B, 0x07, 0x10, 0x02, 0x6B, +0xC3, 0xF1, 0x80, 0x9B, 0x07, 0x10, 0x02, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0x80, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, +0xC3, 0xF1, 0x84, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, 0x60, 0xC4, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x64, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x40, 0xAB, 0x8C, 0xEA, 0x01, 0x4A, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF1, 0x58, 0x9A, 0x00, 0x6B, +0x20, 0x6A, 0xA3, 0xF1, 0x5C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x0F, 0xF1, 0xB8, 0x9B, 0xE0, 0xF2, 0x40, 0x9A, +0x6F, 0xF1, 0xA4, 0x9B, 0xE0, 0xF2, 0x40, 0x9A, 0x38, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x68, 0x9A, 0xFF, 0x6C, 0x10, 0x6D, +0xC3, 0xF1, 0x6C, 0x9A, 0xFF, 0x6C, 0x10, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x58, 0x9A, 0xA3, 0xF1, 0xCC, 0x9B, 0x30, 0xF0, -0x21, 0x6D, 0x00, 0x6C, 0xF9, 0xF0, 0x08, 0x4D, +0x58, 0x9A, 0xC3, 0xF1, 0xD0, 0x9B, 0x30, 0xF0, +0x21, 0x6D, 0x00, 0x6C, 0xB9, 0xF1, 0x10, 0x4D, 0x20, 0x6F, 0x40, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x24, 0xF5, -0x78, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, 0x24, 0xF5, -0x78, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x84, 0xF5, +0x70, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, 0x84, 0xF5, +0x70, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xCE, 0xF7, 0x23, 0xA2, 0x34, 0x10, -0xD0, 0xF3, 0x44, 0x41, 0x4C, 0x32, 0x09, 0xE2, -0xC2, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0xA3, 0xF6, -0xEC, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0x83, 0xF6, -0xBC, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x0F, 0xF0, 0x2F, 0xA2, 0x34, 0x10, +0xD0, 0xF3, 0x45, 0x41, 0x4C, 0x32, 0x09, 0xE2, +0xC1, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0xA3, 0xF6, +0xF0, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0xA3, 0xF6, +0xA0, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, 0xE0, 0xF2, -0x58, 0x9A, 0x16, 0xF3, 0x08, 0x4B, 0x00, 0x6C, +0x58, 0x9A, 0xD6, 0xF3, 0x10, 0x4B, 0x00, 0x6C, 0xB5, 0xE3, 0x40, 0xEA, 0x01, 0x72, 0x09, 0x61, -0x06, 0x92, 0xA3, 0xF6, 0x6C, 0x9A, 0x83, 0xF6, -0x5C, 0x98, 0x49, 0xE3, 0x83, 0xF6, 0x5C, 0xD8, -0x06, 0x10, 0x24, 0xF5, 0x58, 0x98, 0x04, 0x6B, -0x6D, 0xEA, 0x24, 0xF5, 0x58, 0xD8, 0x30, 0xF0, +0x06, 0x92, 0xA3, 0xF6, 0x70, 0x9A, 0xA3, 0xF6, +0x40, 0x98, 0x49, 0xE3, 0xA3, 0xF6, 0x40, 0xD8, +0x06, 0x10, 0x84, 0xF5, 0x50, 0x98, 0x04, 0x6B, +0x6D, 0xEA, 0x84, 0xF5, 0x50, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0x01, 0x49, 0x40, 0xEA, 0xFF, 0x6A, 0x4C, 0xE9, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0x83, 0xF6, 0x4B, 0xA0, 0x01, 0x4A, 0x42, 0xE9, -0xC3, 0x61, 0x83, 0xF6, 0x2B, 0xC0, 0x0B, 0x97, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x83, 0xF6, 0x4F, 0xA0, 0x01, 0x4A, 0x42, 0xE9, +0xC3, 0x61, 0x83, 0xF6, 0x2F, 0xC0, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x74, 0x9A, 0xFF, 0x6C, 0x02, 0x6D, 0x40, 0xA3, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x69, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x6F, 0xF0, -0x00, 0x48, 0x0F, 0xF1, 0x18, 0x49, 0x30, 0xF0, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0xAF, 0xF0, +0x0C, 0x48, 0x6F, 0xF1, 0x04, 0x49, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xA8, 0xC1, 0x98, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x08, 0x48, 0x40, 0xEA, 0x2A, 0xE8, 0xF4, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xCE, 0xF7, 0x23, 0xA2, 0x35, 0x10, -0xD0, 0xF3, 0x44, 0x41, 0x4C, 0x32, 0x09, 0xE2, -0xC2, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0xA3, 0xF6, -0xEC, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0x83, 0xF6, -0xBC, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x0F, 0xF0, 0x2F, 0xA2, 0x35, 0x10, +0xD0, 0xF3, 0x45, 0x41, 0x4C, 0x32, 0x09, 0xE2, +0xC1, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0xA3, 0xF6, +0xF0, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0xA3, 0xF6, +0xA0, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, 0xE0, 0xF2, -0x58, 0x9A, 0x16, 0xF3, 0x08, 0x4B, 0x00, 0x6C, +0x58, 0x9A, 0xD6, 0xF3, 0x10, 0x4B, 0x00, 0x6C, 0xB5, 0xE3, 0x40, 0xEA, 0x01, 0x72, 0x12, 0x61, 0x06, 0x92, 0x05, 0x6C, 0x01, 0x49, 0xA3, 0xF6, -0x6C, 0x9A, 0x83, 0xF6, 0x5C, 0x98, 0x49, 0xE3, -0x83, 0xF6, 0x5C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x70, 0x9A, 0xA3, 0xF6, 0x40, 0x98, 0x49, 0xE3, +0xA3, 0xF6, 0x40, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0xFF, 0x6A, -0x4C, 0xE9, 0x07, 0x10, 0x24, 0xF5, 0x58, 0x98, -0x10, 0x6B, 0x6D, 0xEA, 0x24, 0xF5, 0x58, 0xD8, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x83, 0xF6, 0x4B, 0xA0, 0x07, 0x4A, +0x4C, 0xE9, 0x07, 0x10, 0x84, 0xF5, 0x50, 0x98, +0x10, 0x6B, 0x6D, 0xEA, 0x84, 0xF5, 0x50, 0xD8, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x83, 0xF6, 0x4F, 0xA0, 0x07, 0x4A, 0x42, 0xE9, 0xC2, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x68, 0xCE, 0xF7, 0x23, 0xC2, +0x30, 0xF0, 0x20, 0x68, 0x0F, 0xF0, 0x2F, 0xC2, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0xB1, 0x67, 0xE3, 0xF6, 0x08, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF1, 0xD4, 0x9B, 0xB1, 0x67, +0x44, 0x98, 0xC3, 0xF1, 0xD8, 0x9B, 0xB1, 0x67, 0x01, 0xF4, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x38, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF1, 0x3C, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x83, 0xF5, 0x14, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x5C, 0x9A, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x40, 0x9A, 0x2E, 0xEA, 0xEB, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0xC4, 0x9B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0x40, 0x9A, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF1, 0x44, 0x9A, 0x2E, 0xEA, 0xEB, 0x2A, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x01, 0xF4, 0x0C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xE3, 0xF6, 0x08, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF2, 0x68, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF2, 0x70, 0xA2, 0x01, 0x6A, 0x00, 0x68, 0x6C, 0xEA, 0x11, 0x2A, 0x18, 0x10, 0x18, 0x6D, 0xB8, 0xE8, 0x49, 0xE0, -0x24, 0xF5, 0x80, 0xA2, 0x30, 0xF0, 0x20, 0x6B, -0x0F, 0xF1, 0x1C, 0x4B, 0x01, 0x48, 0x12, 0xED, +0x24, 0xF5, 0x84, 0xA2, 0x30, 0xF0, 0x20, 0x6B, +0x6F, 0xF1, 0x08, 0x4B, 0x01, 0x48, 0x12, 0xED, 0xB5, 0xE3, 0x00, 0x18, 0x06, 0xC5, 0xFF, 0x6A, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x04, 0xF5, 0x7C, 0xA2, 0x63, 0xE8, -0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xC0, 0xF0, 0x90, 0xA2, 0x02, 0x6B, -0x8C, 0xEB, 0x08, 0x23, 0x04, 0xF5, 0x99, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0xEF, 0xF5, 0x1F, 0x4A, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x24, 0xF5, 0x60, 0xA2, 0x63, 0xE8, +0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xC0, 0xF0, 0x90, 0xA2, 0x02, 0x6B, +0x8C, 0xEB, 0x08, 0x23, 0x04, 0xF5, 0x9D, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x4F, 0xF6, 0x0B, 0x4A, 0x00, 0x6B, 0x2F, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xEF, 0xF3, 0x1C, 0x48, 0x00, 0x69, 0x2E, 0x10, +0x4F, 0xF4, 0x08, 0x48, 0x00, 0x69, 0x2E, 0x10, 0xFF, 0xF7, 0xDF, 0xA2, 0xA0, 0xA2, 0xC0, 0x36, 0xC0, 0x36, 0x00, 0xF6, 0xA0, 0x35, 0xCD, 0xED, 0xFF, 0xF7, 0xDD, 0xA2, 0xCD, 0xED, 0xFF, 0xF7, 0xDE, 0xA2, 0xC0, 0x36, 0xCD, 0xED, 0x30, 0xF0, -0x20, 0x6E, 0xC3, 0xF1, 0xC8, 0x9E, 0xA0, 0xDE, +0x20, 0x6E, 0xE3, 0xF1, 0xCC, 0x9E, 0xA0, 0xDE, 0xA2, 0xA2, 0xC1, 0xA2, 0x06, 0x4A, 0xA0, 0x35, 0xCD, 0xED, 0x1F, 0x6E, 0x6C, 0xEE, 0x00, 0xF6, 0xC0, 0x36, 0xCD, 0xED, 0x30, 0xF0, 0x20, 0x6E, -0xC3, 0xF1, 0xCC, 0x9E, 0x01, 0x4B, 0xCD, 0xED, -0x30, 0xF0, 0x20, 0x6E, 0xC3, 0xF1, 0xD0, 0x9E, +0xE3, 0xF1, 0xD0, 0x9E, 0x01, 0x4B, 0xCD, 0xED, +0x30, 0xF0, 0x20, 0x6E, 0xE3, 0xF1, 0xD4, 0x9E, 0xA0, 0xDE, 0xFF, 0x6D, 0x6C, 0xED, 0x83, 0xED, 0xD3, 0x61, 0xCC, 0x17, 0x91, 0x67, 0xB0, 0x67, 0x01, 0x49, 0x00, 0x18, 0x66, 0xC5, 0x40, 0x71, 0x08, 0x48, 0xF8, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x73, 0xA2, 0x7F, 0x6A, 0x6C, 0xEA, -0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0x80, 0xF2, 0x48, 0x99, -0x30, 0xF0, 0x20, 0x6C, 0x0B, 0xF2, 0x01, 0x4C, -0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x68, 0x80, 0xF2, 0x48, 0x99, 0x90, 0x67, -0xE8, 0xF6, 0x10, 0x4C, 0x00, 0x6D, 0x24, 0x6E, -0x40, 0xEA, 0xE8, 0xF6, 0x50, 0xA0, 0x07, 0x97, -0x06, 0x91, 0x01, 0x4A, 0xE8, 0xF6, 0x50, 0xC0, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF2, 0x41, 0xA2, -0x01, 0x6B, 0x46, 0x32, 0x6C, 0xEA, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF2, 0x61, 0xA2, -0x01, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF2, 0x41, 0xA2, -0xFF, 0x6B, 0x56, 0x32, 0x8E, 0xEA, 0x6C, 0xEA, -0x01, 0x5A, 0x58, 0x67, 0x6C, 0xEA, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x44, 0xC8, -0x00, 0x6B, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xAE, 0xF7, 0x7F, 0xA2, 0x01, 0x6A, 0x4C, 0xEB, -0x05, 0x97, 0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0xC0, 0xF0, 0x89, 0xA3, 0x04, 0x6A, 0x8C, 0xEA, -0x0C, 0x22, 0xC0, 0xF0, 0x4A, 0xA3, 0x09, 0x22, -0xC0, 0xF0, 0x4B, 0xA3, 0x06, 0x22, 0xC0, 0xF0, -0x6C, 0xA3, 0x00, 0x6A, 0x03, 0x23, 0x01, 0x6A, -0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x32, 0x6B, 0xAC, 0xEA, 0xBD, 0x67, 0x70, 0xC5, -0x02, 0x5C, 0x02, 0x6B, 0x6F, 0xCD, 0x92, 0xC5, -0x02, 0x60, 0x53, 0xC5, 0x04, 0x10, 0x01, 0x6A, -0x4B, 0xEA, 0x7D, 0x67, 0x53, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, -0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x01, 0x74, 0x18, 0x60, -0x03, 0x24, 0x02, 0x74, 0x0B, 0x60, 0x2B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x44, 0xF5, 0x66, 0xAA, 0x01, 0x4B, 0x44, 0xF5, -0x66, 0xCA, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x44, 0xF5, 0x6A, 0xAA, -0x01, 0x4B, 0x44, 0xF5, 0x6A, 0xCA, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x44, 0xF5, 0x68, 0xAA, 0x01, 0x4B, 0x44, 0xF5, -0x68, 0xCA, 0xE3, 0xF5, 0x9D, 0xA2, 0x02, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xE3, 0xF5, 0x7D, 0xC2, -0x63, 0xF6, 0x5B, 0xA2, 0x04, 0x22, 0x00, 0x6C, -0x02, 0x6D, 0x00, 0x18, 0x62, 0xC8, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x6C, 0x00, 0x18, 0x65, 0xDD, 0x05, 0x97, -0x30, 0xF0, 0x20, 0x6B, 0xE8, 0xF6, 0x10, 0x4B, -0x00, 0x6C, 0x86, 0xDB, 0x87, 0xDB, 0x44, 0xDB, -0x45, 0xDB, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x20, 0x6F, -0x24, 0x6A, 0x04, 0x6C, 0x03, 0x6D, 0x02, 0x6E, -0xE8, 0xF6, 0x10, 0x4F, 0x04, 0xD2, 0x80, 0x18, -0xDD, 0x67, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, 0x10, 0x4A, -0x00, 0x6B, 0xFF, 0x69, 0x68, 0xC2, 0x8C, 0xE9, -0x00, 0x18, 0x56, 0xC8, 0x28, 0x22, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xC0, 0xF0, -0x4A, 0xA0, 0xC0, 0xF0, 0x6B, 0xA0, 0x58, 0xEB, -0x12, 0xEA, 0x83, 0xF6, 0x45, 0xC0, 0x00, 0x18, -0x29, 0xC8, 0x03, 0x22, 0x83, 0xF6, 0x05, 0xA0, -0x05, 0x10, 0xC0, 0xF0, 0x4B, 0xA0, 0x01, 0x72, -0x12, 0x61, 0x01, 0x68, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0x58, 0xAE, 0xF7, 0x1E, 0xC2, 0x08, 0x61, -0x91, 0x67, 0x00, 0x18, 0xD1, 0xE7, 0x91, 0x67, -0xB0, 0x67, 0x00, 0x18, 0xBC, 0xE9, 0x03, 0x10, -0x91, 0x67, 0x00, 0x18, 0xE2, 0xE7, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x8B, 0xF1, 0x00, 0x4A, 0x00, 0x6B, 0x24, 0xF5, +0x7A, 0xCA, 0x24, 0xF5, 0x7C, 0xCA, 0x24, 0xF5, +0x7E, 0xCA, 0x44, 0xF5, 0x60, 0xCA, 0x44, 0xF5, +0x62, 0xCA, 0x44, 0xF5, 0x64, 0xCA, 0x44, 0xF5, +0x66, 0xCA, 0x44, 0xF5, 0x68, 0xCA, 0x44, 0xF5, +0x6A, 0xCA, 0x44, 0xF5, 0x6C, 0xCA, 0x44, 0xF5, +0x6E, 0xCA, 0x44, 0xF5, 0x70, 0xCA, 0x44, 0xF5, +0x72, 0xCA, 0x44, 0xF5, 0x74, 0xCA, 0x44, 0xF5, +0x76, 0xCA, 0x44, 0xF5, 0x78, 0xCA, 0x44, 0xF5, +0x7A, 0xCA, 0x44, 0xF5, 0x7C, 0xCA, 0x44, 0xF5, +0x7E, 0xCA, 0x64, 0xF5, 0x60, 0xCA, 0x64, 0xF5, +0x62, 0xCA, 0x64, 0xF5, 0x64, 0xCA, 0x64, 0xF5, +0x66, 0xCA, 0x64, 0xF5, 0x68, 0xCA, 0x64, 0xF5, +0x6A, 0xCA, 0x64, 0xF5, 0x6C, 0xCA, 0x64, 0xF5, +0x6E, 0xCA, 0x64, 0xF5, 0x70, 0xCA, 0x64, 0xF5, +0x72, 0xCA, 0x64, 0xF5, 0x74, 0xCA, 0x64, 0xF5, +0x76, 0xCA, 0x64, 0xF5, 0x78, 0xCA, 0x64, 0xF5, +0x7A, 0xCA, 0x64, 0xF5, 0x7C, 0xCA, 0x64, 0xF5, +0x7E, 0xCA, 0x84, 0xF5, 0x60, 0xCA, 0x84, 0xF5, +0x62, 0xCA, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0x80, 0xF2, 0x48, 0x99, 0x30, 0xF0, 0x20, 0x6C, +0x4B, 0xF2, 0x09, 0x4C, 0x00, 0x6D, 0x07, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF2, +0x48, 0x99, 0x90, 0x67, 0x28, 0xF7, 0x18, 0x4C, +0x00, 0x6D, 0x24, 0x6E, 0x40, 0xEA, 0x28, 0xF7, +0x58, 0xA0, 0x07, 0x97, 0x06, 0x91, 0x01, 0x4A, +0x28, 0xF7, 0x58, 0xC0, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x4B, 0xF2, 0x49, 0xA2, 0x01, 0x6B, 0x46, 0x32, +0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x4B, 0xF2, 0x69, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x4B, 0xF2, 0x49, 0xA2, 0xFF, 0x6B, 0x56, 0x32, +0x8E, 0xEA, 0x6C, 0xEA, 0x01, 0x5A, 0x58, 0x67, +0x6C, 0xEA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xA1, 0xC8, 0x00, 0x6B, 0x06, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF0, 0x6B, 0xA2, +0x01, 0x6A, 0x4C, 0xEB, 0x05, 0x97, 0x43, 0x67, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xC0, 0xF0, 0x89, 0xA3, +0x04, 0x6A, 0x8C, 0xEA, 0x0C, 0x22, 0xC0, 0xF0, +0x4A, 0xA3, 0x09, 0x22, 0xC0, 0xF0, 0x4B, 0xA3, +0x06, 0x22, 0xC0, 0xF0, 0x6C, 0xA3, 0x00, 0x6A, +0x03, 0x23, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x32, 0x6B, 0xAC, 0xEA, +0xBD, 0x67, 0x70, 0xC5, 0x02, 0x5C, 0x02, 0x6B, +0x6F, 0xCD, 0x92, 0xC5, 0x02, 0x60, 0x53, 0xC5, +0x04, 0x10, 0x01, 0x6A, 0x4B, 0xEA, 0x7D, 0x67, +0x53, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x01, 0x74, 0x18, 0x60, 0x03, 0x24, 0x02, 0x74, +0x0B, 0x60, 0x2B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA4, 0xF5, 0x64, 0xAA, +0x01, 0x4B, 0xA4, 0xF5, 0x64, 0xCA, 0x21, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA4, 0xF5, 0x68, 0xAA, 0x01, 0x4B, 0xA4, 0xF5, +0x68, 0xCA, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA4, 0xF5, 0x66, 0xAA, +0x01, 0x4B, 0xA4, 0xF5, 0x66, 0xCA, 0x03, 0xF6, +0x81, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x03, 0xF6, 0x61, 0xC2, 0x63, 0xF6, 0x5F, 0xA2, +0x04, 0x22, 0x00, 0x6C, 0x02, 0x6D, 0x00, 0x18, +0xBF, 0xC8, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x00, 0x18, +0xD9, 0xDE, 0x05, 0x97, 0x30, 0xF0, 0x20, 0x6B, +0x28, 0xF7, 0x18, 0x4B, 0x00, 0x6C, 0x86, 0xDB, +0x87, 0xDB, 0x44, 0xDB, 0x45, 0xDB, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x30, 0xF0, 0x20, 0x6F, 0x24, 0x6A, 0x04, 0x6C, +0x03, 0x6D, 0x02, 0x6E, 0x28, 0xF7, 0x18, 0x4F, +0x04, 0xD2, 0x80, 0x18, 0x68, 0x69, 0x07, 0x97, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x28, 0xF7, 0x18, 0x4A, 0x00, 0x6B, 0xFF, 0x68, +0x68, 0xC2, 0x8C, 0xE8, 0x00, 0x18, 0xB3, 0xC8, +0x4A, 0x22, 0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, +0x00, 0x49, 0xC0, 0xF0, 0x4A, 0xA1, 0xC0, 0xF0, +0x6B, 0xA1, 0x58, 0xEB, 0x12, 0xEA, 0x83, 0xF6, +0x49, 0xC1, 0x00, 0x18, 0x15, 0xC6, 0x04, 0x22, +0x83, 0xF6, 0x29, 0xA1, 0x04, 0xD1, 0x06, 0x10, +0xC0, 0xF0, 0x4B, 0xA1, 0x01, 0x72, 0x33, 0x61, +0x01, 0x6A, 0x04, 0xD2, 0x7D, 0x67, 0x47, 0x43, +0x09, 0x4A, 0x60, 0xA2, 0x04, 0x92, 0x30, 0xF0, +0x20, 0x69, 0x8B, 0xF1, 0x00, 0x49, 0x02, 0x5A, +0x83, 0xF6, 0x6A, 0xC1, 0x14, 0x61, 0x00, 0x18, +0x15, 0xC6, 0x06, 0x22, 0x90, 0x67, 0x00, 0x18, +0xAD, 0xE9, 0x90, 0x67, 0x00, 0x18, 0xA6, 0xE9, +0x90, 0x67, 0x00, 0x18, 0x76, 0xE9, 0x04, 0x95, +0x90, 0x67, 0x00, 0x18, 0x61, 0xEB, 0x90, 0x67, +0x00, 0x18, 0xAD, 0xE9, 0x10, 0x10, 0x90, 0x67, +0x00, 0x18, 0x87, 0xE9, 0x03, 0xF6, 0x61, 0xA1, +0x10, 0x6A, 0x6C, 0xEA, 0x08, 0x2A, 0x83, 0xF6, +0xA9, 0xA1, 0x90, 0x67, 0x00, 0x18, 0x61, 0xEB, +0x90, 0x67, 0x00, 0x18, 0x76, 0xE9, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE8, 0xF6, 0x10, 0x4A, 0x6A, 0xA2, 0x01, 0x4B, -0x6A, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xAE, 0xF7, -0x7E, 0xA3, 0x01, 0x73, 0x0E, 0x61, 0x1B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, 0x10, 0x4A, +0x28, 0xF7, 0x18, 0x4A, 0x6A, 0xA2, 0x01, 0x4B, +0x6A, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x0F, 0xF0, +0x6A, 0xA3, 0x01, 0x73, 0x0E, 0x61, 0x1B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF7, 0x18, 0x4A, 0x69, 0xA2, 0x01, 0x4B, 0x69, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0xAE, 0xF7, 0x7E, 0xA3, 0x01, 0x73, +0x20, 0x6B, 0x0F, 0xF0, 0x6A, 0xA3, 0x01, 0x73, 0x0E, 0x61, 0x68, 0xA2, 0x01, 0x4B, 0x68, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, 0x58, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF7, 0x40, 0xA2, 0x0A, 0x5A, 0x00, 0x6A, 0x05, 0x61, 0x00, 0x18, -0x9C, 0xC8, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, +0xF9, 0xC8, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x12, 0x2C, 0x10, 0xF0, 0x23, 0x6C, -0x87, 0xF4, 0x19, 0x4C, 0x00, 0x18, 0xB9, 0xE6, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x83, 0xF6, 0x87, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0x83, 0xF6, 0x67, 0xC2, 0x29, 0x10, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, +0x68, 0xF1, 0x05, 0x4C, 0x00, 0x18, 0x5E, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x83, 0xF6, 0x8B, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x83, 0xF6, 0x6B, 0xC2, 0x29, 0x10, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xC0, 0xF0, 0x89, 0xA0, 0x04, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x1F, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0xE8, 0xF6, 0x10, 0x4A, 0x66, 0xA2, 0xC0, 0xF0, +0x28, 0xF7, 0x18, 0x4A, 0x66, 0xA2, 0xC0, 0xF0, 0xCC, 0xA0, 0x10, 0xF0, 0x23, 0x6C, 0x01, 0x4B, 0x66, 0xC2, 0x0A, 0x6B, 0x78, 0xEE, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x87, 0xF4, 0x19, 0x4C, 0x00, 0x6D, +0x4C, 0x9A, 0x68, 0xF1, 0x05, 0x4C, 0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEA, 0x83, 0xF6, -0x67, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0x83, 0xF6, -0x47, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, +0x6B, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0x83, 0xF6, +0x4B, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x00, 0x18, -0x1A, 0xEB, 0x08, 0x20, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xFF, 0x6C, -0xC5, 0x67, 0x40, 0xEA, 0x01, 0x6C, 0x04, 0x6D, -0x00, 0x18, 0xD7, 0xC5, 0x04, 0x6C, 0x80, 0x18, -0xBF, 0x70, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x74, 0x9B, 0x63, 0xF6, 0x98, 0x9A, 0x8C, 0xEB, -0x04, 0x73, 0x0C, 0x61, 0xE3, 0xF5, 0x7F, 0xA2, -0x04, 0x6C, 0x8C, 0xEB, 0x07, 0x23, 0x01, 0x6B, -0x63, 0xF6, 0x7A, 0xC2, 0x01, 0x6C, 0x00, 0x6D, -0x00, 0x18, 0x62, 0xC8, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0x2B, 0xF1, 0x18, 0x49, 0x40, 0xF1, 0x76, 0xA1, -0x01, 0x6A, 0x6C, 0xEA, 0x20, 0x22, 0x00, 0x18, -0x80, 0xD6, 0x1B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x58, 0x9A, 0x40, 0xA2, 0x15, 0x2A, -0x43, 0xF6, 0x68, 0xA1, 0x40, 0xF1, 0x57, 0xA1, -0x43, 0xEB, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x5C, 0x9A, 0x00, 0xA2, 0xFF, 0x6A, -0x4C, 0xE8, 0x07, 0x28, 0x06, 0x6C, 0x01, 0x6D, -0x80, 0x18, 0x20, 0x01, 0x43, 0xF6, 0x08, 0xC1, -0x02, 0x10, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0xB3, 0x41, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x60, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, -0x80, 0xAB, 0x8C, 0xEA, 0x02, 0xF4, 0x03, 0x6C, -0x4C, 0xEC, 0x80, 0xCB, 0x40, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xCE, 0xF7, 0x23, 0xA2, 0x35, 0x10, -0xD0, 0xF3, 0x44, 0x41, 0x4C, 0x32, 0x09, 0xE2, -0xC2, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0xA3, 0xF6, -0xEC, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0x83, 0xF6, -0xBC, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, 0xE0, 0xF2, -0x58, 0x9A, 0x16, 0xF3, 0x08, 0x4B, 0x00, 0x6C, -0xB5, 0xE3, 0x40, 0xEA, 0x01, 0x72, 0x12, 0x61, -0x06, 0x92, 0x05, 0x6C, 0x01, 0x49, 0xA3, 0xF6, -0x6C, 0x9A, 0x83, 0xF6, 0x5C, 0x98, 0x49, 0xE3, -0x83, 0xF6, 0x5C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0xFF, 0x6A, -0x4C, 0xE9, 0x07, 0x10, 0x24, 0xF5, 0x58, 0x98, -0x08, 0x6B, 0x6D, 0xEA, 0x24, 0xF5, 0x58, 0xD8, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x83, 0xF6, 0x4B, 0xA0, 0x08, 0x4A, -0x42, 0xE9, 0xC2, 0x61, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x83, 0xF6, 0x2B, 0xC0, -0x00, 0x18, 0xDC, 0xD4, 0x01, 0x2A, 0xFF, 0x17, -0x00, 0x18, 0x4F, 0xC7, 0xE4, 0xF4, 0x94, 0xA8, -0xFF, 0xF7, 0x1F, 0x69, 0x00, 0x6D, 0xFF, 0x4C, -0x2C, 0xEC, 0x00, 0x18, 0x39, 0xE9, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x64, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF1, 0x98, 0x9C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x48, 0x9A, 0x04, 0x6C, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x4C, 0x9A, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x70, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF4, 0x78, 0x98, -0xE3, 0xF1, 0x54, 0x9A, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF4, 0x7C, 0x98, 0xE3, 0xF1, -0x58, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x5C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, 0x4C, 0xA2, -0x1E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF5, -0x68, 0x98, 0x03, 0xF2, 0x40, 0x9A, 0xFF, 0x6C, -0x80, 0x6D, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x44, 0x9A, 0xAB, 0xED, 0x40, 0xAA, -0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x48, 0x9A, 0x20, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x78, 0x9A, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xF5, 0x94, 0xA2, 0x03, 0xF2, -0x6C, 0x9B, 0x80, 0xC3, 0x04, 0xF5, 0x75, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x50, 0x9A, -0x60, 0xC2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6B, 0x8C, 0xEB, -0x01, 0x6A, 0x60, 0x2B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x54, 0x9A, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x4C, 0xEB, -0x00, 0x6A, 0x54, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0xCE, 0xF7, 0x40, 0xA2, 0x01, 0x72, 0x02, 0x61, -0x00, 0x18, 0x39, 0xC7, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x01, 0x6C, 0x00, 0x18, -0x18, 0xE9, 0x83, 0xF6, 0x4A, 0xA0, 0x00, 0x69, -0x83, 0xF6, 0x4B, 0xC0, 0x83, 0xF6, 0x58, 0x98, -0x83, 0xF6, 0x38, 0xD8, 0x83, 0xF6, 0x5C, 0xD8, -0x00, 0x6A, 0x83, 0xF6, 0x4A, 0xC0, 0x00, 0x18, -0x5C, 0xC7, 0x00, 0x18, 0x2F, 0xC9, 0x00, 0x18, -0x94, 0xC7, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF6, -0xB4, 0x98, 0x83, 0xF6, 0xCC, 0x98, 0x83, 0xF6, -0xF0, 0x98, 0xE0, 0xF2, 0x58, 0x9A, 0x04, 0xD1, -0x05, 0xD1, 0x91, 0x67, 0x40, 0xEA, 0x01, 0x72, -0x06, 0x60, 0x24, 0xF5, 0x58, 0x98, 0x20, 0x6B, -0x6D, 0xEA, 0x24, 0xF5, 0x58, 0xD8, 0x00, 0x18, -0xEC, 0xC7, 0x01, 0x6C, 0x00, 0x18, 0xF3, 0xC6, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x74, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF2, 0x9C, 0x9C, -0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, -0x83, 0xF6, 0x6A, 0xC2, 0x00, 0x6B, 0x83, 0xF6, -0x78, 0xDA, 0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xDD, 0x63, 0x45, 0x62, 0x44, 0xD1, 0x43, 0xD0, -0x30, 0xF0, 0x20, 0x6D, 0x1D, 0x04, 0x22, 0xF2, -0x0C, 0x4D, 0x80, 0x6E, 0x00, 0x18, 0x42, 0xD7, -0x30, 0xF0, 0x20, 0x6D, 0x06, 0x04, 0xC2, 0xF1, -0x10, 0x4D, 0x5C, 0x6E, 0x00, 0x18, 0x42, 0xD7, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x78, 0x9A, -0x80, 0x6D, 0xFF, 0x6A, 0x80, 0xA3, 0xAB, 0xED, -0x8C, 0xEA, 0xAC, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xE8, 0xF6, 0x4C, 0xC4, 0xE8, 0xF6, 0x4C, 0xA4, -0x04, 0x22, 0x80, 0xA3, 0x7F, 0x6A, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xEE, 0xF7, -0x00, 0x4C, 0x1D, 0x05, 0x80, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x00, 0x6B, 0x83, 0xF6, 0x6A, 0xC2, 0x00, 0x6B, -0x83, 0xF6, 0x78, 0xDA, 0x3E, 0x02, 0x1E, 0x00, -0x40, 0xD2, 0x23, 0x67, 0x00, 0x6A, 0xFF, 0xF7, -0xBC, 0x98, 0xE0, 0x98, 0x04, 0xD2, 0x05, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6E, -0xE0, 0xF2, 0x58, 0x9A, 0x16, 0xF3, 0x08, 0x4E, -0x00, 0x6C, 0x39, 0xE6, 0x40, 0xEA, 0x0A, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x24, 0xF5, 0x78, 0x9A, 0x01, 0x6C, 0x8D, 0xEB, -0x24, 0xF5, 0x78, 0xDA, 0x40, 0x98, 0x14, 0x6C, -0x08, 0x48, 0x3E, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x40, 0x92, -0x4A, 0xE8, 0x03, 0x60, 0x3E, 0x92, 0x45, 0xE1, -0xD5, 0x17, 0x30, 0xF0, 0x20, 0x68, 0x1D, 0x02, -0x06, 0x01, 0x6F, 0xF0, 0x00, 0x48, 0x41, 0xD2, -0x40, 0x99, 0xFF, 0xF7, 0x1F, 0x6C, 0x01, 0x6D, -0x40, 0xD8, 0x4C, 0xEC, 0xAB, 0xED, 0x80, 0x18, -0x0D, 0x28, 0x41, 0xD8, 0x41, 0x92, 0x04, 0x49, -0x08, 0x48, 0x4A, 0xE9, 0x58, 0x67, 0x3E, 0xD2, -0xEF, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, -0x54, 0x9A, 0x38, 0x6C, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xEA, 0x2B, 0xF1, 0x18, 0x48, 0xE3, 0xF7, -0x40, 0xD8, 0x00, 0x18, 0x7B, 0xD6, 0xE4, 0xF4, -0x54, 0xC8, 0xE4, 0xF4, 0xB4, 0xA8, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x40, 0x9A, 0x83, 0xF6, -0xF0, 0x98, 0xBC, 0x35, 0x30, 0xF0, 0x21, 0x6E, -0x55, 0xE5, 0x19, 0xF1, 0x08, 0x4E, 0x02, 0xF0, -0x01, 0x5F, 0x83, 0xF6, 0xAC, 0xD8, 0x83, 0xF6, -0xD4, 0xD8, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0x70, 0x9B, 0xC0, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x48, 0x9A, 0x01, 0x6D, -0xE0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x8C, 0x9A, 0x40, 0x9C, 0x6D, 0xEA, 0x40, 0xDC, -0xA3, 0xF3, 0x40, 0x98, 0x04, 0x6C, 0x6D, 0xEA, -0xA3, 0xF3, 0x40, 0xD8, 0x80, 0x18, 0x20, 0x01, -0xFF, 0x17, 0x3E, 0x91, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF2, 0x58, 0x9A, 0x04, 0xD1, 0x05, 0xD1, -0x00, 0x6C, 0x40, 0xEA, 0x06, 0x2A, 0x24, 0xF5, -0x58, 0x98, 0x02, 0x6B, 0x6D, 0xEA, 0x24, 0xF5, -0x58, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF2, -0x68, 0xA2, 0x01, 0x6A, 0x00, 0x68, 0x6C, 0xEA, -0x11, 0x2A, 0x18, 0x10, 0x18, 0x6D, 0xB8, 0xE8, -0x49, 0xE0, 0x24, 0xF5, 0x80, 0xA2, 0x30, 0xF0, -0x20, 0x6B, 0x0F, 0xF1, 0x1C, 0x4B, 0x01, 0x48, -0x12, 0xED, 0xB5, 0xE3, 0x00, 0x18, 0xEE, 0xC4, -0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x04, 0xF5, 0x7C, 0xA2, -0x63, 0xE8, 0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x83, 0xF6, 0x68, 0xA2, -0x12, 0x23, 0xC0, 0xF0, 0x70, 0xA2, 0x01, 0x6A, -0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x68, -0xCF, 0xF1, 0x1C, 0x48, 0x00, 0x69, 0x91, 0x67, -0xB0, 0x67, 0x01, 0x49, 0x00, 0x18, 0xEE, 0xC4, -0x04, 0x71, 0x18, 0x48, 0xF8, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xC0, 0xF0, -0x90, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x49, 0x23, -0x04, 0xF5, 0xD9, 0xA2, 0x00, 0x6C, 0x30, 0xF0, -0x20, 0x6A, 0xEF, 0xF5, 0x1C, 0x4A, 0x01, 0x6B, -0xA4, 0x67, 0x3B, 0x10, 0x30, 0xF0, 0x20, 0x68, -0x03, 0xF1, 0x18, 0x98, 0x1F, 0x6F, 0x8C, 0xEF, -0x00, 0xF6, 0xE0, 0x37, 0x0D, 0xEF, 0x30, 0xF0, -0x20, 0x68, 0xC3, 0xF1, 0x10, 0x98, 0xE0, 0xD8, -0x30, 0xF0, 0x20, 0x6F, 0xC3, 0xF1, 0xF0, 0x9F, -0xE0, 0x9F, 0x00, 0x57, 0x0B, 0x60, 0xFF, 0x68, -0x01, 0x4B, 0x0A, 0x6F, 0x0C, 0xEB, 0xFB, 0xEB, -0x01, 0x2F, 0xE5, 0xE8, 0x10, 0xEF, 0x0C, 0xEF, -0xEF, 0x2F, 0x19, 0x25, 0x30, 0xF0, 0x20, 0x6D, -0xC3, 0xF1, 0xA8, 0x9D, 0xA0, 0x9D, 0xA2, 0x37, -0xA0, 0xC2, 0x00, 0xF6, 0xA2, 0x35, 0xA3, 0xC2, -0x30, 0xF0, 0x20, 0x6D, 0xC3, 0xF1, 0xB0, 0x9D, -0xE1, 0xC2, 0xE2, 0x37, 0xE2, 0xC2, 0xE0, 0xAD, -0xFF, 0xF7, 0x1F, 0x6D, 0xEC, 0xED, 0xA4, 0xC2, -0xA2, 0x35, 0xA5, 0xC2, 0x01, 0x6D, 0x01, 0x4C, -0x06, 0x4A, 0xFF, 0x6F, 0x8C, 0xEF, 0xC3, 0xEF, -0xC1, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, 0x23, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x30, 0xF0, 0x20, 0x69, -0x80, 0x18, 0x0D, 0x28, 0x2B, 0xF1, 0x18, 0x49, -0x04, 0xF5, 0x4C, 0xD9, 0xC0, 0xF3, 0x44, 0x98, -0x0A, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, -0x40, 0xEA, 0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0x0D, 0x28, 0x04, 0xF5, -0x50, 0xD9, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0x00, 0x18, 0xDC, 0xD4, 0x45, 0x97, 0x44, 0x91, -0x43, 0x90, 0x23, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x6A, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x58, 0x9A, 0xA3, 0xF1, 0xAC, 0x9B, 0x30, 0xF0, -0x21, 0x6E, 0x00, 0x6C, 0xF9, 0xF0, 0x08, 0x4E, -0x20, 0x6F, 0x40, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x24, 0xF5, -0x78, 0x9A, 0x01, 0x6C, 0x8D, 0xEB, 0x24, 0xF5, -0x78, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x83, 0xF6, -0x69, 0xA2, 0x05, 0x23, 0x00, 0x6B, 0x83, 0xF6, -0x69, 0xC2, 0x00, 0x18, 0xD0, 0xC9, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x70, 0x9A, 0xFD, 0x6A, -0x30, 0xF0, 0x20, 0x68, 0x80, 0xA3, 0xEF, 0xF3, -0x1C, 0x48, 0x00, 0x69, 0x8C, 0xEA, 0x40, 0xC3, -0x00, 0x6C, 0x00, 0x18, 0xF3, 0xC6, 0x00, 0x6C, -0x00, 0x18, 0x18, 0xE9, 0x91, 0x67, 0xB0, 0x67, -0x01, 0x49, 0x00, 0x18, 0x50, 0xC5, 0x40, 0x71, -0x08, 0x48, 0xF8, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x54, 0x9A, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE4, 0xF4, -0x78, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, -0x78, 0x9B, 0x60, 0x9B, 0xE4, 0xF4, 0x7C, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0x74, 0x9B, -0x60, 0x9B, 0x04, 0xF5, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF2, 0x78, 0x9B, 0x60, 0x9B, -0x04, 0xF5, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0x7C, 0x9B, 0x60, 0xA3, 0x04, 0xF5, -0x76, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, -0x60, 0x9B, 0x60, 0x9B, 0x04, 0xF5, 0x68, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x6C, 0x9B, -0x60, 0xA3, 0x04, 0xF5, 0x74, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF2, 0x70, 0x9B, 0x60, 0xA3, -0x04, 0xF5, 0x75, 0xC2, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x68, 0x8C, 0xE8, 0x00, 0x18, 0x7B, 0xD6, -0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0x1C, 0x30, -0x23, 0xF2, 0x00, 0x4B, 0x60, 0x9B, 0x04, 0xD0, -0xB0, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF2, -0x4C, 0x98, 0x30, 0xF0, 0x21, 0x69, 0x92, 0xF5, -0x06, 0x49, 0x30, 0x4D, 0x75, 0xE5, 0x91, 0x67, -0x02, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6E, -0x04, 0x95, 0x23, 0xF2, 0x00, 0x4E, 0xC0, 0x9E, -0x80, 0xF2, 0x4C, 0x98, 0x87, 0x41, 0x32, 0x4D, -0xD5, 0xE5, 0x10, 0x4C, 0x02, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0x95, 0x23, 0xF2, -0x00, 0x4B, 0x60, 0x9B, 0x80, 0xF2, 0x4C, 0x98, -0x34, 0x4D, 0x30, 0xF0, 0x21, 0x6C, 0x75, 0xE5, -0x52, 0xF6, 0x00, 0x4C, 0x04, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0x96, 0x23, 0xF2, -0x00, 0x4B, 0x60, 0x9B, 0x80, 0xF2, 0x4C, 0x98, -0x38, 0x4E, 0x87, 0x41, 0x75, 0xE6, 0x04, 0xD6, -0x13, 0x4C, 0xA0, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0x96, 0x43, 0xF2, 0xA0, 0x9B, -0x80, 0xF2, 0x4C, 0x98, 0x87, 0x41, 0xB5, 0xE6, -0x0B, 0x4C, 0x01, 0x6E, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, -0x8C, 0xE8, 0x00, 0x18, 0x7B, 0xD6, 0x01, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x6C, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0xA4, 0x9A, -0x1C, 0x30, 0x30, 0xF0, 0x20, 0x6C, 0xB5, 0xE0, -0x4F, 0xF6, 0x10, 0x4C, 0x10, 0x6E, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x04, 0xF5, 0x7D, 0xA2, 0x7C, 0x33, 0x83, 0xF6, -0x70, 0xDA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x00, 0x18, -0x7B, 0xD6, 0x01, 0xE2, 0x1C, 0x34, 0x30, 0x4C, -0x80, 0x18, 0xF0, 0x07, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xFF, 0x68, 0x8C, 0xE8, 0xE3, 0xF5, -0x9C, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, 0x41, 0x6D, -0x8C, 0xEB, 0xAB, 0xED, 0xAC, 0xEB, 0xE3, 0xF5, -0xBD, 0xA2, 0xE3, 0xF5, 0x7C, 0xC2, 0x11, 0x6B, -0x00, 0x6C, 0x6B, 0xEB, 0x03, 0xF6, 0x89, 0xC2, -0x03, 0xF6, 0x81, 0xC2, 0xAC, 0xEB, 0x03, 0xF6, -0x8A, 0xC2, 0x90, 0x67, 0xE3, 0xF5, 0x7D, 0xC2, -0x00, 0x18, 0xE2, 0xE7, 0x90, 0x67, 0x00, 0x18, -0xDB, 0xE7, 0x90, 0x67, 0x00, 0x18, 0xF7, 0xE7, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xF2, 0x63, 0x1B, 0x62, 0x1A, 0xD1, 0x19, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0x2B, 0xF1, -0x18, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE9, -0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, -0x40, 0xEA, 0x01, 0x72, 0x4E, 0x61, 0xE3, 0xF5, -0x7D, 0xA0, 0x09, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xE3, 0xF5, 0x5D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0x6F, 0x6D, -0x2C, 0x6E, 0x40, 0xEA, 0x0C, 0x04, 0x00, 0x6D, -0x30, 0x6E, 0x00, 0x18, 0x3D, 0xD7, 0xA0, 0xF0, -0x4A, 0xA0, 0x7D, 0x67, 0x40, 0xF0, 0x2C, 0xC3, -0x40, 0xF0, 0x48, 0xCB, 0x01, 0x6A, 0x40, 0xF0, -0x4A, 0xC3, 0x08, 0x6A, 0x40, 0xF0, 0x4B, 0xC3, -0x10, 0xF0, 0x23, 0x6A, 0x46, 0xF1, 0x11, 0x4A, -0x0C, 0xD2, 0x10, 0xF0, 0x23, 0x6A, 0xC3, 0xF0, -0x09, 0x4A, 0x0D, 0xD2, 0x04, 0x04, 0x00, 0x6A, -0x10, 0x03, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, -0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, -0xF9, 0x61, 0x0C, 0x94, 0x0D, 0x95, 0x0E, 0x96, -0x0F, 0x97, 0x00, 0x18, 0x1A, 0xE5, 0x11, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE3, 0xF5, 0x9D, 0xA2, 0x02, 0x6B, 0x0E, 0x6D, -0x8D, 0xEB, 0xE3, 0xF5, 0x7D, 0xC2, 0x01, 0x6C, -0x00, 0x18, 0xD7, 0xC5, 0x0E, 0x6C, 0x80, 0x18, -0xBF, 0x70, 0x1B, 0x97, 0x1A, 0x91, 0x19, 0x90, -0x0E, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x80, 0x18, 0xCA, 0x05, -0xE3, 0xF5, 0x5F, 0xA0, 0x01, 0x6C, 0xF0, 0x6D, -0x06, 0xD2, 0x00, 0x18, 0xD7, 0xC5, 0x00, 0x18, -0x11, 0xC9, 0x80, 0xF0, 0x05, 0x22, 0x00, 0x18, -0x86, 0xE9, 0x83, 0xF6, 0x48, 0xA0, 0x64, 0x22, -0x00, 0x18, 0x9C, 0xCA, 0x5C, 0xB9, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, 0x21, 0x6C, -0xFC, 0xF7, 0x1C, 0x4C, 0xBD, 0x67, 0xA0, 0xDC, -0x9A, 0xB8, 0x00, 0x65, 0xBB, 0xB8, 0x00, 0x65, -0x00, 0x18, 0x1D, 0xE2, 0x30, 0xF0, 0x21, 0x69, -0xDC, 0xF7, 0x0C, 0x49, 0x00, 0x99, 0x32, 0xE8, -0x01, 0x99, 0x30, 0xE8, 0x42, 0x99, 0x63, 0x99, -0x84, 0x99, 0xA5, 0x99, 0xC6, 0x99, 0xE7, 0x99, -0x08, 0x99, 0x18, 0x65, 0x09, 0x99, 0x58, 0xB9, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, -0x21, 0x68, 0xDC, 0xF7, 0x0C, 0x48, 0x2A, 0x98, -0x1A, 0xB8, 0x00, 0x65, 0x58, 0xB9, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x79, 0xB9, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, 0x21, 0x69, -0x9C, 0xF7, 0x0C, 0x49, 0x09, 0xD9, 0x12, 0xE8, -0x00, 0xD9, 0x10, 0xE8, 0x01, 0xD9, 0x42, 0xD9, -0x63, 0xD9, 0x84, 0xD9, 0xA5, 0xD9, 0xC6, 0xD9, -0xE7, 0xD9, 0x18, 0x67, 0x08, 0xD9, 0x1F, 0x67, -0x0B, 0xD9, 0x1D, 0x67, 0x0C, 0xD9, 0x1F, 0xF7, -0x32, 0x68, 0x46, 0xF4, 0x16, 0x48, 0xFF, 0xF7, -0x1C, 0xD9, 0x30, 0xF0, 0x21, 0x68, 0x9C, 0xF7, -0x0C, 0x48, 0x3B, 0xB8, 0x00, 0x65, 0x2A, 0xD8, -0x1A, 0xB8, 0x00, 0x65, 0x00, 0x18, 0xF6, 0xE1, -0x00, 0x6C, 0x00, 0x18, 0x99, 0xC9, 0x10, 0x10, -0x00, 0x6C, 0x00, 0x18, 0x18, 0xE9, 0x00, 0x6C, -0x00, 0x18, 0xF3, 0xC6, 0x00, 0x18, 0x1D, 0xE2, -0x00, 0x18, 0xF6, 0xE1, 0x01, 0x6C, 0x00, 0x18, -0xF3, 0xC6, 0x01, 0x6C, 0x00, 0x18, 0x18, 0xE9, -0x00, 0x6A, 0x82, 0x67, 0xA2, 0x67, 0x01, 0x6E, -0xE2, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xDD, 0x67, -0x06, 0x95, 0x01, 0x6C, 0x00, 0x18, 0xD7, 0xC5, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0x00, 0x6D, 0xC5, 0x67, 0xFF, 0x6C, -0x40, 0xEA, 0x04, 0x6D, 0x01, 0x6C, 0x00, 0x18, -0xD7, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, -0x16, 0xA2, 0x90, 0x67, 0x80, 0x18, 0x58, 0x6F, -0x40, 0x6B, 0x4D, 0xEB, 0xFF, 0x6D, 0x90, 0x67, -0x6C, 0xED, 0x80, 0x18, 0x4B, 0x6F, 0x04, 0x6C, -0x80, 0x18, 0xBF, 0x70, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0x2E, 0x6E, 0xFF, 0x6C, 0x6F, 0x6D, -0x40, 0xEA, 0x02, 0x6D, 0x01, 0x6C, 0x00, 0x18, -0xD7, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, -0x16, 0xA2, 0x90, 0x67, 0x80, 0x18, 0x58, 0x6F, -0xBF, 0x6D, 0x90, 0x67, 0x4C, 0xED, 0x80, 0x18, -0x4B, 0x6F, 0x02, 0x6C, 0x80, 0x18, 0xBF, 0x70, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x44, 0xF5, 0x76, 0xAA, 0xFF, 0x68, +0x8C, 0xE8, 0x01, 0x4B, 0x44, 0xF5, 0x76, 0xCA, +0x00, 0x18, 0xBF, 0xEC, 0x08, 0x20, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, +0x00, 0x6D, 0x68, 0x6E, 0x40, 0xEA, 0x01, 0x6C, +0x04, 0x6D, 0x00, 0x18, 0xD7, 0xC5, 0x04, 0x6C, +0x80, 0x18, 0xA7, 0x72, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x78, 0x9B, 0x63, 0xF6, 0x9C, 0x9A, +0x8C, 0xEB, 0x04, 0x73, 0x0C, 0x61, 0x03, 0xF6, +0x63, 0xA2, 0x04, 0x6C, 0x8C, 0xEB, 0x07, 0x23, +0x01, 0x6B, 0x63, 0xF6, 0x7E, 0xC2, 0x01, 0x6C, +0x00, 0x6D, 0x00, 0x18, 0xBF, 0xC8, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x18, +0x15, 0xC6, 0x4E, 0x2A, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0xC0, 0xF0, 0x5F, 0xA0, +0xC0, 0xF0, 0x9F, 0xA0, 0x24, 0xF5, 0x4C, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, +0x40, 0xEA, 0x24, 0xF5, 0x4D, 0xC0, 0xA0, 0xF0, +0x5E, 0xA0, 0xA0, 0xF0, 0x7C, 0xA0, 0x30, 0xF0, +0x20, 0x6E, 0x56, 0x32, 0x24, 0xF5, 0x4E, 0xC0, +0x63, 0xF6, 0x5C, 0xA0, 0x04, 0x6C, 0x02, 0x6D, +0x24, 0xF5, 0x4F, 0xC0, 0x03, 0xF6, 0x43, 0xA0, +0xAF, 0xF6, 0x0C, 0x4E, 0x88, 0x6F, 0x24, 0xF5, +0x50, 0xC0, 0x0F, 0x6A, 0x6C, 0xEA, 0x24, 0xF5, +0x51, 0xC0, 0xA0, 0xF0, 0x5C, 0xA0, 0x03, 0xF6, +0x60, 0xA0, 0x52, 0x32, 0x24, 0xF5, 0x52, 0xC0, +0x01, 0x6A, 0x6C, 0xEA, 0x24, 0xF5, 0x53, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, 0x48, 0x9A, +0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0x24, 0xF5, +0x54, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0x5C, 0x9A, 0x60, 0xA2, 0xF8, 0x6A, 0x6C, 0xEA, +0x24, 0xF5, 0x56, 0xC8, 0x03, 0xF6, 0x4C, 0xA0, +0x24, 0xF5, 0x58, 0xC0, 0x00, 0x18, 0xE0, 0xDD, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, 0x80, 0xA2, +0x04, 0x6B, 0x8C, 0xEB, 0x0E, 0x23, 0x05, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x03, 0xF6, 0x60, 0xC2, +0x01, 0x6D, 0x01, 0x6A, 0x7D, 0x67, 0x50, 0xC3, +0x03, 0x6C, 0x04, 0x06, 0xE5, 0x67, 0x00, 0x18, +0xE0, 0xDD, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xE3, 0xF5, 0x7D, 0xA0, 0x08, 0x6A, 0xFF, 0x69, -0x6C, 0xEA, 0x2C, 0xEA, 0x2C, 0xEC, 0x0C, 0x2A, -0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0xD7, 0xC5, -0x63, 0xF6, 0x5B, 0xA0, 0x49, 0x22, 0x00, 0x6C, -0xA4, 0x67, 0x00, 0x18, 0x62, 0xC8, 0x44, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, -0x01, 0x6D, 0x40, 0xEA, 0x01, 0x6C, 0x04, 0x6D, +0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, 0x00, 0x49, +0x40, 0xF1, 0x76, 0xA1, 0x01, 0x6A, 0x6C, 0xEA, +0x20, 0x22, 0x00, 0x18, 0xDB, 0xD7, 0x1B, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x40, 0x9A, +0x40, 0xA2, 0x15, 0x2A, 0x43, 0xF6, 0x6C, 0xA1, +0x40, 0xF1, 0x57, 0xA1, 0x43, 0xEB, 0x11, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x44, 0x9A, +0x00, 0xA2, 0xFF, 0x6A, 0x4C, 0xE8, 0x07, 0x28, +0x06, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x20, 0x01, +0x43, 0xF6, 0x0C, 0xC1, 0x02, 0x10, 0x00, 0x6A, +0x01, 0x10, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xBD, 0x41, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x68, 0x9A, +0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, +0x02, 0xF4, 0x03, 0x6C, 0x4C, 0xEC, 0x80, 0xCB, +0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF0, +0x2F, 0xA2, 0x35, 0x10, 0xD0, 0xF3, 0x45, 0x41, +0x4C, 0x32, 0x09, 0xE2, 0xC1, 0x9A, 0x2C, 0x32, +0x09, 0xE2, 0xA3, 0xF6, 0xF0, 0x9A, 0x06, 0xD2, +0x00, 0x6A, 0xA3, 0xF6, 0xA0, 0x98, 0x04, 0xD2, +0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x21, 0x6B, 0xE0, 0xF2, 0x58, 0x9A, 0xD6, 0xF3, +0x10, 0x4B, 0x00, 0x6C, 0xB5, 0xE3, 0x40, 0xEA, +0x01, 0x72, 0x12, 0x61, 0x06, 0x92, 0x05, 0x6C, +0x01, 0x49, 0xA3, 0xF6, 0x70, 0x9A, 0xA3, 0xF6, +0x40, 0x98, 0x49, 0xE3, 0xA3, 0xF6, 0x40, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x40, 0xEA, 0xFF, 0x6A, 0x4C, 0xE9, 0x07, 0x10, +0x84, 0xF5, 0x50, 0x98, 0x08, 0x6B, 0x6D, 0xEA, +0x84, 0xF5, 0x50, 0xD8, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x83, 0xF6, +0x4F, 0xA0, 0x08, 0x4A, 0x42, 0xE9, 0xC2, 0x61, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x83, 0xF6, 0x2F, 0xC0, 0x00, 0x18, 0x2C, 0xD6, +0x01, 0x2A, 0xFF, 0x17, 0x00, 0x18, 0x89, 0xC7, +0xE4, 0xF4, 0x98, 0xA8, 0xFF, 0xF7, 0x1F, 0x69, +0x00, 0x6D, 0xFF, 0x4C, 0x2C, 0xEC, 0x00, 0x18, +0xDE, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, +0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF1, +0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x50, 0x9A, +0x04, 0x6C, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF2, 0x54, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF2, 0x78, 0x9A, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF4, 0x7C, 0x98, 0x03, 0xF2, 0x5C, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF5, +0x60, 0x98, 0x23, 0xF2, 0x40, 0x9A, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x44, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x28, 0xF7, 0x54, 0xA2, 0x1E, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF5, 0x6C, 0x98, 0x23, 0xF2, +0x48, 0x9A, 0xFF, 0x6C, 0x80, 0x6D, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, +0xAB, 0xED, 0x40, 0xAA, 0x4C, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF2, 0x50, 0x9A, 0x20, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x7C, 0x9A, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF5, +0x98, 0xA2, 0x23, 0xF2, 0x74, 0x9B, 0x80, 0xC3, +0x04, 0xF5, 0x79, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF2, 0x58, 0x9A, 0x60, 0xC2, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6B, 0x8C, 0xEB, 0x01, 0x6A, 0x60, 0x2B, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x5C, 0x9A, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, +0x40, 0x9A, 0x4C, 0xEB, 0x00, 0x6A, 0x54, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF0, 0x4C, 0xA2, +0x01, 0x72, 0x02, 0x61, 0x00, 0x18, 0x73, 0xC7, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x01, 0x6C, 0x00, 0x18, 0xBD, 0xEA, 0x83, 0xF6, +0x4E, 0xA0, 0x00, 0x69, 0x83, 0xF6, 0x4F, 0xC0, +0x83, 0xF6, 0x5C, 0x98, 0x83, 0xF6, 0x3C, 0xD8, +0xA3, 0xF6, 0x40, 0xD8, 0x00, 0x6A, 0x83, 0xF6, +0x4E, 0xC0, 0x00, 0x18, 0x96, 0xC7, 0x00, 0x18, +0xDC, 0xC9, 0x00, 0x18, 0xCE, 0xC7, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF6, 0xB8, 0x98, 0x83, 0xF6, +0xD0, 0x98, 0x83, 0xF6, 0xF4, 0x98, 0xE0, 0xF2, +0x58, 0x9A, 0x04, 0xD1, 0x05, 0xD1, 0x91, 0x67, +0x40, 0xEA, 0x01, 0x72, 0x06, 0x60, 0x84, 0xF5, +0x50, 0x98, 0x20, 0x6B, 0x6D, 0xEA, 0x84, 0xF5, +0x50, 0xD8, 0x00, 0x18, 0x26, 0xC8, 0x01, 0x6C, +0x00, 0x18, 0x2D, 0xC7, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF2, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x43, 0xF2, 0x84, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x00, 0x6B, 0x83, 0xF6, 0x6E, 0xC2, +0x00, 0x6B, 0x83, 0xF6, 0x7C, 0xDA, 0x01, 0x6A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xDD, 0x63, 0x45, 0x62, +0x44, 0xD1, 0x43, 0xD0, 0x30, 0xF0, 0x20, 0x6D, +0x1D, 0x04, 0x22, 0xF2, 0x0C, 0x4D, 0x80, 0x6E, +0x00, 0x18, 0x9D, 0xD8, 0x30, 0xF0, 0x20, 0x6D, +0x06, 0x04, 0xC2, 0xF1, 0x10, 0x4D, 0x5C, 0x6E, +0x00, 0x18, 0x9D, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF1, 0x7C, 0x9A, 0x80, 0x6D, 0xFF, 0x6A, +0x80, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, 0xAC, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x28, 0xF7, 0x54, 0xC4, +0x28, 0xF7, 0x54, 0xA4, 0x04, 0x22, 0x80, 0xA3, +0x7F, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x2F, 0xF0, 0x0C, 0x4C, 0x1D, 0x05, +0x80, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x00, 0x6B, 0x83, 0xF6, +0x6E, 0xC2, 0x00, 0x6B, 0x83, 0xF6, 0x7C, 0xDA, +0x3E, 0x02, 0x1E, 0x00, 0x40, 0xD2, 0x23, 0x67, +0x00, 0x6A, 0xFF, 0xF7, 0xBC, 0x98, 0xE0, 0x98, +0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x21, 0x6E, 0xE0, 0xF2, 0x58, 0x9A, +0xD6, 0xF3, 0x10, 0x4E, 0x00, 0x6C, 0x39, 0xE6, +0x40, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x84, 0xF5, 0x70, 0x9A, +0x01, 0x6C, 0x8D, 0xEB, 0x84, 0xF5, 0x70, 0xDA, +0x40, 0x98, 0x14, 0x6C, 0x08, 0x48, 0x3E, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x40, 0xEA, 0x40, 0x92, 0x4A, 0xE8, 0x03, 0x60, +0x3E, 0x92, 0x45, 0xE1, 0xD5, 0x17, 0x30, 0xF0, +0x20, 0x68, 0x1D, 0x02, 0x06, 0x01, 0xAF, 0xF0, +0x0C, 0x48, 0x41, 0xD2, 0x40, 0x99, 0xFF, 0xF7, +0x1F, 0x6C, 0x01, 0x6D, 0x40, 0xD8, 0x4C, 0xEC, +0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, 0x41, 0xD8, +0x41, 0x92, 0x04, 0x49, 0x08, 0x48, 0x4A, 0xE9, +0x58, 0x67, 0x3E, 0xD2, 0xEF, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF2, 0x54, 0x9A, 0x38, 0x6C, +0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x8B, 0xF1, +0x00, 0x48, 0xE3, 0xF7, 0x44, 0xD8, 0x00, 0x18, +0xD6, 0xD7, 0xE4, 0xF4, 0x58, 0xC8, 0xE4, 0xF4, +0xB8, 0xA8, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, +0x48, 0x9A, 0x83, 0xF6, 0xF4, 0x98, 0xBC, 0x35, +0x30, 0xF0, 0x21, 0x6E, 0x55, 0xE5, 0xD9, 0xF1, +0x10, 0x4E, 0x02, 0xF0, 0x01, 0x5F, 0x83, 0xF6, +0xB0, 0xD8, 0x83, 0xF6, 0xD8, 0xD8, 0x1F, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x78, 0x9B, +0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, +0x50, 0x9A, 0x01, 0x6D, 0xE0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x94, 0x9A, 0x40, 0x9C, +0x6D, 0xEA, 0x40, 0xDC, 0xA3, 0xF3, 0x44, 0x98, +0x04, 0x6C, 0x6D, 0xEA, 0xA3, 0xF3, 0x44, 0xD8, +0x80, 0x18, 0x20, 0x01, 0xFF, 0x17, 0x3E, 0x91, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x58, 0x9A, +0x04, 0xD1, 0x05, 0xD1, 0x00, 0x6C, 0x40, 0xEA, +0x06, 0x2A, 0x84, 0xF5, 0x50, 0x98, 0x02, 0x6B, +0x6D, 0xEA, 0x84, 0xF5, 0x50, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0x4B, 0xF2, 0x70, 0xA2, 0x01, 0x6A, +0x00, 0x68, 0x6C, 0xEA, 0x11, 0x2A, 0x18, 0x10, +0x18, 0x6D, 0xB8, 0xE8, 0x49, 0xE0, 0x24, 0xF5, +0x84, 0xA2, 0x30, 0xF0, 0x20, 0x6B, 0x6F, 0xF1, +0x08, 0x4B, 0x01, 0x48, 0x12, 0xED, 0xB5, 0xE3, +0x00, 0x18, 0xEE, 0xC4, 0xFF, 0x6A, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x24, 0xF5, 0x60, 0xA2, 0x63, 0xE8, 0xE8, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x83, 0xF6, 0x6C, 0xA2, 0x12, 0x23, 0xC0, 0xF0, +0x70, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x68, 0x2F, 0xF2, 0x08, 0x48, +0x00, 0x69, 0x91, 0x67, 0xB0, 0x67, 0x01, 0x49, +0x00, 0x18, 0xEE, 0xC4, 0x04, 0x71, 0x18, 0x48, +0xF8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xC0, 0xF0, 0x90, 0xA2, 0x02, 0x6B, +0x8C, 0xEB, 0x49, 0x23, 0x04, 0xF5, 0xDD, 0xA2, +0x00, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0x4F, 0xF6, +0x08, 0x4A, 0x01, 0x6B, 0xA4, 0x67, 0x3B, 0x10, +0x30, 0xF0, 0x20, 0x68, 0x23, 0xF1, 0x1C, 0x98, +0x1F, 0x6F, 0x8C, 0xEF, 0x00, 0xF6, 0xE0, 0x37, +0x0D, 0xEF, 0x30, 0xF0, 0x20, 0x68, 0xE3, 0xF1, +0x14, 0x98, 0xE0, 0xD8, 0x30, 0xF0, 0x20, 0x6F, +0xE3, 0xF1, 0xF4, 0x9F, 0xE0, 0x9F, 0x00, 0x57, +0x0B, 0x60, 0xFF, 0x68, 0x01, 0x4B, 0x0A, 0x6F, +0x0C, 0xEB, 0xFB, 0xEB, 0x01, 0x2F, 0xE5, 0xE8, +0x10, 0xEF, 0x0C, 0xEF, 0xEF, 0x2F, 0x19, 0x25, +0x30, 0xF0, 0x20, 0x6D, 0xE3, 0xF1, 0xAC, 0x9D, +0xA0, 0x9D, 0xA2, 0x37, 0xA0, 0xC2, 0x00, 0xF6, +0xA2, 0x35, 0xA3, 0xC2, 0x30, 0xF0, 0x20, 0x6D, +0xE3, 0xF1, 0xB4, 0x9D, 0xE1, 0xC2, 0xE2, 0x37, +0xE2, 0xC2, 0xE0, 0xAD, 0xFF, 0xF7, 0x1F, 0x6D, +0xEC, 0xED, 0xA4, 0xC2, 0xA2, 0x35, 0xA5, 0xC2, +0x01, 0x6D, 0x01, 0x4C, 0x06, 0x4A, 0xFF, 0x6F, +0x8C, 0xEF, 0xC3, 0xEF, 0xC1, 0x61, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6E, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, +0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x30, 0xF0, 0x20, 0x69, 0x80, 0x18, 0x1C, 0x28, +0x8B, 0xF1, 0x00, 0x49, 0x04, 0xF5, 0x50, 0xD9, +0xC0, 0xF3, 0x44, 0x98, 0x0A, 0x6E, 0x03, 0xF3, +0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, +0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x80, 0x18, +0x1C, 0x28, 0x04, 0xF5, 0x54, 0xD9, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x08, 0x6E, 0x40, 0xEA, 0x00, 0x18, 0x2C, 0xD6, +0x45, 0x97, 0x44, 0x91, 0x43, 0x90, 0x23, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6A, 0x04, 0xD2, +0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x58, 0x9A, 0xC3, 0xF1, +0xB0, 0x9B, 0x30, 0xF0, 0x21, 0x6E, 0x00, 0x6C, +0xB9, 0xF1, 0x10, 0x4E, 0x20, 0x6F, 0x40, 0xEA, +0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x84, 0xF5, 0x70, 0x9A, 0x01, 0x6C, +0x8D, 0xEB, 0x84, 0xF5, 0x70, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x83, 0xF6, 0x6D, 0xA2, 0x05, 0x23, +0x00, 0x6B, 0x83, 0xF6, 0x6D, 0xC2, 0x00, 0x18, +0x7D, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, +0x74, 0x9A, 0xFD, 0x6A, 0x30, 0xF0, 0x20, 0x68, +0x80, 0xA3, 0x4F, 0xF4, 0x08, 0x48, 0x00, 0x69, +0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6C, 0x00, 0x18, +0x2D, 0xC7, 0x00, 0x6C, 0x00, 0x18, 0xBD, 0xEA, +0x91, 0x67, 0xB0, 0x67, 0x01, 0x49, 0x00, 0x18, +0x50, 0xC5, 0x40, 0x71, 0x08, 0x48, 0xF8, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x5C, 0x9A, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xE4, 0xF4, 0x7C, 0xDA, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF2, 0x60, 0x9B, 0x60, 0x9B, +0x04, 0xF5, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF2, 0x7C, 0x9B, 0x60, 0x9B, 0x04, 0xF5, +0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, +0x60, 0x9B, 0x60, 0x9B, 0x04, 0xF5, 0x68, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x64, 0x9B, +0x60, 0xA3, 0x04, 0xF5, 0x7A, 0xC2, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF2, 0x68, 0x9B, 0x60, 0x9B, +0x04, 0xF5, 0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF2, 0x74, 0x9B, 0x60, 0xA3, 0x04, 0xF5, +0x78, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, +0x78, 0x9B, 0x60, 0xA3, 0x04, 0xF5, 0x79, 0xC2, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xD6, 0xD7, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, +0x00, 0x18, 0xD6, 0xD7, 0x01, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0x1C, 0x30, 0x43, 0xF2, 0x08, 0x4B, +0x60, 0x9B, 0x04, 0xD0, 0xB0, 0x67, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, +0x21, 0x69, 0x52, 0xF6, 0x0A, 0x49, 0x30, 0x4D, +0x75, 0xE5, 0x91, 0x67, 0x02, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6E, 0x04, 0x95, 0x43, 0xF2, +0x08, 0x4E, 0xC0, 0x9E, 0x80, 0xF2, 0x4C, 0x98, +0x87, 0x41, 0x32, 0x4D, 0xD5, 0xE5, 0x10, 0x4C, +0x02, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0x95, 0x43, 0xF2, 0x08, 0x4B, 0x60, 0x9B, +0x80, 0xF2, 0x4C, 0x98, 0x34, 0x4D, 0x30, 0xF0, +0x21, 0x6C, 0x75, 0xE5, 0x12, 0xF7, 0x04, 0x4C, +0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0x96, 0x43, 0xF2, 0x08, 0x4B, 0x60, 0x9B, +0x80, 0xF2, 0x4C, 0x98, 0x38, 0x4E, 0x87, 0x41, +0x75, 0xE6, 0x04, 0xD6, 0x13, 0x4C, 0xA0, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0x96, +0x63, 0xF2, 0xA8, 0x9B, 0x80, 0xF2, 0x4C, 0x98, +0x87, 0x41, 0xB5, 0xE6, 0x0B, 0x4C, 0x01, 0x6E, +0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x00, 0x18, +0xD6, 0xD7, 0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF2, 0xAC, 0x9A, 0x1C, 0x30, 0x30, 0xF0, +0x20, 0x6C, 0xB5, 0xE0, 0x8F, 0xF6, 0x1C, 0x4C, +0x10, 0x6E, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x24, 0xF5, 0x61, 0xA2, +0x7C, 0x33, 0x83, 0xF6, 0x74, 0xDA, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x00, 0x18, 0xD6, 0xD7, 0x01, 0xE2, +0x1C, 0x34, 0x30, 0x4C, 0x80, 0x18, 0xFC, 0x07, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xFF, 0x68, +0x8C, 0xE8, 0x03, 0xF6, 0x80, 0xA2, 0x03, 0x6B, +0x6B, 0xEB, 0x41, 0x6D, 0x8C, 0xEB, 0xAB, 0xED, +0xAC, 0xEB, 0x03, 0xF6, 0xA1, 0xA2, 0x03, 0xF6, +0x60, 0xC2, 0x11, 0x6B, 0x00, 0x6C, 0x6B, 0xEB, +0x03, 0xF6, 0x8D, 0xC2, 0x03, 0xF6, 0x85, 0xC2, +0xAC, 0xEB, 0x03, 0xF6, 0x8E, 0xC2, 0x90, 0x67, +0x03, 0xF6, 0x61, 0xC2, 0x00, 0x18, 0x87, 0xE9, +0x90, 0x67, 0x00, 0x18, 0x80, 0xE9, 0x90, 0x67, +0x00, 0x18, 0x9C, 0xE9, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xF2, 0x63, 0x1B, 0x62, +0x1A, 0xD1, 0x19, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xFF, 0x69, 0x8B, 0xF1, 0x00, 0x48, 0x30, 0xF0, +0x20, 0x6A, 0x8C, 0xE9, 0x80, 0xF3, 0x5C, 0x9A, +0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, +0x5E, 0x61, 0x44, 0xF5, 0x46, 0xA8, 0x03, 0xF6, +0x61, 0xA0, 0xFF, 0x6C, 0x01, 0x4A, 0x44, 0xF5, +0x46, 0xC8, 0x09, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x03, 0xF6, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0x6F, 0x6D, 0x2C, 0x6E, +0x40, 0xEA, 0x0C, 0x04, 0x00, 0x6D, 0x30, 0x6E, +0x00, 0x18, 0x98, 0xD8, 0xA0, 0xF0, 0x4A, 0xA0, +0x7D, 0x67, 0x40, 0xF0, 0x2C, 0xC3, 0x40, 0xF0, +0x48, 0xCB, 0x01, 0x6A, 0x40, 0xF0, 0x4A, 0xC3, +0x08, 0x6A, 0x40, 0xF0, 0x4B, 0xC3, 0x10, 0xF0, +0x23, 0x6A, 0x66, 0xF4, 0x05, 0x4A, 0x0C, 0xD2, +0x10, 0xF0, 0x23, 0x6A, 0xA3, 0xF1, 0x01, 0x4A, +0x0D, 0xD2, 0x04, 0x04, 0x00, 0x6A, 0x10, 0x03, +0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, +0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, +0x0C, 0x94, 0x0D, 0x95, 0x0E, 0x96, 0x0F, 0x97, +0x00, 0x18, 0xBF, 0xE6, 0x12, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x81, 0xA2, 0x02, 0x6B, 0x0E, 0x6D, 0x8D, 0xEB, +0x03, 0xF6, 0x61, 0xC2, 0x01, 0x6C, 0x00, 0x18, +0xD7, 0xC5, 0x0E, 0x6C, 0x80, 0x18, 0xA7, 0x72, +0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x01, 0x6B, 0x84, 0xF5, 0x66, 0xCA, +0x02, 0x6B, 0x84, 0xF5, 0x64, 0xCA, 0x1B, 0x97, +0x1A, 0x91, 0x19, 0x90, 0x0E, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x44, 0xF5, 0x5A, 0xA8, 0x01, 0x4A, 0x44, 0xF5, +0x5A, 0xC8, 0x80, 0x18, 0xD6, 0x05, 0x03, 0xF6, +0x43, 0xA0, 0x01, 0x6C, 0xF0, 0x6D, 0x06, 0xD2, +0x00, 0x18, 0xD7, 0xC5, 0x00, 0x18, 0xBE, 0xC9, +0x80, 0xF0, 0x05, 0x22, 0x00, 0x18, 0x2B, 0xEB, +0x83, 0xF6, 0x4C, 0xA0, 0x64, 0x22, 0x00, 0x18, +0x49, 0xCB, 0x5C, 0xB9, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x30, 0xF0, 0x21, 0x6C, 0xFC, 0xF7, +0x1C, 0x4C, 0xBD, 0x67, 0xA0, 0xDC, 0x9A, 0xB8, +0x00, 0x65, 0xBB, 0xB8, 0x00, 0x65, 0x00, 0x18, +0xB9, 0xE3, 0x30, 0xF0, 0x21, 0x69, 0xDC, 0xF7, +0x0C, 0x49, 0x00, 0x99, 0x32, 0xE8, 0x01, 0x99, +0x30, 0xE8, 0x42, 0x99, 0x63, 0x99, 0x84, 0x99, +0xA5, 0x99, 0xC6, 0x99, 0xE7, 0x99, 0x08, 0x99, +0x18, 0x65, 0x09, 0x99, 0x58, 0xB9, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, 0x21, 0x68, +0xDC, 0xF7, 0x0C, 0x48, 0x2A, 0x98, 0x1A, 0xB8, +0x00, 0x65, 0x58, 0xB9, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x79, 0xB9, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x30, 0xF0, 0x21, 0x69, 0x9C, 0xF7, +0x0C, 0x49, 0x09, 0xD9, 0x12, 0xE8, 0x00, 0xD9, +0x10, 0xE8, 0x01, 0xD9, 0x42, 0xD9, 0x63, 0xD9, +0x84, 0xD9, 0xA5, 0xD9, 0xC6, 0xD9, 0xE7, 0xD9, +0x18, 0x67, 0x08, 0xD9, 0x1F, 0x67, 0x0B, 0xD9, +0x1D, 0x67, 0x0C, 0xD9, 0x1F, 0xF7, 0x32, 0x68, +0x46, 0xF4, 0x16, 0x48, 0xFF, 0xF7, 0x1C, 0xD9, +0x30, 0xF0, 0x21, 0x68, 0x9C, 0xF7, 0x0C, 0x48, +0x3B, 0xB8, 0x00, 0x65, 0x2A, 0xD8, 0x1A, 0xB8, +0x00, 0x65, 0x00, 0x18, 0x92, 0xE3, 0x00, 0x6C, +0x00, 0x18, 0x46, 0xCA, 0x10, 0x10, 0x00, 0x6C, +0x00, 0x18, 0xBD, 0xEA, 0x00, 0x6C, 0x00, 0x18, +0x2D, 0xC7, 0x00, 0x18, 0xB9, 0xE3, 0x00, 0x18, +0x92, 0xE3, 0x01, 0x6C, 0x00, 0x18, 0x2D, 0xC7, +0x01, 0x6C, 0x00, 0x18, 0xBD, 0xEA, 0x00, 0x6A, +0x82, 0x67, 0xA2, 0x67, 0x01, 0x6E, 0xE2, 0x67, +0x04, 0xD2, 0x80, 0x18, 0x68, 0x69, 0x06, 0x95, +0x01, 0x6C, 0x00, 0x18, 0xD7, 0xC5, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x67, 0x6E, +0xFF, 0x6C, 0x00, 0x6D, 0x40, 0xEA, 0x04, 0x6D, +0x01, 0x6C, 0x00, 0x18, 0xD7, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0x4E, 0xF5, 0x02, 0xA2, 0x90, 0x67, +0x80, 0x18, 0x40, 0x71, 0x40, 0x6B, 0x4D, 0xEB, +0xFF, 0x6D, 0x90, 0x67, 0x6C, 0xED, 0x80, 0x18, +0x33, 0x71, 0x04, 0x6C, 0x80, 0x18, 0xA7, 0x72, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x2E, 0x6E, +0xFF, 0x6C, 0x6F, 0x6D, 0x40, 0xEA, 0x02, 0x6D, +0x01, 0x6C, 0x00, 0x18, 0xD7, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0x4E, 0xF5, 0x02, 0xA2, 0x90, 0x67, +0x80, 0x18, 0x40, 0x71, 0xBF, 0x6D, 0x90, 0x67, +0x4C, 0xED, 0x80, 0x18, 0x33, 0x71, 0x02, 0x6C, +0x80, 0x18, 0xA7, 0x72, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0x03, 0xF6, 0x61, 0xA0, +0x08, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x2C, 0xEA, +0x2C, 0xEC, 0x11, 0x2A, 0x44, 0xF5, 0x48, 0xA8, +0x01, 0x6C, 0x0C, 0x6D, 0x01, 0x4A, 0x44, 0xF5, +0x48, 0xC8, 0x00, 0x18, 0xD7, 0xC5, 0x63, 0xF6, +0x5F, 0xA0, 0x4E, 0x22, 0x00, 0x6C, 0xA4, 0x67, +0x00, 0x18, 0xBF, 0xC8, 0x49, 0x10, 0x44, 0xF5, +0x4A, 0xA8, 0x01, 0x6D, 0x01, 0x4A, 0x44, 0xF5, +0x4A, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x6C, 0x04, 0x6D, 0x00, 0x18, 0xD7, 0xC5, 0xA0, 0xF0, 0x7A, 0xA0, 0x01, 0x6A, 0x4C, 0xEB, 0x2C, 0xEB, 0x05, 0x2B, -0xA3, 0xF3, 0x7C, 0xA0, 0x6C, 0xEA, 0x2C, 0xEA, -0x2C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, 0x04, 0x6B, -0x6C, 0xEC, 0x06, 0x2C, 0xA3, 0xF3, 0x5C, 0xA2, +0xC3, 0xF3, 0x60, 0xA0, 0x6C, 0xEA, 0x2C, 0xEA, +0x2C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, 0x04, 0x6B, +0x6C, 0xEC, 0x06, 0x2C, 0xC3, 0xF3, 0x40, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x1D, 0x22, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xA3, 0xF3, 0x3E, 0xA0, 0x91, 0x67, 0x80, 0x18, -0x58, 0x6F, 0x80, 0x6D, 0xAB, 0xED, 0x4D, 0xED, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0xC3, 0xF3, 0x22, 0xA0, 0x91, 0x67, 0x80, 0x18, +0x40, 0x71, 0x80, 0x6D, 0xAB, 0xED, 0x4D, 0xED, 0xFF, 0x6A, 0x4C, 0xED, 0x91, 0x67, 0x80, 0x18, -0x4B, 0x6F, 0xA3, 0xF3, 0x1E, 0xA0, 0x90, 0x67, -0x80, 0x18, 0x58, 0x6F, 0x20, 0x6D, 0x4D, 0xED, +0x33, 0x71, 0xC3, 0xF3, 0x02, 0xA0, 0x90, 0x67, +0x80, 0x18, 0x40, 0x71, 0x20, 0x6D, 0x4D, 0xED, 0xFF, 0x6A, 0x90, 0x67, 0x4C, 0xED, 0x80, 0x18, -0x4B, 0x6F, 0x04, 0x6C, 0x80, 0x18, 0xBF, 0x70, +0x33, 0x71, 0x04, 0x6C, 0x80, 0x18, 0xA7, 0x72, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x40, 0xEA, +0xFF, 0x6C, 0x00, 0x6D, 0x66, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6D, -0x2B, 0xF1, 0x18, 0x4D, 0xE3, 0xF5, 0xDD, 0xA5, +0x8B, 0xF1, 0x00, 0x4D, 0x03, 0xF6, 0xC1, 0xA5, 0x04, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, -0x4C, 0xEC, 0x0C, 0x2B, 0x63, 0xF6, 0x7B, 0xA5, -0x09, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, -0xA8, 0x9B, 0x60, 0xA5, 0x4C, 0xEB, 0x01, 0x4B, +0x4C, 0xEC, 0x0C, 0x2B, 0x63, 0xF6, 0x7F, 0xA5, +0x09, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, +0xB0, 0x9B, 0x60, 0xA5, 0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE3, 0xF5, 0xBD, 0xA2, -0x04, 0x6B, 0xAC, 0xEB, 0x0E, 0x2B, 0x63, 0xF6, -0x5B, 0xA2, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF4, 0x5C, 0x9A, 0x03, 0x6D, 0x40, 0xEA, -0x01, 0x6C, 0x04, 0x6D, 0x00, 0x18, 0xD7, 0xC5, -0x25, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, -0x5C, 0x9A, 0x00, 0x6D, 0x30, 0xF0, 0x20, 0x69, -0x40, 0xEA, 0x2B, 0xF1, 0x18, 0x49, 0x0C, 0x6D, -0x01, 0x6C, 0x00, 0x18, 0xD7, 0xC5, 0xA3, 0xF3, -0x1E, 0xA1, 0x90, 0x67, 0x80, 0x18, 0x58, 0x6F, -0x7F, 0x6D, 0x90, 0x67, 0x4C, 0xED, 0x80, 0x18, -0x4B, 0x6F, 0xA3, 0xF3, 0x1E, 0xA1, 0x90, 0x67, -0x80, 0x18, 0x58, 0x6F, 0xDF, 0x6D, 0x90, 0x67, -0x4C, 0xED, 0x80, 0x18, 0x4B, 0x6F, 0x0C, 0x6C, -0x80, 0x18, 0xBF, 0x70, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xFF, 0x6C, -0xC5, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x04, 0x67, 0xA4, 0xA0, 0x82, 0xA4, 0x00, 0x18, -0x0A, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xA8, -0xC3, 0xA0, 0xA0, 0xF2, 0x54, 0x9A, 0x01, 0x6D, -0x04, 0x6F, 0x40, 0xEA, 0x22, 0x67, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xA0, 0x40, 0xF4, 0x58, 0x9A, -0xC4, 0xA0, 0xB1, 0x67, 0x40, 0xEA, 0x82, 0xA0, -0x00, 0x18, 0x6D, 0xD2, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x44, 0xF5, -0x8C, 0xAB, 0x01, 0x4C, 0x44, 0xF5, 0x8C, 0xCB, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x44, 0xF5, 0x84, 0xAB, 0x01, 0x4C, -0x44, 0xF5, 0x84, 0xCB, 0xA2, 0x67, 0x91, 0x67, -0x00, 0x18, 0x8B, 0xF0, 0xA4, 0xA0, 0x91, 0x67, -0x00, 0x18, 0x9A, 0xF0, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x01, 0x6A, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x40, 0xC8, -0x20, 0x2A, 0x00, 0x18, 0x80, 0xD6, 0x3A, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x58, 0x9A, -0x40, 0xA2, 0x34, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x8F, 0xF6, 0x6C, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0x2B, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x4C, 0x9A, 0x60, 0xA2, -0x02, 0x6A, 0x6C, 0xEA, 0x23, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x50, 0x9A, 0x40, 0xA2, -0x1D, 0x2A, 0x00, 0x18, 0x85, 0xD6, 0x1A, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA0, 0xF1, 0x60, 0xA2, 0xA0, 0xF1, 0x41, 0xA2, -0x6E, 0xEA, 0x10, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x54, 0x9A, 0x60, 0xA2, 0x0F, 0x6A, -0x6C, 0xEA, 0x08, 0x2A, 0x00, 0x18, 0xE5, 0xF2, -0x05, 0x2A, 0x00, 0x18, 0xE5, 0xF2, 0x01, 0x5A, -0x58, 0x67, 0x01, 0x10, 0x00, 0x6A, 0x05, 0x97, +0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, 0xA1, 0xA2, +0x04, 0x6B, 0xAC, 0xEB, 0x13, 0x2B, 0x63, 0xF6, +0x7F, 0xA2, 0x10, 0x2B, 0x44, 0xF5, 0x72, 0xAA, +0x03, 0x6D, 0x01, 0x4B, 0x44, 0xF5, 0x72, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, +0x40, 0xEA, 0x01, 0x6C, 0x04, 0x6D, 0x00, 0x18, +0xD7, 0xC5, 0x2A, 0x10, 0x30, 0xF0, 0x20, 0x69, +0x8B, 0xF1, 0x00, 0x49, 0x44, 0xF5, 0x50, 0xA9, +0x00, 0x6D, 0x01, 0x4A, 0x44, 0xF5, 0x50, 0xC9, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, +0x40, 0xEA, 0x0C, 0x6D, 0x01, 0x6C, 0x00, 0x18, +0xD7, 0xC5, 0xC3, 0xF3, 0x02, 0xA1, 0x90, 0x67, +0x80, 0x18, 0x40, 0x71, 0x7F, 0x6D, 0x90, 0x67, +0x4C, 0xED, 0x80, 0x18, 0x33, 0x71, 0xC3, 0xF3, +0x02, 0xA1, 0x90, 0x67, 0x80, 0x18, 0x40, 0x71, +0xDF, 0x6D, 0x90, 0x67, 0x4C, 0xED, 0x80, 0x18, +0x33, 0x71, 0x0C, 0x6C, 0x80, 0x18, 0xA7, 0x72, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0xFF, 0x6C, 0x00, 0x6D, 0x65, 0x6E, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x04, 0x67, 0xA4, 0xA0, +0x82, 0xA4, 0x00, 0x18, 0x59, 0xD4, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xA8, 0xC3, 0xA0, 0xA0, 0xF2, +0x54, 0x9A, 0x01, 0x6D, 0x04, 0x6F, 0x40, 0xEA, +0x22, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xA0, +0x40, 0xF4, 0x58, 0x9A, 0xC4, 0xA0, 0xB1, 0x67, +0x40, 0xEA, 0x82, 0xA0, 0x00, 0x18, 0xBC, 0xD3, +0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xA4, 0xF5, 0x8A, 0xAB, 0x01, 0x4C, +0xA4, 0xF5, 0x8A, 0xCB, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0xA4, 0xF5, +0x82, 0xAB, 0x01, 0x4C, 0xA4, 0xF5, 0x82, 0xCB, +0xA2, 0x67, 0x91, 0x67, 0x00, 0x18, 0x30, 0xF2, +0xA4, 0xA0, 0x91, 0x67, 0x00, 0x18, 0x3F, 0xF2, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x01, 0x6A, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x64, 0xF5, 0x40, 0xA8, 0x01, 0x4A, +0x64, 0xF5, 0x40, 0xC8, 0x00, 0x18, 0x9D, 0xC8, +0x2A, 0x2A, 0x00, 0x18, 0xDB, 0xD7, 0x02, 0x22, +0x01, 0x6A, 0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF2, 0x40, 0x9A, 0x40, 0xA2, 0x04, 0x22, +0x02, 0x6A, 0x84, 0xF5, 0x44, 0xC8, 0x50, 0x10, +0xA4, 0xF5, 0x74, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x04, 0x6A, +0xF4, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, +0x54, 0x9A, 0x60, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, +0x02, 0x2A, 0x08, 0x6A, 0xEA, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF2, 0x58, 0x9A, 0x40, 0xA2, +0x02, 0x22, 0x10, 0x6A, 0xE2, 0x17, 0x00, 0x18, +0xE0, 0xD7, 0x06, 0x2A, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x0F, 0xF7, 0x64, 0xCA, 0x2C, 0x10, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0xA0, 0xF1, 0x61, 0xA0, 0xA0, 0xF1, 0x42, 0xA0, +0x6E, 0xEA, 0x02, 0x22, 0x40, 0x6A, 0xCD, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x5C, 0x9A, +0x60, 0xA2, 0x0F, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x80, 0x6A, 0xC3, 0x17, 0x00, 0x18, 0x8A, 0xF4, +0x03, 0x22, 0x00, 0xF1, 0x00, 0x6A, 0xBD, 0x17, +0x00, 0x18, 0x8A, 0xF4, 0x0D, 0x2A, 0x08, 0x6B, +0x84, 0xF5, 0x44, 0xC8, 0x64, 0xF5, 0x40, 0xC8, +0x84, 0xF5, 0x66, 0xC8, 0x84, 0xF5, 0x68, 0xC8, +0x84, 0xF5, 0x6A, 0xC8, 0x01, 0x6A, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0x6B, 0x0F, 0xF7, +0x66, 0xCA, 0x00, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, -0x02, 0x22, 0x08, 0x72, 0x06, 0x61, 0x00, 0x18, -0x74, 0xCC, 0x01, 0x72, 0x02, 0x61, 0x00, 0x18, -0x77, 0xCB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x44, 0xF5, 0x78, 0xAA, 0x01, 0x4B, 0x44, 0xF5, +0x78, 0xCA, 0x03, 0xF6, 0x43, 0xA2, 0x02, 0x22, +0x08, 0x72, 0x06, 0x61, 0x00, 0x18, 0x39, 0xCD, +0x01, 0x72, 0x02, 0x61, 0x00, 0x18, 0x30, 0xCC, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x86, 0xF2, 0x01, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE3, 0xF5, -0x9C, 0xA2, 0x01, 0x6B, 0xFF, 0x6D, 0x6C, 0xEC, +0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, +0x06, 0xF6, 0x09, 0x4A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x80, 0xA2, 0x01, 0x6B, 0xFF, 0x6D, 0x6C, 0xEC, 0x20, 0x24, 0xA0, 0xF0, 0x9A, 0xA2, 0x6C, 0xEC, -0xAC, 0xEC, 0x05, 0x2C, 0xA3, 0xF3, 0x5C, 0xA2, +0xAC, 0xEC, 0x05, 0x2C, 0xC3, 0xF3, 0x40, 0xA2, 0x6C, 0xEA, 0xAC, 0xEA, 0x13, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, 0x06, 0x2C, -0xA3, 0xF3, 0x5C, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, -0x6C, 0xEA, 0x04, 0x22, 0x80, 0x18, 0x34, 0x70, -0x01, 0x72, 0x05, 0x61, 0x00, 0x18, 0x97, 0xCC, -0x02, 0x10, 0x00, 0x18, 0x11, 0xC9, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0x86, 0xF2, 0x03, 0x4A, 0x40, 0xDB, +0xC3, 0xF3, 0x40, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x04, 0x22, 0x80, 0x18, 0x1C, 0x72, +0x01, 0x72, 0x05, 0x61, 0x00, 0x18, 0x75, 0xCD, +0x02, 0x10, 0x00, 0x18, 0xBE, 0xC9, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, +0x23, 0x6A, 0x06, 0xF6, 0x0B, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xE0, 0xF0, 0x7A, 0xA0, 0x01, 0x6A, 0xFF, 0x69, -0x4C, 0xEB, 0x0D, 0x23, 0x64, 0xF5, 0x79, 0xA0, -0x6C, 0xEA, 0x2C, 0xEA, 0x47, 0x2A, 0x63, 0xF6, -0x58, 0xA0, 0x44, 0x2A, 0x83, 0xF3, 0x5C, 0xA0, -0x01, 0x5A, 0x58, 0x67, 0x40, 0x10, 0x00, 0x18, -0x02, 0xC6, 0x01, 0x72, 0x3B, 0x61, 0x00, 0x18, -0xED, 0xE4, 0x01, 0x72, 0x37, 0x61, 0x03, 0xF6, -0x61, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, 0x32, 0x2A, -0x63, 0xF6, 0x58, 0xA0, 0x2F, 0x2A, 0x04, 0x6A, -0x6C, 0xEA, 0x2C, 0x2A, 0x10, 0x6A, 0x6C, 0xEA, -0x29, 0x2A, 0xE3, 0xF5, 0x7C, 0xA0, 0x20, 0x6A, -0x6C, 0xEA, 0x2C, 0xEA, 0x23, 0x22, 0x83, 0xF3, -0x5C, 0xA0, 0x20, 0x2A, 0x00, 0x18, 0x4E, 0xC8, -0x1D, 0x2A, 0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, -0x60, 0xA2, 0x03, 0x6A, 0x6C, 0xEA, 0x03, 0x72, -0x15, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x78, 0x9A, 0x02, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x0D, 0x2A, 0x40, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, -0x01, 0x6A, 0x09, 0x24, 0x80, 0xA3, 0xFC, 0x6B, -0x00, 0x6A, 0x8C, 0xEB, 0x80, 0x73, 0x03, 0x60, -0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x44, 0xF5, 0x5E, 0xA8, 0x01, 0x69, 0x01, 0x4A, +0x44, 0xF5, 0x5E, 0xC8, 0xE0, 0xF0, 0x5A, 0xA0, +0x2C, 0xEA, 0x17, 0x22, 0xC4, 0xF5, 0x59, 0xA0, +0x4C, 0xE9, 0xFF, 0x6A, 0x4C, 0xE9, 0x03, 0x21, +0x02, 0xF0, 0x00, 0x6A, 0x05, 0x10, 0x63, 0xF6, +0x5C, 0xA0, 0x05, 0x22, 0x04, 0xF0, 0x00, 0x6A, +0x84, 0xF5, 0x44, 0xC8, 0x79, 0x10, 0xA3, 0xF3, +0x40, 0xA0, 0x6B, 0x22, 0x08, 0xF0, 0x00, 0x6A, +0xF7, 0x17, 0x00, 0x18, 0x22, 0xC6, 0x01, 0x72, +0x03, 0x60, 0x84, 0xF5, 0x24, 0xC8, 0x6C, 0x10, +0x00, 0x18, 0x8C, 0xE6, 0x01, 0x72, 0x02, 0x6A, +0xEB, 0x61, 0x03, 0xF6, 0x65, 0xA0, 0x03, 0x6A, +0x6C, 0xEA, 0x06, 0x22, 0x04, 0x6A, 0x84, 0xF5, +0x44, 0xC8, 0x03, 0xF6, 0x45, 0xA0, 0x08, 0x10, +0x63, 0xF6, 0x5C, 0xA0, 0x08, 0x22, 0x08, 0x6A, +0x84, 0xF5, 0x44, 0xC8, 0x63, 0xF6, 0x5C, 0xA0, +0x84, 0xF5, 0x48, 0xC8, 0x51, 0x10, 0x04, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x10, 0x6A, 0xD0, 0x17, +0x10, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x20, 0x6A, +0xCB, 0x17, 0x03, 0xF6, 0x60, 0xA0, 0x20, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x02, 0x2A, +0x40, 0x6A, 0xC2, 0x17, 0xA3, 0xF3, 0x40, 0xA0, +0x02, 0x22, 0x80, 0x6A, 0xBD, 0x17, 0x00, 0x18, +0xAB, 0xC8, 0x07, 0x22, 0x00, 0xF1, 0x00, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF7, 0x64, 0xCA, +0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x47, 0xF4, 0x80, 0xA2, 0x03, 0x6B, +0x8C, 0xEB, 0x03, 0x73, 0x03, 0x61, 0x00, 0xF2, +0x00, 0x6B, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF2, 0x60, 0x9B, 0x02, 0x6C, 0xA0, 0xA3, +0xAC, 0xEC, 0x02, 0x24, 0x11, 0x6B, 0x0A, 0x10, +0xA0, 0xA3, 0x01, 0x6C, 0xAC, 0xEC, 0x09, 0x24, +0x80, 0xA3, 0xFC, 0x6B, 0x8C, 0xEB, 0x80, 0x73, +0x04, 0x61, 0x12, 0x6B, 0x84, 0xF5, 0x64, 0xCA, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x00, 0x6B, 0x84, 0xF5, 0x64, 0xCA, +0x44, 0xF5, 0x7E, 0xCA, 0x01, 0x6A, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6B, 0x0F, 0xF7, +0x66, 0xCA, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x24, 0x67, 0x2E, 0xF7, -0x96, 0xA3, 0x02, 0x6B, 0xFF, 0x6A, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0x67, 0x8E, 0xF7, +0x82, 0xA3, 0x02, 0x6B, 0xFF, 0x6A, 0x8C, 0xEB, 0x4C, 0xED, 0x4C, 0xEB, 0x4C, 0xE9, 0x08, 0xD5, 0x02, 0x6A, 0x75, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0x08, 0xF7, 0x57, 0xA2, 0x2E, 0xEA, 0x5F, 0x22, +0x48, 0xF7, 0x5F, 0xA2, 0x2E, 0xEA, 0x5F, 0x22, 0x00, 0x6A, 0x7D, 0x67, 0x30, 0xF0, 0x20, 0x6C, -0x05, 0xD2, 0x58, 0xC3, 0x48, 0xCB, 0x08, 0xF7, -0x56, 0xA4, 0x27, 0x2A, 0x30, 0xF0, 0x20, 0x6B, -0x08, 0xF7, 0x55, 0xA3, 0x22, 0x2A, 0x30, 0xF0, -0x20, 0x6C, 0x08, 0xF7, 0x54, 0xA4, 0x1D, 0x2A, -0x30, 0xF0, 0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, -0x90, 0x67, 0x05, 0x05, 0x80, 0x18, 0xC4, 0x56, -0x90, 0x67, 0x04, 0x05, 0x80, 0x18, 0xB2, 0x56, +0x05, 0xD2, 0x58, 0xC3, 0x48, 0xCB, 0x48, 0xF7, +0x5E, 0xA4, 0x27, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0xF7, 0x5D, 0xA3, 0x22, 0x2A, 0x30, 0xF0, +0x20, 0x6C, 0x48, 0xF7, 0x5C, 0xA4, 0x1D, 0x2A, +0x30, 0xF0, 0x21, 0x68, 0xD2, 0xF5, 0x08, 0x48, +0x90, 0x67, 0x05, 0x05, 0x80, 0x18, 0x2A, 0x57, +0x90, 0x67, 0x04, 0x05, 0x80, 0x18, 0x18, 0x57, 0x7D, 0x67, 0x50, 0xA3, 0x30, 0xF0, 0x20, 0x6C, -0x08, 0xF7, 0x56, 0xC4, 0x54, 0xA3, 0x75, 0xA3, -0x30, 0xF0, 0x20, 0x6C, 0x4D, 0xEB, 0x08, 0xF7, -0x75, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF7, -0x54, 0xC3, 0x03, 0x21, 0x01, 0x71, 0x12, 0x60, -0x26, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF7, -0xB5, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x21, 0x6C, 0x08, 0xF7, 0xD6, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0x12, 0xF5, 0x08, 0x4C, 0x08, 0xF7, -0xF4, 0xA2, 0x13, 0x10, 0x30, 0xF0, 0x21, 0x68, -0x12, 0xF5, 0x08, 0x48, 0x90, 0x67, 0x80, 0x18, -0xA4, 0x55, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x48, 0xF7, 0x5E, 0xC4, 0x54, 0xA3, 0x75, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0x4D, 0xEB, 0x48, 0xF7, +0x7D, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0xF7, +0x5C, 0xC3, 0x03, 0x21, 0x01, 0x71, 0x12, 0x60, +0x26, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF7, +0xBD, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x21, 0x6C, 0x48, 0xF7, 0xDE, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0xD2, 0xF5, 0x08, 0x4C, 0x48, 0xF7, +0xFC, 0xA2, 0x13, 0x10, 0x30, 0xF0, 0x21, 0x68, +0xD2, 0xF5, 0x08, 0x48, 0x90, 0x67, 0x80, 0x18, +0x0A, 0x56, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, 0x40, 0xEA, 0xF1, 0x17, 0x01, 0x6D, 0x90, 0x67, 0xC5, 0x67, -0xE5, 0x67, 0x80, 0x18, 0x65, 0x5C, 0x30, 0xF0, -0x20, 0x6A, 0x08, 0xF7, 0x37, 0xC2, 0x08, 0x94, +0xE5, 0x67, 0x80, 0x18, 0xD7, 0x5C, 0x30, 0xF0, +0x20, 0x6A, 0x48, 0xF7, 0x3F, 0xC2, 0x08, 0x94, 0x00, 0x6A, 0x0D, 0x24, 0x30, 0xF0, 0x20, 0x6B, -0x08, 0xF7, 0x56, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x08, 0xF7, 0x55, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x08, 0xF7, 0x54, 0xC3, 0x00, 0x6A, 0x0D, 0x97, +0x48, 0xF7, 0x5E, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0xF7, 0x5D, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0xF7, 0x5C, 0xC3, 0x00, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF2, 0x48, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0x2E, 0xF7, 0x14, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x8E, 0xF7, 0x00, 0x4C, 0x00, 0x6D, 0x80, 0x6E, 0x40, 0xEA, 0x80, 0xF2, -0x48, 0x98, 0x30, 0xF0, 0x20, 0x6C, 0x2C, 0x6E, -0x6F, 0xF6, 0x00, 0x4C, 0x00, 0x6D, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0x40, 0xEA, -0x00, 0x18, 0x2E, 0xC8, 0x01, 0x6A, 0x03, 0xF6, -0x46, 0xC0, 0x03, 0xF6, 0x47, 0xC0, 0x0C, 0x6A, -0x02, 0x69, 0x03, 0xF6, 0x48, 0xC0, 0x00, 0x6C, -0x06, 0x6A, 0x03, 0xF6, 0x50, 0xC8, 0xA0, 0xF0, +0x48, 0x98, 0x30, 0xF0, 0x20, 0x6C, 0x88, 0x6E, +0xAF, 0xF6, 0x0C, 0x4C, 0x00, 0x6D, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x40, 0xEA, +0x00, 0x18, 0x8B, 0xC8, 0x01, 0x6A, 0x03, 0xF6, +0x4A, 0xC0, 0x03, 0xF6, 0x4B, 0xC0, 0x0C, 0x6A, +0x02, 0x69, 0x03, 0xF6, 0x4C, 0xC0, 0x00, 0x6C, +0x06, 0x6A, 0x03, 0xF6, 0x54, 0xC8, 0xA0, 0xF0, 0x3D, 0xC0, 0xA4, 0x67, 0x00, 0x18, 0xD7, 0xC5, 0x02, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0xD7, 0xC5, 0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0xD7, 0xC5, -0x30, 0xF0, 0x20, 0x6C, 0x4E, 0xF7, 0x06, 0x4C, -0x00, 0x6D, 0x00, 0x18, 0x19, 0xE9, 0xC0, 0xF0, +0x30, 0xF0, 0x20, 0x6C, 0x8E, 0xF7, 0x12, 0x4C, +0x00, 0x6D, 0x00, 0x18, 0xBE, 0xEA, 0xC0, 0xF0, 0x64, 0xA0, 0x0F, 0x6A, 0xC0, 0xF0, 0x43, 0xC0, 0x01, 0x6A, 0x6C, 0xEA, 0x28, 0x6B, 0x6D, 0xEA, 0xC0, 0xF0, 0x44, 0xC0, 0x07, 0x6A, 0xC0, 0xF0, -0x45, 0xC0, 0x03, 0xF6, 0x5A, 0xA0, 0xC0, 0xF0, +0x45, 0xC0, 0x03, 0xF6, 0x5E, 0xA0, 0xC0, 0xF0, 0x22, 0xC0, 0x30, 0xF0, 0x20, 0x69, 0x03, 0x4A, -0x03, 0xF6, 0x56, 0xC0, 0x0C, 0x6A, 0x03, 0xF6, -0x57, 0xC0, 0x40, 0xF4, 0x5C, 0x99, 0x00, 0x6C, +0x03, 0xF6, 0x5A, 0xC0, 0x0C, 0x6A, 0x03, 0xF6, +0x5B, 0xC0, 0x40, 0xF4, 0x5C, 0x99, 0x00, 0x6C, 0xA4, 0x67, 0x40, 0xEA, 0x40, 0xF4, 0x5C, 0x99, 0x01, 0x6C, 0x00, 0x6D, 0x40, 0xEA, 0x40, 0xF4, 0x5C, 0x99, 0x02, 0x6C, 0x00, 0x6D, 0x40, 0xEA, 0x40, 0xF4, 0x5C, 0x99, 0x03, 0x6C, 0x00, 0x6D, 0x40, 0xEA, 0x40, 0xF4, 0x5C, 0x99, 0x04, 0x6C, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x7C, 0x9A, 0xF8, 0x6A, 0x00, 0x6D, -0x80, 0xA3, 0xC5, 0x67, 0x00, 0x69, 0x8C, 0xEA, +0x83, 0xF2, 0x64, 0x9A, 0xF8, 0x6A, 0x00, 0x6D, +0x80, 0xA3, 0x63, 0x6E, 0x00, 0x69, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF6, 0x70, 0xA0, 0x63, 0xF1, -0x44, 0x9A, 0x83, 0xF3, 0x3C, 0xC0, 0xFF, 0x6C, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x60, 0x9A, 0x08, 0x6D, 0xAB, 0xED, 0x40, 0xA3, +0x20, 0x6A, 0x03, 0xF6, 0x74, 0xA0, 0x83, 0xF1, +0x48, 0x9A, 0xA3, 0xF3, 0x20, 0xC0, 0xFF, 0x6C, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0x7C, 0x9A, 0x08, 0x6D, 0xAB, 0xED, 0x40, 0xA3, 0x80, 0xF6, 0x10, 0x6E, 0x8C, 0xEA, 0xAC, 0xEA, 0x05, 0x6D, 0xAD, 0xEA, 0x8C, 0xEA, 0x30, 0xF0, -0x20, 0x6C, 0x40, 0xC3, 0xCE, 0xF7, 0x00, 0x4C, -0x00, 0x6D, 0x00, 0x18, 0x3D, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x44, 0x9A, 0x20, 0x6B, +0x20, 0x6C, 0x40, 0xC3, 0x0F, 0xF0, 0x0C, 0x4C, +0x00, 0x6D, 0x00, 0x18, 0x98, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF2, 0x48, 0x9A, 0x20, 0x6B, 0x10, 0xF0, 0x23, 0x6D, 0x60, 0xC2, 0x0C, 0x6A, -0x63, 0xF6, 0x58, 0xC0, 0xE3, 0xF5, 0x5F, 0xC0, -0x63, 0xF6, 0x39, 0xC0, 0x63, 0xF6, 0x3B, 0xC0, -0x04, 0x6C, 0x69, 0xF1, 0x1D, 0x4D, 0x00, 0x18, +0x63, 0xF6, 0x5C, 0xC0, 0x03, 0xF6, 0x43, 0xC0, +0x63, 0xF6, 0x3D, 0xC0, 0x63, 0xF6, 0x3F, 0xC0, +0x04, 0x6C, 0xA9, 0xF6, 0x19, 0x4D, 0x00, 0x18, 0x1A, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x2E, 0xF7, 0xB4, 0xA3, 0x04, 0x6B, 0xFF, 0x6A, -0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x06, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x48, 0x9A, -0x00, 0x6B, 0x60, 0xC2, 0x02, 0x6D, 0x00, 0x18, -0xCE, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x4C, 0x9A, 0x04, 0x69, 0x30, 0xF0, 0x20, 0x68, -0x20, 0xDA, 0x2B, 0xF1, 0x18, 0x48, 0xC0, 0xF0, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x64, 0xF5, 0xB6, 0xAB, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x4D, 0x64, 0xF5, +0xB6, 0xCB, 0x03, 0xF6, 0xA0, 0xA3, 0x04, 0x6B, +0xAC, 0xEB, 0x4C, 0xEB, 0x06, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF2, 0x4C, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x02, 0x6D, 0x00, 0x18, 0x6A, 0xE3, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, +0x04, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x20, 0xDA, +0x8B, 0xF1, 0x00, 0x48, 0xC0, 0xF0, 0xC4, 0xA0, +0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0xC6, 0x36, 0x10, 0xF0, +0x23, 0x6C, 0x01, 0x6F, 0xC4, 0xF6, 0x01, 0x4C, +0x00, 0x6D, 0xC4, 0x36, 0x40, 0xEA, 0xC0, 0xF0, 0xC4, 0xA0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, 0x59, 0x4C, 0x00, 0x6D, -0xC6, 0x36, 0x40, 0xEA, 0xE3, 0xF5, 0x5C, 0xA0, -0x07, 0x97, 0x4D, 0xE9, 0xE3, 0xF5, 0x3C, 0xC0, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xC6, 0x36, 0x40, 0xEA, 0x03, 0xF6, 0x40, 0xA0, +0x09, 0x97, 0x4D, 0xE9, 0x03, 0xF6, 0x20, 0xC0, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x29, 0x22, 0x05, 0x5C, 0x1D, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x42, 0xF1, 0x0C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6C, 0x63, 0xF2, -0xB0, 0x9A, 0x0D, 0x10, 0x04, 0x6C, 0x0F, 0x6D, +0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6C, 0x83, 0xF2, +0xB4, 0x9A, 0x0D, 0x10, 0x04, 0x6C, 0x0F, 0x6D, 0x0A, 0x10, 0x04, 0x6C, 0xF0, 0x6D, 0x07, 0x10, 0x04, 0x6C, 0x01, 0xF7, 0x00, 0x6D, 0x03, 0x10, 0x04, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x80, 0x18, -0x45, 0x76, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x7C, 0x9A, 0xFF, 0x6C, 0x07, 0x6D, 0x40, 0xA3, +0x2E, 0x78, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x64, 0x9A, 0xFF, 0x6C, 0x07, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x25, 0x10, 0x05, 0x5C, 0x1D, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x62, 0xF1, 0x00, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6C, -0x63, 0xF2, 0xB0, 0x9A, 0x0D, 0x10, 0x04, 0x6C, +0x83, 0xF2, 0xB4, 0x9A, 0x0D, 0x10, 0x04, 0x6C, 0x0F, 0x6D, 0x0A, 0x10, 0x04, 0x6C, 0xF0, 0x6D, 0x07, 0x10, 0x04, 0x6C, 0x01, 0xF7, 0x00, 0x6D, 0x03, 0x10, 0x04, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0x76, 0x76, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x7C, 0x9A, 0xF8, 0x6A, 0x80, 0xA3, +0x80, 0x18, 0x5F, 0x78, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF2, 0x64, 0x9A, 0xF8, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x27, 0x22, @@ -20341,333 +20560,353 @@ u8 array_mp_8822c_fw_nic[] = { 0x88, 0x34, 0x62, 0xF1, 0x14, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x00, 0x6C, 0x08, 0x6D, 0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, -0xA3, 0xF1, 0xBC, 0x9A, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0x6C, 0x63, 0xF2, 0xB4, 0x9A, +0xE3, 0xF1, 0xA0, 0x9A, 0x11, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x6C, 0x83, 0xF2, 0xB8, 0x9A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, -0x63, 0xF2, 0xB8, 0x9A, 0x05, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0xBC, 0x9A, 0x04, 0x6C, -0x80, 0x18, 0x45, 0x76, 0x26, 0x10, 0x05, 0x5C, +0x83, 0xF2, 0xBC, 0x9A, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF2, 0xA0, 0x9A, 0x04, 0x6C, +0x80, 0x18, 0x2E, 0x78, 0x26, 0x10, 0x05, 0x5C, 0x24, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x82, 0xF1, 0x08, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x00, 0x6C, 0x08, 0x6D, 0x17, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0xA3, 0xF1, -0xBC, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0x6C, 0x63, 0xF2, 0xB4, 0x9A, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0x63, 0xF2, -0xB8, 0x9A, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0xBC, 0x9A, 0x04, 0x6C, 0x80, 0x18, -0x76, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0xE3, 0xF1, +0xA0, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0x6C, 0x83, 0xF2, 0xB8, 0x9A, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0x83, 0xF2, +0xBC, 0x9A, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF2, 0xA0, 0x9A, 0x04, 0x6C, 0x80, 0x18, +0x5F, 0x78, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x83, 0xF2, -0x60, 0x9B, 0x4C, 0xEC, 0x04, 0xD4, 0x20, 0xA3, -0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6C, 0x4C, 0xE9, -0xA0, 0xF2, 0x50, 0x98, 0xA4, 0x67, 0x2D, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x5C, 0x9A, 0x40, 0xEA, 0x06, 0x2A, 0xA0, 0xF2, -0x50, 0x98, 0xFF, 0x6C, 0xB1, 0x67, 0x2D, 0x6E, -0x0C, 0x10, 0x04, 0x94, 0x01, 0x6D, 0x00, 0x18, -0xDF, 0xCD, 0x00, 0x18, 0x30, 0xEB, 0x07, 0x2A, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x4C, 0xEC, +0x8B, 0xF1, 0x00, 0x4B, 0x04, 0xD4, 0x44, 0xF5, +0x94, 0xAB, 0x30, 0xF0, 0x20, 0x68, 0x2D, 0x6E, +0x01, 0x4C, 0x44, 0xF5, 0x94, 0xCB, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF2, 0x64, 0x9B, 0xFF, 0x6C, +0xA4, 0x67, 0x20, 0xA3, 0x4C, 0xE9, 0xA0, 0xF2, +0x50, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x06, 0x2A, 0xA0, 0xF2, 0x50, 0x98, 0xFF, 0x6C, 0xB1, 0x67, -0x5B, 0x6E, 0x40, 0xEA, 0x07, 0x10, 0x01, 0x6C, -0x00, 0x6D, 0x00, 0x18, 0xD7, 0xC5, 0x00, 0x6C, -0x80, 0x18, 0xBF, 0x70, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x2D, 0x6E, 0x0C, 0x10, 0x04, 0x94, 0x01, 0x6D, +0x00, 0x18, 0xF1, 0xCE, 0x00, 0x18, 0xD5, 0xEC, +0x07, 0x2A, 0xA0, 0xF2, 0x50, 0x98, 0xFF, 0x6C, +0xB1, 0x67, 0x5B, 0x6E, 0x40, 0xEA, 0x07, 0x10, +0x01, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0xD7, 0xC5, +0x00, 0x6C, 0x80, 0x18, 0xA7, 0x72, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x25, 0x67, 0x30, 0xF0, 0x20, 0x6D, 0x2B, 0xF1, -0x18, 0x4D, 0x06, 0x67, 0xE3, 0xF5, 0xDD, 0xA5, +0x25, 0x67, 0x30, 0xF0, 0x20, 0x6D, 0x8B, 0xF1, +0x00, 0x4D, 0x06, 0x67, 0x03, 0xF6, 0xC1, 0xA5, 0x03, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, -0x4C, 0xEC, 0x4C, 0xE9, 0x4C, 0xE8, 0xE0, 0xF0, -0x06, 0x2B, 0xE3, 0xF5, 0x5F, 0xA5, 0x8E, 0xEA, -0xE0, 0xF0, 0x01, 0x22, 0x0D, 0x5C, 0xC0, 0xF0, -0x1E, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, +0x4C, 0xEC, 0x4C, 0xE9, 0x4C, 0xE8, 0x00, 0xF1, +0x0C, 0x2B, 0x03, 0xF6, 0x43, 0xA5, 0x8E, 0xEA, +0x00, 0xF1, 0x07, 0x22, 0x0D, 0x5C, 0x00, 0xF1, +0x04, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x82, 0xF1, 0x1C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, -0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, -0x57, 0xA2, 0x0E, 0x72, 0x03, 0x61, 0x90, 0x67, -0x00, 0x18, 0xEA, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF7, 0x57, 0xA2, 0x04, 0x2A, 0x01, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0xF7, 0xC8, 0x30, 0xF0, -0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, 0x06, 0x72, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x21, 0xCC, -0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, +0x43, 0xA2, 0x0E, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0xA5, 0xCC, 0x30, 0xF0, 0x20, 0x6A, +0x8E, 0xF7, 0x43, 0xA2, 0x04, 0x2A, 0x01, 0x6C, +0xB0, 0x67, 0x00, 0x18, 0x65, 0xC9, 0x30, 0xF0, +0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, 0x06, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xE1, 0xCC, +0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, 0x04, 0x72, 0x09, 0x61, 0x05, 0x21, 0x91, 0x67, -0xB0, 0x67, 0x00, 0x18, 0x6E, 0xD1, 0x03, 0x10, -0x90, 0x67, 0x00, 0x18, 0x48, 0xC6, 0x30, 0xF0, -0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, 0x08, 0x72, -0xA0, 0xF0, 0x05, 0x61, 0x80, 0x18, 0x00, 0x40, -0xA2, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, -0x57, 0xA2, 0x04, 0x2A, 0x01, 0x6C, 0xB0, 0x67, -0x00, 0x18, 0xF7, 0xC8, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF7, 0x57, 0xA2, 0x06, 0x72, 0x03, 0x61, -0x90, 0x67, 0x00, 0x18, 0x21, 0xCC, 0x30, 0xF0, -0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, 0x0E, 0x72, -0x07, 0x61, 0x00, 0x18, 0x24, 0xC6, 0x01, 0x72, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xEA, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, -0x0C, 0x72, 0x7D, 0x61, 0x00, 0x18, 0x24, 0xC6, -0x01, 0x72, 0x79, 0x61, 0x90, 0x67, 0x00, 0x18, -0x44, 0xCB, 0x75, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF7, 0x57, 0xA2, 0x0E, 0x72, 0x07, 0x61, -0x00, 0x18, 0x24, 0xC6, 0x01, 0x72, 0x03, 0x61, -0x90, 0x67, 0x00, 0x18, 0xEA, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, 0x06, 0x72, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x21, 0xCC, -0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, -0x0C, 0x72, 0x07, 0x61, 0x00, 0x18, 0x24, 0xC6, +0xB0, 0x67, 0x00, 0x18, 0xB5, 0xD2, 0x03, 0x10, +0x90, 0x67, 0x00, 0x18, 0x7E, 0xC6, 0x30, 0xF0, +0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, 0x08, 0x72, +0xC0, 0xF0, 0x0B, 0x61, 0x80, 0x18, 0x0A, 0x40, +0xC8, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, +0x43, 0xA2, 0x04, 0x2A, 0x01, 0x6C, 0xB0, 0x67, +0x00, 0x18, 0x65, 0xC9, 0x30, 0xF0, 0x20, 0x6A, +0x8E, 0xF7, 0x43, 0xA2, 0x06, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xE1, 0xCC, 0x30, 0xF0, +0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, 0x0E, 0x72, +0x07, 0x61, 0x00, 0x18, 0x44, 0xC6, 0x01, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xA5, 0xCC, +0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, +0x0C, 0x72, 0xA0, 0xF0, 0x02, 0x61, 0x00, 0x18, +0x44, 0xC6, 0x01, 0x72, 0x80, 0xF0, 0x1D, 0x61, +0x90, 0x67, 0x00, 0x18, 0xF5, 0xCB, 0x99, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, +0x0E, 0x72, 0x07, 0x61, 0x00, 0x18, 0x44, 0xC6, 0x01, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, -0x44, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, -0x57, 0xA2, 0x04, 0x72, 0x4C, 0x61, 0x00, 0x18, -0xC2, 0xCC, 0x01, 0x72, 0x48, 0x61, 0x90, 0x67, -0x00, 0x18, 0x0A, 0xCE, 0x44, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, 0x0E, 0x72, -0x07, 0x61, 0x00, 0x18, 0x24, 0xC6, 0x01, 0x72, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xEA, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, +0xA5, 0xCC, 0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, +0x43, 0xA2, 0x06, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0xE1, 0xCC, 0x30, 0xF0, 0x20, 0x6A, +0x8E, 0xF7, 0x43, 0xA2, 0x0C, 0x72, 0x07, 0x61, +0x00, 0x18, 0x44, 0xC6, 0x01, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xF5, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, 0x04, 0x72, +0x70, 0x61, 0x00, 0x18, 0xA4, 0xCD, 0x01, 0x72, +0x6C, 0x61, 0x90, 0x67, 0x00, 0x18, 0x1C, 0xCF, +0x68, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, +0x43, 0xA2, 0x0E, 0x72, 0x07, 0x61, 0x00, 0x18, +0x44, 0xC6, 0x01, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0xA5, 0xCC, 0x30, 0xF0, 0x20, 0x6A, +0x8E, 0xF7, 0x43, 0xA2, 0x06, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xE1, 0xCC, 0x30, 0xF0, +0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, 0x0C, 0x72, +0x07, 0x61, 0x00, 0x18, 0x44, 0xC6, 0x01, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xF5, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, +0x04, 0x2A, 0x01, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0x65, 0xC9, 0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, +0x43, 0xA2, 0x04, 0x72, 0x36, 0x61, 0x00, 0x18, +0x94, 0xCC, 0x33, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8E, 0xF7, 0x43, 0xA2, 0x0E, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xA5, 0xCC, 0x30, 0xF0, +0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, 0x04, 0x2A, +0x01, 0x6C, 0xB0, 0x67, 0x00, 0x18, 0x65, 0xC9, +0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, 0x06, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, -0x21, 0xCC, 0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, -0x57, 0xA2, 0x0C, 0x72, 0x07, 0x61, 0x00, 0x18, -0x24, 0xC6, 0x01, 0x72, 0x03, 0x61, 0x90, 0x67, -0x00, 0x18, 0x44, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF7, 0x57, 0xA2, 0x04, 0x2A, 0x01, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0xF7, 0xC8, 0x30, 0xF0, -0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, 0x04, 0x72, -0x12, 0x61, 0x00, 0x18, 0xD9, 0xCB, 0x0F, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE3, 0xF5, 0x7F, 0xA2, 0x0C, 0x73, 0x07, 0x61, -0xE3, 0xF5, 0x7C, 0xA2, 0x20, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x19, 0x40, 0x07, 0x97, +0xE1, 0xCC, 0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, +0x43, 0xA2, 0x04, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x7E, 0xC6, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, 0x63, 0xA2, +0x0C, 0x73, 0x07, 0x61, 0x03, 0xF6, 0x60, 0xA2, +0x20, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, +0x23, 0x40, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x24, 0x67, +0x4C, 0xED, 0x00, 0x6C, 0x4C, 0xE9, 0x04, 0xD5, +0x00, 0x18, 0xD9, 0xDE, 0x02, 0x67, 0x00, 0x18, +0x15, 0xC6, 0x2D, 0x22, 0x16, 0x29, 0x30, 0xF0, +0x20, 0x6A, 0x28, 0xF7, 0x18, 0x4A, 0x63, 0xA2, +0x84, 0x9A, 0xA6, 0x9A, 0x01, 0x4B, 0x63, 0xC2, +0x93, 0xE0, 0xE0, 0xF3, 0x08, 0x6B, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x05, 0xDA, 0x12, 0xEB, +0xAD, 0xE3, 0x66, 0xDA, 0x80, 0x18, 0x23, 0x40, +0x44, 0x10, 0x80, 0x18, 0x0A, 0x40, 0x30, 0xF0, +0x20, 0x6A, 0x28, 0xF7, 0x18, 0x4A, 0x85, 0x9A, +0xE0, 0xF3, 0x08, 0x6B, 0xA7, 0x9A, 0x93, 0xE0, +0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x04, 0xDA, +0x12, 0xEB, 0xAD, 0xE3, 0x67, 0xDA, 0x62, 0xA2, +0x01, 0x4B, 0x62, 0xC2, 0x2E, 0x10, 0x01, 0x71, +0x19, 0x61, 0x04, 0x96, 0x04, 0x6C, 0x01, 0x6D, +0x00, 0x18, 0x3E, 0xCF, 0x30, 0xF0, 0x20, 0x6A, +0x28, 0xF7, 0x18, 0x4A, 0x85, 0x9A, 0xE0, 0xF3, +0x08, 0x6B, 0xA7, 0x9A, 0x93, 0xE0, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x04, 0xDA, 0x12, 0xEB, +0xAD, 0xE3, 0x67, 0xDA, 0x64, 0xA2, 0x01, 0x4B, +0x64, 0xC2, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x28, 0xF7, 0x18, 0x4A, 0x84, 0x9A, 0xE0, 0xF3, +0x08, 0x6B, 0xA6, 0x9A, 0x93, 0xE0, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x05, 0xDA, 0x12, 0xEB, +0xAD, 0xE3, 0x66, 0xDA, 0x65, 0xA2, 0x01, 0x4B, +0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF7, +0x18, 0x4A, 0x66, 0x9A, 0x06, 0x23, 0x87, 0x9A, +0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x12, 0xEB, +0x63, 0xDA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x28, 0xF7, 0x18, 0x4A, 0x61, 0xA2, 0x30, 0xF0, +0x20, 0x69, 0x8B, 0xF1, 0x00, 0x49, 0xC0, 0xF0, +0x09, 0xA1, 0x01, 0x4B, 0x61, 0xC2, 0x16, 0x30, +0x00, 0x18, 0x15, 0xC6, 0x08, 0x22, 0x00, 0x18, +0xA1, 0xC8, 0x02, 0x22, 0x08, 0x6A, 0x01, 0x10, +0x0C, 0x6A, 0x63, 0xF6, 0x5C, 0xC1, 0x00, 0x6C, +0x00, 0x18, 0x42, 0xC9, 0x00, 0x18, 0xE8, 0xC8, +0x00, 0x18, 0xA1, 0xC8, 0x18, 0x22, 0x90, 0x67, +0x00, 0x18, 0xF9, 0xC8, 0x00, 0x6C, 0xB0, 0x67, +0x00, 0x18, 0xD1, 0xCF, 0x30, 0xF0, 0x20, 0x6A, +0x4B, 0xF2, 0x69, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x0E, 0x22, 0x90, 0x67, 0x00, 0x18, 0xA6, 0xE9, +0x90, 0x67, 0x00, 0x18, 0xAD, 0xE9, 0x90, 0x67, +0x00, 0x18, 0x9C, 0xE9, 0x04, 0x10, 0x01, 0x6C, +0xB0, 0x67, 0x00, 0x18, 0xD1, 0xCF, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xED, 0x00, 0x6C, -0x4C, 0xE9, 0x04, 0xD5, 0x00, 0x18, 0x65, 0xDD, -0x02, 0x67, 0x00, 0x18, 0x29, 0xC8, 0x2D, 0x22, -0x16, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, -0x10, 0x4A, 0x63, 0xA2, 0x84, 0x9A, 0xA6, 0x9A, -0x01, 0x4B, 0x63, 0xC2, 0x93, 0xE0, 0xE0, 0xF3, -0x08, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x05, 0xDA, 0x12, 0xEB, 0xAD, 0xE3, 0x66, 0xDA, -0x80, 0x18, 0x19, 0x40, 0x44, 0x10, 0x80, 0x18, -0x00, 0x40, 0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, -0x10, 0x4A, 0x85, 0x9A, 0xE0, 0xF3, 0x08, 0x6B, -0xA7, 0x9A, 0x93, 0xE0, 0x7B, 0xEC, 0x01, 0x2B, -0xE5, 0xE8, 0x04, 0xDA, 0x12, 0xEB, 0xAD, 0xE3, -0x67, 0xDA, 0x62, 0xA2, 0x01, 0x4B, 0x62, 0xC2, -0x2E, 0x10, 0x01, 0x71, 0x19, 0x61, 0x04, 0x96, -0x04, 0x6C, 0x01, 0x6D, 0x00, 0x18, 0x28, 0xCE, -0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, 0x10, 0x4A, -0x85, 0x9A, 0xE0, 0xF3, 0x08, 0x6B, 0xA7, 0x9A, -0x93, 0xE0, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x04, 0xDA, 0x12, 0xEB, 0xAD, 0xE3, 0x67, 0xDA, -0x64, 0xA2, 0x01, 0x4B, 0x64, 0xC2, 0x13, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, 0x10, 0x4A, -0x84, 0x9A, 0xE0, 0xF3, 0x08, 0x6B, 0xA6, 0x9A, -0x93, 0xE0, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x05, 0xDA, 0x12, 0xEB, 0xAD, 0xE3, 0x66, 0xDA, -0x65, 0xA2, 0x01, 0x4B, 0x65, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xE8, 0xF6, 0x10, 0x4A, 0x66, 0x9A, -0x06, 0x23, 0x87, 0x9A, 0x7B, 0xEC, 0x01, 0x2B, -0xE5, 0xE8, 0x12, 0xEB, 0x63, 0xDA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, 0x10, 0x4A, -0x61, 0xA2, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xC0, 0xF0, 0x29, 0xA0, 0x01, 0x4B, -0x61, 0xC2, 0x36, 0x31, 0x00, 0x18, 0x29, 0xC8, -0x08, 0x22, 0x00, 0x18, 0x44, 0xC8, 0x02, 0x22, -0x08, 0x6A, 0x01, 0x10, 0x0C, 0x6A, 0x63, 0xF6, -0x58, 0xC0, 0x00, 0x6C, 0x00, 0x18, 0xD4, 0xC8, -0x00, 0x18, 0x8B, 0xC8, 0x00, 0x18, 0x44, 0xC8, -0x01, 0x6C, 0x04, 0x22, 0x91, 0x67, 0x00, 0x18, -0x9C, 0xC8, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x18, -0xA8, 0xCE, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x24, 0x67, 0x4C, 0xED, 0x00, 0x6C, -0xE8, 0xF6, 0x10, 0x48, 0x4C, 0xE9, 0x05, 0xD5, -0x00, 0x18, 0x65, 0xDD, 0x68, 0x98, 0x04, 0xD2, -0x6F, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0x44, 0x9A, 0x63, 0xEA, 0x04, 0x60, 0x00, 0x18, -0x94, 0xC8, 0x04, 0x92, 0x48, 0xD8, 0x00, 0x18, -0x44, 0xC8, 0x29, 0x22, 0x91, 0x67, 0x00, 0x18, -0x48, 0xC8, 0x25, 0x22, 0x00, 0x18, 0x56, 0xC8, -0x22, 0x22, 0x05, 0x95, 0x91, 0x67, 0x00, 0x18, -0xBA, 0xC8, 0x1D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x83, 0xF6, 0x85, 0xA2, -0x83, 0xF6, 0x66, 0xA2, 0x63, 0xEC, 0x6F, 0xE4, -0x01, 0x60, 0x00, 0x6B, 0x83, 0xF6, 0x65, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, 0x5D, 0xA2, -0x0A, 0x2A, 0x91, 0x67, 0x00, 0x18, 0x9C, 0xC8, -0x01, 0x6C, 0xB1, 0x67, 0x00, 0x18, 0xA8, 0xCE, -0x01, 0x6C, 0x00, 0x18, 0xD4, 0xC8, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xE8, 0xF6, 0x10, 0x4A, 0x67, 0xA2, 0x01, 0x4B, -0x67, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x83, 0xF6, 0x87, 0xA2, 0xC0, 0xF0, -0xA9, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x83, 0xF6, 0x67, 0xC2, 0x00, 0x6C, 0xB6, 0x35, -0x00, 0x18, 0xA8, 0xCE, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xA0, 0xF0, 0xBB, 0xA3, 0x04, 0x67, -0x7F, 0x6C, 0xAC, 0xEC, 0xFF, 0x6A, 0x01, 0x74, -0x4C, 0xE8, 0x20, 0x61, 0xA0, 0xF0, 0xBC, 0xA3, -0x10, 0x6C, 0x8B, 0xEC, 0xAC, 0xEC, 0x4C, 0xEC, -0x11, 0x24, 0xD0, 0x67, 0x0C, 0x6C, 0x00, 0x6D, -0x00, 0x18, 0x28, 0xCE, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xFF, 0x6C, -0xC5, 0x67, 0x40, 0xEA, 0x90, 0x67, 0x00, 0x18, -0x97, 0xCD, 0x08, 0x10, 0xE3, 0xF5, 0x5F, 0xA3, -0x05, 0x2A, 0x04, 0x6C, 0x01, 0x6D, 0xD0, 0x67, -0x00, 0x18, 0x28, 0xCE, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF2, 0xB2, 0xA3, -0x01, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, -0x4C, 0xEC, 0x06, 0x2B, 0x00, 0x18, 0x35, 0xCF, -0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, 0xF2, 0xCC, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x24, 0x67, +0x4C, 0xED, 0x00, 0x6C, 0x28, 0xF7, 0x18, 0x48, +0x4C, 0xE9, 0x05, 0xD5, 0x00, 0x18, 0xD9, 0xDE, +0x68, 0x98, 0x04, 0xD2, 0x6F, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF2, 0x48, 0x9A, 0x63, 0xEA, +0x04, 0x60, 0x00, 0x18, 0xF1, 0xC8, 0x04, 0x92, +0x48, 0xD8, 0x00, 0x18, 0xA1, 0xC8, 0x29, 0x22, +0x91, 0x67, 0x00, 0x18, 0xA5, 0xC8, 0x25, 0x22, +0x00, 0x18, 0xB3, 0xC8, 0x22, 0x22, 0x05, 0x95, +0x91, 0x67, 0x00, 0x18, 0x28, 0xC9, 0x1D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x83, 0xF6, 0x89, 0xA2, 0x83, 0xF6, 0x6A, 0xA2, +0x63, 0xEC, 0x6F, 0xE4, 0x01, 0x60, 0x00, 0x6B, +0x83, 0xF6, 0x69, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x0F, 0xF0, 0x49, 0xA2, 0x0A, 0x2A, 0x91, 0x67, +0x00, 0x18, 0xF9, 0xC8, 0x01, 0x6C, 0xB1, 0x67, +0x00, 0x18, 0xD1, 0xCF, 0x01, 0x6C, 0x00, 0x18, +0x42, 0xC9, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF7, 0x18, 0x4A, +0x67, 0xA2, 0x01, 0x4B, 0x67, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x83, 0xF6, +0x8B, 0xA2, 0xC0, 0xF0, 0xA9, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x83, 0xF6, 0x6B, 0xC2, +0x00, 0x6C, 0xB6, 0x35, 0x00, 0x18, 0xD1, 0xCF, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0xA0, 0xF0, +0xBB, 0xA3, 0x04, 0x67, 0x7F, 0x6C, 0xAC, 0xEC, +0xFF, 0x6A, 0x01, 0x74, 0x4C, 0xE8, 0x20, 0x61, +0xA0, 0xF0, 0xBC, 0xA3, 0x10, 0x6C, 0x8B, 0xEC, +0xAC, 0xEC, 0x4C, 0xEC, 0x11, 0x24, 0xD0, 0x67, +0x0C, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0x3E, 0xCF, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0xFF, 0x6C, 0x00, 0x6D, 0x6B, 0x6E, 0x40, 0xEA, +0x90, 0x67, 0x00, 0x18, 0x9D, 0xCE, 0x08, 0x10, +0x03, 0xF6, 0x43, 0xA3, 0x05, 0x2A, 0x04, 0x6C, +0x01, 0x6D, 0xD0, 0x67, 0x00, 0x18, 0x3E, 0xCF, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xE0, 0xF0, 0xDA, 0xA3, +0x01, 0x6D, 0xFF, 0x6A, 0xCC, 0xED, 0x4C, 0xED, +0x4C, 0xEC, 0x0B, 0x2D, 0x64, 0xF5, 0x4C, 0xAB, +0x01, 0x4A, 0x64, 0xF5, 0x4C, 0xCB, 0x00, 0x18, +0x68, 0xD0, 0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, +0xF8, 0xCD, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x4C, 0xEC, 0x04, 0xD4, 0x03, 0xF6, -0x81, 0xA0, 0x10, 0x6B, 0x8D, 0xEB, 0xC0, 0xF0, -0x97, 0xA0, 0x03, 0xF6, 0x61, 0xC0, 0x01, 0x6B, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x4C, 0xEC, 0x04, 0xD4, 0x03, 0xF6, +0x85, 0xA0, 0x10, 0x6B, 0x8D, 0xEB, 0xC0, 0xF0, +0x97, 0xA0, 0x03, 0xF6, 0x65, 0xC0, 0x01, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x26, 0x23, 0xC0, 0xF0, 0x59, 0xA0, 0xFF, 0x72, 0x2C, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x48, 0x9A, 0x00, 0x6B, +0x20, 0x6A, 0x83, 0xF2, 0x4C, 0x9A, 0x00, 0x6B, 0x30, 0xF0, 0x20, 0x69, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, 0x04, 0x6B, +0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, 0x04, 0x6B, 0xFF, 0x6C, 0x60, 0xC2, 0x00, 0xF3, 0x48, 0x99, 0x59, 0x4C, 0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0xC0, 0xF0, 0xD9, 0xA0, 0x00, 0xF3, 0x48, 0x99, 0xFF, 0x6C, 0x55, 0x4C, 0x00, 0x6D, 0x06, 0x4E, -0x40, 0xEA, 0x04, 0x94, 0x00, 0x18, 0x01, 0xE8, +0x40, 0xEA, 0x04, 0x94, 0x00, 0x18, 0xA6, 0xE9, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x48, 0x9A, 0x03, 0xF6, 0xC8, 0xA0, 0xFF, 0x6C, +0x48, 0x9A, 0x03, 0xF6, 0xCC, 0xA0, 0xFF, 0x6C, 0x55, 0x4C, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, 0x04, 0x6B, +0x20, 0x6A, 0x8E, 0xF7, 0x43, 0xA2, 0x04, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x04, 0x96, 0x83, 0x67, -0x01, 0x6D, 0x00, 0x18, 0x28, 0xCE, 0x09, 0x97, +0x01, 0x6D, 0x00, 0x18, 0x3E, 0xCF, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x69, -0x04, 0xD2, 0x2B, 0xF1, 0x18, 0x49, 0xA0, 0xF0, -0x7B, 0xA1, 0x00, 0x6A, 0x03, 0xF6, 0x4D, 0xC1, +0x04, 0xD2, 0x8B, 0xF1, 0x00, 0x49, 0xA0, 0xF0, +0x7B, 0xA1, 0x00, 0x6A, 0x03, 0xF6, 0x51, 0xC1, 0x7F, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x29, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA1, 0x01, 0x68, 0x40, 0xEA, 0x4E, 0xE8, 0x1F, 0x28, 0x04, 0x94, -0x03, 0xF6, 0xA6, 0xA1, 0x00, 0x18, 0xBC, 0xE9, +0x03, 0xF6, 0xAA, 0xA1, 0x00, 0x18, 0x61, 0xEB, 0xA0, 0xF0, 0x7A, 0xA1, 0x01, 0x6A, 0xFF, 0x6C, -0x4C, 0xEB, 0x8C, 0xEB, 0x03, 0xF6, 0x07, 0xC1, -0x05, 0x2B, 0xA3, 0xF3, 0x7C, 0xA1, 0x6C, 0xEA, +0x4C, 0xEB, 0x8C, 0xEB, 0x03, 0xF6, 0x0B, 0xC1, +0x05, 0x2B, 0xC3, 0xF3, 0x60, 0xA1, 0x6C, 0xEA, 0x8C, 0xEA, 0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF4, 0x12, 0xA2, 0x80, 0x18, 0x74, 0x6F, +0x2E, 0xF5, 0x1E, 0xA2, 0x80, 0x18, 0x5C, 0x71, 0x05, 0x22, 0x02, 0x70, 0x03, 0x60, 0x04, 0x94, -0x00, 0x18, 0x5A, 0xCF, 0x09, 0x97, 0x08, 0x91, +0x00, 0x18, 0x90, 0xD0, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xA0, 0xF0, 0x7B, 0xA0, 0x00, 0x6A, 0x03, 0xF6, -0x4D, 0xC0, 0x7F, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, +0x51, 0xC0, 0x7F, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x2C, 0xEC, 0x2C, 0xEA, 0x04, 0xD4, 0x37, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x2E, 0x61, 0xA0, 0xF0, 0x7C, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x01, 0x69, 0x06, 0x22, -0xE3, 0xF5, 0x3D, 0xA0, 0x01, 0x6A, 0x32, 0x31, +0x03, 0xF6, 0x21, 0xA0, 0x01, 0x6A, 0x32, 0x31, 0x4E, 0xE9, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, -0x01, 0x6B, 0x6C, 0xEC, 0x06, 0x2C, 0xA3, 0xF3, -0x5C, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, -0x72, 0xA2, 0x02, 0x6A, 0x4E, 0xEB, 0x6B, 0xEA, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, +0x01, 0x6B, 0x6C, 0xEC, 0x06, 0x2C, 0xC3, 0xF3, +0x40, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF5, +0x7E, 0xA2, 0x02, 0x6A, 0x4E, 0xEB, 0x6B, 0xEA, 0x6D, 0xEA, 0xC0, 0xF7, 0x43, 0x32, 0x4C, 0xE9, -0x80, 0x18, 0x74, 0x6F, 0x04, 0x22, 0x03, 0x21, -0x04, 0x94, 0x00, 0x18, 0x5A, 0xCF, 0x09, 0x97, +0x80, 0x18, 0x5C, 0x71, 0x04, 0x22, 0x03, 0x21, +0x04, 0x94, 0x00, 0x18, 0x90, 0xD0, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xF2, 0x63, 0x1B, 0x62, 0x1A, 0xD1, 0x19, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, 0x30, 0xF0, 0x20, 0x68, -0x91, 0x67, 0x2B, 0xF1, 0x18, 0x48, 0x00, 0x18, -0x97, 0xCD, 0xE3, 0xF5, 0x5F, 0xA0, 0x0C, 0x72, +0x91, 0x67, 0x8B, 0xF1, 0x00, 0x48, 0x00, 0x18, +0x9D, 0xCE, 0x03, 0xF6, 0x43, 0xA0, 0x0C, 0x72, 0x41, 0x60, 0xD1, 0x67, 0x0C, 0x6C, 0x00, 0x6D, -0x00, 0x18, 0x28, 0xCE, 0x00, 0x6C, 0xA4, 0x67, -0x00, 0x18, 0xF2, 0xCC, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xC5, 0x67, -0xFF, 0x6C, 0x40, 0xEA, 0xE3, 0xF5, 0x7D, 0xA0, +0x00, 0x18, 0x3E, 0xCF, 0x00, 0x6C, 0xA4, 0x67, +0x00, 0x18, 0xF8, 0xCD, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0x00, 0x6D, +0x6A, 0x6E, 0x40, 0xEA, 0x03, 0xF6, 0x61, 0xA0, 0x01, 0x6A, 0x0C, 0x04, 0x6D, 0xEA, 0x00, 0x6D, -0x30, 0x6E, 0xE3, 0xF5, 0x5D, 0xC0, 0x00, 0x18, -0x3D, 0xD7, 0xA0, 0xF0, 0x4A, 0xA0, 0x7D, 0x67, +0x30, 0x6E, 0x03, 0xF6, 0x41, 0xC0, 0x00, 0x18, +0x98, 0xD8, 0xA0, 0xF0, 0x4A, 0xA0, 0x7D, 0x67, 0x40, 0xF0, 0x2C, 0xC3, 0x40, 0xF0, 0x48, 0xCB, 0x08, 0x6A, 0x40, 0xF0, 0x4B, 0xC3, 0x10, 0xF0, -0x23, 0x6A, 0x46, 0xF1, 0x11, 0x4A, 0x0C, 0xD2, -0x10, 0xF0, 0x23, 0x6A, 0xC4, 0xF1, 0x01, 0x4A, +0x23, 0x6A, 0x66, 0xF4, 0x05, 0x4A, 0x0C, 0xD2, +0x10, 0xF0, 0x23, 0x6A, 0x24, 0xF3, 0x15, 0x4A, 0x0D, 0xD2, 0x04, 0x04, 0x00, 0x6A, 0x10, 0x03, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x0C, 0x94, 0x0D, 0x95, 0x0E, 0x96, 0x0F, 0x97, -0x00, 0x18, 0x1A, 0xE5, 0x1B, 0x97, 0x1A, 0x91, +0x00, 0x18, 0xBF, 0xE6, 0x1B, 0x97, 0x1A, 0x91, 0x19, 0x90, 0x0E, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA0, 0xF0, 0xDB, 0xA3, +0x8B, 0xF1, 0x00, 0x4B, 0xA0, 0xF0, 0xDB, 0xA3, 0x7F, 0x6D, 0xFF, 0x6A, 0xCC, 0xED, 0x01, 0x75, -0x4C, 0xEC, 0x16, 0x61, 0x03, 0xF6, 0xC1, 0xA3, -0x01, 0x6D, 0xCD, 0xED, 0x03, 0xF6, 0xA1, 0xC3, -0xA0, 0xF0, 0xBC, 0xA3, 0x10, 0x6B, 0x6B, 0xEB, -0xAC, 0xEB, 0x4C, 0xEB, 0x20, 0x73, 0x06, 0x60, +0x4C, 0xEC, 0x1B, 0x61, 0x03, 0xF6, 0xC5, 0xA3, +0x01, 0x6D, 0xCD, 0xED, 0xA0, 0xF0, 0xDC, 0xA3, +0x03, 0xF6, 0xA5, 0xC3, 0x10, 0x6D, 0xAB, 0xED, +0xCC, 0xED, 0x4C, 0xED, 0x20, 0x75, 0x06, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x40, 0x9A, -0x40, 0xEA, 0x02, 0x10, 0x00, 0x18, 0xD0, 0xCF, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x40, 0xEA, 0x07, 0x10, 0x64, 0xF5, 0x50, 0xAB, +0x01, 0x4A, 0x64, 0xF5, 0x50, 0xCB, 0x00, 0x18, +0x06, 0xD1, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA0, 0xF0, 0xBA, 0xA3, +0x8B, 0xF1, 0x00, 0x4B, 0xA0, 0xF0, 0xBA, 0xA3, 0xC4, 0x67, 0x01, 0x6C, 0xFF, 0x6A, 0x8C, 0xED, -0x4C, 0xED, 0x4C, 0xEE, 0x05, 0x2D, 0xA3, 0xF3, -0xBC, 0xA3, 0xAC, 0xEC, 0x4C, 0xEC, 0x07, 0x24, -0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, 0x90, 0xA2, -0x80, 0x18, 0xEF, 0x70, 0x05, 0x10, 0x63, 0xF6, -0x98, 0xA3, 0x01, 0x6D, 0x00, 0x18, 0x28, 0xCE, +0x4C, 0xED, 0x4C, 0xEE, 0x05, 0x2D, 0xC3, 0xF3, +0xA0, 0xA3, 0xAC, 0xEC, 0x4C, 0xEC, 0x07, 0x24, +0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF7, 0x9C, 0xA2, +0x80, 0x18, 0xD7, 0x72, 0x05, 0x10, 0x63, 0xF6, +0x9C, 0xA3, 0x01, 0x6D, 0x00, 0x18, 0x3E, 0xCF, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x40, 0xF1, 0xB6, 0xA3, 0x24, 0x67, 0x01, 0x6C, 0xFF, 0x6A, 0xAC, 0xEC, 0x4C, 0xEC, 0x4C, 0xE9, -0x05, 0x24, 0x43, 0xF6, 0x48, 0xA3, 0x01, 0x4A, -0x43, 0xF6, 0x48, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE3, 0xF5, 0x9C, 0xA2, -0x40, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xE3, 0xF5, -0x7D, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, +0x05, 0x24, 0x43, 0xF6, 0x4C, 0xA3, 0x01, 0x4A, +0x43, 0xF6, 0x4C, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, 0x80, 0xA2, +0x40, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0x03, 0xF6, +0x61, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x91, 0x67, 0x00, 0x18, -0x01, 0xE8, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xE3, 0xF5, 0x7C, 0xA0, 0x02, 0x6A, +0xA6, 0xE9, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x03, 0xF6, 0x60, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x03, 0x6A, 0x4B, 0xEA, -0x4C, 0xEB, 0xE3, 0xF5, 0x7C, 0xC0, 0x03, 0xF6, -0x61, 0xA0, 0x6C, 0xEA, 0x03, 0xF6, 0x41, 0xC0, -0x03, 0xF6, 0x41, 0xA0, 0x07, 0x6B, 0x6C, 0xEA, -0x65, 0x2A, 0x61, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x88, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEB, 0x03, 0xF6, 0x60, 0xC0, 0x03, 0xF6, +0x65, 0xA0, 0x6C, 0xEA, 0x03, 0xF6, 0x45, 0xC0, +0x03, 0xF6, 0x45, 0xA0, 0x07, 0x6B, 0x6C, 0xEA, +0x6A, 0x2A, 0x66, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF2, 0x8C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x60, 0xAC, 0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, -0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x88, 0x9B, 0x60, 0xAC, 0x4C, 0xEB, 0x01, 0x4B, -0x4C, 0xEB, 0x60, 0xCC, 0x24, 0xF5, 0x4C, 0x98, -0x03, 0xF6, 0x61, 0xA0, 0x01, 0x4A, 0x24, 0xF5, -0x4C, 0xD8, 0x03, 0xF6, 0x49, 0xA0, 0x01, 0x4A, -0x03, 0xF6, 0x49, 0xC0, 0x11, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x03, 0xF6, 0x41, 0xC0, 0x03, 0xF6, -0x69, 0xA0, 0xC0, 0xF0, 0x42, 0xA0, 0x63, 0xEA, -0x36, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, +0x8C, 0x9B, 0x60, 0xAC, 0x4C, 0xEB, 0x01, 0x4B, +0x4C, 0xEB, 0x60, 0xCC, 0x64, 0xF5, 0x44, 0xA8, +0x03, 0xF6, 0x65, 0xA0, 0x01, 0x4A, 0x64, 0xF5, +0x44, 0xC8, 0x03, 0xF6, 0x4D, 0xA0, 0x01, 0x4A, +0x03, 0xF6, 0x4D, 0xC0, 0x11, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x03, 0xF6, 0x45, 0xC0, 0x03, 0xF6, +0x6D, 0xA0, 0xC0, 0xF0, 0x42, 0xA0, 0x63, 0xEA, +0x3B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, -0x01, 0x6B, 0x6E, 0xEA, 0x2F, 0x2A, 0xA0, 0xF0, +0x01, 0x6B, 0x6E, 0xEA, 0x34, 0x2A, 0xA0, 0xF0, 0x9C, 0xA0, 0xEF, 0x4B, 0x8C, 0xEB, 0xFF, 0x6C, -0x8C, 0xEB, 0x07, 0x2B, 0xE3, 0xF5, 0x7C, 0xA0, -0xDF, 0x4A, 0x6C, 0xEA, 0xE3, 0xF5, 0x5C, 0xC0, -0x21, 0x10, 0x03, 0xF6, 0x6A, 0xA0, 0x01, 0x4B, -0x03, 0xF6, 0x6A, 0xC0, 0x03, 0xF6, 0x6A, 0xA0, -0x02, 0x5B, 0x0A, 0x61, 0xE3, 0xF5, 0x9C, 0xA0, -0x21, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE3, 0xF5, -0x7C, 0xC0, 0x03, 0xF6, 0x4A, 0xC0, 0x03, 0x10, -0x91, 0x67, 0x00, 0x18, 0xD0, 0xCF, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, -0x03, 0xF6, 0x69, 0xC2, 0x03, 0x10, 0x91, 0x67, -0x00, 0x18, 0x10, 0xD0, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x8C, 0xEB, 0x07, 0x2B, 0x03, 0xF6, 0x60, 0xA0, +0xDF, 0x4A, 0x6C, 0xEA, 0x03, 0xF6, 0x40, 0xC0, +0x26, 0x10, 0x03, 0xF6, 0x6E, 0xA0, 0x01, 0x4B, +0x03, 0xF6, 0x6E, 0xC0, 0x03, 0xF6, 0x6E, 0xA0, +0x02, 0x5B, 0x0A, 0x61, 0x03, 0xF6, 0x80, 0xA0, +0x21, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x03, 0xF6, +0x60, 0xC0, 0x03, 0xF6, 0x4E, 0xC0, 0x08, 0x10, +0x64, 0xF5, 0x52, 0xA8, 0x91, 0x67, 0x01, 0x4A, +0x64, 0xF5, 0x52, 0xC8, 0x00, 0x18, 0x06, 0xD1, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x00, 0x6B, 0x03, 0xF6, 0x6D, 0xC2, 0x03, 0x10, +0x91, 0x67, 0x00, 0x18, 0x48, 0xD1, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x8C, 0xEA, 0xC2, 0xF2, 0x84, 0x9B, 0xC2, 0xF2, 0x04, 0x4B, @@ -20676,358 +20915,369 @@ u8 array_mp_8822c_fw_nic[] = { 0x88, 0xAB, 0x1F, 0xF7, 0x00, 0x6B, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x0B, 0x2B, 0x9D, 0x67, 0x44, 0x33, 0x6D, 0xE4, 0x88, 0xAB, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x68, 0x9B, 0x6D, 0xE4, 0x60, 0xAB, 0x06, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x68, 0x9B, 0x71, 0xE4, +0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, 0x71, 0xE4, 0x60, 0xAC, 0xFF, 0xF7, 0x1F, 0x68, 0x6C, 0xE8, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x80, 0xA3, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x80, 0xA3, 0x01, 0x6B, 0x8C, 0xEB, 0x03, 0x23, 0xE7, 0xF7, 0x1F, 0x6B, 0x6C, 0xE8, 0x18, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, 0x13, 0x2B, 0x30, 0xF0, 0x20, 0x6C, -0x2B, 0xF1, 0x18, 0x4C, 0x03, 0xF6, 0xA1, 0xA4, +0x8B, 0xF1, 0x00, 0x4C, 0x03, 0xF6, 0xA5, 0xA4, 0xFE, 0x4B, 0xAC, 0xEB, 0x05, 0x6D, 0xAB, 0xED, 0xAC, 0xEB, 0x02, 0x4D, 0xAC, 0xEB, 0x03, 0xF6, -0x61, 0xC4, 0x82, 0x67, 0x00, 0x18, 0x10, 0xD0, +0x65, 0xC4, 0x82, 0x67, 0x00, 0x18, 0x48, 0xD1, 0x3E, 0x10, 0x08, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, -0x04, 0x23, 0x82, 0x67, 0x00, 0x18, 0xFC, 0xCF, -0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x03, 0xF6, 0x81, 0xA3, 0x02, 0x6A, +0x04, 0x23, 0x82, 0x67, 0x00, 0x18, 0x32, 0xD1, +0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x03, 0xF6, 0x85, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x05, 0x6C, 0x8B, 0xEC, -0x8C, 0xEA, 0x03, 0xF6, 0x41, 0xC3, 0x02, 0x30, +0x8C, 0xEA, 0x03, 0xF6, 0x45, 0xC3, 0x02, 0x30, 0x1E, 0x30, 0x1A, 0x20, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x03, 0xF6, 0x41, 0xA0, +0x8B, 0xF1, 0x00, 0x48, 0x03, 0xF6, 0x45, 0xA0, 0x02, 0x69, 0xC0, 0xF0, 0xC3, 0xA0, 0x2D, 0xEA, -0x03, 0xF6, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF6, 0x45, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, 0x55, 0x4C, -0x00, 0x6D, 0x40, 0xEA, 0xE3, 0xF5, 0x5C, 0xA0, -0x4D, 0xE9, 0xE3, 0xF5, 0x3C, 0xC0, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x03, 0xF6, 0x81, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0x03, 0xF6, 0x61, 0xC2, 0x0B, 0x97, +0x00, 0x6D, 0x40, 0xEA, 0x03, 0xF6, 0x40, 0xA0, +0x4D, 0xE9, 0x03, 0xF6, 0x20, 0xC0, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x03, 0xF6, 0x85, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x03, 0xF6, 0x65, 0xC2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF2, 0x78, 0x9A, 0xA2, 0xF2, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x68, -0x04, 0xD3, 0x61, 0x9A, 0x44, 0xAA, 0xFF, 0x69, -0x05, 0xD3, 0x7D, 0x67, 0x4C, 0xCB, 0x2B, 0xF1, -0x18, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE9, +0x06, 0xD3, 0x61, 0x9A, 0x44, 0xAA, 0xFF, 0x69, +0x07, 0xD3, 0x7D, 0x67, 0x50, 0xCB, 0x8B, 0xF1, +0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE9, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, -0x40, 0xEA, 0x01, 0x72, 0x00, 0xF1, 0x19, 0x61, -0xA0, 0xF0, 0x7B, 0xA0, 0x7F, 0x6A, 0xFF, 0x6C, -0x6C, 0xEA, 0x8C, 0xEA, 0x00, 0xF1, 0x11, 0x22, -0xC7, 0xF3, 0x68, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, -0x8C, 0xEA, 0x04, 0x22, 0x02, 0x6A, 0x6D, 0xEA, -0xC7, 0xF3, 0x48, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x74, 0xA2, 0x0F, 0x6A, 0x6C, 0xEA, -0x01, 0x72, 0x3C, 0x61, 0x24, 0x32, 0xBD, 0x67, -0x49, 0xE5, 0x68, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, -0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, -0x0B, 0x2A, 0x7D, 0x67, 0x24, 0x32, 0x49, 0xE3, -0x68, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x44, 0x9A, 0x49, 0xE3, 0x60, 0x9A, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, -0x4D, 0xE3, 0x60, 0x9B, 0x04, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF6, 0x62, 0x34, 0x2B, 0xF1, 0x18, 0x4A, -0x62, 0x33, 0x03, 0xF6, 0x87, 0xC2, 0x62, 0x33, -0xFF, 0x6C, 0x8C, 0xEB, 0x02, 0x23, 0x03, 0xF6, -0x66, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x03, 0xF6, 0x67, 0xA2, 0x02, 0x2B, -0x03, 0xF6, 0x66, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF7, 0x7F, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, 0x03, 0xF6, -0x69, 0xC2, 0x03, 0xF6, 0x6A, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0xAC, 0x9B, 0xFF, 0xF7, -0x1F, 0x6B, 0x80, 0xAD, 0x6C, 0xEC, 0x01, 0x4C, -0x6C, 0xEC, 0x80, 0xCD, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF2, 0xB0, 0x9C, 0x80, 0xAD, 0x6C, 0xEC, -0x01, 0x4C, 0x6C, 0xEC, 0x80, 0xCD, 0x24, 0xF5, -0x68, 0x9A, 0x40, 0xF1, 0x96, 0xA2, 0x01, 0x4B, -0x24, 0xF5, 0x68, 0xDA, 0x01, 0x6B, 0x8C, 0xEB, -0x05, 0x23, 0x43, 0xF6, 0x68, 0xA2, 0x01, 0x4B, -0x43, 0xF6, 0x68, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, -0x02, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x03, 0xF6, 0x81, 0xA2, -0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x11, 0x6C, -0x8B, 0xEC, 0x8C, 0xEB, 0xA0, 0xF0, 0x9A, 0xA2, -0x03, 0xF6, 0x61, 0xC2, 0x01, 0x6B, 0x6C, 0xEC, -0x06, 0x2C, 0xA3, 0xF3, 0x5C, 0xA2, 0x6C, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0x04, 0x22, 0x91, 0x67, -0x80, 0x18, 0x7D, 0x40, 0x03, 0x10, 0x91, 0x67, -0x00, 0x18, 0x78, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0xE3, 0xF5, 0x7C, 0xA0, -0x40, 0x6A, 0x6C, 0xEA, 0x55, 0x22, 0xE3, 0xF5, -0x9D, 0xA0, 0x10, 0x6B, 0xFF, 0x6D, 0x44, 0x67, -0x6C, 0xEA, 0xAC, 0xEA, 0x22, 0x2A, 0x03, 0xF6, -0x47, 0xA0, 0x03, 0xF6, 0xA6, 0xA0, 0xAE, 0xEA, -0x47, 0x2A, 0x8D, 0xEB, 0x91, 0x67, 0xE3, 0xF5, -0x7D, 0xC0, 0x00, 0x18, 0xBC, 0xE9, 0x91, 0x67, -0x00, 0x18, 0xD1, 0xE7, 0x00, 0x18, 0x44, 0xC8, -0x06, 0x2A, 0x91, 0x67, 0x00, 0x18, 0x08, 0xE8, -0x91, 0x67, 0x00, 0x18, 0x01, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x03, 0xF6, -0x67, 0xA2, 0xFF, 0x4B, 0x03, 0xF6, 0x67, 0xC2, -0x2B, 0x10, 0xA0, 0xF0, 0x7C, 0xA0, 0x0F, 0x6A, -0x6C, 0xEA, 0x01, 0x72, 0x25, 0x61, 0x03, 0xF6, -0x47, 0xA0, 0x08, 0xD2, 0x08, 0x93, 0x03, 0xF6, -0x46, 0xA0, 0x6E, 0xEA, 0x1D, 0x22, 0x91, 0x67, -0x00, 0x18, 0xB1, 0xE9, 0x08, 0x94, 0x8E, 0xEA, -0x17, 0x22, 0xE3, 0xF5, 0x7C, 0xA0, 0x20, 0x6A, -0xFF, 0x6D, 0x6C, 0xEA, 0xAC, 0xEA, 0x10, 0x22, -0xE3, 0xF5, 0x7D, 0xA0, 0x11, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x91, 0x67, 0xE3, 0xF5, 0x5D, 0xC0, -0x00, 0x18, 0xF7, 0xE7, 0x91, 0x67, 0x00, 0x18, -0xE2, 0xE7, 0x91, 0x67, 0x00, 0x18, 0xDB, 0xE7, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE3, 0xF5, 0x9C, 0xA2, 0x01, 0x6B, 0x03, 0xF6, -0x6D, 0xC2, 0x20, 0x6B, 0x8D, 0xEB, 0xE3, 0xF5, -0x7C, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, 0x02, 0x6B, -0x6C, 0xEC, 0x06, 0x24, 0xA3, 0xF3, 0x5C, 0xA2, -0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x0A, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE3, 0xF5, 0x9C, 0xA2, 0x20, 0x6B, 0x8D, 0xEB, -0xE3, 0xF5, 0x7C, 0xC2, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF2, 0x63, 0x1B, 0x62, 0x1A, 0xD1, 0x19, 0xD0, -0xFF, 0x69, 0x2C, 0xEC, 0xAC, 0xE9, 0x76, 0x24, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, -0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, -0x69, 0x61, 0xE3, 0xF5, 0x7D, 0xA0, 0x05, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xE3, 0xF5, 0x5D, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0xFF, 0x6C, 0x0F, 0x6D, 0x2B, 0x6E, 0x40, 0xEA, +0x40, 0xEA, 0x01, 0x6C, 0x8E, 0xEA, 0x20, 0xF1, +0x13, 0x2A, 0xA0, 0xF0, 0x9B, 0xA0, 0x7F, 0x6B, +0xFF, 0x6D, 0x8C, 0xEB, 0xAC, 0xEB, 0x20, 0xF1, +0x0B, 0x23, 0x47, 0xF4, 0x80, 0xA0, 0x01, 0x6B, +0x8C, 0xEB, 0xAC, 0xEB, 0x19, 0x23, 0x64, 0xF5, +0x66, 0xA8, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0x4B, 0x64, 0xF5, 0x66, 0xC8, 0x02, 0x6B, +0x8D, 0xEB, 0x21, 0x6C, 0x8B, 0xEC, 0x00, 0xF3, +0x4C, 0x9A, 0x8C, 0xEB, 0x10, 0xF0, 0x31, 0x6C, +0x47, 0xF4, 0x60, 0xC0, 0x00, 0xF0, 0x01, 0x4C, +0x00, 0x6D, 0x05, 0x6E, 0x01, 0x6F, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x7C, 0xA2, +0x0F, 0x6A, 0x6C, 0xEA, 0x01, 0x72, 0x3C, 0x61, +0x7D, 0x67, 0x24, 0x32, 0x49, 0xE3, 0x6C, 0xAA, +0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x0B, 0x2A, 0x24, 0x32, +0x9D, 0x67, 0x49, 0xE4, 0x6C, 0xAA, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, 0x49, 0xE3, +0x60, 0x9A, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x4C, 0x9A, 0x4D, 0xE3, 0x60, 0x9B, +0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, 0x62, 0x34, +0x8B, 0xF1, 0x00, 0x4A, 0x62, 0x33, 0x03, 0xF6, +0x8B, 0xC2, 0x62, 0x33, 0xFF, 0x6C, 0x8C, 0xEB, +0x02, 0x23, 0x03, 0xF6, 0x6A, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x6B, 0xA2, 0x02, 0x2B, 0x03, 0xF6, 0x6A, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, 0x6B, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x00, 0x6B, 0x03, 0xF6, 0x6D, 0xC2, 0x03, 0xF6, +0x6E, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, +0xB0, 0x9B, 0xFF, 0xF7, 0x1F, 0x6B, 0x80, 0xAD, +0x6C, 0xEC, 0x01, 0x4C, 0x6C, 0xEC, 0x80, 0xCD, +0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF2, 0xB4, 0x9C, +0x80, 0xAD, 0x6C, 0xEC, 0x01, 0x4C, 0x6C, 0xEC, +0x80, 0xCD, 0x64, 0xF5, 0x62, 0xAA, 0x40, 0xF1, +0x96, 0xA2, 0x01, 0x4B, 0x64, 0xF5, 0x62, 0xCA, +0x01, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0x43, 0xF6, +0x6C, 0xA2, 0x01, 0x4B, 0x43, 0xF6, 0x6C, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF2, 0x50, 0x9A, 0x02, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x03, 0xF6, 0x85, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x11, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, +0xA0, 0xF0, 0x9A, 0xA2, 0x03, 0xF6, 0x65, 0xC2, +0x01, 0x6B, 0x6C, 0xEC, 0x06, 0x2C, 0xC3, 0xF3, +0x40, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x04, 0x22, 0x91, 0x67, 0x80, 0x18, 0x87, 0x40, +0x03, 0x10, 0x91, 0x67, 0x00, 0x18, 0xB2, 0xD1, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x03, 0xF6, 0x60, 0xA0, 0x40, 0x6A, 0x6C, 0xEA, +0x5A, 0x22, 0x03, 0xF6, 0x81, 0xA0, 0x10, 0x6B, +0xFF, 0x6D, 0x44, 0x67, 0x6C, 0xEA, 0xAC, 0xEA, +0x27, 0x2A, 0x03, 0xF6, 0xAB, 0xA0, 0x03, 0xF6, +0x4A, 0xA0, 0xAE, 0xEA, 0x4C, 0x2A, 0x8D, 0xEB, +0x91, 0x67, 0x03, 0xF6, 0x61, 0xC0, 0x00, 0x18, +0x9C, 0xE9, 0x03, 0xF6, 0xAA, 0xA0, 0x91, 0x67, +0x00, 0x18, 0x61, 0xEB, 0x91, 0x67, 0x00, 0x18, +0x76, 0xE9, 0x00, 0x18, 0xA1, 0xC8, 0x06, 0x2A, +0x91, 0x67, 0x00, 0x18, 0xAD, 0xE9, 0x91, 0x67, +0x00, 0x18, 0xA6, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, 0x6B, 0xA2, +0xFF, 0x4B, 0x03, 0xF6, 0x6B, 0xC2, 0x2B, 0x10, +0xA0, 0xF0, 0x7C, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, +0x01, 0x72, 0x25, 0x61, 0x03, 0xF6, 0x4B, 0xA0, +0x0A, 0xD2, 0x0A, 0x93, 0x03, 0xF6, 0x4A, 0xA0, +0x6E, 0xEA, 0x1D, 0x22, 0x91, 0x67, 0x00, 0x18, +0x56, 0xEB, 0x0A, 0x94, 0x8E, 0xEA, 0x17, 0x22, +0x03, 0xF6, 0x60, 0xA0, 0x20, 0x6A, 0xFF, 0x6D, +0x6C, 0xEA, 0xAC, 0xEA, 0x10, 0x22, 0x03, 0xF6, +0x61, 0xA0, 0x11, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x91, 0x67, 0x03, 0xF6, 0x41, 0xC0, 0x00, 0x18, +0x9C, 0xE9, 0x91, 0x67, 0x00, 0x18, 0x87, 0xE9, +0x91, 0x67, 0x00, 0x18, 0x80, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x80, 0xA2, 0x01, 0x6B, 0x03, 0xF6, 0x71, 0xC2, +0x20, 0x6B, 0x8D, 0xEB, 0x03, 0xF6, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA0, 0xF0, 0x9A, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, +0x06, 0x24, 0xC3, 0xF3, 0x40, 0xA2, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x80, 0xA2, 0x20, 0x6B, 0x8D, 0xEB, 0x03, 0xF6, +0x60, 0xC2, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xF2, 0x63, 0x1B, 0x62, +0x1A, 0xD1, 0x19, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, +0xAC, 0xE9, 0x80, 0xF0, 0x05, 0x24, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, +0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x78, 0x61, +0x44, 0xF5, 0x4E, 0xA8, 0x03, 0xF6, 0x61, 0xA0, +0xFF, 0x6C, 0x01, 0x4A, 0x44, 0xF5, 0x4E, 0xC8, +0x05, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0xF6, +0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x50, 0x9A, 0x0F, 0x6D, 0x2B, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, 0x91, 0x67, 0x02, 0x6D, 0x40, 0xEA, 0x63, 0xF6, -0x5B, 0xA0, 0x01, 0x68, 0x01, 0x2A, 0x08, 0x68, +0x5F, 0xA0, 0x01, 0x68, 0x01, 0x2A, 0x08, 0x68, 0x0C, 0x04, 0x00, 0x6D, 0x30, 0x6E, 0x00, 0x18, -0x3D, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, -0x42, 0xA2, 0x7D, 0x67, 0x40, 0xF0, 0x0B, 0xC3, +0x98, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, +0x4A, 0xA2, 0x7D, 0x67, 0x40, 0xF0, 0x0B, 0xC3, 0x40, 0xF0, 0x48, 0xCB, 0x10, 0xF0, 0x23, 0x6A, -0x46, 0xF1, 0x11, 0x4A, 0x0C, 0xD2, 0x10, 0xF0, -0x23, 0x6A, 0xC4, 0xF1, 0x01, 0x4A, 0x40, 0xF0, +0x66, 0xF4, 0x05, 0x4A, 0x0C, 0xD2, 0x10, 0xF0, +0x23, 0x6A, 0x24, 0xF3, 0x15, 0x4A, 0x40, 0xF0, 0x2C, 0xC3, 0x0D, 0xD2, 0x04, 0x04, 0x00, 0x6A, 0x10, 0x03, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x0C, 0x94, 0x0D, 0x95, 0x0E, 0x96, -0x0F, 0x97, 0x00, 0x18, 0x1A, 0xE5, 0x12, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE3, 0xF5, 0x9D, 0xA2, 0x01, 0x6B, 0x06, 0x6D, -0x8D, 0xEB, 0xE3, 0xF5, 0x7D, 0xC2, 0x01, 0x6C, +0x0F, 0x97, 0x00, 0x18, 0xBF, 0xE6, 0x12, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x03, 0xF6, 0x81, 0xA2, 0x01, 0x6B, 0x06, 0x6D, +0x8D, 0xEB, 0x03, 0xF6, 0x61, 0xC2, 0x01, 0x6C, 0x00, 0x18, 0xD7, 0xC5, 0x06, 0x6C, 0x80, 0x18, -0xBF, 0x70, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xAE, 0xF7, 0x53, 0xA2, 0x0B, 0x22, 0x06, 0x6D, +0xA7, 0x72, 0x1A, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xEE, 0xF7, 0x5F, 0xA2, 0x0B, 0x22, 0x06, 0x6D, 0x01, 0x6C, 0x00, 0x18, 0xD7, 0xC5, 0x91, 0x67, -0x00, 0x18, 0x10, 0xD0, 0x00, 0x6C, 0x02, 0x6D, -0x00, 0x18, 0x62, 0xC8, 0x1B, 0x97, 0x1A, 0x91, -0x19, 0x90, 0x0E, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0x2B, 0xF1, -0x18, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE9, -0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, -0x40, 0xEA, 0x01, 0x72, 0x12, 0x61, 0xE3, 0xF5, -0x7C, 0xA0, 0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xE3, 0xF5, 0x5C, 0xC0, 0xE3, 0xF5, 0x5F, 0xA0, -0x04, 0x6B, 0x6C, 0xEA, 0x0C, 0x2A, 0x83, 0x67, -0x01, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x28, 0xCE, -0x06, 0x10, 0xE3, 0xF5, 0x7C, 0xA0, 0x20, 0x6A, -0x6D, 0xEA, 0xE3, 0xF5, 0x5C, 0xC0, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x69, 0x2C, 0xEC, 0x01, 0x6D, 0x04, 0xD4, -0x00, 0x18, 0xB2, 0xCD, 0x04, 0x94, 0x30, 0xF0, -0x20, 0x68, 0x01, 0x6D, 0x2B, 0xF1, 0x18, 0x48, -0x00, 0x18, 0xDF, 0xCD, 0x03, 0xF6, 0x70, 0xA8, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x44, 0x9A, -0x2C, 0xEB, 0x08, 0x6C, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x60, 0x9A, 0x8B, 0xEC, -0x40, 0xA3, 0x2C, 0xEA, 0x8C, 0xEA, 0x05, 0x6C, -0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x04, 0x94, -0x00, 0x18, 0xB0, 0xD1, 0x40, 0xF1, 0x76, 0xA0, -0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x03, 0x22, -0x00, 0x6A, 0x43, 0xF6, 0x48, 0xC0, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, -0x74, 0x29, 0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, -0xB2, 0xCD, 0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, -0xDF, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0x54, 0x9A, 0x02, 0x6B, 0x20, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x63, 0xF6, 0x7B, 0xA2, 0x08, 0x23, 0xE3, 0xF5, -0x5F, 0xA2, 0x0C, 0x72, 0x04, 0x61, 0x00, 0x6C, -0xA4, 0x67, 0x00, 0x18, 0x62, 0xC8, 0x30, 0xF0, -0x20, 0x69, 0x2B, 0xF1, 0x18, 0x49, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, -0x9F, 0xA1, 0x40, 0xEA, 0x19, 0x2A, 0xE3, 0xF5, -0x5F, 0xA1, 0x04, 0x6B, 0x6C, 0xEA, 0x02, 0x2A, -0x00, 0x18, 0x1A, 0xEB, 0x90, 0x67, 0x00, 0x18, -0x48, 0xC6, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xE3, 0xF5, 0x9D, 0xA3, 0x02, 0x6A, -0x4B, 0xEA, 0x8C, 0xEA, 0x03, 0x6C, 0x8B, 0xEC, -0x8C, 0xEA, 0xE3, 0xF5, 0x5D, 0xC3, 0x05, 0x10, -0x0C, 0x6C, 0x01, 0x6D, 0xD0, 0x67, 0x00, 0x18, -0x28, 0xCE, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE3, 0xF5, 0x9C, 0xA2, 0x05, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xE3, 0xF5, 0x7C, 0xC2, -0xC0, 0xF0, 0x77, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, 0x04, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x40, 0xF1, 0x96, 0xA2, 0x02, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0x40, 0xF1, 0x76, 0xC2, -0x05, 0x10, 0x01, 0x71, 0x03, 0x61, 0x90, 0x67, -0x00, 0x18, 0xC8, 0xD1, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, -0x2B, 0xF1, 0x18, 0x48, 0x04, 0xD4, 0x00, 0x18, -0x2D, 0xCB, 0xA0, 0xF0, 0x9B, 0xA0, 0x7F, 0x6A, -0x04, 0x95, 0x4C, 0xEC, 0x2C, 0xEC, 0x00, 0x18, -0xE4, 0xD1, 0xA0, 0xF0, 0x5B, 0xA0, 0x7F, 0x6B, -0x6C, 0xEA, 0x2C, 0xEA, 0x0E, 0x2A, 0x00, 0x6C, -0x01, 0x6D, 0x00, 0x18, 0xF2, 0xCC, 0xC7, 0xF3, -0x68, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xC7, 0xF3, 0x48, 0xC0, 0x02, 0x6C, 0x00, 0x6D, -0x16, 0x10, 0xA0, 0xF0, 0x5C, 0xA0, 0xA0, 0xF0, -0xBD, 0xA0, 0x0F, 0x6C, 0x4C, 0xEC, 0x2C, 0xEC, -0x00, 0x18, 0x0D, 0xC6, 0x00, 0x18, 0x3B, 0xEA, -0xC7, 0xF3, 0x68, 0xA0, 0x01, 0x6A, 0x02, 0x6C, -0x6D, 0xEA, 0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, -0xC7, 0xF3, 0x48, 0xC0, 0x01, 0x6D, 0x00, 0x18, -0x8C, 0xE4, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x40, 0xA4, 0x25, 0x67, -0x1B, 0x2A, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF7, -0x18, 0x48, 0x40, 0xC0, 0x41, 0xC0, 0x2C, 0x6A, -0x41, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0x84, 0x40, -0x6F, 0xF6, 0x00, 0x4D, 0x2C, 0x6E, 0x40, 0xEA, -0xC2, 0xA0, 0xFF, 0x6A, 0x91, 0x67, 0x04, 0x4E, -0xB0, 0x67, 0x4C, 0xEE, 0x80, 0x18, 0x1F, 0x68, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0x18, 0x48, 0xD1, 0x00, 0x6C, 0x02, 0x6D, +0x00, 0x18, 0xBF, 0xC8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x01, 0x6B, 0x84, 0xF5, +0x66, 0xCA, 0x08, 0x6B, 0x84, 0xF5, 0x64, 0xCA, +0x1B, 0x97, 0x1A, 0x91, 0x19, 0x90, 0x0E, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0xDD, 0x67, 0x44, 0x67, 0x98, 0xAE, 0xFF, 0x6B, -0x6C, 0xED, 0x04, 0x5C, 0x10, 0x61, 0x03, 0x25, -0x01, 0x75, 0x0D, 0x60, 0x05, 0x10, 0x87, 0x67, -0xA2, 0x67, 0x00, 0x18, 0x4B, 0xD2, 0x07, 0x10, -0x8C, 0xEB, 0x03, 0x6D, 0x04, 0x6C, 0x01, 0x6E, -0x04, 0xD3, 0x80, 0x18, 0xDD, 0x67, 0x07, 0x97, -0x04, 0x63, 0x00, 0xEF, 0xFF, 0x6B, 0x6C, 0xEC, -0x01, 0x6A, 0x8E, 0xEA, 0x01, 0x5A, 0x58, 0x67, -0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, -0x01, 0x74, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x78, 0x9B, 0x10, 0x6C, 0x75, 0xE5, -0x60, 0xA5, 0x4C, 0xEB, 0x8D, 0xEB, 0x4C, 0xEB, -0x60, 0xC5, 0x20, 0xE8, 0x09, 0x2C, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF2, 0x58, 0x9A, 0x55, 0xE5, -0x60, 0xA5, 0xEF, 0x6A, 0x6C, 0xEA, 0x40, 0xC5, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x5C, 0x9A, -0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x52, 0x32, -0x6C, 0xEA, 0x11, 0x2A, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x54, 0x9A, -0xEB, 0xF1, 0x81, 0xA3, 0x00, 0x6D, 0x18, 0x6E, -0xE5, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, -0xAC, 0xEA, 0xFF, 0x6B, 0xA2, 0x67, 0x42, 0x32, -0x6C, 0xED, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF2, 0x60, 0x9B, 0x6D, 0xE4, 0xA0, 0xC3, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x64, 0x9B, -0x71, 0xE4, 0x40, 0xC4, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0xF7, 0x1F, 0x68, -0x83, 0xF2, 0x7C, 0x9B, 0x0C, 0xED, 0x04, 0xD5, -0x60, 0xA3, 0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xE9, -0x2D, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x60, 0x9B, 0x00, 0x6C, 0xFF, 0x6D, 0x60, 0xA3, -0x36, 0x6E, 0x6C, 0xEA, 0x05, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, -0x40, 0xEA, 0x01, 0x72, 0x0E, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x54, 0x9A, 0x00, 0x6E, -0x91, 0x67, 0x01, 0x6D, 0xE6, 0x67, 0x40, 0xEA, -0x04, 0x95, 0x82, 0x67, 0x0C, 0xEC, 0x00, 0x18, -0x8F, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0x05, 0x95, 0x00, 0x6C, 0x37, 0x6E, -0x40, 0xEA, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x54, 0x9A, 0x00, 0x6E, 0x91, 0x67, -0x01, 0x6D, 0xE6, 0x67, 0x40, 0xEA, 0x04, 0x95, -0x82, 0x67, 0x0C, 0xEC, 0x00, 0x18, 0x8F, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x40, 0x9A, -0x6F, 0x6D, 0x90, 0x6C, 0x60, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x6C, 0xED, -0x38, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x09, 0x97, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xFF, 0x69, 0x8B, 0xF1, 0x00, 0x48, 0x30, 0xF0, +0x20, 0x6A, 0x8C, 0xE9, 0x80, 0xF3, 0x5C, 0x9A, +0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, +0x12, 0x61, 0x03, 0xF6, 0x60, 0xA0, 0x21, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0xF6, 0x40, 0xC0, +0x03, 0xF6, 0x43, 0xA0, 0x04, 0x6B, 0x6C, 0xEA, +0x0C, 0x2A, 0x83, 0x67, 0x01, 0x6D, 0xD1, 0x67, +0x00, 0x18, 0x3E, 0xCF, 0x06, 0x10, 0x03, 0xF6, +0x60, 0xA0, 0x20, 0x6A, 0x6D, 0xEA, 0x03, 0xF6, +0x40, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, +0x01, 0x6D, 0x04, 0xD4, 0x00, 0x18, 0xC4, 0xCE, +0x04, 0x94, 0x30, 0xF0, 0x20, 0x68, 0x01, 0x6D, +0x8B, 0xF1, 0x00, 0x48, 0x00, 0x18, 0xF1, 0xCE, +0x03, 0xF6, 0x74, 0xA8, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF1, 0x48, 0x9A, 0x2C, 0xEB, 0x08, 0x6C, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0x7C, 0x9A, 0x8B, 0xEC, 0x40, 0xA3, 0x2C, 0xEA, +0x8C, 0xEA, 0x05, 0x6C, 0x8D, 0xEA, 0x2C, 0xEA, +0x40, 0xC3, 0x04, 0x94, 0x00, 0x18, 0xFF, 0xD2, +0x40, 0xF1, 0x76, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, +0x2C, 0xEA, 0x03, 0x22, 0x00, 0x6A, 0x43, 0xF6, +0x4C, 0xC0, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, +0x0C, 0xE9, 0xAC, 0xE8, 0x74, 0x29, 0x90, 0x67, +0x00, 0x6D, 0x00, 0x18, 0xC4, 0xCE, 0x90, 0x67, +0x00, 0x6D, 0x00, 0x18, 0xF1, 0xCE, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x02, 0x6B, +0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x50, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x63, 0xF6, 0x7F, 0xA2, +0x08, 0x23, 0x03, 0xF6, 0x43, 0xA2, 0x0C, 0x72, +0x04, 0x61, 0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, +0xBF, 0xC8, 0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, +0x00, 0x49, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA1, 0x40, 0xEA, +0x19, 0x2A, 0x03, 0xF6, 0x43, 0xA1, 0x04, 0x6B, +0x6C, 0xEA, 0x02, 0x2A, 0x00, 0x18, 0xBF, 0xEC, +0x90, 0x67, 0x00, 0x18, 0x7E, 0xC6, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x03, 0xF6, +0x81, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEA, 0x03, 0xF6, +0x41, 0xC3, 0x05, 0x10, 0x0C, 0x6C, 0x01, 0x6D, +0xD0, 0x67, 0x00, 0x18, 0x3E, 0xCF, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x80, 0xA2, 0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x03, 0xF6, 0x60, 0xC2, 0xC0, 0xF0, 0x77, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0x0C, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF2, 0x4C, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x50, 0x9A, 0x04, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x40, 0xF1, +0x96, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x40, 0xF1, 0x76, 0xC2, 0x05, 0x10, 0x01, 0x71, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x17, 0xD3, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, +0x20, 0x68, 0x2C, 0xEC, 0x8B, 0xF1, 0x00, 0x48, +0x04, 0xD4, 0x00, 0x18, 0xDE, 0xCB, 0xA0, 0xF0, +0x9B, 0xA0, 0x7F, 0x6A, 0x04, 0x95, 0x4C, 0xEC, +0x2C, 0xEC, 0x00, 0x18, 0x33, 0xD3, 0xA0, 0xF0, +0x5B, 0xA0, 0x7F, 0x6B, 0x6C, 0xEA, 0x2C, 0xEA, +0x0E, 0x2A, 0x00, 0x6C, 0x01, 0x6D, 0x00, 0x18, +0xF8, 0xCD, 0x47, 0xF4, 0x60, 0xA0, 0x02, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x47, 0xF4, 0x40, 0xC0, +0x02, 0x6C, 0x00, 0x6D, 0x16, 0x10, 0xA0, 0xF0, +0x5C, 0xA0, 0xA0, 0xF0, 0xBD, 0xA0, 0x0F, 0x6C, +0x4C, 0xEC, 0x2C, 0xEC, 0x00, 0x18, 0x2D, 0xC6, +0x00, 0x18, 0xE0, 0xEB, 0x47, 0xF4, 0x60, 0xA0, +0x01, 0x6A, 0x02, 0x6C, 0x6D, 0xEA, 0x03, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0x47, 0xF4, 0x40, 0xC0, +0x01, 0x6D, 0x00, 0x18, 0x2B, 0xE6, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x7C, 0x9B, -0xFF, 0x6A, 0x04, 0x67, 0x60, 0xA3, 0x25, 0x67, -0x4C, 0xE8, 0x4C, 0xEB, 0x72, 0x33, 0x4C, 0xEB, -0x4C, 0xE9, 0x3F, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x60, 0x9B, 0x00, 0x6C, 0xFF, 0x6D, -0x60, 0xA3, 0x29, 0x6E, 0x6C, 0xEA, 0x05, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x72, 0x20, 0x61, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x40, 0xA4, 0x25, 0x67, 0x1B, 0x2A, 0x30, 0xF0, +0x20, 0x68, 0x68, 0xF7, 0x00, 0x48, 0x40, 0xC0, +0x41, 0xC0, 0x88, 0x6A, 0x41, 0xC8, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, +0x20, 0x6D, 0x84, 0x40, 0xAF, 0xF6, 0x0C, 0x4D, +0x88, 0x6E, 0x40, 0xEA, 0xC2, 0xA0, 0xFF, 0x6A, +0x91, 0x67, 0x04, 0x4E, 0xB0, 0x67, 0x4C, 0xEE, +0x80, 0x18, 0xAA, 0x69, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0xDD, 0x67, 0x44, 0x67, +0x98, 0xAE, 0xFF, 0x6B, 0x6C, 0xED, 0x04, 0x5C, +0x10, 0x61, 0x03, 0x25, 0x01, 0x75, 0x0D, 0x60, +0x05, 0x10, 0x87, 0x67, 0xA2, 0x67, 0x00, 0x18, +0x9A, 0xD3, 0x07, 0x10, 0x8C, 0xEB, 0x03, 0x6D, +0x04, 0x6C, 0x01, 0x6E, 0x04, 0xD3, 0x80, 0x18, +0x68, 0x69, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, +0xFF, 0x6B, 0x6C, 0xEC, 0x01, 0x6A, 0x8E, 0xEA, +0x01, 0x5A, 0x58, 0x67, 0x6C, 0xEA, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0x0C, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x7C, 0x9B, +0x10, 0x6C, 0x75, 0xE5, 0x60, 0xA5, 0x4C, 0xEB, +0x8D, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, +0x09, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, +0x5C, 0x9A, 0x55, 0xE5, 0x60, 0xA5, 0xEF, 0x6A, +0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x40, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, +0x6C, 0xEA, 0x52, 0x32, 0x6C, 0xEA, 0x11, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x83, 0xA3, 0xA0, 0xF2, 0x54, 0x9A, -0x00, 0x6F, 0x01, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, -0x40, 0xF4, 0x58, 0x9A, 0xD1, 0x67, 0x90, 0x67, -0x40, 0xEA, 0x90, 0x67, 0x00, 0x18, 0x6D, 0xD2, -0x04, 0x94, 0xA2, 0x67, 0x00, 0x18, 0x8B, 0xF0, -0x04, 0x94, 0xB1, 0x67, 0x00, 0x18, 0x9A, 0xF0, +0xA0, 0xF2, 0x54, 0x9A, 0x2B, 0xF2, 0x89, 0xA3, +0x00, 0x6D, 0x18, 0x6E, 0xE5, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0xF7, 0x1F, 0x6A, 0xAC, 0xEA, 0xFF, 0x6B, +0xA2, 0x67, 0x42, 0x32, 0x6C, 0xED, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x64, 0x9B, +0x6D, 0xE4, 0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF2, 0x68, 0x9B, 0x71, 0xE4, 0x40, 0xC4, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0xF7, 0x1F, 0x68, 0xC3, 0xF2, 0x60, 0x9B, +0x0C, 0xED, 0x04, 0xD5, 0x60, 0xA3, 0xFF, 0x6A, +0x24, 0x67, 0x4C, 0xE9, 0x2D, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF2, 0x64, 0x9B, 0x00, 0x6C, +0xFF, 0x6D, 0x60, 0xA3, 0x36, 0x6E, 0x6C, 0xEA, +0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x72, +0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x54, 0x9A, 0x00, 0x6E, 0x91, 0x67, 0x01, 0x6D, +0xE6, 0x67, 0x40, 0xEA, 0x04, 0x95, 0x82, 0x67, +0x0C, 0xEC, 0x00, 0x18, 0xDE, 0xD3, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x05, 0x95, +0x00, 0x6C, 0x37, 0x6E, 0x40, 0xEA, 0x0E, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x54, 0x9A, +0x00, 0x6E, 0x91, 0x67, 0x01, 0x6D, 0xE6, 0x67, +0x40, 0xEA, 0x04, 0x95, 0x82, 0x67, 0x0C, 0xEC, +0x00, 0x18, 0xDE, 0xD3, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF2, 0x44, 0x9A, 0x6F, 0x6D, 0x90, 0x6C, +0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x50, 0x9A, 0x6C, 0xED, 0x38, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, +0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF2, 0x60, 0x9B, 0xFF, 0x6A, 0x04, 0x67, +0x60, 0xA3, 0x25, 0x67, 0x4C, 0xE8, 0x4C, 0xEB, +0x72, 0x33, 0x4C, 0xEB, 0x4C, 0xE9, 0x3F, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x64, 0x9B, +0x00, 0x6C, 0xFF, 0x6D, 0x60, 0xA3, 0x29, 0x6E, +0x6C, 0xEA, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, +0x01, 0x72, 0x20, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x8B, 0xA3, +0xA0, 0xF2, 0x54, 0x9A, 0x00, 0x6F, 0x01, 0x6D, +0x08, 0x6E, 0x40, 0xEA, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x95, 0x40, 0xF4, 0x58, 0x9A, +0xD1, 0x67, 0x90, 0x67, 0x40, 0xEA, 0x90, 0x67, +0x00, 0x18, 0xBC, 0xD3, 0x04, 0x94, 0xA2, 0x67, +0x00, 0x18, 0x30, 0xF2, 0x04, 0x94, 0xB1, 0x67, +0x00, 0x18, 0x3F, 0xF2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0x05, 0x95, 0x00, 0x6C, +0x2A, 0x6E, 0x40, 0xEA, 0x20, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, +0x8B, 0xA3, 0xA0, 0xF2, 0x54, 0x9A, 0x00, 0x6F, +0x01, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, 0x40, 0xF4, +0x58, 0x9A, 0xD1, 0x67, 0x90, 0x67, 0x40, 0xEA, +0x90, 0x67, 0x00, 0x18, 0xBC, 0xD3, 0x04, 0x94, +0xA2, 0x67, 0x00, 0x18, 0x30, 0xF2, 0x04, 0x94, +0xB1, 0x67, 0x00, 0x18, 0x3F, 0xF2, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, +0x2C, 0xED, 0x02, 0x5C, 0x04, 0xD4, 0x05, 0xD5, +0x50, 0x60, 0x00, 0x18, 0xD6, 0xD7, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF2, 0x6C, 0x9B, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x80, 0xAB, +0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x4B, 0xE3, +0xA0, 0xF0, 0x6A, 0xA0, 0x2C, 0xEA, 0x6E, 0xEA, +0x3C, 0x2A, 0x03, 0xF6, 0x43, 0xA0, 0x0E, 0x72, +0x1B, 0x61, 0x04, 0x92, 0x36, 0x2A, 0x03, 0xF6, +0x61, 0xA0, 0xFD, 0x4A, 0x05, 0x94, 0x6C, 0xEA, +0x03, 0xF6, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x5C, 0x9A, 0x00, 0x6D, 0x40, 0xEA, +0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0xD7, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0x05, 0x95, 0x00, 0x6C, 0x2A, 0x6E, 0x40, 0xEA, -0x20, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xEB, 0xF1, 0x83, 0xA3, 0xA0, 0xF2, -0x54, 0x9A, 0x00, 0x6F, 0x01, 0x6D, 0x08, 0x6E, -0x40, 0xEA, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0x95, 0x40, 0xF4, 0x58, 0x9A, 0xD1, 0x67, -0x90, 0x67, 0x40, 0xEA, 0x90, 0x67, 0x00, 0x18, -0x6D, 0xD2, 0x04, 0x94, 0xA2, 0x67, 0x00, 0x18, -0x8B, 0xF0, 0x04, 0x94, 0xB1, 0x67, 0x00, 0x18, -0x9A, 0xF0, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x54, 0x9A, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x69, 0x2C, 0xEC, 0x2C, 0xED, 0x02, 0x5C, -0x04, 0xD4, 0x05, 0xD5, 0x4E, 0x60, 0x00, 0x18, -0x7B, 0xD6, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, -0x68, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x80, 0xAB, 0xFF, 0xF7, 0x1F, 0x6B, -0x8C, 0xEB, 0x4B, 0xE3, 0xA0, 0xF0, 0x6A, 0xA0, -0x2C, 0xEA, 0x6E, 0xEA, 0x3A, 0x2A, 0xE3, 0xF5, -0x5F, 0xA0, 0x0E, 0x72, 0x19, 0x61, 0x04, 0x92, -0x34, 0x2A, 0xE3, 0xF5, 0x7D, 0xA0, 0xFD, 0x4A, -0x05, 0x94, 0x6C, 0xEA, 0xE3, 0xF5, 0x5D, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, -0x00, 0x6D, 0x40, 0xEA, 0x01, 0x6C, 0x0C, 0x6D, -0x00, 0x18, 0xD7, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x91, 0x67, 0x1A, 0x10, +0x91, 0x67, 0x00, 0x6D, 0x61, 0x6E, 0x1C, 0x10, 0x06, 0x72, 0x1B, 0x61, 0x04, 0x92, 0x19, 0x22, -0xE3, 0xF5, 0x7D, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0xE3, 0xF5, 0x5D, 0xC0, 0x30, 0xF0, +0x03, 0xF6, 0x61, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x03, 0xF6, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, 0x05, 0x94, -0x01, 0x6D, 0x40, 0xEA, 0x04, 0x6A, 0xE3, 0xF5, -0x5F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0xFF, 0x6C, 0x00, 0x6D, 0xC5, 0x67, +0x01, 0x6D, 0x40, 0xEA, 0x04, 0x6A, 0x03, 0xF6, +0x43, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x50, 0x9A, 0xFF, 0x6C, 0x00, 0x6D, 0x62, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD2, -0x83, 0xF2, 0x7C, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, +0xC3, 0xF2, 0x60, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, 0x05, 0xD6, 0x60, 0xA3, 0x05, 0x67, 0x27, 0x67, 0x4C, 0xEB, 0x72, 0x33, 0x4C, 0xEB, 0x4C, 0xE8, 0x4C, 0xE9, 0x40, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x60, 0x9B, 0x00, 0x6C, 0xFF, 0x6D, +0xA3, 0xF2, 0x64, 0x9B, 0x00, 0x6C, 0xFF, 0x6D, 0x60, 0xA3, 0x26, 0x6E, 0x6C, 0xEA, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, @@ -21037,65 +21287,65 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xEA, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, 0x40, 0xF4, 0x58, 0x9A, 0xD1, 0x67, 0x90, 0x67, 0x40, 0xEA, 0x90, 0x67, 0x00, 0x18, -0x6D, 0xD2, 0x04, 0x94, 0xA2, 0x67, 0x00, 0x18, -0x8B, 0xF0, 0x04, 0x94, 0xB1, 0x67, 0x00, 0x18, -0x9A, 0xF0, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x95, +0xBC, 0xD3, 0x04, 0x94, 0xA2, 0x67, 0x00, 0x18, +0x30, 0xF2, 0x04, 0x94, 0xB1, 0x67, 0x00, 0x18, +0x3F, 0xF2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x95, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6C, 0x27, 0x6E, 0x40, 0xEA, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, -0x0A, 0xD3, 0x21, 0x10, 0x90, 0x67, 0xB1, 0x67, -0x00, 0x18, 0x0A, 0xD3, 0x30, 0xF0, 0x20, 0x6A, +0x59, 0xD4, 0x21, 0x10, 0x90, 0x67, 0xB1, 0x67, +0x00, 0x18, 0x59, 0xD4, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, 0x05, 0x96, 0xA0, 0xF2, 0x54, 0x9A, 0x04, 0x6F, 0x01, 0x6D, 0x40, 0xEA, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, 0x40, 0xF4, 0x58, 0x9A, 0xD1, 0x67, 0x90, 0x67, 0x40, 0xEA, -0x90, 0x67, 0x00, 0x18, 0x6D, 0xD2, 0x04, 0x94, -0xA2, 0x67, 0x00, 0x18, 0x8B, 0xF0, 0x04, 0x94, -0xB1, 0x67, 0x00, 0x18, 0x9A, 0xF0, 0x30, 0xF0, +0x90, 0x67, 0x00, 0x18, 0xBC, 0xD3, 0x04, 0x94, +0xA2, 0x67, 0x00, 0x18, 0x30, 0xF2, 0x04, 0x94, +0xB1, 0x67, 0x00, 0x18, 0x3F, 0xF2, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0x11, 0x67, 0x80, 0xF2, -0x48, 0x9A, 0x09, 0xF0, 0x00, 0x48, 0x90, 0x67, +0x48, 0x9A, 0x49, 0xF0, 0x08, 0x48, 0x90, 0x67, 0x00, 0x6D, 0x78, 0x6E, 0x40, 0xEA, 0x00, 0x6A, -0x43, 0xC0, 0x02, 0x6B, 0x01, 0x6A, 0x09, 0xF0, -0x40, 0xC1, 0x20, 0xF0, 0x4B, 0xC0, 0x20, 0xF0, +0x43, 0xC0, 0x02, 0x6B, 0x01, 0x6A, 0x49, 0xF0, +0x48, 0xC1, 0x20, 0xF0, 0x4B, 0xC0, 0x20, 0xF0, 0x48, 0xC0, 0x40, 0xF0, 0x73, 0xC0, 0x40, 0xF0, 0x50, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA3, 0xF3, 0xBE, 0xA3, +0x8B, 0xF1, 0x00, 0x4B, 0xC3, 0xF3, 0xA2, 0xA3, 0x28, 0x6A, 0x40, 0xC4, 0x28, 0x6A, 0x58, 0xED, -0x30, 0xF0, 0x20, 0x6C, 0x09, 0xF0, 0x00, 0x4C, -0x12, 0xED, 0x89, 0xE5, 0xA3, 0xF3, 0xBC, 0xA3, -0x01, 0x6C, 0xAC, 0xEC, 0x81, 0xC2, 0xA3, 0xF3, -0x7D, 0xA3, 0x62, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF0, 0x08, 0x4C, +0x12, 0xED, 0x89, 0xE5, 0xC3, 0xF3, 0xA0, 0xA3, +0x01, 0x6C, 0xAC, 0xEC, 0x81, 0xC2, 0xC3, 0xF3, +0x61, 0xA3, 0x62, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x3C, 0x22, 0x28, 0x6A, 0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6B, -0x09, 0xF0, 0x00, 0x4B, 0x12, 0xEA, 0x49, 0xE3, +0x49, 0xF0, 0x08, 0x4B, 0x12, 0xEA, 0x49, 0xE3, 0x61, 0x9A, 0xC8, 0xDA, 0x01, 0x4B, 0x61, 0xDA, 0x69, 0x9A, 0x03, 0x2B, 0x8E, 0xAA, 0x01, 0x6B, 0x25, 0x10, 0xC3, 0xEB, 0x21, 0x60, 0x7B, 0xE6, 0x65, 0x9A, 0x01, 0x2B, 0xC5, 0xDA, 0x28, 0x6B, -0x78, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF0, -0x00, 0x4A, 0x12, 0xEB, 0x49, 0xE3, 0x66, 0x9A, +0x78, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF0, +0x08, 0x4A, 0x12, 0xEB, 0x49, 0xE3, 0x66, 0x9A, 0x01, 0x2B, 0xC6, 0xDA, 0x28, 0x6B, 0x78, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF0, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF0, 0x08, 0x4A, 0x12, 0xEC, 0x91, 0xE2, 0x45, 0x9C, 0x43, 0xEE, 0x02, 0x60, 0xC5, 0xDC, 0x20, 0xE8, 0x46, 0x9C, 0xC3, 0xEA, 0x4E, 0x60, 0xC6, 0xDC, 0x20, 0xE8, 0x8E, 0xAA, 0x02, 0x6B, 0x8D, 0xEB, 0x6E, 0xCA, 0x7E, 0xA2, 0x01, 0x4B, 0x7E, 0xC2, 0x20, 0xE8, 0x05, 0x6B, 0x78, 0xEC, 0x30, 0xF0, 0x20, 0x6D, -0x09, 0xF0, 0x00, 0x4D, 0x12, 0xEB, 0x01, 0x4B, +0x49, 0xF0, 0x08, 0x4D, 0x12, 0xEB, 0x01, 0x4B, 0x6C, 0x33, 0xAD, 0xE3, 0x40, 0x9B, 0x01, 0x4A, 0x40, 0xDB, 0x28, 0x6A, 0x58, 0xEC, 0x12, 0xEA, 0x49, 0xE5, 0xA8, 0x9A, 0xC9, 0xDA, 0x30, 0x25, 0xC3, 0xED, 0x27, 0x60, 0x41, 0x9B, 0xBB, 0xE6, 0x01, 0x2A, 0xC1, 0xDB, 0x28, 0x6B, 0x78, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF0, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF0, 0x08, 0x4A, 0x12, 0xEB, 0x49, 0xE3, 0x64, 0x9A, 0x01, 0x2B, 0xC4, 0xDA, 0x05, 0x6B, 0x78, 0xEC, 0x30, 0xF0, -0x20, 0x6A, 0x09, 0xF0, 0x00, 0x4A, 0x12, 0xEB, +0x20, 0x6A, 0x49, 0xF0, 0x08, 0x4A, 0x12, 0xEB, 0x01, 0x4B, 0x6C, 0x33, 0x6D, 0xE2, 0xA1, 0x9B, 0xA3, 0xEE, 0x02, 0x60, 0xC1, 0xDB, 0x20, 0xE8, 0x28, 0x6B, 0x78, 0xEC, 0x12, 0xEC, 0x49, 0xE4, @@ -21112,8 +21362,8 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, 0x1F, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x49, 0xE1, +0x63, 0xF1, 0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0x49, 0xE1, 0x0B, 0x93, 0x40, 0x9A, 0x6C, 0xEA, 0x0C, 0x93, 0x6E, 0xEA, 0x04, 0x22, 0x40, 0xA8, 0x04, 0x93, 0x63, 0xEA, 0xDC, 0x61, 0x40, 0xA8, 0x04, 0x93, @@ -21121,59 +21371,59 @@ u8 array_mp_8822c_fw_nic[] = { 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0xA0, 0x35, 0x4C, 0xEC, 0xA0, 0x35, 0xCC, 0xEA, 0x4D, 0xED, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x44, 0x9A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x48, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x8C, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x70, 0x9B, +0x20, 0x6A, 0x03, 0xF3, 0x48, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x90, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x74, 0x9B, 0xAD, 0xEA, 0x40, 0xDC, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x54, 0x9A, 0x60, 0xDC, +0x20, 0x6A, 0x03, 0xF3, 0x58, 0x9A, 0x60, 0xDC, 0x00, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEA, 0xAC, 0xEB, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x58, 0x9A, 0x60, 0x33, +0xC3, 0xF1, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF3, 0x5C, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x4C, 0x9A, 0x00, 0x6C, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x5C, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x74, 0x9B, +0x03, 0xF3, 0x50, 0x9A, 0x00, 0x6C, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x78, 0x9B, 0x40, 0xA2, 0x80, 0xC3, 0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, -0x60, 0x9B, 0xFF, 0x6A, 0xCC, 0xEA, 0x6D, 0xEA, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, +0x64, 0x9B, 0xFF, 0x6A, 0xCC, 0xEA, 0x6D, 0xEA, 0xE0, 0xF1, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0x33, 0x60, 0x33, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x0C, 0x9B, 0x01, 0x6C, 0x40, 0xD8, +0x03, 0xF3, 0x10, 0x9B, 0x01, 0x6C, 0x40, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x00, 0x6A, 0x40, 0xD8, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xE0, 0xF1, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xAC, 0xEA, 0x03, 0xF3, 0x64, 0x9B, 0x40, 0x32, +0xAC, 0xEA, 0x23, 0xF3, 0x68, 0x9B, 0x40, 0x32, 0x40, 0x32, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x0C, 0x4B, 0x60, 0x9B, 0x30, 0xF0, +0x03, 0xF3, 0x10, 0x4B, 0x60, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x01, 0x6C, 0x40, 0xDB, 0x80, 0xF3, 0x4C, 0x98, 0xFF, 0x69, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x5C, 0x9A, 0x01, 0x6C, +0x20, 0x6A, 0x23, 0xF3, 0x40, 0x9A, 0x01, 0x6C, 0x40, 0xA2, 0x4C, 0xE9, 0x80, 0xF3, 0x4C, 0x98, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, -0x0C, 0x4C, 0x80, 0x9C, 0x00, 0x6A, 0x40, 0xDC, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, +0x10, 0x4C, 0x80, 0x9C, 0x00, 0x6A, 0x40, 0xDC, 0x07, 0x97, 0x51, 0x67, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0xC8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, 0xCC, 0x9B, 0xFF, 0x6A, 0x04, 0x6D, 0x60, 0xA6, 0x4C, 0xEC, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC6, -0x11, 0x24, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x90, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, +0x11, 0x24, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0x94, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xC4, -0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, 0x22, 0xF6, -0x75, 0xC2, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x70, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, +0x8B, 0xF1, 0x00, 0x4A, 0x00, 0x6B, 0x22, 0xF6, +0x79, 0xC2, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF1, 0x74, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x6D, 0xF7, 0x6D, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xCE, 0xF7, 0xA0, 0xA2, 0x30, 0xF0, -0x20, 0x6C, 0x4E, 0xF7, 0x06, 0x4C, 0x00, 0x18, -0x19, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x68, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x20, 0x6A, 0xAD, 0xF7, 0x79, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x0F, 0xF0, 0xAC, 0xA2, 0x30, 0xF0, +0x20, 0x6C, 0x8E, 0xF7, 0x12, 0x4C, 0x00, 0x18, +0xBE, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, +0x6C, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x0E, 0x92, 0x0F, 0x91, 0x04, 0x67, 0x04, 0xD2, @@ -21189,31 +21439,31 @@ u8 array_mp_8822c_fw_nic[] = { 0x08, 0x10, 0x22, 0xF2, 0x10, 0x6A, 0x05, 0x10, 0x42, 0xF2, 0x00, 0x6A, 0x02, 0x10, 0x42, 0xF2, 0x10, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x0D, 0x94, -0x03, 0xF3, 0x6C, 0x9B, 0x8C, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF1, 0x98, 0x9C, 0x8D, 0xEB, -0x06, 0x21, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, -0x90, 0x9C, 0x6D, 0xEC, 0x05, 0x10, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF3, 0x94, 0x9C, 0x6C, 0xEC, +0x23, 0xF3, 0x70, 0x9B, 0x8C, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0x23, 0xF1, 0x9C, 0x9C, 0x8D, 0xEB, +0x06, 0x21, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF3, +0x94, 0x9C, 0x6D, 0xEC, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x23, 0xF3, 0x98, 0x9C, 0x6C, 0xEC, 0x04, 0x96, 0x06, 0x26, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF3, 0x64, 0x9B, 0x8D, 0xEB, 0x05, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x78, 0x9B, +0x23, 0xF3, 0x68, 0x9B, 0x8D, 0xEB, 0x05, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, 0x7C, 0x9B, 0x8C, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, 0xA4, 0x9C, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, -0xA8, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x0B, 0x96, -0x03, 0xF3, 0x9C, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, +0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, 0xA8, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, +0xAC, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x0B, 0x96, +0x43, 0xF3, 0x80, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, 0x84, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, -0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF3, -0xA0, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0x23, 0xF3, 0xA4, 0x9C, 0x30, 0xF0, 0x20, 0x6C, -0x0C, 0x96, 0x03, 0xF3, 0x9C, 0x9C, 0xB5, 0xE2, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF3, +0xA4, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x43, 0xF3, 0xA8, 0x9C, 0x30, 0xF0, 0x20, 0x6C, +0x0C, 0x96, 0x43, 0xF3, 0x80, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, 0x87, 0x42, 0x01, 0x4C, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x23, 0xF3, 0x88, 0x9C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF3, 0x8C, 0x9C, +0x20, 0x6C, 0x43, 0xF3, 0x8C, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF3, 0x90, 0x9C, 0x89, 0xE2, 0x60, 0xDA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, @@ -21221,12 +21471,12 @@ u8 array_mp_8822c_fw_nic[] = { 0x82, 0xF3, 0x08, 0x69, 0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0xFF, 0x49, 0x40, 0xEA, 0x14, 0x29, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, 0x08, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, 0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF3, 0x50, 0x9A, 0x60, 0xAA, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x64, 0xDA, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF3, 0x54, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x0C, 0xEA, 0xDA, 0x2A, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, @@ -21234,874 +21484,810 @@ u8 array_mp_8822c_fw_nic[] = { 0x10, 0x68, 0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0xFF, 0x48, 0x40, 0xEA, 0x14, 0x28, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x6C, 0x9A, 0x08, 0xF0, 0x00, 0x6C, +0x43, 0xF2, 0x74, 0x9A, 0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, -0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x60, 0xDA, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, +0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, 0x00, 0x6A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF3, 0x50, 0x9A, 0x60, 0xAA, 0x3F, 0x6A, +0x43, 0xF3, 0x54, 0x9A, 0x60, 0xAA, 0x3F, 0x6A, 0x6C, 0xEA, 0xDC, 0x2A, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, 0x54, 0x9A, 0x40, 0xAA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF3, 0x50, 0x9A, 0x40, 0xAA, 0x20, 0xE8, +0x43, 0xF3, 0x54, 0x9A, 0x40, 0xAA, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x34, 0x9A, -0x10, 0xF0, 0x23, 0x68, 0xEA, 0xF3, 0x09, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x38, 0x9A, +0x10, 0xF0, 0x23, 0x68, 0x2B, 0xF1, 0x09, 0x48, 0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x01, 0xF0, 0x54, 0x9A, 0x89, 0xF6, -0x9C, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x20, 0x6A, 0x01, 0xF0, 0x54, 0x9A, 0xE9, 0xF6, +0x84, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, 0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x34, 0x9A, 0x10, 0xF0, 0x23, 0x68, -0x2A, 0xF4, 0x0D, 0x48, 0x00, 0xD9, 0x30, 0xF0, +0xE3, 0xF0, 0x38, 0x9A, 0x10, 0xF0, 0x23, 0x68, +0x6B, 0xF1, 0x0D, 0x48, 0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, -0x54, 0x9A, 0x89, 0xF6, 0x98, 0x9B, 0x01, 0x6D, +0x54, 0x9A, 0xE9, 0xF6, 0x80, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, 0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x6A, 0xF4, 0x11, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF6, -0x84, 0x9B, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, +0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, +0xAB, 0xF1, 0x11, 0x4A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, +0x8C, 0x9B, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, -0x00, 0xF2, 0x00, 0x6B, 0x8C, 0xEB, 0x08, 0x23, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, +0x00, 0xF2, 0x00, 0x6B, 0x8C, 0xEB, 0x09, 0x23, 0x00, 0xF2, 0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, 0x88, 0xE4, +0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, 0x27, 0xE6, +0x15, 0x10, 0x47, 0xF4, 0xA0, 0xA2, 0x20, 0x6C, +0xAC, 0xEC, 0x10, 0x24, 0x9D, 0x67, 0x70, 0xC4, +0x03, 0x6B, 0x6B, 0xEB, 0x21, 0x6C, 0xAC, 0xEB, +0x8B, 0xEC, 0x8C, 0xEB, 0x01, 0x6D, 0x47, 0xF4, +0x60, 0xC2, 0x03, 0x6C, 0x04, 0x06, 0xE5, 0x67, +0x00, 0x18, 0xE0, 0xDD, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, 0x8C, 0x9B, +0x08, 0xF7, 0x48, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, +0x23, 0x6A, 0xAB, 0xF1, 0x12, 0x4A, 0x40, 0xDB, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x00, 0x18, 0x73, 0xC7, 0x00, 0x6A, 0x04, 0xD2, +0x00, 0x68, 0x00, 0x6C, 0x00, 0x18, 0x6C, 0xD6, +0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x0A, 0x70, +0xF8, 0x61, 0x04, 0x93, 0x30, 0xF0, 0x20, 0x69, +0x30, 0xF0, 0x20, 0x68, 0x01, 0x73, 0x78, 0x67, +0x4C, 0xEB, 0x10, 0xF0, 0x23, 0x6A, 0x4B, 0xF2, +0x19, 0x4A, 0x04, 0xD3, 0x69, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xDB, 0xE9, 0xF6, 0x8C, 0x99, +0x01, 0xF0, 0x48, 0x98, 0x40, 0xEA, 0x80, 0x18, +0x64, 0x01, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, +0x8C, 0x99, 0x08, 0xF7, 0x48, 0x9A, 0x40, 0xEA, +0xE9, 0xF6, 0x8C, 0x99, 0x01, 0xF0, 0x48, 0x98, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, +0x84, 0x9A, 0x02, 0x6B, 0x8C, 0xEB, 0x09, 0x23, +0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x80, 0x18, 0xE6, 0x24, 0x80, 0x18, +0x39, 0x25, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0xE9, 0xF6, 0x8C, 0x98, 0x08, 0xF7, +0x48, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF6, 0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, +0x84, 0x9A, 0x04, 0x6B, 0x8C, 0xEB, 0x09, 0x23, +0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x00, 0x18, 0x89, 0xDC, 0x00, 0x18, +0x18, 0xDD, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0xE9, 0xF6, 0x8C, 0x98, 0x08, 0xF7, +0x48, 0x9A, 0x40, 0xEA, 0x00, 0x1C, 0xAC, 0x39, +0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, 0x8C, 0x98, +0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x63, 0xF6, 0x9C, 0xA2, 0x03, 0xF6, +0x63, 0xA2, 0x8E, 0xEB, 0x05, 0x23, 0xA0, 0xF0, +0x9E, 0xA2, 0x96, 0x34, 0x00, 0x18, 0x48, 0xD1, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x44, 0x9A, +0x02, 0x2A, 0x00, 0x18, 0x82, 0xCD, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, +0x8C, 0x98, 0x08, 0xF7, 0x48, 0x9A, 0x40, 0xEA, +0x00, 0x1C, 0xAB, 0x39, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF6, 0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, +0x84, 0x9A, 0x10, 0x6B, 0x8C, 0xEB, 0x07, 0x23, +0x11, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x80, 0x18, 0x88, 0x4E, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, +0x8C, 0x98, 0x08, 0xF7, 0x48, 0x9A, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, 0x8C, 0x98, +0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, 0x02, 0xF0, +0x00, 0x6B, 0x8C, 0xEB, 0x08, 0x23, 0x02, 0xF0, +0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x00, 0x18, 0x1E, 0xE9, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, +0x8C, 0x98, 0x08, 0xF7, 0x48, 0x9A, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, 0x8C, 0x98, +0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, 0xFF, 0x6B, +0x01, 0x4B, 0x8C, 0xEB, 0x08, 0x23, 0xFF, 0x6B, +0x02, 0x4B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x80, 0x18, 0x24, 0x63, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, +0x8C, 0x98, 0x08, 0xF7, 0x48, 0x9A, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, 0x8C, 0x98, +0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, +0x7C, 0x9B, 0xA0, 0xF0, 0x84, 0x9A, 0x8C, 0xEB, +0x20, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, +0x7C, 0x9B, 0x8C, 0xEB, 0xA0, 0xF0, 0x9B, 0xA2, +0xA0, 0xF0, 0x64, 0xDA, 0x7F, 0x6B, 0x8C, 0xEB, +0x07, 0x2B, 0x03, 0xF6, 0x43, 0xA2, 0x0C, 0x72, +0x03, 0x61, 0x80, 0x18, 0x42, 0x22, 0x0D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, +0xC3, 0xF2, 0x9C, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0xE9, 0xF6, 0x8C, 0x98, 0x08, 0xF7, +0x48, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, +0x00, 0x49, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF6, 0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x43, 0xF2, +0x00, 0xA1, 0x01, 0x6A, 0x4E, 0xE8, 0x05, 0x28, +0x0B, 0x6C, 0x80, 0x18, 0xF9, 0x64, 0x43, 0xF2, +0x00, 0xC1, 0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, +0x20, 0x68, 0x80, 0x18, 0x00, 0x6B, 0x80, 0x18, +0x1A, 0x6B, 0xE9, 0xF6, 0x8C, 0x99, 0x08, 0xF7, +0x48, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF6, 0x8C, 0x99, 0x01, 0xF0, 0x48, 0x9A, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x00, 0x18, +0xA4, 0xE7, 0x08, 0xF7, 0x48, 0x98, 0xE9, 0xF6, +0x8C, 0x99, 0x40, 0xEA, 0x85, 0x16, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x18, 0x4A, +0x40, 0x9A, 0x10, 0xF0, 0x23, 0x68, 0x6B, 0xF5, +0x01, 0x48, 0x00, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x01, 0x69, 0x01, 0xF0, +0x54, 0x9A, 0xE9, 0xF6, 0x88, 0x9B, 0x2B, 0xE9, +0xB1, 0x67, 0x40, 0xEA, 0x01, 0x4A, 0x0A, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x5C, 0x9A, +0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x00, 0x1C, 0xAC, 0x39, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF6, 0x84, 0x9B, 0xC8, 0xF6, 0x40, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x74, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x6A, 0xF4, -0x12, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x18, 0x39, 0xC7, -0x00, 0x6A, 0x04, 0xD2, 0x00, 0x68, 0x00, 0x6C, -0x00, 0x18, 0x1C, 0xD5, 0x01, 0x48, 0xFF, 0x6A, -0x4C, 0xE8, 0x0A, 0x70, 0xF8, 0x61, 0x04, 0x93, -0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, 0x20, 0x68, -0x01, 0x73, 0x78, 0x67, 0x4C, 0xEB, 0x10, 0xF0, -0x23, 0x6A, 0xEA, 0xF4, 0x0D, 0x4A, 0x04, 0xD3, -0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x74, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xDB, -0xA9, 0xF6, 0x84, 0x99, 0x01, 0xF0, 0x48, 0x98, -0x40, 0xEA, 0x80, 0x18, 0x58, 0x01, 0x30, 0xF0, -0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x99, 0xC8, 0xF6, -0x40, 0x9A, 0x40, 0xEA, 0xA9, 0xF6, 0x84, 0x99, -0x01, 0xF0, 0x48, 0x98, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, 0x02, 0x6B, -0x8C, 0xEB, 0x09, 0x23, 0x03, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, -0xD7, 0x24, 0x80, 0x18, 0x2A, 0x25, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF6, -0x84, 0x98, 0xC8, 0xF6, 0x40, 0x9A, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x98, -0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, 0x04, 0x6B, -0x8C, 0xEB, 0x09, 0x23, 0x05, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, -0x2A, 0xDB, 0x00, 0x18, 0xB9, 0xDB, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF6, -0x84, 0x98, 0xC8, 0xF6, 0x40, 0x9A, 0x40, 0xEA, -0x00, 0x1C, 0xAC, 0x39, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF6, 0x84, 0x98, 0x01, 0xF0, 0x48, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x63, 0xF6, -0x98, 0xA2, 0xE3, 0xF5, 0x7F, 0xA2, 0x8E, 0xEB, -0x05, 0x23, 0xA0, 0xF0, 0x9E, 0xA2, 0x96, 0x34, -0x00, 0x18, 0x10, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xCB, 0xF1, 0x5C, 0x9A, 0x02, 0x2A, 0x00, 0x18, -0xA0, 0xCC, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x98, 0xC8, 0xF6, -0x40, 0x9A, 0x40, 0xEA, 0x00, 0x1C, 0xAB, 0x39, -0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x98, -0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, 0x10, 0x6B, -0x8C, 0xEB, 0x07, 0x23, 0x11, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, -0x3D, 0x4E, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x98, 0xC8, 0xF6, -0x40, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF6, 0x84, 0x98, 0x01, 0xF0, 0x48, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, -0x84, 0x9A, 0x02, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, -0x08, 0x23, 0x02, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, -0x79, 0xE7, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x98, 0xC8, 0xF6, -0x40, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF6, 0x84, 0x98, 0x01, 0xF0, 0x48, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, -0x84, 0x9A, 0xFF, 0x6B, 0x01, 0x4B, 0x8C, 0xEB, -0x08, 0x23, 0xFF, 0x6B, 0x02, 0x4B, 0x6B, 0xEB, -0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, -0xD9, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x98, 0xC8, 0xF6, -0x40, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF6, 0x84, 0x98, 0x01, 0xF0, 0x48, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF2, 0x78, 0x9B, 0xA0, 0xF0, -0x84, 0x9A, 0x8C, 0xEB, 0x20, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF3, 0x78, 0x9B, 0x8C, 0xEB, -0xA0, 0xF0, 0x9B, 0xA2, 0xA0, 0xF0, 0x64, 0xDA, -0x7F, 0x6B, 0x8C, 0xEB, 0x07, 0x2B, 0xE3, 0xF5, -0x5F, 0xA2, 0x0C, 0x72, 0x03, 0x61, 0x80, 0x18, -0x57, 0x22, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6C, -0xA0, 0xF0, 0x64, 0x9A, 0xA3, 0xF2, 0x98, 0x9C, -0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF6, -0x84, 0x98, 0xC8, 0xF6, 0x40, 0x9A, 0x30, 0xF0, -0x20, 0x69, 0x2B, 0xF1, 0x18, 0x49, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x98, -0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x23, 0xF2, 0x1C, 0xA1, 0x01, 0x6A, -0x4E, 0xE8, 0x05, 0x28, 0x0B, 0x6C, 0x80, 0x18, -0x6E, 0x63, 0x23, 0xF2, 0x1C, 0xC1, 0x30, 0xF0, -0x20, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x80, 0x18, -0x75, 0x69, 0x80, 0x18, 0x8F, 0x69, 0xA9, 0xF6, -0x84, 0x99, 0xC8, 0xF6, 0x40, 0x98, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x99, -0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x00, 0x18, 0xFF, 0xE5, 0xC8, 0xF6, -0x40, 0x98, 0xA9, 0xF6, 0x84, 0x99, 0x40, 0xEA, -0x85, 0x16, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x14, 0x4A, 0x40, 0x9A, 0x10, 0xF0, -0x23, 0x68, 0xEA, 0xF7, 0x15, 0x48, 0x00, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x01, 0x69, 0x01, 0xF0, 0x54, 0x9A, 0xA9, 0xF6, -0x80, 0x9B, 0x2B, 0xE9, 0xB1, 0x67, 0x40, 0xEA, -0x01, 0x4A, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF6, 0x5C, 0x9A, 0x40, 0xEA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x00, 0x1C, 0xAC, 0x39, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF6, 0x84, 0x9B, -0x01, 0xF0, 0x48, 0x9A, 0xB1, 0x67, 0x01, 0x48, -0x40, 0xEA, 0x00, 0x18, 0xA7, 0xD6, 0x00, 0x18, -0xA3, 0xD6, 0x00, 0x18, 0x9F, 0xD6, 0x00, 0x18, -0x9B, 0xD6, 0x00, 0x18, 0x97, 0xD6, 0x00, 0x18, -0x93, 0xD6, 0xFC, 0x6C, 0x00, 0x18, 0xD8, 0xC2, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF6, 0x84, 0x9B, 0xC8, 0xF6, 0x40, 0x9A, -0x40, 0xEA, 0x00, 0x1C, 0xAB, 0x39, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF0, 0x14, 0x4A, 0x40, 0x9A, -0x00, 0xDA, 0xB0, 0x17, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, -0xFC, 0x6C, 0x00, 0x18, 0xDD, 0xC2, 0x30, 0xF0, +0xE9, 0xF6, 0x8C, 0x9B, 0x01, 0xF0, 0x48, 0x9A, +0xB1, 0x67, 0x01, 0x48, 0x40, 0xEA, 0x00, 0x18, +0x02, 0xD8, 0x00, 0x18, 0xFE, 0xD7, 0x00, 0x18, +0xFA, 0xD7, 0x00, 0x18, 0xF6, 0xD7, 0x00, 0x18, +0xF2, 0xD7, 0x00, 0x18, 0xEE, 0xD7, 0xFC, 0x6C, +0x00, 0x18, 0xD8, 0xC2, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, 0x8C, 0x9B, +0x08, 0xF7, 0x48, 0x9A, 0x40, 0xEA, 0x00, 0x1C, +0xAB, 0x39, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, +0x18, 0x4A, 0x40, 0x9A, 0x00, 0xDA, 0xB0, 0x17, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, +0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, +0xDD, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0xE9, 0xF6, +0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, +0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, +0xDD, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0xE9, 0xF6, +0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, +0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, +0xDD, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0xE9, 0xF6, +0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, +0x01, 0x72, 0x0E, 0x61, 0xFC, 0x6C, 0x00, 0x18, +0xDD, 0xC2, 0x00, 0x18, 0x5E, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0xA9, 0xF6, 0x80, 0x9B, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, -0xFC, 0x6C, 0x00, 0x18, 0xDD, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0xA9, 0xF6, 0x80, 0x9B, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, -0xFC, 0x6C, 0x00, 0x18, 0xDD, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0xA9, 0xF6, 0x80, 0x9B, 0x40, 0xEA, +0x58, 0x9A, 0xE9, 0xF6, 0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0E, 0x61, 0xFC, 0x6C, 0x00, 0x18, 0xDD, 0xC2, 0x00, 0x18, -0xD8, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0xA9, 0xF6, -0x80, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x2E, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0xE9, 0xF6, +0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, -0x01, 0x72, 0x0E, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0xDD, 0xC2, 0x00, 0x18, 0xA8, 0xDD, 0x30, 0xF0, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x44, 0x9A, 0x01, 0x72, 0x1D, 0x61, 0x30, 0xF0, +0x20, 0x68, 0xFC, 0x6C, 0x8B, 0xF1, 0x00, 0x48, +0x00, 0x18, 0xDD, 0xC2, 0x00, 0x18, 0x35, 0xDF, +0x48, 0x98, 0x20, 0x6B, 0x6C, 0xEA, 0x07, 0x22, +0x00, 0x18, 0x98, 0xE2, 0x48, 0x98, 0x21, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0x48, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0xA9, 0xF6, 0x80, 0x9B, 0x40, 0xEA, +0x58, 0x9A, 0xE9, 0xF6, 0x88, 0x9B, 0x40, 0xEA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x50, 0x9A, +0xE1, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF3, 0x40, 0x9A, 0x60, 0x9A, 0xFF, 0xF7, +0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x58, 0x9A, +0x01, 0x6B, 0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, +0x6E, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x64, 0x9B, +0x44, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x60, 0x9B, +0x23, 0xF3, 0x90, 0x9C, 0x8C, 0xEB, 0x43, 0xEB, +0x02, 0x60, 0x6F, 0xEB, 0x69, 0xE2, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xF3, 0xED, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, -0x1D, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xFC, 0x6C, -0x2B, 0xF1, 0x18, 0x48, 0x00, 0x18, 0xDD, 0xC2, -0x00, 0x18, 0xAF, 0xDD, 0x48, 0x98, 0x20, 0x6B, -0x6C, 0xEA, 0x07, 0x22, 0x00, 0x18, 0xFD, 0xE0, -0x48, 0x98, 0x21, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, -0x48, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0xA9, 0xF6, -0x80, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x4C, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, -0x40, 0xAA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x5C, 0x9A, -0x60, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xE6, 0xED, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x3F, 0xEE, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xFF, 0xEE, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x77, 0xEF, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xE0, 0xED, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF7, 0x40, 0x9A, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x54, 0x9A, 0x01, 0x6B, 0x40, 0x9A, -0x42, 0x32, 0x52, 0x32, 0x6E, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF3, 0x60, 0x9B, 0x44, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0x60, 0x9B, 0x03, 0xF3, 0x8C, 0x9C, -0x8C, 0xEB, 0x43, 0xEB, 0x02, 0x60, 0x6F, 0xEB, -0x69, 0xE2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x4E, 0xEC, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x41, 0xEC, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x9A, 0xEC, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x5A, 0xED, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xD2, 0xED, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x3B, 0xEC, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF6, 0x58, 0x9A, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, 0x54, 0x9A, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x09, 0xF7, 0x00, 0x4A, 0x01, 0x10, 0x43, 0x67, -0x60, 0x9A, 0x83, 0xEB, 0xFC, 0x61, 0x61, 0x9A, -0x75, 0xE2, 0x8E, 0xED, 0x04, 0x2D, 0x81, 0x9C, -0x8D, 0xE3, 0x61, 0xDA, 0x82, 0x67, 0xC1, 0x9C, -0x60, 0x9A, 0xD5, 0xE4, 0x6E, 0xED, 0x0E, 0x2D, -0x30, 0xF0, 0x20, 0x6D, 0xE9, 0xF6, 0xB0, 0x9D, -0xAA, 0xEB, 0x06, 0x60, 0x61, 0x9B, 0x79, 0xE6, -0xC1, 0xDC, 0x60, 0x9A, 0x60, 0x9B, 0x02, 0x10, -0xA0, 0xDC, 0x01, 0x10, 0x60, 0xDC, 0x8A, 0xEA, -0x01, 0x60, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x1B, 0x24, 0x30, 0xF0, -0x20, 0x6A, 0xE9, 0xF6, 0x4C, 0x9A, 0x53, 0xE4, -0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, 0x7C, 0x9A, -0x41, 0x9C, 0xA3, 0x67, 0x4C, 0xED, 0x0E, 0x25, -0xA0, 0x9C, 0x0C, 0x2D, 0x6F, 0xEB, 0x4C, 0xEB, -0x61, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, -0xB8, 0x9A, 0xAD, 0xE3, 0xE9, 0xF6, 0x78, 0xDA, -0x00, 0x18, 0xB1, 0xD6, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x08, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xE9, 0xF6, 0x6C, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x09, 0xF7, 0x08, 0x4A, 0x03, 0x6B, -0x4C, 0xEB, 0x03, 0x2B, 0x00, 0xF1, 0x00, 0x4B, -0x09, 0x10, 0x04, 0x6B, 0x6B, 0xEB, 0x03, 0x4A, -0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x0A, 0xF0, -0x08, 0x4B, 0x4F, 0xE3, 0x30, 0xF0, 0x20, 0x6C, -0x09, 0xF7, 0x40, 0xDC, 0x00, 0x6D, 0x09, 0xF7, -0x00, 0x4C, 0xA1, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xE9, 0xF6, 0x8C, 0x9C, 0x8F, 0xE3, 0x04, 0x6C, -0x6D, 0xE2, 0x8B, 0xEC, 0x8C, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0xE9, 0xF6, 0x70, 0xDC, 0xA1, 0xDB, -0xE9, 0xF6, 0xD0, 0x9C, 0x4F, 0xE3, 0xA0, 0xDE, -0x61, 0xDA, 0xE9, 0xF6, 0x90, 0x9C, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6C, 0xE9, 0xF6, 0x74, 0xDC, -0x61, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, -0x78, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, -0x7C, 0xDA, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF6, 0x50, 0x9A, 0x04, 0x67, 0x02, 0x2A, -0x00, 0x18, 0xD7, 0xD6, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF6, 0x5C, 0x9A, 0x0C, 0xEA, 0x58, 0x2A, -0x57, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF6, -0x4C, 0x9A, 0x03, 0x6B, 0x49, 0xE0, 0x4C, 0xEB, -0x04, 0x23, 0x04, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, -0x44, 0x43, 0x4A, 0x22, 0x30, 0xF0, 0x20, 0x6B, -0xE9, 0xF6, 0x78, 0x9B, 0x43, 0xEB, 0x44, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x09, 0xF7, 0x00, 0x9B, -0x09, 0xF7, 0x00, 0x4B, 0x02, 0x10, 0x70, 0x67, -0x04, 0x67, 0x81, 0x98, 0x43, 0xEC, 0x02, 0x60, -0x80, 0x98, 0xF9, 0x2C, 0x30, 0xF0, 0x20, 0x6C, -0xE9, 0xF6, 0x90, 0x9C, 0x0E, 0xEC, 0x30, 0x24, -0x30, 0xF0, 0x20, 0x6C, 0xE9, 0xF6, 0xAC, 0x9C, -0x20, 0x9B, 0x04, 0xD5, 0xA0, 0x98, 0xA0, 0xDB, -0x61, 0x98, 0xE9, 0xF6, 0x8C, 0x9C, 0x4F, 0xE3, -0x84, 0x34, 0x63, 0xEC, 0x05, 0x60, 0x51, 0xE0, -0x61, 0xDC, 0x41, 0xD8, 0x00, 0x18, 0xB1, 0xD6, -0x30, 0xF0, 0x20, 0x6B, 0xE9, 0xF6, 0x98, 0x9B, -0x41, 0x98, 0x4B, 0xE4, 0xE9, 0xF6, 0x58, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE9, 0xF6, 0x94, 0x9B, -0x83, 0xEA, 0x02, 0x60, 0xE9, 0xF6, 0x54, 0xDB, -0x04, 0x93, 0x30, 0xF0, 0x20, 0x6C, 0xE9, 0xF6, -0x9C, 0x9C, 0x69, 0xE1, 0x61, 0x98, 0x8D, 0xEB, -0x61, 0xD8, 0x00, 0x6B, 0x60, 0xD8, 0x01, 0x10, -0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0x03, 0x6F, 0x8C, 0xEF, -0x64, 0x67, 0x46, 0x67, 0x04, 0x27, 0x0B, 0x10, -0xA0, 0xDB, 0xFC, 0x4A, 0x04, 0x4B, 0x04, 0x5A, -0xFB, 0x60, 0x03, 0x6A, 0x4C, 0xEE, 0x03, 0x10, -0xA0, 0xC4, 0xFF, 0x4E, 0x01, 0x4C, 0xFC, 0x2E, -0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6A, 0xAC, 0xEA, -0x03, 0x10, 0x40, 0xC4, 0xFF, 0x4E, 0x01, 0x4C, -0xFC, 0x2E, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x63, 0x01, 0xD0, 0x03, 0x6B, 0x05, 0x67, -0x6C, 0xE8, 0x44, 0x67, 0xE4, 0x67, 0x85, 0x67, -0x12, 0x28, 0x4C, 0xEB, 0x10, 0x2B, 0x86, 0x67, -0x06, 0x10, 0x61, 0xE5, 0x00, 0x98, 0x7D, 0xE2, -0xFC, 0x4C, 0x00, 0xDF, 0x04, 0x4B, 0x04, 0x5C, -0xF8, 0x60, 0xCA, 0x34, 0x88, 0x34, 0x03, 0x6B, -0x9D, 0xE2, 0x6C, 0xEE, 0x91, 0xE5, 0x00, 0x6B, -0x06, 0x10, 0x61, 0xE4, 0x00, 0xA0, 0x75, 0xE7, -0xFF, 0x4E, 0x00, 0xC5, 0x01, 0x4B, 0xF9, 0x2E, -0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, -0x09, 0x10, 0x60, 0xA4, 0x40, 0xA5, 0xFF, 0x4E, -0x4A, 0xEB, 0x02, 0x60, 0x4B, 0xE3, 0x20, 0xE8, -0x01, 0x4C, 0x01, 0x4D, 0xF6, 0x2E, 0x00, 0x6A, +0x29, 0xF7, 0x5C, 0x9A, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF7, 0x08, 0x4A, +0x01, 0x10, 0x43, 0x67, 0x60, 0x9A, 0x83, 0xEB, +0xFC, 0x61, 0x61, 0x9A, 0x75, 0xE2, 0x8E, 0xED, +0x04, 0x2D, 0x81, 0x9C, 0x8D, 0xE3, 0x61, 0xDA, +0x82, 0x67, 0xC1, 0x9C, 0x60, 0x9A, 0xD5, 0xE4, +0x6E, 0xED, 0x0E, 0x2D, 0x30, 0xF0, 0x20, 0x6D, +0x29, 0xF7, 0xB8, 0x9D, 0xAA, 0xEB, 0x06, 0x60, +0x61, 0x9B, 0x79, 0xE6, 0xC1, 0xDC, 0x60, 0x9A, +0x60, 0x9B, 0x02, 0x10, 0xA0, 0xDC, 0x01, 0x10, +0x60, 0xDC, 0x8A, 0xEA, 0x01, 0x60, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x02, 0x24, 0x00, 0x18, 0xC6, 0xD6, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x00, 0x68, 0x24, 0x67, -0x03, 0x24, 0x00, 0x18, 0xFB, 0xD6, 0x02, 0x67, -0x05, 0x20, 0x90, 0x67, 0x00, 0x6D, 0xD1, 0x67, -0x00, 0x18, 0x3D, 0xD7, 0x50, 0x67, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x6A, 0x02, 0x24, -0x00, 0x18, 0xFB, 0xD6, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x06, 0x2C, 0x64, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF0, 0x60, 0xDA, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF0, -0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF0, -0x40, 0x9A, 0x32, 0x72, 0x2A, 0x60, 0x33, 0x5A, -0x0C, 0x60, 0x14, 0x72, 0x2E, 0x60, 0x15, 0x5A, -0x03, 0x60, 0x0A, 0x72, 0x12, 0x60, 0x20, 0xE8, -0x19, 0x72, 0x17, 0x60, 0x28, 0x72, 0x25, 0x60, -0x20, 0xE8, 0x64, 0x72, 0x2A, 0x60, 0x65, 0x5A, -0x03, 0x60, 0x50, 0x72, 0x1E, 0x60, 0x20, 0xE8, -0x78, 0x72, 0x2B, 0x60, 0xC8, 0x72, 0x31, 0x60, -0x20, 0xE8, 0x02, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x64, 0xDA, 0xE0, 0xF7, 0x1E, 0x4B, -0x31, 0x10, 0x09, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x64, 0xDA, 0xE4, 0xF3, 0x17, 0x4B, -0x29, 0x10, 0x11, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x64, 0xDA, 0xE8, 0xF3, 0x0F, 0x4B, -0x21, 0x10, 0x0D, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x64, 0xDA, 0x06, 0xF4, 0x08, 0x4B, -0x19, 0x10, 0x22, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x64, 0xDA, 0x11, 0xF0, 0x00, 0x6B, -0x11, 0x10, 0x28, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x64, 0xDA, 0x14, 0xF0, 0x00, 0x6B, -0x09, 0x10, 0x43, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF3, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x68, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF0, 0x40, 0x9A, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x48, 0x9A, 0xFF, 0x63, 0x58, 0xEC, -0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, -0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x44, 0x9A, 0xFF, 0x63, 0x58, 0xEC, -0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, -0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, 0x5C, 0x9A, -0x6D, 0xE4, 0xFF, 0xF7, 0x1F, 0x6F, 0x63, 0xEA, -0xCC, 0xEF, 0x07, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0x78, 0x9B, 0x6D, 0xE4, 0x63, 0xEA, -0x23, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x5C, 0x9A, 0xD9, 0xE5, 0xC3, 0xEA, 0x07, 0x60, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF1, 0xD8, 0x9C, -0xD9, 0xE5, 0xC3, 0xEA, 0x11, 0x61, 0x00, 0x6A, -0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF2, 0x58, 0x9A, 0x00, 0x6C, 0xA3, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x5C, 0x9A, 0x00, 0x6C, 0x40, 0xEA, 0x01, 0x10, -0x00, 0x6A, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x69, 0x5D, 0x67, 0x2C, 0xEC, -0x2C, 0xED, 0x0D, 0xD7, 0x0C, 0xD6, 0x0E, 0x90, -0x88, 0xCA, 0xA9, 0xCA, 0x04, 0x04, 0xA7, 0x67, -0x04, 0x6E, 0x00, 0x18, 0xB9, 0xD7, 0x0D, 0x95, -0x0C, 0x94, 0x2C, 0xE8, 0xD0, 0x67, 0x04, 0x4D, -0x00, 0x18, 0xB9, 0xD7, 0x44, 0x40, 0x2C, 0xEA, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0xFF, 0xF7, -0x1F, 0x6B, 0x8C, 0xEA, 0xAC, 0xEB, 0x0F, 0x22, -0x01, 0x72, 0x1E, 0x61, 0x30, 0xF0, 0x21, 0x6A, -0xB2, 0xF4, 0x54, 0x9A, 0x4D, 0xE3, 0x0C, 0xF0, -0x01, 0x5B, 0x16, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF3, 0x68, 0x9B, 0x0F, 0x10, 0x30, 0xF0, -0x21, 0x6A, 0xB2, 0xF4, 0x54, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF2, 0x98, 0x9C, 0x4D, 0xE3, -0x63, 0xEC, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0x60, 0x9B, 0x49, 0xE3, 0x20, 0xE8, -0x00, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x67, 0xF3, 0x16, 0xAA, -0x4D, 0x20, 0x67, 0xF3, 0xD4, 0xA2, 0x67, 0xF3, -0x38, 0x9A, 0x03, 0x6B, 0x6C, 0xEE, 0x01, 0x76, -0x31, 0xE0, 0xFF, 0x6D, 0x17, 0x60, 0x02, 0x76, -0x29, 0x60, 0x40, 0x2E, 0x30, 0xF0, 0x20, 0x6E, -0x23, 0xF1, 0xC4, 0x9E, 0x83, 0xEE, 0x3A, 0x61, -0x67, 0xF3, 0x94, 0xA2, 0x8A, 0x34, 0x6C, 0xEC, -0xAC, 0xEC, 0xB0, 0x67, 0x00, 0x18, 0xE9, 0xD7, -0x31, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, -0x98, 0x9B, 0x27, 0x10, 0x30, 0xF0, 0x20, 0x6E, -0x43, 0xF3, 0xCC, 0x9E, 0x83, 0xEE, 0x26, 0x61, -0x67, 0xF3, 0x94, 0xA2, 0x8A, 0x34, 0x6C, 0xEC, -0xAC, 0xEC, 0xB0, 0x67, 0x00, 0x18, 0xE9, 0xD7, -0x1D, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, -0x90, 0x9B, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6E, -0x43, 0xF3, 0xD4, 0x9E, 0x83, 0xEE, 0x12, 0x61, -0x67, 0xF3, 0x94, 0xA2, 0x8A, 0x34, 0x6C, 0xEC, -0xAC, 0xEC, 0xB0, 0x67, 0x00, 0x18, 0xE9, 0xD7, -0x09, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, -0x98, 0x9B, 0x91, 0xE1, 0xA2, 0x67, 0xD0, 0x67, -0x00, 0x18, 0xB9, 0xD7, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x21, 0x6C, 0xB2, 0xF4, 0x0C, 0x4C, 0x0C, 0x6E, -0x40, 0xEA, 0x00, 0x18, 0xFD, 0xD7, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x56, 0xD7, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xED, 0x00, 0x18, 0x3D, 0xD7, -0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, -0x04, 0x67, 0x4C, 0xEE, 0x00, 0x18, 0x42, 0xD7, -0x50, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEE, 0x4C, 0xED, 0xA0, 0xC4, -0xC1, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0xA7, 0x67, 0x02, 0x4C, 0x40, 0xEA, +0x1B, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF7, +0x54, 0x9A, 0x53, 0xE4, 0x30, 0xF0, 0x20, 0x6A, +0x49, 0xF7, 0x64, 0x9A, 0x41, 0x9C, 0xA3, 0x67, +0x4C, 0xED, 0x0E, 0x25, 0xA0, 0x9C, 0x0C, 0x2D, +0x6F, 0xEB, 0x4C, 0xEB, 0x61, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0x49, 0xF7, 0xA0, 0x9A, 0xAD, 0xE3, +0x49, 0xF7, 0x60, 0xDA, 0x00, 0x18, 0x0C, 0xD8, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x08, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF7, +0x74, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF7, +0x10, 0x4A, 0x03, 0x6B, 0x4C, 0xEB, 0x03, 0x2B, +0x00, 0xF1, 0x00, 0x4B, 0x09, 0x10, 0x04, 0x6B, +0x6B, 0xEB, 0x03, 0x4A, 0x6C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x4A, 0xF0, 0x10, 0x4B, 0x4F, 0xE3, +0x30, 0xF0, 0x20, 0x6C, 0x49, 0xF7, 0x48, 0xDC, +0x00, 0x6D, 0x49, 0xF7, 0x08, 0x4C, 0xA1, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0x29, 0xF7, 0x94, 0x9C, +0x8F, 0xE3, 0x04, 0x6C, 0x6D, 0xE2, 0x8B, 0xEC, +0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x29, 0xF7, +0x78, 0xDC, 0xA1, 0xDB, 0x29, 0xF7, 0xD8, 0x9C, +0x4F, 0xE3, 0xA0, 0xDE, 0x61, 0xDA, 0x29, 0xF7, +0x98, 0x9C, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6C, +0x29, 0xF7, 0x7C, 0xDC, 0x61, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x49, 0xF7, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF1, 0x7C, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x49, 0xF7, 0x64, 0xDA, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x69, 0xF2, 0x08, 0x48, -0x4F, 0x98, 0x0A, 0xD4, 0x0B, 0xD5, 0x8E, 0xEA, -0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x00, 0x69, 0x10, 0xF0, 0x23, 0x6C, -0x04, 0xD1, 0x0D, 0xF0, 0x09, 0x4C, 0xB1, 0x67, -0x64, 0x6E, 0x01, 0x6F, 0x40, 0xEA, 0x31, 0xD8, -0x0A, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF2, -0x08, 0x4A, 0x6F, 0xDA, 0x0B, 0x93, 0x70, 0xDA, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF6, 0x5C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x80, 0xAA, 0xEF, 0xF7, -0x1F, 0x6A, 0x8C, 0xEA, 0xA4, 0xF5, 0x54, 0xCB, -0xA4, 0xF5, 0x74, 0xAB, 0x30, 0xF0, 0x20, 0x6C, -0x69, 0xF2, 0x56, 0xCC, 0x60, 0x6C, 0x8C, 0xEB, -0x00, 0x6A, 0x01, 0x23, 0x01, 0x6A, 0xFF, 0x6B, -0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x69, 0xF2, 0x08, 0x4B, 0x9B, 0xA3, 0x02, 0x6A, -0x4B, 0xEA, 0x8C, 0xEA, 0x03, 0x6C, 0x8B, 0xEC, -0x8C, 0xEA, 0xFE, 0x4C, 0x8C, 0xEA, 0x5B, 0xC3, -0x00, 0x6A, 0x59, 0xC3, 0x5A, 0xC3, 0x20, 0xE8, -0xFF, 0x6B, 0x8C, 0xEB, 0x0F, 0x5B, 0x00, 0x6A, -0x06, 0x61, 0x24, 0x5B, 0x78, 0x67, 0x01, 0x5B, -0x58, 0x67, 0x02, 0x6B, 0x4B, 0xE3, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0x9B, 0xA9, 0xF2, -0x98, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, -0x84, 0x9A, 0xFC, 0x6A, 0xA0, 0xA4, 0xAC, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, -0x48, 0x9A, 0x0D, 0x6C, 0x80, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF6, 0x4C, 0x9A, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0x69, 0xF2, 0x08, 0x49, 0x40, 0xF0, 0x8C, 0xA1, -0x00, 0x18, 0x7A, 0xD8, 0x40, 0xF0, 0x8E, 0xA1, -0x02, 0x67, 0x00, 0x18, 0x7A, 0xD8, 0x4D, 0xE8, -0xFF, 0x6B, 0x6C, 0xE8, 0x01, 0x6A, 0x4E, 0xE8, -0x01, 0x58, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x58, 0x67, 0x6C, 0xEA, 0x04, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA4, 0xF5, 0x88, 0x9A, 0x64, 0x67, 0x03, 0x2C, -0x84, 0xF5, 0x70, 0x9A, 0x06, 0x23, 0x05, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x40, 0x9A, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE0, 0xF0, 0x9A, 0xA2, 0x05, 0x6B, -0x8C, 0xEB, 0x05, 0x73, 0x05, 0x60, 0x00, 0x6B, -0xA4, 0xF5, 0x68, 0xDA, 0x84, 0xF5, 0x70, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x69, 0xF2, 0x08, 0x48, 0x20, 0xF0, 0x45, 0xA0, -0x2F, 0x2A, 0x80, 0x18, 0x49, 0x5E, 0x40, 0xF0, -0x8C, 0xA0, 0x00, 0x69, 0x00, 0x18, 0x7A, 0xD8, -0x06, 0x2A, 0x40, 0xF0, 0x2D, 0xA0, 0x01, 0x6A, -0x1A, 0x59, 0x38, 0x67, 0x4E, 0xE9, 0x30, 0xF0, -0x20, 0x68, 0x69, 0xF2, 0x08, 0x48, 0x40, 0xF0, -0x8E, 0xA0, 0x00, 0x18, 0x7A, 0xD8, 0x00, 0x6B, -0x1B, 0x65, 0x05, 0x2A, 0x40, 0xF0, 0x4F, 0xA0, -0x1A, 0x5A, 0x58, 0x67, 0x01, 0x72, 0x01, 0x61, -0x3E, 0x21, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x23, 0x6C, 0x0C, 0xF2, 0x01, 0x4C, 0x00, 0x6D, -0x14, 0x6E, 0x01, 0x6F, 0x40, 0xEA, 0x2F, 0x10, -0x01, 0x72, 0x2D, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF6, 0x64, 0x9A, 0xFF, 0x69, 0x03, 0x6C, -0x40, 0xA3, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, -0x48, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0xE0, 0xF0, -0x7A, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, -0x12, 0x2A, 0x00, 0x18, 0x8F, 0xD8, 0x0F, 0x22, -0xA4, 0xF5, 0x65, 0xA0, 0xA4, 0xF5, 0x46, 0xA0, -0x01, 0x4B, 0xA4, 0xF5, 0x65, 0xC0, 0xA4, 0xF5, -0x65, 0xA0, 0x14, 0x4A, 0x2C, 0xEA, 0x6E, 0xEA, -0x02, 0x2A, 0xA4, 0xF5, 0x66, 0xC0, 0x09, 0x97, +0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF7, 0x58, 0x9A, +0x04, 0x67, 0x02, 0x2A, 0x00, 0x18, 0x32, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF7, 0x44, 0x9A, +0x0C, 0xEA, 0x58, 0x2A, 0x57, 0x20, 0x30, 0xF0, +0x20, 0x6A, 0x29, 0xF7, 0x54, 0x9A, 0x03, 0x6B, +0x49, 0xE0, 0x4C, 0xEB, 0x04, 0x23, 0x04, 0x6B, +0x6B, 0xEB, 0x4C, 0xEB, 0x44, 0x43, 0x4A, 0x22, +0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF7, 0x60, 0x9B, +0x43, 0xEB, 0x44, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x49, 0xF7, 0x08, 0x9B, 0x49, 0xF7, 0x08, 0x4B, +0x02, 0x10, 0x70, 0x67, 0x04, 0x67, 0x81, 0x98, +0x43, 0xEC, 0x02, 0x60, 0x80, 0x98, 0xF9, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0x29, 0xF7, 0x98, 0x9C, +0x0E, 0xEC, 0x30, 0x24, 0x30, 0xF0, 0x20, 0x6C, +0x29, 0xF7, 0xB4, 0x9C, 0x20, 0x9B, 0x04, 0xD5, +0xA0, 0x98, 0xA0, 0xDB, 0x61, 0x98, 0x29, 0xF7, +0x94, 0x9C, 0x4F, 0xE3, 0x84, 0x34, 0x63, 0xEC, +0x05, 0x60, 0x51, 0xE0, 0x61, 0xDC, 0x41, 0xD8, +0x00, 0x18, 0x0C, 0xD8, 0x30, 0xF0, 0x20, 0x6B, +0x49, 0xF7, 0x80, 0x9B, 0x41, 0x98, 0x4B, 0xE4, +0x49, 0xF7, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x29, 0xF7, 0x9C, 0x9B, 0x83, 0xEA, 0x02, 0x60, +0x29, 0xF7, 0x5C, 0xDB, 0x04, 0x93, 0x30, 0xF0, +0x20, 0x6C, 0x49, 0xF7, 0x84, 0x9C, 0x69, 0xE1, +0x61, 0x98, 0x8D, 0xEB, 0x61, 0xD8, 0x00, 0x6B, +0x60, 0xD8, 0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x5A, 0x0B, 0x60, -0x87, 0x42, 0x30, 0xF0, 0x20, 0x6B, 0x09, 0x4C, -0x84, 0x34, 0x69, 0xF2, 0x08, 0x4B, 0x6D, 0xE4, -0x83, 0xAB, 0x01, 0x4C, 0x83, 0xCB, 0x30, 0xF0, -0x20, 0x6B, 0x69, 0xF2, 0x08, 0x4B, 0x40, 0xF0, -0x88, 0xA3, 0x11, 0x24, 0x10, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF6, 0x9C, 0x9A, 0xFF, 0x6D, -0x10, 0x6E, 0x40, 0xA4, 0xAC, 0xEA, 0xCD, 0xEA, -0xAC, 0xEA, 0x40, 0xC4, 0x40, 0xF0, 0x4A, 0xAB, -0x01, 0x4A, 0x40, 0xF0, 0x4A, 0xCB, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x69, 0xF2, 0x08, 0x4B, 0x4C, 0xEC, -0x4C, 0xED, 0x4C, 0xEE, 0xEC, 0xEA, 0x40, 0xF0, -0x8C, 0xC3, 0x40, 0xF0, 0xAD, 0xC3, 0x40, 0xF0, -0xCE, 0xC3, 0x40, 0xF0, 0x4F, 0xC3, 0x01, 0x24, -0x10, 0x2E, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF2, -0x08, 0x4A, 0x74, 0x9A, 0x07, 0x23, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF6, 0x80, 0x9C, 0x60, 0xDC, -0x00, 0x6B, 0x74, 0xDA, 0x00, 0x6C, 0x00, 0x18, -0xB9, 0xE6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x69, 0x2C, 0xED, 0x2C, 0xEC, 0x09, 0xD5, -0x56, 0x24, 0x30, 0xF0, 0x20, 0x68, 0x69, 0xF2, -0x08, 0x48, 0x5B, 0xA0, 0x02, 0x6B, 0x4C, 0xEB, -0x2C, 0xEB, 0x08, 0xD3, 0x80, 0xF0, 0x02, 0x2B, -0x01, 0x6A, 0x9D, 0x67, 0x01, 0x6D, 0x06, 0x06, -0x58, 0xC4, 0x34, 0x6C, 0x80, 0x18, 0x1E, 0x69, -0x53, 0xA0, 0x02, 0x6C, 0x01, 0x4A, 0x53, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x44, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF7, -0x48, 0x9A, 0x9B, 0xA0, 0x60, 0xA2, 0x04, 0x6A, -0x6C, 0xEA, 0x4A, 0x32, 0x4C, 0x33, 0x09, 0x6A, -0x4B, 0xEA, 0x8C, 0xEA, 0x6D, 0xEA, 0x00, 0x6C, -0x5B, 0xC0, 0x00, 0x18, 0x65, 0xDD, 0x47, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x64, 0xF5, 0x98, 0xA2, 0x08, 0x6B, 0x00, 0x6D, -0x8D, 0xEB, 0x64, 0xF5, 0x78, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF0, 0x70, 0x9A, 0x02, 0x6C, -0x64, 0x6E, 0x40, 0xA3, 0x01, 0x6F, 0x2C, 0xEA, -0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x08, 0x92, -0x10, 0xF0, 0x23, 0x6C, 0xCC, 0xF5, 0x19, 0x4C, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x40, 0xEA, 0x5B, 0xA0, 0x02, 0x6B, -0x6D, 0xEA, 0x5B, 0xC0, 0x37, 0x10, 0x30, 0xF0, -0x20, 0x68, 0x69, 0xF2, 0x08, 0x48, 0x7B, 0xA0, -0x06, 0x6A, 0x6C, 0xEA, 0x02, 0x72, 0x2E, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x44, 0x9A, -0x03, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF7, 0x48, 0x9A, 0x9B, 0xA0, 0x04, 0x6D, -0x60, 0xA2, 0x11, 0x6A, 0x4B, 0xEA, 0xAC, 0xEB, -0x6A, 0x33, 0x70, 0x33, 0x8C, 0xEA, 0x6D, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x5B, 0xC0, 0x2B, 0xF1, -0x18, 0x4B, 0x64, 0xF5, 0xD8, 0xA3, 0x09, 0x6C, -0x8B, 0xEC, 0xCC, 0xEC, 0x64, 0xF5, 0x98, 0xC3, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x90, 0x9B, -0xFD, 0x6B, 0xAD, 0xEA, 0xC0, 0xA4, 0xCC, 0xEB, -0x60, 0xC4, 0x00, 0x6C, 0x5B, 0xC0, 0x00, 0x18, -0x65, 0xDD, 0x48, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x69, 0xF2, 0x08, 0x4A, 0x7A, 0xA2, 0x09, 0x94, -0x8D, 0xEB, 0x7A, 0xC2, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x03, 0x6F, 0x8C, 0xEF, 0x64, 0x67, 0x46, 0x67, +0x04, 0x27, 0x0B, 0x10, 0xA0, 0xDB, 0xFC, 0x4A, +0x04, 0x4B, 0x04, 0x5A, 0xFB, 0x60, 0x03, 0x6A, +0x4C, 0xEE, 0x03, 0x10, 0xA0, 0xC4, 0xFF, 0x4E, +0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, 0x20, 0xE8, +0xFF, 0x6A, 0xAC, 0xEA, 0x03, 0x10, 0x40, 0xC4, +0xFF, 0x4E, 0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x03, 0x6B, 0x05, 0x67, 0x6C, 0xE8, 0x44, 0x67, +0xE4, 0x67, 0x85, 0x67, 0x12, 0x28, 0x4C, 0xEB, +0x10, 0x2B, 0x86, 0x67, 0x06, 0x10, 0x61, 0xE5, +0x00, 0x98, 0x7D, 0xE2, 0xFC, 0x4C, 0x00, 0xDF, +0x04, 0x4B, 0x04, 0x5C, 0xF8, 0x60, 0xCA, 0x34, +0x88, 0x34, 0x03, 0x6B, 0x9D, 0xE2, 0x6C, 0xEE, +0x91, 0xE5, 0x00, 0x6B, 0x06, 0x10, 0x61, 0xE4, +0x00, 0xA0, 0x75, 0xE7, 0xFF, 0x4E, 0x00, 0xC5, +0x01, 0x4B, 0xF9, 0x2E, 0x01, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x09, 0x10, 0x60, 0xA4, +0x40, 0xA5, 0xFF, 0x4E, 0x4A, 0xEB, 0x02, 0x60, +0x4B, 0xE3, 0x20, 0xE8, 0x01, 0x4C, 0x01, 0x4D, +0xF6, 0x2E, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x02, 0x24, 0x00, 0x18, +0x21, 0xD8, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x69, 0xF2, 0x08, 0x48, -0x9B, 0xA0, 0x04, 0x6A, 0xFF, 0x69, 0x8C, 0xEA, -0x18, 0x2A, 0x02, 0x6B, 0x8C, 0xEB, 0x2C, 0xEB, -0x01, 0x6A, 0x14, 0x2B, 0x00, 0x18, 0x63, 0xD8, +0x00, 0x68, 0x24, 0x67, 0x03, 0x24, 0x00, 0x18, +0x56, 0xD8, 0x02, 0x67, 0x05, 0x20, 0x90, 0x67, +0x00, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x98, 0xD8, +0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6A, 0x02, 0x24, 0x00, 0x18, 0x56, 0xD8, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x06, 0x2C, 0x64, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF0, 0x6C, 0xDA, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF0, 0x8C, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF0, 0x4C, 0x9A, 0x32, 0x72, +0x2A, 0x60, 0x33, 0x5A, 0x0C, 0x60, 0x14, 0x72, +0x2E, 0x60, 0x15, 0x5A, 0x03, 0x60, 0x0A, 0x72, +0x12, 0x60, 0x20, 0xE8, 0x19, 0x72, 0x17, 0x60, +0x28, 0x72, 0x25, 0x60, 0x20, 0xE8, 0x64, 0x72, +0x2A, 0x60, 0x65, 0x5A, 0x03, 0x60, 0x50, 0x72, +0x1E, 0x60, 0x20, 0xE8, 0x78, 0x72, 0x2B, 0x60, +0xC8, 0x72, 0x31, 0x60, 0x20, 0xE8, 0x02, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x70, 0xDA, +0xE0, 0xF7, 0x1E, 0x4B, 0x31, 0x10, 0x09, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x70, 0xDA, +0xE4, 0xF3, 0x17, 0x4B, 0x29, 0x10, 0x11, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x70, 0xDA, +0xE8, 0xF3, 0x0F, 0x4B, 0x21, 0x10, 0x0D, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x70, 0xDA, +0x06, 0xF4, 0x08, 0x4B, 0x19, 0x10, 0x22, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x70, 0xDA, +0x11, 0xF0, 0x00, 0x6B, 0x11, 0x10, 0x28, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x70, 0xDA, +0x14, 0xF0, 0x00, 0x6B, 0x09, 0x10, 0x43, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x70, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x74, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF0, 0x4C, 0x9A, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x54, 0x9A, +0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, +0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, +0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x50, 0x9A, +0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, +0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, +0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF3, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF3, 0x40, 0x9A, 0x6D, 0xE4, 0xFF, 0xF7, +0x1F, 0x6F, 0x63, 0xEA, 0xCC, 0xEF, 0x07, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x7C, 0x9B, +0x6D, 0xE4, 0x63, 0xEA, 0x23, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF3, 0xC4, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF3, 0x40, 0x9A, 0xD9, 0xE5, +0xC3, 0xEA, 0x07, 0x60, 0x30, 0xF0, 0x20, 0x6C, +0x23, 0xF1, 0xDC, 0x9C, 0xD9, 0xE5, 0xC3, 0xEA, +0x11, 0x61, 0x00, 0x6A, 0x04, 0xD2, 0x05, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x58, 0x9A, +0x00, 0x6C, 0xA3, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x5C, 0x9A, 0x00, 0x6C, +0x40, 0xEA, 0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, +0x5D, 0x67, 0x2C, 0xEC, 0x2C, 0xED, 0x0D, 0xD7, +0x0C, 0xD6, 0x0E, 0x90, 0x88, 0xCA, 0xA9, 0xCA, +0x04, 0x04, 0xA7, 0x67, 0x04, 0x6E, 0x00, 0x18, +0x14, 0xD9, 0x0D, 0x95, 0x0C, 0x94, 0x2C, 0xE8, +0xD0, 0x67, 0x04, 0x4D, 0x00, 0x18, 0x14, 0xD9, +0x44, 0x40, 0x2C, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEA, +0xAC, 0xEB, 0x0F, 0x22, 0x01, 0x72, 0x1E, 0x61, +0x30, 0xF0, 0x21, 0x6A, 0x72, 0xF5, 0x54, 0x9A, +0x4D, 0xE3, 0x0C, 0xF0, 0x01, 0x5B, 0x16, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x6C, 0x9B, +0x0F, 0x10, 0x30, 0xF0, 0x21, 0x6A, 0x72, 0xF5, +0x54, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, +0x9C, 0x9C, 0x4D, 0xE3, 0x63, 0xEC, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x68, 0x9B, +0x49, 0xE3, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xE7, 0xF3, 0x0E, 0xAA, 0x4D, 0x20, 0xE7, 0xF3, +0xCC, 0xA2, 0xE7, 0xF3, 0x30, 0x9A, 0x03, 0x6B, +0x6C, 0xEE, 0x01, 0x76, 0x31, 0xE0, 0xFF, 0x6D, +0x17, 0x60, 0x02, 0x76, 0x29, 0x60, 0x40, 0x2E, +0x30, 0xF0, 0x20, 0x6E, 0x43, 0xF1, 0xC8, 0x9E, +0x83, 0xEE, 0x3A, 0x61, 0xE7, 0xF3, 0x8C, 0xA2, +0x8A, 0x34, 0x6C, 0xEC, 0xAC, 0xEC, 0xB0, 0x67, +0x00, 0x18, 0x44, 0xD9, 0x31, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF1, 0x9C, 0x9B, 0x27, 0x10, +0x30, 0xF0, 0x20, 0x6E, 0x63, 0xF3, 0xD0, 0x9E, +0x83, 0xEE, 0x26, 0x61, 0xE7, 0xF3, 0x8C, 0xA2, +0x8A, 0x34, 0x6C, 0xEC, 0xAC, 0xEC, 0xB0, 0x67, +0x00, 0x18, 0x44, 0xD9, 0x1D, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF3, 0x94, 0x9B, 0x13, 0x10, +0x30, 0xF0, 0x20, 0x6E, 0x63, 0xF3, 0xD8, 0x9E, +0x83, 0xEE, 0x12, 0x61, 0xE7, 0xF3, 0x8C, 0xA2, +0x8A, 0x34, 0x6C, 0xEC, 0xAC, 0xEC, 0xB0, 0x67, +0x00, 0x18, 0x44, 0xD9, 0x09, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF3, 0x9C, 0x9B, 0x91, 0xE1, +0xA2, 0x67, 0xD0, 0x67, 0x00, 0x18, 0x14, 0xD9, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x21, 0x6C, 0x72, 0xF5, +0x0C, 0x4C, 0x0C, 0x6E, 0x40, 0xEA, 0x00, 0x18, +0x58, 0xD9, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xB1, 0xD8, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xED, +0x00, 0x18, 0x98, 0xD8, 0x05, 0x97, 0x00, 0x6A, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xEE, +0x00, 0x18, 0x9D, 0xD8, 0x50, 0x67, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEE, +0x4C, 0xED, 0xA0, 0xC4, 0xC1, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA7, 0x67, +0x02, 0x4C, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA9, 0xF2, 0x10, 0x48, 0x4F, 0x98, 0x0A, 0xD4, +0x0B, 0xD5, 0x8E, 0xEA, 0x0F, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x00, 0x69, +0x10, 0xF0, 0x23, 0x6C, 0x04, 0xD1, 0x8D, 0xF5, +0x05, 0x4C, 0xB1, 0x67, 0x64, 0x6E, 0x01, 0x6F, +0x40, 0xEA, 0x31, 0xD8, 0x0A, 0x93, 0x30, 0xF0, +0x20, 0x6A, 0xA9, 0xF2, 0x10, 0x4A, 0x6F, 0xDA, +0x0B, 0x93, 0x70, 0xDA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x80, 0xAA, 0xEF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, +0x24, 0xF6, 0x4C, 0xCB, 0x24, 0xF6, 0x6C, 0xAB, +0x30, 0xF0, 0x20, 0x6C, 0xA9, 0xF2, 0x5E, 0xCC, +0x60, 0x6C, 0x8C, 0xEB, 0x00, 0x6A, 0x01, 0x23, +0x01, 0x6A, 0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA9, 0xF2, 0x10, 0x4B, +0x9B, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEA, 0xFE, 0x4C, +0x8C, 0xEA, 0x5B, 0xC3, 0x00, 0x6A, 0x59, 0xC3, +0x5A, 0xC3, 0x20, 0xE8, 0xFF, 0x6B, 0x8C, 0xEB, +0x0F, 0x5B, 0x00, 0x6A, 0x06, 0x61, 0x24, 0x5B, +0x78, 0x67, 0x01, 0x5B, 0x58, 0x67, 0x02, 0x6B, +0x4B, 0xE3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF6, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0x9B, 0x09, 0xF3, 0x80, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF6, 0x98, 0x9A, 0xFC, 0x6A, +0xA0, 0xA4, 0xAC, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF6, 0x5C, 0x9A, 0x0D, 0x6C, +0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, +0x40, 0x9A, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x69, 0xA9, 0xF2, 0x10, 0x49, +0x40, 0xF0, 0x8C, 0xA1, 0x00, 0x18, 0xD5, 0xD9, +0x40, 0xF0, 0x8E, 0xA1, 0x02, 0x67, 0x00, 0x18, +0xD5, 0xD9, 0x4D, 0xE8, 0xFF, 0x6B, 0x6C, 0xE8, +0x01, 0x6A, 0x4E, 0xE8, 0x01, 0x58, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x58, 0x67, 0x6C, 0xEA, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x04, 0xF6, 0x88, 0x9A, +0x64, 0x67, 0x03, 0x2C, 0xE4, 0xF5, 0x70, 0x9A, +0x06, 0x23, 0x05, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF6, 0x54, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, +0x9A, 0xA2, 0x05, 0x6B, 0x8C, 0xEB, 0x05, 0x73, +0x05, 0x60, 0x00, 0x6B, 0x04, 0xF6, 0x68, 0xDA, +0xE4, 0xF5, 0x70, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xA9, 0xF2, 0x10, 0x48, +0x20, 0xF0, 0x45, 0xA0, 0x2F, 0x2A, 0x80, 0x18, +0xF5, 0x5E, 0x40, 0xF0, 0x8C, 0xA0, 0x00, 0x69, +0x00, 0x18, 0xD5, 0xD9, 0x06, 0x2A, 0x40, 0xF0, +0x2D, 0xA0, 0x01, 0x6A, 0x1A, 0x59, 0x38, 0x67, +0x4E, 0xE9, 0x30, 0xF0, 0x20, 0x68, 0xA9, 0xF2, +0x10, 0x48, 0x40, 0xF0, 0x8E, 0xA0, 0x00, 0x18, +0xD5, 0xD9, 0x00, 0x6B, 0x1B, 0x65, 0x05, 0x2A, +0x40, 0xF0, 0x4F, 0xA0, 0x1A, 0x5A, 0x58, 0x67, +0x01, 0x72, 0x01, 0x61, 0x46, 0x21, 0x00, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x23, 0x6C, 0x6C, 0xF7, +0x0D, 0x4C, 0x00, 0x6D, 0x14, 0x6E, 0x01, 0x6F, +0x40, 0xEA, 0x37, 0x10, 0x01, 0x72, 0x35, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x78, 0x9A, +0xFF, 0x69, 0x03, 0x6C, 0x40, 0xA3, 0x30, 0xF0, +0x20, 0x68, 0x1F, 0xF7, 0x00, 0x6D, 0x2C, 0xEA, +0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF6, 0x5C, 0x9A, 0x01, 0x6B, +0x38, 0x6C, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x40, 0x9A, 0x8B, 0xF1, 0x00, 0x48, +0x40, 0xEA, 0xE0, 0xF0, 0x7A, 0xA0, 0x01, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x12, 0x2A, 0x00, 0x18, +0xEA, 0xD9, 0x0F, 0x22, 0x04, 0xF6, 0x65, 0xA0, +0x04, 0xF6, 0x46, 0xA0, 0x01, 0x4B, 0x04, 0xF6, +0x65, 0xC0, 0x04, 0xF6, 0x65, 0xA0, 0x14, 0x4A, +0x2C, 0xEA, 0x6E, 0xEA, 0x02, 0x2A, 0x04, 0xF6, +0x66, 0xC0, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x8C, 0xEA, +0x05, 0x5A, 0x0B, 0x60, 0x87, 0x42, 0x30, 0xF0, +0x20, 0x6B, 0x09, 0x4C, 0x84, 0x34, 0xA9, 0xF2, +0x10, 0x4B, 0x6D, 0xE4, 0x83, 0xAB, 0x01, 0x4C, +0x83, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0xA9, 0xF2, +0x10, 0x4B, 0x40, 0xF0, 0x88, 0xA3, 0x11, 0x24, +0x10, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, +0x90, 0x9A, 0xFF, 0x6D, 0x10, 0x6E, 0x40, 0xA4, +0xAC, 0xEA, 0xCD, 0xEA, 0xAC, 0xEA, 0x40, 0xC4, +0x40, 0xF0, 0x4A, 0xAB, 0x01, 0x4A, 0x40, 0xF0, +0x4A, 0xCB, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA9, 0xF2, +0x10, 0x4B, 0x4C, 0xEC, 0x4C, 0xED, 0x4C, 0xEE, +0xEC, 0xEA, 0x40, 0xF0, 0x8C, 0xC3, 0x40, 0xF0, +0xAD, 0xC3, 0x40, 0xF0, 0xCE, 0xC3, 0x40, 0xF0, +0x4F, 0xC3, 0x01, 0x24, 0x10, 0x2E, 0x30, 0xF0, +0x20, 0x6A, 0xA9, 0xF2, 0x10, 0x4A, 0x74, 0x9A, +0x07, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF6, +0x94, 0x9C, 0x60, 0xDC, 0x00, 0x6B, 0x74, 0xDA, +0x00, 0x6C, 0x00, 0x18, 0x5E, 0xE8, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x69, 0x2C, 0xED, +0x2C, 0xEC, 0x09, 0xD5, 0x56, 0x24, 0x30, 0xF0, +0x20, 0x68, 0xA9, 0xF2, 0x10, 0x48, 0x5B, 0xA0, +0x02, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, 0x08, 0xD3, +0x80, 0xF0, 0x02, 0x2B, 0x01, 0x6A, 0x9D, 0x67, +0x01, 0x6D, 0x06, 0x06, 0x58, 0xC4, 0x34, 0x6C, +0x80, 0x18, 0xA9, 0x6A, 0x53, 0xA0, 0x02, 0x6C, +0x01, 0x4A, 0x53, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x44, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF7, 0x5C, 0x9A, 0x9B, 0xA0, +0x60, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, 0x4A, 0x32, +0x4C, 0x33, 0x09, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x6D, 0xEA, 0x00, 0x6C, 0x5B, 0xC0, 0x00, 0x18, +0xD9, 0xDE, 0x47, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xC4, 0xF5, 0x98, 0xA2, +0x08, 0x6B, 0x00, 0x6D, 0x8D, 0xEB, 0xC4, 0xF5, +0x78, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, +0x74, 0x9A, 0x02, 0x6C, 0x64, 0x6E, 0x40, 0xA3, +0x01, 0x6F, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, +0x40, 0xC3, 0x08, 0x92, 0x10, 0xF0, 0x23, 0x6C, +0x4D, 0xF3, 0x15, 0x4C, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, +0x5B, 0xA0, 0x02, 0x6B, 0x6D, 0xEA, 0x5B, 0xC0, +0x37, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xA9, 0xF2, +0x10, 0x48, 0x7B, 0xA0, 0x06, 0x6A, 0x6C, 0xEA, +0x02, 0x72, 0x2E, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x44, 0x9A, 0x03, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF7, 0x5C, 0x9A, +0x9B, 0xA0, 0x04, 0x6D, 0x60, 0xA2, 0x11, 0x6A, +0x4B, 0xEA, 0xAC, 0xEB, 0x6A, 0x33, 0x70, 0x33, +0x8C, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x5B, 0xC0, 0x8B, 0xF1, 0x00, 0x4B, 0xC4, 0xF5, +0xD8, 0xA3, 0x09, 0x6C, 0x8B, 0xEC, 0xCC, 0xEC, +0xC4, 0xF5, 0x98, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF1, 0x94, 0x9B, 0xFD, 0x6B, 0xAD, 0xEA, +0xC0, 0xA4, 0xCC, 0xEB, 0x60, 0xC4, 0x00, 0x6C, +0x5B, 0xC0, 0x00, 0x18, 0xD9, 0xDE, 0x48, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF2, 0x10, 0x4A, +0x7A, 0xA2, 0x09, 0x94, 0x8D, 0xEB, 0x7A, 0xC2, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA9, 0xF2, 0x10, 0x48, 0x9B, 0xA0, 0x04, 0x6A, +0xFF, 0x69, 0x8C, 0xEA, 0x18, 0x2A, 0x02, 0x6B, +0x8C, 0xEB, 0x2C, 0xEB, 0x01, 0x6A, 0x14, 0x2B, +0x00, 0x18, 0xBE, 0xD9, 0xBB, 0xA0, 0x02, 0x6C, +0x01, 0x6B, 0x8B, 0xEC, 0x6C, 0xEA, 0xAC, 0xEC, +0x4D, 0xEC, 0x8C, 0xEB, 0x2C, 0xEB, 0x9B, 0xC0, +0x06, 0x23, 0x01, 0x6C, 0x02, 0x6D, 0x00, 0x18, +0x6D, 0xDA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA9, 0xF2, +0x10, 0x48, 0x00, 0x6C, 0x00, 0x18, 0xD9, 0xDE, +0x79, 0xA0, 0x01, 0x4B, 0x79, 0xC0, 0x79, 0xA0, +0x07, 0x5B, 0x26, 0x60, 0x67, 0x98, 0x6B, 0xE2, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0x60, 0x9B, +0x43, 0xEB, 0x1E, 0x61, 0x00, 0x18, 0xBE, 0xD9, 0xBB, 0xA0, 0x02, 0x6C, 0x01, 0x6B, 0x8B, 0xEC, 0x6C, 0xEA, 0xAC, 0xEC, 0x4D, 0xEC, 0x8C, 0xEB, -0x2C, 0xEB, 0x9B, 0xC0, 0x06, 0x23, 0x01, 0x6C, -0x02, 0x6D, 0x00, 0x18, 0x0E, 0xD9, 0x01, 0x6A, -0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x69, 0xF2, 0x08, 0x48, 0x00, 0x6C, -0x00, 0x18, 0x65, 0xDD, 0x79, 0xA0, 0x01, 0x4B, -0x79, 0xC0, 0x79, 0xA0, 0x07, 0x5B, 0x26, 0x60, -0x67, 0x98, 0x6B, 0xE2, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF7, 0x6C, 0x9B, 0x43, 0xEB, 0x1E, 0x61, -0x00, 0x18, 0x63, 0xD8, 0xBB, 0xA0, 0x02, 0x6C, -0x01, 0x6B, 0x8B, 0xEC, 0x6C, 0xEA, 0xAC, 0xEC, -0x4D, 0xEC, 0x8C, 0xEB, 0x9B, 0xC0, 0x0F, 0x23, -0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x23, 0x6C, -0xCC, 0xF5, 0x19, 0x4C, 0x00, 0x6D, 0x64, 0x6E, -0x01, 0x6F, 0x40, 0xEA, 0x07, 0x10, 0x00, 0x6C, -0x08, 0x6D, 0x02, 0x10, 0x00, 0x6C, 0x10, 0x6D, -0x00, 0x18, 0x0E, 0xD9, 0x07, 0x97, 0x06, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0xFF, 0x6B, 0x46, 0x67, 0x6C, 0xEF, 0xC4, 0x67, -0x04, 0xD7, 0x6C, 0xEE, 0xE2, 0x67, 0x03, 0x6C, -0x6C, 0xED, 0x80, 0x18, 0xDD, 0x67, 0x07, 0x97, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF2, -0x08, 0x4B, 0x20, 0xF0, 0x04, 0xA3, 0xFF, 0x6A, -0x8C, 0xEA, 0x4A, 0xE8, 0x1E, 0x61, 0x22, 0x10, -0x20, 0xF0, 0x45, 0xA3, 0x16, 0x22, 0x00, 0x6A, -0x07, 0x10, 0x24, 0x5A, 0x08, 0x61, 0x20, 0xF0, -0x45, 0xA3, 0x01, 0x72, 0x0E, 0x60, 0x01, 0x6A, -0x20, 0xF0, 0x45, 0xC3, 0x0B, 0x10, 0x4D, 0x9B, -0x01, 0x6C, 0x00, 0x6E, 0x8D, 0xEA, 0x02, 0x6D, -0x04, 0x6C, 0xE6, 0x67, 0x4D, 0xDB, 0x00, 0x18, -0x95, 0xD9, 0x08, 0x28, 0x00, 0x18, 0xAF, 0xD8, -0x05, 0x10, 0x0F, 0x5A, 0x20, 0xF0, 0x44, 0xC3, -0xDF, 0x61, 0xE3, 0x17, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0x69, 0xF2, 0x08, 0x49, 0x4F, 0x99, 0x80, 0xF0, -0x05, 0x22, 0x7D, 0x67, 0x10, 0x6A, 0x50, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF1, 0x10, 0x4A, -0xE7, 0x41, 0x82, 0x67, 0x00, 0x6D, 0x10, 0x6E, -0x31, 0x4F, 0x06, 0xD2, 0x00, 0x18, 0x45, 0xD8, -0x7D, 0x67, 0x10, 0xA3, 0xFF, 0x6A, 0x01, 0x6B, -0x02, 0x48, 0x4C, 0xE8, 0x4F, 0x99, 0x6C, 0xEA, -0x10, 0x22, 0x7D, 0x67, 0x08, 0x6A, 0x50, 0xC3, -0x06, 0x92, 0x01, 0x6D, 0x08, 0x6E, 0x11, 0xE2, -0xF1, 0x67, 0x00, 0x18, 0x45, 0xD8, 0x7D, 0x67, -0x50, 0xA3, 0x02, 0x4A, 0x41, 0xE0, 0xFF, 0x6A, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6F, 0x69, 0xF2, -0x08, 0x4F, 0x4F, 0x9F, 0x02, 0x6B, 0x6C, 0xEA, -0x13, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x08, 0x6A, -0x7D, 0x67, 0xC9, 0xF1, 0x10, 0x4C, 0x50, 0xC3, -0x11, 0xE4, 0x02, 0x6D, 0x08, 0x6E, 0x08, 0x4F, -0x00, 0x18, 0x45, 0xD8, 0x7D, 0x67, 0x50, 0xA3, -0x02, 0x4A, 0x41, 0xE0, 0xFF, 0x6A, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6F, 0x69, 0xF2, 0x08, 0x4F, -0x4F, 0x9F, 0x04, 0x6B, 0x6C, 0xEA, 0x13, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x14, 0x6A, 0x7D, 0x67, -0xC9, 0xF1, 0x10, 0x4C, 0x50, 0xC3, 0x11, 0xE4, -0x03, 0x6D, 0x14, 0x6E, 0x10, 0x4F, 0x00, 0x18, -0x45, 0xD8, 0x7D, 0x67, 0x50, 0xA3, 0x02, 0x4A, -0x41, 0xE0, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xA9, 0xF2, 0x44, 0x9A, 0x08, 0x6B, -0x6C, 0xEA, 0x16, 0x22, 0x04, 0x04, 0x00, 0x18, -0x8D, 0xD3, 0x7D, 0x67, 0xD0, 0xA3, 0x10, 0x26, -0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xC9, 0xF1, -0x10, 0x4C, 0x11, 0xE4, 0xE2, 0x67, 0x04, 0x6D, -0x00, 0x18, 0x45, 0xD8, 0x7D, 0x67, 0x50, 0xA3, -0x02, 0x4A, 0x41, 0xE0, 0xFF, 0x6A, 0x4C, 0xE8, -0x09, 0x20, 0x30, 0xF0, 0x20, 0x6E, 0x05, 0x6C, -0x03, 0x6D, 0xC9, 0xF1, 0x10, 0x4E, 0xF0, 0x67, -0x00, 0x18, 0x95, 0xD9, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x69, 0xF2, 0x08, 0x48, -0x5D, 0xA8, 0x01, 0x4A, 0x5D, 0xC8, 0x4F, 0x98, -0x20, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x65, 0xDD, -0x22, 0x67, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x23, 0x6C, 0x0D, 0xF0, 0x09, 0x4C, 0x00, 0x6D, -0x64, 0x6E, 0x01, 0x6F, 0x40, 0xEA, 0x71, 0x98, -0xE0, 0xF3, 0x08, 0x6A, 0x90, 0x98, 0x6F, 0xE1, -0x5B, 0xEB, 0x01, 0x2A, 0xE5, 0xE8, 0x12, 0xEA, -0x83, 0xEA, 0x03, 0x61, 0x00, 0x18, 0xB7, 0xD9, -0x31, 0xD8, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFE, 0x65, 0xFF, 0xF7, -0x1F, 0x6E, 0xEC, 0xEE, 0xFF, 0x6B, 0x24, 0x46, -0x6C, 0xE9, 0x30, 0xF0, 0x20, 0x68, 0x97, 0x59, -0x08, 0xD4, 0x6C, 0xED, 0xA9, 0xF0, 0x00, 0x48, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0xA0, 0xC0, 0xC1, 0xC8, 0x84, 0x40, -0xBF, 0x67, 0x6C, 0xEE, 0x40, 0xEA, 0x05, 0x10, -0x05, 0x6A, 0x40, 0xC0, 0x00, 0x6A, 0x41, 0xC8, -0x04, 0x69, 0x08, 0x94, 0xB0, 0x67, 0xD1, 0x67, -0x80, 0x18, 0x1F, 0x68, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x40, 0xA6, 0x07, 0x27, -0x7D, 0x67, 0x03, 0x6D, 0x04, 0x06, 0x01, 0x6F, -0x50, 0xC3, 0x00, 0x18, 0x1B, 0xDA, 0x07, 0x97, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0xAC, 0xEA, -0x60, 0xA6, 0x38, 0x27, 0x9D, 0x67, 0x70, 0xC4, -0x70, 0xA4, 0x2E, 0x2B, 0x09, 0x77, 0x04, 0x60, -0x00, 0x6F, 0xC7, 0x67, 0x06, 0x6D, 0x26, 0x10, -0x01, 0x72, 0x04, 0x60, 0x00, 0x6F, 0xC7, 0x67, -0x04, 0x6D, 0x20, 0x10, 0x43, 0xA6, 0x64, 0xA6, -0xA7, 0xA6, 0x40, 0x32, 0x40, 0x32, 0x00, 0xF6, -0x60, 0x33, 0x4D, 0xEB, 0x41, 0xA6, 0xA0, 0x35, -0xA0, 0x35, 0x4D, 0xEB, 0x48, 0xA6, 0x82, 0xA6, -0x00, 0xF6, 0x40, 0x32, 0xAD, 0xEA, 0xA5, 0xA6, -0x80, 0x34, 0x6D, 0xEC, 0xAD, 0xEA, 0xA6, 0xA6, -0xA0, 0x35, 0x4D, 0xED, 0x00, 0x18, 0x4E, 0xD8, -0x30, 0xF0, 0x20, 0x6E, 0x10, 0x6F, 0xA9, 0xF2, -0x00, 0x4E, 0x00, 0x6D, 0x90, 0x67, 0x04, 0x10, -0x90, 0x67, 0x03, 0x6D, 0x04, 0x06, 0x01, 0x6F, -0x00, 0x18, 0x1B, 0xDA, 0x07, 0x97, 0x06, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x0A, 0xD4, 0x40, 0xA6, -0x72, 0x27, 0x71, 0x22, 0x01, 0x6B, 0x4E, 0xEB, -0x26, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF2, -0x08, 0x4A, 0x40, 0xF0, 0x88, 0xA2, 0x0D, 0x2C, -0x01, 0x6B, 0x40, 0xF0, 0x68, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF7, 0x70, 0x9A, 0xFF, 0x6C, -0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, -0x08, 0x10, 0x40, 0xF0, 0x68, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF7, 0x70, 0x9A, 0xBF, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6E, 0x0A, 0x94, 0x00, 0x6D, 0xA9, 0xF2, -0x10, 0x4E, 0x01, 0x6F, 0x46, 0x10, 0x02, 0x72, -0x46, 0x61, 0x23, 0x6A, 0x30, 0xF0, 0x20, 0x68, -0x69, 0xF2, 0x08, 0x48, 0x30, 0xF0, 0x20, 0x6C, -0x4B, 0xEA, 0x29, 0xF1, 0x58, 0xC4, 0x40, 0xF0, -0x48, 0xA0, 0x29, 0xF1, 0x18, 0x4C, 0xA7, 0x40, -0x41, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x26, 0x48, 0x02, 0x4C, 0x43, 0x4D, -0x02, 0x6E, 0x40, 0xEA, 0x04, 0xD0, 0x04, 0x6F, -0x00, 0x68, 0x04, 0x93, 0x40, 0xAB, 0x17, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x29, 0xF1, 0x18, 0x4C, -0x12, 0x6B, 0xE9, 0xE4, 0x6B, 0xEB, 0x60, 0xC2, -0x01, 0xC2, 0x22, 0x47, 0xFF, 0x6A, 0x4C, 0xE9, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0x04, 0x95, 0x31, 0xE4, 0x02, 0x6E, 0x40, 0xEA, -0xE2, 0x41, 0xFF, 0x6B, 0x6C, 0xEF, 0xFF, 0x6A, -0x01, 0x48, 0x4C, 0xE8, 0x04, 0x92, 0x05, 0x70, -0x02, 0x4A, 0x04, 0xD2, 0xDE, 0x61, 0x0A, 0x94, -0x30, 0xF0, 0x20, 0x6E, 0x00, 0x6D, 0x29, 0xF1, -0x18, 0x4E, 0x00, 0x18, 0x1B, 0xDA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0xFF, 0x6B, -0x05, 0x67, 0x6C, 0xE8, 0xA6, 0x67, 0x6C, 0xED, -0x01, 0x70, 0x7D, 0x67, 0x47, 0x67, 0xF8, 0xAB, -0x08, 0x60, 0x03, 0x20, 0xFE, 0x70, 0x09, 0x60, -0x0C, 0x10, 0xC2, 0x67, 0x00, 0x18, 0x39, 0xDA, -0x0F, 0x10, 0xC2, 0x67, 0x00, 0x18, 0x32, 0xDA, -0x0B, 0x10, 0xC2, 0x67, 0x00, 0x18, 0x5B, 0xDA, -0x07, 0x10, 0x5D, 0x67, 0x10, 0xC2, 0x02, 0x6D, -0x04, 0x06, 0x01, 0x6F, 0x00, 0x18, 0x1B, 0xDA, +0x9B, 0xC0, 0x0F, 0x23, 0x00, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, +0x10, 0xF0, 0x23, 0x6C, 0x4D, 0xF3, 0x15, 0x4C, +0x00, 0x6D, 0x64, 0x6E, 0x01, 0x6F, 0x40, 0xEA, +0x07, 0x10, 0x00, 0x6C, 0x08, 0x6D, 0x02, 0x10, +0x00, 0x6C, 0x10, 0x6D, 0x00, 0x18, 0x6D, 0xDA, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, -0x64, 0x67, 0x01, 0x6A, 0x69, 0xF2, 0x08, 0x4B, -0x10, 0xF0, 0x23, 0x6D, 0x69, 0xF2, 0x48, 0xC4, -0x20, 0xF0, 0x58, 0xC3, 0x48, 0xC3, 0x50, 0xC3, -0x03, 0x6C, 0x6D, 0xF2, 0x09, 0x4D, 0x00, 0x18, -0x1A, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, -0x20, 0x10, 0xE0, 0xF3, 0x08, 0x70, 0x13, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, -0x80, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0x00, 0x6A, 0x13, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x58, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0xD8, 0x2A, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF3, 0x68, 0x9B, 0x03, 0xF7, -0x98, 0x9C, 0x6D, 0xE5, 0x91, 0xE5, 0x00, 0x6E, -0xC0, 0xDB, 0x04, 0x4B, 0x8A, 0xEB, 0xFB, 0x61, -0xE7, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x58, 0x9A, 0x10, 0x6C, -0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, -0x48, 0x9A, 0x49, 0xE5, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF7, 0x5C, 0x9A, 0xFF, 0x6B, -0x55, 0xE5, 0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, -0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6B, 0x46, 0x67, +0x6C, 0xEF, 0xC4, 0x67, 0x04, 0xD7, 0x6C, 0xEE, +0xE2, 0x67, 0x03, 0x6C, 0x6C, 0xED, 0x80, 0x18, +0x68, 0x69, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0xA9, 0xF2, 0x10, 0x4B, 0x20, 0xF0, +0x04, 0xA3, 0xFF, 0x6A, 0x8C, 0xEA, 0x4A, 0xE8, +0x1E, 0x61, 0x22, 0x10, 0x20, 0xF0, 0x45, 0xA3, +0x16, 0x22, 0x00, 0x6A, 0x07, 0x10, 0x24, 0x5A, +0x08, 0x61, 0x20, 0xF0, 0x45, 0xA3, 0x01, 0x72, +0x0E, 0x60, 0x01, 0x6A, 0x20, 0xF0, 0x45, 0xC3, +0x0B, 0x10, 0x4D, 0x9B, 0x01, 0x6C, 0x00, 0x6E, +0x8D, 0xEA, 0x02, 0x6D, 0x04, 0x6C, 0xE6, 0x67, +0x4D, 0xDB, 0x00, 0x18, 0xF4, 0xDA, 0x08, 0x28, +0x00, 0x18, 0x0A, 0xDA, 0x05, 0x10, 0x0F, 0x5A, +0x20, 0xF0, 0x44, 0xC3, 0xDF, 0x61, 0xE3, 0x17, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x69, 0xA9, 0xF2, 0x10, 0x49, +0x4F, 0x99, 0x80, 0xF0, 0x05, 0x22, 0x7D, 0x67, +0x10, 0x6A, 0x50, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x09, 0xF2, 0x18, 0x4A, 0xE7, 0x41, 0x82, 0x67, +0x00, 0x6D, 0x10, 0x6E, 0x31, 0x4F, 0x06, 0xD2, +0x00, 0x18, 0xA0, 0xD9, 0x7D, 0x67, 0x10, 0xA3, +0xFF, 0x6A, 0x01, 0x6B, 0x02, 0x48, 0x4C, 0xE8, +0x4F, 0x99, 0x6C, 0xEA, 0x10, 0x22, 0x7D, 0x67, +0x08, 0x6A, 0x50, 0xC3, 0x06, 0x92, 0x01, 0x6D, +0x08, 0x6E, 0x11, 0xE2, 0xF1, 0x67, 0x00, 0x18, +0xA0, 0xD9, 0x7D, 0x67, 0x50, 0xA3, 0x02, 0x4A, +0x41, 0xE0, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6F, 0xA9, 0xF2, 0x10, 0x4F, 0x4F, 0x9F, +0x02, 0x6B, 0x6C, 0xEA, 0x13, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x08, 0x6A, 0x7D, 0x67, 0x09, 0xF2, +0x18, 0x4C, 0x50, 0xC3, 0x11, 0xE4, 0x02, 0x6D, +0x08, 0x6E, 0x08, 0x4F, 0x00, 0x18, 0xA0, 0xD9, +0x7D, 0x67, 0x50, 0xA3, 0x02, 0x4A, 0x41, 0xE0, +0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6F, +0xA9, 0xF2, 0x10, 0x4F, 0x4F, 0x9F, 0x04, 0x6B, +0x6C, 0xEA, 0x13, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x14, 0x6A, 0x7D, 0x67, 0x09, 0xF2, 0x18, 0x4C, +0x50, 0xC3, 0x11, 0xE4, 0x03, 0x6D, 0x14, 0x6E, +0x10, 0x4F, 0x00, 0x18, 0xA0, 0xD9, 0x7D, 0x67, +0x50, 0xA3, 0x02, 0x4A, 0x41, 0xE0, 0xFF, 0x6A, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF2, +0x4C, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x16, 0x22, +0x04, 0x04, 0x00, 0x18, 0xDD, 0xD4, 0x7D, 0x67, +0xD0, 0xA3, 0x10, 0x26, 0x0F, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x09, 0xF2, 0x18, 0x4C, 0x11, 0xE4, +0xE2, 0x67, 0x04, 0x6D, 0x00, 0x18, 0xA0, 0xD9, +0x7D, 0x67, 0x50, 0xA3, 0x02, 0x4A, 0x41, 0xE0, +0xFF, 0x6A, 0x4C, 0xE8, 0x09, 0x20, 0x30, 0xF0, +0x20, 0x6E, 0x05, 0x6C, 0x03, 0x6D, 0x09, 0xF2, +0x18, 0x4E, 0xF0, 0x67, 0x00, 0x18, 0xF4, 0xDA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA9, 0xF2, 0x10, 0x48, 0x5D, 0xA8, 0x01, 0x4A, +0x5D, 0xC8, 0x4F, 0x98, 0x20, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xD9, 0xDE, 0x22, 0x67, 0x00, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x23, 0x6C, 0x8D, 0xF5, +0x05, 0x4C, 0x00, 0x6D, 0x64, 0x6E, 0x01, 0x6F, +0x40, 0xEA, 0x71, 0x98, 0xE0, 0xF3, 0x08, 0x6A, +0x90, 0x98, 0x6F, 0xE1, 0x5B, 0xEB, 0x01, 0x2A, +0xE5, 0xE8, 0x12, 0xEA, 0x83, 0xEA, 0x03, 0x61, +0x00, 0x18, 0x16, 0xDB, 0x31, 0xD8, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF2, 0x7D, 0xA2, -0x08, 0xD4, 0x30, 0xF0, 0x20, 0x69, 0x61, 0xC5, -0x01, 0x4B, 0xA9, 0xF2, 0x7D, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF3, 0x88, 0x9B, 0x08, 0x93, -0x80, 0xF2, 0x4C, 0x99, 0x02, 0x6E, 0x91, 0xE3, -0x05, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF7, 0x80, 0x9B, 0x08, 0x93, 0xCE, 0xA0, -0x80, 0xF2, 0x4C, 0x99, 0xA2, 0x40, 0x91, 0xE3, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x24, 0x67, 0x00, 0x18, -0xBA, 0xDA, 0x00, 0x6B, 0x46, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF3, 0x40, 0x9A, 0xFF, 0xF7, -0x1F, 0x6E, 0xFF, 0x6F, 0x00, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0x4C, 0x9A, 0x10, 0x6C, -0x8B, 0xEC, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA1, 0x40, 0x23, 0xF7, 0x44, 0x9A, 0x65, 0x67, -0xCC, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF7, 0x48, 0x9A, 0x60, 0xA2, 0xFA, 0x65, -0xA2, 0x32, 0xEC, 0xEB, 0x8C, 0xEB, 0x42, 0x32, -0x6D, 0xEA, 0xEC, 0xEA, 0x7F, 0x67, 0x40, 0xC3, -0x87, 0xA9, 0x02, 0x4C, 0xCC, 0xEC, 0x00, 0x18, -0xD3, 0xDA, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, -0x00, 0x18, 0xEA, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x58, 0x9A, 0x01, 0x6B, 0x80, 0xF2, -0x16, 0x6C, 0x60, 0xC2, 0x06, 0x02, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, -0x01, 0x6D, 0x00, 0x6E, 0x04, 0xF7, 0x10, 0x6F, -0x40, 0xEA, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, -0x62, 0x33, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x43, 0x67, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xA0, 0xF6, -0x82, 0xA0, 0xA0, 0xF6, 0x43, 0xA0, 0x8E, 0xEA, -0x44, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x78, 0x9B, 0x40, 0x9A, 0x6C, 0xEA, 0x39, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x90, 0x34, 0xCB, 0xF2, -0x1A, 0x4A, 0x91, 0xE2, 0x00, 0x18, 0xFF, 0xDA, -0x1D, 0x22, 0xA0, 0xF6, 0x42, 0xA0, 0x01, 0x4A, -0xA0, 0xF6, 0x42, 0xC0, 0xA0, 0xF6, 0x62, 0xA0, -0xA0, 0xF6, 0x43, 0xA0, 0x6E, 0xEA, 0x06, 0x22, -0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, -0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF6, 0x62, 0xA2, -0x50, 0x6C, 0x8E, 0xEB, 0x09, 0x2B, 0xA0, 0xF6, -0x62, 0xC2, 0x06, 0x10, 0xA0, 0xF0, 0x44, 0x98, -0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x40, 0xF1, 0x96, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, -0x04, 0x23, 0x40, 0xF1, 0x77, 0xA2, 0x43, 0xF6, -0x68, 0xC2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, -0xA4, 0x67, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, -0xA0, 0xF6, 0x42, 0xA8, 0x09, 0xF7, 0x00, 0x72, -0x07, 0x60, 0xA0, 0xF6, 0x42, 0xA0, 0xA0, 0xF6, -0x83, 0xA0, 0xFF, 0x4A, 0x8E, 0xEA, 0x13, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, -0x00, 0xF2, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, -0xA3, 0xF3, 0x60, 0xDA, 0x18, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, -0x4C, 0x9A, 0xCB, 0xF2, 0x1A, 0x4B, 0x90, 0x34, -0x91, 0xE3, 0x10, 0x6E, 0x40, 0xEA, 0xA0, 0xF6, -0x43, 0xA0, 0x50, 0x6B, 0x01, 0x4A, 0xA0, 0xF6, -0x43, 0xC0, 0xA0, 0xF6, 0x43, 0xA0, 0x6E, 0xEA, -0x02, 0x2A, 0xA0, 0xF6, 0x43, 0xC0, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xA9, 0xF2, 0x5C, 0xA3, 0xFF, 0x6F, -0xE0, 0xF0, 0xC7, 0xA5, 0x41, 0xC5, 0x43, 0xA5, -0xA9, 0xF2, 0x7C, 0xA3, 0x03, 0x4A, 0xEC, 0xEA, -0x09, 0x10, 0xED, 0x42, 0xFF, 0x68, 0x0C, 0xEF, -0xFD, 0xE5, 0x64, 0xC7, 0xE6, 0xA7, 0x03, 0x4F, -0xE9, 0xE2, 0x0C, 0xEA, 0xEF, 0x46, 0xE2, 0xEA, -0xF4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF2, -0x7C, 0xA2, 0x01, 0x4B, 0xA9, 0xF2, 0x7C, 0xC2, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, 0x68, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0x71, 0xE4, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x24, 0x67, 0x00, 0x18, -0xBA, 0xDA, 0x00, 0x6B, 0x3C, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF3, 0x40, 0x9A, 0x0F, 0x6C, -0xFF, 0xF7, 0x1F, 0x6B, 0x00, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0x4C, 0x9A, 0x4C, 0xE8, -0xA1, 0x40, 0xA2, 0x32, 0x42, 0x32, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF7, 0x84, 0x9C, -0xAC, 0xEB, 0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF7, 0x68, 0x9B, 0x40, 0xC3, 0xE0, 0xF0, -0x87, 0xA1, 0x00, 0x18, 0xD3, 0xDA, 0x87, 0x40, -0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0x7A, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x58, 0x9A, +0xFE, 0x65, 0xFF, 0xF7, 0x1F, 0x6E, 0xEC, 0xEE, +0xFF, 0x6B, 0x24, 0x46, 0x6C, 0xE9, 0x30, 0xF0, +0x20, 0x68, 0x97, 0x59, 0x08, 0xD4, 0x6C, 0xED, +0xE9, 0xF0, 0x08, 0x48, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA0, 0xC0, +0xC1, 0xC8, 0x84, 0x40, 0xBF, 0x67, 0x6C, 0xEE, +0x40, 0xEA, 0x05, 0x10, 0x05, 0x6A, 0x40, 0xC0, +0x00, 0x6A, 0x41, 0xC8, 0x04, 0x69, 0x08, 0x94, +0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, 0xAA, 0x69, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x40, 0xA6, 0x07, 0x27, 0x7D, 0x67, 0x03, 0x6D, +0x04, 0x06, 0x01, 0x6F, 0x50, 0xC3, 0x00, 0x18, +0x7A, 0xDB, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0xFF, 0x6A, +0x04, 0x67, 0xAC, 0xEA, 0x60, 0xA6, 0x38, 0x27, +0x9D, 0x67, 0x70, 0xC4, 0x70, 0xA4, 0x2E, 0x2B, +0x09, 0x77, 0x04, 0x60, 0x00, 0x6F, 0xC7, 0x67, +0x06, 0x6D, 0x26, 0x10, 0x01, 0x72, 0x04, 0x60, +0x00, 0x6F, 0xC7, 0x67, 0x04, 0x6D, 0x20, 0x10, +0x43, 0xA6, 0x64, 0xA6, 0xA7, 0xA6, 0x40, 0x32, +0x40, 0x32, 0x00, 0xF6, 0x60, 0x33, 0x4D, 0xEB, +0x41, 0xA6, 0xA0, 0x35, 0xA0, 0x35, 0x4D, 0xEB, +0x48, 0xA6, 0x82, 0xA6, 0x00, 0xF6, 0x40, 0x32, +0xAD, 0xEA, 0xA5, 0xA6, 0x80, 0x34, 0x6D, 0xEC, +0xAD, 0xEA, 0xA6, 0xA6, 0xA0, 0x35, 0x4D, 0xED, +0x00, 0x18, 0xA9, 0xD9, 0x30, 0xF0, 0x20, 0x6E, +0x10, 0x6F, 0xE9, 0xF2, 0x08, 0x4E, 0x00, 0x6D, +0x90, 0x67, 0x04, 0x10, 0x90, 0x67, 0x03, 0x6D, +0x04, 0x06, 0x01, 0x6F, 0x00, 0x18, 0x7A, 0xDB, +0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x0A, 0xD4, 0x40, 0xA6, 0x72, 0x27, 0x71, 0x22, +0x01, 0x6B, 0x4E, 0xEB, 0x26, 0x2B, 0x30, 0xF0, +0x20, 0x6A, 0xA9, 0xF2, 0x10, 0x4A, 0x40, 0xF0, +0x88, 0xA2, 0x0D, 0x2C, 0x01, 0x6B, 0x40, 0xF0, +0x68, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, +0x64, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x08, 0x10, 0x40, 0xF0, +0x68, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, +0x64, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6E, 0x0A, 0x94, +0x00, 0x6D, 0xE9, 0xF2, 0x18, 0x4E, 0x01, 0x6F, +0x46, 0x10, 0x02, 0x72, 0x46, 0x61, 0x23, 0x6A, +0x30, 0xF0, 0x20, 0x68, 0xA9, 0xF2, 0x10, 0x48, +0x30, 0xF0, 0x20, 0x6C, 0x4B, 0xEA, 0x89, 0xF1, +0x40, 0xC4, 0x40, 0xF0, 0x48, 0xA0, 0x89, 0xF1, +0x00, 0x4C, 0xA7, 0x40, 0x41, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x26, 0x48, +0x02, 0x4C, 0x43, 0x4D, 0x02, 0x6E, 0x40, 0xEA, +0x04, 0xD0, 0x04, 0x6F, 0x00, 0x68, 0x04, 0x93, +0x40, 0xAB, 0x17, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x89, 0xF1, 0x00, 0x4C, 0x12, 0x6B, 0xE9, 0xE4, +0x6B, 0xEB, 0x60, 0xC2, 0x01, 0xC2, 0x22, 0x47, +0xFF, 0x6A, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x04, 0x95, 0x31, 0xE4, +0x02, 0x6E, 0x40, 0xEA, 0xE2, 0x41, 0xFF, 0x6B, +0x6C, 0xEF, 0xFF, 0x6A, 0x01, 0x48, 0x4C, 0xE8, +0x04, 0x92, 0x05, 0x70, 0x02, 0x4A, 0x04, 0xD2, +0xDE, 0x61, 0x0A, 0x94, 0x30, 0xF0, 0x20, 0x6E, +0x00, 0x6D, 0x89, 0xF1, 0x00, 0x4E, 0x00, 0x18, +0x7A, 0xDB, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0xFF, 0x6B, 0x05, 0x67, 0x6C, 0xE8, +0xA6, 0x67, 0x6C, 0xED, 0x01, 0x70, 0x7D, 0x67, +0x47, 0x67, 0xF8, 0xAB, 0x08, 0x60, 0x03, 0x20, +0xFE, 0x70, 0x09, 0x60, 0x0C, 0x10, 0xC2, 0x67, +0x00, 0x18, 0x98, 0xDB, 0x0F, 0x10, 0xC2, 0x67, +0x00, 0x18, 0x91, 0xDB, 0x0B, 0x10, 0xC2, 0x67, +0x00, 0x18, 0xBA, 0xDB, 0x07, 0x10, 0x5D, 0x67, +0x10, 0xC2, 0x02, 0x6D, 0x04, 0x06, 0x01, 0x6F, +0x00, 0x18, 0x7A, 0xDB, 0x07, 0x97, 0x06, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0x67, 0x01, 0x6A, +0xA9, 0xF2, 0x10, 0x4B, 0x10, 0xF0, 0x23, 0x6D, +0xA9, 0xF2, 0x50, 0xC4, 0x20, 0xF0, 0x58, 0xC3, +0x48, 0xC3, 0x50, 0xC3, 0x03, 0x6C, 0xED, 0xF7, +0x05, 0x4D, 0x00, 0x18, 0x1A, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x68, 0x20, 0x10, 0xE0, 0xF3, +0x08, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x74, 0x9A, 0x80, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, 0x00, 0x6A, +0x13, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF2, 0x40, 0x9A, 0x60, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0xD8, 0x2A, 0x01, 0x6A, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF3, +0x6C, 0x9B, 0x23, 0xF7, 0x8C, 0x9C, 0x6D, 0xE5, +0x91, 0xE5, 0x00, 0x6E, 0xC0, 0xDB, 0x04, 0x4B, +0x8A, 0xEB, 0xFB, 0x61, 0xE7, 0xF7, 0x1F, 0x6B, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x5C, 0x9A, 0x10, 0x6C, 0x4D, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF3, 0x4C, 0x9A, 0x49, 0xE5, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, +0x50, 0x9A, 0xFF, 0x6B, 0x55, 0xE5, 0x40, 0xA5, +0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC5, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x09, 0xF3, 0x65, 0xA2, 0x08, 0xD4, 0x30, 0xF0, +0x20, 0x69, 0x61, 0xC5, 0x01, 0x4B, 0x09, 0xF3, +0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, +0x8C, 0x9B, 0x08, 0x93, 0x80, 0xF2, 0x4C, 0x99, +0x02, 0x6E, 0x91, 0xE3, 0x05, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0x94, 0x9B, +0x08, 0x93, 0xCE, 0xA0, 0x80, 0xF2, 0x4C, 0x99, +0xA2, 0x40, 0x91, 0xE3, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x24, 0x67, 0x00, 0x18, 0x19, 0xDC, 0x00, 0x6B, +0x46, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, +0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x6E, 0xFF, 0x6F, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, +0x50, 0x9A, 0x10, 0x6C, 0x8B, 0xEC, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0x40, 0x23, 0xF7, +0x58, 0x9A, 0x65, 0x67, 0xCC, 0xEB, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x5C, 0x9A, +0x60, 0xA2, 0xFA, 0x65, 0xA2, 0x32, 0xEC, 0xEB, +0x8C, 0xEB, 0x42, 0x32, 0x6D, 0xEA, 0xEC, 0xEA, +0x7F, 0x67, 0x40, 0xC3, 0x87, 0xA9, 0x02, 0x4C, +0xCC, 0xEC, 0x00, 0x18, 0x32, 0xDC, 0x87, 0x40, +0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0x49, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x40, 0x9A, 0x01, 0x6B, 0x80, 0xF2, 0x16, 0x6C, 0x60, 0xC2, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x01, 0x6D, 0x00, 0x6E, @@ -22109,82 +22295,154 @@ u8 array_mp_8822c_fw_nic[] = { 0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x43, 0x67, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x22, 0xF5, 0x67, 0xA0, 0x22, 0xF5, -0x48, 0xA0, 0x6E, 0xEA, 0x4B, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF7, 0x4C, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF2, 0x98, 0x9C, 0x40, 0x9A, -0x8C, 0xEA, 0x40, 0x2A, 0xE8, 0x6A, 0x58, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF7, 0x1C, 0x4A, -0x12, 0xEB, 0x71, 0xE2, 0x00, 0x18, 0x93, 0xDB, -0x07, 0x2A, 0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, -0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x2E, 0x10, -0x22, 0xF5, 0x47, 0xA0, 0x10, 0x6B, 0x01, 0x4A, -0x22, 0xF5, 0x47, 0xC0, 0x22, 0xF5, 0x47, 0xA0, -0x6E, 0xEA, 0x02, 0x2A, 0x22, 0xF5, 0x47, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x22, 0xF5, 0x87, 0xA2, 0x22, 0xF5, 0x68, 0xA2, -0x8E, 0xEB, 0x07, 0x23, 0xA0, 0xF0, 0x64, 0x9A, -0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, -0x04, 0x10, 0x22, 0xF5, 0x86, 0xC2, 0x22, 0xF5, -0x64, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x40, 0xF1, 0x96, 0xA2, 0x01, 0x6B, -0x8C, 0xEB, 0x04, 0x23, 0x40, 0xF1, 0x77, 0xA2, -0x43, 0xF6, 0x68, 0xC2, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x22, 0xF5, 0x67, 0xA2, -0xA4, 0x67, 0x04, 0x2B, 0x22, 0xF5, 0x48, 0xA2, -0x0F, 0x72, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x22, 0xF5, 0x47, 0xA0, -0x22, 0xF5, 0x68, 0xA0, 0xFF, 0x4A, 0x6E, 0xEA, -0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF2, -0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0xAC, 0x10, 0x23, 0xA5, 0xFF, 0xF7, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xA0, 0xF6, 0x84, 0xA0, 0xA0, 0xF6, +0x45, 0xA0, 0x8E, 0xEA, 0x44, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF7, 0x40, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF2, 0x7C, 0x9B, 0x40, 0x9A, +0x6C, 0xEA, 0x39, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x90, 0x34, 0x2B, 0xF3, 0x04, 0x4A, 0x91, 0xE2, +0x00, 0x18, 0x5E, 0xDC, 0x1D, 0x22, 0xA0, 0xF6, +0x44, 0xA0, 0x01, 0x4A, 0xA0, 0xF6, 0x44, 0xC0, +0xA0, 0xF6, 0x64, 0xA0, 0xA0, 0xF6, 0x45, 0xA0, +0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, +0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA0, 0xF6, 0x64, 0xA2, 0x50, 0x6C, 0x8E, 0xEB, +0x09, 0x2B, 0xA0, 0xF6, 0x64, 0xC2, 0x06, 0x10, +0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, +0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x40, 0xF1, 0x96, 0xA2, +0x01, 0x6B, 0x8C, 0xEB, 0x04, 0x23, 0x40, 0xF1, +0x77, 0xA2, 0x43, 0xF6, 0x6C, 0xC2, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xA0, 0xF0, +0x44, 0x98, 0x04, 0x6B, 0xA4, 0x67, 0x6D, 0xEA, +0xA0, 0xF0, 0x44, 0xD8, 0xA0, 0xF6, 0x44, 0xA8, +0x09, 0xF7, 0x00, 0x72, 0x07, 0x60, 0xA0, 0xF6, +0x44, 0xA0, 0xA0, 0xF6, 0x85, 0xA0, 0xFF, 0x4A, +0x8E, 0xEA, 0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x74, 0x9A, 0x00, 0xF2, 0x00, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, +0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, +0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9A, 0x2B, 0xF3, +0x04, 0x4B, 0x90, 0x34, 0x91, 0xE3, 0x10, 0x6E, +0x40, 0xEA, 0xA0, 0xF6, 0x45, 0xA0, 0x50, 0x6B, +0x01, 0x4A, 0xA0, 0xF6, 0x45, 0xC0, 0xA0, 0xF6, +0x45, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, 0xA0, 0xF6, +0x45, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x09, 0xF3, +0x44, 0xA3, 0xFF, 0x6F, 0xE0, 0xF0, 0xC7, 0xA5, +0x41, 0xC5, 0x43, 0xA5, 0x09, 0xF3, 0x64, 0xA3, +0x03, 0x4A, 0xEC, 0xEA, 0x09, 0x10, 0xED, 0x42, +0xFF, 0x68, 0x0C, 0xEF, 0xFD, 0xE5, 0x64, 0xC7, +0xE6, 0xA7, 0x03, 0x4F, 0xE9, 0xE2, 0x0C, 0xEA, +0xEF, 0x46, 0xE2, 0xEA, 0xF4, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0x64, 0xA2, 0x01, 0x4B, +0x09, 0xF3, 0x64, 0xC2, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF3, 0x6C, 0x9B, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x71, 0xE4, 0x40, 0xEA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x24, 0x67, 0x00, 0x18, 0x19, 0xDC, 0x00, 0x6B, +0x3C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, +0x44, 0x9A, 0x0F, 0x6C, 0xFF, 0xF7, 0x1F, 0x6B, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, +0x50, 0x9A, 0x4C, 0xE8, 0xA1, 0x40, 0xA2, 0x32, +0x42, 0x32, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x23, 0xF7, 0x98, 0x9C, 0xAC, 0xEB, 0x60, 0xCC, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0x7C, 0x9B, +0x40, 0xC3, 0xE0, 0xF0, 0x87, 0xA1, 0x00, 0x18, +0x32, 0xDC, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, +0x00, 0x18, 0xD9, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF2, 0x40, 0x9A, 0x01, 0x6B, 0x80, 0xF2, +0x16, 0x6C, 0x60, 0xC2, 0x06, 0x02, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, +0x01, 0x6D, 0x00, 0x6E, 0x04, 0xF7, 0x10, 0x6F, +0x40, 0xEA, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, +0x62, 0x33, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x43, 0x67, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x22, 0xF5, +0x69, 0xA0, 0x22, 0xF5, 0x4A, 0xA0, 0x6E, 0xEA, +0x4B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, +0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, +0x9C, 0x9C, 0x40, 0x9A, 0x8C, 0xEA, 0x40, 0x2A, +0xE8, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x2C, 0xF0, 0x06, 0x4A, 0x12, 0xEB, 0x71, 0xE2, +0x00, 0x18, 0xF2, 0xDC, 0x07, 0x2A, 0xA0, 0xF0, +0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, +0x44, 0xD8, 0x2E, 0x10, 0x22, 0xF5, 0x49, 0xA0, +0x10, 0x6B, 0x01, 0x4A, 0x22, 0xF5, 0x49, 0xC0, +0x22, 0xF5, 0x49, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, +0x22, 0xF5, 0x49, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x22, 0xF5, 0x89, 0xA2, +0x22, 0xF5, 0x6A, 0xA2, 0x8E, 0xEB, 0x07, 0x23, +0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, +0xA0, 0xF0, 0x64, 0xDA, 0x04, 0x10, 0x22, 0xF5, +0x88, 0xC2, 0x22, 0xF5, 0x66, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x40, 0xF1, +0x96, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x04, 0x23, +0x40, 0xF1, 0x77, 0xA2, 0x43, 0xF6, 0x6C, 0xC2, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, 0x68, 0x98, +0xC3, 0xF3, 0x54, 0x9A, 0xA4, 0x67, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x68, 0x9B, +0x6E, 0xEA, 0x07, 0x22, 0x22, 0xF5, 0x49, 0xA0, +0x22, 0xF5, 0x6A, 0xA0, 0xFF, 0x4A, 0x6E, 0xEA, +0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, +0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF2, +0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x64, 0xDA, 0xAC, 0x10, 0x23, 0xA4, 0xFF, 0xF7, 0x1F, 0x6A, 0x04, 0x49, 0x4C, 0xE9, 0x22, 0xF5, -0x44, 0xA8, 0x22, 0x2A, 0xE8, 0x6A, 0x58, 0xEB, +0x46, 0xA8, 0x22, 0x2A, 0xE8, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0x80, 0xF2, 0x4C, 0x9A, 0xCB, 0xF7, 0x1C, 0x4C, +0x80, 0xF2, 0x4C, 0x9A, 0x2C, 0xF0, 0x06, 0x4C, 0xFF, 0x6E, 0x2C, 0xEE, 0x12, 0xEB, 0x71, 0xE4, -0x40, 0xEA, 0x22, 0xF5, 0x48, 0xA0, 0x22, 0xF5, -0x67, 0xA0, 0x22, 0xF5, 0x24, 0xC8, 0x4E, 0xEB, -0x79, 0x2B, 0x01, 0x4A, 0x22, 0xF5, 0x48, 0xC0, -0x22, 0xF5, 0x48, 0xA0, 0x10, 0x6B, 0x6E, 0xEA, -0x71, 0x2A, 0x22, 0xF5, 0x48, 0xC0, 0x6E, 0x10, -0x62, 0xA5, 0x39, 0x2B, 0x4D, 0xE1, 0xE3, 0x53, -0x36, 0x60, 0x22, 0xF5, 0x66, 0xA0, 0xE8, 0x6C, +0x40, 0xEA, 0x22, 0xF5, 0x4A, 0xA0, 0x22, 0xF5, +0x69, 0xA0, 0x22, 0xF5, 0x26, 0xC8, 0x4E, 0xEB, +0x79, 0x2B, 0x01, 0x4A, 0x22, 0xF5, 0x4A, 0xC0, +0x22, 0xF5, 0x4A, 0xA0, 0x10, 0x6B, 0x6E, 0xEA, +0x71, 0x2A, 0x22, 0xF5, 0x4A, 0xC0, 0x6E, 0x10, +0x62, 0xA4, 0x39, 0x2B, 0x4D, 0xE1, 0xE3, 0x53, +0x36, 0x60, 0x22, 0xF5, 0x68, 0xA0, 0xE8, 0x6C, 0x98, 0xEB, 0x12, 0xEB, 0x0D, 0xE3, 0xA0, 0xF6, -0x86, 0xA3, 0x2D, 0x2C, 0xA0, 0xF6, 0x87, 0xA3, +0x88, 0xA3, 0x2D, 0x2C, 0xA0, 0xF6, 0x89, 0xA3, 0xFF, 0x6E, 0xFC, 0x4A, 0xFF, 0x4C, 0xA0, 0xF6, -0x87, 0xC3, 0x22, 0xF5, 0x64, 0xA8, 0x22, 0xF5, -0x86, 0xA0, 0xCC, 0xEA, 0xFF, 0x4B, 0x22, 0xF5, -0x64, 0xC8, 0xE8, 0x6B, 0x78, 0xEC, 0x2C, 0xEE, +0x89, 0xC3, 0x22, 0xF5, 0x66, 0xA8, 0x22, 0xF5, +0x88, 0xA0, 0xCC, 0xEA, 0xFF, 0x4B, 0x22, 0xF5, +0x66, 0xC8, 0xE8, 0x6B, 0x78, 0xEC, 0x2C, 0xEE, 0x12, 0xEC, 0x91, 0xE0, 0x51, 0xE4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA0, 0xF6, -0x07, 0x4C, 0x40, 0xEA, 0x22, 0xF5, 0x46, 0xA0, +0x09, 0x4C, 0x40, 0xEA, 0x22, 0xF5, 0x48, 0xA0, 0xE8, 0x6B, 0x78, 0xEA, 0x12, 0xEA, 0x09, 0xE2, -0xA0, 0xF6, 0x67, 0xA2, 0x6D, 0xE1, 0xA0, 0xF6, -0x67, 0xC2, 0x22, 0xF5, 0x44, 0xA8, 0x45, 0xE1, -0x22, 0xF5, 0x24, 0xC8, 0x33, 0x10, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0x22, 0xF5, -0x88, 0xA0, 0xE8, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF6, 0x69, 0xA2, 0x6D, 0xE1, 0xA0, 0xF6, +0x69, 0xC2, 0x22, 0xF5, 0x46, 0xA8, 0x45, 0xE1, +0x22, 0xF5, 0x26, 0xC8, 0x33, 0x10, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x22, 0xF5, +0x8A, 0xA0, 0xE8, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0xCB, 0xF7, 0x1C, 0x4B, 0xFF, 0x6E, +0x4C, 0x9A, 0x2C, 0xF0, 0x06, 0x4B, 0xFF, 0x6E, 0x2C, 0xEE, 0x12, 0xEC, 0x91, 0xE3, 0x40, 0xEA, -0x22, 0xF5, 0x48, 0xA0, 0x10, 0x6B, 0x22, 0xF5, -0x24, 0xC8, 0x01, 0x4A, 0x22, 0xF5, 0x48, 0xC0, -0x22, 0xF5, 0x48, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, -0x22, 0xF5, 0x48, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x22, 0xF5, 0x66, 0xA2, -0x10, 0x6C, 0x01, 0x4B, 0x22, 0xF5, 0x66, 0xC2, -0x22, 0xF5, 0x66, 0xA2, 0x8E, 0xEB, 0x02, 0x2B, -0x22, 0xF5, 0x66, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x22, 0xF5, 0x86, 0xA2, -0xE8, 0x6B, 0x78, 0xEC, 0x22, 0xF5, 0x84, 0xAA, -0x12, 0xEB, 0x4D, 0xE3, 0x80, 0xF7, 0x8B, 0xC3, +0x22, 0xF5, 0x4A, 0xA0, 0x10, 0x6B, 0x22, 0xF5, +0x26, 0xC8, 0x01, 0x4A, 0x22, 0xF5, 0x4A, 0xC0, +0x22, 0xF5, 0x4A, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, +0x22, 0xF5, 0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x22, 0xF5, 0x68, 0xA2, +0x10, 0x6C, 0x01, 0x4B, 0x22, 0xF5, 0x68, 0xC2, +0x22, 0xF5, 0x68, 0xA2, 0x8E, 0xEB, 0x02, 0x2B, +0x22, 0xF5, 0x68, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x22, 0xF5, 0x88, 0xA2, +0xE8, 0x6B, 0x78, 0xEC, 0x22, 0xF5, 0x86, 0xAA, +0x12, 0xEB, 0x4D, 0xE3, 0x80, 0xF7, 0x8D, 0xC3, 0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, @@ -22208,35 +22466,45 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x41, 0x97, 0x40, 0x91, 0x3F, 0x90, 0x21, 0x63, 0x00, 0xEF, +0xDD, 0x63, 0x45, 0x62, 0x44, 0xD1, 0x43, 0xD0, +0xFF, 0x69, 0x2C, 0xEF, 0x47, 0x67, 0x04, 0x4A, +0x2C, 0xEC, 0x2C, 0xED, 0xE5, 0x52, 0x48, 0xD6, +0x3F, 0xD4, 0x40, 0xD5, 0x3E, 0xD7, 0x12, 0x60, +0x04, 0x00, 0x90, 0x67, 0x00, 0x6D, 0xE4, 0x6E, +0x00, 0x18, 0x98, 0xD8, 0x40, 0x95, 0x3E, 0x96, +0x48, 0x97, 0x90, 0x67, 0x00, 0x18, 0xB8, 0xDD, +0x3F, 0x94, 0xC2, 0x67, 0xB0, 0x67, 0x2C, 0xEE, +0x00, 0x18, 0xCA, 0xDD, 0x45, 0x97, 0x44, 0x91, +0x43, 0x90, 0x23, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0x8B, 0xF2, 0x0E, 0x4C, 0x07, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x00, 0x6B, 0x43, 0xF6, 0x68, 0xC2, +0x20, 0x6C, 0xCB, 0xF2, 0x16, 0x4C, 0x07, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x00, 0x6B, 0x43, 0xF6, 0x6C, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, 0xCC, 0xEA, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x71, 0xE4, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x71, 0xE4, 0x63, 0xF3, 0x7C, 0xA4, 0xAC, 0xEA, -0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0x63, 0xF3, -0x5C, 0xC4, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0x8B, 0xF1, 0x00, 0x4B, 0x71, 0xE4, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x71, 0xE4, 0x83, 0xF3, 0x60, 0xA4, 0xAC, 0xEA, +0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0x83, 0xF3, +0x40, 0xC4, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, 0xFF, 0x74, 0xAC, 0xEA, 0x05, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0xAE, 0xF4, 0x52, 0xC3, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x63, 0xF3, 0xBA, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, -0xAC, 0xEC, 0x8D, 0xEA, 0x63, 0xF3, 0x5A, 0xC3, +0x20, 0x6B, 0xEE, 0xF4, 0x5E, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x63, 0xF3, 0xBE, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, +0xAC, 0xEC, 0x8D, 0xEA, 0x63, 0xF3, 0x5E, 0xC3, 0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x01, 0xA4, 0x20, 0xA4, 0x0C, 0x20, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, -0x99, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x0D, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x90, 0x67, 0xB1, 0x67, 0x53, 0x6E, 0x40, 0xEA, 0x7D, 0x67, 0x20, 0x6A, 0x50, 0xC3, 0x03, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x40, 0x9A, 0x9D, 0x67, 0x40, 0xA2, -0x52, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x63, 0xF3, 0x7A, 0xA2, 0x63, 0xF3, -0x5B, 0xA2, 0x73, 0xC4, 0x54, 0xC4, 0x30, 0xF0, +0xA3, 0xF2, 0x44, 0x9A, 0x9D, 0x67, 0x40, 0xA2, +0x52, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x63, 0xF3, 0x7E, 0xA2, 0x63, 0xF3, +0x5F, 0xA2, 0x73, 0xC4, 0x54, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xF7, 0x63, 0x11, 0x62, @@ -22247,20 +22515,20 @@ u8 array_mp_8822c_fw_nic[] = { 0x44, 0x60, 0x84, 0x31, 0x09, 0x94, 0x01, 0x2C, 0x28, 0x22, 0xFF, 0x68, 0x0C, 0xEA, 0x0C, 0xEB, 0xA2, 0x67, 0xC3, 0x67, 0x91, 0x67, 0x0C, 0xD2, -0x0D, 0xD3, 0x00, 0x18, 0x8C, 0xDC, 0x0B, 0x94, +0x0D, 0xD3, 0x00, 0x18, 0x00, 0xDE, 0x0B, 0x94, 0x09, 0x93, 0x41, 0x41, 0x0C, 0xEC, 0x0B, 0xD4, 0x0B, 0x96, 0x0C, 0xEA, 0x0C, 0xEB, 0x82, 0x67, 0xA3, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0xD2, -0x09, 0xD3, 0x00, 0x18, 0x8C, 0xDC, 0x40, 0xF4, +0x09, 0xD3, 0x00, 0x18, 0x00, 0xDE, 0x40, 0xF4, 0x40, 0x98, 0x0C, 0x95, 0x0D, 0x96, 0x91, 0x67, 0x01, 0x6F, 0x40, 0xEA, 0x40, 0xF4, 0x40, 0x98, 0x0A, 0x94, 0x09, 0x95, 0x0B, 0x96, 0x02, 0x6F, -0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0xF2, 0xE9, +0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0x97, 0xEB, 0x7D, 0x67, 0x53, 0xC3, 0x42, 0x32, 0x54, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x45, 0xE1, 0x63, 0xF3, 0x5C, 0xA1, 0x55, 0xC3, -0x63, 0xF3, 0x5D, 0xA1, 0x56, 0xC3, 0x83, 0xF3, -0x4C, 0xA1, 0x57, 0xC3, 0x83, 0xF3, 0x4D, 0xA1, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x45, 0xE1, 0x83, 0xF3, 0x40, 0xA1, 0x55, 0xC3, +0x83, 0xF3, 0x41, 0xA1, 0x56, 0xC3, 0x83, 0xF3, +0x50, 0xA1, 0x57, 0xC3, 0x83, 0xF3, 0x51, 0xA1, 0x58, 0xC3, 0x9D, 0x67, 0x21, 0x6A, 0x72, 0xA4, 0x50, 0xC4, 0x07, 0x6A, 0x4F, 0xCC, 0x20, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x08, 0x93, 0x6D, 0xEA, @@ -22269,63 +22537,63 @@ u8 array_mp_8822c_fw_nic[] = { 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x04, 0x67, -0x30, 0xF0, 0x20, 0x6C, 0x0B, 0xF2, 0x08, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x4B, 0xF2, 0x10, 0x4C, 0xB0, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x81, 0xA0, -0x00, 0x18, 0x12, 0xCB, 0x82, 0xA0, 0x02, 0x24, -0x00, 0x18, 0xE4, 0xCA, 0x83, 0xA0, 0x02, 0x24, -0x00, 0x18, 0x25, 0xCB, 0x05, 0x97, 0x04, 0x90, -0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xCE, 0xF7, -0x61, 0xC2, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x00, 0x18, 0xC3, 0xCB, 0x82, 0xA0, 0x02, 0x24, +0x00, 0x18, 0x95, 0xCB, 0x83, 0xA0, 0x02, 0x24, +0x00, 0x18, 0xD6, 0xCB, 0x05, 0x97, 0x04, 0x90, +0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF0, +0x6D, 0xC2, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x1A, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x07, 0x6A, -0x4F, 0xCB, 0x80, 0x18, 0x42, 0x75, 0x30, 0xF0, +0x4F, 0xCB, 0x80, 0x18, 0x2B, 0x77, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x19, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x08, 0x6A, -0x4F, 0xCB, 0x80, 0x18, 0x0B, 0x75, 0x30, 0xF0, +0x4F, 0xCB, 0x80, 0x18, 0xF4, 0x76, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x8C, 0xEA, 0xA3, 0xF7, 0x7C, 0x9B, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF7, 0x80, 0x9C, 0xCC, 0xEB, +0x8C, 0xEA, 0xC3, 0xF7, 0x74, 0x9B, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF7, 0x98, 0x9C, 0xCC, 0xEB, 0x40, 0xF6, 0xA0, 0x35, 0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0xAD, 0xEB, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF1, 0x84, 0x9C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, 0x88, 0x9C, +0x20, 0x6C, 0x63, 0xF1, 0x88, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, 0x8C, 0x9C, 0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0xFF, 0x6B, 0x02, 0xF0, 0x00, 0x74, 0xAC, 0xEB, 0x01, 0x60, 0x05, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, 0x84, 0x9C, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, -0x88, 0x9C, 0x91, 0xE2, 0x00, 0x6D, 0xA0, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF7, 0x9C, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, 0x88, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, +0x8C, 0x9C, 0x91, 0xE2, 0x00, 0x6D, 0xA0, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF7, 0x94, 0x9C, 0xD4, 0x36, 0x40, 0xF6, 0x60, 0x33, 0x8C, 0xEE, 0x6D, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF7, -0x60, 0x9B, 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6B, +0x78, 0x9B, 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, -0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x68, 0x9B, 0x69, 0xE2, 0xC0, 0xDA, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, +0x68, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF1, 0x6C, 0x9B, 0x69, 0xE2, 0xC0, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x0F, 0xF5, 0x00, 0x6B, 0x78, 0xEE, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF7, 0x9C, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF7, 0x94, 0x9C, 0x40, 0xF6, 0xA0, 0x35, 0x12, 0xEB, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF7, 0x80, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF7, 0x98, 0x9C, 0xAD, 0xEB, 0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, -0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, -0x84, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF1, 0x88, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, +0x88, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x63, 0xF1, 0x8C, 0x9C, 0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x4C, 0x9A, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x50, 0x9A, 0x40, 0x9A, +0x23, 0xF1, 0x50, 0x9A, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF1, 0x54, 0x9A, 0x40, 0x9A, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, 0x01, 0x72, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x4C, 0x9A, 0x40, 0x9A, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x50, 0x9A, +0x23, 0xF1, 0x50, 0x9A, 0x40, 0x9A, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x54, 0x9A, 0x40, 0x9A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF7, 0xC4, 0x9B, 0xFD, 0x63, 0x82, 0xF7, 0x04, 0x4B, 0x02, 0xD6, 0xC1, 0x9B, 0x64, 0xAB, @@ -22337,54 +22605,63 @@ u8 array_mp_8822c_fw_nic[] = { 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xED, 0xCC, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x0C, 0x2B, 0x5D, 0x67, 0x84, 0x34, 0x91, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xAC, 0x43, 0xF1, 0x44, 0x9A, +0x20, 0x6A, 0x64, 0xAC, 0x63, 0xF1, 0x48, 0x9A, 0x49, 0xE3, 0x60, 0xA2, 0xFF, 0x6A, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, 0x68, 0x9B, -0x79, 0xE6, 0x60, 0xA6, 0xE4, 0xED, 0x6C, 0xEA, -0xA7, 0x67, 0x4C, 0xED, 0x00, 0x6B, 0x01, 0x25, -0x01, 0x6B, 0xFF, 0x6A, 0x6C, 0xEA, 0x03, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, -0x00, 0x68, 0xFF, 0x6A, 0x0C, 0xEA, 0x2E, 0xEA, -0x10, 0x2A, 0x91, 0x67, 0x00, 0x18, 0xDB, 0xE7, -0x91, 0x67, 0x00, 0x18, 0xCA, 0xE7, 0x91, 0x67, -0x00, 0x18, 0xE2, 0xE7, 0x91, 0x67, 0x00, 0x18, -0xAC, 0xE7, 0x91, 0x67, 0x00, 0x18, 0xA2, 0xE7, -0x0F, 0x10, 0x90, 0x67, 0x00, 0x18, 0x01, 0xE8, -0x90, 0x67, 0x00, 0x18, 0xF0, 0xE7, 0x90, 0x67, -0x00, 0x18, 0x08, 0xE8, 0x90, 0x67, 0x00, 0x18, -0xC0, 0xE7, 0x90, 0x67, 0x00, 0x18, 0xB6, 0xE7, -0x01, 0x48, 0x05, 0x70, 0xDA, 0x61, 0x07, 0x97, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, +0x79, 0xE6, 0x60, 0xA6, 0x6C, 0xEA, 0x67, 0x67, +0x64, 0xED, 0x4C, 0xEB, 0x01, 0x6A, 0x15, 0x2B, +0x09, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6B, +0x8B, 0xF1, 0x00, 0x4A, 0x84, 0xF5, 0x66, 0xCA, +0x02, 0x6B, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0x6B, 0x8B, 0xF1, 0x00, 0x4A, 0x84, 0xF5, +0x66, 0xCA, 0x04, 0x6B, 0x84, 0xF5, 0x64, 0xCA, +0x00, 0x6A, 0x03, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x8C, 0xE9, 0x00, 0x68, 0xFF, 0x6A, +0x0C, 0xEA, 0x2E, 0xEA, 0x10, 0x2A, 0x91, 0x67, +0x00, 0x18, 0x80, 0xE9, 0x91, 0x67, 0x00, 0x18, +0x6F, 0xE9, 0x91, 0x67, 0x00, 0x18, 0x87, 0xE9, +0x91, 0x67, 0x00, 0x18, 0x51, 0xE9, 0x91, 0x67, +0x00, 0x18, 0x47, 0xE9, 0x21, 0x10, 0x90, 0x67, +0x00, 0x18, 0xA6, 0xE9, 0x90, 0x67, 0x00, 0x18, +0x95, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x60, 0xF1, 0x80, 0xA3, 0x01, 0x6A, +0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x07, 0x22, +0x60, 0xF1, 0x40, 0xA3, 0x07, 0x6B, 0x46, 0x32, +0x6C, 0xEA, 0x0E, 0xEA, 0x03, 0x22, 0x90, 0x67, +0x00, 0x18, 0xAD, 0xE9, 0x90, 0x67, 0x00, 0x18, +0x65, 0xE9, 0x90, 0x67, 0x00, 0x18, 0x5B, 0xE9, +0x01, 0x48, 0x05, 0x70, 0xC8, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x90, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x88, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0xA0, 0x9C, 0x52, 0x9B, 0xAC, 0xEA, 0x53, 0xDB, 0x40, 0xDC, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0xD1, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, -0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, -0x14, 0x4A, 0x40, 0x9A, 0x60, 0x99, 0x30, 0xF0, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, +0x24, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, +0x0C, 0x4A, 0x40, 0x9A, 0x60, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF7, 0x58, 0x9A, 0xC3, 0xF7, 0x1C, 0x4C, +0xE3, 0xF7, 0x50, 0x9A, 0xE3, 0xF7, 0x14, 0x4C, 0x80, 0x9C, 0x00, 0x9A, 0x1A, 0x65, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0x9C, 0xE3, 0xF7, 0x00, 0x4A, +0x20, 0x6A, 0x80, 0x9C, 0xE3, 0xF7, 0x18, 0x4A, 0x40, 0x9A, 0x01, 0xD4, 0x30, 0xF0, 0x20, 0x6C, -0x40, 0x9A, 0x2B, 0xF1, 0xF8, 0x9C, 0x00, 0xD2, -0x44, 0x67, 0x2B, 0xF1, 0x18, 0x4A, 0xC1, 0x9A, +0x40, 0x9A, 0x8B, 0xF1, 0xE0, 0x9C, 0x00, 0xD2, +0x44, 0x67, 0x8B, 0xF1, 0x00, 0x4A, 0xC1, 0x9A, 0x83, 0x9A, 0x6C, 0xEF, 0xAC, 0xEE, 0x01, 0x93, 0xA2, 0x9A, 0xE8, 0xDA, 0x6C, 0xEC, 0x0C, 0xED, 0x64, 0x9A, 0x00, 0x90, 0x8B, 0xDA, 0xC9, 0xDA, 0x0C, 0xEB, 0xAA, 0xDA, 0x6C, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF7, 0x14, 0x4A, 0x40, 0x9A, +0x20, 0x6A, 0xE3, 0xF7, 0x0C, 0x4A, 0x40, 0x9A, 0xE0, 0xD9, 0x18, 0x67, 0xC0, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF7, 0x1C, 0x4A, 0x40, 0x9A, +0x20, 0x6A, 0xE3, 0xF7, 0x14, 0x4A, 0x40, 0x9A, 0xA0, 0xD8, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF7, 0x00, 0x4C, 0x80, 0x9C, 0x60, 0xDC, +0xE3, 0xF7, 0x18, 0x4C, 0x80, 0x9C, 0x60, 0xDC, 0x05, 0x91, 0x04, 0x90, 0x03, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD1, 0x00, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x0C, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF7, 0xF0, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0xC4, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x80, 0x98, +0x20, 0x6A, 0x83, 0xF2, 0x10, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF7, 0xE8, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF7, 0xDC, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x80, 0x98, 0xB4, 0x9A, 0x60, 0x9F, 0x20, 0x9E, 0x8C, 0xED, 0x95, 0x9A, 0xB7, 0xDA, 0x6C, 0xEC, 0x76, 0x9A, 0x98, 0xDA, 0x2C, 0xEB, 0x79, 0xDA, 0xA0, 0xD8, @@ -22395,58 +22672,58 @@ u8 array_mp_8822c_fw_nic[] = { 0x03, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x0E, 0xF5, 0x6C, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x4E, 0xF5, 0x78, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x07, 0x6C, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x54, 0x9A, -0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, -0x58, 0x9A, 0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF7, 0x5C, 0x9A, 0x40, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x50, 0x9A, 0x40, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x4C, 0x9A, 0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, -0x44, 0x9A, 0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF0, 0x48, 0x9A, 0x40, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x54, 0x9A, 0x40, 0xA2, +0x50, 0x9A, 0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF0, 0x54, 0x9A, 0x40, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x48, 0x9A, 0x40, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x58, 0x9A, +0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, +0x5C, 0x9A, 0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x40, 0x9A, 0x40, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x4C, 0x9A, 0x40, 0xA2, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xA3, 0xF3, -0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x9C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xA3, 0xF3, -0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, +0x7C, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xA3, 0xF3, -0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x9C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xA3, 0xF3, -0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, +0x7C, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xA3, 0xF3, -0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x9C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xA3, 0xF3, -0x78, 0xC2, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, 0x9C, 0x9C, +0x7C, 0xC2, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF1, 0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, -0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x60, 0xDA, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, +0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x2E, 0x61, 0xA0, 0xF0, 0x7B, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, 0x29, 0x22, 0x40, 0xF1, 0x76, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x04, 0x22, -0x40, 0xF1, 0x57, 0xA0, 0x43, 0xF6, 0x48, 0xC0, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x03, 0xF6, 0x4D, 0xA3, 0x01, 0x6C, 0x8E, 0xEA, -0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, -0x94, 0x9C, 0x00, 0x6D, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, 0x02, 0x6C, +0x40, 0xF1, 0x57, 0xA0, 0x43, 0xF6, 0x4C, 0xC0, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x03, 0xF6, 0x51, 0xA3, 0x01, 0x6C, 0x8E, 0xEA, +0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF2, +0x98, 0x9C, 0x00, 0x6D, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, 0x02, 0x6C, 0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0xC0, 0xF0, 0xC3, 0xA3, 0xFF, 0x6C, 0x55, 0x4C, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, @@ -22454,452 +22731,463 @@ u8 array_mp_8822c_fw_nic[] = { 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x6D, 0xB8, 0xEC, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x01, 0x6E, 0x12, 0xEC, 0x71, 0xE4, 0x00, 0xF1, 0xBE, 0xA4, 0xCC, 0xED, 0x1D, 0x25, 0x00, 0xF1, -0xBF, 0xA4, 0x22, 0xF6, 0x70, 0x9B, 0x00, 0xF1, +0xBF, 0xA4, 0x22, 0xF6, 0x74, 0x9B, 0x00, 0xF1, 0x9E, 0xA4, 0x75, 0xE5, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0x60, 0x9B, 0xBC, 0x35, 0x21, 0x4D, +0x43, 0xF2, 0x68, 0x9B, 0xBC, 0x35, 0x21, 0x4D, 0x75, 0xE5, 0xE0, 0xA5, 0x9E, 0x33, 0x9A, 0x34, 0xCC, 0xEC, 0x78, 0x33, 0x9C, 0x34, 0x4C, 0xEF, 0x8D, 0xEB, 0xED, 0xEB, 0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, 0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0xA0, 0xF0, 0xDA, 0xAB, 0x0F, 0xF7, 0x01, 0x6D, 0xFF, 0x6A, 0xCC, 0xED, 0x4C, 0xEC, 0x06, 0x2D, -0xA3, 0xF3, 0xBC, 0xA3, 0x01, 0x6B, 0xAC, 0xEB, +0xC3, 0xF3, 0xA0, 0xA3, 0x01, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, 0x18, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, 0xBA, 0xA2, -0x01, 0x6B, 0x6C, 0xED, 0x06, 0x2D, 0xA3, 0xF3, -0x5C, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x07, 0x22, 0x80, 0x18, 0x74, 0x6F, 0x01, 0x72, -0x05, 0x61, 0x80, 0x18, 0xC7, 0x70, 0x02, 0x10, -0x00, 0x18, 0x4F, 0xCF, 0x05, 0x97, 0x03, 0x63, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0xBA, 0xA2, +0x01, 0x6B, 0x6C, 0xED, 0x06, 0x2D, 0xC3, 0xF3, +0x40, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x07, 0x22, 0x80, 0x18, 0x5C, 0x71, 0x01, 0x72, +0x05, 0x61, 0x80, 0x18, 0xAF, 0x72, 0x02, 0x10, +0x00, 0x18, 0x82, 0xD0, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, -0x20, 0x68, 0x2C, 0xEC, 0x2B, 0xF1, 0x18, 0x48, +0x20, 0x68, 0x2C, 0xEC, 0x8B, 0xF1, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD4, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x21, 0x61, 0xA0, 0xF0, 0x7B, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x1B, 0x22, -0x03, 0xF6, 0x61, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, +0x03, 0xF6, 0x65, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x40, 0xF1, 0x76, 0xA0, 0x03, 0xF6, -0x41, 0xC0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x45, 0xC0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x04, 0x22, 0x40, 0xF1, 0x57, 0xA0, 0x43, 0xF6, -0x48, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, -0x59, 0xA2, 0x07, 0x6B, 0x6C, 0xEA, 0x03, 0x2A, -0x04, 0x94, 0x00, 0x18, 0x10, 0xD0, 0x09, 0x97, +0x4C, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, +0x45, 0xA2, 0x07, 0x6B, 0x6C, 0xEA, 0x03, 0x2A, +0x04, 0x94, 0x00, 0x18, 0x48, 0xD1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, -0x2B, 0xF1, 0x18, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD4, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x3A, 0x61, 0xA0, 0xF0, 0x7B, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x34, 0x22, 0x40, 0xF1, 0x76, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x04, 0x22, -0x40, 0xF1, 0x57, 0xA0, 0x43, 0xF6, 0x48, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x4E, 0xF7, 0x45, 0xA2, +0x40, 0xF1, 0x57, 0xA0, 0x43, 0xF6, 0x4C, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, 0x51, 0xA2, 0x01, 0x6B, 0x6E, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x74, 0x9B, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, +0x20, 0x6B, 0xA3, 0xF2, 0x78, 0x9B, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, 0x02, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE3, 0xF5, 0x9C, 0xA2, -0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEC, 0xE3, 0xF5, -0x9C, 0xC2, 0x03, 0xF6, 0x81, 0xA2, 0x8C, 0xEB, -0x03, 0xF6, 0x61, 0xC2, 0x03, 0xF6, 0x41, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, 0x80, 0xA2, +0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEC, 0x03, 0xF6, +0x80, 0xC2, 0x03, 0xF6, 0x85, 0xA2, 0x8C, 0xEB, +0x03, 0xF6, 0x65, 0xC2, 0x03, 0xF6, 0x45, 0xA2, 0x07, 0x6B, 0x6C, 0xEA, 0x03, 0x2A, 0x04, 0x94, -0x00, 0x18, 0x10, 0xD0, 0x09, 0x97, 0x08, 0x91, +0x00, 0x18, 0x48, 0xD1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xE3, 0xF5, 0x7D, 0xA0, 0x02, 0x6A, 0xFF, 0x69, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x03, 0xF6, 0x61, 0xA0, 0x02, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x2C, 0xEC, 0x2C, 0xEA, 0x04, 0xD4, -0x23, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xE3, 0xF5, 0x5D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x2E, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x03, 0xF6, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x44, 0x9A, 0x01, 0x6D, 0x40, 0xEA, -0xE3, 0xF5, 0x9D, 0xA0, 0x01, 0x6B, 0x4C, 0xEB, +0x03, 0xF6, 0x81, 0xA0, 0x01, 0x6B, 0x4C, 0xEB, 0x09, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0xA0, 0xF0, 0x9B, 0xA0, 0x6C, 0x33, 0x6D, 0xEA, 0x7F, 0x6B, -0x8C, 0xEB, 0x2C, 0xEB, 0xE3, 0xF5, 0x5D, 0xC0, -0x07, 0x23, 0x08, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, -0x03, 0x23, 0x04, 0x94, 0x00, 0x18, 0x10, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xE0, 0xF0, 0x7A, 0xA0, 0x11, 0x6A, 0xFF, 0x69, -0x6C, 0xEA, 0x11, 0x72, 0x26, 0x61, 0x64, 0xF5, -0x78, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, -0x20, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x64, 0xF5, 0x58, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0x94, 0x40, 0xF4, 0x44, 0x9A, 0x01, 0x6D, -0x40, 0xEA, 0x64, 0xF5, 0x98, 0xA0, 0x01, 0x6B, -0x4C, 0xEB, 0x05, 0x6A, 0x4B, 0xEA, 0x68, 0x33, -0x8C, 0xEA, 0x6D, 0xEA, 0x04, 0x6B, 0x4C, 0xEB, -0x2C, 0xEB, 0x64, 0xF5, 0x58, 0xC0, 0x05, 0x23, -0x84, 0xF5, 0x5E, 0xA0, 0x01, 0x4A, 0x84, 0xF5, -0x5E, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, -0x50, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x8C, 0xEB, 0x2C, 0xEB, 0x03, 0xF6, 0x41, 0xC0, +0x12, 0x23, 0x08, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, +0x09, 0x23, 0x84, 0xF5, 0x40, 0xA8, 0x04, 0x94, +0x01, 0x4A, 0x84, 0xF5, 0x40, 0xC8, 0x00, 0x18, +0x48, 0xD1, 0x05, 0x10, 0x84, 0xF5, 0x42, 0xA8, +0x01, 0x4A, 0x84, 0xF5, 0x42, 0xC8, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xE0, 0xF0, +0x7A, 0xA0, 0x11, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, +0x11, 0x72, 0x26, 0x61, 0xC4, 0xF5, 0x78, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x20, 0x22, +0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xC4, 0xF5, +0x58, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, +0x40, 0xF4, 0x44, 0x9A, 0x01, 0x6D, 0x40, 0xEA, +0xC4, 0xF5, 0x98, 0xA0, 0x01, 0x6B, 0x4C, 0xEB, +0x05, 0x6A, 0x4B, 0xEA, 0x68, 0x33, 0x8C, 0xEA, +0x6D, 0xEA, 0x04, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, +0xC4, 0xF5, 0x58, 0xC0, 0x05, 0x23, 0xE4, 0xF5, +0x5E, 0xA0, 0x01, 0x4A, 0xE4, 0xF5, 0x5E, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x50, 0x9A, +0x04, 0x94, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, -0x2B, 0xF1, 0x18, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD4, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, -0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x34, 0x61, +0x9F, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x3B, 0x61, 0xA0, 0xF0, 0x7B, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x2E, 0x22, 0x40, 0xF1, 0x76, 0xA0, +0x2C, 0xEA, 0x35, 0x22, 0x40, 0xF1, 0x76, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x04, 0x22, -0x40, 0xF1, 0x57, 0xA0, 0x43, 0xF6, 0x48, 0xC0, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0x40, 0xF1, 0x57, 0xA0, 0x43, 0xF6, 0x4C, 0xC0, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0xA0, 0xF0, 0x9C, 0xA3, 0x10, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x20, 0x72, 0x0C, 0x60, 0xA0, 0xF0, 0x7B, 0xA3, 0x7F, 0x6A, 0x6C, 0xEA, 0x01, 0x72, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x40, 0x9A, 0x40, 0xEA, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, -0x73, 0xA2, 0x7F, 0x6A, 0x6C, 0xEA, 0x02, 0x72, -0x03, 0x60, 0x04, 0x94, 0x00, 0x18, 0xD0, 0xCF, -0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF2, 0x6E, 0xA2, -0x07, 0x6A, 0x6C, 0xEA, 0x04, 0x93, 0x6E, 0xEA, -0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, -0x48, 0x9A, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0xE0, 0xF0, -0xB3, 0xA3, 0x04, 0x67, 0x01, 0x6C, 0xFF, 0x6A, -0xAC, 0xEC, 0x4C, 0xEC, 0x4C, 0xE8, 0x13, 0x24, -0xA6, 0x32, 0x07, 0x6C, 0x8C, 0xEA, 0x0E, 0xEA, -0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x4C, 0x9A, 0x40, 0x9A, 0x87, 0xF3, 0x54, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x50, 0x9A, -0x40, 0x9A, 0x87, 0xF3, 0x50, 0xDB, 0x90, 0x67, -0x00, 0x18, 0xC1, 0xC6, 0x7B, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, -0x9A, 0xA2, 0x01, 0x6B, 0x6C, 0xEC, 0x06, 0x2C, -0xA3, 0xF3, 0x5C, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, -0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF4, 0x52, 0xA2, 0x02, 0x72, 0x23, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA0, 0xF0, 0x9A, 0xAA, 0x0F, 0xF7, 0x01, 0x6B, -0x8C, 0xEB, 0x05, 0x2B, 0xA3, 0xF3, 0x7C, 0xA2, -0x01, 0x6A, 0x6C, 0xEA, 0x09, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x2E, 0xF7, 0x57, 0xA2, 0x02, 0x72, -0x0E, 0x60, 0x90, 0x67, 0x00, 0x18, 0xC2, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF2, 0x6E, 0xA2, -0x07, 0x6A, 0x6C, 0xEA, 0x0E, 0xEA, 0x03, 0x2A, -0x90, 0x67, 0x80, 0x18, 0xA2, 0x5E, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE0, 0xF0, -0xA5, 0xA2, 0x01, 0x6C, 0xFF, 0x6B, 0xAC, 0xEC, -0x39, 0x24, 0xB6, 0x34, 0x8E, 0xE8, 0x36, 0x28, -0xE0, 0xF0, 0xA8, 0xA2, 0xE0, 0xF0, 0xC7, 0xA2, -0x7F, 0x6C, 0x8C, 0xED, 0x8C, 0xEE, 0xE0, 0xF0, -0x88, 0xA2, 0x6C, 0xED, 0x6C, 0xEE, 0x9E, 0x34, -0x6C, 0xEC, 0x05, 0x2C, 0xB4, 0x35, 0xD0, 0x4D, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE0, 0xF0, -0xE6, 0xA2, 0x7F, 0x6B, 0xEC, 0xEB, 0x87, 0xF3, -0x67, 0xC2, 0xE0, 0xF0, 0x65, 0xA2, 0x01, 0x6F, -0x66, 0x30, 0xEC, 0xE8, 0x87, 0xF3, 0x08, 0xC2, -0xE0, 0xF0, 0x07, 0xA2, 0x1E, 0x30, 0x87, 0xF3, -0x0B, 0xC2, 0x6A, 0x30, 0x6E, 0x33, 0xEC, 0xEB, -0xEC, 0xE8, 0x87, 0xF3, 0x6A, 0xC2, 0x00, 0x6B, -0x87, 0xF3, 0x09, 0xC2, 0x87, 0xF3, 0x6C, 0xC2, -0x80, 0x18, 0x9E, 0x26, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x30, 0xF0, 0x20, 0x6B, 0x0A, 0xD4, 0x2B, 0xF1, -0x18, 0x4B, 0xE0, 0xF0, 0xB3, 0xA3, 0x10, 0x6C, -0xAC, 0xEC, 0x4C, 0xEC, 0x28, 0x24, 0x0A, 0x94, -0xB6, 0x32, 0x8E, 0xEA, 0x24, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF7, 0x98, 0x9A, 0x8F, 0x6A, -0xA0, 0xA4, 0xAC, 0xEA, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x4C, 0x9A, 0x40, 0x9A, -0x87, 0xF3, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x50, 0x9A, 0x40, 0x9A, 0x87, 0xF3, -0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, -0x50, 0x9A, 0x40, 0x9A, 0xA7, 0xF3, 0x44, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0x54, 0x9A, -0x40, 0x9A, 0xA7, 0xF3, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xE0, 0xF0, -0x6C, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x69, 0x22, -0x76, 0x32, 0x0A, 0x93, 0x6E, 0xEA, 0x65, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0x54, 0x9A, -0x9D, 0x67, 0x30, 0xF0, 0x20, 0x69, 0x40, 0x9A, -0x05, 0x05, 0x04, 0x6E, 0x05, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x50, 0x9A, 0x40, 0x9A, -0x04, 0xD2, 0x2D, 0x6A, 0x58, 0xC4, 0x09, 0x6A, -0x53, 0xCC, 0x80, 0xF2, 0x4C, 0x99, 0x00, 0xF0, -0x1A, 0x04, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x99, -0x04, 0x05, 0x04, 0x6E, 0x00, 0xF0, 0x1E, 0x04, -0x40, 0xEA, 0x5D, 0x67, 0x67, 0x42, 0x21, 0x4B, -0x60, 0xA3, 0x06, 0x04, 0x20, 0xF0, 0x62, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, -0x40, 0xEA, 0xE0, 0xF0, 0xAF, 0xA0, 0xE0, 0xF0, -0xCE, 0xA0, 0x7F, 0x6A, 0xFF, 0x6C, 0x4C, 0xED, -0x4C, 0xEE, 0x8C, 0xED, 0x8C, 0xEE, 0xE0, 0xF0, -0x8F, 0xA0, 0xFF, 0x6A, 0x9E, 0x34, 0x4C, 0xEC, -0x05, 0x2C, 0xB4, 0x35, 0xD0, 0x4D, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE0, 0xF0, 0xED, 0xA2, -0x7F, 0x6B, 0xEC, 0xEB, 0x87, 0xF3, 0x67, 0xC2, -0xE0, 0xF0, 0x6C, 0xA2, 0x01, 0x6F, 0x66, 0x30, -0xEC, 0xE8, 0x87, 0xF3, 0x08, 0xC2, 0xE0, 0xF0, -0x0E, 0xA2, 0x1E, 0x30, 0x87, 0xF3, 0x0B, 0xC2, -0x6A, 0x30, 0x6E, 0x33, 0xEC, 0xEB, 0xEC, 0xE8, -0x87, 0xF3, 0x6A, 0xC2, 0x00, 0x6B, 0x87, 0xF3, -0x09, 0xC2, 0x87, 0xF3, 0x6C, 0xC2, 0x80, 0x18, -0x9E, 0x26, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, -0x08, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x0B, 0x21, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0xE3, 0xF5, 0x7D, 0xA0, -0xFF, 0x69, 0x01, 0x6A, 0x8C, 0xE9, 0x6C, 0xEA, -0xFF, 0x6C, 0x8C, 0xEA, 0x2E, 0x22, 0x02, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xE3, 0xF5, 0x5D, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x44, 0x9A, -0x91, 0x67, 0x00, 0x6D, 0x40, 0xEA, 0xE3, 0xF5, -0x9D, 0xA0, 0x01, 0x6B, 0x6C, 0xEA, 0xFA, 0x4B, -0x48, 0x32, 0x8C, 0xEB, 0x4D, 0xEB, 0x04, 0x6A, -0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0xE3, 0xF5, -0x7D, 0xC0, 0x09, 0x22, 0x91, 0x67, 0x00, 0x18, -0x10, 0xD0, 0x63, 0xF6, 0x5B, 0xA0, 0x0D, 0x22, -0x00, 0x6C, 0xA4, 0x67, 0x08, 0x10, 0x63, 0xF6, -0x5B, 0xA0, 0x07, 0x22, 0x91, 0x67, 0x00, 0x18, -0x10, 0xD0, 0x00, 0x6C, 0x01, 0x6D, 0x00, 0x18, -0x62, 0xC8, 0x91, 0x67, 0x80, 0x18, 0xEB, 0x6B, +0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x9B, 0xA2, 0x7F, 0x6B, +0x8C, 0xEB, 0x02, 0x73, 0x08, 0x60, 0x64, 0xF5, +0x6E, 0xAA, 0x04, 0x94, 0x01, 0x4B, 0x64, 0xF5, +0x6E, 0xCA, 0x00, 0x18, 0x06, 0xD1, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF2, 0x76, 0xA2, 0x07, 0x6A, +0x6C, 0xEA, 0x04, 0x93, 0x6E, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x48, 0x9A, +0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xE0, 0xF0, 0xB3, 0xA3, 0x04, 0x67, +0x01, 0x6C, 0xFF, 0x6A, 0xAC, 0xEC, 0x4C, 0xEC, +0x4C, 0xE8, 0x13, 0x24, 0xA6, 0x32, 0x07, 0x6C, +0x8C, 0xEA, 0x0E, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF1, 0x50, 0x9A, 0x40, 0x9A, +0x07, 0xF4, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF1, 0x54, 0x9A, 0x40, 0x9A, 0x07, 0xF4, +0x48, 0xDB, 0x90, 0x67, 0x00, 0x18, 0xFB, 0xC6, +0x7B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x9A, 0xA2, 0x01, 0x6B, +0x6C, 0xEC, 0x06, 0x2C, 0xC3, 0xF3, 0x40, 0xA2, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x06, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF5, 0x5E, 0xA2, +0x02, 0x72, 0x23, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x9A, 0xAA, +0x0F, 0xF7, 0x01, 0x6B, 0x8C, 0xEB, 0x05, 0x2B, +0xC3, 0xF3, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, +0x43, 0xA2, 0x02, 0x72, 0x0E, 0x60, 0x90, 0x67, +0x00, 0x18, 0xFC, 0xD1, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF2, 0x76, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, +0x0E, 0xEA, 0x03, 0x2A, 0x90, 0x67, 0x80, 0x18, +0xE3, 0x5F, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xE0, 0xF0, 0xA5, 0xA2, 0x01, 0x6C, +0xFF, 0x6B, 0xAC, 0xEC, 0x39, 0x24, 0xB6, 0x34, +0x8E, 0xE8, 0x36, 0x28, 0xE0, 0xF0, 0xA8, 0xA2, +0xE0, 0xF0, 0xC7, 0xA2, 0x7F, 0x6C, 0x8C, 0xED, +0x8C, 0xEE, 0xE0, 0xF0, 0x88, 0xA2, 0x6C, 0xED, +0x6C, 0xEE, 0x9E, 0x34, 0x6C, 0xEC, 0x05, 0x2C, +0xB4, 0x35, 0xD0, 0x4D, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xE0, 0xF0, 0xE6, 0xA2, 0x7F, 0x6B, +0xEC, 0xEB, 0xE7, 0xF3, 0x7F, 0xC2, 0xE0, 0xF0, +0x65, 0xA2, 0x01, 0x6F, 0x66, 0x30, 0xEC, 0xE8, +0x07, 0xF4, 0x00, 0xC2, 0xE0, 0xF0, 0x07, 0xA2, +0x1E, 0x30, 0x07, 0xF4, 0x03, 0xC2, 0x6A, 0x30, +0x6E, 0x33, 0xEC, 0xEB, 0xEC, 0xE8, 0x07, 0xF4, +0x62, 0xC2, 0x00, 0x6B, 0x07, 0xF4, 0x01, 0xC2, +0x07, 0xF4, 0x64, 0xC2, 0x80, 0x18, 0xAD, 0x26, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x0A, 0xD4, 0x8B, 0xF1, 0x00, 0x4B, 0xE0, 0xF0, +0xB3, 0xA3, 0x10, 0x6C, 0xAC, 0xEC, 0x4C, 0xEC, +0x28, 0x24, 0x0A, 0x94, 0xB6, 0x32, 0x8E, 0xEA, +0x24, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, +0x90, 0x9A, 0x8F, 0x6A, 0xA0, 0xA4, 0xAC, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x50, 0x9A, 0x40, 0x9A, 0x07, 0xF4, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x54, 0x9A, +0x40, 0x9A, 0x07, 0xF4, 0x50, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x48, 0x9A, 0x40, 0x9A, +0x07, 0xF4, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF7, 0x4C, 0x9A, 0x40, 0x9A, 0x07, 0xF4, +0x58, 0xDB, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xE0, 0xF0, 0x6C, 0xA0, 0x01, 0x6A, +0x6C, 0xEA, 0x69, 0x22, 0x76, 0x32, 0x0A, 0x93, +0x6E, 0xEA, 0x65, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF7, 0x4C, 0x9A, 0x9D, 0x67, 0x30, 0xF0, +0x20, 0x69, 0x40, 0x9A, 0x05, 0x05, 0x04, 0x6E, +0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, +0x48, 0x9A, 0x40, 0x9A, 0x04, 0xD2, 0x2D, 0x6A, +0x58, 0xC4, 0x09, 0x6A, 0x53, 0xCC, 0x80, 0xF2, +0x4C, 0x99, 0x00, 0xF0, 0x1A, 0x04, 0x40, 0xEA, +0x80, 0xF2, 0x4C, 0x99, 0x04, 0x05, 0x04, 0x6E, +0x00, 0xF0, 0x1E, 0x04, 0x40, 0xEA, 0x5D, 0x67, +0x67, 0x42, 0x21, 0x4B, 0x60, 0xA3, 0x06, 0x04, +0x20, 0xF0, 0x62, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0xE0, 0xF0, +0xAF, 0xA0, 0xE0, 0xF0, 0xCE, 0xA0, 0x7F, 0x6A, +0xFF, 0x6C, 0x4C, 0xED, 0x4C, 0xEE, 0x8C, 0xED, +0x8C, 0xEE, 0xE0, 0xF0, 0x8F, 0xA0, 0xFF, 0x6A, +0x9E, 0x34, 0x4C, 0xEC, 0x05, 0x2C, 0xB4, 0x35, +0xD0, 0x4D, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xE0, 0xF0, 0xED, 0xA2, 0x7F, 0x6B, 0xEC, 0xEB, +0xE7, 0xF3, 0x7F, 0xC2, 0xE0, 0xF0, 0x6C, 0xA2, +0x01, 0x6F, 0x66, 0x30, 0xEC, 0xE8, 0x07, 0xF4, +0x00, 0xC2, 0xE0, 0xF0, 0x0E, 0xA2, 0x1E, 0x30, +0x07, 0xF4, 0x03, 0xC2, 0x6A, 0x30, 0x6E, 0x33, +0xEC, 0xEB, 0xEC, 0xE8, 0x07, 0xF4, 0x62, 0xC2, +0x00, 0x6B, 0x07, 0xF4, 0x01, 0xC2, 0x07, 0xF4, +0x64, 0xC2, 0x80, 0x18, 0xAD, 0x26, 0x0F, 0x97, +0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xF2, 0x20, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x03, 0xF6, 0x61, 0xA0, 0xFF, 0x69, 0x01, 0x6A, +0x8C, 0xE9, 0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x38, 0x22, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x03, 0xF6, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x44, 0x9A, 0x91, 0x67, 0x00, 0x6D, +0x40, 0xEA, 0x03, 0xF6, 0x81, 0xA0, 0x01, 0x6B, +0x6C, 0xEA, 0xFA, 0x4B, 0x48, 0x32, 0x8C, 0xEB, +0x4D, 0xEB, 0x04, 0x6A, 0x6C, 0xEA, 0xFF, 0x6C, +0x8C, 0xEA, 0x03, 0xF6, 0x61, 0xC0, 0x0E, 0x22, +0x64, 0xF5, 0x5C, 0xA8, 0x91, 0x67, 0x01, 0x4A, +0x64, 0xF5, 0x5C, 0xC8, 0x00, 0x18, 0x48, 0xD1, +0x63, 0xF6, 0x5F, 0xA0, 0x12, 0x22, 0x00, 0x6C, +0xA4, 0x67, 0x0D, 0x10, 0x64, 0xF5, 0x5E, 0xA8, +0x01, 0x4A, 0x64, 0xF5, 0x5E, 0xC8, 0x63, 0xF6, +0x5F, 0xA0, 0x07, 0x22, 0x91, 0x67, 0x00, 0x18, +0x48, 0xD1, 0x00, 0x6C, 0x01, 0x6D, 0x00, 0x18, +0xBF, 0xC8, 0x91, 0x67, 0x80, 0x18, 0xD3, 0x6D, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x72, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x7A, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, -0xED, 0x40, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xF7, 0x40, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x72, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0xED, 0x40, 0x05, 0x97, +0x2B, 0xF2, 0x7A, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x80, 0x18, 0xF7, 0x40, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x72, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x7A, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, -0xED, 0x40, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xF7, 0x40, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x72, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x04, 0x41, 0x05, 0x97, +0x2B, 0xF2, 0x7A, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x80, 0x18, 0x0E, 0x41, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x72, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x7A, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, -0x04, 0x41, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x0E, 0x41, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x72, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x04, 0x41, 0x05, 0x97, +0x2B, 0xF2, 0x7A, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x80, 0x18, 0x0E, 0x41, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x00, 0x18, 0x86, 0xE1, 0x02, 0x67, +0x04, 0xD0, 0x00, 0x18, 0x22, 0xE3, 0x02, 0x67, 0x01, 0x6A, 0x0C, 0xEA, 0x11, 0x22, 0x00, 0x6C, 0x01, 0x6D, 0x00, 0x18, 0xD7, 0xC5, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF0, 0x4C, 0x9A, 0xFF, 0x6C, +0x20, 0x6A, 0x24, 0xF0, 0x44, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x60, 0x9A, 0x8C, 0xEB, 0x08, 0x23, 0x60, 0x9A, 0x8D, 0xEB, 0x60, 0xDA, 0x04, 0x10, 0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, 0xD7, 0xC5, 0x40, 0x6A, 0x0C, 0xEA, 0x1B, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF0, 0x50, 0x9A, 0x60, 0xA2, +0x20, 0x6A, 0x24, 0xF0, 0x48, 0x9A, 0x60, 0xA2, 0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, 0x00, 0x53, 0x00, 0x6B, 0x02, 0x61, 0x80, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x40, 0xF1, 0x96, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0x40, 0xF1, 0x96, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x03, 0x23, 0x00, 0x6B, -0x43, 0xF6, 0x68, 0xC2, 0x10, 0x6B, 0x0C, 0xEB, +0x43, 0xF6, 0x6C, 0xC2, 0x10, 0x6B, 0x0C, 0xEB, 0x09, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6B, -0x2B, 0xF1, 0x18, 0x4A, 0x83, 0xF6, 0x68, 0xC2, +0x8B, 0xF1, 0x00, 0x4A, 0x83, 0xF6, 0x6C, 0xC2, 0x07, 0x6B, 0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x83, 0xF6, 0x68, 0xC2, -0x04, 0x6B, 0x03, 0xF6, 0x70, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF6, 0x90, 0xA2, 0x63, 0xF1, -0x64, 0x9B, 0xFF, 0x6D, 0x08, 0x6E, 0x80, 0xC3, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x80, 0x9B, +0x8B, 0xF1, 0x00, 0x4A, 0x83, 0xF6, 0x6C, 0xC2, +0x04, 0x6B, 0x03, 0xF6, 0x74, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF6, 0x94, 0xA2, 0x83, 0xF1, +0x68, 0x9B, 0xFF, 0x6D, 0x08, 0x6E, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x9C, 0x9B, 0xCB, 0xEE, 0x60, 0xA4, 0xAC, 0xEB, 0xCC, 0xEB, 0x06, 0x6E, 0xCD, 0xEB, 0xAC, 0xEB, 0x60, 0xC4, -0x83, 0xF6, 0xA8, 0xA2, 0x30, 0xF0, 0x20, 0x6C, -0x4E, 0xF7, 0x06, 0x4C, 0x00, 0x18, 0x19, 0xE9, +0x83, 0xF6, 0xAC, 0xA2, 0x30, 0xF0, 0x20, 0x6C, +0x8E, 0xF7, 0x12, 0x4C, 0x00, 0x18, 0xBE, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xEF, 0xF6, 0x70, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x20, 0xE7, +0xAF, 0xF7, 0x70, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0xC5, 0xE8, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x6F, 0xC1, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x6E, 0x29, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x7D, 0x29, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xA0, 0xF0, 0x7B, 0xA0, 0x7F, 0x6A, 0xFF, 0x69, -0x6C, 0xEA, 0x1E, 0x22, 0xA0, 0xF0, 0x9E, 0xA0, -0x96, 0x34, 0x2C, 0xEC, 0x00, 0x18, 0xD4, 0xE1, -0x02, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, 0x07, 0x23, -0xA0, 0xF0, 0x9E, 0xA0, 0x96, 0x34, 0x2C, 0xEC, -0x00, 0x18, 0x97, 0xCD, 0x0D, 0x10, 0xA0, 0xF0, -0x9E, 0xA0, 0xE3, 0xF5, 0x7C, 0xA0, 0x05, 0x6A, -0x4B, 0xEA, 0x96, 0x34, 0x6C, 0xEA, 0x2C, 0xEC, -0xE3, 0xF5, 0x5C, 0xC0, 0x00, 0x18, 0x10, 0xD0, +0x6C, 0xEA, 0x2D, 0x22, 0xA0, 0xF0, 0x9E, 0xA0, +0x64, 0xF5, 0x58, 0xA8, 0x96, 0x34, 0x01, 0x4A, +0x2C, 0xEC, 0x64, 0xF5, 0x58, 0xC8, 0x00, 0x18, +0x70, 0xE3, 0x02, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, +0x0C, 0x23, 0xA0, 0xF0, 0x9E, 0xA0, 0x64, 0xF5, +0x54, 0xA8, 0x96, 0x34, 0x01, 0x4A, 0x2C, 0xEC, +0x64, 0xF5, 0x54, 0xC8, 0x00, 0x18, 0x9D, 0xCE, +0x12, 0x10, 0x64, 0xF5, 0x5A, 0xA8, 0xA0, 0xF0, +0x9E, 0xA0, 0x03, 0xF6, 0x60, 0xA0, 0x01, 0x4A, +0x64, 0xF5, 0x5A, 0xC8, 0x05, 0x6A, 0x4B, 0xEA, +0x96, 0x34, 0x6C, 0xEA, 0x2C, 0xEC, 0x03, 0xF6, +0x40, 0xC0, 0x00, 0x18, 0x48, 0xD1, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x9B, 0xA2, +0x7F, 0x6B, 0x8C, 0xEB, 0x07, 0x23, 0xA0, 0xF0, +0x9E, 0xA2, 0xFF, 0x6A, 0x96, 0x34, 0x4C, 0xEC, +0x00, 0x18, 0x5A, 0xD1, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x04, 0x67, +0x2C, 0xE8, 0x90, 0x67, 0x80, 0x18, 0x34, 0x27, +0x06, 0x70, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x6C, 0x9A, 0x01, 0x6C, 0x40, 0xA3, +0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA0, 0xF0, 0x9B, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, -0x07, 0x23, 0xA0, 0xF0, 0x9E, 0xA2, 0xFF, 0x6A, -0x96, 0x34, 0x4C, 0xEC, 0x00, 0x18, 0x22, 0xD0, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x69, 0x04, 0x67, 0x2C, 0xE8, 0x90, 0x67, -0x80, 0x18, 0x25, 0x27, 0x06, 0x70, 0x0A, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x74, 0x9A, -0x01, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, -0x2C, 0xEA, 0x40, 0xC3, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x4B, 0xF2, 0xB5, 0xA3, 0x01, 0x6B, 0xFF, 0x6A, -0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x02, 0x23, -0x80, 0x18, 0x13, 0x00, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, -0x55, 0xA2, 0xFF, 0x68, 0x8C, 0xE8, 0x0E, 0xEA, -0x02, 0x2A, 0x80, 0x18, 0x09, 0x71, 0x30, 0xF0, -0x20, 0x6A, 0xEB, 0xF1, 0x56, 0xA2, 0x56, 0x32, -0x0E, 0xEA, 0x06, 0x2A, 0x90, 0x67, 0x00, 0x18, -0xA8, 0xCF, 0x00, 0x6C, 0x00, 0x18, 0xB3, 0xC6, -0x90, 0x67, 0x00, 0x18, 0xE6, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x4B, 0xF2, 0x6E, 0xA2, 0x07, 0x6A, -0x6C, 0xEA, 0x0E, 0xEA, 0x02, 0x2A, 0x80, 0x18, -0xB6, 0x5F, 0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, -0xFF, 0xCE, 0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF2, -0x75, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x90, 0x67, 0x80, 0x18, 0x13, 0x00, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xBD, 0x29, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE0, 0xF0, 0x9A, 0xA2, -0x01, 0x6B, 0x6C, 0xEC, 0x08, 0x24, 0xA4, 0xF5, -0x43, 0xA2, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x02, 0x2A, 0x80, 0x18, 0x8B, 0x5E, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xF7, 0xD4, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xF4, 0xD4, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x35, 0x22, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x7F, 0x21, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0xB2, 0x20, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x4B, 0xF2, 0xB5, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF2, 0xBD, 0xA3, 0x01, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, -0x4C, 0xEC, 0x02, 0x23, 0x80, 0x18, 0x5D, 0x00, +0x4C, 0xEC, 0x02, 0x23, 0x80, 0x18, 0x13, 0x00, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x09, 0xE1, 0x05, 0x97, 0x03, 0x63, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x4E, 0xF5, 0x41, 0xA2, 0xFF, 0x68, +0x8C, 0xE8, 0x0E, 0xEA, 0x02, 0x2A, 0x80, 0x18, +0xF1, 0x72, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, +0x5E, 0xA2, 0x56, 0x32, 0x0E, 0xEA, 0x06, 0x2A, +0x90, 0x67, 0x00, 0x18, 0xDE, 0xD0, 0x00, 0x6C, +0x00, 0x18, 0xED, 0xC6, 0x90, 0x67, 0x00, 0x18, +0x45, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF2, +0x76, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, 0x0E, 0xEA, +0x02, 0x2A, 0x80, 0x18, 0xF7, 0x60, 0x90, 0x67, +0x00, 0x6D, 0x00, 0x18, 0x32, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF2, 0x7D, 0xA2, 0x01, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x90, 0x67, 0x80, 0x18, +0x13, 0x00, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF2, -0x6E, 0xA2, 0xFF, 0x68, 0x07, 0x6A, 0x8C, 0xE8, +0x80, 0x18, 0xCC, 0x29, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xE0, 0xF0, 0x9A, 0xA2, 0x01, 0x6B, 0x6C, 0xEC, +0x08, 0x24, 0x04, 0xF6, 0x43, 0xA2, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x02, 0x2A, 0x80, 0x18, +0xCC, 0x5F, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x47, 0xD6, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x44, 0xD6, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x20, 0x22, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x66, 0x21, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x99, 0x20, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF2, 0xBD, 0xA3, 0x01, 0x6B, 0xFF, 0x6A, +0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x02, 0x23, +0x80, 0x18, 0x5D, 0x00, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xA4, 0xE2, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x80, 0x18, 0x58, 0x01, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF2, 0x76, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, 0x0E, 0xEA, 0x02, 0x2A, 0x80, 0x18, -0xFF, 0x5F, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, -0x55, 0xA2, 0x0E, 0xEA, 0x02, 0x2A, 0x80, 0x18, -0xB7, 0x70, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x7E, 0xA2, 0xFF, 0x6C, +0x45, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x4E, 0xF5, +0x41, 0xA2, 0x0E, 0xEA, 0x02, 0x2A, 0x80, 0x18, +0x9F, 0x72, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x7E, 0xA2, 0xFF, 0x6C, 0x76, 0x33, 0x0E, 0xEB, 0x0F, 0x2B, 0xA0, 0xF0, 0xBB, 0xA2, 0x7F, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, -0x09, 0x23, 0xE3, 0xF5, 0x7C, 0xA2, 0x40, 0x6A, +0x09, 0x23, 0x03, 0xF6, 0x60, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, 0x03, 0x22, 0x90, 0x67, -0x00, 0x18, 0x01, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, 0x79, 0xA2, -0x0E, 0xEB, 0x11, 0x2B, 0xA4, 0xF5, 0x78, 0xA2, +0x00, 0x18, 0xA6, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x24, 0xF6, 0x71, 0xA2, +0x0E, 0xEB, 0x11, 0x2B, 0x24, 0xF6, 0x70, 0xA2, 0x1F, 0x6C, 0x6A, 0x32, 0x8C, 0xEA, 0x47, 0xE8, 0x01, 0x6C, 0x8C, 0xEA, 0x08, 0x22, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0x20, 0xE7, 0x30, 0xF0, -0x20, 0x6A, 0x0E, 0xF5, 0x78, 0xA2, 0x0F, 0x6A, +0x00, 0x6C, 0x00, 0x18, 0xC5, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x6E, 0xF5, 0x64, 0xA2, 0x0F, 0x6A, 0x6C, 0xEA, 0x0E, 0xEA, 0x06, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x50, 0x9A, 0x90, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF2, -0x75, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF2, +0x7D, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x90, 0x67, 0x80, 0x18, 0x5D, 0x00, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x17, 0xE1, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0xB2, 0xE2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0x60, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x68, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, 0x6D, 0xE4, 0x08, 0x68, 0x80, 0xA3, 0xDB, 0xE0, 0x02, 0x67, 0x4C, 0xED, 0x07, 0xEE, 0xD0, 0x67, 0x4C, 0xEF, 0x04, 0xED, 0x4C, 0xEC, 0xCC, 0xEF, 0x0F, 0xE8, 0x8C, 0xE8, 0xE4, 0xED, 0xED, 0xE8, 0x4C, 0xE8, 0x00, 0xC3, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x48, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x4D, 0xE3, 0x40, 0xA3, 0xFF, 0x6C, 0x8C, 0xEE, 0x08, 0x6B, 0xDB, 0xE3, 0x8C, 0xED, 0x8C, 0xEA, 0x64, 0x67, 0x47, 0xED, 0x67, 0xEE, 0x6C, 0xEA, 0x8C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x74, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0xB0, 0xF5, -0x05, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF0, 0x48, 0x9A, 0x40, 0x9A, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x78, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0x11, 0xF4, +0x15, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF0, 0x40, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, 0x09, 0x70, 0x13, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, 0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x64, 0xDA, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD9, 0x17, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, -0x10, 0xF0, 0x24, 0x6A, 0x10, 0xF6, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0x91, 0xF4, 0x09, 0x4A, 0x40, 0xDB, 0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF0, 0xAC, 0x9A, 0xFF, 0x6C, 0x40, 0xA5, +0x44, 0xF0, 0xA4, 0x9A, 0xFF, 0x6C, 0x40, 0xA5, 0xA0, 0xA5, 0x8C, 0xEA, 0xAC, 0xEC, 0x4E, 0xEC, 0x19, 0x24, 0x64, 0x73, 0x12, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF2, 0x8C, 0x9B, 0x40, 0x6D, +0x20, 0x6B, 0x43, 0xF2, 0x94, 0x9B, 0x40, 0x6D, 0x60, 0x9C, 0xAD, 0xEB, 0x60, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0xA3, 0xF3, -0x80, 0x9B, 0xAD, 0xEC, 0xA3, 0xF3, 0x80, 0xDB, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0xA3, 0xF3, +0x84, 0x9B, 0xAD, 0xEC, 0xA3, 0xF3, 0x84, 0xDB, 0x20, 0xE8, 0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, 0xDC, 0x17, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, 0x00, 0x68, 0x2B, 0x10, 0x82, 0xF3, 0x08, 0x70, 0x12, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, 0x10, 0x6C, +0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, 0x10, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, -0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x60, 0xDA, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, +0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, 0x14, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, -0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x54, 0x9A, 0x01, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, +0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, +0x4C, 0x9A, 0x01, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF0, 0x50, 0x9A, 0x01, 0x6B, +0x20, 0x6A, 0x44, 0xF0, 0x48, 0x9A, 0x01, 0x6B, 0x40, 0x9A, 0x42, 0x32, 0x5E, 0x32, 0x6C, 0xEA, 0x2E, 0xEA, 0xCA, 0x2A, 0x43, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, -0x10, 0xF0, 0x24, 0x6A, 0x10, 0xF7, 0x01, 0x4A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, -0x54, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x74, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0x10, 0xF7, -0x02, 0x4A, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0x71, 0xF5, 0x11, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, +0x4C, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x78, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0x71, 0xF5, +0x12, 0x4A, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x4C, 0xED, -0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, -0x58, 0x9A, 0x80, 0xC2, 0xA0, 0xC2, 0x20, 0xE8, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, -0x78, 0x9B, 0x4C, 0xEC, 0x94, 0x34, 0x4C, 0xEC, +0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, +0x50, 0x9A, 0x80, 0xC2, 0xA0, 0xC2, 0x20, 0xE8, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF0, +0x70, 0x9B, 0x4C, 0xEC, 0x94, 0x34, 0x4C, 0xEC, 0x80, 0xC3, 0x60, 0xA3, 0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, 0xCC, 0xEA, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x71, 0xE4, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x71, 0xE4, 0x83, 0xF3, 0x6C, 0xA4, 0xAC, 0xEA, +0x8B, 0xF1, 0x00, 0x4B, 0x71, 0xE4, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x71, 0xE4, 0x83, 0xF3, 0x70, 0xA4, 0xAC, 0xEA, 0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0x83, 0xF3, -0x4C, 0xC4, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x50, 0xC4, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6B, 0x6C, 0xEC, 0x07, 0x6A, 0x6C, 0xED, 0x8C, 0xEA, 0x01, 0x68, 0xE6, 0x67, 0x04, 0xEA, 0xAB, 0xEE, 0x30, 0xF0, 0x20, 0x6A, @@ -22908,47 +23196,47 @@ u8 array_mp_8822c_fw_nic[] = { 0xB0, 0x67, 0x0C, 0xEE, 0x6C, 0xEC, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x00, 0x18, 0xC0, 0xE1, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF3, 0x68, 0x9A, 0xEF, 0x6A, 0x80, 0xA3, +0x00, 0x18, 0x5C, 0xE3, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF3, 0x6C, 0x9A, 0xEF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6C, 0x00, 0x18, -0x9E, 0xE1, 0x00, 0x18, 0x44, 0xC8, 0x2B, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF2, 0x61, 0xA2, +0x3A, 0xE3, 0x00, 0x18, 0xA1, 0xC8, 0x2B, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF2, 0x69, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x22, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, -0x7C, 0x9A, 0x7F, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, +0x22, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, +0x74, 0x9A, 0x7F, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xAB, 0x07, 0x69, 0x8C, 0xEA, 0x40, 0xCB, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x44, 0x9A, 0x0A, 0x6C, 0x20, 0xC2, 0x80, 0xF3, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x48, 0x9A, 0x0A, 0x6C, 0x20, 0xC2, 0x80, 0xF3, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF4, 0x54, 0x9A, 0x0A, 0x6C, 0x20, 0xC2, +0x03, 0xF5, 0x48, 0x9A, 0x0A, 0x6C, 0x20, 0xC2, 0x80, 0xF3, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE3, 0xF5, -0x9C, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, 0xE3, 0xF5, -0x7C, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x80, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, 0x03, 0xF6, +0x60, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0xE3, 0xF5, 0x7C, 0xA0, +0x8B, 0xF1, 0x00, 0x48, 0x03, 0xF6, 0x60, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, 0x6D, 0xEA, 0x83, 0xF6, -0x68, 0xA0, 0xE3, 0xF5, 0x5C, 0xC0, 0x01, 0x6A, -0x44, 0xF5, 0x42, 0xC0, 0x04, 0xD3, 0x80, 0xF0, -0x01, 0x23, 0x02, 0x6A, 0x03, 0xF6, 0x40, 0xC0, +0x6C, 0xA0, 0x03, 0xF6, 0x40, 0xC0, 0x01, 0x6A, +0x84, 0xF5, 0x5A, 0xC0, 0x04, 0xD3, 0x80, 0xF0, +0x01, 0x23, 0x02, 0x6A, 0x03, 0xF6, 0x44, 0xC0, 0x5C, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, 0x21, 0x6C, 0xFC, 0xF7, 0x18, 0x4C, 0xBF, 0x67, 0xA0, 0xDC, 0x9A, 0xB8, 0x00, 0x65, 0xBB, 0xB8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF2, 0x98, 0x9C, 0x40, 0x9B, 0x10, 0x6D, +0x23, 0xF2, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x43, 0xF2, 0x80, 0x9C, 0x40, 0x9B, 0x10, 0x6D, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF1, 0x58, 0x9A, 0x04, 0x6B, 0xFF, 0x6C, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x00, 0x6B, 0x22, 0xF6, 0x76, 0xC2, -0x03, 0xF6, 0x6E, 0xAA, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF0, 0x40, 0x9A, 0x60, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF3, 0x68, 0x9A, 0x40, 0xA3, +0xA3, 0xF1, 0x5C, 0x9A, 0x04, 0x6B, 0xFF, 0x6C, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x00, 0x6B, 0x22, 0xF6, 0x7A, 0xC2, +0x03, 0xF6, 0x72, 0xAA, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF0, 0x58, 0x9A, 0x60, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF3, 0x6C, 0x9A, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x01, 0x6C, 0x00, 0x18, 0x9E, 0xE1, 0xA0, 0xF0, +0x01, 0x6C, 0x00, 0x18, 0x3A, 0xE3, 0xA0, 0xF0, 0x0D, 0x22, 0x58, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x79, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, 0x21, 0x69, 0xDC, 0xF7, @@ -22964,23 +23252,23 @@ u8 array_mp_8822c_fw_nic[] = { 0x10, 0x48, 0x00, 0x98, 0x01, 0x69, 0x2D, 0xE8, 0x77, 0xF0, 0x20, 0x69, 0x80, 0xF0, 0x10, 0x49, 0x00, 0xD9, 0x1A, 0xB8, 0x00, 0x65, 0x3B, 0xB8, -0x00, 0x65, 0x47, 0x10, 0x03, 0xF6, 0x40, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF6, 0x6E, 0xA8, -0x44, 0xF0, 0x40, 0x9A, 0x60, 0xCA, 0x00, 0x18, -0x44, 0xC8, 0x23, 0x22, 0xC0, 0xF0, 0x69, 0xA0, +0x00, 0x65, 0x47, 0x10, 0x03, 0xF6, 0x44, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF6, 0x72, 0xA8, +0x44, 0xF0, 0x58, 0x9A, 0x60, 0xCA, 0x00, 0x18, +0xA1, 0xC8, 0x23, 0x22, 0xC0, 0xF0, 0x69, 0xA0, 0x08, 0x6A, 0x6C, 0xEA, 0x1E, 0x22, 0x9D, 0x67, 0x67, 0x44, 0x09, 0x4B, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xA3, 0xC3, 0xF3, 0x44, 0x9A, 0x7D, 0x67, +0x80, 0xA3, 0xE3, 0xF3, 0x48, 0x9A, 0x7D, 0x67, 0x80, 0x6D, 0x80, 0xC2, 0x87, 0x43, 0x09, 0x4C, -0x30, 0xF0, 0x20, 0x6A, 0x60, 0xA4, 0xE3, 0xF4, -0x54, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xA4, 0x03, 0xF5, +0x48, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, 0x74, 0x9A, 0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, -0x68, 0x9A, 0xFF, 0x68, 0x10, 0x6C, 0x40, 0xA3, +0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, +0x6C, 0x9A, 0xFF, 0x68, 0x10, 0x6C, 0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, -0x01, 0x6C, 0x00, 0x18, 0x9E, 0xE1, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF0, 0x74, 0x9A, 0x01, 0x6C, +0x01, 0x6C, 0x00, 0x18, 0x3A, 0xE3, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF0, 0x6C, 0x9A, 0x01, 0x6C, 0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, @@ -22999,13 +23287,13 @@ u8 array_mp_8822c_fw_nic[] = { 0x64, 0x67, 0x05, 0x67, 0x0E, 0xD6, 0x06, 0xD7, 0x1A, 0x61, 0xC7, 0x45, 0x0E, 0x95, 0x00, 0x6A, 0x04, 0xD2, 0x6D, 0xED, 0x30, 0xF0, 0x20, 0x6B, -0x05, 0xD2, 0x44, 0xF0, 0x64, 0x9B, 0x30, 0xF0, +0x05, 0xD2, 0x44, 0xF0, 0x7C, 0x9B, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x58, 0x9A, 0x05, 0x4E, 0xFF, 0x6F, 0x00, 0x6C, 0x6C, 0xEE, 0x01, 0x4F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x5C, 0x9A, 0x00, 0x6C, 0x2C, 0x10, 0x47, 0x45, 0x05, 0x4A, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF0, 0x44, 0x9A, 0x07, 0x94, 0x30, 0xF0, +0x44, 0xF0, 0x5C, 0x9A, 0x07, 0x94, 0x30, 0xF0, 0x20, 0x6F, 0x0E, 0x95, 0x4C, 0xEC, 0x07, 0xD4, 0xE0, 0xF2, 0x58, 0x9F, 0x07, 0x96, 0x06, 0x97, 0x00, 0x69, 0x6D, 0xED, 0x91, 0x67, 0x04, 0xD1, @@ -23060,2286 +23348,2291 @@ u8 array_mp_8822c_fw_nic[] = { 0xC2, 0xF7, 0x08, 0x4B, 0x4C, 0xEE, 0x04, 0xD4, 0x81, 0x9B, 0x64, 0xAB, 0x4A, 0xD6, 0x05, 0xD4, 0x9D, 0x67, 0x6C, 0xCC, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xFF, 0x68, 0xAC, 0xE8, -0xC7, 0xF3, 0xA8, 0xA3, 0x03, 0x6C, 0x8B, 0xEC, -0x24, 0x48, 0xAC, 0xEC, 0xC7, 0xF3, 0x88, 0xC3, -0x4C, 0xE8, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF2, 0x40, 0x9B, 0x48, 0x94, 0xFF, 0xF7, -0x1F, 0x6B, 0xA1, 0x40, 0x6C, 0xED, 0x40, 0xEA, -0x49, 0xD2, 0x02, 0x2A, 0x02, 0x6A, 0x15, 0x11, -0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF2, 0x40, 0x9C, -0x48, 0x94, 0xB0, 0x67, 0x40, 0xEA, 0x05, 0x72, -0x06, 0x61, 0x49, 0x92, 0x01, 0x6B, 0x04, 0x5A, -0x03, 0x6A, 0x13, 0x60, 0x06, 0x11, 0x49, 0x92, -0xFF, 0xF7, 0x1F, 0x6B, 0x01, 0x49, 0x02, 0x4A, -0x41, 0xE0, 0x4A, 0x92, 0x6C, 0xE8, 0x6C, 0xE9, -0xFC, 0x4A, 0x42, 0xE8, 0x02, 0x61, 0x00, 0x6B, -0x04, 0x10, 0xE0, 0xF1, 0x14, 0x71, 0xD2, 0x61, -0xF3, 0x10, 0xE0, 0xF1, 0x14, 0x71, 0xE0, 0xF0, -0x0F, 0x60, 0x00, 0x6A, 0xE0, 0xF0, 0x0D, 0x23, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0xC7, 0xF3, 0x88, 0xA3, 0xF7, 0x4A, 0x30, 0xF0, -0x20, 0x69, 0x8C, 0xEA, 0x05, 0x6C, 0x8B, 0xEC, -0x8C, 0xEA, 0xC7, 0xF3, 0x48, 0xC3, 0xC0, 0xF2, -0x40, 0x99, 0x48, 0x94, 0xFF, 0xF7, 0x1F, 0x6B, -0xA2, 0x40, 0x6C, 0xED, 0x40, 0xEA, 0x9D, 0x67, -0x5C, 0xC4, 0xC0, 0xF2, 0x40, 0x99, 0x48, 0x94, -0xFF, 0xF7, 0x1F, 0x6B, 0xA3, 0x40, 0x6C, 0xED, -0x40, 0xEA, 0x9D, 0x67, 0x5D, 0xC4, 0xC0, 0xF2, -0x40, 0x99, 0x48, 0x94, 0xA4, 0x40, 0xFF, 0xF7, -0x1F, 0x6B, 0x6C, 0xED, 0x40, 0xEA, 0x9D, 0x67, -0x5E, 0xC4, 0x05, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE8, 0x00, 0x69, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x48, 0x94, 0xC0, 0xF2, 0x40, 0x9A, -0xB0, 0x67, 0x01, 0x48, 0x40, 0xEA, 0x9D, 0x67, -0x2D, 0xE4, 0x5F, 0xC3, 0x01, 0x49, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE9, 0x4C, 0xE8, 0x49, 0x92, -0xFD, 0x4A, 0x42, 0xE9, 0xEC, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x0B, 0xF2, 0x56, 0xA2, 0x7D, 0x67, -0x44, 0x32, 0x49, 0xE3, 0x68, 0xAA, 0x1F, 0xF7, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x0B, 0xF2, 0x56, 0xA2, 0x9D, 0x67, 0x44, 0x32, -0x49, 0xE4, 0x68, 0xAA, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0x49, 0xE3, 0x60, 0xAA, -0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x48, 0x9A, 0x4D, 0xE3, 0x60, 0xAB, 0xFF, 0xF7, -0x1F, 0x6A, 0x9D, 0x67, 0x6C, 0xEA, 0x7C, 0xA4, -0x0E, 0x2B, 0x7E, 0xA4, 0x01, 0x6C, 0x8C, 0xEB, -0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xC7, 0xF3, 0xA8, 0xA3, 0x08, 0x6C, -0xAD, 0xEC, 0xC7, 0xF3, 0x88, 0xC3, 0x49, 0x95, -0xE0, 0xF7, 0x1F, 0x6E, 0x4C, 0xEE, 0x5D, 0x67, -0xFE, 0xA2, 0xFD, 0x4D, 0xFF, 0x6B, 0x00, 0xF0, -0x1F, 0x04, 0x6C, 0xED, 0x00, 0x18, 0xF7, 0xE2, -0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xC7, 0xF3, 0x88, 0xA2, 0x04, 0x6B, -0x8D, 0xEB, 0xC7, 0xF3, 0x68, 0xC2, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xC7, 0xF3, -0x68, 0xA0, 0x0C, 0x6A, 0x6C, 0xEA, 0x10, 0x2A, -0x03, 0xF6, 0x61, 0xA0, 0xFE, 0x4A, 0xC0, 0xF0, -0x9E, 0xA0, 0x6C, 0xEA, 0x05, 0x6B, 0x6B, 0xEB, -0x6C, 0xEA, 0x02, 0x4B, 0x6C, 0xEA, 0x03, 0xF6, -0x41, 0xC0, 0x00, 0x18, 0x10, 0xD0, 0x3A, 0x10, -0x08, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x16, 0x22, 0x03, 0xF6, 0x41, 0xA0, 0x02, 0x69, -0xC0, 0xF0, 0xC3, 0xA0, 0x2D, 0xEA, 0x03, 0xF6, -0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x48, 0x9A, 0xFF, 0x6C, 0x55, 0x4C, 0x00, 0x6D, -0x40, 0xEA, 0xE3, 0xF5, 0x5C, 0xA0, 0x4D, 0xE9, -0xE3, 0xF5, 0x3C, 0xC0, 0x07, 0x10, 0x03, 0xF6, -0x61, 0xA0, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x03, 0xF6, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xC7, 0xF3, 0x88, 0xA2, -0x04, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0xC0, 0xF0, -0x9E, 0xA2, 0x00, 0x18, 0xFC, 0xCF, 0x0A, 0x10, -0x03, 0xF6, 0x81, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0x05, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, -0x03, 0xF6, 0x61, 0xC2, 0x00, 0x6A, 0x01, 0x10, -0x01, 0x6A, 0x4F, 0x97, 0x4E, 0x91, 0x4D, 0x90, -0x28, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x6B, 0xFF, 0xF7, -0x1F, 0x6A, 0xAC, 0xEB, 0x4C, 0xEC, 0x08, 0xD3, -0x30, 0xF0, 0x20, 0x6B, 0x09, 0xD4, 0xC2, 0xF7, -0x94, 0x9B, 0xC2, 0xF7, 0x14, 0x4B, 0x08, 0x90, -0x04, 0xD4, 0x81, 0x9B, 0x64, 0xAB, 0x4C, 0xEF, -0x05, 0xD4, 0x10, 0x48, 0x9D, 0x67, 0x0A, 0xD7, -0x6C, 0xCC, 0x4C, 0xE8, 0x00, 0x69, 0x30, 0xF0, -0x20, 0x6A, 0x09, 0x94, 0xC0, 0xF2, 0x40, 0x9A, -0xB0, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x0B, 0xF2, 0x76, 0xA3, 0x9D, 0x67, 0x64, 0x33, -0x6D, 0xE4, 0x88, 0xAB, 0x1F, 0xF7, 0x00, 0x6B, -0x91, 0xE1, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, -0x01, 0x60, 0x10, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x0B, 0xF2, 0x76, 0xA3, 0x9D, 0x67, 0x64, 0x33, -0x6D, 0xE4, 0x68, 0xAB, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF1, 0x84, 0x9C, 0x6D, 0xE1, 0x8D, 0xE3, -0x80, 0xA3, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x68, 0x9B, 0x71, 0xE4, 0x80, 0xA4, -0xFF, 0x6B, 0x8C, 0xEB, 0x6E, 0xEA, 0x27, 0x2A, -0x01, 0x49, 0x01, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, -0x06, 0x71, 0x4C, 0xE8, 0xC8, 0x61, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xC7, 0xF3, -0x68, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x17, 0x22, -0x09, 0x94, 0x08, 0x95, 0x0A, 0x96, 0x00, 0x18, -0x1C, 0xE3, 0x12, 0x22, 0xC7, 0xF3, 0x88, 0xA0, -0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xC7, 0xF3, -0x68, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF0, -0x88, 0x9B, 0xFF, 0xF6, 0x1F, 0x6B, 0xA0, 0xAC, -0xAC, 0xEB, 0x60, 0xCC, 0x01, 0x10, 0x00, 0x6A, -0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, -0xFF, 0xF7, 0x1F, 0x6B, 0xCC, 0xEB, 0x8C, 0xEA, -0x04, 0xD2, 0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0xFF, 0x68, 0xC0, 0xF2, 0x40, 0x9B, 0x04, 0x94, -0x0C, 0xED, 0x05, 0xD5, 0x03, 0x6D, 0x40, 0xEA, -0x05, 0x95, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0x69, -0x4C, 0xE9, 0x18, 0x4D, 0xC0, 0xF2, 0x40, 0x9B, -0x04, 0x94, 0xFF, 0xF7, 0x1F, 0x6B, 0xB5, 0xE1, -0x6C, 0xED, 0x40, 0xEA, 0x04, 0x6B, 0x6B, 0xEB, -0x4C, 0xEB, 0x0C, 0xEB, 0x50, 0x73, 0x1F, 0x60, -0x80, 0x73, 0x3D, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF1, 0x74, 0xA2, -0x01, 0x6C, 0x8C, 0xEB, 0x0C, 0xEB, 0x08, 0x23, -0x07, 0xF3, 0xA8, 0xA2, 0x7F, 0x6B, 0xAC, 0xEB, -0x03, 0x73, 0x02, 0x61, 0x07, 0xF2, 0x80, 0xC2, -0x05, 0x95, 0x04, 0x94, 0x05, 0x96, 0x18, 0x4D, -0x06, 0x97, 0xB5, 0xE1, 0xFF, 0x6A, 0x4C, 0xED, -0x00, 0x18, 0xC3, 0xE3, 0x20, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF1, -0x94, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0C, 0xEB, -0x16, 0x23, 0x07, 0xF3, 0x68, 0xA2, 0x7F, 0x6D, -0xAC, 0xEB, 0x03, 0x73, 0x10, 0x61, 0x07, 0xF3, -0x8C, 0x9A, 0x80, 0x6B, 0x6B, 0xEB, 0xC1, 0xA4, -0xCC, 0xEB, 0x0C, 0xEB, 0x08, 0x23, 0x07, 0xF2, -0x41, 0xA2, 0x01, 0x72, 0x04, 0x61, 0xCC, 0xED, -0xA1, 0xC4, 0x80, 0x18, 0x85, 0x65, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x50, 0x9A, -0xFF, 0x6B, 0xFF, 0xF7, 0x1F, 0x69, 0x40, 0xA2, -0x00, 0x6C, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x48, 0x9A, 0x05, 0xD3, 0x40, 0xAA, -0x4C, 0xE9, 0x63, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF0, 0xCC, 0x9A, 0x30, 0xF0, 0x20, 0x6D, -0x91, 0x67, 0x8E, 0xF3, 0x18, 0x4D, 0xE5, 0xF6, -0x1F, 0x6F, 0x00, 0x18, 0xA4, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x8E, 0xF3, 0x78, 0x9A, 0x0F, 0x6D, -0xFF, 0xF7, 0x1F, 0x6E, 0x42, 0xA3, 0xE1, 0xA3, -0x83, 0xA3, 0x4C, 0xED, 0x3F, 0x68, 0x40, 0xA3, -0xEC, 0xE8, 0xFE, 0x65, 0x92, 0x34, 0x01, 0x6E, -0x00, 0x30, 0xCC, 0xEC, 0x4D, 0xE8, 0xAC, 0x35, -0xFF, 0x6A, 0x10, 0x2C, 0x18, 0x48, 0xE7, 0xF7, -0x1F, 0x6B, 0xA1, 0xE0, 0x6C, 0xE8, 0xD7, 0xF7, -0x01, 0x4B, 0xEC, 0xEB, 0x4C, 0xEB, 0x29, 0x2B, -0x91, 0x67, 0x4C, 0xED, 0xD0, 0x67, 0x00, 0x18, -0x01, 0xE4, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF0, 0x98, 0x9C, 0x07, 0x68, 0xE0, 0xA4, -0x80, 0xA4, 0x8C, 0xE8, 0x10, 0x6C, 0xEC, 0xEC, -0x14, 0x30, 0x4C, 0xEC, 0x4C, 0xE8, 0x11, 0x24, -0x92, 0xA3, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x4C, 0xEB, 0xFC, 0x73, 0x02, 0x60, 0xFE, 0x73, -0x03, 0x61, 0x07, 0x45, 0x21, 0x48, 0x09, 0x10, -0x18, 0x48, 0xA1, 0xE0, 0x5F, 0x67, 0x4C, 0xE8, -0x04, 0x10, 0x18, 0x48, 0xA1, 0xE0, 0x7F, 0x67, -0x6C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x58, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x40, 0xEA, -0x04, 0x94, 0x22, 0x67, 0xFF, 0x6A, 0x01, 0x4C, -0x4C, 0xEC, 0x04, 0xD4, 0x04, 0x96, 0x05, 0x92, -0x43, 0xEE, 0x98, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x50, 0x9A, 0x40, 0xA2, 0x0A, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA0, 0xF0, 0x64, 0x9A, 0x00, 0xF2, 0x00, 0x6C, -0x8D, 0xEB, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, -0x00, 0xF2, 0x01, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x38, 0xE4, +0x8B, 0xF1, 0x00, 0x4B, 0x64, 0xF5, 0x88, 0xAB, +0xFF, 0x68, 0xAC, 0xE8, 0x01, 0x4C, 0x47, 0xF4, +0xA0, 0xA3, 0x64, 0xF5, 0x88, 0xCB, 0x03, 0x6C, +0x8B, 0xEC, 0x24, 0x48, 0xAC, 0xEC, 0x47, 0xF4, +0x80, 0xC3, 0x4C, 0xE8, 0x00, 0x69, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF2, 0x40, 0x9B, 0x48, 0x94, +0xFF, 0xF7, 0x1F, 0x6B, 0xA1, 0x40, 0x6C, 0xED, +0x40, 0xEA, 0x49, 0xD2, 0x02, 0x2A, 0x02, 0x6A, +0x15, 0x11, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF2, +0x40, 0x9C, 0x48, 0x94, 0xB0, 0x67, 0x40, 0xEA, +0x05, 0x72, 0x06, 0x61, 0x49, 0x92, 0x01, 0x6B, +0x04, 0x5A, 0x03, 0x6A, 0x13, 0x60, 0x06, 0x11, +0x49, 0x92, 0xFF, 0xF7, 0x1F, 0x6B, 0x01, 0x49, +0x02, 0x4A, 0x41, 0xE0, 0x4A, 0x92, 0x6C, 0xE8, +0x6C, 0xE9, 0xFC, 0x4A, 0x42, 0xE8, 0x02, 0x61, +0x00, 0x6B, 0x04, 0x10, 0xE0, 0xF1, 0x14, 0x71, +0xD2, 0x61, 0xF3, 0x10, 0xE0, 0xF1, 0x14, 0x71, +0xE0, 0xF0, 0x0F, 0x60, 0x00, 0x6A, 0xE0, 0xF0, +0x0D, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x47, 0xF4, 0x80, 0xA3, 0xF7, 0x4A, +0x30, 0xF0, 0x20, 0x69, 0x8C, 0xEA, 0x05, 0x6C, +0x8B, 0xEC, 0x8C, 0xEA, 0x47, 0xF4, 0x40, 0xC3, +0xC0, 0xF2, 0x40, 0x99, 0x48, 0x94, 0xFF, 0xF7, +0x1F, 0x6B, 0xA2, 0x40, 0x6C, 0xED, 0x40, 0xEA, +0x9D, 0x67, 0x5C, 0xC4, 0xC0, 0xF2, 0x40, 0x99, +0x48, 0x94, 0xFF, 0xF7, 0x1F, 0x6B, 0xA3, 0x40, +0x6C, 0xED, 0x40, 0xEA, 0x9D, 0x67, 0x5D, 0xC4, +0xC0, 0xF2, 0x40, 0x99, 0x48, 0x94, 0xA4, 0x40, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xED, 0x40, 0xEA, +0x9D, 0x67, 0x5E, 0xC4, 0x05, 0x48, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0x00, 0x69, 0x10, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x48, 0x94, 0xC0, 0xF2, +0x40, 0x9A, 0xB0, 0x67, 0x01, 0x48, 0x40, 0xEA, +0x9D, 0x67, 0x2D, 0xE4, 0x5F, 0xC3, 0x01, 0x49, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0x4C, 0xE8, +0x49, 0x92, 0xFD, 0x4A, 0x42, 0xE9, 0xEC, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF2, 0x5E, 0xA2, +0x7D, 0x67, 0x44, 0x32, 0x49, 0xE3, 0x68, 0xAA, +0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x0F, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x4B, 0xF2, 0x5E, 0xA2, 0x9D, 0x67, +0x44, 0x32, 0x49, 0xE4, 0x68, 0xAA, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, 0x49, 0xE3, +0x60, 0xAA, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x4C, 0x9A, 0x4D, 0xE3, 0x60, 0xAB, +0xFF, 0xF7, 0x1F, 0x6A, 0x9D, 0x67, 0x6C, 0xEA, +0x7C, 0xA4, 0x0E, 0x2B, 0x7E, 0xA4, 0x01, 0x6C, +0x8C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x47, 0xF4, 0xA0, 0xA3, +0x08, 0x6C, 0xAD, 0xEC, 0x47, 0xF4, 0x80, 0xC3, +0x49, 0x95, 0xE0, 0xF7, 0x1F, 0x6E, 0x4C, 0xEE, +0x5D, 0x67, 0xFE, 0xA2, 0xFD, 0x4D, 0xFF, 0x6B, +0x00, 0xF0, 0x1F, 0x04, 0x6C, 0xED, 0x00, 0x18, +0x93, 0xE4, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, 0x80, 0xA2, +0x04, 0x6B, 0x8D, 0xEB, 0x47, 0xF4, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x47, 0xF4, 0x60, 0xA0, 0x0C, 0x6A, 0x6C, 0xEA, +0x10, 0x2A, 0x03, 0xF6, 0x65, 0xA0, 0xFE, 0x4A, +0xC0, 0xF0, 0x9E, 0xA0, 0x6C, 0xEA, 0x05, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0x02, 0x4B, 0x6C, 0xEA, +0x03, 0xF6, 0x45, 0xC0, 0x00, 0x18, 0x48, 0xD1, +0x3A, 0x10, 0x08, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x16, 0x22, 0x03, 0xF6, 0x45, 0xA0, +0x02, 0x69, 0xC0, 0xF0, 0xC3, 0xA0, 0x2D, 0xEA, +0x03, 0xF6, 0x45, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, 0x55, 0x4C, +0x00, 0x6D, 0x40, 0xEA, 0x03, 0xF6, 0x40, 0xA0, +0x4D, 0xE9, 0x03, 0xF6, 0x20, 0xC0, 0x07, 0x10, +0x03, 0xF6, 0x65, 0xA0, 0x03, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x03, 0xF6, 0x45, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, +0x80, 0xA2, 0x04, 0x6B, 0x8C, 0xEB, 0x05, 0x23, +0xC0, 0xF0, 0x9E, 0xA2, 0x00, 0x18, 0x32, 0xD1, +0x0A, 0x10, 0x03, 0xF6, 0x85, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x05, 0x6C, 0x8B, 0xEC, +0x8C, 0xEB, 0x03, 0xF6, 0x65, 0xC2, 0x00, 0x6A, +0x01, 0x10, 0x01, 0x6A, 0x4F, 0x97, 0x4E, 0x91, +0x4D, 0x90, 0x28, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6B, 0xFF, 0xF7, 0x1F, 0x6A, 0xAC, 0xEB, +0x4C, 0xEC, 0x08, 0xD3, 0x30, 0xF0, 0x20, 0x6B, +0x09, 0xD4, 0xC2, 0xF7, 0x94, 0x9B, 0xC2, 0xF7, +0x14, 0x4B, 0x08, 0x90, 0x04, 0xD4, 0x81, 0x9B, +0x64, 0xAB, 0x4C, 0xEF, 0x05, 0xD4, 0x10, 0x48, +0x9D, 0x67, 0x0A, 0xD7, 0x6C, 0xCC, 0x4C, 0xE8, +0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0x09, 0x94, +0xC0, 0xF2, 0x40, 0x9A, 0xB0, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x4B, 0xF2, 0x7E, 0xA3, +0x9D, 0x67, 0x64, 0x33, 0x6D, 0xE4, 0x88, 0xAB, +0x1F, 0xF7, 0x00, 0x6B, 0x91, 0xE1, 0x8C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x10, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x4B, 0xF2, 0x7E, 0xA3, +0x9D, 0x67, 0x64, 0x33, 0x6D, 0xE4, 0x68, 0xAB, +0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, 0x88, 0x9C, +0x6D, 0xE1, 0x8D, 0xE3, 0x80, 0xA3, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, +0x71, 0xE4, 0x80, 0xA4, 0xFF, 0x6B, 0x8C, 0xEB, +0x6E, 0xEA, 0x27, 0x2A, 0x01, 0x49, 0x01, 0x48, +0xFF, 0xF7, 0x1F, 0x6A, 0x06, 0x71, 0x4C, 0xE8, +0xC8, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x47, 0xF4, 0x60, 0xA0, 0x01, 0x6A, +0x6C, 0xEA, 0x17, 0x22, 0x09, 0x94, 0x08, 0x95, +0x0A, 0x96, 0x00, 0x18, 0xB8, 0xE4, 0x12, 0x22, +0x47, 0xF4, 0x80, 0xA0, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x47, 0xF4, 0x60, 0xC0, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF0, 0x80, 0x9B, 0xFF, 0xF6, +0x1F, 0x6B, 0xA0, 0xAC, 0xAC, 0xEB, 0x60, 0xCC, +0x01, 0x10, 0x00, 0x6A, 0x0F, 0x97, 0x0E, 0x91, +0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, +0xCC, 0xEB, 0x8C, 0xEA, 0x04, 0xD2, 0x06, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x68, 0xC0, 0xF2, +0x40, 0x9B, 0x04, 0x94, 0x0C, 0xED, 0x05, 0xD5, +0x03, 0x6D, 0x40, 0xEA, 0x05, 0x95, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0x69, 0x4C, 0xE9, 0x18, 0x4D, +0xC0, 0xF2, 0x40, 0x9B, 0x04, 0x94, 0xFF, 0xF7, +0x1F, 0x6B, 0xB5, 0xE1, 0x6C, 0xED, 0x40, 0xEA, +0x04, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, 0x0C, 0xEB, +0x50, 0x73, 0x1F, 0x60, 0x80, 0x73, 0x3D, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x67, 0xF2, 0x6C, 0xA2, 0x01, 0x6C, 0x8C, 0xEB, +0x0C, 0xEB, 0x08, 0x23, 0x87, 0xF3, 0xA0, 0xA2, +0x7F, 0x6B, 0xAC, 0xEB, 0x03, 0x73, 0x02, 0x61, +0x67, 0xF2, 0x98, 0xC2, 0x05, 0x95, 0x04, 0x94, +0x05, 0x96, 0x18, 0x4D, 0x06, 0x97, 0xB5, 0xE1, +0xFF, 0x6A, 0x4C, 0xED, 0x00, 0x18, 0x62, 0xE5, +0x20, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x67, 0xF2, 0x8C, 0xA2, 0x01, 0x6B, +0x8C, 0xEB, 0x0C, 0xEB, 0x16, 0x23, 0x87, 0xF3, +0x60, 0xA2, 0x7F, 0x6D, 0xAC, 0xEB, 0x03, 0x73, +0x10, 0x61, 0x87, 0xF3, 0x84, 0x9A, 0x80, 0x6B, +0x6B, 0xEB, 0xC1, 0xA4, 0xCC, 0xEB, 0x0C, 0xEB, +0x08, 0x23, 0x67, 0xF2, 0x59, 0xA2, 0x01, 0x72, +0x04, 0x61, 0xCC, 0xED, 0xA1, 0xC4, 0x80, 0x18, +0x10, 0x67, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF2, 0x58, 0x9A, 0xFF, 0x6B, 0xFF, 0xF7, +0x1F, 0x69, 0x40, 0xA2, 0x00, 0x6C, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x50, 0x9A, +0x05, 0xD3, 0x40, 0xAA, 0x4C, 0xE9, 0x63, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0xC4, 0x9A, +0x30, 0xF0, 0x20, 0x6D, 0x91, 0x67, 0xEE, 0xF3, +0x04, 0x4D, 0xE5, 0xF6, 0x1F, 0x6F, 0x00, 0x18, +0x40, 0xE4, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF3, +0x64, 0x9A, 0x0F, 0x6D, 0xFF, 0xF7, 0x1F, 0x6E, +0x42, 0xA3, 0xE1, 0xA3, 0x83, 0xA3, 0x4C, 0xED, +0x3F, 0x68, 0x40, 0xA3, 0xEC, 0xE8, 0xFE, 0x65, +0x92, 0x34, 0x01, 0x6E, 0x00, 0x30, 0xCC, 0xEC, +0x4D, 0xE8, 0xAC, 0x35, 0xFF, 0x6A, 0x10, 0x2C, +0x18, 0x48, 0xE7, 0xF7, 0x1F, 0x6B, 0xA1, 0xE0, +0x6C, 0xE8, 0xD7, 0xF7, 0x01, 0x4B, 0xEC, 0xEB, +0x4C, 0xEB, 0x29, 0x2B, 0x91, 0x67, 0x4C, 0xED, +0xD0, 0x67, 0x00, 0x18, 0xA0, 0xE5, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF1, 0x9C, 0x9C, +0x07, 0x68, 0xE0, 0xA4, 0x80, 0xA4, 0x8C, 0xE8, +0x10, 0x6C, 0xEC, 0xEC, 0x14, 0x30, 0x4C, 0xEC, +0x4C, 0xE8, 0x11, 0x24, 0x92, 0xA3, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x4C, 0xEB, 0xFC, 0x73, +0x02, 0x60, 0xFE, 0x73, 0x03, 0x61, 0x07, 0x45, +0x21, 0x48, 0x09, 0x10, 0x18, 0x48, 0xA1, 0xE0, +0x5F, 0x67, 0x4C, 0xE8, 0x04, 0x10, 0x18, 0x48, +0xA1, 0xE0, 0x7F, 0x67, 0x6C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x58, 0x9A, 0x91, 0x67, +0xB0, 0x67, 0x40, 0xEA, 0x04, 0x94, 0x22, 0x67, +0xFF, 0x6A, 0x01, 0x4C, 0x4C, 0xEC, 0x04, 0xD4, +0x04, 0x96, 0x05, 0x92, 0x43, 0xEE, 0x98, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x58, 0x9A, +0x40, 0xA2, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, +0x00, 0xF2, 0x00, 0x6C, 0x8D, 0xEB, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA0, 0xF0, 0x64, 0x9A, 0x00, 0xF2, 0x01, 0x6C, +0x8B, 0xEC, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xD7, 0xE5, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6B, 0xFF, 0xF7, 0x1F, 0x6A, 0xAC, 0xEB, +0x8C, 0xEA, 0x08, 0x23, 0x30, 0xF0, 0x20, 0x6C, +0x09, 0xF3, 0x68, 0xAC, 0x4D, 0xEB, 0x09, 0xF3, +0x68, 0xCC, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x09, 0xF3, 0x88, 0xAB, 0x4F, 0xEA, 0x8C, 0xEA, +0x09, 0xF3, 0x48, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0x09, 0xF3, 0x68, 0xAA, 0x02, 0x6A, 0x30, 0xF0, +0x20, 0x6C, 0x6C, 0xEA, 0x4B, 0xEA, 0x64, 0xF0, +0x80, 0x9C, 0xC0, 0xF7, 0x42, 0x32, 0x40, 0x32, +0x40, 0xCC, 0x1C, 0x6A, 0x6C, 0xEA, 0x0B, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x7C, 0x9A, +0xFF, 0x6C, 0x08, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0x48, 0xAA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x7C, 0x9A, +0xFF, 0x6C, 0x80, 0x6D, 0x40, 0xA3, 0xAB, 0xED, +0x8C, 0xEA, 0xAD, 0xEA, 0x0B, 0x10, 0x00, 0x18, +0x27, 0xE6, 0x00, 0x18, 0xD7, 0xED, 0xFB, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x7C, 0x9A, +0x7F, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6B, 0xFF, 0xF7, -0x1F, 0x6A, 0xAC, 0xEB, 0x8C, 0xEA, 0x08, 0x23, -0x30, 0xF0, 0x20, 0x6C, 0xC9, 0xF2, 0x60, 0xAC, -0x4D, 0xEB, 0xC9, 0xF2, 0x60, 0xCC, 0x08, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF2, 0x80, 0xAB, -0x4F, 0xEA, 0x8C, 0xEA, 0xC9, 0xF2, 0x40, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x60, 0xAA, -0x02, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x6C, 0xEA, -0x4B, 0xEA, 0x44, 0xF0, 0x88, 0x9C, 0xC0, 0xF7, -0x42, 0x32, 0x40, 0x32, 0x40, 0xCC, 0x1C, 0x6A, -0x6C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x78, 0x9A, 0xFF, 0x6C, 0x08, 0x6D, -0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, -0x40, 0xAA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x78, 0x9A, 0xFF, 0x6C, 0x80, 0x6D, -0x40, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, -0x0B, 0x10, 0x00, 0x18, 0x88, 0xE4, 0x00, 0x18, -0x32, 0xEC, 0xFB, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x78, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x24, 0x67, 0x00, 0x18, 0x03, 0xC2, 0x04, 0xD2, +0x04, 0x93, 0x00, 0x6A, 0x30, 0x2B, 0x1E, 0x21, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, 0xAA, 0xA2, +0x30, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x58, 0xED, +0x4A, 0xF1, 0x10, 0x48, 0x91, 0x67, 0xC2, 0x67, +0x12, 0xED, 0xB5, 0xE0, 0x00, 0x18, 0x9D, 0xD8, +0x30, 0xF0, 0x20, 0x6B, 0x09, 0xF3, 0x4A, 0xA3, +0x30, 0x6B, 0x78, 0xEA, 0x12, 0xEA, 0x01, 0xE2, +0x5D, 0x67, 0x67, 0x42, 0x09, 0x4B, 0x40, 0xA3, +0x20, 0xF0, 0x4E, 0xC0, 0x30, 0xF0, 0x20, 0x6B, +0x09, 0xF3, 0x4A, 0xA3, 0x0F, 0x6C, 0x01, 0x4A, +0x8C, 0xEA, 0x09, 0xF3, 0x4A, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0x6C, 0xA2, 0xFF, 0x4B, +0x09, 0xF3, 0x6C, 0xC2, 0x01, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x08, 0xD4, 0x09, 0xD5, 0x0A, 0xD6, 0x0B, 0xD7, +0x00, 0x18, 0x07, 0xC2, 0x02, 0x67, 0x00, 0x6A, +0x1A, 0x28, 0x30, 0xF0, 0x20, 0x69, 0x09, 0xF3, +0x8E, 0xA1, 0x30, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x78, 0xEC, 0x4A, 0xF4, 0x10, 0x4A, 0xC3, 0x67, +0x08, 0x05, 0x12, 0xEC, 0x91, 0xE2, 0x00, 0x18, +0x9D, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, +0x6F, 0xA2, 0x09, 0xF3, 0x0E, 0xC1, 0x01, 0x4B, +0x09, 0xF3, 0x6F, 0xC2, 0x01, 0x6A, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, 0x6C, 0xA2, +0x00, 0x6A, 0x06, 0x2B, 0x30, 0xF0, 0x20, 0x6A, +0x09, 0xF3, 0x4F, 0xA2, 0x01, 0x5A, 0x58, 0x67, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x09, 0xF3, 0x4F, 0xA2, 0x01, 0x5A, 0x58, 0x67, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0xFF, 0x74, 0xAC, 0xEA, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xEE, 0xF4, 0x5F, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x63, 0xF3, 0xBF, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, +0xAC, 0xEC, 0x8D, 0xEA, 0x63, 0xF3, 0x5F, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x06, 0x67, +0x4F, 0xF7, 0xD9, 0xA3, 0x08, 0x6B, 0xFF, 0x6A, +0xCC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x4C, 0xED, +0x4C, 0xE8, 0x04, 0x23, 0x6C, 0x40, 0x4C, 0xEB, +0x0D, 0x5B, 0x1F, 0x61, 0x53, 0x70, 0x09, 0x60, +0x06, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, +0x5E, 0xA2, 0xAD, 0xEA, 0x0D, 0x10, 0x00, 0x18, +0x97, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x63, 0xF3, 0x7F, 0xA2, 0x63, 0xF3, +0x5E, 0xA2, 0x6D, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x64, 0x9B, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, +0x1C, 0xC2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x0A, 0xD4, 0x0B, 0xD5, +0x0C, 0xD6, 0x0D, 0xD7, 0x00, 0x18, 0xFE, 0xC1, +0x04, 0xD2, 0x04, 0x93, 0x00, 0x6A, 0x05, 0xD2, +0x54, 0x2B, 0x30, 0xF0, 0x20, 0x69, 0x09, 0xF3, +0x8B, 0xA1, 0x30, 0x6A, 0x30, 0xF0, 0x20, 0x68, +0x58, 0xEC, 0x4A, 0xF1, 0x10, 0x48, 0x0A, 0x05, +0xC2, 0x67, 0x12, 0xEC, 0x91, 0xE0, 0x00, 0x18, +0x9D, 0xD8, 0x09, 0xF3, 0x8B, 0xA1, 0x30, 0x6D, +0x30, 0xF0, 0x20, 0x6A, 0xB8, 0xEC, 0x02, 0xF1, +0x60, 0xA2, 0x12, 0xEC, 0x01, 0xE4, 0x20, 0xF0, +0x6E, 0xC0, 0x01, 0x4B, 0x02, 0xF1, 0x60, 0xC2, +0x7D, 0x67, 0x87, 0x43, 0x09, 0x4C, 0x60, 0xA4, +0x20, 0xF0, 0x6F, 0xC0, 0x02, 0xF1, 0x60, 0xA2, +0x03, 0x2B, 0x01, 0x6B, 0x02, 0xF1, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x69, 0x09, 0xF3, 0x8B, 0xA1, +0x30, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x58, 0xEC, +0x4A, 0xF1, 0x10, 0x48, 0x04, 0xD4, 0x12, 0xEA, +0x09, 0xE2, 0x20, 0xF0, 0x4E, 0xA2, 0x05, 0xD2, +0x00, 0x18, 0xD3, 0xDE, 0x04, 0x95, 0x06, 0x6C, +0x98, 0xED, 0x12, 0xEC, 0x01, 0x4C, 0x8C, 0x34, +0x01, 0xE4, 0x61, 0xD8, 0x40, 0xD8, 0x09, 0xF3, +0x4B, 0xA1, 0x0F, 0x6B, 0x01, 0x4A, 0x6C, 0xEA, +0x09, 0xF3, 0x4B, 0xC1, 0x30, 0xF0, 0x20, 0x6A, +0x09, 0xF3, 0x6C, 0xA2, 0x01, 0x4B, 0x09, 0xF3, +0x6C, 0xC2, 0x05, 0x92, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD0, 0x0E, 0xD4, +0x0F, 0xD5, 0x10, 0xD6, 0x11, 0xD7, 0x00, 0x18, +0x07, 0xC2, 0x00, 0x68, 0x1C, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, +0x02, 0x67, 0x00, 0x18, 0xD3, 0xDE, 0x13, 0x20, +0x12, 0xD2, 0x13, 0xD3, 0x00, 0x6A, 0x04, 0x04, +0x12, 0x03, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, +0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, +0xF9, 0x61, 0x0E, 0x94, 0x0F, 0x95, 0x10, 0x96, +0x11, 0x97, 0x00, 0x18, 0x76, 0xE6, 0x50, 0x67, +0x0D, 0x97, 0x0C, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xF3, 0x63, 0x19, 0x62, 0x00, 0x18, 0x03, 0xC2, +0x21, 0x22, 0x24, 0x10, 0x7D, 0x67, 0x40, 0xF0, +0x5F, 0xA3, 0x1C, 0x2A, 0x0C, 0x92, 0x1A, 0x22, +0x00, 0x18, 0xD3, 0xDE, 0x0E, 0x95, 0x12, 0x04, +0xB7, 0xE2, 0x0C, 0x92, 0x40, 0xEA, 0x12, 0x22, +0x00, 0x6A, 0x04, 0x04, 0x10, 0x03, 0x05, 0x10, +0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, +0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x0C, 0x94, +0x0D, 0x95, 0x0E, 0x96, 0x0F, 0x97, 0x00, 0x18, +0xF4, 0xE6, 0x04, 0x10, 0x0C, 0x04, 0x00, 0x18, +0x56, 0xE6, 0xDC, 0x2A, 0x19, 0x97, 0x0D, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x24, 0x67, 0x00, 0x18, -0x03, 0xC2, 0x04, 0xD2, 0x04, 0x93, 0x00, 0x6A, -0x30, 0x2B, 0x1E, 0x21, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF2, 0xA2, 0xA2, 0x30, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x58, 0xED, 0x0A, 0xF1, 0x08, 0x48, -0x91, 0x67, 0xC2, 0x67, 0x12, 0xED, 0xB5, 0xE0, -0x00, 0x18, 0x42, 0xD7, 0x30, 0xF0, 0x20, 0x6B, -0xC9, 0xF2, 0x42, 0xA3, 0x30, 0x6B, 0x78, 0xEA, -0x12, 0xEA, 0x01, 0xE2, 0x5D, 0x67, 0x67, 0x42, -0x09, 0x4B, 0x40, 0xA3, 0x20, 0xF0, 0x4E, 0xC0, -0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF2, 0x42, 0xA3, -0x0F, 0x6C, 0x01, 0x4A, 0x8C, 0xEA, 0xC9, 0xF2, -0x42, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, -0x64, 0xA2, 0xFF, 0x4B, 0xC9, 0xF2, 0x64, 0xC2, -0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x08, 0xD4, 0x09, 0xD5, -0x0A, 0xD6, 0x0B, 0xD7, 0x00, 0x18, 0x07, 0xC2, -0x02, 0x67, 0x00, 0x6A, 0x1A, 0x28, 0x30, 0xF0, -0x20, 0x69, 0xC9, 0xF2, 0x86, 0xA1, 0x30, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x78, 0xEC, 0x0A, 0xF4, -0x08, 0x4A, 0xC3, 0x67, 0x08, 0x05, 0x12, 0xEC, -0x91, 0xE2, 0x00, 0x18, 0x42, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0xC9, 0xF2, 0x67, 0xA2, 0xC9, 0xF2, -0x06, 0xC1, 0x01, 0x4B, 0xC9, 0xF2, 0x67, 0xC2, -0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF2, 0x64, 0xA2, 0x00, 0x6A, 0x06, 0x2B, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x47, 0xA2, -0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x47, 0xA2, -0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x4C, 0xEC, 0xFF, 0x74, 0xAC, 0xEA, -0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xAE, 0xF4, -0x53, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x63, 0xF3, 0xBB, 0xA3, -0x8C, 0xEA, 0x8F, 0xEC, 0xAC, 0xEC, 0x8D, 0xEA, -0x63, 0xF3, 0x5B, 0xC3, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x68, 0x26, 0x67, 0x0C, 0xE9, 0x53, 0x71, -0x0C, 0xEC, 0x0C, 0xED, 0x09, 0x60, 0x06, 0x2C, -0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF4, 0x52, 0xA2, -0xAD, 0xEA, 0x0B, 0x10, 0x00, 0x18, 0xF8, 0xE4, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x63, 0xF3, 0x7B, 0xA2, 0x63, 0xF3, 0x5A, 0xA2, -0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x60, 0x9B, 0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xAE, 0xF4, 0x30, 0xC2, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x0A, 0xD4, 0x0B, 0xD5, 0x0C, 0xD6, 0x0D, 0xD7, -0x00, 0x18, 0xFE, 0xC1, 0x04, 0xD2, 0x04, 0x93, -0x00, 0x6A, 0x05, 0xD2, 0x54, 0x2B, 0x30, 0xF0, -0x20, 0x69, 0xC9, 0xF2, 0x83, 0xA1, 0x30, 0x6A, -0x30, 0xF0, 0x20, 0x68, 0x58, 0xEC, 0x0A, 0xF1, -0x08, 0x48, 0x0A, 0x05, 0xC2, 0x67, 0x12, 0xEC, -0x91, 0xE0, 0x00, 0x18, 0x42, 0xD7, 0xC9, 0xF2, -0x83, 0xA1, 0x30, 0x6D, 0x30, 0xF0, 0x20, 0x6A, -0xB8, 0xEC, 0x02, 0xF1, 0x60, 0xA2, 0x12, 0xEC, -0x01, 0xE4, 0x20, 0xF0, 0x6E, 0xC0, 0x01, 0x4B, -0x02, 0xF1, 0x60, 0xC2, 0x7D, 0x67, 0x87, 0x43, -0x09, 0x4C, 0x60, 0xA4, 0x20, 0xF0, 0x6F, 0xC0, -0x02, 0xF1, 0x60, 0xA2, 0x03, 0x2B, 0x01, 0x6B, -0x02, 0xF1, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x69, -0xC9, 0xF2, 0x83, 0xA1, 0x30, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x58, 0xEC, 0x0A, 0xF1, 0x08, 0x48, -0x04, 0xD4, 0x12, 0xEA, 0x09, 0xE2, 0x20, 0xF0, -0x4E, 0xA2, 0x05, 0xD2, 0x00, 0x18, 0x5F, 0xDD, -0x04, 0x95, 0x06, 0x6C, 0x98, 0xED, 0x12, 0xEC, -0x01, 0x4C, 0x8C, 0x34, 0x01, 0xE4, 0x61, 0xD8, -0x40, 0xD8, 0xC9, 0xF2, 0x43, 0xA1, 0x0F, 0x6B, -0x01, 0x4A, 0x6C, 0xEA, 0xC9, 0xF2, 0x43, 0xC1, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x64, 0xA2, -0x01, 0x4B, 0xC9, 0xF2, 0x64, 0xC2, 0x05, 0x92, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD0, 0x0E, 0xD4, 0x0F, 0xD5, 0x10, 0xD6, -0x11, 0xD7, 0x00, 0x18, 0x07, 0xC2, 0x00, 0x68, -0x1C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x54, 0x9A, 0x40, 0xEA, 0x02, 0x67, 0x00, 0x18, -0x5F, 0xDD, 0x13, 0x20, 0x12, 0xD2, 0x13, 0xD3, -0x00, 0x6A, 0x04, 0x04, 0x12, 0x03, 0x05, 0x10, -0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, -0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x0E, 0x94, -0x0F, 0x95, 0x10, 0x96, 0x11, 0x97, 0x00, 0x18, -0xD7, 0xE4, 0x50, 0x67, 0x0D, 0x97, 0x0C, 0x90, -0x07, 0x63, 0x00, 0xEF, 0xF3, 0x63, 0x19, 0x62, -0x00, 0x18, 0x03, 0xC2, 0x21, 0x22, 0x24, 0x10, -0x7D, 0x67, 0x40, 0xF0, 0x5F, 0xA3, 0x1C, 0x2A, -0x0C, 0x92, 0x1A, 0x22, 0x00, 0x18, 0x5F, 0xDD, -0x0E, 0x95, 0x12, 0x04, 0xB7, 0xE2, 0x0C, 0x92, -0x40, 0xEA, 0x12, 0x22, 0x00, 0x6A, 0x04, 0x04, -0x10, 0x03, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, -0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, -0xF9, 0x61, 0x0C, 0x94, 0x0D, 0x95, 0x0E, 0x96, -0x0F, 0x97, 0x00, 0x18, 0x4F, 0xE5, 0x04, 0x10, -0x0C, 0x04, 0x00, 0x18, 0xB7, 0xE4, 0xDC, 0x2A, -0x19, 0x97, 0x0D, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x24, 0x67, 0x00, 0x18, 0xF4, 0xE4, 0x04, 0xD2, -0x04, 0x93, 0x00, 0x6A, 0x2E, 0x2B, 0x00, 0x18, -0x5F, 0xDD, 0x1E, 0x21, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF2, 0xA5, 0xA2, 0x30, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x58, 0xED, 0x0A, 0xF4, 0x08, 0x48, -0x91, 0x67, 0xC2, 0x67, 0x12, 0xED, 0xB5, 0xE0, -0x00, 0x18, 0x42, 0xD7, 0x30, 0xF0, 0x20, 0x6B, -0xC9, 0xF2, 0x45, 0xA3, 0x30, 0x6B, 0x78, 0xEA, -0x12, 0xEA, 0x01, 0xE2, 0x5D, 0x67, 0x67, 0x42, -0x09, 0x4B, 0x40, 0xA3, 0x20, 0xF0, 0x4E, 0xC0, -0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, -0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, -0x67, 0xA2, 0xFF, 0x4B, 0xC9, 0xF2, 0x67, 0xC2, -0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xF7, 0x63, 0x11, 0x62, -0x00, 0x18, 0xF4, 0xE4, 0x0D, 0x2A, 0x04, 0x04, -0x00, 0x18, 0x7C, 0xE5, 0x09, 0x22, 0x05, 0x92, -0x07, 0x22, 0x00, 0x18, 0x5F, 0xDD, 0x06, 0x95, -0x02, 0x6C, 0xB7, 0xE2, 0x05, 0x92, 0x40, 0xEA, -0x11, 0x97, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF7, 0x63, 0x11, 0x62, 0x04, 0x04, 0x00, 0x18, -0x7C, 0xE5, 0x09, 0x22, 0x05, 0x92, 0x07, 0x22, -0x00, 0x18, 0x5F, 0xDD, 0x06, 0x95, 0x00, 0x6C, -0xB7, 0xE2, 0x05, 0x92, 0x40, 0xEA, 0x11, 0x97, -0x09, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, -0x12, 0xD1, 0x11, 0xD0, 0x04, 0x00, 0x24, 0x67, -0x00, 0x6D, 0x90, 0x67, 0x30, 0x6E, 0x00, 0x18, -0x3D, 0xD7, 0x90, 0x67, 0x00, 0x18, 0x7C, 0xE5, -0x10, 0x22, 0x00, 0x18, 0x5F, 0xDD, 0x08, 0x90, -0x03, 0xE2, 0x00, 0x18, 0x1D, 0xF1, 0x04, 0x22, -0x05, 0x92, 0x91, 0x67, 0x04, 0x2A, 0x05, 0x10, -0x05, 0x92, 0x03, 0x22, 0x00, 0x6C, 0xB0, 0x67, -0x40, 0xEA, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, -0x0A, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x3B, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0xC9, 0xF2, 0x67, 0xA3, 0x14, 0x23, -0x30, 0xF0, 0x20, 0x6C, 0xC9, 0xF2, 0xA5, 0xA4, -0x30, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0x98, 0xED, -0x0A, 0xF4, 0x08, 0x4B, 0x12, 0xEC, 0x6D, 0xE4, -0x20, 0xF0, 0x6E, 0xA3, 0x6E, 0xEA, 0x26, 0x2A, -0x03, 0x6C, 0x00, 0x18, 0xAF, 0xE5, 0x22, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF2, 0x64, 0xA3, -0x17, 0x2B, 0x1C, 0x10, 0xA0, 0xA4, 0x4E, 0xED, -0x0C, 0x2D, 0x30, 0x6C, 0x98, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x0A, 0xF1, 0x08, 0x4A, 0x12, 0xEB, -0x49, 0xE3, 0x01, 0x6B, 0x20, 0xF0, 0x6F, 0xC2, -0x0D, 0x10, 0x01, 0x4B, 0xFF, 0x6D, 0xAC, 0xEB, -0x10, 0x73, 0x30, 0x4C, 0xEB, 0x61, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x2A, 0xF1, 0x16, 0x4C, -0x00, 0x6B, 0xE4, 0x17, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x01, 0x6C, 0x00, 0x18, 0xAF, 0xE5, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, -0x12, 0xD1, 0x11, 0xD0, 0x00, 0x18, 0x85, 0xD6, -0x20, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF2, -0xA5, 0xA3, 0x30, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x78, 0xED, 0x0A, 0xF4, 0x08, 0x4A, 0x04, 0x04, -0xC3, 0x67, 0x12, 0xED, 0xB5, 0xE2, 0x00, 0x18, -0x42, 0xD7, 0x08, 0x90, 0x09, 0x91, 0x00, 0x18, -0x5F, 0xDD, 0x03, 0xE2, 0x03, 0xEA, 0x58, 0x67, -0x27, 0xE3, 0x4B, 0xE1, 0x03, 0x2A, 0x82, 0xF3, -0x08, 0x58, 0x07, 0x61, 0x00, 0x18, 0xE3, 0xE5, -0x02, 0x10, 0x00, 0x18, 0xA6, 0xE5, 0x00, 0x18, -0x65, 0xE5, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, -0x0A, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xF4, 0xE4, 0x03, 0x2A, 0x00, 0x18, -0xE7, 0xE5, 0x0B, 0x10, 0x00, 0x18, 0x03, 0xC2, -0x06, 0x2A, 0x00, 0x18, 0x85, 0xD6, 0x05, 0x22, -0x00, 0x18, 0x65, 0xE5, 0x02, 0x10, 0x00, 0x18, -0x85, 0xD6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA0, 0xF0, 0x64, 0x9A, 0x10, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xEF, 0xF6, 0x51, 0xA2, -0xFF, 0x63, 0x05, 0x5A, 0x36, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x48, 0x32, 0xE2, 0xF7, 0x00, 0x4B, -0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x54, 0x9A, 0xFF, 0xF7, -0x1F, 0x6B, 0x40, 0x9A, 0x1A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x54, 0x9A, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x48, 0x9A, -0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, -0x48, 0x9A, 0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, -0x42, 0x32, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF0, 0x4C, 0x9A, 0x40, 0x9A, 0xE1, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x00, 0xD2, 0x00, 0x93, -0xE0, 0xF3, 0x08, 0x6A, 0x60, 0x33, 0x68, 0x33, -0x5B, 0xEB, 0x01, 0x2A, 0xE5, 0xE8, 0x12, 0xEA, -0x01, 0x10, 0x66, 0x6A, 0x00, 0xD2, 0x00, 0x92, -0x01, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD0, -0x15, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF1, -0x98, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0x5D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, 0xB8, 0xA2, -0x03, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0xA4, 0xF5, -0x78, 0xC2, 0xA4, 0xF5, 0xDC, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x0F, 0xF7, 0x10, 0x4A, 0x00, 0x6D, -0x18, 0x6F, 0xF8, 0xED, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x12, 0xEF, 0x6D, 0xE7, -0xC4, 0xF5, 0x0C, 0xA3, 0x01, 0x6F, 0xEC, 0xE8, -0x23, 0x20, 0xC4, 0xF5, 0x6C, 0xA3, 0x66, 0x33, -0xEC, 0xEB, 0xFF, 0x6F, 0xEC, 0xEB, 0x1C, 0x23, -0xFF, 0xF7, 0x78, 0x9A, 0x9B, 0xEB, 0x01, 0x2C, -0xE5, 0xE8, 0x12, 0xEB, 0xFF, 0xF7, 0x7C, 0xDA, -0x10, 0xEF, 0x03, 0x27, 0x01, 0x4B, 0xFF, 0xF7, -0x7C, 0xDA, 0x60, 0x9A, 0x78, 0xEE, 0x12, 0xEB, -0x9B, 0xEB, 0x01, 0x2C, 0xE5, 0xE8, 0x12, 0xEB, -0x60, 0xDA, 0xFF, 0xF7, 0x7C, 0x9A, 0x04, 0x2B, -0x01, 0x6F, 0xFF, 0xF7, 0xFC, 0xDA, 0x60, 0xDA, -0x01, 0x4D, 0x0A, 0x75, 0x18, 0x4A, 0xCC, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xC4, 0xF5, 0x60, 0x9A, 0xA4, 0xF5, 0x9C, 0xDA, -0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0xA4, 0xF5, -0x98, 0xA2, 0x12, 0xEB, 0xC4, 0xF5, 0x64, 0xDA, -0x78, 0x67, 0xC4, 0xF5, 0x68, 0xDA, 0x02, 0x6B, -0x8D, 0xEB, 0xA4, 0xF5, 0x78, 0xC2, 0x01, 0x90, -0x01, 0x63, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xA4, 0xF5, 0x58, 0xA0, 0x03, 0x6B, -0x4C, 0xEB, 0x00, 0x6A, 0x26, 0x2B, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF0, 0x50, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xFF, 0x6E, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0xEF, 0xF6, -0x10, 0x4C, 0x00, 0x6D, 0x05, 0x4E, 0x40, 0xEA, -0x66, 0x6A, 0xA4, 0xF5, 0x5C, 0xD8, 0xC4, 0xF5, -0x44, 0xD8, 0x01, 0x6A, 0x4B, 0xEA, 0xA4, 0xF5, -0x98, 0xA0, 0xA4, 0xF5, 0x59, 0xC0, 0x7D, 0x6A, -0x4B, 0xEA, 0x01, 0x6B, 0x8C, 0xEA, 0x6D, 0xEA, -0xA4, 0xF5, 0x58, 0xC0, 0xC4, 0xF5, 0x60, 0xD8, -0x43, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xA4, 0xF5, 0x98, 0xA0, 0x01, 0x6B, -0x00, 0x6A, 0x8C, 0xEB, 0x22, 0x23, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF0, 0x50, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, -0xA4, 0xF5, 0x58, 0xC0, 0x00, 0x18, 0x10, 0xE6, -0x04, 0xD2, 0x04, 0x94, 0x00, 0x18, 0x31, 0xE6, -0xA4, 0xF5, 0x78, 0xA0, 0x02, 0x6A, 0xC4, 0xF5, -0xC0, 0x98, 0x6D, 0xEA, 0xA4, 0xF5, 0x58, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, -0x42, 0xF1, 0x1C, 0x6C, 0x01, 0x6D, 0x40, 0xEA, -0x01, 0x6A, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA4, 0xF5, 0xB8, 0xA3, -0x02, 0x6C, 0x00, 0x6A, 0xAC, 0xEC, 0x0C, 0x24, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x50, 0x9A, -0x00, 0x6C, 0x80, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, -0xAC, 0xEA, 0xA4, 0xF5, 0x58, 0xC3, 0x01, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x18, 0x6C, -0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x01, 0x4A, 0x0A, 0x72, 0x12, 0xEC, -0x71, 0xE4, 0xC4, 0xF5, 0xAC, 0xA4, 0x02, 0x6B, -0x6B, 0xEB, 0xAC, 0xEB, 0xC4, 0xF5, 0x6C, 0xC4, -0xEE, 0x61, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xEF, 0xF6, 0x50, 0xA2, 0x01, 0x6B, 0x4C, 0xEB, -0x00, 0x6A, 0x1C, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0x0F, 0xF7, 0x14, 0x4A, 0x00, 0x6B, 0xA0, 0x9A, -0x8E, 0xED, 0x0F, 0x2D, 0x18, 0x6E, 0xD8, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0x2B, 0xF1, 0x18, 0x4D, -0x12, 0xEE, 0xB9, 0xE6, 0xC4, 0xF5, 0xEC, 0xA6, -0x02, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0xC4, 0xF5, -0xAC, 0xC6, 0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, -0xEA, 0x61, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x5D, 0x67, 0x0A, 0xD4, 0x20, 0xF0, 0x98, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xD5, 0x0C, 0xD6, -0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, 0xB8, 0xA2, -0x01, 0x6B, 0x00, 0xF6, 0xE0, 0x31, 0xAC, 0xEB, -0x00, 0xF6, 0x23, 0x31, 0x80, 0xF0, 0x09, 0x23, -0x21, 0x24, 0x01, 0x74, 0x80, 0xF0, 0x05, 0x61, -0x0A, 0x93, 0x80, 0xF0, 0x02, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x64, 0xF0, 0x74, 0x9B, 0xC3, 0xEB, -0x7C, 0x61, 0x7F, 0x71, 0x7A, 0x60, 0xFF, 0xF7, -0x1F, 0x51, 0x77, 0x61, 0xA4, 0xF5, 0x1C, 0x9A, -0x1B, 0xEE, 0x01, 0x28, 0xE5, 0xE8, 0x10, 0xEA, -0x12, 0xE8, 0x02, 0x22, 0x01, 0x48, 0x04, 0x10, -0x03, 0x28, 0x01, 0x68, 0x50, 0x67, 0x1D, 0x10, -0x01, 0x6B, 0x1E, 0x10, 0x0A, 0x94, 0x65, 0x24, -0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, 0x74, 0x9B, -0x0C, 0x95, 0xA3, 0xEB, 0x5E, 0x61, 0x7F, 0x71, -0x5C, 0x60, 0xFF, 0xF7, 0x1F, 0x51, 0x59, 0x61, -0xC4, 0xF5, 0x00, 0x9A, 0x1B, 0xED, 0x01, 0x28, -0xE5, 0xE8, 0x10, 0xEA, 0x12, 0xE8, 0x02, 0x22, -0x01, 0x48, 0x05, 0x10, 0x04, 0x28, 0x01, 0x68, -0x00, 0x6A, 0x04, 0xD2, 0x02, 0x10, 0x00, 0x6B, -0x04, 0xD3, 0x0A, 0x94, 0x00, 0x18, 0xB9, 0xE6, -0x00, 0x6C, 0xFF, 0x6E, 0xA4, 0x67, 0xCC, 0xED, -0x1D, 0x65, 0x18, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x01, 0x6D, -0x12, 0xEA, 0x69, 0xE2, 0xC4, 0xF5, 0x4C, 0xA2, -0xAC, 0xEA, 0xCC, 0xEA, 0x2F, 0x2A, 0xD8, 0x67, -0x18, 0x6F, 0xF8, 0xEE, 0x04, 0x96, 0xC4, 0x36, -0x04, 0xD6, 0x03, 0x6E, 0xCB, 0xEE, 0x12, 0xEC, -0x71, 0xE4, 0xC4, 0xF5, 0xEC, 0xA4, 0xEC, 0xEE, -0x04, 0x97, 0xED, 0xEE, 0xC4, 0xF5, 0xCC, 0xC4, -0x0A, 0x96, 0xC4, 0xF5, 0xDC, 0xDC, 0x0B, 0x97, -0xE4, 0xF5, 0xE0, 0xDC, 0x0C, 0x96, 0x18, 0x6F, -0xC4, 0xF5, 0xD0, 0xDC, 0xD8, 0x67, 0x01, 0x4E, -0xF8, 0xEE, 0x12, 0xEE, 0x6D, 0xE6, 0xC4, 0xF5, -0x40, 0xDB, 0xA4, 0xF5, 0x1C, 0xDB, 0xC4, 0xF5, -0x4D, 0xC4, 0xC4, 0xF5, 0x4C, 0xA4, 0xC4, 0xF5, -0x2E, 0xC4, 0x4D, 0xED, 0xC4, 0xF5, 0xAC, 0xC4, -0x01, 0x6A, 0x04, 0x10, 0x01, 0x4C, 0x0A, 0x74, -0xBC, 0x61, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF7, -0x10, 0x4A, 0x00, 0x6C, 0x4A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x0F, 0xF7, 0x10, 0x4A, 0x00, 0x6B, -0x18, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, -0x2B, 0xF1, 0x18, 0x4C, 0x12, 0xED, 0x91, 0xE5, -0xC4, 0xF5, 0xCC, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, -0x08, 0x26, 0xC4, 0xF5, 0x8C, 0xA4, 0x86, 0x34, -0xAC, 0xEC, 0x03, 0x24, 0x80, 0x9A, 0x01, 0x4C, -0x80, 0xDA, 0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, -0xE7, 0x61, 0x00, 0x18, 0x10, 0xE6, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA0, 0xF0, 0x7E, 0xA2, 0xA4, 0xF5, 0xB9, 0xA2, -0xFF, 0x6C, 0x76, 0x33, 0xAE, 0xEB, 0x12, 0x2B, -0xA0, 0xF0, 0xBB, 0xA2, 0x7F, 0x6B, 0xAC, 0xEB, -0x8C, 0xEB, 0x0C, 0x23, 0xA0, 0xF0, 0xBC, 0xA2, -0x0F, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, 0x06, 0x23, -0x04, 0x93, 0x03, 0xF6, 0x46, 0xA2, 0x78, 0xEA, -0x12, 0xEA, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0x93, 0xEF, 0xF6, 0x54, 0x9A, 0x6E, 0xEA, -0x52, 0x22, 0x04, 0x94, 0x00, 0x18, 0x31, 0xE6, -0x4E, 0x10, 0x18, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x12, 0xED, -0x6D, 0xE5, 0xC4, 0xF5, 0xCC, 0xA3, 0x01, 0x6D, -0xAC, 0xEE, 0x0A, 0x26, 0xC4, 0xF5, 0x6C, 0xA3, -0x66, 0x33, 0xAC, 0xEB, 0xFF, 0x6D, 0xAC, 0xEB, -0x03, 0x2B, 0x60, 0x9A, 0x01, 0x4B, 0x60, 0xDA, -0x01, 0x4C, 0x0A, 0x74, 0x18, 0x4A, 0xE5, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA4, 0xF5, 0x79, 0xA2, 0xFF, 0x73, 0x2B, 0x61, -0xC4, 0xF5, 0x68, 0x9A, 0x01, 0x4B, 0xC4, 0xF5, -0x68, 0xDA, 0xC4, 0xF5, 0x44, 0x9A, 0x4E, 0xEB, -0x22, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF7, -0x10, 0x4A, 0x18, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x2B, 0xF1, 0x18, 0x4C, 0x12, 0xED, -0x91, 0xE5, 0xC4, 0xF5, 0xCC, 0xA4, 0x01, 0x6D, -0xAC, 0xEE, 0x08, 0x26, 0xC4, 0xF5, 0x8C, 0xA4, -0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, 0x80, 0x9A, -0x01, 0x4C, 0x80, 0xDA, 0x01, 0x4B, 0x0A, 0x73, -0x18, 0x4A, 0xE7, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x78, 0x67, 0x0F, 0xF7, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, -0x64, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x0F, 0xF7, 0x05, 0x48, 0x00, 0x69, 0x18, 0x6A, -0x58, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0xC4, 0xF5, -0x8C, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x27, 0x23, -0x00, 0xF0, 0x8B, 0x98, 0x00, 0xF0, 0x67, 0x98, -0x63, 0xEC, 0x21, 0x61, 0x61, 0x80, 0x81, 0x43, -0x04, 0xD4, 0x07, 0x2C, 0x00, 0xF0, 0x4F, 0x98, -0x00, 0xF0, 0x93, 0x98, 0x40, 0xEA, 0x04, 0x92, -0x14, 0x10, 0x80, 0xA0, 0x01, 0x4C, 0x80, 0xC0, -0x80, 0xA0, 0x82, 0xEB, 0x08, 0x60, 0xC4, 0xF5, -0x8C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xC4, 0xF5, 0x6C, 0xC2, 0x08, 0x10, 0x00, 0xF0, -0x4F, 0x98, 0x00, 0xF0, 0x93, 0x98, 0x40, 0xEA, -0x00, 0x6A, 0x00, 0xF0, 0x4B, 0xD8, 0x01, 0x49, -0x0A, 0x71, 0x18, 0x48, 0xC8, 0x61, 0x09, 0x97, +0x93, 0xE6, 0x04, 0xD2, 0x04, 0x93, 0x00, 0x6A, +0x2E, 0x2B, 0x00, 0x18, 0xD3, 0xDE, 0x1E, 0x21, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, 0xAD, 0xA2, +0x30, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x58, 0xED, +0x4A, 0xF4, 0x10, 0x48, 0x91, 0x67, 0xC2, 0x67, +0x12, 0xED, 0xB5, 0xE0, 0x00, 0x18, 0x9D, 0xD8, +0x30, 0xF0, 0x20, 0x6B, 0x09, 0xF3, 0x4D, 0xA3, +0x30, 0x6B, 0x78, 0xEA, 0x12, 0xEA, 0x01, 0xE2, +0x5D, 0x67, 0x67, 0x42, 0x09, 0x4B, 0x40, 0xA3, +0x20, 0xF0, 0x4E, 0xC0, 0x00, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0x6D, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0x6F, 0xA2, 0xFF, 0x4B, +0x09, 0xF3, 0x6F, 0xC2, 0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFF, 0x6B, 0x6C, 0xEC, 0x0F, 0x6A, 0x8C, 0xEA, -0x03, 0x2A, 0x92, 0x32, 0x6C, 0xEA, 0x20, 0xE8, -0x07, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xF7, 0x63, 0x11, 0x62, 0x00, 0x18, 0x93, 0xE6, +0x0D, 0x2A, 0x04, 0x04, 0x00, 0x18, 0x21, 0xE7, +0x09, 0x22, 0x05, 0x92, 0x07, 0x22, 0x00, 0x18, +0xD3, 0xDE, 0x06, 0x95, 0x02, 0x6C, 0xB7, 0xE2, +0x05, 0x92, 0x40, 0xEA, 0x11, 0x97, 0x09, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, +0x04, 0x04, 0x00, 0x18, 0x21, 0xE7, 0x09, 0x22, +0x05, 0x92, 0x07, 0x22, 0x00, 0x18, 0xD3, 0xDE, +0x06, 0x95, 0x00, 0x6C, 0xB7, 0xE2, 0x05, 0x92, +0x40, 0xEA, 0x11, 0x97, 0x09, 0x63, 0x00, 0xEF, +0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, +0x04, 0x00, 0x24, 0x67, 0x00, 0x6D, 0x90, 0x67, +0x30, 0x6E, 0x00, 0x18, 0x98, 0xD8, 0x90, 0x67, +0x00, 0x18, 0x21, 0xE7, 0x10, 0x22, 0x00, 0x18, +0xD3, 0xDE, 0x08, 0x90, 0x03, 0xE2, 0x00, 0x18, +0xC2, 0xF2, 0x04, 0x22, 0x05, 0x92, 0x91, 0x67, +0x04, 0x2A, 0x05, 0x10, 0x05, 0x92, 0x03, 0x22, +0x00, 0x6C, 0xB0, 0x67, 0x40, 0xEA, 0x13, 0x97, +0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x04, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, -0x05, 0x10, 0x44, 0x32, 0xFF, 0x4A, 0x01, 0x6D, -0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, 0xA9, 0x76, +0x3B, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x09, 0xF3, +0x6F, 0xA3, 0x14, 0x23, 0x30, 0xF0, 0x20, 0x6C, +0x09, 0xF3, 0xAD, 0xA4, 0x30, 0x6C, 0x30, 0xF0, +0x20, 0x6B, 0x98, 0xED, 0x4A, 0xF4, 0x10, 0x4B, +0x12, 0xEC, 0x6D, 0xE4, 0x20, 0xF0, 0x6E, 0xA3, +0x6E, 0xEA, 0x26, 0x2A, 0x03, 0x6C, 0x00, 0x18, +0x54, 0xE7, 0x22, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x09, 0xF3, 0x6C, 0xA3, 0x17, 0x2B, 0x1C, 0x10, +0xA0, 0xA4, 0x4E, 0xED, 0x0C, 0x2D, 0x30, 0x6C, +0x98, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x4A, 0xF1, +0x10, 0x4A, 0x12, 0xEB, 0x49, 0xE3, 0x01, 0x6B, +0x20, 0xF0, 0x6F, 0xC2, 0x0D, 0x10, 0x01, 0x4B, +0xFF, 0x6D, 0xAC, 0xEB, 0x10, 0x73, 0x30, 0x4C, +0xEB, 0x61, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x6A, 0xF1, 0x1E, 0x4C, 0x00, 0x6B, 0xE4, 0x17, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x04, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, -0x05, 0x10, 0xFF, 0x4A, 0x44, 0x32, 0x01, 0x6D, -0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, 0xA9, 0x76, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x04, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, -0x05, 0x10, 0x44, 0x32, 0xFF, 0x4A, 0x01, 0x6D, -0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, 0xC6, 0x76, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x04, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, -0x05, 0x10, 0xFF, 0x4A, 0x44, 0x32, 0x01, 0x6D, -0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, 0xC6, 0x76, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, -0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, -0xA2, 0x67, 0x80, 0x18, 0x45, 0x76, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, -0x01, 0x6A, 0x44, 0xED, 0x03, 0x6C, 0xA2, 0x67, -0x80, 0x18, 0x45, 0x76, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x9C, 0xE7, -0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, -0x45, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x9C, 0xE7, 0x01, 0x6D, 0x03, 0x6C, -0xA4, 0xEA, 0x80, 0x18, 0x45, 0x76, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, -0x44, 0xED, 0x00, 0x6C, 0xA2, 0x67, 0x80, 0x18, -0x45, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, -0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, -0xA2, 0x67, 0x80, 0x18, 0x76, 0x76, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, -0x01, 0x6A, 0x44, 0xED, 0x03, 0x6C, 0xA2, 0x67, -0x80, 0x18, 0x76, 0x76, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x9C, 0xE7, -0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, -0x76, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x9C, 0xE7, 0x01, 0x6D, 0x03, 0x6C, -0xA4, 0xEA, 0x80, 0x18, 0x76, 0x76, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, -0x44, 0xED, 0x00, 0x6C, 0xA2, 0x67, 0x80, 0x18, -0x76, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xDD, 0x63, 0x45, 0x62, 0x44, 0xD1, 0x43, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x69, 0x84, 0xF0, -0x48, 0x9A, 0x8C, 0xE9, 0x30, 0x31, 0x49, 0xE1, -0x40, 0xD2, 0x40, 0xA2, 0x00, 0xF6, 0x40, 0x32, -0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, 0x40, 0x60, -0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x54, 0xC3, -0x0F, 0x6A, 0x56, 0xC3, 0x10, 0x6A, 0x57, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x4C, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0x06, 0x04, 0x49, 0xE1, -0x40, 0x9A, 0x04, 0x05, 0x04, 0x6E, 0x04, 0xD2, -0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF0, 0x4C, 0x9A, 0x07, 0x04, -0x04, 0x05, 0x49, 0xE1, 0x40, 0x9A, 0x04, 0x6E, -0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, -0x40, 0x93, 0x08, 0x04, 0x04, 0x05, 0x40, 0x9B, -0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, -0x50, 0x9A, 0x09, 0x04, 0x04, 0x05, 0x45, 0xE1, -0x40, 0x99, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, -0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x40, 0x9A, 0x05, 0x04, 0x40, 0xEA, -0x45, 0x97, 0x44, 0x91, 0x43, 0x90, 0x23, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF3, 0x8C, 0x9C, 0x50, 0x33, 0x91, 0xE3, -0x80, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, -0x8C, 0x9C, 0x8D, 0xE3, 0x82, 0x67, 0x60, 0x9B, -0x00, 0x18, 0x16, 0xE8, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x5C, 0x9A, -0x84, 0xF0, 0x74, 0x9B, 0x00, 0xA2, 0x20, 0xA3, -0xFF, 0x6A, 0x4C, 0xE8, 0x4C, 0xE9, 0x2A, 0xE8, -0x35, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0x4C, 0x9A, 0x10, 0x33, 0x49, 0xE3, 0x40, 0xA2, -0xFF, 0x6B, 0x6C, 0xEA, 0x56, 0x32, 0x6C, 0xEA, -0x02, 0x72, 0x0E, 0x60, 0x03, 0x5A, 0x02, 0x60, -0x06, 0x22, 0x1A, 0x10, 0x04, 0x72, 0x0D, 0x60, -0x06, 0x72, 0x10, 0x60, 0x15, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x4C, 0x9A, 0x0E, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x54, 0x9A, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, -0x01, 0x48, 0x7F, 0x6A, 0x4C, 0xE8, 0x0A, 0xE9, -0xD0, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x5C, 0x9A, 0x20, 0xC2, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0xFF, 0x6B, -0xE2, 0x67, 0x6C, 0xEE, 0x6C, 0xEF, 0x1E, 0x65, -0x87, 0x67, 0x03, 0x6E, 0xCC, 0xEC, 0x80, 0xF0, -0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, -0x1C, 0x9C, 0x08, 0x69, 0x42, 0x32, 0x80, 0xA0, -0x52, 0x32, 0x6C, 0xEA, 0x6C, 0xEC, 0x2D, 0xEC, -0x6C, 0xEC, 0x80, 0xC0, 0x30, 0xF0, 0x20, 0x6C, -0xA4, 0xF0, 0x80, 0x9C, 0xCC, 0xEA, 0xE0, 0xC4, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF0, 0x84, 0x9C, -0x40, 0xC4, 0x0F, 0x6A, 0x98, 0x67, 0x8C, 0xEA, -0x74, 0x22, 0x01, 0x6C, 0x4C, 0xEC, 0x06, 0x24, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF0, 0x88, 0x9C, -0xAC, 0xEB, 0x60, 0xC4, 0x02, 0x6B, 0x4C, 0xEB, -0x08, 0x23, 0xFF, 0x6C, 0xA2, 0x33, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF0, 0x8C, 0x9C, -0x60, 0xC4, 0x04, 0x6B, 0x4C, 0xEB, 0x09, 0x23, -0xA2, 0x33, 0xFF, 0x6C, 0x62, 0x33, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF0, 0x90, 0x9C, -0x60, 0xC4, 0x4E, 0x33, 0x07, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0xA4, 0xF0, 0x74, 0x9B, 0x00, 0xF6, -0xA2, 0x35, 0xA0, 0xC3, 0x20, 0x6B, 0x4D, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x58, 0x9A, -0x64, 0x68, 0x60, 0xC2, 0x2C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0xFF, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE8, 0x21, 0x28, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF3, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, -0xA3, 0xF3, 0x60, 0xDA, 0x60, 0xA1, 0xD0, 0x6A, -0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF0, 0x7C, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x16, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0xF0, 0x38, 0x9A, 0x20, 0x6A, -0x60, 0xA1, 0x6C, 0xEA, 0xCC, 0x2A, 0x60, 0xA1, -0xF0, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF0, 0x7C, 0x9A, 0xF7, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, -0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0xC2, 0x67, -0xFF, 0x6C, 0x8C, 0xEE, 0x03, 0x6D, 0x66, 0x67, -0xAC, 0xEB, 0x4B, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x84, 0xF0, 0xFC, 0x9B, 0x08, 0x68, 0x42, 0x32, -0x60, 0xA7, 0x52, 0x32, 0x8C, 0xEA, 0x8C, 0xEB, -0x0D, 0xEB, 0x8C, 0xEB, 0x60, 0xC7, 0x30, 0xF0, -0x20, 0x6B, 0xA4, 0xF0, 0x60, 0x9B, 0xAC, 0xEA, -0x64, 0x68, 0xC0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0xA4, 0xF0, 0x64, 0x9B, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0xF0, 0x58, 0x9A, 0x30, 0x6B, -0x60, 0xC2, 0x2E, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0xFF, 0x48, -0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, -0x23, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF3, -0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0x60, 0xA1, 0xCF, 0x6A, 0x6C, 0xEA, -0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, -0x7C, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x01, 0x6A, 0x4B, 0xEA, 0x19, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x38, 0x9A, -0x20, 0x6A, 0x60, 0xA1, 0x6C, 0xEA, 0xCA, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x48, 0x9A, -0xEF, 0x6B, 0x40, 0x9A, 0x80, 0xA1, 0x8C, 0xEB, -0x60, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, -0x9C, 0x9B, 0xF7, 0x6B, 0xA0, 0xA4, 0xAC, 0xEB, -0x60, 0xC4, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0xBC, 0x9A, -0xE0, 0xF3, 0x10, 0x6C, 0x0F, 0x6E, 0x00, 0x18, -0x76, 0xE8, 0xE0, 0xF3, 0x0C, 0x6C, 0x00, 0x18, -0xCA, 0xE8, 0xFF, 0x6B, 0x4C, 0xEB, 0x0B, 0x73, -0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, -0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF0, -0x84, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x6D, 0xF7, 0x6C, 0xA3, 0xFF, 0x6A, 0x24, 0x67, -0x01, 0x73, 0xAC, 0xEA, 0x07, 0x60, 0x03, 0x73, -0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, -0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC4, 0xF0, 0x68, 0x9B, 0x06, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF0, 0x0C, 0x9A, 0x6C, 0xE8, -0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, -0x10, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, -0x54, 0x9A, 0x6D, 0xE8, 0x4C, 0xE8, 0x00, 0x18, -0x44, 0xC8, 0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x0B, 0xF2, 0x61, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, -0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, -0x58, 0x9A, 0x4C, 0xE8, 0x02, 0x30, 0x02, 0x30, -0x00, 0xC9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, -0x30, 0xF0, 0x20, 0x6B, 0x8C, 0xE9, 0xE3, 0xF1, -0x80, 0x9B, 0xFF, 0x6A, 0x4C, 0xED, 0xC0, 0xA4, -0x4C, 0xEE, 0x07, 0x25, 0x8E, 0x6B, 0xCC, 0xEB, -0x60, 0xC4, 0x71, 0x6B, 0xCD, 0xEB, 0x4C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, -0x60, 0x9A, 0xFF, 0x6C, 0x01, 0x6D, 0x40, 0xA3, -0x00, 0x68, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x22, 0x10, 0x64, 0x70, 0x16, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF2, 0x98, 0x9C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, -0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x60, 0xDA, -0x00, 0x6A, 0x1C, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, -0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x40, 0x9A, -0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xD6, 0x2A, -0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x49, 0x4C, 0xE9, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x4C, 0x9A, -0x20, 0xCA, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x30, 0xF0, 0x20, 0x6D, -0x04, 0x04, 0x83, 0xF0, 0x04, 0x4D, 0x14, 0x6E, -0x00, 0x18, 0x42, 0xD7, 0x30, 0xF0, 0x20, 0x6A, -0x69, 0xF5, 0x19, 0x4A, 0x05, 0x04, 0x01, 0x6B, -0x30, 0xF0, 0x20, 0x6D, 0xEB, 0xF1, 0xB6, 0xA5, -0xB6, 0x35, 0x6E, 0xED, 0x1B, 0x25, 0xC0, 0xA2, -0x19, 0x26, 0xE0, 0x9C, 0x1F, 0xF7, 0x00, 0x6D, -0xEC, 0xED, 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, -0x09, 0x2D, 0x30, 0xF0, 0x20, 0x6E, 0xA0, 0x9C, -0x43, 0xF1, 0xC4, 0x9E, 0xB5, 0xE6, 0xC0, 0xA2, -0xC0, 0xC5, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6D, -0x43, 0xF1, 0xA8, 0x9D, 0xFD, 0xE5, 0xC0, 0xC7, -0x00, 0x6D, 0xA0, 0xC2, 0x01, 0x4B, 0xFF, 0x6D, -0xAC, 0xEB, 0x04, 0x73, 0x01, 0x4A, 0x04, 0x4C, -0xD7, 0x61, 0x0B, 0x97, 0x06, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x30, 0xF0, 0x20, 0x6D, -0x04, 0x04, 0x63, 0xF0, 0x10, 0x4D, 0x14, 0x6E, -0x00, 0x18, 0x42, 0xD7, 0x05, 0x03, 0x00, 0x6C, -0x01, 0x6A, 0x30, 0xF0, 0x20, 0x6D, 0xEB, 0xF1, -0xB6, 0xA5, 0xB6, 0x35, 0x4E, 0xED, 0x38, 0x25, -0xC0, 0x9B, 0x1F, 0xF7, 0x00, 0x6D, 0xCC, 0xED, -0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x09, 0x2D, -0x30, 0xF0, 0x20, 0x6E, 0x43, 0xF1, 0xC4, 0x9E, -0xA0, 0x9B, 0xE1, 0x44, 0xB5, 0xE6, 0xC0, 0xA5, -0x07, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x43, 0xF1, -0xA8, 0x9D, 0xE1, 0x44, 0xD9, 0xE5, 0xC0, 0xA6, -0xFF, 0x6D, 0xCC, 0xED, 0x30, 0xF0, 0x20, 0x6E, -0x69, 0xF5, 0x18, 0x4E, 0xD9, 0xE7, 0xA0, 0xC6, -0xC0, 0x9B, 0x1F, 0xF7, 0x00, 0x6D, 0xCC, 0xED, -0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x09, 0x2D, -0x30, 0xF0, 0x20, 0x6E, 0xA0, 0x9B, 0x43, 0xF1, -0xC4, 0x9E, 0xB5, 0xE6, 0x00, 0x6E, 0xC0, 0xC5, -0x07, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x43, 0xF1, -0xA8, 0x9D, 0xD9, 0xE5, 0x00, 0x6D, 0xA0, 0xC6, -0x01, 0x4A, 0xFF, 0x6D, 0xAC, 0xEA, 0x04, 0x72, -0x01, 0x4C, 0x04, 0x4B, 0xBA, 0x61, 0x0B, 0x97, -0x06, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF1, 0xA4, 0x9B, 0xFF, 0x6A, 0x08, 0x6E, -0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, -0xCC, 0xEB, 0x6D, 0xEC, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF1, 0x68, 0x9B, 0x4C, 0xEC, 0x80, 0xC5, -0x60, 0xA3, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0xC4, 0x9B, -0xFF, 0x6A, 0x08, 0x6F, 0x60, 0xA6, 0xEB, 0xEF, -0x4C, 0xEC, 0x4C, 0xEB, 0xEC, 0xEB, 0x6D, 0xEC, -0x4C, 0xED, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF1, 0x48, 0x9A, 0x80, 0xC6, 0xA0, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0x83, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, -0xB8, 0x9B, 0xC3, 0xF4, 0x10, 0x69, 0x91, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0xA4, 0x9B, -0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF1, -0xB8, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF1, 0xB8, 0x9B, 0x91, 0x67, 0x00, 0x6E, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x69, -0x40, 0xEA, 0xA6, 0xF3, 0x10, 0x48, 0x88, 0xF0, -0x10, 0x49, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xA8, 0xC1, 0x98, 0xC0, 0xF3, 0x44, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x08, 0x48, -0x2A, 0xE8, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6A, 0x8C, 0xEA, 0x0F, 0x5A, 0x08, 0x60, -0x30, 0xF0, 0x20, 0x6B, 0x48, 0x34, 0xE2, 0xF7, -0x14, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, -0x00, 0x6A, 0x20, 0xE8, 0xD0, 0xF4, 0x64, 0x42, -0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0x6C, 0x9B, -0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, -0x70, 0x9B, 0x2A, 0x10, 0x80, 0xF4, 0x64, 0x42, -0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0x74, 0x9B, -0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, -0x78, 0x9B, 0x1A, 0x10, 0xC0, 0xF4, 0x68, 0x42, -0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0x7C, 0x9B, -0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF1, -0x60, 0x9B, 0x0A, 0x10, 0x70, 0xF4, 0x68, 0x42, -0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x0A, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF1, 0x64, 0x9B, -0x69, 0xE2, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, -0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0xF1, 0x68, 0x9B, 0x69, 0xE2, 0x60, 0xAA, -0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, -0x24, 0x6A, 0x75, 0xF0, 0x19, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, -0x48, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, -0x09, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x6C, 0x9A, 0x20, 0x6C, 0x40, 0x9B, +0xFD, 0x63, 0x05, 0x62, 0x01, 0x6C, 0x00, 0x18, +0x54, 0xE7, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, +0x00, 0x18, 0xE0, 0xD7, 0x20, 0x2A, 0x30, 0xF0, +0x20, 0x6B, 0x09, 0xF3, 0xAD, 0xA3, 0x30, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x78, 0xED, 0x4A, 0xF4, +0x10, 0x4A, 0x04, 0x04, 0xC3, 0x67, 0x12, 0xED, +0xB5, 0xE2, 0x00, 0x18, 0x9D, 0xD8, 0x08, 0x90, +0x09, 0x91, 0x00, 0x18, 0xD3, 0xDE, 0x03, 0xE2, +0x03, 0xEA, 0x58, 0x67, 0x27, 0xE3, 0x4B, 0xE1, +0x03, 0x2A, 0x82, 0xF3, 0x08, 0x58, 0x07, 0x61, +0x00, 0x18, 0x88, 0xE7, 0x02, 0x10, 0x00, 0x18, +0x4B, 0xE7, 0x00, 0x18, 0x0A, 0xE7, 0x13, 0x97, +0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x93, 0xE6, +0x03, 0x2A, 0x00, 0x18, 0x8C, 0xE7, 0x0B, 0x10, +0x00, 0x18, 0x03, 0xC2, 0x06, 0x2A, 0x00, 0x18, +0xE0, 0xD7, 0x05, 0x22, 0x00, 0x18, 0x0A, 0xE7, +0x02, 0x10, 0x00, 0x18, 0xE0, 0xD7, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, +0x10, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xAF, 0xF7, 0x51, 0xA2, 0xFF, 0x63, 0x05, 0x5A, +0x36, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, +0xE2, 0xF7, 0x00, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x58, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0x9A, +0x1A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x58, 0x9A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x40, 0x9A, 0x0D, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x40, 0x9A, 0x40, 0x9A, +0x50, 0x32, 0x00, 0xF5, 0x42, 0x32, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x44, 0x9A, +0x40, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x00, 0xD2, 0x00, 0x93, 0xE0, 0xF3, 0x08, 0x6A, +0x60, 0x33, 0x68, 0x33, 0x5B, 0xEB, 0x01, 0x2A, +0xE5, 0xE8, 0x12, 0xEA, 0x01, 0x10, 0x66, 0x6A, +0x00, 0xD2, 0x00, 0x92, 0x01, 0x63, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD0, 0x15, 0x2C, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x23, 0xF1, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x60, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x60, 0xDA, 0x00, 0x6A, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD9, 0x17, -0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x6D, 0xF7, 0x4C, 0xA2, 0x03, 0x72, 0x0D, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x9C, 0x9A, -0xFF, 0x6A, 0x60, 0xA4, 0x6C, 0xEA, 0x10, 0x6B, -0x4C, 0xEB, 0x03, 0x23, 0xEF, 0x6B, 0x4C, 0xEB, -0x60, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x27, 0x67, -0x4C, 0xE9, 0x6F, 0x41, 0x4C, 0xEB, 0x04, 0x67, -0x02, 0x5B, 0x4C, 0xE8, 0x4C, 0xED, 0x4C, 0xEE, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xDA, 0xE1, -0x10, 0x58, 0x55, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x08, 0x33, 0x23, 0xF0, 0x10, 0x4A, 0x69, 0xE2, -0x40, 0x9A, 0x00, 0xEA, 0xD0, 0xF4, 0x44, 0x40, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x6C, 0x9A, -0x34, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, -0x70, 0x9A, 0x2F, 0x10, 0x80, 0xF4, 0x44, 0x40, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x74, 0x9A, -0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, -0x78, 0x9A, 0x1F, 0x10, 0xC0, 0xF4, 0x48, 0x40, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x7C, 0x9A, -0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, -0x60, 0x9A, 0x0F, 0x10, 0x70, 0xF4, 0x48, 0x40, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x64, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x6D, 0xE0, 0x41, 0xE0, 0x63, 0xF3, -0x9C, 0xA0, 0x83, 0xF3, 0x4C, 0xA0, 0x8D, 0xEA, -0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xAE, 0xF4, 0x31, 0xC2, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x23, 0xF4, 0x04, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x0D, 0x28, 0x01, 0x6B, -0x6E, 0xEA, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, -0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x24, 0x67, 0xA0, 0xF0, -0x9B, 0xA2, 0x03, 0xF6, 0x70, 0xAA, 0x7F, 0x6A, -0x8C, 0xEA, 0x21, 0x22, 0x01, 0x4B, 0xE0, 0xF3, -0x08, 0x6A, 0x58, 0xEB, 0x12, 0xEC, 0x23, 0xEC, -0x04, 0xD4, 0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x96, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF1, 0x0C, 0x9A, 0x96, 0x34, 0xB0, 0x67, -0x80, 0x18, 0x0F, 0x01, 0x43, 0xE0, 0x23, 0xE8, -0x0A, 0x61, 0x04, 0x92, 0x03, 0xEA, 0x07, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0xE7, 0x17, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, -0x10, 0xF0, 0x24, 0x6A, 0x95, 0xF2, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x69, 0x40, 0xDB, 0x2B, 0xF1, -0x18, 0x49, 0x03, 0xF6, 0x40, 0xA1, 0x6C, 0x22, -0x00, 0x18, 0x7E, 0xEA, 0x01, 0x72, 0x68, 0x60, -0x80, 0x18, 0xCD, 0x03, 0x03, 0xF6, 0x40, 0xA1, -0x02, 0x72, 0x52, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6E, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, -0xAB, 0xED, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0x04, 0xD2, 0x00, 0x18, 0xC7, 0xE9, -0x02, 0x6C, 0x80, 0x18, 0xC7, 0x13, 0x30, 0xF0, -0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, 0x80, 0x18, -0xCD, 0x1D, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x04, 0xF5, 0xCC, 0x99, -0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, -0x01, 0x6D, 0x03, 0xF3, 0x08, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x04, 0xF5, 0xD0, 0x99, -0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, -0x01, 0x6D, 0x03, 0xF3, 0x08, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x00, 0x6B, 0x03, 0xF6, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, -0x24, 0x6A, 0x95, 0xF2, 0x02, 0x4A, 0x40, 0xDB, +0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, 0x5D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x24, 0xF6, 0xB0, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x24, 0xF6, 0x70, 0xC2, 0x24, 0xF6, +0xD4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xCF, 0xF7, +0x10, 0x4A, 0x00, 0x6D, 0x18, 0x6F, 0xF8, 0xED, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x12, 0xEF, 0x6D, 0xE7, 0x44, 0xF6, 0x04, 0xA3, +0x01, 0x6F, 0xEC, 0xE8, 0x23, 0x20, 0x44, 0xF6, +0x64, 0xA3, 0x66, 0x33, 0xEC, 0xEB, 0xFF, 0x6F, +0xEC, 0xEB, 0x1C, 0x23, 0xFF, 0xF7, 0x78, 0x9A, +0x9B, 0xEB, 0x01, 0x2C, 0xE5, 0xE8, 0x12, 0xEB, +0xFF, 0xF7, 0x7C, 0xDA, 0x10, 0xEF, 0x03, 0x27, +0x01, 0x4B, 0xFF, 0xF7, 0x7C, 0xDA, 0x60, 0x9A, +0x78, 0xEE, 0x12, 0xEB, 0x9B, 0xEB, 0x01, 0x2C, +0xE5, 0xE8, 0x12, 0xEB, 0x60, 0xDA, 0xFF, 0xF7, +0x7C, 0x9A, 0x04, 0x2B, 0x01, 0x6F, 0xFF, 0xF7, +0xFC, 0xDA, 0x60, 0xDA, 0x01, 0x4D, 0x0A, 0x75, +0x18, 0x4A, 0xCC, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x24, 0xF6, 0x78, 0x9A, +0x24, 0xF6, 0x94, 0xDA, 0x7B, 0xEC, 0x01, 0x2B, +0xE5, 0xE8, 0x24, 0xF6, 0x90, 0xA2, 0x12, 0xEB, +0x24, 0xF6, 0x7C, 0xDA, 0x78, 0x67, 0x44, 0xF6, +0x60, 0xDA, 0x02, 0x6B, 0x8D, 0xEB, 0x24, 0xF6, +0x70, 0xC2, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x24, 0xF6, +0x50, 0xA0, 0x03, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, +0x26, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xFF, 0x6E, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x48, 0x9A, 0xAF, 0xF7, 0x10, 0x4C, 0x00, 0x6D, +0x05, 0x4E, 0x40, 0xEA, 0x66, 0x6A, 0x24, 0xF6, +0x54, 0xD8, 0x24, 0xF6, 0x5C, 0xD8, 0x01, 0x6A, +0x4B, 0xEA, 0x24, 0xF6, 0x90, 0xA0, 0x24, 0xF6, +0x51, 0xC0, 0x7D, 0x6A, 0x4B, 0xEA, 0x01, 0x6B, +0x8C, 0xEA, 0x6D, 0xEA, 0x24, 0xF6, 0x50, 0xC0, +0x24, 0xF6, 0x78, 0xD8, 0x43, 0x67, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x24, 0xF6, +0x90, 0xA0, 0x01, 0x6B, 0x00, 0x6A, 0x8C, 0xEB, +0x22, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x03, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0x24, 0xF6, 0x50, 0xC0, +0x00, 0x18, 0xB5, 0xE7, 0x04, 0xD2, 0x04, 0x94, +0x00, 0x18, 0xD6, 0xE7, 0x24, 0xF6, 0x70, 0xA0, +0x02, 0x6A, 0x24, 0xF6, 0xD8, 0x98, 0x6D, 0xEA, +0x24, 0xF6, 0x50, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x48, 0x9A, 0x42, 0xF1, 0x1C, 0x6C, +0x01, 0x6D, 0x40, 0xEA, 0x01, 0x6A, 0x07, 0x97, +0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x24, 0xF6, 0xB0, 0xA3, 0x02, 0x6C, 0x00, 0x6A, +0xAC, 0xEC, 0x0C, 0x24, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x48, 0x9A, 0x00, 0x6C, 0x80, 0xC2, +0x03, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x24, 0xF6, +0x50, 0xC3, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x00, 0x6A, 0x18, 0x6C, 0x98, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x01, 0x4A, +0x0A, 0x72, 0x12, 0xEC, 0x71, 0xE4, 0x44, 0xF6, +0xA4, 0xA4, 0x02, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, +0x44, 0xF6, 0x64, 0xC4, 0xEE, 0x61, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xAF, 0xF7, 0x50, 0xA2, +0x01, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, 0x1C, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0xCF, 0xF7, 0x14, 0x4A, +0x00, 0x6B, 0xA0, 0x9A, 0x8E, 0xED, 0x0F, 0x2D, +0x18, 0x6E, 0xD8, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x8B, 0xF1, 0x00, 0x4D, 0x12, 0xEE, 0xB9, 0xE6, +0x44, 0xF6, 0xE4, 0xA6, 0x02, 0x6D, 0xAB, 0xED, +0xEC, 0xED, 0x44, 0xF6, 0xA4, 0xC6, 0x01, 0x4B, +0x0A, 0x73, 0x18, 0x4A, 0xEA, 0x61, 0x01, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x5D, 0x67, 0x0A, 0xD4, +0x20, 0xF0, 0x98, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x0B, 0xD5, 0x0C, 0xD6, 0x8B, 0xF1, 0x00, 0x4A, +0x24, 0xF6, 0xB0, 0xA2, 0x01, 0x6B, 0x00, 0xF6, +0xE0, 0x31, 0xAC, 0xEB, 0x00, 0xF6, 0x23, 0x31, +0x80, 0xF0, 0x09, 0x23, 0x21, 0x24, 0x01, 0x74, +0x80, 0xF0, 0x05, 0x61, 0x0A, 0x93, 0x80, 0xF0, +0x02, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, +0x6C, 0x9B, 0xC3, 0xEB, 0x7C, 0x61, 0x7F, 0x71, +0x7A, 0x60, 0xFF, 0xF7, 0x1F, 0x51, 0x77, 0x61, +0x24, 0xF6, 0x14, 0x9A, 0x1B, 0xEE, 0x01, 0x28, +0xE5, 0xE8, 0x10, 0xEA, 0x12, 0xE8, 0x02, 0x22, +0x01, 0x48, 0x04, 0x10, 0x03, 0x28, 0x01, 0x68, +0x50, 0x67, 0x1D, 0x10, 0x01, 0x6B, 0x1E, 0x10, +0x0A, 0x94, 0x65, 0x24, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF0, 0x6C, 0x9B, 0x0C, 0x95, 0xA3, 0xEB, +0x5E, 0x61, 0x7F, 0x71, 0x5C, 0x60, 0xFF, 0xF7, +0x1F, 0x51, 0x59, 0x61, 0x24, 0xF6, 0x18, 0x9A, +0x1B, 0xED, 0x01, 0x28, 0xE5, 0xE8, 0x10, 0xEA, +0x12, 0xE8, 0x02, 0x22, 0x01, 0x48, 0x05, 0x10, +0x04, 0x28, 0x01, 0x68, 0x00, 0x6A, 0x04, 0xD2, +0x02, 0x10, 0x00, 0x6B, 0x04, 0xD3, 0x0A, 0x94, +0x00, 0x18, 0x5E, 0xE8, 0x00, 0x6C, 0xFF, 0x6E, +0xA4, 0x67, 0xCC, 0xED, 0x1D, 0x65, 0x18, 0x6D, +0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x01, 0x6D, 0x12, 0xEA, 0x69, 0xE2, +0x44, 0xF6, 0x44, 0xA2, 0xAC, 0xEA, 0xCC, 0xEA, +0x2F, 0x2A, 0xD8, 0x67, 0x18, 0x6F, 0xF8, 0xEE, +0x04, 0x96, 0xC4, 0x36, 0x04, 0xD6, 0x03, 0x6E, +0xCB, 0xEE, 0x12, 0xEC, 0x71, 0xE4, 0x44, 0xF6, +0xE4, 0xA4, 0xEC, 0xEE, 0x04, 0x97, 0xED, 0xEE, +0x44, 0xF6, 0xC4, 0xC4, 0x0A, 0x96, 0x44, 0xF6, +0xD4, 0xDC, 0x0B, 0x97, 0x44, 0xF6, 0xF8, 0xDC, +0x0C, 0x96, 0x18, 0x6F, 0x44, 0xF6, 0xC8, 0xDC, +0xD8, 0x67, 0x01, 0x4E, 0xF8, 0xEE, 0x12, 0xEE, +0x6D, 0xE6, 0x24, 0xF6, 0x58, 0xDB, 0x24, 0xF6, +0x14, 0xDB, 0x44, 0xF6, 0x45, 0xC4, 0x44, 0xF6, +0x44, 0xA4, 0x44, 0xF6, 0x26, 0xC4, 0x4D, 0xED, +0x44, 0xF6, 0xA4, 0xC4, 0x01, 0x6A, 0x04, 0x10, +0x01, 0x4C, 0x0A, 0x74, 0xBC, 0x61, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF7, 0x58, 0xA2, 0x02, 0x72, 0x58, 0x61, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x69, -0xA6, 0xF2, 0x04, 0x48, 0xA6, 0xF3, 0x10, 0x49, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0x98, 0xC0, 0xF3, -0x44, 0x9A, 0x01, 0x6D, 0x83, 0xF6, 0x04, 0x6C, -0xAB, 0xED, 0x04, 0x48, 0x40, 0xEA, 0x2A, 0xE8, -0xF3, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x06, 0xF2, -0x14, 0x48, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, -0x44, 0x99, 0xC0, 0x98, 0x01, 0x6D, 0x23, 0xF0, -0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0x48, 0x46, 0xF2, 0x1C, 0x4A, -0x4A, 0xE8, 0xEF, 0x61, 0x21, 0xF0, 0x04, 0x68, -0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x80, 0x18, -0x0D, 0x28, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD2, -0x03, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0x90, 0x67, 0x03, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xEA, 0x46, 0xF2, 0x1C, 0x48, 0x30, 0xF0, -0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0xC0, 0x98, -0x01, 0x6D, 0x28, 0xF1, 0x10, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x48, -0xA6, 0xF2, 0x04, 0x4A, 0x4A, 0xE8, 0xEF, 0x61, -0xC0, 0xF3, 0x44, 0x99, 0x04, 0x96, 0x01, 0x6D, -0x21, 0xF0, 0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x06, 0x6C, 0x00, 0x18, 0xA0, 0xEA, 0xC8, 0x6C, -0x00, 0x18, 0x85, 0xEA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x23, 0xF4, 0x04, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x0D, 0x28, 0x21, 0x22, -0x00, 0x18, 0x68, 0xE9, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF1, 0x70, 0x9A, 0xFF, 0x6C, 0x02, 0x6D, -0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x40, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, -0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, 0x60, 0xC2, -0x00, 0x6D, 0x80, 0x18, 0x2D, 0x20, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF5, 0x44, 0x9A, 0x01, 0x6C, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF5, 0x44, 0x9A, 0x00, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, -0x40, 0xEA, 0x01, 0x6C, 0x00, 0x6D, 0x00, 0x18, -0xF2, 0xCC, 0x03, 0x72, 0x20, 0x60, 0x30, 0xF0, -0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, 0x01, 0x6D, -0x80, 0x18, 0x2D, 0x20, 0x14, 0x22, 0x00, 0x18, -0x02, 0xC6, 0x01, 0x72, 0x06, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x40, 0x9A, 0x3F, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, -0x70, 0x9A, 0xFD, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x01, 0x6A, 0x0B, 0x10, 0x00, 0x6C, -0xA4, 0x67, 0x00, 0x18, 0xF2, 0xCC, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF5, 0x44, 0x9A, 0x01, 0x6C, -0x40, 0xEA, 0x00, 0x6A, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF1, 0xC0, 0x9A, 0xFF, 0x6B, 0xFC, 0x6D, -0x40, 0xA6, 0x6C, 0xEC, 0x4C, 0xED, 0x8D, 0xED, -0x6C, 0xED, 0xA0, 0xC6, 0xA0, 0xA6, 0x03, 0x6A, -0xAC, 0xEA, 0x8E, 0xEA, 0x01, 0x5A, 0x58, 0x67, -0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD0, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x2A, 0xF4, -0x18, 0x4B, 0x71, 0xE2, 0x80, 0xA4, 0x1F, 0x6D, -0x8C, 0xED, 0x0F, 0x75, 0x1D, 0x61, 0x01, 0x4A, -0x6D, 0xE2, 0xA0, 0xA3, 0xF0, 0x68, 0x96, 0x33, -0xAC, 0xE8, 0x07, 0x30, 0x6D, 0xE8, 0x2E, 0x70, -0x0F, 0x6B, 0xAC, 0xEB, 0x14, 0x61, 0x04, 0x6D, -0x6C, 0xED, 0x05, 0x2D, 0x01, 0x6E, 0x30, 0xF0, -0x20, 0x6D, 0x89, 0xF5, 0xC4, 0xC5, 0x6E, 0x35, -0x2E, 0x68, 0x09, 0x2D, 0x01, 0x6E, 0x30, 0xF0, -0x20, 0x6D, 0x89, 0xF5, 0xC5, 0xC5, 0x03, 0x10, -0x0F, 0x6B, 0x92, 0x30, 0x8C, 0xEB, 0xFF, 0x74, -0x29, 0x60, 0x01, 0x4A, 0x80, 0xF1, 0x1F, 0x5A, -0x2B, 0x60, 0x0C, 0x30, 0x00, 0x6C, 0xA3, 0x67, -0xA7, 0xEC, 0x01, 0x6E, 0xCC, 0xED, 0x1A, 0x2D, -0x84, 0x36, 0x19, 0xE6, 0xA1, 0x46, 0x00, 0xF3, -0x01, 0x5D, 0x1E, 0x60, 0x30, 0xF0, 0x20, 0x6D, -0x2A, 0xF6, 0x18, 0x4D, 0xB9, 0xE6, 0x30, 0xF0, -0x20, 0x6D, 0x2A, 0xF4, 0x18, 0x4D, 0xBD, 0xE2, -0xE0, 0xA7, 0xE0, 0xC6, 0xE1, 0x42, 0xA0, 0xF1, -0x00, 0x5F, 0x0E, 0x60, 0xB5, 0xE7, 0xA0, 0xA5, -0x02, 0x4A, 0xA1, 0xC6, 0x01, 0x4C, 0x04, 0x74, -0xDE, 0x61, 0xAB, 0x17, 0x30, 0xF0, 0x20, 0x6B, -0x89, 0xF5, 0x40, 0xDB, 0x01, 0x6A, 0x01, 0x10, -0x00, 0x6A, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x06, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xCF, 0xF7, 0x10, 0x4A, 0x00, 0x6C, +0x4A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xCF, 0xF7, +0x10, 0x4A, 0x00, 0x6B, 0x18, 0x6D, 0xB8, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0x8B, 0xF1, 0x00, 0x4C, +0x12, 0xED, 0x91, 0xE5, 0x44, 0xF6, 0xC4, 0xA4, +0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, 0x44, 0xF6, +0x84, 0xA4, 0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, +0x80, 0x9A, 0x01, 0x4C, 0x80, 0xDA, 0x01, 0x4B, +0x0A, 0x73, 0x18, 0x4A, 0xE7, 0x61, 0x00, 0x18, +0xB5, 0xE7, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x7E, 0xA2, +0x24, 0xF6, 0xB1, 0xA2, 0xFF, 0x6C, 0x76, 0x33, +0xAE, 0xEB, 0x12, 0x2B, 0xA0, 0xF0, 0xBB, 0xA2, +0x7F, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, 0x0C, 0x23, +0xA0, 0xF0, 0xBC, 0xA2, 0x0F, 0x6B, 0xAC, 0xEB, +0x8C, 0xEB, 0x06, 0x23, 0x04, 0x93, 0x03, 0xF6, +0x4A, 0xA2, 0x78, 0xEA, 0x12, 0xEA, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0x93, 0xAF, 0xF7, +0x54, 0x9A, 0x6E, 0xEA, 0x52, 0x22, 0x04, 0x94, +0x00, 0x18, 0xD6, 0xE7, 0x4E, 0x10, 0x18, 0x6D, +0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x12, 0xED, 0x6D, 0xE5, 0x44, 0xF6, +0xC4, 0xA3, 0x01, 0x6D, 0xAC, 0xEE, 0x0A, 0x26, +0x44, 0xF6, 0x64, 0xA3, 0x66, 0x33, 0xAC, 0xEB, +0xFF, 0x6D, 0xAC, 0xEB, 0x03, 0x2B, 0x60, 0x9A, +0x01, 0x4B, 0x60, 0xDA, 0x01, 0x4C, 0x0A, 0x74, +0x18, 0x4A, 0xE5, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x24, 0xF6, 0x71, 0xA2, +0xFF, 0x73, 0x2B, 0x61, 0x44, 0xF6, 0x60, 0x9A, +0x01, 0x4B, 0x44, 0xF6, 0x60, 0xDA, 0x24, 0xF6, +0x5C, 0x9A, 0x4E, 0xEB, 0x22, 0x2B, 0x30, 0xF0, +0x20, 0x6A, 0xCF, 0xF7, 0x10, 0x4A, 0x18, 0x6D, +0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x8B, 0xF1, +0x00, 0x4C, 0x12, 0xED, 0x91, 0xE5, 0x44, 0xF6, +0xC4, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, +0x44, 0xF6, 0x84, 0xA4, 0x86, 0x34, 0xAC, 0xEC, +0x03, 0x24, 0x80, 0x9A, 0x01, 0x4C, 0x80, 0xDA, +0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, 0xE7, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x78, 0x67, 0xCF, 0xF7, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x84, 0x9A, -0xFF, 0x6A, 0x60, 0xA4, 0x6C, 0xEA, 0x5E, 0x33, -0x03, 0x23, 0x7F, 0x6B, 0x4C, 0xEB, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x48, 0x9A, -0x00, 0x69, 0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF1, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x44, 0xF1, 0x68, 0x9B, 0x0C, 0xEA, 0xE0, 0xF3, -0x1F, 0x68, 0x2C, 0xE8, 0x00, 0x30, 0x4D, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, 0x44, 0x9A, -0x0C, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF1, 0x50, 0x9A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, -0x40, 0xEA, 0x04, 0x93, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF1, 0x48, 0x9A, 0xFF, 0x4B, 0x40, 0x9A, -0x04, 0xD3, 0x02, 0x2B, 0x00, 0x6A, 0x0D, 0x10, -0x00, 0x52, 0xED, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x2A, 0xF4, 0x18, 0x4B, 0x2D, 0xE3, 0x01, 0x49, -0x00, 0xF2, 0x00, 0x71, 0x40, 0xC3, 0xCA, 0x61, -0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6B, -0x8C, 0xEB, 0x00, 0xF3, 0x00, 0x5B, 0xFF, 0x6A, -0x06, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x2A, 0xF6, -0x18, 0x4A, 0x4D, 0xE3, 0x40, 0xA3, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x89, 0xF5, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF5, -0x44, 0xC3, 0x2A, 0xF4, 0x18, 0x4C, 0x30, 0xF0, -0x20, 0x6B, 0xFF, 0x6D, 0x00, 0xF2, 0x00, 0x6E, -0x89, 0xF5, 0x45, 0xC3, 0x00, 0x18, 0x3D, 0xD7, -0x30, 0xF0, 0x20, 0x6C, 0x2A, 0xF6, 0x18, 0x4C, -0xFF, 0x6D, 0x00, 0xF3, 0x00, 0x6E, 0x00, 0x18, -0x3D, 0xD7, 0x00, 0x18, 0x8A, 0xEB, 0x01, 0x72, -0x02, 0x61, 0x00, 0x18, 0x59, 0xEB, 0x05, 0x97, +0x30, 0xF0, 0x20, 0x68, 0xCF, 0xF7, 0x05, 0x48, +0x00, 0x69, 0x18, 0x6A, 0x58, 0xE9, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x12, 0xEA, +0x69, 0xE2, 0x44, 0xF6, 0x84, 0xA2, 0x01, 0x6B, +0x8C, 0xEB, 0x27, 0x23, 0x00, 0xF0, 0x8B, 0x98, +0x00, 0xF0, 0x67, 0x98, 0x63, 0xEC, 0x21, 0x61, +0x61, 0x80, 0x81, 0x43, 0x04, 0xD4, 0x07, 0x2C, +0x00, 0xF0, 0x4F, 0x98, 0x00, 0xF0, 0x93, 0x98, +0x40, 0xEA, 0x04, 0x92, 0x14, 0x10, 0x80, 0xA0, +0x01, 0x4C, 0x80, 0xC0, 0x80, 0xA0, 0x82, 0xEB, +0x08, 0x60, 0x44, 0xF6, 0x84, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x44, 0xF6, 0x64, 0xC2, +0x08, 0x10, 0x00, 0xF0, 0x4F, 0x98, 0x00, 0xF0, +0x93, 0x98, 0x40, 0xEA, 0x00, 0x6A, 0x00, 0xF0, +0x4B, 0xD8, 0x01, 0x49, 0x0A, 0x71, 0x18, 0x48, +0xC8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFF, 0x6B, 0x6C, 0xEC, +0x0F, 0x6A, 0x8C, 0xEA, 0x03, 0x2A, 0x92, 0x32, +0x6C, 0xEA, 0x20, 0xE8, 0x07, 0x4A, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, +0x08, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x44, 0x32, +0xFF, 0x4A, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, +0x80, 0x18, 0x92, 0x78, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, +0x04, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0xFF, 0x4A, +0x44, 0x32, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, +0x80, 0x18, 0x92, 0x78, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, +0x08, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x44, 0x32, +0xFF, 0x4A, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, +0x80, 0x18, 0xAF, 0x78, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, +0x04, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0xFF, 0x4A, +0x44, 0x32, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, +0x80, 0x18, 0xAF, 0x78, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, +0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x80, 0x18, +0x2E, 0x78, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, +0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0x2E, 0x78, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x41, 0xE9, 0x01, 0x6D, 0x02, 0x6C, +0xA4, 0xEA, 0x80, 0x18, 0x2E, 0x78, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x0E, 0xF5, 0x4C, 0xA2, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x41, 0xE9, +0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x80, 0x18, +0x2E, 0x78, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, +0xA2, 0x67, 0x80, 0x18, 0x2E, 0x78, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, +0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x80, 0x18, +0x5F, 0x78, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, +0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0x5F, 0x78, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x41, 0xE9, 0x01, 0x6D, 0x02, 0x6C, +0xA4, 0xEA, 0x80, 0x18, 0x5F, 0x78, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x41, 0xE9, +0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x80, 0x18, +0x5F, 0x78, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, +0xA2, 0x67, 0x80, 0x18, 0x5F, 0x78, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xDD, 0x63, 0x45, 0x62, +0x44, 0xD1, 0x43, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x69, 0xA4, 0xF0, 0x40, 0x9A, 0x8C, 0xE9, +0x30, 0x31, 0x49, 0xE1, 0x40, 0xD2, 0x40, 0xA2, +0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, +0x00, 0x52, 0x40, 0x60, 0x01, 0x6A, 0x7D, 0x67, +0x4B, 0xEA, 0x54, 0xC3, 0x0F, 0x6A, 0x56, 0xC3, +0x10, 0x6A, 0x57, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF4, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0x06, 0x04, 0x49, 0xE1, 0x40, 0x9A, 0x04, 0x05, +0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, +0x44, 0x9A, 0x07, 0x04, 0x04, 0x05, 0x49, 0xE1, +0x40, 0x9A, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, +0x4C, 0x98, 0x40, 0xEA, 0x40, 0x93, 0x08, 0x04, +0x04, 0x05, 0x40, 0x9B, 0x04, 0x6E, 0x04, 0xD2, +0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF0, 0x48, 0x9A, 0x09, 0x04, +0x04, 0x05, 0x45, 0xE1, 0x40, 0x99, 0x04, 0x6E, +0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, +0x05, 0x04, 0x40, 0xEA, 0x45, 0x97, 0x44, 0x91, +0x43, 0x90, 0x23, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF4, 0x90, 0x9C, +0x50, 0x33, 0x91, 0xE3, 0x80, 0x9C, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF0, 0x84, 0x9C, 0x8D, 0xE3, +0x82, 0x67, 0x60, 0x9B, 0x00, 0x18, 0xBB, 0xE9, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF2, 0x44, 0x9A, 0xA4, 0xF0, 0x6C, 0x9B, +0x00, 0xA2, 0x20, 0xA3, 0xFF, 0x6A, 0x4C, 0xE8, +0x4C, 0xE9, 0x2A, 0xE8, 0x35, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF4, 0x50, 0x9A, 0x10, 0x33, +0x49, 0xE3, 0x40, 0xA2, 0xFF, 0x6B, 0x6C, 0xEA, +0x56, 0x32, 0x6C, 0xEA, 0x02, 0x72, 0x0E, 0x60, +0x03, 0x5A, 0x02, 0x60, 0x06, 0x22, 0x1A, 0x10, +0x04, 0x72, 0x0D, 0x60, 0x06, 0x72, 0x10, 0x60, +0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x4C, 0x9A, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x54, 0x9A, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x58, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x5C, 0x9A, +0x90, 0x67, 0x40, 0xEA, 0x01, 0x48, 0x7F, 0x6A, +0x4C, 0xE8, 0x0A, 0xE9, 0xD0, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF2, 0x44, 0x9A, 0x20, 0xC2, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0xFF, 0x6B, 0xE2, 0x67, 0x6C, 0xEE, +0x6C, 0xEF, 0x1E, 0x65, 0x87, 0x67, 0x03, 0x6E, +0xCC, 0xEC, 0x80, 0xF0, 0x10, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF0, 0x14, 0x9C, 0x08, 0x69, +0x42, 0x32, 0x80, 0xA0, 0x52, 0x32, 0x6C, 0xEA, +0x6C, 0xEC, 0x2D, 0xEC, 0x6C, 0xEC, 0x80, 0xC0, +0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF0, 0x98, 0x9C, +0xCC, 0xEA, 0xE0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, +0xA4, 0xF0, 0x9C, 0x9C, 0x40, 0xC4, 0x0F, 0x6A, +0x98, 0x67, 0x8C, 0xEA, 0x74, 0x22, 0x01, 0x6C, +0x4C, 0xEC, 0x06, 0x24, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF0, 0x80, 0x9C, 0xAC, 0xEB, 0x60, 0xC4, +0x02, 0x6B, 0x4C, 0xEB, 0x08, 0x23, 0xFF, 0x6C, +0xA2, 0x33, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF0, 0x84, 0x9C, 0x60, 0xC4, 0x04, 0x6B, +0x4C, 0xEB, 0x09, 0x23, 0xA2, 0x33, 0xFF, 0x6C, +0x62, 0x33, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF0, 0x88, 0x9C, 0x60, 0xC4, 0x4E, 0x33, +0x07, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, +0x6C, 0x9B, 0x00, 0xF6, 0xA2, 0x35, 0xA0, 0xC3, +0x20, 0x6B, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF0, 0x50, 0x9A, 0x64, 0x68, 0x60, 0xC2, +0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0xFF, 0x48, 0x40, 0xEA, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x21, 0x28, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF3, 0x80, 0x9C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, +0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, +0x60, 0xA1, 0xD0, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x74, 0x9A, +0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x16, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, +0x30, 0x9A, 0x20, 0x6A, 0x60, 0xA1, 0x6C, 0xEA, +0xCC, 0x2A, 0x60, 0xA1, 0xF0, 0x6A, 0x6C, 0xEA, +0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, +0x74, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0xC2, 0x67, 0xFF, 0x6C, 0x8C, 0xEE, +0x03, 0x6D, 0x66, 0x67, 0xAC, 0xEB, 0x4B, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF0, 0xF4, 0x9B, +0x08, 0x68, 0x42, 0x32, 0x60, 0xA7, 0x52, 0x32, +0x8C, 0xEA, 0x8C, 0xEB, 0x0D, 0xEB, 0x8C, 0xEB, +0x60, 0xC7, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF0, +0x78, 0x9B, 0xAC, 0xEA, 0x64, 0x68, 0xC0, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF0, 0x7C, 0x9B, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, +0x50, 0x9A, 0x30, 0x6B, 0x60, 0xC2, 0x2E, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0xFF, 0x48, 0x40, 0xEA, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0x23, 0x28, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xA3, 0xF3, 0x80, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, 0x60, 0xA1, +0xCF, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF0, 0x74, 0x9A, 0xF7, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, +0x4B, 0xEA, 0x19, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF0, 0x30, 0x9A, 0x20, 0x6A, 0x60, 0xA1, +0x6C, 0xEA, 0xCA, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF0, 0x40, 0x9A, 0xEF, 0x6B, 0x40, 0x9A, +0x80, 0xA1, 0x8C, 0xEB, 0x60, 0xC1, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF0, 0x94, 0x9B, 0xF7, 0x6B, +0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF0, 0xB4, 0x9A, 0xE0, 0xF3, 0x10, 0x6C, +0x0F, 0x6E, 0x00, 0x18, 0x1B, 0xEA, 0xE0, 0xF3, +0x0C, 0x6C, 0x00, 0x18, 0x6F, 0xEA, 0xFF, 0x6B, +0x4C, 0xEB, 0x0B, 0x73, 0x0B, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF0, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x44, 0xF0, 0x9C, 0x9C, 0x40, 0x9B, +0x8C, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xAD, 0xF7, 0x78, 0xA3, +0xFF, 0x6A, 0x24, 0x67, 0x01, 0x73, 0xAC, 0xEA, +0x07, 0x60, 0x03, 0x73, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF0, 0x7C, 0x9B, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF0, 0x60, 0x9B, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, +0x04, 0x9A, 0x6C, 0xE8, 0x0A, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF0, 0x08, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF0, 0x4C, 0x9A, 0x6D, 0xE8, +0x4C, 0xE8, 0x00, 0x18, 0xA1, 0xC8, 0x0C, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF2, 0x69, 0xA2, +0x08, 0x6A, 0x6C, 0xEA, 0x05, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF0, 0x50, 0x9A, 0x4C, 0xE8, +0x02, 0x30, 0x02, 0x30, 0x00, 0xC9, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0xF7, 0x1F, 0x69, 0x30, 0xF0, 0x20, 0x6B, +0x8C, 0xE9, 0x03, 0xF2, 0x88, 0x9B, 0xFF, 0x6A, +0x4C, 0xED, 0xC0, 0xA4, 0x4C, 0xEE, 0x07, 0x25, +0x8E, 0x6B, 0xCC, 0xEB, 0x60, 0xC4, 0x71, 0x6B, +0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0x78, 0x9A, 0xFF, 0x6C, +0x01, 0x6D, 0x40, 0xA3, 0x00, 0x68, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x22, 0x10, +0x64, 0x70, 0x16, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x83, 0xF2, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, +0xA3, 0xF3, 0x64, 0xDA, 0x00, 0x6A, 0x1C, 0x10, +0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0x58, 0x9A, 0x60, 0xA2, 0x01, 0x6A, +0x6C, 0xEA, 0xD6, 0x2A, 0xFF, 0xF7, 0x1F, 0x6A, +0x01, 0x49, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x50, 0x9A, 0x20, 0xCA, 0x01, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x30, 0xF0, 0x20, 0x6D, 0x04, 0x04, 0x83, 0xF0, +0x04, 0x4D, 0x14, 0x6E, 0x00, 0x18, 0x9D, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x01, 0x4A, +0x05, 0x04, 0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6D, +0x2B, 0xF2, 0xBE, 0xA5, 0xB6, 0x35, 0x6E, 0xED, +0x1B, 0x25, 0xC0, 0xA2, 0x19, 0x26, 0xE0, 0x9C, +0x1F, 0xF7, 0x00, 0x6D, 0xEC, 0xED, 0x02, 0xF0, +0x00, 0x75, 0x01, 0x60, 0x09, 0x2D, 0x30, 0xF0, +0x20, 0x6E, 0xA0, 0x9C, 0x63, 0xF1, 0xC8, 0x9E, +0xB5, 0xE6, 0xC0, 0xA2, 0xC0, 0xC5, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF1, 0xAC, 0x9D, +0xFD, 0xE5, 0xC0, 0xC7, 0x00, 0x6D, 0xA0, 0xC2, +0x01, 0x4B, 0xFF, 0x6D, 0xAC, 0xEB, 0x04, 0x73, +0x01, 0x4A, 0x04, 0x4C, 0xD7, 0x61, 0x0B, 0x97, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x30, 0xF0, 0x20, 0x6D, 0x04, 0x04, 0x63, 0xF0, +0x10, 0x4D, 0x14, 0x6E, 0x00, 0x18, 0x9D, 0xD8, +0x05, 0x03, 0x00, 0x6C, 0x01, 0x6A, 0x30, 0xF0, +0x20, 0x6D, 0x2B, 0xF2, 0xBE, 0xA5, 0xB6, 0x35, +0x4E, 0xED, 0x38, 0x25, 0xC0, 0x9B, 0x1F, 0xF7, +0x00, 0x6D, 0xCC, 0xED, 0x02, 0xF0, 0x00, 0x75, +0x01, 0x60, 0x09, 0x2D, 0x30, 0xF0, 0x20, 0x6E, +0x63, 0xF1, 0xC8, 0x9E, 0xA0, 0x9B, 0xE1, 0x44, +0xB5, 0xE6, 0xC0, 0xA5, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6D, 0x63, 0xF1, 0xAC, 0x9D, 0xE1, 0x44, +0xD9, 0xE5, 0xC0, 0xA6, 0xFF, 0x6D, 0xCC, 0xED, +0x30, 0xF0, 0x20, 0x6E, 0xC9, 0xF5, 0x00, 0x4E, +0xD9, 0xE7, 0xA0, 0xC6, 0xC0, 0x9B, 0x1F, 0xF7, +0x00, 0x6D, 0xCC, 0xED, 0x02, 0xF0, 0x00, 0x75, +0x01, 0x60, 0x09, 0x2D, 0x30, 0xF0, 0x20, 0x6E, +0xA0, 0x9B, 0x63, 0xF1, 0xC8, 0x9E, 0xB5, 0xE6, +0x00, 0x6E, 0xC0, 0xC5, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6D, 0x63, 0xF1, 0xAC, 0x9D, 0xD9, 0xE5, +0x00, 0x6D, 0xA0, 0xC6, 0x01, 0x4A, 0xFF, 0x6D, +0xAC, 0xEA, 0x04, 0x72, 0x01, 0x4C, 0x04, 0x4B, +0xBA, 0x61, 0x0B, 0x97, 0x06, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0xBC, 0x9B, +0xFF, 0x6A, 0x08, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, +0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF1, 0x60, 0x9B, +0x4C, 0xEC, 0x80, 0xC5, 0x60, 0xA3, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF1, 0xDC, 0x9B, 0xFF, 0x6A, 0x08, 0x6F, +0x60, 0xA6, 0xEB, 0xEF, 0x4C, 0xEC, 0x4C, 0xEB, +0xEC, 0xEB, 0x6D, 0xEC, 0x4C, 0xED, 0x4C, 0xEC, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x40, 0x9A, +0x80, 0xC6, 0xA0, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0x83, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF2, 0xBC, 0x9B, 0xC3, 0xF4, +0x10, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF3, 0xA8, 0x9B, 0x91, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF1, 0xBC, 0x9B, 0x91, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF1, 0xBC, 0x9B, +0x91, 0x67, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, 0xE6, 0xF3, +0x00, 0x48, 0xC8, 0xF0, 0x00, 0x49, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xA8, 0xC1, 0x98, +0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEA, 0x08, 0x48, 0x2A, 0xE8, 0xF4, 0x61, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, +0x0F, 0x5A, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0x34, 0xE2, 0xF7, 0x14, 0x4B, 0x8D, 0xE3, +0x60, 0x9B, 0x00, 0xEB, 0x00, 0x6A, 0x20, 0xE8, +0xD0, 0xF4, 0x64, 0x42, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF1, 0x64, 0x9B, 0x2F, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF1, 0x68, 0x9B, 0x2A, 0x10, +0x80, 0xF4, 0x64, 0x42, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF1, 0x6C, 0x9B, 0x1F, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF1, 0x70, 0x9B, 0x1A, 0x10, +0xC0, 0xF4, 0x68, 0x42, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF1, 0x74, 0x9B, 0x0F, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF1, 0x78, 0x9B, 0x0A, 0x10, +0x70, 0xF4, 0x68, 0x42, 0x1F, 0xF7, 0x00, 0x6C, +0x8C, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF1, 0x7C, 0x9B, 0x69, 0xE2, 0x60, 0xAA, +0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF1, 0x60, 0x9B, +0x69, 0xE2, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x78, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0x15, 0xF7, +0x0D, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF0, 0x40, 0x9A, 0x40, 0x9A, +0x21, 0x22, 0xE0, 0xF3, 0x09, 0x70, 0x13, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, +0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x64, 0xDA, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, +0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0xD9, 0x17, 0x01, 0x6A, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xAD, 0xF7, 0x58, 0xA2, +0x03, 0x72, 0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF0, 0x94, 0x9A, 0xFF, 0x6A, 0x60, 0xA4, +0x6C, 0xEA, 0x10, 0x6B, 0x4C, 0xEB, 0x03, 0x23, +0xEF, 0x6B, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x27, 0x67, 0x4C, 0xE9, 0x6F, 0x41, +0x4C, 0xEB, 0x04, 0x67, 0x02, 0x5B, 0x4C, 0xE8, +0x4C, 0xED, 0x4C, 0xEE, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x76, 0xE3, 0x10, 0x58, 0x55, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0x33, 0x23, 0xF0, +0x10, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0xD0, 0xF4, 0x44, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF1, 0x64, 0x9A, 0x34, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF1, 0x68, 0x9A, 0x2F, 0x10, +0x80, 0xF4, 0x44, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF1, 0x6C, 0x9A, 0x24, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF1, 0x70, 0x9A, 0x1F, 0x10, +0xC0, 0xF4, 0x48, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF1, 0x74, 0x9A, 0x14, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF1, 0x78, 0x9A, 0x0F, 0x10, +0x70, 0xF4, 0x48, 0x40, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF1, 0x7C, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x6D, 0xE0, +0x41, 0xE0, 0x83, 0xF3, 0x80, 0xA0, 0x83, 0xF3, +0x50, 0xA0, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, +0x3D, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x23, 0xF4, 0x04, 0x6C, 0x01, 0x6D, 0x80, 0x18, +0x1C, 0x28, 0x01, 0x6B, 0x6E, 0xEA, 0x05, 0x97, +0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x24, 0x67, 0xA0, 0xF0, 0x9B, 0xA2, 0x03, 0xF6, +0x74, 0xAA, 0x7F, 0x6A, 0x8C, 0xEA, 0x21, 0x22, +0x01, 0x4B, 0xE0, 0xF3, 0x08, 0x6A, 0x58, 0xEB, +0x12, 0xEC, 0x23, 0xEC, 0x04, 0xD4, 0x19, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x9E, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x04, 0x9A, +0x96, 0x34, 0xB0, 0x67, 0x80, 0x18, 0x0F, 0x01, +0x43, 0xE0, 0x23, 0xE8, 0x0A, 0x61, 0x04, 0x92, +0x03, 0xEA, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, +0xE7, 0x17, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x24, 0x6A, +0x16, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x69, +0x40, 0xDB, 0x8B, 0xF1, 0x00, 0x49, 0x03, 0xF6, +0x44, 0xA1, 0x6C, 0x22, 0x00, 0x18, 0x23, 0xEC, +0x01, 0x72, 0x68, 0x60, 0x80, 0x18, 0xD9, 0x03, +0x03, 0xF6, 0x44, 0xA1, 0x02, 0x72, 0x52, 0x61, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x40, 0xEA, 0x01, 0x6D, 0xAB, 0xED, 0x03, 0xF3, +0x08, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0x04, 0xD2, +0x00, 0x18, 0x6C, 0xEB, 0x02, 0x6C, 0x80, 0x18, +0xAE, 0x13, 0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, +0x08, 0x4C, 0x80, 0x18, 0xB4, 0x1D, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0xF5, 0xD0, 0x99, 0x01, 0x6D, 0x23, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x04, 0x96, 0x01, 0x6D, 0x03, 0xF3, +0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x0A, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0xF5, 0xD4, 0x99, 0x01, 0x6D, 0x23, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x04, 0x96, 0x01, 0x6D, 0x03, 0xF3, +0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0xF6, +0x64, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x78, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0x16, 0xF1, +0x16, 0x4A, 0x40, 0xDB, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF7, 0x44, 0xA2, +0x02, 0x72, 0x58, 0x61, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x69, 0xC6, 0xF2, 0x14, 0x48, +0xE6, 0xF3, 0x00, 0x49, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0x98, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, +0x83, 0xF6, 0x04, 0x6C, 0xAB, 0xED, 0x04, 0x48, +0x40, 0xEA, 0x2A, 0xE8, 0xF3, 0x61, 0x30, 0xF0, +0x20, 0x68, 0x46, 0xF2, 0x04, 0x48, 0x30, 0xF0, +0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0xC0, 0x98, +0x01, 0x6D, 0x23, 0xF0, 0x10, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x48, +0x86, 0xF2, 0x0C, 0x4A, 0x4A, 0xE8, 0xEF, 0x61, +0x21, 0xF0, 0x04, 0x68, 0x01, 0x6D, 0x90, 0x67, +0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xD2, 0x23, 0xF5, 0xA8, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0x90, 0x67, 0x03, 0x6E, +0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x86, 0xF2, +0x0C, 0x48, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, +0x44, 0x99, 0xC0, 0x98, 0x01, 0x6D, 0x28, 0xF1, +0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x48, 0xC6, 0xF2, 0x14, 0x4A, +0x4A, 0xE8, 0xEF, 0x61, 0xC0, 0xF3, 0x44, 0x99, +0x04, 0x96, 0x01, 0x6D, 0x21, 0xF0, 0x04, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x06, 0x6C, 0x00, 0x18, +0x45, 0xEC, 0xC8, 0x6C, 0x00, 0x18, 0x2A, 0xEC, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x23, 0xF4, 0x04, 0x6C, 0x01, 0x6D, 0x80, 0x18, +0x1C, 0x28, 0x21, 0x22, 0x00, 0x18, 0x0D, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x68, 0x9A, +0xFF, 0x6C, 0x02, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF2, 0x48, 0x9A, 0x01, 0x6B, +0x6B, 0xEB, 0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, +0x08, 0x4C, 0x60, 0xC2, 0x00, 0x6D, 0x80, 0x18, +0x14, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x44, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x44, 0x9A, +0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x6C, +0x00, 0x6D, 0x00, 0x18, 0xF8, 0xCD, 0x03, 0x72, +0x20, 0x60, 0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, +0x08, 0x4C, 0x01, 0x6D, 0x80, 0x18, 0x14, 0x20, +0x14, 0x22, 0x00, 0x18, 0x22, 0xC6, 0x01, 0x72, +0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, +0x48, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x68, 0x9A, 0xFD, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, +0x0B, 0x10, 0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, +0xF8, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x44, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x00, 0x6A, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0xD8, 0x9A, +0xFF, 0x6B, 0xFC, 0x6D, 0x40, 0xA6, 0x6C, 0xEC, +0x4C, 0xED, 0x8D, 0xED, 0x6C, 0xED, 0xA0, 0xC6, +0xA0, 0xA6, 0x03, 0x6A, 0xAC, 0xEA, 0x8E, 0xEA, +0x01, 0x5A, 0x58, 0x67, 0x6C, 0xEA, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD0, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x8A, 0xF4, 0x00, 0x4B, 0x71, 0xE2, +0x80, 0xA4, 0x1F, 0x6D, 0x8C, 0xED, 0x0F, 0x75, +0x1D, 0x61, 0x01, 0x4A, 0x6D, 0xE2, 0xA0, 0xA3, +0xF0, 0x68, 0x96, 0x33, 0xAC, 0xE8, 0x07, 0x30, +0x6D, 0xE8, 0x2E, 0x70, 0x0F, 0x6B, 0xAC, 0xEB, +0x14, 0x61, 0x04, 0x6D, 0x6C, 0xED, 0x05, 0x2D, +0x01, 0x6E, 0x30, 0xF0, 0x20, 0x6D, 0xC9, 0xF5, +0xCC, 0xC5, 0x6E, 0x35, 0x2E, 0x68, 0x09, 0x2D, +0x01, 0x6E, 0x30, 0xF0, 0x20, 0x6D, 0xC9, 0xF5, +0xCD, 0xC5, 0x03, 0x10, 0x0F, 0x6B, 0x92, 0x30, +0x8C, 0xEB, 0xFF, 0x74, 0x29, 0x60, 0x01, 0x4A, +0x80, 0xF1, 0x1F, 0x5A, 0x2B, 0x60, 0x0C, 0x30, +0x00, 0x6C, 0xA3, 0x67, 0xA7, 0xEC, 0x01, 0x6E, +0xCC, 0xED, 0x1A, 0x2D, 0x84, 0x36, 0x19, 0xE6, +0xA1, 0x46, 0x00, 0xF3, 0x01, 0x5D, 0x1E, 0x60, +0x30, 0xF0, 0x20, 0x6D, 0x8A, 0xF6, 0x00, 0x4D, +0xB9, 0xE6, 0x30, 0xF0, 0x20, 0x6D, 0x8A, 0xF4, +0x00, 0x4D, 0xBD, 0xE2, 0xE0, 0xA7, 0xE0, 0xC6, +0xE1, 0x42, 0xA0, 0xF1, 0x00, 0x5F, 0x0E, 0x60, +0xB5, 0xE7, 0xA0, 0xA5, 0x02, 0x4A, 0xA1, 0xC6, +0x01, 0x4C, 0x04, 0x74, 0xDE, 0x61, 0xAB, 0x17, +0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, 0x48, 0xDB, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x01, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x9C, 0x9A, 0xFF, 0x6A, 0x60, 0xA4, +0x6C, 0xEA, 0x5E, 0x33, 0x03, 0x23, 0x7F, 0x6B, +0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x40, 0x9A, 0x00, 0x69, 0x00, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0x60, 0x9B, +0x0C, 0xEA, 0xE0, 0xF3, 0x1F, 0x68, 0x2C, 0xE8, +0x00, 0x30, 0x4D, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF0, 0x5C, 0x9A, 0x0C, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x48, 0x9A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x04, 0x93, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x40, 0x9A, +0xFF, 0x4B, 0x40, 0x9A, 0x04, 0xD3, 0x02, 0x2B, +0x00, 0x6A, 0x0D, 0x10, 0x00, 0x52, 0xED, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x8A, 0xF4, 0x00, 0x4B, +0x2D, 0xE3, 0x01, 0x49, 0x00, 0xF2, 0x00, 0x71, +0x40, 0xC3, 0xCA, 0x61, 0x01, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x00, 0xF3, +0x00, 0x5B, 0xFF, 0x6A, 0x06, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x8A, 0xF6, 0x00, 0x4A, 0x4D, 0xE3, +0x40, 0xA3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, +0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF5, 0x4C, 0xC3, 0x8A, 0xF4, +0x00, 0x4C, 0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6D, +0x00, 0xF2, 0x00, 0x6E, 0xC9, 0xF5, 0x4D, 0xC3, +0x00, 0x18, 0x98, 0xD8, 0x30, 0xF0, 0x20, 0x6C, +0x8A, 0xF6, 0x00, 0x4C, 0xFF, 0x6D, 0x00, 0xF3, +0x00, 0x6E, 0x00, 0x18, 0x98, 0xD8, 0x00, 0x18, +0x2F, 0xED, 0x01, 0x72, 0x02, 0x61, 0x00, 0x18, +0xFE, 0xEC, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x4E, 0xF5, 0x58, 0xA2, 0x0F, 0x6B, 0x01, 0x74, +0x46, 0x32, 0x6C, 0xEA, 0x34, 0x6B, 0x78, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x8E, 0xF6, 0x0C, 0x4B, +0x12, 0xEA, 0x49, 0xE3, 0x13, 0x60, 0x05, 0x24, +0x02, 0x74, 0x0C, 0x60, 0x03, 0x74, 0x12, 0x60, +0x1A, 0x10, 0x67, 0x9A, 0x0D, 0x6C, 0x01, 0x4B, +0x67, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x48, 0x9A, 0x10, 0x10, 0x69, 0x9A, 0x01, 0x4B, +0x69, 0xDA, 0x07, 0x10, 0x68, 0x9A, 0x01, 0x4B, +0x68, 0xDA, 0x03, 0x10, 0x6C, 0x9A, 0x01, 0x4B, +0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x48, 0x9A, 0x0E, 0x6C, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x4E, 0xF5, 0x58, 0xA2, 0x0F, 0x6B, 0x01, 0x74, 0x46, 0x32, 0x6C, 0xEA, 0x34, 0x6B, 0x78, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x4E, 0xF6, 0x00, 0x4B, 0x12, 0xEA, 0x49, 0xE3, -0x13, 0x60, 0x05, 0x24, 0x02, 0x74, 0x0C, 0x60, -0x03, 0x74, 0x12, 0x60, 0x1A, 0x10, 0x67, 0x9A, -0x0D, 0x6C, 0x01, 0x4B, 0x67, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x10, 0x10, -0x69, 0x9A, 0x01, 0x4B, 0x69, 0xDA, 0x07, 0x10, -0x68, 0x9A, 0x01, 0x4B, 0x68, 0xDA, 0x03, 0x10, -0x6C, 0x9A, 0x01, 0x4B, 0x6C, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x0E, 0x6C, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x0E, 0xF5, 0x4C, 0xA2, 0x0F, 0x6B, 0x01, 0x74, -0x46, 0x32, 0x6C, 0xEA, 0x34, 0x6B, 0x78, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x4E, 0xF6, 0x00, 0x4B, -0x12, 0xEA, 0x49, 0xE3, 0x11, 0x60, 0x03, 0x24, -0x02, 0x74, 0x0A, 0x60, 0x16, 0x10, 0x61, 0x9A, -0x0B, 0x6C, 0x01, 0x4B, 0x61, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x0C, 0x10, -0x63, 0x9A, 0x01, 0x4B, 0x63, 0xDA, 0x03, 0x10, -0x62, 0x9A, 0x01, 0x4B, 0x62, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x0C, 0x6C, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x25, 0x67, 0x36, 0x24, -0x40, 0xA4, 0x34, 0x2A, 0x30, 0xF0, 0x20, 0x68, -0x89, 0xF5, 0x08, 0x48, 0x40, 0xC0, 0x41, 0xC0, -0x78, 0x6A, 0x41, 0xC8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, 0x75, 0xA2, -0x30, 0xF0, 0x20, 0x6D, 0x84, 0x40, 0xE3, 0xF4, -0x7C, 0xC2, 0xA0, 0xF0, 0x76, 0xA2, 0x2E, 0xF6, -0x14, 0x4D, 0x78, 0x6E, 0xE3, 0xF4, 0x7D, 0xC2, -0xC3, 0xF3, 0x7C, 0xA2, 0xE3, 0xF4, 0x7E, 0xC2, -0xE3, 0xF3, 0x68, 0xA2, 0xE3, 0xF4, 0x7F, 0xC2, -0xC3, 0xF3, 0x7E, 0xA2, 0x03, 0xF5, 0x60, 0xC2, -0xE3, 0xF3, 0x6A, 0xA2, 0x03, 0xF5, 0x61, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0x40, 0xEA, 0x91, 0x67, 0xB0, 0x67, 0x7C, 0x6E, -0x80, 0x18, 0x1F, 0x68, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0xDD, 0x67, 0x44, 0x67, -0x98, 0xAE, 0xFF, 0x6B, 0x6C, 0xED, 0x04, 0x5C, -0x10, 0x61, 0x03, 0x25, 0x01, 0x75, 0x0D, 0x60, -0x05, 0x10, 0x87, 0x67, 0xA2, 0x67, 0x00, 0x18, -0x03, 0xEC, 0x07, 0x10, 0x8C, 0xEB, 0x03, 0x6D, -0x05, 0x6C, 0x01, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0xDD, 0x67, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF2, 0x48, 0x9A, 0x03, 0xF2, 0x64, 0x9B, -0x40, 0xAA, 0x60, 0xAB, 0x6E, 0xEA, 0xFF, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x01, 0x5A, 0x58, 0x67, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0xF6, 0xF0, 0x0D, 0x4A, 0x40, 0xDB, 0x01, 0x4A, -0x40, 0xDB, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x34, 0x9A, 0x10, 0xF0, 0x24, 0x68, -0x16, 0xF1, 0x05, 0x48, 0x00, 0xD9, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF5, 0x58, 0x9A, 0x01, 0x48, -0x40, 0xEA, 0x00, 0xD9, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x8E, 0xF6, 0x0C, 0x4B, 0x12, 0xEA, 0x49, 0xE3, +0x11, 0x60, 0x03, 0x24, 0x02, 0x74, 0x0A, 0x60, +0x16, 0x10, 0x61, 0x9A, 0x0B, 0x6C, 0x01, 0x4B, +0x61, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x48, 0x9A, 0x0C, 0x10, 0x63, 0x9A, 0x01, 0x4B, +0x63, 0xDA, 0x03, 0x10, 0x62, 0x9A, 0x01, 0x4B, +0x62, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x48, 0x9A, 0x0C, 0x6C, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, -0x10, 0xF0, 0x24, 0x6A, 0x36, 0xF1, 0x19, 0x4A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0x4C, 0x9A, 0x80, 0x9B, 0xA4, 0x67, 0x4C, 0xED, -0x4E, 0xED, 0x02, 0x25, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF1, 0x48, 0x9A, 0x01, 0x6B, 0x40, 0x9A, -0x6C, 0xEA, 0x60, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF1, 0x4C, 0x9A, 0x00, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF1, 0x50, 0x9A, 0xE0, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x54, 0x9A, -0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, -0x58, 0x9A, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF1, 0x5C, 0x9A, 0x80, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF1, 0x40, 0x9A, 0x40, 0x9A, -0x41, 0x22, 0x30, 0xF0, 0x20, 0x69, 0x84, 0xF1, -0x24, 0x99, 0x60, 0xD9, 0x30, 0xF0, 0x20, 0x6B, -0x84, 0xF1, 0x68, 0x9B, 0x00, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF4, 0x74, 0x9B, 0xE0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0x64, 0x9B, -0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, -0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x84, 0xF1, 0x6C, 0x9B, 0x80, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xF1, 0x70, 0x9B, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF2, 0x84, 0x9C, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x5C, 0xB9, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x7D, 0xB9, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x77, 0xF0, -0x24, 0x6C, 0xC0, 0xF1, 0x04, 0x4C, 0xAE, 0xB8, -0x00, 0x65, 0xA0, 0xDC, 0x9A, 0xB8, 0x00, 0x65, -0xBB, 0xB8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0x36, 0xF1, 0x1A, 0x4A, 0x40, 0xDB, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0x76, 0xF2, 0x09, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x8B, 0xF1, 0x74, 0x9A, 0x63, 0x23, -0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xF4, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, -0x54, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0xA7, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF1, 0x54, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x8E, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x8B, 0xF1, 0x54, 0x9A, 0x08, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x8A, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x54, 0x9A, -0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xFD, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, -0x54, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0xFE, 0xDD, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF1, 0x54, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xFF, 0xDD, 0x30, 0xF0, -0x20, 0x6B, 0x8B, 0xF1, 0x74, 0x9B, 0xFF, 0x6A, -0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x7E, 0xE0, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, -0x74, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x00, 0xDE, 0x30, 0xF0, -0x20, 0x6B, 0x8B, 0xF1, 0x74, 0x9B, 0x08, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x01, 0xDE, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, -0x74, 0x9B, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x02, 0xDE, 0x30, 0xF0, -0x20, 0x6A, 0x8B, 0xF1, 0x78, 0x9A, 0xA0, 0xF0, -0x02, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x43, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF1, 0x58, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x03, 0xDE, 0x30, 0xF0, -0x20, 0x6B, 0x8B, 0xF1, 0x78, 0x9B, 0x04, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, -0x00, 0x18, 0xF5, 0xDF, 0x30, 0xF0, 0x20, 0x6B, -0x8B, 0xF1, 0x78, 0x9B, 0x08, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, -0xE0, 0xDE, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, -0x78, 0x9B, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x7F, 0x6F, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x5C, 0x9A, 0x8B, 0xF1, 0x78, 0x9B, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x89, 0x6F, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x54, 0x9A, 0x8B, 0xF1, 0x78, 0x9B, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x93, 0x6F, 0x30, 0xF0, -0x20, 0x6A, 0x8B, 0xF1, 0x58, 0x9A, 0x40, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, 0x2E, 0x74, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x58, 0x9A, -0x80, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, -0xAD, 0x73, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, -0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x2A, 0x74, 0x30, 0xF0, -0x20, 0x6B, 0x8B, 0xF1, 0x78, 0x9B, 0x00, 0xF2, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, -0xA9, 0x73, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, -0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x26, 0x74, 0x30, 0xF0, -0x20, 0x6B, 0x8B, 0xF1, 0x78, 0x9B, 0x01, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, -0xA5, 0x73, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, -0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x04, 0xDE, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, -0x58, 0x9A, 0x8B, 0xF1, 0x78, 0x9B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x38, 0xDE, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, -0x4C, 0x9A, 0x8B, 0xF1, 0x78, 0x9B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xF1, 0xDF, 0x30, 0xF0, -0x20, 0x6A, 0x8B, 0xF1, 0x7C, 0x9A, 0x4C, 0x23, -0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, -0x00, 0x18, 0xF5, 0xDF, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF1, 0x5C, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0xE0, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x5C, 0x9A, -0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, -0x00, 0x18, 0xF5, 0xDF, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF1, 0x5C, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0xE0, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x5C, 0x9A, -0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, -0x00, 0x18, 0xF5, 0xDF, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF1, 0x5C, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0xE0, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x5C, 0x9A, -0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, -0x00, 0x18, 0xF5, 0xDF, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF1, 0x5C, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xE0, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x00, 0x6B, 0x77, 0xDA, 0x78, 0xDA, 0x79, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, -0x10, 0xF0, 0x24, 0x6A, 0x76, 0xF2, 0x0A, 0x4A, -0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0x76, 0xF5, 0x09, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x8B, 0xF1, 0x64, 0x9A, 0xC0, 0xF0, -0x1C, 0x23, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xB2, 0xE0, -0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x64, 0x9B, -0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0xB2, 0xE0, 0x30, 0xF0, -0x20, 0x6B, 0x8B, 0xF1, 0x64, 0x9B, 0x08, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, -0x00, 0x18, 0xB2, 0xE0, 0x30, 0xF0, 0x20, 0x6B, -0x8B, 0xF1, 0x64, 0x9B, 0x10, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0xB2, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x5C, 0x9A, 0x8B, 0xF1, -0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, -0x00, 0x18, 0xB2, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x54, 0x9A, -0x8B, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x05, 0x6C, 0x00, 0x18, 0xB2, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x58, 0x9A, 0x8B, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x06, 0x6C, 0x00, 0x18, 0xB2, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF2, 0x5C, 0x9A, 0x8B, 0xF1, 0x64, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x07, 0x6C, 0x00, 0x18, -0xB2, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF2, 0x44, 0x9A, 0x8B, 0xF1, -0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x08, 0x6C, -0x00, 0x18, 0xB2, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0x50, 0x9A, -0x8B, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x09, 0x6C, 0x00, 0x18, 0xB2, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, -0x48, 0x9A, 0x8B, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x0A, 0x6C, 0x00, 0x18, 0xB2, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF2, 0x58, 0x9A, 0x8B, 0xF1, 0x64, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x0B, 0x6C, 0x00, 0x18, -0xB2, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF2, 0x58, 0x9A, 0x8B, 0xF1, -0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x0C, 0x6C, -0x00, 0x18, 0xB2, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x4C, 0x9A, -0x8B, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x0D, 0x6C, 0x00, 0x18, 0xB2, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, -0x50, 0x9A, 0x8B, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x0E, 0x6C, 0x00, 0x18, 0xB2, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x5C, 0x9A, 0x8B, 0xF1, 0x64, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x0F, 0x6C, 0x00, 0x18, -0xB2, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, -0x44, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x05, 0xE1, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, 0x73, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, -0x10, 0xF0, 0x24, 0x6A, 0x76, 0xF5, 0x0A, 0x4A, -0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0x56, 0xF7, 0x09, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x4B, 0xF1, 0x78, 0x9A, 0xE0, 0xF0, -0x1E, 0x23, 0x08, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0x81, 0xDE, 0x30, 0xF0, -0x20, 0x6A, 0x4B, 0xF1, 0x58, 0x9A, 0x02, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xEC, 0xDD, -0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF1, 0x58, 0x9A, -0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x01, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF1, -0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0xFD, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0x4B, 0xF1, 0x58, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xF1, 0xDD, 0x30, 0xF0, -0x20, 0x6A, 0x4B, 0xF1, 0x58, 0x9A, 0x80, 0x6B, -0x6C, 0xEA, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x48, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x4B, 0xF1, 0x78, 0x9B, 0xFF, 0x6A, -0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xF9, 0xE0, 0x30, 0xF0, 0x20, 0x6B, 0x4B, 0xF1, -0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xF5, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, -0x54, 0x9A, 0x4B, 0xF1, 0x78, 0x9B, 0x6C, 0xEA, -0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x58, 0x9A, 0x6C, 0xEA, 0x04, 0x22, 0x00, 0x6C, -0x00, 0x18, 0x99, 0xDF, 0x03, 0x10, 0x00, 0x6C, -0x00, 0x18, 0x43, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, 0x58, 0x9A, -0x4B, 0xF1, 0x78, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x4C, 0x9A, -0x6C, 0xEA, 0x04, 0x22, 0x01, 0x6C, 0x00, 0x18, -0x99, 0xDF, 0x03, 0x10, 0x01, 0x6C, 0x00, 0x18, -0x43, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xF1, 0x5C, 0x9A, 0x4B, 0xF1, -0x78, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0x50, 0x9A, 0x6C, 0xEA, -0x04, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x99, 0xDF, -0x03, 0x10, 0x02, 0x6C, 0x00, 0x18, 0x43, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xA4, 0xF1, 0x40, 0x9A, 0x4B, 0xF1, 0x78, 0x9B, -0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x5C, 0x9A, 0x6C, 0xEA, 0x04, 0x22, -0x03, 0x6C, 0x00, 0x18, 0x99, 0xDF, 0x03, 0x10, -0x03, 0x6C, 0x00, 0x18, 0x43, 0xDE, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, -0x44, 0x9A, 0x4B, 0xF1, 0x78, 0x9B, 0x6C, 0xEA, -0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x58, 0x9A, 0x6C, 0xEA, 0x04, 0x22, 0x04, 0x6C, -0x00, 0x18, 0x99, 0xDF, 0x03, 0x10, 0x04, 0x6C, -0x00, 0x18, 0x43, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x48, 0x9A, -0x4B, 0xF1, 0x78, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, 0x44, 0x9A, -0x6C, 0xEA, 0x04, 0x22, 0x05, 0x6C, 0x00, 0x18, -0x99, 0xDF, 0x03, 0x10, 0x05, 0x6C, 0x00, 0x18, -0x43, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA4, 0xF1, 0x4C, 0x9A, 0x4B, 0xF1, -0x78, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x58, 0x9A, 0x6C, 0xEA, -0x04, 0x22, 0x06, 0x6C, 0x00, 0x18, 0x99, 0xDF, -0x03, 0x10, 0x06, 0x6C, 0x00, 0x18, 0x43, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xA4, 0xF1, 0x50, 0x9A, 0x4B, 0xF1, 0x78, 0x9B, -0x6C, 0xEA, 0x09, 0x22, 0x00, 0x53, 0x04, 0x60, -0x07, 0x6C, 0x00, 0x18, 0x99, 0xDF, 0x03, 0x10, -0x07, 0x6C, 0x00, 0x18, 0x43, 0xDE, 0x30, 0xF0, -0x20, 0x6A, 0x4B, 0xF1, 0x7C, 0x9A, 0x80, 0xF0, -0x19, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x50, 0x9A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, -0x00, 0x18, 0x46, 0xDF, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0x48, 0x9A, -0x4B, 0xF1, 0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0x46, 0xDF, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, -0x58, 0x9A, 0x4B, 0xF1, 0x7C, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x46, 0xDF, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x58, 0x9A, 0x4B, 0xF1, 0x7C, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0x46, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF2, 0x4C, 0x9A, 0x4B, 0xF1, -0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, -0x00, 0x18, 0x46, 0xDF, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x54, 0x9A, -0x4B, 0xF1, 0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0x44, 0xDE, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x58, 0x9A, 0x4B, 0xF1, 0x7C, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xB6, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF2, 0x5C, 0x9A, 0x4B, 0xF1, 0x7C, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, -0x18, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF2, 0x44, 0x9A, 0x4B, 0xF1, -0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, -0x00, 0x18, 0x99, 0xDE, 0x30, 0xF0, 0x20, 0x6B, -0x4B, 0xF1, 0x7C, 0x9B, 0x08, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xE6, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0x5C, 0x9A, 0x4B, 0xF1, 0x7C, 0x9B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xEA, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x70, 0x9B, -0x89, 0x9A, 0x8C, 0xEB, 0x07, 0x23, 0xA0, 0xF0, -0x64, 0x9A, 0x00, 0xF2, 0x00, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF1, 0x60, 0x9A, 0x78, 0x23, 0x01, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, -0x4A, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, -0x40, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x10, 0x6C, 0x00, 0x18, 0x12, 0xE1, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF1, 0x40, 0x9A, 0x04, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x20, 0x6C, 0x00, 0x18, -0x12, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, -0x40, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x30, 0x6C, 0x00, 0x18, 0x12, 0xE1, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF1, 0x40, 0x9A, 0x10, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x40, 0x6C, 0x00, 0x18, -0x12, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, -0x40, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x50, 0x6C, 0x00, 0x18, 0x12, 0xE1, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF1, 0x40, 0x9A, 0x40, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x60, 0x6C, 0x00, 0x18, -0x12, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, -0x40, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x70, 0x6C, 0x00, 0x18, 0x12, 0xE1, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF1, 0x60, 0x9B, 0xFF, 0x6A, -0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, -0x00, 0x18, 0x4A, 0xE1, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF1, 0x60, 0x9B, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, -0x4A, 0xE1, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, -0x60, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x4A, 0xE1, -0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, 0x60, 0x9B, -0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x04, 0x6C, 0x00, 0x18, 0x4A, 0xE1, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF1, 0x64, 0x9A, 0xA0, 0xF0, -0x13, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0xC9, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF1, 0x44, 0x9A, 0x02, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x10, 0x6C, 0x00, 0x18, -0xC0, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, -0x44, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x20, 0x6C, 0x00, 0x18, 0xC0, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF1, 0x44, 0x9A, 0x08, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x30, 0x6C, 0x00, 0x18, -0xC0, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, -0x44, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x40, 0x6C, 0x00, 0x18, 0xC0, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF1, 0x44, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x50, 0x6C, 0x00, 0x18, -0xC0, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, -0x44, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x60, 0x6C, 0x00, 0x18, 0xC0, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF1, 0x44, 0x9A, 0x80, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x70, 0x6C, 0x00, 0x18, -0xC0, 0xE0, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, -0x64, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0xC9, 0xE0, -0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, 0x64, 0x9B, -0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x02, 0x6C, 0x00, 0x18, 0xC9, 0xE0, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF1, 0x64, 0x9B, 0x00, 0xF4, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, -0x00, 0x18, 0xC9, 0xE0, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF1, 0x64, 0x9B, 0x01, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, -0xC9, 0xE0, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, -0x64, 0x9B, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xEE, 0xC1, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF2, 0x58, 0x9A, 0x6B, 0xF1, 0x64, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, -0xEE, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF3, 0x44, 0x9A, 0x6B, 0xF1, -0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, -0x00, 0x18, 0xEE, 0xC1, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x58, 0x9A, -0x6B, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x03, 0x6C, 0x00, 0x18, 0xEE, 0xC1, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF1, 0x44, 0x9A, 0x00, 0x52, -0x03, 0x60, 0x04, 0x6C, 0x00, 0x18, 0xEE, 0xC1, -0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, 0x68, 0x9A, -0xC0, 0xF0, 0x18, 0x23, 0x01, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x44, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, 0x48, 0x9A, -0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, -0x00, 0x18, 0xB6, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF1, 0x48, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x18, 0xDF, -0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, 0x48, 0x9A, -0x08, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, -0x00, 0x18, 0x99, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF1, 0x48, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x44, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, 0x48, 0x9A, -0x20, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, -0x00, 0x18, 0xB6, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF1, 0x48, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x18, 0xDF, -0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF1, 0x48, 0x9A, -0x80, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, -0x00, 0x18, 0x99, 0xDE, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF1, 0x68, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, -0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0x44, 0xDE, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, -0x68, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0xB6, 0xDE, -0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, 0x68, 0x9B, -0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x03, 0x6C, 0x00, 0x18, 0x18, 0xDF, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF1, 0x68, 0x9B, 0x01, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, -0x00, 0x18, 0x99, 0xDE, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF1, 0x68, 0x9B, 0x02, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, -0x44, 0xDE, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, -0x68, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xB6, 0xDE, -0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, 0x68, 0x9B, -0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x04, 0x6C, 0x00, 0x18, 0x18, 0xDF, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF1, 0x68, 0x9B, 0x10, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, -0x00, 0x18, 0x99, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x5C, 0x9A, -0x6B, 0xF1, 0x68, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0x81, 0xDE, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x54, 0x9A, 0x6B, 0xF1, 0x68, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x81, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF2, 0x58, 0x9A, 0x6B, 0xF1, 0x68, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0x81, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0x5C, 0x9A, 0x6B, 0xF1, -0x68, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, -0x00, 0x18, 0x81, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, 0x68, 0xDA, -0x69, 0xDA, 0x6A, 0xDA, 0x6B, 0xDA, 0x6C, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, -0x10, 0xF0, 0x24, 0x6A, 0x56, 0xF7, 0x0A, 0x4A, -0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0B, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, 0xB8, 0x9B, -0x30, 0xF0, 0x20, 0x6E, 0xE4, 0xF1, 0xDC, 0x9E, -0x60, 0x9D, 0xCC, 0xEB, 0x0C, 0x10, 0x01, 0x72, -0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, -0xB8, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0xE3, 0xF2, -0xD8, 0x9E, 0x60, 0x9D, 0xCD, 0xEB, 0x60, 0xDD, -0x05, 0x5C, 0x60, 0xF1, 0x1A, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x88, 0x34, 0xC3, 0xF0, 0x00, 0x4B, -0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x78, 0x9A, -0x7F, 0x6A, 0x80, 0xA3, 0x12, 0x10, 0x01, 0x72, -0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, -0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x40, 0xA3, 0x80, 0x4D, 0xC0, 0x4D, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0x02, 0x72, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF1, 0x78, 0x9A, 0x5B, 0x10, 0x03, 0x72, -0x40, 0xF1, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF1, 0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, -0x40, 0xA3, 0x8C, 0xEA, 0xE9, 0x17, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x60, 0x9A, -0xFB, 0x6A, 0x80, 0xA3, 0xE2, 0x17, 0x01, 0x72, -0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, -0x98, 0x9A, 0xFF, 0x6A, 0x40, 0x6D, 0x60, 0xA4, -0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, 0x80, 0x9B, -0x01, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, -0x4C, 0xEB, 0x60, 0xC4, 0x60, 0xA4, 0x04, 0x6D, -0x4C, 0xEB, 0x48, 0x10, 0x02, 0x72, 0x0F, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x78, 0x9A, -0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x60, 0x9A, -0xFE, 0x6A, 0x80, 0xA3, 0xB6, 0x17, 0x03, 0x72, -0x00, 0xF1, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF1, 0x98, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, -0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, -0x80, 0x9A, 0x01, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0x4B, 0x10, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF2, 0x60, 0x9A, 0x80, 0xA3, 0xBF, 0x6A, -0x98, 0x17, 0x01, 0x72, 0x1B, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF1, 0x98, 0x9A, 0xFF, 0x6A, -0x40, 0x6D, 0x60, 0xA4, 0x10, 0x6E, 0x4C, 0xEB, -0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xF2, 0x80, 0x9B, 0x60, 0xA4, -0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, -0x60, 0xC4, 0x20, 0xE8, 0x02, 0x72, 0x0F, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x78, 0x9A, -0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x60, 0x9A, -0xEF, 0x6A, 0x80, 0xA3, 0x6A, 0x17, 0x03, 0x72, -0xA0, 0xF0, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF1, 0x98, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, -0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, -0x80, 0x9A, 0x10, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, -0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, -0x60, 0x9A, 0xFF, 0xF3, 0x1F, 0x6A, 0x80, 0xAB, -0x83, 0x10, 0x01, 0x72, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF1, 0x78, 0x9A, 0xFF, 0x6C, -0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF2, 0x60, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, -0x7F, 0x4D, 0x40, 0xAB, 0x41, 0x4D, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x40, 0xAB, -0x00, 0xF3, 0x00, 0x4D, 0x8C, 0xEA, 0x51, 0x10, -0x02, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF1, 0x78, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF2, 0x60, 0x9A, 0xFF, 0xF6, 0x1F, 0x6A, -0x80, 0xAB, 0x52, 0x10, 0x03, 0x72, 0x6D, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x78, 0x9A, -0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF2, 0x60, 0x9A, 0xFF, 0xF7, -0x1F, 0x6C, 0x7F, 0x4D, 0x40, 0xAB, 0x41, 0x4D, -0x8C, 0xEA, 0x27, 0x10, 0x08, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF2, 0x60, 0x9A, 0xF7, 0xF7, -0x1F, 0x6A, 0x80, 0xAB, 0x31, 0x10, 0x01, 0x72, -0x1E, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, -0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x60, 0x9A, -0xFF, 0xF7, 0x1F, 0x6C, 0xC1, 0xF7, 0x00, 0x4D, -0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xCB, 0x40, 0xAB, 0x06, 0xF0, 0x00, 0x4D, -0x8C, 0xEA, 0xAD, 0xEA, 0x11, 0x10, 0x02, 0x72, -0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, -0x78, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, -0x60, 0x9A, 0xFD, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, -0x8C, 0xEA, 0x40, 0xCB, 0x20, 0xE8, 0x03, 0x72, -0x18, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, -0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x60, 0x9A, -0xFF, 0xF7, 0x1F, 0x6C, 0xC1, 0xF7, 0x00, 0x4D, -0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xCB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF2, 0x64, 0x9B, 0xFF, 0x6A, 0x4C, 0xED, -0x6D, 0xE4, 0xC0, 0xA3, 0x3F, 0x6C, 0xCC, 0xEC, -0x80, 0xC3, 0x07, 0x2D, 0x80, 0xA3, 0x40, 0x6D, -0x4C, 0xEC, 0xAD, 0xEC, 0x4C, 0xEC, 0x80, 0xC3, -0x20, 0xE8, 0x01, 0x75, 0x07, 0x61, 0x80, 0xA3, -0x80, 0x6D, 0xAB, 0xED, 0x4C, 0xEC, 0xAD, 0xEC, -0x4C, 0xEC, 0x80, 0xC3, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF0, 0x78, 0x9B, -0xFF, 0x6A, 0xAC, 0xEA, 0x6D, 0xE4, 0x80, 0x9B, -0x80, 0xF4, 0x40, 0x32, 0x8D, 0xEA, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0xFE, 0x63, 0x03, 0xD1, -0x02, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE0, 0xF0, 0xDA, 0xA2, 0x01, 0x6B, -0xE3, 0x67, 0xCC, 0xEF, 0x00, 0xD7, 0xC3, 0xF3, -0x54, 0xA2, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6F, -0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0x1E, 0x65, -0x23, 0xF2, 0xC0, 0x9A, 0x04, 0xF2, 0xE8, 0x9F, -0x30, 0xF0, 0x20, 0x69, 0xD9, 0xE4, 0x40, 0x9E, -0x04, 0xF2, 0x30, 0x99, 0xEC, 0xEA, 0x30, 0xF0, -0x20, 0x6F, 0x04, 0xF2, 0xEC, 0x9F, 0xED, 0xEA, -0x40, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, -0x14, 0x9A, 0x83, 0xF7, 0x00, 0x6A, 0x4B, 0xEA, -0x01, 0xE4, 0xC0, 0x98, 0x7F, 0x6F, 0x4C, 0xEE, -0x43, 0xA5, 0xEC, 0xEA, 0x2D, 0xEA, 0xCD, 0xEA, -0x40, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, -0xD4, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x63, 0xF2, -0x1C, 0x98, 0xD9, 0xE4, 0x40, 0x9E, 0x0D, 0xEA, -0x40, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, -0xD8, 0x9A, 0xFF, 0x68, 0x01, 0x48, 0xD9, 0xE4, -0x40, 0x9E, 0x0D, 0xEA, 0x3F, 0xF6, 0x1F, 0x48, -0x0C, 0xEA, 0x40, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF2, 0x5C, 0x9A, 0x49, 0xE4, 0xC0, 0x9A, -0x40, 0xA5, 0xEC, 0xEA, 0x4D, 0xEE, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF2, 0x40, 0x9A, 0x49, 0xE4, -0x40, 0xA2, 0x4C, 0xEB, 0x05, 0x23, 0x03, 0xF7, -0x01, 0x6A, 0x4B, 0xEA, 0xCC, 0xEA, 0x07, 0x10, -0x61, 0xA5, 0x1F, 0xF7, 0x01, 0x6A, 0x4B, 0xEA, -0xCC, 0xEA, 0x60, 0x33, 0x6D, 0xEA, 0xC2, 0xA5, -0xFF, 0x6B, 0xCE, 0xEB, 0x0D, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x24, 0xF2, 0x64, 0x9B, 0x4C, 0xEB, -0x80, 0xF4, 0xC0, 0x32, 0x30, 0xF0, 0x20, 0x6E, -0x63, 0xF2, 0xD4, 0x9E, 0xCD, 0xEA, 0x6D, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, 0x7C, 0x9B, -0x6D, 0xE4, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF2, 0xC8, 0x9A, 0x02, 0xF0, 0x00, 0x6B, -0x6B, 0xEB, 0xD9, 0xE4, 0x40, 0x9E, 0x6C, 0xEA, -0x62, 0xAD, 0xE1, 0xF7, 0x1F, 0x6D, 0xAC, 0xEB, -0x6D, 0xEA, 0x40, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF2, 0x6C, 0x9A, 0x0E, 0xF0, 0x01, 0x4D, -0x6D, 0xE4, 0x40, 0x9B, 0xAD, 0xEA, 0xC8, 0xF0, -0x00, 0x4D, 0xAC, 0xEA, 0x40, 0xDB, 0x02, 0x61, -0x00, 0x97, 0x15, 0x27, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF2, 0x50, 0x9A, 0xFF, 0x6B, 0x80, 0x6D, -0x51, 0xE4, 0x40, 0xA4, 0xAB, 0xED, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF2, 0x54, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x00, 0x6B, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF2, 0x50, 0x9A, 0x51, 0xE4, -0x60, 0xA4, 0x7F, 0x6A, 0x6C, 0xEA, 0x40, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, 0x54, 0x9A, -0x1C, 0x6B, 0x60, 0xC2, 0x08, 0xF4, 0x13, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, 0x58, 0x9A, -0x60, 0xCA, 0x03, 0x91, 0x02, 0x90, 0x02, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, -0x84, 0x9C, 0x40, 0x9B, 0x20, 0x6D, 0x00, 0x6E, -0x8D, 0xEA, 0x40, 0xDB, 0x06, 0x02, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, -0x00, 0xF4, 0x1F, 0x6C, 0xE0, 0xF1, 0x14, 0x6F, -0x40, 0xEA, 0x02, 0x67, 0x00, 0x18, 0x9B, 0xE5, -0x50, 0x67, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x85, 0xD6, 0x00, 0x6B, 0x32, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, 0x7C, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, 0x9C, 0x9C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x74, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF3, 0x9C, 0x9C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x06, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x54, 0x9A, 0x02, 0xF0, 0x00, 0x6B, 0x40, 0x9A, -0x6C, 0xEA, 0xF1, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF2, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF7, 0x90, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x40, 0xDB, 0x01, 0x6B, 0x05, 0x97, 0x43, 0x67, -0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0xFF, 0xF7, -0x1F, 0x68, 0x4C, 0xED, 0x4C, 0xEE, 0x4C, 0xEF, -0x0C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x07, 0xD4, -0x05, 0xD6, 0x08, 0xD5, 0x09, 0xD7, 0x2B, 0xF1, -0x18, 0x4B, 0xE0, 0xF0, 0xBA, 0xA3, 0x01, 0x6C, -0xC5, 0x67, 0x8C, 0xEE, 0x4C, 0xEE, 0x04, 0xD6, -0xC3, 0xF3, 0x34, 0xA3, 0x8C, 0xE9, 0x4C, 0xE9, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x4C, 0x9A, -0x00, 0x6C, 0xA4, 0x67, 0x40, 0xAA, 0x62, 0x67, -0x0C, 0xEB, 0x06, 0xD3, 0x00, 0x18, 0xF2, 0xCC, -0x06, 0x94, 0x07, 0x95, 0xE1, 0xF7, 0x1F, 0x6B, -0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF2, -0x88, 0x9C, 0x6D, 0xE5, 0x0C, 0xEB, 0x60, 0xCC, -0x7C, 0x32, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, -0x6C, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF2, -0x9C, 0x9C, 0x6D, 0xE2, 0x60, 0xAB, 0x08, 0x96, -0x91, 0xE2, 0x0C, 0xEB, 0x80, 0x9C, 0x05, 0x26, -0x10, 0xF0, 0x00, 0x6D, 0xAB, 0xED, 0xAD, 0xEB, -0x0C, 0xEB, 0xD8, 0xF0, 0x00, 0x6D, 0x6C, 0xED, -0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, 0x6C, 0x9B, -0x6D, 0xE2, 0xA0, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0xF2, 0x60, 0x9B, 0x6D, 0xE2, 0xA0, 0xA3, -0x01, 0x6B, 0xAC, 0xEB, 0x05, 0x23, 0x03, 0xF7, -0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x07, 0x10, -0x09, 0x95, 0x1F, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xA0, 0x34, 0x8D, 0xEB, 0x05, 0x96, -0xFF, 0x76, 0x13, 0x60, 0x30, 0xF0, 0x20, 0x6C, -0x24, 0xF2, 0x84, 0x9C, 0x30, 0xF0, 0x20, 0x6D, -0x63, 0xF2, 0xB4, 0x9D, 0x6C, 0xEC, 0x80, 0xF4, -0xC0, 0x33, 0xAD, 0xEB, 0x8D, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF2, 0x9C, 0x9C, 0x91, 0xE2, -0x60, 0xDC, 0x02, 0x29, 0x04, 0x93, 0x15, 0x23, -0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, 0x90, 0x9B, -0xFF, 0x6D, 0x80, 0x6E, 0x91, 0xE2, 0x60, 0xA4, -0xCB, 0xEE, 0xAC, 0xEB, 0xCD, 0xEB, 0xAC, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, -0x74, 0x9B, 0x00, 0x6C, 0x80, 0xC3, 0x00, 0x6C, -0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, -0x90, 0x9B, 0x7F, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, -0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0xF2, 0x74, 0x9B, 0x1C, 0x6C, 0x80, 0xC3, -0x08, 0xF4, 0x13, 0x6C, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0xF2, 0x78, 0x9B, 0x80, 0xCB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x98, 0x9B, 0xF7, 0x6B, -0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF2, 0x40, 0x9A, 0x8C, 0x34, 0x30, 0xF0, -0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0x03, 0xF3, -0x64, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x44, 0xF2, 0x40, 0x9A, 0x8C, 0x34, -0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0x03, 0xF3, 0x78, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF2, 0x40, 0x9A, 0x8C, 0x34, 0x30, 0xF0, -0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0xA3, 0xF2, -0x78, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x44, 0xF2, 0x40, 0x9A, 0x8C, 0x34, -0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0x23, 0xF3, 0x78, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0x44, 0xF2, 0x40, 0x9A, 0x6C, 0xEC, -0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, -0x40, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0x44, 0xF2, 0x40, 0x9A, 0x6C, 0xEC, -0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, -0x00, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x00, 0x68, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0x99, 0xF1, 0x90, 0x67, 0x01, 0x6D, -0x01, 0x48, 0x00, 0x18, 0xA9, 0xF1, 0x0B, 0x70, -0xF5, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x0C, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x0A, 0x69, 0x12, 0xED, 0x4C, 0xED, 0x04, 0xD5, -0xFF, 0x68, 0x2C, 0xE8, 0x90, 0x67, 0x00, 0x18, -0xB9, 0xF1, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, -0x20, 0x31, 0x90, 0x67, 0x01, 0x6D, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x18, 0xA9, 0xF1, 0x41, 0x41, -0xEF, 0x2A, 0x01, 0x69, 0x2B, 0xE9, 0x09, 0x10, -0x04, 0x94, 0xFF, 0x49, 0x00, 0x6D, 0x00, 0xF6, -0x20, 0x31, 0x00, 0x18, 0xA9, 0xF1, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x51, 0xF5, 0x60, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x0C, 0x68, 0x4C, 0xEC, 0x1B, 0xEC, -0x01, 0x28, 0xE5, 0xE8, 0x4C, 0xED, 0x10, 0xE9, -0x4C, 0xE9, 0x12, 0xE8, 0x4C, 0xE8, 0x0F, 0x25, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x99, 0xF1, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0xF0, 0x10, 0x4A, -0x41, 0xE0, 0x60, 0xA0, 0x01, 0x6A, 0x44, 0xE9, -0x6D, 0xEA, 0x40, 0xC0, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x88, 0xF0, 0x10, 0x4A, 0x49, 0xE0, -0x80, 0xA2, 0x01, 0x6B, 0x64, 0xE9, 0x6F, 0xEB, -0x8C, 0xEB, 0x60, 0xC2, 0x40, 0xA2, 0x04, 0x2A, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x99, 0xF1, +0x25, 0x67, 0x36, 0x24, 0x40, 0xA4, 0x34, 0x2A, +0x30, 0xF0, 0x20, 0x68, 0xC9, 0xF5, 0x10, 0x48, +0x40, 0xC0, 0x41, 0xC0, 0x78, 0x6A, 0x41, 0xC8, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA0, 0xF0, 0x75, 0xA2, 0x30, 0xF0, 0x20, 0x6D, +0x84, 0x40, 0x03, 0xF5, 0x60, 0xC2, 0xA0, 0xF0, +0x76, 0xA2, 0x8E, 0xF6, 0x00, 0x4D, 0x78, 0x6E, +0x03, 0xF5, 0x61, 0xC2, 0xE3, 0xF3, 0x60, 0xA2, +0x03, 0xF5, 0x62, 0xC2, 0xE3, 0xF3, 0x6C, 0xA2, +0x03, 0xF5, 0x63, 0xC2, 0xE3, 0xF3, 0x62, 0xA2, +0x03, 0xF5, 0x64, 0xC2, 0xE3, 0xF3, 0x6E, 0xA2, +0x03, 0xF5, 0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x40, 0xEA, 0x91, 0x67, +0xB0, 0x67, 0x7C, 0x6E, 0x80, 0x18, 0xAA, 0x69, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, -0x0C, 0xE9, 0xAC, 0xE8, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xEC, 0xF1, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xD3, 0xF1, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x0C, 0x6B, 0x7B, 0xED, 0x01, 0x2B, 0xE5, 0xE8, -0x05, 0x6E, 0xFF, 0x6A, 0x4C, 0xEC, 0x10, 0xEB, -0x12, 0xED, 0x4C, 0xED, 0xD8, 0xEB, 0x12, 0xEB, -0x4C, 0xEB, 0x1E, 0x73, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x44, 0xF2, 0x64, 0x9A, 0xAC, 0x35, -0x30, 0xF0, 0x20, 0x6E, 0x6D, 0xE5, 0x40, 0x9B, -0xC3, 0xF3, 0xC0, 0x9E, 0xCC, 0xEA, 0x80, 0xF7, -0x80, 0x36, 0xCD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x44, 0xF2, 0x40, 0x9A, 0x08, 0x6B, -0x6B, 0xEB, 0x55, 0xE5, 0x40, 0x9D, 0x8A, 0x34, -0x6C, 0xEA, 0x07, 0x6B, 0x6C, 0xEC, 0x1E, 0x10, -0x20, 0x5B, 0x0C, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF2, 0x44, 0x9A, 0x1F, 0x6E, 0xAC, 0x35, -0xE6, 0x67, 0x55, 0xE5, 0xE4, 0xEB, 0x40, 0x9D, -0xEF, 0xEF, 0x0D, 0x10, 0xE0, 0x4B, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x40, 0x9A, -0xAC, 0x35, 0x1F, 0x6E, 0x55, 0xE5, 0xE0, 0x9D, -0x46, 0x67, 0x44, 0xEB, 0x4F, 0xEA, 0xCC, 0xEC, -0xEC, 0xEA, 0x84, 0xEB, 0x8D, 0xEA, 0x40, 0xDD, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, -0xCC, 0xE9, 0x05, 0x67, 0x01, 0x29, 0x00, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0x12, 0xF2, 0xFF, 0x6C, -0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0x07, 0xF2, +0xDD, 0x67, 0x44, 0x67, 0x98, 0xAE, 0xFF, 0x6B, +0x6C, 0xED, 0x04, 0x5C, 0x10, 0x61, 0x03, 0x25, +0x01, 0x75, 0x0D, 0x60, 0x05, 0x10, 0x87, 0x67, +0xA2, 0x67, 0x00, 0x18, 0xA8, 0xED, 0x07, 0x10, +0x8C, 0xEB, 0x03, 0x6D, 0x05, 0x6C, 0x01, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0x68, 0x69, 0x07, 0x97, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0x50, 0x9A, +0x23, 0xF2, 0x6C, 0x9B, 0x40, 0xAA, 0x60, 0xAB, +0x6E, 0xEA, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0x96, 0xF7, 0x01, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x38, 0x9A, +0x10, 0xF0, 0x24, 0x68, 0x96, 0xF7, 0x19, 0x48, +0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x58, 0x9A, 0x01, 0x48, 0x40, 0xEA, 0x00, 0xD9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xAE, 0xEC, 0x01, 0x6A, -0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x06, 0xD2, 0x05, 0xD4, 0x00, 0x69, 0x1F, 0x68, -0x22, 0x10, 0x05, 0x92, 0x40, 0xA2, 0x07, 0xD2, -0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, 0x07, 0x94, -0x12, 0x35, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x45, 0xF2, 0x06, 0x22, 0xFF, 0x6A, -0x04, 0x30, 0x4C, 0xE8, 0x05, 0x6A, 0x4E, 0xE8, -0x01, 0x10, 0x04, 0x30, 0xFF, 0x6A, 0x4C, 0xE8, -0x04, 0x92, 0x01, 0x4A, 0x08, 0x72, 0x04, 0xD2, -0xE9, 0x61, 0xFF, 0x6A, 0x01, 0x49, 0x4C, 0xE9, -0x05, 0x92, 0x01, 0x4A, 0x05, 0xD2, 0x06, 0x92, -0x43, 0xE9, 0xDB, 0x61, 0x1F, 0x6A, 0x4E, 0xE8, -0x0C, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x60, 0xA4, 0x01, 0x6A, 0x04, 0x67, -0x6C, 0xEA, 0x44, 0x22, 0x66, 0x32, 0x30, 0xF0, -0x20, 0x6B, 0x44, 0xF2, 0x68, 0x9B, 0x54, 0x32, -0x69, 0xE2, 0x61, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, 0x6C, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x62, 0xA4, -0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0x44, 0xF2, 0x70, 0x9B, 0x46, 0x32, 0x54, 0x32, -0x69, 0xE2, 0x63, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, 0x74, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x64, 0xA4, -0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0x44, 0xF2, 0x78, 0x9B, 0x46, 0x32, 0x54, 0x32, -0x69, 0xE2, 0x65, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, 0x7C, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x66, 0xA4, -0x10, 0xF0, 0x00, 0x6C, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF0, 0x68, 0x9A, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x81, 0x40, 0x06, 0x6D, -0x00, 0x18, 0x47, 0xF2, 0x60, 0xA0, 0x01, 0x6E, -0x82, 0x67, 0x66, 0x35, 0x6C, 0xEE, 0x00, 0x18, -0x39, 0xF2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xC9, 0xF1, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF2, 0x60, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, -0x80, 0xAB, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF2, 0x84, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, -0x43, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, -0x45, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF2, 0x44, 0x9A, 0xFF, 0x6E, 0xA0, 0x9A, -0x0F, 0x6A, 0x40, 0xF5, 0xA2, 0x33, 0x4C, 0xEB, -0x45, 0x67, 0xCC, 0xEA, 0x08, 0x72, 0x80, 0xF7, -0xA2, 0x34, 0x15, 0x60, 0x09, 0x5A, 0x07, 0x60, -0x02, 0x72, 0x0D, 0x60, 0x04, 0x72, 0x0D, 0x60, -0x01, 0x72, 0x21, 0x60, 0x06, 0x10, 0x20, 0x72, -0x19, 0x60, 0x40, 0x72, 0x11, 0x60, 0x10, 0x72, -0x0A, 0x60, 0x00, 0x6A, 0x20, 0xE8, 0x14, 0x24, -0x1D, 0x10, 0x07, 0x24, 0x1B, 0x10, 0x00, 0x6A, -0x17, 0x2B, 0x19, 0x24, 0x15, 0x10, 0x03, 0x74, -0x15, 0x61, 0x00, 0x6A, 0x08, 0x73, 0x0F, 0x10, -0x00, 0xF7, 0xA2, 0x35, 0x01, 0x6A, 0x4C, 0xED, -0xCC, 0xED, 0x05, 0x2D, 0x03, 0x74, 0x0A, 0x61, -0x00, 0x6A, 0x0C, 0x73, 0x04, 0x10, 0x03, 0x74, -0x05, 0x61, 0x00, 0x6A, 0x0F, 0x73, 0x03, 0x60, -0x01, 0x6A, 0x20, 0xE8, 0x01, 0x6A, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF2, 0x68, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x4C, 0x9A, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x5C, 0x9A, 0xFF, 0x6B, 0x80, 0xA2, 0x6C, 0xEC, -0x8C, 0xEB, 0x44, 0x67, 0x01, 0x23, 0x01, 0x6A, -0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF2, 0x6C, 0x9A, -0x01, 0x6D, 0xFF, 0x6C, 0x40, 0xA3, 0xAC, 0xEA, -0x02, 0x22, 0x45, 0x67, 0x15, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF2, 0xC8, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x4C, 0x9A, 0xC0, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x5C, 0x9A, -0x40, 0xA2, 0x0C, 0x22, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, -0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6C, 0x89, 0xF6, -0x62, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF6, 0x62, 0xA2, 0x00, 0x6A, 0x01, 0x4B, -0x8C, 0xEB, 0xF3, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF6, 0x60, 0xA2, 0x01, 0x6A, 0x07, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, 0x62, 0xA3, -0x00, 0x6A, 0x01, 0x23, 0x01, 0x6A, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0x68, 0x9A, 0xFF, 0x6C, -0x04, 0x6D, 0x40, 0xA3, 0x10, 0x6E, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF2, 0xB0, 0x9A, 0x40, 0xA5, -0x8C, 0xEA, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, -0x80, 0xA3, 0xFB, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF2, 0x14, 0x9A, -0xFF, 0xF7, 0x1F, 0x6B, 0xFF, 0x6C, 0x40, 0xA8, -0x01, 0x4C, 0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, -0x40, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, -0x4C, 0x9A, 0x64, 0xF2, 0x78, 0x9B, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, 0x7C, 0x9B, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF2, -0x60, 0x9B, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0x84, 0xF2, 0x64, 0x9B, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xF2, 0x68, 0x9B, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF2, 0x6C, 0x9B, -0x60, 0xDA, 0x60, 0xA8, 0xFF, 0xF6, 0x1F, 0x6A, -0x6C, 0xEA, 0x40, 0xC8, 0x05, 0x97, 0x04, 0x90, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x24, 0x6A, +0xD6, 0xF7, 0x0D, 0x4A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF1, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF3, 0x50, 0x9A, 0x80, 0x9B, +0xA4, 0x67, 0x4C, 0xED, 0x4E, 0xED, 0x02, 0x25, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x40, 0x9A, +0x01, 0x6B, 0x40, 0x9A, 0x6C, 0xEA, 0x60, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x44, 0x9A, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, +0x48, 0x9A, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF1, 0x4C, 0x9A, 0xC0, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF1, 0x50, 0x9A, 0xA0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x54, 0x9A, +0x80, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, +0x58, 0x9A, 0x40, 0x9A, 0x41, 0x22, 0x30, 0xF0, +0x20, 0x69, 0x84, 0xF1, 0x3C, 0x99, 0x60, 0xD9, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x60, 0x9B, +0x00, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, +0x78, 0x9B, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF2, 0x6C, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF2, 0x70, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x64, 0x9B, +0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, +0x68, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, +0x88, 0x9C, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x74, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x5C, 0xB9, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x77, 0xF0, 0x24, 0x6C, 0xC0, 0xF1, +0x04, 0x4C, 0xAE, 0xB8, 0x00, 0x65, 0xA0, 0xDC, +0x9A, 0xB8, 0x00, 0x65, 0xBB, 0xB8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0xD6, 0xF7, 0x0E, 0x4A, +0x40, 0xDB, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0xF7, 0xF0, 0x1D, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, +0x7C, 0x9A, 0x63, 0x23, 0x01, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x7A, 0xDF, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF1, 0x5C, 0x9A, 0x02, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x42, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x5C, 0x9A, +0x04, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x22, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, +0x5C, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x1E, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF1, 0x5C, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x83, 0xDF, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF1, 0x5C, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x84, 0xDF, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x5C, 0x9A, +0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x85, 0xDF, 0x30, 0xF0, 0x20, 0x6B, 0xCB, 0xF1, +0x7C, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x12, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0xCB, 0xF1, 0x7C, 0x9B, 0x04, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x86, 0xDF, 0x30, 0xF0, 0x20, 0x6B, 0xCB, 0xF1, +0x7C, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x87, 0xDF, 0x30, 0xF0, +0x20, 0x6B, 0xCB, 0xF1, 0x7C, 0x9B, 0x10, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x88, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, +0x60, 0x9A, 0xA0, 0xF0, 0x02, 0x23, 0x01, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xD7, 0xE1, +0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x40, 0x9A, +0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x89, 0xDF, 0x30, 0xF0, 0x20, 0x6B, 0xEB, 0xF1, +0x60, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x84, 0xE1, +0x30, 0xF0, 0x20, 0x6B, 0xEB, 0xF1, 0x60, 0x9B, +0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x66, 0xE0, 0x30, 0xF0, +0x20, 0x6B, 0xEB, 0xF1, 0x60, 0x9B, 0x10, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, +0x67, 0x71, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF1, 0x40, 0x9A, 0xEB, 0xF1, +0x60, 0x9B, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, +0x71, 0x71, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF2, 0x58, 0x9A, 0xEB, 0xF1, +0x60, 0x9B, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, +0x7B, 0x71, 0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, +0x40, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x80, 0x18, 0x16, 0x76, 0x30, 0xF0, 0x20, 0x6A, +0xEB, 0xF1, 0x40, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x80, 0x18, 0x95, 0x75, 0x30, 0xF0, +0x20, 0x6B, 0xEB, 0xF1, 0x60, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, +0x12, 0x76, 0x30, 0xF0, 0x20, 0x6B, 0xEB, 0xF1, +0x60, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x80, 0x18, 0x91, 0x75, 0x30, 0xF0, +0x20, 0x6B, 0xEB, 0xF1, 0x60, 0x9B, 0x00, 0xF4, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, +0x0E, 0x76, 0x30, 0xF0, 0x20, 0x6B, 0xEB, 0xF1, +0x60, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x80, 0x18, 0x8D, 0x75, 0x30, 0xF0, +0x20, 0x6B, 0xEB, 0xF1, 0x60, 0x9B, 0x02, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x8A, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF3, 0x5C, 0x9A, 0xEB, 0xF1, +0x60, 0x9B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xBE, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF2, 0x50, 0x9A, 0xEB, 0xF1, +0x60, 0x9B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x80, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, +0x64, 0x9A, 0x4C, 0x23, 0x01, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x84, 0xE1, +0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x44, 0x9A, +0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0x66, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0xEB, 0xF1, 0x44, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x84, 0xE1, +0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x44, 0x9A, +0x08, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0x66, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0xEB, 0xF1, 0x44, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x84, 0xE1, +0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x44, 0x9A, +0x20, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, +0x00, 0x18, 0x66, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0xEB, 0xF1, 0x44, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x84, 0xE1, +0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x44, 0x9A, +0x80, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, +0x00, 0x18, 0x66, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x00, 0x6B, 0x77, 0xDA, +0x78, 0xDA, 0x79, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x24, 0x6A, +0xF7, 0xF0, 0x1E, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x0C, 0x33, 0x88, 0xF0, 0x1C, 0x4A, -0x49, 0xE3, 0x67, 0xA2, 0x0C, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0x89, 0xF6, 0x64, 0xA3, 0x01, 0x73, -0x24, 0x61, 0x80, 0xAA, 0x00, 0x18, 0xB3, 0xEB, -0xFF, 0x72, 0x02, 0x61, 0x1E, 0x10, 0x46, 0xA2, -0x30, 0xF0, 0x20, 0x6B, 0x88, 0xF0, 0x1C, 0x4B, -0x0C, 0x30, 0x0D, 0xE3, 0x82, 0xA3, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF3, 0x64, 0x9B, 0x80, 0x34, -0x80, 0x34, 0x71, 0xE4, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x6C, 0x9B, 0x80, 0xDB, 0x80, 0x9B, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEC, 0x82, 0x34, -0x8E, 0xEA, 0x00, 0x6B, 0x03, 0x22, 0x01, 0x6B, -0x01, 0x10, 0x00, 0x6B, 0x05, 0x97, 0x04, 0x90, -0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x01, 0x6D, -0x04, 0x00, 0x5D, 0x67, 0x20, 0xF0, 0x88, 0xC2, -0x0A, 0x07, 0x00, 0x6A, 0x90, 0x67, 0xC5, 0x67, -0x04, 0xD2, 0x05, 0xD2, 0x06, 0xD2, 0x07, 0xD2, -0x00, 0x18, 0x58, 0xDC, 0xFF, 0x6E, 0xB0, 0x67, -0x02, 0x6C, 0x4C, 0xEE, 0x00, 0x18, 0x6A, 0xDC, -0x09, 0x97, 0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0xF7, 0xF3, 0x1D, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, +0x6C, 0x9A, 0xC0, 0xF0, 0x1C, 0x23, 0x02, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x4D, 0xE2, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xF1, 0x6C, 0x9B, 0x04, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0x4D, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0xCB, 0xF1, +0x6C, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x4D, 0xE2, +0x30, 0xF0, 0x20, 0x6B, 0xCB, 0xF1, 0x6C, 0x9B, +0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0x4D, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, +0x40, 0x9A, 0xCB, 0xF1, 0x6C, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x4D, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF2, 0x58, 0x9A, 0xCB, 0xF1, 0x6C, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x05, 0x6C, 0x00, 0x18, +0x4D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF2, 0x5C, 0x9A, 0xCB, 0xF1, +0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x06, 0x6C, +0x00, 0x18, 0x4D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x40, 0x9A, +0xCB, 0xF1, 0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x07, 0x6C, 0x00, 0x18, 0x4D, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, +0x48, 0x9A, 0xCB, 0xF1, 0x6C, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x08, 0x6C, 0x00, 0x18, 0x4D, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF2, 0x58, 0x9A, 0xCB, 0xF1, 0x6C, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x09, 0x6C, 0x00, 0x18, +0x4D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF6, 0x5C, 0x9A, 0xCB, 0xF1, +0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x0A, 0x6C, +0x00, 0x18, 0x4D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x40, 0x9A, +0xCB, 0xF1, 0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x0B, 0x6C, 0x00, 0x18, 0x4D, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, +0x5C, 0x9A, 0xCB, 0xF1, 0x6C, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x0C, 0x6C, 0x00, 0x18, 0x4D, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF2, 0x50, 0x9A, 0xCB, 0xF1, 0x6C, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x0D, 0x6C, 0x00, 0x18, +0x4D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF3, 0x54, 0x9A, 0xCB, 0xF1, +0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x0E, 0x6C, +0x00, 0x18, 0x4D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x40, 0x9A, +0xCB, 0xF1, 0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x0F, 0x6C, 0x00, 0x18, 0x4D, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF1, 0x4C, 0x9A, 0x80, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xA0, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x00, 0x6B, 0x73, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x24, 0x6A, +0xF7, 0xF3, 0x1E, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0xD7, 0xF5, 0x1D, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x60, 0x9A, 0xE0, 0xF0, 0x1E, 0x23, 0x08, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x07, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x40, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x72, 0xDF, 0x30, 0xF0, 0x20, 0x6A, +0xAB, 0xF1, 0x40, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x9C, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xAB, 0xF1, 0x40, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x98, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, 0x40, 0x9A, +0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x77, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x40, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x05, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x48, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, +0x60, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x94, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0xAB, 0xF1, 0x60, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x90, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF1, 0x4C, 0x9A, 0xAB, 0xF1, +0x60, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF3, 0x5C, 0x9A, 0x6C, 0xEA, +0x04, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x28, 0xE1, +0x03, 0x10, 0x00, 0x6C, 0x00, 0x18, 0xC9, 0xDF, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF1, 0x50, 0x9A, 0xAB, 0xF1, 0x60, 0x9B, +0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF2, 0x50, 0x9A, 0x6C, 0xEA, 0x04, 0x22, +0x01, 0x6C, 0x00, 0x18, 0x28, 0xE1, 0x03, 0x10, +0x01, 0x6C, 0x00, 0x18, 0xC9, 0xDF, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, +0x54, 0x9A, 0xAB, 0xF1, 0x60, 0x9B, 0x6C, 0xEA, +0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, +0x54, 0x9A, 0x6C, 0xEA, 0x04, 0x22, 0x02, 0x6C, +0x00, 0x18, 0x28, 0xE1, 0x03, 0x10, 0x02, 0x6C, +0x00, 0x18, 0xC9, 0xDF, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x58, 0x9A, +0xAB, 0xF1, 0x60, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x40, 0x9A, +0x6C, 0xEA, 0x04, 0x22, 0x03, 0x6C, 0x00, 0x18, +0x28, 0xE1, 0x03, 0x10, 0x03, 0x6C, 0x00, 0x18, +0xC9, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF1, 0x5C, 0x9A, 0xAB, 0xF1, +0x60, 0x9B, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x6C, 0xEA, +0x04, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x28, 0xE1, +0x03, 0x10, 0x04, 0x6C, 0x00, 0x18, 0xC9, 0xDF, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF1, 0x40, 0x9A, 0xAB, 0xF1, 0x60, 0x9B, +0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF3, 0x48, 0x9A, 0x6C, 0xEA, 0x04, 0x22, +0x05, 0x6C, 0x00, 0x18, 0x28, 0xE1, 0x03, 0x10, +0x05, 0x6C, 0x00, 0x18, 0xC9, 0xDF, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, +0x44, 0x9A, 0xAB, 0xF1, 0x60, 0x9B, 0x6C, 0xEA, +0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, +0x5C, 0x9A, 0x6C, 0xEA, 0x04, 0x22, 0x06, 0x6C, +0x00, 0x18, 0x28, 0xE1, 0x03, 0x10, 0x06, 0x6C, +0x00, 0x18, 0xC9, 0xDF, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, 0x48, 0x9A, +0xAB, 0xF1, 0x60, 0x9B, 0x6C, 0xEA, 0x09, 0x22, +0x00, 0x53, 0x04, 0x60, 0x07, 0x6C, 0x00, 0x18, +0x28, 0xE1, 0x03, 0x10, 0x07, 0x6C, 0x00, 0x18, +0xC9, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x64, 0x9A, 0x80, 0xF0, 0x19, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x58, 0x9A, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xD5, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF6, 0x5C, 0x9A, 0xAB, 0xF1, 0x64, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0xD5, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF2, 0x40, 0x9A, 0xAB, 0xF1, +0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0xD5, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x5C, 0x9A, +0xAB, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0xD5, 0xE0, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, +0x50, 0x9A, 0xAB, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xD5, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF2, 0x58, 0x9A, 0xAB, 0xF1, 0x64, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0xCA, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF2, 0x5C, 0x9A, 0xAB, 0xF1, +0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x3C, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x40, 0x9A, +0xAB, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0xA4, 0xE0, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, +0x48, 0x9A, 0xAB, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x1F, 0xE0, +0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, 0x64, 0x9B, +0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x81, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x40, 0x9A, +0xAB, 0xF1, 0x64, 0x9B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x85, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF3, 0x74, 0x9B, 0x89, 0x9A, 0x8C, 0xEB, +0x07, 0x23, 0xA0, 0xF0, 0x64, 0x9A, 0x00, 0xF2, +0x00, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, 0x68, 0x9A, +0x78, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0xE6, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xAB, 0xF1, 0x48, 0x9A, 0x02, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x10, 0x6C, 0x00, 0x18, +0xAD, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x48, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x20, 0x6C, 0x00, 0x18, 0xAD, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xAB, 0xF1, 0x48, 0x9A, 0x08, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x30, 0x6C, 0x00, 0x18, +0xAD, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x48, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x40, 0x6C, 0x00, 0x18, 0xAD, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xAB, 0xF1, 0x48, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x50, 0x6C, 0x00, 0x18, +0xAD, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x48, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x60, 0x6C, 0x00, 0x18, 0xAD, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xAB, 0xF1, 0x48, 0x9A, 0x80, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x70, 0x6C, 0x00, 0x18, +0xAD, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, +0x68, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0xE6, 0xE2, +0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, 0x68, 0x9B, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x02, 0x6C, 0x00, 0x18, 0xE6, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0xAB, 0xF1, 0x68, 0x9B, 0x00, 0xF4, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, +0x00, 0x18, 0xE6, 0xE2, 0x30, 0xF0, 0x20, 0x6B, +0xAB, 0xF1, 0x68, 0x9B, 0x01, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, +0xE6, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x6C, 0x9A, 0xA0, 0xF0, 0x13, 0x23, 0x01, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x64, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x4C, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x10, 0x6C, 0x00, 0x18, 0x5B, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xAB, 0xF1, 0x4C, 0x9A, 0x04, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x20, 0x6C, 0x00, 0x18, +0x5B, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x4C, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x30, 0x6C, 0x00, 0x18, 0x5B, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xAB, 0xF1, 0x4C, 0x9A, 0x10, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x40, 0x6C, 0x00, 0x18, +0x5B, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x4C, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x50, 0x6C, 0x00, 0x18, 0x5B, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xAB, 0xF1, 0x4C, 0x9A, 0x40, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x60, 0x6C, 0x00, 0x18, +0x5B, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x4C, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x70, 0x6C, 0x00, 0x18, 0x5B, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0xAB, 0xF1, 0x6C, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0x64, 0xE2, 0x30, 0xF0, 0x20, 0x6B, +0xAB, 0xF1, 0x6C, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0x64, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, +0x6C, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x64, 0xE2, +0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, 0x6C, 0x9B, +0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0x64, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0xAB, 0xF1, 0x6C, 0x9B, 0x10, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xEE, 0xC1, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x5C, 0x9A, +0xAB, 0xF1, 0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0xEE, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, +0x48, 0x9A, 0xAB, 0xF1, 0x6C, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0xEE, 0xC1, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF1, 0x5C, 0x9A, 0xAB, 0xF1, 0x6C, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0xEE, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, +0x4C, 0x9A, 0x00, 0x52, 0x03, 0x60, 0x04, 0x6C, +0x00, 0x18, 0xEE, 0xC1, 0x30, 0xF0, 0x20, 0x6A, +0xAB, 0xF1, 0x70, 0x9A, 0xC0, 0xF0, 0x18, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0xCA, 0xDF, 0x30, 0xF0, 0x20, 0x6A, +0xAB, 0xF1, 0x50, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x3C, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, 0x50, 0x9A, +0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0xA4, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0xAB, 0xF1, 0x50, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x1F, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, 0x50, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0xCA, 0xDF, 0x30, 0xF0, 0x20, 0x6A, +0xAB, 0xF1, 0x50, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x3C, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF1, 0x50, 0x9A, +0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0xA4, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0xAB, 0xF1, 0x50, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x1F, 0xE0, +0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, 0x70, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0xCA, 0xDF, 0x30, 0xF0, +0x20, 0x6B, 0xAB, 0xF1, 0x70, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, +0x00, 0x18, 0x3C, 0xE0, 0x30, 0xF0, 0x20, 0x6B, +0xAB, 0xF1, 0x70, 0x9B, 0x00, 0xF4, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0xA4, 0xE0, 0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, +0x70, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x1F, 0xE0, +0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, 0x70, 0x9B, +0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0xCA, 0xDF, 0x30, 0xF0, +0x20, 0x6B, 0xAB, 0xF1, 0x70, 0x9B, 0x04, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, +0x00, 0x18, 0x3C, 0xE0, 0x30, 0xF0, 0x20, 0x6B, +0xAB, 0xF1, 0x70, 0x9B, 0x08, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, +0xA4, 0xE0, 0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF1, +0x70, 0x9B, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x1F, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x40, 0x9A, 0xAB, 0xF1, 0x70, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0x07, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF2, 0x58, 0x9A, 0xAB, 0xF1, +0x70, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, +0x00, 0x18, 0x07, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x5C, 0x9A, +0xAB, 0xF1, 0x70, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0x07, 0xE0, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, +0x40, 0x9A, 0xAB, 0xF1, 0x70, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x07, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x00, 0x6B, 0x68, 0xDA, 0x69, 0xDA, 0x6A, 0xDA, +0x6B, 0xDA, 0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x24, 0x6A, +0xD7, 0xF5, 0x1E, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, +0xAC, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF2, 0xB0, 0x9B, 0x30, 0xF0, 0x20, 0x6E, +0x04, 0xF2, 0xD4, 0x9E, 0x60, 0x9D, 0xCC, 0xEB, +0x0C, 0x10, 0x01, 0x72, 0x0B, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF2, 0xB0, 0x9B, 0x30, 0xF0, +0x20, 0x6E, 0x03, 0xF3, 0xDC, 0x9E, 0x60, 0x9D, +0xCD, 0xEB, 0x60, 0xDD, 0x05, 0x5C, 0x60, 0xF1, +0x1A, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x88, 0x34, +0xE3, 0xF0, 0x04, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, +0x00, 0xEB, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF2, 0x70, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, +0x12, 0x10, 0x01, 0x72, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x70, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x40, 0xA3, 0x80, 0x4D, +0xC0, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x02, 0x72, 0x05, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x70, 0x9A, +0x5B, 0x10, 0x03, 0x72, 0x40, 0xF1, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x70, 0x9A, +0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xE9, 0x17, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF2, 0x78, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, +0xE2, 0x17, 0x01, 0x72, 0x19, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x90, 0x9A, 0xFF, 0x6A, +0x40, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF2, 0x98, 0x9B, 0x01, 0x6D, 0x60, 0xA4, +0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, +0x60, 0xA4, 0x04, 0x6D, 0x4C, 0xEB, 0x48, 0x10, +0x02, 0x72, 0x0F, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF2, 0x70, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF2, 0x78, 0x9A, 0xFE, 0x6A, 0x80, 0xA3, +0xB6, 0x17, 0x03, 0x72, 0x00, 0xF1, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x90, 0x9A, +0xFF, 0x6B, 0x40, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x98, 0x9A, 0x01, 0x6D, +0x40, 0xA4, 0x6C, 0xEA, 0x4B, 0x10, 0x07, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x78, 0x9A, +0x80, 0xA3, 0xBF, 0x6A, 0x98, 0x17, 0x01, 0x72, +0x1B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, +0x90, 0x9A, 0xFF, 0x6A, 0x40, 0x6D, 0x60, 0xA4, +0x10, 0x6E, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, +0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, +0x98, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0xCD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x60, 0xA4, 0x4C, 0xEB, +0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, +0x02, 0x72, 0x0F, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF2, 0x70, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF2, 0x78, 0x9A, 0xEF, 0x6A, 0x80, 0xA3, +0x6A, 0x17, 0x03, 0x72, 0xA0, 0xF0, 0x1F, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x90, 0x9A, +0xFF, 0x6B, 0x40, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x98, 0x9A, 0x10, 0x6D, +0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x20, 0xE8, 0x08, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x78, 0x9A, 0xFF, 0xF3, +0x1F, 0x6A, 0x80, 0xAB, 0x83, 0x10, 0x01, 0x72, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, +0x70, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x78, 0x9A, +0xFF, 0xF7, 0x1F, 0x6C, 0x7F, 0x4D, 0x40, 0xAB, +0x41, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xCB, 0x40, 0xAB, 0x00, 0xF3, 0x00, 0x4D, +0x8C, 0xEA, 0x51, 0x10, 0x02, 0x72, 0x10, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x70, 0x9A, +0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x78, 0x9A, +0xFF, 0xF6, 0x1F, 0x6A, 0x80, 0xAB, 0x52, 0x10, +0x03, 0x72, 0x6D, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF2, 0x70, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, +0x78, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x7F, 0x4D, +0x40, 0xAB, 0x41, 0x4D, 0x8C, 0xEA, 0x27, 0x10, +0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, +0x78, 0x9A, 0xF7, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, +0x31, 0x10, 0x01, 0x72, 0x1E, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x70, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF2, 0x78, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0xC1, 0xF7, 0x00, 0x4D, 0x40, 0xAB, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x40, 0xAB, +0x06, 0xF0, 0x00, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, +0x11, 0x10, 0x02, 0x72, 0x12, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x70, 0x9A, 0xBF, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x78, 0x9A, 0xFD, 0xF7, +0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x40, 0xCB, +0x20, 0xE8, 0x03, 0x72, 0x18, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x70, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF2, 0x78, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0xC1, 0xF7, 0x00, 0x4D, 0x40, 0xAB, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, 0x7C, 0x9B, +0xFF, 0x6A, 0x4C, 0xED, 0x6D, 0xE4, 0xC0, 0xA3, +0x3F, 0x6C, 0xCC, 0xEC, 0x80, 0xC3, 0x07, 0x2D, +0x80, 0xA3, 0x40, 0x6D, 0x4C, 0xEC, 0xAD, 0xEC, +0x4C, 0xEC, 0x80, 0xC3, 0x20, 0xE8, 0x01, 0x75, +0x07, 0x61, 0x80, 0xA3, 0x80, 0x6D, 0xAB, 0xED, +0x4C, 0xEC, 0xAD, 0xEC, 0x4C, 0xEC, 0x80, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF0, 0x70, 0x9B, 0xFF, 0x6A, 0xAC, 0xEA, +0x6D, 0xE4, 0x80, 0x9B, 0x80, 0xF4, 0x40, 0x32, +0x8D, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0xFE, 0x63, 0x03, 0xD1, 0x02, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, +0xDA, 0xA2, 0x01, 0x6B, 0xE3, 0x67, 0xCC, 0xEF, +0x00, 0xD7, 0xC3, 0xF3, 0x58, 0xA2, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6F, 0x4C, 0xEE, 0x30, 0xF0, +0x20, 0x6A, 0x1E, 0x65, 0x43, 0xF2, 0xC8, 0x9A, +0x24, 0xF2, 0xE0, 0x9F, 0x30, 0xF0, 0x20, 0x69, +0xD9, 0xE4, 0x40, 0x9E, 0x24, 0xF2, 0x28, 0x99, +0xEC, 0xEA, 0x30, 0xF0, 0x20, 0x6F, 0x24, 0xF2, +0xE4, 0x9F, 0xED, 0xEA, 0x40, 0xDE, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF7, 0x08, 0x9A, 0x83, 0xF7, +0x00, 0x6A, 0x4B, 0xEA, 0x01, 0xE4, 0xC0, 0x98, +0x7F, 0x6F, 0x4C, 0xEE, 0x43, 0xA5, 0xEC, 0xEA, +0x2D, 0xEA, 0xCD, 0xEA, 0x40, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF2, 0xCC, 0x9A, 0x30, 0xF0, +0x20, 0x68, 0xA3, 0xF2, 0x00, 0x98, 0xD9, 0xE4, +0x40, 0x9E, 0x0D, 0xEA, 0x40, 0xDE, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF2, 0xD0, 0x9A, 0xFF, 0x68, +0x01, 0x48, 0xD9, 0xE4, 0x40, 0x9E, 0x0D, 0xEA, +0x3F, 0xF6, 0x1F, 0x48, 0x0C, 0xEA, 0x40, 0xDE, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, 0x54, 0x9A, +0x49, 0xE4, 0xC0, 0x9A, 0x40, 0xA5, 0xEC, 0xEA, +0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, +0x58, 0x9A, 0x49, 0xE4, 0x40, 0xA2, 0x4C, 0xEB, +0x05, 0x23, 0x03, 0xF7, 0x01, 0x6A, 0x4B, 0xEA, +0xCC, 0xEA, 0x07, 0x10, 0x61, 0xA5, 0x1F, 0xF7, +0x01, 0x6A, 0x4B, 0xEA, 0xCC, 0xEA, 0x60, 0x33, +0x6D, 0xEA, 0xC2, 0xA5, 0xFF, 0x6B, 0xCE, 0xEB, +0x0D, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, +0x7C, 0x9B, 0x4C, 0xEB, 0x80, 0xF4, 0xC0, 0x32, +0x30, 0xF0, 0x20, 0x6E, 0x83, 0xF2, 0xD8, 0x9E, +0xCD, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF2, 0x74, 0x9B, 0x6D, 0xE4, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0xC0, 0x9A, +0x02, 0xF0, 0x00, 0x6B, 0x6B, 0xEB, 0xD9, 0xE4, +0x40, 0x9E, 0x6C, 0xEA, 0x62, 0xAD, 0xE1, 0xF7, +0x1F, 0x6D, 0xAC, 0xEB, 0x6D, 0xEA, 0x40, 0xDE, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x64, 0x9A, +0x0E, 0xF0, 0x01, 0x4D, 0x6D, 0xE4, 0x40, 0x9B, +0xAD, 0xEA, 0xC8, 0xF0, 0x00, 0x4D, 0xAC, 0xEA, +0x40, 0xDB, 0x02, 0x61, 0x00, 0x97, 0x15, 0x27, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x48, 0x9A, +0xFF, 0x6B, 0x80, 0x6D, 0x51, 0xE4, 0x40, 0xA4, +0xAB, 0xED, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x4C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x00, 0x6B, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x48, 0x9A, 0x51, 0xE4, 0x60, 0xA4, 0x7F, 0x6A, +0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF2, 0x4C, 0x9A, 0x1C, 0x6B, 0x60, 0xC2, +0x08, 0xF4, 0x13, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF2, 0x50, 0x9A, 0x60, 0xCA, 0x03, 0x91, +0x02, 0x90, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x23, 0xF3, 0x88, 0x9C, 0x40, 0x9B, +0x20, 0x6D, 0x00, 0x6E, 0x8D, 0xEA, 0x40, 0xDB, +0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x48, 0x9A, 0x00, 0xF4, 0x1F, 0x6C, +0xE0, 0xF1, 0x14, 0x6F, 0x40, 0xEA, 0x02, 0x67, +0x00, 0x18, 0x40, 0xE7, 0x50, 0x67, 0x09, 0x97, +0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xE0, 0xD7, +0x00, 0x6B, 0x32, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF2, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xE3, 0xF1, 0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF3, +0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x58, 0x9A, 0x02, 0xF0, +0x00, 0x6B, 0x40, 0x9A, 0x6C, 0xEA, 0xF1, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x74, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF7, 0x88, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x01, 0x6B, +0x05, 0x97, 0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x68, 0x4C, 0xED, +0x4C, 0xEE, 0x4C, 0xEF, 0x0C, 0xEC, 0x30, 0xF0, +0x20, 0x6B, 0x07, 0xD4, 0x05, 0xD6, 0x08, 0xD5, +0x09, 0xD7, 0x8B, 0xF1, 0x00, 0x4B, 0xE0, 0xF0, +0xBA, 0xA3, 0x01, 0x6C, 0xC5, 0x67, 0x8C, 0xEE, +0x4C, 0xEE, 0x04, 0xD6, 0xC3, 0xF3, 0x38, 0xA3, +0x8C, 0xE9, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x50, 0x9A, 0x00, 0x6C, 0xA4, 0x67, +0x40, 0xAA, 0x62, 0x67, 0x0C, 0xEB, 0x06, 0xD3, +0x00, 0x18, 0xF8, 0xCD, 0x06, 0x94, 0x07, 0x95, +0xE1, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF2, 0x8C, 0x9C, 0x6D, 0xE5, +0x0C, 0xEB, 0x60, 0xCC, 0x7C, 0x32, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF2, 0x64, 0x9B, 0x30, 0xF0, +0x20, 0x6C, 0x24, 0xF2, 0x94, 0x9C, 0x6D, 0xE2, +0x60, 0xAB, 0x08, 0x96, 0x91, 0xE2, 0x0C, 0xEB, +0x80, 0x9C, 0x05, 0x26, 0x10, 0xF0, 0x00, 0x6D, +0xAB, 0xED, 0xAD, 0xEB, 0x0C, 0xEB, 0xD8, 0xF0, +0x00, 0x6D, 0x6C, 0xED, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF2, 0x64, 0x9B, 0x6D, 0xE2, 0xA0, 0xCB, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, 0x78, 0x9B, +0x6D, 0xE2, 0xA0, 0xA3, 0x01, 0x6B, 0xAC, 0xEB, +0x05, 0x23, 0x03, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x07, 0x10, 0x09, 0x95, 0x1F, 0xF7, +0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0x34, +0x8D, 0xEB, 0x05, 0x96, 0xFF, 0x76, 0x13, 0x60, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF2, 0x9C, 0x9C, +0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF2, 0xB8, 0x9D, +0x6C, 0xEC, 0x80, 0xF4, 0xC0, 0x33, 0xAD, 0xEB, +0x8D, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF2, +0x94, 0x9C, 0x91, 0xE2, 0x60, 0xDC, 0x02, 0x29, +0x04, 0x93, 0x15, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF2, 0x88, 0x9B, 0xFF, 0x6D, 0x80, 0x6E, +0x91, 0xE2, 0x60, 0xA4, 0xCB, 0xEE, 0xAC, 0xEB, +0xCD, 0xEB, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF2, 0x6C, 0x9B, 0x00, 0x6C, +0x80, 0xC3, 0x00, 0x6C, 0x11, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF2, 0x88, 0x9B, 0x7F, 0x6B, +0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, 0x6C, 0x9B, +0x1C, 0x6C, 0x80, 0xC3, 0x08, 0xF4, 0x13, 0x6C, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, 0x70, 0x9B, +0x80, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, +0x9C, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, +0xAC, 0xEB, 0x60, 0xC4, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x58, 0x9A, +0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, +0x40, 0x9C, 0x23, 0xF3, 0x68, 0x9B, 0x6D, 0xEA, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x58, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, +0x51, 0xE4, 0x40, 0x9C, 0x23, 0xF3, 0x7C, 0x9B, +0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x58, 0x9A, +0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, +0x40, 0x9C, 0xC3, 0xF2, 0x7C, 0x9B, 0x6D, 0xEA, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x58, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, +0x51, 0xE4, 0x40, 0x9C, 0x43, 0xF3, 0x7C, 0x9B, +0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6B, 0x44, 0xF2, +0x58, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x01, 0x6C, 0x40, 0xF7, 0x42, 0x32, +0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6B, 0x44, 0xF2, +0x58, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x01, 0x6C, 0x00, 0xF7, 0x42, 0x32, +0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x3E, 0xF3, +0x90, 0x67, 0x01, 0x6D, 0x01, 0x48, 0x00, 0x18, +0x4E, 0xF3, 0x0B, 0x70, 0xF5, 0x61, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF2, 0x55, 0xA2, -0x01, 0x68, 0x0C, 0xEA, 0x69, 0x22, 0x00, 0x18, -0xCE, 0xF2, 0x3C, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF6, 0x20, 0xA2, 0x22, 0x29, 0x00, 0x18, -0xC2, 0xF2, 0x1B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF6, 0x61, 0xA2, 0x01, 0x4B, 0x89, 0xF6, -0x61, 0xC2, 0x89, 0xF6, 0x41, 0xA2, 0x06, 0x5A, -0x14, 0x61, 0x90, 0x67, 0x00, 0x18, 0x38, 0xF3, -0x30, 0xF0, 0x20, 0x6A, 0x10, 0xF0, 0x24, 0x6C, -0x04, 0xD0, 0x00, 0xF3, 0x4C, 0x9A, 0x19, 0xF5, -0x19, 0x4C, 0x00, 0x6D, 0xC8, 0x6E, 0xF0, 0x67, -0x42, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, -0x21, 0xC2, 0x00, 0x18, 0xA1, 0xF2, 0x0D, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, 0x60, 0xA2, -0x02, 0x6C, 0x01, 0x4B, 0x89, 0xF6, 0x60, 0xC2, -0x89, 0xF6, 0x40, 0xA2, 0x0A, 0x5A, 0x0F, 0x61, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, -0x40, 0xC3, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF6, 0x42, 0xA2, 0x32, 0x5A, 0x03, 0x61, -0x00, 0x6C, 0x00, 0x18, 0x38, 0xF3, 0x30, 0xF0, -0x20, 0x6A, 0x89, 0xF6, 0x40, 0xA2, 0x0E, 0x2A, -0x01, 0x6A, 0x04, 0xD2, 0x10, 0xF0, 0x24, 0x6C, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0x19, 0xF5, 0x19, 0x4C, 0x00, 0x6D, 0xC8, 0x6E, -0x01, 0x6F, 0x0D, 0x10, 0x00, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0x10, 0xF0, 0x24, 0x6C, 0x01, 0x6E, 0x19, 0xF5, -0x19, 0x4C, 0x00, 0x6D, 0xE6, 0x67, 0x40, 0xEA, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0xF0, 0x1C, 0x4A, -0x8C, 0x33, 0x6D, 0xE2, 0x05, 0xD4, 0x04, 0xD3, -0x42, 0xAB, 0x00, 0x68, 0xFF, 0xF7, 0x1F, 0x72, -0xC0, 0xF0, 0x01, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF2, 0x70, 0x9A, 0x01, 0x6C, 0x40, 0xA3, -0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, -0x40, 0xEA, 0x04, 0x93, 0x46, 0xA3, 0x62, 0xAB, -0x62, 0x34, 0x2C, 0xEC, 0x18, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xE3, 0xF2, -0x8C, 0x9C, 0x84, 0xF2, 0xB4, 0x9D, 0xA0, 0xDC, -0x30, 0xF0, 0x20, 0x6D, 0x84, 0xF2, 0xB8, 0x9D, -0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0x84, 0xF2, -0xBC, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, -0xA4, 0xF2, 0xA0, 0x9D, 0x1A, 0x10, 0x01, 0x74, -0x80, 0xF0, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xF0, 0x20, 0x6D, 0xE3, 0xF2, 0x8C, 0x9C, -0x84, 0xF2, 0xB4, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, -0x20, 0x6D, 0x84, 0xF2, 0xB8, 0x9D, 0xA0, 0xDC, -0x30, 0xF0, 0x20, 0x6D, 0xA4, 0xF2, 0xA4, 0x9D, -0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0xA4, 0xF2, -0xA8, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, -0x84, 0xF2, 0xA8, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, -0x20, 0x6D, 0x84, 0xF2, 0xAC, 0x9D, 0xA0, 0xDC, -0xFF, 0x6C, 0x8C, 0xEB, 0xA7, 0x43, 0x19, 0x4D, -0x8C, 0xED, 0x08, 0x5D, 0x05, 0x61, 0xA7, 0x43, -0x09, 0x4D, 0x8C, 0xED, 0x08, 0x5D, 0x57, 0x60, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF2, 0xAC, 0x9C, -0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, 0x8C, 0x9C, -0xB5, 0xE3, 0x01, 0x68, 0xA0, 0xDC, 0x30, 0xF0, -0x20, 0x6D, 0xA4, 0xF2, 0xB0, 0x9D, 0xAD, 0xE3, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF2, -0x74, 0x9B, 0x1F, 0xF7, 0x00, 0x6D, 0x6D, 0xE2, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF2, -0x78, 0x9B, 0x6D, 0xE2, 0x60, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xF2, 0x68, 0x9B, 0x60, 0xDC, -0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF2, 0x6C, 0x9B, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF2, -0x7C, 0x9B, 0x60, 0xDC, 0x60, 0x9C, 0xAC, 0xEB, -0x62, 0x33, 0x4E, 0xEB, 0x25, 0x2B, 0x05, 0x97, -0x30, 0xF0, 0x20, 0x6B, 0x88, 0xF0, 0x1C, 0x4B, -0xEC, 0x36, 0xCD, 0xE3, 0xC1, 0xAB, 0xFF, 0x6B, -0xCC, 0xEB, 0x30, 0xF0, 0x20, 0x6E, 0x03, 0xF3, -0xC0, 0x9E, 0x60, 0x33, 0x60, 0x33, 0xD9, 0xE2, -0x79, 0xE6, 0xC0, 0xDC, 0x30, 0xF0, 0x20, 0x6E, -0x03, 0xF3, 0xC4, 0x9E, 0xCD, 0xE3, 0x60, 0xDC, -0x60, 0x9C, 0xAC, 0xEB, 0x62, 0x33, 0x6E, 0xEA, -0x03, 0x22, 0x01, 0x68, 0x07, 0x6C, 0x05, 0x10, -0x00, 0x68, 0x05, 0x6C, 0x02, 0x10, 0x00, 0x68, -0x08, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, -0x70, 0x9A, 0xFE, 0x6A, 0xA0, 0xA3, 0xAC, 0xEA, -0x40, 0xC3, 0x00, 0x18, 0x38, 0xF3, 0x50, 0x67, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x89, 0xF6, 0x24, 0xA0, 0x1C, 0x29, 0x00, 0x6C, -0x00, 0x18, 0x4F, 0xEB, 0x01, 0x72, 0x78, 0x67, -0x04, 0xD3, 0x03, 0x23, 0x89, 0xF6, 0x24, 0xC0, -0x0F, 0x10, 0x00, 0x18, 0xBA, 0xEB, 0x01, 0x72, -0x07, 0x60, 0x5D, 0x67, 0x67, 0x42, 0x09, 0x4B, -0x40, 0xA3, 0x89, 0xF6, 0x44, 0xC0, 0x04, 0x10, -0x01, 0x6A, 0x89, 0xF6, 0x44, 0xC0, 0x03, 0x10, -0x09, 0x6C, 0x00, 0x18, 0x38, 0xF3, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0x6B, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x0A, 0x69, 0x12, 0xED, +0x4C, 0xED, 0x04, 0xD5, 0xFF, 0x68, 0x2C, 0xE8, +0x90, 0x67, 0x00, 0x18, 0x5E, 0xF3, 0x17, 0x2A, +0xFF, 0x49, 0x00, 0xF6, 0x20, 0x31, 0x90, 0x67, +0x01, 0x6D, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x18, +0x4E, 0xF3, 0x41, 0x41, 0xEF, 0x2A, 0x01, 0x69, +0x2B, 0xE9, 0x09, 0x10, 0x04, 0x94, 0xFF, 0x49, +0x00, 0x6D, 0x00, 0xF6, 0x20, 0x31, 0x00, 0x18, +0x4E, 0xF3, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x51, +0xF5, 0x60, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x0C, 0x68, +0x4C, 0xEC, 0x1B, 0xEC, 0x01, 0x28, 0xE5, 0xE8, +0x4C, 0xED, 0x10, 0xE9, 0x4C, 0xE9, 0x12, 0xE8, +0x4C, 0xE8, 0x0F, 0x25, 0x90, 0x67, 0x01, 0x6D, +0x00, 0x18, 0x3E, 0xF3, 0x30, 0xF0, 0x20, 0x6A, +0xC8, 0xF0, 0x00, 0x4A, 0x41, 0xE0, 0x60, 0xA0, +0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x40, 0xC0, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC8, 0xF0, +0x00, 0x4A, 0x49, 0xE0, 0x80, 0xA2, 0x01, 0x6B, +0x64, 0xE9, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, +0x40, 0xA2, 0x04, 0x2A, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0x3E, 0xF3, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0x91, 0xF3, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0x78, 0xF3, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x0C, 0x6B, 0x7B, 0xED, +0x01, 0x2B, 0xE5, 0xE8, 0x05, 0x6E, 0xFF, 0x6A, +0x4C, 0xEC, 0x10, 0xEB, 0x12, 0xED, 0x4C, 0xED, +0xD8, 0xEB, 0x12, 0xEB, 0x4C, 0xEB, 0x1E, 0x73, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x7C, 0x9A, 0xAC, 0x35, 0x30, 0xF0, 0x20, 0x6E, +0x6D, 0xE5, 0x40, 0x9B, 0xE3, 0xF3, 0xC4, 0x9E, +0xCC, 0xEA, 0x80, 0xF7, 0x80, 0x36, 0xCD, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x58, 0x9A, 0x08, 0x6B, 0x6B, 0xEB, 0x55, 0xE5, +0x40, 0x9D, 0x8A, 0x34, 0x6C, 0xEA, 0x07, 0x6B, +0x6C, 0xEC, 0x1E, 0x10, 0x20, 0x5B, 0x0C, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x5C, 0x9A, +0x1F, 0x6E, 0xAC, 0x35, 0xE6, 0x67, 0x55, 0xE5, +0xE4, 0xEB, 0x40, 0x9D, 0xEF, 0xEF, 0x0D, 0x10, +0xE0, 0x4B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF2, 0x58, 0x9A, 0xAC, 0x35, 0x1F, 0x6E, +0x55, 0xE5, 0xE0, 0x9D, 0x46, 0x67, 0x44, 0xEB, +0x4F, 0xEA, 0xCC, 0xEC, 0xEC, 0xEA, 0x84, 0xEB, +0x8D, 0xEA, 0x40, 0xDD, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xE9, 0x05, 0x67, +0x01, 0x29, 0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0xB7, 0xF3, 0xFF, 0x6C, 0x0C, 0xEC, 0xB1, 0x67, +0x00, 0x18, 0xAC, 0xF3, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xAE, 0xEC, 0x01, 0x6A, 0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0x40, 0xF1, 0x7D, 0xA0, 0x40, 0xF1, 0x3D, 0xA0, -0x01, 0x6A, 0x6A, 0x33, 0x4C, 0xEB, 0x4C, 0xE9, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x06, 0xD3, -0x8B, 0xF2, 0x15, 0x4C, 0x01, 0x6E, 0x40, 0xEA, -0x40, 0xF1, 0x7D, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xEC, 0xF2, 0x30, 0xF0, -0x20, 0x6A, 0x8B, 0xF2, 0x75, 0xA2, 0x01, 0x6A, -0x6C, 0xEA, 0x20, 0x2A, 0x01, 0x68, 0x2E, 0xE8, -0x1D, 0x28, 0x10, 0xF0, 0x24, 0x6C, 0x19, 0xF5, -0x19, 0x4C, 0x00, 0x18, 0xB9, 0xE6, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF2, 0x40, 0x9A, 0x00, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF2, 0x44, 0x9A, -0x00, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, -0x00, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, -0x01, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, -0x02, 0xC2, 0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF2, 0x75, 0xA2, 0x01, 0x6A, 0x4C, 0xEB, -0x25, 0x23, 0x24, 0x29, 0x30, 0xF0, 0x20, 0x6B, -0xC4, 0xF2, 0x60, 0x9B, 0x51, 0x6C, 0x00, 0x6D, -0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF2, -0x64, 0x9B, 0x10, 0xF0, 0x24, 0x6C, 0x19, 0xF5, -0x19, 0x4C, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, -0x20, 0xC3, 0x00, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x89, 0xF6, 0x21, 0xC3, 0x30, 0xF0, -0x20, 0x6B, 0x89, 0xF6, 0x22, 0xC3, 0xC8, 0x6E, -0x01, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF2, 0x75, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, -0x0B, 0x2A, 0x06, 0x92, 0x09, 0x22, 0x10, 0xF0, -0x24, 0x6C, 0xBA, 0xF1, 0x19, 0x4C, 0x00, 0x18, -0xB9, 0xE6, 0x00, 0x18, 0x9C, 0xF2, 0x1C, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF2, 0x75, 0xA2, -0x04, 0x6A, 0x6C, 0xEA, 0x15, 0x22, 0x06, 0x93, -0x13, 0x2B, 0x00, 0x18, 0x9C, 0xF2, 0x00, 0x18, -0xF1, 0xF3, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x24, 0x6C, 0xBA, 0xF1, 0x19, 0x4C, 0x00, 0x6D, -0xC0, 0xF7, 0x10, 0x6E, 0x01, 0x6F, 0x40, 0xEA, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF2, 0x48, 0x9A, -0x41, 0x6B, 0x60, 0xC2, 0x45, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF2, 0x6C, 0x9A, -0xFE, 0x6A, 0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, -0x41, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF6, -0x42, 0xC3, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, -0x38, 0xF3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF2, 0x75, 0xA2, -0x04, 0x6A, 0x6C, 0xEA, 0x78, 0x22, 0x30, 0xF0, -0x20, 0x68, 0x00, 0x69, 0x88, 0xF0, 0x1C, 0x48, -0x06, 0xD1, 0x40, 0xA8, 0xFF, 0xF7, 0x1F, 0x72, -0x23, 0x60, 0x91, 0x67, 0x00, 0x18, 0x19, 0xF3, -0x01, 0x72, 0x1B, 0x61, 0x42, 0xA8, 0xFF, 0xF7, -0x1F, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x89, 0xF6, 0x43, 0xA3, 0x81, 0x42, 0x89, 0xF6, -0x83, 0xC3, 0xFF, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, -0x02, 0x5A, 0x52, 0x60, 0x04, 0x6C, 0x00, 0x18, -0x5B, 0xF4, 0x4E, 0x10, 0x91, 0x67, 0x00, 0x18, -0x83, 0xF3, 0x01, 0x72, 0x02, 0x61, 0x01, 0x6B, -0x06, 0xD3, 0x01, 0x49, 0x08, 0x48, 0xD9, 0x17, -0x30, 0xF0, 0x20, 0x6A, 0x98, 0x67, 0x89, 0xF6, -0x83, 0xC2, 0x06, 0x10, 0x00, 0x6B, 0x06, 0x6C, -0x89, 0xF6, 0x63, 0xC2, 0x00, 0x18, 0x38, 0xF3, -0x06, 0x92, 0x07, 0x2A, 0x7D, 0x67, 0x87, 0x43, -0x11, 0x4C, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xA4, -0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, -0x65, 0xA2, 0x01, 0x4B, 0x89, 0xF6, 0x65, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, 0x65, 0xA2, -0x02, 0x5B, 0x06, 0x61, 0x00, 0x6B, 0x06, 0x6C, -0x89, 0xF6, 0x65, 0xC2, 0x00, 0x18, 0x5B, 0xF4, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF2, 0x75, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x05, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x89, 0xF6, 0x43, 0xA2, 0x17, 0x22, -0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x24, 0x6C, -0xBA, 0xF1, 0x19, 0x4C, 0x00, 0x6D, 0xC0, 0xF7, -0x10, 0x6E, 0x01, 0x6F, 0x40, 0xEA, 0x07, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, 0x63, 0xA2, -0x04, 0x5B, 0xC2, 0x61, 0xBB, 0x17, 0x0B, 0x97, +0xFF, 0x6A, 0xAC, 0xEA, 0x06, 0xD2, 0x05, 0xD4, +0x00, 0x69, 0x1F, 0x68, 0x22, 0x10, 0x05, 0x92, +0x40, 0xA2, 0x07, 0xD2, 0x00, 0x6A, 0x04, 0xD2, +0x04, 0x92, 0x07, 0x94, 0x12, 0x35, 0x87, 0xEA, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xEA, 0xF3, +0x06, 0x22, 0xFF, 0x6A, 0x04, 0x30, 0x4C, 0xE8, +0x05, 0x6A, 0x4E, 0xE8, 0x01, 0x10, 0x04, 0x30, +0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x92, 0x01, 0x4A, +0x08, 0x72, 0x04, 0xD2, 0xE9, 0x61, 0xFF, 0x6A, +0x01, 0x49, 0x4C, 0xE9, 0x05, 0x92, 0x01, 0x4A, +0x05, 0xD2, 0x06, 0x92, 0x43, 0xE9, 0xDB, 0x61, +0x1F, 0x6A, 0x4E, 0xE8, 0x0C, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0x70, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x30, 0xF0, 0x20, 0x6B, 0xEF, 0xF6, 0x6E, 0xAB, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x60, 0xA4, +0x01, 0x6A, 0x04, 0x67, 0x6C, 0xEA, 0x44, 0x22, +0x66, 0x32, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, +0x60, 0x9B, 0x54, 0x32, 0x69, 0xE2, 0x61, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF2, 0x64, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x62, 0xA4, 0x60, 0xC2, 0x40, 0xA4, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, 0x68, 0x9B, +0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x63, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF2, 0x6C, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x64, 0xA4, 0x60, 0xC2, 0x40, 0xA4, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, 0x70, 0x9B, +0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x65, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF2, 0x74, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x66, 0xA4, 0x10, 0xF0, 0x00, 0x6C, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, +0x60, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x81, 0x40, 0x06, 0x6D, 0x00, 0x18, 0xEC, 0xF3, +0x60, 0xA0, 0x01, 0x6E, 0x82, 0x67, 0x66, 0x35, +0x6C, 0xEE, 0x00, 0x18, 0xDE, 0xF3, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x6E, 0xF3, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF2, 0x78, 0x9A, +0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, 0x88, 0x9C, +0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF6, 0x4B, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF6, 0x4D, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF2, 0x5C, 0x9A, +0xFF, 0x6E, 0xA0, 0x9A, 0x0F, 0x6A, 0x40, 0xF5, +0xA2, 0x33, 0x4C, 0xEB, 0x45, 0x67, 0xCC, 0xEA, +0x08, 0x72, 0x80, 0xF7, 0xA2, 0x34, 0x15, 0x60, +0x09, 0x5A, 0x07, 0x60, 0x02, 0x72, 0x0D, 0x60, +0x04, 0x72, 0x0D, 0x60, 0x01, 0x72, 0x21, 0x60, +0x06, 0x10, 0x20, 0x72, 0x19, 0x60, 0x40, 0x72, +0x11, 0x60, 0x10, 0x72, 0x0A, 0x60, 0x00, 0x6A, +0x20, 0xE8, 0x14, 0x24, 0x1D, 0x10, 0x07, 0x24, +0x1B, 0x10, 0x00, 0x6A, 0x17, 0x2B, 0x19, 0x24, +0x15, 0x10, 0x03, 0x74, 0x15, 0x61, 0x00, 0x6A, +0x08, 0x73, 0x0F, 0x10, 0x00, 0xF7, 0xA2, 0x35, +0x01, 0x6A, 0x4C, 0xED, 0xCC, 0xED, 0x05, 0x2D, +0x03, 0x74, 0x0A, 0x61, 0x00, 0x6A, 0x0C, 0x73, +0x04, 0x10, 0x03, 0x74, 0x05, 0x61, 0x00, 0x6A, +0x0F, 0x73, 0x03, 0x60, 0x01, 0x6A, 0x20, 0xE8, +0x01, 0x6A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF2, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF3, 0x50, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF3, 0x40, 0x9A, 0xFF, 0x6B, +0x80, 0xA2, 0x6C, 0xEC, 0x8C, 0xEB, 0x44, 0x67, +0x01, 0x23, 0x01, 0x6A, 0xFF, 0x6B, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF2, 0x64, 0x9A, 0x01, 0x6D, 0xFF, 0x6C, +0x40, 0xA3, 0xAC, 0xEA, 0x02, 0x22, 0x45, 0x67, +0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, +0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, +0x50, 0x9A, 0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF3, 0x40, 0x9A, 0x40, 0xA2, 0x0C, 0x22, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x6A, 0x00, 0x6B, 0x30, 0xF0, +0x20, 0x6C, 0xC9, 0xF6, 0x6A, 0xC4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF6, 0x6A, 0xA2, +0x00, 0x6A, 0x01, 0x4B, 0x8C, 0xEB, 0xF3, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF6, 0x68, 0xA2, +0x01, 0x6A, 0x07, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xC9, 0xF6, 0x6A, 0xA3, 0x00, 0x6A, 0x01, 0x23, +0x01, 0x6A, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, +0x6C, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, +0x10, 0x6E, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, +0xA8, 0x9A, 0x40, 0xA5, 0x8C, 0xEA, 0xCD, 0xEA, +0x8C, 0xEA, 0x40, 0xC5, 0x80, 0xA3, 0xFB, 0x6A, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF2, 0x0C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0xFF, 0x6C, 0x40, 0xA8, 0x01, 0x4C, 0x6C, 0xEA, +0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC8, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF3, 0x50, 0x9A, 0x84, 0xF2, +0x70, 0x9B, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF2, 0x74, 0x9B, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF2, 0x78, 0x9B, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF2, 0x7C, 0x9B, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF2, +0x60, 0x9B, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF2, 0x64, 0x9B, 0x60, 0xDA, 0x60, 0xA8, +0xFF, 0xF6, 0x1F, 0x6A, 0x6C, 0xEA, 0x40, 0xC8, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x33, +0xC8, 0xF0, 0x0C, 0x4A, 0x49, 0xE3, 0x67, 0xA2, +0x0C, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF6, +0x6C, 0xA3, 0x01, 0x73, 0x24, 0x61, 0x80, 0xAA, +0x00, 0x18, 0x58, 0xED, 0xFF, 0x72, 0x02, 0x61, +0x1E, 0x10, 0x46, 0xA2, 0x30, 0xF0, 0x20, 0x6B, +0xC8, 0xF0, 0x0C, 0x4B, 0x0C, 0x30, 0x0D, 0xE3, +0x82, 0xA3, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, +0x68, 0x9B, 0x80, 0x34, 0x80, 0x34, 0x71, 0xE4, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x70, 0x9B, +0x80, 0xDB, 0x80, 0x9B, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEC, 0x82, 0x34, 0x8E, 0xEA, 0x00, 0x6B, +0x03, 0x22, 0x01, 0x6B, 0x01, 0x10, 0x00, 0x6B, +0x05, 0x97, 0x04, 0x90, 0x43, 0x67, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD0, 0x01, 0x6D, 0x04, 0x00, 0x5D, 0x67, +0x20, 0xF0, 0x88, 0xC2, 0x0A, 0x07, 0x00, 0x6A, +0x90, 0x67, 0xC5, 0x67, 0x04, 0xD2, 0x05, 0xD2, +0x06, 0xD2, 0x07, 0xD2, 0x00, 0x18, 0xB8, 0xDD, +0xFF, 0x6E, 0xB0, 0x67, 0x02, 0x6C, 0x4C, 0xEE, +0x00, 0x18, 0xCA, 0xDD, 0x09, 0x97, 0x08, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF2, 0x5D, 0xA2, 0x01, 0x68, 0x0C, 0xEA, +0x69, 0x22, 0x00, 0x18, 0x73, 0xF4, 0x3C, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF6, 0x28, 0xA2, +0x22, 0x29, 0x00, 0x18, 0x67, 0xF4, 0x1B, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF6, 0x69, 0xA2, +0x01, 0x4B, 0xC9, 0xF6, 0x69, 0xC2, 0xC9, 0xF6, +0x49, 0xA2, 0x06, 0x5A, 0x14, 0x61, 0x90, 0x67, +0x00, 0x18, 0xDD, 0xF4, 0x30, 0xF0, 0x20, 0x6A, +0x10, 0xF0, 0x24, 0x6C, 0x04, 0xD0, 0x00, 0xF3, +0x4C, 0x9A, 0xBA, 0xF3, 0x0D, 0x4C, 0x00, 0x6D, +0xC8, 0x6E, 0xF0, 0x67, 0x42, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF6, 0x29, 0xC2, 0x00, 0x18, +0x46, 0xF4, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF6, 0x68, 0xA2, 0x02, 0x6C, 0x01, 0x4B, +0xC9, 0xF6, 0x68, 0xC2, 0xC9, 0xF6, 0x48, 0xA2, +0x0A, 0x5A, 0x0F, 0x61, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF6, 0x48, 0xC3, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF6, 0x4A, 0xA2, +0x32, 0x5A, 0x03, 0x61, 0x00, 0x6C, 0x00, 0x18, +0xDD, 0xF4, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF6, +0x48, 0xA2, 0x0E, 0x2A, 0x01, 0x6A, 0x04, 0xD2, +0x10, 0xF0, 0x24, 0x6C, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0xBA, 0xF3, 0x0D, 0x4C, +0x00, 0x6D, 0xC8, 0x6E, 0x01, 0x6F, 0x0D, 0x10, +0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x24, 0x6C, +0x01, 0x6E, 0xBA, 0xF3, 0x0D, 0x4C, 0x00, 0x6D, +0xE6, 0x67, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0xC8, 0xF0, 0x0C, 0x4A, 0x8C, 0x33, 0x6D, 0xE2, +0x05, 0xD4, 0x04, 0xD3, 0x42, 0xAB, 0x00, 0x68, +0xFF, 0xF7, 0x1F, 0x72, 0xC0, 0xF0, 0x01, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF2, 0x68, 0x9A, +0x01, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, +0x2C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x48, 0x9A, 0x40, 0xEA, 0x04, 0x93, +0x46, 0xA3, 0x62, 0xAB, 0x62, 0x34, 0x2C, 0xEC, +0x18, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6D, 0x03, 0xF3, 0x90, 0x9C, 0xA4, 0xF2, +0xAC, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, +0xA4, 0xF2, 0xB0, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, +0x20, 0x6D, 0xA4, 0xF2, 0xB4, 0x9D, 0xA0, 0xDC, +0x30, 0xF0, 0x20, 0x6D, 0xA4, 0xF2, 0xB8, 0x9D, +0x1A, 0x10, 0x01, 0x74, 0x80, 0xF0, 0x05, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, +0x03, 0xF3, 0x90, 0x9C, 0xA4, 0xF2, 0xAC, 0x9D, +0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0xA4, 0xF2, +0xB0, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, +0xA4, 0xF2, 0xBC, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, +0x20, 0x6D, 0xC4, 0xF2, 0xA0, 0x9D, 0xA0, 0xDC, +0x30, 0xF0, 0x20, 0x6D, 0xA4, 0xF2, 0xA0, 0x9D, +0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0xA4, 0xF2, +0xA4, 0x9D, 0xA0, 0xDC, 0xFF, 0x6C, 0x8C, 0xEB, +0xA7, 0x43, 0x19, 0x4D, 0x8C, 0xED, 0x08, 0x5D, +0x05, 0x61, 0xA7, 0x43, 0x09, 0x4D, 0x8C, 0xED, +0x08, 0x5D, 0x57, 0x60, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF2, 0xA4, 0x9C, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF3, 0x90, 0x9C, 0xB5, 0xE3, 0x01, 0x68, +0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0xC4, 0xF2, +0xA8, 0x9D, 0xAD, 0xE3, 0x60, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF2, 0x6C, 0x9B, 0x1F, 0xF7, +0x00, 0x6D, 0x6D, 0xE2, 0x60, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF2, 0x70, 0x9B, 0x6D, 0xE2, +0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF2, +0x60, 0x9B, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF2, 0x64, 0x9B, 0x60, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF2, 0x74, 0x9B, 0x60, 0xDC, +0x60, 0x9C, 0xAC, 0xEB, 0x62, 0x33, 0x4E, 0xEB, +0x25, 0x2B, 0x05, 0x97, 0x30, 0xF0, 0x20, 0x6B, +0xC8, 0xF0, 0x0C, 0x4B, 0xEC, 0x36, 0xCD, 0xE3, +0xC1, 0xAB, 0xFF, 0x6B, 0xCC, 0xEB, 0x30, 0xF0, +0x20, 0x6E, 0x23, 0xF3, 0xC4, 0x9E, 0x60, 0x33, +0x60, 0x33, 0xD9, 0xE2, 0x79, 0xE6, 0xC0, 0xDC, +0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF3, 0xC8, 0x9E, +0xCD, 0xE3, 0x60, 0xDC, 0x60, 0x9C, 0xAC, 0xEB, +0x62, 0x33, 0x6E, 0xEA, 0x03, 0x22, 0x01, 0x68, +0x07, 0x6C, 0x05, 0x10, 0x00, 0x68, 0x05, 0x6C, +0x02, 0x10, 0x00, 0x68, 0x08, 0x6C, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF2, 0x68, 0x9A, 0xFE, 0x6A, +0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x00, 0x18, +0xDD, 0xF4, 0x50, 0x67, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xC9, 0xF6, 0x2C, 0xA0, +0x1C, 0x29, 0x00, 0x6C, 0x00, 0x18, 0xF4, 0xEC, +0x01, 0x72, 0x78, 0x67, 0x04, 0xD3, 0x03, 0x23, +0xC9, 0xF6, 0x2C, 0xC0, 0x0F, 0x10, 0x00, 0x18, +0x5F, 0xED, 0x01, 0x72, 0x07, 0x60, 0x5D, 0x67, +0x67, 0x42, 0x09, 0x4B, 0x40, 0xA3, 0xC9, 0xF6, +0x4C, 0xC0, 0x04, 0x10, 0x01, 0x6A, 0xC9, 0xF6, +0x4C, 0xC0, 0x03, 0x10, 0x09, 0x6C, 0x00, 0x18, +0xDD, 0xF4, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0x40, 0xF1, 0x7D, 0xA0, +0x40, 0xF1, 0x3D, 0xA0, 0x01, 0x6A, 0x6A, 0x33, +0x4C, 0xEB, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x06, 0xD3, 0xCB, 0xF2, 0x1D, 0x4C, +0x01, 0x6E, 0x40, 0xEA, 0x40, 0xF1, 0x7D, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x91, 0xF4, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF2, +0x7D, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x20, 0x2A, +0x01, 0x68, 0x2E, 0xE8, 0x1D, 0x28, 0x10, 0xF0, +0x24, 0x6C, 0xBA, 0xF3, 0x0D, 0x4C, 0x00, 0x18, +0x5E, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF2, +0x58, 0x9A, 0x00, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF2, 0x5C, 0x9A, 0x00, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF6, 0x08, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF6, 0x09, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF6, 0x0A, 0xC2, 0x2C, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF2, 0x7D, 0xA2, +0x01, 0x6A, 0x4C, 0xEB, 0x25, 0x23, 0x24, 0x29, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF2, 0x78, 0x9B, +0x51, 0x6C, 0x00, 0x6D, 0x80, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, +0x24, 0x6C, 0xBA, 0xF3, 0x0D, 0x4C, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF6, 0x28, 0xC3, 0x00, 0xF3, +0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF6, +0x29, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF6, +0x2A, 0xC3, 0xC8, 0x6E, 0x01, 0x6F, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF2, 0x7D, 0xA2, +0x04, 0x6A, 0x6C, 0xEA, 0x0B, 0x2A, 0x06, 0x92, +0x09, 0x22, 0x10, 0xF0, 0x24, 0x6C, 0x5B, 0xF0, +0x0D, 0x4C, 0x00, 0x18, 0x5E, 0xE8, 0x00, 0x18, +0x41, 0xF4, 0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF2, 0x7D, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, +0x15, 0x22, 0x06, 0x93, 0x13, 0x2B, 0x00, 0x18, +0x41, 0xF4, 0x00, 0x18, 0x96, 0xF5, 0x01, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x24, 0x6C, 0x5B, 0xF0, +0x0D, 0x4C, 0x00, 0x6D, 0xC0, 0xF7, 0x10, 0x6E, +0x01, 0x6F, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF2, 0x40, 0x9A, 0x41, 0x6B, 0x60, 0xC2, +0x45, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF2, 0x64, 0x9A, 0xFE, 0x6A, 0xA0, 0xA3, +0xAC, 0xEA, 0x40, 0xC3, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF6, 0x48, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF6, 0x49, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF6, 0x4A, 0xC3, 0xFF, 0x6A, +0x4C, 0xEC, 0x00, 0x18, 0xDD, 0xF4, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF2, 0x7D, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, +0x78, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x69, +0xC8, 0xF0, 0x0C, 0x48, 0x06, 0xD1, 0x40, 0xA8, +0xFF, 0xF7, 0x1F, 0x72, 0x23, 0x60, 0x91, 0x67, +0x00, 0x18, 0xBE, 0xF4, 0x01, 0x72, 0x1B, 0x61, +0x42, 0xA8, 0xFF, 0xF7, 0x1F, 0x72, 0x10, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF6, 0x4B, 0xA3, +0x81, 0x42, 0xC9, 0xF6, 0x8B, 0xC3, 0xFF, 0x4A, +0xFF, 0x6B, 0x6C, 0xEA, 0x02, 0x5A, 0x52, 0x60, +0x04, 0x6C, 0x00, 0x18, 0x00, 0xF6, 0x4E, 0x10, +0x91, 0x67, 0x00, 0x18, 0x28, 0xF5, 0x01, 0x72, +0x02, 0x61, 0x01, 0x6B, 0x06, 0xD3, 0x01, 0x49, +0x08, 0x48, 0xD9, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x98, 0x67, 0xC9, 0xF6, 0x8B, 0xC2, 0x06, 0x10, +0x00, 0x6B, 0x06, 0x6C, 0xC9, 0xF6, 0x6B, 0xC2, +0x00, 0x18, 0xDD, 0xF4, 0x06, 0x92, 0x07, 0x2A, +0x7D, 0x67, 0x87, 0x43, 0x11, 0x4C, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xA4, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF6, 0x6D, 0xA2, 0x01, 0x4B, +0xC9, 0xF6, 0x6D, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF6, 0x6D, 0xA2, 0x02, 0x5B, 0x06, 0x61, +0x00, 0x6B, 0x06, 0x6C, 0xC9, 0xF6, 0x6D, 0xC2, +0x00, 0x18, 0x00, 0xF6, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF2, 0x7D, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF6, +0x4B, 0xA2, 0x17, 0x22, 0x01, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, +0x10, 0xF0, 0x24, 0x6C, 0x5B, 0xF0, 0x0D, 0x4C, +0x00, 0x6D, 0xC0, 0xF7, 0x10, 0x6E, 0x01, 0x6F, +0x40, 0xEA, 0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF6, 0x6B, 0xA2, 0x04, 0x5B, 0xC2, 0x61, +0xBB, 0x17, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x00, +0x7A, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x30, 0xF0, 0x20, 0x6B, 0xAF, 0xF7, 0x6E, 0xAB, 0xFF, 0x6A, 0x8C, 0xEA, 0x69, 0xE2, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF2, 0x6C, 0x9B, 0x40, 0xCB, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF2, 0x70, 0x9B, 0x40, 0xCB, +0xC3, 0xF2, 0x70, 0x9B, 0x40, 0xCB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF2, 0x74, 0x9B, 0x40, 0xCB, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xEB, 0xF1, -0x07, 0x4C, 0x05, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF2, +0x0F, 0x4C, 0x05, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x20, 0x72, 0x2B, 0x60, 0x21, 0x5A, 0x04, 0x60, 0x08, 0x22, 0x10, 0x72, 0x16, 0x60, 0x56, 0x10, 0x30, 0x72, 0x33, 0x60, 0x40, 0x72, 0x41, 0x60, 0x51, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x74, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xA3, 0xF2, 0x98, 0x9C, 0x40, 0x9B, +0x20, 0x6A, 0xC3, 0xF2, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF2, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x87, 0xA2, 0x3F, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x74, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xA3, 0xF1, 0x98, 0x9C, 0x40, 0x9B, +0x2B, 0xF2, 0x8F, 0xA2, 0x3F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF1, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x88, 0xA2, 0x2F, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x74, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xA3, 0xF2, 0x98, 0x9C, 0x40, 0x9B, +0x2B, 0xF2, 0x90, 0xA2, 0x2F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF2, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x89, 0xA2, 0x1F, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x74, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xA3, 0xF1, 0x98, 0x9C, 0x40, 0x9B, +0x2B, 0xF2, 0x91, 0xA2, 0x1F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF1, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x8A, 0xA2, 0x0F, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x74, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xA3, 0xF2, 0x98, 0x9C, 0x40, 0x9B, +0x2B, 0xF2, 0x92, 0xA2, 0x0F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF2, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x8B, 0xA2, 0x80, 0x18, 0x00, 0x00, +0x2B, 0xF2, 0x93, 0xA2, 0x80, 0x18, 0x00, 0x00, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xE0, 0x63, 0x3F, 0x62, 0xFF, 0x6A, 0x01, 0x6B, 0x8C, 0xEA, 0x6B, 0xEB, 0x9D, 0x67, 0x70, 0xC4, @@ -25357,63 +25650,63 @@ u8 array_mp_8822c_fw_nic[] = { 0x21, 0x5C, 0x04, 0x60, 0x08, 0x24, 0x10, 0x74, 0x0C, 0x60, 0x27, 0x10, 0x30, 0x74, 0x15, 0x60, 0x40, 0x74, 0x19, 0x60, 0x22, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x4B, 0xF2, 0xB5, 0xA3, 0x02, 0x6B, -0x17, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x4B, 0xF2, -0xB5, 0xA3, 0x04, 0x6B, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x4B, 0xF2, 0xB5, 0xA3, 0x08, 0x6B, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x4B, 0xF2, -0xB5, 0xA3, 0x10, 0x6B, 0x05, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x4B, 0xF2, 0xB5, 0xA3, 0x20, 0x6B, +0x20, 0x6B, 0x8B, 0xF2, 0xBD, 0xA3, 0x02, 0x6B, +0x17, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF2, +0xBD, 0xA3, 0x04, 0x6B, 0x11, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF2, 0xBD, 0xA3, 0x08, 0x6B, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF2, +0xBD, 0xA3, 0x10, 0x6B, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF2, 0xBD, 0xA3, 0x20, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, 0x02, 0x23, 0x80, 0x18, 0x46, 0x00, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF2, 0x48, 0x98, 0x30, 0xF0, -0x20, 0x6C, 0x4B, 0xF2, 0x15, 0x4C, 0x00, 0x6D, +0x20, 0x6C, 0x8B, 0xF2, 0x1D, 0x4C, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0xEF, 0xF6, 0x0E, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0xAF, 0xF7, 0x0E, 0x4C, 0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0x4B, 0xF2, 0x15, 0x4C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x00, 0xF1, 0x9D, 0xA2, 0x01, 0x6B, +0x20, 0x6C, 0x8B, 0xF2, 0x1D, 0x4C, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x00, 0xF1, 0x9D, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x39, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x69, 0xF0, 0x78, 0xA3, 0x0A, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF2, 0x6C, 0x9B, 0x80, 0xAB, -0xE1, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0xA4, 0xF5, -0x76, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF0, -0x78, 0xA2, 0x00, 0x6C, 0x01, 0x4B, 0x69, 0xF0, -0x78, 0xC2, 0x00, 0x18, 0xDB, 0xE7, 0x10, 0x6C, -0x00, 0x18, 0xDB, 0xE7, 0x20, 0x6C, 0x00, 0x18, -0xDB, 0xE7, 0x30, 0x6C, 0x00, 0x18, 0xDB, 0xE7, -0x00, 0x6C, 0x00, 0x18, 0xE2, 0xE7, 0x10, 0x6C, -0x00, 0x18, 0xE2, 0xE7, 0x20, 0x6C, 0x00, 0x18, -0xE2, 0xE7, 0x30, 0x6C, 0x00, 0x18, 0xE2, 0xE7, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x7C, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF2, 0x80, 0x9C, +0xC9, 0xF0, 0x60, 0xA3, 0x0A, 0x2B, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF2, 0x70, 0x9B, 0x80, 0xAB, +0xE1, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x24, 0xF6, +0x6E, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, +0x60, 0xA2, 0x00, 0x6C, 0x01, 0x4B, 0xC9, 0xF0, +0x60, 0xC2, 0x00, 0x18, 0x80, 0xE9, 0x10, 0x6C, +0x00, 0x18, 0x80, 0xE9, 0x20, 0x6C, 0x00, 0x18, +0x80, 0xE9, 0x30, 0x6C, 0x00, 0x18, 0x80, 0xE9, +0x00, 0x6C, 0x00, 0x18, 0x87, 0xE9, 0x10, 0x6C, +0x00, 0x18, 0x87, 0xE9, 0x20, 0x6C, 0x00, 0x18, +0x87, 0xE9, 0x30, 0x6C, 0x00, 0x18, 0x87, 0xE9, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, 0x84, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x42, 0x10, 0xC0, 0xF0, 0x5E, 0xA2, 0x0A, 0x2A, 0x10, 0x6C, 0x00, 0x18, -0x01, 0xE8, 0x20, 0x6C, 0x00, 0x18, 0x01, 0xE8, -0x30, 0x6C, 0x00, 0x18, 0x01, 0xE8, 0x0F, 0x10, -0x00, 0x6C, 0x00, 0x18, 0x01, 0xE8, 0x10, 0x6C, -0x00, 0x18, 0x01, 0xE8, 0x20, 0x6C, 0x00, 0x18, -0x01, 0xE8, 0x30, 0x6C, 0x00, 0x18, 0x01, 0xE8, -0x00, 0x6C, 0x00, 0x18, 0x08, 0xE8, 0x10, 0x6C, -0x00, 0x18, 0x08, 0xE8, 0x20, 0x6C, 0x00, 0x18, -0x08, 0xE8, 0x30, 0x6C, 0x00, 0x18, 0x08, 0xE8, -0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF0, -0x78, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xEF, 0xF6, 0x4E, 0xAA, 0xA3, 0xF2, -0x6C, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF2, -0x84, 0x9C, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF2, 0x70, 0x9B, 0x40, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x7C, 0x9A, 0x40, 0x9B, +0xA6, 0xE9, 0x20, 0x6C, 0x00, 0x18, 0xA6, 0xE9, +0x30, 0x6C, 0x00, 0x18, 0xA6, 0xE9, 0x0F, 0x10, +0x00, 0x6C, 0x00, 0x18, 0xA6, 0xE9, 0x10, 0x6C, +0x00, 0x18, 0xA6, 0xE9, 0x20, 0x6C, 0x00, 0x18, +0xA6, 0xE9, 0x30, 0x6C, 0x00, 0x18, 0xA6, 0xE9, +0x00, 0x6C, 0x00, 0x18, 0xAD, 0xE9, 0x10, 0x6C, +0x00, 0x18, 0xAD, 0xE9, 0x20, 0x6C, 0x00, 0x18, +0xAD, 0xE9, 0x30, 0x6C, 0x00, 0x18, 0xAD, 0xE9, +0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xAF, 0xF7, 0x4E, 0xAA, 0xC3, 0xF2, +0x70, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, +0x88, 0x9C, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF2, 0x74, 0x9B, 0x40, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF2, 0x60, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, 0x22, 0xF5, -0x67, 0xC2, 0x22, 0xF5, 0x68, 0xC2, 0x22, 0xF5, -0x66, 0xC2, 0x00, 0x6B, 0x22, 0xF5, 0x64, 0xCA, +0x8B, 0xF1, 0x00, 0x4A, 0x00, 0x6B, 0x22, 0xF5, +0x69, 0xC2, 0x22, 0xF5, 0x6A, 0xC2, 0x22, 0xF5, +0x68, 0xC2, 0x00, 0x6B, 0x22, 0xF5, 0x66, 0xCA, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0xD1, 0x06, 0xD0, 0xFF, 0x6A, 0xCC, 0xEA, 0x08, 0xD4, 0x03, 0xD2, 0xE1, 0x9C, 0x00, 0x68, 0x00, 0x69, @@ -25450,94 +25743,100 @@ u8 array_mp_8822c_fw_nic[] = { 0x06, 0x92, 0x04, 0x04, 0x00, 0x6E, 0x05, 0xD2, 0x80, 0x18, 0xD9, 0x00, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x7C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x64, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0xC0, 0xA3, 0x4C, 0xED, -0x15, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF2, -0x8C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0x20, 0xE8, 0x80, 0xC3, 0x0B, 0x25, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x90, 0x9B, +0x15, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, +0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, +0x90, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x64, 0xDA, 0x20, 0xE8, 0x80, 0xC3, 0x0B, 0x25, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x94, 0x9B, 0x80, 0x6D, 0xAB, 0xED, 0x60, 0xA4, 0x4C, 0xEB, 0xAE, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x70, 0x9B, -0x30, 0xF0, 0x20, 0x69, 0x69, 0xF0, 0x5C, 0x99, -0xE0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, -0x60, 0x9B, 0x50, 0x32, 0x6D, 0xE2, 0xE0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x74, 0x9B, +0x30, 0xF0, 0x20, 0x69, 0xC9, 0xF0, 0x48, 0x99, +0xE0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, +0x64, 0x9B, 0x50, 0x32, 0x6D, 0xE2, 0xE0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x68, 0x9B, 0x6D, 0xE2, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0x74, 0x9B, 0x6D, 0xE2, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x78, 0x9B, -0x69, 0xE2, 0xC0, 0xDA, 0x69, 0xF0, 0x1C, 0x99, -0x01, 0x48, 0x00, 0xF1, 0x00, 0x70, 0x69, 0xF0, -0x1C, 0xD9, 0x05, 0x60, 0x00, 0xF2, 0x00, 0x6A, +0xE3, 0xF2, 0x78, 0x9B, 0x6D, 0xE2, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x7C, 0x9B, +0x69, 0xE2, 0xC0, 0xDA, 0xC9, 0xF0, 0x08, 0x99, +0x01, 0x48, 0x00, 0xF1, 0x00, 0x70, 0xC9, 0xF0, +0x08, 0xD9, 0x05, 0x60, 0x00, 0xF2, 0x00, 0x6A, 0x4E, 0xE8, 0x06, 0x20, 0x0B, 0x10, 0x10, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x20, 0x01, 0x06, 0x10, 0x11, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x20, 0x01, -0x69, 0xF0, 0x1C, 0xD9, 0x07, 0x97, 0x06, 0x91, +0xC9, 0xF0, 0x08, 0xD9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF0, 0x64, 0xA2, 0x01, 0x4B, 0xC9, 0xF0, +0x64, 0xC2, 0xC9, 0xF0, 0x84, 0xA2, 0x14, 0x6B, +0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x10, 0xEB, +0x04, 0x2B, 0xC9, 0xF0, 0x64, 0xC2, 0x00, 0x18, +0x84, 0xC9, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x0C, 0x4B, 0x60, 0x9B, 0xFF, 0x69, 0x40, 0xA3, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, 0x4D, 0x60, 0x40, 0xA3, 0x7F, 0x68, 0x4C, 0xE8, 0x40, 0x6A, 0x4D, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF2, 0x5C, 0x9A, 0x2C, 0xE8, 0x00, 0xC3, -0xA0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x40, 0x9A, 0x2C, 0xED, 0x05, 0x75, 0x80, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x50, 0x9A, +0x03, 0xF3, 0x40, 0x9A, 0x2C, 0xE8, 0x00, 0xC3, +0xA0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, +0x44, 0x9A, 0x2C, 0xED, 0x05, 0x75, 0x80, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x54, 0x9A, 0x2C, 0xEC, 0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x54, 0x9A, 0x2C, 0xEB, 0x40, 0xA2, +0x63, 0xF1, 0x58, 0x9A, 0x2C, 0xEB, 0x40, 0xA2, 0x2C, 0xEA, 0x09, 0x61, 0xBD, 0x67, 0x90, 0xC5, 0x71, 0xC5, 0x52, 0xC5, 0x04, 0x04, 0x80, 0x18, -0x28, 0x5F, 0x1A, 0x2A, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF2, 0x08, 0x4B, 0x60, 0x9B, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF2, 0x08, 0x4C, +0x69, 0x60, 0x1A, 0x2A, 0x10, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF2, 0x0C, 0x4B, 0x60, 0x9B, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, 0x0C, 0x4C, 0x40, 0xA3, 0x80, 0x9C, 0x3F, 0x6B, 0x2C, 0xEA, 0x6D, 0xEA, 0x2C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF2, 0x68, 0x9A, 0xBF, 0x6A, +0x20, 0x6A, 0xE3, 0xF2, 0x6C, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x0A, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x40, 0x6A, 0xC3, 0xF2, -0x08, 0x4D, 0x4B, 0xEA, 0xA0, 0x9D, 0x0D, 0xEA, +0x30, 0xF0, 0x20, 0x6D, 0x40, 0x6A, 0xE3, 0xF2, +0x0C, 0x4D, 0x4B, 0xEA, 0xA0, 0x9D, 0x0D, 0xEA, 0x2C, 0xEA, 0x40, 0xC5, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x00, 0x6A, 0x7D, 0x67, 0x04, 0xD2, 0x05, 0xD2, 0x4C, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xFF, 0xF7, -0x1F, 0x6F, 0x8C, 0xEF, 0x47, 0xF4, 0x8E, 0xA2, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xFF, 0xF7, +0x1F, 0x6F, 0x8C, 0xEF, 0xC7, 0xF4, 0x8A, 0xA2, 0x0F, 0x6B, 0x04, 0x05, 0x8C, 0xEB, 0x9D, 0x67, -0x70, 0xC4, 0x47, 0xF4, 0x70, 0xA2, 0x0A, 0x6E, -0x72, 0xC4, 0x47, 0xF4, 0x71, 0xA2, 0x73, 0xC4, -0x07, 0xF5, 0x6C, 0xA2, 0x07, 0xF5, 0x4D, 0xA2, +0x70, 0xC4, 0xC7, 0xF4, 0x6C, 0xA2, 0x0A, 0x6E, +0x72, 0xC4, 0xC7, 0xF4, 0x6D, 0xA2, 0x73, 0xC4, +0x87, 0xF5, 0x68, 0xA2, 0x87, 0xF5, 0x49, 0xA2, 0x76, 0xC4, 0x57, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x50, 0x9A, 0x25, 0x6C, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x49, -0x43, 0xF3, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xA0, 0x9B, 0xE9, 0xF5, 0xCE, 0xA9, 0xA3, 0xF0, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x49, +0x83, 0xF3, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xA0, 0x9B, 0x69, 0xF6, 0xCE, 0xA9, 0xA3, 0xF0, 0x10, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF3, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xA0, 0x9B, 0xE9, 0xF5, 0xD0, 0xA9, 0xC3, 0xF0, +0x83, 0xF3, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xA0, 0x9B, 0x69, 0xF6, 0xD0, 0xA9, 0xC3, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF3, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xA0, 0x9B, 0xE9, 0xF5, 0xD2, 0xA9, 0xA8, 0xF1, +0x83, 0xF3, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xA0, 0x9B, 0x69, 0xF6, 0xD2, 0xA9, 0xA8, 0xF1, 0x10, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF3, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xE9, 0xF5, 0xD4, 0xA9, 0xA0, 0x9B, 0xC8, 0xF1, +0x83, 0xF3, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0x69, 0xF6, 0xD4, 0xA9, 0xA0, 0x9B, 0xC8, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6A, 0x0B, 0xD7, 0xE0, 0xAE, 0x1F, 0xF7, 0x00, 0x6B, 0xEC, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x09, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xAE, 0x43, 0xF1, -0x64, 0x9B, 0x6D, 0xE7, 0xE0, 0xA4, 0xE0, 0xC3, -0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0x68, 0x9B, 0x7D, 0xE7, 0x60, 0xA4, 0x60, 0xC7, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xAE, 0x63, 0xF1, +0x68, 0x9B, 0x6D, 0xE7, 0xE0, 0xA4, 0xE0, 0xC3, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, +0x6C, 0x9B, 0x7D, 0xE7, 0x60, 0xA4, 0x60, 0xC7, 0x01, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x72, 0x02, 0x4E, 0x01, 0x4C, 0xE1, 0x61, 0x25, 0x67, 0x00, 0x68, 0x0B, 0x92, 0xC0, 0x99, 0x01, 0x6D, @@ -25546,27 +25845,27 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xEA, 0x16, 0x70, 0x04, 0x49, 0xF1, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0xD1, -0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE9, 0xF5, 0x7A, 0xA2, 0x79, 0x2B, +0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x69, 0xF6, 0x7A, 0xA2, 0x79, 0x2B, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6D, 0x30, 0xF0, -0x21, 0x6C, 0x09, 0xF6, 0x69, 0xC2, 0x09, 0xF6, -0x6A, 0xC2, 0x75, 0xF0, 0x00, 0x4D, 0x74, 0xF7, -0x08, 0x4C, 0x00, 0x6A, 0x00, 0x6B, 0x60, 0xDD, -0x30, 0xF0, 0x20, 0x6E, 0xE1, 0xF1, 0x68, 0x42, -0x2B, 0xF1, 0x18, 0x4E, 0x6C, 0x33, 0x6D, 0xE6, -0x04, 0xD3, 0xC2, 0xF3, 0x6E, 0x42, 0x68, 0x33, +0x21, 0x6C, 0x89, 0xF6, 0x69, 0xC2, 0x89, 0xF6, +0x6A, 0xC2, 0x35, 0xF1, 0x08, 0x4D, 0x35, 0xF0, +0x10, 0x4C, 0x00, 0x6A, 0x00, 0x6B, 0x60, 0xDD, +0x30, 0xF0, 0x20, 0x6E, 0xF1, 0xF1, 0x68, 0x42, +0x8B, 0xF1, 0x00, 0x4E, 0x6C, 0x33, 0x6D, 0xE6, +0x04, 0xD3, 0xE2, 0xF3, 0x6E, 0x42, 0x68, 0x33, 0x6D, 0xE6, 0x03, 0xD3, 0x06, 0x6B, 0x78, 0xEA, -0x01, 0xD4, 0x12, 0xEB, 0x6D, 0xE6, 0xAA, 0xF1, +0x01, 0xD4, 0x12, 0xEB, 0x6D, 0xE6, 0x2A, 0xF2, 0x01, 0x4B, 0x00, 0x6E, 0x04, 0x90, 0x00, 0x6F, 0xE0, 0xD8, 0x03, 0x90, 0xE0, 0xC8, 0x44, 0x30, -0x01, 0xE6, 0x84, 0xF7, 0x10, 0x48, 0x30, 0xF0, -0x20, 0x6F, 0x04, 0x30, 0x2B, 0xF1, 0x18, 0x4F, +0x01, 0xE6, 0xC4, 0xF7, 0x10, 0x48, 0x30, 0xF0, +0x20, 0x6F, 0x04, 0x30, 0x8B, 0xF1, 0x00, 0x4F, 0x1D, 0xE7, 0x05, 0xD7, 0x01, 0x97, 0x00, 0x68, 0x00, 0xD0, 0x02, 0xD7, 0x05, 0x90, 0x01, 0x6F, 0x44, 0x31, 0xE0, 0xC0, 0x00, 0x97, 0xC5, 0xE1, -0x24, 0x31, 0x25, 0xE7, 0xE0, 0xF4, 0x02, 0x41, -0x30, 0xF0, 0x20, 0x6F, 0xE0, 0xF4, 0x0A, 0x49, -0x2B, 0xF1, 0x18, 0x4F, 0x10, 0x30, 0x30, 0x31, +0x24, 0x31, 0x25, 0xE7, 0xE0, 0xF4, 0x0A, 0x41, +0x30, 0xF0, 0x20, 0x6F, 0xE0, 0xF4, 0x12, 0x49, +0x8B, 0xF1, 0x00, 0x4F, 0x10, 0x30, 0x30, 0x31, 0x01, 0xE7, 0x25, 0xE7, 0x06, 0xD2, 0x02, 0x92, 0x00, 0x6F, 0xE0, 0xC8, 0x02, 0x48, 0x4A, 0xE8, 0xE0, 0xC9, 0x02, 0x49, 0xF8, 0x61, 0x00, 0x90, @@ -25580,39 +25879,39 @@ u8 array_mp_8822c_fw_nic[] = { 0x01, 0x4A, 0x02, 0x72, 0x04, 0x4D, 0x40, 0x4C, 0x95, 0x61, 0x09, 0x91, 0x08, 0x90, 0x05, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, -0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, -0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x9F, 0x58, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xE8, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, 0x08, 0x4C, +0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x05, 0x59, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF4, 0x00, 0x6C, -0x2B, 0xF1, 0x18, 0x4B, 0x4C, 0xEC, 0x29, 0xF7, +0x8B, 0xF1, 0x00, 0x4B, 0x4C, 0xEC, 0xA9, 0xF7, 0x50, 0xDB, 0x82, 0x32, 0x4A, 0x32, 0x02, 0x72, 0x0A, 0x60, 0x03, 0x6C, 0x4E, 0xEC, 0x04, 0x24, 0x01, 0x72, 0x02, 0x6A, 0x05, 0x60, 0x06, 0x10, -0xE9, 0xF5, 0x99, 0xC3, 0x03, 0x10, 0x01, 0x6A, -0xE9, 0xF5, 0x59, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0x7C, 0x9B, 0x29, 0xF7, 0x90, 0x9A, -0x8C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0xE9, 0xF5, +0x69, 0xF6, 0x99, 0xC3, 0x03, 0x10, 0x01, 0x6A, +0x69, 0xF6, 0x59, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x60, 0x9B, 0xA9, 0xF7, 0x90, 0x9A, +0x8C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x69, 0xF6, 0x78, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x05, 0xD5, 0x04, 0xD4, 0x05, 0x92, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0xC0, 0xA2, 0x30, 0xF0, 0x21, 0x69, -0x12, 0xF5, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x9F, 0x58, 0x04, 0x93, 0x91, 0x67, +0xD2, 0xF5, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x05, 0x59, 0x04, 0x93, 0x91, 0x67, 0x01, 0x6D, 0x40, 0xDB, 0x05, 0x92, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, 0xE0, 0x9B, -0xC0, 0xA2, 0x01, 0x48, 0x80, 0x18, 0x9F, 0x58, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, +0xC0, 0xA2, 0x01, 0x48, 0x80, 0x18, 0x05, 0x59, 0x04, 0x93, 0x41, 0xDB, 0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x08, 0x4B, 0x03, 0x70, 0x01, 0x4A, 0x05, 0xD2, 0x04, 0xD3, 0xD8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0xAC, 0xE9, 0x00, 0x68, 0x85, 0xF5, -0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0x0D, 0x28, +0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0x1C, 0x28, 0x55, 0x72, 0x0C, 0x61, 0x00, 0x6A, 0x15, 0x21, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, 0xB0, 0x9A, -0x03, 0xF3, 0x08, 0x6C, 0x80, 0x18, 0x0D, 0x28, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0xB4, 0x9A, +0x03, 0xF3, 0x08, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, @@ -25632,9 +25931,9 @@ u8 array_mp_8822c_fw_nic[] = { 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x05, 0x94, 0x01, 0x6D, 0x80, 0x18, -0x5A, 0x02, 0xD2, 0x10, 0x02, 0x72, 0x01, 0x6A, +0x66, 0x02, 0xD2, 0x10, 0x02, 0x72, 0x01, 0x6A, 0xC0, 0xF0, 0x0E, 0x61, 0x30, 0xF0, 0x21, 0x6A, -0x34, 0xF7, 0x56, 0xA2, 0x00, 0x68, 0x09, 0x72, +0xF4, 0xF7, 0x5E, 0xA2, 0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, 0x12, 0x72, 0x01, 0x68, 0x09, 0x60, 0x1B, 0x72, 0x02, 0x68, 0x06, 0x60, 0x24, 0x68, 0x4E, 0xE8, 0x01, 0x58, 0x18, 0x67, 0x04, 0x6A, @@ -25643,8 +25942,8 @@ u8 array_mp_8822c_fw_nic[] = { 0x08, 0x6A, 0x03, 0xF3, 0x00, 0x6C, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0x67, 0x07, 0xD3, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x2B, 0xF1, 0x18, 0x4C, 0x04, 0xD4, 0x04, 0x93, -0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xE9, 0xF5, +0x8B, 0xF1, 0x00, 0x4C, 0x04, 0xD4, 0x04, 0x93, +0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0x69, 0xF6, 0xDE, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x05, 0x92, 0x01, 0x6C, 0x01, 0x6D, 0x04, 0x4A, 0x84, 0xEA, 0x00, 0xF3, 0x08, 0x6A, @@ -25654,31 +25953,31 @@ u8 array_mp_8822c_fw_nic[] = { 0x01, 0x6D, 0xAB, 0xED, 0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x02, 0x6C, 0x40, 0xEA, -0x05, 0x94, 0x01, 0x6D, 0x80, 0x18, 0x5A, 0x02, +0x05, 0x94, 0x01, 0x6D, 0x80, 0x18, 0x66, 0x02, 0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, 0x00, 0x4A, 0x41, 0xE0, 0x40, 0xA0, -0x04, 0x93, 0xE9, 0xF5, 0x5E, 0xC3, 0x6B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0x95, 0x63, 0xF3, -0xE4, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, -0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, 0x9F, 0x58, +0x04, 0x93, 0x69, 0xF6, 0x5E, 0xC3, 0x6B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x05, 0x95, 0x83, 0xF3, +0xE8, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, +0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, 0x05, 0x59, 0x05, 0xD2, 0x07, 0x96, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x05, 0x94, 0xE3, 0xF7, 0x00, 0x6A, 0x04, 0x93, 0x8C, 0xEA, 0x56, 0x34, 0x96, 0x32, -0x09, 0xF6, 0x40, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, +0x89, 0xF6, 0x40, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, 0xFF, 0x6B, 0x0B, 0x60, 0x03, 0x70, 0x03, 0x60, 0x01, 0x48, 0x6C, 0xE8, 0x49, 0x10, -0x04, 0x94, 0x01, 0x6B, 0x03, 0x68, 0xAA, 0xF1, +0x04, 0x94, 0x01, 0x6B, 0x03, 0x68, 0x2A, 0xF2, 0x75, 0xC4, 0x43, 0x10, 0x0A, 0x5A, 0x0B, 0x61, 0x04, 0x20, 0xFF, 0x48, 0x6C, 0xE8, 0x01, 0x6B, -0x0B, 0x10, 0x04, 0x94, 0x01, 0x6B, 0xAA, 0xF1, +0x0B, 0x10, 0x04, 0x94, 0x01, 0x6B, 0x2A, 0xF2, 0x75, 0xC4, 0x01, 0x6B, 0x09, 0x10, 0x04, 0x94, -0x00, 0x6B, 0xAA, 0xF1, 0x75, 0xC4, 0x00, 0x6B, +0x00, 0x6B, 0x2A, 0xF2, 0x75, 0xC4, 0x00, 0x6B, 0x03, 0x20, 0x04, 0x58, 0x01, 0x61, 0x03, 0x68, 0x30, 0xF0, 0x20, 0x6D, 0x02, 0xF3, 0x00, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, 0x30, 0xF0, 0x20, 0x6C, -0x2B, 0xF1, 0x18, 0x4C, 0xE9, 0xF5, 0xBE, 0xC4, -0x0F, 0x2B, 0xE9, 0xF5, 0xDE, 0xA4, 0x30, 0xF0, +0x8B, 0xF1, 0x00, 0x4C, 0x69, 0xF6, 0xBE, 0xC4, +0x0F, 0x2B, 0x69, 0xF6, 0xDE, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x64, 0x9B, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x00, 0x6A, 0x0C, 0x10, @@ -25691,19 +25990,19 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x6B, 0x0B, 0xD7, 0xE0, 0xAE, 0x1F, 0xF7, 0x00, 0x6A, 0xEC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xAE, 0x43, 0xF1, 0x44, 0x9A, 0x49, 0xE7, +0xE0, 0xAE, 0x63, 0xF1, 0x48, 0x9A, 0x49, 0xE7, 0xE0, 0xA2, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x48, 0x9A, 0x5D, 0xE7, 0xE0, 0xA7, +0x63, 0xF1, 0x4C, 0x9A, 0x5D, 0xE7, 0xE0, 0xA7, 0xFF, 0x6A, 0xEC, 0xEA, 0x7D, 0xE4, 0x01, 0x4B, 0x03, 0x73, 0x40, 0xC7, 0x02, 0x4E, 0xE2, 0x61, 0x25, 0x67, 0x00, 0x68, 0x0B, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0x09, 0xE3, 0x80, 0xAA, 0x02, 0x48, -0x80, 0x18, 0x0D, 0x28, 0x16, 0x70, 0x40, 0xD9, +0x80, 0x18, 0x1C, 0x28, 0x16, 0x70, 0x40, 0xD9, 0x04, 0x49, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x69, 0x63, 0xF3, -0x60, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x69, 0x83, 0xF3, +0x64, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, 0xC0, 0xF3, 0x44, 0x98, 0xAC, 0xE9, 0x24, 0x36, 0x01, 0x6D, 0x04, 0xD4, 0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, @@ -25712,24 +26011,24 @@ u8 array_mp_8822c_fw_nic[] = { 0x07, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x63, 0xF3, -0xA8, 0x9B, 0xC3, 0xF3, 0x14, 0x6C, 0x10, 0x6E, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF3, +0xAC, 0x9B, 0xC3, 0xF3, 0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, 0x04, 0x94, 0x24, 0x31, 0x30, 0xF0, -0x20, 0x6A, 0x25, 0xE4, 0xE0, 0xF4, 0x62, 0x41, -0xE0, 0xF4, 0x0A, 0x49, 0x2B, 0xF1, 0x18, 0x4A, +0x20, 0x6A, 0x25, 0xE4, 0xE0, 0xF4, 0x6A, 0x41, +0xE0, 0xF4, 0x12, 0x49, 0x8B, 0xF1, 0x00, 0x4A, 0x70, 0x33, 0x30, 0x31, 0x25, 0xE2, 0x6D, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD1, 0x63, 0xF3, -0x2C, 0x9A, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD1, 0x83, 0xF3, +0x30, 0x9A, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, -0x80, 0x18, 0x0D, 0x28, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x70, 0x9B, 0x05, 0x94, 0x04, 0x49, +0x80, 0x18, 0x1C, 0x28, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x74, 0x9B, 0x05, 0x94, 0x04, 0x49, 0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x60, 0xCC, 0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, 0x02, 0x4C, 0x05, 0xD4, 0x60, 0xCA, 0x02, 0x4A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x54, 0x9A, 0x2E, 0xEA, 0xD7, 0x2A, 0xC0, 0xF3, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0x58, 0x9A, 0x2E, 0xEA, 0xD7, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, @@ -25739,23 +26038,23 @@ u8 array_mp_8822c_fw_nic[] = { 0xFF, 0x6A, 0x4C, 0xEC, 0x05, 0x67, 0x01, 0x74, 0x4C, 0xE8, 0x80, 0xF0, 0x19, 0x60, 0x04, 0x24, 0x04, 0x5C, 0xA0, 0xF0, 0x10, 0x60, 0xAA, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x29, 0xF7, 0x68, 0x9A, 0x30, 0xF0, 0x21, 0x6C, -0x30, 0xF0, 0x21, 0x6D, 0x29, 0xF7, 0x6C, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA9, 0xF7, 0x68, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0x30, 0xF0, 0x21, 0x6D, 0xA9, 0xF7, 0x6C, 0xDA, 0x30, 0xF0, 0x21, 0x6B, 0x30, 0xF0, 0x21, 0x6A, -0x75, 0xF0, 0x18, 0x4C, 0x75, 0xF0, 0x10, 0x4B, -0x75, 0xF0, 0x0C, 0x4A, 0x74, 0xF7, 0x08, 0x4D, -0x00, 0x69, 0xC0, 0x9C, 0x94, 0xF7, 0x00, 0x41, +0x55, 0xF1, 0x00, 0x4C, 0x35, 0xF1, 0x18, 0x4B, +0x35, 0xF1, 0x14, 0x4A, 0x35, 0xF0, 0x10, 0x4D, +0x00, 0x69, 0xC0, 0x9C, 0xD4, 0xF7, 0x00, 0x41, 0x04, 0x30, 0xC2, 0xDC, 0xC0, 0xAB, 0x05, 0xD5, 0xE5, 0x67, 0xC2, 0xCB, 0xC0, 0xA2, 0xC2, 0xC2, -0x30, 0xF0, 0x20, 0x6E, 0x2B, 0xF1, 0x18, 0x4E, +0x30, 0xF0, 0x20, 0x6E, 0x8B, 0xF1, 0x00, 0x4E, 0x01, 0xE6, 0x00, 0x6E, 0x04, 0xD6, 0xA0, 0xA0, 0x24, 0x36, 0xA4, 0xC0, 0x04, 0x95, 0xD9, 0xE5, -0xA6, 0x67, 0xE0, 0xF4, 0x02, 0x4D, 0xB0, 0x35, +0xA6, 0x67, 0xE0, 0xF4, 0x0A, 0x4D, 0xB0, 0x35, 0x06, 0xD5, 0x07, 0xD6, 0x30, 0xF0, 0x20, 0x6E, -0xA6, 0x67, 0x06, 0x96, 0x2B, 0xF1, 0x18, 0x4D, +0xA6, 0x67, 0x06, 0x96, 0x8B, 0xF1, 0x00, 0x4D, 0x1D, 0x65, 0xD5, 0xE5, 0x07, 0x96, 0x06, 0xD5, -0xB8, 0x67, 0xE0, 0xF4, 0x0A, 0x4E, 0xD0, 0x36, +0xB8, 0x67, 0xE0, 0xF4, 0x12, 0x4E, 0xD0, 0x36, 0xD9, 0xE5, 0x06, 0x95, 0x07, 0xD2, 0x40, 0xAD, 0x40, 0xF0, 0x40, 0xCD, 0x40, 0xAE, 0x02, 0x4D, 0x40, 0xF0, 0x40, 0xCE, 0x05, 0x92, 0x02, 0x4E, @@ -25764,46 +26063,46 @@ u8 array_mp_8822c_fw_nic[] = { 0x04, 0xD5, 0x01, 0x48, 0x05, 0xD6, 0xCF, 0x61, 0x01, 0x49, 0x02, 0x6E, 0xA7, 0x67, 0x2E, 0xEE, 0x04, 0x4C, 0x02, 0x4B, 0x01, 0x4A, 0x20, 0x4D, -0xB4, 0x2E, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x00, 0x6B, 0xAA, 0xF1, 0x6D, 0xC2, -0xAA, 0xF1, 0x6E, 0xC2, 0xAA, 0xF1, 0x61, 0xC2, -0xAA, 0xF1, 0x62, 0xC2, 0xAA, 0xF1, 0x63, 0xC2, -0x29, 0xF7, 0x75, 0xC2, 0xAA, 0xF1, 0x6F, 0xC2, -0xAA, 0xF1, 0x70, 0xC2, 0xAA, 0xF1, 0x64, 0xC2, -0xAA, 0xF1, 0x65, 0xC2, 0xAA, 0xF1, 0x66, 0xC2, -0x29, 0xF7, 0x70, 0x9A, 0x01, 0x6C, 0x29, 0xF7, -0xD4, 0xC2, 0x29, 0xF7, 0xD8, 0xCA, 0x29, 0xF7, -0x80, 0xC2, 0x29, 0xF7, 0x81, 0xC2, 0x29, 0xF7, -0xDA, 0xCA, 0x29, 0xF7, 0x82, 0xC2, 0x29, 0xF7, -0x83, 0xC2, 0x29, 0xF7, 0x68, 0xDA, 0x1B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, -0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, 0x12, 0xF5, -0x08, 0x4C, 0x58, 0x6E, 0x80, 0x18, 0x9F, 0x58, -0xC2, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6B, -0x08, 0x30, 0x2B, 0xF1, 0x18, 0x4B, 0x6D, 0xE0, +0xB4, 0x2E, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x00, 0x6B, 0x2A, 0xF2, 0x6D, 0xC2, +0x2A, 0xF2, 0x6E, 0xC2, 0x2A, 0xF2, 0x61, 0xC2, +0x2A, 0xF2, 0x62, 0xC2, 0x2A, 0xF2, 0x63, 0xC2, +0xA9, 0xF7, 0x75, 0xC2, 0x2A, 0xF2, 0x6F, 0xC2, +0x2A, 0xF2, 0x70, 0xC2, 0x2A, 0xF2, 0x64, 0xC2, +0x2A, 0xF2, 0x65, 0xC2, 0x2A, 0xF2, 0x66, 0xC2, +0xA9, 0xF7, 0x70, 0x9A, 0x01, 0x6C, 0xA9, 0xF7, +0xD4, 0xC2, 0xA9, 0xF7, 0xD8, 0xCA, 0xA9, 0xF7, +0x80, 0xC2, 0xA9, 0xF7, 0x81, 0xC2, 0xA9, 0xF7, +0xDA, 0xCA, 0xA9, 0xF7, 0x82, 0xC2, 0xA9, 0xF7, +0x83, 0xC2, 0xA9, 0xF7, 0x68, 0xDA, 0x1B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xE8, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, 0xD2, 0xF5, +0x08, 0x4C, 0x58, 0x6E, 0x80, 0x18, 0x05, 0x59, +0xE2, 0xF3, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0x30, 0x8B, 0xF1, 0x00, 0x4B, 0x6D, 0xE0, 0x40, 0xDB, 0x05, 0x10, 0xFE, 0x4C, 0x4C, 0xEC, -0xB0, 0x67, 0x80, 0x18, 0x16, 0x03, 0x0B, 0x97, +0xB0, 0x67, 0x80, 0x18, 0x22, 0x03, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x21, 0x6A, -0x34, 0xF7, 0x5D, 0xA2, 0x18, 0x2A, 0x01, 0x6C, -0x00, 0x6D, 0x80, 0x18, 0x5A, 0x03, 0x02, 0x6C, -0x00, 0x6D, 0x80, 0x18, 0x5A, 0x03, 0x03, 0x6C, -0x00, 0x6D, 0x80, 0x18, 0x5A, 0x03, 0x01, 0x6C, -0xA4, 0x67, 0x80, 0x18, 0x5A, 0x03, 0x02, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x5A, 0x03, 0x03, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x5A, 0x03, 0x05, 0x97, +0x15, 0xF0, 0x45, 0xA2, 0x18, 0x2A, 0x01, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0x66, 0x03, 0x02, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0x66, 0x03, 0x03, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0x66, 0x03, 0x01, 0x6C, +0xA4, 0x67, 0x80, 0x18, 0x66, 0x03, 0x02, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0x66, 0x03, 0x03, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0x66, 0x03, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x21, 0x6A, -0xB4, 0xF6, 0x4C, 0xA2, 0xA0, 0xF3, 0x17, 0x22, +0x74, 0xF7, 0x54, 0xA2, 0xA0, 0xF3, 0x17, 0x22, 0x01, 0x69, 0x2B, 0xE9, 0xB1, 0x67, 0x63, 0xF0, -0x00, 0x6C, 0x80, 0x18, 0x0D, 0x28, 0xB1, 0x67, +0x00, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0xB1, 0x67, 0x68, 0xF1, 0x00, 0x6C, 0x07, 0xD2, 0x80, 0x18, -0x0D, 0x28, 0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, +0x1C, 0x28, 0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, 0x30, 0xF0, 0x20, 0x68, 0x06, 0xD2, 0x80, 0x18, -0x0D, 0x28, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0xD8, 0x9B, 0x05, 0xD2, 0xC0, 0xF3, 0x44, 0x98, +0x1C, 0x28, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, +0xDC, 0x9B, 0x05, 0xD2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x3C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0xC3, 0xF0, 0x0C, 0x6C, @@ -25811,10 +26110,10 @@ u8 array_mp_8822c_fw_nic[] = { 0xB1, 0x67, 0xA8, 0xF1, 0x10, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0xC8, 0xF1, 0x0C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x38, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0x00, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0xA3, 0xF3, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x00, 0x6C, 0x3C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, 0xA3, 0xF0, 0x14, 0x6C, @@ -25822,7 +26121,7 @@ u8 array_mp_8822c_fw_nic[] = { 0xC5, 0x67, 0xC3, 0xF0, 0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x28, 0xF1, 0x10, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0x00, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0xA3, 0xF3, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x00, 0x6C, 0x3C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, 0xA8, 0xF1, 0x14, 0x6C, @@ -25843,7 +26142,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x01, 0x6D, 0xC5, 0x67, 0xA3, 0xF0, 0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, 0xC3, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x24, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x28, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x18, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x14, 0x6C, 0xB1, 0x67, @@ -25867,39 +26166,39 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x14, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0xFF, 0x6A, 0x01, 0x48, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xA8, 0x9A, -0x05, 0xF0, 0x08, 0x6C, 0x80, 0x18, 0x0D, 0x28, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0xAC, 0x9A, +0x05, 0xF0, 0x08, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0xFF, 0xF7, 0x1F, 0x72, 0x12, 0x60, 0xFF, 0x70, 0xF0, 0x61, 0x0F, 0x10, 0xFF, 0x6A, 0x01, 0x48, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0xA8, 0x9A, 0x25, 0xF0, 0x14, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0xFF, 0xF7, 0x1F, 0x72, 0x03, 0x61, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, +0xAC, 0x9A, 0x25, 0xF0, 0x14, 0x6C, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0xF7, 0x1F, 0x72, 0x03, 0x61, 0x14, 0x10, 0x00, 0x68, 0xEF, 0x17, 0xFF, 0x70, 0xED, 0x61, 0x0F, 0x10, 0xFF, 0x6A, 0x01, 0x48, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0xA8, 0x9A, 0x08, 0xF5, 0x08, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0xFF, 0xF7, 0x1F, 0x72, 0x03, 0x61, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, +0xAC, 0x9A, 0x08, 0xF5, 0x08, 0x6C, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0xF7, 0x1F, 0x72, 0x03, 0x61, 0x14, 0x10, 0x00, 0x68, 0xEF, 0x17, 0xFF, 0x70, 0xED, 0x61, 0x0F, 0x10, 0xFF, 0x6A, 0x01, 0x48, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0xA8, 0x9A, 0x28, 0xF5, 0x14, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0xFF, 0xF7, 0x1F, 0x72, 0x03, 0x61, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, +0xAC, 0x9A, 0x28, 0xF5, 0x14, 0x6C, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0xF7, 0x1F, 0x72, 0x03, 0x61, 0x04, 0x10, 0x00, 0x68, 0xEF, 0x17, 0xFF, 0x70, 0xED, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x83, 0xF3, 0x04, 0x4B, 0xC0, 0xF3, +0x20, 0x68, 0xA3, 0xF3, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0xA3, 0xF0, 0x18, 0x69, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0x04, 0x4B, 0xC0, 0xF3, +0x20, 0x6B, 0xA3, 0xF3, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x02, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0x05, 0xF0, 0x08, 0x6C, -0xFF, 0x6D, 0x80, 0x18, 0x0D, 0x28, 0x86, 0x72, +0xFF, 0x6D, 0x80, 0x18, 0x1C, 0x28, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, 0x21, 0x69, 0x00, 0x6A, -0xB4, 0xF6, 0x0E, 0x49, 0x04, 0xD2, 0x1E, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x04, 0x4B, +0x74, 0xF7, 0x16, 0x49, 0x04, 0xD2, 0x1E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x08, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x48, 0xA0, 0x9B, 0x4C, 0xE8, 0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF0, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x04, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, 0xA3, 0xF0, 0x18, 0x6C, 0x02, 0x6E, 0x40, 0xEA, 0x64, 0x70, 0xD5, 0x61, 0xDB, 0x17, 0x30, 0xF0, 0x20, 0x68, @@ -25907,43 +26206,43 @@ u8 array_mp_8822c_fw_nic[] = { 0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xA9, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x14, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0xAC, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0xA3, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, 0xA3, 0xF0, 0x10, 0x6C, 0x02, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x14, 0x6C, 0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xD8, 0x61, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x14, 0x6C, 0x04, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, -0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0xC3, 0xF0, 0x14, 0x69, 0x91, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, -0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x02, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0x25, 0xF0, 0x14, 0x6C, 0xFF, 0x6D, 0x80, 0x18, -0x0D, 0x28, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, -0x21, 0x69, 0x00, 0x6A, 0xD4, 0xF6, 0x0C, 0x49, +0x1C, 0x28, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, +0x21, 0x69, 0x00, 0x6A, 0x94, 0xF7, 0x14, 0x49, 0x04, 0xD2, 0x1E, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF3, 0x04, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, +0xA3, 0xF3, 0x08, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x48, 0xA0, 0x9B, 0x4C, 0xE8, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF0, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF3, 0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x99, +0xA3, 0xF3, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, 0xC3, 0xF0, 0x14, 0x6C, 0x02, 0x6E, 0x40, 0xEA, 0x64, 0x70, 0xD5, 0x61, 0xDB, 0x17, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x10, 0x6C, 0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xA9, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x10, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, -0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, 0xC3, 0xF0, 0x0C, 0x6C, 0x02, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x10, 0x6C, 0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xD8, 0x61, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x10, 0x6C, 0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF3, 0x24, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0xA3, 0xF3, 0x28, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x18, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x14, 0x6C, 0xB1, 0x67, 0x00, 0x6E, @@ -25955,14 +26254,14 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x18, 0x6C, 0xB1, 0x67, 0x02, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0x08, 0xF5, 0x08, 0x6C, -0xFF, 0x6D, 0x80, 0x18, 0x0D, 0x28, 0x86, 0x72, +0xFF, 0x6D, 0x80, 0x18, 0x1C, 0x28, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, 0x21, 0x69, 0x00, 0x6B, -0xF4, 0xF6, 0x0A, 0x49, 0x04, 0xD3, 0x1E, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x04, 0x4B, +0xB4, 0xF7, 0x12, 0x49, 0x04, 0xD3, 0x1E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x08, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x48, 0xA0, 0x9B, 0x4C, 0xE8, 0xC0, 0xF3, 0x44, 0x99, 0xA8, 0xF1, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x04, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, 0xA8, 0xF1, 0x18, 0x6C, 0x02, 0x6E, 0x40, 0xEA, 0x64, 0x70, 0xD5, 0x61, 0xDB, 0x17, 0x30, 0xF0, 0x20, 0x68, @@ -25970,43 +26269,43 @@ u8 array_mp_8822c_fw_nic[] = { 0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xA9, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x14, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0xAC, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0xA3, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, 0xA8, 0xF1, 0x10, 0x6C, 0x02, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x14, 0x6C, 0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xD8, 0x61, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x14, 0x6C, 0x04, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, -0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0xC8, 0xF1, 0x14, 0x69, 0x91, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, -0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x02, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0x28, 0xF5, 0x14, 0x6C, 0xFF, 0x6D, 0x80, 0x18, -0x0D, 0x28, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, -0x21, 0x69, 0x00, 0x6A, 0x14, 0xF7, 0x08, 0x49, +0x1C, 0x28, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, +0x21, 0x69, 0x00, 0x6A, 0xD4, 0xF7, 0x10, 0x49, 0x04, 0xD2, 0x1E, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF3, 0x04, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, +0xA3, 0xF3, 0x08, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x48, 0xA0, 0x9B, 0x4C, 0xE8, 0xC0, 0xF3, 0x44, 0x99, 0xC8, 0xF1, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF3, 0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x99, +0xA3, 0xF3, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, 0xC8, 0xF1, 0x14, 0x6C, 0x02, 0x6E, 0x40, 0xEA, 0x64, 0x70, 0xD5, 0x61, 0xDB, 0x17, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, 0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xA9, 0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, -0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, 0xC8, 0xF1, 0x0C, 0x6C, 0x02, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, 0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xD8, 0x61, 0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, 0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF3, 0x24, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0xA3, 0xF3, 0x28, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x18, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0xC8, 0xF1, 0x14, 0x6C, 0x00, 0x6E, @@ -26014,7 +26313,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x14, 0x6C, 0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, 0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x38, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0xC3, 0xF1, 0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x28, 0xF1, 0x10, 0x6C, 0x01, 0x6E, @@ -26022,8 +26321,8 @@ u8 array_mp_8822c_fw_nic[] = { 0x01, 0x6D, 0x63, 0xF0, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x06, 0x96, 0x01, 0x6D, 0x68, 0xF1, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, +0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, @@ -26032,81 +26331,81 @@ u8 array_mp_8822c_fw_nic[] = { 0xC8, 0xF1, 0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x05, 0x96, 0x01, 0x6D, 0xA1, 0xF1, 0x14, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x80, 0x18, 0xA0, 0x01, 0x0B, 0x97, +0x40, 0xEA, 0x80, 0x18, 0xAC, 0x01, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xE3, 0xF7, 0x18, 0x69, 0xB1, 0x67, 0x05, 0xF0, -0x10, 0x6C, 0x80, 0x18, 0x0D, 0x28, 0x30, 0xF0, -0x20, 0x68, 0xFF, 0x6B, 0x2B, 0xF1, 0x18, 0x48, +0x10, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0x30, 0xF0, +0x20, 0x68, 0xFF, 0x6B, 0x8B, 0xF1, 0x00, 0x48, 0x6C, 0xEA, 0xB1, 0x67, 0x25, 0xF0, 0x1C, 0x6C, -0xE9, 0xF5, 0x4E, 0xC8, 0x80, 0x18, 0x0D, 0x28, +0x69, 0xF6, 0x4E, 0xC8, 0x80, 0x18, 0x1C, 0x28, 0xFF, 0x6B, 0x6C, 0xEA, 0xB1, 0x67, 0x08, 0xF5, -0x10, 0x6C, 0xE9, 0xF5, 0x50, 0xC8, 0x80, 0x18, -0x0D, 0x28, 0xFF, 0x6B, 0x6C, 0xEA, 0xB1, 0x67, -0x28, 0xF5, 0x1C, 0x6C, 0xE9, 0xF5, 0x52, 0xC8, -0x80, 0x18, 0x0D, 0x28, 0xFF, 0x6B, 0x6C, 0xEA, -0xE9, 0xF5, 0x54, 0xC8, 0x07, 0x97, 0x06, 0x91, +0x10, 0x6C, 0x69, 0xF6, 0x50, 0xC8, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0x6B, 0x6C, 0xEA, 0xB1, 0x67, +0x28, 0xF5, 0x1C, 0x6C, 0x69, 0xF6, 0x52, 0xC8, +0x80, 0x18, 0x1C, 0x28, 0xFF, 0x6B, 0x6C, 0xEA, +0x69, 0xF6, 0x54, 0xC8, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF0, 0x68, 0xA2, 0x00, 0xF1, 0x0B, 0x23, 0x00, 0x68, 0x82, 0xF0, -0x08, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0xA8, 0x9A, 0x05, 0xF0, 0x08, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0xFF, 0xF7, 0x1F, 0x72, 0x07, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x69, 0xF5, 0x14, 0xC2, 0xF6, 0x10, 0x01, 0x69, +0x08, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, +0xAC, 0x9A, 0x05, 0xF0, 0x08, 0x6C, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0xF7, 0x1F, 0x72, 0x07, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xE9, 0xF5, 0x14, 0xC2, 0xF6, 0x10, 0x01, 0x69, 0x2B, 0xE9, 0x01, 0x6B, 0xB1, 0x67, 0x30, 0xF0, -0x21, 0x6A, 0x63, 0xF0, 0x00, 0x6C, 0xB4, 0xF6, -0x6C, 0xC2, 0x80, 0x18, 0x0D, 0x28, 0xB1, 0x67, +0x21, 0x6A, 0x63, 0xF0, 0x00, 0x6C, 0x74, 0xF7, +0x74, 0xC2, 0x80, 0x18, 0x1C, 0x28, 0xB1, 0x67, 0x68, 0xF1, 0x00, 0x6C, 0x07, 0xD2, 0x80, 0x18, -0x0D, 0x28, 0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, +0x1C, 0x28, 0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, 0x30, 0xF0, 0x20, 0x68, 0x06, 0xD2, 0x80, 0x18, -0x0D, 0x28, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0xD8, 0x9B, 0x05, 0xD2, 0xC0, 0xF3, 0x44, 0x98, +0x1C, 0x28, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, +0xDC, 0x9B, 0x05, 0xD2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF1, 0xB8, 0x9B, 0x23, 0xF0, 0x10, 0x6C, +0xC3, 0xF1, 0xBC, 0x9B, 0x23, 0xF0, 0x10, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF3, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0xA4, 0x9B, 0x63, 0xF0, 0x00, 0x6C, 0x3C, 0x6E, 0x30, 0xF0, -0x21, 0x68, 0x40, 0xEA, 0xB4, 0xF6, 0x0E, 0x48, +0x21, 0x68, 0x40, 0xEA, 0x74, 0xF7, 0x16, 0x48, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF3, 0xAC, 0x9B, 0xC0, 0xF3, +0x20, 0x6A, 0xA3, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xD1, 0x67, 0xA3, 0xF0, 0x10, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0xB0, 0x9A, 0x05, 0xF0, 0x10, 0x6C, 0x01, 0x49, -0x80, 0x18, 0x0D, 0x28, 0x0F, 0x71, 0x40, 0xC8, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, +0xB4, 0x9A, 0x05, 0xF0, 0x10, 0x6C, 0x01, 0x49, +0x80, 0x18, 0x1C, 0x28, 0x0F, 0x71, 0x40, 0xC8, 0x02, 0x48, 0xE7, 0x61, 0x30, 0xF0, 0x21, 0x68, -0x00, 0x6A, 0xD4, 0xF6, 0x0C, 0x48, 0x04, 0xD2, +0x00, 0x6A, 0x94, 0xF7, 0x14, 0x48, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x69, -0x83, 0xF3, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0xA3, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x04, 0x96, 0xC3, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xB0, 0x9A, -0x25, 0xF0, 0x1C, 0x6C, 0x80, 0x18, 0x0D, 0x28, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0xB4, 0x9A, +0x25, 0xF0, 0x1C, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0x40, 0xC8, 0x04, 0x92, 0x02, 0x48, 0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xE5, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF1, -0xB8, 0x9B, 0x28, 0xF1, 0x10, 0x6C, 0x00, 0x6E, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF1, +0xBC, 0x9B, 0x28, 0xF1, 0x10, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x99, 0x83, 0xF3, 0xA0, 0x9B, 0x68, 0xF1, +0x44, 0x99, 0xA3, 0xF3, 0xA4, 0x9B, 0x68, 0xF1, 0x00, 0x6C, 0x3C, 0x6E, 0x30, 0xF0, 0x21, 0x68, -0x40, 0xEA, 0xF4, 0xF6, 0x0A, 0x48, 0x00, 0x69, +0x40, 0xEA, 0xB4, 0xF7, 0x12, 0x48, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF3, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0xA3, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xD1, 0x67, 0xA8, 0xF1, 0x10, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xB0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0xB4, 0x9A, 0x08, 0xF5, 0x10, 0x6C, 0x01, 0x49, 0x80, 0x18, -0x0D, 0x28, 0x0F, 0x71, 0x40, 0xC8, 0x02, 0x48, +0x1C, 0x28, 0x0F, 0x71, 0x40, 0xC8, 0x02, 0x48, 0xE7, 0x61, 0x30, 0xF0, 0x21, 0x69, 0x00, 0x6A, -0x14, 0xF7, 0x08, 0x49, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x83, 0xF3, -0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, +0xD4, 0xF7, 0x10, 0x49, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xA3, 0xF3, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, 0xC8, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF3, 0xB0, 0x9A, 0x28, 0xF5, -0x1C, 0x6C, 0x80, 0x18, 0x0D, 0x28, 0x40, 0xC9, +0x20, 0x6A, 0xA3, 0xF3, 0xB4, 0x9A, 0x28, 0xF5, +0x1C, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0x40, 0xC9, 0x04, 0x92, 0x02, 0x49, 0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xE5, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF1, 0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x28, 0xF1, 0x10, 0x6C, 0x01, 0x6E, 0x40, 0xEA, @@ -26116,19 +26415,19 @@ u8 array_mp_8822c_fw_nic[] = { 0x68, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x05, 0x96, 0xA1, 0xF1, 0x14, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x80, 0x18, -0xB0, 0x05, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0xBC, 0x05, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x00, 0x6A, 0x8C, 0xE9, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, -0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, 0x00, 0x6B, +0x83, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, +0x21, 0x68, 0xD2, 0xF5, 0x08, 0x48, 0x00, 0x6B, 0x90, 0x67, 0xB1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, 0x00, 0x6B, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, 0x00, 0x6B, 0x90, 0x67, 0xB1, 0x67, 0x08, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x04, 0x4B, 0xE0, 0x9B, 0x90, 0x67, -0xB1, 0x67, 0x08, 0x6E, 0x80, 0x18, 0x9F, 0x58, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0xB1, 0x67, 0x08, 0x6E, 0x80, 0x18, 0x05, 0x59, 0x0B, 0x22, 0x06, 0x92, 0x01, 0x4A, 0x06, 0xD2, 0x06, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, 0x2E, 0xF5, 0x10, 0x73, 0x06, 0xD3, 0xCE, 0x61, @@ -26136,30 +26435,30 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0xEF, 0x00, 0x65, 0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x04, 0x4A, 0x64, 0x67, 0x06, 0xD2, 0xC2, 0xF3, -0x08, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x68, 0x33, 0x6D, 0xE2, 0x08, 0xD3, -0x64, 0x67, 0xE1, 0xF1, 0x08, 0x4B, 0x6C, 0x33, +0x04, 0x4A, 0x64, 0x67, 0x06, 0xD2, 0xE2, 0xF3, +0x08, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x68, 0x33, 0x6D, 0xE2, 0x08, 0xD3, +0x64, 0x67, 0xE1, 0xF1, 0x18, 0x4B, 0x6C, 0x33, 0x6D, 0xE2, 0x0A, 0xD3, 0x00, 0x6B, 0x0F, 0xD4, 0x11, 0xD5, 0x07, 0xD3, 0x07, 0x95, 0x11, 0x92, 0xFF, 0x69, 0xAC, 0xE9, 0x18, 0x2A, 0x30, 0xF0, -0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, 0x01, 0x6A, +0x21, 0x68, 0xD2, 0xF5, 0x08, 0x48, 0x01, 0x6A, 0x90, 0x67, 0xB1, 0x67, 0xDF, 0x6E, 0x10, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x0A, 0x93, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x0A, 0x93, 0x90, 0x67, 0xB1, 0x67, 0x40, 0x9B, 0x58, 0x6E, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0xE4, 0x9A, 0x80, 0x18, 0x12, 0x59, 0x07, 0x95, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x40, 0x9A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0xE8, 0x9A, 0x80, 0x18, 0x78, 0x59, 0x07, 0x95, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x44, 0x9A, 0xA4, 0x35, 0x00, 0x69, 0x4D, 0xED, 0x0E, 0xD5, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x0E, 0x96, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF3, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x23, 0xF3, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF3, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x23, 0xF3, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, @@ -26169,13 +26468,13 @@ u8 array_mp_8822c_fw_nic[] = { 0x07, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0xA8, 0x9B, 0xC0, 0xF3, +0x20, 0x6A, 0x83, 0xF3, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, 0x0F, 0x95, 0x07, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0x34, 0x71, 0xE4, 0x84, 0x34, -0x91, 0xE1, 0x83, 0xF3, 0x54, 0x9A, 0xE0, 0xF4, -0xA2, 0x44, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xB0, 0x35, 0xE0, 0xF4, 0x0A, 0x4C, +0x91, 0xE1, 0xA3, 0xF3, 0x58, 0x9A, 0xE0, 0xF4, +0xAA, 0x44, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xB0, 0x35, 0xE0, 0xF4, 0x12, 0x4C, 0x46, 0xE9, 0xB5, 0xE3, 0x90, 0x34, 0x91, 0xE3, 0x0D, 0xD5, 0x61, 0x42, 0xA3, 0x42, 0x23, 0x4A, 0x09, 0xD5, 0x0C, 0xD4, 0x0B, 0xD3, 0x10, 0xD2, @@ -26208,32 +26507,32 @@ u8 array_mp_8822c_fw_nic[] = { 0x13, 0x90, 0x0B, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, 0xAA, 0xF1, -0x7C, 0xC2, 0x1A, 0x2C, 0xE9, 0xF5, 0x7A, 0xA2, -0x17, 0x23, 0x29, 0xF7, 0x70, 0x9A, 0x29, 0xF7, +0x8B, 0xF1, 0x00, 0x4A, 0x00, 0x6B, 0x2A, 0xF2, +0x7C, 0xC2, 0x1A, 0x2C, 0x69, 0xF6, 0x7A, 0xA2, +0x17, 0x23, 0xA9, 0xF7, 0x70, 0x9A, 0xA9, 0xF7, 0x88, 0x9A, 0x00, 0x68, 0x6E, 0xEC, 0x05, 0x24, -0x29, 0xF7, 0x4C, 0x9A, 0x4E, 0xEB, 0x0C, 0x2B, +0xA9, 0xF7, 0x4C, 0x9A, 0x4E, 0xEB, 0x0C, 0x2B, 0x01, 0x68, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, -0x90, 0x67, 0xF5, 0xF2, 0x74, 0xC2, 0x80, 0x18, -0x77, 0x06, 0x90, 0x67, 0x80, 0x18, 0x6E, 0x41, -0x30, 0xF0, 0x21, 0x6A, 0xF5, 0xF2, 0x54, 0xA2, +0x90, 0x67, 0xB5, 0xF3, 0x7C, 0xC2, 0x80, 0x18, +0x83, 0x06, 0x90, 0x67, 0x80, 0x18, 0x78, 0x41, +0x30, 0xF0, 0x21, 0x6A, 0xB5, 0xF3, 0x5C, 0xA2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x21, 0x6A, -0x34, 0xF7, 0x5D, 0xA2, 0x05, 0x22, 0x00, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x08, 0x07, 0x04, 0x10, -0x00, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x77, 0x06, +0x15, 0xF0, 0x45, 0xA2, 0x05, 0x22, 0x00, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0x14, 0x07, 0x04, 0x10, +0x00, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x83, 0x06, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x7D, 0x67, 0x4C, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x3C, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, -0x30, 0xF0, 0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, +0x20, 0x6A, 0xE3, 0xF1, 0x20, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, +0x30, 0xF0, 0x21, 0x68, 0xD2, 0xF5, 0x08, 0x48, 0x00, 0x6D, 0x90, 0x67, 0xC5, 0x67, 0x04, 0xD1, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x04, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x04, 0xD1, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0xB8, 0x9B, 0xC0, 0xF3, +0x04, 0xD1, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE1, 0xF0, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xE1, 0xF0, 0x1C, 0x6C, 0xAB, 0xED, 0x00, 0x6E, @@ -26245,150 +26544,150 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x08, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x83, 0xF3, 0xBC, 0x9B, 0x01, 0xF2, 0x04, 0x6C, +0xC3, 0xF3, 0xA0, 0x9B, 0x01, 0xF2, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x70, 0x9A, 0xFF, 0x6A, 0x80, 0xA3, +0xC3, 0xF1, 0x74, 0x9A, 0xFF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0xFE, 0x6C, 0x4C, 0xEC, 0x80, 0xC3, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x58, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, -0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, -0x40, 0x9A, 0x60, 0xDA, 0x0B, 0x97, 0x0A, 0x91, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x40, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, +0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, +0x44, 0x9A, 0x60, 0xDA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x24, 0x9A, -0x30, 0xF0, 0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x28, 0x9A, +0x30, 0xF0, 0x21, 0x68, 0xD2, 0xF5, 0x08, 0x48, 0x90, 0x67, 0xF1, 0x67, 0x01, 0xF2, 0x00, 0x6A, 0x00, 0x6D, 0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, -0x48, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, -0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, +0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, +0x4C, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, +0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x0E, 0xD6, 0x0F, 0xD7, 0x04, 0xD7, 0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0x0E, 0x97, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, -0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, 0xB0, 0x67, -0xD1, 0x67, 0x80, 0x18, 0x12, 0x59, 0x00, 0x6A, +0x21, 0x6C, 0xD2, 0xF5, 0x08, 0x4C, 0xB0, 0x67, +0xD1, 0x67, 0x80, 0x18, 0x78, 0x59, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, 0x21, 0x6B, 0x0E, 0x97, -0x12, 0xF5, 0x08, 0x4B, 0x83, 0x67, 0xB0, 0x67, -0xD1, 0x67, 0x06, 0xD3, 0x80, 0x18, 0x9F, 0x58, +0xD2, 0xF5, 0x08, 0x4B, 0x83, 0x67, 0xB0, 0x67, +0xD1, 0x67, 0x06, 0xD3, 0x80, 0x18, 0x05, 0x59, 0x0F, 0x93, 0x6E, 0xEA, 0x1E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x0F, 0x92, 0x06, 0x94, 0x0E, 0x97, 0xB0, 0x67, 0xD1, 0x67, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x07, 0x93, 0x01, 0x4B, 0xE0, 0xF3, +0x78, 0x59, 0x07, 0x93, 0x01, 0x4B, 0xE0, 0xF3, 0x08, 0x73, 0x07, 0xD3, 0xDE, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xA0, 0xF1, 0x00, 0x6C, 0x1F, 0xF7, 0x00, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0x63, 0xF3, -0xE4, 0x9A, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, -0x21, 0x6C, 0x0E, 0xD6, 0x04, 0xD6, 0x12, 0xF5, +0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0x83, 0xF3, +0xE8, 0x9A, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, +0x21, 0x6C, 0x0E, 0xD6, 0x04, 0xD6, 0xD2, 0xF5, 0x08, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, -0x12, 0x59, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, 0x30, 0xF0, -0x21, 0x6B, 0xE0, 0x9A, 0x12, 0xF5, 0x08, 0x4B, +0x78, 0x59, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, 0x30, 0xF0, +0x21, 0x6B, 0xE0, 0x9A, 0xD2, 0xF5, 0x08, 0x4B, 0x83, 0x67, 0xB0, 0x67, 0xD1, 0x67, 0x06, 0xD3, -0x80, 0x18, 0x9F, 0x58, 0x0E, 0x93, 0x6E, 0xEA, +0x80, 0x18, 0x05, 0x59, 0x0E, 0x93, 0x6E, 0xEA, 0x18, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, 0x0E, 0x92, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0x0E, 0x92, 0x06, 0x94, 0xE0, 0x9B, 0xB0, 0x67, 0xD1, 0x67, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x07, 0x92, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x07, 0x92, 0x01, 0x4A, 0xE0, 0xF3, 0x08, 0x72, 0x07, 0xD2, 0xD6, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x0C, 0xD4, 0x05, 0x67, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, 0x30, 0xF0, 0x21, 0x69, 0x6C, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, 0x07, 0xD2, -0xE0, 0x9B, 0x07, 0x95, 0x12, 0xF5, 0x08, 0x49, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0x07, 0xD2, +0xE0, 0x9B, 0x07, 0x95, 0xD2, 0xF5, 0x08, 0x49, 0x00, 0x6A, 0x91, 0x67, 0xEF, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x40, 0x98, 0x06, 0x94, +0x80, 0x18, 0x78, 0x59, 0x40, 0x98, 0x06, 0x94, 0x11, 0x6E, 0xCB, 0xEE, 0x4C, 0xEE, 0xDF, 0x6D, -0x80, 0x18, 0xA1, 0x07, 0x0C, 0x92, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, 0xC1, 0xA2, +0x80, 0x18, 0xAD, 0x07, 0x0C, 0x92, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0xC1, 0xA2, 0xE0, 0x9B, 0x42, 0x98, 0x07, 0x95, 0x91, 0x67, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x0C, 0x92, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x0C, 0x92, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0xC2, 0xA2, 0x07, 0x95, 0x44, 0x98, 0xE0, 0x9B, -0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, +0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x06, 0x92, 0x04, 0x48, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, 0xC4, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x21, 0x6C, -0x12, 0xF5, 0x08, 0x4C, 0x80, 0x18, 0xFE, 0x1F, +0xD2, 0xF5, 0x08, 0x4C, 0x80, 0x18, 0xE5, 0x1F, 0x05, 0x97, 0x01, 0x6A, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x21, 0x6A, -0x0A, 0xD4, 0x34, 0xF7, 0x72, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x20, 0x9A, 0x30, 0xF0, +0x0A, 0xD4, 0xF4, 0xF7, 0x7A, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x28, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0x93, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x21, 0x6C, 0x35, 0xE3, 0xB5, 0xF2, -0x10, 0x4C, 0x08, 0x6E, 0x40, 0xEA, 0x0A, 0x95, +0x30, 0xF0, 0x21, 0x6C, 0x35, 0xE3, 0x75, 0xF3, +0x18, 0x4C, 0x08, 0x6E, 0x40, 0xEA, 0x0A, 0x95, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x21, 0x6C, -0x08, 0x4D, 0x35, 0xE5, 0x95, 0xF0, 0x08, 0x4C, +0x08, 0x4D, 0x35, 0xE5, 0x55, 0xF1, 0x10, 0x4C, 0x44, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0x30, 0xF0, -0x21, 0x6C, 0xD5, 0xF0, 0x0C, 0x4C, 0x4C, 0x4A, +0x21, 0x6C, 0x95, 0xF1, 0x14, 0x4C, 0x4C, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, -0x30, 0xF0, 0x21, 0x6C, 0x15, 0xF1, 0x10, 0x4C, +0x30, 0xF0, 0x21, 0x6C, 0xD5, 0xF1, 0x18, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, -0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0x55, 0xF1, -0x14, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, +0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0x15, 0xF2, +0x1C, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, -0x95, 0xF1, 0x18, 0x4C, 0x44, 0x4A, 0x04, 0xD2, +0x75, 0xF2, 0x00, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, -0x21, 0x6C, 0xD5, 0xF1, 0x1C, 0x4C, 0x44, 0x4A, +0x21, 0x6C, 0xB5, 0xF2, 0x04, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, -0x30, 0xF0, 0x21, 0x6C, 0x35, 0xF2, 0x00, 0x4C, +0x30, 0xF0, 0x21, 0x6C, 0xF5, 0xF2, 0x08, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, -0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0x75, 0xF2, -0x04, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, +0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0x35, 0xF3, +0x0C, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, -0xB4, 0x9B, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x21, 0x6C, 0xD5, 0xF2, 0x08, 0x4C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, +0xB8, 0x9B, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, +0x30, 0xF0, 0x21, 0x6C, 0x95, 0xF3, 0x10, 0x4C, 0xB5, 0xE3, 0x10, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0xD1, 0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF0, 0x7C, 0xA2, 0x80, 0xF0, 0x1A, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0x6B, -0xA3, 0xF1, 0x98, 0x9C, 0xE2, 0xF0, 0x7C, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x09, 0xF6, 0x90, 0xDA, 0x09, 0xF6, 0x98, 0xDA, -0x09, 0xF6, 0x94, 0xDA, 0x09, 0xF6, 0x9C, 0xDA, +0xC3, 0xF1, 0x9C, 0x9C, 0xE2, 0xF0, 0x7C, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x89, 0xF6, 0x90, 0xDA, 0x89, 0xF6, 0x98, 0xDA, +0x89, 0xF6, 0x94, 0xDA, 0x89, 0xF6, 0x9C, 0xDA, 0x30, 0xF0, 0x21, 0x6D, 0x30, 0xF0, 0x21, 0x6C, -0x09, 0xF6, 0x6B, 0xC2, 0x09, 0xF6, 0x69, 0xC2, -0x09, 0xF6, 0x6D, 0xC2, 0x09, 0xF6, 0x6C, 0xC2, -0x09, 0xF6, 0x6A, 0xC2, 0x09, 0xF6, 0x6E, 0xC2, -0xB5, 0xF2, 0x10, 0x4D, 0xB5, 0xF0, 0x0A, 0x4C, +0x89, 0xF6, 0x6B, 0xC2, 0x89, 0xF6, 0x69, 0xC2, +0x89, 0xF6, 0x6D, 0xC2, 0x89, 0xF6, 0x6C, 0xC2, +0x89, 0xF6, 0x6A, 0xC2, 0x89, 0xF6, 0x6E, 0xC2, +0x75, 0xF3, 0x18, 0x4D, 0x75, 0xF1, 0x12, 0x4C, 0x00, 0x6A, 0x00, 0x6B, 0x60, 0xDD, 0x30, 0xF0, -0x20, 0x6E, 0x31, 0xF2, 0x62, 0x42, 0x2B, 0xF1, -0x18, 0x4E, 0x6C, 0x33, 0x6D, 0xE6, 0x04, 0xD3, -0x62, 0xF4, 0x62, 0x42, 0x68, 0x33, 0x6D, 0xE6, +0x20, 0x6E, 0x41, 0xF2, 0x62, 0x42, 0x8B, 0xF1, +0x00, 0x4E, 0x6C, 0x33, 0x6D, 0xE6, 0x04, 0xD3, +0x82, 0xF4, 0x62, 0x42, 0x68, 0x33, 0x6D, 0xE6, 0x03, 0xD3, 0x06, 0x6B, 0x78, 0xEA, 0x01, 0xD4, -0x12, 0xEB, 0x6D, 0xE6, 0xAA, 0xF1, 0x01, 0x4B, +0x12, 0xEB, 0x6D, 0xE6, 0x2A, 0xF2, 0x01, 0x4B, 0x00, 0x6E, 0x04, 0x90, 0x00, 0x6F, 0xE0, 0xD8, 0x03, 0x90, 0xE0, 0xC8, 0x44, 0x30, 0x01, 0xE6, -0xA5, 0xF0, 0x18, 0x48, 0x30, 0xF0, 0x20, 0x6F, -0x04, 0x30, 0x2B, 0xF1, 0x18, 0x4F, 0x1D, 0xE7, +0xE5, 0xF0, 0x18, 0x48, 0x30, 0xF0, 0x20, 0x6F, +0x04, 0x30, 0x8B, 0xF1, 0x00, 0x4F, 0x1D, 0xE7, 0x05, 0xD7, 0x01, 0x97, 0x00, 0x68, 0x00, 0xD0, 0x02, 0xD7, 0x05, 0x90, 0x00, 0x6F, 0x22, 0x69, 0xE0, 0xC0, 0x00, 0x97, 0x06, 0xD2, 0x38, 0xEF, 0x44, 0x6F, 0x12, 0xE9, 0xF8, 0xEE, 0x12, 0xEF, 0xE5, 0xE1, 0x88, 0x6F, 0xF8, 0xEA, 0x12, 0xEF, 0xE5, 0xE1, 0x11, 0x67, 0x30, 0xF0, 0x20, 0x6F, -0x2B, 0xF1, 0x18, 0x4F, 0x49, 0xF7, 0x10, 0x48, -0x6A, 0xF0, 0x00, 0x49, 0x01, 0xE7, 0x25, 0xE7, +0x8B, 0xF1, 0x00, 0x4F, 0xC9, 0xF7, 0x10, 0x48, +0xEA, 0xF0, 0x00, 0x49, 0x01, 0xE7, 0x25, 0xE7, 0x02, 0x92, 0x00, 0x6F, 0xE0, 0xC8, 0x02, 0x48, 0x4A, 0xE8, 0xE0, 0xC9, 0x02, 0x49, 0xF8, 0x61, 0x00, 0x90, 0x06, 0x92, 0x01, 0x48, 0x00, 0xD0, @@ -26409,18 +26708,18 @@ u8 array_mp_8822c_fw_nic[] = { 0x01, 0x6D, 0x06, 0xD4, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x06, 0x92, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF3, 0xB4, 0x9B, 0x23, 0xF3, +0x44, 0x98, 0xA3, 0xF3, 0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF4, 0x58, 0x9A, 0x0E, 0x10, +0x20, 0x6A, 0x43, 0xF4, 0x5C, 0x9A, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x83, 0xF3, 0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, +0xA3, 0xF3, 0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF4, 0x5C, 0x9A, 0x05, 0xD2, 0x06, 0x92, +0x63, 0xF4, 0x40, 0x9A, 0x05, 0xD2, 0x06, 0x92, 0x22, 0x69, 0x07, 0x93, 0x38, 0xEA, 0x44, 0x6A, 0x00, 0x68, 0x12, 0xE9, 0x58, 0xEB, 0x04, 0x93, 0x12, 0xEA, 0x45, 0xE1, 0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, -0x49, 0xF7, 0x10, 0x49, 0x2B, 0xF1, 0x18, 0x4A, +0xC9, 0xF7, 0x10, 0x49, 0x8B, 0xF1, 0x00, 0x4A, 0x25, 0xE2, 0xC0, 0xA9, 0x05, 0x94, 0x08, 0x32, 0xC0, 0x36, 0x8D, 0xEE, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, @@ -26430,24 +26729,24 @@ u8 array_mp_8822c_fw_nic[] = { 0x78, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xEB, 0x58, 0xEC, 0x04, 0x94, 0x12, 0xEA, 0x49, 0xE3, 0x88, 0x6B, 0x78, 0xEC, 0x12, 0xEB, 0x69, 0xE2, -0x30, 0xF0, 0x20, 0x6B, 0x6A, 0xF0, 0x00, 0x4A, -0x2B, 0xF1, 0x18, 0x4B, 0x4D, 0xE3, 0x04, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0xEA, 0xF0, 0x00, 0x4A, +0x8B, 0xF1, 0x00, 0x4B, 0x4D, 0xE3, 0x04, 0xD3, 0x04, 0x92, 0x05, 0x93, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xAA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC0, 0x36, 0x6D, 0xEE, 0x28, 0x33, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x94, 0x01, 0x49, 0x11, 0x71, 0x02, 0x4C, 0x04, 0xD4, 0xEA, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF3, 0xCC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF3, 0xD0, 0x9B, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF3, 0xB4, 0x9B, 0x23, 0xF3, +0x44, 0x98, 0xA3, 0xF3, 0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x52, 0xF4, 0x8C, 0x42, -0x30, 0xF0, 0x20, 0x6B, 0xC5, 0xF0, 0x00, 0x4A, -0x2B, 0xF1, 0x18, 0x4B, 0x88, 0x34, 0x44, 0x32, +0xFF, 0x6A, 0x8C, 0xEA, 0x72, 0xF4, 0x8C, 0x42, +0x30, 0xF0, 0x20, 0x6B, 0x05, 0xF1, 0x00, 0x4A, +0x8B, 0xF1, 0x00, 0x4B, 0x88, 0x34, 0x44, 0x32, 0x91, 0xE3, 0x4D, 0xE3, 0x00, 0x68, 0x04, 0x4B, 0x04, 0xD4, 0x05, 0xD3, 0x06, 0xD0, 0x07, 0xD0, 0x08, 0xD0, 0x04, 0x95, 0x01, 0x6C, 0x08, 0x93, @@ -26470,1914 +26769,224 @@ u8 array_mp_8822c_fw_nic[] = { 0xBC, 0x61, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x05, 0xD2, 0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x64, 0x98, -0x01, 0x69, 0x2B, 0xE9, 0x44, 0x36, 0x08, 0x6A, -0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xB1, 0x67, -0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF4, 0xC0, 0x9B, 0x03, 0xF3, -0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x05, 0x92, -0x07, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x08, 0x6C, 0xB1, 0x67, 0x80, 0x6E, 0x06, 0x10, +0x04, 0xD2, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x24, 0x36, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x07, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xEA, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, -0x2B, 0xE9, 0x03, 0xF3, 0x0C, 0x6C, 0xB1, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF3, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x14, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF4, 0xC4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, -0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x1C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF4, -0xCC, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x02, 0x72, -0x04, 0xD2, 0x99, 0x61, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x00, 0xF2, 0x1C, 0x22, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0xB4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0x04, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF4, 0x10, 0x69, 0x91, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, -0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x80, 0x6D, 0x01, 0x6E, 0x06, 0x10, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, +0x00, 0x6E, 0x01, 0x49, 0x40, 0xEA, 0x02, 0x71, +0xE1, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x00, 0xF2, 0x1C, 0x22, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF4, 0x10, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x18, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, -0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0xE0, 0xF1, -0x1F, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x63, 0xF0, 0x04, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, -0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x68, 0xF1, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x3C, 0x9A, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, -0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x08, 0xF1, 0x0C, 0x6C, +0x20, 0x6B, 0x23, 0xF3, 0xA8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, +0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, +0x18, 0x6D, 0xE0, 0xF1, 0x1F, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x1C, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, +0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF1, 0x1C, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x04, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF3, 0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x0C, 0x6C, +0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x68, 0xF1, 0x0C, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF0, 0x0C, 0x6C, 0x80, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, -0x0C, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, -0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x08, 0xF1, 0x0C, 0x6C, 0x03, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF2, 0x00, 0x6C, 0x03, 0x6D, 0x02, 0x6E, -0x40, 0xEA, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, -0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, -0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x03, 0xF0, 0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, +0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x00, 0x6C, +0x03, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x01, 0x69, +0xC0, 0xF3, 0x44, 0x98, 0x2B, 0xE9, 0x23, 0xF4, +0x18, 0x6C, 0xB1, 0x67, 0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x63, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x63, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x63, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x63, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x04, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x83, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x83, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0x20, 0x6B, 0x83, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x1C, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x83, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x63, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x63, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x1C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x63, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x83, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, -0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x0C, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0xC0, 0x9B, 0xC9, 0x12, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x04, 0xD2, 0xAA, 0xF1, -0x40, 0xA2, 0xE0, 0xF0, 0x1B, 0x22, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, -0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, -0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x04, 0x93, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF0, 0x00, 0x6C, 0x09, 0xF6, 0xC6, 0xA3, -0x04, 0x6B, 0x0E, 0xF0, 0x00, 0x6D, 0x67, 0xEE, -0xC3, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0x09, 0xF6, 0xC6, 0xA2, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x18, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, -0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x09, 0xF6, -0xC6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x1C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0x09, 0xF6, 0xC6, 0xA2, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, -0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x09, 0xF6, -0xC6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x04, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, -0x09, 0xF6, 0xC6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x0C, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, -0x10, 0x6C, 0x09, 0xF6, 0xC6, 0xA2, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x18, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, -0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x09, 0xF6, -0xC6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x1C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, -0x10, 0x6C, 0x09, 0xF6, 0xC6, 0xA2, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, -0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x09, 0xF6, -0xC6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x04, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, -0x09, 0xF6, 0xC6, 0xA2, 0xB1, 0x67, 0xC0, 0xF3, -0x44, 0x98, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x0C, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x63, 0x11, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x83, 0xF4, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, -0x2B, 0xE9, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF4, 0x04, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0xA4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, -0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, -0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x68, 0xF1, -0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x3C, 0x9A, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0xF1, 0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, -0x0C, 0x6C, 0x80, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x0C, 0x6C, -0x80, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, 0x03, 0xF0, -0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0x6D, 0xC5, 0x67, 0x08, 0xF1, 0x0C, 0x6C, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, -0x00, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x06, 0x67, 0xE3, 0xF4, 0xC8, 0x9B, 0x09, 0xD5, -0x01, 0x6D, 0x24, 0x67, 0x0B, 0xD7, 0x63, 0xF5, -0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x00, 0x6A, -0x80, 0x98, 0x1F, 0xF7, 0x00, 0x6B, 0x8C, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x09, 0x2B, -0x30, 0xF0, 0x20, 0x6C, 0x60, 0x98, 0x43, 0xF1, -0x84, 0x9C, 0x6D, 0xE4, 0x80, 0x99, 0x80, 0xDB, -0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0x68, 0x9B, 0x91, 0xE3, 0x60, 0x99, 0x60, 0xDC, -0x01, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x72, -0x04, 0x48, 0x04, 0x49, 0xE1, 0x61, 0x00, 0x68, -0x0B, 0x92, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x6D, -0x11, 0xE2, 0x09, 0x92, 0x80, 0xAC, 0xAB, 0xED, -0x0D, 0xE2, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0x04, 0x48, 0x40, 0xEA, 0x2C, 0x70, 0xF0, 0x61, -0x30, 0xF0, 0x21, 0x6A, 0xB5, 0xF2, 0x49, 0xA2, -0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF0, 0x0C, 0x6C, -0x03, 0xF1, 0xB8, 0x9B, 0x00, 0x6E, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0x03, 0xF1, 0xB8, 0x9B, 0x03, 0xF0, 0x0C, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x21, 0x6A, -0xB5, 0xF2, 0x4B, 0xA2, 0x01, 0x72, 0x0C, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9A, 0x08, 0xF1, 0x0C, 0x6C, -0x03, 0xF1, 0xB8, 0x9B, 0x00, 0x6E, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF1, 0xB8, 0x9B, -0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x21, 0x6A, 0xD5, 0xF2, 0x58, 0xA2, -0x1E, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x63, 0xF6, 0x1C, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, -0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x04, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF2, 0x40, 0x9A, 0x01, 0x6B, -0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF2, 0xB4, 0x9B, 0x23, 0xF6, 0x04, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF4, 0xAC, 0x9B, -0xC3, 0xF4, 0x10, 0x6C, 0x07, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0xB8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF5, 0x00, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6E, 0xCB, 0xEE, 0xA6, 0x67, 0x23, 0xF4, -0x18, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, -0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF4, 0xB0, 0x9B, -0x21, 0xF0, 0x04, 0x6C, 0x03, 0x6E, 0x40, 0xEA, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF3, 0xE8, 0x9B, 0xFF, 0x6A, 0x04, 0x6B, -0xC0, 0xA7, 0x4C, 0xED, 0x4C, 0xEC, 0x4C, 0xEE, -0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC7, 0x06, 0x2D, -0x07, 0x6B, 0x07, 0x24, 0x01, 0x74, 0x07, 0x6B, -0x12, 0x61, 0x0C, 0x10, 0x07, 0x2C, 0x79, 0x6B, -0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x44, 0x9A, 0x08, 0x10, 0x01, 0x74, 0x07, 0x61, -0x79, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF4, 0x54, 0x9A, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0x48, 0x9A, 0xC0, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6E, 0x30, 0xF0, -0x20, 0x68, 0xCC, 0xEC, 0xC0, 0xF3, 0x44, 0x98, -0xAC, 0xEE, 0x01, 0x69, 0x08, 0x6B, 0x2B, 0xE9, -0xC4, 0x36, 0x04, 0xD4, 0xB1, 0x67, 0x03, 0xF3, -0x00, 0x6C, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, -0x12, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, -0xE3, 0xF4, 0xD8, 0x9B, 0x11, 0x10, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, -0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF4, -0xDC, 0x9B, 0xC3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x30, 0xF0, 0x20, 0x68, 0xC3, 0xF3, 0x18, 0x6C, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, -0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0xA0, 0x9A, 0x02, 0xF7, 0x00, 0x6C, -0x80, 0x18, 0x85, 0x28, 0x20, 0x6B, 0x4C, 0xEB, -0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0x0A, 0x70, 0xEC, 0x61, 0x0A, 0x68, 0x50, 0x67, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0xF7, 0x1F, 0x68, 0x8C, 0xE8, 0x80, 0x18, -0x89, 0x0C, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0xC4, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x0D, 0xEE, -0xB1, 0x67, 0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, -0x9A, 0x28, 0xB1, 0x67, 0x02, 0xF7, 0x08, 0x6C, -0x80, 0x18, 0x85, 0x28, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x68, 0x25, 0x67, 0x0C, 0xD6, -0x8C, 0xE8, 0x37, 0x25, 0x61, 0x45, 0x00, 0x6A, -0x0E, 0x2B, 0x80, 0x18, 0x89, 0x0C, 0x01, 0x69, -0x0C, 0x96, 0x2B, 0xE9, 0x02, 0xF7, 0x04, 0x6C, -0xB1, 0x67, 0x80, 0x18, 0x9A, 0x28, 0x02, 0xF7, -0x00, 0x6C, 0xB1, 0x67, 0x1F, 0x10, 0x71, 0x67, -0x66, 0xEA, 0x01, 0x6C, 0x8C, 0xEB, 0x04, 0x2B, -0x01, 0x4A, 0x20, 0x72, 0xF8, 0x61, 0x00, 0x6A, -0x90, 0x67, 0x04, 0xD2, 0x2F, 0xE9, 0x80, 0x18, -0x98, 0x0C, 0x4C, 0xE9, 0x80, 0x18, 0x89, 0x0C, -0x0C, 0x96, 0x04, 0x92, 0x01, 0x6D, 0x02, 0xF7, -0x04, 0x6C, 0xC4, 0xEA, 0xAB, 0xED, 0x2D, 0xEE, -0x80, 0x18, 0x9A, 0x28, 0x01, 0x6D, 0x02, 0xF7, -0x00, 0x6C, 0xAB, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0xC8, 0x9A, 0x0D, 0xEE, 0x80, 0x18, -0x9A, 0x28, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x38, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0xA8, 0x0C, 0x38, 0x6C, 0x01, 0xF4, -0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0xA8, 0x0C, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x38, 0x6C, 0x06, 0xF0, -0x00, 0x6D, 0x03, 0x6E, 0x80, 0x18, 0xA8, 0x0C, -0x38, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, -0x80, 0x18, 0xA8, 0x0C, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x22, 0x80, 0x18, -0xD4, 0x0C, 0x80, 0x18, 0xCB, 0x0C, 0x09, 0x10, -0x30, 0xF0, 0x21, 0x6A, 0xF5, 0xF2, 0xD0, 0x9A, -0x01, 0x6D, 0x38, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0xA8, 0x0C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x00, 0x6A, 0x09, 0xD5, 0x27, 0x67, 0xA0, 0x9E, -0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEB, 0x02, 0xF0, -0x00, 0x73, 0x01, 0x60, 0x08, 0x2B, 0x30, 0xF0, -0x20, 0x6D, 0x60, 0x9E, 0x43, 0xF1, 0xA4, 0x9D, -0x6D, 0xE5, 0x60, 0x9B, 0x06, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x68, 0x9B, 0xB5, 0xE3, -0x60, 0x9D, 0x55, 0xE4, 0x04, 0x4A, 0x0C, 0x72, -0x60, 0xDD, 0x04, 0x4E, 0xE4, 0x61, 0x00, 0x68, -0x09, 0xE1, 0x80, 0xAA, 0x01, 0x6D, 0xAB, 0xED, -0x80, 0x18, 0x0D, 0x28, 0x09, 0x94, 0x0D, 0xE4, -0x04, 0x48, 0x2C, 0x70, 0x40, 0xDB, 0xF4, 0x61, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, -0x4C, 0xEC, 0xCC, 0xEA, 0x4B, 0xEA, 0xC0, 0xF7, -0x42, 0x32, 0x30, 0xF0, 0x20, 0x68, 0x44, 0x32, -0xC0, 0xF3, 0x64, 0x98, 0x06, 0xD5, 0x04, 0xD2, -0xA4, 0x36, 0x08, 0x6A, 0x01, 0x6D, 0x05, 0xD4, -0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEB, 0x05, 0x92, 0x0A, 0x2A, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, -0x00, 0x6C, 0x83, 0xF3, 0xB4, 0x9B, 0x03, 0x6E, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF3, 0xB4, 0x9B, 0x23, 0xF3, -0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, -0x14, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF3, 0xA8, 0x9B, 0x91, 0x67, 0x10, 0x6E, -0x40, 0xEA, 0x05, 0x92, 0x22, 0x6B, 0x06, 0x94, -0x78, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xEB, -0x58, 0xEC, 0x04, 0x94, 0x12, 0xEA, 0x4D, 0xE3, -0x88, 0x6A, 0x58, 0xEC, 0x12, 0xEA, 0x4D, 0xE3, -0x83, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x49, 0xF7, 0x10, 0x4C, 0x6A, 0xF0, -0x00, 0x4B, 0x91, 0xE2, 0x6D, 0xE2, 0x05, 0xD4, -0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x6C, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0x36, 0x01, 0x6D, 0x6D, 0xEE, -0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, -0x80, 0x18, 0x0D, 0x28, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x70, 0x9B, 0x05, 0x94, 0x01, 0x49, -0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x60, 0xCC, -0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, -0x02, 0x4C, 0x11, 0x71, 0x60, 0xCA, 0x02, 0x4A, -0x05, 0xD4, 0x04, 0xD2, 0xD6, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, -0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xFF, 0x6A, 0x24, 0x67, 0x2B, 0xF1, 0x18, 0x48, -0x4C, 0xED, 0x4C, 0xE9, 0xE9, 0xF5, 0x59, 0xA0, -0x06, 0xD5, 0x24, 0x36, 0x07, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x9A, 0x01, 0x6D, -0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF3, 0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0xE9, 0xF5, 0x58, 0xA0, -0x4B, 0x2A, 0x06, 0x92, 0x03, 0x22, 0x12, 0x6A, -0xE9, 0xF5, 0x5E, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x21, 0x6B, 0x34, 0xF7, 0xD6, 0xA3, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, -0xFF, 0x6D, 0x40, 0xEA, 0x01, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0xFC, 0x9A, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x08, 0x4B, -0x83, 0x67, 0xB1, 0x67, 0xDE, 0x6E, 0x06, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x06, 0x94, 0xE1, 0xF7, -0x1F, 0x6F, 0x20, 0x6A, 0xB1, 0x67, 0x56, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0x02, 0x6D, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF5, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x23, 0xF3, 0x04, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0x18, 0x6E, 0x49, 0x10, -0x06, 0x92, 0x03, 0x22, 0x12, 0x6A, 0xE9, 0xF5, -0x5E, 0xC0, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0xFC, 0x9A, 0x30, 0xF0, -0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, 0x90, 0x67, -0xB1, 0x67, 0xDE, 0x6E, 0x80, 0x18, 0x12, 0x59, -0xE1, 0xF7, 0x1F, 0x6F, 0x90, 0x67, 0x00, 0x6A, -0xB1, 0x67, 0x56, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x21, 0x6B, 0x34, 0xF7, 0xD6, 0xA3, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x18, 0x6C, 0x02, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, 0xD0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, -0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x38, 0x6E, 0x40, 0xEA, 0x07, 0x93, 0x06, 0x73, -0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, -0x1F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x06, 0xD2, 0x2B, 0xF1, 0x18, 0x4B, 0xE9, 0xF5, -0x59, 0xA3, 0x07, 0xD3, 0x06, 0x93, 0x30, 0xF0, -0x20, 0x68, 0x08, 0xD2, 0x64, 0x31, 0x08, 0x6A, -0x4D, 0xE9, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, -0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x3F, 0x6D, 0xC5, 0x67, -0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF2, 0x04, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x00, 0x69, 0x91, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, -0x07, 0x93, 0xE9, 0xF5, 0x58, 0xA3, 0x11, 0x2A, -0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x21, 0x69, 0x06, 0x95, 0xA3, 0xF1, -0xFC, 0x9A, 0x12, 0xF5, 0x08, 0x49, 0x91, 0x67, -0xDE, 0x6E, 0x80, 0x18, 0x12, 0x59, 0x20, 0x6A, -0x10, 0x10, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x21, 0x69, 0x06, 0x95, -0xA3, 0xF1, 0xFC, 0x9A, 0x12, 0xF5, 0x08, 0x49, -0x91, 0x67, 0xDE, 0x6E, 0x80, 0x18, 0x12, 0x59, -0x00, 0x6A, 0x06, 0x95, 0x91, 0x67, 0x56, 0x6E, -0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, -0x0C, 0x6C, 0xFF, 0x6D, 0x12, 0x6E, 0x40, 0xEA, -0x08, 0x92, 0x06, 0x72, 0x0A, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, -0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x08, 0x6E, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, -0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xFF, 0x68, 0xE9, 0xF5, 0x79, 0xA2, 0x8C, 0xE8, -0x06, 0xD2, 0x04, 0x32, 0x07, 0xD2, 0x08, 0xD3, -0x07, 0x93, 0x30, 0xF0, 0x20, 0x69, 0x08, 0x6A, -0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, -0xC3, 0x67, 0x07, 0xD3, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0x3F, 0x6D, 0xC5, 0x67, -0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, -0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, -0x00, 0x6C, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, -0x40, 0xEA, 0x06, 0x92, 0xE9, 0xF5, 0x58, 0xA2, -0x06, 0xD2, 0x5B, 0x2A, 0x07, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0xF4, 0x9A, -0x30, 0xF0, 0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, -0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, -0x12, 0x59, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0x9E, 0x6E, 0x20, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x1C, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x10, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x01, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, -0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x1C, 0x4B, 0xE0, 0x9B, -0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x06, 0x92, -0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x01, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x04, 0x6A, -0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x06, 0x93, -0x5A, 0x10, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF5, 0xF4, 0x9A, 0x30, 0xF0, -0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, 0x91, 0x67, -0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x12, 0x59, -0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, -0x20, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, -0x00, 0xF4, 0x00, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x1C, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x01, 0x6B, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0x1C, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, -0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x33, 0x6E, 0xE2, 0x67, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x04, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x00, 0x6B, 0x91, 0x67, -0x30, 0xF0, 0x21, 0x69, 0xB0, 0x67, 0xEF, 0x6E, -0x04, 0x6F, 0x12, 0xF5, 0x08, 0x49, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x00, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x21, 0x6A, -0x34, 0xF7, 0x50, 0xA2, 0x01, 0x22, 0x20, 0x6A, -0x7F, 0x6F, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, -0x30, 0xF0, 0x20, 0x69, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF3, -0x0C, 0x6C, 0xFF, 0x6D, 0x09, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x0C, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, 0x10, 0x6F, -0x01, 0x6A, 0x12, 0xF5, 0x08, 0x4C, 0xEF, 0x6E, -0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, -0xFF, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x08, 0x92, -0x06, 0x72, 0x08, 0x61, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x08, 0x6E, 0x07, 0x10, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x38, 0x6E, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE9, 0xF5, 0x79, 0xA2, 0x30, 0xF0, 0x20, 0x68, -0xFF, 0x69, 0x8C, 0xE9, 0x07, 0xD3, 0xC0, 0xF3, -0x64, 0x98, 0x06, 0xD2, 0x24, 0x36, 0x08, 0x6A, -0x01, 0x6D, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF5, 0xD8, 0x9B, 0x01, 0x6D, 0x23, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x06, 0x93, -0xE9, 0xF5, 0x58, 0xA3, 0x03, 0x2A, 0x81, 0xF0, -0x07, 0x4A, 0x02, 0x10, 0xC1, 0xF0, 0x0A, 0x6A, -0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, -0xB1, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, -0x09, 0x6E, 0x40, 0xEA, 0x07, 0x92, 0x06, 0x72, -0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, -0x1F, 0x6D, 0x08, 0x6E, 0x09, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, -0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xFF, 0x68, 0x8C, 0xE8, 0xE9, 0xF5, 0x79, 0xA2, -0x06, 0xD2, 0x04, 0x32, 0x07, 0xD2, 0x08, 0xD3, -0x07, 0x93, 0x30, 0xF0, 0x20, 0x69, 0x08, 0x6A, -0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, -0xC3, 0x67, 0x07, 0xD3, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0x3F, 0x6D, 0xC5, 0x67, -0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, -0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x30, 0xF0, -0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, 0x23, 0xF3, -0x00, 0x6C, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, -0x40, 0xEA, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0xDF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x00, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0x9E, 0x6E, 0x20, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x06, 0x93, 0xE9, 0xF5, -0x78, 0xA3, 0x06, 0xD3, 0x35, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x1C, 0x4B, 0xE0, 0x9B, -0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x81, 0xF0, -0x07, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, -0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x1C, 0x4A, 0x06, 0x93, 0xE0, 0x9A, 0x91, 0x67, -0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x06, 0x93, 0x04, 0xD3, 0x3C, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x1C, 0x4B, -0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x61, 0xF0, 0x08, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x1C, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x00, 0x6B, 0x91, 0x67, -0xB0, 0x67, 0x33, 0x6E, 0x01, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x04, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x00, 0x6A, 0x04, 0xD2, -0x91, 0x67, 0x30, 0xF0, 0x21, 0x69, 0xB0, 0x67, -0xEF, 0x6E, 0x04, 0x6F, 0x12, 0xF5, 0x08, 0x49, -0x80, 0x18, 0x12, 0x59, 0x00, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x21, 0x6A, -0x34, 0xF7, 0x50, 0xA2, 0x01, 0x22, 0x20, 0x6A, -0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x7F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, -0x0C, 0x6C, 0xFF, 0x6D, 0x09, 0x6E, 0x40, 0xEA, -0x08, 0x93, 0x06, 0x73, 0x0A, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, -0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x08, 0x6E, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, -0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, -0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, -0x21, 0x68, 0x00, 0x69, 0x12, 0xF5, 0x08, 0x48, -0x0E, 0xD4, 0x0F, 0xD5, 0x90, 0x67, 0xB1, 0x67, -0xEF, 0x6E, 0x04, 0xD1, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, -0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0xEF, 0x6E, -0x04, 0xD1, 0x80, 0x18, 0x12, 0x59, 0x0E, 0x90, -0x0F, 0x91, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, -0x21, 0x6B, 0x12, 0xF5, 0x08, 0x4B, 0x06, 0xD3, -0x40, 0x99, 0xC0, 0x98, 0x83, 0x67, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, -0xE0, 0x9A, 0x00, 0x6D, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, -0xC0, 0x98, 0x41, 0x99, 0xE0, 0x9B, 0x06, 0x94, -0x01, 0x6D, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x07, 0x92, 0x04, 0x48, 0x08, 0x49, 0x01, 0x4A, -0x07, 0xD2, 0x07, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, -0x03, 0x73, 0x58, 0x67, 0x07, 0xD3, 0x08, 0xD2, -0xD6, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x1C, 0x9A, 0x06, 0x94, 0x78, 0x67, 0xF0, 0x67, -0x00, 0x6D, 0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x08, 0x92, 0x06, 0x94, 0xF0, 0x67, -0x01, 0x6D, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, -0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0xA4, 0x9B, -0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, 0x18, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x24, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x1C, 0x4A, 0x40, 0x9A, 0x30, 0xF0, -0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, 0x90, 0x67, -0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x04, 0x6B, 0x90, 0x67, -0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x90, 0x67, 0xF1, 0x67, -0x03, 0x6A, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x5C, 0x9A, 0x90, 0x67, 0xF1, 0x67, -0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, -0xF1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x1C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, -0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x04, 0x6B, 0x90, 0x67, 0x01, 0x6D, -0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, -0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, -0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, -0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x1C, 0x4B, -0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, -0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, -0x90, 0x67, 0x06, 0x6A, 0x00, 0x6D, 0x33, 0x6E, -0x0F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x03, 0x6B, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, -0x3E, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x44, 0x9A, -0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x00, 0x6A, -0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, 0xEF, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0x1C, 0x4B, 0x60, 0x9B, -0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, -0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, 0x90, 0x67, -0x06, 0x6A, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF5, 0x48, 0x9A, 0x90, 0x67, -0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x00, 0x6B, 0x90, 0x67, -0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x1C, 0x4A, 0x40, 0x9A, 0x90, 0x67, -0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x07, 0x6B, 0x90, 0x67, -0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x90, 0x67, 0xF1, 0x67, -0x03, 0x6A, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF5, 0x4C, 0x9A, 0x90, 0x67, 0xF1, 0x67, -0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, -0xF1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x1C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, -0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x07, 0x6B, 0x90, 0x67, 0x01, 0x6D, -0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, -0x50, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, -0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, -0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, -0x19, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, -0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, -0x19, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x4C, 0xED, 0x06, 0xD4, 0x07, 0xD5, 0x01, 0x68, -0x00, 0x69, 0x85, 0xF5, 0x1C, 0x6C, 0xFF, 0x6D, -0x80, 0x18, 0x0D, 0x28, 0x55, 0x72, 0x11, 0x61, -0x07, 0x92, 0x03, 0x2A, 0x00, 0x68, 0x50, 0x67, -0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0xB0, 0x9A, 0x03, 0xF3, 0x08, 0x6C, 0xFF, 0x68, -0x80, 0x18, 0x0D, 0x28, 0x4C, 0xE8, 0x00, 0x6A, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x64, 0x6C, 0x01, 0x49, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0x01, 0x6A, -0xA1, 0xF3, 0x18, 0x59, 0x02, 0x61, 0x01, 0x68, -0x01, 0x10, 0xD7, 0x2A, 0x06, 0x95, 0x30, 0xF0, -0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, 0x91, 0x67, -0x00, 0x6A, 0x8F, 0x6E, 0x08, 0xF0, 0x00, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x01, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x95, -0x03, 0xF5, 0xF4, 0x9A, 0x91, 0x67, 0x00, 0x6E, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x30, 0xF0, -0x20, 0x69, 0x40, 0xEA, 0x06, 0x92, 0x01, 0x6D, -0x08, 0x6B, 0x44, 0x36, 0xC0, 0xF3, 0x44, 0x99, -0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, -0x40, 0xEA, 0x0A, 0x28, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, -0x83, 0xF3, 0xA4, 0x9B, 0x02, 0x6E, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0x83, 0xF3, 0xA4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, -0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x00, 0x6A, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x05, 0xD5, -0x04, 0xD4, 0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x04, 0x4B, 0xE0, 0x9B, 0xC0, 0x9A, -0x30, 0xF0, 0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, -0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x9F, 0x58, -0x04, 0x93, 0x91, 0x67, 0x01, 0x6D, 0x40, 0xDB, -0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x04, 0x4B, 0xE0, 0x9B, 0xC0, 0x9A, 0x01, 0x48, -0x80, 0x18, 0x9F, 0x58, 0x04, 0x93, 0x41, 0xDB, -0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x08, 0x4B, -0x03, 0x70, 0x04, 0x4A, 0x05, 0xD2, 0x04, 0xD3, -0xD8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x04, 0x67, -0x30, 0xF0, 0x20, 0x6A, 0x2C, 0xE8, 0xC0, 0xF3, -0x44, 0x9A, 0x08, 0x6B, 0x04, 0x36, 0x01, 0x6D, -0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0xE4, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, -0x08, 0x4C, 0xB0, 0x67, 0x58, 0x6E, 0x80, 0x18, -0x9F, 0x58, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, -0x74, 0x9B, 0x4C, 0xEB, 0x62, 0x33, 0x7A, 0x33, -0x2C, 0xEB, 0x0B, 0x23, 0x3F, 0x73, 0x09, 0x60, -0x07, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x62, 0x32, -0x2C, 0xEA, 0x03, 0x22, 0x3F, 0x72, 0x00, 0x6A, -0x56, 0x61, 0x30, 0xF0, 0x21, 0x69, 0x12, 0xF5, -0x08, 0x49, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x57, 0x6E, 0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x21, 0x6A, 0x34, 0xF7, -0x50, 0xA2, 0x01, 0x22, 0x20, 0x6A, 0x91, 0x67, -0x30, 0xF0, 0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, -0xB0, 0x67, 0x33, 0x6E, 0x7F, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x20, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x08, 0x6E, 0x07, 0xF7, 0x00, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF5, 0xF4, 0x9A, 0x20, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, 0x91, 0x67, -0xB0, 0x67, 0x08, 0x6E, 0x80, 0x18, 0x9F, 0x58, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, -0xE0, 0x9B, 0x91, 0x67, 0xB0, 0x67, 0x58, 0x6E, -0x80, 0x18, 0x9F, 0x58, 0x00, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x01, 0x6A, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x68, 0x0C, 0xEC, 0x01, 0x74, 0xAC, 0xE8, -0x80, 0xF0, 0x0B, 0x60, 0x07, 0x24, 0x02, 0x74, -0x80, 0xF0, 0x1D, 0x60, 0x03, 0x74, 0x80, 0xF0, -0x1E, 0x60, 0xA2, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x6A, 0xF1, 0x78, 0x9A, -0x30, 0xF0, 0x21, 0x6C, 0x30, 0xF0, 0x21, 0x6D, -0x6A, 0xF1, 0x7C, 0xDA, 0x00, 0x6E, 0x30, 0xF0, -0x21, 0x6B, 0x30, 0xF0, 0x21, 0x6A, 0xD5, 0xF2, -0x08, 0x4C, 0xD5, 0xF2, 0x00, 0x4B, 0xB5, 0xF2, -0x1C, 0x4A, 0xB5, 0xF0, 0x0A, 0x4D, 0x04, 0xD6, -0xC0, 0x9C, 0x04, 0x97, 0x00, 0x69, 0xC2, 0xDC, -0xC0, 0xAB, 0xA5, 0xF0, 0x18, 0x4F, 0xE4, 0x37, -0xC2, 0xCB, 0xC0, 0xA2, 0x06, 0xD5, 0x05, 0xD1, -0xC2, 0xC2, 0x30, 0xF0, 0x20, 0x6E, 0x2B, 0xF1, -0x18, 0x4E, 0xFD, 0xE6, 0xC0, 0xA7, 0x22, 0x68, -0x04, 0x91, 0xC4, 0xC7, 0x05, 0x96, 0x18, 0xEE, -0x44, 0x6E, 0x12, 0xE8, 0xD8, 0xE9, 0x30, 0xF0, -0x20, 0x69, 0x2B, 0xF1, 0x18, 0x49, 0x12, 0xEE, -0xC1, 0xE0, 0xD0, 0x67, 0x49, 0xF7, 0x10, 0x4E, -0x6A, 0xF0, 0x00, 0x48, 0xD9, 0xE1, 0x01, 0xE1, -0x20, 0xAE, 0x80, 0xF0, 0x28, 0xCE, 0x20, 0xA8, -0x02, 0x4E, 0x80, 0xF0, 0x28, 0xC8, 0x06, 0x91, -0x02, 0x48, 0x2A, 0xEE, 0xF5, 0x61, 0x05, 0x96, -0x22, 0x49, 0x01, 0x4F, 0x01, 0x4E, 0x02, 0x76, -0x05, 0xD6, 0x06, 0xD1, 0xD7, 0x61, 0x04, 0x91, -0x04, 0x4C, 0x02, 0x4B, 0x01, 0x49, 0x02, 0x71, -0x04, 0xD1, 0x01, 0x4A, 0x44, 0x4D, 0xBC, 0x61, -0x30, 0xF0, 0x21, 0x6B, 0xB5, 0xF2, 0x1C, 0x4B, -0x44, 0x43, 0xA7, 0x43, 0x16, 0x4D, 0xC2, 0x67, -0x00, 0x6C, 0x80, 0xC3, 0x01, 0x4B, 0x00, 0x6C, -0xCA, 0xEB, 0x80, 0xCA, 0xFF, 0xF7, 0x88, 0xC2, -0x20, 0xF0, 0x85, 0xC2, 0xFF, 0xF7, 0x89, 0xC2, -0x20, 0xF0, 0x86, 0xC2, 0x80, 0xC5, 0x81, 0xC5, -0x82, 0xC5, 0x02, 0x4A, 0x03, 0x4D, 0xEC, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x8A, 0xF1, 0x60, 0x9A, 0x6A, 0xF1, 0x78, 0xDA, -0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0xE4, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, -0x12, 0xF5, 0x08, 0x4C, 0x58, 0x6E, 0x80, 0x18, -0x9F, 0x58, 0x62, 0xF4, 0x04, 0x48, 0x30, 0xF0, -0x20, 0x6B, 0x08, 0x30, 0x2B, 0xF1, 0x18, 0x4B, -0x6D, 0xE0, 0x40, 0xDB, 0x09, 0x10, 0x00, 0x6C, -0xB0, 0x67, 0xC4, 0x67, 0x03, 0x10, 0x01, 0x6C, -0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x03, 0x0D, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x04, 0x67, -0x4C, 0xE8, 0xAC, 0xEA, 0x0E, 0x22, 0x08, 0x6A, -0x04, 0x31, 0x4D, 0xE9, 0x01, 0x6B, 0x44, 0x40, -0x64, 0xEA, 0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, -0x08, 0x4A, 0x06, 0xD2, 0x6D, 0xE9, 0x06, 0x6A, -0x0D, 0x10, 0x08, 0x6A, 0x04, 0x31, 0x4D, 0xE9, -0x01, 0x6B, 0x44, 0x40, 0x64, 0xEA, 0x30, 0xF0, -0x21, 0x6A, 0x12, 0xF5, 0x08, 0x4A, 0x06, 0xD2, -0x6D, 0xE9, 0x04, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0x94, 0x03, 0xF5, 0xF4, 0x9A, -0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x12, 0x59, -0x06, 0x94, 0x08, 0xF0, 0x00, 0x6F, 0x01, 0x6B, -0x8F, 0x6E, 0xB0, 0x67, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x01, 0x6C, -0x80, 0x18, 0xDD, 0x0C, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x45, 0x0C, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0xD1, 0x67, -0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x01, 0x6D, 0xC1, 0x41, 0xAB, 0xED, 0x03, 0xF3, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x21, 0x6C, 0xEF, 0x6E, 0x10, 0x6F, -0x00, 0x6A, 0x12, 0xF5, 0x08, 0x4C, 0xB0, 0x67, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x01, 0x6D, -0x90, 0x67, 0x80, 0x18, 0x45, 0x0C, 0x00, 0x6C, -0x80, 0x18, 0xDD, 0x0C, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x65, 0x10, 0x22, 0x67, 0x04, 0x2A, -0x01, 0x6C, 0xB0, 0x67, 0x80, 0x18, 0x08, 0x11, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x41, 0xE0, 0x09, 0xF6, 0x29, 0xC0, 0x51, 0x67, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x04, 0x67, -0x4C, 0xED, 0x4C, 0xE8, 0x30, 0xF0, 0x21, 0x6A, -0x34, 0xF7, 0x51, 0xA2, 0x06, 0x6B, 0x08, 0xD5, -0x4E, 0xEB, 0x01, 0x5B, 0x98, 0x67, 0x07, 0xD4, -0x16, 0x2D, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, -0x01, 0x4A, 0x03, 0x10, 0x04, 0x4A, 0x04, 0x33, -0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, -0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF5, 0x08, 0x4A, 0x08, 0x69, 0x06, 0xD2, -0x6D, 0xE9, 0x04, 0x6A, 0x19, 0x10, 0x08, 0x93, -0x01, 0x73, 0x22, 0x61, 0x07, 0x94, 0x04, 0x24, -0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, -0x07, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, -0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, -0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, 0x08, 0x4A, -0x08, 0x69, 0x06, 0xD2, 0x6D, 0xE9, 0x06, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, -0x03, 0xF5, 0xF4, 0x9A, 0xB0, 0x67, 0x00, 0x6E, -0x80, 0x18, 0x12, 0x59, 0x01, 0x6A, 0x25, 0x10, -0x08, 0x93, 0x00, 0x69, 0x02, 0x73, 0x2F, 0x61, -0x07, 0x94, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, -0x01, 0x4A, 0x03, 0x10, 0x0A, 0x4A, 0x04, 0x33, -0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, -0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF5, 0x08, 0x4A, 0x06, 0xD2, 0x07, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, -0x03, 0xF5, 0xF4, 0x9A, 0x08, 0x69, 0xB0, 0x67, -0x00, 0x6E, 0x6D, 0xE9, 0x80, 0x18, 0x12, 0x59, -0x00, 0x6A, 0x06, 0x94, 0xB0, 0x67, 0x8F, 0x6E, -0x08, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x01, 0x6C, -0x80, 0x18, 0xDD, 0x0C, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0xD1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, -0x01, 0x6D, 0xC1, 0x41, 0xAB, 0xED, 0x03, 0xF3, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x01, 0x6D, 0x90, 0x67, 0x80, 0x18, 0x65, 0x10, -0x00, 0x6C, 0x06, 0xD2, 0x80, 0x18, 0xDD, 0x0C, -0x04, 0x32, 0x09, 0xD2, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x09, 0x93, 0x01, 0x6D, -0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x94, 0x1C, 0x2C, -0x7D, 0x67, 0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, -0x30, 0xF0, 0x20, 0x69, 0xB5, 0xF0, 0x48, 0x40, -0x06, 0x94, 0x44, 0x32, 0x2B, 0xF1, 0x18, 0x49, -0x29, 0xE2, 0x60, 0xC2, 0x48, 0x2C, 0x07, 0x92, -0x09, 0x22, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x4C, -0xAB, 0xED, 0x80, 0x18, 0x0D, 0x28, 0x62, 0xF4, -0x10, 0x48, 0x35, 0x10, 0x02, 0x6C, 0x38, 0x10, -0x08, 0x93, 0x02, 0x73, 0x38, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, 0x30, 0xF0, -0x21, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x2B, 0xF1, -0x18, 0x49, 0x12, 0xF5, 0x08, 0x4C, 0xB0, 0x67, -0x00, 0x6E, 0x80, 0x18, 0x9F, 0x58, 0xE9, 0xF5, -0x9E, 0xA1, 0xFF, 0x6B, 0x56, 0x32, 0x6C, 0xEA, -0x80, 0x34, 0xC5, 0xF0, 0x64, 0x40, 0x8D, 0xEA, -0x64, 0x33, 0x09, 0x94, 0x2D, 0xE3, 0x40, 0xCB, -0x7D, 0x67, 0x29, 0xE4, 0x87, 0x43, 0x11, 0x4C, -0x60, 0xA4, 0x06, 0x94, 0x6A, 0xF1, 0x71, 0xC2, -0x12, 0x2C, 0x07, 0x92, 0x0C, 0x22, 0x01, 0x6D, -0x23, 0xF3, 0x1C, 0x4C, 0xAB, 0xED, 0x80, 0x18, -0x0D, 0x28, 0x62, 0xF4, 0x12, 0x48, 0x08, 0x30, -0x25, 0xE0, 0x40, 0xD9, 0x04, 0x10, 0x03, 0x6C, -0xB0, 0x67, 0x80, 0x18, 0x08, 0x11, 0x06, 0x92, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, -0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x6A, 0x04, 0x67, -0x4C, 0xE8, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE9, 0xF5, 0x79, 0xA2, -0x30, 0xF0, 0x21, 0x6C, 0xF5, 0xF2, 0x18, 0x4C, -0x0D, 0xD3, 0x31, 0xF2, 0x62, 0x40, 0x6C, 0x33, -0x6D, 0xE2, 0x0C, 0xD5, 0x0A, 0xD3, 0x08, 0xD4, -0x00, 0x69, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x04, 0x4B, 0xE0, 0x9B, 0xFF, 0x6A, -0x30, 0xF0, 0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, -0x2C, 0xEA, 0x90, 0x67, 0xA2, 0x67, 0xDF, 0x6E, -0x06, 0xD2, 0x80, 0x18, 0x9F, 0x58, 0x10, 0x6B, -0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x04, 0x4A, 0x06, 0x95, 0xE0, 0x9A, 0x90, 0x67, -0xDF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, -0x0A, 0x93, 0x06, 0x95, 0x90, 0x67, 0x40, 0x9B, -0x58, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, -0xE0, 0x9A, 0x80, 0x18, 0x12, 0x59, 0xC0, 0xF3, -0x44, 0x98, 0x08, 0x6B, 0x24, 0x36, 0x01, 0x6D, -0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, -0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x0D, 0x93, 0x06, 0x73, 0x1C, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x08, 0x93, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0xC0, 0x9B, 0x23, 0xF3, 0x18, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x08, 0x93, 0x01, 0x6D, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x1C, 0x6C, -0xAB, 0xED, 0xC2, 0x9B, 0x21, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x18, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, -0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x0C, 0x94, 0x06, 0x24, 0x00, 0x6A, -0x01, 0x74, 0x06, 0xD2, 0xC0, 0xF0, 0x05, 0x61, -0x62, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF3, -0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, -0x40, 0xEA, 0x44, 0x6B, 0x78, 0xE9, 0x09, 0x94, -0x88, 0x6A, 0x00, 0x68, 0x12, 0xEB, 0x58, 0xEC, -0x12, 0xEA, 0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xF7, 0x10, 0x4A, 0x2B, 0xF1, 0x18, 0x4B, -0x4D, 0xE3, 0x06, 0xD3, 0x06, 0x92, 0x01, 0x6D, -0xC3, 0xF3, 0x18, 0x6C, 0xC0, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF4, 0x58, 0x9A, 0xC0, 0x36, -0xAB, 0xED, 0x4D, 0xEE, 0x08, 0x32, 0x4D, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x02, 0x4E, 0x01, 0x48, 0x40, 0xEA, 0x06, 0x93, -0x11, 0x70, 0x02, 0x4B, 0x06, 0xD3, 0xE6, 0x61, -0x44, 0x6B, 0x78, 0xE9, 0x09, 0x94, 0x88, 0x6A, -0x00, 0x68, 0x12, 0xEB, 0x58, 0xEC, 0x12, 0xEA, -0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, 0x6A, 0xF0, -0x00, 0x4A, 0x2B, 0xF1, 0x18, 0x4B, 0x4D, 0xE3, -0x06, 0xD3, 0x06, 0x92, 0x08, 0x33, 0x01, 0x6D, -0xC0, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, -0x58, 0x9A, 0xC0, 0x36, 0xC3, 0xF3, 0x18, 0x6C, -0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x6D, 0xEE, 0xAB, 0xED, 0x40, 0xEA, -0x06, 0x93, 0x01, 0x48, 0x11, 0x70, 0x02, 0x4B, -0x06, 0xD3, 0xE7, 0x61, 0xE7, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x83, 0xF3, 0xB4, 0x9B, 0x23, 0xF3, -0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x44, 0x6B, -0x78, 0xE9, 0x09, 0x94, 0x88, 0x6A, 0x00, 0x68, -0x12, 0xEB, 0x58, 0xEC, 0x12, 0xEA, 0x49, 0xE3, -0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF7, 0x12, 0x4A, -0x2B, 0xF1, 0x18, 0x4B, 0x4D, 0xE3, 0x06, 0xD3, -0x06, 0x92, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, -0xC0, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, -0x5C, 0x9A, 0xC0, 0x36, 0xAB, 0xED, 0x4D, 0xEE, -0x08, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x02, 0x4E, 0x01, 0x48, -0x40, 0xEA, 0x06, 0x93, 0x11, 0x70, 0x02, 0x4B, -0x06, 0xD3, 0xE6, 0x61, 0x44, 0x6B, 0x78, 0xE9, -0x09, 0x94, 0x88, 0x6A, 0x00, 0x68, 0x12, 0xEB, -0x58, 0xEC, 0x12, 0xEA, 0x49, 0xE3, 0x30, 0xF0, -0x20, 0x6B, 0x8A, 0xF0, 0x02, 0x4A, 0x2B, 0xF1, -0x18, 0x4B, 0x4D, 0xE3, 0x06, 0xD3, 0x06, 0x92, -0x08, 0x33, 0x01, 0x6D, 0xC0, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF4, 0x5C, 0x9A, 0xC0, 0x36, -0xC3, 0xF3, 0x18, 0x6C, 0x4D, 0xEE, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x6D, 0xEE, -0xAB, 0xED, 0x40, 0xEA, 0x06, 0x93, 0x01, 0x48, -0x11, 0x70, 0x02, 0x4B, 0x06, 0xD3, 0xE7, 0x61, -0x85, 0x10, 0x06, 0x94, 0xFF, 0x6A, 0x8C, 0xEA, -0x11, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF3, -0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, -0x58, 0x9A, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x83, 0xF3, 0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF4, 0x5C, 0x9A, 0x0B, 0xD2, 0x06, 0x92, -0x22, 0x6B, 0x09, 0x94, 0x78, 0xEA, 0x44, 0x6A, -0x00, 0x68, 0x12, 0xEB, 0x58, 0xE9, 0x12, 0xEA, -0x49, 0xE3, 0x88, 0x6B, 0x78, 0xEC, 0x12, 0xEB, -0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xF7, -0x10, 0x4A, 0x2B, 0xF1, 0x18, 0x4B, 0x4D, 0xE3, -0x07, 0xD3, 0x07, 0x92, 0x0B, 0x93, 0x01, 0x6D, -0xC0, 0xAA, 0x08, 0x32, 0xC3, 0xF3, 0x18, 0x6C, -0xC0, 0x36, 0x6D, 0xEE, 0x4D, 0xEE, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xAB, 0xED, -0x02, 0x4E, 0x40, 0xEA, 0x07, 0x94, 0x01, 0x48, -0x11, 0x70, 0x02, 0x4C, 0x07, 0xD4, 0xE9, 0x61, -0x06, 0x92, 0x22, 0x6B, 0x09, 0x94, 0x78, 0xEA, -0x44, 0x6A, 0x00, 0x68, 0x12, 0xEB, 0x58, 0xE9, -0x12, 0xEA, 0x49, 0xE3, 0x88, 0x6B, 0x78, 0xEC, -0x12, 0xEB, 0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, -0x6A, 0xF0, 0x00, 0x4A, 0x2B, 0xF1, 0x18, 0x4B, -0x4D, 0xE3, 0x07, 0xD3, 0x07, 0x92, 0x0B, 0x93, -0x01, 0x6D, 0xC0, 0xAA, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0xC0, 0x36, 0x6D, 0xEE, -0x08, 0x33, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x6D, 0xEE, 0x40, 0xEA, 0x07, 0x94, 0x01, 0x48, -0x11, 0x70, 0x02, 0x4C, 0x07, 0xD4, 0xEA, 0x61, -0x06, 0x92, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, -0x7F, 0xF7, 0x1B, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x63, 0xF3, 0xCC, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x00, 0x6B, 0x06, 0xD3, 0x06, 0x93, -0x06, 0x92, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6C, -0x8C, 0xEA, 0x64, 0x36, 0xC0, 0xF3, 0x64, 0x98, -0x07, 0xD2, 0x01, 0x6D, 0x08, 0x6A, 0x4D, 0xEE, -0x03, 0xF2, 0x01, 0x4C, 0xAB, 0xED, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, -0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, -0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x03, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x95, -0x03, 0xF5, 0xF4, 0x9A, 0x30, 0xF0, 0x21, 0x6C, -0x12, 0xF5, 0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, -0x12, 0x59, 0x06, 0x94, 0x01, 0x4C, 0x02, 0x74, -0x06, 0xD4, 0xA9, 0x61, 0x0A, 0x92, 0x08, 0x93, -0x01, 0x49, 0x04, 0x4A, 0x04, 0x4B, 0x02, 0x71, -0x0A, 0xD2, 0x08, 0xD3, 0xBF, 0xF5, 0x16, 0x61, -0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0x00, 0x6B, -0x8C, 0xEA, 0xAA, 0xF1, 0x7C, 0xC0, 0x2A, 0x2A, -0xE9, 0xF5, 0x5A, 0xA0, 0x27, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, 0x30, 0xF0, -0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, 0x00, 0x6D, -0x18, 0x6E, 0x80, 0x18, 0x9F, 0x58, 0x6A, 0xF1, -0x78, 0x98, 0x8A, 0xF1, 0x40, 0xD8, 0x00, 0x69, -0x4E, 0xEB, 0x05, 0x23, 0x6A, 0xF1, 0x7C, 0x98, -0x6E, 0xEA, 0x10, 0x2A, 0x01, 0x69, 0x02, 0x6D, -0x91, 0x67, 0x80, 0x18, 0x33, 0x12, 0x91, 0x67, -0x80, 0x18, 0xE4, 0x08, 0x01, 0x6C, 0x80, 0x18, -0x15, 0x09, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, -0xF5, 0xF2, 0x74, 0xC2, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x08, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x49, 0xA3, 0xF1, 0x1C, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xAA, 0xF1, -0xDC, 0xA1, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x0A, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x1C, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xAA, 0xF1, 0xDC, 0xA1, -0xA0, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, -0xAA, 0xF1, 0x5C, 0xA1, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0xB8, 0x9A, -0x63, 0xF6, 0x1C, 0x6C, 0x80, 0x18, 0x0D, 0x28, -0x06, 0x22, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, -0xD5, 0xF2, 0x78, 0xC2, 0x04, 0x10, 0x30, 0xF0, -0x21, 0x6B, 0xD5, 0xF2, 0x58, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, -0x30, 0xF0, 0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, -0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, -0x9F, 0x58, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x04, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x00, 0x6D, -0x18, 0x6E, 0x22, 0x67, 0x80, 0x18, 0x9F, 0x58, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x8A, 0xF1, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x5C, 0x9A, 0x09, 0xF6, 0x27, 0xC3, -0x2C, 0xEA, 0x42, 0x32, 0x42, 0x32, 0x09, 0xF6, -0x46, 0xC3, 0x06, 0xF0, 0x00, 0x6A, 0x2C, 0xEA, -0x42, 0x32, 0x52, 0x32, 0x09, 0xF6, 0x48, 0xC3, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x80, 0x18, -0xA0, 0x13, 0x00, 0x6C, 0x80, 0x18, 0x15, 0x09, -0x03, 0x28, 0x00, 0x6C, 0xA4, 0x67, 0x07, 0x10, -0x01, 0x70, 0x03, 0x61, 0x00, 0x6C, 0x01, 0x6D, -0x02, 0x10, 0x00, 0x6C, 0x02, 0x6D, 0x80, 0x18, -0x33, 0x12, 0x01, 0x6C, 0x80, 0x18, 0x15, 0x09, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xE9, 0xAC, 0xEA, -0x01, 0x72, 0x43, 0x61, 0x44, 0x41, 0x01, 0x6B, -0x64, 0xEA, 0x00, 0xF2, 0x08, 0x6A, 0x4D, 0xEB, -0x04, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0xF4, 0x9A, 0x30, 0xF0, 0x21, 0x68, -0x12, 0xF5, 0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, -0x00, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0x12, 0x59, -0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6F, 0xB1, 0x67, -0x04, 0xD4, 0x8F, 0x6E, 0x90, 0x67, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0x6C, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x06, 0x96, -0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x06, 0x96, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0xAB, 0xED, 0x01, 0x4E, 0x03, 0xF3, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x65, 0x10, -0xF0, 0x10, 0x02, 0x72, 0x01, 0x6A, 0xE0, 0xF0, -0x0C, 0x61, 0x30, 0xF0, 0x21, 0x6A, 0x34, 0xF7, -0x56, 0xA2, 0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, -0x12, 0x72, 0x01, 0x68, 0x09, 0x60, 0x1B, 0x72, -0x02, 0x68, 0x06, 0x60, 0x24, 0x68, 0x4E, 0xE8, -0x01, 0x58, 0x18, 0x67, 0x04, 0x6A, 0x03, 0xE2, -0x24, 0x32, 0x08, 0xD2, 0x08, 0x93, 0x08, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0x4D, 0xEB, 0xC0, 0xF3, -0x44, 0x9C, 0x01, 0x6D, 0xC3, 0x67, 0x08, 0xD3, -0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9B, 0x06, 0x93, 0x01, 0x6D, 0xAB, 0xED, -0xE9, 0xF5, 0xDE, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, -0x40, 0xEA, 0x44, 0x41, 0x01, 0x6C, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xEA, 0x00, 0xF3, 0x08, 0x6A, -0x4D, 0xEC, 0x80, 0xF3, 0x4C, 0x9B, 0x07, 0xD4, -0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xC0, 0xF3, 0x44, 0x9C, 0x07, 0x96, 0x01, 0x6D, -0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x07, 0x96, 0xC0, 0xF3, -0x44, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x01, 0x4E, -0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6C, 0x80, 0xF3, 0x4C, 0x9C, 0xC8, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x04, 0x4B, 0xE0, 0x9B, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF5, 0x08, 0x4A, 0x82, 0x67, 0xB1, 0x67, -0x00, 0x6E, 0x07, 0xD2, 0x80, 0x18, 0x9F, 0x58, -0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x65, 0x10, -0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF4, 0x1C, 0x4A, 0x41, 0xE0, 0x40, 0xA0, -0x06, 0x94, 0xE9, 0xF5, 0x5E, 0xC4, 0x70, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, -0x07, 0x94, 0xE0, 0x9A, 0xB1, 0x67, 0x00, 0x6E, -0x80, 0x18, 0x9F, 0x58, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0x67, 0x08, 0x96, 0xC0, 0xF3, 0x44, 0x9B, -0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xE3, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, -0x06, 0x93, 0x56, 0x34, 0x96, 0x32, 0x09, 0xF6, -0x40, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, -0xFF, 0x6B, 0x0B, 0x60, 0x03, 0x70, 0x03, 0x60, -0x01, 0x48, 0x6C, 0xE8, 0x4F, 0x10, 0x06, 0x94, -0x01, 0x6B, 0x03, 0x68, 0xAA, 0xF1, 0x75, 0xC4, -0x49, 0x10, 0x0A, 0x5A, 0x0B, 0x61, 0x04, 0x20, -0xFF, 0x48, 0x6C, 0xE8, 0x01, 0x6B, 0x0B, 0x10, -0x06, 0x94, 0x01, 0x6B, 0xAA, 0xF1, 0x75, 0xC4, -0x01, 0x6B, 0x09, 0x10, 0x06, 0x94, 0x00, 0x6B, -0xAA, 0xF1, 0x75, 0xC4, 0x00, 0x6B, 0x03, 0x20, -0x04, 0x58, 0x01, 0x61, 0x03, 0x68, 0x30, 0xF0, -0x20, 0x6C, 0x2B, 0xF1, 0x18, 0x4C, 0xAA, 0xF1, -0xB5, 0xA4, 0x01, 0x5D, 0xB8, 0x67, 0xAB, 0xED, -0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, 0x82, 0xF4, -0x1C, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, 0xE9, 0xF5, -0xBE, 0xC4, 0x0F, 0x2B, 0xE9, 0xF5, 0xDE, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x64, 0x9B, -0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0xE3, 0xF3, -0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x00, 0x6A, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x01, 0x6D, 0xE3, 0xF3, 0x08, 0x6C, -0xAB, 0xED, 0xFF, 0xF7, 0x1F, 0x6E, 0x40, 0xEA, -0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, -0x07, 0x63, 0x00, 0xEF, 0x01, 0x6B, 0xC8, 0x17, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x21, 0x6A, 0x34, 0xF7, 0x73, 0xA2, 0xFF, 0x68, -0x8C, 0xE8, 0x06, 0x5B, 0x01, 0x6A, 0x7C, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x68, 0x33, 0x62, 0xF4, -0x0C, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x90, 0x67, 0x80, 0x18, 0x10, 0x0E, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0x65, 0x11, 0x62, 0x10, -0x90, 0x67, 0x80, 0x18, 0xBE, 0x0D, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0xA9, 0x11, 0x52, 0x22, -0x03, 0x6C, 0x98, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x12, 0xEC, 0x71, 0xE4, -0xAA, 0xF1, 0xA2, 0xA4, 0x02, 0x5D, 0x04, 0x60, -0x01, 0x4D, 0xAA, 0xF1, 0xA2, 0xC4, 0xEB, 0x17, -0x61, 0xE0, 0x01, 0x6C, 0x39, 0x10, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0x55, 0x0D, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, -0xAA, 0xF1, 0x75, 0xC2, 0x90, 0x67, 0x02, 0x6D, -0x80, 0x18, 0xD6, 0x13, 0x2F, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0x34, 0x2B, 0xF1, 0x18, 0x4B, -0x6D, 0xE4, 0xAA, 0xF1, 0x8E, 0xA3, 0x0A, 0x5C, -0x25, 0x60, 0x01, 0x4C, 0xAA, 0xF1, 0x8E, 0xC3, -0xED, 0x17, 0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, -0x55, 0x0D, 0x90, 0x67, 0x02, 0x6D, 0x80, 0x18, -0xA9, 0x11, 0x18, 0x22, 0x03, 0x6C, 0x98, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x12, 0xEC, 0x71, 0xE4, 0xAA, 0xF1, 0xA3, 0xA4, -0x02, 0x5D, 0x04, 0x60, 0x01, 0x4D, 0xAA, 0xF1, -0xA3, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x02, 0x6C, -0x29, 0xF7, 0x94, 0xC0, 0x06, 0x6C, 0xE9, 0xF5, -0x9B, 0xC3, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xE9, 0xF5, 0x9B, 0xA3, -0x01, 0x4C, 0xF5, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE9, 0xF5, 0x7B, 0xA2, -0x01, 0x4B, 0xE9, 0xF5, 0x7B, 0xC2, 0x01, 0x6A, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE9, 0xF5, 0x79, 0xA2, 0xE9, 0xF5, 0x5C, 0xA2, -0x08, 0xD3, 0x06, 0x5A, 0x76, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x48, 0x32, 0x82, 0xF4, 0x04, 0x4B, -0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x00, 0x6C, -0x80, 0x18, 0x78, 0x14, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE9, 0xF5, 0x7B, 0xA2, -0x06, 0x73, 0xF5, 0x61, 0x2A, 0x10, 0x00, 0x6C, -0x80, 0x18, 0x00, 0x0F, 0x00, 0x6C, 0xA4, 0x67, -0x37, 0x10, 0x00, 0x6C, 0x80, 0x18, 0xC8, 0x0E, -0x00, 0x6C, 0xA4, 0x67, 0x80, 0x18, 0xA9, 0x11, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x09, 0xF6, 0x84, 0xA3, 0x01, 0x4C, 0x09, 0xF6, -0x84, 0xC3, 0x42, 0x22, 0xAA, 0xF1, 0x41, 0xA3, -0x03, 0x5A, 0x3E, 0x60, 0x01, 0x4A, 0xAA, 0xF1, -0x41, 0xC3, 0x43, 0x10, 0x01, 0x6C, 0x80, 0x18, -0x78, 0x14, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE9, 0xF5, 0x7B, 0xA2, 0x06, 0x73, -0xF5, 0x61, 0xE9, 0xF5, 0x7C, 0xA2, 0x01, 0x4B, -0xE9, 0xF5, 0x7C, 0xC2, 0x78, 0x67, 0xE9, 0xF5, -0x7B, 0xC2, 0x09, 0xF6, 0x64, 0xA2, 0x01, 0x4B, -0x09, 0xF6, 0x64, 0xC2, 0x2A, 0x10, 0x01, 0x6C, -0x80, 0x18, 0x00, 0x0F, 0x01, 0x6C, 0x00, 0x6D, -0x80, 0x18, 0x65, 0x11, 0x19, 0x10, 0x01, 0x6C, -0x80, 0x18, 0xC8, 0x0E, 0x01, 0x6C, 0x00, 0x6D, -0x80, 0x18, 0xA9, 0x11, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x09, 0xF6, 0x84, 0xA3, -0x01, 0x4C, 0x09, 0xF6, 0x84, 0xC3, 0x08, 0x22, -0xAA, 0xF1, 0x44, 0xA3, 0x03, 0x5A, 0x04, 0x60, -0x01, 0x4A, 0xAA, 0xF1, 0x44, 0xC3, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE9, 0xF5, 0x7C, 0xA2, 0x01, 0x4B, 0xE9, 0xF5, -0x7C, 0xC2, 0x30, 0xF0, 0x21, 0x6A, 0x34, 0xF7, -0x54, 0xA2, 0x06, 0x72, 0x80, 0xF0, 0x08, 0x61, -0x30, 0xF0, 0x21, 0x69, 0x00, 0x6A, 0xF5, 0xF2, -0x18, 0x49, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x6C, 0xEA, 0x06, 0x93, -0x07, 0xD2, 0x01, 0x6D, 0x64, 0x36, 0xC0, 0xF3, -0x64, 0x98, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, -0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x08, 0x92, 0x06, 0x72, 0x1A, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x99, -0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x01, 0x6D, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0xC2, 0x99, -0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, -0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x18, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xC0, 0x9B, 0x01, 0x6D, 0x23, 0xF3, -0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, -0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, -0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x03, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x95, -0x03, 0xF5, 0xF4, 0x9A, 0x30, 0xF0, 0x21, 0x6C, -0x12, 0xF5, 0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, -0x12, 0x59, 0x06, 0x92, 0x04, 0x49, 0x01, 0x4A, -0x02, 0x72, 0x06, 0xD2, 0x7F, 0xF7, 0x1E, 0x61, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x21, 0x6A, -0x34, 0xF7, 0x51, 0xA2, 0xFF, 0x69, 0x8C, 0xE9, -0x02, 0x72, 0x02, 0x6A, 0x05, 0xD2, 0x02, 0x60, -0x04, 0x6B, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6E, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, -0x03, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0x0D, 0x28, 0x04, 0xD2, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x08, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, -0x06, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, -0x01, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0x91, 0x67, -0x80, 0x18, 0xBE, 0x14, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE9, 0xF5, 0x7C, 0xA2, -0x06, 0x73, 0x0B, 0x60, 0x05, 0x21, 0x09, 0xF6, -0x44, 0xA2, 0x05, 0x93, 0x6E, 0xEA, 0x05, 0x22, -0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x64, 0x70, -0xEA, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x04, 0x96, 0x03, 0xF3, 0x08, 0x69, 0x01, 0x6D, -0x91, 0x67, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x04, 0x96, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, -0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, -0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, -0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x9F, 0x58, -0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF0, 0x00, 0x6C, -0x2B, 0xF1, 0x18, 0x4B, 0x4C, 0xEC, 0x8A, 0xF1, -0x40, 0xDB, 0x82, 0x32, 0x52, 0x32, 0x02, 0x72, -0x0A, 0x60, 0x03, 0x6C, 0x4E, 0xEC, 0x04, 0x24, -0x01, 0x72, 0x02, 0x6A, 0x07, 0x60, 0x05, 0x10, -0xE9, 0xF5, 0x99, 0xC3, 0x05, 0x10, 0x01, 0x6A, -0x01, 0x10, 0x00, 0x6A, 0xE9, 0xF5, 0x59, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x7C, 0x9B, -0x8A, 0xF1, 0x80, 0x9A, 0x8C, 0xEB, 0x62, 0x33, -0x62, 0x33, 0xE9, 0xF5, 0x78, 0xC2, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xF1, 0x63, 0x1D, 0x62, -0x1C, 0xD1, 0x1B, 0xD0, 0x08, 0xA4, 0x02, 0x6A, -0x01, 0x69, 0x0C, 0xEA, 0x46, 0x32, 0x18, 0xD2, -0x80, 0x18, 0x3A, 0x08, 0x80, 0x18, 0x87, 0x15, -0x80, 0x18, 0xA0, 0x13, 0x00, 0x6C, 0x80, 0x18, -0x15, 0x09, 0x90, 0x67, 0x2C, 0xEC, 0x00, 0x6D, -0x80, 0x18, 0x69, 0x13, 0x80, 0xF0, 0x00, 0x2A, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xE9, 0xF5, 0x7A, 0xA0, 0xE9, 0xF5, 0x5C, 0xC0, -0xE9, 0xF5, 0x5B, 0xC0, 0x01, 0x4B, 0xE9, 0xF5, -0x7A, 0xC0, 0x09, 0xF6, 0x44, 0xC0, 0x09, 0xF6, -0x25, 0xC0, 0x38, 0x6C, 0x80, 0x18, 0x98, 0x0C, -0x00, 0x6C, 0xAA, 0xF1, 0x58, 0xD8, 0xA4, 0x67, -0x80, 0x18, 0x08, 0x11, 0x30, 0xF0, 0x20, 0x6E, -0x30, 0xF0, 0x20, 0x6F, 0x04, 0x04, 0x0D, 0x05, -0x82, 0xF0, 0x10, 0x4E, 0x82, 0xF0, 0x1C, 0x4F, -0x80, 0x18, 0xE8, 0x0C, 0x30, 0xF0, 0x20, 0x6D, -0x07, 0x04, 0xE2, 0xF0, 0x10, 0x4D, 0x80, 0x18, -0xA7, 0x10, 0x00, 0x68, 0x80, 0x18, 0x0E, 0x0C, -0x01, 0x6C, 0x80, 0x18, 0x51, 0x09, 0x18, 0x94, -0x80, 0x18, 0x4B, 0x15, 0x00, 0x6C, 0x80, 0x18, -0x51, 0x09, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF0, -0x10, 0x4C, 0x07, 0x05, 0x80, 0x18, 0x99, 0x0F, -0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6F, -0x04, 0x04, 0x0D, 0x05, 0x82, 0xF0, 0x10, 0x4E, -0x82, 0xF0, 0x1C, 0x4F, 0x80, 0x18, 0xCB, 0x0B, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE9, 0xF5, 0x7C, 0xA2, 0x06, 0x73, 0x08, 0x60, -0xFF, 0x6B, 0x01, 0x48, 0x6C, 0xE8, 0x03, 0x70, -0x00, 0x6B, 0x09, 0xF6, 0x64, 0xC2, 0xD2, 0x61, -0x30, 0xF0, 0x20, 0x68, 0x00, 0x6C, 0x80, 0x18, -0xE4, 0x08, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0xFF, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x69, -0x91, 0x67, 0xFF, 0x6D, 0xAA, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, -0xFF, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0xFF, 0x6D, 0xAA, 0x6E, -0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0x15, 0x09, -0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, 0x00, 0x6A, -0x0F, 0x63, 0x00, 0xEF, 0xF2, 0x63, 0x1B, 0x62, -0x1A, 0xD0, 0x30, 0xF0, 0x20, 0x6D, 0x04, 0x67, -0x02, 0xF5, 0x1C, 0x4D, 0x04, 0x04, 0x54, 0x6E, -0x00, 0x18, 0x42, 0xD7, 0x00, 0x6A, 0x26, 0x20, -0x70, 0x67, 0x01, 0x73, 0x03, 0x60, 0x66, 0x33, -0x01, 0x4A, 0xFB, 0x17, 0x01, 0x6C, 0x01, 0x4A, -0x64, 0x67, 0x04, 0x10, 0x01, 0x4B, 0xFF, 0x6D, -0x84, 0x34, 0xAC, 0xEB, 0x63, 0xEA, 0xFA, 0x60, -0x64, 0x6B, 0x78, 0xE8, 0x05, 0x6D, 0x12, 0xE8, -0x9B, 0xE8, 0x01, 0x2C, 0xE5, 0xE8, 0x12, 0xEC, -0xBB, 0xEC, 0x01, 0x2D, 0xE5, 0xE8, 0x12, 0xEC, -0x15, 0x5C, 0x78, 0xEA, 0x12, 0xEA, 0x01, 0x61, -0x14, 0x6C, 0x7D, 0x67, 0x88, 0x34, 0x91, 0xE3, -0x64, 0x9C, 0x6B, 0xE2, 0x1B, 0x97, 0x1A, 0x90, -0x0E, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x26, 0x67, 0xE3, 0xF4, 0xC8, 0x9B, 0x05, 0x67, -0x01, 0x6D, 0x0D, 0xD7, 0x63, 0xF5, 0x10, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x00, 0x6A, 0x04, 0xD2, -0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xA8, -0xC0, 0x99, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEA, 0x04, 0x93, 0x04, 0x48, -0x04, 0x49, 0x01, 0x4B, 0x04, 0xD3, 0x04, 0x92, -0x0D, 0x93, 0x63, 0xEA, 0xEE, 0x61, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x14, 0x6C, -0xF0, 0x6D, 0x04, 0x6E, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, -0xFF, 0x68, 0xAC, 0xE8, 0xD0, 0x67, 0xA3, 0xF0, -0x04, 0x6C, 0x80, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0xD0, 0x67, 0xA8, 0xF1, 0x04, 0x6C, -0x80, 0x6D, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x68, -0x23, 0xF5, 0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x1F, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0xA8, 0xF1, 0x00, 0x6C, 0x1F, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x3C, 0x9A, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF0, 0x08, 0x6C, -0xB1, 0x67, 0x1F, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0xE8, 0xF1, 0x08, 0x6C, -0x1F, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0xAC, 0xEA, 0x08, 0xD4, 0x80, 0xF1, -0x16, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF4, -0x18, 0x6C, 0xB1, 0x67, 0xD1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x1C, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x0C, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x1C, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, -0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x0C, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x83, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x04, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x04, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xC0, 0x9B, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x83, 0xF4, 0x0C, 0x4B, 0x70, 0x12, 0x08, 0x93, -0x60, 0xF0, 0x5B, 0xA3, 0xE0, 0xF0, 0x1B, 0x22, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, -0x63, 0xF0, 0x00, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0x0E, 0xF0, 0x00, 0x6D, -0x67, 0xEE, 0xC3, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, -0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, -0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, -0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x1C, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, -0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, -0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x04, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x0C, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, -0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, -0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, -0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x1C, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, -0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, -0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x04, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, -0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, 0xB1, 0x67, -0xC0, 0xF3, 0x44, 0x98, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x0C, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0xA7, 0x10, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, -0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x08, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x83, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0xA3, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x00, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, +0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0xC0, 0x9B, 0xC9, 0x12, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x04, 0xD2, 0x2A, 0xF2, 0x40, 0xA2, 0xE0, 0xF0, +0x1B, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0xC4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF4, +0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x93, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x00, 0x6C, +0x89, 0xF6, 0xC6, 0xA3, 0x04, 0x6B, 0x0E, 0xF0, +0x00, 0x6D, 0x67, 0xEE, 0xC3, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, +0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x89, 0xF6, +0xC6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x0C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, +0x10, 0x6C, 0x89, 0xF6, 0xC6, 0xA2, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x10, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, +0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x89, 0xF6, +0xC6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x14, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, +0x10, 0x6C, 0x89, 0xF6, 0xC6, 0xA2, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x18, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, +0x23, 0xF0, 0x10, 0x6C, 0x89, 0xF6, 0xC6, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, +0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, +0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x89, 0xF6, +0xC6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x0C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, +0x10, 0x6C, 0x89, 0xF6, 0xC6, 0xA2, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x10, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, +0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x89, 0xF6, +0xC6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x14, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, +0x10, 0x6C, 0x89, 0xF6, 0xC6, 0xA2, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x18, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, +0x28, 0xF1, 0x10, 0x6C, 0x89, 0xF6, 0xC6, 0xA2, +0xB1, 0x67, 0xC0, 0xF3, 0x44, 0x98, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, +0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x63, 0x11, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0xA3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xC3, 0xF4, -0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF0, 0x10, 0x6C, +0x20, 0x6B, 0xC3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, @@ -28387,29 +26996,51 @@ u8 array_mp_8822c_fw_nic[] = { 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0xA3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x00, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0xE3, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, +0xE3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x0C, 0x4B, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x0C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0xC3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, @@ -28420,1449 +27051,3115 @@ u8 array_mp_8822c_fw_nic[] = { 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF4, 0x00, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x30, 0xF0, 0x20, 0x6B, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0xE3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6B, -0x6C, 0xED, 0x1E, 0xF0, 0x01, 0x4D, 0x6C, 0xED, -0x02, 0x5D, 0x6C, 0xEE, 0x09, 0x61, 0x02, 0xF0, -0x00, 0x76, 0x06, 0x60, 0xE1, 0xF7, 0x1F, 0x6A, -0x4E, 0xEE, 0x01, 0x5E, 0x58, 0x67, 0x20, 0xE8, -0x01, 0x6A, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x50, 0x6B, 0x78, 0xEA, 0xE0, 0xF0, 0x68, 0x44, -0x24, 0x67, 0x12, 0xEA, 0x90, 0xF0, 0x08, 0x42, -0x4D, 0xE3, 0x01, 0xE4, 0x04, 0xD3, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF5, 0xA4, 0x9A, 0x40, 0x98, -0xE3, 0xF7, 0x1F, 0x6E, 0x91, 0x67, 0x4C, 0xED, -0xA2, 0x35, 0xA2, 0x35, 0x4C, 0xEE, 0x80, 0x18, -0x61, 0x18, 0x02, 0x22, 0x00, 0x6A, 0x05, 0x10, -0x04, 0x92, 0x04, 0x48, 0x4A, 0xE8, 0xEB, 0x61, -0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x4C, 0xED, 0x4C, 0xEE, 0x01, 0x69, -0xC0, 0xF3, 0x44, 0x98, 0x2B, 0xE9, 0x0C, 0xD4, -0x05, 0xD5, 0x06, 0xD6, 0xB1, 0x67, 0x03, 0xF3, -0x00, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0xC3, 0xF3, 0x14, 0x6C, -0xF0, 0x6E, 0x40, 0xEA, 0x05, 0x93, 0x50, 0x6A, -0x03, 0xF3, 0x0C, 0x68, 0x58, 0xEB, 0x0C, 0x93, -0x00, 0x69, 0x12, 0xEA, 0x7F, 0x4A, 0x19, 0x4A, -0x49, 0xE3, 0x04, 0xD2, 0x05, 0x92, 0x90, 0x67, -0x05, 0x22, 0x87, 0x40, 0x51, 0x4C, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xEC, 0x06, 0x93, 0x0A, 0x2B, -0x03, 0x71, 0x03, 0x60, 0xE3, 0xF7, 0x1F, 0x6E, -0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF5, -0xC8, 0x9A, 0x02, 0x10, 0x04, 0x92, 0xC0, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x04, 0x93, -0xFF, 0x6A, 0x01, 0x49, 0x4C, 0xE9, 0x04, 0x4B, -0x04, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, 0x14, 0x71, -0x04, 0xD3, 0x4C, 0xE8, 0xD7, 0x61, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x24, 0x67, 0x0F, 0x6D, 0x03, 0xF3, 0x00, 0x6C, -0x0C, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x60, 0xF0, 0xD9, 0xA1, 0x03, 0xF3, -0x08, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0x18, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xA0, 0x9B, 0x60, 0xF0, 0xD9, 0xA1, 0x63, 0xF3, -0x00, 0x6C, 0x40, 0xEA, 0x60, 0xF0, 0x58, 0xA1, -0x2C, 0x22, 0x60, 0xF0, 0x5E, 0xA9, 0x01, 0x6B, -0x6C, 0xEA, 0x10, 0x22, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, -0xC3, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x20, 0xF1, 0xD8, 0xA9, 0x03, 0xF3, 0x04, 0x6C, -0xFF, 0x6D, 0x40, 0xEA, 0x60, 0xF0, 0x5E, 0xA9, -0x02, 0x6B, 0x6C, 0xEA, 0x3C, 0x22, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF3, -0x00, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, -0x1C, 0x6C, 0xFF, 0x6D, 0x20, 0xF1, 0xDA, 0xA9, -0x29, 0x10, 0x60, 0xF0, 0x5E, 0xA9, 0x01, 0x6B, -0x6C, 0xEA, 0x0F, 0x22, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, -0x03, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x04, 0x6C, 0xFF, 0x6D, 0x5B, 0x6E, -0x40, 0xEA, 0x60, 0xF0, 0x5E, 0xA9, 0x02, 0x6B, -0x6C, 0xEA, 0x11, 0x22, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF3, 0x00, 0x6C, -0x18, 0xF0, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, 0x1C, 0x6C, -0xFF, 0x6D, 0x5B, 0x6E, 0x40, 0xEA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0x43, 0xF5, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x20, 0xF5, 0x00, 0x6C, 0xFF, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, 0x10, 0x6C, -0x0F, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF5, 0x34, 0x9A, 0x30, 0xF0, -0x21, 0x68, 0x12, 0xF5, 0x08, 0x48, 0x00, 0x6D, -0x90, 0x67, 0xC5, 0x67, 0xF1, 0x67, 0x80, 0x18, -0x9F, 0x58, 0xFF, 0x6B, 0x4C, 0xEB, 0x90, 0x67, -0xF1, 0x67, 0x01, 0x6D, 0x00, 0x6E, 0x04, 0xD3, -0xFF, 0x69, 0x80, 0x18, 0x9F, 0x58, 0x4C, 0xE9, -0x00, 0x68, 0x27, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x14, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, -0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, 0x00, 0x6D, -0x91, 0x67, 0xC5, 0x67, 0x80, 0x18, 0x9F, 0x58, -0xFF, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x14, 0x4A, 0xE0, 0x9A, 0x91, 0x67, -0x01, 0x6D, 0x00, 0x6E, 0x04, 0xD3, 0xFF, 0x69, -0x80, 0x18, 0x9F, 0x58, 0x4C, 0xE9, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x02, 0x6C, -0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE8, 0x04, 0x93, 0x02, 0x73, 0x02, 0x60, -0x02, 0x71, 0x03, 0x61, 0xC1, 0xF1, 0x04, 0x70, -0xD1, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x04, 0x67, 0x80, 0x18, -0xF0, 0x18, 0x60, 0xF0, 0x5B, 0xA0, 0x1E, 0x22, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF6, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x38, 0x9A, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x04, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xA8, 0xF1, 0x04, 0x6C, 0xB1, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0xB4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0x04, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, -0xE0, 0xF1, 0x1F, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x38, 0x9A, 0xC0, 0xF3, +0x20, 0x6B, 0xE3, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x0C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, +0x18, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x30, 0xF0, +0x20, 0x68, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF2, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, +0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, +0x18, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF1, 0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x04, 0x6C, 0xB1, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x68, 0xF1, 0x04, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x08, 0xF1, -0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x63, 0xF0, 0x0C, 0x6C, 0x80, 0x6D, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x68, 0xF1, 0x0C, 0x6C, 0x80, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x68, 0xF1, 0x04, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, +0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x0C, 0x6C, -0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, -0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0xF0, 0x0C, 0x6C, 0x0F, 0x6D, -0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF5, 0xB4, 0x9B, -0x21, 0xF0, 0x04, 0x69, 0x91, 0x67, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF3, 0xBC, 0x9B, 0x91, 0x67, +0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x63, 0xF0, 0x0C, 0x6C, 0x80, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x68, 0xF1, 0x0C, 0x6C, 0x80, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, +0xC5, 0x67, 0x03, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, +0x08, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF2, 0x00, 0x6C, 0x03, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x06, 0x67, 0xE3, 0xF4, +0xDC, 0x9B, 0x09, 0xD5, 0x01, 0x6D, 0x24, 0x67, +0x0B, 0xD7, 0x63, 0xF5, 0x10, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x00, 0x6A, 0x80, 0x98, 0x1F, 0xF7, +0x00, 0x6B, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6C, +0x60, 0x98, 0x63, 0xF1, 0x88, 0x9C, 0x6D, 0xE4, +0x80, 0x99, 0x80, 0xDB, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, 0x91, 0xE3, +0x60, 0x99, 0x60, 0xDC, 0x01, 0x4A, 0xFF, 0x6B, +0x6C, 0xEA, 0x03, 0x72, 0x04, 0x48, 0x04, 0x49, +0xE1, 0x61, 0x00, 0x68, 0x0B, 0x92, 0x30, 0xF0, +0x20, 0x69, 0x01, 0x6D, 0x11, 0xE2, 0x09, 0x92, +0x80, 0xAC, 0xAB, 0xED, 0x0D, 0xE2, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0x04, 0x48, 0x40, 0xEA, +0x2C, 0x70, 0xF0, 0x61, 0x30, 0xF0, 0x21, 0x6A, +0x75, 0xF3, 0x51, 0xA2, 0x01, 0x72, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, +0x03, 0xF0, 0x0C, 0x6C, 0x23, 0xF1, 0xBC, 0x9B, +0x00, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF1, 0xBC, 0x9B, +0x03, 0xF0, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x21, 0x6A, 0x75, 0xF3, 0x53, 0xA2, +0x01, 0x72, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, +0x08, 0xF1, 0x0C, 0x6C, 0x23, 0xF1, 0xBC, 0x9B, +0x00, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, +0x23, 0xF1, 0xBC, 0x9B, 0x08, 0xF1, 0x0C, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x21, 0x6A, +0xB5, 0xF3, 0x40, 0xA2, 0x1E, 0x22, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, +0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x3C, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0xA3, 0xF0, 0x04, 0x6C, 0xB1, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xA8, 0xF1, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, +0x44, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, +0x20, 0x68, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0xB8, 0x9B, +0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF5, 0xA0, 0x9B, 0xC3, 0xF4, 0x10, 0x6C, +0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF1, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF5, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, 0xCB, 0xEE, +0xA6, 0x67, 0x23, 0xF4, 0x18, 0x6C, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, +0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF5, 0xA4, 0x9B, 0x21, 0xF0, 0x04, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, 0xEC, 0x9B, +0xFF, 0x6A, 0x04, 0x6B, 0xC0, 0xA7, 0x4C, 0xED, +0x4C, 0xEC, 0x4C, 0xEE, 0xCD, 0xEB, 0x4C, 0xEB, +0x60, 0xC7, 0x06, 0x2D, 0x07, 0x6B, 0x07, 0x24, +0x01, 0x74, 0x07, 0x6B, 0x12, 0x61, 0x0C, 0x10, +0x07, 0x2C, 0x79, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF3, 0x48, 0x9A, 0x08, 0x10, +0x01, 0x74, 0x07, 0x61, 0x79, 0x6B, 0x6B, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x48, 0x9A, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, +0x4C, 0x9A, 0xC0, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x6A, 0x25, 0x67, 0x04, 0xD6, 0x05, 0xD2, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, -0xC0, 0x99, 0xE0, 0x9B, 0x30, 0xF0, 0x21, 0x68, -0x12, 0xF5, 0x08, 0x48, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x9F, 0x58, 0x04, 0x93, 0x90, 0x67, -0x01, 0x6D, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x04, 0x4A, 0xC0, 0x99, 0xE0, 0x9A, -0x04, 0x49, 0x80, 0x18, 0x9F, 0x58, 0x04, 0x93, -0x41, 0xDB, 0x05, 0x92, 0x08, 0x4B, 0x04, 0xD3, -0x01, 0x4A, 0x07, 0x72, 0x05, 0xD2, 0xDC, 0x61, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, -0x20, 0x68, 0x2C, 0xEE, 0xC0, 0xF3, 0x64, 0x98, -0x08, 0x6A, 0x04, 0xD6, 0x2C, 0xEF, 0xC4, 0x36, -0x0A, 0xD4, 0x0B, 0xD5, 0x4D, 0xEE, 0x05, 0xD7, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEB, -0x05, 0x92, 0x0C, 0x22, 0x0B, 0x96, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xFA, 0x4E, -0x63, 0xF3, 0x04, 0x6C, 0x03, 0xF5, 0xA0, 0x9B, -0x2C, 0xEE, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF5, 0xA0, 0x9B, -0x63, 0xF3, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x0A, 0x93, 0x04, 0x92, 0x63, 0xF3, 0x04, 0x6C, -0x41, 0xE3, 0x7D, 0x67, 0x47, 0x43, 0x0D, 0x4A, -0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0xA0, 0x9A, 0x80, 0xF0, 0x73, 0xC0, 0x80, 0x18, -0x0D, 0x28, 0x80, 0xF0, 0x55, 0xC0, 0x0A, 0x94, -0x04, 0x95, 0x05, 0x96, 0x80, 0x18, 0x81, 0x18, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEF, -0x4C, 0xED, 0x24, 0x67, 0x0C, 0xD6, 0x04, 0xD7, -0x05, 0x2D, 0xA7, 0x67, 0x80, 0x18, 0x6B, 0x18, -0x01, 0x68, 0x01, 0x2A, 0x00, 0x68, 0x0C, 0x95, -0x04, 0x96, 0x91, 0x67, 0xF0, 0x67, 0x80, 0x18, -0x8F, 0x19, 0x50, 0x67, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xE3, 0xF3, 0x1C, 0x68, 0x01, 0x6D, 0x90, 0x67, -0xAB, 0xED, 0x80, 0x18, 0x0D, 0x28, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF5, 0xB0, 0x9A, 0x90, 0x67, -0xFF, 0xF7, 0x1F, 0x69, 0x80, 0x18, 0x0D, 0x28, -0x90, 0x67, 0xB1, 0x67, 0x04, 0xD2, 0x80, 0x18, -0x0D, 0x28, 0xE3, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, -0x04, 0xF0, 0x00, 0x6C, 0x53, 0xE4, 0x04, 0x92, -0x6C, 0xEC, 0xFF, 0x4C, 0x4C, 0xEB, 0x2C, 0xEC, -0x60, 0x32, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x40, 0x32, 0x8D, 0xEA, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0xAC, 0xEA, 0x30, 0xF0, 0x20, 0x68, -0x05, 0xD2, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0x24, 0x67, 0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, -0x0C, 0x6E, 0x40, 0xEA, 0x05, 0x93, 0x0F, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF2, 0xB8, 0x9B, 0xA3, 0xF3, 0x14, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x04, 0x6C, 0x11, 0x10, 0x05, 0x94, -0x01, 0x74, 0x15, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0xB8, 0x9B, -0xA3, 0xF3, 0x14, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, 0x1C, 0x6C, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0xD4, 0x9B, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0x43, 0xF5, 0xD8, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, 0x05, 0x94, -0x50, 0x6D, 0xB8, 0xEC, 0xAF, 0x4D, 0xC3, 0xF3, -0x14, 0x6C, 0x12, 0xEB, 0x6D, 0xE1, 0x04, 0xD3, -0x80, 0xF0, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0x43, 0xF5, 0xDC, 0x9A, -0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, -0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0x80, 0xF0, -0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0x63, 0xF5, 0xC0, 0x9A, 0xC3, 0xF3, -0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC4, 0x19, 0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, -0xA0, 0xF0, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0x63, 0xF5, 0xC4, 0x9A, -0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, -0x80, 0x18, 0xC4, 0x19, 0x04, 0x95, 0xC3, 0xF3, -0x14, 0x6C, 0xA0, 0xF0, 0x44, 0xDD, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x63, 0xF5, -0xC8, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, 0x04, 0x93, -0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, 0x48, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x63, 0xF5, 0xCC, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, -0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, -0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, -0x4C, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0x63, 0xF5, 0xD0, 0x9A, 0xC3, 0xF3, -0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC4, 0x19, 0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, -0xA0, 0xF0, 0x50, 0xDD, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0x63, 0xF5, 0xD4, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, -0x80, 0x18, 0xC4, 0x19, 0x04, 0x93, 0x01, 0x6D, -0xAB, 0xED, 0xA0, 0xF0, 0x54, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x63, 0xF5, -0xD8, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, 0x04, 0x94, -0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, 0x58, 0xDC, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x63, 0xF5, 0xDC, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, -0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, -0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, 0xA0, 0xF0, -0x5C, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0x83, 0xF5, 0xC0, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC4, 0x19, 0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, -0xC0, 0xF0, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0x83, 0xF5, 0xC4, 0x9A, -0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, -0x80, 0x18, 0xC4, 0x19, 0x04, 0x94, 0x01, 0x6D, -0xAB, 0xED, 0xC0, 0xF0, 0x44, 0xDC, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x83, 0xF5, -0xC8, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, 0x05, 0x93, -0x50, 0x6C, 0x01, 0x6D, 0x01, 0x4B, 0x98, 0xEB, -0xAB, 0xED, 0x83, 0xF3, 0x04, 0x4C, 0x12, 0xEB, -0x6D, 0xE1, 0x5E, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0x83, 0xF5, 0xCC, 0x9A, -0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, -0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, 0xC0, 0xF0, -0x4C, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0x83, 0xF5, 0xD0, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC4, 0x19, 0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, -0xC0, 0xF0, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0x83, 0xF5, 0xD4, 0x9A, -0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, -0x80, 0x18, 0xC4, 0x19, 0x04, 0x94, 0x01, 0x6D, -0xAB, 0xED, 0xC0, 0xF0, 0x54, 0xDC, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x83, 0xF5, -0xD8, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, 0x04, 0x95, -0xC3, 0xF3, 0x14, 0x6C, 0xC0, 0xF0, 0x58, 0xDD, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x83, 0xF5, 0xDC, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xC4, 0x19, -0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0xC0, 0xF0, -0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0xA3, 0xF5, 0xC0, 0x9A, 0xC3, 0xF3, -0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC4, 0x19, 0x04, 0x94, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0xC4, 0x9B, 0xE0, 0xF0, 0x40, 0xDC, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xAB, 0xED, -0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEA, 0x91, 0x67, -0x80, 0x18, 0xC4, 0x19, 0x04, 0x95, 0xE0, 0xF0, -0x44, 0xDD, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xFF, 0x6A, 0x4C, 0xED, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0x6B, 0xA4, 0x36, 0x6D, 0xEE, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF3, 0x08, 0x69, 0x91, 0x67, -0x08, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0xC8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, -0x14, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xE3, 0xF3, -0x1C, 0x6C, 0xF0, 0x6D, 0x80, 0x18, 0x0D, 0x28, -0x04, 0xD2, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x04, 0x92, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0xFF, 0x6B, 0x6C, 0xEA, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6A, 0x4C, 0xED, -0x4C, 0xEE, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0x6B, 0x2B, 0xE9, 0x04, 0xD6, 0xA4, 0x36, -0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, -0x08, 0x6C, 0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, -0x14, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF3, 0x0C, 0x6C, 0xB1, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x22, -0x02, 0x72, 0x00, 0x68, 0x2C, 0x60, 0x44, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF2, 0xDC, 0x9B, 0xB1, 0x67, 0x43, 0xF3, -0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF5, 0xB0, 0x9A, 0xE3, 0xF3, 0x1C, 0x69, -0x91, 0x67, 0x80, 0x18, 0x0D, 0x28, 0x91, 0x67, -0xFF, 0xF7, 0x1F, 0x6D, 0x02, 0x67, 0x80, 0x18, -0x0D, 0x28, 0x22, 0x67, 0x42, 0x32, 0x5E, 0x32, -0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x5C, 0x9A, 0x27, 0xE2, 0x02, 0x32, 0x5E, 0x32, -0x21, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x5C, 0x9A, 0x03, 0xE2, 0x1B, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0x7C, 0x9B, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x69, -0x2B, 0xE9, 0x00, 0xF6, 0x00, 0x36, 0x43, 0xF3, -0x0C, 0x6C, 0xB1, 0x67, 0x6D, 0xEE, 0x40, 0xEA, -0x01, 0x48, 0xE3, 0xF3, 0x1C, 0x6C, 0xB1, 0x67, -0x80, 0x18, 0x0D, 0x28, 0x40, 0x70, 0xE7, 0x61, -0x00, 0x68, 0x30, 0x67, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0x43, 0xF3, -0x0C, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, -0x18, 0xE8, 0x09, 0x97, 0x12, 0xE8, 0x38, 0xE9, -0x12, 0xE9, 0x29, 0xE0, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, -0x0C, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF5, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x00, 0x6E, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0xB0, 0x9A, -0xE3, 0xF3, 0x1C, 0x6C, 0x80, 0x18, 0x0D, 0x28, -0x05, 0x97, 0x04, 0x90, 0xFF, 0xF7, 0x1F, 0x6B, -0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF5, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, -0x01, 0x6D, 0xC3, 0xF3, 0x14, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0xB0, 0x9A, 0xE3, 0xF3, 0x1C, 0x69, 0x91, 0x67, -0x80, 0x18, 0x0D, 0x28, 0xFF, 0xF7, 0x1F, 0x68, -0x91, 0x67, 0xE1, 0xF7, 0x1F, 0x6D, 0x4C, 0xE8, -0xFF, 0xF7, 0x1F, 0x69, 0x80, 0x18, 0x0D, 0x28, -0x4C, 0xE9, 0x02, 0x32, 0x4E, 0x32, 0x01, 0x72, -0x06, 0x61, 0x02, 0xF0, 0x00, 0x6A, 0x03, 0xE2, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x22, 0x32, -0x4E, 0x32, 0x01, 0x72, 0x06, 0x61, 0x02, 0xF0, -0x00, 0x6A, 0x27, 0xE2, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x01, 0x6D, 0xF0, 0x6E, 0xC3, 0xF3, -0x14, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xE3, 0xF3, -0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0x0D, 0x28, -0xE3, 0xF3, 0x1C, 0x6C, 0x1F, 0xF7, 0x00, 0x6D, -0x04, 0xD2, 0x80, 0x18, 0x0D, 0x28, 0xC9, 0x58, -0x0C, 0x60, 0xC9, 0x59, 0x0A, 0x60, 0x04, 0x93, -0xFF, 0x6A, 0x6C, 0xEA, 0x28, 0x5A, 0x05, 0x61, -0x42, 0x5A, 0x58, 0x67, 0x01, 0x6B, 0x6E, 0xEA, -0x01, 0x10, 0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0xB8, 0x9A, 0x04, 0x67, -0x63, 0xF6, 0x1C, 0x6C, 0x80, 0x18, 0x0D, 0x28, -0x01, 0x22, 0x01, 0x6A, 0x60, 0xF0, 0x5B, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, -0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, -0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x9F, 0x58, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x7C, 0x9B, -0x80, 0xF0, 0x50, 0xC0, 0x05, 0x97, 0x4C, 0xEB, -0x62, 0x33, 0x62, 0x33, 0x80, 0xF0, 0x71, 0xC0, -0x06, 0xF0, 0x00, 0x6B, 0x4C, 0xEB, 0x62, 0x33, -0x72, 0x33, 0x80, 0xF0, 0x72, 0xC0, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6A, 0x0D, 0xD7, -0x05, 0x67, 0x26, 0x67, 0x04, 0xD2, 0x0B, 0x10, -0x80, 0xA8, 0x01, 0x6D, 0xAB, 0xED, 0x80, 0x18, -0x0D, 0x28, 0x40, 0xD9, 0x04, 0x93, 0x04, 0x48, -0x04, 0x49, 0x01, 0x4B, 0x04, 0xD3, 0x04, 0x92, -0x0D, 0x93, 0x63, 0xEA, 0xF1, 0x61, 0x09, 0x97, +0xFF, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0xCC, 0xEC, +0xC0, 0xF3, 0x44, 0x98, 0xAC, 0xEE, 0x01, 0x69, +0x08, 0x6B, 0x2B, 0xE9, 0xC4, 0x36, 0x04, 0xD4, +0xB1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0x6D, 0xEE, +0x40, 0xEA, 0x04, 0x92, 0x12, 0x2A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0x18, 0x6C, 0xB1, 0x67, 0x03, 0xF5, 0xCC, 0x9B, +0x11, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF5, 0xD0, 0x9B, 0xC3, 0xF3, +0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0xD0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x30, 0xF0, 0x20, 0x68, +0xC3, 0xF3, 0x18, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, +0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x1C, 0x4B, -0xE0, 0x9B, 0xFF, 0x69, 0x30, 0xF0, 0x21, 0x68, -0xAC, 0xE9, 0x12, 0xF5, 0x08, 0x48, 0x90, 0x67, -0xB1, 0x67, 0x01, 0x6A, 0x42, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x00, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x1C, 0x4A, -0xE0, 0x9A, 0x90, 0x67, 0xB1, 0x67, 0x42, 0x6E, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x1C, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, -0xB1, 0x67, 0x90, 0x67, 0x42, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0F, 0x6C, 0x40, 0xEA, -0x90, 0x67, 0xB1, 0x67, 0x42, 0x6E, 0x7E, 0x6F, -0x80, 0x18, 0x9F, 0x58, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0xFF, 0x6B, 0x6C, 0xEA, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6A, 0x0A, 0xD4, -0x60, 0xF0, 0x5E, 0xCC, 0x0A, 0x90, 0x04, 0xD4, -0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x9A, 0x24, 0x36, 0x08, 0x6A, 0x4D, 0xEE, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x43, 0xF3, 0x18, 0x6C, 0x7F, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x00, 0x6A, 0x80, 0xF0, 0x55, 0xC0, -0x80, 0xF0, 0x53, 0xC0, 0x04, 0x94, 0x5B, 0x6B, -0xB1, 0x67, 0x20, 0xF1, 0x78, 0xCC, 0x80, 0xF0, -0x44, 0xC0, 0x0A, 0x94, 0x01, 0x49, 0x80, 0x18, -0x7A, 0x1B, 0x80, 0xF0, 0x40, 0xC0, 0x04, 0x92, -0x02, 0x71, 0x01, 0x48, 0x02, 0x4A, 0x04, 0xD2, -0xD4, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x0C, 0xD4, 0x80, 0xF0, -0x51, 0xA4, 0xFF, 0x68, 0xAC, 0xE8, 0x07, 0xD2, -0x5D, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x04, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0x9B, -0xA3, 0xF5, 0x54, 0x9A, 0x30, 0xF0, 0x21, 0x69, -0x12, 0xF5, 0x08, 0x49, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, -0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, -0x80, 0x18, 0x9F, 0x58, 0x06, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0xFC, 0x9A, 0x01, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x01, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0xFC, 0x9A, -0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x93, -0xA3, 0xF5, 0xF8, 0x9A, 0x91, 0x67, 0xB0, 0x67, -0x55, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, -0xE0, 0x9B, 0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, -0x56, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x55, 0x6E, -0x1C, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x07, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0x91, 0x67, -0x04, 0xD3, 0xB0, 0x67, 0x87, 0x6E, 0x63, 0xF2, -0xF8, 0x9A, 0x6B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF5, 0x54, 0x9A, 0x30, 0xF0, 0x21, 0x69, -0x12, 0xF5, 0x08, 0x49, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, -0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x04, 0x4B, 0xE0, 0x9B, 0x91, 0x67, 0xB0, 0x67, -0x56, 0x6E, 0x80, 0x18, 0x9F, 0x58, 0x06, 0xD2, -0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0xFC, 0x9A, 0x91, 0x67, 0xB0, 0x67, -0xDE, 0x6E, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0xFC, 0x9A, 0x01, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x00, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF5, 0xF8, 0x9A, -0x91, 0x67, 0xB0, 0x67, 0x55, 0x6E, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x04, 0x4A, 0x06, 0x93, 0xE0, 0x9A, 0x91, 0x67, -0xB0, 0x67, 0x56, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0x12, 0x59, 0x00, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0x63, 0x6E, 0x18, 0xF0, 0x00, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x06, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x63, 0x6E, 0x1C, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x63, 0x6E, 0x06, 0xF0, 0x00, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x00, 0x6B, -0x04, 0xD3, 0x91, 0x67, 0xB0, 0x67, 0x8A, 0x6E, -0x18, 0x6F, 0x80, 0x18, 0x12, 0x59, 0x91, 0x67, -0x30, 0xF0, 0x21, 0x69, 0x0F, 0x6A, 0xB0, 0x67, -0x00, 0x6E, 0xE0, 0xF3, 0x00, 0x6F, 0x12, 0xF5, -0x08, 0x49, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, -0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x1A, 0x6E, -0x01, 0xF4, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x0C, 0x93, 0x80, 0xF0, 0x52, 0xA3, -0x01, 0x72, 0x02, 0x6A, 0x01, 0x60, 0x01, 0x6A, -0x91, 0x67, 0xB0, 0x67, 0x1A, 0x6E, 0x0E, 0xF0, -0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, 0x8F, 0x6E, -0x02, 0x6F, 0x30, 0xF0, 0x20, 0x68, 0x01, 0x6A, -0x12, 0xF5, 0x08, 0x4C, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, -0x40, 0xEA, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, -0x40, 0xEA, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, -0x40, 0xEA, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, -0x40, 0xEA, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, -0x40, 0xEA, 0x06, 0x93, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x1F, 0x6A, 0x6C, 0xEA, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x69, 0x0A, 0xD4, -0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0xE4, 0x9A, 0x30, 0xF0, 0x21, 0x6C, -0xFF, 0x6D, 0x12, 0xF5, 0x08, 0x4C, 0x2C, 0xED, -0x19, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x80, 0x18, -0x12, 0x59, 0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, -0x24, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x0A, 0x93, -0x80, 0xF0, 0x51, 0xA3, 0x0B, 0x2A, 0x01, 0x6D, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0xA3, 0xF5, -0xDC, 0x9B, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF5, 0xC0, 0x9B, -0x01, 0x6D, 0x63, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF3, 0x04, 0x6C, 0x0E, 0xF0, -0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF3, -0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, -0x01, 0x49, 0x40, 0xEA, 0x02, 0x71, 0xB4, 0x61, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF5, -0xC4, 0x9B, 0x01, 0x69, 0x2B, 0xE9, 0xB1, 0x67, -0xE3, 0xF3, 0x04, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF5, -0xC8, 0x9B, 0xB1, 0x67, 0xE3, 0xF3, 0x08, 0x6C, -0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF5, 0x4C, 0x9A, 0xFF, 0x69, 0x30, 0xF0, -0x21, 0x68, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, 0x12, 0xF5, -0x08, 0x48, 0xAC, 0xE9, 0x90, 0x67, 0xB1, 0x67, -0x92, 0x6E, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x04, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0x50, 0x9A, 0xE0, 0x9B, 0x90, 0x67, 0xB1, 0x67, -0x92, 0x6E, 0x04, 0xD2, 0x00, 0x68, 0x80, 0x18, -0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0xFF, 0x6A, 0x4C, 0xE8, 0x1E, 0x70, 0xF5, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x4C, 0x9A, -0x30, 0xF0, 0x21, 0x6C, 0xB1, 0x67, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, -0x12, 0xF5, 0x08, 0x4C, 0x92, 0x6E, 0x80, 0x18, -0x12, 0x59, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x06, 0xD5, -0x06, 0x67, 0x07, 0xD2, 0x40, 0x98, 0x06, 0x93, -0x30, 0xF0, 0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, -0xC0, 0x9B, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, 0x91, 0x67, -0x00, 0x6D, 0x80, 0x18, 0x12, 0x59, 0x41, 0x98, -0x06, 0x93, 0x91, 0x67, 0x01, 0x6D, 0xC0, 0x9B, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x04, 0x4A, 0xE0, 0x9A, 0x08, 0x48, 0x80, 0x18, -0x12, 0x59, 0x07, 0x93, 0x06, 0x92, 0x01, 0x4B, -0x04, 0x4A, 0x07, 0x73, 0x07, 0xD3, 0x06, 0xD2, -0xD9, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x4C, 0x9A, 0x30, 0xF0, -0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, -0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x92, 0x6E, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x50, 0x9A, -0xE0, 0x9B, 0x91, 0x67, 0xB0, 0x67, 0x92, 0x6E, -0x04, 0xD2, 0x00, 0x69, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x14, 0x6C, 0x01, 0x49, 0x40, 0xEA, 0xFF, 0x6A, -0x4C, 0xE9, 0x1E, 0x71, 0xF5, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x4C, 0x9A, 0x30, 0xF0, -0x21, 0x6C, 0xB0, 0x67, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, 0x12, 0xF5, -0x08, 0x4C, 0x92, 0x6E, 0x80, 0x18, 0x12, 0x59, -0x01, 0x48, 0xFF, 0x6B, 0x6C, 0xE8, 0x02, 0x70, -0xB6, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x00, 0x69, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF5, 0xA0, 0x9A, 0x02, 0xF7, -0x00, 0x6C, 0x80, 0x18, 0x85, 0x28, 0x20, 0x6B, -0x4C, 0xEB, 0x12, 0x2B, 0x00, 0x68, 0x30, 0xF0, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0xB4, 0x9A, +0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, 0x94, 0x28, +0x20, 0x6B, 0x4C, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE8, 0xE0, 0xF1, 0x14, 0x70, 0xF3, 0x61, -0x01, 0x49, 0x0A, 0x71, 0xE4, 0x61, 0x0A, 0x69, -0x51, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x01, 0x48, 0x40, 0xEA, 0x0A, 0x70, 0xEC, 0x61, +0x0A, 0x68, 0x50, 0x67, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, -0xAC, 0xE8, 0x80, 0x18, 0xF5, 0x1C, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF5, 0xC4, 0x9A, 0x01, 0x69, +0x8C, 0xE8, 0x80, 0x18, 0x70, 0x0C, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF5, 0xD8, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x0D, 0xEE, 0xB1, 0x67, 0x02, 0xF7, -0x00, 0x6C, 0x80, 0x18, 0x9A, 0x28, 0xB1, 0x67, -0x02, 0xF7, 0x08, 0x6C, 0x80, 0x18, 0x85, 0x28, +0x00, 0x6C, 0x80, 0x18, 0xA9, 0x28, 0xB1, 0x67, +0x02, 0xF7, 0x08, 0x6C, 0x80, 0x18, 0x94, 0x28, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, -0x24, 0x67, 0x0C, 0xD6, 0x0D, 0xD7, 0xAC, 0xE8, -0x38, 0x26, 0x66, 0x67, 0x01, 0x4B, 0x00, 0x6A, -0x09, 0x2B, 0x01, 0x69, 0x2B, 0xE9, 0x80, 0x18, -0xF5, 0x1C, 0x02, 0xF7, 0x04, 0x6C, 0xB1, 0x67, -0x0D, 0x96, 0x1F, 0x10, 0x0C, 0x93, 0x01, 0x6C, -0x66, 0xEA, 0x8C, 0xEB, 0x04, 0x2B, 0x01, 0x4A, -0x20, 0x72, 0xF8, 0x61, 0x00, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x05, 0xD2, 0x80, 0x18, 0x09, 0x1D, -0x0C, 0x93, 0x91, 0x67, 0x01, 0x69, 0x6F, 0xEB, -0x4C, 0xEB, 0x04, 0xD3, 0x80, 0x18, 0xF5, 0x1C, -0x0D, 0x96, 0x05, 0x92, 0x04, 0x93, 0x2B, 0xE9, -0xC4, 0xEA, 0x02, 0xF7, 0x04, 0x6C, 0xB1, 0x67, -0x6D, 0xEE, 0x80, 0x18, 0x9A, 0x28, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF5, 0xC8, 0x9A, 0x02, 0xF7, -0x00, 0x6C, 0xB1, 0x67, 0x0D, 0xEE, 0x80, 0x18, -0x9A, 0x28, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x04, 0x67, 0x1D, 0x22, 0x01, 0x6D, 0x70, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0x85, 0x28, 0x80, 0xF0, -0x48, 0xD8, 0x90, 0x67, 0x38, 0x6D, 0x80, 0x18, -0x09, 0x1D, 0x80, 0xF0, 0x4C, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0xB0, 0x9A, 0x70, 0x6C, -0x01, 0x6E, 0x80, 0x18, 0x9A, 0x28, 0x90, 0x67, -0x38, 0x6D, 0x1F, 0xF7, 0x00, 0x6E, 0x77, 0x6F, -0x80, 0x18, 0x19, 0x1D, 0x0E, 0x10, 0x01, 0x69, -0x80, 0xF0, 0xEC, 0x98, 0x2B, 0xE9, 0x38, 0x6D, -0xD1, 0x67, 0x80, 0x18, 0x19, 0x1D, 0x80, 0xF0, -0xC8, 0x98, 0x70, 0x6C, 0xB1, 0x67, 0x80, 0x18, -0x9A, 0x28, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, -0x0A, 0xD4, 0x04, 0xD5, 0x80, 0xF0, 0x72, 0xA4, -0x01, 0x6C, 0x26, 0x67, 0x8E, 0xEB, 0x01, 0x5B, -0x4C, 0xE9, 0x78, 0x67, 0x01, 0x71, 0x64, 0x33, -0x03, 0x61, 0x05, 0x67, 0x14, 0x48, 0x10, 0x10, -0x02, 0x71, 0x03, 0x61, 0x04, 0x90, 0x16, 0x48, -0x0A, 0x10, 0x03, 0x71, 0x03, 0x61, 0x04, 0x90, -0x1A, 0x48, 0x06, 0x10, 0x04, 0x71, 0x00, 0x68, -0x04, 0x61, 0x04, 0x90, 0x1C, 0x48, 0x01, 0xE3, -0x4C, 0xE8, 0x0A, 0x94, 0x01, 0x6D, 0x80, 0x18, -0x3D, 0x1D, 0x4A, 0x29, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x14, 0x49, -0x91, 0x67, 0x02, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x02, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0xA8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x00, 0x6E, 0xC3, 0xF3, -0x14, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x00, 0x68, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0xB8, 0x9A, 0xE3, 0xF3, 0x1C, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0xFF, 0x6B, 0x4C, 0xEB, 0x14, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0xB8, 0x9A, 0xE3, 0xF3, -0x1C, 0x6C, 0x80, 0x18, 0x0D, 0x28, 0xFF, 0x6B, -0x4C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, -0x01, 0x73, 0x60, 0x60, 0xE0, 0xF3, 0x08, 0x70, -0xE7, 0x61, 0xE0, 0xF3, 0x08, 0x68, 0x5A, 0x10, -0x04, 0x92, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, -0x64, 0x99, 0x44, 0x36, 0x08, 0x6A, 0x4D, 0xEE, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEB, -0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF3, 0x0C, 0x6C, -0x3F, 0x6D, 0x09, 0x6E, 0x40, 0xEA, 0x00, 0x30, -0x48, 0x6A, 0x4D, 0xE8, 0xC0, 0xF3, 0x44, 0x99, -0x01, 0x6D, 0xD0, 0x67, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, -0x01, 0x6D, 0xC1, 0x40, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x85, 0xF5, 0x1C, 0x6C, -0xFF, 0x6D, 0x80, 0x18, 0x0D, 0x28, 0xFF, 0x6B, -0x4C, 0xEB, 0x00, 0x68, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x01, 0x48, 0x40, 0xEA, 0x85, 0xF5, 0x1C, 0x6C, -0xFF, 0x6D, 0x80, 0x18, 0x0D, 0x28, 0xFF, 0x6B, -0x4C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, -0x55, 0x73, 0x05, 0x60, 0xE0, 0xF3, 0x08, 0x70, -0xEA, 0x61, 0xE0, 0xF3, 0x08, 0x68, 0x04, 0x94, -0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, -0x84, 0x36, 0x08, 0x6B, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x6D, 0xEE, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0xC3, 0xF3, 0x0C, 0x6C, 0x3F, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x0A, 0x94, 0x00, 0x6D, -0x80, 0x18, 0x3D, 0x1D, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, -0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xE0, 0xF3, -0x08, 0x6A, 0x0E, 0xEA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x01, 0x5A, 0x58, 0x67, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x60, 0xF0, 0x5E, 0xAC, -0x24, 0x67, 0x03, 0x2A, 0x80, 0xF0, 0x50, 0xA4, -0x71, 0x22, 0x80, 0x18, 0x52, 0x1B, 0x00, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x04, 0x36, 0x08, 0x6B, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x6D, 0xEE, 0x40, 0xEA, 0x80, 0xF0, -0x51, 0xA1, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6C, -0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9C, 0xAB, 0xED, 0x63, 0xF3, 0x00, 0x6C, -0xA3, 0xF5, 0xDC, 0x9B, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF5, 0xC0, 0x9B, 0x01, 0x6D, -0x63, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x0D, 0xE1, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0x80, 0xF0, 0xD5, 0xA3, 0xC0, 0xF3, -0x44, 0x9C, 0x03, 0xF5, 0xA0, 0x9D, 0x63, 0xF3, -0x04, 0x6C, 0x40, 0xEA, 0x60, 0xF0, 0xDE, 0xA1, -0x01, 0x6A, 0x44, 0xE8, 0x47, 0xE8, 0x4C, 0xEE, -0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x81, 0x18, -0x91, 0x67, 0xB0, 0x67, 0x03, 0x6E, 0x80, 0x18, -0x59, 0x1D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9B, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, -0x0C, 0x6E, 0x40, 0xEA, 0xFF, 0x6A, 0x0C, 0xEA, -0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9C, 0xC3, 0xF5, -0xB4, 0x9B, 0x03, 0xF3, 0x04, 0x6C, 0x20, 0xF1, -0xD8, 0xA9, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF5, 0xB4, 0x9B, 0x20, 0xF1, 0xDA, 0xA9, -0x43, 0xF3, 0x1C, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0x02, 0x70, 0x92, 0x61, 0x07, 0x97, 0x06, 0x91, +0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, 0x37, 0x25, +0x61, 0x45, 0x00, 0x6A, 0x0E, 0x2B, 0x80, 0x18, +0x70, 0x0C, 0x01, 0x69, 0x0C, 0x96, 0x2B, 0xE9, +0x02, 0xF7, 0x04, 0x6C, 0xB1, 0x67, 0x80, 0x18, +0xA9, 0x28, 0x02, 0xF7, 0x00, 0x6C, 0xB1, 0x67, +0x1F, 0x10, 0x71, 0x67, 0x66, 0xEA, 0x01, 0x6C, +0x8C, 0xEB, 0x04, 0x2B, 0x01, 0x4A, 0x20, 0x72, +0xF8, 0x61, 0x00, 0x6A, 0x90, 0x67, 0x04, 0xD2, +0x2F, 0xE9, 0x80, 0x18, 0x7F, 0x0C, 0x4C, 0xE9, +0x80, 0x18, 0x70, 0x0C, 0x0C, 0x96, 0x04, 0x92, +0x01, 0x6D, 0x02, 0xF7, 0x04, 0x6C, 0xC4, 0xEA, +0xAB, 0xED, 0x2D, 0xEE, 0x80, 0x18, 0xA9, 0x28, +0x01, 0x6D, 0x02, 0xF7, 0x00, 0x6C, 0xAB, 0xED, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0xDC, 0x9A, +0x0D, 0xEE, 0x80, 0x18, 0xA9, 0x28, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x38, 0x6C, 0x18, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0x8F, 0x0C, +0x38, 0x6C, 0x01, 0xF4, 0x00, 0x6D, 0x01, 0x6E, +0x80, 0x18, 0x8F, 0x0C, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x38, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, +0x80, 0x18, 0x8F, 0x0C, 0x38, 0x6C, 0x00, 0xF3, +0x00, 0x6D, 0x03, 0x6E, 0x80, 0x18, 0x8F, 0x0C, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x05, 0x22, 0x80, 0x18, 0xBB, 0x0C, 0x80, 0x18, +0xB2, 0x0C, 0x09, 0x10, 0x30, 0xF0, 0x21, 0x6A, +0xB5, 0xF3, 0xD8, 0x9A, 0x01, 0x6D, 0x38, 0x6C, +0xAB, 0xED, 0x80, 0x18, 0x8F, 0x0C, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6A, 0x09, 0xD5, +0x27, 0x67, 0xA0, 0x9E, 0x1F, 0xF7, 0x00, 0x6B, +0xAC, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, +0x08, 0x2B, 0x30, 0xF0, 0x20, 0x6D, 0x60, 0x9E, +0x63, 0xF1, 0xA8, 0x9D, 0x6D, 0xE5, 0x60, 0x9B, +0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, +0x6C, 0x9B, 0xB5, 0xE3, 0x60, 0x9D, 0x55, 0xE4, +0x04, 0x4A, 0x0C, 0x72, 0x60, 0xDD, 0x04, 0x4E, +0xE4, 0x61, 0x00, 0x68, 0x09, 0xE1, 0x80, 0xAA, +0x01, 0x6D, 0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, +0x09, 0x94, 0x0D, 0xE4, 0x04, 0x48, 0x2C, 0x70, +0x40, 0xDB, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x6A, -0x60, 0xF0, 0x5C, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0xE4, 0x9A, 0x04, 0x67, 0x30, 0xF0, -0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, 0x00, 0x6D, -0x18, 0x6E, 0x80, 0x18, 0x9F, 0x58, 0x80, 0xF0, -0x90, 0xA0, 0xFF, 0x6B, 0x4C, 0xEB, 0x8E, 0xEB, -0x06, 0x2B, 0x90, 0x67, 0x80, 0x18, 0xCD, 0x1D, -0x01, 0x6A, 0x60, 0xF0, 0x5C, 0xC0, 0x60, 0xF0, -0x5C, 0xA0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0xAC, 0xEA, 0x04, 0xD2, 0x44, 0x36, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x6D, 0xEE, -0x0A, 0xD4, 0x0F, 0x6D, 0x03, 0xF3, 0x00, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, -0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, -0x00, 0x69, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0xB4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x7F, 0x49, 0xC0, 0xF3, 0x44, 0x98, -0x2D, 0x49, 0x91, 0x67, 0x3F, 0x6D, 0x09, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, -0x14, 0x6C, 0xF0, 0x6D, 0x0F, 0x6E, 0x40, 0xEA, -0x04, 0x93, 0x12, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF5, 0xB4, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF5, 0xD8, 0x9B, -0x03, 0xF3, 0x04, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF5, 0xB4, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF5, 0xD8, 0x9B, 0x43, 0xF3, 0x1C, 0x6C, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF3, -0x00, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, -0xB8, 0x9B, 0x01, 0x6E, 0x40, 0xEA, 0x0A, 0x93, -0x80, 0xF0, 0x52, 0xA3, 0x01, 0x72, 0x41, 0x61, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF5, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x69, 0x2B, 0xE9, 0xE3, 0xF3, 0x18, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x02, 0xF3, -0x10, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF5, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF5, 0xC4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x36, 0xF4, -0x08, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x01, 0x6E, -0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xEA, 0x00, 0xF7, -0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, -0x14, 0x6C, 0xB1, 0x67, 0xE3, 0xF5, 0x68, 0x9B, -0x42, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF5, 0xCC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0xE3, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF5, 0xD0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF5, -0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF5, 0xD8, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0x36, 0xF4, 0x08, 0x6E, -0x40, 0xEA, 0x04, 0x93, 0x01, 0x6E, 0xC0, 0xF3, -0x44, 0x98, 0xC4, 0xEB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF5, 0x7C, 0x9B, 0x00, 0xF7, 0xC0, 0x36, -0xE3, 0xF3, 0x14, 0x6C, 0xB1, 0x67, 0x6D, 0xEE, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x03, 0xF5, 0x20, 0x9A, 0x04, 0x96, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x6D, 0xEE, -0xB1, 0x67, 0xA3, 0xF3, 0x14, 0x6C, 0x40, 0xEA, -0x0A, 0x94, 0x04, 0x95, 0x00, 0x6E, 0x80, 0x18, -0x59, 0x1D, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0xE3, 0xF3, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x04, 0x92, 0x08, 0x6B, 0x03, 0xF3, 0x00, 0x6C, -0x44, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0x6D, 0xEE, -0x0F, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF6, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF3, 0x0C, 0x69, 0x91, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEC, 0xCC, 0xEA, +0x4B, 0xEA, 0xC0, 0xF7, 0x42, 0x32, 0x30, 0xF0, +0x20, 0x68, 0x44, 0x32, 0xC0, 0xF3, 0x64, 0x98, +0x06, 0xD5, 0x04, 0xD2, 0xA4, 0x36, 0x08, 0x6A, +0x01, 0x6D, 0x05, 0xD4, 0x4D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x05, 0x92, +0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0xA3, 0xF3, +0xB8, 0x9B, 0x03, 0x6E, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, +0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF3, 0x14, 0x69, 0x91, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF3, 0xAC, 0x9B, +0x91, 0x67, 0x10, 0x6E, 0x40, 0xEA, 0x05, 0x92, +0x22, 0x6B, 0x06, 0x94, 0x78, 0xEA, 0x44, 0x6A, +0x00, 0x69, 0x12, 0xEB, 0x58, 0xEC, 0x04, 0x94, +0x12, 0xEA, 0x4D, 0xE3, 0x88, 0x6A, 0x58, 0xEC, +0x12, 0xEA, 0x4D, 0xE3, 0x83, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xC9, 0xF7, +0x10, 0x4C, 0xEA, 0xF0, 0x00, 0x4B, 0x91, 0xE2, +0x6D, 0xE2, 0x05, 0xD4, 0x04, 0xD3, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0x70, 0x9B, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0x36, +0x01, 0x6D, 0x6D, 0xEE, 0xC3, 0xF3, 0x18, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x01, 0x6D, 0xE3, 0xF3, +0x1C, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x74, 0x9B, +0x05, 0x94, 0x01, 0x49, 0x4C, 0xEB, 0x62, 0x33, +0x62, 0x33, 0x60, 0xCC, 0xE1, 0xF7, 0x1F, 0x6B, +0x4C, 0xEB, 0x04, 0x92, 0x02, 0x4C, 0x11, 0x71, +0x60, 0xCA, 0x02, 0x4A, 0x05, 0xD4, 0x04, 0xD2, +0xD6, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, +0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6A, 0x24, 0x67, +0x8B, 0xF1, 0x00, 0x48, 0x4C, 0xED, 0x4C, 0xE9, +0x69, 0xF6, 0x59, 0xA0, 0x06, 0xD5, 0x24, 0x36, +0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x9A, 0x01, 0x6D, 0x08, 0x6A, 0x4D, 0xEE, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0xB8, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x69, 0xF6, 0x58, 0xA0, 0x4B, 0x2A, 0x06, 0x92, +0x03, 0x22, 0x12, 0x6A, 0x69, 0xF6, 0x5E, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x21, 0x6B, +0xF4, 0xF7, 0xDE, 0xA3, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, +0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF1, 0xE0, 0x9A, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x08, 0x4B, 0x83, 0x67, 0xB1, 0x67, +0xDE, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x06, 0x94, 0xE1, 0xF7, 0x1F, 0x6F, 0x20, 0x6A, +0xB1, 0x67, 0x56, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x18, 0x6C, 0x02, 0x6D, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, +0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, -0x40, 0xEA, 0x04, 0x92, 0x05, 0x2A, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x04, 0x6C, 0x04, 0x10, -0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, 0x1C, 0x6C, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF5, 0xB4, 0x9B, -0x5B, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0xA8, 0x9B, -0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0xB0, 0x9A, 0xE3, 0xF3, 0x1C, 0x6C, -0x80, 0x18, 0x0D, 0x28, 0xFF, 0xF7, 0x1F, 0x6B, -0x80, 0xF3, 0x0E, 0x6C, 0x6C, 0xEA, 0x98, 0xEA, -0x0A, 0x6C, 0x12, 0xE8, 0x02, 0x30, 0x0A, 0x30, -0x9B, 0xE8, 0x01, 0x2C, 0xE5, 0xE8, 0x10, 0xEC, -0x05, 0x5C, 0x12, 0xE8, 0x6C, 0xE8, 0x02, 0x61, -0x01, 0x48, 0x6C, 0xE8, 0x04, 0x92, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF3, 0x04, 0x6C, 0x06, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x43, 0xF3, -0x1C, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF5, -0xB4, 0x9B, 0xD0, 0x67, 0x40, 0xEA, 0x04, 0x92, -0x0A, 0x93, 0x7F, 0x4A, 0x1D, 0x4A, 0x44, 0x32, -0x49, 0xE3, 0x00, 0xCA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x68, 0xAC, 0xE8, 0xB0, 0x67, 0x03, 0x6E, -0x24, 0x67, 0x80, 0x18, 0x59, 0x1D, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x04, 0x36, -0x08, 0x6B, 0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF3, 0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x60, 0xF0, 0x7E, 0xA9, -0x01, 0x6A, 0x44, 0xE8, 0x6C, 0xEA, 0x47, 0xE8, -0x04, 0x22, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, -0x21, 0x1E, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0xCC, 0xE8, -0xB0, 0x67, 0x02, 0x6E, 0x24, 0x67, 0x80, 0x18, -0x59, 0x1D, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x08, 0x6B, 0x04, 0x36, -0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0xB0, 0x9A, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF6, 0x44, 0x9A, 0x30, 0xF0, 0x21, 0x6C, -0xB0, 0x67, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0xE4, 0x9A, 0x00, 0x6E, 0x12, 0xF5, -0x08, 0x4C, 0x80, 0x18, 0x12, 0x59, 0x91, 0x67, -0xB0, 0x67, 0x80, 0x18, 0xDA, 0x19, 0x06, 0x93, -0x07, 0x92, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x6D, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x25, 0x67, -0x4C, 0xEE, 0x4C, 0xE9, 0xEC, 0xEA, 0x01, 0x72, -0x04, 0x67, 0x04, 0xD6, 0x17, 0x61, 0xB1, 0x67, -0x04, 0x6E, 0x80, 0x18, 0x59, 0x1D, 0x90, 0x67, -0xB1, 0x67, 0x80, 0x18, 0x0D, 0x1B, 0x00, 0xF6, -0x00, 0x5A, 0x04, 0x61, 0x04, 0x93, 0x02, 0x6A, -0x23, 0x2B, 0x25, 0x10, 0x04, 0x94, 0x00, 0xF3, -0x00, 0x5A, 0x78, 0x67, 0x01, 0x5C, 0x58, 0x67, -0x1E, 0x2B, 0x1A, 0x10, 0x19, 0x2A, 0xB1, 0x67, -0x00, 0x6E, 0x80, 0x18, 0xC6, 0x1A, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF6, 0x68, 0x9B, 0x43, 0xEB, -0x11, 0x60, 0x42, 0x34, 0x96, 0x34, 0x80, 0x18, -0xF5, 0x15, 0x03, 0x6B, 0x78, 0xEA, 0x03, 0x6A, -0x12, 0xEB, 0xFE, 0xF0, 0x02, 0x4B, 0xE0, 0xF3, -0x09, 0x5B, 0x05, 0x60, 0xFA, 0x5B, 0x02, 0x61, -0x00, 0x6A, 0x01, 0x10, 0x04, 0x6A, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, -0xFF, 0x6A, 0x25, 0x67, 0x4C, 0xEE, 0x4C, 0xEF, -0x4C, 0xE9, 0x00, 0x6A, 0x12, 0xD4, 0x0C, 0xD6, -0x0A, 0xD7, 0x07, 0xD2, 0x08, 0xD2, 0x09, 0xD2, -0x06, 0xD2, 0x02, 0x67, 0x06, 0x5A, 0x80, 0xF0, -0x1C, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, -0xA2, 0xF4, 0x00, 0x4B, 0x49, 0xE3, 0x40, 0x9A, -0x00, 0xEA, 0x30, 0xF0, 0x21, 0x68, 0x12, 0xF5, -0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, 0x56, 0x6E, -0x1F, 0x6F, 0x80, 0x18, 0x9F, 0x58, 0x90, 0x67, -0xB1, 0x67, 0x00, 0x6E, 0xE0, 0xF3, 0x00, 0x6F, -0x0B, 0xD2, 0x80, 0x18, 0x9F, 0x58, 0x0A, 0x94, -0x06, 0xD2, 0x0D, 0x2C, 0x12, 0x94, 0x08, 0x96, -0xB1, 0x67, 0x01, 0x6F, 0x80, 0x18, 0x25, 0x1F, -0x07, 0x2A, 0x0C, 0x92, 0x04, 0x22, 0x01, 0x6B, -0x09, 0xD3, 0x0A, 0x92, 0x01, 0x10, 0x05, 0x6A, -0x06, 0x94, 0xFF, 0x6B, 0x0B, 0x90, 0x6C, 0xEC, -0x06, 0xD4, 0x07, 0x94, 0x6C, 0xE8, 0x01, 0x4C, -0x6C, 0xEC, 0x07, 0xD4, 0x60, 0x10, 0x06, 0x92, -0x0F, 0x5A, 0x12, 0x60, 0x06, 0x92, 0xFF, 0x6B, -0xF4, 0x4A, 0x6C, 0xEA, 0x03, 0x5A, 0x54, 0x60, -0x00, 0x6A, 0x30, 0xF0, 0x21, 0x6C, 0x04, 0xD2, -0x12, 0xF5, 0x08, 0x4C, 0xB1, 0x67, 0xC2, 0x67, -0x13, 0x10, 0x06, 0x93, 0x0C, 0x5B, 0x02, 0x60, -0x0C, 0x6A, 0x07, 0x10, 0x06, 0x92, 0xFF, 0x6B, -0xF4, 0x4A, 0x6C, 0xEA, 0x03, 0x5A, 0x40, 0x60, -0x0F, 0x6A, 0x30, 0xF0, 0x21, 0x6C, 0x04, 0xD2, -0x12, 0xF5, 0x08, 0x4C, 0xB1, 0x67, 0x00, 0x6E, -0xE0, 0xF3, 0x00, 0x6F, 0x80, 0x18, 0x12, 0x59, -0x35, 0x10, 0x3B, 0x20, 0xFF, 0x6A, 0xFE, 0x48, -0x30, 0xF0, 0x21, 0x6C, 0x4C, 0xE8, 0x12, 0xF5, -0x08, 0x4C, 0xB1, 0x67, 0x56, 0x6E, 0x1F, 0x6F, -0x04, 0xD0, 0x80, 0x18, 0x12, 0x59, 0x00, 0x6C, -0x08, 0xD4, 0x44, 0x67, 0x24, 0x10, 0x1F, 0x70, -0x02, 0x61, 0x1F, 0x68, 0x26, 0x10, 0xFF, 0x6A, -0x03, 0x48, 0x30, 0xF0, 0x21, 0x6C, 0x4C, 0xE8, -0x12, 0xF5, 0x08, 0x4C, 0xB1, 0x67, 0x56, 0x6E, -0x1F, 0x6F, 0x04, 0xD0, 0x80, 0x18, 0x12, 0x59, -0x00, 0x6A, 0x08, 0xD2, 0x10, 0x10, 0x12, 0x94, -0xB1, 0x67, 0x01, 0x6E, 0x80, 0x18, 0x59, 0x1D, -0x12, 0x94, 0x08, 0x96, 0xB1, 0x67, 0x00, 0x6F, -0x80, 0x18, 0x25, 0x1F, 0x0A, 0x22, 0x03, 0x10, -0x01, 0x6B, 0x08, 0xD3, 0x00, 0x6A, 0x09, 0x94, -0x04, 0x2C, 0x07, 0x93, 0x06, 0x5B, 0x7F, 0xF7, -0x01, 0x61, 0x50, 0x67, 0x11, 0x97, 0x10, 0x91, -0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, -0xFF, 0x68, 0xAC, 0xE8, 0xB0, 0x67, 0x24, 0x67, -0x80, 0x18, 0xB9, 0x1B, 0x30, 0xF0, 0x21, 0x6C, -0x1F, 0x6F, 0x00, 0x6E, 0x12, 0xF5, 0x08, 0x4C, -0xB0, 0x67, 0x0A, 0xD2, 0x80, 0x18, 0x9F, 0x58, -0x91, 0x67, 0xB0, 0x67, 0x09, 0xD2, 0x80, 0x18, -0x89, 0x1C, 0x91, 0x67, 0xB0, 0x67, 0x04, 0x6E, -0x80, 0x18, 0x59, 0x1D, 0x91, 0x67, 0xB0, 0x67, -0x80, 0x18, 0x0D, 0x1B, 0x91, 0x67, 0xB0, 0x67, -0x80, 0x18, 0x20, 0x1B, 0x0D, 0x22, 0x91, 0x67, -0xB0, 0x67, 0x80, 0x18, 0x89, 0x1C, 0x91, 0x67, -0xB0, 0x67, 0x04, 0x6E, 0x80, 0x18, 0x59, 0x1D, -0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x20, 0x1B, -0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x7A, 0x1B, -0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x01, 0x6F, -0x07, 0xD2, 0x80, 0x18, 0x48, 0x1F, 0x91, 0x67, -0xB0, 0x67, 0x08, 0xD2, 0x80, 0x18, 0xA9, 0x1A, -0x08, 0x93, 0x00, 0x6C, 0x06, 0xD4, 0x43, 0xEB, -0x06, 0x61, 0x4B, 0xE3, 0x06, 0xD2, 0x06, 0x94, -0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0xD4, 0x06, 0x92, -0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, -0xB0, 0x67, 0x56, 0x6E, 0x1F, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x91, 0x67, 0xB0, 0x67, -0x80, 0x18, 0x7A, 0x1B, 0x07, 0x93, 0x43, 0xEB, -0x02, 0x60, 0x6B, 0xE2, 0x02, 0x10, 0x07, 0x94, -0x4B, 0xE4, 0xFF, 0x6B, 0x6C, 0xEA, 0x01, 0xE1, -0x20, 0xF1, 0x5C, 0xC0, 0x09, 0x93, 0x0A, 0x94, -0x0F, 0x97, 0x0E, 0x91, 0x8B, 0xE3, 0x06, 0x93, -0x0D, 0x90, 0x49, 0xE3, 0xFF, 0x6B, 0x6C, 0xEA, -0x08, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, -0xB0, 0x67, 0x24, 0x67, 0x80, 0x18, 0xA4, 0x1F, -0xA2, 0x67, 0x91, 0x67, 0xD0, 0x67, 0x04, 0xD2, -0x80, 0x18, 0x05, 0x1F, 0x04, 0x96, 0x91, 0x67, -0xA2, 0x67, 0xF0, 0x67, 0x80, 0x18, 0xB5, 0x19, -0x09, 0xE1, 0x80, 0xF0, 0x53, 0xA2, 0x07, 0x22, -0x60, 0xF0, 0x7E, 0xA9, 0x01, 0x6A, 0x44, 0xE8, -0x6D, 0xEA, 0x60, 0xF0, 0x5E, 0xC9, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x6D, -0x04, 0x67, 0x80, 0x18, 0xDF, 0x1F, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0xDF, 0x1F, 0x90, 0x67, -0x00, 0x6D, 0x80, 0x18, 0xEC, 0x1E, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0xEC, 0x1E, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xDF, 0x63, 0x41, 0x62, 0x40, 0xD1, 0x3F, 0xD0, -0x30, 0xF0, 0x20, 0x6D, 0x24, 0x67, 0xC2, 0xF4, -0x14, 0x4D, 0x2B, 0x04, 0x48, 0x6E, 0x00, 0x18, -0x42, 0xD7, 0x30, 0xF0, 0x20, 0x6D, 0x04, 0x04, -0xA2, 0xF4, 0x18, 0x4D, 0x1C, 0x6E, 0x00, 0x18, -0x42, 0xD7, 0x52, 0x99, 0x40, 0xA2, 0x04, 0x2A, -0x91, 0x67, 0x80, 0x18, 0x0E, 0x1E, 0x3C, 0x2A, -0x91, 0x67, 0x80, 0x18, 0x52, 0x1B, 0x04, 0x00, -0x12, 0x6F, 0x91, 0x67, 0x2B, 0x05, 0x19, 0x06, -0x80, 0x18, 0x6B, 0x1B, 0x0B, 0x06, 0xB0, 0x67, -0x91, 0x67, 0x80, 0x18, 0x76, 0x19, 0x91, 0x67, -0x80, 0x18, 0x23, 0x19, 0x91, 0x67, 0x01, 0x6D, -0x80, 0x18, 0x56, 0x16, 0x01, 0x6D, 0x91, 0x67, -0x80, 0x18, 0x30, 0x16, 0x91, 0x67, 0x80, 0x18, -0x4F, 0x1C, 0x91, 0x67, 0x80, 0x18, 0x9B, 0x1B, -0x91, 0x67, 0x80, 0x18, 0xF2, 0x1F, 0x91, 0x67, -0x80, 0x18, 0xAD, 0x18, 0x91, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x30, 0x16, 0x91, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x56, 0x16, 0xB0, 0x67, 0x0B, 0x06, -0x91, 0x67, 0x80, 0x18, 0xB1, 0x1C, 0x91, 0x67, -0x80, 0x18, 0xCB, 0x1C, 0x91, 0x67, 0x2B, 0x05, -0x19, 0x06, 0x12, 0x6F, 0x80, 0x18, 0x11, 0x16, -0x41, 0x97, 0x40, 0x91, 0x3F, 0x90, 0x21, 0x63, +0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, +0x18, 0x6E, 0x49, 0x10, 0x06, 0x92, 0x03, 0x22, +0x12, 0x6A, 0x69, 0xF6, 0x5E, 0xC0, 0x01, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0xE0, 0x9A, 0x30, 0xF0, 0x21, 0x68, 0xD2, 0xF5, +0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, 0xDE, 0x6E, +0x80, 0x18, 0x78, 0x59, 0xE1, 0xF7, 0x1F, 0x6F, +0x90, 0x67, 0x00, 0x6A, 0xB1, 0x67, 0x56, 0x6E, +0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x30, 0xF0, 0x21, 0x6B, 0xF4, 0xF7, +0xDE, 0xA3, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0x0C, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0x02, 0x6D, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF5, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0x23, 0xF3, 0x04, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, +0x07, 0x93, 0x06, 0x73, 0x0A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, +0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x08, 0x6E, +0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x06, 0xD2, 0x8B, 0xF1, +0x00, 0x4B, 0x69, 0xF6, 0x59, 0xA3, 0x07, 0xD3, +0x06, 0x93, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xD2, +0x64, 0x31, 0x08, 0x6A, 0x4D, 0xE9, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF2, 0x08, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, +0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0xB8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x69, +0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0xE0, 0xF3, 0x00, 0x6D, +0x12, 0x6E, 0x40, 0xEA, 0x07, 0x93, 0x69, 0xF6, +0x58, 0xA3, 0x11, 0x2A, 0x01, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x69, +0x06, 0x95, 0xE3, 0xF1, 0xE0, 0x9A, 0xD2, 0xF5, +0x08, 0x49, 0x91, 0x67, 0xDE, 0x6E, 0x80, 0x18, +0x78, 0x59, 0x20, 0x6A, 0x10, 0x10, 0x01, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x21, 0x69, 0x06, 0x95, 0xE3, 0xF1, 0xE0, 0x9A, +0xD2, 0xF5, 0x08, 0x49, 0x91, 0x67, 0xDE, 0x6E, +0x80, 0x18, 0x78, 0x59, 0x00, 0x6A, 0x06, 0x95, +0x91, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, +0x12, 0x6E, 0x40, 0xEA, 0x08, 0x92, 0x06, 0x72, +0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, +0x1F, 0x6D, 0x08, 0x6E, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, +0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, +0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xFF, 0x68, 0x69, 0xF6, +0x79, 0xA2, 0x8C, 0xE8, 0x06, 0xD2, 0x04, 0x32, +0x07, 0xD2, 0x08, 0xD3, 0x07, 0x93, 0x30, 0xF0, +0x20, 0x69, 0x08, 0x6A, 0x4D, 0xEB, 0xC0, 0xF3, +0x44, 0x99, 0x01, 0x6D, 0xC3, 0x67, 0x07, 0xD3, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0xA8, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF3, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x07, 0x96, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0xE0, 0xF3, +0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x06, 0x92, +0x69, 0xF6, 0x58, 0xA2, 0x06, 0xD2, 0x5B, 0x2A, +0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF5, 0xE8, 0x9A, 0x30, 0xF0, 0x21, 0x69, +0xD2, 0xF5, 0x08, 0x49, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x6E, 0x80, 0x18, 0x78, 0x59, 0x01, 0x6B, +0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x01, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, +0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x00, 0x4A, +0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x10, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, +0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, +0x78, 0x59, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, +0x00, 0x4B, 0xE0, 0x9B, 0x06, 0x92, 0x91, 0x67, +0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, +0x33, 0x6E, 0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, +0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x06, 0x93, 0x5A, 0x10, 0x07, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, +0xE8, 0x9A, 0x30, 0xF0, 0x21, 0x69, 0xD2, 0xF5, +0x08, 0x49, 0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, +0x80, 0x18, 0x78, 0x59, 0x01, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x01, 0x6B, 0x91, 0x67, +0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF1, 0x00, 0x4B, 0xE0, 0x9B, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x00, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, +0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x00, 0x4B, +0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, +0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, +0xE2, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, +0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x00, 0x6B, 0x91, 0x67, 0x30, 0xF0, 0x21, 0x69, +0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0xD2, 0xF5, +0x08, 0x49, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, +0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x21, 0x6A, 0xF4, 0xF7, 0x58, 0xA2, +0x01, 0x22, 0x20, 0x6A, 0x7F, 0x6F, 0x91, 0x67, +0xB0, 0x67, 0x33, 0x6E, 0x30, 0xF0, 0x20, 0x69, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0xC0, 0xF3, +0x44, 0x99, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, +0x09, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, +0x38, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x21, 0x6C, +0xB0, 0x67, 0x10, 0x6F, 0x01, 0x6A, 0xD2, 0xF5, +0x08, 0x4C, 0xEF, 0x6E, 0x30, 0xF0, 0x20, 0x68, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x12, 0x6E, +0x40, 0xEA, 0x08, 0x92, 0x06, 0x72, 0x08, 0x61, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x08, 0x6E, 0x07, 0x10, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x2C, 0xED, -0x01, 0x75, 0x58, 0x67, 0x0C, 0xD4, 0x06, 0xD2, -0x80, 0xF0, 0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x24, 0x9A, 0x00, 0x6D, 0xC5, 0x67, -0xF1, 0x67, 0x80, 0x18, 0x9F, 0x58, 0x30, 0xF0, -0x20, 0x68, 0x0C, 0x94, 0x2B, 0xF1, 0x18, 0x48, -0xF1, 0x67, 0x43, 0xF6, 0x54, 0xD8, 0x01, 0x6D, -0x00, 0x6E, 0x80, 0x18, 0x9F, 0x58, 0x43, 0xF6, -0x58, 0xD8, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x69, 0xF6, 0x79, 0xA2, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0x8C, 0xE9, +0x07, 0xD3, 0xC0, 0xF3, 0x64, 0x98, 0x06, 0xD2, +0x24, 0x36, 0x08, 0x6A, 0x01, 0x6D, 0x4D, 0xEE, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0xA8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, 0xCC, 0x9B, +0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x06, 0x93, 0x69, 0xF6, 0x58, 0xA3, +0x03, 0x2A, 0x81, 0xF0, 0x07, 0x4A, 0x02, 0x10, +0xC1, 0xF0, 0x0A, 0x6A, 0x30, 0xF0, 0x21, 0x6C, +0xD2, 0xF5, 0x08, 0x4C, 0xB1, 0x67, 0x56, 0x6E, +0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0x0C, 0x6C, 0xFF, 0x6D, 0x09, 0x6E, 0x40, 0xEA, +0x07, 0x92, 0x06, 0x72, 0x0A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, +0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x08, 0x6E, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, +0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, +0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xFF, 0x68, 0x8C, 0xE8, +0x69, 0xF6, 0x79, 0xA2, 0x06, 0xD2, 0x04, 0x32, +0x07, 0xD2, 0x08, 0xD3, 0x07, 0x93, 0x30, 0xF0, +0x20, 0x69, 0x08, 0x6A, 0x4D, 0xEB, 0xC0, 0xF3, +0x44, 0x99, 0x01, 0x6D, 0xC3, 0x67, 0x07, 0xD3, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0xA8, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF3, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x07, 0x96, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0x30, 0xF0, 0x21, 0x69, 0xD2, 0xF5, +0x08, 0x49, 0x23, 0xF3, 0x00, 0x6C, 0xE0, 0xF3, +0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x00, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0xDF, 0x6E, 0x10, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x00, 0x6B, +0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x00, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, +0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x06, 0x93, 0x69, 0xF6, 0x78, 0xA3, 0x06, 0xD3, +0x35, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, +0x00, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x81, 0xF0, 0x07, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x01, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF1, 0x00, 0x4A, 0x06, 0x93, +0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x04, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x06, 0x93, +0x04, 0xD3, 0x3C, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x00, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x61, 0xF0, 0x08, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, +0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x00, 0x4A, +0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x00, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, +0x01, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, +0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x00, 0x6A, 0x04, 0xD2, 0x91, 0x67, 0x30, 0xF0, +0x21, 0x69, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, +0xD2, 0xF5, 0x08, 0x49, 0x80, 0x18, 0x78, 0x59, +0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, +0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x21, 0x6A, 0xF4, 0xF7, 0x58, 0xA2, +0x01, 0x22, 0x20, 0x6A, 0x91, 0x67, 0xB0, 0x67, +0x33, 0x6E, 0x7F, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, +0x09, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0x06, 0x73, +0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, +0x1F, 0x6D, 0x08, 0x6E, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, +0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, +0xE0, 0x9A, 0x30, 0xF0, 0x21, 0x68, 0x00, 0x69, +0xD2, 0xF5, 0x08, 0x48, 0x0E, 0xD4, 0x0F, 0xD5, +0x90, 0x67, 0xB1, 0x67, 0xEF, 0x6E, 0x04, 0xD1, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD1, 0x80, 0x18, +0x78, 0x59, 0x0E, 0x90, 0x0F, 0x91, 0x00, 0x6A, +0x07, 0xD2, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, +0x08, 0x4B, 0x06, 0xD3, 0x40, 0x99, 0xC0, 0x98, +0x83, 0x67, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, 0x00, 0x6D, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x08, 0x4B, 0xC0, 0x98, 0x41, 0x99, +0xE0, 0x9B, 0x06, 0x94, 0x01, 0x6D, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x07, 0x92, 0x04, 0x48, +0x08, 0x49, 0x01, 0x4A, 0x07, 0xD2, 0x07, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x03, 0x73, 0x58, 0x67, +0x07, 0xD3, 0x08, 0xD2, 0xD6, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF1, 0x00, 0x9A, 0x06, 0x94, +0x78, 0x67, 0xF0, 0x67, 0x00, 0x6D, 0xDE, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x08, 0x92, +0x06, 0x94, 0xF0, 0x67, 0x01, 0x6D, 0xDE, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF2, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x28, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x00, 0x4A, +0x40, 0x9A, 0x30, 0xF0, 0x21, 0x68, 0xD2, 0xF5, +0x08, 0x48, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, +0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x04, 0x6B, 0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, +0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x90, 0x67, 0xF1, 0x67, 0x03, 0x6A, 0x00, 0x6D, +0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x50, 0x9A, +0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x00, 0x6B, +0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, 0xEF, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF2, 0x00, 0x4A, 0x40, 0x9A, +0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x04, 0x6B, +0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF5, 0x54, 0x9A, 0x90, 0x67, +0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6A, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF2, 0x00, 0x4B, 0x60, 0x9B, 0x90, 0x67, +0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0x78, 0x59, 0x90, 0x67, 0x06, 0x6A, +0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x03, 0x6B, 0x90, 0x67, +0xF1, 0x67, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF5, 0x58, 0x9A, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, +0xA2, 0x67, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, +0x00, 0x4B, 0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, +0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, +0x78, 0x59, 0x90, 0x67, 0x06, 0x6A, 0x01, 0x6D, +0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, +0x5C, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, +0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x00, 0x6B, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, +0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x00, 0x4A, +0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, +0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x07, 0x6B, 0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, +0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x90, 0x67, 0xF1, 0x67, 0x03, 0x6A, 0x00, 0x6D, +0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF5, 0x40, 0x9A, +0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x00, 0x6B, +0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, 0xEF, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF2, 0x00, 0x4A, 0x40, 0x9A, +0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x07, 0x6B, +0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF5, 0x44, 0x9A, 0x90, 0x67, +0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6A, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x00, 0x6B, 0xA3, 0x67, +0x90, 0x67, 0xF1, 0x67, 0x19, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0x78, 0x59, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6A, 0x01, 0x6D, 0x19, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x06, 0xD4, +0x07, 0xD5, 0x01, 0x68, 0x00, 0x69, 0x85, 0xF5, +0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0x1C, 0x28, +0x55, 0x72, 0x11, 0x61, 0x07, 0x92, 0x03, 0x2A, +0x00, 0x68, 0x50, 0x67, 0x17, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF3, 0xB4, 0x9A, 0x03, 0xF3, +0x08, 0x6C, 0xFF, 0x68, 0x80, 0x18, 0x1C, 0x28, +0x4C, 0xE8, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x64, 0x6C, +0x01, 0x49, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE9, 0x01, 0x6A, 0xA1, 0xF3, 0x18, 0x59, +0x02, 0x61, 0x01, 0x68, 0x01, 0x10, 0xD7, 0x2A, +0x06, 0x95, 0x30, 0xF0, 0x21, 0x69, 0xD2, 0xF5, +0x08, 0x49, 0x91, 0x67, 0x00, 0x6A, 0x8F, 0x6E, +0x08, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0x95, 0x23, 0xF5, 0xE8, 0x9A, +0x91, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, +0x06, 0x92, 0x01, 0x6D, 0x08, 0x6B, 0x44, 0x36, +0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x0A, 0x28, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, +0x23, 0xF3, 0x00, 0x6C, 0xA3, 0xF3, 0xA8, 0x9B, +0x02, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF3, 0xA8, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x00, 0x6A, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x00, 0x68, 0x05, 0xD5, 0x04, 0xD4, 0x05, 0x92, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, +0xE0, 0x9B, 0xC0, 0x9A, 0x30, 0xF0, 0x21, 0x69, +0xD2, 0xF5, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x05, 0x59, 0x04, 0x93, 0x91, 0x67, +0x01, 0x6D, 0x40, 0xDB, 0x05, 0x92, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, +0xC0, 0x9A, 0x01, 0x48, 0x80, 0x18, 0x05, 0x59, +0x04, 0x93, 0x41, 0xDB, 0xFF, 0x6A, 0x4C, 0xE8, +0x05, 0x92, 0x08, 0x4B, 0x03, 0x70, 0x04, 0x4A, +0x05, 0xD2, 0x04, 0xD3, 0xD8, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x04, 0x67, 0x30, 0xF0, 0x20, 0x6A, +0x2C, 0xE8, 0xC0, 0xF3, 0x44, 0x9A, 0x08, 0x6B, +0x04, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0xE8, 0x9A, 0x30, 0xF0, +0x21, 0x6C, 0xD2, 0xF5, 0x08, 0x4C, 0xB0, 0x67, +0x58, 0x6E, 0x80, 0x18, 0x05, 0x59, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF5, 0x68, 0x9B, 0x4C, 0xEB, +0x62, 0x33, 0x7A, 0x33, 0x2C, 0xEB, 0x0B, 0x23, +0x3F, 0x73, 0x09, 0x60, 0x07, 0xF7, 0x00, 0x6B, +0x4C, 0xEB, 0x62, 0x32, 0x2C, 0xEA, 0x03, 0x22, +0x3F, 0x72, 0x00, 0x6A, 0x56, 0x61, 0x30, 0xF0, +0x21, 0x69, 0xD2, 0xF5, 0x08, 0x49, 0x00, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x01, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x21, 0x6A, 0xF4, 0xF7, 0x58, 0xA2, 0x01, 0x22, +0x20, 0x6A, 0x91, 0x67, 0x30, 0xF0, 0x21, 0x69, +0xD2, 0xF5, 0x08, 0x49, 0xB0, 0x67, 0x33, 0x6E, +0x7F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x20, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, +0x07, 0xF7, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF5, +0xE8, 0x9A, 0x20, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0x08, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, +0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, +0x80, 0x18, 0x05, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x91, 0x67, +0xB0, 0x67, 0x58, 0x6E, 0x80, 0x18, 0x05, 0x59, +0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, +0x01, 0x74, 0xAC, 0xE8, 0x80, 0xF0, 0x0B, 0x60, +0x07, 0x24, 0x02, 0x74, 0x80, 0xF0, 0x1D, 0x60, +0x03, 0x74, 0x80, 0xF0, 0x1E, 0x60, 0xA2, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xEA, 0xF1, 0x78, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0x30, 0xF0, 0x21, 0x6D, 0xEA, 0xF1, 0x7C, 0xDA, +0x00, 0x6E, 0x30, 0xF0, 0x21, 0x6B, 0x30, 0xF0, +0x21, 0x6A, 0x95, 0xF3, 0x10, 0x4C, 0x95, 0xF3, +0x08, 0x4B, 0x95, 0xF3, 0x04, 0x4A, 0x75, 0xF1, +0x12, 0x4D, 0x04, 0xD6, 0xC0, 0x9C, 0x04, 0x97, +0x00, 0x69, 0xC2, 0xDC, 0xC0, 0xAB, 0xE5, 0xF0, +0x18, 0x4F, 0xE4, 0x37, 0xC2, 0xCB, 0xC0, 0xA2, +0x06, 0xD5, 0x05, 0xD1, 0xC2, 0xC2, 0x30, 0xF0, +0x20, 0x6E, 0x8B, 0xF1, 0x00, 0x4E, 0xFD, 0xE6, +0xC0, 0xA7, 0x22, 0x68, 0x04, 0x91, 0xC4, 0xC7, +0x05, 0x96, 0x18, 0xEE, 0x44, 0x6E, 0x12, 0xE8, +0xD8, 0xE9, 0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, +0x00, 0x49, 0x12, 0xEE, 0xC1, 0xE0, 0xD0, 0x67, +0xC9, 0xF7, 0x10, 0x4E, 0xEA, 0xF0, 0x00, 0x48, +0xD9, 0xE1, 0x01, 0xE1, 0x20, 0xAE, 0x80, 0xF0, +0x28, 0xCE, 0x20, 0xA8, 0x02, 0x4E, 0x80, 0xF0, +0x28, 0xC8, 0x06, 0x91, 0x02, 0x48, 0x2A, 0xEE, +0xF5, 0x61, 0x05, 0x96, 0x22, 0x49, 0x01, 0x4F, +0x01, 0x4E, 0x02, 0x76, 0x05, 0xD6, 0x06, 0xD1, +0xD7, 0x61, 0x04, 0x91, 0x04, 0x4C, 0x02, 0x4B, +0x01, 0x49, 0x02, 0x71, 0x04, 0xD1, 0x01, 0x4A, +0x44, 0x4D, 0xBC, 0x61, 0x30, 0xF0, 0x21, 0x6B, +0x95, 0xF3, 0x04, 0x4B, 0x44, 0x43, 0xA7, 0x43, +0x16, 0x4D, 0xC2, 0x67, 0x00, 0x6C, 0x80, 0xC3, +0x01, 0x4B, 0x00, 0x6C, 0xCA, 0xEB, 0x80, 0xCA, +0xFF, 0xF7, 0x88, 0xC2, 0x20, 0xF0, 0x85, 0xC2, +0xFF, 0xF7, 0x89, 0xC2, 0x20, 0xF0, 0x86, 0xC2, +0x80, 0xC5, 0x81, 0xC5, 0x82, 0xC5, 0x02, 0x4A, +0x03, 0x4D, 0xEC, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x0A, 0xF2, 0x60, 0x9A, +0xEA, 0xF1, 0x78, 0xDA, 0x1F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0xE8, 0x9A, 0x30, 0xF0, +0x21, 0x6C, 0xB0, 0x67, 0xD2, 0xF5, 0x08, 0x4C, +0x58, 0x6E, 0x80, 0x18, 0x05, 0x59, 0x82, 0xF4, +0x04, 0x48, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0x30, +0x8B, 0xF1, 0x00, 0x4B, 0x6D, 0xE0, 0x40, 0xDB, +0x09, 0x10, 0x00, 0x6C, 0xB0, 0x67, 0xC4, 0x67, +0x03, 0x10, 0x01, 0x6C, 0xB0, 0x67, 0x00, 0x6E, +0x80, 0x18, 0xEA, 0x0C, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, +0x0E, 0x22, 0x08, 0x6A, 0x04, 0x31, 0x4D, 0xE9, +0x01, 0x6B, 0x44, 0x40, 0x64, 0xEA, 0x30, 0xF0, +0x21, 0x6A, 0xD2, 0xF5, 0x08, 0x4A, 0x06, 0xD2, +0x6D, 0xE9, 0x06, 0x6A, 0x0D, 0x10, 0x08, 0x6A, +0x04, 0x31, 0x4D, 0xE9, 0x01, 0x6B, 0x44, 0x40, +0x64, 0xEA, 0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, +0x08, 0x4A, 0x06, 0xD2, 0x6D, 0xE9, 0x04, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, +0x23, 0xF5, 0xE8, 0x9A, 0xB0, 0x67, 0x00, 0x6E, +0x80, 0x18, 0x78, 0x59, 0x06, 0x94, 0x08, 0xF0, +0x00, 0x6F, 0x01, 0x6B, 0x8F, 0x6E, 0xB0, 0x67, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, +0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0xC4, 0x0C, +0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x2C, 0x0C, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0xC1, 0x41, +0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, +0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x21, 0x6C, +0xEF, 0x6E, 0x10, 0x6F, 0x00, 0x6A, 0xD2, 0xF5, +0x08, 0x4C, 0xB0, 0x67, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x01, 0x6D, 0x90, 0x67, 0x80, 0x18, +0x2C, 0x0C, 0x00, 0x6C, 0x80, 0x18, 0xC4, 0x0C, +0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x4C, 0x10, +0x22, 0x67, 0x04, 0x2A, 0x01, 0x6C, 0xB0, 0x67, +0x80, 0x18, 0xEF, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x41, 0xE0, 0x89, 0xF6, +0x29, 0xC0, 0x51, 0x67, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xED, 0x4C, 0xE8, +0x30, 0xF0, 0x21, 0x6A, 0xF4, 0xF7, 0x59, 0xA2, +0x06, 0x6B, 0x08, 0xD5, 0x4E, 0xEB, 0x01, 0x5B, +0x98, 0x67, 0x07, 0xD4, 0x16, 0x2D, 0x04, 0x24, +0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, +0x04, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, +0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x08, 0x4A, +0x08, 0x69, 0x06, 0xD2, 0x6D, 0xE9, 0x04, 0x6A, +0x19, 0x10, 0x08, 0x93, 0x01, 0x73, 0x22, 0x61, +0x07, 0x94, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, +0x01, 0x4A, 0x03, 0x10, 0x07, 0x4A, 0x04, 0x33, +0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, +0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x21, 0x6A, +0xD2, 0xF5, 0x08, 0x4A, 0x08, 0x69, 0x06, 0xD2, +0x6D, 0xE9, 0x06, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0x94, 0x23, 0xF5, 0xE8, 0x9A, +0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x78, 0x59, +0x01, 0x6A, 0x25, 0x10, 0x08, 0x93, 0x00, 0x69, +0x02, 0x73, 0x2F, 0x61, 0x07, 0x94, 0x04, 0x24, +0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, +0x0A, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, +0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x08, 0x4A, +0x06, 0xD2, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0x94, 0x23, 0xF5, 0xE8, 0x9A, +0x08, 0x69, 0xB0, 0x67, 0x00, 0x6E, 0x6D, 0xE9, +0x80, 0x18, 0x78, 0x59, 0x00, 0x6A, 0x06, 0x94, +0xB0, 0x67, 0x8F, 0x6E, 0x08, 0xF0, 0x00, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, +0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0xC4, 0x0C, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF3, 0x44, 0x9C, 0x01, 0x6D, 0xC1, 0x41, +0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, +0x01, 0x6C, 0x40, 0xEA, 0x01, 0x6D, 0x90, 0x67, +0x80, 0x18, 0x4C, 0x10, 0x00, 0x6C, 0x06, 0xD2, +0x80, 0x18, 0xC4, 0x0C, 0x04, 0x32, 0x09, 0xD2, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x09, 0x93, 0x01, 0x6D, 0x08, 0x6E, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, +0x08, 0x94, 0x1C, 0x2C, 0x7D, 0x67, 0x87, 0x43, +0x11, 0x4C, 0x60, 0xA4, 0x30, 0xF0, 0x20, 0x69, +0xF5, 0xF0, 0x48, 0x40, 0x06, 0x94, 0x44, 0x32, +0x8B, 0xF1, 0x00, 0x49, 0x29, 0xE2, 0x60, 0xC2, +0x48, 0x2C, 0x07, 0x92, 0x09, 0x22, 0x01, 0x6D, +0x23, 0xF3, 0x18, 0x4C, 0xAB, 0xED, 0x80, 0x18, +0x1C, 0x28, 0x82, 0xF4, 0x10, 0x48, 0x35, 0x10, +0x02, 0x6C, 0x38, 0x10, 0x08, 0x93, 0x02, 0x73, +0x38, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0xE8, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0x30, 0xF0, +0x20, 0x69, 0x8B, 0xF1, 0x00, 0x49, 0xD2, 0xF5, +0x08, 0x4C, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, +0x05, 0x59, 0x69, 0xF6, 0x9E, 0xA1, 0xFF, 0x6B, +0x56, 0x32, 0x6C, 0xEA, 0x80, 0x34, 0x05, 0xF1, +0x64, 0x40, 0x8D, 0xEA, 0x64, 0x33, 0x09, 0x94, +0x2D, 0xE3, 0x40, 0xCB, 0x7D, 0x67, 0x29, 0xE4, +0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, 0x06, 0x94, +0xEA, 0xF1, 0x71, 0xC2, 0x12, 0x2C, 0x07, 0x92, +0x0C, 0x22, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x4C, +0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, 0x82, 0xF4, +0x12, 0x48, 0x08, 0x30, 0x25, 0xE0, 0x40, 0xD9, +0x04, 0x10, 0x03, 0x6C, 0xB0, 0x67, 0x80, 0x18, +0xEF, 0x10, 0x06, 0x92, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, +0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0x4C, 0xED, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x69, 0xF6, 0x79, 0xA2, 0x30, 0xF0, 0x21, 0x6C, +0xD5, 0xF3, 0x00, 0x4C, 0x0D, 0xD3, 0x41, 0xF2, +0x62, 0x40, 0x6C, 0x33, 0x6D, 0xE2, 0x0C, 0xD5, +0x0A, 0xD3, 0x08, 0xD4, 0x00, 0x69, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, +0xE0, 0x9B, 0xFF, 0x6A, 0x30, 0xF0, 0x21, 0x68, +0xD2, 0xF5, 0x08, 0x48, 0x2C, 0xEA, 0x90, 0x67, +0xA2, 0x67, 0xDF, 0x6E, 0x06, 0xD2, 0x80, 0x18, +0x05, 0x59, 0x10, 0x6B, 0x4D, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, 0x06, 0x95, +0xE0, 0x9A, 0x90, 0x67, 0xDF, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0x78, 0x59, 0x0A, 0x93, 0x06, 0x95, +0x90, 0x67, 0x40, 0x9B, 0x58, 0x6E, 0x30, 0xF0, +0x20, 0x68, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, 0x80, 0x18, +0x78, 0x59, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, +0x24, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x0D, 0x93, 0x06, 0x73, +0x1C, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, +0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x08, 0x93, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC0, 0x9B, +0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x08, 0x93, 0x01, 0x6D, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0xC2, 0x9B, +0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, +0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x1C, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0xC0, 0x9B, 0x01, 0x6D, 0x23, 0xF3, +0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x0C, 0x94, +0x06, 0x24, 0x00, 0x6A, 0x01, 0x74, 0x06, 0xD2, +0xC0, 0xF0, 0x05, 0x61, 0x62, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xA3, 0xF3, 0xB8, 0x9B, 0x23, 0xF3, +0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x44, 0x6B, +0x78, 0xE9, 0x09, 0x94, 0x88, 0x6A, 0x00, 0x68, +0x12, 0xEB, 0x58, 0xEC, 0x12, 0xEA, 0x49, 0xE3, +0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF7, 0x10, 0x4A, +0x8B, 0xF1, 0x00, 0x4B, 0x4D, 0xE3, 0x06, 0xD3, +0x06, 0x92, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, +0xC0, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF4, +0x5C, 0x9A, 0xC0, 0x36, 0xAB, 0xED, 0x4D, 0xEE, +0x08, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x02, 0x4E, 0x01, 0x48, +0x40, 0xEA, 0x06, 0x93, 0x11, 0x70, 0x02, 0x4B, +0x06, 0xD3, 0xE6, 0x61, 0x44, 0x6B, 0x78, 0xE9, +0x09, 0x94, 0x88, 0x6A, 0x00, 0x68, 0x12, 0xEB, +0x58, 0xEC, 0x12, 0xEA, 0x49, 0xE3, 0x30, 0xF0, +0x20, 0x6B, 0xEA, 0xF0, 0x00, 0x4A, 0x8B, 0xF1, +0x00, 0x4B, 0x4D, 0xE3, 0x06, 0xD3, 0x06, 0x92, +0x08, 0x33, 0x01, 0x6D, 0xC0, 0xAA, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF4, 0x5C, 0x9A, 0xC0, 0x36, +0xC3, 0xF3, 0x18, 0x6C, 0x4D, 0xEE, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x6D, 0xEE, +0xAB, 0xED, 0x40, 0xEA, 0x06, 0x93, 0x01, 0x48, +0x11, 0x70, 0x02, 0x4B, 0x06, 0xD3, 0xE7, 0x61, +0xE7, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, +0xB8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0x44, 0x6B, 0x78, 0xE9, 0x09, 0x94, +0x88, 0x6A, 0x00, 0x68, 0x12, 0xEB, 0x58, 0xEC, +0x12, 0xEA, 0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, +0xE9, 0xF7, 0x12, 0x4A, 0x8B, 0xF1, 0x00, 0x4B, +0x4D, 0xE3, 0x06, 0xD3, 0x06, 0x92, 0x01, 0x6D, +0xC3, 0xF3, 0x18, 0x6C, 0xC0, 0xAA, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF4, 0x40, 0x9A, 0xC0, 0x36, +0xAB, 0xED, 0x4D, 0xEE, 0x08, 0x32, 0x4D, 0xEE, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x02, 0x4E, 0x01, 0x48, 0x40, 0xEA, 0x06, 0x93, +0x11, 0x70, 0x02, 0x4B, 0x06, 0xD3, 0xE6, 0x61, +0x44, 0x6B, 0x78, 0xE9, 0x09, 0x94, 0x88, 0x6A, +0x00, 0x68, 0x12, 0xEB, 0x58, 0xEC, 0x12, 0xEA, +0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, 0x0A, 0xF1, +0x02, 0x4A, 0x8B, 0xF1, 0x00, 0x4B, 0x4D, 0xE3, +0x06, 0xD3, 0x06, 0x92, 0x08, 0x33, 0x01, 0x6D, +0xC0, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF4, +0x40, 0x9A, 0xC0, 0x36, 0xC3, 0xF3, 0x18, 0x6C, +0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x6D, 0xEE, 0xAB, 0xED, 0x40, 0xEA, +0x06, 0x93, 0x01, 0x48, 0x11, 0x70, 0x02, 0x4B, +0x06, 0xD3, 0xE7, 0x61, 0x85, 0x10, 0x06, 0x94, +0xFF, 0x6A, 0x8C, 0xEA, 0x11, 0x2A, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xA3, 0xF3, 0xB8, 0x9B, 0x23, 0xF3, +0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF4, 0x5C, 0x9A, 0x10, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, 0xB8, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF4, 0x40, 0x9A, +0x0B, 0xD2, 0x06, 0x92, 0x22, 0x6B, 0x09, 0x94, +0x78, 0xEA, 0x44, 0x6A, 0x00, 0x68, 0x12, 0xEB, +0x58, 0xE9, 0x12, 0xEA, 0x49, 0xE3, 0x88, 0x6B, +0x78, 0xEC, 0x12, 0xEB, 0x69, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF7, 0x10, 0x4A, 0x8B, 0xF1, +0x00, 0x4B, 0x4D, 0xE3, 0x07, 0xD3, 0x07, 0x92, +0x0B, 0x93, 0x01, 0x6D, 0xC0, 0xAA, 0x08, 0x32, +0xC3, 0xF3, 0x18, 0x6C, 0xC0, 0x36, 0x6D, 0xEE, +0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xAB, 0xED, 0x02, 0x4E, 0x40, 0xEA, +0x07, 0x94, 0x01, 0x48, 0x11, 0x70, 0x02, 0x4C, +0x07, 0xD4, 0xE9, 0x61, 0x06, 0x92, 0x22, 0x6B, +0x09, 0x94, 0x78, 0xEA, 0x44, 0x6A, 0x00, 0x68, +0x12, 0xEB, 0x58, 0xE9, 0x12, 0xEA, 0x49, 0xE3, +0x88, 0x6B, 0x78, 0xEC, 0x12, 0xEB, 0x69, 0xE2, +0x30, 0xF0, 0x20, 0x6B, 0xEA, 0xF0, 0x00, 0x4A, +0x8B, 0xF1, 0x00, 0x4B, 0x4D, 0xE3, 0x07, 0xD3, +0x07, 0x92, 0x0B, 0x93, 0x01, 0x6D, 0xC0, 0xAA, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0xC0, 0x36, 0x6D, 0xEE, 0x08, 0x33, 0xC3, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, +0x07, 0x94, 0x01, 0x48, 0x11, 0x70, 0x02, 0x4C, +0x07, 0xD4, 0xEA, 0x61, 0x06, 0x92, 0x01, 0x4A, +0x02, 0x72, 0x06, 0xD2, 0x7F, 0xF7, 0x1B, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0x83, 0xF3, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6B, +0x06, 0xD3, 0x06, 0x93, 0x06, 0x92, 0x30, 0xF0, +0x20, 0x68, 0xFF, 0x6C, 0x8C, 0xEA, 0x64, 0x36, +0xC0, 0xF3, 0x64, 0x98, 0x07, 0xD2, 0x01, 0x6D, +0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF2, 0x01, 0x4C, +0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, +0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, +0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF2, 0xA8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x03, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x07, 0x95, 0x23, 0xF5, 0xE8, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, 0x08, 0x4C, +0x00, 0x6E, 0x80, 0x18, 0x78, 0x59, 0x06, 0x94, +0x01, 0x4C, 0x02, 0x74, 0x06, 0xD4, 0xA9, 0x61, +0x0A, 0x92, 0x08, 0x93, 0x01, 0x49, 0x04, 0x4A, +0x04, 0x4B, 0x02, 0x71, 0x0A, 0xD2, 0x08, 0xD3, +0xBF, 0xF5, 0x16, 0x61, 0x11, 0x97, 0x10, 0x91, +0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x00, 0x6B, 0x8C, 0xEA, 0x2A, 0xF2, +0x7C, 0xC0, 0x2A, 0x2A, 0x69, 0xF6, 0x5A, 0xA0, +0x27, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0xE8, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, +0x08, 0x4C, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, +0x05, 0x59, 0xEA, 0xF1, 0x78, 0x98, 0x0A, 0xF2, +0x40, 0xD8, 0x00, 0x69, 0x4E, 0xEB, 0x05, 0x23, +0xEA, 0xF1, 0x7C, 0x98, 0x6E, 0xEA, 0x10, 0x2A, +0x01, 0x69, 0x02, 0x6D, 0x91, 0x67, 0x80, 0x18, +0x1A, 0x12, 0x91, 0x67, 0x80, 0x18, 0xF0, 0x08, +0x01, 0x6C, 0x80, 0x18, 0x21, 0x09, 0x01, 0x6B, +0x30, 0xF0, 0x21, 0x6A, 0xB5, 0xF3, 0x7C, 0xC2, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x69, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x49, +0xE3, 0xF1, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x2A, 0xF2, 0xDC, 0xA1, 0xE3, 0xF3, +0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x0A, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0x2A, 0xF2, 0xDC, 0xA1, 0xA0, 0x9B, 0xE3, 0xF3, +0x10, 0x6C, 0x40, 0xEA, 0x2A, 0xF2, 0x5C, 0xA1, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF1, 0xBC, 0x9A, 0x63, 0xF6, 0x1C, 0x6C, +0x80, 0x18, 0x1C, 0x28, 0x06, 0x22, 0x01, 0x6B, +0x30, 0xF0, 0x21, 0x6A, 0xB5, 0xF3, 0x60, 0xC2, +0x04, 0x10, 0x30, 0xF0, 0x21, 0x6B, 0xB5, 0xF3, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0x08, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, 0x21, 0x68, +0xD2, 0xF5, 0x08, 0x48, 0x90, 0x67, 0x00, 0x6D, +0x18, 0x6E, 0x80, 0x18, 0x05, 0x59, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, +0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x22, 0x67, +0x80, 0x18, 0x05, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x0A, 0xF2, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x40, 0x9A, +0x89, 0xF6, 0x27, 0xC3, 0x2C, 0xEA, 0x42, 0x32, +0x42, 0x32, 0x89, 0xF6, 0x46, 0xC3, 0x06, 0xF0, +0x00, 0x6A, 0x2C, 0xEA, 0x42, 0x32, 0x52, 0x32, +0x89, 0xF6, 0x48, 0xC3, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x80, 0x18, 0x87, 0x13, 0x00, 0x6C, +0x80, 0x18, 0x21, 0x09, 0x03, 0x28, 0x00, 0x6C, +0xA4, 0x67, 0x07, 0x10, 0x01, 0x70, 0x03, 0x61, +0x00, 0x6C, 0x01, 0x6D, 0x02, 0x10, 0x00, 0x6C, +0x02, 0x6D, 0x80, 0x18, 0x1A, 0x12, 0x01, 0x6C, +0x80, 0x18, 0x21, 0x09, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x24, 0x67, +0x4C, 0xE9, 0xAC, 0xEA, 0x01, 0x72, 0x43, 0x61, +0x44, 0x41, 0x01, 0x6B, 0x64, 0xEA, 0x00, 0xF2, +0x08, 0x6A, 0x4D, 0xEB, 0x04, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0xE8, 0x9A, +0x30, 0xF0, 0x21, 0x68, 0xD2, 0xF5, 0x08, 0x48, +0x90, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x06, 0xD3, +0x80, 0x18, 0x78, 0x59, 0x01, 0x6C, 0x08, 0xF0, +0x00, 0x6F, 0xB1, 0x67, 0x04, 0xD4, 0x8F, 0x6E, +0x90, 0x67, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, +0x20, 0x68, 0x0A, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x06, 0x96, 0x01, 0x6D, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x06, 0x96, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xAB, 0xED, +0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, +0x01, 0x6C, 0x40, 0xEA, 0x91, 0x67, 0x01, 0x6D, +0x80, 0x18, 0x4C, 0x10, 0xF0, 0x10, 0x02, 0x72, +0x01, 0x6A, 0xE0, 0xF0, 0x0C, 0x61, 0x30, 0xF0, +0x21, 0x6A, 0xF4, 0xF7, 0x5E, 0xA2, 0x00, 0x68, +0x09, 0x72, 0x0C, 0x60, 0x12, 0x72, 0x01, 0x68, +0x09, 0x60, 0x1B, 0x72, 0x02, 0x68, 0x06, 0x60, +0x24, 0x68, 0x4E, 0xE8, 0x01, 0x58, 0x18, 0x67, +0x04, 0x6A, 0x03, 0xE2, 0x24, 0x32, 0x08, 0xD2, +0x08, 0x93, 0x08, 0x6A, 0x30, 0xF0, 0x20, 0x6C, +0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x9C, 0x01, 0x6D, +0xC3, 0x67, 0x08, 0xD3, 0x03, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x06, 0xD2, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x06, 0x93, +0x01, 0x6D, 0xAB, 0xED, 0x69, 0xF6, 0xDE, 0xA3, +0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0x44, 0x41, +0x01, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xEA, +0x00, 0xF3, 0x08, 0x6A, 0x4D, 0xEC, 0x80, 0xF3, +0x4C, 0x9B, 0x07, 0xD4, 0x0A, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, +0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x07, 0x96, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, +0xAB, 0xED, 0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF3, +0x4C, 0x9C, 0xC8, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x08, 0x4A, +0x82, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x07, 0xD2, +0x80, 0x18, 0x05, 0x59, 0x91, 0x67, 0x01, 0x6D, +0x80, 0x18, 0x4C, 0x10, 0x01, 0x72, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF4, 0x1C, 0x4A, +0x41, 0xE0, 0x40, 0xA0, 0x06, 0x94, 0x69, 0xF6, +0x5E, 0xC4, 0x70, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x08, 0x4A, 0x07, 0x94, 0xE0, 0x9A, +0xB1, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x05, 0x59, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0x67, 0x08, 0x96, +0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xE3, 0xF7, +0x00, 0x6A, 0x2C, 0xEA, 0x06, 0x93, 0x56, 0x34, +0x96, 0x32, 0x89, 0xF6, 0x40, 0xDB, 0x1F, 0x6A, +0x8C, 0xEA, 0x02, 0x5A, 0xFF, 0x6B, 0x0B, 0x60, +0x03, 0x70, 0x03, 0x60, 0x01, 0x48, 0x6C, 0xE8, +0x4F, 0x10, 0x06, 0x94, 0x01, 0x6B, 0x03, 0x68, +0x2A, 0xF2, 0x75, 0xC4, 0x49, 0x10, 0x0A, 0x5A, +0x0B, 0x61, 0x04, 0x20, 0xFF, 0x48, 0x6C, 0xE8, +0x01, 0x6B, 0x0B, 0x10, 0x06, 0x94, 0x01, 0x6B, +0x2A, 0xF2, 0x75, 0xC4, 0x01, 0x6B, 0x09, 0x10, +0x06, 0x94, 0x00, 0x6B, 0x2A, 0xF2, 0x75, 0xC4, +0x00, 0x6B, 0x03, 0x20, 0x04, 0x58, 0x01, 0x61, +0x03, 0x68, 0x30, 0xF0, 0x20, 0x6C, 0x8B, 0xF1, +0x00, 0x4C, 0x2A, 0xF2, 0xB5, 0xA4, 0x01, 0x5D, +0xB8, 0x67, 0xAB, 0xED, 0xAC, 0xEB, 0x30, 0xF0, +0x20, 0x6D, 0x82, 0xF4, 0x1C, 0x4D, 0xA1, 0xE0, +0xA0, 0xA0, 0x69, 0xF6, 0xBE, 0xC4, 0x0F, 0x2B, +0x69, 0xF6, 0xDE, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x64, 0x9B, 0xC0, 0x36, 0x01, 0x6D, +0x4D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, +0x40, 0xEB, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, +0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0xFF, 0xF7, +0x1F, 0x6E, 0x40, 0xEA, 0x01, 0x6A, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0x01, 0x6B, 0xC8, 0x17, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x21, 0x6A, 0xF4, 0xF7, +0x7B, 0xA2, 0xFF, 0x68, 0x8C, 0xE8, 0x06, 0x5B, +0x01, 0x6A, 0x7C, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x68, 0x33, 0x62, 0xF4, 0x0C, 0x4A, 0x69, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x90, 0x67, 0x80, 0x18, +0xF7, 0x0D, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, +0x4C, 0x11, 0x62, 0x10, 0x90, 0x67, 0x80, 0x18, +0xA5, 0x0D, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, +0x90, 0x11, 0x52, 0x22, 0x03, 0x6C, 0x98, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x12, 0xEC, 0x71, 0xE4, 0x2A, 0xF2, 0xA2, 0xA4, +0x02, 0x5D, 0x04, 0x60, 0x01, 0x4D, 0x2A, 0xF2, +0xA2, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x01, 0x6C, +0x39, 0x10, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, +0x3C, 0x0D, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x00, 0x6B, 0x2A, 0xF2, 0x75, 0xC2, +0x90, 0x67, 0x02, 0x6D, 0x80, 0x18, 0xBD, 0x13, +0x2F, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0x34, +0x8B, 0xF1, 0x00, 0x4B, 0x6D, 0xE4, 0x2A, 0xF2, +0x8E, 0xA3, 0x0A, 0x5C, 0x25, 0x60, 0x01, 0x4C, +0x2A, 0xF2, 0x8E, 0xC3, 0xED, 0x17, 0x90, 0x67, +0x00, 0x6D, 0x80, 0x18, 0x3C, 0x0D, 0x90, 0x67, +0x02, 0x6D, 0x80, 0x18, 0x90, 0x11, 0x18, 0x22, +0x03, 0x6C, 0x98, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x12, 0xEC, 0x71, 0xE4, +0x2A, 0xF2, 0xA3, 0xA4, 0x02, 0x5D, 0x04, 0x60, +0x01, 0x4D, 0x2A, 0xF2, 0xA3, 0xC4, 0xEB, 0x17, +0x61, 0xE0, 0x02, 0x6C, 0xA9, 0xF7, 0x94, 0xC0, +0x06, 0x6C, 0x69, 0xF6, 0x9B, 0xC3, 0x12, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x69, 0xF6, 0x9B, 0xA3, 0x01, 0x4C, 0xF5, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x69, 0xF6, 0x7B, 0xA2, 0x01, 0x4B, 0x69, 0xF6, +0x7B, 0xC2, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x69, 0xF6, 0x79, 0xA2, +0x69, 0xF6, 0x5C, 0xA2, 0x08, 0xD3, 0x06, 0x5A, +0x76, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, +0x82, 0xF4, 0x04, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x00, 0xEA, 0x00, 0x6C, 0x80, 0x18, 0x5F, 0x14, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x69, 0xF6, 0x7B, 0xA2, 0x06, 0x73, 0xF5, 0x61, +0x2A, 0x10, 0x00, 0x6C, 0x80, 0x18, 0xE7, 0x0E, +0x00, 0x6C, 0xA4, 0x67, 0x37, 0x10, 0x00, 0x6C, +0x80, 0x18, 0xAF, 0x0E, 0x00, 0x6C, 0xA4, 0x67, +0x80, 0x18, 0x90, 0x11, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x89, 0xF6, 0x84, 0xA3, +0x01, 0x4C, 0x89, 0xF6, 0x84, 0xC3, 0x42, 0x22, +0x2A, 0xF2, 0x41, 0xA3, 0x03, 0x5A, 0x3E, 0x60, +0x01, 0x4A, 0x2A, 0xF2, 0x41, 0xC3, 0x43, 0x10, +0x01, 0x6C, 0x80, 0x18, 0x5F, 0x14, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x69, 0xF6, +0x7B, 0xA2, 0x06, 0x73, 0xF5, 0x61, 0x69, 0xF6, +0x7C, 0xA2, 0x01, 0x4B, 0x69, 0xF6, 0x7C, 0xC2, +0x78, 0x67, 0x69, 0xF6, 0x7B, 0xC2, 0x89, 0xF6, +0x64, 0xA2, 0x01, 0x4B, 0x89, 0xF6, 0x64, 0xC2, +0x2A, 0x10, 0x01, 0x6C, 0x80, 0x18, 0xE7, 0x0E, +0x01, 0x6C, 0x00, 0x6D, 0x80, 0x18, 0x4C, 0x11, +0x19, 0x10, 0x01, 0x6C, 0x80, 0x18, 0xAF, 0x0E, +0x01, 0x6C, 0x00, 0x6D, 0x80, 0x18, 0x90, 0x11, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x89, 0xF6, 0x84, 0xA3, 0x01, 0x4C, 0x89, 0xF6, +0x84, 0xC3, 0x08, 0x22, 0x2A, 0xF2, 0x44, 0xA3, +0x03, 0x5A, 0x04, 0x60, 0x01, 0x4A, 0x2A, 0xF2, +0x44, 0xC3, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x69, 0xF6, 0x7C, 0xA2, +0x01, 0x4B, 0x69, 0xF6, 0x7C, 0xC2, 0x30, 0xF0, +0x21, 0x6A, 0xF4, 0xF7, 0x5C, 0xA2, 0x06, 0x72, +0x80, 0xF0, 0x08, 0x61, 0x30, 0xF0, 0x21, 0x69, +0x00, 0x6A, 0xD5, 0xF3, 0x00, 0x49, 0x06, 0xD2, +0x06, 0x92, 0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0x6C, 0xEA, 0x06, 0x93, 0x07, 0xD2, 0x01, 0x6D, +0x64, 0x36, 0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, +0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, +0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, +0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x08, 0x92, 0x06, 0x72, +0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, +0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xC0, 0x99, 0x01, 0x6D, 0x23, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x6D, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x1C, 0x6C, +0xAB, 0xED, 0xC2, 0x99, 0x21, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, +0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF2, 0xA8, 0x9B, 0xC0, 0xF3, +0x44, 0x9A, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x03, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x07, 0x95, 0x23, 0xF5, 0xE8, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, 0x08, 0x4C, +0x00, 0x6E, 0x80, 0x18, 0x78, 0x59, 0x06, 0x92, +0x04, 0x49, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, +0x7F, 0xF7, 0x1E, 0x61, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x21, 0x6A, 0xF4, 0xF7, 0x59, 0xA2, +0xFF, 0x69, 0x8C, 0xE9, 0x02, 0x72, 0x02, 0x6A, +0x05, 0xD2, 0x02, 0x60, 0x04, 0x6B, 0x05, 0xD3, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x40, 0xEA, 0x01, 0x6D, 0x03, 0xF3, 0x08, 0x6C, +0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, 0x04, 0xD2, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, +0x06, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x08, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, +0x00, 0x68, 0x91, 0x67, 0x80, 0x18, 0xA5, 0x14, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x69, 0xF6, 0x7C, 0xA2, 0x06, 0x73, 0x0B, 0x60, +0x05, 0x21, 0x89, 0xF6, 0x44, 0xA2, 0x05, 0x93, +0x6E, 0xEA, 0x05, 0x22, 0x01, 0x48, 0xFF, 0x6A, +0x4C, 0xE8, 0x64, 0x70, 0xEA, 0x61, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x00, 0x6C, 0x06, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, 0x03, 0xF3, +0x08, 0x69, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x00, 0x6C, 0x06, 0x6D, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, 0x01, 0x6D, +0x91, 0x67, 0xAB, 0xED, 0x40, 0xEA, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0xE8, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0xD2, 0xF5, 0x08, 0x4C, 0x00, 0x6D, 0x18, 0x6E, +0x80, 0x18, 0x05, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0x06, 0xF0, 0x00, 0x6C, 0x8B, 0xF1, 0x00, 0x4B, +0x4C, 0xEC, 0x0A, 0xF2, 0x40, 0xDB, 0x82, 0x32, +0x52, 0x32, 0x02, 0x72, 0x0A, 0x60, 0x03, 0x6C, +0x4E, 0xEC, 0x04, 0x24, 0x01, 0x72, 0x02, 0x6A, +0x07, 0x60, 0x05, 0x10, 0x69, 0xF6, 0x99, 0xC3, +0x05, 0x10, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x69, 0xF6, 0x59, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x60, 0x9B, 0x0A, 0xF2, 0x80, 0x9A, +0x8C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x69, 0xF6, +0x78, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xF1, 0x63, 0x1D, 0x62, 0x1C, 0xD1, 0x1B, 0xD0, +0x08, 0xA4, 0x02, 0x6A, 0x01, 0x69, 0x0C, 0xEA, +0x46, 0x32, 0x18, 0xD2, 0x80, 0x18, 0x46, 0x08, +0x80, 0x18, 0x6E, 0x15, 0x80, 0x18, 0x87, 0x13, +0x00, 0x6C, 0x80, 0x18, 0x21, 0x09, 0x90, 0x67, +0x2C, 0xEC, 0x00, 0x6D, 0x80, 0x18, 0x50, 0x13, +0x80, 0xF0, 0x00, 0x2A, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0x69, 0xF6, 0x7A, 0xA0, +0x69, 0xF6, 0x5C, 0xC0, 0x69, 0xF6, 0x5B, 0xC0, +0x01, 0x4B, 0x69, 0xF6, 0x7A, 0xC0, 0x89, 0xF6, +0x44, 0xC0, 0x89, 0xF6, 0x25, 0xC0, 0x38, 0x6C, +0x80, 0x18, 0x7F, 0x0C, 0x00, 0x6C, 0x2A, 0xF2, +0x58, 0xD8, 0xA4, 0x67, 0x80, 0x18, 0xEF, 0x10, +0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6F, +0x04, 0x04, 0x0D, 0x05, 0x82, 0xF0, 0x10, 0x4E, +0x82, 0xF0, 0x1C, 0x4F, 0x80, 0x18, 0xCF, 0x0C, +0x30, 0xF0, 0x20, 0x6D, 0x07, 0x04, 0xE2, 0xF0, +0x10, 0x4D, 0x80, 0x18, 0x8E, 0x10, 0x00, 0x68, +0x80, 0x18, 0xF5, 0x0B, 0x01, 0x6C, 0x80, 0x18, +0x38, 0x09, 0x18, 0x94, 0x80, 0x18, 0x32, 0x15, +0x00, 0x6C, 0x80, 0x18, 0x38, 0x09, 0x30, 0xF0, +0x20, 0x6C, 0xE2, 0xF0, 0x10, 0x4C, 0x07, 0x05, +0x80, 0x18, 0x80, 0x0F, 0x30, 0xF0, 0x20, 0x6E, +0x30, 0xF0, 0x20, 0x6F, 0x04, 0x04, 0x0D, 0x05, +0x82, 0xF0, 0x10, 0x4E, 0x82, 0xF0, 0x1C, 0x4F, +0x80, 0x18, 0xB2, 0x0B, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x69, 0xF6, 0x7C, 0xA2, +0x06, 0x73, 0x08, 0x60, 0xFF, 0x6B, 0x01, 0x48, +0x6C, 0xE8, 0x03, 0x70, 0x00, 0x6B, 0x89, 0xF6, +0x64, 0xC2, 0xD2, 0x61, 0x30, 0xF0, 0x20, 0x68, +0x00, 0x6C, 0x80, 0x18, 0xF0, 0x08, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0xFF, 0x6D, +0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x10, 0x69, 0x91, 0x67, 0xFF, 0x6D, +0xAA, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x00, 0x6C, 0xFF, 0x6D, 0x0A, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0xFF, 0x6D, 0xAA, 0x6E, 0x40, 0xEA, 0x01, 0x6C, +0x80, 0x18, 0x21, 0x09, 0x1D, 0x97, 0x1C, 0x91, +0x1B, 0x90, 0x00, 0x6A, 0x0F, 0x63, 0x00, 0xEF, +0xF2, 0x63, 0x1B, 0x62, 0x1A, 0xD0, 0x30, 0xF0, +0x20, 0x6D, 0x04, 0x67, 0x02, 0xF5, 0x1C, 0x4D, +0x04, 0x04, 0x54, 0x6E, 0x00, 0x18, 0x9D, 0xD8, +0x00, 0x6A, 0x26, 0x20, 0x70, 0x67, 0x01, 0x73, +0x03, 0x60, 0x66, 0x33, 0x01, 0x4A, 0xFB, 0x17, +0x01, 0x6C, 0x01, 0x4A, 0x64, 0x67, 0x04, 0x10, +0x01, 0x4B, 0xFF, 0x6D, 0x84, 0x34, 0xAC, 0xEB, +0x63, 0xEA, 0xFA, 0x60, 0x64, 0x6B, 0x78, 0xE8, +0x05, 0x6D, 0x12, 0xE8, 0x9B, 0xE8, 0x01, 0x2C, +0xE5, 0xE8, 0x12, 0xEC, 0xBB, 0xEC, 0x01, 0x2D, +0xE5, 0xE8, 0x12, 0xEC, 0x15, 0x5C, 0x78, 0xEA, +0x12, 0xEA, 0x01, 0x61, 0x14, 0x6C, 0x7D, 0x67, +0x88, 0x34, 0x91, 0xE3, 0x64, 0x9C, 0x6B, 0xE2, +0x1B, 0x97, 0x1A, 0x90, 0x0E, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x26, 0x67, 0xE3, 0xF4, +0xDC, 0x9B, 0x05, 0x67, 0x01, 0x6D, 0x0D, 0xD7, +0x63, 0xF5, 0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x00, 0x6A, 0x04, 0xD2, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xA8, 0xC0, 0x99, 0xC0, 0xF3, +0x44, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x04, 0x93, 0x04, 0x48, 0x04, 0x49, 0x01, 0x4B, +0x04, 0xD3, 0x04, 0x92, 0x0D, 0x93, 0x63, 0xEA, +0xEE, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x0C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF3, 0x14, 0x6C, 0xF0, 0x6D, 0x04, 0x6E, +0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x68, 0xAC, 0xE8, +0xD0, 0x67, 0xA3, 0xF0, 0x04, 0x6C, 0x80, 0x6D, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xD0, 0x67, +0xA8, 0xF1, 0x04, 0x6C, 0x80, 0x6D, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x68, 0x43, 0xF5, 0x2C, 0x9A, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x00, 0x6C, +0xB1, 0x67, 0x1F, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0xA8, 0xF1, 0x00, 0x6C, +0x1F, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF5, 0x30, 0x9A, 0xC0, 0xF3, 0x44, 0x98, +0xE3, 0xF0, 0x08, 0x6C, 0xB1, 0x67, 0x1F, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xE8, 0xF1, 0x08, 0x6C, 0x1F, 0x6E, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, +0x08, 0xD4, 0x80, 0xF1, 0x16, 0x22, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, +0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, +0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x04, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0xA3, 0xF4, 0x00, 0x4B, +0x70, 0x12, 0x08, 0x93, 0x60, 0xF0, 0x5F, 0xA3, +0xE0, 0xF0, 0x1B, 0x22, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0xC4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, +0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x08, 0x92, 0x04, 0x6B, 0x63, 0xF0, 0x00, 0x6C, +0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0x0E, 0xF0, 0x00, 0x6D, 0x67, 0xEE, 0xC3, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, +0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x0C, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, +0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, +0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, +0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x1C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, +0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, +0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF4, 0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, +0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x0C, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, +0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, +0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, +0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x1C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, +0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, +0xD5, 0xA2, 0xB1, 0x67, 0xC0, 0xF3, 0x44, 0x98, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF4, 0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0xA7, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF5, 0xD4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF4, +0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x0C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xC0, 0x9B, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0xC3, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x1C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x0C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, +0x14, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x30, 0xF0, 0x20, 0x6B, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0xE3, 0xF4, +0x18, 0x4B, 0xC0, 0x9B, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xED, 0x1E, 0xF0, +0x01, 0x4D, 0x6C, 0xED, 0x02, 0x5D, 0x6C, 0xEE, +0x09, 0x61, 0x02, 0xF0, 0x00, 0x76, 0x06, 0x60, +0xE1, 0xF7, 0x1F, 0x6A, 0x4E, 0xEE, 0x01, 0x5E, +0x58, 0x67, 0x20, 0xE8, 0x01, 0x6A, 0x20, 0xE8, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0xAC, 0xEA, 0x50, 0x6B, 0x78, 0xEA, +0xE0, 0xF0, 0x6C, 0x44, 0x24, 0x67, 0x12, 0xEA, +0x41, 0xE4, 0x7F, 0x48, 0x4D, 0xE3, 0x1D, 0x48, +0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF5, +0xB8, 0x9A, 0x40, 0x98, 0xE3, 0xF7, 0x1F, 0x6E, +0x91, 0x67, 0x4C, 0xED, 0xA2, 0x35, 0xA2, 0x35, +0x4C, 0xEE, 0x80, 0x18, 0x48, 0x18, 0x02, 0x22, +0x00, 0x6A, 0x05, 0x10, 0x04, 0x92, 0x04, 0x48, +0x4A, 0xE8, 0xEB, 0x61, 0x01, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x4C, 0xED, +0x4C, 0xEE, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, +0x2B, 0xE9, 0x0C, 0xD4, 0x05, 0xD5, 0x06, 0xD6, +0xB1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0x0C, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xC3, 0xF3, 0x14, 0x6C, 0xF0, 0x6E, 0x40, 0xEA, +0x05, 0x93, 0x50, 0x6A, 0x03, 0xF3, 0x0C, 0x68, +0x58, 0xEB, 0x0C, 0x93, 0x00, 0x69, 0x12, 0xEA, +0x49, 0xE3, 0x7F, 0x4A, 0x1D, 0x4A, 0x04, 0xD2, +0x05, 0x92, 0x90, 0x67, 0x05, 0x22, 0x87, 0x40, +0x51, 0x4C, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, +0x06, 0x93, 0x0A, 0x2B, 0x03, 0x71, 0x03, 0x60, +0xE3, 0xF7, 0x1F, 0x6E, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF5, 0xDC, 0x9A, 0x02, 0x10, +0x04, 0x92, 0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEA, 0x04, 0x93, 0xFF, 0x6A, 0x01, 0x49, +0x4C, 0xE9, 0x04, 0x4B, 0x04, 0x48, 0xFF, 0xF7, +0x1F, 0x6A, 0x14, 0x71, 0x04, 0xD3, 0x4C, 0xE8, +0xD7, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x24, 0x67, 0x0F, 0x6D, +0x03, 0xF3, 0x00, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x1C, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x60, 0xF0, +0xDD, 0xA1, 0x03, 0xF3, 0x08, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x1C, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x60, 0xF0, +0xDD, 0xA1, 0x63, 0xF3, 0x00, 0x6C, 0x40, 0xEA, +0x60, 0xF0, 0x5C, 0xA1, 0x2C, 0x22, 0x80, 0xF0, +0x42, 0xA9, 0x01, 0x6B, 0x6C, 0xEA, 0x10, 0x22, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, +0x18, 0xF0, 0x00, 0x6D, 0xC3, 0x67, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x20, 0xF1, 0xDC, 0xA9, +0x03, 0xF3, 0x04, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, +0x80, 0xF0, 0x42, 0xA9, 0x02, 0x6B, 0x6C, 0xEA, +0x3C, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x63, 0xF3, 0x00, 0x6C, 0x18, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF3, 0x1C, 0x6C, 0xFF, 0x6D, +0x20, 0xF1, 0xDE, 0xA9, 0x29, 0x10, 0x80, 0xF0, +0x42, 0xA9, 0x01, 0x6B, 0x6C, 0xEA, 0x0F, 0x22, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, +0x18, 0xF0, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x04, 0x6C, +0xFF, 0x6D, 0x5B, 0x6E, 0x40, 0xEA, 0x80, 0xF0, +0x42, 0xA9, 0x02, 0x6B, 0x6C, 0xEA, 0x11, 0x22, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF3, 0x00, 0x6C, 0x18, 0xF0, 0x00, 0x6D, +0x03, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x43, 0xF3, 0x1C, 0x6C, 0xFF, 0x6D, 0x5B, 0x6E, +0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0x63, 0xF5, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x20, 0xF5, 0x00, 0x6C, +0xFF, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF6, 0x10, 0x6C, 0x0F, 0x6D, 0x02, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, +0x28, 0x9A, 0x30, 0xF0, 0x21, 0x68, 0xD2, 0xF5, +0x08, 0x48, 0x00, 0x6D, 0x90, 0x67, 0xC5, 0x67, +0xF1, 0x67, 0x80, 0x18, 0x05, 0x59, 0xFF, 0x6B, +0x4C, 0xEB, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, +0x00, 0x6E, 0x04, 0xD3, 0xFF, 0x69, 0x80, 0x18, +0x05, 0x59, 0x4C, 0xE9, 0x00, 0x68, 0x27, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x08, 0x4A, +0xE0, 0x9A, 0x30, 0xF0, 0x21, 0x69, 0xD2, 0xF5, +0x08, 0x49, 0x00, 0x6D, 0x91, 0x67, 0xC5, 0x67, +0x80, 0x18, 0x05, 0x59, 0xFF, 0x6B, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x08, 0x4A, +0xE0, 0x9A, 0x91, 0x67, 0x01, 0x6D, 0x00, 0x6E, +0x04, 0xD3, 0xFF, 0x69, 0x80, 0x18, 0x05, 0x59, +0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x02, 0x6C, 0x01, 0x48, 0x40, 0xEA, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x04, 0x93, +0x02, 0x73, 0x02, 0x60, 0x02, 0x71, 0x03, 0x61, +0xC1, 0xF1, 0x04, 0x70, 0xD1, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x04, 0x67, 0x80, 0x18, 0xD7, 0x18, 0x60, 0xF0, +0x5F, 0xA0, 0x1E, 0x22, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, 0x1C, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, +0xA3, 0xF0, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, +0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, +0xE1, 0xF7, 0x18, 0x6D, 0xE0, 0xF1, 0x1F, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, +0x04, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x68, 0xF1, +0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF3, 0x20, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, +0x0C, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x0C, 0x6C, +0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x00, 0x6E, 0x08, 0xF1, 0x0C, 0x6C, 0x03, 0x6D, -0x40, 0xEA, 0x01, 0x6D, 0x21, 0xF0, 0x04, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0x0D, 0x28, 0x07, 0xD2, +0x08, 0xF1, 0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, +0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, +0x0C, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF5, 0xA8, 0x9B, 0x21, 0xF0, 0x04, 0x69, +0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0xA0, 0x9B, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6A, 0x25, 0x67, +0x04, 0xD6, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x08, 0x4B, 0xC0, 0x99, 0xE0, 0x9B, +0x30, 0xF0, 0x21, 0x68, 0xD2, 0xF5, 0x08, 0x48, +0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x05, 0x59, +0x04, 0x93, 0x90, 0x67, 0x01, 0x6D, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, +0xC0, 0x99, 0xE0, 0x9A, 0x04, 0x49, 0x80, 0x18, +0x05, 0x59, 0x04, 0x93, 0x41, 0xDB, 0x05, 0x92, +0x08, 0x4B, 0x04, 0xD3, 0x01, 0x4A, 0x07, 0x72, +0x05, 0xD2, 0xDC, 0x61, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEE, +0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, 0x04, 0xD6, +0x2C, 0xEF, 0xC4, 0x36, 0x0A, 0xD4, 0x0B, 0xD5, +0x4D, 0xEE, 0x05, 0xD7, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x40, 0xEB, 0x05, 0x92, 0x0C, 0x22, +0x0B, 0x96, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xFA, 0x4E, 0x63, 0xF3, 0x04, 0x6C, +0x03, 0xF5, 0xB4, 0x9B, 0x2C, 0xEE, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF5, 0xB4, 0x9B, 0x63, 0xF3, 0x04, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x0A, 0x93, 0x04, 0x92, +0x63, 0xF3, 0x04, 0x6C, 0x41, 0xE3, 0x7D, 0x67, +0x47, 0x43, 0x0D, 0x4A, 0x60, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF5, 0xB4, 0x9A, 0x80, 0xF0, +0x77, 0xC0, 0x80, 0x18, 0x1C, 0x28, 0x80, 0xF0, +0x59, 0xC0, 0x0A, 0x94, 0x04, 0x95, 0x05, 0x96, +0x80, 0x18, 0x68, 0x18, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x4C, 0xEF, 0x4C, 0xED, 0x24, 0x67, +0x0C, 0xD6, 0x04, 0xD7, 0x05, 0x2D, 0xA7, 0x67, +0x80, 0x18, 0x52, 0x18, 0x01, 0x68, 0x01, 0x2A, +0x00, 0x68, 0x0C, 0x95, 0x04, 0x96, 0x91, 0x67, +0xF0, 0x67, 0x80, 0x18, 0x76, 0x19, 0x50, 0x67, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xE3, 0xF3, 0x1C, 0x68, +0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x80, 0x18, +0x1C, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, +0xA4, 0x9A, 0x90, 0x67, 0xFF, 0xF7, 0x1F, 0x69, +0x80, 0x18, 0x1C, 0x28, 0x90, 0x67, 0xB1, 0x67, +0x04, 0xD2, 0x80, 0x18, 0x1C, 0x28, 0xE3, 0xF7, +0x1F, 0x6B, 0x6C, 0xEA, 0x04, 0xF0, 0x00, 0x6C, +0x53, 0xE4, 0x04, 0x92, 0x6C, 0xEC, 0xFF, 0x4C, +0x4C, 0xEB, 0x2C, 0xEC, 0x60, 0x32, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x40, 0x32, 0x8D, 0xEA, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, +0x30, 0xF0, 0x20, 0x68, 0x05, 0xD2, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0x24, 0x67, 0xAB, 0xED, +0x03, 0xF3, 0x00, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, +0x05, 0x93, 0x0F, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0xBC, 0x9B, +0xA3, 0xF3, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x04, 0x6C, +0x11, 0x10, 0x05, 0x94, 0x01, 0x74, 0x15, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0xBC, 0x9B, 0xA3, 0xF3, 0x14, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x43, 0xF3, 0x1C, 0x6C, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF5, 0xC8, 0x9B, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x63, 0xF5, +0xCC, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0xC3, 0xF3, +0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0xAB, 0x19, 0x05, 0x94, 0x50, 0x6D, 0xB8, 0xEC, +0xAF, 0x4D, 0xC3, 0xF3, 0x14, 0x6C, 0x12, 0xEB, +0x6D, 0xE1, 0x04, 0xD3, 0x80, 0xF0, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x03, 0xF5, 0xB4, 0x9A, 0x21, 0xF0, 0x04, 0x6C, -0x03, 0x6E, 0x40, 0xEB, 0x06, 0x93, 0x0C, 0x94, -0x00, 0x6D, 0xC5, 0x67, 0xF1, 0x67, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x06, 0x92, 0x0C, 0x94, -0xF1, 0x67, 0x01, 0x6D, 0x00, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0xC0, 0xF3, 0x44, 0x98, -0x07, 0x96, 0x01, 0x6D, 0x21, 0xF0, 0x04, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x0C, 0x94, 0x00, 0x68, -0x80, 0x18, 0x8C, 0x59, 0x0C, 0x94, 0x80, 0x18, -0xA4, 0x55, 0x1B, 0x2A, 0xE0, 0xF3, 0x09, 0x70, -0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF6, -0x88, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x00, 0x6A, 0x91, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, -0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, -0xE1, 0x17, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x63, 0xF4, 0x04, 0x6C, 0x08, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x70, 0x9A, 0xFE, 0x6A, 0x01, 0x6D, -0x80, 0xA3, 0xC5, 0x67, 0x8C, 0xEA, 0x40, 0xC3, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF4, 0x04, 0x6C, -0x40, 0xEA, 0x6C, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x00, 0x6E, -0x23, 0xF4, 0x04, 0x6C, 0x40, 0xEA, 0x00, 0x18, -0xE3, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x70, 0x9A, 0x01, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, -0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, -0x20, 0x69, 0x2B, 0xF1, 0x18, 0x49, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, 0x63, 0xF4, -0x04, 0x6C, 0x08, 0x6D, 0x40, 0xEA, 0x01, 0x6D, -0x21, 0xF0, 0x04, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0x0D, 0x28, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, -0xB4, 0x9B, 0x06, 0xD2, 0xC0, 0xF3, 0x44, 0x98, -0x21, 0xF0, 0x04, 0x6C, 0x03, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, -0xE0, 0x9B, 0x43, 0xF6, 0x54, 0x99, 0x0C, 0x94, -0x00, 0x6D, 0xC5, 0x67, 0x04, 0xD2, 0x80, 0x18, -0x12, 0x59, 0x43, 0xF6, 0x58, 0x99, 0x0C, 0x94, -0x01, 0x6D, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x04, 0x4A, 0xE0, 0x9A, 0x00, 0x6E, -0x80, 0x18, 0x12, 0x59, 0xC0, 0xF3, 0x44, 0x98, -0x06, 0x96, 0x01, 0x6D, 0xAB, 0xED, 0x21, 0xF0, -0x04, 0x6C, 0x40, 0xEA, 0x0C, 0x94, 0x80, 0x18, -0xA3, 0x59, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, -0xC5, 0x67, 0x03, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, 0x08, 0xF1, -0x0C, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x0C, 0x94, -0x80, 0x18, 0x5D, 0x59, 0x01, 0x6A, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0x63, 0xF5, 0xD0, 0x9A, 0x40, 0xEB, 0x91, 0x67, +0x80, 0x18, 0xAB, 0x19, 0x04, 0x93, 0x01, 0x6D, +0xAB, 0xED, 0xA0, 0xF0, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x63, 0xF5, +0xD4, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, 0x04, 0x94, +0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, 0x44, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, +0x63, 0xF5, 0xD8, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, +0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, +0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, 0xA0, 0xF0, +0x48, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0x63, 0xF5, 0xDC, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0xAB, 0x19, 0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, +0xA0, 0xF0, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0x83, 0xF5, 0xC0, 0x9A, +0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, +0x80, 0x18, 0xAB, 0x19, 0x04, 0x94, 0x01, 0x6D, +0xAB, 0xED, 0xA0, 0xF0, 0x50, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x83, 0xF5, +0xC4, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, 0x04, 0x95, +0xC3, 0xF3, 0x14, 0x6C, 0xA0, 0xF0, 0x54, 0xDD, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, +0x83, 0xF5, 0xC8, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, +0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, +0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0x83, 0xF5, 0xCC, 0x9A, 0xC3, 0xF3, +0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0xAB, 0x19, 0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, +0xA0, 0xF0, 0x5C, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0x83, 0xF5, 0xD0, 0x9A, +0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, +0x80, 0x18, 0xAB, 0x19, 0x04, 0x95, 0xC3, 0xF3, +0x14, 0x6C, 0xC0, 0xF0, 0x40, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x83, 0xF5, +0xD4, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, 0x04, 0x93, +0x01, 0x6D, 0xAB, 0xED, 0xC0, 0xF0, 0x44, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, +0x83, 0xF5, 0xD8, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, +0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, +0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, 0xC0, 0xF0, +0x48, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0x83, 0xF5, 0xDC, 0x9A, 0xC3, 0xF3, +0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0xAB, 0x19, 0x05, 0x93, 0x50, 0x6C, 0x01, 0x6D, +0x01, 0x4B, 0x98, 0xEB, 0xAB, 0xED, 0x83, 0xF3, +0x04, 0x4C, 0x12, 0xEB, 0x6D, 0xE1, 0x5F, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, +0xA3, 0xF5, 0xC0, 0x9A, 0x40, 0xEB, 0x91, 0x67, +0x80, 0x18, 0xAB, 0x19, 0x04, 0x95, 0xC3, 0xF3, +0x14, 0x6C, 0xC0, 0xF0, 0x50, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0xA3, 0xF5, +0xC4, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, 0x04, 0x93, +0x01, 0x6D, 0xAB, 0xED, 0xC0, 0xF0, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, +0xA3, 0xF5, 0xC8, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, +0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, +0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, 0xC0, 0xF0, +0x58, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0xA3, 0xF5, 0xCC, 0x9A, 0xC3, 0xF3, +0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0xAB, 0x19, 0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, +0xC0, 0xF0, 0x5C, 0xDD, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0xA3, 0xF5, 0xD0, 0x9A, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, +0x80, 0x18, 0xAB, 0x19, 0x04, 0x93, 0x01, 0x6D, +0xAB, 0xED, 0xE0, 0xF0, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0xA3, 0xF5, +0xD4, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, 0x04, 0x94, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0xD8, 0x9B, +0xE0, 0xF0, 0x44, 0xDC, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xAB, 0xED, 0xC3, 0xF3, 0x14, 0x6C, +0x40, 0xEA, 0x91, 0x67, 0x80, 0x18, 0xAB, 0x19, +0x04, 0x95, 0xE0, 0xF0, 0x48, 0xDD, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6A, 0x4C, 0xED, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0xA4, 0x36, +0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, +0x08, 0x69, 0x91, 0x67, 0x08, 0xF0, 0x00, 0x6D, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF5, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xC3, 0xF3, 0x14, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0xE3, 0xF3, 0x1C, 0x6C, 0xF0, 0x6D, +0x80, 0x18, 0x1C, 0x28, 0x04, 0xD2, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x08, 0xF0, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0xFF, 0x6B, 0x6C, 0xEA, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEE, 0x01, 0x69, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x2B, 0xE9, +0x04, 0xD6, 0xA4, 0x36, 0x6D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF3, 0x08, 0x6C, 0x08, 0xF0, +0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF5, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF3, 0x14, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, +0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0x04, 0x92, 0x04, 0x22, 0x02, 0x72, 0x00, 0x68, +0x2C, 0x60, 0x44, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0xC0, 0x9B, +0xB1, 0x67, 0x43, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0xA4, 0x9A, +0xE3, 0xF3, 0x1C, 0x69, 0x91, 0x67, 0x80, 0x18, +0x1C, 0x28, 0x91, 0x67, 0xFF, 0xF7, 0x1F, 0x6D, +0x02, 0x67, 0x80, 0x18, 0x1C, 0x28, 0x22, 0x67, +0x42, 0x32, 0x5E, 0x32, 0x05, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF1, 0x40, 0x9A, 0x27, 0xE2, +0x02, 0x32, 0x5E, 0x32, 0x21, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF1, 0x40, 0x9A, 0x03, 0xE2, +0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, +0x60, 0x9B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x00, 0xF6, +0x00, 0x36, 0x43, 0xF3, 0x0C, 0x6C, 0xB1, 0x67, +0x6D, 0xEE, 0x40, 0xEA, 0x01, 0x48, 0xE3, 0xF3, +0x1C, 0x6C, 0xB1, 0x67, 0x80, 0x18, 0x1C, 0x28, +0x40, 0x70, 0xE7, 0x61, 0x00, 0x68, 0x30, 0x67, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x01, 0x6D, 0x43, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, +0x00, 0x6E, 0x40, 0xEA, 0x18, 0xE8, 0x09, 0x97, +0x12, 0xE8, 0x38, 0xE9, 0x12, 0xE9, 0x29, 0xE0, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x69, 0xF2, 0x08, 0x4A, 0x66, 0xAA, -0xEF, 0xF7, 0x1F, 0x68, 0x01, 0x4B, 0x66, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF6, 0x5C, 0x9A, -0x02, 0x6B, 0x40, 0xAA, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xEF, 0xF6, 0x4C, 0xAA, 0x0E, 0xEA, -0x6C, 0xEA, 0x04, 0x22, 0x80, 0x18, 0xA4, 0x79, -0x00, 0x18, 0x71, 0xD8, 0x02, 0x6B, 0x50, 0x67, -0x6C, 0xEA, 0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xEF, 0xF6, 0x4C, 0xAA, 0x6C, 0xEA, 0x02, 0x2A, -0x80, 0x18, 0xA4, 0x79, 0x30, 0xF0, 0x20, 0x6A, -0xEF, 0xF6, 0x0C, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x69, 0xF2, 0x16, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF5, 0x50, 0x9A, 0x04, 0x6C, 0x40, 0xEA, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0xEB, 0xF1, 0x00, 0x4C, 0x07, 0x6E, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x01, 0x6B, 0x8C, 0xEB, 0xE3, 0xF5, -0xBE, 0xA2, 0x64, 0x34, 0x03, 0x6B, 0x6B, 0xEB, -0xAC, 0xEB, 0x8D, 0xEB, 0xE3, 0xF5, 0x7E, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x0B, 0xF2, -0x0F, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xC0, 0xF0, -0x97, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0C, 0x23, -0xC0, 0xF0, 0x79, 0xA2, 0xFF, 0x73, 0x08, 0x60, -0xC0, 0xF0, 0x98, 0xA2, 0x03, 0xF6, 0x7A, 0xA2, -0x6D, 0xE4, 0x03, 0x4B, 0x03, 0xF6, 0x70, 0xCA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0xA0, 0xA4, 0x40, 0xF1, 0xFE, 0xA3, 0x02, 0x6A, -0x01, 0x6E, 0x4B, 0xEA, 0xCC, 0xED, 0xEC, 0xEA, -0xAD, 0xEA, 0x40, 0xF1, 0x5E, 0xC3, 0xA1, 0xA4, -0xCC, 0xEA, 0x40, 0xF1, 0xBF, 0xC3, 0xFF, 0x6D, -0x0D, 0x22, 0x61, 0xA4, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF4, 0x48, 0x9A, 0x74, 0x33, 0x40, 0x6C, -0x4D, 0xE3, 0x40, 0xA3, 0xAC, 0xEA, 0x8D, 0xEA, -0xAC, 0xEA, 0x0A, 0x10, 0x61, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF4, 0x48, 0x9A, 0x74, 0x33, -0x4D, 0xE3, 0x80, 0xA3, 0xBF, 0x6A, 0x8C, 0xEA, -0x40, 0xC3, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x50, 0x9A, 0x60, 0xA2, 0x03, 0x6A, -0x6C, 0xEA, 0x10, 0x6B, 0x64, 0xEA, 0xFF, 0x6A, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, -0x50, 0x9A, 0x04, 0xD3, 0x40, 0x9A, 0x05, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x4C, 0x9A, -0x00, 0x9A, 0x05, 0x92, 0x0A, 0xEA, 0xC0, 0xF0, -0x04, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x02, 0x6C, -0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x30, 0xF0, -0x20, 0x69, 0x2B, 0xF1, 0x18, 0x49, 0x22, 0xF6, -0x4A, 0xA9, 0x00, 0xF7, 0x00, 0x72, 0x07, 0x60, -0x22, 0xF6, 0x6A, 0xA1, 0x22, 0xF6, 0x8B, 0xA1, -0xAF, 0x43, 0x8E, 0xED, 0x13, 0x2D, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, 0xFF, 0x6C, -0x01, 0x4C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0x97, 0x10, 0x30, 0xF0, 0x20, 0x6D, -0x23, 0xF2, 0xA0, 0x9D, 0x7F, 0x6E, 0xB5, 0xE0, -0xE0, 0xA5, 0xCC, 0xEF, 0x45, 0x2F, 0x00, 0xF4, -0x00, 0x72, 0x80, 0xF0, 0x0A, 0x60, 0xAC, 0x43, -0x8E, 0xED, 0x80, 0xF0, 0x06, 0x25, 0x00, 0xF5, -0x01, 0x72, 0x80, 0xF0, 0x02, 0x60, 0x00, 0xF6, -0x02, 0x72, 0x7F, 0x60, 0x00, 0xF7, 0x03, 0x72, -0x7C, 0x60, 0x00, 0xF5, 0x00, 0x72, 0x79, 0x60, -0xFD, 0x4B, 0x6E, 0xEC, 0x76, 0x24, 0x30, 0xF0, -0x20, 0x69, 0x2B, 0xF1, 0x18, 0x49, 0x22, 0xF6, -0x4A, 0xA9, 0x00, 0xF6, 0x01, 0x72, 0x6D, 0x60, -0x00, 0xF7, 0x02, 0x72, 0x6A, 0x60, 0x00, 0xF6, -0x00, 0x72, 0x67, 0x60, 0x22, 0xF6, 0x6A, 0xA1, -0x22, 0xF6, 0x8B, 0xA1, 0xFE, 0x4B, 0x8E, 0xEB, -0x60, 0x23, 0x00, 0xF7, 0x01, 0x72, 0x5D, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x54, 0x9A, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xA0, 0x9D, -0x49, 0xE0, 0x94, 0x34, 0x60, 0xAA, 0x91, 0xE1, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0x22, 0xF5, 0x0A, 0x4C, 0xB5, 0xE0, 0x12, 0x10, -0x40, 0xA5, 0x4C, 0xEE, 0x01, 0x76, 0x1E, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x54, 0x9A, -0x94, 0x34, 0x91, 0xE1, 0x49, 0xE0, 0x60, 0xAA, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0x22, 0xF5, 0x0A, 0x4C, 0xFF, 0x6E, 0x6C, 0xEE, -0x40, 0xEA, 0x22, 0xF6, 0x4B, 0xA1, 0x08, 0x6B, -0x01, 0x4A, 0x22, 0xF6, 0x4B, 0xC1, 0x22, 0xF6, -0x4B, 0xA1, 0x6E, 0xEA, 0x13, 0x2A, 0x22, 0xF6, -0x4B, 0xC1, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x8C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF3, 0x70, 0x9B, 0x40, 0x9C, 0x6D, 0xEA, -0x40, 0xDC, 0xA3, 0xF3, 0x40, 0x99, 0x6D, 0xEA, -0xA3, 0xF3, 0x40, 0xD9, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF7, 0x58, 0x9A, 0x04, 0x93, 0x40, 0x9A, -0x0E, 0xEA, 0x61, 0xE0, 0x05, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x48, 0x9A, 0x00, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x4C, 0x9A, -0x00, 0xDA, 0x05, 0x92, 0x4A, 0xE8, 0x5F, 0xF7, -0x06, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFE, 0x63, 0x03, 0xD1, -0x02, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA3, 0xF3, 0x60, 0x9A, 0x02, 0x6D, -0xAC, 0xEB, 0x40, 0xF1, 0x1A, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF2, 0x74, 0x9B, 0x80, 0xA3, -0x0F, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0xA0, 0xF0, -0x84, 0x9A, 0xAD, 0xEC, 0xA0, 0xF0, 0x84, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF2, 0x58, 0xA2, -0xFF, 0x4A, 0x00, 0xD2, 0x44, 0x11, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF1, -0x80, 0xAA, 0x00, 0xF7, 0x00, 0x74, 0x05, 0x60, -0xA0, 0xF1, 0x01, 0xA2, 0x00, 0x94, 0x8A, 0xE8, -0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x6C, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x60, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x60, 0xDA, 0x25, 0x11, -0x30, 0xF0, 0x20, 0x6C, 0xA9, 0xF2, 0xDE, 0xA4, -0xE3, 0x67, 0xFF, 0x6D, 0xE7, 0xEE, 0xC7, 0x67, -0x01, 0x6F, 0xEC, 0xEE, 0xA0, 0xF0, 0x0A, 0x26, -0x0C, 0x35, 0x60, 0xF1, 0x04, 0x4D, 0xB5, 0xE2, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6E, 0xA9, 0xF2, -0xFE, 0xA6, 0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, -0x8C, 0xEF, 0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, -0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, -0xA9, 0xF2, 0xFE, 0xA6, 0x8C, 0xEF, 0x74, 0x4F, -0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x0F, 0x2F, -0x30, 0xF0, 0x20, 0x6C, 0xA9, 0xF2, 0x3E, 0xA4, -0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x6E, 0x8C, 0xE9, -0x74, 0x49, 0x28, 0x31, 0xE2, 0x67, 0x25, 0xE2, -0x43, 0xF1, 0xC4, 0x9E, 0x0B, 0x10, 0xA9, 0xF2, -0x3E, 0xA6, 0x30, 0xF0, 0x20, 0x6E, 0x43, 0xF1, -0xC8, 0x9E, 0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, -0xE2, 0x67, 0x25, 0xE2, 0xD9, 0xE1, 0xC0, 0xA6, -0x0C, 0x31, 0xCC, 0xEC, 0x30, 0xF0, 0x20, 0x6E, -0x2B, 0xF1, 0x18, 0x4E, 0xD9, 0xE1, 0xFD, 0xE6, -0x60, 0xF1, 0x80, 0xC7, 0x30, 0xF0, 0x20, 0x6E, -0xA9, 0xF2, 0xFE, 0xA6, 0xFF, 0x6C, 0x1F, 0xF7, -0x00, 0x69, 0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, -0xFD, 0xE2, 0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, -0x08, 0x60, 0xA9, 0xF2, 0xFE, 0xA6, 0x8C, 0xEF, -0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, -0x0E, 0x2F, 0x30, 0xF0, 0x20, 0x6C, 0xA9, 0xF2, -0xDE, 0xA4, 0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x6F, -0x8C, 0xEE, 0x7C, 0x4E, 0xC8, 0x36, 0xD9, 0xE2, -0x43, 0xF1, 0xE4, 0x9F, 0x0A, 0x10, 0xA9, 0xF2, -0xDE, 0xA6, 0x30, 0xF0, 0x20, 0x6F, 0x43, 0xF1, -0xE8, 0x9F, 0x8C, 0xEE, 0x7C, 0x4E, 0xC8, 0x36, -0xD9, 0xE2, 0xF9, 0xE6, 0xC0, 0xA6, 0x01, 0x4A, -0x04, 0x72, 0xCC, 0xEC, 0x80, 0xC5, 0x01, 0x4D, -0x8C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF2, -0xBE, 0xA2, 0x01, 0x6C, 0xC4, 0x67, 0xC4, 0xED, -0xCF, 0xED, 0xA9, 0xF2, 0xDE, 0xA2, 0xAC, 0xEB, -0xFF, 0x6D, 0x84, 0xEE, 0x30, 0xF0, 0x20, 0x6E, -0x43, 0xF2, 0xD4, 0x9E, 0xAC, 0xEC, 0x08, 0x6F, -0x80, 0xC6, 0xA9, 0xF2, 0x9E, 0xA2, 0xAC, 0xEC, -0x01, 0x4C, 0xAC, 0xEC, 0xA9, 0xF2, 0x9E, 0xC2, -0xA9, 0xF2, 0xBE, 0xA2, 0x03, 0x6C, 0xAC, 0xEC, -0xA9, 0xF2, 0x9E, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF1, 0x81, 0xA2, -0x01, 0x4C, 0xA0, 0xF1, 0x81, 0xC2, 0xA0, 0xF1, -0x81, 0xA2, 0xEE, 0xEC, 0x70, 0x2C, 0xA0, 0xF1, -0x81, 0xC2, 0x6D, 0x10, 0x30, 0xF0, 0x20, 0x6E, -0x23, 0xF2, 0x0C, 0x9E, 0x02, 0x6F, 0xC0, 0x98, -0xED, 0xEE, 0xC0, 0xD8, 0xA3, 0xF3, 0xC0, 0x9A, -0xA3, 0xF3, 0x6C, 0xC2, 0xA9, 0xF2, 0x7E, 0xA4, -0xED, 0xEE, 0xA3, 0xF3, 0xC0, 0xDA, 0xA3, 0xF3, -0x6D, 0xC2, 0xA9, 0xF2, 0x5E, 0xA4, 0x1F, 0xF7, -0x00, 0x6B, 0xAC, 0xEA, 0x74, 0x4A, 0x48, 0x32, -0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x07, 0x60, -0xA9, 0xF2, 0x5E, 0xA4, 0xAC, 0xEA, 0x74, 0x4A, -0x48, 0x32, 0x6C, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA9, 0xF2, 0x7E, 0xA2, 0x30, 0xF0, -0x20, 0x6C, 0x23, 0xF7, 0x9C, 0x9C, 0xFF, 0x6A, -0x4C, 0xEB, 0x8D, 0xE3, 0x68, 0x33, 0xA0, 0xA3, -0x0A, 0x10, 0xA9, 0xF2, 0x5E, 0xA4, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF7, 0x60, 0x9B, 0xAC, 0xEA, -0x69, 0xE2, 0x48, 0x32, 0x40, 0xA2, 0x4C, 0xED, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF4, 0xA6, 0xC2, 0xA9, 0xF2, 0x5E, 0xA3, -0xA9, 0xF2, 0x9E, 0xA3, 0xFF, 0x6A, 0x1F, 0xF7, -0x00, 0x6D, 0x4C, 0xEC, 0x88, 0x34, 0xC0, 0xF1, -0x11, 0x4C, 0xAC, 0xEC, 0x0B, 0x2C, 0xA9, 0xF2, -0x7E, 0xA3, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0x4C, 0xEB, 0x74, 0x4B, 0x68, 0x33, 0x43, 0xF7, -0x84, 0x9C, 0x09, 0x10, 0xA9, 0xF2, 0x7E, 0xA3, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF7, 0x88, 0x9C, -0x4C, 0xEB, 0x74, 0x4B, 0x68, 0x33, 0x8D, 0xE3, -0x60, 0xA3, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xEE, 0xF4, 0x47, 0xC3, 0x02, 0x10, 0xBF, 0xF6, -0x1A, 0x2B, 0x03, 0x91, 0x02, 0x90, 0x02, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x5C, 0x9A, 0xFF, 0x68, 0x60, 0xA2, -0x6C, 0xE8, 0x24, 0x20, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF7, 0x4C, 0x9A, 0x20, 0x6B, 0x01, 0x70, -0x60, 0xC2, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF6, 0x5C, 0x9A, 0x40, 0xEA, 0x0E, 0x10, -0x80, 0x69, 0x0E, 0xE9, 0x0B, 0x29, 0x00, 0x18, -0x2B, 0xC9, 0x80, 0x6C, 0x00, 0x6D, 0x80, 0x18, -0x20, 0x01, 0x30, 0xF0, 0x20, 0x6A, 0x6D, 0xF7, -0x2E, 0xC2, 0x0F, 0x10, 0x20, 0x70, 0x0D, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, -0xA3, 0xF2, 0x98, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, -0x64, 0xDA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, 0x31, 0x6A, -0x51, 0xF1, 0x1D, 0x4A, 0x40, 0xDB, 0x00, 0x1C, -0xAC, 0x39, 0x80, 0x18, 0xE5, 0x76, 0x05, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x20, 0x01, 0x20, 0xBA, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0xFF, 0x17, 0x00, 0x65, 0xDD, 0x63, 0x45, 0x62, -0x44, 0xD1, 0x43, 0xD0, 0x00, 0x6A, 0x06, 0xD2, -0x07, 0xD2, 0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, -0x20, 0xF0, 0x40, 0xC3, 0x01, 0x6A, 0x20, 0xF0, -0x42, 0xC3, 0x08, 0x6A, 0x20, 0xF0, 0x43, 0xC3, -0x60, 0xA4, 0x7F, 0x6A, 0x6C, 0xEA, 0x01, 0x72, -0x7E, 0x30, 0x00, 0xF1, 0x04, 0x61, 0x48, 0xA4, -0xBD, 0x67, 0x20, 0xF0, 0x44, 0xC5, 0x41, 0xA4, -0x20, 0xF0, 0x45, 0xC5, 0x42, 0xA4, 0x20, 0xF0, -0x46, 0xC5, 0x46, 0xA4, 0x20, 0xF0, 0x48, 0xC5, -0x43, 0xA4, 0x20, 0xF0, 0x47, 0xC5, 0x47, 0xA4, -0x20, 0xF0, 0x49, 0xC5, 0x20, 0xF0, 0x44, 0xA5, -0xE0, 0xF0, 0x07, 0x2A, 0x7D, 0x67, 0x20, 0xF0, -0x47, 0xA3, 0x20, 0xF0, 0x66, 0xA3, 0x40, 0x32, -0x6D, 0xEA, 0x03, 0x72, 0x0A, 0x60, 0x04, 0x52, -0x03, 0x60, 0x02, 0x72, 0x5E, 0x60, 0xD9, 0x10, -0x08, 0x72, 0x2C, 0x60, 0xB7, 0x72, 0x43, 0x60, -0xD4, 0x10, 0x06, 0x20, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x40, 0x9A, 0x08, 0x04, 0x40, 0xEA, -0x9D, 0x67, 0x20, 0xF0, 0xE9, 0xA4, 0x20, 0xF0, -0x48, 0xA4, 0xFF, 0xF7, 0x1F, 0x6B, 0xE0, 0x37, -0x5D, 0xE7, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, -0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0x05, 0x6C, -0x6C, 0xEF, 0x6D, 0xF7, 0x14, 0x4D, 0x00, 0xF2, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x07, 0xF3, 0x90, 0xA2, -0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x07, 0xF3, -0x70, 0xC2, 0xCA, 0x10, 0xBD, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0x10, 0x6A, 0x20, 0xF0, 0x43, 0xC5, -0x30, 0xF0, 0x21, 0x69, 0x80, 0xF2, 0x4C, 0x9B, -0x12, 0xF3, 0x10, 0x49, 0x0B, 0x04, 0xB1, 0x67, -0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x80, 0xF2, 0x4C, 0x9C, 0xA4, 0x41, 0x0C, 0x04, -0x04, 0x6E, 0x40, 0xEA, 0x92, 0x10, 0x08, 0x20, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, -0x08, 0x04, 0x40, 0xEA, 0x00, 0x18, 0xB9, 0xDB, -0xBD, 0x67, 0x20, 0xF0, 0x89, 0xA5, 0x20, 0xF0, -0x48, 0xA5, 0x80, 0x34, 0x51, 0xE4, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xEC, 0x80, 0x18, 0x8A, 0x01, -0x9B, 0x10, 0x10, 0x6A, 0x7D, 0x67, 0x20, 0xF0, -0x43, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, -0x50, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0x0B, 0x04, -0x40, 0x9A, 0x07, 0x05, 0x04, 0x6E, 0x06, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0x54, 0x9A, -0x40, 0x9A, 0x07, 0xD2, 0x80, 0xF2, 0x4C, 0x99, -0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x99, 0x0C, 0x04, -0x06, 0x05, 0x04, 0x6E, 0x40, 0xEA, 0x06, 0x20, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, -0x08, 0x04, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0xE7, 0xF1, 0x74, 0xA0, -0x01, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x42, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x50, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, -0x78, 0x9A, 0x80, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, -0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, -0x40, 0xA3, 0x08, 0x6C, 0x2C, 0xEA, 0x8D, 0xEA, -0x2C, 0xEA, 0x40, 0xC3, 0xE7, 0xF1, 0x60, 0xA0, -0x04, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x23, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0x50, 0x9A, -0xE7, 0xF1, 0xCC, 0x98, 0x10, 0xF0, 0x32, 0x6C, -0x40, 0x9A, 0x32, 0xF7, 0x11, 0x4C, 0x00, 0x6D, -0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, -0x54, 0x9A, 0x01, 0x6F, 0x40, 0x9A, 0x5B, 0xE6, -0x07, 0xD2, 0xE0, 0xF3, 0x08, 0x6A, 0x5B, 0xEE, -0x01, 0x2A, 0xE5, 0xE8, 0x00, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0x12, 0xEE, 0x40, 0xEA, 0x2D, 0x10, 0x80, 0x18, -0xCC, 0x65, 0x2A, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, 0xE7, 0xF1, -0xB2, 0xA8, 0x00, 0x6C, 0x80, 0x18, 0x08, 0x65, -0x1F, 0x10, 0x1E, 0x20, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x40, 0x9A, 0x17, 0x10, 0x18, 0x2A, -0x69, 0xA4, 0xBD, 0x67, 0x20, 0xF0, 0x64, 0xC5, -0x68, 0xA4, 0x20, 0xF0, 0x46, 0xC5, 0x20, 0xF0, -0x47, 0xC5, 0x20, 0xF0, 0x65, 0xC5, 0x46, 0xA4, -0x20, 0xF0, 0x48, 0xC5, 0x67, 0xA4, 0x08, 0x20, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, -0x20, 0xF0, 0x69, 0xC5, 0x08, 0x04, 0x40, 0xEA, -0x45, 0x97, 0x44, 0x91, 0x43, 0x90, 0x23, 0x63, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x00, 0x6E, 0xC3, 0xF3, +0x14, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0xB4, 0x9A, 0xE3, 0xF3, 0x1C, 0x6C, +0x80, 0x18, 0x1C, 0x28, 0x05, 0x97, 0x04, 0x90, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0xC4, 0x9B, +0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xC3, 0xF3, +0x14, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0xB4, 0x9A, 0xE3, 0xF3, +0x1C, 0x69, 0x91, 0x67, 0x80, 0x18, 0x1C, 0x28, +0xFF, 0xF7, 0x1F, 0x68, 0x91, 0x67, 0xE1, 0xF7, +0x1F, 0x6D, 0x4C, 0xE8, 0xFF, 0xF7, 0x1F, 0x69, +0x80, 0x18, 0x1C, 0x28, 0x4C, 0xE9, 0x02, 0x32, +0x4E, 0x32, 0x01, 0x72, 0x06, 0x61, 0x02, 0xF0, +0x00, 0x6A, 0x03, 0xE2, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0x22, 0x32, 0x4E, 0x32, 0x01, 0x72, +0x06, 0x61, 0x02, 0xF0, 0x00, 0x6A, 0x27, 0xE2, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, +0xF0, 0x6E, 0xC3, 0xF3, 0x14, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0xE3, 0xF3, 0x1C, 0x6C, 0xFF, 0x6D, +0x80, 0x18, 0x1C, 0x28, 0xE3, 0xF3, 0x1C, 0x6C, +0x1F, 0xF7, 0x00, 0x6D, 0x04, 0xD2, 0x80, 0x18, +0x1C, 0x28, 0xC9, 0x58, 0x0C, 0x60, 0xC9, 0x59, +0x0A, 0x60, 0x04, 0x93, 0xFF, 0x6A, 0x6C, 0xEA, +0x28, 0x5A, 0x05, 0x61, 0x42, 0x5A, 0x58, 0x67, +0x01, 0x6B, 0x6E, 0xEA, 0x01, 0x10, 0x01, 0x6A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x68, 0x44, 0xFA, 0x4B, -0x4C, 0xEB, 0x04, 0x5B, 0x03, 0x60, 0x80, 0x18, -0x5C, 0x42, 0x48, 0x10, 0x0D, 0x74, 0x22, 0x60, -0x0E, 0x5C, 0x10, 0x60, 0x08, 0x74, 0x53, 0x60, -0x09, 0x5C, 0x05, 0x60, 0x02, 0x74, 0x1F, 0x60, -0x03, 0x74, 0x3E, 0x60, 0x71, 0x10, 0x0A, 0x74, -0x56, 0x60, 0x0A, 0x5C, 0x4F, 0x61, 0x0C, 0x74, -0x1A, 0x60, 0x6A, 0x10, 0x16, 0x74, 0x1C, 0x60, -0x17, 0x5C, 0x05, 0x60, 0x12, 0x74, 0x5A, 0x60, -0x13, 0x74, 0x4E, 0x60, 0x61, 0x10, 0x24, 0x74, -0x51, 0x60, 0xB7, 0x74, 0x57, 0x60, 0x18, 0x74, -0x22, 0x60, 0x5A, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF4, 0x48, 0x9A, 0x34, 0x10, 0x85, 0x67, -0x80, 0x18, 0x48, 0x65, 0x1B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF4, 0x44, 0x9A, 0x2B, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x07, 0xF3, 0x90, 0xA3, 0x01, 0x6E, 0xCC, 0xEC, -0x4C, 0xEC, 0x58, 0x2C, 0xE7, 0xF1, 0x74, 0xA3, -0xCC, 0xEB, 0x4C, 0xEB, 0x53, 0x2B, 0x85, 0x67, -0x80, 0x18, 0xAF, 0x6E, 0x03, 0x10, 0x85, 0x67, -0x80, 0x18, 0xF3, 0x6E, 0x62, 0x67, 0x4B, 0x10, -0x30, 0xF0, 0x21, 0x6B, 0x52, 0xF4, 0x68, 0xA3, -0x02, 0x6C, 0x6C, 0xEC, 0x4C, 0xEC, 0x12, 0x6B, -0x42, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, -0x54, 0x9A, 0x40, 0xEA, 0xEF, 0x17, 0x30, 0xF0, -0x20, 0x6A, 0x60, 0xF4, 0x58, 0x9A, 0x85, 0x67, -0x40, 0xEA, 0xE8, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF4, 0x5C, 0x9A, 0xF8, 0x17, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF4, 0x40, 0x9A, 0xF3, 0x17, -0x87, 0x45, 0x01, 0x4C, 0x80, 0x18, 0x4C, 0x68, -0x00, 0x6B, 0x25, 0x10, 0x85, 0x67, 0x80, 0x18, -0x2A, 0x72, 0xD4, 0x17, 0x85, 0x67, 0x80, 0x18, -0x95, 0x29, 0xD0, 0x17, 0x80, 0x18, 0xEA, 0x07, -0x00, 0x6B, 0x19, 0x2A, 0x13, 0x6B, 0x17, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF2, 0x94, 0x9C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, -0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x60, 0xDA, -0xFF, 0x6B, 0x01, 0x10, 0x10, 0x6B, 0x05, 0x97, -0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, +0xBC, 0x9A, 0x04, 0x67, 0x63, 0xF6, 0x1C, 0x6C, +0x80, 0x18, 0x1C, 0x28, 0x01, 0x22, 0x01, 0x6A, +0x60, 0xF0, 0x5F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0xE8, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0xD2, 0xF5, 0x08, 0x4C, 0x00, 0x6D, 0x18, 0x6E, +0x80, 0x18, 0x05, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x60, 0x9B, 0x80, 0xF0, 0x54, 0xC0, +0x05, 0x97, 0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, +0x80, 0xF0, 0x75, 0xC0, 0x06, 0xF0, 0x00, 0x6B, +0x4C, 0xEB, 0x62, 0x33, 0x72, 0x33, 0x80, 0xF0, +0x76, 0xC0, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x00, 0x6A, 0x0D, 0xD7, 0x05, 0x67, 0x26, 0x67, +0x04, 0xD2, 0x0B, 0x10, 0x80, 0xA8, 0x01, 0x6D, +0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, 0x40, 0xD9, +0x04, 0x93, 0x04, 0x48, 0x04, 0x49, 0x01, 0x4B, +0x04, 0xD3, 0x04, 0x92, 0x0D, 0x93, 0x63, 0xEA, +0xF1, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF2, 0x00, 0x4B, 0xE0, 0x9B, 0xFF, 0x69, +0x30, 0xF0, 0x21, 0x68, 0xAC, 0xE9, 0xD2, 0xF5, +0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, 0x01, 0x6A, +0x42, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF2, 0x00, 0x4A, 0xE0, 0x9A, 0x90, 0x67, +0xB1, 0x67, 0x42, 0x6E, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x00, 0x4A, +0xE0, 0x9A, 0x01, 0x6B, 0xB1, 0x67, 0x90, 0x67, +0x42, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0F, 0x6C, 0x40, 0xEA, 0x90, 0x67, 0xB1, 0x67, +0x42, 0x6E, 0x7E, 0x6F, 0x80, 0x18, 0x05, 0x59, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0xFF, 0x6B, +0x6C, 0xEA, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x00, 0x6A, 0x0A, 0xD4, 0x80, 0xF0, 0x42, 0xCC, +0x0A, 0x90, 0x04, 0xD4, 0x00, 0x69, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x9A, 0x24, 0x36, +0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9B, 0x43, 0xF3, 0x18, 0x6C, +0x7F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, +0x80, 0xF0, 0x59, 0xC0, 0x80, 0xF0, 0x57, 0xC0, +0x04, 0x94, 0x5B, 0x6B, 0xB1, 0x67, 0x20, 0xF1, +0x7C, 0xCC, 0x80, 0xF0, 0x48, 0xC0, 0x0A, 0x94, +0x01, 0x49, 0x80, 0x18, 0x61, 0x1B, 0x80, 0xF0, +0x44, 0xC0, 0x04, 0x92, 0x02, 0x71, 0x01, 0x48, +0x02, 0x4A, 0x04, 0xD2, 0xD4, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x0C, 0xD4, 0x80, 0xF0, 0x55, 0xA4, 0xFF, 0x68, +0xAC, 0xE8, 0x07, 0xD2, 0x5D, 0x2A, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0x9B, 0xC3, 0xF5, 0x48, 0x9A, +0x30, 0xF0, 0x21, 0x69, 0xD2, 0xF5, 0x08, 0x49, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, 0x91, 0x67, +0xB0, 0x67, 0x56, 0x6E, 0x80, 0x18, 0x05, 0x59, +0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF2, 0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, +0xDE, 0x6E, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0x07, 0x93, 0xC3, 0xF5, 0xEC, 0x9A, +0x91, 0x67, 0xB0, 0x67, 0x55, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x06, 0x92, +0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x01, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0x55, 0x6E, 0x1C, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x07, 0x93, 0x30, 0xF0, +0x20, 0x6A, 0x91, 0x67, 0x04, 0xD3, 0xB0, 0x67, +0x87, 0x6E, 0x83, 0xF2, 0xFC, 0x9A, 0x6B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x48, 0x9A, +0x30, 0xF0, 0x21, 0x69, 0xD2, 0xF5, 0x08, 0x49, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0x08, 0x4A, 0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x6E, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, +0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0x80, 0x18, +0x05, 0x59, 0x06, 0xD2, 0x01, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0xE0, 0x9A, +0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x80, 0x18, +0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, +0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF5, 0xEC, 0x9A, 0x91, 0x67, 0xB0, 0x67, +0x55, 0x6E, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, 0x06, 0x93, +0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x00, 0x6B, +0x91, 0x67, 0xB0, 0x67, 0x63, 0x6E, 0x18, 0xF0, +0x00, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x06, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x63, 0x6E, +0x1C, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x63, 0x6E, +0x06, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x00, 0x6B, 0x04, 0xD3, 0x91, 0x67, +0xB0, 0x67, 0x8A, 0x6E, 0x18, 0x6F, 0x80, 0x18, +0x78, 0x59, 0x91, 0x67, 0x30, 0xF0, 0x21, 0x69, +0x0F, 0x6A, 0xB0, 0x67, 0x00, 0x6E, 0xE0, 0xF3, +0x00, 0x6F, 0xD2, 0xF5, 0x08, 0x49, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x01, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0xDE, 0x6E, 0x04, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x00, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0x1A, 0x6E, 0x01, 0xF4, 0x00, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x0C, 0x93, +0x80, 0xF0, 0x56, 0xA3, 0x01, 0x72, 0x02, 0x6A, +0x01, 0x60, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, +0x1A, 0x6E, 0x0E, 0xF0, 0x00, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x21, 0x6C, +0xB0, 0x67, 0x8F, 0x6E, 0x02, 0x6F, 0x30, 0xF0, +0x20, 0x68, 0x01, 0x6A, 0xD2, 0xF5, 0x08, 0x4C, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x80, 0xF3, +0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x80, 0xF3, +0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x80, 0xF3, +0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x80, 0xF3, +0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x80, 0xF3, +0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x06, 0x93, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x1F, 0x6A, +0x6C, 0xEA, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x00, 0x69, 0x0A, 0xD4, 0x00, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xE8, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0xFF, 0x6D, 0xD2, 0xF5, +0x08, 0x4C, 0x2C, 0xED, 0x19, 0x6E, 0x30, 0xF0, +0x20, 0x68, 0x80, 0x18, 0x78, 0x59, 0xC0, 0xF3, +0x64, 0x98, 0x08, 0x6A, 0x24, 0x36, 0x01, 0x6D, +0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEB, 0x0A, 0x93, 0x80, 0xF0, 0x55, 0xA3, +0x0B, 0x2A, 0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0xC3, 0xF5, 0xD0, 0x9B, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF5, 0xD4, 0x9B, 0x01, 0x6D, 0x63, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x30, 0xF0, 0x20, 0x68, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, +0x04, 0x6C, 0x0E, 0xF0, 0x00, 0x6D, 0x04, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xA3, 0xF3, 0xB8, 0x9B, 0x23, 0xF3, +0x00, 0x6C, 0x03, 0x6E, 0x01, 0x49, 0x40, 0xEA, +0x02, 0x71, 0xB4, 0x61, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF5, 0xD8, 0x9B, 0x01, 0x69, +0x2B, 0xE9, 0xB1, 0x67, 0xE3, 0xF3, 0x04, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF5, 0xDC, 0x9B, 0xB1, 0x67, +0xE3, 0xF3, 0x08, 0x6C, 0x40, 0xEA, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, 0x40, 0x9A, +0xFF, 0x69, 0x30, 0xF0, 0x21, 0x68, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, +0xE0, 0x9A, 0xD2, 0xF5, 0x08, 0x48, 0xAC, 0xE9, +0x90, 0x67, 0xB1, 0x67, 0x92, 0x6E, 0x80, 0x18, +0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x05, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF5, 0x44, 0x9A, 0xE0, 0x9B, +0x90, 0x67, 0xB1, 0x67, 0x92, 0x6E, 0x04, 0xD2, +0x00, 0x68, 0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, +0x01, 0x48, 0x40, 0xEA, 0xFF, 0x6A, 0x4C, 0xE8, +0x1E, 0x70, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF5, 0x40, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0xB1, 0x67, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0xE8, 0x9A, 0xD2, 0xF5, 0x08, 0x4C, +0x92, 0x6E, 0x80, 0x18, 0x78, 0x59, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x00, 0x6A, 0x06, 0xD5, 0x06, 0x67, 0x07, 0xD2, +0x40, 0x98, 0x06, 0x93, 0x30, 0xF0, 0x21, 0x69, +0xD2, 0xF5, 0x08, 0x49, 0xC0, 0x9B, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, +0xE0, 0x9A, 0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, +0x78, 0x59, 0x41, 0x98, 0x06, 0x93, 0x91, 0x67, +0x01, 0x6D, 0xC0, 0x9B, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, +0x08, 0x48, 0x80, 0x18, 0x78, 0x59, 0x07, 0x93, +0x06, 0x92, 0x01, 0x4B, 0x04, 0x4A, 0x07, 0x73, +0x07, 0xD3, 0x06, 0xD2, 0xD9, 0x61, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, +0x40, 0x9A, 0x30, 0xF0, 0x21, 0x69, 0xD2, 0xF5, +0x08, 0x49, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, 0x91, 0x67, +0xB0, 0x67, 0x92, 0x6E, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x05, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x08, 0x4B, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF5, 0x44, 0x9A, 0xE0, 0x9B, 0x91, 0x67, +0xB0, 0x67, 0x92, 0x6E, 0x04, 0xD2, 0x00, 0x69, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x49, +0x40, 0xEA, 0xFF, 0x6A, 0x4C, 0xE9, 0x1E, 0x71, +0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, +0x40, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0xE8, 0x9A, 0xD2, 0xF5, 0x08, 0x4C, 0x92, 0x6E, +0x80, 0x18, 0x78, 0x59, 0x01, 0x48, 0xFF, 0x6B, +0x6C, 0xE8, 0x02, 0x70, 0xB6, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, +0xB4, 0x9A, 0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, +0x94, 0x28, 0x20, 0x6B, 0x4C, 0xEB, 0x12, 0x2B, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xE0, 0xF1, +0x14, 0x70, 0xF3, 0x61, 0x01, 0x49, 0x0A, 0x71, +0xE4, 0x61, 0x0A, 0x69, 0x51, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0xF7, 0x1F, 0x68, 0xAC, 0xE8, 0x80, 0x18, +0xDC, 0x1C, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, +0xD8, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x0D, 0xEE, +0xB1, 0x67, 0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, +0xA9, 0x28, 0xB1, 0x67, 0x02, 0xF7, 0x08, 0x6C, +0x80, 0x18, 0x94, 0x28, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0xF7, 0x1F, 0x68, 0x24, 0x67, 0x0C, 0xD6, +0x0D, 0xD7, 0xAC, 0xE8, 0x38, 0x26, 0x66, 0x67, +0x01, 0x4B, 0x00, 0x6A, 0x09, 0x2B, 0x01, 0x69, +0x2B, 0xE9, 0x80, 0x18, 0xDC, 0x1C, 0x02, 0xF7, +0x04, 0x6C, 0xB1, 0x67, 0x0D, 0x96, 0x1F, 0x10, +0x0C, 0x93, 0x01, 0x6C, 0x66, 0xEA, 0x8C, 0xEB, +0x04, 0x2B, 0x01, 0x4A, 0x20, 0x72, 0xF8, 0x61, +0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x05, 0xD2, +0x80, 0x18, 0xF0, 0x1C, 0x0C, 0x93, 0x91, 0x67, +0x01, 0x69, 0x6F, 0xEB, 0x4C, 0xEB, 0x04, 0xD3, +0x80, 0x18, 0xDC, 0x1C, 0x0D, 0x96, 0x05, 0x92, +0x04, 0x93, 0x2B, 0xE9, 0xC4, 0xEA, 0x02, 0xF7, +0x04, 0x6C, 0xB1, 0x67, 0x6D, 0xEE, 0x80, 0x18, +0xA9, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, +0xDC, 0x9A, 0x02, 0xF7, 0x00, 0x6C, 0xB1, 0x67, +0x0D, 0xEE, 0x80, 0x18, 0xA9, 0x28, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0xAC, 0xEA, 0x04, 0x67, 0x1D, 0x22, +0x01, 0x6D, 0x70, 0x6C, 0xAB, 0xED, 0x80, 0x18, +0x94, 0x28, 0x80, 0xF0, 0x4C, 0xD8, 0x90, 0x67, +0x38, 0x6D, 0x80, 0x18, 0xF0, 0x1C, 0x80, 0xF0, +0x50, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, +0xB4, 0x9A, 0x70, 0x6C, 0x01, 0x6E, 0x80, 0x18, +0xA9, 0x28, 0x90, 0x67, 0x38, 0x6D, 0x1F, 0xF7, +0x00, 0x6E, 0x77, 0x6F, 0x80, 0x18, 0x00, 0x1D, +0x0E, 0x10, 0x01, 0x69, 0x80, 0xF0, 0xF0, 0x98, +0x2B, 0xE9, 0x38, 0x6D, 0xD1, 0x67, 0x80, 0x18, +0x00, 0x1D, 0x80, 0xF0, 0xCC, 0x98, 0x70, 0x6C, +0xB1, 0x67, 0x80, 0x18, 0xA9, 0x28, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0x0A, 0xD4, 0x04, 0xD5, +0x80, 0xF0, 0x76, 0xA4, 0x01, 0x6C, 0x26, 0x67, +0x8E, 0xEB, 0x01, 0x5B, 0x4C, 0xE9, 0x78, 0x67, +0x01, 0x71, 0x64, 0x33, 0x03, 0x61, 0x05, 0x67, +0x14, 0x48, 0x10, 0x10, 0x02, 0x71, 0x03, 0x61, +0x04, 0x90, 0x16, 0x48, 0x0A, 0x10, 0x03, 0x71, +0x03, 0x61, 0x04, 0x90, 0x1A, 0x48, 0x06, 0x10, +0x04, 0x71, 0x00, 0x68, 0x04, 0x61, 0x04, 0x90, +0x1C, 0x48, 0x01, 0xE3, 0x4C, 0xE8, 0x0A, 0x94, +0x01, 0x6D, 0x80, 0x18, 0x24, 0x1D, 0x4A, 0x29, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0xA3, 0xF3, 0x14, 0x49, 0x91, 0x67, 0x02, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x02, 0xF0, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x00, 0x6E, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x14, 0x6C, 0x00, 0x68, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF1, 0xBC, 0x9A, 0xE3, 0xF3, +0x1C, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0xFF, 0x6B, +0x4C, 0xEB, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0xBC, 0x9A, 0xE3, 0xF3, 0x1C, 0x6C, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0x6B, 0x4C, 0xEB, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0x01, 0x73, 0x60, 0x60, +0xE0, 0xF3, 0x08, 0x70, 0xE7, 0x61, 0xE0, 0xF3, +0x08, 0x68, 0x5A, 0x10, 0x04, 0x92, 0x30, 0xF0, +0x20, 0x69, 0xC0, 0xF3, 0x64, 0x99, 0x44, 0x36, +0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x40, 0xEB, 0xC0, 0xF3, 0x44, 0x99, +0xC3, 0xF3, 0x0C, 0x6C, 0x3F, 0x6D, 0x09, 0x6E, +0x40, 0xEA, 0x00, 0x30, 0x48, 0x6A, 0x4D, 0xE8, +0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xD0, 0x67, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xC1, 0x40, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x85, 0xF5, 0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0x6B, 0x4C, 0xEB, 0x00, 0x68, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, +0x85, 0xF5, 0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0x6B, 0x4C, 0xEB, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0x55, 0x73, 0x05, 0x60, +0xE0, 0xF3, 0x08, 0x70, 0xEA, 0x61, 0xE0, 0xF3, +0x08, 0x68, 0x04, 0x94, 0x30, 0xF0, 0x20, 0x69, +0xC0, 0xF3, 0x44, 0x99, 0x84, 0x36, 0x08, 0x6B, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x6D, 0xEE, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF3, +0x0C, 0x6C, 0x3F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x0A, 0x94, 0x00, 0x6D, 0x80, 0x18, 0x24, 0x1D, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xE0, 0xF3, 0x08, 0x6A, 0x0E, 0xEA, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x01, 0x5A, +0x58, 0x67, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x80, 0xF0, 0x42, 0xAC, 0x24, 0x67, 0x03, 0x2A, +0x80, 0xF0, 0x54, 0xA4, 0x71, 0x22, 0x80, 0x18, +0x39, 0x1B, 0x00, 0x68, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9B, 0x04, 0x36, 0x08, 0x6B, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x6D, 0xEE, +0x40, 0xEA, 0x80, 0xF0, 0x55, 0xA1, 0x0D, 0x2A, +0x30, 0xF0, 0x20, 0x6C, 0x01, 0x6D, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9C, 0xAB, 0xED, +0x63, 0xF3, 0x00, 0x6C, 0xC3, 0xF5, 0xD0, 0x9B, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF5, +0xD4, 0x9B, 0x01, 0x6D, 0x63, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x0D, 0xE1, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF0, +0xD9, 0xA3, 0xC0, 0xF3, 0x44, 0x9C, 0x03, 0xF5, +0xB4, 0x9D, 0x63, 0xF3, 0x04, 0x6C, 0x40, 0xEA, +0x80, 0xF0, 0xC2, 0xA1, 0x01, 0x6A, 0x44, 0xE8, +0x47, 0xE8, 0x4C, 0xEE, 0x91, 0x67, 0xB0, 0x67, +0x80, 0x18, 0x68, 0x18, 0x91, 0x67, 0xB0, 0x67, +0x03, 0x6E, 0x80, 0x18, 0x40, 0x1D, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x03, 0xF3, +0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, +0xFF, 0x6A, 0x0C, 0xEA, 0x0D, 0x2A, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9C, 0xE3, 0xF5, 0xA8, 0x9B, 0x03, 0xF3, +0x04, 0x6C, 0x20, 0xF1, 0xDC, 0xA9, 0x0C, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF5, 0xA8, 0x9B, +0x20, 0xF1, 0xDE, 0xA9, 0x43, 0xF3, 0x1C, 0x6C, +0x01, 0x48, 0x40, 0xEA, 0x02, 0x70, 0x92, 0x61, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x6A, 0x80, 0xF0, 0x40, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xE8, 0x9A, +0x04, 0x67, 0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, +0x08, 0x4C, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, +0x05, 0x59, 0x80, 0xF0, 0x94, 0xA0, 0xFF, 0x6B, +0x4C, 0xEB, 0x8E, 0xEB, 0x06, 0x2B, 0x90, 0x67, +0x80, 0x18, 0xB4, 0x1D, 0x01, 0x6A, 0x80, 0xF0, +0x40, 0xC0, 0x80, 0xF0, 0x40, 0xA0, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0xAC, 0xEA, +0x04, 0xD2, 0x44, 0x36, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x6B, 0x6D, 0xEE, 0x0A, 0xD4, 0x0F, 0x6D, +0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF2, 0xB0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF3, 0x00, 0x69, 0x91, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF3, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x7F, 0x49, +0xC0, 0xF3, 0x44, 0x98, 0x2D, 0x49, 0x91, 0x67, +0x3F, 0x6D, 0x09, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF3, 0x14, 0x6C, 0xF0, 0x6D, +0x0F, 0x6E, 0x40, 0xEA, 0x04, 0x93, 0x12, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF5, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0xE3, 0xF5, 0xCC, 0x9B, 0x03, 0xF3, 0x04, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x08, 0x6C, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF5, 0xA8, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF5, 0xCC, 0x9B, +0x43, 0xF3, 0x1C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x63, 0xF3, 0x00, 0x6C, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF1, 0xBC, 0x9B, 0x01, 0x6E, +0x40, 0xEA, 0x0A, 0x93, 0x80, 0xF0, 0x56, 0xA3, +0x01, 0x72, 0x41, 0x61, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF5, 0xD0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, +0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, +0xB1, 0x67, 0x02, 0xF3, 0x10, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF5, 0xD4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF5, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, +0xB1, 0x67, 0x36, 0xF4, 0x08, 0x6E, 0x40, 0xEA, +0x04, 0x92, 0x01, 0x6E, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xEA, 0x00, 0xF7, 0xC0, 0x36, 0xC0, 0xF3, +0x44, 0x98, 0xE3, 0xF3, 0x14, 0x6C, 0xB1, 0x67, +0xE3, 0xF5, 0x7C, 0x9B, 0x42, 0x10, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF6, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, +0x2B, 0xE9, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF6, +0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, +0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF6, 0xC8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF6, +0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, +0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, +0x36, 0xF4, 0x08, 0x6E, 0x40, 0xEA, 0x04, 0x93, +0x01, 0x6E, 0xC0, 0xF3, 0x44, 0x98, 0xC4, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF6, 0x70, 0x9B, +0x00, 0xF7, 0xC0, 0x36, 0xE3, 0xF3, 0x14, 0x6C, +0xB1, 0x67, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x03, 0xF5, +0x34, 0x9A, 0x04, 0x96, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x6B, 0x6D, 0xEE, 0xB1, 0x67, 0xA3, 0xF3, +0x14, 0x6C, 0x40, 0xEA, 0x0A, 0x94, 0x04, 0x95, +0x00, 0x6E, 0x80, 0x18, 0x40, 0x1D, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0xE3, 0xF3, 0x14, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x08, 0x6B, +0x03, 0xF3, 0x00, 0x6C, 0x44, 0x36, 0xC0, 0xF3, +0x44, 0x98, 0x6D, 0xEE, 0x0F, 0x6D, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF6, 0xB4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x69, +0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, 0x04, 0x92, +0x05, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x04, 0x6C, 0x04, 0x10, 0xC0, 0xF3, 0x44, 0x98, +0x43, 0xF3, 0x1C, 0x6C, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF5, 0xA8, 0x9B, 0x5B, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0xC3, 0xF3, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xB4, 0x9A, +0xE3, 0xF3, 0x1C, 0x6C, 0x80, 0x18, 0x1C, 0x28, +0xFF, 0xF7, 0x1F, 0x6B, 0x80, 0xF3, 0x0E, 0x6C, +0x6C, 0xEA, 0x98, 0xEA, 0x0A, 0x6C, 0x12, 0xE8, +0x02, 0x30, 0x0A, 0x30, 0x9B, 0xE8, 0x01, 0x2C, +0xE5, 0xE8, 0x10, 0xEC, 0x05, 0x5C, 0x12, 0xE8, +0x6C, 0xE8, 0x02, 0x61, 0x01, 0x48, 0x6C, 0xE8, +0x04, 0x92, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x04, 0x6C, +0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x43, 0xF3, 0x1C, 0x6C, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF5, 0xA8, 0x9B, 0xD0, 0x67, +0x40, 0xEA, 0x04, 0x92, 0x0A, 0x93, 0x7F, 0x4A, +0x1D, 0x4A, 0x44, 0x32, 0x49, 0xE3, 0x02, 0xCA, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, +0xB0, 0x67, 0x03, 0x6E, 0x24, 0x67, 0x80, 0x18, +0x40, 0x1D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9B, 0x04, 0x36, 0x08, 0x6B, 0x6D, 0xEE, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0xB8, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x80, 0xF0, 0x62, 0xA9, 0x01, 0x6A, 0x44, 0xE8, +0x6C, 0xEA, 0x47, 0xE8, 0x04, 0x22, 0x91, 0x67, +0xB0, 0x67, 0x80, 0x18, 0x08, 0x1E, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x68, 0xCC, 0xE8, 0xB0, 0x67, 0x02, 0x6E, +0x24, 0x67, 0x80, 0x18, 0x40, 0x1D, 0x07, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x08, 0x6B, 0x04, 0x36, 0x6D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF3, 0xB4, 0x9A, 0x03, 0xF3, +0x08, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0x06, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF6, 0x58, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xE8, 0x9A, +0x00, 0x6E, 0xD2, 0xF5, 0x08, 0x4C, 0x80, 0x18, +0x78, 0x59, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, +0xC1, 0x19, 0x06, 0x93, 0x07, 0x92, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x6D, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x25, 0x67, 0x4C, 0xEE, 0x4C, 0xE9, +0xEC, 0xEA, 0x01, 0x72, 0x04, 0x67, 0x04, 0xD6, +0x17, 0x61, 0xB1, 0x67, 0x04, 0x6E, 0x80, 0x18, +0x40, 0x1D, 0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, +0xF4, 0x1A, 0x00, 0xF6, 0x00, 0x5A, 0x04, 0x61, +0x04, 0x93, 0x02, 0x6A, 0x23, 0x2B, 0x25, 0x10, +0x04, 0x94, 0x00, 0xF3, 0x00, 0x5A, 0x78, 0x67, +0x01, 0x5C, 0x58, 0x67, 0x1E, 0x2B, 0x1A, 0x10, +0x19, 0x2A, 0xB1, 0x67, 0x00, 0x6E, 0x80, 0x18, +0xAD, 0x1A, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF6, +0x7C, 0x9B, 0x43, 0xEB, 0x11, 0x60, 0x42, 0x34, +0x96, 0x34, 0x80, 0x18, 0xDC, 0x15, 0x03, 0x6B, +0x78, 0xEA, 0x03, 0x6A, 0x12, 0xEB, 0xFE, 0xF0, +0x02, 0x4B, 0xE0, 0xF3, 0x09, 0x5B, 0x05, 0x60, +0xFA, 0x5B, 0x02, 0x61, 0x00, 0x6A, 0x01, 0x10, +0x04, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x6A, 0x25, 0x67, +0x4C, 0xEE, 0x4C, 0xEF, 0x4C, 0xE9, 0x00, 0x6A, +0x12, 0xD4, 0x0C, 0xD6, 0x0A, 0xD7, 0x08, 0xD2, +0x09, 0xD2, 0x06, 0xD2, 0x02, 0x67, 0x07, 0xD2, +0x06, 0x5A, 0x80, 0xF0, 0x1C, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0x32, 0xA2, 0xF4, 0x00, 0x4B, +0x49, 0xE3, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, +0x21, 0x68, 0xD2, 0xF5, 0x08, 0x48, 0x90, 0x67, +0xB1, 0x67, 0x56, 0x6E, 0x1F, 0x6F, 0x80, 0x18, +0x05, 0x59, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x6E, +0xE0, 0xF3, 0x00, 0x6F, 0x0B, 0xD2, 0x80, 0x18, +0x05, 0x59, 0x0A, 0x94, 0x06, 0xD2, 0x0D, 0x2C, +0x12, 0x94, 0x08, 0x96, 0xB1, 0x67, 0x01, 0x6F, +0x80, 0x18, 0x0C, 0x1F, 0x07, 0x2A, 0x0C, 0x92, +0x04, 0x22, 0x01, 0x6B, 0x09, 0xD3, 0x0A, 0x92, +0x01, 0x10, 0x05, 0x6A, 0x06, 0x94, 0xFF, 0x6B, +0x0B, 0x90, 0x6C, 0xEC, 0x06, 0xD4, 0x07, 0x94, +0x6C, 0xE8, 0x01, 0x4C, 0x6C, 0xEC, 0x07, 0xD4, +0x60, 0x10, 0x06, 0x92, 0x0F, 0x5A, 0x12, 0x60, +0x06, 0x92, 0xFF, 0x6B, 0xF4, 0x4A, 0x6C, 0xEA, +0x03, 0x5A, 0x54, 0x60, 0x00, 0x6A, 0x30, 0xF0, +0x21, 0x6C, 0x04, 0xD2, 0xD2, 0xF5, 0x08, 0x4C, +0xB1, 0x67, 0xC2, 0x67, 0x13, 0x10, 0x06, 0x93, +0x0C, 0x5B, 0x02, 0x60, 0x0C, 0x6A, 0x07, 0x10, +0x06, 0x92, 0xFF, 0x6B, 0xF4, 0x4A, 0x6C, 0xEA, +0x03, 0x5A, 0x40, 0x60, 0x0F, 0x6A, 0x30, 0xF0, +0x21, 0x6C, 0x04, 0xD2, 0xD2, 0xF5, 0x08, 0x4C, +0xB1, 0x67, 0x00, 0x6E, 0xE0, 0xF3, 0x00, 0x6F, +0x80, 0x18, 0x78, 0x59, 0x35, 0x10, 0x3B, 0x20, +0xFF, 0x6A, 0xFE, 0x48, 0x30, 0xF0, 0x21, 0x6C, +0x4C, 0xE8, 0xD2, 0xF5, 0x08, 0x4C, 0xB1, 0x67, +0x56, 0x6E, 0x1F, 0x6F, 0x04, 0xD0, 0x80, 0x18, +0x78, 0x59, 0x00, 0x6C, 0x08, 0xD4, 0x44, 0x67, +0x24, 0x10, 0x1F, 0x70, 0x02, 0x61, 0x1F, 0x68, +0x26, 0x10, 0xFF, 0x6A, 0x03, 0x48, 0x30, 0xF0, +0x21, 0x6C, 0x4C, 0xE8, 0xD2, 0xF5, 0x08, 0x4C, +0xB1, 0x67, 0x56, 0x6E, 0x1F, 0x6F, 0x04, 0xD0, +0x80, 0x18, 0x78, 0x59, 0x00, 0x6A, 0x08, 0xD2, +0x10, 0x10, 0x12, 0x94, 0xB1, 0x67, 0x01, 0x6E, +0x80, 0x18, 0x40, 0x1D, 0x12, 0x94, 0x08, 0x96, +0xB1, 0x67, 0x00, 0x6F, 0x80, 0x18, 0x0C, 0x1F, +0x0A, 0x22, 0x03, 0x10, 0x01, 0x6B, 0x08, 0xD3, +0x00, 0x6A, 0x09, 0x94, 0x04, 0x2C, 0x07, 0x93, +0x06, 0x5B, 0x7F, 0xF7, 0x01, 0x61, 0x50, 0x67, +0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, +0xB0, 0x67, 0x24, 0x67, 0x80, 0x18, 0xA0, 0x1B, +0x30, 0xF0, 0x21, 0x6C, 0x1F, 0x6F, 0x00, 0x6E, +0xD2, 0xF5, 0x08, 0x4C, 0xB0, 0x67, 0x0A, 0xD2, +0x80, 0x18, 0x05, 0x59, 0x91, 0x67, 0xB0, 0x67, +0x09, 0xD2, 0x80, 0x18, 0x70, 0x1C, 0x91, 0x67, +0xB0, 0x67, 0x04, 0x6E, 0x80, 0x18, 0x40, 0x1D, +0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0xF4, 0x1A, +0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x07, 0x1B, +0x0D, 0x22, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, +0x70, 0x1C, 0x91, 0x67, 0xB0, 0x67, 0x04, 0x6E, +0x80, 0x18, 0x40, 0x1D, 0x91, 0x67, 0xB0, 0x67, +0x80, 0x18, 0x07, 0x1B, 0x91, 0x67, 0xB0, 0x67, +0x80, 0x18, 0x61, 0x1B, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x6E, 0x01, 0x6F, 0x07, 0xD2, 0x80, 0x18, +0x2F, 0x1F, 0x91, 0x67, 0xB0, 0x67, 0x08, 0xD2, +0x80, 0x18, 0x90, 0x1A, 0x08, 0x93, 0x00, 0x6C, +0x06, 0xD4, 0x43, 0xEB, 0x06, 0x61, 0x4B, 0xE3, +0x06, 0xD2, 0x06, 0x94, 0xFF, 0x6A, 0x4C, 0xEC, +0x06, 0xD4, 0x06, 0x92, 0x30, 0xF0, 0x21, 0x6C, +0xD2, 0xF5, 0x08, 0x4C, 0xB0, 0x67, 0x56, 0x6E, +0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x61, 0x1B, +0x07, 0x93, 0x43, 0xEB, 0x02, 0x60, 0x6B, 0xE2, +0x02, 0x10, 0x07, 0x94, 0x4B, 0xE4, 0xFF, 0x6B, +0x6C, 0xEA, 0x01, 0xE1, 0x40, 0xF1, 0x40, 0xC0, +0x09, 0x93, 0x0A, 0x94, 0x0F, 0x97, 0x0E, 0x91, +0x8B, 0xE3, 0x06, 0x93, 0x0D, 0x90, 0x49, 0xE3, +0xFF, 0x6B, 0x6C, 0xEA, 0x08, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x68, 0xAC, 0xE8, 0xB0, 0x67, 0x24, 0x67, +0x80, 0x18, 0x8B, 0x1F, 0xA2, 0x67, 0x91, 0x67, +0xD0, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xEC, 0x1E, +0x04, 0x96, 0x91, 0x67, 0xA2, 0x67, 0xF0, 0x67, +0x80, 0x18, 0x9C, 0x19, 0x09, 0xE1, 0x80, 0xF0, +0x57, 0xA2, 0x07, 0x22, 0x80, 0xF0, 0x62, 0xA9, +0x01, 0x6A, 0x44, 0xE8, 0x6D, 0xEA, 0x80, 0xF0, +0x42, 0xC9, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x6D, 0x04, 0x67, 0x80, 0x18, +0xC6, 0x1F, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, +0xC6, 0x1F, 0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, +0xD3, 0x1E, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, +0xD3, 0x1E, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xDF, 0x63, 0x41, 0x62, +0x40, 0xD1, 0x3F, 0xD0, 0x30, 0xF0, 0x20, 0x6D, +0x24, 0x67, 0xC2, 0xF4, 0x14, 0x4D, 0x2B, 0x04, +0x48, 0x6E, 0x00, 0x18, 0x9D, 0xD8, 0x30, 0xF0, +0x20, 0x6D, 0x04, 0x04, 0xA2, 0xF4, 0x18, 0x4D, +0x1C, 0x6E, 0x00, 0x18, 0x9D, 0xD8, 0x52, 0x99, +0x40, 0xA2, 0x04, 0x2A, 0x91, 0x67, 0x80, 0x18, +0xF5, 0x1D, 0x3C, 0x2A, 0x91, 0x67, 0x80, 0x18, +0x39, 0x1B, 0x04, 0x00, 0x12, 0x6F, 0x91, 0x67, +0x2B, 0x05, 0x19, 0x06, 0x80, 0x18, 0x52, 0x1B, +0x0B, 0x06, 0xB0, 0x67, 0x91, 0x67, 0x80, 0x18, +0x5D, 0x19, 0x91, 0x67, 0x80, 0x18, 0x0A, 0x19, +0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x3D, 0x16, +0x01, 0x6D, 0x91, 0x67, 0x80, 0x18, 0x17, 0x16, +0x91, 0x67, 0x80, 0x18, 0x36, 0x1C, 0x91, 0x67, +0x80, 0x18, 0x82, 0x1B, 0x91, 0x67, 0x80, 0x18, +0xD9, 0x1F, 0x91, 0x67, 0x80, 0x18, 0x94, 0x18, +0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x17, 0x16, +0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x3D, 0x16, +0xB0, 0x67, 0x0B, 0x06, 0x91, 0x67, 0x80, 0x18, +0x98, 0x1C, 0x91, 0x67, 0x80, 0x18, 0xB2, 0x1C, +0x91, 0x67, 0x2B, 0x05, 0x19, 0x06, 0x12, 0x6F, +0x80, 0x18, 0xF8, 0x15, 0x41, 0x97, 0x40, 0x91, +0x3F, 0x90, 0x21, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x69, 0x2C, 0xED, 0x01, 0x75, 0x58, 0x67, +0x0C, 0xD4, 0x06, 0xD2, 0x80, 0xF0, 0x0C, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x28, 0x9A, +0x00, 0x6D, 0xC5, 0x67, 0xF1, 0x67, 0x80, 0x18, +0x05, 0x59, 0x30, 0xF0, 0x20, 0x68, 0x0C, 0x94, +0x8B, 0xF1, 0x00, 0x48, 0xF1, 0x67, 0x43, 0xF6, +0x58, 0xD8, 0x01, 0x6D, 0x00, 0x6E, 0x80, 0x18, +0x05, 0x59, 0x43, 0xF6, 0x5C, 0xD8, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x00, 0x6E, 0x08, 0xF1, +0x0C, 0x6C, 0x03, 0x6D, 0x40, 0xEA, 0x01, 0x6D, +0x21, 0xF0, 0x04, 0x6C, 0xAB, 0xED, 0x80, 0x18, +0x1C, 0x28, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0x23, 0xF5, 0xA8, 0x9A, +0x21, 0xF0, 0x04, 0x6C, 0x03, 0x6E, 0x40, 0xEB, +0x06, 0x93, 0x0C, 0x94, 0x00, 0x6D, 0xC5, 0x67, +0xF1, 0x67, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x06, 0x92, 0x0C, 0x94, 0xF1, 0x67, 0x01, 0x6D, +0x00, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0xC0, 0xF3, 0x44, 0x98, 0x07, 0x96, 0x01, 0x6D, +0x21, 0xF0, 0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x0C, 0x94, 0x00, 0x68, 0x80, 0x18, 0xFE, 0x59, +0x0C, 0x94, 0x80, 0x18, 0x0A, 0x56, 0x1B, 0x2A, +0xE0, 0xF3, 0x09, 0x70, 0x0D, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xA3, 0xF6, 0x9C, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x91, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0xE1, 0x17, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, +0x04, 0x6C, 0x08, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x74, 0x9A, +0xFE, 0x6A, 0x01, 0x6D, 0x80, 0xA3, 0xC5, 0x67, +0x8C, 0xEA, 0x40, 0xC3, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF4, 0x04, 0x6C, 0x40, 0xEA, 0x6C, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0x00, 0x6E, 0x23, 0xF4, 0x04, 0x6C, +0x40, 0xEA, 0x00, 0x18, 0x88, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF1, 0x74, 0x9A, 0x01, 0x6C, +0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, +0x00, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6E, 0x63, 0xF4, 0x04, 0x6C, 0x08, 0x6D, +0x40, 0xEA, 0x01, 0x6D, 0x21, 0xF0, 0x04, 0x6C, +0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF5, 0xA8, 0x9B, 0x06, 0xD2, +0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x04, 0x6C, +0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x43, 0xF6, +0x58, 0x99, 0x0C, 0x94, 0x00, 0x6D, 0xC5, 0x67, +0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x43, 0xF6, +0x5C, 0x99, 0x0C, 0x94, 0x01, 0x6D, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, +0xE0, 0x9A, 0x00, 0x6E, 0x80, 0x18, 0x78, 0x59, +0xC0, 0xF3, 0x44, 0x98, 0x06, 0x96, 0x01, 0x6D, +0xAB, 0xED, 0x21, 0xF0, 0x04, 0x6C, 0x40, 0xEA, +0x0C, 0x94, 0x80, 0x18, 0x15, 0x5A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, 0x03, 0xF0, +0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0x6D, 0x08, 0xF1, 0x0C, 0x6C, 0xC5, 0x67, +0x40, 0xEA, 0x0C, 0x94, 0x80, 0x18, 0xC3, 0x59, +0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF2, +0x10, 0x4A, 0x66, 0xAA, 0xEF, 0xF7, 0x1F, 0x68, +0x01, 0x4B, 0x66, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF6, 0x50, 0x9A, 0x02, 0x6B, 0x40, 0xAA, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xAF, 0xF7, +0x4C, 0xAA, 0x0E, 0xEA, 0x6C, 0xEA, 0x04, 0x22, +0x80, 0x18, 0x91, 0x7B, 0x00, 0x18, 0xCC, 0xD9, +0x02, 0x6B, 0x50, 0x67, 0x6C, 0xEA, 0x08, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xAF, 0xF7, 0x4C, 0xAA, +0x6C, 0xEA, 0x02, 0x2A, 0x80, 0x18, 0x91, 0x7B, +0x30, 0xF0, 0x20, 0x6A, 0xAF, 0xF7, 0x0C, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF2, 0x1E, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x50, 0x9A, +0x04, 0x6C, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF2, +0x08, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x80, 0xA4, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x01, 0x6B, +0x8C, 0xEB, 0x03, 0xF6, 0xA2, 0xA2, 0x64, 0x34, +0x03, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x8D, 0xEB, +0x03, 0xF6, 0x62, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0xEB, 0xF1, 0x13, 0x4C, 0x07, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x7F, 0xA2, 0xA0, 0xF0, -0xBB, 0xA2, 0x00, 0x6C, 0x63, 0xF6, 0x78, 0xC2, -0x7F, 0x6B, 0xAC, 0xEB, 0x63, 0xF6, 0x9A, 0xC2, -0x04, 0x2B, 0x01, 0x6B, 0x63, 0xF6, 0x7B, 0xC2, -0x02, 0x10, 0x63, 0xF6, 0x9B, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, -0xDB, 0xA2, 0x63, 0xF6, 0x99, 0xA2, 0x7F, 0x6B, -0xCC, 0xEB, 0x6E, 0xEC, 0xFF, 0x6D, 0x07, 0x24, -0xA0, 0xF0, 0x9E, 0xA2, 0x96, 0x34, 0xAC, 0xEC, -0x00, 0x18, 0x28, 0xD2, 0x07, 0x10, 0x06, 0x23, -0xA0, 0xF0, 0x9E, 0xA2, 0x96, 0x34, 0xAC, 0xEC, -0x00, 0x18, 0xB0, 0xD1, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x74, 0x9B, 0x63, 0xF6, 0x98, 0x9A, -0x8C, 0xEB, 0x04, 0x73, 0x0C, 0x61, 0xE3, 0xF5, -0x7F, 0xA2, 0x04, 0x6C, 0x8C, 0xEB, 0x07, 0x23, -0x01, 0x6B, 0x63, 0xF6, 0x7A, 0xC2, 0x01, 0x6C, -0x00, 0x6D, 0x00, 0x18, 0x62, 0xC8, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, -0x9B, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, 0x63, 0xF6, -0x79, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x20, 0x6C, 0x4B, 0xF2, 0x17, 0x4C, 0x07, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xC0, 0xF0, 0x97, 0xA2, 0x01, 0x6B, +0x8C, 0xEB, 0x0C, 0x23, 0xC0, 0xF0, 0x79, 0xA2, +0xFF, 0x73, 0x08, 0x60, 0xC0, 0xF0, 0x98, 0xA2, +0x03, 0xF6, 0x7E, 0xA2, 0x6D, 0xE4, 0x03, 0x4B, +0x03, 0xF6, 0x74, 0xCA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xA0, 0xA4, 0x40, 0xF1, +0xFE, 0xA3, 0x02, 0x6A, 0x01, 0x6E, 0x4B, 0xEA, +0xCC, 0xED, 0xEC, 0xEA, 0xAD, 0xEA, 0x40, 0xF1, +0x5E, 0xC3, 0xA1, 0xA4, 0xCC, 0xEA, 0x40, 0xF1, +0xBF, 0xC3, 0xFF, 0x6D, 0x0D, 0x22, 0x61, 0xA4, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, 0x4C, 0x9A, +0x74, 0x33, 0x40, 0x6C, 0x4D, 0xE3, 0x40, 0xA3, +0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x0A, 0x10, +0x61, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, +0x4C, 0x9A, 0x74, 0x33, 0x4D, 0xE3, 0x80, 0xA3, +0xBF, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, +0x60, 0xA2, 0x03, 0x6A, 0x6C, 0xEA, 0x10, 0x6B, +0x64, 0xEA, 0xFF, 0x6A, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF7, 0x44, 0x9A, 0x04, 0xD3, +0x40, 0x9A, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF2, 0x54, 0x9A, 0x00, 0x9A, 0x05, 0x92, +0x0A, 0xEA, 0xC0, 0xF0, 0x04, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, +0x64, 0x9A, 0x02, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, +0x00, 0x49, 0x22, 0xF6, 0x4C, 0xA9, 0x00, 0xF7, +0x00, 0x72, 0x07, 0x60, 0x22, 0xF6, 0x6C, 0xA1, +0x22, 0xF6, 0x8D, 0xA1, 0xAF, 0x43, 0x8E, 0xED, +0x13, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, +0x74, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, 0x97, 0x10, +0x30, 0xF0, 0x20, 0x6D, 0x43, 0xF2, 0xA8, 0x9D, +0x7F, 0x6E, 0xB5, 0xE0, 0xE0, 0xA5, 0xCC, 0xEF, +0x45, 0x2F, 0x00, 0xF4, 0x00, 0x72, 0x80, 0xF0, +0x0A, 0x60, 0xAC, 0x43, 0x8E, 0xED, 0x80, 0xF0, +0x06, 0x25, 0x00, 0xF5, 0x01, 0x72, 0x80, 0xF0, +0x02, 0x60, 0x00, 0xF6, 0x02, 0x72, 0x7F, 0x60, +0x00, 0xF7, 0x03, 0x72, 0x7C, 0x60, 0x00, 0xF5, +0x00, 0x72, 0x79, 0x60, 0xFD, 0x4B, 0x6E, 0xEC, +0x76, 0x24, 0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, +0x00, 0x49, 0x22, 0xF6, 0x4C, 0xA9, 0x00, 0xF6, +0x01, 0x72, 0x6D, 0x60, 0x00, 0xF7, 0x02, 0x72, +0x6A, 0x60, 0x00, 0xF6, 0x00, 0x72, 0x67, 0x60, +0x22, 0xF6, 0x6C, 0xA1, 0x22, 0xF6, 0x8D, 0xA1, +0xFE, 0x4B, 0x8E, 0xEB, 0x60, 0x23, 0x00, 0xF7, +0x01, 0x72, 0x5D, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF7, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6D, +0x43, 0xF2, 0xA8, 0x9D, 0x49, 0xE0, 0x94, 0x34, +0x60, 0xAA, 0x91, 0xE1, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x22, 0xF5, 0x0C, 0x4C, +0xB5, 0xE0, 0x12, 0x10, 0x40, 0xA5, 0x4C, 0xEE, +0x01, 0x76, 0x1E, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF7, 0x48, 0x9A, 0x94, 0x34, 0x91, 0xE1, +0x49, 0xE0, 0x60, 0xAA, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x22, 0xF5, 0x0C, 0x4C, +0xFF, 0x6E, 0x6C, 0xEE, 0x40, 0xEA, 0x22, 0xF6, +0x4D, 0xA1, 0x08, 0x6B, 0x01, 0x4A, 0x22, 0xF6, +0x4D, 0xC1, 0x22, 0xF6, 0x4D, 0xA1, 0x6E, 0xEA, +0x13, 0x2A, 0x22, 0xF6, 0x4D, 0xC1, 0x10, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x94, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, 0x74, 0x9B, +0x40, 0x9C, 0x6D, 0xEA, 0x40, 0xDC, 0xA3, 0xF3, +0x44, 0x99, 0x6D, 0xEA, 0xA3, 0xF3, 0x44, 0xD9, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0x4C, 0x9A, +0x04, 0x93, 0x40, 0x9A, 0x0E, 0xEA, 0x61, 0xE0, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, +0x50, 0x9A, 0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF2, 0x54, 0x9A, 0x00, 0xDA, 0x05, 0x92, +0x4A, 0xE8, 0x5F, 0xF7, 0x06, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFE, 0x63, 0x03, 0xD1, 0x02, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, +0x64, 0x9A, 0x02, 0x6D, 0xAC, 0xEB, 0x60, 0xF1, +0x02, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, +0x7C, 0x9B, 0x80, 0xA3, 0x0F, 0x6B, 0x8C, 0xEB, +0x05, 0x23, 0xA0, 0xF0, 0x84, 0x9A, 0xAD, 0xEC, +0xA0, 0xF0, 0x84, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x2B, 0xF3, 0x41, 0xA2, 0xFF, 0x4A, 0x00, 0xD2, +0x4C, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF1, +0xA0, 0x9A, 0xC3, 0xF3, 0x94, 0x9C, 0xAC, 0xEC, +0x30, 0xF0, 0x20, 0x6D, 0x43, 0xF7, 0xB0, 0x9D, +0xAE, 0xEC, 0x05, 0x24, 0xA0, 0xF1, 0x02, 0xA2, +0x00, 0x94, 0x8A, 0xE8, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, 0xFF, 0x6C, +0x01, 0x4C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x64, 0xDA, 0x25, 0x11, 0x30, 0xF0, 0x20, 0x6C, +0x09, 0xF3, 0xC6, 0xA4, 0xE3, 0x67, 0xFF, 0x6D, +0xE7, 0xEE, 0xC7, 0x67, 0x01, 0x6F, 0xEC, 0xEE, +0xA0, 0xF0, 0x0A, 0x26, 0x0C, 0x35, 0xB5, 0xE2, +0x60, 0xF1, 0x05, 0x4D, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6E, 0x09, 0xF3, 0xE6, 0xA6, 0xFF, 0x6C, +0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, 0x74, 0x4F, +0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x02, 0xF0, +0x00, 0x77, 0x08, 0x60, 0x09, 0xF3, 0xE6, 0xA6, +0x8C, 0xEF, 0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, +0x2C, 0xEF, 0x0F, 0x2F, 0x30, 0xF0, 0x20, 0x6C, +0x09, 0xF3, 0x26, 0xA4, 0xFF, 0x6C, 0x30, 0xF0, +0x20, 0x6E, 0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, +0xE2, 0x67, 0x25, 0xE2, 0x63, 0xF1, 0xC8, 0x9E, +0x0B, 0x10, 0x09, 0xF3, 0x26, 0xA6, 0x30, 0xF0, +0x20, 0x6E, 0x63, 0xF1, 0xCC, 0x9E, 0x8C, 0xE9, +0x74, 0x49, 0x28, 0x31, 0xE2, 0x67, 0x25, 0xE2, +0xD9, 0xE1, 0xC0, 0xA6, 0x0C, 0x31, 0xCC, 0xEC, +0x30, 0xF0, 0x20, 0x6E, 0x8B, 0xF1, 0x00, 0x4E, +0xD9, 0xE1, 0xFD, 0xE6, 0x60, 0xF1, 0x81, 0xC7, +0x30, 0xF0, 0x20, 0x6E, 0x09, 0xF3, 0xE6, 0xA6, +0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, +0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, +0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, 0x09, 0xF3, +0xE6, 0xA6, 0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, +0xFD, 0xE2, 0x2C, 0xEF, 0x0E, 0x2F, 0x30, 0xF0, +0x20, 0x6C, 0x09, 0xF3, 0xC6, 0xA4, 0xFF, 0x6C, +0x30, 0xF0, 0x20, 0x6F, 0x8C, 0xEE, 0x7C, 0x4E, +0xC8, 0x36, 0xD9, 0xE2, 0x63, 0xF1, 0xE8, 0x9F, +0x0A, 0x10, 0x09, 0xF3, 0xC6, 0xA6, 0x30, 0xF0, +0x20, 0x6F, 0x63, 0xF1, 0xEC, 0x9F, 0x8C, 0xEE, +0x7C, 0x4E, 0xC8, 0x36, 0xD9, 0xE2, 0xF9, 0xE6, +0xC0, 0xA6, 0x01, 0x4A, 0x04, 0x72, 0xCC, 0xEC, +0x80, 0xC5, 0x01, 0x4D, 0x8C, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0xA6, 0xA2, 0x01, 0x6C, +0xC4, 0x67, 0xC4, 0xED, 0xCF, 0xED, 0x09, 0xF3, +0xC6, 0xA2, 0xAC, 0xEB, 0xFF, 0x6D, 0x84, 0xEE, +0x30, 0xF0, 0x20, 0x6E, 0x63, 0xF2, 0xDC, 0x9E, +0xAC, 0xEC, 0x08, 0x6F, 0x80, 0xC6, 0x09, 0xF3, +0x86, 0xA2, 0xAC, 0xEC, 0x01, 0x4C, 0xAC, 0xEC, +0x09, 0xF3, 0x86, 0xC2, 0x09, 0xF3, 0xA6, 0xA2, +0x03, 0x6C, 0xAC, 0xEC, 0x09, 0xF3, 0x86, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA0, 0xF1, 0x82, 0xA2, 0x01, 0x4C, 0xA0, 0xF1, +0x82, 0xC2, 0xA0, 0xF1, 0x82, 0xA2, 0xEE, 0xEC, +0x70, 0x2C, 0xA0, 0xF1, 0x82, 0xC2, 0x6D, 0x10, +0x30, 0xF0, 0x20, 0x6E, 0x43, 0xF2, 0x14, 0x9E, +0x02, 0x6F, 0xC0, 0x98, 0xED, 0xEE, 0xC0, 0xD8, +0xA3, 0xF3, 0xC4, 0x9A, 0xA3, 0xF3, 0x70, 0xC2, +0x09, 0xF3, 0x66, 0xA4, 0xED, 0xEE, 0xA3, 0xF3, +0xC4, 0xDA, 0xA3, 0xF3, 0x71, 0xC2, 0x09, 0xF3, +0x46, 0xA4, 0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEA, +0x74, 0x4A, 0x48, 0x32, 0x6C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x07, 0x60, 0x09, 0xF3, 0x46, 0xA4, +0xAC, 0xEA, 0x74, 0x4A, 0x48, 0x32, 0x6C, 0xEA, +0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, +0x66, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF7, +0x94, 0x9C, 0xFF, 0x6A, 0x4C, 0xEB, 0x8D, 0xE3, +0x68, 0x33, 0xA0, 0xA3, 0x0A, 0x10, 0x09, 0xF3, +0x46, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, +0x78, 0x9B, 0xAC, 0xEA, 0x69, 0xE2, 0x48, 0x32, +0x40, 0xA2, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF5, 0xB2, 0xC2, +0x09, 0xF3, 0x46, 0xA3, 0x09, 0xF3, 0x86, 0xA3, +0xFF, 0x6A, 0x1F, 0xF7, 0x00, 0x6D, 0x4C, 0xEC, +0x88, 0x34, 0xC0, 0xF1, 0x11, 0x4C, 0xAC, 0xEC, +0x0B, 0x2C, 0x09, 0xF3, 0x66, 0xA3, 0xFF, 0x6A, +0x30, 0xF0, 0x20, 0x6C, 0x4C, 0xEB, 0x74, 0x4B, +0x68, 0x33, 0x43, 0xF7, 0x9C, 0x9C, 0x09, 0x10, +0x09, 0xF3, 0x66, 0xA3, 0x30, 0xF0, 0x20, 0x6C, +0x63, 0xF7, 0x80, 0x9C, 0x4C, 0xEB, 0x74, 0x4B, +0x68, 0x33, 0x8D, 0xE3, 0x60, 0xA3, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x2E, 0xF5, 0x53, 0xC3, +0x02, 0x10, 0xBF, 0xF6, 0x12, 0x2B, 0x03, 0x91, +0x02, 0x90, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x40, 0x9A, +0xFF, 0x68, 0x60, 0xA2, 0x6C, 0xE8, 0x24, 0x20, +0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x44, 0x9A, +0x20, 0x6B, 0x01, 0x70, 0x60, 0xC2, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x5C, 0x9A, +0x40, 0xEA, 0x0E, 0x10, 0x80, 0x69, 0x0E, 0xE9, +0x0B, 0x29, 0x00, 0x18, 0xD8, 0xC9, 0x80, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0x20, 0x01, 0x30, 0xF0, +0x20, 0x6A, 0xAD, 0xF7, 0x3A, 0xC2, 0x0F, 0x10, +0x20, 0x70, 0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6C, +0xA0, 0xF0, 0x64, 0x9A, 0xC3, 0xF2, 0x9C, 0x9C, +0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x31, 0x6A, 0x11, 0xF1, 0x09, 0x4A, +0x40, 0xDB, 0x00, 0x1C, 0xAC, 0x39, 0x80, 0x18, +0xCE, 0x78, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, +0x20, 0x01, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0xFF, 0x17, 0x00, 0x65, +0xDD, 0x63, 0x45, 0x62, 0x44, 0xD1, 0x43, 0xD0, +0x00, 0x6A, 0x06, 0xD2, 0x07, 0xD2, 0x01, 0x6A, +0x7D, 0x67, 0x4B, 0xEA, 0x20, 0xF0, 0x40, 0xC3, +0x01, 0x6A, 0x20, 0xF0, 0x42, 0xC3, 0x08, 0x6A, +0x20, 0xF0, 0x43, 0xC3, 0x60, 0xA4, 0x7F, 0x6A, +0x6C, 0xEA, 0x01, 0x72, 0x7E, 0x30, 0x00, 0xF1, +0x04, 0x61, 0x48, 0xA4, 0xBD, 0x67, 0x20, 0xF0, +0x44, 0xC5, 0x41, 0xA4, 0x20, 0xF0, 0x45, 0xC5, +0x42, 0xA4, 0x20, 0xF0, 0x46, 0xC5, 0x46, 0xA4, +0x20, 0xF0, 0x48, 0xC5, 0x43, 0xA4, 0x20, 0xF0, +0x47, 0xC5, 0x47, 0xA4, 0x20, 0xF0, 0x49, 0xC5, +0x20, 0xF0, 0x44, 0xA5, 0xE0, 0xF0, 0x07, 0x2A, +0x7D, 0x67, 0x20, 0xF0, 0x47, 0xA3, 0x20, 0xF0, +0x66, 0xA3, 0x40, 0x32, 0x6D, 0xEA, 0x03, 0x72, +0x0A, 0x60, 0x04, 0x52, 0x03, 0x60, 0x02, 0x72, +0x5E, 0x60, 0xD9, 0x10, 0x08, 0x72, 0x2C, 0x60, +0xB7, 0x72, 0x43, 0x60, 0xD4, 0x10, 0x06, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, +0x08, 0x04, 0x40, 0xEA, 0x9D, 0x67, 0x20, 0xF0, +0xE9, 0xA4, 0x20, 0xF0, 0x48, 0xA4, 0xFF, 0xF7, +0x1F, 0x6B, 0xE0, 0x37, 0x5D, 0xE7, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x50, 0x9A, 0x30, 0xF0, +0x20, 0x6D, 0x05, 0x6C, 0x6C, 0xEF, 0xCD, 0xF7, +0x00, 0x4D, 0x00, 0xF2, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x87, 0xF3, 0x88, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x87, 0xF3, 0x68, 0xC2, 0xCA, 0x10, +0xBD, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x10, 0x6A, +0x20, 0xF0, 0x43, 0xC5, 0x30, 0xF0, 0x21, 0x69, +0x80, 0xF2, 0x4C, 0x9B, 0xD2, 0xF3, 0x10, 0x49, +0x0B, 0x04, 0xB1, 0x67, 0x04, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9C, +0xA4, 0x41, 0x0C, 0x04, 0x04, 0x6E, 0x40, 0xEA, +0x92, 0x10, 0x08, 0x20, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x40, 0x9A, 0x08, 0x04, 0x40, 0xEA, +0x00, 0x18, 0x18, 0xDD, 0xBD, 0x67, 0x20, 0xF0, +0x89, 0xA5, 0x20, 0xF0, 0x48, 0xA5, 0x80, 0x34, +0x51, 0xE4, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, +0x80, 0x18, 0x96, 0x01, 0x9B, 0x10, 0x10, 0x6A, +0x7D, 0x67, 0x20, 0xF0, 0x43, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x48, 0x9A, 0x30, 0xF0, +0x20, 0x69, 0x0B, 0x04, 0x40, 0x9A, 0x07, 0x05, +0x04, 0x6E, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF7, 0x4C, 0x9A, 0x40, 0x9A, 0x07, 0xD2, +0x80, 0xF2, 0x4C, 0x99, 0x40, 0xEA, 0x80, 0xF2, +0x4C, 0x99, 0x0C, 0x04, 0x06, 0x05, 0x04, 0x6E, +0x40, 0xEA, 0x06, 0x20, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x40, 0x9A, 0x08, 0x04, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x67, 0xF2, 0x6C, 0xA0, 0x01, 0x6A, 0xFF, 0x69, +0x6C, 0xEA, 0x42, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF4, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF1, 0x7C, 0x9A, 0x80, 0x6C, +0x8B, 0xEC, 0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, +0x2C, 0xEA, 0x40, 0xC3, 0x40, 0xA3, 0x08, 0x6C, +0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, +0x47, 0xF2, 0x78, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, +0x2C, 0xEA, 0x23, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF7, 0x48, 0x9A, 0x67, 0xF2, 0xC4, 0x98, +0x10, 0xF0, 0x32, 0x6C, 0x40, 0x9A, 0x53, 0xF5, +0x1D, 0x4C, 0x00, 0x6D, 0x06, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x4C, 0x9A, 0x01, 0x6F, +0x40, 0x9A, 0x5B, 0xE6, 0x07, 0xD2, 0xE0, 0xF3, +0x08, 0x6A, 0x5B, 0xEE, 0x01, 0x2A, 0xE5, 0xE8, +0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0x12, 0xEE, 0x40, 0xEA, +0x2D, 0x10, 0x80, 0x18, 0x57, 0x67, 0x2A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, +0x40, 0xEA, 0x67, 0xF2, 0xAA, 0xA8, 0x00, 0x6C, +0x80, 0x18, 0x93, 0x66, 0x1F, 0x10, 0x1E, 0x20, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, +0x17, 0x10, 0x18, 0x2A, 0x69, 0xA4, 0xBD, 0x67, +0x20, 0xF0, 0x64, 0xC5, 0x68, 0xA4, 0x20, 0xF0, +0x46, 0xC5, 0x20, 0xF0, 0x47, 0xC5, 0x20, 0xF0, +0x65, 0xC5, 0x46, 0xA4, 0x20, 0xF0, 0x48, 0xC5, +0x67, 0xA4, 0x08, 0x20, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x40, 0x9A, 0x20, 0xF0, 0x69, 0xC5, +0x08, 0x04, 0x40, 0xEA, 0x45, 0x97, 0x44, 0x91, +0x43, 0x90, 0x23, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x68, 0x44, 0xFA, 0x4B, 0x4C, 0xEB, 0x04, 0x5B, +0x03, 0x60, 0x80, 0x18, 0x66, 0x42, 0x48, 0x10, +0x0D, 0x74, 0x22, 0x60, 0x0E, 0x5C, 0x10, 0x60, +0x08, 0x74, 0x53, 0x60, 0x09, 0x5C, 0x05, 0x60, +0x02, 0x74, 0x1F, 0x60, 0x03, 0x74, 0x3E, 0x60, +0x71, 0x10, 0x0A, 0x74, 0x56, 0x60, 0x0A, 0x5C, +0x4F, 0x61, 0x0C, 0x74, 0x1A, 0x60, 0x6A, 0x10, +0x16, 0x74, 0x1C, 0x60, 0x17, 0x5C, 0x05, 0x60, +0x12, 0x74, 0x5A, 0x60, 0x13, 0x74, 0x4E, 0x60, +0x61, 0x10, 0x24, 0x74, 0x51, 0x60, 0xB7, 0x74, +0x57, 0x60, 0x18, 0x74, 0x22, 0x60, 0x5A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x48, 0x9A, +0x34, 0x10, 0x85, 0x67, 0x80, 0x18, 0xD3, 0x66, +0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x44, 0x9A, 0x2B, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x87, 0xF3, 0x88, 0xA3, +0x01, 0x6E, 0xCC, 0xEC, 0x4C, 0xEC, 0x58, 0x2C, +0x67, 0xF2, 0x6C, 0xA3, 0xCC, 0xEB, 0x4C, 0xEB, +0x53, 0x2B, 0x85, 0x67, 0x80, 0x18, 0x97, 0x70, +0x03, 0x10, 0x85, 0x67, 0x80, 0x18, 0xDB, 0x70, +0x62, 0x67, 0x4B, 0x10, 0x30, 0xF0, 0x21, 0x6B, +0x12, 0xF5, 0x68, 0xA3, 0x02, 0x6C, 0x6C, 0xEC, +0x4C, 0xEC, 0x12, 0x6B, 0x42, 0x2C, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x54, 0x9A, 0x40, 0xEA, +0xEF, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x58, 0x9A, 0x85, 0x67, 0x40, 0xEA, 0xE8, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x5C, 0x9A, +0xF8, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x40, 0x9A, 0xF3, 0x17, 0x87, 0x45, 0x01, 0x4C, +0x80, 0x18, 0xD7, 0x69, 0x00, 0x6B, 0x25, 0x10, +0x85, 0x67, 0x80, 0x18, 0x12, 0x74, 0xD4, 0x17, +0x85, 0x67, 0x80, 0x18, 0xA4, 0x29, 0xD0, 0x17, +0x80, 0x18, 0xF6, 0x07, 0x00, 0x6B, 0x19, 0x2A, +0x13, 0x6B, 0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x83, 0xF2, 0x98, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, +0xA3, 0xF3, 0x64, 0xDA, 0xFF, 0x6B, 0x01, 0x10, +0x10, 0x6B, 0x05, 0x97, 0x43, 0x67, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xEB, 0xF2, +0x00, 0x4C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x60, 0xF1, +0xA0, 0xA2, 0x01, 0x6B, 0xFF, 0x6C, 0xAC, 0xEB, +0x07, 0x23, 0xA6, 0x32, 0x07, 0x6B, 0x6C, 0xEA, +0x4C, 0xEC, 0x00, 0x18, 0x87, 0xE9, 0x08, 0x10, +0x60, 0xF1, 0x40, 0xA2, 0x07, 0x6B, 0x46, 0x32, +0x6C, 0xEA, 0x4C, 0xEC, 0x00, 0x18, 0xAD, 0xE9, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x2B, 0xF2, 0x1B, 0x4C, 0x07, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x7F, 0xA2, 0xA0, 0xF0, +0xBB, 0xA2, 0x00, 0x6C, 0x63, 0xF6, 0x7C, 0xC2, +0x7F, 0x6B, 0xAC, 0xEB, 0x63, 0xF6, 0x9E, 0xC2, +0x04, 0x2B, 0x01, 0x6B, 0x63, 0xF6, 0x7F, 0xC2, +0x04, 0x10, 0x63, 0xF6, 0x9F, 0xC2, 0x00, 0x18, +0x63, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0xDB, 0xA2, 0x63, 0xF6, +0x9D, 0xA2, 0x7F, 0x6B, 0xCC, 0xEB, 0x6E, 0xEC, +0xFF, 0x6D, 0x07, 0x24, 0xA0, 0xF0, 0x9E, 0xA2, +0x96, 0x34, 0xAC, 0xEC, 0x00, 0x18, 0x77, 0xD3, +0x07, 0x10, 0x06, 0x23, 0xA0, 0xF0, 0x9E, 0xA2, +0x96, 0x34, 0xAC, 0xEC, 0x00, 0x18, 0xFF, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x78, 0x9B, +0x63, 0xF6, 0x9C, 0x9A, 0x8C, 0xEB, 0x04, 0x73, +0x0C, 0x61, 0x03, 0xF6, 0x63, 0xA2, 0x04, 0x6C, +0x8C, 0xEB, 0x07, 0x23, 0x01, 0x6B, 0x63, 0xF6, +0x7E, 0xC2, 0x01, 0x6C, 0x00, 0x6D, 0x00, 0x18, +0xBF, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x9B, 0xA2, 0x7F, 0x6B, +0x8C, 0xEB, 0x63, 0xF6, 0x7D, 0xC2, 0x84, 0xF5, +0x66, 0xCA, 0xA0, 0xF0, 0x7C, 0xA2, 0x01, 0x6C, +0x84, 0xF5, 0x84, 0xCA, 0x72, 0x33, 0x84, 0xF5, +0x68, 0xCA, 0xA0, 0xF0, 0x7F, 0xA2, 0x84, 0xF5, +0x6A, 0xCA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x08, 0xD4, 0x41, 0xA4, 0x24, 0x67, 0x06, 0xD2, 0x60, 0xA4, 0x02, 0x6A, 0x6C, 0xEA, 0x06, 0x93, @@ -29873,826 +30170,879 @@ u8 array_mp_8822c_fw_nic[] = { 0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x58, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF4, 0x48, 0x9A, 0x14, 0x33, 0x4D, 0xE3, +0x23, 0xF4, 0x4C, 0x9A, 0x14, 0x33, 0x4D, 0xE3, 0x80, 0xA3, 0xBF, 0x6A, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x54, 0x9A, 0x90, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, -0x48, 0x9A, 0x14, 0x33, 0xFF, 0x6C, 0x4D, 0xE3, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, +0x4C, 0x9A, 0x14, 0x33, 0xFF, 0x6C, 0x4D, 0xE3, 0x40, 0xA3, 0x8C, 0xEA, 0x40, 0x6C, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x07, 0x92, 0x03, 0xEA, -0xC9, 0x60, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xC0, 0xF0, 0x9F, 0xA0, 0x06, 0x92, +0xC9, 0x60, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xC0, 0xF0, 0x9F, 0xA0, 0x06, 0x92, 0x8E, 0xEA, 0x1E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0x40, 0xEA, 0x18, 0x2A, -0x00, 0x18, 0x1A, 0xEB, 0xA0, 0xF0, 0x9E, 0xA0, -0x96, 0x34, 0x00, 0x18, 0x48, 0xC6, 0xE3, 0xF5, -0x7C, 0xA0, 0x05, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xE3, 0xF5, 0x7D, 0xA0, 0xE3, 0xF5, 0x5C, 0xC0, +0x00, 0x18, 0xBF, 0xEC, 0xA0, 0xF0, 0x9E, 0xA0, +0x96, 0x34, 0x00, 0x18, 0x7E, 0xC6, 0x03, 0xF6, +0x60, 0xA0, 0x05, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x03, 0xF6, 0x61, 0xA0, 0x03, 0xF6, 0x40, 0xC0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, -0x6B, 0xEB, 0x6C, 0xEA, 0xE3, 0xF5, 0x5D, 0xC0, +0x6B, 0xEB, 0x6C, 0xEA, 0x03, 0xF6, 0x41, 0xC0, 0x43, 0xA1, 0x07, 0x6B, 0x01, 0x6C, 0x4C, 0xEB, 0x40, 0xA1, 0x8C, 0xEA, 0x1C, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, -0xD8, 0xA2, 0x84, 0xEB, 0x1F, 0x6F, 0xCA, 0x35, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x24, 0xF6, +0xD0, 0xA2, 0x84, 0xEB, 0x1F, 0x6F, 0xCA, 0x35, 0x8F, 0xEC, 0xEC, 0xED, 0x8C, 0xED, 0x7D, 0x6C, 0x8B, 0xEC, 0xA8, 0x35, 0xCC, 0xEC, 0xAD, 0xEC, -0xA4, 0xF5, 0x98, 0xC2, 0xC0, 0xF0, 0x9E, 0xA2, +0x24, 0xF6, 0x90, 0xC2, 0xC0, 0xF0, 0x9E, 0xA2, 0x8E, 0xEB, 0x1E, 0x2B, 0x01, 0x6B, 0x6B, 0xEB, -0xA4, 0xF5, 0x79, 0xC2, 0x19, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, -0xD8, 0xA2, 0x1F, 0x6F, 0x84, 0xEB, 0xCA, 0x35, +0x24, 0xF6, 0x71, 0xC2, 0x19, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x24, 0xF6, +0xD0, 0xA2, 0x1F, 0x6F, 0x84, 0xEB, 0xCA, 0x35, 0xEC, 0xED, 0xAD, 0xEC, 0xEC, 0xEC, 0x88, 0x35, 0x7D, 0x6C, 0x8B, 0xEC, 0xCC, 0xEC, 0xAD, 0xEC, -0xA4, 0xF5, 0x98, 0xC2, 0xC0, 0xF0, 0x9E, 0xA2, -0x8E, 0xEB, 0x02, 0x2B, 0xA4, 0xF5, 0x99, 0xC2, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xA4, 0xF5, 0x78, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, +0x24, 0xF6, 0x90, 0xC2, 0xC0, 0xF0, 0x9E, 0xA2, +0x8E, 0xEB, 0x02, 0x2B, 0x24, 0xF6, 0x91, 0xC2, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x24, 0xF6, 0x70, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x1A, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xA4, 0xF5, 0x58, 0xC0, 0x00, 0x18, 0x10, 0xE6, -0x04, 0xD2, 0x04, 0x93, 0xA4, 0xF5, 0x5C, 0x98, +0x24, 0xF6, 0x50, 0xC0, 0x00, 0x18, 0xB5, 0xE7, +0x04, 0xD2, 0x04, 0x93, 0x24, 0xF6, 0x54, 0x98, 0x6E, 0xEA, 0x03, 0x22, 0x04, 0x94, 0x00, 0x18, -0x31, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA4, 0xF5, 0x98, 0xA2, 0x02, 0x6B, -0x8D, 0xEB, 0xA4, 0xF5, 0x78, 0xC2, 0x0D, 0x97, +0xD6, 0xE7, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x24, 0xF6, 0x90, 0xA2, 0x02, 0x6B, +0x8D, 0xEB, 0x24, 0xF6, 0x70, 0xC2, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x68, 0x44, 0xC8, 0x4B, 0x4C, 0xEB, 0x20, 0x5B, 0x05, 0x67, 0x03, 0x60, 0x80, 0x18, -0x67, 0x46, 0x91, 0x11, 0x2F, 0x74, 0x00, 0xF1, -0x1B, 0x60, 0x30, 0x5C, 0x5D, 0x60, 0x1D, 0x74, -0xE0, 0xF0, 0x0A, 0x60, 0x1E, 0x5C, 0x2D, 0x60, -0x14, 0x74, 0x80, 0xF1, 0x04, 0x60, 0x15, 0x5C, -0x12, 0x60, 0x09, 0x74, 0xA0, 0xF0, 0x1C, 0x60, -0x0A, 0x5C, 0x06, 0x60, 0xA0, 0xF0, 0x0C, 0x24, -0x01, 0x74, 0xA0, 0xF0, 0x0D, 0x60, 0x64, 0x11, -0x0B, 0x74, 0xA0, 0xF0, 0x15, 0x60, 0x10, 0x74, -0xA0, 0xF0, 0x16, 0x60, 0x5D, 0x11, 0x17, 0x74, -0xA0, 0xF0, 0x1E, 0x60, 0x18, 0x5C, 0x07, 0x60, -0x15, 0x74, 0xA0, 0xF0, 0x11, 0x60, 0x16, 0x74, -0xA0, 0xF0, 0x12, 0x60, 0x51, 0x11, 0x19, 0x74, -0xA0, 0xF0, 0x1A, 0x60, 0x19, 0x5C, 0xA0, 0xF0, -0x13, 0x61, 0x1C, 0x74, 0xA0, 0xF0, 0x18, 0x60, -0x47, 0x11, 0x24, 0x74, 0xC0, 0xF0, 0x0C, 0x60, -0x25, 0x5C, 0x13, 0x60, 0x20, 0x74, 0xA0, 0xF0, -0x1F, 0x60, 0x21, 0x5C, 0x07, 0x60, 0x1E, 0x74, -0xA0, 0xF0, 0x16, 0x60, 0x1F, 0x74, 0xA0, 0xF0, -0x0F, 0x60, 0x36, 0x11, 0x21, 0x74, 0x40, 0xF1, -0x06, 0x60, 0x23, 0x74, 0x40, 0xF1, 0x03, 0x60, -0x2F, 0x11, 0x2B, 0x74, 0xA0, 0xF0, 0x1C, 0x60, -0x2C, 0x5C, 0x07, 0x60, 0x25, 0x74, 0x20, 0xF1, -0x1A, 0x60, 0x27, 0x74, 0xA0, 0xF0, 0x10, 0x60, -0x23, 0x11, 0x2D, 0x74, 0xA0, 0xF0, 0x18, 0x60, -0x2E, 0x5C, 0xA0, 0xF0, 0x19, 0x60, 0xB0, 0x10, -0x6C, 0x74, 0xE0, 0xF0, 0x1D, 0x60, 0x6D, 0x5C, -0x2E, 0x60, 0x63, 0x74, 0xE0, 0xF0, 0x04, 0x60, -0x64, 0x5C, 0x13, 0x60, 0x60, 0x74, 0xA0, 0xF0, -0x17, 0x60, 0x61, 0x5C, 0x07, 0x60, 0x30, 0x74, -0xA0, 0xF0, 0x0E, 0x60, 0x31, 0x74, 0x80, 0xF0, -0x0B, 0x60, 0x06, 0x11, 0x61, 0x74, 0xC0, 0xF0, -0x0B, 0x60, 0x62, 0x74, 0xC0, 0xF0, 0x0C, 0x60, -0xFF, 0x10, 0x66, 0x74, 0xC0, 0xF0, 0x10, 0x60, -0x67, 0x5C, 0x07, 0x60, 0x64, 0x74, 0xA0, 0xF0, -0x03, 0x60, 0x65, 0x74, 0xA0, 0xF0, 0x04, 0x60, -0xF3, 0x10, 0x68, 0x74, 0xC0, 0xF0, 0x0C, 0x60, -0x68, 0x5C, 0xC0, 0xF0, 0x05, 0x61, 0x69, 0x74, -0xC0, 0xF0, 0x0A, 0x60, 0xE9, 0x10, 0x72, 0x74, -0xC0, 0xF0, 0x0E, 0x60, 0x73, 0x5C, 0x13, 0x60, -0x6F, 0x74, 0x80, 0xF0, 0x1D, 0x60, 0x70, 0x5C, -0x07, 0x60, 0x6D, 0x74, 0x80, 0xF0, 0x10, 0x60, -0x6E, 0x74, 0x80, 0xF0, 0x11, 0x60, 0xD8, 0x10, -0x70, 0x74, 0x80, 0xF0, 0x15, 0x60, 0x71, 0x74, -0x80, 0xF0, 0x16, 0x60, 0xD1, 0x10, 0xC3, 0x74, -0xC0, 0xF0, 0x0A, 0x60, 0xC4, 0x5C, 0x06, 0x60, -0xBA, 0x74, 0xA0, 0xF0, 0x15, 0x60, 0xBB, 0x74, -0x13, 0x60, 0xC6, 0x10, 0xCD, 0x74, 0xA0, 0xF0, -0x17, 0x60, 0xD1, 0x74, 0xA0, 0xF0, 0x18, 0x60, -0xCA, 0x74, 0xA0, 0xF0, 0x0D, 0x60, 0xBC, 0x10, -0x85, 0x67, 0x80, 0x18, 0xD0, 0x20, 0xCB, 0x10, -0x85, 0x67, 0x80, 0x18, 0x9A, 0x23, 0xC7, 0x10, -0x85, 0x67, 0x00, 0x18, 0x63, 0xF2, 0xC3, 0x10, -0x85, 0x67, 0x80, 0x18, 0x0B, 0x00, 0xBF, 0x10, -0x85, 0x67, 0x80, 0x18, 0x85, 0x62, 0xBB, 0x10, -0x85, 0x67, 0x80, 0x18, 0x13, 0x64, 0xB7, 0x10, -0x85, 0x67, 0x80, 0x18, 0xAE, 0x63, 0xB3, 0x10, -0x85, 0x67, 0x80, 0x18, 0xC6, 0x63, 0xAF, 0x10, -0x85, 0x67, 0x80, 0x18, 0x58, 0x6B, 0xAB, 0x10, -0x85, 0x67, 0x80, 0x18, 0x9D, 0x6A, 0xA7, 0x10, -0x85, 0x67, 0x80, 0x18, 0xD2, 0x63, 0xA3, 0x10, -0x85, 0x67, 0x80, 0x18, 0x9E, 0x6A, 0x9F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x9F, 0x6A, 0x9B, 0x10, -0x85, 0x67, 0x00, 0x18, 0xBF, 0xDC, 0x97, 0x10, -0x85, 0x67, 0x00, 0x18, 0xA5, 0xDC, 0x93, 0x10, -0x85, 0x67, 0x80, 0x18, 0x68, 0x23, 0x8F, 0x10, -0x85, 0x67, 0x80, 0x18, 0xD8, 0x20, 0x8B, 0x10, -0x85, 0x67, 0x80, 0x18, 0x96, 0x62, 0x87, 0x10, -0x85, 0x67, 0x80, 0x18, 0x8D, 0x62, 0x83, 0x10, -0x85, 0x67, 0x00, 0x18, 0xF6, 0xDC, 0x7F, 0x10, -0x85, 0x67, 0x00, 0x18, 0xC6, 0xC1, 0x7B, 0x10, -0x85, 0x67, 0x80, 0x18, 0xE1, 0x20, 0x77, 0x10, -0x85, 0x67, 0x80, 0x18, 0xFC, 0x26, 0x73, 0x10, -0x85, 0x67, 0x80, 0x18, 0xC3, 0x27, 0x6F, 0x10, -0x85, 0x67, 0x80, 0x18, 0xF8, 0x27, 0x6B, 0x10, -0x85, 0x67, 0x80, 0x18, 0xB4, 0x5E, 0x67, 0x10, -0x85, 0x67, 0x80, 0x18, 0xC9, 0x5E, 0x63, 0x10, -0x85, 0x67, 0x80, 0x18, 0xCA, 0x5E, 0x5F, 0x10, -0x85, 0x67, 0x80, 0x18, 0xB4, 0x61, 0x5B, 0x10, -0x85, 0x67, 0x80, 0x18, 0xD7, 0x5E, 0x57, 0x10, -0x85, 0x67, 0x80, 0x18, 0xE6, 0x5E, 0x53, 0x10, -0x85, 0x67, 0x80, 0x18, 0xF2, 0x5E, 0x4F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x20, 0x5F, 0x4B, 0x10, -0x85, 0x67, 0x80, 0x18, 0xAC, 0x61, 0x47, 0x10, -0x85, 0x67, 0x80, 0x18, 0xA7, 0x61, 0x43, 0x10, -0x85, 0x67, 0x80, 0x18, 0xA2, 0x61, 0x3F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x9D, 0x61, 0x3B, 0x10, -0x85, 0x67, 0x80, 0x18, 0x91, 0x61, 0x37, 0x10, -0x85, 0x67, 0x80, 0x18, 0x8C, 0x61, 0x33, 0x10, -0x85, 0x67, 0x80, 0x18, 0x2C, 0x61, 0x2F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x27, 0x61, 0x2B, 0x10, -0x85, 0x67, 0x80, 0x18, 0x22, 0x61, 0x27, 0x10, -0x85, 0x67, 0x80, 0x18, 0x86, 0x00, 0x23, 0x10, -0x85, 0x67, 0x00, 0x18, 0x80, 0xDC, 0x1F, 0x10, -0x85, 0x67, 0x80, 0x18, 0xF4, 0x20, 0x1B, 0x10, -0x85, 0x67, 0x00, 0x18, 0x06, 0xF4, 0x17, 0x10, -0x85, 0x67, 0x80, 0x18, 0x68, 0x63, 0x13, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, -0x01, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0x0E, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x40, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xA0, 0xF1, 0x40, 0xA0, 0xA0, 0xF1, -0x61, 0xA0, 0x4E, 0xEB, 0x29, 0x23, 0x67, 0x42, -0x25, 0x4B, 0x6C, 0x33, 0x0D, 0xE3, 0x4C, 0x32, -0x80, 0xA3, 0x60, 0xF1, 0xA1, 0x42, 0xB5, 0xE0, -0x80, 0x18, 0x04, 0x24, 0xA0, 0xF1, 0x40, 0xA0, -0x01, 0x4A, 0xA0, 0xF1, 0x40, 0xC0, 0xA0, 0xF1, -0x60, 0xA0, 0xA0, 0xF1, 0x41, 0xA0, 0x6E, 0xEA, -0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, 0x02, 0x6B, -0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF1, -0x60, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, -0xA0, 0xF1, 0x60, 0xC2, 0x80, 0x18, 0x7F, 0x21, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0x22, 0xF6, -0x6A, 0xA0, 0x7F, 0x6C, 0xA0, 0xF0, 0xA4, 0x43, -0xB4, 0x35, 0x09, 0xE5, 0xA0, 0xF0, 0x4A, 0xA2, -0x8C, 0xEA, 0x20, 0x2A, 0x74, 0x33, 0x09, 0xE3, -0x22, 0xF5, 0x92, 0xA2, 0xA2, 0x67, 0x22, 0xF5, -0x13, 0x4D, 0x80, 0x18, 0x04, 0x24, 0x22, 0xF6, -0x4A, 0xA0, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF7, -0x9C, 0x9C, 0x54, 0x33, 0x0D, 0xE3, 0x22, 0xF5, -0xB0, 0xA3, 0x54, 0x32, 0x41, 0xE0, 0xA0, 0xC4, -0x22, 0xF5, 0x91, 0xA3, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF7, 0x60, 0x9B, 0x80, 0xC3, 0x22, 0xF5, -0x8A, 0x40, 0x34, 0x10, 0x01, 0x72, 0x34, 0x61, -0x74, 0x33, 0x0D, 0xE3, 0x22, 0xF5, 0x4B, 0xA3, -0xFF, 0x72, 0x0E, 0x61, 0xB5, 0xE0, 0x22, 0xF5, -0x8C, 0xA3, 0x7F, 0x4D, 0x2B, 0x4D, 0x80, 0x18, -0x15, 0x23, 0x22, 0xF6, 0x6A, 0xA0, 0x74, 0x33, -0x01, 0xE3, 0x22, 0xF5, 0x52, 0xC0, 0x04, 0x10, -0x01, 0x6A, 0x4B, 0xEA, 0x22, 0xF5, 0x52, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x22, 0xF6, 0x6A, 0xA2, 0x30, 0xF0, 0x20, 0x6D, -0x63, 0xF7, 0xBC, 0x9D, 0x74, 0x34, 0x51, 0xE4, -0x22, 0xF5, 0xD0, 0xA4, 0x74, 0x33, 0x69, 0xE2, -0xC0, 0xC5, 0x22, 0xF5, 0xB1, 0xA4, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF7, 0x80, 0x9C, 0xA0, 0xC4, -0x22, 0xF5, 0x8A, 0x42, 0x80, 0x18, 0x77, 0x22, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0x22, 0xF6, -0x6A, 0xA0, 0x22, 0xF6, 0x4B, 0xA0, 0x6E, 0xEA, -0x42, 0x22, 0xA0, 0xF6, 0x42, 0xA8, 0x09, 0xF6, -0x00, 0x72, 0x10, 0x60, 0xA0, 0xF6, 0x82, 0xA0, -0xA0, 0xF6, 0x63, 0xA0, 0xAE, 0x44, 0x6E, 0xED, -0x09, 0x25, 0x09, 0xF7, 0x01, 0x72, 0x06, 0x60, -0x09, 0xF7, 0x00, 0x72, 0x03, 0x60, 0xFF, 0x4C, -0x8E, 0xEB, 0x0D, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA0, 0xF0, 0x44, 0x9B, -0x04, 0x6C, 0x8D, 0xEA, 0x02, 0x6C, 0x8D, 0xEA, -0xA0, 0xF0, 0x44, 0xDB, 0x20, 0x10, 0x80, 0x18, -0xF4, 0x24, 0x22, 0xF6, 0x4A, 0xA0, 0x01, 0x4A, -0x22, 0xF6, 0x4A, 0xC0, 0x22, 0xF6, 0x6A, 0xA0, -0x22, 0xF6, 0x4B, 0xA0, 0x6E, 0xEA, 0x06, 0x22, -0xA0, 0xF0, 0x44, 0x98, 0x02, 0x6B, 0x6D, 0xEA, -0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x22, 0xF6, 0x6A, 0xA2, -0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, 0x22, 0xF6, -0x6A, 0xC2, 0x80, 0x18, 0x0B, 0x21, 0x05, 0x97, +0x73, 0x46, 0x9F, 0x11, 0x30, 0x74, 0x20, 0xF1, +0x05, 0x60, 0x31, 0x5C, 0x60, 0x60, 0x1D, 0x74, +0xE0, 0xF0, 0x10, 0x60, 0x1E, 0x5C, 0x2D, 0x60, +0x14, 0x74, 0x80, 0xF1, 0x12, 0x60, 0x15, 0x5C, +0x12, 0x60, 0x09, 0x74, 0xC0, 0xF0, 0x02, 0x60, +0x0A, 0x5C, 0x06, 0x60, 0xA0, 0xF0, 0x12, 0x24, +0x01, 0x74, 0xA0, 0xF0, 0x13, 0x60, 0x72, 0x11, +0x0B, 0x74, 0xA0, 0xF0, 0x1B, 0x60, 0x10, 0x74, +0xA0, 0xF0, 0x1C, 0x60, 0x6B, 0x11, 0x17, 0x74, +0xC0, 0xF0, 0x04, 0x60, 0x18, 0x5C, 0x07, 0x60, +0x15, 0x74, 0xA0, 0xF0, 0x17, 0x60, 0x16, 0x74, +0xA0, 0xF0, 0x18, 0x60, 0x5F, 0x11, 0x19, 0x74, +0xC0, 0xF0, 0x00, 0x60, 0x19, 0x5C, 0xA0, 0xF0, +0x19, 0x61, 0x1C, 0x74, 0xA0, 0xF0, 0x1E, 0x60, +0x55, 0x11, 0x25, 0x74, 0x60, 0xF1, 0x05, 0x60, +0x26, 0x5C, 0x16, 0x60, 0x20, 0x74, 0xC0, 0xF0, +0x05, 0x60, 0x21, 0x5C, 0x07, 0x60, 0x1E, 0x74, +0xA0, 0xF0, 0x1C, 0x60, 0x1F, 0x74, 0xA0, 0xF0, +0x15, 0x60, 0x44, 0x11, 0x23, 0x74, 0x40, 0xF1, +0x14, 0x60, 0x24, 0x5C, 0xA0, 0xF0, 0x1E, 0x60, +0x21, 0x74, 0x40, 0xF1, 0x0E, 0x60, 0x3A, 0x11, +0x2C, 0x74, 0xC0, 0xF0, 0x03, 0x60, 0x2D, 0x5C, +0x07, 0x60, 0x27, 0x74, 0xA0, 0xF0, 0x16, 0x60, +0x2B, 0x74, 0xA0, 0xF0, 0x17, 0x60, 0x2E, 0x11, +0x2E, 0x74, 0xA0, 0xF0, 0x1F, 0x60, 0x2F, 0x5C, +0xC0, 0xF0, 0x00, 0x60, 0xB7, 0x10, 0x6D, 0x74, +0xC0, 0xF0, 0x10, 0x60, 0x6E, 0x5C, 0x2E, 0x60, +0x64, 0x74, 0xC0, 0xF0, 0x03, 0x60, 0x65, 0x5C, +0x13, 0x60, 0x61, 0x74, 0xC0, 0xF0, 0x1A, 0x60, +0x62, 0x5C, 0x07, 0x60, 0x31, 0x74, 0x80, 0xF0, +0x11, 0x60, 0x60, 0x74, 0xA0, 0xF0, 0x12, 0x60, +0x11, 0x11, 0x62, 0x74, 0xC0, 0xF0, 0x12, 0x60, +0x63, 0x74, 0xC0, 0xF0, 0x13, 0x60, 0x0A, 0x11, +0x67, 0x74, 0xC0, 0xF0, 0x17, 0x60, 0x68, 0x5C, +0x07, 0x60, 0x65, 0x74, 0xA0, 0xF0, 0x0A, 0x60, +0x66, 0x74, 0xC0, 0xF0, 0x0B, 0x60, 0xFE, 0x10, +0x69, 0x74, 0xC0, 0xF0, 0x13, 0x60, 0x69, 0x5C, +0xC0, 0xF0, 0x0C, 0x61, 0x6C, 0x74, 0xC0, 0xF0, +0x11, 0x60, 0xF4, 0x10, 0xBA, 0x74, 0xC0, 0xF0, +0x19, 0x60, 0xBB, 0x5C, 0x16, 0x60, 0x70, 0x74, +0xA0, 0xF0, 0x04, 0x60, 0x71, 0x5C, 0x07, 0x60, +0x6E, 0x74, 0x80, 0xF0, 0x17, 0x60, 0x6F, 0x74, +0x80, 0xF0, 0x18, 0x60, 0xE3, 0x10, 0x72, 0x74, +0xC0, 0xF0, 0x00, 0x60, 0x72, 0x5C, 0x80, 0xF0, +0x19, 0x61, 0x74, 0x74, 0xA0, 0xF0, 0x1E, 0x60, +0xD9, 0x10, 0xCA, 0x74, 0xC0, 0xF0, 0x02, 0x60, +0xCB, 0x5C, 0x06, 0x60, 0xBB, 0x74, 0x16, 0x60, +0xC3, 0x74, 0xC0, 0xF0, 0x0B, 0x60, 0xCE, 0x10, +0xD1, 0x74, 0xA0, 0xF0, 0x1F, 0x60, 0xD8, 0x74, +0xC0, 0xF0, 0x00, 0x60, 0xCD, 0x74, 0xA0, 0xF0, +0x15, 0x60, 0xC4, 0x10, 0x85, 0x67, 0x80, 0x18, +0xB7, 0x20, 0xD3, 0x10, 0x85, 0x67, 0x80, 0x18, +0xA2, 0x23, 0xCF, 0x10, 0x85, 0x67, 0x00, 0x18, +0x08, 0xF4, 0xCB, 0x10, 0x85, 0x67, 0x80, 0x18, +0x0B, 0x00, 0xC7, 0x10, 0x85, 0x67, 0x80, 0x18, +0x10, 0x64, 0xC3, 0x10, 0x85, 0x67, 0x80, 0x18, +0x9E, 0x65, 0xBF, 0x10, 0x85, 0x67, 0x80, 0x18, +0x39, 0x65, 0xBB, 0x10, 0x85, 0x67, 0x80, 0x18, +0x51, 0x65, 0xB7, 0x10, 0x85, 0x67, 0x80, 0x18, +0x40, 0x6D, 0xB3, 0x10, 0x85, 0x67, 0x80, 0x18, +0x85, 0x6C, 0xAF, 0x10, 0x85, 0x67, 0x80, 0x18, +0x5D, 0x65, 0xAB, 0x10, 0x85, 0x67, 0x80, 0x18, +0x86, 0x6C, 0xA7, 0x10, 0x85, 0x67, 0x80, 0x18, +0x87, 0x6C, 0xA3, 0x10, 0x85, 0x67, 0x00, 0x18, +0x33, 0xDE, 0x9F, 0x10, 0x85, 0x67, 0x00, 0x18, +0x19, 0xDE, 0x9B, 0x10, 0x85, 0x67, 0x80, 0x18, +0x68, 0x23, 0x97, 0x10, 0x85, 0x67, 0x80, 0x18, +0xBF, 0x20, 0x93, 0x10, 0x85, 0x67, 0x80, 0x18, +0x21, 0x64, 0x8F, 0x10, 0x85, 0x67, 0x80, 0x18, +0x18, 0x64, 0x8B, 0x10, 0x85, 0x67, 0x00, 0x18, +0x6A, 0xDE, 0x87, 0x10, 0x85, 0x67, 0x00, 0x18, +0xC6, 0xC1, 0x83, 0x10, 0x85, 0x67, 0x80, 0x18, +0xC8, 0x20, 0x7F, 0x10, 0x85, 0x67, 0x80, 0x18, +0x0B, 0x27, 0x7B, 0x10, 0x85, 0x67, 0x80, 0x18, +0xD2, 0x27, 0x77, 0x10, 0x85, 0x67, 0x80, 0x18, +0x07, 0x28, 0x73, 0x10, 0x85, 0x67, 0x80, 0x18, +0xF5, 0x5F, 0x6F, 0x10, 0x85, 0x67, 0x80, 0x18, +0x0A, 0x60, 0x6B, 0x10, 0x85, 0x67, 0x80, 0x18, +0x0B, 0x60, 0x67, 0x10, 0x85, 0x67, 0x80, 0x18, +0xFF, 0x62, 0x63, 0x10, 0x85, 0x67, 0x80, 0x18, +0x18, 0x60, 0x5F, 0x10, 0x85, 0x67, 0x80, 0x18, +0x27, 0x60, 0x5B, 0x10, 0x85, 0x67, 0x80, 0x18, +0x33, 0x60, 0x57, 0x10, 0x85, 0x67, 0x80, 0x18, +0x61, 0x60, 0x53, 0x10, 0x85, 0x67, 0x80, 0x18, +0xF7, 0x62, 0x4F, 0x10, 0x85, 0x67, 0x80, 0x18, +0xF2, 0x62, 0x4B, 0x10, 0x85, 0x67, 0x80, 0x18, +0xED, 0x62, 0x47, 0x10, 0x85, 0x67, 0x80, 0x18, +0xE8, 0x62, 0x43, 0x10, 0x85, 0x67, 0x80, 0x18, +0xDC, 0x62, 0x3F, 0x10, 0x85, 0x67, 0x80, 0x18, +0xD7, 0x62, 0x3B, 0x10, 0x85, 0x67, 0x80, 0x18, +0x77, 0x62, 0x37, 0x10, 0x85, 0x67, 0x80, 0x18, +0x72, 0x62, 0x33, 0x10, 0x85, 0x67, 0x80, 0x18, +0x6D, 0x62, 0x2F, 0x10, 0x85, 0x67, 0x80, 0x18, +0x68, 0x62, 0x2B, 0x10, 0x85, 0x67, 0x80, 0x18, +0x86, 0x00, 0x27, 0x10, 0x85, 0x67, 0x00, 0x18, +0xF4, 0xDD, 0x23, 0x10, 0x85, 0x67, 0x80, 0x18, +0xDB, 0x20, 0x1F, 0x10, 0x85, 0x67, 0x00, 0x18, +0xAB, 0xF5, 0x1B, 0x10, 0x85, 0x67, 0x80, 0x18, +0x53, 0x23, 0x17, 0x10, 0x85, 0x67, 0x80, 0x18, +0xF3, 0x64, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x74, 0x9A, 0x01, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, 0x64, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x64, 0xDA, 0x0E, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x40, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF7, 0x6C, 0x9B, 0x30, 0xF0, 0x20, 0x68, -0x83, 0xF7, 0x10, 0x98, 0xE0, 0x9B, 0xFF, 0x6A, -0x4C, 0xEC, 0x0C, 0xEF, 0x08, 0x5C, 0x4C, 0xED, -0x4C, 0xEE, 0xE0, 0xDB, 0x46, 0x60, 0xB0, 0x75, -0x2E, 0x61, 0xB2, 0x76, 0x13, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF7, 0xB4, 0x9A, 0x01, 0x6A, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xA0, 0xF1, +0x41, 0xA0, 0xA0, 0xF1, 0x62, 0xA0, 0x4E, 0xEB, +0x29, 0x23, 0x67, 0x42, 0x25, 0x4B, 0x6C, 0x33, +0x0D, 0xE3, 0x4C, 0x32, 0x81, 0xA3, 0x55, 0xE0, +0x60, 0xF1, 0x02, 0x4D, 0x80, 0x18, 0x0C, 0x24, +0xA0, 0xF1, 0x41, 0xA0, 0x01, 0x4A, 0xA0, 0xF1, +0x41, 0xC0, 0xA0, 0xF1, 0x61, 0xA0, 0xA0, 0xF1, +0x42, 0xA0, 0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, +0x44, 0x98, 0x02, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, +0x44, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF1, 0x61, 0xA2, 0x08, 0x6C, +0x8E, 0xEB, 0x02, 0x2B, 0xA0, 0xF1, 0x61, 0xC2, +0x80, 0x18, 0x66, 0x21, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x22, 0xF6, 0x6C, 0xA0, 0x7F, 0x6C, +0xA0, 0xF0, 0xA4, 0x43, 0xB4, 0x35, 0x09, 0xE5, +0xA0, 0xF0, 0x4C, 0xA2, 0x8C, 0xEA, 0x20, 0x2A, +0x74, 0x33, 0x09, 0xE3, 0x22, 0xF5, 0x94, 0xA2, +0xA2, 0x67, 0x22, 0xF5, 0x15, 0x4D, 0x80, 0x18, +0x0C, 0x24, 0x22, 0xF6, 0x4C, 0xA0, 0x30, 0xF0, +0x20, 0x6C, 0x83, 0xF7, 0x94, 0x9C, 0x54, 0x33, +0x0D, 0xE3, 0x22, 0xF5, 0xB2, 0xA3, 0x54, 0x32, +0x41, 0xE0, 0xA0, 0xC4, 0x22, 0xF5, 0x93, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, 0x78, 0x9B, +0x80, 0xC3, 0x22, 0xF5, 0x8C, 0x40, 0x34, 0x10, +0x01, 0x72, 0x34, 0x61, 0x74, 0x33, 0x0D, 0xE3, +0x22, 0xF5, 0x4D, 0xA3, 0xFF, 0x72, 0x0E, 0x61, +0xB5, 0xE0, 0x22, 0xF5, 0x8E, 0xA3, 0x7F, 0x4D, +0x2D, 0x4D, 0x80, 0x18, 0x00, 0x23, 0x22, 0xF6, +0x6C, 0xA0, 0x74, 0x33, 0x01, 0xE3, 0x22, 0xF5, +0x54, 0xC0, 0x04, 0x10, 0x01, 0x6A, 0x4B, 0xEA, +0x22, 0xF5, 0x54, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x22, 0xF6, 0x6C, 0xA2, +0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF7, 0xB4, 0x9D, +0x74, 0x34, 0x51, 0xE4, 0x22, 0xF5, 0xD2, 0xA4, +0x74, 0x33, 0x69, 0xE2, 0xC0, 0xC5, 0x22, 0xF5, +0xB3, 0xA4, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF7, +0x98, 0x9C, 0xA0, 0xC4, 0x22, 0xF5, 0x8C, 0x42, +0x80, 0x18, 0x62, 0x22, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x22, 0xF6, 0x6C, 0xA0, 0x22, 0xF6, +0x4D, 0xA0, 0x6E, 0xEA, 0x42, 0x22, 0xA0, 0xF6, +0x44, 0xA8, 0x09, 0xF6, 0x00, 0x72, 0x10, 0x60, +0xA0, 0xF6, 0x84, 0xA0, 0xA0, 0xF6, 0x65, 0xA0, +0xAE, 0x44, 0x6E, 0xED, 0x09, 0x25, 0x09, 0xF7, +0x01, 0x72, 0x06, 0x60, 0x09, 0xF7, 0x00, 0x72, +0x03, 0x60, 0xFF, 0x4C, 0x8E, 0xEB, 0x0D, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0xA0, 0xF0, 0x44, 0x9B, 0x04, 0x6C, 0x8D, 0xEA, +0x02, 0x6C, 0x8D, 0xEA, 0xA0, 0xF0, 0x44, 0xDB, +0x20, 0x10, 0x80, 0x18, 0x03, 0x25, 0x22, 0xF6, +0x4C, 0xA0, 0x01, 0x4A, 0x22, 0xF6, 0x4C, 0xC0, +0x22, 0xF6, 0x6C, 0xA0, 0x22, 0xF6, 0x4D, 0xA0, +0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, +0x02, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x22, 0xF6, 0x6C, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, +0x02, 0x2B, 0x22, 0xF6, 0x6C, 0xC2, 0x80, 0x18, +0xF2, 0x20, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF7, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x68, 0xA3, 0xF7, 0x08, 0x98, +0xE0, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0xEF, +0x08, 0x5C, 0x4C, 0xED, 0x4C, 0xEE, 0xE0, 0xDB, +0x46, 0x60, 0xB0, 0x75, 0x2E, 0x61, 0xB2, 0x76, +0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, +0xAC, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, +0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, +0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, +0xCC, 0xEC, 0x80, 0xDD, 0x80, 0x9B, 0x4E, 0x10, +0xB1, 0x76, 0x80, 0xF0, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF7, 0xAC, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, 0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, 0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, 0xCC, 0xEC, 0x80, 0xDD, -0x80, 0x9B, 0x4E, 0x10, 0xB1, 0x76, 0x80, 0xF0, -0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, -0xB4, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, -0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, -0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, -0xCC, 0xEC, 0x80, 0xDD, 0x80, 0x9B, 0x4F, 0xEA, -0x8C, 0xEA, 0x40, 0xDB, 0x7B, 0x10, 0xA0, 0x75, -0x7D, 0x61, 0xA1, 0x76, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF7, 0x54, 0x9A, 0x01, 0x6B, -0x64, 0xEC, 0xA0, 0x9A, 0x51, 0x10, 0xA2, 0x76, -0x6F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, -0x54, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, -0x5A, 0x10, 0xE8, 0x44, 0x4C, 0xEF, 0x08, 0x5F, -0xE0, 0x6A, 0x65, 0x60, 0xB0, 0x75, 0x35, 0x61, -0xB2, 0x76, 0x18, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF7, 0x58, 0x9A, 0x01, 0x6E, 0xA6, 0x67, -0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, -0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, -0xE0, 0x37, 0xE0, 0x37, 0xEF, 0xEF, 0xAC, 0xEF, -0xE0, 0xDA, 0x40, 0x9B, 0xC4, 0xEC, 0x86, 0x67, -0x4D, 0xEC, 0x19, 0x10, 0xB1, 0x76, 0x44, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x58, 0x9A, +0x80, 0x9B, 0x4F, 0xEA, 0x8C, 0xEA, 0x40, 0xDB, +0x7B, 0x10, 0xA0, 0x75, 0x7D, 0x61, 0xA1, 0x76, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, +0x4C, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, +0x51, 0x10, 0xA2, 0x76, 0x6F, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF7, 0x4C, 0x9A, 0x01, 0x6B, +0x64, 0xEC, 0xA0, 0x9A, 0x5A, 0x10, 0xE8, 0x44, +0x4C, 0xEF, 0x08, 0x5F, 0xE0, 0x6A, 0x65, 0x60, +0xB0, 0x75, 0x35, 0x61, 0xB2, 0x76, 0x18, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x50, 0x9A, 0x01, 0x6E, 0xA6, 0x67, 0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, 0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, 0xE0, 0x37, 0xE0, 0x37, 0xEF, 0xEF, 0xAC, 0xEF, 0xE0, 0xDA, 0x40, 0x9B, -0xC4, 0xEC, 0xCF, 0xEC, 0x4C, 0xEC, 0x80, 0xDB, -0x29, 0x10, 0xA0, 0x75, 0x2B, 0x61, 0xA1, 0x76, -0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, -0x58, 0x9A, 0x01, 0x6B, 0x64, 0xEF, 0xA0, 0x9A, -0x00, 0xF6, 0x60, 0x34, 0x8F, 0xEC, 0xAC, 0xEC, -0x80, 0xDA, 0x80, 0x9A, 0x60, 0x33, 0x60, 0x33, -0x8D, 0xEB, 0x13, 0x10, 0xA2, 0x76, 0x14, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x58, 0x9A, -0x01, 0x6B, 0x64, 0xEF, 0xA0, 0x9A, 0x00, 0xF6, -0x60, 0x34, 0x8F, 0xEC, 0xAC, 0xEC, 0x80, 0xDA, -0x80, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x6F, 0xEB, -0x8C, 0xEB, 0x60, 0xDA, 0xF0, 0x6A, 0x03, 0x10, -0xE2, 0x6A, 0x01, 0x10, 0xE1, 0x6A, 0x01, 0x90, -0x01, 0x63, 0x20, 0xE8, 0xFF, 0x6B, 0x6C, 0xEC, -0x08, 0x5C, 0xFF, 0x63, 0x18, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF7, 0x5C, 0x9A, 0x01, 0x6D, +0xC4, 0xEC, 0x86, 0x67, 0x4D, 0xEC, 0x19, 0x10, +0xB1, 0x76, 0x44, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF7, 0x50, 0x9A, 0x01, 0x6E, 0xA6, 0x67, +0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, +0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, +0xE0, 0x37, 0xE0, 0x37, 0xEF, 0xEF, 0xAC, 0xEF, +0xE0, 0xDA, 0x40, 0x9B, 0xC4, 0xEC, 0xCF, 0xEC, +0x4C, 0xEC, 0x80, 0xDB, 0x29, 0x10, 0xA0, 0x75, +0x2B, 0x61, 0xA1, 0x76, 0x11, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF7, 0x50, 0x9A, 0x01, 0x6B, +0x64, 0xEF, 0xA0, 0x9A, 0x00, 0xF6, 0x60, 0x34, +0x8F, 0xEC, 0xAC, 0xEC, 0x80, 0xDA, 0x80, 0x9A, +0x60, 0x33, 0x60, 0x33, 0x8D, 0xEB, 0x13, 0x10, +0xA2, 0x76, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF7, 0x50, 0x9A, 0x01, 0x6B, 0x64, 0xEF, +0xA0, 0x9A, 0x00, 0xF6, 0x60, 0x34, 0x8F, 0xEC, +0xAC, 0xEC, 0x80, 0xDA, 0x80, 0x9A, 0x60, 0x33, +0x60, 0x33, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xDA, +0xF0, 0x6A, 0x03, 0x10, 0xE2, 0x6A, 0x01, 0x10, +0xE1, 0x6A, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0xFF, 0x63, +0x18, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, +0x54, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, +0x47, 0xEC, 0xAC, 0xEA, 0x37, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF7, 0x58, 0x9A, 0x40, 0xA2, +0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x30, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x4C, 0x9A, +0x1C, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, +0xE0, 0x6A, 0x27, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF7, 0x5C, 0x9A, 0x01, 0x6D, 0x40, 0xA2, +0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x1A, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x40, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, -0x37, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x40, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, -0xAC, 0xEA, 0x30, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF7, 0x54, 0x9A, 0x1C, 0x10, 0xF8, 0x4C, -0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x27, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x44, 0x9A, -0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, -0xAC, 0xEA, 0x1A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF7, 0x48, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, -0x47, 0xEC, 0xAC, 0xEA, 0x13, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF7, 0x58, 0x9A, 0x40, 0xA2, -0xA4, 0xEC, 0x85, 0x67, 0x6C, 0xEC, 0x4C, 0xEC, -0x5D, 0x67, 0x80, 0xC2, 0x40, 0xA2, 0x4C, 0xEB, -0x6B, 0xEA, 0xC0, 0xF7, 0x42, 0x32, 0x03, 0x10, -0xE4, 0x6A, 0x01, 0x10, 0xE6, 0x6A, 0x01, 0x63, +0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, +0x50, 0x9A, 0x40, 0xA2, 0xA4, 0xEC, 0x85, 0x67, +0x6C, 0xEC, 0x4C, 0xEC, 0x5D, 0x67, 0x80, 0xC2, +0x40, 0xA2, 0x4C, 0xEB, 0x6B, 0xEA, 0xC0, 0xF7, +0x42, 0x32, 0x03, 0x10, 0xE4, 0x6A, 0x01, 0x10, +0xE6, 0x6A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x6C, 0xED, +0x20, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, +0x54, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, +0x47, 0xEC, 0xCC, 0xEA, 0x48, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF7, 0x58, 0x9A, 0xC4, 0xEC, +0x86, 0x67, 0x40, 0xA2, 0x6C, 0xEA, 0xCC, 0xEA, +0xCE, 0xEA, 0x3B, 0x2A, 0x05, 0x25, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF7, 0xA4, 0x9A, 0x24, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x44, 0x9A, +0x29, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, +0xE0, 0x6A, 0x2E, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF7, 0x5C, 0x9A, 0x01, 0x6E, 0x40, 0xA2, +0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x23, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x40, 0x9A, +0xC4, 0xEC, 0x86, 0x67, 0x40, 0xA2, 0x6C, 0xEA, +0xCC, 0xEA, 0xCE, 0xEA, 0x16, 0x2A, 0x0A, 0x25, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0xA8, 0x9A, +0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, +0x40, 0xC5, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF7, 0x48, 0x9A, 0xA0, 0xA2, 0x8F, 0xEC, +0x6C, 0xEC, 0xAC, 0xEC, 0x80, 0xC2, 0xF0, 0x6A, +0x20, 0xE8, 0xE5, 0x6A, 0x20, 0xE8, 0xE4, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, -0x08, 0x5C, 0x6C, 0xED, 0x20, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF7, 0x5C, 0x9A, 0x01, 0x6E, -0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, -0x48, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x40, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0x40, 0xA2, -0x6C, 0xEA, 0xCC, 0xEA, 0xCE, 0xEA, 0x3B, 0x2A, -0x05, 0x25, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0xAC, 0x9A, 0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF7, 0x4C, 0x9A, 0x29, 0x10, 0xF8, 0x4C, -0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x2E, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x44, 0x9A, -0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, -0xCC, 0xEA, 0x23, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF7, 0x48, 0x9A, 0xC4, 0xEC, 0x86, 0x67, -0x40, 0xA2, 0x6C, 0xEA, 0xCC, 0xEA, 0xCE, 0xEA, -0x16, 0x2A, 0x0A, 0x25, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF7, 0xB0, 0x9A, 0x40, 0xA5, 0x6C, 0xEA, -0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC5, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x50, 0x9A, -0xA0, 0xA2, 0x8F, 0xEC, 0x6C, 0xEC, 0xAC, 0xEC, -0x80, 0xC2, 0xF0, 0x6A, 0x20, 0xE8, 0xE5, 0x6A, -0x20, 0xE8, 0xE4, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x0F, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x5C, 0x9A, -0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, -0xAC, 0xEA, 0x1F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF7, 0x40, 0x9A, 0x13, 0x10, 0xF8, 0x4C, -0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x16, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x44, 0x9A, -0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, -0xAC, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF7, 0x48, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, -0x67, 0xEC, 0x45, 0x67, 0x6E, 0xEA, 0xAC, 0xEA, +0x08, 0x5C, 0x0F, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF7, 0x54, 0x9A, 0x01, 0x6D, 0x40, 0xA2, +0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x1F, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x58, 0x9A, +0x13, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, +0xE0, 0x6A, 0x16, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF7, 0x5C, 0x9A, 0x01, 0x6D, 0x40, 0xA2, +0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x0B, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x40, 0x9A, +0x40, 0xA2, 0x4C, 0xEB, 0x67, 0xEC, 0x45, 0x67, +0x6E, 0xEA, 0xAC, 0xEA, 0x20, 0xE8, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, +0x08, 0x5C, 0x1A, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF7, 0x54, 0x9A, 0x01, 0x6E, 0x40, 0xA2, +0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x35, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x58, 0x9A, +0xC4, 0xEC, 0x86, 0x67, 0xA0, 0xA2, 0x6C, 0xED, +0xCC, 0xED, 0xCE, 0xED, 0x2A, 0x2D, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF7, 0x44, 0x9A, 0x1E, 0x10, +0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, +0x21, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, +0x5C, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, +0x47, 0xEC, 0xCC, 0xEA, 0x16, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF7, 0x40, 0x9A, 0xC4, 0xEC, +0x86, 0x67, 0xA0, 0xA2, 0x6C, 0xED, 0xCC, 0xED, +0xCE, 0xED, 0x0B, 0x2D, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF7, 0x48, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, +0x8C, 0xEB, 0x6E, 0xEC, 0x01, 0x5C, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x1A, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x5C, 0x9A, -0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, -0xCC, 0xEA, 0x35, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF7, 0x40, 0x9A, 0xC4, 0xEC, 0x86, 0x67, -0xA0, 0xA2, 0x6C, 0xED, 0xCC, 0xED, 0xCE, 0xED, -0x2A, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x4C, 0x9A, 0x1E, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, -0x08, 0x5C, 0xE0, 0x6A, 0x21, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF7, 0x44, 0x9A, 0x01, 0x6E, -0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, -0x16, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x48, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0xA0, 0xA2, -0x6C, 0xED, 0xCC, 0xED, 0xCE, 0xED, 0x0B, 0x2D, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x50, 0x9A, -0x40, 0xA2, 0x4C, 0xEB, 0x8C, 0xEB, 0x6E, 0xEC, -0x01, 0x5C, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x01, 0x72, 0xFF, 0xF7, -0x1F, 0x6C, 0xAC, 0xEC, 0x05, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x69, 0x04, 0x67, 0x2C, 0xE8, 0x90, 0x67, -0xA0, 0x6D, 0xA2, 0x6E, 0x80, 0x18, 0x54, 0x25, -0x90, 0x67, 0x80, 0x18, 0xB7, 0x25, 0x7D, 0x67, -0x50, 0xC3, 0x50, 0xA3, 0x09, 0x97, 0x07, 0x90, -0x2C, 0xEA, 0x08, 0x91, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0x91, 0x67, -0xAC, 0xE8, 0xA1, 0x6E, 0xA0, 0x6D, 0x80, 0x18, -0x54, 0x25, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, -0xDD, 0x25, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x6C, 0x9A, -0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF7, 0xB0, 0x9D, -0x40, 0x9B, 0xA2, 0x6E, 0xAC, 0xEA, 0x40, 0xDB, -0xFF, 0x6A, 0x4C, 0xEC, 0xA0, 0x6D, 0x80, 0x18, -0x54, 0x25, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0xB0, 0x6D, 0xB2, 0x6E, 0x80, 0x18, 0x54, 0x25, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0xB0, 0x6D, 0xB1, 0x6E, 0x80, 0x18, 0x54, 0x25, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, -0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, 0xA4, 0x72, -0x0C, 0x61, 0x90, 0x67, 0x80, 0x18, 0x0A, 0x26, -0x01, 0x72, 0x04, 0x61, 0x90, 0x67, 0x80, 0x18, -0x67, 0x26, 0x1F, 0x10, 0x90, 0x67, 0x00, 0x6D, -0x0D, 0x10, 0xA5, 0x72, 0x11, 0x61, 0x90, 0x67, -0x80, 0x18, 0x0A, 0x26, 0x01, 0x72, 0x04, 0x61, -0x90, 0x67, 0x80, 0x18, 0x67, 0x26, 0x18, 0x10, -0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x5C, 0x26, -0x90, 0x67, 0x80, 0x18, 0x67, 0x26, 0x14, 0x10, -0x90, 0x67, 0x80, 0x18, 0x22, 0x26, 0x01, 0x72, -0x07, 0x61, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, -0x5C, 0x26, 0x90, 0x67, 0x00, 0x6D, 0x06, 0x10, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x5C, 0x26, -0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x5C, 0x26, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xEE, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x87, 0xF3, -0x69, 0xA2, 0xFF, 0xF7, 0x1F, 0x69, 0x04, 0xD4, -0xAC, 0xE9, 0x05, 0xD6, 0x0B, 0x23, 0x87, 0xF3, -0x6A, 0xA2, 0x04, 0x23, 0x87, 0xF3, 0x87, 0xA2, -0xA5, 0x6D, 0x07, 0x10, 0x87, 0xF3, 0x87, 0xA2, -0xA4, 0x6D, 0x03, 0x10, 0x87, 0xF3, 0x87, 0xA2, -0xA3, 0x6D, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x80, 0x18, 0x7E, 0x26, 0x87, 0xF3, -0x4B, 0xA0, 0x7D, 0x22, 0x04, 0x94, 0xB1, 0x67, -0x80, 0x18, 0x45, 0x26, 0x87, 0xF3, 0x49, 0xA0, -0x0B, 0x22, 0x87, 0xF3, 0x4A, 0xA0, 0x04, 0x22, -0x87, 0xF3, 0x87, 0xA0, 0xA5, 0x6D, 0x07, 0x10, -0x87, 0xF3, 0x87, 0xA0, 0xA4, 0x6D, 0x03, 0x10, -0x87, 0xF3, 0x87, 0xA0, 0xA3, 0x6D, 0x80, 0x18, -0x7E, 0x26, 0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF4, -0x44, 0xA2, 0x01, 0x68, 0x5D, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF7, 0x54, 0x9A, 0x60, 0xA2, -0x10, 0x6A, 0x6C, 0xEA, 0x58, 0x2A, 0x04, 0x94, -0xB1, 0x67, 0x80, 0x18, 0x45, 0x26, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x87, 0xF3, -0x69, 0xA2, 0x0B, 0x23, 0x87, 0xF3, 0x6A, 0xA2, -0x04, 0x23, 0x87, 0xF3, 0x87, 0xA2, 0xA5, 0x6D, -0x07, 0x10, 0x87, 0xF3, 0x87, 0xA2, 0xA4, 0x6D, -0x03, 0x10, 0x87, 0xF3, 0x87, 0xA2, 0xA3, 0x6D, -0x80, 0x18, 0x7E, 0x26, 0xDC, 0x17, 0x04, 0x94, -0xB1, 0x67, 0x80, 0x18, 0x45, 0x26, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x87, 0xF3, -0x69, 0xA2, 0x0B, 0x23, 0x87, 0xF3, 0x6A, 0xA2, -0x04, 0x23, 0x87, 0xF3, 0x87, 0xA2, 0xA5, 0x6D, -0x07, 0x10, 0x87, 0xF3, 0x87, 0xA2, 0xA4, 0x6D, -0x03, 0x10, 0x87, 0xF3, 0x87, 0xA2, 0xA3, 0x6D, -0x80, 0x18, 0x7E, 0x26, 0x04, 0x94, 0xB1, 0x67, -0x80, 0x18, 0x45, 0x26, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x87, 0xF3, 0x69, 0xA2, -0x0B, 0x23, 0x87, 0xF3, 0x6A, 0xA2, 0x04, 0x23, -0x87, 0xF3, 0x87, 0xA2, 0xA5, 0x6D, 0x07, 0x10, -0x87, 0xF3, 0x87, 0xA2, 0xA4, 0x6D, 0x03, 0x10, -0x87, 0xF3, 0x87, 0xA2, 0xA3, 0x6D, 0x80, 0x18, -0x7E, 0x26, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, -0x05, 0x92, 0x43, 0xE8, 0xC4, 0x61, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x21, 0x6C, -0xB2, 0xF4, 0x1F, 0x4C, 0x00, 0x6D, 0x06, 0x6E, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0x0B, 0xF2, 0x1D, 0x4C, 0x07, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6D, 0x2B, 0xF1, -0x18, 0x4D, 0xE0, 0xF0, 0x85, 0xA5, 0x01, 0x6A, -0xC2, 0x67, 0x8C, 0xEE, 0xFF, 0x6B, 0x37, 0x26, -0x02, 0x6E, 0x8C, 0xEE, 0x6C, 0xEE, 0x0F, 0x26, -0x04, 0x6E, 0x8C, 0xEE, 0x6C, 0xEE, 0x22, 0x26, -0x08, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x16, 0x2A, -0xE0, 0xF0, 0x46, 0xA5, 0x7F, 0x6C, 0x00, 0x6D, -0x4C, 0xEC, 0x6C, 0xEC, 0x22, 0x10, 0x04, 0x6E, -0x8C, 0xEE, 0x6C, 0xEE, 0x13, 0x26, 0x08, 0x6A, -0x8C, 0xEA, 0x6C, 0xEA, 0x07, 0x22, 0xE0, 0xF0, -0x46, 0xA5, 0x7F, 0x6C, 0x01, 0x6D, 0x4C, 0xEC, -0x6C, 0xEC, 0x13, 0x10, 0xE0, 0xF0, 0x46, 0xA5, -0x7F, 0x6C, 0x4C, 0xEC, 0x6C, 0xEC, 0x80, 0x18, -0x67, 0x26, 0x0D, 0x10, 0xE0, 0xF0, 0xC6, 0xA5, -0xE0, 0xF0, 0xA5, 0xA5, 0x7F, 0x6C, 0xCC, 0xEC, -0xA6, 0x35, 0x01, 0x6E, 0xCE, 0xED, 0x6C, 0xEC, -0x4C, 0xED, 0x80, 0x18, 0x5C, 0x26, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xF7, 0x63, 0x11, 0x62, -0x10, 0xD1, 0x0F, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xE0, 0xF0, 0xD3, 0xA3, -0x11, 0x6D, 0xFF, 0x6A, 0xCC, 0xED, 0x4C, 0xED, -0x4C, 0xEC, 0x20, 0xF1, 0x06, 0x25, 0xE0, 0xF0, -0xF4, 0xA3, 0x1F, 0x6D, 0xEC, 0xED, 0x8E, 0xED, -0x00, 0xF1, 0x1F, 0x2D, 0x01, 0x6C, 0xCC, 0xEC, -0x4C, 0xEC, 0x07, 0x24, 0x87, 0xF3, 0x90, 0x9B, -0xA7, 0xF3, 0x48, 0x9B, 0x8E, 0xEA, 0x00, 0xF1, -0x14, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE0, 0xF0, 0x93, 0xA2, 0x10, 0x6B, -0x8C, 0xEB, 0x07, 0x23, 0x87, 0xF3, 0x78, 0x9A, -0xA7, 0xF3, 0x50, 0x9A, 0x6E, 0xEA, 0x00, 0xF1, -0x04, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x50, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x07, 0x05, -0x40, 0x9A, 0x04, 0x6E, 0x30, 0xF0, 0x20, 0x69, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x4C, 0x9A, 0x2B, 0xF1, 0x18, 0x49, 0x40, 0x9A, -0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x78, 0x9A, 0x8F, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, -0x54, 0x9A, 0x7D, 0x67, 0x08, 0x6C, 0x40, 0x9A, -0x8B, 0xEC, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF7, 0x50, 0x9A, 0x40, 0x9A, 0x04, 0xD2, -0x2F, 0x6A, 0x20, 0xF0, 0x40, 0xC3, 0x0A, 0x6A, -0x57, 0xCB, 0x20, 0xF0, 0x42, 0xA3, 0x8C, 0xEA, -0x20, 0xF0, 0x42, 0xC3, 0x80, 0xF2, 0x4C, 0x98, -0x09, 0x04, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, -0x04, 0x6E, 0x0A, 0x04, 0x06, 0x05, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF4, 0x5C, 0x9D, -0x08, 0x04, 0x40, 0xEA, 0x7D, 0x67, 0x20, 0xF0, -0x42, 0xA3, 0x08, 0x6C, 0x8B, 0xEC, 0x01, 0x6B, -0x8C, 0xEA, 0x6D, 0xEA, 0xBD, 0x67, 0x20, 0xF0, -0x42, 0xC5, 0x80, 0xF2, 0x4C, 0x98, 0x09, 0x04, -0x05, 0x05, 0x04, 0x6E, 0x40, 0xEA, 0x80, 0xF2, -0x4C, 0x98, 0x0A, 0x04, 0x04, 0x05, 0x04, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, -0x5C, 0x9B, 0x08, 0x04, 0x40, 0xEA, 0xE0, 0xF0, -0x73, 0xA1, 0x10, 0x6A, 0x6C, 0xEA, 0x59, 0x22, -0x9D, 0x67, 0x20, 0xF0, 0x42, 0xA4, 0x08, 0x6D, -0xAB, 0xED, 0x02, 0x6B, 0xAC, 0xEA, 0x6D, 0xEA, -0x20, 0xF0, 0x42, 0xC4, 0xE0, 0xF0, 0x53, 0xA1, -0x04, 0x6E, 0x56, 0x32, 0x20, 0xF0, 0x43, 0xC4, -0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF4, 0x10, 0x4A, -0x0C, 0xD2, 0x0C, 0x95, 0x80, 0xF2, 0x4C, 0x98, -0x09, 0x04, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x21, 0x6D, 0xD2, 0xF4, 0x14, 0x4D, -0x04, 0x6E, 0x0A, 0x04, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x00, 0xF4, 0x5C, 0x9B, 0x08, 0x04, -0x40, 0xEA, 0x9D, 0x67, 0x20, 0xF0, 0x62, 0xA4, -0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x04, 0x6B, -0x6D, 0xEA, 0x20, 0xF0, 0x42, 0xC4, 0xE0, 0xF0, -0x53, 0xA1, 0x30, 0xF0, 0x21, 0x6D, 0xC3, 0x67, -0x56, 0x32, 0x20, 0xF0, 0x43, 0xC4, 0x80, 0xF2, -0x4C, 0x98, 0x09, 0x04, 0xD2, 0xF4, 0x18, 0x4D, -0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, -0x21, 0x6D, 0x04, 0x6E, 0x0A, 0x04, 0xD2, 0xF4, -0x1C, 0x4D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6D, -0x00, 0xF4, 0x5C, 0x9D, 0x08, 0x04, 0x40, 0xEA, -0x80, 0xF2, 0x4C, 0x98, 0x0C, 0x95, 0x30, 0xF0, -0x21, 0x6C, 0xF2, 0xF4, 0x08, 0x4C, 0x10, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE0, 0xF0, 0x93, 0xA2, 0x01, 0x6B, -0x8C, 0xEB, 0x3B, 0x23, 0x87, 0xF3, 0x90, 0x9A, -0xA7, 0xF3, 0x68, 0x9A, 0x8E, 0xEB, 0x35, 0x23, -0xBD, 0x67, 0x20, 0xF0, 0x82, 0xA5, 0x08, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0x03, 0x6C, 0x8D, 0xEB, -0x20, 0xF0, 0x62, 0xC5, 0xE0, 0xF0, 0x53, 0xA2, -0x07, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x46, 0x32, -0x6C, 0xEA, 0x20, 0xF0, 0x43, 0xC5, 0x30, 0xF0, -0x21, 0x69, 0x80, 0xF2, 0x4C, 0x98, 0xD2, 0xF4, -0x08, 0x49, 0x09, 0x04, 0xB1, 0x67, 0x04, 0x6E, -0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, -0x21, 0x6D, 0xD2, 0xF4, 0x0C, 0x4D, 0x04, 0x6E, -0x0A, 0x04, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF4, 0x5C, 0x9A, 0x08, 0x04, 0x40, 0xEA, -0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x21, 0x6C, -0xF2, 0xF4, 0x00, 0x4C, 0xB1, 0x67, 0x08, 0x6E, -0x40, 0xEA, 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, -0x09, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF2, -0x04, 0x4C, 0x07, 0x6E, 0x2B, 0xF1, 0x18, 0x48, -0x40, 0xEA, 0xE0, 0xF0, 0x4C, 0xA0, 0x01, 0x6B, -0xFF, 0x69, 0x6C, 0xEA, 0x4B, 0x22, 0xE0, 0xF0, -0x8C, 0xA0, 0x96, 0x34, 0x2C, 0xEC, 0x00, 0x18, -0xE9, 0xE7, 0xE0, 0xF0, 0x6C, 0xA0, 0x02, 0x6A, -0x6C, 0xEA, 0x2C, 0xEA, 0x1B, 0x22, 0x04, 0x6A, -0x6C, 0xEA, 0x2C, 0xEA, 0x0B, 0x22, 0x08, 0x6A, -0x6C, 0xEA, 0x2C, 0xEA, 0x22, 0x2A, 0xE0, 0xF0, -0x4D, 0xA0, 0x7F, 0x6C, 0x00, 0x6D, 0x4C, 0xEC, -0x2C, 0xEC, 0x2E, 0x10, 0xE0, 0xF0, 0x4D, 0xA0, -0xE0, 0xF0, 0xAC, 0xA0, 0x7F, 0x6C, 0x4C, 0xEC, -0xA6, 0x35, 0x01, 0x6A, 0x4E, 0xED, 0x2C, 0xEC, -0x4C, 0xED, 0x22, 0x10, 0x04, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x13, 0x22, 0x08, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x07, 0x22, 0xE0, 0xF0, 0x4D, 0xA0, -0x7F, 0x6C, 0x01, 0x6D, 0x4C, 0xEC, 0x2C, 0xEC, -0x13, 0x10, 0xE0, 0xF0, 0x4D, 0xA0, 0x7F, 0x6C, -0x4C, 0xEC, 0x2C, 0xEC, 0x80, 0x18, 0x67, 0x26, -0x0D, 0x10, 0xE0, 0xF0, 0xAC, 0xA0, 0xE0, 0xF0, -0x4D, 0xA0, 0x01, 0x6B, 0x7F, 0x6C, 0xA6, 0x35, -0x4C, 0xEC, 0x6E, 0xED, 0x2C, 0xEC, 0x6C, 0xED, -0x80, 0x18, 0x5C, 0x26, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0x2B, 0xF2, 0x0B, 0x4C, 0x07, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE0, 0xF0, 0x93, 0xA2, 0x10, 0x6B, -0x8C, 0xEB, 0x05, 0x23, 0x96, 0x34, 0xFF, 0x6A, -0x4C, 0xEC, 0x00, 0x18, 0xE9, 0xE7, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF2, 0x4C, 0xA2, 0x1F, 0x6C, -0x4C, 0xEC, 0x0C, 0x4C, 0x01, 0x6A, 0x44, 0xEC, -0x82, 0x67, 0x80, 0x18, 0x32, 0x76, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x68, 0x9B, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0x69, 0xE2, 0x00, 0x9A, 0x41, 0x45, -0x25, 0x67, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x44, 0x9A, 0x85, 0x67, 0x2C, 0xE8, -0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x68, 0x41, 0x45, 0x25, 0x67, -0x0C, 0xD6, 0x8C, 0xE8, 0x07, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x41, 0xE0, -0xC0, 0xD8, 0x1A, 0x10, 0x01, 0x6D, 0x90, 0x67, -0xAB, 0xED, 0x80, 0x18, 0x0D, 0x28, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, -0x91, 0x67, 0x40, 0xEA, 0x0C, 0x93, 0x64, 0xEA, -0x43, 0x67, 0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, -0x6C, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0x68, 0x9B, 0x2D, 0xEA, 0x61, 0xE0, 0x40, 0xD8, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x01, 0x74, 0x0D, 0x60, -0x06, 0x24, 0x02, 0x74, 0x10, 0x60, 0x03, 0x74, -0x00, 0x6A, 0x1C, 0x61, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA8, 0x35, 0x04, 0xF0, 0x58, 0x9A, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA8, 0x35, -0x04, 0xF0, 0x5C, 0x9A, 0x05, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF0, 0x40, 0x9A, 0xA8, 0x35, -0x55, 0xE5, 0x40, 0x9D, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF0, 0x44, 0x9A, 0xA8, 0x35, -0x55, 0xE5, 0x40, 0x9D, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x6E, 0xF3, 0x18, 0x4A, 0x88, 0x34, 0x91, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x64, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0xA0, 0x35, -0xCC, 0xEB, 0x30, 0xF0, 0x20, 0x6E, 0xC3, 0xF5, -0xD4, 0x9E, 0xC0, 0xF3, 0x44, 0x9A, 0x80, 0xAC, -0xAD, 0xEB, 0x01, 0x6D, 0xAB, 0xED, 0x6C, 0xEE, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6B, 0x8C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, -0x81, 0x46, 0x06, 0x67, 0xAC, 0xEA, 0x06, 0x2C, -0x83, 0x67, 0xA2, 0x67, 0x80, 0x18, 0x35, 0x28, -0x02, 0x67, 0x0D, 0x10, 0x83, 0x67, 0xA2, 0x67, -0x80, 0x18, 0x35, 0x28, 0x22, 0x67, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x90, 0x67, -0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x46, 0x67, 0xFF, 0x68, -0xFF, 0xF7, 0x1F, 0x69, 0x01, 0x4A, 0x0C, 0xD6, -0x0D, 0xD7, 0x8C, 0xE8, 0xAC, 0xE9, 0x04, 0x2A, -0x90, 0x67, 0xB1, 0x67, 0xC7, 0x67, 0x15, 0x10, -0xB1, 0x67, 0x90, 0x67, 0x80, 0x18, 0x35, 0x28, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x94, -0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x0D, 0x96, -0x90, 0x67, 0xB1, 0x67, 0xC4, 0xEA, 0x0C, 0x92, -0x4C, 0xEE, 0x4F, 0xEB, 0x04, 0x92, 0x4C, 0xEB, -0x6D, 0xEE, 0x80, 0x18, 0x48, 0x28, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x01, 0x72, 0xFF, 0xF7, 0x1F, 0x6C, 0xAC, 0xEC, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x04, 0x67, +0x2C, 0xE8, 0x90, 0x67, 0xA0, 0x6D, 0xA2, 0x6E, +0x80, 0x18, 0x63, 0x25, 0x90, 0x67, 0x80, 0x18, +0xC6, 0x25, 0x7D, 0x67, 0x50, 0xC3, 0x50, 0xA3, +0x09, 0x97, 0x07, 0x90, 0x2C, 0xEA, 0x08, 0x91, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x25, 0x67, 0x01, 0x60, -0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x68, 0x9B, 0x69, 0xE2, 0x00, 0x9A, -0x41, 0x41, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, 0x2C, 0xE8, -0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, +0x0C, 0xE9, 0x91, 0x67, 0xAC, 0xE8, 0xA1, 0x6E, +0xA0, 0x6D, 0x80, 0x18, 0x63, 0x25, 0x91, 0x67, +0xB0, 0x67, 0x80, 0x18, 0xEC, 0x25, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x68, 0x41, 0x45, 0x25, 0x67, -0x0C, 0xD6, 0x8C, 0xE8, 0x16, 0x2A, 0x1F, 0xF7, -0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0x41, 0xE0, 0x0C, 0x92, -0x3A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x48, 0x9A, 0x0C, 0x93, 0x41, 0xE0, 0x60, 0xD8, -0x33, 0x10, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, -0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x44, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x48, 0x9A, 0x49, 0xE0, 0x40, 0x9A, 0x91, 0x67, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x44, 0x9A, 0x40, 0xEA, 0x0C, 0x93, 0x64, 0xEA, -0x43, 0x67, 0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, -0x6C, 0xE9, 0x1F, 0xF7, 0x00, 0x6B, 0x0C, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x2D, 0xEA, 0x01, 0x60, -0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x68, 0x9B, 0x61, 0xE0, 0x40, 0xD8, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x03, 0xF0, 0x08, 0x6B, -0x43, 0xF2, 0x60, 0xDA, 0x05, 0xF1, 0x00, 0x4B, -0x43, 0xF2, 0x64, 0xDA, 0x02, 0xF1, 0x00, 0x4B, -0x43, 0xF2, 0x68, 0xDA, 0x00, 0xF1, 0x00, 0x4B, -0x43, 0xF2, 0x6C, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6B, 0x6C, 0xEC, 0x1F, 0x6D, 0x8C, 0xED, -0x96, 0x34, 0x6C, 0xEC, 0x01, 0x74, 0x03, 0x6A, -0x0A, 0x60, 0x10, 0x24, 0x04, 0x74, 0x05, 0x60, -0x06, 0x74, 0x00, 0x6A, 0x12, 0x61, 0xEF, 0x4A, -0x02, 0x10, 0x07, 0x6A, 0x4B, 0xEA, 0xAB, 0xE2, -0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, -0x43, 0x32, 0x20, 0xE8, 0x08, 0x6A, 0xAB, 0xE2, -0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, -0x43, 0x32, 0x20, 0xE8, 0x00, 0xF6, 0x80, 0x34, -0x00, 0xF6, 0x83, 0x34, 0x47, 0x44, 0x5C, 0x4A, -0xFF, 0x6B, 0x6C, 0xEA, 0x77, 0x5A, 0x00, 0x6A, -0x06, 0x60, 0x00, 0x54, 0x64, 0x6A, 0x03, 0x60, -0x47, 0x44, 0x5D, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x0E, 0x91, 0x04, 0xD2, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, 0x4C, 0xE9, -0x0C, 0xD6, 0x0D, 0xD7, 0x0F, 0x90, 0x05, 0xD5, -0x00, 0x6A, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0x95, 0x05, 0x96, 0x63, 0xF3, -0xE4, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, -0x08, 0x4C, 0x80, 0x18, 0x9F, 0x58, 0x0C, 0x93, -0x6C, 0xEA, 0x0D, 0x93, 0x6E, 0xEA, 0x03, 0x22, -0x40, 0xA8, 0x23, 0xEA, 0xE3, 0x61, 0x40, 0xA8, -0x09, 0x97, 0x07, 0x90, 0x23, 0xEA, 0x08, 0x91, -0x58, 0x67, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x01, 0x6A, 0xA3, 0xF3, 0xB5, 0xA3, 0x4B, 0xEA, -0xA3, 0xF3, 0x50, 0xC3, 0x04, 0x6A, 0x00, 0x6C, -0x4B, 0xEA, 0xAC, 0xEA, 0xA3, 0xF3, 0x92, 0xCB, -0xA3, 0xF3, 0x94, 0xC3, 0x02, 0x6D, 0xA3, 0xF3, -0x96, 0xCB, 0x09, 0x6C, 0x8B, 0xEC, 0xAD, 0xEA, -0x8C, 0xEA, 0x04, 0x4C, 0x8C, 0xEA, 0xA3, 0xF3, -0x55, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA3, 0xF3, 0xD4, 0xA3, -0x3F, 0x6D, 0x30, 0xF0, 0x20, 0x6A, 0xBB, 0xEE, -0x01, 0x2D, 0xE5, 0xE8, 0x44, 0xF0, 0x50, 0x9A, -0x49, 0xE4, 0x10, 0xED, 0xA8, 0x35, 0xA0, 0xC2, -0xA3, 0xF3, 0x54, 0xA3, 0x01, 0x4A, 0xA3, 0xF3, -0x54, 0xC3, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x40, 0x9A, 0xFF, 0x69, 0x00, 0x68, -0x40, 0xA2, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF0, 0x74, 0x9A, 0xEE, 0xF1, 0x1F, 0x6A, -0x80, 0xAB, 0x8C, 0xEA, 0x10, 0xF0, 0x00, 0x6C, -0x8B, 0xEC, 0x8D, 0xEA, 0xFF, 0xF7, 0x1F, 0x6C, -0x8C, 0xEA, 0x40, 0xCB, 0x18, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, -0x95, 0xA2, 0x08, 0x6B, 0x8C, 0xEB, 0x05, 0x2B, -0xFB, 0x4B, 0x8C, 0xEB, 0xA3, 0xF3, 0x75, 0xC2, -0x65, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x01, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x54, 0x9A, 0x60, 0xAA, -0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0xC0, 0xF7, 0x10, 0x70, 0xDC, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, -0x88, 0xA3, 0xA0, 0xF2, 0x54, 0x9A, 0x01, 0x6D, -0x05, 0x6E, 0x08, 0x6F, 0x40, 0xEA, 0x02, 0x67, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x44, 0x9A, -0x49, 0xE0, 0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, -0x54, 0x72, 0x03, 0x61, 0x90, 0x67, 0x80, 0x18, -0x17, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, -0x58, 0x9A, 0x6F, 0x6D, 0x2C, 0xED, 0x41, 0xE0, -0x60, 0xA0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xFF, 0x6A, 0xA3, 0xF3, 0x95, 0xA0, -0x4C, 0xEB, 0x76, 0x33, 0x03, 0x6A, 0x4C, 0xEB, -0xF9, 0x4A, 0x8C, 0xEA, 0x6D, 0xEA, 0xA3, 0xF3, -0x55, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0x90, 0x6C, 0x19, 0x6E, 0x40, 0xEA, -0xA3, 0xF3, 0x75, 0xA0, 0x08, 0x6A, 0xFF, 0x6C, -0x6C, 0xEA, 0x8C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF6, 0x5C, 0x9A, 0x20, 0x6C, -0x80, 0xC2, 0xA3, 0xF3, 0x56, 0xA8, 0x01, 0x4A, -0xA3, 0xF3, 0x56, 0xC8, 0x04, 0x6A, 0x6D, 0xEA, -0xA3, 0xF3, 0x55, 0xC0, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xA3, 0xF3, -0x75, 0xA0, 0x08, 0x6A, 0x6C, 0xEA, 0x1A, 0x22, -0x80, 0x18, 0x23, 0x29, 0xA3, 0xF3, 0xD2, 0xA8, -0x09, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x48, 0x9A, 0xFF, 0x6C, 0x5D, 0x4C, 0x00, 0x6D, -0x40, 0xEA, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF0, 0x5C, 0x9A, 0xC0, 0xC2, 0xA3, 0xF3, -0x75, 0xA0, 0x09, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xA3, 0xF3, 0x55, 0xC0, 0x05, 0x97, 0x04, 0x90, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF7, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6D, +0xA3, 0xF7, 0xA8, 0x9D, 0x40, 0x9B, 0xA2, 0x6E, +0xAC, 0xEA, 0x40, 0xDB, 0xFF, 0x6A, 0x4C, 0xEC, +0xA0, 0x6D, 0x80, 0x18, 0x63, 0x25, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x00, 0x18, -0x7B, 0xD6, 0x01, 0xE2, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE8, 0x1C, 0x30, 0x00, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, -0x80, 0x9A, 0x43, 0xF2, 0xA4, 0x9D, 0x68, 0x32, -0x91, 0xE0, 0xB5, 0xE0, 0x51, 0xE4, 0x49, 0xE5, -0x40, 0x9A, 0x01, 0x4B, 0x14, 0x73, 0x40, 0xDC, -0xEE, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0xA7, 0x44, 0x01, 0x4D, 0x04, 0x04, -0x08, 0x6E, 0x40, 0xEA, 0x9D, 0x67, 0x50, 0xA4, -0x01, 0x6B, 0x4C, 0xEB, 0x22, 0x23, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xA3, 0xF3, -0x75, 0xA0, 0x08, 0x6A, 0x6D, 0xEA, 0xA3, 0xF3, -0x55, 0xC0, 0x52, 0xA4, 0x71, 0xA4, 0xA3, 0xF3, -0x50, 0xC0, 0x05, 0x6A, 0x58, 0xEB, 0xA3, 0xF3, -0x90, 0xA0, 0x12, 0xEA, 0xA3, 0xF3, 0x52, 0xC8, -0x80, 0x18, 0x83, 0x29, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x48, 0x9A, 0xA3, 0xF3, 0xD2, 0xA8, -0xFF, 0x6C, 0x5D, 0x4C, 0x00, 0x6D, 0x40, 0xEA, -0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA3, 0xF3, 0xB5, 0xA2, 0x09, 0x6C, -0x8B, 0xEC, 0xAC, 0xEC, 0xA3, 0xF3, 0x95, 0xC2, -0x01, 0x6C, 0x8B, 0xEC, 0xA3, 0xF3, 0x72, 0xCA, -0xA3, 0xF3, 0x90, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF0, 0x5C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x07, 0x97, 0x06, 0x90, 0x00, 0x6A, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, -0x60, 0x9A, 0x7F, 0x6A, 0x01, 0x68, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF0, 0x44, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, -0x6C, 0xE8, 0x2A, 0x20, 0x30, 0xF0, 0x20, 0x6B, -0xEE, 0xF4, 0x8D, 0xA3, 0x04, 0x6B, 0x8C, 0xEB, -0x4C, 0xEB, 0x22, 0x23, 0x03, 0x6B, 0x8C, 0xEB, -0x4C, 0xEB, 0x01, 0x73, 0x0B, 0x60, 0x02, 0x73, -0x11, 0x60, 0x1A, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF4, 0x84, 0x9B, 0x02, 0x6D, 0x60, 0xA4, -0x4C, 0xEB, 0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF4, 0x84, 0x9B, 0x06, 0x6D, 0x60, 0xA4, -0x4C, 0xEB, 0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF4, 0x84, 0x9B, 0x0E, 0x6D, 0x60, 0xA4, -0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x95, 0xA2, 0x05, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xA3, 0xF3, 0x75, 0xC2, 0x90, 0x67, -0x80, 0x18, 0x26, 0x4D, 0x9D, 0x67, 0x72, 0xA4, -0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x0D, 0xEA, -0x52, 0xC4, 0x02, 0x6A, 0x50, 0xC4, 0x01, 0x6A, -0x4F, 0xCC, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x21, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x12, 0xF3, 0x8D, 0xA3, -0xA0, 0xF2, 0x54, 0x9A, 0x00, 0x6E, 0xE6, 0x67, -0x01, 0x6D, 0x40, 0xEA, 0x05, 0x97, 0x01, 0x6A, -0x03, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0xB0, 0x6D, 0xB2, 0x6E, +0x80, 0x18, 0x63, 0x25, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0xB0, 0x6D, 0xB1, 0x6E, +0x80, 0x18, 0x63, 0x25, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, +0xAC, 0xEA, 0xA4, 0x72, 0x0C, 0x61, 0x90, 0x67, +0x80, 0x18, 0x19, 0x26, 0x01, 0x72, 0x04, 0x61, +0x90, 0x67, 0x80, 0x18, 0x76, 0x26, 0x1F, 0x10, +0x90, 0x67, 0x00, 0x6D, 0x0D, 0x10, 0xA5, 0x72, +0x11, 0x61, 0x90, 0x67, 0x80, 0x18, 0x19, 0x26, +0x01, 0x72, 0x04, 0x61, 0x90, 0x67, 0x80, 0x18, +0x76, 0x26, 0x18, 0x10, 0x90, 0x67, 0x01, 0x6D, +0x80, 0x18, 0x6B, 0x26, 0x90, 0x67, 0x80, 0x18, +0x76, 0x26, 0x14, 0x10, 0x90, 0x67, 0x80, 0x18, +0x31, 0x26, 0x01, 0x72, 0x07, 0x61, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0x6B, 0x26, 0x90, 0x67, +0x00, 0x6D, 0x06, 0x10, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x6B, 0x26, 0x90, 0x67, 0x01, 0x6D, +0x80, 0x18, 0x6B, 0x26, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x07, 0xF4, 0x61, 0xA2, 0xFF, 0xF7, +0x1F, 0x69, 0x04, 0xD4, 0xAC, 0xE9, 0x05, 0xD6, +0x0B, 0x23, 0x07, 0xF4, 0x62, 0xA2, 0x04, 0x23, +0xE7, 0xF3, 0x9F, 0xA2, 0xA5, 0x6D, 0x07, 0x10, +0xE7, 0xF3, 0x9F, 0xA2, 0xA4, 0x6D, 0x03, 0x10, +0xE7, 0xF3, 0x9F, 0xA2, 0xA3, 0x6D, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x80, 0x18, +0x8D, 0x26, 0x07, 0xF4, 0x43, 0xA0, 0x7D, 0x22, +0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x54, 0x26, +0x07, 0xF4, 0x41, 0xA0, 0x0B, 0x22, 0x07, 0xF4, +0x42, 0xA0, 0x04, 0x22, 0xE7, 0xF3, 0x9F, 0xA0, +0xA5, 0x6D, 0x07, 0x10, 0xE7, 0xF3, 0x9F, 0xA0, +0xA4, 0x6D, 0x03, 0x10, 0xE7, 0xF3, 0x9F, 0xA0, +0xA3, 0x6D, 0x80, 0x18, 0x8D, 0x26, 0x30, 0xF0, +0x21, 0x6A, 0x92, 0xF5, 0x44, 0xA2, 0x01, 0x68, +0x5D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, +0x4C, 0x9A, 0x60, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x58, 0x2A, 0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, +0x54, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x07, 0xF4, 0x61, 0xA2, 0x0B, 0x23, +0x07, 0xF4, 0x62, 0xA2, 0x04, 0x23, 0xE7, 0xF3, +0x9F, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0xE7, 0xF3, +0x9F, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0xE7, 0xF3, +0x9F, 0xA2, 0xA3, 0x6D, 0x80, 0x18, 0x8D, 0x26, +0xDC, 0x17, 0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, +0x54, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x07, 0xF4, 0x61, 0xA2, 0x0B, 0x23, +0x07, 0xF4, 0x62, 0xA2, 0x04, 0x23, 0xE7, 0xF3, +0x9F, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0xE7, 0xF3, +0x9F, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0xE7, 0xF3, +0x9F, 0xA2, 0xA3, 0x6D, 0x80, 0x18, 0x8D, 0x26, +0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x54, 0x26, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x07, 0xF4, 0x61, 0xA2, 0x0B, 0x23, 0x07, 0xF4, +0x62, 0xA2, 0x04, 0x23, 0xE7, 0xF3, 0x9F, 0xA2, +0xA5, 0x6D, 0x07, 0x10, 0xE7, 0xF3, 0x9F, 0xA2, +0xA4, 0x6D, 0x03, 0x10, 0xE7, 0xF3, 0x9F, 0xA2, +0xA3, 0x6D, 0x80, 0x18, 0x8D, 0x26, 0x01, 0x48, +0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x43, 0xE8, +0xC4, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0x72, 0xF5, 0x1F, 0x4C, +0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x6B, 0xF2, +0x05, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6D, 0x8B, 0xF1, 0x00, 0x4D, 0xE0, 0xF0, +0x85, 0xA5, 0x01, 0x6A, 0xC2, 0x67, 0x8C, 0xEE, +0xFF, 0x6B, 0x37, 0x26, 0x02, 0x6E, 0x8C, 0xEE, +0x6C, 0xEE, 0x0F, 0x26, 0x04, 0x6E, 0x8C, 0xEE, +0x6C, 0xEE, 0x22, 0x26, 0x08, 0x6A, 0x8C, 0xEA, +0x6C, 0xEA, 0x16, 0x2A, 0xE0, 0xF0, 0x46, 0xA5, +0x7F, 0x6C, 0x00, 0x6D, 0x4C, 0xEC, 0x6C, 0xEC, +0x22, 0x10, 0x04, 0x6E, 0x8C, 0xEE, 0x6C, 0xEE, +0x13, 0x26, 0x08, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, +0x07, 0x22, 0xE0, 0xF0, 0x46, 0xA5, 0x7F, 0x6C, +0x01, 0x6D, 0x4C, 0xEC, 0x6C, 0xEC, 0x13, 0x10, +0xE0, 0xF0, 0x46, 0xA5, 0x7F, 0x6C, 0x4C, 0xEC, +0x6C, 0xEC, 0x80, 0x18, 0x76, 0x26, 0x0D, 0x10, +0xE0, 0xF0, 0xC6, 0xA5, 0xE0, 0xF0, 0xA5, 0xA5, +0x7F, 0x6C, 0xCC, 0xEC, 0xA6, 0x35, 0x01, 0x6E, +0xCE, 0xED, 0x6C, 0xEC, 0x4C, 0xED, 0x80, 0x18, +0x6B, 0x26, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0xE0, 0xF0, 0xD3, 0xA3, 0x11, 0x6D, 0xFF, 0x6A, +0xCC, 0xED, 0x4C, 0xED, 0x4C, 0xEC, 0x20, 0xF1, +0x06, 0x25, 0xE0, 0xF0, 0xF4, 0xA3, 0x1F, 0x6D, +0xEC, 0xED, 0x8E, 0xED, 0x00, 0xF1, 0x1F, 0x2D, +0x01, 0x6C, 0xCC, 0xEC, 0x4C, 0xEC, 0x07, 0x24, +0x07, 0xF4, 0x88, 0x9B, 0x27, 0xF4, 0x40, 0x9B, +0x8E, 0xEA, 0x00, 0xF1, 0x14, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, +0x93, 0xA2, 0x10, 0x6B, 0x8C, 0xEB, 0x07, 0x23, +0x07, 0xF4, 0x70, 0x9A, 0x27, 0xF4, 0x48, 0x9A, +0x6E, 0xEA, 0x00, 0xF1, 0x04, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF1, 0x54, 0x9A, 0x30, 0xF0, +0x20, 0x68, 0x07, 0x05, 0x40, 0x9A, 0x04, 0x6E, +0x30, 0xF0, 0x20, 0x69, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF1, 0x50, 0x9A, 0x8B, 0xF1, +0x00, 0x49, 0x40, 0x9A, 0x06, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF7, 0x70, 0x9A, 0x8F, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x4C, 0x9A, 0x7D, 0x67, +0x08, 0x6C, 0x40, 0x9A, 0x8B, 0xEC, 0x05, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x48, 0x9A, +0x40, 0x9A, 0x04, 0xD2, 0x2F, 0x6A, 0x20, 0xF0, +0x40, 0xC3, 0x0A, 0x6A, 0x57, 0xCB, 0x20, 0xF0, +0x42, 0xA3, 0x8C, 0xEA, 0x20, 0xF0, 0x42, 0xC3, +0x80, 0xF2, 0x4C, 0x98, 0x09, 0x04, 0x40, 0xEA, +0x80, 0xF2, 0x4C, 0x98, 0x04, 0x6E, 0x0A, 0x04, +0x06, 0x05, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6D, +0x00, 0xF4, 0x5C, 0x9D, 0x08, 0x04, 0x40, 0xEA, +0x7D, 0x67, 0x20, 0xF0, 0x42, 0xA3, 0x08, 0x6C, +0x8B, 0xEC, 0x01, 0x6B, 0x8C, 0xEA, 0x6D, 0xEA, +0xBD, 0x67, 0x20, 0xF0, 0x42, 0xC5, 0x80, 0xF2, +0x4C, 0x98, 0x09, 0x04, 0x05, 0x05, 0x04, 0x6E, +0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, 0x0A, 0x04, +0x04, 0x05, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF4, 0x5C, 0x9B, 0x08, 0x04, +0x40, 0xEA, 0xE0, 0xF0, 0x73, 0xA1, 0x10, 0x6A, +0x6C, 0xEA, 0x59, 0x22, 0x9D, 0x67, 0x20, 0xF0, +0x42, 0xA4, 0x08, 0x6D, 0xAB, 0xED, 0x02, 0x6B, +0xAC, 0xEA, 0x6D, 0xEA, 0x20, 0xF0, 0x42, 0xC4, +0xE0, 0xF0, 0x53, 0xA1, 0x04, 0x6E, 0x56, 0x32, +0x20, 0xF0, 0x43, 0xC4, 0x30, 0xF0, 0x21, 0x6A, +0x92, 0xF5, 0x10, 0x4A, 0x0C, 0xD2, 0x0C, 0x95, +0x80, 0xF2, 0x4C, 0x98, 0x09, 0x04, 0x40, 0xEA, +0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x21, 0x6D, +0x92, 0xF5, 0x14, 0x4D, 0x04, 0x6E, 0x0A, 0x04, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, +0x5C, 0x9B, 0x08, 0x04, 0x40, 0xEA, 0x9D, 0x67, +0x20, 0xF0, 0x62, 0xA4, 0x08, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x04, 0x6B, 0x6D, 0xEA, 0x20, 0xF0, +0x42, 0xC4, 0xE0, 0xF0, 0x53, 0xA1, 0x30, 0xF0, +0x21, 0x6D, 0xC3, 0x67, 0x56, 0x32, 0x20, 0xF0, +0x43, 0xC4, 0x80, 0xF2, 0x4C, 0x98, 0x09, 0x04, +0x92, 0xF5, 0x18, 0x4D, 0x40, 0xEA, 0x80, 0xF2, +0x4C, 0x98, 0x30, 0xF0, 0x21, 0x6D, 0x04, 0x6E, +0x0A, 0x04, 0x92, 0xF5, 0x1C, 0x4D, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF4, 0x5C, 0x9D, +0x08, 0x04, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, +0x0C, 0x95, 0x30, 0xF0, 0x21, 0x6C, 0xB2, 0xF5, +0x08, 0x4C, 0x10, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, +0x93, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x3B, 0x23, +0x07, 0xF4, 0x88, 0x9A, 0x27, 0xF4, 0x60, 0x9A, +0x8E, 0xEB, 0x35, 0x23, 0xBD, 0x67, 0x20, 0xF0, +0x82, 0xA5, 0x08, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x03, 0x6C, 0x8D, 0xEB, 0x20, 0xF0, 0x62, 0xC5, +0xE0, 0xF0, 0x53, 0xA2, 0x07, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x46, 0x32, 0x6C, 0xEA, 0x20, 0xF0, +0x43, 0xC5, 0x30, 0xF0, 0x21, 0x69, 0x80, 0xF2, +0x4C, 0x98, 0x92, 0xF5, 0x08, 0x49, 0x09, 0x04, +0xB1, 0x67, 0x04, 0x6E, 0x40, 0xEA, 0x80, 0xF2, +0x4C, 0x98, 0x30, 0xF0, 0x21, 0x6D, 0x92, 0xF5, +0x0C, 0x4D, 0x04, 0x6E, 0x0A, 0x04, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, +0x08, 0x04, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, +0x30, 0xF0, 0x21, 0x6C, 0xB2, 0xF5, 0x00, 0x4C, +0xB1, 0x67, 0x08, 0x6E, 0x40, 0xEA, 0x11, 0x97, +0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6C, 0x6B, 0xF2, 0x0C, 0x4C, 0x07, 0x6E, +0x8B, 0xF1, 0x00, 0x48, 0x40, 0xEA, 0xE0, 0xF0, +0x4C, 0xA0, 0x01, 0x6B, 0xFF, 0x69, 0x6C, 0xEA, +0x4B, 0x22, 0xE0, 0xF0, 0x8C, 0xA0, 0x96, 0x34, +0x2C, 0xEC, 0x00, 0x18, 0x8E, 0xE9, 0xE0, 0xF0, +0x6C, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x1B, 0x22, 0x04, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x0B, 0x22, 0x08, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x22, 0x2A, 0xE0, 0xF0, 0x4D, 0xA0, 0x7F, 0x6C, +0x00, 0x6D, 0x4C, 0xEC, 0x2C, 0xEC, 0x2E, 0x10, +0xE0, 0xF0, 0x4D, 0xA0, 0xE0, 0xF0, 0xAC, 0xA0, +0x7F, 0x6C, 0x4C, 0xEC, 0xA6, 0x35, 0x01, 0x6A, +0x4E, 0xED, 0x2C, 0xEC, 0x4C, 0xED, 0x22, 0x10, +0x04, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x13, 0x22, +0x08, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x07, 0x22, +0xE0, 0xF0, 0x4D, 0xA0, 0x7F, 0x6C, 0x01, 0x6D, +0x4C, 0xEC, 0x2C, 0xEC, 0x13, 0x10, 0xE0, 0xF0, +0x4D, 0xA0, 0x7F, 0x6C, 0x4C, 0xEC, 0x2C, 0xEC, +0x80, 0x18, 0x76, 0x26, 0x0D, 0x10, 0xE0, 0xF0, +0xAC, 0xA0, 0xE0, 0xF0, 0x4D, 0xA0, 0x01, 0x6B, +0x7F, 0x6C, 0xA6, 0x35, 0x4C, 0xEC, 0x6E, 0xED, +0x2C, 0xEC, 0x6C, 0xED, 0x80, 0x18, 0x6B, 0x26, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x6B, 0xF2, +0x13, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, +0x93, 0xA2, 0x10, 0x6B, 0x8C, 0xEB, 0x05, 0x23, +0x96, 0x34, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, +0x8E, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF2, +0x54, 0xA2, 0x1F, 0x6C, 0x4C, 0xEC, 0x0C, 0x4C, +0x01, 0x6A, 0x44, 0xEC, 0x82, 0x67, 0x80, 0x18, +0x1B, 0x78, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x69, 0xE2, +0x00, 0x9A, 0x41, 0x45, 0x25, 0x67, 0x08, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, +0x85, 0x67, 0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, +0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, +0x41, 0x45, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x4C, 0x9A, 0x41, 0xE0, 0xC0, 0xD8, 0x1A, 0x10, +0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x80, 0x18, +0x1C, 0x28, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, 0x40, 0xEA, +0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, 0x04, 0x93, +0x2C, 0xEA, 0x2F, 0xE9, 0x6C, 0xE9, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, 0x2D, 0xEA, +0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x01, 0x74, 0x0D, 0x60, 0x06, 0x24, 0x02, 0x74, +0x10, 0x60, 0x03, 0x74, 0x00, 0x6A, 0x1C, 0x61, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA8, 0x35, +0x24, 0xF0, 0x50, 0x9A, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA8, 0x35, 0x24, 0xF0, 0x54, 0x9A, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, +0x58, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, +0x5C, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xCE, 0xF3, 0x04, 0x4A, +0x88, 0x34, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF5, 0xA0, 0x35, 0xCC, 0xEB, 0x30, 0xF0, +0x20, 0x6E, 0xE3, 0xF5, 0xC8, 0x9E, 0xC0, 0xF3, +0x44, 0x9A, 0x80, 0xAC, 0xAD, 0xEB, 0x01, 0x6D, +0xAB, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6B, 0x8C, 0xEB, +0xFF, 0xF7, 0x1F, 0x6A, 0x81, 0x46, 0x06, 0x67, +0xAC, 0xEA, 0x06, 0x2C, 0x83, 0x67, 0xA2, 0x67, +0x80, 0x18, 0x44, 0x28, 0x02, 0x67, 0x0D, 0x10, +0x83, 0x67, 0xA2, 0x67, 0x80, 0x18, 0x44, 0x28, +0x22, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x44, 0x9A, 0x90, 0x67, 0x2C, 0xE8, 0x40, 0xEA, +0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x46, 0x67, 0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, +0x01, 0x4A, 0x0C, 0xD6, 0x0D, 0xD7, 0x8C, 0xE8, +0xAC, 0xE9, 0x04, 0x2A, 0x90, 0x67, 0xB1, 0x67, +0xC7, 0x67, 0x15, 0x10, 0xB1, 0x67, 0x90, 0x67, +0x80, 0x18, 0x44, 0x28, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x0C, 0x94, 0xA0, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x0D, 0x96, 0x90, 0x67, 0xB1, 0x67, +0xC4, 0xEA, 0x0C, 0x92, 0x4C, 0xEE, 0x4F, 0xEB, +0x04, 0x92, 0x4C, 0xEB, 0x6D, 0xEE, 0x80, 0x18, +0x57, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x1F, 0xF7, +0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x25, 0x67, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF1, 0x68, 0x9B, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, +0x69, 0xE2, 0x00, 0x9A, 0x41, 0x41, 0x08, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, +0x91, 0x67, 0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, +0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, +0x41, 0x45, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, +0x16, 0x2A, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, +0x41, 0xE0, 0x0C, 0x92, 0x3A, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0x0C, 0x93, +0x41, 0xE0, 0x60, 0xD8, 0x33, 0x10, 0x1F, 0xF7, +0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0x49, 0xE0, +0x40, 0x9A, 0x91, 0x67, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, +0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, 0x04, 0x93, +0x2C, 0xEA, 0x2F, 0xE9, 0x6C, 0xE9, 0x1F, 0xF7, +0x00, 0x6B, 0x0C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x2D, 0xEA, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF1, 0x68, 0x9B, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, +0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x03, 0xF0, 0x08, 0x6B, 0x43, 0xF2, 0x64, 0xDA, +0x05, 0xF1, 0x00, 0x4B, 0x43, 0xF2, 0x68, 0xDA, +0x02, 0xF1, 0x00, 0x4B, 0x43, 0xF2, 0x6C, 0xDA, +0x00, 0xF1, 0x00, 0x4B, 0x43, 0xF2, 0x70, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, +0x1F, 0x6D, 0x8C, 0xED, 0x96, 0x34, 0x6C, 0xEC, +0x01, 0x74, 0x03, 0x6A, 0x0A, 0x60, 0x10, 0x24, +0x04, 0x74, 0x05, 0x60, 0x06, 0x74, 0x00, 0x6A, +0x12, 0x61, 0xEF, 0x4A, 0x02, 0x10, 0x07, 0x6A, +0x4B, 0xEA, 0xAB, 0xE2, 0x44, 0x32, 0x00, 0xF6, +0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x20, 0xE8, +0x08, 0x6A, 0xAB, 0xE2, 0x44, 0x32, 0x00, 0xF6, +0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x20, 0xE8, +0x00, 0xF6, 0x80, 0x34, 0x00, 0xF6, 0x83, 0x34, +0x47, 0x44, 0x5C, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, +0x77, 0x5A, 0x00, 0x6A, 0x06, 0x60, 0x00, 0x54, +0x64, 0x6A, 0x03, 0x60, 0x47, 0x44, 0x5D, 0x4A, +0x6C, 0xEA, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x0E, 0x91, 0x04, 0xD2, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xED, 0x4C, 0xE9, 0x0C, 0xD6, 0x0D, 0xD7, +0x0F, 0x90, 0x05, 0xD5, 0x00, 0x6A, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0x40, 0xEA, 0x40, 0xA8, 0x01, 0x4A, +0x40, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, +0x05, 0x96, 0x83, 0xF3, 0xE8, 0x9A, 0x30, 0xF0, +0x21, 0x6C, 0xD2, 0xF5, 0x08, 0x4C, 0x80, 0x18, +0x05, 0x59, 0x0C, 0x93, 0x6C, 0xEA, 0x0D, 0x93, +0x6E, 0xEA, 0x03, 0x22, 0x40, 0xA8, 0x23, 0xEA, +0xE3, 0x61, 0x40, 0xA8, 0x09, 0x97, 0x07, 0x90, +0x23, 0xEA, 0x08, 0x91, 0x58, 0x67, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x01, 0x6A, 0xA3, 0xF3, +0xB9, 0xA3, 0x4B, 0xEA, 0xA3, 0xF3, 0x54, 0xC3, +0x04, 0x6A, 0x00, 0x6C, 0x4B, 0xEA, 0xAC, 0xEA, +0xA3, 0xF3, 0x96, 0xCB, 0xA3, 0xF3, 0x98, 0xC3, +0x02, 0x6D, 0xA3, 0xF3, 0x9A, 0xCB, 0x09, 0x6C, +0x8B, 0xEC, 0xAD, 0xEA, 0x8C, 0xEA, 0x04, 0x4C, +0x8C, 0xEA, 0xA3, 0xF3, 0x59, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0xA3, 0xF3, 0xD8, 0xA3, 0x3F, 0x6D, 0x30, 0xF0, +0x20, 0x6A, 0xBB, 0xEE, 0x01, 0x2D, 0xE5, 0xE8, +0x64, 0xF0, 0x48, 0x9A, 0x49, 0xE4, 0x10, 0xED, +0xA8, 0x35, 0xA0, 0xC2, 0xA3, 0xF3, 0x58, 0xA3, +0x01, 0x4A, 0xA3, 0xF3, 0x58, 0xC3, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x44, 0x9A, +0xFF, 0x69, 0x00, 0x68, 0x40, 0xA2, 0x4C, 0xE9, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x6C, 0x9A, +0xEE, 0xF1, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, +0x10, 0xF0, 0x00, 0x6C, 0x8B, 0xEC, 0x8D, 0xEA, +0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEA, 0x40, 0xCB, +0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA3, 0xF3, 0x99, 0xA2, 0x08, 0x6B, +0x8C, 0xEB, 0x05, 0x2B, 0xFB, 0x4B, 0x8C, 0xEB, +0xA3, 0xF3, 0x79, 0xC2, 0x65, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, +0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x58, 0x9A, 0x60, 0xAA, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0xC0, 0xF7, 0x10, 0x70, +0xDC, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x2E, 0xF5, 0x94, 0xA3, 0xA0, 0xF2, +0x54, 0x9A, 0x01, 0x6D, 0x05, 0x6E, 0x08, 0x6F, +0x40, 0xEA, 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF2, 0x4C, 0x9A, 0x49, 0xE0, 0x60, 0xA2, +0xFF, 0x6A, 0x6C, 0xEA, 0x54, 0x72, 0x03, 0x61, +0x90, 0x67, 0x80, 0x18, 0x26, 0x29, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF0, 0x50, 0x9A, 0x6F, 0x6D, +0x2C, 0xED, 0x41, 0xE0, 0x60, 0xA0, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xFF, 0x6A, +0xA3, 0xF3, 0x99, 0xA0, 0x4C, 0xEB, 0x76, 0x33, +0x03, 0x6A, 0x4C, 0xEB, 0xF9, 0x4A, 0x8C, 0xEA, +0x6D, 0xEA, 0xA3, 0xF3, 0x59, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x90, 0x6C, +0x19, 0x6E, 0x40, 0xEA, 0xA3, 0xF3, 0x79, 0xA0, +0x08, 0x6A, 0xFF, 0x6C, 0x6C, 0xEA, 0x8C, 0xEA, +0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, +0x50, 0x9A, 0x20, 0x6C, 0x80, 0xC2, 0xA3, 0xF3, +0x5A, 0xA8, 0x01, 0x4A, 0xA3, 0xF3, 0x5A, 0xC8, +0x04, 0x6A, 0x6D, 0xEA, 0xA3, 0xF3, 0x59, 0xC0, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xA3, 0xF3, 0x79, 0xA0, 0x08, 0x6A, +0x6C, 0xEA, 0x1A, 0x22, 0x80, 0x18, 0x32, 0x29, +0xA3, 0xF3, 0xD6, 0xA8, 0x09, 0x26, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, +0x5D, 0x4C, 0x00, 0x6D, 0x40, 0xEA, 0x0C, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x54, 0x9A, +0xC0, 0xC2, 0xA3, 0xF3, 0x79, 0xA0, 0x09, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xA3, 0xF3, 0x59, 0xC0, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x00, 0x18, 0xD6, 0xD7, 0x01, 0xE2, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x1C, 0x30, +0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6D, 0x43, 0xF2, 0x88, 0x9A, 0x63, 0xF2, +0xAC, 0x9D, 0x68, 0x32, 0x91, 0xE0, 0xB5, 0xE0, +0x51, 0xE4, 0x49, 0xE5, 0x40, 0x9A, 0x01, 0x4B, +0x14, 0x73, 0x40, 0xDC, 0xEE, 0x61, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA7, 0x44, +0x01, 0x4D, 0x04, 0x04, 0x08, 0x6E, 0x40, 0xEA, +0x9D, 0x67, 0x50, 0xA4, 0x01, 0x6B, 0x4C, 0xEB, +0x22, 0x23, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xA3, 0xF3, 0x79, 0xA0, 0x08, 0x6A, +0x6D, 0xEA, 0xA3, 0xF3, 0x59, 0xC0, 0x52, 0xA4, +0x71, 0xA4, 0xA3, 0xF3, 0x54, 0xC0, 0x05, 0x6A, +0x58, 0xEB, 0xA3, 0xF3, 0x94, 0xA0, 0x12, 0xEA, +0xA3, 0xF3, 0x56, 0xC8, 0x80, 0x18, 0x92, 0x29, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, +0xA3, 0xF3, 0xD6, 0xA8, 0xFF, 0x6C, 0x5D, 0x4C, +0x00, 0x6D, 0x40, 0xEA, 0x17, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, +0xB9, 0xA2, 0x09, 0x6C, 0x8B, 0xEC, 0xAC, 0xEC, +0xA3, 0xF3, 0x99, 0xC2, 0x01, 0x6C, 0x8B, 0xEC, +0xA3, 0xF3, 0x76, 0xCA, 0xA3, 0xF3, 0x94, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x54, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x07, 0x97, 0x06, 0x90, +0x00, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF0, 0x78, 0x9A, 0x7F, 0x6A, +0x01, 0x68, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x5C, 0x9A, +0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xE8, 0x2A, 0x20, +0x30, 0xF0, 0x20, 0x6B, 0x2E, 0xF5, 0x99, 0xA3, +0x04, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x22, 0x23, +0x03, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x01, 0x73, +0x0B, 0x60, 0x02, 0x73, 0x11, 0x60, 0x1A, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x88, 0x9B, +0x02, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0x0F, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x88, 0x9B, +0x06, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0x07, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x88, 0x9B, +0x0E, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA3, 0xF3, 0x99, 0xA2, +0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA3, 0xF3, +0x79, 0xC2, 0x90, 0x67, 0x80, 0x18, 0x6C, 0x4D, +0x9D, 0x67, 0x72, 0xA4, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x0D, 0xEA, 0x52, 0xC4, 0x02, 0x6A, +0x50, 0xC4, 0x01, 0x6A, 0x4F, 0xCC, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, +0x40, 0xEA, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x21, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xD2, 0xF3, 0x8D, 0xA3, 0xA0, 0xF2, 0x54, 0x9A, +0x00, 0x6E, 0xE6, 0x67, 0x01, 0x6D, 0x40, 0xEA, +0x05, 0x97, 0x01, 0x6A, 0x03, 0x63, 0x00, 0xEF, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF1, 0x78, 0x9A, 0x01, 0x6D, 0xFF, 0x6C, +0x40, 0xA3, 0xAC, 0xEA, 0x05, 0x22, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x09, 0x6B, 0x9D, 0x67, 0x70, 0xC4, 0x09, 0x5A, +0x07, 0x6B, 0x6F, 0xCC, 0x52, 0xC4, 0x73, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, 0x83, 0xF0, +0x18, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, 0x4C, 0x9A, +0xFF, 0x6B, 0x80, 0xA2, 0x20, 0x6A, 0x8C, 0xEA, +0x1A, 0x22, 0x40, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, +0x02, 0x22, 0x01, 0x6A, 0x14, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF6, 0x44, 0x9A, 0x40, 0xA2, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, +0x48, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x04, 0x22, +0x01, 0x6A, 0x7D, 0x67, 0x53, 0xC3, 0x05, 0x10, +0x9D, 0x67, 0x53, 0xC4, 0x02, 0x10, 0xBD, 0x67, +0x53, 0xC5, 0x00, 0x6A, 0x7D, 0x67, 0x54, 0xC3, +0x55, 0xC3, 0x56, 0xC3, 0x57, 0xC3, 0x58, 0xC3, +0x68, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF6, +0x58, 0x9A, 0x9D, 0x67, 0x60, 0xAA, 0x73, 0xC4, +0x40, 0xAA, 0x42, 0x32, 0x54, 0xC4, 0x00, 0x6A, +0x55, 0xC4, 0x56, 0xC4, 0x57, 0xC4, 0x58, 0xC4, +0x58, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9A, 0x00, 0xF0, +0x13, 0x04, 0xC0, 0xF6, 0xB0, 0x9B, 0x05, 0x6E, +0x16, 0x10, 0x0B, 0x6A, 0xBD, 0x67, 0x30, 0xF0, +0x20, 0x68, 0x4F, 0xCD, 0x30, 0xF0, 0x20, 0x69, +0x8F, 0xF7, 0x14, 0x48, 0x80, 0xF2, 0x4C, 0x99, +0x00, 0xF0, 0x13, 0x04, 0xB0, 0x67, 0x06, 0x6E, +0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x99, 0x00, 0xF0, +0x19, 0x04, 0xA6, 0x40, 0x04, 0x6E, 0x40, 0xEA, +0x34, 0x10, 0x0B, 0x6A, 0x7D, 0x67, 0x30, 0xF0, +0x20, 0x68, 0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x69, +0x8F, 0xF7, 0x1E, 0x48, 0xE7, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF6, 0x48, 0x9A, 0x9D, 0x67, +0xC2, 0xA2, 0xD3, 0xC4, 0x63, 0xA2, 0x74, 0xC4, +0x64, 0xA2, 0x75, 0xC4, 0x65, 0xA2, 0x76, 0xC4, +0x66, 0xA2, 0x77, 0xC4, 0x47, 0xA2, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF6, 0xAC, 0x9B, 0x58, 0xC4, +0x01, 0x6C, 0xE0, 0xA5, 0x21, 0x6A, 0x8C, 0xEE, +0x4B, 0xEA, 0xD4, 0x36, 0xEC, 0xEA, 0xCD, 0xEA, +0x40, 0xC5, 0xC0, 0xF6, 0x6C, 0x9B, 0xBD, 0x67, +0x53, 0xA5, 0xA0, 0xA3, 0x4C, 0xEC, 0x41, 0x6A, +0x4B, 0xEA, 0x98, 0x34, 0xAC, 0xEA, 0x8D, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x01, 0x74, 0x11, 0x60, 0x05, 0x24, 0x02, 0x74, 0x03, 0x60, 0x03, 0x74, 0x0F, 0x60, 0x19, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF1, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF3, 0x94, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x0D, 0x10, 0x00, 0x18, 0x60, 0xD9, 0x0B, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x7C, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF3, 0x90, 0x9C, +0x44, 0xF1, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x23, 0xF3, 0x98, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0x0D, 0x10, 0x00, 0x18, 0xBF, 0xDA, 0x0B, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x74, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF3, 0x94, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x8C, 0xEA, -0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF2, -0x98, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x0A, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x6C, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF1, 0x80, 0x9C, +0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, +0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF1, 0x98, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x6B, 0x8C, 0xEB, 0x4C, 0xED, 0x8E, 0x34, 0x42, 0xF4, 0x10, 0x4C, @@ -30700,50 +31050,50 @@ u8 array_mp_8822c_fw_nic[] = { 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x21, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, 0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0xA4, 0x9A, 0xB5, 0xE4, +0x20, 0x6A, 0x63, 0xF1, 0xA8, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0xA4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x48, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, +0x63, 0xF1, 0xA8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x4C, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, 0x80, 0xA4, 0x00, 0xF6, 0x80, 0x34, 0x01, 0x6A, 0x00, 0xF6, 0x83, 0x34, 0x44, 0xEB, 0x8D, 0xEA, -0x36, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x43, 0xF1, -0xA8, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, +0x36, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF1, +0xAC, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, 0xA0, 0xA4, 0x00, 0xF6, 0xA0, 0x35, 0x00, 0xF6, 0xA3, 0x35, 0xCD, 0xED, 0x3A, 0x10, 0x1F, 0xF7, 0x00, 0x6D, 0x8C, 0xED, 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x25, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, 0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, -0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0xA4, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0xA4, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0xA8, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0xA8, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, 0x80, 0xA4, 0x01, 0x6A, 0x00, 0xF6, 0x80, 0x34, 0x44, 0xEB, 0x00, 0xF6, 0x83, 0x34, 0x4F, 0xEA, 0x8C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6D, 0x43, 0xF1, 0xA8, 0x9D, 0x01, 0x6E, +0x20, 0x6D, 0x63, 0xF1, 0xAC, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, 0xA0, 0xA4, 0xCF, 0xEE, 0x00, 0xF6, 0xA0, 0x35, 0x00, 0xF6, 0xA3, 0x35, 0xCC, 0xED, 0x4C, 0xED, 0xA0, 0xC4, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0x67, 0xC2, 0xA3, 0x80, 0xAC, 0xA0, 0xF2, 0x54, 0x9A, 0x01, 0x6D, 0x03, 0x6F, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x64, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x7C, 0x9A, 0xFF, 0x6C, 0x08, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x01, 0x6A, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xF2, 0x63, 0x1B, 0x62, 0x1A, 0xD1, 0x19, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, 0xFF, 0x68, 0x8C, 0xE9, 0xAC, 0xE8, 0x0C, 0x04, -0x00, 0x6D, 0x30, 0x6E, 0x00, 0x18, 0x3D, 0xD7, +0x00, 0x6D, 0x30, 0x6E, 0x00, 0x18, 0x98, 0xD8, 0x5D, 0x67, 0x40, 0xF0, 0x28, 0xCA, 0x40, 0xF0, -0x0A, 0xC2, 0x10, 0xF0, 0x31, 0x6A, 0x55, 0xF1, -0x19, 0x4A, 0x0C, 0xD2, 0x10, 0xF0, 0x31, 0x6A, -0x95, 0xF1, 0x11, 0x4A, 0x0D, 0xD2, 0x04, 0x04, +0x0A, 0xC2, 0x10, 0xF0, 0x31, 0x6A, 0x35, 0xF3, +0x01, 0x4A, 0x0C, 0xD2, 0x10, 0xF0, 0x31, 0x6A, +0x55, 0xF3, 0x19, 0x4A, 0x0D, 0xD2, 0x04, 0x04, 0x00, 0x6A, 0x10, 0x03, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x0F, 0x97, 0x0C, 0x94, -0x0D, 0x95, 0x0E, 0x96, 0x00, 0x18, 0x1A, 0xE5, +0x0D, 0x95, 0x0E, 0x96, 0x00, 0x18, 0xBF, 0xE6, 0x1B, 0x97, 0x1A, 0x91, 0x19, 0x90, 0x0E, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -33441,125 +33791,73 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x47, 0xF4, 0x80, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, +0x09, 0x23, 0x64, 0xF5, 0x6A, 0xAA, 0x01, 0x4B, +0x64, 0xF5, 0x6A, 0xCA, 0x20, 0x6B, 0x8D, 0xEB, +0x47, 0xF4, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF4, 0x74, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, +0x4E, 0xF5, 0x60, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x02, 0x2A, -0x00, 0x18, 0x1A, 0xEB, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA3, 0xF3, 0x9C, 0xA3, +0x00, 0x18, 0xBF, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xC3, 0xF3, 0x80, 0xA3, 0x80, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0xFF, 0x6C, -0x8C, 0xEA, 0x05, 0x22, 0xA3, 0xF3, 0x9F, 0xA3, -0x80, 0x18, 0x71, 0x40, 0x08, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, -0xFF, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x0C, 0x6D, +0x8C, 0xEA, 0x05, 0x22, 0xC3, 0xF3, 0x83, 0xA3, +0x80, 0x18, 0x7B, 0x40, 0x08, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, +0x00, 0x6D, 0x69, 0x6E, 0x40, 0xEA, 0x0C, 0x6D, 0x01, 0x6C, 0x00, 0x18, 0xD7, 0xC5, 0x0C, 0x6C, -0x80, 0x18, 0xBF, 0x70, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xA7, 0x72, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0xA3, 0xF3, 0x9C, 0xA3, 0x80, 0x6A, 0x4B, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0xC3, 0xF3, 0x80, 0xA3, 0x80, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x05, 0x22, -0xA3, 0xF3, 0x9F, 0xA3, 0x80, 0x18, 0x77, 0x40, +0xC3, 0xF3, 0x83, 0xA3, 0x80, 0x18, 0x81, 0x40, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0xA4, 0x67, 0x2F, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF4, 0x74, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, +0x4E, 0xF5, 0x60, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x02, 0x2A, -0x00, 0x18, 0x30, 0xEB, 0x08, 0x6D, 0x01, 0x6C, +0x00, 0x18, 0xD5, 0xEC, 0x08, 0x6D, 0x01, 0x6C, 0x00, 0x18, 0xD7, 0xC5, 0x08, 0x6C, 0x80, 0x18, -0xBF, 0x70, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x7B, 0xD3, +0xA7, 0x72, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xCB, 0xD4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xEB, 0xF1, 0x12, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF2, 0x1A, 0x4C, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x7A, 0xA2, 0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, -0xA3, 0xF3, 0xB8, 0xA2, 0xA0, 0xF0, 0x7A, 0xC2, +0xA3, 0xF3, 0xBC, 0xA2, 0xA0, 0xF0, 0x7A, 0xC2, 0x02, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x8C, 0xEB, -0xA3, 0xF3, 0x78, 0xC2, 0x00, 0x6B, 0xA3, 0xF3, -0x79, 0xC2, 0x0C, 0x6B, 0xA3, 0xF3, 0x7A, 0xC2, +0xA3, 0xF3, 0x7C, 0xC2, 0x00, 0x6B, 0xA3, 0xF3, +0x7D, 0xC2, 0x0C, 0x6B, 0xA3, 0xF3, 0x7E, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF2, 0x54, 0x9A, 0x60, 0xA2, +0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x60, 0xA2, 0x40, 0x23, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, 0x02, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, 0x2B, 0xF1, -0x18, 0x48, 0xE3, 0xF5, 0x7C, 0xA0, 0x02, 0x6A, +0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, 0x02, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, 0x8B, 0xF1, +0x00, 0x48, 0x03, 0xF6, 0x60, 0xA0, 0x02, 0x6A, 0xFF, 0x6C, 0x6C, 0xEA, 0x8C, 0xEA, 0x0B, 0x22, -0x03, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, 0xE3, 0xF5, -0x7C, 0xC0, 0x03, 0xF6, 0x61, 0xA0, 0x6C, 0xEA, -0x03, 0xF6, 0x41, 0xC0, 0x22, 0x10, 0x03, 0xF6, -0x49, 0xA0, 0x03, 0xF6, 0x61, 0xA0, 0x01, 0x4A, -0x03, 0xF6, 0x49, 0xC0, 0x11, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x03, 0xF6, 0x41, 0xC0, 0x03, 0xF6, -0x69, 0xA0, 0xC0, 0xF0, 0x42, 0xA0, 0x63, 0xEA, +0x03, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, 0x03, 0xF6, +0x60, 0xC0, 0x03, 0xF6, 0x65, 0xA0, 0x6C, 0xEA, +0x03, 0xF6, 0x45, 0xC0, 0x22, 0x10, 0x03, 0xF6, +0x4D, 0xA0, 0x03, 0xF6, 0x65, 0xA0, 0x01, 0x4A, +0x03, 0xF6, 0x4D, 0xC0, 0x11, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x03, 0xF6, 0x45, 0xC0, 0x03, 0xF6, +0x6D, 0xA0, 0xC0, 0xF0, 0x42, 0xA0, 0x63, 0xEA, 0x10, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xC0, 0xF0, 0x9F, 0xA0, 0x40, 0xEA, -0x01, 0x72, 0x07, 0x61, 0xE3, 0xF5, 0x7C, 0xA0, -0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xE3, 0xF5, -0x5C, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x01, 0x72, 0x07, 0x61, 0x03, 0xF6, 0x60, 0xA0, +0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0xF6, +0x40, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x6D, 0x12, 0x6E, -0x00, 0x18, 0xE7, 0xE1, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0x83, 0xE3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x6D, 0x11, 0x6E, -0x00, 0x18, 0xE7, 0xE1, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0x83, 0xE3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x8C, 0xEA, 0xC2, 0xF2, 0x9C, 0x9B, @@ -33569,78 +33867,78 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x6B, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x0B, 0x2B, 0x9D, 0x67, 0x44, 0x33, 0x6D, 0xE4, 0x88, 0xAB, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x64, 0x9B, 0x6D, 0xE4, 0x60, 0xAB, -0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0x68, 0x9B, 0x71, 0xE4, 0x60, 0xAC, 0xFF, 0xF7, +0x63, 0xF1, 0x68, 0x9B, 0x6D, 0xE4, 0x60, 0xAB, +0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, +0x6C, 0x9B, 0x71, 0xE4, 0x60, 0xAC, 0xFF, 0xF7, 0x1F, 0x68, 0x6C, 0xE8, 0x18, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, 0x0F, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x03, 0xF6, 0x81, 0xA3, +0x8B, 0xF1, 0x00, 0x4B, 0x03, 0xF6, 0x85, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x03, 0x6C, -0x8B, 0xEC, 0x8C, 0xEA, 0x03, 0xF6, 0x41, 0xC3, +0x8B, 0xEC, 0x8C, 0xEA, 0x03, 0xF6, 0x45, 0xC3, 0x79, 0x10, 0x08, 0xF0, 0x00, 0x6B, 0x0C, 0xEB, -0x42, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xA0, 0xF0, 0xDB, 0xA3, 0x7F, 0x6D, +0x42, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xA0, 0xF0, 0xDB, 0xA3, 0x7F, 0x6D, 0xFF, 0x6C, 0xCC, 0xED, 0x02, 0x75, 0x1F, 0x61, 0xA0, 0xF0, 0x5E, 0xA3, 0x01, 0x6D, 0xAC, 0xEA, -0x8C, 0xEA, 0x06, 0x2A, 0x03, 0xF6, 0x41, 0xA3, -0x4D, 0xED, 0x03, 0xF6, 0xA1, 0xC3, 0x21, 0x10, +0x8C, 0xEA, 0x06, 0x2A, 0x03, 0xF6, 0x45, 0xA3, +0x4D, 0xED, 0x03, 0xF6, 0xA5, 0xC3, 0x21, 0x10, 0xA0, 0xF0, 0xBC, 0xA3, 0x10, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x8C, 0xEA, 0x10, 0x72, 0x2E, 0x61, -0x03, 0xF6, 0x81, 0xA3, 0x04, 0x6A, 0x00, 0x6D, -0x8D, 0xEA, 0x03, 0xF6, 0x41, 0xC3, 0x01, 0x6C, -0x00, 0x18, 0xCC, 0xD2, 0x23, 0x10, 0x03, 0xF6, -0xC1, 0xA3, 0x01, 0x6D, 0xCD, 0xED, 0x03, 0xF6, -0xA1, 0xC3, 0xA0, 0xF0, 0xBC, 0xA3, 0x10, 0x6B, +0x03, 0xF6, 0x85, 0xA3, 0x04, 0x6A, 0x00, 0x6D, +0x8D, 0xEA, 0x03, 0xF6, 0x45, 0xC3, 0x01, 0x6C, +0x00, 0x18, 0x1B, 0xD4, 0x23, 0x10, 0x03, 0xF6, +0xC5, 0xA3, 0x01, 0x6D, 0xCD, 0xED, 0x03, 0xF6, +0xA5, 0xC3, 0xA0, 0xF0, 0xBC, 0xA3, 0x10, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x8C, 0xEB, 0x20, 0x73, 0x06, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x40, 0x9A, 0x40, 0xEA, 0x0F, 0x10, 0x82, 0x67, -0x00, 0x18, 0xD0, 0xCF, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x03, 0xF6, -0x81, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x03, 0xF6, 0x61, 0xC2, 0x02, 0x30, 0x1E, 0x30, -0x1A, 0x20, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x03, 0xF6, 0x41, 0xA0, 0x02, 0x69, +0x00, 0x18, 0x06, 0xD1, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x85, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x03, 0xF6, 0x65, 0xC2, 0x02, 0x30, 0x1E, 0x30, +0x1A, 0x20, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x03, 0xF6, 0x45, 0xA0, 0x02, 0x69, 0xC0, 0xF0, 0xC3, 0xA0, 0x2D, 0xEA, 0x03, 0xF6, -0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x45, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, 0x55, 0x4C, 0x00, 0x6D, -0x40, 0xEA, 0xE3, 0xF5, 0x5C, 0xA0, 0x4D, 0xE9, -0xE3, 0xF5, 0x3C, 0xC0, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x03, 0xF6, -0x81, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x03, 0xF6, 0x61, 0xC2, 0x0B, 0x97, 0x0A, 0x91, +0x40, 0xEA, 0x03, 0xF6, 0x40, 0xA0, 0x4D, 0xE9, +0x03, 0xF6, 0x20, 0xC0, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x03, 0xF6, +0x85, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x03, 0xF6, 0x65, 0xC2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, -0x8C, 0xE8, 0x00, 0x18, 0x02, 0xC6, 0x03, 0x2A, -0x90, 0x67, 0x00, 0x18, 0x4F, 0xCF, 0x05, 0x97, +0x8C, 0xE8, 0x00, 0x18, 0x22, 0xC6, 0x03, 0x2A, +0x90, 0x67, 0x00, 0x18, 0x82, 0xD0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x74, 0x6F, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x5C, 0x71, 0x01, 0x72, 0x01, 0x6C, 0x01, 0x60, 0x02, 0x6C, -0x80, 0x18, 0xEA, 0x71, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xD2, 0x73, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xA0, 0xF0, 0x7A, 0xA0, 0x01, 0x6A, -0x6C, 0xEA, 0x1D, 0x22, 0xA3, 0xF3, 0x59, 0xA0, -0x04, 0x72, 0x19, 0x60, 0xA3, 0xF3, 0x5A, 0xA0, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xA0, 0xF0, 0x7A, 0xA0, 0x01, 0x6A, +0x6C, 0xEA, 0x1D, 0x22, 0xA3, 0xF3, 0x5D, 0xA0, +0x04, 0x72, 0x19, 0x60, 0xA3, 0xF3, 0x5E, 0xA0, 0x02, 0x72, 0x15, 0x60, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x80, 0x18, -0xE6, 0x40, 0x0D, 0x10, 0x80, 0x18, 0xDC, 0x70, -0xA3, 0xF3, 0x5A, 0xA0, 0x0C, 0x6C, 0x08, 0x72, +0xF0, 0x40, 0x0D, 0x10, 0x80, 0x18, 0xC4, 0x72, +0xA3, 0xF3, 0x5E, 0xA0, 0x0C, 0x6C, 0x08, 0x72, 0x02, 0x60, 0x05, 0x2A, 0x04, 0x6C, 0x00, 0x6D, -0xC5, 0x67, 0x00, 0x18, 0x28, 0xCE, 0x05, 0x97, +0xC5, 0x67, 0x00, 0x18, 0x3E, 0xCF, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xA0, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xA0, 0xF0, 0x7A, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x28, 0x22, -0xA3, 0xF3, 0x59, 0xA0, 0x04, 0x72, 0x24, 0x60, -0xA3, 0xF3, 0x5A, 0xA0, 0x02, 0x72, 0x20, 0x60, +0xA3, 0xF3, 0x5D, 0xA0, 0x04, 0x72, 0x24, 0x60, +0xA3, 0xF3, 0x5E, 0xA0, 0x02, 0x72, 0x20, 0x60, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x80, 0x18, 0xE6, 0x40, 0x18, 0x10, +0x03, 0x22, 0x80, 0x18, 0xF0, 0x40, 0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0xA4, 0x67, 0xC4, 0x67, 0x40, 0xEA, -0x80, 0x18, 0x4A, 0x40, 0xA3, 0xF3, 0x5A, 0xA0, +0x80, 0x18, 0x54, 0x40, 0xA3, 0xF3, 0x5E, 0xA0, 0x0C, 0x72, 0x03, 0x61, 0x08, 0x6C, 0x00, 0x6D, 0x04, 0x10, 0x04, 0x72, 0x05, 0x61, 0x00, 0x6C, -0xA4, 0x67, 0xC5, 0x67, 0x00, 0x18, 0x28, 0xCE, +0xA4, 0x67, 0xC5, 0x67, 0x00, 0x18, 0x3E, 0xCF, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x06, 0xD4, 0x09, 0xD7, @@ -33650,24 +33948,24 @@ u8 array_mp_8822c_fw_nic[] = { 0x46, 0x67, 0x01, 0x4A, 0x05, 0x67, 0x0C, 0xD6, 0x27, 0x67, 0x1F, 0x22, 0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, -0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x48, 0x9A, 0x49, 0xE0, 0x40, 0x9A, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x4C, 0x9A, 0x49, 0xE0, 0x40, 0x9A, 0x0C, 0x94, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x0C, 0x93, 0x24, 0xEA, 0x6F, 0xEA, 0x04, 0x93, 0x6C, 0xEA, 0x4D, 0xE9, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x44, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x48, 0x9A, 0x41, 0xE0, 0x20, 0xD8, 0x09, 0x97, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x4C, 0x9A, 0x41, 0xE0, 0x20, 0xD8, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x26, 0x67, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x44, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x48, 0x9A, 0x55, 0xE5, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x4C, 0x9A, 0x55, 0xE5, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0x9D, 0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, 0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, @@ -33680,54 +33978,54 @@ u8 array_mp_8822c_fw_nic[] = { 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x85, 0x67, 0xA6, 0x67, 0xC7, 0x67, 0x00, 0x18, -0x42, 0xD7, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x9D, 0xD8, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0xD2, 0x04, 0x95, -0x30, 0xF0, 0x20, 0x69, 0x2B, 0xF1, 0x18, 0x49, +0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, 0x00, 0x49, 0xA8, 0x34, 0x31, 0xE4, 0x05, 0xD4, 0x05, 0x90, -0xC2, 0xF3, 0x08, 0x4A, 0x48, 0x32, 0x29, 0xE2, -0x29, 0xF7, 0xC2, 0xA0, 0x60, 0xA2, 0x01, 0x6A, -0x4C, 0xEE, 0x4C, 0xEB, 0xC4, 0x36, 0x29, 0xF7, -0xE1, 0xA4, 0xD9, 0xE3, 0x29, 0xF7, 0x63, 0xA0, +0xE2, 0xF3, 0x08, 0x4A, 0x48, 0x32, 0x29, 0xE2, +0xA9, 0xF7, 0xC2, 0xA0, 0x60, 0xA2, 0x01, 0x6A, +0x4C, 0xEE, 0x4C, 0xEB, 0xC4, 0x36, 0xA9, 0xF7, +0xE1, 0xA4, 0xD9, 0xE3, 0xA9, 0xF7, 0x63, 0xA0, 0x4C, 0xEF, 0xF0, 0x37, 0x4C, 0xEB, 0x74, 0x33, 0x6D, 0xE7, 0x07, 0xD3, 0x04, 0x93, 0x85, 0x67, -0x84, 0xF7, 0x18, 0x4C, 0x64, 0x32, 0x29, 0xE2, -0x84, 0x34, 0x31, 0xE4, 0x29, 0xF7, 0x55, 0xA2, +0xC4, 0xF7, 0x18, 0x4C, 0x64, 0x32, 0x29, 0xE2, +0x84, 0x34, 0x31, 0xE4, 0xA9, 0xF7, 0x55, 0xA2, 0xA4, 0xA4, 0x03, 0x6C, 0x8C, 0xEA, 0x8C, 0xED, 0x40, 0x32, 0xA0, 0x35, 0x48, 0x32, 0x49, 0xE5, 0x30, 0xF0, 0x20, 0x68, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xD6, 0xC0, 0xF3, 0x64, 0x98, -0x63, 0xF3, 0xC0, 0x9A, 0x01, 0x6D, 0xE3, 0xF2, +0x83, 0xF3, 0xC4, 0x9A, 0x01, 0x6D, 0xE3, 0xF2, 0x1D, 0x4C, 0xAB, 0xED, 0x40, 0xEB, 0x08, 0x94, 0x07, 0x96, 0x06, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x8D, 0xEE, 0x6D, 0xEE, 0xE3, 0xF3, 0x10, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0xEA, 0x04, 0x92, -0x05, 0x94, 0x01, 0x6D, 0xC2, 0xF3, 0x0E, 0x4A, -0x29, 0xF7, 0xDA, 0xAC, 0x48, 0x32, 0x29, 0xE2, +0x05, 0x94, 0x01, 0x6D, 0xE2, 0xF3, 0x0E, 0x4A, +0xA9, 0xF7, 0xDA, 0xAC, 0x48, 0x32, 0x29, 0xE2, 0x60, 0xAA, 0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x36, 0x6D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x04, 0x92, 0x05, 0x95, -0xE3, 0xF3, 0x0C, 0x6C, 0xC2, 0xF3, 0x0F, 0x4A, -0x29, 0xF7, 0xDE, 0xAD, 0x48, 0x32, 0x29, 0xE2, +0xE3, 0xF3, 0x0C, 0x6C, 0xE2, 0xF3, 0x0F, 0x4A, +0xA9, 0xF7, 0xDE, 0xAD, 0x48, 0x32, 0x29, 0xE2, 0x60, 0xAA, 0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xAA, 0xF1, 0xDC, 0xA1, 0xA3, 0xF1, -0xBC, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, +0x44, 0x98, 0x2A, 0xF2, 0xDC, 0xA1, 0xE3, 0xF1, +0xA0, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x00, 0x6B, 0xE7, 0xF3, 0x6B, 0xC2, -0x30, 0xF0, 0x21, 0x6B, 0x32, 0xF5, 0x03, 0x4B, -0x07, 0xF4, 0x78, 0xDA, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF3, 0x6C, 0x9B, 0x54, 0x34, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x00, 0x6B, 0x67, 0xF4, 0x63, 0xC2, +0x30, 0xF0, 0x21, 0x6B, 0xF2, 0xF5, 0x03, 0x4B, +0x87, 0xF4, 0x70, 0xDA, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF3, 0x70, 0x9B, 0x54, 0x34, 0x20, 0x68, 0x71, 0xE4, 0xA0, 0xA4, 0xF8, 0x6B, 0x01, 0x4A, 0xAC, 0xEB, 0x4E, 0xE8, 0x60, 0xC4, -0xF2, 0x28, 0x80, 0x18, 0x8A, 0x46, 0x30, 0xF0, -0x21, 0x6A, 0x32, 0xF5, 0x1A, 0xC2, 0x80, 0x18, -0xA7, 0x4A, 0x80, 0x18, 0x35, 0x47, 0x30, 0xF0, -0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, 0x80, 0x18, -0xAA, 0x46, 0x80, 0x18, 0x49, 0x53, 0x05, 0x97, +0xF2, 0x28, 0x80, 0x18, 0x96, 0x46, 0x30, 0xF0, +0x21, 0x6A, 0xF2, 0xF5, 0x1A, 0xC2, 0x80, 0x18, +0xC5, 0x4A, 0x80, 0x18, 0x41, 0x47, 0x30, 0xF0, +0x21, 0x6C, 0xD2, 0xF5, 0x08, 0x4C, 0x80, 0x18, +0xB6, 0x46, 0x80, 0x18, 0xAF, 0x53, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0xD1, 0x08, 0xD0, 0x0A, 0xD4, 0x44, 0x67, 0x82, 0x10, 0x25, 0x73, 0x04, 0x60, @@ -33736,7 +34034,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x62, 0x85, 0x78, 0x73, 0x03, 0x60, 0x58, 0x73, 0x7D, 0x67, 0x1A, 0x61, 0x82, 0x85, 0x60, 0xA6, 0x78, 0x6F, 0xEE, 0xEC, 0x30, 0xF0, 0x20, 0x6F, -0x72, 0x30, 0xC4, 0xF2, 0x0C, 0x4F, 0xE1, 0xE0, +0x72, 0x30, 0xE4, 0xF2, 0x04, 0x4F, 0xE1, 0xE0, 0x00, 0xA0, 0x01, 0x5C, 0x98, 0x67, 0x94, 0x34, 0x8D, 0xE8, 0x3D, 0x67, 0x00, 0xC1, 0x0F, 0x68, 0x6C, 0xE8, 0xFD, 0xE0, 0x60, 0xA7, 0x02, 0x4D, @@ -33747,7 +34045,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x78, 0x74, 0xF8, 0x67, 0x01, 0x5F, 0x18, 0x67, 0x14, 0x30, 0x18, 0x65, 0x0C, 0x6C, 0x07, 0x97, 0x0F, 0x68, 0x30, 0xF0, 0x20, 0x69, 0xE7, 0xEC, -0x0C, 0xEF, 0xC4, 0xF2, 0x0C, 0x49, 0x3D, 0xE7, +0x0C, 0xEF, 0xE4, 0xF2, 0x04, 0x49, 0x3D, 0xE7, 0xE0, 0xA7, 0x06, 0x90, 0x38, 0x67, 0x2D, 0xEF, 0xFC, 0x4C, 0xE0, 0xC0, 0x01, 0x48, 0xE4, 0x44, 0x06, 0xD0, 0xED, 0x2F, 0x04, 0x4B, 0x02, 0x4D, @@ -33756,8 +34054,8 @@ u8 array_mp_8822c_fw_nic[] = { 0x06, 0xD3, 0x78, 0x74, 0x98, 0x67, 0x01, 0x5C, 0xF8, 0x67, 0xF4, 0x37, 0x07, 0xD1, 0x1F, 0x65, 0x1C, 0x6C, 0x07, 0x97, 0x0F, 0x68, 0x30, 0xF0, -0x20, 0x69, 0xE6, 0xEC, 0x0C, 0xEF, 0xC4, 0xF2, -0x0C, 0x49, 0x3D, 0xE7, 0xE0, 0xA7, 0x06, 0x91, +0x20, 0x69, 0xE6, 0xEC, 0x0C, 0xEF, 0xE4, 0xF2, +0x04, 0x49, 0x3D, 0xE7, 0xE0, 0xA7, 0x06, 0x91, 0x18, 0x67, 0x0D, 0xEF, 0xFC, 0x4C, 0xE0, 0xC1, 0x01, 0x49, 0xE4, 0x44, 0x06, 0xD1, 0xED, 0x2F, 0x08, 0x4B, 0x01, 0x4D, 0x9D, 0x67, 0x04, 0x10, @@ -33766,17 +34064,17 @@ u8 array_mp_8822c_fw_nic[] = { 0x60, 0x85, 0x7F, 0xF7, 0x1B, 0x2B, 0x0A, 0x94, 0x01, 0x24, 0x60, 0xC2, 0x0A, 0x97, 0x09, 0x91, 0x08, 0x90, 0xEB, 0xE2, 0x05, 0x63, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6B, 0x2B, 0xF1, -0x18, 0x4A, 0x6B, 0xEB, 0x28, 0xF7, 0x6C, 0xC2, -0x28, 0xF7, 0x6D, 0xC2, 0x28, 0xF7, 0x6E, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6B, 0x8B, 0xF1, +0x00, 0x4A, 0x6B, 0xEB, 0xE8, 0xF7, 0x6C, 0xC2, +0xE8, 0xF7, 0x6D, 0xC2, 0xE8, 0xF7, 0x6E, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x00, 0xF0, 0x12, 0x02, 0x00, 0xF0, 0x1E, 0x03, 0x00, 0x6D, 0xA0, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFB, 0x61, 0x61, 0xA4, 0x40, 0xA4, 0x02, 0x5B, 0x29, 0x60, 0x80, 0x6C, 0x8B, 0xEC, 0x74, 0x33, 0x4D, 0xEC, 0x6D, 0xE2, 0xBD, 0x67, 0x92, 0xC5, -0x61, 0xF1, 0x0B, 0x4B, 0x30, 0xF0, 0x20, 0x6C, -0x2B, 0xF1, 0x18, 0x4C, 0x6C, 0x33, 0x6D, 0xE4, +0x61, 0xF1, 0x1B, 0x4B, 0x30, 0xF0, 0x20, 0x6C, +0x8B, 0xF1, 0x00, 0x4C, 0x6C, 0x33, 0x6D, 0xE4, 0x04, 0x4B, 0x00, 0xF0, 0x13, 0x02, 0x00, 0xF0, 0x1B, 0x04, 0xA0, 0xAB, 0xA0, 0xC2, 0xA2, 0x35, 0xA1, 0xC2, 0x02, 0x4A, 0x00, 0x6D, 0x8A, 0xEA, @@ -33785,99 +34083,99 @@ u8 array_mp_8822c_fw_nic[] = { 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x68, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE7, 0xF3, 0x74, 0xC2, 0x69, 0xA4, -0xE7, 0xF3, 0x69, 0xC2, 0x6A, 0xA4, 0xE7, 0xF3, -0x73, 0xC2, 0xAB, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, -0xE7, 0xF3, 0x7D, 0xC2, 0x6B, 0xA4, 0x72, 0x33, -0xE7, 0xF3, 0x7A, 0xC2, 0x8E, 0xA4, 0x01, 0x6B, -0x8C, 0xEB, 0xE7, 0xF3, 0x6B, 0xC2, 0x30, 0xF0, -0x21, 0x6B, 0x32, 0xF5, 0x03, 0x4B, 0x07, 0xF4, -0x78, 0xDA, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE7, 0xF3, 0x74, 0xC2, 0x61, 0xA4, -0xE7, 0xF3, 0x69, 0xC2, 0x62, 0xA4, 0xE7, 0xF3, -0x73, 0xC2, 0xA3, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, -0xE7, 0xF3, 0x7D, 0xC2, 0x63, 0xA4, 0x72, 0x33, -0xE7, 0xF3, 0x7A, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x68, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x67, 0xF4, 0x6C, 0xC2, 0x69, 0xA4, +0x67, 0xF4, 0x61, 0xC2, 0x6A, 0xA4, 0x67, 0xF4, +0x6B, 0xC2, 0xAB, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, +0x67, 0xF4, 0x75, 0xC2, 0x6B, 0xA4, 0x72, 0x33, +0x67, 0xF4, 0x72, 0xC2, 0x8E, 0xA4, 0x01, 0x6B, +0x8C, 0xEB, 0x67, 0xF4, 0x63, 0xC2, 0x30, 0xF0, +0x21, 0x6B, 0xF2, 0xF5, 0x03, 0x4B, 0x87, 0xF4, +0x70, 0xDA, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x67, 0xF4, 0x6C, 0xC2, 0x61, 0xA4, +0x67, 0xF4, 0x61, 0xC2, 0x62, 0xA4, 0x67, 0xF4, +0x6B, 0xC2, 0xA3, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, +0x67, 0xF4, 0x75, 0xC2, 0x63, 0xA4, 0x72, 0x33, +0x67, 0xF4, 0x72, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x0E, 0x72, 0x03, 0x60, 0x11, 0x72, 0x05, 0x60, -0x08, 0x10, 0x85, 0x67, 0x80, 0x18, 0xA5, 0x15, -0x19, 0x10, 0x85, 0x67, 0x80, 0x18, 0x3E, 0x42, -0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF2, -0x94, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x60, 0xDA, 0xFF, 0x6A, 0x05, 0x97, 0x03, 0x63, +0x08, 0x10, 0x85, 0x67, 0x80, 0x18, 0x8C, 0x15, +0x19, 0x10, 0x85, 0x67, 0x80, 0x18, 0x48, 0x42, +0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, +0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, +0x98, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x64, 0xDA, 0xFF, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, 0x42, 0xA4, 0x00, 0xA4, 0x21, 0xA4, 0x0A, 0xD2, 0x63, 0xA4, 0x00, 0xF0, 0x16, 0x02, 0x20, 0xF0, 0x02, 0x04, 0x00, 0x6D, 0xA0, 0xC2, 0x01, 0x4A, 0x8A, 0xEA, 0xFB, 0x61, 0x01, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x04, 0x04, -0x00, 0xF0, 0x11, 0x05, 0x80, 0x18, 0x19, 0x49, +0x00, 0xF0, 0x11, 0x05, 0x80, 0x18, 0x27, 0x49, 0x7D, 0x67, 0x50, 0xA3, 0x01, 0x6C, 0x96, 0xC3, 0x57, 0xC3, 0x51, 0xA3, 0x58, 0xC3, 0x26, 0x6A, 0x54, 0xC3, 0x03, 0x6A, 0x51, 0xCB, 0x0A, 0x93, 0x01, 0x6A, 0x4C, 0xEB, 0x1E, 0x23, 0x20, 0x58, 0xE0, 0xF0, 0x13, 0x61, 0x20, 0x59, 0xE0, 0xF0, 0x10, 0x61, 0xBD, 0x67, 0x56, 0xC5, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x89, 0xF2, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x09, 0xF3, 0x78, 0x9A, 0x62, 0x34, 0x77, 0xC5, 0x00, 0xF6, 0x62, 0x33, 0x7A, 0xC5, 0x0D, 0x6B, 0x74, 0xC5, 0x05, 0x6B, 0x98, 0xC5, 0x71, 0xCD, 0x82, 0x34, -0x00, 0x6B, 0x99, 0xC5, 0x89, 0xF2, 0x78, 0xDA, +0x00, 0x6B, 0x99, 0xC5, 0x09, 0xF3, 0x78, 0xDA, 0xD8, 0x10, 0x0A, 0x92, 0x02, 0x6C, 0x8C, 0xEA, 0x31, 0x22, 0xDD, 0x67, 0x20, 0x58, 0x96, 0xC6, -0x17, 0x60, 0x64, 0xF5, 0x8C, 0x40, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x84, 0x34, -0x51, 0xE4, 0xA2, 0xAC, 0x44, 0xF5, 0x0C, 0x48, +0x17, 0x60, 0xA4, 0xF5, 0x8C, 0x40, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x84, 0x34, +0x51, 0xE4, 0xA2, 0xAC, 0x84, 0xF5, 0x0C, 0x48, 0x04, 0x30, 0x49, 0xE0, 0xB7, 0xC6, 0xA2, 0x35, 0xB8, 0xC6, 0xA2, 0xAA, 0x62, 0xCC, 0x62, 0xCA, 0xB9, 0xC6, 0xA2, 0x35, 0xBA, 0xC6, 0x04, 0x10, 0x16, 0x6A, 0x4B, 0xEA, 0x7D, 0x67, 0x57, 0xC3, -0x20, 0x59, 0x4E, 0x60, 0x64, 0xF5, 0x6C, 0x41, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0x33, 0x2B, 0xF1, -0x18, 0x4A, 0x4D, 0xE3, 0x82, 0xAB, 0xBD, 0x67, -0x44, 0xF5, 0x0C, 0x49, 0x9B, 0xC5, 0x82, 0x34, +0x20, 0x59, 0x4E, 0x60, 0xA4, 0xF5, 0x6C, 0x41, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0x33, 0x8B, 0xF1, +0x00, 0x4A, 0x4D, 0xE3, 0x82, 0xAB, 0xBD, 0x67, +0x84, 0xF5, 0x0C, 0x49, 0x9B, 0xC5, 0x82, 0x34, 0x9C, 0xC5, 0x34, 0x10, 0x0A, 0x95, 0x08, 0x6B, 0xAC, 0xEB, 0x43, 0x23, 0xDD, 0x67, 0x20, 0x58, -0x96, 0xC6, 0x17, 0x60, 0x64, 0xF5, 0x8C, 0x40, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x84, 0x34, 0x71, 0xE4, 0xA2, 0xAC, 0x84, 0xF5, +0x96, 0xC6, 0x17, 0x60, 0xA4, 0xF5, 0x8C, 0x40, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x84, 0x34, 0x71, 0xE4, 0xA2, 0xAC, 0xC4, 0xF5, 0x0C, 0x48, 0x04, 0x30, 0x6D, 0xE0, 0xB7, 0xC6, 0xA2, 0x35, 0xB8, 0xC6, 0xA2, 0xAB, 0x42, 0xCC, 0x42, 0xCB, 0xB9, 0xC6, 0xA2, 0x35, 0xBA, 0xC6, 0x04, 0x10, 0x16, 0x6A, 0x4B, 0xEA, 0x7D, 0x67, -0x57, 0xC3, 0x20, 0x59, 0x19, 0x60, 0x64, 0xF5, +0x57, 0xC3, 0x20, 0x59, 0x19, 0x60, 0xA4, 0xF5, 0x6C, 0x41, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0x33, -0x2B, 0xF1, 0x18, 0x4A, 0x4D, 0xE3, 0x82, 0xAB, -0xBD, 0x67, 0x84, 0xF5, 0x0C, 0x49, 0x9B, 0xC5, +0x8B, 0xF1, 0x00, 0x4A, 0x4D, 0xE3, 0x82, 0xAB, +0xBD, 0x67, 0xC4, 0xF5, 0x0C, 0x49, 0x9B, 0xC5, 0x82, 0x34, 0x9C, 0xC5, 0x24, 0x31, 0x49, 0xE1, 0x82, 0xAA, 0x9D, 0xC5, 0x82, 0x34, 0x9E, 0xC5, 0x00, 0x6C, 0x82, 0xCB, 0x82, 0xCA, 0x04, 0x10, 0x16, 0x6A, 0x4B, 0xEA, 0xDD, 0x67, 0x5B, 0xC6, 0x0D, 0x6A, 0x7D, 0x67, 0x54, 0xC3, 0x09, 0x6A, 0x56, 0x10, 0x0A, 0x94, 0x56, 0x2C, 0x20, 0x58, -0x24, 0x60, 0x04, 0xF5, 0x6C, 0x40, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x64, 0x33, +0x24, 0x60, 0x44, 0xF5, 0x6C, 0x40, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x64, 0x33, 0x4D, 0xE3, 0x80, 0xAB, 0xBD, 0x67, 0x16, 0xC5, -0x97, 0xC5, 0x82, 0x34, 0x98, 0xC5, 0x24, 0xF5, +0x97, 0xC5, 0x82, 0x34, 0x98, 0xC5, 0x64, 0xF5, 0x8C, 0x40, 0x84, 0x34, 0x49, 0xE4, 0x80, 0xAA, 0x14, 0x30, 0xC7, 0x45, 0x99, 0xC5, 0x82, 0x34, -0x9A, 0xC5, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, -0x8C, 0x9C, 0x21, 0x4E, 0xC0, 0xAE, 0x81, 0xE0, +0x9A, 0xC5, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF1, +0x90, 0x9C, 0x21, 0x4E, 0xC0, 0xAE, 0x81, 0xE0, 0x80, 0xA0, 0xC0, 0xCB, 0xC0, 0xCA, 0x9B, 0xC5, 0x02, 0x10, 0x9D, 0x67, 0x16, 0xC4, 0x20, 0x59, -0x24, 0x60, 0x04, 0xF5, 0x6C, 0x41, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x64, 0x33, +0x24, 0x60, 0x44, 0xF5, 0x6C, 0x41, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x64, 0x33, 0x4D, 0xE3, 0x80, 0xAB, 0xBD, 0x67, 0x3C, 0xC5, -0x9D, 0xC5, 0x82, 0x34, 0x9E, 0xC5, 0x24, 0xF5, +0x9D, 0xC5, 0x82, 0x34, 0x9E, 0xC5, 0x64, 0xF5, 0x8C, 0x41, 0x84, 0x34, 0x49, 0xE4, 0x80, 0xAA, 0x34, 0x31, 0x9F, 0xC5, 0x82, 0x34, 0x20, 0xF0, -0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, -0x8C, 0x9C, 0x85, 0xE1, 0x80, 0xA1, 0x20, 0xF0, +0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF1, +0x90, 0x9C, 0x85, 0xE1, 0x80, 0xA1, 0x20, 0xF0, 0x81, 0xC5, 0x00, 0x6C, 0x80, 0xCB, 0x80, 0xCA, 0x02, 0x10, 0x5D, 0x67, 0x3C, 0xC2, 0x04, 0x6A, 0x7D, 0x67, 0x54, 0xC3, 0x0C, 0x6A, 0x51, 0xCB, @@ -33891,10 +34189,10 @@ u8 array_mp_8822c_fw_nic[] = { 0xAC, 0xEB, 0x01, 0x4A, 0x0B, 0x73, 0xAC, 0xEA, 0x03, 0x61, 0x01, 0x48, 0xAC, 0xE8, 0x00, 0x6B, 0x37, 0x72, 0x01, 0x4C, 0xF1, 0x61, 0x37, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x28, 0xF7, 0x90, 0xA3, 0x0F, 0x5C, 0x01, 0x4C, -0x01, 0x61, 0x00, 0x6C, 0x28, 0xF7, 0x90, 0xC3, -0x30, 0xF0, 0x21, 0x6B, 0x74, 0xF0, 0x68, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0xE8, 0xF7, 0x90, 0xA3, 0x0F, 0x5C, 0x01, 0x4C, +0x01, 0x61, 0x00, 0x6C, 0xE8, 0xF7, 0x90, 0xC3, +0x30, 0xF0, 0x21, 0x6B, 0x74, 0xF1, 0x70, 0xA3, 0x0B, 0x6D, 0x2F, 0x40, 0x70, 0x33, 0x0A, 0xD3, 0x0A, 0x94, 0xFF, 0x6B, 0x6C, 0xE9, 0x6C, 0xEC, 0x0A, 0xD4, 0x01, 0x6C, 0x13, 0xE4, 0xB8, 0xEC, @@ -33913,76 +34211,76 @@ u8 array_mp_8822c_fw_nic[] = { 0xA0, 0xC2, 0x01, 0x4A, 0x8A, 0xEA, 0xFA, 0x61, 0x0C, 0x6A, 0x9D, 0x67, 0x00, 0x6B, 0x4F, 0xCC, 0x70, 0xC4, 0x05, 0x95, 0x04, 0x94, 0x06, 0x96, -0x07, 0x97, 0xFF, 0x49, 0x80, 0x18, 0x20, 0x41, +0x07, 0x97, 0xFF, 0x49, 0x80, 0x18, 0x2A, 0x41, 0x08, 0x95, 0xFF, 0x6A, 0x4C, 0xE9, 0x01, 0x4D, 0x08, 0xD5, 0x08, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x03, 0xEB, 0xBF, 0x61, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, 0xA3, 0xF3, -0x50, 0x9A, 0x74, 0xF0, 0x68, 0x9B, 0x07, 0xD5, +0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, 0xC3, 0xF3, +0x54, 0x9A, 0x74, 0xF1, 0x70, 0x9B, 0x07, 0xD5, 0x08, 0xD6, 0x6C, 0xEA, 0x00, 0xF1, 0x00, 0x72, 0x09, 0xD7, 0x06, 0xD4, 0x0C, 0x61, 0x30, 0xF0, -0x20, 0x68, 0x06, 0x95, 0x0A, 0xF0, 0x08, 0x48, -0x90, 0x67, 0x07, 0x06, 0x80, 0x18, 0xCE, 0x41, -0x90, 0x67, 0x80, 0x18, 0x06, 0x43, 0x05, 0x97, +0x20, 0x68, 0x06, 0x95, 0x4A, 0xF0, 0x10, 0x48, +0x90, 0x67, 0x07, 0x06, 0x80, 0x18, 0xD8, 0x41, +0x90, 0x67, 0x80, 0x18, 0x10, 0x43, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x61, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xA4, -0xE7, 0xF3, 0x7B, 0xC2, 0xE7, 0xF3, 0x60, 0x9A, -0x20, 0x6C, 0x8C, 0xEB, 0x08, 0x23, 0xE7, 0xF3, -0xDB, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF2, -0x00, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x05, 0x97, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xA4, +0x67, 0xF4, 0x73, 0xC2, 0x47, 0xF4, 0x78, 0x9A, +0x20, 0x6C, 0x8C, 0xEB, 0x08, 0x23, 0x67, 0xF4, +0xD3, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF2, +0x18, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xF3, 0x63, 0x19, 0x62, 0x18, 0xD1, 0x17, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x15, 0xD2, 0x40, 0xF0, 0x06, 0x03, 0x20, 0xF0, 0x1A, 0x02, 0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFB, 0x61, 0x30, 0xF0, 0x21, 0x6B, -0x74, 0xF0, 0x04, 0x4B, 0x00, 0x68, 0x12, 0xD3, +0x74, 0xF1, 0x0C, 0x4B, 0x00, 0x68, 0x12, 0xD3, 0x14, 0xD0, 0x70, 0x10, 0x12, 0x92, 0x40, 0xA2, 0xFF, 0x72, 0x13, 0xD2, 0x0A, 0x61, 0x7D, 0x67, 0x09, 0xE3, 0x01, 0x6B, 0x6B, 0xEB, 0x20, 0xF0, 0x7A, 0xC2, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, -0x65, 0x10, 0x13, 0x92, 0x30, 0x69, 0x9D, 0x67, -0x38, 0xEA, 0x30, 0xF0, 0x21, 0x6A, 0x73, 0xF0, -0x00, 0x4A, 0x0E, 0x03, 0x0D, 0xE3, 0x04, 0x48, +0x65, 0x10, 0x13, 0x92, 0x32, 0x69, 0x9D, 0x67, +0x38, 0xEA, 0x30, 0xF0, 0x21, 0x6A, 0x33, 0xF1, +0x08, 0x4A, 0x0E, 0x03, 0x0D, 0xE3, 0x04, 0x48, 0x12, 0xE9, 0x25, 0xE2, 0x47, 0x44, 0x45, 0x4A, -0x80, 0xA2, 0x82, 0xC3, 0x4A, 0xA9, 0x03, 0x6C, +0x80, 0xA2, 0x82, 0xC3, 0x4B, 0xA9, 0x03, 0x6C, 0x43, 0xC3, 0x42, 0xA1, 0x44, 0xC3, 0x47, 0xA1, 0x4A, 0x32, 0x8C, 0xEA, 0x45, 0xC3, 0xFF, 0x6B, -0x6C, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xE7, 0xF3, 0xA0, 0x9B, 0xE7, 0xF7, -0x1D, 0x4C, 0xAC, 0xEC, 0x0E, 0x24, 0xE7, 0xF3, -0x64, 0x9B, 0x05, 0x5B, 0x0A, 0x61, 0xCA, 0xA9, +0x6C, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x47, 0xF4, 0xB8, 0x9B, 0xE7, 0xF7, +0x1D, 0x4C, 0xAC, 0xEC, 0x0E, 0x24, 0x47, 0xF4, +0x7C, 0x9B, 0x05, 0x5B, 0x0A, 0x61, 0xCB, 0xA9, 0xE2, 0xA1, 0x13, 0x95, 0x30, 0xF0, 0x20, 0x6C, -0xE4, 0xF2, 0x18, 0x4C, 0x04, 0xD2, 0x80, 0x18, -0x48, 0x43, 0x15, 0x92, 0x02, 0x6B, 0x6E, 0xEA, -0x21, 0x2A, 0x96, 0xA9, 0x0E, 0x03, 0x0D, 0xE3, -0x82, 0xC3, 0x96, 0xA9, 0x02, 0x48, 0x82, 0x34, -0x83, 0xC3, 0x56, 0xC9, 0xFF, 0x6A, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE7, 0xF3, 0x80, 0x9A, 0x08, 0xF0, 0x00, 0x6B, -0x8C, 0xEB, 0x0C, 0x23, 0xE7, 0xF3, 0x44, 0x9A, +0x04, 0xF3, 0x10, 0x4C, 0x04, 0xD2, 0x80, 0x18, +0x52, 0x43, 0x15, 0x92, 0x02, 0x6B, 0x6E, 0xEA, +0x21, 0x2A, 0x97, 0xA9, 0x0E, 0x03, 0x0D, 0xE3, +0x82, 0xC3, 0x97, 0xA9, 0x02, 0x48, 0x82, 0x34, +0x83, 0xC3, 0x57, 0xC9, 0xFF, 0x6A, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x47, 0xF4, 0x98, 0x9A, 0x08, 0xF0, 0x00, 0x6B, +0x8C, 0xEB, 0x0C, 0x23, 0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, 0x08, 0x61, 0x13, 0x95, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xF3, 0x1C, 0x4C, 0x00, 0x6E, -0x80, 0x18, 0x48, 0x43, 0x14, 0x94, 0xFF, 0x6A, +0x20, 0x6C, 0x24, 0xF3, 0x14, 0x4C, 0x00, 0x6E, +0x80, 0x18, 0x52, 0x43, 0x14, 0x94, 0xFF, 0x6A, 0x01, 0x4C, 0x4C, 0xEC, 0x12, 0x92, 0x14, 0xD4, 0x01, 0x4A, 0x12, 0xD2, 0x14, 0x93, 0x15, 0x94, 0x83, 0xEB, 0x8C, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF3, 0x80, 0x9A, +0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, 0x98, 0x9A, 0x08, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x2D, 0x23, -0xE7, 0xF3, 0x44, 0x9A, 0x05, 0x5A, 0x29, 0x61, +0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, 0x29, 0x61, 0x5D, 0x67, 0x20, 0xF0, 0xBA, 0xA2, 0x20, 0xF0, 0xDB, 0xA2, 0x20, 0xF0, 0xFC, 0xA2, 0x20, 0xF0, 0x5D, 0xA2, 0x7D, 0x67, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xD2, 0x20, 0xF0, 0x5E, 0xA3, 0x24, 0xF3, -0x14, 0x4C, 0x05, 0xD2, 0x20, 0xF0, 0x5F, 0xA3, +0x04, 0xD2, 0x20, 0xF0, 0x5E, 0xA3, 0x44, 0xF3, +0x0C, 0x4C, 0x05, 0xD2, 0x20, 0xF0, 0x5F, 0xA3, 0x06, 0xD2, 0x40, 0xF0, 0x40, 0xA3, 0x07, 0xD2, 0x40, 0xF0, 0x41, 0xA3, 0x08, 0xD2, 0x40, 0xF0, 0x42, 0xA3, 0x09, 0xD2, 0x40, 0xF0, 0x43, 0xA3, 0x0A, 0xD2, 0x40, 0xF0, 0x44, 0xA3, 0x0B, 0xD2, 0x40, 0xF0, 0x45, 0xA3, 0x0C, 0xD2, 0x80, 0x18, -0x48, 0x43, 0x9D, 0x67, 0x2C, 0x6A, 0x20, 0xF0, +0x52, 0x43, 0x9D, 0x67, 0x2C, 0x6A, 0x20, 0xF0, 0x58, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x40, 0xF0, 0x06, 0xCC, 0x0E, 0x04, 0x40, 0xEA, 0x19, 0x97, 0x18, 0x91, 0x17, 0x90, @@ -33994,32 +34292,32 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0xF6, 0x40, 0x32, 0x49, 0xE3, 0x08, 0xD2, 0xB4, 0x32, 0x06, 0xD2, 0x06, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x06, 0xD3, 0x03, 0x6A, 0x78, 0x67, -0x6F, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE7, 0xF3, 0x80, 0x9A, 0x07, 0xD3, +0x6F, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x47, 0xF4, 0x98, 0x9A, 0x07, 0xD3, 0x08, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x0B, 0x23, -0xE7, 0xF3, 0x44, 0x9A, 0x05, 0x5A, 0x07, 0x61, -0x08, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF3, -0x10, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x80, 0x18, -0x18, 0x42, 0x00, 0x68, 0x06, 0x91, 0x4E, 0x10, +0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, 0x07, 0x61, +0x08, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF3, +0x08, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x80, 0x18, +0x22, 0x42, 0x00, 0x68, 0x06, 0x91, 0x4E, 0x10, 0x08, 0x94, 0x01, 0x6A, 0x44, 0xE9, 0x8C, 0xEA, -0x1C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x4D, 0xE0, 0x28, 0xF7, 0x2C, 0xC3, -0xE7, 0xF3, 0x80, 0x9A, 0xFF, 0x6B, 0x01, 0x48, +0x1C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x4D, 0xE0, 0xE8, 0xF7, 0x2C, 0xC3, +0x47, 0xF4, 0x98, 0x9A, 0xFF, 0x6B, 0x01, 0x48, 0x6C, 0xE8, 0x07, 0xF7, 0x01, 0x4B, 0x8C, 0xEB, -0x0C, 0x23, 0xE7, 0xF3, 0x44, 0x9A, 0x05, 0x5A, -0x08, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF3, -0x18, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, -0x48, 0x43, 0x07, 0x92, 0x4A, 0xE8, 0x04, 0x60, +0x0C, 0x23, 0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF3, +0x10, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, +0x52, 0x43, 0x07, 0x92, 0x4A, 0xE8, 0x04, 0x60, 0x06, 0x92, 0x1F, 0x4A, 0x2E, 0xEA, 0x23, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE7, 0xF3, 0x80, 0x9A, 0x08, 0xF0, 0x00, 0x6B, -0x8C, 0xEB, 0x12, 0x23, 0xE7, 0xF3, 0x64, 0x9A, -0x05, 0x5B, 0x0E, 0x61, 0x28, 0xF7, 0xCC, 0xA2, -0x28, 0xF7, 0xED, 0xA2, 0x28, 0xF7, 0x4E, 0xA2, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF3, 0x18, 0x4C, -0xB0, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x48, 0x43, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x47, 0xF4, 0x98, 0x9A, 0x08, 0xF0, 0x00, 0x6B, +0x8C, 0xEB, 0x12, 0x23, 0x47, 0xF4, 0x7C, 0x9A, +0x05, 0x5B, 0x0E, 0x61, 0xE8, 0xF7, 0xCC, 0xA2, +0xE8, 0xF7, 0xED, 0xA2, 0xE8, 0xF7, 0x4E, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF3, 0x10, 0x4C, +0xB0, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x52, 0x43, 0x0D, 0x20, 0x07, 0x94, 0x00, 0x68, 0x80, 0x18, -0x67, 0x43, 0x80, 0x18, 0x18, 0x42, 0x01, 0x49, +0x71, 0x43, 0x80, 0x18, 0x22, 0x42, 0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, 0x06, 0x92, 0x20, 0x4A, 0x42, 0xE9, 0xAE, 0x61, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, @@ -34038,7 +34336,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x01, 0x6A, 0x20, 0xF0, 0x4A, 0xC3, 0x09, 0xE3, 0x50, 0xA2, 0x0B, 0x95, 0x0C, 0x96, 0x20, 0xF0, 0x4B, 0xC3, 0x0A, 0x94, 0x0D, 0x97, 0x01, 0x48, -0x80, 0x18, 0x20, 0x41, 0x09, 0x70, 0xE2, 0x61, +0x80, 0x18, 0x2A, 0x41, 0x09, 0x70, 0xE2, 0x61, 0x71, 0x10, 0x08, 0x72, 0x37, 0x61, 0x20, 0xF0, 0x05, 0x04, 0x07, 0x00, 0x04, 0x01, 0x0E, 0xD4, 0x40, 0xA0, 0x0B, 0x5A, 0x01, 0x61, 0x0A, 0x6A, @@ -34047,12 +34345,12 @@ u8 array_mp_8822c_fw_nic[] = { 0x08, 0x6A, 0x20, 0xF0, 0x4A, 0xC4, 0x40, 0xA1, 0x20, 0xF0, 0x4B, 0xC4, 0x00, 0x6A, 0x0E, 0x10, 0x9D, 0x67, 0x55, 0xE4, 0xC0, 0xA1, 0x30, 0xF0, -0x20, 0x6C, 0x2B, 0xF1, 0x18, 0x4C, 0x91, 0xE2, -0xD1, 0xE4, 0x28, 0xF5, 0x88, 0xA4, 0x01, 0x4A, +0x20, 0x6C, 0x8B, 0xF1, 0x00, 0x4C, 0x91, 0xE2, +0xD1, 0xE4, 0xE8, 0xF5, 0x88, 0xA4, 0x01, 0x4A, 0x20, 0xF0, 0x8C, 0xC5, 0xFF, 0x6C, 0x4C, 0xEC, 0x63, 0xEC, 0xEE, 0x61, 0x0A, 0x94, 0x0B, 0x95, 0x0C, 0x96, 0x0D, 0x97, 0x01, 0x48, 0x01, 0x49, -0x80, 0x18, 0x20, 0x41, 0x0E, 0x92, 0x4A, 0xE8, +0x80, 0x18, 0x2A, 0x41, 0x0E, 0x92, 0x4A, 0xE8, 0xCF, 0x61, 0x38, 0x10, 0x09, 0x72, 0x36, 0x61, 0x20, 0xF0, 0x05, 0x03, 0x07, 0x00, 0x04, 0x01, 0x0F, 0xD3, 0x40, 0xA0, 0x0B, 0x5A, 0x01, 0x61, @@ -34061,42 +34359,42 @@ u8 array_mp_8822c_fw_nic[] = { 0x48, 0xC4, 0x09, 0x6A, 0x20, 0xF0, 0x4A, 0xC4, 0x40, 0xA1, 0x20, 0xF0, 0x4B, 0xC4, 0x00, 0x6A, 0x0E, 0x10, 0x9D, 0x67, 0x55, 0xE4, 0xC0, 0xA1, -0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF1, 0x18, 0x4C, -0x91, 0xE2, 0xD1, 0xE4, 0x68, 0xF5, 0x9C, 0xA4, +0x30, 0xF0, 0x20, 0x6C, 0x8B, 0xF1, 0x00, 0x4C, +0x91, 0xE2, 0xD1, 0xE4, 0x28, 0xF6, 0x9C, 0xA4, 0x01, 0x4A, 0x20, 0xF0, 0x8C, 0xC5, 0xFF, 0x6C, 0x4C, 0xEC, 0x63, 0xEC, 0xEE, 0x61, 0x0A, 0x94, 0x0B, 0x95, 0x0C, 0x96, 0x0D, 0x97, 0x01, 0x48, -0x01, 0x49, 0x80, 0x18, 0x20, 0x41, 0x0F, 0x92, +0x01, 0x49, 0x80, 0x18, 0x2A, 0x41, 0x0F, 0x92, 0x4A, 0xE8, 0xCF, 0x61, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x44, 0x67, 0x65, 0xA2, 0x02, 0x6D, 0x81, 0xA4, -0xAC, 0xEB, 0x03, 0x23, 0x80, 0x18, 0x1A, 0x44, +0xAC, 0xEB, 0x03, 0x23, 0x80, 0x18, 0x24, 0x44, 0x3D, 0x10, 0x01, 0x74, 0x22, 0xA2, 0x04, 0xA2, 0x43, 0xA2, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6C, -0xE4, 0xF3, 0x00, 0x4C, 0x80, 0x18, 0x06, 0x43, +0xE4, 0xF3, 0x18, 0x4C, 0x80, 0x18, 0x10, 0x43, 0x31, 0x10, 0x10, 0x30, 0x08, 0x74, 0x4D, 0xE8, -0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF3, -0x0C, 0x4C, 0x80, 0x18, 0x06, 0x43, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x45, 0xE1, -0x28, 0xF5, 0x08, 0xC1, 0x1F, 0x10, 0x09, 0x74, 0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF4, -0x0C, 0x4C, 0x80, 0x18, 0x06, 0x43, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x45, 0xE1, -0x68, 0xF5, 0x1C, 0xC1, 0x0F, 0x10, 0x0A, 0x74, -0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, -0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF4, -0x1C, 0x4C, 0xF9, 0x6D, 0x28, 0xF3, 0x01, 0x6E, -0x80, 0x18, 0x48, 0x43, 0x07, 0x97, 0x06, 0x91, +0x04, 0x4C, 0x80, 0x18, 0x10, 0x43, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x45, 0xE1, +0xE8, 0xF5, 0x08, 0xC1, 0x1F, 0x10, 0x09, 0x74, +0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF4, +0x04, 0x4C, 0x80, 0x18, 0x10, 0x43, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x45, 0xE1, +0x28, 0xF6, 0x1C, 0xC1, 0x0F, 0x10, 0x0A, 0x74, +0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, +0xF8, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF4, +0x14, 0x4C, 0xF9, 0x6D, 0x28, 0xF3, 0x01, 0x6E, +0x80, 0x18, 0x52, 0x43, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x30, 0x6B, 0x78, 0xEC, 0x30, 0xF0, 0x21, 0x6E, -0x73, 0xF0, 0x00, 0x4E, 0xAC, 0xEA, 0x05, 0x6D, +0x32, 0x6B, 0x78, 0xEC, 0x30, 0xF0, 0x21, 0x6E, +0x33, 0xF1, 0x08, 0x4E, 0xAC, 0xEA, 0x05, 0x6D, 0x12, 0xEB, 0x6D, 0xE6, 0xDD, 0x67, 0xAF, 0xCE, 0x0F, 0x6D, 0xB0, 0xC6, 0x92, 0xC6, 0x53, 0xC6, -0x5B, 0xA3, 0x07, 0x97, 0x04, 0x94, 0x54, 0xC6, -0x5C, 0xA3, 0x55, 0xC6, 0x5D, 0xA3, 0x56, 0xC6, -0x05, 0x95, 0x06, 0x96, 0x80, 0x18, 0x20, 0x41, +0x5D, 0xA3, 0x07, 0x97, 0x04, 0x94, 0x54, 0xC6, +0x5E, 0xA3, 0x55, 0xC6, 0x5F, 0xA3, 0x56, 0xC6, +0x05, 0x95, 0x06, 0x96, 0x80, 0x18, 0x2A, 0x41, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, 0x14, 0x92, 0x15, 0x93, 0x16, 0x90, 0x0A, 0xD2, @@ -34104,11 +34402,11 @@ u8 array_mp_8822c_fw_nic[] = { 0x58, 0x67, 0xCC, 0xEA, 0x17, 0x91, 0x1A, 0x65, 0x0A, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEF, 0xAC, 0xEA, 0xAC, 0xEB, 0xAC, 0xE8, 0xAC, 0xE9, -0x30, 0xF0, 0x20, 0x6D, 0x2B, 0xF1, 0x18, 0x4D, -0xE7, 0xF3, 0xC0, 0x9D, 0x0A, 0xD2, 0x8C, 0xEE, -0x36, 0x26, 0xE7, 0xF3, 0x84, 0x9D, 0x05, 0x6A, +0x30, 0xF0, 0x20, 0x6D, 0x8B, 0xF1, 0x00, 0x4D, +0x47, 0xF4, 0xD8, 0x9D, 0x0A, 0xD2, 0x8C, 0xEE, +0x36, 0x26, 0x47, 0xF4, 0x9C, 0x9D, 0x05, 0x6A, 0x4E, 0xEC, 0x31, 0x2C, 0x30, 0xF0, 0x20, 0x6C, -0xA3, 0xF3, 0x90, 0x9C, 0x28, 0xF7, 0xB0, 0x9D, +0xC3, 0xF3, 0x94, 0x9C, 0xE8, 0xF7, 0xB0, 0x9D, 0x7F, 0x4A, 0x7C, 0x4A, 0xAC, 0xEC, 0x4E, 0xEC, 0x26, 0x2C, 0x9D, 0x67, 0x47, 0x44, 0x19, 0x4A, 0x40, 0xA2, 0xF4, 0xC4, 0xE2, 0x37, 0x52, 0xC4, @@ -34119,227 +34417,228 @@ u8 array_mp_8822c_fw_nic[] = { 0x50, 0xC4, 0x62, 0x33, 0x02, 0x30, 0x22, 0x31, 0x0C, 0x6A, 0x79, 0xC4, 0x1B, 0xC4, 0x3D, 0xC4, 0x4F, 0xCC, 0x05, 0x95, 0x04, 0x94, 0x06, 0x96, -0x07, 0x97, 0x80, 0x18, 0x20, 0x41, 0x0F, 0x97, +0x07, 0x97, 0x80, 0x18, 0x2A, 0x41, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x40, 0xA4, 0x70, 0x69, 0x30, 0xF0, 0x20, 0x68, -0x06, 0xD2, 0x81, 0xA4, 0x2B, 0xF1, 0x18, 0x48, +0x06, 0xD2, 0x81, 0xA4, 0x8B, 0xF1, 0x00, 0x48, 0x05, 0xD4, 0x05, 0x92, 0x9E, 0x33, 0x07, 0xD3, 0x8C, 0xE9, 0x7D, 0x67, 0x03, 0x6C, 0x8C, 0xEA, 0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, 0x32, 0x31, -0x04, 0xD2, 0x9D, 0x67, 0x09, 0xE1, 0x07, 0xF7, +0x04, 0xD2, 0x9D, 0x67, 0x09, 0xE1, 0x87, 0xF7, 0x6E, 0xC2, 0x67, 0x44, 0x09, 0x4B, 0x80, 0xA3, -0x07, 0xF7, 0x90, 0xC2, 0x30, 0xF0, 0x20, 0x6C, -0x44, 0xF4, 0x08, 0x4C, 0x80, 0x18, 0x48, 0x43, +0x87, 0xF7, 0x90, 0xC2, 0x30, 0xF0, 0x20, 0x6C, +0x64, 0xF4, 0x00, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x5D, 0x67, 0x67, 0x42, 0x15, 0x4B, 0x40, 0xA3, -0x07, 0x93, 0x07, 0xF7, 0x57, 0xC0, 0x21, 0x23, -0x07, 0xF7, 0x74, 0xA0, 0x01, 0x6A, 0x44, 0xE9, -0x6D, 0xEA, 0x07, 0xF7, 0x54, 0xC0, 0xE7, 0xF3, -0x40, 0x98, 0x10, 0x6B, 0x6C, 0xEA, 0x0D, 0x22, -0xE7, 0xF3, 0x44, 0x98, 0x05, 0x5A, 0x09, 0x61, +0x07, 0x93, 0x87, 0xF7, 0x57, 0xC0, 0x21, 0x23, +0x87, 0xF7, 0x74, 0xA0, 0x01, 0x6A, 0x44, 0xE9, +0x6D, 0xEA, 0x87, 0xF7, 0x54, 0xC0, 0x47, 0xF4, +0x58, 0x98, 0x10, 0x6B, 0x6C, 0xEA, 0x0D, 0x22, +0x47, 0xF4, 0x5C, 0x98, 0x05, 0x5A, 0x09, 0x61, 0x04, 0x96, 0x06, 0x97, 0x30, 0xF0, 0x20, 0x6C, -0x44, 0xF4, 0x14, 0x4C, 0xB1, 0x67, 0x80, 0x18, -0x48, 0x43, 0x05, 0x94, 0x0C, 0x6D, 0x8C, 0xED, -0xAA, 0x35, 0x91, 0x67, 0x80, 0x18, 0x6A, 0x4D, -0x23, 0x10, 0x07, 0xF7, 0x74, 0xA0, 0x01, 0x6A, -0x44, 0xE9, 0x4F, 0xEA, 0x6C, 0xEA, 0x07, 0xF7, -0x54, 0xC0, 0xE7, 0xF3, 0x40, 0x98, 0x10, 0x6B, -0x6C, 0xEA, 0x0D, 0x22, 0xE7, 0xF3, 0x44, 0x98, +0x64, 0xF4, 0x0C, 0x4C, 0xB1, 0x67, 0x80, 0x18, +0x52, 0x43, 0x05, 0x94, 0x0C, 0x6D, 0x8C, 0xED, +0xAA, 0x35, 0x91, 0x67, 0x80, 0x18, 0xB0, 0x4D, +0x23, 0x10, 0x87, 0xF7, 0x74, 0xA0, 0x01, 0x6A, +0x44, 0xE9, 0x4F, 0xEA, 0x6C, 0xEA, 0x87, 0xF7, +0x54, 0xC0, 0x47, 0xF4, 0x58, 0x98, 0x10, 0x6B, +0x6C, 0xEA, 0x0D, 0x22, 0x47, 0xF4, 0x5C, 0x98, 0x05, 0x5A, 0x09, 0x61, 0x04, 0x96, 0x06, 0x97, -0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF4, 0x08, 0x4C, -0xB1, 0x67, 0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x45, 0xE1, -0x01, 0x6A, 0x4B, 0xEA, 0x07, 0xF7, 0x4E, 0xC1, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF4, 0x00, 0x4C, +0xB1, 0x67, 0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x45, 0xE1, +0x01, 0x6A, 0x4B, 0xEA, 0x87, 0xF7, 0x4E, 0xC1, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0x40, 0xA4, 0x30, 0x68, +0x0E, 0xD1, 0x0D, 0xD0, 0x40, 0xA4, 0x32, 0x68, 0x20, 0x6B, 0x18, 0xEA, 0x06, 0xD2, 0x30, 0xF0, -0x21, 0x6A, 0x73, 0xF0, 0x00, 0x4A, 0x24, 0x67, -0x12, 0xE8, 0x01, 0xE2, 0x58, 0xA0, 0x0A, 0xD2, -0x42, 0xA4, 0xBA, 0xA0, 0x58, 0xC0, 0x43, 0xA4, +0x21, 0x6A, 0x33, 0xF1, 0x08, 0x4A, 0x24, 0x67, +0x12, 0xE8, 0x01, 0xE2, 0x5A, 0xA0, 0x0A, 0xD2, +0x42, 0xA4, 0xBC, 0xA0, 0x5A, 0xC0, 0x43, 0xA4, 0x01, 0x6C, 0x6C, 0xEA, 0xBF, 0x4B, 0xAC, 0xEB, -0x4D, 0xEB, 0x7A, 0xC0, 0x43, 0xA1, 0xA8, 0xA0, +0x4D, 0xEB, 0x7C, 0xC0, 0x43, 0xA1, 0xA8, 0xA0, 0x4C, 0xEC, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x8D, 0xEA, 0x5A, 0xC0, 0x83, 0xA1, 0x02, 0x6B, +0x8D, 0xEA, 0x5C, 0xC0, 0x83, 0xA1, 0x02, 0x6B, 0x6C, 0xEC, 0xFB, 0x4B, 0x4C, 0xEB, 0x8D, 0xEB, -0x7A, 0xC0, 0x83, 0xA1, 0x40, 0x6A, 0x4C, 0xEC, +0x7C, 0xC0, 0x83, 0xA1, 0x40, 0x6A, 0x4C, 0xEC, 0x80, 0x4A, 0xFF, 0x4A, 0x6C, 0xEA, 0x8D, 0xEA, -0x5A, 0xC0, 0x83, 0xA1, 0x7F, 0x6B, 0xAC, 0xEB, +0x5C, 0xC0, 0x83, 0xA1, 0x7F, 0x6B, 0xAC, 0xEB, 0x9E, 0x34, 0x9C, 0x34, 0x8D, 0xEB, 0x68, 0xC0, -0x83, 0xA1, 0x09, 0xD4, 0x64, 0xA1, 0x7E, 0xC0, -0x65, 0xA1, 0x07, 0xD3, 0x86, 0xA1, 0x04, 0x6B, -0x8C, 0xEB, 0x6B, 0x33, 0x08, 0xD4, 0x20, 0xF0, -0x6E, 0xC0, 0x20, 0x6B, 0x6C, 0xEA, 0x22, 0x22, -0x06, 0x94, 0x80, 0x18, 0x4F, 0x47, 0xC7, 0xA0, -0x03, 0x6C, 0xB8, 0xA0, 0xCA, 0x36, 0x8C, 0xEE, -0x06, 0x94, 0xFF, 0x6A, 0x4C, 0xEE, 0x80, 0x18, -0xFD, 0x50, 0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, -0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x0E, 0x22, -0xE7, 0xA0, 0x03, 0x6C, 0x06, 0x95, 0xEA, 0x37, -0xD8, 0xA0, 0x8C, 0xEF, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x6C, 0x84, 0xF4, 0x00, 0x4C, 0x4C, 0xEF, -0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF5, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, -0x0E, 0x22, 0x5E, 0xA0, 0xD8, 0xA0, 0xE3, 0xA1, -0x04, 0xD2, 0x20, 0xF0, 0x4E, 0xA0, 0x06, 0x95, +0x83, 0xA1, 0x09, 0xD4, 0x64, 0xA1, 0x20, 0xF0, +0x60, 0xC0, 0x65, 0xA1, 0x07, 0xD3, 0x86, 0xA1, +0x04, 0x6B, 0x8C, 0xEB, 0x6B, 0x33, 0x08, 0xD4, +0x20, 0xF0, 0x70, 0xC0, 0x20, 0x6B, 0x6C, 0xEA, +0x22, 0x22, 0x06, 0x94, 0x80, 0x18, 0x5B, 0x47, +0xC7, 0xA0, 0x03, 0x6C, 0xBA, 0xA0, 0xCA, 0x36, +0x8C, 0xEE, 0x06, 0x94, 0xFF, 0x6A, 0x4C, 0xEE, +0x80, 0x18, 0x5D, 0x51, 0x30, 0xF0, 0x21, 0x6A, +0xD2, 0xF5, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, +0x0E, 0x22, 0xE7, 0xA0, 0x03, 0x6C, 0x06, 0x95, +0xEA, 0x37, 0xDA, 0xA0, 0x8C, 0xEF, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF4, 0x18, 0x4C, -0x05, 0xD2, 0x80, 0x18, 0x48, 0x43, 0x09, 0x93, -0x08, 0x6A, 0x6C, 0xEA, 0x19, 0x22, 0x30, 0xF0, -0x21, 0x6A, 0x12, 0xF5, 0x58, 0x9A, 0x08, 0x94, -0x20, 0x6B, 0x03, 0x69, 0x6C, 0xEA, 0x8C, 0xE9, -0x09, 0x22, 0x06, 0x95, 0x07, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0xA4, 0xF4, 0x18, 0x4C, 0xF1, 0x67, -0x80, 0x18, 0x48, 0x43, 0x06, 0x94, 0x07, 0x95, -0x00, 0x6E, 0xF1, 0x67, 0x80, 0x18, 0x9F, 0x4D, -0xFA, 0xA0, 0xD8, 0xA0, 0x06, 0x94, 0x0A, 0x95, -0x01, 0x6A, 0xF6, 0x37, 0x4C, 0xEF, 0x80, 0x18, -0x9E, 0x4C, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, -0x08, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x03, 0xA4, 0x44, 0xA4, 0xC0, 0xA4, -0x00, 0x30, 0x00, 0x30, 0x00, 0xF6, 0x40, 0x32, -0xA5, 0xA4, 0xE6, 0xA4, 0x0D, 0xEA, 0x01, 0xA4, -0x82, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0x0D, 0xEA, -0x80, 0x34, 0x2B, 0xF1, 0x18, 0x4B, 0x8D, 0xEA, -0xE7, 0xF3, 0x40, 0xDB, 0x28, 0xF7, 0xD1, 0xC3, -0x0A, 0x26, 0x01, 0x6C, 0x4C, 0xEC, 0x07, 0x24, -0x28, 0xF7, 0xB2, 0xC3, 0x28, 0xF7, 0xF3, 0xC3, -0x02, 0x25, 0x80, 0x18, 0x6C, 0x52, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xA4, 0x30, 0xF0, 0x20, 0x6D, -0xA3, 0xF3, 0x58, 0x9A, 0xA3, 0xF3, 0xBC, 0x9D, -0x0C, 0x33, 0x49, 0xE3, 0x03, 0x4C, 0xAD, 0xE3, -0xA0, 0xA4, 0x01, 0x4C, 0xA0, 0xC2, 0x01, 0x4A, -0x6A, 0xEA, 0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF3, 0x60, 0x9A, -0x20, 0x6C, 0x8C, 0xEB, 0x11, 0x23, 0xE7, 0xF3, -0x44, 0x9A, 0x05, 0x5A, 0x0D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF3, 0x58, 0x9A, 0x0C, 0x33, -0x30, 0xF0, 0x20, 0x6C, 0x49, 0xE3, 0xA0, 0x9A, -0xC4, 0xF4, 0x14, 0x4C, 0x80, 0x18, 0x48, 0x43, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x58, 0x9A, -0x0C, 0x33, 0x30, 0xF0, 0x20, 0x6C, 0x49, 0xE3, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x60, 0x9B, -0x40, 0x9A, 0x2B, 0xF1, 0x18, 0x4C, 0xFF, 0x6E, -0x6C, 0xEA, 0x87, 0xF3, 0x61, 0xA4, 0x87, 0xF3, -0x86, 0xA4, 0xAF, 0x43, 0xCC, 0xED, 0x02, 0x5D, -0x04, 0x61, 0x01, 0x74, 0x02, 0x60, 0x02, 0x74, -0x11, 0x61, 0x10, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x68, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x54, 0x9A, -0x60, 0xDA, 0xF0, 0x17, 0x03, 0x73, 0x13, 0x61, -0x00, 0xF4, 0x00, 0x5A, 0x10, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x44, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, -0x54, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x90, 0x67, -0x80, 0x18, 0xF0, 0x4D, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x20, 0xA4, 0x30, 0x6E, -0x30, 0xF0, 0x21, 0x6A, 0xD8, 0xE9, 0x73, 0xF0, -0x00, 0x4A, 0x61, 0xA4, 0x7E, 0x33, 0x68, 0x33, -0x12, 0xE8, 0x01, 0xE2, 0xAC, 0xA0, 0x05, 0x6A, -0x4B, 0xEA, 0xAC, 0xEA, 0x6D, 0xEA, 0x4C, 0xC0, -0xA1, 0xA4, 0x60, 0x6B, 0xAC, 0xEB, 0x76, 0x33, -0x06, 0xD3, 0xE8, 0xA0, 0x1F, 0x6B, 0xAC, 0xEB, -0x20, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0x6D, 0xED, -0xA8, 0xC0, 0xE2, 0xA4, 0x41, 0x6B, 0x6B, 0xEB, -0xFE, 0x37, 0xF8, 0x37, 0xAC, 0xEB, 0xED, 0xEB, -0x68, 0xC0, 0xA2, 0xA4, 0x40, 0x6F, 0xEC, 0xED, -0xBA, 0x35, 0xB4, 0x37, 0x21, 0x6D, 0xAB, 0xED, -0x6C, 0xED, 0xED, 0xED, 0xA8, 0xC0, 0xA2, 0xA4, -0x03, 0x6B, 0xCC, 0xED, 0xCC, 0x4E, 0xB2, 0x35, -0xCC, 0xEA, 0xAD, 0xEA, 0x4C, 0xC0, 0x42, 0xA4, -0x08, 0x6D, 0x03, 0x4C, 0x4C, 0xED, 0xAE, 0x35, -0x07, 0xD5, 0x4C, 0xEB, 0x47, 0xA0, 0x30, 0xF0, -0x20, 0x6D, 0xA3, 0xF3, 0xB8, 0x9D, 0xCC, 0xEA, -0x6D, 0xEA, 0x47, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x50, 0x9A, 0x2C, 0x33, 0x49, 0xE3, +0x4C, 0xEF, 0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, +0x21, 0x6A, 0xD2, 0xF5, 0x58, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x0F, 0x22, 0x20, 0xF0, 0x40, 0xA0, +0xDA, 0xA0, 0xE3, 0xA1, 0x04, 0xD2, 0x20, 0xF0, +0x50, 0xA0, 0x06, 0x95, 0x30, 0xF0, 0x20, 0x6C, +0xA4, 0xF4, 0x10, 0x4C, 0x05, 0xD2, 0x80, 0x18, +0x52, 0x43, 0x09, 0x93, 0x08, 0x6A, 0x6C, 0xEA, +0x19, 0x22, 0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, +0x58, 0x9A, 0x08, 0x94, 0x20, 0x6B, 0x03, 0x69, +0x6C, 0xEA, 0x8C, 0xE9, 0x09, 0x22, 0x06, 0x95, +0x07, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF4, +0x10, 0x4C, 0xF1, 0x67, 0x80, 0x18, 0x52, 0x43, +0x06, 0x94, 0x07, 0x95, 0x00, 0x6E, 0xF1, 0x67, +0x80, 0x18, 0xE5, 0x4D, 0xFC, 0xA0, 0xDA, 0xA0, +0x06, 0x94, 0x0A, 0x95, 0x01, 0x6A, 0xF6, 0x37, +0x4C, 0xEF, 0x80, 0x18, 0xE4, 0x4C, 0x0F, 0x97, +0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x03, 0xA4, +0x44, 0xA4, 0xC0, 0xA4, 0x00, 0x30, 0x00, 0x30, +0x00, 0xF6, 0x40, 0x32, 0xA5, 0xA4, 0xE6, 0xA4, +0x0D, 0xEA, 0x01, 0xA4, 0x82, 0xA4, 0x30, 0xF0, +0x20, 0x6B, 0x0D, 0xEA, 0x80, 0x34, 0x8B, 0xF1, +0x00, 0x4B, 0x8D, 0xEA, 0x47, 0xF4, 0x58, 0xDB, +0xE8, 0xF7, 0xD1, 0xC3, 0x0A, 0x26, 0x01, 0x6C, +0x4C, 0xEC, 0x07, 0x24, 0xE8, 0xF7, 0xB2, 0xC3, +0xE8, 0xF7, 0xF3, 0xC3, 0x02, 0x25, 0x80, 0x18, +0xD2, 0x52, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xA4, +0x30, 0xF0, 0x20, 0x6D, 0xC3, 0xF3, 0x5C, 0x9A, +0xE3, 0xF3, 0xA0, 0x9D, 0x0C, 0x33, 0x49, 0xE3, +0x03, 0x4C, 0xAD, 0xE3, 0xA0, 0xA4, 0x01, 0x4C, +0xA0, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFA, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x47, 0xF4, 0x78, 0x9A, 0x20, 0x6C, 0x8C, 0xEB, +0x11, 0x23, 0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, +0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, +0x5C, 0x9A, 0x0C, 0x33, 0x30, 0xF0, 0x20, 0x6C, +0x49, 0xE3, 0xA0, 0x9A, 0xE4, 0xF4, 0x0C, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF3, 0x5C, 0x9A, 0x0C, 0x33, 0x30, 0xF0, +0x20, 0x6C, 0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF3, 0x64, 0x9B, 0x40, 0x9A, 0x8B, 0xF1, +0x00, 0x4C, 0xFF, 0x6E, 0x6C, 0xEA, 0xE7, 0xF3, +0x79, 0xA4, 0xE7, 0xF3, 0x9E, 0xA4, 0xAF, 0x43, +0xCC, 0xED, 0x02, 0x5D, 0x04, 0x61, 0x01, 0x74, +0x02, 0x60, 0x02, 0x74, 0x11, 0x61, 0x10, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x48, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF3, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF0, 0x58, 0x9A, 0x60, 0xDA, 0xF0, 0x17, +0x03, 0x73, 0x13, 0x61, 0x00, 0xF4, 0x00, 0x5A, +0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF3, 0x70, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF0, 0x58, 0x9A, 0x60, 0xDA, +0xF0, 0x17, 0x90, 0x67, 0x80, 0x18, 0x37, 0x4E, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x20, 0xA4, 0x32, 0x68, 0x30, 0xF0, 0x21, 0x6A, +0x18, 0xE9, 0x33, 0xF1, 0x08, 0x4A, 0x61, 0xA4, +0x7E, 0x33, 0x68, 0x33, 0x12, 0xE8, 0x01, 0xE2, +0xAC, 0xA0, 0x05, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, +0x6D, 0xEA, 0x4C, 0xC0, 0xA1, 0xA4, 0x60, 0x6B, +0xAC, 0xEB, 0x76, 0x33, 0x06, 0xD3, 0xC8, 0xA0, +0x1F, 0x6B, 0xAC, 0xEB, 0x20, 0x6D, 0xAB, 0xED, +0xCC, 0xED, 0x6D, 0xED, 0xA8, 0xC0, 0xC2, 0xA4, +0x41, 0x6B, 0x6B, 0xEB, 0xDE, 0x36, 0xD8, 0x36, +0xAC, 0xEB, 0xCD, 0xEB, 0x68, 0xC0, 0xA2, 0xA4, +0x40, 0x6E, 0xCC, 0xED, 0xBA, 0x35, 0xB4, 0x36, +0x21, 0x6D, 0xAB, 0xED, 0x6C, 0xED, 0xCD, 0xED, +0xA8, 0xC0, 0xA2, 0xA4, 0x30, 0x6B, 0x04, 0x6E, +0x6C, 0xED, 0xCB, 0xEE, 0xB2, 0x35, 0xCC, 0xEA, +0xAD, 0xEA, 0x4C, 0xC0, 0x42, 0xA4, 0x08, 0x6D, +0x03, 0x6B, 0x4C, 0xED, 0xAE, 0x35, 0x07, 0xD5, +0x4C, 0xEB, 0x47, 0xA0, 0x30, 0xF0, 0x20, 0x6D, +0xC3, 0xF3, 0xBC, 0x9D, 0xCC, 0xEA, 0x6D, 0xEA, +0x47, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x54, 0x9A, 0x2C, 0x33, 0x03, 0x4C, 0x49, 0xE3, 0xAD, 0xE3, 0xA0, 0xA4, 0x01, 0x4C, 0xA0, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFA, 0x61, 0x07, 0x92, 0x09, 0x2A, 0x67, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, 0x48, 0x34, 0x0D, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x8D, 0xEA, 0x47, 0xC0, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF5, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, +0xD2, 0xF5, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x13, 0x22, 0x8C, 0xA0, 0xC7, 0xA0, 0x03, 0x6A, 0x8A, 0x33, 0x4C, 0xEC, 0xCA, 0x37, 0x01, 0x6D, 0x05, 0xD4, 0x30, 0xF0, 0x20, 0x6C, 0xAC, 0xEB, -0xE4, 0xF4, 0x00, 0x4C, 0xB1, 0x67, 0x4C, 0xEE, -0x4C, 0xEF, 0x04, 0xD3, 0x80, 0x18, 0x48, 0x43, -0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, 0x58, 0x9A, +0xE4, 0xF4, 0x18, 0x4C, 0xB1, 0x67, 0x4C, 0xEE, +0x4C, 0xEF, 0x04, 0xD3, 0x80, 0x18, 0x52, 0x43, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x12, 0x22, 0x06, 0x94, 0x48, 0xA0, 0x01, 0x6B, 0x04, 0xD4, 0x07, 0x94, 0x5A, 0x35, 0x56, 0x36, 0x05, 0xD4, 0x1F, 0x6F, -0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF5, 0x08, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF5, 0x00, 0x4C, 0x6C, 0xED, 0x6C, 0xEE, 0x4C, 0xEF, 0x80, 0x18, -0x48, 0x43, 0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, +0x52, 0x43, 0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x0D, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x54, 0x9A, 0x2C, 0x33, 0x30, 0xF0, 0x20, 0x6C, 0x49, 0xE3, -0xA0, 0x9A, 0x24, 0xF5, 0x14, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x50, 0x9A, 0x2C, 0x33, 0x49, 0xE3, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x87, 0xF3, 0x81, 0xA2, 0x01, 0x74, 0x04, 0x60, -0x87, 0xF3, 0x46, 0xA2, 0x01, 0x72, 0x16, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x54, 0x9A, +0xA0, 0x9A, 0x44, 0xF5, 0x0C, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x54, 0x9A, 0x2C, 0x33, 0x49, 0xE3, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xE7, 0xF3, 0x99, 0xA2, 0x01, 0x74, 0x04, 0x60, +0xE7, 0xF3, 0x5E, 0xA2, 0x01, 0x72, 0x16, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x58, 0x9A, 0x63, 0xEA, 0x10, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x78, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, 0x54, 0x9A, +0xE3, 0xF3, 0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x58, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x47, 0xA0, 0x03, 0x6B, 0x4A, 0x32, 0x6C, 0xEA, 0x30, 0xF0, 0x21, 0x6B, -0xB2, 0xF4, 0x78, 0xA3, 0x05, 0x73, 0x11, 0x61, -0x38, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x7C, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF0, 0x54, 0x9A, 0x60, 0xDA, +0x72, 0xF5, 0x78, 0xA3, 0x05, 0x73, 0x11, 0x61, +0x38, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF4, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF0, 0x58, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x06, 0x73, 0x12, 0x61, 0x02, 0x5A, -0x24, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF3, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF0, 0x54, 0x9A, 0x60, 0xDA, +0x24, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF4, 0x64, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF0, 0x58, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x07, 0x73, 0x12, 0x61, 0x03, 0x72, -0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF3, 0x64, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF0, 0x54, 0x9A, 0x60, 0xDA, -0xF0, 0x17, 0x30, 0xF0, 0x21, 0x6A, 0xB2, 0xF4, +0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF4, 0x68, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF0, 0x58, 0x9A, 0x60, 0xDA, +0xF0, 0x17, 0x30, 0xF0, 0x21, 0x6A, 0x72, 0xF5, 0x5A, 0xA2, 0x02, 0x72, 0x14, 0x61, 0x6C, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x44, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, -0x54, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x91, 0x67, -0x80, 0x18, 0xF0, 0x4D, 0x06, 0x92, 0x0D, 0x22, +0x20, 0x6A, 0xE3, 0xF3, 0x48, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, +0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, +0x58, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x91, 0x67, +0x80, 0x18, 0x37, 0x4E, 0x06, 0x92, 0x0D, 0x22, 0x04, 0x6B, 0xC7, 0xA0, 0x4F, 0xE3, 0x09, 0x6A, 0x44, 0xEB, 0xFF, 0x6D, 0xCA, 0x36, 0x4C, 0xED, 0x03, 0x6A, 0x91, 0x67, 0x4C, 0xEE, 0x80, 0x18, -0xFD, 0x50, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x5D, 0x51, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0xC0, 0x4C, 0x4C, 0xEC, 0x13, 0x5C, 0x3B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x02, 0xF3, 0x0C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x85, 0x67, 0x80, 0x18, -0xC3, 0x45, 0x2F, 0x10, 0x85, 0x67, 0x80, 0x18, -0x1B, 0x45, 0x2B, 0x10, 0x85, 0x67, 0x80, 0x18, -0x86, 0x45, 0x27, 0x10, 0x85, 0x67, 0x80, 0x18, -0x76, 0x44, 0x23, 0x10, 0x85, 0x67, 0x80, 0x18, -0x5A, 0x43, 0x1F, 0x10, 0x85, 0x67, 0x80, 0x18, -0x71, 0x45, 0x1B, 0x10, 0x85, 0x67, 0x80, 0x18, -0xD1, 0x43, 0x17, 0x10, 0x85, 0x67, 0x80, 0x18, -0xDE, 0x44, 0x13, 0x10, 0x85, 0x67, 0x80, 0x18, -0x71, 0x42, 0x0F, 0x10, 0x85, 0x67, 0x80, 0x18, -0x1F, 0x42, 0x0B, 0x10, 0x85, 0x67, 0x80, 0x18, -0x50, 0x42, 0x07, 0x10, 0x85, 0x67, 0x80, 0x18, -0xB0, 0x46, 0x03, 0x10, 0x85, 0x67, 0x80, 0x18, -0x5D, 0x53, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x05, 0x6B, 0xE7, 0xF3, 0x64, 0xDA, 0x09, 0x6B, -0xE7, 0xF3, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xCE, 0x45, 0x2F, 0x10, 0x85, 0x67, 0x80, 0x18, +0x25, 0x45, 0x2B, 0x10, 0x85, 0x67, 0x80, 0x18, +0x91, 0x45, 0x27, 0x10, 0x85, 0x67, 0x80, 0x18, +0x80, 0x44, 0x23, 0x10, 0x85, 0x67, 0x80, 0x18, +0x64, 0x43, 0x1F, 0x10, 0x85, 0x67, 0x80, 0x18, +0x7C, 0x45, 0x1B, 0x10, 0x85, 0x67, 0x80, 0x18, +0xDB, 0x43, 0x17, 0x10, 0x85, 0x67, 0x80, 0x18, +0xE8, 0x44, 0x13, 0x10, 0x85, 0x67, 0x80, 0x18, +0x7B, 0x42, 0x0F, 0x10, 0x85, 0x67, 0x80, 0x18, +0x29, 0x42, 0x0B, 0x10, 0x85, 0x67, 0x80, 0x18, +0x5A, 0x42, 0x07, 0x10, 0x85, 0x67, 0x80, 0x18, +0xBC, 0x46, 0x03, 0x10, 0x85, 0x67, 0x80, 0x18, +0xC3, 0x53, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x05, 0x6B, 0x47, 0xF4, 0x7C, 0xDA, 0x09, 0x6B, +0x47, 0xF4, 0x78, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x40, 0xF3, 0xCE, 0xAC, 0xC0, 0xF3, +0x20, 0x68, 0x40, 0xF3, 0xD6, 0xAC, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF6, 0x00, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xFF, 0x6D, 0x63, 0xF6, 0x00, 0x6C, 0x01, 0x4D, @@ -34351,324 +34650,325 @@ u8 array_mp_8822c_fw_nic[] = { 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x91, 0x67, 0xC5, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x00, 0x6A, 0x40, 0xF3, 0x4B, 0xC4, 0x40, 0xF3, -0x4A, 0xC4, 0x05, 0x6A, 0x40, 0xF3, 0x49, 0xC4, -0x00, 0x6A, 0x40, 0xF3, 0x50, 0xDC, 0x20, 0xE8, +0x00, 0x6A, 0x40, 0xF3, 0x53, 0xC4, 0x40, 0xF3, +0x52, 0xC4, 0x05, 0x6A, 0x40, 0xF3, 0x51, 0xC4, +0x00, 0x6A, 0x40, 0xF3, 0x58, 0xDC, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x60, 0xA4, 0x80, 0x6A, 0x30, 0xF0, 0x20, 0x68, -0x4B, 0xEA, 0x2B, 0xF1, 0x18, 0x48, 0x6C, 0xEA, -0x07, 0xF7, 0x5B, 0xC0, 0x60, 0xA4, 0x0F, 0x6A, -0x24, 0x67, 0x6C, 0xEA, 0x07, 0xF7, 0x58, 0xC0, -0x41, 0xA4, 0x07, 0xF7, 0x78, 0xA0, 0x30, 0xF0, -0x21, 0x6C, 0x07, 0xF7, 0x59, 0xC0, 0x00, 0x6A, -0x01, 0x4B, 0x07, 0xF7, 0x5A, 0xC0, 0x01, 0x6A, -0x44, 0xEB, 0xFF, 0x4A, 0x12, 0xF5, 0x08, 0x4C, -0x07, 0xF7, 0x5E, 0xC8, 0x80, 0x18, 0x90, 0x46, -0xE7, 0xF3, 0x60, 0x98, 0x10, 0xF0, 0x00, 0x6A, +0x4B, 0xEA, 0x8B, 0xF1, 0x00, 0x48, 0x6C, 0xEA, +0x87, 0xF7, 0x5B, 0xC0, 0x60, 0xA4, 0x0F, 0x6A, +0x24, 0x67, 0x6C, 0xEA, 0x87, 0xF7, 0x58, 0xC0, +0x41, 0xA4, 0x87, 0xF7, 0x78, 0xA0, 0x30, 0xF0, +0x21, 0x6C, 0x87, 0xF7, 0x59, 0xC0, 0x00, 0x6A, +0x01, 0x4B, 0x87, 0xF7, 0x5A, 0xC0, 0x01, 0x6A, +0x44, 0xEB, 0xFF, 0x4A, 0xD2, 0xF5, 0x08, 0x4C, +0x87, 0xF7, 0x5E, 0xC8, 0x80, 0x18, 0x9C, 0x46, +0x47, 0xF4, 0x78, 0x98, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, 0xA1, 0xA1, 0xC0, 0xA1, -0x07, 0xF7, 0xFE, 0xA8, 0x30, 0xF0, 0x20, 0x6C, -0x44, 0xF5, 0x00, 0x4C, 0x80, 0x18, 0x48, 0x43, +0x87, 0xF7, 0xFE, 0xA8, 0x30, 0xF0, 0x20, 0x6C, +0x44, 0xF5, 0x18, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0xBC, 0x9A, 0x24, 0x67, 0x85, 0xF5, -0x08, 0x6C, 0x80, 0x18, 0x0D, 0x28, 0x01, 0x22, +0xE3, 0xF1, 0xA0, 0x9A, 0x24, 0x67, 0x85, 0xF5, +0x08, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0x01, 0x22, 0x01, 0x6A, 0x64, 0x99, 0x02, 0x67, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x44, 0xF5, 0x1C, 0x4C, 0xB0, 0x67, -0x80, 0x18, 0x48, 0x43, 0x50, 0x67, 0x07, 0x97, +0x20, 0x6C, 0x64, 0xF5, 0x14, 0x4C, 0xB0, 0x67, +0x80, 0x18, 0x52, 0x43, 0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0xF7, 0x1F, 0x6D, 0x04, 0x67, 0x85, 0xF5, 0x08, 0x6C, -0x80, 0x18, 0x0D, 0x28, 0x64, 0x98, 0x40, 0xF3, -0x4C, 0xC8, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x08, 0x22, 0x40, 0xF3, 0xAC, 0xA8, 0x30, 0xF0, -0x20, 0x6C, 0x64, 0xF5, 0x08, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x80, 0x18, 0x1C, 0x28, 0x64, 0x98, 0x40, 0xF3, +0x54, 0xC8, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x08, 0x22, 0x40, 0xF3, 0xB4, 0xA8, 0x30, 0xF0, +0x20, 0x6C, 0x84, 0xF5, 0x00, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x64, 0x9C, 0x10, 0xF0, 0x00, 0x6A, 0xFF, 0x69, 0x05, 0x67, 0x6C, 0xEA, 0x2C, 0xE8, 0xCC, 0xE9, 0x08, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x64, 0xF5, 0x14, 0x4C, 0xB0, 0x67, -0xD1, 0x67, 0x80, 0x18, 0x48, 0x43, 0x5D, 0x67, +0x20, 0x6C, 0x84, 0xF5, 0x0C, 0x4C, 0xB0, 0x67, +0xD1, 0x67, 0x80, 0x18, 0x52, 0x43, 0x5D, 0x67, 0x12, 0xC2, 0x33, 0xC2, 0x7D, 0x67, 0x2A, 0x6A, 0x50, 0xC3, 0x02, 0x6A, 0x4F, 0xCB, 0x07, 0x97, 0x04, 0x94, 0x05, 0x95, 0x06, 0x96, 0x80, 0x18, -0x20, 0x41, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x2A, 0x41, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x40, 0xF3, 0x4B, 0xA4, 0x04, 0x67, -0x59, 0x22, 0x40, 0xF3, 0xCA, 0xA4, 0x40, 0xF3, -0x49, 0xA4, 0xC3, 0xEA, 0x53, 0x61, 0x64, 0x9C, +0x04, 0xD0, 0x40, 0xF3, 0x53, 0xA4, 0x04, 0x67, +0x59, 0x22, 0x40, 0xF3, 0xD2, 0xA4, 0x40, 0xF3, +0x51, 0xA4, 0xC3, 0xEA, 0x53, 0x61, 0x64, 0x9C, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, -0x40, 0xF3, 0xB0, 0x98, 0x30, 0xF0, 0x20, 0x6C, -0x84, 0xF5, 0x00, 0x4C, 0x80, 0x18, 0x48, 0x43, -0x40, 0xF3, 0x70, 0x98, 0x03, 0x6A, 0x5B, 0xEB, +0x40, 0xF3, 0xB8, 0x98, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF5, 0x18, 0x4C, 0x80, 0x18, 0x52, 0x43, +0x40, 0xF3, 0x78, 0x98, 0x03, 0x6A, 0x5B, 0xEB, 0x01, 0x2A, 0xE5, 0xE8, 0x10, 0xEA, 0x39, 0x2A, -0x90, 0x67, 0x80, 0x18, 0xCF, 0x46, 0x27, 0x22, +0x90, 0x67, 0x80, 0x18, 0xDB, 0x46, 0x27, 0x22, 0x64, 0x98, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF5, -0x14, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x90, 0x67, -0x80, 0x18, 0xE0, 0x46, 0x40, 0xF3, 0x4E, 0xA8, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF5, +0x0C, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x90, 0x67, +0x80, 0x18, 0xEC, 0x46, 0x40, 0xF3, 0x56, 0xA8, 0xFF, 0xF7, 0x1F, 0x72, 0x14, 0x61, 0x40, 0xF3, -0xAC, 0xA8, 0x64, 0x6A, 0x90, 0x67, 0x58, 0xED, +0xB4, 0xA8, 0x64, 0x6A, 0x90, 0x67, 0x58, 0xED, 0x8F, 0xF7, 0x1C, 0x4A, 0x12, 0xED, 0x55, 0xE5, -0x40, 0xF3, 0x4A, 0xA0, 0xA2, 0x35, 0xA2, 0x35, -0x01, 0x4A, 0x40, 0xF3, 0x4A, 0xC0, 0x40, 0xF3, -0xCA, 0xA0, 0x80, 0x18, 0xEF, 0x46, 0x64, 0x98, +0x40, 0xF3, 0x52, 0xA0, 0xA2, 0x35, 0xA2, 0x35, +0x01, 0x4A, 0x40, 0xF3, 0x52, 0xC0, 0x40, 0xF3, +0xD2, 0xA0, 0x80, 0x18, 0xFB, 0x46, 0x64, 0x98, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF5, 0x1C, 0x4C, -0x80, 0x18, 0x48, 0x43, 0x90, 0x67, 0x80, 0x18, -0x9D, 0x46, 0x40, 0xF3, 0x50, 0x98, 0x01, 0x4A, -0x40, 0xF3, 0x50, 0xD8, 0x05, 0x97, 0x04, 0x90, +0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF5, 0x14, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x90, 0x67, 0x80, 0x18, +0xA9, 0x46, 0x40, 0xF3, 0x58, 0x98, 0x01, 0x4A, +0x40, 0xF3, 0x58, 0xD8, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x21, 0x6A, -0x54, 0xF2, 0x10, 0x4A, 0x30, 0xF0, 0x21, 0x6C, -0xA7, 0x42, 0x74, 0xF1, 0x10, 0x4C, 0x39, 0x4D, -0x00, 0x6B, 0x3F, 0xF6, 0x60, 0xCA, 0x7F, 0xF6, +0x14, 0xF3, 0x18, 0x4A, 0x30, 0xF0, 0x21, 0x6C, +0xA7, 0x42, 0x74, 0xF2, 0x18, 0x4C, 0x39, 0x4D, +0x00, 0x6B, 0x7F, 0xF6, 0x60, 0xCA, 0xBF, 0xF6, 0x60, 0xCA, 0x60, 0xC4, 0x20, 0xF0, 0x60, 0xC4, 0x40, 0xF0, 0x60, 0xCA, 0x80, 0xF0, 0x60, 0xCA, 0x60, 0xCA, 0xC0, 0xF0, 0x60, 0xCA, 0x40, 0xF1, 0x60, 0xCA, 0x00, 0xF1, 0x60, 0xCA, 0x80, 0xF1, 0x64, 0xCA, 0xC0, 0xF1, 0x64, 0xCA, 0x00, 0xF2, -0x64, 0xCA, 0x7F, 0xF7, 0x60, 0xCA, 0xBF, 0xF7, -0x60, 0xCA, 0x02, 0x4A, 0xAA, 0xEA, 0xC0, 0xF0, +0x64, 0xCA, 0x02, 0x4A, 0xAA, 0xEA, 0x40, 0xF0, +0x60, 0xC4, 0x60, 0xF0, 0x60, 0xC4, 0x80, 0xF0, 0x60, 0xC4, 0x01, 0x4C, 0xDD, 0x61, 0x30, 0xF0, -0x21, 0x6A, 0x78, 0x67, 0xD4, 0xF3, 0x70, 0xDA, +0x21, 0x6A, 0x78, 0x67, 0x94, 0xF4, 0x78, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, -0x24, 0xF5, 0xAC, 0x42, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA4, 0x35, 0x00, 0x6C, -0x75, 0xE5, 0x80, 0xCD, 0x04, 0xF5, 0xAC, 0x42, -0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, 0x44, 0xF5, +0x64, 0xF5, 0xAC, 0x42, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xA4, 0x35, 0x00, 0x6C, +0x75, 0xE5, 0x80, 0xCD, 0x44, 0xF5, 0xAC, 0x42, +0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, 0x84, 0xF5, 0xAC, 0x42, 0xA4, 0x35, 0x75, 0xE5, 0x82, 0xCD, -0x64, 0xF5, 0xAC, 0x42, 0x84, 0xF5, 0x0C, 0x4A, +0xA4, 0xF5, 0xAC, 0x42, 0xC4, 0xF5, 0x0C, 0x4A, 0xA4, 0x35, 0x44, 0x32, 0x75, 0xE5, 0x6D, 0xE2, 0x82, 0xCD, 0x82, 0xCB, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x8C, 0xEA, 0x34, 0xF4, 0xAC, 0x42, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x8C, 0xEA, 0x69, 0xE2, 0x00, 0x6B, +0x29, 0xF1, 0x78, 0xC2, 0x49, 0xF1, 0x78, 0xC2, +0x69, 0xF1, 0x78, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x8C, 0xEA, 0xC4, 0xF4, 0xAC, 0x42, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0xA4, 0x35, 0x00, 0x6C, 0x75, 0xE5, 0x80, 0xCD, -0x54, 0xF4, 0xAC, 0x42, 0xA4, 0x35, 0x75, 0xE5, -0x69, 0xE2, 0x80, 0xCD, 0xE9, 0xF0, 0x98, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, -0x84, 0xF4, 0xAC, 0x42, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA4, 0x35, 0x00, 0x6C, -0x75, 0xE5, 0x80, 0xCD, 0xE4, 0xF4, 0xAC, 0x42, -0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, 0xA4, 0xF4, -0xAC, 0x42, 0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, -0xC4, 0xF4, 0xAC, 0x42, 0xA4, 0x35, 0x75, 0xE5, -0x80, 0xCD, 0x30, 0x6C, 0x98, 0xEA, 0xB0, 0x4C, -0x12, 0xEA, 0x6D, 0xE2, 0x47, 0xF7, 0x47, 0xA3, -0x4C, 0xEC, 0x47, 0xF7, 0x87, 0xC3, 0x20, 0xE8, -0xFC, 0x63, 0x07, 0xD1, 0x06, 0xD0, 0x0D, 0x92, -0xFF, 0xF7, 0x1F, 0x6B, 0x1B, 0x65, 0x02, 0xD2, -0xCC, 0xEB, 0x00, 0xD3, 0x0C, 0x90, 0x02, 0x93, -0xD8, 0x67, 0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xEF, -0xCC, 0xEB, 0xCC, 0xE8, 0x30, 0x6E, 0xD8, 0xEC, -0x0E, 0x92, 0x30, 0xF0, 0x21, 0x6E, 0x73, 0xF0, -0x00, 0x4E, 0x2C, 0xEA, 0x02, 0xD3, 0x03, 0xE7, -0x78, 0x67, 0x6C, 0xE8, 0x12, 0xE9, 0x39, 0xE6, -0x00, 0x91, 0x01, 0xD6, 0x3B, 0xE5, 0xFB, 0xE6, -0x03, 0xD6, 0x24, 0xF5, 0x2C, 0x44, 0x30, 0xF0, -0x20, 0x6E, 0x24, 0x31, 0x2B, 0xF1, 0x18, 0x4E, -0xD9, 0xE1, 0x00, 0x91, 0x04, 0xD6, 0xC0, 0xAE, -0x2F, 0xE3, 0xC2, 0xEB, 0x03, 0x61, 0x04, 0x93, -0xD9, 0xE1, 0xC0, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF5, 0xCC, 0x44, 0x2B, 0xF1, 0x18, 0x4B, -0xC4, 0x36, 0x79, 0xE6, 0x60, 0xAE, 0xFF, 0xF7, -0x1F, 0x69, 0xE7, 0xE1, 0x62, 0xE9, 0x02, 0x61, -0x6D, 0xE7, 0x60, 0xCE, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x89, 0xF2, 0xD8, 0x9B, -0x0F, 0xE9, 0xC3, 0xE9, 0x03, 0x61, 0xC1, 0xE0, -0x89, 0xF2, 0x18, 0xDB, 0x30, 0xF0, 0x20, 0x6E, -0x44, 0xF5, 0x6C, 0x44, 0x2B, 0xF1, 0x18, 0x4E, -0x64, 0x33, 0xCD, 0xE3, 0x03, 0x91, 0xC2, 0xAB, -0xFF, 0xF7, 0x1F, 0x68, 0x23, 0xE0, 0xC3, 0xE8, -0x02, 0x61, 0xD9, 0xE1, 0xC2, 0xCB, 0x30, 0xF0, -0x20, 0x6E, 0x84, 0xF5, 0x6C, 0x44, 0x2B, 0xF1, -0x18, 0x4E, 0x64, 0x33, 0xCD, 0xE3, 0x02, 0x91, -0xC2, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, 0x23, 0xE0, -0xC2, 0xE8, 0x02, 0x61, 0xD9, 0xE1, 0xC2, 0xCB, -0x30, 0xF0, 0x20, 0x6E, 0x64, 0xF5, 0x6C, 0x44, -0x2B, 0xF1, 0x18, 0x4E, 0x64, 0x33, 0xCD, 0xE3, -0xC2, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, 0xA3, 0xE0, -0xC3, 0xE8, 0x02, 0x61, 0xD9, 0xE5, 0xC2, 0xCB, -0x01, 0x96, 0x75, 0xAE, 0xFF, 0xF7, 0x1F, 0x6E, -0xBB, 0xE6, 0xC3, 0xEB, 0x03, 0x60, 0x01, 0x90, -0x6D, 0xE5, 0x75, 0xC8, 0x01, 0x91, 0xFF, 0xF7, -0x1F, 0x6E, 0xBB, 0xE6, 0x76, 0xA9, 0xC3, 0xEB, -0x02, 0x60, 0x75, 0xE5, 0xB6, 0xC9, 0x6A, 0x42, -0xFF, 0x6D, 0xAC, 0xEB, 0x02, 0x5B, 0x00, 0x6B, -0x0A, 0x61, 0x6C, 0x42, 0xAC, 0xEB, 0x02, 0x5B, -0x01, 0x6B, 0x05, 0x61, 0x03, 0x22, 0x03, 0x72, -0x03, 0x6B, 0x01, 0x61, 0x02, 0x6B, 0x88, 0x32, -0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6D, 0xA4, 0xF5, -0x0C, 0x4A, 0x2B, 0xF1, 0x18, 0x4D, 0x44, 0x32, -0xA9, 0xE2, 0xA2, 0xAA, 0xFF, 0xF7, 0x1F, 0x6E, -0xFB, 0xE6, 0xC2, 0xED, 0x02, 0x60, 0xBD, 0xE7, -0xE2, 0xCA, 0x88, 0x34, 0x6D, 0xE4, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF6, 0x0C, 0x4B, 0x2B, 0xF1, -0x18, 0x4A, 0x64, 0x33, 0x4D, 0xE3, 0x00, 0x95, -0x42, 0xAB, 0xFF, 0xF7, 0x1F, 0x6C, 0xB3, 0xE4, -0x82, 0xEA, 0x02, 0x60, 0x49, 0xE5, 0x42, 0xCB, -0x07, 0x91, 0x06, 0x90, 0x04, 0x63, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x21, 0x6A, 0x12, 0xF5, 0x58, 0x9A, 0x01, 0x6B, -0xFF, 0x68, 0x6C, 0xEA, 0x8C, 0xE8, 0x06, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF5, 0x08, 0x4C, -0x80, 0x18, 0x48, 0x43, 0xD4, 0xF3, 0x8C, 0x40, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x84, 0x34, 0x00, 0x6B, 0x51, 0xE4, 0x60, 0xCC, -0xF4, 0xF3, 0x8C, 0x40, 0x84, 0x34, 0x51, 0xE4, -0x60, 0xCC, 0xB4, 0xF3, 0x8C, 0x40, 0x84, 0x34, -0x51, 0xE4, 0x60, 0xCC, 0x94, 0xF3, 0x8C, 0x40, -0x84, 0x34, 0x41, 0xE0, 0x51, 0xE4, 0x60, 0xCC, -0x29, 0xF0, 0x78, 0xC0, 0x49, 0xF0, 0x78, 0xC0, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF3, 0x6C, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, -0x50, 0x32, 0x69, 0xE2, 0x60, 0x9A, 0x30, 0xF0, -0x21, 0x6C, 0x94, 0xF6, 0x14, 0x4C, 0x04, 0xD3, -0x61, 0x9A, 0x04, 0x05, 0x10, 0x6E, 0x05, 0xD3, -0x62, 0x9A, 0x06, 0xD3, 0x43, 0x9A, 0x07, 0xD2, -0x00, 0x18, 0x42, 0xD7, 0x09, 0x97, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, -0x80, 0x18, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x49, 0xF5, 0x7E, 0xA2, -0x7F, 0x68, 0x01, 0x6C, 0x6C, 0xE8, 0xE7, 0xF3, -0x60, 0x9A, 0x2C, 0xE8, 0x8C, 0xEB, 0x21, 0x23, -0x69, 0xF5, 0x85, 0xA2, 0x69, 0xF5, 0xC4, 0xA2, -0x49, 0xF5, 0xFF, 0xA2, 0x04, 0xD4, 0x69, 0xF5, -0x88, 0xA2, 0x3F, 0x6B, 0x6C, 0xEE, 0x6C, 0xEC, -0x05, 0xD4, 0x69, 0xF5, 0x80, 0xA2, 0xB0, 0x67, -0x2C, 0xEE, 0x6C, 0xEC, 0x06, 0xD4, 0x69, 0xF5, -0x81, 0xA2, 0x8C, 0xEB, 0x07, 0xD3, 0x69, 0xF5, -0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF5, -0x14, 0x4C, 0x5E, 0x32, 0x08, 0xD2, 0x80, 0x18, -0x48, 0x43, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0xC0, 0xF1, -0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x49, 0xF5, 0x9D, 0xA2, 0x80, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, -0x0B, 0x23, 0xE7, 0xF3, 0x40, 0x9A, 0x01, 0x6B, -0x6C, 0xEA, 0xA0, 0xF1, 0x1D, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xE4, 0xF5, 0x0C, 0x4C, 0x10, 0x10, -0x69, 0xF5, 0xA3, 0xA2, 0x10, 0x6B, 0xAC, 0xEB, -0x8C, 0xEB, 0x0D, 0x23, 0xE7, 0xF3, 0x40, 0x9A, -0x01, 0x6B, 0x6C, 0xEA, 0xA0, 0xF1, 0x0C, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF5, 0x18, 0x4C, -0x80, 0x18, 0x48, 0x43, 0xA5, 0x11, 0x69, 0xF5, -0x69, 0xA2, 0x3F, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, -0x02, 0x22, 0x3F, 0x72, 0x1E, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x4C, 0x9A, 0x14, 0x33, -0xFF, 0x6E, 0x49, 0xE3, 0x40, 0xA2, 0x4C, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x49, 0xF5, 0xBF, 0xA2, 0xCA, 0xED, 0x0D, 0x60, -0xE7, 0xF3, 0x40, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, -0x80, 0xF1, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF6, 0x04, 0x4C, 0x80, 0x18, 0x48, 0x43, -0x7F, 0x11, 0x30, 0x69, 0x38, 0xE8, 0x30, 0xF0, -0x21, 0x6A, 0x73, 0xF0, 0x00, 0x4A, 0x12, 0xE9, -0x25, 0xE2, 0x68, 0xA1, 0x40, 0x6A, 0x6C, 0xEA, -0x10, 0x22, 0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, -0x58, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, 0x60, 0xF1, -0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF6, -0x00, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x48, 0x43, -0x63, 0x11, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x69, 0xF5, -0x81, 0xA2, 0xDF, 0xF6, 0x01, 0x4B, 0x8C, 0xEB, -0x69, 0xF5, 0x61, 0xC2, 0x5F, 0xA1, 0x1F, 0x6E, +0x24, 0xF5, 0xAC, 0x42, 0xA4, 0x35, 0x75, 0xE5, +0x80, 0xCD, 0xE4, 0xF4, 0xAC, 0x42, 0xA4, 0x35, +0x75, 0xE5, 0x80, 0xCD, 0x04, 0xF5, 0xAC, 0x42, +0xA4, 0x35, 0x75, 0xE5, 0x80, 0xCD, 0x32, 0x6C, +0x98, 0xEA, 0xAE, 0x4C, 0x12, 0xEA, 0x6D, 0xE2, +0xC7, 0xF7, 0x49, 0xA3, 0x4C, 0xEC, 0xC7, 0xF7, +0x89, 0xC3, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0xD1, +0x06, 0xD0, 0x0D, 0x92, 0xFF, 0xF7, 0x1F, 0x6B, +0x1B, 0x65, 0x02, 0xD2, 0xCC, 0xEB, 0x00, 0xD3, +0x0C, 0x90, 0x02, 0x93, 0xD8, 0x67, 0xFF, 0x69, +0x2C, 0xEC, 0xCC, 0xEF, 0xCC, 0xEB, 0xCC, 0xE8, +0x32, 0x6E, 0xD8, 0xEC, 0x0E, 0x92, 0x30, 0xF0, +0x21, 0x6E, 0x33, 0xF1, 0x08, 0x4E, 0x2C, 0xEA, +0x02, 0xD3, 0x03, 0xE7, 0x78, 0x67, 0x6C, 0xE8, +0x12, 0xE9, 0x39, 0xE6, 0x00, 0x91, 0x01, 0xD6, +0x3B, 0xE5, 0xFB, 0xE6, 0x03, 0xD6, 0x64, 0xF5, +0x2C, 0x44, 0x30, 0xF0, 0x20, 0x6E, 0x24, 0x31, +0x8B, 0xF1, 0x00, 0x4E, 0xD9, 0xE1, 0x00, 0x91, +0x04, 0xD6, 0xC0, 0xAE, 0x2F, 0xE3, 0xC2, 0xEB, +0x03, 0x61, 0x04, 0x93, 0xD9, 0xE1, 0xC0, 0xCB, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF5, 0xCC, 0x44, +0x8B, 0xF1, 0x00, 0x4B, 0xC4, 0x36, 0x79, 0xE6, +0x60, 0xAE, 0xFF, 0xF7, 0x1F, 0x69, 0xE7, 0xE1, +0x62, 0xE9, 0x02, 0x61, 0x6D, 0xE7, 0x60, 0xCE, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x09, 0xF3, 0xD8, 0x9B, 0x0F, 0xE9, 0xC3, 0xE9, +0x03, 0x61, 0xC1, 0xE0, 0x09, 0xF3, 0x18, 0xDB, +0x30, 0xF0, 0x20, 0x6E, 0x84, 0xF5, 0x6C, 0x44, +0x8B, 0xF1, 0x00, 0x4E, 0x64, 0x33, 0xCD, 0xE3, +0x03, 0x91, 0xC2, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, +0x23, 0xE0, 0xC3, 0xE8, 0x02, 0x61, 0xD9, 0xE1, +0xC2, 0xCB, 0x30, 0xF0, 0x20, 0x6E, 0xC4, 0xF5, +0x6C, 0x44, 0x8B, 0xF1, 0x00, 0x4E, 0x64, 0x33, +0xCD, 0xE3, 0x02, 0x91, 0xC2, 0xAB, 0xFF, 0xF7, +0x1F, 0x68, 0x23, 0xE0, 0xC2, 0xE8, 0x02, 0x61, +0xD9, 0xE1, 0xC2, 0xCB, 0x30, 0xF0, 0x20, 0x6E, +0xA4, 0xF5, 0x6C, 0x44, 0x8B, 0xF1, 0x00, 0x4E, +0x64, 0x33, 0xCD, 0xE3, 0xC2, 0xAB, 0xFF, 0xF7, +0x1F, 0x68, 0xA3, 0xE0, 0xC3, 0xE8, 0x02, 0x61, +0xD9, 0xE5, 0xC2, 0xCB, 0x01, 0x96, 0x76, 0xAE, +0xFF, 0xF7, 0x1F, 0x6E, 0xBB, 0xE6, 0xC3, 0xEB, +0x03, 0x60, 0x01, 0x90, 0x6D, 0xE5, 0x76, 0xC8, +0x01, 0x91, 0xFF, 0xF7, 0x1F, 0x6E, 0xBB, 0xE6, +0x77, 0xA9, 0xC3, 0xEB, 0x02, 0x60, 0x75, 0xE5, +0xB7, 0xC9, 0x6A, 0x42, 0xFF, 0x6D, 0xAC, 0xEB, +0x02, 0x5B, 0x00, 0x6B, 0x0A, 0x61, 0x6C, 0x42, +0xAC, 0xEB, 0x02, 0x5B, 0x01, 0x6B, 0x05, 0x61, +0x03, 0x22, 0x03, 0x72, 0x03, 0x6B, 0x01, 0x61, +0x02, 0x6B, 0x88, 0x32, 0x69, 0xE2, 0x30, 0xF0, +0x20, 0x6D, 0xE4, 0xF5, 0x0C, 0x4A, 0x8B, 0xF1, +0x00, 0x4D, 0x44, 0x32, 0xA9, 0xE2, 0xA2, 0xAA, +0xFF, 0xF7, 0x1F, 0x6E, 0xFB, 0xE6, 0xC2, 0xED, +0x02, 0x60, 0xBD, 0xE7, 0xE2, 0xCA, 0x88, 0x34, +0x6D, 0xE4, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF6, +0x0C, 0x4B, 0x8B, 0xF1, 0x00, 0x4A, 0x64, 0x33, +0x4D, 0xE3, 0x00, 0x95, 0x42, 0xAB, 0xFF, 0xF7, +0x1F, 0x6C, 0xB3, 0xE4, 0x82, 0xEA, 0x02, 0x60, +0x49, 0xE5, 0x42, 0xCB, 0x07, 0x91, 0x06, 0x90, +0x04, 0x63, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, +0x58, 0x9A, 0x01, 0x6B, 0xFF, 0x68, 0x6C, 0xEA, +0x8C, 0xE8, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF5, 0x00, 0x4C, 0x80, 0x18, 0x52, 0x43, +0x34, 0xF4, 0x8C, 0x40, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x84, 0x34, 0x00, 0x6B, +0x51, 0xE4, 0x60, 0xCC, 0x54, 0xF4, 0x8C, 0x40, +0x84, 0x34, 0x51, 0xE4, 0x60, 0xCC, 0x14, 0xF4, +0x8C, 0x40, 0x84, 0x34, 0x51, 0xE4, 0x60, 0xCC, +0xF4, 0xF3, 0x8C, 0x40, 0x84, 0x34, 0x41, 0xE0, +0x51, 0xE4, 0x60, 0xCC, 0xE9, 0xF0, 0x78, 0xC0, +0x09, 0xF1, 0x78, 0xC0, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, 0x70, 0x9B, +0xFF, 0x6A, 0x8C, 0xEA, 0x50, 0x32, 0x69, 0xE2, +0x60, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0x54, 0xF7, +0x1C, 0x4C, 0x04, 0xD3, 0x61, 0x9A, 0x04, 0x05, +0x10, 0x6E, 0x05, 0xD3, 0x62, 0x9A, 0x06, 0xD3, +0x43, 0x9A, 0x07, 0xD2, 0x00, 0x18, 0x9D, 0xD8, +0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0x80, 0x18, 0x09, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC9, 0xF5, 0x7E, 0xA2, 0x7F, 0x68, 0x47, 0xF4, +0x98, 0x9A, 0x6C, 0xE8, 0xFF, 0x6B, 0x01, 0x4B, +0x8C, 0xEB, 0x2C, 0xE8, 0x29, 0x23, 0xE9, 0xF5, +0x85, 0xA2, 0xE9, 0xF5, 0xC4, 0xA2, 0xC9, 0xF5, +0xFF, 0xA2, 0x04, 0xD4, 0xE9, 0xF5, 0x87, 0xA2, +0x3F, 0x6B, 0x6C, 0xEE, 0x9A, 0x35, 0x05, 0xD5, +0x8A, 0x34, 0x0F, 0x6D, 0xAC, 0xEC, 0x06, 0xD4, +0xE9, 0xF5, 0x88, 0xA2, 0xB0, 0x67, 0x2C, 0xEE, +0x6C, 0xEC, 0x07, 0xD4, 0xE9, 0xF5, 0x80, 0xA2, +0x6C, 0xEC, 0x08, 0xD4, 0xE9, 0xF5, 0x81, 0xA2, +0x8C, 0xEB, 0x09, 0xD3, 0xE9, 0xF5, 0x40, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF5, 0x0C, 0x4C, +0x5E, 0x32, 0x0A, 0xD2, 0x80, 0x18, 0x52, 0x43, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, +0x90, 0x67, 0x40, 0xEA, 0xC0, 0xF1, 0x11, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC9, 0xF5, 0x9D, 0xA2, 0x80, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, +0x47, 0xF4, 0x58, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, +0xA0, 0xF1, 0x1F, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x04, 0xF6, 0x10, 0x4C, 0x10, 0x10, 0xE9, 0xF5, +0xA3, 0xA2, 0x10, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, +0x0D, 0x23, 0x47, 0xF4, 0x58, 0x9A, 0x01, 0x6B, +0x6C, 0xEA, 0xA0, 0xF1, 0x0E, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x04, 0xF6, 0x1C, 0x4C, 0x80, 0x18, +0x52, 0x43, 0xA7, 0x11, 0xE9, 0xF5, 0x69, 0xA2, +0x3F, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, 0x02, 0x22, +0x3F, 0x72, 0x1E, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF1, 0x50, 0x9A, 0x14, 0x33, 0xFF, 0x6E, +0x49, 0xE3, 0x40, 0xA2, 0x4C, 0xEE, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xC9, 0xF5, +0xBF, 0xA2, 0xCA, 0xED, 0x0D, 0x60, 0x47, 0xF4, +0x58, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, 0x80, 0xF1, +0x08, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF6, +0x08, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x81, 0x11, +0x32, 0x69, 0x38, 0xE8, 0x30, 0xF0, 0x21, 0x6A, +0x33, 0xF1, 0x08, 0x4A, 0x12, 0xE9, 0x25, 0xE2, +0x68, 0xA1, 0x40, 0x6A, 0x6C, 0xEA, 0x10, 0x22, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x58, 0x9A, +0x01, 0x6B, 0x6C, 0xEA, 0x60, 0xF1, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF6, 0x04, 0x4C, +0xB0, 0x67, 0x80, 0x18, 0x52, 0x43, 0x65, 0x11, +0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xE9, 0xF5, 0x81, 0xA2, +0xDF, 0xF6, 0x01, 0x4B, 0x8C, 0xEB, 0xE9, 0xF5, +0x61, 0xC2, 0x20, 0xF0, 0x41, 0xA1, 0x1F, 0x6E, 0x3F, 0x6F, 0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x69, 0xF5, 0x64, 0xA2, -0xE7, 0xF3, 0x40, 0x9A, 0x6C, 0xEF, 0x01, 0x6B, +0x8B, 0xF1, 0x00, 0x4A, 0xE9, 0xF5, 0x64, 0xA2, +0x47, 0xF4, 0x58, 0x9A, 0x6C, 0xEF, 0x01, 0x6B, 0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xEF, 0x24, 0xF6, 0x0C, 0x4C, 0xB8, 0x67, -0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x69, 0xF5, 0x64, 0xA2, -0xDF, 0xA1, 0x1F, 0x6D, 0x6C, 0xED, 0x20, 0x6B, -0x6B, 0xEB, 0xCC, 0xEB, 0xAD, 0xEB, 0x7F, 0xC1, -0x69, 0xF5, 0x60, 0xA2, 0x69, 0xF5, 0xA8, 0xA2, -0x69, 0xF5, 0xC1, 0xA2, 0x3F, 0x6C, 0x8C, 0xED, -0x8C, 0xEE, 0x6C, 0xEC, 0x8D, 0xE6, 0x85, 0x67, -0x6E, 0xEC, 0x0A, 0x2C, 0xE7, 0xF3, 0x40, 0x9A, -0x01, 0x6B, 0x6C, 0xEA, 0x10, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x44, 0xF6, 0x04, 0x4C, 0x09, 0x10, -0xE7, 0xF3, 0x40, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF6, -0x10, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, -0x21, 0x6A, 0x94, 0xF6, 0x78, 0xA2, 0x80, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x00, 0x6B, 0x03, 0x22, 0x6C, 0x81, 0xC0, 0xF7, -0x62, 0x33, 0x30, 0xF0, 0x21, 0x6A, 0xB4, 0xF6, -0x81, 0xA2, 0x3F, 0x6A, 0x8C, 0xEA, 0x02, 0x22, -0x3F, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x69, 0xF5, 0xA5, 0xA2, -0x49, 0xF5, 0x9F, 0xA2, 0xAE, 0xEC, 0x06, 0x2C, -0x69, 0xF5, 0x40, 0xA2, 0x3F, 0x6C, 0x4C, 0xEC, -0x0A, 0xD4, 0x02, 0x10, 0x00, 0x6D, 0x0A, 0xD5, -0x43, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF4, -0x6C, 0x40, 0x2B, 0xF1, 0x18, 0x4A, 0x64, 0x33, -0x4D, 0xE3, 0x80, 0xAB, 0x0A, 0x97, 0x91, 0xE7, -0x80, 0xCB, 0xA4, 0xF4, 0x6C, 0x40, 0x64, 0x33, -0x4D, 0xE3, 0x69, 0xF5, 0xA8, 0xA2, 0xC0, 0xAB, -0x3F, 0x6C, 0x8C, 0xED, 0xB5, 0xE6, 0xA0, 0xCB, -0xE4, 0xF4, 0xAC, 0x40, 0xA4, 0x35, 0x55, 0xE5, -0x69, 0xF5, 0xC0, 0xA2, 0xE0, 0xAD, 0x8C, 0xEE, -0xD9, 0xE7, 0xC0, 0xCD, 0x69, 0xF5, 0xC1, 0xA2, -0xC4, 0xF4, 0xAC, 0x40, 0xA4, 0x35, 0x55, 0xE5, -0xCC, 0xEC, 0xC0, 0xAD, 0x91, 0xE6, 0x80, 0xCD, -0xA0, 0xAB, 0x70, 0xA1, 0x63, 0xED, 0x80, 0xF0, -0x13, 0x61, 0xE7, 0xF3, 0x40, 0x9A, 0x01, 0x6B, -0x6C, 0xEA, 0x07, 0x22, 0xD1, 0xA1, 0x30, 0xF0, -0x20, 0x6C, 0x44, 0xF6, 0x1C, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x90, 0x67, 0x80, 0x18, 0x91, 0x51, -0x90, 0x67, 0x80, 0x18, 0x6B, 0x47, 0x80, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xD4, 0xF3, 0x6C, 0x40, -0x2B, 0xF1, 0x18, 0x4A, 0x64, 0x33, 0x4D, 0xE3, -0x80, 0xAB, 0x0A, 0x95, 0x91, 0xE5, 0x80, 0xCB, -0x94, 0xF3, 0x8C, 0x40, 0x84, 0x34, 0x69, 0xF5, -0xA8, 0xA2, 0x51, 0xE4, 0xC0, 0xAC, 0x3F, 0x6B, -0x6C, 0xED, 0xB5, 0xE6, 0xA0, 0xCC, 0xF4, 0xF3, -0xAC, 0x40, 0xA4, 0x35, 0x69, 0xF5, 0xC0, 0xA2, -0x55, 0xE5, 0xE0, 0xAD, 0x6C, 0xEE, 0xD9, 0xE7, -0xC0, 0xCD, 0xB4, 0xF3, 0xAC, 0x40, 0xA4, 0x35, -0x69, 0xF5, 0xC1, 0xA2, 0x55, 0xE5, 0xE0, 0xAD, -0x6C, 0xEE, 0xD9, 0xE7, 0xC0, 0xCD, 0x54, 0xF4, -0xAC, 0x40, 0xA4, 0x35, 0x55, 0xE5, 0xC0, 0xAD, -0x0A, 0x97, 0xD9, 0xE7, 0xC0, 0xCD, 0x69, 0xF5, -0xC8, 0xA2, 0x34, 0xF4, 0xAC, 0x40, 0xA4, 0x35, -0x55, 0xE5, 0xCC, 0xEB, 0xC0, 0xAD, 0x6D, 0xE6, -0x60, 0xCD, 0x80, 0xAC, 0x20, 0xF0, 0x68, 0xA1, -0x63, 0xEC, 0x1A, 0x61, 0x20, 0xF0, 0x6E, 0xA1, -0x17, 0x2B, 0xE7, 0xF3, 0x40, 0x9A, 0x01, 0x6B, -0x6C, 0xEA, 0x09, 0x22, 0x20, 0xF0, 0xC8, 0xA1, -0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF6, 0x18, 0x4C, -0xB0, 0x67, 0x80, 0x18, 0x48, 0x43, 0x90, 0x67, -0x80, 0x18, 0x24, 0x50, 0x20, 0xF0, 0x45, 0xA1, -0x01, 0x4A, 0x20, 0xF0, 0x45, 0xC1, 0x24, 0x10, -0x6F, 0xA1, 0x40, 0x6A, 0x6C, 0xEA, 0x20, 0x22, -0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, 0x58, 0x9A, -0x01, 0x6B, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x84, 0xF6, 0x0C, 0x4C, 0xB0, 0x67, -0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, 0x20, 0x6A, -0x94, 0xF3, 0x6C, 0x40, 0x64, 0x33, 0x2B, 0xF1, -0x18, 0x4A, 0x49, 0xE3, 0x40, 0xAA, 0x03, 0x22, -0x90, 0x67, 0x80, 0x18, 0x24, 0x50, 0x6F, 0xA1, -0x41, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4F, 0xC1, -0x0A, 0x94, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x69, 0xF5, 0xA8, 0xA3, 0x69, 0xF5, -0xC1, 0xA3, 0x69, 0xF5, 0xE0, 0xA3, 0x04, 0xD4, -0x69, 0xF5, 0x84, 0xA3, 0x3F, 0x6A, 0x4C, 0xED, -0x4C, 0xEC, 0x05, 0xD4, 0x49, 0xF5, 0x9D, 0xA3, -0x1F, 0x6B, 0x4C, 0xEE, 0x8C, 0xEB, 0x4C, 0xEF, -0x90, 0x67, 0x06, 0xD3, 0x80, 0x18, 0x7E, 0x47, -0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xEF, 0x44, 0xF6, 0x10, 0x4C, 0xB8, 0x67, +0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xE9, 0xF5, 0x64, 0xA2, +0x20, 0xF0, 0xC1, 0xA1, 0x1F, 0x6D, 0x6C, 0xED, +0x20, 0x6B, 0x6B, 0xEB, 0xCC, 0xEB, 0xAD, 0xEB, +0x20, 0xF0, 0x61, 0xC1, 0xE9, 0xF5, 0x60, 0xA2, +0xE9, 0xF5, 0xA8, 0xA2, 0xE9, 0xF5, 0xC1, 0xA2, +0x3F, 0x6C, 0x8C, 0xED, 0x8C, 0xEE, 0x6C, 0xEC, +0x8D, 0xE6, 0x85, 0x67, 0x6E, 0xEC, 0x0A, 0x2C, +0x47, 0xF4, 0x58, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, +0x10, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF6, +0x08, 0x4C, 0x09, 0x10, 0x47, 0xF4, 0x58, 0x9A, +0x01, 0x6B, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF6, 0x14, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x30, 0xF0, 0x21, 0x6A, 0x74, 0xF7, +0x60, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x00, 0x6B, 0x03, 0x22, +0x6C, 0x81, 0xC0, 0xF7, 0x62, 0x33, 0x30, 0xF0, +0x21, 0x6A, 0x74, 0xF7, 0x89, 0xA2, 0x3F, 0x6A, +0x8C, 0xEA, 0x02, 0x22, 0x3F, 0x72, 0x10, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xE9, 0xF5, 0xA5, 0xA2, 0xC9, 0xF5, 0x9F, 0xA2, +0xAE, 0xEC, 0x06, 0x2C, 0xE9, 0xF5, 0x40, 0xA2, +0x3F, 0x6C, 0x4C, 0xEC, 0x0C, 0xD4, 0x02, 0x10, +0x00, 0x6D, 0x0C, 0xD5, 0x43, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF4, 0x6C, 0x40, 0x8B, 0xF1, +0x00, 0x4A, 0x64, 0x33, 0x4D, 0xE3, 0x80, 0xAB, +0x0C, 0x96, 0x91, 0xE6, 0x80, 0xCB, 0xE4, 0xF4, +0x6C, 0x40, 0x64, 0x33, 0x4D, 0xE3, 0xE9, 0xF5, +0xA8, 0xA2, 0xC0, 0xAB, 0x3F, 0x6C, 0x8C, 0xED, +0xB5, 0xE6, 0xA0, 0xCB, 0x24, 0xF5, 0xAC, 0x40, +0xA4, 0x35, 0x55, 0xE5, 0xE9, 0xF5, 0xC0, 0xA2, +0xE0, 0xAD, 0x8C, 0xEE, 0xD9, 0xE7, 0xC0, 0xCD, +0xE9, 0xF5, 0xC1, 0xA2, 0x04, 0xF5, 0xAC, 0x40, +0xA4, 0x35, 0x55, 0xE5, 0xCC, 0xEC, 0xC0, 0xAD, +0x91, 0xE6, 0x80, 0xCD, 0xA0, 0xAB, 0x71, 0xA1, +0x63, 0xED, 0x80, 0xF0, 0x12, 0x61, 0x47, 0xF4, +0x58, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, 0x07, 0x22, +0xD2, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF6, +0x00, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x90, 0x67, +0x80, 0x18, 0xF7, 0x51, 0x90, 0x67, 0x80, 0x18, +0x74, 0x47, 0x7F, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x34, 0xF4, 0x6C, 0x40, 0x8B, 0xF1, 0x00, 0x4A, +0x64, 0x33, 0x4D, 0xE3, 0x80, 0xAB, 0x0C, 0x95, +0x91, 0xE5, 0xF4, 0xF3, 0xAC, 0x40, 0x80, 0xCB, +0xA4, 0x35, 0xE9, 0xF5, 0x68, 0xA2, 0x55, 0xE5, +0xC0, 0xAD, 0x3F, 0x6C, 0x8C, 0xEB, 0x6D, 0xE6, +0x60, 0xCD, 0x54, 0xF4, 0x6C, 0x40, 0x64, 0x33, +0xE9, 0xF5, 0xC0, 0xA2, 0x4D, 0xE3, 0xE0, 0xAB, +0x8C, 0xEE, 0xD9, 0xE7, 0xC0, 0xCB, 0x14, 0xF4, +0x6C, 0x40, 0x64, 0x33, 0xE9, 0xF5, 0xC1, 0xA2, +0x4D, 0xE3, 0xE0, 0xAB, 0x8C, 0xEE, 0xD9, 0xE7, +0xC0, 0xCB, 0x0C, 0x96, 0x4D, 0xE0, 0xC6, 0x37, +0x49, 0xF1, 0xD8, 0xA3, 0xD9, 0xE7, 0x49, 0xF1, +0xD8, 0xC3, 0xE9, 0xF5, 0xC8, 0xA2, 0xCC, 0xEC, +0x29, 0xF1, 0xD8, 0xA3, 0x87, 0x34, 0xD1, 0xE4, +0x29, 0xF1, 0x98, 0xC3, 0x80, 0xAD, 0x20, 0xF0, +0x6A, 0xA1, 0x63, 0xEC, 0x1A, 0x61, 0x20, 0xF0, +0x70, 0xA1, 0x17, 0x2B, 0x47, 0xF4, 0x58, 0x9A, +0x01, 0x6B, 0x6C, 0xEA, 0x09, 0x22, 0x20, 0xF0, +0xCA, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF6, +0x1C, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x52, 0x43, +0x90, 0x67, 0x80, 0x18, 0x84, 0x50, 0x20, 0xF0, +0x47, 0xA1, 0x01, 0x4A, 0x20, 0xF0, 0x47, 0xC1, +0x24, 0x10, 0x70, 0xA1, 0x40, 0x6A, 0x6C, 0xEA, +0x20, 0x22, 0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, +0x58, 0x9A, 0x01, 0x6B, 0x6C, 0xEA, 0x07, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF6, 0x10, 0x4C, +0xB0, 0x67, 0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, +0x20, 0x6A, 0xF4, 0xF3, 0x6C, 0x40, 0x64, 0x33, +0x8B, 0xF1, 0x00, 0x4A, 0x49, 0xE3, 0x40, 0xAA, +0x03, 0x22, 0x90, 0x67, 0x80, 0x18, 0x84, 0x50, +0x70, 0xA1, 0x41, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x50, 0xC1, 0x0C, 0x94, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xE9, 0xF5, 0xA8, 0xA3, +0xE9, 0xF5, 0xC1, 0xA3, 0xE9, 0xF5, 0xE0, 0xA3, +0x04, 0xD4, 0xE9, 0xF5, 0x84, 0xA3, 0x3F, 0x6A, +0x4C, 0xED, 0x4C, 0xEC, 0x05, 0xD4, 0xC9, 0xF5, +0x9D, 0xA3, 0x1F, 0x6B, 0x4C, 0xEE, 0x8C, 0xEB, +0x4C, 0xEF, 0x90, 0x67, 0x06, 0xD3, 0x80, 0x18, +0x87, 0x47, 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, +0x09, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF0, 0x6C, 0xA2, 0x82, 0xF0, 0x0C, 0x4A, 0x60, 0xC4, 0x41, 0xA2, 0x40, 0xC5, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x6C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x70, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x71, 0xE4, 0x60, 0xA4, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x6C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x70, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x71, 0xE4, 0x60, 0xA4, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0x40, 0xA4, 0x60, 0xA5, 0x60, 0xC4, 0x40, 0xC5, @@ -34703,16 +35003,16 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x6A, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, 0x7F, 0x6B, -0x82, 0x67, 0x6C, 0xEC, 0x80, 0x18, 0x56, 0x49, -0x30, 0x6B, 0x78, 0xE8, 0x14, 0x6C, 0x30, 0xF0, -0x21, 0x6B, 0x73, 0xF0, 0x00, 0x4B, 0x12, 0xE8, +0x82, 0x67, 0x6C, 0xEC, 0x80, 0x18, 0x64, 0x49, +0x32, 0x6B, 0x78, 0xE8, 0x14, 0x6C, 0x30, 0xF0, +0x21, 0x6B, 0x33, 0xF1, 0x08, 0x4B, 0x12, 0xE8, 0x0D, 0xE3, 0x98, 0xEA, 0x12, 0xEA, 0x20, 0xF0, -0x48, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x4A, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, -0x45, 0x67, 0x30, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, -0x21, 0x6D, 0x73, 0xF0, 0x00, 0x4D, 0x6C, 0xEA, +0x45, 0x67, 0x32, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, +0x21, 0x6D, 0x33, 0xF1, 0x08, 0x4D, 0x6C, 0xEA, 0x12, 0xEC, 0x95, 0xE5, 0xC0, 0xA5, 0x81, 0xA5, -0x30, 0xF0, 0x21, 0x6D, 0x74, 0xF0, 0xEC, 0xA5, +0x30, 0xF0, 0x21, 0x6D, 0x74, 0xF1, 0xF4, 0xA5, 0x04, 0x6D, 0xEC, 0xED, 0x6C, 0xED, 0x16, 0x2D, 0xFF, 0x72, 0x02, 0x61, 0x43, 0x67, 0x20, 0xE8, 0x7F, 0x6D, 0xAC, 0xEE, 0x4C, 0xED, 0xA3, 0xEE, @@ -34724,107 +35024,115 @@ u8 array_mp_8822c_fw_nic[] = { 0x06, 0x26, 0x2C, 0x5C, 0x04, 0x61, 0x68, 0x44, 0xE8, 0x4B, 0x4C, 0xEB, 0x01, 0x10, 0x64, 0x67, 0x20, 0x5B, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF3, 0x58, 0x9A, 0xAC, 0x35, 0xE0, 0x4B, +0xC3, 0xF3, 0x5C, 0x9A, 0xAC, 0x35, 0xE0, 0x4B, 0x55, 0xE5, 0x40, 0x9D, 0xFF, 0x6D, 0xAC, 0xEB, -0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x50, 0x9A, 0xAC, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x54, 0x9A, 0xAC, 0x35, 0x55, 0xE5, 0x40, 0x9D, 0x01, 0x6D, 0xA4, 0xEB, 0x4C, 0xED, 0xFF, 0x6A, 0x01, 0x25, 0x44, 0x67, 0x20, 0xE8, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x4C, 0xEE, 0x30, 0x68, 0x18, 0xEE, -0x30, 0xF0, 0x21, 0x6B, 0x73, 0xF0, 0x00, 0x4B, -0x4C, 0xED, 0x4C, 0xEC, 0x27, 0x67, 0x01, 0x75, -0x09, 0xD6, 0x4C, 0xE9, 0x12, 0xE8, 0x01, 0xE3, -0x7F, 0x6B, 0x6C, 0xEC, 0x1F, 0x61, 0x0C, 0x5C, -0x05, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF3, -0x0C, 0x4A, 0x1E, 0x10, 0x0A, 0x29, 0xF4, 0x4C, -0x4C, 0xEC, 0x03, 0x6A, 0x58, 0xEC, 0x30, 0xF0, -0x20, 0x6A, 0xA8, 0xF4, 0x10, 0x4A, 0x12, 0xEC, -0x36, 0x10, 0x2C, 0x5C, 0xC0, 0xF0, 0x0F, 0x61, -0xD4, 0x4C, 0x4C, 0xEC, 0x03, 0x6A, 0x58, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF4, 0x14, 0x4A, -0x12, 0xEC, 0x29, 0x10, 0x0C, 0x5C, 0x10, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF3, 0x18, 0x4A, -0x91, 0xE2, 0x80, 0xA4, 0x09, 0x95, 0xD1, 0x67, -0x80, 0x18, 0x8C, 0x49, 0x8C, 0xA0, 0x19, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0x6C, 0xC0, 0xB4, 0x10, -0x0A, 0x29, 0xF4, 0x4C, 0x4C, 0xEC, 0x03, 0x6A, -0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF5, -0x14, 0x4A, 0x12, 0xEC, 0x0C, 0x10, 0x2C, 0x5C, -0xA0, 0xF0, 0x05, 0x61, 0xD4, 0x4C, 0x4C, 0xEC, -0x03, 0x6A, 0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, -0xE8, 0xF4, 0x18, 0x4A, 0x12, 0xEC, 0x89, 0xE2, -0x08, 0xD2, 0x01, 0x6A, 0x4B, 0xEA, 0x7D, 0x67, -0x00, 0x6C, 0x50, 0xC3, 0x51, 0xC3, 0x52, 0xC3, -0x07, 0xD4, 0x06, 0xD4, 0x07, 0x94, 0x08, 0x93, -0x89, 0xE3, 0x80, 0xA2, 0x2C, 0x74, 0x03, 0x61, -0x2C, 0x6C, 0x01, 0x29, 0x0C, 0x6C, 0x09, 0x95, -0xD1, 0x67, 0x80, 0x18, 0x8C, 0x49, 0xFF, 0x72, -0x08, 0x60, 0x06, 0x94, 0xBD, 0x67, 0x8D, 0xE5, -0x50, 0xC3, 0x01, 0x4C, 0xFF, 0x6A, 0x4C, 0xEC, -0x06, 0xD4, 0x07, 0x95, 0x01, 0x4D, 0x03, 0x75, -0x07, 0xD5, 0xE4, 0x61, 0x06, 0x92, 0x05, 0x2A, -0x6C, 0xA0, 0xE7, 0x4A, 0x6C, 0xEA, 0x4C, 0xC0, -0x6E, 0x10, 0x7A, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, -0x1F, 0x22, 0x6F, 0xA0, 0x30, 0x6A, 0x6C, 0xEA, -0x20, 0x72, 0x1A, 0x61, 0x05, 0x21, 0x30, 0xF0, -0x20, 0x6A, 0x88, 0xF6, 0x08, 0x4A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0xF6, 0x00, 0x4A, -0x9D, 0x67, 0x71, 0xA4, 0x2D, 0x5B, 0x01, 0x61, -0xE0, 0x4B, 0x40, 0x9A, 0x01, 0x6C, 0x84, 0xEB, -0x4C, 0xEC, 0x29, 0x24, 0x04, 0x04, 0x00, 0xF0, -0x11, 0x05, 0x80, 0x18, 0x2A, 0x49, 0x23, 0x10, -0x7A, 0xA0, 0x40, 0x6A, 0x6C, 0xEA, 0x1F, 0x22, -0x6F, 0xA0, 0x30, 0x6A, 0x6C, 0xEA, 0x20, 0x72, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6A, 0x4C, 0xEF, 0x32, 0x68, 0x18, 0xEF, +0x14, 0x91, 0x30, 0xF0, 0x21, 0x6B, 0x33, 0xF1, +0x08, 0x4B, 0x4C, 0xEE, 0x4C, 0xEC, 0x4C, 0xED, +0x01, 0x76, 0x0B, 0xD4, 0x09, 0xD5, 0x0A, 0xD7, +0x4C, 0xE9, 0x12, 0xE8, 0x01, 0xE3, 0x7F, 0x6B, +0x8C, 0xEB, 0x1F, 0x61, 0x0C, 0x5B, 0x05, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF3, 0x1C, 0x4A, +0x1E, 0x10, 0x0A, 0x29, 0xF4, 0x4B, 0x4C, 0xEB, +0x03, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xE8, 0xF4, 0x18, 0x4A, 0x12, 0xEB, 0x36, 0x10, +0x2C, 0x5B, 0x00, 0xF1, 0x01, 0x61, 0xD4, 0x4B, +0x4C, 0xEB, 0x03, 0x6A, 0x58, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x88, 0xF4, 0x1C, 0x4A, 0x12, 0xEB, +0x29, 0x10, 0x0C, 0x5B, 0x10, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x68, 0xF3, 0x08, 0x4A, 0x6D, 0xE2, +0x80, 0xA3, 0x0A, 0x95, 0xD1, 0x67, 0x80, 0x18, +0x9A, 0x49, 0x8C, 0xA0, 0x19, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x6C, 0xC0, 0xE6, 0x10, 0x0A, 0x29, +0xF4, 0x4B, 0x4C, 0xEB, 0x03, 0x6A, 0x58, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0xF5, 0x1C, 0x4A, +0x12, 0xEB, 0x0C, 0x10, 0x2C, 0x5B, 0xC0, 0xF0, +0x17, 0x61, 0xD4, 0x4B, 0x4C, 0xEB, 0x03, 0x6A, +0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF5, +0x00, 0x4A, 0x12, 0xEB, 0x69, 0xE2, 0x08, 0xD2, +0x01, 0x6A, 0x4B, 0xEA, 0x7D, 0x67, 0x00, 0x6C, +0x50, 0xC3, 0x51, 0xC3, 0x52, 0xC3, 0x07, 0xD4, +0x06, 0xD4, 0x07, 0x94, 0x08, 0x93, 0x89, 0xE3, +0x80, 0xA2, 0x2C, 0x74, 0x03, 0x61, 0x2C, 0x6C, +0x01, 0x29, 0x0C, 0x6C, 0x0A, 0x95, 0xD1, 0x67, +0x80, 0x18, 0x9A, 0x49, 0xFF, 0x72, 0x08, 0x60, +0x06, 0x94, 0xBD, 0x67, 0x8D, 0xE5, 0x50, 0xC3, +0x01, 0x4C, 0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0xD4, +0x07, 0x95, 0x01, 0x4D, 0x03, 0x75, 0x07, 0xD5, +0xE4, 0x61, 0x06, 0x92, 0x05, 0x2A, 0x6C, 0xA0, +0xE7, 0x4A, 0x6C, 0xEA, 0x4C, 0xC0, 0xA0, 0x10, +0x7C, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x1F, 0x22, +0x70, 0xA0, 0x30, 0x6A, 0x6C, 0xEA, 0x20, 0x72, 0x1A, 0x61, 0x05, 0x21, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0xF6, 0x18, 0x4A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x88, 0xF6, 0x10, 0x4A, 0xBD, 0x67, -0x71, 0xA5, 0x2D, 0x5B, 0x01, 0x61, 0xE0, 0x4B, +0xC8, 0xF6, 0x10, 0x4A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC8, 0xF6, 0x08, 0x4A, 0x9D, 0x67, +0x71, 0xA4, 0x2D, 0x5B, 0x01, 0x61, 0xE0, 0x4B, 0x40, 0x9A, 0x01, 0x6C, 0x84, 0xEB, 0x4C, 0xEC, -0x06, 0x24, 0x7D, 0x67, 0x51, 0xA3, 0x50, 0xC3, -0x01, 0x6A, 0x4B, 0xEA, 0x51, 0xC3, 0x9D, 0x67, -0x71, 0xA4, 0xFF, 0x73, 0x0B, 0x60, 0x52, 0xA4, -0xFF, 0x72, 0x08, 0x60, 0x65, 0xC0, 0x6C, 0xA0, -0x44, 0xC0, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x10, 0x6B, 0x14, 0x10, 0xBD, 0x67, 0x51, 0xA5, -0xFF, 0x72, 0x03, 0x60, 0x72, 0xA5, 0xFF, 0x73, -0x07, 0x60, 0x7D, 0x67, 0x51, 0xA3, 0xFF, 0x72, -0x0B, 0x61, 0x52, 0xA3, 0xFF, 0x72, 0x08, 0x60, -0x6C, 0xA0, 0x44, 0xC0, 0x19, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x08, 0x6B, 0x6D, 0xEA, 0x4C, 0xC0, -0x9D, 0x67, 0x50, 0xA4, 0x01, 0x10, 0xFF, 0x6A, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD1, -0x00, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0x6B, -0x78, 0xEC, 0x30, 0xF0, 0x21, 0x6B, 0x73, 0xF0, -0x00, 0x4B, 0x06, 0x67, 0x4C, 0xE8, 0xE0, 0xA5, -0x12, 0xEC, 0x91, 0xE3, 0xCC, 0xA4, 0x03, 0x6B, -0xCC, 0xEB, 0x4C, 0xEB, 0x54, 0x23, 0x04, 0x6B, -0xCC, 0xEB, 0x4C, 0xEB, 0x50, 0x23, 0xDF, 0xA4, -0x20, 0x6B, 0x6B, 0xEB, 0xCC, 0xEB, 0x4C, 0xEB, -0x4A, 0x23, 0x7F, 0xA4, 0x0A, 0x69, 0x7F, 0x6E, -0x76, 0x33, 0xFF, 0x4B, 0x38, 0xEB, 0xEC, 0xEE, -0x12, 0xEB, 0x4C, 0xEB, 0x27, 0x43, 0x2C, 0x49, -0x22, 0xEE, 0x3D, 0x61, 0x80, 0x69, 0x7B, 0xE6, -0x02, 0x70, 0xEC, 0xE9, 0x4C, 0xEE, 0x11, 0x61, -0x33, 0x76, 0x35, 0x60, 0x02, 0x21, 0xC4, 0xC4, -0x02, 0x10, 0x4F, 0x46, 0x44, 0xC4, 0x80, 0x6A, -0xEF, 0x46, 0x4B, 0xEA, 0x4D, 0xEF, 0xFF, 0x6A, -0x4C, 0xEF, 0xCC, 0xA4, 0xFF, 0xF6, 0x08, 0x4A, -0x17, 0x10, 0x35, 0x76, 0x24, 0x60, 0x34, 0x76, -0x03, 0x61, 0xB5, 0x6F, 0x15, 0x29, 0x06, 0x10, -0x05, 0x21, 0x80, 0x68, 0xE1, 0x46, 0x0B, 0xE8, -0x0D, 0xEF, 0x04, 0x10, 0x80, 0x6F, 0xEB, 0xEF, -0xCD, 0xEF, 0xFF, 0x6A, 0x01, 0x4E, 0xC4, 0xC4, -0xCC, 0xA4, 0x4C, 0xEF, 0x19, 0x6A, 0x4B, 0xEA, -0xCC, 0xEA, 0x08, 0x6E, 0xCD, 0xEA, 0x4C, 0xC4, -0xCC, 0xA4, 0x18, 0x6A, 0xCC, 0xEA, 0x03, 0x22, -0x44, 0xA4, 0x49, 0xE3, 0x44, 0xC4, 0x6D, 0xE7, -0x60, 0xC5, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x01, 0x91, 0x00, 0x90, 0x01, 0x63, 0x20, 0xE8, +0x29, 0x24, 0x04, 0x04, 0x00, 0xF0, 0x11, 0x05, +0x80, 0x18, 0x38, 0x49, 0x23, 0x10, 0x7C, 0xA0, +0x40, 0x6A, 0x6C, 0xEA, 0x1F, 0x22, 0x70, 0xA0, +0x30, 0x6A, 0x6C, 0xEA, 0x20, 0x72, 0x1A, 0x61, +0x05, 0x21, 0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF6, +0x00, 0x4A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC8, 0xF6, 0x18, 0x4A, 0xBD, 0x67, 0x71, 0xA5, +0x2D, 0x5B, 0x01, 0x61, 0xE0, 0x4B, 0x40, 0x9A, +0x01, 0x6C, 0x84, 0xEB, 0x4C, 0xEC, 0x06, 0x24, +0x7D, 0x67, 0x51, 0xA3, 0x50, 0xC3, 0x01, 0x6A, +0x4B, 0xEA, 0x51, 0xC3, 0x9D, 0x67, 0x71, 0xA4, +0xFF, 0x73, 0x15, 0x60, 0x52, 0xA4, 0xFF, 0x72, +0x12, 0x60, 0xA7, 0x44, 0x65, 0xC0, 0x1D, 0x4D, +0xA0, 0xA5, 0x44, 0xC0, 0x47, 0x44, 0x20, 0xF0, +0xA9, 0xC0, 0x1D, 0x4A, 0x40, 0xA2, 0x6C, 0xA0, +0x20, 0xF0, 0x48, 0xC0, 0x19, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x10, 0x6B, 0x21, 0x10, 0x7D, 0x67, +0x51, 0xA3, 0xFF, 0x72, 0x0B, 0x60, 0x72, 0xA3, +0xFF, 0x73, 0x08, 0x61, 0x9D, 0x67, 0xA7, 0x44, +0x44, 0xC0, 0x1D, 0x4D, 0x80, 0xA5, 0x20, 0xF0, +0x88, 0xC0, 0x0D, 0x10, 0xBD, 0x67, 0x51, 0xA5, +0xFF, 0x72, 0x10, 0x61, 0x52, 0xA5, 0xFF, 0x72, +0x0D, 0x60, 0x44, 0xC0, 0x47, 0x45, 0x1D, 0x4A, +0x40, 0xA2, 0x20, 0xF0, 0x48, 0xC0, 0x6C, 0xA0, +0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x08, 0x6B, +0x6D, 0xEA, 0x4C, 0xC0, 0x0B, 0x93, 0x80, 0x6A, +0x9D, 0x67, 0x6C, 0xEA, 0x70, 0xA4, 0x2D, 0x5B, +0x02, 0x61, 0x4D, 0xEB, 0x70, 0xC4, 0x64, 0xA0, +0xFF, 0x6D, 0x88, 0x43, 0xDB, 0x4C, 0xAC, 0xEC, +0xD2, 0x5C, 0x02, 0x60, 0x4D, 0xEB, 0x64, 0xC0, +0x65, 0xA0, 0xFF, 0x6D, 0x88, 0x43, 0xDB, 0x4C, +0xAC, 0xEC, 0xD2, 0x5C, 0x02, 0x60, 0x6D, 0xEA, +0x45, 0xC0, 0xBD, 0x67, 0x50, 0xA5, 0x01, 0x10, +0xFF, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xFE, 0x63, 0x03, 0xD1, +0x02, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x32, 0x6B, +0x78, 0xEC, 0x30, 0xF0, 0x21, 0x6B, 0x4C, 0xEF, +0x33, 0xF1, 0x08, 0x4B, 0x00, 0xD7, 0xC0, 0xA5, +0x12, 0xEC, 0x91, 0xE3, 0xEC, 0xA4, 0x03, 0x6B, +0xEC, 0xEB, 0x4C, 0xEB, 0x3F, 0x23, 0x04, 0x6B, +0xEC, 0xEB, 0x4C, 0xEB, 0x3B, 0x23, 0x20, 0xF0, +0xE1, 0xA4, 0x20, 0x6B, 0x6B, 0xEB, 0xEC, 0xEB, +0x4C, 0xEB, 0x34, 0x23, 0xED, 0xA4, 0x07, 0x6B, +0x07, 0x67, 0x6C, 0xE8, 0x30, 0x67, 0x4C, 0xE9, +0x08, 0x21, 0xFF, 0x48, 0xFF, 0xF6, 0x19, 0x4A, +0x6C, 0xE8, 0xEC, 0xEA, 0x0D, 0xEA, 0x4D, 0xC4, +0x25, 0x10, 0x08, 0x68, 0x0B, 0xE8, 0xEC, 0xE8, +0x05, 0x6F, 0xED, 0xE8, 0x0D, 0xC4, 0x20, 0xF0, +0x81, 0xA4, 0x7F, 0x6B, 0xCC, 0xEB, 0x96, 0x34, +0x2D, 0x5B, 0x4C, 0xEC, 0x14, 0x61, 0x00, 0x90, +0x80, 0x6F, 0xCC, 0xEF, 0x02, 0x70, 0x02, 0x61, +0x0E, 0x2F, 0x10, 0x10, 0xFF, 0x4C, 0x0A, 0x6B, +0x78, 0xEC, 0x12, 0xEC, 0x93, 0xE6, 0x4C, 0xEC, +0xB5, 0x74, 0x08, 0x60, 0x07, 0x2F, 0x80, 0x4B, +0xF6, 0x4B, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x03, 0x91, +0x02, 0x90, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0x6B, 0x78, 0xEA, -0x30, 0xF0, 0x21, 0x6C, 0x73, 0xF0, 0x00, 0x4C, +0xFF, 0x6A, 0x8C, 0xEA, 0x32, 0x6B, 0x78, 0xEA, +0x30, 0xF0, 0x21, 0x6C, 0x33, 0xF1, 0x08, 0x4C, 0x12, 0xEB, 0x6D, 0xE4, 0x03, 0x2E, 0x25, 0x67, 0x00, 0x68, 0x02, 0x10, 0x26, 0x67, 0x20, 0x68, 0x1F, 0x6C, 0x00, 0xF6, 0x80, 0x37, 0x00, 0xF6, @@ -34843,174 +35151,176 @@ u8 array_mp_8822c_fw_nic[] = { 0x07, 0x61, 0x20, 0x49, 0x8C, 0xE9, 0x04, 0x10, 0x01, 0x4C, 0x20, 0x74, 0xE8, 0x61, 0x00, 0x69, 0x00, 0xC3, 0x21, 0xC3, 0x82, 0x67, 0x80, 0x18, -0x1E, 0x49, 0x7F, 0x6B, 0x4C, 0xEB, 0x63, 0xE8, +0x2C, 0x49, 0x7F, 0x6B, 0x4C, 0xEB, 0x63, 0xE8, 0x50, 0x67, 0x09, 0x61, 0xFF, 0x6A, 0x83, 0x67, 0x4C, 0xEB, 0x2C, 0xEA, 0x43, 0xEB, 0x01, 0x60, 0x91, 0x67, 0xFF, 0x6A, 0x8C, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF3, 0xD0, 0x9A, 0x03, 0x6A, 0x02, 0x68, -0x40, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0xB4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, -0xEC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0x9C, 0x9A, 0x01, 0x6A, 0xE0, 0xDD, 0x80, 0xDB, +0x03, 0xF4, 0xD4, 0x9A, 0x03, 0x6A, 0x02, 0x68, +0x40, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, +0xB8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, +0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, +0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, +0x80, 0x9A, 0x01, 0x6A, 0xE0, 0xDD, 0x80, 0xDB, 0x00, 0xC6, 0xE0, 0xDD, 0x80, 0xDB, 0x40, 0xC6, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF4, 0x40, 0x9A, -0x40, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x80, 0xDB, 0xC8, 0xF5, 0x11, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, 0x44, 0x9A, +0x40, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x80, 0xDB, 0x88, 0xF6, 0x11, 0xC2, 0x00, 0x68, 0x00, 0xC6, 0xE0, 0xDD, 0x80, 0xDB, -0x04, 0x6B, 0xC8, 0xF5, 0x70, 0xC2, 0x01, 0x90, +0x04, 0x6B, 0x88, 0xF6, 0x70, 0xC2, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0xE4, 0x63, 0x37, 0x62, 0x36, 0xD1, 0x35, 0xD0, 0x30, 0xF0, 0x20, 0x6D, 0x07, 0x04, 0x02, 0xF4, 0x0C, 0x4D, 0x54, 0x6E, -0x00, 0x18, 0x42, 0xD7, 0x30, 0xF0, 0x20, 0x6D, +0x00, 0x18, 0x9D, 0xD8, 0x30, 0xF0, 0x20, 0x6D, 0x1C, 0x04, 0xA2, 0xF3, 0x18, 0x4D, 0x54, 0x6E, -0x00, 0x18, 0x42, 0xD7, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0x9D, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x6C, 0x9A, 0xA2, 0xF3, 0x0C, 0x4A, 0x30, 0xF0, 0x21, 0x68, 0x04, 0xD3, 0x61, 0x9A, -0x44, 0xAA, 0x73, 0xF0, 0x00, 0x48, 0x05, 0xD3, +0x44, 0xAA, 0x33, 0xF1, 0x08, 0x48, 0x05, 0xD3, 0x7D, 0x67, 0x4C, 0xCB, 0x30, 0xF0, 0x21, 0x6A, -0x73, 0xF6, 0x00, 0x4A, 0x32, 0xD2, 0x68, 0xA0, +0x73, 0xF7, 0x08, 0x4A, 0x32, 0xD2, 0x68, 0xA0, 0x20, 0x6A, 0xC7, 0xA0, 0x4B, 0xEA, 0x6C, 0xEA, 0x09, 0x6B, 0x6D, 0xEA, 0xEA, 0x4B, 0xCC, 0xEB, 0x04, 0x6E, 0xEC, 0xA0, 0xCB, 0xEE, 0xCC, 0xEB, 0x67, 0xC0, 0x04, 0x6B, 0xED, 0xEB, 0xCC, 0xEB, 0x20, 0x6E, 0xCD, 0xEA, 0x40, 0x6E, 0xCD, 0xEA, -0xDA, 0xA0, 0x48, 0xC0, 0x03, 0x6A, 0x4B, 0xEA, +0xDC, 0xA0, 0x48, 0xC0, 0x03, 0x6A, 0x4B, 0xEA, 0xCC, 0xEA, 0x41, 0x6E, 0xCB, 0xEE, 0x00, 0x6C, -0xCC, 0xEA, 0xCF, 0xA0, 0x81, 0xC0, 0x82, 0xC0, -0x99, 0xC0, 0x31, 0x6C, 0x8B, 0xEC, 0xCC, 0xEC, -0x8F, 0xC0, 0x7F, 0x6C, 0x8C, 0xEB, 0x00, 0x6C, -0x8A, 0xC0, 0x8A, 0xC8, 0xDF, 0x4C, 0x8C, 0xEA, -0x8D, 0xA0, 0x5A, 0xC0, 0x02, 0x6A, 0x4B, 0xEA, -0x8C, 0xEA, 0x6C, 0xC0, 0x4D, 0xC0, 0x00, 0x6B, -0x33, 0x6D, 0x01, 0x6A, 0x7F, 0xC0, 0x20, 0xF0, -0x6E, 0xC0, 0xA0, 0xC0, 0xA6, 0xC0, 0x20, 0xF0, -0x48, 0xC0, 0x30, 0xF0, 0x20, 0x69, 0x80, 0xF2, -0x48, 0x99, 0x87, 0x40, 0x1A, 0x4C, 0xFF, 0x6D, -0x02, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x99, -0x87, 0x40, 0x1C, 0x4C, 0x00, 0x6D, 0x02, 0x6E, -0x40, 0xEA, 0x32, 0x93, 0x30, 0x48, 0x6A, 0xE8, -0xAE, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x80, 0x18, -0x8C, 0x4A, 0x30, 0xF0, 0x21, 0x69, 0x80, 0xF2, -0x4C, 0x98, 0x73, 0xF6, 0x00, 0x49, 0x91, 0x67, -0x1C, 0x05, 0x54, 0x6E, 0x40, 0xEA, 0x80, 0xF2, -0x4C, 0x98, 0x87, 0x41, 0x4D, 0x4C, 0x07, 0x05, -0x54, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x21, 0x6C, 0x54, 0xF0, 0x1A, 0x4C, -0x04, 0x05, 0x0A, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x21, 0x6A, 0x30, 0xF0, 0x21, 0x6B, 0x13, 0xF7, -0x0A, 0x4A, 0xB3, 0xF7, 0x12, 0x4B, 0x0A, 0x6C, -0x80, 0xCA, 0x00, 0x6C, 0xA0, 0xF0, 0x88, 0xCA, -0x02, 0x4A, 0x6A, 0xEA, 0xF8, 0x61, 0x37, 0x97, -0x36, 0x91, 0x35, 0x90, 0x1C, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xEE, 0x30, 0x6A, -0x58, 0xEC, 0x30, 0xF0, 0x21, 0x6A, 0x73, 0xF0, -0x00, 0x4A, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xED, -0x11, 0xD7, 0x04, 0xD5, 0x05, 0xD6, 0x12, 0xEC, -0x89, 0xE2, 0x86, 0x67, 0x06, 0xD2, 0xE4, 0xF2, -0x08, 0x4C, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0x34, -0x2B, 0xF1, 0x18, 0x4A, 0x49, 0xE4, 0x01, 0xAA, -0x03, 0xED, 0x13, 0xE5, 0x02, 0x60, 0x04, 0x92, -0x53, 0xE0, 0x6C, 0xEC, 0x05, 0x93, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x24, 0xF3, -0x1C, 0x4B, 0x64, 0x33, 0x4D, 0xE3, 0x61, 0xAB, -0xFF, 0x4C, 0x07, 0xD3, 0xFF, 0xF7, 0x1F, 0x6B, -0x6C, 0xEC, 0x07, 0x5C, 0x13, 0x60, 0x04, 0x93, -0x03, 0xEB, 0x08, 0x60, 0x05, 0x93, 0xE4, 0xF2, -0x08, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x61, 0xAA, -0xFF, 0x4B, 0x12, 0x10, 0x05, 0x93, 0xE4, 0xF2, -0x08, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x61, 0xAA, -0x01, 0x4B, 0x0A, 0x10, 0x05, 0x93, 0x04, 0x94, -0xE4, 0xF2, 0x08, 0x4B, 0x64, 0x33, 0x49, 0xE3, -0x0C, 0x33, 0x0F, 0xE3, 0x8D, 0xE3, 0x6F, 0x33, -0x61, 0xCA, 0x05, 0x93, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE4, 0xF2, 0x08, 0x4B, -0x64, 0x33, 0x4D, 0xE3, 0x61, 0xAB, 0xE7, 0xF3, -0x40, 0x9A, 0x08, 0xD3, 0xFF, 0x6B, 0x01, 0x4B, -0x4C, 0xEB, 0x09, 0x23, 0x08, 0x95, 0x04, 0x97, -0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF6, 0x18, 0x4C, -0xD0, 0x67, 0x80, 0x18, 0x48, 0x43, 0x04, 0x92, -0x43, 0xE8, 0x14, 0x61, 0x06, 0x94, 0x43, 0xE0, -0xFF, 0xF7, 0x1F, 0x6A, 0x69, 0xA4, 0x4C, 0xE8, -0x0F, 0x6C, 0x6A, 0x32, 0x8C, 0xEA, 0x44, 0x32, -0x01, 0x6D, 0xAD, 0xEA, 0x8C, 0xEA, 0xB4, 0x4C, -0x48, 0x32, 0x6C, 0xEC, 0x4D, 0xEC, 0x06, 0x92, -0x89, 0xC2, 0x13, 0x10, 0x04, 0x93, 0x06, 0x94, -0xFF, 0xF7, 0x1F, 0x6A, 0x03, 0xE3, 0x69, 0xA4, -0x4C, 0xE8, 0x0F, 0x6C, 0x6A, 0x32, 0x8C, 0xEA, -0x44, 0x32, 0x8C, 0xEA, 0x48, 0x34, 0x3D, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x06, 0x93, 0x8D, 0xEA, -0x49, 0xC3, 0x06, 0x94, 0x03, 0x6B, 0x49, 0xA4, -0x4A, 0x32, 0x6C, 0xEA, 0xFF, 0x4A, 0x02, 0x5A, -0x04, 0x61, 0x03, 0x58, 0x07, 0x91, 0x40, 0x60, -0x07, 0x10, 0x09, 0x58, 0x09, 0x6A, 0x01, 0x60, -0x50, 0x67, 0xFF, 0xF7, 0x1F, 0x68, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE7, 0xF3, 0x80, 0x9A, 0xFF, 0x6B, 0x01, 0x4B, -0x8C, 0xEB, 0x0F, 0x23, 0x06, 0x93, 0x49, 0xE0, -0x28, 0xF7, 0xE2, 0xA2, 0xA9, 0xA3, 0x30, 0xF0, -0x20, 0x6C, 0x0F, 0x6B, 0xAA, 0x35, 0xA4, 0xF6, -0x1C, 0x4C, 0x6C, 0xED, 0xD0, 0x67, 0x80, 0x18, -0x48, 0x43, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x41, 0xE0, 0x28, 0xF7, 0x42, 0xA0, -0x07, 0x94, 0xFF, 0xF7, 0x1F, 0x6B, 0x00, 0x69, -0x49, 0xE4, 0x6C, 0xEA, 0x0A, 0x5A, 0x06, 0x61, -0x28, 0x42, 0xFE, 0x49, 0x6C, 0xE9, 0x1F, 0x59, -0x01, 0x61, 0x1E, 0x69, 0x05, 0x93, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x24, 0xF3, -0x1C, 0x4B, 0x64, 0x33, 0x49, 0xE3, 0x21, 0xCA, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, -0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x08, 0x22, -0x07, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF6, -0x14, 0x4C, 0xD1, 0x67, 0x80, 0x18, 0x48, 0x43, -0x08, 0x94, 0x11, 0x67, 0x0B, 0x5C, 0x10, 0x61, -0x15, 0x59, 0x01, 0x6A, 0x06, 0x60, 0x0B, 0x59, -0x58, 0x67, 0x01, 0x5A, 0x58, 0x67, 0x03, 0x6B, -0x4B, 0xE3, 0x08, 0x90, 0xF6, 0x48, 0x07, 0xEA, -0x01, 0xE1, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, -0x28, 0x58, 0x01, 0x61, 0x28, 0x68, 0x03, 0x59, -0x00, 0x69, 0x02, 0x60, 0x04, 0x92, 0x4A, 0x31, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, -0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x08, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF6, 0x04, 0x4C, -0xB1, 0x67, 0xD0, 0x67, 0x80, 0x18, 0x48, 0x43, -0x12, 0x92, 0x20, 0xCA, 0x11, 0x93, 0x00, 0xCB, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, -0x30, 0x6B, 0x78, 0xEC, 0x5D, 0x67, 0x25, 0x67, -0x40, 0xF0, 0xA8, 0xAA, 0x30, 0xF0, 0x21, 0x6A, -0x73, 0xF0, 0x00, 0x4A, 0x0C, 0xE9, 0x10, 0xD6, -0x11, 0xD7, 0x06, 0x07, 0x12, 0xEB, 0x69, 0xE2, -0x09, 0xD2, 0x7F, 0x6A, 0x2C, 0xEA, 0x08, 0xD2, -0x08, 0x96, 0x7D, 0x67, 0x00, 0x6A, 0x4C, 0xCB, -0x4D, 0xCB, 0x00, 0xF0, 0x1A, 0x02, 0x04, 0xD2, -0x80, 0x18, 0xFE, 0x4A, 0x80, 0x6B, 0x6B, 0xEB, -0x2C, 0xEB, 0x0C, 0xEB, 0x0A, 0x6A, 0x08, 0x2B, -0x08, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x49, 0xE4, 0x68, 0xF5, 0x5C, 0xA2, -0xDD, 0x67, 0x8C, 0xAE, 0x6D, 0xAE, 0x00, 0x69, -0xA3, 0x44, 0x55, 0xE5, 0xA2, 0xEB, 0x05, 0x60, -0x23, 0x44, 0x67, 0xE1, 0x25, 0xE2, 0xFF, 0x6A, -0x4C, 0xE9, 0x08, 0x93, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x49, 0xE3, 0xDD, 0x67, -0x28, 0xF5, 0x48, 0xA2, 0x8C, 0xAE, 0x6D, 0xAE, -0x00, 0x68, 0x95, 0xE2, 0xA2, 0xEB, 0x04, 0x60, -0x63, 0xE4, 0x41, 0xE0, 0xFF, 0x6A, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE7, 0xF3, 0x80, 0x9A, 0xFF, 0x6B, 0x01, 0x4B, -0x8C, 0xEB, 0x0C, 0x23, 0x08, 0x93, 0x30, 0xF0, -0x20, 0x6C, 0xE4, 0xF6, 0x1C, 0x4C, 0x49, 0xE3, -0x28, 0xF5, 0xA8, 0xA2, 0x68, 0xF5, 0xDC, 0xA2, -0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0xCC, 0xEA, 0xD0, 0xA0, 0x81, 0xC0, 0x82, 0xC0, +0x9B, 0xC0, 0x31, 0x6C, 0x8B, 0xEC, 0xCC, 0xEC, +0x90, 0xC0, 0x7F, 0x6C, 0x8C, 0xEB, 0x00, 0x6C, +0x8A, 0xC0, 0x8B, 0xC8, 0xDF, 0x4C, 0x8C, 0xEA, +0x8D, 0xA0, 0x6C, 0xC0, 0x5C, 0xC0, 0x00, 0x6B, +0x09, 0x6A, 0x20, 0xF0, 0x61, 0xC0, 0x20, 0xF0, +0x70, 0xC0, 0x4B, 0xEA, 0x08, 0x6B, 0x8C, 0xEA, +0x6B, 0xEB, 0x6C, 0xEA, 0x05, 0x6B, 0x6D, 0xEA, +0x33, 0x6D, 0x01, 0x6C, 0xA0, 0xC0, 0xA6, 0xC0, +0x20, 0xF0, 0x8A, 0xC0, 0x4D, 0xC0, 0x30, 0xF0, +0x20, 0x69, 0x80, 0xF2, 0x48, 0x99, 0x87, 0x40, +0x1C, 0x4C, 0xFF, 0x6D, 0x02, 0x6E, 0x40, 0xEA, +0x80, 0xF2, 0x48, 0x99, 0x87, 0x40, 0x1E, 0x4C, +0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x32, 0x93, +0x32, 0x48, 0x6A, 0xE8, 0xA8, 0x61, 0x30, 0xF0, +0x20, 0x68, 0x80, 0x18, 0xAA, 0x4A, 0x30, 0xF0, +0x21, 0x69, 0x80, 0xF2, 0x4C, 0x98, 0x73, 0xF7, +0x08, 0x49, 0x91, 0x67, 0x1C, 0x05, 0x54, 0x6E, +0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, 0x87, 0x41, +0x4D, 0x4C, 0x07, 0x05, 0x54, 0x6E, 0x40, 0xEA, +0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x21, 0x6C, +0x74, 0xF1, 0x02, 0x4C, 0x04, 0x05, 0x0A, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x21, 0x6A, 0x30, 0xF0, +0x21, 0x6B, 0x14, 0xF0, 0x12, 0x4A, 0xB4, 0xF0, +0x1A, 0x4B, 0x0A, 0x6C, 0x80, 0xCA, 0x00, 0x6C, +0xA0, 0xF0, 0x88, 0xCA, 0x02, 0x4A, 0x6A, 0xEA, +0xF8, 0x61, 0x37, 0x97, 0x36, 0x91, 0x35, 0x90, +0x1C, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x4C, 0xEE, 0x32, 0x6A, 0x58, 0xEC, 0x30, 0xF0, +0x21, 0x6A, 0x33, 0xF1, 0x08, 0x4A, 0xFF, 0xF7, +0x1F, 0x6B, 0x6C, 0xED, 0x11, 0xD7, 0x04, 0xD5, +0x05, 0xD6, 0x12, 0xEC, 0x89, 0xE2, 0x86, 0x67, +0x06, 0xD2, 0x44, 0xF3, 0x08, 0x4C, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0x34, 0x8B, 0xF1, 0x00, 0x4A, +0x49, 0xE4, 0x01, 0xAA, 0x03, 0xED, 0x13, 0xE5, +0x02, 0x60, 0x04, 0x92, 0x53, 0xE0, 0x6C, 0xEC, +0x05, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x84, 0xF3, 0x1C, 0x4B, 0x64, 0x33, +0x4D, 0xE3, 0x61, 0xAB, 0xFF, 0x4C, 0x07, 0xD3, +0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x07, 0x5C, +0x13, 0x60, 0x04, 0x93, 0x03, 0xEB, 0x08, 0x60, +0x05, 0x93, 0x44, 0xF3, 0x08, 0x4B, 0x64, 0x33, +0x49, 0xE3, 0x61, 0xAA, 0xFF, 0x4B, 0x12, 0x10, +0x05, 0x93, 0x44, 0xF3, 0x08, 0x4B, 0x64, 0x33, +0x49, 0xE3, 0x61, 0xAA, 0x01, 0x4B, 0x0A, 0x10, +0x05, 0x93, 0x04, 0x94, 0x44, 0xF3, 0x08, 0x4B, +0x64, 0x33, 0x49, 0xE3, 0x0C, 0x33, 0x0F, 0xE3, +0x8D, 0xE3, 0x6F, 0x33, 0x61, 0xCA, 0x05, 0x93, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x44, 0xF3, 0x08, 0x4B, 0x64, 0x33, 0x4D, 0xE3, +0x61, 0xAB, 0x47, 0xF4, 0x58, 0x9A, 0x08, 0xD3, +0xFF, 0x6B, 0x01, 0x4B, 0x4C, 0xEB, 0x09, 0x23, +0x08, 0x95, 0x04, 0x97, 0x30, 0xF0, 0x20, 0x6C, +0xA4, 0xF6, 0x1C, 0x4C, 0xD0, 0x67, 0x80, 0x18, +0x52, 0x43, 0x04, 0x92, 0x43, 0xE8, 0x14, 0x61, +0x06, 0x94, 0x43, 0xE0, 0xFF, 0xF7, 0x1F, 0x6A, +0x69, 0xA4, 0x4C, 0xE8, 0x0F, 0x6C, 0x6A, 0x32, +0x8C, 0xEA, 0x44, 0x32, 0x01, 0x6D, 0xAD, 0xEA, +0x8C, 0xEA, 0xB4, 0x4C, 0x48, 0x32, 0x6C, 0xEC, +0x4D, 0xEC, 0x06, 0x92, 0x89, 0xC2, 0x13, 0x10, +0x04, 0x93, 0x06, 0x94, 0xFF, 0xF7, 0x1F, 0x6A, +0x03, 0xE3, 0x69, 0xA4, 0x4C, 0xE8, 0x0F, 0x6C, +0x6A, 0x32, 0x8C, 0xEA, 0x44, 0x32, 0x8C, 0xEA, +0x48, 0x34, 0x3D, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x06, 0x93, 0x8D, 0xEA, 0x49, 0xC3, 0x06, 0x94, +0x03, 0x6B, 0x49, 0xA4, 0x4A, 0x32, 0x6C, 0xEA, +0xFF, 0x4A, 0x02, 0x5A, 0x04, 0x61, 0x03, 0x58, +0x07, 0x91, 0x40, 0x60, 0x07, 0x10, 0x09, 0x58, +0x09, 0x6A, 0x01, 0x60, 0x50, 0x67, 0xFF, 0xF7, +0x1F, 0x68, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, 0x98, 0x9A, +0xFF, 0x6B, 0x01, 0x4B, 0x8C, 0xEB, 0x0F, 0x23, +0x06, 0x93, 0x49, 0xE0, 0xE8, 0xF7, 0xE2, 0xA2, +0xA9, 0xA3, 0x30, 0xF0, 0x20, 0x6C, 0x0F, 0x6B, +0xAA, 0x35, 0xE4, 0xF6, 0x00, 0x4C, 0x6C, 0xED, +0xD0, 0x67, 0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x41, 0xE0, +0xE8, 0xF7, 0x42, 0xA0, 0x07, 0x94, 0xFF, 0xF7, +0x1F, 0x6B, 0x00, 0x69, 0x49, 0xE4, 0x6C, 0xEA, +0x0A, 0x5A, 0x06, 0x61, 0x28, 0x42, 0xFE, 0x49, +0x6C, 0xE9, 0x1F, 0x59, 0x01, 0x61, 0x1E, 0x69, +0x05, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x84, 0xF3, 0x1C, 0x4B, 0x64, 0x33, +0x49, 0xE3, 0x21, 0xCA, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x08, 0x22, 0x07, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0xE4, 0xF6, 0x18, 0x4C, 0xD1, 0x67, +0x80, 0x18, 0x52, 0x43, 0x08, 0x94, 0x11, 0x67, +0x0B, 0x5C, 0x10, 0x61, 0x15, 0x59, 0x01, 0x6A, +0x06, 0x60, 0x0B, 0x59, 0x58, 0x67, 0x01, 0x5A, +0x58, 0x67, 0x03, 0x6B, 0x4B, 0xE3, 0x08, 0x90, +0xF6, 0x48, 0x07, 0xEA, 0x01, 0xE1, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0x28, 0x58, 0x01, 0x61, +0x28, 0x68, 0x03, 0x59, 0x00, 0x69, 0x02, 0x60, +0x04, 0x92, 0x4A, 0x31, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF7, 0x0C, 0x4C, 0xB0, 0x67, 0xD1, 0x67, -0x80, 0x18, 0x48, 0x43, 0x09, 0x94, 0x3F, 0x6B, -0x5E, 0xA4, 0x6C, 0xEA, 0x7E, 0x84, 0x00, 0x53, +0x04, 0xF7, 0x08, 0x4C, 0xB1, 0x67, 0xD0, 0x67, +0x80, 0x18, 0x52, 0x43, 0x12, 0x92, 0x20, 0xCA, +0x11, 0x93, 0x00, 0xCB, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x68, 0x0C, 0xEC, 0x32, 0x6B, 0x78, 0xEC, +0x5D, 0x67, 0x25, 0x67, 0x40, 0xF0, 0xA8, 0xAA, +0x30, 0xF0, 0x21, 0x6A, 0x33, 0xF1, 0x08, 0x4A, +0x0C, 0xE9, 0x10, 0xD6, 0x11, 0xD7, 0x06, 0x07, +0x12, 0xEB, 0x69, 0xE2, 0x09, 0xD2, 0x7F, 0x6A, +0x2C, 0xEA, 0x08, 0xD2, 0x08, 0x96, 0x7D, 0x67, +0x00, 0x6A, 0x4C, 0xCB, 0x4D, 0xCB, 0x00, 0xF0, +0x1A, 0x02, 0x04, 0xD2, 0x80, 0x18, 0x1F, 0x4B, +0x80, 0x6B, 0x6B, 0xEB, 0x2C, 0xEB, 0x0C, 0xEB, +0x0A, 0x6A, 0x08, 0x2B, 0x08, 0x94, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x49, 0xE4, +0x28, 0xF6, 0x5C, 0xA2, 0xDD, 0x67, 0x8C, 0xAE, +0x6D, 0xAE, 0x00, 0x69, 0xA3, 0x44, 0x55, 0xE5, +0xA2, 0xEB, 0x05, 0x60, 0x23, 0x44, 0x67, 0xE1, +0x25, 0xE2, 0xFF, 0x6A, 0x4C, 0xE9, 0x08, 0x93, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x49, 0xE3, 0xDD, 0x67, 0xE8, 0xF5, 0x48, 0xA2, +0x8C, 0xAE, 0x6D, 0xAE, 0x00, 0x68, 0x95, 0xE2, +0xA2, 0xEB, 0x04, 0x60, 0x63, 0xE4, 0x41, 0xE0, +0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, 0x98, 0x9A, +0xFF, 0x6B, 0x01, 0x4B, 0x8C, 0xEB, 0x0C, 0x23, +0x08, 0x93, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF7, +0x00, 0x4C, 0x49, 0xE3, 0xE8, 0xF5, 0xA8, 0xA2, +0x28, 0xF6, 0xDC, 0xA2, 0x80, 0x18, 0x52, 0x43, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, +0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x08, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF7, 0x10, 0x4C, +0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, 0x52, 0x43, +0x09, 0x94, 0x3F, 0x6B, 0x20, 0xF0, 0x40, 0xA4, +0x6C, 0xEA, 0x20, 0xF0, 0x60, 0x84, 0x00, 0x53, 0x0F, 0x60, 0x43, 0xE9, 0x02, 0x60, 0x00, 0x69, 0x03, 0x10, 0x47, 0xE1, 0xFF, 0x6B, 0x6C, 0xE9, 0x43, 0xE8, 0x02, 0x60, 0x00, 0x68, 0x0A, 0x10, @@ -35021,92 +35331,110 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xC6, 0x51, 0x67, 0x01, 0x61, 0x5A, 0x6A, 0x11, 0x93, 0x40, 0xC3, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0x68, 0x18, 0xEC, -0x4C, 0xED, 0x30, 0xF0, 0x21, 0x6A, 0x73, 0xF0, -0x00, 0x4A, 0x07, 0xD4, 0x06, 0xD5, 0x01, 0x69, -0x12, 0xE8, 0x01, 0xE2, 0x46, 0xA0, 0x08, 0xD2, -0x00, 0x6A, 0x05, 0xD2, 0x81, 0xA0, 0x4C, 0xA0, -0x07, 0x96, 0xFF, 0x6B, 0x91, 0xE1, 0x03, 0x6F, -0x6C, 0xEC, 0x01, 0x6D, 0x4C, 0xEF, 0x80, 0x18, -0xA0, 0x49, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, -0x78, 0x9B, 0x04, 0xD2, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0x0C, 0x22, 0x05, 0x92, 0xC1, 0xA0, -0x04, 0x97, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF7, 0x1C, 0x4C, 0xA2, 0x67, 0xD9, 0xE2, -0x80, 0x18, 0x48, 0x43, 0x04, 0x92, 0xFF, 0x72, -0x0E, 0x61, 0x05, 0x93, 0x81, 0xA0, 0x40, 0xA0, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x32, 0x68, 0x18, 0xEC, +0x4C, 0xED, 0x4C, 0xEE, 0x30, 0xF0, 0x21, 0x6A, +0x33, 0xF1, 0x08, 0x4A, 0x09, 0xD4, 0x08, 0xD5, +0x0B, 0xD6, 0x01, 0x69, 0x12, 0xE8, 0x01, 0xE2, +0x46, 0xA0, 0x0A, 0xD2, 0x00, 0x6A, 0x07, 0xD2, +0x6C, 0xA0, 0x81, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, +0x0B, 0x95, 0x09, 0x97, 0x04, 0xD2, 0x91, 0xE1, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x6E, 0x80, 0x18, +0xAE, 0x49, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, +0x78, 0x9B, 0x06, 0xD2, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x0C, 0x22, 0x07, 0x92, 0xC1, 0xA0, +0x06, 0x97, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6C, +0x44, 0xF7, 0x00, 0x4C, 0xA2, 0x67, 0xD9, 0xE2, +0x80, 0x18, 0x52, 0x43, 0x06, 0x92, 0xFF, 0x72, +0x0E, 0x61, 0x07, 0x93, 0x81, 0xA0, 0x40, 0xA0, 0x01, 0x4B, 0x91, 0xE3, 0x42, 0xEC, 0x06, 0x60, 0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, 0x54, 0x71, -0x05, 0xD3, 0xD0, 0x61, 0x04, 0xD2, 0x06, 0x92, +0x07, 0xD3, 0xCE, 0x61, 0x06, 0xD2, 0x08, 0x92, 0x38, 0x5A, 0x02, 0x61, 0x46, 0xA0, 0x0D, 0x10, -0x06, 0x92, 0x24, 0x5A, 0x05, 0x61, 0x08, 0x92, +0x08, 0x92, 0x24, 0x5A, 0x05, 0x61, 0x0A, 0x92, 0xFF, 0x6B, 0xFE, 0x4A, 0x6C, 0xEA, 0x05, 0x10, -0x06, 0x92, 0x15, 0x5A, 0x04, 0x92, 0x01, 0x60, -0x41, 0xA0, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, -0x07, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x30, 0x68, 0x18, 0xEC, 0x4C, 0xEF, 0x30, 0xF0, -0x21, 0x6B, 0x0D, 0xD5, 0x0E, 0xD6, 0x06, 0xD4, -0x05, 0xD7, 0x73, 0xF0, 0x00, 0x4B, 0x20, 0xA5, -0x03, 0x6D, 0x12, 0xE8, 0x01, 0xE3, 0x60, 0xA6, -0x04, 0xD3, 0x87, 0xA0, 0x04, 0x96, 0xAC, 0xEC, -0x64, 0x67, 0x4C, 0xEB, 0xC2, 0xEB, 0x03, 0x60, -0x0E, 0x91, 0x80, 0xC1, 0xA2, 0x10, 0xA0, 0xF0, -0x00, 0x23, 0x2F, 0x59, 0x80, 0xF0, 0x1D, 0x60, -0x6C, 0xA0, 0x6C, 0xED, 0x4C, 0xED, 0x80, 0xF0, -0x18, 0x25, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x08, 0x92, 0x15, 0x5A, 0x06, 0x92, 0x01, 0x60, +0x41, 0xA0, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x32, 0x68, 0x18, 0xEC, 0x4C, 0xEF, 0x30, 0xF0, +0x21, 0x6B, 0x10, 0xD6, 0x0F, 0xD5, 0x07, 0xD4, +0x05, 0xD7, 0x33, 0xF1, 0x08, 0x4B, 0x12, 0xE8, +0x01, 0xE3, 0x60, 0xA5, 0x06, 0xD3, 0x80, 0xA6, +0x03, 0x6B, 0x04, 0xD4, 0xA7, 0xA0, 0x04, 0x96, +0x6C, 0xED, 0x85, 0x67, 0x4C, 0xEC, 0xC2, 0xEC, +0x03, 0x60, 0x10, 0x91, 0xA0, 0xC1, 0xE4, 0x10, +0xE0, 0xF0, 0x02, 0x24, 0x06, 0x94, 0x7F, 0x69, +0x8C, 0xE9, 0x39, 0x59, 0xC0, 0xF0, 0x1C, 0x60, +0x8C, 0xA0, 0x8C, 0xEB, 0x4C, 0xEB, 0xC0, 0xF0, +0x17, 0x23, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x09, 0x22, 0x05, 0x95, 0x04, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0x24, 0xF7, 0x10, 0x4C, 0xF1, 0x67, -0x80, 0x18, 0x48, 0x43, 0x05, 0x92, 0x01, 0x72, -0x03, 0x60, 0x05, 0x6B, 0x01, 0x6A, 0x42, 0x10, -0x04, 0x6B, 0x00, 0x6A, 0x3F, 0x10, 0x05, 0x93, -0x81, 0x42, 0x01, 0x73, 0x01, 0x60, 0x8F, 0x42, -0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6F, -0x48, 0xF4, 0x00, 0x4F, 0x88, 0x32, 0xE9, 0xE2, -0xC0, 0xAA, 0xFF, 0x6D, 0x88, 0x34, 0x26, 0x67, -0xAC, 0xE9, 0x04, 0xD1, 0x47, 0xA0, 0x91, 0xE7, -0xE1, 0xAC, 0x1A, 0x65, 0x38, 0x67, 0x03, 0x6A, -0x2C, 0xEA, 0xE2, 0x34, 0xAC, 0xEA, 0xAC, 0xEC, -0xC2, 0x33, 0x82, 0xEA, 0xAC, 0xEB, 0x41, 0x61, -0xE4, 0xC0, 0x30, 0xF0, 0x20, 0x6D, 0x05, 0xD5, -0x06, 0x95, 0x30, 0x69, 0x38, 0xED, 0x05, 0x91, -0x2B, 0xF1, 0x18, 0x49, 0x12, 0xED, 0x35, 0xE5, -0x47, 0xF7, 0x8E, 0xC5, 0x84, 0xA0, 0xFF, 0x74, -0x30, 0x60, 0xAC, 0xA0, 0x19, 0x6C, 0x8B, 0xEC, -0xAC, 0xEC, 0x08, 0x6D, 0xAD, 0xEC, 0x8C, 0xC0, -0x28, 0x10, 0x01, 0x4A, 0xFF, 0x6C, 0x8C, 0xEA, -0x63, 0xEA, 0x46, 0x60, 0x30, 0xF0, 0x20, 0x6C, -0x48, 0x35, 0x48, 0xF4, 0x00, 0x4C, 0x91, 0xE5, -0xA0, 0xAC, 0xFF, 0x6C, 0xC5, 0x67, 0x8C, 0xEE, -0x2E, 0xEE, 0x05, 0x2E, 0xA2, 0x35, 0x8C, 0xED, -0x04, 0x94, 0x8E, 0xED, 0xB0, 0x25, 0x30, 0xF0, -0x20, 0x6C, 0x48, 0x35, 0x48, 0xF4, 0x00, 0x4C, -0xB1, 0xE4, 0xA1, 0xAC, 0xFF, 0x6C, 0xC5, 0x67, -0x8C, 0xEE, 0x2E, 0xEE, 0xDE, 0x2E, 0x04, 0x96, -0xA2, 0x35, 0x8C, 0xED, 0xCE, 0xED, 0xD9, 0x2D, -0x9E, 0x17, 0x62, 0xEA, 0x00, 0x68, 0x09, 0x61, -0x3D, 0x67, 0x47, 0x41, 0x09, 0x4A, 0x40, 0xA2, -0x0D, 0x91, 0x01, 0x68, 0x40, 0xC1, 0x0E, 0x94, -0x60, 0xC4, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, -0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x09, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF7, -0x0C, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x48, 0x43, -0x01, 0x10, 0x00, 0x68, 0x50, 0x67, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0x00, 0x68, 0xF0, 0x67, 0xD0, 0x67, 0xE5, 0x17, +0x20, 0x6C, 0x44, 0xF7, 0x14, 0x4C, 0xF1, 0x67, +0x80, 0x18, 0x52, 0x43, 0x05, 0x96, 0x01, 0x76, +0x03, 0x60, 0x07, 0x6B, 0x01, 0x6A, 0x8A, 0x10, +0x06, 0x6B, 0x00, 0x6A, 0x87, 0x10, 0xE0, 0xAD, +0xFF, 0x6C, 0xC7, 0x67, 0x8C, 0xEE, 0x2E, 0xEE, +0x77, 0x2E, 0x04, 0x96, 0xE2, 0x37, 0x8C, 0xEF, +0xCE, 0xEF, 0x72, 0x2F, 0x05, 0x91, 0x01, 0x71, +0x02, 0x61, 0x01, 0x4A, 0x01, 0x10, 0xFF, 0x4A, +0x8C, 0xEA, 0x06, 0x94, 0x80, 0x6B, 0x30, 0xF0, +0x20, 0x6D, 0x8C, 0xEB, 0x06, 0x6C, 0x98, 0xEA, +0x68, 0xF4, 0x10, 0x4D, 0xFF, 0x6E, 0x12, 0xEC, +0xB1, 0xE4, 0xE0, 0xAC, 0x27, 0x67, 0xCC, 0xE9, +0x05, 0xD1, 0x03, 0x69, 0x38, 0xEA, 0xE2, 0x34, +0x06, 0xD4, 0x87, 0xA0, 0x2C, 0xEC, 0xCC, 0xEC, +0x12, 0xE9, 0x01, 0x49, 0x24, 0x31, 0xB5, 0xE1, +0xA0, 0xAD, 0x04, 0xD5, 0xA2, 0x35, 0xCC, 0xED, +0xA2, 0xEC, 0x1D, 0x61, 0x04, 0x91, 0x2C, 0xEE, +0x2D, 0x5E, 0x01, 0x61, 0x6D, 0xEE, 0xC4, 0xC0, +0x30, 0xF0, 0x20, 0x6E, 0x08, 0xD6, 0x07, 0x96, +0x32, 0x69, 0x38, 0xEE, 0x08, 0x91, 0x8B, 0xF1, +0x00, 0x49, 0x12, 0xEE, 0x39, 0xE6, 0xC7, 0xF7, +0xB0, 0xC6, 0xA4, 0xA0, 0xFF, 0x75, 0x07, 0x60, +0xCC, 0xA0, 0x19, 0x6D, 0xAB, 0xED, 0xCC, 0xED, +0x08, 0x6E, 0xCD, 0xED, 0xAC, 0xC0, 0x06, 0x6E, +0xD8, 0xEA, 0x30, 0xF0, 0x20, 0x6D, 0x68, 0xF4, +0x10, 0x4D, 0xC7, 0xA0, 0x1E, 0x65, 0x38, 0x67, +0x03, 0x6E, 0x2C, 0xEE, 0x12, 0xEA, 0xA9, 0xE2, +0x42, 0xAA, 0x42, 0x35, 0xA2, 0xEE, 0x32, 0x61, +0xFF, 0x6E, 0xCC, 0xEA, 0x2D, 0x5A, 0x01, 0x61, +0x6D, 0xEA, 0x45, 0xC0, 0x07, 0x91, 0x32, 0x6E, +0x30, 0xF0, 0x20, 0x6A, 0xD8, 0xE9, 0x8B, 0xF1, +0x00, 0x4A, 0x12, 0xEE, 0x49, 0xE6, 0xC7, 0xF7, +0xB1, 0xC2, 0x45, 0xA0, 0xFF, 0x72, 0x1E, 0x60, +0xAC, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, +0x10, 0x6D, 0xAD, 0xEA, 0x4C, 0xC0, 0x16, 0x10, +0x02, 0x4D, 0x98, 0x67, 0xAE, 0xEC, 0x7F, 0xF7, +0x1E, 0x2C, 0x01, 0x4A, 0xFF, 0x6C, 0x8C, 0xEA, +0x63, 0xEA, 0x3D, 0x60, 0x06, 0x6E, 0xD8, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x68, 0xF4, 0x10, 0x4C, +0x12, 0xEE, 0xD5, 0xE4, 0x06, 0x4C, 0xD1, 0xE4, +0x1C, 0x65, 0x6D, 0x17, 0x06, 0x92, 0x00, 0x68, +0x42, 0xEC, 0x14, 0x61, 0x05, 0x94, 0x2D, 0x5C, +0x04, 0x61, 0x0F, 0x96, 0x8D, 0xEB, 0x60, 0xC6, +0x06, 0x10, 0x3D, 0x67, 0x47, 0x41, 0x0D, 0x4A, +0x40, 0xA2, 0x0F, 0x91, 0x40, 0xC1, 0x7D, 0x67, +0x87, 0x43, 0x11, 0x4C, 0x80, 0xA4, 0x10, 0x93, +0x01, 0x68, 0x80, 0xC3, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x0B, 0x22, 0xC7, 0x67, 0x04, 0x97, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, 0x10, 0x4C, +0xB0, 0x67, 0x80, 0x18, 0x52, 0x43, 0x01, 0x10, +0x00, 0x68, 0x50, 0x67, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x68, +0x04, 0xD0, 0xF0, 0x67, 0xE3, 0x17, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, 0xAC, 0xE8, 0xFF, 0x70, 0x04, 0xD4, 0x33, 0x60, 0x7F, 0x69, 0x0C, 0xE9, -0x91, 0x67, 0x80, 0x18, 0x2D, 0x49, 0x04, 0x93, -0x30, 0x6C, 0x98, 0xEB, 0x30, 0xF0, 0x21, 0x6B, -0x73, 0xF0, 0x00, 0x4B, 0x12, 0xEC, 0x8D, 0xE3, -0x4D, 0xE3, 0x20, 0xF0, 0x60, 0xA3, 0x00, 0xF2, +0x91, 0x67, 0x80, 0x18, 0x3B, 0x49, 0x04, 0x93, +0x32, 0x6C, 0x98, 0xEB, 0x30, 0xF0, 0x21, 0x6B, +0x33, 0xF1, 0x08, 0x4B, 0x12, 0xEC, 0x8D, 0xE3, +0x4D, 0xE3, 0x20, 0xF0, 0x62, 0xA3, 0x00, 0xF2, 0x00, 0x6A, 0x04, 0xD3, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x6C, 0xEA, 0x08, 0x22, -0x04, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, -0x04, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x48, 0x43, +0xD2, 0xF5, 0x78, 0x9B, 0x6C, 0xEA, 0x08, 0x22, +0x04, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF7, +0x08, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x52, 0x43, 0x04, 0x94, 0xFF, 0x74, 0x0F, 0x60, 0x7F, 0x6A, 0x8C, 0xEA, 0x23, 0xEA, 0x0A, 0x61, 0x4E, 0xE9, 0x09, 0x29, 0x80, 0x6A, 0x70, 0x67, 0x4C, 0xEB, @@ -35117,39 +35445,39 @@ u8 array_mp_8822c_fw_nic[] = { 0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEE, 0xC3, 0xED, 0x4C, 0xEC, 0xEC, 0xEA, 0x02, 0x61, 0xD7, 0xE5, 0x01, 0x10, 0xB7, 0xE6, 0x03, 0x55, 0x01, 0x60, -0x25, 0x22, 0x30, 0x69, 0x38, 0xEC, 0x30, 0xF0, -0x21, 0x6A, 0x73, 0xF0, 0x00, 0x4A, 0x30, 0xF0, +0x25, 0x22, 0x32, 0x69, 0x38, 0xEC, 0x30, 0xF0, +0x21, 0x6A, 0x33, 0xF1, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6D, 0x02, 0x6E, 0x12, 0xE9, 0x25, 0xE2, 0x80, 0xF2, 0x48, 0x98, 0x87, 0x41, -0x1A, 0x4C, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, -0x87, 0x41, 0x1C, 0x4C, 0x00, 0x6D, 0x02, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x1C, 0x4C, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, +0x87, 0x41, 0x1E, 0x4C, 0x00, 0x6D, 0x02, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x13, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF7, -0x14, 0x4C, 0x0C, 0x10, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x01, 0xF0, 0x00, 0x6A, +0x13, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF7, +0x18, 0x4C, 0x0C, 0x10, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x84, 0xF7, 0x00, 0x4C, 0x80, 0x18, 0x48, 0x43, +0xA4, 0xF7, 0x04, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0x6B, 0x78, 0xEA, -0x30, 0xF0, 0x21, 0x6C, 0x73, 0xF0, 0x00, 0x4C, -0x12, 0xEB, 0x6D, 0xE4, 0x20, 0xF0, 0x81, 0xA3, -0xFF, 0x74, 0x0F, 0x60, 0x20, 0xF0, 0x83, 0xA3, +0xFF, 0x6A, 0x8C, 0xEA, 0x32, 0x6B, 0x78, 0xEA, +0x30, 0xF0, 0x21, 0x6C, 0x33, 0xF1, 0x08, 0x4C, +0x12, 0xEB, 0x6D, 0xE4, 0x20, 0xF0, 0x83, 0xA3, +0xFF, 0x74, 0x0F, 0x60, 0x20, 0xF0, 0x85, 0xA3, 0x32, 0x5C, 0x04, 0x60, 0x01, 0x4C, 0x20, 0xF0, -0x83, 0xC3, 0x07, 0x10, 0x00, 0x6C, 0x20, 0xF0, -0x83, 0xC3, 0x01, 0x6C, 0x8B, 0xEC, 0x20, 0xF0, -0x81, 0xC3, 0x20, 0xF0, 0x82, 0xA3, 0xFF, 0x74, -0x0F, 0x60, 0x20, 0xF0, 0x84, 0xA3, 0x32, 0x5C, -0x08, 0x61, 0x00, 0x6C, 0x20, 0xF0, 0x84, 0xC3, -0x01, 0x6C, 0x8B, 0xEC, 0x20, 0xF0, 0x82, 0xC3, -0x03, 0x10, 0x01, 0x4C, 0x20, 0xF0, 0x84, 0xC3, -0x17, 0x2A, 0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, +0x85, 0xC3, 0x07, 0x10, 0x00, 0x6C, 0x20, 0xF0, +0x85, 0xC3, 0x01, 0x6C, 0x8B, 0xEC, 0x20, 0xF0, +0x83, 0xC3, 0x20, 0xF0, 0x84, 0xA3, 0xFF, 0x74, +0x0F, 0x60, 0x20, 0xF0, 0x86, 0xA3, 0x32, 0x5C, +0x08, 0x61, 0x00, 0x6C, 0x20, 0xF0, 0x86, 0xC3, +0x01, 0x6C, 0x8B, 0xEC, 0x20, 0xF0, 0x84, 0xC3, +0x03, 0x10, 0x01, 0x4C, 0x20, 0xF0, 0x86, 0xC3, +0x17, 0x2A, 0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, 0x98, 0x9C, 0x01, 0xF0, 0x00, 0x4A, 0x8C, 0xEA, -0x0F, 0x22, 0x20, 0xF0, 0xA1, 0xA3, 0x20, 0xF0, -0xC3, 0xA3, 0x20, 0xF0, 0xE2, 0xA3, 0x20, 0xF0, -0x44, 0xA3, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF7, -0x0C, 0x4C, 0x04, 0xD2, 0x80, 0x18, 0x48, 0x43, +0x0F, 0x22, 0x20, 0xF0, 0xA3, 0xA3, 0x20, 0xF0, +0xC5, 0xA3, 0x20, 0xF0, 0xE4, 0xA3, 0x20, 0xF0, +0x46, 0xA3, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF7, +0x10, 0x4C, 0x04, 0xD2, 0x80, 0x18, 0x52, 0x43, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6E, 0x44, 0x67, 0x20, 0xF4, 0x0D, 0x6B, 0x9D, 0x67, 0x68, 0xCC, @@ -35157,509 +35485,522 @@ u8 array_mp_8822c_fw_nic[] = { 0x44, 0x33, 0x6D, 0xE4, 0x68, 0xAB, 0x1F, 0xF7, 0x00, 0x6C, 0xAC, 0xEE, 0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF1, 0x84, 0x9C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, 0x88, 0x9C, +0x20, 0x6C, 0x63, 0xF1, 0x88, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, 0x8C, 0x9C, 0x91, 0xE3, 0xA0, 0xA4, 0xF1, 0x6C, 0xAC, 0xEC, 0xC4, 0x35, 0x8D, 0xED, 0x00, 0xF6, 0xA0, 0x34, 0x00, 0xF6, 0x83, 0x34, 0xFF, 0x6D, 0xAC, 0xEC, 0x1F, 0xF7, 0x00, 0x6D, 0x6C, 0xED, 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x05, 0x2D, 0x30, 0xF0, -0x20, 0x6D, 0x43, 0xF1, 0xA4, 0x9D, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x43, 0xF1, 0xA8, 0x9D, +0x20, 0x6D, 0x63, 0xF1, 0xA8, 0x9D, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF1, 0xAC, 0x9D, 0xAD, 0xE3, 0x80, 0xC3, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x10, 0x6C, 0x8C, 0xEB, -0x07, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF7, -0x08, 0x4C, 0xA2, 0x67, 0x80, 0x18, 0x48, 0x43, +0xD2, 0xF5, 0x78, 0x9B, 0x10, 0x6C, 0x8C, 0xEB, +0x07, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF7, +0x0C, 0x4C, 0xA2, 0x67, 0x80, 0x18, 0x52, 0x43, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0x07, 0xF7, 0x57, 0xA0, 0xFF, 0x69, 0x8C, 0xE9, -0x16, 0x22, 0x09, 0xE1, 0x07, 0xF7, 0xB2, 0xA2, -0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xEA, 0x4C, -0xE7, 0xF3, 0x40, 0x98, 0x10, 0x6B, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x87, 0xF7, 0x57, 0xA0, 0xFF, 0x69, 0x8C, 0xE9, +0x16, 0x22, 0x09, 0xE1, 0x87, 0xF7, 0xB2, 0xA2, +0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x30, 0x4D, +0x47, 0xF4, 0x58, 0x98, 0x10, 0x6B, 0x6C, 0xEA, 0x0A, 0x22, 0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, -0xC4, 0xF7, 0x00, 0x4C, 0x07, 0xF7, 0xD2, 0xA2, -0xB1, 0x67, 0x80, 0x18, 0x48, 0x43, 0x09, 0x97, +0xE4, 0xF7, 0x04, 0x4C, 0x87, 0xF7, 0xD2, 0xA2, +0xB1, 0x67, 0x80, 0x18, 0x52, 0x43, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x03, 0xF4, -0x64, 0x9B, 0x4C, 0xEC, 0x08, 0xD4, 0x00, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x23, 0xF4, +0x68, 0x9B, 0x4C, 0xEC, 0x08, 0xD4, 0x00, 0xA3, 0x10, 0x6B, 0x30, 0xF0, 0x20, 0x69, 0x6C, 0xE8, -0x13, 0x30, 0x4C, 0xE8, 0x2B, 0xF1, 0x18, 0x49, -0x35, 0xE0, 0x07, 0xF7, 0x4E, 0xA5, 0x06, 0xD5, -0x82, 0x67, 0x07, 0xD2, 0x80, 0x18, 0x1E, 0x49, +0x13, 0x30, 0x4C, 0xE8, 0x8B, 0xF1, 0x00, 0x49, +0x35, 0xE0, 0x87, 0xF7, 0x4E, 0xA5, 0x06, 0xD5, +0x82, 0x67, 0x07, 0xD2, 0x80, 0x18, 0x2C, 0x49, 0x7F, 0x6C, 0x4C, 0xEC, 0x09, 0xD2, 0x80, 0x18, -0x2D, 0x49, 0x06, 0x93, 0x0A, 0xD2, 0x07, 0xF7, -0x57, 0xA1, 0x07, 0xF7, 0x70, 0xA3, 0x06, 0xD3, -0x59, 0x22, 0xE7, 0xF3, 0x40, 0x99, 0x10, 0x6D, -0xAC, 0xEA, 0x0C, 0x22, 0x07, 0xF7, 0x56, 0xA1, +0x3B, 0x49, 0x06, 0x93, 0x0A, 0xD2, 0x87, 0xF7, +0x57, 0xA1, 0x87, 0xF7, 0x70, 0xA3, 0x06, 0xD3, +0x59, 0x22, 0x47, 0xF4, 0x58, 0x99, 0x10, 0x6D, +0xAC, 0xEA, 0x0C, 0x22, 0x87, 0xF7, 0x56, 0xA1, 0x07, 0x95, 0x08, 0x96, 0x09, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0xC4, 0xF7, 0x18, 0x4C, 0x04, 0xD2, -0x80, 0x18, 0x48, 0x43, 0x08, 0x92, 0x12, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x07, 0xF7, 0xB5, 0xA2, 0x01, 0x6B, 0x83, 0x67, -0x84, 0xE8, 0xAD, 0xEC, 0x07, 0xF7, 0x95, 0xC2, +0x20, 0x6C, 0xE4, 0xF7, 0x1C, 0x4C, 0x04, 0xD2, +0x80, 0x18, 0x52, 0x43, 0x08, 0x92, 0x12, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x87, 0xF7, 0xB5, 0xA2, 0x01, 0x6B, 0x83, 0x67, +0x84, 0xE8, 0xAD, 0xEC, 0x87, 0xF7, 0x95, 0xC2, 0x06, 0x94, 0x0A, 0x95, 0x01, 0x4C, 0xA2, 0xEC, 0x0E, 0x60, 0x22, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x07, 0xF7, 0x95, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0x87, 0xF7, 0x95, 0xA2, 0x01, 0x6B, 0x64, 0xE8, 0x6F, 0xEB, 0x8C, 0xEB, -0x07, 0xF7, 0x75, 0xC2, 0x15, 0x10, 0x07, 0xF7, +0x87, 0xF7, 0x75, 0xC2, 0x15, 0x10, 0x87, 0xF7, 0x96, 0xA2, 0x87, 0xE8, 0x6C, 0xEC, 0x10, 0x24, -0xE7, 0xF3, 0x40, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, -0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF7, -0x18, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x48, 0x43, -0x90, 0x67, 0x80, 0x18, 0x12, 0x4D, 0x12, 0x10, -0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, 0x58, 0x9A, +0x47, 0xF4, 0x58, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, +0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF0, +0x1C, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x52, 0x43, +0x90, 0x67, 0x80, 0x18, 0x58, 0x4D, 0x12, 0x10, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x58, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x05, 0xF0, 0x04, 0x4C, 0xB0, 0x67, -0x80, 0x18, 0x48, 0x43, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0xEA, 0x4C, 0x0F, 0x97, 0x0E, 0x91, +0x20, 0x6C, 0x25, 0xF0, 0x08, 0x4C, 0xB0, 0x67, +0x80, 0x18, 0x52, 0x43, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x30, 0x4D, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6B, 0x44, 0x67, 0x6C, 0xEA, 0xAC, 0xEB, 0x01, 0x73, 0x0B, 0x60, 0x03, 0x23, 0x02, 0x73, 0x0F, 0x60, 0x16, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x6D, 0xE2, 0x01, 0x6C, 0x0D, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x6D, 0xE2, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x6D, 0xE2, 0x03, 0x6C, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x6D, 0xE2, 0x07, 0x6C, -0x07, 0xF7, 0x92, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xE7, 0xF3, 0x80, 0x9B, +0x8B, 0xF1, 0x00, 0x4B, 0x6D, 0xE2, 0x07, 0x6C, +0x87, 0xF7, 0x92, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x47, 0xF4, 0x98, 0x9B, 0x10, 0x6D, 0xAC, 0xEC, 0x0A, 0x24, 0x6D, 0xE2, -0x07, 0xF7, 0xD2, 0xA3, 0x30, 0xF0, 0x20, 0x6C, -0x05, 0xF0, 0x10, 0x4C, 0xA2, 0x67, 0x80, 0x18, -0x48, 0x43, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x87, 0xF7, 0xD2, 0xA3, 0x30, 0xF0, 0x20, 0x6C, +0x25, 0xF0, 0x14, 0x4C, 0xA2, 0x67, 0x80, 0x18, +0x52, 0x43, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x4C, 0xEE, 0x4C, 0xED, 0xEC, 0xEA, 0x30, 0x6F, -0xF8, 0xEC, 0x30, 0xF0, 0x21, 0x6B, 0x73, 0xF0, -0x00, 0x4B, 0x12, 0xEF, 0xED, 0xE3, 0xFD, 0x67, -0xB2, 0xC7, 0x93, 0xC7, 0x55, 0xC7, 0x4B, 0xAB, -0x56, 0xC7, 0x4A, 0xAB, 0xD8, 0xC7, 0x57, 0xC7, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x49, 0xE4, 0x49, 0xF0, 0x98, 0xA2, 0x29, 0xF0, -0xB8, 0xA2, 0x80, 0x18, 0x3A, 0x49, 0x7D, 0x67, +0x4C, 0xEE, 0x4C, 0xED, 0xEC, 0xEA, 0x32, 0x6F, +0xF8, 0xEC, 0x30, 0xF0, 0x21, 0x6B, 0x33, 0xF1, +0x08, 0x4B, 0x12, 0xEF, 0xED, 0xE3, 0xFD, 0x67, +0xB2, 0xC7, 0x93, 0xC7, 0x55, 0xC7, 0x4C, 0xAB, +0x56, 0xC7, 0x4B, 0xAB, 0xD8, 0xC7, 0x57, 0xC7, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x49, 0xE4, 0x09, 0xF1, 0x98, 0xA2, 0xE9, 0xF0, +0xB8, 0xA2, 0x80, 0x18, 0x48, 0x49, 0x7D, 0x67, 0x59, 0xC3, 0x0C, 0x6A, 0x50, 0xC3, 0x08, 0x6A, 0x4F, 0xCB, 0x07, 0x97, 0x04, 0x94, 0x05, 0x95, -0x06, 0x96, 0x80, 0x18, 0x20, 0x41, 0x09, 0x97, +0x06, 0x96, 0x80, 0x18, 0x2A, 0x41, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0xFF, 0x6A, 0x03, 0xF4, 0x68, 0x9B, 0x4C, 0xEC, +0xFF, 0x6A, 0x23, 0xF4, 0x6C, 0x9B, 0x4C, 0xEC, 0x04, 0xD4, 0x4C, 0xED, 0x4C, 0xEE, 0x4C, 0xEF, 0x94, 0x34, 0x06, 0xD5, 0x07, 0xD6, 0x05, 0xD7, 0x6D, 0xE4, 0x60, 0xA3, 0x04, 0x94, 0x6C, 0xEA, -0x08, 0xD2, 0x80, 0x18, 0x24, 0x49, 0x04, 0x94, -0x06, 0x95, 0x09, 0xD2, 0x80, 0x18, 0x75, 0x49, -0xFF, 0x72, 0x22, 0x67, 0x7C, 0x60, 0x04, 0x92, -0x30, 0x68, 0x0C, 0x59, 0x18, 0xEA, 0x30, 0xF0, -0x21, 0x6A, 0x73, 0xF0, 0x00, 0x4A, 0x12, 0xE8, +0x08, 0xD2, 0x80, 0x18, 0x32, 0x49, 0x04, 0x94, +0x06, 0x95, 0x09, 0xD2, 0x80, 0x18, 0x83, 0x49, +0xFF, 0x72, 0x22, 0x67, 0x7E, 0x60, 0x04, 0x92, +0x32, 0x68, 0x0C, 0x59, 0x18, 0xEA, 0x30, 0xF0, +0x21, 0x6A, 0x33, 0xF1, 0x08, 0x4A, 0x12, 0xE8, 0x01, 0xE2, 0x22, 0xC0, 0x08, 0x60, 0x67, 0xA0, 0x0D, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x00, 0x6C, 0x47, 0xC0, 0x05, 0xD4, 0x0A, 0x10, 0x05, 0x95, 0x87, 0xA0, 0x03, 0x6B, 0x0D, 0x6A, 0xAC, 0xEB, 0x4B, 0xEA, 0x68, 0x33, 0x8C, 0xEA, 0x6D, 0xEA, 0x47, 0xC0, 0x07, 0x96, 0x15, 0x2E, 0x43, 0xA0, -0x2E, 0xEA, 0x01, 0x22, 0xD6, 0xC8, 0x6C, 0xA0, +0x2E, 0xEA, 0x01, 0x22, 0xD7, 0xC8, 0x6C, 0xA0, 0x7F, 0x6A, 0xB1, 0x67, 0x6C, 0xEA, 0x4C, 0xC0, -0x04, 0x94, 0x80, 0x18, 0x66, 0x49, 0x04, 0x94, +0x04, 0x94, 0x80, 0x18, 0x74, 0x49, 0x04, 0x94, 0x05, 0x96, 0xB1, 0x67, 0x00, 0x6F, 0x80, 0x18, -0x86, 0x4D, 0x00, 0x6A, 0x62, 0x67, 0x1C, 0x10, +0xCC, 0x4D, 0x00, 0x6B, 0x83, 0x67, 0x1C, 0x10, 0x6C, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, 0x6D, 0xEA, 0x4C, 0xC0, 0x04, 0x94, 0x05, 0x96, 0xB1, 0x67, -0x05, 0x6F, 0x80, 0x18, 0x86, 0x4D, 0x06, 0x94, +0x05, 0x6F, 0x80, 0x18, 0xCC, 0x4D, 0x06, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0x7F, 0x6B, 0x8C, 0xEB, -0xE8, 0xF3, 0x0C, 0x4A, 0x49, 0xE3, 0x40, 0xA2, -0x50, 0xC0, 0x70, 0xA0, 0x51, 0xA0, 0x63, 0xEA, -0x01, 0x60, 0x50, 0xC0, 0x40, 0x6A, 0x01, 0x6B, -0x05, 0x96, 0x07, 0x6C, 0xCC, 0x35, 0x09, 0x96, -0xCC, 0xEC, 0x91, 0xE5, 0x08, 0x96, 0x4D, 0xEC, -0x04, 0x6A, 0x4B, 0xEA, 0xCC, 0xEA, 0x6D, 0xEA, -0x00, 0xF6, 0x80, 0x34, 0x00, 0xF6, 0x40, 0x32, -0xFF, 0x6D, 0x00, 0xF6, 0x83, 0x34, 0x00, 0xF6, -0x43, 0x32, 0xAC, 0xEC, 0xAC, 0xEA, 0x04, 0x95, -0xB4, 0x33, 0x30, 0xF0, 0x20, 0x6D, 0xA3, 0xF1, -0xAC, 0x9D, 0xB5, 0xE3, 0x20, 0xC5, 0x30, 0xF0, -0x20, 0x6D, 0xA3, 0xF3, 0xAC, 0x9D, 0xB5, 0xE3, -0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF4, -0x88, 0x9C, 0x8D, 0xE3, 0x40, 0xC3, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x69, 0x8C, 0xE9, 0x30, 0x68, 0x18, 0xE9, -0x30, 0xF0, 0x21, 0x6A, 0x73, 0xF0, 0x00, 0x4A, -0x91, 0x67, 0x12, 0xE8, 0x01, 0xE2, 0x80, 0x18, -0x1E, 0x49, 0x7F, 0x6B, 0x4C, 0xEB, 0x04, 0xD3, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x70, 0x9B, -0x2C, 0x32, 0x91, 0x67, 0x6D, 0xE2, 0xA0, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x78, 0x9B, -0x69, 0xE2, 0xC0, 0x9A, 0x80, 0x18, 0x58, 0x4A, -0x05, 0xD2, 0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, -0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x08, 0x22, -0x04, 0x95, 0x05, 0x96, 0x30, 0xF0, 0x20, 0x6C, -0x25, 0xF0, 0x08, 0x4C, 0x80, 0x18, 0x48, 0x43, -0x04, 0x92, 0x05, 0x93, 0x6E, 0xEA, 0x09, 0x22, -0xE7, 0xA0, 0x03, 0x6A, 0x91, 0x67, 0xEA, 0x37, -0xA3, 0x67, 0x00, 0x6E, 0x4C, 0xEF, 0x80, 0x18, -0x9F, 0x4D, 0x6C, 0xA0, 0x03, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x33, 0x6A, 0x01, 0x10, 0x13, 0x6A, -0x46, 0xC0, 0x66, 0xA0, 0x40, 0xA0, 0x63, 0xEA, -0x01, 0x60, 0x46, 0xC0, 0x68, 0xA0, 0x1F, 0x6A, -0x4C, 0xEB, 0x0F, 0x5B, 0x26, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x68, 0x33, 0x62, 0xF3, 0x10, 0x4A, -0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x7F, 0xA0, -0x1F, 0x6A, 0x6C, 0xEA, 0x40, 0x6B, 0x6D, 0xEA, -0x6F, 0xA0, 0x5F, 0xC0, 0x31, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x20, 0x6B, 0x1A, 0x10, 0x7F, 0xA0, -0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, -0x0E, 0x10, 0x7F, 0xA0, 0x1F, 0x6A, 0x0A, 0x10, -0x7F, 0xA0, 0x1F, 0x6A, 0x6C, 0xEA, 0x60, 0x6B, -0x6D, 0xEA, 0x5F, 0xC0, 0x6F, 0xA0, 0x30, 0x6A, -0x08, 0x10, 0x7F, 0xA0, 0x6C, 0xEA, 0x6F, 0xA0, -0x5F, 0xC0, 0x31, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x10, 0x6B, 0x6D, 0xEA, 0x4F, 0xC0, 0x30, 0xF0, -0x21, 0x6A, 0x12, 0xF5, 0x58, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x0A, 0x22, 0xFF, 0xA0, 0xA0, 0xA0, -0xC1, 0xA0, 0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF0, -0x18, 0x4C, 0xF6, 0x37, 0x80, 0x18, 0x48, 0x43, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF4, 0x4C, 0x9A, 0x30, 0xF0, 0x21, 0x69, -0x73, 0xF0, 0x00, 0x49, 0x60, 0xA2, 0xFF, 0x6A, -0x00, 0x68, 0x83, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF4, 0x70, 0x9B, 0x4C, 0xEC, 0x0B, 0xD4, -0x60, 0xA3, 0x01, 0x6C, 0x6C, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x56, 0x32, -0x28, 0xF7, 0xB4, 0xA3, 0x8C, 0xEA, 0x48, 0x34, -0x05, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x8D, 0xEA, -0x28, 0xF7, 0x54, 0xC3, 0x30, 0xF0, 0x21, 0x6D, -0x30, 0xF0, 0x21, 0x6A, 0x34, 0xF2, 0x10, 0x4D, -0xB4, 0xF1, 0x10, 0x4A, 0x07, 0xD5, 0x06, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, -0x90, 0x67, 0x40, 0xEA, 0xC0, 0xF0, 0x00, 0x22, -0x08, 0xD1, 0x88, 0xA1, 0x40, 0x6A, 0xFF, 0x6B, -0x8C, 0xEA, 0xA0, 0xF0, 0x19, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x28, 0xF7, -0xB4, 0xA2, 0x04, 0x6C, 0xAC, 0xEC, 0x6C, 0xEC, -0x4F, 0x24, 0x0B, 0x95, 0x90, 0x67, 0x6C, 0xEC, -0xAE, 0xEC, 0x23, 0x2C, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF4, 0x94, 0x9C, 0xE7, 0xF3, 0x40, 0x9A, -0x80, 0xA4, 0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF4, 0x98, 0x9C, 0x6C, 0xED, 0x09, 0xD5, -0x80, 0xA4, 0x8C, 0xEB, 0x0A, 0xD3, 0x01, 0xF0, -0x00, 0x6B, 0x4C, 0xEB, 0x09, 0x23, 0x0A, 0x96, -0x09, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF0, -0x10, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x48, 0x43, -0x90, 0x67, 0x09, 0x95, 0x00, 0x6E, 0x0A, 0x97, -0x25, 0x10, 0x0B, 0x94, 0xFF, 0x74, 0x24, 0x61, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF4, 0x94, 0x9C, -0xE7, 0xF3, 0x40, 0x9A, 0x80, 0xA4, 0xA4, 0x67, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF4, 0x98, 0x9C, -0x6C, 0xED, 0x0A, 0xD5, 0x80, 0xA4, 0x8C, 0xEB, +0x08, 0xF4, 0x1C, 0x4A, 0x49, 0xE3, 0x40, 0xA2, +0x51, 0xC0, 0x71, 0xA0, 0x52, 0xA0, 0x63, 0xEA, +0x01, 0x60, 0x51, 0xC0, 0x40, 0x6B, 0x01, 0x6C, +0x05, 0x96, 0x07, 0x6A, 0xCC, 0x35, 0x09, 0x96, +0xCC, 0xEA, 0x49, 0xE5, 0x6D, 0xEA, 0x00, 0xF6, +0x40, 0x32, 0xFF, 0x6D, 0x08, 0x96, 0x00, 0xF6, +0x43, 0x32, 0xAC, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, +0xDC, 0x4B, 0xCC, 0xEB, 0x8D, 0xEB, 0x00, 0xF6, +0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, 0xAC, 0xEA, +0xAC, 0xEB, 0x04, 0x95, 0xB4, 0x34, 0x30, 0xF0, +0x20, 0x6D, 0xC3, 0xF1, 0xB0, 0x9D, 0xB5, 0xE4, +0x20, 0xC5, 0x30, 0xF0, 0x20, 0x6D, 0xC3, 0xF3, +0xB0, 0x9D, 0xB5, 0xE4, 0x40, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF4, 0x4C, 0x9A, 0x51, 0xE4, +0x60, 0xC4, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, +0x32, 0x68, 0x18, 0xE9, 0x30, 0xF0, 0x21, 0x6A, +0x33, 0xF1, 0x08, 0x4A, 0x91, 0x67, 0x12, 0xE8, +0x01, 0xE2, 0x80, 0x18, 0x2C, 0x49, 0x7F, 0x6B, +0x4C, 0xEB, 0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF3, 0x74, 0x9B, 0x2C, 0x32, 0x91, 0x67, +0x6D, 0xE2, 0xA0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF3, 0x7C, 0x9B, 0x69, 0xE2, 0xC0, 0x9A, +0x80, 0x18, 0x76, 0x4A, 0x05, 0xD2, 0x30, 0xF0, +0x21, 0x6A, 0xD2, 0xF5, 0x58, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x08, 0x22, 0x04, 0x95, 0x05, 0x96, +0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF0, 0x0C, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x04, 0x92, 0x05, 0x93, +0x6E, 0xEA, 0x09, 0x22, 0xE7, 0xA0, 0x03, 0x6A, +0x91, 0x67, 0xEA, 0x37, 0xA3, 0x67, 0x00, 0x6E, +0x4C, 0xEF, 0x80, 0x18, 0xE5, 0x4D, 0x6C, 0xA0, +0x03, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x33, 0x6A, +0x01, 0x10, 0x13, 0x6A, 0x46, 0xC0, 0x66, 0xA0, +0x40, 0xA0, 0x63, 0xEA, 0x01, 0x60, 0x46, 0xC0, +0x68, 0xA0, 0x1F, 0x6A, 0x4C, 0xEB, 0x0F, 0x5B, +0x2C, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0x33, +0x62, 0xF3, 0x10, 0x4A, 0x69, 0xE2, 0x40, 0x9A, +0x00, 0xEA, 0x20, 0xF0, 0x61, 0xA0, 0x1F, 0x6A, +0x6C, 0xEA, 0x40, 0x6B, 0x6D, 0xEA, 0x70, 0xA0, +0x20, 0xF0, 0x41, 0xC0, 0x31, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x20, 0x6B, 0x20, 0x10, 0x20, 0xF0, +0x61, 0xA0, 0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0x6B, +0x6D, 0xEA, 0x12, 0x10, 0x20, 0xF0, 0x61, 0xA0, +0x1F, 0x6A, 0x0D, 0x10, 0x20, 0xF0, 0x61, 0xA0, +0x1F, 0x6A, 0x6C, 0xEA, 0x60, 0x6B, 0x6D, 0xEA, +0x20, 0xF0, 0x41, 0xC0, 0x70, 0xA0, 0x30, 0x6A, +0x0A, 0x10, 0x20, 0xF0, 0x61, 0xA0, 0x6C, 0xEA, +0x70, 0xA0, 0x20, 0xF0, 0x41, 0xC0, 0x31, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x10, 0x6B, 0x6D, 0xEA, +0x50, 0xC0, 0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, +0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x0B, 0x22, +0x20, 0xF0, 0xE1, 0xA0, 0xA0, 0xA0, 0xC1, 0xA0, +0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF0, 0x1C, 0x4C, +0xF6, 0x37, 0x80, 0x18, 0x52, 0x43, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, 0x50, 0x9A, +0x30, 0xF0, 0x21, 0x69, 0xF4, 0xF2, 0x18, 0x49, +0x60, 0xA2, 0xFF, 0x6A, 0x00, 0x68, 0x83, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x74, 0x9B, +0x4C, 0xEC, 0x0A, 0xD4, 0x60, 0xA3, 0x01, 0x6C, +0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x56, 0x32, 0xE8, 0xF7, 0xB4, 0xA3, +0x8C, 0xEA, 0x48, 0x34, 0x05, 0x6A, 0x4B, 0xEA, +0xAC, 0xEA, 0x30, 0xF0, 0x21, 0x6D, 0x8D, 0xEA, +0x33, 0xF1, 0x08, 0x4D, 0xE8, 0xF7, 0x54, 0xC3, +0x06, 0xD5, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0xC0, 0xF0, +0x02, 0x22, 0x06, 0x92, 0xFF, 0x6B, 0x07, 0xD2, +0x88, 0xA2, 0x40, 0x6A, 0x8C, 0xEA, 0xA0, 0xF0, +0x1A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xE8, 0xF7, 0xB4, 0xA2, 0x04, 0x6C, +0xAC, 0xEC, 0x6C, 0xEC, 0x4F, 0x24, 0x0A, 0x95, +0x90, 0x67, 0x6C, 0xEC, 0xAE, 0xEC, 0x23, 0x2C, +0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF4, 0x98, 0x9C, +0x47, 0xF4, 0x58, 0x9A, 0x80, 0xA4, 0xA4, 0x67, +0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF4, 0x9C, 0x9C, +0x6C, 0xED, 0x08, 0xD5, 0x80, 0xA4, 0x8C, 0xEB, 0x09, 0xD3, 0x01, 0xF0, 0x00, 0x6B, 0x4C, 0xEB, -0x09, 0x23, 0x09, 0x96, 0x0A, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0x45, 0xF0, 0x10, 0x4C, 0xB0, 0x67, -0x80, 0x18, 0x48, 0x43, 0x0A, 0x95, 0x09, 0x97, -0x90, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x9F, 0x4D, -0x20, 0xF0, 0x45, 0xA1, 0x07, 0x2A, 0x08, 0x92, -0x6F, 0xA2, 0x40, 0x6A, 0x6D, 0xEA, 0x08, 0x93, -0x4F, 0xC3, 0x06, 0x10, 0x08, 0x94, 0x41, 0x6A, -0x4B, 0xEA, 0x6F, 0xA4, 0x6C, 0xEA, 0x4F, 0xC4, -0x07, 0x95, 0x40, 0xA5, 0x01, 0x4A, 0x40, 0xC5, -0x40, 0xA5, 0x28, 0x5A, 0x30, 0x61, 0x06, 0x92, -0xA0, 0xAA, 0x40, 0xF0, 0x80, 0xAA, 0x93, 0xE5, -0x80, 0x18, 0x3A, 0x49, 0x08, 0xD2, 0x30, 0xF0, -0x21, 0x6A, 0x12, 0xF5, 0x58, 0x9A, 0x10, 0x6B, -0x6C, 0xEA, 0x0E, 0x22, 0x06, 0x94, 0x07, 0x93, -0xB0, 0x67, 0xE0, 0xAC, 0x40, 0xF0, 0x40, 0xAC, -0xC0, 0xA3, 0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF0, -0x0C, 0x4C, 0x04, 0xD2, 0x80, 0x18, 0x48, 0x43, -0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, 0x58, 0x9A, -0x10, 0x6B, 0x6C, 0xEA, 0x09, 0x22, 0xC3, 0xA1, -0x08, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF0, -0x0C, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x48, 0x43, -0x90, 0x67, 0x80, 0x18, 0x60, 0x47, 0xFF, 0x6A, -0x0C, 0xEA, 0x10, 0x2A, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x01, 0xF0, 0x00, 0x4A, -0x6C, 0xEA, 0x08, 0x22, 0x20, 0xF0, 0xA5, 0xA1, -0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF0, 0x08, 0x4C, -0x80, 0x18, 0x48, 0x43, 0x00, 0x6A, 0x20, 0xF0, -0x45, 0xC1, 0x90, 0x67, 0x80, 0x18, 0xC3, 0x4C, -0x07, 0x95, 0x06, 0x92, 0x01, 0x48, 0x01, 0x4D, -0x02, 0x4A, 0x20, 0x70, 0x30, 0x49, 0x07, 0xD5, -0x06, 0xD2, 0x3F, 0xF7, 0x0D, 0x61, 0x30, 0xF0, -0x21, 0x6C, 0x12, 0xF5, 0x08, 0x4C, 0x80, 0x18, -0x03, 0x47, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, -0x08, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x30, 0x68, 0x18, 0xEA, 0x08, 0xD2, 0x08, 0x94, -0xFF, 0x6B, 0x30, 0xF0, 0x21, 0x6A, 0xAC, 0xEB, -0x73, 0xF0, 0x00, 0x4A, 0x0B, 0xD3, 0x7F, 0x69, -0x12, 0xE8, 0x01, 0xE2, 0x80, 0x18, 0x1E, 0x49, -0x7D, 0x67, 0x58, 0xC3, 0x98, 0xA3, 0x03, 0x6B, -0x09, 0xD4, 0x40, 0xA0, 0x8C, 0xE9, 0x9D, 0x67, -0x0A, 0xD2, 0xE7, 0xA0, 0xEA, 0x32, 0x6C, 0xEA, -0x59, 0xC4, 0x01, 0x6A, 0x4B, 0xEA, 0x8C, 0xA0, -0x44, 0xC0, 0x45, 0xC0, 0x20, 0xF0, 0x46, 0xC0, -0x20, 0xF0, 0x47, 0xC0, 0x19, 0x6A, 0x4B, 0xEA, -0x8C, 0xEA, 0x4C, 0xC0, 0x30, 0xF0, 0x21, 0x6C, -0x12, 0xF5, 0x98, 0x9C, 0x00, 0xF2, 0x00, 0x6A, -0x8C, 0xEA, 0x0C, 0x22, 0x5D, 0x67, 0x09, 0x95, -0xD9, 0xA2, 0x6C, 0xEF, 0x30, 0xF0, 0x20, 0x6C, -0xFF, 0x6B, 0xA5, 0xF0, 0x14, 0x4C, 0x6C, 0xEF, -0x80, 0x18, 0x48, 0x43, 0x0A, 0x94, 0x8A, 0xE9, -0x2F, 0x61, 0x6C, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, -0x19, 0x22, 0x09, 0x92, 0x80, 0x6B, 0x6B, 0xEB, -0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x12, 0x2A, -0x0A, 0x92, 0x9D, 0x67, 0x4D, 0xEB, 0x78, 0xC4, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, -0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0xA0, 0xF0, -0x19, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xC5, 0xF0, -0x10, 0x4C, 0xB0, 0x10, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0x40, 0xF1, 0x19, 0x22, 0x7D, 0x67, -0xB8, 0xA3, 0x30, 0xF0, 0x20, 0x6C, 0xC5, 0xF0, -0x1C, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x50, 0x11, -0x0A, 0x94, 0x23, 0xEC, 0x17, 0x60, 0x30, 0xF0, -0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF2, -0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x5D, 0x67, -0xB8, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xE5, 0xF0, -0x0C, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x7D, 0x67, -0x87, 0x43, 0x21, 0x4C, 0x80, 0xA4, 0x00, 0x69, -0x98, 0xC3, 0x89, 0x10, 0x08, 0x94, 0x06, 0x05, -0x00, 0xF0, 0x19, 0x06, 0x01, 0x6F, 0x80, 0x18, -0x15, 0x4C, 0x12, 0x22, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, -0x6C, 0xEA, 0x78, 0x22, 0x5D, 0x67, 0xB8, 0xA2, -0xD9, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xE5, 0xF0, -0x1C, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x6E, 0x10, -0x7D, 0x67, 0x87, 0xA0, 0x59, 0xA3, 0x03, 0x6B, -0x8C, 0xEB, 0x62, 0xEA, 0x15, 0x60, 0x9D, 0x67, -0x78, 0xA4, 0x0C, 0x5B, 0x11, 0x61, 0x30, 0xF0, -0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, 0x01, 0x4A, -0x59, 0xC4, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, -0x59, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x5D, 0x67, -0x05, 0xF1, 0x18, 0x4C, 0xB9, 0xA2, 0x50, 0x10, -0x08, 0x94, 0x06, 0x05, 0x01, 0x6E, 0x80, 0x18, -0x21, 0x4A, 0x00, 0x6B, 0x09, 0xD3, 0x10, 0x22, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, -0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x42, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF1, 0x04, 0x4C, -0x39, 0x10, 0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, -0x4C, 0xA0, 0x08, 0x96, 0x03, 0x6F, 0x91, 0x67, -0x01, 0x6D, 0x4C, 0xEF, 0x80, 0x18, 0xA0, 0x49, -0x7D, 0x67, 0x58, 0xC3, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0x0A, 0x22, 0x5D, 0x67, 0x09, 0x95, -0xF8, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF1, -0x14, 0x4C, 0xD1, 0x67, 0x80, 0x18, 0x48, 0x43, -0x7D, 0x67, 0x58, 0xA3, 0xFF, 0x72, 0x0A, 0x61, -0x0A, 0x94, 0x83, 0xE9, 0x02, 0x61, 0x98, 0xC3, -0x05, 0x10, 0x09, 0x93, 0x01, 0x4B, 0x54, 0x73, -0x09, 0xD3, 0xD3, 0x61, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x45, 0xF1, 0x04, 0x4C, 0x5D, 0x67, 0xB8, 0xA2, -0x80, 0x18, 0x48, 0x43, 0x01, 0x69, 0x30, 0xF0, -0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF2, -0x00, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, 0x7D, 0x67, -0xB8, 0xA3, 0xC4, 0xA0, 0xE5, 0xA0, 0x30, 0xF0, -0x20, 0x6C, 0x45, 0xF1, 0x10, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x5D, 0x67, 0x08, 0x94, 0xB8, 0xA2, -0x80, 0x18, 0x7C, 0x4C, 0x7D, 0x67, 0x58, 0xC3, -0x6C, 0xA0, 0x18, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, -0x08, 0x94, 0xA4, 0xA0, 0x80, 0x18, 0x7C, 0x4C, -0x44, 0xC0, 0x08, 0x94, 0xA5, 0xA0, 0x80, 0x18, -0x7C, 0x4C, 0x45, 0xC0, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0x0A, 0x22, 0x5D, 0x67, 0xB8, 0xA2, -0xC4, 0xA0, 0xE5, 0xA0, 0x30, 0xF0, 0x20, 0x6C, -0x65, 0xF1, 0x00, 0x4C, 0x80, 0x18, 0x48, 0x43, -0x45, 0xA0, 0xFF, 0x6B, 0x84, 0xA0, 0x4E, 0xEB, -0x01, 0x5B, 0x78, 0x67, 0xFF, 0x74, 0x05, 0x61, -0x44, 0xC0, 0x01, 0x6A, 0x4B, 0xEA, 0x45, 0xC0, -0x01, 0x4B, 0x9D, 0x67, 0x58, 0xA4, 0xFF, 0x72, -0x09, 0x61, 0x44, 0xA0, 0x01, 0x4B, 0x58, 0xC4, -0x01, 0x6A, 0x4B, 0xEA, 0x44, 0xC0, 0xFF, 0x6A, -0x4C, 0xEB, 0x07, 0x10, 0x06, 0x2B, 0x6C, 0xA0, -0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x10, 0x6B, -0x07, 0x10, 0x01, 0x73, 0x07, 0x61, 0x6C, 0xA0, -0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x08, 0x6B, -0x6D, 0xEA, 0x06, 0x10, 0x02, 0x73, 0x09, 0x61, -0x6C, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x4C, 0xC0, 0x0B, 0x92, 0x01, 0x72, 0x1B, 0x61, -0x14, 0x10, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x09, 0x23, 0x09, 0x96, 0x08, 0x97, 0x30, 0xF0, +0x20, 0x6C, 0x65, 0xF0, 0x14, 0x4C, 0xB0, 0x67, +0x80, 0x18, 0x52, 0x43, 0x90, 0x67, 0x08, 0x95, +0x00, 0x6E, 0x09, 0x97, 0x25, 0x10, 0x0A, 0x94, +0xFF, 0x74, 0x24, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x23, 0xF4, 0x98, 0x9C, 0x47, 0xF4, 0x58, 0x9A, +0x80, 0xA4, 0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, +0x23, 0xF4, 0x9C, 0x9C, 0x6C, 0xED, 0x09, 0xD5, +0x80, 0xA4, 0x8C, 0xEB, 0x08, 0xD3, 0x01, 0xF0, +0x00, 0x6B, 0x4C, 0xEB, 0x09, 0x23, 0x08, 0x96, +0x09, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF0, +0x14, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x52, 0x43, +0x09, 0x95, 0x08, 0x97, 0x90, 0x67, 0x00, 0x6E, +0x80, 0x18, 0xE5, 0x4D, 0x06, 0x93, 0x20, 0xF0, +0x47, 0xA3, 0x06, 0x2A, 0x07, 0x94, 0x40, 0x6A, +0x70, 0xA4, 0x6D, 0xEA, 0x50, 0xC4, 0x06, 0x10, +0x07, 0x95, 0x41, 0x6A, 0x4B, 0xEA, 0x70, 0xA5, +0x6C, 0xEA, 0x50, 0xC5, 0x40, 0xA1, 0x01, 0x4A, +0x40, 0xC1, 0x40, 0xA1, 0x28, 0x5A, 0x30, 0x61, +0xDF, 0xF7, 0xA0, 0xA1, 0xFF, 0xF7, 0x80, 0xA1, +0x93, 0xE5, 0x80, 0x18, 0x48, 0x49, 0x07, 0xD2, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x58, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x0D, 0x22, 0xC0, 0xA1, +0xDF, 0xF7, 0xE0, 0xA1, 0xFF, 0xF7, 0x40, 0xA1, +0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF0, 0x10, 0x4C, +0xB0, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x52, 0x43, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x58, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x0A, 0x22, 0x06, 0x92, +0x07, 0x97, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xA2, +0xA5, 0xF0, 0x10, 0x4C, 0xB0, 0x67, 0x80, 0x18, +0x52, 0x43, 0x90, 0x67, 0x80, 0x18, 0x6C, 0x47, +0xFF, 0x6A, 0x0C, 0xEA, 0x11, 0x2A, 0x30, 0xF0, +0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x01, 0xF0, +0x00, 0x4A, 0x6C, 0xEA, 0x09, 0x22, 0x06, 0x93, +0x30, 0xF0, 0x20, 0x6C, 0xC5, 0xF0, 0x0C, 0x4C, +0x20, 0xF0, 0xA7, 0xA3, 0x80, 0x18, 0x52, 0x43, +0x06, 0x94, 0x00, 0x6A, 0x20, 0xF0, 0x47, 0xC4, +0x90, 0x67, 0x80, 0x18, 0x09, 0x4D, 0x06, 0x95, +0x01, 0x48, 0x20, 0x70, 0x32, 0x4D, 0x06, 0xD5, +0x01, 0x49, 0x3F, 0xF7, 0x0E, 0x61, 0x30, 0xF0, +0x21, 0x6C, 0xD2, 0xF5, 0x08, 0x4C, 0x80, 0x18, +0x0F, 0x47, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, +0x32, 0x69, 0x38, 0xEC, 0x30, 0xF0, 0x21, 0x6A, +0x0C, 0xED, 0x33, 0xF1, 0x08, 0x4A, 0x09, 0xD4, +0x0D, 0xD5, 0x12, 0xE9, 0x25, 0xE2, 0x80, 0x18, +0x2C, 0x49, 0x7D, 0x67, 0x58, 0xC3, 0x98, 0xA3, +0x7F, 0x6A, 0x08, 0xD4, 0x08, 0x93, 0x4C, 0xEC, +0x0B, 0xD4, 0x0C, 0xD3, 0x80, 0xA1, 0x7D, 0x67, +0x0A, 0xD4, 0xE7, 0xA1, 0x03, 0x6C, 0xEA, 0x32, +0x8C, 0xEA, 0x59, 0xC3, 0x01, 0x6A, 0x4B, 0xEA, +0x6C, 0xA1, 0x44, 0xC1, 0x45, 0xC1, 0x20, 0xF0, +0x48, 0xC1, 0x20, 0xF0, 0x49, 0xC1, 0x19, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC1, 0x30, 0xF0, +0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x0B, 0x22, 0x5D, 0x67, +0x08, 0x95, 0xD9, 0xA2, 0x8C, 0xEF, 0x30, 0xF0, +0x20, 0x6C, 0xC5, 0xF0, 0x18, 0x4C, 0x0C, 0xEF, +0x80, 0x18, 0x52, 0x43, 0x0B, 0x93, 0x0A, 0x94, +0x8A, 0xEB, 0x31, 0x61, 0x6C, 0xA1, 0x04, 0x6A, +0x6C, 0xEA, 0x1B, 0x22, 0x0C, 0x92, 0x80, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x14, 0x2A, 0x0A, 0x92, 0x9D, 0x67, 0x4D, 0xEB, +0x78, 0xC4, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF1, -0x10, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x6C, 0xA0, -0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC0, -0x2B, 0x10, 0x6C, 0xA0, 0x19, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x4C, 0xC0, 0x00, 0x69, 0x30, 0xF0, -0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF2, -0x00, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x7D, 0x67, -0xB8, 0xA3, 0xC4, 0xA0, 0xE5, 0xA0, 0x04, 0xD1, -0x4C, 0xA0, 0x03, 0x6B, 0x30, 0xF0, 0x20, 0x6C, -0x4E, 0x32, 0x6C, 0xEA, 0x65, 0xF1, 0x1C, 0x4C, -0x05, 0xD2, 0x80, 0x18, 0x48, 0x43, 0x6B, 0xA0, -0x0F, 0x6A, 0xD1, 0x67, 0x6C, 0xEA, 0x10, 0x6B, -0x6D, 0xEA, 0x4B, 0xC0, 0x5D, 0x67, 0x08, 0x94, -0xB8, 0xA2, 0xF9, 0xA2, 0x80, 0x18, 0x9F, 0x4D, -0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, -0x12, 0xD1, 0x11, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, -0x30, 0x69, 0x38, 0xEC, 0x30, 0xF0, 0x21, 0x6A, -0x0C, 0xED, 0x0C, 0xEE, 0x73, 0xF0, 0x00, 0x4A, -0x09, 0xD4, 0x0D, 0xD5, 0x0E, 0xD6, 0x12, 0xE9, -0x25, 0xE2, 0x80, 0x18, 0x1E, 0x49, 0x7D, 0x67, -0x58, 0xC3, 0x98, 0xA3, 0x0C, 0xD4, 0x40, 0xA1, -0x9D, 0x67, 0x0A, 0xD2, 0x61, 0xA1, 0x0B, 0xD3, -0xE7, 0xA1, 0x03, 0x6B, 0xEA, 0x32, 0x6C, 0xEA, -0x59, 0xC4, 0x01, 0x6A, 0x4B, 0xEA, 0x8C, 0xA1, -0x44, 0xC1, 0x45, 0xC1, 0x20, 0xF0, 0x46, 0xC1, -0x20, 0xF0, 0x47, 0xC1, 0x19, 0x6A, 0x4B, 0xEA, -0x8C, 0xEA, 0x4C, 0xC1, 0x30, 0xF0, 0x21, 0x6C, -0x12, 0xF5, 0x98, 0x9C, 0x00, 0xF4, 0x00, 0x6A, -0x8C, 0xEA, 0x0B, 0x22, 0x5D, 0x67, 0x0C, 0x95, -0xD9, 0xA2, 0x6C, 0xEF, 0x30, 0xF0, 0x20, 0x6C, -0xA5, 0xF1, 0x00, 0x4C, 0x0C, 0xEF, 0x80, 0x18, -0x48, 0x43, 0x0D, 0x93, 0xA0, 0xF0, 0x07, 0x23, -0x0C, 0x92, 0x0A, 0x93, 0x7F, 0x6C, 0x8C, 0xEA, -0x43, 0xEB, 0x08, 0xD2, 0x02, 0x60, 0x9D, 0x67, -0x78, 0xC4, 0x08, 0x93, 0x0B, 0x94, 0x8A, 0xEB, -0x80, 0xF0, 0x19, 0x60, 0x63, 0xEC, 0x04, 0x61, -0x5D, 0x67, 0x98, 0xC2, 0x00, 0x68, 0x65, 0x10, -0x09, 0x94, 0x06, 0x00, 0xB0, 0x67, 0x00, 0xF0, -0x19, 0x06, 0x02, 0x6F, 0x80, 0x18, 0x15, 0x4C, -0x0D, 0x22, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, -0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, -0x53, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF1, -0x1C, 0x4C, 0x4A, 0x10, 0x09, 0x94, 0xB0, 0x67, -0x02, 0x6E, 0x80, 0x18, 0x21, 0x4A, 0x00, 0x68, -0x2E, 0x22, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, -0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, -0x3F, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x7D, 0x67, -0xC5, 0xF1, 0x08, 0x4C, 0xB8, 0xA3, 0x36, 0x10, -0x4C, 0xA1, 0x08, 0x94, 0x09, 0x96, 0x03, 0x6F, -0x02, 0x6D, 0x4C, 0xEF, 0x80, 0x18, 0xA0, 0x49, -0x9D, 0x67, 0x58, 0xC4, 0x0B, 0x93, 0x08, 0x92, -0x43, 0xEB, 0x02, 0x61, 0x78, 0xC4, 0x0C, 0x10, -0x7D, 0x67, 0x58, 0xA3, 0xFF, 0x72, 0x08, 0x61, -0x08, 0x94, 0xFF, 0x6A, 0xFF, 0x4C, 0x4C, 0xEC, -0x0A, 0x92, 0x08, 0xD4, 0x4A, 0xEC, 0xE4, 0x61, -0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x0D, 0x93, -0x63, 0xE8, 0x06, 0x60, 0x08, 0x94, 0xFF, 0x6A, -0xAC, 0x4C, 0x4C, 0xEC, 0x0A, 0xD4, 0xD8, 0x17, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, -0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0xC5, 0xF1, 0x18, 0x4C, -0x5D, 0x67, 0xB8, 0xA2, 0x80, 0x18, 0x48, 0x43, -0x01, 0x68, 0x0E, 0x93, 0x01, 0x73, 0x06, 0x61, +0xC0, 0xF0, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x5D, 0x67, 0xE5, 0xF0, 0x14, 0x4C, 0xB8, 0xA2, +0xC1, 0x10, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, +0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x60, 0xF1, 0x1F, 0x22, 0x7D, 0x67, 0xB8, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF1, 0x00, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x76, 0x11, 0x0B, 0x94, +0x0A, 0x92, 0x83, 0xEA, 0x17, 0x60, 0x30, 0xF0, +0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x7D, 0x67, +0xB8, 0xA3, 0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF1, +0x10, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x9D, 0x67, +0x47, 0x44, 0x21, 0x4A, 0x40, 0xA2, 0x00, 0x68, +0x58, 0xC4, 0x97, 0x10, 0x09, 0x94, 0x06, 0x00, +0xB0, 0x67, 0x00, 0xF0, 0x19, 0x06, 0x01, 0x6F, +0x80, 0x18, 0x49, 0x4A, 0x11, 0x22, 0x30, 0xF0, +0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x80, 0xF0, 0x04, 0x22, +0x7D, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF1, +0x00, 0x4C, 0xB8, 0xA3, 0xD9, 0xA3, 0x17, 0x10, +0x09, 0x94, 0xB0, 0x67, 0x00, 0xF0, 0x19, 0x06, +0x01, 0x6F, 0x80, 0x18, 0x39, 0x4C, 0x12, 0x22, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x6C, 0x22, +0x5D, 0x67, 0xB8, 0xA2, 0xD9, 0xA2, 0x30, 0xF0, +0x20, 0x6C, 0x25, 0xF1, 0x18, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x62, 0x10, 0x7D, 0x67, 0x87, 0xA1, +0x59, 0xA3, 0x03, 0x6B, 0x8C, 0xEB, 0x62, 0xEA, +0x02, 0x61, 0x00, 0x68, 0x1A, 0x10, 0x0B, 0x94, +0x0C, 0x5C, 0xFB, 0x61, 0x01, 0x4A, 0x7D, 0x67, +0x59, 0xC3, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, +0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x4B, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x5D, 0x67, +0x45, 0xF1, 0x14, 0x4C, 0xB9, 0xA2, 0x42, 0x10, +0x08, 0x93, 0xFF, 0x6A, 0x01, 0x4B, 0x4C, 0xEB, +0x08, 0xD3, 0x6C, 0xA1, 0x9D, 0x67, 0xB9, 0xA4, +0x09, 0x97, 0x08, 0x94, 0x03, 0x6A, 0x6C, 0xEA, +0x01, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xAE, 0x49, +0x7D, 0x67, 0x58, 0xC3, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x0A, 0x22, 0x5D, 0x67, 0x08, 0x96, +0xF8, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF1, +0x00, 0x4C, 0xB0, 0x67, 0x80, 0x18, 0x52, 0x43, +0x7D, 0x67, 0x58, 0xA3, 0xFF, 0x72, 0x0C, 0x61, +0x08, 0x94, 0x0A, 0x93, 0x7F, 0x6A, 0x8C, 0xEA, +0x62, 0xEA, 0x03, 0x61, 0x9D, 0x67, 0x78, 0xC4, +0x03, 0x10, 0x01, 0x48, 0x54, 0x70, 0xCC, 0x61, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, +0x7D, 0x67, 0xB8, 0xA3, 0x30, 0xF0, 0x20, 0x6C, +0x65, 0xF1, 0x10, 0x4C, 0x80, 0x18, 0x52, 0x43, +0x01, 0x68, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, +0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x0A, 0x22, 0x5D, 0x67, 0xB8, 0xA2, 0xC4, 0xA1, +0xE5, 0xA1, 0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF1, +0x1C, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x7D, 0x67, +0x09, 0x94, 0xB8, 0xA3, 0x80, 0x18, 0xC2, 0x4C, +0x9D, 0x67, 0x58, 0xC4, 0x6C, 0xA1, 0x18, 0x6A, +0x6C, 0xEA, 0x0A, 0x22, 0x09, 0x94, 0xA4, 0xA1, +0x80, 0x18, 0xC2, 0x4C, 0x44, 0xC1, 0x09, 0x94, +0xA5, 0xA1, 0x80, 0x18, 0xC2, 0x4C, 0x45, 0xC1, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, +0x5D, 0x67, 0xB8, 0xA2, 0xC4, 0xA1, 0xE5, 0xA1, +0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF1, 0x0C, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x45, 0xA1, 0xFF, 0x72, +0x00, 0x6A, 0x05, 0x61, 0x01, 0x6A, 0x4B, 0xEA, +0x20, 0xF0, 0x49, 0xC1, 0x01, 0x6A, 0x64, 0xA1, +0xFF, 0x73, 0x0E, 0x61, 0x65, 0xA1, 0x01, 0x4A, +0x64, 0xC1, 0x20, 0xF0, 0x69, 0xA1, 0x20, 0xF0, +0x68, 0xC1, 0x01, 0x6B, 0x6B, 0xEB, 0x65, 0xC1, +0x20, 0xF0, 0x69, 0xC1, 0xFF, 0x6B, 0x6C, 0xEA, +0x9D, 0x67, 0x78, 0xA4, 0xFF, 0x73, 0x14, 0x61, +0x64, 0xA1, 0x01, 0x4A, 0x78, 0xC4, 0x20, 0xF0, +0x68, 0xA1, 0x79, 0xC4, 0x65, 0xA1, 0x64, 0xC1, +0x20, 0xF0, 0x69, 0xA1, 0x20, 0xF0, 0x68, 0xC1, +0x01, 0x6B, 0x6B, 0xEB, 0x65, 0xC1, 0x20, 0xF0, +0x69, 0xC1, 0xFF, 0x6B, 0x6C, 0xEA, 0x06, 0x10, +0x05, 0x2A, 0x6C, 0xA1, 0xE7, 0x4A, 0x6C, 0xEA, +0x10, 0x6B, 0x07, 0x10, 0x01, 0x72, 0x07, 0x61, 0x6C, 0xA1, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x4C, 0xC1, 0x00, 0x68, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, -0x6C, 0xEA, 0x10, 0x22, 0x9D, 0x67, 0xB8, 0xA4, -0xC4, 0xA1, 0xE5, 0xA1, 0x04, 0xD0, 0x4C, 0xA1, -0x03, 0x6B, 0x30, 0xF0, 0x20, 0x6C, 0x4E, 0x32, -0x6C, 0xEA, 0xE5, 0xF1, 0x08, 0x4C, 0x05, 0xD2, -0x80, 0x18, 0x48, 0x43, 0x6B, 0xA1, 0x0F, 0x6A, -0xD0, 0x67, 0x6C, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, -0x4B, 0xC1, 0x5D, 0x67, 0x09, 0x94, 0xB8, 0xA2, -0xF9, 0xA2, 0x80, 0x18, 0x9F, 0x4D, 0x13, 0x97, -0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, +0x08, 0x6B, 0x6D, 0xEA, 0x06, 0x10, 0x02, 0x72, +0x09, 0x61, 0x6C, 0xA1, 0x19, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x4C, 0xC1, 0x0D, 0x92, 0x01, 0x72, +0x1B, 0x61, 0x14, 0x10, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x85, 0xF1, 0x1C, 0x4C, 0x80, 0x18, 0x52, 0x43, +0x6C, 0xA1, 0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x4C, 0xC1, 0x2B, 0x10, 0x6C, 0xA1, 0x19, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC1, 0x00, 0x68, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, +0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x10, 0x22, +0x7D, 0x67, 0xB8, 0xA3, 0xC4, 0xA1, 0xE5, 0xA1, +0x04, 0xD0, 0x4C, 0xA1, 0x03, 0x6B, 0x30, 0xF0, +0x20, 0x6C, 0x4E, 0x32, 0x6C, 0xEA, 0xA5, 0xF1, +0x08, 0x4C, 0x05, 0xD2, 0x80, 0x18, 0x52, 0x43, +0x6B, 0xA1, 0x0F, 0x6A, 0xD0, 0x67, 0x6C, 0xEA, +0x10, 0x6B, 0x6D, 0xEA, 0x4B, 0xC1, 0x5D, 0x67, +0x09, 0x94, 0xB8, 0xA2, 0xF9, 0xA2, 0x80, 0x18, +0xE5, 0x4D, 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, +0x09, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, +0x32, 0x69, 0x38, 0xEC, 0x30, 0xF0, 0x21, 0x6A, +0x0C, 0xED, 0x0C, 0xEE, 0x33, 0xF1, 0x08, 0x4A, +0x09, 0xD4, 0x0C, 0xD5, 0x0E, 0xD6, 0x12, 0xE9, +0x25, 0xE2, 0x80, 0x18, 0x2C, 0x49, 0x7D, 0x67, +0x58, 0xC3, 0x98, 0xA3, 0x08, 0xD4, 0x0D, 0xD4, +0x40, 0xA1, 0x9D, 0x67, 0x0A, 0xD2, 0x61, 0xA1, +0x0B, 0xD3, 0xE7, 0xA1, 0x03, 0x6B, 0xEA, 0x32, +0x6C, 0xEA, 0x59, 0xC4, 0x01, 0x6A, 0x4B, 0xEA, +0x8C, 0xA1, 0x44, 0xC1, 0x45, 0xC1, 0x20, 0xF0, +0x48, 0xC1, 0x20, 0xF0, 0x49, 0xC1, 0x19, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0x4C, 0xC1, 0x30, 0xF0, +0x21, 0x6C, 0xD2, 0xF5, 0x98, 0x9C, 0x00, 0xF4, +0x00, 0x6A, 0x8C, 0xEA, 0x0B, 0x22, 0x5D, 0x67, +0x08, 0x95, 0xD9, 0xA2, 0x6C, 0xEF, 0x30, 0xF0, +0x20, 0x6C, 0xC5, 0xF1, 0x0C, 0x4C, 0x0C, 0xEF, +0x80, 0x18, 0x52, 0x43, 0x0C, 0x93, 0xA0, 0xF0, +0x0D, 0x23, 0x0D, 0x94, 0x0A, 0x93, 0x7F, 0x6A, +0x8C, 0xEA, 0x43, 0xEB, 0x02, 0x60, 0x9D, 0x67, +0x78, 0xC4, 0x0B, 0x94, 0x8A, 0xEA, 0xA0, 0xF0, +0x01, 0x60, 0x43, 0xEC, 0x04, 0x61, 0x5D, 0x67, +0x98, 0xC2, 0x00, 0x68, 0x6D, 0x10, 0x09, 0x94, +0x06, 0x00, 0xB0, 0x67, 0x00, 0xF0, 0x19, 0x06, +0x02, 0x6F, 0x80, 0x18, 0x49, 0x4A, 0x0D, 0x22, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, +0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x5B, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0xE5, 0xF1, 0x08, 0x4C, +0x52, 0x10, 0x09, 0x94, 0xB0, 0x67, 0x00, 0xF0, +0x19, 0x06, 0x02, 0x6F, 0x80, 0x18, 0x39, 0x4C, +0x00, 0x68, 0x34, 0x22, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, +0x6C, 0xEA, 0x45, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x7D, 0x67, 0xE5, 0xF1, 0x18, 0x4C, 0xB8, 0xA3, +0x3C, 0x10, 0x6C, 0xA1, 0x9D, 0x67, 0xB9, 0xA4, +0x09, 0x97, 0x08, 0x94, 0x03, 0x6A, 0x6C, 0xEA, +0x02, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xAE, 0x49, +0x7D, 0x67, 0x08, 0x94, 0x58, 0xC3, 0x0B, 0x93, +0x7F, 0x6A, 0x8C, 0xEA, 0x42, 0xEB, 0x03, 0x61, +0x9D, 0x67, 0x78, 0xC4, 0x0C, 0x10, 0x7D, 0x67, +0x58, 0xA3, 0xFF, 0x72, 0x08, 0x61, 0x08, 0x94, +0xFF, 0x6A, 0xFF, 0x4C, 0x4C, 0xEC, 0x0A, 0x92, +0x08, 0xD4, 0x4A, 0xEC, 0xDE, 0x61, 0x01, 0x48, +0xFF, 0x6A, 0x4C, 0xE8, 0x0C, 0x93, 0x63, 0xE8, +0x06, 0x60, 0x08, 0x94, 0xFF, 0x6A, 0xAC, 0x4C, +0x4C, 0xEC, 0x0A, 0xD4, 0xD2, 0x17, 0x30, 0xF0, +0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x00, 0xF4, +0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, +0x20, 0x6C, 0x05, 0xF2, 0x04, 0x4C, 0x5D, 0x67, +0xB8, 0xA2, 0x80, 0x18, 0x52, 0x43, 0x01, 0x68, +0x0E, 0x93, 0x01, 0x73, 0x06, 0x61, 0x6C, 0xA1, +0x19, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC1, +0x00, 0x68, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, +0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, +0x10, 0x22, 0x9D, 0x67, 0xB8, 0xA4, 0xC4, 0xA1, +0xE5, 0xA1, 0x04, 0xD0, 0x4C, 0xA1, 0x03, 0x6B, +0x30, 0xF0, 0x20, 0x6C, 0x4E, 0x32, 0x6C, 0xEA, +0x05, 0xF2, 0x14, 0x4C, 0x05, 0xD2, 0x80, 0x18, +0x52, 0x43, 0x6B, 0xA1, 0x0F, 0x6A, 0xD0, 0x67, +0x6C, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, 0x4B, 0xC1, +0x5D, 0x67, 0x09, 0x94, 0xB8, 0xA2, 0xF9, 0xA2, +0x80, 0x18, 0xE5, 0x4D, 0x13, 0x97, 0x12, 0x91, +0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, -0xFF, 0x69, 0x8C, 0xE9, 0x30, 0x68, 0x18, 0xE9, -0x30, 0xF0, 0x21, 0x6A, 0x73, 0xF0, 0x00, 0x4A, +0xFF, 0x69, 0x8C, 0xE9, 0x32, 0x68, 0x18, 0xE9, +0x30, 0xF0, 0x21, 0x6A, 0x33, 0xF1, 0x08, 0x4A, 0x91, 0x67, 0x12, 0xE8, 0x01, 0xE2, 0x80, 0x18, -0x1E, 0x49, 0x91, 0x67, 0x0B, 0xD2, 0x80, 0x18, -0x24, 0x49, 0x8C, 0xA0, 0x80, 0x6B, 0x6B, 0xEB, +0x2C, 0x49, 0x91, 0x67, 0x0B, 0xD2, 0x80, 0x18, +0x32, 0x49, 0x8C, 0xA0, 0x80, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x0E, 0x23, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x80, 0xF1, -0x04, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF2, -0x0C, 0x4C, 0x7D, 0x11, 0x18, 0x6B, 0x4C, 0xEB, +0x04, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF2, +0x18, 0x4C, 0x7D, 0x11, 0x18, 0x6B, 0x4C, 0xEB, 0x6F, 0x33, 0xFF, 0x6D, 0xAC, 0xEB, 0x08, 0xD3, 0x0B, 0x93, 0x7F, 0x6A, 0x6C, 0xEA, 0x60, 0xA0, 0x42, 0xEB, 0x15, 0x60, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x05, 0xF2, 0x14, 0x4C, 0x80, 0x18, 0x48, 0x43, +0x45, 0xF2, 0x00, 0x4C, 0x80, 0x18, 0x52, 0x43, 0xA0, 0xA0, 0x08, 0x97, 0x91, 0x67, 0x00, 0x6E, -0x80, 0x18, 0x9F, 0x4D, 0x61, 0x11, 0x9D, 0x67, +0x80, 0x18, 0xE5, 0x4D, 0x61, 0x11, 0x9D, 0x67, 0xA7, 0x44, 0x25, 0x4D, 0x80, 0xA5, 0x31, 0x6A, 0x4B, 0xEA, 0x83, 0xC0, 0x08, 0x95, 0x87, 0xA0, 0xB0, 0x33, 0x8C, 0xEA, 0x6D, 0xEA, 0x47, 0xC0, -0xD4, 0xF3, 0x6C, 0x41, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x64, 0x33, 0x4D, 0xE3, -0x60, 0xAB, 0x0D, 0xD3, 0xF4, 0xF3, 0x6C, 0x41, +0x34, 0xF4, 0x6C, 0x41, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x64, 0x33, 0x4D, 0xE3, +0x60, 0xAB, 0x0D, 0xD3, 0x54, 0xF4, 0x6C, 0x41, 0x64, 0x33, 0x4D, 0xE3, 0x60, 0xAB, 0x0C, 0xD3, -0x94, 0xF3, 0x6C, 0x41, 0x64, 0x33, 0x49, 0xE3, +0xF4, 0xF3, 0x6C, 0x41, 0x64, 0x33, 0x49, 0xE3, 0x40, 0xAA, 0x0D, 0x93, 0xA2, 0x67, 0x73, 0xE2, -0x0A, 0xD2, 0x80, 0x18, 0x3A, 0x49, 0x09, 0xD2, +0x0A, 0xD2, 0x80, 0x18, 0x48, 0x49, 0x09, 0xD2, 0x0C, 0x95, 0x0D, 0x92, 0x53, 0xE5, 0x80, 0x18, -0x3A, 0x49, 0x7D, 0x67, 0x87, 0x43, 0x1D, 0x4C, -0x60, 0xAC, 0x0E, 0xD2, 0x6A, 0xC8, 0x0A, 0x94, +0x48, 0x49, 0x7D, 0x67, 0x87, 0x43, 0x1D, 0x4C, +0x60, 0xAC, 0x0E, 0xD2, 0x6B, 0xC8, 0x0A, 0x94, 0x40, 0x6B, 0x86, 0x32, 0x41, 0x5A, 0x03, 0x60, 0x61, 0x42, 0xFF, 0x6D, 0xAC, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x71, 0xC0, 0x2B, 0xF1, 0x18, 0x4A, -0xE7, 0xF3, 0x80, 0x9A, 0xFF, 0x6B, 0x01, 0x4B, -0x8C, 0xEB, 0x11, 0x23, 0xB4, 0xF3, 0x6C, 0x41, +0x20, 0x6A, 0x72, 0xC0, 0x8B, 0xF1, 0x00, 0x4A, +0x47, 0xF4, 0x98, 0x9A, 0xFF, 0x6B, 0x01, 0x4B, +0x8C, 0xEB, 0x11, 0x23, 0x14, 0xF4, 0x6C, 0x41, 0x64, 0x33, 0x49, 0xE3, 0x40, 0xAA, 0x0D, 0x96, 0x0A, 0x97, 0x04, 0xD2, 0x0C, 0x92, 0x30, 0xF0, -0x20, 0x6C, 0x25, 0xF2, 0x00, 0x4C, 0xB1, 0x67, -0x05, 0xD2, 0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, -0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, +0x20, 0x6C, 0x45, 0xF2, 0x0C, 0x4C, 0xB1, 0x67, +0x05, 0xD2, 0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, +0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x08, 0x22, 0x09, 0x95, -0x0E, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF2, -0x04, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, -0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, +0x0E, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF2, +0x10, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, +0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x0C, 0x22, 0xA7, 0xA0, 0x08, 0x96, 0x0B, 0x97, 0xAA, 0x35, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0x6A, 0x45, 0xF2, 0x14, 0x4C, -0x4C, 0xED, 0x80, 0x18, 0x48, 0x43, 0x09, 0x93, +0x20, 0x6C, 0x03, 0x6A, 0x85, 0xF2, 0x00, 0x4C, +0x4C, 0xED, 0x80, 0x18, 0x52, 0x43, 0x09, 0x93, 0x0B, 0x95, 0x91, 0x67, 0x06, 0x06, 0x00, 0xF0, -0x19, 0x07, 0x04, 0xD3, 0x80, 0x18, 0x93, 0x4B, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, +0x19, 0x07, 0x04, 0xD3, 0x80, 0x18, 0xB4, 0x4B, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x09, 0x22, 0x5D, 0x67, 0xB8, 0xA2, 0xD9, 0xA2, 0x30, 0xF0, -0x20, 0x6C, 0x65, 0xF2, 0x0C, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x28, 0xF7, 0xB4, 0xA3, 0x04, 0x6C, -0xFF, 0x6A, 0xAC, 0xEC, 0x0B, 0x24, 0xE7, 0xF3, -0x60, 0x9B, 0x01, 0x4A, 0x6C, 0xEA, 0xA0, 0xF0, -0x18, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF2, -0x1C, 0x4C, 0xB1, 0x10, 0xBD, 0x67, 0x99, 0xA5, +0x20, 0x6C, 0x85, 0xF2, 0x18, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xE8, 0xF7, 0xB4, 0xA3, 0x04, 0x6C, +0xFF, 0x6A, 0xAC, 0xEC, 0x0B, 0x24, 0x47, 0xF4, +0x78, 0x9B, 0x01, 0x4A, 0x6C, 0xEA, 0xA0, 0xF0, +0x18, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF2, +0x08, 0x4C, 0xB1, 0x10, 0xBD, 0x67, 0x99, 0xA5, 0x09, 0x95, 0x83, 0xED, 0x03, 0x60, 0x0E, 0x94, 0x1E, 0x5C, 0x52, 0x61, 0x0E, 0x95, 0x50, 0x5D, -0x15, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x15, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF2, -0x08, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x01, 0x6D, -0x91, 0x67, 0xC5, 0x67, 0x80, 0x18, 0xAB, 0x4F, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF2, +0x14, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x01, 0x6D, +0x91, 0x67, 0xC5, 0x67, 0x80, 0x18, 0x07, 0x50, 0x00, 0x6A, 0x72, 0x10, 0x8A, 0xA0, 0x0F, 0x6D, 0x10, 0x6A, 0x64, 0x67, 0xAC, 0xEB, 0x01, 0x4B, 0x4B, 0xEA, 0xAC, 0xEB, 0x8C, 0xEA, 0x6D, 0xEA, -0x4A, 0xC0, 0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, +0x4A, 0xC0, 0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, 0x98, 0x9C, 0xFF, 0x6B, 0x01, 0x4B, 0x8C, 0xEB, -0x07, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF2, -0x14, 0x4C, 0x4C, 0xED, 0x80, 0x18, 0x48, 0x43, +0x07, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0xC5, 0xF2, +0x00, 0x4C, 0x4C, 0xED, 0x80, 0x18, 0x52, 0x43, 0x6A, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x02, 0x52, -0x18, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x18, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF2, -0x04, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x91, 0x67, -0x01, 0x6D, 0x00, 0x6E, 0x80, 0x18, 0xAB, 0x4F, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xC5, 0xF2, +0x10, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x91, 0x67, +0x01, 0x6D, 0x00, 0x6E, 0x80, 0x18, 0x07, 0x50, 0x6A, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4A, 0xC0, 0x6A, 0xA0, 0x0F, 0x6A, 0x37, 0x10, 0x9D, 0x67, 0xB8, 0xA4, 0xFF, 0xF7, 0x1F, 0x6C, 0xAC, 0xEC, 0x09, 0x95, 0x83, 0xED, 0x32, 0x60, -0x8A, 0xA0, 0x10, 0x4C, 0x8A, 0xC0, 0xE7, 0xF3, -0x60, 0x9B, 0xFF, 0x6C, 0x01, 0x4C, 0x6C, 0xEC, +0x8A, 0xA0, 0x10, 0x4C, 0x8A, 0xC0, 0x47, 0xF4, +0x78, 0x9B, 0xFF, 0x6C, 0x01, 0x4C, 0x6C, 0xEC, 0x09, 0x24, 0xAA, 0xA0, 0x30, 0xF0, 0x20, 0x6C, -0xA5, 0xF2, 0x10, 0x4C, 0xB2, 0x35, 0x4C, 0xED, -0x80, 0x18, 0x48, 0x43, 0x4A, 0xA0, 0x52, 0x32, +0xC5, 0xF2, 0x1C, 0x4C, 0xB2, 0x35, 0x4C, 0xED, +0x80, 0x18, 0x52, 0x43, 0x4A, 0xA0, 0x52, 0x32, 0x03, 0x52, 0x16, 0x61, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0xA5, 0xF2, 0x1C, 0x4C, 0x80, 0x18, 0x48, 0x43, -0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0xC5, 0x4E, +0xE5, 0xF2, 0x08, 0x4C, 0x80, 0x18, 0x52, 0x43, +0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x0D, 0x4F, 0x6A, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x4A, 0xC0, 0x6A, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4A, 0xC0, 0x1F, 0x10, 0x8A, 0xA0, 0x92, 0x33, @@ -35667,366 +36008,369 @@ u8 array_mp_8822c_fw_nic[] = { 0x8A, 0xA0, 0x0F, 0x6A, 0x64, 0x67, 0x4C, 0xEB, 0x06, 0x23, 0x0F, 0x4B, 0x4C, 0xEB, 0xE1, 0x4A, 0x8C, 0xEA, 0x6D, 0xEA, 0x4A, 0xC0, 0x30, 0xF0, -0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, +0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xC5, 0xF2, 0x04, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x91, 0x67, 0x80, 0x18, 0xE6, 0x47, +0x20, 0x6C, 0xE5, 0xF2, 0x10, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x91, 0x67, 0x80, 0x18, 0xEF, 0x47, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x26, 0x67, 0x4C, 0xE8, 0x4C, 0xE9, 0x90, 0x67, -0x4C, 0xED, 0xD1, 0x67, 0x80, 0x18, 0xE6, 0x4B, +0x4C, 0xED, 0xD1, 0x67, 0x80, 0x18, 0x08, 0x4C, 0xA2, 0x67, 0x90, 0x67, 0x00, 0x6E, 0xF1, 0x67, -0x04, 0xD2, 0x80, 0x18, 0x9F, 0x4D, 0x30, 0xF0, -0x21, 0x6A, 0x12, 0xF5, 0x58, 0x9A, 0x20, 0x6B, +0x04, 0xD2, 0x80, 0x18, 0xE5, 0x4D, 0x30, 0xF0, +0x21, 0x6A, 0xD2, 0xF5, 0x58, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x07, 0x22, 0x04, 0x95, 0x30, 0xF0, -0x20, 0x6C, 0xC5, 0xF2, 0x10, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x20, 0x6C, 0xE5, 0xF2, 0x1C, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x30, 0x69, 0x38, 0xEC, 0x30, 0xF0, 0x21, 0x6B, -0x73, 0xF0, 0x00, 0x4B, 0x05, 0xD4, 0x12, 0xE9, +0x32, 0x69, 0x38, 0xEC, 0x30, 0xF0, 0x21, 0x6B, +0x33, 0xF1, 0x08, 0x4B, 0x05, 0xD4, 0x12, 0xE9, 0x25, 0xE3, 0x07, 0xA1, 0x03, 0x6B, 0x12, 0x30, 0x6C, 0xE8, 0x4C, 0xE8, 0x43, 0xA1, 0x7F, 0x6B, 0x04, 0xD2, 0x4C, 0xEB, 0x40, 0xA1, 0x63, 0xEA, 0x01, 0x60, 0x04, 0xD2, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0xD2, 0xF5, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x04, 0x95, 0x30, 0xF0, -0x20, 0x6C, 0xE5, 0xF2, 0x00, 0x4C, 0xD0, 0x67, -0x80, 0x18, 0x48, 0x43, 0x43, 0xA1, 0x04, 0x93, +0x20, 0x6C, 0x05, 0xF3, 0x0C, 0x4C, 0xD0, 0x67, +0x80, 0x18, 0x52, 0x43, 0x43, 0xA1, 0x04, 0x93, 0x80, 0x6D, 0xAB, 0xED, 0x4C, 0xED, 0x6D, 0xED, 0x05, 0x94, 0x00, 0xF6, 0xA0, 0x35, 0xFF, 0x6A, 0x00, 0xF6, 0xA3, 0x35, 0xF0, 0x67, 0x4C, 0xED, -0x00, 0x6E, 0x80, 0x18, 0x9F, 0x4D, 0x09, 0x97, +0x00, 0x6E, 0x80, 0x18, 0xE5, 0x4D, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0x68, 0x18, 0xEA, -0x04, 0xD2, 0x04, 0x94, 0xFF, 0x6E, 0x30, 0xF0, -0x21, 0x6A, 0xAC, 0xEE, 0x73, 0xF0, 0x00, 0x4A, -0x06, 0xD6, 0x18, 0x69, 0x12, 0xE8, 0x01, 0xE2, -0x80, 0x18, 0x1E, 0x49, 0x04, 0x94, 0x05, 0xD2, -0x80, 0x18, 0x24, 0x49, 0x06, 0x96, 0x4C, 0xE9, -0x2F, 0x31, 0xFF, 0x6A, 0x01, 0x76, 0x4C, 0xE9, -0x1C, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, -0x78, 0x9B, 0x01, 0xF7, 0x01, 0x4A, 0x6C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xE5, 0xF2, -0x18, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x6B, 0xA0, -0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4B, 0xC0, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0xD2, 0xFF, 0x6A, +0xAC, 0xEA, 0x06, 0xD2, 0x04, 0x92, 0x32, 0x68, +0x04, 0x94, 0x18, 0xEA, 0x30, 0xF0, 0x21, 0x6A, +0x33, 0xF1, 0x08, 0x4A, 0x18, 0x69, 0x12, 0xE8, +0x01, 0xE2, 0x80, 0x18, 0x2C, 0x49, 0x04, 0x94, +0x05, 0xD2, 0x80, 0x18, 0x32, 0x49, 0x4C, 0xE9, +0x2F, 0x31, 0xFF, 0x6A, 0x4C, 0xE9, 0x06, 0x92, +0x01, 0x72, 0x22, 0x61, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x25, 0xF3, 0x04, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x04, 0x94, 0x05, 0x95, 0x00, 0x6E, 0xF1, 0x67, -0x80, 0x18, 0x9F, 0x4D, 0x6C, 0xA0, 0x19, 0x6A, -0x21, 0x10, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x80, 0x18, 0xE5, 0x4D, 0x6C, 0xA0, 0x19, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x61, 0x6B, 0x6B, 0xEB, +0x6C, 0xEA, 0x6B, 0xA0, 0x4C, 0xC0, 0x10, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x4B, 0xC0, 0x80, 0x10, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, +0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF3, 0x10, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x8B, 0xA0, 0x0F, 0x6A, +0x64, 0x67, 0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, +0xE1, 0x4A, 0x8C, 0xEA, 0x6D, 0xEA, 0x6C, 0xA0, +0x4B, 0xC0, 0x18, 0x6A, 0x6C, 0xEA, 0x09, 0x2A, +0x04, 0x94, 0x80, 0x18, 0x71, 0x51, 0x6C, 0xA0, +0x61, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x4C, 0xC0, +0x5B, 0x10, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF3, -0x04, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x8B, 0xA0, -0x0F, 0x6A, 0x64, 0x67, 0x4C, 0xEB, 0x01, 0x4B, -0x4C, 0xEB, 0xE1, 0x4A, 0x8C, 0xEA, 0x6D, 0xEA, -0x6C, 0xA0, 0x4B, 0xC0, 0x18, 0x6A, 0x6C, 0xEA, -0x09, 0x2A, 0x04, 0x94, 0x80, 0x18, 0x11, 0x51, -0x6C, 0xA0, 0x61, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x4C, 0xC0, 0x57, 0x10, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x0C, 0x22, 0xAC, 0xA0, 0x03, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0xAE, 0x35, 0x4C, 0xED, -0xFF, 0x6A, 0x05, 0xF3, 0x0C, 0x4C, 0x4C, 0xED, -0x80, 0x18, 0x48, 0x43, 0xAC, 0xA0, 0x03, 0x6B, -0xB6, 0x32, 0x6C, 0xEA, 0x51, 0xE0, 0xC4, 0xA4, -0x01, 0x4A, 0x6C, 0xEA, 0x05, 0xD6, 0x54, 0x36, -0x61, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0xCD, 0xEA, -0x4C, 0xC0, 0xAC, 0xA0, 0xAE, 0x32, 0x6C, 0xEA, -0x03, 0x4A, 0x6C, 0xEA, 0x4C, 0x33, 0x19, 0x6A, -0x4B, 0xEA, 0xAC, 0xEA, 0x6D, 0xEA, 0x4C, 0xC0, -0x20, 0xF0, 0x46, 0xA4, 0xFF, 0x72, 0x10, 0x60, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, -0x22, 0x67, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF3, -0x1C, 0x4C, 0xB1, 0x67, 0x80, 0x18, 0x48, 0x43, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, -0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x07, 0x22, -0x05, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF3, -0x08, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x04, 0x94, -0x05, 0x95, 0x01, 0x6E, 0xF1, 0x67, 0x80, 0x18, -0x9F, 0x4D, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, +0x0C, 0x22, 0xAC, 0xA0, 0x03, 0x6A, 0x30, 0xF0, +0x20, 0x6C, 0xAE, 0x35, 0x4C, 0xED, 0xFF, 0x6A, +0x25, 0xF3, 0x18, 0x4C, 0x4C, 0xED, 0x80, 0x18, +0x52, 0x43, 0xAC, 0xA0, 0x03, 0x6B, 0xB6, 0x32, +0x6C, 0xEA, 0x05, 0xD2, 0x51, 0xE0, 0x44, 0xA4, +0x06, 0xD2, 0x05, 0x92, 0x01, 0x4A, 0x6C, 0xEA, +0x54, 0x36, 0x61, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, +0xCD, 0xEA, 0x4C, 0xC0, 0xAC, 0xA0, 0xAE, 0x32, +0x6C, 0xEA, 0x03, 0x4A, 0x6C, 0xEA, 0x4C, 0x33, +0x19, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x6D, 0xEA, +0x4C, 0xC0, 0x20, 0xF0, 0x48, 0xA4, 0xFF, 0x72, +0x11, 0x60, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, +0x78, 0x9B, 0x22, 0x67, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x08, 0x22, 0x05, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0x45, 0xF3, 0x08, 0x4C, 0xD1, 0x67, +0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x08, 0x22, 0x05, 0x95, 0x06, 0x96, +0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF3, 0x18, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x04, 0x94, 0x06, 0x95, +0x01, 0x6E, 0xF1, 0x67, 0x80, 0x18, 0xE5, 0x4D, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, -0x30, 0x68, 0x18, 0xE9, 0x30, 0xF0, 0x21, 0x6A, -0x73, 0xF0, 0x00, 0x4A, 0x91, 0x67, 0x12, 0xE8, -0x01, 0xE2, 0x80, 0x18, 0x1E, 0x49, 0x91, 0x67, -0x09, 0xD2, 0x80, 0x18, 0x24, 0x49, 0x0B, 0xD2, -0x4A, 0xA8, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x32, 0x68, 0x18, 0xE9, 0x30, 0xF0, 0x21, 0x6A, +0x33, 0xF1, 0x08, 0x4A, 0x91, 0x67, 0x12, 0xE8, +0x01, 0xE2, 0x80, 0x18, 0x2C, 0x49, 0x91, 0x67, +0x09, 0xD2, 0x80, 0x18, 0x32, 0x49, 0x0B, 0xD2, +0x4B, 0xA8, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x0E, 0xD2, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x25, 0xF3, 0x14, 0x4C, 0x80, 0x18, 0x48, 0x43, +0x65, 0xF3, 0x08, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x6C, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x80, 0xF1, 0x03, 0x22, -0x30, 0xF0, 0x20, 0x6B, 0xB4, 0xF3, 0x4C, 0x41, -0x2B, 0xF1, 0x18, 0x4B, 0x44, 0x32, 0x69, 0xE2, +0x30, 0xF0, 0x20, 0x6B, 0x14, 0xF4, 0x4C, 0x41, +0x8B, 0xF1, 0x00, 0x4B, 0x44, 0x32, 0x69, 0xE2, 0x40, 0xAA, 0x06, 0xD3, 0x03, 0x5A, 0x0F, 0x61, -0xE7, 0xF3, 0x60, 0x9B, 0x02, 0xF0, 0x00, 0x6A, +0x47, 0xF4, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0xE4, 0xF5, 0x1C, 0x4C, 0x80, 0x18, 0x48, 0x43, +0x24, 0xF6, 0x00, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x91, 0x67, 0x00, 0x6D, 0x66, 0x11, 0x06, 0x94, -0xA4, 0xF4, 0x4C, 0x41, 0x44, 0x32, 0x89, 0xE2, -0xA0, 0xAA, 0x08, 0xD2, 0x84, 0xF4, 0x4C, 0x41, +0xE4, 0xF4, 0x4C, 0x41, 0x44, 0x32, 0x89, 0xE2, +0xA0, 0xAA, 0x08, 0xD2, 0xC4, 0xF4, 0x4C, 0x41, 0x44, 0x32, 0x89, 0xE2, 0x80, 0xAA, 0x07, 0xD2, -0x93, 0xE5, 0x80, 0x18, 0x3A, 0x49, 0x06, 0x93, -0x0D, 0xD2, 0xE4, 0xF4, 0x4C, 0x41, 0x44, 0x32, +0x93, 0xE5, 0x80, 0x18, 0x48, 0x49, 0x06, 0x93, +0x0D, 0xD2, 0x24, 0xF5, 0x4C, 0x41, 0x44, 0x32, 0x69, 0xE2, 0xA0, 0xAA, 0x0A, 0xD2, 0x07, 0x92, -0x80, 0xAA, 0x93, 0xE5, 0x80, 0x18, 0x3A, 0x49, +0x80, 0xAA, 0x93, 0xE5, 0x80, 0x18, 0x48, 0x49, 0x06, 0x94, 0x0C, 0xD2, 0x02, 0xF0, 0x00, 0x6A, -0xE7, 0xF3, 0x60, 0x9C, 0x6C, 0xEA, 0x12, 0x22, -0x07, 0x92, 0x08, 0x93, 0xA0, 0xAA, 0xC4, 0xF4, +0x47, 0xF4, 0x78, 0x9C, 0x6C, 0xEA, 0x12, 0x22, +0x07, 0x92, 0x08, 0x93, 0xA0, 0xAA, 0x04, 0xF5, 0x4C, 0x41, 0x44, 0x32, 0x89, 0xE2, 0x0A, 0x94, 0xE0, 0xAA, 0xC0, 0xAB, 0x40, 0xAC, 0x30, 0xF0, -0x20, 0x6C, 0x45, 0xF3, 0x00, 0x4C, 0x04, 0xD2, -0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, 0x21, 0x6B, -0x12, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, +0x20, 0x6C, 0x65, 0xF3, 0x14, 0x4C, 0x04, 0xD2, +0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, 0x21, 0x6B, +0xD2, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x0D, 0x95, 0x0C, 0x96, -0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF2, 0x04, 0x4C, -0x80, 0x18, 0x48, 0x43, 0x0B, 0x93, 0x18, 0x6A, -0x6C, 0xEA, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF2, 0x10, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x0B, 0x93, 0x18, 0x6A, +0x6C, 0xEA, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x4E, 0x32, 0x0A, 0xD2, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x0A, 0x95, -0x09, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF3, -0x1C, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x09, 0x92, +0x09, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF3, +0x10, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x09, 0x92, 0x7F, 0x6C, 0x09, 0x93, 0x8C, 0xEA, 0x06, 0xD2, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x0F, 0x22, 0x06, 0x94, 0x30, 0xF0, -0x20, 0x6A, 0x88, 0xF5, 0x1C, 0x4A, 0x84, 0x33, +0x20, 0x6A, 0xE8, 0xF5, 0x04, 0x4A, 0x84, 0x33, 0x49, 0xE3, 0x40, 0xAA, 0x52, 0x34, 0x56, 0x33, 0x6D, 0xE4, 0x4D, 0xE3, 0x5E, 0x32, 0x49, 0xE3, 0x08, 0x10, 0x06, 0x94, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0xF5, 0x1C, 0x4A, 0x84, 0x33, 0x49, 0xE3, +0xE8, 0xF5, 0x04, 0x4A, 0x84, 0x33, 0x49, 0xE3, 0x40, 0xAA, 0x0B, 0xD2, 0x43, 0x80, 0x00, 0x52, 0x12, 0x60, 0x63, 0xA0, 0x7F, 0x6C, 0x30, 0xF0, -0x20, 0x6A, 0x8C, 0xEB, 0x88, 0xF5, 0x1C, 0x4A, +0x20, 0x6A, 0x8C, 0xEB, 0xE8, 0xF5, 0x04, 0x4A, 0x64, 0x33, 0x4D, 0xE3, 0x40, 0xAB, 0x52, 0x34, 0x56, 0x33, 0x6D, 0xE4, 0x4D, 0xE3, 0x5E, 0x32, 0x49, 0xE3, 0x08, 0xD2, 0x0B, 0x10, 0x63, 0xA0, 0x7F, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xEB, -0x64, 0x33, 0x88, 0xF5, 0x1C, 0x4A, 0x4D, 0xE3, +0x64, 0x33, 0xE8, 0xF5, 0x04, 0x4A, 0x4D, 0xE3, 0x60, 0xAB, 0x08, 0xD3, 0x4B, 0xA0, 0x10, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, 0xFF, 0x6A, 0x10, 0x6C, 0x4C, 0xEB, 0x8E, 0xEB, 0x01, 0x5B, 0x78, 0x67, 0x6B, 0xEB, 0x05, 0x6C, 0x6C, 0xEC, 0x07, 0xD4, -0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, 0x98, 0x9C, +0x30, 0xF0, 0x21, 0x6C, 0xD2, 0xF5, 0x98, 0x9C, 0x02, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x0C, 0x23, 0xA7, 0xA0, 0x03, 0x6B, 0x0A, 0x96, 0xB2, 0x35, -0x6C, 0xED, 0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF3, -0x0C, 0x4C, 0x4C, 0xED, 0x80, 0x18, 0x48, 0x43, +0x6C, 0xED, 0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF3, +0x1C, 0x4C, 0x4C, 0xED, 0x80, 0x18, 0x52, 0x43, 0x0E, 0x92, 0x07, 0x94, 0xFF, 0x6D, 0x64, 0x6B, 0x4C, 0xED, 0xAB, 0xE3, 0x89, 0xE2, 0x08, 0x94, 0x98, 0xEA, 0x12, 0xEC, 0x08, 0xD4, 0x47, 0xA0, 0x03, 0x6C, 0x52, 0x32, 0x8C, 0xEA, 0x12, 0xEC, 0x84, 0xEA, 0x0D, 0x92, 0x08, 0xD4, 0x4F, 0xE3, 0x0B, 0x92, 0x78, 0xEA, 0x0A, 0x93, 0x12, 0xEA, -0x44, 0xEB, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x44, 0xEB, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x07, 0xD2, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x07, 0x22, 0x0D, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0x65, 0xF3, 0x18, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x20, 0x6C, 0xA5, 0xF3, 0x08, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0xA3, 0xA0, 0x09, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0x85, 0xF3, 0x08, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x20, 0x6C, 0xA5, 0xF3, 0x18, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, 0x08, 0x92, 0x07, 0x93, 0x30, 0xF0, -0x20, 0x6C, 0x85, 0xF3, 0x18, 0x4C, 0x4E, 0x35, -0x6E, 0x36, 0x80, 0x18, 0x48, 0x43, 0x07, 0x94, +0x20, 0x6C, 0xC5, 0xF3, 0x08, 0x4C, 0x4E, 0x35, +0x6E, 0x36, 0x80, 0x18, 0x52, 0x43, 0x07, 0x94, 0x08, 0x92, 0x43, 0xEC, 0x03, 0x61, 0x0C, 0x93, 0x1E, 0x5B, 0x2F, 0x61, 0x6B, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x10, 0x72, 0x38, 0x61, 0x0C, 0x94, 0x1E, 0x5C, -0x35, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, +0x35, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x07, 0x22, 0x09, 0x95, 0x30, 0xF0, 0x20, 0x6C, -0xA5, 0xF3, 0x08, 0x4C, 0x80, 0x18, 0x48, 0x43, -0x06, 0x94, 0x80, 0x18, 0x2D, 0x49, 0x02, 0x72, +0xC5, 0xF3, 0x18, 0x4C, 0x80, 0x18, 0x52, 0x43, +0x06, 0x94, 0x80, 0x18, 0x3B, 0x49, 0x02, 0x72, 0x09, 0x61, 0x5D, 0x67, 0x67, 0x42, 0x1D, 0x4B, -0x40, 0xA3, 0x00, 0x6B, 0x20, 0xF0, 0x42, 0xC0, +0x40, 0xA3, 0x00, 0x6B, 0x20, 0xF0, 0x44, 0xC0, 0x06, 0xD3, 0x1A, 0x10, 0x9D, 0x67, 0x47, 0x44, -0x1D, 0x4A, 0x80, 0xA2, 0x20, 0xF0, 0x81, 0xC0, +0x1D, 0x4A, 0x80, 0xA2, 0x20, 0xF0, 0x83, 0xC0, 0x11, 0x10, 0x6B, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x10, 0x73, 0x01, 0x6B, 0x06, 0xD3, 0x09, 0x61, 0x6A, 0xA0, 0x6C, 0xEA, 0x01, 0x6B, 0x6D, 0xEA, 0x4A, 0xC0, 0x06, 0xD3, 0x02, 0x10, 0x00, 0x6A, 0x06, 0xD2, -0x30, 0xF0, 0x21, 0x6B, 0x12, 0xF5, 0x78, 0x9B, +0x30, 0xF0, 0x21, 0x6B, 0xD2, 0xF5, 0x78, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x07, 0x22, -0x06, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF3, -0x14, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x06, 0x95, -0x91, 0x67, 0x80, 0x18, 0x32, 0x51, 0x13, 0x97, +0x06, 0x95, 0x30, 0xF0, 0x20, 0x6C, 0xE5, 0xF3, +0x04, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x06, 0x95, +0x91, 0x67, 0x80, 0x18, 0x92, 0x51, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x28, 0xF7, 0x33, 0xA2, 0x30, 0x68, 0x28, 0xF7, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xE8, 0xF7, 0x33, 0xA2, 0x32, 0x68, 0xE8, 0xF7, 0x52, 0xA2, 0x18, 0xE9, 0x30, 0xF0, 0x21, 0x6B, -0x73, 0xF0, 0x00, 0x4B, 0x02, 0x72, 0x12, 0xE8, +0x33, 0xF1, 0x08, 0x4B, 0x02, 0x72, 0x12, 0xE8, 0x01, 0xE3, 0x34, 0x60, 0x03, 0x5A, 0x03, 0x60, -0x01, 0x72, 0x09, 0x60, 0xB7, 0x10, 0x03, 0x72, +0x01, 0x72, 0x09, 0x60, 0xB8, 0x10, 0x03, 0x72, 0x78, 0x67, 0x08, 0xD3, 0x74, 0x23, 0x04, 0x72, -0x80, 0xF0, 0x19, 0x60, 0xAF, 0x10, 0x9D, 0x67, +0x80, 0xF0, 0x1A, 0x60, 0xB0, 0x10, 0x9D, 0x67, 0x0C, 0x6A, 0x0E, 0x6B, 0x70, 0xC4, 0x4F, 0xCC, -0x52, 0xC4, 0x58, 0xA0, 0xBD, 0x67, 0x53, 0xC4, +0x52, 0xC4, 0x5A, 0xA0, 0xBD, 0x67, 0x53, 0xC4, 0x42, 0xA0, 0x54, 0xC4, 0x87, 0xA0, 0x03, 0x6A, 0x8A, 0x33, 0x4C, 0xEB, 0x4C, 0xEC, 0x96, 0xC5, 0x75, 0xC5, 0x64, 0xA0, 0x01, 0x6C, 0x77, 0xC5, 0x65, 0xA0, 0x78, 0xC5, 0x68, 0xA0, 0x7A, 0x33, 0x8C, 0xEB, 0x79, 0xC5, 0x6C, 0xA0, 0x6C, 0xEA, 0x5A, 0xC5, 0x4C, 0xA0, 0x4A, 0x32, 0x8C, 0xEA, -0x5B, 0xC5, 0x4A, 0xA8, 0x5C, 0xC5, 0x4B, 0xA8, -0x5D, 0xC5, 0x82, 0x10, 0x7D, 0x67, 0x0C, 0x6A, +0x5B, 0xC5, 0x4B, 0xA8, 0x5C, 0xC5, 0x4C, 0xA8, +0x5D, 0xC5, 0x83, 0x10, 0x7D, 0x67, 0x0C, 0x6A, 0x4F, 0xCB, 0x0E, 0x6A, 0x50, 0xC3, 0x0D, 0x6A, 0x52, 0xC3, 0x68, 0xA0, 0x1F, 0x6A, 0x9D, 0x67, 0x6C, 0xEA, 0x53, 0xC4, 0x40, 0xA0, 0x2C, 0x31, 0x54, 0xC4, 0x41, 0xA0, 0x55, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x50, 0x9A, 0x49, 0xE1, +0x20, 0x6A, 0xE3, 0xF3, 0x54, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x56, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF4, 0x5C, 0x9A, 0x49, 0xE1, 0x40, 0xA2, -0x57, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, -0x40, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x58, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, 0x44, 0x9A, +0x43, 0xF4, 0x40, 0x9A, 0x49, 0xE1, 0x40, 0xA2, +0x57, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF4, +0x44, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x58, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF4, 0x48, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x59, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF3, 0x58, 0x9A, 0x49, 0xE1, +0x20, 0x6A, 0xC3, 0xF3, 0x5C, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x5A, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF4, 0x48, 0x9A, 0x49, 0xE1, 0x40, 0xA2, -0x5B, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, -0x4C, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x5C, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF4, 0x50, 0x9A, -0x45, 0xE1, 0x40, 0xA1, 0x26, 0x10, 0xBD, 0x67, +0x43, 0xF4, 0x4C, 0x9A, 0x49, 0xE1, 0x40, 0xA2, +0x5B, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF4, +0x50, 0x9A, 0x49, 0xE1, 0x40, 0xA2, 0x5C, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF4, 0x54, 0x9A, +0x45, 0xE1, 0x40, 0xA1, 0x27, 0x10, 0xBD, 0x67, 0x0C, 0x6A, 0x4F, 0xCD, 0x0E, 0x6A, 0x50, 0xC5, -0x52, 0xC5, 0x4A, 0xA8, 0x91, 0x67, 0x53, 0xC5, -0x4B, 0xA8, 0x54, 0xC5, 0x5E, 0xA0, 0x55, 0xC5, -0x6A, 0xA0, 0x72, 0x32, 0x56, 0xC5, 0x0F, 0x6A, -0x6C, 0xEA, 0x57, 0xC5, 0x20, 0xF0, 0x45, 0xA0, -0x58, 0xC5, 0x80, 0x18, 0x1E, 0x49, 0x7D, 0x67, -0x91, 0x67, 0x59, 0xC3, 0x80, 0x18, 0x24, 0x49, -0x9D, 0x67, 0xA7, 0x44, 0x19, 0x4D, 0xA0, 0xA5, -0x5A, 0xC4, 0xBB, 0xC4, 0x42, 0xA0, 0x5C, 0xC4, -0x43, 0xA0, 0x5D, 0xC4, 0x11, 0x10, 0x7D, 0x67, -0x03, 0x6A, 0x4F, 0xCB, 0x0E, 0x6A, 0x50, 0xC3, -0x0F, 0x6A, 0x52, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF0, 0x6C, 0xA2, 0x82, 0xF0, 0x0C, 0x4A, -0x41, 0xA2, 0x9D, 0x67, 0x73, 0xC4, 0x54, 0xC4, -0x04, 0x94, 0x05, 0x95, 0x06, 0x96, 0x07, 0x97, -0x80, 0x18, 0x20, 0x41, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x52, 0xC5, 0x4B, 0xA8, 0x91, 0x67, 0x53, 0xC5, +0x4C, 0xA8, 0x54, 0xC5, 0x20, 0xF0, 0x40, 0xA0, +0x55, 0xC5, 0x6A, 0xA0, 0x72, 0x32, 0x56, 0xC5, +0x0F, 0x6A, 0x6C, 0xEA, 0x57, 0xC5, 0x20, 0xF0, +0x47, 0xA0, 0x58, 0xC5, 0x80, 0x18, 0x2C, 0x49, +0x7D, 0x67, 0x91, 0x67, 0x59, 0xC3, 0x80, 0x18, +0x32, 0x49, 0x9D, 0x67, 0xA7, 0x44, 0x19, 0x4D, +0xA0, 0xA5, 0x5A, 0xC4, 0xBB, 0xC4, 0x42, 0xA0, +0x5C, 0xC4, 0x43, 0xA0, 0x5D, 0xC4, 0x11, 0x10, +0x7D, 0x67, 0x03, 0x6A, 0x4F, 0xCB, 0x0E, 0x6A, +0x50, 0xC3, 0x0F, 0x6A, 0x52, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF0, 0x6C, 0xA2, 0x82, 0xF0, +0x0C, 0x4A, 0x41, 0xA2, 0x9D, 0x67, 0x73, 0xC4, +0x54, 0xC4, 0x04, 0x94, 0x05, 0x95, 0x06, 0x96, +0x07, 0x97, 0x80, 0x18, 0x2A, 0x41, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xEE, 0x30, 0xF0, -0x20, 0x6B, 0xEC, 0xEA, 0x43, 0xF7, 0xE4, 0x44, -0x2B, 0xF1, 0x18, 0x4B, 0xE4, 0x37, 0x7D, 0xE7, -0xA3, 0xCF, 0x63, 0xF7, 0xA4, 0x44, 0xA4, 0x35, +0x20, 0x6B, 0xEC, 0xEA, 0x83, 0xF7, 0xE4, 0x44, +0x8B, 0xF1, 0x00, 0x4B, 0xE4, 0x37, 0x7D, 0xE7, +0xA3, 0xCF, 0xA3, 0xF7, 0xA4, 0x44, 0xA4, 0x35, 0x84, 0x34, 0x75, 0xE5, 0x6D, 0xE4, 0xC6, 0xC5, -0xC7, 0xF6, 0x4F, 0xC3, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x8C, 0xEA, 0x43, 0xF7, 0xA4, 0x42, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0x47, 0xF7, 0x4F, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x8C, 0xEA, 0x83, 0xF7, 0xA4, 0x42, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0xA4, 0x35, 0x01, 0x6C, 0x75, 0xE5, 0x8B, 0xEC, -0x83, 0xCD, 0x63, 0xF7, 0xA4, 0x42, 0xA4, 0x35, +0x83, 0xCD, 0xA3, 0xF7, 0xA4, 0x42, 0xA4, 0x35, 0x44, 0x32, 0x75, 0xE5, 0x6D, 0xE2, 0x86, 0xC5, -0xC7, 0xF6, 0x8F, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0x47, 0xF7, 0x8F, 0xC3, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x4C, 0xEC, 0x2B, 0xF1, 0x18, 0x4B, 0xAC, 0xEA, -0x87, 0xF6, 0x8A, 0xCB, 0x87, 0xF6, 0x4C, 0xCB, +0x4C, 0xEC, 0x8B, 0xF1, 0x00, 0x4B, 0xAC, 0xEA, +0x07, 0xF7, 0x8A, 0xCB, 0x07, 0xF7, 0x4C, 0xCB, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x87, 0xF6, 0x48, 0xA0, +0x8B, 0xF1, 0x00, 0x48, 0x07, 0xF7, 0x48, 0xA0, 0x80, 0xF0, 0x13, 0x22, 0x30, 0xF0, 0x21, 0x6C, -0x00, 0x6D, 0x12, 0xF5, 0x08, 0x4C, 0x18, 0x6E, -0xE0, 0xF3, 0x1F, 0x6F, 0x80, 0x18, 0x9F, 0x58, -0x87, 0xF6, 0x6A, 0xA8, 0xFF, 0xF7, 0x1F, 0x6D, +0x00, 0x6D, 0xD2, 0xF5, 0x08, 0x4C, 0x18, 0x6E, +0xE0, 0xF3, 0x1F, 0x6F, 0x80, 0x18, 0x05, 0x59, +0x07, 0xF7, 0x6A, 0xA8, 0xFF, 0xF7, 0x1F, 0x6D, 0x4C, 0xED, 0xAE, 0xEB, 0x6B, 0xEA, 0x6D, 0xEA, 0xC0, 0xF7, 0x43, 0x32, 0xFF, 0x69, 0x4C, 0xE9, -0x87, 0xF6, 0x4C, 0xA8, 0xAE, 0xEA, 0x12, 0x22, -0xFF, 0x71, 0x11, 0x61, 0xE7, 0xF3, 0x40, 0x98, -0x80, 0x6B, 0x6C, 0xEA, 0x72, 0x22, 0xE7, 0xF3, -0x44, 0x98, 0x05, 0x5A, 0x6E, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0xC5, 0xF3, 0x00, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x67, 0x10, 0x01, 0x69, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF3, -0x60, 0x9A, 0x80, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, -0xE7, 0xF3, 0x44, 0x9A, 0x05, 0x5A, 0x07, 0x61, -0x30, 0xF0, 0x20, 0x6C, 0xC5, 0xF3, 0x10, 0x4C, -0xD1, 0x67, 0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF3, -0x60, 0x9A, 0x80, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, -0xE7, 0xF3, 0x44, 0x9A, 0x05, 0x5A, 0x06, 0x61, -0x30, 0xF0, 0x20, 0x6C, 0xE5, 0xF3, 0x00, 0x4C, -0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x25, 0xE2, 0x30, 0xF0, -0x21, 0x6A, 0x30, 0xF0, 0x21, 0x68, 0x13, 0xF0, -0x06, 0x4A, 0xD2, 0xF7, 0x06, 0x48, 0xC7, 0xF6, +0x07, 0xF7, 0x4C, 0xA8, 0xAE, 0xEA, 0x12, 0x22, +0xFF, 0x71, 0x11, 0x61, 0x47, 0xF4, 0x58, 0x98, +0x80, 0x6B, 0x6C, 0xEA, 0x72, 0x22, 0x47, 0xF4, +0x5C, 0x98, 0x05, 0x5A, 0x6E, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0xE5, 0xF3, 0x10, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x67, 0x10, 0x01, 0x69, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, +0x78, 0x9A, 0x80, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, +0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, 0x07, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF4, 0x00, 0x4C, +0xD1, 0x67, 0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, +0x78, 0x9A, 0x80, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, +0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF4, 0x10, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x25, 0xE2, 0x30, 0xF0, +0x21, 0x6A, 0x30, 0xF0, 0x21, 0x68, 0xD3, 0xF0, +0x0E, 0x4A, 0x93, 0xF0, 0x0E, 0x48, 0x47, 0xF7, 0x0E, 0x49, 0x04, 0xD2, 0xA0, 0xA8, 0xC0, 0xA1, 0xFF, 0xF7, 0x1F, 0x75, 0x25, 0x60, 0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x49, 0xE5, -0xC0, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE7, 0xF3, 0x60, 0x9A, 0x80, 0x6C, -0x8C, 0xEB, 0x0A, 0x23, 0xE7, 0xF3, 0x44, 0x9A, +0x63, 0xF1, 0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0x49, 0xE5, +0xC0, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x47, 0xF4, 0x78, 0x9A, 0x80, 0x6C, +0x8C, 0xEB, 0x0A, 0x23, 0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, -0xE5, 0xF3, 0x14, 0x4C, 0x80, 0x18, 0x48, 0x43, +0x25, 0xF4, 0x04, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x04, 0x92, 0x02, 0x48, 0x02, 0x49, 0x4A, 0xE8, 0xD1, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE7, 0xF3, 0x60, 0x9A, 0x80, 0x6C, -0x8C, 0xEB, 0x0A, 0x23, 0xE7, 0xF3, 0x44, 0x9A, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x47, 0xF4, 0x78, 0x9A, 0x80, 0x6C, +0x8C, 0xEB, 0x0A, 0x23, 0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6C, -0x05, 0xF4, 0x0C, 0x4C, 0x80, 0x18, 0x48, 0x43, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x00, 0x6B, 0x87, 0xF6, 0x68, 0xC2, 0x00, 0x68, -0x90, 0x67, 0x01, 0x48, 0x80, 0x18, 0xE4, 0x52, +0x25, 0xF4, 0x1C, 0x4C, 0x80, 0x18, 0x52, 0x43, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x00, 0x6B, 0x07, 0xF7, 0x68, 0xC2, 0x00, 0x68, +0x90, 0x67, 0x01, 0x48, 0x80, 0x18, 0x4A, 0x53, 0x20, 0x70, 0xFA, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x60, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x7E, 0x33, -0x87, 0xF6, 0x68, 0xC2, 0x04, 0x67, 0x80, 0xA4, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x7E, 0x33, +0x07, 0xF7, 0x68, 0xC2, 0x04, 0x67, 0x80, 0xA4, 0x60, 0x6B, 0x1F, 0x69, 0x8C, 0xEB, 0x76, 0x33, 0x09, 0xD3, 0x8C, 0xE9, 0x82, 0xA0, 0x61, 0xA0, 0x80, 0x34, 0x6D, 0xE4, 0x08, 0xD3, 0x08, 0x94, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x08, 0xD4, -0x63, 0xA0, 0x07, 0xD3, 0x84, 0xA0, 0xE7, 0xF3, -0x60, 0x9A, 0x06, 0xD4, 0x80, 0x6C, 0x8C, 0xEB, -0x0D, 0x23, 0xE7, 0xF3, 0x64, 0x9A, 0x05, 0x5B, -0x09, 0x61, 0x87, 0xF6, 0xA8, 0xA2, 0x09, 0x96, -0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF4, 0x00, 0x4C, -0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, 0x21, 0x6A, -0xD2, 0xF7, 0x40, 0xA2, 0x02, 0x2A, 0x80, 0x18, -0x49, 0x53, 0x09, 0x92, 0x1C, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF3, -0x60, 0x9A, 0x80, 0x6C, 0x8C, 0xEB, 0x0F, 0x23, -0xE7, 0xF3, 0x44, 0x9A, 0x05, 0x5A, 0x0B, 0x61, +0x63, 0xA0, 0x07, 0xD3, 0x84, 0xA0, 0x47, 0xF4, +0x78, 0x9A, 0x06, 0xD4, 0x80, 0x6C, 0x8C, 0xEB, +0x0D, 0x23, 0x47, 0xF4, 0x7C, 0x9A, 0x05, 0x5B, +0x09, 0x61, 0x07, 0xF7, 0xA8, 0xA2, 0x09, 0x96, +0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF4, 0x10, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, 0x21, 0x6A, +0x93, 0xF0, 0x48, 0xA2, 0x02, 0x2A, 0x80, 0x18, +0xAF, 0x53, 0x09, 0x92, 0x1C, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, +0x78, 0x9A, 0x80, 0x6C, 0x8C, 0xEB, 0x0F, 0x23, +0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, 0x0B, 0x61, 0x06, 0x93, 0x08, 0x96, 0x07, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0x45, 0xF4, 0x08, 0x4C, 0xB1, 0x67, -0x04, 0xD3, 0x80, 0x18, 0x48, 0x43, 0x91, 0x67, -0x80, 0x18, 0xE4, 0x52, 0x55, 0x10, 0x09, 0x94, +0x20, 0x6C, 0x65, 0xF4, 0x18, 0x4C, 0xB1, 0x67, +0x04, 0xD3, 0x80, 0x18, 0x52, 0x43, 0x91, 0x67, +0x80, 0x18, 0x4A, 0x53, 0x55, 0x10, 0x09, 0x94, 0x01, 0x74, 0x29, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF3, 0x60, 0x9A, -0x80, 0x6C, 0x8C, 0xEB, 0x0F, 0x23, 0xE7, 0xF3, -0x44, 0x9A, 0x05, 0x5A, 0x0B, 0x61, 0x06, 0x92, +0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, 0x78, 0x9A, +0x80, 0x6C, 0x8C, 0xEB, 0x0F, 0x23, 0x47, 0xF4, +0x5C, 0x9A, 0x05, 0x5A, 0x0B, 0x61, 0x06, 0x92, 0x08, 0x96, 0x07, 0x97, 0x30, 0xF0, 0x20, 0x6C, -0x45, 0xF4, 0x08, 0x4C, 0xB1, 0x67, 0x04, 0xD2, -0x80, 0x18, 0x48, 0x43, 0x07, 0x93, 0xFF, 0x73, +0x65, 0xF4, 0x18, 0x4C, 0xB1, 0x67, 0x04, 0xD2, +0x80, 0x18, 0x52, 0x43, 0x07, 0x93, 0xFF, 0x73, 0x02, 0x61, 0x06, 0x94, 0x07, 0xD4, 0x06, 0x92, 0xFF, 0x72, 0x02, 0x61, 0x07, 0x93, 0x06, 0xD3, 0x08, 0x95, 0x07, 0x96, 0x06, 0x97, 0x91, 0x67, -0x80, 0x18, 0xD8, 0x52, 0x29, 0x10, 0x09, 0x94, +0x80, 0x18, 0x3E, 0x53, 0x29, 0x10, 0x09, 0x94, 0x03, 0x74, 0x26, 0x61, 0x22, 0xA0, 0x84, 0xA0, 0x63, 0xA0, 0x51, 0x67, 0x40, 0x31, 0x41, 0xA0, 0x80, 0x34, 0x61, 0xE4, 0x45, 0xE1, 0xE0, 0xF3, 0x1F, 0x6A, 0x4C, 0xE9, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF3, -0x60, 0x9A, 0x80, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, -0xE7, 0xF3, 0x44, 0x9A, 0x05, 0x5A, 0x08, 0x61, -0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF4, 0x0C, 0x4C, -0xB1, 0x67, 0xD0, 0x67, 0x80, 0x18, 0x48, 0x43, -0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0xF0, 0x52, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, +0x78, 0x9A, 0x80, 0x6C, 0x8C, 0xEB, 0x0C, 0x23, +0x47, 0xF4, 0x5C, 0x9A, 0x05, 0x5A, 0x08, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF4, 0x1C, 0x4C, +0xB1, 0x67, 0xD0, 0x67, 0x80, 0x18, 0x52, 0x43, +0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x56, 0x53, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x1C, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0x24, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0x23, 0xF3, 0x28, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, @@ -36035,7 +36379,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x01, 0x4D, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x64, 0x9B, 0x46, 0x67, 0x8E, 0xEB, +0x83, 0xF3, 0x68, 0x9B, 0x46, 0x67, 0x8E, 0xEB, 0x12, 0x23, 0x00, 0x6E, 0x66, 0x67, 0xE4, 0x67, 0xE6, 0xEE, 0x01, 0x68, 0x0C, 0xEF, 0x07, 0x2F, 0x01, 0x4B, 0xFF, 0x6F, 0xEC, 0xEB, 0x14, 0x73, @@ -36046,89 +36390,89 @@ u8 array_mp_8822c_fw_nic[] = { 0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x01, 0x75, 0x33, 0x61, 0x01, 0x76, 0x17, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x24, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x28, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF6, 0xCC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0xC0, 0x9B, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x81, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x24, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x03, 0xF6, -0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0x28, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x23, 0xF6, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, -0x00, 0x6C, 0xB1, 0x67, 0x03, 0xF6, 0xD0, 0x9B, +0x00, 0x6C, 0xB1, 0x67, 0x23, 0xF6, 0xC4, 0x9B, 0x67, 0x10, 0x02, 0x75, 0x2C, 0x61, 0x01, 0x76, -0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x24, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0x28, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x00, 0x6C, 0xB1, 0x67, 0x03, 0xF6, 0xD0, 0x9B, -0x2D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x24, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x03, 0xF6, 0xD0, 0x9B, 0xC0, 0xF3, +0x00, 0x6C, 0xB1, 0x67, 0x23, 0xF6, 0xC4, 0x9B, +0x2D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0x28, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x23, 0xF6, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, -0x03, 0xF6, 0xCC, 0x9B, 0x39, 0x10, 0x03, 0x75, +0x23, 0xF6, 0xC0, 0x9B, 0x39, 0x10, 0x03, 0x75, 0x38, 0x61, 0x01, 0x76, 0x1A, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x24, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0x28, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF6, 0xCC, 0x9B, 0x03, 0xF0, +0x44, 0x98, 0x23, 0xF6, 0xC0, 0x9B, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, -0x00, 0x6C, 0xB1, 0x67, 0x03, 0xF6, 0xD4, 0x9B, +0x00, 0x6C, 0xB1, 0x67, 0x23, 0xF6, 0xC8, 0x9B, 0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF3, 0x24, 0x9A, 0x03, 0xF6, -0x0C, 0x4B, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0x9B, +0x20, 0x6B, 0x83, 0xF3, 0x28, 0x9A, 0x23, 0xF6, +0x00, 0x4B, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF6, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF6, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x01, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x0E, 0x72, 0x51, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0x43, 0xF5, 0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x63, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x00, 0x6C, 0xA7, 0xF5, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF6, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF6, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF2, 0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x08, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0xAD, 0xF2, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF5, 0x10, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0x63, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x18, 0x6C, 0x75, 0xF2, 0x1B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x1C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0xDE, 0xF3, 0x17, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF6, -0xDC, 0x9B, 0xA3, 0xF2, 0x0C, 0x6C, 0xB1, 0x67, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, +0xD0, 0x9B, 0xA3, 0xF2, 0x0C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x10, 0x6C, 0xB1, 0x67, 0xFF, 0xF7, 0x1F, 0x6E, 0x55, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x43, 0xF5, 0x10, 0x4B, 0xA0, 0x9B, +0x20, 0x68, 0x63, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x00, 0x6C, 0x8A, 0xF2, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF6, 0xC0, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x23, 0xF6, 0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF2, 0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x08, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x81, 0xF2, 0x08, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x18, 0x6C, 0xD5, 0xF4, 0x04, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x1C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0xB9, 0xF0, 0x12, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF6, -0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, +0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF6, 0xC8, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x23, 0xF6, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x0C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF5, 0xD4, 0x9B, 0xA3, 0xF2, +0x44, 0x98, 0xE3, 0xF5, 0xC8, 0x9B, 0xA3, 0xF2, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, @@ -36198,62 +36542,62 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x26, 0x67, 0x3B, 0x22, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x23, 0xF6, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x68, 0x43, 0xF6, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, 0x04, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF6, 0x0C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x43, 0xF6, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xD1, 0x67, 0x48, 0xF0, 0x04, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, -0x1C, 0x6C, 0x23, 0xF6, 0xB0, 0x9B, 0x0F, 0x6E, +0x1C, 0x6C, 0x43, 0xF6, 0xA4, 0x9B, 0x0F, 0x6E, 0x37, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x23, 0xF6, 0x2C, 0x9A, 0xC0, 0xF3, +0x20, 0x68, 0x43, 0xF6, 0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x48, 0xF0, 0x04, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, -0xB0, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, 0x00, 0x6E, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF6, +0xA4, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x13, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x08, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF5, 0x1C, 0x6C, 0x23, 0xF6, -0xB0, 0x9B, 0x0F, 0x6E, 0x12, 0x10, 0x30, 0xF0, +0x44, 0x98, 0x23, 0xF5, 0x1C, 0x6C, 0x43, 0xF6, +0xA4, 0x9B, 0x0F, 0x6E, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x08, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF6, 0xB0, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, +0x43, 0xF6, 0xA4, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, -0x00, 0x6D, 0x24, 0x67, 0x80, 0x18, 0x53, 0x55, +0x00, 0x6D, 0x24, 0x67, 0x80, 0x18, 0xB9, 0x55, 0x99, 0x70, 0x07, 0x61, 0x50, 0x99, 0x40, 0xA2, 0x04, 0x2A, 0x91, 0x67, 0x01, 0x6D, 0x70, 0x6E, 0x03, 0x10, 0x00, 0x6D, 0x91, 0x67, 0xC5, 0x67, -0x80, 0x18, 0x13, 0x55, 0x07, 0x97, 0x06, 0x91, +0x80, 0x18, 0x79, 0x55, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0xAC, 0xEA, 0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x63, 0xF4, -0x04, 0x6C, 0xA3, 0xF1, 0xB8, 0x9B, 0x01, 0x6E, +0x04, 0x6C, 0xC3, 0xF1, 0xBC, 0x9B, 0x01, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF1, -0xB8, 0x9B, 0x63, 0xF4, 0x04, 0x6C, 0x00, 0x6E, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF1, +0xBC, 0x9B, 0x63, 0xF4, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0xAC, 0xEA, 0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, @@ -36269,166 +36613,166 @@ u8 array_mp_8822c_fw_nic[] = { 0x1F, 0x6D, 0x40, 0xEA, 0x1B, 0xC9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF6, 0xB4, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF6, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0x00, 0x6E, 0x23, 0xF4, 0x1C, 0x6C, 0x40, 0xEA, 0x01, 0x6D, 0xA5, 0xF5, -0x14, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0x0D, 0x28, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF6, 0x78, 0x9B, +0x14, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF6, 0x6C, 0x9B, 0x05, 0x97, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF3, 0x54, 0x9A, 0x4E, 0xEB, 0x01, 0x5B, +0xA3, 0xF3, 0x58, 0x9A, 0x4E, 0xEB, 0x01, 0x5B, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x83, 0xF2, 0x18, 0x68, 0x24, 0x67, 0x18, 0xF0, -0x00, 0x6D, 0x90, 0x67, 0x80, 0x18, 0x0D, 0x28, -0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0xB4, 0x9A, 0xA3, 0xF2, 0x08, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0x90, 0x67, 0xC0, 0x6D, 0x04, 0xD2, -0x80, 0x18, 0x0D, 0x28, 0x02, 0x67, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF3, 0xBC, 0x9A, 0x63, 0xF2, -0x10, 0x6C, 0x80, 0x18, 0x0D, 0x28, 0x05, 0x93, +0x00, 0x6D, 0x90, 0x67, 0x80, 0x18, 0x1C, 0x28, +0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, +0xA8, 0x9A, 0xA3, 0xF2, 0x08, 0x6C, 0x80, 0x18, +0x1C, 0x28, 0x90, 0x67, 0xC0, 0x6D, 0x04, 0xD2, +0x80, 0x18, 0x1C, 0x28, 0x02, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF3, 0xA0, 0x9A, 0x63, 0xF2, +0x10, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0x05, 0x93, 0x04, 0x95, 0xFF, 0x6C, 0x8C, 0xEB, 0x8C, 0xE8, 0x70, 0x33, 0x10, 0x30, 0x4D, 0xE8, 0xAD, 0xEB, -0x60, 0xF0, 0x71, 0xC1, 0x60, 0xF0, 0x12, 0xC1, +0x60, 0xF0, 0x73, 0xC1, 0x60, 0xF0, 0x14, 0xC1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, 0x08, 0xD4, 0xCC, 0xEA, 0xC0, 0xF0, 0x1C, 0x25, 0x20, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x23, 0xF6, 0xBC, 0x9B, 0xC0, 0xF3, +0x20, 0x68, 0x43, 0xF6, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x21, 0xF0, 0x13, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xAB, 0xED, 0x43, 0xF6, 0xC0, 0x9B, +0x10, 0x6C, 0xAB, 0xED, 0x43, 0xF6, 0xD4, 0x9B, 0x90, 0x11, 0x08, 0x93, 0x50, 0x9B, 0x40, 0xA2, 0x01, 0x72, 0x80, 0xF1, 0x0B, 0x61, 0x01, 0x69, 0x2B, 0xE9, 0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x80, 0x18, 0x0D, 0x28, 0x08, 0x93, 0x30, 0xF0, -0x20, 0x68, 0x03, 0xF0, 0x00, 0x6C, 0x5D, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF6, 0xBC, 0x9B, +0x80, 0x18, 0x1C, 0x28, 0x08, 0x93, 0x30, 0xF0, +0x20, 0x68, 0x03, 0xF0, 0x00, 0x6C, 0x5E, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF6, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x08, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x18, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x04, 0xF2, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF6, 0x00, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x43, 0xF6, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF6, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x43, 0xF6, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF6, -0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF6, 0xC8, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF6, -0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF6, 0xD0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF6, -0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF6, 0xD8, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF6, -0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF6, 0xC0, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x43, 0xF6, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, -0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF6, 0x08, 0x4B, 0xC0, 0xF3, +0x20, 0x6B, 0x63, 0xF6, 0xC4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, +0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF6, 0xCC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, +0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF6, 0xD4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, +0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF6, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x63, 0xF6, 0x08, 0x4B, 0xD4, 0x10, +0xB1, 0x67, 0x63, 0xF6, 0x1C, 0x4B, 0xD4, 0x10, 0x20, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x23, 0xF6, 0xBC, 0x9B, 0xC0, 0xF3, +0x20, 0x68, 0x43, 0xF6, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x20, 0xF3, 0x13, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xAB, 0xED, 0x63, 0xF6, 0xCC, 0x9B, +0x10, 0x6C, 0xAB, 0xED, 0x83, 0xF6, 0xC0, 0x9B, 0xB4, 0x10, 0x08, 0x93, 0x50, 0x9B, 0x40, 0xA2, 0x01, 0x72, 0xA0, 0xF0, 0x0F, 0x61, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF6, -0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF6, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x20, 0xF3, 0x13, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0xB8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x69, 0xDD, 0x9B, 0x2B, 0xE9, +0x44, 0x98, 0x01, 0x69, 0xDE, 0x9B, 0x2B, 0xE9, 0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF6, 0x0C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x83, 0xF6, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF6, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x83, 0xF6, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, 0xD4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF6, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x83, 0xF6, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, 0xDC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF6, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x83, 0xF6, 0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, 0xC4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF6, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x83, 0xF6, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, 0xCC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF6, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xA3, 0xF6, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x83, 0xF6, 0x14, 0x4B, +0x10, 0x6C, 0xB1, 0x67, 0xA3, 0xF6, 0x08, 0x4B, 0xC0, 0x9B, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x05, 0x67, 0x03, 0xF5, 0xB4, 0x9A, -0x21, 0xF0, 0x04, 0x6C, 0x80, 0x18, 0x0D, 0x28, -0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0xBC, 0x9A, 0x03, 0xF2, 0x04, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0x01, 0x72, 0x02, 0x61, 0x03, 0x6A, +0x20, 0x6A, 0x05, 0x67, 0x23, 0xF5, 0xA8, 0x9A, +0x21, 0xF0, 0x04, 0x6C, 0x80, 0x18, 0x1C, 0x28, +0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, +0xA0, 0x9A, 0x03, 0xF2, 0x04, 0x6C, 0x80, 0x18, +0x1C, 0x28, 0x01, 0x72, 0x02, 0x61, 0x03, 0x6A, 0x06, 0x10, 0x02, 0x2A, 0x01, 0x6A, 0x03, 0x10, 0x05, 0x72, 0x02, 0x61, 0x02, 0x6A, 0x41, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x05, 0x67, 0x01, 0x6D, 0x21, 0xF0, 0x00, 0x6C, 0xAB, 0xED, -0x80, 0x18, 0x0D, 0x28, 0xF0, 0x6B, 0x4C, 0xEB, +0x80, 0x18, 0x1C, 0x28, 0xF0, 0x6B, 0x4C, 0xEB, 0x72, 0x33, 0x61, 0xC0, 0x0F, 0x6B, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xAC, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0xB0, 0x9A, 0x60, 0xC0, 0x03, 0xF2, 0x04, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0x0C, 0x72, 0x02, 0x61, 0x03, 0x6A, +0x1C, 0x28, 0x0C, 0x72, 0x02, 0x61, 0x03, 0x6A, 0x09, 0x10, 0x08, 0x72, 0x02, 0x61, 0x01, 0x6A, 0x05, 0x10, 0x04, 0x72, 0x02, 0x61, 0x02, 0x6A, 0x01, 0x10, 0x01, 0x2A, 0x42, 0xC0, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0xBC, 0x9A, 0x23, 0xF6, -0x04, 0x6C, 0x80, 0x18, 0x0D, 0x28, 0x4F, 0xEA, +0x20, 0x6A, 0xE3, 0xF1, 0xA0, 0x9A, 0x23, 0xF6, +0x04, 0x6C, 0x80, 0x18, 0x1C, 0x28, 0x4F, 0xEA, 0x43, 0xC0, 0x01, 0x6A, 0x44, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x63, 0xF5, 0x10, 0x69, 0x01, 0x6D, 0x91, 0x67, -0xAB, 0xED, 0x80, 0x18, 0x0D, 0x28, 0x04, 0xD2, +0xAB, 0xED, 0x80, 0x18, 0x1C, 0x28, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x68, 0x04, 0x96, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0xFF, 0xF5, 0x1E, 0x4E, 0x40, 0xEA, 0xC0, 0xF3, @@ -36437,92 +36781,92 @@ u8 array_mp_8822c_fw_nic[] = { 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xED, -0x03, 0xF5, 0x14, 0x4A, 0x04, 0xD5, 0xA0, 0x9A, +0x23, 0xF5, 0x08, 0x4A, 0x04, 0xD5, 0xA0, 0x9A, 0x21, 0xF0, 0x04, 0x69, 0x91, 0x67, 0x80, 0x18, -0x0D, 0x28, 0x04, 0x93, 0x48, 0x23, 0x4C, 0xE8, +0x1C, 0x28, 0x04, 0x93, 0x48, 0x23, 0x4C, 0xE8, 0x03, 0x70, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6C, -0x85, 0xF4, 0x00, 0x4C, 0x80, 0x18, 0x48, 0x43, +0xA5, 0xF4, 0x10, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x00, 0x6A, 0x7B, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x1C, 0x6C, 0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0x1C, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0xC3, 0xF3, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, -0x14, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, +0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x1C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0xA3, 0xF5, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x83, 0xF6, -0xB8, 0x9B, 0x00, 0x6E, 0x3C, 0x10, 0x30, 0xF0, +0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0xA3, 0xF6, +0xAC, 0x9B, 0x00, 0x6E, 0x3C, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x1C, 0x6C, 0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x1C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF5, 0x14, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x23, 0xF5, 0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, -0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, +0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF6, -0xB8, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF6, +0xAC, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0xCC, 0xEA, 0x08, 0xD2, 0x0E, 0xD4, 0x0F, 0xD5, 0x11, 0xD7, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xA5, 0xF4, -0x0C, 0x4C, 0x22, 0xF6, 0x0C, 0x4D, 0x80, 0x18, -0x48, 0x43, 0x0F, 0x93, 0x02, 0x5B, 0x03, 0x60, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xC5, 0xF4, +0x1C, 0x4C, 0x22, 0xF6, 0x0C, 0x4D, 0x80, 0x18, +0x52, 0x43, 0x0F, 0x93, 0x02, 0x5B, 0x03, 0x60, 0x08, 0x94, 0x54, 0x5C, 0x12, 0x61, 0x0E, 0x94, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0xFF, 0x69, 0x6C, 0xEA, 0x80, 0xF0, 0x15, 0x22, 0x0F, 0x95, 0x30, 0xF0, 0x20, 0x6C, -0xA5, 0xF4, 0x18, 0x4C, 0x80, 0x18, 0x48, 0x43, +0xE5, 0xF4, 0x08, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x8D, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x03, 0xF2, 0x18, 0x4B, 0xA0, 0x9B, +0x20, 0x68, 0x43, 0xF2, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x1C, 0x69, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF6, 0xBC, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0xA3, 0xF6, 0xB0, 0x9A, 0xC0, 0xF3, 0x64, 0x98, 0x08, 0x96, 0x91, 0x67, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xE5, 0xF5, 0x08, 0x6C, -0xFF, 0x6D, 0x80, 0x18, 0x0D, 0x28, 0x00, 0xF6, +0xFF, 0x6D, 0x80, 0x18, 0x1C, 0x28, 0x00, 0xF6, 0x40, 0x31, 0x00, 0xF6, 0x23, 0x31, 0x40, 0x6A, 0x2C, 0xEA, 0x03, 0x22, 0x80, 0x6A, 0x4B, 0xEA, 0x4D, 0xE9, 0x11, 0x94, 0x0B, 0x74, 0x10, 0x61, 0x0F, 0x93, 0xA3, 0xF0, 0x00, 0x6A, 0x06, 0xD2, 0x05, 0xF1, 0x00, 0x4A, 0x07, 0xD2, 0x9D, 0x67, 0x68, 0x32, 0x49, 0xE4, 0x8C, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF6, 0xA0, 0x9A, 0x13, 0x10, +0x20, 0x6A, 0xA3, 0xF6, 0xB4, 0x9A, 0x13, 0x10, 0x11, 0x92, 0x00, 0x68, 0x0C, 0x72, 0x13, 0x61, 0x0F, 0x93, 0xE3, 0xF0, 0x08, 0x6A, 0x04, 0xD2, 0x05, 0xF1, 0x00, 0x4A, 0x05, 0xD2, 0x9D, 0x67, 0x68, 0x32, 0x49, 0xE4, 0x88, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF6, 0xA4, 0x9A, 0x80, 0x18, -0x0D, 0x28, 0xFF, 0x68, 0x4C, 0xE8, 0x0E, 0x94, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, +0x20, 0x6A, 0xA3, 0xF6, 0xB8, 0x9A, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0x68, 0x4C, 0xE8, 0x0E, 0x94, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xC5, 0xF4, 0x10, 0x4C, 0xB1, 0x67, -0xD0, 0x67, 0x80, 0x18, 0x48, 0x43, 0x21, 0xE0, +0x20, 0x6C, 0x05, 0xF5, 0x00, 0x4C, 0xB1, 0x67, +0xD0, 0x67, 0x80, 0x18, 0x52, 0x43, 0x21, 0xE0, 0x00, 0x50, 0x00, 0x69, 0x02, 0x61, 0xFF, 0x69, 0x0C, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, -0xB8, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0x00, 0x6E, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x43, 0xF2, +0xA0, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x0E, 0x94, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, +0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, 0x09, 0x22, 0x0F, 0x95, 0x08, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0xE5, 0xF4, 0x00, 0x4C, 0xF1, 0x67, -0x80, 0x18, 0x48, 0x43, 0x51, 0x67, 0x0D, 0x97, +0x20, 0x6C, 0x05, 0xF5, 0x10, 0x4C, 0xF1, 0x67, +0x80, 0x18, 0x52, 0x43, 0x51, 0x67, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x00, 0xF6, 0xA0, 0x35, 0x00, 0xF6, 0xC0, 0x36, @@ -36531,21 +36875,21 @@ u8 array_mp_8822c_fw_nic[] = { 0x05, 0xD5, 0x06, 0xD6, 0x07, 0xD7, 0x5D, 0x67, 0x40, 0xF0, 0x48, 0x82, 0x7D, 0x67, 0x24, 0x67, 0x08, 0xD2, 0x40, 0xF0, 0x6C, 0xA3, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x04, 0xD3, +0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x04, 0xD3, 0x64, 0x9C, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xA5, 0xF4, -0x0C, 0x4C, 0x42, 0xF6, 0x0C, 0x4D, 0x80, 0x18, -0x48, 0x43, 0x20, 0xF0, 0x4F, 0xA1, 0x0E, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xC5, 0xF4, +0x1C, 0x4C, 0x42, 0xF6, 0x0C, 0x4D, 0x80, 0x18, +0x52, 0x43, 0x20, 0xF0, 0x4F, 0xA1, 0x0E, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x99, 0x6C, 0xEA, 0x5F, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x05, 0xF5, 0x00, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x58, 0x10, 0x04, 0x92, 0x40, 0x5A, -0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x78, 0x9A, 0x44, 0x99, 0x4C, 0xEB, 0x00, 0x6A, -0x4E, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF5, -0x1C, 0x4C, 0x80, 0x18, 0x48, 0x43, 0x00, 0x6A, +0x20, 0x6C, 0x25, 0xF5, 0x10, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x58, 0x10, 0x04, 0x92, 0x40, 0x5A, +0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x7C, 0x9A, 0x44, 0x99, 0x4C, 0xEB, 0x00, 0x6A, +0x4E, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF5, +0x0C, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x00, 0x6A, 0x46, 0x10, 0x83, 0xF4, 0x10, 0x68, 0x90, 0x67, -0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x0D, 0x28, +0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x1C, 0x28, 0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x90, 0x67, 0x10, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x06, 0x90, 0x05, 0x93, @@ -36557,30 +36901,30 @@ u8 array_mp_8822c_fw_nic[] = { 0xFF, 0xF7, 0x1F, 0x6B, 0xD0, 0x67, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x07, 0xF2, 0x00, 0x4C, 0x6C, 0xEC, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x99, 0x6C, 0xEA, 0x0B, 0x22, 0x04, 0x95, -0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF5, 0x10, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF5, 0x00, 0x4C, 0xC5, 0x67, 0x07, 0xF2, 0x00, 0x4E, 0xF0, 0x67, -0x80, 0x18, 0x48, 0x43, 0x01, 0x6A, 0x0D, 0x97, +0x80, 0x18, 0x52, 0x43, 0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x12, 0xD6, 0x13, 0xD7, -0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x9C, 0xFF, 0x69, +0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0xFF, 0x69, 0x04, 0x67, 0x6C, 0xEA, 0xAC, 0xE9, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, -0xA5, 0xF4, 0x0C, 0x4C, 0x62, 0xF6, 0x10, 0x4D, -0x80, 0x18, 0x48, 0x43, 0x20, 0xF0, 0x4F, 0xA0, -0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x7E, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x05, 0xF5, 0x00, 0x4C, -0x80, 0x18, 0x48, 0x43, 0x77, 0x10, 0x12, 0x92, +0xC5, 0xF4, 0x1C, 0x4C, 0x62, 0xF6, 0x10, 0x4D, +0x80, 0x18, 0x52, 0x43, 0x20, 0xF0, 0x4F, 0xA0, +0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x7E, 0x22, +0x30, 0xF0, 0x20, 0x6C, 0x25, 0xF5, 0x10, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x77, 0x10, 0x12, 0x92, 0x02, 0x5A, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x78, 0x9A, 0x44, 0x98, 0x4C, 0xEB, +0xC3, 0xF2, 0x7C, 0x9A, 0x44, 0x98, 0x4C, 0xEB, 0x00, 0x6A, 0x6D, 0x23, 0x12, 0x95, 0x30, 0xF0, -0x20, 0x6C, 0xA5, 0xF4, 0x18, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x00, 0x6A, 0x64, 0x10, 0x83, 0xF4, +0x20, 0x6C, 0xE5, 0xF4, 0x08, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x00, 0x6A, 0x64, 0x10, 0x83, 0xF4, 0x10, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, -0x0D, 0x28, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x1C, 0x28, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF4, 0x10, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x13, 0x93, 0x0B, 0x73, 0x27, 0x61, 0x12, 0x93, @@ -36588,36 +36932,36 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x4A, 0x09, 0xD2, 0x68, 0x32, 0x06, 0x03, 0x4D, 0xE3, 0x0A, 0xD3, 0x84, 0xAB, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9A, 0xA3, 0xF6, 0xA0, 0x9B, 0xD1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x32, 0x22, -0x0A, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF5, -0x10, 0x4C, 0xE2, 0x9A, 0x12, 0x95, 0x04, 0xD1, +0x44, 0x9A, 0xA3, 0xF6, 0xB4, 0x9B, 0xD1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x32, 0x22, +0x0A, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF5, +0x00, 0x4C, 0xE2, 0x9A, 0x12, 0x95, 0x04, 0xD1, 0x0B, 0x6E, 0x26, 0x10, 0x12, 0x93, 0xE3, 0xF0, 0x08, 0x6A, 0x06, 0xD2, 0x05, 0xF1, 0x00, 0x4A, 0x07, 0xD2, 0x68, 0x32, 0x06, 0x03, 0x4D, 0xE3, 0x0B, 0xD3, 0x80, 0xAB, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0xA3, 0xF6, 0xA4, 0x9B, 0xD1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, +0xA3, 0xF6, 0xB8, 0x9B, 0xD1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0B, 0x22, 0x0B, 0x92, 0x12, 0x95, 0x13, 0x96, 0x30, 0xF0, 0x20, 0x6C, -0xE0, 0x9A, 0x45, 0xF5, 0x10, 0x4C, 0x04, 0xD1, -0x80, 0x18, 0x48, 0x43, 0x01, 0x6A, 0x0F, 0x97, +0xE0, 0x9A, 0x85, 0xF5, 0x00, 0x4C, 0x04, 0xD1, +0x80, 0x18, 0x52, 0x43, 0x01, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x0C, 0xD4, 0x25, 0x67, 0xA0, 0xA5, 0x00, 0x6E, -0x0B, 0x6F, 0x80, 0x18, 0xF2, 0x57, 0x0C, 0x94, +0x0B, 0x6F, 0x80, 0x18, 0x58, 0x58, 0x0C, 0x94, 0xA1, 0xA1, 0x01, 0x6E, 0x0B, 0x6F, 0x80, 0x18, -0xF2, 0x57, 0x0C, 0x94, 0xA2, 0xA1, 0x00, 0x6E, -0x0C, 0x6F, 0x80, 0x18, 0xF2, 0x57, 0x0C, 0x94, +0x58, 0x58, 0x0C, 0x94, 0xA2, 0xA1, 0x00, 0x6E, +0x0C, 0x6F, 0x80, 0x18, 0x58, 0x58, 0x0C, 0x94, 0xA3, 0xA1, 0x01, 0x6E, 0x0C, 0x6F, 0x80, 0x18, -0xF2, 0x57, 0xFD, 0x6A, 0x00, 0x6B, 0x11, 0x67, +0x58, 0x58, 0xFD, 0x6A, 0x00, 0x6B, 0x11, 0x67, 0x06, 0xD2, 0x07, 0xD3, 0x07, 0x93, 0x03, 0x6A, 0x6C, 0xEA, 0x03, 0x72, 0x0A, 0x61, 0x44, 0x80, 0xA1, 0x80, 0xC2, 0x80, 0xE3, 0x80, 0x0C, 0x94, 0x04, 0xD2, 0x06, 0x92, 0x05, 0xD2, 0x80, 0x18, -0xA4, 0x57, 0x06, 0x92, 0x07, 0x93, 0x01, 0x48, +0x0A, 0x58, 0x06, 0x92, 0x07, 0x93, 0x01, 0x48, 0x01, 0x4A, 0x06, 0xD2, 0x01, 0x4B, 0x07, 0xD3, 0x06, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x07, 0x92, 0x06, 0xD3, 0x1C, 0x72, 0xE3, 0x61, 0x11, 0x67, @@ -36625,65 +36969,65 @@ u8 array_mp_8822c_fw_nic[] = { 0x03, 0x72, 0x0D, 0x61, 0x20, 0xF0, 0xAD, 0x80, 0x20, 0xF0, 0xCE, 0x80, 0x20, 0xF0, 0xEF, 0x80, 0x20, 0xF0, 0x50, 0x80, 0x0C, 0x94, 0x05, 0xD1, -0x04, 0xD2, 0x80, 0x18, 0xA4, 0x57, 0x01, 0x49, +0x04, 0xD2, 0x80, 0x18, 0x0A, 0x58, 0x01, 0x49, 0x3D, 0x71, 0x01, 0x48, 0xEA, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xD4, 0x0D, 0xD5, -0x0F, 0xD7, 0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x9C, +0x0F, 0xD7, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0x06, 0x67, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xA5, 0xF4, -0x0C, 0x4C, 0xA2, 0xF6, 0x14, 0x4D, 0x80, 0x18, -0x48, 0x43, 0x07, 0xF4, 0x00, 0x6A, 0x06, 0xD2, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xC5, 0xF4, +0x1C, 0x4C, 0xA2, 0xF6, 0x14, 0x4D, 0x80, 0x18, +0x52, 0x43, 0x07, 0xF4, 0x00, 0x6A, 0x06, 0xD2, 0x02, 0xF0, 0x00, 0x4A, 0x07, 0xD2, 0xFF, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0x0D, 0x93, 0x0C, 0xE9, -0x63, 0xF3, 0x04, 0x9A, 0x0F, 0x92, 0x28, 0x34, +0x83, 0xF3, 0x08, 0x9A, 0x0F, 0x92, 0x28, 0x34, 0x10, 0x96, 0x4C, 0xE8, 0x68, 0x32, 0x7D, 0x67, 0x49, 0xE3, 0x46, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0xB0, 0x67, 0x51, 0xE4, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x6C, 0xEC, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x0C, 0x94, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x9C, +0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, 0x0A, 0x22, 0x0D, 0x95, 0x10, 0x97, -0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF5, 0x14, 0x4C, -0xD1, 0x67, 0x04, 0xD0, 0x80, 0x18, 0x48, 0x43, +0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF5, 0x04, 0x4C, +0xD1, 0x67, 0x04, 0xD0, 0x80, 0x18, 0x52, 0x43, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x01, 0x6A, 0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x0F, 0xD5, 0x11, 0xD7, 0xA3, 0xF2, 0x58, 0x9A, +0x0F, 0xD5, 0x11, 0xD7, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0x04, 0x67, 0x26, 0x67, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0xA5, 0xF4, 0x0C, 0x4C, 0xC2, 0xF6, -0x1C, 0x4D, 0x80, 0x18, 0x48, 0x43, 0x0F, 0x92, +0x20, 0x6D, 0xC5, 0xF4, 0x1C, 0x4C, 0xC2, 0xF6, +0x1C, 0x4D, 0x80, 0x18, 0x52, 0x43, 0x0F, 0x92, 0x02, 0x5A, 0x16, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, +0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x04, 0x2A, 0x01, 0x6B, 0x6B, 0xEB, 0x08, 0xD3, 0x39, 0x10, 0x0F, 0x95, 0x30, 0xF0, 0x20, 0x6C, -0xA5, 0xF4, 0x18, 0x4C, 0x80, 0x18, 0x48, 0x43, +0xE5, 0xF4, 0x08, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x01, 0x6A, 0x4B, 0xEA, 0x08, 0xD2, 0x2E, 0x10, 0x07, 0xF4, 0x00, 0x6A, 0x06, 0xD2, 0xFF, 0x6B, 0x02, 0xF0, 0x00, 0x4A, 0x2C, 0xEB, 0x07, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x24, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x28, 0x9A, 0x09, 0xD3, 0x11, 0x92, 0x68, 0x34, 0x0F, 0x93, 0x4C, 0xE9, 0xB1, 0x67, 0x68, 0x32, 0x7D, 0x67, 0x49, 0xE3, 0x46, 0x9A, 0x51, 0xE4, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xEC, 0x80, 0x18, 0x0D, 0x28, -0x08, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0A, 0x22, +0x1F, 0x6A, 0x4C, 0xEC, 0x80, 0x18, 0x1C, 0x28, +0x08, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0A, 0x22, 0x0F, 0x95, 0x09, 0x96, 0x08, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0x85, 0xF5, 0x1C, 0x4C, 0x04, 0xD1, -0x80, 0x18, 0x48, 0x43, 0x08, 0x92, 0x0D, 0x97, +0x20, 0x6C, 0xC5, 0xF5, 0x0C, 0x4C, 0x04, 0xD1, +0x80, 0x18, 0x52, 0x43, 0x08, 0x92, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x20, 0xF0, 0x44, 0xA4, 0x25, 0x67, 0x18, 0x6E, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0xE4, 0x9A, 0x00, 0x6D, 0x04, 0x67, 0x80, 0x18, -0x9F, 0x58, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0xE8, 0x9A, 0x00, 0x6D, 0x04, 0x67, 0x80, 0x18, +0x05, 0x59, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0B, 0x22, 0x20, 0xF0, 0xAA, 0xA0, 0x20, 0xF0, 0xCD, 0xA0, 0x04, 0x97, 0x30, 0xF0, 0x20, 0x6C, -0xC5, 0xF5, 0x00, 0x4C, 0x80, 0x18, 0x48, 0x43, +0xE5, 0xF5, 0x10, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x04, 0x93, 0xFF, 0x6A, 0xEB, 0x4B, 0x4C, 0xEB, 0x02, 0x5B, 0x50, 0x60, 0x05, 0x93, 0x6C, 0xEA, 0x0F, 0x5A, 0x58, 0x67, 0x01, 0x5A, 0x58, 0x67, @@ -36709,53 +37053,59 @@ u8 array_mp_8822c_fw_nic[] = { 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x10, 0xD6, 0x11, 0xD7, -0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x9C, 0x04, 0x67, +0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0x04, 0x67, 0x25, 0x67, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xA5, 0xF4, -0x0C, 0x4C, 0x82, 0xF6, 0x14, 0x4D, 0x80, 0x18, -0x48, 0x43, 0x02, 0x59, 0x0F, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0xC5, 0xF4, +0x1C, 0x4C, 0x82, 0xF6, 0x14, 0x4D, 0x80, 0x18, +0x52, 0x43, 0x02, 0x59, 0x0F, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x6D, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x05, 0xF6, 0x00, 0x4C, 0xB1, 0x67, 0x80, 0x18, -0x48, 0x43, 0x65, 0x10, 0x10, 0x92, 0x09, 0x22, +0x25, 0xF6, 0x10, 0x4C, 0xB1, 0x67, 0x80, 0x18, +0x52, 0x43, 0x65, 0x10, 0x10, 0x92, 0x09, 0x22, 0x12, 0x94, 0x11, 0x97, 0xB1, 0x67, 0x04, 0xD4, -0xC2, 0x67, 0x90, 0x67, 0x80, 0x18, 0x74, 0x58, -0x5B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0xE4, 0x9A, 0x11, 0x92, 0x00, 0x6C, 0x08, 0xD4, +0xC2, 0x67, 0x90, 0x67, 0x80, 0x18, 0xDA, 0x58, +0x5B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, +0xE8, 0x9A, 0x11, 0x92, 0x00, 0x6C, 0x08, 0xD4, 0xEC, 0xEA, 0xEA, 0xEA, 0x09, 0xD2, 0x1C, 0x60, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x80, 0x18, -0x9F, 0x58, 0x08, 0xD2, 0x01, 0x4A, 0x0E, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, +0x05, 0x59, 0x08, 0xD2, 0x01, 0x4A, 0x0E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x40, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x05, 0xF6, 0x14, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x39, 0x10, 0x09, 0x94, 0x08, 0x95, -0x12, 0x96, 0x80, 0x18, 0xD0, 0x53, 0x12, 0xD2, +0x20, 0x6C, 0x45, 0xF6, 0x04, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x39, 0x10, 0x09, 0x94, 0x08, 0x95, +0x12, 0x96, 0x80, 0x18, 0x36, 0x54, 0x12, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x9A, 0x03, 0xF0, 0x08, 0x6A, 0x06, 0xD2, 0x05, 0xF1, 0x00, 0x4A, 0x07, 0xD2, 0x9D, 0x67, 0x28, 0x32, 0x49, 0xE4, 0x8C, 0xAA, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0xC4, 0x9A, 0x12, 0x92, 0x01, 0x6D, +0x83, 0xF3, 0xC8, 0x9A, 0x12, 0x92, 0x01, 0x6D, 0xAB, 0xED, 0x4C, 0xEE, 0x40, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, +0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0D, 0x22, 0x08, 0x94, 0x09, 0x92, 0x12, 0x97, 0x04, 0xD4, 0x30, 0xF0, 0x20, 0x6C, -0x25, 0xF6, 0x10, 0x4C, 0xB1, 0x67, 0x00, 0x6E, -0x05, 0xD2, 0x80, 0x18, 0x48, 0x43, 0x30, 0xF0, +0x65, 0xF6, 0x00, 0x4C, 0xB1, 0x67, 0x00, 0x6E, +0x05, 0xD2, 0x80, 0x18, 0x52, 0x43, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0D, 0x6C, 0x40, 0xEA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6D, 0x0A, 0xD4, -0x80, 0x18, 0xB7, 0x53, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x3C, 0x9A, 0x30, 0xF0, 0x21, 0x68, -0x12, 0xF5, 0x08, 0x48, 0x00, 0x6A, 0x90, 0x67, +0x80, 0x18, 0x1D, 0x54, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF2, 0x20, 0x9A, 0x30, 0xF0, 0x21, 0x68, +0xD2, 0xF5, 0x08, 0x48, 0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, 0xBC, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x90, 0x67, 0xF1, 0x67, +0x80, 0x18, 0x78, 0x59, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6A, 0x00, 0x6D, 0xBC, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x00, 0x6A, 0xF1, 0x67, -0x90, 0x67, 0xBC, 0x6E, 0xA2, 0x67, 0x04, 0xD2, -0x80, 0x18, 0x12, 0x59, 0x0A, 0x94, 0x01, 0x6D, -0x80, 0x18, 0xB7, 0x53, 0x09, 0x97, 0x08, 0x91, +0x80, 0x18, 0x78, 0x59, 0x00, 0x6A, 0x90, 0x67, +0xF1, 0x67, 0xA2, 0x67, 0xBC, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6A, 0x01, 0x6D, 0xFF, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x01, 0x6A, 0x90, 0x67, +0xF1, 0x67, 0xA2, 0x67, 0xFF, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0xF1, 0x67, 0x90, 0x67, +0xFF, 0x6E, 0x00, 0x6A, 0x01, 0x6D, 0x04, 0xD2, +0x80, 0x18, 0x78, 0x59, 0x0A, 0x94, 0x01, 0x6D, +0x80, 0x18, 0x1D, 0x54, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x25, 0x67, 0x0C, 0xE9, 0x29, 0x59, @@ -36765,88 +37115,88 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF4, 0x1C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xF0, 0x20, 0x6D, 0x65, 0xF6, 0x08, 0x4C, +0x30, 0xF0, 0x20, 0x6D, 0x85, 0xF6, 0x18, 0x4C, 0xE2, 0xF6, 0x1C, 0x4D, 0xD1, 0x67, 0xF0, 0x67, -0x80, 0x18, 0x48, 0x43, 0x00, 0x6A, 0xE4, 0x17, +0x80, 0x18, 0x52, 0x43, 0x00, 0x6A, 0xE4, 0x17, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x1C, 0x9A, 0x00, 0x6C, 0x01, 0x6E, -0xB0, 0x67, 0x80, 0x18, 0x9A, 0x28, 0x00, 0x6C, -0xB0, 0x67, 0xC4, 0x67, 0x80, 0x18, 0x9A, 0x28, +0xE3, 0xF1, 0x00, 0x9A, 0x00, 0x6C, 0x01, 0x6E, +0xB0, 0x67, 0x80, 0x18, 0xA9, 0x28, 0x00, 0x6C, +0xB0, 0x67, 0xC4, 0x67, 0x80, 0x18, 0xA9, 0x28, 0xB0, 0x67, 0x00, 0x6C, 0x01, 0x6E, 0x80, 0x18, -0x9A, 0x28, 0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x6D, +0xA9, 0x28, 0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x01, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x52, 0x9C, 0x40, 0xA2, 0x13, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x1C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x00, 0x9A, 0x00, 0x6C, 0x01, 0x6E, 0xB0, 0x67, 0x80, 0x18, -0x9A, 0x28, 0x00, 0x6C, 0xC4, 0x67, 0xB0, 0x67, -0x80, 0x18, 0x9A, 0x28, 0x00, 0x6C, 0xB0, 0x67, -0x01, 0x6E, 0x80, 0x18, 0x9A, 0x28, 0x05, 0x97, +0xA9, 0x28, 0x00, 0x6C, 0xC4, 0x67, 0xB0, 0x67, +0x80, 0x18, 0xA9, 0x28, 0x00, 0x6C, 0xB0, 0x67, +0x01, 0x6E, 0x80, 0x18, 0xA9, 0x28, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x09, 0xD5, 0xA3, 0xF2, -0x58, 0x9A, 0x64, 0x9C, 0x04, 0x67, 0x6C, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xD5, 0xC3, 0xF2, +0x5C, 0x9A, 0x64, 0x9C, 0x04, 0x67, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0xA5, 0xF4, 0x0C, 0x4C, 0x82, 0xF5, -0x0C, 0x4D, 0x80, 0x18, 0x48, 0x43, 0x90, 0x67, -0x80, 0x18, 0xB6, 0x55, 0x52, 0x98, 0x40, 0xA2, +0x20, 0x6D, 0xC5, 0xF4, 0x1C, 0x4C, 0x82, 0xF5, +0x0C, 0x4D, 0x80, 0x18, 0x52, 0x43, 0x90, 0x67, +0x80, 0x18, 0x1C, 0x56, 0x52, 0x98, 0x40, 0xA2, 0x04, 0x22, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, -0x8A, 0x55, 0x20, 0xF0, 0x58, 0xA0, 0x04, 0x22, +0xF0, 0x55, 0x20, 0xF0, 0x58, 0xA0, 0x04, 0x22, 0x90, 0x67, 0xE0, 0xF3, 0x1F, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x00, 0x6D, 0x30, 0xF0, 0x20, 0x69, -0x80, 0x18, 0x98, 0x55, 0xC0, 0xF3, 0x44, 0x99, +0x80, 0x18, 0xFE, 0x55, 0xC0, 0xF3, 0x44, 0x99, 0x03, 0x6D, 0xC5, 0x67, 0x03, 0xF0, 0x0C, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, -0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, +0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF0, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x03, 0x6D, 0xC5, 0x67, 0x08, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF2, 0x18, 0x4B, 0xC0, 0xF3, +0x20, 0x6B, 0xC3, 0xF2, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, 0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x09, 0x92, 0x14, 0x2A, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF4, 0x1C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF2, 0x18, 0x4B, 0x44, 0x98, +0x20, 0x6B, 0xC3, 0xF2, 0x1C, 0x4B, 0x44, 0x98, 0x60, 0x9B, 0x6C, 0xEA, 0x2F, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xA5, 0xF6, 0x08, 0x4C, 0x16, 0x10, +0x20, 0x6C, 0xC5, 0xF6, 0x18, 0x4C, 0x16, 0x10, 0x09, 0x92, 0x01, 0x72, 0x16, 0x61, 0xC0, 0xF3, 0x44, 0x99, 0x03, 0x6D, 0x23, 0xF4, 0x1C, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF2, 0x18, 0x4B, 0x44, 0x98, 0x60, 0x9B, +0xC3, 0xF2, 0x1C, 0x4B, 0x44, 0x98, 0x60, 0x9B, 0x6C, 0xEA, 0x18, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0xC5, 0xF6, 0x14, 0x4C, 0x80, 0x18, 0x48, 0x43, -0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x18, 0x4A, 0x40, 0x9A, 0x64, 0x98, 0x4C, 0xEB, +0x05, 0xF7, 0x04, 0x4C, 0x80, 0x18, 0x52, 0x43, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x1C, 0x4A, 0x40, 0x9A, 0x64, 0x98, 0x4C, 0xEB, 0x00, 0x6A, 0x0C, 0x23, 0x30, 0xF0, 0x20, 0x6C, -0x05, 0xF7, 0x00, 0x4C, 0x80, 0x18, 0x48, 0x43, +0x25, 0xF7, 0x10, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x00, 0x6A, 0x04, 0x10, 0x90, 0x67, 0x80, 0x18, -0xA3, 0x59, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x15, 0x5A, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x06, 0xD2, 0x10, 0xD6, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x9C, 0x04, 0x67, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, -0xA5, 0xF4, 0x0C, 0x4C, 0xA2, 0xF5, 0x10, 0x4D, -0x80, 0x18, 0x48, 0x43, 0x20, 0xF0, 0x4F, 0xA0, -0x10, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x78, 0x9A, 0x44, 0x98, 0x4C, 0xEB, 0x01, 0x6A, +0xC5, 0xF4, 0x1C, 0x4C, 0xA2, 0xF5, 0x10, 0x4D, +0x80, 0x18, 0x52, 0x43, 0x20, 0xF0, 0x4F, 0xA0, +0x10, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x7C, 0x9A, 0x44, 0x98, 0x4C, 0xEB, 0x01, 0x6A, 0x40, 0xF2, 0x0D, 0x23, 0x30, 0xF0, 0x20, 0x6C, -0x05, 0xF7, 0x10, 0x4C, 0x80, 0x18, 0x48, 0x43, +0x45, 0xF7, 0x00, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x43, 0x12, 0x10, 0x93, 0x07, 0x5B, 0x0B, 0x60, 0x01, 0x73, 0x03, 0x61, 0x06, 0x92, 0x03, 0x5A, 0x05, 0x10, 0x10, 0x93, 0x02, 0x73, 0x10, 0x61, 0x06, 0x92, 0x05, 0x5A, 0x0D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, +0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x20, 0xF2, 0x0F, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0x25, 0xF7, 0x10, 0x4C, 0x0E, 0x12, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, +0x20, 0x6C, 0x65, 0xF7, 0x00, 0x4C, 0x0E, 0x12, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0xE8, 0x9A, 0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, -0x9F, 0x58, 0x06, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, +0x05, 0x59, 0x06, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, 0x09, 0xD2, 0x6C, 0xEA, 0x07, 0xD2, 0x10, 0x92, 0x07, 0x5A, 0x60, 0xF1, 0x0E, 0x60, 0x48, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF5, 0x10, 0x4A, @@ -36859,8 +37209,8 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0x00, 0xF7, 0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0xA3, 0xF6, -0xAC, 0x9B, 0x04, 0x6E, 0x4E, 0x10, 0x10, 0x92, +0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0xC3, 0xF6, +0xA0, 0x9B, 0x04, 0x6E, 0x4E, 0x10, 0x10, 0x92, 0x06, 0x72, 0x25, 0x61, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, 0xA0, 0xF2, 0x0B, 0x6E, @@ -36869,8 +37219,8 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0x00, 0xF7, 0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0xA3, 0xF6, -0xAC, 0x9B, 0x05, 0x6E, 0x26, 0x10, 0x10, 0x93, +0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0xC3, 0xF6, +0xA0, 0x9B, 0x05, 0x6E, 0x26, 0x10, 0x10, 0x93, 0x25, 0x2B, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, 0x80, 0xF1, 0x1B, 0x6E, 0x40, 0xEA, @@ -36879,17 +37229,17 @@ u8 array_mp_8822c_fw_nic[] = { 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x14, 0x6C, 0x00, 0xF7, 0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0xA3, 0xF6, 0xAC, 0x9B, 0xA1, 0xF1, 0x14, 0x6C, +0xC3, 0xF6, 0xA0, 0x9B, 0xA1, 0xF1, 0x14, 0x6C, 0x06, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, 0x0F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x93, 0x06, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, 0x07, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0x43, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0xC3, 0xF1, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF2, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0xB8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0xE3, 0xF2, 0x08, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xE3, 0xF2, 0x0C, 0x6C, 0x0F, 0x6D, 0x06, 0x6E, @@ -36897,8 +37247,8 @@ u8 array_mp_8822c_fw_nic[] = { 0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x53, 0x98, 0x18, 0x6B, 0x40, 0xA2, 0x08, 0xD3, 0xC0, 0xF0, 0x01, 0x2A, 0x90, 0x67, -0x05, 0x6D, 0x80, 0x18, 0x92, 0x54, 0x90, 0x67, -0x06, 0x6D, 0x80, 0x18, 0xA1, 0x54, 0x18, 0x6A, +0x05, 0x6D, 0x80, 0x18, 0xF8, 0x54, 0x90, 0x67, +0x06, 0x6D, 0x80, 0x18, 0x07, 0x55, 0x18, 0x6A, 0xB6, 0x10, 0x06, 0x93, 0x01, 0x73, 0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, 0x00, 0x6C, 0x10, 0x6D, 0x01, 0x6E, @@ -36913,20 +37263,20 @@ u8 array_mp_8822c_fw_nic[] = { 0x44, 0x99, 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6D, 0x40, 0xEA, 0x07, 0x93, 0x04, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, 0x07, 0xD3, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0xB0, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0xB8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF2, 0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0x23, 0xF1, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0xE3, 0xF2, 0x08, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xE3, 0xF2, 0x0C, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x81, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x53, 0x98, 0x10, 0x6B, 0x40, 0xA2, 0x08, 0xD3, 0x50, 0x2A, -0x90, 0x67, 0x04, 0x6D, 0x80, 0x18, 0x92, 0x54, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0xA1, 0x54, +0x90, 0x67, 0x04, 0x6D, 0x80, 0x18, 0xF8, 0x54, +0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x07, 0x55, 0x10, 0x6A, 0x45, 0x10, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0xA1, 0xF1, 0x10, 0x6C, 0x0F, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, @@ -36936,52 +37286,52 @@ u8 array_mp_8822c_fw_nic[] = { 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6D, 0x40, 0xEA, 0x07, 0x93, 0x02, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, 0x07, 0xD3, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF2, 0xB0, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x43, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x81, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x08, 0x6A, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0x98, -0xA3, 0xF2, 0x58, 0x9A, 0x6C, 0xEA, 0x00, 0x6B, +0xC3, 0xF2, 0x5C, 0x9A, 0x6C, 0xEA, 0x00, 0x6B, 0x08, 0xD3, 0x0A, 0x22, 0x10, 0x95, 0x06, 0x96, -0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF7, 0x18, 0x4C, -0x80, 0x18, 0x48, 0x43, 0x00, 0x6A, 0x08, 0xD2, -0x30, 0xF0, 0x21, 0x69, 0x12, 0xF5, 0x08, 0x49, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0xB7, 0x53, +0x30, 0xF0, 0x20, 0x6C, 0x85, 0xF7, 0x08, 0x4C, +0x80, 0x18, 0x52, 0x43, 0x00, 0x6A, 0x08, 0xD2, +0x30, 0xF0, 0x21, 0x69, 0xD2, 0xF5, 0x08, 0x49, +0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x1D, 0x54, 0x01, 0x6B, 0x91, 0x67, 0x00, 0x6D, 0xEE, 0x6E, -0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, +0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x12, 0x6A, 0x91, 0x67, 0x00, 0x6D, 0x33, 0x6E, -0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, +0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, 0x08, 0x93, 0xE0, 0x9A, 0x91, 0x67, 0x00, 0x6D, -0x3F, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, +0x3F, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x00, 0x6B, 0xA3, 0x67, 0x91, 0x67, 0xEE, 0x6E, -0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, +0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, 0x01, 0x6A, 0x91, 0x67, 0xA2, 0x67, 0xEE, 0x6E, -0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, +0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x12, 0x6B, 0x91, 0x67, 0x01, 0x6D, 0x33, 0x6E, -0x1F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x04, 0x4B, +0x1F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x08, 0x92, 0x91, 0x67, 0x01, 0x6D, -0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, +0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, 0x00, 0x6A, 0x91, 0x67, 0x01, 0x6D, 0xEE, 0x6E, -0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, +0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, 0x07, 0x93, 0xE0, 0x9A, 0x91, 0x67, 0x00, 0x6D, -0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, +0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, 0x07, 0x93, 0xE0, 0x9A, 0x91, 0x67, 0x01, 0x6D, -0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x12, 0x59, -0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0xB7, 0x53, +0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x78, 0x59, +0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x1D, 0x54, 0x09, 0x92, 0x01, 0x4A, 0x10, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, +0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x20, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x85, 0xF7, 0x00, 0x4C, 0x10, 0x95, 0x06, 0x96, -0x80, 0x18, 0x48, 0x43, 0x17, 0x10, 0x90, 0x67, -0x80, 0x18, 0xE0, 0x56, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, +0xA5, 0xF7, 0x10, 0x4C, 0x10, 0x95, 0x06, 0x96, +0x80, 0x18, 0x52, 0x43, 0x17, 0x10, 0x90, 0x67, +0x80, 0x18, 0x46, 0x57, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x08, 0x22, 0x10, 0x95, 0x06, 0x96, 0x30, 0xF0, -0x20, 0x6C, 0xC5, 0xF7, 0x10, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x90, 0x67, 0x80, 0x18, 0xA3, 0x59, +0x20, 0x6C, 0x06, 0xF0, 0x00, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x90, 0x67, 0x80, 0x18, 0x15, 0x5A, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, @@ -36990,61 +37340,61 @@ u8 array_mp_8822c_fw_nic[] = { 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xC1, 0xF4, 0x00, 0x69, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF6, 0x08, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0xA3, 0xF6, 0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x49, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, -0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x03, 0x6A, 0x2A, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xC1, 0xF4, 0x00, 0x69, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, -0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x49, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x09, 0x92, 0x6F, 0x42, 0x02, 0x5B, 0x46, 0x60, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, 0x10, 0x69, 0x91, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, -0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, +0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF2, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x83, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0xA4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF4, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, 0xB4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x09, 0x96, 0xFD, 0xF2, 0x14, 0x49, 0x91, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x83, 0xF3, 0xBC, 0x9B, 0x09, 0x96, 0x47, 0x10, +0xC3, 0xF3, 0xA0, 0x9B, 0x09, 0x96, 0x47, 0x10, 0x03, 0x72, 0x46, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, 0x10, 0x69, 0x91, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, -0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, +0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF2, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x83, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0xA4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x14, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF4, 0x18, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, 0xB4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xFD, 0xF2, 0x14, 0x49, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF3, -0xBC, 0x9B, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, -0x08, 0x94, 0x80, 0x18, 0xA3, 0x59, 0x07, 0x97, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0xA0, 0x9B, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, +0x08, 0x94, 0x80, 0x18, 0x15, 0x5A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x03, 0x75, 0x24, 0x67, 0x53, 0x60, 0x01, 0x76, @@ -37067,95 +37417,95 @@ u8 array_mp_8822c_fw_nic[] = { 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0x0C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x04, 0x6E, 0x40, 0xEA, 0x91, 0x67, 0x80, 0x18, -0xA3, 0x59, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x15, 0x5A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x01, 0x76, 0xD0, 0x61, 0xC6, 0x17, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x01, 0x75, 0x08, 0xD4, 0x26, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0xC3, 0xF3, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x83, 0xF6, -0xB8, 0x9B, 0x00, 0x6E, 0x46, 0x10, 0x02, 0x75, +0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0xA3, 0xF6, +0xAC, 0x9B, 0x00, 0x6E, 0x46, 0x10, 0x02, 0x75, 0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x83, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, +0x20, 0x68, 0xC3, 0xF3, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x05, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0xA3, 0xF5, 0xA8, 0x9B, +0x44, 0x98, 0x91, 0x67, 0xA3, 0xF5, 0xBC, 0x9B, 0x00, 0x6E, 0x1E, 0x10, 0x03, 0x75, 0x26, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0x83, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF3, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF5, 0xA8, 0x9B, 0x91, 0x67, 0x01, 0x6E, +0xA3, 0xF5, 0xBC, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF6, 0xB8, 0x9B, 0x91, 0x67, +0x44, 0x98, 0xA3, 0xF6, 0xAC, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x08, 0x94, 0x80, 0x18, -0xA3, 0x59, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x15, 0x5A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x01, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x04, 0x67, 0x25, 0x67, 0x80, 0x18, 0xE7, 0x5B, -0xB1, 0x67, 0x90, 0x67, 0x80, 0x18, 0x3C, 0x5B, +0x04, 0x67, 0x25, 0x67, 0x80, 0x18, 0x59, 0x5C, +0xB1, 0x67, 0x90, 0x67, 0x80, 0x18, 0xAE, 0x5B, 0x20, 0xF0, 0x2D, 0xC0, 0x90, 0x67, 0x80, 0x18, -0xA3, 0x59, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x15, 0x5A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x01, 0x75, 0x04, 0x67, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, 0x04, 0x6C, -0x83, 0xF3, 0xAC, 0x9B, 0x08, 0x6E, 0x19, 0x10, +0xA3, 0xF3, 0xB0, 0x9B, 0x08, 0x6E, 0x19, 0x10, 0x02, 0x75, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF2, 0x04, 0x6C, 0x83, 0xF3, 0xAC, 0x9B, +0x03, 0xF2, 0x04, 0x6C, 0xA3, 0xF3, 0xB0, 0x9B, 0x04, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x83, 0xF3, 0xAC, 0x9B, 0x03, 0xF2, 0x04, 0x6C, +0xA3, 0xF3, 0xB0, 0x9B, 0x03, 0xF2, 0x04, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, 0x90, 0x67, 0x80, 0x18, -0xA3, 0x59, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x15, 0x5A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x7D, 0x67, 0x04, 0x67, 0x47, 0x43, 0x0A, 0xD6, 0x20, 0xF0, 0xAC, 0xC0, 0x21, 0x4A, 0x60, 0xA2, 0x46, 0x67, 0xAD, 0xEA, 0x0B, 0xD7, 0x25, 0x67, 0x20, 0xF0, 0x6B, 0xC4, 0x20, 0xF0, 0x4A, 0xC4, 0xA7, 0x67, 0x80, 0x18, -0x31, 0x5C, 0x0A, 0x96, 0x90, 0x67, 0xB1, 0x67, -0x80, 0x18, 0xB8, 0x5B, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, +0xA3, 0x5C, 0x0A, 0x96, 0x90, 0x67, 0xB1, 0x67, +0x80, 0x18, 0x2A, 0x5C, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x09, 0x22, 0x0A, 0x96, 0x0B, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0xE5, 0xF7, 0x1C, 0x4C, 0xB1, 0x67, -0x80, 0x18, 0x48, 0x43, 0x90, 0x67, 0x80, 0x18, -0xA3, 0x59, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x20, 0x6C, 0x26, 0xF0, 0x0C, 0x4C, 0xB1, 0x67, +0x80, 0x18, 0x52, 0x43, 0x90, 0x67, 0x80, 0x18, +0x15, 0x5A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x0D, 0xD5, 0x0E, 0xD6, 0x20, 0xF0, 0x44, 0xA4, 0x04, 0x67, 0x27, 0x67, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x58, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, 0x0A, 0x22, +0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x5C, 0x9A, 0x64, 0x9C, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, -0xA5, 0xF4, 0x0C, 0x4C, 0x02, 0xF6, 0x10, 0x4D, -0x80, 0x18, 0x48, 0x43, 0x20, 0xF0, 0x4F, 0xA0, +0xC5, 0xF4, 0x1C, 0x4C, 0x02, 0xF6, 0x10, 0x4D, +0x80, 0x18, 0x52, 0x43, 0x20, 0xF0, 0x4F, 0xA0, 0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0x26, 0xF0, 0x00, 0x4C, 0x02, 0xF6, -0x10, 0x4D, 0x80, 0x18, 0x48, 0x43, 0x8D, 0x10, +0x20, 0x6D, 0x46, 0xF0, 0x10, 0x4C, 0x02, 0xF6, +0x10, 0x4D, 0x80, 0x18, 0x52, 0x43, 0x8D, 0x10, 0x0E, 0x93, 0x04, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0x26, 0xF0, 0x18, 0x4C, 0x02, 0xF6, +0x20, 0x6D, 0x66, 0xF0, 0x08, 0x4C, 0x02, 0xF6, 0x10, 0x4D, 0xC3, 0x67, 0x16, 0x10, 0x0D, 0x92, 0xFF, 0x72, 0x02, 0x61, 0xFF, 0x71, 0x15, 0x60, 0x0D, 0x93, 0x04, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x2A, 0xA3, 0x67, 0x06, 0xD2, 0x10, 0x10, 0x0D, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0x46, 0xF0, 0x10, 0x4C, 0x02, 0xF6, -0x10, 0x4D, 0x80, 0x18, 0x48, 0x43, 0x00, 0x6A, -0x65, 0x10, 0x01, 0x6B, 0x06, 0xD3, 0x03, 0x6D, -0x0E, 0x96, 0x90, 0x67, 0x80, 0x18, 0xE4, 0x53, -0x0E, 0x95, 0x90, 0x67, 0x80, 0x18, 0x26, 0x5C, +0x20, 0x6D, 0x86, 0xF0, 0x00, 0x4C, 0x02, 0xF6, +0x10, 0x4D, 0x80, 0x18, 0x52, 0x43, 0x00, 0x6A, +0x65, 0x10, 0x01, 0x6B, 0x03, 0x6D, 0x06, 0xD3, +0x0E, 0x96, 0x90, 0x67, 0x80, 0x18, 0x4A, 0x54, +0x0E, 0x95, 0x90, 0x67, 0x80, 0x18, 0x98, 0x5C, 0x20, 0xF0, 0x4B, 0xA0, 0x03, 0x2A, 0x01, 0x6A, 0x20, 0xF0, 0x4B, 0xC0, 0x0D, 0x92, 0xFF, 0x4A, 0x02, 0x5A, 0x02, 0x60, 0x0D, 0x91, 0x0D, 0x10, @@ -37164,7 +37514,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x05, 0x10, 0x06, 0x93, 0x05, 0x23, 0x20, 0xF0, 0x2B, 0xA0, 0x00, 0x6A, 0x06, 0xD2, 0x02, 0x10, 0x03, 0x6B, 0x06, 0xD3, 0x06, 0x95, 0x90, 0x67, -0xD1, 0x67, 0xF1, 0x67, 0x80, 0x18, 0x4B, 0x5C, +0xD1, 0x67, 0xF1, 0x67, 0x80, 0x18, 0xBD, 0x5C, 0x07, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, 0x18, 0x60, 0x20, 0xF0, 0x4A, 0xA0, 0x01, 0x72, 0x06, 0x61, 0x0E, 0x92, 0x01, 0x72, @@ -37172,112 +37522,112 @@ u8 array_mp_8822c_fw_nic[] = { 0x20, 0xF0, 0x4A, 0xA0, 0x02, 0x72, 0x06, 0x61, 0x0E, 0x93, 0x02, 0x73, 0x03, 0x61, 0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, -0x80, 0x18, 0xD2, 0x58, 0x90, 0x67, 0x80, 0x18, -0xE0, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0A, 0x22, +0x80, 0x18, 0x38, 0x59, 0x90, 0x67, 0x80, 0x18, +0x46, 0x57, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x0A, 0x22, 0x0E, 0x95, 0x0D, 0x96, 0x06, 0x97, 0x30, 0xF0, -0x20, 0x6C, 0x66, 0xF0, 0x08, 0x4C, 0x04, 0xD1, -0x80, 0x18, 0x48, 0x43, 0x90, 0x67, 0x80, 0x18, -0xA3, 0x59, 0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, +0x20, 0x6C, 0x86, 0xF0, 0x18, 0x4C, 0x04, 0xD1, +0x80, 0x18, 0x52, 0x43, 0x90, 0x67, 0x80, 0x18, +0x15, 0x5A, 0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, 0x20, 0xF0, 0x44, 0xA4, 0xFF, 0x69, 0x04, 0x67, -0x0A, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x58, 0x9A, 0x64, 0x9C, 0xAC, 0xE9, 0x6C, 0xEA, +0x0A, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x5C, 0x9A, 0x64, 0x9C, 0xAC, 0xE9, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0xA5, 0xF4, 0x0C, 0x4C, 0xC2, 0xF5, -0x14, 0x4D, 0x80, 0x18, 0x48, 0x43, 0x20, 0xF0, +0x20, 0x6D, 0xC5, 0xF4, 0x1C, 0x4C, 0xC2, 0xF5, +0x14, 0x4D, 0x80, 0x18, 0x52, 0x43, 0x20, 0xF0, 0x4F, 0xA0, 0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, +0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x80, 0xF1, 0x1A, 0x22, 0x30, 0xF0, 0x20, 0x6C, -0x86, 0xF0, 0x0C, 0x4C, 0x80, 0x18, 0x48, 0x43, +0xA6, 0xF0, 0x1C, 0x4C, 0x80, 0x18, 0x52, 0x43, 0x93, 0x11, 0x48, 0x41, 0xF9, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x15, 0x5A, 0x0C, 0x61, 0x48, 0x41, 0xC7, 0x4A, 0x6C, 0xEA, 0x23, 0x5A, 0x07, 0x61, 0x47, 0x41, 0x68, 0x4A, 0x6C, 0xEA, 0x04, 0x5A, 0x02, 0x61, 0xB2, 0x59, 0x10, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, +0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x60, 0xF1, 0x1B, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xA6, 0xF0, 0x00, 0x4C, 0xB1, 0x67, -0x80, 0x18, 0x48, 0x43, 0x73, 0x11, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0xE4, 0x9A, 0x90, 0x67, -0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x9F, 0x58, +0x20, 0x6C, 0xC6, 0xF0, 0x10, 0x4C, 0xB1, 0x67, +0x80, 0x18, 0x52, 0x43, 0x73, 0x11, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF3, 0xE8, 0x9A, 0x90, 0x67, +0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x05, 0x59, 0x09, 0xD2, 0x01, 0x4A, 0x0F, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, +0x20, 0x6A, 0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, 0x40, 0xF1, 0x1F, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xA6, 0xF0, 0x10, 0x4C, 0x80, 0x18, -0x48, 0x43, 0x58, 0x11, 0x20, 0xF0, 0x6B, 0xA0, +0x20, 0x6C, 0xE6, 0xF0, 0x00, 0x4C, 0x80, 0x18, +0x52, 0x43, 0x58, 0x11, 0x20, 0xF0, 0x6B, 0xA0, 0x0F, 0x59, 0x58, 0x67, 0x0B, 0xD2, 0x06, 0xD3, 0x15, 0x2B, 0x21, 0xF0, 0x00, 0x6C, 0x0F, 0x6D, -0x80, 0x18, 0x0D, 0x28, 0xFF, 0x6B, 0x4C, 0xEB, +0x80, 0x18, 0x1C, 0x28, 0xFF, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, -0x20, 0xF0, 0x6B, 0xC0, 0xC6, 0xF0, 0x04, 0x4C, +0x20, 0xF0, 0x6B, 0xC0, 0xE6, 0xF0, 0x14, 0x4C, 0xC2, 0xF5, 0x14, 0x4D, 0xC3, 0x67, 0x06, 0xD3, -0x80, 0x18, 0x48, 0x43, 0x20, 0xF0, 0x4A, 0xA0, +0x80, 0x18, 0x52, 0x43, 0x20, 0xF0, 0x4A, 0xA0, 0x08, 0xD2, 0x1B, 0x2A, 0x21, 0xF0, 0x00, 0x6C, -0xF0, 0x6D, 0x80, 0x18, 0x0D, 0x28, 0xC2, 0x67, +0xF0, 0x6D, 0x80, 0x18, 0x1C, 0x28, 0xC2, 0x67, 0x06, 0x92, 0xFF, 0x6B, 0x6C, 0xEE, 0xCD, 0xEA, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x20, 0xF0, 0xCC, 0xC0, 0x20, 0xF0, -0x4A, 0xC0, 0xE6, 0xF0, 0x0C, 0x4C, 0xC2, 0xF5, +0x4A, 0xC0, 0x06, 0xF1, 0x1C, 0x4C, 0xC2, 0xF5, 0x14, 0x4D, 0xE2, 0x67, 0x08, 0xD2, 0x80, 0x18, -0x48, 0x43, 0x20, 0xF0, 0x6D, 0xA0, 0x07, 0xD3, -0x18, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0xB4, 0x9A, 0x21, 0xF0, 0x04, 0x6C, 0x80, 0x18, -0x0D, 0x28, 0xFF, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, +0x52, 0x43, 0x20, 0xF0, 0x6D, 0xA0, 0x07, 0xD3, +0x18, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, +0xA8, 0x9A, 0x21, 0xF0, 0x04, 0x6C, 0x80, 0x18, +0x1C, 0x28, 0xFF, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x20, 0xF0, -0x6D, 0xC0, 0x26, 0xF1, 0x08, 0x4C, 0xC2, 0xF5, +0x6D, 0xC0, 0x46, 0xF1, 0x18, 0x4C, 0xC2, 0xF5, 0x14, 0x4D, 0xC3, 0x67, 0x07, 0xD3, 0x80, 0x18, -0x48, 0x43, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF6, -0x50, 0x9A, 0x09, 0x93, 0x4C, 0xEB, 0x0B, 0x92, +0x52, 0x43, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, +0x44, 0x9A, 0x09, 0x93, 0x4C, 0xEB, 0x0B, 0x92, 0x2D, 0xEB, 0x06, 0xD3, 0x16, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF6, 0x54, 0x9A, 0x91, 0x59, +0x20, 0x6A, 0xC3, 0xF6, 0x48, 0x9A, 0x91, 0x59, 0x4D, 0xEB, 0x06, 0xD3, 0x05, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x58, 0x9A, 0x07, 0x10, +0x20, 0x6A, 0x83, 0xF2, 0x5C, 0x9A, 0x07, 0x10, 0x50, 0x59, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x54, 0x9A, 0x06, 0x93, 0x4D, 0xEB, +0x83, 0xF2, 0x58, 0x9A, 0x06, 0x93, 0x4D, 0xEB, 0x06, 0xD3, 0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, -0xB7, 0x53, 0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, +0x1D, 0x54, 0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x08, 0x4A, 0x82, 0x67, 0x09, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x04, 0x4A, 0x06, 0x93, +0x20, 0x6A, 0x83, 0xF3, 0x08, 0x4A, 0x06, 0x93, 0xE0, 0x9A, 0x00, 0x6D, 0x18, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x04, 0x4A, 0x06, 0x93, 0x09, 0x94, +0x80, 0x18, 0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF3, 0x08, 0x4A, 0x06, 0x93, 0x09, 0x94, 0xE0, 0x9A, 0x01, 0x6D, 0x18, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0x12, 0x59, 0x90, 0x67, 0x01, 0x6D, -0x80, 0x18, 0xB7, 0x53, 0x0F, 0x59, 0x11, 0x60, +0x80, 0x18, 0x78, 0x59, 0x90, 0x67, 0x01, 0x6D, +0x80, 0x18, 0x1D, 0x54, 0x0F, 0x59, 0x11, 0x60, 0x50, 0x98, 0x40, 0xA2, 0x07, 0x2A, 0x90, 0x67, -0x05, 0x6D, 0x80, 0x18, 0x92, 0x54, 0x90, 0x67, +0x05, 0x6D, 0x80, 0x18, 0xF8, 0x54, 0x90, 0x67, 0x06, 0x6D, 0x1A, 0x10, 0x90, 0x67, 0x04, 0x6D, -0x80, 0x18, 0x92, 0x54, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0xF8, 0x54, 0x90, 0x67, 0x00, 0x6D, 0x13, 0x10, 0x68, 0x41, 0xE4, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, 0x1D, 0x5B, 0x03, 0x60, 0x90, 0x67, 0x01, 0x6D, 0x0A, 0x10, 0x68, 0x41, 0xA4, 0x4B, 0x4C, 0xEB, 0x2D, 0x5B, 0x03, 0x60, 0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, -0x80, 0x18, 0xA1, 0x54, 0x90, 0x67, 0xB1, 0x67, -0x80, 0x18, 0xBC, 0x54, 0x90, 0x67, 0xB1, 0x67, -0x80, 0x18, 0x04, 0x55, 0x0B, 0x93, 0x2F, 0x23, -0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0x38, 0x54, +0x80, 0x18, 0x07, 0x55, 0x90, 0x67, 0xB1, 0x67, +0x80, 0x18, 0x22, 0x55, 0x90, 0x67, 0xB1, 0x67, +0x80, 0x18, 0x6A, 0x55, 0x0B, 0x93, 0x2F, 0x23, +0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0x9E, 0x54, 0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0xA3, 0xC1, 0x40, 0xF4, 0x14, 0x6C, 0x80, 0x6D, 0x00, 0x6E, -0x80, 0x18, 0x9A, 0x28, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0x18, 0xA9, 0x28, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF2, 0xB8, 0x9B, 0x83, 0xF2, 0x00, 0x6C, +0x83, 0xF2, 0xBC, 0x9B, 0x83, 0xF2, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF6, 0xB8, 0x9B, 0x83, 0xF4, 0x00, 0x6C, +0xC3, 0xF6, 0xAC, 0x9B, 0x83, 0xF4, 0x00, 0x6C, 0x0F, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, 0x41, 0x60, 0x90, 0x67, 0x00, 0x6D, 0x3C, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0xB8, 0x9B, 0x83, 0xF2, +0x20, 0x6B, 0x83, 0xF2, 0xBC, 0x9B, 0x83, 0xF2, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x01, 0x6E, 0x40, 0xF4, 0x14, 0x6C, 0x80, 0x6D, 0x80, 0x18, -0x9A, 0x28, 0x90, 0x67, 0x02, 0x6D, 0x00, 0x18, +0xA9, 0x28, 0x90, 0x67, 0x02, 0x6D, 0x00, 0x18, 0xA3, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, -0xB8, 0x9B, 0x83, 0xF4, 0x00, 0x6C, 0x22, 0x6E, +0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, +0xAC, 0x9B, 0x83, 0xF4, 0x00, 0x6C, 0x22, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, 0x16, 0x60, 0x08, 0x92, 0x01, 0x72, 0x06, 0x61, 0x07, 0x93, 0x01, 0x73, @@ -37285,1669 +37635,1856 @@ u8 array_mp_8822c_fw_nic[] = { 0x08, 0x92, 0x02, 0x72, 0x06, 0x61, 0x07, 0x93, 0x02, 0x73, 0x03, 0x61, 0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, 0x80, 0x18, -0xD2, 0x58, 0x90, 0x67, 0x80, 0x18, 0xE0, 0x56, +0x38, 0x59, 0x90, 0x67, 0x80, 0x18, 0x46, 0x57, 0x52, 0x98, 0x40, 0xA2, 0x04, 0x22, 0x90, 0x67, -0xB1, 0x67, 0x80, 0x18, 0x6B, 0x55, 0x90, 0x67, -0x80, 0x18, 0xA3, 0x59, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x58, 0x9A, 0x64, 0x98, 0x6C, 0xEA, -0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x46, 0xF1, -0x18, 0x4C, 0xB1, 0x67, 0x80, 0x18, 0x48, 0x43, +0xB1, 0x67, 0x80, 0x18, 0xD1, 0x55, 0x90, 0x67, +0x80, 0x18, 0x15, 0x5A, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF2, 0x5C, 0x9A, 0x64, 0x98, 0x6C, 0xEA, +0x07, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0x86, 0xF1, +0x08, 0x4C, 0xB1, 0x67, 0x80, 0x18, 0x52, 0x43, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x26, 0x67, 0x4C, 0xED, 0x04, 0x67, -0x0B, 0xD7, 0x4C, 0xE9, 0x80, 0x18, 0xC4, 0x5C, +0x0B, 0xD7, 0x4C, 0xE9, 0x80, 0x18, 0x36, 0x5D, 0x00, 0x6B, 0x09, 0x22, 0x0B, 0x96, 0x90, 0x67, -0xB1, 0x67, 0x80, 0x18, 0x00, 0x5A, 0x4B, 0xEB, +0xB1, 0x67, 0x80, 0x18, 0x72, 0x5A, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x43, 0x67, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0xC9, 0xF0, 0x18, 0x49, 0x62, 0xA1, 0x20, 0x6A, +0x6C, 0xEA, 0x22, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF2, 0x56, 0xA2, 0x07, 0x6B, 0xFF, 0x6D, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x4C, 0x9A, 0x01, 0x6C, 0x6C, 0xED, 0x40, 0xEA, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF2, +0x76, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x44, 0x9A, 0x07, 0x6C, 0x6C, 0xEC, 0x00, 0x6D, +0x40, 0xEA, 0x06, 0x2A, 0xC8, 0x70, 0x04, 0x60, +0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0xED, 0x17, +0x62, 0xA1, 0x40, 0x6A, 0x6C, 0xEA, 0x08, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0xFF, 0x6C, 0xA4, 0x67, 0x07, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x78, 0x9A, +0xFF, 0x6C, 0x03, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x09, 0x6B, 0xBD, 0x67, +0xFF, 0x6A, 0x70, 0xC5, 0x07, 0x6B, 0x4C, 0xEC, +0x6F, 0xCD, 0x04, 0x6B, 0x8E, 0xEB, 0x92, 0xC5, +0x31, 0x23, 0x05, 0x74, 0x3E, 0x60, 0x4A, 0x2C, +0x30, 0xF0, 0x20, 0x6B, 0x4F, 0xF7, 0x98, 0xA3, +0x20, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x1C, 0x23, +0x40, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x04, 0x23, +0x01, 0x6A, 0x7D, 0x67, 0x53, 0xC3, 0x16, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF6, 0x64, 0x9B, +0x60, 0xA3, 0x07, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF6, 0x68, 0x9B, 0x60, 0xA3, 0x6C, 0xEA, +0x04, 0x22, 0x01, 0x6A, 0x9D, 0x67, 0x53, 0xC4, +0x05, 0x10, 0xBD, 0x67, 0x53, 0xC5, 0x02, 0x10, +0x5D, 0x67, 0x73, 0xC2, 0x00, 0x6A, 0x7D, 0x67, +0x54, 0xC3, 0x55, 0xC3, 0x56, 0xC3, 0x57, 0xC3, +0x58, 0xC3, 0x44, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x24, 0xF6, 0x8C, 0xAA, +0xBD, 0x67, 0x75, 0xC5, 0x82, 0x32, 0x93, 0xC5, +0x54, 0xC5, 0x76, 0xC5, 0x77, 0xC5, 0x78, 0xC5, +0x35, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0x00, 0xF0, +0x13, 0x04, 0x6B, 0xF2, 0x1A, 0x4D, 0x05, 0x6E, +0x40, 0xEA, 0x28, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x04, 0xF6, 0x6E, 0xA2, +0x9D, 0x67, 0xBD, 0x67, 0x73, 0xC4, 0x04, 0xF6, +0x8F, 0xA2, 0x94, 0xC5, 0x04, 0xF6, 0x90, 0xA2, +0x95, 0xC5, 0x04, 0xF6, 0x91, 0xA2, 0x96, 0xC5, +0x04, 0xF6, 0x92, 0xA2, 0x97, 0xC5, 0x04, 0xF6, +0x93, 0xA2, 0x98, 0xC5, 0xC4, 0xF5, 0xD8, 0xA2, +0x01, 0x6C, 0x6C, 0xEC, 0x21, 0x6B, 0x6B, 0xEB, +0x94, 0x35, 0xCC, 0xEB, 0xAD, 0xEB, 0x41, 0x6D, +0xAB, 0xED, 0x98, 0x34, 0xAC, 0xEB, 0x8D, 0xEB, +0xC4, 0xF5, 0x78, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, +0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x0A, 0x6A, 0x7D, 0x67, +0x50, 0xC3, 0x06, 0x6A, 0x4F, 0xCB, 0x40, 0xA4, +0x52, 0xC3, 0x41, 0xA4, 0x53, 0xC3, 0x42, 0xA4, +0x54, 0xC3, 0x43, 0xA4, 0x55, 0xC3, 0x44, 0xA4, +0x56, 0xC3, 0x45, 0xA4, 0x04, 0x04, 0x57, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, +0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x0B, 0x6B, 0x4C, 0xED, 0xCC, 0xEA, 0xDD, 0x67, +0x70, 0xC6, 0x07, 0x6B, 0x6F, 0xCE, 0x92, 0xC6, +0x17, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x04, 0xF6, 0x6F, 0xA2, 0x73, 0xC6, +0x04, 0xF6, 0x6D, 0xA2, 0x74, 0xC6, 0x04, 0xF6, +0x70, 0xA2, 0x75, 0xC6, 0x04, 0xF6, 0x71, 0xA2, +0x76, 0xC6, 0x04, 0xF6, 0x72, 0xA2, 0x04, 0xF6, +0x53, 0xA2, 0x77, 0xC6, 0x58, 0xC6, 0x07, 0x10, +0x7D, 0x67, 0xB3, 0xC3, 0x54, 0xC3, 0x95, 0xC3, +0x96, 0xC3, 0x97, 0xC3, 0x98, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, +0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x15, 0x6A, 0x7D, 0x67, +0x50, 0xC3, 0x01, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x92, 0xC3, +0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x09, 0x6B, 0xBD, 0x67, 0xFF, 0x6A, 0x70, 0xC5, -0x07, 0x6B, 0x4C, 0xEC, 0x6F, 0xCD, 0x04, 0x6B, -0x8E, 0xEB, 0x92, 0xC5, 0x31, 0x23, 0x05, 0x74, -0x3E, 0x60, 0x4A, 0x2C, 0x30, 0xF0, 0x20, 0x6B, -0xAF, 0xF6, 0x90, 0xA3, 0x20, 0x6B, 0x8C, 0xEB, -0x4C, 0xEB, 0x1C, 0x23, 0x40, 0x6B, 0x8C, 0xEB, -0x4C, 0xEB, 0x04, 0x23, 0x01, 0x6A, 0x7D, 0x67, -0x53, 0xC3, 0x16, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF6, 0x70, 0x9B, 0x60, 0xA3, 0x07, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, 0x74, 0x9B, -0x60, 0xA3, 0x6C, 0xEA, 0x04, 0x22, 0x01, 0x6A, -0x9D, 0x67, 0x53, 0xC4, 0x05, 0x10, 0xBD, 0x67, -0x53, 0xC5, 0x02, 0x10, 0x5D, 0x67, 0x73, 0xC2, -0x00, 0x6A, 0x7D, 0x67, 0x54, 0xC3, 0x55, 0xC3, -0x56, 0xC3, 0x57, 0xC3, 0x58, 0xC3, 0x44, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA4, 0xF5, 0x94, 0xAA, 0xBD, 0x67, 0x75, 0xC5, -0x82, 0x32, 0x93, 0xC5, 0x54, 0xC5, 0x76, 0xC5, -0x77, 0xC5, 0x78, 0xC5, 0x35, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, -0x20, 0x6D, 0x00, 0xF0, 0x13, 0x04, 0x2B, 0xF2, -0x12, 0x4D, 0x05, 0x6E, 0x40, 0xEA, 0x28, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA4, 0xF5, 0x6E, 0xA2, 0x9D, 0x67, 0xBD, 0x67, -0x73, 0xC4, 0xA4, 0xF5, 0x8F, 0xA2, 0x94, 0xC5, -0xA4, 0xF5, 0x90, 0xA2, 0x95, 0xC5, 0xA4, 0xF5, -0x91, 0xA2, 0x96, 0xC5, 0xA4, 0xF5, 0x92, 0xA2, -0x97, 0xC5, 0xA4, 0xF5, 0x93, 0xA2, 0x98, 0xC5, -0x64, 0xF5, 0xD8, 0xA2, 0x01, 0x6C, 0x6C, 0xEC, -0x21, 0x6B, 0x6B, 0xEB, 0x94, 0x35, 0xCC, 0xEB, -0xAD, 0xEB, 0x41, 0x6D, 0xAB, 0xED, 0x98, 0x34, -0xAC, 0xEB, 0x8D, 0xEB, 0x64, 0xF5, 0x78, 0xC2, +0x27, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x08, 0x6A, +0x4F, 0xCB, 0x52, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xE4, 0xF5, 0x76, 0xA2, +0x9D, 0x67, 0x73, 0xC4, 0xE4, 0xF5, 0x77, 0xA2, +0x74, 0xC4, 0xE4, 0xF5, 0x7E, 0xA2, 0x75, 0xC4, +0xE4, 0xF5, 0x7C, 0xA2, 0x76, 0xC4, 0xE4, 0xF5, +0x7D, 0xA2, 0x77, 0xC4, 0x04, 0xF6, 0x65, 0xA2, +0x04, 0xF6, 0x47, 0xA2, 0x78, 0xC4, 0x59, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x0A, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x06, 0x6A, -0x4F, 0xCB, 0x40, 0xA4, 0x52, 0xC3, 0x41, 0xA4, -0x53, 0xC3, 0x42, 0xA4, 0x54, 0xC3, 0x43, 0xA4, -0x55, 0xC3, 0x44, 0xA4, 0x56, 0xC3, 0x45, 0xA4, -0x04, 0x04, 0x57, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x09, 0x97, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x0B, 0x6B, 0x4C, 0xED, -0xCC, 0xEA, 0xDD, 0x67, 0x70, 0xC6, 0x07, 0x6B, -0x6F, 0xCE, 0x92, 0xC6, 0x17, 0x24, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, -0x6F, 0xA2, 0x73, 0xC6, 0xA4, 0xF5, 0x6D, 0xA2, -0x74, 0xC6, 0xA4, 0xF5, 0x70, 0xA2, 0x75, 0xC6, -0xA4, 0xF5, 0x71, 0xA2, 0x76, 0xC6, 0xA4, 0xF5, -0x72, 0xA2, 0xA4, 0xF5, 0x53, 0xA2, 0x77, 0xC6, -0x58, 0xC6, 0x07, 0x10, 0x7D, 0x67, 0xB3, 0xC3, -0x54, 0xC3, 0x95, 0xC3, 0x96, 0xC3, 0x97, 0xC3, -0x98, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x15, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x01, 0x6A, -0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x5C, 0x9A, 0x92, 0xC3, 0x04, 0x04, 0x40, 0xEA, -0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x27, 0x6A, 0x7D, 0x67, -0x50, 0xC3, 0x08, 0x6A, 0x4F, 0xCB, 0x52, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x84, 0xF5, 0x76, 0xA2, 0x9D, 0x67, 0x73, 0xC4, -0x84, 0xF5, 0x77, 0xA2, 0x74, 0xC4, 0x84, 0xF5, -0x7E, 0xA2, 0x75, 0xC4, 0x84, 0xF5, 0x7C, 0xA2, -0x76, 0xC4, 0x84, 0xF5, 0x7D, 0xA2, 0x77, 0xC4, -0xA4, 0xF5, 0x65, 0xA2, 0xA4, 0xF5, 0x47, 0xA2, -0x78, 0xC4, 0x59, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0x5D, 0x67, 0x7D, 0x67, 0x92, 0xC2, 0x46, 0x6A, +0x50, 0xC3, 0x07, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x04, 0xF6, +0x6E, 0xA2, 0x9D, 0x67, 0x73, 0xC4, 0x04, 0xF6, +0x6F, 0xA2, 0x74, 0xC4, 0x04, 0xF6, 0x70, 0xA2, +0x75, 0xC4, 0x04, 0xF6, 0x71, 0xA2, 0x76, 0xC4, +0x04, 0xF6, 0x72, 0xA2, 0x04, 0xF6, 0x53, 0xA2, +0x77, 0xC4, 0x58, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, 0x6C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x54, 0x9A, +0x60, 0xDA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x78, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x40, 0x9A, -0x60, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF6, 0x64, 0x9A, 0xFC, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF6, 0x48, 0x9A, 0x0D, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF2, 0x08, 0x4A, -0x74, 0x9A, 0x07, 0x23, 0x30, 0xF0, 0x20, 0x6C, -0xC3, 0xF6, 0x80, 0x9C, 0x60, 0xDC, 0x00, 0x6B, -0x74, 0xDA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x64, 0xF5, 0x99, 0xA0, 0x01, 0x6B, -0x43, 0x67, 0x8C, 0xEA, 0x57, 0x2A, 0x30, 0xF0, -0x20, 0x6D, 0x89, 0xF0, 0x58, 0xDD, 0x30, 0xF0, -0x20, 0x6D, 0x89, 0xF0, 0x5C, 0xC5, 0x30, 0xF0, -0x20, 0x6A, 0x40, 0xF5, 0x54, 0x9A, 0x8D, 0xEB, -0x64, 0xF5, 0x79, 0xC0, 0x00, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x58, 0x9A, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF5, 0x5C, 0x9A, 0x00, 0x6C, 0x40, 0xEA, -0xE0, 0xF0, 0x7E, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0x10, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF6, 0x44, 0x9A, 0x02, 0xF0, -0x00, 0x6C, 0x60, 0x9A, 0x8D, 0xEB, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6C, 0x60, 0x9A, 0xA3, 0xF2, -0x98, 0x9C, 0x8D, 0xEB, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0x00, 0xF1, -0x76, 0xA0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, -0x4C, 0x9A, 0x07, 0x6C, 0x6C, 0xEC, 0x00, 0x6D, -0x40, 0xEA, 0xE0, 0xF0, 0x9E, 0xA0, 0x04, 0x6B, -0x8C, 0xEB, 0x10, 0x23, 0x84, 0xF5, 0x78, 0x98, -0x43, 0xEB, 0x0C, 0x60, 0x84, 0xF5, 0x9F, 0xA0, -0x6F, 0xE2, 0x80, 0x34, 0x88, 0x34, 0x63, 0xEC, -0x05, 0x60, 0x84, 0xF5, 0x5D, 0xA0, 0x01, 0x4A, -0x84, 0xF5, 0x5D, 0xC0, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, 0x64, 0xA2, -0x01, 0x4B, 0xA4, 0xF5, 0x64, 0xC2, 0x20, 0xE8, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF0, 0x58, 0x9A, -0x14, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF0, -0x7C, 0xA2, 0x0F, 0x23, 0x00, 0x6B, 0x89, 0xF0, -0x7C, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, -0x54, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x40, 0xF5, 0x58, 0x9A, 0x01, 0x6C, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x93, 0x5E, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x58, 0x9A, 0x11, 0x22, 0x01, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF0, 0x7C, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x54, 0x9A, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF5, 0x58, 0x9A, 0x00, 0x6C, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0x80, 0xF2, 0x4C, 0x99, -0x04, 0x67, 0xB0, 0x67, 0x04, 0x04, 0x05, 0x6E, -0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x99, 0x30, 0xF0, -0x20, 0x6C, 0x89, 0xF0, 0x10, 0x4C, 0xB0, 0x67, -0x05, 0x6E, 0x40, 0xEA, 0x60, 0xA0, 0x01, 0x6A, -0x4C, 0xEB, 0x05, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x89, 0xF0, 0x55, 0xC3, 0x06, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x60, 0xF5, 0x4C, 0x9A, 0x90, 0x67, -0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0xC0, 0xA4, 0x00, 0xF1, 0xE1, 0xA3, 0x02, 0x6A, -0x01, 0x6D, 0x4B, 0xEA, 0xAC, 0xEE, 0xEC, 0xEA, -0xCD, 0xEA, 0x00, 0xF1, 0x41, 0xC3, 0x80, 0xA4, -0x86, 0x34, 0xAC, 0xEC, 0x84, 0x35, 0x03, 0x6C, -0x8B, 0xEC, 0x4C, 0xEC, 0xAD, 0xEC, 0x00, 0xF1, -0x81, 0xC3, 0x20, 0xE8, 0x40, 0xA4, 0x0C, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, 0x60, 0x9A, -0xFF, 0x6C, 0x18, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xAF, 0xF6, 0x70, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x08, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF6, 0x60, 0x9A, 0xE7, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA0, 0xA4, 0x00, 0xF1, 0xC8, 0xA2, 0x02, 0x6B, -0x01, 0x6C, 0x6B, 0xEB, 0x8C, 0xED, 0xCC, 0xEB, -0xAD, 0xEB, 0x00, 0xF1, 0x68, 0xC2, 0x8C, 0xEB, -0x01, 0x23, 0x18, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF6, 0x40, 0x9A, 0x60, 0xC2, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xA4, 0x00, 0xF1, -0xCF, 0xA2, 0x02, 0x6B, 0x01, 0x6C, 0x6B, 0xEB, -0x8C, 0xED, 0xCC, 0xEB, 0xAD, 0xEB, 0x00, 0xF1, -0x6F, 0xC2, 0x8C, 0xEB, 0xFF, 0x6A, 0x44, 0x23, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF6, 0x84, 0x9B, -0xE5, 0x6D, 0xAB, 0xED, 0x60, 0xA4, 0x4C, 0xEB, -0xAC, 0xEB, 0xA4, 0x6D, 0xAD, 0xEB, 0x60, 0xDC, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF6, 0x68, 0x9B, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF6, 0x4C, 0x9A, 0x42, 0xF2, -0x15, 0x6B, 0x01, 0x6C, 0x60, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0x40, 0xF5, 0x50, 0x9A, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x64, 0x9A, -0x03, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, 0x70, 0x9A, -0xFE, 0xF5, 0x1C, 0x4C, 0x40, 0x9B, 0x8C, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, -0x74, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, -0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF6, -0x9C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x00, 0xF1, 0xB6, 0xA2, 0x07, 0x6C, -0x6C, 0xEC, 0x08, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, -0x8D, 0xEB, 0x00, 0xF1, 0x76, 0xC2, 0x20, 0xE8, -0xFC, 0x63, 0x07, 0x62, 0x01, 0x6A, 0x7D, 0x67, -0x50, 0xC3, 0x02, 0x6A, 0x51, 0xC3, 0x03, 0x6A, -0x52, 0xC3, 0x04, 0x6C, 0x04, 0x6A, 0x04, 0x05, -0x53, 0xC3, 0x00, 0x18, 0x80, 0xC1, 0x07, 0x97, -0x00, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x6A, 0x00, 0x6D, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, +0x5C, 0x9A, 0x0D, 0x6B, 0x38, 0x6C, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x40, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF2, +0x10, 0x4A, 0x74, 0x9A, 0x07, 0x23, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF6, 0x94, 0x9C, 0x60, 0xDC, +0x00, 0x6B, 0x74, 0xDA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x01, 0x74, 0xA0, 0xF0, 0x15, 0x60, +0x06, 0x24, 0x02, 0x74, 0x2B, 0x60, 0x04, 0x74, +0xE0, 0xF0, 0x02, 0x60, 0xD9, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, +0x9A, 0xA2, 0x20, 0x6B, 0xFF, 0x6D, 0x8C, 0xEB, +0x15, 0x2B, 0x10, 0x6B, 0x8C, 0xEB, 0xAC, 0xEB, +0x11, 0x23, 0xC4, 0xF5, 0x98, 0xA2, 0x01, 0x6B, +0x8D, 0xEB, 0xC4, 0xF5, 0x78, 0xC2, 0x00, 0xF1, +0x56, 0xA2, 0x07, 0x6B, 0x00, 0x6C, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x4C, 0x9A, +0x6C, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0x00, 0x6D, +0x05, 0x6E, 0xB9, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, 0x9A, 0xA2, +0x20, 0x6B, 0x8C, 0xEB, 0x07, 0x2B, 0xE0, 0xF0, +0x7E, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x43, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xE4, 0xF5, 0x04, 0xA2, +0xE0, 0xF0, 0x5B, 0xA2, 0x43, 0xE0, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0x20, 0x58, 0x03, 0x61, +0xEF, 0xF7, 0x1F, 0x68, 0x03, 0x10, 0x00, 0x30, +0x08, 0x30, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xE0, 0xF0, 0x9E, 0xA3, +0x08, 0x6A, 0x8C, 0xEA, 0x08, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF4, 0x54, 0x9A, 0xA0, 0xF0, +0x8D, 0xA3, 0xB0, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, +0xBA, 0xA2, 0x20, 0x6C, 0xFF, 0x6B, 0x8C, 0xED, +0x14, 0x25, 0xE0, 0xF0, 0xBE, 0xA2, 0xAC, 0xEC, +0x6C, 0xEC, 0x0F, 0x24, 0x00, 0xF1, 0x56, 0xA2, +0x07, 0x6F, 0x02, 0x36, 0x4C, 0xEF, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x44, 0x9A, 0xB0, 0x67, +0x00, 0x6C, 0x6C, 0xED, 0x6C, 0xEE, 0x6C, 0xEF, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xE0, 0xF0, 0x9A, 0xA0, 0x20, 0x6A, +0xFF, 0x6B, 0x8C, 0xEA, 0x5D, 0x2A, 0x10, 0x6A, +0x8C, 0xEA, 0x6C, 0xEA, 0x17, 0x22, 0xC4, 0xF5, +0x98, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0xC4, 0xF5, 0x58, 0xC0, 0x00, 0xF1, 0x56, 0xA0, +0x07, 0x6D, 0x01, 0x6C, 0x4C, 0xED, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x4C, 0x9A, 0x6C, 0xED, +0x40, 0xEA, 0xE4, 0xF5, 0x56, 0xA0, 0x01, 0x4A, +0xE4, 0xF5, 0x56, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x6B, 0xF2, 0x7D, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x3B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x50, 0x9A, 0xFF, 0x6C, 0x6F, 0x6D, 0x06, 0x6E, +0x32, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xE0, 0xF0, 0xBD, 0xA2, 0x01, 0x6B, +0xFF, 0x6C, 0xAC, 0xEB, 0x07, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, +0x0D, 0x6E, 0x21, 0x10, 0xE0, 0xF0, 0x7A, 0xA2, +0x20, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, 0x08, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0xFF, 0x6C, 0x6F, 0x6D, 0x0E, 0x6E, 0x13, 0x10, +0x10, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, 0x10, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0xFF, 0x6C, 0x6F, 0x6D, 0x0F, 0x6E, 0x07, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0xFF, 0x6C, 0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, -0x81, 0xA2, 0x03, 0x6B, 0x8C, 0xEB, 0x03, 0x73, -0x1D, 0x61, 0xE0, 0xF0, 0x7E, 0xA2, 0x04, 0x6A, -0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x16, 0x22, -0x30, 0xF0, 0x20, 0x68, 0x89, 0xF0, 0x58, 0x98, -0x11, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x65, 0xDD, -0x89, 0xF0, 0x78, 0x98, 0x43, 0xEB, 0x0A, 0x60, -0x6B, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF7, -0x80, 0x9B, 0x01, 0x6B, 0x43, 0xEC, 0x58, 0x67, -0x6E, 0xEA, 0x01, 0x10, 0x00, 0x6A, 0x05, 0x97, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xC4, 0xF5, +0x99, 0xA0, 0x01, 0x6B, 0x43, 0x67, 0x8C, 0xEA, +0x80, 0xF0, 0x01, 0x2A, 0x30, 0xF0, 0x20, 0x6D, +0xE9, 0xF0, 0x40, 0xDD, 0x30, 0xF0, 0x20, 0x6D, +0xE9, 0xF0, 0x44, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF5, 0x54, 0x9A, 0x8D, 0xEB, 0xC4, 0xF5, +0x79, 0xC0, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x58, 0x9A, 0x00, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x5C, 0x9A, 0x00, 0x6C, 0x40, 0xEA, 0xE0, 0xF0, +0x7E, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x10, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF6, 0x58, 0x9A, 0x02, 0xF0, 0x00, 0x6C, +0x60, 0x9A, 0x8D, 0xEB, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6C, 0x60, 0x9A, 0xC3, 0xF2, 0x9C, 0x9C, +0x8D, 0xEB, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0x00, 0xF1, 0x76, 0xA0, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x4C, 0x9A, +0x07, 0x6C, 0x6C, 0xEC, 0x00, 0x6D, 0x40, 0xEA, +0xE4, 0xF5, 0x78, 0x98, 0x43, 0xEB, 0x77, 0xE2, +0x02, 0x61, 0x6F, 0xED, 0xB5, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x24, 0xF6, +0x88, 0xA3, 0xA2, 0x35, 0xAA, 0x35, 0x0A, 0x5C, +0x02, 0x61, 0x14, 0x5C, 0x03, 0x60, 0x6D, 0xE4, +0x04, 0xF6, 0xB4, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x24, 0xF6, 0x88, 0xA3, +0x14, 0x6D, 0x01, 0x4C, 0x24, 0xF6, 0x88, 0xC3, +0x24, 0xF6, 0x88, 0xA3, 0xAE, 0xEC, 0x02, 0x2C, +0x24, 0xF6, 0x88, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xE0, 0xF0, 0xBE, 0xA3, +0x04, 0x6C, 0xAC, 0xEC, 0x10, 0x24, 0xE4, 0xF5, +0x98, 0x9B, 0x43, 0xEC, 0x0C, 0x60, 0xE4, 0xF5, +0xBF, 0xA3, 0x8B, 0xE2, 0xA0, 0x35, 0xA8, 0x35, +0x43, 0xED, 0x05, 0x60, 0xE4, 0xF5, 0x5D, 0xA3, +0x01, 0x4A, 0xE4, 0xF5, 0x5D, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, -0x06, 0xD4, 0x2B, 0xF1, 0x18, 0x4B, 0xA4, 0xF5, -0xA1, 0xA3, 0x03, 0x6C, 0xAC, 0xEC, 0x4C, 0xEC, -0x0D, 0x2C, 0xA4, 0xF5, 0x42, 0xA3, 0x01, 0x4A, -0xA4, 0xF5, 0x42, 0xC3, 0xA4, 0xF5, 0x41, 0xA3, -0xA4, 0xF5, 0x82, 0xA3, 0x4A, 0x32, 0x42, 0xEC, -0x4B, 0x60, 0xAD, 0x10, 0xA4, 0xF5, 0x41, 0xA3, -0xA4, 0xF5, 0x82, 0xA3, 0x4A, 0x32, 0x42, 0xEC, -0x0E, 0x60, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x31, 0x6C, 0x00, 0x6D, 0xEF, 0xF7, 0x0D, 0x4C, -0xC5, 0x67, 0x01, 0x6F, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, -0x62, 0xA2, 0x29, 0x23, 0xA4, 0xF5, 0x61, 0xA2, -0x03, 0x6A, 0x6C, 0xEA, 0x03, 0x6B, 0x6E, 0xEA, -0x0C, 0x2A, 0x04, 0xD2, 0x10, 0xF0, 0x31, 0x6C, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0xCF, 0xF6, 0x09, 0x4C, 0x00, 0x6D, 0x34, 0x6E, -0x0C, 0x10, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x31, 0x6C, 0xCF, 0xF6, 0x09, 0x4C, 0x00, 0x6D, -0x66, 0x6E, 0x01, 0x6F, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, -0x62, 0xA2, 0xFF, 0x4B, 0x03, 0x10, 0xA4, 0xF5, -0x61, 0xA2, 0x6A, 0x33, 0xA4, 0xF5, 0x62, 0xC2, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xE0, 0xF0, 0x7A, 0xA0, 0x01, 0x6A, 0xFF, 0x69, -0x6C, 0xEA, 0x34, 0x22, 0x00, 0x6A, 0x64, 0xF5, -0x78, 0xA0, 0x64, 0xF5, 0x5B, 0xC0, 0x80, 0x6A, -0x4B, 0xEA, 0x6D, 0xEA, 0x64, 0xF5, 0x58, 0xC0, -0x80, 0x18, 0x32, 0x5F, 0x06, 0x22, 0x06, 0x92, -0x01, 0x72, 0x49, 0x61, 0x80, 0x18, 0xA6, 0x5E, -0x46, 0x10, 0xE0, 0xF0, 0x9A, 0xA0, 0x04, 0x6B, -0x8C, 0xEB, 0x2C, 0xEB, 0x15, 0x23, 0x84, 0xF5, -0x94, 0xA0, 0x84, 0xF5, 0x75, 0xA0, 0x63, 0xEC, -0x08, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF5, -0x8C, 0x98, 0xC3, 0xF6, 0x60, 0x9B, 0x80, 0xDB, -0x05, 0x10, 0x00, 0x18, 0x9E, 0xD8, 0x84, 0xF5, -0x54, 0xA0, 0x01, 0x4A, 0x84, 0xF5, 0x54, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x48, 0x9A, -0x40, 0xEA, 0x25, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF6, 0x5C, 0x9A, 0x60, 0xAA, 0xEF, 0xF7, -0x1F, 0x6A, 0x6C, 0xEA, 0xA4, 0xF5, 0x54, 0xC8, -0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF2, 0x56, 0xCB, -0xA4, 0xF5, 0x54, 0xA8, 0x10, 0x6B, 0x6C, 0xEA, -0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, -0x64, 0x9A, 0x03, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, -0x8D, 0xEA, 0x2C, 0xEA, 0x07, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF6, 0x64, 0x9A, 0xFC, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x80, 0x18, -0x4A, 0x5F, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x04, 0xF6, 0x64, 0xA2, 0x01, 0x4B, 0x04, 0xF6, +0x64, 0xC2, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x75, 0xA2, 0x0C, 0x23, 0x00, 0x6B, -0x89, 0xF0, 0x75, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF5, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x89, 0xF0, 0x10, 0x4C, 0x40, 0xEA, 0x01, 0x6C, -0x80, 0x18, 0x4A, 0x5F, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA4, 0xF5, 0xC1, 0xA2, 0x03, 0x6B, -0xFF, 0x6D, 0xCC, 0xEB, 0xAC, 0xEB, 0xAC, 0xEC, -0x09, 0x2B, 0xA4, 0xF5, 0xA1, 0xA2, 0xA4, 0xF5, -0xC2, 0xA2, 0xAA, 0x35, 0xA2, 0xEE, 0x55, 0x61, -0xA4, 0xF5, 0x62, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE0, 0xF0, 0xBA, 0xA2, -0x01, 0x6B, 0xAC, 0xEB, 0x4A, 0x23, 0x64, 0xF5, -0x5B, 0xA2, 0x47, 0x2A, 0x01, 0x74, 0x07, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF0, 0x7D, 0xA2, -0x01, 0x4B, 0x89, 0xF0, 0x7D, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x89, 0xF0, 0x7D, 0xA2, 0x14, 0x5B, -0x05, 0x61, 0x00, 0x6B, 0x89, 0xF0, 0x7D, 0xC2, -0x80, 0x18, 0x2E, 0x5E, 0x80, 0x18, 0x32, 0x5F, -0x1C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF0, -0x58, 0x9A, 0x2B, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF0, 0x5C, 0xA2, 0x26, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF2, 0xD3, 0xA2, 0x00, 0x6A, +0xE9, 0xF0, 0x40, 0x9A, 0x14, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE9, 0xF0, 0x64, 0xA2, 0x0F, 0x23, +0x00, 0x6B, 0xE9, 0xF0, 0x64, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF5, 0x54, 0x9A, 0x01, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x58, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xD4, 0x5F, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF0, 0x40, 0x9A, +0x11, 0x22, 0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF0, 0x64, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF5, 0x54, 0x9A, 0x00, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x58, 0x9A, +0x00, 0x6C, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0x80, 0xF2, 0x4C, 0x99, 0x04, 0x67, 0xB0, 0x67, +0x04, 0x04, 0x05, 0x6E, 0x40, 0xEA, 0x80, 0xF2, +0x4C, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0xC9, 0xF0, +0x18, 0x4C, 0xB0, 0x67, 0x05, 0x6E, 0x40, 0xEA, +0x60, 0xA0, 0x01, 0x6A, 0x4C, 0xEB, 0x05, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF0, 0x5D, 0xC3, +0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x4C, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xC0, 0xA4, 0x00, 0xF1, +0xE1, 0xA3, 0x02, 0x6A, 0x01, 0x6D, 0x4B, 0xEA, +0xAC, 0xEE, 0xEC, 0xEA, 0xCD, 0xEA, 0x00, 0xF1, +0x41, 0xC3, 0x80, 0xA4, 0x86, 0x34, 0xAC, 0xEC, +0x84, 0x35, 0x03, 0x6C, 0x8B, 0xEC, 0x4C, 0xEC, +0xAD, 0xEC, 0x00, 0xF1, 0x81, 0xC3, 0x20, 0xE8, +0x40, 0xA4, 0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF6, 0x74, 0x9A, 0xFF, 0x6C, 0x18, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x4F, 0xF7, 0x78, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, +0x74, 0x9A, 0xE7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xA4, 0x00, 0xF1, +0xC8, 0xA2, 0x02, 0x6B, 0x01, 0x6C, 0x6B, 0xEB, +0x8C, 0xED, 0xCC, 0xEB, 0xAD, 0xEB, 0x00, 0xF1, +0x68, 0xC2, 0x8C, 0xEB, 0x01, 0x23, 0x18, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, 0x54, 0x9A, +0x60, 0xC2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA0, 0xA4, 0x00, 0xF1, 0xCF, 0xA2, 0x02, 0x6B, +0x01, 0x6C, 0x6B, 0xEB, 0x8C, 0xED, 0xCC, 0xEB, +0xAD, 0xEB, 0x00, 0xF1, 0x6F, 0xC2, 0x8C, 0xEB, +0xFF, 0x6A, 0x44, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF6, 0x98, 0x9B, 0xE5, 0x6D, 0xAB, 0xED, +0x60, 0xA4, 0x4C, 0xEB, 0xAC, 0xEB, 0xA4, 0x6D, +0xAD, 0xEB, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF6, 0x7C, 0x9B, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF7, +0x40, 0x9A, 0x42, 0xF2, 0x15, 0x6B, 0x01, 0x6C, +0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF6, 0x78, 0x9A, 0x03, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF7, 0x64, 0x9A, 0xFE, 0xF5, 0x1C, 0x4C, +0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF7, 0x68, 0x9A, 0x7F, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF7, 0x6C, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x03, 0xF7, 0x90, 0x9C, 0x40, 0x9B, +0x8C, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x60, 0xA4, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x00, 0xF1, +0xB6, 0xA2, 0x07, 0x6C, 0x6C, 0xEC, 0x08, 0x6B, +0x6B, 0xEB, 0xAC, 0xEB, 0x8D, 0xEB, 0x00, 0xF1, +0x76, 0xC2, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x01, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x02, 0x6A, +0x51, 0xC3, 0x03, 0x6A, 0x52, 0xC3, 0x04, 0x6C, +0x04, 0x6A, 0x04, 0x05, 0x53, 0xC3, 0x00, 0x18, +0x80, 0xC1, 0x07, 0x97, 0x00, 0x6A, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x04, 0xF6, 0x81, 0xA2, 0x03, 0x6B, +0x8C, 0xEB, 0x03, 0x73, 0x1D, 0x61, 0xE0, 0xF0, +0x7E, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x16, 0x22, 0x30, 0xF0, 0x20, 0x68, +0xE9, 0xF0, 0x40, 0x98, 0x11, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xD9, 0xDE, 0xE9, 0xF0, 0x60, 0x98, +0x43, 0xEB, 0x0A, 0x60, 0x6B, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF7, 0x94, 0x9B, 0x01, 0x6B, +0x43, 0xEC, 0x58, 0x67, 0x6E, 0xEA, 0x01, 0x10, +0x00, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0x06, 0xD4, 0x8B, 0xF1, +0x00, 0x4B, 0x04, 0xF6, 0xA1, 0xA3, 0x03, 0x6C, +0xAC, 0xEC, 0x4C, 0xEC, 0x0D, 0x2C, 0x04, 0xF6, +0x42, 0xA3, 0x01, 0x4A, 0x04, 0xF6, 0x42, 0xC3, +0x04, 0xF6, 0x41, 0xA3, 0x04, 0xF6, 0x82, 0xA3, +0x4A, 0x32, 0x42, 0xEC, 0x4B, 0x60, 0xAD, 0x10, +0x04, 0xF6, 0x41, 0xA3, 0x04, 0xF6, 0x82, 0xA3, +0x4A, 0x32, 0x42, 0xEC, 0x0E, 0x60, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x10, 0xF0, 0x31, 0x6C, 0x4F, 0xF2, -0x0D, 0x4C, 0x00, 0x6D, 0x01, 0x6F, 0x40, 0xEA, -0x14, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x4C, 0x9A, 0x10, 0xF0, 0x32, 0x6C, 0x00, 0x6D, +0x10, 0xF5, 0x05, 0x4C, 0xC5, 0x67, 0x01, 0x6F, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x04, 0xF6, 0x62, 0xA2, 0x29, 0x23, +0x04, 0xF6, 0x61, 0xA2, 0x03, 0x6A, 0x6C, 0xEA, +0x03, 0x6B, 0x6E, 0xEA, 0x0C, 0x2A, 0x04, 0xD2, +0x10, 0xF0, 0x32, 0x6C, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0xD0, 0xF3, 0x0D, 0x4C, +0x00, 0x6D, 0x34, 0x6E, 0x0C, 0x10, 0x00, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x32, 0x6C, 0xD0, 0xF3, +0x0D, 0x4C, 0x00, 0x6D, 0x66, 0x6E, 0x01, 0x6F, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x04, 0xF6, 0x62, 0xA2, 0xFF, 0x4B, +0x03, 0x10, 0x04, 0xF6, 0x61, 0xA2, 0x6A, 0x33, +0x04, 0xF6, 0x62, 0xC2, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0xE0, 0xF0, 0x7A, 0xA0, +0x01, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x34, 0x22, +0x00, 0x6A, 0xC4, 0xF5, 0x78, 0xA0, 0xC4, 0xF5, +0x5B, 0xC0, 0x80, 0x6A, 0x4B, 0xEA, 0x6D, 0xEA, +0xC4, 0xF5, 0x58, 0xC0, 0x80, 0x18, 0x73, 0x60, +0x06, 0x22, 0x06, 0x92, 0x01, 0x72, 0x49, 0x61, +0x80, 0x18, 0xE7, 0x5F, 0x46, 0x10, 0xE0, 0xF0, +0x9A, 0xA0, 0x04, 0x6B, 0x8C, 0xEB, 0x2C, 0xEB, +0x15, 0x23, 0xE4, 0xF5, 0x94, 0xA0, 0xE4, 0xF5, +0x75, 0xA0, 0x63, 0xEC, 0x08, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF5, 0x8C, 0x98, 0xC3, 0xF6, +0x74, 0x9B, 0x80, 0xDB, 0x05, 0x10, 0x00, 0x18, +0xF9, 0xD9, 0xE4, 0xF5, 0x54, 0xA0, 0x01, 0x4A, +0xE4, 0xF5, 0x54, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF5, 0x48, 0x9A, 0x40, 0xEA, 0x25, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x50, 0x9A, +0x60, 0xAA, 0xEF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, +0x24, 0xF6, 0x4C, 0xC8, 0x30, 0xF0, 0x20, 0x6B, +0xA9, 0xF2, 0x5E, 0xCB, 0x24, 0xF6, 0x4C, 0xA8, +0x10, 0x6B, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF6, 0x78, 0x9A, 0x03, 0x6C, +0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, +0x78, 0x9A, 0xFC, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6C, 0x80, 0x18, 0x8B, 0x60, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x7D, 0xA2, +0x0C, 0x23, 0x00, 0x6B, 0xC9, 0xF0, 0x7D, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xC9, 0xF0, 0x18, 0x4C, +0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0x8B, 0x60, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x04, 0xF6, +0xC1, 0xA2, 0x03, 0x6B, 0xFF, 0x6D, 0xCC, 0xEB, +0xAC, 0xEB, 0xAC, 0xEC, 0x09, 0x2B, 0x04, 0xF6, +0xA1, 0xA2, 0x04, 0xF6, 0xC2, 0xA2, 0xAA, 0x35, +0xA2, 0xEE, 0x5F, 0x61, 0x04, 0xF6, 0x62, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xE0, 0xF0, 0xBA, 0xA2, 0x01, 0x6B, 0xAC, 0xEB, +0x54, 0x23, 0xC4, 0xF5, 0x5B, 0xA2, 0x51, 0x2A, +0x01, 0x74, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF0, 0x65, 0xA2, 0x01, 0x4B, 0xE9, 0xF0, +0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF0, +0x65, 0xA2, 0x14, 0x5B, 0x0F, 0x61, 0x00, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0xE9, 0xF0, 0x65, 0xC2, +0x80, 0x18, 0xC5, 0x5E, 0x20, 0xF5, 0x50, 0x98, +0x07, 0x6C, 0x40, 0xEA, 0x20, 0xF5, 0x50, 0x98, +0x08, 0x6C, 0x40, 0xEA, 0x80, 0x18, 0x73, 0x60, +0x1C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF0, +0x40, 0x9A, 0x2B, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF0, 0x44, 0xA2, 0x26, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x6B, 0xF2, 0xDB, 0xA2, 0x00, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x31, 0x6C, 0x4F, 0xF7, +0x11, 0x4C, 0x00, 0x6D, 0x01, 0x6F, 0x40, 0xEA, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x54, 0x9A, 0xE0, 0xF0, 0x9B, 0xA0, 0x40, 0xEA, -0x64, 0xF5, 0x79, 0xA0, 0x01, 0x6A, 0x64, 0xF5, -0x5B, 0xC0, 0x01, 0x6A, 0x6D, 0xEA, 0x64, 0xF5, +0xC4, 0xF5, 0x79, 0xA0, 0x01, 0x6A, 0xC4, 0xF5, +0x5B, 0xC0, 0x01, 0x6A, 0x6D, 0xEA, 0xC4, 0xF5, 0x59, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x6C, 0x80, 0x18, 0xC3, 0x5F, 0x05, 0x97, +0x00, 0x6C, 0x80, 0x18, 0x04, 0x61, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x01, 0x6C, 0x80, 0x18, 0xC3, 0x5F, 0x05, 0x97, +0x01, 0x6C, 0x80, 0x18, 0x04, 0x61, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x00, 0x6C, 0x00, 0x18, 0x65, 0xDD, -0x30, 0xF0, 0x20, 0x6B, 0x89, 0xF0, 0x58, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA4, 0xF5, 0x65, 0xA2, 0xFF, 0x6D, 0x01, 0x4B, -0xA4, 0xF5, 0x65, 0xC2, 0xA4, 0xF5, 0x66, 0xA2, -0xA4, 0xF5, 0x85, 0xA2, 0x14, 0x4B, 0xAC, 0xEB, -0x8E, 0xEB, 0x02, 0x2B, 0xA4, 0xF5, 0x86, 0xC2, +0x06, 0xD0, 0x00, 0x6C, 0x00, 0x18, 0xD9, 0xDE, +0x30, 0xF0, 0x20, 0x6B, 0xE9, 0xF0, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x04, 0xF6, 0x65, 0xA2, 0xFF, 0x6D, 0x01, 0x4B, +0x04, 0xF6, 0x65, 0xC2, 0x04, 0xF6, 0x66, 0xA2, +0x04, 0xF6, 0x85, 0xA2, 0x14, 0x4B, 0xAC, 0xEB, +0x8E, 0xEB, 0x02, 0x2B, 0x04, 0xF6, 0x86, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x5C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x54, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x58, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, 0x64, 0xF5, +0x8B, 0xF1, 0x00, 0x4A, 0x00, 0x6B, 0xC4, 0xF5, 0x7B, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF7, -0xA4, 0x9B, 0xE0, 0xF0, 0x7C, 0x9A, 0xAC, 0xEB, -0x6E, 0xED, 0x14, 0x2D, 0x64, 0xF5, 0x99, 0xA2, -0x10, 0x6B, 0xA4, 0xF5, 0xC0, 0xA2, 0x8D, 0xEB, -0x64, 0xF5, 0x79, 0xC2, 0x30, 0xF0, 0x20, 0x6B, +0xB8, 0x9B, 0xE0, 0xF0, 0x7C, 0x9A, 0xAC, 0xEB, +0x6E, 0xED, 0x14, 0x2D, 0xC4, 0xF5, 0x99, 0xA2, +0x10, 0x6B, 0x04, 0xF6, 0xC0, 0xA2, 0x8D, 0xEB, +0xC4, 0xF5, 0x79, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x84, 0x9B, 0x00, 0xF3, 0x4C, 0x9A, 0x04, 0xD5, 0xC6, 0x36, 0x01, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x00, 0xF1, 0x76, 0xA0, +0x8B, 0xF1, 0x00, 0x48, 0x00, 0xF1, 0x76, 0xA0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x4C, 0x9A, 0x07, 0x6C, 0x6C, 0xEC, 0x00, 0x6D, 0x40, 0xEA, -0x84, 0xF5, 0x58, 0xD8, 0x07, 0x97, 0x06, 0x90, +0xE4, 0xF5, 0x58, 0xD8, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x24, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0x2B, 0xF2, 0x12, 0x4C, 0xB1, 0x67, +0x20, 0x6C, 0x6B, 0xF2, 0x1A, 0x4C, 0xB1, 0x67, 0x05, 0x6E, 0x40, 0xEA, 0x60, 0xA1, 0x01, 0x6A, 0x6C, 0xEA, 0x5D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x40, 0xA2, 0x64, 0xF5, -0x79, 0xA0, 0x04, 0x6C, 0x84, 0xF5, 0x44, 0xC0, -0x41, 0xA1, 0x00, 0x69, 0x64, 0xF5, 0x3A, 0xC0, +0x23, 0xF1, 0x58, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0x40, 0xA2, 0xC4, 0xF5, +0x79, 0xA0, 0x04, 0x6C, 0xE4, 0xF5, 0x44, 0xC0, +0x41, 0xA1, 0x00, 0x69, 0xC4, 0xF5, 0x3A, 0xC0, 0xE0, 0xF0, 0x5B, 0xC0, 0x07, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x64, 0xF5, 0x59, 0xC0, 0x30, 0xF0, +0x6C, 0xEA, 0xC4, 0xF5, 0x59, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x5C, 0x9A, 0x40, 0xEA, 0xE0, 0xF0, 0x7A, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF6, 0x40, 0x9A, 0x84, 0xF5, -0x34, 0xC0, 0x40, 0x9A, 0x84, 0xF5, 0x50, 0xD8, -0x02, 0x10, 0x00, 0x18, 0x9E, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE0, 0xF0, +0x20, 0x6A, 0xC3, 0xF6, 0x54, 0x9A, 0xE4, 0xF5, +0x34, 0xC0, 0x40, 0x9A, 0xE4, 0xF5, 0x50, 0xD8, +0x02, 0x10, 0x00, 0x18, 0xF9, 0xD9, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, 0x9C, 0xA2, 0x04, 0x6B, 0x8C, 0xEB, 0x11, 0x23, -0xA4, 0xF5, 0x80, 0xA2, 0x01, 0x6B, 0xFF, 0x6D, +0x04, 0xF6, 0x80, 0xA2, 0x01, 0x6B, 0xFF, 0x6D, 0x8C, 0xEB, 0x6C, 0xED, 0x05, 0x2D, 0x64, 0x6C, -0x6D, 0xEC, 0xA4, 0xF5, 0x80, 0xC2, 0x05, 0x10, -0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA4, 0xF5, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x44, 0x9A, 0x03, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x40, 0x9A, 0x00, 0x6B, +0x6D, 0xEC, 0x04, 0xF6, 0x80, 0xC2, 0x05, 0x10, +0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x04, 0xF6, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, +0x48, 0x9A, 0x03, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF1, 0x5C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x06, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xAF, 0xF6, 0x73, 0xC2, 0x20, 0x10, 0x00, 0x18, -0x9E, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x4F, 0xF7, 0x7B, 0xC2, 0x20, 0x10, 0x00, 0x18, +0xF9, 0xD9, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x58, 0x9A, 0x03, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x5C, 0x9A, 0x03, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x64, 0xF5, 0x99, 0xA2, 0x07, 0x6B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xC4, 0xF5, 0x99, 0xA2, 0x07, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE0, 0xF0, 0x9E, 0xA2, -0x64, 0xF5, 0x79, 0xC2, 0x41, 0x6B, 0x6B, 0xEB, +0xC4, 0xF5, 0x79, 0xC2, 0x41, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE0, 0xF0, 0x7E, 0xC2, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0x64, 0xF5, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xC4, 0xF5, 0x78, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, -0x64, 0xF5, 0x78, 0xC0, 0x64, 0xF5, 0x79, 0xA0, -0x05, 0x6C, 0xFF, 0x69, 0x6C, 0xEA, 0x64, 0xF5, +0xC4, 0xF5, 0x78, 0xC0, 0xC4, 0xF5, 0x79, 0xA0, +0x05, 0x6C, 0xFF, 0x69, 0x6C, 0xEA, 0xC4, 0xF5, 0x59, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x54, 0x9A, 0x40, 0xEA, 0xE0, 0xF0, 0x7C, 0xA0, 0x08, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, 0x00, 0xF1, 0x96, 0xA0, 0x07, 0x6A, 0x01, 0x6D, 0x4C, 0xEC, -0x2C, 0xEC, 0x00, 0x18, 0xB2, 0xCD, 0x00, 0xF1, +0x2C, 0xEC, 0x00, 0x18, 0xC4, 0xCE, 0x00, 0xF1, 0x96, 0xA0, 0x07, 0x6A, 0x01, 0x6D, 0x4C, 0xEC, 0x2C, 0xEC, 0x14, 0x10, 0xA0, 0xF0, 0x7B, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x10, 0x2A, 0x00, 0xF1, 0x96, 0xA0, 0x07, 0x6A, 0x00, 0x6D, -0x4C, 0xEC, 0x2C, 0xEC, 0x00, 0x18, 0xB2, 0xCD, +0x4C, 0xEC, 0x2C, 0xEC, 0x00, 0x18, 0xC4, 0xCE, 0x00, 0xF1, 0x96, 0xA0, 0x07, 0x6A, 0x00, 0x6D, -0x4C, 0xEC, 0x2C, 0xEC, 0x00, 0x18, 0xDF, 0xCD, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, +0x4C, 0xEC, 0x2C, 0xEC, 0x00, 0x18, 0xF1, 0xCE, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x00, 0xF1, 0x76, 0xA0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, 0x07, 0x6C, 0x6C, 0xEC, -0x00, 0x6D, 0x40, 0xEA, 0xA4, 0xF5, 0x41, 0xA0, -0x07, 0x97, 0x06, 0x91, 0x4A, 0x32, 0xA4, 0xF5, +0x00, 0x6D, 0x40, 0xEA, 0x04, 0xF6, 0x41, 0xA0, +0x07, 0x97, 0x06, 0x91, 0x4A, 0x32, 0x04, 0xF6, 0x42, 0xC0, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA4, 0xF5, 0x63, 0xA2, -0x02, 0x4B, 0xA4, 0xF5, 0x63, 0xC2, 0xA4, 0xF5, -0x64, 0xA2, 0x1C, 0x23, 0xA4, 0xF5, 0x63, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0x04, 0xF6, 0x63, 0xA2, +0x02, 0x4B, 0x04, 0xF6, 0x63, 0xC2, 0x04, 0xF6, +0x64, 0xA2, 0x1C, 0x23, 0x04, 0xF6, 0x63, 0xA2, 0x66, 0x33, 0x05, 0x53, 0x17, 0x60, 0x00, 0x6B, -0xA4, 0xF5, 0x64, 0xC2, 0xA4, 0xF5, 0x67, 0xA2, -0x10, 0xF0, 0x32, 0x6C, 0xB0, 0xF2, 0x11, 0x4C, -0x01, 0x4B, 0xA4, 0xF5, 0x67, 0xC2, 0x00, 0x6A, +0x04, 0xF6, 0x64, 0xC2, 0x04, 0xF6, 0x67, 0xA2, +0x10, 0xF0, 0x32, 0x6C, 0xD0, 0xF7, 0x09, 0x4C, +0x01, 0x4B, 0x04, 0xF6, 0x67, 0xC2, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x00, 0x6D, 0x05, 0x6E, 0x01, 0x6F, 0x40, 0xEA, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0xBC, 0x9A, 0x01, 0x6C, 0x80, 0x18, -0x76, 0x76, 0x80, 0x18, 0x03, 0x60, 0x07, 0x97, +0xE3, 0xF1, 0xA0, 0x9A, 0x01, 0x6C, 0x80, 0x18, +0x5F, 0x78, 0x80, 0x18, 0x49, 0x61, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x54, 0x9A, 0x03, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x5C, 0x9A, 0x02, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, 0x9E, 0xA2, 0x40, 0x6B, 0x8C, 0xEB, -0x16, 0x23, 0x64, 0xF5, 0x99, 0xA2, 0x07, 0x6B, +0x16, 0x23, 0xC4, 0xF5, 0x99, 0xA2, 0x07, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x02, 0x6C, 0x8D, 0xEB, -0x64, 0xF5, 0x79, 0xC2, 0x00, 0x6B, 0x64, 0xF5, -0x7A, 0xC2, 0x83, 0xF3, 0x7C, 0xA2, 0x0A, 0x23, -0x64, 0xF5, 0x98, 0xA2, 0x04, 0x6B, 0x8D, 0xEB, -0x64, 0xF5, 0x78, 0xC2, 0x03, 0x10, 0x05, 0x6B, -0x64, 0xF5, 0x7B, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x64, 0xF5, 0x99, 0xA2, -0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x64, 0xF5, -0x79, 0xC2, 0xA4, 0xF5, 0x43, 0xA2, 0x7D, 0x67, +0xC4, 0xF5, 0x79, 0xC2, 0x00, 0x6B, 0xC4, 0xF5, +0x7A, 0xC2, 0xA3, 0xF3, 0x60, 0xA2, 0x0A, 0x23, +0xC4, 0xF5, 0x98, 0xA2, 0x04, 0x6B, 0x8D, 0xEB, +0xC4, 0xF5, 0x78, 0xC2, 0x03, 0x10, 0x05, 0x6B, +0xC4, 0xF5, 0x7B, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xC4, 0xF5, 0x99, 0xA2, +0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xC4, 0xF5, +0x79, 0xC2, 0x04, 0xF6, 0x43, 0xA2, 0x7D, 0x67, 0x42, 0x6C, 0x46, 0x32, 0x50, 0xC3, 0x01, 0x6D, -0x04, 0x06, 0x80, 0x18, 0x1E, 0x69, 0x07, 0x97, +0x04, 0x06, 0x80, 0x18, 0xA9, 0x6A, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE0, 0xF0, 0x3A, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, 0x3A, 0xA2, 0x01, 0x6B, 0x2C, 0xEB, 0x5B, 0x23, 0xE0, 0xF0, 0x7E, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x50, 0x9A, 0x40, 0xEA, 0x4E, 0x22, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0x64, 0xF5, 0x5B, 0xA0, 0x01, 0x72, 0x04, 0x60, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0xC4, 0xF5, 0x5B, 0xA0, 0x01, 0x72, 0x04, 0x60, 0x2F, 0x22, 0x05, 0x72, 0x04, 0x60, 0x42, 0x10, -0x80, 0x18, 0xC7, 0x60, 0x3F, 0x10, 0x30, 0x6A, -0x2C, 0xEA, 0x20, 0x72, 0x07, 0x60, 0xA4, 0xF5, +0x80, 0x18, 0x0D, 0x62, 0x3F, 0x10, 0x30, 0x6A, +0x2C, 0xEA, 0x20, 0x72, 0x07, 0x60, 0x04, 0xF6, 0x23, 0xA0, 0x01, 0x6A, 0x4C, 0xE9, 0xFF, 0x6A, -0x4C, 0xE9, 0x03, 0x21, 0x80, 0x18, 0x03, 0x60, -0x31, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0xBC, 0x9A, 0x01, 0x6C, 0x80, 0x18, 0x45, 0x76, -0xA4, 0xF5, 0x43, 0xA0, 0x01, 0x6B, 0x10, 0xF0, -0x32, 0x6C, 0x6C, 0xEA, 0xA4, 0xF5, 0x43, 0xC0, +0x4C, 0xE9, 0x03, 0x21, 0x80, 0x18, 0x49, 0x61, +0x31, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0xA0, 0x9A, 0x01, 0x6C, 0x80, 0x18, 0x2E, 0x78, +0x04, 0xF6, 0x43, 0xA0, 0x01, 0x6B, 0x10, 0xF0, +0x32, 0x6C, 0x6C, 0xEA, 0x04, 0xF6, 0x43, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0x04, 0xD1, 0xB0, 0xF2, 0x11, 0x4C, 0x00, 0x6D, +0x04, 0xD1, 0xD0, 0xF7, 0x09, 0x4C, 0x00, 0x6D, 0x05, 0x6E, 0xE3, 0x67, 0x40, 0xEA, 0x16, 0x10, -0xA4, 0xF5, 0x63, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, -0x0C, 0x2A, 0x64, 0xF5, 0x78, 0xA0, 0x80, 0x4A, -0x10, 0xF0, 0x32, 0x6C, 0x6D, 0xEA, 0xB0, 0xF2, -0x11, 0x4C, 0x64, 0xF5, 0x58, 0xC0, 0x00, 0x18, -0xB9, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x04, 0xF6, 0x63, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, +0x0C, 0x2A, 0xC4, 0xF5, 0x78, 0xA0, 0x80, 0x4A, +0x10, 0xF0, 0x32, 0x6C, 0x6D, 0xEA, 0xD0, 0xF7, +0x09, 0x4C, 0xC4, 0xF5, 0x58, 0xC0, 0x00, 0x18, +0x5E, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x48, 0x9A, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x07, 0x6D, 0xC4, 0x67, +0x47, 0x6C, 0x80, 0x18, 0xA9, 0x6A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x02, 0x6D, 0xC4, 0x67, 0x24, 0x6C, 0x80, 0x18, +0xA9, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x02, 0x6D, 0xC4, 0x67, -0x24, 0x6C, 0x80, 0x18, 0x1E, 0x69, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x02, 0x6D, 0xC4, 0x67, 0x38, 0x6C, 0x80, 0x18, -0x1E, 0x69, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x61, 0xA4, 0xBD, 0x67, -0x40, 0xA4, 0x70, 0xC5, 0x62, 0xA4, 0x0E, 0x5A, -0x71, 0xC5, 0x63, 0xA4, 0x72, 0xC5, 0x64, 0xA4, -0x73, 0xC5, 0x65, 0xA4, 0x74, 0xC5, 0x66, 0xA4, -0xFF, 0x6C, 0x75, 0xC5, 0xA0, 0xF0, 0x04, 0x60, -0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, 0x02, 0xF7, -0x1C, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, -0x2A, 0x6C, 0x08, 0x10, 0x29, 0x6C, 0x02, 0x6D, -0x98, 0x10, 0x31, 0x6C, 0x95, 0x10, 0x32, 0x6C, -0x93, 0x10, 0x33, 0x6C, 0x06, 0x6D, 0x91, 0x10, -0x04, 0x04, 0x80, 0x18, 0xFD, 0x5D, 0x90, 0x10, -0x9D, 0x67, 0x70, 0xA4, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x84, 0xF5, 0x66, 0xC2, -0x71, 0xA4, 0x84, 0xF5, 0x67, 0xC2, 0x72, 0xA4, -0x84, 0xF5, 0x68, 0xC2, 0x73, 0xA4, 0x84, 0xF5, -0x69, 0xC2, 0x74, 0xA4, 0x84, 0xF5, 0x6A, 0xC2, -0x7B, 0x10, 0xBD, 0x67, 0x50, 0xA5, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x93, 0xA5, -0x84, 0xF5, 0x55, 0xC3, 0x54, 0xA5, 0x80, 0x34, -0x80, 0x34, 0x00, 0xF6, 0x40, 0x32, 0x8D, 0xEA, -0x91, 0xA5, 0x8D, 0xEA, 0x92, 0xA5, 0x80, 0x34, -0x8D, 0xEA, 0x84, 0xF5, 0x4C, 0xDB, 0x64, 0x10, -0x80, 0x18, 0x2E, 0x5E, 0x61, 0x10, 0xBD, 0x67, -0x90, 0xA5, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6B, -0x84, 0x34, 0x2B, 0xF1, 0x18, 0x4A, 0x6D, 0xEC, -0xA4, 0xF5, 0x80, 0xC2, 0xA4, 0xF5, 0x80, 0xA2, -0x86, 0x35, 0x1E, 0x55, 0x05, 0x60, 0x8C, 0xEB, -0x3C, 0x6C, 0x8D, 0xEB, 0xA4, 0xF5, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA4, 0xF5, 0x60, 0xA2, 0x66, 0x34, 0x51, 0x54, -0x43, 0x61, 0x01, 0x6C, 0x6C, 0xEC, 0x60, 0x6B, -0x6B, 0xEB, 0x6D, 0xEC, 0xA4, 0xF5, 0x80, 0xC2, -0x3B, 0x10, 0x5D, 0x67, 0x70, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0xCF, 0xF6, 0x77, 0xC2, 0x34, 0x10, -0x7D, 0x67, 0x50, 0xA3, 0x3F, 0x6B, 0x4C, 0xEB, -0x68, 0x33, 0x5A, 0x32, 0x6D, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xCF, 0xF6, 0x59, 0xC3, 0x28, 0x10, -0xBD, 0x67, 0x50, 0xA5, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA4, 0xF5, 0xA3, 0xA3, -0x01, 0x6C, 0x4C, 0xEC, 0x02, 0x6A, 0x4B, 0xEA, -0xAC, 0xEA, 0x8D, 0xEA, 0xA4, 0xF5, 0x43, 0xC3, -0x17, 0x10, 0x7D, 0x67, 0x54, 0xA3, 0x73, 0xA3, -0x9D, 0x67, 0x00, 0xF6, 0x40, 0x32, 0x60, 0x33, -0x60, 0x33, 0x6D, 0xEA, 0x71, 0xA4, 0x6D, 0xEA, -0x72, 0xA4, 0x60, 0x33, 0x6D, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xEF, 0xF6, 0x40, 0xDB, 0x04, 0x10, -0x01, 0x6D, 0x04, 0x06, 0x80, 0x18, 0x1E, 0x69, -0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x01, 0x6D, 0xC4, 0x67, -0x28, 0x6C, 0x80, 0x18, 0x1E, 0x69, 0x05, 0x97, +0x38, 0x6C, 0x80, 0x18, 0xA9, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x40, 0xA4, 0x7D, 0x67, 0x07, 0x6D, 0x50, 0xC3, -0x41, 0xA4, 0x04, 0x06, 0x51, 0xC3, 0x42, 0xA4, -0x52, 0xC3, 0x43, 0xA4, 0x53, 0xC3, 0x44, 0xA4, -0x30, 0x6C, 0x54, 0xC3, 0x00, 0x6A, 0x55, 0xC3, -0x56, 0xC3, 0x80, 0x18, 0x1E, 0x69, 0x07, 0x97, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x03, 0x6D, 0xC4, 0x67, 0x11, 0x6C, 0x80, 0x18, -0x1E, 0x69, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x01, 0x6D, 0xC4, 0x67, -0x1B, 0x6C, 0x80, 0x18, 0x1E, 0x69, 0x05, 0x97, +0x61, 0xA4, 0xBD, 0x67, 0x40, 0xA4, 0x70, 0xC5, +0x62, 0xA4, 0x0E, 0x5A, 0x71, 0xC5, 0x63, 0xA4, +0x72, 0xC5, 0x64, 0xA4, 0x73, 0xC5, 0x65, 0xA4, +0x74, 0xC5, 0x66, 0xA4, 0xFF, 0x6C, 0x75, 0xC5, +0xA0, 0xF0, 0x04, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0x32, 0x02, 0xF7, 0x1C, 0x4B, 0x4D, 0xE3, +0x40, 0x9B, 0x00, 0xEA, 0x2A, 0x6C, 0x08, 0x10, +0x29, 0x6C, 0x02, 0x6D, 0x98, 0x10, 0x31, 0x6C, +0x95, 0x10, 0x32, 0x6C, 0x93, 0x10, 0x33, 0x6C, +0x06, 0x6D, 0x91, 0x10, 0x04, 0x04, 0x80, 0x18, +0x94, 0x5E, 0x90, 0x10, 0x9D, 0x67, 0x70, 0xA4, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xE4, 0xF5, 0x66, 0xC2, 0x71, 0xA4, 0xE4, 0xF5, +0x67, 0xC2, 0x72, 0xA4, 0xE4, 0xF5, 0x68, 0xC2, +0x73, 0xA4, 0xE4, 0xF5, 0x69, 0xC2, 0x74, 0xA4, +0xE4, 0xF5, 0x6A, 0xC2, 0x7B, 0x10, 0xBD, 0x67, +0x50, 0xA5, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x93, 0xA5, 0xE4, 0xF5, 0x55, 0xC3, +0x54, 0xA5, 0x80, 0x34, 0x80, 0x34, 0x00, 0xF6, +0x40, 0x32, 0x8D, 0xEA, 0x91, 0xA5, 0x8D, 0xEA, +0x92, 0xA5, 0x80, 0x34, 0x8D, 0xEA, 0xE4, 0xF5, +0x4C, 0xDB, 0x64, 0x10, 0x80, 0x18, 0xC5, 0x5E, +0x61, 0x10, 0xBD, 0x67, 0x90, 0xA5, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0x6B, 0x84, 0x34, 0x8B, 0xF1, +0x00, 0x4A, 0x6D, 0xEC, 0x04, 0xF6, 0x80, 0xC2, +0x04, 0xF6, 0x80, 0xA2, 0x86, 0x35, 0x1E, 0x55, +0x05, 0x60, 0x8C, 0xEB, 0x3C, 0x6C, 0x8D, 0xEB, +0x04, 0xF6, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x04, 0xF6, 0x60, 0xA2, +0x66, 0x34, 0x51, 0x54, 0x43, 0x61, 0x01, 0x6C, +0x6C, 0xEC, 0x60, 0x6B, 0x6B, 0xEB, 0x6D, 0xEC, +0x04, 0xF6, 0x80, 0xC2, 0x3B, 0x10, 0x5D, 0x67, +0x70, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x6F, 0xF7, +0x7F, 0xC2, 0x34, 0x10, 0x7D, 0x67, 0x50, 0xA3, +0x3F, 0x6B, 0x4C, 0xEB, 0x68, 0x33, 0x5A, 0x32, +0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x8F, 0xF7, +0x41, 0xC3, 0x28, 0x10, 0xBD, 0x67, 0x50, 0xA5, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x04, 0xF6, 0xA3, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, +0x02, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x8D, 0xEA, +0x04, 0xF6, 0x43, 0xC3, 0x17, 0x10, 0x7D, 0x67, +0x54, 0xA3, 0x73, 0xA3, 0x9D, 0x67, 0x00, 0xF6, +0x40, 0x32, 0x60, 0x33, 0x60, 0x33, 0x6D, 0xEA, +0x71, 0xA4, 0x6D, 0xEA, 0x72, 0xA4, 0x60, 0x33, +0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x8F, 0xF7, +0x48, 0xDB, 0x04, 0x10, 0x01, 0x6D, 0x04, 0x06, +0x80, 0x18, 0xA9, 0x6A, 0x07, 0x97, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x01, 0x6D, 0xC4, 0x67, 0x28, 0x6C, 0x80, 0x18, +0xA9, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x40, 0xA4, 0x7D, 0x67, +0x07, 0x6D, 0x50, 0xC3, 0x41, 0xA4, 0x04, 0x06, +0x51, 0xC3, 0x42, 0xA4, 0x52, 0xC3, 0x43, 0xA4, +0x53, 0xC3, 0x44, 0xA4, 0x30, 0x6C, 0x54, 0xC3, +0x00, 0x6A, 0x55, 0xC3, 0x56, 0xC3, 0x80, 0x18, +0xA9, 0x6A, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x03, 0x6D, 0xC4, 0x67, +0x11, 0x6C, 0x80, 0x18, 0xA9, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x01, 0x6D, 0xC4, 0x67, 0x17, 0x6C, 0x80, 0x18, -0x1E, 0x69, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x40, 0xA4, 0xC4, 0x67, -0x01, 0x72, 0x03, 0x61, 0x23, 0x6C, 0x03, 0x6D, -0x02, 0x10, 0x23, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0x1E, 0x69, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x80, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x01, 0x6B, -0x8C, 0xEB, 0x64, 0xF5, 0xB9, 0xA2, 0x6C, 0x34, -0x09, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x8D, 0xEB, -0x08, 0x6C, 0x64, 0xF5, 0x79, 0xC2, 0x8C, 0xEB, -0x23, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF2, -0x08, 0x4B, 0xB6, 0xA3, 0x01, 0x4D, 0xB6, 0xC3, -0x64, 0xF5, 0x58, 0xA2, 0x8C, 0xEA, 0xFF, 0x6C, -0x8C, 0xEA, 0x0C, 0x22, 0x58, 0xA3, 0x02, 0x6C, -0x00, 0x6E, 0x01, 0x4A, 0x58, 0xC3, 0x4D, 0x9B, -0x01, 0x6D, 0xE6, 0x67, 0x8D, 0xEA, 0x4D, 0xDB, -0x00, 0x18, 0x95, 0xD9, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x70, 0x9A, 0xFF, 0x6C, 0x01, 0x6D, -0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x0D, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF2, 0x08, 0x4A, -0x77, 0xA2, 0x01, 0x4B, 0x77, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF0, 0x70, 0x9A, 0xFE, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF2, -0x08, 0x4A, 0x61, 0xA2, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x01, 0x4B, 0x61, 0xC2, -0xA4, 0xF5, 0x6C, 0xA0, 0x27, 0x73, 0x31, 0x60, -0x28, 0x5B, 0x07, 0x60, 0x23, 0x73, 0x1A, 0x60, -0x24, 0x73, 0x21, 0x60, 0x15, 0x73, 0x0E, 0x60, -0xD1, 0x10, 0x34, 0x73, 0x3B, 0x60, 0x35, 0x5B, -0x03, 0x60, 0x30, 0x73, 0x2B, 0x60, 0xCA, 0x10, -0x39, 0x73, 0x57, 0x60, 0x41, 0x73, 0xA0, 0xF0, -0x1C, 0x60, 0xC4, 0x10, 0x62, 0xA2, 0xA4, 0xF5, +0x01, 0x6D, 0xC4, 0x67, 0x1B, 0x6C, 0x80, 0x18, +0xA9, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x01, 0x6D, 0xC4, 0x67, +0x17, 0x6C, 0x80, 0x18, 0xA9, 0x6A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x40, 0xA4, 0xC4, 0x67, 0x01, 0x72, 0x03, 0x61, +0x23, 0x6C, 0x03, 0x6D, 0x02, 0x10, 0x23, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0xA9, 0x6A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x01, 0x6B, 0x8C, 0xEB, 0xC4, 0xF5, +0xB9, 0xA2, 0x6C, 0x34, 0x09, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x8D, 0xEB, 0x08, 0x6C, 0xC4, 0xF5, +0x79, 0xC2, 0x8C, 0xEB, 0x23, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0xA9, 0xF2, 0x10, 0x4B, 0xB6, 0xA3, +0x01, 0x4D, 0xB6, 0xC3, 0xC4, 0xF5, 0x58, 0xA2, +0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x0C, 0x22, +0x58, 0xA3, 0x02, 0x6C, 0x00, 0x6E, 0x01, 0x4A, +0x58, 0xC3, 0x4D, 0x9B, 0x01, 0x6D, 0xE6, 0x67, +0x8D, 0xEA, 0x4D, 0xDB, 0x00, 0x18, 0xF4, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x74, 0x9A, +0xFF, 0x6C, 0x01, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA9, 0xF2, 0x10, 0x4A, 0x77, 0xA2, 0x01, 0x4B, +0x77, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, +0x74, 0x9A, 0xFE, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xA9, 0xF2, 0x10, 0x4A, 0x61, 0xA2, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x01, 0x4B, 0x61, 0xC2, 0x04, 0xF6, 0x6C, 0xA0, +0x34, 0x73, 0x54, 0x60, 0x35, 0x5B, 0x0E, 0x60, +0x24, 0x73, 0x31, 0x60, 0x25, 0x5B, 0x05, 0x60, +0x15, 0x73, 0x1C, 0x60, 0x23, 0x73, 0x22, 0x60, +0x4F, 0x11, 0x27, 0x73, 0x32, 0x60, 0x30, 0x73, +0x39, 0x60, 0x4A, 0x11, 0x46, 0x73, 0x02, 0x6C, +0xC0, 0xF0, 0x1A, 0x60, 0x47, 0x5B, 0x06, 0x60, +0x39, 0x73, 0x5F, 0x60, 0x41, 0x73, 0xC0, 0xF0, +0x0A, 0x60, 0x3E, 0x11, 0x47, 0x73, 0x01, 0x6C, +0xC0, 0xF0, 0x0E, 0x60, 0x48, 0x73, 0xC0, 0xF0, +0x0E, 0x60, 0x36, 0x11, 0x62, 0xA2, 0x04, 0xF6, 0x8E, 0xA0, 0x01, 0x4B, 0x62, 0xC2, 0x80, 0x18, -0x67, 0x69, 0xC8, 0x10, 0x63, 0xA2, 0x01, 0x6C, +0xF2, 0x6A, 0x3A, 0x11, 0x63, 0xA2, 0x01, 0x6C, 0x01, 0x4B, 0x63, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x50, 0x9A, 0x08, 0x10, 0x63, 0xA2, 0x06, 0x6C, 0x01, 0x4B, 0x63, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x50, 0x9A, 0x40, 0xEA, -0xB5, 0x10, 0x64, 0xA2, 0x02, 0x6C, 0x01, 0x4B, +0x27, 0x11, 0x64, 0xA2, 0x02, 0x6C, 0x01, 0x4B, 0x64, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x50, 0x9A, 0xF5, 0x17, 0x65, 0xA2, 0x00, 0x6D, 0x01, 0x6C, 0x01, 0x4B, 0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x54, 0x9A, 0xC5, 0x67, -0x40, 0xEA, 0xA0, 0x10, 0xA4, 0xF5, 0x6E, 0xA0, +0x40, 0xEA, 0x12, 0x11, 0x04, 0xF6, 0x6E, 0xA0, 0x01, 0x6C, 0x8C, 0xEB, 0x16, 0x23, 0x71, 0xA2, -0x01, 0x4B, 0x71, 0xC2, 0x64, 0xF5, 0xB9, 0xA0, +0x01, 0x4B, 0x71, 0xC2, 0xC4, 0xF5, 0xB9, 0xA0, 0x08, 0x6B, 0xAC, 0xEB, 0xA4, 0x67, 0x12, 0x23, 0x74, 0xA2, 0x00, 0x6E, 0x02, 0x6D, 0x01, 0x4B, 0x74, 0xC2, 0x6C, 0x9A, 0xE6, 0x67, 0x8D, 0xEB, -0x6C, 0xDA, 0x03, 0x6C, 0x00, 0x18, 0x95, 0xD9, -0x73, 0x10, 0x72, 0xA2, 0x00, 0x6C, 0x04, 0x6D, -0x01, 0x4B, 0x72, 0xC2, 0x00, 0x18, 0x0E, 0xD9, -0x6B, 0x10, 0x66, 0xA2, 0x01, 0x4B, 0x66, 0xC2, -0x80, 0x18, 0x32, 0x5F, 0x1E, 0x22, 0xE0, 0xF0, +0x6C, 0xDA, 0x03, 0x6C, 0x00, 0x18, 0xF4, 0xDA, +0x79, 0x10, 0x72, 0xA2, 0x00, 0x6C, 0x04, 0x6D, +0x01, 0x4B, 0x72, 0xC2, 0x00, 0x18, 0x6D, 0xDA, +0x71, 0x10, 0x66, 0xA2, 0x01, 0x4B, 0x66, 0xC2, +0x80, 0x18, 0x73, 0x60, 0x1F, 0x22, 0xE0, 0xF0, 0x9A, 0xA0, 0x01, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, -0x18, 0x22, 0x84, 0xF5, 0x5C, 0xA0, 0x64, 0xF5, -0x98, 0xA0, 0x01, 0x4A, 0x84, 0xF5, 0x5C, 0xC0, +0x19, 0x22, 0xE4, 0xF5, 0x5C, 0xA0, 0xC4, 0xF5, +0x98, 0xA0, 0x01, 0x4A, 0xE4, 0xF5, 0x5C, 0xC0, 0x7F, 0x6A, 0x8C, 0xEA, 0xE0, 0xF0, 0x9C, 0xA0, -0x64, 0xF5, 0x58, 0xC0, 0x04, 0x6A, 0x8C, 0xEA, -0x6C, 0xEA, 0x45, 0x22, 0x64, 0xF5, 0x99, 0xA0, -0x10, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x5A, 0x2A, -0x3E, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE0, 0xF0, 0xBA, 0xA2, 0x01, 0x6B, -0xFF, 0x6C, 0xAC, 0xEB, 0x4F, 0x23, 0xE0, 0xF0, -0xBE, 0xA2, 0x04, 0x6E, 0xCC, 0xED, 0x8C, 0xED, -0x49, 0x25, 0x64, 0xF5, 0xB8, 0xA2, 0x80, 0x6B, -0x6B, 0xEB, 0xAC, 0xEB, 0x8C, 0xEB, 0x42, 0x23, -0x84, 0xF5, 0x7C, 0xA2, 0x01, 0x4B, 0x84, 0xF5, +0xC4, 0xF5, 0x58, 0xC0, 0x04, 0x6A, 0x8C, 0xEA, +0x6C, 0xEA, 0x4B, 0x22, 0xC4, 0xF5, 0x99, 0xA0, +0x10, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0xC0, 0xF0, +0x0B, 0x2A, 0x43, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xE0, 0xF0, 0xBA, 0xA2, +0x01, 0x6B, 0xFF, 0x6C, 0xAC, 0xEB, 0xA0, 0xF0, +0x1F, 0x23, 0xE0, 0xF0, 0xBE, 0xA2, 0x04, 0x6E, +0xCC, 0xED, 0x8C, 0xED, 0xA0, 0xF0, 0x18, 0x25, +0xC4, 0xF5, 0xB8, 0xA2, 0x80, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x10, 0x23, +0xE4, 0xF5, 0x7C, 0xA2, 0x01, 0x4B, 0xE4, 0xF5, 0x7C, 0xC2, 0xE0, 0xF0, 0x7C, 0xA2, 0xCC, 0xEB, -0x8C, 0xEB, 0x0B, 0x23, 0x64, 0xF5, 0xD9, 0xA2, +0x8C, 0xEB, 0x0B, 0x23, 0xC4, 0xF5, 0xD9, 0xA2, 0x10, 0x6B, 0xCC, 0xEB, 0x8C, 0xEB, 0x05, 0x23, -0x7F, 0x6B, 0xAC, 0xEB, 0x64, 0xF5, 0x78, 0xC2, -0x2D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x64, 0xF5, 0x7B, 0xA2, 0x26, 0x2B, -0x64, 0xF5, 0x98, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, -0x64, 0xF5, 0x78, 0xC2, 0xE0, 0xF0, 0x7E, 0xA2, -0x04, 0x6A, 0x6C, 0xEA, 0x1B, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x60, 0xF5, 0x48, 0x9A, 0x40, 0xEA, -0x15, 0x10, 0x75, 0xA2, 0x01, 0x4B, 0x75, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x50, 0x9A, -0x03, 0x6C, 0x55, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0xEF, 0xF6, 0x44, 0xA2, 0x7D, 0x67, 0x06, 0x6C, -0x50, 0xC3, 0x03, 0x6D, 0x04, 0x06, 0x01, 0x6F, -0x00, 0x18, 0x95, 0xD9, 0x07, 0x97, 0x06, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6C, 0x69, 0xF2, -0x08, 0x4C, 0x00, 0x6D, 0x54, 0x6E, 0x00, 0x18, -0x3D, 0xD7, 0x00, 0x18, 0xAE, 0xDA, 0x30, 0xF0, -0x20, 0x6C, 0x2B, 0xF2, 0x12, 0x4C, 0x00, 0x6D, -0x07, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x18, -0x3D, 0xD7, 0x2B, 0xF1, 0x18, 0x48, 0x0B, 0x6A, -0xE0, 0xF0, 0x5B, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF7, 0x54, 0x9A, 0xE0, 0xF0, 0x9D, 0xA0, -0x00, 0x6D, 0x60, 0xA2, 0xFF, 0x6A, 0x34, 0x6E, -0x6C, 0xEA, 0x4A, 0x32, 0x01, 0x6B, 0x6C, 0xEA, -0x58, 0x33, 0x41, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xEA, 0xAF, 0xF6, -0x10, 0x4C, 0xE0, 0xF0, 0x5D, 0xC0, 0x00, 0x18, -0x3D, 0xD7, 0x64, 0xF5, 0x78, 0xA0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xEA, 0x00, 0x6D, -0x07, 0x6E, 0x4B, 0xF2, 0x07, 0x4C, 0x64, 0xF5, -0x58, 0xC0, 0x00, 0x18, 0x3D, 0xD7, 0x00, 0xF1, -0x76, 0xA0, 0x08, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x00, 0xF1, 0x56, 0xC0, 0x1E, 0x6A, 0x84, 0xF5, -0x5F, 0xC0, 0x04, 0x6A, 0xA4, 0xF5, 0x41, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, 0x50, 0x9A, -0x01, 0x6C, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xA2, 0xA4, 0x41, 0xA4, 0x80, 0xA4, 0xA0, 0x35, -0x55, 0xE5, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, -0x80, 0x18, 0x32, 0x74, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x0B, 0xF2, -0x01, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x00, 0x18, -0xE6, 0xCE, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0x18, 0x9A, -0x0A, 0xD4, 0xFF, 0x69, 0x40, 0xA0, 0x0A, 0x95, -0x30, 0xF0, 0x20, 0x6C, 0x62, 0x67, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x2C, 0xEB, -0x05, 0xD3, 0xEB, 0xF1, 0x12, 0x4C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, -0x7C, 0x9A, 0xF8, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0x40, 0x9A, 0x02, 0x6B, 0x00, 0x6C, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x64, 0x9B, -0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, -0x68, 0x9B, 0x10, 0x6C, 0x80, 0xC3, 0x40, 0xA2, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x6C, 0x9B, -0x2C, 0xEA, 0x50, 0x32, 0x01, 0x4A, 0x2C, 0xEA, -0x40, 0xC3, 0x0A, 0x94, 0x02, 0x6B, 0x40, 0xA4, -0x6C, 0xEA, 0x2C, 0xEA, 0xA0, 0xF0, 0x0B, 0x22, -0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF1, 0x18, 0x4C, -0x04, 0xD4, 0xA0, 0xF0, 0x7A, 0xA4, 0x01, 0x6A, -0x6C, 0xEA, 0x2C, 0xEA, 0x80, 0xF0, 0x14, 0x22, -0x01, 0x6C, 0xC0, 0x6D, 0x80, 0x18, 0xA9, 0x76, -0x04, 0x94, 0x05, 0x92, 0x20, 0x68, 0xA0, 0xF0, -0x7A, 0xA4, 0x4D, 0xE8, 0x04, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x2C, 0xE8, 0x17, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF7, 0x50, 0x9A, 0x01, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0x60, 0xA2, 0x2C, 0xEB, -0x60, 0xC2, 0x80, 0x18, 0xA9, 0x76, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF7, 0x74, 0x9A, 0x02, 0x6C, -0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, -0x40, 0xC3, 0x11, 0x10, 0x04, 0x92, 0x01, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0xA3, 0xF3, 0x78, 0xA2, -0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, -0x6B, 0xEB, 0x6C, 0xEA, 0x04, 0x93, 0xA3, 0xF3, -0x58, 0xC3, 0x80, 0x18, 0xC6, 0x76, 0x30, 0xF0, -0x20, 0x6A, 0xEB, 0xF1, 0x92, 0xA2, 0x08, 0x6A, -0xFF, 0x6B, 0x8C, 0xEA, 0x0D, 0x22, 0x02, 0x6A, -0x4D, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0x94, 0x9A, 0x01, 0x6D, 0x6C, 0xE8, 0x40, 0xA4, -0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x92, 0xA2, -0x10, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x0D, 0x22, -0x04, 0x6A, 0x4D, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF7, 0x94, 0x9A, 0x01, 0x6D, 0x6C, 0xE8, -0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, -0x72, 0xA2, 0x20, 0x6A, 0x6C, 0xEA, 0x05, 0x22, -0x80, 0x6A, 0x4B, 0xEA, 0x4D, 0xE8, 0xFF, 0x6A, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, -0x72, 0xA2, 0x40, 0x6A, 0x4C, 0xEB, 0x03, 0x2B, -0x4D, 0xE8, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x58, 0x9A, 0x00, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, 0x51, 0xA2, -0x03, 0x2A, 0x01, 0x6C, 0x80, 0x18, 0xEA, 0x71, -0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x72, 0xA2, -0x40, 0x6A, 0x04, 0x6C, 0x6C, 0xEA, 0x05, 0x2A, -0x80, 0x18, 0x74, 0x6F, 0x01, 0x6C, 0x01, 0x2A, -0x02, 0x6C, 0x80, 0x18, 0xEA, 0x71, 0x98, 0x10, -0x40, 0xC0, 0x04, 0x94, 0xA3, 0xF3, 0x59, 0xA4, -0x04, 0x72, 0xA0, 0xF0, 0x13, 0x61, 0x00, 0x6C, -0x80, 0x18, 0xEA, 0x71, 0xAF, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x04, 0xD2, -0xA0, 0xF0, 0x5A, 0xA2, 0x01, 0x6B, 0x6C, 0xEA, -0x2C, 0xEA, 0x80, 0xF0, 0x08, 0x22, 0x83, 0x67, -0xC0, 0x6D, 0x80, 0x18, 0xA9, 0x76, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF7, 0x14, 0x4B, 0x60, 0x9B, -0x05, 0x94, 0x20, 0x68, 0x40, 0xA3, 0x8D, 0xE8, -0x01, 0x6C, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, -0x40, 0xC3, 0x04, 0x94, 0x04, 0x6A, 0x2C, 0xE8, -0xA0, 0xF0, 0x7A, 0xA4, 0x6C, 0xEA, 0x2C, 0xEA, -0x18, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0x50, 0x9A, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, -0x60, 0xA2, 0x2C, 0xEB, 0x60, 0xC2, 0x80, 0x18, -0xA9, 0x76, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, -0x14, 0x4B, 0x60, 0x9B, 0x02, 0x6C, 0x40, 0xA3, -0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, -0x05, 0x10, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0xC6, 0x76, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x72, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, -0x04, 0x22, 0x02, 0x6A, 0x4D, 0xE8, 0xFF, 0x6A, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, -0x72, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0x04, 0x22, -0x04, 0x6A, 0x4D, 0xE8, 0xFF, 0x6A, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0x78, 0x9A, -0x40, 0x6D, 0xFF, 0x6C, 0x00, 0xC3, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xA0, 0xF0, -0x5A, 0xA0, 0xAC, 0xEA, 0x07, 0x22, 0xA3, 0xF3, -0x5A, 0xA0, 0x02, 0x72, 0x21, 0x60, 0x02, 0x6C, -0x00, 0x6D, 0x16, 0x10, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0xA3, 0xF3, -0x5A, 0xA0, 0x02, 0x72, 0x11, 0x61, 0x00, 0x18, -0xC7, 0xCB, 0x80, 0x18, 0x74, 0x6F, 0x01, 0x72, -0x05, 0x61, 0x63, 0xF6, 0x98, 0xA0, 0x01, 0x6D, -0x00, 0x6E, 0x03, 0x10, 0x00, 0x6C, 0xA4, 0x67, -0xC5, 0x67, 0x00, 0x18, 0x28, 0xCE, 0x04, 0x10, -0xE3, 0xF5, 0x5F, 0xA0, 0xA3, 0xF3, 0x5A, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x58, 0x9A, -0x22, 0x6B, 0x60, 0xC2, 0x1B, 0x10, 0x40, 0xC0, -0x04, 0x94, 0xA3, 0xF3, 0x5A, 0xA4, 0x04, 0x6C, -0x02, 0x72, 0x03, 0x60, 0x08, 0x72, 0x05, 0x61, -0x0C, 0x6C, 0x01, 0x6D, 0x00, 0x6E, 0x00, 0x18, -0x28, 0xCE, 0x00, 0x6C, 0x80, 0x18, 0xDE, 0x40, -0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, 0x90, 0xA2, -0x01, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x28, 0xCE, -0x80, 0x18, 0x34, 0x40, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x40, 0xA4, 0x01, 0x72, -0x04, 0x61, 0x00, 0x18, 0x12, 0xDD, 0x00, 0x18, -0x08, 0xDD, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x22, 0x6A, 0x7D, 0x67, -0x50, 0xC3, 0x01, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x92, 0xC3, -0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x04, 0x67, -0x4C, 0xE8, 0x6C, 0x40, 0x4C, 0xEB, 0x03, 0x5B, -0x01, 0x6C, 0x03, 0x61, 0x0E, 0xEC, 0x01, 0x5C, -0x98, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x0E, 0xF5, -0x6C, 0xA2, 0x60, 0x6A, 0x6C, 0xEA, 0x40, 0x72, -0x09, 0x60, 0x20, 0x72, 0x01, 0x61, 0x06, 0x2C, -0x03, 0x70, 0x04, 0x60, 0x02, 0x70, 0x02, 0x60, -0x09, 0x70, 0x49, 0x61, 0x09, 0x70, 0x06, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x0E, 0xF5, 0x2E, 0xA2, -0x32, 0x31, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x0E, 0xF5, 0x58, 0xA2, 0x0F, 0x69, 0x4C, 0xE9, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x4C, 0x9B, -0x91, 0x67, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6C, 0x08, 0xD2, 0x40, 0xF4, 0x4C, 0x9C, -0x01, 0x6D, 0x91, 0x67, 0x40, 0xEA, 0x9D, 0x67, -0x17, 0x6B, 0x70, 0xC4, 0x0A, 0x6B, 0x6F, 0xCC, -0x12, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x0E, 0xF5, -0x6C, 0xA3, 0x0F, 0x6C, 0x66, 0x33, 0x8C, 0xEB, -0x9D, 0x67, 0x73, 0xC4, 0x67, 0x44, 0x19, 0x4B, -0x60, 0xA3, 0x74, 0xC4, 0x08, 0x94, 0x82, 0x33, -0x9D, 0x67, 0x75, 0xC4, 0x62, 0x33, 0x76, 0xC4, -0x08, 0x94, 0x00, 0xF6, 0x82, 0x33, 0x9D, 0x67, -0x77, 0xC4, 0x58, 0xC4, 0x42, 0x33, 0x00, 0xF6, -0x42, 0x32, 0x5B, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF4, 0x5C, 0x9A, 0x79, 0xC4, 0x62, 0x33, -0x7A, 0xC4, 0x04, 0x04, 0x40, 0xEA, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x60, 0xA4, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x0F, 0x6A, 0x4C, 0xEB, 0xC3, 0xF3, -0x56, 0xA0, 0x24, 0x67, 0x0F, 0x6C, 0x70, 0x33, -0x8C, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF3, 0x56, 0xC0, 0x80, 0xF5, 0x48, 0x9B, -0x09, 0x6C, 0x40, 0xEA, 0x60, 0xA1, 0xC3, 0xF3, -0x56, 0xA0, 0x0F, 0x6C, 0x72, 0x33, 0x70, 0x33, -0x8C, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF3, 0x56, 0xC0, 0x80, 0xF5, 0x48, 0x9B, -0x09, 0x6C, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE3, 0xF3, 0x61, 0xC2, 0x61, 0xA4, -0xE3, 0xF3, 0x62, 0xC2, 0x62, 0xA4, 0xE3, 0xF3, -0x6D, 0xC2, 0x63, 0xA4, 0xE3, 0xF3, 0x6E, 0xC2, -0x64, 0xA4, 0xE3, 0xF3, 0x79, 0xC2, 0x65, 0xA4, -0xE3, 0xF3, 0x7A, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x45, 0xA4, -0x01, 0x68, 0xA4, 0x67, 0x0C, 0xEA, 0x3F, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA0, 0xF0, 0x79, 0xA2, 0xA0, 0xF0, 0xD4, 0xA2, -0x0D, 0xEB, 0xA0, 0xF0, 0x79, 0xC2, 0x81, 0xA4, -0xE0, 0xF3, 0x08, 0x6B, 0x80, 0x34, 0x88, 0x34, -0x7A, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x12, 0xEB, -0xE3, 0xF4, 0x78, 0xC2, 0x65, 0xA5, 0x66, 0x33, -0xE3, 0xF4, 0x79, 0xC2, 0x65, 0xA5, 0x82, 0xA5, -0x66, 0x33, 0x6F, 0xE4, 0xE3, 0xF4, 0x7A, 0xC2, -0x62, 0xA5, 0xE3, 0xF4, 0x7B, 0xC2, 0x80, 0xA5, -0x02, 0x6B, 0x6B, 0xEB, 0x0C, 0xEC, 0xCC, 0xEB, -0x8D, 0xEB, 0xA0, 0xF0, 0x74, 0xC2, 0x80, 0xA5, -0x0C, 0xEB, 0x86, 0x34, 0x84, 0x34, 0x8D, 0xEB, -0xA0, 0xF0, 0x74, 0xC2, 0xE3, 0xF4, 0x7B, 0xA2, -0x64, 0x73, 0x06, 0x60, 0x96, 0x73, 0x04, 0x61, -0x03, 0x6B, 0xE3, 0xF4, 0x7B, 0xC2, 0x39, 0x10, -0xE3, 0xF4, 0x1B, 0xC2, 0x36, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xEB, 0xF1, 0x0C, 0x4C, 0x07, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x95, 0xA2, 0xE0, 0xF3, -0x08, 0x6B, 0x80, 0x34, 0x88, 0x34, 0x7A, 0xEC, -0x01, 0x2B, 0xE5, 0xE8, 0x12, 0xEB, 0xA0, 0xF0, -0x75, 0xC2, 0xA0, 0xF0, 0x76, 0xA2, 0x64, 0x73, -0x06, 0x60, 0x96, 0x73, 0x04, 0x61, 0x03, 0x6B, -0xA0, 0xF0, 0x76, 0xC2, 0x02, 0x10, 0xA0, 0xF0, -0x16, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x76, 0xA2, 0xC3, 0xF3, -0xB7, 0xA2, 0x0F, 0x6C, 0x6C, 0xEC, 0x10, 0x6B, -0x6B, 0xEB, 0xAC, 0xEB, 0x8D, 0xEB, 0xC3, 0xF3, -0x77, 0xC2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0xE0, 0x6A, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0xC3, 0xF3, 0xD9, 0xA3, 0x20, 0x6D, 0xFF, 0x6A, -0xCC, 0xED, 0x4C, 0xED, 0x4C, 0xEC, 0x10, 0x2D, -0xE3, 0xF3, 0xC0, 0xA3, 0x0F, 0x6D, 0xCC, 0xED, -0x8E, 0xED, 0x0A, 0x2D, 0xC3, 0xF3, 0x94, 0xA3, -0x01, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x04, 0x23, -0x80, 0x18, 0x45, 0x6A, 0x80, 0x18, 0x85, 0x6A, +0x7F, 0x6B, 0xAC, 0xEB, 0xC4, 0xF5, 0x78, 0xC2, +0x9B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xC4, 0xF5, 0x7B, 0xA2, 0x80, 0xF0, +0x13, 0x2B, 0xC4, 0xF5, 0x98, 0xA2, 0x7F, 0x6B, +0x8C, 0xEB, 0xC4, 0xF5, 0x78, 0xC2, 0xE0, 0xF0, +0x7E, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, 0x80, 0xF0, +0x07, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, +0x48, 0x9A, 0x40, 0xEA, 0x81, 0x10, 0x75, 0xA2, +0x01, 0x4B, 0x75, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x50, 0x9A, 0x03, 0x6C, 0x4F, 0x17, +0x80, 0x18, 0xDB, 0x5E, 0x75, 0x10, 0x04, 0xF6, +0xCE, 0xA0, 0x30, 0xF0, 0x20, 0x68, 0xC9, 0xF0, +0x18, 0x48, 0xA2, 0xA0, 0x10, 0x6C, 0xFF, 0x6A, +0xAC, 0xEC, 0x51, 0x24, 0x80, 0xA0, 0x01, 0x6B, +0x6C, 0xEC, 0x4C, 0xEC, 0x4C, 0x2C, 0xCC, 0xEB, +0x4C, 0xEB, 0x62, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF6, 0x98, 0x9B, 0xFC, 0x6B, 0xC0, 0xA4, +0xCC, 0xEB, 0x60, 0xC4, 0x40, 0x6B, 0xAC, 0xEB, +0x4C, 0xEB, 0x08, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0x00, 0x6D, +0x08, 0x6E, 0x40, 0xEA, 0x62, 0xA0, 0x20, 0x6A, +0x6C, 0xEA, 0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF2, 0x56, 0xA2, 0x07, 0x6B, 0xFF, 0x6D, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF5, +0x4C, 0x9A, 0x00, 0x6C, 0x6C, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x04, 0xF6, 0xD0, 0xA2, 0x04, 0xF6, 0x4F, 0xA2, +0x10, 0xF0, 0x31, 0x6C, 0xC0, 0x36, 0x59, 0xE6, +0x60, 0xF2, 0x11, 0x6A, 0x58, 0xEE, 0x60, 0xF1, +0x17, 0x4A, 0xAF, 0xF0, 0x05, 0x4C, 0x00, 0x6D, +0x01, 0x6F, 0x12, 0xEE, 0x5B, 0xEE, 0x01, 0x2A, +0xE5, 0xE8, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x12, 0xEE, +0xFD, 0x4E, 0x40, 0xEA, 0x19, 0x10, 0x60, 0xA0, +0x01, 0x6A, 0x6C, 0xEA, 0x15, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x60, 0xF5, +0x4C, 0x9A, 0xC9, 0xF0, 0x18, 0x4C, 0xE3, 0x16, +0x30, 0xF0, 0x20, 0x6A, 0x8F, 0xF7, 0x4C, 0xA2, +0x7D, 0x67, 0x06, 0x6C, 0x58, 0xC3, 0x03, 0x6D, +0x06, 0x06, 0x01, 0x6F, 0x00, 0x18, 0xF4, 0xDA, +0x09, 0x97, 0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6C, 0xA9, 0xF2, 0x10, 0x4C, 0x00, 0x6D, +0x54, 0x6E, 0x00, 0x18, 0x98, 0xD8, 0x00, 0x18, +0x0D, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x6B, 0xF2, +0x1A, 0x4C, 0x00, 0x6D, 0x07, 0x6E, 0x30, 0xF0, +0x20, 0x68, 0x00, 0x18, 0x98, 0xD8, 0x8B, 0xF1, +0x00, 0x48, 0x0B, 0x6A, 0xE0, 0xF0, 0x5B, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x48, 0x9A, +0xE0, 0xF0, 0x9D, 0xA0, 0x00, 0x6D, 0x60, 0xA2, +0xFF, 0x6A, 0x34, 0x6E, 0x6C, 0xEA, 0x4A, 0x32, +0x01, 0x6B, 0x6C, 0xEA, 0x58, 0x33, 0x41, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x6D, 0xEA, 0x4F, 0xF7, 0x18, 0x4C, 0xE0, 0xF0, +0x5D, 0xC0, 0x00, 0x18, 0x98, 0xD8, 0xC4, 0xF5, +0x78, 0xA0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, +0x6D, 0xEA, 0x00, 0x6D, 0x07, 0x6E, 0x8B, 0xF2, +0x0F, 0x4C, 0xC4, 0xF5, 0x58, 0xC0, 0x00, 0x18, +0x98, 0xD8, 0x00, 0xF1, 0x76, 0xA0, 0x08, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x00, 0xF1, 0x56, 0xC0, +0x1E, 0x6A, 0xE4, 0xF5, 0x5F, 0xC0, 0x04, 0x6A, +0x04, 0xF6, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF5, 0x50, 0x9A, 0x01, 0x6C, 0x40, 0xEA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xA2, 0xA4, 0x41, 0xA4, +0x80, 0xA4, 0xA0, 0x35, 0x55, 0xE5, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xED, 0x80, 0x18, 0x1A, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x69, 0x80, 0xF2, -0x48, 0x9B, 0x2C, 0xED, 0xFF, 0xF7, 0x1F, 0x68, -0x11, 0xD7, 0x8C, 0xE8, 0x08, 0xD5, 0x04, 0x04, -0x00, 0x6D, 0xCC, 0xE9, 0x04, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0x9B, -0x05, 0x04, 0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9B, -0x11, 0x95, 0x04, 0x04, 0x04, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9B, -0x12, 0x95, 0x06, 0x04, 0x04, 0x6E, 0x40, 0xEA, -0x00, 0xF1, 0x00, 0x58, 0x08, 0x61, 0x0E, 0xF0, -0x40, 0x40, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, -0x00, 0xF1, 0x00, 0x5A, 0x39, 0x60, 0x08, 0x92, -0x04, 0x72, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0xFF, 0x6B, 0x49, 0xE0, -0x40, 0xA2, 0x4C, 0xEB, 0x5F, 0x21, 0x06, 0x94, -0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, -0x6D, 0xEA, 0x04, 0xD2, 0x57, 0x10, 0x08, 0x92, -0x05, 0x72, 0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, -0x49, 0xE0, 0x40, 0xAA, 0x4C, 0xEB, 0x7F, 0x21, -0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, -0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x77, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x44, 0x9A, -0x49, 0xE0, 0x60, 0x9A, 0x80, 0xF0, 0x1E, 0x21, -0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, -0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x96, 0x10, -0x01, 0xF0, 0x00, 0x58, 0x09, 0x61, 0x0D, 0xF7, -0x40, 0x40, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, -0x00, 0xF7, 0x00, 0x5A, 0x80, 0xF0, 0x17, 0x60, -0x08, 0x92, 0x04, 0x72, 0x31, 0x61, 0x1F, 0xF7, -0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x49, 0xE0, -0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0x07, 0x21, -0x06, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, 0x04, 0x92, -0x8C, 0xEA, 0x4D, 0xEB, 0x04, 0xD3, 0x1F, 0xF7, -0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x7D, 0x67, -0x41, 0xE0, 0x50, 0xA3, 0x40, 0xC0, 0x7E, 0x10, -0x08, 0x92, 0x05, 0x72, 0x32, 0x61, 0x1F, 0xF7, -0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x49, 0xE0, -0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, -0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, -0x04, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, 0x04, 0xD3, -0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, -0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x44, 0x9A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, -0x7D, 0x67, 0x41, 0xE0, 0x48, 0xAB, 0x40, 0xC8, -0x49, 0x10, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, -0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x44, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x48, 0x9A, 0x49, 0xE0, 0x60, 0x9A, 0x07, 0x21, -0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, -0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x1F, 0xF7, -0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x41, 0xE0, -0x04, 0x92, 0x40, 0xD8, 0x1B, 0x10, 0xFF, 0xF7, -0x1C, 0x6A, 0x0C, 0xEA, 0x01, 0x6D, 0x82, 0x67, -0xAB, 0xED, 0x08, 0xD2, 0x80, 0x18, 0x0D, 0x28, -0x05, 0xD2, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, -0x4C, 0xEB, 0x04, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, -0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x08, 0x94, 0x04, 0x96, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x41, 0x9C, 0x61, 0xA4, 0x01, 0xAC, 0x06, 0xD2, -0x42, 0x9C, 0xFF, 0x73, 0x07, 0xD2, 0x00, 0x6A, -0x62, 0x60, 0x7F, 0x6D, 0x6C, 0xED, 0x4C, 0x45, -0xFF, 0x6B, 0x6C, 0xEA, 0x0E, 0x5A, 0x08, 0x60, -0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, 0x82, 0xF7, -0x10, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, -0x03, 0x6A, 0x51, 0x10, 0x61, 0xA4, 0x80, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6E, 0x07, 0x03, -0x90, 0x67, 0x4C, 0xEE, 0x06, 0x07, 0x04, 0xD3, -0x80, 0x18, 0x28, 0x64, 0x28, 0x10, 0x81, 0xA4, -0x80, 0x6A, 0xFF, 0x69, 0x64, 0x67, 0x4C, 0xEB, -0x0C, 0xE9, 0x02, 0x32, 0x30, 0xF0, 0x21, 0x6C, -0x01, 0x6F, 0x12, 0xF5, 0x08, 0x4C, 0xA2, 0x67, -0xD1, 0x67, 0xEB, 0xEF, 0x08, 0xD3, 0x09, 0xD2, -0x80, 0x18, 0x9F, 0x58, 0x08, 0x93, 0x07, 0x23, -0x07, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, 0x06, 0x92, -0x8C, 0xEA, 0x4D, 0xEB, 0x06, 0xD3, 0x06, 0x92, -0x09, 0x95, 0x30, 0xF0, 0x21, 0x6C, 0x01, 0x6F, -0x12, 0xF5, 0x08, 0x4C, 0xD1, 0x67, 0xEB, 0xEF, -0x04, 0xD2, 0x80, 0x18, 0x12, 0x59, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xC7, 0xF1, -0x78, 0x9A, 0x06, 0x94, 0x61, 0xE0, 0xC7, 0xF1, -0x7C, 0x9A, 0xC7, 0xF1, 0x18, 0xDA, 0x6D, 0xE4, -0xC7, 0xF1, 0x7C, 0xDA, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, -0x90, 0x67, 0x40, 0xEA, 0x01, 0x6A, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4A, 0x8E, 0xF3, 0x0C, 0x4B, -0x07, 0xF4, 0x7C, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0x8E, 0xF3, 0x08, 0x4B, 0x07, 0xF4, 0x70, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x8E, 0xF3, 0x10, 0x4B, -0x07, 0xF4, 0x6C, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0xDF, 0x63, 0x41, 0x62, 0x40, 0xD0, 0xFF, 0xF7, -0x1F, 0x6A, 0xAC, 0xEA, 0xBD, 0x67, 0x5E, 0xC5, -0x42, 0x32, 0x5F, 0xC5, 0x0C, 0x6A, 0x5B, 0xC5, -0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xEB, -0x43, 0xF7, 0x50, 0x9A, 0x78, 0xC5, 0x03, 0x6B, -0x7A, 0xC5, 0x9C, 0xC5, 0x40, 0x9A, 0x30, 0xF0, -0x20, 0x68, 0x08, 0x04, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x54, 0x9A, 0x05, 0x05, -0x04, 0x6E, 0x40, 0x9A, 0x05, 0xD2, 0x80, 0xF2, -0x4C, 0x98, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, -0x09, 0x04, 0x04, 0x05, 0x04, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, -0x06, 0x04, 0x40, 0xEA, 0x41, 0x97, 0x40, 0x90, -0x21, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA7, 0x44, 0x30, 0xF0, 0x21, 0x6C, 0x01, 0x4D, -0x12, 0xF3, 0x18, 0x4C, 0x14, 0x6E, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xE0, 0x63, 0x3F, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x30, 0xF0, 0x20, 0x6B, 0xAC, 0xEA, 0x30, 0xF0, -0x20, 0x6D, 0x43, 0xF7, 0xB4, 0x9D, 0x43, 0xF7, -0x70, 0x9B, 0xFD, 0x67, 0x60, 0x9B, 0xC0, 0x9D, -0x01, 0x6D, 0x56, 0xC7, 0xAB, 0xED, 0xC2, 0x32, -0xB0, 0xC7, 0x59, 0xC7, 0x22, 0x6D, 0x42, 0x32, -0xB2, 0xC7, 0x5A, 0xC7, 0x0C, 0x6D, 0x62, 0x32, -0xB3, 0xC7, 0x5D, 0xC7, 0x30, 0xF0, 0x21, 0x6D, -0x42, 0x32, 0x32, 0xF4, 0xBC, 0xA5, 0x5E, 0xC7, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, -0xD8, 0xC7, 0x7C, 0xC7, 0x00, 0xF6, 0xC2, 0x36, -0x00, 0xF6, 0x62, 0x33, 0xB4, 0xC7, 0x95, 0xC7, -0xDB, 0xC7, 0x7F, 0xC7, 0x04, 0x04, 0x40, 0xEA, -0x3F, 0x97, 0x20, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x04, 0x67, 0x80, 0x18, 0x23, 0x65, 0x47, 0xA0, -0x66, 0xA0, 0x30, 0xF0, 0x20, 0x69, 0x2B, 0xF1, -0x18, 0x49, 0x40, 0x32, 0xE7, 0xF1, 0x80, 0xA1, -0x69, 0xE2, 0xE7, 0xF1, 0x52, 0xC9, 0x01, 0x6A, -0x8C, 0xEA, 0xFF, 0x6B, 0x1C, 0x2A, 0xE7, 0xF1, -0xB4, 0xA1, 0xFE, 0x4A, 0xAC, 0xEA, 0xE7, 0xF1, -0x54, 0xC1, 0x02, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, -0x52, 0x22, 0xE7, 0xF1, 0x43, 0xA1, 0x0F, 0x6D, -0xE7, 0xF1, 0x84, 0xA1, 0x4C, 0xED, 0x52, 0x36, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, -0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, -0x0D, 0x6A, 0x42, 0x61, 0x40, 0x10, 0xE7, 0xF1, -0x74, 0xA1, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xE7, 0xF1, 0x54, 0xC1, 0xE7, 0xF1, 0x50, 0xA9, -0x00, 0xF1, 0x01, 0x5A, 0x0C, 0x6A, 0x34, 0x60, -0x00, 0x6A, 0xE7, 0xF1, 0x55, 0xC1, 0xE7, 0xF1, -0x56, 0xC1, 0xE7, 0xF1, 0x01, 0xA1, 0x00, 0x6A, -0xE7, 0xF1, 0x58, 0xC9, 0xE7, 0xF1, 0x5A, 0xC9, -0x07, 0xF2, 0x40, 0xC1, 0x07, 0xF2, 0x41, 0xC1, -0x00, 0x18, 0x7B, 0xD6, 0x01, 0xE2, 0x00, 0x6A, -0xE7, 0xF1, 0xF0, 0xA9, 0x04, 0xD2, 0x05, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x78, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0xB8, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x58, 0x9A, -0x30, 0xF0, 0x21, 0x6E, 0x1C, 0x30, 0x32, 0xF3, -0x1A, 0x4E, 0x00, 0x6C, 0xB5, 0xE0, 0x59, 0xE6, -0x40, 0xEB, 0xE7, 0xF1, 0x54, 0xA1, 0x01, 0x6B, -0x6D, 0xEA, 0xE7, 0xF1, 0x54, 0xC1, 0x00, 0x6A, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF2, 0x63, 0x1B, 0x62, -0x1A, 0xD1, 0x19, 0xD0, 0x30, 0xF0, 0x21, 0x6A, -0x52, 0xF4, 0x04, 0x9A, 0x04, 0x6A, 0x61, 0xA0, -0x6C, 0xEA, 0x04, 0x22, 0x04, 0x6C, 0x00, 0x6D, -0x80, 0x18, 0x2C, 0x65, 0x42, 0xA0, 0x7F, 0x6E, -0x30, 0xF0, 0x21, 0x6C, 0x4C, 0xEE, 0x52, 0xF4, -0x11, 0x4C, 0x00, 0x6B, 0x40, 0xA4, 0xFF, 0x6D, -0x6C, 0xED, 0xCE, 0xEA, 0x47, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x60, 0xF7, 0xE2, 0x43, 0xEC, 0x37, -0x2B, 0xF1, 0x18, 0x4A, 0x5D, 0xE7, 0xE8, 0xA7, -0x1F, 0x65, 0x38, 0x67, 0x01, 0x6F, 0x2C, 0xEF, -0x01, 0x77, 0x38, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF2, 0x6C, 0x9B, 0xC7, 0xF1, 0xD5, 0xA2, -0x60, 0xF7, 0x02, 0x4D, 0x80, 0xAB, 0xE1, 0xF7, -0x1F, 0x6B, 0xAC, 0x35, 0x8C, 0xEB, 0x49, 0xE5, -0xD9, 0xE3, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0x9A, -0x03, 0xF1, 0x78, 0x9B, 0xE5, 0xAA, 0x58, 0x67, -0x75, 0xE5, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, -0x7C, 0x9B, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xE0, 0xF2, 0x58, 0x9A, 0xDC, 0x36, -0x79, 0xE6, 0x00, 0x6C, 0x40, 0xEA, 0x0C, 0x04, -0x00, 0x6D, 0x30, 0x6E, 0x00, 0x18, 0x3D, 0xD7, -0x10, 0xF0, 0x31, 0x6A, 0xB4, 0xF7, 0x19, 0x4A, -0x0C, 0xD2, 0x10, 0xF0, 0x31, 0x6A, 0xD4, 0xF7, -0x1D, 0x4A, 0x0D, 0xD2, 0x04, 0x04, 0x00, 0x6A, -0x10, 0x03, 0x10, 0x10, 0x01, 0x4B, 0x0A, 0x73, -0x08, 0x4C, 0xB0, 0x61, 0x61, 0xA0, 0x02, 0x6A, -0x6C, 0xEA, 0x1C, 0x22, 0x05, 0x6C, 0x06, 0x6D, -0x17, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, -0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, -0x0C, 0x94, 0x0D, 0x95, 0x0E, 0x96, 0x0F, 0x97, -0x00, 0x18, 0x1A, 0xE5, 0x81, 0xA0, 0x02, 0x6B, -0x8C, 0xEB, 0x08, 0x23, 0x03, 0x2A, 0x05, 0x6C, -0x08, 0x6D, 0x02, 0x10, 0x05, 0x6C, 0x07, 0x6D, -0x80, 0x18, 0x2C, 0x65, 0x1B, 0x97, 0x1A, 0x91, -0x19, 0x90, 0x0E, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x68, 0x9A, -0x23, 0x23, 0x80, 0xA3, 0x80, 0x6A, 0x4B, 0xEA, -0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x1C, 0x22, -0x30, 0xF0, 0x21, 0x6A, 0x32, 0xF3, 0x58, 0xA2, -0x01, 0x72, 0x16, 0x61, 0x61, 0xA3, 0x01, 0x6A, -0x6C, 0xEA, 0x8C, 0xEA, 0x04, 0x22, 0x06, 0x6C, -0x00, 0x6D, 0x80, 0x18, 0x2C, 0x65, 0x30, 0xF0, -0x20, 0x6B, 0xC9, 0xF2, 0x88, 0x9B, 0x7F, 0x6A, -0xA0, 0xA4, 0x4C, 0xED, 0xA0, 0xC4, 0xC9, 0xF2, -0x68, 0x9B, 0xC0, 0xA3, 0x4C, 0xEE, 0x5D, 0x11, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0x07, 0xF3, 0x8C, 0x98, 0x00, 0x6A, 0x07, 0xF2, -0x41, 0xC0, 0x07, 0xF2, 0x40, 0xC0, 0x00, 0x18, -0x5D, 0xD7, 0x30, 0xF0, 0x21, 0x6A, 0x32, 0xF3, -0x1A, 0x4A, 0x06, 0xD2, 0x06, 0x93, 0xE7, 0xF1, -0xB8, 0xA8, 0x30, 0xF0, 0x20, 0x69, 0x80, 0xF2, -0x4C, 0x99, 0x30, 0xF0, 0x21, 0x6C, 0xB5, 0xE3, -0x32, 0xF4, 0x1C, 0x4C, 0x04, 0x6E, 0x40, 0xEA, -0xE7, 0xF1, 0x58, 0xA8, 0x07, 0xF3, 0x67, 0xA0, -0x04, 0x4A, 0xE7, 0xF1, 0x58, 0xC8, 0x80, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x07, 0xF3, -0x4C, 0xD8, 0xC9, 0xF2, 0x48, 0xDB, 0x40, 0x10, -0x06, 0x93, 0xE7, 0xF1, 0xB8, 0xA8, 0x80, 0xF2, -0x4C, 0x99, 0x30, 0xF0, 0x21, 0x6C, 0xB5, 0xE3, -0x52, 0xF4, 0x00, 0x4C, 0x02, 0x6E, 0x40, 0xEA, -0xE7, 0xF1, 0x58, 0xA8, 0x07, 0xF3, 0x68, 0xA0, -0x02, 0x4A, 0xE7, 0xF1, 0x58, 0xC8, 0x7F, 0x6A, -0x6C, 0xEA, 0x03, 0x72, 0x17, 0x61, 0x07, 0xF3, -0x89, 0xA0, 0x00, 0x18, 0x6C, 0xD7, 0x07, 0xF3, -0x4C, 0xD8, 0xE7, 0xF1, 0xB8, 0xA8, 0x82, 0x67, -0x06, 0x92, 0x80, 0xF2, 0x6C, 0x99, 0x07, 0xF3, -0xC9, 0xA0, 0xB5, 0xE2, 0x40, 0xEB, 0x07, 0xF3, -0x6C, 0x98, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, -0x68, 0xDA, 0x07, 0x10, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x07, 0xF3, 0x4C, 0xD8, 0xC9, 0xF2, -0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE7, 0xF1, 0x78, 0xAA, 0x07, 0xF3, -0x89, 0xA2, 0x6D, 0xE4, 0xE7, 0xF1, 0x78, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, 0x48, 0x9A, -0x61, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0x04, 0x22, -0x00, 0x6C, 0xA4, 0x67, 0x80, 0x18, 0x2C, 0x65, -0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF1, 0x18, 0x4C, -0x07, 0xF3, 0x65, 0xA4, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF4, 0x58, 0x9A, 0x07, 0xF3, 0x84, 0xA4, -0x0F, 0x6D, 0x6C, 0xED, 0x72, 0x36, 0xFF, 0x68, -0x40, 0xEA, 0x27, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF2, 0x48, 0x9A, 0x61, 0xA2, 0x08, 0x6A, -0x6C, 0xEA, 0x0C, 0xEA, 0x04, 0x22, 0x01, 0x6C, -0x02, 0x6D, 0x80, 0x18, 0x2C, 0x65, 0x30, 0xF0, -0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, 0xE7, 0xF1, -0x60, 0xA0, 0x20, 0x6A, 0x6C, 0xEA, 0x80, 0xF0, -0x10, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, -0x54, 0x9A, 0x40, 0xEA, 0xE7, 0xF1, 0x74, 0xA0, -0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xE7, 0xF1, -0x54, 0xC0, 0x01, 0x6C, 0xE7, 0xF1, 0xB2, 0xA8, -0xCC, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, -0x48, 0x9A, 0x61, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, -0x0C, 0xEA, 0x04, 0x22, 0x01, 0x6C, 0xA4, 0x67, -0x80, 0x18, 0x2C, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x07, 0xF3, 0xA7, 0xA2, -0x7F, 0x6B, 0xFF, 0x6C, 0xAC, 0xEB, 0x56, 0x23, -0x01, 0x73, 0x4D, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF2, 0x48, 0x9A, 0x61, 0xA2, 0x04, 0x6A, -0x6C, 0xEA, 0x8C, 0xEA, 0x04, 0x22, 0x02, 0x6C, -0x00, 0x6D, 0x80, 0x18, 0x2C, 0x65, 0x30, 0xF0, -0x20, 0x6A, 0x60, 0xF4, 0x4C, 0x9A, 0x00, 0x6C, -0x40, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF2, 0x48, 0x9A, 0x61, 0xA2, 0x02, 0x6A, -0x6C, 0xEA, 0x17, 0x22, 0x03, 0x6C, 0xA4, 0x67, -0x12, 0x10, 0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF3, -0x8D, 0xA2, 0x00, 0x6D, 0x80, 0x18, 0x65, 0x2A, -0x14, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, -0x48, 0x9A, 0x61, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, -0x04, 0x22, 0x03, 0x6C, 0x05, 0x6D, 0x80, 0x18, -0x2C, 0x65, 0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF3, -0x78, 0xA2, 0x20, 0x6A, 0x6C, 0xEA, 0x2D, 0x2A, -0x6A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF2, -0x48, 0x9A, 0x61, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, -0x04, 0x22, 0x03, 0x6C, 0x04, 0x6D, 0x80, 0x18, -0x2C, 0x65, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, -0x32, 0xF3, 0x79, 0xC2, 0x07, 0x10, 0xE7, 0xF1, -0xA0, 0xA2, 0x20, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, -0x14, 0x2B, 0x48, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF2, 0x48, 0x9A, 0x61, 0xA2, 0x80, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x21, 0x6A, 0x32, 0xF3, -0x59, 0xA2, 0x01, 0x72, 0x02, 0x60, 0x80, 0x18, -0x85, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE7, 0xF1, 0x75, 0xA2, 0x07, 0xF3, -0x86, 0xA2, 0x01, 0x4B, 0xE7, 0xF1, 0x75, 0xC2, -0xE7, 0xF1, 0x7A, 0xAA, 0x6D, 0xE4, 0xE7, 0xF1, -0x7A, 0xCA, 0xE7, 0xF1, 0x95, 0xA2, 0xE7, 0xF1, -0x62, 0xA2, 0x8E, 0xEB, 0x0C, 0x2B, 0x07, 0xF3, -0xC6, 0xA2, 0x10, 0xF0, 0x32, 0x6C, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xD3, 0x00, 0xF3, 0x4C, 0x9A, -0xD3, 0xF2, 0x0D, 0x4C, 0x0C, 0x10, 0x07, 0xF3, -0xC6, 0xA2, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x32, 0x6C, 0xB3, 0xF2, 0x01, 0x4C, 0x64, 0x6B, -0x78, 0xEE, 0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, -0x40, 0xEA, 0x19, 0x10, 0xE7, 0xF1, 0x94, 0xA2, -0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE7, 0xF1, -0x74, 0xC2, 0x02, 0x6C, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF1, -0x94, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xE7, 0xF1, 0x74, 0xC2, 0x03, 0x6C, 0xE7, 0xF1, -0xB2, 0xAA, 0x80, 0x18, 0x08, 0x65, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF1, 0x94, 0xA2, -0x01, 0x6B, 0x8C, 0xEB, 0x08, 0x23, 0x07, 0xF3, -0x62, 0xA2, 0x03, 0x23, 0x00, 0x6B, 0x07, 0xF3, -0x62, 0xC2, 0x80, 0x18, 0xCC, 0x65, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE7, 0xF1, 0xB4, 0xA2, 0x01, 0x6C, -0xFF, 0x6B, 0x8C, 0xED, 0x40, 0xF1, 0x03, 0x25, -0x07, 0xF3, 0x0C, 0x9A, 0x27, 0x20, 0xC0, 0xA0, -0x80, 0x6D, 0xAB, 0xED, 0xCC, 0xED, 0x6C, 0xED, -0x21, 0x25, 0x07, 0xF2, 0x40, 0xA2, 0x01, 0x72, -0x1D, 0x61, 0x41, 0xA0, 0x4C, 0xEC, 0x6C, 0xEC, -0x04, 0x24, 0x06, 0x6C, 0x00, 0x6D, 0x80, 0x18, -0x2C, 0x65, 0x40, 0xA0, 0x7F, 0x6B, 0x64, 0x6E, -0x4C, 0xEB, 0xD8, 0xEB, 0x00, 0x6A, 0x60, 0xC0, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x10, 0xF0, 0x32, 0x6C, 0xD3, 0xF2, -0x0D, 0x4C, 0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, -0x40, 0xEA, 0x19, 0x11, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0xE7, 0xF1, 0x80, 0xA0, -0x03, 0x6D, 0xFF, 0x6B, 0x8E, 0x32, 0xAC, 0xEA, -0x02, 0x72, 0x7E, 0x60, 0x03, 0x72, 0xC0, 0xF0, -0x1F, 0x60, 0x01, 0x72, 0x27, 0x60, 0xE7, 0xF1, -0xB4, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, -0xE7, 0xF1, 0x54, 0xC0, 0x02, 0x6A, 0x8C, 0xEA, -0x6C, 0xEA, 0x11, 0x22, 0xE7, 0xF1, 0x43, 0xA0, -0x0F, 0x6D, 0xE7, 0xF1, 0x84, 0xA0, 0x4C, 0xED, -0x52, 0x36, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, -0x01, 0x72, 0x01, 0x6C, 0x01, 0x61, 0x00, 0x6C, -0xE7, 0xF1, 0xB2, 0xA8, 0x80, 0x18, 0x08, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, -0x40, 0xEA, 0xC0, 0x10, 0x02, 0x6A, 0x8C, 0xEA, -0x6C, 0xEA, 0x11, 0x22, 0xE7, 0xF1, 0x43, 0xA0, -0x0F, 0x6D, 0xE7, 0xF1, 0x84, 0xA0, 0x4C, 0xED, -0x52, 0x36, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, -0x01, 0x72, 0xA0, 0xF0, 0x1C, 0x61, 0xE7, 0xF1, -0xB2, 0xA8, 0x00, 0x6C, 0x80, 0x18, 0x08, 0x65, -0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF3, 0x5D, 0xA2, -0x5A, 0x33, 0x02, 0x73, 0x0D, 0x60, 0x03, 0x73, -0x0F, 0x60, 0x01, 0x73, 0x05, 0x60, 0x3F, 0x6E, -0x4C, 0xEE, 0xFF, 0x6A, 0x4C, 0xEE, 0x0E, 0x10, -0x3F, 0x6B, 0x4C, 0xEB, 0x0A, 0x6E, 0x08, 0x10, -0x3F, 0x6B, 0x4C, 0xEB, 0x64, 0x6E, 0x04, 0x10, -0x3F, 0x6B, 0x4C, 0xEB, 0xE0, 0xF3, 0x08, 0x6E, -0xD8, 0xEB, 0x12, 0xEE, 0x0A, 0x6A, 0x58, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xE7, 0xF1, 0x7A, 0xAA, 0x10, 0xF0, 0x32, 0x6C, -0xB3, 0xF2, 0x01, 0x4C, 0x00, 0x6D, 0x12, 0xEE, -0x7B, 0xE6, 0x01, 0x6B, 0x07, 0xF3, 0x62, 0xC2, -0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x4C, 0x9A, 0x64, 0x6B, 0x5F, 0x10, -0x02, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x10, 0x22, -0xE7, 0xF1, 0x43, 0xA0, 0x0F, 0x6D, 0xE7, 0xF1, -0x84, 0xA0, 0x4C, 0xED, 0x52, 0x36, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, -0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, 0x6B, 0x61, -0xE7, 0xF1, 0xB2, 0xA8, 0x00, 0x6C, 0x80, 0x18, -0x08, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE7, 0xF1, 0x87, 0xA2, 0xE7, 0xF1, -0x76, 0xA2, 0xFF, 0x4C, 0x6E, 0xEC, 0x03, 0x2C, -0xE7, 0xF1, 0x46, 0xA2, 0x05, 0x10, 0x01, 0x4B, -0xE7, 0xF1, 0x76, 0xC2, 0xE7, 0xF1, 0x45, 0xA2, -0x5A, 0x33, 0x02, 0x73, 0x0D, 0x60, 0x03, 0x73, -0x0F, 0x60, 0x01, 0x73, 0x05, 0x60, 0x3F, 0x6B, -0x4C, 0xEB, 0xFF, 0x6A, 0x4C, 0xEB, 0x0E, 0x10, -0x3F, 0x6B, 0x4C, 0xEB, 0x0A, 0x6A, 0x08, 0x10, -0x3F, 0x6B, 0x4C, 0xEB, 0x64, 0x6A, 0x04, 0x10, -0x3F, 0x6B, 0x4C, 0xEB, 0xE0, 0xF3, 0x08, 0x6A, -0x58, 0xEB, 0x12, 0xEB, 0x0A, 0x6A, 0x58, 0xEB, -0x30, 0xF0, 0x21, 0x6A, 0x32, 0xF3, 0x52, 0xAA, -0x01, 0x6C, 0x00, 0x6D, 0x64, 0x6E, 0x12, 0xEB, -0x4F, 0xE3, 0x30, 0xF0, 0x21, 0x6A, 0x32, 0xF4, -0x9A, 0xC2, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x32, 0x6C, 0xB3, 0xF2, 0x01, 0x4C, 0xD8, 0xEB, -0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEA, 0x0A, 0x10, -0xE7, 0xF1, 0xB2, 0xA8, 0x00, 0x6C, 0x80, 0x18, -0x08, 0x65, 0x01, 0x6A, 0x07, 0xF3, 0x42, 0xC0, -0x80, 0x18, 0xA8, 0x66, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, 0xE7, 0xF1, -0x75, 0xC2, 0x00, 0x6B, 0xE7, 0xF1, 0x7A, 0xCA, -0xE7, 0xF1, 0x78, 0xCA, 0x07, 0xF2, 0x61, 0xC2, -0x07, 0xF2, 0x60, 0xC2, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xE7, 0xF1, -0x94, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0xE7, 0xF1, -0xB2, 0xAA, 0x8C, 0xEB, 0xE7, 0xF1, 0x74, 0xC2, -0x01, 0x6C, 0x80, 0x18, 0x08, 0x65, 0x07, 0x97, -0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x69, 0x04, 0x67, -0x80, 0xF4, 0x4C, 0x9A, 0x2C, 0xE8, 0x2C, 0xED, -0xCC, 0xE9, 0x04, 0xD5, 0x90, 0x67, 0xD1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x0F, 0x58, 0x43, 0xF2, 0x18, 0xC2, -0x43, 0xF2, 0x30, 0xDA, 0x01, 0x6B, 0x01, 0x60, -0x00, 0x6B, 0x43, 0xF2, 0x74, 0xDA, 0x90, 0x67, -0x00, 0x18, 0x9D, 0xD9, 0x04, 0x96, 0x30, 0xF0, -0x21, 0x6C, 0xB0, 0x67, 0xF1, 0x67, 0x12, 0xF5, -0x08, 0x4C, 0x80, 0x18, 0xA8, 0x5D, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6B, 0xCC, 0xEB, -0x17, 0x24, 0xE3, 0x5B, 0x15, 0x60, 0x01, 0x6A, -0x4B, 0xEA, 0x40, 0xC4, 0x1F, 0x6A, 0x42, 0xC4, -0x47, 0x43, 0x01, 0x4A, 0x43, 0xC4, 0x00, 0x6A, -0x44, 0xC4, 0x46, 0x43, 0x45, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x06, 0x4C, -0xC3, 0x67, 0x40, 0xEA, 0x01, 0x6A, 0x01, 0x10, -0x00, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x0A, 0x93, -0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEB, 0xDB, 0x5B, -0x4C, 0xEE, 0x00, 0x6A, 0x12, 0x60, 0x00, 0xA4, -0xFE, 0x4A, 0xA2, 0xC4, 0x0C, 0xEA, 0x40, 0xC4, -0x00, 0x6A, 0xC3, 0xC4, 0x44, 0xC4, 0x65, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0x06, 0x4C, 0xA7, 0x67, 0xC3, 0x67, 0x40, 0xEA, -0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xA4, 0x86, 0xF1, 0x08, 0x48, 0x40, 0xF0, -0x7F, 0xA0, 0x46, 0x32, 0x24, 0x67, 0x6E, 0xEA, -0x05, 0x22, 0x55, 0x98, 0x01, 0x4A, 0x55, 0xD8, -0x03, 0x6A, 0x1A, 0x10, 0x40, 0xF0, 0x9C, 0xA8, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, -0x80, 0xF2, 0x4C, 0x9A, 0xC1, 0xA1, 0x1B, 0xF1, -0x08, 0x4B, 0x91, 0xE3, 0xA2, 0x41, 0x40, 0xEA, -0x61, 0xA1, 0x40, 0xF0, 0x5C, 0xA8, 0x49, 0xE3, -0x40, 0xF0, 0x5C, 0xC8, 0x40, 0xF0, 0x5F, 0xA0, -0x01, 0x4A, 0x40, 0xF0, 0x5F, 0xC0, 0x00, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x4B, 0xF2, 0x09, 0x4C, 0x07, 0x6E, +0x40, 0xEA, 0x00, 0x18, 0x0F, 0xD0, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF7, 0x10, 0x9A, 0x0A, 0xD4, 0xFF, 0x69, +0x40, 0xA0, 0x0A, 0x95, 0x30, 0xF0, 0x20, 0x6C, +0x62, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x4C, 0x9A, 0x2C, 0xEB, 0x05, 0xD3, 0x2B, 0xF2, +0x1A, 0x4C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x74, 0x9A, 0xF8, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x58, 0x9A, 0x02, 0x6B, +0x00, 0x6C, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF7, 0x7C, 0x9B, 0x80, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF7, 0x60, 0x9B, 0x10, 0x6C, +0x80, 0xC3, 0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF7, 0x64, 0x9B, 0x2C, 0xEA, 0x50, 0x32, +0x01, 0x4A, 0x2C, 0xEA, 0x40, 0xC3, 0x0A, 0x94, +0x02, 0x6B, 0x40, 0xA4, 0x6C, 0xEA, 0x2C, 0xEA, +0xA0, 0xF0, 0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6C, +0x8B, 0xF1, 0x00, 0x4C, 0x04, 0xD4, 0xA0, 0xF0, +0x7A, 0xA4, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x80, 0xF0, 0x14, 0x22, 0x01, 0x6C, 0xC0, 0x6D, +0x80, 0x18, 0x92, 0x78, 0x04, 0x94, 0x05, 0x92, +0x20, 0x68, 0xA0, 0xF0, 0x7A, 0xA4, 0x4D, 0xE8, +0x04, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x2C, 0xE8, +0x17, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, +0x48, 0x9A, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x60, 0xA2, 0x2C, 0xEB, 0x60, 0xC2, 0x80, 0x18, +0x92, 0x78, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, +0x6C, 0x9A, 0x02, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, +0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x11, 0x10, +0x04, 0x92, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0xA3, 0xF3, 0x7C, 0xA2, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, +0x04, 0x93, 0xA3, 0xF3, 0x5C, 0xC3, 0x80, 0x18, +0xAF, 0x78, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, +0x9A, 0xA2, 0x08, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, +0x0D, 0x22, 0x02, 0x6A, 0x4D, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF7, 0x8C, 0x9A, 0x01, 0x6D, +0x6C, 0xE8, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, +0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0x2B, 0xF2, 0x9A, 0xA2, 0x10, 0x6A, 0xFF, 0x6B, +0x8C, 0xEA, 0x0D, 0x22, 0x04, 0x6A, 0x4D, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x8C, 0x9A, +0x01, 0x6D, 0x6C, 0xE8, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x2B, 0xF2, 0x7A, 0xA2, 0x20, 0x6A, +0x6C, 0xEA, 0x05, 0x22, 0x80, 0x6A, 0x4B, 0xEA, +0x4D, 0xE8, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x2B, 0xF2, 0x7A, 0xA2, 0x40, 0x6A, +0x4C, 0xEB, 0x03, 0x2B, 0x4D, 0xE8, 0xFF, 0x6A, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, +0x50, 0x9A, 0x00, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x2E, 0xF5, 0x5D, 0xA2, 0x03, 0x2A, 0x01, 0x6C, +0x80, 0x18, 0xD2, 0x73, 0x30, 0xF0, 0x20, 0x6A, +0x2B, 0xF2, 0x7A, 0xA2, 0x40, 0x6A, 0x04, 0x6C, +0x6C, 0xEA, 0x05, 0x2A, 0x80, 0x18, 0x5C, 0x71, +0x01, 0x6C, 0x01, 0x2A, 0x02, 0x6C, 0x80, 0x18, +0xD2, 0x73, 0x98, 0x10, 0x40, 0xC0, 0x04, 0x94, +0xA3, 0xF3, 0x5D, 0xA4, 0x04, 0x72, 0xA0, 0xF0, +0x13, 0x61, 0x00, 0x6C, 0x80, 0x18, 0xD2, 0x73, +0xAF, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x04, 0xD2, 0xA0, 0xF0, 0x5A, 0xA2, +0x01, 0x6B, 0x6C, 0xEA, 0x2C, 0xEA, 0x80, 0xF0, +0x08, 0x22, 0x83, 0x67, 0xC0, 0x6D, 0x80, 0x18, +0x92, 0x78, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, +0x0C, 0x4B, 0x60, 0x9B, 0x05, 0x94, 0x20, 0x68, +0x40, 0xA3, 0x8D, 0xE8, 0x01, 0x6C, 0x2C, 0xEA, +0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x04, 0x94, +0x04, 0x6A, 0x2C, 0xE8, 0xA0, 0xF0, 0x7A, 0xA4, +0x6C, 0xEA, 0x2C, 0xEA, 0x18, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF7, 0x48, 0x9A, 0x01, 0x6C, +0x10, 0xF0, 0x00, 0x6D, 0x60, 0xA2, 0x2C, 0xEB, +0x60, 0xC2, 0x80, 0x18, 0x92, 0x78, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF7, 0x0C, 0x4B, 0x60, 0x9B, +0x02, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, +0x2C, 0xEA, 0x40, 0xC3, 0x05, 0x10, 0x01, 0x6C, +0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0xAF, 0x78, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x7A, 0xA2, +0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x22, 0x02, 0x6A, +0x4D, 0xE8, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x2B, 0xF2, 0x7A, 0xA2, 0x10, 0x6A, +0x6C, 0xEA, 0x04, 0x22, 0x04, 0x6A, 0x4D, 0xE8, +0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF7, 0x70, 0x9A, 0x40, 0x6D, 0xFF, 0x6C, +0x00, 0xC3, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xA0, 0xF0, 0x5A, 0xA0, 0xAC, 0xEA, +0x07, 0x22, 0xA3, 0xF3, 0x5E, 0xA0, 0x02, 0x72, +0x21, 0x60, 0x02, 0x6C, 0x00, 0x6D, 0x16, 0x10, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0xA3, 0xF3, 0x5E, 0xA0, 0x02, 0x72, +0x11, 0x61, 0x00, 0x18, 0x82, 0xCC, 0x80, 0x18, +0x5C, 0x71, 0x01, 0x72, 0x05, 0x61, 0x63, 0xF6, +0x9C, 0xA0, 0x01, 0x6D, 0x00, 0x6E, 0x03, 0x10, +0x00, 0x6C, 0xA4, 0x67, 0xC5, 0x67, 0x00, 0x18, +0x3E, 0xCF, 0x04, 0x10, 0x03, 0xF6, 0x43, 0xA0, +0xA3, 0xF3, 0x5E, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF7, 0x50, 0x9A, 0x22, 0x6B, 0x60, 0xC2, +0x1B, 0x10, 0x40, 0xC0, 0x04, 0x94, 0xA3, 0xF3, +0x5E, 0xA4, 0x04, 0x6C, 0x02, 0x72, 0x03, 0x60, +0x08, 0x72, 0x05, 0x61, 0x0C, 0x6C, 0x01, 0x6D, +0x00, 0x6E, 0x00, 0x18, 0x3E, 0xCF, 0x00, 0x6C, +0x80, 0x18, 0xE8, 0x40, 0x30, 0xF0, 0x20, 0x6A, +0xEE, 0xF7, 0x9C, 0xA2, 0x01, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0x3E, 0xCF, 0x80, 0x18, 0x3E, 0x40, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x40, 0xA4, 0x01, 0x72, 0x04, 0x61, 0x00, 0x18, +0x86, 0xDE, 0x00, 0x18, 0x7C, 0xDE, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x22, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x01, 0x6A, +0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x5C, 0x9A, 0x92, 0xC3, 0x04, 0x04, 0x40, 0xEA, +0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0x6C, 0x40, +0x4C, 0xEB, 0x03, 0x5B, 0x01, 0x6C, 0x03, 0x61, +0x0E, 0xEC, 0x01, 0x5C, 0x98, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0x4E, 0xF5, 0x78, 0xA2, 0x60, 0x6A, +0x6C, 0xEA, 0x40, 0x72, 0x09, 0x60, 0x20, 0x72, +0x01, 0x61, 0x06, 0x2C, 0x03, 0x70, 0x04, 0x60, +0x02, 0x70, 0x02, 0x60, 0x09, 0x70, 0x49, 0x61, +0x09, 0x70, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x4E, 0xF5, 0x3A, 0xA2, 0x32, 0x31, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x6E, 0xF5, 0x44, 0xA2, +0x0F, 0x69, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x4C, 0x9B, 0x91, 0x67, 0x00, 0x6D, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x08, 0xD2, +0x40, 0xF4, 0x4C, 0x9C, 0x01, 0x6D, 0x91, 0x67, +0x40, 0xEA, 0x9D, 0x67, 0x17, 0x6B, 0x70, 0xC4, +0x0A, 0x6B, 0x6F, 0xCC, 0x12, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0x4E, 0xF5, 0x78, 0xA3, 0x0F, 0x6C, +0x66, 0x33, 0x8C, 0xEB, 0x9D, 0x67, 0x73, 0xC4, +0x67, 0x44, 0x19, 0x4B, 0x60, 0xA3, 0x74, 0xC4, +0x08, 0x94, 0x82, 0x33, 0x9D, 0x67, 0x75, 0xC4, +0x62, 0x33, 0x76, 0xC4, 0x08, 0x94, 0x00, 0xF6, +0x82, 0x33, 0x9D, 0x67, 0x77, 0xC4, 0x58, 0xC4, +0x42, 0x33, 0x00, 0xF6, 0x42, 0x32, 0x5B, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, +0x79, 0xC4, 0x62, 0x33, 0x7A, 0xC4, 0x04, 0x04, +0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x60, 0xA4, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0x0F, 0x6A, +0x4C, 0xEB, 0xC3, 0xF3, 0x5A, 0xA0, 0x24, 0x67, +0x0F, 0x6C, 0x70, 0x33, 0x8C, 0xEA, 0x6D, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x5A, 0xC0, +0x80, 0xF5, 0x48, 0x9B, 0x09, 0x6C, 0x40, 0xEA, +0x60, 0xA1, 0xC3, 0xF3, 0x5A, 0xA0, 0x0F, 0x6C, +0x72, 0x33, 0x70, 0x33, 0x8C, 0xEA, 0x6D, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0x5A, 0xC0, +0x80, 0xF5, 0x48, 0x9B, 0x09, 0x6C, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x60, 0xA4, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xE3, 0xF3, +0x65, 0xC2, 0x61, 0xA4, 0xE3, 0xF3, 0x66, 0xC2, +0x62, 0xA4, 0xE3, 0xF3, 0x71, 0xC2, 0x63, 0xA4, +0xE3, 0xF3, 0x72, 0xC2, 0x64, 0xA4, 0xE3, 0xF3, +0x7D, 0xC2, 0x65, 0xA4, 0xE3, 0xF3, 0x7E, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x45, 0xA4, 0x01, 0x68, 0xA4, 0x67, +0x0C, 0xEA, 0x3F, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, 0x79, 0xA2, +0xA0, 0xF0, 0xD4, 0xA2, 0x0D, 0xEB, 0xA0, 0xF0, +0x79, 0xC2, 0x81, 0xA4, 0xE0, 0xF3, 0x08, 0x6B, +0x80, 0x34, 0x88, 0x34, 0x7A, 0xEC, 0x01, 0x2B, +0xE5, 0xE8, 0x12, 0xEB, 0xE3, 0xF4, 0x7C, 0xC2, +0x65, 0xA5, 0x66, 0x33, 0xE3, 0xF4, 0x7D, 0xC2, +0x65, 0xA5, 0x82, 0xA5, 0x66, 0x33, 0x6F, 0xE4, +0xE3, 0xF4, 0x7E, 0xC2, 0x62, 0xA5, 0xE3, 0xF4, +0x7F, 0xC2, 0x80, 0xA5, 0x02, 0x6B, 0x6B, 0xEB, +0x0C, 0xEC, 0xCC, 0xEB, 0x8D, 0xEB, 0xA0, 0xF0, +0x74, 0xC2, 0x80, 0xA5, 0x0C, 0xEB, 0x86, 0x34, +0x84, 0x34, 0x8D, 0xEB, 0xA0, 0xF0, 0x74, 0xC2, +0xE3, 0xF4, 0x7F, 0xA2, 0x64, 0x73, 0x06, 0x60, +0x96, 0x73, 0x04, 0x61, 0x03, 0x6B, 0xE3, 0xF4, +0x7F, 0xC2, 0x39, 0x10, 0xE3, 0xF4, 0x1F, 0xC2, +0x36, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF2, +0x14, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, +0x95, 0xA2, 0xE0, 0xF3, 0x08, 0x6B, 0x80, 0x34, +0x88, 0x34, 0x7A, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, +0x12, 0xEB, 0xA0, 0xF0, 0x75, 0xC2, 0xA0, 0xF0, +0x76, 0xA2, 0x64, 0x73, 0x06, 0x60, 0x96, 0x73, +0x04, 0x61, 0x03, 0x6B, 0xA0, 0xF0, 0x76, 0xC2, +0x02, 0x10, 0xA0, 0xF0, 0x16, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, +0x76, 0xA2, 0xC3, 0xF3, 0xBB, 0xA2, 0x0F, 0x6C, +0x6C, 0xEC, 0x10, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, +0x8D, 0xEB, 0xC3, 0xF3, 0x7B, 0xC2, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xC8, 0x6C, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xC3, 0xF3, 0xDD, 0xA3, +0x20, 0x6D, 0xFF, 0x6A, 0xCC, 0xED, 0x4C, 0xED, +0x4C, 0xEC, 0x10, 0x2D, 0xE3, 0xF3, 0xC4, 0xA3, +0x0F, 0x6D, 0xCC, 0xED, 0x8E, 0xED, 0x0A, 0x2D, +0xC3, 0xF3, 0x98, 0xA3, 0x01, 0x6B, 0x8C, 0xEB, +0x4C, 0xEB, 0x04, 0x23, 0x80, 0x18, 0xD0, 0x6B, +0x80, 0x18, 0x6D, 0x6C, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x69, 0x80, 0xF2, 0x48, 0x9B, 0x2C, 0xED, +0xFF, 0xF7, 0x1F, 0x68, 0x11, 0xD7, 0x8C, 0xE8, +0x08, 0xD5, 0x04, 0x04, 0x00, 0x6D, 0xCC, 0xE9, +0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x48, 0x9B, 0x05, 0x04, 0x00, 0x6D, +0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x4C, 0x9B, 0x11, 0x95, 0x04, 0x04, +0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x4C, 0x9B, 0x12, 0x95, 0x06, 0x04, +0x04, 0x6E, 0x40, 0xEA, 0x00, 0xF1, 0x00, 0x58, +0x08, 0x61, 0x0E, 0xF0, 0x40, 0x40, 0xFF, 0xF7, +0x1F, 0x6B, 0x6C, 0xEA, 0x00, 0xF1, 0x00, 0x5A, +0x39, 0x60, 0x08, 0x92, 0x04, 0x72, 0x11, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, +0xFF, 0x6B, 0x49, 0xE0, 0x40, 0xA2, 0x4C, 0xEB, +0x5F, 0x21, 0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, +0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, +0x57, 0x10, 0x08, 0x92, 0x05, 0x72, 0x12, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0x49, 0xE0, 0x40, 0xAA, +0x4C, 0xEB, 0x7F, 0x21, 0x06, 0x94, 0x8F, 0xEA, +0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, +0x04, 0xD2, 0x77, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x48, 0x9A, 0x49, 0xE0, 0x60, 0x9A, +0x80, 0xF0, 0x1E, 0x21, 0x06, 0x94, 0x8F, 0xEA, +0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, +0x04, 0xD2, 0x96, 0x10, 0x01, 0xF0, 0x00, 0x58, +0x09, 0x61, 0x0D, 0xF7, 0x40, 0x40, 0xFF, 0xF7, +0x1F, 0x6B, 0x6C, 0xEA, 0x00, 0xF7, 0x00, 0x5A, +0x80, 0xF0, 0x17, 0x60, 0x08, 0x92, 0x04, 0x72, +0x31, 0x61, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x4C, 0x9A, 0x49, 0xE0, 0x60, 0xA2, 0xFF, 0x6A, +0x6C, 0xEA, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, +0x4C, 0xEB, 0x04, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, +0x04, 0xD3, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x4C, 0x9A, 0x7D, 0x67, 0x41, 0xE0, 0x50, 0xA3, +0x40, 0xC0, 0x7E, 0x10, 0x08, 0x92, 0x05, 0x72, +0x32, 0x61, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x4C, 0x9A, 0x49, 0xE0, 0x60, 0xAA, 0xFF, 0xF7, +0x1F, 0x6A, 0x6C, 0xEA, 0x07, 0x21, 0x06, 0x94, +0x8F, 0xEB, 0x4C, 0xEB, 0x04, 0x92, 0x8C, 0xEA, +0x4D, 0xEB, 0x04, 0xD3, 0x1F, 0xF7, 0x00, 0x6A, +0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x4C, 0x9A, 0x7D, 0x67, 0x41, 0xE0, +0x48, 0xAB, 0x40, 0xC8, 0x49, 0x10, 0x1F, 0xF7, +0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0x49, 0xE0, +0x60, 0x9A, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEA, +0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, +0x04, 0xD2, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x4C, 0x9A, 0x41, 0xE0, 0x04, 0x92, 0x40, 0xD8, +0x1B, 0x10, 0xFF, 0xF7, 0x1C, 0x6A, 0x0C, 0xEA, +0x01, 0x6D, 0x82, 0x67, 0xAB, 0xED, 0x08, 0xD2, +0x80, 0x18, 0x1C, 0x28, 0x05, 0xD2, 0x07, 0x21, +0x06, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, 0x04, 0x92, +0x8C, 0xEA, 0x4D, 0xEB, 0x04, 0xD3, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x08, 0x94, +0x04, 0x96, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x41, 0x9C, 0x61, 0xA4, +0x01, 0xAC, 0x06, 0xD2, 0x42, 0x9C, 0xFF, 0x73, +0x07, 0xD2, 0x00, 0x6A, 0x62, 0x60, 0x7F, 0x6D, +0x6C, 0xED, 0x4C, 0x45, 0xFF, 0x6B, 0x6C, 0xEA, +0x0E, 0x5A, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0x32, 0x82, 0xF7, 0x10, 0x4B, 0x4D, 0xE3, +0x40, 0x9B, 0x00, 0xEA, 0x03, 0x6A, 0x51, 0x10, +0x61, 0xA4, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xFF, 0x6E, 0x07, 0x03, 0x90, 0x67, 0x4C, 0xEE, +0x06, 0x07, 0x04, 0xD3, 0x80, 0x18, 0xB3, 0x65, +0x28, 0x10, 0x81, 0xA4, 0x80, 0x6A, 0xFF, 0x69, +0x64, 0x67, 0x4C, 0xEB, 0x0C, 0xE9, 0x02, 0x32, +0x30, 0xF0, 0x21, 0x6C, 0x01, 0x6F, 0xD2, 0xF5, +0x08, 0x4C, 0xA2, 0x67, 0xD1, 0x67, 0xEB, 0xEF, +0x08, 0xD3, 0x09, 0xD2, 0x80, 0x18, 0x05, 0x59, +0x08, 0x93, 0x07, 0x23, 0x07, 0x94, 0x8F, 0xEB, +0x4C, 0xEB, 0x06, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, +0x06, 0xD3, 0x06, 0x92, 0x09, 0x95, 0x30, 0xF0, +0x21, 0x6C, 0x01, 0x6F, 0xD2, 0xF5, 0x08, 0x4C, +0xD1, 0x67, 0xEB, 0xEF, 0x04, 0xD2, 0x80, 0x18, +0x78, 0x59, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x47, 0xF2, 0x70, 0x9A, 0x06, 0x94, +0x61, 0xE0, 0x47, 0xF2, 0x74, 0x9A, 0x47, 0xF2, +0x10, 0xDA, 0x6D, 0xE4, 0x47, 0xF2, 0x74, 0xDA, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x48, 0x9A, 0x90, 0x67, 0x40, 0xEA, +0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4A, +0xCE, 0xF3, 0x18, 0x4B, 0x87, 0xF4, 0x74, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0xCE, 0xF3, 0x14, 0x4B, +0x87, 0xF4, 0x68, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0xCE, 0xF3, 0x1C, 0x4B, 0x87, 0xF4, 0x64, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xDF, 0x63, 0x41, 0x62, +0x40, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, 0xAC, 0xEA, +0xBD, 0x67, 0x5E, 0xC5, 0x42, 0x32, 0x5F, 0xC5, +0x0C, 0x6A, 0x5B, 0xC5, 0x01, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x6B, 0xEB, 0x63, 0xF7, 0x48, 0x9A, +0x78, 0xC5, 0x03, 0x6B, 0x7A, 0xC5, 0x9C, 0xC5, +0x40, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x08, 0x04, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, +0x4C, 0x9A, 0x05, 0x05, 0x04, 0x6E, 0x40, 0x9A, +0x05, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, +0x80, 0xF2, 0x4C, 0x98, 0x09, 0x04, 0x04, 0x05, +0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x40, 0x9A, 0x06, 0x04, 0x40, 0xEA, +0x41, 0x97, 0x40, 0x90, 0x21, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0xA7, 0x44, 0x30, 0xF0, +0x21, 0x6C, 0x01, 0x4D, 0xD2, 0xF3, 0x18, 0x4C, +0x14, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xE0, 0x63, 0x3F, 0x62, -0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x50, 0xC3, -0x1F, 0x6A, 0x52, 0xC3, 0x02, 0x6A, 0x53, 0xC3, -0x60, 0xA4, 0x01, 0x6A, 0x04, 0x04, 0x66, 0x33, -0x64, 0x33, 0x6D, 0xEA, 0x7D, 0x67, 0x54, 0xC3, -0x00, 0x6B, 0x05, 0x02, 0x61, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, 0x40, 0xEA, -0x3F, 0x97, 0x20, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0xAC, 0xEA, 0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF7, +0xAC, 0x9D, 0x63, 0xF7, 0x68, 0x9B, 0xFD, 0x67, +0x60, 0x9B, 0xC0, 0x9D, 0x01, 0x6D, 0x56, 0xC7, +0xAB, 0xED, 0xC2, 0x32, 0xB0, 0xC7, 0x59, 0xC7, +0x22, 0x6D, 0x42, 0x32, 0xB2, 0xC7, 0x5A, 0xC7, +0x0C, 0x6D, 0x62, 0x32, 0xB3, 0xC7, 0x5D, 0xC7, +0x30, 0xF0, 0x21, 0x6D, 0x42, 0x32, 0xF2, 0xF4, +0xBC, 0xA5, 0x5E, 0xC7, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x40, 0x9A, 0xD8, 0xC7, 0x7C, 0xC7, +0x00, 0xF6, 0xC2, 0x36, 0x00, 0xF6, 0x62, 0x33, +0xB4, 0xC7, 0x95, 0xC7, 0xDB, 0xC7, 0x7F, 0xC7, +0x04, 0x04, 0x40, 0xEA, 0x3F, 0x97, 0x20, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x04, 0x67, 0x80, 0x18, +0xAE, 0x66, 0x47, 0xA0, 0x66, 0xA0, 0x30, 0xF0, +0x20, 0x69, 0x8B, 0xF1, 0x00, 0x49, 0x40, 0x32, +0x47, 0xF2, 0x98, 0xA1, 0x69, 0xE2, 0x67, 0xF2, +0x4A, 0xC9, 0x01, 0x6A, 0x8C, 0xEA, 0xFF, 0x6B, +0x1C, 0x2A, 0x67, 0xF2, 0xAC, 0xA1, 0xFE, 0x4A, +0xAC, 0xEA, 0x67, 0xF2, 0x4C, 0xC1, 0x02, 0x6A, +0x8C, 0xEA, 0x6C, 0xEA, 0x52, 0x22, 0x47, 0xF2, +0x5B, 0xA1, 0x0F, 0x6D, 0x47, 0xF2, 0x9C, 0xA1, +0x4C, 0xED, 0x52, 0x36, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, +0x40, 0xEA, 0x01, 0x72, 0x0D, 0x6A, 0x42, 0x61, +0x40, 0x10, 0x67, 0xF2, 0x6C, 0xA1, 0x02, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x67, 0xF2, 0x4C, 0xC1, +0x67, 0xF2, 0x48, 0xA9, 0x00, 0xF1, 0x01, 0x5A, +0x0C, 0x6A, 0x34, 0x60, 0x00, 0x6A, 0x67, 0xF2, +0x4D, 0xC1, 0x67, 0xF2, 0x4E, 0xC1, 0x47, 0xF2, +0x19, 0xA1, 0x00, 0x6A, 0x67, 0xF2, 0x50, 0xC9, +0x67, 0xF2, 0x52, 0xC9, 0x67, 0xF2, 0x58, 0xC1, +0x67, 0xF2, 0x59, 0xC1, 0x00, 0x18, 0xD6, 0xD7, +0x01, 0xE2, 0x00, 0x6A, 0x67, 0xF2, 0xE8, 0xA9, +0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0xB0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF1, 0x5C, 0x9A, 0x30, 0xF0, 0x21, 0x6E, +0x1C, 0x30, 0xF2, 0xF3, 0x1A, 0x4E, 0x00, 0x6C, +0xB5, 0xE0, 0x59, 0xE6, 0x40, 0xEB, 0x67, 0xF2, +0x4C, 0xA1, 0x01, 0x6B, 0x6D, 0xEA, 0x67, 0xF2, +0x4C, 0xC1, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF2, 0x63, 0x1B, 0x62, 0x1A, 0xD1, 0x19, 0xD0, +0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, 0x04, 0x9A, +0x04, 0x6A, 0x61, 0xA0, 0x6C, 0xEA, 0x04, 0x22, +0x04, 0x6C, 0x00, 0x6D, 0x80, 0x18, 0xB7, 0x66, +0x42, 0xA0, 0x7F, 0x6E, 0x30, 0xF0, 0x21, 0x6C, +0x4C, 0xEE, 0x12, 0xF5, 0x11, 0x4C, 0x00, 0x6B, +0x40, 0xA4, 0xFF, 0x6D, 0x6C, 0xED, 0xCE, 0xEA, +0x47, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x70, 0xF7, +0xE1, 0x43, 0xEC, 0x37, 0x8B, 0xF1, 0x00, 0x4A, +0x5D, 0xE7, 0xE8, 0xA7, 0x1F, 0x65, 0x38, 0x67, +0x01, 0x6F, 0x2C, 0xEF, 0x01, 0x77, 0x38, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x70, 0x9B, +0x47, 0xF2, 0xCD, 0xA2, 0x60, 0xF7, 0x11, 0x4D, +0x80, 0xAB, 0xE1, 0xF7, 0x1F, 0x6B, 0xAC, 0x35, +0x8C, 0xEB, 0x49, 0xE5, 0xD9, 0xE3, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0x9A, 0x23, 0xF1, 0x7C, 0x9B, +0xE5, 0xAA, 0x58, 0x67, 0x75, 0xE5, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF0, 0x74, 0x9B, 0x04, 0xD2, +0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x58, 0x9A, 0xDC, 0x36, 0x79, 0xE6, 0x00, 0x6C, +0x40, 0xEA, 0x0C, 0x04, 0x00, 0x6D, 0x30, 0x6E, +0x00, 0x18, 0x98, 0xD8, 0x10, 0xF0, 0x31, 0x6A, +0xF4, 0xF7, 0x15, 0x4A, 0x0C, 0xD2, 0x10, 0xF0, +0x31, 0x6A, 0x15, 0xF0, 0x19, 0x4A, 0x0D, 0xD2, +0x04, 0x04, 0x00, 0x6A, 0x10, 0x03, 0x10, 0x10, +0x01, 0x4B, 0x0A, 0x73, 0x08, 0x4C, 0xB0, 0x61, +0x61, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x1C, 0x22, +0x05, 0x6C, 0x06, 0x6D, 0x17, 0x10, 0x59, 0xE3, +0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, +0x20, 0x5A, 0xF9, 0x61, 0x0C, 0x94, 0x0D, 0x95, +0x0E, 0x96, 0x0F, 0x97, 0x00, 0x18, 0xBF, 0xE6, +0x81, 0xA0, 0x02, 0x6B, 0x8C, 0xEB, 0x08, 0x23, +0x03, 0x2A, 0x05, 0x6C, 0x08, 0x6D, 0x02, 0x10, +0x05, 0x6C, 0x07, 0x6D, 0x80, 0x18, 0xB7, 0x66, +0x1B, 0x97, 0x1A, 0x91, 0x19, 0x90, 0x0E, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x09, 0xF3, 0x70, 0x9A, 0x23, 0x23, 0x80, 0xA3, +0x80, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0xFF, 0x6C, +0x8C, 0xEA, 0x1C, 0x22, 0x30, 0xF0, 0x21, 0x6A, +0xF2, 0xF3, 0x58, 0xA2, 0x01, 0x72, 0x16, 0x61, +0x61, 0xA3, 0x01, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, +0x04, 0x22, 0x06, 0x6C, 0x00, 0x6D, 0x80, 0x18, +0xB7, 0x66, 0x30, 0xF0, 0x20, 0x6B, 0x09, 0xF3, +0x90, 0x9B, 0x7F, 0x6A, 0xA0, 0xA4, 0x4C, 0xED, +0xA0, 0xC4, 0x09, 0xF3, 0x70, 0x9B, 0xC0, 0xA3, +0x4C, 0xEE, 0x5D, 0x11, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0x87, 0xF3, 0x84, 0x98, +0x00, 0x6A, 0x67, 0xF2, 0x59, 0xC0, 0x67, 0xF2, +0x58, 0xC0, 0x00, 0x18, 0xB8, 0xD8, 0x30, 0xF0, +0x21, 0x6A, 0xF2, 0xF3, 0x1A, 0x4A, 0x06, 0xD2, +0x06, 0x93, 0x67, 0xF2, 0xB0, 0xA8, 0x30, 0xF0, +0x20, 0x69, 0x80, 0xF2, 0x4C, 0x99, 0x30, 0xF0, +0x21, 0x6C, 0xB5, 0xE3, 0xF2, 0xF4, 0x1C, 0x4C, +0x04, 0x6E, 0x40, 0xEA, 0x67, 0xF2, 0x50, 0xA8, +0x67, 0xF3, 0x7F, 0xA0, 0x04, 0x4A, 0x67, 0xF2, +0x50, 0xC8, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x07, 0x2A, 0x30, 0xF0, +0x20, 0x6B, 0x87, 0xF3, 0x44, 0xD8, 0x09, 0xF3, +0x50, 0xDB, 0x40, 0x10, 0x06, 0x93, 0x67, 0xF2, +0xB0, 0xA8, 0x80, 0xF2, 0x4C, 0x99, 0x30, 0xF0, +0x21, 0x6C, 0xB5, 0xE3, 0x12, 0xF5, 0x00, 0x4C, +0x02, 0x6E, 0x40, 0xEA, 0x67, 0xF2, 0x50, 0xA8, +0x87, 0xF3, 0x60, 0xA0, 0x02, 0x4A, 0x67, 0xF2, +0x50, 0xC8, 0x7F, 0x6A, 0x6C, 0xEA, 0x03, 0x72, +0x17, 0x61, 0x87, 0xF3, 0x81, 0xA0, 0x00, 0x18, +0xC7, 0xD8, 0x87, 0xF3, 0x44, 0xD8, 0x67, 0xF2, +0xB0, 0xA8, 0x82, 0x67, 0x06, 0x92, 0x80, 0xF2, +0x6C, 0x99, 0x87, 0xF3, 0xC1, 0xA0, 0xB5, 0xE2, +0x40, 0xEB, 0x87, 0xF3, 0x64, 0x98, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0x70, 0xDA, 0x07, 0x10, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x87, 0xF3, +0x44, 0xD8, 0x09, 0xF3, 0x50, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x67, 0xF2, +0x70, 0xAA, 0x87, 0xF3, 0x81, 0xA2, 0x6D, 0xE4, +0x67, 0xF2, 0x70, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x09, 0xF3, 0x50, 0x9A, 0x61, 0xA2, 0x10, 0x6A, +0x6C, 0xEA, 0x04, 0x22, 0x00, 0x6C, 0xA4, 0x67, +0x80, 0x18, 0xB7, 0x66, 0x30, 0xF0, 0x20, 0x6C, +0x8B, 0xF1, 0x00, 0x4C, 0x67, 0xF3, 0x7D, 0xA4, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, +0x67, 0xF3, 0x9C, 0xA4, 0x0F, 0x6D, 0x6C, 0xED, +0x72, 0x36, 0xFF, 0x68, 0x40, 0xEA, 0x27, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, 0x50, 0x9A, +0x61, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, 0x0C, 0xEA, +0x04, 0x22, 0x01, 0x6C, 0x02, 0x6D, 0x80, 0x18, +0xB7, 0x66, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x47, 0xF2, 0x78, 0xA0, 0x20, 0x6A, +0x6C, 0xEA, 0x80, 0xF0, 0x10, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, +0x67, 0xF2, 0x6C, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x67, 0xF2, 0x4C, 0xC0, 0x01, 0x6C, +0x67, 0xF2, 0xAA, 0xA8, 0xCC, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0x50, 0x9A, 0x61, 0xA2, +0x08, 0x6A, 0x6C, 0xEA, 0x0C, 0xEA, 0x04, 0x22, +0x01, 0x6C, 0xA4, 0x67, 0x80, 0x18, 0xB7, 0x66, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x67, 0xF3, 0xBF, 0xA2, 0x7F, 0x6B, 0xFF, 0x6C, +0xAC, 0xEB, 0x56, 0x23, 0x01, 0x73, 0x4D, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, 0x50, 0x9A, +0x61, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, +0x04, 0x22, 0x02, 0x6C, 0x00, 0x6D, 0x80, 0x18, +0xB7, 0x66, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x4C, 0x9A, 0x00, 0x6C, 0x40, 0xEA, 0x0B, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, 0x50, 0x9A, +0x61, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, 0x17, 0x22, +0x03, 0x6C, 0xA4, 0x67, 0x12, 0x10, 0x30, 0xF0, +0x21, 0x6A, 0xD2, 0xF3, 0x8D, 0xA2, 0x00, 0x6D, +0x80, 0x18, 0xD7, 0x2A, 0x14, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0x50, 0x9A, 0x61, 0xA2, +0x02, 0x6A, 0x6C, 0xEA, 0x04, 0x22, 0x03, 0x6C, +0x05, 0x6D, 0x80, 0x18, 0xB7, 0x66, 0x30, 0xF0, +0x21, 0x6A, 0xD2, 0xF3, 0x78, 0xA2, 0x20, 0x6A, +0x6C, 0xEA, 0x2D, 0x2A, 0x6A, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x09, 0xF3, 0x50, 0x9A, 0x61, 0xA2, +0x02, 0x6A, 0x6C, 0xEA, 0x04, 0x22, 0x03, 0x6C, +0x04, 0x6D, 0x80, 0x18, 0xB7, 0x66, 0x01, 0x6B, +0x30, 0xF0, 0x21, 0x6A, 0xF2, 0xF3, 0x79, 0xC2, +0x07, 0x10, 0x47, 0xF2, 0xB8, 0xA2, 0x20, 0x6B, +0xAC, 0xEB, 0x8C, 0xEB, 0x14, 0x2B, 0x48, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF3, 0x50, 0x9A, +0x61, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x06, 0x22, 0x30, 0xF0, +0x21, 0x6A, 0xF2, 0xF3, 0x59, 0xA2, 0x01, 0x72, +0x02, 0x60, 0x80, 0x18, 0x10, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x67, 0xF2, +0x6D, 0xA2, 0x67, 0xF3, 0x9E, 0xA2, 0x01, 0x4B, +0x67, 0xF2, 0x6D, 0xC2, 0x67, 0xF2, 0x72, 0xAA, +0x6D, 0xE4, 0x67, 0xF2, 0x72, 0xCA, 0x67, 0xF2, +0x8D, 0xA2, 0x47, 0xF2, 0x7A, 0xA2, 0x8E, 0xEB, +0x0C, 0x2B, 0x67, 0xF3, 0xDE, 0xA2, 0x10, 0xF0, +0x32, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD3, +0x00, 0xF3, 0x4C, 0x9A, 0xF4, 0xF0, 0x19, 0x4C, +0x0C, 0x10, 0x67, 0xF3, 0xDE, 0xA2, 0x00, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x32, 0x6C, 0xD4, 0xF0, +0x0D, 0x4C, 0x64, 0x6B, 0x78, 0xEE, 0x00, 0x6D, +0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEA, 0x19, 0x10, +0x67, 0xF2, 0x8C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x67, 0xF2, 0x6C, 0xC2, 0x02, 0x6C, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x67, 0xF2, 0x8C, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x67, 0xF2, 0x6C, 0xC2, +0x03, 0x6C, 0x67, 0xF2, 0xAA, 0xAA, 0x80, 0x18, +0x93, 0x66, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x67, 0xF2, 0x8C, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, +0x08, 0x23, 0x67, 0xF3, 0x7A, 0xA2, 0x03, 0x23, +0x00, 0x6B, 0x67, 0xF3, 0x7A, 0xC2, 0x80, 0x18, +0x57, 0x67, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x67, 0xF2, +0xAC, 0xA2, 0x01, 0x6C, 0xFF, 0x6B, 0x8C, 0xED, +0x40, 0xF1, 0x03, 0x25, 0x87, 0xF3, 0x04, 0x9A, +0x27, 0x20, 0xC0, 0xA0, 0x80, 0x6D, 0xAB, 0xED, +0xCC, 0xED, 0x6C, 0xED, 0x21, 0x25, 0x67, 0xF2, +0x58, 0xA2, 0x01, 0x72, 0x1D, 0x61, 0x41, 0xA0, +0x4C, 0xEC, 0x6C, 0xEC, 0x04, 0x24, 0x06, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0xB7, 0x66, 0x40, 0xA0, +0x7F, 0x6B, 0x64, 0x6E, 0x4C, 0xEB, 0xD8, 0xEB, +0x00, 0x6A, 0x60, 0xC0, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, +0x32, 0x6C, 0xF4, 0xF0, 0x19, 0x4C, 0x00, 0x6D, +0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEA, 0x19, 0x11, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x47, 0xF2, 0x98, 0xA0, 0x03, 0x6D, 0xFF, 0x6B, +0x8E, 0x32, 0xAC, 0xEA, 0x02, 0x72, 0x7E, 0x60, +0x03, 0x72, 0xC0, 0xF0, 0x1F, 0x60, 0x01, 0x72, +0x27, 0x60, 0x67, 0xF2, 0xAC, 0xA0, 0x02, 0x6A, +0x4B, 0xEA, 0xAC, 0xEA, 0x67, 0xF2, 0x4C, 0xC0, +0x02, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x11, 0x22, +0x47, 0xF2, 0x5B, 0xA0, 0x0F, 0x6D, 0x47, 0xF2, +0x9C, 0xA0, 0x4C, 0xED, 0x52, 0x36, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, +0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, 0x01, 0x6C, +0x01, 0x61, 0x00, 0x6C, 0x67, 0xF2, 0xAA, 0xA8, +0x80, 0x18, 0x93, 0x66, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, 0xC0, 0x10, +0x02, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x11, 0x22, +0x47, 0xF2, 0x5B, 0xA0, 0x0F, 0x6D, 0x47, 0xF2, +0x9C, 0xA0, 0x4C, 0xED, 0x52, 0x36, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, +0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, 0xA0, 0xF0, +0x1C, 0x61, 0x67, 0xF2, 0xAA, 0xA8, 0x00, 0x6C, +0x80, 0x18, 0x93, 0x66, 0x30, 0xF0, 0x21, 0x6A, +0xD2, 0xF3, 0x5D, 0xA2, 0x5A, 0x33, 0x02, 0x73, +0x0D, 0x60, 0x03, 0x73, 0x0F, 0x60, 0x01, 0x73, +0x05, 0x60, 0x3F, 0x6E, 0x4C, 0xEE, 0xFF, 0x6A, +0x4C, 0xEE, 0x0E, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, +0x0A, 0x6E, 0x08, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, +0x64, 0x6E, 0x04, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, +0xE0, 0xF3, 0x08, 0x6E, 0xD8, 0xEB, 0x12, 0xEE, +0x0A, 0x6A, 0x58, 0xEE, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x67, 0xF2, 0x72, 0xAA, +0x10, 0xF0, 0x32, 0x6C, 0xD4, 0xF0, 0x0D, 0x4C, +0x00, 0x6D, 0x12, 0xEE, 0x7B, 0xE6, 0x01, 0x6B, +0x67, 0xF3, 0x7A, 0xC2, 0x00, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, +0x64, 0x6B, 0x5F, 0x10, 0x02, 0x6A, 0x8C, 0xEA, +0x6C, 0xEA, 0x10, 0x22, 0x47, 0xF2, 0x5B, 0xA0, +0x0F, 0x6D, 0x47, 0xF2, 0x9C, 0xA0, 0x4C, 0xED, +0x52, 0x36, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, +0x01, 0x72, 0x6B, 0x61, 0x67, 0xF2, 0xAA, 0xA8, +0x00, 0x6C, 0x80, 0x18, 0x93, 0x66, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF2, +0x9F, 0xA2, 0x67, 0xF2, 0x6E, 0xA2, 0xFF, 0x4C, +0x6E, 0xEC, 0x03, 0x2C, 0x47, 0xF2, 0x5E, 0xA2, +0x05, 0x10, 0x01, 0x4B, 0x67, 0xF2, 0x6E, 0xC2, +0x47, 0xF2, 0x5D, 0xA2, 0x5A, 0x33, 0x02, 0x73, +0x0D, 0x60, 0x03, 0x73, 0x0F, 0x60, 0x01, 0x73, +0x05, 0x60, 0x3F, 0x6B, 0x4C, 0xEB, 0xFF, 0x6A, +0x4C, 0xEB, 0x0E, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, +0x0A, 0x6A, 0x08, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, +0x64, 0x6A, 0x04, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, +0xE0, 0xF3, 0x08, 0x6A, 0x58, 0xEB, 0x12, 0xEB, +0x0A, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x21, 0x6A, +0xF2, 0xF3, 0x52, 0xAA, 0x01, 0x6C, 0x00, 0x6D, +0x64, 0x6E, 0x12, 0xEB, 0x4F, 0xE3, 0x30, 0xF0, +0x21, 0x6A, 0xF2, 0xF4, 0x9A, 0xC2, 0x00, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x32, 0x6C, 0xD4, 0xF0, +0x0D, 0x4C, 0xD8, 0xEB, 0x01, 0x6F, 0x12, 0xEE, +0x40, 0xEA, 0x0A, 0x10, 0x67, 0xF2, 0xAA, 0xA8, +0x00, 0x6C, 0x80, 0x18, 0x93, 0x66, 0x01, 0x6A, +0x67, 0xF3, 0x5A, 0xC0, 0x80, 0x18, 0x33, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x00, 0x6B, 0x67, 0xF2, 0x6D, 0xC2, 0x00, 0x6B, +0x67, 0xF2, 0x72, 0xCA, 0x67, 0xF2, 0x70, 0xCA, +0x67, 0xF2, 0x79, 0xC2, 0x67, 0xF2, 0x78, 0xC2, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x67, 0xF2, 0x8C, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x67, 0xF2, 0xAA, 0xAA, 0x8C, 0xEB, +0x67, 0xF2, 0x6C, 0xC2, 0x01, 0x6C, 0x80, 0x18, +0x93, 0x66, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x69, 0x04, 0x67, 0x80, 0xF4, 0x4C, 0x9A, +0x2C, 0xE8, 0x2C, 0xED, 0xCC, 0xE9, 0x04, 0xD5, +0x90, 0x67, 0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x0F, 0x58, +0x43, 0xF2, 0x1C, 0xC2, 0x43, 0xF2, 0x34, 0xDA, +0x01, 0x6B, 0x01, 0x60, 0x00, 0x6B, 0x43, 0xF2, +0x78, 0xDA, 0x90, 0x67, 0x00, 0x18, 0xFC, 0xDA, +0x04, 0x96, 0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, +0xF1, 0x67, 0xD2, 0xF5, 0x08, 0x4C, 0x80, 0x18, +0x1A, 0x5E, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6B, 0xCC, 0xEB, 0x17, 0x24, 0xE3, 0x5B, +0x15, 0x60, 0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xC4, +0x1F, 0x6A, 0x42, 0xC4, 0x47, 0x43, 0x01, 0x4A, +0x43, 0xC4, 0x00, 0x6A, 0x44, 0xC4, 0x46, 0x43, +0x45, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x4C, 0x9A, 0x06, 0x4C, 0xC3, 0x67, 0x40, 0xEA, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x0A, 0x93, 0xFF, 0x6A, 0x4C, 0xED, +0x4C, 0xEB, 0xDB, 0x5B, 0x4C, 0xEE, 0x00, 0x6A, +0x12, 0x60, 0x00, 0xA4, 0xFE, 0x4A, 0xA2, 0xC4, +0x0C, 0xEA, 0x40, 0xC4, 0x00, 0x6A, 0xC3, 0xC4, +0x44, 0xC4, 0x65, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x06, 0x4C, 0xA7, 0x67, +0xC3, 0x67, 0x40, 0xEA, 0x01, 0x6A, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x40, 0xA4, 0xA6, 0xF1, +0x18, 0x48, 0x40, 0xF0, 0x7F, 0xA0, 0x46, 0x32, +0x24, 0x67, 0x6E, 0xEA, 0x05, 0x22, 0x55, 0x98, +0x01, 0x4A, 0x55, 0xD8, 0x03, 0x6A, 0x1A, 0x10, +0x40, 0xF0, 0x9C, 0xA8, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x21, 0x6B, 0x80, 0xF2, 0x4C, 0x9A, +0xC1, 0xA1, 0xDB, 0xF1, 0x10, 0x4B, 0x91, 0xE3, +0xA2, 0x41, 0x40, 0xEA, 0x61, 0xA1, 0x40, 0xF0, +0x5C, 0xA8, 0x49, 0xE3, 0x40, 0xF0, 0x5C, 0xC8, +0x40, 0xF0, 0x5F, 0xA0, 0x01, 0x4A, 0x40, 0xF0, +0x5F, 0xC0, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xE0, 0x63, 0x3F, 0x62, 0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x50, 0xC3, 0x1F, 0x6A, 0x52, 0xC3, -0x08, 0x6A, 0x53, 0xC3, 0x00, 0x6A, 0x54, 0xC3, -0xBD, 0x67, 0x06, 0x6B, 0x75, 0xC5, 0xA0, 0xA4, -0x01, 0x6B, 0xA6, 0x35, 0xA4, 0x35, 0xAD, 0xEB, -0xBD, 0x67, 0x57, 0xC5, 0x76, 0xC5, 0x61, 0xA4, -0x78, 0xC5, 0x62, 0xA4, 0x79, 0xC5, 0x63, 0xA4, -0x5B, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x7A, 0xC5, -0x20, 0xF4, 0x40, 0x9A, 0x04, 0x04, 0x40, 0xEA, -0x3F, 0x97, 0x20, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x24, 0x67, 0x80, 0x18, 0x97, 0x67, 0x02, 0x67, -0x03, 0x2A, 0x91, 0x67, 0x80, 0x18, 0xB1, 0x67, -0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xC2, 0x63, 0x7B, 0x62, -0x7A, 0xD1, 0x79, 0xD0, 0x80, 0x91, 0xFF, 0x6B, -0x06, 0x5C, 0x44, 0x67, 0x05, 0x67, 0x6C, 0xEE, -0x6C, 0xE9, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF1, 0x08, 0x4A, 0x72, 0x9A, 0x01, 0x4B, -0x72, 0xDA, 0x2E, 0x10, 0x06, 0x2D, 0x30, 0xF0, -0x20, 0x6B, 0xE6, 0xF1, 0x68, 0xA3, 0x10, 0x2B, -0x27, 0x10, 0x03, 0x6C, 0x98, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x86, 0xF1, 0x08, 0x4B, 0x12, 0xEC, -0x6D, 0xE4, 0x98, 0xA3, 0x1D, 0x24, 0x06, 0x75, -0x03, 0x60, 0x79, 0xA3, 0xA3, 0xEB, 0x18, 0x61, -0xFF, 0x6D, 0x06, 0x04, 0x4C, 0xED, 0x10, 0x30, -0x04, 0xD1, 0x80, 0x18, 0x86, 0x67, 0x5D, 0x67, -0x19, 0xC2, 0xC6, 0x41, 0x3E, 0x00, 0xFF, 0x6A, -0x90, 0x67, 0x06, 0x05, 0x4C, 0xEE, 0x80, 0x18, -0x76, 0x67, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x40, 0x9A, 0x90, 0x67, 0x40, 0xEA, -0x7B, 0x97, 0x7A, 0x91, 0x79, 0x90, 0x3E, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD0, 0xE4, 0x67, 0x41, 0xA7, 0x85, 0x67, -0x06, 0x5A, 0x17, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x48, 0x32, 0x86, 0xF1, 0x08, 0x4B, 0x69, 0xE2, -0x40, 0x9A, 0x0F, 0x22, 0x4F, 0x9B, 0x01, 0x4A, -0x4F, 0xDB, 0x41, 0xA7, 0xA2, 0xAF, 0xC3, 0xA7, -0x48, 0x32, 0x69, 0xE2, 0x62, 0xA7, 0x04, 0xD5, -0x40, 0x9A, 0xA3, 0x67, 0x06, 0x4F, 0x40, 0xEA, -0x18, 0x10, 0x06, 0x00, 0x30, 0xF0, 0x20, 0x6D, -0x90, 0x67, 0x66, 0xF1, 0x10, 0x4D, 0x13, 0x6E, -0x00, 0x18, 0x42, 0xD7, 0x01, 0x6C, 0x13, 0x6A, -0x03, 0x6D, 0xC4, 0x67, 0xF0, 0x67, 0x04, 0xD2, -0x80, 0x18, 0xDD, 0x67, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF1, 0x08, 0x4A, 0x72, 0x9A, 0x01, 0x4B, -0x72, 0xDA, 0x0D, 0x97, 0x0C, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xDE, 0x63, 0x43, 0x62, -0x42, 0xD1, 0x41, 0xD0, 0xFF, 0x69, 0x04, 0x67, -0xE5, 0x67, 0xCC, 0xE9, 0x31, 0x24, 0x30, 0x25, -0xDB, 0x59, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF1, 0x08, 0x4A, 0x71, 0x9A, 0x01, 0x4B, -0x71, 0xDA, 0x26, 0x10, 0xA2, 0xA4, 0xC3, 0xA4, -0x00, 0xF0, 0x1E, 0x04, 0x04, 0xD1, 0x80, 0x18, -0x86, 0x67, 0x1E, 0x22, 0xBD, 0x67, 0x81, 0xA0, -0x5E, 0xA5, 0x01, 0x6B, 0x84, 0x34, 0x6C, 0xEA, -0x8D, 0xEA, 0x5E, 0xC5, 0xC6, 0x41, 0xFF, 0x6A, -0x06, 0x01, 0x7F, 0xC5, 0x91, 0x67, 0x00, 0xF0, -0x1E, 0x05, 0x4C, 0xEE, 0x80, 0x18, 0x76, 0x67, -0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x40, 0x9A, 0x91, 0x67, 0x40, 0xEA, 0x90, 0x67, -0x00, 0x18, 0x0C, 0xC2, 0x01, 0x6A, 0x01, 0x10, -0x00, 0x6A, 0x43, 0x97, 0x42, 0x91, 0x41, 0x90, -0x22, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x10, 0x2A, -0x7D, 0x67, 0x01, 0x68, 0xBD, 0x67, 0x10, 0xC3, -0x51, 0xC3, 0x02, 0x6B, 0x72, 0xC5, 0x53, 0xC5, -0x04, 0x6E, 0x04, 0x05, 0x80, 0x18, 0x1F, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF1, 0x08, 0xC2, +0x02, 0x6A, 0x53, 0xC3, 0x60, 0xA4, 0x01, 0x6A, +0x04, 0x04, 0x66, 0x33, 0x64, 0x33, 0x6D, 0xEA, +0x7D, 0x67, 0x54, 0xC3, 0x00, 0x6B, 0x05, 0x02, +0x61, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x40, 0x9A, 0x40, 0xEA, 0x3F, 0x97, 0x20, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xE0, 0x63, 0x3F, 0x62, +0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x50, 0xC3, +0x1F, 0x6A, 0x52, 0xC3, 0x08, 0x6A, 0x53, 0xC3, +0x00, 0x6A, 0x54, 0xC3, 0xBD, 0x67, 0x06, 0x6B, +0x75, 0xC5, 0xA0, 0xA4, 0x01, 0x6B, 0xA6, 0x35, +0xA4, 0x35, 0xAD, 0xEB, 0xBD, 0x67, 0x57, 0xC5, +0x76, 0xC5, 0x61, 0xA4, 0x78, 0xC5, 0x62, 0xA4, +0x79, 0xC5, 0x63, 0xA4, 0x5B, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0x7A, 0xC5, 0x20, 0xF4, 0x40, 0x9A, +0x04, 0x04, 0x40, 0xEA, 0x3F, 0x97, 0x20, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x24, 0x67, 0x80, 0x18, +0x22, 0x69, 0x02, 0x67, 0x03, 0x2A, 0x91, 0x67, +0x80, 0x18, 0x3C, 0x69, 0x50, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xC2, 0x63, 0x7B, 0x62, 0x7A, 0xD1, 0x79, 0xD0, +0x80, 0x91, 0xFF, 0x6B, 0x06, 0x5C, 0x44, 0x67, +0x05, 0x67, 0x6C, 0xEE, 0x6C, 0xE9, 0x08, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x18, 0x4A, +0x72, 0x9A, 0x01, 0x4B, 0x72, 0xDA, 0x2E, 0x10, +0x06, 0x2D, 0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF2, +0x78, 0xA3, 0x10, 0x2B, 0x27, 0x10, 0x03, 0x6C, +0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF1, +0x18, 0x4B, 0x12, 0xEC, 0x6D, 0xE4, 0x98, 0xA3, +0x1D, 0x24, 0x06, 0x75, 0x03, 0x60, 0x79, 0xA3, +0xA3, 0xEB, 0x18, 0x61, 0xFF, 0x6D, 0x06, 0x04, +0x4C, 0xED, 0x10, 0x30, 0x04, 0xD1, 0x80, 0x18, +0x11, 0x69, 0x5D, 0x67, 0x19, 0xC2, 0xC6, 0x41, +0x3E, 0x00, 0xFF, 0x6A, 0x90, 0x67, 0x06, 0x05, +0x4C, 0xEE, 0x80, 0x18, 0x01, 0x69, 0x06, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, +0x90, 0x67, 0x40, 0xEA, 0x7B, 0x97, 0x7A, 0x91, +0x79, 0x90, 0x3E, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD0, 0xE4, 0x67, +0x41, 0xA7, 0x85, 0x67, 0x06, 0x5A, 0x17, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, 0xA6, 0xF1, +0x18, 0x4B, 0x69, 0xE2, 0x40, 0x9A, 0x0F, 0x22, +0x4F, 0x9B, 0x01, 0x4A, 0x4F, 0xDB, 0x41, 0xA7, +0xA2, 0xAF, 0xC3, 0xA7, 0x48, 0x32, 0x69, 0xE2, +0x62, 0xA7, 0x04, 0xD5, 0x40, 0x9A, 0xA3, 0x67, +0x06, 0x4F, 0x40, 0xEA, 0x18, 0x10, 0x06, 0x00, +0x30, 0xF0, 0x20, 0x6D, 0x90, 0x67, 0xA6, 0xF1, +0x00, 0x4D, 0x13, 0x6E, 0x00, 0x18, 0x9D, 0xD8, +0x01, 0x6C, 0x13, 0x6A, 0x03, 0x6D, 0xC4, 0x67, +0xF0, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x68, 0x69, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x18, 0x4A, +0x72, 0x9A, 0x01, 0x4B, 0x72, 0xDA, 0x0D, 0x97, +0x0C, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xDE, 0x63, 0x43, 0x62, 0x42, 0xD1, 0x41, 0xD0, +0xFF, 0x69, 0x04, 0x67, 0xE5, 0x67, 0xCC, 0xE9, +0x31, 0x24, 0x30, 0x25, 0xDB, 0x59, 0x08, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x18, 0x4A, +0x71, 0x9A, 0x01, 0x4B, 0x71, 0xDA, 0x26, 0x10, +0xA2, 0xA4, 0xC3, 0xA4, 0x00, 0xF0, 0x1E, 0x04, +0x04, 0xD1, 0x80, 0x18, 0x11, 0x69, 0x1E, 0x22, +0xBD, 0x67, 0x81, 0xA0, 0x5E, 0xA5, 0x01, 0x6B, +0x84, 0x34, 0x6C, 0xEA, 0x8D, 0xEA, 0x5E, 0xC5, +0xC6, 0x41, 0xFF, 0x6A, 0x06, 0x01, 0x7F, 0xC5, +0x91, 0x67, 0x00, 0xF0, 0x1E, 0x05, 0x4C, 0xEE, +0x80, 0x18, 0x01, 0x69, 0x0B, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, 0x91, 0x67, +0x40, 0xEA, 0x90, 0x67, 0x00, 0x18, 0x0C, 0xC2, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x43, 0x97, +0x42, 0x91, 0x41, 0x90, 0x22, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0xFF, 0x6A, +0xAC, 0xEA, 0x10, 0x2A, 0x7D, 0x67, 0x01, 0x68, +0xBD, 0x67, 0x10, 0xC3, 0x51, 0xC3, 0x02, 0x6B, +0x72, 0xC5, 0x53, 0xC5, 0x04, 0x6E, 0x04, 0x05, +0x80, 0x18, 0xAA, 0x69, 0x30, 0xF0, 0x20, 0x6A, +0x06, 0xF2, 0x18, 0xC2, 0x07, 0x97, 0x06, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA6, 0xF1, 0x18, 0x48, 0x4C, 0x98, 0x24, 0x67, +0x01, 0x4A, 0x4C, 0xD8, 0x80, 0x18, 0x5F, 0x69, +0x38, 0x2A, 0x60, 0xA1, 0x01, 0x6A, 0x4C, 0xEB, +0x04, 0x23, 0x4D, 0x98, 0x01, 0x4A, 0x4D, 0xD8, +0x42, 0x10, 0x30, 0xF0, 0x21, 0x68, 0xDB, 0xF1, +0x10, 0x48, 0x60, 0xA0, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x90, 0x67, 0x80, 0x18, +0x4B, 0x69, 0x00, 0x18, 0x0E, 0xC2, 0x22, 0x67, +0x18, 0x22, 0x40, 0xA0, 0x90, 0x67, 0xB1, 0x67, +0x46, 0x32, 0x41, 0xC1, 0x41, 0xA0, 0x42, 0xC1, +0x42, 0xA0, 0x43, 0xC1, 0x43, 0xA0, 0x44, 0xC1, +0x80, 0x18, 0x8C, 0x69, 0x30, 0xF0, 0x20, 0x6A, +0xA6, 0xF1, 0x18, 0x4A, 0x6E, 0x9A, 0x91, 0x67, +0x01, 0x4B, 0x6E, 0xDA, 0x00, 0x18, 0x0C, 0xC2, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, +0x18, 0x4A, 0x74, 0x9A, 0x01, 0x4B, 0x74, 0xDA, +0x03, 0x10, 0x53, 0x98, 0x01, 0x4A, 0x53, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF1, 0x18, 0x4A, +0x40, 0xF0, 0x7E, 0xA2, 0x01, 0x4B, 0x40, 0xF0, +0x7E, 0xC2, 0x00, 0x6B, 0x40, 0xF0, 0x7F, 0xC2, +0x00, 0x6B, 0x40, 0xF0, 0x7C, 0xCA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xE4, 0xA4, 0x03, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x58, 0xEF, 0xA6, 0xF1, 0x18, 0x4B, 0xC6, 0xA4, +0xA7, 0xA4, 0x12, 0xEA, 0x69, 0xE2, 0x65, 0xA4, +0xD9, 0xC2, 0xBA, 0xC2, 0x78, 0xC2, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0xFF, 0x6B, 0x44, 0x67, 0x6C, 0xEA, 0xE5, 0x67, +0xCC, 0xEB, 0x01, 0x6C, 0x03, 0x6D, 0xC2, 0x67, +0x04, 0xD3, 0x80, 0x18, 0x68, 0x69, 0x07, 0x97, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0x01, 0x6A, 0x04, 0xD2, 0x41, 0xA4, +0x05, 0x67, 0x09, 0x2A, 0x43, 0xA4, 0x62, 0xA4, +0x40, 0x32, 0x6D, 0xEA, 0x03, 0x5A, 0x03, 0x61, +0x80, 0x18, 0x06, 0x6A, 0x04, 0xD2, 0x90, 0x67, +0x04, 0x05, 0x04, 0x6E, 0x80, 0x18, 0xAA, 0x69, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x86, 0xF1, 0x08, 0x48, -0x4C, 0x98, 0x24, 0x67, 0x01, 0x4A, 0x4C, 0xD8, -0x80, 0x18, 0xD4, 0x67, 0x38, 0x2A, 0x60, 0xA1, -0x01, 0x6A, 0x4C, 0xEB, 0x04, 0x23, 0x4D, 0x98, -0x01, 0x4A, 0x4D, 0xD8, 0x42, 0x10, 0x30, 0xF0, -0x21, 0x68, 0x1B, 0xF1, 0x08, 0x48, 0x60, 0xA0, -0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x90, 0x67, 0x80, 0x18, 0xC0, 0x67, 0x00, 0x18, -0x0E, 0xC2, 0x22, 0x67, 0x18, 0x22, 0x40, 0xA0, -0x90, 0x67, 0xB1, 0x67, 0x46, 0x32, 0x41, 0xC1, -0x41, 0xA0, 0x42, 0xC1, 0x42, 0xA0, 0x43, 0xC1, -0x43, 0xA0, 0x44, 0xC1, 0x80, 0x18, 0x01, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF1, 0x08, 0x4A, -0x6E, 0x9A, 0x91, 0x67, 0x01, 0x4B, 0x6E, 0xDA, -0x00, 0x18, 0x0C, 0xC2, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x86, 0xF1, 0x08, 0x4A, 0x74, 0x9A, -0x01, 0x4B, 0x74, 0xDA, 0x03, 0x10, 0x53, 0x98, -0x01, 0x4A, 0x53, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF1, 0x08, 0x4A, 0x40, 0xF0, 0x7E, 0xA2, -0x01, 0x4B, 0x40, 0xF0, 0x7E, 0xC2, 0x00, 0x6B, -0x40, 0xF0, 0x7F, 0xC2, 0x00, 0x6B, 0x40, 0xF0, -0x7C, 0xCA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xE4, 0xA4, 0x03, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x58, 0xEF, 0x86, 0xF1, -0x08, 0x4B, 0xC6, 0xA4, 0xA7, 0xA4, 0x12, 0xEA, -0x69, 0xE2, 0x65, 0xA4, 0xD9, 0xC2, 0xBA, 0xC2, -0x78, 0xC2, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6B, 0x44, 0x67, -0x6C, 0xEA, 0xE5, 0x67, 0xCC, 0xEB, 0x01, 0x6C, -0x03, 0x6D, 0xC2, 0x67, 0x04, 0xD3, 0x80, 0x18, -0xDD, 0x67, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x01, 0x6A, -0x04, 0xD2, 0x41, 0xA4, 0x05, 0x67, 0x09, 0x2A, -0x43, 0xA4, 0x62, 0xA4, 0x40, 0x32, 0x6D, 0xEA, -0x03, 0x5A, 0x03, 0x61, 0x80, 0x18, 0x7B, 0x68, -0x04, 0xD2, 0x90, 0x67, 0x04, 0x05, 0x04, 0x6E, -0x80, 0x18, 0x1F, 0x68, 0x07, 0x97, 0x06, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x40, 0xA4, 0x02, 0x2A, 0x80, 0x18, 0x8C, 0x68, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x00, 0x6C, 0x30, 0xF0, -0x20, 0x6A, 0x25, 0x67, 0xC9, 0xF2, 0x0C, 0x48, -0x86, 0xF1, 0x08, 0x4A, 0x64, 0x67, 0xA0, 0x9A, -0x03, 0x25, 0x01, 0x6D, 0xA4, 0xEB, 0xAD, 0xEC, -0x01, 0x4B, 0x06, 0x73, 0x04, 0x4A, 0xF7, 0x61, -0x02, 0x6A, 0x40, 0xC0, 0x58, 0x67, 0x41, 0xC0, -0x04, 0x6A, 0x41, 0xC8, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0x04, 0xD4, 0x04, 0x05, -0x84, 0x40, 0x04, 0x6E, 0x40, 0xEA, 0xC2, 0xA0, -0xFF, 0x6A, 0x91, 0x67, 0x04, 0x4E, 0xB0, 0x67, -0x4C, 0xEE, 0x80, 0x18, 0x1F, 0x68, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x41, 0xA4, 0x02, 0x2A, -0x80, 0x18, 0x9E, 0x68, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA9, 0xF3, 0x10, 0x48, 0x00, 0x6A, 0x41, 0xC0, -0x01, 0x6A, 0x40, 0xC0, 0x30, 0x6A, 0x41, 0xC8, +0xFD, 0x63, 0x05, 0x62, 0x40, 0xA4, 0x02, 0x2A, +0x80, 0x18, 0x17, 0x6A, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x00, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0x67, +0x09, 0xF3, 0x14, 0x48, 0xA6, 0xF1, 0x18, 0x4A, +0x64, 0x67, 0xA0, 0x9A, 0x03, 0x25, 0x01, 0x6D, +0xA4, 0xEB, 0xAD, 0xEC, 0x01, 0x4B, 0x06, 0x73, +0x04, 0x4A, 0xF7, 0x61, 0x02, 0x6A, 0x40, 0xC0, +0x58, 0x67, 0x41, 0xC0, 0x04, 0x6A, 0x41, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0x30, 0xF0, 0x20, 0x6D, 0x24, 0x67, 0xA6, 0xF1, -0x14, 0x4D, 0x84, 0x40, 0x30, 0x6E, 0x40, 0xEA, -0xC2, 0xA0, 0xFF, 0x6A, 0x91, 0x67, 0x04, 0x4E, -0xB0, 0x67, 0x4C, 0xEE, 0x80, 0x18, 0x1F, 0x68, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x41, 0xA4, 0x03, 0x2A, 0x85, 0x67, 0x80, 0x18, -0xBD, 0x68, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x43, 0xA4, 0x62, 0xA4, 0x25, 0x67, 0x40, 0x32, -0x6D, 0xEA, 0x30, 0x22, 0x44, 0xA4, 0x06, 0x5A, -0x20, 0x60, 0x03, 0x6D, 0xB8, 0xEA, 0x30, 0xF0, -0x20, 0x68, 0x89, 0xF4, 0x14, 0x48, 0x00, 0x6B, -0x61, 0xC0, 0x60, 0xC0, 0x44, 0xC0, 0x04, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x61, 0xC8, 0x80, 0xF2, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF1, -0x00, 0x4B, 0x85, 0x40, 0x03, 0x6E, 0x12, 0xED, -0xB5, 0xE3, 0x40, 0xEA, 0xC2, 0xA0, 0xFF, 0x6A, -0x91, 0x67, 0x04, 0x4E, 0xB0, 0x67, 0x4C, 0xEE, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x89, 0xF4, -0x14, 0x4D, 0x00, 0x6A, 0x41, 0xC5, 0x40, 0xC5, -0x00, 0x6A, 0x41, 0xCD, 0x91, 0x67, 0x04, 0x6E, -0x80, 0x18, 0x1F, 0x68, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x41, 0xA4, 0x07, 0x2A, -0x43, 0xA4, 0x62, 0xA4, 0x40, 0x32, 0x6D, 0xEA, -0x02, 0x22, 0x80, 0x18, 0xD6, 0x68, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x40, 0xA4, 0x01, 0x72, 0x07, 0x60, 0x03, 0x22, -0x02, 0x72, 0x07, 0x60, 0x08, 0x10, 0x80, 0x18, -0xF6, 0x68, 0x05, 0x10, 0x80, 0x18, 0xD1, 0x68, -0x02, 0x10, 0x80, 0x18, 0xB8, 0x68, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6B, 0xAC, 0xEB, 0x44, 0x67, 0x87, 0x67, -0x03, 0x23, 0x01, 0x73, 0x05, 0x60, 0x07, 0x10, -0xA2, 0x67, 0x80, 0x18, 0xFD, 0x68, 0x03, 0x10, -0xA2, 0x67, 0x80, 0x18, 0x99, 0x68, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF1, 0x74, 0x9A, 0x01, 0x6D, 0xFF, 0x6C, -0x40, 0xA3, 0xAC, 0xEA, 0x05, 0x22, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, 0x74, 0x9A, -0xFF, 0x6C, 0x02, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0x30, 0x70, -0x26, 0x67, 0x4C, 0xED, 0x09, 0x61, 0x41, 0xA6, -0x0C, 0x72, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x69, 0xF5, 0x5C, 0xA2, 0x00, 0x6B, 0x44, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x74, 0x9A, -0xFF, 0x6C, 0x08, 0x6E, 0x40, 0xA3, 0xCB, 0xEE, -0x8C, 0xEA, 0xCC, 0xEA, 0x05, 0x6E, 0xCD, 0xEA, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF1, 0x58, 0x9A, 0x60, 0xA2, 0x0F, 0x6A, -0x6C, 0xEA, 0x04, 0x72, 0x1C, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF5, 0x48, 0x9A, 0x90, 0x67, -0xD1, 0x67, 0x40, 0xEA, 0x01, 0x72, 0x01, 0x6B, -0x23, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, -0x4C, 0x9A, 0x83, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, -0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, -0x64, 0xDA, 0x02, 0x6B, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF5, 0x4C, 0x9A, 0x02, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, -0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x03, 0x6B, -0x23, 0x70, 0x03, 0x60, 0x30, 0x70, 0x0A, 0x60, -0x2F, 0x10, 0x03, 0x73, 0x2D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF5, 0x50, 0x9A, 0x00, 0x6C, -0x40, 0xEA, 0x1C, 0x10, 0x41, 0xA1, 0x0D, 0x72, -0x0E, 0x61, 0x01, 0x6A, 0x6E, 0xEA, 0x06, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0x69, 0xF5, 0x5C, 0xC3, -0x01, 0x6D, 0x09, 0x10, 0x01, 0x6C, 0x30, 0xF0, -0x20, 0x6A, 0x69, 0xF5, 0x9C, 0xC2, 0x01, 0x6A, -0x4E, 0xEB, 0x01, 0x5B, 0xB8, 0x67, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF5, 0x54, 0x9A, 0xC0, 0xA1, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, -0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6B, 0x6C, 0xEC, 0x03, 0x5C, 0x58, 0x67, -0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x63, 0xF3, 0x54, 0xA3, -0x0B, 0x2A, 0x63, 0xF3, 0x55, 0xA3, 0x08, 0x2A, -0x63, 0xF3, 0x56, 0xA3, 0x05, 0x2A, 0x63, 0xF3, -0x77, 0xA3, 0x03, 0x23, 0x01, 0x6A, 0x20, 0xE8, -0x01, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x30, 0xF0, 0x21, 0x6A, 0xB2, 0xF4, 0x5C, 0xA2, -0x0E, 0x72, 0x29, 0x61, 0x80, 0x18, 0x6B, 0x69, -0x26, 0x22, 0x30, 0xF0, 0x21, 0x6C, 0x12, 0xF5, -0x08, 0x4C, 0x04, 0x05, 0x80, 0x18, 0xC4, 0x56, -0x5D, 0x67, 0x92, 0xA2, 0x80, 0x18, 0x68, 0x69, -0x0A, 0x22, 0x5D, 0x67, 0x90, 0xA2, 0x80, 0x18, -0x68, 0x69, 0x05, 0x22, 0x5D, 0x67, 0x91, 0xA2, -0x80, 0x18, 0x68, 0x69, 0x10, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x44, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, -0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, -0x54, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x07, 0x97, -0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD0, 0x30, 0xF0, 0x21, 0x6A, 0xB2, 0xF4, -0x59, 0xA2, 0x01, 0x72, 0x4A, 0x61, 0x80, 0x18, -0x6B, 0x69, 0x47, 0x22, 0x30, 0xF0, 0x21, 0x68, -0x12, 0xF5, 0x08, 0x48, 0x90, 0x67, 0x05, 0x05, -0x80, 0x18, 0xC4, 0x56, 0x7D, 0x67, 0x56, 0xA3, -0x01, 0x72, 0x0E, 0x60, 0x03, 0x72, 0x0C, 0x60, -0x54, 0xA3, 0x01, 0x72, 0x09, 0x60, 0x03, 0x72, -0x07, 0x60, 0x55, 0xA3, 0x01, 0x72, 0x04, 0x60, -0x02, 0x72, 0x02, 0x60, 0x03, 0x72, 0x10, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x44, 0x9A, -0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x54, 0x9A, 0x60, 0xDA, 0xF0, 0x17, -0x90, 0x67, 0x04, 0x05, 0x80, 0x18, 0xB2, 0x56, -0x7D, 0x67, 0x51, 0xA3, 0x01, 0x72, 0x05, 0x60, -0x03, 0x72, 0x03, 0x60, 0x50, 0xA3, 0x01, 0x72, -0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x78, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF0, 0x54, 0x9A, 0x60, 0xDA, -0xF0, 0x17, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x4C, 0x9A, -0x40, 0xEA, 0x01, 0x6B, 0x07, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x06, 0x6C, -0x40, 0xEA, 0x00, 0x6B, 0x05, 0x97, 0x43, 0x67, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0xC4, 0x67, 0xC3, 0xF3, 0x94, 0xA3, 0x0F, 0x6D, -0xFF, 0x6A, 0x86, 0x34, 0xAC, 0xEC, 0x4C, 0xEC, -0x0C, 0x6D, 0xB8, 0xEC, 0x4C, 0xEE, 0x12, 0xED, -0x6D, 0xE5, 0xC3, 0xF3, 0xBF, 0xA3, 0x07, 0x6B, -0xAC, 0xEB, 0x4C, 0xEB, 0x01, 0x73, 0x2E, 0x60, -0x05, 0x23, 0x02, 0x73, 0x03, 0x60, 0x03, 0x73, -0x29, 0x60, 0x3E, 0x10, 0x0C, 0x6B, 0x78, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x01, 0x6D, 0x12, 0xEC, 0x51, 0xE4, 0xC3, 0xF3, -0x7F, 0xA4, 0x76, 0x33, 0xAC, 0xEB, 0x14, 0x2B, -0xE3, 0xF3, 0xA3, 0xA4, 0x0F, 0x6A, 0x4B, 0xEA, -0xAC, 0xEA, 0xE3, 0xF3, 0x43, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF5, 0x98, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x04, 0xD3, -0x00, 0x6D, 0x01, 0x6F, 0x40, 0xEA, 0x1C, 0x10, -0x02, 0x6B, 0xC3, 0xF3, 0x78, 0xC2, 0xE3, 0xF3, -0x80, 0xA4, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x02, 0x6B, 0xC3, 0xF3, -0x78, 0xC2, 0x0C, 0x6B, 0x78, 0xEC, 0x12, 0xEC, -0x49, 0xE4, 0xE3, 0xF3, 0x80, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0x92, 0x34, 0x80, 0xF5, 0x4C, 0x9A, -0x91, 0xE6, 0xFF, 0x6B, 0x6C, 0xEC, 0x40, 0xEA, -0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x4F, 0xA2, 0xC4, 0x67, 0x08, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, -0xFF, 0x6C, 0x51, 0x4C, 0x00, 0x6D, 0x40, 0xEA, +0x04, 0xD4, 0x04, 0x05, 0x84, 0x40, 0x04, 0x6E, +0x40, 0xEA, 0xC2, 0xA0, 0xFF, 0x6A, 0x91, 0x67, +0x04, 0x4E, 0xB0, 0x67, 0x4C, 0xEE, 0x80, 0x18, +0xAA, 0x69, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x41, 0xA4, 0x02, 0x2A, 0x80, 0x18, 0x29, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xC3, 0xF3, 0x34, 0xA0, 0xC3, 0xF3, 0xB8, 0xA0, -0x0F, 0x6B, 0x26, 0x31, 0xFF, 0x6A, 0x6C, 0xE9, -0x01, 0x75, 0x4C, 0xEC, 0x4C, 0xE9, 0x38, 0x61, -0x0C, 0x6D, 0xB8, 0xE9, 0x12, 0xED, 0x15, 0xE5, -0xE3, 0xF3, 0xC0, 0xA5, 0xCC, 0xEB, 0x8E, 0xEB, -0x2F, 0x2B, 0xE3, 0xF3, 0xC3, 0xA5, 0x01, 0x6B, -0xCC, 0xEB, 0x4C, 0xEB, 0x29, 0x23, 0xFF, 0xF6, -0x1F, 0x4A, 0xCC, 0xEA, 0xE3, 0xF3, 0x43, 0xC5, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x44, 0x9A, -0x01, 0x6D, 0x40, 0xEA, 0x14, 0x22, 0x34, 0x6A, -0x58, 0xE9, 0x02, 0x6C, 0xB1, 0x67, 0x12, 0xEA, -0x09, 0xE2, 0x23, 0xF5, 0x70, 0x9A, 0x01, 0x4B, -0x23, 0xF5, 0x70, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF5, 0x40, 0x9A, 0x40, 0xEA, 0x02, 0x6A, -0xC3, 0xF3, 0x58, 0xC0, 0x09, 0x10, 0x34, 0x6A, -0x58, 0xE9, 0x12, 0xE9, 0x01, 0xE1, 0x23, 0xF5, -0x54, 0x98, 0x01, 0x4A, 0x23, 0xF5, 0x54, 0xD8, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0xC3, 0xF3, 0x74, 0xA0, -0x01, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x24, 0x22, -0xC3, 0xF3, 0x55, 0xA0, 0x20, 0x4A, 0xC3, 0xF3, -0x55, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, -0x48, 0x9A, 0x40, 0xEA, 0xC3, 0xF3, 0x54, 0xA0, -0x0F, 0x6B, 0xC3, 0xF3, 0x95, 0xA0, 0x46, 0x32, -0x6C, 0xEA, 0xA0, 0xF0, 0x76, 0xA0, 0x96, 0x34, -0x2C, 0xEA, 0x82, 0xEB, 0x0D, 0x61, 0x0C, 0x6B, -0x78, 0xEA, 0x12, 0xEA, 0x01, 0xE2, 0xE3, 0xF3, -0x80, 0xA0, 0xC3, 0xF3, 0x5E, 0xA0, 0x92, 0x34, -0x93, 0xE2, 0x2C, 0xEC, 0x80, 0x18, 0xC5, 0x69, +0x30, 0xF0, 0x20, 0x68, 0xE9, 0xF3, 0x18, 0x48, +0x00, 0x6A, 0x41, 0xC0, 0x01, 0x6A, 0x40, 0xC0, +0x30, 0x6A, 0x41, 0xC8, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, +0x24, 0x67, 0xE6, 0xF1, 0x04, 0x4D, 0x84, 0x40, +0x30, 0x6E, 0x40, 0xEA, 0xC2, 0xA0, 0xFF, 0x6A, +0x91, 0x67, 0x04, 0x4E, 0xB0, 0x67, 0x4C, 0xEE, +0x80, 0x18, 0xAA, 0x69, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x41, 0xA4, 0x03, 0x2A, +0x85, 0x67, 0x80, 0x18, 0x48, 0x6A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x43, 0xA4, 0x62, 0xA4, +0x25, 0x67, 0x40, 0x32, 0x6D, 0xEA, 0x30, 0x22, +0x44, 0xA4, 0x06, 0x5A, 0x20, 0x60, 0x03, 0x6D, +0xB8, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0xC9, 0xF4, +0x1C, 0x48, 0x00, 0x6B, 0x61, 0xC0, 0x60, 0xC0, +0x44, 0xC0, 0x04, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x61, 0xC8, 0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0xC6, 0xF1, 0x10, 0x4B, 0x85, 0x40, +0x03, 0x6E, 0x12, 0xED, 0xB5, 0xE3, 0x40, 0xEA, +0xC2, 0xA0, 0xFF, 0x6A, 0x91, 0x67, 0x04, 0x4E, +0xB0, 0x67, 0x4C, 0xEE, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6D, 0xC9, 0xF4, 0x1C, 0x4D, 0x00, 0x6A, +0x41, 0xC5, 0x40, 0xC5, 0x00, 0x6A, 0x41, 0xCD, +0x91, 0x67, 0x04, 0x6E, 0x80, 0x18, 0xAA, 0x69, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xC3, 0xF3, 0x74, 0xA2, 0x80, 0x6C, -0x8B, 0xEC, 0x6C, 0xEC, 0xFF, 0x6B, 0x6C, 0xEC, -0x6D, 0x24, 0xC3, 0xF3, 0xF7, 0xA2, 0x0F, 0x6D, -0x10, 0x6C, 0xC7, 0x67, 0xAC, 0xEE, 0x01, 0x4E, -0x8B, 0xEC, 0xAC, 0xEE, 0xEC, 0xEC, 0xCD, 0xEC, -0xA0, 0xF0, 0xD6, 0xA2, 0xC3, 0xF3, 0x97, 0xC2, -0xAC, 0xEC, 0xC2, 0xEC, 0x5B, 0x61, 0xA0, 0xF0, -0xB9, 0xA2, 0x01, 0x6C, 0xAC, 0xEC, 0x6C, 0xEC, -0x15, 0x24, 0xFF, 0xF6, 0x1F, 0x4B, 0xAC, 0xEB, -0xA0, 0xF0, 0x79, 0xC2, 0xE3, 0xF4, 0x78, 0xA2, -0xA0, 0xF0, 0x75, 0xC2, 0xE3, 0xF4, 0x7B, 0xA2, -0xA0, 0xF0, 0x76, 0xC2, 0xE3, 0xF4, 0x79, 0xA2, -0xC3, 0xF3, 0x7E, 0xC2, 0xE3, 0xF4, 0x7A, 0xA2, -0xE3, 0xF3, 0x6A, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xC3, 0xF3, 0x94, 0xA2, -0x1E, 0x6B, 0x8C, 0xEB, 0x02, 0x73, 0x05, 0x61, -0x63, 0xF5, 0x70, 0xA2, 0x01, 0x4B, 0x63, 0xF5, -0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, -0x48, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x08, 0x6C, 0x40, 0xEA, 0xC3, 0xF3, -0x74, 0xA0, 0x1F, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xC3, 0xF3, 0x54, 0xC0, 0xC3, 0xF3, 0x54, 0xA0, -0x0F, 0x6B, 0x46, 0x32, 0x6C, 0xEA, 0x0C, 0x6B, -0x78, 0xEA, 0x12, 0xEA, 0x09, 0xE2, 0xE3, 0xF3, -0x80, 0xA2, 0xA0, 0xF0, 0x55, 0xA0, 0x92, 0x34, -0x93, 0xE2, 0xFF, 0x6A, 0x4C, 0xEC, 0x80, 0x18, -0xC5, 0x69, 0xC3, 0xF3, 0x77, 0xA0, 0x10, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x75, 0xA0, -0xC3, 0xF3, 0x57, 0xC0, 0x1F, 0x6A, 0x6C, 0xEA, -0xC3, 0xF3, 0x55, 0xC0, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0x41, 0xA4, 0x07, 0x2A, 0x43, 0xA4, 0x62, 0xA4, +0x40, 0x32, 0x6D, 0xEA, 0x02, 0x22, 0x80, 0x18, +0x61, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x40, 0xA4, 0x01, 0x72, +0x07, 0x60, 0x03, 0x22, 0x02, 0x72, 0x07, 0x60, +0x08, 0x10, 0x80, 0x18, 0x81, 0x6A, 0x05, 0x10, +0x80, 0x18, 0x5C, 0x6A, 0x02, 0x10, 0x80, 0x18, +0x43, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6B, 0xAC, 0xEB, +0x44, 0x67, 0x87, 0x67, 0x03, 0x23, 0x01, 0x73, +0x05, 0x60, 0x07, 0x10, 0xA2, 0x67, 0x80, 0x18, +0x88, 0x6A, 0x03, 0x10, 0xA2, 0x67, 0x80, 0x18, +0x24, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x78, 0x9A, +0x01, 0x6D, 0xFF, 0x6C, 0x40, 0xA3, 0xAC, 0xEA, +0x05, 0x22, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF1, 0x78, 0x9A, 0xFF, 0x6C, 0x02, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x04, 0x67, +0x4C, 0xE8, 0x30, 0x70, 0x26, 0x67, 0x4C, 0xED, +0x09, 0x61, 0x41, 0xA6, 0x0C, 0x72, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x44, 0xA2, +0x00, 0x6B, 0x44, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x6C, 0x9A, 0xFF, 0x6C, 0x08, 0x6E, +0x40, 0xA3, 0xCB, 0xEE, 0x8C, 0xEA, 0xCC, 0xEA, +0x05, 0x6E, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, +0x60, 0xA2, 0x0F, 0x6A, 0x6C, 0xEA, 0x04, 0x72, +0x1C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x48, 0x9A, 0x90, 0x67, 0xD1, 0x67, 0x40, 0xEA, +0x01, 0x72, 0x01, 0x6B, 0x23, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x4C, 0x9A, 0x83, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, +0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x02, 0x6B, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x4C, 0x9A, 0x02, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xA0, 0xF0, +0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x03, 0x6B, 0x23, 0x70, 0x03, 0x60, +0x30, 0x70, 0x0A, 0x60, 0x2F, 0x10, 0x03, 0x73, +0x2D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x50, 0x9A, 0x00, 0x6C, 0x40, 0xEA, 0x1C, 0x10, +0x41, 0xA1, 0x0D, 0x72, 0x0E, 0x61, 0x01, 0x6A, +0x6E, 0xEA, 0x06, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0xC9, 0xF5, 0x44, 0xC3, 0x01, 0x6D, 0x09, 0x10, +0x01, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, +0x84, 0xC2, 0x01, 0x6A, 0x4E, 0xEB, 0x01, 0x5B, +0xB8, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, +0x54, 0x9A, 0xC0, 0xA1, 0x00, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, +0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, +0x03, 0x5C, 0x58, 0x67, 0x6C, 0xEA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x63, 0xF3, 0x58, 0xA3, 0x0B, 0x2A, 0x63, 0xF3, +0x59, 0xA3, 0x08, 0x2A, 0x63, 0xF3, 0x5A, 0xA3, +0x05, 0x2A, 0x63, 0xF3, 0x7B, 0xA3, 0x03, 0x23, +0x01, 0x6A, 0x20, 0xE8, 0x01, 0x6A, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x21, 0x6A, +0x72, 0xF5, 0x5C, 0xA2, 0x0E, 0x72, 0x29, 0x61, +0x80, 0x18, 0xF6, 0x6A, 0x26, 0x22, 0x30, 0xF0, +0x21, 0x6C, 0xD2, 0xF5, 0x08, 0x4C, 0x04, 0x05, +0x80, 0x18, 0x2A, 0x57, 0x5D, 0x67, 0x92, 0xA2, +0x80, 0x18, 0xF3, 0x6A, 0x0A, 0x22, 0x5D, 0x67, +0x90, 0xA2, 0x80, 0x18, 0xF3, 0x6A, 0x05, 0x22, +0x5D, 0x67, 0x91, 0xA2, 0x80, 0x18, 0xF3, 0x6A, +0x10, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x6C, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF0, 0x58, 0x9A, 0x60, 0xDA, +0xF0, 0x17, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x30, 0xF0, +0x21, 0x6A, 0x72, 0xF5, 0x59, 0xA2, 0x01, 0x72, +0x4A, 0x61, 0x80, 0x18, 0xF6, 0x6A, 0x47, 0x22, +0x30, 0xF0, 0x21, 0x68, 0xD2, 0xF5, 0x08, 0x48, +0x90, 0x67, 0x05, 0x05, 0x80, 0x18, 0x2A, 0x57, +0x7D, 0x67, 0x56, 0xA3, 0x01, 0x72, 0x0E, 0x60, +0x03, 0x72, 0x0C, 0x60, 0x54, 0xA3, 0x01, 0x72, +0x09, 0x60, 0x03, 0x72, 0x07, 0x60, 0x55, 0xA3, +0x01, 0x72, 0x04, 0x60, 0x02, 0x72, 0x02, 0x60, +0x03, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF3, 0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x58, 0x9A, +0x60, 0xDA, 0xF0, 0x17, 0x90, 0x67, 0x04, 0x05, +0x80, 0x18, 0x18, 0x57, 0x7D, 0x67, 0x51, 0xA3, +0x01, 0x72, 0x05, 0x60, 0x03, 0x72, 0x03, 0x60, +0x50, 0xA3, 0x01, 0x72, 0x10, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF3, 0x48, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, +0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, +0x58, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x09, 0x97, +0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF5, 0x4C, 0x9A, 0x40, 0xEA, 0x01, 0x6B, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x48, 0x9A, 0x06, 0x6C, 0x40, 0xEA, 0x00, 0x6B, +0x05, 0x97, 0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0xC4, 0x67, 0xC3, 0xF3, +0x98, 0xA3, 0x0F, 0x6D, 0xFF, 0x6A, 0x86, 0x34, +0xAC, 0xEC, 0x4C, 0xEC, 0x0C, 0x6D, 0xB8, 0xEC, +0x4C, 0xEE, 0x12, 0xED, 0x6D, 0xE5, 0xE3, 0xF3, +0xA3, 0xA3, 0x07, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, +0x01, 0x73, 0x2E, 0x60, 0x05, 0x23, 0x02, 0x73, +0x03, 0x60, 0x03, 0x73, 0x29, 0x60, 0x3E, 0x10, +0x0C, 0x6B, 0x78, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0x01, 0x6D, 0x12, 0xEC, +0x51, 0xE4, 0xE3, 0xF3, 0x63, 0xA4, 0x76, 0x33, +0xAC, 0xEB, 0x14, 0x2B, 0xE3, 0xF3, 0xA7, 0xA4, +0x0F, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0xE3, 0xF3, +0x47, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x98, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x04, 0xD3, 0x00, 0x6D, 0x01, 0x6F, +0x40, 0xEA, 0x1C, 0x10, 0x02, 0x6B, 0xC3, 0xF3, +0x7C, 0xC2, 0xE3, 0xF3, 0x84, 0xA4, 0x0D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x02, 0x6B, 0xC3, 0xF3, 0x7C, 0xC2, 0x0C, 0x6B, +0x78, 0xEC, 0x12, 0xEC, 0x49, 0xE4, 0xE3, 0xF3, +0x84, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x92, 0x34, +0x80, 0xF5, 0x4C, 0x9A, 0x91, 0xE6, 0xFF, 0x6B, +0x6C, 0xEC, 0x40, 0xEA, 0x07, 0x97, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x57, 0xA2, +0xC4, 0x67, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, 0x51, 0x4C, +0x00, 0x6D, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0xC3, 0xF3, 0x38, 0xA0, +0xC3, 0xF3, 0xBC, 0xA0, 0x0F, 0x6B, 0x26, 0x31, +0xFF, 0x6A, 0x6C, 0xE9, 0x01, 0x75, 0x4C, 0xEC, +0x4C, 0xE9, 0x38, 0x61, 0x0C, 0x6D, 0xB8, 0xE9, +0x12, 0xED, 0x15, 0xE5, 0xE3, 0xF3, 0xC4, 0xA5, +0xCC, 0xEB, 0x8E, 0xEB, 0x2F, 0x2B, 0xE3, 0xF3, +0xC7, 0xA5, 0x01, 0x6B, 0xCC, 0xEB, 0x4C, 0xEB, +0x29, 0x23, 0xFF, 0xF6, 0x1F, 0x4A, 0xCC, 0xEA, +0xE3, 0xF3, 0x47, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x44, 0x9A, 0x01, 0x6D, 0x40, 0xEA, +0x14, 0x22, 0x34, 0x6A, 0x58, 0xE9, 0x02, 0x6C, +0xB1, 0x67, 0x12, 0xEA, 0x09, 0xE2, 0x23, 0xF5, +0x74, 0x9A, 0x01, 0x4B, 0x23, 0xF5, 0x74, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x40, 0x9A, +0x40, 0xEA, 0x02, 0x6A, 0xC3, 0xF3, 0x5C, 0xC0, +0x09, 0x10, 0x34, 0x6A, 0x58, 0xE9, 0x12, 0xE9, +0x01, 0xE1, 0x23, 0xF5, 0x58, 0x98, 0x01, 0x4A, +0x23, 0xF5, 0x58, 0xD8, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0xC3, 0xF3, 0x78, 0xA0, 0x01, 0x6A, 0xFF, 0x69, +0x6C, 0xEA, 0x24, 0x22, 0xC3, 0xF3, 0x59, 0xA0, +0x20, 0x4A, 0xC3, 0xF3, 0x59, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF5, 0x48, 0x9A, 0x40, 0xEA, +0xC3, 0xF3, 0x58, 0xA0, 0x0F, 0x6B, 0xC3, 0xF3, +0x99, 0xA0, 0x46, 0x32, 0x6C, 0xEA, 0xA0, 0xF0, +0x76, 0xA0, 0x96, 0x34, 0x2C, 0xEA, 0x82, 0xEB, +0x0D, 0x61, 0x0C, 0x6B, 0x78, 0xEA, 0x12, 0xEA, +0x01, 0xE2, 0xE3, 0xF3, 0x84, 0xA0, 0xE3, 0xF3, +0x42, 0xA0, 0x92, 0x34, 0x93, 0xE2, 0x2C, 0xEC, +0x80, 0x18, 0x50, 0x6B, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0x78, 0xA2, +0x80, 0x6C, 0x8B, 0xEC, 0x6C, 0xEC, 0xFF, 0x6B, +0x6C, 0xEC, 0x73, 0x24, 0xC3, 0xF3, 0xFB, 0xA2, +0x0F, 0x6D, 0x10, 0x6C, 0xC7, 0x67, 0xAC, 0xEE, +0x01, 0x4E, 0x8B, 0xEC, 0xAC, 0xEE, 0xEC, 0xEC, +0xCD, 0xEC, 0xA0, 0xF0, 0xD6, 0xA2, 0xC3, 0xF3, +0x9B, 0xC2, 0xAC, 0xEC, 0xC2, 0xEC, 0x61, 0x61, +0xA0, 0xF0, 0xB9, 0xA2, 0x01, 0x6C, 0xAC, 0xEC, +0x6C, 0xEC, 0x15, 0x24, 0xFF, 0xF6, 0x1F, 0x4B, +0xAC, 0xEB, 0xA0, 0xF0, 0x79, 0xC2, 0xE3, 0xF4, +0x7C, 0xA2, 0xA0, 0xF0, 0x75, 0xC2, 0xE3, 0xF4, +0x7F, 0xA2, 0xA0, 0xF0, 0x76, 0xC2, 0xE3, 0xF4, +0x7D, 0xA2, 0xE3, 0xF3, 0x62, 0xC2, 0xE3, 0xF4, +0x7E, 0xA2, 0xE3, 0xF3, 0x6E, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, +0x98, 0xA2, 0x1E, 0x6B, 0x8C, 0xEB, 0x02, 0x73, +0x05, 0x61, 0x63, 0xF5, 0x74, 0xA2, 0x01, 0x4B, +0x63, 0xF5, 0x74, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF5, 0x48, 0x9A, 0x08, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x98, 0xA2, 0x1F, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xC3, 0xF3, 0x78, 0xC2, 0xC3, 0xF3, +0x78, 0xA2, 0x0F, 0x6D, 0xA0, 0xF0, 0x95, 0xA2, +0x66, 0x33, 0xAC, 0xEB, 0x0C, 0x6D, 0xB8, 0xEB, +0x12, 0xEB, 0x49, 0xE3, 0xE3, 0xF3, 0x44, 0xA2, +0x52, 0x32, 0x42, 0xEC, 0x03, 0x61, 0x53, 0xE4, +0xFF, 0x6A, 0x4C, 0xEC, 0x80, 0x18, 0x50, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x9B, 0xA2, 0x10, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xC3, 0xF3, 0x99, 0xA2, 0xC3, 0xF3, +0x7B, 0xC2, 0x1F, 0x6B, 0x8C, 0xEB, 0xC3, 0xF3, +0x79, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6D, 0xFF, 0x6B, 0x40, 0xA2, +0x50, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x4C, 0xEB, +0xA0, 0xF2, 0x50, 0x9D, 0x05, 0xD3, 0x00, 0x6C, +0xFF, 0x6D, 0x40, 0xEA, 0x60, 0xF6, 0x48, 0x98, +0x30, 0xF0, 0x20, 0x69, 0x60, 0xF6, 0x0C, 0x49, +0x44, 0xA2, 0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6D, +0x52, 0x32, 0x48, 0x32, 0x29, 0xE2, 0x40, 0x9A, +0x84, 0xA2, 0x0F, 0x6A, 0x4C, 0xEC, 0x40, 0xF4, +0x48, 0x9B, 0xAC, 0xEC, 0x00, 0x6D, 0x40, 0xEA, +0x60, 0xF6, 0x48, 0x98, 0x0F, 0x6B, 0x30, 0xF0, +0x20, 0x6D, 0x44, 0xA2, 0x6C, 0xEA, 0x48, 0x32, +0x29, 0xE2, 0x40, 0x9A, 0x84, 0xA2, 0x40, 0xF4, +0x4C, 0x9D, 0x01, 0x6D, 0x6C, 0xEC, 0xFF, 0x6B, +0x6C, 0xEC, 0x40, 0xEA, 0x04, 0xD2, 0x60, 0xF6, +0x48, 0x98, 0x0F, 0x6D, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xA2, 0xAC, 0xEA, 0x48, 0x32, 0x29, 0xE2, +0x40, 0x9A, 0x84, 0xA2, 0x40, 0xF4, 0x4C, 0x9B, +0xAC, 0xEC, 0xFF, 0x6D, 0xAC, 0xEC, 0x00, 0x6D, +0x40, 0xEA, 0x60, 0xF6, 0x68, 0x98, 0x04, 0x95, +0x30, 0xF0, 0x20, 0x6F, 0x80, 0xA3, 0x03, 0xF5, +0xE0, 0x9F, 0x86, 0x34, 0x80, 0x34, 0x88, 0x34, +0x91, 0xE2, 0x43, 0xEC, 0x58, 0x67, 0x55, 0xE5, +0x04, 0xD5, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0xD8, 0x9A, 0x44, 0xA3, 0xA0, 0x9E, 0x52, 0x32, +0x48, 0x32, 0x29, 0xE2, 0x40, 0x9A, 0x44, 0xA2, +0x00, 0xF7, 0x40, 0x32, 0xEC, 0xEA, 0x30, 0xF0, +0x20, 0x6F, 0x63, 0xF1, 0xE4, 0x9F, 0xEC, 0xED, +0xAD, 0xEA, 0x40, 0xDE, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0x95, 0x63, 0xF7, 0x48, 0x9A, 0xA0, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x4C, 0x9A, +0xFF, 0x6D, 0x80, 0xDA, 0x44, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0x52, 0x32, 0x48, 0x32, 0x25, 0xE2, +0x40, 0x99, 0x84, 0xA2, 0x0F, 0x6A, 0x4C, 0xEC, +0x40, 0xF4, 0x48, 0x9B, 0xAC, 0xEC, 0x01, 0x6D, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, +0x50, 0x9B, 0x05, 0x95, 0x50, 0x6E, 0x00, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x48, 0x9A, 0x0F, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x60, 0xF6, 0x98, 0x9B, 0x20, 0x6A, +0x4B, 0xEA, 0xA1, 0xA4, 0xAC, 0xEA, 0x14, 0x6D, +0xAD, 0xEA, 0x41, 0xC4, 0x60, 0xF6, 0x78, 0x9B, +0x80, 0x6A, 0x4B, 0xEA, 0x80, 0xA3, 0x8D, 0xEA, +0x40, 0xC3, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0xA0, 0xF0, 0x94, 0xA3, 0x01, 0x6A, 0xFF, 0x6E, -0x8C, 0xEA, 0x20, 0x22, 0xC3, 0xF3, 0xF5, 0xA3, +0x8C, 0xEA, 0x20, 0x22, 0xC3, 0xF3, 0xF9, 0xA3, 0x1F, 0x6C, 0xA7, 0x67, 0x8C, 0xED, 0x45, 0x67, 0xCC, 0xEA, 0x18, 0x22, 0x20, 0x6A, 0x1F, 0x4D, 0x4B, 0xEA, 0x8C, 0xED, 0xEC, 0xEA, 0xAD, 0xEA, -0xC3, 0xF3, 0x55, 0xC3, 0x8C, 0xEA, 0xCC, 0xEA, +0xC3, 0xF3, 0x59, 0xC3, 0x8C, 0xEA, 0xCC, 0xEA, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x84, 0x9B, 0x00, 0xF3, 0x4C, 0x9A, 0x00, 0x6D, 0x14, 0x6E, @@ -38959,552 +39496,552 @@ u8 array_mp_8822c_fw_nic[] = { 0x80, 0xA4, 0x0F, 0x6D, 0x6C, 0xED, 0x72, 0x36, 0x40, 0xEA, 0x62, 0xA1, 0x01, 0x6A, 0x72, 0x30, 0x4C, 0xEB, 0x4F, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x0E, 0xF5, 0x71, 0xA3, 0x6C, 0xEA, 0xFF, 0x6B, +0x4E, 0xF5, 0x7D, 0xA3, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x00, 0x6B, 0x0D, 0xD3, 0x38, 0x2A, 0x44, 0x10, 0x1F, 0x6D, 0xB8, 0xE8, 0x0D, 0x96, 0x0C, 0x6A, 0x12, 0xED, 0x58, 0xEE, 0x0C, 0x96, 0x12, 0xEA, 0x55, 0xE5, 0xD5, 0xE5, 0x89, 0xE2, -0xE0, 0xF6, 0x1E, 0x4D, 0x69, 0xE2, 0xA8, 0x35, +0x00, 0xF7, 0x00, 0x4D, 0x69, 0xE2, 0xA8, 0x35, 0xC9, 0xE2, 0x75, 0xE5, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x70, 0x9B, 0xA2, 0x9D, 0x0D, 0x96, -0x63, 0xF4, 0xE0, 0xA2, 0x30, 0xF0, 0x21, 0x6C, -0x12, 0xF5, 0x08, 0x4C, 0x40, 0xEB, 0x0C, 0x92, +0x00, 0xF6, 0x70, 0x9B, 0xA1, 0x9D, 0x0D, 0x96, +0x63, 0xF4, 0xE4, 0xA2, 0x30, 0xF0, 0x21, 0x6C, +0xD2, 0xF5, 0x08, 0x4C, 0x40, 0xEB, 0x0C, 0x92, 0x01, 0x4A, 0x0C, 0xD2, 0x0C, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x0C, 0xD3, 0x7C, 0x6C, 0x98, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x0C, 0x95, 0x12, 0xEC, 0x69, 0xE4, 0x63, 0xF4, -0x58, 0xA2, 0x43, 0xED, 0xCE, 0x61, 0x0D, 0x96, +0x5C, 0xA2, 0x43, 0xED, 0xCE, 0x61, 0x0D, 0x96, 0xFF, 0x6A, 0x01, 0x4E, 0x4C, 0xEE, 0x0D, 0xD6, -0x30, 0xF0, 0x20, 0x6A, 0x0E, 0xF5, 0x51, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x4E, 0xF5, 0x5D, 0xA2, 0x0F, 0x6B, 0x46, 0x32, 0x6C, 0xEA, 0x0D, 0x93, 0x42, 0xEB, 0x03, 0x60, 0x00, 0x6D, 0x0C, 0xD5, 0xE1, 0x17, 0x62, 0xA1, 0x02, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x00, 0x6A, 0xDD, 0x67, 0x58, 0xC6, 0x04, 0x04, 0x04, 0xD2, 0x05, 0xD2, 0x80, 0x18, -0xA5, 0x15, 0x7D, 0x67, 0x10, 0x6A, 0x5C, 0xC3, +0x8C, 0x15, 0x7D, 0x67, 0x10, 0x6A, 0x5C, 0xC3, 0x01, 0x6A, 0x55, 0xCB, 0x40, 0xA1, 0x07, 0x04, 0x5E, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x04, 0x67, 0x00, 0x18, 0x7B, 0xD6, 0x05, 0xD2, -0x80, 0xA0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xE3, 0xF3, 0x84, 0xCA, 0x81, 0xA0, -0xC3, 0xF3, 0xF9, 0xA2, 0x02, 0x6D, 0xE3, 0xF3, -0x90, 0xCA, 0x82, 0xA0, 0x01, 0x6E, 0xAB, 0xED, -0xE3, 0xF3, 0x9C, 0xCA, 0x83, 0xA0, 0xEC, 0xED, +0x04, 0x67, 0x00, 0x18, 0xD6, 0xD7, 0x05, 0xD2, +0x80, 0xA0, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xE3, 0xF3, 0x88, 0xCA, 0x81, 0xA0, +0xC3, 0xF3, 0xFD, 0xA2, 0x02, 0x6D, 0xE3, 0xF3, +0x94, 0xCA, 0x82, 0xA0, 0x01, 0x6E, 0xAB, 0xED, +0x03, 0xF4, 0x80, 0xCA, 0x83, 0xA0, 0xEC, 0xED, 0x70, 0x67, 0xCC, 0xEC, 0x8D, 0xED, 0xC3, 0xF3, -0xB9, 0xC2, 0xE3, 0xA0, 0x1F, 0x6C, 0x8B, 0xEC, +0xBD, 0xC2, 0xE3, 0xA0, 0x1F, 0x6C, 0x8B, 0xEC, 0xF2, 0x37, 0xE4, 0x37, 0xAC, 0xEC, 0xED, 0xEC, -0xC3, 0xF3, 0x99, 0xC2, 0xCC, 0xEC, 0xA0, 0xF0, -0x11, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF6, -0x0C, 0x4A, 0x00, 0x6D, 0xB1, 0xE3, 0x05, 0x96, -0x84, 0xA4, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x91, 0xE6, 0xFF, 0xF7, 0x1F, 0x6E, -0xCC, 0xEC, 0x30, 0xF0, 0x20, 0x6E, 0xA3, 0xF2, -0xC8, 0x9E, 0x80, 0xCE, 0x30, 0xF0, 0x20, 0x6E, -0x23, 0xF2, 0xC0, 0x9E, 0x9C, 0x34, 0xDD, 0xE4, +0xC3, 0xF3, 0x9D, 0xC2, 0xCC, 0xEC, 0xA0, 0xF0, +0x11, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF6, +0x18, 0x4A, 0x00, 0x6D, 0xB1, 0xE3, 0x05, 0x96, +0x84, 0xA4, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0x91, 0xE6, 0xFF, 0xF7, 0x1F, 0x6E, +0xCC, 0xEC, 0x30, 0xF0, 0x20, 0x6E, 0xC3, 0xF2, +0xCC, 0x9E, 0x80, 0xCE, 0x30, 0xF0, 0x20, 0x6E, +0x43, 0xF2, 0xC8, 0x9E, 0x9C, 0x34, 0xDD, 0xE4, 0xE0, 0xA7, 0xE0, 0xC2, 0xE1, 0x44, 0xDD, 0xE7, 0xE0, 0xA7, 0xE1, 0xC2, 0xE2, 0x44, 0xDD, 0xE7, 0xE0, 0xA7, 0xE2, 0xC2, 0xE3, 0x44, 0xD9, 0xE7, 0x44, 0x6F, 0xF8, 0xED, 0xC0, 0xA6, 0xC3, 0xC2, -0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF7, 0xD4, 0x9E, +0x30, 0xF0, 0x20, 0x6E, 0x43, 0xF7, 0xC8, 0x9E, 0xD9, 0xE4, 0x12, 0xEF, 0xFD, 0xE0, 0x30, 0xF0, -0x20, 0x68, 0x23, 0xF4, 0x14, 0x98, 0x63, 0xF5, -0x18, 0x4F, 0x11, 0xE4, 0x00, 0xA6, 0x01, 0x4E, +0x20, 0x68, 0x43, 0xF4, 0x18, 0x98, 0x63, 0xF5, +0x1C, 0x4F, 0x11, 0xE4, 0x00, 0xA6, 0x01, 0x4E, 0x8A, 0xEE, 0x00, 0xC7, 0x01, 0x4F, 0xFA, 0x61, 0x01, 0x4D, 0x02, 0x75, 0x44, 0x4A, 0xC2, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF6, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, 0x1C, 0x4A, 0x00, 0x6D, 0x44, 0x68, 0x18, 0xED, 0x01, 0x6F, 0xC1, 0x45, 0xEC, 0xEE, 0xD9, 0xE3, 0xE4, 0xA6, 0x05, 0x96, 0xFF, 0x6C, 0xAC, 0xEC, 0xDD, 0xE7, 0xFF, 0xF7, 0x1F, 0x6E, 0xCC, 0xEF, 0x30, 0xF0, -0x20, 0x6E, 0xA3, 0xF2, 0xC8, 0x9E, 0xE0, 0xCE, -0x30, 0xF0, 0x20, 0x6E, 0x2B, 0xF1, 0x18, 0x4E, +0x20, 0x6E, 0xC3, 0xF2, 0xCC, 0x9E, 0xE0, 0xCE, +0x30, 0xF0, 0x20, 0x6E, 0x8B, 0xF1, 0x00, 0x4E, 0x12, 0xE8, 0x01, 0xE6, 0x30, 0xF0, 0x20, 0x6E, -0x23, 0xF2, 0xC0, 0x9E, 0xFC, 0x37, 0x63, 0xF5, -0x18, 0x48, 0xD9, 0xE7, 0x04, 0xD6, 0x06, 0xD3, +0x43, 0xF2, 0xC8, 0x9E, 0xFC, 0x37, 0x63, 0xF5, +0x1C, 0x48, 0xD9, 0xE7, 0x04, 0xD6, 0x06, 0xD3, 0x20, 0xA0, 0x04, 0x93, 0xFF, 0x6E, 0x25, 0xE4, 0xCC, 0xE9, 0x01, 0x48, 0x20, 0xC3, 0x4A, 0xE8, 0x01, 0x4B, 0x04, 0xD3, 0xF5, 0x61, 0x30, 0xF0, -0x20, 0x69, 0x23, 0xF2, 0x00, 0x49, 0x20, 0x99, +0x20, 0x69, 0x43, 0xF2, 0x08, 0x49, 0x20, 0x99, 0x07, 0x47, 0x39, 0x48, 0x21, 0xE0, 0xBF, 0xF7, 0x3E, 0xA2, 0x06, 0x93, 0x01, 0x4D, 0x02, 0x49, 0x25, 0xE4, 0xCC, 0xE9, 0x20, 0xC0, 0x30, 0xF0, -0x20, 0x68, 0x23, 0xF2, 0x00, 0x48, 0x00, 0x98, +0x20, 0x68, 0x43, 0xF2, 0x08, 0x48, 0x00, 0x98, 0x27, 0x47, 0x3A, 0x49, 0x05, 0xE1, 0x19, 0x65, 0xBF, 0xF7, 0x3F, 0xA2, 0x18, 0x67, 0x42, 0x4F, 0x02, 0x49, 0x25, 0xE4, 0xCC, 0xE9, 0x20, 0xC0, -0x30, 0xF0, 0x20, 0x69, 0x23, 0xF2, 0x00, 0x49, +0x30, 0xF0, 0x20, 0x69, 0x43, 0xF2, 0x08, 0x49, 0x20, 0x99, 0x02, 0x75, 0x21, 0xE7, 0xBF, 0xF7, 0x3C, 0xA2, 0x03, 0x49, 0x25, 0xE4, 0xCC, 0xE9, -0x20, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0x44, 0xF1, -0x18, 0x98, 0x1D, 0xE7, 0xBF, 0xF7, 0x1D, 0xA2, +0x20, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0x64, 0xF1, +0x10, 0x98, 0x1D, 0xE7, 0xBF, 0xF7, 0x1D, 0xA2, 0x44, 0x4A, 0x03, 0x48, 0x11, 0xE4, 0xCC, 0xEC, 0x80, 0xC7, 0x97, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x10, 0xF0, 0x24, 0x6D, -0x05, 0x6C, 0x96, 0xF0, 0x11, 0x4D, 0x00, 0x18, +0x05, 0x6C, 0x36, 0xF7, 0x05, 0x4D, 0x00, 0x18, 0x1A, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x60, 0xA4, 0x0F, 0x69, 0x51, 0x67, 0x6C, 0xEA, 0x04, 0xD2, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0xF0, 0x72, 0x04, 0x67, 0x37, 0x61, 0x04, 0x92, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xFF, 0x4A, 0xC3, 0xF3, -0xB4, 0xA3, 0x2C, 0xEA, 0x44, 0x34, 0x1F, 0x6A, +0x8B, 0xF1, 0x00, 0x4B, 0xFF, 0x4A, 0xC3, 0xF3, +0xB8, 0xA3, 0x2C, 0xEA, 0x44, 0x34, 0x1F, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x8D, 0xEA, 0xC3, 0xF3, -0x54, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x58, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x44, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x01, 0x72, 0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x40, 0x9A, 0x00, 0x6C, 0xA4, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x02, 0x6C, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x04, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xC3, 0xF3, 0x94, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xC3, 0xF3, 0x74, 0xC2, 0xC1, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xC3, 0xF3, 0x78, 0xC2, 0xC1, 0x10, 0x04, 0x93, 0x0C, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x0E, 0xF5, 0x14, 0x4C, 0xA1, 0x40, +0x4C, 0x9A, 0x6E, 0xF5, 0x00, 0x4C, 0xA1, 0x40, 0x05, 0x6E, 0x12, 0xEB, 0x71, 0xE4, 0x05, 0xD3, 0x40, 0xEA, 0x05, 0x94, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x4D, 0xE4, 0xE3, 0xF3, -0x80, 0xA3, 0xFF, 0x6D, 0x92, 0x32, 0xAC, 0xEA, +0x8B, 0xF1, 0x00, 0x4A, 0x4D, 0xE4, 0xE3, 0xF3, +0x84, 0xA3, 0xFF, 0x6D, 0x92, 0x32, 0xAC, 0xEA, 0x05, 0x2A, 0x8C, 0xE9, 0x20, 0x6A, 0x4D, 0xE9, -0xE3, 0xF3, 0x20, 0xC3, 0x04, 0x94, 0x0C, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x78, 0xEC, 0x2B, 0xF1, -0x18, 0x4A, 0xE0, 0xF3, 0x08, 0x6C, 0x12, 0xEB, -0x4D, 0xE3, 0xC3, 0xF3, 0xBE, 0xA3, 0xA0, 0x35, +0xE3, 0xF3, 0x24, 0xC3, 0x04, 0x94, 0x0C, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x78, 0xEC, 0x8B, 0xF1, +0x00, 0x4A, 0xE0, 0xF3, 0x08, 0x6C, 0x12, 0xEB, +0x4D, 0xE3, 0xE3, 0xF3, 0xA2, 0xA3, 0xA0, 0x35, 0xA8, 0x35, 0x9A, 0xED, 0x01, 0x2C, 0xE5, 0xE8, -0x12, 0xEC, 0xC3, 0xF3, 0x9E, 0xC3, 0x60, 0xA0, +0x12, 0xEC, 0xE3, 0xF3, 0x82, 0xC3, 0x60, 0xA0, 0x04, 0x94, 0x72, 0x33, 0xFF, 0x4B, 0x8E, 0xEB, 0x80, 0xF0, 0x03, 0x2B, 0xA0, 0xF0, 0x9A, 0xAA, 0x0F, 0xF7, 0x01, 0x4B, 0x8C, 0xEB, 0x07, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x05, 0x6C, 0x40, 0xEA, 0x8E, 0x10, 0xC3, 0xF3, -0x74, 0xA2, 0x1F, 0x6C, 0x8B, 0xEC, 0x6C, 0xEC, -0xC3, 0xF3, 0x94, 0xC2, 0xC3, 0xF3, 0xD6, 0xA2, +0x78, 0xA2, 0x1F, 0x6C, 0x8B, 0xEC, 0x6C, 0xEC, +0xC3, 0xF3, 0x98, 0xC2, 0xC3, 0xF3, 0xDA, 0xA2, 0xA0, 0xA0, 0x10, 0x6B, 0x6B, 0xEB, 0xB2, 0x35, -0xCC, 0xEB, 0xAD, 0xEB, 0xC3, 0xF3, 0xBF, 0xA2, -0xC3, 0xF3, 0x76, 0xC2, 0x61, 0x6B, 0x6B, 0xEB, +0xCC, 0xEB, 0xAD, 0xEB, 0xE3, 0xF3, 0xA3, 0xA2, +0xC3, 0xF3, 0x7A, 0xC2, 0x61, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xBA, 0x35, 0xA0, 0xF0, 0x94, 0xA2, 0xB4, 0x35, 0xAD, 0xEB, 0x01, 0x6D, 0xAC, 0xEC, 0xFF, 0x6E, 0xCC, 0xEC, 0x0B, 0x24, 0x7F, 0x6C, -0x6C, 0xEC, 0xC3, 0xF3, 0x94, 0xC2, 0xC3, 0xF3, -0x95, 0xA2, 0x20, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x6C, 0xEC, 0xC3, 0xF3, 0x98, 0xC2, 0xC3, 0xF3, +0x99, 0xA2, 0x20, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xAD, 0xEB, 0x0A, 0x10, 0x80, 0x6C, 0x8B, 0xEC, -0x6D, 0xEC, 0xC3, 0xF3, 0x94, 0xC2, 0xC3, 0xF3, -0x95, 0xA2, 0x20, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xC3, 0xF3, 0x75, 0xC2, 0xC3, 0xF3, 0x74, 0xA0, +0x6D, 0xEC, 0xC3, 0xF3, 0x98, 0xC2, 0xC3, 0xF3, +0x99, 0xA2, 0x20, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0xC3, 0xF3, 0x79, 0xC2, 0xC3, 0xF3, 0x78, 0xA0, 0x01, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xEA, -0xC3, 0xF3, 0x54, 0xC0, 0xC3, 0xF3, 0x79, 0xA0, -0x00, 0x6A, 0xC3, 0xF3, 0x58, 0xC0, 0x21, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x59, 0xC0, +0xC3, 0xF3, 0x58, 0xC0, 0xC3, 0xF3, 0x7D, 0xA0, +0x00, 0x6A, 0xC3, 0xF3, 0x5C, 0xC0, 0x21, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x5D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x00, 0x6D, 0x78, 0x6E, 0x2E, 0xF6, 0x14, 0x4C, +0x00, 0x6D, 0x78, 0x6E, 0x8E, 0xF6, 0x00, 0x4C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x03, 0x6C, 0x0F, 0x69, 0x40, 0xEA, -0xE3, 0xF3, 0x80, 0xA0, 0x2C, 0xEC, 0x00, 0x18, -0xDB, 0xE7, 0xE3, 0xF3, 0x80, 0xA0, 0x2C, 0xEC, -0x00, 0x18, 0xA2, 0xE7, 0xE3, 0xF3, 0x8C, 0xA0, -0x2C, 0xEC, 0x00, 0x18, 0xA2, 0xE7, 0xE3, 0xF3, -0x80, 0xA0, 0x2C, 0xEC, 0x00, 0x18, 0xAC, 0xE7, -0xE3, 0xF3, 0x8C, 0xA0, 0x2C, 0xEC, 0x00, 0x18, -0xAC, 0xE7, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, -0x84, 0x9A, 0x00, 0x18, 0xB9, 0xE6, 0x10, 0xF0, -0x32, 0x6C, 0x15, 0xF1, 0x15, 0x4C, 0x00, 0x18, -0xB9, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, -0x80, 0x9A, 0x00, 0x18, 0xB9, 0xE6, 0x30, 0xF0, +0xE3, 0xF3, 0x84, 0xA0, 0x2C, 0xEC, 0x00, 0x18, +0x80, 0xE9, 0xE3, 0xF3, 0x84, 0xA0, 0x2C, 0xEC, +0x00, 0x18, 0x47, 0xE9, 0xE3, 0xF3, 0x90, 0xA0, +0x2C, 0xEC, 0x00, 0x18, 0x47, 0xE9, 0xE3, 0xF3, +0x84, 0xA0, 0x2C, 0xEC, 0x00, 0x18, 0x51, 0xE9, +0xE3, 0xF3, 0x90, 0xA0, 0x2C, 0xEC, 0x00, 0x18, +0x51, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, +0x84, 0x9A, 0x00, 0x18, 0x5E, 0xE8, 0x10, 0xF0, +0x32, 0x6C, 0x55, 0xF7, 0x01, 0x4C, 0x00, 0x18, +0x5E, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, +0x80, 0x9A, 0x00, 0x18, 0x5E, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x98, 0x9A, 0x00, 0x18, -0xB9, 0xE6, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x5E, 0xE8, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xF1, 0x63, 0x1D, 0x62, 0x1C, 0xD1, 0x1B, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0xFF, 0x6A, 0x2B, 0xF1, 0x18, 0x49, 0x4C, 0xEC, -0xC3, 0xF3, 0x54, 0xA1, 0x0F, 0x6B, 0xFF, 0x6D, +0xFF, 0x6A, 0x8B, 0xF1, 0x00, 0x49, 0x4C, 0xEC, +0xC3, 0xF3, 0x58, 0xA1, 0x0F, 0x6B, 0xFF, 0x6D, 0x46, 0x32, 0x6C, 0xEA, 0xAC, 0xEA, 0x0C, 0x68, 0x18, 0xEA, 0x18, 0xD2, 0x12, 0xE8, 0x21, 0xE0, -0xE3, 0xF3, 0x40, 0xA0, 0x6C, 0xEA, 0x8E, 0xEA, -0x7E, 0x2A, 0xE3, 0xF3, 0x63, 0xA0, 0x01, 0x6D, +0xE3, 0xF3, 0x44, 0xA0, 0x6C, 0xEA, 0x8E, 0xEA, +0x7E, 0x2A, 0xE3, 0xF3, 0x67, 0xA0, 0x01, 0x6D, 0x72, 0x32, 0xAC, 0xEA, 0xFF, 0x6D, 0xAC, 0xEA, 0x76, 0x22, 0x11, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xE3, 0xF3, 0x43, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF3, 0x47, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x44, 0x9A, 0x00, 0x6D, 0x40, 0xEA, -0x60, 0x2A, 0xC3, 0xF3, 0x3F, 0xA0, 0x01, 0x6A, +0x60, 0x2A, 0xE3, 0xF3, 0x23, 0xA0, 0x01, 0x6A, 0xFF, 0x6B, 0x32, 0x31, 0x4C, 0xE9, 0x6C, 0xE9, -0x49, 0x29, 0xE3, 0xF3, 0x43, 0xA0, 0x56, 0x33, +0x49, 0x29, 0xE3, 0xF3, 0x47, 0xA0, 0x56, 0x33, 0x02, 0x53, 0x44, 0x60, 0x10, 0x6B, 0x4D, 0xEB, -0xE3, 0xF3, 0x63, 0xC0, 0x0C, 0x04, 0x00, 0x6D, -0x30, 0x6E, 0x00, 0x18, 0x3D, 0xD7, 0xE3, 0xF3, -0x44, 0xA8, 0xBD, 0x67, 0x40, 0xF0, 0x2A, 0xC5, +0xE3, 0xF3, 0x67, 0xC0, 0x0C, 0x04, 0x00, 0x6D, +0x30, 0x6E, 0x00, 0x18, 0x98, 0xD8, 0xE3, 0xF3, +0x48, 0xA8, 0xBD, 0x67, 0x40, 0xF0, 0x2A, 0xC5, 0x40, 0xF0, 0x48, 0xCD, 0x01, 0x6A, 0x4B, 0xEA, -0x40, 0xF0, 0x4B, 0xC5, 0xE3, 0xF3, 0x40, 0xA0, +0x40, 0xF0, 0x4B, 0xC5, 0xE3, 0xF3, 0x44, 0xA0, 0x0F, 0x6B, 0x04, 0x04, 0x6C, 0xEA, 0x40, 0xF0, -0x4C, 0xC5, 0x10, 0xF0, 0x32, 0x6A, 0x76, 0xF7, +0x4C, 0xC5, 0x10, 0xF0, 0x32, 0x6A, 0x17, 0xF7, 0x1D, 0x4A, 0x0C, 0xD2, 0x10, 0xF0, 0x24, 0x6A, -0xB5, 0xF7, 0x09, 0x4A, 0x0D, 0xD2, 0x10, 0x03, +0x36, 0xF6, 0x1D, 0x4A, 0x0D, 0xD2, 0x10, 0x03, 0x00, 0x6A, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x0C, 0x94, 0x0D, 0x95, 0x0E, 0x96, -0x0F, 0x97, 0x0C, 0x69, 0x00, 0x18, 0x1A, 0xE5, -0x18, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x38, 0xEB, 0x12, 0xE9, 0x49, 0xE1, -0xE3, 0xF3, 0x63, 0xA2, 0x20, 0x4B, 0xE3, 0xF3, -0x63, 0xC2, 0x19, 0x10, 0x18, 0x93, 0x34, 0x69, -0x30, 0xF0, 0x20, 0x6A, 0x38, 0xEB, 0x2B, 0xF1, -0x18, 0x4A, 0x12, 0xE9, 0x49, 0xE1, 0x03, 0xF5, -0x7C, 0x9A, 0x01, 0x4B, 0x03, 0xF5, 0x7C, 0xDA, +0x0F, 0x97, 0x0C, 0x69, 0x00, 0x18, 0xBF, 0xE6, +0x18, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x38, 0xEB, 0x12, 0xE9, 0x49, 0xE1, +0xE3, 0xF3, 0x67, 0xA2, 0x20, 0x4B, 0xE3, 0xF3, +0x67, 0xC2, 0x19, 0x10, 0x18, 0x93, 0x34, 0x69, +0x30, 0xF0, 0x20, 0x6A, 0x38, 0xEB, 0x8B, 0xF1, +0x00, 0x4A, 0x12, 0xE9, 0x49, 0xE1, 0x23, 0xF5, +0x60, 0x9A, 0x01, 0x4B, 0x23, 0xF5, 0x60, 0xDA, 0x0A, 0x10, 0x18, 0x93, 0x34, 0x6A, 0x58, 0xEB, -0x12, 0xEA, 0x25, 0xE2, 0x03, 0xF5, 0x58, 0x99, -0x01, 0x4A, 0x03, 0xF5, 0x58, 0xD9, 0x1D, 0x97, +0x12, 0xEA, 0x25, 0xE2, 0x03, 0xF5, 0x5C, 0x99, +0x01, 0x4A, 0x03, 0xF5, 0x5C, 0xD9, 0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, 0x0F, 0x63, 0x00, 0xEF, 0xF2, 0x63, 0x1B, 0x62, 0x1A, 0xD1, 0x19, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xC3, 0xF3, 0x34, 0xA0, 0x0F, 0x6A, 0x0C, 0x04, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0xC3, 0xF3, 0x38, 0xA0, 0x0F, 0x6A, 0x0C, 0x04, 0x26, 0x31, 0x00, 0x6D, 0x30, 0x6E, 0x4C, 0xE9, -0x00, 0x18, 0x3D, 0xD7, 0x0C, 0x6A, 0x58, 0xE9, +0x00, 0x18, 0x98, 0xD8, 0x0C, 0x6A, 0x58, 0xE9, 0x7D, 0x67, 0x04, 0x04, 0x12, 0xE9, 0x01, 0xE1, -0xE3, 0xF3, 0x44, 0xA8, 0x40, 0xF0, 0x48, 0xCB, +0xE3, 0xF3, 0x48, 0xA8, 0x40, 0xF0, 0x48, 0xCB, 0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xF0, 0x4B, 0xC3, -0xE3, 0xF3, 0x40, 0xA0, 0x0F, 0x6B, 0x6C, 0xEA, +0xE3, 0xF3, 0x44, 0xA0, 0x0F, 0x6B, 0x6C, 0xEA, 0x7D, 0x67, 0x40, 0xF0, 0x4C, 0xC3, 0x10, 0xF0, -0x32, 0x6A, 0x76, 0xF7, 0x1D, 0x4A, 0x0C, 0xD2, -0x10, 0xF0, 0x24, 0x6A, 0xB5, 0xF7, 0x09, 0x4A, +0x32, 0x6A, 0x17, 0xF7, 0x1D, 0x4A, 0x0C, 0xD2, +0x10, 0xF0, 0x24, 0x6A, 0x36, 0xF6, 0x1D, 0x4A, 0x0D, 0xD2, 0x10, 0x03, 0x00, 0x6A, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x0F, 0x97, 0x0C, 0x94, 0x0D, 0x95, 0x0E, 0x96, 0x00, 0x18, -0x1A, 0xE5, 0x1B, 0x97, 0x1A, 0x91, 0x19, 0x90, +0xBF, 0xE6, 0x1B, 0x97, 0x1A, 0x91, 0x19, 0x90, 0x0E, 0x63, 0x00, 0xEF, 0xF1, 0x63, 0x1D, 0x62, 0x1C, 0xD1, 0x1B, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0xC3, 0xF3, 0x54, 0xA0, +0x8B, 0xF1, 0x00, 0x48, 0xC3, 0xF3, 0x58, 0xA0, 0x0F, 0x69, 0x46, 0x32, 0x2C, 0xEA, 0x18, 0xD2, -0xC3, 0xF3, 0x58, 0xA0, 0x03, 0x72, 0x71, 0x60, +0xC3, 0xF3, 0x5C, 0xA0, 0x03, 0x72, 0x71, 0x60, 0x0C, 0x04, 0x00, 0x6D, 0x30, 0x6E, 0x00, 0x18, -0x3D, 0xD7, 0x18, 0x93, 0x0C, 0x6A, 0xBD, 0x67, +0x98, 0xD8, 0x18, 0x93, 0x0C, 0x6A, 0xBD, 0x67, 0x58, 0xEB, 0x04, 0x04, 0x10, 0x03, 0x12, 0xEA, -0x01, 0xE2, 0xE3, 0xF3, 0x44, 0xA8, 0x40, 0xF0, +0x01, 0xE2, 0xE3, 0xF3, 0x48, 0xA8, 0x40, 0xF0, 0x48, 0xCD, 0x01, 0x6A, 0x40, 0xF0, 0x4A, 0xC5, 0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xF0, 0x4B, 0xC5, -0xE3, 0xF3, 0x40, 0xA0, 0x4C, 0xE9, 0x10, 0xF0, -0x32, 0x6A, 0x76, 0xF7, 0x1D, 0x4A, 0x0C, 0xD2, -0x10, 0xF0, 0x24, 0x6A, 0x35, 0xF7, 0x1D, 0x4A, +0xE3, 0xF3, 0x44, 0xA0, 0x4C, 0xE9, 0x10, 0xF0, +0x32, 0x6A, 0x17, 0xF7, 0x1D, 0x4A, 0x0C, 0xD2, +0x10, 0xF0, 0x24, 0x6A, 0xD6, 0xF5, 0x11, 0x4A, 0x0D, 0xD2, 0x40, 0xF0, 0x2C, 0xC5, 0x00, 0x6A, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x0C, 0x94, 0x0D, 0x95, 0x0E, 0x96, 0x0F, 0x97, -0x00, 0x18, 0x1A, 0xE5, 0x18, 0x95, 0x0C, 0x6B, -0x30, 0xF0, 0x20, 0x6C, 0x78, 0xED, 0x2B, 0xF1, -0x18, 0x4C, 0x12, 0xEB, 0x8D, 0xE3, 0xE3, 0xF3, -0x46, 0xC3, 0xE3, 0xF3, 0x46, 0xA3, 0x06, 0x22, -0xE3, 0xF3, 0x83, 0xA3, 0x01, 0x6A, 0x8D, 0xEA, -0xE3, 0xF3, 0x43, 0xC3, 0x18, 0x92, 0x0C, 0x6C, -0x30, 0xF0, 0x20, 0x6B, 0x98, 0xEA, 0x2B, 0xF1, -0x18, 0x4B, 0x07, 0x6E, 0x12, 0xEC, 0x71, 0xE4, -0xE3, 0xF3, 0xA3, 0xA4, 0xA6, 0x32, 0xCC, 0xEA, +0x00, 0x18, 0xBF, 0xE6, 0x18, 0x95, 0x0C, 0x6B, +0x30, 0xF0, 0x20, 0x6C, 0x78, 0xED, 0x8B, 0xF1, +0x00, 0x4C, 0x12, 0xEB, 0x8D, 0xE3, 0xE3, 0xF3, +0x4A, 0xC3, 0xE3, 0xF3, 0x4A, 0xA3, 0x06, 0x22, +0xE3, 0xF3, 0x87, 0xA3, 0x01, 0x6A, 0x8D, 0xEA, +0xE3, 0xF3, 0x47, 0xC3, 0x18, 0x92, 0x0C, 0x6C, +0x30, 0xF0, 0x20, 0x6B, 0x98, 0xEA, 0x8B, 0xF1, +0x00, 0x4B, 0x07, 0x6E, 0x12, 0xEC, 0x71, 0xE4, +0xE3, 0xF3, 0xA7, 0xA4, 0xA6, 0x32, 0xCC, 0xEA, 0x01, 0x4A, 0xCC, 0xEA, 0x44, 0x36, 0x0F, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0xCD, 0xEA, 0xE3, 0xF3, -0x43, 0xC4, 0xC3, 0xF3, 0x58, 0xA3, 0x08, 0x2A, -0xE3, 0xF3, 0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6A, +0x47, 0xC4, 0xC3, 0xF3, 0x5C, 0xA3, 0x08, 0x2A, +0xE3, 0xF3, 0x84, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x4C, 0x9A, 0x92, 0x34, 0x40, 0xEA, -0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x0E, 0xF5, -0x70, 0xC2, 0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, +0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x4E, 0xF5, +0x7C, 0xC2, 0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, 0x0F, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6C, -0x2B, 0xF1, 0x18, 0x4C, 0xC3, 0xF3, 0x14, 0xA4, +0x8B, 0xF1, 0x00, 0x4C, 0xC3, 0xF3, 0x18, 0xA4, 0x0F, 0x6F, 0x0C, 0x69, 0x06, 0x30, 0xEC, 0xE8, 0x38, 0xE8, 0x07, 0x6D, 0xFF, 0x6A, 0x12, 0xEB, -0x8D, 0xE3, 0xC3, 0xF3, 0xDF, 0xA3, 0xCC, 0xED, -0xC3, 0xF3, 0xD8, 0xA4, 0x02, 0x76, 0x06, 0x60, +0x8D, 0xE3, 0xE3, 0xF3, 0xC3, 0xA3, 0xCC, 0xED, +0xC3, 0xF3, 0xDC, 0xA4, 0x02, 0x76, 0x06, 0x60, 0x03, 0x6A, 0xCE, 0xEA, 0x5C, 0x22, 0x01, 0x76, 0x54, 0x60, 0x5B, 0x10, 0x01, 0x75, 0x06, 0x60, 0x30, 0x25, 0x02, 0x75, 0x2E, 0x60, 0x03, 0x75, -0x38, 0x60, 0x53, 0x10, 0xC3, 0xF3, 0xD6, 0xA4, +0x38, 0x60, 0x53, 0x10, 0xC3, 0xF3, 0xDA, 0xA4, 0xA1, 0x40, 0x4C, 0xED, 0xCC, 0xEF, 0xAE, 0xEF, 0xEB, 0xEE, 0xED, 0xEE, 0xC0, 0xF7, 0xC3, 0x36, 0xCC, 0xED, 0x38, 0xED, 0x12, 0xE9, 0x85, 0xE1, -0xC3, 0xF3, 0x9E, 0xA1, 0x20, 0x5C, 0x0A, 0x61, -0xE3, 0xF3, 0x84, 0xAB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF3, 0x82, 0xA1, 0x20, 0x5C, 0x0A, 0x61, +0xE3, 0xF3, 0x88, 0xAB, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x74, 0x9B, 0x4C, 0xEC, 0x0F, 0xF4, -0x00, 0x6D, 0x0E, 0x10, 0xC3, 0xF3, 0xBE, 0xA1, -0xE3, 0xF3, 0x84, 0xAB, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0x6D, 0x0E, 0x10, 0xE3, 0xF3, 0xA2, 0xA1, +0xE3, 0xF3, 0x88, 0xAB, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0x35, 0x40, 0xF4, 0x74, 0x9B, 0xA8, 0x35, 0x4C, 0xEC, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, 0x40, 0xEB, 0x0C, 0x6B, 0x78, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x12, 0xEB, -0x49, 0xE3, 0xE3, 0xF3, 0x86, 0xA2, 0x00, 0x18, -0xC1, 0xE5, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x12, 0xEB, +0x49, 0xE3, 0xE3, 0xF3, 0x8A, 0xA2, 0x00, 0x18, +0x66, 0xE7, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x40, 0x9A, 0x02, 0x6C, 0xB0, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x4C, 0x9A, 0x40, 0xEA, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x06, 0x6C, 0x40, 0xEA, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x54, 0x9A, 0x40, 0xEA, 0x02, 0x10, 0xC3, 0xF3, -0x58, 0xC4, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x5C, 0xC4, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xC3, 0xF3, 0x74, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0x78, 0xA2, 0x0C, 0x69, 0x66, 0x33, 0x06, 0xD3, 0x06, 0x94, 0x0F, 0x6B, 0x6C, 0xEC, 0x38, 0xEC, 0x06, 0xD4, -0x01, 0x6B, 0x12, 0xE9, 0x45, 0xE1, 0xC3, 0xF3, -0x1F, 0xA1, 0x12, 0x30, 0x6C, 0xE8, 0x23, 0x28, -0xE3, 0xF3, 0x63, 0xA1, 0x07, 0x6C, 0x66, 0x33, +0x01, 0x6B, 0x12, 0xE9, 0x45, 0xE1, 0xE3, 0xF3, +0x03, 0xA1, 0x12, 0x30, 0x6C, 0xE8, 0x23, 0x28, +0xE3, 0xF3, 0x67, 0xA1, 0x07, 0x6C, 0x66, 0x33, 0x8C, 0xEB, 0x02, 0x53, 0x1C, 0x60, 0x63, 0xF5, -0x72, 0xA2, 0x01, 0x4B, 0x63, 0xF5, 0x72, 0xC2, +0x76, 0xA2, 0x01, 0x4B, 0x63, 0xF5, 0x76, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x58, 0x9A, -0x40, 0xEA, 0xE3, 0xF3, 0xC0, 0xA1, 0x30, 0xF0, +0x40, 0xEA, 0xE3, 0xF3, 0xC4, 0xA1, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x88, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0xFF, 0x6B, 0xD2, 0x36, 0x04, 0xD0, 0x00, 0x6D, 0x6C, 0xEE, 0x01, 0x6F, 0x40, 0xEA, 0x31, 0x10, 0x06, 0x93, 0x0C, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0x38, 0xEB, -0x2B, 0xF1, 0x18, 0x4A, 0x01, 0x6B, 0x12, 0xE9, -0x45, 0xE1, 0xC3, 0xF3, 0x1F, 0xA1, 0x0E, 0x30, -0x6C, 0xE8, 0x1F, 0x28, 0x63, 0xF5, 0x71, 0xA2, -0x01, 0x4B, 0x63, 0xF5, 0x71, 0xC2, 0xE3, 0xF3, -0x86, 0xA1, 0x00, 0x18, 0xC1, 0xE5, 0xE3, 0xF3, -0x06, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x8B, 0xF1, 0x00, 0x4A, 0x01, 0x6B, 0x12, 0xE9, +0x45, 0xE1, 0xE3, 0xF3, 0x03, 0xA1, 0x0E, 0x30, +0x6C, 0xE8, 0x1F, 0x28, 0x63, 0xF5, 0x75, 0xA2, +0x01, 0x4B, 0x63, 0xF5, 0x75, 0xC2, 0xE3, 0xF3, +0x8A, 0xA1, 0x00, 0x18, 0x66, 0xE7, 0xE3, 0xF3, +0x0A, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x40, 0x9A, 0x06, 0x95, 0x02, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x4C, 0x9A, 0x40, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x06, 0x6C, 0x40, 0xEA, -0x03, 0x10, 0x03, 0x6B, 0xC3, 0xF3, 0x78, 0xC2, +0x03, 0x10, 0x03, 0x6B, 0xC3, 0xF3, 0x7C, 0xC2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xE9, 0x63, 0x2D, 0x62, 0x2C, 0xD1, 0x2B, 0xD0, 0x00, 0x6A, 0x7D, 0x67, 0x20, 0xF0, 0x58, 0xC3, 0x0C, 0xD2, 0x0D, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x00, 0x6B, 0x60, 0xF1, 0x10, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xC3, 0xF3, 0xB4, 0xA2, 0x0F, 0x6C, 0x1F, 0x6E, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0xB8, 0xA2, 0x0F, 0x6C, 0x1F, 0x6E, 0xA6, 0x33, 0x8C, 0xEB, 0x23, 0x67, 0x01, 0x4B, 0x8C, 0xEB, 0xCB, 0xEE, 0x64, 0x33, 0xCC, 0xED, -0x6D, 0xED, 0xC3, 0xF3, 0xB4, 0xC2, 0xC3, 0xF3, -0xB4, 0xA2, 0xC3, 0xF3, 0x76, 0xA2, 0xFF, 0x6F, +0x6D, 0xED, 0xC3, 0xF3, 0xB8, 0xC2, 0xC3, 0xF3, +0xB8, 0xA2, 0xC3, 0xF3, 0x7A, 0xA2, 0xFF, 0x6F, 0xA6, 0x30, 0x0E, 0xEB, 0x8C, 0xEB, 0xEC, 0xEB, 0xEC, 0xE9, 0x04, 0x2B, 0x66, 0x67, 0xAC, 0xEB, -0xC3, 0xF3, 0x74, 0xC2, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0xC3, 0xF3, 0x54, 0xA0, +0xC3, 0xF3, 0x78, 0xC2, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0xC3, 0xF3, 0x58, 0xA0, 0x46, 0x32, 0x28, 0xD2, 0x28, 0x94, 0x0F, 0x6A, -0x4C, 0xEC, 0x28, 0xD4, 0x00, 0x18, 0x5F, 0xDD, -0x28, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0x69, 0xF6, -0x10, 0x4C, 0xCC, 0x35, 0x95, 0xE5, 0x40, 0xDD, +0x4C, 0xEC, 0x28, 0xD4, 0x00, 0x18, 0xD3, 0xDE, +0x28, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0xA9, 0xF6, +0x18, 0x4C, 0xCC, 0x35, 0x95, 0xE5, 0x40, 0xDD, 0x2C, 0x32, 0x61, 0xDD, 0x91, 0xE2, 0x40, 0x9C, 0x61, 0x9C, 0x6D, 0xEA, 0x29, 0x22, 0x60, 0x9D, -0x40, 0x9C, 0x01, 0xE1, 0x03, 0xF5, 0x84, 0xA0, +0x40, 0x9C, 0x01, 0xE1, 0x03, 0xF5, 0x88, 0xA0, 0x4B, 0xE3, 0xE0, 0xF3, 0x08, 0x6B, 0x78, 0xEC, 0x12, 0xEC, 0x43, 0xEC, 0x06, 0x60, 0x7B, 0xEA, 0x01, 0x2B, 0xE5, 0xE8, 0x12, 0xEB, 0x03, 0xF5, -0x64, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x6D, 0xE1, 0x03, 0xF5, 0xA2, 0xA3, +0x68, 0xC0, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x6D, 0xE1, 0x03, 0xF5, 0xA6, 0xA3, 0x03, 0x2D, 0xE0, 0xF3, 0x08, 0x6C, 0x06, 0x10, 0xE0, 0xF3, 0x08, 0x6C, 0x98, 0xED, 0x12, 0xED, 0xA3, 0xEA, 0x06, 0x60, 0x9B, 0xEA, 0x01, 0x2C, -0xE5, 0xE8, 0x12, 0xEA, 0x03, 0xF5, 0x42, 0xC3, +0xE5, 0xE8, 0x12, 0xEA, 0x03, 0xF5, 0x46, 0xC3, 0x28, 0x92, 0x0C, 0x6C, 0x30, 0xF0, 0x20, 0x68, -0x98, 0xEA, 0x2B, 0xF1, 0x18, 0x48, 0x30, 0xF0, +0x98, 0xEA, 0x8B, 0xF1, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x0F, 0x6D, -0x12, 0xEC, 0x11, 0xE4, 0xC3, 0xF3, 0x7D, 0xA4, -0xC3, 0xF3, 0x9C, 0xA4, 0x6C, 0xED, 0x72, 0x36, -0x40, 0xEA, 0x80, 0x18, 0xF7, 0x52, 0xC3, 0xF3, -0x79, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, +0x12, 0xEC, 0x11, 0xE4, 0xE3, 0xF3, 0x61, 0xA4, +0xE3, 0xF3, 0x80, 0xA4, 0x6C, 0xED, 0x72, 0x36, +0x40, 0xEA, 0x80, 0x18, 0x5D, 0x53, 0xC3, 0xF3, +0x7D, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, 0x28, 0x92, 0x44, 0x6D, 0x30, 0xF0, 0x21, 0x6C, -0xB8, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF6, -0x0C, 0x4A, 0x12, 0xF5, 0x08, 0x4C, 0x12, 0xED, -0xB5, 0xE2, 0x80, 0x18, 0x46, 0x58, 0x0C, 0x68, -0x0C, 0x04, 0x80, 0x18, 0xA5, 0x15, 0x18, 0xE9, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, +0xB8, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF6, +0x18, 0x4A, 0xD2, 0xF5, 0x08, 0x4C, 0x12, 0xED, +0xB5, 0xE2, 0x80, 0x18, 0xAC, 0x58, 0x0C, 0x68, +0x0C, 0x04, 0x80, 0x18, 0x8C, 0x15, 0x18, 0xE9, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x02, 0x6B, 0x6B, 0xEB, 0x01, 0x6E, 0x12, 0xE9, -0x45, 0xE1, 0xE3, 0xF3, 0x83, 0xA1, 0x8C, 0xEB, -0xE3, 0xF3, 0x63, 0xC1, 0x28, 0x93, 0x18, 0xEB, +0x45, 0xE1, 0xE3, 0xF3, 0x87, 0xA1, 0x8C, 0xEB, +0xE3, 0xF3, 0x67, 0xC1, 0x28, 0x93, 0x18, 0xEB, 0x11, 0x6B, 0x6B, 0xEB, 0x12, 0xE8, 0x41, 0xE0, -0xE3, 0xF3, 0x83, 0xA0, 0xC3, 0xF3, 0xBF, 0xA0, +0xE3, 0xF3, 0x87, 0xA0, 0xE3, 0xF3, 0xA3, 0xA0, 0x8C, 0xEB, 0x1F, 0x6C, 0x8C, 0xEB, 0xE3, 0xF3, -0x63, 0xC0, 0xB6, 0x33, 0xCC, 0xEB, 0xFF, 0x6C, -0xA0, 0xF0, 0x01, 0x2B, 0xC3, 0xF3, 0xD9, 0xA2, +0x67, 0xC0, 0xB6, 0x33, 0xCC, 0xEB, 0xFF, 0x6C, +0xA0, 0xF0, 0x01, 0x2B, 0xC3, 0xF3, 0xDD, 0xA2, 0x20, 0x6B, 0xCC, 0xEB, 0x8C, 0xEB, 0x4D, 0x23, 0x07, 0x69, 0xAC, 0xE9, 0x8C, 0xE9, 0x32, 0x29, 0x10, 0x04, 0x00, 0x6D, 0x30, 0x6E, 0x00, 0x18, -0x3D, 0xD7, 0xE3, 0xF3, 0x44, 0xA8, 0x9D, 0x67, +0x98, 0xD8, 0xE3, 0xF3, 0x48, 0xA8, 0x9D, 0x67, 0x40, 0xF0, 0x3A, 0xC4, 0x40, 0xF0, 0x58, 0xCC, 0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xF0, 0x5B, 0xC4, -0xE3, 0xF3, 0x60, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, +0xE3, 0xF3, 0x64, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x40, 0xF0, 0x5C, 0xC4, 0x10, 0xF0, 0x32, 0x6A, -0x76, 0xF7, 0x1D, 0x4A, 0x10, 0xD2, 0x10, 0xF0, -0x24, 0x6A, 0xB5, 0xF7, 0x09, 0x4A, 0x11, 0xD2, +0x17, 0xF7, 0x1D, 0x4A, 0x10, 0xD2, 0x10, 0xF0, +0x24, 0x6A, 0x36, 0xF6, 0x1D, 0x4A, 0x11, 0xD2, 0x04, 0x04, 0x00, 0x6A, 0x14, 0x03, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x10, 0x94, 0x11, 0x95, 0x12, 0x96, 0x13, 0x97, 0x00, 0x18, -0x1A, 0xE5, 0x65, 0x10, 0x02, 0x6E, 0xCE, 0xE9, -0x62, 0x29, 0xC3, 0xF3, 0xC8, 0x9A, 0xC3, 0xF3, -0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, +0xBF, 0xE6, 0x65, 0x10, 0x02, 0x6E, 0xCE, 0xE9, +0x62, 0x29, 0xC3, 0xF3, 0xCC, 0x9A, 0xC3, 0xF3, +0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x9C, 0x9B, 0x5B, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0xC2, 0x36, 0x04, 0xD1, 0x00, 0x6D, 0xCE, 0x36, 0x01, 0x6F, 0x40, 0xEA, 0x4E, 0x10, 0x07, 0x6A, 0xAC, 0xEA, 0x8C, 0xEA, 0x02, 0x22, 0x02, 0x72, 0x48, 0x61, 0x1C, 0x04, -0x30, 0x6E, 0x00, 0x6D, 0x00, 0x18, 0x3D, 0xD7, +0x30, 0x6E, 0x00, 0x6D, 0x00, 0x18, 0x98, 0xD8, 0x28, 0x94, 0x0C, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x78, 0xEC, 0x2B, 0xF1, 0x18, 0x4A, 0xDD, 0x67, +0x78, 0xEC, 0x8B, 0xF1, 0x00, 0x4A, 0xDD, 0x67, 0x04, 0x04, 0x12, 0xEB, 0x49, 0xE3, 0xE3, 0xF3, -0x64, 0xAA, 0x80, 0xF0, 0x68, 0xCE, 0x01, 0x6B, +0x68, 0xAA, 0x80, 0xF0, 0x68, 0xCE, 0x01, 0x6B, 0x6B, 0xEB, 0x80, 0xF0, 0x6B, 0xC6, 0xE3, 0xF3, -0x60, 0xA2, 0x0F, 0x6A, 0x6C, 0xEA, 0x80, 0xF0, -0x4C, 0xC6, 0x10, 0xF0, 0x32, 0x6A, 0x76, 0xF7, +0x64, 0xA2, 0x0F, 0x6A, 0x6C, 0xEA, 0x80, 0xF0, +0x4C, 0xC6, 0x10, 0xF0, 0x32, 0x6A, 0x17, 0xF7, 0x1D, 0x4A, 0x1C, 0xD2, 0x10, 0xF0, 0x24, 0x6A, -0xB5, 0xF7, 0x09, 0x4A, 0x1D, 0xD2, 0x20, 0x03, +0x36, 0xF6, 0x1D, 0x4A, 0x1D, 0xD2, 0x20, 0x03, 0x00, 0x6A, 0x05, 0x10, 0x59, 0xE3, 0xC0, 0xA6, 0x55, 0xE4, 0x01, 0x4A, 0xC0, 0xC5, 0x20, 0x5A, 0xF9, 0x61, 0x1C, 0x94, 0x1D, 0x95, 0x1E, 0x96, -0x1F, 0x97, 0x00, 0x18, 0x1A, 0xE5, 0x28, 0x94, +0x1F, 0x97, 0x00, 0x18, 0xBF, 0xE6, 0x28, 0x94, 0x0C, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x78, 0xEC, -0x2B, 0xF1, 0x18, 0x4A, 0x12, 0xEB, 0x4D, 0xE3, -0xE3, 0xF3, 0x83, 0xA3, 0x10, 0x6A, 0x8D, 0xEA, -0x20, 0x4A, 0xE3, 0xF3, 0x43, 0xC3, 0x30, 0xF0, +0x8B, 0xF1, 0x00, 0x4A, 0x12, 0xEB, 0x4D, 0xE3, +0xE3, 0xF3, 0x87, 0xA3, 0x10, 0x6A, 0x8D, 0xEA, +0x20, 0x4A, 0xE3, 0xF3, 0x47, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0x95, 0x80, 0xF5, 0x40, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0x6B, 0x2B, 0xF1, 0x18, 0x4A, 0xC3, 0xF3, -0x78, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, +0x00, 0x6B, 0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, +0x7C, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x00, 0x6C, 0x40, 0xEA, 0x01, 0x6B, 0x2D, 0x97, 0x2C, 0x91, 0x2B, 0x90, 0x43, 0x67, 0x17, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xC0, 0xF7, 0x11, 0x5D, 0x04, 0x67, 0x00, 0x6A, 0x39, 0x60, 0x82, 0xA4, -0xA4, 0xA0, 0x00, 0x18, 0x0A, 0xD3, 0x30, 0xF0, +0xA4, 0xA0, 0x00, 0x18, 0x59, 0xD4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xA8, 0xC3, 0xA0, 0xA0, 0xF2, 0x54, 0x9A, 0x04, 0x6F, 0x01, 0x6D, 0x40, 0xEA, 0x22, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x58, 0x9A, 0x82, 0xA0, 0xC4, 0xA0, 0xB1, 0x67, -0x40, 0xEA, 0x82, 0xA0, 0x00, 0x18, 0x6D, 0xD2, -0x30, 0xF0, 0x20, 0x6B, 0x0E, 0xF5, 0x6C, 0xA3, +0x40, 0xEA, 0x82, 0xA0, 0x00, 0x18, 0xBC, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0x4E, 0xF5, 0x78, 0xA3, 0x0F, 0x6C, 0x66, 0x33, 0x8C, 0xEB, 0x34, 0x6C, -0x98, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x4E, 0xF6, -0x00, 0x4C, 0x12, 0xEB, 0x6D, 0xE4, 0x04, 0x22, +0x98, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x8E, 0xF6, +0x0C, 0x4C, 0x12, 0xEB, 0x6D, 0xE4, 0x04, 0x22, 0x86, 0x9B, 0x01, 0x4C, 0x86, 0xDB, 0x03, 0x10, 0x80, 0x9B, 0x01, 0x4C, 0x80, 0xDB, 0xA2, 0x67, -0x91, 0x67, 0x00, 0x18, 0x8B, 0xF0, 0xA4, 0xA0, -0x91, 0x67, 0x00, 0x18, 0x9A, 0xF0, 0x01, 0x6A, +0x91, 0x67, 0x00, 0x18, 0x30, 0xF2, 0xA4, 0xA0, +0x91, 0x67, 0x00, 0x18, 0x3F, 0xF2, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF0, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x80, 0xA2, 0xE7, 0xF1, -0xD4, 0xA3, 0xE7, 0xF1, 0x9C, 0xC3, 0xA0, 0xAA, +0x04, 0xF1, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x80, 0xA2, 0x67, 0xF2, +0xCC, 0xA3, 0x67, 0xF2, 0x94, 0xC3, 0xA0, 0xAA, 0x01, 0xF0, 0x00, 0x6C, 0xAC, 0xEC, 0x83, 0x35, 0x03, 0x6C, 0xAE, 0x35, 0x8B, 0xEC, 0xA4, 0x35, -0xCC, 0xEC, 0xAD, 0xEC, 0xE7, 0xF1, 0x94, 0xC3, -0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF1, 0x9C, 0x9C, -0xA0, 0xAC, 0xE7, 0xF1, 0xBE, 0xCB, 0xA0, 0xAA, +0xCC, 0xEC, 0xAD, 0xEC, 0x67, 0xF2, 0x8C, 0xC3, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF1, 0x94, 0x9C, +0xA0, 0xAC, 0x67, 0xF2, 0xB6, 0xCB, 0xA0, 0xAA, 0xBF, 0xF7, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0xCA, 0xA0, 0xAA, 0x7F, 0xF7, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0xCA, 0xC0, 0xAA, 0xFE, 0xF7, 0x1F, 0x6B, 0xFF, 0xF7, 0x1F, 0x6D, 0xCC, 0xEB, 0x60, 0xCA, 0x40, 0xAC, 0xFF, 0x6B, 0x21, 0x4B, 0xAC, 0xEA, 0x6D, 0xEA, 0xAC, 0xEA, 0x40, 0xCC, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE7, 0xF1, 0x9C, 0xA2, -0xE4, 0xF0, 0x6C, 0x9B, 0x01, 0x6E, 0x80, 0xC3, -0x30, 0xF0, 0x20, 0x6C, 0xE7, 0xF1, 0xBE, 0xAA, -0x44, 0xF1, 0x9C, 0x9C, 0xA0, 0xCC, 0xE7, 0xF1, -0x54, 0xA2, 0x80, 0xAB, 0xFF, 0xF7, 0x1F, 0x6D, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x67, 0xF2, 0x94, 0xA2, +0x04, 0xF1, 0x64, 0x9B, 0x01, 0x6E, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6C, 0x67, 0xF2, 0xB6, 0xAA, +0x64, 0xF1, 0x94, 0x9C, 0xA0, 0xCC, 0x67, 0xF2, +0x4C, 0xA2, 0x80, 0xAB, 0xFF, 0xF7, 0x1F, 0x6D, 0x46, 0x32, 0xCC, 0xEA, 0xAC, 0xEC, 0x40, 0x32, 0xFE, 0xF7, 0x1E, 0x4E, 0x4C, 0x32, 0xCC, 0xEC, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xCB, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x07, 0xF3, -0x90, 0xA2, 0x01, 0x6B, 0x00, 0x68, 0x8D, 0xEB, -0x07, 0xF3, 0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x87, 0xF3, +0x88, 0xA2, 0x01, 0x6B, 0x00, 0x68, 0x8D, 0xEB, +0x87, 0xF3, 0x68, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0x90, 0x67, 0x04, 0x05, 0x40, 0xEA, 0x01, 0x72, 0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, 0x40, 0x9A, 0x9D, 0x67, 0x70, 0xA4, 0x09, 0xE2, 0x01, 0x48, 0x00, 0xF2, 0x00, 0x70, 0x60, 0xC2, 0xEB, 0x61, 0x00, 0x6A, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0x07, 0xF3, 0x90, 0xA2, 0x02, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0x07, 0xF3, 0x70, 0xC2, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0x87, 0xF3, 0x88, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x87, 0xF3, 0x68, 0xC2, 0x03, 0x6A, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x6D, 0xF7, 0x14, 0x4A, 0x03, 0x6B, 0x4C, 0xEB, +0xCD, 0xF7, 0x00, 0x4A, 0x03, 0x6B, 0x4C, 0xEB, 0x03, 0x2B, 0x00, 0xF2, 0x00, 0x6C, 0x09, 0x10, 0x04, 0x6B, 0x03, 0x4A, 0x6B, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x6C, 0xEA, 0x6E, 0xF1, 0x14, 0x4C, +0x20, 0x6C, 0x6C, 0xEA, 0xCE, 0xF1, 0x00, 0x4C, 0x53, 0xE4, 0xF8, 0x4C, 0x04, 0x6E, 0xCB, 0xEE, -0x30, 0xF0, 0x20, 0x6B, 0x91, 0xE2, 0x2B, 0xF1, -0x18, 0x4B, 0x00, 0x6D, 0xCC, 0xEC, 0x67, 0xF3, -0x90, 0xDB, 0x67, 0xF3, 0xAC, 0xDB, 0x67, 0xF3, -0x48, 0xDB, 0xA1, 0xDC, 0x67, 0xF3, 0xD0, 0x9B, -0x53, 0xE4, 0xA0, 0xDE, 0x81, 0xDA, 0x67, 0xF3, -0xB0, 0x9B, 0xA0, 0xDA, 0x07, 0xF3, 0x94, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x91, 0xE2, 0x8B, 0xF1, +0x00, 0x4B, 0x00, 0x6D, 0xCC, 0xEC, 0xE7, 0xF3, +0x88, 0xDB, 0xE7, 0xF3, 0xA4, 0xDB, 0xE7, 0xF3, +0x40, 0xDB, 0xA1, 0xDC, 0xE7, 0xF3, 0xC8, 0x9B, +0x53, 0xE4, 0xA0, 0xDE, 0x81, 0xDA, 0xE7, 0xF3, +0xA8, 0x9B, 0xA0, 0xDA, 0x87, 0xF3, 0x8C, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x21, 0x6A, -0xB2, 0xF4, 0x00, 0x4A, 0x01, 0x10, 0x43, 0x67, +0x72, 0xF5, 0x00, 0x4A, 0x01, 0x10, 0x43, 0x67, 0x60, 0x9A, 0x83, 0xEB, 0xFC, 0x61, 0x61, 0x9A, 0x75, 0xE2, 0x8E, 0xED, 0x04, 0x2D, 0x81, 0x9C, 0x8D, 0xE3, 0x61, 0xDA, 0x82, 0x67, 0xC1, 0x9C, 0x60, 0x9A, 0xD5, 0xE4, 0x6E, 0xED, 0x0E, 0x2D, -0x30, 0xF0, 0x21, 0x6D, 0xB2, 0xF4, 0xA8, 0x9D, +0x30, 0xF0, 0x21, 0x6D, 0x72, 0xF5, 0xA8, 0x9D, 0xAA, 0xEB, 0x06, 0x60, 0x61, 0x9B, 0x79, 0xE6, 0xC1, 0xDC, 0x60, 0x9A, 0x60, 0x9B, 0x02, 0x10, 0xA0, 0xDC, 0x01, 0x10, 0x60, 0xDC, 0x8A, 0xEA, 0x01, 0x60, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x21, 0x6A, 0xB2, 0xF4, 0x48, 0x9A, -0x04, 0x67, 0x02, 0x2A, 0x80, 0x18, 0x4D, 0x6E, +0x30, 0xF0, 0x21, 0x6A, 0x72, 0xF5, 0x48, 0x9A, +0x04, 0x67, 0x02, 0x2A, 0x80, 0x18, 0x35, 0x70, 0x41, 0x20, 0x47, 0x40, 0x01, 0x4A, 0x03, 0x6B, 0x4C, 0xEB, 0x04, 0x23, 0x04, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, 0x44, 0x43, 0x37, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x07, 0xF3, -0x94, 0x9B, 0x43, 0xEC, 0x2F, 0x61, 0x67, 0xF3, -0x08, 0x9B, 0x30, 0xF0, 0x21, 0x6B, 0xB2, 0xF4, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x87, 0xF3, +0x8C, 0x9B, 0x43, 0xEC, 0x2F, 0x61, 0xE7, 0xF3, +0x00, 0x9B, 0x30, 0xF0, 0x21, 0x6B, 0x72, 0xF5, 0x00, 0x4B, 0x02, 0x10, 0x70, 0x67, 0x04, 0x67, 0x81, 0x98, 0x43, 0xEC, 0x02, 0x60, 0x80, 0x98, -0xF9, 0x2C, 0x30, 0xF0, 0x21, 0x6C, 0xB2, 0xF4, +0xF9, 0x2C, 0x30, 0xF0, 0x21, 0x6C, 0x72, 0xF5, 0x88, 0x9C, 0x0E, 0xEC, 0x1B, 0x24, 0x80, 0x98, 0x20, 0x9B, 0x80, 0xDB, 0x61, 0x98, 0x4F, 0xE3, 0x11, 0x5B, 0x05, 0x61, 0x51, 0xE0, 0x61, 0xDC, -0x41, 0xD8, 0x80, 0x18, 0x65, 0x6E, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x07, 0xF3, -0xB4, 0x9B, 0x81, 0x98, 0x47, 0x41, 0x01, 0x4A, -0x93, 0xE5, 0x07, 0xF3, 0x94, 0xDB, 0x00, 0x6B, +0x41, 0xD8, 0x80, 0x18, 0x4D, 0x70, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x87, 0xF3, +0xAC, 0x9B, 0x81, 0x98, 0x47, 0x41, 0x01, 0x4A, +0x93, 0xE5, 0x87, 0xF3, 0x8C, 0xDB, 0x00, 0x6B, 0x60, 0xD8, 0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x0F, 0x24, 0xF8, 0x4C, 0x40, 0x9C, 0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA1, 0x9C, 0x07, 0xF3, -0x74, 0x9A, 0x6D, 0xE5, 0x07, 0xF3, 0x74, 0xDA, -0x80, 0x18, 0x65, 0x6E, 0x05, 0x97, 0x03, 0x63, +0x8B, 0xF1, 0x00, 0x4A, 0xA1, 0x9C, 0x87, 0xF3, +0x6C, 0x9A, 0x6D, 0xE5, 0x87, 0xF3, 0x6C, 0xDA, +0x80, 0x18, 0x4D, 0x70, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, 0x4A, 0xA4, 0xC9, 0xA4, 0xA8, 0xA4, 0x08, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x4C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0xC3, 0xF2, 0x50, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x4C, 0xEB, 0x07, 0xD3, 0x8B, 0xA4, -0x30, 0xF0, 0x21, 0x6A, 0x52, 0xF4, 0x11, 0x4A, +0x30, 0xF0, 0x21, 0x6A, 0x12, 0xF5, 0x11, 0x4A, 0x0A, 0xD4, 0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6C, -0x60, 0xF7, 0xE2, 0x43, 0xEC, 0x37, 0x2B, 0xF1, -0x18, 0x4C, 0x91, 0xE7, 0xE8, 0xA4, 0x01, 0x6C, +0x70, 0xF7, 0xE1, 0x43, 0xEC, 0x37, 0x8B, 0xF1, +0x00, 0x4C, 0x91, 0xE7, 0xE8, 0xA4, 0x01, 0x6C, 0xEC, 0xEC, 0x06, 0x24, 0x80, 0xA2, 0x08, 0x97, 0xEE, 0xEC, 0x02, 0x2C, 0x11, 0x6A, 0x59, 0x10, 0x01, 0x4B, 0x0A, 0x73, 0x08, 0x4A, 0xEA, 0x61, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x60, 0xF7, -0x62, 0x42, 0x6C, 0x33, 0x2B, 0xF1, 0x18, 0x48, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x70, 0xF7, +0x61, 0x42, 0x6C, 0x33, 0x8B, 0xF1, 0x00, 0x48, 0x0D, 0xE3, 0x68, 0xA3, 0x01, 0x6F, 0xFF, 0x6C, 0xEC, 0xEB, 0x22, 0x67, 0x8C, 0xEB, 0x8C, 0xE9, 0x40, 0x2B, 0xC0, 0x36, 0xD9, 0xE5, 0x09, 0xD3, 0xFF, 0xF7, 0x1F, 0x6A, 0x66, 0x67, 0x4C, 0xEB, -0x60, 0xF7, 0x02, 0x49, 0x83, 0x67, 0x2C, 0x31, -0x06, 0xD3, 0x05, 0xE1, 0x80, 0x18, 0x7A, 0x6E, +0x60, 0xF7, 0x11, 0x49, 0x83, 0x67, 0x2C, 0x31, +0x06, 0xD3, 0x05, 0xE1, 0x80, 0x18, 0x62, 0x70, 0x43, 0xD9, 0x32, 0x22, 0x9D, 0x67, 0xE7, 0x44, 0x19, 0x4F, 0x80, 0xA7, 0xFD, 0x67, 0x67, 0x47, 0x89, 0xC1, 0x11, 0x4B, 0xE0, 0xAB, 0x30, 0xF0, -0x20, 0x6E, 0x64, 0xF0, 0xDC, 0x9E, 0xE5, 0xC9, +0x20, 0x6E, 0x84, 0xF0, 0xD4, 0x9E, 0xE5, 0xC9, 0x0A, 0x93, 0x07, 0x94, 0x09, 0x97, 0x95, 0xE3, 0xBC, 0x35, 0xD5, 0xE5, 0x30, 0xF0, 0x20, 0x6E, -0x03, 0xF1, 0xD8, 0x9E, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF1, 0xDC, 0x9E, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD7, 0x05, 0xD7, 0xE0, 0xF2, 0x78, 0x9B, 0x06, 0x97, 0x00, 0x6C, 0xD9, 0xE2, 0x40, 0xEB, 0x48, 0xA1, 0x01, 0x6B, 0x6D, 0xEA, 0x48, 0xC1, -0x07, 0xF3, 0x50, 0xA0, 0x02, 0x6B, 0x10, 0x4A, -0x6D, 0xEA, 0x07, 0xF3, 0x50, 0xC0, 0x00, 0x6A, +0x87, 0xF3, 0x48, 0xA0, 0x02, 0x6B, 0x10, 0x4A, +0x6D, 0xEA, 0x87, 0xF3, 0x48, 0xC0, 0x00, 0x6A, 0x04, 0x10, 0x01, 0x4A, 0x0A, 0x72, 0xAD, 0x61, 0x0F, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, @@ -39512,596 +40049,596 @@ u8 array_mp_8822c_fw_nic[] = { 0x89, 0xA4, 0x6C, 0xEA, 0x01, 0x72, 0xB8, 0x67, 0x04, 0xD5, 0x32, 0x2D, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x21, 0x69, 0x80, 0xF2, 0x48, 0x98, -0x52, 0xF4, 0x08, 0x49, 0x91, 0x67, 0x08, 0x6E, +0x12, 0xF5, 0x08, 0x49, 0x91, 0x67, 0x08, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, 0x87, 0x41, 0x01, 0x4C, 0x00, 0x6D, 0x50, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, 0x87, 0x41, 0x51, 0x4C, 0x00, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0x04, 0x92, -0x30, 0xF0, 0x20, 0x69, 0x2B, 0xF1, 0x18, 0x49, -0x67, 0xF3, 0x50, 0xD9, 0x80, 0xF2, 0x48, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xF7, 0x14, 0x4C, +0x30, 0xF0, 0x20, 0x69, 0x8B, 0xF1, 0x00, 0x49, +0xE7, 0xF3, 0x48, 0xD9, 0x80, 0xF2, 0x48, 0x98, +0x30, 0xF0, 0x20, 0x6C, 0xCD, 0xF7, 0x00, 0x4C, 0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, 0x40, 0xEA, -0x07, 0xF3, 0x70, 0xA1, 0x03, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x07, 0xF3, 0x50, 0xC1, 0x3C, 0x10, +0x87, 0xF3, 0x68, 0xA1, 0x03, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x87, 0xF3, 0x48, 0xC1, 0x3C, 0x10, 0x02, 0x6A, 0x6C, 0xEA, 0x39, 0x22, 0x3E, 0x10, -0x30, 0xF0, 0x20, 0x68, 0x60, 0xF7, 0xA2, 0x42, -0xAC, 0x35, 0x2B, 0xF1, 0x18, 0x48, 0x15, 0xE5, +0x30, 0xF0, 0x20, 0x68, 0x70, 0xF7, 0xA1, 0x42, +0xAC, 0x35, 0x8B, 0xF1, 0x00, 0x48, 0x15, 0xE5, 0xC8, 0xA5, 0x01, 0x6D, 0xFF, 0x69, 0xCC, 0xED, 0x4C, 0xE9, 0x26, 0x25, 0xA0, 0xA3, 0x8E, 0xED, -0x23, 0x2D, 0x60, 0xF7, 0x42, 0x41, 0x4C, 0x32, -0x09, 0xE2, 0x83, 0x9A, 0x80, 0x18, 0xA4, 0x6E, +0x23, 0x2D, 0x70, 0xF7, 0x41, 0x41, 0x4C, 0x32, +0x09, 0xE2, 0x83, 0x9A, 0x80, 0x18, 0x8C, 0x70, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, -0x80, 0xF2, 0x48, 0x9A, 0x52, 0xF4, 0x10, 0x4B, +0x80, 0xF2, 0x48, 0x9A, 0x12, 0xF5, 0x10, 0x4B, 0x2C, 0x34, 0x91, 0xE3, 0x00, 0x6D, 0x08, 0x6E, -0x40, 0xEA, 0x07, 0xF3, 0x70, 0xA0, 0xF0, 0x6A, +0x40, 0xEA, 0x87, 0xF3, 0x68, 0xA0, 0xF0, 0x6A, 0xFF, 0x6C, 0xF0, 0x4B, 0x6C, 0xEA, 0x8C, 0xEA, -0x07, 0xF3, 0x70, 0xC0, 0x09, 0x2A, 0xFD, 0x4A, -0x6C, 0xEA, 0x07, 0xF3, 0x50, 0xC0, 0x04, 0x10, +0x87, 0xF3, 0x68, 0xC0, 0x09, 0x2A, 0xFD, 0x4A, +0x6C, 0xEA, 0x87, 0xF3, 0x48, 0xC0, 0x04, 0x10, 0x01, 0x4A, 0x0A, 0x72, 0x08, 0x4B, 0xC8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x00, 0x6A, 0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x21, 0x6B, -0x52, 0xF4, 0x11, 0x4B, 0x00, 0x6A, 0xBC, 0x17, +0x12, 0xF5, 0x11, 0x4B, 0x00, 0x6A, 0xBC, 0x17, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xEE, 0xF4, 0x14, 0x4C, 0x00, 0x6D, 0x18, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA3, 0xF3, 0x7C, 0xA2, 0x03, 0x6C, -0x8B, 0xEC, 0x8C, 0xEB, 0xA3, 0xF3, 0xB8, 0xA2, -0xA3, 0xF3, 0x7C, 0xC2, 0x02, 0x6B, 0x6B, 0xEB, -0xAC, 0xEB, 0x8C, 0xEB, 0xA3, 0xF3, 0x78, 0xC2, -0x00, 0x6B, 0xA3, 0xF3, 0x79, 0xC2, 0x0C, 0x6B, -0xA3, 0xF3, 0x7A, 0xC2, 0x05, 0x97, 0x03, 0x63, +0x4E, 0xF5, 0x00, 0x4C, 0x00, 0x6D, 0x18, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xC3, 0xF3, 0x60, 0xA2, 0x03, 0x6C, +0x8B, 0xEC, 0x8C, 0xEB, 0xA3, 0xF3, 0xBC, 0xA2, +0xC3, 0xF3, 0x60, 0xC2, 0x02, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x8C, 0xEB, 0xA3, 0xF3, 0x7C, 0xC2, +0x00, 0x6B, 0xA3, 0xF3, 0x7D, 0xC2, 0x0C, 0x6B, +0xA3, 0xF3, 0x7E, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0xAC, 0xEA, 0x09, 0x60, 0x03, 0x24, 0x02, 0x74, 0x0B, 0x60, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF7, 0x78, 0x9B, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x74, 0x9B, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, -0x78, 0x9B, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0x20, 0x6B, 0x63, 0xF7, 0x70, 0x9B, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, 0x6C, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, +0x70, 0x9B, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, 0x01, 0x74, 0x0A, 0x60, 0x04, 0x24, 0x02, 0x74, 0x00, 0x6A, 0x13, 0x61, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, -0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF1, 0x54, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, -0x58, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, -0xFF, 0x6B, 0x6C, 0xEC, 0x01, 0x74, 0x0A, 0x60, -0x04, 0x24, 0x02, 0x74, 0x00, 0x6A, 0x13, 0x61, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, -0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC4, 0xF1, 0x40, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, +0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x4C, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, -0x44, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, +0x50, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, +0xFF, 0x6B, 0x6C, 0xEC, 0x01, 0x74, 0x0A, 0x60, +0x04, 0x24, 0x02, 0x74, 0x00, 0x6A, 0x13, 0x61, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, +0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x58, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, +0x5C, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA3, 0xF3, 0x5C, 0xA3, +0x8B, 0xF1, 0x00, 0x4B, 0xC3, 0xF3, 0x40, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, 0x00, 0x6A, 0x04, 0x24, -0xA3, 0xF3, 0x9E, 0xA3, 0x80, 0x18, 0x66, 0x6F, +0xC3, 0xF3, 0x82, 0xA3, 0x80, 0x18, 0x4E, 0x71, 0x05, 0x97, 0xFF, 0x6B, 0x5E, 0x32, 0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x9C, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xA3, 0xF3, -0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x9C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xA3, 0xF3, -0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x9C, 0xA2, +0x7C, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xA3, 0xF3, -0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x9C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xA3, 0xF3, -0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x9C, 0xA2, +0x7C, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0xA3, 0xF3, -0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x9C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xA3, 0xF3, -0x78, 0xC2, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x7C, 0xC2, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x69, -0xFF, 0x6C, 0x6F, 0x6D, 0x1F, 0x6E, 0x2B, 0xF1, -0x18, 0x49, 0x40, 0xEA, 0xA3, 0xF3, 0x7C, 0xA1, -0x02, 0x6A, 0x6C, 0xEA, 0x0D, 0x22, 0xA3, 0xF3, -0x1E, 0xA1, 0x90, 0x67, 0x80, 0x18, 0x58, 0x6F, +0xFF, 0x6C, 0x6F, 0x6D, 0x1F, 0x6E, 0x8B, 0xF1, +0x00, 0x49, 0x40, 0xEA, 0xC3, 0xF3, 0x60, 0xA1, +0x02, 0x6A, 0x6C, 0xEA, 0x0D, 0x22, 0xC3, 0xF3, +0x02, 0xA1, 0x90, 0x67, 0x80, 0x18, 0x40, 0x71, 0xBF, 0x6D, 0x4C, 0xED, 0x90, 0x67, 0x80, 0x18, -0x4B, 0x6F, 0x04, 0x6A, 0xA3, 0xF3, 0x59, 0xC1, +0x33, 0x71, 0x04, 0x6A, 0xA3, 0xF3, 0x5D, 0xC1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0x2B, 0xF1, 0x18, 0x49, 0xA3, 0xF3, 0x7C, 0xA1, -0x02, 0x6A, 0x6C, 0xEA, 0x0D, 0x22, 0xA3, 0xF3, -0x1E, 0xA1, 0x90, 0x67, 0x80, 0x18, 0x58, 0x6F, +0x8B, 0xF1, 0x00, 0x49, 0xC3, 0xF3, 0x60, 0xA1, +0x02, 0x6A, 0x6C, 0xEA, 0x0D, 0x22, 0xC3, 0xF3, +0x02, 0xA1, 0x90, 0x67, 0x80, 0x18, 0x40, 0x71, 0xBF, 0x6D, 0x4C, 0xED, 0x90, 0x67, 0x80, 0x18, -0x4B, 0x6F, 0x00, 0x6A, 0xA3, 0xF3, 0x59, 0xC1, +0x33, 0x71, 0x00, 0x6A, 0xA3, 0xF3, 0x5D, 0xC1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0xA4, 0x67, 0x21, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x9C, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, -0x03, 0x23, 0x03, 0x6B, 0xA3, 0xF3, 0x79, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x80, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, +0x03, 0x23, 0x03, 0x6B, 0xA3, 0xF3, 0x7D, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x9C, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, -0x03, 0x23, 0x01, 0x6B, 0xA3, 0xF3, 0x79, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x80, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, +0x03, 0x23, 0x01, 0x6B, 0xA3, 0xF3, 0x7D, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0xCE, 0x6F, 0x80, 0x18, 0x9D, 0x6F, +0x80, 0x18, 0xB6, 0x71, 0x80, 0x18, 0x85, 0x71, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xCE, 0x6F, -0x80, 0x18, 0xC1, 0x6F, 0x05, 0x97, 0x03, 0x63, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xB6, 0x71, +0x80, 0x18, 0xA9, 0x71, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0x30, 0xF0, -0x20, 0x68, 0xFF, 0x6C, 0xC5, 0x67, 0x2B, 0xF1, -0x18, 0x48, 0x40, 0xEA, 0xA3, 0xF3, 0x7C, 0xA0, -0x02, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, 0xA3, 0xF3, -0x3E, 0xA0, 0x91, 0x67, 0x80, 0x18, 0x58, 0x6F, +0x20, 0x68, 0xFF, 0x6C, 0xC5, 0x67, 0x8B, 0xF1, +0x00, 0x48, 0x40, 0xEA, 0xC3, 0xF3, 0x60, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, 0xC3, 0xF3, +0x22, 0xA0, 0x91, 0x67, 0x80, 0x18, 0x40, 0x71, 0x40, 0x6B, 0x4D, 0xEB, 0xFF, 0x6D, 0x91, 0x67, -0x6C, 0xED, 0x80, 0x18, 0x4B, 0x6F, 0x01, 0x6A, -0xA3, 0xF3, 0x59, 0xC0, 0x07, 0x97, 0x06, 0x91, +0x6C, 0xED, 0x80, 0x18, 0x33, 0x71, 0x01, 0x6A, +0xA3, 0xF3, 0x5D, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xDF, 0x6F, -0x80, 0x18, 0xB1, 0x6F, 0x05, 0x97, 0x03, 0x63, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xC7, 0x71, +0x80, 0x18, 0x99, 0x71, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0x30, 0xF0, -0x20, 0x68, 0xA4, 0x67, 0x22, 0x6E, 0x2B, 0xF1, -0x18, 0x48, 0x40, 0xEA, 0xA3, 0xF3, 0x7C, 0xA0, -0x02, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, 0xA3, 0xF3, -0x3E, 0xA0, 0x91, 0x67, 0x80, 0x18, 0x58, 0x6F, +0x20, 0x68, 0xA4, 0x67, 0x22, 0x6E, 0x8B, 0xF1, +0x00, 0x48, 0x40, 0xEA, 0xC3, 0xF3, 0x60, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, 0xC3, 0xF3, +0x22, 0xA0, 0x91, 0x67, 0x80, 0x18, 0x40, 0x71, 0x40, 0x6B, 0x4D, 0xEB, 0xFF, 0x6D, 0x91, 0x67, -0x6C, 0xED, 0x80, 0x18, 0x4B, 0x6F, 0x03, 0x6A, -0xA3, 0xF3, 0x59, 0xC0, 0x07, 0x97, 0x06, 0x91, +0x6C, 0xED, 0x80, 0x18, 0x33, 0x71, 0x03, 0x6A, +0xA3, 0xF3, 0x5D, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x9C, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0x80, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x03, 0x23, 0x01, 0x6B, -0xA3, 0xF3, 0x79, 0xC2, 0x05, 0x97, 0x03, 0x63, +0xA3, 0xF3, 0x7D, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x0E, 0x70, 0x80, 0x18, 0xB1, 0x6F, +0x80, 0x18, 0xF6, 0x71, 0x80, 0x18, 0x99, 0x71, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0xFF, 0x6C, 0x6F, 0x6D, -0x25, 0x6E, 0x2B, 0xF1, 0x18, 0x49, 0x40, 0xEA, -0xA3, 0xF3, 0x7C, 0xA1, 0x02, 0x6A, 0x6C, 0xEA, -0x0D, 0x22, 0xA3, 0xF3, 0x1E, 0xA1, 0x90, 0x67, -0x80, 0x18, 0x58, 0x6F, 0xBF, 0x6D, 0x4C, 0xED, -0x90, 0x67, 0x80, 0x18, 0x4B, 0x6F, 0x04, 0x6A, -0xA3, 0xF3, 0x59, 0xC1, 0x07, 0x97, 0x06, 0x91, +0x25, 0x6E, 0x8B, 0xF1, 0x00, 0x49, 0x40, 0xEA, +0xC3, 0xF3, 0x60, 0xA1, 0x02, 0x6A, 0x6C, 0xEA, +0x0D, 0x22, 0xC3, 0xF3, 0x02, 0xA1, 0x90, 0x67, +0x80, 0x18, 0x40, 0x71, 0xBF, 0x6D, 0x4C, 0xED, +0x90, 0x67, 0x80, 0x18, 0x33, 0x71, 0x04, 0x6A, +0xA3, 0xF3, 0x5D, 0xC1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0xA3, 0xF3, 0x5C, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, -0x01, 0x6A, 0x06, 0x24, 0xA3, 0xF3, 0x59, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0xC3, 0xF3, 0x40, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, +0x01, 0x6A, 0x06, 0x24, 0xA3, 0xF3, 0x5D, 0xA3, 0x02, 0x6B, 0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF4, 0x55, 0xA2, 0x05, 0x5A, 0xE0, 0xF0, +0x4E, 0xF5, 0x41, 0xA2, 0x05, 0x5A, 0xE0, 0xF0, 0x0C, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, -0x83, 0xF0, 0x18, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, -0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xA3, 0xF3, 0x9C, 0xA3, 0x04, 0x6A, +0xA3, 0xF0, 0x1C, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xC3, 0xF3, 0x80, 0xA3, 0x04, 0x6A, 0xFF, 0x6D, 0x8C, 0xEA, 0x19, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF7, 0x94, 0x9A, 0x02, 0x6E, +0x20, 0x6A, 0x83, 0xF7, 0x8C, 0x9A, 0x02, 0x6E, 0x40, 0xA4, 0xAC, 0xEA, 0xCD, 0xEA, 0xAC, 0xEA, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, -0x84, 0x9A, 0xF8, 0x6A, 0xA0, 0xA4, 0xAC, 0xEA, +0x9C, 0x9A, 0xF8, 0x6A, 0xA0, 0xA4, 0xAC, 0xEA, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x60, 0xA3, 0xC4, 0xF1, 0x48, 0x9A, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x74, 0x9A, -0x83, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xA3, 0xF3, 0xBC, 0xA3, 0x04, 0x6A, +0x64, 0xA3, 0xE4, 0xF1, 0x40, 0x9A, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x6C, 0x9A, +0x83, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xC3, 0xF3, 0xA0, 0xA3, 0x04, 0x6A, 0xFF, 0x6C, 0xAC, 0xEA, 0x1D, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF1, 0xAC, 0x9A, 0x02, 0x6E, +0x20, 0x6A, 0xE4, 0xF1, 0xA4, 0x9A, 0x02, 0x6E, 0x40, 0xA5, 0x8C, 0xEA, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, -0xA4, 0x9A, 0xF6, 0x4E, 0x40, 0xA5, 0x8C, 0xEA, +0xBC, 0x9A, 0xF6, 0x4E, 0x40, 0xA5, 0x8C, 0xEA, 0xCC, 0xEA, 0x01, 0x6E, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x60, 0xA3, 0xC4, 0xF1, 0x48, 0x9A, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x6C, 0x9A, -0x57, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xA3, 0xF3, 0xBC, 0xA3, 0x04, 0x6A, +0x64, 0xA3, 0xE4, 0xF1, 0x40, 0x9A, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x64, 0x9A, +0x57, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xC3, 0xF3, 0xA0, 0xA3, 0x04, 0x6A, 0xFF, 0x6C, 0xAC, 0xEA, 0x1D, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF1, 0xB0, 0x9A, 0x02, 0x6E, +0x20, 0x6A, 0xE4, 0xF1, 0xA8, 0x9A, 0x02, 0x6E, 0x08, 0x6F, 0x40, 0xA5, 0xEB, 0xEF, 0x8C, 0xEA, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF1, 0xA4, 0x9A, 0x40, 0xA5, +0x20, 0x6A, 0x04, 0xF1, 0xBC, 0x9A, 0x40, 0xA5, 0x8C, 0xEA, 0xEC, 0xEA, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x60, 0xA3, 0xC4, 0xF1, 0x48, 0x9A, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x70, 0x9A, -0x2B, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xA3, 0xF3, 0xBC, 0xA3, 0x04, 0x6A, +0x64, 0xA3, 0xE4, 0xF1, 0x40, 0x9A, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x68, 0x9A, +0x2B, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xC3, 0xF3, 0xA0, 0xA3, 0x04, 0x6A, 0xFF, 0x6C, 0xAC, 0xEA, 0x1D, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF1, 0xB4, 0x9A, 0x02, 0x6E, +0x20, 0x6A, 0xE4, 0xF1, 0xAC, 0x9A, 0x02, 0x6E, 0x40, 0xA5, 0x8C, 0xEA, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, -0xA4, 0x9A, 0xF6, 0x4E, 0x40, 0xA5, 0x8C, 0xEA, +0xBC, 0x9A, 0xF6, 0x4E, 0x40, 0xA5, 0x8C, 0xEA, 0xCC, 0xEA, 0x03, 0x6E, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x60, 0xA3, 0xC4, 0xF1, 0x48, 0x9A, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x74, 0x9A, +0x64, 0xA3, 0xE4, 0xF1, 0x40, 0x9A, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x6C, 0x9A, 0x40, 0xA3, 0xFF, 0x6C, 0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0xA3, 0xF3, 0x5C, 0xA3, 0x04, 0x6E, 0xFF, 0x6C, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0xC3, 0xF3, 0x40, 0xA3, 0x04, 0x6E, 0xFF, 0x6C, 0xCC, 0xEA, 0x1C, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xC4, 0xF1, 0xB8, 0x9A, 0x02, 0x6F, 0x40, 0xA5, +0xE4, 0xF1, 0xB0, 0x9A, 0x02, 0x6F, 0x40, 0xA5, 0x8C, 0xEA, 0xED, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0xA4, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0xBC, 0x9A, 0xF6, 0x4F, 0x40, 0xA5, 0x8C, 0xEA, 0xEC, 0xEA, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x60, 0xA3, 0xC4, 0xF1, -0x48, 0x9A, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xC4, 0xF1, 0x78, 0x9A, 0xFF, 0x6C, 0x01, 0x6D, +0x20, 0x6A, 0xC3, 0xF3, 0x64, 0xA3, 0xE4, 0xF1, +0x40, 0x9A, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF1, 0x70, 0x9A, 0xFF, 0x6C, 0x01, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x9C, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x06, 0x23, 0xA3, 0xF3, -0x98, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0xA3, 0xF3, -0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6D, -0x2B, 0xF1, 0x18, 0x4D, 0xA3, 0xF3, 0xDC, 0xA5, +0x9C, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0xA3, 0xF3, +0x7C, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6D, +0x8B, 0xF1, 0x00, 0x4D, 0xC3, 0xF3, 0xC0, 0xA5, 0x02, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, -0x4C, 0xEC, 0x02, 0x2B, 0xA3, 0xF3, 0x9A, 0xC5, +0x4C, 0xEC, 0x02, 0x2B, 0xA3, 0xF3, 0x9E, 0xC5, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0xA0, 0xF0, 0x7B, 0xA0, +0x8B, 0xF1, 0x00, 0x48, 0xA0, 0xF0, 0x7B, 0xA0, 0x7F, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x02, 0x72, 0x16, 0x60, 0xA0, 0xF0, 0x7C, 0xA0, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x2C, 0xEA, 0x0F, 0x22, -0x00, 0x18, 0x02, 0xC6, 0x0C, 0x2A, 0xA3, 0xF3, -0x7C, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, -0x06, 0x22, 0xA3, 0xF3, 0xDD, 0xA0, 0x0C, 0x6C, -0x00, 0x6D, 0x00, 0x18, 0x28, 0xCE, 0x07, 0x97, +0x00, 0x18, 0x22, 0xC6, 0x0C, 0x2A, 0xC3, 0xF3, +0x60, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x06, 0x22, 0xC3, 0xF3, 0xC1, 0xA0, 0x0C, 0x6C, +0x00, 0x6D, 0x00, 0x18, 0x3E, 0xCF, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x9C, 0xA2, -0x01, 0x6B, 0x6C, 0xEC, 0x16, 0x24, 0xA3, 0xF3, -0xDC, 0xA2, 0xA3, 0xF3, 0xBA, 0xA2, 0xDA, 0x34, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0x80, 0xA2, +0x01, 0x6B, 0x6C, 0xEC, 0x16, 0x24, 0xC3, 0xF3, +0xC0, 0xA2, 0xA3, 0xF3, 0xBE, 0xA2, 0xDA, 0x34, 0x6C, 0xEC, 0x0D, 0x24, 0x02, 0x75, 0x0F, 0x60, 0xCC, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x09, 0x23, -0xA3, 0xF3, 0xDD, 0xA2, 0x02, 0x6C, 0x01, 0x6D, -0x00, 0x18, 0x28, 0xCE, 0x02, 0x10, 0x02, 0x75, -0x02, 0x60, 0x80, 0x18, 0xC7, 0x70, 0x05, 0x97, +0xC3, 0xF3, 0xC1, 0xA2, 0x02, 0x6C, 0x01, 0x6D, +0x00, 0x18, 0x3E, 0xCF, 0x02, 0x10, 0x02, 0x75, +0x02, 0x60, 0x80, 0x18, 0xAF, 0x72, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x24, 0x67, 0xA3, 0xF3, -0x9C, 0xA3, 0x01, 0x6D, 0xFF, 0x6A, 0xAC, 0xEC, +0x8B, 0xF1, 0x00, 0x4B, 0x24, 0x67, 0xC3, 0xF3, +0x80, 0xA3, 0x01, 0x6D, 0xFF, 0x6A, 0xAC, 0xEC, 0x4C, 0xEC, 0x4C, 0xE9, 0x00, 0x68, 0x05, 0x24, -0xA3, 0xF3, 0x1C, 0xA3, 0x1A, 0x30, 0xAC, 0xE8, -0x4C, 0xE8, 0x80, 0x18, 0x74, 0x6F, 0x01, 0x72, +0xC3, 0xF3, 0x00, 0xA3, 0x1A, 0x30, 0xAC, 0xE8, +0x4C, 0xE8, 0x80, 0x18, 0x5C, 0x71, 0x01, 0x72, 0x13, 0x61, 0x12, 0x28, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xA3, 0xF3, 0x5C, 0xA3, +0x8B, 0xF1, 0x00, 0x4B, 0xC3, 0xF3, 0x40, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, 0x01, 0x6A, 0x09, 0x24, -0xA3, 0xF3, 0xDD, 0xA3, 0xA2, 0x67, 0x91, 0x67, -0x00, 0x18, 0x28, 0xCE, 0x01, 0x6A, 0x01, 0x10, +0xC3, 0xF3, 0xC1, 0xA3, 0xA2, 0x67, 0x91, 0x67, +0x00, 0x18, 0x3E, 0xCF, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x7C, 0xA2, 0x01, 0x6C, 0xA4, 0x67, -0x6C, 0xED, 0x0C, 0x25, 0xA3, 0xF3, 0xB8, 0xA2, -0xAD, 0xEC, 0xA3, 0xF3, 0x98, 0xC2, 0x02, 0x6A, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x60, 0xA2, 0x01, 0x6C, 0xA4, 0x67, +0x6C, 0xED, 0x0C, 0x25, 0xA3, 0xF3, 0xBC, 0xA2, +0xAD, 0xEC, 0xA3, 0xF3, 0x9C, 0xC2, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x02, 0x22, -0x80, 0x18, 0xE6, 0x40, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xF0, 0x40, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0x2B, 0xF1, 0x18, 0x49, 0xA3, 0xF3, 0x5E, 0xA1, +0x8B, 0xF1, 0x00, 0x49, 0xC3, 0xF3, 0x42, 0xA1, 0xFF, 0x68, 0x8C, 0xE8, 0x01, 0x72, 0x31, 0x60, 0x03, 0x22, 0x02, 0x72, 0x5F, 0x60, 0xC2, 0x10, -0x01, 0x6C, 0xC0, 0x6D, 0x80, 0x18, 0xA9, 0x76, -0x20, 0x6A, 0xA3, 0xF3, 0x7C, 0xA1, 0x4D, 0xE8, +0x01, 0x6C, 0xC0, 0x6D, 0x80, 0x18, 0x92, 0x78, +0x20, 0x6A, 0xC3, 0xF3, 0x60, 0xA1, 0x4D, 0xE8, 0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x6A, 0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF7, 0x50, 0x9A, 0x10, 0xF0, +0x20, 0x6A, 0x83, 0xF7, 0x48, 0x9A, 0x10, 0xF0, 0x00, 0x6D, 0x60, 0xA2, 0x8C, 0xEB, 0x60, 0xC2, 0x01, 0x6C, 0x5F, 0x10, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x0A, 0x22, 0xA3, 0xF3, -0x78, 0xA1, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x7C, 0xA1, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, 0xA3, 0xF3, -0x58, 0xC1, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x5C, 0xC1, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x63, 0x10, 0x01, 0x6C, 0x00, 0xF3, 0x00, 0x6D, -0x80, 0x18, 0xA9, 0x76, 0xA3, 0xF3, 0x7C, 0xA1, +0x80, 0x18, 0x92, 0x78, 0xC3, 0xF3, 0x60, 0xA1, 0x20, 0x6A, 0x4D, 0xE8, 0x04, 0x6A, 0xFF, 0x6C, 0x6C, 0xEA, 0x8C, 0xEA, 0x8C, 0xE8, 0x0D, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x48, 0x9A, 0x60, 0xA2, 0x8C, 0xEB, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x01, 0x6C, 0xA3, 0xF1, 0xBC, 0x9A, +0x20, 0x6A, 0x01, 0x6C, 0xE3, 0xF1, 0xA0, 0x9A, 0x30, 0x10, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, -0x6C, 0xEA, 0x0A, 0x22, 0xA3, 0xF3, 0x78, 0xA1, +0x6C, 0xEA, 0x0A, 0x22, 0xA3, 0xF3, 0x7C, 0xA1, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, -0x6B, 0xEB, 0x6C, 0xEA, 0xA3, 0xF3, 0x58, 0xC1, -0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6C, 0xA3, 0xF1, -0xBC, 0x9A, 0x32, 0x10, 0x01, 0x6C, 0x01, 0xF4, -0x00, 0x6D, 0x80, 0x18, 0xA9, 0x76, 0xA3, 0xF3, -0x7C, 0xA1, 0x20, 0x6A, 0x4D, 0xE8, 0x04, 0x6A, +0x6B, 0xEB, 0x6C, 0xEA, 0xA3, 0xF3, 0x5C, 0xC1, +0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6C, 0xE3, 0xF1, +0xA0, 0x9A, 0x32, 0x10, 0x01, 0x6C, 0x01, 0xF4, +0x00, 0x6D, 0x80, 0x18, 0x92, 0x78, 0xC3, 0xF3, +0x60, 0xA1, 0x20, 0x6A, 0x4D, 0xE8, 0x04, 0x6A, 0xFF, 0x6C, 0x6C, 0xEA, 0x8C, 0xEA, 0x8C, 0xE8, -0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0x50, 0x9A, 0x60, 0xA2, 0x8C, 0xEB, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0xB4, 0x9A, -0x01, 0x6C, 0x80, 0x18, 0xA9, 0x76, 0x16, 0x10, +0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, +0x48, 0x9A, 0x60, 0xA2, 0x8C, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0xB8, 0x9A, +0x01, 0x6C, 0x80, 0x18, 0x92, 0x78, 0x16, 0x10, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x0A, 0x22, 0xA3, 0xF3, 0x78, 0xA1, 0x02, 0x6A, +0x0A, 0x22, 0xA3, 0xF3, 0x7C, 0xA1, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, 0x6B, 0xEB, -0x6C, 0xEA, 0xA3, 0xF3, 0x58, 0xC1, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0xB4, 0x9A, 0x01, 0x6C, -0x80, 0x18, 0xC6, 0x76, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF4, 0x94, 0xA2, 0x08, 0x6A, 0xFF, 0x6B, +0x6C, 0xEA, 0xA3, 0xF3, 0x5C, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF2, 0xB8, 0x9A, 0x01, 0x6C, +0x80, 0x18, 0xAF, 0x78, 0x30, 0xF0, 0x20, 0x6A, +0x4E, 0xF5, 0x80, 0xA2, 0x08, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x09, 0x22, 0x10, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x02, 0x2A, 0x02, 0x6A, 0x01, 0x10, 0x04, 0x6A, 0x4D, 0xE8, 0x6C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xEE, 0xF4, 0x94, 0xA2, 0x02, 0x6A, +0x20, 0x6A, 0x4E, 0xF5, 0x80, 0xA2, 0x02, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x08, 0x22, 0x20, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x04, 0x22, 0x80, 0x6A, 0x4B, 0xEA, 0x4D, 0xE8, 0x6C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xEE, 0xF4, 0xB4, 0xA2, 0x40, 0x6C, +0x20, 0x6A, 0x4E, 0xF5, 0xA0, 0xA2, 0x40, 0x6C, 0x44, 0x67, 0xAC, 0xEA, 0xFF, 0x6B, 0x06, 0x2A, 0x80, 0x4A, 0xAC, 0xEA, 0x6C, 0xEA, 0x02, 0x2A, 0x8D, 0xE8, 0x6C, 0xE8, 0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x30, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x9C, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, -0x02, 0x24, 0xA3, 0xF3, 0x79, 0xC2, 0x05, 0x97, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xD5, 0xEC, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x80, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, +0x02, 0x24, 0xA3, 0xF3, 0x7D, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA3, 0xF3, 0x9C, 0xA2, 0x02, 0x6B, -0x8C, 0xEB, 0x0C, 0x23, 0xA3, 0xF3, 0x1E, 0xA2, -0x90, 0x67, 0x80, 0x18, 0x58, 0x6F, 0x40, 0x6B, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xC3, 0xF3, 0x80, 0xA2, 0x02, 0x6B, +0x8C, 0xEB, 0x0C, 0x23, 0xC3, 0xF3, 0x02, 0xA2, +0x90, 0x67, 0x80, 0x18, 0x40, 0x71, 0x40, 0x6B, 0x4D, 0xEB, 0xFF, 0x6D, 0x90, 0x67, 0x6C, 0xED, -0x80, 0x18, 0x4B, 0x6F, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0x18, 0x33, 0x71, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0xA4, 0x67, -0x23, 0x6E, 0x40, 0xEA, 0x00, 0x18, 0x30, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x9C, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, -0x02, 0x24, 0xA3, 0xF3, 0x79, 0xC2, 0x05, 0x97, +0x23, 0x6E, 0x40, 0xEA, 0x00, 0x18, 0xD5, 0xEC, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x80, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, +0x02, 0x24, 0xA3, 0xF3, 0x7D, 0xC2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0xA4, 0x67, -0x20, 0x6E, 0x40, 0xEA, 0x00, 0x18, 0x30, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x9C, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, -0x02, 0x24, 0xA3, 0xF3, 0x79, 0xC2, 0x05, 0x97, +0x20, 0x6E, 0x40, 0xEA, 0x00, 0x18, 0xD5, 0xEC, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x80, 0xA2, 0x02, 0x6B, 0x6C, 0xEC, +0x02, 0x24, 0xA3, 0xF3, 0x7D, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0xCE, 0x6F, 0x80, 0x18, 0xA6, 0x71, +0x80, 0x18, 0xB6, 0x71, 0x80, 0x18, 0x8E, 0x73, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x1A, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x9C, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, -0x03, 0x23, 0x03, 0x6B, 0xA3, 0xF3, 0x79, 0xC2, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xBF, 0xEC, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x80, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, +0x03, 0x23, 0x03, 0x6B, 0xA3, 0xF3, 0x7D, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x00, 0x18, 0x1A, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0xBF, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x69, -0xFF, 0x6C, 0x6F, 0x6D, 0x24, 0x6E, 0x2B, 0xF1, -0x18, 0x49, 0x40, 0xEA, 0xA3, 0xF3, 0x7C, 0xA1, -0x02, 0x6A, 0x6C, 0xEA, 0x0D, 0x22, 0xA3, 0xF3, -0x1E, 0xA1, 0x90, 0x67, 0x80, 0x18, 0x58, 0x6F, +0xFF, 0x6C, 0x6F, 0x6D, 0x24, 0x6E, 0x8B, 0xF1, +0x00, 0x49, 0x40, 0xEA, 0xC3, 0xF3, 0x60, 0xA1, +0x02, 0x6A, 0x6C, 0xEA, 0x0D, 0x22, 0xC3, 0xF3, +0x02, 0xA1, 0x90, 0x67, 0x80, 0x18, 0x40, 0x71, 0xBF, 0x6D, 0x4C, 0xED, 0x90, 0x67, 0x80, 0x18, -0x4B, 0x6F, 0x04, 0x6A, 0xA3, 0xF3, 0x59, 0xC1, +0x33, 0x71, 0x04, 0x6A, 0xA3, 0xF3, 0x5D, 0xC1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x1A, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0xBF, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x9C, 0xA2, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0x80, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x03, 0x23, 0x01, 0x6B, -0xA3, 0xF3, 0x79, 0xC2, 0x05, 0x97, 0x03, 0x63, +0xA3, 0xF3, 0x7D, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0xD7, 0x71, 0x80, 0x18, 0xB1, 0x6F, +0x80, 0x18, 0xBF, 0x73, 0x80, 0x18, 0x99, 0x71, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6D, -0x2B, 0xF1, 0x18, 0x4D, 0xA3, 0xF3, 0xDC, 0xA5, +0x8B, 0xF1, 0x00, 0x4D, 0xC3, 0xF3, 0xC0, 0xA5, 0x02, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x00, 0x6A, 0x02, 0x23, 0xA3, 0xF3, -0x59, 0xA5, 0x8A, 0xEA, 0x69, 0x60, 0x05, 0x5C, +0x5D, 0xA5, 0x8A, 0xEA, 0x69, 0x60, 0x05, 0x5C, 0x67, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x88, 0x34, -0xA3, 0xF0, 0x0C, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, +0xC3, 0xF0, 0x10, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, 0x04, 0x72, 0x03, 0x61, 0x80, 0x18, -0xF4, 0x6F, 0x5A, 0x10, 0x02, 0x72, 0x03, 0x61, -0x80, 0x18, 0xE5, 0x71, 0x55, 0x10, 0x03, 0x72, -0x03, 0x61, 0x80, 0x18, 0x1B, 0x70, 0x50, 0x10, -0x01, 0x72, 0x4E, 0x61, 0x80, 0x18, 0xB1, 0x6F, +0xDC, 0x71, 0x5A, 0x10, 0x02, 0x72, 0x03, 0x61, +0x80, 0x18, 0xCD, 0x73, 0x55, 0x10, 0x03, 0x72, +0x03, 0x61, 0x80, 0x18, 0x03, 0x72, 0x50, 0x10, +0x01, 0x72, 0x4E, 0x61, 0x80, 0x18, 0x99, 0x71, 0x4B, 0x10, 0x04, 0x72, 0x03, 0x61, 0x80, 0x18, -0xDF, 0x6F, 0x46, 0x10, 0x02, 0x72, 0x03, 0x61, -0x80, 0x18, 0xD7, 0x71, 0x41, 0x10, 0x03, 0x72, -0x03, 0x61, 0x80, 0x18, 0x0E, 0x70, 0x3C, 0x10, -0x3B, 0x2A, 0x80, 0x18, 0xCE, 0x6F, 0x38, 0x10, -0x04, 0x72, 0x03, 0x61, 0x80, 0x18, 0x8D, 0x71, +0xC7, 0x71, 0x46, 0x10, 0x02, 0x72, 0x03, 0x61, +0x80, 0x18, 0xBF, 0x73, 0x41, 0x10, 0x03, 0x72, +0x03, 0x61, 0x80, 0x18, 0xF6, 0x71, 0x3C, 0x10, +0x3B, 0x2A, 0x80, 0x18, 0xB6, 0x71, 0x38, 0x10, +0x04, 0x72, 0x03, 0x61, 0x80, 0x18, 0x75, 0x73, 0x33, 0x10, 0x01, 0x72, 0x03, 0x61, 0x80, 0x18, -0xA6, 0x71, 0x2E, 0x10, 0x03, 0x72, 0x03, 0x61, -0x80, 0x18, 0x84, 0x71, 0x29, 0x10, 0x28, 0x2A, -0x80, 0x18, 0xB3, 0x71, 0x25, 0x10, 0x04, 0x72, -0x03, 0x61, 0x80, 0x18, 0xF9, 0x6F, 0x20, 0x10, -0x01, 0x72, 0x03, 0x61, 0x80, 0x18, 0xC1, 0x6F, +0x8E, 0x73, 0x2E, 0x10, 0x03, 0x72, 0x03, 0x61, +0x80, 0x18, 0x6C, 0x73, 0x29, 0x10, 0x28, 0x2A, +0x80, 0x18, 0x9B, 0x73, 0x25, 0x10, 0x04, 0x72, +0x03, 0x61, 0x80, 0x18, 0xE1, 0x71, 0x20, 0x10, +0x01, 0x72, 0x03, 0x61, 0x80, 0x18, 0xA9, 0x71, 0x1B, 0x10, 0x02, 0x72, 0x03, 0x61, 0x80, 0x18, -0xB8, 0x71, 0x16, 0x10, 0x15, 0x2A, 0x80, 0x18, -0xDA, 0x6F, 0x12, 0x10, 0x03, 0x72, 0x03, 0x61, -0x80, 0x18, 0x20, 0x70, 0x0D, 0x10, 0x01, 0x72, -0x03, 0x61, 0x80, 0x18, 0x9D, 0x6F, 0x08, 0x10, -0x02, 0x72, 0x03, 0x61, 0x80, 0x18, 0xC2, 0x71, -0x03, 0x10, 0x02, 0x2A, 0x80, 0x18, 0xD5, 0x6F, +0xA0, 0x73, 0x16, 0x10, 0x15, 0x2A, 0x80, 0x18, +0xC2, 0x71, 0x12, 0x10, 0x03, 0x72, 0x03, 0x61, +0x80, 0x18, 0x08, 0x72, 0x0D, 0x10, 0x01, 0x72, +0x03, 0x61, 0x80, 0x18, 0x85, 0x71, 0x08, 0x10, +0x02, 0x72, 0x03, 0x61, 0x80, 0x18, 0xAA, 0x73, +0x03, 0x10, 0x02, 0x2A, 0x80, 0x18, 0xBD, 0x71, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA7, 0x44, 0x30, 0xF0, 0x20, 0x6C, 0xEE, 0xF4, -0x14, 0x4C, 0x01, 0x4D, 0x18, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xC3, 0xF3, 0x94, 0xA2, 0x01, 0x6B, 0x6C, 0xEC, -0x11, 0x24, 0xA3, 0xF3, 0x9C, 0xA2, 0x8C, 0xEB, +0xA7, 0x44, 0x30, 0xF0, 0x20, 0x6C, 0x4E, 0xF5, +0x00, 0x4C, 0x01, 0x4D, 0x18, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x98, 0xA2, 0x01, 0x6B, 0x6C, 0xEC, +0x11, 0x24, 0xC3, 0xF3, 0x80, 0xA2, 0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x0B, 0x23, 0xC3, 0xF3, -0x99, 0xA2, 0x40, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, -0x79, 0xC2, 0xC3, 0xF3, 0x70, 0x9A, 0xC3, 0xF3, -0x7A, 0xC2, 0x4F, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xC3, 0xF3, 0xF4, 0xA2, +0x9D, 0xA2, 0x40, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, +0x7D, 0xC2, 0xC3, 0xF3, 0x74, 0x9A, 0xC3, 0xF3, +0x7E, 0xC2, 0x4F, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xC3, 0xF3, 0xF8, 0xA2, 0x01, 0x6C, 0xA4, 0x67, 0xEC, 0xED, 0xFF, 0x6B, -0x44, 0x25, 0xA3, 0xF3, 0xBC, 0xA2, 0x8C, 0xED, -0x6C, 0xED, 0x3F, 0x2D, 0xC3, 0xF3, 0xD9, 0xA2, +0x44, 0x25, 0xC3, 0xF3, 0xA0, 0xA2, 0x8C, 0xED, +0x6C, 0xED, 0x3F, 0x2D, 0xC3, 0xF3, 0xDD, 0xA2, 0xDE, 0x4C, 0xA0, 0xF0, 0x16, 0xA2, 0xCC, 0xEC, -0xC3, 0xF3, 0xD5, 0xA2, 0xC3, 0xF3, 0x99, 0xC2, -0x1F, 0x6C, 0xCC, 0xEC, 0xC3, 0xF3, 0x95, 0xC2, -0xC3, 0xF3, 0x97, 0xA2, 0x0F, 0x6E, 0xCC, 0xE8, +0xC3, 0xF3, 0xD9, 0xA2, 0xC3, 0xF3, 0x9D, 0xC2, +0x1F, 0x6C, 0xCC, 0xEC, 0xC3, 0xF3, 0x99, 0xC2, +0xC3, 0xF3, 0x9B, 0xA2, 0x0F, 0x6E, 0xCC, 0xE8, 0x1C, 0x65, 0x10, 0x6C, 0x8B, 0xEC, 0x38, 0x67, -0x2C, 0xEC, 0x0D, 0xEC, 0xC3, 0xF3, 0x97, 0xC2, +0x2C, 0xEC, 0x0D, 0xEC, 0xC3, 0xF3, 0x9B, 0xC2, 0x1E, 0x6C, 0xEC, 0xEC, 0x6C, 0xEC, 0xC3, 0xF3, -0xB8, 0xC2, 0x17, 0x24, 0xC3, 0xF3, 0xB4, 0xA2, +0xBC, 0xC2, 0x17, 0x24, 0xC3, 0xF3, 0xB8, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x40, 0x9A, 0xA6, 0x35, 0xCC, 0xED, 0x02, 0x6C, 0x6C, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x4C, 0x9A, 0x40, 0xEA, 0x06, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x06, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x0E, 0xF5, -0x58, 0xA2, 0x0F, 0x6C, 0x4C, 0xEC, 0x00, 0x18, -0xDB, 0xE7, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0xA3, 0xF3, 0x5E, 0xA3, 0x01, 0x72, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x6E, 0xF5, +0x44, 0xA2, 0x0F, 0x6C, 0x4C, 0xEC, 0x00, 0x18, +0x80, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0xC3, 0xF3, 0x42, 0xA3, 0x01, 0x72, 0x6C, 0x60, 0x05, 0x22, 0x02, 0x72, 0x00, 0x6C, 0x20, 0xF1, 0x13, 0x61, 0xC9, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x58, 0x9A, 0xFF, 0x6D, +0x20, 0x6A, 0x63, 0xF7, 0x50, 0x9A, 0xFF, 0x6D, 0x08, 0x6F, 0x80, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF7, 0xDC, 0x9A, 0xEB, 0xEF, 0xAC, 0xEC, -0x40, 0xA6, 0xAC, 0xEA, 0xEC, 0xEA, 0xA3, 0xF3, -0xFD, 0xA3, 0xED, 0xEA, 0xAC, 0xEA, 0x40, 0xC6, -0xA3, 0xF3, 0x7C, 0xA3, 0x08, 0x6A, 0x6C, 0xEA, +0x63, 0xF7, 0xD4, 0x9A, 0xEB, 0xEF, 0xAC, 0xEC, +0x40, 0xA6, 0xAC, 0xEA, 0xEC, 0xEA, 0xC3, 0xF3, +0xE1, 0xA3, 0xED, 0xEA, 0xAC, 0xEA, 0x40, 0xC6, +0xC3, 0xF3, 0x60, 0xA3, 0x08, 0x6A, 0x6C, 0xEA, 0xAC, 0xEA, 0x00, 0xF1, 0x16, 0x22, 0x10, 0x6E, 0x43, 0x67, 0xCC, 0xEA, 0xAC, 0xEA, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x74, 0x9A, 0x8F, 0x6A, 0xA0, 0xA3, 0x0A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF1, 0x7C, 0x9A, 0x71, 0x6F, +0x20, 0x6A, 0xE4, 0xF1, 0x74, 0x9A, 0x71, 0x6F, 0xEB, 0xEF, 0x40, 0xA3, 0xAC, 0xEA, 0xEC, 0xEA, 0xCD, 0xEA, 0xAC, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF3, 0xA4, 0x9A, 0xE4, 0xF1, -0x60, 0x9B, 0x01, 0x6E, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0xA8, 0x9A, 0xE4, 0xF1, -0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF3, 0xAC, 0x9A, 0xE4, 0xF1, 0x68, 0x9B, +0x78, 0x9B, 0x01, 0x6E, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF3, 0xAC, 0x9A, 0xE4, 0xF1, +0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF3, 0xB0, 0x9A, 0x04, 0xF2, 0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, -0xB0, 0x9A, 0xE4, 0xF1, 0x6C, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, 0x70, 0x9B, -0xA3, 0xF3, 0x5C, 0xA2, 0xFF, 0x6D, 0xE0, 0xA3, +0xB4, 0x9A, 0x04, 0xF2, 0x64, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, 0x68, 0x9B, +0xC3, 0xF3, 0x40, 0xA2, 0xFF, 0x6D, 0xE0, 0xA3, 0x52, 0x32, 0xCC, 0xEA, 0xC4, 0xEA, 0xAC, 0xEF, 0x46, 0x67, 0xED, 0xEA, 0xAC, 0xEA, 0x40, 0xC3, 0xCC, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x1C, 0x9D, 0xA4, 0xF1, -0x54, 0x9A, 0xA3, 0xF3, 0xBD, 0xA3, 0x71, 0x6E, +0x20, 0x6A, 0x63, 0xF7, 0x14, 0x9D, 0xC4, 0xF1, +0x4C, 0x9A, 0xC3, 0xF3, 0xA1, 0xA3, 0x71, 0x6E, 0x80, 0xA2, 0xE0, 0xA0, 0xFF, 0x6A, 0xCB, 0xEE, 0x4C, 0xEF, 0xB0, 0x35, 0xCC, 0xEF, 0xED, 0xED, -0x4C, 0xED, 0xA0, 0xC0, 0xA3, 0xF3, 0xBC, 0xA3, +0x4C, 0xED, 0xA0, 0xC0, 0xC3, 0xF3, 0xA0, 0xA3, 0x08, 0x6B, 0x4C, 0xEC, 0xAC, 0xEB, 0x4C, 0xEB, 0xA0, 0xF0, 0x0F, 0x23, 0x10, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0xC4, 0xF1, 0xBC, 0x9B, 0x60, 0xA5, 0x4C, 0xEB, +0xE4, 0xF1, 0xB4, 0x9B, 0x60, 0xA5, 0x4C, 0xEB, 0xCC, 0xEB, 0x20, 0x6E, 0x08, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xC4, 0xF1, 0xBC, 0x9B, 0x60, 0xA5, +0x20, 0x6B, 0xE4, 0xF1, 0xB4, 0x9B, 0x60, 0xA5, 0x4C, 0xEB, 0xCC, 0xEB, 0x30, 0x6E, 0xCD, 0xEB, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xC5, -0x2B, 0xF1, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF3, 0xA4, 0x9A, 0xE4, 0xF1, 0x60, 0x9B, +0x8B, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF3, 0xA8, 0x9A, 0xE4, 0xF1, 0x78, 0x9B, 0x01, 0x6F, 0xFF, 0x6E, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF3, 0xA8, 0x9A, 0xE4, 0xF1, -0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF3, 0xAC, 0x9A, 0xE4, 0xF1, 0x68, 0x9B, +0x20, 0x6B, 0xC3, 0xF3, 0xAC, 0x9A, 0xE4, 0xF1, +0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF3, 0xB0, 0x9A, 0x04, 0xF2, 0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, -0xB0, 0x9A, 0xE4, 0xF1, 0x6C, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, 0xB0, 0x9B, -0xA3, 0xF3, 0x7C, 0xA2, 0x00, 0xA5, 0x72, 0x33, +0xB4, 0x9A, 0x04, 0xF2, 0x64, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, 0xA8, 0x9B, +0xC3, 0xF3, 0x60, 0xA2, 0x00, 0xA5, 0x72, 0x33, 0xEC, 0xEB, 0xCC, 0xE8, 0x42, 0x43, 0x64, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF1, 0x58, 0x9A, 0xE4, 0xF1, 0xD4, 0x9D, +0xC4, 0xF1, 0x50, 0x9A, 0x04, 0xF2, 0xCC, 0x9D, 0x08, 0x6F, 0x80, 0xA2, 0xA0, 0xA6, 0xFF, 0x6A, -0xEB, 0xEF, 0x4C, 0xED, 0xEC, 0xED, 0xA3, 0xF3, -0xFD, 0xA3, 0x4C, 0xEC, 0xED, 0xED, 0x4C, 0xED, -0xA0, 0xC6, 0xA3, 0xF3, 0xBC, 0xA3, 0x08, 0x6B, +0xEB, 0xEF, 0x4C, 0xED, 0xEC, 0xED, 0xC3, 0xF3, +0xE1, 0xA3, 0x4C, 0xEC, 0xED, 0xED, 0x4C, 0xED, +0xA0, 0xC6, 0xC3, 0xF3, 0xA0, 0xA3, 0x08, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, 0x4E, 0x23, 0x10, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, 0x0B, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0xC4, 0xF1, 0xBC, 0x9B, 0x71, 0x6E, +0x20, 0x6B, 0xE4, 0xF1, 0xB4, 0x9B, 0x71, 0x6E, 0xCB, 0xEE, 0x60, 0xA5, 0x4C, 0xEB, 0xCC, 0xEB, 0x40, 0x6E, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC4, 0xF1, 0xBC, 0x9B, 0x71, 0x6E, 0xCB, 0xEE, +0xE4, 0xF1, 0xB4, 0x9B, 0x71, 0x6E, 0xCB, 0xEE, 0x60, 0xA5, 0x4C, 0xEB, 0xCC, 0xEB, 0x50, 0x6E, 0xCD, 0xEB, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xC5, 0x2B, 0xF1, 0x18, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF3, 0xA4, 0x9A, 0xE4, 0xF1, -0x60, 0x9B, 0x01, 0x6F, 0xFF, 0x6E, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0xA8, 0x9A, -0xE4, 0xF1, 0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF3, 0xAC, 0x9A, 0xE4, 0xF1, -0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF3, 0xB0, 0x9A, 0xE4, 0xF1, 0x6C, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, -0xB0, 0x9B, 0xA3, 0xF3, 0x7C, 0xA2, 0x00, 0xA5, +0x60, 0xC5, 0x8B, 0xF1, 0x00, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF3, 0xA8, 0x9A, 0xE4, 0xF1, +0x78, 0x9B, 0x01, 0x6F, 0xFF, 0x6E, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF3, 0xAC, 0x9A, +0xE4, 0xF1, 0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF3, 0xB0, 0x9A, 0x04, 0xF2, +0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF3, 0xB4, 0x9A, 0x04, 0xF2, 0x64, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, +0xA8, 0x9B, 0xC3, 0xF3, 0x60, 0xA2, 0x00, 0xA5, 0x72, 0x33, 0xEC, 0xEB, 0xCC, 0xE8, 0x44, 0x43, 0xE4, 0xEA, 0x47, 0x67, 0x0D, 0xEA, 0xCC, 0xEA, 0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0x44, 0x9A, 0x00, 0x6B, 0xFF, 0x69, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x40, 0x9A, +0x5C, 0x9A, 0x00, 0x6B, 0xFF, 0x69, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x58, 0x9A, 0x02, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, -0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, -0x6C, 0x9B, 0x2C, 0xEA, 0x50, 0x32, 0x01, 0x4A, +0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, +0x64, 0x9B, 0x2C, 0xEA, 0x50, 0x32, 0x01, 0x4A, 0x2C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF7, 0x48, 0x9A, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x48, 0x60, 0xC2, 0xA3, 0xF3, 0x7C, 0xA0, +0x83, 0xF7, 0x40, 0x9A, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x48, 0x60, 0xC2, 0xC3, 0xF3, 0x60, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x51, 0x22, -0x80, 0x18, 0x17, 0x71, 0x04, 0xD2, 0x80, 0x18, -0x3D, 0x70, 0xA3, 0xF3, 0x9E, 0xA0, 0x04, 0x95, -0x80, 0x18, 0x4B, 0x6F, 0xA3, 0xF3, 0x7C, 0xA0, +0x80, 0x18, 0xFF, 0x72, 0x04, 0xD2, 0x80, 0x18, +0x25, 0x72, 0xC3, 0xF3, 0x82, 0xA0, 0x04, 0x95, +0x80, 0x18, 0x33, 0x71, 0xC3, 0xF3, 0x60, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x16, 0x22, -0xA3, 0xF3, 0x59, 0xA0, 0x03, 0x2A, 0x01, 0x6C, -0x80, 0x18, 0xEA, 0x71, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF4, 0x74, 0xA2, 0x40, 0x6A, 0x04, 0x6C, -0x6C, 0xEA, 0x05, 0x2A, 0x80, 0x18, 0x74, 0x6F, +0xA3, 0xF3, 0x5D, 0xA0, 0x03, 0x2A, 0x01, 0x6C, +0x80, 0x18, 0xD2, 0x73, 0x30, 0xF0, 0x20, 0x6A, +0x4E, 0xF5, 0x60, 0xA2, 0x40, 0x6A, 0x04, 0x6C, +0x6C, 0xEA, 0x05, 0x2A, 0x80, 0x18, 0x5C, 0x71, 0x01, 0x6C, 0x01, 0x2A, 0x02, 0x6C, 0x80, 0x18, -0xEA, 0x71, 0x24, 0x10, 0x40, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x07, 0x22, 0xA3, 0xF3, 0x5A, 0xA0, +0xD2, 0x73, 0x24, 0x10, 0x40, 0x6A, 0x6C, 0xEA, +0x2C, 0xEA, 0x07, 0x22, 0xA3, 0xF3, 0x5E, 0xA0, 0x02, 0x72, 0x1C, 0x60, 0x02, 0x6C, 0x00, 0x6D, -0x10, 0x10, 0xA3, 0xF3, 0x5A, 0xA0, 0x02, 0x72, -0x11, 0x61, 0x00, 0x18, 0xC7, 0xCB, 0x80, 0x18, -0x74, 0x6F, 0x01, 0x72, 0x04, 0x61, 0x63, 0xF6, -0x98, 0xA0, 0x01, 0x6D, 0x02, 0x10, 0x00, 0x6C, -0xA4, 0x67, 0xA3, 0xF3, 0xDD, 0xA0, 0x00, 0x18, -0x28, 0xCE, 0x04, 0x10, 0xE3, 0xF5, 0x5F, 0xA0, -0xA3, 0xF3, 0x5A, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF7, 0x58, 0x9A, 0x22, 0x6B, 0x60, 0xC2, -0x31, 0x10, 0xA3, 0xF3, 0x9E, 0xA0, 0x00, 0x6D, -0x80, 0x18, 0x4B, 0x6F, 0xA3, 0xF3, 0x7C, 0xA0, +0x10, 0x10, 0xA3, 0xF3, 0x5E, 0xA0, 0x02, 0x72, +0x11, 0x61, 0x00, 0x18, 0x82, 0xCC, 0x80, 0x18, +0x5C, 0x71, 0x01, 0x72, 0x04, 0x61, 0x63, 0xF6, +0x9C, 0xA0, 0x01, 0x6D, 0x02, 0x10, 0x00, 0x6C, +0xA4, 0x67, 0xC3, 0xF3, 0xC1, 0xA0, 0x00, 0x18, +0x3E, 0xCF, 0x04, 0x10, 0x03, 0xF6, 0x43, 0xA0, +0xA3, 0xF3, 0x5E, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF7, 0x50, 0x9A, 0x22, 0x6B, 0x60, 0xC2, +0x31, 0x10, 0xC3, 0xF3, 0x82, 0xA0, 0x00, 0x6D, +0x80, 0x18, 0x33, 0x71, 0xC3, 0xF3, 0x60, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x08, 0x22, -0xA3, 0xF3, 0x59, 0xA0, 0x04, 0x72, 0x22, 0x61, -0x00, 0x6C, 0x80, 0x18, 0xEA, 0x71, 0x1E, 0x10, -0xA3, 0xF3, 0x5A, 0xA0, 0x04, 0x6C, 0x02, 0x72, +0xA3, 0xF3, 0x5D, 0xA0, 0x04, 0x72, 0x22, 0x61, +0x00, 0x6C, 0x80, 0x18, 0xD2, 0x73, 0x1E, 0x10, +0xA3, 0xF3, 0x5E, 0xA0, 0x04, 0x6C, 0x02, 0x72, 0x03, 0x60, 0x08, 0x72, 0x06, 0x61, 0x0C, 0x6C, -0xA3, 0xF3, 0xDD, 0xA0, 0x01, 0x6D, 0x00, 0x18, -0x28, 0xCE, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xA3, 0xF3, 0x9D, 0xA0, 0x80, 0x18, -0xDE, 0x40, 0x63, 0xF6, 0x98, 0xA0, 0xA3, 0xF3, -0xDD, 0xA0, 0x01, 0x6D, 0x00, 0x18, 0x28, 0xCE, -0x80, 0x18, 0x36, 0x6F, 0x09, 0x97, 0x08, 0x91, +0xC3, 0xF3, 0xC1, 0xA0, 0x01, 0x6D, 0x00, 0x18, +0x3E, 0xCF, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xC3, 0xF3, 0x81, 0xA0, 0x80, 0x18, +0xE8, 0x40, 0x63, 0xF6, 0x9C, 0xA0, 0xC3, 0xF3, +0xC1, 0xA0, 0x01, 0x6D, 0x00, 0x18, 0x3E, 0xCF, +0x80, 0x18, 0x1E, 0x71, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x00, 0x6A, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x4C, 0x9A, 0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0x9A, -0x2C, 0xEC, 0x01, 0x6D, 0x2B, 0xF1, 0x18, 0x48, -0x00, 0x18, 0x9A, 0xD3, 0xA3, 0xF3, 0x7C, 0xA0, +0x2C, 0xEC, 0x01, 0x6D, 0x8B, 0xF1, 0x00, 0x48, +0x00, 0x18, 0xEA, 0xD4, 0xC3, 0xF3, 0x60, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x1D, 0x22, -0xA3, 0xF3, 0x59, 0xA0, 0x04, 0x72, 0x19, 0x60, -0xA3, 0xF3, 0x5A, 0xA0, 0x02, 0x72, 0x15, 0x60, +0xA3, 0xF3, 0x5D, 0xA0, 0x04, 0x72, 0x19, 0x60, +0xA3, 0xF3, 0x5E, 0xA0, 0x02, 0x72, 0x15, 0x60, 0x02, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x03, 0x22, -0x80, 0x18, 0xE6, 0x40, 0x0E, 0x10, 0x80, 0x18, -0xDC, 0x70, 0xA3, 0xF3, 0x5A, 0xA0, 0x0C, 0x6C, +0x80, 0x18, 0xF0, 0x40, 0x0E, 0x10, 0x80, 0x18, +0xC4, 0x72, 0xA3, 0xF3, 0x5E, 0xA0, 0x0C, 0x6C, 0x08, 0x72, 0x02, 0x60, 0x06, 0x2A, 0x04, 0x6C, -0xA3, 0xF3, 0xDD, 0xA0, 0x00, 0x6D, 0x00, 0x18, -0x28, 0xCE, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xC3, 0xF3, 0x94, 0xA2, 0x01, 0x6B, -0xFF, 0x6D, 0x6C, 0xEC, 0x49, 0x24, 0xA3, 0xF3, -0x9C, 0xA2, 0x8C, 0xEB, 0xAC, 0xEB, 0x44, 0x23, -0xC3, 0xF3, 0x7A, 0xA2, 0xFF, 0x73, 0x27, 0x60, -0xFF, 0x4B, 0xC3, 0xF3, 0x7A, 0xC2, 0xC3, 0xF3, -0xDA, 0xA2, 0x21, 0x2E, 0xC3, 0xF3, 0x99, 0xA2, +0xC3, 0xF3, 0xC1, 0xA0, 0x00, 0x6D, 0x00, 0x18, +0x3E, 0xCF, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xC3, 0xF3, 0x98, 0xA2, 0x01, 0x6B, +0xFF, 0x6D, 0x6C, 0xEC, 0x49, 0x24, 0xC3, 0xF3, +0x80, 0xA2, 0x8C, 0xEB, 0xAC, 0xEB, 0x44, 0x23, +0xC3, 0xF3, 0x7E, 0xA2, 0xFF, 0x73, 0x27, 0x60, +0xFF, 0x4B, 0xC3, 0xF3, 0x7E, 0xC2, 0xC3, 0xF3, +0xDE, 0xA2, 0x21, 0x2E, 0xC3, 0xF3, 0x9D, 0xA2, 0x21, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xC3, 0xF3, -0x95, 0xA2, 0xC3, 0xF3, 0x79, 0xC2, 0x1F, 0x6B, -0x8C, 0xEB, 0xC3, 0xF3, 0x17, 0xA2, 0xA0, 0xF0, -0xF6, 0xA2, 0xC3, 0xF3, 0x75, 0xC2, 0x10, 0x6B, +0x99, 0xA2, 0xC3, 0xF3, 0x7D, 0xC2, 0x1F, 0x6B, +0x8C, 0xEB, 0xC3, 0xF3, 0x1B, 0xA2, 0xA0, 0xF0, +0xF6, 0xA2, 0xC3, 0xF3, 0x79, 0xC2, 0x10, 0x6B, 0x0F, 0x6C, 0x6B, 0xEB, 0x8C, 0xEF, 0x0C, 0xEB, -0xED, 0xEB, 0xC3, 0xF3, 0x77, 0xC2, 0xC3, 0xF3, -0xD8, 0xC2, 0xE3, 0xF3, 0x40, 0xA2, 0x4C, 0xEC, -0xAC, 0xEC, 0x00, 0x18, 0xDB, 0xE7, 0x30, 0xF0, -0x20, 0x6A, 0x0E, 0xF5, 0xAC, 0xA2, 0x30, 0xF0, +0xED, 0xEB, 0xC3, 0xF3, 0x7B, 0xC2, 0xC3, 0xF3, +0xDC, 0xC2, 0xE3, 0xF3, 0x44, 0xA2, 0x4C, 0xEC, +0xAC, 0xEC, 0x00, 0x18, 0x80, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0x4E, 0xF5, 0xB8, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x40, 0x9A, 0x0F, 0x6B, 0xA6, 0x35, 0x02, 0x6C, 0x6C, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x4C, 0x9A, @@ -40109,82 +40646,82 @@ u8 array_mp_8822c_fw_nic[] = { 0x80, 0xF5, 0x48, 0x9A, 0x06, 0x6C, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x02, 0x6C, 0x80, 0x18, 0x5E, 0x73, 0x05, 0x97, +0x02, 0x6C, 0x80, 0x18, 0x46, 0x75, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x01, 0x6C, 0x80, 0x18, 0x5E, 0x73, 0x05, 0x97, +0x01, 0x6C, 0x80, 0x18, 0x46, 0x75, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x6C, 0x80, 0x18, 0x5E, 0x73, 0x05, 0x97, +0x00, 0x6C, 0x80, 0x18, 0x46, 0x75, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF7, 0x54, 0x9A, 0xFF, 0x68, 0x0C, 0xEC, -0xC0, 0x9A, 0x00, 0x6D, 0x00, 0x18, 0x9A, 0xD3, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xA3, 0xF3, 0x9C, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, -0x0C, 0xEB, 0x36, 0x23, 0xA3, 0xF3, 0x79, 0xA2, -0x04, 0x73, 0x32, 0x60, 0xA3, 0xF3, 0x7A, 0xA2, +0x63, 0xF7, 0x4C, 0x9A, 0xFF, 0x68, 0x0C, 0xEC, +0xC0, 0x9A, 0x00, 0x6D, 0x00, 0x18, 0xEA, 0xD4, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, +0x0C, 0xEB, 0x36, 0x23, 0xA3, 0xF3, 0x7D, 0xA2, +0x04, 0x73, 0x32, 0x60, 0xA3, 0xF3, 0x7E, 0xA2, 0x02, 0x73, 0x2E, 0x60, 0x02, 0x6B, 0x8C, 0xEB, -0x0C, 0xEB, 0x03, 0x23, 0x80, 0x18, 0xE6, 0x40, +0x0C, 0xEB, 0x03, 0x23, 0x80, 0x18, 0xF0, 0x40, 0x27, 0x10, 0x80, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x0C, 0xEB, 0x05, 0x23, 0xA3, 0xF3, 0x9F, 0xA2, -0x80, 0x18, 0x77, 0x40, 0x08, 0x10, 0x30, 0xF0, +0x0C, 0xEB, 0x05, 0x23, 0xC3, 0xF3, 0x83, 0xA2, +0x80, 0x18, 0x81, 0x40, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0xA4, 0x67, 0xC4, 0x67, 0x40, 0xEA, 0x80, 0x18, -0x4A, 0x40, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xA3, 0xF3, 0x7A, 0xA2, 0x0C, 0x73, +0x54, 0x40, 0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, +0x00, 0x4A, 0xA3, 0xF3, 0x7E, 0xA2, 0x0C, 0x73, 0x03, 0x61, 0x08, 0x6C, 0x00, 0x6D, 0x04, 0x10, 0x04, 0x73, 0x06, 0x61, 0x00, 0x6C, 0xA4, 0x67, -0xA3, 0xF3, 0xDD, 0xA2, 0x00, 0x18, 0x28, 0xCE, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0xC3, 0xF3, 0x74, 0xA0, 0x01, 0x6A, 0xFF, 0x69, -0x4C, 0xEB, 0x80, 0xF0, 0x0C, 0x23, 0xA3, 0xF3, -0x7C, 0xA0, 0x6C, 0xEA, 0x2C, 0xEA, 0x80, 0xF0, -0x06, 0x22, 0xC3, 0xF3, 0x79, 0xA0, 0x40, 0x6A, +0xC3, 0xF3, 0xC1, 0xA2, 0x00, 0x18, 0x3E, 0xCF, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0xC3, 0xF3, 0x78, 0xA0, 0x01, 0x6A, 0xFF, 0x69, +0x4C, 0xEB, 0x80, 0xF0, 0x0C, 0x23, 0xC3, 0xF3, +0x60, 0xA0, 0x6C, 0xEA, 0x2C, 0xEA, 0x80, 0xF0, +0x06, 0x22, 0xC3, 0xF3, 0x7D, 0xA0, 0x40, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x45, 0x22, 0x20, 0x6A, -0x6D, 0xEA, 0xC3, 0xF3, 0x59, 0xC0, 0x30, 0xF0, +0x6D, 0xEA, 0xC3, 0xF3, 0x5D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x98, 0x9A, 0x00, 0x18, -0xB9, 0xE6, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, -0x80, 0x9A, 0x00, 0x18, 0xB9, 0xE6, 0xC3, 0xF3, -0x56, 0xA0, 0x0F, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, +0x5E, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, +0x80, 0x9A, 0x00, 0x18, 0x5E, 0xE8, 0xC3, 0xF3, +0x5A, 0xA0, 0x0F, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, 0x00, 0x6A, 0x11, 0x10, 0x0C, 0x6D, 0xB8, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF1, 0x18, 0x4C, -0x12, 0xED, 0x91, 0xE5, 0xC3, 0xF3, 0xBF, 0xA4, +0x30, 0xF0, 0x20, 0x6C, 0x8B, 0xF1, 0x00, 0x4C, +0x12, 0xED, 0x91, 0xE5, 0xE3, 0xF3, 0xA3, 0xA4, 0x07, 0x6C, 0xAC, 0xEC, 0x02, 0x74, 0x05, 0x60, 0x01, 0x4A, 0xFF, 0x6C, 0x8C, 0xEA, 0x62, 0xEA, -0xED, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0xC3, 0xF3, 0xB4, 0xA0, 0x0F, 0x6C, +0xED, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, +0x00, 0x48, 0xC3, 0xF3, 0xB8, 0xA0, 0x0F, 0x6C, 0x1F, 0x6B, 0x8C, 0xEA, 0x6B, 0xEB, 0x44, 0x32, -0xAC, 0xEB, 0x4D, 0xEB, 0xE3, 0xF3, 0x40, 0xA0, -0xC3, 0xF3, 0x74, 0xC0, 0x4C, 0xEC, 0x00, 0x18, -0x01, 0xE8, 0xC3, 0xF3, 0x79, 0xA0, 0x41, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x59, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x0E, 0xF5, 0xAC, 0xA2, +0xAC, 0xEB, 0x4D, 0xEB, 0xE3, 0xF3, 0x44, 0xA0, +0xC3, 0xF3, 0x78, 0xC0, 0x4C, 0xEC, 0x00, 0x18, +0xA6, 0xE9, 0xC3, 0xF3, 0x7D, 0xA0, 0x41, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x5D, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x4E, 0xF5, 0xB8, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x40, 0x9A, 0x0F, 0x6B, 0xA6, 0x35, 0x02, 0x6C, 0x6C, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF5, 0x4C, 0x9A, 0x40, 0xEA, 0x06, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF5, 0x48, 0x9A, 0x06, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0x4C, 0x9A, 0x0F, 0x6C, 0xFF, 0x6E, 0xE0, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0xC3, 0xF3, 0xB4, 0xA2, 0xC3, 0xF3, 0x64, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, +0x44, 0x9A, 0x0F, 0x6C, 0xFF, 0x6E, 0xE0, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC3, 0xF3, 0xB8, 0xA2, 0xC3, 0xF3, 0x68, 0x9A, 0xCC, 0xEF, 0xA6, 0x35, 0x8C, 0xED, 0x0C, 0x6C, 0x98, 0xED, 0x62, 0x33, 0x6A, 0x33, 0x12, 0xED, -0x49, 0xE5, 0xE3, 0xF3, 0x80, 0xA2, 0x4F, 0x47, +0x49, 0xE5, 0xE3, 0xF3, 0x84, 0xA2, 0x4F, 0x47, 0x57, 0x32, 0x92, 0x34, 0x8F, 0xE3, 0x53, 0xE3, -0xCC, 0xEC, 0x80, 0x18, 0xC5, 0x69, 0x07, 0x97, +0xCC, 0xEC, 0x80, 0x18, 0x50, 0x6B, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x02, 0x6C, 0x80, 0x18, -0xB1, 0x73, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x99, 0x75, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x01, 0x6C, 0x80, 0x18, -0xB1, 0x73, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x99, 0x75, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x80, 0x18, -0xB1, 0x73, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x99, 0x75, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x6B, 0xAC, 0xEB, 0x06, 0xD3, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x6C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x70, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, 0x80, 0xAB, 0xE1, 0xF7, 0x1F, 0x6B, 0x00, 0x68, 0x8C, 0xEB, 0x69, 0xE2, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x84, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x8C, 0x9B, 0x5C, 0x32, 0x91, 0xE2, 0x04, 0xD4, 0x22, 0x10, 0x04, 0x92, 0x40, 0x9A, 0x05, 0xD2, 0x0D, 0x28, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, @@ -40197,30 +40734,30 @@ u8 array_mp_8822c_fw_nic[] = { 0x4C, 0xE8, 0x04, 0xD3, 0x06, 0x92, 0x43, 0xE8, 0xDB, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x10, 0xF0, 0x23, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF0, 0x1D, 0x4B, +0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF6, 0x09, 0x4B, 0x40, 0xF1, 0x68, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0x40, 0xF1, 0x08, 0x4A, 0xC0, 0xF5, 0x15, 0x4B, -0x61, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0x0B, 0xF1, -0x01, 0x4B, 0x62, 0xDA, 0x10, 0xF0, 0x23, 0x6B, -0x8B, 0xF1, 0x19, 0x4B, 0x63, 0xDA, 0x10, 0xF0, -0x23, 0x6B, 0x6B, 0xF1, 0x05, 0x4B, 0x64, 0xDA, -0x10, 0xF0, 0x23, 0x6B, 0x2B, 0xF1, 0x11, 0x4B, -0x65, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0xCB, 0xF0, -0x11, 0x4B, 0x66, 0xDA, 0x10, 0xF0, 0x23, 0x6B, -0xAB, 0xF0, 0x01, 0x4B, 0x67, 0xDA, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x00, 0x6B, 0x63, 0xF3, 0x74, 0xC2, 0x63, 0xF3, -0x75, 0xC2, 0x63, 0xF3, 0x76, 0xC2, 0x63, 0xF3, -0x77, 0xC2, 0x42, 0xF4, 0x10, 0x6A, 0x1F, 0xF7, +0x61, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0x6B, 0xF6, +0x0D, 0x4B, 0x62, 0xDA, 0x10, 0xF0, 0x23, 0x6B, +0x0B, 0xF7, 0x05, 0x4B, 0x63, 0xDA, 0x10, 0xF0, +0x23, 0x6B, 0xCB, 0xF6, 0x11, 0x4B, 0x64, 0xDA, +0x10, 0xF0, 0x23, 0x6B, 0x8B, 0xF6, 0x1D, 0x4B, +0x65, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0x2B, 0xF6, +0x1D, 0x4B, 0x66, 0xDA, 0x10, 0xF0, 0x23, 0x6B, +0x0B, 0xF6, 0x0D, 0x4B, 0x67, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x00, 0x6B, 0x63, 0xF3, 0x78, 0xC2, 0x63, 0xF3, +0x79, 0xC2, 0x63, 0xF3, 0x7A, 0xC2, 0x63, 0xF3, +0x7B, 0xC2, 0x42, 0xF4, 0x10, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x68, 0x9B, 0x6D, 0xE2, +0x63, 0xF1, 0x68, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, 0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF3, 0x54, 0x9A, 0x03, 0x6C, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x54, 0x9A, +0x43, 0xF3, 0x58, 0x9A, 0x03, 0x6C, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x5C, 0x9A, 0x00, 0xF5, 0x62, 0x33, 0x8C, 0xEB, 0x40, 0x9A, 0x01, 0x73, 0x42, 0x32, 0x52, 0x32, 0x8C, 0xEA, 0x05, 0x60, 0x0B, 0x2B, 0x02, 0x5A, 0x50, 0x6C, @@ -40228,690 +40765,693 @@ u8 array_mp_8822c_fw_nic[] = { 0x28, 0x6C, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0x10, 0x02, 0x5A, 0x28, 0x6C, 0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, 0x50, 0x6C, 0x80, 0x18, -0x62, 0x77, 0x80, 0x18, 0xD1, 0x00, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF2, 0x6C, 0x9B, 0x00, 0x6A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x7C, 0x9B, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF2, 0x68, 0x9B, 0x40, 0xCB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x60, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, -0x68, 0x9B, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x4B, 0x79, 0x80, 0x18, 0xD1, 0x00, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF2, 0x74, 0x9B, 0x00, 0x6A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF2, 0x64, 0x9B, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF2, 0x6C, 0x9B, 0x40, 0xCB, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x64, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, +0x70, 0x9B, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x00, 0x69, 0xA0, 0xF0, -0x24, 0xD8, 0xA0, 0xF1, 0x20, 0xC0, 0x80, 0x18, -0x55, 0x74, 0x80, 0x18, 0xD4, 0x75, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF2, -0x3C, 0xC0, 0xAE, 0xF4, 0x14, 0x4A, 0xCE, 0xF4, -0x04, 0x4C, 0x00, 0x6B, 0x60, 0xC2, 0x70, 0xC2, +0x8B, 0xF1, 0x00, 0x48, 0x00, 0x69, 0xA0, 0xF0, +0x24, 0xD8, 0xA0, 0xF1, 0x21, 0xC0, 0x80, 0x18, +0x3D, 0x76, 0x80, 0x18, 0xBD, 0x77, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF2, +0x20, 0xC0, 0x0E, 0xF5, 0x00, 0x4A, 0x0E, 0xF5, +0x10, 0x4C, 0x00, 0x6B, 0x60, 0xC2, 0x70, 0xC2, 0x01, 0x4A, 0x62, 0x67, 0x8E, 0xEB, 0xF9, 0x2B, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, 0x63, 0xF3, -0x79, 0xC2, 0x63, 0xF3, 0x7A, 0xC2, 0x63, 0xF3, -0x7B, 0xC2, 0x63, 0xF3, 0x78, 0xC2, 0x04, 0x63, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x63, 0xF3, +0x7D, 0xC2, 0x63, 0xF3, 0x7E, 0xC2, 0x63, 0xF3, +0x7F, 0xC2, 0x63, 0xF3, 0x7C, 0xC2, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x80, 0x18, 0x6C, 0x74, 0x80, 0x18, 0xE9, 0x74, +0x80, 0x18, 0x54, 0x76, 0x80, 0x18, 0xD2, 0x76, 0x00, 0x18, 0x23, 0xC2, 0x00, 0x18, 0x32, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x50, 0x9A, -0x40, 0xEA, 0x80, 0x18, 0xB3, 0x41, 0x00, 0x18, -0x91, 0xF2, 0x80, 0x18, 0x08, 0x29, 0x80, 0x18, -0x57, 0x62, 0x80, 0x18, 0x11, 0x69, 0x00, 0x18, -0x38, 0xCD, 0x00, 0x18, 0xFA, 0xC5, 0x80, 0x18, -0x34, 0x40, 0x80, 0x18, 0x36, 0x6F, 0x30, 0xF0, -0x20, 0x6A, 0x60, 0xF4, 0x44, 0x9A, 0x40, 0xEA, -0x80, 0x18, 0xFC, 0x64, 0x80, 0x18, 0xF4, 0x26, -0x00, 0x18, 0x6D, 0xE6, 0x01, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0x10, 0xF0, 0x24, 0x6C, 0x01, 0x6F, 0x00, 0x6D, -0x64, 0x6E, 0xEB, 0xEF, 0x33, 0xF0, 0x09, 0x4C, -0x40, 0xEA, 0x00, 0x18, 0x89, 0xE6, 0x80, 0x18, -0x78, 0x00, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x18, 0x4A, 0xC7, 0xF3, 0x88, 0xA2, 0x02, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xC7, 0xF3, 0x68, 0xC2, -0x80, 0x18, 0x52, 0x6B, 0x07, 0x97, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0x00, 0x6B, 0xA0, 0xF6, -0x62, 0xC2, 0xA0, 0xF6, 0x63, 0xC2, 0xA0, 0xF1, -0x60, 0xC2, 0xA0, 0xF1, 0x61, 0xC2, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x18, 0x4A, -0x87, 0xF3, 0x61, 0xA2, 0x0F, 0x23, 0x87, 0xF3, -0x60, 0xA2, 0x0C, 0x23, 0x87, 0xF3, 0x66, 0xA2, -0x09, 0x23, 0x87, 0xF3, 0x62, 0xA2, 0x06, 0x23, -0x87, 0xF3, 0x64, 0xA2, 0x03, 0x23, 0x87, 0xF3, -0x43, 0xA2, 0x1E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x74, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x44, 0x9A, -0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF7, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF0, 0x54, 0x9A, 0x60, 0xDA, 0xF0, 0x17, -0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x48, 0x98, 0x0A, 0xD4, 0x04, 0x05, -0xE0, 0xF1, 0x14, 0x6C, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x15, 0x6C, -0x30, 0xF0, 0x20, 0x69, 0x40, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x2B, 0xF1, 0x18, 0x49, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x16, 0x6C, 0x41, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x17, 0x6C, -0x42, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x18, 0x6C, 0x43, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x19, 0x6C, -0x44, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0xBD, 0x67, 0x90, 0xA5, 0x87, 0xF3, -0x44, 0xA1, 0x0F, 0x6B, 0x8C, 0xEB, 0x50, 0x32, -0x6D, 0xEA, 0x0A, 0x93, 0x04, 0x05, 0xE0, 0xF1, -0x1B, 0x6C, 0x45, 0xC3, 0xC0, 0xF3, 0x48, 0x98, -0x40, 0xEA, 0x87, 0xF3, 0x46, 0xA1, 0x87, 0xF3, -0x61, 0xA1, 0x0A, 0x95, 0x4C, 0x32, 0x74, 0x33, -0x6D, 0xEA, 0x87, 0xF3, 0x60, 0xA1, 0x6D, 0xEA, -0x46, 0xC5, 0x87, 0xF3, 0x42, 0xA1, 0x87, 0xF3, -0x63, 0xA1, 0x48, 0x32, 0x78, 0x33, 0x6D, 0xEA, -0x33, 0x6B, 0x6D, 0xEA, 0x47, 0xC5, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x40, 0xEA, 0x80, 0x18, 0xBD, 0x41, 0x00, 0x18, +0x36, 0xF4, 0x80, 0x18, 0x17, 0x29, 0x80, 0x18, +0x07, 0x2A, 0x80, 0x18, 0xE2, 0x63, 0x80, 0x18, +0x9C, 0x6A, 0x00, 0x18, 0x3E, 0xCE, 0x00, 0x18, +0x1A, 0xC6, 0x80, 0x18, 0x3E, 0x40, 0x80, 0x18, +0x1E, 0x71, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x44, 0x9A, 0x40, 0xEA, 0x80, 0x18, 0x87, 0x66, +0x80, 0x18, 0x03, 0x27, 0x00, 0x18, 0x12, 0xE8, +0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x24, 0x6C, +0x01, 0x6F, 0x00, 0x6D, 0x64, 0x6E, 0xEB, 0xEF, +0xB3, 0xF6, 0x1D, 0x4C, 0x40, 0xEA, 0x00, 0x18, +0x2E, 0xE8, 0x80, 0x18, 0x78, 0x00, 0x30, 0xF0, +0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, 0x47, 0xF4, +0x80, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x47, 0xF4, 0x60, 0xC2, 0x80, 0x18, 0x3A, 0x6D, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0x00, 0x6B, 0xA0, 0xF6, 0x64, 0xC2, 0xA0, 0xF6, +0x65, 0xC2, 0xA0, 0xF1, 0x61, 0xC2, 0xA0, 0xF1, +0x62, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF1, 0x00, 0x4A, 0xE7, 0xF3, 0x79, 0xA2, +0x0F, 0x23, 0xE7, 0xF3, 0x78, 0xA2, 0x0C, 0x23, +0xE7, 0xF3, 0x7E, 0xA2, 0x09, 0x23, 0xE7, 0xF3, +0x7A, 0xA2, 0x06, 0x23, 0xE7, 0xF3, 0x7C, 0xA2, +0x03, 0x23, 0xE7, 0xF3, 0x5B, 0xA2, 0x1E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x7C, 0x9A, +0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF3, 0x48, 0x9A, 0x00, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x58, 0x9A, +0x60, 0xDA, 0xF0, 0x17, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x48, 0x98, -0x24, 0x67, 0x04, 0x05, 0xE0, 0xF1, 0x10, 0x6C, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, -0xE0, 0xF1, 0x11, 0x6C, 0x40, 0xC1, 0xC0, 0xF3, -0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x04, 0x05, 0xE0, 0xF1, 0x12, 0x6C, 0x41, 0xC1, -0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x13, 0x6C, -0x42, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x0A, 0xD4, 0x04, 0x05, 0xE0, 0xF1, 0x14, 0x6C, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x15, 0x6C, 0x30, 0xF0, 0x20, 0x69, +0x40, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x8B, 0xF1, 0x00, 0x49, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x16, 0x6C, +0x41, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x17, 0x6C, 0x42, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x18, 0x6C, +0x43, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x19, 0x6C, 0x44, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0xBD, 0x67, +0x90, 0xA5, 0xE7, 0xF3, 0x5C, 0xA1, 0x0F, 0x6B, +0x8C, 0xEB, 0x50, 0x32, 0x6D, 0xEA, 0x0A, 0x93, +0x04, 0x05, 0xE0, 0xF1, 0x1B, 0x6C, 0x45, 0xC3, +0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0xE7, 0xF3, +0x5E, 0xA1, 0xE7, 0xF3, 0x79, 0xA1, 0x0A, 0x95, +0x4C, 0x32, 0x74, 0x33, 0x6D, 0xEA, 0xE7, 0xF3, +0x78, 0xA1, 0x6D, 0xEA, 0x46, 0xC5, 0xE7, 0xF3, +0x5A, 0xA1, 0xE7, 0xF3, 0x7B, 0xA1, 0x48, 0x32, +0x78, 0x33, 0x6D, 0xEA, 0x33, 0x6B, 0x6D, 0xEA, +0x47, 0xC5, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x48, 0x98, 0x24, 0x67, 0x04, 0x05, +0xE0, 0xF1, 0x10, 0x6C, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x11, 0x6C, +0x40, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, -0x1C, 0x6C, 0x43, 0xC1, 0xC0, 0xF3, 0x48, 0x98, +0x12, 0x6C, 0x41, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, -0xE0, 0xF1, 0x1D, 0x6C, 0x44, 0xC1, 0xC0, 0xF3, +0xE0, 0xF1, 0x13, 0x6C, 0x42, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x04, 0x05, 0xE0, 0xF1, 0x1E, 0x6C, 0x45, 0xC1, +0x04, 0x05, 0xE0, 0xF1, 0x1C, 0x6C, 0x43, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0xE0, 0xF1, 0x1F, 0x6C, 0x04, 0x05, -0x46, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x47, 0xC1, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x04, 0x00, -0x90, 0x67, 0x80, 0x18, 0x0B, 0x75, 0xA0, 0xF1, -0x02, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, 0x64, 0x9B, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, -0x68, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, -0xA0, 0xF1, 0x0A, 0x72, 0x80, 0xC3, 0x01, 0x48, -0xE8, 0x61, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, -0x42, 0x75, 0xA0, 0xF1, 0x0A, 0x6A, 0x1F, 0xF7, +0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x1D, 0x6C, +0x44, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, +0x1E, 0x6C, 0x45, 0xC1, 0xC0, 0xF3, 0x48, 0x98, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0xE0, 0xF1, +0x1F, 0x6C, 0x04, 0x05, 0x46, 0xC1, 0xC0, 0xF3, +0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, +0x47, 0xC1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD0, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, +0xF4, 0x76, 0xA0, 0xF1, 0x02, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x68, 0x9B, 0x80, 0xA0, -0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0F, 0x72, -0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF7, 0x48, 0x9A, 0x19, 0x6B, -0x60, 0xC2, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x87, 0xF3, 0x40, 0xA0, 0x0E, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, -0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, -0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, -0x87, 0xF3, 0x40, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x87, 0xF3, 0x41, 0xA0, +0x63, 0xF1, 0x68, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, 0x80, 0xA0, +0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0A, 0x72, +0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x04, 0x00, +0x90, 0x67, 0x80, 0x18, 0x2B, 0x77, 0xA0, 0xF1, +0x0A, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x68, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, +0x6C, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, +0xA0, 0xF1, 0x0F, 0x72, 0x80, 0xC3, 0x01, 0x48, +0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, +0x40, 0x9A, 0x19, 0x6B, 0x60, 0xC2, 0x09, 0x97, +0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xE7, 0xF3, +0x58, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, +0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, +0x07, 0x6A, 0x6C, 0xEA, 0xE7, 0xF3, 0x58, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0xE7, 0xF3, 0x59, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x56, 0x32, 0xE7, 0xF3, 0x59, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0xE7, 0xF3, 0x5E, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, +0x50, 0xA4, 0x18, 0x6B, 0x6C, 0xEA, 0x4F, 0x32, +0xE7, 0xF3, 0x5E, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0xE7, 0xF3, 0x5C, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x56, 0x32, -0x87, 0xF3, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x87, 0xF3, 0x46, 0xA0, -0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x9D, 0x67, 0x50, 0xA4, 0x18, 0x6B, -0x6C, 0xEA, 0x4F, 0x32, 0x87, 0xF3, 0x46, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0x87, 0xF3, 0x44, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1C, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x52, 0x32, 0x87, 0xF3, 0x44, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, 0x18, 0x48, -0x87, 0xF3, 0x42, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, -0x70, 0xA4, 0x03, 0x6A, 0x6C, 0xEA, 0x87, 0xF3, -0x42, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0x2B, 0xF1, -0x18, 0x48, 0x87, 0xF3, 0x43, 0xA0, 0x0F, 0x2A, +0x48, 0x9A, 0xE0, 0xF1, 0x1C, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x52, 0x32, +0xE7, 0xF3, 0x5C, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0x8B, 0xF1, 0x00, 0x48, 0xE7, 0xF3, 0x5A, 0xA0, +0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x03, 0x6A, +0x6C, 0xEA, 0xE7, 0xF3, 0x5A, 0xC0, 0x30, 0xF0, +0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, 0xE7, 0xF3, +0x5B, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, +0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, +0x30, 0x6B, 0x6C, 0xEA, 0x53, 0x32, 0xE7, 0xF3, +0x5B, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x19, 0x6C, +0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, +0x30, 0xF0, 0x20, 0x68, 0x8B, 0xF1, 0x00, 0x48, +0x52, 0x32, 0xE7, 0xF3, 0x5C, 0xC0, 0xC0, 0xF3, +0x48, 0x99, 0xE0, 0xF1, 0x1B, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, +0x6C, 0xEA, 0xE7, 0xF3, 0x58, 0xC0, 0x43, 0x67, +0x18, 0x6B, 0x4C, 0xEB, 0x6F, 0x33, 0xE7, 0xF3, +0x7E, 0xC0, 0x4F, 0x72, 0x56, 0x33, 0xE7, 0xF3, +0x79, 0xC0, 0x0E, 0x61, 0xC0, 0xF3, 0x48, 0x99, +0xE0, 0xF1, 0x1A, 0x6C, 0x00, 0xF0, 0x11, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x51, 0xA3, 0x57, 0x72, +0x03, 0x61, 0x02, 0x6A, 0xE7, 0xF3, 0x5E, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x30, 0x6B, 0x6C, 0xEA, -0x53, 0x32, 0x87, 0xF3, 0x43, 0xC0, 0x07, 0x97, -0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x48, 0x99, -0xE0, 0xF1, 0x19, 0x6C, 0x04, 0x05, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x30, 0xF0, 0x20, 0x68, -0x2B, 0xF1, 0x18, 0x48, 0x52, 0x32, 0x87, 0xF3, -0x44, 0xC0, 0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, -0x1B, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, -0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, 0x87, 0xF3, -0x40, 0xC0, 0x43, 0x67, 0x18, 0x6B, 0x4C, 0xEB, -0x6F, 0x33, 0x87, 0xF3, 0x66, 0xC0, 0x4F, 0x72, -0x56, 0x33, 0x87, 0xF3, 0x61, 0xC0, 0x0E, 0x61, -0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x1A, 0x6C, -0x00, 0xF0, 0x11, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x51, 0xA3, 0x57, 0x72, 0x03, 0x61, 0x02, 0x6A, -0x87, 0xF3, 0x46, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x90, 0xA3, -0x0C, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xEB, -0x2B, 0xF1, 0x18, 0x4A, 0x6B, 0x33, 0x9A, 0x34, -0x87, 0xF3, 0x62, 0xC2, 0x87, 0xF3, 0x83, 0xC2, -0x80, 0x18, 0x91, 0x75, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF7, 0x48, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, -0x6C, 0xEA, 0xFD, 0x72, 0x02, 0x61, 0x80, 0x18, -0x6C, 0x75, 0x80, 0x18, 0xF0, 0x74, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x44, 0x9A, -0x01, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x88, 0x9A, -0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x88, 0x9A, 0x08, 0x6D, +0x7D, 0x67, 0x90, 0xA3, 0x0C, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x8C, 0xEB, 0x8B, 0xF1, 0x00, 0x4A, +0x6B, 0x33, 0x9A, 0x34, 0xE7, 0xF3, 0x7A, 0xC2, +0xE7, 0xF3, 0x9B, 0xC2, 0x80, 0x18, 0x7A, 0x77, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x40, 0x9A, +0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0xFD, 0x72, +0x02, 0x61, 0x80, 0x18, 0x55, 0x77, 0x80, 0x18, +0xD9, 0x76, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF7, 0x5C, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF7, 0x80, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF7, 0x6C, 0x9A, 0xFD, 0x6A, 0xFF, 0x6C, -0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x40, 0xA3, -0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x48, 0x9A, 0xA3, 0xF1, 0x8C, 0x9B, -0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, 0x40, 0xEA, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x6C, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x6D, 0xE4, -0x80, 0x72, 0x04, 0x6C, 0x80, 0xC3, 0xF5, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x90, 0x9B, 0x80, 0xF2, 0x48, 0x9A, -0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x52, 0x9B, 0x8D, 0xEA, 0x52, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF7, 0x70, 0x9B, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x6C, 0x9B, -0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0xB2, 0x9B, 0x8F, 0xEA, -0xAC, 0xEA, 0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF7, 0x50, 0x9A, 0x80, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x5E, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x42, 0xF7, -0x14, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x58, 0x9B, -0xAD, 0xEA, 0x2B, 0xF1, 0x58, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF7, 0x6C, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, -0x32, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF7, 0x74, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x70, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, -0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF7, -0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF1, 0x74, 0x9B, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x43, 0x9B, -0xAD, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF7, 0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0x7C, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF7, 0x60, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x05, 0x5C, 0x63, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0x62, 0xF7, 0x08, 0x4A, 0x89, 0xE2, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x8C, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x64, 0x9A, +0xFD, 0x6A, 0xFF, 0x6C, 0xA0, 0xA3, 0xAC, 0xEA, +0x40, 0xC3, 0x40, 0xA3, 0x01, 0x6D, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, +0xC3, 0xF1, 0x90, 0x9B, 0x00, 0x6D, 0x02, 0xF0, +0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x70, 0x9B, 0x54, 0x34, +0x01, 0x4A, 0x6D, 0xE4, 0x80, 0x72, 0x04, 0x6C, +0x80, 0xC3, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x94, 0x9B, +0x80, 0xF2, 0x48, 0x9A, 0x00, 0x6D, 0x00, 0xF4, +0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x52, 0x9B, 0x8D, 0xEA, +0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF7, +0x68, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF1, 0x70, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0xB2, 0x9B, 0x8F, 0xEA, 0xAC, 0xEA, 0x52, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x70, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, +0x48, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0x42, 0xF7, 0x14, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x98, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, -0x2B, 0xF1, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF1, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x4C, 0x9A, 0x35, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x81, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x41, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x70, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, -0x54, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF1, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF7, 0x58, 0x9A, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x83, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x43, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x7C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, -0x5C, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, 0x84, 0x9B, -0xAF, 0xEA, 0x8C, 0xEA, 0x44, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF1, 0x60, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x40, 0x9A, -0xA0, 0xDA, 0x20, 0xE8, 0x01, 0x74, 0x15, 0x60, -0x03, 0x24, 0x02, 0x74, 0x23, 0x60, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x54, 0x9B, 0xAD, 0xEA, 0x54, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0x6C, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x70, 0x9B, -0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, -0x18, 0x4B, 0x55, 0x9B, 0xAD, 0xEA, 0x55, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x70, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0x64, 0x9B, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x56, 0x9B, 0xAD, 0xEA, -0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF7, +0x8B, 0xF1, 0x40, 0x9B, 0xAD, 0xEA, 0x8B, 0xF1, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x01, 0x74, 0x16, 0x60, 0x03, 0x24, 0x02, 0x74, -0x25, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x94, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x4C, 0x9A, 0x23, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF1, 0x18, 0x4B, -0x95, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x55, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x64, 0x9B, +0x83, 0xF1, 0x70, 0x9B, 0x32, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x41, 0x9B, +0xAD, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF7, 0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF1, 0x74, 0x9B, 0x21, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x42, 0x9B, 0xAD, 0xEA, 0x42, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF7, 0x70, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x78, 0x9B, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF7, 0x74, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, +0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x44, 0x9B, +0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF7, 0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF1, 0x64, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x62, 0xF7, +0x08, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x80, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0x8B, 0xF1, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, +0x44, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF1, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF7, 0x4C, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x78, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x50, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x96, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0x44, 0x9A, 0xA0, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF1, 0x8C, 0x9C, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF1, 0x58, 0xDB, 0x2B, 0xF1, -0x18, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, -0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF1, 0x90, 0x9C, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF1, 0x94, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, 0x9C, 0x9C, +0x8B, 0xF1, 0x00, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF1, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF7, 0x54, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x00, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, +0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF7, 0x58, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, +0x01, 0x74, 0x15, 0x60, 0x03, 0x24, 0x02, 0x74, +0x23, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x54, 0x9B, 0xAD, 0xEA, +0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, +0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF1, 0x74, 0x9B, 0x21, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, 0x55, 0x9B, +0xAD, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF7, 0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF1, 0x68, 0x9B, 0x10, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x56, 0x9B, 0xAD, 0xEA, 0x56, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF7, 0x7C, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x6C, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x01, 0x74, 0x16, 0x60, +0x03, 0x24, 0x02, 0x74, 0x25, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x94, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x74, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x50, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF1, 0x00, 0x4B, 0x95, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF1, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF7, 0x48, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x96, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x56, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, +0x5C, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, 0x90, 0x9C, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, +0x40, 0xDB, 0x8B, 0xF1, 0x00, 0x4B, 0x41, 0xDB, +0x42, 0xDB, 0x43, 0xDB, 0x44, 0xDB, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, 0x94, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, -0x80, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF1, 0x90, 0x9C, 0x54, 0xDB, 0x55, 0xDB, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, -0x84, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF1, 0x88, 0x9C, 0x56, 0xDB, 0x40, 0xDC, -0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0x6C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, 0x6C, 0x9B, -0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF7, 0x74, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF7, 0x78, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF7, -0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF7, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0x6C, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x70, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF7, -0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF7, 0x70, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0xA8, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x12, 0x6E, -0x2B, 0xF1, 0xD8, 0xDB, 0x01, 0xF7, 0x01, 0x6A, -0x2B, 0xF1, 0x18, 0x4B, 0x00, 0x6C, 0x42, 0xDB, -0x43, 0xDB, 0xA1, 0xDB, 0x84, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, 0xC0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x70, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF1, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF1, 0x40, 0x9A, 0x80, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x80, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x8B, 0xF1, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF1, 0x6C, 0x9B, 0x40, 0xDB, +0x98, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xA3, 0xF1, 0x80, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xA3, 0xF1, 0x84, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, 0x94, 0x9C, +0x54, 0xDB, 0x55, 0xDB, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xA3, 0xF1, 0x88, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, 0x8C, 0x9C, +0x56, 0xDB, 0x40, 0xDC, 0x52, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF1, 0x70, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF7, 0x8C, 0x9B, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xC0, 0xF1, 0x0F, 0x6D, -0xFF, 0x6B, 0xB4, 0xDA, 0x95, 0xDA, 0x76, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, 0x50, 0x9A, -0xA0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, -0x44, 0x9A, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF1, 0x48, 0x9A, 0x60, 0xDA, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xE5, 0x76, -0x80, 0x18, 0x04, 0x77, 0x80, 0x18, 0x1C, 0x77, -0x80, 0x18, 0x39, 0x77, 0x80, 0x18, 0x33, 0x77, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x76, 0x77, 0x30, 0xF0, 0x20, 0x6B, -0x2B, 0xF1, 0x18, 0x4B, 0x22, 0xF6, 0x54, 0xC3, -0x00, 0x6A, 0x22, 0xF6, 0x55, 0xC3, 0x80, 0x18, -0x15, 0x76, 0x80, 0x18, 0xA4, 0x79, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0x50, 0x9A, 0x3F, 0x6B, -0x60, 0xC2, 0x80, 0x18, 0x06, 0x76, 0x80, 0x18, -0x0A, 0x76, 0x80, 0x18, 0x1D, 0x76, 0x80, 0x18, -0xEE, 0x78, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x71, 0xD7, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x44, 0x9A, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x40, 0x9A, -0xE0, 0xF1, 0x1B, 0x6B, 0x6B, 0xEB, 0x60, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x7C, 0x9A, -0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x64, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF7, 0x90, 0x9C, -0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x58, 0x9A, -0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x4C, 0xEB, -0x62, 0x33, 0x03, 0x6A, 0x72, 0x33, 0x4C, 0xEB, -0x02, 0x6A, 0x04, 0x23, 0x01, 0x73, 0x01, 0x6A, -0x01, 0x60, 0x03, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0x10, 0xF0, 0x23, 0x6A, 0xEC, 0xF0, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xEC, 0xF0, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xBB, 0xF5, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x50, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x34, 0xF1, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x48, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x24, 0xF0, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x4C, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x14, 0xF1, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x54, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x12, 0xF4, 0x11, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x50, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0xF8, 0xF4, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x54, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x38, 0xF4, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x54, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xAA, 0xF1, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x58, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x0A, 0xF3, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x5C, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x30, 0xF5, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x40, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x6E, 0xF4, 0x11, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x44, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xAE, 0xF4, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x48, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x33, 0xF3, 0x11, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x4C, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x73, 0xF5, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x58, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x17, 0xF0, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x50, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x97, 0xF0, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x54, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x4D, 0xF5, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x5C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x8D, 0xF7, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x40, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x75, 0xF0, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x5C, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x15, 0xF1, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x40, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x42, 0xF6, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x48, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xE2, 0xF5, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x4C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xAE, 0xF5, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x44, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xD7, 0xF0, 0x09, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x54, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xC9, 0xF1, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x58, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0xF7, 0xF6, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x5C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xE9, 0xF1, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x40, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xE9, 0xF4, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x50, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0xF4, 0xF7, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x44, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x74, 0xF0, 0x11, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x69, 0xF2, 0x09, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x54, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xD0, 0xF0, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x4C, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xB0, 0xF3, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x58, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x4F, 0xF1, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xB9, 0xF1, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x50, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x8F, 0xF0, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x4C, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0xCE, 0xF6, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x50, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x2F, 0xF0, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x54, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x8B, 0xF6, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x44, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xCB, 0xF6, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x4C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xAB, 0xF6, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x48, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x12, 0xF3, 0x09, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x50, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xD1, 0xF5, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x48, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x52, 0xF0, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x50, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xB5, 0xF0, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x40, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x96, 0xF2, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x48, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x76, 0xF4, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x4C, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xF4, 0xF6, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x44, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x15, 0xF0, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x50, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x96, 0xF3, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x54, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x76, 0xF1, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x58, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xF6, 0xF0, 0x09, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x5C, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x75, 0xF0, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x40, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x89, 0xF7, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x50, 0xDB, -0x10, 0xF0, 0x30, 0x6A, 0x81, 0xF0, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x54, 0xDB, -0x10, 0xF0, 0x30, 0x6A, 0x23, 0xF4, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x58, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x5C, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x6D, 0xF7, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x8E, 0xF3, 0x78, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0x20, 0xF6, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x8E, 0xF3, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xAE, 0xF4, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xCE, 0xF4, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEF, 0xF7, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF0, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF3, 0x0B, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF3, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF3, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x0E, 0xF5, 0x14, 0x4A, -0x60, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF6, 0x0C, 0x4B, 0x2E, 0xF5, 0x00, 0x4A, -0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF5, -0x0C, 0x4A, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x0E, 0xF5, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF6, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x12, 0xF5, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x2E, 0xF5, 0x18, 0x4B, 0x80, 0xF6, 0x60, 0xDC, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x00, 0x4C, -0xAE, 0xF5, 0x14, 0x4B, 0x61, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xEE, 0xF4, 0x14, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0x80, 0xF6, 0x6C, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xEF, 0xF6, 0x04, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x68, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xAF, 0xF6, 0x10, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x6C, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x2B, 0xF2, 0x12, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x70, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xEB, 0xF1, 0x00, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x74, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xEF, 0xF6, 0x0C, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x78, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x4B, 0xF2, 0x0E, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x7C, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x4B, 0xF2, 0x00, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xE0, 0xF6, 0x60, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x4B, 0xF2, 0x07, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xE0, 0xF6, 0x64, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF6, 0x40, 0xDB, 0x20, 0xE8, +0x63, 0xF7, 0x64, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF7, +0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF7, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF7, 0x74, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF7, 0x78, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, +0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF7, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF7, 0x7C, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF7, 0x68, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF0, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF3, 0x12, 0x6E, 0x8B, 0xF1, 0xC0, 0xDB, +0x01, 0xF7, 0x01, 0x6A, 0x8B, 0xF1, 0x00, 0x4B, +0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, +0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, +0x70, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF1, 0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF1, 0x78, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x60, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, +0x44, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x80, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xCB, 0xF1, +0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, +0x70, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF0, 0x84, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xC0, 0xF1, 0x0F, 0x6D, 0xFF, 0x6B, 0xB4, 0xDA, +0x95, 0xDA, 0x76, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF1, 0x54, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF1, 0x48, 0x9A, 0x80, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x4C, 0x9A, +0x60, 0xDA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xCE, 0x78, 0x80, 0x18, 0xED, 0x78, +0x80, 0x18, 0x05, 0x79, 0x80, 0x18, 0x22, 0x79, +0x80, 0x18, 0x1C, 0x79, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x5F, 0x79, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF1, 0x00, 0x4B, +0x22, 0xF6, 0x58, 0xC3, 0x00, 0x6A, 0x22, 0xF6, +0x59, 0xC3, 0x80, 0x18, 0xFE, 0x77, 0x80, 0x18, +0x91, 0x7B, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, +0x48, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x80, 0x18, +0xEF, 0x77, 0x80, 0x18, 0xF3, 0x77, 0x80, 0x18, +0x06, 0x78, 0x80, 0x18, 0xDB, 0x7A, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xCC, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x58, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, +0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF2, 0x60, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xA3, 0xF7, 0x88, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF0, 0x50, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x40, 0xAA, 0x4C, 0xEB, 0x62, 0x33, 0x03, 0x6A, +0x72, 0x33, 0x4C, 0xEB, 0x02, 0x6A, 0x04, 0x23, +0x01, 0x73, 0x01, 0x6A, 0x01, 0x60, 0x03, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0x10, 0xF0, 0x23, 0x6A, +0x4C, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x6C, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x5C, 0xF5, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xD4, 0xF7, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x64, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xB4, 0xF7, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x93, 0xF2, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x99, 0xF3, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xD9, 0xF2, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xEA, 0xF6, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF2, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x4B, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF2, 0x5C, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xB1, 0xF3, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x4F, 0xF2, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x8F, 0xF2, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xD4, 0xF1, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xB4, 0xF3, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xB7, 0xF7, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x38, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xCE, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x0E, 0xF5, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x15, 0xF7, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xB5, 0xF7, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x42, 0xF6, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xE2, 0xF5, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x8F, 0xF3, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x78, 0xF0, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x09, 0xF7, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x98, 0xF5, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x29, 0xF7, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x2A, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0xB5, 0xF1, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF5, 0x44, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0xB4, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xA9, 0xF7, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xF0, 0xF5, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x4C, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xD1, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x0F, 0xF6, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xB9, 0xF1, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0xEF, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF5, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x35, 0xF0, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF5, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x8F, 0xF2, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF5, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x0C, 0xF4, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x2C, 0xF4, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x0C, 0xF4, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x33, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x12, 0xF4, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x48, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x92, 0xF6, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x50, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xD5, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x40, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x37, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x48, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x17, 0xF4, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x4C, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x15, 0xF5, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x44, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x35, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x50, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x37, 0xF3, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x54, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x56, 0xF0, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x44, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x17, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x58, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x97, 0xF0, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x5C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x35, 0xF2, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x0A, 0xF1, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, +0xA1, 0xF0, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x54, 0xDB, 0x10, 0xF0, 0x30, 0x6A, +0x43, 0xF4, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x2B, 0xF2, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xCD, 0xF7, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xEE, 0xF3, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF6, 0x64, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF3, 0x04, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF4, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF5, 0x04, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x50, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0xB0, 0xF0, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF0, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF3, 0x0B, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x40, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF3, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x44, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF3, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF2, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x21, 0xF0, 0x00, 0x4B, 0x80, 0xF2, 0x08, 0x4A, -0x13, 0x10, 0x80, 0x9A, 0x10, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x23, 0xF2, 0xAC, 0x9C, 0x30, 0xF0, -0x20, 0x6E, 0xA3, 0xF1, 0xD8, 0x9E, 0x80, 0x9D, -0xCD, 0xEC, 0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6C, -0xC4, 0xF0, 0x9C, 0x9C, 0x40, 0xDC, 0x04, 0x4A, -0x43, 0xEB, 0xEB, 0x60, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x40, 0x9A, -0xE5, 0xF6, 0x1F, 0x6B, 0xFF, 0x6C, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x40, 0x9A, -0x10, 0x6B, 0x40, 0x6D, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF0, 0x44, 0x9A, 0x01, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, -0x58, 0x9A, 0x60, 0xA2, 0x8C, 0xEB, 0xAD, 0xEB, -0x8C, 0xEB, 0x60, 0xC2, 0x80, 0xA2, 0xF8, 0x6B, -0x8C, 0xEB, 0x60, 0xC2, 0x80, 0xA2, 0xF7, 0x6B, -0x8C, 0xEB, 0x60, 0xC2, 0x80, 0xA2, 0xEF, 0x6B, -0x8C, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF0, 0x48, 0x9A, 0x00, 0xF2, 0x01, 0x6C, -0x8B, 0xEC, 0x60, 0x9A, 0x8C, 0xEB, 0x60, 0xDA, -0x60, 0x9A, 0x00, 0xF1, 0x00, 0x4C, 0x8C, 0xEB, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, -0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF2, -0x98, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x50, 0x9A, -0x60, 0xA2, 0x04, 0x5B, 0x02, 0x60, 0x04, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x44, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, -0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, -0x68, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x78, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xD5, 0xE4, 0xF0, 0xB4, 0x9B, -0xFF, 0x6A, 0x40, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, -0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, -0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x58, 0x9A, -0x00, 0xAA, 0x04, 0x92, 0x2C, 0xE8, 0x2A, 0xEA, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x44, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x04, 0x93, -0x2C, 0xEA, 0x6C, 0xE8, 0x07, 0xEA, 0x2C, 0xE8, -0x50, 0x67, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, -0x2C, 0xED, 0xFF, 0x68, 0x0C, 0xEC, 0x2C, 0xEE, -0x2A, 0xED, 0x05, 0xD4, 0x04, 0xD5, 0x06, 0xD6, -0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, -0x74, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, -0x0C, 0xEA, 0x8C, 0xEA, 0x05, 0x94, 0x8D, 0xEA, -0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF0, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF5, 0x90, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF1, 0x98, 0x9C, -0x8D, 0xEA, 0xCD, 0xEA, 0x40, 0xDB, 0x34, 0x10, -0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x20, 0x79, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, -0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE4, 0xF0, 0x94, 0x9B, 0x40, 0x6D, -0xAB, 0xED, 0x60, 0xA4, 0x2C, 0xEA, 0x0C, 0xEB, -0xAC, 0xEB, 0x05, 0x95, 0xAD, 0xEB, 0x0C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF0, -0x98, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x43, 0xF5, -0xB0, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0x03, 0xF1, 0xB8, 0x9D, -0xC4, 0xEA, 0x46, 0x67, 0xAD, 0xEB, 0x04, 0x95, -0x07, 0x96, 0xAC, 0xEA, 0xAF, 0xED, 0xCC, 0xED, -0xAD, 0xEA, 0x2C, 0xEA, 0x4D, 0xEB, 0x60, 0xDC, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x10, 0xF0, -0x00, 0x6D, 0x80, 0x18, 0x20, 0x79, 0x05, 0x97, -0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, -0x32, 0x6A, 0xFC, 0xF5, 0x01, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x31, 0x10, 0x82, 0xF3, 0x08, 0x70, -0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x6C, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x6E, 0xF5, 0x00, 0x4A, 0x60, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, 0x0C, 0x4B, +0x6E, 0xF5, 0x0C, 0x4A, 0x41, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x6E, 0xF5, 0x18, 0x4A, 0x42, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x4E, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x6E, 0xF6, 0x1C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0xD2, 0xF5, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x8E, 0xF5, 0x04, 0x4B, +0x80, 0xF6, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x00, 0x4C, 0x0E, 0xF6, 0x00, 0x4B, +0x61, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x4E, 0xF5, +0x00, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, +0x6C, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x8F, 0xF7, +0x0C, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x68, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x4F, 0xF7, +0x18, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x6C, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF2, +0x1A, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x70, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF2, +0x08, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x74, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xAF, 0xF7, +0x0C, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x78, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF2, +0x16, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x7C, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF2, +0x08, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF6, +0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF2, +0x0F, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF6, +0x64, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF0, 0x00, 0x4B, +0x80, 0xF2, 0x08, 0x4A, 0x13, 0x10, 0x80, 0x9A, +0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF2, +0xB4, 0x9C, 0x30, 0xF0, 0x20, 0x6E, 0xC3, 0xF1, +0xDC, 0x9E, 0x80, 0x9D, 0xCD, 0xEC, 0x80, 0xDD, +0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF0, 0x94, 0x9C, +0x40, 0xDC, 0x04, 0x4A, 0x43, 0xEB, 0xEB, 0x60, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF2, 0x48, 0x9A, 0xE5, 0xF6, 0x1F, 0x6B, +0xFF, 0x6C, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF0, 0x58, 0x9A, 0x10, 0x6B, 0x40, 0x6D, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, +0x5C, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF1, 0x5C, 0x9A, 0x60, 0xA2, +0x8C, 0xEB, 0xAD, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, +0x80, 0xA2, 0xF8, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x80, 0xA2, 0xF7, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x80, 0xA2, 0xEF, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x40, 0x9A, +0x00, 0xF2, 0x01, 0x6C, 0x8B, 0xEC, 0x60, 0x9A, +0x8C, 0xEB, 0x60, 0xDA, 0x60, 0x9A, 0x00, 0xF1, +0x00, 0x4C, 0x8C, 0xEB, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0x64, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF2, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF1, 0x18, 0x4A, 0xA3, 0xF3, 0x60, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x4C, 0x9A, 0x03, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x18, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x40, 0xEA, 0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF7, 0x54, 0x9A, 0x60, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x2A, 0x80, 0x18, -0x72, 0x79, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x4C, 0x9A, 0x02, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x74, 0x9B, 0x10, 0xF0, 0x32, 0x6A, -0xFC, 0xF5, 0x02, 0x4A, 0x40, 0xDB, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF0, 0x74, 0x9A, 0x02, 0x6C, -0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0x9B, 0xFF, 0x6E, -0x41, 0x4E, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x60, 0x9A, 0xE0, 0xF3, -0x1E, 0x4C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xAB, -0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xCB, -0x02, 0x6C, 0x80, 0x18, 0x3B, 0x79, 0x80, 0xF3, -0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, 0x00, 0x6C, -0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0x3B, 0x79, -0x00, 0x6C, 0xC4, 0x67, 0x02, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0x3B, 0x79, 0x00, 0x6C, 0xC4, 0x67, -0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x3B, 0x79, -0x00, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0x3B, 0x79, 0x10, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0x3B, 0x79, -0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x7C, 0x9A, -0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFE, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +0x04, 0xF1, 0x48, 0x9A, 0x60, 0xA2, 0x04, 0x5B, +0x02, 0x60, 0x04, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, 0x60, 0xAA, +0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF2, 0x70, 0x9B, 0x40, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x7C, 0x9A, +0x7F, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, +0x2C, 0xED, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD5, +0x04, 0xF1, 0xAC, 0x9B, 0xFF, 0x6A, 0x40, 0x6E, +0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, +0xCC, 0xEB, 0x6D, 0xEC, 0x4C, 0xEC, 0x80, 0xC5, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0x50, 0x9A, 0x00, 0xAA, 0x04, 0x92, +0x2C, 0xE8, 0x2A, 0xEA, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x04, 0x94, +0x40, 0xEA, 0x04, 0x93, 0x2C, 0xEA, 0x6C, 0xE8, +0x07, 0xEA, 0x2C, 0xE8, 0x50, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0xFF, 0x68, +0x0C, 0xEC, 0x2C, 0xEE, 0x2A, 0xED, 0x05, 0xD4, +0x04, 0xD5, 0x06, 0xD6, 0x1F, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0x6C, 0x9A, 0x40, 0x6C, +0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, 0x8C, 0xEA, +0x05, 0x94, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF5, 0x84, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x23, 0xF1, 0x9C, 0x9C, 0x8D, 0xEA, 0xCD, 0xEA, +0x40, 0xDB, 0x34, 0x10, 0x05, 0x94, 0xB1, 0x67, +0x80, 0x18, 0x0D, 0x7B, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x94, 0xA0, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, +0x8C, 0x9B, 0x40, 0x6D, 0xAB, 0xED, 0x60, 0xA4, +0x2C, 0xEA, 0x0C, 0xEB, 0xAC, 0xEB, 0x05, 0x95, +0xAD, 0xEB, 0x0C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF1, 0x90, 0x9B, 0x30, 0xF0, +0x20, 0x6D, 0x63, 0xF5, 0xA4, 0x9D, 0x60, 0x9C, +0x06, 0x96, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x23, 0xF1, 0xBC, 0x9D, 0xC4, 0xEA, 0x46, 0x67, +0xAD, 0xEB, 0x04, 0x95, 0x07, 0x96, 0xAC, 0xEA, +0xAF, 0xED, 0xCC, 0xED, 0xAD, 0xEA, 0x2C, 0xEA, +0x4D, 0xEB, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, +0x0D, 0x7B, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x78, 0x9B, 0x10, 0xF0, 0x32, 0x6A, 0x9D, 0xF5, +0x15, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x31, 0x10, +0x82, 0xF3, 0x08, 0x70, 0x1A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x74, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x00, 0x4A, +0xA3, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, +0x54, 0x9A, 0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x18, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, +0x4C, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x04, 0x2A, 0x80, 0x18, 0x5F, 0x7B, 0x01, 0x72, +0xCB, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, +0x54, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x32, 0x6A, 0x9D, 0xF5, 0x16, 0x4A, +0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, +0x6C, 0x9A, 0x02, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, +0x40, 0x9B, 0xFF, 0x6E, 0x41, 0x4E, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, +0x68, 0x9A, 0xE0, 0xF3, 0x1E, 0x4C, 0x30, 0xF0, +0x20, 0x68, 0x40, 0xAB, 0xAC, 0xEA, 0x8D, 0xEA, +0xAC, 0xEA, 0x40, 0xCB, 0x02, 0x6C, 0x80, 0x18, +0x28, 0x7B, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, +0x40, 0xEA, 0x00, 0x6C, 0xC0, 0x6D, 0x02, 0x6E, +0x80, 0x18, 0x28, 0x7B, 0x00, 0x6C, 0xC4, 0x67, +0x02, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x28, 0x7B, +0x00, 0x6C, 0xC4, 0x67, 0x0C, 0xF0, 0x00, 0x6D, +0x80, 0x18, 0x28, 0x7B, 0x00, 0x6C, 0x01, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0x28, 0x7B, +0x10, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x00, 0x6C, +0x80, 0x18, 0x28, 0x7B, 0x80, 0xF3, 0x4C, 0x98, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0x74, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0xE4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u32 array_length_mp_8822c_fw_nic = 196888; +u32 array_length_mp_8822c_fw_nic = 200624; #if !(DM_ODM_SUPPORT_TYPE & (ODM_CE)) u8 array_mp_8822c_fw_spic[] = { -0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x00, -0x0D, 0x9C, 0xA8, 0x60, 0x00, 0x00, 0x00, 0x00, -0x09, 0x18, 0x0E, 0x2B, 0xE5, 0x07, 0x00, 0x00, +0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x11, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x14, 0x0F, 0x28, 0xE8, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0xD0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0xC0, 0x66, 0x00, 0x00, 0xF8, 0x3D, 0x01, 0x00, +0xD0, 0x66, 0x00, 0x00, 0x10, 0x3E, 0x01, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, @@ -41475,45 +42015,44 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x2E, 0x30, 0x30, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x53, 0x74, 0x6F, 0x72, 0x61, -0x67, 0x65, 0x20, 0x20, 0x52, 0x65, 0x61, 0x6C, -0x74, 0x65, 0x6B, 0x20, 0x09, 0x12, 0x1B, 0x24, +0x67, 0x65, 0x20, 0x20, 0x09, 0x12, 0x1B, 0x24, 0x94, 0x0C, 0x94, 0x0E, 0x94, 0x18, 0x94, 0x1A, -0x41, 0x43, 0x10, 0x80, 0x15, 0x44, 0x10, 0x80, -0x51, 0x43, 0x10, 0x80, 0x87, 0x43, 0x10, 0x80, -0xC3, 0x43, 0x10, 0x80, 0x15, 0x44, 0x10, 0x80, -0x5F, 0x44, 0x10, 0x80, 0x77, 0x44, 0x10, 0x80, -0x83, 0x44, 0x10, 0x80, 0xB5, 0x44, 0x10, 0x80, -0xE7, 0x44, 0x10, 0x80, 0xF7, 0x44, 0x10, 0x80, -0x09, 0x12, 0x1B, 0x24, 0x03, 0x19, 0x11, 0x80, -0x7B, 0x1A, 0x11, 0x80, 0x55, 0x1B, 0x11, 0x80, -0xFF, 0x18, 0x11, 0x80, 0xFF, 0x18, 0x11, 0x80, -0x03, 0x19, 0x11, 0x80, 0x03, 0x19, 0x11, 0x80, -0xF7, 0x50, 0x10, 0x80, 0x0D, 0x51, 0x10, 0x80, -0x3F, 0x51, 0x10, 0x80, 0x3F, 0x51, 0x10, 0x80, -0x3F, 0x51, 0x10, 0x80, 0x3F, 0x51, 0x10, 0x80, -0x19, 0x51, 0x10, 0x80, 0x23, 0x51, 0x10, 0x80, -0x2D, 0x51, 0x10, 0x80, 0x37, 0x51, 0x10, 0x80, -0xFF, 0x50, 0x10, 0x80, 0xED, 0x50, 0x10, 0x80, -0xE1, 0x31, 0x11, 0x80, 0x03, 0x32, 0x11, 0x80, -0x25, 0x32, 0x11, 0x80, 0x47, 0x32, 0x11, 0x80, -0x6B, 0x32, 0x11, 0x80, 0xA5, 0x32, 0x11, 0x80, -0xC9, 0x32, 0x11, 0x80, 0xED, 0x32, 0x11, 0x80, -0x11, 0x33, 0x11, 0x80, 0x37, 0x33, 0x11, 0x80, +0x91, 0x42, 0x10, 0x80, 0x65, 0x43, 0x10, 0x80, +0xA1, 0x42, 0x10, 0x80, 0xD7, 0x42, 0x10, 0x80, +0x13, 0x43, 0x10, 0x80, 0x65, 0x43, 0x10, 0x80, +0xAF, 0x43, 0x10, 0x80, 0xC7, 0x43, 0x10, 0x80, +0xD3, 0x43, 0x10, 0x80, 0x05, 0x44, 0x10, 0x80, +0x37, 0x44, 0x10, 0x80, 0x47, 0x44, 0x10, 0x80, +0x09, 0x12, 0x1B, 0x24, 0x33, 0x19, 0x11, 0x80, +0xAB, 0x1A, 0x11, 0x80, 0x85, 0x1B, 0x11, 0x80, +0x2F, 0x19, 0x11, 0x80, 0x2F, 0x19, 0x11, 0x80, +0x33, 0x19, 0x11, 0x80, 0x33, 0x19, 0x11, 0x80, +0x47, 0x50, 0x10, 0x80, 0x5D, 0x50, 0x10, 0x80, +0x8F, 0x50, 0x10, 0x80, 0x8F, 0x50, 0x10, 0x80, +0x8F, 0x50, 0x10, 0x80, 0x8F, 0x50, 0x10, 0x80, +0x69, 0x50, 0x10, 0x80, 0x73, 0x50, 0x10, 0x80, +0x7D, 0x50, 0x10, 0x80, 0x87, 0x50, 0x10, 0x80, +0x4F, 0x50, 0x10, 0x80, 0x3D, 0x50, 0x10, 0x80, +0xF9, 0x31, 0x11, 0x80, 0x1B, 0x32, 0x11, 0x80, +0x3D, 0x32, 0x11, 0x80, 0x5F, 0x32, 0x11, 0x80, +0x83, 0x32, 0x11, 0x80, 0xBD, 0x32, 0x11, 0x80, +0xE1, 0x32, 0x11, 0x80, 0x05, 0x33, 0x11, 0x80, +0x29, 0x33, 0x11, 0x80, 0x4F, 0x33, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, 0x40, 0x00, 0x00, 0x00, 0xE0, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, -0xE3, 0x04, 0x00, 0x00, 0xB9, 0x27, 0x11, 0x80, -0xB9, 0x27, 0x11, 0x80, 0xB9, 0x27, 0x11, 0x80, -0xD3, 0x27, 0x11, 0x80, 0xB9, 0x27, 0x11, 0x80, -0xB9, 0x27, 0x11, 0x80, 0xB9, 0x27, 0x11, 0x80, -0xB5, 0x27, 0x11, 0x80, 0xB5, 0x27, 0x11, 0x80, -0xB5, 0x27, 0x11, 0x80, 0xB5, 0x27, 0x11, 0x80, -0xB5, 0x27, 0x11, 0x80, 0x43, 0x28, 0x11, 0x80, -0x4D, 0x28, 0x11, 0x80, 0x8B, 0x3D, 0x03, 0x80, -0x9B, 0x3D, 0x03, 0x80, 0xA5, 0x3D, 0x03, 0x80, -0xAF, 0x3D, 0x03, 0x80, 0xC1, 0x3D, 0x03, 0x80, -0xE7, 0x5C, 0x03, 0x80, 0x47, 0x5D, 0x03, 0x80, -0xDB, 0x5D, 0x03, 0x80, 0x79, 0x5E, 0x03, 0x80, -0x1D, 0x5F, 0x03, 0x80, 0xFC, 0x10, 0x60, 0xB8, +0xE3, 0x04, 0x00, 0x00, 0xE9, 0x27, 0x11, 0x80, +0xE9, 0x27, 0x11, 0x80, 0xE9, 0x27, 0x11, 0x80, +0x03, 0x28, 0x11, 0x80, 0xE9, 0x27, 0x11, 0x80, +0xE9, 0x27, 0x11, 0x80, 0xE9, 0x27, 0x11, 0x80, +0xE5, 0x27, 0x11, 0x80, 0xE5, 0x27, 0x11, 0x80, +0xE5, 0x27, 0x11, 0x80, 0xE5, 0x27, 0x11, 0x80, +0xE5, 0x27, 0x11, 0x80, 0x73, 0x28, 0x11, 0x80, +0x7D, 0x28, 0x11, 0x80, 0x9B, 0x3D, 0x03, 0x80, +0xAB, 0x3D, 0x03, 0x80, 0xB5, 0x3D, 0x03, 0x80, +0xBF, 0x3D, 0x03, 0x80, 0xD1, 0x3D, 0x03, 0x80, +0xF7, 0x5C, 0x03, 0x80, 0x57, 0x5D, 0x03, 0x80, +0xEB, 0x5D, 0x03, 0x80, 0x89, 0x5E, 0x03, 0x80, +0x2D, 0x5F, 0x03, 0x80, 0xFC, 0x10, 0x60, 0xB8, 0xFA, 0xFA, 0xFA, 0xFA, 0xCF, 0x01, 0x64, 0xB8, 0x8C, 0x04, 0x64, 0xB8, 0x90, 0x04, 0x64, 0xB8, 0x94, 0x04, 0x64, 0xB8, 0x98, 0x04, 0x64, 0xB8, @@ -41560,9 +42099,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x0A, 0x08, 0x00, 0x01, 0x00, 0x66, 0xB8, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x78, 0xB8, 0x44, 0x00, 0x78, 0xB8, 0x01, 0x00, 0x00, 0xC0, -0x01, 0x00, 0x00, 0x60, 0x52, 0x29, 0x46, 0xE2, -0x03, 0x29, 0x29, 0x00, 0x32, 0xFC, 0x18, 0xA2, -0x08, 0x00, 0x04, 0x05, 0x01, 0x00, 0x0F, 0x70, +0x01, 0x00, 0x00, 0x60, 0x01, 0x00, 0x0F, 0x70, 0x01, 0x00, 0x1F, 0x70, 0x01, 0x00, 0x2F, 0x70, 0x01, 0x00, 0x3F, 0x70, 0x01, 0x00, 0x4F, 0x70, 0x01, 0x00, 0x5F, 0x70, 0x01, 0x00, 0x6F, 0x70, @@ -41755,8 +42292,11 @@ u8 array_mp_8822c_fw_spic[] = { 0x06, 0x08, 0x0A, 0x0C, 0x12, 0x18, 0x1E, 0x2E, 0x36, 0x40, 0x0A, 0x0C, 0x0C, 0x12, 0x16, 0x1C, 0x20, 0x2E, 0x36, 0x40, 0x2C, 0x00, 0x04, 0x00, -0x2D, 0x00, 0x2C, 0x01, 0x2D, 0x01, 0x2C, 0x02, -0x2E, 0x01, 0xFF, 0x00, 0x2D, 0x02, 0xFF, 0x00, +0xFF, 0x00, 0x36, 0x00, 0x2D, 0x00, 0x2C, 0x01, +0x37, 0x00, 0x2D, 0x01, 0x2C, 0x02, 0x38, 0x00, +0x2E, 0x01, 0x36, 0x01, 0x37, 0x01, 0x2D, 0x02, +0x36, 0x02, 0x38, 0x01, 0x2E, 0x02, 0xFF, 0x00, +0x37, 0x02, 0x2F, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x36, 0x2D, 0xFF, 0x36, 0x2E, 0xFF, 0x37, 0x2F, 0xFF, 0x38, 0x30, 0xFF, 0x39, 0x31, 0xFF, 0x3A, 0x32, 0xFF, 0x3A, 0x33, 0xFF, 0x3A, 0x34, 0xFF, @@ -41835,7 +42375,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, -0x95, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x7E, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x21, 0x6C, 0x00, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x94, 0xB8, 0x00, 0x65, 0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, 0x94, 0xB9, @@ -41856,54 +42396,54 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0x6F, 0x41, 0xF7, 0x08, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF4, 0x14, 0x4C, -0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x6B, 0xF3, -0x18, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, +0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x8B, 0xF3, +0x08, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, 0x10, 0xF0, 0x23, 0x6C, 0xC0, 0xF0, 0x01, 0x4C, 0x00, 0xEC, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xC0, 0xF0, 0x01, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, -0x6C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x30, 0xF0, +0x64, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xAB, 0x30, 0xF0, 0x20, 0x69, 0x8C, 0xEA, 0xFF, 0x6C, 0x01, 0x4C, 0x8D, 0xEA, 0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEA, 0x40, 0xCB, -0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0xC5, 0x4D, -0x80, 0x18, 0xF9, 0x4B, 0x80, 0x18, 0xDA, 0x4B, -0x80, 0x18, 0x82, 0x4D, 0x80, 0x18, 0x20, 0x4C, -0x80, 0x18, 0x75, 0x4D, 0x00, 0x18, 0xA5, 0xC2, +0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0xCB, 0x4D, +0x80, 0x18, 0xFF, 0x4B, 0x80, 0x18, 0xE0, 0x4B, +0x80, 0x18, 0x88, 0x4D, 0x80, 0x18, 0x26, 0x4C, +0x80, 0x18, 0x7B, 0x4D, 0x00, 0x18, 0xA5, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x54, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x41, 0xF7, 0x08, 0x4C, 0x1D, 0xF0, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF5, 0x50, 0xDB, 0x01, 0xF0, 0x50, 0x99, +0x03, 0xF5, 0x58, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF0, 0x10, 0x4C, 0x01, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF5, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6C, +0x23, 0xF5, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0xE1, 0xF7, 0x00, 0x4C, 0x1D, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF5, 0x58, 0xDB, 0x01, 0xF0, +0x20, 0x6B, 0x23, 0xF5, 0x40, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF0, 0x0C, 0x4C, 0x01, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF5, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x81, 0xF7, 0x14, 0x4C, 0x1E, 0xF0, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, 0x5C, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0x6D, 0x82, 0xF0, 0x04, 0x4C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF0, 0x00, 0x4C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, -0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x22, 0xF0, 0x14, 0x4C, 0x1E, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF5, 0x5C, 0xDB, 0x80, 0x18, 0x28, 0x4F, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x64, 0x9A, +0x23, 0xF5, 0x44, 0xDB, 0x80, 0x18, 0x2E, 0x4F, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, 0x7C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x7F, 0xF7, 0x1F, 0x6D, 0x40, 0xAB, 0x8C, 0xEA, 0x10, 0xF0, 0x00, 0x6C, 0x8B, 0xEC, 0x8D, 0xEA, 0xFF, 0xF7, 0x1F, 0x6C, @@ -42034,32 +42574,32 @@ u8 array_mp_8822c_fw_spic[] = { 0x5A, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x1C, 0x7D, 0x35, 0x5A, 0xB8, 0x00, 0x65, 0x00, 0xEA, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF3, 0x70, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, +0x02, 0xF3, 0x68, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, 0x80, 0xA3, 0x10, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0xE2, 0xF1, 0x10, 0x4A, 0xE2, 0xF1, 0x10, 0x6B, 0x31, 0x10, 0x7F, 0x4A, 0x09, 0x4A, 0x88, 0x6B, 0x15, 0x10, 0x1F, 0xF7, 0x00, 0x6C, 0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF2, 0x9C, 0x9C, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF3, -0x80, 0x9C, 0xC0, 0xA5, 0x91, 0xE3, 0x01, 0x4D, +0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF2, 0x94, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF2, +0x98, 0x9C, 0xC0, 0xA5, 0x91, 0xE3, 0x01, 0x4D, 0xC0, 0xC4, 0x01, 0x4B, 0x4A, 0xEB, 0xE9, 0x61, 0x20, 0xE8, 0x1F, 0xF7, 0x00, 0x6C, 0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF2, 0x9C, 0x9C, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF3, -0x80, 0x9C, 0xC0, 0xA5, 0x91, 0xE3, 0x01, 0x4D, +0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF2, 0x94, 0x9C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF2, +0x98, 0x9C, 0xC0, 0xA5, 0x91, 0xE3, 0x01, 0x4D, 0xC0, 0xC4, 0x01, 0x4B, 0x4A, 0xEB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x01, 0x72, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE2, 0xF4, -0xA4, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, 0x01, 0x6E, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC2, 0xF4, +0xAC, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, 0x15, 0x10, 0x02, 0x72, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xE2, 0xF4, 0xA4, 0x9B, 0x83, 0xF2, +0x44, 0x98, 0xC2, 0xF4, 0xAC, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0x05, 0x97, @@ -42070,19 +42610,19 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x17, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF2, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF2, 0x44, 0x9A, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF2, 0x4C, 0x9A, 0x00, 0x6B, +0xC2, 0xF2, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF2, 0x5C, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF2, 0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xEF, 0x9A, -0xC2, 0xF2, 0x70, 0x9B, 0xCE, 0x9A, 0xAD, 0x9A, +0xC2, 0xF2, 0x68, 0x9B, 0xCE, 0x9A, 0xAD, 0x9A, 0x8C, 0x9A, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF2, 0x74, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF2, 0x78, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x7C, 0x9B, +0xC2, 0xF2, 0x6C, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF2, 0x70, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x74, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0x9A, -0xE2, 0xF2, 0x60, 0x9B, 0x80, 0xDB, 0x68, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x44, 0x9A, +0xC2, 0xF2, 0x78, 0x9B, 0x80, 0xDB, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF2, 0x5C, 0x9A, 0x01, 0x6C, 0xA4, 0x67, 0x60, 0xDA, 0x80, 0x18, 0x68, 0x00, 0x00, 0x1C, 0xAC, 0x39, 0xFF, 0x17, 0x4C, 0xB8, 0x00, 0x65, 0x80, 0x34, 0x8D, 0xEA, @@ -42100,57 +42640,57 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x65, 0x6E, 0xDA, 0x6E, 0xB8, 0x00, 0x65, 0x6F, 0xDA, 0x10, 0xF0, 0x23, 0x6A, 0x40, 0xF7, 0x09, 0x4A, 0x00, 0xEA, 0x00, 0x65, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x41, 0xF0, 0x01, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, -0x48, 0x9A, 0x08, 0x6B, 0x40, 0xA2, 0x4C, 0xEB, +0x40, 0x9A, 0x08, 0x6B, 0x40, 0xA2, 0x4C, 0xEB, 0x00, 0x6A, 0x11, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0x9A, 0x23, 0xF5, 0x50, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF2, 0x50, 0x9A, 0x23, 0xF5, -0x10, 0x4B, 0x40, 0x9A, 0x41, 0xDB, 0x20, 0xE8, +0xE2, 0xF2, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0x9A, 0x23, 0xF5, 0x58, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF2, 0x48, 0x9A, 0x23, 0xF5, +0x18, 0x4B, 0x40, 0x9A, 0x41, 0xDB, 0x20, 0xE8, 0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xF2, 0x84, 0x9C, 0x10, 0xF0, 0x23, 0x6B, +0xA2, 0xF2, 0x9C, 0x9C, 0x10, 0xF0, 0x23, 0x6B, 0x81, 0xF0, 0x09, 0x4B, 0x60, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF2, 0x68, 0x9B, 0x80, 0xA3, +0x20, 0x6B, 0xE2, 0xF2, 0x60, 0x9B, 0x80, 0xA3, 0x08, 0x6B, 0x8C, 0xEB, 0x1C, 0x23, 0x05, 0x5A, 0x1A, 0x60, 0x0C, 0x6D, 0xB8, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF2, 0x6C, 0x9B, 0x80, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x18, 0x4B, +0x20, 0x6B, 0xE2, 0xF2, 0x64, 0x9B, 0x80, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x00, 0x4B, 0x12, 0xEA, 0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF2, 0x70, 0x9B, 0x81, 0xDA, 0x80, 0xA2, +0xE2, 0xF2, 0x68, 0x9B, 0x81, 0xDA, 0x80, 0xA2, 0x60, 0x9B, 0x62, 0xDA, 0x01, 0x6B, 0x8D, 0xEB, 0x60, 0xC2, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF2, 0x84, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF2, 0x9C, 0x9C, 0x10, 0xF0, 0x23, 0x6B, 0xE1, 0xF0, 0x0D, 0x4B, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, -0x68, 0x9B, 0x80, 0xA3, 0x08, 0x6B, 0x8C, 0xEB, +0x60, 0x9B, 0x80, 0xA3, 0x08, 0x6B, 0x8C, 0xEB, 0x1B, 0x23, 0x05, 0x5A, 0x19, 0x60, 0x0C, 0x6C, -0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, -0x18, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0x80, 0xA2, +0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, +0x00, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0D, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF2, 0x6C, 0x9B, 0x42, 0x9A, +0x20, 0x6B, 0xE2, 0xF2, 0x64, 0x9B, 0x42, 0x9A, 0xA0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, -0x70, 0x9B, 0x60, 0x9B, 0x4B, 0xE3, 0x20, 0xE8, +0x68, 0x9B, 0x60, 0x9B, 0x4B, 0xE3, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6B, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF2, 0x84, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF2, 0x9C, 0x9C, 0x10, 0xF0, 0x23, 0x6A, 0x41, 0xF1, 0x0D, 0x4A, 0x05, 0x5B, 0x40, 0xDC, 0x00, 0x6A, 0x11, 0x60, 0x0C, 0x6C, 0x98, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF5, 0x18, 0x4A, 0x12, 0xEB, 0x4D, 0xE3, +0x43, 0xF5, 0x00, 0x4A, 0x12, 0xEB, 0x4D, 0xE3, 0x80, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6A, 0x41, 0xDB, 0x42, 0xDB, 0x01, 0x6A, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, -0x64, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x81, 0xF1, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, +0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x81, 0xF1, 0x0D, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0x40, 0xEA, 0x03, 0x22, 0x00, 0x18, 0x10, 0xC2, 0x05, 0x10, 0x10, 0xF0, 0x23, 0x68, 0x41, 0xF0, 0x01, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, +0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xC1, 0xF1, 0x09, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, 0x40, 0xEA, 0x04, 0x22, @@ -42158,8 +42698,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x90, 0x67, 0x10, 0xF0, 0x23, 0x68, 0x81, 0xF0, 0x09, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, -0x64, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x01, 0xF2, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, +0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x01, 0xF2, 0x0D, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, 0x40, 0xEA, 0x04, 0x22, 0x90, 0x67, 0x00, 0x18, @@ -42167,7 +42707,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x23, 0x68, 0xE1, 0xF0, 0x0D, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, +0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x41, 0xF2, 0x11, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, 0x40, 0xEA, 0x04, 0x22, @@ -42336,12 +42876,12 @@ u8 array_mp_8822c_fw_spic[] = { 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x8E, 0x36, 0x07, 0x6B, 0x01, 0x75, 0x4C, 0xEE, 0x8C, 0xEB, 0x12, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x59, 0xE6, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x59, 0xE6, 0x01, 0x6A, 0x44, 0xEB, 0x03, 0xF3, 0x64, 0xA6, 0x00, 0x6D, 0x6D, 0xEA, 0x03, 0xF3, 0x44, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x40, 0x9A, -0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x59, 0xE6, 0x01, 0x6A, 0x44, 0xEB, +0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x59, 0xE6, 0x01, 0x6A, 0x44, 0xEB, 0x03, 0xF3, 0x64, 0xA6, 0x4F, 0xEA, 0x01, 0x6D, 0x6C, 0xEA, 0x03, 0xF3, 0x44, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x40, 0x9A, 0x40, 0xEA, @@ -42350,15 +42890,15 @@ u8 array_mp_8822c_fw_spic[] = { 0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x05, 0x5C, 0x48, 0x32, 0x03, 0x61, 0x01, 0x6A, 0x4B, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, -0xB4, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0xE2, 0xF2, -0xD8, 0x9E, 0x60, 0x9D, 0x00, 0xF7, 0x80, 0x34, +0xAC, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0xE2, 0xF2, +0xD0, 0x9E, 0x60, 0x9D, 0x00, 0xF7, 0x80, 0x34, 0xCC, 0xEB, 0x6D, 0xEC, 0x80, 0xDD, 0x1F, 0xF7, 0x00, 0x6B, 0x60, 0xF5, 0x80, 0x42, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x09, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x7C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x74, 0x9B, 0x60, 0xF5, 0x00, 0x4A, 0x69, 0xE2, 0x40, 0x9A, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x40, 0x9A, 0x51, 0xE4, 0x40, 0x9C, 0x20, 0xE8, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x58, 0x9A, 0x51, 0xE4, 0x40, 0x9C, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x32, 0x6B, 0xAC, 0xEA, 0xBD, 0x67, 0x70, 0xC5, 0x02, 0x5C, 0x02, 0x6B, 0x6F, 0xCD, 0x92, 0xC5, @@ -42369,19 +42909,19 @@ u8 array_mp_8822c_fw_spic[] = { 0xFF, 0x6B, 0x6C, 0xEC, 0x01, 0x6A, 0x8E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0x0C, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x7C, 0x9B, 0x10, 0x6C, 0x75, 0xE5, 0x60, 0xA5, 0x4C, 0xEB, 0x8D, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, -0x09, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x44, 0x9A, 0x55, 0xE5, 0x60, 0xA5, 0xEF, 0x6A, +0x09, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x5C, 0x9A, 0x55, 0xE5, 0x60, 0xA5, 0xEF, 0x6A, 0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x02, 0xF3, -0x68, 0x9B, 0x4C, 0xEE, 0x4C, 0xEF, 0x05, 0xD6, +0x60, 0x9B, 0x4C, 0xEE, 0x4C, 0xEF, 0x05, 0xD6, 0x04, 0xD7, 0x60, 0xA3, 0xFF, 0xF7, 0x1F, 0x68, 0x25, 0x67, 0x4C, 0xEB, 0x72, 0x33, 0x4C, 0xEB, 0x8C, 0xE8, 0x4C, 0xE9, 0x3C, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF3, 0x6C, 0x9B, 0x00, 0x6C, +0x20, 0x6B, 0x02, 0xF3, 0x64, 0x9B, 0x00, 0x6C, 0xFF, 0x6D, 0x60, 0xA3, 0x26, 0x6E, 0x6C, 0xEA, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, @@ -42392,8 +42932,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0x6A, 0x04, 0x96, 0x40, 0xF4, 0x58, 0x9A, 0xB0, 0x67, 0x91, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0x24, 0xC4, 0xA2, 0x67, 0x90, 0x67, -0x00, 0x18, 0x42, 0xD8, 0x04, 0x95, 0x90, 0x67, -0x00, 0x18, 0x51, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0x46, 0xD8, 0x04, 0x95, 0x90, 0x67, +0x00, 0x18, 0x55, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x06, 0x95, 0x00, 0x6C, 0x27, 0x6E, 0x40, 0xEA, 0x1D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0x96, 0xA0, 0xF2, 0x54, 0x9A, @@ -42401,8 +42941,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x96, 0x40, 0xF4, 0x58, 0x9A, 0xB0, 0x67, 0x91, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0x24, 0xC4, -0xA2, 0x67, 0x90, 0x67, 0x00, 0x18, 0x42, 0xD8, -0x04, 0x95, 0x90, 0x67, 0x00, 0x18, 0x51, 0xD8, +0xA2, 0x67, 0x90, 0x67, 0x00, 0x18, 0x46, 0xD8, +0x04, 0x95, 0x90, 0x67, 0x00, 0x18, 0x55, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, @@ -42415,8 +42955,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, 0x1F, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF2, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF3, 0x40, 0x9A, 0x49, 0xE1, +0xE2, 0xF2, 0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF2, 0x58, 0x9A, 0x49, 0xE1, 0x0B, 0x93, 0x40, 0x9A, 0x6C, 0xEA, 0x0C, 0x93, 0x6E, 0xEA, 0x04, 0x22, 0x40, 0xA8, 0x04, 0x93, 0x63, 0xEA, 0xDC, 0x61, 0x40, 0xA8, 0x04, 0x93, @@ -42424,56 +42964,56 @@ u8 array_mp_8822c_fw_spic[] = { 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0xA0, 0x35, 0x4C, 0xEC, 0xA0, 0x35, 0xCC, 0xEA, 0x4D, 0xED, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF3, 0x44, 0x9A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF3, 0x48, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0x8C, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0x70, 0x9B, +0x20, 0x6A, 0x22, 0xF3, 0x5C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF3, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0x84, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0x68, 0x9B, 0xAD, 0xEA, 0x40, 0xDC, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF3, 0x54, 0x9A, 0x60, 0xDC, +0x20, 0x6A, 0x42, 0xF3, 0x4C, 0x9A, 0x60, 0xDC, 0x00, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEA, 0xAC, 0xEB, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF3, 0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF3, 0x5C, 0x9A, 0x60, 0x33, +0x42, 0xF3, 0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF3, 0x54, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF3, 0x4C, 0x9A, 0x00, 0x6C, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x40, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0x74, 0x9B, +0x42, 0xF3, 0x44, 0x9A, 0x00, 0x6C, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF3, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0x6C, 0x9B, 0x40, 0xA2, 0x80, 0xC3, 0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, -0x64, 0x9B, 0xFF, 0x6A, 0xCC, 0xEA, 0x6D, 0xEA, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, +0x7C, 0x9B, 0xFF, 0x6A, 0xCC, 0xEA, 0x6D, 0xEA, 0xE0, 0xF1, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0x33, 0x60, 0x33, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF3, 0x0C, 0x9B, 0x01, 0x6C, 0x40, 0xD8, +0x42, 0xF3, 0x04, 0x9B, 0x01, 0x6C, 0x40, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x00, 0x6A, 0x40, 0xD8, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xE0, 0xF1, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xAC, 0xEA, 0x62, 0xF3, 0x68, 0x9B, 0x40, 0x32, +0xAC, 0xEA, 0x62, 0xF3, 0x60, 0x9B, 0x40, 0x32, 0x40, 0x32, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF3, 0x0C, 0x4B, 0x60, 0x9B, 0x30, 0xF0, +0x42, 0xF3, 0x04, 0x4B, 0x60, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x01, 0x6C, 0x40, 0xDB, 0x80, 0xF3, 0x4C, 0x98, 0xFF, 0x69, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF3, 0x40, 0x9A, 0x01, 0x6C, +0x20, 0x6A, 0x42, 0xF3, 0x58, 0x9A, 0x01, 0x6C, 0x40, 0xA2, 0x4C, 0xE9, 0x80, 0xF3, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF3, -0x0C, 0x4C, 0x80, 0x9C, 0x00, 0x6A, 0x40, 0xDC, +0x04, 0x4C, 0x80, 0x9C, 0x00, 0x6A, 0x40, 0xDC, 0x07, 0x97, 0x51, 0x67, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF3, 0xCC, 0x9B, 0xFF, 0x6A, 0x04, 0x6D, +0x62, 0xF3, 0xC4, 0x9B, 0xFF, 0x6A, 0x04, 0x6D, 0x60, 0xA6, 0x4C, 0xEC, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC6, 0x11, 0x24, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF3, 0x90, 0x9B, 0x60, 0xA4, +0x20, 0x6B, 0x62, 0xF3, 0x88, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x60, 0xC4, 0x63, 0xF5, 0x18, 0x4A, +0x20, 0x6A, 0x60, 0xC4, 0x83, 0xF5, 0x00, 0x4A, 0x00, 0x6B, 0xC2, 0xF5, 0x65, 0xC2, 0x0D, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x68, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x26, 0xF3, -0x7D, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, -0x6C, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF3, +0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x64, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x0E, 0x92, 0x0F, 0x91, 0x04, 0x67, 0x04, 0xD2, 0x04, 0x93, 0xFF, 0x6A, @@ -42488,32 +43028,32 @@ u8 array_mp_8822c_fw_spic[] = { 0x22, 0xF2, 0x00, 0x6A, 0x08, 0x10, 0x22, 0xF2, 0x10, 0x6A, 0x05, 0x10, 0x42, 0xF2, 0x00, 0x6A, 0x02, 0x10, 0x42, 0xF2, 0x10, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x0D, 0x94, 0x62, 0xF3, 0x74, 0x9B, +0x20, 0x6B, 0x0D, 0x94, 0x62, 0xF3, 0x6C, 0x9B, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, -0x98, 0x9C, 0x8D, 0xEB, 0x06, 0x21, 0x30, 0xF0, -0x20, 0x6C, 0x62, 0xF3, 0x9C, 0x9C, 0x6D, 0xEC, -0x05, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF3, -0x80, 0x9C, 0x6C, 0xEC, 0x04, 0x96, 0x06, 0x26, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x68, 0x9B, +0x90, 0x9C, 0x8D, 0xEB, 0x06, 0x21, 0x30, 0xF0, +0x20, 0x6C, 0x62, 0xF3, 0x94, 0x9C, 0x6D, 0xEC, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, +0x98, 0x9C, 0x6C, 0xEC, 0x04, 0x96, 0x06, 0x26, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x60, 0x9B, 0x8D, 0xEB, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF3, 0x64, 0x9B, 0x8C, 0xEB, 0x1F, 0xF7, +0x62, 0xF3, 0x7C, 0x9B, 0x8C, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, -0xE2, 0xF2, 0xBC, 0x9C, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6C, 0x02, 0xF3, 0xA0, 0x9C, 0x30, 0xF0, -0x20, 0x6C, 0x0B, 0x96, 0x82, 0xF3, 0x88, 0x9C, +0xE2, 0xF2, 0xB4, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0xE2, 0xF2, 0xB8, 0x9C, 0x30, 0xF0, +0x20, 0x6C, 0x0B, 0x96, 0x82, 0xF3, 0x80, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, 0x84, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x82, 0xF3, 0xAC, 0x9C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF3, 0xB0, 0x9C, +0x20, 0x6C, 0x82, 0xF3, 0xA4, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF3, 0xA8, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x0C, 0x96, 0x82, 0xF3, -0x88, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, +0x80, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, 0x87, 0x42, 0x01, 0x4C, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF3, -0x94, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0x82, 0xF3, 0x98, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x8C, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x82, 0xF3, 0x90, 0x9C, 0x89, 0xE2, 0x60, 0xDA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, @@ -42521,195 +43061,195 @@ u8 array_mp_8822c_fw_spic[] = { 0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0xFF, 0x49, 0x40, 0xEA, 0x14, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, -0x68, 0x9A, 0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x60, 0x9A, 0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, +0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, -0x5C, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x54, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x0C, 0xEA, 0xDA, 0x2A, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x04, 0xF7, 0x10, 0x68, 0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0xFF, 0x48, 0x40, 0xEA, 0x14, 0x28, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, 0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x00, 0x6A, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, 0x54, 0x9A, 0x60, 0xAA, 0x3F, 0x6A, 0x6C, 0xEA, 0xDC, 0x2A, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF3, 0x5C, 0x9A, 0x40, 0xAA, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, 0x5C, 0x9A, +0x82, 0xF3, 0x54, 0x9A, 0x40, 0xAA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, 0x54, 0x9A, 0x40, 0xAA, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF2, 0x24, 0x9A, 0x10, 0xF0, 0x23, 0x68, +0xA2, 0xF2, 0x3C, 0x9A, 0x10, 0xF0, 0x23, 0x68, 0x22, 0xF6, 0x05, 0x48, 0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, -0x54, 0x9A, 0x23, 0xF5, 0x84, 0x9B, 0x01, 0x6D, +0x54, 0x9A, 0x23, 0xF5, 0x8C, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, 0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF2, 0x24, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF2, 0x3C, 0x9A, 0x10, 0xF0, 0x23, 0x68, 0x62, 0xF6, 0x09, 0x48, 0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, 0x54, 0x9A, 0x23, 0xF5, -0x80, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x88, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, 0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, 0x23, 0x6A, +0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xA2, 0xF6, 0x0D, 0x4A, 0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x00, 0x69, 0x00, 0x68, 0x00, 0x6C, 0x00, 0x18, 0xAB, 0xC5, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x0A, 0x70, 0xF8, 0x61, 0x01, 0x6B, 0x6E, 0xE9, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF2, 0x64, 0x9B, 0x4C, 0xE9, 0x10, 0xF0, +0xA2, 0xF2, 0x7C, 0x9B, 0x4C, 0xE9, 0x10, 0xF0, 0x23, 0x6A, 0xC2, 0xF6, 0x05, 0x4A, 0x29, 0xE2, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x8C, 0x9B, 0x01, 0xF0, +0x20, 0x6B, 0x23, 0xF5, 0x94, 0x9B, 0x01, 0xF0, 0x48, 0x98, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x80, 0x18, 0x4F, 0x00, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x94, 0x9B, 0xC3, 0xF4, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x8C, 0x9B, 0x01, 0xF0, +0x20, 0x6B, 0x23, 0xF5, 0x94, 0x9B, 0x01, 0xF0, 0x48, 0x98, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, 0x10, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x08, 0x23, 0x10, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, -0x00, 0x18, 0xB9, 0xD1, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x98, +0x00, 0x18, 0xBD, 0xD1, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x94, 0x98, 0xC3, 0xF4, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x98, 0x01, 0xF0, +0x20, 0x6A, 0x23, 0xF5, 0x94, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, 0x02, 0x6B, 0x8C, 0xEB, 0x09, 0x23, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, 0xD1, 0x14, -0x80, 0x18, 0x22, 0x15, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x98, +0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, 0xA5, 0x14, +0x80, 0x18, 0xF6, 0x14, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x94, 0x98, 0xC3, 0xF4, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x98, 0x01, 0xF0, +0x20, 0x6A, 0x23, 0xF5, 0x94, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, 0x04, 0x6B, 0x8C, 0xEB, 0x09, 0x23, 0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, 0x07, 0xCC, -0x00, 0x18, 0x8F, 0xCC, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x98, +0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, 0x08, 0xCC, +0x00, 0x18, 0x90, 0xCC, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x94, 0x98, 0xC3, 0xF4, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x98, 0x01, 0xF0, +0x20, 0x6A, 0x23, 0xF5, 0x94, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, 0x02, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x08, 0x23, 0x02, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, -0x00, 0x18, 0xB5, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x98, +0x00, 0x18, 0xB9, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x94, 0x98, 0xC3, 0xF4, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x98, 0x01, 0xF0, +0x20, 0x6A, 0x23, 0xF5, 0x94, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF3, 0x70, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF3, 0x68, 0x9B, 0xA0, 0xF0, 0x84, 0x9A, 0x8C, 0xEB, 0x09, 0x23, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF3, 0x74, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF3, 0x6C, 0x9B, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, -0xA6, 0x13, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x9B, 0xC3, 0xF4, +0x7A, 0x13, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF5, 0x94, 0x9B, 0xC3, 0xF4, 0x50, 0x9A, 0x40, 0xEA, 0x1C, 0x17, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF2, 0x04, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF2, 0x1C, 0x4A, 0x40, 0x9A, 0x10, 0xF0, 0x23, 0x68, 0x83, 0xF0, 0x19, 0x48, 0x00, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0x69, 0x01, 0xF0, -0x54, 0x9A, 0x23, 0xF5, 0x88, 0x9B, 0x2B, 0xE9, +0x54, 0x9A, 0x23, 0xF5, 0x90, 0x9B, 0x2B, 0xE9, 0xB1, 0x67, 0x40, 0xEA, 0x01, 0x4A, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x5C, 0x9A, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x1C, 0xAC, 0x39, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF5, 0x8C, 0x9B, 0x01, 0xF0, 0x48, 0x9A, +0x23, 0xF5, 0x94, 0x9B, 0x01, 0xF0, 0x48, 0x9A, 0xB1, 0x67, 0x01, 0x48, 0x40, 0xEA, 0x00, 0x18, 0xD1, 0xC6, 0x00, 0x18, 0xCD, 0xC6, 0x00, 0x18, 0xC9, 0xC6, 0x00, 0x18, 0xC5, 0xC6, 0x00, 0x18, 0xC1, 0xC6, 0x00, 0x18, 0xBD, 0xC6, 0xFC, 0x6C, 0x00, 0x18, 0xF2, 0xC1, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x8C, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x94, 0x9B, 0xC3, 0xF4, 0x50, 0x9A, 0x40, 0xEA, 0x00, 0x1C, -0xAB, 0x39, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF2, -0x04, 0x4A, 0x40, 0x9A, 0x00, 0xDA, 0xB0, 0x17, +0xAB, 0x39, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF2, +0x1C, 0x4A, 0x40, 0x9A, 0x00, 0xDA, 0xB0, 0x17, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, 0xF7, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x23, 0xF5, -0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x90, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, 0xF7, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x23, 0xF5, -0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x90, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, 0xF7, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x23, 0xF5, -0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x90, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0E, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0xF7, 0xC1, 0x00, 0x18, 0xCB, 0xCD, 0x30, 0xF0, +0xF7, 0xC1, 0x00, 0x18, 0xCC, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0x23, 0xF5, 0x88, 0x9B, 0x40, 0xEA, +0x58, 0x9A, 0x23, 0xF5, 0x90, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x10, 0x61, 0xFC, 0x6C, 0x00, 0x18, 0xF7, 0xC1, 0x00, 0x18, -0x0D, 0xD1, 0x00, 0x18, 0x9B, 0xCD, 0x30, 0xF0, +0x11, 0xD1, 0x00, 0x18, 0x9C, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0x23, 0xF5, 0x88, 0x9B, 0x40, 0xEA, +0x58, 0x9A, 0x23, 0xF5, 0x90, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x1D, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xFC, 0x6C, -0x63, 0xF5, 0x18, 0x48, 0x00, 0x18, 0xF7, 0xC1, -0x00, 0x18, 0xA2, 0xCD, 0x48, 0x98, 0x20, 0x6B, -0x6C, 0xEA, 0x07, 0x22, 0x00, 0x18, 0x54, 0xCE, +0x83, 0xF5, 0x00, 0x48, 0x00, 0x18, 0xF7, 0xC1, +0x00, 0x18, 0xA3, 0xCD, 0x48, 0x98, 0x20, 0x6B, +0x6C, 0xEA, 0x07, 0x22, 0x00, 0x18, 0x40, 0xCE, 0x48, 0x98, 0x21, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, 0x48, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x23, 0xF5, -0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, +0x90, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF3, 0x58, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, +0xA2, 0xF3, 0x50, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x54, 0x9A, 0x60, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF3, 0x40, 0x9A, 0x01, 0x6B, 0x40, 0x9A, +0xA2, 0xF3, 0x58, 0x9A, 0x01, 0x6B, 0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, 0x6E, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF3, 0x64, 0x9B, 0x44, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0x60, 0x9B, 0x62, 0xF3, 0x94, 0x9C, +0xA2, 0xF3, 0x7C, 0x9B, 0x44, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x60, 0x9B, 0x62, 0xF3, 0x8C, 0x9C, 0x8C, 0xEB, 0x43, 0xEB, 0x02, 0x60, 0x6F, 0xEB, 0x69, 0xE2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x18, 0xD3, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0x1C, 0xD3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x12, 0xD3, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0x16, 0xD3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x64, 0xD3, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0x68, 0xD3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xDD, 0xD3, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0xE1, 0xD3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xF1, 0xD3, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0xF5, 0xD3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x0C, 0xD3, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0x10, 0xD3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x03, 0x6F, 0x8C, 0xEF, 0x64, 0x67, 0x46, 0x67, 0x04, 0x27, 0x0B, 0x10, 0xA0, 0xDB, 0xFC, 0x4A, 0x04, 0x4B, 0x04, 0x5A, @@ -42796,50 +43336,50 @@ u8 array_mp_8822c_fw_spic[] = { 0xB9, 0xE6, 0x00, 0x6A, 0xE3, 0x17, 0x7D, 0x67, 0xA0, 0xF1, 0x45, 0xA3, 0x20, 0xF4, 0x18, 0x94, 0x01, 0x6B, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0xCA, 0xF4, 0x74, 0xC2, 0x01, 0x6A, 0x07, 0x63, +0xCA, 0xF4, 0x7C, 0xC2, 0x01, 0x6A, 0x07, 0x63, 0xFF, 0x97, 0xFE, 0x91, 0xFD, 0x90, 0x00, 0xF4, 0x00, 0x63, 0x00, 0xEF, 0x1F, 0x75, 0x0D, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0x98, 0x9C, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0x90, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, -0x48, 0x9A, 0x60, 0x9C, 0x4E, 0xEB, 0x01, 0x6A, +0x40, 0x9A, 0x60, 0x9C, 0x4E, 0xEB, 0x01, 0x6A, 0x0C, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF3, -0x98, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF3, +0x90, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x20, 0xE8, 0x6D, 0xA4, 0x0F, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF3, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x62, 0xF3, 0x88, 0x9C, 0x40, 0x9B, 0x2F, 0x10, +0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x62, 0xF3, 0x80, 0x9C, 0x40, 0x9B, 0x2F, 0x10, 0x4E, 0xA4, 0x1F, 0x6B, 0x6C, 0xEA, 0x1F, 0x4A, 0x6C, 0xEA, 0x10, 0x5A, 0x0A, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xA2, 0xF3, 0x90, 0x9C, 0x40, 0x9B, +0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xA2, 0xF3, 0x88, 0x9C, 0x40, 0x9B, 0x1E, 0x10, 0x4C, 0xA4, 0x0C, 0x22, 0x80, 0x72, 0x0A, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF3, -0x8C, 0x9C, 0x40, 0x9B, 0x10, 0x10, 0x6D, 0xA4, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF3, +0x84, 0x9C, 0x40, 0x9B, 0x10, 0x10, 0x6D, 0xA4, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6D, 0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF3, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x62, 0xF3, 0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x62, 0xF3, 0x94, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x20, 0xE8, 0x4E, 0xA4, 0x20, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, 0xAC, 0xEB, 0x01, 0x6A, 0x0C, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF3, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x22, 0xF3, 0x8C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x22, 0xF3, 0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x26, 0xF7, 0x4F, 0xA3, 0x04, 0x2A, 0x01, 0x6C, 0x26, 0xF7, 0x8F, 0xC3, 0x20, 0xE8, 0x8F, 0x42, 0x26, 0xF7, 0x8F, 0xC3, 0x20, 0xE8, 0x00, 0x65, 0xA2, 0xDC, 0x20, 0xE8, 0xAC, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, 0x00, 0x30, 0x30, 0xF0, -0x20, 0x6A, 0xAA, 0xF0, 0x00, 0x4A, 0x04, 0x30, +0x20, 0x6A, 0xAA, 0xF0, 0x08, 0x4A, 0x04, 0x30, 0x01, 0xE2, 0x24, 0x67, 0x00, 0x6D, 0x90, 0x67, 0x00, 0xF2, 0x00, 0x6E, 0x00, 0x18, 0xDF, 0xC6, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, 0x48, 0x9A, 0x40, 0xD8, 0x41, 0x99, 0x41, 0xD8, 0x07, 0x97, 0x50, 0x67, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xDB, 0x63, 0x49, 0x62, @@ -42854,7 +43394,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x5C, 0x9A, 0xFF, 0x6D, 0x31, 0xE3, 0x01, 0x4D, 0x04, 0x06, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0x94, -0xC2, 0xF3, 0x74, 0x9B, 0x04, 0x02, 0x6D, 0xE4, +0xC2, 0xF3, 0x6C, 0x9B, 0x04, 0x02, 0x6D, 0xE4, 0x44, 0x04, 0xA0, 0xA2, 0x01, 0x4A, 0x8A, 0xEA, 0xA0, 0xC3, 0x01, 0x4B, 0xFA, 0x61, 0x44, 0x92, 0x00, 0xF1, 0x00, 0x4A, 0x02, 0xF0, 0x00, 0x72, @@ -42866,7 +43406,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xEA, 0x2D, 0xE0, 0x44, 0xD3, 0xFF, 0x6E, 0x04, 0x04, 0x00, 0x6D, 0x01, 0x4E, 0x00, 0x18, 0xDF, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, -0x74, 0x9A, 0x44, 0x04, 0x04, 0x02, 0x6D, 0xE0, +0x6C, 0x9A, 0x44, 0x04, 0x04, 0x02, 0x6D, 0xE0, 0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, 0x8A, 0xEA, 0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0x94, 0xE0, 0xF3, 0x58, 0x9A, 0xFF, 0x6D, @@ -42876,828 +43416,830 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x68, 0x91, 0x28, 0x49, 0x97, 0x48, 0x91, 0x47, 0x90, 0x25, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF1, 0x74, 0x9A, -0x82, 0xF1, 0x14, 0x4A, 0x41, 0x9A, 0x30, 0xF0, -0x20, 0x6D, 0x07, 0x04, 0x82, 0xF1, 0x04, 0x4D, -0x10, 0x6E, 0x05, 0xD3, 0x06, 0xD2, 0x00, 0x18, -0xE4, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF1, -0x40, 0x9A, 0x04, 0xD2, 0x00, 0x18, 0xC2, 0xC7, -0x40, 0x30, 0x22, 0x67, 0x30, 0xF0, 0x20, 0x6A, -0xAA, 0xF0, 0x00, 0x4A, 0x04, 0x30, 0x01, 0xE2, -0x90, 0x67, 0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, -0x00, 0x18, 0xDF, 0xC6, 0x30, 0xF0, 0x20, 0x6A, -0xCA, 0xF4, 0x54, 0xA2, 0x08, 0x2A, 0x30, 0xF0, -0x20, 0x6C, 0xCA, 0xF4, 0x15, 0x4C, 0x00, 0x18, -0xFF, 0xC6, 0x01, 0x72, 0x09, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xCA, 0xF4, 0x55, 0xA2, 0x02, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x6A, 0x01, 0x10, -0x05, 0x6A, 0x40, 0xC0, 0x80, 0x6A, 0x4B, 0xEA, -0x41, 0xC0, 0x01, 0x6A, 0x43, 0xC0, 0x87, 0x40, -0x1F, 0x6A, 0x05, 0x05, 0x44, 0xC0, 0x01, 0x4C, -0x08, 0x6E, 0x00, 0x18, 0xE4, 0xC6, 0x87, 0x40, -0x07, 0x05, 0x09, 0x4C, 0x10, 0x6E, 0x00, 0x18, -0xE4, 0xC6, 0x87, 0x40, 0x04, 0x05, 0x19, 0x4C, -0x04, 0x6E, 0x00, 0x18, 0xE4, 0xC6, 0x91, 0x67, -0x24, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x62, 0xD1, -0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x01, 0x6A, -0x08, 0x63, 0x00, 0xEF, 0xD4, 0x63, 0x57, 0x62, -0x56, 0xD1, 0x55, 0xD0, 0x59, 0xD5, 0x30, 0xF0, -0x20, 0x6D, 0x42, 0xF1, 0x18, 0x4D, 0x28, 0x6E, -0x24, 0x67, 0x04, 0x04, 0x00, 0x18, 0xE4, 0xC6, -0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6E, 0x0E, 0x04, -0x00, 0x6D, 0x01, 0x4E, 0x63, 0xF5, 0x18, 0x48, -0x00, 0x18, 0xDF, 0xC6, 0x26, 0xF7, 0x50, 0xA0, -0x20, 0xF5, 0x0E, 0x2A, 0x59, 0x95, 0x91, 0x67, -0x00, 0x18, 0x85, 0xC7, 0x00, 0xF5, 0x18, 0x22, -0x59, 0x95, 0x91, 0x67, 0x00, 0x18, 0x97, 0xC7, -0x00, 0xF5, 0x12, 0x22, 0x4F, 0xA1, 0x2A, 0x72, -0x20, 0xF4, 0x11, 0x60, 0x2B, 0x5A, 0x25, 0x60, -0x1B, 0x72, 0x00, 0xF3, 0x1A, 0x60, 0x1C, 0x5A, -0x0F, 0x60, 0x03, 0x72, 0x68, 0x60, 0x04, 0x5A, -0x04, 0x60, 0x20, 0xF2, 0x0A, 0x22, 0xE0, 0xF4, -0x14, 0x10, 0x12, 0x72, 0x3F, 0x60, 0x1A, 0x72, -0x80, 0xF0, 0x1B, 0x60, 0xE0, 0xF4, 0x0D, 0x10, -0x23, 0x72, 0x78, 0x67, 0x4F, 0xD3, 0x40, 0xF1, -0x1C, 0x23, 0x24, 0x5A, 0x05, 0x60, 0x1E, 0x72, -0x40, 0xF1, 0x0C, 0x60, 0xE0, 0xF4, 0x01, 0x10, -0x25, 0x72, 0xA0, 0xF1, 0x0F, 0x60, 0x28, 0x72, -0x25, 0x10, 0x51, 0x72, 0x20, 0xF2, 0x14, 0x60, -0x52, 0x5A, 0x12, 0x60, 0x43, 0x72, 0x40, 0xF2, -0x03, 0x60, 0x44, 0x5A, 0x05, 0x60, 0x35, 0x72, -0xC0, 0xF4, 0x1A, 0x60, 0xC0, 0xF4, 0x0D, 0x10, -0x46, 0x72, 0x20, 0xF2, 0x19, 0x60, 0x4A, 0x72, -0x00, 0xF2, 0x0D, 0x60, 0xC0, 0xF4, 0x05, 0x10, -0x5A, 0x72, 0xA0, 0xF0, 0x16, 0x60, 0x5B, 0x5A, -0x05, 0x60, 0x52, 0x72, 0x20, 0xF2, 0x0C, 0x60, -0xA0, 0xF4, 0x1B, 0x10, 0xA4, 0x72, 0x80, 0xF4, -0x16, 0x60, 0xA8, 0x72, 0xE0, 0xF2, 0x09, 0x60, -0xA0, 0xF4, 0x13, 0x10, 0x82, 0x99, 0x4E, 0xD4, -0x00, 0x18, 0x1E, 0xC8, 0x50, 0xD2, 0x00, 0x18, -0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4F, 0xD2, -0x00, 0x18, 0xCC, 0xC7, 0x4E, 0x95, 0x02, 0x67, -0x25, 0x5D, 0x03, 0x61, 0x82, 0x67, 0xDC, 0x4D, -0x02, 0x10, 0x82, 0x67, 0x00, 0x6D, 0x00, 0x18, -0xCA, 0xC7, 0x50, 0x92, 0x01, 0x72, 0x40, 0xF2, -0x1B, 0x60, 0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, -0xCB, 0xC7, 0x4F, 0x94, 0x38, 0x10, 0x00, 0x18, -0xC2, 0xC7, 0x4F, 0xD2, 0x40, 0x30, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0x99, 0xAA, 0xF0, 0x00, 0x4A, +0x00, 0x6A, 0x7D, 0x67, 0x06, 0xD2, 0x52, 0x6A, +0x54, 0xC3, 0x54, 0x6A, 0x55, 0xC3, 0x4B, 0x6A, +0x56, 0xC3, 0x30, 0xF0, 0x20, 0x6D, 0x20, 0x6A, +0x57, 0xC3, 0x07, 0x04, 0x82, 0xF1, 0x04, 0x4D, +0x10, 0x6E, 0x00, 0x18, 0xE4, 0xC6, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF1, 0x40, 0x9A, 0x04, 0xD2, +0x00, 0x18, 0xC2, 0xC7, 0x40, 0x30, 0x22, 0x67, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, 0x08, 0x4A, 0x04, 0x30, 0x01, 0xE2, 0x90, 0x67, 0x00, 0x6D, -0x00, 0xF2, 0x00, 0x6E, 0x4E, 0xD3, 0x00, 0x18, -0xDF, 0xC6, 0x4E, 0x94, 0x08, 0x5C, 0x80, 0xF2, -0x06, 0x61, 0x70, 0x6A, 0x40, 0xC0, 0x44, 0x67, -0xF8, 0x4A, 0x47, 0xC0, 0x05, 0x6A, 0x42, 0xC0, -0x20, 0x6A, 0x4C, 0xC0, 0x4E, 0x92, 0x4F, 0x94, -0xFF, 0xF7, 0x1F, 0x6D, 0x4C, 0xED, 0x00, 0x6E, -0x00, 0x18, 0x62, 0xD1, 0x00, 0x18, 0xC2, 0xC7, -0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, -0xCC, 0xC7, 0x02, 0x67, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0xCA, 0xC7, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0xCB, 0xC7, 0x4E, 0x94, 0x0D, 0x6D, -0x00, 0x6E, 0x00, 0x18, 0x62, 0xD1, 0xE0, 0xF4, -0x1C, 0x10, 0x00, 0x18, 0xC2, 0xC7, 0x4F, 0xD2, +0x00, 0xF2, 0x00, 0x6E, 0x00, 0x18, 0xDF, 0xC6, +0x30, 0xF0, 0x20, 0x6A, 0xCA, 0xF4, 0x5C, 0xA2, +0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6C, 0xCA, 0xF4, +0x1D, 0x4C, 0x00, 0x18, 0xFF, 0xC6, 0x01, 0x72, +0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xCA, 0xF4, +0x5D, 0xA2, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x6A, 0x01, 0x10, 0x05, 0x6A, 0x40, 0xC0, +0x80, 0x6A, 0x4B, 0xEA, 0x41, 0xC0, 0x01, 0x6A, +0x43, 0xC0, 0x87, 0x40, 0x1F, 0x6A, 0x05, 0x05, +0x44, 0xC0, 0x01, 0x4C, 0x08, 0x6E, 0x00, 0x18, +0xE4, 0xC6, 0x87, 0x40, 0x07, 0x05, 0x09, 0x4C, +0x10, 0x6E, 0x00, 0x18, 0xE4, 0xC6, 0x87, 0x40, +0x04, 0x05, 0x19, 0x4C, 0x04, 0x6E, 0x00, 0x18, +0xE4, 0xC6, 0x91, 0x67, 0x24, 0x6D, 0x00, 0x6E, +0x00, 0x18, 0x66, 0xD1, 0x0F, 0x97, 0x0E, 0x91, +0x0D, 0x90, 0x01, 0x6A, 0x08, 0x63, 0x00, 0xEF, +0xD4, 0x63, 0x57, 0x62, 0x56, 0xD1, 0x55, 0xD0, +0x59, 0xD5, 0x30, 0xF0, 0x20, 0x6D, 0x42, 0xF1, +0x18, 0x4D, 0x28, 0x6E, 0x24, 0x67, 0x04, 0x04, +0x00, 0x18, 0xE4, 0xC6, 0x30, 0xF0, 0x20, 0x68, +0xFF, 0x6E, 0x0E, 0x04, 0x00, 0x6D, 0x01, 0x4E, +0x83, 0xF5, 0x00, 0x48, 0x00, 0x18, 0xDF, 0xC6, +0x26, 0xF7, 0x50, 0xA0, 0x20, 0xF5, 0x0E, 0x2A, +0x59, 0x95, 0x91, 0x67, 0x00, 0x18, 0x85, 0xC7, +0x00, 0xF5, 0x18, 0x22, 0x59, 0x95, 0x91, 0x67, +0x00, 0x18, 0x97, 0xC7, 0x00, 0xF5, 0x12, 0x22, +0x4F, 0xA1, 0x2A, 0x72, 0x20, 0xF4, 0x11, 0x60, +0x2B, 0x5A, 0x25, 0x60, 0x1B, 0x72, 0x00, 0xF3, +0x1A, 0x60, 0x1C, 0x5A, 0x0F, 0x60, 0x03, 0x72, +0x68, 0x60, 0x04, 0x5A, 0x04, 0x60, 0x20, 0xF2, +0x0A, 0x22, 0xE0, 0xF4, 0x14, 0x10, 0x12, 0x72, +0x3F, 0x60, 0x1A, 0x72, 0x80, 0xF0, 0x1B, 0x60, +0xE0, 0xF4, 0x0D, 0x10, 0x23, 0x72, 0x78, 0x67, +0x4F, 0xD3, 0x40, 0xF1, 0x1C, 0x23, 0x24, 0x5A, +0x05, 0x60, 0x1E, 0x72, 0x40, 0xF1, 0x0C, 0x60, +0xE0, 0xF4, 0x01, 0x10, 0x25, 0x72, 0xA0, 0xF1, +0x0F, 0x60, 0x28, 0x72, 0x25, 0x10, 0x51, 0x72, +0x20, 0xF2, 0x14, 0x60, 0x52, 0x5A, 0x12, 0x60, +0x43, 0x72, 0x40, 0xF2, 0x03, 0x60, 0x44, 0x5A, +0x05, 0x60, 0x35, 0x72, 0xC0, 0xF4, 0x1A, 0x60, +0xC0, 0xF4, 0x0D, 0x10, 0x46, 0x72, 0x20, 0xF2, +0x19, 0x60, 0x4A, 0x72, 0x00, 0xF2, 0x0D, 0x60, +0xC0, 0xF4, 0x05, 0x10, 0x5A, 0x72, 0xA0, 0xF0, +0x16, 0x60, 0x5B, 0x5A, 0x05, 0x60, 0x52, 0x72, +0x20, 0xF2, 0x0C, 0x60, 0xA0, 0xF4, 0x1B, 0x10, +0xA4, 0x72, 0x80, 0xF4, 0x16, 0x60, 0xA8, 0x72, +0xE0, 0xF2, 0x09, 0x60, 0xA0, 0xF4, 0x13, 0x10, +0x82, 0x99, 0x4E, 0xD4, 0x00, 0x18, 0x1E, 0xC8, +0x50, 0xD2, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, +0x91, 0x67, 0x4F, 0xD2, 0x00, 0x18, 0xCC, 0xC7, +0x4E, 0x95, 0x02, 0x67, 0x25, 0x5D, 0x03, 0x61, +0x82, 0x67, 0xDC, 0x4D, 0x02, 0x10, 0x82, 0x67, +0x00, 0x6D, 0x00, 0x18, 0xCA, 0xC7, 0x50, 0x92, +0x01, 0x72, 0x40, 0xF2, 0x1B, 0x60, 0x90, 0x67, +0x01, 0x6D, 0x00, 0x18, 0xCB, 0xC7, 0x4F, 0x94, +0x38, 0x10, 0x00, 0x18, 0xC2, 0xC7, 0x4F, 0xD2, 0x40, 0x30, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0x99, -0xAA, 0xF0, 0x00, 0x4A, 0x04, 0x30, 0x01, 0xE2, +0xAA, 0xF0, 0x08, 0x4A, 0x04, 0x30, 0x01, 0xE2, 0x90, 0x67, 0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, 0x4E, 0xD3, 0x00, 0x18, 0xDF, 0xC6, 0x4E, 0x94, -0x04, 0x5C, 0x40, 0xF2, 0x08, 0x61, 0x03, 0x6A, -0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xCA, 0xF4, -0x54, 0xA2, 0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6C, -0xCA, 0xF4, 0x15, 0x4C, 0x00, 0x18, 0xFF, 0xC6, -0x01, 0x72, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xCA, 0xF4, 0x75, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, -0x05, 0x22, 0x04, 0x6A, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x6A, 0x02, 0x10, 0x80, 0x6A, 0x4B, 0xEA, -0x42, 0xC0, 0x4F, 0x94, 0x04, 0x6D, 0x00, 0x6E, -0x00, 0x18, 0x62, 0xD1, 0x00, 0x18, 0xC2, 0xC7, -0xA2, 0x67, 0x91, 0x67, 0x4F, 0xD2, 0x00, 0x18, -0xCC, 0xC7, 0x4E, 0x95, 0x02, 0x67, 0x04, 0x75, -0xC0, 0xF1, 0x0E, 0x60, 0x82, 0x67, 0xFC, 0x4D, -0xCD, 0x11, 0x00, 0x18, 0xC2, 0xC7, 0x50, 0xD2, -0x42, 0x99, 0x50, 0x94, 0x00, 0x6D, 0x4E, 0xD2, -0x80, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0x33, -0xAA, 0xF0, 0x00, 0x4A, 0x69, 0xE2, 0x82, 0x67, -0x00, 0xF2, 0x00, 0x6E, 0x51, 0xD2, 0x00, 0x18, -0xDF, 0xC6, 0x76, 0xA1, 0x57, 0xA1, 0x60, 0x33, -0x49, 0xE3, 0x4F, 0xD2, 0x2D, 0x22, 0x46, 0xF7, -0x5C, 0xA0, 0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6C, -0xCA, 0xF4, 0x15, 0x4C, 0x00, 0x18, 0xFF, 0xC6, -0x01, 0x72, 0x16, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xCA, 0xF4, 0x75, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, -0x0A, 0x22, 0x04, 0x6A, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x6A, 0x0C, 0x10, 0x80, 0x6A, 0x4B, 0xEA, -0x7D, 0x67, 0x53, 0xC3, 0x09, 0x10, 0x80, 0x6A, -0x4B, 0xEA, 0x9D, 0x67, 0x53, 0xC4, 0x04, 0x10, -0x80, 0x6A, 0x4B, 0xEA, 0xBD, 0x67, 0x53, 0xC5, -0x51, 0x94, 0x04, 0x05, 0x28, 0x6E, 0x00, 0x18, -0xE4, 0xC6, 0x4F, 0x92, 0x29, 0x5A, 0x02, 0x61, -0x50, 0x94, 0xCE, 0x11, 0x4E, 0x93, 0x4F, 0x94, -0x63, 0xEC, 0x06, 0x60, 0x4F, 0x92, 0xFF, 0xF7, -0x1F, 0x6D, 0x50, 0x94, 0x4C, 0xED, 0x05, 0x10, -0x4E, 0x93, 0x50, 0x94, 0xFF, 0xF7, 0x1F, 0x6D, -0x6C, 0xED, 0x00, 0x6E, 0x00, 0x18, 0x62, 0xD1, -0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, -0x50, 0xD2, 0x00, 0x18, 0xCC, 0xC7, 0x4E, 0x94, -0x4F, 0x95, 0x02, 0x67, 0x83, 0xED, 0x04, 0x60, -0x82, 0x67, 0x4E, 0x92, 0xB7, 0xE2, 0x02, 0x10, -0x82, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xCA, 0xC7, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xCB, 0xC7, -0x50, 0x94, 0x3D, 0x17, 0x00, 0x18, 0xC2, 0xC7, -0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, -0xCC, 0xC7, 0x02, 0x67, 0x82, 0x67, 0xA2, 0x99, -0x2B, 0x17, 0x00, 0x18, 0xC2, 0xC7, 0x50, 0xD2, -0x40, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0x33, -0xAA, 0xF0, 0x00, 0x4A, 0x69, 0xE2, 0x82, 0x67, -0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, 0x4E, 0xD2, -0x00, 0x18, 0xDF, 0xC6, 0x4E, 0x93, 0x08, 0x6A, -0x9D, 0x67, 0x43, 0xC3, 0x30, 0xF1, 0xAC, 0x44, -0x80, 0xA5, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, -0x5C, 0x9A, 0x84, 0xC3, 0x26, 0xF1, 0x60, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF3, 0x80, 0x9C, -0x6D, 0xE2, 0x62, 0x33, 0x66, 0x33, 0x4E, 0x95, -0x8C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x65, 0xC5, -0x26, 0xF1, 0x60, 0x98, 0x1F, 0xF7, 0x00, 0x6C, -0x00, 0x6E, 0x6D, 0xE2, 0x62, 0x33, 0x66, 0x33, -0x8C, 0xEB, 0x62, 0x33, 0x66, 0xC5, 0x26, 0xF1, -0x60, 0x98, 0x69, 0xE2, 0x42, 0x32, 0x46, 0x32, -0x47, 0xC5, 0x7D, 0x67, 0x02, 0x6A, 0x48, 0xC5, -0x30, 0xF1, 0x8C, 0x43, 0x60, 0xA4, 0x9D, 0x67, -0x4A, 0xC5, 0x69, 0xC5, 0x30, 0xF1, 0xAC, 0x44, -0x80, 0xA5, 0x4E, 0x95, 0x8B, 0xC5, 0x50, 0x94, -0x0C, 0x6D, 0x00, 0x18, 0x62, 0xD1, 0x00, 0x18, -0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, -0x00, 0x18, 0xCC, 0xC7, 0xA2, 0x99, 0x02, 0x67, -0x0D, 0x5D, 0xDF, 0xF6, 0x0F, 0x61, 0x82, 0x67, -0xF4, 0x4D, 0xCE, 0x16, 0x00, 0x18, 0xC2, 0xC7, -0x4E, 0xD2, 0x40, 0x30, 0x30, 0xF0, 0x20, 0x6A, -0xAA, 0xF0, 0x00, 0x4A, 0x04, 0x30, 0x01, 0xE2, -0x90, 0x67, 0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, -0x00, 0x18, 0xDF, 0xC6, 0x56, 0xA1, 0x01, 0x6B, -0x6C, 0xEA, 0x4C, 0x2A, 0x51, 0xA1, 0x4A, 0x2A, -0x62, 0x99, 0x08, 0x5B, 0x47, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0x26, 0xF1, 0xA0, 0x9B, 0xC2, 0xF3, -0x9C, 0x9C, 0x30, 0xF0, 0x20, 0x6E, 0xE2, 0xF3, -0xC0, 0x9E, 0xB5, 0xE4, 0xA2, 0x35, 0xA6, 0x35, -0xFF, 0x4D, 0x00, 0xF6, 0xA2, 0x35, 0xA0, 0xC0, -0x26, 0xF1, 0xA0, 0x9B, 0xB5, 0xE4, 0xA2, 0x35, -0xA6, 0x35, 0xFF, 0x4D, 0xCC, 0xED, 0xA2, 0x35, -0xA2, 0x35, 0xA1, 0xC0, 0x26, 0xF1, 0xA0, 0x9B, -0x1F, 0xF7, 0x00, 0x6E, 0xB5, 0xE4, 0xA2, 0x35, -0xA6, 0x35, 0xFF, 0x4D, 0xCC, 0xED, 0xA2, 0x35, -0xA2, 0xC0, 0x26, 0xF1, 0x60, 0x9B, 0x44, 0xC0, -0x45, 0xC0, 0x71, 0xE4, 0x82, 0x34, 0x86, 0x34, -0x02, 0x6B, 0xFF, 0x4C, 0x66, 0xC0, 0x83, 0xC0, -0x47, 0xC0, 0x4E, 0x94, 0x08, 0x6D, 0x00, 0x6E, -0x00, 0x18, 0x62, 0xD1, 0x00, 0x18, 0xC2, 0xC7, -0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, -0xCC, 0xC7, 0xA2, 0x99, 0x02, 0x67, 0x82, 0x67, -0xF8, 0x4D, 0x6E, 0x16, 0x00, 0x6C, 0xA4, 0x67, -0x23, 0x10, 0x02, 0x99, 0x13, 0x58, 0xC0, 0xF1, -0x0C, 0x60, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, -0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, 0xCC, 0xC7, -0x22, 0x67, 0x82, 0x67, 0xB0, 0x67, 0x00, 0x18, -0xCA, 0xC7, 0x91, 0x67, 0x5C, 0x16, 0x00, 0x18, -0xC2, 0xC7, 0x02, 0x67, 0x40, 0x34, 0x30, 0xF0, -0x20, 0x6A, 0xAA, 0xF0, 0x00, 0x4A, 0x84, 0x34, -0x91, 0xE2, 0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, -0x00, 0x18, 0xDF, 0xC6, 0x90, 0x67, 0x00, 0x6D, -0xC5, 0x67, 0x00, 0x18, 0x62, 0xD1, 0xA5, 0x12, -0xA2, 0x99, 0x4F, 0xD5, 0x00, 0x18, 0xC2, 0xC7, -0x00, 0x6D, 0xC5, 0x67, 0x82, 0x67, 0x00, 0x18, -0x62, 0xD1, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, -0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, 0xCC, 0xC7, -0x02, 0x67, 0x82, 0x67, 0x4F, 0x95, 0xA6, 0x12, -0x00, 0x18, 0xC2, 0xC7, 0x4F, 0xD2, 0x42, 0x99, -0x4F, 0x93, 0x00, 0x6D, 0x4E, 0xD2, 0x60, 0x30, -0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, 0x00, 0x4A, -0x04, 0x30, 0x01, 0xE2, 0x90, 0x67, 0x00, 0xF2, -0x00, 0x6E, 0x00, 0x18, 0xDF, 0xC6, 0x6F, 0xA1, -0x43, 0x6A, 0x6E, 0xEA, 0x40, 0x2A, 0x12, 0x6B, -0x61, 0xC0, 0x01, 0x6B, 0x62, 0xC0, 0x63, 0xC0, -0x66, 0xC0, 0x56, 0x6B, 0x14, 0x6C, 0x6B, 0xEB, -0x85, 0xC0, 0x8D, 0xC0, 0x6E, 0xC0, 0x52, 0xC0, -0x53, 0xC0, 0x58, 0xA1, 0x40, 0x72, 0x03, 0x60, -0x51, 0xA1, 0x01, 0x72, 0x03, 0x61, 0x0A, 0x6A, -0x41, 0xC0, 0x05, 0x10, 0x50, 0xA1, 0x02, 0x72, -0x02, 0x61, 0x02, 0x6A, 0x4B, 0xC0, 0x4E, 0x94, -0x15, 0x5C, 0x03, 0x61, 0x4F, 0x94, 0x14, 0x6D, -0x05, 0x10, 0x4E, 0x92, 0x4F, 0x94, 0xFF, 0xF7, -0x1F, 0x6D, 0x4C, 0xED, 0x00, 0x6E, 0x00, 0x18, -0x62, 0xD1, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, -0x91, 0x67, 0x4F, 0xD2, 0x00, 0x18, 0xCC, 0xC7, -0x4E, 0x93, 0x02, 0x67, 0x15, 0x5B, 0x04, 0x61, -0xA3, 0x67, 0x82, 0x67, 0xEC, 0x4D, 0x02, 0x10, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xCA, 0xC7, -0x90, 0x67, 0x00, 0x6D, 0xA4, 0x15, 0x46, 0x73, -0x18, 0x61, 0x4E, 0x94, 0x08, 0x5C, 0x3F, 0x61, -0x04, 0x6A, 0x43, 0xC0, 0x08, 0x6A, 0x47, 0xC0, -0x4F, 0x94, 0x08, 0x6D, 0x00, 0x6E, 0x00, 0x18, -0x62, 0xD1, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, -0x91, 0x67, 0x4F, 0xD2, 0x00, 0x18, 0xCC, 0xC7, -0x4E, 0x95, 0x02, 0x67, 0x82, 0x67, 0xF8, 0x4D, -0xE1, 0x17, 0x4E, 0x95, 0x20, 0x5D, 0x27, 0x61, -0x2E, 0x6A, 0x41, 0xC0, 0x01, 0x6A, 0x42, 0xC0, -0x43, 0xC0, 0x46, 0xC0, 0x02, 0x6A, 0x47, 0xC0, -0x10, 0x6A, 0x57, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x44, 0x9A, 0x04, 0x6B, 0x65, 0xC0, -0x46, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, -0x54, 0x9A, 0x20, 0x6D, 0x00, 0x6E, 0x47, 0xD8, -0x4F, 0x94, 0x00, 0x18, 0x62, 0xD1, 0x00, 0x18, -0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4F, 0xD2, -0x00, 0x18, 0xCC, 0xC7, 0x4E, 0x95, 0x02, 0x67, -0x82, 0x67, 0xE0, 0x4D, 0xB7, 0x17, 0x4F, 0x94, -0x00, 0x6D, 0xC5, 0x67, 0x00, 0x18, 0x62, 0xD1, -0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, -0x4F, 0xD2, 0x00, 0x18, 0xCC, 0xC7, 0x4E, 0x95, -0x82, 0x67, 0x02, 0x67, 0x00, 0x18, 0xCA, 0xC7, -0x4C, 0x15, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, -0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, 0xCC, 0xC7, -0x02, 0x67, 0x82, 0x67, 0x00, 0x6D, 0x00, 0x18, -0xCA, 0xC7, 0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, -0xCB, 0xC7, 0x4E, 0x94, 0x0D, 0x6D, 0x00, 0x6E, -0x00, 0x18, 0x62, 0xD1, 0x00, 0x18, 0x14, 0xD1, -0x74, 0x12, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, -0x58, 0x9A, 0x02, 0x99, 0x4F, 0xD2, 0x52, 0xA1, -0x71, 0xA1, 0x40, 0x32, 0x00, 0xF6, 0x60, 0x33, -0x40, 0x32, 0x49, 0xE3, 0x74, 0xA1, 0x69, 0xE2, -0x73, 0xA1, 0x60, 0x33, 0x69, 0xE2, 0x80, 0xF1, -0x00, 0x4A, 0x40, 0x32, 0x44, 0x32, 0x4E, 0xD2, -0x00, 0xF2, 0x01, 0x58, 0x58, 0x60, 0x4E, 0x92, -0x4F, 0x93, 0x09, 0xE2, 0x43, 0xEB, 0x51, 0xD2, -0x23, 0x61, 0x00, 0x18, 0xC2, 0xC7, 0x50, 0xD2, -0x40, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0x33, -0xAA, 0xF0, 0x00, 0x4A, 0x69, 0xE2, 0x82, 0x67, -0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, 0x4F, 0xD2, -0x00, 0x18, 0xDF, 0xC6, 0x30, 0xF0, 0x20, 0x6A, -0x4E, 0x94, 0x4F, 0x96, 0xE0, 0xF3, 0x5C, 0x9A, -0xB0, 0x67, 0x40, 0xEA, 0x50, 0x94, 0xFF, 0xF7, -0x1F, 0x6D, 0x0C, 0xED, 0x01, 0x6E, 0x00, 0x18, -0x62, 0xD1, 0x80, 0xF0, 0x1F, 0x2A, 0x9B, 0x10, -0x4E, 0x94, 0x4F, 0x95, 0xA3, 0xEC, 0x80, 0xF0, -0x08, 0x60, 0x00, 0x18, 0xC2, 0xC7, 0x52, 0xD2, -0x40, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0x33, -0xAA, 0xF0, 0x00, 0x4A, 0x69, 0xE2, 0x82, 0x67, -0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, 0x50, 0xD2, -0x00, 0x18, 0xDF, 0xC6, 0x4E, 0x93, 0x4F, 0x92, -0x50, 0x96, 0x83, 0x67, 0x6B, 0xE2, 0x53, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x5C, 0x9A, -0x53, 0x95, 0x40, 0xEA, 0x53, 0x92, 0x52, 0x94, -0xFF, 0xF7, 0x1F, 0x6D, 0x4C, 0xED, 0x01, 0x6E, -0x00, 0x18, 0x62, 0xD1, 0x70, 0x22, 0x51, 0x93, -0x4F, 0x94, 0x83, 0xE3, 0x5B, 0x10, 0x4E, 0x92, -0x4F, 0x93, 0x00, 0xF2, 0x00, 0x4A, 0x43, 0xEB, -0x51, 0xD2, 0x27, 0x61, 0x00, 0x18, 0xC2, 0xC7, -0x52, 0xD2, 0x40, 0x33, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0x33, 0xAA, 0xF0, 0x00, 0x4A, 0x69, 0xE2, -0x82, 0x67, 0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, -0x50, 0xD2, 0x00, 0x18, 0xDF, 0xC6, 0x30, 0xF0, -0x20, 0x6A, 0x4E, 0x94, 0x50, 0x96, 0xE0, 0xF3, -0x5C, 0x9A, 0x00, 0xF2, 0x00, 0x6D, 0x40, 0xEA, -0x52, 0x94, 0x00, 0xF2, 0x00, 0x6D, 0x01, 0x6E, -0x00, 0x18, 0x62, 0xD1, 0x44, 0x22, 0x1F, 0xF6, -0x00, 0x48, 0x44, 0x20, 0x51, 0x94, 0x4E, 0xD4, -0x77, 0x17, 0x4E, 0x95, 0x4F, 0x92, 0x43, 0xED, -0x2C, 0x60, 0x00, 0x18, 0xC2, 0xC7, 0x51, 0xD2, -0x40, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0x33, -0xAA, 0xF0, 0x00, 0x4A, 0x69, 0xE2, 0x82, 0x67, -0x00, 0x6D, 0x00, 0xF2, 0x00, 0x6E, 0x50, 0xD2, -0x00, 0x18, 0xDF, 0xC6, 0x4E, 0x94, 0x4F, 0x93, -0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x5C, 0x9A, -0x50, 0x96, 0x8F, 0xE3, 0xA3, 0x67, 0x52, 0xD3, -0x40, 0xEA, 0x52, 0x92, 0x51, 0x94, 0xFF, 0xF7, -0x1F, 0x6D, 0x4C, 0xED, 0x01, 0x6E, 0x00, 0x18, -0x62, 0xD1, 0x15, 0x22, 0x4E, 0x93, 0x4F, 0x94, -0x01, 0xE3, 0x83, 0xE0, 0x01, 0x6D, 0x4E, 0xD5, -0x14, 0x10, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, -0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, 0xCC, 0xC7, -0x22, 0x67, 0x82, 0x67, 0xB0, 0x67, 0x00, 0x18, -0xCA, 0xC7, 0x91, 0x67, 0x06, 0x11, 0x00, 0x6A, -0x4E, 0xD2, 0x03, 0x10, 0x01, 0x6B, 0x00, 0x68, -0x4E, 0xD3, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, -0x91, 0x67, 0x4F, 0xD2, 0x00, 0x18, 0xCC, 0xC7, -0x4E, 0x94, 0x22, 0x67, 0x06, 0x24, 0x82, 0x67, -0xB0, 0x67, 0x00, 0x18, 0xCA, 0xC7, 0x91, 0x67, -0x9C, 0x16, 0x82, 0x67, 0x00, 0x6D, 0x00, 0x18, -0xCA, 0xC7, 0x91, 0x67, 0x3B, 0x14, 0x76, 0xA1, -0x57, 0xA1, 0x82, 0x99, 0x60, 0x33, 0x49, 0xE3, -0x4E, 0xD2, 0x4E, 0x95, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xED, 0xA0, 0x32, 0x44, 0x32, 0x8E, 0xEA, -0x4E, 0xD5, 0xC0, 0xF0, 0x02, 0x2A, 0x4C, 0xA1, -0xA0, 0xF0, 0x1F, 0x2A, 0x52, 0xA1, 0x71, 0xA1, -0x40, 0x32, 0x40, 0x32, 0x00, 0xF6, 0x60, 0x33, -0x4D, 0xE3, 0x54, 0xA1, 0x4D, 0xE3, 0x53, 0xA1, -0x40, 0x32, 0x4D, 0xE3, 0x80, 0xF1, 0x40, 0x43, -0x40, 0x35, 0xA4, 0x35, 0x91, 0xE5, 0x51, 0xD5, -0x26, 0xF1, 0xA0, 0x98, 0x83, 0xED, 0xA0, 0xF0, -0x08, 0x61, 0x07, 0x68, 0x6C, 0xE8, 0x05, 0x28, -0x4E, 0x94, 0x51, 0x95, 0x00, 0x18, 0xDD, 0xC7, -0x62, 0x10, 0x0B, 0xE2, 0x40, 0x32, 0x44, 0x32, -0x50, 0xD2, 0x00, 0x6A, 0x4F, 0xD2, 0xFF, 0x6E, -0x0E, 0x04, 0x00, 0x6D, 0x01, 0x4E, 0x00, 0x18, -0xDF, 0xC6, 0x4F, 0x93, 0x50, 0x95, 0x30, 0xF0, -0x20, 0x6A, 0xE0, 0xF3, 0x5C, 0x9A, 0xB1, 0xE3, -0xFF, 0x6D, 0x01, 0x4D, 0x0E, 0x06, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x4F, 0x94, 0xC2, 0xF3, -0x78, 0x9B, 0x0E, 0x02, 0x6D, 0xE4, 0x4E, 0x04, -0xA0, 0xA2, 0x01, 0x4A, 0x8A, 0xEA, 0xA0, 0xC3, -0x01, 0x4B, 0xFA, 0x61, 0x4F, 0x95, 0x00, 0xF1, -0x00, 0x4D, 0x02, 0xF0, 0x00, 0x75, 0x4F, 0xD5, -0xDA, 0x61, 0x4E, 0x92, 0x50, 0x95, 0x51, 0xE0, -0x00, 0x18, 0xDD, 0xC7, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF3, 0x40, 0x9A, 0x00, 0x30, 0x04, 0x30, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x5C, 0x9A, 0x02, 0x6C, 0x40, 0xEA, 0x4F, 0xD0, -0x00, 0x68, 0xFF, 0x6E, 0x0E, 0x04, 0x00, 0x6D, -0x01, 0x4E, 0x00, 0x18, 0xDF, 0xC6, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF3, 0x78, 0x9A, 0x4E, 0x04, -0x0E, 0x02, 0x6D, 0xE0, 0xA0, 0xA3, 0x01, 0x4B, -0xA0, 0xC2, 0x01, 0x4A, 0x8A, 0xEA, 0xFA, 0x61, -0x50, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, -0x58, 0x9A, 0xFF, 0x6D, 0x71, 0xE0, 0x01, 0x4D, -0x0E, 0x06, 0x40, 0xEA, 0x4F, 0x94, 0x00, 0xF1, -0x00, 0x48, 0x83, 0xE8, 0xDE, 0x61, 0x51, 0x93, -0x4E, 0x95, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x30, 0xF0, 0x20, 0x68, 0xAA, 0xF4, -0x14, 0x48, 0x26, 0xF7, 0x74, 0xDA, 0x01, 0x6B, -0x90, 0x67, 0x26, 0xF7, 0xB8, 0xDA, 0x26, 0xF7, -0x70, 0xC2, 0x00, 0x6D, 0x20, 0x6E, 0x00, 0x18, -0xDF, 0xC6, 0x90, 0x67, 0xB1, 0x67, 0x20, 0x6E, -0x00, 0x18, 0xE4, 0xC6, 0xCA, 0x10, 0x00, 0x18, -0xC2, 0xC7, 0x4F, 0xD2, 0x82, 0x99, 0x40, 0x30, -0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, 0x00, 0x4A, -0x04, 0x30, 0x01, 0xE2, 0x4E, 0xD4, 0x00, 0x6D, -0x90, 0x67, 0x00, 0xF2, 0x00, 0x6E, 0x00, 0x18, -0xDF, 0xC6, 0x06, 0x6A, 0x41, 0xC0, 0x25, 0x6A, -0x44, 0xC0, 0x01, 0x6A, 0x4B, 0xEA, 0x45, 0xC0, -0x01, 0x6A, 0x46, 0xC0, 0x4E, 0x92, 0xFF, 0xF7, -0x1F, 0x6D, 0x4F, 0x94, 0x4C, 0xED, 0x00, 0x6E, -0x0D, 0x16, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, -0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, 0xCC, 0xC7, -0x02, 0x67, 0x82, 0x67, 0xA2, 0x99, 0x0A, 0x10, +0x08, 0x5C, 0x80, 0xF2, 0x06, 0x61, 0x70, 0x6A, +0x40, 0xC0, 0x44, 0x67, 0xF8, 0x4A, 0x47, 0xC0, +0x05, 0x6A, 0x42, 0xC0, 0x20, 0x6A, 0x4C, 0xC0, +0x4E, 0x92, 0x4F, 0x94, 0xFF, 0xF7, 0x1F, 0x6D, +0x4C, 0xED, 0x00, 0x6E, 0x00, 0x18, 0x66, 0xD1, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, 0xCC, 0xC7, 0x02, 0x67, -0x82, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xCA, 0xC7, -0x90, 0x67, 0x01, 0x6D, 0x9F, 0xF3, 0x08, 0x10, -0x26, 0xF7, 0x78, 0x98, 0x4E, 0xD3, 0x15, 0x2B, -0x00, 0x18, 0xC2, 0xC7, 0x30, 0xF0, 0x20, 0x6C, -0xAA, 0xF4, 0x14, 0x4C, 0xA2, 0x67, 0x4F, 0xD2, -0x00, 0x18, 0xCC, 0xC7, 0x26, 0xF7, 0xB8, 0x98, -0x22, 0x67, 0x82, 0x67, 0xA0, 0x35, 0xA4, 0x35, -0x00, 0x18, 0xCA, 0xC7, 0x91, 0x67, 0x01, 0x6D, -0x62, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, -0x40, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x5C, 0x9A, 0x02, 0x6C, 0x40, 0xEA, -0x59, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, 0x00, 0x6C, -0x4C, 0xEB, 0x4E, 0xD3, 0x26, 0xF7, 0x14, 0x98, -0x4F, 0xD4, 0x2A, 0x10, 0x4E, 0x95, 0x00, 0xF1, -0x00, 0x5D, 0x19, 0x61, 0x4F, 0x93, 0x30, 0xF0, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xCA, 0xC7, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xCB, 0xC7, +0x4E, 0x94, 0x0D, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0x66, 0xD1, 0xE0, 0xF4, 0x1C, 0x10, 0x00, 0x18, +0xC2, 0xC7, 0x4F, 0xD2, 0x40, 0x30, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0x99, 0xAA, 0xF0, 0x08, 0x4A, +0x04, 0x30, 0x01, 0xE2, 0x90, 0x67, 0x00, 0x6D, +0x00, 0xF2, 0x00, 0x6E, 0x4E, 0xD3, 0x00, 0x18, +0xDF, 0xC6, 0x4E, 0x94, 0x04, 0x5C, 0x40, 0xF2, +0x08, 0x61, 0x03, 0x6A, 0x40, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0xCA, 0xF4, 0x5C, 0xA2, 0x08, 0x2A, +0x30, 0xF0, 0x20, 0x6C, 0xCA, 0xF4, 0x1D, 0x4C, +0x00, 0x18, 0xFF, 0xC6, 0x01, 0x72, 0x0C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xCA, 0xF4, 0x7D, 0xA2, +0x02, 0x6A, 0x6C, 0xEA, 0x05, 0x22, 0x04, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x6A, 0x02, 0x10, +0x80, 0x6A, 0x4B, 0xEA, 0x42, 0xC0, 0x4F, 0x94, +0x04, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x66, 0xD1, +0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, +0x4F, 0xD2, 0x00, 0x18, 0xCC, 0xC7, 0x4E, 0x95, +0x02, 0x67, 0x04, 0x75, 0xC0, 0xF1, 0x0E, 0x60, +0x82, 0x67, 0xFC, 0x4D, 0xCD, 0x11, 0x00, 0x18, +0xC2, 0xC7, 0x50, 0xD2, 0x42, 0x99, 0x50, 0x94, +0x00, 0x6D, 0x4E, 0xD2, 0x80, 0x33, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x33, 0xAA, 0xF0, 0x08, 0x4A, +0x69, 0xE2, 0x82, 0x67, 0x00, 0xF2, 0x00, 0x6E, +0x51, 0xD2, 0x00, 0x18, 0xDF, 0xC6, 0x76, 0xA1, +0x57, 0xA1, 0x60, 0x33, 0x49, 0xE3, 0x4F, 0xD2, +0x2D, 0x22, 0x46, 0xF7, 0x5C, 0xA0, 0x08, 0x2A, +0x30, 0xF0, 0x20, 0x6C, 0xCA, 0xF4, 0x1D, 0x4C, +0x00, 0x18, 0xFF, 0xC6, 0x01, 0x72, 0x16, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xCA, 0xF4, 0x7D, 0xA2, +0x02, 0x6A, 0x6C, 0xEA, 0x0A, 0x22, 0x04, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x6A, 0x0C, 0x10, +0x80, 0x6A, 0x4B, 0xEA, 0x7D, 0x67, 0x53, 0xC3, +0x09, 0x10, 0x80, 0x6A, 0x4B, 0xEA, 0x9D, 0x67, +0x53, 0xC4, 0x04, 0x10, 0x80, 0x6A, 0x4B, 0xEA, +0xBD, 0x67, 0x53, 0xC5, 0x51, 0x94, 0x04, 0x05, +0x28, 0x6E, 0x00, 0x18, 0xE4, 0xC6, 0x4F, 0x92, +0x29, 0x5A, 0x02, 0x61, 0x50, 0x94, 0xCE, 0x11, +0x4E, 0x93, 0x4F, 0x94, 0x63, 0xEC, 0x06, 0x60, +0x4F, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, 0x50, 0x94, +0x4C, 0xED, 0x05, 0x10, 0x4E, 0x93, 0x50, 0x94, +0xFF, 0xF7, 0x1F, 0x6D, 0x6C, 0xED, 0x00, 0x6E, +0x00, 0x18, 0x66, 0xD1, 0x00, 0x18, 0xC2, 0xC7, +0xA2, 0x67, 0x91, 0x67, 0x50, 0xD2, 0x00, 0x18, +0xCC, 0xC7, 0x4E, 0x94, 0x4F, 0x95, 0x02, 0x67, +0x83, 0xED, 0x04, 0x60, 0x82, 0x67, 0x4E, 0x92, +0xB7, 0xE2, 0x02, 0x10, 0x82, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xCA, 0xC7, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xCB, 0xC7, 0x50, 0x94, 0x3D, 0x17, +0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, +0x4E, 0xD2, 0x00, 0x18, 0xCC, 0xC7, 0x02, 0x67, +0x82, 0x67, 0xA2, 0x99, 0x2B, 0x17, 0x00, 0x18, +0xC2, 0xC7, 0x50, 0xD2, 0x40, 0x33, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x33, 0xAA, 0xF0, 0x08, 0x4A, +0x69, 0xE2, 0x82, 0x67, 0x00, 0x6D, 0x00, 0xF2, +0x00, 0x6E, 0x4E, 0xD2, 0x00, 0x18, 0xDF, 0xC6, +0x4E, 0x93, 0x08, 0x6A, 0x9D, 0x67, 0x43, 0xC3, +0x30, 0xF1, 0xAC, 0x44, 0x80, 0xA5, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF3, 0x54, 0x9A, 0x84, 0xC3, +0x26, 0xF1, 0x60, 0x98, 0x30, 0xF0, 0x20, 0x6C, +0xC2, 0xF3, 0x98, 0x9C, 0x6D, 0xE2, 0x62, 0x33, +0x66, 0x33, 0x4E, 0x95, 0x8C, 0xEB, 0x62, 0x33, +0x62, 0x33, 0x65, 0xC5, 0x26, 0xF1, 0x60, 0x98, +0x1F, 0xF7, 0x00, 0x6C, 0x00, 0x6E, 0x6D, 0xE2, +0x62, 0x33, 0x66, 0x33, 0x8C, 0xEB, 0x62, 0x33, +0x66, 0xC5, 0x26, 0xF1, 0x60, 0x98, 0x69, 0xE2, +0x42, 0x32, 0x46, 0x32, 0x47, 0xC5, 0x7D, 0x67, +0x02, 0x6A, 0x48, 0xC5, 0x30, 0xF1, 0x8C, 0x43, +0x60, 0xA4, 0x9D, 0x67, 0x4A, 0xC5, 0x69, 0xC5, +0x30, 0xF1, 0xAC, 0x44, 0x80, 0xA5, 0x4E, 0x95, +0x8B, 0xC5, 0x50, 0x94, 0x0C, 0x6D, 0x00, 0x18, +0x66, 0xD1, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, +0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, 0xCC, 0xC7, +0xA2, 0x99, 0x02, 0x67, 0x0D, 0x5D, 0xDF, 0xF6, +0x0F, 0x61, 0x82, 0x67, 0xF4, 0x4D, 0xCE, 0x16, +0x00, 0x18, 0xC2, 0xC7, 0x4E, 0xD2, 0x40, 0x30, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, 0x08, 0x4A, +0x04, 0x30, 0x01, 0xE2, 0x90, 0x67, 0x00, 0x6D, +0x00, 0xF2, 0x00, 0x6E, 0x00, 0x18, 0xDF, 0xC6, +0x56, 0xA1, 0x01, 0x6B, 0x6C, 0xEA, 0x4C, 0x2A, +0x51, 0xA1, 0x4A, 0x2A, 0x62, 0x99, 0x08, 0x5B, +0x47, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x00, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0x26, 0xF1, +0xA0, 0x9B, 0xC2, 0xF3, 0x94, 0x9C, 0x30, 0xF0, +0x20, 0x6E, 0xC2, 0xF3, 0xD8, 0x9E, 0xB5, 0xE4, +0xA2, 0x35, 0xA6, 0x35, 0xFF, 0x4D, 0x00, 0xF6, +0xA2, 0x35, 0xA0, 0xC0, 0x26, 0xF1, 0xA0, 0x9B, +0xB5, 0xE4, 0xA2, 0x35, 0xA6, 0x35, 0xFF, 0x4D, +0xCC, 0xED, 0xA2, 0x35, 0xA2, 0x35, 0xA1, 0xC0, +0x26, 0xF1, 0xA0, 0x9B, 0x1F, 0xF7, 0x00, 0x6E, +0xB5, 0xE4, 0xA2, 0x35, 0xA6, 0x35, 0xFF, 0x4D, +0xCC, 0xED, 0xA2, 0x35, 0xA2, 0xC0, 0x26, 0xF1, +0x60, 0x9B, 0x44, 0xC0, 0x45, 0xC0, 0x71, 0xE4, +0x82, 0x34, 0x86, 0x34, 0x02, 0x6B, 0xFF, 0x4C, +0x66, 0xC0, 0x83, 0xC0, 0x47, 0xC0, 0x4E, 0x94, +0x08, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x66, 0xD1, +0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, +0x4E, 0xD2, 0x00, 0x18, 0xCC, 0xC7, 0xA2, 0x99, +0x02, 0x67, 0x82, 0x67, 0xF8, 0x4D, 0x6E, 0x16, +0x00, 0x6C, 0xA4, 0x67, 0x23, 0x10, 0x02, 0x99, +0x13, 0x58, 0xC0, 0xF1, 0x0C, 0x60, 0x00, 0x18, +0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, +0x00, 0x18, 0xCC, 0xC7, 0x22, 0x67, 0x82, 0x67, +0xB0, 0x67, 0x00, 0x18, 0xCA, 0xC7, 0x91, 0x67, +0x5C, 0x16, 0x00, 0x18, 0xC2, 0xC7, 0x02, 0x67, +0x40, 0x34, 0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF0, +0x08, 0x4A, 0x84, 0x34, 0x91, 0xE2, 0x00, 0x6D, +0x00, 0xF2, 0x00, 0x6E, 0x00, 0x18, 0xDF, 0xC6, +0x90, 0x67, 0x00, 0x6D, 0xC5, 0x67, 0x00, 0x18, +0x66, 0xD1, 0xA5, 0x12, 0xA2, 0x99, 0x4F, 0xD5, +0x00, 0x18, 0xC2, 0xC7, 0x00, 0x6D, 0xC5, 0x67, +0x82, 0x67, 0x00, 0x18, 0x66, 0xD1, 0x00, 0x18, +0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, +0x00, 0x18, 0xCC, 0xC7, 0x02, 0x67, 0x82, 0x67, +0x4F, 0x95, 0xA6, 0x12, 0x00, 0x18, 0xC2, 0xC7, +0x4F, 0xD2, 0x42, 0x99, 0x4F, 0x93, 0x00, 0x6D, +0x4E, 0xD2, 0x60, 0x30, 0x30, 0xF0, 0x20, 0x6A, +0xAA, 0xF0, 0x08, 0x4A, 0x04, 0x30, 0x01, 0xE2, +0x90, 0x67, 0x00, 0xF2, 0x00, 0x6E, 0x00, 0x18, +0xDF, 0xC6, 0x6F, 0xA1, 0x43, 0x6A, 0x6E, 0xEA, +0x40, 0x2A, 0x12, 0x6B, 0x61, 0xC0, 0x01, 0x6B, +0x62, 0xC0, 0x63, 0xC0, 0x66, 0xC0, 0x56, 0x6B, +0x14, 0x6C, 0x6B, 0xEB, 0x85, 0xC0, 0x8D, 0xC0, +0x6E, 0xC0, 0x52, 0xC0, 0x53, 0xC0, 0x58, 0xA1, +0x40, 0x72, 0x03, 0x60, 0x51, 0xA1, 0x01, 0x72, +0x03, 0x61, 0x0A, 0x6A, 0x41, 0xC0, 0x05, 0x10, +0x50, 0xA1, 0x02, 0x72, 0x02, 0x61, 0x02, 0x6A, +0x4B, 0xC0, 0x4E, 0x94, 0x15, 0x5C, 0x03, 0x61, +0x4F, 0x94, 0x14, 0x6D, 0x05, 0x10, 0x4E, 0x92, +0x4F, 0x94, 0xFF, 0xF7, 0x1F, 0x6D, 0x4C, 0xED, +0x00, 0x6E, 0x00, 0x18, 0x66, 0xD1, 0x00, 0x18, +0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4F, 0xD2, +0x00, 0x18, 0xCC, 0xC7, 0x4E, 0x93, 0x02, 0x67, +0x15, 0x5B, 0x04, 0x61, 0xA3, 0x67, 0x82, 0x67, +0xEC, 0x4D, 0x02, 0x10, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xCA, 0xC7, 0x90, 0x67, 0x00, 0x6D, +0xA4, 0x15, 0x46, 0x73, 0x18, 0x61, 0x4E, 0x94, +0x08, 0x5C, 0x3F, 0x61, 0x04, 0x6A, 0x43, 0xC0, +0x08, 0x6A, 0x47, 0xC0, 0x4F, 0x94, 0x08, 0x6D, +0x00, 0x6E, 0x00, 0x18, 0x66, 0xD1, 0x00, 0x18, +0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4F, 0xD2, +0x00, 0x18, 0xCC, 0xC7, 0x4E, 0x95, 0x02, 0x67, +0x82, 0x67, 0xF8, 0x4D, 0xE1, 0x17, 0x4E, 0x95, +0x20, 0x5D, 0x27, 0x61, 0x2E, 0x6A, 0x41, 0xC0, +0x01, 0x6A, 0x42, 0xC0, 0x43, 0xC0, 0x46, 0xC0, +0x02, 0x6A, 0x47, 0xC0, 0x10, 0x6A, 0x57, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, 0x5C, 0x9A, +0x04, 0x6B, 0x65, 0xC0, 0x46, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x4C, 0x9A, 0x20, 0x6D, +0x00, 0x6E, 0x47, 0xD8, 0x4F, 0x94, 0x00, 0x18, +0x66, 0xD1, 0x00, 0x18, 0xC2, 0xC7, 0xA2, 0x67, +0x91, 0x67, 0x4F, 0xD2, 0x00, 0x18, 0xCC, 0xC7, +0x4E, 0x95, 0x02, 0x67, 0x82, 0x67, 0xE0, 0x4D, +0xB7, 0x17, 0x4F, 0x94, 0x00, 0x6D, 0xC5, 0x67, +0x00, 0x18, 0x66, 0xD1, 0x00, 0x18, 0xC2, 0xC7, +0xA2, 0x67, 0x91, 0x67, 0x4F, 0xD2, 0x00, 0x18, +0xCC, 0xC7, 0x4E, 0x95, 0x82, 0x67, 0x02, 0x67, +0x00, 0x18, 0xCA, 0xC7, 0x4C, 0x15, 0x00, 0x18, +0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, +0x00, 0x18, 0xCC, 0xC7, 0x02, 0x67, 0x82, 0x67, +0x00, 0x6D, 0x00, 0x18, 0xCA, 0xC7, 0x90, 0x67, +0x00, 0x6D, 0x00, 0x18, 0xCB, 0xC7, 0x4E, 0x94, +0x0D, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x66, 0xD1, +0x00, 0x18, 0x18, 0xD1, 0x74, 0x12, 0x30, 0xF0, +0x20, 0x6A, 0xA9, 0xF6, 0x40, 0x9A, 0x02, 0x99, +0x4F, 0xD2, 0x52, 0xA1, 0x71, 0xA1, 0x40, 0x32, +0x00, 0xF6, 0x60, 0x33, 0x40, 0x32, 0x49, 0xE3, +0x74, 0xA1, 0x69, 0xE2, 0x73, 0xA1, 0x60, 0x33, +0x69, 0xE2, 0x80, 0xF1, 0x00, 0x4A, 0x40, 0x32, +0x44, 0x32, 0x4E, 0xD2, 0x00, 0xF2, 0x01, 0x58, +0x58, 0x60, 0x4E, 0x92, 0x4F, 0x93, 0x09, 0xE2, +0x43, 0xEB, 0x51, 0xD2, 0x23, 0x61, 0x00, 0x18, +0xC2, 0xC7, 0x50, 0xD2, 0x40, 0x33, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x33, 0xAA, 0xF0, 0x08, 0x4A, +0x69, 0xE2, 0x82, 0x67, 0x00, 0x6D, 0x00, 0xF2, +0x00, 0x6E, 0x4F, 0xD2, 0x00, 0x18, 0xDF, 0xC6, +0x30, 0xF0, 0x20, 0x6A, 0x4E, 0x94, 0x4F, 0x96, +0xE0, 0xF3, 0x5C, 0x9A, 0xB0, 0x67, 0x40, 0xEA, +0x50, 0x94, 0xFF, 0xF7, 0x1F, 0x6D, 0x0C, 0xED, +0x01, 0x6E, 0x00, 0x18, 0x66, 0xD1, 0x80, 0xF0, +0x1F, 0x2A, 0x9B, 0x10, 0x4E, 0x94, 0x4F, 0x95, +0xA3, 0xEC, 0x80, 0xF0, 0x08, 0x60, 0x00, 0x18, +0xC2, 0xC7, 0x52, 0xD2, 0x40, 0x33, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x33, 0xAA, 0xF0, 0x08, 0x4A, +0x69, 0xE2, 0x82, 0x67, 0x00, 0x6D, 0x00, 0xF2, +0x00, 0x6E, 0x50, 0xD2, 0x00, 0x18, 0xDF, 0xC6, +0x4E, 0x93, 0x4F, 0x92, 0x50, 0x96, 0x83, 0x67, +0x6B, 0xE2, 0x53, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x5C, 0x9A, 0x53, 0x95, 0x40, 0xEA, +0x53, 0x92, 0x52, 0x94, 0xFF, 0xF7, 0x1F, 0x6D, +0x4C, 0xED, 0x01, 0x6E, 0x00, 0x18, 0x66, 0xD1, +0x70, 0x22, 0x51, 0x93, 0x4F, 0x94, 0x83, 0xE3, +0x5B, 0x10, 0x4E, 0x92, 0x4F, 0x93, 0x00, 0xF2, +0x00, 0x4A, 0x43, 0xEB, 0x51, 0xD2, 0x27, 0x61, +0x00, 0x18, 0xC2, 0xC7, 0x52, 0xD2, 0x40, 0x33, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0x33, 0xAA, 0xF0, +0x08, 0x4A, 0x69, 0xE2, 0x82, 0x67, 0x00, 0x6D, +0x00, 0xF2, 0x00, 0x6E, 0x50, 0xD2, 0x00, 0x18, +0xDF, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0x4E, 0x94, +0x50, 0x96, 0xE0, 0xF3, 0x5C, 0x9A, 0x00, 0xF2, +0x00, 0x6D, 0x40, 0xEA, 0x52, 0x94, 0x00, 0xF2, +0x00, 0x6D, 0x01, 0x6E, 0x00, 0x18, 0x66, 0xD1, +0x44, 0x22, 0x1F, 0xF6, 0x00, 0x48, 0x44, 0x20, +0x51, 0x94, 0x4E, 0xD4, 0x77, 0x17, 0x4E, 0x95, +0x4F, 0x92, 0x43, 0xED, 0x2C, 0x60, 0x00, 0x18, +0xC2, 0xC7, 0x51, 0xD2, 0x40, 0x33, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0x33, 0xAA, 0xF0, 0x08, 0x4A, +0x69, 0xE2, 0x82, 0x67, 0x00, 0x6D, 0x00, 0xF2, +0x00, 0x6E, 0x50, 0xD2, 0x00, 0x18, 0xDF, 0xC6, +0x4E, 0x94, 0x4F, 0x93, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF3, 0x5C, 0x9A, 0x50, 0x96, 0x8F, 0xE3, +0xA3, 0x67, 0x52, 0xD3, 0x40, 0xEA, 0x52, 0x92, +0x51, 0x94, 0xFF, 0xF7, 0x1F, 0x6D, 0x4C, 0xED, +0x01, 0x6E, 0x00, 0x18, 0x66, 0xD1, 0x15, 0x22, +0x4E, 0x93, 0x4F, 0x94, 0x01, 0xE3, 0x83, 0xE0, +0x01, 0x6D, 0x4E, 0xD5, 0x14, 0x10, 0x00, 0x18, +0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, +0x00, 0x18, 0xCC, 0xC7, 0x22, 0x67, 0x82, 0x67, +0xB0, 0x67, 0x00, 0x18, 0xCA, 0xC7, 0x91, 0x67, +0x06, 0x11, 0x00, 0x6A, 0x4E, 0xD2, 0x03, 0x10, +0x01, 0x6B, 0x00, 0x68, 0x4E, 0xD3, 0x00, 0x18, +0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4F, 0xD2, +0x00, 0x18, 0xCC, 0xC7, 0x4E, 0x94, 0x22, 0x67, +0x06, 0x24, 0x82, 0x67, 0xB0, 0x67, 0x00, 0x18, +0xCA, 0xC7, 0x91, 0x67, 0x9C, 0x16, 0x82, 0x67, +0x00, 0x6D, 0x00, 0x18, 0xCA, 0xC7, 0x91, 0x67, +0x3B, 0x14, 0x76, 0xA1, 0x57, 0xA1, 0x82, 0x99, +0x60, 0x33, 0x49, 0xE3, 0x4E, 0xD2, 0x4E, 0x95, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, 0xA0, 0x32, +0x44, 0x32, 0x8E, 0xEA, 0x4E, 0xD5, 0xC0, 0xF0, +0x02, 0x2A, 0x4C, 0xA1, 0xA0, 0xF0, 0x1F, 0x2A, +0x52, 0xA1, 0x71, 0xA1, 0x40, 0x32, 0x40, 0x32, +0x00, 0xF6, 0x60, 0x33, 0x4D, 0xE3, 0x54, 0xA1, +0x4D, 0xE3, 0x53, 0xA1, 0x40, 0x32, 0x4D, 0xE3, +0x80, 0xF1, 0x40, 0x43, 0x40, 0x35, 0xA4, 0x35, +0x91, 0xE5, 0x51, 0xD5, 0x26, 0xF1, 0xA0, 0x98, +0x83, 0xED, 0xA0, 0xF0, 0x08, 0x61, 0x07, 0x68, +0x6C, 0xE8, 0x05, 0x28, 0x4E, 0x94, 0x51, 0x95, +0x00, 0x18, 0xDD, 0xC7, 0x62, 0x10, 0x0B, 0xE2, +0x40, 0x32, 0x44, 0x32, 0x50, 0xD2, 0x00, 0x6A, +0x4F, 0xD2, 0xFF, 0x6E, 0x0E, 0x04, 0x00, 0x6D, +0x01, 0x4E, 0x00, 0x18, 0xDF, 0xC6, 0x4F, 0x93, +0x50, 0x95, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x5C, 0x9A, 0xB1, 0xE3, 0xFF, 0x6D, 0x01, 0x4D, +0x0E, 0x06, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x4F, 0x94, 0xC2, 0xF3, 0x70, 0x9B, 0x0E, 0x02, +0x6D, 0xE4, 0x4E, 0x04, 0xA0, 0xA2, 0x01, 0x4A, +0x8A, 0xEA, 0xA0, 0xC3, 0x01, 0x4B, 0xFA, 0x61, +0x4F, 0x95, 0x00, 0xF1, 0x00, 0x4D, 0x02, 0xF0, +0x00, 0x75, 0x4F, 0xD5, 0xDA, 0x61, 0x4E, 0x92, +0x50, 0x95, 0x51, 0xE0, 0x00, 0x18, 0xDD, 0xC7, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x40, 0x9A, +0x00, 0x30, 0x04, 0x30, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x5C, 0x9A, 0x02, 0x6C, +0x40, 0xEA, 0x4F, 0xD0, 0x00, 0x68, 0xFF, 0x6E, +0x0E, 0x04, 0x00, 0x6D, 0x01, 0x4E, 0x00, 0x18, +0xDF, 0xC6, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, +0x70, 0x9A, 0x4E, 0x04, 0x0E, 0x02, 0x6D, 0xE0, +0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, +0x8A, 0xEA, 0xFA, 0x61, 0x50, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x58, 0x9A, 0xFF, 0x6D, -0x90, 0x67, 0x01, 0x4D, 0x79, 0xE1, 0x40, 0xEA, -0x4E, 0x94, 0x4F, 0x95, 0xFF, 0xF7, 0x1F, 0x6A, -0x80, 0x4C, 0x80, 0x4C, 0x00, 0xF1, 0x00, 0x4D, -0x4C, 0xEC, 0x4C, 0xED, 0x4E, 0xD4, 0x4F, 0xD5, -0x00, 0xF1, 0x00, 0x48, 0x0D, 0x10, 0x4F, 0x93, -0x30, 0xF0, 0x20, 0x6A, 0x4E, 0x95, 0xE0, 0xF3, -0x58, 0x9A, 0x90, 0x67, 0x79, 0xE1, 0x40, 0xEA, -0x4E, 0x94, 0x00, 0x6D, 0x4E, 0xD5, 0x81, 0xE0, -0x4E, 0x92, 0xD4, 0x2A, 0x30, 0xF0, 0x20, 0x68, -0x63, 0xF5, 0x18, 0x48, 0x26, 0xF7, 0x54, 0x98, -0x59, 0x93, 0x49, 0xE3, 0x26, 0xF7, 0x54, 0xD8, -0x26, 0xF7, 0x58, 0x98, 0xFF, 0x4A, 0x26, 0xF7, -0x58, 0xD8, 0x23, 0x2A, 0x00, 0x18, 0xC2, 0xC7, -0x30, 0xF0, 0x20, 0x6C, 0xAA, 0xF4, 0x14, 0x4C, +0x71, 0xE0, 0x01, 0x4D, 0x0E, 0x06, 0x40, 0xEA, +0x4F, 0x94, 0x00, 0xF1, 0x00, 0x48, 0x83, 0xE8, +0xDE, 0x61, 0x51, 0x93, 0x4E, 0x95, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x30, 0xF0, +0x20, 0x68, 0xAA, 0xF4, 0x1C, 0x48, 0x26, 0xF7, +0x74, 0xDA, 0x01, 0x6B, 0x90, 0x67, 0x26, 0xF7, +0xB8, 0xDA, 0x26, 0xF7, 0x70, 0xC2, 0x00, 0x6D, +0x20, 0x6E, 0x00, 0x18, 0xDF, 0xC6, 0x90, 0x67, +0xB1, 0x67, 0x20, 0x6E, 0x00, 0x18, 0xE4, 0xC6, +0xCA, 0x10, 0x00, 0x18, 0xC2, 0xC7, 0x4F, 0xD2, +0x82, 0x99, 0x40, 0x30, 0x30, 0xF0, 0x20, 0x6A, +0xAA, 0xF0, 0x08, 0x4A, 0x04, 0x30, 0x01, 0xE2, +0x4E, 0xD4, 0x00, 0x6D, 0x90, 0x67, 0x00, 0xF2, +0x00, 0x6E, 0x00, 0x18, 0xDF, 0xC6, 0x06, 0x6A, +0x41, 0xC0, 0x25, 0x6A, 0x44, 0xC0, 0x01, 0x6A, +0x4B, 0xEA, 0x45, 0xC0, 0x01, 0x6A, 0x46, 0xC0, +0x4E, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, 0x4F, 0x94, +0x4C, 0xED, 0x00, 0x6E, 0x0D, 0x16, 0x00, 0x18, +0xC2, 0xC7, 0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, +0x00, 0x18, 0xCC, 0xC7, 0x02, 0x67, 0x82, 0x67, +0xA2, 0x99, 0x0A, 0x10, 0x00, 0x18, 0xC2, 0xC7, +0xA2, 0x67, 0x91, 0x67, 0x4E, 0xD2, 0x00, 0x18, +0xCC, 0xC7, 0x02, 0x67, 0x82, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xCA, 0xC7, 0x90, 0x67, 0x01, 0x6D, +0x9F, 0xF3, 0x08, 0x10, 0x26, 0xF7, 0x78, 0x98, +0x4E, 0xD3, 0x15, 0x2B, 0x00, 0x18, 0xC2, 0xC7, +0x30, 0xF0, 0x20, 0x6C, 0xAA, 0xF4, 0x1C, 0x4C, 0xA2, 0x67, 0x4F, 0xD2, 0x00, 0x18, 0xCC, 0xC7, -0x22, 0x67, 0x82, 0x67, 0x00, 0x6D, 0x00, 0x18, -0xCA, 0xC7, 0x91, 0x67, 0x00, 0x6D, 0x00, 0x18, -0xCB, 0xC7, 0x4F, 0x94, 0x0D, 0x6D, 0x00, 0x6E, -0x00, 0x18, 0x62, 0xD1, 0x9D, 0x67, 0x30, 0xF1, -0xA8, 0x44, 0x80, 0xA5, 0x4E, 0x95, 0x26, 0xF7, -0x90, 0xC0, 0x26, 0xF7, 0xB4, 0xD8, 0x26, 0xF7, -0xB8, 0xD8, 0x57, 0x97, 0x56, 0x91, 0x55, 0x90, -0x2C, 0x63, 0x00, 0xEF, 0x06, 0x2C, 0x64, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x60, 0xDA, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0x40, 0x9A, 0x32, 0x72, 0x2A, 0x60, 0x33, 0x5A, -0x0C, 0x60, 0x14, 0x72, 0x2E, 0x60, 0x15, 0x5A, -0x03, 0x60, 0x0A, 0x72, 0x12, 0x60, 0x20, 0xE8, -0x19, 0x72, 0x17, 0x60, 0x28, 0x72, 0x25, 0x60, -0x20, 0xE8, 0x64, 0x72, 0x2A, 0x60, 0x65, 0x5A, -0x03, 0x60, 0x50, 0x72, 0x1E, 0x60, 0x20, 0xE8, -0x78, 0x72, 0x2B, 0x60, 0xC8, 0x72, 0x31, 0x60, -0x20, 0xE8, 0x02, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x64, 0xDA, 0xE0, 0xF7, 0x1E, 0x4B, -0x31, 0x10, 0x09, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x64, 0xDA, 0xE4, 0xF3, 0x17, 0x4B, -0x29, 0x10, 0x11, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x64, 0xDA, 0xE8, 0xF3, 0x0F, 0x4B, -0x21, 0x10, 0x0D, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x64, 0xDA, 0x06, 0xF4, 0x08, 0x4B, -0x19, 0x10, 0x22, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x64, 0xDA, 0x11, 0xF0, 0x00, 0x6B, -0x11, 0x10, 0x28, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x64, 0xDA, 0x14, 0xF0, 0x00, 0x6B, -0x09, 0x10, 0x43, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x68, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x40, 0x9A, +0x26, 0xF7, 0xB8, 0x98, 0x22, 0x67, 0x82, 0x67, +0xA0, 0x35, 0xA4, 0x35, 0x00, 0x18, 0xCA, 0xC7, +0x91, 0x67, 0x01, 0x6D, 0x62, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF3, 0x40, 0x9A, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x5C, 0x9A, +0x02, 0x6C, 0x40, 0xEA, 0x59, 0x93, 0xFF, 0xF7, +0x1F, 0x6A, 0x00, 0x6C, 0x4C, 0xEB, 0x4E, 0xD3, +0x26, 0xF7, 0x14, 0x98, 0x4F, 0xD4, 0x2A, 0x10, +0x4E, 0x95, 0x00, 0xF1, 0x00, 0x5D, 0x19, 0x61, +0x4F, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, +0x58, 0x9A, 0xFF, 0x6D, 0x90, 0x67, 0x01, 0x4D, +0x79, 0xE1, 0x40, 0xEA, 0x4E, 0x94, 0x4F, 0x95, +0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0x4C, 0x80, 0x4C, +0x00, 0xF1, 0x00, 0x4D, 0x4C, 0xEC, 0x4C, 0xED, +0x4E, 0xD4, 0x4F, 0xD5, 0x00, 0xF1, 0x00, 0x48, +0x0D, 0x10, 0x4F, 0x93, 0x30, 0xF0, 0x20, 0x6A, +0x4E, 0x95, 0xE0, 0xF3, 0x58, 0x9A, 0x90, 0x67, +0x79, 0xE1, 0x40, 0xEA, 0x4E, 0x94, 0x00, 0x6D, +0x4E, 0xD5, 0x81, 0xE0, 0x4E, 0x92, 0xD4, 0x2A, +0x30, 0xF0, 0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, +0x26, 0xF7, 0x54, 0x98, 0x59, 0x93, 0x49, 0xE3, +0x26, 0xF7, 0x54, 0xD8, 0x26, 0xF7, 0x58, 0x98, +0xFF, 0x4A, 0x26, 0xF7, 0x58, 0xD8, 0x23, 0x2A, +0x00, 0x18, 0xC2, 0xC7, 0x30, 0xF0, 0x20, 0x6C, +0xAA, 0xF4, 0x1C, 0x4C, 0xA2, 0x67, 0x4F, 0xD2, +0x00, 0x18, 0xCC, 0xC7, 0x22, 0x67, 0x82, 0x67, +0x00, 0x6D, 0x00, 0x18, 0xCA, 0xC7, 0x91, 0x67, +0x00, 0x6D, 0x00, 0x18, 0xCB, 0xC7, 0x4F, 0x94, +0x0D, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x66, 0xD1, +0x9D, 0x67, 0x30, 0xF1, 0xA8, 0x44, 0x80, 0xA5, +0x4E, 0x95, 0x26, 0xF7, 0x90, 0xC0, 0x26, 0xF7, +0xB4, 0xD8, 0x26, 0xF7, 0xB8, 0xD8, 0x57, 0x97, +0x56, 0x91, 0x55, 0x90, 0x2C, 0x63, 0x00, 0xEF, +0x06, 0x2C, 0x64, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF5, 0x64, 0xDA, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF5, 0x84, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF5, 0x44, 0x9A, 0x32, 0x72, +0x2A, 0x60, 0x33, 0x5A, 0x0C, 0x60, 0x14, 0x72, +0x2E, 0x60, 0x15, 0x5A, 0x03, 0x60, 0x0A, 0x72, +0x12, 0x60, 0x20, 0xE8, 0x19, 0x72, 0x17, 0x60, +0x28, 0x72, 0x25, 0x60, 0x20, 0xE8, 0x64, 0x72, +0x2A, 0x60, 0x65, 0x5A, 0x03, 0x60, 0x50, 0x72, +0x1E, 0x60, 0x20, 0xE8, 0x78, 0x72, 0x2B, 0x60, +0xC8, 0x72, 0x31, 0x60, 0x20, 0xE8, 0x02, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x68, 0xDA, +0xE0, 0xF7, 0x1E, 0x4B, 0x31, 0x10, 0x09, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x68, 0xDA, +0xE4, 0xF3, 0x17, 0x4B, 0x29, 0x10, 0x11, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x68, 0xDA, +0xE8, 0xF3, 0x0F, 0x4B, 0x21, 0x10, 0x0D, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x68, 0xDA, +0x06, 0xF4, 0x08, 0x4B, 0x19, 0x10, 0x22, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x68, 0xDA, +0x11, 0xF0, 0x00, 0x6B, 0x11, 0x10, 0x28, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x68, 0xDA, +0x14, 0xF0, 0x00, 0x6B, 0x09, 0x10, 0x43, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x68, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x6C, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x48, 0x9A, 0xFF, 0x63, 0x58, 0xEC, -0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, -0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x44, 0x9A, 0xFF, 0x63, 0x58, 0xEC, -0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, -0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xF8, 0xC6, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xED, 0x00, 0x18, 0xDF, 0xC6, -0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, -0x04, 0x67, 0x4C, 0xEE, 0x00, 0x18, 0xE4, 0xC6, -0x50, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x00, 0x68, 0x20, 0x10, 0xE0, 0xF3, -0x08, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF3, 0x68, 0x9A, 0x80, 0x6C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, -0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x00, 0x6A, -0x13, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x4C, 0x9A, 0x60, 0xA2, -0x01, 0x6A, 0x6C, 0xEA, 0xD8, 0x2A, 0x01, 0x6A, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF6, -0x70, 0x9B, 0x02, 0xF6, 0x94, 0x9C, 0x6D, 0xE5, -0x91, 0xE5, 0x00, 0x6E, 0xC0, 0xDB, 0x04, 0x4B, -0x8A, 0xEB, 0xFB, 0x61, 0xE7, 0xF7, 0x1F, 0x6B, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, -0x58, 0x9A, 0x10, 0x6C, 0x4D, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x50, 0x9A, 0x49, 0xE5, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, -0x58, 0x9A, 0xFF, 0x6B, 0x55, 0xE5, 0x40, 0xA5, -0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC5, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x6D, 0xA2, 0x08, 0xD4, 0x30, 0xF0, -0x20, 0x69, 0x61, 0xC5, 0x01, 0x4B, 0x03, 0xF5, -0x6D, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, -0x90, 0x9B, 0x08, 0x93, 0x80, 0xF2, 0x4C, 0x99, -0x02, 0x6E, 0x91, 0xE3, 0x05, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x9C, 0x9B, -0x08, 0x93, 0xCE, 0xA0, 0x80, 0xF2, 0x4C, 0x99, -0xA2, 0x40, 0x91, 0xE3, 0x40, 0xEA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x24, 0x67, 0x00, 0x18, 0x97, 0xCB, 0x00, 0x6B, -0x46, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, -0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x6E, 0xFF, 0x6F, -0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, -0x54, 0x9A, 0x10, 0x6C, 0x8B, 0xEC, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xA1, 0x40, 0x22, 0xF6, -0x40, 0x9A, 0x65, 0x67, 0xCC, 0xEB, 0x60, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x44, 0x9A, -0x60, 0xA2, 0xFA, 0x65, 0xA2, 0x32, 0xEC, 0xEB, -0x8C, 0xEB, 0x42, 0x32, 0x6D, 0xEA, 0xEC, 0xEA, -0x7F, 0x67, 0x40, 0xC3, 0x87, 0xA9, 0x02, 0x4C, -0xCC, 0xEC, 0x00, 0x18, 0xB0, 0xCB, 0x87, 0x40, -0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0xC7, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x4C, 0x9A, -0x01, 0x6B, 0x80, 0xF2, 0x16, 0x6C, 0x60, 0xC2, -0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x48, 0x9A, 0x01, 0x6D, 0x00, 0x6E, -0x04, 0xF7, 0x10, 0x6F, 0x40, 0xEA, 0x4B, 0xEB, -0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x43, 0x67, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x63, 0xF5, -0x18, 0x48, 0x20, 0xF6, 0x92, 0xA0, 0x20, 0xF6, -0x53, 0xA0, 0x8E, 0xEA, 0x37, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF6, 0x48, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF3, 0x64, 0x9B, 0x40, 0x9A, -0x6C, 0xEA, 0x2C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x90, 0x34, 0xA3, 0xF6, 0x0A, 0x4A, 0x91, 0xE2, -0x00, 0x18, 0xDC, 0xCB, 0x1D, 0x22, 0x20, 0xF6, -0x52, 0xA0, 0x01, 0x4A, 0x20, 0xF6, 0x52, 0xC0, -0x20, 0xF6, 0x72, 0xA0, 0x20, 0xF6, 0x53, 0xA0, -0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, -0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x20, 0xF6, 0x72, 0xA2, 0x50, 0x6C, 0x8E, 0xEB, -0x09, 0x2B, 0x20, 0xF6, 0x72, 0xC2, 0x06, 0x10, -0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, -0xA0, 0xF0, 0x44, 0xD8, 0x05, 0x97, 0x04, 0x90, +0x03, 0xF5, 0x44, 0x9A, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x4C, 0x9A, +0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, +0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, +0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x48, 0x9A, +0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, +0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, +0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xF8, 0xC6, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xED, +0x00, 0x18, 0xDF, 0xC6, 0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x63, 0xF5, -0x18, 0x48, 0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, -0xA4, 0x67, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, -0x20, 0xF6, 0x52, 0xA8, 0x09, 0xF7, 0x00, 0x72, -0x07, 0x60, 0x20, 0xF6, 0x52, 0xA0, 0x20, 0xF6, -0x93, 0xA0, 0xFF, 0x4A, 0x8E, 0xEA, 0x13, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, -0x00, 0xF2, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, -0x23, 0xF3, 0x70, 0xDA, 0x18, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, -0x4C, 0x9A, 0xA3, 0xF6, 0x0A, 0x4B, 0x90, 0x34, -0x91, 0xE3, 0x10, 0x6E, 0x40, 0xEA, 0x20, 0xF6, -0x53, 0xA0, 0x50, 0x6B, 0x01, 0x4A, 0x20, 0xF6, -0x53, 0xC0, 0x20, 0xF6, 0x53, 0xA0, 0x6E, 0xEA, -0x02, 0x2A, 0x20, 0xF6, 0x53, 0xC0, 0x05, 0x97, +0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xEE, +0x00, 0x18, 0xE4, 0xC6, 0x50, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF5, 0x4C, 0xA3, 0xFF, 0x6F, -0xE0, 0xF0, 0xC7, 0xA5, 0x41, 0xC5, 0x43, 0xA5, -0x03, 0xF5, 0x6C, 0xA3, 0x03, 0x4A, 0xEC, 0xEA, -0x09, 0x10, 0xED, 0x42, 0xFF, 0x68, 0x0C, 0xEF, -0xFD, 0xE5, 0x64, 0xC7, 0xE6, 0xA7, 0x03, 0x4F, -0xE9, 0xE2, 0x0C, 0xEA, 0xEF, 0x46, 0xE2, 0xEA, -0xF4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0x6C, 0xA2, 0x01, 0x4B, 0x03, 0xF5, 0x6C, 0xC2, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x70, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0x71, 0xE4, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x24, 0x67, 0x00, 0x18, -0x97, 0xCB, 0x00, 0x6B, 0x3C, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF3, 0x44, 0x9A, 0x0F, 0x6C, -0xFF, 0xF7, 0x1F, 0x6B, 0x00, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF3, 0x54, 0x9A, 0x4C, 0xE8, -0xA1, 0x40, 0xA2, 0x32, 0x42, 0x32, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, 0x80, 0x9C, -0xAC, 0xEB, 0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0x64, 0x9B, 0x40, 0xC3, 0xE0, 0xF0, -0x87, 0xA1, 0x00, 0x18, 0xB0, 0xCB, 0x87, 0x40, -0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0x50, 0xCC, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x4C, 0x9A, -0x01, 0x6B, 0x80, 0xF2, 0x16, 0x6C, 0x60, 0xC2, -0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x48, 0x9A, 0x01, 0x6D, 0x00, 0x6E, -0x04, 0xF7, 0x10, 0x6F, 0x40, 0xEA, 0x4B, 0xEB, -0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x43, 0x67, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x63, 0xF5, -0x18, 0x48, 0xA2, 0xF4, 0x77, 0xA0, 0xA2, 0xF4, -0x58, 0xA0, 0x6E, 0xEA, 0x3E, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF6, 0x48, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xE2, 0xF3, 0x84, 0x9C, 0x40, 0x9A, -0x8C, 0xEA, 0x33, 0x2A, 0xE8, 0x6A, 0x58, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF3, 0x0C, 0x4A, -0x12, 0xEB, 0x71, 0xE2, 0x00, 0x18, 0x69, 0xCC, -0x07, 0x2A, 0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, -0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x21, 0x10, -0xA2, 0xF4, 0x57, 0xA0, 0x10, 0x6B, 0x01, 0x4A, -0xA2, 0xF4, 0x57, 0xC0, 0xA2, 0xF4, 0x57, 0xA0, -0x6E, 0xEA, 0x02, 0x2A, 0xA2, 0xF4, 0x57, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0xA2, 0xF4, 0x97, 0xA2, 0xA2, 0xF4, 0x78, 0xA2, -0x8E, 0xEB, 0x07, 0x23, 0xA0, 0xF0, 0x64, 0x9A, -0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, -0x04, 0x10, 0xA2, 0xF4, 0x96, 0xC2, 0xA2, 0xF4, -0x74, 0xCA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0xA2, 0xF4, 0x77, 0xA2, -0xA4, 0x67, 0x04, 0x2B, 0xA2, 0xF4, 0x58, 0xA2, -0x0F, 0x72, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x68, -0x63, 0xF5, 0x18, 0x48, 0xA2, 0xF4, 0x57, 0xA0, -0xA2, 0xF4, 0x78, 0xA0, 0xFF, 0x4A, 0x6E, 0xEA, -0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF5, -0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, +0x20, 0x10, 0xE0, 0xF3, 0x08, 0x70, 0x13, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, +0x80, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, -0x70, 0xDA, 0xAC, 0x10, 0x23, 0xA5, 0xFF, 0xF7, -0x1F, 0x6A, 0x04, 0x49, 0x4C, 0xE9, 0xA2, 0xF4, -0x54, 0xA8, 0x22, 0x2A, 0xE8, 0x6A, 0x58, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0xF3, 0x0C, 0x4C, -0xFF, 0x6E, 0x2C, 0xEE, 0x12, 0xEB, 0x71, 0xE4, -0x40, 0xEA, 0xA2, 0xF4, 0x58, 0xA0, 0xA2, 0xF4, -0x77, 0xA0, 0xA2, 0xF4, 0x34, 0xC8, 0x4E, 0xEB, -0x79, 0x2B, 0x01, 0x4A, 0xA2, 0xF4, 0x58, 0xC0, -0xA2, 0xF4, 0x58, 0xA0, 0x10, 0x6B, 0x6E, 0xEA, -0x71, 0x2A, 0xA2, 0xF4, 0x58, 0xC0, 0x6E, 0x10, -0x62, 0xA5, 0x39, 0x2B, 0x4D, 0xE1, 0xE3, 0x53, -0x36, 0x60, 0xA2, 0xF4, 0x76, 0xA0, 0xE8, 0x6C, -0x98, 0xEB, 0x12, 0xEB, 0x0D, 0xE3, 0x20, 0xF6, -0x96, 0xA3, 0x2D, 0x2C, 0x20, 0xF6, 0x97, 0xA3, -0xFF, 0x6E, 0xFC, 0x4A, 0xFF, 0x4C, 0x20, 0xF6, -0x97, 0xC3, 0xA2, 0xF4, 0x74, 0xA8, 0xA2, 0xF4, -0x96, 0xA0, 0xCC, 0xEA, 0xFF, 0x4B, 0xA2, 0xF4, -0x74, 0xC8, 0xE8, 0x6B, 0x78, 0xEC, 0x2C, 0xEE, -0x12, 0xEC, 0x91, 0xE0, 0x51, 0xE4, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x20, 0xF6, -0x17, 0x4C, 0x40, 0xEA, 0xA2, 0xF4, 0x56, 0xA0, -0xE8, 0x6B, 0x78, 0xEA, 0x12, 0xEA, 0x09, 0xE2, -0x20, 0xF6, 0x77, 0xA2, 0x6D, 0xE1, 0x20, 0xF6, -0x77, 0xC2, 0xA2, 0xF4, 0x54, 0xA8, 0x45, 0xE1, -0xA2, 0xF4, 0x34, 0xC8, 0x33, 0x10, 0x30, 0xF0, -0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, 0xA2, 0xF4, -0x98, 0xA0, 0xE8, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x58, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0xA4, 0xF3, 0x0C, 0x4B, 0xFF, 0x6E, -0x2C, 0xEE, 0x12, 0xEC, 0x91, 0xE3, 0x40, 0xEA, -0xA2, 0xF4, 0x58, 0xA0, 0x10, 0x6B, 0xA2, 0xF4, -0x34, 0xC8, 0x01, 0x4A, 0xA2, 0xF4, 0x58, 0xC0, -0xA2, 0xF4, 0x58, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, -0xA2, 0xF4, 0x58, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0xA2, 0xF4, 0x76, 0xA2, -0x10, 0x6C, 0x01, 0x4B, 0xA2, 0xF4, 0x76, 0xC2, -0xA2, 0xF4, 0x76, 0xA2, 0x8E, 0xEB, 0x02, 0x2B, -0xA2, 0xF4, 0x76, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0xA2, 0xF4, 0x96, 0xA2, -0xE8, 0x6B, 0x78, 0xEC, 0xA2, 0xF4, 0x94, 0xAA, -0x12, 0xEB, 0x4D, 0xE3, 0x00, 0xF7, 0x9B, 0xC3, +0x70, 0xDA, 0x00, 0x6A, 0x13, 0x10, 0xFF, 0xF7, +0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, +0x54, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0xD8, 0x2A, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6C, 0xE2, 0xF5, 0x78, 0x9B, 0xE2, 0xF5, +0x9C, 0x9C, 0x6D, 0xE5, 0x91, 0xE5, 0x00, 0x6E, +0xC0, 0xDB, 0x04, 0x4B, 0x8A, 0xEB, 0xFB, 0x61, +0xE7, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x50, 0x9A, 0x10, 0x6C, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, +0x58, 0x9A, 0x49, 0xE5, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF6, 0x40, 0x9A, 0xFF, 0x6B, +0x55, 0xE5, 0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, +0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x71, 0xA2, +0x08, 0xD4, 0x30, 0xF0, 0x20, 0x69, 0x61, 0xC5, +0x01, 0x4B, 0x03, 0xF5, 0x71, 0xC2, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF5, 0x98, 0x9B, 0x08, 0x93, +0x80, 0xF2, 0x4C, 0x99, 0x02, 0x6E, 0x91, 0xE3, +0x05, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x02, 0xF6, 0x84, 0x9B, 0x08, 0x93, 0xCE, 0xA0, +0x80, 0xF2, 0x4C, 0x99, 0xA2, 0x40, 0x91, 0xE3, +0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x24, 0x67, 0x00, 0x18, +0x98, 0xCB, 0x00, 0x6B, 0x46, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF3, 0x5C, 0x9A, 0xFF, 0xF7, +0x1F, 0x6E, 0xFF, 0x6F, 0x00, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF3, 0x4C, 0x9A, 0x10, 0x6C, +0x8B, 0xEC, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xA1, 0x40, 0x02, 0xF6, 0x48, 0x9A, 0x65, 0x67, +0xCC, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF6, 0x4C, 0x9A, 0x60, 0xA2, 0xFA, 0x65, +0xA2, 0x32, 0xEC, 0xEB, 0x8C, 0xEB, 0x42, 0x32, +0x6D, 0xEA, 0xEC, 0xEA, 0x7F, 0x67, 0x40, 0xC3, +0x87, 0xA9, 0x02, 0x4C, 0xCC, 0xEC, 0x00, 0x18, +0xB1, 0xCB, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, +0x00, 0x18, 0xC8, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF5, 0x54, 0x9A, 0x01, 0x6B, 0x80, 0xF2, +0x16, 0x6C, 0x60, 0xC2, 0x06, 0x02, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, +0x01, 0x6D, 0x00, 0x6E, 0x04, 0xF7, 0x10, 0x6F, +0x40, 0xEA, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, +0x62, 0x33, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x43, 0x67, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0x20, 0xF6, +0x92, 0xA0, 0x20, 0xF6, 0x53, 0xA0, 0x8E, 0xEA, +0x37, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, +0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF3, +0x7C, 0x9B, 0x40, 0x9A, 0x6C, 0xEA, 0x2C, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x90, 0x34, 0xA3, 0xF6, +0x12, 0x4A, 0x91, 0xE2, 0x00, 0x18, 0xDD, 0xCB, +0x1D, 0x22, 0x20, 0xF6, 0x52, 0xA0, 0x01, 0x4A, +0x20, 0xF6, 0x52, 0xC0, 0x20, 0xF6, 0x72, 0xA0, +0x20, 0xF6, 0x53, 0xA0, 0x6E, 0xEA, 0x06, 0x22, +0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, +0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF5, 0x00, 0x4A, 0x20, 0xF6, 0x72, 0xA2, +0x50, 0x6C, 0x8E, 0xEB, 0x09, 0x2B, 0x20, 0xF6, +0x72, 0xC2, 0x06, 0x10, 0xA0, 0xF0, 0x44, 0x98, +0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0xA0, 0xF0, +0x44, 0x98, 0x04, 0x6B, 0xA4, 0x67, 0x6D, 0xEA, +0xA0, 0xF0, 0x44, 0xD8, 0x20, 0xF6, 0x52, 0xA8, +0x09, 0xF7, 0x00, 0x72, 0x07, 0x60, 0x20, 0xF6, +0x52, 0xA0, 0x20, 0xF6, 0x93, 0xA0, 0xFF, 0x4A, +0x8E, 0xEA, 0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF3, 0x60, 0x9A, 0x00, 0xF2, 0x00, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, +0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, +0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9A, 0xA3, 0xF6, +0x12, 0x4B, 0x90, 0x34, 0x91, 0xE3, 0x10, 0x6E, +0x40, 0xEA, 0x20, 0xF6, 0x53, 0xA0, 0x50, 0x6B, +0x01, 0x4A, 0x20, 0xF6, 0x53, 0xC0, 0x20, 0xF6, +0x53, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, 0x20, 0xF6, +0x53, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, +0x50, 0xA3, 0xFF, 0x6F, 0xE0, 0xF0, 0xC7, 0xA5, +0x41, 0xC5, 0x43, 0xA5, 0x03, 0xF5, 0x70, 0xA3, +0x03, 0x4A, 0xEC, 0xEA, 0x09, 0x10, 0xED, 0x42, +0xFF, 0x68, 0x0C, 0xEF, 0xFD, 0xE5, 0x64, 0xC7, +0xE6, 0xA7, 0x03, 0x4F, 0xE9, 0xE2, 0x0C, 0xEA, +0xEF, 0x46, 0xE2, 0xEA, 0xF4, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF5, 0x70, 0xA2, 0x01, 0x4B, +0x03, 0xF5, 0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF5, 0x78, 0x9B, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x71, 0xE4, 0x40, 0xEA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x24, 0x67, 0x00, 0x18, 0x98, 0xCB, 0x00, 0x6B, +0x3C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, +0x5C, 0x9A, 0x0F, 0x6C, 0xFF, 0xF7, 0x1F, 0x6B, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, +0x4C, 0x9A, 0x4C, 0xE8, 0xA1, 0x40, 0xA2, 0x32, +0x42, 0x32, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x02, 0xF6, 0x88, 0x9C, 0xAC, 0xEB, 0x60, 0xCC, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x6C, 0x9B, +0x40, 0xC3, 0xE0, 0xF0, 0x87, 0xA1, 0x00, 0x18, +0xB1, 0xCB, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, +0x00, 0x18, 0x51, 0xCC, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF5, 0x54, 0x9A, 0x01, 0x6B, 0x80, 0xF2, +0x16, 0x6C, 0x60, 0xC2, 0x06, 0x02, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, +0x01, 0x6D, 0x00, 0x6E, 0x04, 0xF7, 0x10, 0x6F, +0x40, 0xEA, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, +0x62, 0x33, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x43, 0x67, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0xA2, 0xF4, +0x77, 0xA0, 0xA2, 0xF4, 0x58, 0xA0, 0x6E, 0xEA, +0x3E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, +0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF3, +0x9C, 0x9C, 0x40, 0x9A, 0x8C, 0xEA, 0x33, 0x2A, +0xE8, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF3, 0x14, 0x4A, 0x12, 0xEB, 0x71, 0xE2, +0x00, 0x18, 0x6A, 0xCC, 0x07, 0x2A, 0xA0, 0xF0, +0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, +0x44, 0xD8, 0x21, 0x10, 0xA2, 0xF4, 0x57, 0xA0, +0x10, 0x6B, 0x01, 0x4A, 0xA2, 0xF4, 0x57, 0xC0, +0xA2, 0xF4, 0x57, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, +0xA2, 0xF4, 0x57, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF5, 0x00, 0x4A, 0xA2, 0xF4, 0x97, 0xA2, +0xA2, 0xF4, 0x78, 0xA2, 0x8E, 0xEB, 0x07, 0x23, 0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x8C, 0xEA, 0x82, 0xF6, 0x7C, 0x9B, 0x30, 0xF0, -0x20, 0x6C, 0xA2, 0xF6, 0x80, 0x9C, 0xCC, 0xEB, -0x40, 0xF6, 0xA0, 0x35, 0x8D, 0xEB, 0x1F, 0xF7, -0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, -0xAD, 0xEB, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0xE2, 0xF2, 0x9C, 0x9C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF3, 0x80, 0x9C, -0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x1F, 0xF7, -0x00, 0x6C, 0x4C, 0xEC, 0xFF, 0x6B, 0x02, 0xF0, -0x00, 0x74, 0xAC, 0xEB, 0x01, 0x60, 0x05, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF2, 0x9C, 0x9C, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF3, -0x80, 0x9C, 0x91, 0xE2, 0x00, 0x6D, 0xA0, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF6, 0x9C, 0x9C, -0xD4, 0x36, 0x40, 0xF6, 0x60, 0x33, 0x8C, 0xEE, -0x6D, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, -0x60, 0x9B, 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6B, -0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, -0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, -0x7C, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF3, 0x60, 0x9B, 0x69, 0xE2, 0xC0, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x0F, 0xF5, 0x00, 0x6B, -0x78, 0xEE, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF6, 0x9C, 0x9C, -0x40, 0xF6, 0xA0, 0x35, 0x12, 0xEB, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF6, 0x80, 0x9C, -0xAD, 0xEB, 0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, -0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0xA0, 0xF0, 0x64, 0xDA, 0x04, 0x10, 0xA2, 0xF4, +0x96, 0xC2, 0xA2, 0xF4, 0x74, 0xCA, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0xA2, 0xF4, 0x77, 0xA2, 0xA4, 0x67, 0x04, 0x2B, +0xA2, 0xF4, 0x58, 0xA2, 0x0F, 0x72, 0x0B, 0x60, +0x30, 0xF0, 0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, +0xA2, 0xF4, 0x57, 0xA0, 0xA2, 0xF4, 0x78, 0xA0, +0xFF, 0x4A, 0x6E, 0xEA, 0x15, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x02, 0xF5, 0x8C, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, +0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0xAC, 0x10, +0x23, 0xA5, 0xFF, 0xF7, 0x1F, 0x6A, 0x04, 0x49, +0x4C, 0xE9, 0xA2, 0xF4, 0x54, 0xA8, 0x22, 0x2A, +0xE8, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0xF3, 0x14, 0x4C, 0xFF, 0x6E, 0x2C, 0xEE, +0x12, 0xEB, 0x71, 0xE4, 0x40, 0xEA, 0xA2, 0xF4, +0x58, 0xA0, 0xA2, 0xF4, 0x77, 0xA0, 0xA2, 0xF4, +0x34, 0xC8, 0x4E, 0xEB, 0x79, 0x2B, 0x01, 0x4A, +0xA2, 0xF4, 0x58, 0xC0, 0xA2, 0xF4, 0x58, 0xA0, +0x10, 0x6B, 0x6E, 0xEA, 0x71, 0x2A, 0xA2, 0xF4, +0x58, 0xC0, 0x6E, 0x10, 0x62, 0xA5, 0x39, 0x2B, +0x4D, 0xE1, 0xE3, 0x53, 0x36, 0x60, 0xA2, 0xF4, +0x76, 0xA0, 0xE8, 0x6C, 0x98, 0xEB, 0x12, 0xEB, +0x0D, 0xE3, 0x20, 0xF6, 0x96, 0xA3, 0x2D, 0x2C, +0x20, 0xF6, 0x97, 0xA3, 0xFF, 0x6E, 0xFC, 0x4A, +0xFF, 0x4C, 0x20, 0xF6, 0x97, 0xC3, 0xA2, 0xF4, +0x74, 0xA8, 0xA2, 0xF4, 0x96, 0xA0, 0xCC, 0xEA, +0xFF, 0x4B, 0xA2, 0xF4, 0x74, 0xC8, 0xE8, 0x6B, +0x78, 0xEC, 0x2C, 0xEE, 0x12, 0xEC, 0x91, 0xE0, +0x51, 0xE4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x4C, 0x9A, 0x20, 0xF6, 0x17, 0x4C, 0x40, 0xEA, +0xA2, 0xF4, 0x56, 0xA0, 0xE8, 0x6B, 0x78, 0xEA, +0x12, 0xEA, 0x09, 0xE2, 0x20, 0xF6, 0x77, 0xA2, +0x6D, 0xE1, 0x20, 0xF6, 0x77, 0xC2, 0xA2, 0xF4, +0x54, 0xA8, 0x45, 0xE1, 0xA2, 0xF4, 0x34, 0xC8, +0x33, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x83, 0xF5, +0x00, 0x48, 0xA2, 0xF4, 0x98, 0xA0, 0xE8, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x58, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0xF3, +0x14, 0x4B, 0xFF, 0x6E, 0x2C, 0xEE, 0x12, 0xEC, +0x91, 0xE3, 0x40, 0xEA, 0xA2, 0xF4, 0x58, 0xA0, +0x10, 0x6B, 0xA2, 0xF4, 0x34, 0xC8, 0x01, 0x4A, +0xA2, 0xF4, 0x58, 0xC0, 0xA2, 0xF4, 0x58, 0xA0, +0x6E, 0xEA, 0x02, 0x2A, 0xA2, 0xF4, 0x58, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0xA2, 0xF4, 0x76, 0xA2, 0x10, 0x6C, 0x01, 0x4B, +0xA2, 0xF4, 0x76, 0xC2, 0xA2, 0xF4, 0x76, 0xA2, +0x8E, 0xEB, 0x02, 0x2B, 0xA2, 0xF4, 0x76, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0xA2, 0xF4, 0x96, 0xA2, 0xE8, 0x6B, 0x78, 0xEC, +0xA2, 0xF4, 0x94, 0xAA, 0x12, 0xEB, 0x4D, 0xE3, +0x00, 0xF7, 0x9B, 0xC3, 0xA0, 0xF0, 0x64, 0x9A, +0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x8C, 0xEA, 0x82, 0xF6, +0x64, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF6, +0x88, 0x9C, 0xCC, 0xEB, 0x40, 0xF6, 0xA0, 0x35, +0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, +0x02, 0xF0, 0x00, 0x74, 0xAD, 0xEB, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF2, -0x9C, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0x02, 0xF3, 0x80, 0x9C, 0x89, 0xE2, 0x60, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF2, 0x4C, 0x9A, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF2, 0x50, 0x9A, 0x40, 0x9A, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, -0x01, 0x72, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF2, 0x4C, 0x9A, 0x40, 0x9A, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x50, 0x9A, -0x40, 0x9A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF2, 0xD8, 0x9B, 0xFD, 0x63, 0x42, 0xF2, -0x18, 0x4B, 0x02, 0xD6, 0xC1, 0x9B, 0x64, 0xAB, -0xFF, 0x6A, 0x03, 0xD6, 0xDD, 0x67, 0x68, 0xCE, +0x94, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0xE2, 0xF2, 0x98, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, +0xFF, 0x6B, 0x02, 0xF0, 0x00, 0x74, 0xAC, 0xEB, +0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0xE2, 0xF2, 0x94, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0xE2, 0xF2, 0x98, 0x9C, 0x91, 0xE2, +0x00, 0x6D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0x82, 0xF6, 0x84, 0x9C, 0xD4, 0x36, 0x40, 0xF6, +0x60, 0x33, 0x8C, 0xEE, 0x6D, 0xEE, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF6, 0x68, 0x9B, 0x6D, 0xEE, +0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, +0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF2, 0x74, 0x9B, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x78, 0x9B, +0x69, 0xE2, 0xC0, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x0F, 0xF5, 0x00, 0x6B, 0x78, 0xEE, 0xFF, 0xF7, +0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x82, 0xF6, 0x84, 0x9C, 0x40, 0xF6, 0xA0, 0x35, +0x12, 0xEB, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, +0x82, 0xF6, 0x88, 0x9C, 0xAD, 0xEB, 0x8D, 0xEB, +0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, +0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0xE2, 0xF2, 0x94, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF2, 0x98, 0x9C, +0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x44, 0x9A, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x48, 0x9A, 0x40, 0x9A, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x8C, 0xEA, 0x01, 0x72, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x44, 0x9A, +0x40, 0x9A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF2, 0x48, 0x9A, 0x40, 0x9A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF2, 0xD0, 0x9B, -0x42, 0xF2, 0x10, 0x4B, 0x64, 0xA3, 0x4C, 0xEC, -0x00, 0xD6, 0xDD, 0x67, 0x64, 0xC6, 0x8D, 0xE6, -0xE0, 0xA3, 0x84, 0x33, 0x6D, 0xE6, 0xC4, 0xAB, -0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xED, 0xCC, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x0C, 0x2B, -0x5D, 0x67, 0x84, 0x34, 0x91, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xAC, 0xE2, 0xF2, 0x5C, 0x9A, -0x49, 0xE3, 0x60, 0xA2, 0xFF, 0x6A, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x60, 0x9B, -0x79, 0xE6, 0x60, 0xA6, 0xE4, 0xED, 0x6C, 0xEA, -0xA7, 0x67, 0x4C, 0xED, 0x00, 0x6B, 0x01, 0x25, -0x01, 0x6B, 0xFF, 0x6A, 0x6C, 0xEA, 0x03, 0x63, +0xFD, 0x63, 0x42, 0xF2, 0x10, 0x4B, 0x02, 0xD6, +0xC1, 0x9B, 0x64, 0xAB, 0xFF, 0x6A, 0x03, 0xD6, +0xDD, 0x67, 0x68, 0xCE, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF2, 0xC8, 0x9B, 0x42, 0xF2, 0x08, 0x4B, +0x64, 0xA3, 0x4C, 0xEC, 0x00, 0xD6, 0xDD, 0x67, +0x64, 0xC6, 0x8D, 0xE6, 0xE0, 0xA3, 0x84, 0x33, +0x6D, 0xE6, 0xC4, 0xAB, 0x1F, 0xF7, 0x00, 0x6B, +0x4C, 0xED, 0xCC, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x0C, 0x2B, 0x5D, 0x67, 0x84, 0x34, +0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xAC, +0xE2, 0xF2, 0x54, 0x9A, 0x49, 0xE3, 0x60, 0xA2, +0xFF, 0x6A, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF2, 0x78, 0x9B, 0x79, 0xE6, 0x60, 0xA6, +0xE4, 0xED, 0x6C, 0xEA, 0xA7, 0x67, 0x4C, 0xED, +0x00, 0x6B, 0x01, 0x25, 0x01, 0x6B, 0xFF, 0x6A, +0x6C, 0xEA, 0x03, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x80, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, +0xA0, 0x9C, 0x52, 0x9B, 0xAC, 0xEA, 0x53, 0xDB, +0x40, 0xDC, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0xD1, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, +0x24, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x0C, 0x4A, 0x40, 0x9A, 0x60, 0x99, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xA2, 0xF6, 0x54, 0x9A, 0xA2, 0xF6, 0x1C, 0x4C, +0x80, 0x9C, 0x00, 0x9A, 0x1A, 0x65, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0x9C, 0xC2, 0xF6, 0x04, 0x4A, +0x40, 0x9A, 0x01, 0xD4, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0x9A, 0x83, 0xF5, 0xE0, 0x9C, 0x00, 0xD2, +0x44, 0x67, 0x83, 0xF5, 0x00, 0x4A, 0xC1, 0x9A, +0x83, 0x9A, 0x6C, 0xEF, 0xAC, 0xEE, 0x01, 0x93, +0xA2, 0x9A, 0xE8, 0xDA, 0x6C, 0xEC, 0x0C, 0xED, +0x64, 0x9A, 0x00, 0x90, 0x8B, 0xDA, 0xC9, 0xDA, +0x0C, 0xEB, 0xAA, 0xDA, 0x6C, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x0C, 0x4A, 0x40, 0x9A, +0xE0, 0xD9, 0x18, 0x67, 0xC0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x1C, 0x4A, 0x40, 0x9A, +0xA0, 0xD8, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6C, +0xC2, 0xF6, 0x04, 0x4C, 0x80, 0x9C, 0x60, 0xDC, +0x05, 0x91, 0x04, 0x90, 0x03, 0x63, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD1, 0x00, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x0C, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0xF4, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0xDC, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x80, 0x98, +0xB4, 0x9A, 0x60, 0x9F, 0x20, 0x9E, 0x8C, 0xED, +0x95, 0x9A, 0xB7, 0xDA, 0x6C, 0xEC, 0x76, 0x9A, +0x98, 0xDA, 0x2C, 0xEB, 0x79, 0xDA, 0xA0, 0xD8, +0x80, 0xDF, 0x60, 0xDE, 0x01, 0x91, 0x00, 0x90, +0x01, 0x63, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0x74, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x88, 0x9B, +0x01, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF6, 0x98, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0xA0, 0x9C, 0x52, 0x9B, -0xAC, 0xEA, 0x53, 0xDB, 0x40, 0xDC, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0xD1, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF6, 0x3C, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF6, 0x04, 0x4A, 0x40, 0x9A, -0x60, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x4C, 0x9A, -0xC2, 0xF6, 0x14, 0x4C, 0x80, 0x9C, 0x00, 0x9A, -0x1A, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0x9C, -0xC2, 0xF6, 0x1C, 0x4A, 0x40, 0x9A, 0x01, 0xD4, -0x30, 0xF0, 0x20, 0x6C, 0x40, 0x9A, 0x63, 0xF5, -0xF8, 0x9C, 0x00, 0xD2, 0x44, 0x67, 0x63, 0xF5, -0x18, 0x4A, 0xC1, 0x9A, 0x83, 0x9A, 0x6C, 0xEF, -0xAC, 0xEE, 0x01, 0x93, 0xA2, 0x9A, 0xE8, 0xDA, -0x6C, 0xEC, 0x0C, 0xED, 0x64, 0x9A, 0x00, 0x90, -0x8B, 0xDA, 0xC9, 0xDA, 0x0C, 0xEB, 0xAA, 0xDA, -0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, -0x04, 0x4A, 0x40, 0x9A, 0xE0, 0xD9, 0x18, 0x67, -0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, -0x14, 0x4A, 0x40, 0x9A, 0xA0, 0xD8, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF6, 0x1C, 0x4C, -0x80, 0x9C, 0x60, 0xDC, 0x05, 0x91, 0x04, 0x90, -0x03, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD1, -0x00, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, -0x04, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, -0xEC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, -0xD4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x80, 0x98, 0xB4, 0x9A, 0x60, 0x9F, -0x20, 0x9E, 0x8C, 0xED, 0x95, 0x9A, 0xB7, 0xDA, -0x6C, 0xEC, 0x76, 0x9A, 0x98, 0xDA, 0x2C, 0xEB, -0x79, 0xDA, 0xA0, 0xD8, 0x80, 0xDF, 0x60, 0xDE, -0x01, 0x91, 0x00, 0x90, 0x01, 0x63, 0x20, 0xE8, +0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xE2, 0xF3, 0x88, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, +0x23, 0xF3, 0x70, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0x06, 0x74, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF7, 0x80, 0x9B, 0x01, 0x6D, 0x60, 0xA4, -0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF3, 0x90, 0x9C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, -0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x6D, 0xB8, 0xEC, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, -0x01, 0x6E, 0x12, 0xEC, 0x71, 0xE4, 0xA0, 0xF0, -0xB6, 0xA4, 0xCC, 0xED, 0x1D, 0x25, 0xA0, 0xF0, -0xB7, 0xA4, 0xC2, 0xF5, 0x60, 0x9B, 0xA0, 0xF0, -0x96, 0xA4, 0x75, 0xE5, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF4, 0x6C, 0x9B, 0xBC, 0x35, 0x21, 0x4D, -0x75, 0xE5, 0xE0, 0xA5, 0x9E, 0x33, 0x9A, 0x34, -0xCC, 0xEC, 0x78, 0x33, 0x9C, 0x34, 0x4C, 0xEF, -0x8D, 0xEB, 0xED, 0xEB, 0x00, 0xF6, 0x60, 0x33, -0x00, 0xF6, 0x63, 0x33, 0x4C, 0xEB, 0x60, 0xC5, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x62, 0x12, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF0, 0x78, 0xA2, -0x02, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, -0x00, 0x18, 0x6B, 0xD0, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, -0x43, 0xF3, 0xA1, 0xA3, 0xFF, 0x6A, 0x4C, 0xEC, -0x8E, 0xED, 0x10, 0x2D, 0x43, 0xF3, 0xA0, 0xA3, -0x1F, 0x6E, 0xAA, 0x33, 0xCC, 0xEB, 0x67, 0xEC, -0x01, 0x6C, 0x8C, 0xEB, 0x07, 0x23, 0x02, 0x6B, -0xAC, 0xEB, 0x4C, 0xEB, 0x03, 0x23, 0x00, 0x6C, -0x00, 0x18, 0x6B, 0xD0, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x2F, 0xCE, +0x07, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF5, 0x00, 0x4B, 0x01, 0x6E, 0x12, 0xEC, +0x71, 0xE4, 0xA0, 0xF0, 0xB6, 0xA4, 0xCC, 0xED, +0x1D, 0x25, 0xA0, 0xF0, 0xB7, 0xA4, 0xC2, 0xF5, +0x60, 0x9B, 0xA0, 0xF0, 0x96, 0xA4, 0x75, 0xE5, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, 0x64, 0x9B, +0xBC, 0x35, 0x21, 0x4D, 0x75, 0xE5, 0xE0, 0xA5, +0x9E, 0x33, 0x9A, 0x34, 0xCC, 0xEC, 0x78, 0x33, +0x9C, 0x34, 0x4C, 0xEF, 0x8D, 0xEB, 0xED, 0xEB, +0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, +0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x36, 0x12, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xC7, 0xF0, 0x60, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x6F, 0xD0, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x7A, 0xC1, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xEF, 0x17, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xC3, 0x17, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x86, 0xC5, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x83, 0xC5, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x8C, 0x13, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x60, 0x13, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xD6, 0x12, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xAA, 0x12, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xFA, 0xD0, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xFE, 0xD0, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x04, 0x67, 0x80, 0x18, 0xA0, 0x00, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x43, 0xF3, +0x61, 0xA2, 0xFF, 0x69, 0x2C, 0xE8, 0x0E, 0xEB, +0x10, 0x2B, 0x43, 0xF3, 0x60, 0xA2, 0x1F, 0x6C, +0x6A, 0x32, 0x8C, 0xEA, 0x47, 0xE8, 0x01, 0x6C, +0x8C, 0xEA, 0x07, 0x22, 0x02, 0x6A, 0x6C, 0xEA, +0x2C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x6F, 0xD0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x4C, 0xCE, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF4, 0x6C, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, +0x22, 0xF4, 0x64, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, 0x6D, 0xE4, 0x08, 0x68, 0x80, 0xA3, 0xDB, 0xE0, 0x02, 0x67, 0x4C, 0xED, 0x07, 0xEE, 0xD0, 0x67, 0x4C, 0xEF, 0x04, 0xED, 0x4C, 0xEC, 0xCC, 0xEF, 0x0F, 0xE8, 0x8C, 0xE8, 0xE4, 0xED, 0xED, 0xE8, 0x4C, 0xE8, 0x00, 0xC3, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF4, 0x4C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x22, 0xF4, 0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x4D, 0xE3, 0x40, 0xA3, 0xFF, 0x6C, 0x8C, 0xEE, 0x08, 0x6B, 0xDB, 0xE3, 0x8C, 0xED, 0x8C, 0xEA, 0x64, 0x67, 0x47, 0xED, 0x67, 0xEE, 0x6C, 0xEA, 0x8C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0xE7, 0xF1, 0x09, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, -0x54, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, +0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, +0x23, 0x6A, 0xE7, 0xF1, 0x19, 0x4A, 0x40, 0xDB, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, +0x5C, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, 0x09, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF3, 0x68, 0x9A, 0x20, 0x6C, 0x40, 0x9B, +0x22, 0xF3, 0x60, 0x9A, 0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, +0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, @@ -43705,9 +44247,9 @@ u8 array_mp_8822c_fw_spic[] = { 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x4C, 0xED, 0x4C, 0xEC, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF7, 0x58, 0x9A, 0x80, 0xC2, +0x20, 0x6A, 0x02, 0xF7, 0x40, 0x9A, 0x80, 0xC2, 0xA0, 0xC2, 0x20, 0xE8, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF7, 0x78, 0x9B, 0x4C, 0xEC, +0x20, 0x6B, 0x02, 0xF7, 0x60, 0x9B, 0x4C, 0xEC, 0x94, 0x34, 0x4C, 0xEC, 0x80, 0xC3, 0x60, 0xA3, 0x6C, 0xEA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x50, 0x9A, @@ -43716,7 +44258,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x48, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x63, 0xF5, 0x18, 0x48, 0x06, 0xF1, 0x50, 0xA0, +0x83, 0xF5, 0x00, 0x48, 0x06, 0xF1, 0x50, 0xA0, 0x01, 0x69, 0x71, 0x67, 0x4C, 0xEB, 0x04, 0xD3, 0xA0, 0xF0, 0x11, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x48, 0x9A, 0x40, 0xEA, 0x30, 0xF0, @@ -43742,9 +44284,9 @@ u8 array_mp_8822c_fw_spic[] = { 0x06, 0xF1, 0x38, 0xD8, 0x24, 0x31, 0x09, 0x10, 0x06, 0xF1, 0x53, 0xA0, 0x06, 0xF1, 0x35, 0xC0, 0x06, 0xF1, 0x3C, 0xC0, 0x24, 0xEA, 0x06, 0xF1, -0x38, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, -0x7C, 0x9B, 0x06, 0xF1, 0x98, 0x9A, 0x26, 0xF1, +0x38, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, +0x74, 0x9B, 0x06, 0xF1, 0x98, 0x9A, 0x26, 0xF1, 0x20, 0xD8, 0x83, 0xEB, 0x01, 0x6B, 0x01, 0x61, 0x00, 0x6B, 0x26, 0xF1, 0x64, 0xC2, 0x26, 0xF1, 0x65, 0xC2, 0x33, 0x10, 0x1C, 0x6B, 0x6E, 0xEA, @@ -43760,14 +44302,14 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xA3, 0x7D, 0x67, 0x06, 0xF1, 0x38, 0xD8, 0x26, 0xF1, 0x44, 0xC0, 0x47, 0x43, 0x09, 0x4A, 0x60, 0xA2, 0x26, 0xF1, 0x20, 0xD8, 0x26, 0xF1, -0x65, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x06, 0xF1, 0x90, 0xA2, 0x01, 0x6B, +0x65, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x06, 0xF1, 0x90, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, 0x06, 0xF1, 0x70, 0xC2, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x52, 0xA4, 0x73, 0xA4, 0x30, 0xF0, 0x20, 0x69, 0x40, 0x32, 0x40, 0x32, 0x00, 0xF6, 0x60, 0x33, -0x4D, 0xE3, 0x50, 0xA4, 0x63, 0xF5, 0x18, 0x49, +0x4D, 0xE3, 0x50, 0xA4, 0x83, 0xF5, 0x00, 0x49, 0x04, 0x67, 0x4D, 0xE3, 0x51, 0xA4, 0x40, 0x32, 0x49, 0xE3, 0x04, 0xD2, 0x6A, 0xA4, 0x49, 0xA4, 0x60, 0x33, 0x49, 0xE3, 0x05, 0xD2, 0x4E, 0xA4, @@ -43776,7 +44318,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x4D, 0xA4, 0x40, 0x32, 0x49, 0xE3, 0x06, 0xD2, 0x06, 0xF1, 0x50, 0xA1, 0x01, 0x6B, 0x6C, 0xEA, 0x18, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, -0x48, 0x9A, 0x40, 0xEA, 0x00, 0x18, 0xAD, 0xCE, +0x48, 0x9A, 0x40, 0xEA, 0x00, 0x18, 0xB1, 0xCE, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x40, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x5C, 0x9A, 0x02, 0x6C, 0x40, 0xEA, 0x06, 0xF1, @@ -43794,42 +44336,42 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0x6A, 0x00, 0xF4, 0x40, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x44, 0x9A, 0x04, 0x94, 0x06, 0x95, 0x05, 0x96, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x64, 0x9A, 0x02, 0x6C, 0x8B, 0xEC, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x01, 0x6A, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x6C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x64, 0x9B, 0xFF, 0x6A, 0x4C, 0xED, 0xA0, 0xC3, 0xCC, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x87, 0xF0, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x87, 0xF0, 0x48, 0xC3, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xA7, 0xF0, 0x59, 0xA2, 0xFF, 0x63, 0x05, 0x5A, +0xC7, 0xF0, 0x41, 0xA2, 0xFF, 0x63, 0x05, 0x5A, 0x36, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, -0x82, 0xF2, 0x1C, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x82, 0xF2, 0x14, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, -0x54, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0x9A, +0x4C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0x9A, 0x1A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, -0x54, 0x9A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0x50, 0x9A, 0x0D, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF7, 0x50, 0x9A, 0x40, 0x9A, +0x4C, 0x9A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF7, 0x58, 0x9A, 0x0D, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF7, 0x58, 0x9A, 0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, 0x42, 0x32, 0x08, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x5C, 0x9A, 0x40, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x00, 0xD2, 0x00, 0x93, 0xE0, 0xF3, 0x08, 0x6A, 0x60, 0x33, 0x68, 0x33, 0x5B, 0xEB, 0x01, 0x2A, 0xE5, 0xE8, 0x12, 0xEA, 0x01, 0x10, 0x66, 0x6A, 0x00, 0xD2, 0x00, 0x92, 0x01, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD0, 0x15, 0x2C, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x62, 0xF3, 0x98, 0x9C, 0x40, 0x9B, +0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x62, 0xF3, 0x90, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, +0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x5D, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x43, 0xF3, 0xA0, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x43, 0xF3, 0x60, 0xC2, 0x43, 0xF3, -0xC4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC7, 0xF0, -0x18, 0x4A, 0x00, 0x6D, 0x18, 0x6F, 0xF8, 0xED, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0xC4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE7, 0xF0, +0x00, 0x4A, 0x00, 0x6D, 0x18, 0x6F, 0xF8, 0xED, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x12, 0xEF, 0x6D, 0xE7, 0x43, 0xF3, 0x14, 0xA3, 0x01, 0x6F, 0xEC, 0xE8, 0x23, 0x20, 0x43, 0xF3, 0x74, 0xA3, 0x66, 0x33, 0xEC, 0xEB, 0xFF, 0x6F, @@ -43842,19 +44384,19 @@ u8 array_mp_8822c_fw_spic[] = { 0x7C, 0x9A, 0x04, 0x2B, 0x01, 0x6F, 0xFF, 0xF7, 0xFC, 0xDA, 0x60, 0xDA, 0x01, 0x4D, 0x0A, 0x75, 0x18, 0x4A, 0xCC, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x43, 0xF3, 0x68, 0x9A, +0x83, 0xF5, 0x00, 0x4A, 0x43, 0xF3, 0x68, 0x9A, 0x43, 0xF3, 0x84, 0xDA, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x43, 0xF3, 0x80, 0xA2, 0x12, 0xEB, 0x43, 0xF3, 0x6C, 0xDA, 0x78, 0x67, 0x43, 0xF3, 0x70, 0xDA, 0x02, 0x6B, 0x8D, 0xEB, 0x43, 0xF3, 0x60, 0xC2, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, 0x43, 0xF3, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0x43, 0xF3, 0x40, 0xA0, 0x03, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, 0x26, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xFF, 0x6E, +0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xFF, 0x6E, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x48, 0x9A, 0xA7, 0xF0, 0x18, 0x4C, 0x00, 0x6D, +0x48, 0x9A, 0xC7, 0xF0, 0x00, 0x4C, 0x00, 0x6D, 0x05, 0x4E, 0x40, 0xEA, 0x66, 0x6A, 0x43, 0xF3, 0x44, 0xD8, 0x43, 0xF3, 0x4C, 0xD8, 0x01, 0x6A, 0x4B, 0xEA, 0x43, 0xF3, 0x80, 0xA0, 0x43, 0xF3, @@ -43863,122 +44405,122 @@ u8 array_mp_8822c_fw_spic[] = { 0x43, 0xF3, 0x68, 0xD8, 0x43, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, 0x43, 0xF3, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0x43, 0xF3, 0x80, 0xA0, 0x01, 0x6B, 0x00, 0x6A, 0x8C, 0xEB, 0x22, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0x58, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x03, 0x6A, +0x40, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x43, 0xF3, 0x40, 0xC0, -0x00, 0x18, 0x5B, 0xCF, 0x04, 0xD2, 0x04, 0x94, -0x00, 0x18, 0x7C, 0xCF, 0x43, 0xF3, 0x60, 0xA0, +0x00, 0x18, 0x5F, 0xCF, 0x04, 0xD2, 0x04, 0x94, +0x00, 0x18, 0x80, 0xCF, 0x43, 0xF3, 0x60, 0xA0, 0x02, 0x6A, 0x43, 0xF3, 0xC8, 0x98, 0x6D, 0xEA, 0x43, 0xF3, 0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0x42, 0xF1, 0x1C, 0x6C, 0x01, 0x6D, 0x40, 0xEA, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x43, 0xF3, 0xA0, 0xA3, 0x02, 0x6C, 0x00, 0x6A, 0xAC, 0xEC, 0x0C, 0x24, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0x58, 0x9A, 0x00, 0x6C, 0x80, 0xC2, +0x22, 0xF7, 0x40, 0x9A, 0x00, 0x6C, 0x80, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x43, 0xF3, 0x40, 0xC3, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x18, 0x6C, 0x98, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, 0x01, 0x4A, +0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x01, 0x4A, 0x0A, 0x72, 0x12, 0xEC, 0x71, 0xE4, 0x43, 0xF3, 0xB4, 0xA4, 0x02, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x43, 0xF3, 0x74, 0xC4, 0xEE, 0x61, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF0, 0x58, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xC7, 0xF0, 0x40, 0xA2, 0x01, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, 0x1C, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0xC7, 0xF0, 0x1C, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xE7, 0xF0, 0x04, 0x4A, 0x00, 0x6B, 0xA0, 0x9A, 0x8E, 0xED, 0x0F, 0x2D, 0x18, 0x6E, 0xD8, 0xEB, 0x30, 0xF0, 0x20, 0x6D, -0x63, 0xF5, 0x18, 0x4D, 0x12, 0xEE, 0xB9, 0xE6, +0x83, 0xF5, 0x00, 0x4D, 0x12, 0xEE, 0xB9, 0xE6, 0x43, 0xF3, 0xF4, 0xA6, 0x02, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0x43, 0xF3, 0xB4, 0xC6, 0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, 0xEA, 0x61, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x5D, 0x67, 0x0A, 0xD4, 0x20, 0xF0, 0x98, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x0B, 0xD5, 0x0C, 0xD6, 0x63, 0xF5, 0x18, 0x4A, +0x0B, 0xD5, 0x0C, 0xD6, 0x83, 0xF5, 0x00, 0x4A, 0x43, 0xF3, 0xA0, 0xA2, 0x01, 0x6B, 0x00, 0xF6, 0xE0, 0x31, 0xAC, 0xEB, 0x00, 0xF6, 0x23, 0x31, -0x80, 0xF0, 0x09, 0x23, 0x21, 0x24, 0x01, 0x74, -0x80, 0xF0, 0x05, 0x61, 0x0A, 0x93, 0x80, 0xF0, -0x02, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x7C, 0x9B, 0xC3, 0xEB, 0x7C, 0x61, 0x7F, 0x71, -0x7A, 0x60, 0xFF, 0xF7, 0x1F, 0x51, 0x77, 0x61, +0x80, 0xF0, 0x0A, 0x23, 0x22, 0x24, 0x01, 0x74, +0x80, 0xF0, 0x06, 0x61, 0x0A, 0x93, 0x80, 0xF0, +0x03, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, +0x64, 0x9B, 0xC3, 0xEB, 0x7D, 0x61, 0x7F, 0x71, +0x7B, 0x60, 0xFF, 0xF7, 0x1F, 0x51, 0x78, 0x61, 0x43, 0xF3, 0x04, 0x9A, 0x1B, 0xEE, 0x01, 0x28, 0xE5, 0xE8, 0x10, 0xEA, 0x12, 0xE8, 0x02, 0x22, -0x01, 0x48, 0x04, 0x10, 0x03, 0x28, 0x01, 0x68, -0x50, 0x67, 0x1D, 0x10, 0x01, 0x6B, 0x1E, 0x10, -0x0A, 0x94, 0x65, 0x24, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF7, 0x7C, 0x9B, 0x0C, 0x95, 0xA3, 0xEB, -0x5E, 0x61, 0x7F, 0x71, 0x5C, 0x60, 0xFF, 0xF7, -0x1F, 0x51, 0x59, 0x61, 0x43, 0xF3, 0x08, 0x9A, -0x1B, 0xED, 0x01, 0x28, 0xE5, 0xE8, 0x10, 0xEA, -0x12, 0xE8, 0x02, 0x22, 0x01, 0x48, 0x05, 0x10, -0x04, 0x28, 0x01, 0x68, 0x00, 0x6A, 0x04, 0xD2, -0x02, 0x10, 0x00, 0x6B, 0x04, 0xD3, 0x0A, 0x94, -0x00, 0x18, 0x04, 0xD0, 0x00, 0x6C, 0xFF, 0x6E, -0xA4, 0x67, 0xCC, 0xED, 0x1D, 0x65, 0x18, 0x6D, -0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x18, 0x4B, 0x01, 0x6D, 0x12, 0xEA, 0x69, 0xE2, -0x43, 0xF3, 0x54, 0xA2, 0xAC, 0xEA, 0xCC, 0xEA, -0x2F, 0x2A, 0xD8, 0x67, 0x18, 0x6F, 0xF8, 0xEE, -0x04, 0x96, 0xC4, 0x36, 0x04, 0xD6, 0x03, 0x6E, -0xCB, 0xEE, 0x12, 0xEC, 0x71, 0xE4, 0x43, 0xF3, -0xF4, 0xA4, 0xEC, 0xEE, 0x04, 0x97, 0xED, 0xEE, -0x43, 0xF3, 0xD4, 0xC4, 0x0A, 0x96, 0x63, 0xF3, -0xC4, 0xDC, 0x0B, 0x97, 0x63, 0xF3, 0xE8, 0xDC, -0x0C, 0x96, 0x18, 0x6F, 0x43, 0xF3, 0xD8, 0xDC, -0xD8, 0x67, 0x01, 0x4E, 0xF8, 0xEE, 0x12, 0xEE, -0x6D, 0xE6, 0x43, 0xF3, 0x48, 0xDB, 0x43, 0xF3, -0x04, 0xDB, 0x43, 0xF3, 0x55, 0xC4, 0x43, 0xF3, -0x54, 0xA4, 0x43, 0xF3, 0x36, 0xC4, 0x4D, 0xED, -0x43, 0xF3, 0xB4, 0xC4, 0x01, 0x6A, 0x04, 0x10, -0x01, 0x4C, 0x0A, 0x74, 0xBC, 0x61, 0x00, 0x6A, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x01, 0x48, 0x05, 0x10, 0x04, 0x28, 0x01, 0x6A, +0x04, 0xD2, 0x02, 0x67, 0x21, 0x10, 0x01, 0x6B, +0x1E, 0x10, 0x0A, 0x94, 0x65, 0x24, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF7, 0x64, 0x9B, 0x0C, 0x95, +0xA3, 0xEB, 0x5E, 0x61, 0x7F, 0x71, 0x5C, 0x60, +0xFF, 0xF7, 0x1F, 0x51, 0x59, 0x61, 0x43, 0xF3, +0x08, 0x9A, 0x1B, 0xED, 0x01, 0x28, 0xE5, 0xE8, +0x10, 0xEA, 0x12, 0xE8, 0x02, 0x22, 0x01, 0x48, +0x05, 0x10, 0x04, 0x28, 0x00, 0x6A, 0x04, 0xD2, +0x01, 0x68, 0x02, 0x10, 0x00, 0x6B, 0x04, 0xD3, +0x0A, 0x94, 0x00, 0x18, 0x08, 0xD0, 0x00, 0x6C, +0xFF, 0x6E, 0xA4, 0x67, 0xCC, 0xED, 0x1D, 0x65, +0x18, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF5, 0x00, 0x4B, 0x01, 0x6D, 0x12, 0xEA, +0x69, 0xE2, 0x43, 0xF3, 0x54, 0xA2, 0xAC, 0xEA, +0xCC, 0xEA, 0x2F, 0x2A, 0xD8, 0x67, 0x18, 0x6F, +0xF8, 0xEE, 0x04, 0x96, 0xC4, 0x36, 0x04, 0xD6, +0x03, 0x6E, 0xCB, 0xEE, 0x12, 0xEC, 0x71, 0xE4, +0x43, 0xF3, 0xF4, 0xA4, 0xEC, 0xEE, 0x04, 0x97, +0xED, 0xEE, 0x43, 0xF3, 0xD4, 0xC4, 0x0A, 0x96, +0x63, 0xF3, 0xC4, 0xDC, 0x0B, 0x97, 0x63, 0xF3, +0xE8, 0xDC, 0x0C, 0x96, 0x18, 0x6F, 0x43, 0xF3, +0xD8, 0xDC, 0xD8, 0x67, 0x01, 0x4E, 0xF8, 0xEE, +0x12, 0xEE, 0x6D, 0xE6, 0x43, 0xF3, 0x48, 0xDB, +0x43, 0xF3, 0x04, 0xDB, 0x43, 0xF3, 0x55, 0xC4, +0x43, 0xF3, 0x54, 0xA4, 0x43, 0xF3, 0x36, 0xC4, +0x4D, 0xED, 0x43, 0xF3, 0xB4, 0xC4, 0x01, 0x6A, +0x04, 0x10, 0x01, 0x4C, 0x0A, 0x74, 0xBC, 0x61, +0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x06, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC7, 0xF0, 0x18, 0x4A, 0x00, 0x6C, -0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC7, 0xF0, -0x18, 0x4A, 0x00, 0x6B, 0x18, 0x6D, 0xB8, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF5, 0x18, 0x4C, +0x20, 0x6A, 0xE7, 0xF0, 0x00, 0x4A, 0x00, 0x6C, +0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE7, 0xF0, +0x00, 0x4A, 0x00, 0x6B, 0x18, 0x6D, 0xB8, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF5, 0x00, 0x4C, 0x12, 0xED, 0x91, 0xE5, 0x43, 0xF3, 0xD4, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, 0x43, 0xF3, 0x94, 0xA4, 0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, 0x80, 0x9A, 0x01, 0x4C, 0x80, 0xDA, 0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, 0xE7, 0x61, 0x00, 0x18, -0x5B, 0xCF, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0x93, 0xA7, 0xF0, 0x5C, 0x9A, 0x6E, 0xEA, -0x52, 0x22, 0x04, 0x94, 0x00, 0x18, 0x7C, 0xCF, +0x5F, 0xCF, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0x93, 0xC7, 0xF0, 0x44, 0x9A, 0x6E, 0xEA, +0x52, 0x22, 0x04, 0x94, 0x00, 0x18, 0x80, 0xCF, 0x4E, 0x10, 0x18, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, 0x12, 0xED, +0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x12, 0xED, 0x6D, 0xE5, 0x43, 0xF3, 0xD4, 0xA3, 0x01, 0x6D, 0xAC, 0xEE, 0x0A, 0x26, 0x43, 0xF3, 0x74, 0xA3, 0x66, 0x33, 0xAC, 0xEB, 0xFF, 0x6D, 0xAC, 0xEB, 0x03, 0x2B, 0x60, 0x9A, 0x01, 0x4B, 0x60, 0xDA, 0x01, 0x4C, 0x0A, 0x74, 0x18, 0x4A, 0xE5, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x43, 0xF3, 0x61, 0xA2, 0xFF, 0x73, 0x2B, 0x61, 0x43, 0xF3, 0x70, 0x9A, 0x01, 0x4B, 0x43, 0xF3, 0x70, 0xDA, 0x43, 0xF3, 0x4C, 0x9A, 0x4E, 0xEB, -0x22, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0xC7, 0xF0, -0x18, 0x4A, 0x18, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF5, 0x18, 0x4C, 0x12, 0xED, +0x22, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0xE7, 0xF0, +0x00, 0x4A, 0x18, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, +0x20, 0x6C, 0x83, 0xF5, 0x00, 0x4C, 0x12, 0xED, 0x91, 0xE5, 0x43, 0xF3, 0xD4, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, 0x43, 0xF3, 0x94, 0xA4, 0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, 0x80, 0x9A, 0x01, 0x4C, 0x80, 0xDA, 0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, 0xE7, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x78, 0x67, 0xC7, 0xF0, 0x68, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0xA0, 0xF0, +0x78, 0x67, 0xC7, 0xF0, 0x70, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC7, 0xF0, 0x0D, 0x48, 0x00, 0x69, 0x18, 0x6A, -0x58, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x18, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0x43, 0xF3, +0xC7, 0xF0, 0x15, 0x48, 0x00, 0x69, 0x18, 0x6A, +0x58, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x00, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0x43, 0xF3, 0x94, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x27, 0x23, 0x00, 0xF0, 0x8B, 0x98, 0x00, 0xF0, 0x67, 0x98, 0x63, 0xEC, 0x21, 0x61, 0x61, 0x80, 0x81, 0x43, @@ -44004,30 +44546,30 @@ u8 array_mp_8822c_fw_spic[] = { 0x9F, 0xF7, 0x03, 0x6D, 0x00, 0x18, 0xCA, 0xC4, 0x0F, 0x6B, 0x4C, 0xEB, 0x60, 0x32, 0x2D, 0xEA, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF4, 0x6C, 0x9B, 0x00, 0x30, +0x20, 0x6B, 0x22, 0xF4, 0x64, 0x9B, 0x00, 0x30, 0x08, 0x30, 0x61, 0xE0, 0x51, 0xE0, 0x09, 0x93, 0x04, 0x10, 0xA0, 0xA0, 0x01, 0x48, 0xA0, 0xC3, 0x01, 0x4B, 0x8A, 0xE8, 0xFA, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x01, 0x6C, 0x7F, 0xF7, 0x1E, 0x6D, -0x63, 0xF5, 0x18, 0x48, 0x00, 0x18, 0xCA, 0xC4, +0x83, 0xF5, 0x00, 0x48, 0x00, 0x18, 0xCA, 0xC4, 0x26, 0xF7, 0x88, 0xA0, 0x01, 0x6B, 0x47, 0xEC, 0x6C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6D, -0xA9, 0xF6, 0x00, 0x4D, 0x00, 0x18, 0xD8, 0xD0, +0xA9, 0xF6, 0x08, 0x4D, 0x00, 0x18, 0xDC, 0xD0, 0x26, 0xF7, 0x4A, 0xC8, 0xA0, 0xF0, 0x44, 0x98, 0x10, 0xF0, 0x00, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x01, 0x6C, 0x7F, 0xF7, 0x1E, 0x6D, 0x00, 0x18, 0xCA, 0xC4, 0x05, 0x97, 0x30, 0xF0, 0x20, 0x6B, -0xAA, 0xF4, 0x44, 0xC3, 0x03, 0x63, 0x00, 0xEF, +0xAA, 0xF4, 0x4C, 0xC3, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x64, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x6C, 0x9A, 0xFD, 0x6A, 0x1F, 0xF6, 0x10, 0x69, 0x80, 0xA3, 0xB1, 0x67, 0x7F, 0xF7, 0x1F, 0x68, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, -0x68, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, +0x70, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6C, 0x00, 0x18, 0xCA, 0xC4, 0xFE, 0x6E, 0xB1, 0x67, 0x4C, 0xEE, 0x01, 0x6C, 0x00, 0x18, 0xB9, 0xC4, 0xB0, 0x67, 0x01, 0x6C, @@ -44042,20 +44584,20 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x18, 0xCA, 0xC4, 0x01, 0x6E, 0x4D, 0xEE, 0xFF, 0x6A, 0xB1, 0x67, 0x4C, 0xEE, 0x01, 0x6C, 0x00, 0x18, 0xB9, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF3, 0x6C, 0x9A, 0xFF, 0xF6, 0x1F, 0x6A, +0xA2, 0xF3, 0x64, 0x9A, 0xFF, 0xF6, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x40, 0xCB, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, 0x26, 0xF7, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0x26, 0xF7, 0x68, 0xA0, 0x01, 0x6A, 0xFF, 0x6E, 0x44, 0xEB, 0x4C, 0xEE, 0x01, 0x6C, 0x7F, 0xF7, 0x1E, 0x6D, 0x00, 0x18, 0xB9, 0xC4, 0x26, 0xF7, 0x48, 0xA0, 0x01, 0x6B, 0x05, 0x97, 0x6E, 0xEA, 0x26, 0xF7, 0x48, 0xC0, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x26, 0xF7, 0x6E, 0xA2, +0x83, 0xF5, 0x00, 0x4A, 0x26, 0xF7, 0x6E, 0xA2, 0x01, 0x6C, 0x8E, 0xEB, 0x05, 0x2B, 0x26, 0xF7, -0x6E, 0xC2, 0x00, 0x18, 0x42, 0xD1, 0x10, 0x10, +0x6E, 0xC2, 0x00, 0x18, 0x46, 0xD1, 0x10, 0x10, 0x26, 0xF7, 0xCC, 0xA2, 0x26, 0xF7, 0x88, 0xA2, 0x01, 0x6B, 0xA6, 0x67, 0xA7, 0xEC, 0x6C, 0xED, 0x07, 0x25, 0x6E, 0xEC, 0xC7, 0xEC, 0x86, 0x67, @@ -44065,99 +44607,99 @@ u8 array_mp_8822c_fw_spic[] = { 0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, 0x05, 0x67, 0x4C, 0xEC, 0x6C, 0xE8, 0x0A, 0x35, 0x80, 0x37, 0x6C, 0xED, 0xE4, 0x37, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x4C, 0xEE, 0x26, 0xF3, +0x83, 0xF5, 0x00, 0x4B, 0x4C, 0xEE, 0x26, 0xF3, 0x08, 0x4F, 0xAC, 0xEA, 0xFD, 0xE3, 0x04, 0xD2, 0x00, 0x6B, 0x1E, 0x10, 0x30, 0xF0, 0x20, 0x69, -0xAA, 0xF4, 0x21, 0xA1, 0x20, 0x31, 0x28, 0x31, -0x19, 0x65, 0x30, 0xF0, 0x20, 0x69, 0x02, 0xF6, -0x30, 0x99, 0x58, 0x67, 0x01, 0x76, 0x29, 0xE2, +0xAA, 0xF4, 0x29, 0xA1, 0x20, 0x31, 0x28, 0x31, +0x19, 0x65, 0x30, 0xF0, 0x20, 0x69, 0xE2, 0xF5, +0x38, 0x99, 0x58, 0x67, 0x01, 0x76, 0x29, 0xE2, 0x68, 0x31, 0x29, 0xE2, 0xF9, 0x65, 0x20, 0x9F, 0x20, 0xDA, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF7, 0x2C, 0x9A, 0x5F, 0x67, 0x29, 0xE2, +0x22, 0xF7, 0x34, 0x9A, 0x5F, 0x67, 0x29, 0xE2, 0x20, 0x9F, 0x20, 0xDA, 0x01, 0x4B, 0x04, 0x4F, 0xFF, 0x6A, 0x22, 0x67, 0xFA, 0x65, 0x04, 0x92, 0x6C, 0xE9, 0x43, 0xE9, 0xDB, 0x61, 0x03, 0x6A, 0x3F, 0x67, 0x0C, 0xEA, 0x2C, 0xED, 0x20, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x26, 0xF7, 0xE9, 0xA2, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0x70, 0x9B, 0xE0, 0x37, 0x9C, 0x34, +0xE2, 0xF5, 0x78, 0x9B, 0xE0, 0x37, 0x9C, 0x34, 0xE8, 0x37, 0x7D, 0xE7, 0xA8, 0x33, 0xB5, 0xE4, 0xC1, 0xF4, 0x0A, 0x4D, 0xA8, 0x35, 0x49, 0xE5, 0x80, 0x9A, 0x7D, 0xE7, 0x01, 0x76, 0x80, 0xDF, -0x07, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF7, -0x8C, 0x9C, 0x40, 0x9A, 0x8D, 0xE3, 0x40, 0xDB, +0x07, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF7, +0x94, 0x9C, 0x40, 0x9A, 0x8D, 0xE3, 0x40, 0xDB, 0xFF, 0x69, 0xD0, 0x67, 0x01, 0x6C, 0x7F, 0xF7, 0x1C, 0x6D, 0x2C, 0xEE, 0x00, 0x18, 0xB9, 0xC4, 0x02, 0x36, 0x01, 0x6C, 0x7F, 0xF7, 0x1D, 0x6D, 0x2C, 0xEE, 0x00, 0x18, 0xB9, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0xAA, 0xF4, 0x41, 0xA2, 0x01, 0x6E, +0x20, 0x6A, 0xAA, 0xF4, 0x49, 0xA2, 0x01, 0x6E, 0x01, 0x6C, 0x02, 0x4A, 0xC4, 0xEA, 0x7F, 0xF7, 0x1E, 0x6D, 0x2C, 0xEE, 0x00, 0x18, 0xB9, 0xC4, 0x00, 0x68, 0x12, 0x10, 0x01, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x4E, 0xE8, 0xC2, 0xF2, 0x64, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0x88, 0xF5, 0x09, 0x4A, +0x20, 0x6B, 0x4E, 0xE8, 0xA2, 0xF2, 0x7C, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x88, 0xF5, 0x19, 0x4A, 0x09, 0xE2, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x01, 0x6C, 0x7F, 0xF7, 0x1E, 0x6D, 0x00, 0x18, -0xCA, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x18, 0x4B, 0x26, 0xF7, 0x89, 0xA3, 0xA2, 0x44, +0xCA, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x00, 0x4B, 0x26, 0xF7, 0x89, 0xA3, 0xA2, 0x44, 0x47, 0xED, 0x01, 0x6D, 0xAC, 0xEA, 0xDE, 0x2A, 0xAE, 0xEC, 0x26, 0xF7, 0x89, 0xC3, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x45, 0x67, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xBC, 0x63, 0x87, 0x62, 0x86, 0xD1, 0x85, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0x63, 0xF5, 0x18, 0x49, 0x26, 0xF7, 0xAA, 0xA9, -0x30, 0xF0, 0x20, 0x6C, 0xA9, 0xF6, 0x00, 0x4C, -0x00, 0x18, 0x51, 0xC8, 0x00, 0x18, 0x42, 0xD1, +0x83, 0xF5, 0x00, 0x49, 0x26, 0xF7, 0xAA, 0xA9, +0x30, 0xF0, 0x20, 0x6C, 0xA9, 0xF6, 0x08, 0x4C, +0x00, 0x18, 0x52, 0xC8, 0x00, 0x18, 0x46, 0xD1, 0x26, 0xF7, 0x88, 0xA1, 0x04, 0x00, 0xB0, 0x67, -0x00, 0x18, 0xD8, 0xD0, 0x11, 0x22, 0x90, 0x67, -0xA2, 0x67, 0x00, 0x18, 0x51, 0xC8, 0x26, 0xF7, +0x00, 0x18, 0xDC, 0xD0, 0x11, 0x22, 0x90, 0x67, +0xA2, 0x67, 0x00, 0x18, 0x52, 0xC8, 0x26, 0xF7, 0x0D, 0xA1, 0x01, 0x6A, 0x4E, 0xE8, 0x05, 0x28, -0x00, 0x18, 0x42, 0xD1, 0x26, 0xF7, 0x0D, 0xC1, +0x00, 0x18, 0x46, 0xD1, 0x26, 0xF7, 0x0D, 0xC1, 0x03, 0x10, 0x01, 0x6A, 0x26, 0xF7, 0x4E, 0xC1, 0x87, 0x97, 0x86, 0x91, 0x85, 0x90, 0x44, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, 0xA2, 0x67, 0x80, 0x18, -0x73, 0x4C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x79, 0x4C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, -0xA2, 0x67, 0x80, 0x18, 0xA4, 0x4C, 0x05, 0x97, +0xA2, 0x67, 0x80, 0x18, 0xAA, 0x4C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xDD, 0x63, 0x45, 0x62, 0x44, 0xD1, 0x43, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x69, 0x42, 0xF7, 0x5C, 0x9A, 0x8C, 0xE9, +0xFF, 0x69, 0x42, 0xF7, 0x44, 0x9A, 0x8C, 0xE9, 0x30, 0x31, 0x49, 0xE1, 0x40, 0xD2, 0x40, 0xA2, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, 0x40, 0x60, 0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x54, 0xC3, 0x0F, 0x6A, 0x56, 0xC3, 0x10, 0x6A, 0x57, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF7, 0x40, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0x42, 0xF7, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x06, 0x04, 0x49, 0xE1, 0x40, 0x9A, 0x04, 0x05, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x44, 0x9A, 0x07, 0x04, 0x04, 0x05, 0x49, 0xE1, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x4C, 0x9A, 0x07, 0x04, 0x04, 0x05, 0x49, 0xE1, 0x40, 0x9A, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, 0x40, 0x93, 0x08, 0x04, 0x04, 0x05, 0x40, 0x9B, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0x48, 0x9A, 0x09, 0x04, +0x20, 0x6A, 0x42, 0xF7, 0x50, 0x9A, 0x09, 0x04, 0x04, 0x05, 0x45, 0xE1, 0x40, 0x99, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, 0x05, 0x04, 0x40, 0xEA, 0x45, 0x97, 0x44, 0x91, 0x43, 0x90, 0x23, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, 0x80, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF7, 0x88, 0x9C, 0x50, 0x33, 0x91, 0xE3, 0x80, 0x9C, 0x30, 0xF0, -0x20, 0x6C, 0x62, 0xF7, 0x84, 0x9C, 0x8D, 0xE3, -0x82, 0x67, 0x60, 0x9B, 0x00, 0x18, 0xDF, 0xD1, +0x20, 0x6C, 0x42, 0xF7, 0x8C, 0x9C, 0x8D, 0xE3, +0x82, 0x67, 0x60, 0x9B, 0x00, 0x18, 0xE3, 0xD1, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF7, 0x4C, 0x9A, 0x62, 0xF7, 0x70, 0x9B, +0x42, 0xF7, 0x54, 0x9A, 0x42, 0xF7, 0x78, 0x9B, 0x00, 0xA2, 0x20, 0xA3, 0xFF, 0x6A, 0x4C, 0xE8, 0x4C, 0xE9, 0x2A, 0xE8, 0x2B, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0x40, 0x9A, 0x10, 0x33, +0x20, 0x6A, 0x42, 0xF7, 0x48, 0x9A, 0x10, 0x33, 0x49, 0xE3, 0x40, 0xA2, 0xFF, 0x6B, 0x6C, 0xEA, 0x56, 0x32, 0x6C, 0xEA, 0x04, 0x72, 0x09, 0x60, 0x06, 0x72, 0x0C, 0x60, 0x02, 0x72, 0x10, 0x61, @@ -44166,48 +44708,48 @@ u8 array_mp_8822c_fw_spic[] = { 0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x01, 0x48, 0x7F, 0x6A, 0x4C, 0xE8, 0x0A, 0xE9, -0xDA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x4C, 0x9A, 0x20, 0xC2, 0x07, 0x97, 0x06, 0x91, +0xDA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x54, 0x9A, 0x20, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0xFF, 0x6B, 0xE2, 0x67, 0x6C, 0xEE, 0x6C, 0xEF, 0x1E, 0x65, 0x87, 0x67, 0x03, 0x6E, 0xCC, 0xEC, 0x80, 0xF0, 0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, -0x18, 0x9C, 0x08, 0x69, 0x42, 0x32, 0x80, 0xA0, +0x00, 0x9C, 0x08, 0x69, 0x42, 0x32, 0x80, 0xA0, 0x52, 0x32, 0x6C, 0xEA, 0x6C, 0xEC, 0x2D, 0xEC, 0x6C, 0xEC, 0x80, 0xC0, 0x30, 0xF0, 0x20, 0x6C, -0x62, 0xF7, 0x9C, 0x9C, 0xCC, 0xEA, 0xE0, 0xC4, -0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF7, 0x80, 0x9C, +0x62, 0xF7, 0x84, 0x9C, 0xCC, 0xEA, 0xE0, 0xC4, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, 0x88, 0x9C, 0x40, 0xC4, 0x0F, 0x6A, 0x98, 0x67, 0x8C, 0xEA, 0x74, 0x22, 0x01, 0x6C, 0x4C, 0xEC, 0x06, 0x24, -0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF7, 0x84, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, 0x8C, 0x9C, 0xAC, 0xEB, 0x60, 0xC4, 0x02, 0x6B, 0x4C, 0xEB, 0x08, 0x23, 0xFF, 0x6C, 0xA2, 0x33, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF7, 0x88, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, 0x90, 0x9C, 0x60, 0xC4, 0x04, 0x6B, 0x4C, 0xEB, 0x09, 0x23, 0xA2, 0x33, 0xFF, 0x6C, 0x62, 0x33, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF7, 0x8C, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF7, 0x94, 0x9C, 0x60, 0xC4, 0x4E, 0x33, 0x07, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF7, 0x70, 0x9B, 0x00, 0xF6, +0x20, 0x6B, 0x62, 0xF7, 0x78, 0x9B, 0x00, 0xF6, 0xA2, 0x35, 0xA0, 0xC3, 0x20, 0x6B, 0x4D, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x5C, 0x9A, 0x64, 0x68, 0x60, 0xC2, 0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0xFF, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x21, 0x28, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF3, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xF3, 0x8C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, +0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xC2, 0xF3, 0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x60, 0xA1, 0xD0, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF7, 0x78, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, +0x62, 0xF7, 0x60, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x16, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF7, 0x34, 0x9A, 0x20, 0x6A, +0x20, 0x6A, 0x62, 0xF7, 0x3C, 0x9A, 0x20, 0x6A, 0x60, 0xA1, 0x6C, 0xEA, 0xCC, 0x2A, 0x60, 0xA1, 0xF0, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF7, 0x78, 0x9A, 0xF7, 0x6A, +0x20, 0x6A, 0x62, 0xF7, 0x60, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, @@ -44215,305 +44757,305 @@ u8 array_mp_8822c_fw_spic[] = { 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0xC2, 0x67, 0xFF, 0x6C, 0x8C, 0xEE, 0x03, 0x6D, 0x66, 0x67, 0xAC, 0xEB, 0x4B, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF7, 0xF8, 0x9B, 0x08, 0x68, 0x42, 0x32, +0x62, 0xF7, 0xE0, 0x9B, 0x08, 0x68, 0x42, 0x32, 0x60, 0xA7, 0x52, 0x32, 0x8C, 0xEA, 0x8C, 0xEB, 0x0D, 0xEB, 0x8C, 0xEB, 0x60, 0xC7, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF7, 0x7C, 0x9B, 0xAC, 0xEA, +0x20, 0x6B, 0x62, 0xF7, 0x64, 0x9B, 0xAC, 0xEA, 0x64, 0x68, 0xC0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF7, 0x60, 0x9B, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF7, 0x54, 0x9A, 0x30, 0x6B, +0x62, 0xF7, 0x68, 0x9B, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF7, 0x5C, 0x9A, 0x30, 0x6B, 0x60, 0xC2, 0x2E, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0xFF, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x23, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF3, -0x8C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF3, +0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x60, 0xA1, 0xCF, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, -0x78, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x60, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, 0x4B, 0xEA, 0x19, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0x34, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x3C, 0x9A, 0x20, 0x6A, 0x60, 0xA1, 0x6C, 0xEA, 0xCA, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x4C, 0x9A, 0xEF, 0x6B, 0x40, 0x9A, 0x80, 0xA1, 0x8C, 0xEB, 0x60, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF7, -0x98, 0x9B, 0xF7, 0x6B, 0xA0, 0xA4, 0xAC, 0xEB, +0x80, 0x9B, 0xF7, 0x6B, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0xB8, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0xA0, 0x9A, 0xE0, 0xF3, 0x10, 0x6C, 0x0F, 0x6E, 0x00, 0x18, -0x3A, 0xD2, 0xE0, 0xF3, 0x0C, 0x6C, 0x00, 0x18, -0x8E, 0xD2, 0xFF, 0x6B, 0x4C, 0xEB, 0x0B, 0x73, +0x3E, 0xD2, 0xE0, 0xF3, 0x0C, 0x6C, 0x00, 0x18, +0x92, 0xD2, 0xFF, 0x6B, 0x4C, 0xEB, 0x0B, 0x73, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, -0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF7, -0x80, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, +0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF7, +0x88, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0x69, 0xF3, 0x11, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, -0x54, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, +0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, +0x23, 0x6A, 0x89, 0xF3, 0x01, 0x4A, 0x40, 0xDB, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, +0x5C, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, 0x09, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF3, 0x68, 0x9A, 0x20, 0x6C, 0x40, 0x9B, +0x22, 0xF3, 0x60, 0x9A, 0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, +0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD9, 0x17, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x26, 0xF3, 0x5C, 0xA2, 0x03, 0x72, 0x0D, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x98, 0x9A, +0x46, 0xF3, 0x44, 0xA2, 0x03, 0x72, 0x0D, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF7, 0x80, 0x9A, 0xFF, 0x6A, 0x60, 0xA4, 0x6C, 0xEA, 0x10, 0x6B, 0x4C, 0xEB, 0x03, 0x23, 0xEF, 0x6B, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF7, 0x4C, 0x9A, -0xC2, 0xF7, 0x70, 0x9B, 0x40, 0xAA, 0x60, 0xAB, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF7, 0x54, 0x9A, +0xA2, 0xF7, 0x78, 0x9B, 0x40, 0xAA, 0x60, 0xAB, 0x6E, 0xEA, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0x29, 0xF4, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x49, 0xF4, 0x01, 0x4A, 0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0x49, 0xF4, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x49, 0xF4, 0x19, 0x4A, 0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0x69, 0xF4, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x69, 0xF4, 0x11, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF7, -0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, -0x44, 0x9A, 0x80, 0x9B, 0xA4, 0x67, 0x4C, 0xED, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, +0x4C, 0x9A, 0x80, 0x9B, 0xA4, 0x67, 0x4C, 0xED, 0x4E, 0xED, 0x02, 0x25, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF7, 0x58, 0x9A, 0x01, 0x6B, 0x40, 0x9A, +0xC2, 0xF7, 0x40, 0x9A, 0x01, 0x6B, 0x40, 0x9A, 0x6C, 0xEA, 0x60, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF7, 0x5C, 0x9A, 0x00, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF7, 0x40, 0x9A, 0xE0, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x44, 0x9A, -0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, -0x48, 0x9A, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF7, 0x4C, 0x9A, 0x80, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF7, 0x50, 0x9A, 0x40, 0x9A, -0x41, 0x22, 0x30, 0xF0, 0x20, 0x69, 0xE2, 0xF7, -0x34, 0x99, 0x60, 0xD9, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF7, 0x78, 0x9B, 0x00, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF7, 0x7C, 0x9B, 0xE0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x60, 0x9B, -0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, -0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF7, 0x7C, 0x9B, 0x80, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF0, 0x68, 0x9B, 0x30, 0xF0, -0x20, 0x6C, 0xE2, 0xF4, 0x84, 0x9C, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, +0xC2, 0xF7, 0x44, 0x9A, 0x00, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF7, 0x48, 0x9A, 0xE0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF7, 0x4C, 0x9A, +0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF7, +0x50, 0x9A, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF7, 0x54, 0x9A, 0x80, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF7, 0x58, 0x9A, 0x40, 0x9A, +0x41, 0x22, 0x30, 0xF0, 0x20, 0x69, 0xC2, 0xF7, +0x3C, 0x99, 0x60, 0xD9, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF7, 0x60, 0x9B, 0x00, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF7, 0x64, 0x9B, 0xE0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, 0x68, 0x9B, +0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, +0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x02, 0xF7, 0x64, 0x9B, 0x80, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF7, 0x70, 0x9B, 0x30, 0xF0, +0x20, 0x6C, 0xC2, 0xF4, 0x8C, 0x9C, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x5C, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x77, 0xF0, 0x24, 0x6C, 0xC0, 0xF1, 0x04, 0x4C, 0xAE, 0xB8, 0x00, 0x65, 0xA0, 0xDC, 0x9A, 0xB8, 0x00, 0x65, 0xBB, 0xB8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x69, 0xF4, 0x02, 0x4A, 0x40, 0xDB, 0x07, 0x97, +0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, +0x69, 0xF4, 0x12, 0x4A, 0x40, 0xDB, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x89, 0xF5, 0x11, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x74, 0x9A, 0x63, 0x23, +0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, +0xA9, 0xF5, 0x01, 0x4A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF5, 0x7C, 0x9A, 0x63, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xED, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0x54, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0xEE, 0xCD, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF5, 0x54, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xEF, 0xCD, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x54, 0x9A, 0x08, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xF0, 0xCD, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x54, 0x9A, -0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xF1, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0x54, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0xF2, 0xCD, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF5, 0x54, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xF3, 0xCD, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF5, 0x74, 0x9B, 0xFF, 0x6A, -0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x27, 0xCE, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF5, -0x74, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xF4, 0xCD, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF5, 0x74, 0x9B, 0x08, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xF5, 0xCD, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF5, -0x74, 0x9B, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xF6, 0xCD, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x78, 0x9A, 0x14, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF3, 0x5C, 0x9A, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xFA, 0xCD, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF3, 0x4C, 0x9A, 0xC3, 0xF5, 0x78, 0x9B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x23, 0xCE, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x7C, 0x9A, -0x4C, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0xF7, 0xCD, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x5C, 0x9A, 0x02, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, -0xF8, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0x5C, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x02, 0x6C, 0x00, 0x18, 0xF7, 0xCD, 0x30, 0xF0, +0xEE, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, +0x5C, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xEF, 0xCD, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF5, 0x5C, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xF0, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x5C, 0x9A, 0x08, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, -0xF8, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0x5C, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x03, 0x6C, 0x00, 0x18, 0xF7, 0xCD, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x5C, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0xF8, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0x5C, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x04, 0x6C, 0x00, 0x18, 0xF7, 0xCD, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x5C, 0x9A, 0x80, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, -0xF8, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x00, 0x6B, 0x77, 0xDA, 0x78, 0xDA, -0x79, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, -0x64, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x89, 0xF5, -0x12, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0x69, 0xF7, 0x15, 0x4A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0x64, 0x9A, 0x15, 0x23, 0xFF, 0x6A, 0x01, 0x4A, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x5C, 0xCE, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x00, 0x6B, 0x73, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x69, 0xF7, 0x16, 0x4A, 0x40, 0xDB, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0xC9, 0xF7, 0x05, 0x4A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, -0x78, 0x9A, 0x2B, 0x23, 0x10, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x58, 0xCE, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF5, 0x58, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x54, 0xCE, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x58, 0x9A, -0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0xDF, 0xCD, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, -0x78, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x50, 0xCE, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF5, 0x78, 0x9B, 0x00, 0xF2, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xF1, 0xCD, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x5C, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xF2, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, +0x5C, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xF3, 0xCD, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF5, 0x5C, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xF4, 0xCD, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF5, 0x7C, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x28, 0xCE, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF5, +0x7C, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xF5, 0xCD, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF5, 0x7C, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x4C, 0xCE, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, -0x7C, 0x9A, 0x06, 0x23, 0x08, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x48, 0xCE, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF5, 0x60, 0x9A, -0x32, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0x3F, 0xCE, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0x60, 0x9B, 0xFF, 0x6A, -0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, -0x00, 0x18, 0x3F, 0xCE, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0x60, 0x9B, 0x00, 0xF2, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, -0x3F, 0xCE, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0x60, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x3F, 0xCE, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0x60, 0x9B, -0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x04, 0x6C, 0x00, 0x18, 0x3F, 0xCE, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF5, 0x64, 0x9A, 0x32, 0x23, -0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, -0x00, 0x18, 0xE3, 0xCD, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0x64, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0xF6, 0xCD, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF5, +0x7C, 0x9B, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xF7, 0xCD, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF5, 0x60, 0x9A, 0x14, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF3, 0x54, 0x9A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xFB, 0xCD, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF3, 0x44, 0x9A, 0xE3, 0xF5, 0x60, 0x9B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x24, 0xCE, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, 0x64, 0x9A, +0x4C, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0xF8, 0xCD, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF5, 0x44, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, -0xE3, 0xCD, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0x64, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0xE3, 0xCD, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0x64, 0x9B, +0xF9, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, +0x44, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x02, 0x6C, 0x00, 0x18, 0xF8, 0xCD, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF5, 0x44, 0x9A, 0x08, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0xF9, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, +0x44, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0xF8, 0xCD, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF5, 0x44, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0xF9, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, +0x44, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0xF8, 0xCD, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF5, 0x44, 0x9A, 0x80, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, +0xF9, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x00, 0x6B, 0x77, 0xDA, 0x78, 0xDA, +0x79, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, +0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xA9, 0xF5, +0x02, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x89, 0xF7, 0x05, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, +0x6C, 0x9A, 0x15, 0x23, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x48, 0xCE, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x00, 0x6B, 0x73, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, +0x89, 0xF7, 0x06, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0xC9, 0xF7, 0x15, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF5, +0x60, 0x9A, 0x2B, 0x23, 0x10, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x44, 0xCE, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF5, 0x40, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x40, 0xCE, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF5, 0x40, 0x9A, +0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xE0, 0xCD, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, +0x60, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x3C, 0xCE, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF5, 0x60, 0x9B, 0x00, 0xF2, +0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x38, 0xCE, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF5, +0x64, 0x9A, 0x06, 0x23, 0x08, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x34, 0xCE, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF5, 0x68, 0x9A, +0x32, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x5F, 0xCE, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF5, 0x68, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0x5F, 0xCE, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF5, 0x68, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0x5F, 0xCE, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, +0x68, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x5F, 0xCE, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0x68, 0x9B, +0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0x5F, 0xCE, 0x30, 0xF0, +0x20, 0x6A, 0xA3, 0xF5, 0x6C, 0x9A, 0x32, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xE4, 0xCD, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF5, 0x6C, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0xE4, 0xCD, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, +0x6C, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0xE4, 0xCD, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0x6C, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x03, 0x6C, 0x00, 0x18, 0xE3, 0xCD, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0x64, 0x9B, 0x01, 0xF0, +0x03, 0x6C, 0x00, 0x18, 0xE4, 0xCD, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF5, 0x6C, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, -0x00, 0x18, 0xE3, 0xCD, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x00, 0x6B, 0x68, 0xDA, +0x00, 0x18, 0xE4, 0xCD, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF5, 0x00, 0x4A, 0x00, 0x6B, 0x68, 0xDA, 0x69, 0xDA, 0x6A, 0xDA, 0x6B, 0xDA, 0x6C, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0xC9, 0xF7, 0x06, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0xC9, 0xF7, 0x16, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0xAC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, 0xB4, 0x9B, 0x00, 0x6B, 0xFF, 0x6A, 0x60, 0xC5, 0x30, 0xF0, -0x20, 0x6B, 0x8C, 0xEA, 0x03, 0xF0, 0x90, 0x9B, +0x20, 0x6B, 0x8C, 0xEA, 0xE2, 0xF7, 0x98, 0x9B, 0x00, 0xF3, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, -0x60, 0x9C, 0x42, 0xF5, 0xF4, 0x9F, 0xCD, 0xEB, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF0, -0x94, 0x9C, 0x01, 0x6B, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF0, 0x98, 0x9C, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF0, 0x9C, 0x9C, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF0, -0xC0, 0x9C, 0x80, 0x9E, 0xEC, 0xEC, 0x80, 0xDE, -0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF0, 0x84, 0x9C, +0x60, 0x9C, 0x22, 0xF5, 0xFC, 0x9F, 0xCD, 0xEB, +0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF7, +0x9C, 0x9C, 0x01, 0x6B, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6C, 0x03, 0xF0, 0x80, 0x9C, 0x60, 0xC4, +0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF0, 0x84, 0x9C, +0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF0, +0xC8, 0x9C, 0x80, 0x9E, 0xEC, 0xEC, 0x80, 0xDE, +0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF0, 0x8C, 0x9C, 0x40, 0xC4, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x48, 0x9A, 0x60, 0xA2, 0x01, 0x6A, +0x03, 0xF0, 0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x44, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, +0x03, 0xF0, 0x4C, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x6C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, 0x74, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x00, 0x6D, -0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, -0xF0, 0x9B, 0x00, 0xF3, 0x01, 0x68, 0x0B, 0xE8, +0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, +0xF8, 0x9B, 0x00, 0xF3, 0x01, 0x68, 0x0B, 0xE8, 0x60, 0x9F, 0x0C, 0xEB, 0x60, 0xDF, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF0, 0x74, 0x9B, 0x01, 0x6F, +0x20, 0x6B, 0xE2, 0xF7, 0x7C, 0x9B, 0x01, 0x6F, 0xE0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, -0x7C, 0x9B, 0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF0, 0x64, 0x9B, 0x80, 0xC3, 0x00, 0x6B, +0x64, 0x9B, 0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF0, 0x6C, 0x9B, 0x80, 0xC3, 0x00, 0x6B, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xA6, -0x23, 0xF0, 0x84, 0x9C, 0x01, 0x4B, 0x01, 0x4E, +0x03, 0xF0, 0x8C, 0x9C, 0x01, 0x4B, 0x01, 0x4E, 0xA0, 0xC4, 0xFF, 0x6C, 0x8C, 0xEB, 0x43, 0xEB, -0xF4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, -0x4C, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0x01, 0x90, +0xF4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, +0x54, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x54, 0x9A, 0x00, 0x6D, 0x05, 0x6C, 0xC5, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x4C, 0x9A, 0x05, 0x97, 0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x5D, 0x67, 0x90, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x54, 0x9A, 0x05, 0x6C, 0x01, 0x6D, 0x04, 0x06, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x48, 0x9A, 0x60, 0xA2, 0x01, 0x6A, +0x03, 0xF0, 0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x48, 0x9A, 0x40, 0xEA, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x54, 0x9A, 0x00, 0x6D, 0x06, 0x6C, 0xC5, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x48, 0x9A, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x54, 0x9A, 0x00, 0x6D, 0x04, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x48, 0x9A, 0x60, 0xA2, 0x01, 0x6A, +0x03, 0xF0, 0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x48, 0x9A, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF0, 0x8C, 0x9A, 0x00, 0x6A, 0x00, 0xF3, +0xE2, 0xF7, 0x94, 0x9A, 0x00, 0x6A, 0x00, 0xF3, 0x00, 0x6D, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF0, 0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6E, -0x42, 0xF5, 0xD4, 0x9E, 0x40, 0x9B, 0xAD, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, -0x74, 0x9B, 0x01, 0x6A, 0x03, 0x6D, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x78, 0x9B, +0xE2, 0xF7, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6E, +0x22, 0xF5, 0xDC, 0x9E, 0x40, 0x9B, 0xAD, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, +0x7C, 0x9B, 0x01, 0x6A, 0x03, 0x6D, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x60, 0x9B, 0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, -0x7C, 0x9B, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF0, 0xA0, 0x9B, 0x60, 0x9D, 0xCC, 0xEB, -0x60, 0xDD, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, -0x64, 0x9B, 0x61, 0x6D, 0xAB, 0xED, 0xA0, 0xC3, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0x48, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, +0x64, 0x9B, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF0, 0xA8, 0x9B, 0x60, 0x9D, 0xCC, 0xEB, +0x60, 0xDD, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, +0x6C, 0x9B, 0x61, 0x6D, 0xAB, 0xED, 0xA0, 0xC3, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, +0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, +0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, 0x84, 0x9A, 0xA0, 0xA3, 0xA1, 0xC4, 0xA0, 0xA3, 0x60, 0xF6, 0x84, 0x9A, 0xA2, 0xC4, 0x60, 0xA3, 0x60, 0xF6, 0x44, 0x9A, 0x63, 0xC2, 0x20, 0xE8, @@ -44521,108 +45063,108 @@ u8 array_mp_8822c_fw_spic[] = { 0xE0, 0xF3, 0x40, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x54, 0x9A, 0x00, 0x6D, 0x60, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF0, 0x48, 0x9A, 0x60, 0xA2, +0x20, 0x6A, 0x03, 0xF0, 0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x48, 0x9A, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x40, 0x9A, 0x04, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, -0xAC, 0x9A, 0x00, 0x6A, 0x00, 0xF3, 0x01, 0x6C, -0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, -0x70, 0x9A, 0x8B, 0xEC, 0x01, 0x6E, 0x40, 0x9B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, +0xB4, 0x9A, 0x00, 0x6A, 0x00, 0xF3, 0x01, 0x6C, +0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, +0x78, 0x9A, 0x8B, 0xEC, 0x01, 0x6E, 0x40, 0x9B, 0x02, 0x37, 0x8C, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF0, 0x54, 0x9A, 0x03, 0x6B, +0x20, 0x6A, 0xE2, 0xF7, 0x5C, 0x9A, 0x03, 0x6B, 0xE2, 0x34, 0xC0, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF0, 0x5C, 0x9A, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF0, 0x44, 0x9A, 0x52, 0x6B, +0x03, 0xF0, 0x44, 0x9A, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF0, 0x4C, 0x9A, 0x52, 0x6B, 0x60, 0xC2, 0xFF, 0x6B, 0x6C, 0xEC, 0x6C, 0xEF, 0x6C, 0xE8, 0x80, 0xC2, 0xE0, 0xC2, 0x00, 0xC2, -0xC0, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0x48, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0xC0, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, +0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x48, 0x9A, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x01, 0x6A, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x40, 0x9A, 0x04, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, -0xAC, 0x9A, 0x00, 0x6A, 0x00, 0xF3, 0x01, 0x6C, -0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, -0x70, 0x9A, 0x8B, 0xEC, 0x01, 0x6E, 0x40, 0x9B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, +0xB4, 0x9A, 0x00, 0x6A, 0x00, 0xF3, 0x01, 0x6C, +0x40, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, +0x78, 0x9A, 0x8B, 0xEC, 0x01, 0x6E, 0x40, 0x9B, 0x02, 0x37, 0x8C, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF0, 0x54, 0x9A, 0x03, 0x6B, +0x20, 0x6A, 0xE2, 0xF7, 0x5C, 0x9A, 0x03, 0x6B, 0xE2, 0x34, 0xC0, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF0, 0x5C, 0x9A, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF0, 0x44, 0x9A, 0x20, 0x6B, +0x03, 0xF0, 0x44, 0x9A, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF0, 0x4C, 0x9A, 0x20, 0x6B, 0x60, 0xC2, 0xFF, 0x6B, 0x6C, 0xEC, 0x6C, 0xEF, 0x6C, 0xE8, 0x80, 0xC2, 0xE0, 0xC2, 0x00, 0xC2, -0xC0, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0x48, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0xC0, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, +0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x48, 0x9A, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x01, 0x6A, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x40, 0x9A, 0x09, 0xD5, 0x04, 0x67, 0x26, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x54, 0x9A, 0x00, 0x6B, 0x00, 0xF3, 0x01, 0x6C, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x78, 0x9A, 0x8B, 0xEC, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x5C, 0x9A, 0x01, 0x6B, 0xFF, 0x6C, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF0, 0x5C, 0x9A, 0x03, 0x6B, +0x20, 0x6A, 0x03, 0xF0, 0x44, 0x9A, 0x03, 0x6B, 0x60, 0xC2, 0x02, 0x6B, 0x00, 0xF6, 0x00, 0x32, -0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, -0x60, 0x9B, 0x0C, 0xEB, 0x62, 0x33, 0x62, 0x33, +0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF3, +0x78, 0x9B, 0x0C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x8C, 0xEB, 0x60, 0x33, 0x6D, 0xEA, 0x1F, 0xF7, 0x00, 0x6B, 0x0C, 0xEB, 0x60, 0x33, 0x6D, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF0, 0x6C, 0x9B, 0x00, 0x6C, 0x40, 0xDB, 0x71, 0x67, 0xA2, 0xA3, 0x41, 0xA3, 0x04, 0x4C, 0xA0, 0x35, 0xA0, 0x35, 0x40, 0x32, 0xAD, 0xEA, 0xA0, 0xA3, 0x0C, 0x74, 0xAD, 0xEA, 0xA3, 0xA3, 0x04, 0x4B, 0x00, 0xF6, 0xA0, 0x35, 0xAD, 0xEA, 0x30, 0xF0, 0x20, 0x6D, -0x23, 0xF0, 0xA4, 0x9D, 0x40, 0xDD, 0xEB, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x4C, 0x9A, +0x03, 0xF0, 0xAC, 0x9D, 0x40, 0xDD, 0xEB, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x54, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0x0C, 0x6A, 0x08, 0x10, 0x4D, 0xE1, 0x80, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF0, 0x64, 0x9B, 0x04, 0x4A, 0x80, 0xDB, +0x03, 0xF0, 0x6C, 0x9B, 0x04, 0x4A, 0x80, 0xDB, 0x09, 0x93, 0x63, 0xEA, 0xF5, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF0, 0x48, 0x9A, 0x60, 0xA2, +0x20, 0x6A, 0x03, 0xF0, 0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x48, 0x9A, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x01, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0xFF, 0x63, 0x01, 0xD1, 0x00, 0xD0, 0x00, 0x6B, 0x04, 0xD6, 0x63, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x54, 0x9A, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0xD0, 0x9A, -0xE2, 0xF4, 0xE4, 0x9F, 0x11, 0x5D, 0x40, 0x9E, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0xD8, 0x9A, +0xC2, 0xF4, 0xEC, 0x9F, 0x11, 0x5D, 0x40, 0x9E, 0xEC, 0xEA, 0x00, 0xF3, 0x00, 0x6F, 0xED, 0xEA, -0x40, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, -0x54, 0x9A, 0x01, 0x6E, 0x30, 0xF0, 0x20, 0x6F, -0xC0, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0xC0, 0x9A, 0x42, 0xF5, 0xF4, 0x9F, 0x40, 0x9E, +0x40, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, +0x5C, 0x9A, 0x01, 0x6E, 0x30, 0xF0, 0x20, 0x6F, +0xC0, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, +0xC8, 0x9A, 0x22, 0xF5, 0xFC, 0x9F, 0x40, 0x9E, 0xEC, 0xEA, 0x40, 0xDE, 0x10, 0x6A, 0x02, 0x60, 0xFF, 0x6A, 0xAC, 0xEA, 0x30, 0xF0, 0x20, 0x6E, -0x03, 0xF0, 0xD8, 0x9E, 0x03, 0x6F, 0x82, 0x31, +0x03, 0xF0, 0xC0, 0x9E, 0x03, 0x6F, 0x82, 0x31, 0x40, 0xC6, 0x30, 0xF0, 0x20, 0x6E, 0x03, 0xF0, -0xDC, 0x9E, 0x22, 0x30, 0xE0, 0xC6, 0x30, 0xF0, -0x20, 0x6E, 0x23, 0xF0, 0xC4, 0x9E, 0xE0, 0xC6, +0xC4, 0x9E, 0x22, 0x30, 0xE0, 0xC6, 0x30, 0xF0, +0x20, 0x6E, 0x03, 0xF0, 0xCC, 0x9E, 0xE0, 0xC6, 0xFF, 0x6F, 0xEC, 0xE8, 0xEC, 0xE9, 0x8C, 0xEF, 0x00, 0xC6, 0x20, 0xC6, 0xE0, 0xC6, 0x30, 0xF0, -0x20, 0x6E, 0x03, 0xF0, 0xCC, 0x9E, 0x01, 0x6F, -0xE0, 0xC6, 0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF0, -0xC8, 0x9E, 0xE0, 0xA6, 0x01, 0x6E, 0xEC, 0xEE, +0x20, 0x6E, 0xE2, 0xF7, 0xD4, 0x9E, 0x01, 0x6F, +0xE0, 0xC6, 0x30, 0xF0, 0x20, 0x6E, 0x03, 0xF0, +0xD0, 0x9E, 0xE0, 0xA6, 0x01, 0x6E, 0xEC, 0xEE, 0xF8, 0x2E, 0x04, 0x96, 0x7D, 0xE6, 0xC3, 0x67, -0x08, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x23, 0xF0, -0x04, 0x98, 0x01, 0x4E, 0x00, 0xA0, 0x00, 0xC7, +0x08, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x03, 0xF0, +0x0C, 0x98, 0x01, 0x4E, 0x00, 0xA0, 0x00, 0xC7, 0x01, 0x4F, 0x61, 0xE2, 0x03, 0xEE, 0xF5, 0x61, 0x57, 0xE5, 0x51, 0xE4, 0x66, 0x67, 0x9C, 0x2D, 0x01, 0x91, 0x00, 0x90, 0x01, 0x6A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xDB, 0x63, 0x49, 0x62, 0x48, 0xD1, 0x47, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF3, 0x58, 0x9A, 0x4A, 0xD4, 0x25, 0x67, +0xA2, 0xF3, 0x50, 0x9A, 0x4A, 0xD4, 0x25, 0x67, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x49, 0xE6, 0x5C, 0x32, 0x30, 0x4A, 0x44, 0xD2, 0x33, 0x10, 0x4A, 0x93, 0xFF, 0x6A, 0x6C, 0xEA, @@ -44631,7 +45173,7 @@ u8 array_mp_8822c_fw_spic[] = { 0xFF, 0x68, 0x01, 0x48, 0x43, 0xE0, 0x07, 0x10, 0x00, 0xF1, 0x00, 0x59, 0x03, 0x61, 0xFF, 0x68, 0x01, 0x48, 0x01, 0x10, 0x11, 0x67, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF4, 0x6C, 0x9A, 0x44, 0x92, +0x20, 0x6A, 0x22, 0xF4, 0x64, 0x9A, 0x44, 0x92, 0x6D, 0xE2, 0x00, 0x6A, 0xA0, 0xA3, 0x04, 0x06, 0x51, 0xE6, 0x01, 0x4A, 0x03, 0xEA, 0xA0, 0xC4, 0x01, 0x4B, 0xF8, 0x61, 0x30, 0xF0, 0x20, 0x6A, @@ -44641,7 +45183,7 @@ u8 array_mp_8822c_fw_spic[] = { 0xCC, 0x29, 0x49, 0x97, 0x48, 0x91, 0x47, 0x90, 0x25, 0x63, 0x00, 0xEF, 0xDB, 0x63, 0x49, 0x62, 0x48, 0xD1, 0x47, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF3, 0x58, 0x9A, 0x4A, 0xD4, 0x02, 0xF0, +0xA2, 0xF3, 0x50, 0x9A, 0x4A, 0xD4, 0x02, 0xF0, 0x01, 0x5D, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, 0x05, 0x67, 0x6C, 0xEA, 0x49, 0xE6, 0x5C, 0x32, 0x44, 0xD2, 0x27, 0x61, 0x02, 0xF0, 0x00, 0x68, @@ -44649,7 +45191,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x02, 0x61, 0xFF, 0x69, 0x01, 0x49, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x5C, 0x9A, 0x4A, 0x94, 0xB1, 0x67, 0x04, 0x06, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF4, 0x6C, 0x9A, 0x44, 0x92, +0x20, 0x6A, 0x22, 0xF4, 0x64, 0x9A, 0x44, 0x92, 0x6D, 0xE2, 0x00, 0x6A, 0xBD, 0x67, 0x51, 0xE5, 0x90, 0xA4, 0x01, 0x4A, 0x23, 0xEA, 0x80, 0xC3, 0x01, 0x4B, 0xF8, 0x61, 0x44, 0x92, 0x4A, 0x95, @@ -44661,16 +45203,16 @@ u8 array_mp_8822c_fw_spic[] = { 0xFF, 0x69, 0x8C, 0xE9, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x5C, 0x9A, 0x02, 0x6C, 0x40, 0xEA, 0xE0, 0xF3, 0x40, 0x98, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x6C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x74, 0x9A, 0x00, 0x6A, 0x00, 0xF3, 0x01, 0x6D, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x90, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, 0x98, 0x9A, 0xAB, 0xED, 0x40, 0x9C, 0xAC, 0xEA, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF0, 0x94, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF7, 0x9C, 0x9C, 0x01, 0x6A, 0x3E, 0x6D, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF0, 0x9C, 0x9C, 0xAB, 0xED, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF0, -0x84, 0x9C, 0xA0, 0xC4, 0x20, 0xC4, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x48, 0x9A, +0x20, 0x6C, 0x03, 0xF0, 0x84, 0x9C, 0xAB, 0xED, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF0, +0x8C, 0x9C, 0xA0, 0xC4, 0x20, 0xC4, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x48, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, @@ -44688,16 +45230,16 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x5C, 0x9A, 0x02, 0x6C, 0x40, 0xEA, 0xE0, 0xF3, 0x40, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF0, 0x6C, 0x9A, 0x00, 0x6A, 0x00, 0xF3, +0xE2, 0xF7, 0x74, 0x9A, 0x00, 0x6A, 0x00, 0xF3, 0x01, 0x6D, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF0, 0x90, 0x9A, 0xAB, 0xED, 0x40, 0x9C, +0xE2, 0xF7, 0x98, 0x9A, 0xAB, 0xED, 0x40, 0x9C, 0xAC, 0xEA, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF0, 0x94, 0x9C, 0x01, 0x6A, 0x3B, 0x6D, +0xE2, 0xF7, 0x9C, 0x9C, 0x01, 0x6A, 0x3B, 0x6D, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF0, -0x9C, 0x9C, 0xAB, 0xED, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6C, 0x23, 0xF0, 0x84, 0x9C, 0xA0, 0xC4, +0x84, 0x9C, 0xAB, 0xED, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6C, 0x03, 0xF0, 0x8C, 0x9C, 0xA0, 0xC4, 0x20, 0xC4, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x48, 0x9A, 0x60, 0xA2, 0x01, 0x6A, +0x03, 0xF0, 0x50, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x48, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x58, 0x9A, 0x40, 0xEA, @@ -44709,32 +45251,32 @@ u8 array_mp_8822c_fw_spic[] = { 0x06, 0x91, 0x05, 0x90, 0x01, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, 0xEC, 0xEA, +0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0xEC, 0xEA, 0x05, 0xD2, 0x06, 0xF1, 0x58, 0x9B, 0x04, 0x67, 0x0B, 0xD5, 0x06, 0xF1, 0x95, 0xA3, 0x0C, 0xD6, 0x62, 0x67, 0x00, 0x69, 0x06, 0x10, 0x01, 0x49, 0xFF, 0x6D, 0xAC, 0xE9, 0x23, 0xEC, 0x5B, 0x61, 0x63, 0xE0, 0x43, 0xE8, 0xF8, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, 0x06, 0xF1, +0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x06, 0xF1, 0x56, 0xA3, 0x04, 0xD3, 0x2E, 0xEA, 0x06, 0x22, -0x91, 0x67, 0x00, 0x18, 0x08, 0xD6, 0x04, 0x92, +0x91, 0x67, 0x00, 0x18, 0x0C, 0xD6, 0x04, 0x92, 0x06, 0xF1, 0x36, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF6, 0x5D, 0xA2, 0x01, 0x72, 0x08, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x5C, 0x9A, +0xA9, 0xF6, 0x45, 0xA2, 0x01, 0x72, 0x08, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x44, 0x9A, 0x00, 0xF6, 0x02, 0x31, 0x4C, 0xE8, 0x07, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x44, 0x9A, 0x03, 0xEA, 0x35, 0x61, 0x00, 0x69, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, 0x06, 0xF1, +0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x06, 0xF1, 0x57, 0xA3, 0x04, 0xD3, 0x2E, 0xEA, 0x06, 0x22, -0x91, 0x67, 0x00, 0x18, 0x3D, 0xD6, 0x04, 0x92, +0x91, 0x67, 0x00, 0x18, 0x41, 0xD6, 0x04, 0x92, 0x06, 0xF1, 0x37, 0xC2, 0x05, 0x93, 0x06, 0x2B, 0x0B, 0x95, 0x0C, 0x96, 0x90, 0x67, 0x00, 0x18, -0x89, 0xD5, 0x1E, 0x10, 0x05, 0x92, 0x01, 0x72, +0x8D, 0xD5, 0x1E, 0x10, 0x05, 0x92, 0x01, 0x72, 0x06, 0x61, 0x0B, 0x95, 0x0C, 0x96, 0x90, 0x67, -0x00, 0x18, 0x4A, 0xD5, 0x15, 0x10, 0x05, 0x93, +0x00, 0x18, 0x4E, 0xD5, 0x15, 0x10, 0x05, 0x93, 0x02, 0x73, 0x04, 0x61, 0x90, 0x67, 0x00, 0x18, -0x26, 0xD5, 0x0E, 0x10, 0x05, 0x92, 0x03, 0x72, -0x04, 0x61, 0x90, 0x67, 0x00, 0x18, 0x02, 0xD5, +0x2A, 0xD5, 0x0E, 0x10, 0x05, 0x92, 0x03, 0x72, +0x04, 0x61, 0x90, 0x67, 0x00, 0x18, 0x06, 0xD5, 0x07, 0x10, 0x05, 0x93, 0x00, 0x6A, 0x04, 0x73, 0x03, 0x60, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, @@ -44743,205 +45285,205 @@ u8 array_mp_8822c_fw_spic[] = { 0x78, 0x67, 0x4B, 0xE6, 0x6B, 0xEB, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xEC, 0xEA, 0x63, 0xF5, 0x18, 0x4B, +0x20, 0x6B, 0xEC, 0xEA, 0x83, 0xF5, 0x00, 0x4B, 0x04, 0xD2, 0x26, 0xF1, 0x40, 0x9B, 0x0A, 0xD4, 0x91, 0xE5, 0x83, 0xEA, 0x0B, 0xD5, 0x0C, 0xD6, 0x00, 0x6A, 0x45, 0x61, 0x0A, 0x94, 0x06, 0xF1, -0xD8, 0x9B, 0x00, 0x18, 0xAD, 0xD6, 0x22, 0x67, +0xD8, 0x9B, 0x00, 0x18, 0xB1, 0xD6, 0x22, 0x67, 0x1A, 0x22, 0xA2, 0x67, 0x30, 0xF0, 0x20, 0x6A, -0x0A, 0x94, 0x42, 0xF3, 0xDC, 0x9A, 0x00, 0x18, -0xAD, 0xD6, 0x02, 0x67, 0x07, 0x22, 0x0A, 0x94, +0x0A, 0x94, 0x42, 0xF3, 0xD4, 0x9A, 0x00, 0x18, +0xB1, 0xD6, 0x02, 0x67, 0x07, 0x22, 0x0A, 0x94, 0x0C, 0x96, 0x04, 0x97, 0xA2, 0x67, 0x00, 0x18, -0x6F, 0xD6, 0x2C, 0x22, 0x0A, 0x93, 0x0C, 0x92, +0x73, 0xD6, 0x2C, 0x22, 0x0A, 0x93, 0x0C, 0x92, 0x04, 0x97, 0x71, 0xE0, 0x17, 0xE1, 0x19, 0xE2, -0x00, 0x18, 0x6F, 0xD6, 0x23, 0x22, 0x0B, 0x92, +0x00, 0x18, 0x73, 0xD6, 0x23, 0x22, 0x0B, 0x92, 0x0A, 0x93, 0x37, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF3, 0xDC, 0x9A, 0x6D, 0xE1, 0x83, 0x67, -0x05, 0xD3, 0x00, 0x18, 0xAD, 0xD6, 0x02, 0x67, +0x42, 0xF3, 0xD4, 0x9A, 0x6D, 0xE1, 0x83, 0x67, +0x05, 0xD3, 0x00, 0x18, 0xB1, 0xD6, 0x02, 0x67, 0x08, 0x22, 0x0C, 0x93, 0x05, 0x94, 0x04, 0x97, -0xA2, 0x67, 0x39, 0xE3, 0x00, 0x18, 0x6F, 0xD6, +0xA2, 0x67, 0x39, 0xE3, 0x00, 0x18, 0x73, 0xD6, 0x0D, 0x22, 0x0A, 0x92, 0x0B, 0x93, 0x04, 0x97, 0x51, 0xE1, 0x0C, 0x92, 0x37, 0xE3, 0x39, 0xE0, 0x11, 0xE4, 0x17, 0xE5, 0xD9, 0xE2, 0x00, 0x18, -0x6F, 0xD6, 0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, +0x73, 0xD6, 0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x6D, 0xC5, 0x67, -0x03, 0x6F, 0x00, 0x18, 0xB3, 0xD6, 0x05, 0x97, +0x03, 0x6F, 0x00, 0x18, 0xB7, 0xD6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x6D, 0xC5, 0x67, 0x02, 0x6F, 0x00, 0x18, -0xB3, 0xD6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xB7, 0xD6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x6F, 0x00, 0x18, -0xB3, 0xD6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xB7, 0xD6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x01, 0x6F, 0x00, 0x18, -0xB3, 0xD6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xB7, 0xD6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x22, 0xF5, 0x84, 0x9C, 0x40, 0x9B, 0x30, 0xF0, -0x20, 0x6E, 0xE2, 0xF4, 0xD0, 0x9E, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, -0x6C, 0x9A, 0x00, 0x6A, 0x00, 0x6C, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x50, 0x9A, -0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0xA0, 0x9A, 0x40, 0x9D, 0xCD, 0xEA, 0x40, 0xDD, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x54, 0x9A, +0x03, 0xF0, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x02, 0xF5, 0x8C, 0x9C, 0x40, 0x9B, 0x30, 0xF0, +0x20, 0x6E, 0xC2, 0xF4, 0xD8, 0x9E, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF7, +0x74, 0x9A, 0x00, 0x6A, 0x00, 0x6C, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x58, 0x9A, +0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, +0xA8, 0x9A, 0x40, 0x9D, 0xCD, 0xEA, 0x40, 0xDD, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x5C, 0x9A, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0xC2, 0x01, 0x6A, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, 0x84, 0x9B, 0x80, 0xF2, 0x48, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF3, 0x48, 0x9A, 0x40, 0xEA, 0x00, 0x18, -0xAD, 0xCE, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF1, -0x98, 0x9A, 0x42, 0xF3, 0x7C, 0x9B, 0x83, 0xEB, +0xB1, 0xCE, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF1, +0x98, 0x9A, 0x42, 0xF3, 0x74, 0x9B, 0x83, 0xEB, 0x0D, 0x60, 0x26, 0xF1, 0x65, 0xA2, 0x0A, 0x2B, 0x06, 0xF1, 0x75, 0xA2, 0x06, 0xF1, 0x9C, 0xA2, 0x78, 0xEC, 0x12, 0xEB, 0x00, 0xF6, 0x60, 0x33, 0x26, 0xF1, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x06, 0xF1, 0x90, 0xA2, +0x83, 0xF5, 0x00, 0x4A, 0x06, 0xF1, 0x90, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, 0x06, 0xF1, 0x70, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0B, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0xB8, 0x9B, -0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF0, 0xDC, 0x9E, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0xA0, 0x9B, +0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF0, 0xC4, 0x9E, 0x60, 0x9D, 0xCC, 0xEB, 0x0C, 0x10, 0x01, 0x72, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, -0xB8, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0x42, 0xF3, -0xDC, 0x9E, 0x60, 0x9D, 0xCD, 0xEB, 0x60, 0xDD, +0xA0, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0x42, 0xF3, +0xD4, 0x9E, 0x60, 0x9D, 0xCD, 0xEB, 0x60, 0xDD, 0x05, 0x5C, 0x60, 0xF1, 0x1A, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x88, 0x34, 0xA2, 0xF2, 0x10, 0x4B, +0x20, 0x6B, 0x88, 0x34, 0xA2, 0xF2, 0x08, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x60, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, 0x12, 0x10, 0x01, 0x72, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x60, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x40, 0xA3, 0x80, 0x4D, 0xC0, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x02, 0x72, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x78, 0x9A, 0x5B, 0x10, 0x03, 0x72, +0x23, 0xF0, 0x60, 0x9A, 0x5B, 0x10, 0x03, 0x72, 0x40, 0xF1, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, +0x23, 0xF0, 0x60, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xE9, 0x17, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x68, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0xE2, 0x17, 0x01, 0x72, 0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0x98, 0x9A, 0xFF, 0x6A, 0x40, 0x6D, 0x60, 0xA4, +0x80, 0x9A, 0xFF, 0x6A, 0x40, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x80, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x88, 0x9B, 0x01, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x60, 0xA4, 0x04, 0x6D, 0x4C, 0xEB, 0x48, 0x10, 0x02, 0x72, 0x0F, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x60, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x68, 0x9A, 0xFE, 0x6A, 0x80, 0xA3, 0xB6, 0x17, 0x03, 0x72, 0x00, 0xF1, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x98, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, +0x23, 0xF0, 0x80, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, -0x80, 0x9A, 0x01, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, +0x88, 0x9A, 0x01, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0x4B, 0x10, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF0, 0x60, 0x9A, 0x80, 0xA3, 0xBF, 0x6A, +0x23, 0xF0, 0x68, 0x9A, 0x80, 0xA3, 0xBF, 0x6A, 0x98, 0x17, 0x01, 0x72, 0x1B, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF0, 0x98, 0x9A, 0xFF, 0x6A, +0x20, 0x6A, 0x23, 0xF0, 0x80, 0x9A, 0xFF, 0x6A, 0x40, 0x6D, 0x60, 0xA4, 0x10, 0x6E, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF0, 0x80, 0x9B, 0x60, 0xA4, +0x20, 0x6B, 0x23, 0xF0, 0x88, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0x02, 0x72, 0x0F, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x60, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x68, 0x9A, 0xEF, 0x6A, 0x80, 0xA3, 0x6A, 0x17, 0x03, 0x72, 0xA0, 0xF0, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x98, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, +0x23, 0xF0, 0x80, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, -0x80, 0x9A, 0x10, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, +0x88, 0x9A, 0x10, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, -0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, -0x60, 0x9A, 0xFF, 0xF3, 0x1F, 0x6A, 0x80, 0xAB, +0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, +0x68, 0x9A, 0xFF, 0xF3, 0x1F, 0x6A, 0x80, 0xAB, 0x83, 0x10, 0x01, 0x72, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF0, 0x78, 0x9A, 0xFF, 0x6C, +0x20, 0x6A, 0x23, 0xF0, 0x60, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF0, 0x60, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0x23, 0xF0, 0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x7F, 0x4D, 0x40, 0xAB, 0x41, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x40, 0xAB, 0x00, 0xF3, 0x00, 0x4D, 0x8C, 0xEA, 0x51, 0x10, 0x02, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x78, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x23, 0xF0, 0x60, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF0, 0x60, 0x9A, 0xFF, 0xF6, 0x1F, 0x6A, +0x23, 0xF0, 0x68, 0x9A, 0xFF, 0xF6, 0x1F, 0x6A, 0x80, 0xAB, 0x52, 0x10, 0x03, 0x72, 0x6D, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x60, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF0, 0x60, 0x9A, 0xFF, 0xF7, +0x20, 0x6A, 0x23, 0xF0, 0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x7F, 0x4D, 0x40, 0xAB, 0x41, 0x4D, 0x8C, 0xEA, 0x27, 0x10, 0x08, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF0, 0x60, 0x9A, 0xF7, 0xF7, +0x20, 0x6A, 0x23, 0xF0, 0x68, 0x9A, 0xF7, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x31, 0x10, 0x01, 0x72, 0x1E, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x60, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0xC1, 0xF7, 0x00, 0x4D, 0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x40, 0xAB, 0x06, 0xF0, 0x00, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x11, 0x10, 0x02, 0x72, 0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0x78, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, -0x60, 0x9A, 0xFD, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, +0x60, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, +0x68, 0x9A, 0xFD, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x40, 0xCB, 0x20, 0xE8, 0x03, 0x72, 0x18, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, -0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x60, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0xC1, 0xF7, 0x00, 0x4D, 0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEE, 0x4C, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x50, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x00, 0xAA, 0xE1, 0xF7, 0x1F, 0x6A, 0x0C, 0xEA, 0x30, 0xF0, -0x20, 0x68, 0x43, 0xF0, 0x04, 0x98, 0x51, 0xE4, +0x20, 0x68, 0x23, 0xF0, 0x0C, 0x98, 0x51, 0xE4, 0x6C, 0xEC, 0x80, 0xC8, 0x9C, 0x32, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF0, 0x88, 0x9C, 0x30, 0xF0, -0x20, 0x68, 0x43, 0xF0, 0x0C, 0x98, 0x91, 0xE2, +0x20, 0x6C, 0x23, 0xF0, 0x90, 0x9C, 0x30, 0xF0, +0x20, 0x68, 0x23, 0xF0, 0x14, 0x98, 0x91, 0xE2, 0x80, 0xAC, 0x01, 0xE2, 0x00, 0x98, 0x6C, 0xEC, 0x05, 0x25, 0x10, 0xF0, 0x00, 0x6D, 0xAB, 0xED, 0xAD, 0xEC, 0x6C, 0xEC, 0xD8, 0xF0, 0x00, 0x6B, -0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF0, -0x88, 0x9C, 0x91, 0xE2, 0x60, 0xCC, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF0, 0x70, 0x9B, 0x6D, 0xE2, +0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF0, +0x90, 0x9C, 0x91, 0xE2, 0x60, 0xCC, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF0, 0x78, 0x9B, 0x6D, 0xE2, 0x80, 0xA3, 0x01, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0x03, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, 0x0C, 0xEB, 0x06, 0x10, 0x1F, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, 0x0C, 0xEB, 0xE0, 0x37, 0xED, 0xEB, 0xFF, 0x76, -0x13, 0x60, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF0, -0x94, 0x9C, 0x80, 0xF4, 0xC0, 0x36, 0x6C, 0xEC, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, 0x68, 0x9B, -0x6D, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, -0x6C, 0x9B, 0x8D, 0xEE, 0x6D, 0xE2, 0xC0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x98, 0x9B, +0x13, 0x60, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF0, +0x9C, 0x9C, 0x80, 0xF4, 0xC0, 0x36, 0x6C, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, 0x60, 0x9B, +0x6D, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, +0x74, 0x9B, 0x8D, 0xEE, 0x6D, 0xE2, 0xC0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x80, 0x9B, 0x7F, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, -0x7C, 0x9B, 0x1C, 0x6C, 0x80, 0xC3, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF0, 0x60, 0x9B, 0x08, 0xF4, +0x64, 0x9B, 0x1C, 0x6C, 0x80, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF0, 0x68, 0x9B, 0x08, 0xF4, 0x13, 0x6C, 0x80, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF3, 0x84, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, +0xE2, 0xF2, 0x9C, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0x88, 0x9C, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0x80, 0x9C, 0x40, 0x9B, 0x10, 0x6D, 0x00, 0x6E, 0x8D, 0xEA, 0x40, 0xDB, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x00, 0xF4, 0x1D, 0x6C, 0x82, 0xF3, 0x08, 0x6F, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x6C, 0x9B, 0xFF, 0x6A, 0x4C, 0xED, 0x6D, 0xE4, 0xC0, 0xA3, 0x3F, 0x6C, 0xCC, 0xEC, 0x80, 0xC3, 0x07, 0x2D, 0x80, 0xA3, 0x40, 0x6D, 0x4C, 0xEC, 0xAD, 0xEC, @@ -44949,136 +45491,136 @@ u8 array_mp_8822c_fw_spic[] = { 0x07, 0x61, 0x80, 0xA3, 0x80, 0x6D, 0xAB, 0xED, 0x4C, 0xEC, 0xAD, 0xEC, 0x4C, 0xEC, 0x80, 0xC3, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF0, 0x68, 0x9B, 0xFF, 0x6A, 0xAC, 0xEA, +0x43, 0xF0, 0x70, 0x9B, 0xFF, 0x6A, 0xAC, 0xEA, 0x6D, 0xE4, 0x80, 0x9B, 0x80, 0xF4, 0x40, 0x32, 0x8D, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF4, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6E, -0x63, 0xF0, 0xCC, 0x9E, 0x6D, 0xE4, 0x40, 0x9B, -0x30, 0xF0, 0x20, 0x68, 0x63, 0xF0, 0x14, 0x98, -0xCC, 0xEA, 0x30, 0xF0, 0x20, 0x6E, 0x63, 0xF0, -0xD0, 0x9E, 0xCD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF6, 0xFC, 0x9A, 0x83, 0xF7, +0x22, 0xF4, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6E, +0x43, 0xF0, 0xD4, 0x9E, 0x6D, 0xE4, 0x40, 0x9B, +0x30, 0xF0, 0x20, 0x68, 0x43, 0xF0, 0x1C, 0x98, +0xCC, 0xEA, 0x30, 0xF0, 0x20, 0x6E, 0x43, 0xF0, +0xD8, 0x9E, 0xCD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0xE4, 0x9A, 0x83, 0xF7, 0x00, 0x6A, 0x4B, 0xEA, 0xFD, 0xE4, 0x60, 0x9F, 0x7F, 0x6E, 0x4C, 0xEB, 0x43, 0xA5, 0xCC, 0xEA, 0x0D, 0xEA, 0x6D, 0xEA, 0x40, 0xDF, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF0, 0x78, 0x9A, 0x30, 0xF0, -0x20, 0x6F, 0x22, 0xF5, 0xE4, 0x9F, 0x6D, 0xE4, +0x20, 0x6A, 0x63, 0xF0, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6F, 0x02, 0xF5, 0xEC, 0x9F, 0x6D, 0xE4, 0x40, 0x9B, 0xED, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF0, 0x7C, 0x9A, 0xFF, 0x6F, +0x20, 0x6A, 0x63, 0xF0, 0x64, 0x9A, 0xFF, 0x6F, 0x01, 0x4F, 0x6D, 0xE4, 0x40, 0x9B, 0xED, 0xEA, 0x3F, 0xF6, 0x1F, 0x4F, 0xEC, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x54, 0x9A, 0x49, 0xE4, 0x60, 0x9A, 0x40, 0xA5, 0xCC, 0xEA, -0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, -0x50, 0x9A, 0x49, 0xE4, 0xC0, 0xA2, 0x01, 0x6A, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, +0x58, 0x9A, 0x49, 0xE4, 0xC0, 0xA2, 0x01, 0x6A, 0xCC, 0xEA, 0x05, 0x22, 0x03, 0xF7, 0x01, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x07, 0x10, 0x1F, 0xF7, 0x01, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x61, 0xA5, 0x60, 0x33, 0x6D, 0xEA, 0xC2, 0xA5, 0xFF, 0x76, -0x0D, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, -0x74, 0x9B, 0x4C, 0xEB, 0x80, 0xF4, 0xC0, 0x32, -0x30, 0xF0, 0x20, 0x6E, 0x22, 0xF4, 0xC8, 0x9E, +0x0D, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, +0x7C, 0x9B, 0x4C, 0xEB, 0x80, 0xF4, 0xC0, 0x32, +0x30, 0xF0, 0x20, 0x6E, 0x22, 0xF4, 0xC0, 0x9E, 0xCD, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x6C, 0x9B, 0x6D, 0xE4, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF0, 0xC0, 0x9A, +0x23, 0xF0, 0x74, 0x9B, 0x6D, 0xE4, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF0, 0xC8, 0x9A, 0x02, 0xF0, 0x00, 0x6B, 0x6B, 0xEB, 0xD9, 0xE4, 0x40, 0x9E, 0x6C, 0xEA, 0x62, 0xAD, 0xE1, 0xF7, 0x1F, 0x6D, 0xAC, 0xEB, 0x6D, 0xEA, 0x40, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x70, 0x9A, 0x0E, 0xF0, 0x01, 0x4D, 0x6D, 0xE4, 0x40, 0x9B, 0xAD, 0xEA, 0xC8, 0xF0, 0x00, 0x4D, 0xAC, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, -0x58, 0x9A, 0x51, 0xE4, 0x60, 0xA4, 0x7F, 0x6A, +0x40, 0x9A, 0x51, 0xE4, 0x60, 0xA4, 0x7F, 0x6A, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF0, 0x5C, 0x9A, 0x1C, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF0, 0x40, 0x9A, +0x43, 0xF0, 0x44, 0x9A, 0x1C, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x48, 0x9A, 0x08, 0xF4, 0x13, 0x6B, 0x60, 0xCA, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF0, 0x44, 0x9A, 0x8C, 0x34, 0x30, 0xF0, +0x63, 0xF0, 0x4C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0x62, 0xF3, -0x68, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF0, 0x44, 0x9A, 0x8C, 0x34, +0x60, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF0, 0x4C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0x82, 0xF3, 0x64, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, +0x62, 0xF3, 0x7C, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF0, 0x44, 0x9A, 0x8C, 0x34, 0x30, 0xF0, +0x63, 0xF0, 0x4C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0xA2, 0xF3, -0x70, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF0, 0x44, 0x9A, 0x8C, 0x34, +0x68, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF0, 0x4C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0xA2, 0xF3, 0x74, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, +0xA2, 0xF3, 0x6C, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0x83, 0xF0, 0x44, 0x9A, 0x6C, 0xEC, +0xFF, 0x6B, 0x63, 0xF0, 0x4C, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, 0x40, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0x83, 0xF0, 0x44, 0x9A, 0x6C, 0xEC, +0xFF, 0x6B, 0x63, 0xF0, 0x4C, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, 0x00, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0xAD, 0xD8, 0x90, 0x67, 0x01, 0x6D, -0x01, 0x48, 0x00, 0x18, 0xBD, 0xD8, 0x0B, 0x70, +0x00, 0x18, 0xB1, 0xD8, 0x90, 0x67, 0x01, 0x6D, +0x01, 0x48, 0x00, 0x18, 0xC1, 0xD8, 0x0B, 0x70, 0xF5, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x0A, 0x69, 0x12, 0xED, 0x4C, 0xED, 0x04, 0xD5, 0xFF, 0x68, 0x2C, 0xE8, 0x90, 0x67, 0x00, 0x18, -0xCD, 0xD8, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, +0xD1, 0xD8, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, 0x20, 0x31, 0x90, 0x67, 0x01, 0x6D, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x18, 0xBD, 0xD8, 0x41, 0x41, +0x23, 0x31, 0x00, 0x18, 0xC1, 0xD8, 0x41, 0x41, 0xEF, 0x2A, 0x01, 0x69, 0x2B, 0xE9, 0x09, 0x10, 0x04, 0x94, 0xFF, 0x49, 0x00, 0x6D, 0x00, 0xF6, -0x20, 0x31, 0x00, 0x18, 0xBD, 0xD8, 0x00, 0xF6, +0x20, 0x31, 0x00, 0x18, 0xC1, 0xD8, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x51, 0xF5, 0x60, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x0C, 0x68, 0x4C, 0xEC, 0x1B, 0xEC, 0x01, 0x28, 0xE5, 0xE8, 0x4C, 0xED, 0x10, 0xE9, 0x4C, 0xE9, 0x12, 0xE8, 0x4C, 0xE8, 0x0F, 0x25, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0xAD, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF0, 0x14, 0x4A, +0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0xB1, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF0, 0x1C, 0x4A, 0x41, 0xE0, 0x60, 0xA0, 0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x40, 0xC0, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF0, 0x14, 0x4A, 0x49, 0xE0, +0x20, 0x6A, 0x83, 0xF0, 0x1C, 0x4A, 0x49, 0xE0, 0x80, 0xA2, 0x01, 0x6B, 0x64, 0xE9, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, 0x40, 0xA2, 0x04, 0x2A, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xAD, 0xD8, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xB1, 0xD8, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0x00, 0xD9, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xE7, 0xD8, 0x07, 0x97, 0x06, 0x91, +0x00, 0x18, 0x04, 0xD9, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x18, 0xEB, 0xD8, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x0C, 0x6B, 0x7B, 0xED, 0x01, 0x2B, 0xE5, 0xE8, 0x05, 0x6E, 0xFF, 0x6A, 0x4C, 0xEC, 0x10, 0xEB, 0x12, 0xED, 0x4C, 0xED, 0xD8, 0xEB, 0x12, 0xEB, 0x4C, 0xEB, 0x1E, 0x73, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF0, 0x68, 0x9A, 0xAC, 0x35, +0x20, 0x6A, 0x63, 0xF0, 0x70, 0x9A, 0xAC, 0x35, 0x30, 0xF0, 0x20, 0x6E, 0x6D, 0xE5, 0x40, 0x9B, -0x83, 0xF0, 0xCC, 0x9E, 0xCC, 0xEA, 0x80, 0xF7, +0x63, 0xF0, 0xD4, 0x9E, 0xCC, 0xEA, 0x80, 0xF7, 0x80, 0x36, 0xCD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF0, 0x44, 0x9A, 0x08, 0x6B, +0x20, 0x6A, 0x63, 0xF0, 0x4C, 0x9A, 0x08, 0x6B, 0x6B, 0xEB, 0x55, 0xE5, 0x40, 0x9D, 0x8A, 0x34, 0x6C, 0xEA, 0x07, 0x6B, 0x6C, 0xEC, 0x1E, 0x10, 0x20, 0x5B, 0x0C, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF0, 0x48, 0x9A, 0x1F, 0x6E, 0xAC, 0x35, +0x63, 0xF0, 0x50, 0x9A, 0x1F, 0x6E, 0xAC, 0x35, 0xE6, 0x67, 0x55, 0xE5, 0xE4, 0xEB, 0x40, 0x9D, 0xEF, 0xEF, 0x0D, 0x10, 0xE0, 0x4B, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF0, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF0, 0x4C, 0x9A, 0xAC, 0x35, 0x1F, 0x6E, 0x55, 0xE5, 0xE0, 0x9D, 0x46, 0x67, 0x44, 0xEB, 0x4F, 0xEA, 0xCC, 0xEC, 0xEC, 0xEA, 0x84, 0xEB, 0x8D, 0xEA, 0x40, 0xDD, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xE9, 0x05, 0x67, 0x01, 0x29, 0x00, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0x26, 0xD9, 0xFF, 0x6C, -0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0x1B, 0xD9, +0xB0, 0x67, 0x00, 0x18, 0x2A, 0xD9, 0xFF, 0x6C, +0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0x1F, 0xD9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xAE, 0xEC, 0x01, 0x6A, 0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, @@ -45087,7 +45629,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x22, 0x10, 0x05, 0x92, 0x40, 0xA2, 0x07, 0xD2, 0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, 0x07, 0x94, 0x12, 0x35, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x59, 0xD9, 0x06, 0x22, 0xFF, 0x6A, +0x00, 0x18, 0x5D, 0xD9, 0x06, 0x22, 0xFF, 0x6A, 0x04, 0x30, 0x4C, 0xE8, 0x05, 0x6A, 0x4E, 0xE8, 0x01, 0x10, 0x04, 0x30, 0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x92, 0x01, 0x4A, 0x08, 0x72, 0x04, 0xD2, @@ -45098,34 +45640,34 @@ u8 array_mp_8822c_fw_spic[] = { 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x60, 0xA4, 0x01, 0x6A, 0x04, 0x67, 0x6C, 0xEA, 0x44, 0x22, 0x66, 0x32, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF0, 0x70, 0x9B, 0x54, 0x32, +0x20, 0x6B, 0x63, 0xF0, 0x78, 0x9B, 0x54, 0x32, 0x69, 0xE2, 0x61, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x74, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF0, 0x7C, 0x9B, 0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x62, 0xA4, 0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF0, 0x78, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x83, 0xF0, 0x60, 0x9B, 0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x63, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x7C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x64, 0x9B, 0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x64, 0xA4, 0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF0, 0x60, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x83, 0xF0, 0x68, 0x9B, 0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x65, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF0, 0x6C, 0x9B, 0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x66, 0xA4, 0x10, 0xF0, 0x00, 0x6C, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF0, 0x68, 0x9A, 0x40, 0x9B, +0x20, 0x6A, 0x83, 0xF0, 0x70, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x81, 0x40, 0x06, 0x6D, -0x00, 0x18, 0x5B, 0xD9, 0x60, 0xA0, 0x01, 0x6E, +0x00, 0x18, 0x5F, 0xD9, 0x60, 0xA0, 0x01, 0x6E, 0x82, 0x67, 0x66, 0x35, 0x6C, 0xEE, 0x00, 0x18, -0x4D, 0xD9, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x51, 0xD9, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xDD, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF0, 0x6C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, +0x00, 0x18, 0xE1, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF0, 0x74, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x42, 0xF3, 0x84, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, +0x22, 0xF3, 0x9C, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x09, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0xDD, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x00, 0x6B, 0xA2, 0xF4, 0x77, 0xC2, 0xA2, 0xF4, 0x78, 0xC2, 0xA2, 0xF4, 0x76, 0xC2, 0x00, 0x6B, 0xA2, 0xF4, 0x74, 0xCA, 0x20, 0xE8, 0x00, 0x65, @@ -45165,319 +45707,317 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x6E, 0x05, 0xD2, 0x80, 0x18, 0x08, 0x00, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF3, 0x50, 0x9A, 0xFF, 0x6B, 0x80, 0xA2, +0x02, 0xF3, 0x48, 0x9A, 0xFF, 0x6B, 0x80, 0xA2, 0x00, 0xF6, 0x80, 0x34, 0x00, 0xF6, 0x83, 0x34, 0x00, 0x54, 0x25, 0x60, 0xA0, 0xA2, 0x7F, 0x6C, 0xAC, 0xEC, 0x40, 0x6D, 0xAD, 0xEC, 0x6C, 0xEC, 0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF3, -0x94, 0x9C, 0x3F, 0x6D, 0x80, 0xA4, 0x30, 0xF0, -0x20, 0x6C, 0x02, 0xF3, 0x98, 0x9C, 0x80, 0xA4, -0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF3, 0x9C, 0x9C, -0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF3, -0x80, 0x9C, 0x80, 0xA4, 0x80, 0xA2, 0x6C, 0xEC, +0x8C, 0x9C, 0x3F, 0x6D, 0x80, 0xA4, 0x30, 0xF0, +0x20, 0x6C, 0x02, 0xF3, 0x90, 0x9C, 0x80, 0xA4, +0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF3, 0x94, 0x9C, +0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF3, +0x98, 0x9C, 0x80, 0xA4, 0x80, 0xA2, 0x6C, 0xEC, 0xAD, 0xEC, 0x6C, 0xEC, 0x80, 0xC2, 0x80, 0xA2, 0xBF, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, 0x64, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x7C, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0xC0, 0xA3, 0x4C, 0xED, 0x15, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF3, -0x8C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF3, +0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x20, 0xE8, 0x80, 0xC3, 0x0B, 0x25, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, 0x90, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, 0x88, 0x9B, 0x80, 0x6D, 0xAB, 0xED, 0x60, 0xA4, 0x4C, 0xEB, 0xAE, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x70, 0x9B, -0x30, 0xF0, 0x20, 0x69, 0xE3, 0xF4, 0x5C, 0x99, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x68, 0x9B, +0x30, 0xF0, 0x20, 0x69, 0x03, 0xF5, 0x40, 0x99, 0xE0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, -0x74, 0x9B, 0x50, 0x32, 0x6D, 0xE2, 0xE0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, 0x78, 0x9B, +0x6C, 0x9B, 0x50, 0x32, 0x6D, 0xE2, 0xE0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, 0x70, 0x9B, 0x6D, 0xE2, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF3, 0x7C, 0x9B, 0x6D, 0xE2, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0x60, 0x9B, -0x69, 0xE2, 0xC0, 0xDA, 0xE3, 0xF4, 0x1C, 0x99, -0x01, 0x48, 0x00, 0xF1, 0x00, 0x70, 0xE3, 0xF4, -0x1C, 0xD9, 0x05, 0x60, 0x00, 0xF2, 0x00, 0x6A, +0x22, 0xF3, 0x74, 0x9B, 0x6D, 0xE2, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, 0x78, 0x9B, +0x69, 0xE2, 0xC0, 0xDA, 0x03, 0xF5, 0x00, 0x99, +0x01, 0x48, 0x00, 0xF1, 0x00, 0x70, 0x03, 0xF5, +0x00, 0xD9, 0x05, 0x60, 0x00, 0xF2, 0x00, 0x6A, 0x4E, 0xE8, 0x06, 0x20, 0x0B, 0x10, 0x10, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x68, 0x00, 0x06, 0x10, 0x11, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x68, 0x00, -0xE3, 0xF4, 0x1C, 0xD9, 0x07, 0x97, 0x06, 0x91, +0x03, 0xF5, 0x00, 0xD9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6A, 0x0B, 0xD7, -0xE0, 0xAE, 0x1F, 0xF7, 0x00, 0x6B, 0xEC, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x09, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xAE, 0xE2, 0xF2, -0x7C, 0x9B, 0x6D, 0xE7, 0xE0, 0xA4, 0xE0, 0xC3, -0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, -0x60, 0x9B, 0x7D, 0xE7, 0x60, 0xA4, 0x60, 0xC7, -0x01, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x72, -0x02, 0x4E, 0x01, 0x4C, 0xE1, 0x61, 0x25, 0x67, -0x00, 0x68, 0x0B, 0x92, 0xC0, 0x99, 0x01, 0x6D, -0x0D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x80, 0xAB, 0xAB, 0xED, 0x02, 0x48, -0x40, 0xEA, 0x16, 0x70, 0x04, 0x49, 0xF1, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF4, 0x7C, 0xA2, +0x01, 0x4B, 0xE3, 0xF4, 0x7C, 0xC2, 0xE3, 0xF4, +0x9C, 0xA2, 0x14, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, +0xE5, 0xE8, 0x10, 0xEB, 0x02, 0x2B, 0xE3, 0xF4, +0x7C, 0xC2, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x00, 0x6A, 0x0B, 0xD7, 0xE0, 0xAE, 0x1F, 0xF7, +0x00, 0x6B, 0xEC, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xAE, 0xE2, 0xF2, 0x74, 0x9B, 0x6D, 0xE7, +0xE0, 0xA4, 0xE0, 0xC3, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF2, 0x78, 0x9B, 0x7D, 0xE7, +0x60, 0xA4, 0x60, 0xC7, 0x01, 0x4A, 0xFF, 0x6B, +0x6C, 0xEA, 0x03, 0x72, 0x02, 0x4E, 0x01, 0x4C, +0xE1, 0x61, 0x25, 0x67, 0x00, 0x68, 0x0B, 0x92, +0xC0, 0x99, 0x01, 0x6D, 0x0D, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x80, 0xAB, +0xAB, 0xED, 0x02, 0x48, 0x40, 0xEA, 0x16, 0x70, +0x04, 0x49, 0xF1, 0x61, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0xD1, 0x08, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x27, 0xF2, +0x72, 0xA2, 0x72, 0x2B, 0x01, 0x6B, 0x47, 0xF2, +0x61, 0xC2, 0x47, 0xF2, 0x62, 0xC2, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0xEB, 0xF0, +0x00, 0x4C, 0xEA, 0xF7, 0x08, 0x4B, 0x00, 0x6A, +0x00, 0x6D, 0xA0, 0xDC, 0x60, 0xF7, 0xCF, 0x42, +0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF5, 0x00, 0x4D, +0xCC, 0x36, 0xD9, 0xE5, 0x03, 0xD6, 0xD1, 0xF6, +0xCC, 0x42, 0xC8, 0x36, 0xD9, 0xE5, 0x02, 0xD6, +0x06, 0x6E, 0xD8, 0xEA, 0x00, 0xD3, 0x12, 0xEE, +0xD9, 0xE5, 0xC7, 0xF5, 0x19, 0x4E, 0x00, 0x6D, +0x03, 0x90, 0x00, 0x6F, 0x00, 0x69, 0xE0, 0xD8, +0x02, 0x90, 0xE0, 0xC8, 0x44, 0x30, 0x01, 0xE5, +0xA3, 0xF5, 0x0C, 0x48, 0x30, 0xF0, 0x20, 0x6F, +0x04, 0x30, 0x83, 0xF5, 0x00, 0x4F, 0x1D, 0xE7, +0x04, 0xD7, 0x00, 0x97, 0x03, 0x67, 0x01, 0xD7, +0x04, 0x97, 0x01, 0x6B, 0x06, 0xD2, 0x60, 0xC7, +0x44, 0x33, 0xAD, 0xE3, 0x64, 0x33, 0x6D, 0xE1, +0x70, 0x33, 0x30, 0xF0, 0x20, 0x6F, 0x47, 0xF2, +0x18, 0x4B, 0x83, 0xF5, 0x00, 0x4F, 0x6D, 0xE7, +0x01, 0x92, 0x00, 0x6F, 0xE0, 0xCB, 0x80, 0xF0, +0xE0, 0xCB, 0x02, 0x4B, 0x4A, 0xEB, 0xF8, 0x61, +0x04, 0x93, 0x01, 0x49, 0x02, 0x71, 0x01, 0x4B, +0x04, 0xD3, 0x01, 0x93, 0x06, 0x92, 0x10, 0x4B, +0x01, 0xD3, 0xDE, 0x61, 0xE0, 0xC6, 0xE1, 0xC6, +0xE2, 0xC6, 0x03, 0x97, 0x70, 0x67, 0x02, 0x90, +0x04, 0x4F, 0x03, 0xD7, 0x00, 0x97, 0x01, 0x4D, +0x02, 0x48, 0x20, 0x4F, 0x02, 0x75, 0x02, 0xD0, +0x03, 0x4E, 0x00, 0xD7, 0xB9, 0x61, 0x01, 0x4A, +0x02, 0x72, 0x04, 0x4C, 0x40, 0x4B, 0x9C, 0x61, +0x09, 0x91, 0x08, 0x90, 0x05, 0x63, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xEA, 0xF4, 0x00, 0x4C, 0x00, 0x6D, 0x18, 0x6E, +0x80, 0x18, 0x3E, 0x45, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF4, 0x00, 0x6C, 0x83, 0xF5, 0x00, 0x4B, +0x4C, 0xEC, 0x67, 0xF3, 0x48, 0xDB, 0x82, 0x32, +0x4A, 0x32, 0x02, 0x72, 0x0A, 0x60, 0x03, 0x6C, +0x4E, 0xEC, 0x04, 0x24, 0x01, 0x72, 0x02, 0x6A, +0x05, 0x60, 0x06, 0x10, 0x27, 0xF2, 0x91, 0xC3, +0x03, 0x10, 0x01, 0x6A, 0x27, 0xF2, 0x51, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x68, 0x9B, +0x67, 0xF3, 0x88, 0x9A, 0x8C, 0xEB, 0x62, 0x33, +0x62, 0x33, 0x27, 0xF2, 0x70, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x05, 0xD5, +0x04, 0xD4, 0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0xC0, 0xA2, +0x30, 0xF0, 0x20, 0x69, 0xEA, 0xF4, 0x00, 0x49, +0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x3E, 0x45, +0x04, 0x93, 0x91, 0x67, 0x01, 0x6D, 0x40, 0xDB, +0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, +0x0C, 0x4B, 0xE0, 0x9B, 0xC0, 0xA2, 0x01, 0x48, +0x80, 0x18, 0x3E, 0x45, 0x04, 0x93, 0x41, 0xDB, +0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x08, 0x4B, +0x03, 0x70, 0x01, 0x4A, 0x05, 0xD2, 0x04, 0xD3, +0xD8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0xAC, 0xE9, +0x00, 0x68, 0x85, 0xF5, 0x1C, 0x6C, 0xFF, 0x6D, +0x80, 0x18, 0xC8, 0x16, 0x55, 0x72, 0x0C, 0x61, +0x00, 0x6A, 0x15, 0x21, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0xB4, 0x9A, 0x03, 0xF3, 0x08, 0x6C, +0x80, 0x18, 0xC8, 0x16, 0x00, 0x6A, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, +0x01, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE8, 0x01, 0x6A, 0x32, 0x58, +0x01, 0x60, 0xDF, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, +0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x00, 0x6A, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0xAC, 0xEA, 0x01, 0x72, 0x05, 0xD4, 0x24, 0x61, +0x44, 0x67, 0x04, 0x4A, 0x01, 0x68, 0x30, 0xF0, +0x20, 0x69, 0x04, 0xEA, 0x00, 0xF2, 0x08, 0x6A, +0x4D, 0xE8, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, +0xD0, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, +0xAB, 0xED, 0xC1, 0x40, 0x03, 0xF3, 0x00, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x05, 0x94, +0x01, 0x6D, 0x80, 0x18, 0x3F, 0x01, 0xD2, 0x10, +0x02, 0x72, 0x01, 0x6A, 0xC0, 0xF0, 0x0E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF7, 0x56, 0xA2, +0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, 0x12, 0x72, +0x01, 0x68, 0x09, 0x60, 0x1B, 0x72, 0x02, 0x68, +0x06, 0x60, 0x24, 0x68, 0x4E, 0xE8, 0x01, 0x58, +0x18, 0x67, 0x04, 0x6A, 0x03, 0xE2, 0x05, 0x92, +0x30, 0xF0, 0x20, 0x69, 0x01, 0x6D, 0x44, 0x32, +0x07, 0xD2, 0x07, 0x93, 0x08, 0x6A, 0x03, 0xF3, +0x00, 0x6C, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, +0xC3, 0x67, 0x07, 0xD3, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF5, 0x00, 0x4C, +0x04, 0xD4, 0x04, 0x93, 0xC0, 0xF3, 0x44, 0x99, +0x01, 0x6D, 0x27, 0xF2, 0xD6, 0xA3, 0xC3, 0xF3, +0x0C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x05, 0x92, +0x01, 0x6C, 0x01, 0x6D, 0x04, 0x4A, 0x84, 0xEA, +0x00, 0xF3, 0x08, 0x6A, 0x4D, 0xEC, 0x06, 0xD4, +0xC0, 0xF3, 0x44, 0x99, 0x06, 0x96, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x06, 0x96, +0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xAB, 0xED, +0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, +0x02, 0x6C, 0x40, 0xEA, 0x05, 0x94, 0x01, 0x6D, +0x80, 0x18, 0x3F, 0x01, 0x01, 0x72, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF1, 0x14, 0x4A, +0x41, 0xE0, 0x40, 0xA0, 0x04, 0x93, 0x27, 0xF2, +0x56, 0xC3, 0x6B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x05, 0x95, 0xE2, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xEA, 0xF4, 0x00, 0x4C, 0x00, 0x6E, +0x80, 0x18, 0x3E, 0x45, 0x05, 0xD2, 0x07, 0x96, +0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x05, 0x94, +0xE3, 0xF7, 0x00, 0x6A, 0x04, 0x93, 0x8C, 0xEA, +0x56, 0x34, 0x96, 0x32, 0x27, 0xF2, 0x58, 0xDB, +0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, 0xFF, 0x6B, +0x0B, 0x60, 0x03, 0x70, 0x03, 0x60, 0x01, 0x48, +0x6C, 0xE8, 0x49, 0x10, 0x04, 0x94, 0x01, 0x6B, +0x03, 0x68, 0xE7, 0xF5, 0x6D, 0xC4, 0x43, 0x10, +0x0A, 0x5A, 0x0B, 0x61, 0x04, 0x20, 0xFF, 0x48, +0x6C, 0xE8, 0x01, 0x6B, 0x0B, 0x10, 0x04, 0x94, +0x01, 0x6B, 0xE7, 0xF5, 0x6D, 0xC4, 0x01, 0x6B, +0x09, 0x10, 0x04, 0x94, 0x00, 0x6B, 0xE7, 0xF5, +0x6D, 0xC4, 0x00, 0x6B, 0x03, 0x20, 0x04, 0x58, +0x01, 0x61, 0x03, 0x68, 0x30, 0xF0, 0x20, 0x6D, +0x82, 0xF1, 0x14, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, +0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF5, 0x00, 0x4C, +0x27, 0xF2, 0xB6, 0xC4, 0x0F, 0x2B, 0x27, 0xF2, +0xD6, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x64, 0x9B, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, +0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEB, +0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xE3, 0xF3, +0x08, 0x6C, 0xAB, 0xED, 0xFF, 0xF7, 0x1F, 0x6E, +0x40, 0xEA, 0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x01, 0x6B, +0xCE, 0x17, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6B, 0x0B, 0xD7, +0xE0, 0xAE, 0x1F, 0xF7, 0x00, 0x6A, 0xEC, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x08, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xAE, 0xE2, 0xF2, +0x54, 0x9A, 0x49, 0xE7, 0xE0, 0xA2, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x58, 0x9A, +0x5D, 0xE7, 0xE0, 0xA7, 0xFF, 0x6A, 0xEC, 0xEA, +0x7D, 0xE4, 0x01, 0x4B, 0x03, 0x73, 0x40, 0xC7, +0x02, 0x4E, 0xE2, 0x61, 0x25, 0x67, 0x00, 0x68, +0x0B, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0x09, 0xE3, +0x80, 0xAA, 0x02, 0x48, 0x80, 0x18, 0xC8, 0x16, +0x16, 0x70, 0x40, 0xD9, 0x04, 0x49, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0xD1, -0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x27, 0xF2, 0x6A, 0xA2, 0x79, 0x2B, -0x01, 0x6B, 0x27, 0xF2, 0x79, 0xC2, 0x27, 0xF2, -0x7A, 0xC2, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6B, 0xCB, 0xF0, 0x10, 0x4C, 0xCA, 0xF7, -0x18, 0x4B, 0x00, 0x6A, 0x00, 0x6D, 0xA0, 0xDC, -0x60, 0xF7, 0xCE, 0x42, 0x30, 0xF0, 0x20, 0x6D, -0x63, 0xF5, 0x18, 0x4D, 0xCC, 0x36, 0xD9, 0xE5, -0x04, 0xD6, 0xD1, 0xF6, 0xCA, 0x42, 0xC8, 0x36, -0xD9, 0xE5, 0x03, 0xD6, 0x06, 0x6E, 0xD8, 0xEA, -0x01, 0xD3, 0x12, 0xEE, 0xD9, 0xE5, 0xC7, 0xF5, -0x11, 0x4E, 0x00, 0x6D, 0x04, 0x90, 0x00, 0x6F, -0xE0, 0xD8, 0x03, 0x90, 0xE0, 0xC8, 0x44, 0x30, -0x01, 0xE5, 0xA3, 0xF5, 0x08, 0x48, 0x30, 0xF0, -0x20, 0x6F, 0x04, 0x30, 0x63, 0xF5, 0x18, 0x4F, -0x1D, 0xE7, 0x05, 0xD7, 0x01, 0x97, 0x00, 0x68, -0x00, 0xD0, 0x02, 0xD7, 0x05, 0x90, 0x01, 0x6F, -0x44, 0x31, 0xE0, 0xC0, 0x00, 0x97, 0xA5, 0xE1, -0x24, 0x31, 0x25, 0xE7, 0xA0, 0xF3, 0x05, 0x41, -0x30, 0xF0, 0x20, 0x6F, 0xA0, 0xF3, 0x0D, 0x49, -0x63, 0xF5, 0x18, 0x4F, 0x10, 0x30, 0x30, 0x31, -0x01, 0xE7, 0x25, 0xE7, 0x06, 0xD2, 0x02, 0x92, -0x00, 0x6F, 0xE0, 0xC8, 0x02, 0x48, 0x4A, 0xE8, -0xE0, 0xC9, 0x02, 0x49, 0xF8, 0x61, 0x00, 0x90, -0x06, 0x92, 0x01, 0x48, 0x00, 0xD0, 0x05, 0x90, -0x01, 0x48, 0x05, 0xD0, 0x02, 0x90, 0x10, 0x48, -0x02, 0xD0, 0x00, 0x90, 0x02, 0x70, 0xD6, 0x61, -0xE0, 0xC6, 0xE1, 0xC6, 0xE2, 0xC6, 0x04, 0x97, -0x03, 0x90, 0x01, 0x4D, 0x04, 0x4F, 0x04, 0xD7, -0x01, 0x97, 0x02, 0x48, 0x02, 0x75, 0x20, 0x4F, -0x03, 0xD0, 0x03, 0x4E, 0x01, 0xD7, 0xB2, 0x61, -0x01, 0x4A, 0x02, 0x72, 0x04, 0x4C, 0x40, 0x4B, -0x95, 0x61, 0x09, 0x91, 0x08, 0x90, 0x05, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0xF4, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xCA, 0xF4, 0x18, 0x4C, -0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x3E, 0x45, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF4, 0x00, 0x6C, -0x63, 0xF5, 0x18, 0x4B, 0x4C, 0xEC, 0x67, 0xF3, -0x40, 0xDB, 0x82, 0x32, 0x4A, 0x32, 0x02, 0x72, -0x0A, 0x60, 0x03, 0x6C, 0x4E, 0xEC, 0x04, 0x24, -0x01, 0x72, 0x02, 0x6A, 0x05, 0x60, 0x06, 0x10, -0x27, 0xF2, 0x89, 0xC3, 0x03, 0x10, 0x01, 0x6A, -0x27, 0xF2, 0x49, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF3, 0x70, 0x9B, 0x67, 0xF3, 0x80, 0x9A, -0x8C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x27, 0xF2, -0x68, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x68, 0x05, 0xD5, 0x04, 0xD4, 0x05, 0x92, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x14, 0x4B, -0xE0, 0x9B, 0xC0, 0xA2, 0x30, 0xF0, 0x20, 0x69, -0xCA, 0xF4, 0x18, 0x49, 0x91, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x3E, 0x45, 0x04, 0x93, 0x91, 0x67, -0x01, 0x6D, 0x40, 0xDB, 0x05, 0x92, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF3, 0x14, 0x4B, 0xE0, 0x9B, -0xC0, 0xA2, 0x01, 0x48, 0x80, 0x18, 0x3E, 0x45, -0x04, 0x93, 0x41, 0xDB, 0xFF, 0x6A, 0x4C, 0xE8, -0x05, 0x92, 0x08, 0x4B, 0x03, 0x70, 0x01, 0x4A, -0x05, 0xD2, 0x04, 0xD3, 0xD8, 0x61, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x69, 0xAC, 0xE9, 0x00, 0x68, 0x85, 0xF5, -0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0xF4, 0x16, -0x55, 0x72, 0x0C, 0x61, 0x00, 0x6A, 0x15, 0x21, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0xBC, 0x9A, -0x03, 0xF3, 0x08, 0x6C, 0x80, 0x18, 0xF4, 0x16, -0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x01, 0x48, -0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, -0x01, 0x6A, 0x32, 0x58, 0x01, 0x60, 0xDF, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x00, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x01, 0x72, -0x05, 0xD4, 0x24, 0x61, 0x44, 0x67, 0x04, 0x4A, -0x01, 0x68, 0x30, 0xF0, 0x20, 0x69, 0x04, 0xEA, -0x00, 0xF2, 0x08, 0x6A, 0x4D, 0xE8, 0xC0, 0xF3, -0x44, 0x99, 0x01, 0x6D, 0xD0, 0x67, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x01, 0x6D, 0xAB, 0xED, 0xC1, 0x40, -0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, -0x40, 0xEA, 0x05, 0x94, 0x01, 0x6D, 0x80, 0x18, -0x3A, 0x01, 0xD2, 0x10, 0x02, 0x72, 0x01, 0x6A, -0xC0, 0xF0, 0x0E, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xAA, 0xF7, 0x46, 0xA2, 0x00, 0x68, 0x09, 0x72, -0x0C, 0x60, 0x12, 0x72, 0x01, 0x68, 0x09, 0x60, -0x1B, 0x72, 0x02, 0x68, 0x06, 0x60, 0x24, 0x68, -0x4E, 0xE8, 0x01, 0x58, 0x18, 0x67, 0x04, 0x6A, -0x03, 0xE2, 0x05, 0x92, 0x30, 0xF0, 0x20, 0x69, -0x01, 0x6D, 0x44, 0x32, 0x07, 0xD2, 0x07, 0x93, -0x08, 0x6A, 0x03, 0xF3, 0x00, 0x6C, 0x4D, 0xEB, -0xC0, 0xF3, 0x44, 0x99, 0xC3, 0x67, 0x07, 0xD3, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF5, 0x18, 0x4C, 0x04, 0xD4, 0x04, 0x93, -0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0x27, 0xF2, -0xCE, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x05, 0x92, 0x01, 0x6C, 0x01, 0x6D, -0x04, 0x4A, 0x84, 0xEA, 0x00, 0xF3, 0x08, 0x6A, -0x4D, 0xEC, 0x06, 0xD4, 0xC0, 0xF3, 0x44, 0x99, -0x06, 0x96, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x06, 0x96, 0xC0, 0xF3, 0x44, 0x99, -0x01, 0x6D, 0xAB, 0xED, 0x01, 0x4E, 0x03, 0xF3, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x48, 0x9A, 0x02, 0x6C, 0x40, 0xEA, -0x05, 0x94, 0x01, 0x6D, 0x80, 0x18, 0x3A, 0x01, -0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF1, 0x1C, 0x4A, 0x41, 0xE0, 0x40, 0xA0, -0x04, 0x93, 0x27, 0xF2, 0x4E, 0xC3, 0x6B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x05, 0x95, 0xE2, 0xF3, -0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xCA, 0xF4, -0x18, 0x4C, 0x00, 0x6E, 0x80, 0x18, 0x3E, 0x45, -0x05, 0xD2, 0x07, 0x96, 0xC0, 0xF3, 0x44, 0x99, -0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x05, 0x94, 0xE3, 0xF7, 0x00, 0x6A, -0x04, 0x93, 0x8C, 0xEA, 0x56, 0x34, 0x96, 0x32, -0x27, 0xF2, 0x50, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, -0x02, 0x5A, 0xFF, 0x6B, 0x0B, 0x60, 0x03, 0x70, -0x03, 0x60, 0x01, 0x48, 0x6C, 0xE8, 0x49, 0x10, -0x04, 0x94, 0x01, 0x6B, 0x03, 0x68, 0xE7, 0xF5, -0x65, 0xC4, 0x43, 0x10, 0x0A, 0x5A, 0x0B, 0x61, -0x04, 0x20, 0xFF, 0x48, 0x6C, 0xE8, 0x01, 0x6B, -0x0B, 0x10, 0x04, 0x94, 0x01, 0x6B, 0xE7, 0xF5, -0x65, 0xC4, 0x01, 0x6B, 0x09, 0x10, 0x04, 0x94, -0x00, 0x6B, 0xE7, 0xF5, 0x65, 0xC4, 0x00, 0x6B, -0x03, 0x20, 0x04, 0x58, 0x01, 0x61, 0x03, 0x68, -0x30, 0xF0, 0x20, 0x6D, 0x82, 0xF1, 0x1C, 0x4D, -0xA1, 0xE0, 0xA0, 0xA0, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF5, 0x18, 0x4C, 0x27, 0xF2, 0xAE, 0xC4, -0x0F, 0x2B, 0x27, 0xF2, 0xCE, 0xA4, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x64, 0x9B, 0xC0, 0x36, -0x01, 0x6D, 0x4D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, -0xAB, 0xED, 0x40, 0xEB, 0x00, 0x6A, 0x0C, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x01, 0x6D, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, -0xFF, 0xF7, 0x1F, 0x6E, 0x40, 0xEA, 0x01, 0x6A, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x01, 0x6B, 0xCE, 0x17, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x00, 0x6B, 0x0B, 0xD7, 0xE0, 0xAE, 0x1F, 0xF7, -0x00, 0x6A, 0xEC, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xAE, 0xE2, 0xF2, 0x5C, 0x9A, 0x49, 0xE7, -0xE0, 0xA2, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF3, 0x40, 0x9A, 0x5D, 0xE7, 0xE0, 0xA7, -0xFF, 0x6A, 0xEC, 0xEA, 0x7D, 0xE4, 0x01, 0x4B, -0x03, 0x73, 0x40, 0xC7, 0x02, 0x4E, 0xE2, 0x61, -0x25, 0x67, 0x00, 0x68, 0x0B, 0x93, 0x01, 0x6D, -0xAB, 0xED, 0x09, 0xE3, 0x80, 0xAA, 0x02, 0x48, -0x80, 0x18, 0xF4, 0x16, 0x16, 0x70, 0x40, 0xD9, -0x04, 0x49, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x69, 0xE2, 0xF3, -0x6C, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, -0xC0, 0xF3, 0x44, 0x98, 0xAC, 0xE9, 0x24, 0x36, -0x01, 0x6D, 0x04, 0xD4, 0xAB, 0xED, 0x03, 0xF3, -0x00, 0x6C, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, -0x08, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, -0x07, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xE2, 0xF3, -0xB8, 0x9B, 0xC3, 0xF3, 0x14, 0x6C, 0x10, 0x6E, -0x40, 0xEA, 0x04, 0x94, 0x24, 0x31, 0x30, 0xF0, -0x20, 0x6A, 0x25, 0xE4, 0xA0, 0xF3, 0x65, 0x41, -0xA0, 0xF3, 0x0D, 0x49, 0x63, 0xF5, 0x18, 0x4A, -0x70, 0x33, 0x30, 0x31, 0x25, 0xE2, 0x6D, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD1, 0xE2, 0xF3, -0x3C, 0x9A, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, -0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, -0x80, 0x18, 0xF4, 0x16, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF4, 0x60, 0x9B, 0x05, 0x94, 0x04, 0x49, -0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x60, 0xCC, -0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, -0x02, 0x4C, 0x05, 0xD4, 0x60, 0xCA, 0x02, 0x4A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF4, -0x44, 0x9A, 0x2E, 0xEA, 0xD7, 0x2A, 0xC0, 0xF3, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x69, 0xE2, 0xF3, 0x64, 0x9B, 0x30, 0xF0, +0x20, 0x68, 0x2C, 0xEC, 0xC0, 0xF3, 0x44, 0x98, +0xAC, 0xE9, 0x24, 0x36, 0x01, 0x6D, 0x04, 0xD4, +0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x6D, 0xEE, +0x40, 0xEA, 0x04, 0x92, 0x08, 0x2A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x03, 0x6E, 0x07, 0x10, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xE2, 0xF3, 0xB0, 0x9B, 0xC3, 0xF3, +0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, 0x04, 0x93, +0x24, 0x31, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xE3, +0x30, 0x31, 0x83, 0xF5, 0x00, 0x4A, 0x47, 0xF2, +0x18, 0x49, 0x25, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF3, 0x54, 0x9A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, +0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, +0xAB, 0xED, 0x80, 0x18, 0xC8, 0x16, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF3, 0x78, 0x9B, 0x4C, 0xEB, +0x62, 0x33, 0x62, 0x33, 0x60, 0xC9, 0xE1, 0xF7, +0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, 0x80, 0xF0, +0x60, 0xC9, 0x02, 0x49, 0x04, 0x4A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x5C, 0x9A, +0x04, 0x93, 0x6E, 0xEA, 0xD8, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x05, 0x67, 0x01, 0x74, -0x4C, 0xE8, 0x80, 0xF0, 0x19, 0x60, 0x04, 0x24, -0x04, 0x5C, 0xA0, 0xF0, 0x10, 0x60, 0xAA, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x47, 0xF3, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xF0, 0x20, 0x6D, 0x47, 0xF3, 0x7C, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF0, 0x08, 0x4C, 0xEB, 0xF0, 0x00, 0x4B, -0xCB, 0xF0, 0x1C, 0x4A, 0xCA, 0xF7, 0x18, 0x4D, -0x00, 0x69, 0xC0, 0x9C, 0xA3, 0xF5, 0x08, 0x41, -0x04, 0x30, 0xC2, 0xDC, 0xC0, 0xAB, 0x05, 0xD5, -0xE5, 0x67, 0xC2, 0xCB, 0xC0, 0xA2, 0xC2, 0xC2, -0x30, 0xF0, 0x20, 0x6E, 0x63, 0xF5, 0x18, 0x4E, -0x01, 0xE6, 0x00, 0x6E, 0x04, 0xD6, 0xA0, 0xA0, -0x24, 0x36, 0xA4, 0xC0, 0x04, 0x95, 0xD9, 0xE5, -0xA6, 0x67, 0xA0, 0xF3, 0x05, 0x4D, 0xB0, 0x35, -0x06, 0xD5, 0x07, 0xD6, 0x30, 0xF0, 0x20, 0x6E, -0xA6, 0x67, 0x06, 0x96, 0x63, 0xF5, 0x18, 0x4D, -0x1D, 0x65, 0xD5, 0xE5, 0x07, 0x96, 0x06, 0xD5, -0xB8, 0x67, 0xA0, 0xF3, 0x0D, 0x4E, 0xD0, 0x36, -0xD9, 0xE5, 0x06, 0x95, 0x07, 0xD2, 0x40, 0xAD, -0x40, 0xF0, 0x40, 0xCD, 0x40, 0xAE, 0x02, 0x4D, -0x40, 0xF0, 0x40, 0xCE, 0x05, 0x92, 0x02, 0x4E, -0x4A, 0xED, 0xF5, 0x61, 0x04, 0x95, 0x05, 0x96, -0x07, 0x92, 0x01, 0x4D, 0x10, 0x4E, 0x02, 0x75, -0x04, 0xD5, 0x01, 0x48, 0x05, 0xD6, 0xCF, 0x61, -0x01, 0x49, 0x02, 0x6E, 0xA7, 0x67, 0x2E, 0xEE, -0x04, 0x4C, 0x02, 0x4B, 0x01, 0x4A, 0x20, 0x4D, -0xB4, 0x2E, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x00, 0x6B, 0xC7, 0xF5, 0x7D, 0xC2, -0xC7, 0xF5, 0x7E, 0xC2, 0xC7, 0xF5, 0x71, 0xC2, -0xC7, 0xF5, 0x72, 0xC2, 0xC7, 0xF5, 0x73, 0xC2, -0x67, 0xF3, 0x65, 0xC2, 0xC7, 0xF5, 0x7F, 0xC2, -0xE7, 0xF5, 0x60, 0xC2, 0xC7, 0xF5, 0x74, 0xC2, -0xC7, 0xF5, 0x75, 0xC2, 0xC7, 0xF5, 0x76, 0xC2, -0x67, 0xF3, 0x60, 0x9A, 0x01, 0x6C, 0x67, 0xF3, -0xC4, 0xC2, 0x67, 0xF3, 0xC8, 0xCA, 0x47, 0xF3, -0x90, 0xC2, 0x47, 0xF3, 0x91, 0xC2, 0x67, 0xF3, -0xCA, 0xCA, 0x47, 0xF3, 0x92, 0xC2, 0x47, 0xF3, -0x93, 0xC2, 0x47, 0xF3, 0x78, 0xDA, 0x1B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0xF4, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xB0, 0x67, 0xCA, 0xF4, -0x18, 0x4C, 0x58, 0x6E, 0x80, 0x18, 0x3E, 0x45, -0xC1, 0xF6, 0x1C, 0x48, 0x30, 0xF0, 0x20, 0x6B, -0x08, 0x30, 0x63, 0xF5, 0x18, 0x4B, 0x6D, 0xE0, -0x40, 0xDB, 0x05, 0x10, 0xFE, 0x4C, 0x4C, 0xEC, -0xB0, 0x67, 0x80, 0x18, 0xF6, 0x01, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0x4C, 0xE8, 0x80, 0xF0, 0x0C, 0x60, 0x04, 0x24, +0x04, 0x5C, 0xA0, 0xF0, 0x03, 0x60, 0x9D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x67, 0xF3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6D, +0x30, 0xF0, 0x20, 0x6C, 0x67, 0xF3, 0x64, 0xDA, +0x30, 0xF0, 0x20, 0x6F, 0x30, 0xF0, 0x20, 0x6B, +0xEB, 0xF0, 0x18, 0x4D, 0xEB, 0xF0, 0x10, 0x4C, +0xEB, 0xF0, 0x0C, 0x4B, 0xEA, 0xF7, 0x08, 0x4F, +0x00, 0x6E, 0x40, 0x9D, 0xA3, 0xF5, 0x0C, 0x46, +0x04, 0x30, 0x42, 0xDD, 0x40, 0xAC, 0x04, 0xD7, +0x00, 0x69, 0x42, 0xCC, 0x40, 0xA3, 0x08, 0xD3, +0x42, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x01, 0xE2, 0x40, 0xA0, 0x44, 0xC0, +0xC4, 0x32, 0x49, 0xE1, 0x50, 0x32, 0x47, 0xF2, +0x18, 0x4A, 0x1A, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x78, 0x67, 0x83, 0xF5, 0x00, 0x4A, 0x69, 0xE2, +0x1A, 0x65, 0x08, 0x92, 0x06, 0xD2, 0x58, 0x67, +0x60, 0xAA, 0x40, 0xF0, 0x60, 0xCA, 0x80, 0xF0, +0x60, 0xAA, 0xC0, 0xF0, 0x60, 0xCA, 0x04, 0x93, +0x02, 0x4A, 0x6A, 0xEA, 0xF5, 0x61, 0x06, 0x92, +0x01, 0x49, 0x10, 0x4B, 0x02, 0x71, 0x08, 0xD2, +0x01, 0x48, 0x04, 0xD3, 0xDB, 0x61, 0x01, 0x4E, +0x02, 0x68, 0x62, 0x67, 0xCE, 0xE8, 0x04, 0x4D, +0x02, 0x4C, 0x01, 0x4B, 0x20, 0x4F, 0xC1, 0x28, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x00, 0x6B, 0xE7, 0xF5, 0x65, 0xC2, 0xE7, 0xF5, +0x66, 0xC2, 0xC7, 0xF5, 0x79, 0xC2, 0xC7, 0xF5, +0x7A, 0xC2, 0xC7, 0xF5, 0x7B, 0xC2, 0x67, 0xF3, +0x6D, 0xC2, 0xE7, 0xF5, 0x67, 0xC2, 0xE7, 0xF5, +0x68, 0xC2, 0xC7, 0xF5, 0x7C, 0xC2, 0xC7, 0xF5, +0x7D, 0xC2, 0xC7, 0xF5, 0x7E, 0xC2, 0x67, 0xF3, +0x68, 0x9A, 0x01, 0x6C, 0x67, 0xF3, 0x0C, 0xC2, +0x67, 0xF3, 0x10, 0xCA, 0x47, 0xF3, 0x98, 0xC2, +0x47, 0xF3, 0x99, 0xC2, 0x67, 0xF3, 0x12, 0xCA, +0x47, 0xF3, 0x9A, 0xC2, 0x47, 0xF3, 0x9B, 0xC2, +0x67, 0xF3, 0x60, 0xDA, 0x1B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xB0, 0x67, 0xEA, 0xF4, 0x00, 0x4C, +0x58, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0xC1, 0xF6, +0x1E, 0x48, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0x30, +0x83, 0xF5, 0x00, 0x4B, 0x6D, 0xE0, 0x40, 0xDB, +0x05, 0x10, 0xFE, 0x4C, 0x4C, 0xEC, 0xB0, 0x67, +0x80, 0x18, 0xFB, 0x01, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xAA, 0xF7, 0x4D, 0xA2, 0x18, 0x2A, 0x01, 0x6C, -0x00, 0x6D, 0x80, 0x18, 0x3A, 0x02, 0x02, 0x6C, -0x00, 0x6D, 0x80, 0x18, 0x3A, 0x02, 0x03, 0x6C, -0x00, 0x6D, 0x80, 0x18, 0x3A, 0x02, 0x01, 0x6C, -0xA4, 0x67, 0x80, 0x18, 0x3A, 0x02, 0x02, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x3A, 0x02, 0x03, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x3A, 0x02, 0x05, 0x97, +0xAA, 0xF7, 0x5D, 0xA2, 0x18, 0x2A, 0x01, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0x3C, 0x02, 0x02, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0x3C, 0x02, 0x03, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0x3C, 0x02, 0x01, 0x6C, +0xA4, 0x67, 0x80, 0x18, 0x3C, 0x02, 0x02, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0x3C, 0x02, 0x03, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0x3C, 0x02, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x00, 0x6A, 0x8C, 0xE9, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x14, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, -0x20, 0x68, 0xCA, 0xF4, 0x18, 0x48, 0x00, 0x6B, +0xE2, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, +0x20, 0x68, 0xEA, 0xF4, 0x00, 0x48, 0x00, 0x6B, 0x90, 0x67, 0xB1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x14, 0x4A, 0xE0, 0x9A, 0x00, 0x6B, +0xE2, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x00, 0x6B, 0x90, 0x67, 0xB1, 0x67, 0x08, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF3, 0x14, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0xE2, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0xB1, 0x67, 0x08, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x0B, 0x22, 0x06, 0x92, 0x01, 0x4A, 0x06, 0xD2, 0x06, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, @@ -45485,390 +46025,370 @@ u8 array_mp_8822c_fw_spic[] = { 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF1, -0x00, 0x4A, 0x64, 0x67, 0x06, 0xD2, 0xC1, 0xF6, -0x14, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x68, 0x33, 0x6D, 0xE2, 0x08, 0xD3, -0x64, 0x67, 0x60, 0xF7, 0x0E, 0x4B, 0x6C, 0x33, -0x6D, 0xE2, 0x0A, 0xD3, 0x00, 0x6B, 0x0F, 0xD4, -0x11, 0xD5, 0x07, 0xD3, 0x07, 0x95, 0x11, 0x92, -0xFF, 0x69, 0xAC, 0xE9, 0x18, 0x2A, 0x30, 0xF0, -0x20, 0x68, 0xCA, 0xF4, 0x18, 0x48, 0x01, 0x6A, +0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF1, +0x18, 0x4A, 0x64, 0x67, 0x06, 0xD2, 0xC1, 0xF6, +0x16, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x68, 0x33, 0x6D, 0xE2, 0x08, 0xD3, +0x64, 0x67, 0x60, 0xF7, 0x0F, 0x4B, 0x6C, 0x33, +0x6D, 0xE2, 0x0B, 0xD3, 0x00, 0x6B, 0x0E, 0xD4, +0x10, 0xD5, 0x07, 0xD3, 0x07, 0x92, 0x10, 0x93, +0xFF, 0x69, 0x4C, 0xE9, 0x18, 0x2B, 0x30, 0xF0, +0x20, 0x68, 0xEA, 0xF4, 0x00, 0x48, 0x01, 0x6A, 0x90, 0x67, 0xB1, 0x67, 0xDF, 0x6E, 0x10, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x0A, 0x93, +0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x0B, 0x93, 0x90, 0x67, 0xB1, 0x67, 0x40, 0x9B, 0x58, 0x6E, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, -0xF4, 0x9A, 0x80, 0x18, 0x83, 0x45, 0x07, 0x95, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x4C, 0x9A, -0xA4, 0x35, 0x00, 0x69, 0x4D, 0xED, 0x0E, 0xD5, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x0E, 0x96, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x23, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, -0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF3, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF3, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0xC3, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, -0x00, 0x6E, 0x40, 0xEA, 0xFF, 0x6A, 0x2C, 0xEA, -0x08, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, -0x07, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0xB8, 0x9B, 0xC0, 0xF3, -0x44, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x10, 0x6E, -0x40, 0xEA, 0x0F, 0x95, 0x07, 0x93, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0x34, 0x71, 0xE4, 0x84, 0x34, -0x91, 0xE1, 0x02, 0xF4, 0x48, 0x9A, 0xA0, 0xF3, -0xA5, 0x44, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x18, 0x4B, 0xB0, 0x35, 0xA0, 0xF3, 0x0D, 0x4C, -0x46, 0xE9, 0xB5, 0xE3, 0x90, 0x34, 0x91, 0xE3, -0x0D, 0xD5, 0x61, 0x42, 0xA3, 0x42, 0x23, 0x4A, -0x09, 0xD5, 0x0C, 0xD4, 0x0B, 0xD3, 0x10, 0xD2, -0x0D, 0x95, 0x09, 0x93, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xAD, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0xC0, 0x36, 0xC4, 0x36, 0xD9, 0xE3, 0xC3, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x0C, 0x95, -0x0B, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0xAD, -0x01, 0x6D, 0xAB, 0xED, 0xC0, 0x36, 0xC4, 0x36, -0xD9, 0xE3, 0xC3, 0xF3, 0x18, 0x6C, 0x40, 0xEA, -0x0D, 0x95, 0x0C, 0x93, 0x09, 0x92, 0x02, 0x4D, -0x02, 0x4B, 0x0D, 0xD5, 0x0C, 0xD3, 0x0B, 0x95, -0x10, 0x93, 0x04, 0x4A, 0x04, 0x4D, 0x6A, 0xEA, -0x09, 0xD2, 0x0B, 0xD5, 0xD5, 0x61, 0xFF, 0x6A, -0x2C, 0xEA, 0x08, 0x2A, 0x08, 0x95, 0x06, 0x93, -0xC0, 0xF3, 0x44, 0x98, 0xC0, 0xA5, 0x80, 0xAB, -0x01, 0x6D, 0x08, 0x10, 0x06, 0x93, 0x08, 0x95, -0xC0, 0xF3, 0x44, 0x98, 0x80, 0xAB, 0xC1, 0xA5, -0x00, 0xF4, 0x00, 0x6D, 0xCF, 0xEE, 0x01, 0x49, -0x40, 0xEA, 0x02, 0x71, 0x5F, 0xF7, 0x0C, 0x61, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x06, 0xF0, 0x00, 0x6D, 0x03, 0xF3, 0x0C, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x07, 0x95, 0x06, 0x92, -0x08, 0x93, 0x01, 0x4D, 0x07, 0xD5, 0x02, 0x4A, -0x0A, 0x95, 0x06, 0xD2, 0x07, 0x92, 0x02, 0x4B, -0x04, 0x4D, 0x02, 0x72, 0x08, 0xD3, 0x0A, 0xD5, -0x1F, 0xF7, 0x04, 0x61, 0x15, 0x97, 0x14, 0x91, -0x13, 0x90, 0x0B, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, -0x4C, 0xEC, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x00, 0x6B, 0xE7, 0xF5, -0x6C, 0xC2, 0x1A, 0x2C, 0x27, 0xF2, 0x6A, 0xA2, -0x17, 0x23, 0x67, 0xF3, 0x60, 0x9A, 0x47, 0xF3, -0x98, 0x9A, 0x00, 0x68, 0x6E, 0xEC, 0x05, 0x24, -0x47, 0xF3, 0x5C, 0x9A, 0x4E, 0xEB, 0x0C, 0x2B, -0x01, 0x68, 0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x90, 0x67, 0x6B, 0xF3, 0x64, 0xC2, 0x80, 0x18, -0xCD, 0x02, 0x90, 0x67, 0x80, 0x18, 0x4E, 0x40, -0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF3, 0x44, 0xA2, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xAA, 0xF7, 0x4D, 0xA2, 0x05, 0x22, 0x00, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x5E, 0x03, 0x04, 0x10, -0x00, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0xCD, 0x02, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x00, 0x6A, 0x7D, 0x67, 0x4C, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x30, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x14, 0x4A, 0xE0, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0xCA, 0xF4, 0x18, 0x48, -0x00, 0x6D, 0x90, 0x67, 0xC5, 0x67, 0x04, 0xD1, -0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF3, 0x14, 0x4B, 0xE0, 0x9B, 0x90, 0x67, -0x01, 0x6D, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x04, 0xD1, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF4, 0xAC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xE1, 0xF0, 0x18, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0xE1, 0xF0, 0x1C, 0x6C, 0xAB, 0xED, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x07, 0x6D, -0xC5, 0x67, 0x83, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, -0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x48, 0x9A, 0xA1, 0xF3, 0x18, 0x6F, -0xA1, 0xF7, 0x00, 0x6C, 0x08, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, -0x08, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x02, 0xF4, 0xB0, 0x9B, 0x01, 0xF2, 0x04, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF3, 0x70, 0x9A, 0xFF, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0xFE, 0x6C, 0x4C, 0xEC, 0x80, 0xC3, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF4, -0x54, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF4, -0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF4, -0x58, 0x9A, 0x60, 0xDA, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x34, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0xCA, 0xF4, 0x18, 0x48, -0x90, 0x67, 0xF1, 0x67, 0x01, 0xF2, 0x00, 0x6A, -0x00, 0x6D, 0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF4, -0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, -0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0xEC, 0x9A, 0x80, 0x18, 0x83, 0x45, 0x07, 0x92, +0x00, 0x69, 0x44, 0x32, 0x0D, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x0D, 0x93, 0xE2, 0xF3, 0x44, 0x9A, +0x4D, 0xEB, 0x0D, 0xD3, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x0D, 0x96, 0x01, 0x6D, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, +0x0C, 0x6C, 0xAB, 0xED, 0x07, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, +0x0C, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, +0xFF, 0x6A, 0x2C, 0xEA, 0x08, 0x2A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x03, 0x6E, 0x07, 0x10, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xE2, 0xF3, 0xB0, 0x9B, 0xC3, 0xF3, +0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, 0x0E, 0x93, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF4, 0x40, 0x9A, +0x64, 0x34, 0x07, 0x93, 0x46, 0xE9, 0x71, 0xE4, +0x84, 0x34, 0x91, 0xE1, 0x90, 0x34, 0x30, 0xF0, +0x20, 0x6B, 0x47, 0xF2, 0x18, 0x4C, 0x83, 0xF5, +0x00, 0x4B, 0x8D, 0xE3, 0x0A, 0xD3, 0x63, 0x42, +0x09, 0xD3, 0x61, 0x42, 0x23, 0x4A, 0x0C, 0xD3, +0x0F, 0xD2, 0x0A, 0x92, 0x09, 0x93, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xAA, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xC0, 0x36, 0xC4, 0x36, 0xD9, 0xE3, +0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x0A, 0x92, 0x0C, 0x93, 0x01, 0x6D, 0x80, 0xF0, +0xC0, 0xAA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0x18, 0x6C, 0xC0, 0x36, 0xC4, 0x36, 0xD9, 0xE3, +0xAB, 0xED, 0x40, 0xEA, 0x0A, 0x92, 0x09, 0x93, +0x02, 0x4A, 0x0A, 0xD2, 0x0C, 0x92, 0x04, 0x4B, +0x09, 0xD3, 0x04, 0x4A, 0x0C, 0xD2, 0x0F, 0x92, +0x4A, 0xEB, 0xD7, 0x61, 0xFF, 0x6A, 0x2C, 0xEA, +0x08, 0x2A, 0x08, 0x93, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xC0, 0xA3, 0x06, 0x93, 0x80, 0xAB, +0x08, 0x10, 0x08, 0x92, 0x06, 0x93, 0x00, 0xF4, +0x00, 0x6D, 0xC1, 0xA2, 0x80, 0xAB, 0xC0, 0xF3, +0x44, 0x98, 0xCF, 0xEE, 0x01, 0x49, 0x40, 0xEA, +0x02, 0x71, 0x5F, 0xF7, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x07, 0x92, 0x06, 0x93, 0x01, 0x4A, +0x07, 0xD2, 0x08, 0x92, 0x02, 0x4B, 0x06, 0xD3, +0x02, 0x4A, 0x0B, 0x93, 0x08, 0xD2, 0x07, 0x92, +0x04, 0x4B, 0x0B, 0xD3, 0x02, 0x72, 0x1F, 0xF7, +0x09, 0x61, 0x15, 0x97, 0x14, 0x91, 0x13, 0x90, +0x0B, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x00, 0x6B, 0xE7, 0xF5, 0x74, 0xC2, 0x1A, 0x2C, +0x27, 0xF2, 0x72, 0xA2, 0x17, 0x23, 0x67, 0xF3, +0x68, 0x9A, 0x67, 0xF3, 0x80, 0x9A, 0x00, 0x68, +0x6E, 0xEC, 0x05, 0x24, 0x67, 0xF3, 0x44, 0x9A, +0x4E, 0xEB, 0x0C, 0x2B, 0x01, 0x68, 0x01, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x90, 0x67, 0x6B, 0xF3, +0x74, 0xC2, 0x80, 0x18, 0xC9, 0x02, 0x90, 0x67, +0x80, 0x18, 0x4E, 0x40, 0x30, 0xF0, 0x20, 0x6A, +0x6B, 0xF3, 0x54, 0xA2, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF7, 0x5D, 0xA2, +0x05, 0x22, 0x00, 0x6C, 0x01, 0x6D, 0x80, 0x18, +0x57, 0x03, 0x04, 0x10, 0x00, 0x6C, 0x01, 0x6D, +0x80, 0x18, 0xC9, 0x02, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x0E, 0xD6, 0x0F, 0xD7, -0x04, 0xD7, 0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, -0x0E, 0x97, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, -0x20, 0x6C, 0xCA, 0xF4, 0x18, 0x4C, 0xB0, 0x67, -0xD1, 0x67, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x0E, 0x97, -0xCA, 0xF4, 0x18, 0x4B, 0x83, 0x67, 0xB0, 0x67, -0xD1, 0x67, 0x06, 0xD3, 0x80, 0x18, 0x3E, 0x45, -0x0F, 0x93, 0x6E, 0xEA, 0x1E, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0x40, 0xEA, 0x0F, 0x92, 0x06, 0x94, 0x0E, 0x97, -0xB0, 0x67, 0xD1, 0x67, 0x04, 0xD2, 0x80, 0x18, -0x83, 0x45, 0x07, 0x93, 0x01, 0x4B, 0xE0, 0xF3, -0x08, 0x73, 0x07, 0xD3, 0xDE, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xA0, 0xF1, -0x00, 0x6C, 0x1F, 0xF7, 0x00, 0x6D, 0x0A, 0x6E, -0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0xE2, 0xF3, -0xF4, 0x9A, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, -0x20, 0x6C, 0x0E, 0xD6, 0x04, 0xD6, 0xCA, 0xF4, -0x18, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, +0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x7D, 0x67, +0x4C, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, +0x28, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, +0x0C, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0xEA, 0xF4, 0x00, 0x48, 0x00, 0x6D, 0x90, 0x67, +0xC5, 0x67, 0x04, 0xD1, 0x80, 0x18, 0x83, 0x45, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x0C, 0x4B, +0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0x00, 0x6E, +0x30, 0xF0, 0x20, 0x68, 0x04, 0xD1, 0x80, 0x18, +0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, +0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE1, 0xF0, +0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0xE1, 0xF0, 0x1C, 0x6C, +0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x07, 0x6D, 0xC5, 0x67, 0x83, 0xF1, +0x0C, 0x6C, 0x40, 0xEA, 0x06, 0x02, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, +0xA1, 0xF3, 0x18, 0x6F, 0xA1, 0xF7, 0x00, 0x6C, +0x08, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0xF0, 0x08, 0x6C, 0xFF, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x02, 0xF4, 0xA8, 0x9B, +0x01, 0xF2, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x68, 0x9A, +0xFF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0xFE, 0x6C, +0x4C, 0xEC, 0x80, 0xC3, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF4, 0x4C, 0x9A, 0x60, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0x09, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF4, 0x74, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF4, 0x50, 0x9A, 0x60, 0xDA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF3, 0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0xEA, 0xF4, 0x00, 0x48, 0x90, 0x67, 0xF1, 0x67, +0x01, 0xF2, 0x00, 0x6A, 0x00, 0x6D, 0xB8, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF4, 0x58, 0x9A, 0x90, 0x67, +0xF1, 0x67, 0x00, 0x6D, 0xB8, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0x83, 0x45, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x0E, 0xD6, 0x0F, 0xD7, 0x04, 0xD7, 0xFF, 0x68, +0xFF, 0xF7, 0x1F, 0x69, 0x0E, 0x97, 0x8C, 0xE8, +0xAC, 0xE9, 0x30, 0xF0, 0x20, 0x6C, 0xEA, 0xF4, +0x00, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x14, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0xE0, 0x9A, 0xCA, 0xF4, 0x18, 0x4B, +0x20, 0x6B, 0x0E, 0x97, 0xEA, 0xF4, 0x00, 0x4B, 0x83, 0x67, 0xB0, 0x67, 0xD1, 0x67, 0x06, 0xD3, -0x80, 0x18, 0x3E, 0x45, 0x0E, 0x93, 0x6E, 0xEA, -0x18, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF3, 0x14, 0x4B, 0x0E, 0x92, -0x06, 0x94, 0xE0, 0x9B, 0xB0, 0x67, 0xD1, 0x67, -0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x07, 0x92, -0x01, 0x4A, 0xE0, 0xF3, 0x08, 0x72, 0x07, 0xD2, -0xD6, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x0C, 0xD4, -0x05, 0x67, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, -0x30, 0xF0, 0x20, 0x69, 0x6C, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF3, 0x14, 0x4B, 0x07, 0xD2, -0xE0, 0x9B, 0x07, 0x95, 0xCA, 0xF4, 0x18, 0x49, -0x00, 0x6A, 0x91, 0x67, 0xEF, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0x83, 0x45, 0x40, 0x98, 0x06, 0x94, -0x11, 0x6E, 0xCB, 0xEE, 0x4C, 0xEE, 0xDF, 0x6D, -0x80, 0x18, 0xF7, 0x03, 0x0C, 0x92, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF3, 0x14, 0x4B, 0xC1, 0xA2, -0xE0, 0x9B, 0x42, 0x98, 0x07, 0x95, 0x91, 0x67, -0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x0C, 0x92, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x14, 0x4B, -0xC2, 0xA2, 0x07, 0x95, 0x44, 0x98, 0xE0, 0x9B, -0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x06, 0x92, 0x04, 0x48, 0x01, 0x4A, 0x02, 0x72, -0x06, 0xD2, 0xC4, 0x61, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x0A, 0xD4, 0xAA, 0xF7, 0x62, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF4, 0x2C, 0x9A, 0x30, 0xF0, -0x20, 0x68, 0x0A, 0x93, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0x35, 0xE3, 0x2B, 0xF3, -0x00, 0x4C, 0x08, 0x6E, 0x40, 0xEA, 0x0A, 0x95, +0x80, 0x18, 0x3E, 0x45, 0x0F, 0x93, 0x6E, 0xEA, +0x1E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x0F, 0x92, +0x06, 0x94, 0x0E, 0x97, 0xB0, 0x67, 0xD1, 0x67, +0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x07, 0x93, +0x01, 0x4B, 0xE0, 0xF3, 0x08, 0x73, 0x07, 0xD3, +0xDE, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xA0, 0xF1, 0x00, 0x6C, 0x1F, 0xF7, +0x00, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x68, 0xFF, 0xF7, +0x1F, 0x69, 0xE2, 0xF3, 0xEC, 0x9A, 0x8C, 0xE8, +0xAC, 0xE9, 0x30, 0xF0, 0x20, 0x6C, 0x0E, 0xD6, +0x04, 0xD6, 0xEA, 0xF4, 0x00, 0x4C, 0xB0, 0x67, +0xD1, 0x67, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, +0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, +0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0x9A, +0xEA, 0xF4, 0x00, 0x4B, 0x83, 0x67, 0xB0, 0x67, +0xD1, 0x67, 0x06, 0xD3, 0x80, 0x18, 0x3E, 0x45, +0x0E, 0x93, 0x6E, 0xEA, 0x18, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, +0x0C, 0x4B, 0x0E, 0x92, 0x06, 0x94, 0xE0, 0x9B, +0xB0, 0x67, 0xD1, 0x67, 0x04, 0xD2, 0x80, 0x18, +0x83, 0x45, 0x07, 0x92, 0x01, 0x4A, 0xE0, 0xF3, +0x08, 0x72, 0x07, 0xD2, 0xD6, 0x61, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x00, 0x6A, 0x0C, 0xD4, 0x05, 0x67, 0x06, 0xD2, +0x06, 0x92, 0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x69, +0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, +0x0C, 0x4B, 0x07, 0xD2, 0xE0, 0x9B, 0x07, 0x95, +0xEA, 0xF4, 0x00, 0x49, 0x00, 0x6A, 0x91, 0x67, +0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, +0x40, 0x98, 0x06, 0x94, 0x11, 0x6E, 0xCB, 0xEE, +0x4C, 0xEE, 0xDF, 0x6D, 0x80, 0x18, 0xF0, 0x03, +0x0C, 0x92, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, +0x0C, 0x4B, 0xC1, 0xA2, 0xE0, 0x9B, 0x42, 0x98, +0x07, 0x95, 0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, +0x83, 0x45, 0x0C, 0x92, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF3, 0x0C, 0x4B, 0xC2, 0xA2, 0x07, 0x95, +0x44, 0x98, 0xE0, 0x9B, 0x91, 0x67, 0x04, 0xD2, +0x80, 0x18, 0x83, 0x45, 0x06, 0x92, 0x04, 0x48, +0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, 0xC4, 0x61, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x01, 0x6B, 0x6B, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x0A, 0xD4, 0xAA, 0xF7, +0x72, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF4, +0x24, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6C, -0x08, 0x4D, 0x35, 0xE5, 0xEB, 0xF0, 0x18, 0x4C, -0x44, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0x30, 0xF0, -0x20, 0x6C, 0x2B, 0xF1, 0x1C, 0x4C, 0x4C, 0x4A, -0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, -0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, -0x30, 0xF0, 0x20, 0x6C, 0x8B, 0xF1, 0x00, 0x4C, -0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, -0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, -0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0xCB, 0xF1, -0x04, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, +0x35, 0xE3, 0x2B, 0xF3, 0x10, 0x4C, 0x08, 0x6E, +0x40, 0xEA, 0x0A, 0x95, 0x80, 0xF2, 0x4C, 0x98, +0x30, 0xF0, 0x20, 0x6C, 0x08, 0x4D, 0x35, 0xE5, +0x0B, 0xF1, 0x08, 0x4C, 0x44, 0x6E, 0x40, 0xEA, +0x0A, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x4B, 0xF1, +0x0C, 0x4C, 0x4C, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, -0x0B, 0xF2, 0x08, 0x4C, 0x44, 0x4A, 0x04, 0xD2, +0x8B, 0xF1, 0x10, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, -0x20, 0x6C, 0x4B, 0xF2, 0x0C, 0x4C, 0x44, 0x4A, +0x20, 0x6C, 0xCB, 0xF1, 0x14, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, -0x30, 0xF0, 0x20, 0x6C, 0x8B, 0xF2, 0x10, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x0B, 0xF2, 0x18, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, -0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0xCB, 0xF2, -0x14, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, +0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x4B, 0xF2, +0x1C, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, -0xB0, 0x9B, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF3, 0x18, 0x4C, -0xB5, 0xE3, 0x10, 0x6E, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0xD1, 0x08, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF0, 0x74, 0xA2, 0x80, 0xF0, -0x19, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0x6B, -0x42, 0xF3, 0x98, 0x9C, 0xE2, 0xF0, 0x74, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x27, 0xF2, 0x7B, 0xC2, 0x47, 0xF2, 0x80, 0xDA, -0x27, 0xF2, 0x79, 0xC2, 0x27, 0xF2, 0x7D, 0xC2, -0x47, 0xF2, 0x88, 0xDA, 0x27, 0xF2, 0x7C, 0xC2, -0x47, 0xF2, 0x84, 0xDA, 0x27, 0xF2, 0x7A, 0xC2, -0x27, 0xF2, 0x7E, 0xC2, 0x47, 0xF2, 0x8C, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6C, -0x2B, 0xF3, 0x00, 0x4C, 0x0B, 0xF1, 0x1A, 0x4B, -0x00, 0x6A, 0x00, 0x6D, 0xA0, 0xDC, 0xB0, 0xF7, -0xC8, 0x42, 0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF5, -0x18, 0x4D, 0xCC, 0x36, 0xD9, 0xE5, 0x04, 0xD6, -0x61, 0xF7, 0xCE, 0x42, 0xC8, 0x36, 0xD9, 0xE5, -0x03, 0xD6, 0x06, 0x6E, 0xD8, 0xEA, 0x01, 0xD3, -0x12, 0xEE, 0xD9, 0xE5, 0xC7, 0xF5, 0x11, 0x4E, -0x00, 0x6D, 0x04, 0x90, 0x00, 0x6F, 0xE0, 0xD8, -0x03, 0x90, 0xE0, 0xC8, 0x44, 0x30, 0x01, 0xE5, -0xC3, 0xF6, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6F, -0x04, 0x30, 0x63, 0xF5, 0x18, 0x4F, 0x1D, 0xE7, -0x05, 0xD7, 0x01, 0x97, 0x00, 0x68, 0x00, 0xD0, -0x02, 0xD7, 0x05, 0x90, 0x00, 0x6F, 0x22, 0x69, -0xE0, 0xC0, 0x00, 0x97, 0x06, 0xD2, 0x38, 0xEF, -0x44, 0x6F, 0x12, 0xE9, 0xF8, 0xED, 0x12, 0xEF, -0xE5, 0xE1, 0x88, 0x6F, 0xF8, 0xEA, 0x12, 0xEF, -0xE5, 0xE1, 0x30, 0xF0, 0x20, 0x6F, 0x87, 0xF3, -0x00, 0x41, 0x63, 0xF5, 0x18, 0x4F, 0x87, 0xF4, -0x10, 0x49, 0x01, 0xE7, 0x25, 0xE7, 0x02, 0x92, -0x00, 0x6F, 0xE0, 0xC8, 0x02, 0x48, 0x4A, 0xE8, -0xE0, 0xC9, 0x02, 0x49, 0xF8, 0x61, 0x00, 0x90, -0x06, 0x92, 0x01, 0x48, 0x00, 0xD0, 0x05, 0x90, -0x01, 0x48, 0x05, 0xD0, 0x02, 0x90, 0x22, 0x48, -0x02, 0xD0, 0x00, 0x90, 0x02, 0x70, 0xD1, 0x61, -0xE0, 0xC6, 0xE1, 0xC6, 0xE2, 0xC6, 0x04, 0x97, -0x03, 0x90, 0x01, 0x4D, 0x04, 0x4F, 0x04, 0xD7, -0x01, 0x97, 0x02, 0x48, 0x02, 0x75, 0x44, 0x4F, -0x03, 0xD0, 0x03, 0x4E, 0x01, 0xD7, 0xAD, 0x61, -0x01, 0x4A, 0x7F, 0x4B, 0x02, 0x72, 0x04, 0x4C, -0x09, 0x4B, 0x8F, 0x61, 0x09, 0x91, 0x08, 0x90, -0x05, 0x63, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, -0x4C, 0xEC, 0xCC, 0xEA, 0x4B, 0xEA, 0xC0, 0xF7, -0x42, 0x32, 0x30, 0xF0, 0x20, 0x68, 0x44, 0x32, -0xC0, 0xF3, 0x64, 0x98, 0x07, 0xD5, 0x04, 0xD2, -0xA4, 0x36, 0x08, 0x6A, 0x01, 0x6D, 0x06, 0xD4, -0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEB, 0x06, 0x92, 0x0F, 0x2A, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x02, 0xF4, -0xA8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF4, -0x54, 0x9A, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x02, 0xF4, 0xA8, 0x9B, -0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF4, 0x58, 0x9A, -0x05, 0xD2, 0x06, 0x92, 0x22, 0x69, 0x07, 0x93, -0x38, 0xEA, 0x44, 0x6A, 0x00, 0x68, 0x12, 0xE9, -0x58, 0xEB, 0x04, 0x93, 0x12, 0xEA, 0x45, 0xE1, -0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x45, 0xE1, -0x30, 0xF0, 0x20, 0x6A, 0x87, 0xF3, 0x00, 0x49, -0x63, 0xF5, 0x18, 0x4A, 0x25, 0xE2, 0xC0, 0xA9, -0x05, 0x94, 0x08, 0x32, 0xC0, 0x36, 0x8D, 0xEE, -0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, -0xAB, 0xED, 0x02, 0x4E, 0x01, 0x48, 0x40, 0xEA, -0x11, 0x70, 0x02, 0x49, 0xEC, 0x61, 0x06, 0x92, -0x22, 0x6B, 0x07, 0x94, 0x78, 0xEA, 0x44, 0x6A, -0x00, 0x69, 0x12, 0xEB, 0x58, 0xEC, 0x04, 0x94, -0x12, 0xEA, 0x4D, 0xE3, 0x88, 0x6A, 0x58, 0xEC, -0x12, 0xEA, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6A, -0x87, 0xF4, 0x10, 0x4B, 0x63, 0xF5, 0x18, 0x4A, -0x69, 0xE2, 0x04, 0xD2, 0x04, 0x92, 0x05, 0x93, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xAA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0xC0, 0x36, 0x6D, 0xEE, -0x28, 0x33, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x94, 0x01, 0x49, -0x11, 0x71, 0x02, 0x4C, 0x04, 0xD4, 0xEA, 0x61, +0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, +0xAB, 0xF2, 0x00, 0x4C, 0x44, 0x4A, 0x04, 0xD2, +0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, +0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, +0x20, 0x6C, 0xEB, 0xF2, 0x04, 0x4C, 0x44, 0x4A, +0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, +0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF4, 0xA8, 0x9B, 0x04, 0x93, +0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6C, +0x4B, 0xF3, 0x08, 0x4C, 0xB5, 0xE3, 0x10, 0x6E, +0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0xD1, +0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF0, +0x74, 0xA2, 0x80, 0xF0, 0x19, 0x23, 0x30, 0xF0, +0x20, 0x6C, 0x00, 0x6B, 0x42, 0xF3, 0x90, 0x9C, +0xE2, 0xF0, 0x74, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF5, 0x00, 0x4A, 0x47, 0xF2, 0x63, 0xC2, +0x47, 0xF2, 0x88, 0xDA, 0x47, 0xF2, 0x61, 0xC2, +0x47, 0xF2, 0x65, 0xC2, 0x47, 0xF2, 0x90, 0xDA, +0x47, 0xF2, 0x64, 0xC2, 0x47, 0xF2, 0x8C, 0xDA, +0x47, 0xF2, 0x62, 0xC2, 0x47, 0xF2, 0x66, 0xC2, +0x47, 0xF2, 0x94, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6C, 0x2B, 0xF3, 0x10, 0x4C, +0x2B, 0xF1, 0x0A, 0x4B, 0x00, 0x6A, 0x00, 0x6D, +0xA0, 0xDC, 0xB0, 0xF7, 0xC9, 0x42, 0x30, 0xF0, +0x20, 0x6D, 0x83, 0xF5, 0x00, 0x4D, 0xCC, 0x36, +0xD9, 0xE5, 0x04, 0xD6, 0x71, 0xF7, 0xC0, 0x42, +0xC8, 0x36, 0xD9, 0xE5, 0x03, 0xD6, 0x06, 0x6E, +0xD8, 0xEA, 0x01, 0xD3, 0x12, 0xEE, 0xD9, 0xE5, +0xC7, 0xF5, 0x19, 0x4E, 0x00, 0x6D, 0x04, 0x90, +0x00, 0x6F, 0xE0, 0xD8, 0x03, 0x90, 0xE0, 0xC8, +0x44, 0x30, 0x01, 0xE5, 0xC3, 0xF6, 0x14, 0x48, +0x30, 0xF0, 0x20, 0x6F, 0x04, 0x30, 0x83, 0xF5, +0x00, 0x4F, 0x1D, 0xE7, 0x05, 0xD7, 0x01, 0x97, +0x00, 0x68, 0x00, 0xD0, 0x02, 0xD7, 0x05, 0x90, +0x00, 0x6F, 0x22, 0x69, 0xE0, 0xC0, 0x00, 0x97, +0x06, 0xD2, 0x38, 0xEF, 0x44, 0x6F, 0x12, 0xE9, +0xF8, 0xED, 0x12, 0xEF, 0xE5, 0xE1, 0x88, 0x6F, +0xF8, 0xEA, 0x12, 0xEF, 0xE5, 0xE1, 0x30, 0xF0, +0x20, 0x6F, 0x87, 0xF3, 0x08, 0x41, 0x83, 0xF5, +0x00, 0x4F, 0x87, 0xF4, 0x18, 0x49, 0x01, 0xE7, +0x25, 0xE7, 0x02, 0x92, 0x00, 0x6F, 0xE0, 0xC8, +0x02, 0x48, 0x4A, 0xE8, 0xE0, 0xC9, 0x02, 0x49, +0xF8, 0x61, 0x00, 0x90, 0x06, 0x92, 0x01, 0x48, +0x00, 0xD0, 0x05, 0x90, 0x01, 0x48, 0x05, 0xD0, +0x02, 0x90, 0x22, 0x48, 0x02, 0xD0, 0x00, 0x90, +0x02, 0x70, 0xD1, 0x61, 0xE0, 0xC6, 0xE1, 0xC6, +0xE2, 0xC6, 0x04, 0x97, 0x03, 0x90, 0x01, 0x4D, +0x04, 0x4F, 0x04, 0xD7, 0x01, 0x97, 0x02, 0x48, +0x02, 0x75, 0x44, 0x4F, 0x03, 0xD0, 0x03, 0x4E, +0x01, 0xD7, 0xAD, 0x61, 0x01, 0x4A, 0x7F, 0x4B, +0x02, 0x72, 0x04, 0x4C, 0x09, 0x4B, 0x8F, 0x61, +0x09, 0x91, 0x08, 0x90, 0x05, 0x63, 0x20, 0xE8, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEC, 0xCC, 0xEA, +0x4B, 0xEA, 0xC0, 0xF7, 0x42, 0x32, 0x30, 0xF0, +0x20, 0x68, 0x44, 0x32, 0xC0, 0xF3, 0x64, 0x98, +0x07, 0xD5, 0x04, 0xD2, 0xA4, 0x36, 0x08, 0x6A, +0x01, 0x6D, 0x06, 0xD4, 0x4D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x06, 0x92, +0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x02, 0xF4, 0xA0, 0x9B, 0x23, 0xF3, +0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF4, 0x4C, 0x9A, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xE2, 0xF3, 0xDC, 0x9B, 0x01, 0x6D, 0xC3, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x02, 0xF4, -0xA8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x61, 0xF7, 0x88, 0x42, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF6, 0x18, 0x4A, 0x63, 0xF5, 0x18, 0x4B, -0x88, 0x34, 0x44, 0x32, 0x91, 0xE3, 0x4D, 0xE3, -0x00, 0x68, 0x04, 0x4B, 0x04, 0xD4, 0x05, 0xD3, -0x06, 0xD0, 0x07, 0xD0, 0x08, 0xD0, 0x04, 0x95, -0x01, 0x6C, 0x08, 0x93, 0x40, 0xA5, 0x30, 0xF0, -0x20, 0x69, 0x04, 0x36, 0x8C, 0xEA, 0x44, 0xE8, -0x4D, 0xE3, 0x41, 0xA5, 0x05, 0x95, 0x08, 0xD3, -0x8C, 0xEA, 0x07, 0x94, 0x64, 0x40, 0x44, 0xEB, -0x51, 0xE4, 0x40, 0xA5, 0x07, 0xD4, 0x03, 0x6C, -0x64, 0x33, 0x8C, 0xEA, 0x44, 0xEB, 0x04, 0x94, -0x06, 0x93, 0x01, 0x6D, 0x8C, 0xAC, 0x4D, 0xE3, -0x06, 0xD3, 0xC0, 0xF3, 0x64, 0x99, 0x08, 0x6A, -0x4D, 0xEE, 0x09, 0xD4, 0xAB, 0xED, 0x03, 0xF3, -0x00, 0x6C, 0x40, 0xEB, 0x08, 0x95, 0x07, 0x96, -0x06, 0x93, 0xC0, 0xF3, 0x44, 0x99, 0xAD, 0xEE, -0x6D, 0xEE, 0xE3, 0xF3, 0x10, 0x6C, 0xFF, 0xF7, -0x1F, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, -0x09, 0x96, 0x01, 0x6D, 0xE3, 0xF3, 0x08, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x04, 0x94, 0x05, 0x95, -0x01, 0x48, 0x02, 0x4C, 0x01, 0x4D, 0x02, 0x70, -0x04, 0xD4, 0x05, 0xD5, 0xBC, 0x61, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0xD2, 0x00, 0x6A, -0x04, 0xD2, 0x04, 0x92, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x64, 0x98, 0x01, 0x69, 0x2B, 0xE9, -0x44, 0x36, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, -0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEB, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF4, -0xDC, 0x9B, 0x03, 0xF3, 0x04, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x05, 0x92, 0x07, 0x2A, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0xB1, 0x67, -0x80, 0x6E, 0x06, 0x10, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x08, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x01, 0x69, -0xC0, 0xF3, 0x44, 0x98, 0x2B, 0xE9, 0x03, 0xF3, -0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0xC8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x14, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF4, 0xC4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x1C, 0x6C, 0xB1, 0x67, +0x02, 0xF4, 0xA0, 0x9B, 0x23, 0xF3, 0x00, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF4, 0x50, 0x9A, 0x05, 0xD2, 0x06, 0x92, +0x22, 0x69, 0x07, 0x93, 0x38, 0xEA, 0x44, 0x6A, +0x00, 0x68, 0x12, 0xE9, 0x58, 0xEB, 0x04, 0x93, +0x12, 0xEA, 0x45, 0xE1, 0x88, 0x6A, 0x58, 0xEB, +0x12, 0xEA, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, +0x87, 0xF3, 0x08, 0x49, 0x83, 0xF5, 0x00, 0x4A, +0x25, 0xE2, 0xC0, 0xA9, 0x05, 0x94, 0x08, 0x32, +0xC0, 0x36, 0x8D, 0xEE, 0x4D, 0xEE, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, +0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x02, 0x4E, +0x01, 0x48, 0x40, 0xEA, 0x11, 0x70, 0x02, 0x49, +0xEC, 0x61, 0x06, 0x92, 0x22, 0x6B, 0x07, 0x94, +0x78, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xEB, +0x58, 0xEC, 0x04, 0x94, 0x12, 0xEA, 0x4D, 0xE3, +0x88, 0x6A, 0x58, 0xEC, 0x12, 0xEA, 0x4D, 0xE3, +0x30, 0xF0, 0x20, 0x6A, 0x87, 0xF4, 0x18, 0x4B, +0x83, 0xF5, 0x00, 0x4A, 0x69, 0xE2, 0x04, 0xD2, +0x04, 0x92, 0x05, 0x93, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xAA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xC0, 0x36, 0x6D, 0xEE, 0x28, 0x33, 0xC3, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, +0x04, 0x94, 0x01, 0x49, 0x11, 0x71, 0x02, 0x4C, +0x04, 0xD4, 0xEA, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xE2, 0xF3, 0xD4, 0x9B, +0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x42, 0xF4, 0xC8, 0x9B, 0x23, 0xF3, -0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, -0x01, 0x4A, 0x02, 0x72, 0x04, 0xD2, 0x99, 0x61, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x44, 0x98, 0x02, 0xF4, 0xA0, 0x9B, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x61, 0xF7, 0x8A, 0x42, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, 0x1C, 0x4A, +0x83, 0xF5, 0x00, 0x4B, 0x88, 0x34, 0x44, 0x32, +0x91, 0xE3, 0x4D, 0xE3, 0x00, 0x68, 0x04, 0x4B, +0x04, 0xD4, 0x05, 0xD3, 0x06, 0xD0, 0x07, 0xD0, +0x08, 0xD0, 0x04, 0x95, 0x01, 0x6C, 0x08, 0x93, +0x40, 0xA5, 0x30, 0xF0, 0x20, 0x69, 0x04, 0x36, +0x8C, 0xEA, 0x44, 0xE8, 0x4D, 0xE3, 0x41, 0xA5, +0x05, 0x95, 0x08, 0xD3, 0x8C, 0xEA, 0x07, 0x94, +0x64, 0x40, 0x44, 0xEB, 0x51, 0xE4, 0x40, 0xA5, +0x07, 0xD4, 0x03, 0x6C, 0x64, 0x33, 0x8C, 0xEA, +0x44, 0xEB, 0x04, 0x94, 0x06, 0x93, 0x01, 0x6D, +0x8C, 0xAC, 0x4D, 0xE3, 0x06, 0xD3, 0xC0, 0xF3, +0x64, 0x99, 0x08, 0x6A, 0x4D, 0xEE, 0x09, 0xD4, +0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEB, +0x08, 0x95, 0x07, 0x96, 0x06, 0x93, 0xC0, 0xF3, +0x44, 0x99, 0xAD, 0xEE, 0x6D, 0xEE, 0xE3, 0xF3, +0x10, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x99, 0x09, 0x96, 0x01, 0x6D, +0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x04, 0x94, 0x05, 0x95, 0x01, 0x48, 0x02, 0x4C, +0x01, 0x4D, 0x02, 0x70, 0x04, 0xD4, 0x05, 0xD5, +0xBC, 0x61, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x04, 0xD2, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x24, 0x36, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x07, 0x2A, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, +0x80, 0x6D, 0x01, 0x6E, 0x06, 0x10, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, +0x00, 0x6E, 0x01, 0x49, 0x40, 0xEA, 0x02, 0x71, +0xE1, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x00, 0xF2, 0x1C, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF4, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x22, 0xF4, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF3, 0xB0, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF3, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF4, 0x10, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF3, 0xA8, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x62, 0xF3, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0xB8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, -0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0xE0, 0xF1, 0x1F, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF3, 0x18, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0x62, 0xF3, 0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF3, 0x2C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, +0xC2, 0xF3, 0x24, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, @@ -45883,272 +46403,272 @@ u8 array_mp_8822c_fw_spic[] = { 0x03, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, 0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, 0xD1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x22, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x22, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, -0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x42, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x42, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, -0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x08, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, -0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x18, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, -0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x08, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x22, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x42, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x42, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF4, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x42, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x00, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x62, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x62, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, -0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, +0x10, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0xC0, 0x9B, 0xC9, 0x12, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x04, 0xD2, 0xC7, 0xF5, 0x50, 0xA2, 0xE0, 0xF0, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x04, 0xD2, 0xC7, 0xF5, 0x58, 0xA2, 0xE0, 0xF0, 0x1B, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF4, 0xCC, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x62, 0xF4, 0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x00, 0x6C, -0x27, 0xF2, 0xD6, 0xA3, 0x04, 0x6B, 0x0E, 0xF0, +0x27, 0xF2, 0xDE, 0xA3, 0x04, 0x6B, 0x0E, 0xF0, 0x00, 0x6D, 0x67, 0xEE, 0xC3, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x27, 0xF2, -0xD6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xDE, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF4, 0x14, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x62, 0xF4, 0x1C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0x27, 0xF2, 0xD6, 0xA2, 0xC0, 0xF3, +0x10, 0x6C, 0x27, 0xF2, 0xDE, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x27, 0xF2, -0xD6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xDE, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF4, 0x1C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x82, 0xF4, 0x04, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0x27, 0xF2, 0xD6, 0xA2, 0xC0, 0xF3, +0x10, 0x6C, 0x27, 0xF2, 0xDE, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x00, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x08, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x82, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, -0x23, 0xF0, 0x10, 0x6C, 0x27, 0xF2, 0xD6, 0xA2, +0x23, 0xF0, 0x10, 0x6C, 0x27, 0xF2, 0xDE, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, -0x08, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x10, 0x4B, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, +0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x27, 0xF2, -0xD6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xDE, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF4, 0x14, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x62, 0xF4, 0x1C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, -0x10, 0x6C, 0x27, 0xF2, 0xD6, 0xA2, 0xC0, 0xF3, +0x10, 0x6C, 0x27, 0xF2, 0xDE, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x00, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x27, 0xF2, -0xD6, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xDE, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF4, 0x1C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x82, 0xF4, 0x04, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, -0x10, 0x6C, 0x27, 0xF2, 0xD6, 0xA2, 0xC0, 0xF3, +0x10, 0x6C, 0x27, 0xF2, 0xDE, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x00, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x08, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x82, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, -0x28, 0xF1, 0x10, 0x6C, 0x27, 0xF2, 0xD6, 0xA2, +0x28, 0xF1, 0x10, 0x6C, 0x27, 0xF2, 0xDE, 0xA2, 0xB1, 0x67, 0xC0, 0xF3, 0x44, 0x98, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, -0x08, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x63, 0x11, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, +0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x63, 0x11, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0x82, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x62, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x82, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x82, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, -0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0xA2, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0xA2, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x1C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, 0x04, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x82, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x82, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, -0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0xA2, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0xA2, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF4, 0x1C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, 0x04, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, -0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, +0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xC2, 0xF4, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF3, 0x38, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0x62, 0xF3, 0x30, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x68, 0xF1, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF3, -0x2C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x24, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, @@ -46164,15 +46684,15 @@ u8 array_mp_8822c_fw_spic[] = { 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x06, 0x67, 0xE2, 0xF4, -0xC8, 0x9B, 0x09, 0xD5, 0x01, 0x6D, 0x24, 0x67, +0xC0, 0xF3, 0x44, 0x9A, 0x06, 0x67, 0xC2, 0xF4, +0xD0, 0x9B, 0x09, 0xD5, 0x01, 0x6D, 0x24, 0x67, 0x0B, 0xD7, 0x63, 0xF5, 0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x00, 0x6A, 0x80, 0x98, 0x1F, 0xF7, 0x00, 0x6B, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6C, -0x60, 0x98, 0xE2, 0xF2, 0x9C, 0x9C, 0x6D, 0xE4, +0x60, 0x98, 0xE2, 0xF2, 0x94, 0x9C, 0x6D, 0xE4, 0x80, 0x99, 0x80, 0xDB, 0x07, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF3, 0x60, 0x9B, 0x91, 0xE3, +0x20, 0x6B, 0xE2, 0xF2, 0x78, 0x9B, 0x91, 0xE3, 0x60, 0x99, 0x60, 0xDC, 0x01, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x72, 0x04, 0x48, 0x04, 0x49, 0xE1, 0x61, 0x00, 0x68, 0x0B, 0x92, 0x30, 0xF0, @@ -46180,60 +46700,60 @@ u8 array_mp_8822c_fw_spic[] = { 0x80, 0xAC, 0xAB, 0xED, 0x0D, 0xE2, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x04, 0x48, 0x40, 0xEA, 0x2C, 0x70, 0xF0, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x0B, 0xF3, 0x59, 0xA2, 0x01, 0x72, 0x0A, 0x61, +0x2B, 0xF3, 0x49, 0xA2, 0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0x03, 0xF0, 0x0C, 0x6C, 0x62, 0xF3, 0xB8, 0x9B, +0x03, 0xF0, 0x0C, 0x6C, 0x62, 0xF3, 0xB0, 0x9B, 0x00, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x99, 0x62, 0xF3, 0xB8, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0x62, 0xF3, 0xB0, 0x9B, 0x03, 0xF0, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF3, 0x5B, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF3, 0x4B, 0xA2, 0x01, 0x72, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x08, 0xF1, 0x0C, 0x6C, 0x62, 0xF3, 0xB8, 0x9B, +0x08, 0xF1, 0x0C, 0x6C, 0x62, 0xF3, 0xB0, 0x9B, 0x00, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x62, 0xF3, 0xB8, 0x9B, 0x08, 0xF1, 0x0C, 0x6C, +0x62, 0xF3, 0xB0, 0x9B, 0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x4B, 0xF3, 0x48, 0xA2, 0x1E, 0x22, 0x30, 0xF0, +0x4B, 0xF3, 0x58, 0xA2, 0x1E, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, -0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF3, 0x30, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0xA2, 0xF3, 0x28, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x4C, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, +0x44, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF4, 0xA8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF4, 0xA0, 0x9B, 0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xE2, 0xF4, 0xAC, 0x9B, 0xC3, 0xF4, 0x10, 0x6C, +0xC2, 0xF4, 0xB4, 0x9B, 0xC3, 0xF4, 0x10, 0x6C, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF3, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x62, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF5, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, 0xCB, 0xEE, 0xA6, 0x67, 0x23, 0xF4, 0x18, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xE2, 0xF4, 0xB0, 0x9B, 0x21, 0xF0, 0x04, 0x6C, +0xC2, 0xF4, 0xB8, 0x9B, 0x21, 0xF0, 0x04, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0xEC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0xE4, 0x9B, 0xFF, 0x6A, 0x04, 0x6B, 0xC0, 0xA7, 0x4C, 0xED, 0x4C, 0xEC, 0x4C, 0xEE, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC7, 0x06, 0x2D, 0x07, 0x6B, 0x07, 0x24, 0x01, 0x74, 0x07, 0x6B, 0x12, 0x61, 0x0C, 0x10, 0x07, 0x2C, 0x79, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF4, 0x54, 0x9A, 0x08, 0x10, +0x20, 0x6A, 0xC2, 0xF4, 0x5C, 0x9A, 0x08, 0x10, 0x01, 0x74, 0x07, 0x61, 0x79, 0x6B, 0x6B, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF4, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF4, 0x40, 0x9A, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, -0x4C, 0x9A, 0xC0, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x44, 0x9A, 0xC0, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0xCC, 0xEC, 0xC0, 0xF3, 0x44, 0x98, 0xAC, 0xEE, 0x01, 0x69, @@ -46243,13 +46763,13 @@ u8 array_mp_8822c_fw_spic[] = { 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0xE2, 0xF4, 0xDC, 0x9B, +0x18, 0x6C, 0xB1, 0x67, 0xE2, 0xF4, 0xC4, 0x9B, 0x11, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x02, 0xF5, 0xC0, 0x9B, 0xC3, 0xF3, +0x44, 0x98, 0xE2, 0xF4, 0xC8, 0x9B, 0xC3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF3, 0xDC, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0xE2, 0xF3, 0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x30, 0xF0, 0x20, 0x68, 0xC3, 0xF3, 0x18, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, @@ -46258,63 +46778,63 @@ u8 array_mp_8822c_fw_spic[] = { 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, 0xA4, 0x9A, -0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, 0x6C, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF4, 0xAC, 0x9A, +0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, 0x40, 0x17, 0x20, 0x6B, 0x4C, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0x0A, 0x70, 0xEC, 0x61, 0x0A, 0x68, 0x50, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, -0x8C, 0xE8, 0x80, 0x18, 0xD8, 0x08, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF5, 0xC8, 0x9A, 0x01, 0x69, +0x8C, 0xE8, 0x80, 0x18, 0xAC, 0x08, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF4, 0xD0, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x0D, 0xEE, 0xB1, 0x67, 0x02, 0xF7, -0x00, 0x6C, 0x80, 0x18, 0x81, 0x17, 0xB1, 0x67, -0x02, 0xF7, 0x08, 0x6C, 0x80, 0x18, 0x6C, 0x17, +0x00, 0x6C, 0x80, 0x18, 0x55, 0x17, 0xB1, 0x67, +0x02, 0xF7, 0x08, 0x6C, 0x80, 0x18, 0x40, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, 0x37, 0x25, 0x61, 0x45, 0x00, 0x6A, 0x0E, 0x2B, 0x80, 0x18, -0xD8, 0x08, 0x01, 0x69, 0x0C, 0x96, 0x2B, 0xE9, +0xAC, 0x08, 0x01, 0x69, 0x0C, 0x96, 0x2B, 0xE9, 0x02, 0xF7, 0x04, 0x6C, 0xB1, 0x67, 0x80, 0x18, -0x81, 0x17, 0x02, 0xF7, 0x00, 0x6C, 0xB1, 0x67, +0x55, 0x17, 0x02, 0xF7, 0x00, 0x6C, 0xB1, 0x67, 0x1F, 0x10, 0x71, 0x67, 0x66, 0xEA, 0x01, 0x6C, 0x8C, 0xEB, 0x04, 0x2B, 0x01, 0x4A, 0x20, 0x72, 0xF8, 0x61, 0x00, 0x6A, 0x90, 0x67, 0x04, 0xD2, -0x2F, 0xE9, 0x80, 0x18, 0xE7, 0x08, 0x4C, 0xE9, -0x80, 0x18, 0xD8, 0x08, 0x0C, 0x96, 0x04, 0x92, +0x2F, 0xE9, 0x80, 0x18, 0xBB, 0x08, 0x4C, 0xE9, +0x80, 0x18, 0xAC, 0x08, 0x0C, 0x96, 0x04, 0x92, 0x01, 0x6D, 0x02, 0xF7, 0x04, 0x6C, 0xC4, 0xEA, -0xAB, 0xED, 0x2D, 0xEE, 0x80, 0x18, 0x81, 0x17, +0xAB, 0xED, 0x2D, 0xEE, 0x80, 0x18, 0x55, 0x17, 0x01, 0x6D, 0x02, 0xF7, 0x00, 0x6C, 0xAB, 0xED, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, 0xCC, 0x9A, -0x0D, 0xEE, 0x80, 0x18, 0x81, 0x17, 0x09, 0x97, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF4, 0xD4, 0x9A, +0x0D, 0xEE, 0x80, 0x18, 0x55, 0x17, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x38, 0x6C, 0x18, 0xF0, -0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0xF7, 0x08, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0xCB, 0x08, 0x38, 0x6C, 0x01, 0xF4, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0xF7, 0x08, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xCB, 0x08, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x38, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, -0x80, 0x18, 0xF7, 0x08, 0x38, 0x6C, 0x00, 0xF3, -0x00, 0x6D, 0x03, 0x6E, 0x80, 0x18, 0xF7, 0x08, +0x80, 0x18, 0xCB, 0x08, 0x38, 0x6C, 0x00, 0xF3, +0x00, 0x6D, 0x03, 0x6E, 0x80, 0x18, 0xCB, 0x08, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x05, 0x22, 0x80, 0x18, 0x23, 0x09, 0x80, 0x18, -0x1A, 0x09, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF3, 0xC0, 0x9A, 0x01, 0x6D, 0x38, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0xF7, 0x08, 0x05, 0x97, +0x05, 0x22, 0x80, 0x18, 0xF7, 0x08, 0x80, 0x18, +0xEE, 0x08, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x6B, 0xF3, 0xD0, 0x9A, 0x01, 0x6D, 0x38, 0x6C, +0xAB, 0xED, 0x80, 0x18, 0xCB, 0x08, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6A, 0x09, 0xD5, 0x27, 0x67, 0xA0, 0x9E, 0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x08, 0x2B, 0x30, 0xF0, 0x20, 0x6D, 0x60, 0x9E, -0xE2, 0xF2, 0xBC, 0x9D, 0x6D, 0xE5, 0x60, 0x9B, -0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, -0x60, 0x9B, 0xB5, 0xE3, 0x60, 0x9D, 0x55, 0xE4, +0xE2, 0xF2, 0xB4, 0x9D, 0x6D, 0xE5, 0x60, 0x9B, +0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, +0x78, 0x9B, 0xB5, 0xE3, 0x60, 0x9D, 0x55, 0xE4, 0x04, 0x4A, 0x0C, 0x72, 0x60, 0xDD, 0x04, 0x4E, 0xE4, 0x61, 0x00, 0x68, 0x09, 0xE1, 0x80, 0xAA, -0x01, 0x6D, 0xAB, 0xED, 0x80, 0x18, 0xF4, 0x16, +0x01, 0x6D, 0xAB, 0xED, 0x80, 0x18, 0xC8, 0x16, 0x09, 0x94, 0x0D, 0xE4, 0x04, 0x48, 0x2C, 0x70, 0x40, 0xDB, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, @@ -46327,33 +46847,33 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x05, 0x92, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x02, 0xF4, -0xA8, 0x9B, 0x03, 0x6E, 0x09, 0x10, 0x30, 0xF0, +0xA0, 0x9B, 0x03, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x02, 0xF4, -0xA8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, +0xA0, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF5, 0xB0, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0xE2, 0xF4, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x14, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xE2, 0xF3, 0xB8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xE2, 0xF3, 0xB0, 0x9B, 0x91, 0x67, 0x10, 0x6E, 0x40, 0xEA, 0x05, 0x92, 0x22, 0x6B, 0x06, 0x94, 0x78, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xEB, 0x58, 0xEC, 0x04, 0x94, 0x12, 0xEA, 0x4D, 0xE3, 0x88, 0x6A, 0x58, 0xEC, 0x12, 0xEA, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6A, -0x87, 0xF3, 0x80, 0x43, 0x63, 0xF5, 0x18, 0x4A, -0x87, 0xF4, 0x10, 0x4B, 0x91, 0xE2, 0x6D, 0xE2, +0x87, 0xF3, 0x88, 0x43, 0x83, 0xF5, 0x00, 0x4A, +0x87, 0xF4, 0x18, 0x4B, 0x91, 0xE2, 0x6D, 0xE2, 0x05, 0xD4, 0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF3, 0x7C, 0x9B, 0x30, 0xF0, 0x20, 0x68, +0xE2, 0xF3, 0x74, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0xF4, 0x16, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF4, 0x60, 0x9B, 0x05, 0x94, +0xAB, 0xED, 0x80, 0x18, 0xC8, 0x16, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF3, 0x78, 0x9B, 0x05, 0x94, 0x01, 0x49, 0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x60, 0xCC, 0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, 0x02, 0x4C, 0x11, 0x71, 0x60, 0xCA, 0x02, 0x4A, 0x05, 0xD4, 0x04, 0xD2, 0xD6, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, @@ -46361,47 +46881,47 @@ u8 array_mp_8822c_fw_spic[] = { 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6A, 0x24, 0x67, -0x63, 0xF5, 0x18, 0x48, 0x4C, 0xED, 0x4C, 0xE9, -0x27, 0xF2, 0x49, 0xA0, 0x06, 0xD5, 0x24, 0x36, +0x83, 0xF5, 0x00, 0x48, 0x4C, 0xED, 0x4C, 0xE9, +0x27, 0xF2, 0x51, 0xA0, 0x06, 0xD5, 0x24, 0x36, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x9A, 0x01, 0x6D, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, 0xA0, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x27, 0xF2, 0x48, 0xA0, 0x4B, 0x2A, 0x06, 0x92, -0x03, 0x22, 0x12, 0x6A, 0x27, 0xF2, 0x4E, 0xC0, +0x27, 0xF2, 0x50, 0xA0, 0x4B, 0x2A, 0x06, 0x92, +0x03, 0x22, 0x12, 0x6A, 0x27, 0xF2, 0x56, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0xAA, 0xF7, 0xC6, 0xA3, 0xC0, 0xF3, 0x44, 0x98, +0xAA, 0xF7, 0xD6, 0xA3, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0xCA, 0xF4, 0x18, 0x4B, 0x83, 0x67, 0xB1, 0x67, +0xE2, 0xF3, 0xE8, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xEA, 0xF4, 0x00, 0x4B, 0x83, 0x67, 0xB1, 0x67, 0xDE, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x06, 0x94, 0xE1, 0xF7, 0x1F, 0x6F, 0x20, 0x6A, 0xB1, 0x67, 0x56, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0x02, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF5, 0xD4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x18, 0x6E, 0x49, 0x10, 0x06, 0x92, 0x03, 0x22, -0x12, 0x6A, 0x27, 0xF2, 0x4E, 0xC0, 0x01, 0x6A, +0x12, 0x6A, 0x27, 0xF2, 0x56, 0xC0, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, -0xF0, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0xCA, 0xF4, -0x18, 0x48, 0x90, 0x67, 0xB1, 0x67, 0xDE, 0x6E, +0xE8, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0xEA, 0xF4, +0x00, 0x48, 0x90, 0x67, 0xB1, 0x67, 0xDE, 0x6E, 0x80, 0x18, 0x83, 0x45, 0xE1, 0xF7, 0x1F, 0x6F, 0x90, 0x67, 0x00, 0x6A, 0xB1, 0x67, 0x56, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0xAA, 0xF7, -0xC6, 0xA3, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0xD6, 0xA3, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0x02, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF5, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x02, 0xF5, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, @@ -46413,34 +46933,34 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x06, 0xD2, 0x63, 0xF5, -0x18, 0x4B, 0x27, 0xF2, 0x49, 0xA3, 0x07, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0x06, 0xD2, 0x83, 0xF5, +0x00, 0x4B, 0x27, 0xF2, 0x51, 0xA3, 0x07, 0xD3, 0x06, 0x93, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xD2, 0x64, 0x31, 0x08, 0x6A, 0x4D, 0xE9, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF4, 0x04, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0xC2, 0xF4, 0x0C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, -0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, +0x0C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x69, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x07, 0x93, 0x27, 0xF2, -0x48, 0xA3, 0x11, 0x2A, 0x01, 0x6A, 0x04, 0xD2, +0x50, 0xA3, 0x11, 0x2A, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x69, -0x06, 0x95, 0xE2, 0xF3, 0xF0, 0x9A, 0xCA, 0xF4, -0x18, 0x49, 0x91, 0x67, 0xDE, 0x6E, 0x80, 0x18, +0x06, 0x95, 0xE2, 0xF3, 0xE8, 0x9A, 0xEA, 0xF4, +0x00, 0x49, 0x91, 0x67, 0xDE, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x20, 0x6A, 0x10, 0x10, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x69, 0x06, 0x95, 0xE2, 0xF3, 0xF0, 0x9A, -0xCA, 0xF4, 0x18, 0x49, 0x91, 0x67, 0xDE, 0x6E, +0x20, 0x69, 0x06, 0x95, 0xE2, 0xF3, 0xE8, 0x9A, +0xEA, 0xF4, 0x00, 0x49, 0x91, 0x67, 0xDE, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, 0x06, 0x95, 0x91, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0xC0, 0xF3, @@ -46454,33 +46974,33 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0xFF, 0x68, 0x27, 0xF2, -0x69, 0xA2, 0x8C, 0xE8, 0x06, 0xD2, 0x04, 0x32, +0x83, 0xF5, 0x00, 0x4A, 0xFF, 0x68, 0x27, 0xF2, +0x71, 0xA2, 0x8C, 0xE8, 0x06, 0xD2, 0x04, 0x32, 0x07, 0xD2, 0x08, 0xD3, 0x07, 0x93, 0x30, 0xF0, 0x20, 0x69, 0x08, 0x6A, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xC3, 0x67, 0x07, 0xD3, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0xA4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, -0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x06, 0x92, -0x27, 0xF2, 0x48, 0xA2, 0x06, 0xD2, 0x5B, 0x2A, +0x27, 0xF2, 0x50, 0xA2, 0x06, 0xD2, 0x5B, 0x2A, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF5, 0xFC, 0x9A, 0x30, 0xF0, 0x20, 0x69, -0xCA, 0xF4, 0x18, 0x49, 0x91, 0x67, 0xB0, 0x67, +0x02, 0xF5, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x69, +0xEA, 0xF4, 0x00, 0x49, 0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x10, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, @@ -46488,7 +47008,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x83, 0x45, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, -0x10, 0x4B, 0xE0, 0x9B, 0x06, 0x92, 0x91, 0x67, +0x08, 0x4B, 0xE0, 0x9B, 0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, @@ -46496,21 +47016,21 @@ u8 array_mp_8822c_fw_spic[] = { 0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x06, 0x93, 0x5A, 0x10, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, -0xFC, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0xCA, 0xF4, -0x18, 0x49, 0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, +0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0xEA, 0xF4, +0x00, 0x49, 0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF3, 0x10, 0x4B, 0xE0, 0x9B, +0x20, 0x6B, 0xE2, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, @@ -46518,13 +47038,13 @@ u8 array_mp_8822c_fw_spic[] = { 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6B, 0x91, 0x67, 0x30, 0xF0, 0x20, 0x69, -0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0xCA, 0xF4, -0x18, 0x49, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, +0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0xEA, 0xF4, +0x00, 0x49, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF7, 0x40, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF7, 0x50, 0xA2, 0x01, 0x22, 0x20, 0x6A, 0x7F, 0x6F, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x30, 0xF0, 0x20, 0x69, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0xC0, 0xF3, @@ -46532,8 +47052,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x09, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xB0, 0x67, 0x10, 0x6F, 0x01, 0x6A, 0xCA, 0xF4, -0x18, 0x4C, 0xEF, 0x6E, 0x30, 0xF0, 0x20, 0x68, +0xB0, 0x67, 0x10, 0x6F, 0x01, 0x6A, 0xEA, 0xF4, +0x00, 0x4C, 0xEF, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, @@ -46546,20 +47066,20 @@ u8 array_mp_8822c_fw_spic[] = { 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x27, 0xF2, 0x69, 0xA2, +0x83, 0xF5, 0x00, 0x4A, 0x27, 0xF2, 0x71, 0xA2, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0x8C, 0xE9, 0x07, 0xD3, 0xC0, 0xF3, 0x64, 0x98, 0x06, 0xD2, 0x24, 0x36, 0x08, 0x6A, 0x01, 0x6D, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0xA4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF5, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x02, 0xF5, 0xC8, 0x9B, 0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x06, 0x93, 0x27, 0xF2, 0x48, 0xA3, +0x40, 0xEA, 0x06, 0x93, 0x27, 0xF2, 0x50, 0xA3, 0x03, 0x2A, 0x81, 0xF0, 0x07, 0x4A, 0x02, 0x10, 0xC1, 0xF0, 0x0A, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0xCA, 0xF4, 0x18, 0x4C, 0xB1, 0x67, 0x56, 0x6E, +0xEA, 0xF4, 0x00, 0x4C, 0xB1, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x09, 0x6E, 0x40, 0xEA, @@ -46574,23 +47094,23 @@ u8 array_mp_8822c_fw_spic[] = { 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0xFF, 0x68, 0x8C, 0xE8, -0x27, 0xF2, 0x69, 0xA2, 0x06, 0xD2, 0x04, 0x32, +0x83, 0xF5, 0x00, 0x4A, 0xFF, 0x68, 0x8C, 0xE8, +0x27, 0xF2, 0x71, 0xA2, 0x06, 0xD2, 0x04, 0x32, 0x07, 0xD2, 0x08, 0xD3, 0x07, 0x93, 0x30, 0xF0, 0x20, 0x69, 0x08, 0x6A, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xC3, 0x67, 0x07, 0xD3, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0xA4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, -0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x30, 0xF0, 0x20, 0x69, 0xCA, 0xF4, -0x18, 0x49, 0x23, 0xF3, 0x00, 0x6C, 0xE0, 0xF3, +0x44, 0x99, 0x30, 0xF0, 0x20, 0x69, 0xEA, 0xF4, +0x00, 0x49, 0x23, 0xF3, 0x00, 0x6C, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6B, @@ -46598,29 +47118,29 @@ u8 array_mp_8822c_fw_spic[] = { 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x06, 0x93, 0x27, 0xF2, 0x68, 0xA3, 0x06, 0xD3, +0x06, 0x93, 0x27, 0xF2, 0x70, 0xA3, 0x06, 0xD3, 0x35, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, -0x10, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, +0x08, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x81, 0xF0, 0x07, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x10, 0x4A, 0x06, 0x93, +0x20, 0x6A, 0xE2, 0xF3, 0x08, 0x4A, 0x06, 0x93, 0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x06, 0x93, 0x04, 0xD3, 0x3C, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF3, 0x10, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, +0xE2, 0xF3, 0x08, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x61, 0xF0, 0x08, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x08, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, @@ -46629,12 +47149,12 @@ u8 array_mp_8822c_fw_spic[] = { 0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, 0x04, 0xD2, 0x91, 0x67, 0x30, 0xF0, 0x20, 0x69, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, -0xCA, 0xF4, 0x18, 0x49, 0x80, 0x18, 0x83, 0x45, +0xEA, 0xF4, 0x00, 0x49, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF7, 0x40, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF7, 0x50, 0xA2, 0x01, 0x22, 0x20, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x7F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, @@ -46650,26 +47170,26 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x6E, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x69, -0xCA, 0xF4, 0x18, 0x48, 0x0E, 0xD4, 0x0F, 0xD5, +0xEA, 0xF4, 0x00, 0x48, 0x0E, 0xD4, 0x0F, 0xD5, 0x90, 0x67, 0xB1, 0x67, 0xEF, 0x6E, 0x04, 0xD1, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF3, 0x14, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0xE2, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD1, 0x80, 0x18, 0x83, 0x45, 0x0E, 0x90, 0x0F, 0x91, 0x00, 0x6A, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0xCA, 0xF4, -0x18, 0x4B, 0x06, 0xD3, 0x40, 0x99, 0xC0, 0x98, +0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0xEA, 0xF4, +0x00, 0x4B, 0x06, 0xD3, 0x40, 0x99, 0xC0, 0x98, 0x83, 0x67, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x14, 0x4A, 0xE0, 0x9A, 0x00, 0x6D, +0xE2, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x00, 0x6D, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF3, 0x14, 0x4B, 0xC0, 0x98, 0x41, 0x99, +0xE2, 0xF3, 0x0C, 0x4B, 0xC0, 0x98, 0x41, 0x99, 0xE0, 0x9B, 0x06, 0x94, 0x01, 0x6D, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x07, 0x92, 0x04, 0x48, 0x08, 0x49, 0x01, 0x4A, 0x07, 0xD2, 0x07, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x03, 0x73, 0x58, 0x67, 0x07, 0xD3, 0x08, 0xD2, 0xD6, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x10, 0x9A, 0x06, 0x94, +0x20, 0x6A, 0xE2, 0xF3, 0x08, 0x9A, 0x06, 0x94, 0x78, 0x67, 0xF0, 0x67, 0x00, 0x6D, 0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x08, 0x92, 0x06, 0x94, 0xF0, 0x67, 0x01, 0x6D, 0xDE, 0x6E, @@ -46677,71 +47197,71 @@ u8 array_mp_8822c_fw_spic[] = { 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0xC2, 0xF4, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x34, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, 0x04, 0x4A, -0x40, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0xCA, 0xF4, -0x18, 0x48, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x2C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, 0x0C, 0x4A, +0x40, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0xEA, 0xF4, +0x00, 0x48, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x04, 0x6B, 0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x90, 0x67, 0xF1, 0x67, 0x03, 0x6A, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, 0x50, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF5, 0x04, 0x4A, 0x40, 0x9A, +0x20, 0x6A, 0x02, 0xF5, 0x0C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x04, 0x6B, 0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF5, 0x4C, 0x9A, 0x90, 0x67, +0x20, 0x6A, 0x02, 0xF5, 0x54, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF5, 0x04, 0x4B, 0x60, 0x9B, 0x90, 0x67, +0x02, 0xF5, 0x0C, 0x4B, 0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x90, 0x67, 0x06, 0x6A, 0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x03, 0x6B, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF5, 0x50, 0x9A, 0x90, 0x67, 0xF1, 0x67, +0x02, 0xF5, 0x58, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF5, -0x04, 0x4B, 0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, +0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF5, +0x0C, 0x4B, 0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x90, 0x67, 0x06, 0x6A, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, -0x54, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, +0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, +0x5C, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6B, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, 0x04, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, 0x0C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x07, 0x6B, 0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x90, 0x67, 0xF1, 0x67, 0x03, 0x6A, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF5, 0x04, 0x4A, 0x40, 0x9A, +0x20, 0x6A, 0x02, 0xF5, 0x0C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x07, 0x6B, 0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF5, 0x5C, 0x9A, 0x90, 0x67, +0x20, 0x6A, 0x22, 0xF5, 0x44, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, @@ -46754,21 +47274,21 @@ u8 array_mp_8822c_fw_spic[] = { 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x06, 0xD4, 0x07, 0xD5, 0x01, 0x68, 0x00, 0x69, 0x85, 0xF5, -0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0xF4, 0x16, +0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0xC8, 0x16, 0x55, 0x72, 0x11, 0x61, 0x07, 0x92, 0x03, 0x2A, 0x00, 0x68, 0x50, 0x67, 0x17, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF3, 0xBC, 0x9A, 0x03, 0xF3, -0x08, 0x6C, 0xFF, 0x68, 0x80, 0x18, 0xF4, 0x16, +0x20, 0x6A, 0x62, 0xF3, 0xB4, 0x9A, 0x03, 0xF3, +0x08, 0x6C, 0xFF, 0x68, 0x80, 0x18, 0xC8, 0x16, 0x4C, 0xE8, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x64, 0x6C, 0x01, 0x49, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0x01, 0x6A, 0xA1, 0xF3, 0x18, 0x59, 0x02, 0x61, 0x01, 0x68, 0x01, 0x10, 0xD7, 0x2A, -0x06, 0x95, 0x30, 0xF0, 0x20, 0x69, 0xCA, 0xF4, -0x18, 0x49, 0x91, 0x67, 0x00, 0x6A, 0x8F, 0x6E, +0x06, 0x95, 0x30, 0xF0, 0x20, 0x69, 0xEA, 0xF4, +0x00, 0x49, 0x91, 0x67, 0x00, 0x6A, 0x8F, 0x6E, 0x08, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0x95, 0x02, 0xF5, 0xFC, 0x9A, +0x20, 0x6A, 0x06, 0x95, 0x02, 0xF5, 0xE4, 0x9A, 0x91, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, @@ -46776,9 +47296,9 @@ u8 array_mp_8822c_fw_spic[] = { 0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x0A, 0x28, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0x23, 0xF3, 0x00, 0x6C, 0x42, 0xF5, 0xA0, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0x22, 0xF5, 0xA8, 0x9B, 0x02, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x99, 0x42, 0xF5, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0x22, 0xF5, 0xA8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, @@ -46786,12 +47306,12 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x6A, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x05, 0xD5, 0x04, 0xD4, 0x05, 0x92, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x69, -0xCA, 0xF4, 0x18, 0x49, 0x91, 0x67, 0x00, 0x6D, +0xEA, 0xF4, 0x00, 0x49, 0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x3E, 0x45, 0x04, 0x93, 0x91, 0x67, 0x01, 0x6D, 0x40, 0xDB, 0x05, 0x92, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF3, 0x14, 0x4B, 0xE0, 0x9B, +0x20, 0x6B, 0xE2, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0xC0, 0x9A, 0x01, 0x48, 0x80, 0x18, 0x3E, 0x45, 0x04, 0x93, 0x41, 0xDB, 0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x08, 0x4B, 0x03, 0x70, 0x04, 0x4A, @@ -46802,32 +47322,32 @@ u8 array_mp_8822c_fw_spic[] = { 0x2C, 0xE8, 0xC0, 0xF3, 0x44, 0x9A, 0x08, 0x6B, 0x04, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0xF4, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xCA, 0xF4, 0x18, 0x4C, 0xB0, 0x67, +0x20, 0x6A, 0xE2, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xEA, 0xF4, 0x00, 0x4C, 0xB0, 0x67, 0x58, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF5, 0x64, 0x9B, 0x4C, 0xEB, +0x20, 0x6B, 0x22, 0xF5, 0x6C, 0x9B, 0x4C, 0xEB, 0x62, 0x33, 0x7A, 0x33, 0x2C, 0xEB, 0x0B, 0x23, 0x3F, 0x73, 0x09, 0x60, 0x07, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x62, 0x32, 0x2C, 0xEA, 0x03, 0x22, 0x3F, 0x72, 0x00, 0x6A, 0x56, 0x61, 0x30, 0xF0, -0x20, 0x69, 0xCA, 0xF4, 0x18, 0x49, 0x00, 0x6A, +0x20, 0x69, 0xEA, 0xF4, 0x00, 0x49, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, -0x20, 0x6A, 0xAA, 0xF7, 0x40, 0xA2, 0x01, 0x22, +0x20, 0x6A, 0xAA, 0xF7, 0x50, 0xA2, 0x01, 0x22, 0x20, 0x6A, 0x91, 0x67, 0x30, 0xF0, 0x20, 0x69, -0xCA, 0xF4, 0x18, 0x49, 0xB0, 0x67, 0x33, 0x6E, +0xEA, 0xF4, 0x00, 0x49, 0xB0, 0x67, 0x33, 0x6E, 0x7F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x20, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x07, 0xF7, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF5, -0xE4, 0x9A, 0x20, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, +0xEC, 0x9A, 0x20, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF3, 0x14, 0x4B, 0xE0, 0x9B, 0x91, 0x67, +0xE2, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0x91, 0x67, 0xB0, 0x67, 0x58, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, @@ -46837,22 +47357,22 @@ u8 array_mp_8822c_fw_spic[] = { 0x01, 0x74, 0xAC, 0xE8, 0x80, 0xF0, 0x0A, 0x60, 0x07, 0x24, 0x02, 0x74, 0x80, 0xF0, 0x1C, 0x60, 0x03, 0x74, 0x80, 0xF0, 0x1D, 0x60, 0xA1, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0xA7, 0xF5, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xF0, 0x20, 0x6D, 0xA7, 0xF5, 0x6C, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0xA7, 0xF5, 0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x30, 0xF0, 0x20, 0x6D, 0xA7, 0xF5, 0x74, 0xDA, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF3, 0x18, 0x4C, 0x2B, 0xF3, -0x10, 0x4B, 0x2B, 0xF3, 0x0C, 0x4A, 0x0B, 0xF1, -0x1A, 0x4D, 0x04, 0xD6, 0xC0, 0x9C, 0x04, 0x97, +0x20, 0x6A, 0x4B, 0xF3, 0x08, 0x4C, 0x4B, 0xF3, +0x00, 0x4B, 0x2B, 0xF3, 0x1C, 0x4A, 0x2B, 0xF1, +0x0A, 0x4D, 0x04, 0xD6, 0xC0, 0x9C, 0x04, 0x97, 0x00, 0x69, 0xC2, 0xDC, 0xC0, 0xAB, 0xC3, 0xF6, -0x10, 0x4F, 0xE4, 0x37, 0xC2, 0xCB, 0xC0, 0xA2, +0x14, 0x4F, 0xE4, 0x37, 0xC2, 0xCB, 0xC0, 0xA2, 0x06, 0xD5, 0x05, 0xD1, 0xC2, 0xC2, 0x30, 0xF0, -0x20, 0x6E, 0x63, 0xF5, 0x18, 0x4E, 0xFD, 0xE6, +0x20, 0x6E, 0x83, 0xF5, 0x00, 0x4E, 0xFD, 0xE6, 0xC0, 0xA7, 0x22, 0x68, 0x04, 0x91, 0xC4, 0xC7, 0x05, 0x96, 0x18, 0xEE, 0x44, 0x6E, 0x12, 0xE8, -0xD8, 0xE9, 0x30, 0xF0, 0x20, 0x69, 0x63, 0xF5, -0x18, 0x49, 0x12, 0xEE, 0xC1, 0xE0, 0x87, 0xF3, -0xC0, 0x40, 0x87, 0xF4, 0x10, 0x48, 0xD9, 0xE1, +0xD8, 0xE9, 0x30, 0xF0, 0x20, 0x69, 0x83, 0xF5, +0x00, 0x49, 0x12, 0xEE, 0xC1, 0xE0, 0x87, 0xF3, +0xC8, 0x40, 0x87, 0xF4, 0x18, 0x48, 0xD9, 0xE1, 0x01, 0xE1, 0x20, 0xAE, 0x80, 0xF0, 0x28, 0xCE, 0x20, 0xA8, 0x02, 0x4E, 0x80, 0xF0, 0x28, 0xC8, 0x06, 0x91, 0x02, 0x48, 0x2A, 0xEE, 0xF5, 0x61, @@ -46861,41 +47381,41 @@ u8 array_mp_8822c_fw_spic[] = { 0x04, 0x91, 0x04, 0x4C, 0x02, 0x4B, 0x01, 0x49, 0x02, 0x71, 0x04, 0xD1, 0x01, 0x4A, 0x44, 0x4D, 0xBD, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x2B, 0xF3, -0x0C, 0x4B, 0x44, 0x43, 0xA7, 0x43, 0x16, 0x4D, +0x1C, 0x4B, 0x44, 0x43, 0xA7, 0x43, 0x16, 0x4D, 0xC2, 0x67, 0x00, 0x6C, 0x80, 0xC3, 0x01, 0x4B, 0x00, 0x6C, 0xCA, 0xEB, 0x80, 0xCA, 0xFF, 0xF7, 0x88, 0xC2, 0x20, 0xF0, 0x85, 0xC2, 0xFF, 0xF7, 0x89, 0xC2, 0x20, 0xF0, 0x86, 0xC2, 0x80, 0xC5, 0x81, 0xC5, 0x82, 0xC5, 0x02, 0x4A, 0x03, 0x4D, -0xEC, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0xA7, 0xF5, 0x70, 0x9A, 0xA7, 0xF5, -0x68, 0xDA, 0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xB0, 0x67, 0xCA, 0xF4, 0x18, 0x4C, 0x58, 0x6E, -0x80, 0x18, 0x3E, 0x45, 0x61, 0xF7, 0x10, 0x48, -0x30, 0xF0, 0x20, 0x6B, 0x08, 0x30, 0x63, 0xF5, -0x18, 0x4B, 0x6D, 0xE0, 0x40, 0xDB, 0x09, 0x10, +0xEC, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0xA7, 0xF5, 0x78, 0x9A, 0xA7, 0xF5, +0x70, 0xDA, 0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xB0, 0x67, 0xEA, 0xF4, 0x00, 0x4C, 0x58, 0x6E, +0x80, 0x18, 0x3E, 0x45, 0x61, 0xF7, 0x12, 0x48, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0x30, 0x83, 0xF5, +0x00, 0x4B, 0x6D, 0xE0, 0x40, 0xDB, 0x09, 0x10, 0x00, 0x6C, 0xB0, 0x67, 0xC4, 0x67, 0x03, 0x10, 0x01, 0x6C, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, -0x52, 0x09, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x26, 0x09, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, 0x0E, 0x22, 0x08, 0x6A, 0x04, 0x31, 0x4D, 0xE9, 0x01, 0x6B, 0x44, 0x40, -0x64, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xCA, 0xF4, -0x18, 0x4A, 0x06, 0xD2, 0x6D, 0xE9, 0x06, 0x6A, +0x64, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xEA, 0xF4, +0x00, 0x4A, 0x06, 0xD2, 0x6D, 0xE9, 0x06, 0x6A, 0x0D, 0x10, 0x08, 0x6A, 0x04, 0x31, 0x4D, 0xE9, 0x01, 0x6B, 0x44, 0x40, 0x64, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xCA, 0xF4, 0x18, 0x4A, 0x06, 0xD2, +0x20, 0x6A, 0xEA, 0xF4, 0x00, 0x4A, 0x06, 0xD2, 0x6D, 0xE9, 0x04, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0x94, 0x02, 0xF5, 0xFC, 0x9A, +0x20, 0x6A, 0x06, 0x94, 0x02, 0xF5, 0xE4, 0x9A, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x06, 0x94, 0x08, 0xF0, 0x00, 0x6F, 0x01, 0x6B, 0x8F, 0x6E, 0xB0, 0x67, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x01, 0x6C, -0x80, 0x18, 0x2C, 0x09, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x94, 0x08, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0x18, 0x00, 0x09, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x68, 0x08, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, @@ -46903,135 +47423,135 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xEF, 0x6E, 0x10, 0x6F, -0x00, 0x6A, 0xCA, 0xF4, 0x18, 0x4C, 0xB0, 0x67, +0x00, 0x6A, 0xEA, 0xF4, 0x00, 0x4C, 0xB0, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6D, -0x90, 0x67, 0x80, 0x18, 0x94, 0x08, 0x00, 0x6C, -0x80, 0x18, 0x2C, 0x09, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0xB4, 0x0C, 0x22, 0x67, 0x04, 0x2A, -0x01, 0x6C, 0xB0, 0x67, 0x80, 0x18, 0x57, 0x0D, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x41, 0xE0, 0x27, 0xF2, 0x39, 0xC0, 0x51, 0x67, +0x90, 0x67, 0x80, 0x18, 0x68, 0x08, 0x00, 0x6C, +0x80, 0x18, 0x00, 0x09, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x88, 0x0C, 0x22, 0x67, 0x04, 0x2A, +0x01, 0x6C, 0xB0, 0x67, 0x80, 0x18, 0x2B, 0x0D, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x41, 0xE0, 0x47, 0xF2, 0x21, 0xC0, 0x51, 0x67, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xED, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xAA, 0xF7, 0x41, 0xA2, 0x06, 0x6B, 0x08, 0xD5, +0xAA, 0xF7, 0x51, 0xA2, 0x06, 0x6B, 0x08, 0xD5, 0x4E, 0xEB, 0x01, 0x5B, 0x98, 0x67, 0x07, 0xD4, 0x16, 0x2D, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, 0x04, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xCA, 0xF4, 0x18, 0x4A, 0x08, 0x69, 0x06, 0xD2, +0xEA, 0xF4, 0x00, 0x4A, 0x08, 0x69, 0x06, 0xD2, 0x6D, 0xE9, 0x04, 0x6A, 0x19, 0x10, 0x08, 0x93, 0x01, 0x73, 0x22, 0x61, 0x07, 0x94, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, 0x07, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xCA, 0xF4, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xEA, 0xF4, 0x00, 0x4A, 0x08, 0x69, 0x06, 0xD2, 0x6D, 0xE9, 0x06, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, -0x02, 0xF5, 0xFC, 0x9A, 0xB0, 0x67, 0x00, 0x6E, +0x02, 0xF5, 0xE4, 0x9A, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6A, 0x25, 0x10, 0x08, 0x93, 0x00, 0x69, 0x02, 0x73, 0x2F, 0x61, 0x07, 0x94, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, 0x0A, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xCA, 0xF4, 0x18, 0x4A, 0x06, 0xD2, 0x07, 0x6A, +0xEA, 0xF4, 0x00, 0x4A, 0x06, 0xD2, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, -0x02, 0xF5, 0xFC, 0x9A, 0x08, 0x69, 0xB0, 0x67, +0x02, 0xF5, 0xE4, 0x9A, 0x08, 0x69, 0xB0, 0x67, 0x00, 0x6E, 0x6D, 0xE9, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6A, 0x06, 0x94, 0xB0, 0x67, 0x8F, 0x6E, 0x08, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x01, 0x6C, -0x80, 0x18, 0x2C, 0x09, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0x18, 0x00, 0x09, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, 0x01, 0x6D, 0xC1, 0x41, 0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x01, 0x6D, 0x90, 0x67, 0x80, 0x18, 0xB4, 0x0C, -0x00, 0x6C, 0x06, 0xD2, 0x80, 0x18, 0x2C, 0x09, +0x01, 0x6D, 0x90, 0x67, 0x80, 0x18, 0x88, 0x0C, +0x00, 0x6C, 0x06, 0xD2, 0x80, 0x18, 0x00, 0x09, 0x04, 0x32, 0x09, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x09, 0x93, 0x01, 0x6D, 0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x94, 0x1C, 0x2C, 0x7D, 0x67, 0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, -0x30, 0xF0, 0x20, 0x69, 0xD3, 0xF6, 0x40, 0x40, -0x06, 0x94, 0x44, 0x32, 0x63, 0xF5, 0x18, 0x49, +0x30, 0xF0, 0x20, 0x69, 0xD3, 0xF6, 0x44, 0x40, +0x06, 0x94, 0x44, 0x32, 0x83, 0xF5, 0x00, 0x49, 0x29, 0xE2, 0x60, 0xC2, 0x48, 0x2C, 0x07, 0x92, 0x09, 0x22, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x4C, -0xAB, 0xED, 0x80, 0x18, 0xF4, 0x16, 0x61, 0xF7, -0x1C, 0x48, 0x35, 0x10, 0x02, 0x6C, 0x38, 0x10, +0xAB, 0xED, 0x80, 0x18, 0xC8, 0x16, 0x61, 0xF7, +0x1E, 0x48, 0x35, 0x10, 0x02, 0x6C, 0x38, 0x10, 0x08, 0x93, 0x02, 0x73, 0x38, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0xF4, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x63, 0xF5, -0x18, 0x49, 0xCA, 0xF4, 0x18, 0x4C, 0xB0, 0x67, +0x20, 0x6A, 0xE2, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x83, 0xF5, +0x00, 0x49, 0xEA, 0xF4, 0x00, 0x4C, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x27, 0xF2, -0x8E, 0xA1, 0xFF, 0x6B, 0x56, 0x32, 0x6C, 0xEA, -0x80, 0x34, 0xD3, 0xF6, 0x6C, 0x40, 0x8D, 0xEA, +0x96, 0xA1, 0xFF, 0x6B, 0x56, 0x32, 0x6C, 0xEA, +0x80, 0x34, 0xE3, 0xF6, 0x60, 0x40, 0x8D, 0xEA, 0x64, 0x33, 0x09, 0x94, 0x2D, 0xE3, 0x40, 0xCB, 0x7D, 0x67, 0x29, 0xE4, 0x87, 0x43, 0x11, 0x4C, -0x60, 0xA4, 0x06, 0x94, 0xA7, 0xF5, 0x61, 0xC2, +0x60, 0xA4, 0x06, 0x94, 0xA7, 0xF5, 0x69, 0xC2, 0x12, 0x2C, 0x07, 0x92, 0x0C, 0x22, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x4C, 0xAB, 0xED, 0x80, 0x18, -0xF4, 0x16, 0x61, 0xF7, 0x1E, 0x48, 0x08, 0x30, +0xC8, 0x16, 0x81, 0xF7, 0x00, 0x48, 0x08, 0x30, 0x25, 0xE0, 0x40, 0xD9, 0x04, 0x10, 0x03, 0x6C, -0xB0, 0x67, 0x80, 0x18, 0x57, 0x0D, 0x06, 0x92, +0xB0, 0x67, 0x80, 0x18, 0x2B, 0x0D, 0x06, 0x92, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x27, 0xF2, 0x69, 0xA2, -0x30, 0xF0, 0x20, 0x6C, 0x6B, 0xF3, 0x08, 0x4C, -0x0D, 0xD3, 0xB0, 0xF7, 0x68, 0x40, 0x6C, 0x33, +0x83, 0xF5, 0x00, 0x4A, 0x27, 0xF2, 0x71, 0xA2, +0x30, 0xF0, 0x20, 0x6C, 0x6B, 0xF3, 0x18, 0x4C, +0x0D, 0xD3, 0xB0, 0xF7, 0x69, 0x40, 0x6C, 0x33, 0x6D, 0xE2, 0x0C, 0xD5, 0x0A, 0xD3, 0x08, 0xD4, 0x00, 0x69, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF3, 0x14, 0x4B, 0xE0, 0x9B, 0xFF, 0x6A, -0x30, 0xF0, 0x20, 0x68, 0xCA, 0xF4, 0x18, 0x48, +0xE2, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0xFF, 0x6A, +0x30, 0xF0, 0x20, 0x68, 0xEA, 0xF4, 0x00, 0x48, 0x2C, 0xEA, 0x90, 0x67, 0xA2, 0x67, 0xDF, 0x6E, 0x06, 0xD2, 0x80, 0x18, 0x3E, 0x45, 0x10, 0x6B, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, -0x14, 0x4A, 0x06, 0x95, 0xE0, 0x9A, 0x90, 0x67, +0x0C, 0x4A, 0x06, 0x95, 0xE0, 0x9A, 0x90, 0x67, 0xDF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x0A, 0x93, 0x06, 0x95, 0x90, 0x67, 0x40, 0x9B, 0x58, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x80, 0x18, 0x83, 0x45, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x24, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x0D, 0x93, 0x06, 0x73, 0x1C, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x62, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC0, 0x9B, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x08, 0x93, 0x01, 0x6D, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0xC2, 0x9B, 0x21, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x62, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, -0x18, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, +0x10, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x0C, 0x94, 0x06, 0x24, 0x00, 0x6A, 0x01, 0x74, 0x06, 0xD2, 0xC0, 0xF0, 0x05, 0x61, 0x62, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x02, 0xF4, -0xA8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, +0xA0, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x44, 0x6B, 0x78, 0xE9, 0x09, 0x94, 0x88, 0x6A, 0x00, 0x68, 0x12, 0xEB, 0x58, 0xEC, 0x12, 0xEA, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6A, -0x87, 0xF3, 0x00, 0x4B, 0x63, 0xF5, 0x18, 0x4A, +0x87, 0xF3, 0x08, 0x4B, 0x83, 0xF5, 0x00, 0x4A, 0x69, 0xE2, 0x06, 0xD2, 0x06, 0x92, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xC0, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF4, 0x54, 0x9A, 0xC0, 0x36, +0x20, 0x6A, 0x22, 0xF4, 0x4C, 0x9A, 0xC0, 0x36, 0xAB, 0xED, 0x4D, 0xEE, 0x08, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x02, 0x4E, 0x01, 0x48, 0x40, 0xEA, 0x06, 0x93, @@ -47039,34 +47559,34 @@ u8 array_mp_8822c_fw_spic[] = { 0x44, 0x6B, 0x78, 0xE9, 0x09, 0x94, 0x88, 0x6A, 0x00, 0x68, 0x12, 0xEB, 0x58, 0xEC, 0x12, 0xEA, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6A, 0x87, 0xF4, -0x10, 0x4B, 0x63, 0xF5, 0x18, 0x4A, 0x69, 0xE2, +0x18, 0x4B, 0x83, 0xF5, 0x00, 0x4A, 0x69, 0xE2, 0x06, 0xD2, 0x06, 0x92, 0x08, 0x33, 0x01, 0x6D, 0xC0, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF4, -0x54, 0x9A, 0xC0, 0x36, 0xC3, 0xF3, 0x18, 0x6C, +0x4C, 0x9A, 0xC0, 0x36, 0xC3, 0xF3, 0x18, 0x6C, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x6D, 0xEE, 0xAB, 0xED, 0x40, 0xEA, 0x06, 0x93, 0x01, 0x48, 0x11, 0x70, 0x02, 0x4B, 0x06, 0xD3, 0xE7, 0x61, 0xE7, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x02, 0xF4, 0xA8, 0x9B, 0x23, 0xF3, +0x44, 0x9A, 0x02, 0xF4, 0xA0, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x44, 0x6B, 0x78, 0xE9, 0x09, 0x94, 0x88, 0x6A, 0x00, 0x68, 0x12, 0xEB, 0x58, 0xEC, 0x12, 0xEA, 0x4D, 0xE3, -0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF3, 0x02, 0x4B, -0x63, 0xF5, 0x18, 0x4A, 0x69, 0xE2, 0x06, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF3, 0x0A, 0x4B, +0x83, 0xF5, 0x00, 0x4A, 0x69, 0xE2, 0x06, 0xD2, 0x06, 0x92, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xC0, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF4, -0x58, 0x9A, 0xC0, 0x36, 0xAB, 0xED, 0x4D, 0xEE, +0x50, 0x9A, 0xC0, 0x36, 0xAB, 0xED, 0x4D, 0xEE, 0x08, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x02, 0x4E, 0x01, 0x48, 0x40, 0xEA, 0x06, 0x93, 0x11, 0x70, 0x02, 0x4B, 0x06, 0xD3, 0xE6, 0x61, 0x44, 0x6B, 0x78, 0xE9, 0x09, 0x94, 0x88, 0x6A, 0x00, 0x68, 0x12, 0xEB, 0x58, 0xEC, 0x12, 0xEA, 0x4D, 0xE3, 0x30, 0xF0, -0x20, 0x6A, 0xA7, 0xF4, 0x12, 0x4B, 0x63, 0xF5, -0x18, 0x4A, 0x69, 0xE2, 0x06, 0xD2, 0x06, 0x92, +0x20, 0x6A, 0xA7, 0xF4, 0x1A, 0x4B, 0x83, 0xF5, +0x00, 0x4A, 0x69, 0xE2, 0x06, 0xD2, 0x06, 0x92, 0x08, 0x33, 0x01, 0x6D, 0xC0, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF4, 0x58, 0x9A, 0xC0, 0x36, +0x20, 0x6A, 0x22, 0xF4, 0x50, 0x9A, 0xC0, 0x36, 0xC3, 0xF3, 0x18, 0x6C, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x6D, 0xEE, 0xAB, 0xED, 0x40, 0xEA, 0x06, 0x93, 0x01, 0x48, @@ -47074,18 +47594,18 @@ u8 array_mp_8822c_fw_spic[] = { 0x85, 0x10, 0x06, 0x94, 0xFF, 0x6A, 0x8C, 0xEA, 0x11, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x02, 0xF4, -0xA8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, +0xA0, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF4, -0x54, 0x9A, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x4C, 0x9A, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x02, 0xF4, 0xA8, 0x9B, 0x23, 0xF3, 0x00, 0x6C, +0x02, 0xF4, 0xA0, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF4, 0x58, 0x9A, 0x0B, 0xD2, 0x06, 0x92, +0x22, 0xF4, 0x50, 0x9A, 0x0B, 0xD2, 0x06, 0x92, 0x22, 0x6B, 0x09, 0x94, 0x78, 0xEA, 0x44, 0x6A, 0x00, 0x68, 0x12, 0xEB, 0x58, 0xE9, 0x12, 0xEA, 0x4D, 0xE3, 0x88, 0x6A, 0x58, 0xEC, 0x12, 0xEA, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6A, 0x87, 0xF3, -0x00, 0x4B, 0x63, 0xF5, 0x18, 0x4A, 0x69, 0xE2, +0x08, 0x4B, 0x83, 0xF5, 0x00, 0x4A, 0x69, 0xE2, 0x07, 0xD2, 0x07, 0x92, 0x0B, 0x93, 0x01, 0x6D, 0xC0, 0xAA, 0x08, 0x32, 0xC3, 0xF3, 0x18, 0x6C, 0xC0, 0x36, 0x6D, 0xEE, 0x4D, 0xEE, 0x30, 0xF0, @@ -47096,7 +47616,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x44, 0x6A, 0x00, 0x68, 0x12, 0xEB, 0x58, 0xE9, 0x12, 0xEA, 0x4D, 0xE3, 0x88, 0x6A, 0x58, 0xEC, 0x12, 0xEA, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6A, -0x87, 0xF4, 0x10, 0x4B, 0x63, 0xF5, 0x18, 0x4A, +0x87, 0xF4, 0x18, 0x4B, 0x83, 0xF5, 0x00, 0x4A, 0x69, 0xE2, 0x07, 0xD2, 0x07, 0x92, 0x0B, 0x93, 0x01, 0x6D, 0xC0, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xC0, 0x36, 0x6D, 0xEE, @@ -47105,32 +47625,32 @@ u8 array_mp_8822c_fw_spic[] = { 0x11, 0x70, 0x02, 0x4C, 0x07, 0xD4, 0xEA, 0x61, 0x06, 0x92, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, 0x7F, 0xF7, 0x1B, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0xE2, 0xF3, 0xDC, 0x9B, +0x30, 0xF0, 0x20, 0x68, 0xE2, 0xF3, 0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF4, 0xA8, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x02, 0xF4, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6B, 0x06, 0xD3, 0x06, 0x93, 0x06, 0x92, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6C, 0x8C, 0xEA, 0x64, 0x36, 0xC0, 0xF3, 0x64, 0x98, 0x07, 0xD2, 0x01, 0x6D, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF2, 0x01, 0x4C, 0xAB, 0xED, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0xBC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, -0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, +0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x03, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x95, -0x02, 0xF5, 0xFC, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xCA, 0xF4, 0x18, 0x4C, 0x00, 0x6E, 0x80, 0x18, +0x02, 0xF5, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xEA, 0xF4, 0x00, 0x4C, 0x00, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x06, 0x94, 0x01, 0x4C, 0x02, 0x74, 0x06, 0xD4, 0xA9, 0x61, 0x0A, 0x92, 0x08, 0x93, 0x01, 0x49, 0x04, 0x4A, 0x04, 0x4B, 0x02, 0x71, @@ -47138,66 +47658,66 @@ u8 array_mp_8822c_fw_spic[] = { 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, 0x00, 0x6B, -0x8C, 0xEA, 0xE7, 0xF5, 0x6C, 0xC0, 0x2A, 0x2A, -0x27, 0xF2, 0x4A, 0xA0, 0x27, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0xF4, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xCA, 0xF4, 0x18, 0x4C, 0x00, 0x6D, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0x00, 0x6B, +0x8C, 0xEA, 0xE7, 0xF5, 0x74, 0xC0, 0x2A, 0x2A, +0x27, 0xF2, 0x52, 0xA0, 0x27, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xEA, 0xF4, 0x00, 0x4C, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0xA7, 0xF5, -0x68, 0x98, 0xA7, 0xF5, 0x50, 0xD8, 0x00, 0x69, -0x4E, 0xEB, 0x05, 0x23, 0xA7, 0xF5, 0x6C, 0x98, +0x70, 0x98, 0xA7, 0xF5, 0x58, 0xD8, 0x00, 0x69, +0x4E, 0xEB, 0x05, 0x23, 0xA7, 0xF5, 0x74, 0x98, 0x6E, 0xEA, 0x10, 0x2A, 0x01, 0x69, 0x02, 0x6D, -0x91, 0x67, 0x80, 0x18, 0x81, 0x0E, 0x91, 0x67, -0x80, 0x18, 0x33, 0x05, 0x01, 0x6C, 0x80, 0x18, -0x64, 0x05, 0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF3, 0x64, 0xC2, 0x30, 0xF0, 0x20, 0x68, +0x91, 0x67, 0x80, 0x18, 0x55, 0x0E, 0x91, 0x67, +0x80, 0x18, 0x2C, 0x05, 0x01, 0x6C, 0x80, 0x18, +0x5D, 0x05, 0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x6B, 0xF3, 0x74, 0xC2, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x49, 0xE2, 0xF3, 0x10, 0x4B, +0x83, 0xF5, 0x00, 0x49, 0xE2, 0xF3, 0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE7, 0xF5, -0xCC, 0xA1, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, +0xD4, 0xA1, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x0A, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x10, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xE7, 0xF5, 0xCC, 0xA1, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x08, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xE7, 0xF5, 0xD4, 0xA1, 0xA0, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, -0xE7, 0xF5, 0x4C, 0xA1, 0x07, 0x97, 0x06, 0x91, +0xE7, 0xF5, 0x54, 0xA1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF3, 0xB8, 0x9A, -0x63, 0xF6, 0x1C, 0x6C, 0x80, 0x18, 0xF4, 0x16, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF3, 0xB0, 0x9A, +0x63, 0xF6, 0x1C, 0x6C, 0x80, 0x18, 0xC8, 0x16, 0x06, 0x22, 0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x4B, 0xF3, 0x68, 0xC2, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x4B, 0xF3, 0x48, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x14, 0x4A, 0xE0, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0xCA, 0xF4, 0x18, 0x48, +0x4B, 0xF3, 0x78, 0xC2, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x4B, 0xF3, 0x58, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, +0x30, 0xF0, 0x20, 0x68, 0xEA, 0xF4, 0x00, 0x48, 0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, -0x14, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x00, 0x6D, +0x0C, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x22, 0x67, 0x80, 0x18, 0x3E, 0x45, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, -0xA7, 0xF5, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x50, 0x9A, 0x27, 0xF2, 0x37, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, +0xA7, 0xF5, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF3, 0x48, 0x9A, 0x27, 0xF2, 0x3F, 0xC3, 0x2C, 0xEA, 0x42, 0x32, 0x42, 0x32, 0x27, 0xF2, -0x56, 0xC3, 0x06, 0xF0, 0x00, 0x6A, 0x2C, 0xEA, -0x42, 0x32, 0x52, 0x32, 0x27, 0xF2, 0x58, 0xC3, +0x5E, 0xC3, 0x06, 0xF0, 0x00, 0x6A, 0x2C, 0xEA, +0x42, 0x32, 0x52, 0x32, 0x47, 0xF2, 0x40, 0xC3, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x80, 0x18, -0xEE, 0x0F, 0x00, 0x6C, 0x80, 0x18, 0x64, 0x05, +0xC2, 0x0F, 0x00, 0x6C, 0x80, 0x18, 0x5D, 0x05, 0x03, 0x28, 0x00, 0x6C, 0xA4, 0x67, 0x07, 0x10, 0x01, 0x70, 0x03, 0x61, 0x00, 0x6C, 0x01, 0x6D, 0x02, 0x10, 0x00, 0x6C, 0x02, 0x6D, 0x80, 0x18, -0x81, 0x0E, 0x01, 0x6C, 0x80, 0x18, 0x64, 0x05, +0x55, 0x0E, 0x01, 0x6C, 0x80, 0x18, 0x5D, 0x05, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xE9, 0xAC, 0xEA, 0x01, 0x72, 0x43, 0x61, 0x44, 0x41, 0x01, 0x6B, 0x64, 0xEA, 0x00, 0xF2, 0x08, 0x6A, 0x4D, 0xEB, 0x04, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF5, 0xFC, 0x9A, 0x30, 0xF0, 0x20, 0x68, -0xCA, 0xF4, 0x18, 0x48, 0x90, 0x67, 0xB1, 0x67, +0x02, 0xF5, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0xEA, 0xF4, 0x00, 0x48, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6F, 0xB1, 0x67, 0x04, 0xD4, 0x8F, 0x6E, 0x90, 0x67, 0x80, 0x18, @@ -47209,10 +47729,10 @@ u8 array_mp_8822c_fw_spic[] = { 0x01, 0x6D, 0xAB, 0xED, 0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0xB4, 0x0C, +0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x88, 0x0C, 0xF0, 0x10, 0x02, 0x72, 0x01, 0x6A, 0xE0, 0xF0, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF7, -0x46, 0xA2, 0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, +0x56, 0xA2, 0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, 0x12, 0x72, 0x01, 0x68, 0x09, 0x60, 0x1B, 0x72, 0x02, 0x68, 0x06, 0x60, 0x24, 0x68, 0x4E, 0xE8, 0x01, 0x58, 0x18, 0x67, 0x04, 0x6A, 0x03, 0xE2, @@ -47220,10 +47740,10 @@ u8 array_mp_8822c_fw_spic[] = { 0x30, 0xF0, 0x20, 0x6C, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x9C, 0x01, 0x6D, 0xC3, 0x67, 0x08, 0xD3, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x06, 0x93, 0x01, 0x6D, 0xAB, 0xED, -0x27, 0xF2, 0xCE, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, +0x27, 0xF2, 0xD6, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0x44, 0x41, 0x01, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xEA, 0x00, 0xF3, 0x08, 0x6A, 0x4D, 0xEC, 0x80, 0xF3, 0x4C, 0x9B, 0x07, 0xD4, @@ -47235,35 +47755,35 @@ u8 array_mp_8822c_fw_spic[] = { 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF3, 0x4C, 0x9C, 0xC8, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, -0x14, 0x4B, 0xE0, 0x9B, 0x30, 0xF0, 0x20, 0x6A, -0xCA, 0xF4, 0x18, 0x4A, 0x82, 0x67, 0xB1, 0x67, +0x0C, 0x4B, 0xE0, 0x9B, 0x30, 0xF0, 0x20, 0x6A, +0xEA, 0xF4, 0x00, 0x4A, 0x82, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x07, 0xD2, 0x80, 0x18, 0x3E, 0x45, -0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0xB4, 0x0C, +0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x88, 0x0C, 0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF1, 0x18, 0x4A, 0x41, 0xE0, 0x40, 0xA0, -0x06, 0x94, 0x27, 0xF2, 0x4E, 0xC4, 0x70, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x14, 0x4A, +0xC2, 0xF1, 0x10, 0x4A, 0x41, 0xE0, 0x40, 0xA0, +0x06, 0x94, 0x27, 0xF2, 0x56, 0xC4, 0x70, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x0C, 0x4A, 0x07, 0x94, 0xE0, 0x9A, 0xB1, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0x67, 0x08, 0x96, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xE3, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, 0x06, 0x93, 0x56, 0x34, 0x96, 0x32, 0x27, 0xF2, -0x50, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, +0x58, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, 0xFF, 0x6B, 0x0B, 0x60, 0x03, 0x70, 0x03, 0x60, 0x01, 0x48, 0x6C, 0xE8, 0x4F, 0x10, 0x06, 0x94, -0x01, 0x6B, 0x03, 0x68, 0xE7, 0xF5, 0x65, 0xC4, +0x01, 0x6B, 0x03, 0x68, 0xE7, 0xF5, 0x6D, 0xC4, 0x49, 0x10, 0x0A, 0x5A, 0x0B, 0x61, 0x04, 0x20, 0xFF, 0x48, 0x6C, 0xE8, 0x01, 0x6B, 0x0B, 0x10, -0x06, 0x94, 0x01, 0x6B, 0xE7, 0xF5, 0x65, 0xC4, +0x06, 0x94, 0x01, 0x6B, 0xE7, 0xF5, 0x6D, 0xC4, 0x01, 0x6B, 0x09, 0x10, 0x06, 0x94, 0x00, 0x6B, -0xE7, 0xF5, 0x65, 0xC4, 0x00, 0x6B, 0x03, 0x20, +0xE7, 0xF5, 0x6D, 0xC4, 0x00, 0x6B, 0x03, 0x20, 0x04, 0x58, 0x01, 0x61, 0x03, 0x68, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF5, 0x18, 0x4C, 0xE7, 0xF5, -0xA5, 0xA4, 0x01, 0x5D, 0xB8, 0x67, 0xAB, 0xED, +0x20, 0x6C, 0x83, 0xF5, 0x00, 0x4C, 0xE7, 0xF5, +0xAD, 0xA4, 0x01, 0x5D, 0xB8, 0x67, 0xAB, 0xED, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, 0xC2, 0xF1, -0x18, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, 0x27, 0xF2, -0xAE, 0xC4, 0x0F, 0x2B, 0x27, 0xF2, 0xCE, 0xA4, +0x10, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, 0x27, 0xF2, +0xB6, 0xC4, 0x0F, 0x2B, 0x27, 0xF2, 0xD6, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x64, 0x9B, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x00, 0x6A, @@ -47273,119 +47793,119 @@ u8 array_mp_8822c_fw_spic[] = { 0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x01, 0x6B, 0xC8, 0x17, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xAA, 0xF7, 0x63, 0xA2, 0xFF, 0x68, +0x20, 0x6A, 0xAA, 0xF7, 0x73, 0xA2, 0xFF, 0x68, 0x8C, 0xE8, 0x06, 0x5B, 0x01, 0x6A, 0x7C, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0x33, 0xA2, 0xF1, -0x08, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x90, 0x67, 0x80, 0x18, 0x5F, 0x0A, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0xB3, 0x0D, 0x62, 0x10, -0x90, 0x67, 0x80, 0x18, 0x0D, 0x0A, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0xF7, 0x0D, 0x52, 0x22, +0x00, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x90, 0x67, 0x80, 0x18, 0x33, 0x0A, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0x87, 0x0D, 0x62, 0x10, +0x90, 0x67, 0x80, 0x18, 0xE1, 0x09, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0xCB, 0x0D, 0x52, 0x22, 0x03, 0x6C, 0x98, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x12, 0xEC, 0x71, 0xE4, -0xC7, 0xF5, 0xB2, 0xA4, 0x02, 0x5D, 0x04, 0x60, -0x01, 0x4D, 0xC7, 0xF5, 0xB2, 0xC4, 0xEB, 0x17, +0x83, 0xF5, 0x00, 0x4B, 0x12, 0xEC, 0x71, 0xE4, +0xC7, 0xF5, 0xBA, 0xA4, 0x02, 0x5D, 0x04, 0x60, +0x01, 0x4D, 0xC7, 0xF5, 0xBA, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x01, 0x6C, 0x39, 0x10, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0xA4, 0x09, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x00, 0x6B, -0xE7, 0xF5, 0x65, 0xC2, 0x90, 0x67, 0x02, 0x6D, -0x80, 0x18, 0x24, 0x10, 0x2F, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0x34, 0x63, 0xF5, 0x18, 0x4B, -0x6D, 0xE4, 0xC7, 0xF5, 0x9E, 0xA3, 0x0A, 0x5C, -0x25, 0x60, 0x01, 0x4C, 0xC7, 0xF5, 0x9E, 0xC3, +0x01, 0x6D, 0x80, 0x18, 0x78, 0x09, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x00, 0x6B, +0xE7, 0xF5, 0x6D, 0xC2, 0x90, 0x67, 0x02, 0x6D, +0x80, 0x18, 0xF8, 0x0F, 0x2F, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0x34, 0x83, 0xF5, 0x00, 0x4B, +0x6D, 0xE4, 0xE7, 0xF5, 0x86, 0xA3, 0x0A, 0x5C, +0x25, 0x60, 0x01, 0x4C, 0xE7, 0xF5, 0x86, 0xC3, 0xED, 0x17, 0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, -0xA4, 0x09, 0x90, 0x67, 0x02, 0x6D, 0x80, 0x18, -0xF7, 0x0D, 0x18, 0x22, 0x03, 0x6C, 0x98, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, -0x12, 0xEC, 0x71, 0xE4, 0xC7, 0xF5, 0xB3, 0xA4, +0x78, 0x09, 0x90, 0x67, 0x02, 0x6D, 0x80, 0x18, +0xCB, 0x0D, 0x18, 0x22, 0x03, 0x6C, 0x98, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, +0x12, 0xEC, 0x71, 0xE4, 0xC7, 0xF5, 0xBB, 0xA4, 0x02, 0x5D, 0x04, 0x60, 0x01, 0x4D, 0xC7, 0xF5, -0xB3, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x02, 0x6C, -0x67, 0xF3, 0x84, 0xC0, 0x06, 0x6C, 0x27, 0xF2, -0x8B, 0xC3, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x27, 0xF2, 0x8B, 0xA3, +0xBB, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x02, 0x6C, +0x67, 0xF3, 0x8C, 0xC0, 0x06, 0x6C, 0x27, 0xF2, +0x93, 0xC3, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF5, 0x00, 0x4B, 0x27, 0xF2, 0x93, 0xA3, 0x01, 0x4C, 0xF5, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x27, 0xF2, 0x6B, 0xA2, -0x01, 0x4B, 0x27, 0xF2, 0x6B, 0xC2, 0x01, 0x6A, +0x83, 0xF5, 0x00, 0x4A, 0x27, 0xF2, 0x73, 0xA2, +0x01, 0x4B, 0x27, 0xF2, 0x73, 0xC2, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x27, 0xF2, 0x69, 0xA2, 0x27, 0xF2, 0x4C, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x27, 0xF2, 0x71, 0xA2, 0x27, 0xF2, 0x54, 0xA2, 0x08, 0xD3, 0x06, 0x5A, 0x76, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x48, 0x32, 0xC2, 0xF1, 0x00, 0x4B, +0x20, 0x6B, 0x48, 0x32, 0xA2, 0xF1, 0x18, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x00, 0x6C, -0x80, 0x18, 0xC6, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x27, 0xF2, 0x6B, 0xA2, +0x80, 0x18, 0x9A, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF5, 0x00, 0x4A, 0x27, 0xF2, 0x73, 0xA2, 0x06, 0x73, 0xF5, 0x61, 0x2A, 0x10, 0x00, 0x6C, -0x80, 0x18, 0x4F, 0x0B, 0x00, 0x6C, 0xA4, 0x67, -0x37, 0x10, 0x00, 0x6C, 0x80, 0x18, 0x17, 0x0B, -0x00, 0x6C, 0xA4, 0x67, 0x80, 0x18, 0xF7, 0x0D, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, -0x27, 0xF2, 0x94, 0xA3, 0x01, 0x4C, 0x27, 0xF2, -0x94, 0xC3, 0x42, 0x22, 0xC7, 0xF5, 0x51, 0xA3, +0x80, 0x18, 0x23, 0x0B, 0x00, 0x6C, 0xA4, 0x67, +0x37, 0x10, 0x00, 0x6C, 0x80, 0x18, 0xEB, 0x0A, +0x00, 0x6C, 0xA4, 0x67, 0x80, 0x18, 0xCB, 0x0D, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, +0x27, 0xF2, 0x9C, 0xA3, 0x01, 0x4C, 0x27, 0xF2, +0x9C, 0xC3, 0x42, 0x22, 0xC7, 0xF5, 0x59, 0xA3, 0x03, 0x5A, 0x3E, 0x60, 0x01, 0x4A, 0xC7, 0xF5, -0x51, 0xC3, 0x43, 0x10, 0x01, 0x6C, 0x80, 0x18, -0xC6, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x27, 0xF2, 0x6B, 0xA2, 0x06, 0x73, -0xF5, 0x61, 0x27, 0xF2, 0x6C, 0xA2, 0x01, 0x4B, -0x27, 0xF2, 0x6C, 0xC2, 0x78, 0x67, 0x27, 0xF2, -0x6B, 0xC2, 0x27, 0xF2, 0x74, 0xA2, 0x01, 0x4B, -0x27, 0xF2, 0x74, 0xC2, 0x2A, 0x10, 0x01, 0x6C, -0x80, 0x18, 0x4F, 0x0B, 0x01, 0x6C, 0x00, 0x6D, -0x80, 0x18, 0xB3, 0x0D, 0x19, 0x10, 0x01, 0x6C, -0x80, 0x18, 0x17, 0x0B, 0x01, 0x6C, 0x00, 0x6D, -0x80, 0x18, 0xF7, 0x0D, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x27, 0xF2, 0x94, 0xA3, -0x01, 0x4C, 0x27, 0xF2, 0x94, 0xC3, 0x08, 0x22, -0xC7, 0xF5, 0x54, 0xA3, 0x03, 0x5A, 0x04, 0x60, -0x01, 0x4A, 0xC7, 0xF5, 0x54, 0xC3, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x27, 0xF2, 0x6C, 0xA2, 0x01, 0x4B, 0x27, 0xF2, -0x6C, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF7, -0x44, 0xA2, 0x06, 0x72, 0x80, 0xF0, 0x08, 0x61, +0x59, 0xC3, 0x43, 0x10, 0x01, 0x6C, 0x80, 0x18, +0x9A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x27, 0xF2, 0x73, 0xA2, 0x06, 0x73, +0xF5, 0x61, 0x27, 0xF2, 0x74, 0xA2, 0x01, 0x4B, +0x27, 0xF2, 0x74, 0xC2, 0x78, 0x67, 0x27, 0xF2, +0x73, 0xC2, 0x27, 0xF2, 0x7C, 0xA2, 0x01, 0x4B, +0x27, 0xF2, 0x7C, 0xC2, 0x2A, 0x10, 0x01, 0x6C, +0x80, 0x18, 0x23, 0x0B, 0x01, 0x6C, 0x00, 0x6D, +0x80, 0x18, 0x87, 0x0D, 0x19, 0x10, 0x01, 0x6C, +0x80, 0x18, 0xEB, 0x0A, 0x01, 0x6C, 0x00, 0x6D, +0x80, 0x18, 0xCB, 0x0D, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF5, 0x00, 0x4B, 0x27, 0xF2, 0x9C, 0xA3, +0x01, 0x4C, 0x27, 0xF2, 0x9C, 0xC3, 0x08, 0x22, +0xC7, 0xF5, 0x5C, 0xA3, 0x03, 0x5A, 0x04, 0x60, +0x01, 0x4A, 0xC7, 0xF5, 0x5C, 0xC3, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x27, 0xF2, 0x74, 0xA2, 0x01, 0x4B, 0x27, 0xF2, +0x74, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xAA, 0xF7, +0x54, 0xA2, 0x06, 0x72, 0x80, 0xF0, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x69, 0x00, 0x6A, 0x6B, 0xF3, -0x08, 0x49, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, +0x18, 0x49, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x6C, 0xEA, 0x06, 0x93, 0x07, 0xD2, 0x01, 0x6D, 0x64, 0x36, 0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0xC2, 0xF4, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x08, 0x92, 0x06, 0x72, 0x1A, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x62, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x99, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x6D, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0xC2, 0x99, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, -0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF3, 0x18, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x42, 0xF3, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF3, 0x18, 0x4B, 0xC0, 0xF3, +0x20, 0x6B, 0x42, 0xF3, 0x10, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF4, -0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF4, +0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x03, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x95, -0x02, 0xF5, 0xFC, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xCA, 0xF4, 0x18, 0x4C, 0x00, 0x6E, 0x80, 0x18, +0x02, 0xF5, 0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xEA, 0xF4, 0x00, 0x4C, 0x00, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x06, 0x92, 0x04, 0x49, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, 0x7F, 0xF7, 0x1E, 0x61, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xAA, 0xF7, 0x41, 0xA2, 0xFF, 0x69, 0x8C, 0xE9, +0xAA, 0xF7, 0x51, 0xA2, 0xFF, 0x69, 0x8C, 0xE9, 0x02, 0x72, 0x02, 0x6A, 0x05, 0xD2, 0x02, 0x60, 0x04, 0x6B, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, 0x03, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0xF4, 0x16, 0x04, 0xD2, 0xC0, 0xF3, 0x44, 0x98, +0xC8, 0x16, 0x04, 0xD2, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, @@ -47393,10 +47913,10 @@ u8 array_mp_8822c_fw_spic[] = { 0x06, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0x91, 0x67, -0x80, 0x18, 0x0C, 0x11, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x27, 0xF2, 0x6C, 0xA2, +0x80, 0x18, 0xE0, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF5, 0x00, 0x4A, 0x27, 0xF2, 0x74, 0xA2, 0x06, 0x73, 0x0B, 0x60, 0x05, 0x21, 0x27, 0xF2, -0x54, 0xA2, 0x05, 0x93, 0x6E, 0xEA, 0x05, 0x22, +0x5C, 0xA2, 0x05, 0x93, 0x6E, 0xEA, 0x05, 0x22, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x64, 0x70, 0xEA, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, @@ -47408,96 +47928,96 @@ u8 array_mp_8822c_fw_spic[] = { 0x04, 0x96, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0xF4, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xCA, 0xF4, 0x18, 0x4C, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0xEC, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xEA, 0xF4, 0x00, 0x4C, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF0, 0x00, 0x6C, -0x63, 0xF5, 0x18, 0x4B, 0x4C, 0xEC, 0xA7, 0xF5, -0x50, 0xDB, 0x82, 0x32, 0x52, 0x32, 0x02, 0x72, +0x83, 0xF5, 0x00, 0x4B, 0x4C, 0xEC, 0xA7, 0xF5, +0x58, 0xDB, 0x82, 0x32, 0x52, 0x32, 0x02, 0x72, 0x0A, 0x60, 0x03, 0x6C, 0x4E, 0xEC, 0x04, 0x24, 0x01, 0x72, 0x02, 0x6A, 0x07, 0x60, 0x05, 0x10, -0x27, 0xF2, 0x89, 0xC3, 0x05, 0x10, 0x01, 0x6A, -0x01, 0x10, 0x00, 0x6A, 0x27, 0xF2, 0x49, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x70, 0x9B, -0xA7, 0xF5, 0x90, 0x9A, 0x8C, 0xEB, 0x62, 0x33, -0x62, 0x33, 0x27, 0xF2, 0x68, 0xC2, 0x05, 0x97, +0x27, 0xF2, 0x91, 0xC3, 0x05, 0x10, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x27, 0xF2, 0x51, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x68, 0x9B, +0xA7, 0xF5, 0x98, 0x9A, 0x8C, 0xEB, 0x62, 0x33, +0x62, 0x33, 0x27, 0xF2, 0x70, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xF1, 0x63, 0x1D, 0x62, 0x1C, 0xD1, 0x1B, 0xD0, 0x08, 0xA4, 0x02, 0x6A, 0x01, 0x69, 0x0C, 0xEA, 0x46, 0x32, 0x18, 0xD2, -0x80, 0x18, 0x8A, 0x04, 0x80, 0x18, 0xD5, 0x11, -0x80, 0x18, 0xEE, 0x0F, 0x00, 0x6C, 0x80, 0x18, -0x64, 0x05, 0x90, 0x67, 0x2C, 0xEC, 0x00, 0x6D, -0x80, 0x18, 0xB7, 0x0F, 0x80, 0xF0, 0x00, 0x2A, -0x30, 0xF0, 0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, -0x27, 0xF2, 0x6A, 0xA0, 0x27, 0xF2, 0x4C, 0xC0, -0x27, 0xF2, 0x4B, 0xC0, 0x01, 0x4B, 0x27, 0xF2, -0x6A, 0xC0, 0x27, 0xF2, 0x54, 0xC0, 0x27, 0xF2, -0x35, 0xC0, 0x38, 0x6C, 0x80, 0x18, 0xE7, 0x08, -0x00, 0x6C, 0xE7, 0xF5, 0x48, 0xD8, 0xA4, 0x67, -0x80, 0x18, 0x57, 0x0D, 0x30, 0xF0, 0x20, 0x6E, +0x80, 0x18, 0x83, 0x04, 0x80, 0x18, 0xA9, 0x11, +0x80, 0x18, 0xC2, 0x0F, 0x00, 0x6C, 0x80, 0x18, +0x5D, 0x05, 0x90, 0x67, 0x2C, 0xEC, 0x00, 0x6D, +0x80, 0x18, 0x8B, 0x0F, 0x80, 0xF0, 0x00, 0x2A, +0x30, 0xF0, 0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, +0x27, 0xF2, 0x72, 0xA0, 0x27, 0xF2, 0x54, 0xC0, +0x27, 0xF2, 0x53, 0xC0, 0x01, 0x4B, 0x27, 0xF2, +0x72, 0xC0, 0x27, 0xF2, 0x5C, 0xC0, 0x27, 0xF2, +0x3D, 0xC0, 0x38, 0x6C, 0x80, 0x18, 0xBB, 0x08, +0x00, 0x6C, 0xE7, 0xF5, 0x50, 0xD8, 0xA4, 0x67, +0x80, 0x18, 0x2B, 0x0D, 0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x04, 0x04, 0x0D, 0x05, 0x82, 0xF0, 0x08, 0x4E, 0x82, 0xF0, 0x14, 0x4F, -0x80, 0x18, 0x37, 0x09, 0x30, 0xF0, 0x20, 0x6D, +0x80, 0x18, 0x0B, 0x09, 0x30, 0xF0, 0x20, 0x6D, 0x07, 0x04, 0xE2, 0xF0, 0x08, 0x4D, 0x80, 0x18, -0xF6, 0x0C, 0x00, 0x68, 0x80, 0x18, 0x5D, 0x08, -0x01, 0x6C, 0x80, 0x18, 0xA0, 0x05, 0x18, 0x94, -0x80, 0x18, 0x99, 0x11, 0x00, 0x6C, 0x80, 0x18, -0xA0, 0x05, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF0, -0x08, 0x4C, 0x07, 0x05, 0x80, 0x18, 0xE8, 0x0B, +0xCA, 0x0C, 0x00, 0x68, 0x80, 0x18, 0x31, 0x08, +0x01, 0x6C, 0x80, 0x18, 0x74, 0x05, 0x18, 0x94, +0x80, 0x18, 0x6D, 0x11, 0x00, 0x6C, 0x80, 0x18, +0x74, 0x05, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF0, +0x08, 0x4C, 0x07, 0x05, 0x80, 0x18, 0xBC, 0x0B, 0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x04, 0x04, 0x0D, 0x05, 0x82, 0xF0, 0x08, 0x4E, -0x82, 0xF0, 0x14, 0x4F, 0x80, 0x18, 0x1A, 0x08, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x27, 0xF2, 0x6C, 0xA2, 0x06, 0x73, 0x08, 0x60, +0x82, 0xF0, 0x14, 0x4F, 0x80, 0x18, 0xEE, 0x07, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, +0x27, 0xF2, 0x74, 0xA2, 0x06, 0x73, 0x08, 0x60, 0xFF, 0x6B, 0x01, 0x48, 0x6C, 0xE8, 0x03, 0x70, -0x00, 0x6B, 0x27, 0xF2, 0x74, 0xC2, 0xD2, 0x61, +0x00, 0x6B, 0x27, 0xF2, 0x7C, 0xC2, 0xD2, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x6C, 0x80, 0x18, -0x33, 0x05, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x2C, 0x05, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0xFF, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x69, 0x91, 0x67, 0xFF, 0x6D, 0xAA, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0xFF, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0xFF, 0x6D, 0xAA, 0x6E, -0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0x64, 0x05, +0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0x5D, 0x05, 0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, 0x00, 0x6A, 0x0F, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF6, -0x00, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x08, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0xA0, 0xA4, 0xE0, 0xF0, +0x83, 0xF5, 0x00, 0x4B, 0xA0, 0xA4, 0xE0, 0xF0, 0xEE, 0xA3, 0x02, 0x6A, 0x01, 0x6E, 0x4B, 0xEA, 0xCC, 0xED, 0xEC, 0xEA, 0xAD, 0xEA, 0xE0, 0xF0, 0x4E, 0xC3, 0xA1, 0xA4, 0xCC, 0xEA, 0xE0, 0xF0, 0xAF, 0xC3, 0xFF, 0x6D, 0x0D, 0x22, 0x61, 0xA4, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x54, 0x9A, 0x74, 0x33, 0x40, 0x6C, 0x4D, 0xE3, 0x40, 0xA3, 0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x0A, 0x10, -0x61, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, -0x4C, 0x9A, 0x74, 0x33, 0x4D, 0xE3, 0x80, 0xA3, +0x61, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, +0x54, 0x9A, 0x74, 0x33, 0x4D, 0xE3, 0x80, 0xA3, 0xBF, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x58, 0x9A, 0x60, 0xA2, 0x03, 0x6A, 0x6C, 0xEA, 0x10, 0x6B, 0x64, 0xEA, 0xFF, 0x6A, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF6, 0x54, 0x9A, 0x04, 0xD3, +0x20, 0x6A, 0x02, 0xF6, 0x5C, 0x9A, 0x04, 0xD3, 0x40, 0x9A, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF6, 0x58, 0x9A, 0x00, 0x9A, 0x05, 0x92, +0x22, 0xF6, 0x40, 0x9A, 0x00, 0x9A, 0x05, 0x92, 0x0A, 0xEA, 0xC0, 0xF0, 0x04, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0xA0, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x02, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, -0x64, 0xDA, 0x30, 0xF0, 0x20, 0x69, 0x63, 0xF5, -0x18, 0x49, 0xA2, 0xF5, 0x5A, 0xA9, 0x00, 0xF7, +0x64, 0xDA, 0x30, 0xF0, 0x20, 0x69, 0x83, 0xF5, +0x00, 0x49, 0xA2, 0xF5, 0x5A, 0xA9, 0x00, 0xF7, 0x00, 0x72, 0x07, 0x60, 0xA2, 0xF5, 0x7A, 0xA1, 0xA2, 0xF5, 0x9B, 0xA1, 0xAF, 0x43, 0x8E, 0xED, 0x13, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, -0x68, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, +0x60, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, +0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x97, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x22, 0xF4, 0xAC, 0x9D, +0x30, 0xF0, 0x20, 0x6D, 0x22, 0xF4, 0xA4, 0x9D, 0x7F, 0x6E, 0xB5, 0xE0, 0xE0, 0xA5, 0xCC, 0xEF, 0x45, 0x2F, 0x00, 0xF4, 0x00, 0x72, 0x80, 0xF0, 0x0A, 0x60, 0xAC, 0x43, 0x8E, 0xED, 0x80, 0xF0, @@ -47505,146 +48025,146 @@ u8 array_mp_8822c_fw_spic[] = { 0x02, 0x60, 0x00, 0xF6, 0x02, 0x72, 0x7F, 0x60, 0x00, 0xF7, 0x03, 0x72, 0x7C, 0x60, 0x00, 0xF5, 0x00, 0x72, 0x79, 0x60, 0xFD, 0x4B, 0x6E, 0xEC, -0x76, 0x24, 0x30, 0xF0, 0x20, 0x69, 0x63, 0xF5, -0x18, 0x49, 0xA2, 0xF5, 0x5A, 0xA9, 0x00, 0xF6, +0x76, 0x24, 0x30, 0xF0, 0x20, 0x69, 0x83, 0xF5, +0x00, 0x49, 0xA2, 0xF5, 0x5A, 0xA9, 0x00, 0xF6, 0x01, 0x72, 0x6D, 0x60, 0x00, 0xF7, 0x02, 0x72, 0x6A, 0x60, 0x00, 0xF6, 0x00, 0x72, 0x67, 0x60, 0xA2, 0xF5, 0x7A, 0xA1, 0xA2, 0xF5, 0x9B, 0xA1, 0xFE, 0x4B, 0x8E, 0xEB, 0x60, 0x23, 0x00, 0xF7, 0x01, 0x72, 0x5D, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF6, 0x5C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, -0x22, 0xF4, 0xAC, 0x9D, 0x49, 0xE0, 0x94, 0x34, +0x22, 0xF6, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6D, +0x22, 0xF4, 0xA4, 0x9D, 0x49, 0xE0, 0x94, 0x34, 0x60, 0xAA, 0x91, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA2, 0xF4, 0x1A, 0x4C, 0xB5, 0xE0, 0x12, 0x10, 0x40, 0xA5, 0x4C, 0xEE, 0x01, 0x76, 0x1E, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF6, 0x5C, 0x9A, 0x94, 0x34, 0x91, 0xE1, +0x22, 0xF6, 0x44, 0x9A, 0x94, 0x34, 0x91, 0xE1, 0x49, 0xE0, 0x60, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA2, 0xF4, 0x1A, 0x4C, 0xFF, 0x6E, 0x6C, 0xEE, 0x40, 0xEA, 0xA2, 0xF5, 0x5B, 0xA1, 0x08, 0x6B, 0x01, 0x4A, 0xA2, 0xF5, 0x5B, 0xC1, 0xA2, 0xF5, 0x5B, 0xA1, 0x6E, 0xEA, 0x13, 0x2A, 0xA2, 0xF5, 0x5B, 0xC1, 0x10, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x88, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x7C, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x80, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0x74, 0x9B, 0x40, 0x9C, 0x6D, 0xEA, 0x40, 0xDC, 0x23, 0xF3, 0x50, 0x99, 0x6D, 0xEA, 0x23, 0xF3, 0x50, 0xD9, -0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x48, 0x9A, 0x04, 0x93, 0x40, 0x9A, 0x0E, 0xEA, 0x61, 0xE0, -0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, -0x44, 0x9A, 0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF6, 0x58, 0x9A, 0x00, 0xDA, 0x05, 0x92, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x4C, 0x9A, 0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x40, 0x9A, 0x00, 0xDA, 0x05, 0x92, 0x4A, 0xE8, 0x5F, 0xF7, 0x06, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFE, 0x63, 0x03, 0xD1, 0x02, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x02, 0x6D, 0xAC, 0xEB, 0x40, 0xF1, -0x1A, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, -0x68, 0x9B, 0x80, 0xA3, 0x0F, 0x6B, 0x8C, 0xEB, +0x1A, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, +0x70, 0x9B, 0x80, 0xA3, 0x0F, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0xA0, 0xF0, 0x84, 0x9A, 0xAD, 0xEC, 0xA0, 0xF0, 0x84, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF6, 0x48, 0xA2, 0xFF, 0x4A, 0x00, 0xD2, -0x44, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x20, 0xF1, 0x90, 0xAA, 0x00, 0xF7, +0xA3, 0xF6, 0x50, 0xA2, 0xFF, 0x4A, 0x00, 0xD2, +0x44, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x20, 0xF1, 0x90, 0xAA, 0x00, 0xF7, 0x00, 0x74, 0x05, 0x60, 0x20, 0xF1, 0x11, 0xA2, 0x00, 0x94, 0x8A, 0xE8, 0x13, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, 0xFF, 0x6C, +0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x25, 0x11, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF5, 0xCE, 0xA4, 0xE3, 0x67, 0xFF, 0x6D, +0x03, 0xF5, 0xD2, 0xA4, 0xE3, 0x67, 0xFF, 0x6D, 0xE7, 0xEE, 0xC7, 0x67, 0x01, 0x6F, 0xEC, 0xEE, 0xA0, 0xF0, 0x0A, 0x26, 0x0C, 0x35, 0x7F, 0x4D, 0x75, 0x4D, 0xB5, 0xE2, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6E, 0x03, 0xF5, 0xEE, 0xA6, 0xFF, 0x6C, +0x20, 0x6E, 0x03, 0xF5, 0xF2, 0xA6, 0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, 0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x02, 0xF0, -0x00, 0x77, 0x08, 0x60, 0x03, 0xF5, 0xEE, 0xA6, +0x00, 0x77, 0x08, 0x60, 0x03, 0xF5, 0xF2, 0xA6, 0x8C, 0xEF, 0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x0F, 0x2F, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF5, 0x2E, 0xA4, 0xFF, 0x6C, 0x30, 0xF0, +0x03, 0xF5, 0x32, 0xA4, 0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x6E, 0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, -0xE2, 0x67, 0x25, 0xE2, 0xE2, 0xF2, 0xDC, 0x9E, -0x0B, 0x10, 0x03, 0xF5, 0x2E, 0xA6, 0x30, 0xF0, -0x20, 0x6E, 0x02, 0xF3, 0xC0, 0x9E, 0x8C, 0xE9, +0xE2, 0x67, 0x25, 0xE2, 0xE2, 0xF2, 0xD4, 0x9E, +0x0B, 0x10, 0x03, 0xF5, 0x32, 0xA6, 0x30, 0xF0, +0x20, 0x6E, 0xE2, 0xF2, 0xD8, 0x9E, 0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, 0xE2, 0x67, 0x25, 0xE2, 0xD9, 0xE1, 0xC0, 0xA6, 0x0C, 0x31, 0xCC, 0xEC, -0x30, 0xF0, 0x20, 0x6E, 0x63, 0xF5, 0x18, 0x4E, +0x30, 0xF0, 0x20, 0x6E, 0x83, 0xF5, 0x00, 0x4E, 0xD9, 0xE1, 0xFD, 0xE6, 0xE0, 0xF0, 0x90, 0xC7, -0x30, 0xF0, 0x20, 0x6E, 0x03, 0xF5, 0xEE, 0xA6, +0x30, 0xF0, 0x20, 0x6E, 0x03, 0xF5, 0xF2, 0xA6, 0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, 0x03, 0xF5, -0xEE, 0xA6, 0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, +0xF2, 0xA6, 0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x0E, 0x2F, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF5, 0xCE, 0xA4, 0xFF, 0x6C, +0x20, 0x6C, 0x03, 0xF5, 0xD2, 0xA4, 0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x6F, 0x8C, 0xEE, 0x7C, 0x4E, -0xC8, 0x36, 0xD9, 0xE2, 0xE2, 0xF2, 0xFC, 0x9F, -0x0A, 0x10, 0x03, 0xF5, 0xCE, 0xA6, 0x30, 0xF0, -0x20, 0x6F, 0x02, 0xF3, 0xE0, 0x9F, 0x8C, 0xEE, +0xC8, 0x36, 0xD9, 0xE2, 0xE2, 0xF2, 0xF4, 0x9F, +0x0A, 0x10, 0x03, 0xF5, 0xD2, 0xA6, 0x30, 0xF0, +0x20, 0x6F, 0xE2, 0xF2, 0xF8, 0x9F, 0x8C, 0xEE, 0x7C, 0x4E, 0xC8, 0x36, 0xD9, 0xE2, 0xF9, 0xE6, 0xC0, 0xA6, 0x01, 0x4A, 0x04, 0x72, 0xCC, 0xEC, 0x80, 0xC5, 0x01, 0x4D, 0x8C, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF5, 0xAE, 0xA2, 0x01, 0x6C, +0x20, 0x6A, 0x03, 0xF5, 0xB2, 0xA2, 0x01, 0x6C, 0xC4, 0x67, 0xC4, 0xED, 0xCF, 0xED, 0x03, 0xF5, -0xCE, 0xA2, 0xAC, 0xEB, 0xFF, 0x6D, 0x84, 0xEE, -0x30, 0xF0, 0x20, 0x6E, 0x42, 0xF6, 0xC8, 0x9E, +0xD2, 0xA2, 0xAC, 0xEB, 0xFF, 0x6D, 0x84, 0xEE, +0x30, 0xF0, 0x20, 0x6E, 0x22, 0xF6, 0xD0, 0x9E, 0xAC, 0xEC, 0x08, 0x6F, 0x80, 0xC6, 0x03, 0xF5, -0x8E, 0xA2, 0xAC, 0xEC, 0x01, 0x4C, 0xAC, 0xEC, -0x03, 0xF5, 0x8E, 0xC2, 0x03, 0xF5, 0xAE, 0xA2, -0x03, 0x6C, 0xAC, 0xEC, 0x03, 0xF5, 0x8E, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x92, 0xA2, 0xAC, 0xEC, 0x01, 0x4C, 0xAC, 0xEC, +0x03, 0xF5, 0x92, 0xC2, 0x03, 0xF5, 0xB2, 0xA2, +0x03, 0x6C, 0xAC, 0xEC, 0x03, 0xF5, 0x92, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x20, 0xF1, 0x91, 0xA2, 0x01, 0x4C, 0x20, 0xF1, 0x91, 0xC2, 0x20, 0xF1, 0x91, 0xA2, 0xEE, 0xEC, 0x70, 0x2C, 0x20, 0xF1, 0x91, 0xC2, 0x6D, 0x10, -0x30, 0xF0, 0x20, 0x6E, 0x22, 0xF3, 0x08, 0x9E, +0x30, 0xF0, 0x20, 0x6E, 0x22, 0xF3, 0x00, 0x9E, 0x02, 0x6F, 0xC0, 0x98, 0xED, 0xEE, 0xC0, 0xD8, 0x23, 0xF3, 0xD0, 0x9A, 0x23, 0xF3, 0x7C, 0xC2, -0x03, 0xF5, 0x6E, 0xA4, 0xED, 0xEE, 0x23, 0xF3, +0x03, 0xF5, 0x72, 0xA4, 0xED, 0xEE, 0x23, 0xF3, 0xD0, 0xDA, 0x23, 0xF3, 0x7D, 0xC2, 0x03, 0xF5, -0x4E, 0xA4, 0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEA, +0x52, 0xA4, 0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEA, 0x74, 0x4A, 0x48, 0x32, 0x6C, 0xEA, 0x02, 0xF0, -0x00, 0x72, 0x07, 0x60, 0x03, 0xF5, 0x4E, 0xA4, +0x00, 0x72, 0x07, 0x60, 0x03, 0xF5, 0x52, 0xA4, 0xAC, 0xEA, 0x74, 0x4A, 0x48, 0x32, 0x6C, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0x6E, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF6, -0x8C, 0x9C, 0xFF, 0x6A, 0x4C, 0xEB, 0x8D, 0xE3, +0x72, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, +0x94, 0x9C, 0xFF, 0x6A, 0x4C, 0xEB, 0x8D, 0xE3, 0x68, 0x33, 0xA0, 0xA3, 0x0A, 0x10, 0x03, 0xF5, -0x4E, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, -0x70, 0x9B, 0xAC, 0xEA, 0x69, 0xE2, 0x48, 0x32, +0x52, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, +0x78, 0x9B, 0xAC, 0xEA, 0x69, 0xE2, 0x48, 0x32, 0x40, 0xA2, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF0, 0xB6, 0xC2, -0x03, 0xF5, 0x4E, 0xA3, 0x03, 0xF5, 0x8E, 0xA3, +0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF0, 0xBE, 0xC2, +0x03, 0xF5, 0x52, 0xA3, 0x03, 0xF5, 0x92, 0xA3, 0xFF, 0x6A, 0x1F, 0xF7, 0x00, 0x6D, 0x4C, 0xEC, 0x88, 0x34, 0xC0, 0xF1, 0x11, 0x4C, 0xAC, 0xEC, -0x0B, 0x2C, 0x03, 0xF5, 0x6E, 0xA3, 0xFF, 0x6A, +0x0B, 0x2C, 0x03, 0xF5, 0x72, 0xA3, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x4C, 0xEB, 0x74, 0x4B, -0x68, 0x33, 0x42, 0xF6, 0x94, 0x9C, 0x09, 0x10, -0x03, 0xF5, 0x6E, 0xA3, 0x30, 0xF0, 0x20, 0x6C, -0x42, 0xF6, 0x98, 0x9C, 0x4C, 0xEB, 0x74, 0x4B, +0x68, 0x33, 0x22, 0xF6, 0x9C, 0x9C, 0x09, 0x10, +0x03, 0xF5, 0x72, 0xA3, 0x30, 0xF0, 0x20, 0x6C, +0x42, 0xF6, 0x80, 0x9C, 0x4C, 0xEB, 0x74, 0x4B, 0x68, 0x33, 0x8D, 0xE3, 0x60, 0xA3, 0x6C, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA7, 0xF0, 0x57, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xA7, 0xF0, 0x5F, 0xC3, 0x02, 0x10, 0xBF, 0xF6, 0x1A, 0x2B, 0x03, 0x91, 0x02, 0x90, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF2, 0x4C, 0x9A, 0xFF, 0x68, +0x20, 0x6A, 0xC2, 0xF2, 0x44, 0x9A, 0xFF, 0x68, 0x60, 0xA2, 0x6C, 0xE8, 0x25, 0x20, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF6, 0x5C, 0x9A, 0x20, 0x6B, +0x20, 0x6A, 0x42, 0xF6, 0x44, 0x9A, 0x20, 0x6B, 0x01, 0x70, 0x60, 0xC2, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x5C, 0x9A, 0x40, 0xEA, 0x0F, 0x10, 0x20, 0x70, 0x0D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, 0xA2, 0xF3, -0x90, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x88, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, -0x10, 0xF0, 0x30, 0x6A, 0x89, 0xF6, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, +0x10, 0xF0, 0x30, 0x6A, 0xE9, 0xF5, 0x09, 0x4A, 0x40, 0xDB, 0x00, 0x1C, 0xAC, 0x39, 0x80, 0x18, -0x13, 0x4D, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, +0x19, 0x4D, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x68, 0x00, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, @@ -47674,33 +48194,33 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xA4, 0xFF, 0xF7, 0x1F, 0x6B, 0xE0, 0x37, 0x5D, 0xE7, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0x05, 0x6C, -0x46, 0xF3, 0x04, 0x4D, 0x00, 0xF2, 0x00, 0x6E, +0x46, 0xF3, 0x0C, 0x4D, 0x00, 0xF2, 0x00, 0x6E, 0x6C, 0xEF, 0x40, 0xEA, 0x7E, 0x10, 0xBD, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x10, 0x6A, 0x5B, 0xC5, 0x30, 0xF0, 0x20, 0x69, 0x80, 0xF2, 0x4C, 0x9B, -0xC9, 0xF4, 0x18, 0x49, 0x09, 0x04, 0xB1, 0x67, +0xE9, 0xF4, 0x00, 0x49, 0x09, 0x04, 0xB1, 0x67, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9C, 0xA4, 0x41, 0x0A, 0x04, 0x04, 0x6E, 0x40, 0xEA, 0x4B, 0x10, 0x06, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, 0x06, 0x04, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, -0x63, 0xF5, 0x18, 0x48, 0x65, 0xF7, 0x7C, 0xA0, +0x83, 0xF5, 0x00, 0x48, 0x65, 0xF7, 0x7C, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x30, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x50, 0x9A, 0x40, 0xEA, 0x65, 0xF7, 0x68, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x21, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x40, 0x9A, 0x65, 0xF7, +0x20, 0x6A, 0x42, 0xF6, 0x48, 0x9A, 0x65, 0xF7, 0xD4, 0x98, 0x10, 0xF0, 0x31, 0x6C, 0x40, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x44, 0x9A, -0xC5, 0xF1, 0x19, 0x4C, 0x00, 0x6D, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x4C, 0x9A, +0x05, 0xF2, 0x09, 0x4C, 0x00, 0x6D, 0x40, 0x9A, 0x01, 0x6F, 0x5B, 0xE6, 0xE0, 0xF3, 0x08, 0x6A, 0x5B, 0xEE, 0x01, 0x2A, 0xE5, 0xE8, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x12, 0xEE, 0x40, 0xEA, 0x29, 0x10, -0x80, 0x18, 0x76, 0x4A, 0x26, 0x10, 0x30, 0xF0, +0x80, 0x18, 0x82, 0x4A, 0x26, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, 0x65, 0xF7, 0xBA, 0xA8, 0x00, 0x6C, 0x80, 0x18, -0x25, 0x4A, 0x1B, 0x10, 0x1A, 0x20, 0x30, 0xF0, +0x31, 0x4A, 0x1B, 0x10, 0x1A, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, 0x13, 0x10, 0x14, 0x2A, 0x69, 0xA4, 0xBD, 0x67, 0x7C, 0xC5, 0x68, 0xA4, 0x5E, 0xC5, 0x5F, 0xC5, 0x7D, 0xC5, @@ -47713,10 +48233,10 @@ u8 array_mp_8822c_fw_spic[] = { 0x4C, 0xEB, 0x04, 0x5B, 0x03, 0x60, 0x80, 0x18, 0xC7, 0x40, 0x4A, 0x10, 0xFE, 0x4C, 0x4C, 0xEC, 0x0C, 0x5C, 0x31, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0xE2, 0xF1, 0x18, 0x4A, 0x89, 0xE2, +0x88, 0x34, 0xE2, 0xF1, 0x10, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x48, 0x9A, 0x08, 0x10, 0x85, 0x67, -0x80, 0x18, 0x3B, 0x4A, 0x35, 0x10, 0x30, 0xF0, +0x80, 0x18, 0x47, 0x4A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x44, 0x9A, 0x85, 0x67, 0x40, 0xEA, 0x2E, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x54, 0x9A, 0x40, 0xEA, 0x28, 0x10, @@ -47724,11 +48244,11 @@ u8 array_mp_8822c_fw_spic[] = { 0xF2, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x5C, 0x9A, 0xED, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x40, 0x9A, 0xE8, 0x17, 0x85, 0x67, -0x00, 0x18, 0x10, 0xCF, 0x15, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x22, 0xF4, 0x88, 0x9C, 0x40, 0x9B, +0x00, 0x18, 0x14, 0xCF, 0x15, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x22, 0xF4, 0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, +0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0xFF, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, @@ -47740,37 +48260,37 @@ u8 array_mp_8822c_fw_spic[] = { 0x80, 0xF3, 0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x58, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF6, 0x4C, 0x9A, 0x14, 0x33, +0x20, 0x6A, 0x02, 0xF6, 0x54, 0x9A, 0x14, 0x33, 0x4D, 0xE3, 0x80, 0xA3, 0xBF, 0x6A, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x54, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF6, 0x4C, 0x9A, 0x14, 0x33, 0xFF, 0x6C, +0x02, 0xF6, 0x54, 0x9A, 0x14, 0x33, 0xFF, 0x6C, 0x4D, 0xE3, 0x40, 0xA3, 0x8C, 0xEA, 0x40, 0x6C, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x06, 0x92, 0x03, 0xEA, 0xC9, 0x60, 0x43, 0xA1, 0x07, 0x6B, 0x01, 0x6C, 0x4C, 0xEB, 0x40, 0xA1, 0x8C, 0xEA, -0x1C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x43, 0xF3, 0xC0, 0xA2, 0x84, 0xEB, +0x1C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x43, 0xF3, 0xC0, 0xA2, 0x84, 0xEB, 0x1F, 0x6F, 0xCA, 0x35, 0x8F, 0xEC, 0xEC, 0xED, 0x8C, 0xED, 0x7D, 0x6C, 0x8B, 0xEC, 0xA8, 0x35, 0xCC, 0xEC, 0xAD, 0xEC, 0x43, 0xF3, 0x80, 0xC2, 0xA0, 0xF0, 0x8F, 0xA2, 0x8E, 0xEB, 0x1E, 0x2B, 0x01, 0x6B, 0x6B, 0xEB, 0x43, 0xF3, 0x61, 0xC2, -0x19, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x43, 0xF3, 0xC0, 0xA2, 0x1F, 0x6F, +0x19, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x43, 0xF3, 0xC0, 0xA2, 0x1F, 0x6F, 0x84, 0xEB, 0xCA, 0x35, 0xEC, 0xED, 0xAD, 0xEC, 0xEC, 0xEC, 0x88, 0x35, 0x7D, 0x6C, 0x8B, 0xEC, 0xCC, 0xEC, 0xAD, 0xEC, 0x43, 0xF3, 0x80, 0xC2, 0xA0, 0xF0, 0x8F, 0xA2, 0x8E, 0xEB, 0x02, 0x2B, 0x43, 0xF3, 0x81, 0xC2, 0x30, 0xF0, 0x20, 0x68, -0x63, 0xF5, 0x18, 0x48, 0x43, 0xF3, 0x60, 0xA0, +0x83, 0xF5, 0x00, 0x48, 0x43, 0xF3, 0x60, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0x1A, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x43, 0xF3, 0x40, 0xC0, -0x00, 0x18, 0x5B, 0xCF, 0x04, 0xD2, 0x04, 0x93, +0x00, 0x18, 0x5F, 0xCF, 0x04, 0xD2, 0x04, 0x93, 0x43, 0xF3, 0x44, 0x98, 0x6E, 0xEA, 0x03, 0x22, -0x04, 0x94, 0x00, 0x18, 0x7C, 0xCF, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x43, 0xF3, +0x04, 0x94, 0x00, 0x18, 0x80, 0xCF, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x43, 0xF3, 0x80, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0x43, 0xF3, 0x60, 0xC2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, @@ -47779,59 +48299,59 @@ u8 array_mp_8822c_fw_spic[] = { 0x03, 0x60, 0x80, 0x18, 0xC6, 0x40, 0x2B, 0x10, 0x01, 0x74, 0x0A, 0x60, 0x05, 0x24, 0xBB, 0x74, 0x0B, 0x60, 0xCD, 0x74, 0x0D, 0x60, 0x10, 0x10, -0x85, 0x67, 0x80, 0x18, 0x43, 0x12, 0x1F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x5C, 0x14, 0x1B, 0x10, -0x85, 0x67, 0x00, 0x18, 0x77, 0xD9, 0x17, 0x10, -0x85, 0x67, 0x80, 0x18, 0x4B, 0x12, 0x13, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, +0x85, 0x67, 0x80, 0x18, 0x17, 0x12, 0x1F, 0x10, +0x85, 0x67, 0x80, 0x18, 0x30, 0x14, 0x1B, 0x10, +0x85, 0x67, 0x00, 0x18, 0x7B, 0xD9, 0x17, 0x10, +0x85, 0x67, 0x80, 0x18, 0x1F, 0x12, 0x13, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, 0x01, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x0E, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x40, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x63, 0xF5, -0x18, 0x48, 0x20, 0xF1, 0x50, 0xA0, 0x20, 0xF1, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x83, 0xF5, +0x00, 0x48, 0x20, 0xF1, 0x50, 0xA0, 0x20, 0xF1, 0x71, 0xA0, 0x4E, 0xEB, 0x29, 0x23, 0x67, 0x42, 0x17, 0x4B, 0x6C, 0x33, 0x0D, 0xE3, 0x4C, 0x32, 0x80, 0xA3, 0xF0, 0xF0, 0xA1, 0x42, 0xB5, 0xE0, -0x80, 0x18, 0xB1, 0x14, 0x20, 0xF1, 0x50, 0xA0, +0x80, 0x18, 0x85, 0x14, 0x20, 0xF1, 0x50, 0xA0, 0x01, 0x4A, 0x20, 0xF1, 0x50, 0xC0, 0x20, 0xF1, 0x70, 0xA0, 0x20, 0xF1, 0x51, 0xA0, 0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, 0x02, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x20, 0xF1, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x20, 0xF1, 0x70, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, -0x20, 0xF1, 0x70, 0xC2, 0x80, 0x18, 0xD6, 0x12, +0x20, 0xF1, 0x70, 0xC2, 0x80, 0x18, 0xAA, 0x12, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, 0xA2, 0xF5, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0xA2, 0xF5, 0x7A, 0xA0, 0x7F, 0x6E, 0x74, 0x35, 0x11, 0xE5, 0xA2, 0xF4, 0x5A, 0xA4, 0xCC, 0xEA, 0x1E, 0x2A, 0x7F, 0x4B, 0x27, 0x4B, 0x74, 0x33, 0x0D, 0xE3, 0xA4, 0x67, 0x82, 0xA3, 0xC2, 0xF4, 0x03, 0x4D, -0x80, 0x18, 0xB1, 0x14, 0xA2, 0xF5, 0x9A, 0xA0, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF6, 0x68, 0x9B, +0x80, 0x18, 0x85, 0x14, 0xA2, 0xF5, 0x9A, 0xA0, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x70, 0x9B, 0x94, 0x34, 0x09, 0xE4, 0xC2, 0xF4, 0xA0, 0xA2, 0x91, 0xE0, 0xA0, 0xC3, 0xC2, 0xF4, 0x61, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x54, 0x9A, 0x60, 0xC2, 0x32, 0x10, 0x01, 0x72, 0x34, 0x61, 0xA2, 0xF4, 0x5B, 0xA4, 0xFF, 0x72, 0x0E, 0x61, 0xA2, 0xF4, 0x9C, 0xA4, 0xB5, 0xE0, 0xA2, 0xF4, -0x1A, 0x4D, 0x80, 0x18, 0x2F, 0x14, 0xA2, 0xF5, +0x1A, 0x4D, 0x80, 0x18, 0x03, 0x14, 0xA2, 0xF5, 0x7A, 0xA0, 0x7F, 0x4B, 0x27, 0x4B, 0x74, 0x33, 0x01, 0xE3, 0x06, 0x10, 0x7F, 0x4B, 0x27, 0x4B, 0x74, 0x33, 0x01, 0x6A, 0x01, 0xE3, 0x4B, 0xEA, -0x42, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0xA2, 0xF5, 0x9A, 0xA2, 0x30, 0xF0, -0x20, 0x6D, 0x62, 0xF6, 0xA8, 0x9D, 0x94, 0x34, +0x42, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0xA2, 0xF5, 0x9A, 0xA2, 0x30, 0xF0, +0x20, 0x6D, 0x42, 0xF6, 0xB0, 0x9D, 0x94, 0x34, 0x4D, 0xE4, 0xC2, 0xF4, 0xC0, 0xA3, 0x91, 0xE2, 0xC0, 0xC5, 0xC2, 0xF4, 0xA1, 0xA3, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF6, 0x6C, 0x9B, 0xA0, 0xC3, -0xA2, 0xF4, 0x1A, 0x4C, 0x80, 0x18, 0xC6, 0x13, +0x20, 0x6B, 0x42, 0xF6, 0x74, 0x9B, 0xA0, 0xC3, +0xA2, 0xF4, 0x1A, 0x4C, 0x80, 0x18, 0x9A, 0x13, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, 0xA2, 0xF5, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0xA2, 0xF5, 0x7A, 0xA0, 0xA2, 0xF5, 0x5B, 0xA0, 0x6E, 0xEA, 0x42, 0x22, 0x20, 0xF6, 0x52, 0xA8, 0x09, 0xF6, 0x00, 0x72, 0x10, 0x60, 0x20, 0xF6, 0x92, 0xA0, @@ -47839,50 +48359,50 @@ u8 array_mp_8822c_fw_spic[] = { 0x09, 0x25, 0x09, 0xF7, 0x01, 0x72, 0x06, 0x60, 0x09, 0xF7, 0x00, 0x72, 0x03, 0x60, 0xFF, 0x4C, 0x8E, 0xEB, 0x0D, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0xA0, 0xF0, 0x44, 0x9B, +0x83, 0xF5, 0x00, 0x4B, 0xA0, 0xF0, 0x44, 0x9B, 0x04, 0x6C, 0x8D, 0xEA, 0x02, 0x6C, 0x8D, 0xEA, 0xA0, 0xF0, 0x44, 0xDB, 0x20, 0x10, 0x80, 0x18, -0xEE, 0x14, 0xA2, 0xF5, 0x5A, 0xA0, 0x01, 0x4A, +0xC2, 0x14, 0xA2, 0xF5, 0x5A, 0xA0, 0x01, 0x4A, 0xA2, 0xF5, 0x5A, 0xC0, 0xA2, 0xF5, 0x7A, 0xA0, 0xA2, 0xF5, 0x5B, 0xA0, 0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, 0x02, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0xA2, 0xF5, 0x7A, 0xA2, +0x83, 0xF5, 0x00, 0x4A, 0xA2, 0xF5, 0x7A, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, 0xA2, 0xF5, -0x7A, 0xC2, 0x80, 0x18, 0x62, 0x12, 0x05, 0x97, +0x7A, 0xC2, 0x80, 0x18, 0x36, 0x12, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF6, 0x70, 0x9B, 0x30, 0xF0, 0x20, 0x68, -0x62, 0xF6, 0x14, 0x98, 0xE0, 0x9B, 0xFF, 0x6A, +0x42, 0xF6, 0x78, 0x9B, 0x30, 0xF0, 0x20, 0x68, +0x42, 0xF6, 0x1C, 0x98, 0xE0, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0xEF, 0x08, 0x5C, 0x4C, 0xED, 0x4C, 0xEE, 0xE0, 0xDB, 0x46, 0x60, 0xB0, 0x75, 0x2E, 0x61, 0xB2, 0x76, 0x13, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0xB8, 0x9A, 0x01, 0x6A, +0x20, 0x6A, 0x62, 0xF6, 0xA0, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, 0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, 0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, 0xCC, 0xEC, 0x80, 0xDD, 0x80, 0x9B, 0x4E, 0x10, 0xB1, 0x76, 0x80, 0xF0, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0xB8, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, +0xA0, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, 0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, 0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, 0xCC, 0xEC, 0x80, 0xDD, 0x80, 0x9B, 0x4F, 0xEA, 0x8C, 0xEA, 0x40, 0xDB, 0x7B, 0x10, 0xA0, 0x75, 0x7D, 0x61, 0xA1, 0x76, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x58, 0x9A, 0x01, 0x6B, +0x20, 0x6A, 0x62, 0xF6, 0x40, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, 0x51, 0x10, 0xA2, 0x76, 0x6F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x58, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, +0x40, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, 0x5A, 0x10, 0xE8, 0x44, 0x4C, 0xEF, 0x08, 0x5F, 0xE0, 0x6A, 0x65, 0x60, 0xB0, 0x75, 0x35, 0x61, 0xB2, 0x76, 0x18, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF6, 0x5C, 0x9A, 0x01, 0x6E, 0xA6, 0x67, +0x62, 0xF6, 0x44, 0x9A, 0x01, 0x6E, 0xA6, 0x67, 0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, 0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, 0xE0, 0x37, 0xE0, 0x37, 0xEF, 0xEF, 0xAC, 0xEF, 0xE0, 0xDA, 0x40, 0x9B, 0xC4, 0xEC, 0x86, 0x67, 0x4D, 0xEC, 0x19, 0x10, 0xB1, 0x76, 0x44, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x44, 0x9A, 0x01, 0x6E, 0xA6, 0x67, 0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, 0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, 0xE0, 0x37, 0xE0, 0x37, @@ -47890,11 +48410,11 @@ u8 array_mp_8822c_fw_spic[] = { 0xC4, 0xEC, 0xCF, 0xEC, 0x4C, 0xEC, 0x80, 0xDB, 0x29, 0x10, 0xA0, 0x75, 0x2B, 0x61, 0xA1, 0x76, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, -0x5C, 0x9A, 0x01, 0x6B, 0x64, 0xEF, 0xA0, 0x9A, +0x44, 0x9A, 0x01, 0x6B, 0x64, 0xEF, 0xA0, 0x9A, 0x00, 0xF6, 0x60, 0x34, 0x8F, 0xEC, 0xAC, 0xEC, 0x80, 0xDA, 0x80, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x8D, 0xEB, 0x13, 0x10, 0xA2, 0x76, 0x14, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x44, 0x9A, 0x01, 0x6B, 0x64, 0xEF, 0xA0, 0x9A, 0x00, 0xF6, 0x60, 0x34, 0x8F, 0xEC, 0xAC, 0xEC, 0x80, 0xDA, 0x80, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x6F, 0xEB, @@ -47902,73 +48422,73 @@ u8 array_mp_8822c_fw_spic[] = { 0xE2, 0x6A, 0x01, 0x10, 0xE1, 0x6A, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0xFF, 0x63, 0x18, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x40, 0x9A, 0x01, 0x6D, +0x20, 0x6A, 0x62, 0xF6, 0x48, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, -0x37, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x44, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, +0x37, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x4C, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x30, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF6, 0x58, 0x9A, 0x1C, 0x10, 0xF8, 0x4C, +0x62, 0xF6, 0x40, 0x9A, 0x1C, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x27, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x50, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x1A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x4C, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, +0x62, 0xF6, 0x54, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x13, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF6, 0x5C, 0x9A, 0x40, 0xA2, +0x20, 0x6A, 0x62, 0xF6, 0x44, 0x9A, 0x40, 0xA2, 0xA4, 0xEC, 0x85, 0x67, 0x6C, 0xEC, 0x4C, 0xEC, 0x5D, 0x67, 0x80, 0xC2, 0x40, 0xA2, 0x4C, 0xEB, 0x6B, 0xEA, 0xC0, 0xF7, 0x42, 0x32, 0x03, 0x10, 0xE4, 0x6A, 0x01, 0x10, 0xE6, 0x6A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x6C, 0xED, 0x20, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x40, 0x9A, 0x01, 0x6E, +0x20, 0x6A, 0x62, 0xF6, 0x48, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, -0x48, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x44, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0x40, 0xA2, +0x48, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x4C, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0x40, 0xA2, 0x6C, 0xEA, 0xCC, 0xEA, 0xCE, 0xEA, 0x3B, 0x2A, -0x05, 0x25, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0xB0, 0x9A, 0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x50, 0x9A, 0x29, 0x10, 0xF8, 0x4C, +0x05, 0x25, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0xB8, 0x9A, 0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF6, 0x58, 0x9A, 0x29, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x2E, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x50, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x23, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x4C, 0x9A, 0xC4, 0xEC, 0x86, 0x67, +0x62, 0xF6, 0x54, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0x40, 0xA2, 0x6C, 0xEA, 0xCC, 0xEA, 0xCE, 0xEA, 0x16, 0x2A, 0x0A, 0x25, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0xB4, 0x9A, 0x40, 0xA5, 0x6C, 0xEA, +0x62, 0xF6, 0xBC, 0x9A, 0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC5, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x5C, 0x9A, 0xA0, 0xA2, 0x8F, 0xEC, 0x6C, 0xEC, 0xAC, 0xEC, 0x80, 0xC2, 0xF0, 0x6A, 0x20, 0xE8, 0xE5, 0x6A, 0x20, 0xE8, 0xE4, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x0F, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x48, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x1F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x44, 0x9A, 0x13, 0x10, 0xF8, 0x4C, +0x62, 0xF6, 0x4C, 0x9A, 0x13, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x16, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x50, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x4C, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, +0x62, 0xF6, 0x54, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, 0x67, 0xEC, 0x45, 0x67, 0x6E, 0xEA, 0xAC, 0xEA, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x1A, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x48, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x35, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF6, 0x44, 0x9A, 0xC4, 0xEC, 0x86, 0x67, +0x62, 0xF6, 0x4C, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0xA0, 0xA2, 0x6C, 0xED, 0xCC, 0xED, 0xCE, 0xED, -0x2A, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x50, 0x9A, 0x1E, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, +0x2A, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x58, 0x9A, 0x1E, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x21, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x48, 0x9A, 0x01, 0x6E, +0x20, 0x6A, 0x62, 0xF6, 0x50, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, -0x16, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, -0x4C, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0xA0, 0xA2, +0x16, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0x54, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0xA0, 0xA2, 0x6C, 0xED, 0xCC, 0xED, 0xCE, 0xED, 0x0B, 0x2D, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x5C, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, 0x8C, 0xEB, 0x6E, 0xEC, 0x01, 0x5C, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, @@ -47979,92 +48499,92 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x04, 0x67, 0x2C, 0xE8, 0x90, 0x67, -0xA0, 0x6D, 0xA2, 0x6E, 0x80, 0x18, 0x4C, 0x15, -0x90, 0x67, 0x80, 0x18, 0xAF, 0x15, 0x7D, 0x67, +0xA0, 0x6D, 0xA2, 0x6E, 0x80, 0x18, 0x20, 0x15, +0x90, 0x67, 0x80, 0x18, 0x83, 0x15, 0x7D, 0x67, 0x50, 0xC3, 0x50, 0xA3, 0x09, 0x97, 0x07, 0x90, 0x2C, 0xEA, 0x08, 0x91, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0x91, 0x67, 0xAC, 0xE8, 0xA1, 0x6E, 0xA0, 0x6D, 0x80, 0x18, -0x4C, 0x15, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, -0xD5, 0x15, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x20, 0x15, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, +0xA9, 0x15, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x70, 0x9A, -0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF6, 0xB4, 0x9D, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6D, 0x42, 0xF6, 0xBC, 0x9D, 0x40, 0x9B, 0xA2, 0x6E, 0xAC, 0xEA, 0x40, 0xDB, 0xFF, 0x6A, 0x4C, 0xEC, 0xA0, 0x6D, 0x80, 0x18, -0x4C, 0x15, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x20, 0x15, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0xB0, 0x6D, 0xB2, 0x6E, 0x80, 0x18, 0x4C, 0x15, +0xB0, 0x6D, 0xB2, 0x6E, 0x80, 0x18, 0x20, 0x15, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0xB0, 0x6D, 0xB1, 0x6E, 0x80, 0x18, 0x4C, 0x15, +0xB0, 0x6D, 0xB1, 0x6E, 0x80, 0x18, 0x20, 0x15, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, 0xA4, 0x72, -0x0C, 0x61, 0x90, 0x67, 0x80, 0x18, 0x02, 0x16, +0x0C, 0x61, 0x90, 0x67, 0x80, 0x18, 0xD6, 0x15, 0x01, 0x72, 0x04, 0x61, 0x90, 0x67, 0x80, 0x18, -0x5F, 0x16, 0x1F, 0x10, 0x90, 0x67, 0x00, 0x6D, +0x33, 0x16, 0x1F, 0x10, 0x90, 0x67, 0x00, 0x6D, 0x0D, 0x10, 0xA5, 0x72, 0x11, 0x61, 0x90, 0x67, -0x80, 0x18, 0x02, 0x16, 0x01, 0x72, 0x04, 0x61, -0x90, 0x67, 0x80, 0x18, 0x5F, 0x16, 0x18, 0x10, -0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x54, 0x16, -0x90, 0x67, 0x80, 0x18, 0x5F, 0x16, 0x14, 0x10, -0x90, 0x67, 0x80, 0x18, 0x1A, 0x16, 0x01, 0x72, +0x80, 0x18, 0xD6, 0x15, 0x01, 0x72, 0x04, 0x61, +0x90, 0x67, 0x80, 0x18, 0x33, 0x16, 0x18, 0x10, +0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x28, 0x16, +0x90, 0x67, 0x80, 0x18, 0x33, 0x16, 0x14, 0x10, +0x90, 0x67, 0x80, 0x18, 0xEE, 0x15, 0x01, 0x72, 0x07, 0x61, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, -0x54, 0x16, 0x90, 0x67, 0x00, 0x6D, 0x06, 0x10, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x54, 0x16, -0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x54, 0x16, +0x28, 0x16, 0x90, 0x67, 0x00, 0x6D, 0x06, 0x10, +0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x28, 0x16, +0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x28, 0x16, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xEE, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x06, 0xF1, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x06, 0xF1, 0x6A, 0xA2, 0xFF, 0xF7, 0x1F, 0x69, 0x04, 0xD4, 0xAC, 0xE9, 0x05, 0xD6, 0x0B, 0x23, 0x06, 0xF1, 0x6B, 0xA2, 0x04, 0x23, 0x06, 0xF1, 0x88, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0x06, 0xF1, 0x88, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0x06, 0xF1, 0x88, 0xA2, -0xA3, 0x6D, 0x30, 0xF0, 0x20, 0x68, 0x63, 0xF5, -0x18, 0x48, 0x80, 0x18, 0x76, 0x16, 0x06, 0xF1, +0xA3, 0x6D, 0x30, 0xF0, 0x20, 0x68, 0x83, 0xF5, +0x00, 0x48, 0x80, 0x18, 0x4A, 0x16, 0x06, 0xF1, 0x4C, 0xA0, 0x7D, 0x22, 0x04, 0x94, 0xB1, 0x67, -0x80, 0x18, 0x3D, 0x16, 0x06, 0xF1, 0x4A, 0xA0, +0x80, 0x18, 0x11, 0x16, 0x06, 0xF1, 0x4A, 0xA0, 0x0B, 0x22, 0x06, 0xF1, 0x4B, 0xA0, 0x04, 0x22, 0x06, 0xF1, 0x88, 0xA0, 0xA5, 0x6D, 0x07, 0x10, 0x06, 0xF1, 0x88, 0xA0, 0xA4, 0x6D, 0x03, 0x10, 0x06, 0xF1, 0x88, 0xA0, 0xA3, 0x6D, 0x80, 0x18, -0x76, 0x16, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, -0x45, 0xA2, 0x01, 0x68, 0x5D, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x58, 0x9A, 0x60, 0xA2, +0x4A, 0x16, 0x30, 0xF0, 0x20, 0x6A, 0x89, 0xF6, +0x4D, 0xA2, 0x01, 0x68, 0x5D, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF6, 0x40, 0x9A, 0x60, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0x58, 0x2A, 0x04, 0x94, -0xB1, 0x67, 0x80, 0x18, 0x3D, 0x16, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x06, 0xF1, +0xB1, 0x67, 0x80, 0x18, 0x11, 0x16, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x06, 0xF1, 0x6A, 0xA2, 0x0B, 0x23, 0x06, 0xF1, 0x6B, 0xA2, 0x04, 0x23, 0x06, 0xF1, 0x88, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0x06, 0xF1, 0x88, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0x06, 0xF1, 0x88, 0xA2, 0xA3, 0x6D, -0x80, 0x18, 0x76, 0x16, 0xDC, 0x17, 0x04, 0x94, -0xB1, 0x67, 0x80, 0x18, 0x3D, 0x16, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x06, 0xF1, +0x80, 0x18, 0x4A, 0x16, 0xDC, 0x17, 0x04, 0x94, +0xB1, 0x67, 0x80, 0x18, 0x11, 0x16, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x06, 0xF1, 0x6A, 0xA2, 0x0B, 0x23, 0x06, 0xF1, 0x6B, 0xA2, 0x04, 0x23, 0x06, 0xF1, 0x88, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0x06, 0xF1, 0x88, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0x06, 0xF1, 0x88, 0xA2, 0xA3, 0x6D, -0x80, 0x18, 0x76, 0x16, 0x04, 0x94, 0xB1, 0x67, -0x80, 0x18, 0x3D, 0x16, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x06, 0xF1, 0x6A, 0xA2, +0x80, 0x18, 0x4A, 0x16, 0x04, 0x94, 0xB1, 0x67, +0x80, 0x18, 0x11, 0x16, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF5, 0x00, 0x4A, 0x06, 0xF1, 0x6A, 0xA2, 0x0B, 0x23, 0x06, 0xF1, 0x6B, 0xA2, 0x04, 0x23, 0x06, 0xF1, 0x88, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0x06, 0xF1, 0x88, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0x06, 0xF1, 0x88, 0xA2, 0xA3, 0x6D, 0x80, 0x18, -0x76, 0x16, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x4A, 0x16, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x43, 0xE8, 0xC4, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x89, 0xF6, 0x00, 0x4C, 0x00, 0x6D, 0x06, 0x6E, +0x89, 0xF6, 0x08, 0x4C, 0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x60, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x78, 0x9B, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x69, 0xE2, 0x00, 0x9A, 0x41, 0x45, 0x25, 0x67, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, @@ -48073,39 +48593,39 @@ u8 array_mp_8822c_fw_spic[] = { 0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, 0x41, 0x45, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, -0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x40, 0x9A, 0x41, 0xE0, 0xC0, 0xD8, 0x1A, 0x10, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x58, 0x9A, 0x41, 0xE0, 0xC0, 0xD8, 0x1A, 0x10, 0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x80, 0x18, -0xF4, 0x16, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC8, 0x16, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, 0x40, 0xEA, 0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, 0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, 0x6C, 0xE9, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF3, 0x60, 0x9B, 0x2D, 0xEA, +0x20, 0x6B, 0xE2, 0xF2, 0x78, 0x9B, 0x2D, 0xEA, 0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x01, 0x74, 0x0D, 0x60, 0x06, 0x24, 0x02, 0x74, 0x10, 0x60, 0x03, 0x74, 0x00, 0x6A, 0x1C, 0x61, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA8, 0x35, -0x02, 0xF7, 0x44, 0x9A, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA8, 0x35, 0x02, 0xF7, 0x48, 0x9A, -0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, -0x4C, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, -0x50, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0xE2, 0xF6, 0x4C, 0x9A, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA8, 0x35, 0xE2, 0xF6, 0x50, 0x9A, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, +0x54, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, +0x58, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF7, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF7, 0x10, 0x4A, 0x88, 0x34, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF3, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0xA0, 0x35, 0xCC, 0xEB, 0x30, 0xF0, -0x20, 0x6E, 0x62, 0xF5, 0xCC, 0x9E, 0xC0, 0xF3, +0x20, 0x6E, 0x42, 0xF5, 0xD4, 0x9E, 0xC0, 0xF3, 0x44, 0x9A, 0x80, 0xAC, 0xAD, 0xEB, 0x01, 0x6D, 0xAB, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6B, 0x8C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, 0x81, 0x46, 0x06, 0x67, 0xAC, 0xEA, 0x06, 0x2C, 0x83, 0x67, 0xA2, 0x67, -0x80, 0x18, 0x1C, 0x17, 0x02, 0x67, 0x0D, 0x10, -0x83, 0x67, 0xA2, 0x67, 0x80, 0x18, 0x1C, 0x17, +0x80, 0x18, 0xF0, 0x16, 0x02, 0x67, 0x0D, 0x10, +0x83, 0x67, 0xA2, 0x67, 0x80, 0x18, 0xF0, 0x16, 0x22, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x90, 0x67, 0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, 0x06, 0x91, @@ -48115,20 +48635,20 @@ u8 array_mp_8822c_fw_spic[] = { 0x01, 0x4A, 0x0C, 0xD6, 0x0D, 0xD7, 0x8C, 0xE8, 0xAC, 0xE9, 0x04, 0x2A, 0x90, 0x67, 0xB1, 0x67, 0xC7, 0x67, 0x15, 0x10, 0xB1, 0x67, 0x90, 0x67, -0x80, 0x18, 0x1C, 0x17, 0x04, 0xD2, 0x30, 0xF0, +0x80, 0x18, 0xF0, 0x16, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x94, 0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x0D, 0x96, 0x90, 0x67, 0xB1, 0x67, 0xC4, 0xEA, 0x0C, 0x92, 0x4C, 0xEE, 0x4F, 0xEB, 0x04, 0x92, 0x4C, 0xEB, 0x6D, 0xEE, 0x80, 0x18, -0x2F, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x03, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x25, 0x67, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF2, 0x7C, 0x9B, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x60, 0x9B, +0x20, 0x6B, 0xE2, 0xF2, 0x74, 0x9B, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x78, 0x9B, 0x69, 0xE2, 0x00, 0x9A, 0x41, 0x41, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, 0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, @@ -48138,25 +48658,25 @@ u8 array_mp_8822c_fw_spic[] = { 0x41, 0x45, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, 0x16, 0x2A, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x54, 0x9A, 0x41, 0xE0, 0x0C, 0x92, 0x3A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF3, 0x40, 0x9A, 0x0C, 0x93, +0x20, 0x6A, 0xE2, 0xF2, 0x58, 0x9A, 0x0C, 0x93, 0x41, 0xE0, 0x60, 0xD8, 0x33, 0x10, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF2, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF3, 0x40, 0x9A, 0x49, 0xE0, +0xE2, 0xF2, 0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF2, 0x58, 0x9A, 0x49, 0xE0, 0x40, 0x9A, 0x91, 0x67, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, 0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, 0x6C, 0xE9, 0x1F, 0xF7, 0x00, 0x6B, 0x0C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x2D, 0xEA, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF2, 0x7C, 0x9B, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x60, 0x9B, +0x20, 0x6B, 0xE2, 0xF2, 0x74, 0x9B, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x78, 0x9B, 0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x03, 0xF0, 0x08, 0x6B, 0xC3, 0xF1, 0x70, 0xDA, 0x05, 0xF1, 0x00, 0x4B, 0xC3, 0xF1, 0x74, 0xDA, 0x02, 0xF1, 0x00, 0x4B, 0xC3, 0xF1, 0x78, 0xDA, @@ -48182,35 +48702,35 @@ u8 array_mp_8822c_fw_spic[] = { 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, -0x05, 0x96, 0xE2, 0xF3, 0xF4, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xCA, 0xF4, 0x18, 0x4C, 0x80, 0x18, +0x05, 0x96, 0xE2, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xEA, 0xF4, 0x00, 0x4C, 0x80, 0x18, 0x3E, 0x45, 0x0C, 0x93, 0x6C, 0xEA, 0x0D, 0x93, 0x6E, 0xEA, 0x03, 0x22, 0x40, 0xA8, 0x23, 0xEA, 0xE3, 0x61, 0x40, 0xA8, 0x09, 0x97, 0x07, 0x90, 0x23, 0xEA, 0x08, 0x91, 0x58, 0x67, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x68, 0x9A, 0x7F, 0x6A, 0xFD, 0x67, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0x44, 0x9A, 0xD2, 0xA7, 0x02, 0x6B, 0xA0, 0xA2, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, +0x4C, 0x9A, 0xD2, 0xA7, 0x02, 0x6B, 0xA0, 0xA2, 0x01, 0x6C, 0x6B, 0xEB, 0x8C, 0xED, 0xCC, 0xEB, 0xAD, 0xEB, 0x72, 0xC7, 0x02, 0x6B, 0x70, 0xC7, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x68, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF7, 0x70, 0x9B, 0x8F, 0xCF, 0xFF, 0x6A, 0x80, 0xAB, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF6, 0xCC, 0x9B, 0x4C, 0xEC, +0x20, 0x6B, 0x02, 0xF6, 0xD4, 0x9B, 0x4C, 0xEC, 0x94, 0x34, 0xD1, 0xE4, 0x60, 0xA4, 0x40, 0x6D, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, 0x6C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF7, 0x74, 0x9B, 0x80, 0xAB, 0x4C, 0xEC, 0x94, 0x34, 0xD1, 0xE4, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x8C, 0xEA, -0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, -0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF3, -0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x0A, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x68, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF7, 0x88, 0x9C, +0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, +0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF3, +0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF7, 0x90, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x6B, 0x8C, 0xEB, 0x4C, 0xED, 0x8E, 0x34, 0x42, 0xF4, 0x10, 0x4C, @@ -48218,33 +48738,33 @@ u8 array_mp_8822c_fw_spic[] = { 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x21, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, 0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF2, 0xBC, 0x9A, 0xB5, 0xE4, +0x20, 0x6A, 0xE2, 0xF2, 0xB4, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF2, 0xBC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF3, 0x40, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, +0xE2, 0xF2, 0xB4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF2, 0x58, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, 0x80, 0xA4, 0x00, 0xF6, 0x80, 0x34, 0x01, 0x6A, 0x00, 0xF6, 0x83, 0x34, 0x44, 0xEB, 0x8D, 0xEA, -0x36, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x02, 0xF3, -0xA0, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, +0x36, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0xE2, 0xF2, +0xB8, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, 0xA0, 0xA4, 0x00, 0xF6, 0xA0, 0x35, 0x00, 0xF6, 0xA3, 0x35, 0xCD, 0xED, 0x3A, 0x10, 0x1F, 0xF7, 0x00, 0x6D, 0x8C, 0xED, 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x25, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, 0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, -0xBC, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0xBC, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, 0x40, 0x9A, +0xB4, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0xB4, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x58, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, 0x80, 0xA4, 0x01, 0x6A, 0x00, 0xF6, 0x80, 0x34, 0x44, 0xEB, 0x00, 0xF6, 0x83, 0x34, 0x4F, 0xEA, 0x8C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6D, 0x02, 0xF3, 0xA0, 0x9D, 0x01, 0x6E, +0x20, 0x6D, 0xE2, 0xF2, 0xB8, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, 0xA0, 0xA4, 0xCF, 0xEE, 0x00, 0xF6, 0xA0, 0x35, 0x00, 0xF6, 0xA3, 0x35, 0xCC, 0xED, 0x4C, 0xED, 0xA0, 0xC4, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x6C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x64, 0x9B, 0xFF, 0x6A, 0x25, 0x67, 0x60, 0xA3, 0xFF, 0xF7, 0x1F, 0x68, 0x4C, 0xE9, 0x6C, 0xEA, 0x8C, 0xE8, 0x04, 0xD2, 0x00, 0x18, 0xAF, 0xC6, 0x0F, 0x2A, @@ -48254,7 +48774,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xEA, 0x01, 0x72, 0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x54, 0x9A, 0x90, 0x67, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0x6F, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF7, 0x74, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, 0x7C, 0x9A, 0xFF, 0x6C, 0x08, 0x6D, 0x40, 0xA3, 0x4A, 0x6E, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, 0xA0, 0xF2, @@ -53317,6 +53837,28 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x06, 0xD4, 0x09, 0xD7, 0x07, 0xD5, 0x08, 0xD6, 0x06, 0x04, 0x40, 0xEA, @@ -53326,23 +53868,23 @@ u8 array_mp_8822c_fw_spic[] = { 0x27, 0x67, 0x1F, 0x22, 0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, -0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF3, 0x40, 0x9A, 0x49, 0xE0, 0x40, 0x9A, +0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF2, 0x58, 0x9A, 0x49, 0xE0, 0x40, 0x9A, 0x0C, 0x94, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x0C, 0x93, 0x24, 0xEA, 0x6F, 0xEA, 0x04, 0x93, 0x6C, 0xEA, 0x4D, 0xE9, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x40, 0x9A, 0x41, 0xE0, 0x20, 0xD8, 0x09, 0x97, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x54, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x58, 0x9A, 0x41, 0xE0, 0x20, 0xD8, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x26, 0x67, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x40, 0x9A, 0x55, 0xE5, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x54, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x58, 0x9A, 0x55, 0xE5, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0x9D, 0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, 0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, @@ -53358,60 +53900,60 @@ u8 array_mp_8822c_fw_spic[] = { 0xE4, 0xC6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0xD2, 0x04, 0x95, -0x30, 0xF0, 0x20, 0x69, 0x63, 0xF5, 0x18, 0x49, +0x30, 0xF0, 0x20, 0x69, 0x83, 0xF5, 0x00, 0x49, 0xA8, 0x34, 0x31, 0xE4, 0x05, 0xD4, 0x05, 0x90, -0xC1, 0xF6, 0x14, 0x4A, 0x48, 0x32, 0x29, 0xE2, -0x47, 0xF3, 0xD2, 0xA0, 0x60, 0xA2, 0x01, 0x6A, +0xC1, 0xF6, 0x16, 0x4A, 0x48, 0x32, 0x29, 0xE2, +0x47, 0xF3, 0xDA, 0xA0, 0x60, 0xA2, 0x01, 0x6A, 0x4C, 0xEE, 0x4C, 0xEB, 0xC4, 0x36, 0x47, 0xF3, -0xF1, 0xA4, 0xD9, 0xE3, 0x47, 0xF3, 0x73, 0xA0, +0xF9, 0xA4, 0xD9, 0xE3, 0x47, 0xF3, 0x7B, 0xA0, 0x4C, 0xEF, 0xF0, 0x37, 0x4C, 0xEB, 0x74, 0x33, 0x6D, 0xE7, 0x07, 0xD3, 0x04, 0x93, 0x85, 0x67, -0xA3, 0xF5, 0x10, 0x4C, 0x64, 0x32, 0x29, 0xE2, -0x84, 0x34, 0x31, 0xE4, 0x67, 0xF3, 0x45, 0xA2, +0xA3, 0xF5, 0x14, 0x4C, 0x64, 0x32, 0x29, 0xE2, +0x84, 0x34, 0x31, 0xE4, 0x67, 0xF3, 0x4D, 0xA2, 0xA4, 0xA4, 0x03, 0x6C, 0x8C, 0xEA, 0x8C, 0xED, 0x40, 0x32, 0xA0, 0x35, 0x48, 0x32, 0x49, 0xE5, 0x30, 0xF0, 0x20, 0x68, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xD6, 0xC0, 0xF3, 0x64, 0x98, -0xE2, 0xF3, 0xCC, 0x9A, 0x01, 0x6D, 0xE3, 0xF2, +0xE2, 0xF3, 0xC4, 0x9A, 0x01, 0x6D, 0xE3, 0xF2, 0x1D, 0x4C, 0xAB, 0xED, 0x40, 0xEB, 0x08, 0x94, 0x07, 0x96, 0x06, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x8D, 0xEE, 0x6D, 0xEE, 0xE3, 0xF3, 0x10, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0xEA, 0x04, 0x92, -0x05, 0x94, 0x01, 0x6D, 0xC1, 0xF6, 0x1A, 0x4A, -0x67, 0xF3, 0xCA, 0xAC, 0x48, 0x32, 0x29, 0xE2, +0x05, 0x94, 0x01, 0x6D, 0xC1, 0xF6, 0x1C, 0x4A, +0x67, 0xF3, 0xD2, 0xAC, 0x48, 0x32, 0x29, 0xE2, 0x60, 0xAA, 0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x36, 0x6D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x04, 0x92, 0x05, 0x95, -0xE3, 0xF3, 0x0C, 0x6C, 0xC1, 0xF6, 0x1B, 0x4A, -0x67, 0xF3, 0xCE, 0xAD, 0x48, 0x32, 0x29, 0xE2, +0xE3, 0xF3, 0x0C, 0x6C, 0xC1, 0xF6, 0x1D, 0x4A, +0x67, 0xF3, 0xD6, 0xAD, 0x48, 0x32, 0x29, 0xE2, 0x60, 0xAA, 0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xE7, 0xF5, 0xCC, 0xA1, 0xE2, 0xF3, -0xB0, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, +0x44, 0x98, 0xE7, 0xF5, 0xD4, 0xA1, 0xE2, 0xF3, +0xA8, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x00, 0x6B, 0x66, 0xF7, 0x7B, 0xC2, -0x30, 0xF0, 0x20, 0x6B, 0xEA, 0xF4, 0x13, 0x4B, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x00, 0x6B, 0x66, 0xF7, 0x7B, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0xEA, 0xF4, 0x1B, 0x4B, 0xA6, 0xF7, 0x68, 0xDA, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF4, 0x64, 0x9B, 0x54, 0x34, +0x20, 0x6B, 0x02, 0xF4, 0x7C, 0x9B, 0x54, 0x34, 0x20, 0x68, 0x71, 0xE4, 0xA0, 0xA4, 0xF8, 0x6B, 0x01, 0x4A, 0xAC, 0xEB, 0x4E, 0xE8, 0x60, 0xC4, 0xF2, 0x28, 0x80, 0x18, 0xDC, 0x40, 0x30, 0xF0, -0x20, 0x6A, 0x0A, 0xF5, 0x0A, 0xC2, 0x05, 0x97, +0x20, 0x6A, 0x0A, 0xF5, 0x12, 0xC2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x68, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x86, 0xF7, 0x64, 0xC2, 0x69, 0xA4, +0x68, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x86, 0xF7, 0x64, 0xC2, 0x69, 0xA4, 0x66, 0xF7, 0x79, 0xC2, 0x6A, 0xA4, 0x86, 0xF7, 0x63, 0xC2, 0xAB, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, 0x86, 0xF7, 0x6D, 0xC2, 0x6B, 0xA4, 0x72, 0x33, 0x86, 0xF7, 0x6A, 0xC2, 0x8E, 0xA4, 0x01, 0x6B, 0x8C, 0xEB, 0x66, 0xF7, 0x7B, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0xEA, 0xF4, 0x13, 0x4B, 0xA6, 0xF7, +0x20, 0x6B, 0xEA, 0xF4, 0x1B, 0x4B, 0xA6, 0xF7, 0x68, 0xDA, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x86, 0xF7, 0x64, 0xC2, 0x61, 0xA4, +0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x86, 0xF7, 0x64, 0xC2, 0x61, 0xA4, 0x66, 0xF7, 0x79, 0xC2, 0x62, 0xA4, 0x86, 0xF7, 0x63, 0xC2, 0xA3, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, 0x86, 0xF7, 0x6D, 0xC2, 0x63, 0xA4, 0x72, 0x33, @@ -53419,15 +53961,15 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x0E, 0x72, 0x03, 0x60, 0x11, 0x72, 0x05, 0x60, 0x08, 0x10, 0x85, 0x67, -0x80, 0x18, 0xF3, 0x11, 0x19, 0x10, 0x85, 0x67, +0x80, 0x18, 0xC7, 0x11, 0x19, 0x10, 0x85, 0x67, 0x80, 0x18, 0xA8, 0x40, 0x15, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF3, 0x68, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x22, 0xF4, 0x88, 0x9C, 0x40, 0x9B, +0x20, 0x6A, 0x22, 0xF3, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x22, 0xF4, 0x80, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, +0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0xFF, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x05, 0x6B, 0x66, 0xF7, 0x74, 0xDA, 0x09, 0x6B, 0x66, 0xF7, 0x70, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, @@ -53435,7 +53977,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, -0x28, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x20, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x09, 0x10, 0x30, 0xF0, @@ -53450,7 +53992,7 @@ u8 array_mp_8822c_fw_spic[] = { 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF4, 0x1C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0xF2, 0x17, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x74, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x6C, 0x9B, 0x46, 0x67, 0x8E, 0xEB, 0x12, 0x23, 0x00, 0x6E, 0x66, 0x67, 0xE4, 0x67, 0xE6, 0xEE, 0x01, 0x68, 0x0C, 0xEF, 0x07, 0x2F, 0x01, 0x4B, 0xFF, 0x6F, @@ -53462,7 +54004,7 @@ u8 array_mp_8822c_fw_spic[] = { 0xA8, 0x35, 0x5D, 0x67, 0xB5, 0xE2, 0x44, 0x9D, 0xFF, 0x6C, 0xCC, 0xEC, 0x88, 0x34, 0x51, 0xE4, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF3, 0xB4, 0x9B, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF3, 0xAC, 0x9B, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x96, 0xC0, 0xF3, 0x44, 0x9A, 0xEC, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, @@ -53472,89 +54014,89 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x01, 0x75, 0x33, 0x61, 0x01, 0x76, 0x17, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x34, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0xE2, 0xF3, 0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x42, 0xF5, 0xC8, 0x9B, 0x03, 0xF0, 0x00, 0x6C, +0x22, 0xF5, 0xD0, 0x9B, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x81, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, -0x34, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x42, 0xF5, 0xC8, 0x9B, 0xC0, 0xF3, +0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x22, 0xF5, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, -0x42, 0xF5, 0xCC, 0x9B, 0x67, 0x10, 0x02, 0x75, +0x22, 0xF5, 0xD4, 0x9B, 0x67, 0x10, 0x02, 0x75, 0x2C, 0x61, 0x01, 0x76, 0x10, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x34, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF3, 0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, -0x42, 0xF5, 0xCC, 0x9B, 0x2D, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x34, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x42, 0xF5, -0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x22, 0xF5, 0xD4, 0x9B, 0x2D, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF3, 0x2C, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x22, 0xF5, +0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, -0x00, 0x6C, 0xB1, 0x67, 0x42, 0xF5, 0xC8, 0x9B, +0x00, 0x6C, 0xB1, 0x67, 0x22, 0xF5, 0xD0, 0x9B, 0x39, 0x10, 0x03, 0x75, 0x38, 0x61, 0x01, 0x76, 0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, -0x34, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x42, 0xF5, -0xC8, 0x9B, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, +0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x22, 0xF5, +0xD0, 0x9B, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, -0x42, 0xF5, 0xD0, 0x9B, 0x1B, 0x10, 0x30, 0xF0, +0x22, 0xF5, 0xD8, 0x9B, 0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, -0x34, 0x9A, 0x42, 0xF5, 0x08, 0x4B, 0x30, 0xF0, +0x2C, 0x9A, 0x22, 0xF5, 0x10, 0x4B, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF5, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF5, 0x10, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x01, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x0E, 0x72, 0x51, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x42, 0xF5, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x68, 0x22, 0xF5, 0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x00, 0x6C, 0xA7, 0xF5, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF5, 0xD8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF5, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF2, 0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x08, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0xAD, 0xF2, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF5, -0x14, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF5, +0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x18, 0x6C, 0x75, 0xF2, 0x1B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x1C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0xDE, 0xF3, 0x17, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x42, 0xF5, 0xDC, 0x9B, 0xA3, 0xF2, +0x44, 0x98, 0x42, 0xF5, 0xC4, 0x9B, 0xA3, 0xF2, 0x0C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x10, 0x6C, 0xB1, 0x67, 0xFF, 0xF7, 0x1F, 0x6E, 0x55, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x42, 0xF5, -0x14, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x22, 0xF5, +0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x00, 0x6C, 0x8A, 0xF2, 0x04, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF5, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF5, +0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF2, 0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x08, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x81, 0xF2, 0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF5, 0x14, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x22, 0xF5, 0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x18, 0x6C, 0xD5, 0xF4, 0x04, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x1C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0xB9, 0xF0, 0x12, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF5, 0xC4, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x42, 0xF5, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x00, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF5, -0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF5, +0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x0C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x62, 0xF5, -0xCC, 0x9B, 0xA3, 0xF2, 0x10, 0x6C, 0xB1, 0x67, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x42, 0xF5, +0xD4, 0x9B, 0xA3, 0xF2, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, @@ -53624,33 +54166,33 @@ u8 array_mp_8822c_fw_spic[] = { 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x26, 0x67, 0x3B, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0x62, 0xF5, 0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x42, 0xF5, 0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, 0x04, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF5, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF5, 0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xD1, 0x67, 0x48, 0xF0, 0x04, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF3, 0x38, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0x62, 0xF3, 0x30, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF5, 0x1C, 0x6C, 0x62, 0xF5, -0xB4, 0x9B, 0x0F, 0x6E, 0x37, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x62, 0xF5, -0x30, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, +0x44, 0x98, 0x23, 0xF5, 0x1C, 0x6C, 0x42, 0xF5, +0xBC, 0x9B, 0x0F, 0x6E, 0x37, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x42, 0xF5, +0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x48, 0xF0, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF3, 0x38, 0x9A, 0xC0, 0xF3, +0x20, 0x6A, 0x62, 0xF3, 0x30, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x62, 0xF5, 0xB4, 0x9B, 0x23, 0xF5, +0x44, 0x98, 0x42, 0xF5, 0xBC, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, @@ -53658,11 +54200,11 @@ u8 array_mp_8822c_fw_spic[] = { 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x08, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, -0x1C, 0x6C, 0x62, 0xF5, 0xB4, 0x9B, 0x0F, 0x6E, +0x1C, 0x6C, 0x42, 0xF5, 0xBC, 0x9B, 0x0F, 0x6E, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x08, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x62, 0xF5, 0xB4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x42, 0xF5, 0xBC, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, @@ -53676,9 +54218,9 @@ u8 array_mp_8822c_fw_spic[] = { 0xFF, 0x6A, 0xAC, 0xEA, 0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x63, 0xF4, 0x04, 0x6C, 0x42, 0xF3, -0xB8, 0x9B, 0x01, 0x6E, 0x0B, 0x10, 0x30, 0xF0, +0xB0, 0x9B, 0x01, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9A, 0x42, 0xF3, 0xB8, 0x9B, 0x63, 0xF4, +0x44, 0x9A, 0x42, 0xF3, 0xB0, 0x9B, 0x63, 0xF4, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0xAC, 0xEA, 0x09, 0x22, 0x30, 0xF0, @@ -53695,95 +54237,110 @@ u8 array_mp_8822c_fw_spic[] = { 0x1B, 0xC9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF5, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0x62, 0xF5, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0x00, 0x6E, 0x23, 0xF4, 0x1C, 0x6C, 0x40, 0xEA, 0x01, 0x6D, 0xA5, 0xF5, 0x14, 0x6C, 0xAB, 0xED, -0x80, 0x18, 0xF4, 0x16, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF5, 0x7C, 0x9B, 0x05, 0x97, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF4, 0x48, 0x9A, +0x80, 0x18, 0xC8, 0x16, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF5, 0x64, 0x9B, 0x05, 0x97, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF4, 0x40, 0x9A, 0x4E, 0xEB, 0x01, 0x5B, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x83, 0xF2, 0x18, 0x68, 0x24, 0x67, 0x18, 0xF0, 0x00, 0x6D, 0x90, 0x67, -0x80, 0x18, 0xF4, 0x16, 0x05, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF5, 0xBC, 0x9A, 0xA3, 0xF2, -0x08, 0x6C, 0x80, 0x18, 0xF4, 0x16, 0x90, 0x67, -0xC0, 0x6D, 0x04, 0xD2, 0x80, 0x18, 0xF4, 0x16, +0x80, 0x18, 0xC8, 0x16, 0x05, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF5, 0xA4, 0x9A, 0xA3, 0xF2, +0x08, 0x6C, 0x80, 0x18, 0xC8, 0x16, 0x90, 0x67, +0xC0, 0x6D, 0x04, 0xD2, 0x80, 0x18, 0xC8, 0x16, 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF4, -0xB0, 0x9A, 0x63, 0xF2, 0x10, 0x6C, 0x80, 0x18, -0xF4, 0x16, 0x05, 0x93, 0x04, 0x95, 0xFF, 0x6C, +0xA8, 0x9A, 0x63, 0xF2, 0x10, 0x6C, 0x80, 0x18, +0xC8, 0x16, 0x05, 0x93, 0x04, 0x95, 0xFF, 0x6C, 0x8C, 0xEB, 0x8C, 0xE8, 0x70, 0x33, 0x10, 0x30, -0x4D, 0xE8, 0xAD, 0xEB, 0x60, 0xF0, 0x71, 0xC1, -0x60, 0xF0, 0x12, 0xC1, 0x09, 0x97, 0x08, 0x91, +0x4D, 0xE8, 0xAD, 0xEB, 0x60, 0xF0, 0x73, 0xC1, +0x60, 0xF0, 0x14, 0xC1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xED, -0x02, 0xF5, 0x1C, 0x4A, 0x04, 0xD5, 0xA0, 0x9A, +0x02, 0xF5, 0x04, 0x4A, 0x04, 0xD5, 0xA0, 0x9A, 0x21, 0xF0, 0x04, 0x69, 0x91, 0x67, 0x80, 0x18, -0xF4, 0x16, 0x04, 0x93, 0x41, 0x23, 0x4C, 0xE8, +0xC8, 0x16, 0x04, 0x93, 0x41, 0x23, 0x4C, 0xE8, 0x03, 0x70, 0x00, 0x6A, 0x7B, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x1C, 0x6C, 0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, 0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF5, 0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x02, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, -0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0xA0, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x02, 0xF2, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x82, 0xF5, 0xA4, 0x9B, 0x00, 0x6E, 0x3C, 0x10, +0x62, 0xF5, 0xAC, 0x9B, 0x00, 0x6E, 0x3C, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x1C, 0x6C, 0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, -0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF5, 0x1C, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0x02, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF4, 0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x02, 0xF4, 0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF5, +0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x82, 0xF5, 0xA4, 0x9B, 0x91, 0x67, 0x01, 0x6E, +0x62, 0xF5, 0xAC, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, 0x08, 0xD4, 0xCC, 0xEA, 0xC0, 0xF0, 0x1C, 0x25, 0x20, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x82, 0xF5, -0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x62, 0xF5, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x21, 0xF0, 0x13, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xAB, 0xED, -0x82, 0xF5, 0xCC, 0x9B, 0x90, 0x11, 0x08, 0x93, +0x62, 0xF5, 0xD4, 0x9B, 0x90, 0x11, 0x08, 0x93, 0x50, 0x9B, 0x40, 0xA2, 0x01, 0x72, 0x80, 0xF1, 0x0B, 0x61, 0x01, 0x69, 0x2B, 0xE9, 0xA1, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x80, 0x18, 0xF4, 0x16, +0x10, 0x6C, 0xB1, 0x67, 0x80, 0x18, 0xC8, 0x16, 0x08, 0x93, 0x30, 0xF0, 0x20, 0x68, 0x03, 0xF0, -0x00, 0x6C, 0x5D, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x82, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x00, 0x6C, 0x5E, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF5, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF3, 0xB8, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x42, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x18, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x04, 0xF2, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, -0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF5, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF5, 0xD8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF5, +0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF5, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, +0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF5, 0xC8, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, +0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, @@ -53792,50 +54349,50 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0x6B, 0x82, 0xF5, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF5, -0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF5, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, -0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF5, 0xC8, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, -0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF5, 0xD0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, -0x14, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, +0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0xA2, 0xF5, -0x14, 0x4B, 0xD4, 0x10, 0x20, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x82, 0xF5, -0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x82, 0xF5, +0x1C, 0x4B, 0xD4, 0x10, 0x20, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x62, 0xF5, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x20, 0xF3, 0x13, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xAB, 0xED, -0xA2, 0xF5, 0xD8, 0x9B, 0xB4, 0x10, 0x08, 0x93, +0xA2, 0xF5, 0xC0, 0x9B, 0xB4, 0x10, 0x08, 0x93, 0x50, 0x9B, 0x40, 0xA2, 0x01, 0x72, 0xA0, 0xF0, 0x0F, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x62, 0xF5, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x20, 0xF3, 0x13, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF3, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x42, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, -0xDD, 0x9B, 0x2B, 0xE9, 0xA1, 0xF1, 0x10, 0x6C, +0xDE, 0x9B, 0x2B, 0xE9, 0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0xA2, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, 0xC4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF5, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, 0xCC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF5, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, 0xD4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF5, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, @@ -53845,80 +54402,65 @@ u8 array_mp_8822c_fw_spic[] = { 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF5, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0xCC, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF5, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0xD4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF5, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0xDC, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF5, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xC2, 0xF5, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0xE2, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0x40, 0xEA, +0xC2, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0x67, -0x02, 0xF5, 0xBC, 0x9A, 0x21, 0xF0, 0x04, 0x6C, -0x80, 0x18, 0xF4, 0x16, 0x40, 0xC0, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF4, 0xB0, 0x9A, 0x03, 0xF2, -0x04, 0x6C, 0x80, 0x18, 0xF4, 0x16, 0x01, 0x72, +0x02, 0xF5, 0xA4, 0x9A, 0x21, 0xF0, 0x04, 0x6C, +0x80, 0x18, 0xC8, 0x16, 0x40, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF4, 0xA8, 0x9A, 0x03, 0xF2, +0x04, 0x6C, 0x80, 0x18, 0xC8, 0x16, 0x01, 0x72, 0x02, 0x61, 0x03, 0x6A, 0x06, 0x10, 0x02, 0x2A, 0x01, 0x6A, 0x03, 0x10, 0x05, 0x72, 0x02, 0x61, 0x02, 0x6A, 0x41, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x05, 0x67, 0x01, 0x6D, 0x21, 0xF0, -0x00, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0xF4, 0x16, +0x00, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0xC8, 0x16, 0xF0, 0x6B, 0x4C, 0xEB, 0x72, 0x33, 0x61, 0xC0, 0x0F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF5, 0xA4, 0x9A, 0x60, 0xC0, 0x03, 0xF2, -0x04, 0x6C, 0x80, 0x18, 0xF4, 0x16, 0x0C, 0x72, +0xC2, 0xF5, 0xAC, 0x9A, 0x60, 0xC0, 0x03, 0xF2, +0x04, 0x6C, 0x80, 0x18, 0xC8, 0x16, 0x0C, 0x72, 0x02, 0x61, 0x03, 0x6A, 0x09, 0x10, 0x08, 0x72, 0x02, 0x61, 0x01, 0x6A, 0x05, 0x10, 0x04, 0x72, 0x02, 0x61, 0x02, 0x6A, 0x01, 0x10, 0x01, 0x2A, 0x42, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, -0xB0, 0x9A, 0x23, 0xF6, 0x04, 0x6C, 0x80, 0x18, -0xF4, 0x16, 0x4F, 0xEA, 0x43, 0xC0, 0x01, 0x6A, +0xA8, 0x9A, 0x23, 0xF6, 0x04, 0x6C, 0x80, 0x18, +0xC8, 0x16, 0x4F, 0xEA, 0x43, 0xC0, 0x01, 0x6A, 0x44, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x02, 0x5D, 0x0D, 0xD5, 0x0F, 0xD7, 0xCC, 0xE9, 0x70, 0x60, 0x54, 0x59, 0x6E, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0xE2, 0xF5, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x68, 0xC2, 0xF5, 0x10, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE2, 0xF5, -0xAC, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0xD1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, -0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC2, 0xF5, +0xB4, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0xD1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, +0x10, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xE5, 0xF5, 0x08, 0x6C, 0xFF, 0x6D, 0x80, 0x18, -0xF4, 0x16, 0x00, 0xF6, 0x40, 0x30, 0x00, 0xF6, +0xC8, 0x16, 0x00, 0xF6, 0x40, 0x30, 0x00, 0xF6, 0x03, 0x30, 0x40, 0x6A, 0x0C, 0xEA, 0x03, 0x22, 0x80, 0x6A, 0x4B, 0xEA, 0x4D, 0xE8, 0x0F, 0x92, 0x0B, 0x72, 0x10, 0x61, 0x0D, 0x93, 0xA3, 0xF0, 0x00, 0x6A, 0x06, 0xD2, 0x05, 0xF1, 0x00, 0x4A, 0x07, 0xD2, 0x68, 0x32, 0x7D, 0x67, 0x49, 0xE3, -0x8C, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, -0xB0, 0x9A, 0x13, 0x10, 0x0F, 0x92, 0x00, 0x6B, +0x8C, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, +0xB8, 0x9A, 0x13, 0x10, 0x0F, 0x92, 0x00, 0x6B, 0x0C, 0x72, 0x13, 0x61, 0x0D, 0x93, 0xE3, 0xF0, 0x08, 0x6A, 0x04, 0xD2, 0x05, 0xF1, 0x00, 0x4A, 0x05, 0xD2, 0x68, 0x32, 0x7D, 0x67, 0x49, 0xE3, -0x88, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, -0xB4, 0x9A, 0x80, 0x18, 0xF4, 0x16, 0xFF, 0x6B, +0x88, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, +0xBC, 0x9A, 0x80, 0x18, 0xC8, 0x16, 0xFF, 0x6B, 0x4C, 0xEB, 0x0D, 0xE3, 0x00, 0x53, 0x00, 0x68, 0x02, 0x61, 0xFF, 0x68, 0x6C, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0xE2, 0xF5, 0xA8, 0x9B, 0x63, 0xF4, +0x44, 0x9A, 0xC2, 0xF5, 0xB0, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x01, 0x10, 0xFF, 0x68, 0x50, 0x67, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, @@ -53932,7 +54474,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x6F, 0xA4, 0x01, 0x6A, 0x37, 0x2B, 0x04, 0x92, 0x40, 0x5A, 0x00, 0x6A, 0x33, 0x60, 0x83, 0xF4, 0x10, 0x68, 0x10, 0xF0, 0x00, 0x69, 0x90, 0x67, -0xB1, 0x67, 0x80, 0x18, 0xF4, 0x16, 0x08, 0x22, +0xB1, 0x67, 0x80, 0x18, 0xC8, 0x16, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6C, 0x06, 0x93, 0x8B, 0xEC, @@ -53950,19 +54492,19 @@ u8 array_mp_8822c_fw_spic[] = { 0x26, 0x67, 0xAC, 0xE8, 0x01, 0x6A, 0x3F, 0x2B, 0x02, 0x5E, 0x00, 0x6A, 0x3C, 0x60, 0x83, 0xF4, 0x10, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, -0xF4, 0x16, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC8, 0x16, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF4, 0x10, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x0F, 0x92, 0x0B, 0x72, 0x13, 0x61, 0xA3, 0xF0, 0x00, 0x6B, 0x06, 0xD3, 0x05, 0xF1, 0x00, 0x4B, 0x07, 0xD3, 0x28, 0x31, 0x7D, 0x67, 0x25, 0xE3, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9A, 0x8C, 0xA9, 0xE2, 0xF5, -0xB0, 0x9B, 0x12, 0x10, 0xE3, 0xF0, 0x08, 0x6B, +0xC0, 0xF3, 0x44, 0x9A, 0x8C, 0xA9, 0xC2, 0xF5, +0xB8, 0x9B, 0x12, 0x10, 0xE3, 0xF0, 0x08, 0x6B, 0x04, 0xD3, 0x05, 0xF1, 0x00, 0x4B, 0x05, 0xD3, 0x28, 0x31, 0x7D, 0x67, 0x25, 0xE3, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9A, 0x88, 0xA9, 0xE2, 0xF5, 0xB4, 0x9B, +0x44, 0x9A, 0x88, 0xA9, 0xC2, 0xF5, 0xBC, 0x9B, 0xD0, 0x67, 0x40, 0xEA, 0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, @@ -53994,11 +54536,11 @@ u8 array_mp_8822c_fw_spic[] = { 0x05, 0xD2, 0xA8, 0x35, 0x5D, 0x67, 0xB5, 0xE2, 0x44, 0x9D, 0xFF, 0x6C, 0xCC, 0xEC, 0x88, 0x34, 0x51, 0xE4, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0xB4, 0x9A, -0xEC, 0xED, 0x80, 0x18, 0xF4, 0x16, 0x07, 0x97, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0xAC, 0x9A, +0xEC, 0xED, 0x80, 0x18, 0xC8, 0x16, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF0, 0x24, 0xA4, 0xE2, 0xF3, 0xF4, 0x9A, +0x20, 0xF0, 0x24, 0xA4, 0xE2, 0xF3, 0xEC, 0x9A, 0x05, 0x67, 0x18, 0x6E, 0x00, 0x6D, 0x80, 0x18, 0x3E, 0x45, 0xEB, 0x49, 0xFF, 0x6B, 0x6C, 0xE9, 0x02, 0x59, 0x4F, 0x60, 0x4C, 0xEB, 0x0F, 0x5B, @@ -54026,14 +54568,14 @@ u8 array_mp_8822c_fw_spic[] = { 0x0C, 0xD1, 0x0B, 0xD0, 0x02, 0x5D, 0x05, 0x67, 0x12, 0x91, 0x37, 0x60, 0x04, 0x26, 0x04, 0xD1, 0x80, 0x18, 0x18, 0x41, 0x33, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x54, 0x9A, 0x4C, 0xEF, +0x20, 0x6A, 0xE2, 0xF3, 0x4C, 0x9A, 0x4C, 0xEF, 0x4A, 0xEF, 0x08, 0xD7, 0x0C, 0x60, 0x00, 0x6E, 0xE2, 0x67, 0x80, 0x18, 0x3E, 0x45, 0x61, 0x42, 0x24, 0x23, 0x08, 0x94, 0xD1, 0x67, 0xA2, 0x67, 0x80, 0x18, 0x09, 0x41, 0x22, 0x67, 0x03, 0xF0, 0x08, 0x6B, 0x06, 0xD3, 0x05, 0xF1, 0x00, 0x4B, 0x07, 0xD3, 0x08, 0x30, 0x7D, 0x67, 0x01, 0xE3, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0xD4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0xCC, 0x9B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x8C, 0xA8, 0x01, 0x6D, 0xAB, 0xED, 0x2C, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, @@ -54042,20 +54584,26 @@ u8 array_mp_8822c_fw_spic[] = { 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6D, 0x0A, 0xD4, 0x80, 0x18, 0xE2, 0x40, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, 0x24, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0xCA, 0xF4, 0x18, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, 0x2C, 0x9A, +0x30, 0xF0, 0x20, 0x68, 0xEA, 0xF4, 0x00, 0x48, 0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, 0xBC, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6A, 0x00, 0x6D, 0xBC, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, -0x00, 0x6A, 0xF1, 0x67, 0x90, 0x67, 0xBC, 0x6E, -0xA2, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, +0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, +0xBC, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, +0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, +0xFF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, +0x01, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, +0xFF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, +0xF1, 0x67, 0x90, 0x67, 0xFF, 0x6E, 0x00, 0x6A, +0x01, 0x6D, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x0A, 0x94, 0x01, 0x6D, 0x80, 0x18, 0xE2, 0x40, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x63, 0xF5, 0x10, 0x69, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0x80, 0x18, -0xF4, 0x16, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x68, +0xC8, 0x16, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x68, 0x04, 0x96, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0xFF, 0xF5, 0x1E, 0x4E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, @@ -54065,21 +54613,21 @@ u8 array_mp_8822c_fw_spic[] = { 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x10, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, 0x08, 0x9A, 0x00, 0x6C, 0x01, 0x6E, 0xB0, 0x67, 0x80, 0x18, -0x81, 0x17, 0x00, 0x6C, 0xB0, 0x67, 0xC4, 0x67, -0x80, 0x18, 0x81, 0x17, 0xB0, 0x67, 0x00, 0x6C, -0x01, 0x6E, 0x80, 0x18, 0x81, 0x17, 0xC0, 0xF3, +0x55, 0x17, 0x00, 0x6C, 0xB0, 0x67, 0xC4, 0x67, +0x80, 0x18, 0x55, 0x17, 0xB0, 0x67, 0x00, 0x6C, +0x01, 0x6E, 0x80, 0x18, 0x55, 0x17, 0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x01, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x52, 0x9C, 0x40, 0xA2, 0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x10, 0x9A, 0x00, 0x6C, 0x01, 0x6E, -0xB0, 0x67, 0x80, 0x18, 0x81, 0x17, 0x00, 0x6C, -0xC4, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x81, 0x17, +0xE2, 0xF3, 0x08, 0x9A, 0x00, 0x6C, 0x01, 0x6E, +0xB0, 0x67, 0x80, 0x18, 0x55, 0x17, 0x00, 0x6C, +0xC4, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x55, 0x17, 0x00, 0x6C, 0xB0, 0x67, 0x01, 0x6E, 0x80, 0x18, -0x81, 0x17, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x55, 0x17, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x24, 0x67, 0x09, 0xD5, 0x80, 0x18, 0x03, 0x43, 0x52, 0x99, 0x40, 0xA2, @@ -54090,11 +54638,11 @@ u8 array_mp_8822c_fw_spic[] = { 0x80, 0x18, 0xE5, 0x42, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, 0x03, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF3, -0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, 0x08, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF3, 0x10, 0x4B, 0xC0, 0xF3, +0x20, 0x6B, 0xA2, 0xF3, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x09, 0x92, 0x07, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF4, 0x1C, 0x6C, @@ -54102,7 +54650,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x6A, 0x01, 0x73, 0x0B, 0x61, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, 0x23, 0xF4, 0x1C, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x80, 0x18, -0xE8, 0x45, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, +0xF4, 0x45, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x0C, 0xD4, 0x20, 0xF0, 0x6F, 0xA4, 0xFF, 0x69, @@ -54111,11 +54659,11 @@ u8 array_mp_8822c_fw_spic[] = { 0x01, 0x76, 0x02, 0x61, 0x03, 0x59, 0x03, 0x10, 0x02, 0x76, 0x03, 0x61, 0x05, 0x59, 0xE0, 0xF1, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x94, -0xE2, 0xF3, 0xF4, 0x9A, 0x00, 0x6D, 0x18, 0x6E, +0xE2, 0xF3, 0xEC, 0x9A, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x07, 0xD2, 0x07, 0x93, 0x06, 0xF0, 0x01, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, 0x07, 0x58, 0x06, 0xD3, 0x08, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x08, 0x33, 0xC2, 0xF1, 0x1C, 0x4A, +0x20, 0x6A, 0x08, 0x33, 0xC2, 0xF1, 0x14, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x00, 0x69, 0x5A, 0x11, 0x05, 0x70, 0x25, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, @@ -54126,7 +54674,7 @@ u8 array_mp_8822c_fw_spic[] = { 0xA1, 0xF1, 0x14, 0x69, 0x91, 0x67, 0x00, 0xF7, 0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0xE2, 0xF5, 0xB8, 0x9B, 0x04, 0x6E, 0x4C, 0x10, +0xE2, 0xF5, 0xA0, 0x9B, 0x04, 0x6E, 0x4C, 0x10, 0x06, 0x70, 0x25, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, 0xA0, 0xF2, 0x0B, 0x6E, @@ -54136,7 +54684,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x14, 0x69, 0x91, 0x67, 0x00, 0xF7, 0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0xE2, 0xF5, -0xB8, 0x9B, 0x05, 0x6E, 0x25, 0x10, 0x25, 0x28, +0xA0, 0x9B, 0x05, 0x6E, 0x25, 0x10, 0x25, 0x28, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, 0x80, 0xF1, 0x1B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, @@ -54145,17 +54693,17 @@ u8 array_mp_8822c_fw_spic[] = { 0x44, 0x98, 0xA1, 0xF1, 0x14, 0x69, 0x91, 0x67, 0x00, 0xF7, 0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xE2, 0xF5, 0xB8, 0x9B, 0x91, 0x67, 0x06, 0x6E, +0xE2, 0xF5, 0xA0, 0x9B, 0x91, 0x67, 0x06, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0x0F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x06, 0x93, 0x06, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, -0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF5, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x00, 0x6E, +0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x00, 0x6E, 0x18, 0x69, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF3, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x42, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0xB8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0x08, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0x0C, 0x6C, 0x0F, 0x6D, 0x06, 0x6E, @@ -54177,12 +54725,12 @@ u8 array_mp_8822c_fw_spic[] = { 0x2D, 0xEE, 0xA1, 0xF1, 0x10, 0x6C, 0x1F, 0xF7, 0x00, 0x6D, 0x40, 0xEA, 0x06, 0x93, 0x04, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, -0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF5, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, +0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, 0x10, 0x69, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF3, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x42, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0xB8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF3, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0x08, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0x0C, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, @@ -54200,17 +54748,17 @@ u8 array_mp_8822c_fw_spic[] = { 0x1F, 0xF7, 0x00, 0x6D, 0x40, 0xEA, 0x06, 0x93, 0x02, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, 0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF5, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xE2, 0xF4, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, 0x08, 0x69, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x0C, 0x94, -0x30, 0xF0, 0x20, 0x68, 0xCA, 0xF4, 0x18, 0x48, +0x30, 0xF0, 0x20, 0x68, 0xEA, 0xF4, 0x00, 0x48, 0x00, 0x6D, 0x80, 0x18, 0xE2, 0x40, 0x01, 0x6A, 0x90, 0x67, 0x00, 0x6D, 0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x12, 0x6B, 0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, 0x1F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0x14, 0x4A, 0xE0, 0x9A, +0x20, 0x6A, 0xE2, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x90, 0x67, 0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD1, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, 0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD3, @@ -54219,20 +54767,20 @@ u8 array_mp_8822c_fw_spic[] = { 0x80, 0x18, 0x83, 0x45, 0x12, 0x6B, 0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, 0x1F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x14, 0x4A, 0xE0, 0x9A, 0x90, 0x67, +0xE2, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x90, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD1, 0x80, 0x18, 0x83, 0x45, 0x00, 0x6B, 0x90, 0x67, 0x01, 0x6D, 0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, -0x14, 0x4B, 0xE0, 0x9B, 0x06, 0x92, 0x90, 0x67, +0x0C, 0x4B, 0xE0, 0x9B, 0x06, 0x92, 0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, -0x14, 0x4B, 0x06, 0x92, 0xE0, 0x9B, 0x90, 0x67, +0x0C, 0x4B, 0x06, 0x92, 0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x0C, 0x94, 0x01, 0x6D, 0x80, 0x18, 0xE2, 0x40, 0x07, 0x92, 0x01, 0x4A, 0x08, 0x22, -0x0C, 0x94, 0x80, 0x18, 0xBF, 0x45, 0x0C, 0x94, -0x80, 0x18, 0xE8, 0x45, 0x01, 0x6A, 0x01, 0x10, +0x0C, 0x94, 0x80, 0x18, 0xCB, 0x45, 0x0C, 0x94, +0x80, 0x18, 0xF4, 0x45, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x08, 0xD4, 0x09, 0xD5, @@ -54241,61 +54789,61 @@ u8 array_mp_8822c_fw_spic[] = { 0xC0, 0xF3, 0x44, 0x98, 0xC1, 0xF4, 0x00, 0x69, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, -0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x49, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF5, 0x1C, 0x4B, 0xC0, 0xF3, +0x20, 0x6B, 0xE2, 0xF5, 0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x03, 0x6A, 0x2A, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xC1, 0xF4, 0x00, 0x69, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF5, 0x1C, 0x4B, 0xA0, 0x9B, +0x20, 0x6B, 0xE2, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x49, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF5, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xE2, 0xF5, 0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x09, 0x92, 0x6F, 0x42, 0x02, 0x5B, 0x46, 0x60, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, 0x10, 0x69, 0x91, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF5, 0xA4, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x62, 0xF5, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xC2, 0xF4, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0xBC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF4, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF5, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x02, 0xF5, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x09, 0x96, 0xFD, 0xF2, 0x14, 0x49, 0x91, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x02, 0xF4, 0xB0, 0x9B, +0x44, 0x98, 0x91, 0x67, 0x02, 0xF4, 0xA8, 0x9B, 0x09, 0x96, 0x47, 0x10, 0x03, 0x72, 0x46, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, 0x10, 0x69, 0x91, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF5, 0xA4, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x62, 0xF5, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF4, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xC2, 0xF4, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x14, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0xBC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF4, 0x18, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF5, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x02, 0xF5, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xFD, 0xF2, 0x14, 0x49, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x02, 0xF4, 0xB0, 0x9B, 0x91, 0x67, +0x44, 0x98, 0x02, 0xF4, 0xA8, 0x9B, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x08, 0x94, 0x80, 0x18, -0xE8, 0x45, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0xF4, 0x45, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x03, 0x75, 0x24, 0x67, 0x53, 0x60, 0x01, 0x76, 0x09, 0x61, 0x30, 0xF0, @@ -54317,67 +54865,67 @@ u8 array_mp_8822c_fw_spic[] = { 0xFF, 0x6D, 0x33, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0x0C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x04, 0x6E, 0x40, 0xEA, -0x91, 0x67, 0x80, 0x18, 0xE8, 0x45, 0x07, 0x97, +0x91, 0x67, 0x80, 0x18, 0xF4, 0x45, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x01, 0x76, 0xD0, 0x61, 0xC6, 0x17, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x01, 0x75, 0x08, 0xD4, 0x26, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF4, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, +0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x82, 0xF5, 0xA0, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x62, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x91, 0x67, 0x82, 0xF5, 0xA4, 0x9B, 0x00, 0x6E, +0x91, 0x67, 0x62, 0xF5, 0xAC, 0x9B, 0x00, 0x6E, 0x46, 0x10, 0x02, 0x75, 0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x02, 0xF4, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, +0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x05, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x82, 0xF5, 0xA0, 0x9B, 0x00, 0x6E, 0x1E, 0x10, +0x62, 0xF5, 0xA8, 0x9B, 0x00, 0x6E, 0x1E, 0x10, 0x03, 0x75, 0x26, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x02, 0xF4, 0xB0, 0x9B, +0x30, 0xF0, 0x20, 0x68, 0x02, 0xF4, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x82, 0xF5, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x62, 0xF5, 0xA8, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x82, 0xF5, -0xA4, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x08, 0x94, 0x80, 0x18, 0xE8, 0x45, 0x07, 0x97, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x62, 0xF5, +0xAC, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x08, 0x94, 0x80, 0x18, 0xF4, 0x45, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x01, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x04, 0x67, 0x25, 0x67, -0x80, 0x18, 0xD6, 0x47, 0xB1, 0x67, 0x90, 0x67, -0x80, 0x18, 0x2B, 0x47, 0x20, 0xF0, 0x2D, 0xC0, -0x90, 0x67, 0x80, 0x18, 0xE8, 0x45, 0x07, 0x97, +0x80, 0x18, 0xE2, 0x47, 0xB1, 0x67, 0x90, 0x67, +0x80, 0x18, 0x37, 0x47, 0x20, 0xF0, 0x2D, 0xC0, +0x90, 0x67, 0x80, 0x18, 0xF4, 0x45, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x01, 0x75, 0x04, 0x67, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF2, 0x04, 0x6C, 0xE2, 0xF5, 0xA4, 0x9B, +0x03, 0xF2, 0x04, 0x6C, 0xC2, 0xF5, 0xAC, 0x9B, 0x08, 0x6E, 0x19, 0x10, 0x02, 0x75, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, 0x04, 0x6C, -0xE2, 0xF5, 0xA4, 0x9B, 0x04, 0x6E, 0x0B, 0x10, +0xC2, 0xF5, 0xAC, 0x9B, 0x04, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9A, 0xE2, 0xF5, 0xA4, 0x9B, +0xC0, 0xF3, 0x44, 0x9A, 0xC2, 0xF5, 0xAC, 0x9B, 0x03, 0xF2, 0x04, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, -0x90, 0x67, 0x80, 0x18, 0xE8, 0x45, 0x05, 0x97, +0x90, 0x67, 0x80, 0x18, 0xF4, 0x45, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x7D, 0x67, 0x04, 0x67, 0x47, 0x43, 0x0A, 0xD6, 0x20, 0xF0, 0xAC, 0xC0, 0x21, 0x4A, 0x60, 0xA2, 0x46, 0x67, 0xAD, 0xEA, 0x20, 0xF0, 0x6B, 0xC4, 0x20, 0xF0, 0x4A, 0xC4, 0x25, 0x67, 0xA7, 0x67, -0x80, 0x18, 0x20, 0x48, 0x0A, 0x96, 0xB1, 0x67, -0x90, 0x67, 0x80, 0x18, 0xA7, 0x47, 0x90, 0x67, -0x80, 0x18, 0xE8, 0x45, 0x07, 0x97, 0x06, 0x91, +0x80, 0x18, 0x2C, 0x48, 0x0A, 0x96, 0xB1, 0x67, +0x90, 0x67, 0x80, 0x18, 0xB3, 0x47, 0x90, 0x67, +0x80, 0x18, 0xF4, 0x45, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x0B, 0xD5, 0x0C, 0xD6, 0x20, 0xF0, 0x44, 0xA4, @@ -54389,7 +54937,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x4B, 0xEA, 0x6C, 0xEA, 0x50, 0x2A, 0xA3, 0x67, 0x04, 0xD2, 0x0C, 0x96, 0x90, 0x67, 0x80, 0x18, 0x31, 0x41, 0x0C, 0x95, 0x90, 0x67, 0x80, 0x18, -0x15, 0x48, 0x20, 0xF0, 0x4B, 0xA0, 0x03, 0x2A, +0x21, 0x48, 0x20, 0xF0, 0x4B, 0xA0, 0x03, 0x2A, 0x01, 0x6A, 0x20, 0xF0, 0x4B, 0xC0, 0x0B, 0x92, 0xFF, 0x4A, 0x02, 0x5A, 0x02, 0x60, 0x0B, 0x91, 0x0C, 0x10, 0x0B, 0x93, 0x03, 0x73, 0x05, 0x61, @@ -54397,7 +54945,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x06, 0x10, 0x04, 0x92, 0x04, 0x22, 0x20, 0xF0, 0x2B, 0xA0, 0x00, 0x6D, 0x01, 0x10, 0x03, 0x6D, 0x90, 0x67, 0xD1, 0x67, 0xF1, 0x67, 0x80, 0x18, -0x3A, 0x48, 0x05, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, +0x46, 0x48, 0x05, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, 0x18, 0x60, 0x20, 0xF0, 0x4A, 0xA0, 0x01, 0x72, 0x06, 0x61, 0x0C, 0x93, 0x01, 0x73, 0x03, 0x61, 0x90, 0x67, 0x01, 0x6D, @@ -54405,8 +54953,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x06, 0x61, 0x0C, 0x92, 0x02, 0x72, 0x03, 0x61, 0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, 0x80, 0x18, 0x4F, 0x45, 0x90, 0x67, -0x80, 0x18, 0xBF, 0x45, 0x90, 0x67, 0x80, 0x18, -0xE8, 0x45, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x80, 0x18, 0xCB, 0x45, 0x90, 0x67, 0x80, 0x18, +0xF4, 0x45, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, 0x20, 0xF0, 0x44, 0xA4, @@ -54418,37 +54966,37 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0xF1, 0x1C, 0x61, 0x47, 0x41, 0x68, 0x4A, 0x6C, 0xEA, 0x04, 0x5A, 0x20, 0xF1, 0x16, 0x61, 0xB2, 0x59, 0x20, 0xF1, 0x13, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF3, 0xF4, 0x9A, 0x00, 0x6D, +0x20, 0x6A, 0xE2, 0xF3, 0xEC, 0x9A, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x3E, 0x45, 0x09, 0xD2, 0x01, 0x4A, 0x20, 0xF1, 0x07, 0x22, 0x20, 0xF0, 0x6B, 0xA0, 0x0F, 0x59, 0x58, 0x67, 0x0B, 0xD2, 0x06, 0xD3, 0x0A, 0x2B, 0x21, 0xF0, 0x00, 0x6C, -0x0F, 0x6D, 0x80, 0x18, 0xF4, 0x16, 0xFF, 0x6C, +0x0F, 0x6D, 0x80, 0x18, 0xC8, 0x16, 0xFF, 0x6C, 0x4C, 0xEC, 0x06, 0xD4, 0x20, 0xF0, 0x8B, 0xC0, 0x20, 0xF0, 0x8A, 0xA0, 0x08, 0xD4, 0x0F, 0x2C, 0x21, 0xF0, 0x00, 0x4C, 0xF0, 0x6D, 0x80, 0x18, -0xF4, 0x16, 0x06, 0x94, 0xFF, 0x6B, 0x6C, 0xEA, +0xC8, 0x16, 0x06, 0x94, 0xFF, 0x6B, 0x6C, 0xEA, 0x4D, 0xEC, 0x6C, 0xEC, 0x08, 0xD4, 0x20, 0xF0, 0x4C, 0xC0, 0x20, 0xF0, 0x8A, 0xC0, 0x20, 0xF0, 0x8D, 0xA0, 0x07, 0xD4, 0x0D, 0x2C, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF5, 0xBC, 0x9A, 0x21, 0xF0, -0x04, 0x4C, 0x80, 0x18, 0xF4, 0x16, 0xFF, 0x6B, +0x20, 0x6A, 0x02, 0xF5, 0xA4, 0x9A, 0x21, 0xF0, +0x04, 0x4C, 0x80, 0x18, 0xC8, 0x16, 0xFF, 0x6B, 0x4C, 0xEB, 0x07, 0xD3, 0x20, 0xF0, 0x6D, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, 0x48, 0x9A, 0x09, 0x93, 0x0B, 0x94, 0x4C, 0xEB, 0x2D, 0xEB, 0x06, 0xD3, 0x16, 0x2C, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x44, 0x9A, 0x91, 0x59, 0x4D, 0xEB, +0xE2, 0xF5, 0x4C, 0x9A, 0x91, 0x59, 0x4D, 0xEB, 0x06, 0xD3, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF3, 0x44, 0x9A, 0x07, 0x10, 0x50, 0x59, +0xC2, 0xF3, 0x5C, 0x9A, 0x07, 0x10, 0x50, 0x59, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF4, -0x48, 0x9A, 0x06, 0x93, 0x4D, 0xEB, 0x06, 0xD3, +0x40, 0x9A, 0x06, 0x93, 0x4D, 0xEB, 0x06, 0xD3, 0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0xE2, 0x40, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0x06, 0x92, 0x30, 0xF0, 0x20, 0x6C, -0xCA, 0xF4, 0x18, 0x4C, 0x00, 0x6D, 0x18, 0x6E, +0xEA, 0xF4, 0x00, 0x4C, 0x00, 0x6D, 0x18, 0x6E, 0x09, 0xD4, 0x04, 0xD2, 0x80, 0x18, 0x83, 0x45, 0x06, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF3, -0x14, 0x4A, 0x04, 0xD4, 0xE0, 0x9A, 0x09, 0x94, +0x0C, 0x4A, 0x04, 0xD4, 0xE0, 0x9A, 0x09, 0x94, 0x01, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0x83, 0x45, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0xE2, 0x40, 0x0F, 0x59, 0x11, 0x60, 0x50, 0x98, 0x40, 0xA2, @@ -54466,23 +55014,23 @@ u8 array_mp_8822c_fw_spic[] = { 0x0B, 0x93, 0x2F, 0x23, 0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0x85, 0x41, 0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0xAD, 0xC1, 0x40, 0xF4, 0x14, 0x6C, -0x80, 0x6D, 0x00, 0x6E, 0x80, 0x18, 0x81, 0x17, +0x80, 0x6D, 0x00, 0x6E, 0x80, 0x18, 0x55, 0x17, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6C, -0xC0, 0xF3, 0x44, 0x9C, 0xE2, 0xF3, 0xA4, 0x9B, +0xC0, 0xF3, 0x44, 0x9C, 0xC2, 0xF3, 0xBC, 0x9B, 0x83, 0xF2, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0xB0, 0x9B, 0x83, 0xF4, 0x00, 0x6C, 0x0F, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, 0x41, 0x60, 0x90, 0x67, 0x00, 0x6D, 0x3C, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, 0xE2, 0xF3, -0xA4, 0x9B, 0x83, 0xF2, 0x00, 0x6C, 0x01, 0x6E, +0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, 0xC2, 0xF3, +0xBC, 0x9B, 0x83, 0xF2, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x01, 0x6E, 0x40, 0xF4, 0x14, 0x6C, -0x80, 0x6D, 0x80, 0x18, 0x81, 0x17, 0x90, 0x67, +0x80, 0x6D, 0x80, 0x18, 0x55, 0x17, 0x90, 0x67, 0x02, 0x6D, 0x00, 0x18, 0xAD, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF6, 0xA8, 0x9B, 0x83, 0xF4, +0x20, 0x6B, 0xE2, 0xF5, 0xB0, 0x9B, 0x83, 0xF4, 0x00, 0x6C, 0x22, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, 0x16, 0x60, 0x08, 0x94, 0x01, 0x74, 0x06, 0x61, @@ -54491,16 +55039,16 @@ u8 array_mp_8822c_fw_spic[] = { 0x06, 0x61, 0x07, 0x94, 0x02, 0x74, 0x03, 0x61, 0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, 0x80, 0x18, 0x4F, 0x45, 0x90, 0x67, -0x80, 0x18, 0xBF, 0x45, 0x52, 0x98, 0x40, 0xA2, +0x80, 0x18, 0xCB, 0x45, 0x52, 0x98, 0x40, 0xA2, 0x04, 0x22, 0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, -0xB8, 0x42, 0x90, 0x67, 0x80, 0x18, 0xE8, 0x45, +0xB8, 0x42, 0x90, 0x67, 0x80, 0x18, 0xF4, 0x45, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x26, 0x67, 0x4C, 0xED, 0x04, 0x67, -0x0B, 0xD7, 0x4C, 0xE9, 0x80, 0x18, 0x87, 0x48, +0x0B, 0xD7, 0x4C, 0xE9, 0x80, 0x18, 0x93, 0x48, 0x00, 0x6B, 0x09, 0x22, 0x0B, 0x96, 0x90, 0x67, -0xB1, 0x67, 0x80, 0x18, 0x26, 0x46, 0x4B, 0xEB, +0xB1, 0x67, 0x80, 0x18, 0x32, 0x46, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x43, 0x67, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, @@ -54518,17 +55066,17 @@ u8 array_mp_8822c_fw_spic[] = { 0x08, 0x61, 0x0E, 0xF0, 0x40, 0x40, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x00, 0xF1, 0x00, 0x5A, 0x39, 0x60, 0x08, 0x92, 0x04, 0x72, 0x11, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x54, 0x9A, 0xFF, 0x6B, 0x49, 0xE0, 0x40, 0xA2, 0x4C, 0xEB, 0x5F, 0x21, 0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x57, 0x10, 0x08, 0x92, 0x05, 0x72, 0x12, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x54, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x49, 0xE0, 0x40, 0xAA, 0x4C, 0xEB, 0x7F, 0x21, 0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x77, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF2, 0x5C, 0x9A, 0x49, 0xE0, 0x60, 0x9A, +0xE2, 0xF2, 0x54, 0x9A, 0x49, 0xE0, 0x60, 0x9A, 0x80, 0xF0, 0x1E, 0x21, 0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x96, 0x10, 0x01, 0xF0, 0x00, 0x58, @@ -54537,44 +55085,44 @@ u8 array_mp_8822c_fw_spic[] = { 0x80, 0xF0, 0x17, 0x60, 0x08, 0x92, 0x04, 0x72, 0x31, 0x61, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x40, 0x9A, 0x49, 0xE0, 0x60, 0xA2, 0xFF, 0x6A, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x54, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x58, 0x9A, 0x49, 0xE0, 0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, 0x04, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, 0x04, 0xD3, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x40, 0x9A, 0x7D, 0x67, 0x41, 0xE0, 0x50, 0xA3, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x54, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x58, 0x9A, 0x7D, 0x67, 0x41, 0xE0, 0x50, 0xA3, 0x40, 0xC0, 0x7E, 0x10, 0x08, 0x92, 0x05, 0x72, 0x32, 0x61, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x40, 0x9A, 0x49, 0xE0, 0x60, 0xAA, 0xFF, 0xF7, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x54, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x58, 0x9A, 0x49, 0xE0, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, 0x04, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, 0x04, 0xD3, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, -0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF3, 0x40, 0x9A, 0x7D, 0x67, 0x41, 0xE0, +0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF2, 0x58, 0x9A, 0x7D, 0x67, 0x41, 0xE0, 0x48, 0xAB, 0x40, 0xC8, 0x49, 0x10, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF2, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF3, 0x40, 0x9A, 0x49, 0xE0, +0xE2, 0xF2, 0x54, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF2, 0x58, 0x9A, 0x49, 0xE0, 0x60, 0x9A, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, -0x40, 0x9A, 0x41, 0xE0, 0x04, 0x92, 0x40, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x54, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, +0x58, 0x9A, 0x41, 0xE0, 0x04, 0x92, 0x40, 0xD8, 0x1B, 0x10, 0xFF, 0xF7, 0x1C, 0x6A, 0x0C, 0xEA, 0x01, 0x6D, 0x82, 0x67, 0xAB, 0xED, 0x08, 0xD2, -0x80, 0x18, 0xF4, 0x16, 0x05, 0xD2, 0x07, 0x21, +0x80, 0x18, 0xC8, 0x16, 0x05, 0xD2, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, 0x04, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, 0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x08, 0x94, @@ -54586,23 +55134,23 @@ u8 array_mp_8822c_fw_spic[] = { 0x07, 0xD2, 0x00, 0x6A, 0x62, 0x60, 0x7F, 0x6D, 0x6C, 0xED, 0x4C, 0x45, 0xFF, 0x6B, 0x6C, 0xEA, 0x0E, 0x5A, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x48, 0x32, 0x62, 0xF2, 0x04, 0x4B, 0x4D, 0xE3, +0x48, 0x32, 0x42, 0xF2, 0x1C, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x03, 0x6A, 0x51, 0x10, 0x61, 0xA4, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6E, 0x07, 0x03, 0x90, 0x67, 0x4C, 0xEE, -0x06, 0x07, 0x04, 0xD3, 0x80, 0x18, 0x45, 0x49, +0x06, 0x07, 0x04, 0xD3, 0x80, 0x18, 0x51, 0x49, 0x28, 0x10, 0x81, 0xA4, 0x80, 0x6A, 0xFF, 0x69, 0x64, 0x67, 0x4C, 0xEB, 0x0C, 0xE9, 0x02, 0x32, -0x30, 0xF0, 0x20, 0x6C, 0x01, 0x6F, 0xCA, 0xF4, -0x18, 0x4C, 0xA2, 0x67, 0xD1, 0x67, 0xEB, 0xEF, +0x30, 0xF0, 0x20, 0x6C, 0x01, 0x6F, 0xEA, 0xF4, +0x00, 0x4C, 0xA2, 0x67, 0xD1, 0x67, 0xEB, 0xEF, 0x08, 0xD3, 0x09, 0xD2, 0x80, 0x18, 0x3E, 0x45, 0x08, 0x93, 0x07, 0x23, 0x07, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, 0x06, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, 0x06, 0xD3, 0x06, 0x92, 0x09, 0x95, 0x30, 0xF0, -0x20, 0x6C, 0x01, 0x6F, 0xCA, 0xF4, 0x18, 0x4C, +0x20, 0x6C, 0x01, 0x6F, 0xEA, 0xF4, 0x00, 0x4C, 0xD1, 0x67, 0xEB, 0xEF, 0x04, 0xD2, 0x80, 0x18, -0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, -0x18, 0x4A, 0x65, 0xF7, 0x60, 0x9A, 0x06, 0x94, +0x83, 0x45, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x65, 0xF7, 0x60, 0x9A, 0x06, 0x94, 0x61, 0xE0, 0x65, 0xF7, 0x64, 0x9A, 0x65, 0xF7, 0x00, 0xDA, 0x6D, 0xE4, 0x65, 0xF7, 0x64, 0xDA, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, @@ -54610,11 +55158,11 @@ u8 array_mp_8822c_fw_spic[] = { 0x80, 0xF3, 0x48, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4A, -0x46, 0xF7, 0x1C, 0x4B, 0xA6, 0xF7, 0x6C, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x46, 0xF7, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4A, +0x66, 0xF7, 0x04, 0x4B, 0xA6, 0xF7, 0x6C, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0x66, 0xF7, 0x00, 0x4B, 0xA6, 0xF7, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0x66, 0xF7, 0x00, 0x4B, 0x86, 0xF7, 0x7C, 0xDA, +0x66, 0xF7, 0x08, 0x4B, 0x86, 0xF7, 0x7C, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xE0, 0x63, 0x3F, 0x62, 0xFF, 0xF7, 0x1F, 0x6A, 0xAC, 0xEA, 0xBD, 0x67, 0x56, 0xC5, 0x01, 0x6B, 0x42, 0x32, 0x57, 0xC5, @@ -54624,12 +55172,12 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0xEA, 0x3F, 0x97, 0x20, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA7, 0x44, 0x30, 0xF0, -0x20, 0x6C, 0x01, 0x4D, 0xE9, 0xF4, 0x00, 0x4C, +0x20, 0x6C, 0x01, 0x4D, 0xE9, 0xF4, 0x08, 0x4C, 0x14, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x04, 0x67, 0x80, 0x18, -0x32, 0x4A, 0x47, 0xA0, 0x66, 0xA0, 0x30, 0xF0, -0x20, 0x69, 0x63, 0xF5, 0x18, 0x49, 0x40, 0x32, +0x3E, 0x4A, 0x47, 0xA0, 0x66, 0xA0, 0x30, 0xF0, +0x20, 0x69, 0x83, 0xF5, 0x00, 0x49, 0x40, 0x32, 0x65, 0xF7, 0x88, 0xA1, 0x69, 0xE2, 0x65, 0xF7, 0x5A, 0xC9, 0x01, 0x6A, 0x8C, 0xEA, 0xFF, 0x6B, 0x1C, 0x2A, 0x65, 0xF7, 0xBC, 0xA1, 0xFE, 0x4A, @@ -54649,66 +55197,63 @@ u8 array_mp_8822c_fw_spic[] = { 0x01, 0xE2, 0x00, 0x6A, 0x65, 0xF7, 0xF8, 0xA9, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF7, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF3, 0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6E, -0x1C, 0x30, 0x09, 0xF5, 0x02, 0x4E, 0x00, 0x6C, +0x22, 0xF7, 0xA8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6E, +0x1C, 0x30, 0x09, 0xF5, 0x0A, 0x4E, 0x00, 0x6C, 0xB5, 0xE0, 0x59, 0xE6, 0x40, 0xEB, 0x65, 0xF7, 0x5C, 0xA1, 0x01, 0x6B, 0x6D, 0xEA, 0x65, 0xF7, 0x5C, 0xC1, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, 0x85, 0xF7, +0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0x85, 0xF7, 0xA0, 0xA8, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9A, 0x09, 0xF5, -0x02, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xB5, 0xE3, -0x09, 0xF6, 0x04, 0x4C, 0x04, 0x6E, 0x40, 0xEA, +0x0A, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xB5, 0xE3, +0x09, 0xF6, 0x0C, 0x4C, 0x04, 0x6E, 0x40, 0xEA, 0x86, 0xF0, 0x6F, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, 0x85, 0xF7, 0x40, 0xA8, 0x04, 0x4A, 0x85, 0xF7, -0x40, 0xC8, 0x30, 0xF0, 0x20, 0x68, 0x63, 0xF5, -0x18, 0x48, 0x86, 0xF0, 0x6D, 0xA0, 0x30, 0xF0, +0x40, 0xC8, 0x30, 0xF0, 0x20, 0x68, 0x83, 0xF5, +0x00, 0x48, 0x86, 0xF0, 0x6D, 0xA0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x86, 0xF0, 0x8C, 0xA0, 0x0F, 0x6D, 0x6C, 0xED, 0x72, 0x36, 0x40, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, 0x65, 0xF7, 0x7C, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x65, 0xF7, 0x5C, 0xC0, 0x01, 0x6C, 0x59, 0x10, +0x65, 0xF7, 0x5C, 0xC0, 0x01, 0x6C, 0x5B, 0x10, 0x86, 0xF0, 0x6F, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0x15, 0x22, 0x01, 0x72, -0x48, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, -0x4C, 0x9A, 0x00, 0x6C, 0x40, 0xEA, 0x4C, 0x22, +0xFF, 0x6B, 0x6C, 0xEA, 0x0E, 0x22, 0x01, 0x72, +0x41, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x4C, 0x9A, 0x00, 0x6C, 0x40, 0xEA, 0x43, 0x22, 0x45, 0xF7, 0x9D, 0xA0, 0x00, 0x6D, 0x80, 0x18, -0x5C, 0x18, 0x06, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, 0x40, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x65, 0xF7, 0x7D, 0xA2, 0x86, 0xF0, 0x8E, 0xA2, -0x01, 0x4B, 0x65, 0xF7, 0x7D, 0xC2, 0x85, 0xF7, -0x62, 0xAA, 0x6D, 0xE4, 0x85, 0xF7, 0x62, 0xCA, -0x65, 0xF7, 0x9D, 0xA2, 0x65, 0xF7, 0x6A, 0xA2, -0x8E, 0xEB, 0x0C, 0x2B, 0x86, 0xF0, 0xCE, 0xA2, -0x10, 0xF0, 0x31, 0x6C, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xD3, 0x00, 0xF3, 0x4C, 0x9A, 0x65, 0xF3, -0x0D, 0x4C, 0x0C, 0x10, 0x86, 0xF0, 0xCE, 0xA2, -0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x31, 0x6C, -0x45, 0xF3, 0x01, 0x4C, 0x64, 0x6B, 0x78, 0xEE, -0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEA, -0x1B, 0x10, 0x65, 0xF7, 0x7C, 0xA0, 0x02, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x65, 0xF7, 0x5C, 0xC0, -0x02, 0x6C, 0x65, 0xF7, 0xBA, 0xA8, 0x0E, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, -0x65, 0xF7, 0x9C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, -0x65, 0xF7, 0xBA, 0xAA, 0x8C, 0xEB, 0x65, 0xF7, -0x7C, 0xC2, 0x03, 0x6C, 0x80, 0x18, 0x25, 0x4A, -0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x30, 0x18, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, +0x00, 0x4A, 0x65, 0xF7, 0x7D, 0xA2, 0x86, 0xF0, +0x8E, 0xA2, 0x01, 0x4B, 0x65, 0xF7, 0x7D, 0xC2, +0x85, 0xF7, 0x62, 0xAA, 0x6D, 0xE4, 0x85, 0xF7, +0x62, 0xCA, 0x65, 0xF7, 0x9D, 0xA2, 0x65, 0xF7, +0x6A, 0xA2, 0x8E, 0xEB, 0x0C, 0x2B, 0x86, 0xF0, +0xCE, 0xA2, 0x10, 0xF0, 0x31, 0x6C, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xD3, 0x00, 0xF3, 0x4C, 0x9A, +0x85, 0xF3, 0x05, 0x4C, 0x0C, 0x10, 0x86, 0xF0, +0xCE, 0xA2, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, +0x31, 0x6C, 0x45, 0xF3, 0x19, 0x4C, 0x64, 0x6B, +0x78, 0xEE, 0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, +0x40, 0xEA, 0x15, 0x10, 0x65, 0xF7, 0x7C, 0xA0, +0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x65, 0xF7, +0x5C, 0xC0, 0x02, 0x6C, 0x08, 0x10, 0x65, 0xF7, +0x7C, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x65, 0xF7, 0x5C, 0xC0, 0x03, 0x6C, 0x65, 0xF7, +0xBA, 0xA8, 0x80, 0x18, 0x31, 0x4A, 0x07, 0x97, +0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x65, 0xF7, 0x9C, 0xA2, +0x83, 0xF5, 0x00, 0x4A, 0x65, 0xF7, 0x9C, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x08, 0x23, 0x86, 0xF0, 0x6A, 0xA2, 0x03, 0x23, 0x00, 0x6B, 0x86, 0xF0, -0x6A, 0xC2, 0x80, 0x18, 0x76, 0x4A, 0x05, 0x97, +0x6A, 0xC2, 0x80, 0x18, 0x82, 0x4A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x63, 0xF5, 0x18, 0x48, 0x65, 0xF7, 0x5C, 0xA0, +0x83, 0xF5, 0x00, 0x48, 0x65, 0xF7, 0x5C, 0xA0, 0x01, 0x69, 0x91, 0x67, 0x4C, 0xEC, 0xFF, 0x6B, 0x00, 0xF1, 0x0E, 0x24, 0x65, 0xF7, 0xA8, 0xA0, 0x03, 0x6E, 0xAE, 0x34, 0xCC, 0xEC, 0x6C, 0xEC, @@ -54721,7 +55266,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, 0x01, 0x6C, 0x01, 0x61, 0x00, 0x6C, 0x65, 0xF7, 0xBA, 0xA8, -0x80, 0x18, 0x25, 0x4A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0x18, 0x31, 0x4A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, 0xBF, 0x10, 0x02, 0x6A, 0xAC, 0xEA, 0x6C, 0xEA, 0x11, 0x22, 0x65, 0xF7, 0x4B, 0xA0, 0x0F, 0x6D, 0x65, 0xF7, @@ -54729,8 +55274,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, 0xA0, 0xF0, 0x17, 0x61, 0x65, 0xF7, 0xBA, 0xA8, 0x00, 0x6C, -0x80, 0x18, 0x25, 0x4A, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF4, 0x45, 0xA2, 0x5A, 0x33, 0x02, 0x73, +0x80, 0x18, 0x31, 0x4A, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF4, 0x4D, 0xA2, 0x5A, 0x33, 0x02, 0x73, 0x0D, 0x60, 0x03, 0x73, 0x0F, 0x60, 0x01, 0x73, 0x05, 0x60, 0x3F, 0x6E, 0x4C, 0xEE, 0xFF, 0x6A, 0x4C, 0xEE, 0x0E, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, @@ -54738,8 +55283,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x64, 0x6E, 0x04, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, 0xE0, 0xF3, 0x08, 0x6E, 0xD8, 0xEB, 0x12, 0xEE, 0x0A, 0x6A, 0x58, 0xEE, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x85, 0xF7, 0x62, 0xAA, -0x10, 0xF0, 0x31, 0x6C, 0x45, 0xF3, 0x01, 0x4C, +0x83, 0xF5, 0x00, 0x4A, 0x85, 0xF7, 0x62, 0xAA, +0x10, 0xF0, 0x31, 0x6C, 0x45, 0xF3, 0x19, 0x4C, 0x00, 0x6D, 0x12, 0xEE, 0x7B, 0xE6, 0x01, 0x6B, 0x86, 0xF0, 0x6A, 0xC2, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, @@ -54749,8 +55294,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x52, 0x36, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, 0x66, 0x61, 0x65, 0xF7, 0xBA, 0xA8, -0x00, 0x6C, 0x80, 0x18, 0x25, 0x4A, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x65, 0xF7, +0x00, 0x6C, 0x80, 0x18, 0x31, 0x4A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x65, 0xF7, 0x8F, 0xA2, 0x65, 0xF7, 0x7E, 0xA2, 0xFF, 0x4C, 0x6E, 0xEC, 0x03, 0x2C, 0x65, 0xF7, 0x4E, 0xA2, 0x05, 0x10, 0x01, 0x4B, 0x65, 0xF7, 0x7E, 0xC2, @@ -54762,43 +55307,43 @@ u8 array_mp_8822c_fw_spic[] = { 0x64, 0x6A, 0x04, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, 0xE0, 0xF3, 0x08, 0x6A, 0x58, 0xEB, 0x12, 0xEB, 0x0A, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF4, 0x5A, 0xAA, 0x01, 0x6C, 0x00, 0x6D, +0x09, 0xF5, 0x42, 0xAA, 0x01, 0x6C, 0x00, 0x6D, 0x64, 0x6E, 0x12, 0xEB, 0x4F, 0xE3, 0x30, 0xF0, -0x20, 0x6A, 0x09, 0xF6, 0x82, 0xC2, 0x00, 0x6A, +0x20, 0x6A, 0x09, 0xF6, 0x8A, 0xC2, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x31, 0x6C, 0x45, 0xF3, -0x01, 0x4C, 0xD8, 0xEB, 0x01, 0x6F, 0x12, 0xEE, +0x19, 0x4C, 0xD8, 0xEB, 0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEA, 0x09, 0x10, 0x65, 0xF7, 0xBA, 0xA8, -0x00, 0x6C, 0x80, 0x18, 0x25, 0x4A, 0x86, 0xF0, -0x2A, 0xC0, 0x80, 0x18, 0xD0, 0x4A, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x00, 0x6B, +0x00, 0x6C, 0x80, 0x18, 0x31, 0x4A, 0x86, 0xF0, +0x2A, 0xC0, 0x80, 0x18, 0xD6, 0x4A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x00, 0x6B, 0x65, 0xF7, 0x7D, 0xC2, 0x00, 0x6B, 0x85, 0xF7, 0x62, 0xCA, 0x85, 0xF7, 0x60, 0xCA, 0x10, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x65, 0xF7, 0x9C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x65, 0xF7, 0xBA, 0xAA, 0x8C, 0xEB, 0x65, 0xF7, -0x7C, 0xC2, 0x01, 0x6C, 0x80, 0x18, 0x25, 0x4A, +0x7C, 0xC2, 0x01, 0x6C, 0x80, 0x18, 0x31, 0x4A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x69, 0x04, 0x67, 0x80, 0xF4, 0x4C, 0x9A, 0x2C, 0xE8, 0x2C, 0xED, 0xCC, 0xE9, 0x04, 0xD5, 0x90, 0x67, 0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, 0x0F, 0x58, +0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x0F, 0x58, 0xE3, 0xF1, 0x08, 0xC2, 0xE3, 0xF1, 0x20, 0xDA, 0x01, 0x6B, 0x01, 0x60, 0x00, 0x6B, 0x04, 0x96, 0x30, 0xF0, 0x20, 0x6C, 0xB0, 0x67, 0xF1, 0x67, -0xE3, 0xF1, 0x64, 0xDA, 0xCA, 0xF4, 0x18, 0x4C, -0x80, 0x18, 0x36, 0x49, 0x09, 0x97, 0x08, 0x91, +0xE3, 0xF1, 0x64, 0xDA, 0xEA, 0xF4, 0x00, 0x4C, +0x80, 0x18, 0x42, 0x49, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF7, 0x40, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x80, 0xA2, 0x65, 0xF7, 0xDC, 0xA3, 0x85, 0xF7, 0x84, 0xC3, 0xA0, 0xAA, 0x01, 0xF0, 0x00, 0x6C, 0xAC, 0xEC, 0x83, 0x35, 0x03, 0x6C, 0xAE, 0x35, 0x8B, 0xEC, 0xA4, 0x35, 0xCC, 0xEC, 0xAD, 0xEC, 0x65, 0xF7, 0x9C, 0xC3, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xF7, 0x84, 0x9C, 0xA0, 0xAC, 0x85, 0xF7, +0xA2, 0xF7, 0x8C, 0x9C, 0xA0, 0xAC, 0x85, 0xF7, 0xA6, 0xCB, 0xA0, 0xAA, 0xBF, 0xF7, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0xCA, 0xA0, 0xAA, 0x7F, 0xF7, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0xCA, 0xC0, 0xAA, @@ -54806,10 +55351,10 @@ u8 array_mp_8822c_fw_spic[] = { 0xCC, 0xEB, 0x60, 0xCA, 0x40, 0xAC, 0xFF, 0x6B, 0x21, 0x4B, 0xAC, 0xEA, 0x6D, 0xEA, 0xAC, 0xEA, 0x40, 0xCC, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x85, 0xF7, 0x84, 0xA2, 0xC2, 0xF7, 0x60, 0x9B, +0x83, 0xF5, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x85, 0xF7, 0x84, 0xA2, 0xA2, 0xF7, 0x68, 0x9B, 0x01, 0x6E, 0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6C, -0x85, 0xF7, 0xA6, 0xAA, 0xC2, 0xF7, 0x84, 0x9C, +0x85, 0xF7, 0xA6, 0xAA, 0xA2, 0xF7, 0x8C, 0x9C, 0xA0, 0xCC, 0x65, 0xF7, 0x5C, 0xA2, 0x80, 0xAB, 0xFF, 0xF7, 0x1F, 0x6D, 0x46, 0x32, 0xCC, 0xEA, 0xAC, 0xEC, 0x40, 0x32, 0xFE, 0xF7, 0x1E, 0x4E, @@ -54835,231 +55380,231 @@ u8 array_mp_8822c_fw_spic[] = { 0x15, 0x4B, 0x66, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0x43, 0xF1, 0x05, 0x4B, 0x67, 0xDA, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x63, 0xF5, 0x18, 0x48, +0x30, 0xF0, 0x20, 0x68, 0x83, 0xF5, 0x00, 0x48, 0x00, 0x69, 0xA0, 0xF0, 0x24, 0xD8, 0x20, 0xF1, -0x30, 0xC0, 0x80, 0x18, 0xC3, 0x4B, 0xC3, 0xF1, +0x30, 0xC0, 0x80, 0x18, 0xC9, 0x4B, 0xC3, 0xF1, 0x2C, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x00, 0x6B, 0x03, 0xF3, +0x83, 0xF5, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0xF3, 0x64, 0xC2, 0x03, 0xF3, 0x65, 0xC2, 0x03, 0xF3, 0x66, 0xC2, 0x03, 0xF3, 0x67, 0xC2, 0x42, 0xF4, 0x10, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x7C, 0x9B, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, -0x60, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, 0x74, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF2, +0x78, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, 0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF3, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF3, 0x58, 0x9A, 0x03, 0x6C, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF3, 0x44, 0x9A, 0x00, 0xF5, 0x62, 0x33, +0x82, 0xF3, 0x5C, 0x9A, 0x00, 0xF5, 0x62, 0x33, 0x8C, 0xEB, 0x40, 0x9A, 0x01, 0x73, 0x42, 0x32, 0x52, 0x32, 0x8C, 0xEA, 0x05, 0x60, 0x0B, 0x2B, 0x02, 0x5A, 0x50, 0x6C, 0x0D, 0x60, 0x03, 0x10, 0x02, 0x5A, 0x0A, 0x60, 0x28, 0x6C, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0x10, 0x02, 0x5A, 0x28, 0x6C, 0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, -0x50, 0x6C, 0x80, 0x18, 0x94, 0x4D, 0x80, 0x18, +0x50, 0x6C, 0x80, 0x18, 0x9A, 0x4D, 0x80, 0x18, 0x00, 0x00, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, -0x68, 0x9B, 0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, 0x64, 0x9B, +0x60, 0x9B, 0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, 0x7C, 0x9B, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF3, -0x70, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF3, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF3, 0x68, 0x9B, 0x40, 0xDB, +0x68, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, +0x02, 0xF3, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF3, 0x60, 0x9B, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xE5, 0x4B, -0x80, 0x18, 0x2D, 0x4C, 0x80, 0x18, 0x93, 0x40, -0x00, 0x18, 0xA5, 0xD9, 0x30, 0xF0, 0x20, 0x6A, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xEB, 0x4B, +0x80, 0x18, 0x33, 0x4C, 0x80, 0x18, 0x93, 0x40, +0x00, 0x18, 0xA9, 0xD9, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x44, 0x9A, 0x40, 0xEA, 0x80, 0x18, -0x19, 0x4A, 0x80, 0x18, 0xEC, 0x16, 0x00, 0x18, -0xB8, 0xCF, 0x00, 0x18, 0xD4, 0xCF, 0x05, 0x97, +0x25, 0x4A, 0x80, 0x18, 0xC0, 0x16, 0x00, 0x18, +0xBC, 0xCF, 0x00, 0x18, 0xD8, 0xCF, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x00, 0x6B, 0x20, 0xF6, +0x83, 0xF5, 0x00, 0x4A, 0x00, 0x6B, 0x20, 0xF6, 0x72, 0xC2, 0x20, 0xF6, 0x73, 0xC2, 0x20, 0xF1, 0x70, 0xC2, 0x20, 0xF1, 0x71, 0xC2, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x4C, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, 0x88, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x90, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF2, 0x88, 0x9A, 0x08, 0x6D, +0x20, 0x6A, 0xE2, 0xF2, 0x80, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF6, 0x6C, 0x9A, 0xFD, 0x6A, 0xFF, 0x6C, +0x82, 0xF6, 0x74, 0x9A, 0xFD, 0x6A, 0xFF, 0x6C, 0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x40, 0xA3, 0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x48, 0x9A, 0xA2, 0xF6, 0x90, 0x9B, +0x80, 0xF2, 0x48, 0x9A, 0x82, 0xF6, 0x98, 0x9B, 0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, 0x40, 0xEA, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, -0x70, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x6D, 0xE4, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF6, +0x78, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x6D, 0xE4, 0x80, 0x72, 0x04, 0x6C, 0x80, 0xC3, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF6, 0x94, 0x9B, 0x80, 0xF2, 0x48, 0x9A, +0x82, 0xF6, 0x9C, 0x9B, 0x80, 0xF2, 0x48, 0x9A, 0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x52, 0x9B, 0x8D, 0xEA, 0x52, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF6, 0x78, 0x9B, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x7C, 0x9B, +0x20, 0x6B, 0xA2, 0xF6, 0x60, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x64, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0xB2, 0x9B, 0x8F, 0xEA, +0x83, 0xF5, 0x00, 0x4B, 0xB2, 0x9B, 0x8F, 0xEA, 0xAC, 0xEA, 0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF6, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF6, 0x58, 0x9A, 0x80, 0xDA, +0xA2, 0xF6, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x40, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x22, 0xF2, -0x08, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x58, 0x9B, -0xAD, 0xEA, 0x63, 0xF5, 0x58, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF6, 0x7C, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x60, 0x9B, -0x32, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x18, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, +0x00, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x40, 0x9B, +0xAD, 0xEA, 0x83, 0xF5, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x42, 0xF6, 0x64, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x68, 0x9B, +0x32, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x00, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x6C, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x70, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF5, 0x00, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, +0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x78, 0x9B, 0x10, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x43, 0x9B, +0xAD, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF6, 0x60, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x00, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, -0x68, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, -0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, -0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0x70, 0x9B, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, 0x43, 0x9B, -0xAD, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF6, 0x78, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x18, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x7C, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, -0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0x22, 0xF2, 0x1C, 0x4A, 0x89, 0xE2, +0x88, 0x34, 0x22, 0xF2, 0x14, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x98, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, -0x63, 0xF5, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF6, 0x5C, 0x9A, 0x35, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0x83, 0xF5, 0x80, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0x83, 0xF5, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF6, 0x44, 0x9A, 0x35, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x41, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x68, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, -0x44, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x70, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x4C, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF5, 0x00, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0xF6, 0x4C, 0x9A, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0xA2, 0xF6, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xA2, 0xF6, 0x54, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x43, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x78, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, -0x54, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, 0x84, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x60, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF6, +0x5C, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x44, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF6, 0x60, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x5C, 0x9A, +0x20, 0x6B, 0xC2, 0xF6, 0x68, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x44, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x01, 0x74, 0x15, 0x60, 0x03, 0x24, 0x02, 0x74, 0x23, 0x60, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x54, 0x9B, 0xAD, 0xEA, 0x54, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF6, 0x64, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x68, 0x9B, -0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x18, 0x4B, 0x55, 0x9B, 0xAD, 0xEA, 0x55, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x6C, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, -0x70, 0x9B, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x56, 0x9B, 0xAD, 0xEA, -0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, -0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF6, 0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x20, 0x6B, 0xC2, 0xF6, 0x6C, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x70, 0x9B, +0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x00, 0x4B, 0x55, 0x9B, 0xAD, 0xEA, 0x55, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x74, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, +0x78, 0x9B, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF5, 0x00, 0x4B, 0x56, 0x9B, 0xAD, 0xEA, +0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, +0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF6, 0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x01, 0x74, 0x16, 0x60, 0x03, 0x24, 0x02, 0x74, 0x25, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x94, 0x9B, 0xAF, 0xEA, +0x83, 0xF5, 0x00, 0x4B, 0x94, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF6, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF6, 0x44, 0x9A, 0x23, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0xC2, 0xF6, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x4C, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0x95, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x55, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x70, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, -0x4C, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x96, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF6, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF6, 0x54, 0x9A, 0xA0, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xF6, 0x80, 0x9C, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x58, 0xDB, 0x63, 0xF5, -0x18, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, -0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xF6, 0x88, 0x9C, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0xC2, 0xF6, 0x90, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF6, 0x98, 0x9C, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF6, -0x80, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xE2, 0xF6, 0x88, 0x9C, 0x54, 0xDB, 0x55, 0xDB, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF6, -0x90, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xE2, 0xF6, 0x98, 0x9C, 0x56, 0xDB, 0x40, 0xDC, -0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, -0x7C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x7C, 0x9B, -0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF6, 0x64, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, -0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF6, 0x64, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF6, -0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF6, 0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x10, 0x6E, -0x63, 0xF5, 0xD8, 0xDB, 0x01, 0xF7, 0x01, 0x6A, -0x63, 0xF5, 0x18, 0x4B, 0x08, 0xF0, 0x00, 0x6D, -0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, -0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, -0x60, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF6, 0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF6, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x78, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, -0x40, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, +0x54, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF5, 0x00, 0x4B, 0x96, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF6, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x5C, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, +0xA2, 0xF6, 0x88, 0x9C, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x83, 0xF5, 0x40, 0xDB, 0x83, 0xF5, +0x00, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, +0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xA2, 0xF6, 0x90, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xA2, 0xF6, 0x98, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF6, 0x80, 0x9C, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF6, +0x88, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xC2, 0xF6, 0x90, 0x9C, 0x54, 0xDB, 0x55, 0xDB, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF6, +0x98, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xE2, 0xF6, 0x80, 0x9C, 0x56, 0xDB, 0x40, 0xDC, +0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x64, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x64, 0x9B, +0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF6, 0x6C, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, 0x74, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC2, 0xF6, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF6, 0x6C, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x74, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, +0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x10, 0x6E, +0x83, 0xF5, 0xC0, 0xDB, 0x01, 0xF7, 0x01, 0x6A, +0x83, 0xF5, 0x00, 0x4B, 0x08, 0xF0, 0x00, 0x6D, +0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, +0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x68, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF6, 0x78, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF6, 0x60, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, +0x48, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF5, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xA2, 0xF6, 0x7C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF3, 0x84, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF5, 0x18, 0x4A, +0xC3, 0xF5, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF6, 0x64, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF3, 0x9C, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF5, 0x00, 0x4A, 0x80, 0xF1, 0x06, 0x6D, 0xFF, 0x6B, 0xB4, 0xDA, 0x95, 0xDA, 0x76, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF6, 0x48, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF6, 0x50, 0x9A, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, 0x58, 0x9A, +0xC2, 0xF6, 0x50, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF6, 0x58, 0x9A, 0x80, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, 0x40, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x13, 0x4D, 0x80, 0x18, 0x32, 0x4D, -0x80, 0x18, 0x4A, 0x4D, 0x80, 0x18, 0x66, 0x4D, -0x80, 0x18, 0x60, 0x4D, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0x19, 0x4D, 0x80, 0x18, 0x38, 0x4D, +0x80, 0x18, 0x50, 0x4D, 0x80, 0x18, 0x6C, 0x4D, +0x80, 0x18, 0x66, 0x4D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xBB, 0x4D, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x18, 0x4B, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xC1, 0x4D, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x00, 0x4B, 0xC2, 0xF5, 0x44, 0xC3, 0x00, 0x6A, 0xC2, 0xF5, -0x45, 0xC3, 0x80, 0x18, 0x43, 0x4C, 0x80, 0x18, -0x54, 0x4F, 0x80, 0x18, 0x7D, 0x4D, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF6, 0x5C, 0x9A, 0x3F, 0x6B, -0x60, 0xC2, 0x80, 0x18, 0x34, 0x4C, 0x80, 0x18, -0x38, 0x4C, 0x80, 0x18, 0x4B, 0x4C, 0x80, 0x18, -0x9A, 0x4D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x3F, 0xCB, +0x45, 0xC3, 0x80, 0x18, 0x49, 0x4C, 0x80, 0x18, +0x5A, 0x4F, 0x80, 0x18, 0x83, 0x4D, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF6, 0x44, 0x9A, 0x3F, 0x6B, +0x60, 0xC2, 0x80, 0x18, 0x3A, 0x4C, 0x80, 0x18, +0x3E, 0x4C, 0x80, 0x18, 0x51, 0x4C, 0x80, 0x18, +0xA0, 0x4D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x00, 0x6B, 0x01, 0x6C, +0x83, 0xF5, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x6C, 0x9F, 0xF7, 0x00, 0x6D, 0x00, 0x6E, 0x26, 0xF7, 0x68, 0xC2, 0x26, 0xF7, 0x69, 0xC2, 0x00, 0x18, 0xB9, 0xC4, 0x01, 0x6C, 0x9F, 0xF7, 0x01, 0x6D, @@ -55068,159 +55613,159 @@ u8 array_mp_8822c_fw_spic[] = { 0xB9, 0xC4, 0x01, 0x6C, 0x9F, 0xF7, 0x03, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0xB9, 0xC4, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF7, 0x50, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, +0x22, 0xF7, 0x58, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, 0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF7, 0x74, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, +0x22, 0xF7, 0x7C, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF7, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x62, 0xF6, 0x94, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0x42, 0xF7, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x42, 0xF6, 0x9C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF7, 0x54, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x42, 0xF7, 0x5C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x4C, 0xEB, 0x62, 0x33, 0x03, 0x6A, 0x72, 0x33, 0x4C, 0xEB, 0x02, 0x6A, 0x04, 0x23, 0x01, 0x73, 0x01, 0x6A, 0x01, 0x60, 0x03, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0x10, 0xF0, 0x23, 0x6A, -0x25, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x25, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x45, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x45, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xA6, 0xF6, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x29, 0xF0, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x49, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x47, 0xF5, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x67, 0xF5, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCB, 0xF7, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xF7, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCC, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCC, 0xF0, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, 0xE2, 0xF3, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, 0x42, 0xF5, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x87, 0xF1, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x87, 0xF1, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA6, 0xF4, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA6, 0xF4, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE6, 0xF4, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE6, 0xF4, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x48, 0xF0, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x68, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xA5, 0xF5, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC5, 0xF5, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x05, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x25, 0xF6, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x85, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x85, 0xF6, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA6, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA6, 0xF0, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xC6, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE6, 0xF2, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x69, 0xF3, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x89, 0xF3, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE6, 0xF5, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE6, 0xF5, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xC5, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE5, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, 0xA2, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x8B, 0xF4, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xAB, 0xF4, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, 0xC2, 0xF0, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x0B, 0xF4, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x4B, 0xF3, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x87, 0xF2, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x87, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCB, 0xF3, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xEB, 0xF3, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x4A, 0xF1, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6A, 0xF1, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCA, 0xF1, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xEA, 0xF1, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x4A, 0xF2, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6A, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x8A, 0xF2, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8A, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCA, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCA, 0xF2, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xEA, 0xF2, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x0A, 0xF3, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x2A, 0xF3, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x2A, 0xF3, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCA, 0xF3, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCA, 0xF3, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x8B, 0xF3, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF3, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x8B, 0xF3, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xAB, 0xF3, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCB, 0xF3, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xF3, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xAB, 0xF3, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xF3, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x0A, 0xF7, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x0A, 0xF7, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x8A, 0xF7, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xAA, 0xF7, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xC5, 0xF5, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC5, 0xF5, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE5, 0xF5, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x05, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xC5, 0xF5, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE5, 0xF5, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x64, 0xF7, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF7, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x6C, 0xF0, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xF7, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x31, 0x6A, 0xA0, 0xF4, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x00, 0xF4, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x54, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x61, 0xF5, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x41, 0xF5, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF6, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF6, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x46, 0xF3, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x46, 0xF3, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x66, 0xF7, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x66, 0xF7, 0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x66, 0xF7, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x66, 0xF7, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x67, 0xF0, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x87, 0xF0, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA7, 0xF0, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA7, 0xF0, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA7, 0xF1, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC7, 0xF1, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF1, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC9, 0xF1, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF4, 0x13, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC9, 0xF4, 0x1B, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF4, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF4, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xE9, 0xF4, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x89, 0xF6, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x89, 0xF6, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xCA, 0xF4, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xEA, 0xF4, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF0, 0x00, 0x4B, 0x80, 0xF2, 0x08, 0x4A, 0x13, 0x10, 0x80, 0x9A, 0x10, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x22, 0xF3, 0xA8, 0x9C, 0x30, 0xF0, -0x20, 0x6E, 0x42, 0xF3, 0xD8, 0x9E, 0x80, 0x9D, +0x20, 0x6C, 0x22, 0xF3, 0xA0, 0x9C, 0x30, 0xF0, +0x20, 0x6E, 0x42, 0xF3, 0xD0, 0x9E, 0x80, 0x9D, 0xCD, 0xEC, 0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6C, -0xA2, 0xF7, 0x84, 0x9C, 0x40, 0xDC, 0x04, 0x4A, +0x82, 0xF7, 0x8C, 0x9C, 0x40, 0xDC, 0x04, 0x4A, 0x43, 0xEB, 0xEB, 0x60, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xD5, 0xA2, 0xF7, 0xA8, 0x9B, +0x20, 0x6B, 0x04, 0xD5, 0x82, 0xF7, 0xB0, 0x9B, 0xFF, 0x6A, 0x40, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, 0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, 0x54, 0x9A, 0x00, 0xAA, 0x04, 0x92, 0x2C, 0xE8, 0x2A, 0xEA, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x04, 0x93, @@ -55230,24 +55775,24 @@ u8 array_mp_8822c_fw_spic[] = { 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0xFF, 0x68, 0x0C, 0xEC, 0x2C, 0xEE, 0x2A, 0xED, 0x05, 0xD4, 0x04, 0xD5, 0x06, 0xD6, -0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, -0x68, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, +0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF7, +0x70, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, 0x8C, 0xEA, 0x05, 0x94, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF7, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x42, 0xF5, 0x94, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0x98, 0x9C, +0x82, 0xF7, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x22, 0xF5, 0x9C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x62, 0xF3, 0x90, 0x9C, 0x8D, 0xEA, 0xCD, 0xEA, 0x40, 0xDB, 0x34, 0x10, -0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0xD0, 0x4E, +0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0xD6, 0x4E, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, 0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF7, 0x88, 0x9B, 0x40, 0x6D, +0x20, 0x6B, 0x82, 0xF7, 0x90, 0x9B, 0x40, 0x6D, 0xAB, 0xED, 0x60, 0xA4, 0x2C, 0xEA, 0x0C, 0xEB, 0xAC, 0xEB, 0x05, 0x95, 0xAD, 0xEB, 0x0C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF7, -0x8C, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x42, 0xF5, -0xB4, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF3, 0xB8, 0x9D, +0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF7, +0x94, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x22, 0xF5, +0xBC, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, +0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF3, 0xB0, 0x9D, 0xC4, 0xEA, 0x46, 0x67, 0xAD, 0xEB, 0x04, 0x95, 0x07, 0x96, 0xAC, 0xEA, 0xAF, 0xED, 0xCC, 0xED, 0xAD, 0xEA, 0x2C, 0xEA, 0x4D, 0xEB, 0x60, 0xDC, @@ -55255,68 +55800,68 @@ u8 array_mp_8822c_fw_spic[] = { 0x0A, 0x6C, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x10, 0xF0, -0x00, 0x6D, 0x80, 0x18, 0xD0, 0x4E, 0x05, 0x97, +0x00, 0x6D, 0x80, 0x18, 0xD6, 0x4E, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, -0x31, 0x6A, 0xA7, 0xF4, 0x01, 0x4A, 0x40, 0xDB, +0x20, 0x6B, 0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, +0x31, 0x6A, 0xA7, 0xF4, 0x19, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x31, 0x10, 0x82, 0xF3, 0x08, 0x70, 0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF3, -0x68, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x60, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF5, 0x18, 0x4A, 0x23, 0xF3, 0x70, 0x9A, +0x83, 0xF5, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF7, 0x50, 0x9A, 0x03, 0x6B, +0x20, 0x6A, 0x82, 0xF7, 0x58, 0x9A, 0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x18, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x58, 0x9A, 0x60, 0xA2, +0x20, 0x6A, 0x82, 0xF6, 0x40, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x2A, 0x80, 0x18, -0x22, 0x4F, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF7, 0x50, 0x9A, 0x02, 0x6B, +0x28, 0x4F, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF7, 0x58, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF2, 0x64, 0x9B, 0x10, 0xF0, 0x31, 0x6A, -0xA7, 0xF4, 0x02, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0xA2, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x31, 0x6A, +0xA7, 0xF4, 0x1A, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF7, 0x74, 0x9A, 0x02, 0x6C, +0x20, 0x6A, 0x82, 0xF7, 0x7C, 0x9A, 0x02, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0x9B, 0xFF, 0x6E, 0x41, 0x4E, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF7, 0x78, 0x9A, 0xE0, 0xF3, +0x20, 0x6A, 0xA2, 0xF7, 0x60, 0x9A, 0xE0, 0xF3, 0x1E, 0x4C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xAB, 0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xCB, -0x02, 0x6C, 0x80, 0x18, 0xEB, 0x4E, 0x80, 0xF3, +0x02, 0x6C, 0x80, 0x18, 0xF1, 0x4E, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, 0x00, 0x6C, -0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0xEB, 0x4E, +0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0xF1, 0x4E, 0x00, 0x6C, 0xC4, 0x67, 0x02, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0xEB, 0x4E, 0x00, 0x6C, 0xC4, 0x67, -0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0xEB, 0x4E, +0x80, 0x18, 0xF1, 0x4E, 0x00, 0x6C, 0xC4, 0x67, +0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0xF1, 0x4E, 0x00, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0xEB, 0x4E, 0x10, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0xEB, 0x4E, +0x80, 0x18, 0xF1, 0x4E, 0x10, 0xF0, 0x00, 0x6D, +0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0xF1, 0x4E, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF7, 0x64, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x16, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +0x8E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u32 array_length_mp_8822c_fw_spic = 115168; +u32 array_length_mp_8822c_fw_spic = 115208; #endif /*!(DM_ODM_SUPPORT_TYPE & (ODM_CE))*/ #ifdef CONFIG_WOWLAN u8 array_mp_8822c_fw_wowlan[] = { -0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x00, -0x0D, 0x9C, 0xA8, 0x60, 0x00, 0x00, 0x00, 0x00, -0x09, 0x18, 0x0E, 0x2B, 0xE5, 0x07, 0x00, 0x00, +0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x11, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x14, 0x0F, 0x28, 0xE8, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, -0x00, 0x00, 0x20, 0x80, 0x78, 0x34, 0x00, 0x00, +0x00, 0x00, 0x20, 0x80, 0x90, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x70, 0x95, 0x00, 0x00, 0x40, 0x6A, 0x01, 0x00, +0x38, 0xAA, 0x00, 0x00, 0x58, 0x7F, 0x01, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, @@ -55807,7 +56352,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xB1, 0x49, 0x03, 0x80, 0xFD, 0xFF, 0xFF, 0xFF, +0x85, 0x5D, 0x03, 0x80, 0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -55816,7 +56361,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xA5, 0x48, 0x03, 0x80, +0x00, 0x00, 0x00, 0x00, 0x79, 0x5C, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -55826,7 +56371,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x61, 0x48, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, +0x35, 0x5C, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -55835,8 +56380,8 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x7C, 0x34, 0x20, 0x80, -0x84, 0x34, 0x20, 0x80, 0x61, 0x4C, 0x03, 0x80, +0x00, 0x00, 0x00, 0x00, 0x94, 0x3B, 0x20, 0x80, +0x9C, 0x3B, 0x20, 0x80, 0x35, 0x60, 0x03, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -55846,72 +56391,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x94, 0x34, 0x20, 0x80, 0x8C, 0x34, 0x20, 0x80, -0x01, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x08, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, -0x11, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x89, 0x00, 0x89, 0x00, 0x01, 0x00, 0x00, 0x00, -0x11, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0xA1, 0x00, 0xA1, 0x00, 0x02, 0x00, 0x00, 0x00, -0x11, 0x01, 0x04, 0x03, 0xE0, 0x00, 0x00, 0xFB, -0xE9, 0x14, 0xE9, 0x14, 0x04, 0x00, 0x00, 0x00, -0x11, 0x01, 0x04, 0x01, 0xEF, 0xFF, 0xFF, 0xFA, -0x6C, 0x07, 0x6C, 0x07, 0x06, 0x00, 0x00, 0x00, -0x11, 0x01, 0x04, 0x01, 0xEF, 0xFF, 0xFF, 0xFA, -0x76, 0x0E, 0x76, 0x0E, 0x08, 0x00, 0x00, 0x00, -0x11, 0x01, 0x04, 0x01, 0xEF, 0xFF, 0xFF, 0xFD, -0xAB, 0x01, 0xAB, 0x01, 0x0A, 0x00, 0x00, 0x00, -0x11, 0x01, 0x04, 0x01, 0xE0, 0x00, 0x00, 0xFC, -0xEB, 0x14, 0xEB, 0x14, 0x10, 0x00, 0x00, 0x00, -0x3A, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, -0x0E, 0x00, 0x00, 0x00, 0x3A, 0x04, 0x00, 0x02, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x87, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, -0x11, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xA1, 0x00, 0xA1, 0x00, -0x03, 0x00, 0x00, 0x00, 0x11, 0x01, 0x10, 0x03, -0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, -0xE9, 0x14, 0xE9, 0x14, 0x05, 0x00, 0x00, 0x00, -0x11, 0x01, 0x10, 0x01, 0x02, 0xFF, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x0C, 0x00, 0x6C, 0x07, 0x6C, 0x07, -0x07, 0x00, 0x00, 0x00, 0x11, 0x01, 0x10, 0x01, -0x05, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, -0x6C, 0x07, 0x6C, 0x07, 0x07, 0x00, 0x00, 0x00, -0x11, 0x01, 0x10, 0x01, 0x02, 0xFF, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x0C, 0x00, 0x76, 0x0E, 0x76, 0x0E, -0x09, 0x00, 0x00, 0x00, 0x11, 0x01, 0x10, 0x01, -0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x01, -0xAB, 0x01, 0xAB, 0x01, 0x0B, 0x00, 0x00, 0x00, -0x11, 0x01, 0x10, 0x01, 0x05, 0xFF, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x23, 0x01, 0xAB, 0x01, 0xAB, 0x01, -0x0B, 0x00, 0x00, 0x00, 0x11, 0x01, 0x10, 0x01, -0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, -0xAB, 0x01, 0xAB, 0x01, 0x0B, 0x00, 0x00, 0x00, -0x11, 0x01, 0x10, 0x01, 0x05, 0xFF, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x16, 0x01, 0xAB, 0x01, 0xAB, 0x01, -0x0B, 0x00, 0x00, 0x00, 0x11, 0x01, 0x0E, 0x01, -0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0xAB, 0x01, 0xAB, 0x01, 0x0B, 0x00, 0x00, 0x00, -0x11, 0x01, 0x0E, 0x01, 0x05, 0xFF, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0xAB, 0x01, 0xAB, 0x01, -0x0B, 0x00, 0x00, 0x00, 0x11, 0x01, 0x10, 0x01, -0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, -0xEB, 0x14, 0xEB, 0x14, 0x11, 0x00, 0x00, 0x00, +0xAC, 0x3B, 0x20, 0x80, 0xA4, 0x3B, 0x20, 0x80, 0x01, 0x00, 0x00, 0x00, 0x20, 0x05, 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00, @@ -55935,23 +56415,23 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xA1, 0x30, 0x03, 0x80, -0xAD, 0x30, 0x03, 0x80, 0xB3, 0x30, 0x03, 0x80, -0xB9, 0x30, 0x03, 0x80, 0xC1, 0x30, 0x03, 0x80, -0xF3, 0x30, 0x03, 0x80, 0xFF, 0x30, 0x03, 0x80, -0x05, 0x31, 0x03, 0x80, 0x0B, 0x31, 0x03, 0x80, -0x13, 0x31, 0x03, 0x80, 0x55, 0x31, 0x03, 0x80, -0x5B, 0x31, 0x03, 0x80, 0x67, 0x31, 0x03, 0x80, -0x73, 0x31, 0x03, 0x80, 0x7F, 0x31, 0x03, 0x80, -0xA3, 0x31, 0x03, 0x80, 0xA9, 0x31, 0x03, 0x80, -0xB5, 0x31, 0x03, 0x80, 0xC1, 0x31, 0x03, 0x80, -0xCD, 0x31, 0x03, 0x80, 0x5D, 0x33, 0x03, 0x80, -0x47, 0x34, 0x03, 0x80, 0xBF, 0x33, 0x03, 0x80, -0x47, 0x34, 0x03, 0x80, 0x03, 0x33, 0x03, 0x80, -0x47, 0x34, 0x03, 0x80, 0x47, 0x34, 0x03, 0x80, -0x47, 0x34, 0x03, 0x80, 0x29, 0x34, 0x03, 0x80, -0x47, 0x34, 0x03, 0x80, 0x47, 0x34, 0x03, 0x80, -0x47, 0x34, 0x03, 0x80, 0x9B, 0x32, 0x03, 0x80, +0x00, 0x00, 0x00, 0x00, 0xF5, 0x34, 0x03, 0x80, +0x01, 0x35, 0x03, 0x80, 0x07, 0x35, 0x03, 0x80, +0x0D, 0x35, 0x03, 0x80, 0x15, 0x35, 0x03, 0x80, +0x47, 0x35, 0x03, 0x80, 0x53, 0x35, 0x03, 0x80, +0x59, 0x35, 0x03, 0x80, 0x5F, 0x35, 0x03, 0x80, +0x67, 0x35, 0x03, 0x80, 0xA9, 0x35, 0x03, 0x80, +0xAF, 0x35, 0x03, 0x80, 0xBB, 0x35, 0x03, 0x80, +0xC7, 0x35, 0x03, 0x80, 0xD3, 0x35, 0x03, 0x80, +0xF7, 0x35, 0x03, 0x80, 0xFD, 0x35, 0x03, 0x80, +0x09, 0x36, 0x03, 0x80, 0x15, 0x36, 0x03, 0x80, +0x21, 0x36, 0x03, 0x80, 0xC9, 0x37, 0x03, 0x80, +0xFB, 0x38, 0x03, 0x80, 0x2B, 0x38, 0x03, 0x80, +0xFB, 0x38, 0x03, 0x80, 0x6B, 0x37, 0x03, 0x80, +0xFB, 0x38, 0x03, 0x80, 0xFB, 0x38, 0x03, 0x80, +0xFB, 0x38, 0x03, 0x80, 0x95, 0x38, 0x03, 0x80, +0xFB, 0x38, 0x03, 0x80, 0xFB, 0x38, 0x03, 0x80, +0xFB, 0x38, 0x03, 0x80, 0x03, 0x37, 0x03, 0x80, 0x0C, 0x1D, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x90, 0x1C, 0x00, 0x00, 0xB0, 0x09, 0x00, 0x00, 0x20, 0x0A, 0x00, 0x00, 0x2C, 0x0A, 0x00, 0x00, @@ -55985,170 +56465,466 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x08, 0x16, 0x00, 0x00, 0xA8, 0x06, 0x10, 0x07, 0x00, 0x16, 0x04, 0x16, 0x08, 0x16, 0x00, 0x00, 0x50, 0x05, 0x51, 0x05, 0x78, 0x05, 0x79, 0x05, -0x7A, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0x05, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x00, 0x00, -0x04, 0x5F, 0x73, 0x75, 0x62, 0x00, 0x00, 0x00, -0x33, 0x33, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, -0x05, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x00, 0x00, -0x04, 0x5F, 0x73, 0x75, 0x62, 0x00, 0x00, 0x00, -0xE0, 0x00, 0x00, 0xFB, 0x01, 0x00, 0x5E, 0x00, -0x00, 0xFB, 0x00, 0x00, 0xA8, 0x06, 0x10, 0x07, +0x7A, 0x05, 0x00, 0x00, 0xA8, 0x06, 0x10, 0x07, 0x00, 0x16, 0x04, 0x16, 0x08, 0x16, 0x00, 0x00, 0x10, 0x06, 0x00, 0x07, 0x20, 0x16, 0x30, 0x16, 0x40, 0x16, 0x00, 0x00, 0x18, 0x06, 0x08, 0x07, 0x28, 0x16, 0x38, 0x16, 0x48, 0x16, 0x00, 0x00, 0x18, 0x06, 0x08, 0x07, 0x28, 0x16, 0x38, 0x16, 0x48, 0x16, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, -0x08, 0x04, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, +0x08, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, +0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1A, 0x1A, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, +0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, +0x20, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xFB, +0x33, 0x33, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, +0xE0, 0x00, 0x00, 0xFB, 0x01, 0x00, 0x5E, 0x00, +0x00, 0xFB, 0x00, 0x00, 0xA5, 0x63, 0x63, 0xC6, +0x84, 0x7C, 0x7C, 0xF8, 0x99, 0x77, 0x77, 0xEE, +0x8D, 0x7B, 0x7B, 0xF6, 0x0D, 0xF2, 0xF2, 0xFF, +0xBD, 0x6B, 0x6B, 0xD6, 0xB1, 0x6F, 0x6F, 0xDE, +0x54, 0xC5, 0xC5, 0x91, 0x50, 0x30, 0x30, 0x60, +0x03, 0x01, 0x01, 0x02, 0xA9, 0x67, 0x67, 0xCE, +0x7D, 0x2B, 0x2B, 0x56, 0x19, 0xFE, 0xFE, 0xE7, +0x62, 0xD7, 0xD7, 0xB5, 0xE6, 0xAB, 0xAB, 0x4D, +0x9A, 0x76, 0x76, 0xEC, 0x45, 0xCA, 0xCA, 0x8F, +0x9D, 0x82, 0x82, 0x1F, 0x40, 0xC9, 0xC9, 0x89, +0x87, 0x7D, 0x7D, 0xFA, 0x15, 0xFA, 0xFA, 0xEF, +0xEB, 0x59, 0x59, 0xB2, 0xC9, 0x47, 0x47, 0x8E, +0x0B, 0xF0, 0xF0, 0xFB, 0xEC, 0xAD, 0xAD, 0x41, +0x67, 0xD4, 0xD4, 0xB3, 0xFD, 0xA2, 0xA2, 0x5F, +0xEA, 0xAF, 0xAF, 0x45, 0xBF, 0x9C, 0x9C, 0x23, +0xF7, 0xA4, 0xA4, 0x53, 0x96, 0x72, 0x72, 0xE4, +0x5B, 0xC0, 0xC0, 0x9B, 0xC2, 0xB7, 0xB7, 0x75, +0x1C, 0xFD, 0xFD, 0xE1, 0xAE, 0x93, 0x93, 0x3D, +0x6A, 0x26, 0x26, 0x4C, 0x5A, 0x36, 0x36, 0x6C, +0x41, 0x3F, 0x3F, 0x7E, 0x02, 0xF7, 0xF7, 0xF5, +0x4F, 0xCC, 0xCC, 0x83, 0x5C, 0x34, 0x34, 0x68, +0xF4, 0xA5, 0xA5, 0x51, 0x34, 0xE5, 0xE5, 0xD1, +0x08, 0xF1, 0xF1, 0xF9, 0x93, 0x71, 0x71, 0xE2, +0x73, 0xD8, 0xD8, 0xAB, 0x53, 0x31, 0x31, 0x62, +0x3F, 0x15, 0x15, 0x2A, 0x0C, 0x04, 0x04, 0x08, +0x52, 0xC7, 0xC7, 0x95, 0x65, 0x23, 0x23, 0x46, +0x5E, 0xC3, 0xC3, 0x9D, 0x28, 0x18, 0x18, 0x30, +0xA1, 0x96, 0x96, 0x37, 0x0F, 0x05, 0x05, 0x0A, +0xB5, 0x9A, 0x9A, 0x2F, 0x09, 0x07, 0x07, 0x0E, +0x36, 0x12, 0x12, 0x24, 0x9B, 0x80, 0x80, 0x1B, +0x3D, 0xE2, 0xE2, 0xDF, 0x26, 0xEB, 0xEB, 0xCD, +0x69, 0x27, 0x27, 0x4E, 0xCD, 0xB2, 0xB2, 0x7F, +0x9F, 0x75, 0x75, 0xEA, 0x1B, 0x09, 0x09, 0x12, +0x9E, 0x83, 0x83, 0x1D, 0x74, 0x2C, 0x2C, 0x58, +0x2E, 0x1A, 0x1A, 0x34, 0x2D, 0x1B, 0x1B, 0x36, +0xB2, 0x6E, 0x6E, 0xDC, 0xEE, 0x5A, 0x5A, 0xB4, +0xFB, 0xA0, 0xA0, 0x5B, 0xF6, 0x52, 0x52, 0xA4, +0x4D, 0x3B, 0x3B, 0x76, 0x61, 0xD6, 0xD6, 0xB7, +0xCE, 0xB3, 0xB3, 0x7D, 0x7B, 0x29, 0x29, 0x52, +0x3E, 0xE3, 0xE3, 0xDD, 0x71, 0x2F, 0x2F, 0x5E, +0x97, 0x84, 0x84, 0x13, 0xF5, 0x53, 0x53, 0xA6, +0x68, 0xD1, 0xD1, 0xB9, 0x00, 0x00, 0x00, 0x00, +0x2C, 0xED, 0xED, 0xC1, 0x60, 0x20, 0x20, 0x40, +0x1F, 0xFC, 0xFC, 0xE3, 0xC8, 0xB1, 0xB1, 0x79, +0xED, 0x5B, 0x5B, 0xB6, 0xBE, 0x6A, 0x6A, 0xD4, +0x46, 0xCB, 0xCB, 0x8D, 0xD9, 0xBE, 0xBE, 0x67, +0x4B, 0x39, 0x39, 0x72, 0xDE, 0x4A, 0x4A, 0x94, +0xD4, 0x4C, 0x4C, 0x98, 0xE8, 0x58, 0x58, 0xB0, +0x4A, 0xCF, 0xCF, 0x85, 0x6B, 0xD0, 0xD0, 0xBB, +0x2A, 0xEF, 0xEF, 0xC5, 0xE5, 0xAA, 0xAA, 0x4F, +0x16, 0xFB, 0xFB, 0xED, 0xC5, 0x43, 0x43, 0x86, +0xD7, 0x4D, 0x4D, 0x9A, 0x55, 0x33, 0x33, 0x66, +0x94, 0x85, 0x85, 0x11, 0xCF, 0x45, 0x45, 0x8A, +0x10, 0xF9, 0xF9, 0xE9, 0x06, 0x02, 0x02, 0x04, +0x81, 0x7F, 0x7F, 0xFE, 0xF0, 0x50, 0x50, 0xA0, +0x44, 0x3C, 0x3C, 0x78, 0xBA, 0x9F, 0x9F, 0x25, +0xE3, 0xA8, 0xA8, 0x4B, 0xF3, 0x51, 0x51, 0xA2, +0xFE, 0xA3, 0xA3, 0x5D, 0xC0, 0x40, 0x40, 0x80, +0x8A, 0x8F, 0x8F, 0x05, 0xAD, 0x92, 0x92, 0x3F, +0xBC, 0x9D, 0x9D, 0x21, 0x48, 0x38, 0x38, 0x70, +0x04, 0xF5, 0xF5, 0xF1, 0xDF, 0xBC, 0xBC, 0x63, +0xC1, 0xB6, 0xB6, 0x77, 0x75, 0xDA, 0xDA, 0xAF, +0x63, 0x21, 0x21, 0x42, 0x30, 0x10, 0x10, 0x20, +0x1A, 0xFF, 0xFF, 0xE5, 0x0E, 0xF3, 0xF3, 0xFD, +0x6D, 0xD2, 0xD2, 0xBF, 0x4C, 0xCD, 0xCD, 0x81, +0x14, 0x0C, 0x0C, 0x18, 0x35, 0x13, 0x13, 0x26, +0x2F, 0xEC, 0xEC, 0xC3, 0xE1, 0x5F, 0x5F, 0xBE, +0xA2, 0x97, 0x97, 0x35, 0xCC, 0x44, 0x44, 0x88, +0x39, 0x17, 0x17, 0x2E, 0x57, 0xC4, 0xC4, 0x93, +0xF2, 0xA7, 0xA7, 0x55, 0x82, 0x7E, 0x7E, 0xFC, +0x47, 0x3D, 0x3D, 0x7A, 0xAC, 0x64, 0x64, 0xC8, +0xE7, 0x5D, 0x5D, 0xBA, 0x2B, 0x19, 0x19, 0x32, +0x95, 0x73, 0x73, 0xE6, 0xA0, 0x60, 0x60, 0xC0, +0x98, 0x81, 0x81, 0x19, 0xD1, 0x4F, 0x4F, 0x9E, +0x7F, 0xDC, 0xDC, 0xA3, 0x66, 0x22, 0x22, 0x44, +0x7E, 0x2A, 0x2A, 0x54, 0xAB, 0x90, 0x90, 0x3B, +0x83, 0x88, 0x88, 0x0B, 0xCA, 0x46, 0x46, 0x8C, +0x29, 0xEE, 0xEE, 0xC7, 0xD3, 0xB8, 0xB8, 0x6B, +0x3C, 0x14, 0x14, 0x28, 0x79, 0xDE, 0xDE, 0xA7, +0xE2, 0x5E, 0x5E, 0xBC, 0x1D, 0x0B, 0x0B, 0x16, +0x76, 0xDB, 0xDB, 0xAD, 0x3B, 0xE0, 0xE0, 0xDB, +0x56, 0x32, 0x32, 0x64, 0x4E, 0x3A, 0x3A, 0x74, +0x1E, 0x0A, 0x0A, 0x14, 0xDB, 0x49, 0x49, 0x92, +0x0A, 0x06, 0x06, 0x0C, 0x6C, 0x24, 0x24, 0x48, +0xE4, 0x5C, 0x5C, 0xB8, 0x5D, 0xC2, 0xC2, 0x9F, +0x6E, 0xD3, 0xD3, 0xBD, 0xEF, 0xAC, 0xAC, 0x43, +0xA6, 0x62, 0x62, 0xC4, 0xA8, 0x91, 0x91, 0x39, +0xA4, 0x95, 0x95, 0x31, 0x37, 0xE4, 0xE4, 0xD3, +0x8B, 0x79, 0x79, 0xF2, 0x32, 0xE7, 0xE7, 0xD5, +0x43, 0xC8, 0xC8, 0x8B, 0x59, 0x37, 0x37, 0x6E, +0xB7, 0x6D, 0x6D, 0xDA, 0x8C, 0x8D, 0x8D, 0x01, +0x64, 0xD5, 0xD5, 0xB1, 0xD2, 0x4E, 0x4E, 0x9C, +0xE0, 0xA9, 0xA9, 0x49, 0xB4, 0x6C, 0x6C, 0xD8, +0xFA, 0x56, 0x56, 0xAC, 0x07, 0xF4, 0xF4, 0xF3, +0x25, 0xEA, 0xEA, 0xCF, 0xAF, 0x65, 0x65, 0xCA, +0x8E, 0x7A, 0x7A, 0xF4, 0xE9, 0xAE, 0xAE, 0x47, +0x18, 0x08, 0x08, 0x10, 0xD5, 0xBA, 0xBA, 0x6F, +0x88, 0x78, 0x78, 0xF0, 0x6F, 0x25, 0x25, 0x4A, +0x72, 0x2E, 0x2E, 0x5C, 0x24, 0x1C, 0x1C, 0x38, +0xF1, 0xA6, 0xA6, 0x57, 0xC7, 0xB4, 0xB4, 0x73, +0x51, 0xC6, 0xC6, 0x97, 0x23, 0xE8, 0xE8, 0xCB, +0x7C, 0xDD, 0xDD, 0xA1, 0x9C, 0x74, 0x74, 0xE8, +0x21, 0x1F, 0x1F, 0x3E, 0xDD, 0x4B, 0x4B, 0x96, +0xDC, 0xBD, 0xBD, 0x61, 0x86, 0x8B, 0x8B, 0x0D, +0x85, 0x8A, 0x8A, 0x0F, 0x90, 0x70, 0x70, 0xE0, +0x42, 0x3E, 0x3E, 0x7C, 0xC4, 0xB5, 0xB5, 0x71, +0xAA, 0x66, 0x66, 0xCC, 0xD8, 0x48, 0x48, 0x90, +0x05, 0x03, 0x03, 0x06, 0x01, 0xF6, 0xF6, 0xF7, +0x12, 0x0E, 0x0E, 0x1C, 0xA3, 0x61, 0x61, 0xC2, +0x5F, 0x35, 0x35, 0x6A, 0xF9, 0x57, 0x57, 0xAE, +0xD0, 0xB9, 0xB9, 0x69, 0x91, 0x86, 0x86, 0x17, +0x58, 0xC1, 0xC1, 0x99, 0x27, 0x1D, 0x1D, 0x3A, +0xB9, 0x9E, 0x9E, 0x27, 0x38, 0xE1, 0xE1, 0xD9, +0x13, 0xF8, 0xF8, 0xEB, 0xB3, 0x98, 0x98, 0x2B, +0x33, 0x11, 0x11, 0x22, 0xBB, 0x69, 0x69, 0xD2, +0x70, 0xD9, 0xD9, 0xA9, 0x89, 0x8E, 0x8E, 0x07, +0xA7, 0x94, 0x94, 0x33, 0xB6, 0x9B, 0x9B, 0x2D, +0x22, 0x1E, 0x1E, 0x3C, 0x92, 0x87, 0x87, 0x15, +0x20, 0xE9, 0xE9, 0xC9, 0x49, 0xCE, 0xCE, 0x87, +0xFF, 0x55, 0x55, 0xAA, 0x78, 0x28, 0x28, 0x50, +0x7A, 0xDF, 0xDF, 0xA5, 0x8F, 0x8C, 0x8C, 0x03, +0xF8, 0xA1, 0xA1, 0x59, 0x80, 0x89, 0x89, 0x09, +0x17, 0x0D, 0x0D, 0x1A, 0xDA, 0xBF, 0xBF, 0x65, +0x31, 0xE6, 0xE6, 0xD7, 0xC6, 0x42, 0x42, 0x84, +0xB8, 0x68, 0x68, 0xD0, 0xC3, 0x41, 0x41, 0x82, +0xB0, 0x99, 0x99, 0x29, 0x77, 0x2D, 0x2D, 0x5A, +0x11, 0x0F, 0x0F, 0x1E, 0xCB, 0xB0, 0xB0, 0x7B, +0xFC, 0x54, 0x54, 0xA8, 0xD6, 0xBB, 0xBB, 0x6D, +0x3A, 0x16, 0x16, 0x2C, 0x50, 0xA7, 0xF4, 0x51, +0x53, 0x65, 0x41, 0x7E, 0xC3, 0xA4, 0x17, 0x1A, +0x96, 0x5E, 0x27, 0x3A, 0xCB, 0x6B, 0xAB, 0x3B, +0xF1, 0x45, 0x9D, 0x1F, 0xAB, 0x58, 0xFA, 0xAC, +0x93, 0x03, 0xE3, 0x4B, 0x55, 0xFA, 0x30, 0x20, +0xF6, 0x6D, 0x76, 0xAD, 0x91, 0x76, 0xCC, 0x88, +0x25, 0x4C, 0x02, 0xF5, 0xFC, 0xD7, 0xE5, 0x4F, +0xD7, 0xCB, 0x2A, 0xC5, 0x80, 0x44, 0x35, 0x26, +0x8F, 0xA3, 0x62, 0xB5, 0x49, 0x5A, 0xB1, 0xDE, +0x67, 0x1B, 0xBA, 0x25, 0x98, 0x0E, 0xEA, 0x45, +0xE1, 0xC0, 0xFE, 0x5D, 0x02, 0x75, 0x2F, 0xC3, +0x12, 0xF0, 0x4C, 0x81, 0xA3, 0x97, 0x46, 0x8D, +0xC6, 0xF9, 0xD3, 0x6B, 0xE7, 0x5F, 0x8F, 0x03, +0x95, 0x9C, 0x92, 0x15, 0xEB, 0x7A, 0x6D, 0xBF, +0xDA, 0x59, 0x52, 0x95, 0x2D, 0x83, 0xBE, 0xD4, +0xD3, 0x21, 0x74, 0x58, 0x29, 0x69, 0xE0, 0x49, +0x44, 0xC8, 0xC9, 0x8E, 0x6A, 0x89, 0xC2, 0x75, +0x78, 0x79, 0x8E, 0xF4, 0x6B, 0x3E, 0x58, 0x99, +0xDD, 0x71, 0xB9, 0x27, 0xB6, 0x4F, 0xE1, 0xBE, +0x17, 0xAD, 0x88, 0xF0, 0x66, 0xAC, 0x20, 0xC9, +0xB4, 0x3A, 0xCE, 0x7D, 0x18, 0x4A, 0xDF, 0x63, +0x82, 0x31, 0x1A, 0xE5, 0x60, 0x33, 0x51, 0x97, +0x45, 0x7F, 0x53, 0x62, 0xE0, 0x77, 0x64, 0xB1, +0x84, 0xAE, 0x6B, 0xBB, 0x1C, 0xA0, 0x81, 0xFE, +0x94, 0x2B, 0x08, 0xF9, 0x58, 0x68, 0x48, 0x70, +0x19, 0xFD, 0x45, 0x8F, 0x87, 0x6C, 0xDE, 0x94, +0xB7, 0xF8, 0x7B, 0x52, 0x23, 0xD3, 0x73, 0xAB, +0xE2, 0x02, 0x4B, 0x72, 0x57, 0x8F, 0x1F, 0xE3, +0x2A, 0xAB, 0x55, 0x66, 0x07, 0x28, 0xEB, 0xB2, +0x03, 0xC2, 0xB5, 0x2F, 0x9A, 0x7B, 0xC5, 0x86, +0xA5, 0x08, 0x37, 0xD3, 0xF2, 0x87, 0x28, 0x30, +0xB2, 0xA5, 0xBF, 0x23, 0xBA, 0x6A, 0x03, 0x02, +0x5C, 0x82, 0x16, 0xED, 0x2B, 0x1C, 0xCF, 0x8A, +0x92, 0xB4, 0x79, 0xA7, 0xF0, 0xF2, 0x07, 0xF3, +0xA1, 0xE2, 0x69, 0x4E, 0xCD, 0xF4, 0xDA, 0x65, +0xD5, 0xBE, 0x05, 0x06, 0x1F, 0x62, 0x34, 0xD1, +0x8A, 0xFE, 0xA6, 0xC4, 0x9D, 0x53, 0x2E, 0x34, +0xA0, 0x55, 0xF3, 0xA2, 0x32, 0xE1, 0x8A, 0x05, +0x75, 0xEB, 0xF6, 0xA4, 0x39, 0xEC, 0x83, 0x0B, +0xAA, 0xEF, 0x60, 0x40, 0x06, 0x9F, 0x71, 0x5E, +0x51, 0x10, 0x6E, 0xBD, 0xF9, 0x8A, 0x21, 0x3E, +0x3D, 0x06, 0xDD, 0x96, 0xAE, 0x05, 0x3E, 0xDD, +0x46, 0xBD, 0xE6, 0x4D, 0xB5, 0x8D, 0x54, 0x91, +0x05, 0x5D, 0xC4, 0x71, 0x6F, 0xD4, 0x06, 0x04, +0xFF, 0x15, 0x50, 0x60, 0x24, 0xFB, 0x98, 0x19, +0x97, 0xE9, 0xBD, 0xD6, 0xCC, 0x43, 0x40, 0x89, +0x77, 0x9E, 0xD9, 0x67, 0xBD, 0x42, 0xE8, 0xB0, +0x88, 0x8B, 0x89, 0x07, 0x38, 0x5B, 0x19, 0xE7, +0xDB, 0xEE, 0xC8, 0x79, 0x47, 0x0A, 0x7C, 0xA1, +0xE9, 0x0F, 0x42, 0x7C, 0xC9, 0x1E, 0x84, 0xF8, +0x00, 0x00, 0x00, 0x00, 0x83, 0x86, 0x80, 0x09, +0x48, 0xED, 0x2B, 0x32, 0xAC, 0x70, 0x11, 0x1E, +0x4E, 0x72, 0x5A, 0x6C, 0xFB, 0xFF, 0x0E, 0xFD, +0x56, 0x38, 0x85, 0x0F, 0x1E, 0xD5, 0xAE, 0x3D, +0x27, 0x39, 0x2D, 0x36, 0x64, 0xD9, 0x0F, 0x0A, +0x21, 0xA6, 0x5C, 0x68, 0xD1, 0x54, 0x5B, 0x9B, +0x3A, 0x2E, 0x36, 0x24, 0xB1, 0x67, 0x0A, 0x0C, +0x0F, 0xE7, 0x57, 0x93, 0xD2, 0x96, 0xEE, 0xB4, +0x9E, 0x91, 0x9B, 0x1B, 0x4F, 0xC5, 0xC0, 0x80, +0xA2, 0x20, 0xDC, 0x61, 0x69, 0x4B, 0x77, 0x5A, +0x16, 0x1A, 0x12, 0x1C, 0x0A, 0xBA, 0x93, 0xE2, +0xE5, 0x2A, 0xA0, 0xC0, 0x43, 0xE0, 0x22, 0x3C, +0x1D, 0x17, 0x1B, 0x12, 0x0B, 0x0D, 0x09, 0x0E, +0xAD, 0xC7, 0x8B, 0xF2, 0xB9, 0xA8, 0xB6, 0x2D, +0xC8, 0xA9, 0x1E, 0x14, 0x85, 0x19, 0xF1, 0x57, +0x4C, 0x07, 0x75, 0xAF, 0xBB, 0xDD, 0x99, 0xEE, +0xFD, 0x60, 0x7F, 0xA3, 0x9F, 0x26, 0x01, 0xF7, +0xBC, 0xF5, 0x72, 0x5C, 0xC5, 0x3B, 0x66, 0x44, +0x34, 0x7E, 0xFB, 0x5B, 0x76, 0x29, 0x43, 0x8B, +0xDC, 0xC6, 0x23, 0xCB, 0x68, 0xFC, 0xED, 0xB6, +0x63, 0xF1, 0xE4, 0xB8, 0xCA, 0xDC, 0x31, 0xD7, +0x10, 0x85, 0x63, 0x42, 0x40, 0x22, 0x97, 0x13, +0x20, 0x11, 0xC6, 0x84, 0x7D, 0x24, 0x4A, 0x85, +0xF8, 0x3D, 0xBB, 0xD2, 0x11, 0x32, 0xF9, 0xAE, +0x6D, 0xA1, 0x29, 0xC7, 0x4B, 0x2F, 0x9E, 0x1D, +0xF3, 0x30, 0xB2, 0xDC, 0xEC, 0x52, 0x86, 0x0D, +0xD0, 0xE3, 0xC1, 0x77, 0x6C, 0x16, 0xB3, 0x2B, +0x99, 0xB9, 0x70, 0xA9, 0xFA, 0x48, 0x94, 0x11, +0x22, 0x64, 0xE9, 0x47, 0xC4, 0x8C, 0xFC, 0xA8, +0x1A, 0x3F, 0xF0, 0xA0, 0xD8, 0x2C, 0x7D, 0x56, +0xEF, 0x90, 0x33, 0x22, 0xC7, 0x4E, 0x49, 0x87, +0xC1, 0xD1, 0x38, 0xD9, 0xFE, 0xA2, 0xCA, 0x8C, +0x36, 0x0B, 0xD4, 0x98, 0xCF, 0x81, 0xF5, 0xA6, +0x28, 0xDE, 0x7A, 0xA5, 0x26, 0x8E, 0xB7, 0xDA, +0xA4, 0xBF, 0xAD, 0x3F, 0xE4, 0x9D, 0x3A, 0x2C, +0x0D, 0x92, 0x78, 0x50, 0x9B, 0xCC, 0x5F, 0x6A, +0x62, 0x46, 0x7E, 0x54, 0xC2, 0x13, 0x8D, 0xF6, +0xE8, 0xB8, 0xD8, 0x90, 0x5E, 0xF7, 0x39, 0x2E, +0xF5, 0xAF, 0xC3, 0x82, 0xBE, 0x80, 0x5D, 0x9F, +0x7C, 0x93, 0xD0, 0x69, 0xA9, 0x2D, 0xD5, 0x6F, +0xB3, 0x12, 0x25, 0xCF, 0x3B, 0x99, 0xAC, 0xC8, +0xA7, 0x7D, 0x18, 0x10, 0x6E, 0x63, 0x9C, 0xE8, +0x7B, 0xBB, 0x3B, 0xDB, 0x09, 0x78, 0x26, 0xCD, +0xF4, 0x18, 0x59, 0x6E, 0x01, 0xB7, 0x9A, 0xEC, +0xA8, 0x9A, 0x4F, 0x83, 0x65, 0x6E, 0x95, 0xE6, +0x7E, 0xE6, 0xFF, 0xAA, 0x08, 0xCF, 0xBC, 0x21, +0xE6, 0xE8, 0x15, 0xEF, 0xD9, 0x9B, 0xE7, 0xBA, +0xCE, 0x36, 0x6F, 0x4A, 0xD4, 0x09, 0x9F, 0xEA, +0xD6, 0x7C, 0xB0, 0x29, 0xAF, 0xB2, 0xA4, 0x31, +0x31, 0x23, 0x3F, 0x2A, 0x30, 0x94, 0xA5, 0xC6, +0xC0, 0x66, 0xA2, 0x35, 0x37, 0xBC, 0x4E, 0x74, +0xA6, 0xCA, 0x82, 0xFC, 0xB0, 0xD0, 0x90, 0xE0, +0x15, 0xD8, 0xA7, 0x33, 0x4A, 0x98, 0x04, 0xF1, +0xF7, 0xDA, 0xEC, 0x41, 0x0E, 0x50, 0xCD, 0x7F, +0x2F, 0xF6, 0x91, 0x17, 0x8D, 0xD6, 0x4D, 0x76, +0x4D, 0xB0, 0xEF, 0x43, 0x54, 0x4D, 0xAA, 0xCC, +0xDF, 0x04, 0x96, 0xE4, 0xE3, 0xB5, 0xD1, 0x9E, +0x1B, 0x88, 0x6A, 0x4C, 0xB8, 0x1F, 0x2C, 0xC1, +0x7F, 0x51, 0x65, 0x46, 0x04, 0xEA, 0x5E, 0x9D, +0x5D, 0x35, 0x8C, 0x01, 0x73, 0x74, 0x87, 0xFA, +0x2E, 0x41, 0x0B, 0xFB, 0x5A, 0x1D, 0x67, 0xB3, +0x52, 0xD2, 0xDB, 0x92, 0x33, 0x56, 0x10, 0xE9, +0x13, 0x47, 0xD6, 0x6D, 0x8C, 0x61, 0xD7, 0x9A, +0x7A, 0x0C, 0xA1, 0x37, 0x8E, 0x14, 0xF8, 0x59, +0x89, 0x3C, 0x13, 0xEB, 0xEE, 0x27, 0xA9, 0xCE, +0x35, 0xC9, 0x61, 0xB7, 0xED, 0xE5, 0x1C, 0xE1, +0x3C, 0xB1, 0x47, 0x7A, 0x59, 0xDF, 0xD2, 0x9C, +0x3F, 0x73, 0xF2, 0x55, 0x79, 0xCE, 0x14, 0x18, +0xBF, 0x37, 0xC7, 0x73, 0xEA, 0xCD, 0xF7, 0x53, +0x5B, 0xAA, 0xFD, 0x5F, 0x14, 0x6F, 0x3D, 0xDF, +0x86, 0xDB, 0x44, 0x78, 0x81, 0xF3, 0xAF, 0xCA, +0x3E, 0xC4, 0x68, 0xB9, 0x2C, 0x34, 0x24, 0x38, +0x5F, 0x40, 0xA3, 0xC2, 0x72, 0xC3, 0x1D, 0x16, +0x0C, 0x25, 0xE2, 0xBC, 0x8B, 0x49, 0x3C, 0x28, +0x41, 0x95, 0x0D, 0xFF, 0x71, 0x01, 0xA8, 0x39, +0xDE, 0xB3, 0x0C, 0x08, 0x9C, 0xE4, 0xB4, 0xD8, +0x90, 0xC1, 0x56, 0x64, 0x61, 0x84, 0xCB, 0x7B, +0x70, 0xB6, 0x32, 0xD5, 0x74, 0x5C, 0x6C, 0x48, +0x42, 0x57, 0xB8, 0xD0, 0x52, 0x09, 0x6A, 0xD5, +0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, +0x81, 0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, +0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, 0x43, 0x44, +0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, +0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, +0x42, 0xFA, 0xC3, 0x4E, 0x08, 0x2E, 0xA1, 0x66, +0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, +0x6D, 0x8B, 0xD1, 0x25, 0x72, 0xF8, 0xF6, 0x64, +0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, +0x5D, 0x65, 0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, +0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, +0xA7, 0x8D, 0x9D, 0x84, 0x90, 0xD8, 0xAB, 0x00, +0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, +0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, +0xCA, 0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, +0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91, 0x11, 0x41, +0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, +0xF0, 0xB4, 0xE6, 0x73, 0x96, 0xAC, 0x74, 0x22, +0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, +0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, +0x1D, 0x29, 0xC5, 0x89, 0x6F, 0xB7, 0x62, 0x0E, +0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, +0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, +0x78, 0xCD, 0x5A, 0xF4, 0x1F, 0xDD, 0xA8, 0x33, +0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, +0x27, 0x80, 0xEC, 0x5F, 0x60, 0x51, 0x7F, 0xA9, +0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, +0x93, 0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, +0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, +0x83, 0x53, 0x99, 0x61, 0x17, 0x2B, 0x04, 0x7E, +0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, +0x55, 0x21, 0x0C, 0x7D, 0x01, 0x02, 0x04, 0x08, +0x10, 0x20, 0x40, 0x80, 0x1B, 0x36, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x02, 0x00, 0x00, 0xA8, 0x06, 0x10, 0x07, -0x00, 0x16, 0x04, 0x16, 0x08, 0x16, 0x00, 0x00, -0x7F, 0x46, 0x03, 0x80, 0x79, 0x46, 0x03, 0x80, -0x85, 0x46, 0x03, 0x80, 0x8B, 0x46, 0x03, 0x80, -0x91, 0x46, 0x03, 0x80, 0x97, 0x46, 0x03, 0x80, -0x09, 0x12, 0x1B, 0x24, 0x94, 0x0C, 0x94, 0x0E, -0x94, 0x18, 0x94, 0x1A, 0x0D, 0xA6, 0x10, 0x80, -0xE1, 0xA6, 0x10, 0x80, 0x1D, 0xA6, 0x10, 0x80, -0x53, 0xA6, 0x10, 0x80, 0x8F, 0xA6, 0x10, 0x80, -0xE1, 0xA6, 0x10, 0x80, 0x2B, 0xA7, 0x10, 0x80, -0x43, 0xA7, 0x10, 0x80, 0x4F, 0xA7, 0x10, 0x80, -0x81, 0xA7, 0x10, 0x80, 0xB3, 0xA7, 0x10, 0x80, -0xC3, 0xA7, 0x10, 0x80, 0x09, 0x12, 0x1B, 0x24, -0x5F, 0xD1, 0x10, 0x80, 0xBB, 0xD1, 0x10, 0x80, -0xDF, 0xD1, 0x10, 0x80, 0x0F, 0xD2, 0x10, 0x80, -0x33, 0xD2, 0x10, 0x80, 0x5B, 0xD2, 0x10, 0x80, -0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, -0x55, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, -0x87, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, -0xDE, 0x00, 0x00, 0x00, 0x20, 0x05, 0x00, 0x00, -0x20, 0x08, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00, -0x3C, 0x1C, 0x00, 0x00, 0x58, 0x1D, 0x00, 0x00, -0x64, 0x18, 0x00, 0x00, 0x64, 0x41, 0x00, 0x00, -0x0C, 0x18, 0x00, 0x00, 0x0C, 0x41, 0x00, 0x00, -0x6C, 0x18, 0x00, 0x00, 0x6C, 0x41, 0x00, 0x00, -0x14, 0x1A, 0x00, 0x00, 0x70, 0x1E, 0x00, 0x00, -0x0C, 0x08, 0x00, 0x00, 0x70, 0x1D, 0x00, 0x00, -0x7C, 0x1E, 0x00, 0x00, 0xA4, 0x18, 0x00, 0x00, -0xA4, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xB0, 0x01, 0x00, 0x00, 0x4C, 0x01, 0x00, 0x00, -0x12, 0x01, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, -0xC8, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x00, 0x00, -0x97, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, -0x73, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, -0x56, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, -0x3E, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, -0x2A, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, -0x17, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, -0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x7B, 0x3E, 0x11, 0x80, 0xF3, 0x3F, 0x11, 0x80, -0xCD, 0x40, 0x11, 0x80, 0x77, 0x3E, 0x11, 0x80, -0x77, 0x3E, 0x11, 0x80, 0x7B, 0x3E, 0x11, 0x80, -0x7B, 0x3E, 0x11, 0x80, 0xB5, 0x5E, 0x11, 0x80, -0xD7, 0x5E, 0x11, 0x80, 0xF9, 0x5E, 0x11, 0x80, -0x1B, 0x5F, 0x11, 0x80, 0x3F, 0x5F, 0x11, 0x80, -0x79, 0x5F, 0x11, 0x80, 0x9D, 0x5F, 0x11, 0x80, -0xC1, 0x5F, 0x11, 0x80, 0xE5, 0x5F, 0x11, 0x80, -0x0B, 0x60, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, -0x40, 0x00, 0x00, 0x00, 0xE0, 0x04, 0xE3, 0x04, -0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0x00, 0x00, -0x91, 0x4D, 0x11, 0x80, 0x91, 0x4D, 0x11, 0x80, -0x91, 0x4D, 0x11, 0x80, 0xAB, 0x4D, 0x11, 0x80, -0x91, 0x4D, 0x11, 0x80, 0x91, 0x4D, 0x11, 0x80, -0x91, 0x4D, 0x11, 0x80, 0x8D, 0x4D, 0x11, 0x80, -0x8D, 0x4D, 0x11, 0x80, 0x8D, 0x4D, 0x11, 0x80, -0x8D, 0x4D, 0x11, 0x80, 0x8D, 0x4D, 0x11, 0x80, -0x1B, 0x4E, 0x11, 0x80, 0x25, 0x4E, 0x11, 0x80, -0x47, 0x6B, 0x03, 0x80, 0x57, 0x6B, 0x03, 0x80, -0x61, 0x6B, 0x03, 0x80, 0x6B, 0x6B, 0x03, 0x80, -0x7D, 0x6B, 0x03, 0x80, 0x41, 0x7B, 0x03, 0x80, -0x3D, 0x7B, 0x03, 0x80, 0x41, 0x7B, 0x03, 0x80, -0x3D, 0x7B, 0x03, 0x80, 0x61, 0x7B, 0x03, 0x80, -0x3D, 0x7B, 0x03, 0x80, 0x61, 0x7B, 0x03, 0x80, -0x3D, 0x7B, 0x03, 0x80, 0x81, 0x7B, 0x03, 0x80, -0x3D, 0x7B, 0x03, 0x80, 0x81, 0x7B, 0x03, 0x80, -0x3D, 0x7B, 0x03, 0x80, 0xA1, 0x7B, 0x03, 0x80, -0x3D, 0x7B, 0x03, 0x80, 0xA1, 0x7B, 0x03, 0x80, -0xA9, 0x7C, 0x03, 0x80, 0xA9, 0x7C, 0x03, 0x80, -0xA9, 0x7C, 0x03, 0x80, 0xA9, 0x7C, 0x03, 0x80, -0xC9, 0x7C, 0x03, 0x80, 0xC9, 0x7C, 0x03, 0x80, -0xC9, 0x7C, 0x03, 0x80, 0xC9, 0x7C, 0x03, 0x80, -0xE9, 0x7C, 0x03, 0x80, 0xE9, 0x7C, 0x03, 0x80, -0xE9, 0x7C, 0x03, 0x80, 0xE9, 0x7C, 0x03, 0x80, -0x09, 0x7D, 0x03, 0x80, 0x09, 0x7D, 0x03, 0x80, -0x09, 0x7D, 0x03, 0x80, 0x09, 0x7D, 0x03, 0x80, -0x50, 0x05, 0x00, 0x00, 0x51, 0x05, 0x00, 0x00, -0x78, 0x05, 0x00, 0x00, 0x79, 0x05, 0x00, 0x00, -0x7A, 0x05, 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0xA8, 0x06, 0x10, 0x07, 0x00, 0x16, 0x04, 0x16, +0x08, 0x16, 0x00, 0x00, 0x53, 0x5A, 0x03, 0x80, +0x4D, 0x5A, 0x03, 0x80, 0x59, 0x5A, 0x03, 0x80, +0x5F, 0x5A, 0x03, 0x80, 0x65, 0x5A, 0x03, 0x80, +0x6B, 0x5A, 0x03, 0x80, 0x09, 0x12, 0x1B, 0x24, +0x94, 0x0C, 0x94, 0x0E, 0x94, 0x18, 0x94, 0x1A, +0xA1, 0x9B, 0x10, 0x80, 0x75, 0x9C, 0x10, 0x80, +0xB1, 0x9B, 0x10, 0x80, 0xE7, 0x9B, 0x10, 0x80, +0x23, 0x9C, 0x10, 0x80, 0x75, 0x9C, 0x10, 0x80, +0xBF, 0x9C, 0x10, 0x80, 0xD7, 0x9C, 0x10, 0x80, +0xE3, 0x9C, 0x10, 0x80, 0x15, 0x9D, 0x10, 0x80, +0x47, 0x9D, 0x10, 0x80, 0x57, 0x9D, 0x10, 0x80, +0x09, 0x12, 0x1B, 0x24, 0xF3, 0xC6, 0x10, 0x80, +0x4F, 0xC7, 0x10, 0x80, 0x73, 0xC7, 0x10, 0x80, +0xA3, 0xC7, 0x10, 0x80, 0xC7, 0xC7, 0x10, 0x80, +0xEF, 0xC7, 0x10, 0x80, 0x19, 0x00, 0x00, 0x00, +0x1A, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, +0x63, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, +0x8F, 0x00, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00, +0x20, 0x05, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, +0x24, 0x08, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, +0x58, 0x1D, 0x00, 0x00, 0x64, 0x18, 0x00, 0x00, +0x64, 0x41, 0x00, 0x00, 0x0C, 0x18, 0x00, 0x00, +0x0C, 0x41, 0x00, 0x00, 0x6C, 0x18, 0x00, 0x00, +0x6C, 0x41, 0x00, 0x00, 0x14, 0x1A, 0x00, 0x00, +0x70, 0x1E, 0x00, 0x00, 0x0C, 0x08, 0x00, 0x00, +0x70, 0x1D, 0x00, 0x00, 0x7C, 0x1E, 0x00, 0x00, +0xA4, 0x18, 0x00, 0x00, 0xA4, 0x41, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xB0, 0x01, 0x00, 0x00, +0x4C, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, +0xE8, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, +0xAE, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, +0x84, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, +0x64, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, +0x4A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, +0x33, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, +0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, +0x0F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xE7, 0x52, 0x11, 0x80, +0x5F, 0x54, 0x11, 0x80, 0x39, 0x55, 0x11, 0x80, +0xE3, 0x52, 0x11, 0x80, 0xE3, 0x52, 0x11, 0x80, +0xE7, 0x52, 0x11, 0x80, 0xE7, 0x52, 0x11, 0x80, +0xCD, 0x73, 0x11, 0x80, 0xEF, 0x73, 0x11, 0x80, +0x11, 0x74, 0x11, 0x80, 0x33, 0x74, 0x11, 0x80, +0x57, 0x74, 0x11, 0x80, 0x91, 0x74, 0x11, 0x80, +0xB5, 0x74, 0x11, 0x80, 0xD9, 0x74, 0x11, 0x80, +0xFD, 0x74, 0x11, 0x80, 0x23, 0x75, 0x11, 0x80, +0x01, 0x01, 0x04, 0x10, 0x40, 0x00, 0x00, 0x00, +0xE0, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, +0xE3, 0x04, 0x00, 0x00, 0xFD, 0x61, 0x11, 0x80, +0xFD, 0x61, 0x11, 0x80, 0xFD, 0x61, 0x11, 0x80, +0x17, 0x62, 0x11, 0x80, 0xFD, 0x61, 0x11, 0x80, +0xFD, 0x61, 0x11, 0x80, 0xFD, 0x61, 0x11, 0x80, +0xF9, 0x61, 0x11, 0x80, 0xF9, 0x61, 0x11, 0x80, +0xF9, 0x61, 0x11, 0x80, 0xF9, 0x61, 0x11, 0x80, +0xF9, 0x61, 0x11, 0x80, 0x87, 0x62, 0x11, 0x80, +0x91, 0x62, 0x11, 0x80, 0xBB, 0x7F, 0x03, 0x80, +0xCB, 0x7F, 0x03, 0x80, 0xD5, 0x7F, 0x03, 0x80, +0xDF, 0x7F, 0x03, 0x80, 0xF1, 0x7F, 0x03, 0x80, +0x05, 0x90, 0x03, 0x80, 0x01, 0x90, 0x03, 0x80, +0x05, 0x90, 0x03, 0x80, 0x01, 0x90, 0x03, 0x80, +0x25, 0x90, 0x03, 0x80, 0x01, 0x90, 0x03, 0x80, +0x25, 0x90, 0x03, 0x80, 0x01, 0x90, 0x03, 0x80, +0x45, 0x90, 0x03, 0x80, 0x01, 0x90, 0x03, 0x80, +0x45, 0x90, 0x03, 0x80, 0x01, 0x90, 0x03, 0x80, +0x65, 0x90, 0x03, 0x80, 0x01, 0x90, 0x03, 0x80, +0x65, 0x90, 0x03, 0x80, 0x6D, 0x91, 0x03, 0x80, +0x6D, 0x91, 0x03, 0x80, 0x6D, 0x91, 0x03, 0x80, +0x6D, 0x91, 0x03, 0x80, 0x8D, 0x91, 0x03, 0x80, +0x8D, 0x91, 0x03, 0x80, 0x8D, 0x91, 0x03, 0x80, +0x8D, 0x91, 0x03, 0x80, 0xAD, 0x91, 0x03, 0x80, +0xAD, 0x91, 0x03, 0x80, 0xAD, 0x91, 0x03, 0x80, +0xAD, 0x91, 0x03, 0x80, 0xCD, 0x91, 0x03, 0x80, +0xCD, 0x91, 0x03, 0x80, 0xCD, 0x91, 0x03, 0x80, +0xCD, 0x91, 0x03, 0x80, 0x50, 0x05, 0x00, 0x00, 0x51, 0x05, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x79, 0x05, 0x00, 0x00, 0x7A, 0x05, 0x00, 0x00, -0x47, 0x8B, 0x03, 0x80, 0xA7, 0x8B, 0x03, 0x80, -0x3B, 0x8C, 0x03, 0x80, 0xD9, 0x8C, 0x03, 0x80, -0x7D, 0x8D, 0x03, 0x80, 0xFC, 0x10, 0x60, 0xB8, -0xFA, 0xFA, 0xFA, 0xFA, 0xCF, 0x01, 0x64, 0xB8, -0x8C, 0x04, 0x64, 0xB8, 0x90, 0x04, 0x64, 0xB8, -0x94, 0x04, 0x64, 0xB8, 0x98, 0x04, 0x64, 0xB8, -0x9C, 0x04, 0x64, 0xB8, 0xA0, 0x04, 0x64, 0xB8, -0x77, 0x05, 0x64, 0xB8, 0x6C, 0x05, 0x64, 0xB8, -0x68, 0x05, 0x64, 0xB8, 0x54, 0x05, 0x64, 0xB8, -0x00, 0x00, 0x00, 0x80, 0x70, 0x06, 0x64, 0xB8, -0x78, 0x06, 0x64, 0xB8, 0x00, 0x00, 0x01, 0x80, -0x74, 0x06, 0x64, 0xB8, 0x98, 0x06, 0x64, 0xB8, -0x9C, 0x06, 0x64, 0xB8, 0x54, 0x06, 0x64, 0xB8, -0x58, 0x06, 0x64, 0xB8, 0x5C, 0x06, 0x64, 0xB8, -0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x60, 0xB8, -0x00, 0x00, 0x64, 0xB8, 0xBF, 0x01, 0x64, 0xB8, -0x89, 0x00, 0x60, 0xB8, 0x8A, 0x00, 0x60, 0xB8, -0x1A, 0x04, 0x64, 0xB8, 0x1B, 0x04, 0x64, 0xB8, -0x8C, 0x00, 0x60, 0xB8, 0x01, 0x00, 0xFF, 0x00, -0xF4, 0x11, 0x64, 0xB8, 0x58, 0x05, 0x64, 0xB8, -0xE2, 0x10, 0x60, 0xB8, 0x30, 0x01, 0x64, 0xB8, -0x20, 0x01, 0x64, 0xB8, 0x20, 0x11, 0x64, 0xB8, -0x01, 0x8F, 0x00, 0xF0, 0x28, 0x11, 0x64, 0xB8, -0x30, 0x11, 0x64, 0xB8, 0x38, 0x11, 0x64, 0xB8, -0xE0, 0x11, 0x64, 0xB8, 0x50, 0x00, 0x60, 0xB8, -0x38, 0x01, 0x64, 0xB8, 0x18, 0x34, 0x00, 0xB8, -0x88, 0x10, 0x60, 0xB8, 0xFB, 0x11, 0x64, 0xB8, -0xFA, 0x11, 0x64, 0xB8, 0xF8, 0x11, 0x64, 0xB8, -0xC6, 0x04, 0x64, 0xB8, 0x00, 0x00, 0x66, 0xB8, -0x02, 0x00, 0x60, 0xB8, 0xBF, 0xD8, 0xF1, 0x02, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x41, 0xB7, 0xD8, 0xF1, 0x02, -0x28, 0x06, 0x64, 0xB8, 0x00, 0x00, 0x80, 0xC0, -0x2C, 0x06, 0x64, 0xB8, 0x62, 0x06, 0x64, 0xB8, +0x50, 0x05, 0x00, 0x00, 0x51, 0x05, 0x00, 0x00, +0x78, 0x05, 0x00, 0x00, 0x79, 0x05, 0x00, 0x00, +0x7A, 0x05, 0x00, 0x00, 0x0B, 0xA0, 0x03, 0x80, +0x6B, 0xA0, 0x03, 0x80, 0xFF, 0xA0, 0x03, 0x80, +0x9D, 0xA1, 0x03, 0x80, 0x41, 0xA2, 0x03, 0x80, +0xFC, 0x10, 0x60, 0xB8, 0xFA, 0xFA, 0xFA, 0xFA, +0xCF, 0x01, 0x64, 0xB8, 0x8C, 0x04, 0x64, 0xB8, +0x90, 0x04, 0x64, 0xB8, 0x94, 0x04, 0x64, 0xB8, +0x98, 0x04, 0x64, 0xB8, 0x9C, 0x04, 0x64, 0xB8, +0xA0, 0x04, 0x64, 0xB8, 0x77, 0x05, 0x64, 0xB8, +0x6C, 0x05, 0x64, 0xB8, 0x68, 0x05, 0x64, 0xB8, +0x54, 0x05, 0x64, 0xB8, 0x00, 0x00, 0x00, 0x80, +0x70, 0x06, 0x64, 0xB8, 0x78, 0x06, 0x64, 0xB8, +0x00, 0x00, 0x01, 0x80, 0x74, 0x06, 0x64, 0xB8, +0x98, 0x06, 0x64, 0xB8, 0x9C, 0x06, 0x64, 0xB8, +0x54, 0x06, 0x64, 0xB8, 0x58, 0x06, 0x64, 0xB8, +0x5C, 0x06, 0x64, 0xB8, 0xFF, 0xFF, 0xFF, 0x8F, +0x00, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x64, 0xB8, +0xBF, 0x01, 0x64, 0xB8, 0x89, 0x00, 0x60, 0xB8, +0x8A, 0x00, 0x60, 0xB8, 0x1A, 0x04, 0x64, 0xB8, +0x1B, 0x04, 0x64, 0xB8, 0x8C, 0x00, 0x60, 0xB8, +0x01, 0x00, 0xFF, 0x00, 0xF4, 0x11, 0x64, 0xB8, +0x58, 0x05, 0x64, 0xB8, 0xE2, 0x10, 0x60, 0xB8, +0x30, 0x01, 0x64, 0xB8, 0x20, 0x01, 0x64, 0xB8, +0x20, 0x11, 0x64, 0xB8, 0x01, 0x8F, 0x00, 0xF0, +0x28, 0x11, 0x64, 0xB8, 0x30, 0x11, 0x64, 0xB8, +0x38, 0x11, 0x64, 0xB8, 0xE0, 0x11, 0x64, 0xB8, +0x50, 0x00, 0x60, 0xB8, 0x38, 0x01, 0x64, 0xB8, +0x18, 0x34, 0x00, 0xB8, 0x88, 0x10, 0x60, 0xB8, +0xFB, 0x11, 0x64, 0xB8, 0xFA, 0x11, 0x64, 0xB8, +0xF8, 0x11, 0x64, 0xB8, 0xC6, 0x04, 0x64, 0xB8, +0x00, 0x00, 0x66, 0xB8, 0x02, 0x00, 0x60, 0xB8, +0xBF, 0xD8, 0xF1, 0x02, 0x00, 0x00, 0x00, 0x40, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, +0xB7, 0xD8, 0xF1, 0x02, 0x28, 0x06, 0x64, 0xB8, +0x00, 0x00, 0x80, 0xC0, 0x2C, 0x06, 0x64, 0xB8, +0xB1, 0x05, 0x64, 0xB8, 0x62, 0x06, 0x64, 0xB8, 0x00, 0x01, 0x64, 0xB8, 0x2C, 0x02, 0x64, 0xB8, 0x44, 0x02, 0x64, 0xB8, 0x4C, 0x02, 0x64, 0xB8, 0x54, 0x02, 0x64, 0xB8, 0xD8, 0x04, 0x64, 0xB8, @@ -56164,76 +56940,72 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xFF, 0x00, 0xFF, 0x00, 0x96, 0x02, 0x64, 0xB8, 0x86, 0x02, 0x64, 0xB8, 0xA2, 0x02, 0x64, 0xB8, 0xCC, 0x01, 0x64, 0xB8, 0x0A, 0x06, 0x64, 0xB8, -0xB1, 0x05, 0x64, 0xB8, 0xCA, 0x01, 0x64, 0xB8, -0x5B, 0x01, 0x64, 0xB8, 0x3C, 0x01, 0x64, 0xB8, -0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, -0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, -0x22, 0x05, 0x64, 0xB8, 0x3F, 0x42, 0x0F, 0x00, -0xFE, 0x11, 0x64, 0xB8, 0x7F, 0x00, 0x00, 0x01, -0x02, 0x00, 0x00, 0x01, 0xFC, 0x11, 0x64, 0xB8, -0xE0, 0x10, 0x60, 0xB8, 0x57, 0x01, 0x64, 0xB8, -0x31, 0x00, 0x78, 0xB8, 0x1D, 0x04, 0x64, 0xB8, -0x7A, 0x04, 0x64, 0xB8, 0x80, 0x01, 0x64, 0xB8, -0x84, 0x01, 0x64, 0xB8, 0x72, 0x06, 0x64, 0xB8, +0xCA, 0x01, 0x64, 0xB8, 0x5B, 0x01, 0x64, 0xB8, +0x3C, 0x01, 0x64, 0xB8, 0x00, 0x00, 0x1E, 0x00, +0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, +0x00, 0x00, 0x08, 0x00, 0x22, 0x05, 0x64, 0xB8, +0x3F, 0x42, 0x0F, 0x00, 0xFE, 0x11, 0x64, 0xB8, +0x7F, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, +0xFC, 0x11, 0x64, 0xB8, 0xE0, 0x10, 0x60, 0xB8, +0x57, 0x01, 0x64, 0xB8, 0x31, 0x00, 0x78, 0xB8, +0x1D, 0x04, 0x64, 0xB8, 0x7A, 0x04, 0x64, 0xB8, +0x80, 0x01, 0x64, 0xB8, 0x84, 0x01, 0x64, 0xB8, +0x08, 0x00, 0x78, 0xB8, 0x10, 0x00, 0x78, 0xB8, +0x20, 0x00, 0x78, 0xB8, 0x38, 0x00, 0x78, 0xB8, 0xA9, 0x00, 0x78, 0xB8, 0x61, 0x00, 0x78, 0xB8, 0x01, 0x00, 0x78, 0xB8, 0xB9, 0x00, 0x78, 0xB8, 0xC1, 0x01, 0x64, 0xB8, 0xB9, 0x01, 0x64, 0xB8, -0xC3, 0x01, 0x64, 0xB8, 0x24, 0x04, 0x64, 0xB8, -0x40, 0x00, 0x78, 0xB8, 0x50, 0x00, 0x78, 0xB8, -0x38, 0x00, 0x78, 0xB8, 0x48, 0x00, 0x78, 0xB8, -0x1C, 0x04, 0x64, 0xB8, 0x34, 0x00, 0x78, 0xB8, -0x46, 0x00, 0x78, 0xB8, 0x07, 0x00, 0x78, 0xB8, -0x0B, 0x00, 0x78, 0xB8, 0x0C, 0x00, 0x78, 0xB8, -0xFF, 0xFF, 0x77, 0xB8, 0xFE, 0xFF, 0x77, 0xB8, -0x64, 0x00, 0x78, 0xB8, 0x65, 0x00, 0x78, 0xB8, -0x3C, 0x00, 0x78, 0xB8, 0x3D, 0x00, 0x78, 0xB8, -0x3E, 0x00, 0x78, 0xB8, 0x3F, 0x00, 0x78, 0xB8, -0x58, 0x00, 0x78, 0xB8, 0x59, 0x00, 0x78, 0xB8, -0x5A, 0x00, 0x78, 0xB8, 0x5B, 0x00, 0x78, 0xB8, -0x5C, 0x00, 0x78, 0xB8, 0x5D, 0x00, 0x78, 0xB8, -0x5E, 0x00, 0x78, 0xB8, 0x5F, 0x00, 0x78, 0xB8, -0x39, 0x00, 0x78, 0xB8, 0x3A, 0x00, 0x78, 0xB8, -0x3B, 0x00, 0x78, 0xB8, 0xC0, 0x01, 0x64, 0xB8, -0x4C, 0x00, 0x78, 0xB8, 0x51, 0x00, 0x78, 0xB8, -0x00, 0x00, 0x70, 0xB8, 0x4A, 0x00, 0x78, 0xB8, -0x00, 0x00, 0xFF, 0x00, 0x24, 0x01, 0x64, 0xB8, -0xB8, 0x01, 0x64, 0xB8, 0x38, 0x00, 0x60, 0xB8, -0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x09, 0x00, -0xF4, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFC, 0xFF, -0xC0, 0x00, 0x60, 0xB8, 0x60, 0x00, 0x60, 0xB8, +0xC3, 0x01, 0x64, 0xB8, 0x00, 0x00, 0xFF, 0x00, +0x24, 0x01, 0x64, 0xB8, 0xB8, 0x01, 0x64, 0xB8, +0x38, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0x00, 0xFF, +0x00, 0x00, 0x09, 0x00, 0xF4, 0x00, 0x60, 0xB8, +0xFF, 0xFF, 0xFC, 0xFF, 0xC0, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0xB8, 0x44, 0x00, 0x60, 0xB8, 0xBC, 0x01, 0x64, 0xB8, 0x01, 0x00, 0x00, 0x80, 0x4D, 0x01, 0x64, 0xB8, -0x18, 0x00, 0x78, 0xB8, 0x28, 0x00, 0x78, 0xB8, -0x10, 0x00, 0x78, 0xB8, 0x08, 0x00, 0x78, 0xB8, -0x09, 0x00, 0x78, 0xB8, 0x0A, 0x00, 0x78, 0xB8, -0x09, 0x06, 0x64, 0xB8, 0x08, 0x06, 0x64, 0xB8, -0xFF, 0xFF, 0xFF, 0x7F, 0x05, 0x00, 0x60, 0xB8, -0x04, 0x00, 0x78, 0xB8, 0x7A, 0x00, 0x78, 0xB8, -0x60, 0x00, 0x78, 0xB8, 0x54, 0x00, 0x78, 0xB8, -0x70, 0x11, 0x01, 0x00, 0x20, 0x00, 0x78, 0xB8, -0xC4, 0x01, 0x64, 0xB8, 0xA5, 0xA5, 0xA5, 0xA5, -0xC2, 0x01, 0x64, 0xB8, 0x05, 0x00, 0x78, 0xB8, -0x02, 0x00, 0x78, 0xB8, 0x06, 0x00, 0x78, 0xB8, -0x0D, 0x00, 0x78, 0xB8, 0x0E, 0x00, 0x78, 0xB8, -0x0F, 0x00, 0x78, 0xB8, 0x14, 0x00, 0x78, 0xB8, -0x02, 0x00, 0x64, 0xB8, 0x86, 0x00, 0x60, 0xB8, -0x87, 0x00, 0x60, 0xB8, 0x88, 0x00, 0x60, 0xB8, -0x84, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x02, -0xCB, 0x01, 0x64, 0xB8, 0x00, 0x00, 0x68, 0xB8, -0x04, 0x00, 0x68, 0xB8, 0x08, 0x00, 0x68, 0xB8, -0x0C, 0x00, 0x68, 0xB8, 0x00, 0x00, 0x00, 0x03, -0x00, 0x00, 0x00, 0x42, 0xE0, 0x00, 0x60, 0xB8, -0xFF, 0xFF, 0xFF, 0xFD, 0xE3, 0x00, 0x60, 0xB8, -0x00, 0x00, 0x00, 0x01, 0xE1, 0x00, 0x60, 0xB8, -0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, -0xCC, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0x03, 0x00, -0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFB, -0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0x1F, -0x04, 0x00, 0x60, 0xB8, 0x04, 0x00, 0x64, 0xB8, -0x08, 0x00, 0x60, 0xB8, 0x08, 0x00, 0x64, 0xB8, -0xE8, 0x12, 0x64, 0xB8, 0x24, 0x00, 0x60, 0xB8, -0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, -0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xEF, +0x28, 0x00, 0x78, 0xB8, 0x46, 0x00, 0x78, 0xB8, +0x50, 0x00, 0x78, 0xB8, 0x40, 0x00, 0x78, 0xB8, +0x4A, 0x00, 0x78, 0xB8, 0x34, 0x00, 0x78, 0xB8, +0x18, 0x00, 0x78, 0xB8, 0x09, 0x00, 0x78, 0xB8, +0x0A, 0x00, 0x78, 0xB8, 0x09, 0x06, 0x64, 0xB8, +0x08, 0x06, 0x64, 0xB8, 0xFF, 0xFF, 0xFF, 0x7F, +0x05, 0x00, 0x60, 0xB8, 0x04, 0x00, 0x78, 0xB8, +0x94, 0x00, 0x90, 0x00, 0x1C, 0x04, 0x64, 0xB8, +0x51, 0x00, 0x78, 0xB8, 0x52, 0x00, 0x78, 0xB8, +0x53, 0x00, 0x78, 0xB8, 0x06, 0x00, 0x78, 0xB8, +0x7A, 0x00, 0x78, 0xB8, 0x60, 0x00, 0x78, 0xB8, +0x54, 0x00, 0x78, 0xB8, 0xC0, 0x01, 0x64, 0xB8, +0x22, 0x00, 0x78, 0xB8, 0x23, 0x00, 0x78, 0xB8, +0x80, 0x11, 0x78, 0xB8, 0x00, 0xFF, 0x77, 0xB8, +0x01, 0xFF, 0x77, 0xB8, 0xFE, 0xFF, 0x77, 0xB8, +0x64, 0x00, 0x78, 0xB8, 0x65, 0x00, 0x78, 0xB8, +0x3C, 0x00, 0x78, 0xB8, 0x3D, 0x00, 0x78, 0xB8, +0x48, 0x00, 0x78, 0xB8, 0x3A, 0x00, 0x78, 0xB8, +0x3B, 0x00, 0x78, 0xB8, 0x00, 0x00, 0x00, 0xFF, +0x70, 0x11, 0x01, 0x00, 0xC4, 0x01, 0x64, 0xB8, +0xA5, 0xA5, 0xA5, 0xA5, 0xC2, 0x01, 0x64, 0xB8, +0x05, 0x00, 0x78, 0xB8, 0x02, 0x00, 0x78, 0xB8, +0x0C, 0x00, 0x78, 0xB8, 0x0D, 0x00, 0x78, 0xB8, +0x0E, 0x00, 0x78, 0xB8, 0x0F, 0x00, 0x78, 0xB8, +0x14, 0x00, 0x78, 0xB8, 0x02, 0x00, 0x64, 0xB8, +0x86, 0x00, 0x60, 0xB8, 0x87, 0x00, 0x60, 0xB8, +0x88, 0x00, 0x60, 0xB8, 0x84, 0x00, 0x60, 0xB8, +0x00, 0x00, 0x00, 0x02, 0xCB, 0x01, 0x64, 0xB8, +0x00, 0x00, 0x68, 0xB8, 0x04, 0x00, 0x68, 0xB8, +0x08, 0x00, 0x68, 0xB8, 0x0C, 0x00, 0x68, 0xB8, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x42, +0xE0, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFF, 0xFD, +0xE3, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x01, +0xE1, 0x00, 0x60, 0xB8, 0x00, 0x00, 0x00, 0x60, +0x00, 0x00, 0x00, 0x20, 0xCC, 0x00, 0x60, 0xB8, +0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, +0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xDF, +0xFF, 0xFF, 0xFF, 0x1F, 0x04, 0x00, 0x60, 0xB8, +0x04, 0x00, 0x64, 0xB8, 0x08, 0x00, 0x60, 0xB8, +0x08, 0x00, 0x64, 0xB8, 0xE8, 0x12, 0x64, 0xB8, +0x24, 0x00, 0x60, 0xB8, 0xFF, 0xFF, 0xFD, 0xFF, +0xFF, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x10, +0xFF, 0xFF, 0xFF, 0xEF, 0x24, 0x04, 0x64, 0xB8, 0xB0, 0x02, 0x64, 0xB8, 0x1C, 0x01, 0x64, 0xB8, 0x00, 0x0C, 0x01, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x08, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, @@ -56247,9 +57019,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xB4, 0x06, 0x64, 0xB8, 0x06, 0x00, 0x00, 0x89, 0x00, 0x0A, 0x08, 0x00, 0x01, 0x00, 0x66, 0xB8, 0x44, 0x00, 0x78, 0xB8, 0x01, 0x00, 0x00, 0xC0, -0x01, 0x00, 0x00, 0x60, 0x52, 0x29, 0x46, 0xE2, -0x03, 0x29, 0x29, 0x00, 0x32, 0xFC, 0x18, 0xA2, -0x08, 0x00, 0x04, 0x05, 0x01, 0x00, 0x0F, 0x70, +0x01, 0x00, 0x00, 0x60, 0x01, 0x00, 0x0F, 0x70, 0x01, 0x00, 0x1F, 0x70, 0x01, 0x00, 0x2F, 0x70, 0x01, 0x00, 0x3F, 0x70, 0x01, 0x00, 0x4F, 0x70, 0x01, 0x00, 0x5F, 0x70, 0x01, 0x00, 0x6F, 0x70, @@ -56272,732 +57042,734 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x60, 0xB8, 0xEF, 0x00, 0x60, 0xB8, 0x03, 0x00, 0x00, 0xC0, -0x03, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xFF, -0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xC0, -0x08, 0x18, 0x07, 0x00, 0x08, 0x0C, 0x07, 0x00, -0x00, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x04, 0x00, -0xFF, 0x60, 0x0F, 0x00, 0x3F, 0xD8, 0x0F, 0x00, -0xFF, 0x60, 0x07, 0x00, 0x3F, 0xD8, 0x0D, 0x00, -0xFF, 0xDE, 0x07, 0x00, 0xBF, 0xF7, 0x0D, 0x00, -0x00, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x7C, 0x00, -0x00, 0xF0, 0x01, 0x00, 0x5E, 0x00, 0xA1, 0xFF, -0x00, 0x00, 0xFF, 0x1F, 0xFF, 0x1F, 0x00, 0x04, -0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x30, -0xF0, 0x00, 0x04, 0x00, 0xF0, 0x00, 0x04, 0x04, -0xF0, 0x00, 0x04, 0x08, 0xF0, 0x00, 0x04, 0x01, -0xF0, 0x00, 0x04, 0x05, 0xF0, 0x00, 0x04, 0x09, -0xF0, 0x00, 0x04, 0x02, 0xF0, 0x00, 0x04, 0x06, -0xF0, 0x00, 0x04, 0x0A, 0xF0, 0x00, 0x04, 0x03, -0xF0, 0x00, 0x04, 0x07, 0xF0, 0x00, 0x04, 0x0B, -0xF0, 0x00, 0x04, 0x0C, 0xF0, 0x00, 0x04, 0x10, -0xF0, 0x00, 0x04, 0x0D, 0xF0, 0x00, 0x04, 0x11, -0xF0, 0x00, 0x04, 0x0E, 0xF0, 0x00, 0x04, 0x12, -0xF0, 0x00, 0x04, 0x0F, 0xF0, 0x00, 0x04, 0x13, -0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, -0xF0, 0x00, 0x09, 0x00, 0x17, 0x00, 0x05, 0x00, -0x00, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x10, 0x1F, -0x00, 0x00, 0x0D, 0x1F, 0x0B, 0x17, 0x23, 0x3B, -0x47, 0x53, 0x5F, 0x77, 0x00, 0x48, 0x08, 0x00, -0x01, 0x48, 0x08, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, -0x80, 0x66, 0x06, 0x01, 0x10, 0x13, 0x00, 0x80, -0xDB, 0x00, 0x00, 0x81, 0xDB, 0x00, 0x00, 0x01, -0x00, 0x00, 0x02, 0x05, 0x0C, 0x19, 0x00, 0x82, -0x0C, 0x19, 0x00, 0x02, 0x14, 0xEE, 0x01, 0x83, -0x14, 0xEE, 0x01, 0x03, 0x08, 0x00, 0x02, 0x05, -0x3F, 0x00, 0x00, 0xC0, 0x14, 0x3E, 0x03, 0x00, -0xFF, 0xFF, 0xFF, 0x03, 0x12, 0x33, 0x03, 0x00, -0x11, 0x33, 0x03, 0x00, 0x12, 0x11, 0x01, 0x00, -0x31, 0xC9, 0x62, 0x49, 0x55, 0x24, 0x01, 0xFF, -0xC8, 0xFE, 0x18, 0x3E, 0xDE, 0xF0, 0xFA, 0x00, -0x44, 0x23, 0x12, 0x00, 0x00, 0xF0, 0x1F, 0x00, -0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, -0x3F, 0xFF, 0xFE, 0xDF, 0x00, 0x00, 0x60, 0x00, -0x00, 0xFF, 0x0F, 0x00, 0x01, 0x80, 0x03, 0x70, -0x01, 0x80, 0x53, 0x70, 0x01, 0x80, 0x73, 0x70, -0x01, 0x80, 0x83, 0x70, 0x01, 0x80, 0x93, 0x70, -0x01, 0x80, 0xA3, 0x70, 0x01, 0x80, 0xB3, 0x70, -0x01, 0x80, 0xC3, 0x70, 0x01, 0x80, 0xD3, 0x70, -0x01, 0x80, 0xE3, 0x70, 0x01, 0x80, 0xF3, 0x70, -0x01, 0x80, 0x0B, 0x70, 0x01, 0x80, 0x5B, 0x70, +0x03, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0F, 0x80, +0x00, 0x00, 0x0F, 0xC0, 0x08, 0x18, 0x07, 0x00, +0x08, 0x0C, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x00, +0x08, 0x00, 0x04, 0x00, 0xFF, 0x60, 0x0F, 0x00, +0x3F, 0xD8, 0x0F, 0x00, 0xFF, 0x60, 0x07, 0x00, +0x3F, 0xD8, 0x0D, 0x00, 0xFF, 0xDE, 0x07, 0x00, +0xBF, 0xF7, 0x0D, 0x00, 0x00, 0xC0, 0x0F, 0x00, +0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x01, 0x00, +0x5E, 0x00, 0xA1, 0xFF, 0x00, 0x00, 0xFF, 0x1F, +0xFF, 0x1F, 0x00, 0x04, 0x00, 0x00, 0xFF, 0xFF, +0x80, 0x00, 0x00, 0x30, 0xF0, 0x00, 0x04, 0x00, +0xF0, 0x00, 0x04, 0x04, 0xF0, 0x00, 0x04, 0x08, +0xF0, 0x00, 0x04, 0x01, 0xF0, 0x00, 0x04, 0x05, +0xF0, 0x00, 0x04, 0x09, 0xF0, 0x00, 0x04, 0x02, +0xF0, 0x00, 0x04, 0x06, 0xF0, 0x00, 0x04, 0x0A, +0xF0, 0x00, 0x04, 0x03, 0xF0, 0x00, 0x04, 0x07, +0xF0, 0x00, 0x04, 0x0B, 0xF0, 0x00, 0x04, 0x0C, +0xF0, 0x00, 0x04, 0x10, 0xF0, 0x00, 0x04, 0x0D, +0xF0, 0x00, 0x04, 0x11, 0xF0, 0x00, 0x04, 0x0E, +0xF0, 0x00, 0x04, 0x12, 0xF0, 0x00, 0x04, 0x0F, +0xF0, 0x00, 0x04, 0x13, 0x00, 0x00, 0x06, 0x00, +0x01, 0x00, 0x06, 0x00, 0xF0, 0x00, 0x09, 0x00, +0x17, 0x00, 0x05, 0x00, 0x00, 0xC0, 0x07, 0x00, +0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x0D, 0x1F, +0x0B, 0x17, 0x23, 0x3B, 0x47, 0x53, 0x5F, 0x77, +0x00, 0x48, 0x08, 0x00, 0x01, 0x48, 0x08, 0x00, +0xFF, 0xFF, 0xFF, 0x0F, 0x80, 0x66, 0x06, 0x01, +0x10, 0x13, 0x00, 0x80, 0xDB, 0x00, 0x00, 0x81, +0xDB, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x05, +0x0C, 0x19, 0x00, 0x82, 0x0C, 0x19, 0x00, 0x02, +0x14, 0xEE, 0x01, 0x83, 0x14, 0xEE, 0x01, 0x03, +0x08, 0x00, 0x02, 0x05, 0x3F, 0x00, 0x00, 0xC0, +0x14, 0x3E, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0x03, +0x12, 0x33, 0x03, 0x00, 0x11, 0x33, 0x03, 0x00, +0x12, 0x11, 0x01, 0x00, 0x31, 0xC9, 0x62, 0x49, +0x55, 0x24, 0x01, 0xFF, 0xC8, 0xFE, 0x18, 0x3E, +0xDE, 0xF0, 0xFA, 0x00, 0x44, 0x23, 0x12, 0x00, +0x00, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x78, +0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0xDF, +0x00, 0x00, 0x60, 0x00, 0x00, 0xFF, 0x0F, 0x00, +0x01, 0x80, 0x03, 0x70, 0x01, 0x80, 0x53, 0x70, +0x01, 0x80, 0x73, 0x70, 0x01, 0x80, 0x83, 0x70, +0x01, 0x80, 0x93, 0x70, 0x01, 0x80, 0xA3, 0x70, +0x01, 0x80, 0xB3, 0x70, 0x01, 0x80, 0xC3, 0x70, +0x01, 0x80, 0xD3, 0x70, 0x01, 0x80, 0xE3, 0x70, +0x01, 0x80, 0xF3, 0x70, 0x01, 0x80, 0x0B, 0x70, +0x01, 0x80, 0x5B, 0x70, 0x01, 0x80, 0x7B, 0x70, +0x01, 0x80, 0x8B, 0x70, 0x01, 0x80, 0x9B, 0x70, +0x01, 0x80, 0xAB, 0x70, 0x01, 0x80, 0xBB, 0x70, +0x01, 0x80, 0xCB, 0x70, 0x01, 0x80, 0xDB, 0x70, +0x01, 0x80, 0xEB, 0x70, 0x01, 0x80, 0xFB, 0x70, +0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, +0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, +0x00, 0xFC, 0xF8, 0xFF, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x70, 0xB8, +0x18, 0x00, 0x70, 0xB8, 0x0B, 0x00, 0x70, 0xB8, +0x02, 0x00, 0x70, 0xB8, 0x94, 0x02, 0x64, 0xB8, +0x97, 0x02, 0x64, 0xB8, 0x84, 0x02, 0x64, 0xB8, +0x00, 0xFF, 0xFF, 0x00, 0x06, 0x00, 0x66, 0xB8, +0x50, 0x02, 0x64, 0xB8, 0x48, 0x02, 0x64, 0xB8, +0x00, 0x00, 0x07, 0x00, 0x74, 0x00, 0x18, 0x2E, +0x74, 0x00, 0x19, 0x2E, 0x01, 0x00, 0x60, 0xB8, +0x01, 0x00, 0x64, 0xB8, 0x34, 0x01, 0x64, 0xB8, +0x64, 0x05, 0x64, 0xB8, 0x60, 0x05, 0x64, 0xB8, +0xC8, 0x01, 0x64, 0xB8, 0xC9, 0x01, 0x64, 0xB8, +0x0C, 0xEA, 0xEF, 0xFD, 0xA0, 0x01, 0x64, 0xB8, +0x48, 0x00, 0x60, 0xB8, 0x47, 0x00, 0x60, 0xB8, +0x46, 0x00, 0x60, 0xB8, 0x63, 0x00, 0x60, 0xB8, +0x62, 0x00, 0x60, 0xB8, 0x45, 0x00, 0x60, 0xB8, +0x61, 0x00, 0x60, 0xB8, 0xC6, 0x01, 0x64, 0xB8, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, +0x64, 0x01, 0x64, 0xB8, 0x53, 0x05, 0x64, 0xB8, +0x94, 0x01, 0x64, 0xB8, 0x00, 0x1C, 0x66, 0xB8, +0x54, 0x00, 0x60, 0xB8, 0x24, 0x11, 0x64, 0xB8, +0x2C, 0x11, 0x64, 0xB8, 0x34, 0x11, 0x64, 0xB8, +0x3C, 0x11, 0x64, 0xB8, 0xE4, 0x11, 0x64, 0xB8, +0x00, 0x40, 0xE0, 0x03, 0x01, 0x60, 0x00, 0x03, +0xE0, 0x12, 0x64, 0xB8, 0x2F, 0x01, 0x64, 0xB8, +0xE8, 0x10, 0x60, 0xB8, 0x00, 0x3C, 0x64, 0xB8, +0x00, 0x4C, 0x64, 0xB8, 0x00, 0x58, 0x64, 0xB8, +0x00, 0x5C, 0x64, 0xB8, 0xF8, 0x05, 0x64, 0xB8, +0x83, 0x00, 0x60, 0xB8, 0x08, 0x01, 0x64, 0xB8, +0x90, 0x00, 0x60, 0xB8, 0x92, 0x06, 0x64, 0xB8, +0x00, 0x10, 0x60, 0xB8, 0x92, 0x00, 0x60, 0xB8, +0x1F, 0x07, 0x64, 0xB8, 0x1C, 0x07, 0x64, 0xB8, +0x2C, 0x04, 0x64, 0xB8, 0x2E, 0x04, 0x64, 0xB8, +0xB8, 0x05, 0x64, 0xB8, 0xBC, 0x05, 0x64, 0xB8, +0x5F, 0x11, 0x64, 0xB8, 0xFE, 0xFF, 0xFF, 0x7F, +0x30, 0x00, 0x78, 0x18, 0x7E, 0x04, 0x64, 0xB8, +0x20, 0x04, 0x64, 0xB8, 0xAC, 0x04, 0x64, 0xB8, +0x08, 0x10, 0x66, 0xB8, 0x00, 0x10, 0x66, 0xB8, +0x04, 0x10, 0x66, 0xB8, 0x0C, 0x10, 0x66, 0xB8, +0x7C, 0x04, 0x64, 0xB8, 0x71, 0x00, 0x60, 0xB8, +0xE4, 0x00, 0x60, 0xB8, 0xE6, 0x00, 0x60, 0xB8, +0xE8, 0x00, 0x60, 0xB8, 0xE9, 0x00, 0x60, 0xB8, +0xEA, 0x00, 0x60, 0xB8, 0xEB, 0x00, 0x60, 0xB8, +0xE5, 0x00, 0x60, 0xB8, 0x44, 0x00, 0x02, 0x00, +0xA0, 0x07, 0x64, 0xB8, 0x00, 0x00, 0x60, 0x06, +0x00, 0x00, 0x60, 0x02, 0xFF, 0xFF, 0xBF, 0xFD, +0x00, 0x00, 0x40, 0x02, 0xFF, 0xFF, 0xDF, 0xFF, +0xFF, 0xFF, 0xBF, 0xFF, 0x9A, 0x01, 0x64, 0xB8, +0x98, 0x01, 0x64, 0xB8, 0xD0, 0x05, 0x64, 0xB8, +0x08, 0x02, 0x64, 0xB8, 0x7B, 0x05, 0x64, 0xB8, +0x73, 0x05, 0x64, 0xB8, 0xD4, 0x04, 0x60, 0xB8, +0xD4, 0x04, 0x64, 0xB8, 0x84, 0x04, 0x60, 0xB8, +0x84, 0x04, 0x64, 0xB8, 0xC8, 0x04, 0x60, 0xB8, +0xC8, 0x04, 0x64, 0xB8, 0x78, 0x04, 0x60, 0xB8, +0x78, 0x04, 0x64, 0xB8, 0x00, 0x90, 0x01, 0x00, +0x01, 0x01, 0x64, 0xB8, 0x70, 0x00, 0x60, 0xB8, +0x0D, 0xEA, 0xEF, 0xFD, 0x04, 0xEA, 0xEF, 0xFD, +0xA0, 0x06, 0x64, 0xB8, 0x18, 0x11, 0x64, 0xB8, +0xFF, 0xFF, 0xFB, 0xFF, 0x9C, 0x02, 0x64, 0xB8, +0xA0, 0x02, 0x64, 0xB8, 0xA0, 0x34, 0x00, 0xB8, +0x00, 0x52, 0x00, 0xB8, 0x04, 0x52, 0x00, 0xB8, +0x08, 0x52, 0x00, 0xB8, 0x0C, 0x52, 0x00, 0xB8, +0x10, 0x52, 0x00, 0xB8, 0x30, 0x52, 0x00, 0xB8, +0x3C, 0x50, 0x00, 0xB8, 0x4C, 0x04, 0x64, 0xB8, +0x50, 0x04, 0x64, 0xB8, 0x04, 0x06, 0x64, 0xB8, +0xFF, 0xFF, 0xFF, 0xFE, 0x60, 0x16, 0x64, 0xB8, +0xFF, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0x30, 0x80, +0x00, 0x12, 0x00, 0x04, 0x03, 0x00, 0x78, 0xB8, +0xFF, 0xFF, 0x01, 0xFF, 0x12, 0x05, 0x64, 0xB8, +0x10, 0x05, 0x64, 0xB8, 0x04, 0x18, 0x66, 0xB8, +0x00, 0x18, 0x66, 0xB8, 0xFF, 0xFF, 0xFF, 0x3F, +0x10, 0x00, 0x66, 0xB8, 0x11, 0x00, 0x66, 0xB8, +0x12, 0x00, 0x66, 0xB8, 0x13, 0x00, 0x66, 0xB8, +0x14, 0x00, 0x66, 0xB8, 0x15, 0x00, 0x66, 0xB8, +0xD4, 0x07, 0x64, 0xB8, 0xBC, 0x06, 0x64, 0xB8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xF2, 0x01, +0x01, 0x80, 0x0B, 0x70, 0x01, 0x80, 0x0B, 0x70, +0x01, 0x40, 0x14, 0x70, 0x01, 0x40, 0x24, 0x70, +0x01, 0x40, 0x34, 0x70, 0x01, 0x40, 0x44, 0x70, +0x01, 0x80, 0x5B, 0x70, 0x01, 0x40, 0x64, 0x70, 0x01, 0x80, 0x7B, 0x70, 0x01, 0x80, 0x8B, 0x70, 0x01, 0x80, 0x9B, 0x70, 0x01, 0x80, 0xAB, 0x70, 0x01, 0x80, 0xBB, 0x70, 0x01, 0x80, 0xCB, 0x70, 0x01, 0x80, 0xDB, 0x70, 0x01, 0x80, 0xEB, 0x70, -0x01, 0x80, 0xFB, 0x70, 0x00, 0x00, 0x00, 0x7F, -0x00, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x01, 0x00, -0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, -0x00, 0xFC, 0xF8, 0xFF, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x3F, 0x18, 0x00, 0x70, 0xB8, -0x0B, 0x00, 0x70, 0xB8, 0x02, 0x00, 0x70, 0xB8, -0x94, 0x02, 0x64, 0xB8, 0x97, 0x02, 0x64, 0xB8, -0x84, 0x02, 0x64, 0xB8, 0x06, 0x00, 0x66, 0xB8, -0x50, 0x02, 0x64, 0xB8, 0x48, 0x02, 0x64, 0xB8, -0x74, 0x00, 0x18, 0x2E, 0x74, 0x00, 0x19, 0x2E, -0x01, 0x00, 0x60, 0xB8, 0x01, 0x00, 0x64, 0xB8, -0x34, 0x01, 0x64, 0xB8, 0x64, 0x05, 0x64, 0xB8, -0x60, 0x05, 0x64, 0xB8, 0xC8, 0x01, 0x64, 0xB8, -0xC9, 0x01, 0x64, 0xB8, 0x0C, 0xEA, 0xEF, 0xFD, -0xA0, 0x01, 0x64, 0xB8, 0x48, 0x00, 0x60, 0xB8, -0x47, 0x00, 0x60, 0xB8, 0x46, 0x00, 0x60, 0xB8, -0x63, 0x00, 0x60, 0xB8, 0x62, 0x00, 0x60, 0xB8, -0x45, 0x00, 0x60, 0xB8, 0x61, 0x00, 0x60, 0xB8, -0xC6, 0x01, 0x64, 0xB8, 0xFF, 0xFF, 0xFF, 0x00, -0x00, 0x00, 0x00, 0x05, 0x64, 0x01, 0x64, 0xB8, -0x53, 0x05, 0x64, 0xB8, 0x94, 0x01, 0x64, 0xB8, -0x00, 0x1C, 0x66, 0xB8, 0x54, 0x00, 0x60, 0xB8, -0x24, 0x11, 0x64, 0xB8, 0x2C, 0x11, 0x64, 0xB8, -0x34, 0x11, 0x64, 0xB8, 0x3C, 0x11, 0x64, 0xB8, -0xE4, 0x11, 0x64, 0xB8, 0x00, 0x40, 0xE0, 0x03, -0x01, 0x60, 0x00, 0x03, 0xE0, 0x12, 0x64, 0xB8, -0x2F, 0x01, 0x64, 0xB8, 0xE8, 0x10, 0x60, 0xB8, -0x00, 0x3C, 0x64, 0xB8, 0x00, 0x4C, 0x64, 0xB8, -0x00, 0x58, 0x64, 0xB8, 0x00, 0x5C, 0x64, 0xB8, -0xF8, 0x05, 0x64, 0xB8, 0x83, 0x00, 0x60, 0xB8, -0x08, 0x01, 0x64, 0xB8, 0x90, 0x00, 0x60, 0xB8, -0x92, 0x06, 0x64, 0xB8, 0x00, 0x10, 0x60, 0xB8, -0x92, 0x00, 0x60, 0xB8, 0x1F, 0x07, 0x64, 0xB8, -0x1C, 0x07, 0x64, 0xB8, 0x2C, 0x04, 0x64, 0xB8, -0x2E, 0x04, 0x64, 0xB8, 0xB8, 0x05, 0x64, 0xB8, -0xBC, 0x05, 0x64, 0xB8, 0x5F, 0x11, 0x64, 0xB8, -0xFE, 0xFF, 0xFF, 0x7F, 0x30, 0x00, 0x78, 0x18, -0x7E, 0x04, 0x64, 0xB8, 0x20, 0x04, 0x64, 0xB8, -0xAC, 0x04, 0x64, 0xB8, 0x08, 0x10, 0x66, 0xB8, -0x00, 0x10, 0x66, 0xB8, 0x04, 0x10, 0x66, 0xB8, -0x0C, 0x10, 0x66, 0xB8, 0x7C, 0x04, 0x64, 0xB8, -0x71, 0x00, 0x60, 0xB8, 0xE4, 0x00, 0x60, 0xB8, -0xE6, 0x00, 0x60, 0xB8, 0xE8, 0x00, 0x60, 0xB8, -0xE9, 0x00, 0x60, 0xB8, 0xEA, 0x00, 0x60, 0xB8, -0xEB, 0x00, 0x60, 0xB8, 0xE5, 0x00, 0x60, 0xB8, -0x44, 0x00, 0x02, 0x00, 0xA0, 0x07, 0x64, 0xB8, -0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x60, 0x02, -0xFF, 0xFF, 0xBF, 0xFD, 0x00, 0x00, 0x40, 0x02, -0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, -0x9A, 0x01, 0x64, 0xB8, 0x98, 0x01, 0x64, 0xB8, -0xD0, 0x05, 0x64, 0xB8, 0x08, 0x02, 0x64, 0xB8, -0x7B, 0x05, 0x64, 0xB8, 0x73, 0x05, 0x64, 0xB8, -0xD4, 0x04, 0x60, 0xB8, 0xD4, 0x04, 0x64, 0xB8, -0x84, 0x04, 0x60, 0xB8, 0x84, 0x04, 0x64, 0xB8, -0xC8, 0x04, 0x60, 0xB8, 0xC8, 0x04, 0x64, 0xB8, -0x78, 0x04, 0x60, 0xB8, 0x78, 0x04, 0x64, 0xB8, -0x00, 0x90, 0x01, 0x00, 0x01, 0x01, 0x64, 0xB8, -0x70, 0x00, 0x60, 0xB8, 0x0D, 0xEA, 0xEF, 0xFD, -0x04, 0xEA, 0xEF, 0xFD, 0xA0, 0x06, 0x64, 0xB8, -0x18, 0x11, 0x64, 0xB8, 0xFF, 0xFF, 0xFB, 0xFF, -0x9C, 0x02, 0x64, 0xB8, 0xA0, 0x02, 0x64, 0xB8, -0xA0, 0x34, 0x00, 0xB8, 0x00, 0x52, 0x00, 0xB8, -0x04, 0x52, 0x00, 0xB8, 0x08, 0x52, 0x00, 0xB8, -0x0C, 0x52, 0x00, 0xB8, 0x10, 0x52, 0x00, 0xB8, -0x30, 0x52, 0x00, 0xB8, 0x3C, 0x50, 0x00, 0xB8, -0x4C, 0x04, 0x64, 0xB8, 0x50, 0x04, 0x64, 0xB8, -0x04, 0x06, 0x64, 0xB8, 0xFF, 0xFF, 0xFF, 0xFE, -0x60, 0x16, 0x64, 0xB8, 0xFF, 0xFF, 0x00, 0xF0, -0x00, 0x00, 0x30, 0x80, 0x00, 0x12, 0x00, 0x04, -0x03, 0x00, 0x78, 0xB8, 0xFF, 0xFF, 0x01, 0xFF, -0x12, 0x05, 0x64, 0xB8, 0x10, 0x05, 0x64, 0xB8, -0x04, 0x18, 0x66, 0xB8, 0x00, 0x18, 0x66, 0xB8, -0xFF, 0xFF, 0xFF, 0x3F, 0x10, 0x00, 0x66, 0xB8, -0x11, 0x00, 0x66, 0xB8, 0x12, 0x00, 0x66, 0xB8, -0x13, 0x00, 0x66, 0xB8, 0x14, 0x00, 0x66, 0xB8, -0x15, 0x00, 0x66, 0xB8, 0xD4, 0x07, 0x64, 0xB8, -0xBC, 0x06, 0x64, 0xB8, 0x5F, 0x73, 0x75, 0x62, -0x00, 0x00, 0x00, 0x00, 0x6C, 0x6F, 0x63, 0x61, -0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x50, 0xF2, 0x01, 0x01, 0x80, 0x0B, 0x70, -0x01, 0x80, 0x0B, 0x70, 0x01, 0x40, 0x14, 0x70, -0x01, 0x40, 0x24, 0x70, 0x01, 0x40, 0x34, 0x70, -0x01, 0x40, 0x44, 0x70, 0x01, 0x80, 0x5B, 0x70, -0x01, 0x40, 0x64, 0x70, 0x01, 0x80, 0x7B, 0x70, -0x01, 0x80, 0x8B, 0x70, 0x01, 0x80, 0x9B, 0x70, -0x01, 0x80, 0xAB, 0x70, 0x01, 0x80, 0xBB, 0x70, -0x01, 0x80, 0xCB, 0x70, 0x01, 0x80, 0xDB, 0x70, -0x01, 0x80, 0xEB, 0x70, 0x01, 0x80, 0xFB, 0x70, -0x01, 0x80, 0xFB, 0x70, 0x01, 0x80, 0x0B, 0x70, -0x01, 0x80, 0x0B, 0x70, 0x01, 0x40, 0x14, 0x70, -0x01, 0x40, 0x24, 0x70, 0x01, 0x40, 0x34, 0x70, -0x01, 0x40, 0x44, 0x70, 0x01, 0x80, 0x5B, 0x70, -0x01, 0x40, 0x64, 0x70, 0x01, 0x80, 0x7B, 0x70, -0x01, 0x80, 0x8B, 0x70, 0x01, 0x80, 0x9B, 0x70, -0x01, 0x80, 0xAB, 0x70, 0x01, 0x80, 0xBB, 0x70, -0x01, 0x80, 0xCB, 0x70, 0x01, 0x80, 0xDB, 0x70, -0x01, 0x80, 0xEB, 0x70, 0x01, 0x80, 0xFB, 0x70, -0x01, 0x80, 0xFB, 0x70, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x41, -0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, -0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x45, -0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x47, -0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, -0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x4B, -0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x4D, -0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x4F, -0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, -0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, -0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, -0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, -0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, -0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x5B, -0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x5D, -0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x5F, -0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x61, -0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, -0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x65, -0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, -0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x69, -0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x6B, -0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x6D, -0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x6F, -0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x71, -0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x73, -0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, -0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x77, -0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x79, -0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x7B, -0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7D, -0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x7F, -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, -0x00, 0x1B, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, -0x00, 0x1B, 0x00, 0x00, 0x08, 0x00, 0xA7, 0x00, -0x00, 0x1B, 0x00, 0x00, 0x08, 0x00, 0x15, 0x00, -0x00, 0x1B, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, -0x04, 0x1B, 0x00, 0x00, 0x52, 0x29, 0x46, 0xE2, -0x08, 0x1B, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -0x0C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x10, 0x1B, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x00, -0x14, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x18, 0x1B, 0x00, 0x00, 0x03, 0x29, 0x29, 0x00, -0x1C, 0x1B, 0x00, 0x00, 0x32, 0xFC, 0x18, 0xA2, -0x20, 0x1B, 0x00, 0x00, 0x08, 0x00, 0x04, 0x01, -0x24, 0x1B, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, -0x28, 0x1B, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, -0x2C, 0x1B, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, -0x30, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x34, 0x1B, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, -0x38, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x3C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x98, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x9C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xC0, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0xCC, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xE4, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xEC, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x40, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x44, 0x1B, 0x00, 0x00, 0x64, 0x40, 0x00, 0x20, -0x48, 0x1B, 0x00, 0x00, 0x2D, 0x00, 0x05, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x60, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1F, -0x64, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, -0x50, 0x1B, 0x00, 0x00, 0xBE, 0x03, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x01, -0x50, 0x1B, 0x00, 0x00, 0x7A, 0x05, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x02, -0x50, 0x1B, 0x00, 0x00, 0xC8, 0x06, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x03, -0x50, 0x1B, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x04, -0x50, 0x1B, 0x00, 0x00, 0xD5, 0x08, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x05, -0x50, 0x1B, 0x00, 0x00, 0xB2, 0x09, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x06, -0x50, 0x1B, 0x00, 0x00, 0x7D, 0x0A, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x07, -0x50, 0x1B, 0x00, 0x00, 0x3A, 0x0B, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x08, -0x50, 0x1B, 0x00, 0x00, 0xEB, 0x0B, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x09, -0x50, 0x1B, 0x00, 0x00, 0x92, 0x0C, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x0A, -0x50, 0x1B, 0x00, 0x00, 0x31, 0x0D, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x0B, -0x50, 0x1B, 0x00, 0x00, 0xC9, 0x0D, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x0C, -0x50, 0x1B, 0x00, 0x00, 0x5A, 0x0E, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x0D, -0x50, 0x1B, 0x00, 0x00, 0xE6, 0x0E, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x0E, -0x50, 0x1B, 0x00, 0x00, 0x6D, 0x0F, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x0F, -0x50, 0x1B, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x10, -0x50, 0x1B, 0x00, 0x00, 0x6F, 0x10, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x11, -0x50, 0x1B, 0x00, 0x00, 0xE9, 0x10, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x12, -0x50, 0x1B, 0x00, 0x00, 0x61, 0x11, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x13, -0x50, 0x1B, 0x00, 0x00, 0xD5, 0x11, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x14, -0x50, 0x1B, 0x00, 0x00, 0x47, 0x12, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x15, -0x50, 0x1B, 0x00, 0x00, 0xB5, 0x12, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x16, -0x50, 0x1B, 0x00, 0x00, 0x22, 0x13, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x17, -0x50, 0x1B, 0x00, 0x00, 0x8B, 0x13, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x18, -0x50, 0x1B, 0x00, 0x00, 0xF3, 0x13, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x19, -0x50, 0x1B, 0x00, 0x00, 0x59, 0x14, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x1A, -0x50, 0x1B, 0x00, 0x00, 0xBD, 0x14, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x1B, -0x50, 0x1B, 0x00, 0x00, 0x1E, 0x15, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x1C, -0x50, 0x1B, 0x00, 0x00, 0x7F, 0x15, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x1D, -0x50, 0x1B, 0x00, 0x00, 0xDD, 0x15, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x1E, -0x50, 0x1B, 0x00, 0x00, 0x3A, 0x16, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x1F, -0x50, 0x1B, 0x00, 0x00, 0x95, 0x16, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x20, -0x50, 0x1B, 0x00, 0x00, 0xEF, 0x16, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x21, -0x50, 0x1B, 0x00, 0x00, 0x48, 0x17, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x22, -0x50, 0x1B, 0x00, 0x00, 0x9F, 0x17, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x23, -0x50, 0x1B, 0x00, 0x00, 0xF5, 0x17, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x24, -0x50, 0x1B, 0x00, 0x00, 0x4A, 0x18, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x25, -0x50, 0x1B, 0x00, 0x00, 0x9E, 0x18, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x26, -0x50, 0x1B, 0x00, 0x00, 0xF1, 0x18, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x27, -0x50, 0x1B, 0x00, 0x00, 0x42, 0x19, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x28, -0x50, 0x1B, 0x00, 0x00, 0x93, 0x19, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x29, -0x50, 0x1B, 0x00, 0x00, 0xE2, 0x19, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x2A, -0x50, 0x1B, 0x00, 0x00, 0x31, 0x1A, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x2B, -0x50, 0x1B, 0x00, 0x00, 0x7F, 0x1A, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x2C, -0x50, 0x1B, 0x00, 0x00, 0xCC, 0x1A, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x2D, -0x50, 0x1B, 0x00, 0x00, 0x18, 0x1B, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x2E, -0x50, 0x1B, 0x00, 0x00, 0x63, 0x1B, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x2F, -0x50, 0x1B, 0x00, 0x00, 0xAD, 0x1B, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x30, -0x50, 0x1B, 0x00, 0x00, 0xF7, 0x1B, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x31, -0x50, 0x1B, 0x00, 0x00, 0x40, 0x1C, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x32, -0x50, 0x1B, 0x00, 0x00, 0x88, 0x1C, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x33, -0x50, 0x1B, 0x00, 0x00, 0xCF, 0x1C, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x34, -0x50, 0x1B, 0x00, 0x00, 0x16, 0x1D, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x35, -0x50, 0x1B, 0x00, 0x00, 0x5C, 0x1D, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x36, -0x50, 0x1B, 0x00, 0x00, 0xA2, 0x1D, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x37, -0x50, 0x1B, 0x00, 0x00, 0xE6, 0x1D, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x38, -0x50, 0x1B, 0x00, 0x00, 0x2B, 0x1E, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x39, -0x50, 0x1B, 0x00, 0x00, 0x6E, 0x1E, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x3A, -0x50, 0x1B, 0x00, 0x00, 0xB1, 0x1E, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x3B, -0x50, 0x1B, 0x00, 0x00, 0xF4, 0x1E, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x3C, -0x50, 0x1B, 0x00, 0x00, 0x35, 0x1F, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x3D, -0x50, 0x1B, 0x00, 0x00, 0x77, 0x1F, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x3E, -0x50, 0x1B, 0x00, 0x00, 0xB8, 0x1F, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x3F, -0x50, 0x1B, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, -0x4C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x50, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, -0x5C, 0x1B, 0x00, 0x00, 0xFF, 0x3F, 0x6B, 0x3C, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x02, -0x5C, 0x1B, 0x00, 0x00, 0x0A, 0x39, 0xD9, 0x35, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x04, -0x5C, 0x1B, 0x00, 0x00, 0xD6, 0x32, 0xFE, 0x2F, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x06, -0x5C, 0x1B, 0x00, 0x00, 0x4F, 0x2D, 0xC6, 0x2A, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x08, -0x5C, 0x1B, 0x00, 0x00, 0x62, 0x28, 0x1F, 0x26, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0A, -0x5C, 0x1B, 0x00, 0x00, 0xFD, 0x23, 0xFA, 0x21, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0C, -0x5C, 0x1B, 0x00, 0x00, 0x13, 0x20, 0x48, 0x1E, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0E, -0x5C, 0x1B, 0x00, 0x00, 0x96, 0x1C, 0xFD, 0x1A, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x10, -0x5C, 0x1B, 0x00, 0x00, 0x7B, 0x19, 0x0E, 0x18, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x12, -0x5C, 0x1B, 0x00, 0x00, 0xB5, 0x16, 0x70, 0x15, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x14, -0x5C, 0x1B, 0x00, 0x00, 0x3D, 0x14, 0x1B, 0x13, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x16, -0x5C, 0x1B, 0x00, 0x00, 0x0A, 0x12, 0x07, 0x11, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x18, -0x5C, 0x1B, 0x00, 0x00, 0x13, 0x10, 0x2D, 0x0F, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x1A, -0x5C, 0x1B, 0x00, 0x00, 0x54, 0x0E, 0x87, 0x0D, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x1C, -0x5C, 0x1B, 0x00, 0x00, 0xC5, 0x0C, 0x0E, 0x0C, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x1E, -0x5C, 0x1B, 0x00, 0x00, 0x62, 0x0B, 0xBF, 0x0A, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, -0x5C, 0x1B, 0x00, 0x00, 0x25, 0x0A, 0x93, 0x09, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x22, -0x5C, 0x1B, 0x00, 0x00, 0x0A, 0x09, 0x89, 0x08, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x24, -0x5C, 0x1B, 0x00, 0x00, 0x0F, 0x08, 0x9B, 0x07, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x26, -0x5C, 0x1B, 0x00, 0x00, 0x2E, 0x07, 0xC7, 0x06, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x28, -0x5C, 0x1B, 0x00, 0x00, 0x66, 0x06, 0x0B, 0x06, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x2A, -0x5C, 0x1B, 0x00, 0x00, 0xB4, 0x05, 0x63, 0x05, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x2C, -0x5C, 0x1B, 0x00, 0x00, 0x15, 0x05, 0xCD, 0x04, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x2E, -0x5C, 0x1B, 0x00, 0x00, 0x88, 0x04, 0x47, 0x04, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x30, -0x5C, 0x1B, 0x00, 0x00, 0x0A, 0x04, 0xD0, 0x03, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x32, -0x5C, 0x1B, 0x00, 0x00, 0x99, 0x03, 0x66, 0x03, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x34, -0x5C, 0x1B, 0x00, 0x00, 0x35, 0x03, 0x07, 0x03, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x36, -0x5C, 0x1B, 0x00, 0x00, 0xDC, 0x02, 0xB3, 0x02, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x38, -0x5C, 0x1B, 0x00, 0x00, 0x8C, 0x02, 0x68, 0x02, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x3A, -0x5C, 0x1B, 0x00, 0x00, 0x45, 0x02, 0x25, 0x02, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x3C, -0x5C, 0x1B, 0x00, 0x00, 0x06, 0x02, 0xE9, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x3E, -0x5C, 0x1B, 0x00, 0x00, 0xCE, 0x01, 0xB4, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x40, -0x5C, 0x1B, 0x00, 0x00, 0x9C, 0x01, 0x85, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x42, -0x5C, 0x1B, 0x00, 0x00, 0x6F, 0x01, 0x5A, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x44, -0x5C, 0x1B, 0x00, 0x00, 0x47, 0x01, 0x35, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x46, -0x5C, 0x1B, 0x00, 0x00, 0x23, 0x01, 0x13, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x48, -0x5C, 0x1B, 0x00, 0x00, 0x04, 0x01, 0xF5, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x4A, -0x5C, 0x1B, 0x00, 0x00, 0xE7, 0x00, 0xDA, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x4C, -0x5C, 0x1B, 0x00, 0x00, 0xCE, 0x00, 0xC3, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x4E, -0x5C, 0x1B, 0x00, 0x00, 0xB8, 0x00, 0xAE, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x50, -0x5C, 0x1B, 0x00, 0x00, 0xA4, 0x00, 0x9B, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x52, -0x5C, 0x1B, 0x00, 0x00, 0x92, 0x00, 0x8A, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, -0x5C, 0x1B, 0x00, 0x00, 0x82, 0x00, 0x7B, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x56, -0x5C, 0x1B, 0x00, 0x00, 0x74, 0x00, 0x6E, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x58, -0x5C, 0x1B, 0x00, 0x00, 0x67, 0x00, 0x62, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x5A, -0x5C, 0x1B, 0x00, 0x00, 0x5C, 0x00, 0x57, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x5C, -0x5C, 0x1B, 0x00, 0x00, 0x52, 0x00, 0x4E, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x5E, -0x5C, 0x1B, 0x00, 0x00, 0x49, 0x00, 0x45, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x60, -0x5C, 0x1B, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x62, -0x5C, 0x1B, 0x00, 0x00, 0x3A, 0x00, 0x37, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, -0x00, 0x1B, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, -0x00, 0x1B, 0x00, 0x00, 0x0A, 0x00, 0xA7, 0x00, -0x00, 0x1B, 0x00, 0x00, 0x0A, 0x00, 0x15, 0x00, -0x00, 0x1B, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, -0x04, 0x1B, 0x00, 0x00, 0x52, 0x29, 0x46, 0xE2, -0x08, 0x1B, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -0x0C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x10, 0x1B, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x00, -0x14, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x18, 0x1B, 0x00, 0x00, 0x03, 0x29, 0x29, 0x00, -0x1C, 0x1B, 0x00, 0x00, 0x32, 0xFC, 0x18, 0xA2, -0x20, 0x1B, 0x00, 0x00, 0x08, 0x00, 0x04, 0x01, -0x24, 0x1B, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, -0x28, 0x1B, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, -0x2C, 0x1B, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, -0x30, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x34, 0x1B, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, -0x38, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x3C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x98, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x9C, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xC0, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0xCC, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xE4, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xEC, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x60, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1F, -0x64, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, -0x5C, 0x1B, 0x00, 0x00, 0xFF, 0x3F, 0x6B, 0x3C, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x02, -0x5C, 0x1B, 0x00, 0x00, 0x0A, 0x39, 0xD9, 0x35, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x04, -0x5C, 0x1B, 0x00, 0x00, 0xD6, 0x32, 0xFE, 0x2F, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x06, -0x5C, 0x1B, 0x00, 0x00, 0x4F, 0x2D, 0xC6, 0x2A, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x08, -0x5C, 0x1B, 0x00, 0x00, 0x62, 0x28, 0x1F, 0x26, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0A, -0x5C, 0x1B, 0x00, 0x00, 0xFD, 0x23, 0xFA, 0x21, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0C, -0x5C, 0x1B, 0x00, 0x00, 0x13, 0x20, 0x48, 0x1E, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0E, -0x5C, 0x1B, 0x00, 0x00, 0x96, 0x1C, 0xFD, 0x1A, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x10, -0x5C, 0x1B, 0x00, 0x00, 0x7B, 0x19, 0x0E, 0x18, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x12, -0x5C, 0x1B, 0x00, 0x00, 0xB5, 0x16, 0x70, 0x15, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x14, -0x5C, 0x1B, 0x00, 0x00, 0x3D, 0x14, 0x1B, 0x13, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x16, -0x5C, 0x1B, 0x00, 0x00, 0x0A, 0x12, 0x07, 0x11, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x18, -0x5C, 0x1B, 0x00, 0x00, 0x13, 0x10, 0x2D, 0x0F, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x1A, -0x5C, 0x1B, 0x00, 0x00, 0x54, 0x0E, 0x87, 0x0D, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x1C, -0x5C, 0x1B, 0x00, 0x00, 0xC5, 0x0C, 0x0E, 0x0C, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x1E, -0x5C, 0x1B, 0x00, 0x00, 0x62, 0x0B, 0xBF, 0x0A, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, -0x5C, 0x1B, 0x00, 0x00, 0x25, 0x0A, 0x93, 0x09, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x22, -0x5C, 0x1B, 0x00, 0x00, 0x0A, 0x09, 0x89, 0x08, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x24, -0x5C, 0x1B, 0x00, 0x00, 0x0F, 0x08, 0x9B, 0x07, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x26, -0x5C, 0x1B, 0x00, 0x00, 0x2E, 0x07, 0xC7, 0x06, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x28, -0x5C, 0x1B, 0x00, 0x00, 0x66, 0x06, 0x0B, 0x06, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x2A, -0x5C, 0x1B, 0x00, 0x00, 0xB4, 0x05, 0x63, 0x05, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x2C, -0x5C, 0x1B, 0x00, 0x00, 0x15, 0x05, 0xCD, 0x04, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x2E, -0x5C, 0x1B, 0x00, 0x00, 0x88, 0x04, 0x47, 0x04, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x30, -0x5C, 0x1B, 0x00, 0x00, 0x0A, 0x04, 0xD0, 0x03, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x32, -0x5C, 0x1B, 0x00, 0x00, 0x99, 0x03, 0x66, 0x03, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x34, -0x5C, 0x1B, 0x00, 0x00, 0x35, 0x03, 0x07, 0x03, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x36, -0x5C, 0x1B, 0x00, 0x00, 0xDC, 0x02, 0xB3, 0x02, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x38, -0x5C, 0x1B, 0x00, 0x00, 0x8C, 0x02, 0x68, 0x02, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x3A, -0x5C, 0x1B, 0x00, 0x00, 0x45, 0x02, 0x25, 0x02, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x3C, -0x5C, 0x1B, 0x00, 0x00, 0x06, 0x02, 0xE9, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x3E, -0x5C, 0x1B, 0x00, 0x00, 0xCE, 0x01, 0xB4, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x40, -0x5C, 0x1B, 0x00, 0x00, 0x9C, 0x01, 0x85, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x42, -0x5C, 0x1B, 0x00, 0x00, 0x6F, 0x01, 0x5A, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x44, -0x5C, 0x1B, 0x00, 0x00, 0x47, 0x01, 0x35, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x46, -0x5C, 0x1B, 0x00, 0x00, 0x23, 0x01, 0x13, 0x01, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x48, -0x5C, 0x1B, 0x00, 0x00, 0x04, 0x01, 0xF5, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x4A, -0x5C, 0x1B, 0x00, 0x00, 0xE7, 0x00, 0xDA, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x4C, -0x5C, 0x1B, 0x00, 0x00, 0xCE, 0x00, 0xC3, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x4E, -0x5C, 0x1B, 0x00, 0x00, 0xB8, 0x00, 0xAE, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x50, -0x5C, 0x1B, 0x00, 0x00, 0xA4, 0x00, 0x9B, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x52, -0x5C, 0x1B, 0x00, 0x00, 0x92, 0x00, 0x8A, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, -0x5C, 0x1B, 0x00, 0x00, 0x82, 0x00, 0x7B, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x56, -0x5C, 0x1B, 0x00, 0x00, 0x74, 0x00, 0x6E, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x58, -0x5C, 0x1B, 0x00, 0x00, 0x67, 0x00, 0x62, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x5A, -0x5C, 0x1B, 0x00, 0x00, 0x5C, 0x00, 0x57, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x5C, -0x5C, 0x1B, 0x00, 0x00, 0x52, 0x00, 0x4E, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x5E, -0x5C, 0x1B, 0x00, 0x00, 0x49, 0x00, 0x45, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x60, -0x5C, 0x1B, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x89, 0x62, -0x5C, 0x1B, 0x00, 0x00, 0x3A, 0x00, 0x37, 0x00, -0x58, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, -0x00, 0x1B, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, -0xD4, 0x1B, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, -0xB8, 0x1B, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, -0xBC, 0x1B, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, -0xC0, 0x1B, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, -0xC4, 0x1B, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, -0xC8, 0x1B, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, -0xCC, 0x1B, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, -0xD0, 0x1B, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, -0xD8, 0x1B, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, -0xDC, 0x1B, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, -0xE0, 0x1B, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, -0xE4, 0x1B, 0x00, 0x00, 0x17, 0x2F, 0x47, 0x77, -0xE8, 0x1B, 0x00, 0x00, 0x8F, 0xA7, 0xBF, 0xEF, -0xEC, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xF0, 0x1B, 0x00, 0x00, 0x39, 0x19, 0x1F, 0x1F, -0x04, 0x1B, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, -0x08, 0x1B, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xB0, -0x5C, 0x1B, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, -0x60, 0x1B, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xB0, -0xB4, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, +0x01, 0x80, 0xFB, 0x70, 0x01, 0x80, 0xFB, 0x70, +0x01, 0x80, 0x0B, 0x70, 0x01, 0x80, 0x0B, 0x70, +0x01, 0x40, 0x14, 0x70, 0x01, 0x40, 0x24, 0x70, +0x01, 0x40, 0x34, 0x70, 0x01, 0x40, 0x44, 0x70, +0x01, 0x80, 0x5B, 0x70, 0x01, 0x40, 0x64, 0x70, +0x01, 0x80, 0x7B, 0x70, 0x01, 0x80, 0x8B, 0x70, +0x01, 0x80, 0x9B, 0x70, 0x01, 0x80, 0xAB, 0x70, +0x01, 0x80, 0xBB, 0x70, 0x01, 0x80, 0xCB, 0x70, +0x01, 0x80, 0xDB, 0x70, 0x01, 0x80, 0xEB, 0x70, +0x01, 0x80, 0xFB, 0x70, 0x01, 0x80, 0xFB, 0x70, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x42, +0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x44, +0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, +0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, +0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4A, +0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x4C, +0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x4E, +0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x50, +0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, +0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x54, +0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, +0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x58, +0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5A, +0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x5C, +0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x5E, +0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x60, +0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x62, +0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, +0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, +0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, +0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6A, +0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x6C, +0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x6E, +0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x70, +0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, +0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x74, +0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x76, +0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x78, +0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7A, +0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x7C, +0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x7E, +0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, +0x08, 0x00, 0xA7, 0x00, 0x00, 0x1B, 0x00, 0x00, +0x08, 0x00, 0x15, 0x00, 0x00, 0x1B, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x04, 0x1B, 0x00, 0x00, +0x52, 0x29, 0x46, 0xE2, 0x08, 0x1B, 0x00, 0x00, +0x80, 0x00, 0x00, 0x00, 0x0C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x10, 0x1B, 0x00, 0x00, +0x00, 0x0C, 0x01, 0x00, 0x14, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x18, 0x1B, 0x00, 0x00, +0x03, 0x29, 0x29, 0x00, 0x1C, 0x1B, 0x00, 0x00, +0x32, 0xFC, 0x18, 0xA2, 0x20, 0x1B, 0x00, 0x00, +0x08, 0x00, 0x04, 0x01, 0x24, 0x1B, 0x00, 0x00, +0x08, 0x00, 0x06, 0x00, 0x28, 0x1B, 0x00, 0x00, +0x00, 0x03, 0x06, 0x00, 0x2C, 0x1B, 0x00, 0x00, +0x18, 0x00, 0x18, 0x00, 0x30, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x34, 0x1B, 0x00, 0x00, +0x00, 0x08, 0x00, 0x00, 0x38, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x3C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x98, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x9C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xC0, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0xCC, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xE4, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xEC, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x40, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x44, 0x1B, 0x00, 0x00, +0x64, 0x40, 0x00, 0x20, 0x48, 0x1B, 0x00, 0x00, +0x2D, 0x00, 0x05, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x60, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x10, 0x1F, 0x64, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x00, 0x50, 0x1B, 0x00, 0x00, +0xBE, 0x03, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x01, 0x50, 0x1B, 0x00, 0x00, +0x7A, 0x05, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x02, 0x50, 0x1B, 0x00, 0x00, +0xC8, 0x06, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x03, 0x50, 0x1B, 0x00, 0x00, +0xE0, 0x07, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x04, 0x50, 0x1B, 0x00, 0x00, +0xD5, 0x08, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x05, 0x50, 0x1B, 0x00, 0x00, +0xB2, 0x09, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x06, 0x50, 0x1B, 0x00, 0x00, +0x7D, 0x0A, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x07, 0x50, 0x1B, 0x00, 0x00, +0x3A, 0x0B, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x08, 0x50, 0x1B, 0x00, 0x00, +0xEB, 0x0B, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x09, 0x50, 0x1B, 0x00, 0x00, +0x92, 0x0C, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x0A, 0x50, 0x1B, 0x00, 0x00, +0x31, 0x0D, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x0B, 0x50, 0x1B, 0x00, 0x00, +0xC9, 0x0D, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x0C, 0x50, 0x1B, 0x00, 0x00, +0x5A, 0x0E, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x0D, 0x50, 0x1B, 0x00, 0x00, +0xE6, 0x0E, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x0E, 0x50, 0x1B, 0x00, 0x00, +0x6D, 0x0F, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x0F, 0x50, 0x1B, 0x00, 0x00, +0xF0, 0x0F, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x10, 0x50, 0x1B, 0x00, 0x00, +0x6F, 0x10, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x11, 0x50, 0x1B, 0x00, 0x00, +0xE9, 0x10, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x12, 0x50, 0x1B, 0x00, 0x00, +0x61, 0x11, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x13, 0x50, 0x1B, 0x00, 0x00, +0xD5, 0x11, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x14, 0x50, 0x1B, 0x00, 0x00, +0x47, 0x12, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x15, 0x50, 0x1B, 0x00, 0x00, +0xB5, 0x12, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x16, 0x50, 0x1B, 0x00, 0x00, +0x22, 0x13, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x17, 0x50, 0x1B, 0x00, 0x00, +0x8B, 0x13, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x18, 0x50, 0x1B, 0x00, 0x00, +0xF3, 0x13, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x19, 0x50, 0x1B, 0x00, 0x00, +0x59, 0x14, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x1A, 0x50, 0x1B, 0x00, 0x00, +0xBD, 0x14, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x1B, 0x50, 0x1B, 0x00, 0x00, +0x1E, 0x15, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x1C, 0x50, 0x1B, 0x00, 0x00, +0x7F, 0x15, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x1D, 0x50, 0x1B, 0x00, 0x00, +0xDD, 0x15, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x1E, 0x50, 0x1B, 0x00, 0x00, +0x3A, 0x16, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x1F, 0x50, 0x1B, 0x00, 0x00, +0x95, 0x16, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x20, 0x50, 0x1B, 0x00, 0x00, +0xEF, 0x16, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x21, 0x50, 0x1B, 0x00, 0x00, +0x48, 0x17, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x22, 0x50, 0x1B, 0x00, 0x00, +0x9F, 0x17, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x23, 0x50, 0x1B, 0x00, 0x00, +0xF5, 0x17, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x24, 0x50, 0x1B, 0x00, 0x00, +0x4A, 0x18, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x25, 0x50, 0x1B, 0x00, 0x00, +0x9E, 0x18, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x26, 0x50, 0x1B, 0x00, 0x00, +0xF1, 0x18, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x27, 0x50, 0x1B, 0x00, 0x00, +0x42, 0x19, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x28, 0x50, 0x1B, 0x00, 0x00, +0x93, 0x19, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x29, 0x50, 0x1B, 0x00, 0x00, +0xE2, 0x19, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x2A, 0x50, 0x1B, 0x00, 0x00, +0x31, 0x1A, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x2B, 0x50, 0x1B, 0x00, 0x00, +0x7F, 0x1A, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x2C, 0x50, 0x1B, 0x00, 0x00, +0xCC, 0x1A, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x2D, 0x50, 0x1B, 0x00, 0x00, +0x18, 0x1B, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x2E, 0x50, 0x1B, 0x00, 0x00, +0x63, 0x1B, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x2F, 0x50, 0x1B, 0x00, 0x00, +0xAD, 0x1B, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x30, 0x50, 0x1B, 0x00, 0x00, +0xF7, 0x1B, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x31, 0x50, 0x1B, 0x00, 0x00, +0x40, 0x1C, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x32, 0x50, 0x1B, 0x00, 0x00, +0x88, 0x1C, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x33, 0x50, 0x1B, 0x00, 0x00, +0xCF, 0x1C, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x34, 0x50, 0x1B, 0x00, 0x00, +0x16, 0x1D, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x35, 0x50, 0x1B, 0x00, 0x00, +0x5C, 0x1D, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x36, 0x50, 0x1B, 0x00, 0x00, +0xA2, 0x1D, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x37, 0x50, 0x1B, 0x00, 0x00, +0xE6, 0x1D, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x38, 0x50, 0x1B, 0x00, 0x00, +0x2B, 0x1E, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x39, 0x50, 0x1B, 0x00, 0x00, +0x6E, 0x1E, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x3A, 0x50, 0x1B, 0x00, 0x00, +0xB1, 0x1E, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x3B, 0x50, 0x1B, 0x00, 0x00, +0xF4, 0x1E, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x3C, 0x50, 0x1B, 0x00, 0x00, +0x35, 0x1F, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x3D, 0x50, 0x1B, 0x00, 0x00, +0x77, 0x1F, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x3E, 0x50, 0x1B, 0x00, 0x00, +0xB8, 0x1F, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x8A, 0x3F, 0x50, 0x1B, 0x00, 0x00, +0xF8, 0x1F, 0x00, 0x00, 0x4C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x50, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x00, 0x5C, 0x1B, 0x00, 0x00, +0xFF, 0x3F, 0x6B, 0x3C, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x02, 0x5C, 0x1B, 0x00, 0x00, +0x0A, 0x39, 0xD9, 0x35, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x04, 0x5C, 0x1B, 0x00, 0x00, +0xD6, 0x32, 0xFE, 0x2F, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x06, 0x5C, 0x1B, 0x00, 0x00, +0x4F, 0x2D, 0xC6, 0x2A, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x08, 0x5C, 0x1B, 0x00, 0x00, +0x62, 0x28, 0x1F, 0x26, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x0A, 0x5C, 0x1B, 0x00, 0x00, +0xFD, 0x23, 0xFA, 0x21, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x0C, 0x5C, 0x1B, 0x00, 0x00, +0x13, 0x20, 0x48, 0x1E, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x0E, 0x5C, 0x1B, 0x00, 0x00, +0x96, 0x1C, 0xFD, 0x1A, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x10, 0x5C, 0x1B, 0x00, 0x00, +0x7B, 0x19, 0x0E, 0x18, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x12, 0x5C, 0x1B, 0x00, 0x00, +0xB5, 0x16, 0x70, 0x15, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x14, 0x5C, 0x1B, 0x00, 0x00, +0x3D, 0x14, 0x1B, 0x13, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x16, 0x5C, 0x1B, 0x00, 0x00, +0x0A, 0x12, 0x07, 0x11, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x18, 0x5C, 0x1B, 0x00, 0x00, +0x13, 0x10, 0x2D, 0x0F, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x1A, 0x5C, 0x1B, 0x00, 0x00, +0x54, 0x0E, 0x87, 0x0D, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x1C, 0x5C, 0x1B, 0x00, 0x00, +0xC5, 0x0C, 0x0E, 0x0C, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x1E, 0x5C, 0x1B, 0x00, 0x00, +0x62, 0x0B, 0xBF, 0x0A, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x20, 0x5C, 0x1B, 0x00, 0x00, +0x25, 0x0A, 0x93, 0x09, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x22, 0x5C, 0x1B, 0x00, 0x00, +0x0A, 0x09, 0x89, 0x08, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x24, 0x5C, 0x1B, 0x00, 0x00, +0x0F, 0x08, 0x9B, 0x07, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x26, 0x5C, 0x1B, 0x00, 0x00, +0x2E, 0x07, 0xC7, 0x06, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x28, 0x5C, 0x1B, 0x00, 0x00, +0x66, 0x06, 0x0B, 0x06, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x2A, 0x5C, 0x1B, 0x00, 0x00, +0xB4, 0x05, 0x63, 0x05, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x2C, 0x5C, 0x1B, 0x00, 0x00, +0x15, 0x05, 0xCD, 0x04, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x2E, 0x5C, 0x1B, 0x00, 0x00, +0x88, 0x04, 0x47, 0x04, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x30, 0x5C, 0x1B, 0x00, 0x00, +0x0A, 0x04, 0xD0, 0x03, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x32, 0x5C, 0x1B, 0x00, 0x00, +0x99, 0x03, 0x66, 0x03, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x34, 0x5C, 0x1B, 0x00, 0x00, +0x35, 0x03, 0x07, 0x03, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x36, 0x5C, 0x1B, 0x00, 0x00, +0xDC, 0x02, 0xB3, 0x02, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x38, 0x5C, 0x1B, 0x00, 0x00, +0x8C, 0x02, 0x68, 0x02, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x3A, 0x5C, 0x1B, 0x00, 0x00, +0x45, 0x02, 0x25, 0x02, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x3C, 0x5C, 0x1B, 0x00, 0x00, +0x06, 0x02, 0xE9, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x3E, 0x5C, 0x1B, 0x00, 0x00, +0xCE, 0x01, 0xB4, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x40, 0x5C, 0x1B, 0x00, 0x00, +0x9C, 0x01, 0x85, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x42, 0x5C, 0x1B, 0x00, 0x00, +0x6F, 0x01, 0x5A, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x44, 0x5C, 0x1B, 0x00, 0x00, +0x47, 0x01, 0x35, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x46, 0x5C, 0x1B, 0x00, 0x00, +0x23, 0x01, 0x13, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x48, 0x5C, 0x1B, 0x00, 0x00, +0x04, 0x01, 0xF5, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x4A, 0x5C, 0x1B, 0x00, 0x00, +0xE7, 0x00, 0xDA, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x4C, 0x5C, 0x1B, 0x00, 0x00, +0xCE, 0x00, 0xC3, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x4E, 0x5C, 0x1B, 0x00, 0x00, +0xB8, 0x00, 0xAE, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x50, 0x5C, 0x1B, 0x00, 0x00, +0xA4, 0x00, 0x9B, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x52, 0x5C, 0x1B, 0x00, 0x00, +0x92, 0x00, 0x8A, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x54, 0x5C, 0x1B, 0x00, 0x00, +0x82, 0x00, 0x7B, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x56, 0x5C, 0x1B, 0x00, 0x00, +0x74, 0x00, 0x6E, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x58, 0x5C, 0x1B, 0x00, 0x00, +0x67, 0x00, 0x62, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x5A, 0x5C, 0x1B, 0x00, 0x00, +0x5C, 0x00, 0x57, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x5C, 0x5C, 0x1B, 0x00, 0x00, +0x52, 0x00, 0x4E, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x5E, 0x5C, 0x1B, 0x00, 0x00, +0x49, 0x00, 0x45, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x60, 0x5C, 0x1B, 0x00, 0x00, +0x41, 0x00, 0x3E, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x62, 0x5C, 0x1B, 0x00, 0x00, +0x3A, 0x00, 0x37, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x01, 0x62, 0x00, 0x1B, 0x00, 0x00, +0x0A, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, +0x0A, 0x00, 0xA7, 0x00, 0x00, 0x1B, 0x00, 0x00, +0x0A, 0x00, 0x15, 0x00, 0x00, 0x1B, 0x00, 0x00, +0x0A, 0x00, 0x00, 0x00, 0x04, 0x1B, 0x00, 0x00, +0x52, 0x29, 0x46, 0xE2, 0x08, 0x1B, 0x00, 0x00, +0x80, 0x00, 0x00, 0x00, 0x0C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x10, 0x1B, 0x00, 0x00, +0x00, 0x0C, 0x01, 0x00, 0x14, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x18, 0x1B, 0x00, 0x00, +0x03, 0x29, 0x29, 0x00, 0x1C, 0x1B, 0x00, 0x00, +0x32, 0xFC, 0x18, 0xA2, 0x20, 0x1B, 0x00, 0x00, +0x08, 0x00, 0x04, 0x01, 0x24, 0x1B, 0x00, 0x00, +0x08, 0x00, 0x06, 0x00, 0x28, 0x1B, 0x00, 0x00, +0x00, 0x03, 0x06, 0x00, 0x2C, 0x1B, 0x00, 0x00, +0x18, 0x00, 0x18, 0x00, 0x30, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x34, 0x1B, 0x00, 0x00, +0x00, 0x08, 0x00, 0x00, 0x38, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x3C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x98, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x9C, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xC0, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0xCC, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xE4, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xEC, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x60, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x10, 0x1F, 0x64, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x00, 0x5C, 0x1B, 0x00, 0x00, +0xFF, 0x3F, 0x6B, 0x3C, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x02, 0x5C, 0x1B, 0x00, 0x00, +0x0A, 0x39, 0xD9, 0x35, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x04, 0x5C, 0x1B, 0x00, 0x00, +0xD6, 0x32, 0xFE, 0x2F, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x06, 0x5C, 0x1B, 0x00, 0x00, +0x4F, 0x2D, 0xC6, 0x2A, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x08, 0x5C, 0x1B, 0x00, 0x00, +0x62, 0x28, 0x1F, 0x26, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x0A, 0x5C, 0x1B, 0x00, 0x00, +0xFD, 0x23, 0xFA, 0x21, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x0C, 0x5C, 0x1B, 0x00, 0x00, +0x13, 0x20, 0x48, 0x1E, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x0E, 0x5C, 0x1B, 0x00, 0x00, +0x96, 0x1C, 0xFD, 0x1A, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x10, 0x5C, 0x1B, 0x00, 0x00, +0x7B, 0x19, 0x0E, 0x18, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x12, 0x5C, 0x1B, 0x00, 0x00, +0xB5, 0x16, 0x70, 0x15, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x14, 0x5C, 0x1B, 0x00, 0x00, +0x3D, 0x14, 0x1B, 0x13, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x16, 0x5C, 0x1B, 0x00, 0x00, +0x0A, 0x12, 0x07, 0x11, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x18, 0x5C, 0x1B, 0x00, 0x00, +0x13, 0x10, 0x2D, 0x0F, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x1A, 0x5C, 0x1B, 0x00, 0x00, +0x54, 0x0E, 0x87, 0x0D, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x1C, 0x5C, 0x1B, 0x00, 0x00, +0xC5, 0x0C, 0x0E, 0x0C, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x1E, 0x5C, 0x1B, 0x00, 0x00, +0x62, 0x0B, 0xBF, 0x0A, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x20, 0x5C, 0x1B, 0x00, 0x00, +0x25, 0x0A, 0x93, 0x09, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x22, 0x5C, 0x1B, 0x00, 0x00, +0x0A, 0x09, 0x89, 0x08, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x24, 0x5C, 0x1B, 0x00, 0x00, +0x0F, 0x08, 0x9B, 0x07, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x26, 0x5C, 0x1B, 0x00, 0x00, +0x2E, 0x07, 0xC7, 0x06, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x28, 0x5C, 0x1B, 0x00, 0x00, +0x66, 0x06, 0x0B, 0x06, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x2A, 0x5C, 0x1B, 0x00, 0x00, +0xB4, 0x05, 0x63, 0x05, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x2C, 0x5C, 0x1B, 0x00, 0x00, +0x15, 0x05, 0xCD, 0x04, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x2E, 0x5C, 0x1B, 0x00, 0x00, +0x88, 0x04, 0x47, 0x04, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x30, 0x5C, 0x1B, 0x00, 0x00, +0x0A, 0x04, 0xD0, 0x03, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x32, 0x5C, 0x1B, 0x00, 0x00, +0x99, 0x03, 0x66, 0x03, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x34, 0x5C, 0x1B, 0x00, 0x00, +0x35, 0x03, 0x07, 0x03, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x36, 0x5C, 0x1B, 0x00, 0x00, +0xDC, 0x02, 0xB3, 0x02, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x38, 0x5C, 0x1B, 0x00, 0x00, +0x8C, 0x02, 0x68, 0x02, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x3A, 0x5C, 0x1B, 0x00, 0x00, +0x45, 0x02, 0x25, 0x02, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x3C, 0x5C, 0x1B, 0x00, 0x00, +0x06, 0x02, 0xE9, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x3E, 0x5C, 0x1B, 0x00, 0x00, +0xCE, 0x01, 0xB4, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x40, 0x5C, 0x1B, 0x00, 0x00, +0x9C, 0x01, 0x85, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x42, 0x5C, 0x1B, 0x00, 0x00, +0x6F, 0x01, 0x5A, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x44, 0x5C, 0x1B, 0x00, 0x00, +0x47, 0x01, 0x35, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x46, 0x5C, 0x1B, 0x00, 0x00, +0x23, 0x01, 0x13, 0x01, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x48, 0x5C, 0x1B, 0x00, 0x00, +0x04, 0x01, 0xF5, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x4A, 0x5C, 0x1B, 0x00, 0x00, +0xE7, 0x00, 0xDA, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x4C, 0x5C, 0x1B, 0x00, 0x00, +0xCE, 0x00, 0xC3, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x4E, 0x5C, 0x1B, 0x00, 0x00, +0xB8, 0x00, 0xAE, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x50, 0x5C, 0x1B, 0x00, 0x00, +0xA4, 0x00, 0x9B, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x52, 0x5C, 0x1B, 0x00, 0x00, +0x92, 0x00, 0x8A, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x54, 0x5C, 0x1B, 0x00, 0x00, +0x82, 0x00, 0x7B, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x56, 0x5C, 0x1B, 0x00, 0x00, +0x74, 0x00, 0x6E, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x58, 0x5C, 0x1B, 0x00, 0x00, +0x67, 0x00, 0x62, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x5A, 0x5C, 0x1B, 0x00, 0x00, +0x5C, 0x00, 0x57, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x5C, 0x5C, 0x1B, 0x00, 0x00, +0x52, 0x00, 0x4E, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x5E, 0x5C, 0x1B, 0x00, 0x00, +0x49, 0x00, 0x45, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x60, 0x5C, 0x1B, 0x00, 0x00, +0x41, 0x00, 0x3E, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x89, 0x62, 0x5C, 0x1B, 0x00, 0x00, +0x3A, 0x00, 0x37, 0x00, 0x58, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x01, 0x62, 0x00, 0x1B, 0x00, 0x00, +0x0C, 0x00, 0x00, 0x00, 0xD4, 0x1B, 0x00, 0x00, +0xF0, 0x00, 0x00, 0x00, 0xB8, 0x1B, 0x00, 0x00, +0x20, 0x20, 0x20, 0x20, 0xBC, 0x1B, 0x00, 0x00, +0x20, 0x20, 0x20, 0x20, 0xC0, 0x1B, 0x00, 0x00, +0x20, 0x20, 0x20, 0x20, 0xC4, 0x1B, 0x00, 0x00, +0x20, 0x20, 0x20, 0x20, 0xC8, 0x1B, 0x00, 0x00, +0x04, 0x04, 0x04, 0x04, 0xCC, 0x1B, 0x00, 0x00, +0x04, 0x04, 0x04, 0x04, 0xD0, 0x1B, 0x00, 0x00, +0x04, 0x04, 0x04, 0x04, 0xD8, 0x1B, 0x00, 0x00, +0x04, 0x04, 0x04, 0x04, 0xDC, 0x1B, 0x00, 0x00, +0x20, 0x20, 0x20, 0x20, 0xE0, 0x1B, 0x00, 0x00, +0x04, 0x04, 0x04, 0x04, 0xE4, 0x1B, 0x00, 0x00, +0x17, 0x2F, 0x47, 0x77, 0xE8, 0x1B, 0x00, 0x00, +0x8F, 0xA7, 0xBF, 0xEF, 0xEC, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xF0, 0x1B, 0x00, 0x00, +0x39, 0x19, 0x1F, 0x1F, 0x04, 0x1B, 0x00, 0x00, +0x5B, 0x00, 0x00, 0x00, 0x08, 0x1B, 0x00, 0x00, +0x00, 0xC0, 0x00, 0xB0, 0x5C, 0x1B, 0x00, 0x00, +0x5B, 0x00, 0x00, 0x00, 0x60, 0x1B, 0x00, 0x00, +0x00, 0xC0, 0x00, 0xB0, 0xB4, 0x1B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x15, 0xF0, 0xFF, 0x0F, -0x00, 0x00, 0x00, 0x00, 0x15, 0xF0, 0x0F, 0x00, -0x00, 0x00, 0x00, 0x00, 0x05, 0xF0, 0xFF, 0x0F, -0x00, 0x00, 0x00, 0x00, 0x05, 0xF0, 0x0F, 0x00, -0x00, 0x00, 0x00, 0x00, 0x10, 0xF0, 0xFF, 0x0F, -0x00, 0x00, 0x00, 0x00, 0x10, 0xF0, 0x0F, 0x00, -0x00, 0x00, 0x00, 0x00, 0xF5, 0x0F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, -0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, -0x00, 0x00, 0x00, 0x00, 0x15, 0xF0, 0x3F, 0x00, -0x00, 0x00, 0x00, 0x00, 0x15, 0xF0, 0xFF, 0xFF, -0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, -0xFF, 0x03, 0x00, 0x00, 0x15, 0xF0, 0xFF, 0xFF, -0x0F, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x06, -0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0xFF, -0xFF, 0x00, 0x01, 0x02, 0x02, 0x04, 0x05, 0x06, -0x07, 0x08, 0x09, 0x0A, 0x28, 0x28, 0x32, 0x28, -0x1E, 0x19, 0x19, 0x19, 0x18, 0x18, 0x12, 0x0F, -0x1E, 0x1E, 0x19, 0x1E, 0x18, 0x16, 0x0C, 0x0C, -0x1E, 0x1E, 0x19, 0x1E, 0x18, 0x16, 0x0C, 0x0C, -0x1E, 0x1E, 0x19, 0x1C, 0x18, 0x14, 0x0C, 0x0A, -0x1E, 0x1E, 0x19, 0x1E, 0x19, 0x18, 0x0F, 0x0E, -0x1E, 0x1E, 0x1E, 0x1E, 0x1C, 0x16, 0x14, 0x12, -0x0C, 0x0A, 0x1E, 0x1E, 0x1E, 0x1E, 0x1A, 0x16, -0x12, 0x10, 0x0C, 0x0A, 0x1E, 0x1E, 0x1E, 0x1E, -0x18, 0x16, 0x0D, 0x0E, 0x0C, 0x0A, 0x0A, 0x0A, -0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, -0x12, 0x12, 0x14, 0x12, 0x0F, 0x0F, 0x0C, 0x0C, -0x09, 0x08, 0x08, 0x07, 0x0A, 0x0A, 0x09, 0x07, -0x07, 0x06, 0x05, 0x04, 0x0C, 0x0C, 0x0A, 0x0A, -0x09, 0x07, 0x07, 0x06, 0x0C, 0x0C, 0x0A, 0x0A, -0x09, 0x07, 0x07, 0x06, 0x0C, 0x0C, 0x0A, 0x0A, -0x09, 0x07, 0x07, 0x06, 0x0A, 0x0A, 0x08, 0x08, -0x08, 0x07, 0x07, 0x06, 0x04, 0x04, 0x0C, 0x0C, +0x15, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x15, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x05, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x05, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x10, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x10, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0xF5, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x15, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x15, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, +0x15, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, +0x01, 0x02, 0x03, 0x06, 0x05, 0x06, 0x07, 0x08, +0x09, 0x0A, 0x0B, 0xFF, 0xFF, 0x00, 0x01, 0x02, +0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, +0x28, 0x28, 0x32, 0x28, 0x1E, 0x19, 0x19, 0x19, +0x18, 0x18, 0x12, 0x0F, 0x1E, 0x1E, 0x19, 0x1E, +0x18, 0x16, 0x0C, 0x0C, 0x1E, 0x1E, 0x19, 0x1E, +0x18, 0x16, 0x0C, 0x0C, 0x1E, 0x1E, 0x19, 0x1C, +0x18, 0x14, 0x0C, 0x0A, 0x1E, 0x1E, 0x19, 0x1E, +0x19, 0x18, 0x0F, 0x0E, 0x1E, 0x1E, 0x1E, 0x1E, +0x1C, 0x16, 0x14, 0x12, 0x0C, 0x0A, 0x1E, 0x1E, +0x1E, 0x1E, 0x1A, 0x16, 0x12, 0x10, 0x0C, 0x0A, +0x1E, 0x1E, 0x1E, 0x1E, 0x18, 0x16, 0x0D, 0x0E, +0x0C, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, +0x0A, 0x0A, 0x0A, 0x0A, 0x12, 0x12, 0x14, 0x12, +0x0F, 0x0F, 0x0C, 0x0C, 0x09, 0x08, 0x08, 0x07, 0x0A, 0x0A, 0x09, 0x07, 0x07, 0x06, 0x05, 0x04, 0x0C, 0x0C, 0x0A, 0x0A, 0x09, 0x07, 0x07, 0x06, -0x05, 0x04, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, -0x0A, 0x0A, 0x0A, 0x0A, 0x02, 0x02, 0x02, 0x04, -0x02, 0x04, 0x06, 0x06, 0x08, 0x08, 0x09, 0x09, -0x03, 0x06, 0x08, 0x08, 0x0A, 0x0E, 0x10, 0x18, -0x05, 0x08, 0x08, 0x08, 0x0A, 0x0E, 0x10, 0x18, -0x05, 0x08, 0x08, 0x09, 0x10, 0x14, 0x1C, 0x20, -0x04, 0x06, 0x08, 0x0A, 0x10, 0x18, 0x18, 0x20, -0x03, 0x06, 0x08, 0x09, 0x10, 0x14, 0x1C, 0x24, -0x34, 0x3A, 0x05, 0x07, 0x09, 0x0A, 0x10, 0x14, -0x1C, 0x28, 0x34, 0x3C, 0x06, 0x08, 0x0A, 0x0C, -0x12, 0x18, 0x1E, 0x2E, 0x36, 0x40, 0x0A, 0x0C, -0x0C, 0x12, 0x16, 0x1C, 0x20, 0x2E, 0x36, 0x40, -0x2C, 0x00, 0x04, 0x00, 0x2D, 0x00, 0x2C, 0x01, -0x2D, 0x01, 0x2C, 0x02, 0x2E, 0x01, 0xFF, 0x00, -0x2D, 0x02, 0xFF, 0x00, 0x36, 0x2D, 0xFF, 0x36, -0x2E, 0xFF, 0x37, 0x2F, 0xFF, 0x38, 0x30, 0xFF, -0x39, 0x31, 0xFF, 0x3A, 0x32, 0xFF, 0x3A, 0x33, -0xFF, 0x3A, 0x34, 0xFF, 0x3A, 0x35, 0xFF, 0x3B, -0xFF, 0xFF, 0x37, 0x2E, 0xFF, 0x38, 0x30, 0xFF, -0x39, 0x31, 0xFF, 0x3A, 0x32, 0xFF, 0x3B, 0x35, -0xFF, 0x3C, 0xFF, 0xFF, 0x3D, 0xFF, 0xFF, 0x3E, -0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -0x37, 0xFF, 0x2F, 0x39, 0xFF, 0x31, 0xFF, 0x3A, -0x33, 0xFF, 0x3B, 0x35, 0xFF, 0x3D, 0xFF, 0xFF, -0xFF, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, -0x0D, 0x14, 0xFF, 0x15, 0x0E, 0xFF, 0x15, 0x0F, -0xFF, 0x16, 0x10, 0xFF, 0x17, 0x11, 0xFF, 0x18, -0x12, 0xFF, 0x18, 0x13, 0xFF, 0x18, 0xFF, 0xFF, -0x15, 0x0E, 0xFF, 0x16, 0x10, 0xFF, 0x17, 0x10, -0xFF, 0x18, 0x11, 0xFF, 0x19, 0xFF, 0xFF, 0x1A, -0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -0x15, 0x13, 0x0F, 0x17, 0x1E, 0x11, 0x18, 0x1F, -0x13, 0x20, 0x19, 0xFF, 0x21, 0x1B, 0xFF, 0x22, -0xFF, 0xFF, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -0x04, 0x04, 0x04, 0x36, 0x2C, 0xFF, 0x2D, 0xFF, -0xFF, 0x2E, 0x37, 0xFF, 0x38, 0x2F, 0xFF, 0x39, -0x30, 0xFF, 0x39, 0x31, 0xFF, 0x39, 0x32, 0xFF, -0x3A, 0x33, 0xFF, 0x3A, 0x34, 0xFF, 0x2D, 0x2C, -0xFF, 0x36, 0x2E, 0xFF, 0x37, 0x2F, 0xFF, 0x38, -0x30, 0xFF, 0x33, 0x39, 0xFF, 0x35, 0x3A, 0xFF, -0x3B, 0x34, 0xFF, 0x3C, 0x3B, 0xFF, 0x3D, 0x3C, -0xFF, 0x3E, 0x3D, 0xFF, 0x37, 0x2E, 0xFF, 0x38, -0x2F, 0xFF, 0x39, 0x31, 0xFF, 0x3A, 0xFF, 0xFF, -0xFF, 0x3B, 0xFF, 0xFF, 0x3C, 0xFF, 0xFF, 0x3D, -0x3C, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -0xFF, 0xFF, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0x0C, -0xFF, 0xFF, 0x0D, 0x14, 0xFF, 0x0E, 0x15, 0xFF, -0x16, 0x0F, 0xFF, 0x17, 0x10, 0xFF, 0x17, 0x11, -0xFF, 0x17, 0x12, 0xFF, 0x0D, 0x0C, 0xFF, 0x14, +0x0C, 0x0C, 0x0A, 0x0A, 0x09, 0x07, 0x07, 0x06, +0x0C, 0x0C, 0x0A, 0x0A, 0x09, 0x07, 0x07, 0x06, +0x0A, 0x0A, 0x08, 0x08, 0x08, 0x07, 0x07, 0x06, +0x04, 0x04, 0x0C, 0x0C, 0x0A, 0x0A, 0x09, 0x07, +0x07, 0x06, 0x05, 0x04, 0x0C, 0x0C, 0x0A, 0x0A, +0x09, 0x07, 0x07, 0x06, 0x05, 0x04, 0x0A, 0x0A, +0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, +0x02, 0x02, 0x02, 0x04, 0x02, 0x04, 0x06, 0x06, +0x08, 0x08, 0x09, 0x09, 0x03, 0x06, 0x08, 0x08, +0x0A, 0x0E, 0x10, 0x18, 0x05, 0x08, 0x08, 0x08, +0x0A, 0x0E, 0x10, 0x18, 0x05, 0x08, 0x08, 0x09, +0x10, 0x14, 0x1C, 0x20, 0x04, 0x06, 0x08, 0x0A, +0x10, 0x18, 0x18, 0x20, 0x03, 0x06, 0x08, 0x09, +0x10, 0x14, 0x1C, 0x24, 0x34, 0x3A, 0x05, 0x07, +0x09, 0x0A, 0x10, 0x14, 0x1C, 0x28, 0x34, 0x3C, +0x06, 0x08, 0x0A, 0x0C, 0x12, 0x18, 0x1E, 0x2E, +0x36, 0x40, 0x0A, 0x0C, 0x0C, 0x12, 0x16, 0x1C, +0x20, 0x2E, 0x36, 0x40, 0x2C, 0x00, 0x04, 0x00, +0xFF, 0x00, 0x36, 0x00, 0x2D, 0x00, 0x2C, 0x01, +0x37, 0x00, 0x2D, 0x01, 0x2C, 0x02, 0x38, 0x00, +0x2E, 0x01, 0x36, 0x01, 0x37, 0x01, 0x2D, 0x02, +0x36, 0x02, 0x38, 0x01, 0x2E, 0x02, 0xFF, 0x00, +0x37, 0x02, 0x2F, 0x02, 0xFF, 0x00, 0x00, 0x00, +0x36, 0x2D, 0xFF, 0x36, 0x2E, 0xFF, 0x37, 0x2F, +0xFF, 0x38, 0x30, 0xFF, 0x39, 0x31, 0xFF, 0x3A, +0x32, 0xFF, 0x3A, 0x33, 0xFF, 0x3A, 0x34, 0xFF, +0x3A, 0x35, 0xFF, 0x3B, 0xFF, 0xFF, 0x37, 0x2E, +0xFF, 0x38, 0x30, 0xFF, 0x39, 0x31, 0xFF, 0x3A, +0x32, 0xFF, 0x3B, 0x35, 0xFF, 0x3C, 0xFF, 0xFF, +0x3D, 0xFF, 0xFF, 0x3E, 0xFF, 0xFF, 0x3F, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0xFF, 0x2F, 0x39, +0xFF, 0x31, 0xFF, 0x3A, 0x33, 0xFF, 0x3B, 0x35, +0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0x3E, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x0D, 0x14, 0xFF, 0x15, 0x0E, 0xFF, 0x15, 0x0F, 0xFF, 0x16, 0x10, 0xFF, -0x17, 0x12, 0xFF, 0x18, 0x13, 0xFF, 0x19, 0x13, -0xFF, 0x1A, 0x13, 0xFF, 0x14, 0x0E, 0xFF, 0x15, -0x1C, 0xFF, 0x17, 0x1D, 0x11, 0x18, 0x1E, 0x13, -0x19, 0x1F, 0x1E, 0x20, 0x1A, 0x1F, 0x21, 0x1B, -0x20, 0x22, 0x21, 0x1B, 0x01, 0x00, 0x02, 0x00, -0x05, 0x00, 0x0B, 0x00, 0x06, 0x00, 0x09, 0x00, -0x0C, 0x00, 0x12, 0x00, 0x18, 0x00, 0x24, 0x00, -0x30, 0x00, 0x36, 0x00, 0x0E, 0x00, 0x1B, 0x00, -0x29, 0x00, 0x36, 0x00, 0x51, 0x00, 0x6C, 0x00, -0x7A, 0x00, 0x87, 0x00, 0x1B, 0x00, 0x36, 0x00, -0x51, 0x00, 0x6C, 0x00, 0xA2, 0x00, 0xD8, 0x00, -0xF3, 0x00, 0x0E, 0x01, 0x29, 0x00, 0x51, 0x00, -0x7A, 0x00, 0xA2, 0x00, 0xF3, 0x00, 0x44, 0x01, -0x6D, 0x01, 0x95, 0x01, 0x36, 0x00, 0x6C, 0x00, -0xA2, 0x00, 0xD8, 0x00, 0x44, 0x01, 0xB0, 0x01, -0xE6, 0x01, 0x1C, 0x02, 0x0E, 0x00, 0x1B, 0x00, -0x29, 0x00, 0x36, 0x00, 0x51, 0x00, 0x6C, 0x00, -0x7A, 0x00, 0x87, 0x00, 0xA2, 0x00, 0xB4, 0x00, +0x17, 0x11, 0xFF, 0x18, 0x12, 0xFF, 0x18, 0x13, +0xFF, 0x18, 0xFF, 0xFF, 0x15, 0x0E, 0xFF, 0x16, +0x10, 0xFF, 0x17, 0x10, 0xFF, 0x18, 0x11, 0xFF, +0x19, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0x1B, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0x13, 0x0F, 0x17, +0x1E, 0x11, 0x18, 0x1F, 0x13, 0x20, 0x19, 0xFF, +0x21, 0x1B, 0xFF, 0x22, 0xFF, 0xFF, 0x23, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x04, 0x04, 0x36, +0x2C, 0xFF, 0x2D, 0xFF, 0xFF, 0x2E, 0x37, 0xFF, +0x38, 0x2F, 0xFF, 0x39, 0x30, 0xFF, 0x39, 0x31, +0xFF, 0x39, 0x32, 0xFF, 0x3A, 0x33, 0xFF, 0x3A, +0x34, 0xFF, 0x2D, 0x2C, 0xFF, 0x36, 0x2E, 0xFF, +0x37, 0x2F, 0xFF, 0x38, 0x30, 0xFF, 0x33, 0x39, +0xFF, 0x35, 0x3A, 0xFF, 0x3B, 0x34, 0xFF, 0x3C, +0x3B, 0xFF, 0x3D, 0x3C, 0xFF, 0x3E, 0x3D, 0xFF, +0x37, 0x2E, 0xFF, 0x38, 0x2F, 0xFF, 0x39, 0x31, +0xFF, 0x3A, 0xFF, 0xFF, 0xFF, 0x3B, 0xFF, 0xFF, +0x3C, 0xFF, 0xFF, 0x3D, 0x3C, 0xFF, 0x3F, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x04, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0x0D, 0x14, +0xFF, 0x0E, 0x15, 0xFF, 0x16, 0x0F, 0xFF, 0x17, +0x10, 0xFF, 0x17, 0x11, 0xFF, 0x17, 0x12, 0xFF, +0x0D, 0x0C, 0xFF, 0x14, 0x0E, 0xFF, 0x15, 0x0F, +0xFF, 0x16, 0x10, 0xFF, 0x17, 0x12, 0xFF, 0x18, +0x13, 0xFF, 0x19, 0x13, 0xFF, 0x1A, 0x13, 0xFF, +0x14, 0x0E, 0xFF, 0x15, 0x1C, 0xFF, 0x17, 0x1D, +0x11, 0x18, 0x1E, 0x13, 0x19, 0x1F, 0x1E, 0x20, +0x1A, 0x1F, 0x21, 0x1B, 0x20, 0x22, 0x21, 0x1B, +0x01, 0x00, 0x02, 0x00, 0x05, 0x00, 0x0B, 0x00, +0x06, 0x00, 0x09, 0x00, 0x0C, 0x00, 0x12, 0x00, +0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x36, 0x00, +0x0E, 0x00, 0x1B, 0x00, 0x29, 0x00, 0x36, 0x00, +0x51, 0x00, 0x6C, 0x00, 0x7A, 0x00, 0x87, 0x00, 0x1B, 0x00, 0x36, 0x00, 0x51, 0x00, 0x6C, 0x00, 0xA2, 0x00, 0xD8, 0x00, 0xF3, 0x00, 0x0E, 0x01, -0x44, 0x01, 0x68, 0x01, 0x29, 0x00, 0x51, 0x00, -0x7A, 0x00, 0xA2, 0x00, 0xF3, 0x00, 0x44, 0x01, -0x6C, 0x01, 0x95, 0x01, 0xE6, 0x01, 0x1C, 0x02, +0x29, 0x00, 0x51, 0x00, 0x7A, 0x00, 0xA2, 0x00, +0xF3, 0x00, 0x44, 0x01, 0x6D, 0x01, 0x95, 0x01, 0x36, 0x00, 0x6C, 0x00, 0xA2, 0x00, 0xD8, 0x00, 0x44, 0x01, 0xB0, 0x01, 0xE6, 0x01, 0x1C, 0x02, -0x88, 0x02, 0xD0, 0x02, 0x14, 0x14, 0x15, 0x15, -0x16, 0x17, 0x17, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, -0x1D, 0x1D, 0x1E, 0x1E, 0x1C, 0x1C, 0x1D, 0x1E, -0x1F, 0x20, 0x20, 0x20, 0x36, 0x36, 0x37, 0x37, -0x38, 0x39, 0x39, 0x3A, 0x3A, 0x3A, 0x00, 0x00, -0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x42, 0x42, -0x43, 0x43, 0x00, 0x00, 0x40, 0x40, 0x41, 0x42, -0x43, 0x44, 0x44, 0x44, 0x45, 0x46, 0x00, 0x00, -0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC0, -0xE0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x38, -0x18, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x06, -0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE0, -0x73, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0E, 0x00, 0x1B, 0x00, 0x29, 0x00, 0x36, 0x00, +0x51, 0x00, 0x6C, 0x00, 0x7A, 0x00, 0x87, 0x00, +0xA2, 0x00, 0xB4, 0x00, 0x1B, 0x00, 0x36, 0x00, +0x51, 0x00, 0x6C, 0x00, 0xA2, 0x00, 0xD8, 0x00, +0xF3, 0x00, 0x0E, 0x01, 0x44, 0x01, 0x68, 0x01, +0x29, 0x00, 0x51, 0x00, 0x7A, 0x00, 0xA2, 0x00, +0xF3, 0x00, 0x44, 0x01, 0x6C, 0x01, 0x95, 0x01, +0xE6, 0x01, 0x1C, 0x02, 0x36, 0x00, 0x6C, 0x00, +0xA2, 0x00, 0xD8, 0x00, 0x44, 0x01, 0xB0, 0x01, +0xE6, 0x01, 0x1C, 0x02, 0x88, 0x02, 0xD0, 0x02, +0x14, 0x14, 0x15, 0x15, 0x16, 0x17, 0x17, 0x18, +0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1E, 0x1E, +0x1C, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x20, 0x20, +0x36, 0x36, 0x37, 0x37, 0x38, 0x39, 0x39, 0x3A, +0x3A, 0x3A, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, +0x41, 0x41, 0x42, 0x42, 0x43, 0x43, 0x00, 0x00, +0x40, 0x40, 0x41, 0x42, 0x43, 0x44, 0x44, 0x44, +0x45, 0x46, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x00, 0x30, 0xC0, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, +0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, +0x00, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x8C, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x21, 0x6C, 0x00, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x94, 0xB8, 0x00, 0x65, 0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, 0x94, 0xB9, @@ -57017,51 +57789,51 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xC0, 0xF1, 0x14, 0x4C, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x41, 0xF7, 0x08, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, -0x30, 0xF0, 0x20, 0x6C, 0x66, 0xF4, 0x1C, 0x4C, -0x00, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0xEF, 0xF6, -0x00, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, +0x30, 0xF0, 0x20, 0x6C, 0x87, 0xF3, 0x14, 0x4C, +0x00, 0x6E, 0x30, 0xF0, 0x21, 0x6F, 0x91, 0xF0, +0x18, 0x4F, 0xC0, 0xDC, 0x04, 0x4C, 0xE3, 0xEC, 0xB8, 0x67, 0xFB, 0x2D, 0x10, 0xF0, 0x23, 0x6C, 0xC0, 0xF0, 0x01, 0x4C, 0x00, 0xEC, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xC0, 0xF0, 0x01, 0x4A, 0x40, 0xDB, 0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, -0xE3, 0x58, 0x80, 0x18, 0xF3, 0x55, 0x80, 0x18, -0x1A, 0x56, 0x80, 0x18, 0xB4, 0x58, 0x80, 0x18, -0x34, 0x56, 0x80, 0x18, 0xAB, 0x58, 0x00, 0x18, -0xCC, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, +0x29, 0x5E, 0x80, 0x18, 0x39, 0x5B, 0x80, 0x18, +0x60, 0x5B, 0x80, 0x18, 0xFA, 0x5D, 0x80, 0x18, +0x7A, 0x5B, 0x80, 0x18, 0xF1, 0x5D, 0x00, 0x18, +0xDD, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x41, 0xF7, 0x08, 0x4C, 0x1D, 0xF0, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE6, 0xF4, 0x50, 0xDB, 0x01, 0xF0, +0x20, 0x6B, 0x47, 0xF4, 0x50, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF0, 0x10, 0x4C, 0x01, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x06, 0xF5, 0x44, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x67, 0xF4, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0xE1, 0xF7, 0x00, 0x4C, 0x1D, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF4, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x47, 0xF4, 0x58, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF0, 0x0C, 0x4C, 0x01, 0x6D, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF5, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x67, 0xF4, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x81, 0xF7, 0x14, 0x4C, 0x1E, 0xF0, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF4, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x47, 0xF4, 0x54, 0xDB, 0x01, 0xF0, 0x50, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0x6D, 0x82, 0xF0, 0x04, 0x4C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x67, 0xF4, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF0, 0x00, 0x4C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x06, 0xF5, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6C, +0x67, 0xF4, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x22, 0xF0, 0x14, 0x4C, 0x1E, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE6, 0xF4, 0x5C, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x60, 0x9A, 0xFF, 0xF7, +0x20, 0x6B, 0x47, 0xF4, 0x5C, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x78, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, @@ -57074,7 +57846,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x60, 0xAA, 0xBF, 0xF6, 0x1A, 0x6A, 0x6A, 0xEA, 0x31, 0x60, 0x77, 0xF0, 0x24, 0x6A, 0xA0, 0xF1, 0x1C, 0x4A, 0x1D, 0xF4, 0x00, 0x6B, 0x60, 0xDA, -0x10, 0xF0, 0x23, 0x6A, 0x81, 0xF0, 0x0D, 0x4A, +0x10, 0xF0, 0x23, 0x6A, 0xC1, 0xF0, 0x11, 0x4A, 0x00, 0xEA, 0x00, 0xF0, 0x20, 0x6A, 0x1F, 0xF7, 0x00, 0x6A, 0x4C, 0xEB, 0x4C, 0xB8, 0x00, 0x65, 0x6C, 0xEA, 0x42, 0x32, 0x30, 0xF0, 0x20, 0x6B, @@ -57111,7 +57883,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x80, 0x44, 0x62, 0xEC, 0x0D, 0x60, 0x77, 0xF0, 0x24, 0x6C, 0xA0, 0xF1, 0x1C, 0x4C, 0x1D, 0xF4, 0x01, 0x6B, 0x60, 0xDC, 0x10, 0xF0, 0x23, 0x6C, -0x81, 0xF0, 0x0D, 0x4C, 0x00, 0xEC, 0x00, 0x65, +0xC1, 0xF0, 0x11, 0x4C, 0x00, 0xEC, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF1, 0x0C, 0x4B, 0x41, 0x9B, 0x40, 0xDB, 0x89, 0x9A, 0xBC, 0x65, 0x7D, 0x67, 0xDF, 0xF7, 0x00, 0x03, 0x4C, 0xB8, @@ -57159,7 +57931,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x80, 0x44, 0x62, 0xEC, 0x0D, 0x60, 0x77, 0xF0, 0x24, 0x6C, 0xA0, 0xF1, 0x1C, 0x4C, 0x1D, 0xF4, 0x01, 0x6B, 0x60, 0xDC, 0x10, 0xF0, 0x23, 0x6C, -0x81, 0xF0, 0x0D, 0x4C, 0x00, 0xEC, 0x00, 0x65, +0xC1, 0xF0, 0x11, 0x4C, 0x00, 0xEC, 0x00, 0x65, 0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x41, 0xF3, 0x08, 0x4C, 0x00, 0xF4, 0x00, 0x4C, 0xBC, 0x65, 0x82, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, @@ -57182,622 +57954,670 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x65, 0x00, 0x65, 0x7B, 0xB8, 0x00, 0x65, 0x5A, 0xB8, 0x00, 0x65, 0x00, 0xBA, 0x00, 0x65, 0x5F, 0x67, 0x5A, 0xB9, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x18, 0xF7, 0xC1, 0x00, 0x1C, +0x00, 0x65, 0x00, 0x18, 0x08, 0xC2, 0x00, 0x1C, 0xBA, 0x35, 0x5A, 0xB8, 0x00, 0x65, 0x00, 0xEA, 0x6D, 0xB8, 0x00, 0xF0, 0x20, 0x6A, 0x00, 0xF2, 0x00, 0x4A, 0x4F, 0xEA, 0x4C, 0xEB, 0xAB, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x5F, 0x67, 0x5A, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x1C, 0x7D, 0x35, 0x5A, 0xB8, 0x00, 0x65, -0x00, 0xEA, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF4, 0x74, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, -0x80, 0xA3, 0x10, 0x6B, 0x8C, 0xEB, 0x05, 0x23, -0xE2, 0xF1, 0x10, 0x4A, 0xE2, 0xF1, 0x10, 0x6B, -0x31, 0x10, 0x7F, 0x4A, 0x09, 0x4A, 0x88, 0x6B, -0x15, 0x10, 0x1F, 0xF7, 0x00, 0x6C, 0x6C, 0xEC, -0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, 0x9C, 0x9C, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, -0x80, 0x9C, 0xC0, 0xA5, 0x91, 0xE3, 0x01, 0x4D, -0xC0, 0xC4, 0x01, 0x4B, 0x4A, 0xEB, 0xE9, 0x61, -0x20, 0xE8, 0x1F, 0xF7, 0x00, 0x6C, 0x6C, 0xEC, -0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, 0x9C, 0x9C, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, -0x80, 0x9C, 0xC0, 0xA5, 0x91, 0xE3, 0x01, 0x4D, -0xC0, 0xC4, 0x01, 0x4B, 0x4A, 0xEB, 0xE9, 0x61, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x01, 0x72, -0x14, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF5, -0xB4, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, -0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, -0x15, 0x10, 0x02, 0x72, 0x14, 0x61, 0x30, 0xF0, +0x00, 0xEA, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xED, 0x08, 0x25, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF1, 0x64, 0x9B, 0x71, 0xE4, +0x60, 0xA4, 0x6C, 0xEA, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6B, 0x44, 0x67, 0x6C, 0xEA, 0x88, 0x42, +0xC7, 0x4C, 0x6C, 0xEC, 0x1A, 0x5C, 0x02, 0x60, +0x20, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF3, 0x68, 0x9B, +0xFF, 0x6A, 0x8C, 0xEA, 0x80, 0xA3, 0x10, 0x6B, +0x8C, 0xEB, 0x05, 0x23, 0xE2, 0xF1, 0x10, 0x4A, +0xE2, 0xF1, 0x10, 0x6B, 0x31, 0x10, 0x7F, 0x4A, +0x09, 0x4A, 0x88, 0x6B, 0x15, 0x10, 0x1F, 0xF7, +0x00, 0x6C, 0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF0, 0x90, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x84, 0xF0, 0x94, 0x9C, 0xC0, 0xA5, +0x91, 0xE3, 0x01, 0x4D, 0xC0, 0xC4, 0x01, 0x4B, +0x4A, 0xEB, 0xE9, 0x61, 0x20, 0xE8, 0x1F, 0xF7, +0x00, 0x6C, 0x6C, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF0, 0x90, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x84, 0xF0, 0x94, 0x9C, 0xC0, 0xA5, +0x91, 0xE3, 0x01, 0x4D, 0xC0, 0xC4, 0x01, 0x4B, +0x4A, 0xEB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0xAC, 0xEA, 0x01, 0x72, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF5, 0xB4, 0x9B, 0x83, 0xF2, -0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xA4, 0xF4, 0xBC, 0x9B, 0x83, 0xF2, +0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, -0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x48, -0x86, 0xF7, 0x07, 0x4C, 0x07, 0x6E, 0x40, 0xEA, -0xE0, 0xF0, 0x87, 0xA0, 0x00, 0x18, 0xDC, 0xD6, -0x05, 0xF3, 0x5C, 0xA0, 0x1F, 0x6B, 0x01, 0x6C, -0x4A, 0x32, 0x6C, 0xEA, 0xE0, 0xF0, 0x67, 0xA0, -0x47, 0xEB, 0x8C, 0xEA, 0x03, 0x22, 0x05, 0xF3, -0x7D, 0xC0, 0x04, 0x10, 0x01, 0x6A, 0x4B, 0xEA, -0x05, 0xF3, 0x5D, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x05, 0xF3, 0x7C, 0xA0, -0x02, 0x6A, 0x6C, 0xEA, 0x1A, 0x22, 0x03, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x05, 0xF3, 0x5C, 0xC0, -0x00, 0x18, 0xCA, 0xDA, 0x04, 0xD2, 0x04, 0x93, -0x25, 0xF3, 0x40, 0x98, 0x6E, 0xEA, 0x03, 0x22, -0x04, 0x94, 0x00, 0x18, 0xEB, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x05, 0xF3, -0x9C, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0x05, 0xF3, -0x7C, 0xC2, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x90, 0x67, -0x00, 0x18, 0xF0, 0xCD, 0x90, 0x67, 0x00, 0x18, -0x97, 0xDC, 0x01, 0x6C, 0x00, 0x18, 0x26, 0xC6, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x6F, 0xCD, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x44, 0x9A, 0x42, 0xF1, 0x18, 0x6C, -0x01, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x17, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x5C, 0x9A, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF1, 0x00, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0xEF, 0x9A, 0x03, 0xF1, 0x68, 0x9B, -0xCE, 0x9A, 0xAD, 0x9A, 0x8C, 0x9A, 0xE0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x6C, 0x9B, -0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, -0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0x74, 0x9B, 0x80, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x89, 0x9A, 0x03, 0xF1, 0x78, 0x9B, -0x80, 0xDB, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x5C, 0x9A, 0x01, 0x6C, 0xA4, 0x67, -0x60, 0xDA, 0x80, 0x18, 0x4E, 0x16, 0x00, 0x1C, -0xAC, 0x39, 0xFF, 0x17, 0x4C, 0xB8, 0x00, 0x65, -0x80, 0x34, 0x8D, 0xEA, 0x8A, 0xB9, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x4C, 0xB8, 0x00, 0x65, 0x80, 0x34, 0x8F, 0xEC, -0x8C, 0xEA, 0x8A, 0xB9, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF1, 0x00, 0x4A, 0x60, 0xDA, 0x81, 0xDA, -0xA2, 0xDA, 0xC3, 0xDA, 0xE4, 0xDA, 0x05, 0xDA, -0x26, 0xDA, 0x78, 0x67, 0x67, 0xDA, 0x7D, 0x67, -0x68, 0xDA, 0x7F, 0x67, 0x69, 0xDA, 0x12, 0xEB, -0x6A, 0xDA, 0x10, 0xEB, 0x6B, 0xDA, 0x6D, 0xB8, -0x00, 0x65, 0x6C, 0xDA, 0x68, 0xB8, 0x00, 0x65, -0x6D, 0xDA, 0x6C, 0xB8, 0x00, 0x65, 0x6E, 0xDA, -0x6E, 0xB8, 0x00, 0x65, 0x6F, 0xDA, 0x10, 0xF0, -0x23, 0x6A, 0xE0, 0xF7, 0x05, 0x4A, 0x00, 0xEA, -0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0xC1, 0xF0, 0x1D, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x40, 0x9A, 0x08, 0x6B, -0x40, 0xA2, 0x4C, 0xEB, 0x00, 0x6A, 0x11, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x44, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0x9A, 0x06, 0xF5, -0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, -0x48, 0x9A, 0x06, 0xF5, 0x10, 0x4B, 0x40, 0x9A, -0x41, 0xDB, 0x20, 0xE8, 0xFF, 0x6A, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, 0x9C, 0x9C, -0x10, 0xF0, 0x23, 0x6B, 0x21, 0xF1, 0x05, 0x4B, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, -0x60, 0x9B, 0x80, 0xA3, 0x08, 0x6B, 0x8C, 0xEB, -0x1C, 0x23, 0x05, 0x5A, 0x1A, 0x60, 0x0C, 0x6D, -0xB8, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, -0x64, 0x9B, 0x80, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0x06, 0xF5, 0x18, 0x4B, 0x12, 0xEA, 0x49, 0xE3, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x68, 0x9B, -0x81, 0xDA, 0x80, 0xA2, 0x60, 0x9B, 0x62, 0xDA, -0x01, 0x6B, 0x8D, 0xEB, 0x60, 0xC2, 0x01, 0x6A, -0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF0, 0x9C, 0x9C, 0x10, 0xF0, 0x23, 0x6B, -0x81, 0xF1, 0x09, 0x4B, 0x60, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF1, 0x60, 0x9B, 0x80, 0xA3, -0x08, 0x6B, 0x8C, 0xEB, 0x1B, 0x23, 0x05, 0x5A, -0x19, 0x60, 0x0C, 0x6C, 0x98, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x06, 0xF5, 0x18, 0x4B, 0x12, 0xEA, -0x69, 0xE2, 0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, -0x0D, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, -0x64, 0x9B, 0x42, 0x9A, 0xA0, 0x9B, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF1, 0x68, 0x9B, 0x60, 0x9B, -0x4B, 0xE3, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, -0xFF, 0x6B, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF0, 0x9C, 0x9C, 0x10, 0xF0, 0x23, 0x6A, -0xE1, 0xF1, 0x09, 0x4A, 0x05, 0x5B, 0x40, 0xDC, -0x00, 0x6A, 0x11, 0x60, 0x0C, 0x6C, 0x98, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, 0x18, 0x4A, -0x12, 0xEB, 0x4D, 0xE3, 0x80, 0xA3, 0x02, 0x6A, -0x4B, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6A, -0x41, 0xDB, 0x42, 0xDB, 0x01, 0x6A, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0x21, 0xF2, 0x09, 0x4A, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, -0x40, 0xEA, 0x03, 0x22, 0x00, 0x18, 0x37, 0xC2, -0x05, 0x10, 0x10, 0xF0, 0x23, 0x68, 0xC1, 0xF0, -0x1D, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, +0x00, 0x6D, 0x00, 0x6E, 0x15, 0x10, 0x02, 0x72, +0x14, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xA4, 0xF4, +0xBC, 0x9B, 0x83, 0xF2, 0x1C, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, +0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6C, +0x08, 0xF2, 0x10, 0x48, 0xE8, 0xF2, 0x17, 0x4C, +0x07, 0x6E, 0x40, 0xEA, 0xE0, 0xF0, 0x87, 0xA0, +0x00, 0x18, 0xDB, 0xDB, 0x45, 0xF1, 0x5C, 0xA0, +0x1F, 0x6B, 0x01, 0x6C, 0x4A, 0x32, 0x6C, 0xEA, +0xE0, 0xF0, 0x67, 0xA0, 0x47, 0xEB, 0x8C, 0xEA, +0x03, 0x22, 0x45, 0xF1, 0x7D, 0xC0, 0x04, 0x10, +0x01, 0x6A, 0x4B, 0xEA, 0x45, 0xF1, 0x5D, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x45, 0xF1, 0x7C, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, +0x1A, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x45, 0xF1, 0x5C, 0xC0, 0x00, 0x18, 0xE7, 0xDF, +0x04, 0xD2, 0x04, 0x93, 0x65, 0xF1, 0x40, 0x98, +0x6E, 0xEA, 0x03, 0x22, 0x04, 0x94, 0x00, 0x18, +0x08, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x45, 0xF1, 0x9C, 0xA2, 0x02, 0x6B, +0x8D, 0xEB, 0x45, 0xF1, 0x7C, 0xC2, 0x07, 0x97, +0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0x51, 0xCF, +0x90, 0x67, 0x00, 0x18, 0xB4, 0xE1, 0x01, 0x6C, +0x00, 0x18, 0x86, 0xC6, 0x90, 0x67, 0x01, 0x6D, +0x00, 0x18, 0xA4, 0xCE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, -0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x61, 0xF2, -0x05, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF7, 0x50, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, -0x40, 0xEA, 0x04, 0x22, 0x90, 0x67, 0x00, 0x18, -0x49, 0xC2, 0x06, 0x10, 0x90, 0x67, 0x10, 0xF0, -0x23, 0x68, 0x21, 0xF1, 0x05, 0x48, 0xBA, 0xFE, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x44, 0x9A, +0x42, 0xF1, 0x18, 0x6C, 0x01, 0x6D, 0x02, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x17, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x50, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF0, 0x58, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF1, +0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xEF, 0x9A, +0x24, 0xF0, 0x7C, 0x9B, 0xCE, 0x9A, 0xAD, 0x9A, +0x8C, 0x9A, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF0, 0x60, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF0, 0x64, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF0, 0x68, 0x9B, +0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x89, 0x9A, +0x44, 0xF0, 0x6C, 0x9B, 0x80, 0xDB, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, 0x50, 0x9A, +0x01, 0x6C, 0xA4, 0x67, 0x60, 0xDA, 0x80, 0x18, +0xC7, 0x13, 0x00, 0x1C, 0xAC, 0x39, 0xFF, 0x17, +0x4C, 0xB8, 0x00, 0x65, 0x80, 0x34, 0x8D, 0xEA, +0x8A, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x4C, 0xB8, 0x00, 0x65, +0x80, 0x34, 0x8F, 0xEC, 0x8C, 0xEA, 0x8A, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF1, 0x00, 0x4A, +0x60, 0xDA, 0x81, 0xDA, 0xA2, 0xDA, 0xC3, 0xDA, +0xE4, 0xDA, 0x05, 0xDA, 0x26, 0xDA, 0x78, 0x67, +0x67, 0xDA, 0x7D, 0x67, 0x68, 0xDA, 0x7F, 0x67, +0x69, 0xDA, 0x12, 0xEB, 0x6A, 0xDA, 0x10, 0xEB, +0x6B, 0xDA, 0x6D, 0xB8, 0x00, 0x65, 0x6C, 0xDA, +0x68, 0xB8, 0x00, 0x65, 0x6D, 0xDA, 0x6C, 0xB8, +0x00, 0x65, 0x6E, 0xDA, 0x6E, 0xB8, 0x00, 0x65, +0x6F, 0xDA, 0x10, 0xF0, 0x23, 0x6A, 0x21, 0xF0, +0x09, 0x4A, 0x00, 0xEA, 0x00, 0x65, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x21, 0xF1, 0x01, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, +0x54, 0x9A, 0x08, 0x6B, 0x40, 0xA2, 0x4C, 0xEB, +0x00, 0x6A, 0x11, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF0, 0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0x9A, 0x67, 0xF4, 0x50, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF0, 0x5C, 0x9A, 0x67, 0xF4, +0x10, 0x4B, 0x40, 0x9A, 0x41, 0xDB, 0x20, 0xE8, +0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x24, 0xF0, 0x90, 0x9C, 0x10, 0xF0, 0x23, 0x6B, +0x61, 0xF1, 0x09, 0x4B, 0x60, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF0, 0x74, 0x9B, 0x80, 0xA3, +0x08, 0x6B, 0x8C, 0xEB, 0x1C, 0x23, 0x05, 0x5A, +0x1A, 0x60, 0x0C, 0x6D, 0xB8, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF0, 0x78, 0x9B, 0x80, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x67, 0xF4, 0x18, 0x4B, +0x12, 0xEA, 0x49, 0xE3, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF0, 0x7C, 0x9B, 0x81, 0xDA, 0x80, 0xA2, +0x60, 0x9B, 0x62, 0xDA, 0x01, 0x6B, 0x8D, 0xEB, +0x60, 0xC2, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF0, 0x90, 0x9C, +0x10, 0xF0, 0x23, 0x6B, 0xC1, 0xF1, 0x0D, 0x4B, +0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF0, +0x74, 0x9B, 0x80, 0xA3, 0x08, 0x6B, 0x8C, 0xEB, +0x1B, 0x23, 0x05, 0x5A, 0x19, 0x60, 0x0C, 0x6C, +0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x67, 0xF4, +0x18, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0x80, 0xA2, +0x01, 0x6B, 0x8C, 0xEB, 0x0D, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF0, 0x78, 0x9B, 0x42, 0x9A, +0xA0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF0, +0x7C, 0x9B, 0x60, 0x9B, 0x4B, 0xE3, 0x20, 0xE8, +0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6B, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF0, 0x90, 0x9C, +0x10, 0xF0, 0x23, 0x6A, 0x21, 0xF2, 0x0D, 0x4A, +0x05, 0x5B, 0x40, 0xDC, 0x00, 0x6A, 0x11, 0x60, +0x0C, 0x6C, 0x98, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x67, 0xF4, 0x18, 0x4A, 0x12, 0xEB, 0x4D, 0xE3, +0x80, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x00, 0x6A, 0x41, 0xDB, 0x42, 0xDB, +0x01, 0x6A, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x61, 0xF2, +0x0D, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF7, 0x50, 0x9A, 0x40, 0xEA, 0x03, 0x22, +0x00, 0x18, 0x48, 0xC2, 0x05, 0x10, 0x10, 0xF0, +0x23, 0x68, 0x21, 0xF1, 0x01, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, +0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xA1, 0xF2, 0x09, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, 0x40, 0xEA, 0x04, 0x22, -0x90, 0x67, 0x00, 0x18, 0x62, 0xC2, 0x06, 0x10, -0x90, 0x67, 0x10, 0xF0, 0x23, 0x68, 0x81, 0xF1, +0x90, 0x67, 0x00, 0x18, 0x5A, 0xC2, 0x06, 0x10, +0x90, 0x67, 0x10, 0xF0, 0x23, 0x68, 0x61, 0xF1, 0x09, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, -0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xE1, 0xF2, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xE1, 0xF2, 0x0D, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, 0x40, 0xEA, 0x04, 0x22, 0x90, 0x67, 0x00, 0x18, -0x7A, 0xC2, 0x06, 0x10, 0x90, 0x67, 0x10, 0xF0, -0x23, 0x68, 0xE1, 0xF1, 0x09, 0x48, 0xBA, 0xFE, +0x73, 0xC2, 0x06, 0x10, 0x90, 0x67, 0x10, 0xF0, +0x23, 0x68, 0xC1, 0xF1, 0x0D, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0x10, 0xF0, 0x23, 0x6A, 0xC0, 0xF2, 0x11, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, 0x48, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x80, 0xF4, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, 0x4C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x40, 0xF5, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, 0x50, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xA0, 0xF5, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, 0x54, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xE0, 0xF7, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, 0x58, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x81, 0xF0, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF6, 0x5C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xE0, 0xF7, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x40, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x3C, 0xF6, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x44, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xBA, 0xF4, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5A, 0xF2, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x4C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xDA, 0xF5, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x50, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFA, 0xF6, 0x08, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x54, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFA, 0xF5, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x7A, 0xF1, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF7, 0x5C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xBB, 0xF6, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0x40, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x7B, 0xF5, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0x44, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFB, 0xF5, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5C, 0xF1, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0x4C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5C, 0xF7, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0x50, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xBC, 0xF1, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0x54, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFC, 0xF0, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5B, 0xF6, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF7, 0x5C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFA, 0xF5, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF7, 0x40, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xDA, 0xF0, 0x08, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF7, 0x44, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xD9, 0xF6, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF7, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x1C, 0xF6, 0x08, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF7, 0x4C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xB9, 0xF6, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF7, 0x50, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFB, 0xF1, 0x04, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF7, 0x54, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFB, 0xF7, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF7, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xBC, 0xF6, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF7, 0x5C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x1B, 0xF7, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF7, 0x40, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x7B, 0xF6, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF7, 0x44, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFB, 0xF1, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF7, 0x48, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xC0, 0xF7, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF7, 0x4C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5A, 0xF0, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF7, 0x50, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x1A, 0xF0, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF7, 0x54, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFA, 0xF0, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF7, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5A, 0xF2, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF7, 0x5C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x9A, 0xF3, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x40, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFA, 0xF1, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x44, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5C, 0xF3, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5C, 0xF4, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x4C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x3C, 0xF2, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x50, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xBC, 0xF4, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x54, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x1C, 0xF5, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFB, 0xF1, 0x08, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF7, 0x5C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x9B, 0xF4, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF7, 0x40, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x1B, 0xF3, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF7, 0x44, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x1B, 0xF2, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF7, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5A, 0xF7, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF7, 0x4C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xBB, 0xF0, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF7, 0x50, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5B, 0xF0, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF7, 0x54, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x9A, 0xF7, 0x04, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF7, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5B, 0xF1, 0x04, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF7, 0x5C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x7B, 0xF1, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF7, 0x40, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x9C, 0xF7, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF7, 0x44, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFC, 0xF7, 0x04, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF7, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x1D, 0xF0, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF7, 0x4C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x79, 0xF6, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF7, 0x50, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xDD, 0xF0, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF7, 0x54, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x1D, 0xF1, 0x08, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF7, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x3D, 0xF1, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF7, 0x5C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x9D, 0xF3, 0x08, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x40, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFD, 0xF3, 0x04, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x44, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x3D, 0xF4, 0x08, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x5D, 0xF4, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x4C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x9D, 0xF4, 0x08, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x50, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xDD, 0xF4, 0x04, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x54, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xFD, 0xF6, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x3D, 0xF7, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF7, 0x5C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x7D, 0xF7, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x40, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x1E, 0xF1, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x44, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x7E, 0xF1, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x9E, 0xF1, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x66, 0xF4, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xDE, 0xF1, 0x10, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x4C, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xDE, 0xF3, 0x1C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x50, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x3E, 0xF4, 0x18, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x54, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0x7E, 0xF4, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x58, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xBE, 0xF4, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, 0x5C, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x24, 0x67, -0x4C, 0xE9, 0x4C, 0xED, 0x2E, 0x34, 0x07, 0x6B, -0x01, 0x75, 0x4C, 0xEC, 0x2C, 0xEB, 0x22, 0x61, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x11, 0xE4, 0x01, 0x6A, 0x44, 0xEB, 0x83, 0xF3, -0x70, 0xA4, 0x00, 0x6D, 0x6D, 0xEA, 0x83, 0xF3, -0x50, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x40, 0x9A, 0x91, 0x67, 0x40, 0xEA, 0xE0, 0xF0, -0x48, 0xA0, 0x4E, 0xE9, 0x1F, 0x29, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x4C, 0x9A, 0x40, 0x9A, -0x50, 0x32, 0x00, 0xF5, 0x42, 0x32, 0xC3, 0xF3, -0x54, 0xC8, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x51, 0xE4, 0x01, 0x6A, -0x44, 0xEB, 0x83, 0xF3, 0x70, 0xA4, 0x4F, 0xEA, -0x01, 0x6D, 0x6C, 0xEA, 0x83, 0xF3, 0x50, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x40, 0x9A, -0x91, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x68, 0x23, 0xF1, -0x50, 0x9A, 0x8C, 0xE8, 0x0C, 0x30, 0x0D, 0xD5, -0x4D, 0xE8, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF1, 0x54, 0x9A, 0x60, 0xF6, 0x13, 0x6C, -0x80, 0x6D, 0x00, 0xDA, 0x06, 0x02, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, -0x00, 0x6E, 0x14, 0x6F, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x58, 0x9A, 0x0D, 0x94, -0x01, 0x48, 0x60, 0x9A, 0x29, 0xE4, 0x04, 0x49, -0x18, 0x71, 0x60, 0xDA, 0xE3, 0x61, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x68, 0x23, 0xF1, -0x5C, 0x9A, 0x8C, 0xE8, 0x0C, 0x30, 0x0D, 0xD5, -0x4D, 0xE8, 0x00, 0x69, 0x0D, 0x93, 0x60, 0xF6, -0x13, 0x6C, 0x80, 0x6D, 0x29, 0xE3, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x40, 0x9A, -0x00, 0x6E, 0x14, 0x6F, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x54, 0x9A, 0x04, 0x49, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, +0x23, 0x6A, 0x21, 0xF3, 0x11, 0x4A, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x50, 0x9A, +0xFF, 0x68, 0x8C, 0xE8, 0x40, 0xEA, 0x04, 0x22, +0x90, 0x67, 0x00, 0x18, 0x8B, 0xC2, 0x06, 0x10, +0x90, 0x67, 0x10, 0xF0, 0x23, 0x68, 0x21, 0xF2, +0x0D, 0x48, 0xBA, 0xFE, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0x10, 0xF0, 0x23, 0x6A, +0xC0, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF6, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x80, 0xF4, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF6, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x40, 0xF5, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF6, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xA0, 0xF5, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF6, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x21, 0xF0, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF6, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xC1, 0xF0, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF6, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x21, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x3C, 0xF6, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x44, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xBA, 0xF4, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5A, 0xF2, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xDA, 0xF5, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFA, 0xF6, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x54, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFA, 0xF5, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x7A, 0xF1, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF7, 0x5C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xBB, 0xF6, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF7, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x7B, 0xF5, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF7, 0x44, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFB, 0xF5, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF7, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5C, 0xF1, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF7, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5C, 0xF7, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF7, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xBC, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF7, 0x54, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFC, 0xF0, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF7, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5B, 0xF6, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF7, 0x5C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFA, 0xF5, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xDA, 0xF0, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x44, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xD9, 0xF6, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x1C, 0xF6, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xB9, 0xF6, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFB, 0xF1, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x54, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFB, 0xF7, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xBC, 0xF6, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF7, 0x5C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x1B, 0xF7, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF7, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x7B, 0xF6, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF7, 0x44, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFB, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF7, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x01, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF7, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5A, 0xF0, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF7, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x1A, 0xF0, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF7, 0x54, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFA, 0xF0, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF7, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5A, 0xF2, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF7, 0x5C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x9A, 0xF3, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF7, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFA, 0xF1, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF7, 0x44, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5C, 0xF3, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF7, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5C, 0xF4, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF7, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x3C, 0xF2, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF7, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xBC, 0xF4, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF7, 0x54, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x1C, 0xF5, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF7, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFB, 0xF1, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF7, 0x5C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x9B, 0xF4, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF7, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x1B, 0xF3, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF7, 0x44, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x1B, 0xF2, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF7, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5A, 0xF7, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF7, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xBB, 0xF0, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF7, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5B, 0xF0, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF7, 0x54, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x9A, 0xF7, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF7, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5B, 0xF1, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF7, 0x5C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x7B, 0xF1, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF7, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x9C, 0xF7, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF7, 0x44, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFC, 0xF7, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF7, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x1D, 0xF0, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF7, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x79, 0xF6, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF7, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xDD, 0xF0, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF7, 0x54, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x1D, 0xF1, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF7, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x3D, 0xF1, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF7, 0x5C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x9D, 0xF3, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF7, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFD, 0xF3, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF7, 0x44, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x3D, 0xF4, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF7, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x5D, 0xF4, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF7, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x9D, 0xF4, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF7, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xDD, 0xF4, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF7, 0x54, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xFD, 0xF6, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF7, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x3D, 0xF7, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF7, 0x5C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x7D, 0xF7, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF0, 0x40, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x1E, 0xF1, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF0, 0x44, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x7E, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF0, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x9E, 0xF1, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x87, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xDE, 0xF1, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF0, 0x4C, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xDE, 0xF3, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF0, 0x50, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x3E, 0xF4, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF0, 0x54, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0x7E, 0xF4, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF0, 0x58, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xBE, 0xF4, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF0, 0x5C, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xE9, 0x4C, 0xED, +0x2E, 0x34, 0x07, 0x6B, 0x01, 0x75, 0x4C, 0xEC, +0x2C, 0xEB, 0x22, 0x61, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x11, 0xE4, 0x01, 0x6A, +0x44, 0xEB, 0x83, 0xF3, 0x6C, 0xA4, 0x00, 0x6D, +0x6D, 0xEA, 0x83, 0xF3, 0x4C, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x40, 0x9A, 0x91, 0x67, +0x40, 0xEA, 0xE0, 0xF0, 0x48, 0xA0, 0x4E, 0xE9, +0x1F, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x40, 0x9A, 0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, +0x42, 0x32, 0xC3, 0xF3, 0x50, 0xC8, 0x14, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x51, 0xE4, 0x01, 0x6A, 0x44, 0xEB, 0x83, 0xF3, +0x6C, 0xA4, 0x4F, 0xEA, 0x01, 0x6D, 0x6C, 0xEA, +0x83, 0xF3, 0x4C, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x40, 0x9A, 0x91, 0x67, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x68, 0x64, 0xF0, 0x44, 0x9A, 0x8C, 0xE8, +0x0C, 0x30, 0x0D, 0xD5, 0x4D, 0xE8, 0x00, 0x69, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x48, 0x9A, +0x60, 0xF6, 0x13, 0x6C, 0x80, 0x6D, 0x00, 0xDA, +0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x48, 0x9A, 0x00, 0x6E, 0x14, 0x6F, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x4C, 0x9A, 0x0D, 0x94, 0x01, 0x48, 0x60, 0x9A, +0x29, 0xE4, 0x04, 0x49, 0x18, 0x71, 0x60, 0xDA, +0xE3, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x68, 0x64, 0xF0, 0x50, 0x9A, 0x8C, 0xE8, +0x0C, 0x30, 0x0D, 0xD5, 0x4D, 0xE8, 0x00, 0x69, +0x0D, 0x93, 0x60, 0xF6, 0x13, 0x6C, 0x80, 0x6D, +0x29, 0xE3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF0, 0x54, 0x9A, 0x00, 0x6E, 0x14, 0x6F, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x48, 0x9A, 0x04, 0x49, 0x00, 0xDA, 0x06, 0x02, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x48, 0x9A, 0x01, 0x48, 0x40, 0xEA, 0x18, 0x71, +0xE3, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x8C, 0xE8, 0x64, 0xF0, 0x44, 0x9A, +0x00, 0x30, 0x0C, 0x30, 0x0D, 0xD5, 0x4D, 0xE8, +0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x58, 0x9A, 0x80, 0xF6, 0x1B, 0x6C, 0x80, 0x6D, 0x00, 0xDA, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x01, 0x48, -0x40, 0xEA, 0x18, 0x71, 0xE3, 0x61, 0x0B, 0x97, +0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x00, 0x6E, +0x14, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF0, 0x5C, 0x9A, 0x0D, 0x94, 0x00, 0xF1, +0x00, 0x48, 0x60, 0x9A, 0x29, 0xE4, 0x04, 0x49, +0x14, 0x71, 0x60, 0xDA, 0xE2, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE8, -0x23, 0xF1, 0x50, 0x9A, 0x00, 0x30, 0x0C, 0x30, -0x0D, 0xD5, 0x4D, 0xE8, 0x00, 0x69, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x44, 0x9A, 0x80, 0xF6, -0x1B, 0x6C, 0x80, 0x6D, 0x00, 0xDA, 0x06, 0x02, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x48, 0x9A, 0x00, 0x6E, 0x14, 0x6F, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, -0x0D, 0x94, 0x00, 0xF1, 0x00, 0x48, 0x60, 0x9A, -0x29, 0xE4, 0x04, 0x49, 0x14, 0x71, 0x60, 0xDA, -0xE2, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0x8C, 0xE8, 0x23, 0xF1, 0x5C, 0x9A, -0x00, 0x30, 0x0C, 0x30, 0x0D, 0xD5, 0x4D, 0xE8, -0x00, 0x69, 0x0D, 0x93, 0x80, 0xF6, 0x1B, 0x6C, -0x80, 0x6D, 0x29, 0xE3, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x48, 0x9A, 0x00, 0x6E, -0x14, 0x6F, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x44, 0x9A, 0x04, 0x49, 0x00, 0xDA, -0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x48, 0x9A, 0x00, 0xF1, 0x00, 0x48, -0x40, 0xEA, 0x14, 0x71, 0xE2, 0x61, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF1, 0x70, 0x9B, 0xFF, 0x6A, -0x8C, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x6C, 0x9B, 0x05, 0x67, 0x40, 0xF6, -0x17, 0x6C, 0x40, 0xDB, 0x06, 0x02, 0x04, 0xD2, +0x64, 0xF0, 0x50, 0x9A, 0x00, 0x30, 0x0C, 0x30, +0x0D, 0xD5, 0x4D, 0xE8, 0x00, 0x69, 0x0D, 0x93, +0x80, 0xF6, 0x1B, 0x6C, 0x80, 0x6D, 0x29, 0xE3, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x5C, 0x9A, 0x00, 0x6E, 0x14, 0x6F, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x58, 0x9A, +0x04, 0x49, 0x00, 0xDA, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, -0x80, 0x6D, 0x00, 0x6E, 0x14, 0x6F, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x50, 0x9A, -0x09, 0x97, 0x40, 0x9A, 0x40, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x54, 0x9A, 0x40, 0x9A, -0x41, 0xD8, 0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF1, 0x7C, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, -0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0x9D, -0x43, 0xF1, 0x70, 0x9B, 0x00, 0x6E, 0x14, 0x6F, -0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x81, 0x9D, -0x43, 0xF1, 0x74, 0x9B, 0x80, 0x6D, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, 0x6C, 0x9B, -0x40, 0xF6, 0x17, 0x6C, 0x40, 0xDB, 0x06, 0x02, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x48, 0x9A, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0x01, 0x6B, 0xAC, 0xEA, 0x6E, 0xEA, 0x01, 0x5A, -0x58, 0x67, 0x05, 0x5C, 0x48, 0x32, 0x03, 0x61, -0x01, 0x6A, 0x4B, 0xEA, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF1, 0xAC, 0x9B, 0x30, 0xF0, -0x20, 0x6E, 0x43, 0xF1, 0xD8, 0x9E, 0x60, 0x9D, -0x00, 0xF7, 0x80, 0x34, 0xCC, 0xEB, 0x6D, 0xEC, -0x80, 0xDD, 0x1F, 0xF7, 0x00, 0x6B, 0x60, 0xF5, -0x80, 0x42, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, -0x01, 0x60, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x7C, 0x9B, 0x60, 0xF5, 0x00, 0x4A, -0x69, 0xE2, 0x40, 0x9A, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x51, 0xE4, -0x40, 0x9C, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xC2, 0xF4, 0xD0, 0x9B, 0xFE, 0x63, 0xC2, 0xF4, -0x10, 0x4B, 0x00, 0xD6, 0xC1, 0x9B, 0x64, 0xAB, -0xFF, 0x6A, 0x01, 0xD6, 0x4C, 0xED, 0xDD, 0x67, -0x4C, 0xEC, 0x64, 0xCE, 0x3C, 0x25, 0x84, 0x33, -0x6D, 0xE6, 0xA0, 0xAB, 0x1F, 0xF7, 0x00, 0x6B, -0xAC, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, -0x26, 0x2B, 0x84, 0x32, 0x7D, 0x67, 0x49, 0xE3, -0xA0, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, -0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x0B, 0x2A, -0x84, 0x34, 0xBD, 0x67, 0x91, 0xE5, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, 0x60, 0xAC, -0x4D, 0xE3, 0x40, 0xA3, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x7C, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x6D, 0xE5, -0x55, 0xE5, 0x40, 0xA5, 0xFF, 0x6C, 0x8C, 0xEA, -0x08, 0x6D, 0xAD, 0xEA, 0x3E, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0x80, 0x9B, 0x91, 0xE5, -0x60, 0xA4, 0x08, 0x6D, 0x4C, 0xEB, 0xAD, 0xEB, -0x4C, 0xEB, 0x60, 0xC4, 0x34, 0x10, 0x84, 0x32, -0xDD, 0x67, 0x49, 0xE6, 0x60, 0xAA, 0x1F, 0xF7, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x20, 0x2A, 0x84, 0x32, 0x7D, 0x67, -0x49, 0xE3, 0xA0, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, -0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, -0x09, 0x2A, 0x84, 0x34, 0xBD, 0x67, 0x91, 0xE5, -0x30, 0xF0, 0x20, 0x6A, 0x60, 0xAC, 0x43, 0xF1, -0x5C, 0x9A, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x40, 0x9A, 0x6D, 0xE5, 0x55, 0xE5, -0x80, 0xA5, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x40, 0x9A, 0x4D, 0xE3, 0x80, 0xA3, -0xF7, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, 0x02, 0x63, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0x01, 0x74, 0xAC, 0xEA, 0x13, 0x60, 0x03, 0x24, -0x02, 0x74, 0x15, 0x60, 0x18, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0xC3, 0xF3, -0xAC, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, 0x02, 0x6A, -0x4B, 0xEA, 0xAC, 0xEA, 0x8D, 0xEA, 0xC3, 0xF3, -0x4C, 0xC3, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x6A, 0xF2, 0x4F, 0xC3, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xEA, 0xF2, 0x48, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x44, 0x9A, 0x60, 0xA2, +0x00, 0xF1, 0x00, 0x48, 0x40, 0xEA, 0x14, 0x71, +0xE2, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, +0x64, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, 0x6D, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, 0x60, 0x9B, +0x05, 0x67, 0x40, 0xF6, 0x17, 0x6C, 0x40, 0xDB, +0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x48, 0x9A, 0x80, 0x6D, 0x00, 0x6E, +0x14, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x44, 0x9A, 0x09, 0x97, 0x40, 0x9A, +0x40, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x48, 0x9A, 0x40, 0x9A, 0x41, 0xD8, 0x08, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, 0x70, 0x9B, +0xFF, 0x6A, 0x8C, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0x9D, 0x84, 0xF0, 0x64, 0x9B, +0x00, 0x6E, 0x14, 0x6F, 0x80, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x81, 0x9D, 0x84, 0xF0, 0x68, 0x9B, +0x80, 0x6D, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF0, 0x60, 0x9B, 0x40, 0xF6, 0x17, 0x6C, +0x40, 0xDB, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x40, 0xEA, +0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x6B, 0xAC, 0xEA, +0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x05, 0x5C, +0x48, 0x32, 0x03, 0x61, 0x01, 0x6A, 0x4B, 0xEA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, +0xA0, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0x84, 0xF0, +0xCC, 0x9E, 0x60, 0x9D, 0x00, 0xF7, 0x80, 0x34, +0xCC, 0xEB, 0x6D, 0xEC, 0x80, 0xDD, 0x1F, 0xF7, +0x00, 0x6B, 0x60, 0xF5, 0x80, 0x42, 0x8C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x09, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, 0x70, 0x9B, +0x60, 0xF5, 0x00, 0x4A, 0x69, 0xE2, 0x40, 0x9A, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x54, 0x9A, 0x51, 0xE4, 0x40, 0x9C, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF2, 0xC8, 0x9B, +0xFE, 0x63, 0xC2, 0xF2, 0x08, 0x4B, 0x00, 0xD6, +0xC1, 0x9B, 0x64, 0xAB, 0xFF, 0x6A, 0x01, 0xD6, +0x4C, 0xED, 0xDD, 0x67, 0x4C, 0xEC, 0x64, 0xCE, +0x3C, 0x25, 0x84, 0x33, 0x6D, 0xE6, 0xA0, 0xAB, +0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEB, 0x02, 0xF0, +0x00, 0x73, 0x01, 0x60, 0x26, 0x2B, 0x84, 0x32, +0x7D, 0x67, 0x49, 0xE3, 0xA0, 0xAA, 0x1F, 0xF7, +0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x0B, 0x2A, 0x84, 0x34, 0xBD, 0x67, +0x91, 0xE5, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x50, 0x9A, 0x60, 0xAC, 0x4D, 0xE3, 0x40, 0xA3, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x54, 0x9A, 0x6D, 0xE5, 0x55, 0xE5, 0x40, 0xA5, +0xFF, 0x6C, 0x8C, 0xEA, 0x08, 0x6D, 0xAD, 0xEA, +0x3E, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, +0x94, 0x9B, 0x91, 0xE5, 0x60, 0xA4, 0x08, 0x6D, +0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, +0x34, 0x10, 0x84, 0x32, 0xDD, 0x67, 0x49, 0xE6, +0x60, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x20, 0x2A, +0x84, 0x32, 0x7D, 0x67, 0x49, 0xE3, 0xA0, 0xAA, +0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x09, 0x2A, 0x84, 0x34, +0xBD, 0x67, 0x91, 0xE5, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xAC, 0x84, 0xF0, 0x50, 0x9A, 0x10, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, +0x6D, 0xE5, 0x55, 0xE5, 0x80, 0xA5, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, +0x4D, 0xE3, 0x80, 0xA3, 0xF7, 0x6A, 0x8C, 0xEA, +0x40, 0xC3, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC3, 0xF3, 0x88, 0xA2, 0x04, 0x6B, 0x8C, 0xEB, +0x05, 0x23, 0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xC3, 0xF3, 0x68, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0xAC, 0xEA, +0x13, 0x60, 0x03, 0x24, 0x02, 0x74, 0x4B, 0x60, +0x4E, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x10, 0x4B, 0xC3, 0xF3, 0xA8, 0xA3, 0x01, 0x6C, +0x4C, 0xEC, 0x02, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, +0x8D, 0xEA, 0xC3, 0xF3, 0x48, 0xC3, 0x3F, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0xC3, 0xF3, 0x4B, 0xC3, 0xC3, 0xF3, 0x4B, 0xA3, +0x0C, 0x72, 0x06, 0x61, 0x04, 0xF3, 0x42, 0xAB, +0x01, 0x4A, 0x04, 0xF3, 0x42, 0xCB, 0x2F, 0x10, +0x0E, 0x72, 0x06, 0x61, 0x04, 0xF3, 0x44, 0xAB, +0x01, 0x4A, 0x04, 0xF3, 0x44, 0xCB, 0x27, 0x10, +0x04, 0x72, 0x06, 0x61, 0x04, 0xF3, 0x46, 0xAB, +0x01, 0x4A, 0x04, 0xF3, 0x46, 0xCB, 0x1F, 0x10, +0x06, 0x72, 0x06, 0x61, 0x04, 0xF3, 0x48, 0xAB, +0x01, 0x4A, 0x04, 0xF3, 0x48, 0xCB, 0x17, 0x10, +0x06, 0x2A, 0x04, 0xF3, 0x4A, 0xAB, 0x01, 0x4A, +0x04, 0xF3, 0x4A, 0xCB, 0x10, 0x10, 0x02, 0x72, +0x0E, 0x60, 0x08, 0x72, 0x0C, 0x60, 0xF0, 0x72, +0x0A, 0x61, 0x04, 0xF3, 0x4C, 0xAB, 0x01, 0x4A, +0x04, 0xF3, 0x4C, 0xCB, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x4B, 0xF6, 0x54, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x58, 0x9A, 0x60, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0x1C, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC3, 0xF3, -0x8C, 0xA2, 0xC3, 0xF3, 0xAF, 0xA2, 0x01, 0x6B, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, +0x88, 0xA2, 0xC3, 0xF3, 0xAB, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x7F, 0x6C, 0xAC, 0xEC, 0x7C, 0x33, 0x8D, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF1, 0x88, 0x9C, 0x60, 0xC4, -0x43, 0xF4, 0x68, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x4C, 0x9A, 0x60, 0xC2, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x86, 0xF7, 0x07, 0x4C, 0x00, 0x6D, 0x07, 0x6E, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x50, 0x9A, -0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0xFF, 0x72, -0x00, 0x6A, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x54, 0x9A, 0x60, 0xA2, 0x07, 0x6A, -0x6C, 0xEA, 0x07, 0x6B, 0x6E, 0xEA, 0x01, 0x5A, -0x58, 0x67, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, -0x01, 0x74, 0xAC, 0xEA, 0x03, 0x60, 0x02, 0x74, -0x09, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x02, 0x6B, 0xC3, 0xF3, -0x76, 0xC2, 0x15, 0x10, 0x09, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC0, 0xF0, -0x6E, 0xA2, 0xC3, 0xF3, 0x76, 0xC2, 0x05, 0x10, -0xFF, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x6A, 0xF2, -0x56, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xC3, 0xF3, 0x76, 0xA2, 0xC3, 0xF3, -0x8C, 0xA2, 0xC3, 0xF3, 0x77, 0xC2, 0x40, 0x6B, -0x8D, 0xEB, 0xC3, 0xF3, 0x6C, 0xC2, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x42, 0xC5, -0x01, 0x72, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xC3, 0xF3, 0x8C, 0xA2, -0x04, 0x6B, 0x8C, 0xEB, 0x08, 0x2B, 0x43, 0xF4, -0x88, 0xA2, 0x05, 0x5C, 0x04, 0x60, 0x04, 0xF3, -0x64, 0xDA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0x6C, 0x84, 0xF0, 0x9C, 0x9C, 0x60, 0xC4, +0x43, 0xF4, 0x64, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF0, 0x40, 0x9A, 0x60, 0xC2, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xC8, 0xF2, 0x74, 0xA2, +0x7F, 0x6A, 0x6C, 0xEA, 0x01, 0x5A, 0x58, 0x67, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xE8, 0xF2, 0x17, 0x4C, +0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF0, 0x44, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, +0x6C, 0xEA, 0xFF, 0x72, 0x00, 0x6A, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x48, 0x9A, +0x60, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, 0x07, 0x6B, +0x6E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0xAC, 0xEA, +0x03, 0x60, 0x02, 0x74, 0x09, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x02, 0x6B, 0xC3, 0xF3, 0x72, 0xC2, 0x15, 0x10, +0x09, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xC0, 0xF0, 0x6E, 0xA2, 0xC3, 0xF3, +0x72, 0xC2, 0x05, 0x10, 0xFF, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0xEB, 0xF5, 0x42, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, +0x72, 0xA2, 0xC3, 0xF3, 0x88, 0xA2, 0xC3, 0xF3, +0x73, 0xC2, 0x40, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, +0x68, 0xC2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x24, 0xF3, 0x44, 0xA8, 0x01, 0x4A, +0x24, 0xF3, 0x44, 0xC8, 0x00, 0x18, 0x7B, 0xC5, +0x01, 0x72, 0x17, 0x60, 0x01, 0x6A, 0x44, 0xF3, +0x4C, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, +0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF0, +0x88, 0x9C, 0x40, 0xA2, 0xFF, 0x6B, 0x80, 0xA4, +0x6C, 0xEA, 0x44, 0xF3, 0x50, 0xC8, 0x07, 0x6A, +0x8C, 0xEA, 0x6C, 0xEA, 0x44, 0xF3, 0x52, 0xC8, +0x17, 0x10, 0xC3, 0xF3, 0x68, 0xA0, 0x04, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x02, 0x6A, 0x05, 0x10, +0x43, 0xF4, 0x64, 0xA0, 0x05, 0x5B, 0x04, 0x61, +0x08, 0x6A, 0x44, 0xF3, 0x4C, 0xC8, 0x08, 0x10, +0x44, 0xF3, 0x4C, 0xC8, 0x44, 0xF3, 0x54, 0xD8, +0x24, 0xF3, 0x44, 0xC8, 0x01, 0x6A, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0x6B, 0x4C, 0xF5, +0x7E, 0xCA, 0x00, 0x6A, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x04, 0xF3, 0x74, 0xAA, 0x00, 0x6D, 0x01, 0x4B, +0x04, 0xF3, 0x74, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, 0xFF, 0x6B, 0x6C, 0xEC, -0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xC5, 0x67, -0xFF, 0x6C, 0x40, 0xEA, 0x01, 0x6C, 0x0C, 0x6D, -0x00, 0x18, 0x17, 0xC5, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6D, 0xA6, 0xF6, 0x00, 0x4D, -0xC3, 0xF3, 0xCD, 0xA5, 0x04, 0x6B, 0xFF, 0x6A, -0xCC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x0C, 0x2B, -0x43, 0xF4, 0x6B, 0xA5, 0x09, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0xB8, 0x9B, 0x60, 0xA5, -0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, 0x60, 0xC5, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xC3, 0xF3, 0xAD, 0xA2, 0x04, 0x6B, 0xAC, 0xEB, -0x0C, 0x2B, 0x43, 0xF4, 0x4B, 0xA2, 0x09, 0x2A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x50, 0x9A, 0x64, 0x6E, 0xFF, 0x6C, 0x00, 0x6D, +0x40, 0xEA, 0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, +0x30, 0xC5, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6D, +0x08, 0xF2, 0x10, 0x4D, 0xC3, 0xF3, 0xC9, 0xA5, +0x04, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x0C, 0x2B, 0x43, 0xF4, 0x67, 0xA5, +0x09, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF0, +0xAC, 0x9B, 0x60, 0xA5, 0x4C, 0xEB, 0x01, 0x4B, +0x4C, 0xEB, 0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, 0xA9, 0xA2, +0x04, 0x6B, 0xAC, 0xEB, 0x11, 0x2B, 0x43, 0xF4, +0x67, 0xA2, 0x0E, 0x2B, 0x04, 0xF3, 0x7A, 0xAA, +0x03, 0x6D, 0x01, 0x4B, 0x04, 0xF3, 0x7A, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, -0x03, 0x6D, 0x40, 0xEA, 0x01, 0x6C, 0x04, 0x6D, -0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, -0x5C, 0x9A, 0x00, 0x6D, 0x40, 0xEA, 0x01, 0x6C, -0x0C, 0x6D, 0x00, 0x18, 0x17, 0xC5, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, -0xFF, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x05, 0x97, +0x40, 0xEA, 0x01, 0x6C, 0x04, 0x6D, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x04, 0xF3, 0x78, 0xAA, 0x00, 0x6D, 0x01, 0x4B, +0x04, 0xF3, 0x78, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x6C, +0x0C, 0x6D, 0x00, 0x18, 0x30, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, +0x00, 0x6D, 0x65, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xFF, 0x69, 0xA6, 0xF6, 0x00, 0x48, 0x30, 0xF0, +0xFF, 0x69, 0x08, 0xF2, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE9, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, -0x25, 0x61, 0xC3, 0xF3, 0x6D, 0xA0, 0x09, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0xFF, 0x6C, 0x6F, 0x6D, 0x2C, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x50, 0x9A, -0xA0, 0xF0, 0x8A, 0xA0, 0x01, 0x6D, 0x08, 0x6E, -0xF1, 0x67, 0x40, 0xEA, 0x01, 0x72, 0x0A, 0x61, -0xC3, 0xF3, 0x6D, 0xA0, 0x02, 0x6A, 0x01, 0x6C, -0x6D, 0xEA, 0x0E, 0x6D, 0xC3, 0xF3, 0x4D, 0xC0, -0x00, 0x18, 0x17, 0xC5, 0x07, 0x97, 0x06, 0x91, +0x31, 0x61, 0x04, 0xF3, 0x4E, 0xA8, 0xC3, 0xF3, +0x69, 0xA0, 0xFF, 0x6C, 0x01, 0x4A, 0x04, 0xF3, +0x4E, 0xC8, 0x09, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xC3, 0xF3, 0x49, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0x6F, 0x6D, 0x2C, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x50, 0x9A, 0xA0, 0xF0, 0x8A, 0xA0, 0x01, 0x6D, +0x08, 0x6E, 0xF1, 0x67, 0x40, 0xEA, 0x01, 0x72, +0x0B, 0x61, 0xC3, 0xF3, 0x69, 0xA0, 0x02, 0x6A, +0x01, 0x6C, 0x6D, 0xEA, 0x0E, 0x6D, 0xC3, 0xF3, +0x49, 0xC0, 0x00, 0x18, 0x30, 0xC5, 0x06, 0x10, +0x01, 0x6A, 0x44, 0xF3, 0x4E, 0xC8, 0x02, 0x6A, +0x44, 0xF3, 0x4C, 0xC8, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x2E, 0x6E, 0xFF, 0x6C, 0x6F, 0x6D, 0x40, 0xEA, 0x01, 0x6C, 0x02, 0x6D, -0x00, 0x18, 0x17, 0xC5, 0x05, 0x97, 0x03, 0x63, +0x00, 0x18, 0x30, 0xC5, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6F, -0xA6, 0xF6, 0x00, 0x4B, 0x63, 0xF1, 0x1C, 0x9F, +0x08, 0xF2, 0x10, 0x4B, 0xA4, 0xF0, 0x10, 0x9F, 0xE0, 0xF0, 0xE0, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0xEF, 0x0E, 0xEF, 0x4C, 0xED, 0x4C, 0xEE, -0xA0, 0xF0, 0x02, 0x27, 0xC3, 0xF3, 0x0D, 0xA3, +0xA0, 0xF0, 0x02, 0x27, 0xC3, 0xF3, 0x09, 0xA3, 0x20, 0x6F, 0x0C, 0xEF, 0x4C, 0xEF, 0x80, 0xF0, 0x17, 0x2F, 0xE0, 0xF0, 0x00, 0xA3, 0x01, 0x6F, 0xEC, 0xE8, 0x4C, 0xE8, 0x53, 0x28, 0xC3, 0xF3, -0x0C, 0xA3, 0x0C, 0xEF, 0x4C, 0xEF, 0x08, 0x27, -0xE3, 0xF3, 0x4A, 0xA3, 0x03, 0x4A, 0xE3, 0xF3, -0x45, 0xC3, 0xE3, 0xF3, 0x44, 0xC3, 0x08, 0x10, -0x06, 0x6F, 0xE3, 0xF3, 0xE5, 0xC3, 0x06, 0x4E, -0x05, 0x6F, 0xE3, 0xF3, 0xE4, 0xC3, 0x4C, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE3, 0xF3, 0xE3, 0xA2, 0xE3, 0xF3, 0x64, 0xA2, -0xE3, 0xEB, 0x09, 0x61, 0xE3, 0xF3, 0x65, 0xA2, -0xC3, 0xF3, 0xD8, 0xC2, 0x71, 0xE4, 0xB7, 0xE4, -0xE3, 0xF3, 0xA6, 0xC2, 0x09, 0x10, 0xE3, 0xF3, -0x85, 0xA2, 0x77, 0xE5, 0xB9, 0xE6, 0x6F, 0xE4, -0xC3, 0xF3, 0xD8, 0xC2, 0xE3, 0xF3, 0x66, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE3, 0xF3, 0x65, 0xA2, 0xE3, 0xF3, 0x86, 0xA2, +0x08, 0xA3, 0x0C, 0xEF, 0x4C, 0xEF, 0x08, 0x27, +0xE3, 0xF3, 0x46, 0xA3, 0x03, 0x4A, 0xE3, 0xF3, +0x41, 0xC3, 0xE3, 0xF3, 0x40, 0xC3, 0x08, 0x10, +0x06, 0x6F, 0xE3, 0xF3, 0xE1, 0xC3, 0x06, 0x4E, +0x05, 0x6F, 0xE3, 0xF3, 0xE0, 0xC3, 0x4C, 0xEE, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC3, 0xF3, 0xFF, 0xA2, 0xE3, 0xF3, 0x60, 0xA2, +0xE3, 0xEB, 0x09, 0x61, 0xE3, 0xF3, 0x61, 0xA2, +0xC3, 0xF3, 0xD4, 0xC2, 0x71, 0xE4, 0xB7, 0xE4, +0xE3, 0xF3, 0xA2, 0xC2, 0x09, 0x10, 0xE3, 0xF3, +0x81, 0xA2, 0x77, 0xE5, 0xB9, 0xE6, 0x6F, 0xE4, +0xC3, 0xF3, 0xD4, 0xC2, 0xE3, 0xF3, 0x62, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xE3, 0xF3, 0x61, 0xA2, 0xE3, 0xF3, 0x82, 0xA2, 0x0A, 0x4B, 0x82, 0xEB, 0x02, 0x60, 0xE3, 0xF3, -0x66, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE3, 0xF3, 0x66, 0xA2, 0xC3, 0xF3, -0x98, 0xA2, 0x23, 0x4B, 0x82, 0xEB, 0x02, 0x60, -0xC3, 0xF3, 0x78, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE3, 0xF3, 0x66, 0xA2, -0xE3, 0xF3, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF1, 0x40, 0x9A, 0x60, 0xA2, 0x07, 0x23, +0x62, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE3, 0xF3, 0x62, 0xA2, 0xC3, 0xF3, +0x94, 0xA2, 0x23, 0x4B, 0x82, 0xEB, 0x02, 0x60, +0xC3, 0xF3, 0x74, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xE3, 0xF3, 0x62, 0xA2, +0xC3, 0xF3, 0x7C, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF0, 0x54, 0x9A, 0x60, 0xA2, 0x07, 0x23, 0x60, 0xA2, 0xFF, 0x6A, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x8A, 0xF2, 0x60, 0xCA, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC0, 0xF0, +0x20, 0x6A, 0xEB, 0xF5, 0x6C, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, 0x87, 0xA2, 0x18, 0x6B, 0x8C, 0xEB, 0x10, 0x73, -0x0C, 0x61, 0xE3, 0xF3, 0x6A, 0xA2, 0x03, 0x6C, -0x03, 0x4B, 0xE3, 0xF3, 0x66, 0xC2, 0xC0, 0xF0, +0x0C, 0x61, 0xE3, 0xF3, 0x66, 0xA2, 0x03, 0x6C, +0x03, 0x4B, 0xE3, 0xF3, 0x62, 0xC2, 0xC0, 0xF0, 0x6A, 0xA2, 0x76, 0x33, 0x8C, 0xEB, 0xC3, 0xF3, -0x78, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, -0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x8A, 0xF2, -0x80, 0xAC, 0xA0, 0xA2, 0xFF, 0x6B, 0x6C, 0xED, +0x74, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, +0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xEB, 0xF5, +0x8C, 0xAC, 0xA0, 0xA2, 0xFF, 0x6B, 0x6C, 0xED, 0x8E, 0xED, 0x02, 0x25, 0x8C, 0xEB, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xC3, 0xF3, 0x8D, 0xA2, 0x41, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xC3, 0xF3, 0x6D, 0xC2, 0x04, 0x10, -0x40, 0x6A, 0x0D, 0xEA, 0xC3, 0xF3, 0x4D, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC3, 0xF3, 0x89, 0xA2, 0x41, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xC3, 0xF3, 0x69, 0xC2, 0x04, 0x10, +0x40, 0x6A, 0x0D, 0xEA, 0xC3, 0xF3, 0x49, 0xC3, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x66, 0xF7, 0xA7, 0xA3, 0x04, 0x6B, 0xFF, 0x6A, +0xC8, 0xF2, 0xB7, 0xA3, 0x04, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x0C, 0x23, 0x7D, 0x67, 0x1E, 0x6A, 0x50, 0xC3, 0x01, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x92, 0xC3, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF4, 0x6C, 0x9A, -0xA2, 0xF4, 0x0C, 0x4A, 0xFF, 0x69, 0x04, 0xD3, +0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF2, 0x64, 0x9A, +0xA2, 0xF2, 0x04, 0x4A, 0xFF, 0x69, 0x04, 0xD3, 0x61, 0x9A, 0x44, 0xAA, 0x30, 0xF0, 0x20, 0x68, 0x05, 0xD3, 0x7D, 0x67, 0x2C, 0xEC, 0x4C, 0xCB, -0xA6, 0xF6, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xD4, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x3E, 0x61, 0xC0, 0xF0, 0x64, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, @@ -57806,237 +58626,290 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x0C, 0x2A, 0x08, 0x93, 0x64, 0x32, 0x7D, 0x67, 0x49, 0xE3, 0x68, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, 0x49, 0xE3, +0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, 0x49, 0xE3, 0x60, 0x9A, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x40, 0x9A, 0x4D, 0xE3, 0x60, 0x9B, +0x84, 0xF0, 0x54, 0x9A, 0x4D, 0xE3, 0x60, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x16, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x7C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x40, 0xAB, 0x8C, 0xEA, 0x01, 0x4A, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE4, 0xF2, -0x7C, 0x9A, 0x01, 0x4B, 0xE4, 0xF2, 0x7C, 0xDA, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x24, 0xF3, +0x6C, 0xAA, 0x01, 0x4B, 0x24, 0xF3, 0x6C, 0xCA, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, 0x52, 0x2C, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x43, 0xF4, -0x78, 0xA2, 0x2F, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x6C, 0x9B, 0x80, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF1, 0x70, 0x9B, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x74, 0x9B, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x43, 0xF4, +0x74, 0xA2, 0x2F, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF0, 0x60, 0x9B, 0x80, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF0, 0x64, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, 0x68, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0x9A, -0x83, 0xF1, 0x78, 0x9B, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF1, 0x5C, 0x9A, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x40, 0x9A, +0xC4, 0xF0, 0x6C, 0x9B, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF0, 0x50, 0x9A, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, 0x54, 0x9A, 0x01, 0x6B, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x44, 0x9A, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x48, 0x9A, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x4C, 0x9A, -0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0x95, 0xA2, 0x10, 0x6B, -0x8C, 0xEB, 0x03, 0x23, 0xFF, 0x6A, 0x01, 0x4A, -0x0A, 0x10, 0xE0, 0xF0, 0x72, 0xA2, 0x02, 0x6A, -0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x4B, 0xEA, -0xC0, 0xF7, 0x42, 0x32, 0x4C, 0x32, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x70, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x94, 0x9B, 0x02, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, +0xC4, 0xF0, 0x58, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF0, 0x5C, 0x9A, 0x80, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x40, 0x9A, +0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x00, 0xF1, 0xB8, 0xA2, 0x08, 0x6B, +0xFF, 0x6C, 0xAC, 0xEB, 0x10, 0x2B, 0xE0, 0xF0, +0xB5, 0xA2, 0x10, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, +0x03, 0x23, 0xFF, 0x6B, 0x01, 0x4B, 0x53, 0x10, +0xE0, 0xF0, 0x72, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, +0x8C, 0xEA, 0x08, 0x6B, 0x4C, 0x2A, 0x00, 0x6B, +0x4A, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF0, +0x88, 0x9B, 0x02, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0x67, 0xA6, 0xF6, 0x00, 0x4A, -0x43, 0xF4, 0x98, 0xA2, 0x37, 0x24, 0xA6, 0xF6, -0x80, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0x6C, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x81, 0x9A, 0x83, 0xF1, 0x70, 0x9B, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0x9A, 0x83, 0xF1, -0x74, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0x9A, 0x83, 0xF1, 0x7C, 0x9B, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x84, 0x9A, 0xA3, 0xF1, +0x20, 0x6B, 0x43, 0x67, 0x08, 0xF2, 0x10, 0x4A, +0x43, 0xF4, 0x94, 0xA2, 0x37, 0x24, 0x08, 0xF2, +0x90, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, 0x60, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x94, 0x9A, 0xA3, 0xF1, 0x70, 0x9B, 0x80, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x95, 0x9A, 0xA3, 0xF1, -0x64, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x96, 0x9A, 0xA3, 0xF1, 0x68, 0x9B, 0x80, 0xDB, -0x72, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x4C, 0x9A, 0x05, 0x10, 0x74, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x50, 0x9A, 0x60, 0xDA, +0x81, 0x9A, 0xC4, 0xF0, 0x64, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0x9A, 0xC4, 0xF0, +0x68, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0x9A, 0xC4, 0xF0, 0x70, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0x9A, 0xC4, 0xF0, +0x74, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x94, 0x9A, 0xE4, 0xF0, 0x64, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x95, 0x9A, 0xC4, 0xF0, +0x78, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x96, 0x9A, 0xC4, 0xF0, 0x7C, 0x9B, 0x80, 0xDB, +0x72, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, +0x40, 0x9A, 0x05, 0x10, 0x74, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF0, 0x44, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x58, 0x9A, 0x80, 0xA2, 0xFF, 0x6A, +0xE4, 0xF0, 0x4C, 0x9A, 0x80, 0xA2, 0xFF, 0x6A, 0x4C, 0xEC, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0x9C, 0x9B, 0x07, 0x10, 0x02, 0x6B, +0xE4, 0xF0, 0x90, 0x9B, 0x07, 0x10, 0x02, 0x6B, 0x8C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x80, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, +0xE4, 0xF0, 0x94, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, 0x60, 0xC4, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x64, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x78, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x40, 0xAB, 0x8C, 0xEA, 0x01, 0x4A, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x58, 0x9A, 0x00, 0x6B, +0x20, 0x6A, 0xE4, 0xF0, 0x4C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x4A, 0xF4, 0xB0, 0x9B, 0xE0, 0xF2, 0x40, 0x9A, +0xAB, 0xF7, 0xBC, 0x9B, 0xE0, 0xF2, 0x40, 0x9A, 0x38, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x68, 0x9A, 0xFF, 0x6C, 0x10, 0x6D, +0xE4, 0xF0, 0x7C, 0x9A, 0xFF, 0x6C, 0x10, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x58, 0x9A, 0xC3, 0xF1, 0xCC, 0x9B, 0x30, 0xF0, -0x21, 0x6D, 0x00, 0x6C, 0xD3, 0xF4, 0x00, 0x4D, +0x58, 0x9A, 0x04, 0xF1, 0xC0, 0x9B, 0x30, 0xF0, +0x21, 0x6D, 0x00, 0x6C, 0x74, 0xF6, 0x18, 0x4D, 0x20, 0x6F, 0x40, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x04, 0xF3, -0x68, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, 0x04, 0xF3, -0x68, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x44, 0xF3, +0x78, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, 0x44, 0xF3, +0x78, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xEA, 0xF2, 0x3B, 0xA2, 0x34, 0x10, +0x20, 0x6A, 0x6B, 0xF6, 0x27, 0xA2, 0x34, 0x10, 0x80, 0xF3, 0x4E, 0x41, 0x4C, 0x32, 0x09, 0xE2, -0xC2, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0x63, 0xF4, -0xFC, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0x63, 0xF4, -0xAC, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, +0xC1, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0x63, 0xF4, +0xF8, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0x63, 0xF4, +0xA8, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, 0xE0, 0xF2, -0x58, 0x9A, 0xF0, 0xF6, 0x00, 0x4B, 0x00, 0x6C, +0x58, 0x9A, 0x92, 0xF0, 0x18, 0x4B, 0x00, 0x6C, 0xB5, 0xE3, 0x40, 0xEA, 0x01, 0x72, 0x09, 0x61, -0x06, 0x92, 0x63, 0xF4, 0x7C, 0x9A, 0x63, 0xF4, -0x4C, 0x98, 0x49, 0xE3, 0x63, 0xF4, 0x4C, 0xD8, -0x06, 0x10, 0x04, 0xF3, 0x48, 0x98, 0x04, 0x6B, -0x6D, 0xEA, 0x04, 0xF3, 0x48, 0xD8, 0x30, 0xF0, +0x06, 0x92, 0x63, 0xF4, 0x78, 0x9A, 0x63, 0xF4, +0x48, 0x98, 0x49, 0xE3, 0x63, 0xF4, 0x48, 0xD8, +0x06, 0x10, 0x44, 0xF3, 0x58, 0x98, 0x04, 0x6B, +0x6D, 0xEA, 0x44, 0xF3, 0x58, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0x01, 0x49, 0x40, 0xEA, 0xFF, 0x6A, 0x4C, 0xE9, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x43, 0xF4, 0x5B, 0xA0, 0x01, 0x4A, 0x42, 0xE9, -0xC3, 0x61, 0x43, 0xF4, 0x3B, 0xC0, 0x0B, 0x97, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x43, 0xF4, 0x57, 0xA0, 0x01, 0x4A, 0x42, 0xE9, +0xC3, 0x61, 0x43, 0xF4, 0x37, 0xC0, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x64, 0x9A, 0xFF, 0x6C, 0x02, 0x6D, 0x40, 0xA3, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x69, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x8A, 0xF3, -0x18, 0x48, 0x4A, 0xF4, 0x10, 0x49, 0x30, 0xF0, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x0B, 0xF7, +0x04, 0x48, 0xAB, 0xF7, 0x1C, 0x49, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xA8, 0xC1, 0x98, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x08, 0x48, 0x40, 0xEA, 0x2A, 0xE8, 0xF4, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xEA, 0xF2, 0x3B, 0xA2, 0x35, 0x10, +0x20, 0x6A, 0x6B, 0xF6, 0x27, 0xA2, 0x35, 0x10, 0x80, 0xF3, 0x4E, 0x41, 0x4C, 0x32, 0x09, 0xE2, -0xC2, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0x63, 0xF4, -0xFC, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0x63, 0xF4, -0xAC, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, +0xC1, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0x63, 0xF4, +0xF8, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0x63, 0xF4, +0xA8, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, 0xE0, 0xF2, -0x58, 0x9A, 0xF0, 0xF6, 0x00, 0x4B, 0x00, 0x6C, +0x58, 0x9A, 0x92, 0xF0, 0x18, 0x4B, 0x00, 0x6C, 0xB5, 0xE3, 0x40, 0xEA, 0x01, 0x72, 0x12, 0x61, 0x06, 0x92, 0x05, 0x6C, 0x01, 0x49, 0x63, 0xF4, -0x7C, 0x9A, 0x63, 0xF4, 0x4C, 0x98, 0x49, 0xE3, -0x63, 0xF4, 0x4C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x78, 0x9A, 0x63, 0xF4, 0x48, 0x98, 0x49, 0xE3, +0x63, 0xF4, 0x48, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0xFF, 0x6A, -0x4C, 0xE9, 0x07, 0x10, 0x04, 0xF3, 0x48, 0x98, -0x10, 0x6B, 0x6D, 0xEA, 0x04, 0xF3, 0x48, 0xD8, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x43, 0xF4, 0x5B, 0xA0, 0x07, 0x4A, +0x4C, 0xE9, 0x07, 0x10, 0x44, 0xF3, 0x58, 0x98, +0x10, 0x6B, 0x6D, 0xEA, 0x44, 0xF3, 0x58, 0xD8, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x43, 0xF4, 0x57, 0xA0, 0x07, 0x4A, 0x42, 0xE9, 0xC2, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x68, 0xEA, 0xF2, 0x3B, 0xC2, +0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF6, 0x27, 0xC2, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0xB1, 0x67, 0xE3, 0xF6, 0x08, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF1, 0xD4, 0x9B, 0xB1, 0x67, +0x44, 0x98, 0x04, 0xF1, 0xC8, 0x9B, 0xB1, 0x67, 0x01, 0xF4, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0x38, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x83, 0xF5, 0x14, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x5C, 0x9A, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x40, 0x9A, 0x2E, 0xEA, 0xEB, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0xC4, 0x9B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, +0x50, 0x9A, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0x54, 0x9A, 0x2E, 0xEA, 0xEB, 0x2A, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x01, 0xF4, 0x0C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xE3, 0xF6, 0x08, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, 0x79, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF2, 0x69, 0xA2, 0x01, 0x6A, 0x00, 0x68, 0x6C, 0xEA, 0x11, 0x2A, 0x31, 0x10, 0x18, 0x6D, 0xB8, 0xE8, 0x49, 0xE0, -0xE4, 0xF2, 0x90, 0xA2, 0x30, 0xF0, 0x20, 0x6B, -0x4A, 0xF4, 0x14, 0x4B, 0x01, 0x48, 0x12, 0xED, -0xB5, 0xE3, 0x00, 0x18, 0x46, 0xC4, 0xFF, 0x6A, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE4, 0xF2, 0x6C, 0xA2, 0x63, 0xE8, +0xE4, 0xF2, 0x8C, 0xA2, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xF7, 0x00, 0x4B, 0x01, 0x48, 0x12, 0xED, +0xB5, 0xE3, 0x00, 0x18, 0x57, 0xC4, 0xFF, 0x6A, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE4, 0xF2, 0x68, 0xA2, 0x63, 0xE8, 0xE8, 0x61, 0xE0, 0xF0, 0x8E, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x14, 0x23, 0xE0, 0xF0, 0x75, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x0D, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0xF5, -0x14, 0x48, 0x00, 0x69, 0x91, 0x67, 0xB0, 0x67, -0x01, 0x49, 0x00, 0x18, 0x46, 0xC4, 0x04, 0x71, +0x0D, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x8C, 0xF0, +0x00, 0x48, 0x00, 0x69, 0x91, 0x67, 0xB0, 0x67, +0x01, 0x49, 0x00, 0x18, 0x57, 0xC4, 0x04, 0x71, 0x18, 0x48, 0xF8, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xC0, 0xF0, 0x99, 0xA2, +0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, 0x99, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x35, 0x23, 0xE4, 0xF2, -0x89, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, -0x17, 0x4A, 0x00, 0x6B, 0x29, 0x10, 0xFF, 0xF7, +0x85, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xAC, 0xF4, +0x03, 0x4A, 0x00, 0x6B, 0x29, 0x10, 0xFF, 0xF7, 0xDF, 0xA2, 0xA0, 0xA2, 0xC0, 0x36, 0xC0, 0x36, 0x00, 0xF6, 0xA0, 0x35, 0xCD, 0xED, 0xFF, 0xF7, 0xDD, 0xA2, 0xCD, 0xED, 0xFF, 0xF7, 0xDE, 0xA2, 0xC0, 0x36, 0xCD, 0xED, 0x30, 0xF0, 0x20, 0x6E, -0xE3, 0xF1, 0xC8, 0x9E, 0xA0, 0xDE, 0xA2, 0xA2, +0x04, 0xF1, 0xDC, 0x9E, 0xA0, 0xDE, 0xA2, 0xA2, 0xC1, 0xA2, 0x06, 0x4A, 0xA0, 0x35, 0xCD, 0xED, 0x1F, 0x6E, 0x6C, 0xEE, 0x00, 0xF6, 0xC0, 0x36, -0xCD, 0xED, 0x30, 0xF0, 0x20, 0x6E, 0xE3, 0xF1, -0xCC, 0x9E, 0x01, 0x4B, 0xCD, 0xED, 0x30, 0xF0, -0x20, 0x6E, 0xE3, 0xF1, 0xD0, 0x9E, 0xA0, 0xDE, +0xCD, 0xED, 0x30, 0xF0, 0x20, 0x6E, 0x24, 0xF1, +0xC0, 0x9E, 0x01, 0x4B, 0xCD, 0xED, 0x30, 0xF0, +0x20, 0x6E, 0x24, 0xF1, 0xC4, 0x9E, 0xA0, 0xDE, 0xFF, 0x6D, 0x6C, 0xED, 0x83, 0xED, 0xD3, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, 0x99, 0xA2, 0x04, 0x6B, 0x8C, 0xEB, 0x1C, 0x23, 0xE0, 0xF0, 0x6E, 0xA2, 0x03, 0x6A, 0x00, 0x68, 0x6C, 0xEA, 0x03, 0x72, 0x15, 0x61, 0x0E, 0x10, 0x14, 0x6D, 0xB8, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x6A, 0xF5, 0x14, 0x4A, 0x90, 0x67, +0x20, 0x6A, 0xEC, 0xF0, 0x00, 0x4A, 0x90, 0x67, 0x01, 0x48, 0x12, 0xED, 0xB5, 0xE2, 0x00, 0x18, -0x77, 0xC4, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x8B, 0xF1, 0x4A, 0xA2, 0x43, 0xE8, -0xEC, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x2A, 0xF7, -0x14, 0x48, 0x00, 0x69, 0x91, 0x67, 0xB0, 0x67, -0x01, 0x49, 0x00, 0x18, 0xA6, 0xC4, 0x40, 0x71, +0x88, 0xC4, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0xEC, 0xF4, 0x56, 0xA2, 0x43, 0xE8, +0xEC, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xAC, 0xF2, +0x00, 0x48, 0x00, 0x69, 0x91, 0x67, 0xB0, 0x67, +0x01, 0x49, 0x00, 0x18, 0xB7, 0xC4, 0x40, 0x71, 0x08, 0x48, 0xF8, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x66, 0xF7, 0x64, 0xA2, 0x7F, 0x6A, 0x6C, 0xEA, -0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0x80, 0xF2, 0x48, 0x99, -0x30, 0xF0, 0x20, 0x6C, 0x66, 0xF7, 0x12, 0x4C, -0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x68, 0x80, 0xF2, 0x48, 0x99, 0x90, 0x67, -0xA6, 0xF4, 0x04, 0x4C, 0x00, 0x6D, 0x24, 0x6E, -0x40, 0xEA, 0xA6, 0xF4, 0x44, 0xA0, 0x07, 0x97, -0x06, 0x91, 0x01, 0x4A, 0xA6, 0xF4, 0x44, 0xC0, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, 0x52, 0xA2, -0x01, 0x6B, 0x46, 0x32, 0x6C, 0xEA, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, 0x72, 0xA2, -0x01, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, 0x52, 0xA2, -0xFF, 0x6B, 0x56, 0x32, 0x8E, 0xEA, 0x6C, 0xEA, -0x01, 0x5A, 0x58, 0x67, 0x6C, 0xEA, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xE2, 0xC7, -0x00, 0x6B, 0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xEA, 0xF2, 0x77, 0xA2, 0x01, 0x6A, 0x4C, 0xEB, -0x05, 0x97, 0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x00, 0x18, 0x42, 0xC5, 0x01, 0x72, 0x3F, 0x61, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0xC3, 0xF3, 0x71, 0xA0, 0x03, 0x69, 0x43, 0x67, -0x2C, 0xEA, 0x35, 0x2A, 0x43, 0xF4, 0x48, 0xA0, -0x32, 0x2A, 0x04, 0x6A, 0x6C, 0xEA, 0x2F, 0x2A, -0x10, 0x6A, 0x6C, 0xEA, 0x2C, 0x2A, 0xC3, 0xF3, -0x6C, 0xA0, 0x20, 0x6A, 0x6C, 0xEA, 0x27, 0x22, -0xA3, 0xF3, 0x58, 0xA0, 0x24, 0x2A, 0x00, 0x18, -0xEC, 0xC7, 0x21, 0x2A, 0x44, 0xF3, 0x50, 0xA0, -0x4C, 0xE9, 0x03, 0x71, 0x1C, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x54, 0x9A, 0x60, 0xA2, -0x02, 0x6A, 0x6C, 0xEA, 0x14, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x74, 0x9A, 0x01, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x05, 0x22, 0x60, 0xA3, -0xFC, 0x6A, 0x6C, 0xEA, 0x80, 0x72, 0x07, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF1, 0x54, 0xA2, -0x01, 0x5A, 0x58, 0x67, 0x01, 0x10, 0x00, 0x6A, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0xC0, 0xF0, 0x92, 0xA3, +0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, 0x04, 0xF3, +0x62, 0xCA, 0x04, 0xF3, 0x64, 0xCA, 0x04, 0xF3, +0x66, 0xCA, 0x04, 0xF3, 0x68, 0xCA, 0x04, 0xF3, +0x6A, 0xCA, 0x04, 0xF3, 0x6C, 0xCA, 0x04, 0xF3, +0x6E, 0xCA, 0x04, 0xF3, 0x70, 0xCA, 0x04, 0xF3, +0x72, 0xCA, 0x04, 0xF3, 0x74, 0xCA, 0x04, 0xF3, +0x76, 0xCA, 0x04, 0xF3, 0x78, 0xCA, 0x04, 0xF3, +0x7A, 0xCA, 0x04, 0xF3, 0x7C, 0xCA, 0x04, 0xF3, +0x7E, 0xCA, 0x24, 0xF3, 0x60, 0xCA, 0x24, 0xF3, +0x62, 0xCA, 0x24, 0xF3, 0x64, 0xCA, 0x24, 0xF3, +0x66, 0xCA, 0x24, 0xF3, 0x68, 0xCA, 0x24, 0xF3, +0x6A, 0xCA, 0x24, 0xF3, 0x6C, 0xCA, 0x24, 0xF3, +0x6E, 0xCA, 0x24, 0xF3, 0x70, 0xCA, 0x24, 0xF3, +0x72, 0xCA, 0x24, 0xF3, 0x74, 0xCA, 0x24, 0xF3, +0x76, 0xCA, 0x24, 0xF3, 0x78, 0xCA, 0x24, 0xF3, +0x7A, 0xCA, 0x24, 0xF3, 0x7C, 0xCA, 0x24, 0xF3, +0x7E, 0xCA, 0x44, 0xF3, 0x60, 0xCA, 0x44, 0xF3, +0x62, 0xCA, 0x44, 0xF3, 0x64, 0xCA, 0x44, 0xF3, +0x66, 0xCA, 0x44, 0xF3, 0x68, 0xCA, 0x44, 0xF3, +0x6A, 0xCA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x18, 0x6E, 0xC5, 0x45, 0x2A, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xE0, 0xF0, 0x48, 0xA0, 0xE0, 0xF0, 0x88, 0xA0, +0xE4, 0xF2, 0x54, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x5C, 0x9A, 0x40, 0xEA, 0xE4, 0xF2, +0x55, 0xC0, 0xC0, 0xF0, 0x47, 0xA0, 0xC0, 0xF0, +0x65, 0xA0, 0x56, 0x32, 0xE4, 0xF2, 0x56, 0xC0, +0x43, 0xF4, 0x44, 0xA0, 0xE4, 0xF2, 0x57, 0xC0, +0xC3, 0xF3, 0x4B, 0xA0, 0xE4, 0xF2, 0x58, 0xC0, +0x0F, 0x6A, 0x6C, 0xEA, 0xE4, 0xF2, 0x59, 0xC0, +0xC0, 0xF0, 0x45, 0xA0, 0xC3, 0xF3, 0x68, 0xA0, +0x52, 0x32, 0xE4, 0xF2, 0x5A, 0xC0, 0x01, 0x6A, +0x6C, 0xEA, 0xE4, 0xF2, 0x5B, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF0, 0x58, 0x9A, 0x60, 0xA2, +0xFF, 0x6A, 0x6C, 0xEA, 0xE4, 0xF2, 0x5C, 0xC8, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x48, 0x9A, +0x60, 0xA2, 0xF8, 0x6A, 0x6C, 0xEA, 0xE4, 0xF2, +0x5E, 0xC8, 0xC3, 0xF3, 0x54, 0xA0, 0x04, 0xF3, +0x40, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0x80, 0xF2, 0x48, 0x99, 0x30, 0xF0, 0x20, 0x6C, +0xE8, 0xF2, 0x02, 0x4C, 0x00, 0x6D, 0x07, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF2, +0x48, 0x99, 0x90, 0x67, 0xA7, 0xF3, 0x1C, 0x4C, +0x00, 0x6D, 0x24, 0x6E, 0x40, 0xEA, 0xA7, 0xF3, +0x5C, 0xA0, 0x07, 0x97, 0x06, 0x91, 0x01, 0x4A, +0xA7, 0xF3, 0x5C, 0xC0, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xE8, 0xF2, 0x42, 0xA2, 0x01, 0x6B, 0x46, 0x32, +0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xE8, 0xF2, 0x62, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xE8, 0xF2, 0x42, 0xA2, 0xFF, 0x6B, 0x56, 0x32, +0x8E, 0xEA, 0x6C, 0xEA, 0x01, 0x5A, 0x58, 0x67, +0x6C, 0xEA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x8D, 0xC8, 0x00, 0x6B, 0x06, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF6, 0x63, 0xA2, +0x01, 0x6A, 0x4C, 0xEB, 0x05, 0x97, 0x43, 0x67, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x24, 0xF3, 0x46, 0xA8, +0x01, 0x4A, 0x24, 0xF3, 0x46, 0xC8, 0x00, 0x18, +0x7B, 0xC5, 0x01, 0x72, 0x01, 0x6A, 0x1B, 0x61, +0xC3, 0xF3, 0x4D, 0xA0, 0x03, 0x69, 0x62, 0x67, +0x2C, 0xEB, 0x06, 0x23, 0x04, 0x6A, 0x44, 0xF3, +0x4C, 0xC8, 0xC3, 0xF3, 0x4D, 0xA0, 0x08, 0x10, +0x43, 0xF4, 0x64, 0xA0, 0x08, 0x23, 0x08, 0x6A, +0x44, 0xF3, 0x4C, 0xC8, 0x43, 0xF4, 0x44, 0xA0, +0x44, 0xF3, 0x50, 0xC8, 0x58, 0x10, 0x04, 0x6B, +0x4C, 0xEB, 0x04, 0x23, 0x10, 0x6A, 0x44, 0xF3, +0x4C, 0xC8, 0x51, 0x10, 0x10, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x20, 0x6A, 0xF8, 0x17, 0xC3, 0xF3, +0x68, 0xA0, 0x20, 0x6A, 0x6C, 0xEA, 0x02, 0x2A, +0x40, 0x6A, 0xF1, 0x17, 0xA3, 0xF3, 0x54, 0xA0, +0x02, 0x22, 0x80, 0x6A, 0xEC, 0x17, 0x00, 0x18, +0x97, 0xC8, 0x03, 0x22, 0x00, 0xF1, 0x00, 0x6A, +0xE6, 0x17, 0xA4, 0xF3, 0x48, 0xA0, 0x4C, 0xE9, +0x03, 0x71, 0x03, 0x61, 0x00, 0xF4, 0x00, 0x6A, +0xDE, 0x17, 0xC3, 0xF3, 0x4A, 0xA0, 0x10, 0x6B, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x2B, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x4C, 0x9A, +0x02, 0x6B, 0x80, 0xA2, 0x8C, 0xEB, 0x02, 0x23, +0x11, 0x6B, 0x0A, 0x10, 0x80, 0xA2, 0x01, 0x6B, +0x8C, 0xEB, 0x0B, 0x23, 0x60, 0xA2, 0xFC, 0x6A, +0x6C, 0xEA, 0x80, 0x72, 0x06, 0x61, 0x12, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x4C, 0xF5, 0x7C, 0xCA, +0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA4, 0xF3, 0x6C, 0xA2, 0x05, 0x23, +0x01, 0xF0, 0x00, 0x6B, 0x44, 0xF3, 0x6C, 0xCA, +0x06, 0x10, 0x44, 0xF3, 0x6C, 0xCA, 0x24, 0xF3, +0x66, 0xCA, 0x01, 0x6A, 0x06, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x6B, 0x4C, 0xF5, 0x7E, 0xCA, +0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0xC0, 0xF0, 0x92, 0xA3, 0x04, 0x6A, 0x8C, 0xEA, 0x0C, 0x22, 0xC0, 0xF0, 0x53, 0xA3, 0x09, 0x22, 0xC0, 0xF0, 0x54, 0xA3, 0x06, 0x22, 0xC0, 0xF0, 0x75, 0xA3, 0x00, 0x6A, @@ -58050,1773 +58923,2307 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0xC3, 0xF3, -0xAD, 0xA0, 0x08, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, -0x4C, 0xEB, 0x4C, 0xEC, 0x0C, 0x2B, 0x01, 0x6C, -0x0C, 0x6D, 0x00, 0x18, 0x17, 0xC5, 0x43, 0xF4, -0x4B, 0xA0, 0x0F, 0x22, 0x00, 0x6C, 0xA4, 0x67, -0x00, 0x18, 0x28, 0xC8, 0x0A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, 0x01, 0x6D, -0x40, 0xEA, 0x01, 0x6C, 0x04, 0x6D, 0x00, 0x18, -0x17, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, -0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x6C, 0x00, 0x18, 0xB2, 0xD6, 0x05, 0x97, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF4, 0x04, 0x4B, -0x00, 0x6C, 0x86, 0xDB, 0x87, 0xDB, 0x44, 0xDB, -0x45, 0xDB, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF4, 0x04, 0x4A, -0x00, 0x6B, 0xFF, 0x69, 0x68, 0xC2, 0x8C, 0xE9, -0x00, 0x18, 0x1B, 0xC8, 0x28, 0x22, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0xC0, 0xF0, -0x53, 0xA0, 0xC0, 0xF0, 0x74, 0xA0, 0x58, 0xEB, -0x12, 0xEA, 0x43, 0xF4, 0x55, 0xC0, 0x00, 0x18, -0xC7, 0xC7, 0x03, 0x22, 0x43, 0xF4, 0x15, 0xA0, -0x05, 0x10, 0xC0, 0xF0, 0x54, 0xA0, 0x01, 0x72, -0x12, 0x61, 0x01, 0x68, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0x58, 0xEA, 0xF2, 0x16, 0xC2, 0x08, 0x61, -0x91, 0x67, 0x00, 0x18, 0x8D, 0xDC, 0x91, 0x67, -0xB0, 0x67, 0x00, 0x18, 0x93, 0xDE, 0x03, 0x10, -0x91, 0x67, 0x00, 0x18, 0x9E, 0xDC, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0xC3, 0xF3, +0xA9, 0xA0, 0x08, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, +0x4C, 0xEB, 0x4C, 0xEC, 0x11, 0x2B, 0x04, 0xF3, +0x50, 0xA8, 0x01, 0x6C, 0x0C, 0x6D, 0x01, 0x4A, +0x04, 0xF3, 0x50, 0xC8, 0x00, 0x18, 0x30, 0xC5, +0x43, 0xF4, 0x47, 0xA0, 0x14, 0x22, 0x00, 0x6C, +0xA4, 0x67, 0x00, 0x18, 0xF2, 0xC8, 0x0F, 0x10, +0x04, 0xF3, 0x52, 0xA8, 0x01, 0x6D, 0x01, 0x4A, +0x04, 0xF3, 0x52, 0xC8, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x6C, +0x04, 0x6D, 0x00, 0x18, 0x30, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, +0x00, 0x6D, 0x66, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x00, 0x18, +0xA8, 0xDB, 0x05, 0x97, 0x30, 0xF0, 0x20, 0x6B, +0xA7, 0xF3, 0x1C, 0x4B, 0x00, 0x6C, 0x86, 0xDB, +0x87, 0xDB, 0x44, 0xDB, 0x45, 0xDB, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xA7, 0xF3, 0x1C, 0x4A, 0x00, 0x6B, 0xFF, 0x68, +0x68, 0xC2, 0x8C, 0xE8, 0x00, 0x18, 0xE5, 0xC8, +0x4A, 0x22, 0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, +0x10, 0x49, 0xC0, 0xF0, 0x53, 0xA1, 0xC0, 0xF0, +0x74, 0xA1, 0x58, 0xEB, 0x12, 0xEA, 0x43, 0xF4, +0x51, 0xC1, 0x00, 0x18, 0x6E, 0xC5, 0x04, 0x22, +0x43, 0xF4, 0x31, 0xA1, 0x04, 0xD1, 0x06, 0x10, +0xC0, 0xF0, 0x54, 0xA1, 0x01, 0x72, 0x33, 0x61, +0x01, 0x6A, 0x04, 0xD2, 0x7D, 0x67, 0x47, 0x43, +0x09, 0x4A, 0x60, 0xA2, 0x04, 0x92, 0x30, 0xF0, +0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, 0x02, 0x5A, +0x43, 0xF4, 0x72, 0xC1, 0x14, 0x61, 0x00, 0x18, +0x6E, 0xC5, 0x06, 0x22, 0x90, 0x67, 0x00, 0x18, +0xE1, 0xE1, 0x90, 0x67, 0x00, 0x18, 0xDA, 0xE1, +0x90, 0x67, 0x00, 0x18, 0xAA, 0xE1, 0x04, 0x95, +0x90, 0x67, 0x00, 0x18, 0xC4, 0xE3, 0x90, 0x67, +0x00, 0x18, 0xE1, 0xE1, 0x10, 0x10, 0x90, 0x67, +0x00, 0x18, 0xBB, 0xE1, 0xC3, 0xF3, 0x69, 0xA1, +0x10, 0x6A, 0x6C, 0xEA, 0x08, 0x2A, 0x43, 0xF4, +0xB1, 0xA1, 0x90, 0x67, 0x00, 0x18, 0xC4, 0xE3, +0x90, 0x67, 0x00, 0x18, 0xAA, 0xE1, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF4, 0x04, 0x4A, 0x6A, 0xA2, 0x01, 0x4B, -0x6A, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xEA, 0xF2, -0x76, 0xA3, 0x01, 0x73, 0x0E, 0x61, 0x1B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF4, 0x04, 0x4A, +0xA7, 0xF3, 0x1C, 0x4A, 0x6A, 0xA2, 0x01, 0x4B, +0x6A, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF6, +0x62, 0xA3, 0x01, 0x73, 0x0E, 0x61, 0x1B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF3, 0x1C, 0x4A, 0x69, 0xA2, 0x01, 0x4B, 0x69, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0xEA, 0xF2, 0x76, 0xA3, 0x01, 0x73, +0x20, 0x6B, 0x6B, 0xF6, 0x62, 0xA3, 0x01, 0x73, 0x0E, 0x61, 0x68, 0xA2, 0x01, 0x4B, 0x68, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF4, 0x4C, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xC7, 0xF3, 0x44, 0xA2, 0x0A, 0x5A, 0x00, 0x6A, 0x05, 0x61, 0x00, 0x18, -0x58, 0xC8, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, +0x27, 0xC9, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x12, 0x2C, 0x10, 0xF0, 0x23, 0x6C, -0x46, 0xF6, 0x11, 0x4C, 0x00, 0x18, 0x75, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x43, 0xF4, 0x97, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0x43, 0xF4, 0x77, 0xC2, 0x29, 0x10, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, +0xC7, 0xF3, 0x05, 0x4C, 0x00, 0x18, 0x92, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x43, 0xF4, 0x93, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x43, 0xF4, 0x73, 0xC2, 0x29, 0x10, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0xC0, 0xF0, 0x92, 0xA0, 0x04, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x1F, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF4, 0x04, 0x4A, 0x66, 0xA2, 0xC0, 0xF0, +0xA7, 0xF3, 0x1C, 0x4A, 0x66, 0xA2, 0xC0, 0xF0, 0xD5, 0xA0, 0x10, 0xF0, 0x23, 0x6C, 0x01, 0x4B, 0x66, 0xC2, 0x0A, 0x6B, 0x78, 0xEE, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x46, 0xF6, 0x11, 0x4C, 0x00, 0x6D, +0x4C, 0x9A, 0xC7, 0xF3, 0x05, 0x4C, 0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEA, 0x43, 0xF4, -0x77, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0x43, 0xF4, -0x57, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, +0x73, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0x43, 0xF4, +0x53, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0xEC, 0x49, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xFB, 0x4E, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x78, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, +0x24, 0xF1, 0x70, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x02, 0xF4, 0x03, 0x6C, 0x4C, 0xEC, 0x80, 0xCB, 0x40, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xEA, 0xF2, 0x3B, 0xA2, 0x35, 0x10, +0x20, 0x6A, 0x6B, 0xF6, 0x27, 0xA2, 0x35, 0x10, 0x80, 0xF3, 0x4E, 0x41, 0x4C, 0x32, 0x09, 0xE2, -0xC2, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0x63, 0xF4, -0xFC, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0x63, 0xF4, -0xAC, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, +0xC1, 0x9A, 0x2C, 0x32, 0x09, 0xE2, 0x63, 0xF4, +0xF8, 0x9A, 0x06, 0xD2, 0x00, 0x6A, 0x63, 0xF4, +0xA8, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6B, 0xE0, 0xF2, -0x58, 0x9A, 0xF0, 0xF6, 0x00, 0x4B, 0x00, 0x6C, +0x58, 0x9A, 0x92, 0xF0, 0x18, 0x4B, 0x00, 0x6C, 0xB5, 0xE3, 0x40, 0xEA, 0x01, 0x72, 0x12, 0x61, 0x06, 0x92, 0x05, 0x6C, 0x01, 0x49, 0x63, 0xF4, -0x7C, 0x9A, 0x63, 0xF4, 0x4C, 0x98, 0x49, 0xE3, -0x63, 0xF4, 0x4C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x78, 0x9A, 0x63, 0xF4, 0x48, 0x98, 0x49, 0xE3, +0x63, 0xF4, 0x48, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0xFF, 0x6A, -0x4C, 0xE9, 0x07, 0x10, 0x04, 0xF3, 0x48, 0x98, -0x08, 0x6B, 0x6D, 0xEA, 0x04, 0xF3, 0x48, 0xD8, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x43, 0xF4, 0x5B, 0xA0, 0x08, 0x4A, +0x4C, 0xE9, 0x07, 0x10, 0x44, 0xF3, 0x58, 0x98, +0x08, 0x6B, 0x6D, 0xEA, 0x44, 0xF3, 0x58, 0xD8, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x43, 0xF4, 0x57, 0xA0, 0x08, 0x4A, 0x42, 0xE9, 0xC2, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x43, 0xF4, 0x3B, 0xC0, -0x00, 0x18, 0xFA, 0xD1, 0x01, 0x2A, 0xFF, 0x17, -0x00, 0x18, 0xCF, 0xC6, 0xC4, 0xF2, 0x84, 0xA8, +0x08, 0xF2, 0x10, 0x48, 0x43, 0xF4, 0x37, 0xC0, +0x00, 0x18, 0xEF, 0xD6, 0x01, 0x2A, 0xFF, 0x17, +0x00, 0x18, 0x2F, 0xC7, 0xC4, 0xF2, 0x80, 0xA8, 0xFF, 0xF7, 0x1F, 0x6A, 0x00, 0x6D, 0xFF, 0x4C, -0x4C, 0xEC, 0x00, 0x18, 0x10, 0xDE, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x7C, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x23, 0xF1, 0x90, 0x9C, 0x40, 0x9B, +0x4C, 0xEC, 0x00, 0x18, 0x41, 0xE3, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF1, 0x74, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF0, 0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x40, 0x9A, 0x04, 0x6C, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x44, 0x9A, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x68, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF2, 0x68, 0x98, -0x03, 0xF2, 0x4C, 0x9A, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF2, 0x6C, 0x98, 0x03, 0xF2, -0x50, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x54, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF2, 0x64, 0xA0, -0x03, 0xF2, 0x58, 0x9A, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF2, 0x65, 0xA0, 0x03, 0xF2, -0x5C, 0x9A, 0x60, 0xC2, 0x0B, 0x97, 0x0A, 0x91, +0x24, 0xF1, 0x58, 0x9A, 0x04, 0x6C, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x5C, 0x9A, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, +0x60, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF2, 0x64, 0x98, +0x44, 0xF1, 0x44, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF2, 0x68, 0x98, 0x44, 0xF1, +0x48, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x4C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF2, 0x60, 0xA0, +0x44, 0xF1, 0x50, 0x9A, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF2, 0x61, 0xA0, 0x44, 0xF1, +0x54, 0x9A, 0x60, 0xC2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6B, 0x8C, 0xEB, 0x01, 0x6A, 0x60, 0x2B, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x40, 0x9A, -0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x44, 0x9A, 0x4C, 0xEB, 0x00, 0x6A, 0x54, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0xEA, 0xF2, 0x58, 0xA2, -0x01, 0x72, 0x02, 0x61, 0x00, 0x18, 0xB9, 0xC6, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x01, 0x6C, 0x00, 0x18, 0xCF, 0xDD, 0x43, 0xF4, -0x5A, 0xA0, 0x00, 0x69, 0x43, 0xF4, 0x5B, 0xC0, -0x63, 0xF4, 0x48, 0x98, 0x63, 0xF4, 0x28, 0xD8, -0x63, 0xF4, 0x4C, 0xD8, 0x00, 0x6A, 0x43, 0xF4, -0x5A, 0xC0, 0x00, 0x18, 0xDC, 0xC6, 0x00, 0x18, -0xB7, 0xC8, 0x00, 0x18, 0x14, 0xC7, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF4, 0xA4, 0x98, 0x43, 0xF4, -0xDC, 0x98, 0x63, 0xF4, 0xE0, 0x98, 0xE0, 0xF2, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x58, 0x9A, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, +0x5C, 0x9A, 0x4C, 0xEB, 0x00, 0x6A, 0x54, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF6, 0x44, 0xA2, +0x01, 0x72, 0x02, 0x61, 0x00, 0x18, 0x19, 0xC7, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x01, 0x6C, 0x00, 0x18, 0xEC, 0xE2, 0x43, 0xF4, +0x56, 0xA0, 0x00, 0x69, 0x43, 0xF4, 0x57, 0xC0, +0x63, 0xF4, 0x44, 0x98, 0x63, 0xF4, 0x24, 0xD8, +0x63, 0xF4, 0x48, 0xD8, 0x00, 0x6A, 0x43, 0xF4, +0x56, 0xC0, 0x00, 0x18, 0x3C, 0xC7, 0x00, 0x18, +0x97, 0xC9, 0x00, 0x18, 0x74, 0xC7, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF4, 0xA0, 0x98, 0x43, 0xF4, +0xD8, 0x98, 0x43, 0xF4, 0xFC, 0x98, 0xE0, 0xF2, 0x58, 0x9A, 0x04, 0xD1, 0x05, 0xD1, 0x91, 0x67, -0x40, 0xEA, 0x01, 0x72, 0x06, 0x60, 0x04, 0xF3, -0x48, 0x98, 0x20, 0x6B, 0x6D, 0xEA, 0x04, 0xF3, -0x48, 0xD8, 0x00, 0x18, 0x6C, 0xC7, 0x01, 0x6C, -0x00, 0x18, 0x66, 0xC6, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x23, 0xF2, 0x88, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x00, 0x6B, 0x43, 0xF4, 0x7A, 0xC2, -0x00, 0x6B, 0x63, 0xF4, 0x68, 0xDA, 0x01, 0x6A, +0x40, 0xEA, 0x01, 0x72, 0x06, 0x60, 0x44, 0xF3, +0x58, 0x98, 0x20, 0x6B, 0x6D, 0xEA, 0x44, 0xF3, +0x58, 0xD8, 0x00, 0x18, 0xCC, 0xC7, 0x01, 0x6C, +0x00, 0x18, 0xC6, 0xC6, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x64, 0xF1, 0x80, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x00, 0x6B, 0x43, 0xF4, 0x76, 0xC2, +0x00, 0x6B, 0x63, 0xF4, 0x64, 0xDA, 0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x8B, 0xD8, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, -0x00, 0x18, 0x96, 0xD3, 0x01, 0xE2, 0x30, 0xF0, -0x20, 0x6B, 0x1C, 0x30, 0x23, 0xF2, 0x0C, 0x4B, +0x00, 0x18, 0x8B, 0xD8, 0x01, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0x1C, 0x30, 0x64, 0xF1, 0x04, 0x4B, 0x60, 0x9B, 0x04, 0xD0, 0xB0, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, -0x20, 0x69, 0x2F, 0xF0, 0x16, 0x49, 0x30, 0x4D, +0x21, 0x69, 0xF0, 0xF1, 0x0A, 0x49, 0x30, 0x4D, 0x75, 0xE5, 0x91, 0x67, 0x02, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6E, 0x04, 0x95, 0x23, 0xF2, -0x0C, 0x4E, 0xC0, 0x9E, 0x80, 0xF2, 0x4C, 0x98, +0x30, 0xF0, 0x20, 0x6E, 0x04, 0x95, 0x64, 0xF1, +0x04, 0x4E, 0xC0, 0x9E, 0x80, 0xF2, 0x4C, 0x98, 0x87, 0x41, 0x32, 0x4D, 0xD5, 0xE5, 0x10, 0x4C, 0x02, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0x95, 0x23, 0xF2, 0x0C, 0x4B, 0x60, 0x9B, +0x04, 0x95, 0x64, 0xF1, 0x04, 0x4B, 0x60, 0x9B, 0x80, 0xF2, 0x4C, 0x98, 0x34, 0x4D, 0x30, 0xF0, -0x20, 0x6C, 0x75, 0xE5, 0xEF, 0xF0, 0x10, 0x4C, +0x21, 0x6C, 0x75, 0xE5, 0xB0, 0xF2, 0x04, 0x4C, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0x96, 0x23, 0xF2, 0x0C, 0x4B, 0x60, 0x9B, +0x04, 0x96, 0x64, 0xF1, 0x04, 0x4B, 0x60, 0x9B, 0x80, 0xF2, 0x4C, 0x98, 0x38, 0x4E, 0x87, 0x41, 0x75, 0xE6, 0x04, 0xD6, 0x13, 0x4C, 0xA0, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0x96, -0x23, 0xF2, 0xB0, 0x9B, 0x80, 0xF2, 0x4C, 0x98, +0x64, 0xF1, 0xA8, 0x9B, 0x80, 0xF2, 0x4C, 0x98, 0x87, 0x41, 0xB5, 0xE6, 0x0B, 0x4C, 0x01, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x00, 0x18, -0x96, 0xD3, 0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xD8, 0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0xB4, 0x9A, 0x1C, 0x30, 0x30, 0xF0, -0x20, 0x6C, 0xB5, 0xE0, 0x8B, 0xF1, 0x08, 0x4C, +0x64, 0xF1, 0xAC, 0x9A, 0x1C, 0x30, 0x30, 0xF0, +0x20, 0x6C, 0xB5, 0xE0, 0xEC, 0xF4, 0x14, 0x4C, 0x10, 0x6E, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE4, 0xF2, 0x6D, 0xA2, -0x7C, 0x33, 0x63, 0xF4, 0x60, 0xDA, 0x05, 0x97, +0x08, 0xF2, 0x10, 0x4A, 0xE4, 0xF2, 0x69, 0xA2, +0x7C, 0x33, 0x43, 0xF4, 0x7C, 0xDA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xDD, 0x63, 0x45, 0x62, 0x44, 0xD1, 0x43, 0xD0, 0x30, 0xF0, 0x20, 0x6D, 0x1D, 0x00, 0x90, 0x67, -0x22, 0xF4, 0x0C, 0x4D, 0x80, 0x6E, 0x00, 0x18, -0xD5, 0xD3, 0x30, 0xF0, 0x20, 0x6D, 0x06, 0x04, -0xC2, 0xF3, 0x10, 0x4D, 0x5C, 0x6E, 0x00, 0x18, -0xD5, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x22, 0xF2, 0x04, 0x4D, 0x80, 0x6E, 0x00, 0x18, +0xCA, 0xD8, 0x30, 0xF0, 0x20, 0x6D, 0x06, 0x04, +0xC2, 0xF1, 0x08, 0x4D, 0x5C, 0x6E, 0x00, 0x18, +0xCA, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xB0, 0x67, -0x0A, 0xF3, 0x18, 0x4C, 0x80, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x00, 0x6B, 0x43, 0xF4, 0x7A, 0xC2, 0x00, 0x6B, -0x63, 0xF4, 0x68, 0xDA, 0x3E, 0x02, 0x1E, 0x00, +0x8B, 0xF6, 0x04, 0x4C, 0x80, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x00, 0x6B, 0x43, 0xF4, 0x76, 0xC2, 0x00, 0x6B, +0x63, 0xF4, 0x64, 0xDA, 0x3E, 0x02, 0x1E, 0x00, 0x40, 0xD2, 0x23, 0x67, 0x00, 0x6A, 0xFF, 0xF7, 0xBC, 0x98, 0xE0, 0x98, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x6E, -0xE0, 0xF2, 0x58, 0x9A, 0xF0, 0xF6, 0x00, 0x4E, +0xE0, 0xF2, 0x58, 0x9A, 0x92, 0xF0, 0x18, 0x4E, 0x00, 0x6C, 0x39, 0xE6, 0x40, 0xEA, 0x0A, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x04, 0xF3, 0x68, 0x9A, 0x01, 0x6C, 0x8D, 0xEB, -0x04, 0xF3, 0x68, 0xDA, 0x40, 0x98, 0x14, 0x6C, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x44, 0xF3, 0x78, 0x9A, 0x01, 0x6C, 0x8D, 0xEB, +0x44, 0xF3, 0x78, 0xDA, 0x40, 0x98, 0x14, 0x6C, 0x08, 0x48, 0x3E, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x40, 0x92, 0x4A, 0xE8, 0x03, 0x60, 0x3E, 0x92, 0x45, 0xE1, 0xD5, 0x17, 0x30, 0xF0, 0x20, 0x68, 0x1D, 0x02, -0x06, 0x01, 0x8A, 0xF3, 0x18, 0x48, 0x41, 0xD2, +0x06, 0x01, 0x0B, 0xF7, 0x04, 0x48, 0x41, 0xD2, 0x40, 0x99, 0xFF, 0xF7, 0x1F, 0x6C, 0x01, 0x6D, 0x40, 0xD8, 0x4C, 0xEC, 0xAB, 0xED, 0x80, 0x18, -0x72, 0x3C, 0x41, 0xD8, 0x41, 0x92, 0x04, 0x49, +0xE1, 0x39, 0x41, 0xD8, 0x41, 0x92, 0x04, 0x49, 0x08, 0x48, 0x4A, 0xE9, 0x58, 0x67, 0x3E, 0xD2, 0xEF, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF2, 0x54, 0x9A, 0x38, 0x6C, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xEA, 0xA6, 0xF6, 0x00, 0x48, 0xA3, 0xF5, -0x50, 0xD8, 0x00, 0x18, 0x96, 0xD3, 0xC4, 0xF2, -0x44, 0xC8, 0xC4, 0xF2, 0xA4, 0xA8, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, 0x63, 0xF4, -0xE0, 0x98, 0xBC, 0x35, 0x30, 0xF0, 0x21, 0x6E, -0x55, 0xE5, 0xF3, 0xF4, 0x00, 0x4E, 0x84, 0xF5, -0x01, 0x5F, 0x43, 0xF4, 0xBC, 0xD8, 0x63, 0xF4, -0xC4, 0xD8, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF2, 0x64, 0x9B, 0xC0, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x5C, 0x9A, 0x01, 0x6D, -0xE0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x80, 0x9A, 0x40, 0x9C, 0x6D, 0xEA, 0x40, 0xDC, -0xA3, 0xF3, 0x5C, 0x98, 0x04, 0x6C, 0x6D, 0xEA, -0xA3, 0xF3, 0x5C, 0xD8, 0x80, 0x18, 0x4E, 0x16, +0x40, 0xEA, 0x08, 0xF2, 0x10, 0x48, 0xA3, 0xF5, +0x4C, 0xD8, 0x00, 0x18, 0x8B, 0xD8, 0xC4, 0xF2, +0x40, 0xC8, 0xC4, 0xF2, 0xA0, 0xA8, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, 0x43, 0xF4, +0xFC, 0x98, 0xBC, 0x35, 0x30, 0xF0, 0x21, 0x6E, +0x55, 0xE5, 0x94, 0xF6, 0x18, 0x4E, 0x02, 0xF0, +0x01, 0x5F, 0x43, 0xF4, 0xB8, 0xD8, 0x63, 0xF4, +0xC0, 0xD8, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF1, 0x7C, 0x9B, 0xC0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x54, 0x9A, 0x01, 0x6D, +0xE0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x98, 0x9A, 0x40, 0x9C, 0x6D, 0xEA, 0x40, 0xDC, +0xA3, 0xF3, 0x58, 0x98, 0x04, 0x6C, 0x6D, 0xEA, +0xA3, 0xF3, 0x58, 0xD8, 0x80, 0x18, 0xC7, 0x13, 0xFF, 0x17, 0x3E, 0x91, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x58, 0x9A, 0x04, 0xD1, 0x05, 0xD1, -0x00, 0x6C, 0x40, 0xEA, 0x06, 0x2A, 0x04, 0xF3, -0x48, 0x98, 0x02, 0x6B, 0x6D, 0xEA, 0x04, 0xF3, -0x48, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, -0x79, 0xA2, 0x01, 0x6A, 0x00, 0x68, 0x6C, 0xEA, +0x00, 0x6C, 0x40, 0xEA, 0x06, 0x2A, 0x44, 0xF3, +0x58, 0x98, 0x02, 0x6B, 0x6D, 0xEA, 0x44, 0xF3, +0x58, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF2, +0x69, 0xA2, 0x01, 0x6A, 0x00, 0x68, 0x6C, 0xEA, 0x11, 0x2A, 0x18, 0x10, 0x18, 0x6D, 0xB8, 0xE8, -0x49, 0xE0, 0xE4, 0xF2, 0x90, 0xA2, 0x30, 0xF0, -0x20, 0x6B, 0x4A, 0xF4, 0x14, 0x4B, 0x01, 0x48, -0x12, 0xED, 0xB5, 0xE3, 0x00, 0x18, 0x2E, 0xC4, +0x49, 0xE0, 0xE4, 0xF2, 0x8C, 0xA2, 0x30, 0xF0, +0x20, 0x6B, 0xCB, 0xF7, 0x00, 0x4B, 0x01, 0x48, +0x12, 0xED, 0xB5, 0xE3, 0x00, 0x18, 0x3F, 0xC4, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE4, 0xF2, 0x6C, 0xA2, +0x08, 0xF2, 0x10, 0x4A, 0xE4, 0xF2, 0x68, 0xA2, 0x63, 0xE8, 0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x43, 0xF4, 0x78, 0xA2, +0x08, 0xF2, 0x10, 0x4A, 0x43, 0xF4, 0x74, 0xA2, 0x12, 0x23, 0xC0, 0xF0, 0x79, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x68, -0x0A, 0xF5, 0x14, 0x48, 0x00, 0x69, 0x91, 0x67, -0xB0, 0x67, 0x01, 0x49, 0x00, 0x18, 0x2E, 0xC4, +0x8C, 0xF0, 0x00, 0x48, 0x00, 0x69, 0x91, 0x67, +0xB0, 0x67, 0x01, 0x49, 0x00, 0x18, 0x3F, 0xC4, 0x04, 0x71, 0x18, 0x48, 0xF8, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC0, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, 0x99, 0xA2, 0x02, 0x6B, 0x8C, 0xEB, 0x49, 0x23, -0xE4, 0xF2, 0xC9, 0xA2, 0x00, 0x6C, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF1, 0x14, 0x4A, 0x01, 0x6B, +0xE4, 0xF2, 0xC5, 0xA2, 0x00, 0x6C, 0x30, 0xF0, +0x20, 0x6A, 0xAC, 0xF4, 0x00, 0x4A, 0x01, 0x6B, 0xA4, 0x67, 0x3B, 0x10, 0x30, 0xF0, 0x20, 0x68, -0x23, 0xF1, 0x10, 0x98, 0x1F, 0x6F, 0x8C, 0xEF, +0x64, 0xF0, 0x04, 0x98, 0x1F, 0x6F, 0x8C, 0xEF, 0x00, 0xF6, 0xE0, 0x37, 0x0D, 0xEF, 0x30, 0xF0, -0x20, 0x68, 0xE3, 0xF1, 0x10, 0x98, 0xE0, 0xD8, -0x30, 0xF0, 0x20, 0x6F, 0xE3, 0xF1, 0xF0, 0x9F, +0x20, 0x68, 0x24, 0xF1, 0x04, 0x98, 0xE0, 0xD8, +0x30, 0xF0, 0x20, 0x6F, 0x24, 0xF1, 0xE4, 0x9F, 0xE0, 0x9F, 0x00, 0x57, 0x0B, 0x60, 0xFF, 0x68, 0x01, 0x4B, 0x0A, 0x6F, 0x0C, 0xEB, 0xFB, 0xEB, 0x01, 0x2F, 0xE5, 0xE8, 0x10, 0xEF, 0x0C, 0xEF, 0xEF, 0x2F, 0x19, 0x25, 0x30, 0xF0, 0x20, 0x6D, -0xE3, 0xF1, 0xA8, 0x9D, 0xA0, 0x9D, 0xA2, 0x37, +0x04, 0xF1, 0xBC, 0x9D, 0xA0, 0x9D, 0xA2, 0x37, 0xA0, 0xC2, 0x00, 0xF6, 0xA2, 0x35, 0xA3, 0xC2, -0x30, 0xF0, 0x20, 0x6D, 0xE3, 0xF1, 0xB0, 0x9D, +0x30, 0xF0, 0x20, 0x6D, 0x24, 0xF1, 0xA4, 0x9D, 0xE1, 0xC2, 0xE2, 0x37, 0xE2, 0xC2, 0xE0, 0xAD, 0xFF, 0xF7, 0x1F, 0x6D, 0xEC, 0xED, 0xA4, 0xC2, 0xA2, 0x35, 0xA5, 0xC2, 0x01, 0x6D, 0x01, 0x4C, 0x06, 0x4A, 0xFF, 0x6F, 0x8C, 0xEF, 0xC3, 0xEF, -0xC1, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xC0, 0xF0, 0x99, 0xA2, 0x04, 0x6B, +0xC1, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xC0, 0xF0, 0x99, 0xA2, 0x04, 0x6B, 0x8C, 0xEB, 0x1C, 0x23, 0xE0, 0xF0, 0x6E, 0xA2, 0x03, 0x6A, 0x00, 0x68, 0x6C, 0xEA, 0x03, 0x72, 0x15, 0x61, 0x0E, 0x10, 0x14, 0x6D, 0xB8, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF5, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xEC, 0xF0, 0x00, 0x4A, 0x90, 0x67, 0x01, 0x48, 0x12, 0xED, 0xB5, 0xE2, -0x00, 0x18, 0x5E, 0xC4, 0xFF, 0x6A, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x8B, 0xF1, 0x4A, 0xA2, +0x00, 0x18, 0x6F, 0xC4, 0xFF, 0x6A, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xEC, 0xF4, 0x56, 0xA2, 0x43, 0xE8, 0xEC, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x30, 0xF0, -0x20, 0x69, 0x80, 0x18, 0x72, 0x3C, 0xA6, 0xF6, -0x00, 0x49, 0xC4, 0xF2, 0x5C, 0xD9, 0xC0, 0xF3, +0x20, 0x69, 0x80, 0x18, 0xE1, 0x39, 0x08, 0xF2, +0x10, 0x49, 0xC4, 0xF2, 0x58, 0xD9, 0xC0, 0xF3, 0x44, 0x98, 0x0A, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, 0x23, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0x72, 0x3C, -0xE4, 0xF2, 0x40, 0xD9, 0xC0, 0xF3, 0x44, 0x98, +0x00, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0xE1, 0x39, +0xC4, 0xF2, 0x5C, 0xD9, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, -0x40, 0xEA, 0x00, 0x18, 0xFA, 0xD1, 0x45, 0x97, +0x40, 0xEA, 0x00, 0x18, 0xEF, 0xD6, 0x45, 0x97, 0x44, 0x91, 0x43, 0x90, 0x23, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6A, 0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x58, 0x9A, 0xC3, 0xF1, 0xAC, 0x9B, 0x30, 0xF0, -0x21, 0x6E, 0x00, 0x6C, 0xD3, 0xF4, 0x00, 0x4E, +0x58, 0x9A, 0x04, 0xF1, 0xA0, 0x9B, 0x30, 0xF0, +0x21, 0x6E, 0x00, 0x6C, 0x74, 0xF6, 0x18, 0x4E, 0x20, 0x6F, 0x40, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x04, 0xF3, -0x68, 0x9A, 0x01, 0x6C, 0x8D, 0xEB, 0x04, 0xF3, -0x68, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x44, 0xF3, +0x78, 0x9A, 0x01, 0x6C, 0x8D, 0xEB, 0x44, 0xF3, +0x78, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x43, 0xF4, -0x79, 0xA2, 0x05, 0x23, 0x00, 0x6B, 0x43, 0xF4, -0x79, 0xC2, 0x00, 0x18, 0x86, 0xC9, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0x70, 0x9A, 0xFD, 0x6A, -0x30, 0xF0, 0x20, 0x68, 0x80, 0xA3, 0x2A, 0xF7, -0x14, 0x48, 0x00, 0x69, 0x8C, 0xEA, 0x40, 0xC3, -0x00, 0x6C, 0x00, 0x18, 0x66, 0xC6, 0x00, 0x6C, -0x00, 0x18, 0xCF, 0xDD, 0x91, 0x67, 0xB0, 0x67, -0x01, 0x49, 0x00, 0x18, 0x90, 0xC4, 0x40, 0x71, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x43, 0xF4, +0x75, 0xA2, 0x05, 0x23, 0x00, 0x6B, 0x43, 0xF4, +0x75, 0xC2, 0x00, 0x18, 0x6A, 0xCA, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0x64, 0x9A, 0xFD, 0x6A, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xA3, 0xAC, 0xF2, +0x00, 0x48, 0x00, 0x69, 0x8C, 0xEA, 0x40, 0xC3, +0x00, 0x6C, 0x00, 0x18, 0xC6, 0xC6, 0x00, 0x6C, +0x00, 0x18, 0xEC, 0xE2, 0x91, 0x67, 0xB0, 0x67, +0x01, 0x49, 0x00, 0x18, 0xA1, 0xC4, 0x40, 0x71, 0x08, 0x48, 0xF8, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x4C, 0x9A, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC4, 0xF2, -0x68, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, -0x70, 0x9B, 0x60, 0x9B, 0xC4, 0xF2, 0x6C, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x68, 0x9B, -0x60, 0x9B, 0xC4, 0xF2, 0x70, 0xDA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF2, 0x6C, 0x9B, 0x60, 0x9B, -0xC4, 0xF2, 0x74, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF2, 0x70, 0x9B, 0x60, 0xA3, 0xE4, 0xF2, -0x66, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, -0x74, 0x9B, 0x60, 0x9B, 0xC4, 0xF2, 0x78, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x78, 0x9B, -0x60, 0xA3, 0xE4, 0xF2, 0x64, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF2, 0x7C, 0x9B, 0x60, 0xA3, -0xE4, 0xF2, 0x65, 0xC2, 0x09, 0x97, 0x08, 0x91, +0x44, 0xF1, 0x44, 0x9A, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC4, 0xF2, +0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF1, +0x68, 0x9B, 0x60, 0x9B, 0xC4, 0xF2, 0x68, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, 0x60, 0x9B, +0x60, 0x9B, 0xC4, 0xF2, 0x6C, 0xDA, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF1, 0x64, 0x9B, 0x60, 0x9B, +0xC4, 0xF2, 0x70, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF1, 0x68, 0x9B, 0x60, 0xA3, 0xE4, 0xF2, +0x62, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, +0x6C, 0x9B, 0x60, 0x9B, 0xC4, 0xF2, 0x74, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF1, 0x70, 0x9B, +0x60, 0xA3, 0xE4, 0xF2, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF1, 0x74, 0x9B, 0x60, 0xA3, +0xE4, 0xF2, 0x61, 0xC2, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, -0x8C, 0xE8, 0x00, 0x18, 0x96, 0xD3, 0x01, 0xE2, -0x1C, 0x34, 0x30, 0x4C, 0x80, 0x18, 0xEE, 0x1C, +0x8C, 0xE8, 0x00, 0x18, 0x8B, 0xD8, 0x01, 0xE2, +0x1C, 0x34, 0x30, 0x4C, 0x80, 0x18, 0x78, 0x1A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xFF, 0x68, -0x8C, 0xE8, 0xC3, 0xF3, 0x8C, 0xA2, 0x03, 0x6B, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xFF, 0x68, +0x8C, 0xE8, 0xC3, 0xF3, 0x88, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, 0x41, 0x6D, 0x8C, 0xEB, 0xAB, 0xED, -0xAC, 0xEB, 0xC3, 0xF3, 0xAD, 0xA2, 0xC3, 0xF3, -0x6C, 0xC2, 0x11, 0x6B, 0x00, 0x6C, 0x6B, 0xEB, -0xC3, 0xF3, 0x99, 0xC2, 0xC3, 0xF3, 0x91, 0xC2, -0xAC, 0xEB, 0xC3, 0xF3, 0x9A, 0xC2, 0x90, 0x67, -0xC3, 0xF3, 0x6D, 0xC2, 0x00, 0x18, 0x9E, 0xDC, -0x90, 0x67, 0x00, 0x18, 0x97, 0xDC, 0x90, 0x67, -0x00, 0x18, 0xB3, 0xDC, 0x05, 0x97, 0x04, 0x90, +0xAC, 0xEB, 0xC3, 0xF3, 0xA9, 0xA2, 0xC3, 0xF3, +0x68, 0xC2, 0x11, 0x6B, 0x00, 0x6C, 0x6B, 0xEB, +0xC3, 0xF3, 0x95, 0xC2, 0xC3, 0xF3, 0x8D, 0xC2, +0xAC, 0xEB, 0xC3, 0xF3, 0x96, 0xC2, 0x90, 0x67, +0xC3, 0xF3, 0x69, 0xC2, 0x00, 0x18, 0xBB, 0xE1, +0x90, 0x67, 0x00, 0x18, 0xB4, 0xE1, 0x90, 0x67, +0x00, 0x18, 0xD0, 0xE1, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x80, 0x18, 0xC7, 0x1A, -0xC3, 0xF3, 0x4F, 0xA0, 0x01, 0x6C, 0xF0, 0x6D, -0x04, 0xD2, 0x00, 0x18, 0x17, 0xC5, 0x00, 0x18, -0x5D, 0xDE, 0x43, 0xF4, 0x58, 0xA0, 0x64, 0x22, -0x00, 0x18, 0x5A, 0xCA, 0x5C, 0xB9, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, 0x21, 0x6C, -0xFC, 0xF7, 0x1C, 0x4C, 0xBD, 0x67, 0xA0, 0xDC, -0x9A, 0xB8, 0x00, 0x65, 0xBB, 0xB8, 0x00, 0x65, -0x00, 0x18, 0x22, 0xDA, 0x30, 0xF0, 0x21, 0x69, -0xDC, 0xF7, 0x0C, 0x49, 0x00, 0x99, 0x32, 0xE8, -0x01, 0x99, 0x30, 0xE8, 0x42, 0x99, 0x63, 0x99, -0x84, 0x99, 0xA5, 0x99, 0xC6, 0x99, 0xE7, 0x99, -0x08, 0x99, 0x18, 0x65, 0x09, 0x99, 0x58, 0xB9, +0x08, 0xF2, 0x10, 0x48, 0x24, 0xF3, 0x42, 0xA8, +0x01, 0x4A, 0x24, 0xF3, 0x42, 0xC8, 0x80, 0x18, +0x50, 0x18, 0xC3, 0xF3, 0x4B, 0xA0, 0x01, 0x6C, +0xF0, 0x6D, 0x04, 0xD2, 0x00, 0x18, 0x30, 0xC5, +0x00, 0x18, 0x8E, 0xE3, 0x43, 0xF4, 0x54, 0xA0, +0x64, 0x22, 0x00, 0x18, 0x3E, 0xCB, 0x5C, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, -0x21, 0x68, 0xDC, 0xF7, 0x0C, 0x48, 0x2A, 0x98, -0x1A, 0xB8, 0x00, 0x65, 0x58, 0xB9, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x79, 0xB9, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, 0x21, 0x69, -0x9C, 0xF7, 0x0C, 0x49, 0x09, 0xD9, 0x12, 0xE8, -0x00, 0xD9, 0x10, 0xE8, 0x01, 0xD9, 0x42, 0xD9, -0x63, 0xD9, 0x84, 0xD9, 0xA5, 0xD9, 0xC6, 0xD9, -0xE7, 0xD9, 0x18, 0x67, 0x08, 0xD9, 0x1F, 0x67, -0x0B, 0xD9, 0x1D, 0x67, 0x0C, 0xD9, 0x1F, 0xF7, -0x32, 0x68, 0x46, 0xF4, 0x16, 0x48, 0xFF, 0xF7, -0x1C, 0xD9, 0x30, 0xF0, 0x21, 0x68, 0x9C, 0xF7, -0x0C, 0x48, 0x3B, 0xB8, 0x00, 0x65, 0x2A, 0xD8, -0x1A, 0xB8, 0x00, 0x65, 0x00, 0x18, 0xFB, 0xD9, -0x00, 0x6C, 0x00, 0x18, 0x0E, 0xC9, 0x10, 0x10, -0x00, 0x6C, 0x00, 0x18, 0xCF, 0xDD, 0x00, 0x6C, -0x00, 0x18, 0x66, 0xC6, 0x00, 0x18, 0x22, 0xDA, -0x00, 0x18, 0xFB, 0xD9, 0x01, 0x6C, 0x00, 0x18, -0x66, 0xC6, 0x01, 0x6C, 0x00, 0x18, 0xCF, 0xDD, -0x04, 0x95, 0x01, 0x6C, 0x00, 0x18, 0x17, 0xC5, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x00, 0x18, -0xEF, 0xDF, 0x00, 0x18, 0xA0, 0xD3, 0x01, 0x72, -0x03, 0x60, 0x08, 0x6C, 0x00, 0x18, 0xAC, 0xDF, -0x08, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0x00, 0x6D, 0xFF, 0x6C, 0xC5, 0x67, -0x40, 0xEA, 0x01, 0x6C, 0x04, 0x6D, 0x00, 0x18, -0x17, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, -0x78, 0x9B, 0x43, 0xF4, 0x88, 0x9A, 0x8C, 0xEB, -0x04, 0x73, 0x0C, 0x61, 0xC3, 0xF3, 0x6F, 0xA2, -0x04, 0x6C, 0x8C, 0xEB, 0x07, 0x23, 0x01, 0x6B, -0x43, 0xF4, 0x6A, 0xC2, 0x01, 0x6C, 0x00, 0x6D, -0x00, 0x18, 0x28, 0xC8, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xDE, 0xC7, 0x20, 0x2A, 0x00, 0x18, -0x9B, 0xD3, 0x39, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x5C, 0x9A, 0x40, 0xA2, 0x33, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x64, 0xA2, +0x21, 0x6C, 0xFC, 0xF7, 0x1C, 0x4C, 0xBD, 0x67, +0xA0, 0xDC, 0x9A, 0xB8, 0x00, 0x65, 0xBB, 0xB8, +0x00, 0x65, 0x00, 0x18, 0x3F, 0xDF, 0x30, 0xF0, +0x21, 0x69, 0xDC, 0xF7, 0x0C, 0x49, 0x00, 0x99, +0x32, 0xE8, 0x01, 0x99, 0x30, 0xE8, 0x42, 0x99, +0x63, 0x99, 0x84, 0x99, 0xA5, 0x99, 0xC6, 0x99, +0xE7, 0x99, 0x08, 0x99, 0x18, 0x65, 0x09, 0x99, +0x58, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x30, 0xF0, 0x21, 0x68, 0xDC, 0xF7, 0x0C, 0x48, +0x2A, 0x98, 0x1A, 0xB8, 0x00, 0x65, 0x58, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x79, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, +0x21, 0x69, 0x9C, 0xF7, 0x0C, 0x49, 0x09, 0xD9, +0x12, 0xE8, 0x00, 0xD9, 0x10, 0xE8, 0x01, 0xD9, +0x42, 0xD9, 0x63, 0xD9, 0x84, 0xD9, 0xA5, 0xD9, +0xC6, 0xD9, 0xE7, 0xD9, 0x18, 0x67, 0x08, 0xD9, +0x1F, 0x67, 0x0B, 0xD9, 0x1D, 0x67, 0x0C, 0xD9, +0x1F, 0xF7, 0x32, 0x68, 0x46, 0xF4, 0x16, 0x48, +0xFF, 0xF7, 0x1C, 0xD9, 0x30, 0xF0, 0x21, 0x68, +0x9C, 0xF7, 0x0C, 0x48, 0x3B, 0xB8, 0x00, 0x65, +0x2A, 0xD8, 0x1A, 0xB8, 0x00, 0x65, 0x00, 0x18, +0x18, 0xDF, 0x00, 0x6C, 0x00, 0x18, 0xEE, 0xC9, +0x10, 0x10, 0x00, 0x6C, 0x00, 0x18, 0xEC, 0xE2, +0x00, 0x6C, 0x00, 0x18, 0xC6, 0xC6, 0x00, 0x18, +0x3F, 0xDF, 0x00, 0x18, 0x18, 0xDF, 0x01, 0x6C, +0x00, 0x18, 0xC6, 0xC6, 0x01, 0x6C, 0x00, 0x18, +0xEC, 0xE2, 0x04, 0x95, 0x01, 0x6C, 0x00, 0x18, +0x30, 0xC5, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x04, 0xF3, 0x7E, 0xAA, 0xFF, 0x68, +0x8C, 0xE8, 0x01, 0x4B, 0x04, 0xF3, 0x7E, 0xCA, +0x00, 0x18, 0x20, 0xE5, 0x00, 0x18, 0x95, 0xD8, +0x01, 0x72, 0x03, 0x60, 0x08, 0x6C, 0x00, 0x18, +0xDD, 0xE4, 0x08, 0x20, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0x00, 0x6D, +0x68, 0x6E, 0x40, 0xEA, 0x01, 0x6C, 0x04, 0x6D, +0x00, 0x18, 0x30, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF1, 0x70, 0x9B, 0x43, 0xF4, 0x84, 0x9A, +0x8C, 0xEB, 0x04, 0x73, 0x0C, 0x61, 0xC3, 0xF3, +0x6B, 0xA2, 0x04, 0x6C, 0x8C, 0xEB, 0x07, 0x23, +0x01, 0x6B, 0x43, 0xF4, 0x66, 0xC2, 0x01, 0x6C, +0x00, 0x6D, 0x00, 0x18, 0xF2, 0xC8, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x24, 0xF3, +0x48, 0xA8, 0x01, 0x4A, 0x24, 0xF3, 0x48, 0xC8, +0x00, 0x18, 0x89, 0xC8, 0x2A, 0x2A, 0x00, 0x18, +0x90, 0xD8, 0x02, 0x22, 0x01, 0x6A, 0x07, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x54, 0x9A, +0x40, 0xA2, 0x04, 0x22, 0x02, 0x6A, 0x44, 0xF3, +0x4C, 0xC8, 0x52, 0x10, 0x64, 0xF3, 0x7C, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x2A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x40, 0x9A, 0x60, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, -0x22, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x44, 0x9A, 0x40, 0xA2, 0x1C, 0x2A, 0x00, 0x18, -0xA0, 0xD3, 0x19, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA0, 0xF1, 0x9C, 0xA2, -0xA0, 0xF1, 0x7D, 0xA2, 0x8E, 0xEB, 0x0F, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, 0x68, 0x9B, -0x80, 0xA3, 0x0F, 0x6B, 0x8C, 0xEB, 0x07, 0x2B, -0x24, 0xF3, 0x44, 0xA2, 0x01, 0x6B, 0x4E, 0x32, -0x6E, 0xEA, 0x6C, 0xEA, 0x01, 0x10, 0x00, 0x6A, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x6A, 0xF2, 0x4F, 0xA2, 0x02, 0x22, 0x08, 0x72, -0x06, 0x61, 0x00, 0x18, 0x27, 0xCB, 0x01, 0x72, -0x02, 0x61, 0x00, 0x18, 0xC1, 0xCA, 0x05, 0x97, +0x02, 0x22, 0x04, 0x6A, 0xF4, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF1, 0x58, 0x9A, 0x60, 0xA2, +0x02, 0x6A, 0x6C, 0xEA, 0x02, 0x2A, 0x08, 0x6A, +0xEA, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, +0x5C, 0x9A, 0x40, 0xA2, 0x02, 0x22, 0x10, 0x6A, +0xE2, 0x17, 0x00, 0x18, 0x95, 0xD8, 0x06, 0x2A, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x4C, 0xF5, +0x7C, 0xCA, 0x2E, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA0, 0xF1, 0x95, 0xA2, +0xA0, 0xF1, 0x76, 0xA2, 0x8E, 0xEB, 0x02, 0x23, +0x40, 0x6B, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF1, 0x60, 0x9B, 0x80, 0xA3, 0x0F, 0x6B, +0x8C, 0xEB, 0x02, 0x23, 0x80, 0x6B, 0x09, 0x10, +0x64, 0xF3, 0x7C, 0xA2, 0x08, 0x6C, 0xFF, 0x6D, +0x8C, 0xEB, 0xAC, 0xEB, 0x05, 0x23, 0x00, 0xF2, +0x00, 0x6B, 0x44, 0xF3, 0x6C, 0xCA, 0x0C, 0x10, +0x44, 0xF3, 0x6C, 0xCA, 0x44, 0xF3, 0x8E, 0xCA, +0x44, 0xF3, 0x90, 0xCA, 0x44, 0xF3, 0x92, 0xCA, +0x24, 0xF3, 0x68, 0xCA, 0x01, 0x6A, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0x6B, 0x4C, 0xF5, +0x7E, 0xCA, 0x00, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0x45, 0xF5, 0x0D, 0x4A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, -0x6C, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x4A, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x45, 0xF5, 0x0F, 0x4A, 0x40, 0xDB, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0x67, 0x6A, 0xF2, 0x8E, 0xA3, 0x02, 0x6B, -0xFF, 0x6A, 0x8C, 0xEB, 0x4C, 0xED, 0x4C, 0xEB, -0x4C, 0xE9, 0x08, 0xD5, 0x02, 0x6A, 0x75, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF4, 0x4B, 0xA2, -0x2E, 0xEA, 0x5F, 0x22, 0x00, 0x6A, 0x7D, 0x67, -0x30, 0xF0, 0x20, 0x6C, 0x05, 0xD2, 0x58, 0xC3, -0x48, 0xCB, 0xC6, 0xF4, 0x4A, 0xA4, 0x27, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF4, 0x49, 0xA3, -0x22, 0x2A, 0x30, 0xF0, 0x20, 0x6C, 0xC6, 0xF4, -0x48, 0xA4, 0x1D, 0x2A, 0x30, 0xF0, 0x20, 0x68, -0xAE, 0xF7, 0x18, 0x48, 0x90, 0x67, 0x05, 0x05, -0x80, 0x18, 0xBB, 0x4D, 0x90, 0x67, 0x04, 0x05, -0x80, 0x18, 0xA9, 0x4D, 0x7D, 0x67, 0x50, 0xA3, -0x30, 0xF0, 0x20, 0x6C, 0xC6, 0xF4, 0x4A, 0xC4, -0x54, 0xA3, 0x75, 0xA3, 0x30, 0xF0, 0x20, 0x6C, -0x4D, 0xEB, 0xC6, 0xF4, 0x69, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF4, 0x48, 0xC3, 0x03, 0x21, -0x01, 0x71, 0x12, 0x60, 0x26, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF4, 0xA9, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0xC6, 0xF4, -0xCA, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, -0x18, 0x4C, 0xC6, 0xF4, 0xE8, 0xA2, 0x13, 0x10, -0x30, 0xF0, 0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, -0x90, 0x67, 0x80, 0x18, 0x4F, 0x4C, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x32, 0x6C, 0x40, 0xEA, 0xF1, 0x17, 0x01, 0x6D, -0x90, 0x67, 0xC5, 0x67, 0xE5, 0x67, 0x80, 0x18, -0xAA, 0x51, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF4, -0x2B, 0xC2, 0x08, 0x94, 0x00, 0x6A, 0x0D, 0x24, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF4, 0x4A, 0xC3, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF4, 0x49, 0xC3, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF4, 0x48, 0xC3, -0x00, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, -0x07, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x80, 0xF2, 0x48, 0x98, 0x30, 0xF0, 0x20, 0x6C, -0x6A, 0xF2, 0x0C, 0x4C, 0x00, 0x6D, 0x80, 0x6E, -0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, 0x30, 0xF0, -0x20, 0x6C, 0x2C, 0x6E, 0x8B, 0xF1, 0x18, 0x4C, -0x00, 0x6D, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x40, 0xEA, 0x00, 0x18, 0xCC, 0xC7, -0x02, 0x6A, 0xC0, 0xF0, 0x46, 0xC0, 0x01, 0x6A, -0xC3, 0xF3, 0x56, 0xC0, 0xC3, 0xF3, 0x57, 0xC0, -0x0C, 0x6A, 0xC3, 0xF3, 0x58, 0xC0, 0x00, 0x6C, -0x06, 0x6A, 0xE3, 0xF3, 0x40, 0xC8, 0xA4, 0x67, -0x00, 0x18, 0x17, 0xC5, 0x02, 0x6C, 0x0C, 0x6D, -0x00, 0x18, 0x17, 0xC5, 0x01, 0x6C, 0x0C, 0x6D, -0x00, 0x18, 0x17, 0xC5, 0x30, 0xF0, 0x20, 0x6C, -0x6A, 0xF2, 0x1E, 0x4C, 0x00, 0x6D, 0x00, 0x18, -0xF0, 0xDD, 0xC0, 0xF0, 0x6D, 0xA0, 0x03, 0x6A, -0xC0, 0xF0, 0x4B, 0xC0, 0x0F, 0x6A, 0xC0, 0xF0, -0x4C, 0xC0, 0x01, 0x6A, 0x6C, 0xEA, 0x28, 0x6B, -0x6D, 0xEA, 0xC0, 0xF0, 0x4D, 0xC0, 0x07, 0x6A, -0xC0, 0xF0, 0x4E, 0xC0, 0xE3, 0xF3, 0x4A, 0xA0, -0x30, 0xF0, 0x20, 0x69, 0x00, 0x6C, 0x03, 0x4A, -0xE3, 0xF3, 0x46, 0xC0, 0x0C, 0x6A, 0xE3, 0xF3, -0x47, 0xC0, 0x40, 0xF4, 0x5C, 0x99, 0xA4, 0x67, -0x40, 0xEA, 0x40, 0xF4, 0x5C, 0x99, 0x01, 0x6C, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x24, 0xF3, 0x60, 0xAA, 0x01, 0x4B, 0x24, 0xF3, +0x60, 0xCA, 0xC3, 0xF3, 0x4B, 0xA2, 0x02, 0x22, +0x08, 0x72, 0x06, 0x61, 0x00, 0x18, 0x12, 0xCC, +0x01, 0x72, 0x02, 0x61, 0x00, 0x18, 0xA5, 0xCB, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, +0x66, 0xF1, 0x11, 0x4A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF5, 0x78, 0xA2, 0x01, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x4F, 0xCC, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x66, 0xF1, 0x13, 0x4A, +0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0x67, 0xCB, 0xF5, +0x9A, 0xA3, 0x02, 0x6B, 0xFF, 0x6A, 0x8C, 0xEB, +0x4C, 0xED, 0x4C, 0xEB, 0x4C, 0xE9, 0x08, 0xD5, +0x02, 0x6A, 0x75, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0xE7, 0xF3, 0x43, 0xA2, 0x2E, 0xEA, 0x5F, 0x22, +0x00, 0x6A, 0x7D, 0x67, 0x30, 0xF0, 0x20, 0x6C, +0x05, 0xD2, 0x58, 0xC3, 0x48, 0xCB, 0xE7, 0xF3, +0x42, 0xA4, 0x27, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0xE7, 0xF3, 0x41, 0xA3, 0x22, 0x2A, 0x30, 0xF0, +0x20, 0x6C, 0xE7, 0xF3, 0x40, 0xA4, 0x1D, 0x2A, +0x30, 0xF0, 0x21, 0x68, 0x70, 0xF1, 0x08, 0x48, +0x90, 0x67, 0x05, 0x05, 0x80, 0x18, 0xCA, 0x52, +0x90, 0x67, 0x04, 0x05, 0x80, 0x18, 0xB8, 0x52, +0x7D, 0x67, 0x50, 0xA3, 0x30, 0xF0, 0x20, 0x6C, +0xE7, 0xF3, 0x42, 0xC4, 0x54, 0xA3, 0x75, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0x4D, 0xEB, 0xE7, 0xF3, +0x61, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xE7, 0xF3, +0x40, 0xC3, 0x03, 0x21, 0x01, 0x71, 0x12, 0x60, +0x26, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE7, 0xF3, +0xA1, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x21, 0x6C, 0xE7, 0xF3, 0xC2, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x70, 0xF1, 0x08, 0x4C, 0xE7, 0xF3, +0xE0, 0xA2, 0x13, 0x10, 0x30, 0xF0, 0x21, 0x68, +0x70, 0xF1, 0x08, 0x48, 0x90, 0x67, 0x80, 0x18, +0x5E, 0x51, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, 0x40, 0xEA, +0xF1, 0x17, 0x01, 0x6D, 0x90, 0x67, 0xC5, 0x67, +0xE5, 0x67, 0x80, 0x18, 0xC5, 0x56, 0x30, 0xF0, +0x20, 0x6A, 0xE7, 0xF3, 0x23, 0xC2, 0x08, 0x94, +0x00, 0x6A, 0x0D, 0x24, 0x30, 0xF0, 0x20, 0x6B, +0xE7, 0xF3, 0x42, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0xE7, 0xF3, 0x41, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0xE7, 0xF3, 0x40, 0xC3, 0x00, 0x6A, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xF2, 0x48, 0x98, +0x30, 0xF0, 0x20, 0x6C, 0xCB, 0xF5, 0x18, 0x4C, +0x00, 0x6D, 0x80, 0x6E, 0x40, 0xEA, 0x80, 0xF2, +0x48, 0x98, 0x30, 0xF0, 0x20, 0x6C, 0x88, 0x6E, +0x0C, 0xF5, 0x04, 0x4C, 0x00, 0x6D, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x40, 0xEA, +0x00, 0x18, 0x77, 0xC8, 0x02, 0x6A, 0xC0, 0xF0, +0x46, 0xC0, 0x01, 0x6A, 0xC3, 0xF3, 0x52, 0xC0, +0xC3, 0xF3, 0x53, 0xC0, 0x0C, 0x6A, 0xC3, 0xF3, +0x54, 0xC0, 0x00, 0x6C, 0x06, 0x6A, 0xC3, 0xF3, +0x5C, 0xC8, 0xA4, 0x67, 0x00, 0x18, 0x30, 0xC5, +0x02, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0x30, 0xC5, +0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0x30, 0xC5, +0x30, 0xF0, 0x20, 0x6C, 0xEB, 0xF5, 0x0A, 0x4C, +0x00, 0x6D, 0x00, 0x18, 0x21, 0xE3, 0xC0, 0xF0, +0x6D, 0xA0, 0x03, 0x6A, 0xC0, 0xF0, 0x4B, 0xC0, +0x0F, 0x6A, 0xC0, 0xF0, 0x4C, 0xC0, 0x01, 0x6A, +0x6C, 0xEA, 0x28, 0x6B, 0x6D, 0xEA, 0xC0, 0xF0, +0x4D, 0xC0, 0x07, 0x6A, 0xC0, 0xF0, 0x4E, 0xC0, +0xE3, 0xF3, 0x46, 0xA0, 0x30, 0xF0, 0x20, 0x69, +0x00, 0x6C, 0x03, 0x4A, 0xE3, 0xF3, 0x42, 0xC0, +0x0C, 0x6A, 0xE3, 0xF3, 0x43, 0xC0, 0x40, 0xF4, +0x5C, 0x99, 0xA4, 0x67, 0x40, 0xEA, 0x40, 0xF4, +0x5C, 0x99, 0x01, 0x6C, 0x00, 0x6D, 0x40, 0xEA, +0x40, 0xF4, 0x5C, 0x99, 0x02, 0x6C, 0x00, 0x6D, +0x40, 0xEA, 0x40, 0xF4, 0x5C, 0x99, 0x03, 0x6C, 0x00, 0x6D, 0x40, 0xEA, 0x40, 0xF4, 0x5C, 0x99, -0x02, 0x6C, 0x00, 0x6D, 0x40, 0xEA, 0x40, 0xF4, -0x5C, 0x99, 0x03, 0x6C, 0x00, 0x6D, 0x40, 0xEA, -0x40, 0xF4, 0x5C, 0x99, 0x04, 0x6C, 0x00, 0x6D, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x6C, 0x9A, 0xFC, 0x6A, 0x00, 0x6D, 0x80, 0xA3, -0xC5, 0x67, 0x00, 0x69, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0xFF, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF3, 0x60, 0xA0, 0x83, 0xF1, 0x44, 0x9A, -0xA3, 0xF3, 0x38, 0xC0, 0xFF, 0x6C, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x70, 0x9A, -0x08, 0x6D, 0xAB, 0xED, 0x40, 0xA3, 0x80, 0xF6, -0x10, 0x6E, 0x8C, 0xEA, 0xAC, 0xEA, 0x05, 0x6D, -0xAD, 0xEA, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x40, 0xC3, 0xEA, 0xF2, 0x18, 0x4C, 0x00, 0x6D, -0x00, 0x18, 0xD0, 0xD3, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x54, 0x9A, 0x4B, 0x6B, 0x60, 0xC2, -0x0C, 0x6A, 0x43, 0xF4, 0x48, 0xC0, 0xC3, 0xF3, -0x4F, 0xC0, 0x43, 0xF4, 0x29, 0xC0, 0x43, 0xF4, -0x2B, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x6A, 0xF2, 0xAC, 0xA3, 0x04, 0x6B, 0xFF, 0x6A, -0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x06, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x58, 0x9A, -0x00, 0x6B, 0x60, 0xC2, 0x02, 0x6D, 0x00, 0x18, -0xD3, 0xD9, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x5C, 0x9A, 0x04, 0x69, 0x30, 0xF0, 0x20, 0x68, -0x20, 0xDA, 0xA6, 0xF6, 0x00, 0x48, 0xC0, 0xF0, -0xCD, 0xA0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x48, 0x9A, 0xFF, 0x6C, 0x59, 0x4C, 0x00, 0x6D, -0xC6, 0x36, 0x40, 0xEA, 0xC3, 0xF3, 0x4C, 0xA0, -0x07, 0x97, 0x4D, 0xE9, 0xC3, 0xF3, 0x2C, 0xC0, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0xAC, 0xEA, 0x29, 0x22, 0x05, 0x5C, 0x1D, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x42, 0xF3, -0x0C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6C, 0x83, 0xF2, -0xA0, 0x9A, 0x0D, 0x10, 0x04, 0x6C, 0x0F, 0x6D, -0x0A, 0x10, 0x04, 0x6C, 0xF0, 0x6D, 0x07, 0x10, -0x04, 0x6C, 0x01, 0xF7, 0x00, 0x6D, 0x03, 0x10, -0x04, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x80, 0x18, -0xA8, 0x57, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x6C, 0x9A, 0xFF, 0x6C, 0x07, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x25, 0x10, 0x05, 0x5C, -0x1D, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, -0x62, 0xF3, 0x00, 0x4A, 0x89, 0xE2, 0x40, 0x9A, -0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6C, -0x83, 0xF2, 0xA0, 0x9A, 0x0D, 0x10, 0x04, 0x6C, -0x0F, 0x6D, 0x0A, 0x10, 0x04, 0x6C, 0xF0, 0x6D, -0x07, 0x10, 0x04, 0x6C, 0x01, 0xF7, 0x00, 0x6D, -0x03, 0x10, 0x04, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0xD9, 0x57, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x6C, 0x9A, 0xFC, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x27, 0x22, -0x05, 0x5C, 0x4B, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0x62, 0xF3, 0x14, 0x4A, 0x89, 0xE2, -0x40, 0x9A, 0x00, 0xEA, 0x00, 0x6C, 0x08, 0x6D, -0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, -0xC3, 0xF1, 0xBC, 0x9A, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0x6C, 0x83, 0xF2, 0xA4, 0x9A, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, -0x83, 0xF2, 0xA8, 0x9A, 0x05, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF2, 0xAC, 0x9A, 0x04, 0x6C, -0x80, 0x18, 0xA8, 0x57, 0x26, 0x10, 0x05, 0x5C, -0x24, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, -0x82, 0xF3, 0x08, 0x4A, 0x89, 0xE2, 0x40, 0x9A, -0x00, 0xEA, 0x00, 0x6C, 0x08, 0x6D, 0x17, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0xC3, 0xF1, -0xBC, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0x6C, 0x83, 0xF2, 0xA4, 0x9A, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0x83, 0xF2, -0xA8, 0x9A, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0xAC, 0x9A, 0x04, 0x6C, 0x80, 0x18, -0xD9, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x83, 0xF2, -0x70, 0x9B, 0x4C, 0xEC, 0x04, 0xD4, 0x20, 0xA3, -0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6C, 0x4C, 0xE9, -0xA0, 0xF2, 0x50, 0x98, 0xA4, 0x67, 0x2D, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x5C, 0x9A, 0x40, 0xEA, 0x06, 0x2A, 0xA0, 0xF2, -0x50, 0x98, 0xFF, 0x6C, 0xB1, 0x67, 0x2D, 0x6E, -0x0C, 0x10, 0x04, 0x94, 0x01, 0x6D, 0x00, 0x18, -0x4D, 0xCC, 0x00, 0x18, 0x05, 0xE0, 0x07, 0x2A, -0xA0, 0xF2, 0x50, 0x98, 0xFF, 0x6C, 0xB1, 0x67, -0x5B, 0x6E, 0x40, 0xEA, 0x04, 0x10, 0x01, 0x6C, -0x00, 0x6D, 0x00, 0x18, 0x17, 0xC5, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x25, 0x67, 0x30, 0xF0, 0x20, 0x6D, 0xA6, 0xF6, -0x00, 0x4D, 0x06, 0x67, 0xC3, 0xF3, 0xCD, 0xA5, -0x03, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, -0x4C, 0xEC, 0x4C, 0xE9, 0x4C, 0xE8, 0xE0, 0xF0, -0x06, 0x2B, 0xC3, 0xF3, 0x4F, 0xA5, 0x8E, 0xEA, -0xE0, 0xF0, 0x01, 0x22, 0x0D, 0x5C, 0xC0, 0xF0, -0x1E, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, -0x82, 0xF3, 0x1C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, -0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, -0x4F, 0xA2, 0x0E, 0x72, 0x03, 0x61, 0x90, 0x67, -0x00, 0x18, 0x36, 0xC8, 0x30, 0xF0, 0x20, 0x6A, -0x6A, 0xF2, 0x4F, 0xA2, 0x04, 0x2A, 0x01, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0x0B, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, 0x06, 0x72, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x7F, 0xC5, -0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, -0x04, 0x72, 0x09, 0x61, 0x05, 0x21, 0x91, 0x67, -0xB0, 0x67, 0x00, 0x18, 0x93, 0xCF, 0x03, 0x10, -0x90, 0x67, 0x00, 0x18, 0x72, 0xC5, 0x30, 0xF0, -0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, 0x08, 0x72, -0xA0, 0xF0, 0x05, 0x61, 0x80, 0x18, 0x00, 0x40, -0xA2, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, -0x4F, 0xA2, 0x04, 0x2A, 0x01, 0x6C, 0xB0, 0x67, -0x00, 0x18, 0x0B, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0x6A, 0xF2, 0x4F, 0xA2, 0x06, 0x72, 0x03, 0x61, -0x90, 0x67, 0x00, 0x18, 0x7F, 0xC5, 0x30, 0xF0, -0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, 0x0E, 0x72, -0x07, 0x61, 0x00, 0x18, 0x64, 0xC5, 0x01, 0x72, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x36, 0xC8, -0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, -0x0C, 0x72, 0x7D, 0x61, 0x00, 0x18, 0x64, 0xC5, -0x01, 0x72, 0x79, 0x61, 0x90, 0x67, 0x00, 0x18, -0xA1, 0xC5, 0x75, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x6A, 0xF2, 0x4F, 0xA2, 0x0E, 0x72, 0x07, 0x61, -0x00, 0x18, 0x64, 0xC5, 0x01, 0x72, 0x03, 0x61, -0x90, 0x67, 0x00, 0x18, 0x36, 0xC8, 0x30, 0xF0, -0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, 0x06, 0x72, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x7F, 0xC5, -0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, -0x0C, 0x72, 0x07, 0x61, 0x00, 0x18, 0x64, 0xC5, -0x01, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, -0xA1, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, -0x4F, 0xA2, 0x04, 0x72, 0x4C, 0x61, 0x00, 0x18, -0xF4, 0xC7, 0x01, 0x72, 0x48, 0x61, 0x90, 0x67, -0x00, 0x18, 0x78, 0xCC, 0x44, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, 0x0E, 0x72, -0x07, 0x61, 0x00, 0x18, 0x64, 0xC5, 0x01, 0x72, -0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x36, 0xC8, -0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, -0x06, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, -0x7F, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, -0x4F, 0xA2, 0x0C, 0x72, 0x07, 0x61, 0x00, 0x18, -0x64, 0xC5, 0x01, 0x72, 0x03, 0x61, 0x90, 0x67, -0x00, 0x18, 0xA1, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0x6A, 0xF2, 0x4F, 0xA2, 0x04, 0x2A, 0x01, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0x0B, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, 0x04, 0x72, -0x12, 0x61, 0x00, 0x18, 0xC0, 0xC5, 0x0F, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xC3, 0xF3, 0x6F, 0xA2, 0x0C, 0x73, 0x07, 0x61, -0xC3, 0xF3, 0x6C, 0xA2, 0x20, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x80, 0x18, 0x0A, 0x40, 0x07, 0x97, +0x04, 0x6C, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF1, 0x64, 0x9A, 0xFC, 0x6A, +0x00, 0x6D, 0x80, 0xA3, 0x63, 0x6E, 0x00, 0x69, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x7C, 0xA0, +0xA4, 0xF0, 0x58, 0x9A, 0xA3, 0xF3, 0x34, 0xC0, +0xFF, 0x6C, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF1, 0x68, 0x9A, 0x08, 0x6D, 0xAB, 0xED, +0x40, 0xA3, 0x80, 0xF6, 0x10, 0x6E, 0x8C, 0xEA, +0xAC, 0xEA, 0x05, 0x6D, 0xAD, 0xEA, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x40, 0xC3, 0x6B, 0xF6, +0x04, 0x4C, 0x00, 0x6D, 0x00, 0x18, 0xC5, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, 0x48, 0x9A, +0x20, 0x6B, 0x60, 0xC2, 0x0C, 0x6A, 0x43, 0xF4, +0x44, 0xC0, 0xC3, 0xF3, 0x4B, 0xC0, 0x43, 0xF4, +0x25, 0xC0, 0x43, 0xF4, 0x27, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xED, 0x00, 0x6C, -0x4C, 0xE9, 0x04, 0xD5, 0x00, 0x18, 0xB2, 0xD6, -0x02, 0x67, 0x00, 0x18, 0xC7, 0xC7, 0x2D, 0x22, -0x16, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF4, -0x04, 0x4A, 0x63, 0xA2, 0x84, 0x9A, 0xA6, 0x9A, -0x01, 0x4B, 0x63, 0xC2, 0x93, 0xE0, 0xE0, 0xF3, -0x08, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x05, 0xDA, 0x12, 0xEB, 0xAD, 0xE3, 0x66, 0xDA, -0x80, 0x18, 0x0A, 0x40, 0x44, 0x10, 0x80, 0x18, -0x00, 0x40, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF4, -0x04, 0x4A, 0x85, 0x9A, 0xE0, 0xF3, 0x08, 0x6B, -0xA7, 0x9A, 0x93, 0xE0, 0x7B, 0xEC, 0x01, 0x2B, -0xE5, 0xE8, 0x04, 0xDA, 0x12, 0xEB, 0xAD, 0xE3, -0x67, 0xDA, 0x62, 0xA2, 0x01, 0x4B, 0x62, 0xC2, -0x2E, 0x10, 0x01, 0x71, 0x19, 0x61, 0x04, 0x96, -0x04, 0x6C, 0x01, 0x6D, 0x00, 0x18, 0x94, 0xCC, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF4, 0x04, 0x4A, -0x85, 0x9A, 0xE0, 0xF3, 0x08, 0x6B, 0xA7, 0x9A, -0x93, 0xE0, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x04, 0xDA, 0x12, 0xEB, 0xAD, 0xE3, 0x67, 0xDA, -0x64, 0xA2, 0x01, 0x4B, 0x64, 0xC2, 0x13, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF4, 0x04, 0x4A, -0x84, 0x9A, 0xE0, 0xF3, 0x08, 0x6B, 0xA6, 0x9A, -0x93, 0xE0, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x05, 0xDA, 0x12, 0xEB, 0xAD, 0xE3, 0x66, 0xDA, -0x65, 0xA2, 0x01, 0x4B, 0x65, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF4, 0x04, 0x4A, 0x66, 0x9A, -0x06, 0x23, 0x87, 0x9A, 0x7B, 0xEC, 0x01, 0x2B, -0xE5, 0xE8, 0x12, 0xEB, 0x63, 0xDA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF4, 0x04, 0x4A, -0x61, 0xA2, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0xC0, 0xF0, 0x32, 0xA0, 0x01, 0x4B, -0x61, 0xC2, 0x36, 0x31, 0x00, 0x18, 0xC7, 0xC7, -0x08, 0x22, 0x00, 0x18, 0xE2, 0xC7, 0x02, 0x22, -0x08, 0x6A, 0x01, 0x10, 0x0C, 0x6A, 0x43, 0xF4, -0x48, 0xC0, 0x00, 0x6C, 0x00, 0x18, 0x90, 0xC8, -0x00, 0x18, 0x4F, 0xC8, 0x00, 0x18, 0xE2, 0xC7, -0x08, 0x22, 0x91, 0x67, 0x00, 0x18, 0x58, 0xC8, -0x00, 0x6C, 0xB1, 0x67, 0x00, 0x18, 0x14, 0xCD, -0x07, 0x10, 0x01, 0x6C, 0xB1, 0x67, 0x00, 0x18, -0x14, 0xCD, 0x09, 0x6C, 0x00, 0x18, 0xAC, 0xDF, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x04, 0x67, -0x00, 0x6C, 0x2C, 0xE8, 0xAC, 0xE9, 0x00, 0x18, -0xB2, 0xD6, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF4, -0x04, 0x4B, 0xA8, 0x9B, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF2, 0x94, 0x9C, 0xB7, 0xE2, 0xA3, 0xEC, -0x01, 0x60, 0x48, 0xDB, 0x00, 0x18, 0xE2, 0xC7, -0x29, 0x22, 0x90, 0x67, 0x00, 0x18, 0xE6, 0xC7, -0x25, 0x22, 0x00, 0x18, 0x1B, 0xC8, 0x22, 0x22, -0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, 0x76, 0xC8, -0x1D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x43, 0xF4, 0x95, 0xA2, 0x43, 0xF4, -0x76, 0xA2, 0x63, 0xEC, 0x6F, 0xE4, 0x01, 0x60, -0x00, 0x6B, 0x43, 0xF4, 0x75, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xEA, 0xF2, 0x55, 0xA2, 0x0A, 0x2A, -0x90, 0x67, 0x00, 0x18, 0x58, 0xC8, 0x01, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0x14, 0xCD, 0x01, 0x6C, -0x00, 0x18, 0x90, 0xC8, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF4, 0x04, 0x4A, 0x67, 0xA2, 0x01, 0x4B, -0x67, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x43, 0xF4, 0x97, 0xA2, 0xC0, 0xF0, -0xB2, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x43, 0xF4, 0x77, 0xC2, 0x00, 0x6C, 0xB6, 0x35, -0x00, 0x18, 0x14, 0xCD, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0xC0, 0xF0, 0xA4, 0xA3, 0x04, 0x67, -0x7F, 0x6C, 0xAC, 0xEC, 0xFF, 0x6A, 0x01, 0x74, -0x4C, 0xE8, 0x20, 0x61, 0xC0, 0xF0, 0xA5, 0xA3, -0x10, 0x6C, 0x8B, 0xEC, 0xAC, 0xEC, 0x4C, 0xEC, -0x11, 0x24, 0xD0, 0x67, 0x0C, 0x6C, 0x00, 0x6D, -0x00, 0x18, 0x94, 0xCC, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xFF, 0x6C, -0xC5, 0x67, 0x40, 0xEA, 0x90, 0x67, 0x00, 0x18, -0x05, 0xCC, 0x08, 0x10, 0xC3, 0xF3, 0x4F, 0xA3, -0x05, 0x2A, 0x04, 0x6C, 0x01, 0x6D, 0xD0, 0x67, -0x00, 0x18, 0x94, 0xCC, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xA3, 0xCD, -0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, 0x63, 0xCB, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x24, 0xF3, 0xBE, 0xAB, 0xFF, 0x6A, 0x4C, 0xEC, +0x01, 0x4D, 0x24, 0xF3, 0xBE, 0xCB, 0xC3, 0xF3, +0xA8, 0xA3, 0x04, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, +0x06, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x4C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x02, 0x6D, +0x00, 0x18, 0xF0, 0xDE, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF1, 0x50, 0x9A, 0x04, 0x69, 0x30, 0xF0, +0x20, 0x68, 0x20, 0xDA, 0x08, 0xF2, 0x10, 0x48, +0xC0, 0xF0, 0xCD, 0xA0, 0x00, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, +0xC6, 0x36, 0x10, 0xF0, 0x23, 0x6C, 0x01, 0x6F, +0xA2, 0xF4, 0x01, 0x4C, 0x00, 0x6D, 0xC4, 0x36, +0x40, 0xEA, 0xC0, 0xF0, 0xCD, 0xA0, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, +0x59, 0x4C, 0x00, 0x6D, 0xC6, 0x36, 0x40, 0xEA, +0xC3, 0xF3, 0x48, 0xA0, 0x09, 0x97, 0x4D, 0xE9, +0xC3, 0xF3, 0x28, 0xC0, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x29, 0x22, +0x05, 0x5C, 0x1D, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0x42, 0xF1, 0x04, 0x4A, 0x89, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0x6C, 0xA4, 0xF1, 0xB4, 0x9A, 0x0D, 0x10, +0x04, 0x6C, 0x0F, 0x6D, 0x0A, 0x10, 0x04, 0x6C, +0xF0, 0x6D, 0x07, 0x10, 0x04, 0x6C, 0x01, 0xF7, +0x00, 0x6D, 0x03, 0x10, 0x04, 0x6C, 0x1E, 0xF0, +0x00, 0x6D, 0x80, 0x18, 0xEE, 0x5C, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF1, 0x64, 0x9A, 0xFF, 0x6C, +0x07, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x25, 0x10, 0x05, 0x5C, 0x1D, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x88, 0x34, 0x42, 0xF1, 0x18, 0x4A, +0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0x6C, 0xA4, 0xF1, 0xB4, 0x9A, +0x0D, 0x10, 0x04, 0x6C, 0x0F, 0x6D, 0x0A, 0x10, +0x04, 0x6C, 0xF0, 0x6D, 0x07, 0x10, 0x04, 0x6C, +0x01, 0xF7, 0x00, 0x6D, 0x03, 0x10, 0x04, 0x6C, +0x1E, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x1F, 0x5D, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, 0x64, 0x9A, +0xFC, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x4C, 0xEC, 0x04, 0xD4, 0xC3, 0xF3, -0x91, 0xA0, 0x10, 0x6B, 0x8D, 0xEB, 0xE0, 0xF0, -0x80, 0xA0, 0xC3, 0xF3, 0x71, 0xC0, 0x01, 0x6B, -0x8C, 0xEB, 0x4C, 0xEB, 0x26, 0x23, 0xE0, 0xF0, -0x42, 0xA0, 0xFF, 0x72, 0x2C, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x58, 0x9A, 0x00, 0x6B, -0x30, 0xF0, 0x20, 0x69, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x5C, 0x9A, 0x04, 0x6B, -0xFF, 0x6C, 0x60, 0xC2, 0x00, 0xF3, 0x48, 0x99, -0x59, 0x4C, 0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, -0xE0, 0xF0, 0xC2, 0xA0, 0x00, 0xF3, 0x48, 0x99, -0xFF, 0x6C, 0x55, 0x4C, 0x00, 0x6D, 0x06, 0x4E, -0x40, 0xEA, 0x04, 0x94, 0x00, 0x18, 0xBD, 0xDC, -0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x48, 0x9A, 0xC3, 0xF3, 0xD8, 0xA0, 0xFF, 0x6C, -0x55, 0x4C, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, 0x04, 0x6B, -0x6C, 0xEA, 0x05, 0x2A, 0x04, 0x96, 0x83, 0x67, -0x01, 0x6D, 0x00, 0x18, 0x94, 0xCC, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x69, -0xA6, 0xF6, 0x00, 0x49, 0x04, 0xD4, 0xC0, 0xF0, -0x84, 0xA1, 0x00, 0x6B, 0xC3, 0xF3, 0x7D, 0xC1, -0x7F, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x14, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, -0xE0, 0xF0, 0x88, 0xA1, 0x01, 0x68, 0x40, 0xEA, -0x4E, 0xE8, 0x0A, 0x28, 0x04, 0x94, 0xC3, 0xF3, -0xB6, 0xA1, 0x00, 0x18, 0x93, 0xDE, 0x04, 0x94, -0xC3, 0xF3, 0x17, 0xC1, 0x00, 0x18, 0xC4, 0xCD, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0xC0, 0xF0, 0x64, 0xA0, -0x00, 0x6A, 0xC3, 0xF3, 0x5D, 0xC0, 0x7F, 0x6A, -0xFF, 0x69, 0x6C, 0xEA, 0x2C, 0xEC, 0x2C, 0xEA, -0x04, 0xD4, 0x18, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, -0x40, 0xEA, 0x01, 0x72, 0x0F, 0x61, 0xC0, 0xF0, -0x65, 0xA0, 0x0F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, -0x06, 0x22, 0xC3, 0xF3, 0x6D, 0xA0, 0x10, 0x6A, -0x6C, 0xEA, 0x2C, 0xEA, 0x03, 0x2A, 0x04, 0x94, -0x00, 0x18, 0xC4, 0xCD, 0x09, 0x97, 0x08, 0x91, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0xAC, 0xEA, 0x27, 0x22, 0x05, 0x5C, 0x4B, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x62, 0xF1, +0x0C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x00, 0x6C, 0x08, 0x6D, 0x17, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x6C, 0x04, 0xF1, 0xB0, 0x9A, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, +0xA4, 0xF1, 0xB8, 0x9A, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x6C, 0xA4, 0xF1, 0xBC, 0x9A, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, +0xA0, 0x9A, 0x04, 0x6C, 0x80, 0x18, 0xEE, 0x5C, +0x26, 0x10, 0x05, 0x5C, 0x24, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x88, 0x34, 0x82, 0xF1, 0x00, 0x4A, +0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x00, 0x6C, +0x08, 0x6D, 0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0x6C, 0x04, 0xF1, 0xB0, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0xA4, 0xF1, +0xB8, 0x9A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0x6C, 0xA4, 0xF1, 0xBC, 0x9A, 0x05, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0xA0, 0x9A, +0x04, 0x6C, 0x80, 0x18, 0x1F, 0x5D, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x4C, 0xEC, 0x08, 0xF2, 0x10, 0x4B, +0x04, 0xD4, 0x04, 0xF3, 0x9C, 0xAB, 0x30, 0xF0, +0x20, 0x68, 0x2D, 0x6E, 0x01, 0x4C, 0x04, 0xF3, +0x9C, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, +0x64, 0x9B, 0xFF, 0x6C, 0xA4, 0x67, 0x20, 0xA3, +0x4C, 0xE9, 0xA0, 0xF2, 0x50, 0x98, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, +0x40, 0xEA, 0x06, 0x2A, 0xA0, 0xF2, 0x50, 0x98, +0xFF, 0x6C, 0xB1, 0x67, 0x2D, 0x6E, 0x0C, 0x10, +0x04, 0x94, 0x01, 0x6D, 0x00, 0x18, 0x62, 0xCD, +0x00, 0x18, 0x36, 0xE5, 0x07, 0x2A, 0xA0, 0xF2, +0x50, 0x98, 0xFF, 0x6C, 0xB1, 0x67, 0x5B, 0x6E, +0x40, 0xEA, 0x04, 0x10, 0x01, 0x6C, 0x00, 0x6D, +0x00, 0x18, 0x30, 0xC5, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x69, 0x8C, 0xE9, 0x30, 0xF0, 0x20, 0x68, -0x91, 0x67, 0xA6, 0xF6, 0x00, 0x48, 0x00, 0x18, -0x05, 0xCC, 0xC3, 0xF3, 0x4F, 0xA0, 0x0C, 0x72, -0x21, 0x60, 0xD1, 0x67, 0x0C, 0x6C, 0x00, 0x6D, -0x00, 0x18, 0x94, 0xCC, 0x00, 0x6C, 0xA4, 0x67, -0x00, 0x18, 0x63, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6D, 0xC5, 0x67, -0xFF, 0x6C, 0x40, 0xEA, 0xC3, 0xF3, 0x6D, 0xA0, -0x01, 0x6A, 0xA0, 0xF0, 0x8A, 0xA0, 0x6D, 0xEA, -0xC3, 0xF3, 0x4D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF4, 0x50, 0x9A, 0x00, 0x6D, 0x08, 0x6E, -0xF1, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, +0x25, 0x67, 0x30, 0xF0, 0x20, 0x6D, 0x08, 0xF2, +0x10, 0x4D, 0x06, 0x67, 0xC3, 0xF3, 0xC9, 0xA5, +0x03, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x4C, 0xE9, 0x4C, 0xE8, 0x00, 0xF1, +0x0C, 0x2B, 0xC3, 0xF3, 0x4B, 0xA5, 0x8E, 0xEA, +0x00, 0xF1, 0x07, 0x22, 0x0D, 0x5C, 0x00, 0xF1, +0x04, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, +0x82, 0xF1, 0x14, 0x4A, 0x89, 0xE2, 0x40, 0x9A, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, +0x5B, 0xA2, 0x0E, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x00, 0xC9, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF5, 0x5B, 0xA2, 0x04, 0x2A, 0x01, 0x6C, +0xB0, 0x67, 0x00, 0x18, 0xF1, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, 0x06, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xD2, 0xC5, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, +0x04, 0x72, 0x09, 0x61, 0x05, 0x21, 0x91, 0x67, +0xB0, 0x67, 0x00, 0x18, 0xFC, 0xD0, 0x03, 0x10, +0x90, 0x67, 0x00, 0x18, 0xC1, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, 0x08, 0x72, +0xC0, 0xF0, 0x0B, 0x61, 0x80, 0x18, 0x16, 0x40, +0xC8, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, +0x5B, 0xA2, 0x04, 0x2A, 0x01, 0x6C, 0xB0, 0x67, +0x00, 0x18, 0xF1, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF5, 0x5B, 0xA2, 0x06, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xD2, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, 0x0E, 0x72, +0x07, 0x61, 0x00, 0x18, 0x9D, 0xC5, 0x01, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0x00, 0xC9, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, +0x0C, 0x72, 0xA0, 0xF0, 0x02, 0x61, 0x00, 0x18, +0x9D, 0xC5, 0x01, 0x72, 0x80, 0xF0, 0x1D, 0x61, +0x90, 0x67, 0x00, 0x18, 0xFB, 0xC5, 0x99, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, +0x0E, 0x72, 0x07, 0x61, 0x00, 0x18, 0x9D, 0xC5, +0x01, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, +0x00, 0xC9, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, +0x5B, 0xA2, 0x06, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0xD2, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF5, 0x5B, 0xA2, 0x0C, 0x72, 0x07, 0x61, +0x00, 0x18, 0x9D, 0xC5, 0x01, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xFB, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, 0x04, 0x72, +0x70, 0x61, 0x00, 0x18, 0x9F, 0xC8, 0x01, 0x72, +0x6C, 0x61, 0x90, 0x67, 0x00, 0x18, 0x8D, 0xCD, +0x68, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, +0x5B, 0xA2, 0x0E, 0x72, 0x07, 0x61, 0x00, 0x18, +0x9D, 0xC5, 0x01, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0x00, 0xC9, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF5, 0x5B, 0xA2, 0x06, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0xD2, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, 0x0C, 0x72, +0x07, 0x61, 0x00, 0x18, 0x9D, 0xC5, 0x01, 0x72, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xFB, 0xC5, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, +0x04, 0x2A, 0x01, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0xF1, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, +0x5B, 0xA2, 0x04, 0x72, 0x36, 0x61, 0x00, 0x18, +0x20, 0xC6, 0x33, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF5, 0x5B, 0xA2, 0x0E, 0x72, 0x03, 0x61, +0x90, 0x67, 0x00, 0x18, 0x00, 0xC9, 0x30, 0xF0, +0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, 0x04, 0x2A, +0x01, 0x6C, 0xB0, 0x67, 0x00, 0x18, 0xF1, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, 0x5B, 0xA2, +0x06, 0x72, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, +0xD2, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, +0x5B, 0xA2, 0x04, 0x72, 0x03, 0x61, 0x90, 0x67, +0x00, 0x18, 0xC1, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, 0x6B, 0xA2, +0x0C, 0x73, 0x07, 0x61, 0xC3, 0xF3, 0x68, 0xA2, +0x20, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, +0x20, 0x40, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x24, 0x67, +0x4C, 0xED, 0x00, 0x6C, 0x4C, 0xE9, 0x04, 0xD5, +0x00, 0x18, 0xA8, 0xDB, 0x02, 0x67, 0x00, 0x18, +0x6E, 0xC5, 0x2D, 0x22, 0x16, 0x29, 0x30, 0xF0, +0x20, 0x6A, 0xA7, 0xF3, 0x1C, 0x4A, 0x63, 0xA2, +0x84, 0x9A, 0xA6, 0x9A, 0x01, 0x4B, 0x63, 0xC2, +0x93, 0xE0, 0xE0, 0xF3, 0x08, 0x6B, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x05, 0xDA, 0x12, 0xEB, +0xAD, 0xE3, 0x66, 0xDA, 0x80, 0x18, 0x20, 0x40, +0x44, 0x10, 0x80, 0x18, 0x16, 0x40, 0x30, 0xF0, +0x20, 0x6A, 0xA7, 0xF3, 0x1C, 0x4A, 0x85, 0x9A, +0xE0, 0xF3, 0x08, 0x6B, 0xA7, 0x9A, 0x93, 0xE0, +0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x04, 0xDA, +0x12, 0xEB, 0xAD, 0xE3, 0x67, 0xDA, 0x62, 0xA2, +0x01, 0x4B, 0x62, 0xC2, 0x2E, 0x10, 0x01, 0x71, +0x19, 0x61, 0x04, 0x96, 0x04, 0x6C, 0x01, 0x6D, +0x00, 0x18, 0xAE, 0xCD, 0x30, 0xF0, 0x20, 0x6A, +0xA7, 0xF3, 0x1C, 0x4A, 0x85, 0x9A, 0xE0, 0xF3, +0x08, 0x6B, 0xA7, 0x9A, 0x93, 0xE0, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x04, 0xDA, 0x12, 0xEB, +0xAD, 0xE3, 0x67, 0xDA, 0x64, 0xA2, 0x01, 0x4B, +0x64, 0xC2, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA7, 0xF3, 0x1C, 0x4A, 0x84, 0x9A, 0xE0, 0xF3, +0x08, 0x6B, 0xA6, 0x9A, 0x93, 0xE0, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x05, 0xDA, 0x12, 0xEB, +0xAD, 0xE3, 0x66, 0xDA, 0x65, 0xA2, 0x01, 0x4B, +0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF3, +0x1C, 0x4A, 0x66, 0x9A, 0x06, 0x23, 0x87, 0x9A, +0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x12, 0xEB, +0x63, 0xDA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xA7, 0xF3, 0x1C, 0x4A, 0x61, 0xA2, 0x30, 0xF0, +0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, 0xC0, 0xF0, +0x12, 0xA1, 0x01, 0x4B, 0x61, 0xC2, 0x16, 0x30, +0x00, 0x18, 0x6E, 0xC5, 0x08, 0x22, 0x00, 0x18, +0x8D, 0xC8, 0x02, 0x22, 0x08, 0x6A, 0x01, 0x10, +0x0C, 0x6A, 0x43, 0xF4, 0x44, 0xC1, 0x00, 0x6C, +0x00, 0x18, 0x70, 0xC9, 0x00, 0x18, 0x1E, 0xC9, +0x00, 0x18, 0x8D, 0xC8, 0x18, 0x22, 0x90, 0x67, +0x00, 0x18, 0x27, 0xC9, 0x00, 0x6C, 0xB0, 0x67, +0x00, 0x18, 0x41, 0xCE, 0x30, 0xF0, 0x20, 0x6A, +0xE8, 0xF2, 0x62, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x11, 0x22, 0x90, 0x67, 0x00, 0x18, 0xDA, 0xE1, +0x90, 0x67, 0x00, 0x18, 0xE1, 0xE1, 0x90, 0x67, +0x00, 0x18, 0xD0, 0xE1, 0x07, 0x10, 0x01, 0x6C, +0xB0, 0x67, 0x00, 0x18, 0x41, 0xCE, 0x09, 0x6C, +0x00, 0x18, 0xDD, 0xE4, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0xC0, 0xF0, 0xC4, 0xA3, -0x7F, 0x6D, 0xFF, 0x6A, 0xCC, 0xED, 0x01, 0x75, -0x4C, 0xEC, 0x16, 0x61, 0xC3, 0xF3, 0xD1, 0xA3, -0x01, 0x6D, 0xCD, 0xED, 0xC3, 0xF3, 0xB1, 0xC3, -0xC0, 0xF0, 0xA5, 0xA3, 0x10, 0x6B, 0x6B, 0xEB, -0xAC, 0xEB, 0x4C, 0xEB, 0x20, 0x73, 0x06, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x40, 0x9A, -0x40, 0xEA, 0x02, 0x10, 0x00, 0x18, 0x20, 0xCE, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x68, 0x24, 0x67, 0x00, 0x6C, 0x0C, 0xE9, +0xAC, 0xE8, 0x00, 0x18, 0xA8, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA7, 0xF3, 0x1C, 0x4B, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF1, 0x88, 0x9C, +0xB7, 0xE2, 0xA3, 0xEC, 0x01, 0x60, 0x48, 0xDB, +0x00, 0x18, 0x8D, 0xC8, 0x79, 0x22, 0x91, 0x67, +0x00, 0x18, 0x91, 0xC8, 0x75, 0x22, 0x00, 0x18, +0xE5, 0xC8, 0x72, 0x22, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x18, 0x56, 0xC9, 0x6D, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, +0x92, 0xA2, 0x04, 0x6B, 0x8C, 0xEB, 0x27, 0x23, +0x00, 0xF1, 0x98, 0xA2, 0x08, 0x6B, 0x8C, 0xEB, +0xFF, 0x6C, 0x8C, 0xEB, 0x20, 0x23, 0xA4, 0xF3, +0x74, 0x9A, 0x02, 0x73, 0x04, 0x61, 0x91, 0x67, +0x00, 0x18, 0x27, 0xC9, 0x55, 0x10, 0x01, 0x6C, +0x8E, 0xEB, 0x15, 0x2B, 0x43, 0xF4, 0x92, 0xA2, +0xA4, 0xF3, 0xB8, 0x9A, 0x83, 0xED, 0x04, 0x61, +0x93, 0xE5, 0xA4, 0xF3, 0x98, 0xDA, 0x02, 0x10, +0xA4, 0xF3, 0x78, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA4, 0xF3, 0x78, 0x9A, +0x02, 0x2B, 0x43, 0xF4, 0x71, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x43, 0xF4, +0x91, 0xA2, 0x43, 0xF4, 0x72, 0xA2, 0x63, 0xEC, +0x6F, 0xE4, 0x01, 0x60, 0x00, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x43, 0xF4, 0x71, 0xC2, 0x08, 0xF2, +0x10, 0x48, 0x43, 0xF4, 0x51, 0xA0, 0x28, 0x2A, +0x91, 0x67, 0x00, 0x18, 0x27, 0xC9, 0x01, 0x6C, +0xB1, 0x67, 0x00, 0x18, 0x41, 0xCE, 0xA4, 0xF3, +0x54, 0x98, 0x01, 0x72, 0x1A, 0x61, 0xA4, 0xF3, +0x58, 0x98, 0x17, 0x2A, 0x02, 0x6B, 0xA4, 0xF3, +0x74, 0xD8, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0x00, 0x6D, 0x10, 0xF0, +0x31, 0x6C, 0x0C, 0xF4, 0x1D, 0x4C, 0xC5, 0x67, +0x01, 0x6F, 0x40, 0xEA, 0x43, 0xF4, 0x73, 0xA0, +0x01, 0x6A, 0x6D, 0xEA, 0x43, 0xF4, 0x53, 0xC0, +0x03, 0x10, 0x01, 0x6C, 0x00, 0x18, 0x70, 0xC9, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF3, 0x1C, 0x4A, +0x67, 0xA2, 0x01, 0x4B, 0x67, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x43, 0xF4, +0x93, 0xA2, 0xC0, 0xF0, 0xB2, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x43, 0xF4, 0x73, 0xC2, +0x00, 0x6C, 0xB6, 0x35, 0x00, 0x18, 0x41, 0xCE, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0xC0, 0xF0, +0xA4, 0xA3, 0x04, 0x67, 0x7F, 0x6C, 0xAC, 0xEC, +0xFF, 0x6A, 0x01, 0x74, 0x4C, 0xE8, 0x20, 0x61, +0xC0, 0xF0, 0xA5, 0xA3, 0x10, 0x6C, 0x8B, 0xEC, +0xAC, 0xEC, 0x4C, 0xEC, 0x11, 0x24, 0xD0, 0x67, +0x0C, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0xAE, 0xCD, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0xFF, 0x6C, 0x00, 0x6D, 0x6B, 0x6E, 0x40, 0xEA, +0x90, 0x67, 0x00, 0x18, 0x0E, 0xCD, 0x08, 0x10, +0xC3, 0xF3, 0x4B, 0xA3, 0x05, 0x2A, 0x04, 0x6C, +0x01, 0x6D, 0xD0, 0x67, 0x00, 0x18, 0xAE, 0xCD, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6E, 0x8C, 0xEE, 0xEA, 0xF2, 0x88, 0xA2, -0x01, 0x6D, 0x00, 0x18, 0x94, 0xCC, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x24, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, 0xC3, 0xF3, -0xAC, 0xA4, 0x40, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, -0x4C, 0xEB, 0x4C, 0xE9, 0x09, 0x23, 0xC3, 0xF3, -0x8D, 0xA4, 0x10, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, -0x03, 0x23, 0x91, 0x67, 0x00, 0x18, 0xBD, 0xDC, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0xC3, 0xF3, 0x6C, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, -0x10, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, -0xC3, 0xF3, 0x6C, 0xC0, 0xC3, 0xF3, 0x71, 0xA0, -0x6C, 0xEA, 0xC3, 0xF3, 0x51, 0xC0, 0xC3, 0xF3, -0x51, 0xA0, 0x07, 0x6B, 0x6C, 0xEA, 0x65, 0x2A, -0x61, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0x98, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x60, 0xAC, -0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, 0x60, 0xCC, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x88, 0x9B, -0x60, 0xAC, 0x4C, 0xEB, 0x01, 0x4B, 0x4C, 0xEB, -0x60, 0xCC, 0xE4, 0xF2, 0x5C, 0x98, 0xC3, 0xF3, -0x71, 0xA0, 0x01, 0x4A, 0xE4, 0xF2, 0x5C, 0xD8, -0xC3, 0xF3, 0x59, 0xA0, 0x01, 0x4A, 0xC3, 0xF3, -0x59, 0xC0, 0x11, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xC3, 0xF3, 0x51, 0xC0, 0xC3, 0xF3, 0x79, 0xA0, -0xC0, 0xF0, 0x4B, 0xA0, 0x63, 0xEA, 0x36, 0x60, +0x08, 0xF2, 0x10, 0x4A, 0x24, 0xF3, 0x74, 0xAA, +0x01, 0x4B, 0x24, 0xF3, 0x74, 0xCA, 0xFF, 0x6A, +0x4C, 0xEC, 0x00, 0x18, 0x00, 0xCF, 0x00, 0x6C, +0xA4, 0x67, 0x00, 0x18, 0x6C, 0xCC, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x4C, 0xEC, +0x04, 0xD4, 0xC3, 0xF3, 0x8D, 0xA0, 0x10, 0x6B, +0x8D, 0xEB, 0xE0, 0xF0, 0x80, 0xA0, 0xC3, 0xF3, +0x6D, 0xC0, 0x01, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, +0x26, 0x23, 0xE0, 0xF0, 0x42, 0xA0, 0xFF, 0x72, +0x2C, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x4C, 0x9A, 0x00, 0x6B, 0x30, 0xF0, 0x20, 0x69, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x50, 0x9A, 0x04, 0x6B, 0xFF, 0x6C, 0x60, 0xC2, +0x00, 0xF3, 0x48, 0x99, 0x59, 0x4C, 0x00, 0x6D, +0x06, 0x6E, 0x40, 0xEA, 0xE0, 0xF0, 0xC2, 0xA0, +0x00, 0xF3, 0x48, 0x99, 0xFF, 0x6C, 0x55, 0x4C, +0x00, 0x6D, 0x06, 0x4E, 0x40, 0xEA, 0x04, 0x94, +0x00, 0x18, 0xDA, 0xE1, 0x0A, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0xC3, 0xF3, +0xD4, 0xA0, 0xFF, 0x6C, 0x55, 0x4C, 0x00, 0x6D, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, +0x5B, 0xA2, 0x04, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x04, 0x96, 0x83, 0x67, 0x01, 0x6D, 0x00, 0x18, +0xAE, 0xCD, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, +0x04, 0xD4, 0xC0, 0xF0, 0x84, 0xA1, 0x00, 0x6B, +0xC3, 0xF3, 0x79, 0xC1, 0x7F, 0x6B, 0x8C, 0xEB, +0x4C, 0xEB, 0x14, 0x23, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA1, +0x01, 0x68, 0x40, 0xEA, 0x4E, 0xE8, 0x0A, 0x28, +0x04, 0x94, 0xC3, 0xF3, 0xB2, 0xA1, 0x00, 0x18, +0xC4, 0xE3, 0x04, 0x94, 0xC3, 0xF3, 0x13, 0xC1, +0x00, 0x18, 0x25, 0xCF, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xC0, 0xF0, 0x64, 0xA0, 0x00, 0x6A, 0xC3, 0xF3, +0x59, 0xC0, 0x7F, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, +0x2C, 0xEC, 0x2C, 0xEA, 0x04, 0xD4, 0x18, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, -0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x01, 0x6B, -0x6E, 0xEA, 0x2F, 0x2A, 0xC0, 0xF0, 0x85, 0xA0, -0xEF, 0x4B, 0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, -0x07, 0x2B, 0xC3, 0xF3, 0x6C, 0xA0, 0xDF, 0x4A, -0x6C, 0xEA, 0xC3, 0xF3, 0x4C, 0xC0, 0x21, 0x10, -0xC3, 0xF3, 0x7A, 0xA0, 0x01, 0x4B, 0xC3, 0xF3, -0x7A, 0xC0, 0xC3, 0xF3, 0x7A, 0xA0, 0x02, 0x5B, -0x0A, 0x61, 0xC3, 0xF3, 0x8C, 0xA0, 0x21, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xC3, 0xF3, 0x6C, 0xC0, -0xC3, 0xF3, 0x5A, 0xC0, 0x03, 0x10, 0x91, 0x67, -0x00, 0x18, 0x20, 0xCE, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x00, 0x6B, 0xC3, 0xF3, -0x79, 0xC2, 0x03, 0x10, 0x91, 0x67, 0x00, 0x18, -0x50, 0xCE, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, +0x0F, 0x61, 0xC0, 0xF0, 0x65, 0xA0, 0x0F, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x06, 0x22, 0xC3, 0xF3, +0x69, 0xA0, 0x10, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x03, 0x2A, 0x04, 0x94, 0x00, 0x18, 0x25, 0xCF, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, +0x30, 0xF0, 0x20, 0x68, 0x91, 0x67, 0x08, 0xF2, +0x10, 0x48, 0x00, 0x18, 0x0E, 0xCD, 0xC3, 0xF3, +0x4B, 0xA0, 0x0C, 0x72, 0x21, 0x60, 0xD1, 0x67, +0x0C, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0xAE, 0xCD, +0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, 0x6C, 0xCC, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0xFF, 0x6C, 0x00, 0x6D, 0x6A, 0x6E, 0x40, 0xEA, +0xC3, 0xF3, 0x69, 0xA0, 0x01, 0x6A, 0xA0, 0xF0, +0x8A, 0xA0, 0x6D, 0xEA, 0xC3, 0xF3, 0x49, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x50, 0x9A, +0x00, 0x6D, 0x08, 0x6E, 0xF1, 0x67, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0xC0, 0xF0, 0xC4, 0xA3, 0x7F, 0x6D, 0xFF, 0x6A, +0xCC, 0xED, 0x01, 0x75, 0x4C, 0xEC, 0x1B, 0x61, +0xC3, 0xF3, 0xCD, 0xA3, 0x01, 0x6D, 0xCD, 0xED, +0xC0, 0xF0, 0xC5, 0xA3, 0xC3, 0xF3, 0xAD, 0xC3, +0x10, 0x6D, 0xAB, 0xED, 0xCC, 0xED, 0x4C, 0xED, +0x20, 0x75, 0x06, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF4, 0x40, 0x9A, 0x40, 0xEA, 0x07, 0x10, +0x24, 0xF3, 0x58, 0xAB, 0x01, 0x4A, 0x24, 0xF3, +0x58, 0xCB, 0x00, 0x18, 0x81, 0xCF, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6E, 0x8C, 0xEE, +0x4B, 0xF6, 0x94, 0xA2, 0x01, 0x6D, 0x00, 0x18, +0xAE, 0xCD, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x24, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF2, +0x10, 0x4C, 0xC3, 0xF3, 0xA8, 0xA4, 0x40, 0x6B, +0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xE9, +0x09, 0x23, 0xC3, 0xF3, 0x89, 0xA4, 0x10, 0x6B, +0x8C, 0xEB, 0x4C, 0xEB, 0x03, 0x23, 0x91, 0x67, +0x00, 0x18, 0xDA, 0xE1, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0xC3, 0xF3, 0x68, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x10, 0x22, 0x03, 0x6A, +0x4B, 0xEA, 0x4C, 0xEB, 0xC3, 0xF3, 0x68, 0xC0, +0xC3, 0xF3, 0x6D, 0xA0, 0x6C, 0xEA, 0xC3, 0xF3, +0x4D, 0xC0, 0xC3, 0xF3, 0x4D, 0xA0, 0x07, 0x6B, +0x6C, 0xEA, 0x6A, 0x2A, 0x66, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF1, 0x8C, 0x9A, 0xFF, 0xF7, +0x1F, 0x6A, 0x60, 0xAC, 0x4C, 0xEB, 0x01, 0x4B, +0x4C, 0xEB, 0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF0, 0x9C, 0x9B, 0x60, 0xAC, 0x4C, 0xEB, +0x01, 0x4B, 0x4C, 0xEB, 0x60, 0xCC, 0x24, 0xF3, +0x4C, 0xA8, 0xC3, 0xF3, 0x6D, 0xA0, 0x01, 0x4A, +0x24, 0xF3, 0x4C, 0xC8, 0xC3, 0xF3, 0x55, 0xA0, +0x01, 0x4A, 0xC3, 0xF3, 0x55, 0xC0, 0x11, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, +0xC3, 0xF3, 0x75, 0xA0, 0xC0, 0xF0, 0x4B, 0xA0, +0x63, 0xEA, 0x3B, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, +0x40, 0xEA, 0x01, 0x6B, 0x6E, 0xEA, 0x34, 0x2A, +0xC0, 0xF0, 0x85, 0xA0, 0xEF, 0x4B, 0x8C, 0xEB, +0xFF, 0x6C, 0x8C, 0xEB, 0x07, 0x2B, 0xC3, 0xF3, +0x68, 0xA0, 0xDF, 0x4A, 0x6C, 0xEA, 0xC3, 0xF3, +0x48, 0xC0, 0x26, 0x10, 0xC3, 0xF3, 0x76, 0xA0, +0x01, 0x4B, 0xC3, 0xF3, 0x76, 0xC0, 0xC3, 0xF3, +0x76, 0xA0, 0x02, 0x5B, 0x0A, 0x61, 0xC3, 0xF3, +0x88, 0xA0, 0x21, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xC3, 0xF3, 0x68, 0xC0, 0xC3, 0xF3, 0x56, 0xC0, +0x08, 0x10, 0x24, 0xF3, 0x5A, 0xA8, 0x91, 0x67, +0x01, 0x4A, 0x24, 0xF3, 0x5A, 0xC8, 0x00, 0x18, +0x81, 0xCF, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x00, 0x6B, 0xC3, 0xF3, 0x75, 0xC2, +0x03, 0x10, 0x91, 0x67, 0x00, 0x18, 0xB3, 0xCF, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF4, 0x64, 0x9A, 0xC2, 0xF4, 0x04, 0x4A, +0xA2, 0xF2, 0x7C, 0x9A, 0xA2, 0xF2, 0x1C, 0x4A, 0xFF, 0x69, 0x04, 0xD3, 0x61, 0x9A, 0x44, 0xAA, 0x8C, 0xE9, 0x05, 0xD3, 0x7D, 0x67, 0x4C, 0xCB, 0x24, 0x32, 0x49, 0xE3, 0x68, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x0B, 0x2A, 0x7D, 0x67, 0x24, 0x32, 0x49, 0xE3, 0x68, 0xAA, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x5C, 0x9A, 0x49, 0xE3, 0x40, 0xAA, -0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x40, 0x9A, 0x4D, 0xE3, 0x40, 0xAB, 0xFF, 0xF7, +0x84, 0xF0, 0x50, 0x9A, 0x49, 0xE3, 0x40, 0xAA, +0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x54, 0x9A, 0x4D, 0xE3, 0x40, 0xAB, 0xFF, 0xF7, 0x1F, 0x68, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xEB, 0xF1, 0x70, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0xAC, 0xF5, 0x78, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0xE7, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x18, 0xF0, 0x00, 0x6A, 0x0C, 0xEA, 0x13, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0xC3, 0xF3, 0x91, 0xA3, 0xFE, 0x4A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0xC3, 0xF3, 0x8D, 0xA3, 0xFE, 0x4A, 0x8C, 0xEA, 0x05, 0x6C, 0x8B, 0xEC, 0x8C, 0xEA, 0x02, 0x4C, -0x8C, 0xEA, 0xC3, 0xF3, 0x51, 0xC3, 0x91, 0x67, -0x00, 0x18, 0x50, 0xCE, 0x69, 0x10, 0x08, 0xF0, +0x8C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC3, 0x91, 0x67, +0x00, 0x18, 0xB3, 0xCF, 0x69, 0x10, 0x08, 0xF0, 0x00, 0x6A, 0x0C, 0xEA, 0x2F, 0x22, 0x02, 0x32, 0x5E, 0x32, 0x07, 0x2A, 0x04, 0x6C, 0x00, 0x18, -0xAC, 0xDF, 0x91, 0x67, 0x00, 0x18, 0x3C, 0xCE, -0x33, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF0, -0x84, 0x9A, 0x83, 0xF2, 0x7C, 0x9B, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF2, 0x80, 0x9C, +0xDD, 0xE4, 0x91, 0x67, 0x00, 0x18, 0x9D, 0xCF, +0x33, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF0, +0x84, 0x9A, 0xC4, 0xF1, 0x70, 0x9B, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF1, 0x94, 0x9C, 0x8E, 0xEB, 0x09, 0x2B, 0xC0, 0xF0, 0x65, 0xA2, 0x10, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x10, 0x72, 0x19, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC3, 0xF3, -0x91, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, -0x71, 0xC2, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0xC3, 0xF3, 0x91, 0xA3, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, +0x8D, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, +0x6D, 0xC2, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0xC3, 0xF3, 0x8D, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x05, 0x6C, -0x8B, 0xEC, 0x8C, 0xEA, 0xC3, 0xF3, 0x51, 0xC3, +0x8B, 0xEC, 0x8C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC3, 0x02, 0x30, 0x1E, 0x30, 0x1A, 0x20, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0xC3, 0xF3, -0x51, 0xA0, 0x02, 0x69, 0xC0, 0xF0, 0xCC, 0xA0, -0x2D, 0xEA, 0xC3, 0xF3, 0x51, 0xC0, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0xC3, 0xF3, +0x4D, 0xA0, 0x02, 0x69, 0xC0, 0xF0, 0xCC, 0xA0, +0x2D, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, 0x55, 0x4C, 0x00, 0x6D, 0x40, 0xEA, 0xC3, 0xF3, -0x4C, 0xA0, 0x4D, 0xE9, 0xC3, 0xF3, 0x2C, 0xC0, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xC3, 0xF3, 0x91, 0xA2, 0x03, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xC3, 0xF3, 0x71, 0xC2, +0x48, 0xA0, 0x4D, 0xE9, 0xC3, 0xF3, 0x28, 0xC0, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xC3, 0xF3, 0x8D, 0xA2, 0x03, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xC3, 0xF3, 0x6D, 0xC2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xA2, 0xF4, 0x78, 0x9A, 0xA2, 0xF4, 0x18, 0x4A, +0xA2, 0xF2, 0x70, 0x9A, 0xA2, 0xF2, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x68, 0x04, 0xD3, 0x61, 0x9A, 0x44, 0xAA, 0xFF, 0x69, 0x05, 0xD3, 0x7D, 0x67, -0x4C, 0xCB, 0xA6, 0xF6, 0x00, 0x48, 0x30, 0xF0, +0x4C, 0xCB, 0x08, 0xF2, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE9, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, -0xE0, 0xF0, 0x17, 0x61, 0xC0, 0xF0, 0x64, 0xA0, +0xE0, 0xF0, 0x1C, 0x61, 0xC0, 0xF0, 0x64, 0xA0, 0x7F, 0x6A, 0xFF, 0x6C, 0x6C, 0xEA, 0x8C, 0xEA, -0xE0, 0xF0, 0x0F, 0x22, 0x44, 0xF3, 0x70, 0xA0, +0xE0, 0xF0, 0x14, 0x22, 0xA4, 0xF3, 0x68, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x8C, 0xEA, 0x04, 0x22, -0x02, 0x6A, 0x6D, 0xEA, 0x44, 0xF3, 0x50, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, 0x65, 0xA2, +0x02, 0x6A, 0x6D, 0xEA, 0xA4, 0xF3, 0x48, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0xC8, 0xF2, 0x75, 0xA2, 0x0F, 0x6A, 0x6C, 0xEA, 0x01, 0x72, 0x3C, 0x61, 0x24, 0x32, 0xBD, 0x67, 0x49, 0xE5, 0x68, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x0B, 0x2A, 0x7D, 0x67, 0x24, 0x32, 0x49, 0xE3, 0x68, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, 0x49, 0xE3, +0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, 0x49, 0xE3, 0x60, 0x9A, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x40, 0x9A, 0x4D, 0xE3, 0x60, 0x9B, +0x84, 0xF0, 0x54, 0x9A, 0x4D, 0xE3, 0x60, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF6, 0x62, 0x34, -0xA6, 0xF6, 0x00, 0x4A, 0x62, 0x33, 0xC3, 0xF3, -0x97, 0xC2, 0x62, 0x33, 0xFF, 0x6C, 0x8C, 0xEB, -0x02, 0x23, 0xC3, 0xF3, 0x76, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC3, 0xF3, -0x77, 0xA2, 0x02, 0x2B, 0xC3, 0xF3, 0x76, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, 0x77, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0xA4, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x00, 0x6B, 0xC3, 0xF3, 0x79, 0xC0, 0xC3, 0xF3, -0x7A, 0xC0, 0x80, 0xAD, 0xFF, 0xF7, 0x1F, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x62, 0x33, 0xC3, 0xF3, +0x93, 0xC2, 0x62, 0x33, 0xFF, 0x6C, 0x8C, 0xEB, +0x02, 0x23, 0xC3, 0xF3, 0x72, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, +0x73, 0xA2, 0x02, 0x2B, 0xC3, 0xF3, 0x72, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xEB, 0xF5, 0x63, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0xB8, 0x9A, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x00, 0x6B, 0xC3, 0xF3, 0x75, 0xC0, 0xC3, 0xF3, +0x76, 0xC0, 0x80, 0xAD, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0x01, 0x4C, 0x4C, 0xEC, 0x80, 0xCD, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF2, 0xA8, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF1, 0xBC, 0x9C, 0x80, 0xAD, 0x4C, 0xEC, 0x01, 0x4C, 0x4C, 0xEC, -0x80, 0xCD, 0xE4, 0xF2, 0x58, 0x98, 0x11, 0x6C, -0x8B, 0xEC, 0x01, 0x4A, 0xE4, 0xF2, 0x58, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x4C, 0x9A, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x5C, 0x9A, 0x02, 0x6B, 0x60, 0xC2, 0xC3, 0xF3, -0x71, 0xA0, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x8C, 0xEA, 0x91, 0x67, 0xC3, 0xF3, 0x51, 0xC0, -0x00, 0x18, 0xA5, 0xCE, 0xC3, 0xF3, 0x6C, 0xA0, -0x40, 0x6A, 0x6C, 0xEA, 0x55, 0x22, 0xC3, 0xF3, -0x8D, 0xA0, 0x10, 0x6B, 0xFF, 0x6D, 0x44, 0x67, -0x6C, 0xEA, 0xAC, 0xEA, 0x22, 0x2A, 0xC3, 0xF3, -0x57, 0xA0, 0xC3, 0xF3, 0xB6, 0xA0, 0xAE, 0xEA, -0x47, 0x2A, 0x8D, 0xEB, 0x91, 0x67, 0xC3, 0xF3, -0x6D, 0xC0, 0x00, 0x18, 0x93, 0xDE, 0x91, 0x67, -0x00, 0x18, 0x8D, 0xDC, 0x00, 0x18, 0xE2, 0xC7, -0x06, 0x2A, 0x91, 0x67, 0x00, 0x18, 0xC4, 0xDC, -0x91, 0x67, 0x00, 0x18, 0xBD, 0xDC, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC3, 0xF3, -0x77, 0xA2, 0xFF, 0x4B, 0xC3, 0xF3, 0x77, 0xC2, -0x2B, 0x10, 0xC0, 0xF0, 0x65, 0xA0, 0x0F, 0x6A, -0x6C, 0xEA, 0x01, 0x72, 0x25, 0x61, 0xC3, 0xF3, -0x57, 0xA0, 0x08, 0xD2, 0x08, 0x93, 0xC3, 0xF3, -0x56, 0xA0, 0x6E, 0xEA, 0x1D, 0x22, 0x91, 0x67, -0x00, 0x18, 0x88, 0xDE, 0x08, 0x94, 0x8E, 0xEA, -0x17, 0x22, 0xC3, 0xF3, 0x6C, 0xA0, 0x20, 0x6A, -0xFF, 0x6D, 0x6C, 0xEA, 0xAC, 0xEA, 0x10, 0x22, -0xC3, 0xF3, 0x6D, 0xA0, 0x11, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x91, 0x67, 0xC3, 0xF3, 0x4D, 0xC0, -0x00, 0x18, 0xB3, 0xDC, 0x91, 0x67, 0x00, 0x18, -0x9E, 0xDC, 0x91, 0x67, 0x00, 0x18, 0x97, 0xDC, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xC3, 0xF3, 0x8C, 0xA2, 0x01, 0x6B, 0xC3, 0xF3, -0x7D, 0xC2, 0x20, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, -0x6C, 0xC2, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, -0x07, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, -0xAC, 0xE9, 0x50, 0x24, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, -0x40, 0xEA, 0x01, 0x72, 0x43, 0x61, 0xC3, 0xF3, -0x6D, 0xA0, 0x05, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xC3, 0xF3, 0x4D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x2B, 0x6E, 0xFF, 0x6C, -0x0F, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF4, 0x5C, 0x9A, 0x91, 0x67, 0x02, 0x6D, -0x40, 0xEA, 0x43, 0xF4, 0x4B, 0xA0, 0x01, 0x6E, -0x01, 0x2A, 0x08, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF4, 0x50, 0x9A, 0xA0, 0xF0, 0x8A, 0xA0, -0x00, 0x6D, 0xF1, 0x67, 0x40, 0xEA, 0x01, 0x72, -0x0B, 0x61, 0xC3, 0xF3, 0x6D, 0xA0, 0x01, 0x6A, -0x01, 0x6C, 0x6D, 0xEA, 0x06, 0x6D, 0xC3, 0xF3, -0x4D, 0xC0, 0x00, 0x18, 0x17, 0xC5, 0x0E, 0x10, -0x43, 0xF4, 0x4B, 0xA0, 0x0B, 0x22, 0x06, 0x6D, -0x01, 0x6C, 0x00, 0x18, 0x17, 0xC5, 0x91, 0x67, -0x00, 0x18, 0x50, 0xCE, 0x00, 0x6C, 0x02, 0x6D, -0x00, 0x18, 0x28, 0xC8, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x80, 0xCD, 0x24, 0xF3, 0x4A, 0xA8, 0x11, 0x6C, +0x8B, 0xEC, 0x01, 0x4A, 0x24, 0xF3, 0x4A, 0xC8, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x40, 0x9A, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x50, 0x9A, 0x02, 0x6B, 0x60, 0xC2, 0xC3, 0xF3, +0x6D, 0xA0, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x8C, 0xEA, 0x91, 0x67, 0xC3, 0xF3, 0x4D, 0xC0, +0x00, 0x18, 0x0B, 0xD0, 0xC3, 0xF3, 0x68, 0xA0, +0x40, 0x6A, 0x6C, 0xEA, 0x5A, 0x22, 0xC3, 0xF3, +0x89, 0xA0, 0x10, 0x6B, 0xFF, 0x6D, 0x44, 0x67, +0x6C, 0xEA, 0xAC, 0xEA, 0x27, 0x2A, 0xC3, 0xF3, +0xB3, 0xA0, 0xC3, 0xF3, 0x52, 0xA0, 0xAE, 0xEA, +0x4C, 0x2A, 0x8D, 0xEB, 0x91, 0x67, 0xC3, 0xF3, +0x69, 0xC0, 0x00, 0x18, 0xD0, 0xE1, 0xC3, 0xF3, +0xB2, 0xA0, 0x91, 0x67, 0x00, 0x18, 0xC4, 0xE3, +0x91, 0x67, 0x00, 0x18, 0xAA, 0xE1, 0x00, 0x18, +0x8D, 0xC8, 0x06, 0x2A, 0x91, 0x67, 0x00, 0x18, +0xE1, 0xE1, 0x91, 0x67, 0x00, 0x18, 0xDA, 0xE1, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC3, 0xF3, 0x73, 0xA2, 0xFF, 0x4B, 0xC3, 0xF3, +0x73, 0xC2, 0x2B, 0x10, 0xC0, 0xF0, 0x65, 0xA0, +0x0F, 0x6A, 0x6C, 0xEA, 0x01, 0x72, 0x25, 0x61, +0xC3, 0xF3, 0x53, 0xA0, 0x08, 0xD2, 0x08, 0x93, +0xC3, 0xF3, 0x52, 0xA0, 0x6E, 0xEA, 0x1D, 0x22, +0x91, 0x67, 0x00, 0x18, 0xB9, 0xE3, 0x08, 0x94, +0x8E, 0xEA, 0x17, 0x22, 0xC3, 0xF3, 0x68, 0xA0, +0x20, 0x6A, 0xFF, 0x6D, 0x6C, 0xEA, 0xAC, 0xEA, +0x10, 0x22, 0xC3, 0xF3, 0x69, 0xA0, 0x11, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x91, 0x67, 0xC3, 0xF3, +0x49, 0xC0, 0x00, 0x18, 0xD0, 0xE1, 0x91, 0x67, +0x00, 0x18, 0xBB, 0xE1, 0x91, 0x67, 0x00, 0x18, +0xB4, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xC3, 0xF3, 0x88, 0xA2, 0x01, 0x6B, +0xC3, 0xF3, 0x79, 0xC2, 0x20, 0x6B, 0x8D, 0xEB, +0xC3, 0xF3, 0x68, 0xC2, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0xA6, 0xF6, -0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE9, +0xFF, 0x69, 0x2C, 0xEC, 0xAC, 0xE9, 0x5F, 0x24, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, +0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, +0x52, 0x61, 0x04, 0xF3, 0x56, 0xA8, 0xC3, 0xF3, +0x69, 0xA0, 0x2B, 0x6E, 0x01, 0x4A, 0x04, 0xF3, +0x56, 0xC8, 0x05, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xC3, 0xF3, 0x49, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0x0F, 0x6D, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x5C, 0x9A, 0x91, 0x67, 0x02, 0x6D, 0x40, 0xEA, +0x43, 0xF4, 0x47, 0xA0, 0x01, 0x6E, 0x01, 0x2A, +0x08, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x50, 0x9A, 0xA0, 0xF0, 0x8A, 0xA0, 0x00, 0x6D, +0xF1, 0x67, 0x40, 0xEA, 0x01, 0x72, 0x0B, 0x61, +0xC3, 0xF3, 0x69, 0xA0, 0x01, 0x6A, 0x01, 0x6C, +0x6D, 0xEA, 0x06, 0x6D, 0xC3, 0xF3, 0x49, 0xC0, +0x00, 0x18, 0x30, 0xC5, 0x18, 0x10, 0x43, 0xF4, +0x47, 0xA0, 0x0B, 0x22, 0x06, 0x6D, 0x01, 0x6C, +0x00, 0x18, 0x30, 0xC5, 0x91, 0x67, 0x00, 0x18, +0xB3, 0xCF, 0x00, 0x6C, 0x02, 0x6D, 0x00, 0x18, +0xF2, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x01, 0x6B, 0x44, 0xF3, 0x6E, 0xCA, +0x08, 0x6B, 0x44, 0xF3, 0x6C, 0xCA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0x08, 0xF2, +0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xE9, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x12, 0x61, 0xC3, 0xF3, -0x6C, 0xA0, 0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xC3, 0xF3, 0x4C, 0xC0, 0xC3, 0xF3, 0x4F, 0xA0, +0x68, 0xA0, 0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xC3, 0xF3, 0x48, 0xC0, 0xC3, 0xF3, 0x4B, 0xA0, 0x04, 0x6B, 0x6C, 0xEA, 0x0C, 0x2A, 0x83, 0x67, -0x01, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0x94, 0xCC, -0x06, 0x10, 0xC3, 0xF3, 0x6C, 0xA0, 0x20, 0x6A, -0x6D, 0xEA, 0xC3, 0xF3, 0x4C, 0xC0, 0x07, 0x97, +0x01, 0x6D, 0xD1, 0x67, 0x00, 0x18, 0xAE, 0xCD, +0x06, 0x10, 0xC3, 0xF3, 0x68, 0xA0, 0x20, 0x6A, +0x6D, 0xEA, 0xC3, 0xF3, 0x48, 0xC0, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0x91, 0x67, -0x01, 0x6D, 0x00, 0x18, 0x20, 0xCC, 0x91, 0x67, -0x01, 0x6D, 0x00, 0x18, 0x4D, 0xCC, 0x30, 0xF0, -0x20, 0x6A, 0x8A, 0xF2, 0x60, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF1, 0x44, 0x9A, 0x0C, 0xEB, +0x01, 0x6D, 0x00, 0x18, 0x35, 0xCD, 0x91, 0x67, +0x01, 0x6D, 0x00, 0x18, 0x62, 0xCD, 0x30, 0xF0, +0x20, 0x6A, 0xEB, 0xF5, 0x6C, 0xAA, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF0, 0x58, 0x9A, 0x0C, 0xEB, 0x08, 0x6C, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF2, 0x70, 0x9A, 0x8B, 0xEC, 0x40, 0xA3, +0x24, 0xF1, 0x68, 0x9A, 0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, 0x8C, 0xEA, 0x05, 0x6C, 0x8D, 0xEA, 0x0C, 0xEA, 0x91, 0x67, 0x40, 0xC3, 0x00, 0x18, -0xC2, 0xCF, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x32, 0xD1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, 0x69, 0x29, 0x90, 0x67, -0x00, 0x6D, 0x00, 0x18, 0x20, 0xCC, 0x90, 0x67, -0x00, 0x6D, 0x00, 0x18, 0x4D, 0xCC, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x4C, 0x9A, 0x02, 0x6B, -0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x5C, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x43, 0xF4, 0x6B, 0xA2, -0x08, 0x23, 0xC3, 0xF3, 0x4F, 0xA2, 0x0C, 0x72, +0x00, 0x6D, 0x00, 0x18, 0x35, 0xCD, 0x90, 0x67, +0x00, 0x6D, 0x00, 0x18, 0x62, 0xCD, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF1, 0x40, 0x9A, 0x02, 0x6B, +0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x50, 0x9A, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x43, 0xF4, 0x67, 0xA2, +0x08, 0x23, 0xC3, 0xF3, 0x4B, 0xA2, 0x0C, 0x72, 0x04, 0x61, 0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, -0x28, 0xC8, 0x30, 0xF0, 0x20, 0x69, 0xA6, 0xF6, -0x00, 0x49, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0xF2, 0xC8, 0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, +0x10, 0x49, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA1, 0x40, 0xEA, -0x19, 0x2A, 0xC3, 0xF3, 0x4F, 0xA1, 0x04, 0x6B, -0x6C, 0xEA, 0x02, 0x2A, 0x00, 0x18, 0xEF, 0xDF, -0x90, 0x67, 0x00, 0x18, 0x72, 0xC5, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0xC3, 0xF3, -0x8D, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, +0x19, 0x2A, 0xC3, 0xF3, 0x4B, 0xA1, 0x04, 0x6B, +0x6C, 0xEA, 0x02, 0x2A, 0x00, 0x18, 0x20, 0xE5, +0x90, 0x67, 0x00, 0x18, 0xC1, 0xC5, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0xC3, 0xF3, +0x89, 0xA3, 0x02, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x03, 0x6C, 0x8B, 0xEC, 0x8C, 0xEA, 0xC3, 0xF3, -0x4D, 0xC3, 0x05, 0x10, 0x0C, 0x6C, 0x01, 0x6D, -0xD0, 0x67, 0x00, 0x18, 0x94, 0xCC, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC3, 0xF3, -0x8C, 0xA2, 0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xC3, 0xF3, 0x6C, 0xC2, 0xE0, 0xF0, 0x60, 0xA2, +0x49, 0xC3, 0x05, 0x10, 0x0C, 0x6C, 0x01, 0x6D, +0xD0, 0x67, 0x00, 0x18, 0xAE, 0xCD, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, +0x88, 0xA2, 0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xC3, 0xF3, 0x68, 0xC2, 0xE0, 0xF0, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x12, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x58, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x5C, 0x9A, 0x04, 0x6B, 0x60, 0xC2, 0x05, 0x10, +0x20, 0x6A, 0xA4, 0xF1, 0x4C, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x50, 0x9A, 0x04, 0x6B, 0x60, 0xC2, 0x05, 0x10, 0x01, 0x71, 0x03, 0x61, 0x90, 0x67, 0x00, 0x18, -0xDA, 0xCF, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x4A, 0xD1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, -0x20, 0x68, 0x2C, 0xEC, 0xA6, 0xF6, 0x00, 0x48, -0x04, 0xD4, 0x00, 0x18, 0xAA, 0xCA, 0xC0, 0xF0, +0x20, 0x68, 0x2C, 0xEC, 0x08, 0xF2, 0x10, 0x48, +0x04, 0xD4, 0x00, 0x18, 0x8E, 0xCB, 0xC0, 0xF0, 0x84, 0xA0, 0x7F, 0x6A, 0x04, 0x95, 0x4C, 0xEC, -0x2C, 0xEC, 0x00, 0x18, 0xF1, 0xCF, 0xC0, 0xF0, +0x2C, 0xEC, 0x00, 0x18, 0x61, 0xD1, 0xC0, 0xF0, 0x44, 0xA0, 0x7F, 0x6B, 0x6C, 0xEA, 0x2C, 0xEA, 0x05, 0x2A, 0x00, 0x6C, 0x01, 0x6D, 0x00, 0x18, -0x63, 0xCB, 0x0B, 0x10, 0xC0, 0xF0, 0x45, 0xA0, +0x6C, 0xCC, 0x0B, 0x10, 0xC0, 0xF0, 0x45, 0xA0, 0x0F, 0x6C, 0xC0, 0xF0, 0xA6, 0xA0, 0x4C, 0xEC, -0x2C, 0xEC, 0x00, 0x18, 0x4D, 0xC5, 0x00, 0x18, -0x12, 0xDF, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x2C, 0xEC, 0x00, 0x18, 0x86, 0xC5, 0x00, 0x18, +0x43, 0xE4, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFF, 0x6B, 0x8C, 0xEB, 0x01, 0x73, 0x01, 0x6A, 0x0A, 0x60, 0x00, 0x6A, -0x08, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, -0x4F, 0xA2, 0x01, 0x6B, 0x4E, 0x32, 0x6E, 0xEA, +0x08, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, +0x5B, 0xA2, 0x01, 0x6B, 0x4E, 0x32, 0x6E, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, 0x01, 0x74, 0x12, 0x60, 0x07, 0x24, 0x30, 0xF0, -0x20, 0x6B, 0x6A, 0xF2, 0x6F, 0xA3, 0x08, 0x6C, +0x20, 0x6B, 0xCB, 0xF5, 0x7B, 0xA3, 0x08, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x50, 0x9A, 0x55, 0xE5, 0x60, 0xA5, +0xE4, 0xF1, 0x44, 0x9A, 0x55, 0xE5, 0x60, 0xA5, 0xEF, 0x6A, 0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x70, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, 0x64, 0x9B, 0x10, 0x6C, 0x75, 0xE5, 0x60, 0xA5, 0x4C, 0xEB, 0x8D, 0xEB, 0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x54, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, +0xE4, 0xF1, 0x48, 0x9A, 0xFF, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, 0x52, 0x32, 0x6C, 0xEA, 0x11, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x54, 0x9A, 0x46, 0xF7, 0x89, 0xA3, +0xA0, 0xF2, 0x54, 0x9A, 0xA8, 0xF2, 0x99, 0xA3, 0x00, 0x6D, 0x18, 0x6E, 0xE5, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, 0x2C, 0xED, 0x02, 0x5C, -0x04, 0xD4, 0x05, 0xD5, 0x4E, 0x60, 0x00, 0x18, -0x96, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, -0x78, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x80, 0xAB, 0xFF, 0xF7, 0x1F, 0x6B, +0x04, 0xD4, 0x05, 0xD5, 0x50, 0x60, 0x00, 0x18, +0x8B, 0xD8, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, +0x6C, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x80, 0xAB, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x4B, 0xE3, 0xA0, 0xF0, 0x6A, 0xA0, -0x2C, 0xEA, 0x6E, 0xEA, 0x3A, 0x2A, 0xC3, 0xF3, -0x4F, 0xA0, 0x0E, 0x72, 0x19, 0x61, 0x04, 0x92, -0x34, 0x2A, 0xC3, 0xF3, 0x6D, 0xA0, 0xFD, 0x4A, -0x05, 0x94, 0x6C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, +0x2C, 0xEA, 0x6E, 0xEA, 0x3C, 0x2A, 0xC3, 0xF3, +0x4B, 0xA0, 0x0E, 0x72, 0x1B, 0x61, 0x04, 0x92, +0x36, 0x2A, 0xC3, 0xF3, 0x69, 0xA0, 0xFD, 0x4A, +0x05, 0x94, 0x6C, 0xEA, 0xC3, 0xF3, 0x49, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, 0x00, 0x6D, 0x40, 0xEA, 0x01, 0x6C, 0x0C, 0x6D, -0x00, 0x18, 0x17, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x91, 0x67, 0x1A, 0x10, -0x06, 0x72, 0x1B, 0x61, 0x04, 0x92, 0x19, 0x22, -0xC3, 0xF3, 0x6D, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, 0x30, 0xF0, -0x20, 0x6A, 0x40, 0xF4, 0x5C, 0x9A, 0x05, 0x94, -0x01, 0x6D, 0x40, 0xEA, 0x04, 0x6A, 0xC3, 0xF3, -0x4F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0xFF, 0x6C, 0x00, 0x6D, 0xC5, 0x67, -0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD2, -0xA3, 0xF2, 0x74, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, -0x05, 0xD6, 0x60, 0xA3, 0x05, 0x67, 0x27, 0x67, -0x4C, 0xEB, 0x72, 0x33, 0x4C, 0xEB, 0x4C, 0xE8, -0x4C, 0xE9, 0x40, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x70, 0x9B, 0x00, 0x6C, 0xFF, 0x6D, -0x60, 0xA3, 0x26, 0x6E, 0x6C, 0xEA, 0x06, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x72, 0x1D, 0x61, +0x00, 0x18, 0x30, 0xC5, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0x91, 0x67, 0x00, 0x6D, +0x61, 0x6E, 0x1C, 0x10, 0x06, 0x72, 0x1B, 0x61, +0x04, 0x92, 0x19, 0x22, 0xC3, 0xF3, 0x69, 0xA0, +0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, +0x49, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x5C, 0x9A, 0x05, 0x94, 0x01, 0x6D, 0x40, 0xEA, +0x04, 0x6A, 0xC3, 0xF3, 0x4B, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, +0x00, 0x6D, 0x62, 0x6E, 0x40, 0xEA, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xD2, 0xE4, 0xF1, 0x68, 0x9B, +0xFF, 0x6A, 0x4C, 0xEE, 0x05, 0xD6, 0x60, 0xA3, +0x05, 0x67, 0x27, 0x67, 0x4C, 0xEB, 0x72, 0x33, +0x4C, 0xEB, 0x4C, 0xE8, 0x4C, 0xE9, 0x40, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, 0x64, 0x9B, +0x00, 0x6C, 0xFF, 0x6D, 0x60, 0xA3, 0x26, 0x6E, +0x6C, 0xEA, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, +0x01, 0x72, 0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0x94, 0x05, 0x96, 0xA0, 0xF2, 0x54, 0x9A, +0x04, 0x6F, 0x01, 0x6D, 0x40, 0xEA, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, 0x40, 0xF4, +0x58, 0x9A, 0xD1, 0x67, 0x90, 0x67, 0x40, 0xEA, +0x90, 0x67, 0x00, 0x18, 0xB7, 0xD1, 0x04, 0x94, +0xA2, 0x67, 0x00, 0x18, 0xD4, 0xE8, 0x04, 0x94, +0xB1, 0x67, 0x00, 0x18, 0xE3, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0x95, 0xA0, 0xF2, 0x50, 0x9A, +0x00, 0x6C, 0x27, 0x6E, 0x40, 0xEA, 0x90, 0x67, +0xB1, 0x67, 0x00, 0x18, 0xE0, 0xD1, 0x21, 0x10, +0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, 0xE0, 0xD1, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, 0x05, 0x96, 0xA0, 0xF2, 0x54, 0x9A, 0x04, 0x6F, 0x01, 0x6D, 0x40, 0xEA, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, 0x40, 0xF4, 0x58, 0x9A, 0xD1, 0x67, 0x90, 0x67, 0x40, 0xEA, 0x90, 0x67, 0x00, 0x18, -0x47, 0xD0, 0x04, 0x94, 0xA2, 0x67, 0x00, 0x18, -0xA3, 0xE3, 0x04, 0x94, 0xB1, 0x67, 0x00, 0x18, -0xB2, 0xE3, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x95, -0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6C, 0x27, 0x6E, -0x40, 0xEA, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, -0x70, 0xD0, 0x21, 0x10, 0x90, 0x67, 0xB1, 0x67, -0x00, 0x18, 0x70, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0x94, 0x05, 0x96, 0xA0, 0xF2, 0x54, 0x9A, -0x04, 0x6F, 0x01, 0x6D, 0x40, 0xEA, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, 0x40, 0xF4, -0x58, 0x9A, 0xD1, 0x67, 0x90, 0x67, 0x40, 0xEA, -0x90, 0x67, 0x00, 0x18, 0x47, 0xD0, 0x04, 0x94, -0xA2, 0x67, 0x00, 0x18, 0xA3, 0xE3, 0x04, 0x94, -0xB1, 0x67, 0x00, 0x18, 0xB2, 0xE3, 0x30, 0xF0, -0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF3, 0x80, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF3, 0x84, 0x9C, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF3, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF3, 0x8C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF1, 0x9C, 0x9C, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF3, 0x50, 0x9A, 0x01, 0x6B, 0x40, 0x9A, -0x80, 0xF5, 0x42, 0x32, 0x6E, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0xA4, 0x80, 0x18, 0x28, 0x09, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, -0x0E, 0x90, 0x24, 0x67, 0x4C, 0xE9, 0x03, 0x6B, -0x4C, 0xEF, 0x2C, 0xEB, 0x00, 0x6A, 0x0B, 0xD5, -0x0C, 0xD6, 0x04, 0xD7, 0x40, 0xC8, 0x00, 0x6A, -0x0A, 0x23, 0x28, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, 0x1F, 0xF7, -0x00, 0x6A, 0x2C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x49, 0xE1, -0x0B, 0x93, 0x40, 0x9A, 0x6C, 0xEA, 0x0C, 0x93, -0x6E, 0xEA, 0x04, 0x22, 0x40, 0xA8, 0x04, 0x93, -0x63, 0xEA, 0xDC, 0x61, 0x40, 0xA8, 0x04, 0x93, -0x63, 0xEA, 0x58, 0x67, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6A, 0xA0, 0x35, 0x4C, 0xEC, 0xA0, 0x35, -0xCC, 0xEA, 0x4D, 0xED, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF4, 0x5C, 0x9A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF4, 0x40, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x84, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x68, 0x9B, -0xAD, 0xEA, 0x40, 0xDC, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF4, 0x4C, 0x9A, 0x60, 0xDC, -0x00, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEA, -0xAC, 0xEB, 0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF4, 0x50, 0x9A, 0x60, 0x33, -0x60, 0x33, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF4, 0x44, 0x9A, 0x00, 0x6C, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF4, 0x54, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x6C, 0x9B, -0x40, 0xA2, 0x80, 0xC3, 0xFF, 0x6B, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, -0x78, 0x9B, 0xFF, 0x6A, 0xCC, 0xEA, 0x6D, 0xEA, -0xE0, 0xF1, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0x33, -0x60, 0x33, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x04, 0x9B, 0x01, 0x6C, 0x40, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x40, 0xEA, 0x00, 0x6A, 0x40, 0xD8, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xE0, 0xF1, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xAC, 0xEA, 0x43, 0xF4, 0x7C, 0x9B, 0x40, 0x32, -0x40, 0x32, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x04, 0x4B, 0x60, 0x9B, 0x30, 0xF0, -0x20, 0x68, 0x01, 0x6C, 0x40, 0xDB, 0x80, 0xF3, -0x4C, 0x98, 0xFF, 0x69, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF4, 0x54, 0x9A, 0x01, 0x6C, -0x40, 0xA2, 0x4C, 0xE9, 0x80, 0xF3, 0x4C, 0x98, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF4, -0x04, 0x4C, 0x80, 0x9C, 0x00, 0x6A, 0x40, 0xDC, -0x07, 0x97, 0x51, 0x67, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0xC0, 0x9B, -0xFF, 0x6A, 0x04, 0x6D, 0x60, 0xA6, 0x4C, 0xEC, -0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC6, -0x11, 0x24, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x90, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xC4, -0xA6, 0xF6, 0x00, 0x4A, 0x00, 0x6B, 0x42, 0xF6, -0x71, 0xC2, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x70, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xE9, 0xF4, 0x71, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xEA, 0xF2, 0xB8, 0xA2, 0x30, 0xF0, -0x20, 0x6C, 0x6A, 0xF2, 0x1E, 0x4C, 0x00, 0x18, -0xF0, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF4, -0x60, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xB7, 0xD1, 0x04, 0x94, 0xA2, 0x67, 0x00, 0x18, +0xD4, 0xE8, 0x04, 0x94, 0xB1, 0x67, 0x00, 0x18, +0xE3, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x54, 0x9A, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF2, 0x94, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x24, 0xF2, 0x98, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF2, 0x80, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x04, 0xF1, 0x90, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, 0x68, 0x9B, +0x40, 0x9A, 0x6C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x84, 0xF3, +0x53, 0xA3, 0x01, 0x6C, 0x4C, 0xEC, 0x00, 0x6A, +0x10, 0x24, 0x64, 0xF3, 0x5C, 0x83, 0xC0, 0xF7, +0x42, 0x32, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x84, 0xF3, 0x93, 0xA2, +0x02, 0x6B, 0x8D, 0xEB, 0x84, 0xF3, 0x73, 0xC2, +0x01, 0x6A, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x80, 0xA4, 0x80, 0x18, 0x53, 0x06, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x5D, 0x67, 0x40, 0xF0, +0x34, 0xA2, 0x0E, 0xD4, 0x01, 0x6B, 0x00, 0x6C, +0x0F, 0xD5, 0x06, 0x67, 0x07, 0xD7, 0x05, 0xD3, +0x06, 0xD4, 0x04, 0xD4, 0x0F, 0x92, 0x03, 0xEA, +0x65, 0x61, 0x05, 0x93, 0x00, 0xF1, 0x00, 0x73, +0x61, 0x60, 0x04, 0x94, 0x44, 0x2C, 0x90, 0x67, +0xB1, 0x67, 0x00, 0x18, 0x7F, 0xC1, 0xC0, 0x6B, +0x4C, 0xEB, 0xC0, 0x73, 0x25, 0x61, 0x0F, 0x93, +0x41, 0x40, 0x04, 0xD2, 0x43, 0xEB, 0x52, 0x61, +0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, 0x7F, 0xC1, +0x04, 0x94, 0xB1, 0x67, 0x08, 0xD2, 0x00, 0x18, +0x7F, 0xC1, 0x08, 0x94, 0x3F, 0x6B, 0x8C, 0xEB, +0x60, 0x33, 0x4D, 0xE3, 0x0E, 0x92, 0x4D, 0xE3, +0x03, 0xEB, 0x40, 0x60, 0x14, 0x94, 0x05, 0x24, +0x40, 0xA4, 0x03, 0x2A, 0x05, 0x92, 0x01, 0x4A, +0x40, 0xC4, 0x13, 0x92, 0x04, 0x22, 0x06, 0x94, +0x02, 0x2C, 0x01, 0x48, 0x06, 0xD0, 0x03, 0x67, +0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, 0x7F, 0xC1, +0x40, 0x5A, 0x2C, 0x60, 0x90, 0x67, 0xB1, 0x67, +0x00, 0x18, 0x7F, 0xC1, 0x07, 0x93, 0x90, 0x67, +0xB1, 0x67, 0x40, 0xC3, 0x00, 0x18, 0x7F, 0xC1, +0x43, 0x22, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x18, +0x7F, 0xC1, 0x04, 0xD2, 0x10, 0x10, 0x90, 0x67, +0xB1, 0x67, 0x00, 0x18, 0x7F, 0xC1, 0x82, 0x67, +0x00, 0x18, 0x8A, 0xC1, 0x07, 0x94, 0x40, 0xC4, +0x04, 0x92, 0xFF, 0x4A, 0x04, 0xD2, 0x04, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x04, 0xD3, 0x05, 0x93, +0x07, 0x94, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x4B, +0x4C, 0xEB, 0x01, 0x4C, 0x01, 0x48, 0x05, 0xD3, +0x07, 0xD4, 0x98, 0x17, 0x00, 0x6C, 0x05, 0xD4, +0x17, 0x10, 0x06, 0x92, 0x01, 0x2A, 0x06, 0xD0, +0x06, 0x93, 0x0F, 0x94, 0x02, 0x4B, 0x63, 0xEC, +0x04, 0xD3, 0x0E, 0x61, 0x06, 0x94, 0xB1, 0x67, +0x01, 0x4C, 0x00, 0x18, 0x7F, 0xC1, 0x04, 0x94, +0x02, 0x67, 0xB1, 0x67, 0x00, 0x18, 0x7F, 0xC1, +0x00, 0x30, 0x4D, 0xE8, 0x13, 0x92, 0x00, 0xCA, +0x12, 0x93, 0x09, 0x23, 0x9D, 0x67, 0x47, 0x44, +0x0D, 0x4A, 0x80, 0xA2, 0x80, 0xC3, 0x03, 0x10, +0x13, 0x92, 0xDF, 0x2A, 0xF5, 0x17, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0xFF, 0xF7, 0x1F, 0x6A, +0x64, 0x67, 0xAC, 0xEA, 0x00, 0x6C, 0xBD, 0x67, +0x20, 0xF0, 0x80, 0xC5, 0x08, 0x04, 0x04, 0xD4, +0x10, 0x94, 0x75, 0xE2, 0x05, 0xD4, 0x11, 0x94, +0x06, 0xD4, 0x00, 0x6C, 0x07, 0xD4, 0x83, 0x67, +0x00, 0x18, 0x79, 0xD2, 0x7D, 0x67, 0x20, 0xF0, +0x40, 0xA3, 0x0B, 0x97, 0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x0E, 0x92, 0x0F, 0x91, 0x04, 0x67, 0x04, 0xD2, -0x04, 0x93, 0xFF, 0x6A, 0x4C, 0xE8, 0x4C, 0xEB, -0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x5C, 0x9A, 0x0B, 0xD5, 0x0C, 0xD6, 0x0D, 0xD7, -0x04, 0xD3, 0x90, 0x67, 0x40, 0xEA, 0x80, 0xF0, -0x07, 0x22, 0x06, 0x58, 0x80, 0xF0, 0x04, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x08, 0x30, 0x62, 0xF6, -0x18, 0x4A, 0x09, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x02, 0xF2, 0x10, 0x6A, 0x0E, 0x10, 0x02, 0xF2, -0x00, 0x6A, 0x0B, 0x10, 0x22, 0xF2, 0x00, 0x6A, -0x08, 0x10, 0x22, 0xF2, 0x10, 0x6A, 0x05, 0x10, -0x42, 0xF2, 0x00, 0x6A, 0x02, 0x10, 0x42, 0xF2, -0x10, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x0D, 0x94, -0x63, 0xF4, 0x64, 0x9B, 0x8C, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0x23, 0xF1, 0x90, 0x9C, 0x8D, 0xEB, -0x06, 0x21, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF4, -0x88, 0x9C, 0x6D, 0xEC, 0x05, 0x10, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF4, 0x8C, 0x9C, 0x6C, 0xEC, -0x04, 0x96, 0x06, 0x26, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x7C, 0x9B, 0x8D, 0xEB, 0x05, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0x70, 0x9B, -0x8C, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, -0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, 0xBC, 0x9C, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, -0xA0, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x0B, 0x96, -0x63, 0xF4, 0x94, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, -0x80, 0xDD, 0x84, 0x42, 0x1F, 0xF7, 0x00, 0x6D, -0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, -0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF4, -0xB8, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF4, 0xBC, 0x9C, 0x30, 0xF0, 0x20, 0x6C, -0x0C, 0x96, 0x63, 0xF4, 0x94, 0x9C, 0xB5, 0xE2, -0xCC, 0xEC, 0x80, 0xDD, 0x87, 0x42, 0x01, 0x4C, +0x47, 0x44, 0x27, 0x4A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x93, 0x64, 0xF1, 0x44, 0x9A, +0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0x49, 0xE3, +0x05, 0xD2, 0x05, 0x93, 0x00, 0x6A, 0x40, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF2, 0x40, 0x9A, 0xC4, 0xF2, 0x64, 0x9B, +0x49, 0xE4, 0x6D, 0xE4, 0x40, 0xA2, 0xA0, 0xA3, +0x0C, 0xEA, 0x0C, 0xED, 0x40, 0x32, 0x28, 0x4D, +0x55, 0xE5, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x50, 0x9A, 0x2C, 0xED, 0x40, 0xEA, 0x42, 0x33, +0x62, 0x33, 0x2C, 0xEA, 0x69, 0xE2, 0x42, 0x33, +0x62, 0x33, 0x49, 0xE3, 0x4F, 0xEA, 0x2C, 0xEA, +0x05, 0x94, 0x42, 0x33, 0x0C, 0xEB, 0x60, 0xC4, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0x94, 0x04, 0xF2, +0x70, 0x9B, 0x4C, 0xE8, 0x6D, 0xE4, 0x00, 0xC3, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xD4, 0x63, 0x57, 0x62, +0x56, 0xD1, 0x55, 0xD0, 0xFF, 0x69, 0xFF, 0xF7, +0x1F, 0x6A, 0x2C, 0xED, 0xCC, 0xEA, 0x58, 0xD4, +0x5B, 0xD7, 0x50, 0xD5, 0x4C, 0xD2, 0xA0, 0xF0, +0x02, 0x25, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x20, 0xF1, 0x50, 0xA0, 0x80, 0xF0, +0x1A, 0x22, 0x7D, 0x67, 0x00, 0x6A, 0x20, 0xF0, +0x40, 0xC3, 0xD1, 0x67, 0x09, 0x04, 0x00, 0x6D, +0x00, 0x18, 0xC5, 0xD8, 0x00, 0x18, 0x8B, 0xD8, +0x20, 0xF1, 0x70, 0xA0, 0x69, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF1, 0x64, 0x9B, 0x5C, 0x32, +0x6D, 0xE2, 0x60, 0xA3, 0x6C, 0xE9, 0x01, 0x71, +0x80, 0xF0, 0x01, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF1, 0x2C, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF2, 0x68, 0x9B, 0x5B, 0x94, 0xA7, 0x42, +0x6D, 0xE2, 0x25, 0xE2, 0x2B, 0x4D, 0x00, 0x6A, +0x4A, 0xD4, 0x4B, 0xD5, 0x51, 0xD3, 0x4D, 0xD2, +0x4A, 0x93, 0x40, 0xA3, 0x01, 0x72, 0x5E, 0x60, +0x40, 0xA9, 0xFF, 0xF7, 0x1F, 0x6B, 0x82, 0x67, +0x6C, 0xEC, 0x44, 0x67, 0xFF, 0x4A, 0x6C, 0xEA, +0x00, 0xF2, 0x00, 0x5A, 0x4F, 0xD4, 0x52, 0x60, +0x08, 0x41, 0xE0, 0x48, 0x81, 0x40, 0x60, 0xA0, +0xC0, 0xA4, 0x82, 0x40, 0x80, 0xA4, 0xFF, 0x6A, +0x4C, 0xEB, 0xA4, 0x67, 0x4C, 0xED, 0x53, 0xD5, +0x83, 0x40, 0x80, 0xA4, 0x4C, 0xEE, 0xA4, 0x67, +0x4C, 0xED, 0x52, 0xD5, 0x84, 0xA0, 0x8C, 0xEA, +0x4E, 0xD2, 0x39, 0x22, 0x08, 0x02, 0x04, 0xD2, +0x00, 0x6A, 0x05, 0xD2, 0x06, 0xD2, 0x01, 0x6A, +0x4B, 0x94, 0x07, 0xD2, 0x4F, 0x92, 0xC0, 0x36, +0x6D, 0xEE, 0x95, 0xE2, 0x99, 0xE6, 0x09, 0x07, +0x00, 0x18, 0x79, 0xD2, 0x7D, 0x67, 0x20, 0xF0, +0x40, 0xA3, 0x4E, 0x93, 0x4E, 0xEB, 0x23, 0x2B, +0x50, 0x94, 0x8E, 0xEA, 0x20, 0x2A, 0x52, 0x95, +0x53, 0x93, 0xA0, 0x32, 0x6D, 0xEA, 0xFF, 0xF7, +0x1F, 0x6B, 0x6C, 0xEA, 0xFF, 0x72, 0x05, 0x60, +0x4C, 0x94, 0xFF, 0x74, 0x02, 0x60, 0x8E, 0xEA, +0x12, 0x2A, 0xBD, 0x67, 0x20, 0xF0, 0x40, 0xA5, +0x0C, 0x10, 0xFF, 0x6B, 0xFF, 0x4A, 0x6C, 0xEA, +0x58, 0x93, 0xBD, 0x67, 0x51, 0xE3, 0x4D, 0xE5, +0x80, 0xA4, 0x20, 0xF0, 0x64, 0xA3, 0x8E, 0xEB, +0x02, 0x2B, 0xF3, 0x2A, 0x18, 0x10, 0x05, 0x48, +0x2A, 0xE8, 0xB0, 0x61, 0x4A, 0x92, 0x4B, 0x93, +0x51, 0x94, 0x20, 0xF2, 0x0A, 0x49, 0x01, 0x4A, +0x20, 0xF2, 0x0A, 0x4B, 0x8A, 0xE9, 0x4A, 0xD2, +0x4B, 0xD3, 0x92, 0x61, 0x02, 0x10, 0x00, 0x6D, +0x4D, 0xD5, 0x4D, 0x92, 0x57, 0x97, 0x56, 0x91, +0x55, 0x90, 0x2C, 0x63, 0x00, 0xEF, 0x4A, 0x93, +0x01, 0x6A, 0x01, 0x6C, 0x40, 0xC3, 0x4D, 0xD4, +0xE2, 0x17, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x20, 0xF1, 0x51, 0xA0, +0xFF, 0x69, 0x2C, 0xED, 0x0A, 0xD4, 0x04, 0xD5, +0x3E, 0x22, 0x00, 0x18, 0x8B, 0xD8, 0x20, 0xF1, +0x71, 0xA0, 0x6D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x44, 0x9A, 0x7C, 0x33, 0x49, 0xE3, +0x40, 0xA2, 0x4C, 0xE9, 0x01, 0x71, 0x2F, 0x61, +0x00, 0xF1, 0x28, 0x43, 0x01, 0xF1, 0x08, 0x4B, +0x05, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF2, +0x4C, 0x9A, 0x49, 0xE1, 0x60, 0xA2, 0xFF, 0x6A, +0x6C, 0xEA, 0x1C, 0x22, 0x04, 0x93, 0x6E, 0xEA, +0x19, 0x2A, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF2, 0x70, 0x9B, 0xFF, 0x6A, 0xFF, 0x48, +0x4C, 0xE8, 0x6D, 0xE1, 0x6D, 0xE0, 0x80, 0xA3, +0x4C, 0xEC, 0x00, 0x18, 0x8A, 0xC1, 0x0A, 0x94, +0x0D, 0xE4, 0x60, 0xA3, 0x6E, 0xEA, 0x06, 0x2A, +0x02, 0x10, 0x04, 0x90, 0xEB, 0x17, 0xEA, 0x28, +0x01, 0x6A, 0x06, 0x10, 0x05, 0x92, 0x00, 0xF1, +0x00, 0x49, 0x4A, 0xE9, 0xD6, 0x61, 0x00, 0x6A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x60, 0x9A, 0x62, 0xF3, 0x00, 0x4A, +0x42, 0xAA, 0x04, 0xD3, 0x7D, 0x67, 0x4A, 0xCB, +0x00, 0x6A, 0x06, 0xD2, 0x09, 0xD2, 0x07, 0xD2, +0x08, 0xD2, 0x01, 0x6A, 0x4B, 0xEA, 0x58, 0xC3, +0x02, 0x6A, 0x59, 0xC3, 0x30, 0xF0, 0x20, 0x69, +0x05, 0x6A, 0x4B, 0xEA, 0x08, 0xF2, 0x10, 0x49, +0x20, 0xF0, 0x47, 0xC3, 0x20, 0xF1, 0x4F, 0xA1, +0xFF, 0x68, 0x0C, 0xEC, 0x0C, 0xED, 0x0A, 0xD4, +0x0E, 0xD5, 0x20, 0xF1, 0x06, 0x22, 0x00, 0x18, +0x8B, 0xD8, 0x20, 0xF1, 0x70, 0xA1, 0x69, 0xE2, +0x5C, 0x32, 0x0B, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x44, 0x9A, 0x0B, 0x94, 0x49, 0xE4, +0x40, 0xA2, 0x0C, 0xEA, 0x01, 0x72, 0x00, 0xF1, +0x14, 0x61, 0x0A, 0x96, 0x2A, 0x6A, 0x86, 0x67, +0x01, 0x4C, 0x58, 0xEC, 0xC0, 0x33, 0x64, 0x33, +0x08, 0x4B, 0x0B, 0x94, 0x12, 0xEA, 0x49, 0xE3, +0x0C, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x93, +0xC4, 0xF2, 0x54, 0x9A, 0x49, 0xE3, 0x89, 0xE2, +0x40, 0xAA, 0xFF, 0xF7, 0x1F, 0x6B, 0xC2, 0x67, +0x6C, 0xEE, 0x46, 0x67, 0xFF, 0x4A, 0x6C, 0xEA, +0x00, 0xF2, 0x00, 0x5A, 0x0A, 0xD6, 0xE0, 0xF0, +0x14, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, +0x44, 0x9A, 0x02, 0xF0, 0x00, 0x6B, 0x40, 0xA2, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, +0x5C, 0x9A, 0x0D, 0xD0, 0x40, 0x9A, 0x6C, 0xEA, +0x1A, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x50, 0x9A, 0x00, 0x6C, 0xFF, 0x6D, 0x57, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x5C, 0x9A, 0x00, 0x68, 0x40, 0xEA, 0x01, 0x72, +0x15, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x54, 0x9A, 0x20, 0xF1, 0x8F, 0xA1, 0x01, 0x6D, +0x18, 0x6E, 0xF0, 0x67, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x54, 0x9A, 0x20, 0xF1, +0x8F, 0xA1, 0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, +0x40, 0xEA, 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0x4C, 0x9A, +0xE4, 0xF1, 0x64, 0x9B, 0x49, 0xE0, 0x6D, 0xE0, +0x80, 0xA2, 0xA0, 0xA3, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF2, 0x74, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, +0x6D, 0xE0, 0xC0, 0xA3, 0x4C, 0xED, 0x4C, 0xEE, +0x80, 0x18, 0xEF, 0x03, 0x0E, 0x95, 0x87, 0x40, +0x29, 0x4C, 0x22, 0x67, 0x80, 0x18, 0xD9, 0x0A, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, 0x6C, 0x9B, +0x04, 0x02, 0x00, 0xF0, 0x16, 0x04, 0x6D, 0xE0, +0xA0, 0xA2, 0x01, 0x4A, 0x8A, 0xEA, 0xA0, 0xC3, +0x01, 0x4B, 0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF2, 0x68, 0x9B, 0x06, 0x02, 0x0A, 0x04, +0x6D, 0xE0, 0x2D, 0xE3, 0xA0, 0xA2, 0x01, 0x4A, +0x8A, 0xEA, 0xA0, 0xC3, 0x01, 0x4B, 0xFA, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x84, 0x9A, +0x0C, 0x93, 0xFF, 0x6D, 0x0B, 0x96, 0x89, 0xE3, +0x67, 0x41, 0x61, 0x4B, 0xAC, 0xEB, 0x91, 0xE0, +0x71, 0xE4, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, +0xB0, 0x9B, 0x0C, 0x93, 0xC9, 0xE2, 0xB5, 0xE3, +0x0A, 0x93, 0xD5, 0xE5, 0xFF, 0xF7, 0x1F, 0x6E, +0xFF, 0x4B, 0xCC, 0xEB, 0x6D, 0xE5, 0xA0, 0xA2, +0xFF, 0x6E, 0x01, 0x4A, 0xCC, 0xED, 0x6A, 0xEA, +0xA0, 0xC4, 0x01, 0x4C, 0xF8, 0x61, 0x0A, 0x92, +0xFF, 0xF7, 0x1F, 0x6B, 0x08, 0x4A, 0x6C, 0xEA, +0x0B, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x0B, 0x94, +0xC4, 0xF2, 0x58, 0x9A, 0x82, 0x34, 0x49, 0xE0, +0xCC, 0xEC, 0x29, 0xE2, 0x0A, 0xD4, 0x80, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF2, 0x5C, 0x9A, +0x0B, 0x94, 0x49, 0xE0, 0xCC, 0xEC, 0x29, 0xE2, +0x0C, 0xD4, 0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x28, 0xF3, 0xBF, 0xA2, 0x87, 0x40, 0x31, 0x4C, +0x31, 0xE4, 0x00, 0x18, 0xD8, 0xD2, 0x9D, 0x67, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF2, 0x40, 0x9A, +0xC7, 0x44, 0x21, 0x4E, 0x80, 0xA6, 0x49, 0xE0, +0x29, 0xE2, 0x80, 0xC2, 0xDD, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF2, 0x44, 0x9A, 0x67, 0x46, +0x29, 0x4B, 0xC0, 0xA3, 0x49, 0xE0, 0x29, 0xE2, +0xC0, 0xC2, 0x0B, 0x92, 0xFF, 0xF7, 0x1F, 0x6B, +0xFF, 0x6C, 0x30, 0x4A, 0x6C, 0xEA, 0x25, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, +0x6C, 0xE9, 0xFF, 0x6E, 0x41, 0xE0, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF2, 0x7C, 0x9A, 0x20, 0xC8, +0x40, 0xA3, 0x8C, 0xEA, 0x9F, 0xF6, 0x01, 0x4C, +0x8D, 0xEA, 0xCC, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x0D, 0x95, +0x00, 0x6C, 0x58, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, +0x01, 0x10, 0x00, 0x6A, 0x13, 0x97, 0x12, 0x91, +0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF3, 0x6C, 0x9A, +0x62, 0xF3, 0x0C, 0x4A, 0x42, 0xAA, 0x05, 0xD3, +0x7D, 0x67, 0x4C, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF3, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x69, +0x08, 0xF2, 0x10, 0x49, 0x04, 0xD2, 0x20, 0xF1, +0x4E, 0xA1, 0xFF, 0x68, 0x0C, 0xEC, 0x0C, 0xED, +0x09, 0xD4, 0x0C, 0xD5, 0x40, 0xF1, 0x13, 0x22, +0x00, 0x18, 0x8B, 0xD8, 0x20, 0xF1, 0x70, 0xA1, +0x69, 0xE2, 0x5C, 0x32, 0x08, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, 0x08, 0x94, +0x49, 0xE4, 0x40, 0xA2, 0x0C, 0xEA, 0x01, 0x72, +0x40, 0xF1, 0x01, 0x61, 0x09, 0x96, 0x2A, 0x6A, +0x86, 0x67, 0x01, 0x4C, 0x58, 0xEC, 0xC0, 0x33, +0x64, 0x33, 0x08, 0x4B, 0x08, 0x94, 0x12, 0xEA, +0x49, 0xE3, 0x0A, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x0A, 0x93, 0xC4, 0xF2, 0x54, 0x9A, 0x49, 0xE3, +0x89, 0xE2, 0x40, 0xAA, 0xFF, 0xF7, 0x1F, 0x6B, +0xC2, 0x67, 0x6C, 0xEE, 0x46, 0x67, 0xFF, 0x4A, +0x6C, 0xEA, 0x00, 0xF2, 0x00, 0x5A, 0x09, 0xD6, +0x20, 0xF1, 0x01, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x44, 0x9A, 0x02, 0xF0, 0x00, 0x6B, +0x40, 0xA2, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF2, 0x5C, 0x9A, 0x0B, 0xD0, 0x40, 0x9A, +0x6C, 0xEA, 0x1A, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6C, 0xFF, 0x6D, +0x57, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x5C, 0x9A, 0x00, 0x68, 0x40, 0xEA, +0x01, 0x72, 0x15, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x54, 0x9A, 0x20, 0xF1, 0x8E, 0xA1, +0x01, 0x6D, 0x18, 0x6E, 0xF0, 0x67, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x54, 0x9A, +0x20, 0xF1, 0x8E, 0xA1, 0x01, 0x6D, 0x18, 0x6E, +0x00, 0x6F, 0x40, 0xEA, 0x02, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, +0x4C, 0x9A, 0xE4, 0xF1, 0x64, 0x9B, 0x49, 0xE0, +0x6D, 0xE0, 0x80, 0xA2, 0xA0, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF2, 0x74, 0x9B, 0xFF, 0x6A, +0x4C, 0xEC, 0x6D, 0xE0, 0xC0, 0xA3, 0x4C, 0xED, +0x4C, 0xEE, 0x80, 0x18, 0xEF, 0x03, 0x0C, 0x95, +0x87, 0x40, 0x29, 0x4C, 0x22, 0x67, 0x80, 0x18, +0xD9, 0x0A, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, +0x6C, 0x9B, 0x05, 0x02, 0x00, 0xF0, 0x1A, 0x04, +0x6D, 0xE0, 0xA0, 0xA2, 0x01, 0x4A, 0x8A, 0xEA, +0xA0, 0xC3, 0x01, 0x4B, 0xFA, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF2, 0x68, 0x9B, 0x04, 0x02, +0x05, 0x04, 0x6D, 0xE0, 0x2D, 0xE3, 0xA0, 0xA2, +0x01, 0x4A, 0x8A, 0xEA, 0xA0, 0xC3, 0x01, 0x4B, +0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x27, 0xF4, +0x6C, 0xAA, 0xFF, 0x6D, 0x01, 0x4B, 0x27, 0xF4, +0x6C, 0xCA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF2, +0x60, 0x9B, 0x27, 0xF4, 0x8C, 0xAA, 0x6D, 0xE0, +0x2D, 0xE3, 0x82, 0x34, 0x80, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF2, 0x64, 0x9B, 0x27, 0xF4, +0x4C, 0xA2, 0x6D, 0xE0, 0x2D, 0xE3, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x84, 0x9A, +0x0A, 0x93, 0x08, 0x96, 0x89, 0xE3, 0x67, 0x41, +0x4D, 0x4B, 0xAC, 0xEB, 0x91, 0xE0, 0x71, 0xE4, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, 0xB0, 0x9B, +0x0A, 0x93, 0xC9, 0xE2, 0xB5, 0xE3, 0x09, 0x93, +0xD5, 0xE5, 0xFF, 0xF7, 0x1F, 0x6E, 0xFF, 0x4B, +0xCC, 0xEB, 0x6D, 0xE5, 0xA0, 0xA2, 0xFF, 0x6E, +0x01, 0x4A, 0xCC, 0xED, 0x6A, 0xEA, 0xA0, 0xC4, +0x01, 0x4C, 0xF8, 0x61, 0x09, 0x92, 0xFF, 0xF7, +0x1F, 0x6B, 0x08, 0x4A, 0x6C, 0xEA, 0x08, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0x94, 0x64, 0xF2, +0x68, 0x9A, 0x82, 0x32, 0x6D, 0xE0, 0x2D, 0xE3, +0xCC, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF2, 0x40, 0x9A, 0x64, 0x67, 0xCC, 0xEB, +0x49, 0xE0, 0x29, 0xE2, 0x60, 0xC2, 0x47, 0x40, +0x31, 0x4A, 0x29, 0xE2, 0x30, 0xF0, 0x20, 0x6E, +0x0A, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x10, 0x4E, 0x09, 0xD6, 0x20, 0xF4, 0x54, 0x9B, +0x0A, 0x95, 0x20, 0xF1, 0xCE, 0xA6, 0x11, 0x6C, +0x40, 0xEA, 0x08, 0x94, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF2, 0x6C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6E, +0x14, 0x4C, 0xCC, 0xEC, 0x08, 0xD4, 0x6D, 0xE0, +0x82, 0x32, 0xFF, 0x6C, 0x2D, 0xE3, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF2, +0x50, 0x9A, 0x08, 0x93, 0x30, 0xF0, 0x20, 0x6E, +0x49, 0xE0, 0x29, 0xE2, 0x8C, 0xEB, 0x60, 0xC2, +0x09, 0x93, 0x20, 0xF4, 0x54, 0x9E, 0x0A, 0x95, +0x20, 0xF1, 0xCE, 0xA3, 0x00, 0x6C, 0x40, 0xEA, +0x08, 0x92, 0xFF, 0xF7, 0x1F, 0x6C, 0xFF, 0x6E, +0x08, 0x4A, 0x8C, 0xEA, 0x25, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, 0x8C, 0xE9, +0x80, 0x6C, 0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF2, 0x7C, 0x9A, 0x20, 0xC8, 0x8B, 0xEC, +0x40, 0xA3, 0xCC, 0xEA, 0x8D, 0xEA, 0xCC, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x50, 0x9A, 0x0B, 0x95, 0x00, 0x6C, 0x58, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x54, 0x9A, 0x40, 0xEA, 0x01, 0x10, 0x00, 0x6A, +0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xCD, 0x63, 0x65, 0x62, +0x64, 0xD1, 0x63, 0xD0, 0x00, 0x6A, 0x7D, 0x67, +0x66, 0xD4, 0x67, 0xD5, 0x54, 0xCB, 0x30, 0xF0, +0x20, 0x6B, 0x42, 0xF3, 0x7C, 0x9B, 0x9D, 0x67, +0x11, 0xD2, 0x08, 0xD3, 0x01, 0x6B, 0x6B, 0xEB, +0x40, 0xF0, 0x64, 0xC4, 0x02, 0x6B, 0x40, 0xF0, +0x65, 0xC4, 0x05, 0x6B, 0x6B, 0xEB, 0x14, 0xD2, +0x40, 0xF0, 0x73, 0xC4, 0x66, 0x90, 0x09, 0xD2, +0x07, 0xD2, 0x0D, 0xD2, 0x0E, 0xD2, 0x0F, 0xD2, +0x10, 0xD2, 0x12, 0xD2, 0x13, 0xD2, 0x0B, 0xD2, +0x0C, 0xD2, 0x20, 0xF0, 0x0A, 0x03, 0x09, 0x02, +0x0A, 0x48, 0x56, 0xD2, 0x5E, 0xD3, 0x30, 0xF0, +0x20, 0x69, 0xC0, 0xF3, 0x40, 0x99, 0x90, 0x67, +0x40, 0xEA, 0x56, 0x94, 0x40, 0xC4, 0xC0, 0xF3, +0x40, 0x99, 0x86, 0x40, 0x01, 0x48, 0x40, 0xEA, +0x56, 0x92, 0x5E, 0x93, 0x01, 0x4A, 0x6A, 0xEA, +0x56, 0xD2, 0xED, 0x61, 0x30, 0xF0, 0x20, 0x6D, +0x09, 0x04, 0x8C, 0xF5, 0x13, 0x4D, 0x06, 0x6E, +0x00, 0x18, 0xDE, 0xD8, 0xA0, 0xF1, 0x12, 0x2A, +0x66, 0x90, 0x67, 0x94, 0xC0, 0xF3, 0x40, 0x99, +0x08, 0x48, 0x81, 0xE0, 0x8E, 0x40, 0x40, 0xEA, +0x56, 0xD2, 0xC0, 0xF3, 0x40, 0x99, 0x8F, 0x40, +0x40, 0xEA, 0x56, 0x93, 0x08, 0x73, 0x66, 0x61, +0xA0, 0xF1, 0x00, 0x2A, 0x87, 0x40, 0x09, 0x4C, +0x07, 0x02, 0x08, 0x03, 0x57, 0xD4, 0x56, 0xD2, +0x5F, 0xD3, 0x30, 0xF0, 0x20, 0x69, 0x57, 0x94, +0xC0, 0xF3, 0x40, 0x99, 0x40, 0xEA, 0x56, 0x94, +0x5F, 0x93, 0x40, 0xC4, 0x57, 0x92, 0x01, 0x4C, +0x6A, 0xEC, 0x01, 0x4A, 0x57, 0xD2, 0x56, 0xD4, +0xF0, 0x61, 0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, +0x0D, 0x4C, 0x40, 0xEA, 0x56, 0xD2, 0xC0, 0xF3, +0x40, 0x99, 0x87, 0x40, 0x0E, 0x4C, 0x40, 0xEA, +0x57, 0xD2, 0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, +0x0F, 0x4C, 0x40, 0xEA, 0x58, 0xD2, 0xC0, 0xF3, +0x40, 0x99, 0x87, 0x40, 0x10, 0x4C, 0x40, 0xEA, +0x56, 0x94, 0x80, 0x33, 0x57, 0x94, 0x8D, 0xEB, +0x60, 0x33, 0x60, 0x33, 0x63, 0x33, 0x63, 0x33, +0xE2, 0xF4, 0x09, 0x73, 0x60, 0xF1, 0x06, 0x61, +0x58, 0x94, 0x80, 0x33, 0x4D, 0xEB, 0x60, 0x33, +0x60, 0x33, 0x63, 0x33, 0x63, 0x33, 0xE2, 0xF4, +0x09, 0x73, 0x40, 0xF1, 0x1B, 0x61, 0x07, 0x04, +0x08, 0x05, 0x04, 0x6E, 0x00, 0x18, 0xDE, 0xD8, +0x40, 0xF1, 0x14, 0x2A, 0x47, 0x40, 0x15, 0x4A, +0x56, 0xD2, 0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, +0x11, 0x4C, 0x40, 0xEA, 0x57, 0xD2, 0xC0, 0xF3, +0x40, 0x99, 0x87, 0x40, 0x12, 0x4C, 0x40, 0xEA, +0x57, 0x93, 0x01, 0x6C, 0x60, 0x31, 0x4D, 0xE9, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0xF8, 0x49, +0x4C, 0xE9, 0x6F, 0x10, 0x56, 0x93, 0x86, 0x73, +0x20, 0xF1, 0x18, 0x61, 0xDD, 0x72, 0x20, 0xF1, +0x15, 0x61, 0x87, 0x40, 0x11, 0x4C, 0x0D, 0x02, +0x0F, 0x03, 0x57, 0xD4, 0x56, 0xD2, 0x60, 0xD3, +0x30, 0xF0, 0x20, 0x69, 0x57, 0x94, 0xC0, 0xF3, +0x40, 0x99, 0x40, 0xEA, 0x57, 0x94, 0xC0, 0xF3, +0x40, 0x99, 0x01, 0x4C, 0x40, 0xEA, 0x56, 0x94, +0x60, 0x93, 0x40, 0xC4, 0x57, 0x92, 0x01, 0x4C, +0x6A, 0xEC, 0x02, 0x4A, 0x57, 0xD2, 0x56, 0xD4, +0xEB, 0x61, 0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, +0x21, 0x4C, 0x40, 0xEA, 0x56, 0xD2, 0xC0, 0xF3, +0x40, 0x99, 0x87, 0x40, 0x22, 0x4C, 0x40, 0xEA, +0x57, 0xD2, 0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, +0x23, 0x4C, 0x40, 0xEA, 0x58, 0xD2, 0xC0, 0xF3, +0x40, 0x99, 0x87, 0x40, 0x24, 0x4C, 0x40, 0xEA, +0x56, 0x94, 0x80, 0x33, 0x57, 0x94, 0x8D, 0xEB, +0x60, 0x33, 0x60, 0x33, 0x63, 0x33, 0x63, 0x33, +0xE2, 0xF4, 0x09, 0x73, 0xE0, 0xF0, 0x16, 0x61, +0x58, 0x94, 0x80, 0x33, 0x4D, 0xEB, 0x60, 0x33, +0x60, 0x33, 0x63, 0x33, 0x63, 0x33, 0xE2, 0xF4, +0x09, 0x73, 0xE0, 0xF0, 0x0B, 0x61, 0x0D, 0x04, +0x11, 0x05, 0x10, 0x6E, 0x00, 0x18, 0xDE, 0xD8, +0xE0, 0xF0, 0x04, 0x22, 0x47, 0x40, 0x29, 0x4A, +0x56, 0xD2, 0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, +0x25, 0x4C, 0x40, 0xEA, 0x57, 0xD2, 0xC0, 0xF3, +0x40, 0x99, 0x87, 0x40, 0x26, 0x4C, 0x40, 0xEA, +0x57, 0x93, 0x02, 0x6C, 0x60, 0x31, 0x4D, 0xE9, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0xF8, 0x49, +0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x5C, 0xD4, +0x08, 0xF2, 0x10, 0x4A, 0x20, 0xF1, 0x8D, 0xA2, +0x02, 0x6B, 0x8C, 0xEB, 0x0D, 0x2B, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF1, 0x70, 0x9B, 0x2B, 0x6C, +0x80, 0xC3, 0x64, 0xF3, 0x9C, 0xA2, 0x01, 0x6B, +0x8D, 0xEB, 0x64, 0xF3, 0x7C, 0xC2, 0x67, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, +0x56, 0x94, 0x40, 0xEA, 0x05, 0x2A, 0x56, 0x94, +0xC0, 0xF3, 0x40, 0x98, 0x01, 0x4C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x68, 0x56, 0x94, 0xC0, 0xF3, +0x40, 0x98, 0x04, 0x4C, 0x40, 0xEA, 0x56, 0x94, +0x57, 0xD2, 0xC0, 0xF3, 0x40, 0x98, 0x05, 0x4C, +0x40, 0xEA, 0x57, 0x93, 0x56, 0x94, 0x60, 0x33, +0x4D, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, +0x0C, 0x4C, 0x00, 0x6A, 0x58, 0xD3, 0x57, 0xD4, +0x5B, 0xD2, 0x62, 0x67, 0x57, 0x10, 0x15, 0x04, +0x00, 0x6D, 0xFF, 0x6E, 0x00, 0x18, 0xC5, 0xD8, +0x00, 0x6A, 0x9D, 0x67, 0x4D, 0xCC, 0x58, 0xC4, +0x57, 0x96, 0x56, 0x94, 0x00, 0xF0, 0x1A, 0x02, +0x04, 0xD2, 0xB1, 0x67, 0x06, 0x02, 0x15, 0x07, +0x05, 0xD2, 0x00, 0x18, 0xCA, 0xD2, 0x5A, 0xD2, +0xA2, 0x67, 0x5D, 0x67, 0xCD, 0xAA, 0x15, 0x04, +0x0B, 0x07, 0x00, 0x18, 0xFB, 0xD2, 0x25, 0x2A, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x20, 0xF1, 0x6D, 0xA0, 0x0C, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x02, 0x2A, 0x2C, 0x6B, +0x0B, 0x10, 0x04, 0x72, 0x69, 0x60, 0x08, 0x72, +0x16, 0x61, 0x5A, 0x95, 0x15, 0x04, 0x00, 0x18, +0x5B, 0xD3, 0x01, 0x72, 0x10, 0x61, 0x2D, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, +0x60, 0xC2, 0x64, 0xF3, 0x7C, 0xA0, 0x01, 0x6A, +0x6D, 0xEA, 0x64, 0xF3, 0x5C, 0xC0, 0x01, 0x6A, +0x4E, 0x10, 0x01, 0x6B, 0x5B, 0xD3, 0x9D, 0x67, +0x58, 0xA4, 0x05, 0x22, 0x57, 0x93, 0x04, 0x4A, +0x4D, 0xE3, 0x57, 0xD3, 0x05, 0x10, 0x57, 0x92, +0x5A, 0x94, 0x04, 0x4A, 0x89, 0xE2, 0x57, 0xD2, +0x59, 0x92, 0x01, 0x4A, 0x59, 0xD2, 0x59, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x59, 0xD3, 0x59, 0x94, +0x58, 0x92, 0x43, 0xEC, 0xA4, 0x61, 0x38, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC3, 0xF3, 0x8A, 0xA2, 0xC0, 0xF0, 0xC7, 0xA2, +0x10, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, 0x6A, 0xC2, +0x04, 0x6C, 0x01, 0x6D, 0xD6, 0x36, 0x00, 0x18, +0xAE, 0xCD, 0x00, 0x68, 0x7D, 0x67, 0x09, 0xE3, +0x20, 0xF0, 0x4C, 0xA2, 0x0C, 0x22, 0x5C, 0x94, +0x01, 0x74, 0x05, 0x61, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0x30, 0xD4, 0x04, 0x10, 0x90, 0x67, +0x00, 0x6D, 0x00, 0x18, 0x85, 0xD3, 0x01, 0x48, +0x08, 0x70, 0xEC, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, 0x8A, 0xA2, +0x11, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xC3, 0xF3, +0x6A, 0xC2, 0xB1, 0x17, 0x00, 0x6A, 0x65, 0x97, +0x64, 0x91, 0x63, 0x90, 0x33, 0x63, 0x00, 0xEF, +0x5B, 0x92, 0xF8, 0x22, 0xC5, 0x17, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x0E, 0x90, 0x24, 0x67, +0x4C, 0xE9, 0x03, 0x6B, 0x4C, 0xEF, 0x2C, 0xEB, +0x00, 0x6A, 0x0B, 0xD5, 0x0C, 0xD6, 0x04, 0xD7, +0x40, 0xC8, 0x00, 0x6A, 0x0A, 0x23, 0x28, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0x40, 0xEA, 0x40, 0xA8, 0x01, 0x4A, +0x40, 0xC8, 0x1F, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x54, 0x9A, 0x49, 0xE1, 0x0B, 0x93, 0x40, 0x9A, +0x6C, 0xEA, 0x0C, 0x93, 0x6E, 0xEA, 0x04, 0x22, +0x40, 0xA8, 0x04, 0x93, 0x63, 0xEA, 0xDC, 0x61, +0x40, 0xA8, 0x04, 0x93, 0x63, 0xEA, 0x58, 0x67, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0xA0, 0x35, +0x4C, 0xEC, 0xA0, 0x35, 0xCC, 0xEA, 0x4D, 0xED, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF3, +0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF3, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF3, 0x98, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF3, 0x7C, 0x9B, 0xAD, 0xEA, 0x40, 0xDC, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF3, +0x40, 0x9A, 0x60, 0xDC, 0x00, 0x6B, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0xFF, 0xF7, +0x1F, 0x6B, 0x8C, 0xEA, 0xAC, 0xEB, 0x05, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x4C, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF3, +0x44, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x4D, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF3, 0x58, 0x9A, +0x00, 0x6C, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF3, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF3, 0x60, 0x9B, 0x40, 0xA2, 0x80, 0xC3, +0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF3, 0x6C, 0x9B, 0xFF, 0x6A, +0xCC, 0xEA, 0x6D, 0xEA, 0xE0, 0xF1, 0x1F, 0x6B, +0xAC, 0xEB, 0x60, 0x33, 0x60, 0x33, 0x6D, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF3, 0x18, 0x9B, +0x01, 0x6C, 0x40, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x00, 0x6A, +0x40, 0xD8, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xE0, 0xF1, 0x1F, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xAC, 0xEA, 0x64, 0xF3, +0x70, 0x9B, 0x40, 0x32, 0x40, 0x32, 0x6D, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF3, 0x18, 0x4B, +0x60, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x01, 0x6C, +0x40, 0xDB, 0x80, 0xF3, 0x4C, 0x98, 0xFF, 0x69, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF3, +0x48, 0x9A, 0x01, 0x6C, 0x40, 0xA2, 0x4C, 0xE9, +0x80, 0xF3, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6C, 0x44, 0xF3, 0x18, 0x4C, 0x80, 0x9C, +0x00, 0x6A, 0x40, 0xDC, 0x07, 0x97, 0x51, 0x67, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF3, 0xD4, 0x9B, 0xFF, 0x6A, 0x04, 0x6D, +0x60, 0xA6, 0x4C, 0xEC, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC6, 0x11, 0x24, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF1, 0x84, 0x9B, 0x60, 0xA4, +0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xC4, 0x08, 0xF2, 0x10, 0x4A, +0x00, 0x6B, 0x42, 0xF6, 0x6D, 0xC2, 0x0D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x64, 0x9A, +0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF0, +0x7D, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF6, +0xA4, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xEB, 0xF5, +0x0A, 0x4C, 0x00, 0x18, 0x21, 0xE3, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF3, 0x74, 0x9A, 0xFB, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x0E, 0x92, 0x0F, 0x91, +0x04, 0x67, 0x04, 0xD2, 0x04, 0x93, 0xFF, 0x6A, +0x4C, 0xE8, 0x4C, 0xEB, 0x4C, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x5C, 0x9A, 0x0B, 0xD5, +0x0C, 0xD6, 0x0D, 0xD7, 0x04, 0xD3, 0x90, 0x67, +0x40, 0xEA, 0x80, 0xF0, 0x07, 0x22, 0x06, 0x58, +0x80, 0xF0, 0x04, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0x30, 0xA3, 0xF5, 0x0C, 0x4A, 0x09, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x02, 0xF2, 0x10, 0x6A, +0x0E, 0x10, 0x02, 0xF2, 0x00, 0x6A, 0x0B, 0x10, +0x22, 0xF2, 0x00, 0x6A, 0x08, 0x10, 0x22, 0xF2, +0x10, 0x6A, 0x05, 0x10, 0x42, 0xF2, 0x00, 0x6A, +0x02, 0x10, 0x42, 0xF2, 0x10, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x0D, 0x94, 0x64, 0xF3, 0x78, 0x9B, +0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF0, +0x84, 0x9C, 0x8D, 0xEB, 0x06, 0x21, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF3, 0x9C, 0x9C, 0x6D, 0xEC, +0x05, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF3, +0x80, 0x9C, 0x6C, 0xEC, 0x04, 0x96, 0x06, 0x26, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, 0x70, 0x9B, +0x8D, 0xEB, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF3, 0x64, 0x9B, 0x8C, 0xEB, 0x1F, 0xF7, +0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, +0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF0, 0xB0, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x84, 0xF0, 0xB4, 0x9C, 0x30, 0xF0, +0x20, 0x6C, 0x0B, 0x96, 0x84, 0xF3, 0x88, 0x9C, +0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, 0x84, 0x42, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF4, 0x80, 0x9C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF4, 0x84, 0x9C, -0x89, 0xE2, 0x60, 0xDA, 0x01, 0x6A, 0x01, 0x10, -0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x01, 0x68, 0x04, 0xEC, -0x82, 0xF3, 0x08, 0x69, 0x1C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, -0xFF, 0x49, 0x40, 0xEA, 0x14, 0x29, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, 0x08, 0xF0, -0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x7C, 0xDA, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF4, 0x48, 0x9A, 0x60, 0xAA, -0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x0C, 0xEA, -0xDA, 0x2A, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x04, 0xF7, -0x10, 0x68, 0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0xFF, 0x48, -0x40, 0xEA, 0x14, 0x28, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x60, 0x9A, 0x08, 0xF0, 0x00, 0x6C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, -0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, -0x00, 0x6A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF4, 0x48, 0x9A, 0x60, 0xAA, 0x3F, 0x6A, -0x6C, 0xEA, 0xDC, 0x2A, 0x01, 0x6A, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF4, 0x48, 0x9A, -0x40, 0xAA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF4, 0x48, 0x9A, 0x40, 0xAA, 0x20, 0xE8, +0x20, 0x6C, 0x84, 0xF3, 0xAC, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF3, 0xB0, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0x0C, 0x96, 0x84, 0xF3, +0x88, 0x9C, 0xB5, 0xE2, 0xCC, 0xEC, 0x80, 0xDD, +0x87, 0x42, 0x01, 0x4C, 0x1F, 0xF7, 0x00, 0x6D, +0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF3, +0x94, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF3, 0x98, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x3C, 0x9A, -0x10, 0xF0, 0x23, 0x68, 0x69, 0xF0, 0x01, 0x48, -0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x01, 0xF0, 0x54, 0x9A, 0x06, 0xF5, -0x84, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, -0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x01, 0x68, 0x04, 0xEC, 0x82, 0xF3, 0x08, 0x69, +0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x01, 0x6C, 0xFF, 0x49, 0x40, 0xEA, +0x14, 0x29, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x78, 0x9A, 0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, 0x00, 0x6A, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF3, +0x5C, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x0C, 0xEA, 0xDA, 0x2A, 0x01, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x04, 0xF7, 0x10, 0x68, 0x1C, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x05, 0x6C, 0xFF, 0x48, 0x40, 0xEA, 0x14, 0x28, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, +0x08, 0xF0, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, 0x8D, 0xEB, +0xA3, 0xF3, 0x78, 0xDA, 0x00, 0x6A, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF3, 0x5C, 0x9A, +0x60, 0xAA, 0x3F, 0x6A, 0x6C, 0xEA, 0xDC, 0x2A, +0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF3, 0x5C, 0x9A, 0x40, 0xAA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF3, 0x5C, 0x9A, +0x40, 0xAA, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x3C, 0x9A, 0x10, 0xF0, 0x23, 0x68, -0xA9, 0xF0, 0x05, 0x48, 0x00, 0xD9, 0x30, 0xF0, +0x24, 0xF0, 0x30, 0x9A, 0x10, 0xF0, 0x23, 0x68, +0x2B, 0xF4, 0x15, 0x48, 0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0xF0, -0x54, 0x9A, 0x06, 0xF5, 0x80, 0x9B, 0x01, 0x6D, +0x54, 0x9A, 0x67, 0xF4, 0x84, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, 0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0xE9, 0xF0, 0x09, 0x4A, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x06, 0xF5, 0x8C, 0x9B, 0x01, 0xF0, 0x48, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x64, 0x9B, 0xA0, 0xF0, -0x84, 0x9A, 0x8C, 0xEB, 0x09, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x70, 0x9B, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, 0xB4, 0x07, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, -0x06, 0xF5, 0x8C, 0x98, 0x66, 0xF4, 0x58, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, -0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, -0x08, 0x6B, 0x8C, 0xEB, 0x07, 0x23, 0x09, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, -0x80, 0x18, 0xB8, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x9B, -0x66, 0xF4, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0xE9, 0xF0, 0x0A, 0x4A, 0x40, 0xDB, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x69, 0x00, 0x18, 0xB9, 0xC6, 0x00, 0x68, -0x00, 0x6C, 0x00, 0x18, 0x3A, 0xD2, 0x01, 0x48, -0xFF, 0x6A, 0x4C, 0xE8, 0x0A, 0x70, 0xF8, 0x61, -0x01, 0x6B, 0x6E, 0xE9, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x4C, 0xE9, 0x10, 0xF0, -0x23, 0x6A, 0xA9, 0xF1, 0x11, 0x4A, 0x29, 0xE2, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x06, 0xF5, 0x8C, 0x9B, 0x01, 0xF0, -0x48, 0x98, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x80, 0x18, 0x35, 0x16, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x9B, -0x66, 0xF4, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x06, 0xF5, 0x8C, 0x9B, 0x01, 0xF0, -0x48, 0x98, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA0, 0xF0, 0x84, 0x9A, 0x02, 0x6B, 0x8C, 0xEB, -0x09, 0x23, 0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, 0x81, 0x39, -0x80, 0x18, 0xD7, 0x39, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x98, -0x66, 0xF4, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x98, 0x01, 0xF0, -0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA0, 0xF0, 0x84, 0x9A, 0x04, 0x6B, 0x8C, 0xEB, -0x09, 0x23, 0x05, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, 0xB8, 0xD4, -0x00, 0x18, 0x40, 0xD5, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x98, -0x66, 0xF4, 0x58, 0x9A, 0x40, 0xEA, 0x00, 0x1C, -0xAC, 0x39, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, -0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x43, 0xF4, 0x88, 0xA2, -0xC3, 0xF3, 0x6F, 0xA2, 0x8E, 0xEB, 0x05, 0x23, -0xC0, 0xF0, 0x87, 0xA2, 0x96, 0x34, 0x00, 0x18, -0x50, 0xCE, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF7, -0x44, 0x9A, 0x02, 0x2A, 0x00, 0x18, 0x53, 0xCB, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, -0x06, 0xF5, 0x8C, 0x98, 0x66, 0xF4, 0x58, 0x9A, -0x40, 0xEA, 0x00, 0x1C, 0xAB, 0x39, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x98, 0x01, 0xF0, -0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA0, 0xF0, 0x84, 0x9A, 0x02, 0xF0, 0x00, 0x6B, -0x8C, 0xEB, 0x08, 0x23, 0x02, 0xF0, 0x01, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, -0x00, 0x18, 0x35, 0xDC, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x98, -0x66, 0xF4, 0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x98, 0x01, 0xF0, -0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x7C, 0x9B, -0xA0, 0xF0, 0x84, 0x9A, 0x8C, 0xEB, 0x09, 0x23, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0x74, 0x9B, -0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, -0xA2, 0x08, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x98, 0x66, 0xF4, -0x58, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x06, 0xF5, 0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x78, 0x9B, 0xA0, 0xF0, -0x84, 0x9A, 0x8C, 0xEB, 0x20, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x7C, 0x9B, 0x8C, 0xEB, -0xC0, 0xF0, 0x84, 0xA2, 0xA0, 0xF0, 0x64, 0xDA, -0x7F, 0x6B, 0x8C, 0xEB, 0x07, 0x2B, 0xC3, 0xF3, -0x4F, 0xA2, 0x0C, 0x72, 0x03, 0x61, 0x80, 0x18, -0x3C, 0x37, 0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6C, -0xA0, 0xF0, 0x64, 0x9A, 0x83, 0xF4, 0x98, 0x9C, -0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, -0x8C, 0x98, 0x66, 0xF4, 0x58, 0x9A, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x98, -0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x43, 0xF2, 0x18, 0xA2, 0x01, 0x6B, -0x04, 0xD2, 0x6E, 0xE8, 0x06, 0x28, 0x0B, 0x6C, -0x80, 0x18, 0xB2, 0x52, 0x04, 0x92, 0x43, 0xF2, -0x18, 0xC2, 0x80, 0x18, 0x43, 0x55, 0x80, 0x18, -0x5D, 0x55, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x9B, 0x66, 0xF4, -0x58, 0x9A, 0x40, 0xEA, 0xB0, 0x16, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x1C, 0x4A, -0x40, 0x9A, 0x10, 0xF0, 0x23, 0x68, 0x69, 0xF4, -0x01, 0x48, 0x00, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x01, 0x69, 0x01, 0xF0, -0x54, 0x9A, 0x06, 0xF5, 0x88, 0x9B, 0x2B, 0xE9, -0xB1, 0x67, 0x40, 0xEA, 0x01, 0x4A, 0x0A, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x5C, 0x9A, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0x00, 0x1C, 0xAC, 0x39, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, 0x30, 0x9A, +0x10, 0xF0, 0x23, 0x68, 0x6B, 0xF4, 0x19, 0x48, +0x00, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0xF0, 0x54, 0x9A, 0x67, 0xF4, +0x80, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x01, 0x4A, 0x03, 0x22, 0x01, 0x48, 0x00, 0xD9, +0xE7, 0x17, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xAB, 0xF4, +0x1D, 0x4A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, 0x8C, 0x9B, +0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, +0x78, 0x9B, 0xA0, 0xF0, 0x84, 0x9A, 0x8C, 0xEB, +0x09, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF3, +0x64, 0x9B, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x80, 0x18, 0xDF, 0x04, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, 0x8C, 0x98, +0x87, 0xF3, 0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x67, 0xF4, 0x8C, 0x98, 0x01, 0xF0, +0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA0, 0xF0, 0x84, 0x9A, 0x08, 0x6B, 0x8C, 0xEB, +0x07, 0x23, 0x09, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xA0, 0xF0, 0x64, 0xDA, 0x80, 0x18, 0x31, 0x0E, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x06, 0xF5, 0x8C, 0x9B, 0x01, 0xF0, 0x48, 0x9A, -0xB1, 0x67, 0x01, 0x48, 0x40, 0xEA, 0x00, 0x18, -0xC2, 0xD3, 0x00, 0x18, 0xBE, 0xD3, 0x00, 0x18, -0xBA, 0xD3, 0x00, 0x18, 0xB6, 0xD3, 0x00, 0x18, -0xB2, 0xD3, 0x00, 0x18, 0xAE, 0xD3, 0xFC, 0x6C, -0x00, 0x18, 0x19, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF5, 0x8C, 0x9B, -0x66, 0xF4, 0x58, 0x9A, 0x40, 0xEA, 0x00, 0x1C, -0xAB, 0x39, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, -0x1C, 0x4A, 0x40, 0x9A, 0x00, 0xDA, 0xB0, 0x17, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, -0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0x1E, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x06, 0xF5, -0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, -0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0x1E, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x06, 0xF5, -0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, -0x01, 0x72, 0x0C, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0x1E, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x06, 0xF5, +0x67, 0xF4, 0x8C, 0x9B, 0x87, 0xF3, 0x50, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xAB, 0xF4, +0x1E, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x69, 0x00, 0x18, +0x19, 0xC7, 0x00, 0x68, 0x00, 0x6C, 0x00, 0x18, +0x2F, 0xD7, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x0A, 0x70, 0xF8, 0x61, 0x01, 0x6B, 0x6E, 0xE9, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x4C, 0xE9, 0x10, 0xF0, 0x23, 0x6A, 0x8B, 0xF5, +0x05, 0x4A, 0x29, 0xE2, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x67, 0xF4, +0x8C, 0x9B, 0x01, 0xF0, 0x48, 0x98, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x80, 0x18, 0xAE, 0x13, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x67, 0xF4, 0x8C, 0x9B, 0x87, 0xF3, 0x50, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x67, 0xF4, +0x8C, 0x9B, 0x01, 0xF0, 0x48, 0x98, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, +0x02, 0x6B, 0x8C, 0xEB, 0x09, 0x23, 0x03, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x80, 0x18, 0xF1, 0x36, 0x80, 0x18, 0x46, 0x37, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, +0x67, 0xF4, 0x8C, 0x98, 0x87, 0xF3, 0x50, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, +0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, +0x04, 0x6B, 0x8C, 0xEB, 0x09, 0x23, 0x05, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x00, 0x18, 0xAD, 0xD9, 0x00, 0x18, 0x35, 0xDA, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, +0x67, 0xF4, 0x8C, 0x98, 0x87, 0xF3, 0x50, 0x9A, +0x40, 0xEA, 0x00, 0x1C, 0xAC, 0x39, 0x30, 0xF0, +0x20, 0x6A, 0x67, 0xF4, 0x8C, 0x98, 0x01, 0xF0, +0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x43, 0xF4, 0x84, 0xA2, 0xC3, 0xF3, 0x6B, 0xA2, +0x8E, 0xEB, 0x05, 0x23, 0xC0, 0xF0, 0x87, 0xA2, +0x96, 0x34, 0x00, 0x18, 0xB3, 0xCF, 0x30, 0xF0, +0x20, 0x6A, 0xA8, 0xF2, 0x54, 0x9A, 0x02, 0x2A, +0x00, 0x18, 0x5C, 0xCC, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, 0x8C, 0x98, +0x87, 0xF3, 0x50, 0x9A, 0x40, 0xEA, 0x00, 0x1C, +0xAB, 0x39, 0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, +0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA0, 0xF0, 0x84, 0x9A, +0x02, 0xF0, 0x00, 0x6B, 0x8C, 0xEB, 0x08, 0x23, +0x02, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xA0, 0xF0, 0x64, 0xDA, 0x00, 0x18, 0x52, 0xE1, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, +0x67, 0xF4, 0x8C, 0x98, 0x87, 0xF3, 0x50, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, +0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF1, 0x70, 0x9B, 0xA0, 0xF0, 0x84, 0x9A, +0x8C, 0xEB, 0x09, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF3, 0x68, 0x9B, 0x8C, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x80, 0x18, 0xCD, 0x05, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, +0x8C, 0x98, 0x87, 0xF3, 0x50, 0x9A, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, 0x8C, 0x98, +0x01, 0xF0, 0x48, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF3, +0x6C, 0x9B, 0xA0, 0xF0, 0x84, 0x9A, 0x8C, 0xEB, +0x20, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF3, +0x70, 0x9B, 0x8C, 0xEB, 0xC0, 0xF0, 0x84, 0xA2, +0xA0, 0xF0, 0x64, 0xDA, 0x7F, 0x6B, 0x8C, 0xEB, +0x07, 0x2B, 0xC3, 0xF3, 0x4B, 0xA2, 0x0C, 0x72, +0x03, 0x61, 0x80, 0x18, 0xA3, 0x34, 0x0D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, +0xA4, 0xF3, 0x8C, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x67, 0xF4, 0x8C, 0x98, 0x87, 0xF3, +0x50, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x67, 0xF4, 0x8C, 0x98, 0x01, 0xF0, 0x48, 0x9A, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x43, 0xF2, +0x14, 0xA2, 0x01, 0x6B, 0x04, 0xD2, 0x6E, 0xE8, +0x06, 0x28, 0x0B, 0x6C, 0x80, 0x18, 0xCD, 0x57, +0x04, 0x92, 0x43, 0xF2, 0x14, 0xC2, 0x80, 0x18, +0x89, 0x5A, 0x80, 0x18, 0xA3, 0x5A, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, +0x8C, 0x9B, 0x87, 0xF3, 0x50, 0x9A, 0x40, 0xEA, +0xB0, 0x16, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x10, 0x4A, 0x40, 0x9A, 0x10, 0xF0, +0x23, 0x68, 0x2C, 0xF0, 0x15, 0x48, 0x00, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0x69, 0x01, 0xF0, 0x54, 0x9A, 0x67, 0xF4, +0x88, 0x9B, 0x2B, 0xE9, 0xB1, 0x67, 0x40, 0xEA, +0x01, 0x4A, 0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF6, 0x5C, 0x9A, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x00, 0x1C, 0xAC, 0x39, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x67, 0xF4, 0x8C, 0x9B, +0x01, 0xF0, 0x48, 0x9A, 0xB1, 0x67, 0x01, 0x48, +0x40, 0xEA, 0x00, 0x18, 0xB7, 0xD8, 0x00, 0x18, +0xB3, 0xD8, 0x00, 0x18, 0xAF, 0xD8, 0x00, 0x18, +0xAB, 0xD8, 0x00, 0x18, 0xA7, 0xD8, 0x00, 0x18, +0xA3, 0xD8, 0xFC, 0x6C, 0x00, 0x18, 0x2A, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x67, 0xF4, 0x8C, 0x9B, 0x87, 0xF3, 0x50, 0x9A, +0x40, 0xEA, 0x00, 0x1C, 0xAB, 0x39, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF0, 0x10, 0x4A, 0x40, 0x9A, +0x00, 0xDA, 0xB0, 0x17, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, +0xFC, 0x6C, 0x00, 0x18, 0x2F, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, +0x58, 0x9A, 0x67, 0xF4, 0x88, 0x9B, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, +0xFC, 0x6C, 0x00, 0x18, 0x2F, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, +0x58, 0x9A, 0x67, 0xF4, 0x88, 0x9B, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0C, 0x61, +0xFC, 0x6C, 0x00, 0x18, 0x2F, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, +0x58, 0x9A, 0x67, 0xF4, 0x88, 0x9B, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0E, 0x61, +0xFC, 0x6C, 0x00, 0x18, 0x2F, 0xC2, 0x00, 0x18, +0x24, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x67, 0xF4, 0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0E, 0x61, 0xFC, 0x6C, 0x00, 0x18, -0x1E, 0xC2, 0x00, 0x18, 0x25, 0xD7, 0x30, 0xF0, +0x2F, 0xC2, 0x00, 0x18, 0xF4, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0x06, 0xF5, 0x88, 0x9B, 0x40, 0xEA, +0x58, 0x9A, 0x67, 0xF4, 0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, 0x0E, 0x61, -0xFC, 0x6C, 0x00, 0x18, 0x1E, 0xC2, 0x00, 0x18, -0xF5, 0xD6, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x06, 0xF5, -0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x44, 0x9A, 0x01, 0x72, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x68, 0xFC, 0x6C, 0xA6, 0xF6, 0x00, 0x48, -0x00, 0x18, 0x1E, 0xC2, 0x00, 0x18, 0xFC, 0xD6, -0x48, 0x98, 0x20, 0x6B, 0x6C, 0xEA, 0x07, 0x22, -0x00, 0x18, 0x18, 0xD9, 0x48, 0x98, 0x21, 0x6B, -0x6B, 0xEB, 0x6C, 0xEA, 0x48, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x01, 0xF0, -0x58, 0x9A, 0x06, 0xF5, 0x88, 0x9B, 0x40, 0xEA, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x44, 0x9A, -0xE1, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x6C, 0xEA, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x44, 0x9A, 0x01, 0x72, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xFC, 0x6C, +0x08, 0xF2, 0x10, 0x48, 0x00, 0x18, 0x2F, 0xC2, +0x00, 0x18, 0xFB, 0xDB, 0x48, 0x98, 0x20, 0x6B, +0x6C, 0xEA, 0x07, 0x22, 0x00, 0x18, 0x31, 0xDE, +0x48, 0x98, 0x21, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, +0x48, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x01, 0xF0, 0x58, 0x9A, 0x67, 0xF4, +0x88, 0x9B, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF3, 0x54, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, +0x40, 0xAA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF3, 0x58, 0x9A, +0x60, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x40, 0x9A, 0x60, 0x9A, 0xFF, 0xF7, -0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x58, 0x9A, -0x01, 0x6B, 0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, -0x6E, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x64, 0x9B, -0x44, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x60, 0x9B, -0x63, 0xF4, 0x84, 0x9C, 0x8C, 0xEB, 0x43, 0xEB, -0x02, 0x60, 0x6F, 0xEB, 0x69, 0xE2, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x39, 0xE0, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x33, 0xE0, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x85, 0xE0, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x12, 0xE1, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x86, 0xE1, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x2D, 0xE0, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x03, 0x6F, 0x8C, 0xEF, 0x64, 0x67, 0x46, 0x67, -0x04, 0x27, 0x0B, 0x10, 0xA0, 0xDB, 0xFC, 0x4A, -0x04, 0x4B, 0x04, 0x5A, 0xFB, 0x60, 0x03, 0x6A, -0x4C, 0xEE, 0x03, 0x10, 0xA0, 0xC4, 0xFF, 0x4E, -0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, 0x20, 0xE8, -0xFF, 0x6A, 0xAC, 0xEA, 0x03, 0x10, 0x40, 0xC4, -0xFF, 0x4E, 0x01, 0x4C, 0xFC, 0x2E, 0x00, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x03, 0x6B, 0x05, 0x67, 0x6C, 0xE8, 0x44, 0x67, -0xE4, 0x67, 0x85, 0x67, 0x12, 0x28, 0x4C, 0xEB, -0x10, 0x2B, 0x86, 0x67, 0x06, 0x10, 0x61, 0xE5, -0x00, 0x98, 0x7D, 0xE2, 0xFC, 0x4C, 0x00, 0xDF, -0x04, 0x4B, 0x04, 0x5C, 0xF8, 0x60, 0xCA, 0x34, -0x88, 0x34, 0x03, 0x6B, 0x9D, 0xE2, 0x6C, 0xEE, -0x91, 0xE5, 0x00, 0x6B, 0x06, 0x10, 0x61, 0xE4, -0x00, 0xA0, 0x75, 0xE7, 0xFF, 0x4E, 0x00, 0xC5, -0x01, 0x4B, 0xF9, 0x2E, 0x01, 0x90, 0x01, 0x63, -0x20, 0xE8, 0x00, 0x65, 0x09, 0x10, 0x60, 0xA4, -0x40, 0xA5, 0xFF, 0x4E, 0x4A, 0xEB, 0x02, 0x60, -0x4B, 0xE3, 0x20, 0xE8, 0x01, 0x4C, 0x01, 0x4D, -0xF6, 0x2E, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0x06, 0x2C, 0x64, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF4, 0x7C, 0xDA, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF4, 0x9C, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF4, 0x5C, 0x9A, 0x32, 0x72, -0x2A, 0x60, 0x33, 0x5A, 0x0C, 0x60, 0x14, 0x72, -0x2E, 0x60, 0x15, 0x5A, 0x03, 0x60, 0x0A, 0x72, -0x12, 0x60, 0x20, 0xE8, 0x19, 0x72, 0x17, 0x60, -0x28, 0x72, 0x25, 0x60, 0x20, 0xE8, 0x64, 0x72, -0x2A, 0x60, 0x65, 0x5A, 0x03, 0x60, 0x50, 0x72, -0x1E, 0x60, 0x20, 0xE8, 0x78, 0x72, 0x2B, 0x60, -0xC8, 0x72, 0x31, 0x60, 0x20, 0xE8, 0x02, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x60, 0xDA, -0xE0, 0xF7, 0x1E, 0x4B, 0x31, 0x10, 0x09, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x60, 0xDA, -0xE4, 0xF3, 0x17, 0x4B, 0x29, 0x10, 0x11, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x60, 0xDA, -0xE8, 0xF3, 0x0F, 0x4B, 0x21, 0x10, 0x0D, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x60, 0xDA, -0x06, 0xF4, 0x08, 0x4B, 0x19, 0x10, 0x22, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x60, 0xDA, -0x11, 0xF0, 0x00, 0x6B, 0x11, 0x10, 0x28, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x60, 0xDA, -0x14, 0xF0, 0x00, 0x6B, 0x09, 0x10, 0x43, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x68, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x64, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF4, 0x5C, 0x9A, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x44, 0x9A, -0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, -0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, -0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x40, 0x9A, -0xFF, 0x63, 0x58, 0xEC, 0x12, 0xEA, 0x00, 0xD2, -0x00, 0x92, 0xFF, 0x4A, 0x00, 0xD2, 0x00, 0x92, -0xFB, 0x2A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xE9, 0xD3, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xED, -0x00, 0x18, 0xD0, 0xD3, 0x05, 0x97, 0x00, 0x6A, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xEE, -0x00, 0x18, 0xD5, 0xD3, 0x50, 0x67, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, -0x20, 0x10, 0xE0, 0xF3, 0x08, 0x70, 0x13, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, -0x80, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x7C, 0xDA, 0x00, 0x6A, 0x13, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x5C, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0xD8, 0x2A, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF3, 0x68, 0x9B, 0x83, 0xF7, -0x8C, 0x9C, 0x6D, 0xE5, 0x91, 0xE5, 0x00, 0x6E, -0xC0, 0xDB, 0x04, 0x4B, 0x8A, 0xEB, 0xFB, 0x61, -0xE7, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x50, 0x9A, 0x10, 0x6C, -0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x48, 0x9A, 0x49, 0xE5, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF7, 0x50, 0x9A, 0xFF, 0x6B, -0x55, 0xE5, 0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, -0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x69, 0xA2, -0x08, 0xD4, 0x30, 0xF0, 0x20, 0x69, 0x61, 0xC5, -0x01, 0x4B, 0xE6, 0xF4, 0x69, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF3, 0x88, 0x9B, 0x08, 0x93, -0x80, 0xF2, 0x4C, 0x99, 0x02, 0x6E, 0x91, 0xE3, -0x05, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF7, 0x94, 0x9B, 0x08, 0x93, 0xCE, 0xA0, -0x80, 0xF2, 0x4C, 0x99, 0xA2, 0x40, 0x91, 0xE3, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x24, 0x67, 0x00, 0x18, -0x48, 0xD4, 0x00, 0x6B, 0x46, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x44, 0x9A, 0xFF, 0xF7, -0x1F, 0x6E, 0xFF, 0x6F, 0x00, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF4, 0x44, 0x9A, 0x10, 0x6C, -0x8B, 0xEC, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA1, 0x40, 0x83, 0xF7, 0x58, 0x9A, 0x65, 0x67, -0xCC, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF7, 0x5C, 0x9A, 0x60, 0xA2, 0xFA, 0x65, -0xA2, 0x32, 0xEC, 0xEB, 0x8C, 0xEB, 0x42, 0x32, -0x6D, 0xEA, 0xEC, 0xEA, 0x7F, 0x67, 0x40, 0xC3, -0x87, 0xA9, 0x02, 0x4C, 0xCC, 0xEC, 0x00, 0x18, -0x61, 0xD4, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, -0x00, 0x18, 0x78, 0xD4, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x5C, 0x9A, 0x01, 0x6B, 0x80, 0xF2, -0x16, 0x6C, 0x60, 0xC2, 0x06, 0x02, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, -0x01, 0x6D, 0x00, 0x6E, 0x04, 0xF7, 0x10, 0x6F, -0x40, 0xEA, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, -0x62, 0x33, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x43, 0x67, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0xA0, 0xF6, -0x9E, 0xA0, 0xA0, 0xF6, 0x5F, 0xA0, 0x8E, 0xEA, -0x37, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x68, 0x9B, 0x40, 0x9A, 0x6C, 0xEA, 0x2C, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x90, 0x34, 0x47, 0xF0, -0x1E, 0x4A, 0x91, 0xE2, 0x00, 0x18, 0x8D, 0xD4, -0x1D, 0x22, 0xA0, 0xF6, 0x5E, 0xA0, 0x01, 0x4A, -0xA0, 0xF6, 0x5E, 0xC0, 0xA0, 0xF6, 0x7E, 0xA0, -0xA0, 0xF6, 0x5F, 0xA0, 0x6E, 0xEA, 0x06, 0x22, -0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, -0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA0, 0xF6, 0x7E, 0xA2, -0x50, 0x6C, 0x8E, 0xEB, 0x09, 0x2B, 0xA0, 0xF6, -0x7E, 0xC2, 0x06, 0x10, 0xA0, 0xF0, 0x44, 0x98, -0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0xA0, 0xF0, -0x44, 0x98, 0x04, 0x6B, 0xA4, 0x67, 0x6D, 0xEA, -0xA0, 0xF0, 0x44, 0xD8, 0xA0, 0xF6, 0x5E, 0xA8, -0x09, 0xF7, 0x00, 0x72, 0x07, 0x60, 0xA0, 0xF6, -0x5E, 0xA0, 0xA0, 0xF6, 0x9F, 0xA0, 0xFF, 0x4A, -0x8E, 0xEA, 0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x60, 0x9A, 0x00, 0xF2, 0x00, 0x6C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, -0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, -0x18, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9A, 0x47, 0xF0, -0x1E, 0x4B, 0x90, 0x34, 0x91, 0xE3, 0x10, 0x6E, -0x40, 0xEA, 0xA0, 0xF6, 0x5F, 0xA0, 0x50, 0x6B, -0x01, 0x4A, 0xA0, 0xF6, 0x5F, 0xC0, 0xA0, 0xF6, -0x5F, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, 0xA0, 0xF6, -0x5F, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x84, 0xF2, 0x5C, 0x9A, 0x01, 0x6B, 0x40, 0x9A, +0x42, 0x32, 0x52, 0x32, 0x6E, 0xEA, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF3, 0x7C, 0x9B, 0x44, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x60, 0x9B, 0x64, 0xF3, 0x98, 0x9C, +0x8C, 0xEB, 0x43, 0xEB, 0x02, 0x60, 0x6F, 0xEB, +0x69, 0xE2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x6A, 0xE5, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF4, -0x48, 0xA3, 0xFF, 0x6F, 0xE0, 0xF0, 0xC7, 0xA5, -0x41, 0xC5, 0x43, 0xA5, 0xE6, 0xF4, 0x68, 0xA3, -0x03, 0x4A, 0xEC, 0xEA, 0x09, 0x10, 0xED, 0x42, -0xFF, 0x68, 0x0C, 0xEF, 0xFD, 0xE5, 0x64, 0xC7, -0xE6, 0xA7, 0x03, 0x4F, 0xE9, 0xE2, 0x0C, 0xEA, -0xEF, 0x46, 0xE2, 0xEA, 0xF4, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE6, 0xF4, 0x68, 0xA2, 0x01, 0x4B, -0xE6, 0xF4, 0x68, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x68, 0x9B, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0x71, 0xE4, 0x40, 0xEA, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x24, 0x67, 0x00, 0x18, 0x48, 0xD4, 0x00, 0x6B, -0x3C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0x44, 0x9A, 0x0F, 0x6C, 0xFF, 0xF7, 0x1F, 0x6B, -0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF4, -0x44, 0x9A, 0x4C, 0xE8, 0xA1, 0x40, 0xA2, 0x32, -0x42, 0x32, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF7, 0x98, 0x9C, 0xAC, 0xEB, 0x60, 0xCC, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, 0x7C, 0x9B, -0x40, 0xC3, 0xE0, 0xF0, 0x87, 0xA1, 0x00, 0x18, -0x61, 0xD4, 0x87, 0x40, 0x12, 0x4C, 0xB1, 0x67, -0x00, 0x18, 0x01, 0xD5, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x5C, 0x9A, 0x01, 0x6B, 0x80, 0xF2, -0x16, 0x6C, 0x60, 0xC2, 0x06, 0x02, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, -0x01, 0x6D, 0x00, 0x6E, 0x04, 0xF7, 0x10, 0x6F, -0x40, 0xEA, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, -0x62, 0x33, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x43, 0x67, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0x42, 0xF5, -0x63, 0xA0, 0x42, 0xF5, 0x44, 0xA0, 0x6E, 0xEA, -0x3E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, -0x88, 0x9C, 0x40, 0x9A, 0x8C, 0xEA, 0x33, 0x2A, -0xE8, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x67, 0xF5, 0x00, 0x4A, 0x12, 0xEB, 0x71, 0xE2, -0x00, 0x18, 0x1A, 0xD5, 0x07, 0x2A, 0xA0, 0xF0, -0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, -0x44, 0xD8, 0x21, 0x10, 0x42, 0xF5, 0x43, 0xA0, -0x10, 0x6B, 0x01, 0x4A, 0x42, 0xF5, 0x43, 0xC0, -0x42, 0xF5, 0x43, 0xA0, 0x6E, 0xEA, 0x02, 0x2A, -0x42, 0xF5, 0x43, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x42, 0xF5, 0x83, 0xA2, -0x42, 0xF5, 0x64, 0xA2, 0x8E, 0xEB, 0x07, 0x23, -0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x04, 0x10, 0x42, 0xF5, -0x82, 0xC2, 0x42, 0xF5, 0x60, 0xCA, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x42, 0xF5, 0x63, 0xA2, 0xA4, 0x67, 0x04, 0x2B, -0x42, 0xF5, 0x44, 0xA2, 0x0F, 0x72, 0x0B, 0x60, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x42, 0xF5, 0x43, 0xA0, 0x42, 0xF5, 0x64, 0xA0, -0xFF, 0x4A, 0x6E, 0xEA, 0x15, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF2, 0x8C, 0x9C, 0x40, 0x9B, +0x00, 0x18, 0x64, 0xE5, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xB6, 0xE5, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x43, 0xE6, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xB7, 0xE6, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x5E, 0xE5, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x03, 0x6F, 0x8C, 0xEF, +0x64, 0x67, 0x46, 0x67, 0x04, 0x27, 0x0B, 0x10, +0xA0, 0xDB, 0xFC, 0x4A, 0x04, 0x4B, 0x04, 0x5A, +0xFB, 0x60, 0x03, 0x6A, 0x4C, 0xEE, 0x03, 0x10, +0xA0, 0xC4, 0xFF, 0x4E, 0x01, 0x4C, 0xFC, 0x2E, +0x00, 0x6A, 0x20, 0xE8, 0xFF, 0x6A, 0xAC, 0xEA, +0x03, 0x10, 0x40, 0xC4, 0xFF, 0x4E, 0x01, 0x4C, +0xFC, 0x2E, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x03, 0x6B, 0x05, 0x67, +0x6C, 0xE8, 0x44, 0x67, 0xE4, 0x67, 0x85, 0x67, +0x12, 0x28, 0x4C, 0xEB, 0x10, 0x2B, 0x86, 0x67, +0x06, 0x10, 0x61, 0xE5, 0x00, 0x98, 0x7D, 0xE2, +0xFC, 0x4C, 0x00, 0xDF, 0x04, 0x4B, 0x04, 0x5C, +0xF8, 0x60, 0xCA, 0x34, 0x88, 0x34, 0x03, 0x6B, +0x9D, 0xE2, 0x6C, 0xEE, 0x91, 0xE5, 0x00, 0x6B, +0x06, 0x10, 0x61, 0xE4, 0x00, 0xA0, 0x75, 0xE7, +0xFF, 0x4E, 0x00, 0xC5, 0x01, 0x4B, 0xF9, 0x2E, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x09, 0x10, 0x60, 0xA4, 0x40, 0xA5, 0xFF, 0x4E, +0x4A, 0xEB, 0x02, 0x60, 0x4B, 0xE3, 0x20, 0xE8, +0x01, 0x4C, 0x01, 0x4D, 0xF6, 0x2E, 0x00, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0x06, 0x2C, 0x64, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x27, 0xF4, 0x78, 0xDA, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x27, 0xF4, +0x98, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x27, 0xF4, +0x58, 0x9A, 0x32, 0x72, 0x2A, 0x60, 0x33, 0x5A, +0x0C, 0x60, 0x14, 0x72, 0x2E, 0x60, 0x15, 0x5A, +0x03, 0x60, 0x0A, 0x72, 0x12, 0x60, 0x20, 0xE8, +0x19, 0x72, 0x17, 0x60, 0x28, 0x72, 0x25, 0x60, +0x20, 0xE8, 0x64, 0x72, 0x2A, 0x60, 0x65, 0x5A, +0x03, 0x60, 0x50, 0x72, 0x1E, 0x60, 0x20, 0xE8, +0x78, 0x72, 0x2B, 0x60, 0xC8, 0x72, 0x31, 0x60, +0x20, 0xE8, 0x02, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF4, 0x7C, 0xDA, 0xE0, 0xF7, 0x1E, 0x4B, +0x31, 0x10, 0x09, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF4, 0x7C, 0xDA, 0xE4, 0xF3, 0x17, 0x4B, +0x29, 0x10, 0x11, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF4, 0x7C, 0xDA, 0xE8, 0xF3, 0x0F, 0x4B, +0x21, 0x10, 0x0D, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF4, 0x7C, 0xDA, 0x06, 0xF4, 0x08, 0x4B, +0x19, 0x10, 0x22, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF4, 0x7C, 0xDA, 0x11, 0xF0, 0x00, 0x6B, +0x11, 0x10, 0x28, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF4, 0x7C, 0xDA, 0x14, 0xF0, 0x00, 0x6B, +0x09, 0x10, 0x43, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF4, 0x7C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x47, 0xF4, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x27, 0xF4, 0x58, 0x9A, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x47, 0xF4, 0x40, 0x9A, 0xFF, 0x63, 0x58, 0xEC, +0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, +0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x27, 0xF4, 0x5C, 0x9A, 0xFF, 0x63, 0x58, 0xEC, +0x12, 0xEA, 0x00, 0xD2, 0x00, 0x92, 0xFF, 0x4A, +0x00, 0xD2, 0x00, 0x92, 0xFB, 0x2A, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0xDE, 0xD8, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xED, 0x00, 0x18, 0xC5, 0xD8, +0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x04, 0x67, 0x4C, 0xEE, 0x00, 0x18, 0xCA, 0xD8, +0x50, 0x67, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x68, 0x20, 0x10, 0xE0, 0xF3, +0x08, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x78, 0x9A, 0x80, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, 0x7C, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, 0xAC, 0x10, -0x23, 0xA5, 0xFF, 0xF7, 0x1F, 0x6A, 0x04, 0x49, -0x4C, 0xE9, 0x42, 0xF5, 0x40, 0xA8, 0x22, 0x2A, +0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, 0x00, 0x6A, +0x13, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF1, 0x54, 0x9A, 0x60, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0xD8, 0x2A, 0x01, 0x6A, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF6, +0x6C, 0x9B, 0x84, 0xF6, 0x90, 0x9C, 0x6D, 0xE5, +0x91, 0xE5, 0x00, 0x6E, 0xC0, 0xDB, 0x04, 0x4B, +0x8A, 0xEB, 0xFB, 0x61, 0xE7, 0xF7, 0x1F, 0x6B, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x44, 0x9A, 0x10, 0x6C, 0x4D, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF6, 0x4C, 0x9A, 0x49, 0xE5, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF6, +0x54, 0x9A, 0xFF, 0x6B, 0x55, 0xE5, 0x40, 0xA5, +0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC5, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x47, 0xF4, 0x65, 0xA2, 0x08, 0xD4, 0x30, 0xF0, +0x20, 0x69, 0x61, 0xC5, 0x01, 0x4B, 0x47, 0xF4, +0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF6, +0x8C, 0x9B, 0x08, 0x93, 0x80, 0xF2, 0x4C, 0x99, +0x02, 0x6E, 0x91, 0xE3, 0x05, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF6, 0x98, 0x9B, +0x08, 0x93, 0xCE, 0xA0, 0x80, 0xF2, 0x4C, 0x99, +0xA2, 0x40, 0x91, 0xE3, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x24, 0x67, 0x00, 0x18, 0x3D, 0xD9, 0x00, 0x6B, +0x46, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF3, +0x5C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6E, 0xFF, 0x6F, +0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF3, +0x58, 0x9A, 0x10, 0x6C, 0x8B, 0xEC, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA1, 0x40, 0x84, 0xF6, +0x5C, 0x9A, 0x65, 0x67, 0xCC, 0xEB, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF6, 0x40, 0x9A, +0x60, 0xA2, 0xFA, 0x65, 0xA2, 0x32, 0xEC, 0xEB, +0x8C, 0xEB, 0x42, 0x32, 0x6D, 0xEA, 0xEC, 0xEA, +0x7F, 0x67, 0x40, 0xC3, 0x87, 0xA9, 0x02, 0x4C, +0xCC, 0xEC, 0x00, 0x18, 0x56, 0xD9, 0x87, 0x40, +0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0x6D, 0xD9, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x54, 0x9A, +0x01, 0x6B, 0x80, 0xF2, 0x16, 0x6C, 0x60, 0xC2, +0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x48, 0x9A, 0x01, 0x6D, 0x00, 0x6E, +0x04, 0xF7, 0x10, 0x6F, 0x40, 0xEA, 0x4B, 0xEB, +0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x43, 0x67, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0xA0, 0xF6, 0x98, 0xA0, 0xA0, 0xF6, +0x59, 0xA0, 0x8E, 0xEA, 0x37, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF6, 0x44, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF1, 0x7C, 0x9B, 0x40, 0x9A, +0x6C, 0xEA, 0x2C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x90, 0x34, 0xC8, 0xF3, 0x08, 0x4A, 0x91, 0xE2, +0x00, 0x18, 0x82, 0xD9, 0x1D, 0x22, 0xA0, 0xF6, +0x58, 0xA0, 0x01, 0x4A, 0xA0, 0xF6, 0x58, 0xC0, +0xA0, 0xF6, 0x78, 0xA0, 0xA0, 0xF6, 0x59, 0xA0, +0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, +0x04, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA0, 0xF6, 0x78, 0xA2, 0x50, 0x6C, 0x8E, 0xEB, +0x09, 0x2B, 0xA0, 0xF6, 0x78, 0xC2, 0x06, 0x10, +0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, 0x6D, 0xEA, +0xA0, 0xF0, 0x44, 0xD8, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, +0xA4, 0x67, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, +0xA0, 0xF6, 0x58, 0xA8, 0x09, 0xF7, 0x00, 0x72, +0x07, 0x60, 0xA0, 0xF6, 0x58, 0xA0, 0xA0, 0xF6, +0x99, 0xA0, 0xFF, 0x4A, 0x8E, 0xEA, 0x13, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, +0x00, 0xF2, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, 0x8D, 0xEB, +0xA3, 0xF3, 0x78, 0xDA, 0x18, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, +0x4C, 0x9A, 0xC8, 0xF3, 0x08, 0x4B, 0x90, 0x34, +0x91, 0xE3, 0x10, 0x6E, 0x40, 0xEA, 0xA0, 0xF6, +0x59, 0xA0, 0x50, 0x6B, 0x01, 0x4A, 0xA0, 0xF6, +0x59, 0xC0, 0xA0, 0xF6, 0x59, 0xA0, 0x6E, 0xEA, +0x02, 0x2A, 0xA0, 0xF6, 0x59, 0xC0, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x47, 0xF4, 0x44, 0xA3, 0xFF, 0x6F, +0xE0, 0xF0, 0xC7, 0xA5, 0x41, 0xC5, 0x43, 0xA5, +0x47, 0xF4, 0x64, 0xA3, 0x03, 0x4A, 0xEC, 0xEA, +0x09, 0x10, 0xED, 0x42, 0xFF, 0x68, 0x0C, 0xEF, +0xFD, 0xE5, 0x64, 0xC7, 0xE6, 0xA7, 0x03, 0x4F, +0xE9, 0xE2, 0x0C, 0xEA, 0xEF, 0x46, 0xE2, 0xEA, +0xF4, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x47, 0xF4, +0x64, 0xA2, 0x01, 0x4B, 0x47, 0xF4, 0x64, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF6, 0x6C, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0x71, 0xE4, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x24, 0x67, 0x00, 0x18, +0x3D, 0xD9, 0x00, 0x6B, 0x3C, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF3, 0x5C, 0x9A, 0x0F, 0x6C, +0xFF, 0xF7, 0x1F, 0x6B, 0x00, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF3, 0x58, 0x9A, 0x4C, 0xE8, +0xA1, 0x40, 0xA2, 0x32, 0x42, 0x32, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF6, 0x9C, 0x9C, +0xAC, 0xEB, 0x60, 0xCC, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF6, 0x60, 0x9B, 0x40, 0xC3, 0xE0, 0xF0, +0x87, 0xA1, 0x00, 0x18, 0x56, 0xD9, 0x87, 0x40, +0x12, 0x4C, 0xB1, 0x67, 0x00, 0x18, 0xF6, 0xD9, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x54, 0x9A, +0x01, 0x6B, 0x80, 0xF2, 0x16, 0x6C, 0x60, 0xC2, +0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x48, 0x9A, 0x01, 0x6D, 0x00, 0x6E, +0x04, 0xF7, 0x10, 0x6F, 0x40, 0xEA, 0x4B, 0xEB, +0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x43, 0x67, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x22, 0xF5, 0x7D, 0xA0, 0x22, 0xF5, +0x5E, 0xA0, 0x6E, 0xEA, 0x3E, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF6, 0x44, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF1, 0x9C, 0x9C, 0x40, 0x9A, +0x8C, 0xEA, 0x33, 0x2A, 0xE8, 0x6A, 0x58, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x0A, 0x4A, +0x12, 0xEB, 0x71, 0xE2, 0x00, 0x18, 0x0F, 0xDA, +0x07, 0x2A, 0xA0, 0xF0, 0x44, 0x98, 0x04, 0x6B, +0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x21, 0x10, +0x22, 0xF5, 0x5D, 0xA0, 0x10, 0x6B, 0x01, 0x4A, +0x22, 0xF5, 0x5D, 0xC0, 0x22, 0xF5, 0x5D, 0xA0, +0x6E, 0xEA, 0x02, 0x2A, 0x22, 0xF5, 0x5D, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x22, 0xF5, 0x9D, 0xA2, 0x22, 0xF5, 0x7E, 0xA2, +0x8E, 0xEB, 0x07, 0x23, 0xA0, 0xF0, 0x64, 0x9A, +0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x04, 0x10, 0x22, 0xF5, 0x9C, 0xC2, 0x22, 0xF5, +0x7A, 0xCA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF5, 0x7C, 0x98, 0xA4, 0xF6, 0x48, 0x9A, +0xA4, 0x67, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF4, 0x6C, 0x9B, 0x6E, 0xEA, 0x07, 0x22, +0x22, 0xF5, 0x5D, 0xA0, 0x22, 0xF5, 0x7E, 0xA0, +0xFF, 0x4A, 0x6E, 0xEA, 0x15, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xC4, 0xF1, 0x80, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, 0xAC, 0x10, +0x23, 0xA4, 0xFF, 0xF7, 0x1F, 0x6A, 0x04, 0x49, +0x4C, 0xE9, 0x22, 0xF5, 0x5A, 0xA8, 0x22, 0x2A, 0xE8, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9A, -0x67, 0xF5, 0x00, 0x4C, 0xFF, 0x6E, 0x2C, 0xEE, -0x12, 0xEB, 0x71, 0xE4, 0x40, 0xEA, 0x42, 0xF5, -0x44, 0xA0, 0x42, 0xF5, 0x63, 0xA0, 0x42, 0xF5, -0x20, 0xC8, 0x4E, 0xEB, 0x79, 0x2B, 0x01, 0x4A, -0x42, 0xF5, 0x44, 0xC0, 0x42, 0xF5, 0x44, 0xA0, -0x10, 0x6B, 0x6E, 0xEA, 0x71, 0x2A, 0x42, 0xF5, -0x44, 0xC0, 0x6E, 0x10, 0x62, 0xA5, 0x39, 0x2B, -0x4D, 0xE1, 0xE3, 0x53, 0x36, 0x60, 0x42, 0xF5, -0x62, 0xA0, 0xE8, 0x6C, 0x98, 0xEB, 0x12, 0xEB, -0x0D, 0xE3, 0xC0, 0xF6, 0x82, 0xA3, 0x2D, 0x2C, -0xC0, 0xF6, 0x83, 0xA3, 0xFF, 0x6E, 0xFC, 0x4A, -0xFF, 0x4C, 0xC0, 0xF6, 0x83, 0xC3, 0x42, 0xF5, -0x60, 0xA8, 0x42, 0xF5, 0x82, 0xA0, 0xCC, 0xEA, -0xFF, 0x4B, 0x42, 0xF5, 0x60, 0xC8, 0xE8, 0x6B, +0xC9, 0xF0, 0x0A, 0x4C, 0xFF, 0x6E, 0x2C, 0xEE, +0x12, 0xEB, 0x71, 0xE4, 0x40, 0xEA, 0x22, 0xF5, +0x5E, 0xA0, 0x22, 0xF5, 0x7D, 0xA0, 0x22, 0xF5, +0x3A, 0xC8, 0x4E, 0xEB, 0x79, 0x2B, 0x01, 0x4A, +0x22, 0xF5, 0x5E, 0xC0, 0x22, 0xF5, 0x5E, 0xA0, +0x10, 0x6B, 0x6E, 0xEA, 0x71, 0x2A, 0x22, 0xF5, +0x5E, 0xC0, 0x6E, 0x10, 0x62, 0xA4, 0x39, 0x2B, +0x4D, 0xE1, 0xE3, 0x53, 0x36, 0x60, 0x22, 0xF5, +0x7C, 0xA0, 0xE8, 0x6C, 0x98, 0xEB, 0x12, 0xEB, +0x0D, 0xE3, 0xA0, 0xF6, 0x9C, 0xA3, 0x2D, 0x2C, +0xA0, 0xF6, 0x9D, 0xA3, 0xFF, 0x6E, 0xFC, 0x4A, +0xFF, 0x4C, 0xA0, 0xF6, 0x9D, 0xC3, 0x22, 0xF5, +0x7A, 0xA8, 0x22, 0xF5, 0x9C, 0xA0, 0xCC, 0xEA, +0xFF, 0x4B, 0x22, 0xF5, 0x7A, 0xC8, 0xE8, 0x6B, 0x78, 0xEC, 0x2C, 0xEE, 0x12, 0xEC, 0x91, 0xE0, 0x51, 0xE4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0xC0, 0xF6, 0x03, 0x4C, 0x40, 0xEA, -0x42, 0xF5, 0x42, 0xA0, 0xE8, 0x6B, 0x78, 0xEA, -0x12, 0xEA, 0x09, 0xE2, 0xC0, 0xF6, 0x63, 0xA2, -0x6D, 0xE1, 0xC0, 0xF6, 0x63, 0xC2, 0x42, 0xF5, -0x40, 0xA8, 0x45, 0xE1, 0x42, 0xF5, 0x20, 0xC8, -0x33, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x42, 0xF5, 0x84, 0xA0, 0xE8, 0x6A, +0x4C, 0x9A, 0xA0, 0xF6, 0x1D, 0x4C, 0x40, 0xEA, +0x22, 0xF5, 0x5C, 0xA0, 0xE8, 0x6B, 0x78, 0xEA, +0x12, 0xEA, 0x09, 0xE2, 0xA0, 0xF6, 0x7D, 0xA2, +0x6D, 0xE1, 0xA0, 0xF6, 0x7D, 0xC2, 0x22, 0xF5, +0x5A, 0xA8, 0x45, 0xE1, 0x22, 0xF5, 0x3A, 0xC8, +0x33, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x22, 0xF5, 0x9E, 0xA0, 0xE8, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x58, 0xEC, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x67, 0xF5, -0x00, 0x4B, 0xFF, 0x6E, 0x2C, 0xEE, 0x12, 0xEC, -0x91, 0xE3, 0x40, 0xEA, 0x42, 0xF5, 0x44, 0xA0, -0x10, 0x6B, 0x42, 0xF5, 0x20, 0xC8, 0x01, 0x4A, -0x42, 0xF5, 0x44, 0xC0, 0x42, 0xF5, 0x44, 0xA0, -0x6E, 0xEA, 0x02, 0x2A, 0x42, 0xF5, 0x44, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x42, 0xF5, 0x62, 0xA2, 0x10, 0x6C, 0x01, 0x4B, -0x42, 0xF5, 0x62, 0xC2, 0x42, 0xF5, 0x62, 0xA2, -0x8E, 0xEB, 0x02, 0x2B, 0x42, 0xF5, 0x62, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x42, 0xF5, 0x82, 0xA2, 0xE8, 0x6B, 0x78, 0xEC, -0x42, 0xF5, 0x80, 0xAA, 0x12, 0xEB, 0x4D, 0xE3, -0xA0, 0xF7, 0x87, 0xC3, 0xA0, 0xF0, 0x64, 0x9A, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xC9, 0xF0, +0x0A, 0x4B, 0xFF, 0x6E, 0x2C, 0xEE, 0x12, 0xEC, +0x91, 0xE3, 0x40, 0xEA, 0x22, 0xF5, 0x5E, 0xA0, +0x10, 0x6B, 0x22, 0xF5, 0x3A, 0xC8, 0x01, 0x4A, +0x22, 0xF5, 0x5E, 0xC0, 0x22, 0xF5, 0x5E, 0xA0, +0x6E, 0xEA, 0x02, 0x2A, 0x22, 0xF5, 0x5E, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x22, 0xF5, 0x7C, 0xA2, 0x10, 0x6C, 0x01, 0x4B, +0x22, 0xF5, 0x7C, 0xC2, 0x22, 0xF5, 0x7C, 0xA2, +0x8E, 0xEB, 0x02, 0x2B, 0x22, 0xF5, 0x7C, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x22, 0xF5, 0x9C, 0xA2, 0xE8, 0x6B, 0x78, 0xEC, +0x22, 0xF5, 0x9A, 0xAA, 0x12, 0xEB, 0x4D, 0xE3, +0xA0, 0xF7, 0x81, 0xC3, 0xA0, 0xF0, 0x64, 0x9A, 0x04, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, 0xCC, 0xEA, 0x06, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x71, 0xE4, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x71, 0xE4, 0x83, 0xF3, -0x78, 0xA4, 0xAC, 0xEA, 0xAF, 0xED, 0x6C, 0xED, -0xAD, 0xEA, 0x83, 0xF3, 0x58, 0xC4, 0x20, 0xE8, +0x08, 0xF2, 0x10, 0x4B, 0x71, 0xE4, 0x83, 0xF3, +0x74, 0xA4, 0xAC, 0xEA, 0xAF, 0xED, 0x6C, 0xED, +0xAD, 0xEA, 0x83, 0xF3, 0x54, 0xC4, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, 0xFF, 0x74, 0xAC, 0xEA, -0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x2A, 0xF2, -0x56, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x83, 0xF3, 0xB6, 0xA3, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF5, +0x42, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x83, 0xF3, 0xB2, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, 0xAC, 0xEC, 0x8D, 0xEA, -0x83, 0xF3, 0x56, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0x83, 0xF3, 0x52, 0xC3, 0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x01, 0xA4, 0x20, 0xA4, 0x0C, 0x20, 0x90, 0x67, -0xB1, 0x67, 0x00, 0x18, 0xE6, 0xD5, 0x30, 0xF0, +0xB1, 0x67, 0x00, 0x18, 0xDC, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x90, 0x67, 0xB1, 0x67, 0x53, 0x6E, 0x40, 0xEA, 0x7D, 0x67, 0x20, 0x6A, 0x50, 0xC3, 0x03, 0x6A, 0x4F, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x44, 0x9A, 0x9D, 0x67, 0x40, 0xA2, 0x52, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x83, 0xF3, -0x76, 0xA2, 0x83, 0xF3, 0x57, 0xA2, 0x73, 0xC4, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x83, 0xF3, +0x72, 0xA2, 0x83, 0xF3, 0x53, 0xA2, 0x73, 0xC4, 0x54, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, @@ -59828,20 +61235,20 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x09, 0x94, 0x01, 0x2C, 0x28, 0x22, 0xFF, 0x68, 0x0C, 0xEA, 0x0C, 0xEB, 0xA2, 0x67, 0xC3, 0x67, 0x91, 0x67, 0x0C, 0xD2, 0x0D, 0xD3, 0x00, 0x18, -0xD9, 0xD5, 0x0B, 0x94, 0x09, 0x93, 0x41, 0x41, +0xCF, 0xDA, 0x0B, 0x94, 0x09, 0x93, 0x41, 0x41, 0x0C, 0xEC, 0x0B, 0xD4, 0x0B, 0x96, 0x0C, 0xEA, 0x0C, 0xEB, 0x82, 0x67, 0xA3, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0xD2, 0x09, 0xD3, 0x00, 0x18, -0xD9, 0xD5, 0x40, 0xF4, 0x40, 0x98, 0x0C, 0x95, +0xCF, 0xDA, 0x40, 0xF4, 0x40, 0x98, 0x0C, 0x95, 0x0D, 0x96, 0x91, 0x67, 0x01, 0x6F, 0x40, 0xEA, 0x40, 0xF4, 0x40, 0x98, 0x0A, 0x94, 0x09, 0x95, 0x0B, 0x96, 0x02, 0x6F, 0x40, 0xEA, 0x91, 0x67, -0x00, 0x18, 0xC9, 0xDE, 0x7D, 0x67, 0x53, 0xC3, +0x00, 0x18, 0xFA, 0xE3, 0x7D, 0x67, 0x53, 0xC3, 0x42, 0x32, 0x54, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x45, 0xE1, 0x83, 0xF3, -0x58, 0xA1, 0x55, 0xC3, 0x83, 0xF3, 0x59, 0xA1, -0x56, 0xC3, 0xA3, 0xF3, 0x48, 0xA1, 0x57, 0xC3, -0xA3, 0xF3, 0x49, 0xA1, 0x58, 0xC3, 0x9D, 0x67, +0x08, 0xF2, 0x10, 0x4A, 0x45, 0xE1, 0x83, 0xF3, +0x54, 0xA1, 0x55, 0xC3, 0x83, 0xF3, 0x55, 0xA1, +0x56, 0xC3, 0xA3, 0xF3, 0x44, 0xA1, 0x57, 0xC3, +0xA3, 0xF3, 0x45, 0xA1, 0x58, 0xC3, 0x9D, 0x67, 0x21, 0x6A, 0x72, 0xA4, 0x50, 0xC4, 0x07, 0x6A, 0x4F, 0xCC, 0x20, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x08, 0x93, 0x6D, 0xEA, 0x52, 0xC4, 0x30, 0xF0, @@ -59850,1993 +61257,1998 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x09, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x04, 0x67, 0x30, 0xF0, 0x20, 0x6C, -0x66, 0xF7, 0x19, 0x4C, 0xB0, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0x81, 0xA0, 0x00, 0x18, 0x73, 0xC9, -0x82, 0xA0, 0x02, 0x24, 0x00, 0x18, 0x45, 0xC9, -0x83, 0xA0, 0x02, 0x24, 0x00, 0x18, 0xA2, 0xCA, +0xE8, 0xF2, 0x09, 0x4C, 0xB0, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0x81, 0xA0, 0x00, 0x18, 0x57, 0xCA, +0x82, 0xA0, 0x02, 0x24, 0x00, 0x18, 0x29, 0xCA, +0x83, 0xA0, 0x02, 0x24, 0x00, 0x18, 0x86, 0xCB, 0x05, 0x97, 0x04, 0x90, 0x01, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xEA, 0xF2, 0x79, 0xC2, 0x03, 0x63, +0x20, 0x6A, 0x6B, 0xF6, 0x65, 0xC2, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x1A, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x07, 0x6A, 0x4F, 0xCB, 0x80, 0x18, -0xA5, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0xEB, 0x5B, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x19, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x08, 0x6A, 0x4F, 0xCB, 0x80, 0x18, -0x6E, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0xB4, 0x5B, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x8C, 0xEA, 0xE3, 0xF7, -0x7C, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF0, -0x80, 0x9C, 0xCC, 0xEB, 0x40, 0xF6, 0xA0, 0x35, +0x30, 0xF0, 0x20, 0x6B, 0x8C, 0xEA, 0x04, 0xF7, +0x68, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF7, +0x8C, 0x9C, 0xCC, 0xEB, 0x40, 0xF6, 0xA0, 0x35, 0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0xAD, 0xEB, 0x01, 0x60, -0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF1, -0x9C, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF1, 0x80, 0x9C, 0x89, 0xE2, 0x60, 0xDA, +0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, +0x90, 0x9C, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF0, 0x94, 0x9C, 0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0xFF, 0x6B, 0x02, 0xF0, 0x00, 0x74, 0xAC, 0xEB, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF1, 0x9C, 0x9C, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF1, 0x80, 0x9C, 0x91, 0xE2, +0x84, 0xF0, 0x90, 0x9C, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x84, 0xF0, 0x94, 0x9C, 0x91, 0xE2, 0x00, 0x6D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF7, 0x9C, 0x9C, 0xD4, 0x36, 0x40, 0xF6, +0x04, 0xF7, 0x88, 0x9C, 0xD4, 0x36, 0x40, 0xF6, 0x60, 0x33, 0x8C, 0xEE, 0x6D, 0xEE, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xF0, 0x60, 0x9B, 0x6D, 0xEE, +0x20, 0x6B, 0x04, 0xF7, 0x6C, 0x9B, 0x6D, 0xEE, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x7C, 0x9B, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x60, 0x9B, +0x20, 0x6B, 0x84, 0xF0, 0x70, 0x9B, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, 0x74, 0x9B, 0x69, 0xE2, 0xC0, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x0F, 0xF5, 0x00, 0x6B, 0x78, 0xEE, 0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF7, 0x9C, 0x9C, 0x40, 0xF6, 0xA0, 0x35, +0x04, 0xF7, 0x88, 0x9C, 0x40, 0xF6, 0xA0, 0x35, 0x12, 0xEB, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, -0x04, 0xF0, 0x80, 0x9C, 0xAD, 0xEB, 0x8D, 0xEB, +0x04, 0xF7, 0x8C, 0x9C, 0xAD, 0xEB, 0x8D, 0xEB, 0x1F, 0xF7, 0x00, 0x6C, 0x4C, 0xEC, 0x02, 0xF0, 0x00, 0x74, 0x01, 0x60, 0x05, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF1, 0x9C, 0x9C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, 0x80, 0x9C, +0x20, 0x6C, 0x84, 0xF0, 0x90, 0x9C, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, 0x94, 0x9C, 0x89, 0xE2, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x44, 0x9A, -0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, -0x48, 0x9A, 0x40, 0x9A, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, 0x58, 0x9A, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, +0x5C, 0x9A, 0x40, 0x9A, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, 0x01, 0x72, 0x06, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, 0x58, 0x9A, 0x40, 0x9A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF1, 0x48, 0x9A, 0x40, 0x9A, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF7, 0xCC, 0x9B, -0xFD, 0x63, 0xE2, 0xF7, 0x0C, 0x4B, 0x02, 0xD6, +0x44, 0xF0, 0x5C, 0x9A, 0x40, 0x9A, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0xC0, 0x9B, +0xFD, 0x63, 0x23, 0xF7, 0x00, 0x4B, 0x02, 0xD6, 0xC1, 0x9B, 0x64, 0xAB, 0xFF, 0x6A, 0x03, 0xD6, 0xDD, 0x67, 0x68, 0xCE, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF7, 0xC4, 0x9B, 0xE2, 0xF7, 0x04, 0x4B, +0x03, 0xF7, 0xD8, 0x9B, 0x03, 0xF7, 0x18, 0x4B, 0x64, 0xA3, 0x4C, 0xEC, 0x00, 0xD6, 0xDD, 0x67, 0x64, 0xC6, 0x8D, 0xE6, 0xE0, 0xA3, 0x84, 0x33, 0x6D, 0xE6, 0xC4, 0xAB, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xED, 0xCC, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x0C, 0x2B, 0x5D, 0x67, 0x84, 0x34, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xAC, -0x43, 0xF1, 0x5C, 0x9A, 0x49, 0xE3, 0x60, 0xA2, +0x84, 0xF0, 0x50, 0x9A, 0x49, 0xE3, 0x60, 0xA2, 0xFF, 0x6A, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF1, 0x60, 0x9B, 0x79, 0xE6, 0x60, 0xA6, -0xE4, 0xED, 0x6C, 0xEA, 0xA7, 0x67, 0x4C, 0xED, -0x00, 0x6B, 0x01, 0x25, 0x01, 0x6B, 0xFF, 0x6A, -0x6C, 0xEA, 0x03, 0x63, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x69, 0x8C, 0xE9, 0x00, 0x68, 0xFF, 0x6A, -0x0C, 0xEA, 0x2E, 0xEA, 0x10, 0x2A, 0x91, 0x67, -0x00, 0x18, 0x97, 0xDC, 0x91, 0x67, 0x00, 0x18, -0x86, 0xDC, 0x91, 0x67, 0x00, 0x18, 0x9E, 0xDC, -0x91, 0x67, 0x00, 0x18, 0x68, 0xDC, 0x91, 0x67, -0x00, 0x18, 0x5E, 0xDC, 0x0F, 0x10, 0x90, 0x67, -0x00, 0x18, 0xBD, 0xDC, 0x90, 0x67, 0x00, 0x18, -0xAC, 0xDC, 0x90, 0x67, 0x00, 0x18, 0xC4, 0xDC, -0x90, 0x67, 0x00, 0x18, 0x7C, 0xDC, 0x90, 0x67, -0x00, 0x18, 0x72, 0xDC, 0x01, 0x48, 0x05, 0x70, -0xDA, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF0, 0x94, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0xA0, 0x9C, 0x52, 0x9B, -0xAC, 0xEA, 0x53, 0xDB, 0x40, 0xDC, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0xD1, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF7, 0x20, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x14, 0x4A, 0x40, 0x9A, -0x60, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x58, 0x9A, -0x04, 0xF0, 0x1C, 0x4C, 0x80, 0x9C, 0x00, 0x9A, -0x1A, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0x9C, -0x24, 0xF0, 0x00, 0x4A, 0x40, 0x9A, 0x01, 0xD4, -0x30, 0xF0, 0x20, 0x6C, 0x40, 0x9A, 0xA6, 0xF6, -0xE0, 0x9C, 0x00, 0xD2, 0x44, 0x67, 0xA6, 0xF6, -0x00, 0x4A, 0xC1, 0x9A, 0x83, 0x9A, 0x6C, 0xEF, -0xAC, 0xEE, 0x01, 0x93, 0xA2, 0x9A, 0xE8, 0xDA, -0x6C, 0xEC, 0x0C, 0xED, 0x64, 0x9A, 0x00, 0x90, -0x8B, 0xDA, 0xC9, 0xDA, 0x0C, 0xEB, 0xAA, 0xDA, -0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x14, 0x4A, 0x40, 0x9A, 0xE0, 0xD9, 0x18, 0x67, -0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, -0x1C, 0x4A, 0x40, 0x9A, 0xA0, 0xD8, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF0, 0x00, 0x4C, -0x80, 0x9C, 0x60, 0xDC, 0x05, 0x91, 0x04, 0x90, -0x03, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD1, -0x00, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x1C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, -0xE4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, -0xC8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x80, 0x98, 0xB4, 0x9A, 0x60, 0x9F, -0x20, 0x9E, 0x8C, 0xED, 0x95, 0x9A, 0xB7, 0xDA, -0x6C, 0xEC, 0x76, 0x9A, 0x98, 0xDA, 0x2C, 0xEB, -0x79, 0xDA, 0xA0, 0xD8, 0x80, 0xDF, 0x60, 0xDE, -0x01, 0x91, 0x00, 0x90, 0x01, 0x63, 0x20, 0xE8, +0x84, 0xF0, 0x74, 0x9B, 0x79, 0xE6, 0x60, 0xA6, +0x6C, 0xEA, 0x67, 0x67, 0x64, 0xED, 0x4C, 0xEB, +0x01, 0x6A, 0x15, 0x2B, 0x09, 0x2D, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0x6B, 0x08, 0xF2, 0x10, 0x4A, +0x44, 0xF3, 0x6E, 0xCA, 0x02, 0x6B, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6B, 0x08, 0xF2, +0x10, 0x4A, 0x44, 0xF3, 0x6E, 0xCA, 0x04, 0x6B, +0x44, 0xF3, 0x6C, 0xCA, 0x00, 0x6A, 0x03, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, +0x00, 0x68, 0xFF, 0x6A, 0x0C, 0xEA, 0x2E, 0xEA, +0x10, 0x2A, 0x91, 0x67, 0x00, 0x18, 0xB4, 0xE1, +0x91, 0x67, 0x00, 0x18, 0xA3, 0xE1, 0x91, 0x67, +0x00, 0x18, 0xBB, 0xE1, 0x91, 0x67, 0x00, 0x18, +0x85, 0xE1, 0x91, 0x67, 0x00, 0x18, 0x7B, 0xE1, +0x0F, 0x10, 0x90, 0x67, 0x00, 0x18, 0xDA, 0xE1, +0x90, 0x67, 0x00, 0x18, 0xC9, 0xE1, 0x90, 0x67, +0x00, 0x18, 0xE1, 0xE1, 0x90, 0x67, 0x00, 0x18, +0x99, 0xE1, 0x90, 0x67, 0x00, 0x18, 0x8F, 0xE1, +0x01, 0x48, 0x05, 0x70, 0xDA, 0x61, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF7, 0x80, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0xA0, 0x9C, 0x52, 0x9B, 0xAC, 0xEA, 0x53, 0xDB, +0x40, 0xDC, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0xD1, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF6, +0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, +0x08, 0x4A, 0x40, 0x9A, 0x60, 0x99, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF7, 0x44, 0x9A, 0x24, 0xF7, 0x08, 0x4C, +0x80, 0x9C, 0x00, 0x9A, 0x1A, 0x65, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0x9C, 0x24, 0xF7, 0x0C, 0x4A, +0x40, 0x9A, 0x01, 0xD4, 0x30, 0xF0, 0x20, 0x6C, +0x40, 0x9A, 0x08, 0xF2, 0xF0, 0x9C, 0x00, 0xD2, +0x44, 0x67, 0x08, 0xF2, 0x10, 0x4A, 0xC1, 0x9A, +0x83, 0x9A, 0x6C, 0xEF, 0xAC, 0xEE, 0x01, 0x93, +0xA2, 0x9A, 0xE8, 0xDA, 0x6C, 0xEC, 0x0C, 0xED, +0x64, 0x9A, 0x00, 0x90, 0x8B, 0xDA, 0xC9, 0xDA, +0x0C, 0xEB, 0xAA, 0xDA, 0x6C, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF2, 0x08, 0x4A, 0x40, 0x9A, +0xE0, 0xD9, 0x18, 0x67, 0xC0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF7, 0x08, 0x4A, 0x40, 0x9A, +0xA0, 0xD8, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6C, +0x24, 0xF7, 0x0C, 0x4C, 0x80, 0x9C, 0x60, 0xDC, +0x05, 0x91, 0x04, 0x90, 0x03, 0x63, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD1, 0x00, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF1, 0x10, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF7, 0xF0, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF7, 0xD4, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x80, 0x98, +0xB4, 0x9A, 0x60, 0x9F, 0x20, 0x9E, 0x8C, 0xED, +0x95, 0x9A, 0xB7, 0xDA, 0x6C, 0xEC, 0x76, 0x9A, +0x98, 0xDA, 0x2C, 0xEB, 0x79, 0xDA, 0xA0, 0xD8, +0x80, 0xDF, 0x60, 0xDE, 0x01, 0x91, 0x00, 0x90, +0x01, 0x63, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE0, 0xF0, 0x95, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, -0x06, 0x23, 0xA0, 0xF0, 0x64, 0x9A, 0x08, 0x6C, -0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x20, 0xE8, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0x95, 0xA2, +0x01, 0x6B, 0x8C, 0xEB, 0x06, 0x23, 0xA0, 0xF0, +0x64, 0x9A, 0x08, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x04, 0xF1, 0x90, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, 0x8D, 0xEB, +0xA3, 0xF3, 0x78, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF1, 0x9C, 0x9C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, -0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, -0x01, 0x72, 0x1F, 0x61, 0xC0, 0xF0, 0x64, 0xA0, -0x7F, 0x6A, 0x6C, 0xEA, 0x1A, 0x22, 0xC3, 0xF3, -0x5D, 0xA0, 0x01, 0x6B, 0x6E, 0xEA, 0x15, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x6C, 0x9B, -0xFF, 0x6C, 0x55, 0x4C, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x5C, 0x9A, 0x02, 0x6B, -0x00, 0x6D, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x48, 0x9A, 0xC0, 0xF0, 0xCC, 0xA0, -0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x6D, 0xB8, 0xEC, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x01, 0x6E, 0x12, 0xEC, 0x71, 0xE4, 0x40, 0xF1, -0xA2, 0xA4, 0xCC, 0xED, 0x1D, 0x25, 0x40, 0xF1, -0xA3, 0xA4, 0x42, 0xF6, 0x6C, 0x9B, 0x40, 0xF1, -0x82, 0xA4, 0x75, 0xE5, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0x6C, 0x9B, 0xBC, 0x35, 0x21, 0x4D, -0x75, 0xE5, 0xE0, 0xA5, 0x9E, 0x33, 0x9A, 0x34, -0xCC, 0xEC, 0x78, 0x33, 0x9C, 0x34, 0x4C, 0xEF, -0x8D, 0xEB, 0xED, 0xEB, 0x00, 0xF6, 0x60, 0x33, -0x00, 0xF6, 0x63, 0x33, 0x4C, 0xEB, 0x60, 0xC5, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x66, 0xF7, 0xA4, 0xA3, -0x7F, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, -0x4C, 0xEC, 0x02, 0x23, 0x00, 0x18, 0xBD, 0xCD, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, -0xA6, 0xF6, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xD4, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, -0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x15, 0x61, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, +0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x1F, 0x61, 0xC0, 0xF0, 0x64, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x0F, 0x22, 0xC3, 0xF3, 0x71, 0xA0, -0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, -0x51, 0xC0, 0xC3, 0xF3, 0x51, 0xA0, 0x07, 0x6B, -0x6C, 0xEA, 0x03, 0x2A, 0x04, 0x94, 0x00, 0x18, -0x50, 0xCE, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x1A, 0x22, 0xC3, 0xF3, 0x59, 0xA0, 0x01, 0x6B, +0x6E, 0xEA, 0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF1, 0x60, 0x9B, 0xFF, 0x6C, 0x55, 0x4C, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x50, 0x9A, 0x02, 0x6B, 0x00, 0x6D, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, +0xC0, 0xF0, 0xCC, 0xA0, 0x40, 0xEA, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0x07, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x01, 0x6E, 0x12, 0xEC, +0x71, 0xE4, 0x20, 0xF1, 0xBB, 0xA4, 0xCC, 0xED, +0x1D, 0x25, 0x20, 0xF1, 0xBC, 0xA4, 0x42, 0xF6, +0x68, 0x9B, 0x20, 0xF1, 0x9B, 0xA4, 0x75, 0xE5, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0x64, 0x9B, +0xBC, 0x35, 0x21, 0x4D, 0x75, 0xE5, 0xE0, 0xA5, +0x9E, 0x33, 0x9A, 0x34, 0xCC, 0xEC, 0x78, 0x33, +0x9C, 0x34, 0x4C, 0xEF, 0x8D, 0xEB, 0xED, 0xEB, +0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, +0x4C, 0xEB, 0x60, 0xC5, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0xC8, 0xF2, 0xB4, 0xA3, 0x7F, 0x6B, 0xFF, 0x6A, +0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x02, 0x23, +0x00, 0x18, 0x1A, 0xCF, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, -0x20, 0x68, 0x2C, 0xEC, 0xA6, 0xF6, 0x00, 0x48, +0x20, 0x68, 0x2C, 0xEC, 0x08, 0xF2, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD4, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, -0x01, 0x72, 0x21, 0x61, 0xC0, 0xF0, 0x64, 0xA0, -0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x1B, 0x22, -0xC0, 0xF0, 0x85, 0xA0, 0x10, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0x2C, 0xEB, 0x20, 0x73, 0x08, 0x60, -0x01, 0x72, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF4, 0x40, 0x9A, 0x40, 0xEA, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, 0x64, 0xA2, -0x7F, 0x6A, 0x6C, 0xEA, 0x02, 0x72, 0x03, 0x60, -0x04, 0x94, 0x00, 0x18, 0x20, 0xCE, 0x09, 0x97, +0x01, 0x72, 0x15, 0x61, 0xC0, 0xF0, 0x64, 0xA0, +0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x0F, 0x22, +0xC3, 0xF3, 0x6D, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, 0xC3, 0xF3, +0x4D, 0xA0, 0x07, 0x6B, 0x6C, 0xEA, 0x03, 0x2A, +0x04, 0x94, 0x00, 0x18, 0xB3, 0xCF, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, -0xA6, 0xF6, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD4, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, -0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x35, 0x61, +0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, 0x28, 0x61, 0xC0, 0xF0, 0x64, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x2F, 0x22, 0xC3, 0xF3, 0x5D, 0xA0, -0x01, 0x6B, 0x6E, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF2, 0x6C, 0x9B, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, 0x5C, 0x9A, -0x02, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xC3, 0xF3, 0x8C, 0xA2, -0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEC, 0xC3, 0xF3, -0x8C, 0xC2, 0xC3, 0xF3, 0x91, 0xA2, 0x8C, 0xEB, -0xC3, 0xF3, 0x71, 0xC2, 0xC3, 0xF3, 0x51, 0xA2, -0x07, 0x6B, 0x6C, 0xEA, 0x04, 0x2A, 0x04, 0x94, -0x00, 0x18, 0x50, 0xCE, 0x06, 0x10, 0x00, 0x6C, -0x00, 0x18, 0xAC, 0xDF, 0x04, 0x94, 0x00, 0x18, -0x3C, 0xCE, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x90, 0x67, -0x00, 0x18, 0x34, 0xC6, 0x16, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x05, 0xF3, -0x77, 0xA2, 0x0E, 0xEB, 0x05, 0x2B, 0x05, 0xF3, -0x75, 0xA2, 0x01, 0x4B, 0x05, 0xF3, 0x75, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, 0x4F, 0xA2, -0x02, 0x72, 0x03, 0x60, 0x90, 0x67, 0x00, 0x18, -0x05, 0xCF, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0xEE, 0x35, 0x05, 0x97, 0x03, 0x63, +0x2C, 0xEA, 0x22, 0x22, 0xC0, 0xF0, 0x85, 0xA0, +0x10, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x2C, 0xEB, +0x20, 0x73, 0x08, 0x60, 0x01, 0x72, 0x06, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x40, 0x9A, +0x40, 0xEA, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, 0x84, 0xA2, +0x7F, 0x6B, 0x8C, 0xEB, 0x02, 0x73, 0x08, 0x60, +0x24, 0xF3, 0x76, 0xAA, 0x04, 0x94, 0x01, 0x4B, +0x24, 0xF3, 0x76, 0xCA, 0x00, 0x18, 0x81, 0xCF, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0xC3, 0xF3, 0x6D, 0xA0, -0x02, 0x6A, 0xFF, 0x69, 0x6C, 0xEA, 0x2C, 0xEC, -0x2C, 0xEA, 0x04, 0xD4, 0x23, 0x22, 0x03, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x44, 0x9A, -0x01, 0x6D, 0x40, 0xEA, 0xC3, 0xF3, 0x8D, 0xA0, -0x01, 0x6B, 0x4C, 0xEB, 0x09, 0x6A, 0x4B, 0xEA, -0x8C, 0xEA, 0xC0, 0xF0, 0x84, 0xA0, 0x6C, 0x33, -0x6D, 0xEA, 0x7F, 0x6B, 0x8C, 0xEB, 0x2C, 0xEB, -0xC3, 0xF3, 0x4D, 0xC0, 0x07, 0x23, 0x08, 0x6B, -0x4C, 0xEB, 0x2C, 0xEB, 0x03, 0x23, 0x04, 0x94, -0x00, 0x18, 0x50, 0xCE, 0x04, 0x95, 0x01, 0x6C, -0x80, 0x18, 0x87, 0x12, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, +0x20, 0x68, 0x2C, 0xEC, 0x08, 0xF2, 0x10, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD4, 0x80, 0xF3, +0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, +0x01, 0x72, 0x35, 0x61, 0xC0, 0xF0, 0x64, 0xA0, +0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x2F, 0x22, +0xC3, 0xF3, 0x59, 0xA0, 0x01, 0x6B, 0x6E, 0xEA, +0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, +0x60, 0x9B, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF1, 0x50, 0x9A, 0x02, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC3, 0xF3, 0x88, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0x6C, 0xEC, 0xC3, 0xF3, 0x88, 0xC2, 0xC3, 0xF3, +0x8D, 0xA2, 0x8C, 0xEB, 0xC3, 0xF3, 0x6D, 0xC2, +0xC3, 0xF3, 0x4D, 0xA2, 0x07, 0x6B, 0x6C, 0xEA, +0x04, 0x2A, 0x04, 0x94, 0x00, 0x18, 0xB3, 0xCF, +0x06, 0x10, 0x00, 0x6C, 0x00, 0x18, 0xDD, 0xE4, +0x04, 0x94, 0x00, 0x18, 0x9D, 0xCF, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x90, 0x67, 0x00, 0x18, 0x94, 0xC6, +0x16, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x45, 0xF1, 0x77, 0xA2, 0x0E, 0xEB, +0x05, 0x2B, 0x45, 0xF1, 0x75, 0xA2, 0x01, 0x4B, +0x45, 0xF1, 0x75, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF5, 0x5B, 0xA2, 0x02, 0x72, 0x03, 0x60, +0x90, 0x67, 0x00, 0x18, 0x6B, 0xD0, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x53, 0x33, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xC3, 0xF3, 0x69, 0xA0, 0x02, 0x6A, 0xFF, 0x69, +0x6C, 0xEA, 0x2C, 0xEC, 0x2C, 0xEA, 0x04, 0xD4, +0x2E, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xC3, 0xF3, 0x49, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x44, 0x9A, 0x01, 0x6D, 0x40, 0xEA, +0xC3, 0xF3, 0x89, 0xA0, 0x01, 0x6B, 0x4C, 0xEB, +0x09, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0xC0, 0xF0, +0x84, 0xA0, 0x6C, 0x33, 0x6D, 0xEA, 0x7F, 0x6B, +0x8C, 0xEB, 0x2C, 0xEB, 0xC3, 0xF3, 0x49, 0xC0, +0x12, 0x23, 0x08, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, +0x09, 0x23, 0x44, 0xF3, 0x48, 0xA8, 0x04, 0x94, +0x01, 0x4A, 0x44, 0xF3, 0x48, 0xC8, 0x00, 0x18, +0xB3, 0xCF, 0x05, 0x10, 0x44, 0xF3, 0x4A, 0xA8, +0x01, 0x4A, 0x44, 0xF3, 0x4A, 0xC8, 0x04, 0x95, +0x01, 0x6C, 0x80, 0x18, 0x34, 0x0B, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0xC3, 0xF3, 0x6D, 0xA0, 0xFF, 0x69, 0x01, 0x6A, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xC3, 0xF3, 0x69, 0xA0, 0xFF, 0x69, 0x01, 0x6A, 0x8C, 0xE9, 0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, -0x2E, 0x22, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xC3, 0xF3, 0x4D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x38, 0x22, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xC3, 0xF3, 0x49, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x44, 0x9A, 0x91, 0x67, 0x00, 0x6D, -0x40, 0xEA, 0xC3, 0xF3, 0x8D, 0xA0, 0x01, 0x6B, +0x40, 0xEA, 0xC3, 0xF3, 0x89, 0xA0, 0x01, 0x6B, 0x6C, 0xEA, 0xFA, 0x4B, 0x48, 0x32, 0x8C, 0xEB, 0x4D, 0xEB, 0x04, 0x6A, 0x6C, 0xEA, 0xFF, 0x6C, -0x8C, 0xEA, 0xC3, 0xF3, 0x6D, 0xC0, 0x09, 0x22, -0x91, 0x67, 0x00, 0x18, 0x50, 0xCE, 0x43, 0xF4, -0x4B, 0xA0, 0x0D, 0x22, 0x00, 0x6C, 0xA4, 0x67, -0x08, 0x10, 0x43, 0xF4, 0x4B, 0xA0, 0x07, 0x22, -0x91, 0x67, 0x00, 0x18, 0x50, 0xCE, 0x00, 0x6C, -0x01, 0x6D, 0x00, 0x18, 0x28, 0xC8, 0xB1, 0x67, -0x00, 0x6C, 0x80, 0x18, 0x87, 0x12, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x18, -0x8B, 0xD9, 0x02, 0x67, 0x01, 0x6A, 0x0C, 0xEA, -0x0E, 0x22, 0x00, 0x6C, 0x01, 0x6D, 0x00, 0x18, -0x17, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xC3, 0xF3, 0x8E, 0xA2, 0x05, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0x0C, 0x10, 0x00, 0x6C, -0xA4, 0x67, 0x00, 0x18, 0x17, 0xC5, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xC3, 0xF3, -0x8E, 0xA2, 0x04, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, -0x6E, 0xC2, 0x40, 0x6A, 0x0C, 0xEA, 0x0F, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, 0x58, 0x9A, -0x60, 0xA2, 0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, -0x63, 0x33, 0x00, 0x53, 0x00, 0x6B, 0x02, 0x61, -0x80, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x10, 0x6B, -0x0C, 0xEB, 0x0C, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x01, 0x6B, 0x43, 0xF4, -0x78, 0xC2, 0x04, 0x6B, 0xE3, 0xF3, 0x60, 0xCA, -0x01, 0x6E, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x43, 0xF4, 0x78, 0xC2, -0x03, 0x6B, 0xE3, 0xF3, 0x60, 0xCA, 0x03, 0x6E, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF3, 0x80, 0xA2, -0x83, 0xF1, 0x64, 0x9B, 0xFF, 0x6D, 0x08, 0x6F, -0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x90, 0x9B, 0xEB, 0xEF, 0x60, 0xA4, 0xAC, 0xEB, -0xEC, 0xEB, 0xCD, 0xEB, 0xAC, 0xEB, 0x60, 0xC4, -0x43, 0xF4, 0xB8, 0xA2, 0x30, 0xF0, 0x20, 0x6C, -0x6A, 0xF2, 0x1E, 0x4C, 0x00, 0x18, 0xF0, 0xDD, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0x8C, 0xEA, 0xC3, 0xF3, 0x69, 0xC0, 0x0E, 0x22, +0x44, 0xF3, 0x44, 0xA8, 0x91, 0x67, 0x01, 0x4A, +0x44, 0xF3, 0x44, 0xC8, 0x00, 0x18, 0xB3, 0xCF, +0x43, 0xF4, 0x47, 0xA0, 0x12, 0x22, 0x00, 0x6C, +0xA4, 0x67, 0x0D, 0x10, 0x44, 0xF3, 0x46, 0xA8, +0x01, 0x4A, 0x44, 0xF3, 0x46, 0xC8, 0x43, 0xF4, +0x47, 0xA0, 0x07, 0x22, 0x91, 0x67, 0x00, 0x18, +0xB3, 0xCF, 0x00, 0x6C, 0x01, 0x6D, 0x00, 0x18, +0xF2, 0xC8, 0xB1, 0x67, 0x00, 0x6C, 0x80, 0x18, +0x34, 0x0B, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x18, 0xA8, 0xDE, 0x02, 0x67, +0x01, 0x6A, 0x0C, 0xEA, 0x12, 0x22, 0x00, 0x6C, +0x01, 0x6D, 0x00, 0x18, 0x30, 0xC5, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x00, 0xF1, +0x98, 0xA2, 0x08, 0x6B, 0x8C, 0xEB, 0x18, 0x2B, +0xC3, 0xF3, 0x8A, 0xA2, 0xFB, 0x4B, 0x8C, 0xEB, +0x11, 0x10, 0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, +0x30, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x00, 0xF1, 0x98, 0xA2, 0x08, 0x6B, +0x8C, 0xEB, 0x06, 0x2B, 0xC3, 0xF3, 0x8A, 0xA2, +0x04, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, 0x6A, 0xC2, +0x40, 0x6A, 0x0C, 0xEA, 0x0F, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF7, 0x44, 0x9A, 0x60, 0xA2, +0x00, 0xF6, 0x60, 0x33, 0x00, 0xF6, 0x63, 0x33, +0x00, 0x53, 0x00, 0x6B, 0x02, 0x61, 0x80, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0x10, 0x6B, 0x0C, 0xEB, +0x0C, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x01, 0x6B, 0x43, 0xF4, 0x74, 0xC2, +0x04, 0x6B, 0xC3, 0xF3, 0x7C, 0xCA, 0x01, 0x6E, +0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x43, 0xF4, 0x74, 0xC2, 0x03, 0x6B, +0xC3, 0xF3, 0x7C, 0xCA, 0x03, 0x6E, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF3, 0x9C, 0xA2, 0xA4, 0xF0, +0x78, 0x9B, 0xFF, 0x6D, 0x08, 0x6F, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF1, 0x88, 0x9B, +0xEB, 0xEF, 0x60, 0xA4, 0xAC, 0xEB, 0xEC, 0xEB, +0xCD, 0xEB, 0xAC, 0xEB, 0x60, 0xC4, 0x43, 0xF4, +0xB4, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xEB, 0xF5, +0x0A, 0x4C, 0x00, 0x18, 0x21, 0xE3, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xAC, 0xF1, 0x7C, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0xDC, 0xDB, +0x6D, 0xF3, 0x6C, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0xF9, 0xE0, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x6E, 0xC1, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xD1, 0x08, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xFC, 0x05, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0xC0, 0xF0, 0x64, 0xA0, 0x7F, 0x6A, 0xFF, 0x69, -0x6C, 0xEA, 0x1E, 0x22, 0xC0, 0xF0, 0x87, 0xA0, -0x96, 0x34, 0x2C, 0xEC, 0x00, 0x18, 0xD9, 0xD9, -0x02, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, 0x07, 0x23, -0xC0, 0xF0, 0x87, 0xA0, 0x96, 0x34, 0x2C, 0xEC, -0x00, 0x18, 0x05, 0xCC, 0x0D, 0x10, 0xC0, 0xF0, -0x87, 0xA0, 0xC3, 0xF3, 0x6C, 0xA0, 0x05, 0x6A, -0x4B, 0xEA, 0x96, 0x34, 0x6C, 0xEA, 0x2C, 0xEC, -0xC3, 0xF3, 0x4C, 0xC0, 0x00, 0x18, 0x50, 0xCE, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xC0, 0xF0, 0x84, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, -0x07, 0x23, 0xC0, 0xF0, 0x87, 0xA2, 0xFF, 0x6A, -0x96, 0x34, 0x4C, 0xEC, 0x00, 0x18, 0x57, 0xCE, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x69, 0x2C, 0xEC, 0x06, 0x74, 0x5E, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, 0x7C, 0x9A, -0x01, 0x6C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xA3, -0xA6, 0xF6, 0x00, 0x48, 0x2C, 0xEA, 0x8D, 0xEA, -0x2C, 0xEA, 0x40, 0xC3, 0xE0, 0xF0, 0x72, 0xA0, -0x7F, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x2C, 0xEA, -0x81, 0x72, 0x5F, 0x61, 0xE0, 0xF0, 0x8F, 0xA0, -0x7F, 0x6A, 0x4C, 0xEC, 0x2C, 0xEC, 0x80, 0x18, -0xFD, 0x3A, 0x01, 0x72, 0x26, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x32, 0x6C, -0x40, 0xEA, 0xE0, 0xF0, 0x8F, 0xA0, 0x7F, 0x6A, -0x4C, 0xEC, 0x2C, 0xEC, 0x80, 0x18, 0xFD, 0x3A, -0x48, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x6B, 0xD1, -0xE0, 0xF0, 0x6E, 0xA0, 0x20, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x3F, 0x2A, 0xE0, 0xF0, 0x8F, 0xA0, -0x7F, 0x6A, 0x4C, 0xEC, 0x2C, 0xEC, 0x80, 0x18, -0x14, 0x3B, 0xE0, 0xF0, 0x8F, 0xA0, 0x7F, 0x6A, -0x4C, 0xEC, 0x2C, 0xEC, 0x80, 0x18, 0x1F, 0x3B, -0x30, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x48, 0x9A, 0x32, 0x6C, 0x40, 0xEA, 0xE0, 0xF0, -0x8F, 0xA0, 0x7F, 0x6A, 0x4C, 0xEC, 0x2C, 0xEC, -0x80, 0x18, 0xFD, 0x3A, 0x01, 0x72, 0x21, 0x60, -0x01, 0x6C, 0x00, 0x18, 0x6B, 0xD1, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF2, 0x88, 0x9A, 0x80, 0x18, -0x9E, 0x57, 0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x05, 0xF3, 0x78, 0xA2, -0x6E, 0xEC, 0x0F, 0x2C, 0xE0, 0xF0, 0x92, 0xA2, -0x10, 0x6B, 0x8C, 0xEB, 0x2C, 0xEB, 0x09, 0x2B, -0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, -0xC3, 0xF1, 0x9C, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, -0x64, 0xDA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, -0x47, 0xA2, 0xFF, 0x68, 0x8C, 0xE8, 0x56, 0x32, -0x0E, 0xEA, 0x06, 0x2A, 0x90, 0x67, 0x00, 0x18, -0x07, 0xCE, 0x00, 0x6C, 0x00, 0x18, 0x26, 0xC6, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x6F, 0xCD, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x6D, 0x3D, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x15, 0xD2, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x12, 0xD2, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x1A, 0x37, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x64, 0x36, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x24, 0x67, 0xC0, 0xF0, 0x87, 0xA3, 0xFF, 0x6A, -0x4C, 0xE9, 0x96, 0x34, 0x2E, 0xEC, 0x0F, 0x2C, -0xC0, 0xF0, 0xA4, 0xA3, 0x7F, 0x6C, 0xAC, 0xEC, -0x4C, 0xEC, 0x09, 0x24, 0xC3, 0xF3, 0x8C, 0xA3, -0x40, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x03, 0x23, -0x91, 0x67, 0x00, 0x18, 0xBD, 0xDC, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x05, 0xF3, -0x7D, 0xA2, 0x2E, 0xEB, 0x11, 0x2B, 0x05, 0xF3, -0x7C, 0xA2, 0x1F, 0x6C, 0x6A, 0x32, 0x8C, 0xEA, -0x47, 0xE9, 0x01, 0x6C, 0x8C, 0xEA, 0x08, 0x22, -0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xDC, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xAC, 0xF1, 0x57, 0xA2, -0x2E, 0xEA, 0x03, 0x2A, 0x91, 0x67, 0x80, 0x18, -0xC3, 0x12, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x05, 0xF3, 0x10, 0xA2, 0x04, 0xD2, -0x2E, 0xE8, 0x06, 0x28, 0x91, 0x67, 0x80, 0x18, -0xFA, 0x0F, 0x04, 0x92, 0x05, 0xF3, 0x12, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF7, 0x47, 0xA2, -0x2E, 0xEA, 0x03, 0x2A, 0x91, 0x67, 0x80, 0x18, -0x9E, 0x15, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x20, 0xD9, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0x6C, 0x9B, 0xFF, 0x6A, 0x4C, 0xEE, -0x6D, 0xE4, 0x08, 0x68, 0x80, 0xA3, 0xDB, 0xE0, -0x02, 0x67, 0x4C, 0xED, 0x07, 0xEE, 0xD0, 0x67, -0x4C, 0xEF, 0x04, 0xED, 0x4C, 0xEC, 0xCC, 0xEF, -0x0F, 0xE8, 0x8C, 0xE8, 0xE4, 0xED, 0xED, 0xE8, -0x4C, 0xE8, 0x00, 0xC3, 0x01, 0x90, 0x01, 0x63, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x4C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, -0x8C, 0xEB, 0x4D, 0xE3, 0x40, 0xA3, 0xFF, 0x6C, -0x8C, 0xEE, 0x08, 0x6B, 0xDB, 0xE3, 0x8C, 0xED, -0x8C, 0xEA, 0x64, 0x67, 0x47, 0xED, 0x67, 0xEE, -0x6C, 0xEA, 0x8C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0xAC, 0xF5, 0x19, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, -0x50, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, -0x09, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x60, 0x9A, 0x20, 0x6C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, 0x7C, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, 0x00, 0x6A, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD9, 0x17, -0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x2C, 0xF6, 0x0D, 0x4A, 0x40, 0xDB, 0x00, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, 0xB4, 0x9A, -0xFF, 0x6C, 0x40, 0xA5, 0xA0, 0xA5, 0x8C, 0xEA, -0xAC, 0xEC, 0x4E, 0xEC, 0x19, 0x24, 0x64, 0x73, -0x12, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, -0x80, 0x9B, 0x40, 0x6D, 0x60, 0x9C, 0xAD, 0xEB, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0xA3, 0xF3, 0x9C, 0x9B, 0xAD, 0xEC, -0xA3, 0xF3, 0x9C, 0xDB, 0x20, 0xE8, 0x01, 0x4B, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, 0xDC, 0x17, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x8C, 0xE9, -0x00, 0x68, 0x2B, 0x10, 0x82, 0xF3, 0x08, 0x70, -0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x60, 0x9A, 0x10, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, -0xA3, 0xF3, 0x7C, 0xDA, 0x14, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x40, 0xEA, 0x33, 0x58, 0x0A, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0x58, 0x9A, 0x01, 0x6B, -0x40, 0xA2, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x6A, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, -0x58, 0x9A, 0x01, 0x6B, 0x40, 0x9A, 0x42, 0x32, -0x5E, 0x32, 0x6C, 0xEA, 0x2E, 0xEA, 0xCA, 0x2A, -0x43, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, -0x0C, 0xF7, 0x15, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x44, 0xF0, 0x5C, 0x9A, 0x60, 0xA2, -0x01, 0x6A, 0x6C, 0xEA, 0xF8, 0x2A, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0x0C, 0xF7, 0x16, 0x4A, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0x94, 0x34, 0x4C, 0xED, 0x4C, 0xEC, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF0, 0x40, 0x9A, 0x80, 0xC2, -0xA0, 0xC2, 0x20, 0xE8, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x64, 0xF0, 0x60, 0x9B, 0x4C, 0xEC, -0x94, 0x34, 0x4C, 0xEC, 0x80, 0xC3, 0x60, 0xA3, -0x6C, 0xEA, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xED, -0xFF, 0x75, 0x4C, 0xEC, 0xCC, 0xEA, 0x06, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x71, 0xE4, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x71, 0xE4, 0xA3, 0xF3, -0x68, 0xA4, 0xAC, 0xEA, 0xAF, 0xED, 0x6C, 0xED, -0xAD, 0xEA, 0xA3, 0xF3, 0x48, 0xC4, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6B, -0x6C, 0xEC, 0x07, 0x6A, 0x6C, 0xED, 0x8C, 0xEA, -0x01, 0x68, 0xE6, 0x67, 0x04, 0xEA, 0xAB, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0xAD, 0xEE, 0x40, 0xF4, -0x40, 0x9A, 0x6C, 0xE8, 0xC0, 0xF7, 0xC3, 0x36, -0x8E, 0x34, 0x6C, 0xEF, 0xB0, 0x67, 0x0C, 0xEE, -0x6C, 0xEC, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x00, 0x18, 0xC5, 0xD9, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF4, 0x60, 0x9A, -0xEF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x00, 0x6C, 0x00, 0x18, 0xA3, 0xD9, 0x00, 0x18, -0xE2, 0xC7, 0x2B, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x66, 0xF7, 0x72, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0x22, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF0, 0x64, 0x9A, 0x7F, 0xF7, -0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xAB, -0x07, 0x69, 0x8C, 0xEA, 0x40, 0xCB, 0x80, 0xF3, -0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x44, 0x9A, 0x0A, 0x6C, -0x20, 0xC2, 0x80, 0xF3, 0x4C, 0x98, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x48, 0x9A, -0x0A, 0x6C, 0x20, 0xC2, 0x80, 0xF3, 0x4C, 0x98, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xC3, 0xF3, 0x8C, 0xA2, 0x7F, 0x6B, -0x8C, 0xEB, 0xC3, 0xF3, 0x6C, 0xC2, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0xC3, 0xF3, 0x6C, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, -0x6D, 0xEA, 0xC3, 0xF3, 0x4C, 0xC0, 0x43, 0xF4, -0x58, 0xA0, 0x04, 0xD2, 0x80, 0xF0, 0x01, 0x22, -0x02, 0x6A, 0xC3, 0xF3, 0x50, 0xC0, 0x5C, 0xB9, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x7D, 0xB9, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, -0x21, 0x6C, 0xFC, 0xF7, 0x18, 0x4C, 0xBF, 0x67, -0xA0, 0xDC, 0x9A, 0xB8, 0x00, 0x65, 0xBB, 0xB8, -0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF2, -0x84, 0x9C, 0x40, 0x9B, 0x10, 0x6D, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x58, 0x9A, 0x04, 0x6B, 0xFF, 0x6C, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x00, 0x6B, 0x42, 0xF6, 0x72, 0xC2, 0xC3, 0xF3, -0x7E, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, -0x48, 0x9A, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF4, 0x60, 0x9A, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6C, -0x00, 0x18, 0xA3, 0xD9, 0xA0, 0xF0, 0x0E, 0x22, -0x58, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x79, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x30, 0xF0, 0x21, 0x69, 0xDC, 0xF7, 0x0C, 0x49, -0x12, 0xE8, 0x00, 0xD9, 0x10, 0xE8, 0x01, 0xD9, -0x42, 0xD9, 0x63, 0xD9, 0x84, 0xD9, 0xA5, 0xD9, -0xC6, 0xD9, 0xE7, 0xD9, 0x18, 0x67, 0x08, 0xD9, -0x1A, 0xB8, 0x00, 0x65, 0x09, 0xD9, 0x30, 0xF0, -0x21, 0x68, 0xDC, 0xF7, 0x0C, 0x48, 0x3B, 0xB8, -0x00, 0x65, 0x2A, 0xD8, 0x1A, 0xB8, 0x00, 0x65, -0x58, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x79, 0xB9, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x77, 0xF0, 0x20, 0x68, 0x80, 0xF0, 0x10, 0x48, -0x00, 0x98, 0x01, 0x69, 0x2D, 0xE8, 0x77, 0xF0, -0x20, 0x69, 0x80, 0xF0, 0x10, 0x49, 0x00, 0xD9, -0x1A, 0xB8, 0x00, 0x65, 0x3B, 0xB8, 0x00, 0x65, -0x48, 0x10, 0x01, 0x6A, 0xC3, 0xF3, 0x50, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x7E, 0xA8, -0x64, 0xF0, 0x48, 0x9A, 0x60, 0xCA, 0x00, 0x18, -0xE2, 0xC7, 0x23, 0x22, 0xC0, 0xF0, 0x72, 0xA0, -0x08, 0x6A, 0x6C, 0xEA, 0x1E, 0x22, 0x7D, 0x67, -0x87, 0x43, 0x09, 0x4C, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xA4, 0xC3, 0xF5, 0x44, 0x9A, 0x9D, 0x67, -0x80, 0x6D, 0x60, 0xC2, 0x67, 0x44, 0x09, 0x4B, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xA3, 0xC3, 0xF5, -0x48, 0x9A, 0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF0, 0x64, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, -0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF4, -0x60, 0x9A, 0xFF, 0x68, 0x10, 0x6C, 0x40, 0xA3, -0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, -0x01, 0x6C, 0x00, 0x18, 0xA3, 0xD9, 0x30, 0xF0, -0x20, 0x6A, 0x44, 0xF0, 0x7C, 0x9A, 0x01, 0x6C, -0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, -0x40, 0xC3, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6A, 0x4C, 0xEC, 0xFF, 0x74, 0xAC, 0xEA, -0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x2A, 0xF2, -0x57, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x83, 0xF3, 0xB7, 0xA3, -0x8C, 0xEA, 0x8F, 0xEC, 0xAC, 0xEC, 0x8D, 0xEA, -0x83, 0xF3, 0x57, 0xC3, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x68, 0x26, 0x67, 0x0C, 0xE9, 0x53, 0x71, -0x0C, 0xEC, 0x0C, 0xED, 0x09, 0x60, 0x06, 0x2C, -0x30, 0xF0, 0x20, 0x6A, 0x2A, 0xF2, 0x56, 0xA2, -0xAD, 0xEA, 0x0B, 0x10, 0x00, 0x18, 0xA8, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x83, 0xF3, 0x77, 0xA2, 0x83, 0xF3, 0x56, 0xA2, -0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x70, 0x9B, 0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x2A, 0xF2, 0x34, 0xC2, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0xAC, 0xF1, 0x5D, 0xA2, -0xFF, 0x63, 0x05, 0x5A, 0x36, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x48, 0x32, 0x23, 0xF0, 0x10, 0x4B, -0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x4C, 0x9A, 0xFF, 0xF7, -0x1F, 0x6B, 0x40, 0x9A, 0x1A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x4C, 0x9A, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x5C, 0x9A, -0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, -0x5C, 0x9A, 0x40, 0x9A, 0x50, 0x32, 0x00, 0xF5, -0x42, 0x32, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF0, 0x40, 0x9A, 0x40, 0x9A, 0xE1, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x00, 0xD2, 0x00, 0x93, -0xE0, 0xF3, 0x08, 0x6A, 0x60, 0x33, 0x68, 0x33, -0x5B, 0xEB, 0x01, 0x2A, 0xE5, 0xE8, 0x12, 0xEA, -0x01, 0x10, 0x66, 0x6A, 0x00, 0xD2, 0x00, 0x92, -0x01, 0x63, 0x20, 0xE8, 0xFF, 0x63, 0x01, 0xD0, -0x15, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF1, -0x90, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x7C, 0xDA, 0x5D, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x05, 0xF3, 0xBC, 0xA2, -0x03, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x05, 0xF3, -0x7C, 0xC2, 0x25, 0xF3, 0xC0, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xCC, 0xF1, 0x1C, 0x4A, 0x00, 0x6D, -0x18, 0x6F, 0xF8, 0xED, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x12, 0xEF, 0x6D, 0xE7, -0x25, 0xF3, 0x10, 0xA3, 0x01, 0x6F, 0xEC, 0xE8, -0x23, 0x20, 0x25, 0xF3, 0x70, 0xA3, 0x66, 0x33, -0xEC, 0xEB, 0xFF, 0x6F, 0xEC, 0xEB, 0x1C, 0x23, -0xFF, 0xF7, 0x78, 0x9A, 0x9B, 0xEB, 0x01, 0x2C, -0xE5, 0xE8, 0x12, 0xEB, 0xFF, 0xF7, 0x7C, 0xDA, -0x10, 0xEF, 0x03, 0x27, 0x01, 0x4B, 0xFF, 0xF7, -0x7C, 0xDA, 0x60, 0x9A, 0x78, 0xEE, 0x12, 0xEB, -0x9B, 0xEB, 0x01, 0x2C, 0xE5, 0xE8, 0x12, 0xEB, -0x60, 0xDA, 0xFF, 0xF7, 0x7C, 0x9A, 0x04, 0x2B, -0x01, 0x6F, 0xFF, 0xF7, 0xFC, 0xDA, 0x60, 0xDA, -0x01, 0x4D, 0x0A, 0x75, 0x18, 0x4A, 0xCC, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x25, 0xF3, 0x64, 0x9A, 0x25, 0xF3, 0x80, 0xDA, -0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x05, 0xF3, -0x9C, 0xA2, 0x12, 0xEB, 0x25, 0xF3, 0x68, 0xDA, -0x78, 0x67, 0x25, 0xF3, 0x6C, 0xDA, 0x02, 0x6B, -0x8D, 0xEB, 0x05, 0xF3, 0x7C, 0xC2, 0x01, 0x90, -0x01, 0x63, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x05, 0xF3, 0x5C, 0xA0, 0x03, 0x6B, -0x4C, 0xEB, 0x00, 0x6A, 0x2B, 0x2B, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF0, 0x44, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xFF, 0x6E, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0xAC, 0xF1, -0x1C, 0x4C, 0x00, 0x6D, 0x05, 0x4E, 0x40, 0xEA, -0x05, 0x6A, 0x66, 0x6B, 0x5B, 0xEB, 0x01, 0x2A, -0xE5, 0xE8, 0x25, 0xF3, 0x44, 0xD8, 0x25, 0xF3, -0x60, 0xD8, 0x05, 0xF3, 0x7C, 0xA0, 0x12, 0xEA, -0x25, 0xF3, 0x48, 0xD8, 0x01, 0x6A, 0x4B, 0xEA, -0x05, 0xF3, 0x5D, 0xC0, 0x7D, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x01, 0x6B, 0x6D, 0xEA, 0x05, 0xF3, -0x5C, 0xC0, 0x43, 0x67, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x05, 0xF3, 0x9C, 0xA0, 0x01, 0x6B, -0x00, 0x6A, 0x8C, 0xEB, 0x22, 0x23, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF0, 0x44, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, -0x05, 0xF3, 0x5C, 0xC0, 0x00, 0x18, 0xCA, 0xDA, -0x04, 0xD2, 0x04, 0x94, 0x00, 0x18, 0xEB, 0xDA, -0x05, 0xF3, 0x7C, 0xA0, 0x02, 0x6A, 0x25, 0xF3, -0xC4, 0x98, 0x6D, 0xEA, 0x05, 0xF3, 0x5C, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, -0x42, 0xF1, 0x1C, 0x6C, 0x01, 0x6D, 0x40, 0xEA, -0x01, 0x6A, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x05, 0xF3, 0xBC, 0xA3, -0x02, 0x6C, 0x00, 0x6A, 0xAC, 0xEC, 0x0C, 0x24, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x44, 0x9A, -0x00, 0x6C, 0x80, 0xC2, 0x03, 0x6A, 0x4B, 0xEA, -0xAC, 0xEA, 0x05, 0xF3, 0x5C, 0xC3, 0x01, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x18, 0x6C, -0x98, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0x01, 0x4A, 0x0A, 0x72, 0x12, 0xEC, -0x71, 0xE4, 0x25, 0xF3, 0xB0, 0xA4, 0x02, 0x6B, -0x6B, 0xEB, 0xAC, 0xEB, 0x25, 0xF3, 0x70, 0xC4, -0xEE, 0x61, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xAC, 0xF1, 0x5C, 0xA2, 0x01, 0x6B, 0x4C, 0xEB, -0x00, 0x6A, 0x1C, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0xEC, 0xF1, 0x00, 0x4A, 0x00, 0x6B, 0xA0, 0x9A, -0x8E, 0xED, 0x0F, 0x2D, 0x18, 0x6E, 0xD8, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0xA6, 0xF6, 0x00, 0x4D, -0x12, 0xEE, 0xB9, 0xE6, 0x25, 0xF3, 0xF0, 0xA6, -0x02, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0x25, 0xF3, -0xB0, 0xC6, 0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, -0xEA, 0x61, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x5D, 0x67, 0x0A, 0xD4, 0x20, 0xF0, 0x98, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xD5, 0x0C, 0xD6, -0xA6, 0xF6, 0x00, 0x4A, 0x05, 0xF3, 0xBC, 0xA2, -0x01, 0x6B, 0x00, 0xF6, 0xE0, 0x31, 0xAC, 0xEB, -0x00, 0xF6, 0x23, 0x31, 0x80, 0xF0, 0x09, 0x23, -0x21, 0x24, 0x01, 0x74, 0x80, 0xF0, 0x05, 0x61, -0x0A, 0x93, 0x80, 0xF0, 0x02, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xF0, 0x68, 0x9B, 0xC3, 0xEB, -0x7C, 0x61, 0x7F, 0x71, 0x7A, 0x60, 0xFF, 0xF7, -0x1F, 0x51, 0x77, 0x61, 0x25, 0xF3, 0x00, 0x9A, -0x1B, 0xEE, 0x01, 0x28, 0xE5, 0xE8, 0x10, 0xEA, -0x12, 0xE8, 0x02, 0x22, 0x01, 0x48, 0x04, 0x10, -0x03, 0x28, 0x01, 0x68, 0x50, 0x67, 0x1D, 0x10, -0x01, 0x6B, 0x1E, 0x10, 0x0A, 0x94, 0x65, 0x24, -0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, 0x68, 0x9B, -0x0C, 0x95, 0xA3, 0xEB, 0x5E, 0x61, 0x7F, 0x71, -0x5C, 0x60, 0xFF, 0xF7, 0x1F, 0x51, 0x59, 0x61, -0x25, 0xF3, 0x04, 0x9A, 0x1B, 0xED, 0x01, 0x28, -0xE5, 0xE8, 0x10, 0xEA, 0x12, 0xE8, 0x02, 0x22, -0x01, 0x48, 0x05, 0x10, 0x04, 0x28, 0x01, 0x68, -0x00, 0x6A, 0x04, 0xD2, 0x02, 0x10, 0x00, 0x6B, -0x04, 0xD3, 0x0A, 0x94, 0x00, 0x18, 0x75, 0xDB, -0x00, 0x6C, 0xFF, 0x6E, 0xA4, 0x67, 0xCC, 0xED, -0x1D, 0x65, 0x18, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0x01, 0x6D, -0x12, 0xEA, 0x69, 0xE2, 0x25, 0xF3, 0x50, 0xA2, -0xAC, 0xEA, 0xCC, 0xEA, 0x2F, 0x2A, 0xD8, 0x67, -0x18, 0x6F, 0xF8, 0xEE, 0x04, 0x96, 0xC4, 0x36, -0x04, 0xD6, 0x03, 0x6E, 0xCB, 0xEE, 0x12, 0xEC, -0x71, 0xE4, 0x25, 0xF3, 0xF0, 0xA4, 0xEC, 0xEE, -0x04, 0x97, 0xED, 0xEE, 0x25, 0xF3, 0xD0, 0xC4, -0x0A, 0x96, 0x45, 0xF3, 0xC0, 0xDC, 0x0B, 0x97, -0x45, 0xF3, 0xE4, 0xDC, 0x0C, 0x96, 0x18, 0x6F, -0x25, 0xF3, 0xD4, 0xDC, 0xD8, 0x67, 0x01, 0x4E, -0xF8, 0xEE, 0x12, 0xEE, 0x6D, 0xE6, 0x25, 0xF3, -0x44, 0xDB, 0x25, 0xF3, 0x00, 0xDB, 0x25, 0xF3, -0x51, 0xC4, 0x25, 0xF3, 0x50, 0xA4, 0x25, 0xF3, -0x32, 0xC4, 0x4D, 0xED, 0x25, 0xF3, 0xB0, 0xC4, -0x01, 0x6A, 0x04, 0x10, 0x01, 0x4C, 0x0A, 0x74, -0xBC, 0x61, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xCC, 0xF1, -0x1C, 0x4A, 0x00, 0x6C, 0x4A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xCC, 0xF1, 0x1C, 0x4A, 0x00, 0x6B, -0x18, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, -0xA6, 0xF6, 0x00, 0x4C, 0x12, 0xED, 0x91, 0xE5, -0x25, 0xF3, 0xD0, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, -0x08, 0x26, 0x25, 0xF3, 0x90, 0xA4, 0x86, 0x34, -0xAC, 0xEC, 0x03, 0x24, 0x80, 0x9A, 0x01, 0x4C, -0x80, 0xDA, 0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, -0xE7, 0x61, 0x00, 0x18, 0xCA, 0xDA, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xC0, 0xF0, 0x67, 0xA2, 0x05, 0xF3, 0xBD, 0xA2, -0xFF, 0x6C, 0x76, 0x33, 0xAE, 0xEB, 0x12, 0x2B, -0xC0, 0xF0, 0xA4, 0xA2, 0x7F, 0x6B, 0xAC, 0xEB, -0x8C, 0xEB, 0x0C, 0x23, 0xC0, 0xF0, 0xA5, 0xA2, -0x0F, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, 0x06, 0x23, -0x04, 0x93, 0xC3, 0xF3, 0x56, 0xA2, 0x78, 0xEA, -0x12, 0xEA, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0x93, 0xCC, 0xF1, 0x40, 0x9A, 0x6E, 0xEA, -0x52, 0x22, 0x04, 0x94, 0x00, 0x18, 0xEB, 0xDA, -0x4E, 0x10, 0x18, 0x6D, 0xB8, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0x12, 0xED, -0x6D, 0xE5, 0x25, 0xF3, 0xD0, 0xA3, 0x01, 0x6D, -0xAC, 0xEE, 0x0A, 0x26, 0x25, 0xF3, 0x70, 0xA3, -0x66, 0x33, 0xAC, 0xEB, 0xFF, 0x6D, 0xAC, 0xEB, -0x03, 0x2B, 0x60, 0x9A, 0x01, 0x4B, 0x60, 0xDA, -0x01, 0x4C, 0x0A, 0x74, 0x18, 0x4A, 0xE5, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x05, 0xF3, 0x7D, 0xA2, 0xFF, 0x73, 0x2B, 0x61, -0x25, 0xF3, 0x6C, 0x9A, 0x01, 0x4B, 0x25, 0xF3, -0x6C, 0xDA, 0x25, 0xF3, 0x48, 0x9A, 0x4E, 0xEB, -0x22, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0xCC, 0xF1, -0x1C, 0x4A, 0x18, 0x6D, 0xB8, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, 0x12, 0xED, -0x91, 0xE5, 0x25, 0xF3, 0xD0, 0xA4, 0x01, 0x6D, -0xAC, 0xEE, 0x08, 0x26, 0x25, 0xF3, 0x90, 0xA4, -0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, 0x80, 0x9A, -0x01, 0x4C, 0x80, 0xDA, 0x01, 0x4B, 0x0A, 0x73, -0x18, 0x4A, 0xE7, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x78, 0x67, 0xCC, 0xF1, 0x6C, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xA0, 0xF0, -0x64, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xCC, 0xF1, 0x11, 0x48, 0x00, 0x69, 0x18, 0x6A, -0x58, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0x12, 0xEA, 0x69, 0xE2, 0x25, 0xF3, -0x90, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x27, 0x23, -0x00, 0xF0, 0x8B, 0x98, 0x00, 0xF0, 0x67, 0x98, -0x63, 0xEC, 0x21, 0x61, 0x61, 0x80, 0x81, 0x43, -0x04, 0xD4, 0x07, 0x2C, 0x00, 0xF0, 0x4F, 0x98, -0x00, 0xF0, 0x93, 0x98, 0x40, 0xEA, 0x04, 0x92, -0x14, 0x10, 0x80, 0xA0, 0x01, 0x4C, 0x80, 0xC0, -0x80, 0xA0, 0x82, 0xEB, 0x08, 0x60, 0x25, 0xF3, -0x90, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x25, 0xF3, 0x70, 0xC2, 0x08, 0x10, 0x00, 0xF0, -0x4F, 0x98, 0x00, 0xF0, 0x93, 0x98, 0x40, 0xEA, -0x00, 0x6A, 0x00, 0xF0, 0x4B, 0xD8, 0x01, 0x49, -0x0A, 0x71, 0x18, 0x48, 0xC8, 0x61, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFF, 0x6B, 0x6C, 0xEC, 0x0F, 0x6A, 0x8C, 0xEA, -0x03, 0x2A, 0x92, 0x32, 0x6C, 0xEA, 0x20, 0xE8, -0x07, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x04, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, -0x05, 0x10, 0x44, 0x32, 0xFF, 0x4A, 0x01, 0x6D, -0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, 0x0C, 0x58, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x04, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, -0x05, 0x10, 0xFF, 0x4A, 0x44, 0x32, 0x01, 0x6D, -0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, 0x0C, 0x58, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x04, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, -0x05, 0x10, 0x44, 0x32, 0xFF, 0x4A, 0x01, 0x6D, -0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, 0x29, 0x58, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x04, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, -0x05, 0x10, 0xFF, 0x4A, 0x44, 0x32, 0x01, 0x6D, -0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, 0x29, 0x58, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, -0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, -0xA2, 0x67, 0x80, 0x18, 0xA8, 0x57, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, -0x01, 0x6A, 0x44, 0xED, 0x03, 0x6C, 0xA2, 0x67, -0x80, 0x18, 0xA8, 0x57, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x58, 0xDC, -0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, -0xA8, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x58, 0xDC, 0x01, 0x6D, 0x03, 0x6C, -0xA4, 0xEA, 0x80, 0x18, 0xA8, 0x57, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, -0x44, 0xED, 0x00, 0x6C, 0xA2, 0x67, 0x80, 0x18, -0xA8, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, -0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, -0xA2, 0x67, 0x80, 0x18, 0xD9, 0x57, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, -0x01, 0x6A, 0x44, 0xED, 0x03, 0x6C, 0xA2, 0x67, -0x80, 0x18, 0xD9, 0x57, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x58, 0xDC, -0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, 0x80, 0x18, -0xD9, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x58, 0xDC, 0x01, 0x6D, 0x03, 0x6C, -0xA4, 0xEA, 0x80, 0x18, 0xD9, 0x57, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, -0x44, 0xED, 0x00, 0x6C, 0xA2, 0x67, 0x80, 0x18, -0xD9, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xDD, 0x63, 0x45, 0x62, 0x44, 0xD1, 0x43, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x69, 0x84, 0xF0, -0x5C, 0x9A, 0x8C, 0xE9, 0x30, 0x31, 0x49, 0xE1, -0x40, 0xD2, 0x40, 0xA2, 0x00, 0xF6, 0x40, 0x32, -0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, 0x40, 0x60, -0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x54, 0xC3, -0x0F, 0x6A, 0x56, 0xC3, 0x10, 0x6A, 0x57, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x40, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0x06, 0x04, 0x49, 0xE1, -0x40, 0x9A, 0x04, 0x05, 0x04, 0x6E, 0x04, 0xD2, -0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0xF0, 0x44, 0x9A, 0x07, 0x04, -0x04, 0x05, 0x49, 0xE1, 0x40, 0x9A, 0x04, 0x6E, -0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, -0x40, 0x93, 0x08, 0x04, 0x04, 0x05, 0x40, 0x9B, -0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, -0x48, 0x9A, 0x09, 0x04, 0x04, 0x05, 0x45, 0xE1, -0x40, 0x99, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, -0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x40, 0x9A, 0x05, 0x04, 0x40, 0xEA, -0x45, 0x97, 0x44, 0x91, 0x43, 0x90, 0x23, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xA4, 0xF0, 0x80, 0x9C, 0x50, 0x33, 0x91, 0xE3, -0x80, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF0, -0x84, 0x9C, 0x8D, 0xE3, 0x82, 0x67, 0x60, 0x9B, -0x00, 0x18, 0xD2, 0xDC, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x54, 0x9A, -0xA4, 0xF0, 0x6C, 0x9B, 0x00, 0xA2, 0x20, 0xA3, -0xFF, 0x6A, 0x4C, 0xE8, 0x4C, 0xE9, 0x2A, 0xE8, -0x2B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, -0x40, 0x9A, 0x10, 0x33, 0x49, 0xE3, 0x40, 0xA2, -0xFF, 0x6B, 0x6C, 0xEA, 0x56, 0x32, 0x6C, 0xEA, -0x04, 0x72, 0x09, 0x60, 0x06, 0x72, 0x0C, 0x60, -0x02, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x54, 0x9A, 0x09, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x58, 0x9A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x5C, 0x9A, -0x90, 0x67, 0x40, 0xEA, 0x01, 0x48, 0x7F, 0x6A, -0x4C, 0xE8, 0x0A, 0xE9, 0xDA, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x54, 0x9A, 0x20, 0xC2, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0xFF, 0x6B, 0xE2, 0x67, 0x6C, 0xEE, -0x6C, 0xEF, 0x1E, 0x65, 0x87, 0x67, 0x03, 0x6E, -0xCC, 0xEC, 0x80, 0xF0, 0x10, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0xA4, 0xF0, 0x10, 0x9C, 0x08, 0x69, -0x42, 0x32, 0x80, 0xA0, 0x52, 0x32, 0x6C, 0xEA, -0x6C, 0xEC, 0x2D, 0xEC, 0x6C, 0xEC, 0x80, 0xC0, -0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF0, 0x94, 0x9C, -0xCC, 0xEA, 0xE0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, -0xA4, 0xF0, 0x98, 0x9C, 0x40, 0xC4, 0x0F, 0x6A, -0x98, 0x67, 0x8C, 0xEA, 0x74, 0x22, 0x01, 0x6C, -0x4C, 0xEC, 0x06, 0x24, 0x30, 0xF0, 0x20, 0x6C, -0xA4, 0xF0, 0x9C, 0x9C, 0xAC, 0xEB, 0x60, 0xC4, -0x02, 0x6B, 0x4C, 0xEB, 0x08, 0x23, 0xFF, 0x6C, -0xA2, 0x33, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, -0xC4, 0xF0, 0x80, 0x9C, 0x60, 0xC4, 0x04, 0x6B, -0x4C, 0xEB, 0x09, 0x23, 0xA2, 0x33, 0xFF, 0x6C, -0x62, 0x33, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, -0xC4, 0xF0, 0x84, 0x9C, 0x60, 0xC4, 0x4E, 0x33, -0x07, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, -0x68, 0x9B, 0x00, 0xF6, 0xA2, 0x35, 0xA0, 0xC3, -0x20, 0x6B, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xC4, 0xF0, 0x4C, 0x9A, 0x64, 0x68, 0x60, 0xC2, -0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x0A, 0x6C, 0xFF, 0x48, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x21, 0x28, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF4, 0x8C, 0x9C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, -0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, -0x60, 0xA1, 0xD0, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x70, 0x9A, -0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x16, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, -0x2C, 0x9A, 0x20, 0x6A, 0x60, 0xA1, 0x6C, 0xEA, -0xCC, 0x2A, 0x60, 0xA1, 0xF0, 0x6A, 0x6C, 0xEA, -0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, -0x70, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0xC2, 0x67, 0xFF, 0x6C, 0x8C, 0xEE, -0x03, 0x6D, 0x66, 0x67, 0xAC, 0xEB, 0x4B, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF0, 0xF0, 0x9B, -0x08, 0x68, 0x42, 0x32, 0x60, 0xA7, 0x52, 0x32, -0x8C, 0xEA, 0x8C, 0xEB, 0x0D, 0xEB, 0x8C, 0xEB, -0x60, 0xC7, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF0, -0x74, 0x9B, 0xAC, 0xEA, 0x64, 0x68, 0xC0, 0xC3, -0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF0, 0x78, 0x9B, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, -0x4C, 0x9A, 0x30, 0x6B, 0x60, 0xC2, 0x2E, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0xFF, 0x48, 0x40, 0xEA, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE8, 0x23, 0x28, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF4, 0x8C, 0x9C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, 0x7C, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, 0x60, 0xA1, -0xCF, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0xF0, 0x70, 0x9A, 0xF7, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, -0x4B, 0xEA, 0x19, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC4, 0xF0, 0x2C, 0x9A, 0x20, 0x6A, 0x60, 0xA1, -0x6C, 0xEA, 0xCA, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF0, 0x5C, 0x9A, 0xEF, 0x6B, 0x40, 0x9A, -0x80, 0xA1, 0x8C, 0xEB, 0x60, 0xC1, 0x30, 0xF0, -0x20, 0x6B, 0xA4, 0xF0, 0x90, 0x9B, 0xF7, 0x6B, -0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x07, 0x97, +0x6C, 0xEA, 0x2D, 0x22, 0xC0, 0xF0, 0x87, 0xA0, +0x44, 0xF3, 0x40, 0xA8, 0x96, 0x34, 0x01, 0x4A, +0x2C, 0xEC, 0x44, 0xF3, 0x40, 0xC8, 0x00, 0x18, +0xF6, 0xDE, 0x02, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, +0x0C, 0x23, 0xC0, 0xF0, 0x87, 0xA0, 0x24, 0xF3, +0x5C, 0xA8, 0x96, 0x34, 0x01, 0x4A, 0x2C, 0xEC, +0x24, 0xF3, 0x5C, 0xC8, 0x00, 0x18, 0x0E, 0xCD, +0x12, 0x10, 0x44, 0xF3, 0x42, 0xA8, 0xC0, 0xF0, +0x87, 0xA0, 0xC3, 0xF3, 0x68, 0xA0, 0x01, 0x4A, +0x44, 0xF3, 0x42, 0xC8, 0x05, 0x6A, 0x4B, 0xEA, +0x96, 0x34, 0x6C, 0xEA, 0x2C, 0xEC, 0xC3, 0xF3, +0x48, 0xC0, 0x00, 0x18, 0xB3, 0xCF, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xC4, 0xF0, 0xB0, 0x9A, 0xE0, 0xF3, 0x10, 0x6C, -0x0F, 0x6E, 0x00, 0x18, 0x2D, 0xDD, 0xE0, 0xF3, -0x0C, 0x6C, 0x00, 0x18, 0x81, 0xDD, 0xFF, 0x6B, -0x4C, 0xEB, 0x0B, 0x73, 0x0B, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF0, 0x74, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF3, 0x88, 0x9C, 0x40, 0x9B, -0x8C, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x7C, 0x9A, -0xFF, 0x6C, 0x20, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x40, 0xA3, -0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF4, 0x50, 0xA2, -0x01, 0x72, 0x0C, 0x61, 0x01, 0x6C, 0x10, 0x6D, -0x00, 0x18, 0x52, 0xD1, 0x04, 0x6B, 0x4D, 0xEB, -0xFF, 0x6E, 0x01, 0x6C, 0x10, 0x6D, 0x6C, 0xEE, -0x00, 0x18, 0x41, 0xD1, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF4, 0x50, 0xA2, -0x01, 0x72, 0x0A, 0x61, 0x01, 0x6C, 0x10, 0x6D, -0x00, 0x18, 0x52, 0xD1, 0xFB, 0x6E, 0x01, 0x6C, -0x10, 0x6D, 0x4C, 0xEE, 0x00, 0x18, 0x41, 0xD1, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xE9, 0xF4, 0x70, 0xA3, -0xFF, 0x6A, 0x24, 0x67, 0x01, 0x73, 0xAC, 0xEA, -0x07, 0x60, 0x03, 0x73, 0x05, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0xC4, 0xF0, 0x78, 0x9B, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, 0x7C, 0x9B, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, -0x00, 0x9A, 0x6C, 0xE8, 0x0A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF0, 0x04, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF0, 0x48, 0x9A, 0x6D, 0xE8, -0x4C, 0xE8, 0x00, 0x18, 0xE2, 0xC7, 0x0C, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, 0x72, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x05, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF0, 0x4C, 0x9A, 0x4C, 0xE8, -0x02, 0x30, 0x02, 0x30, 0x00, 0xC9, 0x07, 0x97, +0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, 0x84, 0xA2, +0x7F, 0x6B, 0x8C, 0xEB, 0x07, 0x23, 0xC0, 0xF0, +0x87, 0xA2, 0xFF, 0x6A, 0x96, 0x34, 0x4C, 0xEC, +0x00, 0x18, 0xBA, 0xCF, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, +0x06, 0x74, 0x5E, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF7, 0x68, 0x9A, 0x01, 0x6C, 0x30, 0xF0, +0x20, 0x68, 0x40, 0xA3, 0x08, 0xF2, 0x10, 0x48, +0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, +0xE0, 0xF0, 0x72, 0xA0, 0x7F, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x2C, 0xEA, 0x81, 0x72, 0x5F, 0x61, +0xE0, 0xF0, 0x8F, 0xA0, 0x7F, 0x6A, 0x4C, 0xEC, +0x2C, 0xEC, 0x80, 0x18, 0x6C, 0x38, 0x01, 0x72, +0x26, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x48, 0x9A, 0x32, 0x6C, 0x40, 0xEA, 0xE0, 0xF0, +0x8F, 0xA0, 0x7F, 0x6A, 0x4C, 0xEC, 0x2C, 0xEC, +0x80, 0x18, 0x6C, 0x38, 0x48, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x60, 0xD6, 0xE0, 0xF0, 0x6E, 0xA0, +0x20, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x3F, 0x2A, +0xE0, 0xF0, 0x8F, 0xA0, 0x7F, 0x6A, 0x4C, 0xEC, +0x2C, 0xEC, 0x80, 0x18, 0x83, 0x38, 0xE0, 0xF0, +0x8F, 0xA0, 0x7F, 0x6A, 0x4C, 0xEC, 0x2C, 0xEC, +0x80, 0x18, 0x8E, 0x38, 0x30, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x32, 0x6C, +0x40, 0xEA, 0xE0, 0xF0, 0x8F, 0xA0, 0x7F, 0x6A, +0x4C, 0xEC, 0x2C, 0xEC, 0x80, 0x18, 0x6C, 0x38, +0x01, 0x72, 0x21, 0x60, 0x01, 0x6C, 0x00, 0x18, +0x60, 0xD6, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x9C, 0x9A, 0x80, 0x18, 0xE4, 0x5C, 0x17, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x45, 0xF1, 0x78, 0xA2, 0x6E, 0xEC, 0x0F, 0x2C, +0xE0, 0xF0, 0x92, 0xA2, 0x10, 0x6B, 0x8C, 0xEB, +0x2C, 0xEB, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6C, +0xA0, 0xF0, 0x64, 0x9A, 0x04, 0xF1, 0x90, 0x9C, +0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0xF7, 0x1F, 0x69, 0x30, 0xF0, 0x20, 0x6B, -0x8C, 0xE9, 0xE3, 0xF1, 0x98, 0x9B, 0xFF, 0x6A, -0x4C, 0xED, 0xC0, 0xA4, 0x4C, 0xEE, 0x07, 0x25, -0x8E, 0x6B, 0xCC, 0xEB, 0x60, 0xC4, 0x71, 0x6B, -0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0xE4, 0xF0, 0x7C, 0x9A, 0xFF, 0x6C, -0x01, 0x6D, 0x40, 0xA3, 0x00, 0x68, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x22, 0x10, -0x64, 0x70, 0x16, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF2, 0x88, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, -0xA3, 0xF3, 0x7C, 0xDA, 0x00, 0x6A, 0x1C, 0x10, -0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF0, 0x5C, 0x9A, 0x60, 0xA2, 0x01, 0x6A, -0x6C, 0xEA, 0xD6, 0x2A, 0xFF, 0xF7, 0x1F, 0x6A, -0x01, 0x49, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x44, 0x9A, 0x20, 0xCA, 0x01, 0x6A, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x30, 0xF0, 0x20, 0x6D, 0x04, 0x04, 0xC3, 0xF0, -0x14, 0x4D, 0x14, 0x6E, 0x00, 0x18, 0xD5, 0xD3, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, 0x0D, 0x4A, -0x05, 0x04, 0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6D, -0x66, 0xF7, 0xA7, 0xA5, 0xB6, 0x35, 0x6E, 0xED, -0x1B, 0x25, 0xC0, 0xA2, 0x19, 0x26, 0xE0, 0x9C, -0x1F, 0xF7, 0x00, 0x6D, 0xEC, 0xED, 0x02, 0xF0, -0x00, 0x75, 0x01, 0x60, 0x09, 0x2D, 0x30, 0xF0, -0x20, 0x6E, 0xA0, 0x9C, 0x43, 0xF1, 0xDC, 0x9E, -0xB5, 0xE6, 0xC0, 0xA2, 0xC0, 0xC5, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF1, 0xA0, 0x9D, -0xFD, 0xE5, 0xC0, 0xC7, 0x00, 0x6D, 0xA0, 0xC2, -0x01, 0x4B, 0xFF, 0x6D, 0xAC, 0xEB, 0x04, 0x73, -0x01, 0x4A, 0x04, 0x4C, 0xD7, 0x61, 0x0B, 0x97, -0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x30, 0xF0, 0x20, 0x6D, 0x04, 0x04, 0xC3, 0xF0, -0x00, 0x4D, 0x14, 0x6E, 0x00, 0x18, 0xD5, 0xD3, -0x05, 0x03, 0x00, 0x6C, 0x01, 0x6A, 0x30, 0xF0, -0x20, 0x6D, 0x66, 0xF7, 0xA7, 0xA5, 0xB6, 0x35, -0x4E, 0xED, 0x38, 0x25, 0xC0, 0x9B, 0x1F, 0xF7, -0x00, 0x6D, 0xCC, 0xED, 0x02, 0xF0, 0x00, 0x75, -0x01, 0x60, 0x09, 0x2D, 0x30, 0xF0, 0x20, 0x6E, -0x43, 0xF1, 0xDC, 0x9E, 0xA0, 0x9B, 0xE1, 0x44, -0xB5, 0xE6, 0xC0, 0xA5, 0x07, 0x10, 0x30, 0xF0, -0x20, 0x6D, 0x63, 0xF1, 0xA0, 0x9D, 0xE1, 0x44, -0xD9, 0xE5, 0xC0, 0xA6, 0xFF, 0x6D, 0xCC, 0xED, -0x30, 0xF0, 0x20, 0x6E, 0xE6, 0xF4, 0x0C, 0x4E, -0xD9, 0xE7, 0xA0, 0xC6, 0xC0, 0x9B, 0x1F, 0xF7, -0x00, 0x6D, 0xCC, 0xED, 0x02, 0xF0, 0x00, 0x75, -0x01, 0x60, 0x09, 0x2D, 0x30, 0xF0, 0x20, 0x6E, -0xA0, 0x9B, 0x43, 0xF1, 0xDC, 0x9E, 0xB5, 0xE6, -0x00, 0x6E, 0xC0, 0xC5, 0x07, 0x10, 0x30, 0xF0, -0x20, 0x6D, 0x63, 0xF1, 0xA0, 0x9D, 0xD9, 0xE5, -0x00, 0x6D, 0xA0, 0xC6, 0x01, 0x4A, 0xFF, 0x6D, -0xAC, 0xEA, 0x04, 0x72, 0x01, 0x4C, 0x04, 0x4B, -0xBA, 0x61, 0x0B, 0x97, 0x06, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0xA0, 0x9B, -0xFF, 0x6A, 0x08, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, -0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0x64, 0x9B, -0x4C, 0xEC, 0x80, 0xC5, 0x60, 0xA3, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF1, 0xC0, 0x9B, 0xFF, 0x6A, 0x08, 0x6F, -0x60, 0xA6, 0xEB, 0xEF, 0x4C, 0xEC, 0x4C, 0xEB, -0xEC, 0xEB, 0x6D, 0xEC, 0x4C, 0xED, 0x4C, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x44, 0x9A, -0x80, 0xC6, 0xA0, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0x83, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF4, 0xB8, 0x9B, 0xC3, 0xF4, -0x10, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x43, 0xF4, 0xBC, 0x9B, 0x91, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF1, 0xB8, 0x9B, 0x91, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF1, 0xB0, 0x9B, -0x91, 0x67, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, 0x84, 0xF3, -0x00, 0x48, 0x66, 0xF0, 0x00, 0x49, 0x0A, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xA8, 0xC1, 0x98, -0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x08, 0x48, 0x2A, 0xE8, 0xF4, 0x61, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, -0x0F, 0x5A, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x48, 0x34, 0x43, 0xF0, 0x04, 0x4B, 0x8D, 0xE3, -0x60, 0x9B, 0x00, 0xEB, 0x00, 0x6A, 0x20, 0xE8, -0xD0, 0xF4, 0x64, 0x42, 0x1F, 0xF7, 0x00, 0x6C, -0x8C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF1, 0x68, 0x9B, 0x2F, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xF1, 0x6C, 0x9B, 0x2A, 0x10, -0x80, 0xF4, 0x64, 0x42, 0x1F, 0xF7, 0x00, 0x6C, -0x8C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF1, 0x70, 0x9B, 0x1F, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xF1, 0x74, 0x9B, 0x1A, 0x10, -0xC0, 0xF4, 0x68, 0x42, 0x1F, 0xF7, 0x00, 0x6C, -0x8C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF1, 0x78, 0x9B, 0x0F, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xF1, 0x7C, 0x9B, 0x0A, 0x10, -0x70, 0xF4, 0x68, 0x42, 0x1F, 0xF7, 0x00, 0x6C, -0x8C, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0xF1, 0x60, 0x9B, 0x69, 0xE2, 0x60, 0xAA, -0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF1, 0x64, 0x9B, -0x69, 0xE2, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, -0x6C, 0xEA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, -0x7C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xCF, 0xF3, -0x15, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0x44, 0xF0, 0x50, 0x9A, 0x40, 0x9A, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xC8, 0xF2, 0x57, 0xA2, 0xFF, 0x68, +0x8C, 0xE8, 0x56, 0x32, 0x0E, 0xEA, 0x06, 0x2A, +0x90, 0x67, 0x00, 0x18, 0x68, 0xCF, 0x00, 0x6C, +0x00, 0x18, 0x86, 0xC6, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0xA4, 0xCE, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xDC, 0x3A, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x0A, 0xD7, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x07, 0xD7, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0x81, 0x34, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xC7, 0x33, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x24, 0x67, 0x80, 0x18, +0xFF, 0x13, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xC0, 0xF0, 0x67, 0xA2, 0xFF, 0x68, +0x0C, 0xE9, 0x76, 0x33, 0x2E, 0xEB, 0x15, 0x2B, +0xC0, 0xF0, 0x84, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, +0x0C, 0xEB, 0x0F, 0x23, 0xC3, 0xF3, 0x88, 0xA2, +0x40, 0x6B, 0x8C, 0xEB, 0x0C, 0xEB, 0x09, 0x23, +0xC3, 0xF3, 0x69, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x0C, 0xEA, 0x03, 0x22, 0x91, 0x67, 0x00, 0x18, +0xDA, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x45, 0xF1, 0x7D, 0xA2, 0x2E, 0xEB, +0x11, 0x2B, 0x45, 0xF1, 0x7C, 0xA2, 0x1F, 0x6C, +0x6A, 0x32, 0x8C, 0xEA, 0x47, 0xE9, 0x01, 0x6C, +0x8C, 0xEA, 0x08, 0x22, 0x02, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xF9, 0xE0, 0x30, 0xF0, 0x20, 0x6A, +0x6D, 0xF3, 0x47, 0xA2, 0x2E, 0xEA, 0x03, 0x2A, +0x91, 0x67, 0x80, 0x18, 0x2E, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x45, 0xF1, +0x10, 0xA2, 0x04, 0xD2, 0x2E, 0xE8, 0x06, 0x28, +0x91, 0x67, 0x80, 0x18, 0x0A, 0x10, 0x04, 0x92, +0x45, 0xF1, 0x12, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xE8, 0xF2, 0x57, 0xA2, 0x2E, 0xEA, 0x03, 0x2A, +0x91, 0x67, 0x80, 0x18, 0x17, 0x13, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x39, 0xDE, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0x64, 0x9B, +0xFF, 0x6A, 0x4C, 0xEE, 0x6D, 0xE4, 0x08, 0x68, +0x80, 0xA3, 0xDB, 0xE0, 0x02, 0x67, 0x4C, 0xED, +0x07, 0xEE, 0xD0, 0x67, 0x4C, 0xEF, 0x04, 0xED, +0x4C, 0xEC, 0xCC, 0xEF, 0x0F, 0xE8, 0x8C, 0xE8, +0xE4, 0xED, 0xED, 0xE8, 0x4C, 0xE8, 0x00, 0xC3, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0x8C, 0xEB, 0x4D, 0xE3, +0x40, 0xA3, 0xFF, 0x6C, 0x8C, 0xEE, 0x08, 0x6B, +0xDB, 0xE3, 0x8C, 0xED, 0x8C, 0xEA, 0x64, 0x67, +0x47, 0xED, 0x67, 0xEE, 0x6C, 0xEA, 0x8C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x2F, 0xF2, +0x0D, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF7, 0x5C, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, 0x09, 0x70, 0x13, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, 0x20, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x7C, 0xDA, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA3, 0xF3, 0x78, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x78, 0xDA, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD9, 0x17, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF4, 0x50, 0xA2, -0x03, 0x72, 0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF0, 0x90, 0x9A, 0xFF, 0x6A, 0x60, 0xA4, -0x6C, 0xEA, 0x10, 0x6B, 0x4C, 0xEB, 0x03, 0x23, -0xEF, 0x6B, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0xAF, 0xF2, 0x01, 0x4A, +0x40, 0xDB, 0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF7, 0xA0, 0x9A, 0xFF, 0x6C, 0x40, 0xA5, +0xA0, 0xA5, 0x8C, 0xEA, 0xAC, 0xEC, 0x4E, 0xEC, +0x19, 0x24, 0x64, 0x73, 0x12, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF1, 0x98, 0x9B, 0x40, 0x6D, +0x60, 0x9C, 0xAD, 0xEB, 0x60, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0xA3, 0xF3, +0x98, 0x9B, 0xAD, 0xEC, 0xA3, 0xF3, 0x98, 0xDB, +0x20, 0xE8, 0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEB, 0xDC, 0x17, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x27, 0x67, 0x4C, 0xE9, 0x6F, 0x41, -0x4C, 0xEB, 0x04, 0x67, 0x02, 0x5B, 0x4C, 0xE8, -0x4C, 0xED, 0x4C, 0xEE, 0x03, 0x61, 0x90, 0x67, -0x00, 0x18, 0xDF, 0xD9, 0x10, 0x58, 0x55, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x08, 0x33, 0x83, 0xF0, -0x00, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0xD0, 0xF4, 0x44, 0x40, 0x1F, 0xF7, 0x00, 0x6B, -0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF1, 0x68, 0x9A, 0x34, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF1, 0x6C, 0x9A, 0x2F, 0x10, -0x80, 0xF4, 0x44, 0x40, 0x1F, 0xF7, 0x00, 0x6B, -0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF1, 0x70, 0x9A, 0x24, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF1, 0x74, 0x9A, 0x1F, 0x10, -0xC0, 0xF4, 0x48, 0x40, 0x1F, 0xF7, 0x00, 0x6B, -0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF1, 0x78, 0x9A, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF1, 0x7C, 0x9A, 0x0F, 0x10, -0x70, 0xF4, 0x48, 0x40, 0x1F, 0xF7, 0x00, 0x6B, -0x6C, 0xEA, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF1, 0x60, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF1, 0x64, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x6D, 0xE0, -0x41, 0xE0, 0x83, 0xF3, 0x98, 0xA0, 0xA3, 0xF3, -0x48, 0xA0, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x2A, 0xF2, -0x35, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x23, 0xF4, 0x04, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0x72, 0x3C, 0x01, 0x6B, 0x6E, 0xEA, 0x05, 0x97, -0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0x69, 0x8C, 0xE9, 0x00, 0x68, 0x2B, 0x10, +0x82, 0xF3, 0x08, 0x70, 0x12, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, 0x10, 0x6C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, +0x78, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, +0x14, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, +0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF7, +0x44, 0x9A, 0x01, 0x6B, 0x40, 0xA2, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF7, 0x44, 0x9A, 0x01, 0x6B, +0x40, 0x9A, 0x42, 0x32, 0x5E, 0x32, 0x6C, 0xEA, +0x2E, 0xEA, 0xCA, 0x2A, 0x43, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x23, 0x6A, 0x8F, 0xF3, 0x09, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF7, +0x48, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x8F, 0xF3, +0x0A, 0x4A, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0x94, 0x34, 0x4C, 0xED, +0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF7, +0x4C, 0x9A, 0x80, 0xC2, 0xA0, 0xC2, 0x20, 0xE8, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF7, +0x6C, 0x9B, 0x4C, 0xEC, 0x94, 0x34, 0x4C, 0xEC, +0x80, 0xC3, 0x60, 0xA3, 0x6C, 0xEA, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xED, 0xFF, 0x75, 0x4C, 0xEC, +0xCC, 0xEA, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x71, 0xE4, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x71, 0xE4, 0xA3, 0xF3, 0x64, 0xA4, 0xAC, 0xEA, +0xAF, 0xED, 0x6C, 0xED, 0xAD, 0xEA, 0xA3, 0xF3, +0x44, 0xC4, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6B, 0x6C, 0xEC, 0x07, 0x6A, +0x6C, 0xED, 0x8C, 0xEA, 0x01, 0x68, 0xE6, 0x67, +0x04, 0xEA, 0xAB, 0xEE, 0x30, 0xF0, 0x20, 0x6A, +0xAD, 0xEE, 0x40, 0xF4, 0x40, 0x9A, 0x6C, 0xE8, +0xC0, 0xF7, 0xC3, 0x36, 0x8E, 0x34, 0x6C, 0xEF, +0xB0, 0x67, 0x0C, 0xEE, 0x6C, 0xEC, 0x40, 0xEA, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x00, 0x18, 0xE2, 0xDE, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF3, 0x74, 0x9A, 0xEF, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6C, 0x00, 0x18, +0xC0, 0xDE, 0x00, 0x18, 0x8D, 0xC8, 0x2B, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF2, 0x62, 0xA2, +0x08, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x22, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF7, +0x70, 0x9A, 0x7F, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, +0x20, 0x68, 0x80, 0xAB, 0x07, 0x69, 0x8C, 0xEA, +0x40, 0xCB, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF4, +0x4C, 0x9A, 0x0A, 0x6C, 0x20, 0xC2, 0x80, 0xF3, +0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF4, 0x50, 0x9A, 0x0A, 0x6C, 0x20, 0xC2, +0x80, 0xF3, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, +0x88, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, 0xC3, 0xF3, +0x68, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0xC3, 0xF3, 0x68, 0xA0, +0x80, 0x6A, 0x4B, 0xEA, 0x6D, 0xEA, 0xC3, 0xF3, +0x48, 0xC0, 0x43, 0xF4, 0x54, 0xA0, 0x04, 0xD2, +0x80, 0xF0, 0x01, 0x22, 0x02, 0x6A, 0xC3, 0xF3, +0x4C, 0xC0, 0x5C, 0xB9, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x30, 0xF0, 0x21, 0x6C, 0xFC, 0xF7, +0x18, 0x4C, 0xBF, 0x67, 0xA0, 0xDC, 0x9A, 0xB8, +0x00, 0x65, 0xBB, 0xB8, 0x00, 0x65, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x44, 0xF1, 0x9C, 0x9C, 0x40, 0x9B, +0x10, 0x6D, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF0, 0x4C, 0x9A, 0x04, 0x6B, +0xFF, 0x6C, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, 0x42, 0xF6, +0x6E, 0xC2, 0xC3, 0xF3, 0x7A, 0xAA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF7, 0x54, 0x9A, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF3, 0x74, 0x9A, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x6C, 0x00, 0x18, 0xC0, 0xDE, +0xA0, 0xF0, 0x0E, 0x22, 0x58, 0xB9, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x79, 0xB9, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x30, 0xF0, 0x21, 0x69, +0xDC, 0xF7, 0x0C, 0x49, 0x12, 0xE8, 0x00, 0xD9, +0x10, 0xE8, 0x01, 0xD9, 0x42, 0xD9, 0x63, 0xD9, +0x84, 0xD9, 0xA5, 0xD9, 0xC6, 0xD9, 0xE7, 0xD9, +0x18, 0x67, 0x08, 0xD9, 0x1A, 0xB8, 0x00, 0x65, +0x09, 0xD9, 0x30, 0xF0, 0x21, 0x68, 0xDC, 0xF7, +0x0C, 0x48, 0x3B, 0xB8, 0x00, 0x65, 0x2A, 0xD8, +0x1A, 0xB8, 0x00, 0x65, 0x58, 0xB9, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x79, 0xB9, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x77, 0xF0, 0x20, 0x68, +0x80, 0xF0, 0x10, 0x48, 0x00, 0x98, 0x01, 0x69, +0x2D, 0xE8, 0x77, 0xF0, 0x20, 0x69, 0x80, 0xF0, +0x10, 0x49, 0x00, 0xD9, 0x1A, 0xB8, 0x00, 0x65, +0x3B, 0xB8, 0x00, 0x65, 0x48, 0x10, 0x01, 0x6A, +0xC3, 0xF3, 0x4C, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF3, 0x7A, 0xA8, 0x64, 0xF7, 0x54, 0x9A, +0x60, 0xCA, 0x00, 0x18, 0x8D, 0xC8, 0x23, 0x22, +0xC0, 0xF0, 0x72, 0xA0, 0x08, 0x6A, 0x6C, 0xEA, +0x1E, 0x22, 0x7D, 0x67, 0x87, 0x43, 0x09, 0x4C, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xA4, 0xC4, 0xF4, +0x4C, 0x9A, 0x9D, 0x67, 0x80, 0x6D, 0x60, 0xC2, +0x67, 0x44, 0x09, 0x4B, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xA3, 0xC4, 0xF4, 0x50, 0x9A, 0x80, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF7, 0x70, 0x9A, +0xFF, 0xF7, 0x1F, 0x6C, 0x40, 0xAB, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF3, 0x74, 0x9A, 0xFF, 0x68, +0x10, 0x6C, 0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, +0x0C, 0xEA, 0x40, 0xC3, 0x01, 0x6C, 0x00, 0x18, +0xC0, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF7, +0x68, 0x9A, 0x01, 0x6C, 0x40, 0xA3, 0x0C, 0xEA, +0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x20, 0xBA, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0xFF, 0x74, 0xAC, 0xEA, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xAB, 0xF5, 0x43, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x83, 0xF3, 0xB3, 0xA3, 0x8C, 0xEA, 0x8F, 0xEC, +0xAC, 0xEC, 0x8D, 0xEA, 0x83, 0xF3, 0x53, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x26, 0x67, +0x0C, 0xE9, 0x53, 0x71, 0x0C, 0xEC, 0x0C, 0xED, +0x09, 0x60, 0x06, 0x2C, 0x30, 0xF0, 0x20, 0x6A, +0xAB, 0xF5, 0x42, 0xA2, 0xAD, 0xEA, 0x0B, 0x10, +0x00, 0x18, 0xC5, 0xDF, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x83, 0xF3, 0x73, 0xA2, +0x83, 0xF3, 0x52, 0xA2, 0x6D, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF1, 0x64, 0x9B, 0x0C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xAB, 0xF5, +0x20, 0xC2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x6D, 0xF3, 0x4D, 0xA2, 0xFF, 0x63, 0x05, 0x5A, +0x36, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, +0x63, 0xF7, 0x04, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, +0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x40, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0x9A, +0x1A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x40, 0x9A, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF7, 0x48, 0x9A, 0x0D, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF7, 0x48, 0x9A, 0x40, 0x9A, +0x50, 0x32, 0x00, 0xF5, 0x42, 0x32, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF7, 0x4C, 0x9A, +0x40, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x00, 0xD2, 0x00, 0x93, 0xE0, 0xF3, 0x08, 0x6A, +0x60, 0x33, 0x68, 0x33, 0x5B, 0xEB, 0x01, 0x2A, +0xE5, 0xE8, 0x12, 0xEA, 0x01, 0x10, 0x66, 0x6A, +0x00, 0xD2, 0x00, 0x92, 0x01, 0x63, 0x20, 0xE8, +0xFF, 0x63, 0x01, 0xD0, 0x15, 0x2C, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF0, 0x84, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, 0x5D, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x45, 0xF1, 0xBC, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x45, 0xF1, 0x7C, 0xC2, 0x65, 0xF1, +0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x8D, 0xF3, +0x0C, 0x4A, 0x00, 0x6D, 0x18, 0x6F, 0xF8, 0xED, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x12, 0xEF, 0x6D, 0xE7, 0x65, 0xF1, 0x10, 0xA3, +0x01, 0x6F, 0xEC, 0xE8, 0x23, 0x20, 0x65, 0xF1, +0x70, 0xA3, 0x66, 0x33, 0xEC, 0xEB, 0xFF, 0x6F, +0xEC, 0xEB, 0x1C, 0x23, 0xFF, 0xF7, 0x78, 0x9A, +0x9B, 0xEB, 0x01, 0x2C, 0xE5, 0xE8, 0x12, 0xEB, +0xFF, 0xF7, 0x7C, 0xDA, 0x10, 0xEF, 0x03, 0x27, +0x01, 0x4B, 0xFF, 0xF7, 0x7C, 0xDA, 0x60, 0x9A, +0x78, 0xEE, 0x12, 0xEB, 0x9B, 0xEB, 0x01, 0x2C, +0xE5, 0xE8, 0x12, 0xEB, 0x60, 0xDA, 0xFF, 0xF7, +0x7C, 0x9A, 0x04, 0x2B, 0x01, 0x6F, 0xFF, 0xF7, +0xFC, 0xDA, 0x60, 0xDA, 0x01, 0x4D, 0x0A, 0x75, +0x18, 0x4A, 0xCC, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x65, 0xF1, 0x64, 0x9A, +0x65, 0xF1, 0x80, 0xDA, 0x7B, 0xEC, 0x01, 0x2B, +0xE5, 0xE8, 0x45, 0xF1, 0x9C, 0xA2, 0x12, 0xEB, +0x65, 0xF1, 0x68, 0xDA, 0x78, 0x67, 0x65, 0xF1, +0x6C, 0xDA, 0x02, 0x6B, 0x8D, 0xEB, 0x45, 0xF1, +0x7C, 0xC2, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x45, 0xF1, +0x5C, 0xA0, 0x03, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, +0x2B, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF7, +0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xFF, 0x6E, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x48, 0x9A, 0x6D, 0xF3, 0x0C, 0x4C, 0x00, 0x6D, +0x05, 0x4E, 0x40, 0xEA, 0x05, 0x6A, 0x66, 0x6B, +0x5B, 0xEB, 0x01, 0x2A, 0xE5, 0xE8, 0x65, 0xF1, +0x44, 0xD8, 0x65, 0xF1, 0x60, 0xD8, 0x45, 0xF1, +0x7C, 0xA0, 0x12, 0xEA, 0x65, 0xF1, 0x48, 0xD8, +0x01, 0x6A, 0x4B, 0xEA, 0x45, 0xF1, 0x5D, 0xC0, +0x7D, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x01, 0x6B, +0x6D, 0xEA, 0x45, 0xF1, 0x5C, 0xC0, 0x43, 0x67, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x45, 0xF1, +0x9C, 0xA0, 0x01, 0x6B, 0x00, 0x6A, 0x8C, 0xEB, +0x22, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF7, +0x50, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x03, 0x6A, +0x4B, 0xEA, 0x8C, 0xEA, 0x45, 0xF1, 0x5C, 0xC0, +0x00, 0x18, 0xE7, 0xDF, 0x04, 0xD2, 0x04, 0x94, +0x00, 0x18, 0x08, 0xE0, 0x45, 0xF1, 0x7C, 0xA0, +0x02, 0x6A, 0x65, 0xF1, 0xC4, 0x98, 0x6D, 0xEA, +0x45, 0xF1, 0x5C, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x48, 0x9A, 0x42, 0xF1, 0x1C, 0x6C, +0x01, 0x6D, 0x40, 0xEA, 0x01, 0x6A, 0x07, 0x97, +0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x45, 0xF1, 0xBC, 0xA3, 0x02, 0x6C, 0x00, 0x6A, +0xAC, 0xEC, 0x0C, 0x24, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF7, 0x50, 0x9A, 0x00, 0x6C, 0x80, 0xC2, +0x03, 0x6A, 0x4B, 0xEA, 0xAC, 0xEA, 0x45, 0xF1, +0x5C, 0xC3, 0x01, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x00, 0x6A, 0x18, 0x6C, 0x98, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x01, 0x4A, +0x0A, 0x72, 0x12, 0xEC, 0x71, 0xE4, 0x65, 0xF1, +0xB0, 0xA4, 0x02, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, +0x65, 0xF1, 0x70, 0xC4, 0xEE, 0x61, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x6D, 0xF3, 0x4C, 0xA2, +0x01, 0x6B, 0x4C, 0xEB, 0x00, 0x6A, 0x1C, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x8D, 0xF3, 0x10, 0x4A, +0x00, 0x6B, 0xA0, 0x9A, 0x8E, 0xED, 0x0F, 0x2D, +0x18, 0x6E, 0xD8, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x08, 0xF2, 0x10, 0x4D, 0x12, 0xEE, 0xB9, 0xE6, +0x65, 0xF1, 0xF0, 0xA6, 0x02, 0x6D, 0xAB, 0xED, +0xEC, 0xED, 0x65, 0xF1, 0xB0, 0xC6, 0x01, 0x4B, +0x0A, 0x73, 0x18, 0x4A, 0xEA, 0x61, 0x01, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x5D, 0x67, 0x0A, 0xD4, +0x20, 0xF0, 0x98, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x0B, 0xD5, 0x0C, 0xD6, 0x08, 0xF2, 0x10, 0x4A, +0x45, 0xF1, 0xBC, 0xA2, 0x01, 0x6B, 0x00, 0xF6, +0xE0, 0x31, 0xAC, 0xEB, 0x00, 0xF6, 0x23, 0x31, +0x80, 0xF0, 0x09, 0x23, 0x21, 0x24, 0x01, 0x74, +0x80, 0xF0, 0x05, 0x61, 0x0A, 0x93, 0x80, 0xF0, +0x02, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF7, +0x74, 0x9B, 0xC3, 0xEB, 0x7C, 0x61, 0x7F, 0x71, +0x7A, 0x60, 0xFF, 0xF7, 0x1F, 0x51, 0x77, 0x61, +0x65, 0xF1, 0x00, 0x9A, 0x1B, 0xEE, 0x01, 0x28, +0xE5, 0xE8, 0x10, 0xEA, 0x12, 0xE8, 0x02, 0x22, +0x01, 0x48, 0x04, 0x10, 0x03, 0x28, 0x01, 0x68, +0x50, 0x67, 0x1D, 0x10, 0x01, 0x6B, 0x1E, 0x10, +0x0A, 0x94, 0x65, 0x24, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF7, 0x74, 0x9B, 0x0C, 0x95, 0xA3, 0xEB, +0x5E, 0x61, 0x7F, 0x71, 0x5C, 0x60, 0xFF, 0xF7, +0x1F, 0x51, 0x59, 0x61, 0x65, 0xF1, 0x04, 0x9A, +0x1B, 0xED, 0x01, 0x28, 0xE5, 0xE8, 0x10, 0xEA, +0x12, 0xE8, 0x02, 0x22, 0x01, 0x48, 0x05, 0x10, +0x04, 0x28, 0x01, 0x68, 0x00, 0x6A, 0x04, 0xD2, +0x02, 0x10, 0x00, 0x6B, 0x04, 0xD3, 0x0A, 0x94, +0x00, 0x18, 0x92, 0xE0, 0x00, 0x6C, 0xFF, 0x6E, +0xA4, 0x67, 0xCC, 0xED, 0x1D, 0x65, 0x18, 0x6D, +0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x10, 0x4B, 0x01, 0x6D, 0x12, 0xEA, 0x69, 0xE2, +0x65, 0xF1, 0x50, 0xA2, 0xAC, 0xEA, 0xCC, 0xEA, +0x2F, 0x2A, 0xD8, 0x67, 0x18, 0x6F, 0xF8, 0xEE, +0x04, 0x96, 0xC4, 0x36, 0x04, 0xD6, 0x03, 0x6E, +0xCB, 0xEE, 0x12, 0xEC, 0x71, 0xE4, 0x65, 0xF1, +0xF0, 0xA4, 0xEC, 0xEE, 0x04, 0x97, 0xED, 0xEE, +0x65, 0xF1, 0xD0, 0xC4, 0x0A, 0x96, 0x85, 0xF1, +0xC0, 0xDC, 0x0B, 0x97, 0x85, 0xF1, 0xE4, 0xDC, +0x0C, 0x96, 0x18, 0x6F, 0x65, 0xF1, 0xD4, 0xDC, +0xD8, 0x67, 0x01, 0x4E, 0xF8, 0xEE, 0x12, 0xEE, +0x6D, 0xE6, 0x65, 0xF1, 0x44, 0xDB, 0x65, 0xF1, +0x00, 0xDB, 0x65, 0xF1, 0x51, 0xC4, 0x65, 0xF1, +0x50, 0xA4, 0x65, 0xF1, 0x32, 0xC4, 0x4D, 0xED, +0x65, 0xF1, 0xB0, 0xC4, 0x01, 0x6A, 0x04, 0x10, +0x01, 0x4C, 0x0A, 0x74, 0xBC, 0x61, 0x00, 0x6A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x06, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x8D, 0xF3, 0x0C, 0x4A, 0x00, 0x6C, +0x4A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x8D, 0xF3, +0x0C, 0x4A, 0x00, 0x6B, 0x18, 0x6D, 0xB8, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF2, 0x10, 0x4C, +0x12, 0xED, 0x91, 0xE5, 0x65, 0xF1, 0xD0, 0xA4, +0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, 0x65, 0xF1, +0x90, 0xA4, 0x86, 0x34, 0xAC, 0xEC, 0x03, 0x24, +0x80, 0x9A, 0x01, 0x4C, 0x80, 0xDA, 0x01, 0x4B, +0x0A, 0x73, 0x18, 0x4A, 0xE7, 0x61, 0x00, 0x18, +0xE7, 0xDF, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, 0x67, 0xA2, +0x45, 0xF1, 0xBD, 0xA2, 0xFF, 0x6C, 0x76, 0x33, +0xAE, 0xEB, 0x12, 0x2B, 0xC0, 0xF0, 0xA4, 0xA2, +0x7F, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, 0x0C, 0x23, +0xC0, 0xF0, 0xA5, 0xA2, 0x0F, 0x6B, 0xAC, 0xEB, +0x8C, 0xEB, 0x06, 0x23, 0x04, 0x93, 0xC3, 0xF3, +0x52, 0xA2, 0x78, 0xEA, 0x12, 0xEA, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0x93, 0x6D, 0xF3, +0x50, 0x9A, 0x6E, 0xEA, 0x52, 0x22, 0x04, 0x94, +0x00, 0x18, 0x08, 0xE0, 0x4E, 0x10, 0x18, 0x6D, +0xB8, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x10, 0x4B, 0x12, 0xED, 0x6D, 0xE5, 0x65, 0xF1, +0xD0, 0xA3, 0x01, 0x6D, 0xAC, 0xEE, 0x0A, 0x26, +0x65, 0xF1, 0x70, 0xA3, 0x66, 0x33, 0xAC, 0xEB, +0xFF, 0x6D, 0xAC, 0xEB, 0x03, 0x2B, 0x60, 0x9A, +0x01, 0x4B, 0x60, 0xDA, 0x01, 0x4C, 0x0A, 0x74, +0x18, 0x4A, 0xE5, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x45, 0xF1, 0x7D, 0xA2, +0xFF, 0x73, 0x2B, 0x61, 0x65, 0xF1, 0x6C, 0x9A, +0x01, 0x4B, 0x65, 0xF1, 0x6C, 0xDA, 0x65, 0xF1, +0x48, 0x9A, 0x4E, 0xEB, 0x22, 0x2B, 0x30, 0xF0, +0x20, 0x6A, 0x8D, 0xF3, 0x0C, 0x4A, 0x18, 0x6D, +0xB8, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF2, +0x10, 0x4C, 0x12, 0xED, 0x91, 0xE5, 0x65, 0xF1, +0xD0, 0xA4, 0x01, 0x6D, 0xAC, 0xEE, 0x08, 0x26, +0x65, 0xF1, 0x90, 0xA4, 0x86, 0x34, 0xAC, 0xEC, +0x03, 0x24, 0x80, 0x9A, 0x01, 0x4C, 0x80, 0xDA, +0x01, 0x4B, 0x0A, 0x73, 0x18, 0x4A, 0xE7, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x78, 0x67, 0x6D, 0xF3, +0x7C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x24, 0x67, 0xC0, 0xF0, 0x84, 0xA2, 0xE3, 0xF3, -0x60, 0xAA, 0x7F, 0x6A, 0x8C, 0xEA, 0x21, 0x22, -0x01, 0x4B, 0xE0, 0xF3, 0x08, 0x6A, 0x58, 0xEB, -0x12, 0xEC, 0x23, 0xEC, 0x04, 0xD4, 0x19, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, 0x87, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x08, 0x9A, -0x96, 0x34, 0xB0, 0x67, 0x80, 0x18, 0x24, 0x16, -0x43, 0xE0, 0x23, 0xE8, 0x0A, 0x61, 0x04, 0x92, -0x03, 0xEA, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x68, 0x8D, 0xF3, 0x01, 0x48, +0x00, 0x69, 0x18, 0x6A, 0x58, 0xE9, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x12, 0xEA, +0x69, 0xE2, 0x65, 0xF1, 0x90, 0xA2, 0x01, 0x6B, +0x8C, 0xEB, 0x27, 0x23, 0x00, 0xF0, 0x8B, 0x98, +0x00, 0xF0, 0x67, 0x98, 0x63, 0xEC, 0x21, 0x61, +0x61, 0x80, 0x81, 0x43, 0x04, 0xD4, 0x07, 0x2C, +0x00, 0xF0, 0x4F, 0x98, 0x00, 0xF0, 0x93, 0x98, +0x40, 0xEA, 0x04, 0x92, 0x14, 0x10, 0x80, 0xA0, +0x01, 0x4C, 0x80, 0xC0, 0x80, 0xA0, 0x82, 0xEB, +0x08, 0x60, 0x65, 0xF1, 0x90, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0x65, 0xF1, 0x70, 0xC2, +0x08, 0x10, 0x00, 0xF0, 0x4F, 0x98, 0x00, 0xF0, +0x93, 0x98, 0x40, 0xEA, 0x00, 0x6A, 0x00, 0xF0, +0x4B, 0xD8, 0x01, 0x49, 0x0A, 0x71, 0x18, 0x48, +0xC8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFF, 0x6B, 0x6C, 0xEC, +0x0F, 0x6A, 0x8C, 0xEA, 0x03, 0x2A, 0x92, 0x32, +0x6C, 0xEA, 0x20, 0xE8, 0x07, 0x4A, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, +0x08, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x44, 0x32, +0xFF, 0x4A, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, +0x80, 0x18, 0x52, 0x5D, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, +0x04, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0xFF, 0x4A, +0x44, 0x32, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, +0x80, 0x18, 0x52, 0x5D, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, +0x08, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x44, 0x32, +0xFF, 0x4A, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, +0x80, 0x18, 0x6F, 0x5D, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, +0x04, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0xFF, 0x4A, +0x44, 0x32, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, +0x80, 0x18, 0x6F, 0x5D, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, +0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x80, 0x18, +0xEE, 0x5C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, +0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0xEE, 0x5C, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x75, 0xE1, 0x01, 0x6D, 0x02, 0x6C, +0xA4, 0xEA, 0x80, 0x18, 0xEE, 0x5C, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x75, 0xE1, +0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x80, 0x18, +0xEE, 0x5C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, +0xA2, 0x67, 0x80, 0x18, 0xEE, 0x5C, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, +0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x80, 0x18, +0x1F, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, +0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0x1F, 0x5D, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x00, 0x18, 0x75, 0xE1, 0x01, 0x6D, 0x02, 0x6C, +0xA4, 0xEA, 0x80, 0x18, 0x1F, 0x5D, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x75, 0xE1, +0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x80, 0x18, +0x1F, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, +0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, +0xA2, 0x67, 0x80, 0x18, 0x1F, 0x5D, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xDD, 0x63, 0x45, 0x62, +0x44, 0xD1, 0x43, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x69, 0xA4, 0xF7, 0x48, 0x9A, 0x8C, 0xE9, +0x30, 0x31, 0x49, 0xE1, 0x40, 0xD2, 0x40, 0xA2, +0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, +0x00, 0x52, 0x40, 0x60, 0x01, 0x6A, 0x7D, 0x67, +0x4B, 0xEA, 0x54, 0xC3, 0x0F, 0x6A, 0x56, 0xC3, +0x10, 0x6A, 0x57, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF7, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x68, +0x06, 0x04, 0x49, 0xE1, 0x40, 0x9A, 0x04, 0x05, +0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF7, +0x50, 0x9A, 0x07, 0x04, 0x04, 0x05, 0x49, 0xE1, +0x40, 0x9A, 0x04, 0x6E, 0x04, 0xD2, 0x80, 0xF2, +0x4C, 0x98, 0x40, 0xEA, 0x40, 0x93, 0x08, 0x04, +0x04, 0x05, 0x40, 0x9B, 0x04, 0x6E, 0x04, 0xD2, +0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF7, 0x54, 0x9A, 0x09, 0x04, +0x04, 0x05, 0x45, 0xE1, 0x40, 0x99, 0x04, 0x6E, +0x04, 0xD2, 0x80, 0xF2, 0x4C, 0x98, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, +0x05, 0x04, 0x40, 0xEA, 0x45, 0x97, 0x44, 0x91, +0x43, 0x90, 0x23, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF7, 0x8C, 0x9C, +0x50, 0x33, 0x91, 0xE3, 0x80, 0x9C, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF7, 0x90, 0x9C, 0x8D, 0xE3, +0x82, 0x67, 0x60, 0x9B, 0x00, 0x18, 0xEF, 0xE1, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF1, 0x4C, 0x9A, 0xA4, 0xF7, 0x78, 0x9B, +0x00, 0xA2, 0x20, 0xA3, 0xFF, 0x6A, 0x4C, 0xE8, +0x4C, 0xE9, 0x2A, 0xE8, 0x2B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF7, 0x4C, 0x9A, 0x10, 0x33, +0x49, 0xE3, 0x40, 0xA2, 0xFF, 0x6B, 0x6C, 0xEA, +0x56, 0x32, 0x6C, 0xEA, 0x04, 0x72, 0x09, 0x60, +0x06, 0x72, 0x0C, 0x60, 0x02, 0x72, 0x10, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x54, 0x9A, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x58, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, +0x01, 0x48, 0x7F, 0x6A, 0x4C, 0xE8, 0x0A, 0xE9, +0xDA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, +0x4C, 0x9A, 0x20, 0xC2, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0xFF, 0x6B, +0xE2, 0x67, 0x6C, 0xEE, 0x6C, 0xEF, 0x1E, 0x65, +0x87, 0x67, 0x03, 0x6E, 0xCC, 0xEC, 0x80, 0xF0, +0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF7, +0x1C, 0x9C, 0x08, 0x69, 0x42, 0x32, 0x80, 0xA0, +0x52, 0x32, 0x6C, 0xEA, 0x6C, 0xEC, 0x2D, 0xEC, +0x6C, 0xEC, 0x80, 0xC0, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF7, 0x80, 0x9C, 0xCC, 0xEA, 0xE0, 0xC4, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF7, 0x84, 0x9C, +0x40, 0xC4, 0x0F, 0x6A, 0x98, 0x67, 0x8C, 0xEA, +0x74, 0x22, 0x01, 0x6C, 0x4C, 0xEC, 0x06, 0x24, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF7, 0x88, 0x9C, +0xAC, 0xEB, 0x60, 0xC4, 0x02, 0x6B, 0x4C, 0xEB, +0x08, 0x23, 0xFF, 0x6C, 0xA2, 0x33, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF7, 0x8C, 0x9C, +0x60, 0xC4, 0x04, 0x6B, 0x4C, 0xEB, 0x09, 0x23, +0xA2, 0x33, 0xFF, 0x6C, 0x62, 0x33, 0x8C, 0xEB, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF7, 0x90, 0x9C, +0x60, 0xC4, 0x4E, 0x33, 0x07, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF7, 0x74, 0x9B, 0x00, 0xF6, +0xA2, 0x35, 0xA0, 0xC3, 0x20, 0x6B, 0x4D, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF7, 0x58, 0x9A, +0x64, 0x68, 0x60, 0xC2, 0x2C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, +0xFF, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0x21, 0x28, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xE4, 0xF3, 0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, 0x8D, 0xEB, +0xA3, 0xF3, 0x78, 0xDA, 0x60, 0xA1, 0xD0, 0x6A, +0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF7, 0x7C, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x16, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF7, 0x38, 0x9A, 0x20, 0x6A, +0x60, 0xA1, 0x6C, 0xEA, 0xCC, 0x2A, 0x60, 0xA1, +0xF0, 0x6A, 0x6C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF7, 0x7C, 0x9A, 0xF7, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0xC2, 0x67, +0xFF, 0x6C, 0x8C, 0xEE, 0x03, 0x6D, 0x66, 0x67, +0xAC, 0xEB, 0x4B, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF7, 0xFC, 0x9B, 0x08, 0x68, 0x42, 0x32, +0x60, 0xA7, 0x52, 0x32, 0x8C, 0xEA, 0x8C, 0xEB, +0x0D, 0xEB, 0x8C, 0xEB, 0x60, 0xC7, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF7, 0x60, 0x9B, 0xAC, 0xEA, +0x64, 0x68, 0xC0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF7, 0x64, 0x9B, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF7, 0x58, 0x9A, 0x30, 0x6B, +0x60, 0xC2, 0x2E, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0xFF, 0x48, +0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, +0x23, 0x28, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF3, +0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA3, 0xF3, 0x78, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x78, 0xDA, 0x60, 0xA1, 0xCF, 0x6A, 0x6C, 0xEA, +0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF7, +0x7C, 0x9A, 0xF7, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x6A, 0x4B, 0xEA, 0x19, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF7, 0x38, 0x9A, +0x20, 0x6A, 0x60, 0xA1, 0x6C, 0xEA, 0xCA, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF7, 0x48, 0x9A, +0xEF, 0x6B, 0x40, 0x9A, 0x80, 0xA1, 0x8C, 0xEB, +0x60, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF7, +0x9C, 0x9B, 0xF7, 0x6B, 0xA0, 0xA4, 0xAC, 0xEB, +0x60, 0xC4, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF7, 0xBC, 0x9A, +0xE0, 0xF3, 0x10, 0x6C, 0x0F, 0x6E, 0x00, 0x18, +0x4A, 0xE2, 0xE0, 0xF3, 0x0C, 0x6C, 0x00, 0x18, +0x9E, 0xE2, 0xFF, 0x6B, 0x4C, 0xEB, 0x0B, 0x73, +0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF7, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF2, +0x8C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x64, 0xF3, 0xDC, 0xA3, 0x40, 0x6A, 0x82, 0x67, +0xCC, 0xEC, 0xFF, 0x6D, 0x29, 0x2C, 0x4D, 0xEE, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x94, 0x9A, +0x64, 0xF3, 0xDC, 0xC3, 0x01, 0x6F, 0x40, 0xA4, +0xAC, 0xEA, 0xED, 0xEA, 0xAC, 0xEA, 0x40, 0xC4, +0x84, 0xF3, 0x93, 0xA3, 0x02, 0x6A, 0x8C, 0xEA, +0xAC, 0xEA, 0x16, 0x2A, 0x80, 0x6C, 0x8B, 0xEC, +0xCC, 0xEC, 0xAC, 0xEC, 0x11, 0x24, 0x41, 0x6C, +0x8B, 0xEC, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xCC, 0xEC, 0x00, 0xF3, 0x4C, 0x9A, 0x64, 0xF3, +0x9C, 0xC3, 0x10, 0xF0, 0x24, 0x6C, 0xB1, 0xF3, +0x15, 0x4C, 0x00, 0x6D, 0x64, 0x6E, 0x40, 0xEA, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x4B, 0xF0, 0x5C, 0xA2, 0x01, 0x72, 0x0C, 0x61, +0x01, 0x6C, 0x10, 0x6D, 0x00, 0x18, 0x47, 0xD6, +0x04, 0x6B, 0x4D, 0xEB, 0xFF, 0x6E, 0x01, 0x6C, +0x10, 0x6D, 0x6C, 0xEE, 0x00, 0x18, 0x36, 0xD6, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x4B, 0xF0, 0x5C, 0xA2, 0x01, 0x72, 0x0A, 0x61, +0x01, 0x6C, 0x10, 0x6D, 0x00, 0x18, 0x47, 0xD6, +0xFB, 0x6E, 0x01, 0x6C, 0x10, 0x6D, 0x4C, 0xEE, +0x00, 0x18, 0x36, 0xD6, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x4B, 0xF0, 0x7C, 0xA3, 0xFF, 0x6A, 0x24, 0x67, +0x01, 0x73, 0xAC, 0xEA, 0x07, 0x60, 0x03, 0x73, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF7, +0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF7, 0x68, 0x9B, 0x06, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF7, 0x0C, 0x9A, 0x6C, 0xE8, +0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF7, +0x10, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF7, +0x54, 0x9A, 0x6D, 0xE8, 0x4C, 0xE8, 0x00, 0x18, +0x8D, 0xC8, 0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xE8, 0xF2, 0x62, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF7, +0x58, 0x9A, 0x4C, 0xE8, 0x02, 0x30, 0x02, 0x30, +0x00, 0xC9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, +0x30, 0xF0, 0x20, 0x6B, 0x8C, 0xE9, 0x24, 0xF1, +0x90, 0x9B, 0xFF, 0x6A, 0x4C, 0xED, 0xC0, 0xA4, +0x4C, 0xEE, 0x07, 0x25, 0x8E, 0x6B, 0xCC, 0xEB, +0x60, 0xC4, 0x71, 0x6B, 0xCD, 0xEB, 0x4C, 0xEB, +0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF0, +0x68, 0x9A, 0xFF, 0x6C, 0x01, 0x6D, 0x40, 0xA3, +0x00, 0x68, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x22, 0x10, 0x64, 0x70, 0x16, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF1, 0x9C, 0x9C, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, +0x78, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, +0x00, 0x6A, 0x1C, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, +0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0xE7, 0x17, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x6A, 0xF2, 0x50, 0xA2, 0x02, 0x72, 0x58, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF0, 0x48, 0x9A, +0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0xD6, 0x2A, +0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x49, 0x4C, 0xE9, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF3, 0x54, 0x9A, +0x20, 0xCA, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x30, 0xF0, 0x20, 0x6D, +0x04, 0x04, 0x04, 0xF0, 0x08, 0x4D, 0x14, 0x6E, +0x00, 0x18, 0xCA, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x47, 0xF4, 0x09, 0x4A, 0x05, 0x04, 0x01, 0x6B, +0x30, 0xF0, 0x20, 0x6D, 0xC8, 0xF2, 0xB7, 0xA5, +0xB6, 0x35, 0x6E, 0xED, 0x1B, 0x25, 0xC0, 0xA2, +0x19, 0x26, 0xE0, 0x9C, 0x1F, 0xF7, 0x00, 0x6D, +0xEC, 0xED, 0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, +0x09, 0x2D, 0x30, 0xF0, 0x20, 0x6E, 0xA0, 0x9C, +0x84, 0xF0, 0xD0, 0x9E, 0xB5, 0xE6, 0xC0, 0xA2, +0xC0, 0xC5, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6D, +0x84, 0xF0, 0xB4, 0x9D, 0xFD, 0xE5, 0xC0, 0xC7, +0x00, 0x6D, 0xA0, 0xC2, 0x01, 0x4B, 0xFF, 0x6D, +0xAC, 0xEB, 0x04, 0x73, 0x01, 0x4A, 0x04, 0x4C, +0xD7, 0x61, 0x0B, 0x97, 0x06, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x30, 0xF0, 0x20, 0x6D, +0x04, 0x04, 0xE3, 0xF7, 0x14, 0x4D, 0x14, 0x6E, +0x00, 0x18, 0xCA, 0xD8, 0x05, 0x03, 0x00, 0x6C, +0x01, 0x6A, 0x30, 0xF0, 0x20, 0x6D, 0xC8, 0xF2, +0xB7, 0xA5, 0xB6, 0x35, 0x4E, 0xED, 0x38, 0x25, +0xC0, 0x9B, 0x1F, 0xF7, 0x00, 0x6D, 0xCC, 0xED, +0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x09, 0x2D, +0x30, 0xF0, 0x20, 0x6E, 0x84, 0xF0, 0xD0, 0x9E, +0xA0, 0x9B, 0xE1, 0x44, 0xB5, 0xE6, 0xC0, 0xA5, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x84, 0xF0, +0xB4, 0x9D, 0xE1, 0x44, 0xD9, 0xE5, 0xC0, 0xA6, +0xFF, 0x6D, 0xCC, 0xED, 0x30, 0xF0, 0x20, 0x6E, +0x47, 0xF4, 0x08, 0x4E, 0xD9, 0xE7, 0xA0, 0xC6, +0xC0, 0x9B, 0x1F, 0xF7, 0x00, 0x6D, 0xCC, 0xED, +0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x09, 0x2D, +0x30, 0xF0, 0x20, 0x6E, 0xA0, 0x9B, 0x84, 0xF0, +0xD0, 0x9E, 0xB5, 0xE6, 0x00, 0x6E, 0xC0, 0xC5, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x84, 0xF0, +0xB4, 0x9D, 0xD9, 0xE5, 0x00, 0x6D, 0xA0, 0xC6, +0x01, 0x4A, 0xFF, 0x6D, 0xAC, 0xEA, 0x04, 0x72, +0x01, 0x4C, 0x04, 0x4B, 0xBA, 0x61, 0x0B, 0x97, +0x06, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6B, +0x05, 0xF0, 0xAC, 0x9B, 0xFF, 0x6A, 0x08, 0x6E, +0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, +0xCC, 0xEB, 0x6D, 0xEC, 0x30, 0xF0, 0x20, 0x6B, +0x05, 0xF0, 0x70, 0x9B, 0x4C, 0xEC, 0x80, 0xC5, +0x60, 0xA3, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x05, 0xF0, 0xCC, 0x9B, +0xFF, 0x6A, 0x08, 0x6F, 0x60, 0xA6, 0xEB, 0xEF, +0x4C, 0xEC, 0x4C, 0xEB, 0xEC, 0xEB, 0x6D, 0xEC, +0x4C, 0xED, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0x05, 0xF0, 0x50, 0x9A, 0x80, 0xC6, 0xA0, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0x83, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xA4, 0xF3, +0xAC, 0x9B, 0xC3, 0xF4, 0x10, 0x69, 0x91, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x64, 0xF3, 0xB0, 0x9B, +0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0xF1, +0xAC, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x64, 0xF0, 0xA4, 0x9B, 0x91, 0x67, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x69, -0x64, 0xF2, 0x14, 0x48, 0x84, 0xF3, 0x00, 0x49, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0x98, 0xC0, 0xF3, -0x44, 0x9A, 0x01, 0x6D, 0x83, 0xF6, 0x04, 0x6C, -0xAB, 0xED, 0x04, 0x48, 0x40, 0xEA, 0x2A, 0xE8, -0xF3, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xE4, 0xF1, -0x04, 0x48, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, -0x44, 0x99, 0xC0, 0x98, 0x01, 0x6D, 0x23, 0xF0, -0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0x48, 0x24, 0xF2, 0x0C, 0x4A, -0x4A, 0xE8, 0xEF, 0x61, 0x21, 0xF0, 0x04, 0x68, -0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x80, 0x18, -0x72, 0x3C, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD2, -0xE3, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0x90, 0x67, 0x03, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xEA, 0x24, 0xF2, 0x0C, 0x48, 0x30, 0xF0, -0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0xC0, 0x98, -0x01, 0x6D, 0x28, 0xF1, 0x10, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x48, -0x64, 0xF2, 0x14, 0x4A, 0x4A, 0xE8, 0xEF, 0x61, -0xC0, 0xF3, 0x44, 0x99, 0x04, 0x96, 0x01, 0x6D, -0x21, 0xF0, 0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0xC8, 0x6C, 0x00, 0x18, 0x5C, 0xDF, 0x09, 0x97, +0x40, 0xEA, 0x65, 0xF2, 0x1C, 0x48, 0x46, 0xF7, +0x1C, 0x49, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xA8, 0xC1, 0x98, 0xC0, 0xF3, 0x44, 0x9A, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x08, 0x48, +0x2A, 0xE8, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x6A, 0x8C, 0xEA, 0x0F, 0x5A, 0x08, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x48, 0x34, 0x63, 0xF7, +0x18, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, +0x00, 0x6A, 0x20, 0xE8, 0xD0, 0xF4, 0x64, 0x42, +0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x05, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x05, 0xF0, 0x74, 0x9B, +0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x05, 0xF0, +0x78, 0x9B, 0x2A, 0x10, 0x80, 0xF4, 0x64, 0x42, +0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x05, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x05, 0xF0, 0x7C, 0x9B, +0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x25, 0xF0, +0x60, 0x9B, 0x1A, 0x10, 0xC0, 0xF4, 0x68, 0x42, +0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x05, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x25, 0xF0, 0x64, 0x9B, +0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x25, 0xF0, +0x68, 0x9B, 0x0A, 0x10, 0x70, 0xF4, 0x68, 0x42, +0x1F, 0xF7, 0x00, 0x6C, 0x8C, 0xEB, 0x0A, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x25, 0xF0, 0x6C, 0x9B, +0x69, 0xE2, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, +0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x25, 0xF0, 0x70, 0x9B, 0x69, 0xE2, 0x60, 0xAA, +0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, +0x24, 0x6A, 0x92, 0xF0, 0x19, 0x4A, 0x40, 0xDB, +0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF7, +0x5C, 0x9A, 0x40, 0x9A, 0x21, 0x22, 0xE0, 0xF3, +0x09, 0x70, 0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x78, 0x9A, 0x20, 0x6C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, 0x00, 0x6A, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xD9, 0x17, +0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x4B, 0xF0, 0x5C, 0xA2, 0x03, 0x72, 0x0D, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF7, 0x9C, 0x9A, +0xFF, 0x6A, 0x60, 0xA4, 0x6C, 0xEA, 0x10, 0x6B, +0x4C, 0xEB, 0x03, 0x23, 0xEF, 0x6B, 0x4C, 0xEB, +0x60, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x27, 0x67, +0x4C, 0xE9, 0x6F, 0x41, 0x4C, 0xEB, 0x04, 0x67, +0x02, 0x5B, 0x4C, 0xE8, 0x4C, 0xED, 0x4C, 0xEE, +0x03, 0x61, 0x90, 0x67, 0x00, 0x18, 0xFC, 0xDE, +0x10, 0x58, 0x55, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0x33, 0xA3, 0xF7, 0x14, 0x4A, 0x69, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0xD0, 0xF4, 0x44, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF0, 0x74, 0x9A, +0x34, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF0, +0x78, 0x9A, 0x2F, 0x10, 0x80, 0xF4, 0x44, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF0, 0x7C, 0x9A, +0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF0, +0x60, 0x9A, 0x1F, 0x10, 0xC0, 0xF4, 0x48, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF0, 0x64, 0x9A, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF0, +0x68, 0x9A, 0x0F, 0x10, 0x70, 0xF4, 0x48, 0x40, +0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEA, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF0, 0x6C, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF0, +0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x6D, 0xE0, 0x41, 0xE0, 0x83, 0xF3, +0x94, 0xA0, 0xA3, 0xF3, 0x44, 0xA0, 0x8D, 0xEA, +0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xAB, 0xF5, 0x21, 0xC2, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x23, 0xF4, 0x04, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0xE1, 0x39, 0x01, 0x6B, +0x6E, 0xEA, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x24, 0x67, 0xC0, 0xF0, +0x84, 0xA2, 0xC3, 0xF3, 0x7C, 0xAA, 0x7F, 0x6A, +0x8C, 0xEA, 0x21, 0x22, 0x01, 0x4B, 0xE0, 0xF3, +0x08, 0x6A, 0x58, 0xEB, 0x12, 0xEC, 0x23, 0xEC, +0x04, 0xD4, 0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xC8, 0xF2, 0x97, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF0, 0x14, 0x9A, 0x96, 0x34, 0xB0, 0x67, +0x80, 0x18, 0x9D, 0x13, 0x43, 0xE0, 0x23, 0xE8, +0x0A, 0x61, 0x04, 0x92, 0x03, 0xEA, 0x07, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0x40, 0xEA, 0xE7, 0x17, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, -0x10, 0xF0, 0x23, 0x6A, 0xAF, 0xF6, 0x11, 0x4A, -0x30, 0xF0, 0x20, 0x69, 0x40, 0xDB, 0xA6, 0xF6, -0x00, 0x49, 0xC3, 0xF3, 0x50, 0xA1, 0x6C, 0x22, -0x00, 0x18, 0x55, 0xDF, 0x01, 0x72, 0x68, 0x60, -0x80, 0x18, 0xCA, 0x18, 0xC3, 0xF3, 0x50, 0xA1, -0x02, 0x72, 0x52, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6E, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, -0xAB, 0xED, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x18, -0x72, 0x3C, 0x04, 0xD2, 0x00, 0x18, 0x9E, 0xDE, -0x02, 0x6C, 0x80, 0x18, 0xC8, 0x28, 0x30, 0xF0, -0x20, 0x6C, 0xAE, 0xF7, 0x18, 0x4C, 0x80, 0x18, -0xCE, 0x32, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC4, 0xF2, 0xDC, 0x99, -0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, -0x01, 0x6D, 0x03, 0xF3, 0x08, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xE4, 0xF2, 0xC0, 0x99, -0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, -0x01, 0x6D, 0x03, 0xF3, 0x08, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x00, 0x6B, 0xC3, 0xF3, 0x70, 0xC2, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x23, 0x6A, 0xAF, 0xF6, 0x12, 0x4A, 0x40, 0xDB, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x23, 0xF4, 0x04, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0x72, 0x3C, 0x21, 0x22, 0x00, 0x18, 0x3F, 0xDE, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x6C, 0x9A, -0xFF, 0x6C, 0x02, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x58, 0x9A, 0x01, 0x6B, -0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, -0x18, 0x4C, 0x60, 0xC2, 0x00, 0x6D, 0x80, 0x18, -0x2E, 0x35, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, -0x44, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x44, 0x9A, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x6C, -0x00, 0x6D, 0x00, 0x18, 0x63, 0xCB, 0x03, 0x72, -0x20, 0x60, 0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, -0x18, 0x4C, 0x01, 0x6D, 0x80, 0x18, 0x2E, 0x35, -0x14, 0x22, 0x00, 0x18, 0x42, 0xC5, 0x01, 0x72, -0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x58, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF1, 0x6C, 0x9A, 0xFD, 0x6A, -0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, -0x0B, 0x10, 0x00, 0x6C, 0xA4, 0x67, 0x00, 0x18, -0x63, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, -0x44, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x00, 0x6A, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x44, 0xF1, 0x48, 0x9A, 0x44, 0xF1, 0x6C, 0x9B, -0x40, 0xAA, 0x60, 0xAB, 0x6E, 0xEA, 0xFF, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x01, 0x5A, 0x58, 0x67, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0xB0, 0xF0, 0x15, 0x4A, 0x40, 0xDB, 0x01, 0x4A, -0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0xD0, 0xF0, 0x0D, 0x4A, 0x40, 0xDB, 0x01, 0x4A, -0x40, 0xDB, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0xF0, 0xF0, 0x05, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x44, 0xF1, 0x70, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF4, 0x5C, 0x9A, 0x80, 0x9B, -0xA4, 0x67, 0x4C, 0xED, 0x4E, 0xED, 0x02, 0x25, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, -0x01, 0x6B, 0x40, 0x9A, 0x6C, 0xEA, 0x60, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x54, 0x9A, -0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, -0x58, 0x9A, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x44, 0xF1, 0x5C, 0x9A, 0xC0, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF1, 0x40, 0x9A, 0xA0, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, -0x80, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, -0x48, 0x9A, 0x40, 0x9A, 0x41, 0x22, 0x30, 0xF0, -0x20, 0x69, 0x64, 0xF1, 0x2C, 0x99, 0x60, 0xD9, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF5, 0x5C, 0xA2, +0x02, 0x72, 0x58, 0x61, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x69, 0x65, 0xF1, 0x10, 0x48, +0x65, 0xF2, 0x1C, 0x49, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0x98, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, +0x83, 0xF6, 0x04, 0x6C, 0xAB, 0xED, 0x04, 0x48, +0x40, 0xEA, 0x2A, 0xE8, 0xF3, 0x61, 0x30, 0xF0, +0x20, 0x68, 0xE5, 0xF0, 0x00, 0x48, 0x30, 0xF0, +0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0xC0, 0x98, +0x01, 0x6D, 0x23, 0xF0, 0x10, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x48, +0x25, 0xF1, 0x08, 0x4A, 0x4A, 0xE8, 0xEF, 0x61, +0x21, 0xF0, 0x04, 0x68, 0x01, 0x6D, 0x90, 0x67, +0xAB, 0xED, 0x80, 0x18, 0xE1, 0x39, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xD2, 0xE4, 0xF4, 0xAC, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0x90, 0x67, 0x03, 0x6E, +0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x25, 0xF1, +0x08, 0x48, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, +0x44, 0x99, 0xC0, 0x98, 0x01, 0x6D, 0x28, 0xF1, +0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x48, 0x65, 0xF1, 0x10, 0x4A, +0x4A, 0xE8, 0xEF, 0x61, 0xC0, 0xF3, 0x44, 0x99, +0x04, 0x96, 0x01, 0x6D, 0x21, 0xF0, 0x04, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0xC8, 0x6C, 0x00, 0x18, +0x8D, 0xE4, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x24, 0x6A, +0x72, 0xF3, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x69, +0x40, 0xDB, 0x08, 0xF2, 0x10, 0x49, 0xC3, 0xF3, +0x4C, 0xA1, 0x6C, 0x22, 0x00, 0x18, 0x86, 0xE4, +0x01, 0x72, 0x68, 0x60, 0x80, 0x18, 0x53, 0x16, +0xC3, 0xF3, 0x4C, 0xA1, 0x02, 0x72, 0x52, 0x61, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x40, 0xEA, 0x01, 0x6D, 0xAB, 0xED, 0x03, 0xF3, +0x08, 0x6C, 0x80, 0x18, 0xE1, 0x39, 0x04, 0xD2, +0x00, 0x18, 0xCF, 0xE3, 0x02, 0x6C, 0x80, 0x18, +0x2D, 0x26, 0x30, 0xF0, 0x21, 0x6C, 0x70, 0xF1, +0x08, 0x4C, 0x80, 0x18, 0x33, 0x30, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC4, 0xF2, 0xD8, 0x99, 0x01, 0x6D, 0x23, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x04, 0x96, 0x01, 0x6D, 0x03, 0xF3, +0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x0A, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC4, 0xF2, 0xDC, 0x99, 0x01, 0x6D, 0x23, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x04, 0x96, 0x01, 0x6D, 0x03, 0xF3, +0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, 0xC3, 0xF3, +0x6C, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0x72, 0xF3, +0x16, 0x4A, 0x40, 0xDB, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x23, 0xF4, 0x04, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0xE1, 0x39, 0x21, 0x22, +0x00, 0x18, 0x70, 0xE3, 0x30, 0xF0, 0x20, 0x6A, +0x25, 0xF0, 0x78, 0x9A, 0xFF, 0x6C, 0x02, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, +0x50, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, +0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, 0x60, 0xC2, +0x00, 0x6D, 0x80, 0x18, 0x93, 0x32, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x44, 0x9A, 0x01, 0x6C, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF5, 0x44, 0x9A, 0x00, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, +0x40, 0xEA, 0x01, 0x6C, 0x00, 0x6D, 0x00, 0x18, +0x6C, 0xCC, 0x03, 0x72, 0x20, 0x60, 0x30, 0xF0, +0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, 0x01, 0x6D, +0x80, 0x18, 0x93, 0x32, 0x14, 0x22, 0x00, 0x18, +0x7B, 0xC5, 0x01, 0x72, 0x06, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF1, 0x50, 0x9A, 0x3F, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF0, +0x78, 0x9A, 0xFD, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x6A, 0x0B, 0x10, 0x00, 0x6C, +0xA4, 0x67, 0x00, 0x18, 0x6C, 0xCC, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF5, 0x44, 0x9A, 0x01, 0x6C, +0x40, 0xEA, 0x00, 0x6A, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x45, 0xF0, 0x54, 0x9A, +0x45, 0xF0, 0x78, 0x9B, 0x40, 0xAA, 0x60, 0xAB, +0x6E, 0xEA, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x01, 0x5A, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0x72, 0xF5, 0x19, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0x92, 0xF5, 0x11, 0x4A, +0x40, 0xDB, 0x01, 0x4A, 0x40, 0xDB, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0xB2, 0xF5, 0x09, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF0, +0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, +0x54, 0x9A, 0x80, 0x9B, 0xA4, 0x67, 0x4C, 0xED, +0x4E, 0xED, 0x02, 0x25, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x45, 0xF0, 0x5C, 0x9A, 0x01, 0x6B, 0x40, 0x9A, +0x6C, 0xEA, 0x60, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x65, 0xF0, 0x40, 0x9A, 0x00, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x65, 0xF0, 0x44, 0x9A, 0xE0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x65, 0xF0, 0x48, 0x9A, +0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x65, 0xF0, +0x4C, 0x9A, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x65, 0xF0, 0x50, 0x9A, 0x80, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x65, 0xF0, 0x54, 0x9A, 0x40, 0x9A, +0x41, 0x22, 0x30, 0xF0, 0x20, 0x69, 0x65, 0xF0, +0x38, 0x99, 0x60, 0xD9, 0x30, 0xF0, 0x20, 0x6B, +0x65, 0xF0, 0x7C, 0x9B, 0x00, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x85, 0xF0, 0x60, 0x9B, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0x70, 0x9B, -0x00, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, -0x74, 0x9B, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0x78, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF2, 0x7C, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, 0x7C, 0x9B, -0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x78, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF5, -0x94, 0x9C, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF2, 0x60, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, -0x40, 0xDB, 0x5C, 0xB9, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x7D, 0xB9, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x77, 0xF0, 0x24, 0x6C, 0xC0, 0xF1, -0x04, 0x4C, 0xAE, 0xB8, 0x00, 0x65, 0xA0, 0xDC, -0x9A, 0xB8, 0x00, 0x65, 0xBB, 0xB8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, -0x10, 0xF0, 0x24, 0x6A, 0xF0, 0xF0, 0x06, 0x4A, -0x40, 0xDB, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, -0x10, 0xF0, 0x24, 0x6A, 0x10, 0xF2, 0x15, 0x4A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF6, -0x7C, 0x9A, 0x63, 0x23, 0x01, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x47, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0xE6, 0xF6, 0x5C, 0x9A, 0x02, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xB3, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF6, 0x5C, 0x9A, -0x04, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x9A, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF6, -0x5C, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x96, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0xE6, 0xF6, 0x5C, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x48, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0xE6, 0xF6, 0x5C, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x49, 0xD7, -0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF6, 0x5C, 0x9A, -0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x4A, 0xD7, 0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF6, -0x7C, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x8A, 0xD8, 0x30, 0xF0, -0x20, 0x6B, 0xE6, 0xF6, 0x7C, 0x9B, 0x04, 0xF0, +0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, +0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF2, 0x7C, 0x9B, 0x80, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF2, 0x6C, 0x9B, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF4, 0x9C, 0x9C, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, +0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x5C, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x7D, 0xB9, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x77, 0xF0, +0x24, 0x6C, 0xC0, 0xF1, 0x04, 0x4C, 0xAE, 0xB8, +0x00, 0x65, 0xA0, 0xDC, 0x9A, 0xB8, 0x00, 0x65, +0xBB, 0xB8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x24, 0x6A, +0xB2, 0xF5, 0x0A, 0x4A, 0x40, 0xDB, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x24, 0x6A, +0xD2, 0xF6, 0x19, 0x4A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x68, 0xF2, 0x6C, 0x9A, 0x63, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x46, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF2, +0x4C, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0xCC, 0xDD, 0x30, 0xF0, 0x20, 0x6A, +0x68, 0xF2, 0x4C, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0xAC, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0x68, 0xF2, 0x4C, 0x9A, 0x08, 0x6B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0xA8, 0xDD, +0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF2, 0x4C, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x47, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF2, +0x4C, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x48, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x68, 0xF2, 0x4C, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x49, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x68, 0xF2, 0x6C, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x9C, 0xDD, 0x30, 0xF0, 0x20, 0x6B, 0x68, 0xF2, +0x6C, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x4A, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x68, 0xF2, 0x6C, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x4B, 0xD7, 0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF6, -0x7C, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x4C, 0xD7, 0x30, 0xF0, -0x20, 0x6B, 0xE6, 0xF6, 0x7C, 0x9B, 0x10, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x4D, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF7, -0x60, 0x9A, 0x3C, 0x23, 0x01, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x50, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF7, 0x40, 0x9A, 0x02, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x4E, 0xD7, -0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF7, 0x60, 0x9B, -0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0x2C, 0xD8, 0x30, 0xF0, -0x20, 0x6B, 0x06, 0xF7, 0x60, 0x9B, 0x08, 0xF0, +0x4B, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x68, 0xF2, +0x6C, 0x9B, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x4C, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0x68, 0xF2, 0x70, 0x9A, 0x3C, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x5D, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF2, +0x50, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x4D, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0x68, 0xF2, 0x70, 0x9B, 0x04, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x34, 0xDD, 0x30, 0xF0, 0x20, 0x6B, 0x68, 0xF2, +0x70, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x10, 0xDD, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF3, 0x44, 0x9A, 0x68, 0xF2, 0x70, 0x9B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x4F, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF3, 0x58, 0x9A, 0x68, 0xF2, 0x70, 0x9B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x0C, 0xDD, +0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF2, 0x74, 0x9A, +0x4C, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0x34, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0x68, 0xF2, 0x54, 0x9A, 0x02, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0x10, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF2, +0x54, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x02, 0x6C, 0x00, 0x18, 0x34, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0x68, 0xF2, 0x54, 0x9A, 0x08, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0x10, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF2, +0x54, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0x34, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0x68, 0xF2, 0x54, 0x9A, 0x20, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0x10, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x68, 0xF2, +0x54, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0x34, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0x68, 0xF2, 0x54, 0x9A, 0x80, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, +0x10, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x00, 0x6B, 0x77, 0xDA, 0x78, 0xDA, +0x79, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0xD2, 0xF6, +0x1A, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0x13, 0xF1, 0x0D, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF2, +0x7C, 0x9A, 0xC0, 0xF0, 0x13, 0x23, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, -0x00, 0x18, 0x0D, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x50, 0x9A, -0x06, 0xF7, 0x60, 0x9B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x50, 0xD7, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x44, 0x9A, -0x06, 0xF7, 0x60, 0x9B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x09, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x06, 0xF7, 0x64, 0x9A, 0x4C, 0x23, 0x01, 0x6A, +0x00, 0x18, 0xD7, 0xDD, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0xF2, 0x7C, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, -0x2C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF7, -0x44, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0x0D, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF7, 0x44, 0x9A, 0x04, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, -0x2C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF7, -0x44, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x02, 0x6C, 0x00, 0x18, 0x0D, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF7, 0x44, 0x9A, 0x10, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0x2C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF7, -0x44, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x03, 0x6C, 0x00, 0x18, 0x0D, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF7, 0x44, 0x9A, 0x40, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, -0x2C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0xF7, -0x44, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x04, 0x6C, 0x00, 0x18, 0x0D, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x00, 0x6B, -0x77, 0xDA, 0x78, 0xDA, 0x79, 0xDA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x24, 0x6A, 0x10, 0xF2, 0x16, 0x4A, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0x50, 0xF4, 0x09, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE6, 0xF6, 0x6C, 0x9A, 0xC0, 0xF0, -0x13, 0x23, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xBE, 0xD8, -0x30, 0xF0, 0x20, 0x6B, 0xE6, 0xF6, 0x6C, 0x9B, -0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0xBE, 0xD8, 0x30, 0xF0, -0x20, 0x6B, 0xE6, 0xF6, 0x6C, 0x9B, 0x08, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, -0x00, 0x18, 0xBE, 0xD8, 0x30, 0xF0, 0x20, 0x6B, -0xE6, 0xF6, 0x6C, 0x9B, 0x10, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0xBE, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x5C, 0x9A, 0xE6, 0xF6, -0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, -0x00, 0x18, 0xBE, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x44, 0x9A, -0xE6, 0xF6, 0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x05, 0x6C, 0x00, 0x18, 0xBE, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x48, 0x9A, 0xE6, 0xF6, 0x6C, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x06, 0x6C, 0x00, 0x18, 0xBE, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x4C, 0x9A, 0xE6, 0xF6, 0x6C, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x07, 0x6C, 0x00, 0x18, -0xBE, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0x54, 0x9A, 0xE6, 0xF6, -0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x08, 0x6C, -0x00, 0x18, 0xBE, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x44, 0x9A, -0xE6, 0xF6, 0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x09, 0x6C, 0x00, 0x18, 0xBE, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, -0x58, 0x9A, 0xE6, 0xF6, 0x6C, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x0A, 0x6C, 0x00, 0x18, 0xBE, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0x44, 0x9A, 0xE6, 0xF6, 0x6C, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x0B, 0x6C, 0x00, 0x18, -0xBE, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF4, 0x50, 0x9A, 0xE6, 0xF6, -0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x0C, 0x6C, -0x00, 0x18, 0xBE, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x44, 0x9A, -0xE6, 0xF6, 0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x0D, 0x6C, 0x00, 0x18, 0xBE, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0x48, 0x9A, 0xE6, 0xF6, 0x6C, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x0E, 0x6C, 0x00, 0x18, 0xBE, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x4C, 0x9A, 0xE6, 0xF6, 0x6C, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x0F, 0x6C, 0x00, 0x18, -0xBE, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x00, 0x6B, 0x73, 0xDA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x24, 0x6A, 0x50, 0xF4, 0x0A, 0x4A, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x24, 0x6A, -0x10, 0xF6, 0x19, 0x4A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF6, 0x60, 0x9A, 0x35, 0x23, -0x08, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, -0x00, 0x18, 0x93, 0xD7, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF6, 0x40, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x1C, 0xD9, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF6, 0x40, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x18, 0xD9, -0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF6, 0x40, 0x9A, -0x40, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x3A, 0xD7, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, -0x60, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0x14, 0xD9, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF6, 0x60, 0x9B, 0x00, 0xF2, -0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, -0x10, 0xD9, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF6, -0x64, 0x9A, 0x80, 0xF0, 0x07, 0x23, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x44, 0x9A, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xF7, 0xD7, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF7, 0x58, 0x9A, 0xC6, 0xF6, 0x64, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, -0xF7, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF2, 0x44, 0x9A, 0xC6, 0xF6, -0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, -0x00, 0x18, 0xF7, 0xD7, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0x50, 0x9A, -0xC6, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x03, 0x6C, 0x00, 0x18, 0xF7, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, -0x44, 0x9A, 0xC6, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xF7, 0xD7, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x44, 0x9A, 0xC6, 0xF6, 0x64, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, -0x5D, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x48, 0x9A, 0xC6, 0xF6, -0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, -0x00, 0x18, 0xD0, 0xD7, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x4C, 0x9A, -0xC6, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0xB3, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0x54, 0x9A, 0xC6, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x9C, 0xD7, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, 0x64, 0x9B, -0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x0C, 0xD9, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x5C, 0x9A, -0xC6, 0xF6, 0x64, 0x9B, 0x6C, 0xEA, 0x02, 0x22, -0x00, 0x18, 0x3C, 0xD7, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF6, 0x68, 0x9A, 0x32, 0x23, 0x01, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, -0x4F, 0xD9, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, -0x68, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x4F, 0xD9, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, 0x68, 0x9B, -0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x02, 0x6C, 0x00, 0x18, 0x4F, 0xD9, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF6, 0x68, 0x9B, 0x00, 0xF4, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, -0x00, 0x18, 0x4F, 0xD9, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF6, 0x68, 0x9B, 0x01, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, -0x4F, 0xD9, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF6, -0x6C, 0x9A, 0x6D, 0x23, 0x01, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xFF, 0xD8, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, 0x6C, 0x9B, -0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0xFF, 0xD8, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF6, 0x6C, 0x9B, 0x00, 0xF2, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, -0x00, 0x18, 0xFF, 0xD8, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF6, 0x6C, 0x9B, 0x00, 0xF4, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0xFF, 0xD8, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, -0x6C, 0x9B, 0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xFF, 0xD8, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, 0x6C, 0x9B, +0xD7, 0xDD, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0xF2, +0x7C, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0xD7, 0xDD, +0x30, 0xF0, 0x20, 0x6B, 0x48, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0xE5, 0xC1, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, -0x58, 0x9A, 0xC6, 0xF6, 0x6C, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0xE5, 0xC1, +0x03, 0x6C, 0x00, 0x18, 0xD7, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, +0x50, 0x9A, 0x48, 0xF2, 0x7C, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xD7, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x5C, 0x9A, 0xC6, 0xF6, 0x6C, 0x9B, -0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, -0xE5, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x58, 0x9A, 0xC6, 0xF6, -0x6C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, -0x00, 0x18, 0xE5, 0xC1, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF6, 0x4C, 0x9A, 0x00, 0x52, 0x03, 0x60, -0x04, 0x6C, 0x00, 0x18, 0xE5, 0xC1, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF6, 0x70, 0x9A, 0xC0, 0xF0, -0x18, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0x5D, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF6, 0x50, 0x9A, 0x02, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, -0xD0, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF6, -0x50, 0x9A, 0x04, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x01, 0x6C, 0x00, 0x18, 0xB3, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF6, 0x50, 0x9A, 0x08, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, -0x9C, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF6, -0x50, 0x9A, 0x10, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x02, 0x6C, 0x00, 0x18, 0x5D, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF6, 0x50, 0x9A, 0x20, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, -0xD0, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF6, -0x50, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, 0x03, 0x22, -0x02, 0x6C, 0x00, 0x18, 0xB3, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF6, 0x50, 0x9A, 0x80, 0x6B, -0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, -0x9C, 0xD7, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, -0x70, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, 0x6C, 0xEA, -0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x5D, 0xD7, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, 0x70, 0x9B, -0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x03, 0x6C, 0x00, 0x18, 0xD0, 0xD7, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF6, 0x70, 0x9B, 0x00, 0xF4, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, -0x00, 0x18, 0xB3, 0xD7, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF6, 0x70, 0x9B, 0x01, 0xF0, 0x00, 0x6A, +0xA4, 0xF1, 0x58, 0x9A, 0x48, 0xF2, 0x7C, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x05, 0x6C, 0x00, 0x18, +0xD7, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF1, 0x5C, 0x9A, 0x48, 0xF2, +0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x06, 0x6C, +0x00, 0x18, 0xD7, 0xDD, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, 0x40, 0x9A, +0x48, 0xF2, 0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x07, 0x6C, 0x00, 0x18, 0xD7, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, +0x5C, 0x9A, 0x48, 0xF2, 0x7C, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x08, 0x6C, 0x00, 0x18, 0xD7, 0xDD, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF1, 0x5C, 0x9A, 0x48, 0xF2, 0x7C, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x09, 0x6C, 0x00, 0x18, +0xD7, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF2, 0x48, 0x9A, 0x48, 0xF2, +0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x0A, 0x6C, +0x00, 0x18, 0xD7, 0xDD, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF1, 0x5C, 0x9A, +0x48, 0xF2, 0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x0B, 0x6C, 0x00, 0x18, 0xD7, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, +0x44, 0x9A, 0x48, 0xF2, 0x7C, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x0C, 0x6C, 0x00, 0x18, 0xD7, 0xDD, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF3, 0x58, 0x9A, 0x48, 0xF2, 0x7C, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x0D, 0x6C, 0x00, 0x18, +0xD7, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF3, 0x5C, 0x9A, 0x48, 0xF2, +0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x0E, 0x6C, +0x00, 0x18, 0xD7, 0xDD, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0x44, 0x9A, +0x48, 0xF2, 0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x0F, 0x6C, 0x00, 0x18, 0xD7, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, +0x73, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0x13, 0xF1, +0x0E, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x24, 0x6A, 0xD3, 0xF2, 0x1D, 0x4A, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF2, +0x70, 0x9A, 0x35, 0x23, 0x08, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x92, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF2, 0x50, 0x9A, +0x10, 0x6B, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x35, 0xDE, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF2, +0x50, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x02, 0x22, +0x00, 0x18, 0x31, 0xDE, 0x30, 0xF0, 0x20, 0x6A, +0x28, 0xF2, 0x50, 0x9A, 0x40, 0x6B, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x39, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x28, 0xF2, 0x70, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0x2D, 0xDE, 0x30, 0xF0, 0x20, 0x6B, 0x28, 0xF2, +0x70, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x00, 0x18, 0x29, 0xDE, 0x30, 0xF0, +0x20, 0x6A, 0x28, 0xF2, 0x74, 0x9A, 0x80, 0xF0, +0x07, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x5C, 0x9A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0xFA, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, 0x48, 0x9A, +0x28, 0xF2, 0x74, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0xFA, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF1, +0x5C, 0x9A, 0x28, 0xF2, 0x74, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0xFA, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF3, 0x44, 0x9A, 0x28, 0xF2, 0x74, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, -0x9C, 0xD7, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, -0x70, 0x9B, 0x02, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, -0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0x5D, 0xD7, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF6, 0x70, 0x9B, -0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, -0x04, 0x6C, 0x00, 0x18, 0xD0, 0xD7, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF6, 0x70, 0x9B, 0x08, 0xF0, -0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, -0x00, 0x18, 0xB3, 0xD7, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF6, 0x70, 0x9B, 0x10, 0xF0, 0x00, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, -0x9C, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x5C, 0x9A, 0xC6, 0xF6, -0x70, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, -0x00, 0x18, 0x93, 0xD7, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x44, 0x9A, -0xC6, 0xF6, 0x70, 0x9B, 0x6C, 0xEA, 0x03, 0x22, -0x02, 0x6C, 0x00, 0x18, 0x93, 0xD7, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x48, 0x9A, 0xC6, 0xF6, 0x70, 0x9B, 0x6C, 0xEA, -0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x93, 0xD7, +0xFA, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF3, 0x58, 0x9A, 0x28, 0xF2, +0x74, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, +0x00, 0x18, 0xFA, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x58, 0x9A, +0x28, 0xF2, 0x74, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x5C, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, +0x5C, 0x9A, 0x28, 0xF2, 0x74, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0xD3, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x4C, 0x9A, 0xC6, 0xF6, 0x70, 0x9B, +0xC4, 0xF1, 0x40, 0x9A, 0x28, 0xF2, 0x74, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0xB2, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF4, 0x5C, 0x9A, 0x28, 0xF2, +0x74, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x9B, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0x28, 0xF2, 0x74, 0x9B, 0x08, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x25, 0xDE, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF1, 0x50, 0x9A, 0x28, 0xF2, 0x74, 0x9B, +0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, 0x3B, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF2, 0x78, 0x9A, +0x32, 0x23, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x00, 0x6C, 0x00, 0x18, 0x6C, 0xDE, 0x30, 0xF0, +0x20, 0x6B, 0x28, 0xF2, 0x78, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0x6C, 0xDE, 0x30, 0xF0, 0x20, 0x6B, +0x28, 0xF2, 0x78, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0x6C, 0xDE, 0x30, 0xF0, 0x20, 0x6B, 0x28, 0xF2, +0x78, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0x6C, 0xDE, +0x30, 0xF0, 0x20, 0x6B, 0x28, 0xF2, 0x78, 0x9B, +0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0x6C, 0xDE, 0x30, 0xF0, +0x20, 0x6A, 0x28, 0xF2, 0x7C, 0x9A, 0x6D, 0x23, +0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x18, 0xDE, 0x30, 0xF0, 0x20, 0x6B, +0x28, 0xF2, 0x7C, 0x9B, 0xFF, 0x6A, 0x01, 0x4A, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0x18, 0xDE, 0x30, 0xF0, 0x20, 0x6B, 0x28, 0xF2, +0x7C, 0x9B, 0x00, 0xF2, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, 0x18, 0xDE, +0x30, 0xF0, 0x20, 0x6B, 0x28, 0xF2, 0x7C, 0x9B, +0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0x18, 0xDE, 0x30, 0xF0, +0x20, 0x6B, 0x28, 0xF2, 0x7C, 0x9B, 0x01, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, +0x00, 0x18, 0x18, 0xDE, 0x30, 0xF0, 0x20, 0x6B, +0x28, 0xF2, 0x7C, 0x9B, 0x10, 0xF0, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0xF6, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF3, 0x4C, 0x9A, 0x28, 0xF2, +0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, +0x00, 0x18, 0xF6, 0xC1, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, 0x50, 0x9A, +0x28, 0xF2, 0x7C, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x02, 0x6C, 0x00, 0x18, 0xF6, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, +0x4C, 0x9A, 0x28, 0xF2, 0x7C, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0xF6, 0xC1, +0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF2, 0x5C, 0x9A, +0x00, 0x52, 0x03, 0x60, 0x04, 0x6C, 0x00, 0x18, +0xF6, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF2, +0x60, 0x9A, 0xC0, 0xF0, 0x18, 0x23, 0x01, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0x5C, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF2, +0x40, 0x9A, 0x02, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0xD3, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0x48, 0xF2, 0x40, 0x9A, 0x04, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, +0xB2, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF2, +0x40, 0x9A, 0x08, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x00, 0x18, 0x9B, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0x48, 0xF2, 0x40, 0x9A, 0x10, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0x5C, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF2, +0x40, 0x9A, 0x20, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x02, 0x6C, 0x00, 0x18, 0xD3, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0x48, 0xF2, 0x40, 0x9A, 0x40, 0x6B, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0xB2, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x48, 0xF2, +0x40, 0x9A, 0x80, 0x6B, 0x6C, 0xEA, 0x03, 0x22, +0x02, 0x6C, 0x00, 0x18, 0x9B, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0xF2, 0x60, 0x9B, 0xFF, 0x6A, +0x01, 0x4A, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, +0x00, 0x18, 0x5C, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0xF2, 0x60, 0x9B, 0x00, 0xF2, 0x00, 0x6A, +0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, +0xD3, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0xF2, +0x60, 0x9B, 0x00, 0xF4, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x03, 0x6C, 0x00, 0x18, 0xB2, 0xDC, +0x30, 0xF0, 0x20, 0x6B, 0x48, 0xF2, 0x60, 0x9B, +0x01, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x03, 0x6C, 0x00, 0x18, 0x9B, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0xF2, 0x60, 0x9B, 0x02, 0xF0, +0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, +0x00, 0x18, 0x5C, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0xF2, 0x60, 0x9B, 0x04, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, -0x93, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x00, 0x6B, 0x68, 0xDA, 0x69, 0xDA, -0x6A, 0xDA, 0x6B, 0xDA, 0x6C, 0xDA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x24, 0x6A, 0x10, 0xF6, 0x1A, 0x4A, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0B, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0xB8, 0x9B, -0x30, 0xF0, 0x20, 0x6E, 0x64, 0xF1, 0xDC, 0x9E, -0x60, 0x9D, 0xCC, 0xEB, 0x0C, 0x10, 0x01, 0x72, -0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, -0xB8, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0x43, 0xF4, -0xD0, 0x9E, 0x60, 0x9D, 0xCD, 0xEB, 0x60, 0xDD, -0x05, 0x5C, 0x60, 0xF1, 0x1A, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x88, 0x34, 0xE3, 0xF0, 0x08, 0x4B, -0x8D, 0xE3, 0x60, 0x9B, 0x00, 0xEB, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, -0x7F, 0x6A, 0x80, 0xA3, 0x12, 0x10, 0x01, 0x72, -0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, -0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x40, 0xA3, 0x80, 0x4D, 0xC0, 0x4D, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0x02, 0x72, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF1, 0x78, 0x9A, 0x5B, 0x10, 0x03, 0x72, -0x40, 0xF1, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF1, 0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, -0x40, 0xA3, 0x8C, 0xEA, 0xE9, 0x17, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x60, 0x9A, -0xFB, 0x6A, 0x80, 0xA3, 0xE2, 0x17, 0x01, 0x72, -0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, -0x98, 0x9A, 0xFF, 0x6A, 0x40, 0x6D, 0x60, 0xA4, +0xD3, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0xF2, +0x60, 0x9B, 0x08, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, +0x03, 0x22, 0x04, 0x6C, 0x00, 0x18, 0xB2, 0xDC, +0x30, 0xF0, 0x20, 0x6B, 0x48, 0xF2, 0x60, 0x9B, +0x10, 0xF0, 0x00, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0x9B, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, +0x50, 0x9A, 0x48, 0xF2, 0x60, 0x9B, 0x6C, 0xEA, +0x03, 0x22, 0x01, 0x6C, 0x00, 0x18, 0x92, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF1, 0x58, 0x9A, 0x48, 0xF2, 0x60, 0x9B, +0x6C, 0xEA, 0x03, 0x22, 0x02, 0x6C, 0x00, 0x18, +0x92, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF1, 0x5C, 0x9A, 0x48, 0xF2, +0x60, 0x9B, 0x6C, 0xEA, 0x03, 0x22, 0x03, 0x6C, +0x00, 0x18, 0x92, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, 0x40, 0x9A, +0x48, 0xF2, 0x60, 0x9B, 0x6C, 0xEA, 0x03, 0x22, +0x04, 0x6C, 0x00, 0x18, 0x92, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, +0x68, 0xDA, 0x69, 0xDA, 0x6A, 0xDA, 0x6B, 0xDA, +0x6C, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0xD3, 0xF2, +0x1E, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, +0xAC, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6B, +0x85, 0xF0, 0xA4, 0x9B, 0x30, 0xF0, 0x20, 0x6E, +0x85, 0xF0, 0xC8, 0x9E, 0x60, 0x9D, 0xCC, 0xEB, +0x0C, 0x10, 0x01, 0x72, 0x0B, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x85, 0xF0, 0xA4, 0x9B, 0x30, 0xF0, +0x20, 0x6E, 0x64, 0xF3, 0xC4, 0x9E, 0x60, 0x9D, +0xCD, 0xEB, 0x60, 0xDD, 0x05, 0x5C, 0x60, 0xF1, +0x1A, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x88, 0x34, +0x04, 0xF0, 0x1C, 0x4B, 0x8D, 0xE3, 0x60, 0x9B, +0x00, 0xEB, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF0, 0x64, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, +0x12, 0x10, 0x01, 0x72, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x85, 0xF0, 0x64, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x40, 0xA3, 0x80, 0x4D, +0xC0, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0x02, 0x72, 0x05, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, 0x64, 0x9A, +0x5B, 0x10, 0x03, 0x72, 0x40, 0xF1, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, 0x64, 0x9A, +0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xE9, 0x17, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF0, 0x6C, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, +0xE2, 0x17, 0x01, 0x72, 0x19, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x85, 0xF0, 0x84, 0x9A, 0xFF, 0x6A, +0x40, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, +0x85, 0xF0, 0x8C, 0x9B, 0x01, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, 0x80, 0x9B, -0x01, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, -0x4C, 0xEB, 0x60, 0xC4, 0x60, 0xA4, 0x04, 0x6D, -0x4C, 0xEB, 0x48, 0x10, 0x02, 0x72, 0x0F, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, -0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x60, 0x9A, -0xFE, 0x6A, 0x80, 0xA3, 0xB6, 0x17, 0x03, 0x72, -0x00, 0xF1, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF1, 0x98, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, +0x60, 0xA4, 0x04, 0x6D, 0x4C, 0xEB, 0x48, 0x10, +0x02, 0x72, 0x0F, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF0, 0x64, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF0, 0x6C, 0x9A, 0xFE, 0x6A, 0x80, 0xA3, +0xB6, 0x17, 0x03, 0x72, 0x00, 0xF1, 0x0B, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, 0x84, 0x9A, +0xFF, 0x6B, 0x40, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x85, 0xF0, 0x8C, 0x9A, 0x01, 0x6D, +0x40, 0xA4, 0x6C, 0xEA, 0x4B, 0x10, 0x07, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, 0x6C, 0x9A, +0x80, 0xA3, 0xBF, 0x6A, 0x98, 0x17, 0x01, 0x72, +0x1B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, +0x84, 0x9A, 0xFF, 0x6A, 0x40, 0x6D, 0x60, 0xA4, +0x10, 0x6E, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, +0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x85, 0xF0, +0x8C, 0x9B, 0x60, 0xA4, 0x4C, 0xEB, 0xCD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x60, 0xA4, 0x4C, 0xEB, +0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, +0x02, 0x72, 0x0F, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF0, 0x64, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF0, 0x6C, 0x9A, 0xEF, 0x6A, 0x80, 0xA3, +0x6A, 0x17, 0x03, 0x72, 0xA0, 0xF0, 0x1F, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, 0x84, 0x9A, +0xFF, 0x6B, 0x40, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x85, 0xF0, 0x8C, 0x9A, 0x10, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, -0x80, 0x9A, 0x01, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0x4B, 0x10, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF1, 0x60, 0x9A, 0x80, 0xA3, 0xBF, 0x6A, -0x98, 0x17, 0x01, 0x72, 0x1B, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF1, 0x98, 0x9A, 0xFF, 0x6A, -0x40, 0x6D, 0x60, 0xA4, 0x10, 0x6E, 0x4C, 0xEB, -0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xF1, 0x80, 0x9B, 0x60, 0xA4, -0x4C, 0xEB, 0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, -0x60, 0xC4, 0x20, 0xE8, 0x02, 0x72, 0x0F, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, +0x40, 0xC4, 0x20, 0xE8, 0x08, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x85, 0xF0, 0x6C, 0x9A, 0xFF, 0xF3, +0x1F, 0x6A, 0x80, 0xAB, 0x83, 0x10, 0x01, 0x72, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, +0x64, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, 0x6C, 0x9A, +0xFF, 0xF7, 0x1F, 0x6C, 0x7F, 0x4D, 0x40, 0xAB, +0x41, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xCB, 0x40, 0xAB, 0x00, 0xF3, 0x00, 0x4D, +0x8C, 0xEA, 0x51, 0x10, 0x02, 0x72, 0x10, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, 0x64, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x60, 0x9A, -0xEF, 0x6A, 0x80, 0xA3, 0x6A, 0x17, 0x03, 0x72, -0xA0, 0xF0, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF1, 0x98, 0x9A, 0xFF, 0x6B, 0x40, 0x6D, -0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, -0x80, 0x9A, 0x10, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, -0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, -0x60, 0x9A, 0xFF, 0xF3, 0x1F, 0x6A, 0x80, 0xAB, -0x83, 0x10, 0x01, 0x72, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, 0xFF, 0x6C, +0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, 0x6C, 0x9A, +0xFF, 0xF6, 0x1F, 0x6A, 0x80, 0xAB, 0x52, 0x10, +0x03, 0x72, 0x6D, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x85, 0xF0, 0x64, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, +0x6C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x7F, 0x4D, +0x40, 0xAB, 0x41, 0x4D, 0x8C, 0xEA, 0x27, 0x10, +0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, +0x6C, 0x9A, 0xF7, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, +0x31, 0x10, 0x01, 0x72, 0x1E, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x85, 0xF0, 0x64, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF1, 0x60, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, -0x7F, 0x4D, 0x40, 0xAB, 0x41, 0x4D, 0x8C, 0xEA, +0x85, 0xF0, 0x6C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0xC1, 0xF7, 0x00, 0x4D, 0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x40, 0xAB, -0x00, 0xF3, 0x00, 0x4D, 0x8C, 0xEA, 0x51, 0x10, -0x02, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF1, 0x78, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, +0x06, 0xF0, 0x00, 0x4D, 0x8C, 0xEA, 0xAD, 0xEA, +0x11, 0x10, 0x02, 0x72, 0x12, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x85, 0xF0, 0x64, 0x9A, 0xBF, 0x6A, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x85, 0xF0, 0x6C, 0x9A, 0xFD, 0xF7, +0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x40, 0xCB, +0x20, 0xE8, 0x03, 0x72, 0x18, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x85, 0xF0, 0x64, 0x9A, 0xFF, 0x6C, +0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF1, 0x60, 0x9A, 0xFF, 0xF6, 0x1F, 0x6A, -0x80, 0xAB, 0x52, 0x10, 0x03, 0x72, 0x6D, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, -0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF1, 0x60, 0x9A, 0xFF, 0xF7, -0x1F, 0x6C, 0x7F, 0x4D, 0x40, 0xAB, 0x41, 0x4D, -0x8C, 0xEA, 0x27, 0x10, 0x08, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF1, 0x60, 0x9A, 0xF7, 0xF7, -0x1F, 0x6A, 0x80, 0xAB, 0x31, 0x10, 0x01, 0x72, -0x1E, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, -0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x60, 0x9A, -0xFF, 0xF7, 0x1F, 0x6C, 0xC1, 0xF7, 0x00, 0x4D, -0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xCB, 0x40, 0xAB, 0x06, 0xF0, 0x00, 0x4D, -0x8C, 0xEA, 0xAD, 0xEA, 0x11, 0x10, 0x02, 0x72, -0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, -0x78, 0x9A, 0xBF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, -0x60, 0x9A, 0xFD, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, -0x8C, 0xEA, 0x40, 0xCB, 0x20, 0xE8, 0x03, 0x72, -0x18, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, -0x78, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x60, 0x9A, -0xFF, 0xF7, 0x1F, 0x6C, 0xC1, 0xF7, 0x00, 0x4D, -0x40, 0xAB, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xCB, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x78, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF4, 0x9C, 0x9C, -0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xEA, 0xF2, 0x4B, 0xA2, 0x0D, 0x22, -0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x48, 0x9A, 0x00, 0xF4, 0x1D, 0x6C, -0x10, 0x6D, 0x00, 0x6E, 0xE0, 0xF1, 0x14, 0x6F, -0x0C, 0x10, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x00, 0xF4, -0x1D, 0x6C, 0x10, 0x6D, 0x00, 0x6E, 0x82, 0xF3, -0x08, 0x6F, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF3, 0x78, 0x9B, 0xFF, 0x6A, 0x4C, 0xED, -0x6D, 0xE4, 0xC0, 0xA3, 0x3F, 0x6C, 0xCC, 0xEC, -0x80, 0xC3, 0x07, 0x2D, 0x80, 0xA3, 0x40, 0x6D, -0x4C, 0xEC, 0xAD, 0xEC, 0x4C, 0xEC, 0x80, 0xC3, -0x20, 0xE8, 0x01, 0x75, 0x07, 0x61, 0x80, 0xA3, -0x80, 0x6D, 0xAB, 0xED, 0x4C, 0xEC, 0xAD, 0xEC, -0x4C, 0xEC, 0x80, 0xC3, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, 0x6C, 0x9B, -0xFF, 0x6A, 0xAC, 0xEA, 0x6D, 0xE4, 0x80, 0x9B, -0x80, 0xF4, 0x40, 0x32, 0x8D, 0xEA, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x6C, 0x9A, -0x30, 0xF0, 0x20, 0x6E, 0x84, 0xF1, 0xC4, 0x9E, -0x6D, 0xE4, 0x40, 0x9B, 0x30, 0xF0, 0x20, 0x68, -0x84, 0xF1, 0x0C, 0x98, 0xCC, 0xEA, 0x30, 0xF0, -0x20, 0x6E, 0x84, 0xF1, 0xC8, 0x9E, 0xCD, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0xF0, 0x9A, 0x83, 0xF7, 0x00, 0x6A, 0x4B, 0xEA, -0xFD, 0xE4, 0x60, 0x9F, 0x7F, 0x6E, 0x4C, 0xEB, -0x43, 0xA5, 0xCC, 0xEA, 0x0D, 0xEA, 0x6D, 0xEA, -0x40, 0xDF, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, -0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6F, 0x83, 0xF2, -0xEC, 0x9F, 0x6D, 0xE4, 0x40, 0x9B, 0xED, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x6C, 0x9A, 0xFF, 0x6F, 0x01, 0x4F, 0x6D, 0xE4, -0x40, 0x9B, 0xED, 0xEA, 0x3F, 0xF6, 0x1F, 0x4F, -0xEC, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF3, 0x50, 0x9A, 0x49, 0xE4, 0x60, 0x9A, -0x40, 0xA5, 0xCC, 0xEA, 0x4D, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF1, 0x50, 0x9A, 0x49, 0xE4, -0xC0, 0xA2, 0x01, 0x6A, 0xCC, 0xEA, 0x05, 0x22, -0x03, 0xF7, 0x01, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x07, 0x10, 0x1F, 0xF7, 0x01, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x61, 0xA5, 0x60, 0x33, 0x6D, 0xEA, -0xC2, 0xA5, 0xFF, 0x76, 0x0D, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xF1, 0x74, 0x9B, 0x4C, 0xEB, -0x80, 0xF4, 0xC0, 0x32, 0x30, 0xF0, 0x20, 0x6E, -0x83, 0xF2, 0xC4, 0x9E, 0xCD, 0xEA, 0x6D, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF3, 0x70, 0x9B, -0x6D, 0xE4, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF3, 0xC8, 0x9A, 0x02, 0xF0, 0x00, 0x6B, -0x6B, 0xEB, 0xD9, 0xE4, 0x40, 0x9E, 0x6C, 0xEA, -0x62, 0xAD, 0xE1, 0xF7, 0x1F, 0x6D, 0xAC, 0xEB, -0x6D, 0xEA, 0x40, 0xDE, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF3, 0x64, 0x9A, 0x0E, 0xF0, 0x01, 0x4D, -0x6D, 0xE4, 0x40, 0x9B, 0xAD, 0xEA, 0xC8, 0xF0, -0x00, 0x4D, 0xAC, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF3, 0x54, 0x9A, 0x51, 0xE4, -0x60, 0xA4, 0x7F, 0x6A, 0x6C, 0xEA, 0x40, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x58, 0x9A, -0x1C, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF1, 0x5C, 0x9A, 0x08, 0xF4, 0x13, 0x6B, -0x60, 0xCA, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x6A, 0x26, 0x67, 0x4C, 0xEF, 0x4C, 0xED, -0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0xFF, 0xF7, -0x1F, 0x68, 0xE3, 0xF2, 0x44, 0x9A, 0x0C, 0xEC, -0x05, 0xD4, 0x06, 0xD5, 0x07, 0xD7, 0x40, 0xAA, -0x00, 0x6C, 0xA4, 0x67, 0x62, 0x67, 0x0C, 0xEB, -0x04, 0xD3, 0x00, 0x18, 0x63, 0xCB, 0x03, 0x6C, -0x00, 0x18, 0xAC, 0xDF, 0x04, 0x95, 0x05, 0x92, -0xE1, 0xF7, 0x1F, 0x6B, 0x30, 0xF0, 0x20, 0x6C, -0xAC, 0xEB, 0xA3, 0xF2, 0x98, 0x9C, 0x6D, 0xE2, -0x0C, 0xEB, 0x60, 0xCC, 0x7C, 0x32, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF3, 0x64, 0x9B, 0x30, 0xF0, -0x20, 0x6C, 0xA3, 0xF3, 0x90, 0x9C, 0x6D, 0xE2, -0x60, 0xAB, 0x06, 0x95, 0x91, 0xE2, 0x0C, 0xEB, -0x80, 0x9C, 0x05, 0x25, 0x10, 0xF0, 0x00, 0x6D, -0xAB, 0xED, 0xAD, 0xEB, 0x0C, 0xEB, 0xD8, 0xF0, -0x00, 0x6D, 0x6C, 0xED, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF3, 0x64, 0x9B, 0x6D, 0xE2, 0xA0, 0xCB, -0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, 0x70, 0x9B, -0x6D, 0xE2, 0xA0, 0xA3, 0x01, 0x6B, 0xAC, 0xEB, -0x05, 0x23, 0x03, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0x07, 0x10, 0x07, 0x95, 0x1F, 0xF7, -0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xA0, 0x34, -0x8D, 0xEB, 0xFF, 0x71, 0x13, 0x60, 0x30, 0xF0, -0x20, 0x6C, 0x84, 0xF1, 0x94, 0x9C, 0x80, 0xF4, -0x20, 0x31, 0x6C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x64, 0x9B, 0x6D, 0xE9, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF3, 0x70, 0x9B, 0x8D, 0xE9, -0x6D, 0xE2, 0x20, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF3, 0x94, 0x9B, 0x7F, 0x6B, 0x91, 0xE2, -0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xF1, 0x78, 0x9B, 0x1C, 0x6C, -0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, -0x7C, 0x9B, 0x08, 0xF4, 0x13, 0x6C, 0x80, 0xCB, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF2, 0x90, 0x9B, -0xF7, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, -0x60, 0xC4, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, -0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF1, 0x40, 0x9A, 0x8C, 0x34, 0x30, 0xF0, -0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0x43, 0xF4, -0x7C, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0xF1, 0x40, 0x9A, 0x8C, 0x34, -0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0x63, 0xF4, 0x70, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF1, 0x40, 0x9A, 0x8C, 0x34, 0x30, 0xF0, -0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0x83, 0xF4, -0x78, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0xF1, 0x40, 0x9A, 0x8C, 0x34, -0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0x83, 0xF4, 0x7C, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0xA4, 0xF1, 0x40, 0x9A, 0x6C, 0xEC, -0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, -0x40, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0xA4, 0xF1, 0x40, 0x9A, 0x6C, 0xEC, -0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, -0x00, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x00, 0x68, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0x59, 0xE4, 0x90, 0x67, 0x01, 0x6D, -0x01, 0x48, 0x00, 0x18, 0x69, 0xE4, 0x0B, 0x70, -0xF5, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x0C, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x0A, 0x69, 0x12, 0xED, 0x4C, 0xED, 0x04, 0xD5, -0xFF, 0x68, 0x2C, 0xE8, 0x90, 0x67, 0x00, 0x18, -0x79, 0xE4, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, -0x20, 0x31, 0x90, 0x67, 0x01, 0x6D, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x18, 0x69, 0xE4, 0x41, 0x41, -0xEF, 0x2A, 0x01, 0x69, 0x2B, 0xE9, 0x09, 0x10, -0x04, 0x94, 0xFF, 0x49, 0x00, 0x6D, 0x00, 0xF6, -0x20, 0x31, 0x00, 0x18, 0x69, 0xE4, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x51, 0xF5, 0x60, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x0C, 0x68, 0x4C, 0xEC, 0x1B, 0xEC, -0x01, 0x28, 0xE5, 0xE8, 0x4C, 0xED, 0x10, 0xE9, -0x4C, 0xE9, 0x12, 0xE8, 0x4C, 0xE8, 0x0F, 0x25, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x59, 0xE4, -0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF0, 0x00, 0x4A, -0x41, 0xE0, 0x60, 0xA0, 0x01, 0x6A, 0x44, 0xE9, -0x6D, 0xEA, 0x40, 0xC0, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x66, 0xF0, 0x00, 0x4A, 0x49, 0xE0, -0x80, 0xA2, 0x01, 0x6B, 0x64, 0xE9, 0x6F, 0xEB, -0x8C, 0xEB, 0x60, 0xC2, 0x40, 0xA2, 0x04, 0x2A, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x59, 0xE4, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, -0x0C, 0xE9, 0xAC, 0xE8, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xAC, 0xE4, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0x93, 0xE4, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x0C, 0x6B, 0x7B, 0xED, 0x01, 0x2B, 0xE5, 0xE8, -0x05, 0x6E, 0xFF, 0x6A, 0x4C, 0xEC, 0x10, 0xEB, -0x12, 0xED, 0x4C, 0xED, 0xD8, 0xEB, 0x12, 0xEB, -0x4C, 0xEB, 0x1E, 0x73, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0xF1, 0x64, 0x9A, 0xAC, 0x35, -0x30, 0xF0, 0x20, 0x6E, 0x6D, 0xE5, 0x40, 0x9B, -0xA4, 0xF1, 0xC8, 0x9E, 0xCC, 0xEA, 0x80, 0xF7, -0x80, 0x36, 0xCD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0xF1, 0x40, 0x9A, 0x08, 0x6B, -0x6B, 0xEB, 0x55, 0xE5, 0x40, 0x9D, 0x8A, 0x34, -0x6C, 0xEA, 0x07, 0x6B, 0x6C, 0xEC, 0x1E, 0x10, -0x20, 0x5B, 0x0C, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF1, 0x44, 0x9A, 0x1F, 0x6E, 0xAC, 0x35, -0xE6, 0x67, 0x55, 0xE5, 0xE4, 0xEB, 0x40, 0x9D, -0xEF, 0xEF, 0x0D, 0x10, 0xE0, 0x4B, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, 0x40, 0x9A, -0xAC, 0x35, 0x1F, 0x6E, 0x55, 0xE5, 0xE0, 0x9D, -0x46, 0x67, 0x44, 0xEB, 0x4F, 0xEA, 0xCC, 0xEC, -0xEC, 0xEA, 0x84, 0xEB, 0x8D, 0xEA, 0x40, 0xDD, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, -0xCC, 0xE9, 0x05, 0x67, 0x01, 0x29, 0x00, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0xD2, 0xE4, 0xFF, 0x6C, -0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0xC7, 0xE4, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xAE, 0xEC, 0x01, 0x6A, -0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x06, 0xD2, 0x05, 0xD4, 0x00, 0x69, 0x1F, 0x68, -0x22, 0x10, 0x05, 0x92, 0x40, 0xA2, 0x07, 0xD2, -0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, 0x07, 0x94, -0x12, 0x35, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x05, 0xE5, 0x06, 0x22, 0xFF, 0x6A, -0x04, 0x30, 0x4C, 0xE8, 0x05, 0x6A, 0x4E, 0xE8, -0x01, 0x10, 0x04, 0x30, 0xFF, 0x6A, 0x4C, 0xE8, -0x04, 0x92, 0x01, 0x4A, 0x08, 0x72, 0x04, 0xD2, -0xE9, 0x61, 0xFF, 0x6A, 0x01, 0x49, 0x4C, 0xE9, -0x05, 0x92, 0x01, 0x4A, 0x05, 0xD2, 0x06, 0x92, -0x43, 0xE9, 0xDB, 0x61, 0x1F, 0x6A, 0x4E, 0xE8, -0x0C, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x60, 0xA4, 0x01, 0x6A, 0x04, 0x67, -0x6C, 0xEA, 0x44, 0x22, 0x66, 0x32, 0x30, 0xF0, -0x20, 0x6B, 0xA4, 0xF1, 0x6C, 0x9B, 0x54, 0x32, -0x69, 0xE2, 0x61, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x70, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x62, 0xA4, -0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0xA4, 0xF1, 0x74, 0x9B, 0x46, 0x32, 0x54, 0x32, -0x69, 0xE2, 0x63, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x78, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x64, 0xA4, -0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0xA4, 0xF1, 0x7C, 0x9B, 0x46, 0x32, 0x54, 0x32, -0x69, 0xE2, 0x65, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, 0x60, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x66, 0xA4, -0x10, 0xF0, 0x00, 0x6C, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF1, 0x64, 0x9A, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x81, 0x40, 0x06, 0x6D, -0x00, 0x18, 0x07, 0xE5, 0x60, 0xA0, 0x01, 0x6E, -0x82, 0x67, 0x66, 0x35, 0x6C, 0xEE, 0x00, 0x18, -0xF9, 0xE4, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x89, 0xE4, 0x30, 0xF0, 0x20, 0x6A, -0xC4, 0xF1, 0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, -0x80, 0xAB, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x23, 0xF4, 0x9C, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x15, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x85, 0xF0, 0x6C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0xC1, 0xF7, 0x00, 0x4D, 0x40, 0xAB, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x5C, 0x9A, 0x00, 0x6B, 0x00, 0x6E, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, -0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, -0x40, 0x9A, 0x04, 0xF7, 0x10, 0x6F, 0x80, 0x6D, +0x84, 0xF2, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x64, 0xF3, 0x90, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF6, +0x57, 0xA2, 0x0D, 0x22, 0x06, 0x02, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, +0x00, 0xF4, 0x1D, 0x6C, 0x10, 0x6D, 0x00, 0x6E, +0xE0, 0xF1, 0x14, 0x6F, 0x0C, 0x10, 0x06, 0x02, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x48, 0x9A, 0x00, 0xF4, 0x1D, 0x6C, 0x10, 0x6D, +0x00, 0x6E, 0x82, 0xF3, 0x08, 0x6F, 0x40, 0xEA, +0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, 0x7C, 0x9B, +0xFF, 0x6A, 0x4C, 0xED, 0x6D, 0xE4, 0xC0, 0xA3, +0x3F, 0x6C, 0xCC, 0xEC, 0x80, 0xC3, 0x07, 0x2D, +0x80, 0xA3, 0x40, 0x6D, 0x4C, 0xEC, 0xAD, 0xEC, +0x4C, 0xEC, 0x80, 0xC3, 0x20, 0xE8, 0x01, 0x75, +0x07, 0x61, 0x80, 0xA3, 0x80, 0x6D, 0xAB, 0xED, +0x4C, 0xEC, 0xAD, 0xEC, 0x4C, 0xEC, 0x80, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF3, 0x60, 0x9B, 0xFF, 0x6A, 0xAC, 0xEA, +0x6D, 0xE4, 0x80, 0x9B, 0x80, 0xF4, 0x40, 0x32, +0x8D, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6E, +0x85, 0xF0, 0xD0, 0x9E, 0x6D, 0xE4, 0x40, 0x9B, +0x30, 0xF0, 0x20, 0x68, 0x85, 0xF0, 0x18, 0x98, +0xCC, 0xEA, 0x30, 0xF0, 0x20, 0x6E, 0x85, 0xF0, +0xD4, 0x9E, 0xCD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF2, 0xF4, 0x9A, 0x83, 0xF7, +0x00, 0x6A, 0x4B, 0xEA, 0xFD, 0xE4, 0x60, 0x9F, +0x7F, 0x6E, 0x4C, 0xEB, 0x43, 0xA5, 0xCC, 0xEA, +0x0D, 0xEA, 0x6D, 0xEA, 0x40, 0xDF, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF1, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6F, 0xC4, 0xF1, 0xE0, 0x9F, 0x6D, 0xE4, +0x40, 0x9B, 0xED, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF3, 0x70, 0x9A, 0xFF, 0x6F, +0x01, 0x4F, 0x6D, 0xE4, 0x40, 0x9B, 0xED, 0xEA, +0x3F, 0xF6, 0x1F, 0x4F, 0xEC, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x5C, 0x9A, +0x49, 0xE4, 0x60, 0x9A, 0x40, 0xA5, 0xCC, 0xEA, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x85, 0xF0, +0x5C, 0x9A, 0x49, 0xE4, 0xC0, 0xA2, 0x01, 0x6A, +0xCC, 0xEA, 0x05, 0x22, 0x03, 0xF7, 0x01, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x07, 0x10, 0x1F, 0xF7, +0x01, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x61, 0xA5, +0x60, 0x33, 0x6D, 0xEA, 0xC2, 0xA5, 0xFF, 0x76, +0x0D, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF0, +0x60, 0x9B, 0x4C, 0xEB, 0x80, 0xF4, 0xC0, 0x32, +0x30, 0xF0, 0x20, 0x6E, 0xA4, 0xF1, 0xD8, 0x9E, +0xCD, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF1, 0x7C, 0x9B, 0x6D, 0xE4, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF2, 0xD8, 0x9A, +0x02, 0xF0, 0x00, 0x6B, 0x6B, 0xEB, 0xD9, 0xE4, +0x40, 0x9E, 0x6C, 0xEA, 0x62, 0xAD, 0xE1, 0xF7, +0x1F, 0x6D, 0xAC, 0xEB, 0x6D, 0xEA, 0x40, 0xDE, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x60, 0x9A, +0x0E, 0xF0, 0x01, 0x4D, 0x6D, 0xE4, 0x40, 0x9B, +0xAD, 0xEA, 0xC8, 0xF0, 0x00, 0x4D, 0xAC, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF3, +0x48, 0x9A, 0x51, 0xE4, 0x60, 0xA4, 0x7F, 0x6A, +0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF0, 0x44, 0x9A, 0x1C, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF0, 0x48, 0x9A, +0x08, 0xF4, 0x13, 0x6B, 0x60, 0xCA, 0x01, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x26, 0x67, +0x4C, 0xEF, 0x4C, 0xED, 0x4C, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0xFF, 0xF7, 0x1F, 0x68, 0xA4, 0xF3, +0x54, 0x9A, 0x0C, 0xEC, 0x05, 0xD4, 0x06, 0xD5, +0x07, 0xD7, 0x40, 0xAA, 0x00, 0x6C, 0xA4, 0x67, +0x62, 0x67, 0x0C, 0xEB, 0x04, 0xD3, 0x00, 0x18, +0x6C, 0xCC, 0x03, 0x6C, 0x00, 0x18, 0xDD, 0xE4, +0x04, 0x95, 0x05, 0x92, 0xE1, 0xF7, 0x1F, 0x6B, +0x30, 0xF0, 0x20, 0x6C, 0xAC, 0xEB, 0xE4, 0xF1, +0x8C, 0x9C, 0x6D, 0xE2, 0x0C, 0xEB, 0x60, 0xCC, +0x7C, 0x32, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, +0x60, 0x9B, 0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF1, +0x9C, 0x9C, 0x6D, 0xE2, 0x60, 0xAB, 0x06, 0x95, +0x91, 0xE2, 0x0C, 0xEB, 0x80, 0x9C, 0x05, 0x25, +0x10, 0xF0, 0x00, 0x6D, 0xAB, 0xED, 0xAD, 0xEB, +0x0C, 0xEB, 0xD8, 0xF0, 0x00, 0x6D, 0x6C, 0xED, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, 0x60, 0x9B, +0x6D, 0xE2, 0xA0, 0xCB, 0x30, 0xF0, 0x20, 0x6B, +0x85, 0xF0, 0x7C, 0x9B, 0x6D, 0xE2, 0xA0, 0xA3, +0x01, 0x6B, 0xAC, 0xEB, 0x05, 0x23, 0x03, 0xF7, +0x01, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x07, 0x10, +0x07, 0x95, 0x1F, 0xF7, 0x01, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xA0, 0x34, 0x8D, 0xEB, 0xFF, 0x71, +0x13, 0x60, 0x30, 0xF0, 0x20, 0x6C, 0xA5, 0xF0, +0x80, 0x9C, 0x80, 0xF4, 0x20, 0x31, 0x6C, 0xEC, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x78, 0x9B, +0x6D, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, +0x7C, 0x9B, 0x8D, 0xE9, 0x6D, 0xE2, 0x20, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF3, 0x88, 0x9B, +0x7F, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, +0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF0, +0x64, 0x9B, 0x1C, 0x6C, 0x80, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF0, 0x68, 0x9B, 0x08, 0xF4, +0x13, 0x6C, 0x80, 0xCB, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF1, 0x84, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, +0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF0, 0x4C, 0x9A, +0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, +0x40, 0x9C, 0x64, 0xF3, 0x70, 0x9B, 0x6D, 0xEA, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF0, +0x4C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, +0x51, 0xE4, 0x40, 0x9C, 0x84, 0xF3, 0x64, 0x9B, +0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF0, 0x4C, 0x9A, +0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, +0x40, 0x9C, 0xA4, 0xF3, 0x6C, 0x9B, 0x6D, 0xEA, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF0, +0x4C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, +0x51, 0xE4, 0x40, 0x9C, 0xA4, 0xF3, 0x70, 0x9B, +0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6B, 0xA5, 0xF0, +0x4C, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x01, 0x6C, 0x40, 0xF7, 0x42, 0x32, +0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6B, 0xA5, 0xF0, +0x4C, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x01, 0x6C, 0x00, 0xF7, 0x42, 0x32, +0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x8A, 0xE9, +0x90, 0x67, 0x01, 0x6D, 0x01, 0x48, 0x00, 0x18, +0x9A, 0xE9, 0x0B, 0x70, 0xF5, 0x61, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0x6B, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x0A, 0x69, 0x12, 0xED, +0x4C, 0xED, 0x04, 0xD5, 0xFF, 0x68, 0x2C, 0xE8, +0x90, 0x67, 0x00, 0x18, 0xAA, 0xE9, 0x17, 0x2A, +0xFF, 0x49, 0x00, 0xF6, 0x20, 0x31, 0x90, 0x67, +0x01, 0x6D, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x18, +0x9A, 0xE9, 0x41, 0x41, 0xEF, 0x2A, 0x01, 0x69, +0x2B, 0xE9, 0x09, 0x10, 0x04, 0x94, 0xFF, 0x49, +0x00, 0x6D, 0x00, 0xF6, 0x20, 0x31, 0x00, 0x18, +0x9A, 0xE9, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x51, +0xF5, 0x60, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x0C, 0x68, +0x4C, 0xEC, 0x1B, 0xEC, 0x01, 0x28, 0xE5, 0xE8, +0x4C, 0xED, 0x10, 0xE9, 0x4C, 0xE9, 0x12, 0xE8, +0x4C, 0xE8, 0x0F, 0x25, 0x90, 0x67, 0x01, 0x6D, +0x00, 0x18, 0x8A, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0x46, 0xF7, 0x1C, 0x4A, 0x41, 0xE0, 0x60, 0xA0, +0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x40, 0xC0, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF7, +0x1C, 0x4A, 0x49, 0xE0, 0x80, 0xA2, 0x01, 0x6B, +0x64, 0xE9, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, +0x40, 0xA2, 0x04, 0x2A, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0x8A, 0xE9, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0xDD, 0xE9, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0xC4, 0xE9, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x0C, 0x6B, 0x7B, 0xED, +0x01, 0x2B, 0xE5, 0xE8, 0x05, 0x6E, 0xFF, 0x6A, +0x4C, 0xEC, 0x10, 0xEB, 0x12, 0xED, 0x4C, 0xED, +0xD8, 0xEB, 0x12, 0xEB, 0x4C, 0xEB, 0x1E, 0x73, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF0, +0x70, 0x9A, 0xAC, 0x35, 0x30, 0xF0, 0x20, 0x6E, +0x6D, 0xE5, 0x40, 0x9B, 0xA5, 0xF0, 0xD4, 0x9E, +0xCC, 0xEA, 0x80, 0xF7, 0x80, 0x36, 0xCD, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF0, +0x4C, 0x9A, 0x08, 0x6B, 0x6B, 0xEB, 0x55, 0xE5, +0x40, 0x9D, 0x8A, 0x34, 0x6C, 0xEA, 0x07, 0x6B, +0x6C, 0xEC, 0x1E, 0x10, 0x20, 0x5B, 0x0C, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF0, 0x50, 0x9A, +0x1F, 0x6E, 0xAC, 0x35, 0xE6, 0x67, 0x55, 0xE5, +0xE4, 0xEB, 0x40, 0x9D, 0xEF, 0xEF, 0x0D, 0x10, +0xE0, 0x4B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF0, 0x4C, 0x9A, 0xAC, 0x35, 0x1F, 0x6E, +0x55, 0xE5, 0xE0, 0x9D, 0x46, 0x67, 0x44, 0xEB, +0x4F, 0xEA, 0xCC, 0xEC, 0xEC, 0xEA, 0x84, 0xEB, +0x8D, 0xEA, 0x40, 0xDD, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xE9, 0x05, 0x67, +0x01, 0x29, 0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0x03, 0xEA, 0xFF, 0x6C, 0x0C, 0xEC, 0xB1, 0x67, +0x00, 0x18, 0xF8, 0xE9, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xAE, 0xEC, 0x01, 0x6A, 0x8C, 0xEA, 0x20, 0xE8, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0xAC, 0xEA, 0x06, 0xD2, 0x05, 0xD4, +0x00, 0x69, 0x1F, 0x68, 0x22, 0x10, 0x05, 0x92, +0x40, 0xA2, 0x07, 0xD2, 0x00, 0x6A, 0x04, 0xD2, +0x04, 0x92, 0x07, 0x94, 0x12, 0x35, 0x87, 0xEA, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x36, 0xEA, +0x06, 0x22, 0xFF, 0x6A, 0x04, 0x30, 0x4C, 0xE8, +0x05, 0x6A, 0x4E, 0xE8, 0x01, 0x10, 0x04, 0x30, +0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x92, 0x01, 0x4A, +0x08, 0x72, 0x04, 0xD2, 0xE9, 0x61, 0xFF, 0x6A, +0x01, 0x49, 0x4C, 0xE9, 0x05, 0x92, 0x01, 0x4A, +0x05, 0xD2, 0x06, 0x92, 0x43, 0xE9, 0xDB, 0x61, +0x1F, 0x6A, 0x4E, 0xE8, 0x0C, 0xEA, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x60, 0xA4, +0x01, 0x6A, 0x04, 0x67, 0x6C, 0xEA, 0x44, 0x22, +0x66, 0x32, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF0, +0x78, 0x9B, 0x54, 0x32, 0x69, 0xE2, 0x61, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF0, 0x7C, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x62, 0xA4, 0x60, 0xC2, 0x40, 0xA4, +0x30, 0xF0, 0x20, 0x6B, 0xC5, 0xF0, 0x60, 0x9B, +0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x63, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0xC5, 0xF0, 0x64, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x64, 0xA4, 0x60, 0xC2, 0x40, 0xA4, +0x30, 0xF0, 0x20, 0x6B, 0xC5, 0xF0, 0x68, 0x9B, +0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x65, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0xC5, 0xF0, 0x6C, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x66, 0xA4, 0x10, 0xF0, 0x00, 0x6C, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF0, +0x70, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x81, 0x40, 0x06, 0x6D, 0x00, 0x18, 0x38, 0xEA, +0x60, 0xA0, 0x01, 0x6E, 0x82, 0x67, 0x66, 0x35, +0x6C, 0xEE, 0x00, 0x18, 0x2A, 0xEA, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xBA, 0xE9, +0x30, 0xF0, 0x20, 0x6A, 0xC5, 0xF0, 0x74, 0x9A, +0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF3, 0x90, 0x9C, +0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0x8A, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF1, 0x50, 0x9A, 0x00, 0x6B, 0x00, 0x6E, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, +0x54, 0x9A, 0x04, 0xF7, 0x10, 0x6F, 0x80, 0x6D, 0x60, 0xDA, 0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x48, 0x9A, 0x80, 0xF1, 0x07, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0xC8, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF7, 0x88, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, 0x98, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x5C, 0x9A, 0x90, 0x34, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x54, 0x9A, 0x03, 0x6C, 0x01, 0x6D, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xFF, 0x68, -0x8C, 0xE8, 0x04, 0x6E, 0x04, 0x04, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0x93, 0x43, 0xF1, -0x40, 0x9A, 0x01, 0x6C, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x5C, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF1, 0x74, 0x9B, 0x0D, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x68, 0x8C, 0xEA, 0x06, 0xD2, 0xFF, 0x6B, -0x80, 0xF2, 0x4C, 0x98, 0x04, 0x01, 0xAC, 0xEB, -0x10, 0xD6, 0xA6, 0x67, 0x07, 0xD3, 0x04, 0x6E, -0x91, 0x67, 0x40, 0xEA, 0x06, 0x92, 0xFF, 0x6B, -0xB1, 0x67, 0x4C, 0x34, 0x02, 0x4C, 0x6C, 0xEC, -0x80, 0x18, 0x1C, 0x00, 0x10, 0x95, 0x80, 0xF2, -0x4C, 0x98, 0x04, 0x6E, 0x91, 0x67, 0x04, 0x4D, -0x40, 0xEA, 0x06, 0x92, 0xFF, 0x6B, 0xB1, 0x67, -0x4C, 0x32, 0x82, 0x67, 0x03, 0x4C, 0x6C, 0xEC, -0x08, 0xD2, 0x80, 0x18, 0x1C, 0x00, 0x10, 0x95, -0x80, 0xF2, 0x4C, 0x98, 0x04, 0x6E, 0x91, 0x67, -0x08, 0x4D, 0x40, 0xEA, 0x06, 0x92, 0xFF, 0x6B, -0xB1, 0x67, 0x4C, 0x34, 0x04, 0x4C, 0x6C, 0xEC, -0x80, 0x18, 0x1C, 0x00, 0x10, 0x95, 0x80, 0xF2, -0x4C, 0x98, 0x91, 0x67, 0x0C, 0x4D, 0x04, 0x6E, -0x40, 0xEA, 0x08, 0x94, 0xFF, 0x6A, 0xB1, 0x67, -0x05, 0x4C, 0x4C, 0xEC, 0x80, 0x18, 0x1C, 0x00, -0x07, 0x93, 0x48, 0x6A, 0x02, 0x73, 0x04, 0x60, -0x07, 0x92, 0x04, 0x72, 0x05, 0x61, 0x50, 0x6A, -0x06, 0x93, 0x6D, 0xEA, 0x7D, 0x67, 0x50, 0xC3, -0x80, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x51, 0xC3, -0x06, 0x92, 0x01, 0x68, 0x0B, 0xE8, 0x4C, 0x31, -0xFF, 0x6C, 0x12, 0xC3, 0x13, 0xC3, 0x2C, 0xEC, -0x04, 0x05, 0x80, 0x18, 0x1C, 0x00, 0x7D, 0x67, -0xFF, 0x6A, 0x81, 0x41, 0x10, 0xC3, 0x11, 0xC3, -0x12, 0xC3, 0x13, 0xC3, 0x4C, 0xEC, 0x04, 0x05, -0x80, 0x18, 0x1C, 0x00, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF2, 0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0xEC, 0xEA, -0x04, 0x72, 0x0F, 0x61, 0x40, 0xA4, 0x40, 0xC5, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, 0x64, 0x9B, +0xFF, 0x6A, 0x8C, 0xEA, 0x6D, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF0, 0x68, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x4C, 0x9A, +0x40, 0x9A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x4C, 0x9A, 0xFF, 0x68, 0x8C, 0xE8, 0x04, 0x6E, +0x04, 0x04, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0x93, 0x64, 0xF0, 0x54, 0x9A, 0x01, 0x6C, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, +0x68, 0x9B, 0x0D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0xEC, 0xEA, 0x04, 0x72, 0x06, 0x60, +0x07, 0x72, 0x04, 0x60, 0x14, 0x72, 0x02, 0x60, +0x17, 0x72, 0x0F, 0x61, 0x40, 0xA4, 0x40, 0xC5, 0x41, 0xA4, 0x41, 0xC5, 0x44, 0xA4, 0x42, 0xC5, 0x45, 0xA4, 0x43, 0xC5, 0x46, 0xA4, 0x44, 0xC5, 0x47, 0xA4, 0x45, 0xC5, 0x43, 0xA4, 0x40, 0xC6, @@ -61845,28 +63257,29 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x42, 0xC5, 0x45, 0xA4, 0x43, 0xC5, 0x46, 0xA4, 0x44, 0xC5, 0x47, 0xA4, 0x45, 0xC5, 0x43, 0xA4, 0x40, 0xC6, 0x20, 0xE8, 0xFF, 0x6A, 0xEC, 0xEA, -0x04, 0x6B, 0x4E, 0xEB, 0x06, 0x2B, 0x40, 0xA5, -0x40, 0xC4, 0x41, 0xA5, 0x62, 0xC4, 0x41, 0xC4, -0x0C, 0x10, 0x02, 0x72, 0x0A, 0x61, 0x41, 0xA5, -0x40, 0xC4, 0x61, 0xA5, 0x5F, 0x6A, 0x6C, 0xEA, -0x20, 0x6B, 0x6D, 0xEA, 0x41, 0xC4, 0x40, 0xA5, -0x42, 0xC4, 0x63, 0x44, 0xC0, 0xA3, 0x20, 0x6A, -0xCD, 0xEA, 0x40, 0xC3, 0x42, 0xA5, 0x44, 0xC4, -0x43, 0xA5, 0x45, 0xC4, 0x44, 0xA5, 0x46, 0xC4, -0x45, 0xA5, 0x47, 0xC4, 0x20, 0xE8, 0x00, 0x65, +0x04, 0x72, 0x06, 0x60, 0x07, 0x72, 0x04, 0x60, +0x14, 0x72, 0x02, 0x60, 0x17, 0x72, 0x06, 0x61, +0x40, 0xA5, 0x40, 0xC4, 0x41, 0xA5, 0x41, 0xC4, +0x00, 0x6A, 0x0B, 0x10, 0x02, 0x72, 0x0A, 0x61, +0x41, 0xA5, 0x40, 0xC4, 0x61, 0xA5, 0x5F, 0x6A, +0x6C, 0xEA, 0x20, 0x6B, 0x6D, 0xEA, 0x41, 0xC4, +0x40, 0xA5, 0x42, 0xC4, 0x63, 0x44, 0xC0, 0xA3, +0x20, 0x6A, 0xCD, 0xEA, 0x40, 0xC3, 0x42, 0xA5, +0x44, 0xC4, 0x43, 0xA5, 0x45, 0xC4, 0x44, 0xA5, +0x46, 0xC4, 0x45, 0xA5, 0x47, 0xC4, 0x20, 0xE8, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x05, 0x00, 0x24, 0x67, 0x09, 0xD5, 0x08, 0xD6, 0x90, 0x67, 0x00, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0x08, 0x97, 0x91, 0x67, 0xB0, 0x67, 0x04, 0x06, 0x80, 0x18, -0x6D, 0x00, 0x09, 0x92, 0x10, 0x2A, 0x60, 0xA0, +0x38, 0x00, 0x09, 0x92, 0x10, 0x2A, 0x60, 0xA0, 0xFF, 0x6C, 0x8E, 0xEB, 0x07, 0x2B, 0x01, 0x4A, 0x8C, 0xEA, 0x06, 0x72, 0x60, 0xC0, 0x01, 0x48, 0xF6, 0x61, 0x05, 0x10, 0x04, 0x03, 0x49, 0xE3, 0x64, 0xA2, 0x01, 0x4B, 0x64, 0xC2, 0x08, 0x97, 0x91, 0x67, 0x05, 0x05, 0x04, 0x06, 0x80, 0x18, -0x7F, 0x00, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x4D, 0x00, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x24, 0x67, 0xFF, 0x68, @@ -61888,10 +63301,10 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x05, 0x04, 0x08, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x99, 0x07, 0x04, 0x00, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0x0E, 0x94, 0x05, 0x05, 0x00, 0xF0, -0x11, 0x06, 0xF0, 0x67, 0x80, 0x18, 0x6D, 0x00, -0x30, 0xF0, 0x20, 0x6C, 0xCB, 0xF1, 0x1B, 0x4C, +0x11, 0x06, 0xF0, 0x67, 0x80, 0x18, 0x38, 0x00, +0x30, 0xF0, 0x20, 0x6C, 0xAC, 0xF5, 0x04, 0x4C, 0x07, 0x05, 0x04, 0x06, 0xF0, 0x67, 0x80, 0x18, -0x6D, 0x00, 0x00, 0x6B, 0x07, 0x6A, 0x9D, 0x67, +0x38, 0x00, 0x00, 0x6B, 0x07, 0x6A, 0x9D, 0x67, 0x75, 0xE4, 0x85, 0x67, 0x9B, 0xA4, 0x20, 0xF0, 0xA3, 0xA5, 0xAE, 0xEC, 0x0A, 0x2C, 0xFF, 0x4A, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, @@ -61906,8 +63319,8 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x08, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, 0x06, 0x04, 0x00, 0x6D, 0x08, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x20, 0x6D, 0x91, 0x67, 0xCB, 0xF1, -0x1B, 0x4D, 0x03, 0x6E, 0x40, 0xEA, 0x80, 0xF2, +0x30, 0xF0, 0x20, 0x6D, 0x91, 0x67, 0xAC, 0xF5, +0x04, 0x4D, 0x03, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, 0x0C, 0x95, 0x06, 0x04, 0x03, 0x6E, 0x40, 0xEA, 0x5D, 0x67, 0x72, 0xA2, 0x5A, 0xA2, 0x4E, 0xEB, 0x02, 0x6A, 0x0C, 0x2B, 0x9D, 0x67, @@ -61917,611 +63330,270 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x49, 0xE3, 0x60, 0xA2, 0x48, 0xA2, 0x4B, 0xE3, 0x01, 0x52, 0x58, 0x67, 0x01, 0x6B, 0x6E, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x34, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x00, 0x18, 0x96, 0xD3, 0x00, 0xF1, -0xA7, 0xA0, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, -0x6C, 0x9B, 0x04, 0xD2, 0xB5, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xBC, 0x35, -0x30, 0xF0, 0x20, 0x6C, 0x75, 0xE5, 0x7C, 0x6E, -0xEB, 0xF1, 0x18, 0x4C, 0x30, 0xF0, 0x20, 0x69, -0x40, 0xEA, 0x20, 0xF3, 0x54, 0x99, 0x00, 0x6D, -0x03, 0x6C, 0x40, 0xEA, 0x04, 0x92, 0x00, 0xF1, -0x88, 0xA0, 0xFF, 0xF7, 0x1F, 0x6B, 0x91, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x5C, 0x9A, -0x9C, 0x34, 0x8F, 0x34, 0x6C, 0xEC, 0x40, 0xEA, -0x20, 0xF3, 0x54, 0x99, 0x03, 0x6C, 0x01, 0x6D, -0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xF4, 0x63, 0x17, 0x62, -0x16, 0xD1, 0x15, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, -0x8C, 0xEA, 0x10, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x69, 0x80, 0xF2, 0x48, 0x9A, 0x2C, 0xED, -0x30, 0xF0, 0x20, 0x6C, 0x11, 0xD5, 0x06, 0xF6, -0x1C, 0x4C, 0x00, 0x6D, 0x80, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF7, 0x06, 0xA2, -0x00, 0x18, 0x96, 0xD3, 0x10, 0x93, 0x01, 0xE2, -0x1C, 0x30, 0x01, 0x73, 0x12, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF4, 0x4C, 0xA3, 0x0D, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x8C, 0x9A, -0x91, 0xE0, 0x40, 0xA4, 0x2C, 0xEA, 0x08, 0x4A, -0x2C, 0xEA, 0x40, 0xC4, 0x01, 0x6A, 0xC6, 0xF4, -0x4C, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x50, 0x9A, 0x41, 0x6B, 0x87, 0x40, 0x49, 0xE0, -0x60, 0xC2, 0x11, 0x95, 0x29, 0x4C, 0x80, 0x18, -0x79, 0x0D, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6B, -0x06, 0xF6, 0x7C, 0xC2, 0x06, 0xF6, 0x1C, 0x4A, -0x03, 0x6B, 0x61, 0xC2, 0x00, 0x6B, 0x62, 0xC2, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x20, 0x6A, 0x7D, 0x67, +0xFF, 0x68, 0x50, 0xC3, 0x0C, 0xEC, 0x40, 0x6A, +0x51, 0xC3, 0xA0, 0xF0, 0x0F, 0x24, 0x00, 0x18, +0x8B, 0xD8, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x00, 0xF1, 0x77, 0xA2, +0x3C, 0x23, 0x07, 0x92, 0x6D, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, 0x7C, 0x33, +0x06, 0xD3, 0x49, 0xE3, 0x40, 0xA2, 0x0C, 0xEA, +0x01, 0x72, 0x7C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF1, 0x18, 0x4A, 0x40, 0x9A, 0x30, 0xF0, +0x20, 0x69, 0xCC, 0xF5, 0x0C, 0x49, 0x55, 0xE3, +0x40, 0xA5, 0x91, 0x67, 0x62, 0x67, 0x0C, 0xEB, +0x08, 0xD3, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x4C, 0x9B, 0x01, 0x4E, 0x0C, 0xEE, +0x40, 0xEA, 0x5D, 0x67, 0x90, 0xA2, 0x06, 0x95, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0x93, 0xE4, 0xF1, +0x18, 0x4A, 0x40, 0x9A, 0x01, 0x4D, 0x75, 0xE5, +0x55, 0xE5, 0xC0, 0xA5, 0x01, 0x4C, 0x0C, 0xEC, +0x0C, 0xEE, 0x01, 0x4E, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x4C, 0x9B, 0x91, 0xE1, 0x0C, 0xEE, +0x4C, 0x10, 0x00, 0xF1, 0x27, 0xA2, 0x07, 0x93, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6C, +0x25, 0xE3, 0x10, 0x6B, 0xA4, 0xF3, 0x7C, 0xC2, +0xC4, 0xF3, 0x7D, 0xC2, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF1, 0xA4, 0x9B, 0x80, 0xF2, 0x4C, 0x98, +0x3C, 0x31, 0xCC, 0xF5, 0x0D, 0x4C, 0xB5, 0xE1, +0x10, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF1, 0xBC, 0x9B, 0x80, 0xF2, 0x4C, 0x98, +0x30, 0xF0, 0x20, 0x6C, 0xEC, 0xF5, 0x0E, 0x4C, +0xB5, 0xE1, 0x10, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF2, 0xA0, 0x9B, 0x80, 0xF2, +0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6C, 0x2C, 0xF6, +0x0E, 0x4C, 0xB5, 0xE1, 0x10, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0xAC, 0x9B, +0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6C, +0x2C, 0xF6, 0x1E, 0x4C, 0xB5, 0xE1, 0x08, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, +0xA4, 0x9B, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, +0x20, 0x6C, 0x4C, 0xF6, 0x06, 0x4C, 0xB5, 0xE1, +0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, +0x20, 0xF3, 0x54, 0x98, 0x00, 0x6D, 0x03, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, +0x98, 0xA2, 0x07, 0x92, 0xFF, 0xF7, 0x1F, 0x6B, +0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, +0x5C, 0x9A, 0x9C, 0x34, 0x8F, 0x34, 0x6C, 0xEC, +0x40, 0xEA, 0x20, 0xF3, 0x54, 0x98, 0x03, 0x6C, +0x01, 0x6D, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x6A, 0xAC, 0xEA, 0x06, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xFF, 0xF7, 0x1F, 0x69, 0x80, 0xF2, +0x48, 0x9A, 0x8C, 0xE9, 0x30, 0xF0, 0x20, 0x6C, +0xA7, 0xF5, 0x1C, 0x4C, 0x00, 0x6D, 0x80, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, +0x16, 0xA2, 0x00, 0x18, 0x8B, 0xD8, 0x01, 0x71, +0x01, 0xE2, 0x1C, 0x30, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x27, 0xF4, 0x44, 0xA3, 0x0E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x84, 0x9A, +0xFF, 0x6D, 0x91, 0xE0, 0x40, 0xA4, 0xAC, 0xEA, +0x08, 0x4A, 0xAC, 0xEA, 0x40, 0xC4, 0x01, 0x6A, +0x27, 0xF4, 0x44, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF1, 0x44, 0x9A, 0x41, 0x6B, 0x87, 0x40, +0x49, 0xE0, 0x60, 0xC2, 0x06, 0x95, 0x29, 0x4C, +0x80, 0x18, 0xD9, 0x0A, 0x30, 0xF0, 0x20, 0x6A, +0x01, 0x6B, 0xA7, 0xF5, 0x7C, 0xC2, 0xA7, 0xF5, +0x1C, 0x4A, 0x03, 0x6B, 0x61, 0xC2, 0x00, 0x6B, +0x62, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF3, +0x6F, 0xA3, 0x0C, 0x73, 0x67, 0x6B, 0x01, 0x60, 0x5F, 0x6B, 0x63, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF2, 0x58, 0xA2, 0x67, 0x40, 0x55, 0x4B, +0x4C, 0xF6, 0x52, 0xA2, 0x67, 0x40, 0x55, 0x4B, 0xFE, 0x72, 0xFE, 0x6D, 0x01, 0x60, 0x02, 0x6D, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x8C, 0x9A, -0x89, 0xE3, 0xA0, 0xC2, 0xA0, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0xF6, 0x1C, 0x4A, 0xA4, 0xC2, -0x10, 0x95, 0x01, 0x4B, 0x01, 0x75, 0x0A, 0x61, -0x91, 0xE3, 0x03, 0x6D, 0xA0, 0xC4, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF2, 0xD0, 0x9C, 0x01, 0x6C, -0xD9, 0xE3, 0x09, 0x10, 0x91, 0xE3, 0x03, 0x6D, -0xA0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF2, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x84, 0x9A, +0x01, 0x71, 0x89, 0xE3, 0xA0, 0xC2, 0xA0, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xA7, 0xF5, 0x1C, 0x4A, +0xA4, 0xC2, 0x01, 0x4B, 0x0A, 0x61, 0x91, 0xE3, +0x03, 0x6D, 0xA0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, +0x04, 0xF2, 0xD0, 0x9C, 0x01, 0x6C, 0xD9, 0xE3, +0x16, 0x10, 0x0C, 0x29, 0x91, 0xE3, 0x03, 0x6D, +0xA0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF2, +0x90, 0x9C, 0x91, 0xE3, 0x20, 0xC4, 0xA5, 0xC2, +0x26, 0xC2, 0x0C, 0x10, 0x91, 0xE3, 0x03, 0x6D, +0xA0, 0xC4, 0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF2, 0xD0, 0x9C, 0x02, 0x6C, 0xD9, 0xE3, 0x80, 0xC6, -0x86, 0xC2, 0xA5, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xC4, 0xF3, 0x98, 0xA2, -0x02, 0x4B, 0xFE, 0x74, 0x1F, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0x23, 0xF2, 0x8C, 0x9C, 0xC4, 0xF3, -0xBB, 0xA2, 0x02, 0x6E, 0x91, 0xE3, 0xA0, 0xC4, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF2, 0x90, 0x9C, -0xC4, 0xF3, 0x5C, 0xA2, 0x30, 0xF0, 0x20, 0x6D, -0x8D, 0xE3, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x26, 0xF6, 0x03, 0x4C, 0x6B, 0xF2, 0x1B, 0x4D, -0x40, 0xEA, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x4C, 0x9A, 0x00, 0x6C, 0x49, 0xE3, -0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, -0x50, 0x9A, 0x4D, 0xE3, 0x30, 0xF0, 0x20, 0x6A, -0x06, 0xF6, 0x1C, 0x4A, 0x80, 0xC3, 0x87, 0xC2, -0x88, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, -0x8C, 0x9B, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF2, -0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA7, 0x42, -0x91, 0xE0, 0x26, 0xF6, 0x05, 0x4B, 0x01, 0x4D, -0xC0, 0xA2, 0xC0, 0xC4, 0xC0, 0xA2, 0x01, 0x4A, -0xAA, 0xEA, 0xC0, 0xC3, 0x01, 0x4C, 0x01, 0x4B, -0xF7, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0x06, 0x04, -0xEB, 0xF1, 0x18, 0x4D, 0x10, 0x6E, 0x40, 0xEA, -0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF2, 0x48, 0x9A, 0xC3, 0xF2, +0xA5, 0xC2, 0x86, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0x4B, 0x08, 0xF2, 0x10, 0x4A, 0x06, 0xD3, +0x44, 0xF4, 0x62, 0xA2, 0xFE, 0x73, 0x21, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x06, 0x94, 0x64, 0xF1, +0x64, 0x9B, 0x02, 0x6E, 0x6D, 0xE4, 0x44, 0xF4, +0x85, 0xA2, 0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x06, 0x95, 0x04, 0xF2, 0x70, 0x9B, 0x44, 0xF4, +0x46, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xE5, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0xC7, 0xF5, +0x03, 0x4C, 0x4C, 0xF6, 0x15, 0x4D, 0x40, 0xEA, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x96, +0x64, 0xF1, 0x44, 0x9A, 0x00, 0x6B, 0x49, 0xE6, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, +0x50, 0x9A, 0x49, 0xE6, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xA7, 0xF5, 0x1C, 0x4A, 0x67, 0xC2, +0x68, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, +0x8C, 0x9B, 0x06, 0x95, 0x30, 0xF0, 0x20, 0x6A, +0x4C, 0xF6, 0x17, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC7, 0x42, 0x02, 0x4D, 0x91, 0xE0, 0xC7, 0xF5, +0x05, 0x4B, 0x01, 0x4E, 0xE0, 0xA2, 0xE0, 0xC4, +0xE0, 0xA2, 0x01, 0x4A, 0xCA, 0xEA, 0xE0, 0xC3, +0x01, 0x4C, 0x01, 0x4B, 0xF7, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE7, 0xF3, 0x04, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0x07, 0xD2, 0x08, 0xF2, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6A, 0x48, 0x4D, 0x07, 0x94, +0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0xF3, 0xDC, 0xA3, +0x09, 0xD5, 0x30, 0xF0, 0x20, 0x6D, 0x08, 0xD3, +0xCC, 0xF5, 0x0D, 0x4D, 0x40, 0xEA, 0x00, 0x6C, +0x06, 0xD4, 0x13, 0x29, 0x08, 0x95, 0xE0, 0xF0, +0x5F, 0xA5, 0x08, 0x72, 0x0C, 0x61, 0x07, 0x94, +0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, 0x20, 0x6F, +0xA7, 0xF5, 0x1C, 0x4D, 0x63, 0x6E, 0x07, 0xF4, +0x04, 0x4F, 0x80, 0x18, 0xD4, 0x49, 0x00, 0x6A, +0x8C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF2, 0x48, 0x9A, 0x04, 0xF2, 0x74, 0x9B, 0x49, 0xE0, 0x6D, 0xE0, 0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFB, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x64, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF2, 0x78, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF3, 0x44, 0x9A, 0x13, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x00, 0xF1, -0x66, 0xA2, 0x00, 0xF1, 0x47, 0xA2, 0x12, 0xD2, -0x4B, 0xE3, 0x5C, 0x32, 0xFF, 0xF7, 0x1F, 0x6B, -0x58, 0x4A, 0x6C, 0xEA, 0x11, 0xD2, 0x00, 0x18, -0x96, 0xD3, 0x12, 0x94, 0xFF, 0xF7, 0x1F, 0x6D, -0x63, 0x6E, 0x89, 0xE2, 0x5C, 0x32, 0x4F, 0x32, -0xAC, 0xEA, 0x04, 0xD2, 0x11, 0x94, 0x13, 0x92, -0x00, 0x6D, 0x10, 0x6F, 0x40, 0xEA, 0x10, 0x93, -0x01, 0x73, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF3, 0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x40, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, -0x20, 0x6D, 0x06, 0x04, 0x06, 0xF6, 0x1C, 0x4D, -0x0A, 0x06, 0x10, 0x6F, 0x40, 0xEA, 0x01, 0x49, -0xFF, 0x6A, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF2, 0x58, 0x9A, 0x60, 0xA2, 0x04, 0x6A, -0x6C, 0xEA, 0x03, 0x22, 0x0A, 0x71, 0x9D, 0x61, -0x02, 0x10, 0x0A, 0x59, 0x0B, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF2, 0x7C, 0x9A, 0xFF, 0x6C, -0x20, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0x68, 0x9B, 0x0A, 0x02, 0x61, 0xE0, -0x0E, 0x03, 0x80, 0xA2, 0x01, 0x4A, 0x6A, 0xEA, -0x80, 0xC0, 0x01, 0x48, 0xFA, 0x61, 0x10, 0x94, -0x01, 0x74, 0x07, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF7, 0x86, 0xA2, 0x20, 0x6D, 0x80, 0x18, -0x1D, 0x0A, 0x00, 0x18, 0xA0, 0xD3, 0x29, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, -0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xA2, -0x00, 0x6C, 0xFF, 0x6D, 0x4C, 0xE9, 0xA0, 0xF2, -0x50, 0x98, 0x1D, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, -0x01, 0x72, 0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF7, 0x86, 0xA3, -0xA0, 0xF2, 0x54, 0x9A, 0x01, 0x6D, 0x18, 0x6E, -0x00, 0x6F, 0x40, 0xEA, 0xA0, 0xF2, 0x50, 0x98, -0x00, 0x6C, 0xB1, 0x67, 0x1E, 0x6E, 0x40, 0xEA, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA0, 0xF2, 0x54, 0x9A, 0xA6, 0xF7, -0x86, 0xA3, 0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xC3, 0xF3, 0x6F, 0xA2, 0x06, 0x2B, -0xC0, 0xF0, 0xA7, 0xA2, 0x01, 0x6C, 0xB6, 0x35, -0x00, 0x18, 0x0B, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x0B, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x60, 0x9A, +0x04, 0xF2, 0x78, 0x9A, 0xFB, 0x6A, 0xFF, 0xF7, +0x1F, 0x6E, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, 0x44, 0x9A, +0x0A, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x00, 0xF1, 0x66, 0xA2, 0x00, 0xF1, +0x47, 0xA2, 0x08, 0xD2, 0x4B, 0xE3, 0x5C, 0x32, +0x58, 0x4A, 0xCC, 0xEA, 0x07, 0xD2, 0x00, 0x18, +0x8B, 0xD8, 0x08, 0x93, 0xFF, 0xF7, 0x1F, 0x6C, +0x00, 0x6D, 0x69, 0xE2, 0x5C, 0x32, 0x4F, 0x32, +0x8C, 0xEA, 0x04, 0xD2, 0x07, 0x94, 0x0A, 0x92, +0x63, 0x6E, 0x10, 0x6F, 0x40, 0xEA, 0x01, 0x71, +0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, +0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, 0x20, 0x6E, +0xE7, 0xF3, 0x04, 0x4C, 0xA7, 0xF5, 0x1C, 0x4D, +0x07, 0xF4, 0x04, 0x4E, 0x10, 0x6F, 0x40, 0xEA, +0x06, 0x93, 0xFF, 0x6A, 0x01, 0x4B, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x58, 0x9A, +0x06, 0xD3, 0x60, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, +0x04, 0x22, 0x06, 0x94, 0x0A, 0x74, 0x95, 0x61, +0x03, 0x10, 0x06, 0x95, 0x0A, 0x5D, 0x8F, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x7C, 0x9A, 0xFF, 0x6C, 0x20, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x17, 0x97, -0x16, 0x91, 0x15, 0x90, 0x0C, 0x63, 0x00, 0xEF, -0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, -0xFF, 0xF7, 0x1F, 0x6A, 0x24, 0x67, 0x4C, 0xE9, -0x6F, 0x41, 0x4C, 0xEB, 0x02, 0x5B, 0x40, 0xF1, -0x0F, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x46, 0xF5, -0x14, 0x4A, 0x10, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xCB, 0xF2, 0x56, 0xA2, 0x30, 0xF0, 0x20, 0x68, -0x10, 0x94, 0x11, 0xD2, 0x11, 0x96, 0x80, 0xF2, -0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6D, 0xCB, 0xF2, -0x17, 0x4D, 0x40, 0xEA, 0x01, 0x6B, 0x6E, 0xE9, -0x31, 0x29, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, -0x20, 0x6D, 0x07, 0x04, 0xAB, 0xF2, 0x05, 0x4D, -0x10, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x20, 0x6D, 0x0B, 0x04, 0x0B, 0xF2, -0x08, 0x4D, 0x10, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x60, 0xF3, 0x44, 0x9A, 0x11, 0x96, -0x00, 0x6C, 0xA4, 0x67, 0x04, 0xD1, 0x20, 0x6F, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, -0x54, 0x9A, 0x10, 0x95, 0x30, 0xF0, 0x20, 0x69, -0x11, 0x97, 0x86, 0xF5, 0x14, 0x49, 0x07, 0x04, -0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x80, 0xF2, 0x4C, 0x98, 0xC6, 0xF5, 0x14, 0x4C, -0xB1, 0x67, 0x29, 0x10, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x20, 0x6D, 0x07, 0x04, 0x0B, 0xF2, -0x08, 0x4D, 0x10, 0x6E, 0x40, 0xEA, 0x00, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, -0x44, 0x9A, 0x11, 0x96, 0x00, 0x6C, 0xA4, 0x67, -0x10, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF3, 0x44, 0x9A, 0x10, 0x95, 0x30, 0xF0, -0x20, 0x69, 0x11, 0x97, 0x86, 0xF5, 0x14, 0x49, -0x07, 0x04, 0xD1, 0x67, 0x40, 0xEA, 0x80, 0xF2, -0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6C, 0xA7, 0x41, -0xC6, 0xF5, 0x14, 0x4C, 0x01, 0x4D, 0x28, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xC4, 0xF3, 0x78, 0xA2, 0xFE, 0x73, -0x14, 0x61, 0xC4, 0xF3, 0x5A, 0xA2, 0x30, 0x6B, -0x9D, 0x67, 0x6C, 0xEA, 0x53, 0x32, 0x58, 0xC4, -0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9A, -0xE6, 0xF5, 0x1C, 0x4C, 0xC6, 0xF5, 0x14, 0x4D, -0x17, 0x10, 0xFE, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, -0x02, 0x5B, 0x15, 0x60, 0x30, 0xF0, 0x20, 0x6D, -0xC6, 0xF5, 0x14, 0x4D, 0x66, 0xA5, 0x03, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0x6C, 0xEA, 0x7D, 0x67, -0x58, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0xE6, 0xF5, 0x1C, 0x4C, 0x08, 0x4D, -0x20, 0x6E, 0x40, 0xEA, 0x0D, 0x10, 0x05, 0x6B, -0x9D, 0x67, 0x78, 0xC4, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x80, 0x9B, 0x10, 0x6D, 0x60, 0xA4, -0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF4, 0x14, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA7, 0x42, 0xE6, 0xF5, -0x1C, 0x4B, 0x19, 0x4D, 0x01, 0x6C, 0xE0, 0xA2, -0xC0, 0xA3, 0x01, 0x4A, 0x01, 0x4B, 0xEE, 0xEE, -0x01, 0x5E, 0xD8, 0x67, 0xCB, 0xEE, 0xAA, 0xEA, -0xCC, 0xEC, 0xF5, 0x61, 0x01, 0x74, 0x0C, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x60, 0x9A, -0xFF, 0x6C, 0x08, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x74, 0x10, -0x7D, 0x67, 0x58, 0xA3, 0x04, 0x5A, 0x62, 0x60, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x84, 0xF5, 0x54, 0xC0, 0x84, 0xF5, 0x58, 0xA0, -0x01, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x8D, 0xEA, -0x84, 0xF5, 0x58, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0xE6, 0xF5, 0x1C, 0x49, -0x30, 0xF0, 0x20, 0x6C, 0x0B, 0xF4, 0x14, 0x4C, -0xB1, 0x67, 0x20, 0x6E, 0x40, 0xEA, 0x5D, 0x67, -0x98, 0xA2, 0xE0, 0xF0, 0xBD, 0xA0, 0xD1, 0x67, -0x80, 0x18, 0x2F, 0x00, 0x43, 0xF4, 0x58, 0xA0, -0x12, 0x22, 0xC0, 0xF0, 0x59, 0xA0, 0x01, 0x6B, -0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x68, -0x0A, 0xF5, 0x14, 0x48, 0x00, 0x69, 0x91, 0x67, -0xB0, 0x67, 0x01, 0x49, 0x00, 0x18, 0x2E, 0xC4, -0x04, 0x71, 0x18, 0x48, 0xF8, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x84, 0xF5, -0x74, 0xA2, 0x01, 0x73, 0x0B, 0x60, 0x05, 0x23, -0x02, 0x73, 0x0D, 0x60, 0x03, 0x73, 0x10, 0x60, -0x2B, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x4B, 0xF4, -0x04, 0x4C, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0x4B, 0xF4, 0x0C, 0x4C, 0x09, 0x10, 0x30, 0xF0, -0x20, 0x6C, 0x4B, 0xF4, 0x14, 0x4C, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x4B, 0xF4, 0x1C, 0x4C, -0x84, 0xF5, 0xF5, 0xA2, 0x30, 0xF0, 0x20, 0x6D, -0xAB, 0xF2, 0x15, 0x4D, 0x06, 0x06, 0x80, 0x18, -0x7F, 0x00, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x05, 0x6B, 0x84, 0xF5, -0x98, 0xA2, 0x84, 0xF5, 0x74, 0xC2, 0x02, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0x84, 0xF5, 0x78, 0xC2, -0x15, 0x97, 0x14, 0x91, 0x13, 0x90, 0x0B, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, -0x8C, 0xE9, 0xFF, 0x68, 0xAC, 0xE8, 0x80, 0x18, -0x00, 0x00, 0x91, 0x67, 0x80, 0x18, 0x10, 0x02, -0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x31, 0x01, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF2, 0x78, 0x9A, 0x0A, 0xD4, 0x0B, 0xD5, -0x40, 0xA3, 0xFF, 0x6C, 0x19, 0x6D, 0x8C, 0xEA, -0xAB, 0xED, 0xAC, 0xEA, 0x08, 0x6D, 0xAD, 0xEA, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x69, -0x80, 0xF2, 0x48, 0x99, 0x30, 0xF0, 0x20, 0x68, -0x6B, 0xF2, 0x14, 0x48, 0x90, 0x67, 0x00, 0x6D, -0x04, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x99, -0x00, 0x6D, 0xDF, 0x6E, 0x84, 0x40, 0x40, 0xEA, -0x0A, 0x91, 0x0B, 0x92, 0x30, 0xF0, 0x20, 0x68, -0x08, 0x49, 0x45, 0xE1, 0xC0, 0xF3, 0x40, 0x98, -0x81, 0x41, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0xC4, 0xF3, 0x55, 0xC3, -0xC0, 0xF3, 0x40, 0x98, 0x04, 0xD3, 0x84, 0x41, -0x40, 0xEA, 0x04, 0x93, 0x85, 0x41, 0xC4, 0xF3, -0x58, 0xC3, 0xC0, 0xF3, 0x40, 0x98, 0x40, 0xEA, -0x04, 0x93, 0x86, 0x41, 0xC4, 0xF3, 0x59, 0xC3, -0xC0, 0xF3, 0x40, 0x98, 0x40, 0xEA, 0x04, 0x93, -0x87, 0x41, 0xC4, 0xF3, 0x5A, 0xC3, 0xC0, 0xF3, -0x40, 0x98, 0x40, 0xEA, 0x04, 0x93, 0x87, 0x41, -0x01, 0x4C, 0xC4, 0xF3, 0x5B, 0xC3, 0xC0, 0xF3, -0x40, 0x98, 0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF2, -0x1D, 0x48, 0x40, 0xEA, 0x04, 0x93, 0xC4, 0xF3, -0x5C, 0xC3, 0x47, 0x41, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0x4A, 0x8B, 0xF2, 0x05, 0x4B, 0x05, 0xD2, -0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x40, 0x9A, 0x05, 0x94, 0x40, 0xEA, 0x40, 0xC0, -0x04, 0x93, 0x05, 0x92, 0x01, 0x48, 0x6A, 0xE8, -0x01, 0x4A, 0x05, 0xD2, 0xF2, 0x61, 0x47, 0x41, -0x2A, 0x4A, 0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, -0xAB, 0xF2, 0x05, 0x48, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x40, 0x9B, 0x04, 0x94, 0x40, 0xEA, -0x40, 0xC0, 0x04, 0x92, 0x30, 0xF0, 0x20, 0x6B, -0x01, 0x48, 0xAB, 0xF2, 0x15, 0x4B, 0x01, 0x4A, -0x6A, 0xE8, 0x04, 0xD2, 0xEF, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, 0x87, 0x41, -0x5A, 0x4C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, -0xA6, 0xF6, 0x00, 0x48, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0xF4, 0x55, 0xC0, 0xC0, 0xF3, 0x40, 0x9B, -0x87, 0x41, 0x5B, 0x4C, 0x40, 0xEA, 0x24, 0xF4, -0x56, 0xC0, 0x24, 0xF4, 0x55, 0xA0, 0x40, 0x32, -0x04, 0xD2, 0x04, 0x93, 0x24, 0xF4, 0x56, 0xA0, -0x00, 0x68, 0x4D, 0xEB, 0x04, 0xD3, 0x12, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x87, 0x41, 0xC0, 0xF3, -0x40, 0x9A, 0x5C, 0x4C, 0x11, 0xE4, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x6D, 0xE0, 0x24, 0xF4, 0x57, 0xC3, 0x01, 0x48, -0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x92, 0x43, 0xE8, -0xEB, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0xC4, 0xF3, 0x59, 0xA3, 0xC4, 0xF3, -0x7A, 0xA3, 0x40, 0x32, 0x6D, 0xEA, 0x08, 0x6B, -0x4C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0x03, 0x6B, 0x01, 0x6C, -0x60, 0xC2, 0x80, 0x18, 0x28, 0x09, 0x19, 0x10, -0x07, 0x6C, 0x4C, 0xEC, 0x4F, 0x44, 0xFF, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x02, 0x5A, 0x11, 0x60, -0x00, 0x6D, 0x80, 0x18, 0xC1, 0x02, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF2, 0x78, 0x9A, 0xFF, 0x6C, -0x19, 0x6D, 0x40, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, -0xAC, 0xEA, 0x10, 0x6D, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x00, 0x6A, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x64, 0x9B, 0xFF, 0x6A, 0x8C, 0xEA, -0x80, 0xAB, 0xE1, 0xF7, 0x1F, 0x6B, 0x30, 0xF0, -0x20, 0x6E, 0x8C, 0xEB, 0x69, 0xE2, 0x5C, 0x34, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x58, 0x9A, -0x10, 0x4C, 0x06, 0x6D, 0x2B, 0xF7, 0x18, 0x4E, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x04, 0x4B, -0x60, 0x9B, 0x0F, 0xD7, 0x0D, 0xD5, 0x0E, 0xD6, -0x20, 0xAB, 0xFF, 0x6A, 0x8C, 0xEA, 0xE1, 0xF7, -0x1F, 0x6C, 0x8C, 0xE9, 0x25, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x68, 0x0C, 0xF0, -0x10, 0x4C, 0x00, 0x6D, 0xA0, 0xF1, 0x00, 0x6E, -0x40, 0xEA, 0x3C, 0x31, 0xA0, 0xF3, 0x58, 0x98, -0x0D, 0x96, 0x87, 0x41, 0x12, 0x4C, 0x01, 0x6D, -0x40, 0xEA, 0xA0, 0xF3, 0x58, 0x98, 0x0E, 0x96, -0x87, 0x41, 0x13, 0x4C, 0x01, 0x6D, 0x40, 0xEA, -0xA0, 0xF3, 0x58, 0x98, 0x0F, 0x96, 0x87, 0x41, -0x14, 0x4C, 0x01, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x04, 0x4A, 0x40, 0x9A, -0x0D, 0x93, 0xE1, 0xF7, 0x1F, 0x6C, 0x20, 0xAA, -0x40, 0xA3, 0x30, 0xF0, 0x20, 0x6E, 0x8C, 0xE9, -0x25, 0xE2, 0xA0, 0xF3, 0x58, 0x98, 0x3C, 0x31, -0x81, 0x41, 0x01, 0x6D, 0x2C, 0xF1, 0x0C, 0x4E, -0x40, 0xEA, 0x02, 0x49, 0x00, 0x6A, 0x05, 0xD1, -0x04, 0xD2, 0x40, 0x10, 0x04, 0x92, 0x1C, 0x68, -0x30, 0xF0, 0x20, 0x69, 0x18, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x0C, 0xF0, 0x14, 0x4A, 0x00, 0x6D, -0x1C, 0x6E, 0x12, 0xE8, 0x01, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x90, 0x67, -0x40, 0xEA, 0xA0, 0xF3, 0x58, 0x99, 0x05, 0x94, -0x01, 0x6D, 0xC4, 0x40, 0x40, 0xEA, 0x05, 0x92, -0x62, 0xA8, 0xC7, 0x40, 0x01, 0x4A, 0x40, 0xD8, -0x6D, 0xE2, 0xA0, 0xF3, 0x58, 0x99, 0x83, 0x67, -0x05, 0xD3, 0x01, 0x6D, 0x05, 0x4E, 0x40, 0xEA, -0x05, 0x93, 0x46, 0xA8, 0xC7, 0x40, 0x01, 0x4B, -0x62, 0xD8, 0x4D, 0xE3, 0xEE, 0x4A, 0x06, 0xD3, -0x4A, 0xC8, 0x05, 0x92, 0x01, 0x6D, 0x11, 0x4E, -0x11, 0x4A, 0x44, 0xD8, 0xA0, 0xF3, 0x58, 0x99, -0x06, 0x94, 0x40, 0xEA, 0x04, 0x94, 0x06, 0x93, -0xFF, 0x6A, 0x01, 0x4C, 0x01, 0x4B, 0x4C, 0xEC, -0x05, 0xD3, 0x04, 0xD4, 0x30, 0xF0, 0x20, 0x6A, -0x2C, 0xF1, 0x4C, 0xA2, 0x04, 0x93, 0x43, 0xEB, -0xB9, 0x61, 0x05, 0x94, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x58, 0x9A, 0x30, 0xF0, 0x20, 0x6E, -0x01, 0x4C, 0x01, 0x6D, 0x4C, 0xF1, 0x08, 0x4E, -0x40, 0xEA, 0x05, 0x94, 0x00, 0x69, 0x02, 0x4C, -0x04, 0xD4, 0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2C, 0x30, 0x2C, 0xF1, 0x10, 0x4A, 0x01, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x90, 0x67, 0x00, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x58, 0x9A, -0x04, 0x94, 0x01, 0x6D, 0xC4, 0x40, 0x40, 0xEA, -0x04, 0x92, 0x62, 0xA8, 0x01, 0x49, 0x01, 0x4A, -0x40, 0xD8, 0x6D, 0xE2, 0xFF, 0x6A, 0x04, 0xD3, -0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0xA5, 0xF2, 0x48, 0xA0, 0x43, 0xE9, -0xD9, 0x61, 0x30, 0xF0, 0x20, 0x69, 0x04, 0x94, -0xA0, 0xF3, 0x58, 0x99, 0x30, 0xF0, 0x20, 0x6E, -0x01, 0x4C, 0x01, 0x6D, 0x8C, 0xF1, 0x14, 0x4E, -0x40, 0xEA, 0x04, 0x92, 0xE5, 0xF2, 0x74, 0xA8, -0x30, 0xF0, 0x20, 0x6E, 0x02, 0x4A, 0x01, 0x4B, -0xE5, 0xF2, 0x50, 0xD8, 0x49, 0xE3, 0x04, 0xD2, -0x04, 0x94, 0xA0, 0xF3, 0x58, 0x99, 0x01, 0x6D, -0x8C, 0xF1, 0x1C, 0x4E, 0x40, 0xEA, 0x04, 0x92, -0xE5, 0xF2, 0x7C, 0xA8, 0x30, 0xF0, 0x20, 0x6E, -0x01, 0x4A, 0x01, 0x4B, 0xE5, 0xF2, 0x58, 0xD8, -0x49, 0xE3, 0x04, 0xD2, 0x04, 0x94, 0xA0, 0xF3, -0x58, 0x99, 0x01, 0x6D, 0xAC, 0xF1, 0x04, 0x4E, -0x40, 0xEA, 0x04, 0x92, 0x05, 0xF3, 0x64, 0xA8, -0x30, 0xF0, 0x20, 0x6E, 0x01, 0x4A, 0x01, 0x4B, -0x05, 0xF3, 0x40, 0xD8, 0x49, 0xE3, 0x04, 0xD2, -0x04, 0x94, 0xA0, 0xF3, 0x58, 0x99, 0x01, 0x6D, -0xAC, 0xF1, 0x0C, 0x4E, 0x40, 0xEA, 0x04, 0x92, -0x30, 0xF0, 0x20, 0x6E, 0x01, 0x6D, 0x01, 0x4A, -0x05, 0xF3, 0x48, 0xD8, 0x05, 0xF3, 0x0C, 0xA8, -0x8C, 0xF1, 0x0C, 0x4E, 0x01, 0x48, 0x41, 0xE0, -0xA0, 0xF3, 0x58, 0x99, 0x90, 0x67, 0x01, 0x48, -0x40, 0xEA, 0x04, 0xD0, 0x00, 0x68, 0x1F, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x31, 0x4C, 0xF1, -0x0C, 0x4A, 0x25, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x48, 0x9A, 0x91, 0x67, 0x00, 0x6D, -0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x58, 0x9A, 0x04, 0x94, 0x02, 0x6D, -0xC4, 0x41, 0x40, 0xEA, 0x04, 0x92, 0x62, 0xA9, -0x01, 0x48, 0x02, 0x4A, 0x40, 0xD9, 0x6D, 0xE2, -0xFF, 0x6A, 0x04, 0xD3, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x8C, 0xF1, 0x4C, 0xA2, 0x43, 0xE8, -0xDB, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xC0, 0xA4, 0x20, 0xF1, 0xED, 0xA2, 0x02, 0x6B, -0x01, 0x6D, 0x6B, 0xEB, 0xAC, 0xEE, 0xEC, 0xEB, -0xCD, 0xEB, 0x20, 0xF1, 0x6D, 0xC2, 0xAC, 0xEB, -0x2B, 0x23, 0x62, 0xA4, 0x20, 0xF1, 0xEF, 0xA2, -0x6A, 0x33, 0xAC, 0xEB, 0x68, 0x36, 0x05, 0x6B, -0x6B, 0xEB, 0xEC, 0xEB, 0xCD, 0xEB, 0x20, 0xF1, -0x6F, 0xC2, 0xC2, 0xA4, 0xDA, 0x36, 0xAC, 0xEE, -0xD8, 0x37, 0x41, 0x6E, 0xCB, 0xEE, 0x6C, 0xEE, -0xED, 0xEE, 0x20, 0xF1, 0xCF, 0xC2, 0x62, 0xA4, -0x6E, 0x33, 0xAC, 0xEB, 0x6C, 0x35, 0x09, 0x6B, -0x6B, 0xEB, 0xCC, 0xEB, 0xAD, 0xEB, 0x20, 0xF1, -0x6F, 0xC2, 0xA2, 0xA4, 0x7F, 0x6C, 0x6C, 0xEC, -0xBE, 0x35, 0xBC, 0x35, 0xAD, 0xEC, 0x20, 0xF1, -0x8F, 0xC2, 0x01, 0x6C, 0x80, 0x18, 0x16, 0x40, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x20, 0xF1, 0x74, 0xC2, 0x61, 0xA4, -0x20, 0xF1, 0x75, 0xC2, 0x62, 0xA4, 0x20, 0xF1, -0x76, 0xC2, 0x63, 0xA4, 0x20, 0xF1, 0x77, 0xC2, -0x64, 0xA4, 0x20, 0xF1, 0x78, 0xC2, 0x65, 0xA4, -0x20, 0xF1, 0x79, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0xE2, 0x63, 0x3B, 0x62, 0x3A, 0xD1, 0x39, 0xD0, -0x00, 0x6A, 0x3C, 0xD4, 0x7D, 0x67, 0x9D, 0x67, -0x3F, 0xD7, 0x3E, 0xD6, 0x50, 0xCB, 0x48, 0xCC, -0x3C, 0x90, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF4, -0x7C, 0x9B, 0x30, 0xF0, 0x20, 0x69, 0x07, 0xD2, -0x06, 0xD2, 0x09, 0xD2, 0x0A, 0xD2, 0x0B, 0xD2, -0x0C, 0xD2, 0x08, 0x48, 0xC0, 0xF3, 0x40, 0x99, -0xA1, 0xE0, 0x05, 0xD3, 0x8E, 0x40, 0x40, 0xEA, -0xBD, 0x67, 0x50, 0xC5, 0xC0, 0xF3, 0x40, 0x99, -0x8F, 0x40, 0x40, 0xEA, 0x7D, 0x67, 0x51, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x3E, 0x94, 0x80, 0xF2, -0x4C, 0x9A, 0x04, 0x05, 0x02, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x0D, 0x04, 0x00, 0x6D, 0x80, 0x6E, 0x40, 0xEA, -0x3C, 0x91, 0x07, 0x04, 0x20, 0xF0, 0x02, 0x05, -0x0A, 0x49, 0x2E, 0xD4, 0x34, 0xD5, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, 0x91, 0x67, -0x01, 0x49, 0x40, 0xEA, 0x2E, 0x94, 0x34, 0x95, -0x40, 0xC4, 0x01, 0x4C, 0xAA, 0xEC, 0x2E, 0xD4, -0xF2, 0x61, 0x07, 0x01, 0x30, 0xF0, 0x20, 0x6D, -0x91, 0x67, 0xCB, 0xF1, 0x0B, 0x4D, 0x06, 0x6E, -0x00, 0x18, 0xE9, 0xD3, 0xA0, 0xF1, 0x14, 0x2A, -0x7D, 0x67, 0x50, 0xA3, 0x08, 0x72, 0xA0, 0xF0, -0x10, 0x61, 0x51, 0xA3, 0xA0, 0xF0, 0x0D, 0x2A, -0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, -0x87, 0x40, 0x02, 0x4C, 0x40, 0xEA, 0x3F, 0x95, -0x06, 0x03, 0x40, 0xC5, 0x47, 0x40, 0x09, 0x4A, -0x2F, 0xD2, 0x2E, 0xD3, 0x35, 0xD1, 0x30, 0xF0, -0x20, 0x69, 0x2F, 0x94, 0xC0, 0xF3, 0x40, 0x99, -0x40, 0xEA, 0x2E, 0x94, 0x2F, 0x95, 0x40, 0xC4, -0x35, 0x92, 0x01, 0x4C, 0x01, 0x4D, 0x4A, 0xEC, -0x2F, 0xD5, 0x2E, 0xD4, 0xF0, 0x61, 0xC0, 0xF3, -0x40, 0x99, 0x87, 0x40, 0x0D, 0x4C, 0x40, 0xEA, -0x2E, 0xD2, 0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, -0x0E, 0x4C, 0x40, 0xEA, 0x2E, 0x93, 0xFF, 0xF7, -0x1F, 0x6C, 0x60, 0x33, 0x4D, 0xEB, 0xC0, 0xF3, -0x40, 0x99, 0x8C, 0xEB, 0x87, 0x40, 0x2F, 0xD3, -0x0F, 0x4C, 0x40, 0xEA, 0x2E, 0xD2, 0xC0, 0xF3, -0x40, 0x99, 0x87, 0x40, 0x10, 0x4C, 0x40, 0xEA, -0x2E, 0x95, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x6B, -0xA0, 0x31, 0x4D, 0xE9, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE9, 0x82, 0xF0, 0x08, 0x48, 0x2E, 0xD3, -0x2E, 0x95, 0x3F, 0x92, 0xFF, 0x6C, 0x8C, 0xED, -0x31, 0xD5, 0x60, 0xA2, 0x40, 0xA0, 0x6E, 0xEA, -0x55, 0x2A, 0x43, 0xA0, 0x02, 0x6B, 0x6C, 0xEA, -0x04, 0x22, 0x44, 0xA8, 0x2F, 0x93, 0x6E, 0xEA, -0x4D, 0x2A, 0x43, 0xA0, 0x01, 0x6B, 0x6C, 0xEA, -0x03, 0x22, 0x45, 0xA8, 0x2E, 0xEA, 0x46, 0x2A, -0x41, 0xA0, 0x02, 0x6B, 0x6C, 0xEA, 0x18, 0x22, -0x00, 0x6C, 0x30, 0xD4, 0x30, 0x92, 0x06, 0x04, -0x04, 0x6E, 0x50, 0x35, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xB5, 0xE2, 0x85, 0xF0, -0x1E, 0x4D, 0x00, 0x18, 0xE9, 0xD3, 0x03, 0x2A, -0x01, 0x6B, 0x30, 0xD3, 0x07, 0x10, 0x30, 0x94, -0x01, 0x4C, 0x04, 0x74, 0x30, 0xD4, 0xEA, 0x61, -0x00, 0x6D, 0x30, 0xD5, 0x41, 0xA0, 0x01, 0x6B, -0x6C, 0xEA, 0x0D, 0x22, 0x2E, 0x92, 0xC2, 0xA0, -0x06, 0x04, 0x50, 0x35, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF0, 0x08, 0x4A, 0xB5, 0xE2, 0x04, 0x4D, -0x00, 0x18, 0xE9, 0xD3, 0x0E, 0x22, 0x41, 0xA0, -0x04, 0x6B, 0x6C, 0xEA, 0x06, 0x22, 0x06, 0x04, -0x05, 0x05, 0xC3, 0x67, 0x00, 0x18, 0xE9, 0xD3, -0x04, 0x22, 0x41, 0xA0, 0x02, 0x22, 0x30, 0x93, -0x09, 0x23, 0x31, 0x94, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF0, 0x08, 0x4A, 0x90, 0x33, 0x69, 0xE2, -0x4C, 0xA2, 0x07, 0x11, 0x2E, 0x95, 0x10, 0x48, -0x01, 0x4D, 0x08, 0x75, 0x2E, 0xD5, 0x9C, 0x61, -0xFF, 0x10, 0x7D, 0x67, 0x50, 0xA3, 0x88, 0x72, -0x05, 0x61, 0x51, 0xA3, 0xD9, 0x72, 0x0C, 0x6A, -0xE0, 0xF0, 0x17, 0x60, 0x9D, 0x67, 0x50, 0xA4, -0x08, 0x72, 0x08, 0x61, 0x51, 0xA4, 0x06, 0x72, -0x05, 0x61, 0x3F, 0x95, 0x01, 0x6A, 0x4B, 0xEA, -0x40, 0xC5, 0xEA, 0x10, 0x7D, 0x67, 0x50, 0xA3, -0x86, 0x72, 0xE0, 0xF0, 0x05, 0x61, 0x51, 0xA3, -0xDD, 0x72, 0xE0, 0xF0, 0x01, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x86, 0x40, -0x27, 0x40, 0x40, 0xEA, 0x3F, 0x94, 0x00, 0x6D, -0x11, 0x49, 0x40, 0xC4, 0x2E, 0xD5, 0x2F, 0xD5, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, -0x91, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xD2, 0xC0, 0xF3, 0x40, 0x9C, 0x81, 0x41, -0x40, 0xEA, 0x2E, 0x93, 0xBD, 0x67, 0x71, 0xE5, -0x30, 0x95, 0xA0, 0x33, 0x4D, 0xEB, 0x72, 0xCC, -0x2E, 0x92, 0x2F, 0x93, 0x30, 0xF0, 0x20, 0x6C, -0xA6, 0xF6, 0x00, 0x4C, 0x55, 0xE4, 0x51, 0xE4, -0x64, 0x32, 0x0D, 0x03, 0x4D, 0xE3, 0xC5, 0xF0, -0x1E, 0x4D, 0xC5, 0xF0, 0x1F, 0x4C, 0x00, 0x6A, -0xC0, 0xA5, 0xE0, 0xA4, 0x01, 0x4A, 0xC0, 0x36, -0xED, 0xEE, 0xC0, 0xCB, 0xFF, 0x6E, 0xCC, 0xEA, -0x08, 0x72, 0x12, 0x4D, 0x12, 0x4C, 0x10, 0x4B, -0xF3, 0x61, 0x2F, 0x94, 0x2E, 0x95, 0x02, 0x49, -0x01, 0x4C, 0x02, 0x4D, 0x08, 0x74, 0x2F, 0xD4, -0x2E, 0xD5, 0xC6, 0x61, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, 0x21, 0x4C, -0x40, 0xEA, 0x2E, 0xD2, 0xC0, 0xF3, 0x40, 0x99, -0x87, 0x40, 0x22, 0x4C, 0x40, 0xEA, 0x2E, 0x93, -0xFF, 0xF7, 0x1F, 0x6C, 0x60, 0x33, 0x4D, 0xEB, -0xC0, 0xF3, 0x40, 0x99, 0x8C, 0xEB, 0x87, 0x40, -0x2E, 0xD3, 0x23, 0x4C, 0x40, 0xEA, 0x2F, 0xD2, -0xC0, 0xF3, 0x40, 0x99, 0x87, 0x40, 0x24, 0x4C, -0x40, 0xEA, 0x2F, 0x95, 0x00, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0xA0, 0x31, 0x4D, 0xE9, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE9, 0x02, 0xF1, 0x08, 0x48, -0x2F, 0xD3, 0x32, 0xD3, 0x2F, 0x92, 0xFF, 0x6D, -0x3F, 0x94, 0xAC, 0xEA, 0x30, 0xD2, 0x60, 0xA4, -0x40, 0xA0, 0x6E, 0xEA, 0x5F, 0x2A, 0x43, 0xA0, -0x02, 0x6B, 0x6C, 0xEA, 0x04, 0x22, 0x4A, 0xA8, -0x2E, 0x95, 0xAE, 0xEA, 0x57, 0x2A, 0x43, 0xA0, -0x01, 0x6B, 0x6C, 0xEA, 0x03, 0x22, 0x4B, 0xA8, -0x2E, 0xEA, 0x50, 0x2A, 0x41, 0xA0, 0x02, 0x6B, -0x6C, 0xEA, 0x13, 0x22, 0x0D, 0x02, 0x2D, 0x03, -0x31, 0xD2, 0x36, 0xD3, 0x31, 0x95, 0x09, 0x04, -0x10, 0x6E, 0x00, 0x18, 0xE9, 0xD3, 0x03, 0x2A, -0x01, 0x6C, 0x32, 0xD4, 0x06, 0x10, 0x31, 0x95, -0x36, 0x92, 0x10, 0x4D, 0x4A, 0xED, 0x31, 0xD5, -0xF1, 0x61, 0x41, 0xA0, 0x01, 0x6B, 0x6C, 0xEA, -0x0F, 0x22, 0x2F, 0x92, 0x1C, 0x6D, 0xC2, 0xA0, -0xB8, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF1, -0x08, 0x4A, 0x09, 0x04, 0x12, 0xED, 0xB5, 0xE2, -0x04, 0x4D, 0x00, 0x18, 0xE9, 0xD3, 0x0D, 0x22, -0x41, 0xA0, 0x04, 0x6B, 0x6C, 0xEA, 0x05, 0x22, -0x7D, 0x67, 0x52, 0xAB, 0x42, 0x32, 0xFF, 0x72, -0x04, 0x60, 0x41, 0xA0, 0x02, 0x22, 0x32, 0x94, -0x19, 0x24, 0x42, 0xA0, 0x10, 0x72, 0x0B, 0x60, -0x0A, 0x22, 0x0E, 0x72, 0x13, 0x61, 0xBD, 0x67, -0x59, 0xAD, 0x02, 0xF0, 0x00, 0x5A, 0x0E, 0x61, -0x02, 0xF4, 0x00, 0x5A, 0x0B, 0x60, 0x30, 0x94, -0x1C, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x78, 0xEC, -0x02, 0xF1, 0x08, 0x4A, 0x12, 0xEB, 0x49, 0xE3, -0x58, 0xA2, 0x07, 0x10, 0x2F, 0x95, 0x1C, 0x48, -0x01, 0x4D, 0x0E, 0x75, 0x2F, 0xD5, 0x92, 0x61, -0x00, 0x6A, 0x3B, 0x97, 0x3A, 0x91, 0x39, 0x90, -0x1E, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x10, 0x92, 0x0C, 0xD4, -0x0D, 0xD5, 0x04, 0xD2, 0x04, 0x93, 0xFF, 0x6A, -0x4C, 0xEF, 0x4C, 0xEB, 0x04, 0xD3, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x70, 0x9B, 0x0E, 0xD6, -0x06, 0xD7, 0x60, 0xA3, 0x6C, 0xEA, 0x05, 0xD2, -0x00, 0x18, 0xA0, 0xD3, 0x1C, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6C, -0xFF, 0x6D, 0x33, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, 0x00, 0x68, -0x40, 0xEA, 0x01, 0x72, 0x19, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, -0x54, 0x9A, 0xA6, 0xF7, 0x84, 0xA3, 0x01, 0x6D, -0x18, 0x6E, 0xF0, 0x67, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, -0x54, 0x9A, 0xA6, 0xF7, 0x84, 0xA3, 0x01, 0x6D, -0x18, 0x6E, 0x00, 0x6F, 0x40, 0xEA, 0x02, 0x67, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x83, 0x17, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0x84, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x09, 0x96, 0x07, 0xF4, +0x04, 0x4B, 0x6D, 0xE2, 0x60, 0xA3, 0x91, 0xE6, +0x51, 0xE4, 0x60, 0xC4, 0x01, 0x4A, 0xFF, 0x6B, +0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x10, 0x4B, 0xA4, 0xF3, 0x9C, 0xA3, 0x83, 0xEA, +0xE7, 0x61, 0x01, 0x71, 0x05, 0x61, 0x00, 0xF1, +0x86, 0xA3, 0x20, 0x6D, 0x80, 0x18, 0xFD, 0x06, +0x00, 0x18, 0x95, 0xD8, 0x29, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF1, 0x44, 0x9A, 0xFF, 0x69, +0x30, 0xF0, 0x20, 0x68, 0x40, 0xA2, 0x00, 0x6C, +0xFF, 0x6D, 0x4C, 0xE9, 0xA0, 0xF2, 0x50, 0x98, +0x1D, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x72, +0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF3, 0x96, 0xA3, 0xA0, 0xF2, +0x54, 0x9A, 0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, +0x40, 0xEA, 0xA0, 0xF2, 0x50, 0x98, 0x00, 0x6C, +0xB1, 0x67, 0x1E, 0x6E, 0x40, 0xEA, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0x54, 0x9A, 0xA3, 0xF2, 0x70, 0x9B, -0x49, 0xE0, 0x6D, 0xE0, 0x80, 0xA2, 0xA0, 0xA3, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x7C, 0x9B, -0xFF, 0x6A, 0x4C, 0xEC, 0x6D, 0xE0, 0xC0, 0xA3, -0x4C, 0xED, 0x4C, 0xEE, 0x80, 0x18, 0xC3, 0x06, -0x06, 0x95, 0x87, 0x40, 0x29, 0x4C, 0x22, 0x67, -0x80, 0x18, 0x79, 0x0D, 0x04, 0x94, 0x30, 0x2C, -0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x8C, 0x9C, 0x30, 0xF0, 0x20, 0x6D, -0xE3, 0xF2, 0x48, 0x9A, 0x03, 0xF3, 0xA0, 0x9D, -0x0D, 0x93, 0x91, 0xE0, 0x49, 0xE0, 0x31, 0xE4, -0xB5, 0xE0, 0xC0, 0xA3, 0xC0, 0xC2, 0xC0, 0xA3, -0x01, 0x4A, 0xAA, 0xEA, 0xC0, 0xC4, 0x01, 0x4B, -0x01, 0x4C, 0xF7, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x4C, 0x9A, 0x41, 0xE0, 0x21, 0xE0, -0x00, 0x6A, 0x0C, 0x95, 0x4D, 0xE5, 0x60, 0xA3, -0x60, 0xC0, 0x0E, 0x95, 0x68, 0x40, 0xFE, 0x4B, -0x51, 0xE5, 0x80, 0xA4, 0x01, 0x4A, 0x04, 0x72, -0x80, 0xC3, 0x01, 0x48, 0xF2, 0x61, 0x2D, 0x10, -0x04, 0x92, 0x01, 0x72, 0x2A, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF2, 0x88, 0x9B, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF3, 0x6C, 0x9B, 0x30, 0xF0, -0x20, 0x6A, 0x4B, 0xF3, 0x18, 0x4A, 0x6D, 0xE0, -0x91, 0xE0, 0x2D, 0xE3, 0xA6, 0x42, 0xC0, 0xA2, -0xC0, 0xC4, 0xCA, 0xA2, 0x01, 0x4A, 0xAA, 0xEA, -0xC0, 0xC3, 0x01, 0x4C, 0x01, 0x4B, 0xF7, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x6C, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF3, 0x08, 0x4A, -0x61, 0xE0, 0x21, 0xE0, 0x64, 0x42, 0x80, 0xA2, -0x01, 0x4A, 0x6A, 0xEA, 0x80, 0xC0, 0x01, 0x48, -0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0x7C, 0xA2, 0x02, 0x73, -0x05, 0x61, 0x00, 0xF1, 0x84, 0xA2, 0xB1, 0x67, -0x80, 0x18, 0x1D, 0x0A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF3, 0x7C, 0x9A, 0xFF, 0x68, 0x10, 0x6C, -0x40, 0xA3, 0x34, 0x6E, 0x0C, 0xEA, 0x8D, 0xEA, -0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x05, 0x95, 0x00, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x54, 0x9A, 0x40, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x60, 0x9A, 0x20, 0x6C, -0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, -0x40, 0xC3, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA0, 0xF0, 0x8F, 0xA2, +0xA0, 0xF2, 0x54, 0x9A, 0x08, 0xF3, 0x96, 0xA3, +0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC3, 0xF3, 0x6B, 0xA2, 0x06, 0x2B, 0xC0, 0xF0, +0xA7, 0xA2, 0x01, 0x6C, 0xB6, 0x35, 0x00, 0x18, +0xF1, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x54, 0x9A, 0x40, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF2, 0x60, 0x9A, 0xFF, 0x6C, +0x20, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x0F, 0x97, 0x0E, 0x91, +0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0xF7, 0x1F, 0x69, 0x8C, 0xE9, 0xFF, 0x68, +0xAC, 0xE8, 0x80, 0x18, 0x00, 0x00, 0x91, 0x67, +0x80, 0x18, 0x5F, 0x41, 0x91, 0x67, 0xB0, 0x67, +0x80, 0x18, 0x42, 0x01, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x78, 0x9A, +0x0A, 0xD4, 0x0B, 0xD5, 0x40, 0xA3, 0xFF, 0x6C, +0x19, 0x6D, 0x8C, 0xEA, 0xAB, 0xED, 0xAC, 0xEA, +0x08, 0x6D, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x69, 0x80, 0xF2, 0x48, 0x99, +0x30, 0xF0, 0x20, 0x68, 0x4C, 0xF6, 0x0E, 0x48, +0x90, 0x67, 0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, +0x80, 0xF2, 0x48, 0x99, 0x00, 0x6D, 0xEF, 0x6E, +0x84, 0x40, 0x40, 0xEA, 0x0A, 0x91, 0x0B, 0x92, +0x30, 0xF0, 0x20, 0x68, 0x08, 0x49, 0x45, 0xE1, +0xC0, 0xF3, 0x40, 0x98, 0x81, 0x41, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x24, 0xF4, 0x5F, 0xC3, 0xC0, 0xF3, 0x40, 0x98, +0x04, 0xD3, 0x84, 0x41, 0x40, 0xEA, 0x04, 0x94, +0x44, 0xF4, 0x42, 0xC4, 0xC0, 0xF3, 0x40, 0x98, +0x85, 0x41, 0x40, 0xEA, 0x04, 0x93, 0x86, 0x41, +0x44, 0xF4, 0x43, 0xC3, 0xC0, 0xF3, 0x40, 0x98, +0x40, 0xEA, 0x04, 0x94, 0x44, 0xF4, 0x44, 0xC4, +0xC0, 0xF3, 0x40, 0x98, 0x87, 0x41, 0x40, 0xEA, +0x04, 0x93, 0x87, 0x41, 0x01, 0x4C, 0x44, 0xF4, +0x45, 0xC3, 0xC0, 0xF3, 0x40, 0x98, 0x30, 0xF0, +0x20, 0x68, 0x4C, 0xF6, 0x17, 0x48, 0x40, 0xEA, +0x04, 0x94, 0x30, 0xF0, 0x20, 0x6B, 0x4C, 0xF6, +0x1F, 0x4B, 0x44, 0xF4, 0x46, 0xC4, 0x47, 0x41, +0x02, 0x4A, 0x05, 0xD2, 0x04, 0xD3, 0x30, 0xF0, +0x20, 0x6A, 0x05, 0x94, 0xC0, 0xF3, 0x40, 0x9A, +0x40, 0xEA, 0x40, 0xC0, 0x05, 0x94, 0x04, 0x92, +0x01, 0x48, 0x01, 0x4C, 0x4A, 0xE8, 0x05, 0xD4, +0xF2, 0x61, 0x67, 0x41, 0x2A, 0x4B, 0x30, 0xF0, +0x20, 0x68, 0x04, 0xD3, 0x6C, 0xF6, 0x1F, 0x48, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, +0x04, 0x94, 0x40, 0xEA, 0x40, 0xC0, 0x04, 0x92, +0x30, 0xF0, 0x20, 0x6B, 0x01, 0x48, 0x8C, 0xF6, +0x0F, 0x4B, 0x01, 0x4A, 0x6A, 0xE8, 0x04, 0xD2, +0xEF, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0xA4, 0xF3, 0x9C, 0xA0, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, 0x51, 0x4C, +0x31, 0xE4, 0x40, 0xEA, 0xA4, 0xF3, 0x9C, 0xA0, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x4F, 0xC0, +0xC0, 0xF3, 0x40, 0x9B, 0x52, 0x4C, 0x31, 0xE4, +0x40, 0xEA, 0xA4, 0xF4, 0x50, 0xC0, 0xA4, 0xF4, +0x4F, 0xA0, 0x40, 0x32, 0x05, 0xD2, 0x05, 0x94, +0xA4, 0xF4, 0x50, 0xA0, 0x00, 0x68, 0x4D, 0xEC, +0x05, 0xD4, 0x16, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA4, 0xF3, 0x9C, 0xA2, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x53, 0x4C, +0xC0, 0xF3, 0x40, 0x9A, 0x31, 0xE4, 0x11, 0xE4, +0x40, 0xEA, 0x04, 0x94, 0x8D, 0xE0, 0xA4, 0xF4, +0x51, 0xC3, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x05, 0x92, 0x43, 0xE8, 0xE7, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x44, 0xF4, +0x63, 0xA2, 0x44, 0xF4, 0x84, 0xA2, 0x60, 0x33, +0x8D, 0xEB, 0x08, 0x6C, 0x6C, 0xEC, 0x0A, 0x24, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, +0x03, 0x6B, 0x01, 0x6C, 0x60, 0xC2, 0x80, 0x18, +0x53, 0x06, 0x1D, 0x10, 0x07, 0x6C, 0x6C, 0xEC, +0x6F, 0x44, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEB, +0x02, 0x5B, 0x04, 0x61, 0x14, 0x2C, 0x00, 0xF1, +0x57, 0xA2, 0x11, 0x22, 0x00, 0x6D, 0x80, 0x18, +0x48, 0x02, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, +0x78, 0x9A, 0xFF, 0x6C, 0x19, 0x6D, 0x40, 0xA3, +0xAB, 0xED, 0x8C, 0xEA, 0xAC, 0xEA, 0x10, 0x6D, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x00, 0x6A, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA0, 0xF0, 0x8F, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x05, 0x6C, 0x8B, 0xEC, 0x8C, 0xEB, 0xA0, 0xF0, 0x6F, 0xC2, 0x0A, 0x6B, 0xA0, 0xF0, 0x70, 0xC2, 0x00, 0x6B, -0x05, 0xF3, 0x70, 0xC2, 0x05, 0xF3, 0x71, 0xC2, -0x05, 0xF3, 0x72, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, +0x45, 0xF1, 0x70, 0xC2, 0x45, 0xF1, 0x71, 0xC2, +0x45, 0xF1, 0x72, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xA0, 0xA4, 0xA0, 0xF0, 0xEF, 0xA2, 0x02, 0x6B, 0x01, 0x6E, 0x6B, 0xEB, 0xCC, 0xED, 0xEC, 0xEB, 0xAD, 0xEB, 0xA3, 0x67, 0xCC, 0xED, 0xA0, 0xF0, 0x6F, 0xC2, 0x19, 0x25, 0xA0, 0xA4, 0x07, 0x6F, -0xAE, 0x35, 0xEC, 0xED, 0x05, 0xF3, 0xB0, 0xC2, +0xAE, 0x35, 0xEC, 0xED, 0x45, 0xF1, 0xB0, 0xC2, 0xA0, 0xA4, 0xAA, 0x35, 0xCC, 0xED, 0xA8, 0x36, 0x05, 0x6D, 0xAB, 0xED, 0x6C, 0xED, 0xCD, 0xED, 0xA0, 0xF0, 0xAF, 0xC2, 0xA0, 0xA4, 0x02, 0x6B, @@ -62529,18 +63601,18 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x61, 0xA4, 0xA0, 0xF0, 0x70, 0xC2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xAC, 0xF1, 0x13, 0x4C, 0x00, 0x6D, 0x05, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x08, 0x6B, 0xA0, 0xF0, 0x77, 0xC2, +0x6D, 0xF3, 0x03, 0x4C, 0x00, 0x6D, 0x05, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x08, 0x6B, 0xA0, 0xF0, 0x77, 0xC2, 0x03, 0x6B, 0xA0, 0xF0, 0x78, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x04, 0x67, 0x80, 0x18, 0xD4, 0x05, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, +0x04, 0xD0, 0x04, 0x67, 0x80, 0x18, 0xFA, 0x02, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x80, 0xA0, 0xA0, 0xF0, 0xD6, 0xA2, 0x02, 0x6B, 0x01, 0x6D, 0x6B, 0xEB, 0xAC, 0xEC, 0xCC, 0xEB, 0x8D, 0xEB, 0x83, 0x67, 0xAC, 0xEC, 0xA0, 0xF0, 0x76, 0xC2, 0x29, 0x24, 0x80, 0xA0, 0x07, 0x6E, -0x92, 0x34, 0xCC, 0xEC, 0x05, 0xF3, 0x97, 0xC2, +0x92, 0x34, 0xCC, 0xEC, 0x45, 0xF1, 0x97, 0xC2, 0xC0, 0xA0, 0x02, 0x6C, 0xCC, 0xEC, 0xFF, 0x6E, 0xCC, 0xEC, 0x1D, 0x24, 0x81, 0xA0, 0xA0, 0xF0, 0x97, 0xC2, 0x82, 0xA0, 0xA0, 0xF0, 0x98, 0xC2, @@ -62554,18 +63626,18 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0xEC, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF2, -0x4C, 0x9B, 0xCB, 0xF3, 0x1C, 0x48, 0x26, 0x67, +0x4C, 0x9B, 0xEC, 0xF7, 0x0C, 0x48, 0x26, 0x67, 0x0A, 0xD4, 0x10, 0x6E, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x0A, 0x95, 0x80, 0xF2, 0x4C, 0x9C, 0x87, 0x40, 0x09, 0x4C, 0x10, 0x6E, 0x40, 0xEA, 0x00, 0xF6, 0x22, 0x34, 0x00, 0xF6, 0x20, 0x32, 0x8D, 0xEA, 0x1F, 0xF7, 0x00, 0x6D, 0x22, 0x34, 0xAC, 0xEC, 0x8D, 0xEA, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF3, 0x90, 0x9C, 0x20, 0x31, -0x30, 0xF0, 0x20, 0x6B, 0x8C, 0xE9, 0xA6, 0xF6, -0x00, 0x4B, 0x2D, 0xEA, 0x44, 0xF5, 0x5C, 0xDB, +0x20, 0x6C, 0x24, 0xF2, 0x84, 0x9C, 0x20, 0x31, +0x30, 0xF0, 0x20, 0x6B, 0x8C, 0xE9, 0x08, 0xF2, +0x10, 0x4B, 0x2D, 0xEA, 0xE4, 0xF5, 0x5C, 0xDB, 0x5D, 0x67, 0x87, 0x42, 0x09, 0x4C, 0x40, 0xA4, -0x64, 0xF5, 0x43, 0xC3, 0x09, 0x97, 0x08, 0x91, +0x04, 0xF6, 0x43, 0xC3, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x00, 0xF0, 0x16, 0x02, 0x04, 0x44, 0x04, 0x01, @@ -62577,7 +63649,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x01, 0x4A, 0x8A, 0xEA, 0x01, 0x4B, 0xF6, 0x61, 0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xCB, 0xF1, 0x05, 0x4A, 0x04, 0x03, 0x86, 0x42, +0x8C, 0xF5, 0x0D, 0x4A, 0x04, 0x03, 0x86, 0x42, 0xE9, 0x17, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x07, 0x44, 0x00, 0xF0, 0x16, 0x02, 0x09, 0x48, 0x04, 0x01, 0x06, 0xD2, @@ -62588,11 +63660,14 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x02, 0x25, 0x00, 0x6A, 0x05, 0x10, 0x01, 0x4A, 0x8A, 0xEA, 0x01, 0x4B, 0xF6, 0x61, 0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, -0x0B, 0x4A, 0x04, 0x03, 0x86, 0x42, 0xE9, 0x17, +0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xF5, +0x13, 0x4A, 0x04, 0x03, 0x86, 0x42, 0xE9, 0x17, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x08, 0x4C, 0xC0, 0xF3, -0x40, 0x98, 0xA5, 0xE4, 0x81, 0x41, 0x40, 0xEA, +0x40, 0x98, 0xA5, 0xE4, 0x8E, 0x41, 0x40, 0xEA, +0x88, 0x72, 0x1B, 0x61, 0xC0, 0xF3, 0x40, 0x98, +0x8F, 0x41, 0x40, 0xEA, 0x8E, 0x72, 0x15, 0x61, +0xC0, 0xF3, 0x40, 0x98, 0x81, 0x41, 0x40, 0xEA, 0x10, 0x2A, 0xC0, 0xF3, 0x40, 0x98, 0x84, 0x41, 0x40, 0xEA, 0x01, 0x72, 0x0A, 0x61, 0xC0, 0xF3, 0x40, 0x98, 0x87, 0x41, 0x01, 0x4C, 0x40, 0xEA, @@ -62608,26 +63683,26 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x90, 0x67, 0x01, 0x48, 0x40, 0xEA, 0x40, 0xC1, 0x06, 0x92, 0x01, 0x49, 0x4A, 0xE9, 0xF4, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x5D, 0x67, 0xA6, 0xF6, 0x00, 0x4B, -0x90, 0xA2, 0xA4, 0xF4, 0x5E, 0xA3, 0x8E, 0xEA, -0x14, 0x2A, 0x5D, 0x67, 0x91, 0xA2, 0xA4, 0xF4, +0x20, 0x6B, 0x5D, 0x67, 0x08, 0xF2, 0x10, 0x4B, +0x90, 0xA2, 0x44, 0xF5, 0x5E, 0xA3, 0x8E, 0xEA, +0x14, 0x2A, 0x5D, 0x67, 0x91, 0xA2, 0x44, 0xF5, 0x5F, 0xA3, 0x8E, 0xEA, 0x0E, 0x2A, 0x5D, 0x67, -0x92, 0xA2, 0xC4, 0xF4, 0x40, 0xA3, 0x8E, 0xEA, -0x08, 0x2A, 0x5D, 0x67, 0x93, 0xA2, 0xC4, 0xF4, +0x92, 0xA2, 0x64, 0xF5, 0x40, 0xA3, 0x8E, 0xEA, +0x08, 0x2A, 0x5D, 0x67, 0x93, 0xA2, 0x64, 0xF5, 0x41, 0xA3, 0x8E, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x01, 0x10, 0x00, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x04, 0x67, 0x25, 0x67, 0x80, 0x18, 0x24, 0x06, +0x04, 0x67, 0x25, 0x67, 0x80, 0x18, 0x4A, 0x03, 0x00, 0x6B, 0x08, 0x22, 0x90, 0x67, 0xB1, 0x67, -0x80, 0x18, 0x64, 0x06, 0x4B, 0xEB, 0x4D, 0xEB, +0x80, 0x18, 0x90, 0x03, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x43, 0x67, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x24, 0x67, 0x05, 0x67, 0x80, 0x18, 0x24, 0x06, +0x24, 0x67, 0x05, 0x67, 0x80, 0x18, 0x4A, 0x03, 0x2E, 0x22, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, -0x64, 0x06, 0x29, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF7, 0x76, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, +0x90, 0x03, 0x29, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF3, 0x66, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, 0x22, 0x22, 0x08, 0x49, 0x05, 0xE1, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, 0x87, 0x41, 0x02, 0x4C, 0x40, 0xEA, 0x06, 0x72, 0x17, 0x61, @@ -62639,28 +63714,28 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x03, 0x23, 0x01, 0x6B, 0x01, 0x10, 0x00, 0x6B, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x43, 0x67, 0x04, 0x63, 0x00, 0xEF, 0x01, 0x6A, 0x8C, 0xEA, -0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0x7C, 0xA2, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE0, 0xF0, 0x7D, 0xA2, 0x84, 0xF5, 0x75, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF4, 0x75, 0xA2, -0x00, 0x6A, 0x07, 0x5B, 0x06, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF5, 0x04, 0x4A, 0x4D, 0xE3, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE0, 0xF0, 0x7C, 0xA2, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xE0, 0xF0, 0x7D, 0xA2, 0x24, 0xF6, 0x75, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x4D, 0xF0, 0x65, 0xA2, +0x00, 0x6A, 0x18, 0x5B, 0x06, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF3, 0x04, 0x4A, 0x4D, 0xE3, 0x40, 0xA3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0x64, 0x67, 0x4C, 0xEB, 0x86, 0x67, 0x4C, 0xED, 0x4C, 0xEC, 0x7E, 0x32, 0x04, 0x22, 0x0C, 0x6F, 0x6C, 0xEF, 0x02, 0x68, 0x01, 0x2F, 0x00, 0x68, 0x40, 0x6B, 0xAC, 0xEB, -0x00, 0x6A, 0x02, 0x23, 0x80, 0x18, 0xB3, 0x06, +0x00, 0x6A, 0x02, 0x23, 0x80, 0x18, 0xDF, 0x03, 0x18, 0x48, 0x09, 0xE2, 0x05, 0x97, 0x04, 0x90, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEE, 0x4C, 0xED, 0x30, 0xF0, -0x20, 0x6A, 0xCB, 0xF1, 0x1B, 0x4A, 0x67, 0x42, +0x20, 0x6A, 0xAC, 0xF5, 0x04, 0x4A, 0x67, 0x42, 0x05, 0xD6, 0x01, 0x4B, 0x00, 0x6E, 0xC0, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFB, 0x61, 0x05, 0x92, 0x91, 0xE5, 0x30, 0xF0, 0x20, 0x68, 0x53, 0xE4, -0x04, 0xD4, 0xCB, 0xF1, 0x1B, 0x48, 0x00, 0x69, +0x04, 0xD4, 0xAC, 0xF5, 0x04, 0x48, 0x00, 0x69, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x04, 0x94, 0x01, 0x49, 0x40, 0xEA, 0x40, 0xC0, 0xFF, 0x6A, 0x4C, 0xE9, 0x04, 0x92, @@ -62668,432 +63743,394 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x43, 0xE9, 0xEF, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xCB, 0xF1, 0xC4, 0xA3, 0x01, 0x6B, 0xFF, 0x6A, +0x8C, 0xF5, 0xCC, 0xA3, 0x01, 0x6B, 0xFF, 0x6A, 0xCC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEC, 0x4C, 0xED, 0x01, 0x6A, 0x45, 0x2B, 0x02, 0x6A, 0xAC, 0xEA, -0x12, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x74, 0x9A, 0x10, 0xF0, 0x00, 0x6E, 0x40, 0x9B, +0x12, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, +0x68, 0x9A, 0x10, 0xF0, 0x00, 0x6E, 0x40, 0x9B, 0xCC, 0xEA, 0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0xC0, 0xDB, 0x23, 0x6B, +0x44, 0xF1, 0x50, 0x9A, 0xC0, 0xDB, 0x23, 0x6B, 0x60, 0xC2, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x01, 0x6B, 0xAC, 0xEB, 0x2C, 0x23, 0x40, 0x6B, 0x8C, 0xEB, 0x0C, 0x23, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0x22, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x58, 0x9A, +0x44, 0xF1, 0x50, 0x9A, 0x22, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, 0x4C, 0x9A, 0x80, 0xC2, 0x01, 0x6A, 0x9E, 0x33, 0x0C, 0x23, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, 0x21, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x58, 0x9A, 0x80, 0xC2, 0x01, 0x6A, +0x24, 0xF2, 0x4C, 0x9A, 0x80, 0xC2, 0x01, 0x6A, 0x20, 0x6B, 0x8C, 0xEB, 0x0C, 0x23, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x23, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x58, 0x9A, 0x80, 0xC2, 0x01, 0x6A, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x86, 0xF7, 0xAE, 0xA3, -0x80, 0x6B, 0x6B, 0xEB, 0xFF, 0x6A, 0xAC, 0xEB, -0x4C, 0xEB, 0x4C, 0xEC, 0x14, 0x23, 0xA0, 0x74, -0x04, 0x6B, 0x01, 0x60, 0x08, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x24, 0xF3, 0x84, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, -0x24, 0xF3, 0x64, 0xC2, 0x20, 0xE8, 0xA0, 0x74, -0x4E, 0x6B, 0x01, 0x60, 0x4D, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x6B, 0xEB, -0x60, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x24, 0xF3, 0xA4, 0xA3, -0x01, 0x6C, 0x44, 0x67, 0x8C, 0xED, 0x04, 0x25, -0xE0, 0xF0, 0x4E, 0xA3, 0x52, 0x32, 0x8C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF7, -0x1F, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x7C, 0x9A, 0xDF, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x20, 0xF1, 0x9B, 0xA2, -0x40, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x20, 0xF1, -0x7B, 0xC2, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0xD1, -0x0A, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, -0x6C, 0x9A, 0x22, 0xF5, 0x0C, 0x4A, 0x9D, 0x67, -0x00, 0xD3, 0x61, 0x9A, 0x44, 0xAA, 0x01, 0xD3, -0x7D, 0x67, 0x44, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF5, 0x60, 0x9A, 0x22, 0xF5, 0x00, 0x4A, -0x03, 0xD3, 0x61, 0x9A, 0x44, 0xAA, 0x04, 0xD3, -0x4A, 0xCC, 0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF7, -0x67, 0xA2, 0x64, 0x32, 0x49, 0xE4, 0x00, 0xAA, -0x46, 0xAA, 0xE3, 0x67, 0xC3, 0x67, 0x1A, 0x65, -0x08, 0xD3, 0x07, 0xD3, 0x06, 0xD3, 0x00, 0x6A, -0x11, 0xE2, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, -0x02, 0xF0, 0x00, 0x69, 0x2E, 0xEC, 0x07, 0x24, -0x64, 0x34, 0x3D, 0x67, 0x91, 0xE1, 0x80, 0xAC, -0x91, 0xE2, 0xAC, 0xEC, 0x0B, 0x2C, 0xBD, 0x67, -0xC4, 0x34, 0x91, 0xE5, 0xA0, 0xAC, 0x30, 0xF0, -0x20, 0x6C, 0x22, 0x67, 0xB5, 0xE2, 0x43, 0xF1, -0x9C, 0x9C, 0x0A, 0x10, 0xBD, 0x67, 0xE4, 0x34, -0x91, 0xE5, 0xA0, 0xAC, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF1, 0x80, 0x9C, 0x22, 0x67, 0xB5, 0xE2, -0x91, 0xE5, 0xA0, 0xA4, 0xFF, 0x6C, 0xAC, 0xEC, -0x30, 0xF0, 0x20, 0x6D, 0xA6, 0xF6, 0x00, 0x4D, -0xB5, 0xE1, 0x38, 0x67, 0x24, 0xF3, 0x8B, 0xC5, -0x31, 0xE2, 0x1F, 0xF7, 0x00, 0x6D, 0xAC, 0xEC, -0x02, 0xF0, 0x00, 0x69, 0x2E, 0xEC, 0x08, 0x24, -0x08, 0x91, 0x24, 0x34, 0x3D, 0x67, 0x91, 0xE1, -0x86, 0xAC, 0x91, 0xE2, 0xAC, 0xEC, 0x0C, 0x2C, -0x06, 0x95, 0x22, 0x67, 0xA4, 0x34, 0xBD, 0x67, -0x91, 0xE5, 0xA6, 0xAC, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF1, 0x9C, 0x9C, 0xB5, 0xE2, 0x0B, 0x10, -0x07, 0x95, 0x22, 0x67, 0xA4, 0x34, 0xBD, 0x67, -0x91, 0xE5, 0xA6, 0xAC, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF1, 0x80, 0x9C, 0xB5, 0xE2, 0x91, 0xE5, -0xA0, 0xA4, 0xFF, 0x6C, 0x01, 0x4A, 0xAC, 0xEC, -0x30, 0xF0, 0x20, 0x6D, 0xA6, 0xF6, 0x00, 0x4D, -0xB5, 0xE1, 0x24, 0xF3, 0x85, 0xC5, 0x06, 0x6C, -0x4E, 0xEC, 0x9A, 0x2C, 0x0B, 0x91, 0x0A, 0x90, -0x06, 0x63, 0x20, 0xE8, 0x60, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, -0x7C, 0xC2, 0x61, 0xA4, 0xE0, 0xF0, 0x7D, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF7, -0x03, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF7, -0x0A, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x61, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x00, 0xF1, -0x72, 0xC2, 0x62, 0xA4, 0x00, 0xF1, 0x73, 0xC2, -0x64, 0xA4, 0x00, 0xF1, 0x75, 0xC2, 0x20, 0xE8, +0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, 0x23, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, +0x4C, 0x9A, 0x80, 0xC2, 0x01, 0x6A, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x64, 0xF3, 0xBC, 0xA3, 0x01, 0x6C, 0x44, 0x67, +0x8C, 0xED, 0x04, 0x25, 0xE0, 0xF0, 0x4E, 0xA3, +0x52, 0x32, 0x8C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0xC6, 0xF7, 0x06, 0x4C, 0x04, 0x6E, +0x20, 0x6C, 0x28, 0xF3, 0x0F, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0xC3, 0xF3, 0x8C, 0xA3, -0x01, 0x6A, 0x8C, 0xEA, 0x1B, 0x22, 0xE0, 0xF0, -0x92, 0xA3, 0x08, 0x6A, 0x8C, 0xEA, 0xFF, 0x6C, -0x8C, 0xEA, 0x0A, 0x22, 0xE0, 0xF0, 0xD3, 0xA3, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, -0x5D, 0x4C, 0x00, 0x6D, 0xC0, 0x36, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, -0xE0, 0xF0, 0xD3, 0xA3, 0xFF, 0x6C, 0x5D, 0x4C, -0x00, 0x6D, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFE, 0x63, 0x03, 0xD1, -0x02, 0xD0, 0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x6A, -0x0C, 0xED, 0xCC, 0xEA, 0xEC, 0xE8, 0x00, 0x6F, -0x04, 0xD4, 0x00, 0xD5, 0x01, 0x6C, 0x67, 0x67, -0xC2, 0x67, 0x41, 0x47, 0xB0, 0x67, 0xA7, 0xEA, -0x45, 0x67, 0x01, 0x6D, 0xAC, 0xEA, 0x0F, 0x22, -0x02, 0x6A, 0x06, 0x10, 0xFF, 0xF7, 0x1F, 0x69, -0x44, 0x32, 0x01, 0x4D, 0x2C, 0xEA, 0x2C, 0xED, -0x83, 0xED, 0xF8, 0x61, 0x4C, 0x32, 0x4D, 0xE3, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, 0x01, 0x4C, -0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEC, 0x08, 0x74, -0x01, 0x4F, 0xE3, 0x61, 0x63, 0xEE, 0x46, 0x67, -0x15, 0x61, 0x00, 0x96, 0xCC, 0x34, 0xFF, 0x4C, -0x91, 0xE3, 0xAC, 0xEC, 0x43, 0xEC, 0x0E, 0x61, -0x6B, 0xE2, 0x08, 0x6C, 0x9A, 0xEA, 0x01, 0x2C, -0xE5, 0xE8, 0x04, 0x93, 0x12, 0xEA, 0x49, 0xE3, -0x40, 0xA2, 0x10, 0xED, 0x01, 0x6B, 0x47, 0xED, -0x6C, 0xEA, 0x01, 0x10, 0x00, 0x6A, 0x03, 0x91, -0x02, 0x90, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, -0xD8, 0x63, 0x4F, 0x62, 0x4E, 0xD1, 0x4D, 0xD0, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, 0x74, 0x9A, -0x02, 0xF5, 0x14, 0x4A, 0x48, 0xD4, 0x04, 0xD3, -0x61, 0x9A, 0x44, 0xAA, 0x4A, 0xD5, 0x05, 0xD3, -0x7D, 0x67, 0x4C, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x44, 0xF3, 0x90, 0xA2, -0x03, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x44, 0xF3, -0x70, 0xC2, 0x24, 0x68, 0x00, 0x69, 0x48, 0x94, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, -0x01, 0x4C, 0x11, 0xE4, 0x40, 0xEA, 0x49, 0xD2, -0x02, 0x2A, 0x02, 0x6A, 0x33, 0x11, 0x30, 0xF0, -0x20, 0x6C, 0x48, 0x93, 0xC0, 0xF3, 0x40, 0x9C, -0x71, 0xE0, 0x40, 0xEA, 0x05, 0x72, 0x06, 0x61, -0x49, 0x94, 0x01, 0x6B, 0x03, 0x6A, 0x04, 0x5C, -0x13, 0x60, 0x24, 0x11, 0x49, 0x92, 0x01, 0x49, -0x02, 0x4A, 0x41, 0xE0, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE8, 0x4C, 0xE9, 0x4A, 0x92, 0xFC, 0x4A, -0x42, 0xE8, 0x02, 0x61, 0x00, 0x6B, 0x04, 0x10, -0xE0, 0xF1, 0x14, 0x71, 0xD4, 0x61, 0x0F, 0x11, -0xE0, 0xF1, 0x14, 0x71, 0x00, 0xF1, 0x0B, 0x60, -0x00, 0xF1, 0x0B, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x44, 0xF3, 0x90, 0xA3, -0x09, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x05, 0x6C, -0x8B, 0xEC, 0x8C, 0xEA, 0x44, 0xF3, 0x50, 0xC3, -0x48, 0x94, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, -0x40, 0x99, 0x02, 0x4C, 0x11, 0xE4, 0x40, 0xEA, -0x48, 0x94, 0x7D, 0x67, 0x5C, 0xC3, 0xC0, 0xF3, -0x40, 0x99, 0x03, 0x4C, 0x11, 0xE4, 0x40, 0xEA, -0x9D, 0x67, 0x5D, 0xC4, 0x48, 0x94, 0xC0, 0xF3, -0x40, 0x99, 0x00, 0x69, 0x04, 0x4C, 0x11, 0xE4, -0x40, 0xEA, 0x7D, 0x67, 0x5E, 0xC3, 0x10, 0x10, -0x48, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x40, 0x9A, 0x05, 0x4C, 0x11, 0xE4, 0x31, 0xE4, -0x40, 0xEA, 0x9D, 0x67, 0x2D, 0xE4, 0x5F, 0xC3, -0x01, 0x49, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, -0x49, 0x92, 0xFD, 0x4A, 0x42, 0xE9, 0xEC, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF7, 0x47, 0xA2, -0x7D, 0x67, 0x44, 0x32, 0x49, 0xE3, 0x68, 0xAA, -0x1F, 0xF7, 0x00, 0x6A, 0x6C, 0xEA, 0x02, 0xF0, -0x00, 0x72, 0x01, 0x60, 0x0F, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x86, 0xF7, 0x47, 0xA2, 0x9D, 0x67, -0x44, 0x32, 0x49, 0xE4, 0x68, 0xAA, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, 0x49, 0xE3, -0x60, 0xAA, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x40, 0x9A, 0x4D, 0xE3, 0x60, 0xAB, -0xFF, 0xF7, 0x1F, 0x6A, 0x9D, 0x67, 0x6C, 0xEA, -0x7C, 0xA4, 0x0E, 0x2B, 0x7E, 0xA4, 0x01, 0x6C, -0x8C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x44, 0xF3, 0xB0, 0xA3, -0x08, 0x6C, 0xAD, 0xEC, 0x44, 0xF3, 0x90, 0xC3, -0x49, 0x95, 0xE0, 0xF7, 0x1F, 0x6E, 0x4C, 0xEE, -0x5D, 0x67, 0xFE, 0xA2, 0xFD, 0x4D, 0xFF, 0x6B, -0x00, 0xF0, 0x1F, 0x04, 0x6C, 0xED, 0x80, 0x18, -0xC9, 0x07, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x44, 0xF3, 0x90, 0xA2, -0x04, 0x6B, 0x8D, 0xEB, 0x44, 0xF3, 0x70, 0xC2, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x44, 0xF3, 0x70, 0xA0, 0x0C, 0x6A, 0x6C, 0xEA, -0x10, 0x2A, 0xC3, 0xF3, 0x71, 0xA0, 0xFE, 0x4A, -0xE0, 0xF0, 0x87, 0xA0, 0x6C, 0xEA, 0x05, 0x6B, -0x6B, 0xEB, 0x6C, 0xEA, 0x02, 0x4B, 0x6C, 0xEA, -0xC3, 0xF3, 0x51, 0xC0, 0x00, 0x18, 0x50, 0xCE, -0x64, 0x10, 0x08, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, -0x6C, 0xEA, 0x16, 0x22, 0xC3, 0xF3, 0x51, 0xA0, -0x02, 0x69, 0xC0, 0xF0, 0xCC, 0xA0, 0x2D, 0xEA, -0xC3, 0xF3, 0x51, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x48, 0x9A, 0xFF, 0x6C, 0x55, 0x4C, -0x00, 0x6D, 0x40, 0xEA, 0xC3, 0xF3, 0x4C, 0xA0, -0x4D, 0xE9, 0xC3, 0xF3, 0x2C, 0xC0, 0x07, 0x10, -0xC3, 0xF3, 0x71, 0xA0, 0x03, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0xC3, 0xF3, 0x51, 0xC0, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0x44, 0xF3, -0x90, 0xA0, 0x04, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, -0x2B, 0x22, 0x08, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, -0x08, 0x2A, 0x07, 0x6C, 0x00, 0x18, 0xAC, 0xDF, -0xE0, 0xF0, 0x87, 0xA0, 0x00, 0x18, 0x3C, 0xCE, -0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF0, -0x84, 0x98, 0x83, 0xF2, 0x5C, 0x9A, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF2, 0x80, 0x9C, -0x8E, 0xEA, 0x07, 0x2A, 0xC0, 0xF0, 0x85, 0xA0, -0xF0, 0x4A, 0x8C, 0xEA, 0x6C, 0xEA, 0x10, 0x72, -0x18, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xC3, 0xF3, 0x91, 0xA2, 0x01, 0x6B, -0x8D, 0xEB, 0xC3, 0xF3, 0x71, 0xC2, 0x0D, 0x10, -0xC3, 0xF3, 0x71, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x05, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, -0xC3, 0xF3, 0x51, 0xC0, 0x02, 0x10, 0x01, 0x6A, -0x01, 0x10, 0x00, 0x6A, 0x4F, 0x97, 0x4E, 0x91, -0x4D, 0x90, 0x28, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, 0xB2, 0xA2, -0x02, 0x6C, 0xFF, 0x6B, 0xAC, 0xEC, 0x4F, 0x24, -0x05, 0xF3, 0x98, 0xA2, 0x08, 0x5C, 0x08, 0x61, -0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF3, 0xB4, 0x9D, -0xF8, 0x4C, 0xA0, 0xA5, 0xAC, 0xEB, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF3, 0xB8, 0x9D, -0xA0, 0xA5, 0xAC, 0xEB, 0x01, 0x6D, 0xA4, 0xEC, -0x6C, 0xED, 0x30, 0xF0, 0x20, 0x6B, 0x05, 0xF3, -0xBA, 0xC2, 0xA6, 0xF6, 0x00, 0x4B, 0xE0, 0xF0, -0xB4, 0xA3, 0x04, 0x6A, 0xFF, 0x6C, 0xAC, 0xEA, -0x04, 0x2A, 0x05, 0xF3, 0x5A, 0xA3, 0x10, 0x22, -0x03, 0x10, 0x05, 0xF3, 0x5A, 0xA3, 0x0C, 0x2A, -0x01, 0x6C, 0x00, 0x18, 0x6B, 0xD1, 0x30, 0xF0, -0x20, 0x6A, 0xFF, 0x6C, 0x00, 0xF3, 0x48, 0x9A, -0x5D, 0x4C, 0x00, 0x6D, 0x01, 0x6E, 0x1A, 0x10, -0xE0, 0xF0, 0xB2, 0xA3, 0x08, 0x6A, 0xAC, 0xEA, -0x8C, 0xEA, 0x0B, 0x22, 0xE0, 0xF0, 0xD3, 0xA3, -0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6C, 0x00, 0xF3, -0x48, 0x9A, 0x5D, 0x4C, 0x00, 0x6D, 0xC0, 0x36, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x48, 0x9A, 0xE0, 0xF0, 0xD3, 0xA3, 0xFF, 0x6C, -0x5D, 0x4C, 0x00, 0x6D, 0x40, 0xEA, 0x05, 0x97, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x74, 0x9A, +0xDF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x20, 0xF1, 0x94, 0xA2, 0x40, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x20, 0xF1, 0x74, 0xC2, 0x20, 0xE8, +0xFA, 0x63, 0x0B, 0xD1, 0x0A, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF2, 0x6C, 0x9A, 0xE2, 0xF2, +0x0C, 0x4A, 0x9D, 0x67, 0x00, 0xD3, 0x61, 0x9A, +0x44, 0xAA, 0x01, 0xD3, 0x7D, 0x67, 0x44, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x60, 0x9A, +0xE2, 0xF2, 0x00, 0x4A, 0x03, 0xD3, 0x61, 0x9A, +0x44, 0xAA, 0x04, 0xD3, 0x4A, 0xCC, 0x30, 0xF0, +0x20, 0x6A, 0xE8, 0xF2, 0x77, 0xA2, 0x64, 0x32, +0x49, 0xE4, 0x00, 0xAA, 0x46, 0xAA, 0xE3, 0x67, +0xC3, 0x67, 0x1A, 0x65, 0x08, 0xD3, 0x07, 0xD3, +0x06, 0xD3, 0x00, 0x6A, 0x11, 0xE2, 0x1F, 0xF7, +0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x69, +0x2E, 0xEC, 0x07, 0x24, 0x64, 0x34, 0x3D, 0x67, +0x91, 0xE1, 0x80, 0xAC, 0x91, 0xE2, 0xAC, 0xEC, +0x0B, 0x2C, 0xBD, 0x67, 0xC4, 0x34, 0x91, 0xE5, +0xA0, 0xAC, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0x67, +0xB5, 0xE2, 0x84, 0xF0, 0x90, 0x9C, 0x0A, 0x10, +0xBD, 0x67, 0xE4, 0x34, 0x91, 0xE5, 0xA0, 0xAC, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, 0x94, 0x9C, +0x22, 0x67, 0xB5, 0xE2, 0x91, 0xE5, 0xA0, 0xA4, +0xFF, 0x6C, 0xAC, 0xEC, 0x30, 0xF0, 0x20, 0x6D, +0x08, 0xF2, 0x10, 0x4D, 0xB5, 0xE1, 0x38, 0x67, +0x84, 0xF3, 0x83, 0xC5, 0x31, 0xE2, 0x1F, 0xF7, +0x00, 0x6D, 0xAC, 0xEC, 0x02, 0xF0, 0x00, 0x69, +0x2E, 0xEC, 0x08, 0x24, 0x08, 0x91, 0x24, 0x34, +0x3D, 0x67, 0x91, 0xE1, 0x86, 0xAC, 0x91, 0xE2, +0xAC, 0xEC, 0x0C, 0x2C, 0x06, 0x95, 0x22, 0x67, +0xA4, 0x34, 0xBD, 0x67, 0x91, 0xE5, 0xA6, 0xAC, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, 0x90, 0x9C, +0xB5, 0xE2, 0x0B, 0x10, 0x07, 0x95, 0x22, 0x67, +0xA4, 0x34, 0xBD, 0x67, 0x91, 0xE5, 0xA6, 0xAC, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, 0x94, 0x9C, +0xB5, 0xE2, 0x91, 0xE5, 0xA0, 0xA4, 0xFF, 0x6C, +0x01, 0x4A, 0xAC, 0xEC, 0x30, 0xF0, 0x20, 0x6D, +0x08, 0xF2, 0x10, 0x4D, 0xB5, 0xE1, 0x64, 0xF3, +0x9D, 0xC5, 0x06, 0x6C, 0x4E, 0xEC, 0x9A, 0x2C, +0x0B, 0x91, 0x0A, 0x90, 0x06, 0x63, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x84, 0xF3, 0x93, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, +0x84, 0xF3, 0x73, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE0, 0xF0, 0x7C, 0xC2, 0x61, 0xA4, +0xE0, 0xF0, 0x7D, 0xC2, 0x62, 0xA4, 0xE0, 0xF0, +0x7E, 0xC2, 0x63, 0xA4, 0xE0, 0xF0, 0x7F, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF3, +0x13, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0xB2, 0xA2, 0x02, 0x6C, -0xFF, 0x6B, 0xAC, 0xEC, 0x51, 0x24, 0x05, 0xF3, -0x98, 0xA2, 0x08, 0x5C, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6D, 0x83, 0xF3, 0xB4, 0x9D, 0xF8, 0x4C, -0xA0, 0xA5, 0xAC, 0xEB, 0x06, 0x10, 0x30, 0xF0, -0x20, 0x6D, 0x83, 0xF3, 0xB8, 0x9D, 0xA0, 0xA5, -0xAC, 0xEB, 0x01, 0x6D, 0xA4, 0xEC, 0x6C, 0xED, -0x30, 0xF0, 0x20, 0x68, 0x05, 0xF3, 0xBA, 0xC2, -0xA6, 0xF6, 0x00, 0x48, 0xE0, 0xF0, 0x94, 0xA0, -0x04, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x13, 0x2A, -0x05, 0xF3, 0x5A, 0xA0, 0x23, 0x2A, 0xE0, 0xF0, -0x92, 0xA0, 0x01, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, -0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, 0x6B, 0xD1, -0x30, 0xF0, 0x20, 0x6A, 0xAC, 0xF1, 0x98, 0xA2, -0x80, 0x18, 0x25, 0x3B, 0x24, 0x10, 0x05, 0xF3, -0x5A, 0xA0, 0x10, 0x22, 0xE0, 0xF0, 0x92, 0xA0, -0x01, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0x6B, 0xD1, 0x30, 0xF0, -0x20, 0x6A, 0xAC, 0xF1, 0x98, 0xA2, 0x80, 0x18, -0x1F, 0x3B, 0x11, 0x10, 0x05, 0xF3, 0x99, 0xA0, -0x01, 0x6D, 0x80, 0x18, 0x09, 0x3B, 0x05, 0xF3, -0x98, 0xA0, 0x80, 0x18, 0x14, 0x3B, 0x07, 0x10, -0x01, 0x6A, 0xAC, 0xEA, 0x6C, 0xEA, 0x03, 0x22, -0x00, 0x6C, 0x00, 0x18, 0x6B, 0xD1, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF3, +0x1A, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x61, 0xA4, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x00, 0xF1, +0x72, 0xC2, 0x62, 0xA4, 0x00, 0xF1, 0x73, 0xC2, +0x64, 0xA4, 0x00, 0xF1, 0x75, 0xC2, 0x65, 0xA4, +0x00, 0xF1, 0x76, 0xC2, 0x66, 0xA4, 0x00, 0xF1, +0x77, 0xC2, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x28, 0xF3, +0x16, 0x4C, 0x04, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x28, 0xF3, +0x1D, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0xC3, 0xF3, 0x88, 0xA3, 0x01, 0x6A, 0x8C, 0xEA, +0x1B, 0x22, 0xE0, 0xF0, 0x92, 0xA3, 0x08, 0x6A, +0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x0A, 0x22, +0xE0, 0xF0, 0xD3, 0xA3, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x48, 0x9A, 0x5D, 0x4C, 0x00, 0x6D, +0xC0, 0x36, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x48, 0x9A, 0xE0, 0xF0, 0xD3, 0xA3, +0xFF, 0x6C, 0x5D, 0x4C, 0x00, 0x6D, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFE, 0x63, 0x03, 0xD1, 0x02, 0xD0, 0xFF, 0x68, +0xFF, 0xF7, 0x1F, 0x6A, 0x0C, 0xED, 0xCC, 0xEA, +0xEC, 0xE8, 0x00, 0x6F, 0x04, 0xD4, 0x00, 0xD5, +0x01, 0x6C, 0x67, 0x67, 0xC2, 0x67, 0x41, 0x47, +0xB0, 0x67, 0xA7, 0xEA, 0x45, 0x67, 0x01, 0x6D, +0xAC, 0xEA, 0x0F, 0x22, 0x02, 0x6A, 0x06, 0x10, +0xFF, 0xF7, 0x1F, 0x69, 0x44, 0x32, 0x01, 0x4D, +0x2C, 0xEA, 0x2C, 0xED, 0x83, 0xED, 0xF8, 0x61, +0x4C, 0x32, 0x4D, 0xE3, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEB, 0x01, 0x4C, 0xFF, 0xF7, 0x1F, 0x6D, +0xAC, 0xEC, 0x08, 0x74, 0x01, 0x4F, 0xE3, 0x61, +0x63, 0xEE, 0x46, 0x67, 0x15, 0x61, 0x00, 0x96, +0xCC, 0x34, 0xFF, 0x4C, 0x91, 0xE3, 0xAC, 0xEC, +0x43, 0xEC, 0x0E, 0x61, 0x6B, 0xE2, 0x08, 0x6C, +0x9A, 0xEA, 0x01, 0x2C, 0xE5, 0xE8, 0x04, 0x93, +0x12, 0xEA, 0x49, 0xE3, 0x40, 0xA2, 0x10, 0xED, +0x01, 0x6B, 0x47, 0xED, 0x6C, 0xEA, 0x01, 0x10, +0x00, 0x6A, 0x03, 0x91, 0x02, 0x90, 0x02, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xD8, 0x63, 0x4F, 0x62, +0x4E, 0xD1, 0x4D, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEC, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF2, 0x74, 0x9A, 0xC2, 0xF2, 0x14, 0x4A, +0x48, 0xD4, 0x04, 0xD3, 0x61, 0x9A, 0x44, 0xAA, +0x4A, 0xD5, 0x05, 0xD3, 0x7D, 0x67, 0x4C, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA4, 0xF3, 0x88, 0xA2, 0x03, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xA4, 0xF3, 0x68, 0xC2, 0x24, 0x68, +0x00, 0x69, 0x48, 0x94, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x40, 0x9B, 0x01, 0x4C, 0x11, 0xE4, +0x40, 0xEA, 0x49, 0xD2, 0x02, 0x2A, 0x02, 0x6A, +0x33, 0x11, 0x30, 0xF0, 0x20, 0x6C, 0x48, 0x93, +0xC0, 0xF3, 0x40, 0x9C, 0x71, 0xE0, 0x40, 0xEA, +0x05, 0x72, 0x06, 0x61, 0x49, 0x94, 0x01, 0x6B, +0x03, 0x6A, 0x04, 0x5C, 0x13, 0x60, 0x24, 0x11, +0x49, 0x92, 0x01, 0x49, 0x02, 0x4A, 0x41, 0xE0, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x4C, 0xE9, +0x4A, 0x92, 0xFC, 0x4A, 0x42, 0xE8, 0x02, 0x61, +0x00, 0x6B, 0x04, 0x10, 0xE0, 0xF1, 0x14, 0x71, +0xD4, 0x61, 0x0F, 0x11, 0xE0, 0xF1, 0x14, 0x71, +0x00, 0xF1, 0x0B, 0x60, 0x00, 0xF1, 0x0B, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0xA4, 0xF3, 0x88, 0xA3, 0x09, 0x6A, 0x4B, 0xEA, +0x8C, 0xEA, 0x05, 0x6C, 0x8B, 0xEC, 0x8C, 0xEA, +0xA4, 0xF3, 0x48, 0xC3, 0x48, 0x94, 0x30, 0xF0, +0x20, 0x69, 0xC0, 0xF3, 0x40, 0x99, 0x02, 0x4C, +0x11, 0xE4, 0x40, 0xEA, 0x48, 0x94, 0x7D, 0x67, +0x5C, 0xC3, 0xC0, 0xF3, 0x40, 0x99, 0x03, 0x4C, +0x11, 0xE4, 0x40, 0xEA, 0x9D, 0x67, 0x5D, 0xC4, +0x48, 0x94, 0xC0, 0xF3, 0x40, 0x99, 0x00, 0x69, +0x04, 0x4C, 0x11, 0xE4, 0x40, 0xEA, 0x7D, 0x67, +0x5E, 0xC3, 0x10, 0x10, 0x48, 0x94, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x05, 0x4C, +0x11, 0xE4, 0x31, 0xE4, 0x40, 0xEA, 0x9D, 0x67, +0x2D, 0xE4, 0x5F, 0xC3, 0x01, 0x49, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xE9, 0x49, 0x92, 0xFD, 0x4A, +0x42, 0xE9, 0xEC, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE8, 0xF2, 0x57, 0xA2, 0x7D, 0x67, 0x44, 0x32, +0x49, 0xE3, 0x68, 0xAA, 0x1F, 0xF7, 0x00, 0x6A, +0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE8, 0xF2, +0x57, 0xA2, 0x9D, 0x67, 0x44, 0x32, 0x49, 0xE4, +0x68, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x50, 0x9A, 0x49, 0xE3, 0x60, 0xAA, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, +0x4D, 0xE3, 0x60, 0xAB, 0xFF, 0xF7, 0x1F, 0x6A, +0x9D, 0x67, 0x6C, 0xEA, 0x7C, 0xA4, 0x0E, 0x2B, +0x7E, 0xA4, 0x01, 0x6C, 0x8C, 0xEB, 0x0A, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0xA4, 0xF3, 0xA8, 0xA3, 0x08, 0x6C, 0xAD, 0xEC, +0xA4, 0xF3, 0x88, 0xC3, 0x49, 0x95, 0xE0, 0xF7, +0x1F, 0x6E, 0x4C, 0xEE, 0x5D, 0x67, 0xFE, 0xA2, +0xFD, 0x4D, 0xFF, 0x6B, 0x00, 0xF0, 0x1F, 0x04, +0x6C, 0xED, 0x80, 0x18, 0xF4, 0x04, 0x0A, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA4, 0xF3, 0x88, 0xA2, 0x04, 0x6B, 0x8D, 0xEB, +0xA4, 0xF3, 0x68, 0xC2, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0xA4, 0xF3, 0x68, 0xA0, +0x0C, 0x6A, 0x6C, 0xEA, 0x10, 0x2A, 0xC3, 0xF3, +0x6D, 0xA0, 0xFE, 0x4A, 0xE0, 0xF0, 0x87, 0xA0, +0x6C, 0xEA, 0x05, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, +0x02, 0x4B, 0x6C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, +0x00, 0x18, 0xB3, 0xCF, 0x64, 0x10, 0x08, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x16, 0x22, +0xC3, 0xF3, 0x4D, 0xA0, 0x02, 0x69, 0xC0, 0xF0, +0xCC, 0xA0, 0x2D, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, +0xFF, 0x6C, 0x55, 0x4C, 0x00, 0x6D, 0x40, 0xEA, +0xC3, 0xF3, 0x48, 0xA0, 0x4D, 0xE9, 0xC3, 0xF3, +0x28, 0xC0, 0x07, 0x10, 0xC3, 0xF3, 0x6D, 0xA0, +0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, +0x4D, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0xA4, 0xF3, 0x88, 0xA0, 0x04, 0x6A, +0xFF, 0x6B, 0x8C, 0xEA, 0x2B, 0x22, 0x08, 0x6A, +0x8C, 0xEA, 0x6C, 0xEA, 0x08, 0x2A, 0x07, 0x6C, +0x00, 0x18, 0xDD, 0xE4, 0xE0, 0xF0, 0x87, 0xA0, +0x00, 0x18, 0x9D, 0xCF, 0x2C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF0, 0x84, 0x98, 0xC4, 0xF1, +0x50, 0x9A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF1, 0x94, 0x9C, 0x8E, 0xEA, 0x07, 0x2A, +0xC0, 0xF0, 0x85, 0xA0, 0xF0, 0x4A, 0x8C, 0xEA, +0x6C, 0xEA, 0x10, 0x72, 0x18, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC3, 0xF3, +0x8D, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, 0xC3, 0xF3, +0x6D, 0xC2, 0x0D, 0x10, 0xC3, 0xF3, 0x6D, 0xA0, +0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x05, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, +0x02, 0x10, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x4F, 0x97, 0x4E, 0x91, 0x4D, 0x90, 0x28, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xE0, 0xF0, 0xB2, 0xA2, 0x02, 0x6C, 0xFF, 0x6B, +0xAC, 0xEC, 0x4F, 0x24, 0x45, 0xF1, 0x98, 0xA2, +0x08, 0x5C, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x6D, +0x44, 0xF2, 0xAC, 0x9D, 0xF8, 0x4C, 0xA0, 0xA5, +0xAC, 0xEB, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6D, +0x44, 0xF2, 0xB0, 0x9D, 0xA0, 0xA5, 0xAC, 0xEB, +0x01, 0x6D, 0xA4, 0xEC, 0x6C, 0xED, 0x30, 0xF0, +0x20, 0x6B, 0x45, 0xF1, 0xBA, 0xC2, 0x08, 0xF2, +0x10, 0x4B, 0xE0, 0xF0, 0xB4, 0xA3, 0x04, 0x6A, +0xFF, 0x6C, 0xAC, 0xEA, 0x04, 0x2A, 0x45, 0xF1, +0x5A, 0xA3, 0x10, 0x22, 0x03, 0x10, 0x45, 0xF1, +0x5A, 0xA3, 0x0C, 0x2A, 0x01, 0x6C, 0x00, 0x18, +0x60, 0xD6, 0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6C, +0x00, 0xF3, 0x48, 0x9A, 0x5D, 0x4C, 0x00, 0x6D, +0x01, 0x6E, 0x1A, 0x10, 0xE0, 0xF0, 0xB2, 0xA3, +0x08, 0x6A, 0xAC, 0xEA, 0x8C, 0xEA, 0x0B, 0x22, +0xE0, 0xF0, 0xD3, 0xA3, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x6C, 0x00, 0xF3, 0x48, 0x9A, 0x5D, 0x4C, +0x00, 0x6D, 0xC0, 0x36, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0xE0, 0xF0, +0xD3, 0xA3, 0xFF, 0x6C, 0x5D, 0x4C, 0x00, 0x6D, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, -0xB2, 0xA2, 0x02, 0x6B, 0xFF, 0x6C, 0xAC, 0xEB, -0x32, 0x23, 0xE0, 0xF0, 0xAF, 0xA2, 0x7F, 0x6B, -0xAC, 0xEB, 0x05, 0xF3, 0x79, 0xC2, 0xE0, 0xF0, -0xB4, 0xA2, 0x07, 0x6B, 0x05, 0xF3, 0x78, 0xC2, -0x80, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x8C, 0xEB, -0x09, 0x23, 0x00, 0xF1, 0xBF, 0xA2, 0x01, 0x6B, -0xAC, 0xEB, 0x8C, 0xEB, 0x03, 0x23, 0xA6, 0x33, -0x05, 0xF3, 0x78, 0xC2, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x05, 0xF3, 0x58, 0xA0, -0x01, 0x6C, 0x0C, 0x4A, 0x84, 0xEA, 0x80, 0x18, -0x95, 0x57, 0xE0, 0xF0, 0x74, 0xA0, 0x04, 0x6A, -0x6C, 0xEA, 0x05, 0x22, 0x05, 0xF3, 0x98, 0xA0, -0x80, 0x18, 0x25, 0x3B, 0x04, 0x10, 0x05, 0xF3, -0x98, 0xA0, 0x80, 0x18, 0x1F, 0x3B, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x24, 0xF3, 0xA4, 0xA3, 0x24, 0x67, 0x08, 0x6C, -0xAD, 0xEC, 0x24, 0xF3, 0x84, 0xC3, 0x42, 0xF6, -0x70, 0xA3, 0xFF, 0x6A, 0x4C, 0xE9, 0x03, 0x73, -0x40, 0x61, 0x10, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, -0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0x5C, 0x9A, 0x60, 0xDA, 0x00, 0x18, 0xE1, 0xD0, -0x34, 0x2A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, -0x01, 0x6E, 0x10, 0xF0, 0x23, 0x6C, 0xC6, 0xF4, -0x30, 0xC5, 0xC8, 0xF3, 0x1D, 0x4C, 0xC6, 0xF4, -0x10, 0x4D, 0xE6, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x24, 0xF3, -0x84, 0xA2, 0x10, 0x6B, 0xA3, 0x67, 0x8C, 0xED, -0x0B, 0x2D, 0x30, 0xF0, 0x20, 0x6D, 0xA3, 0xF3, -0xC0, 0x9D, 0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF3, -0xBC, 0x9D, 0x8D, 0xEB, 0xC0, 0xDD, 0xA3, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x7C, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF1, 0x90, 0x9C, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, +0xB2, 0xA2, 0x02, 0x6C, 0xFF, 0x6B, 0xAC, 0xEC, +0x51, 0x24, 0x45, 0xF1, 0x98, 0xA2, 0x08, 0x5C, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6D, 0x44, 0xF2, +0xAC, 0x9D, 0xF8, 0x4C, 0xA0, 0xA5, 0xAC, 0xEB, +0x06, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x44, 0xF2, +0xB0, 0x9D, 0xA0, 0xA5, 0xAC, 0xEB, 0x01, 0x6D, +0xA4, 0xEC, 0x6C, 0xED, 0x30, 0xF0, 0x20, 0x68, +0x45, 0xF1, 0xBA, 0xC2, 0x08, 0xF2, 0x10, 0x48, +0xE0, 0xF0, 0x94, 0xA0, 0x04, 0x6A, 0xFF, 0x6B, +0x8C, 0xEA, 0x13, 0x2A, 0x45, 0xF1, 0x5A, 0xA0, +0x23, 0x2A, 0xE0, 0xF0, 0x92, 0xA0, 0x01, 0x6A, +0x8C, 0xEA, 0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, +0x00, 0x18, 0x60, 0xD6, 0x30, 0xF0, 0x20, 0x6A, +0x6D, 0xF3, 0x88, 0xA2, 0x80, 0x18, 0x94, 0x38, +0x24, 0x10, 0x45, 0xF1, 0x5A, 0xA0, 0x10, 0x22, +0xE0, 0xF0, 0x92, 0xA0, 0x01, 0x6A, 0x8C, 0xEA, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x60, 0xD6, 0x30, 0xF0, 0x20, 0x6A, 0x6D, 0xF3, +0x88, 0xA2, 0x80, 0x18, 0x8E, 0x38, 0x11, 0x10, +0x45, 0xF1, 0x99, 0xA0, 0x01, 0x6D, 0x80, 0x18, +0x78, 0x38, 0x45, 0xF1, 0x98, 0xA0, 0x80, 0x18, +0x83, 0x38, 0x07, 0x10, 0x01, 0x6A, 0xAC, 0xEA, +0x6C, 0xEA, 0x03, 0x22, 0x00, 0x6C, 0x00, 0x18, +0x60, 0xD6, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE0, 0xF0, 0xB2, 0xA2, 0x02, 0x6B, +0xFF, 0x6C, 0xAC, 0xEB, 0x32, 0x23, 0xE0, 0xF0, +0xAF, 0xA2, 0x7F, 0x6B, 0xAC, 0xEB, 0x45, 0xF1, +0x79, 0xC2, 0xE0, 0xF0, 0xB4, 0xA2, 0x07, 0x6B, +0x45, 0xF1, 0x78, 0xC2, 0x80, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x8C, 0xEB, 0x09, 0x23, 0x00, 0xF1, +0xBF, 0xA2, 0x01, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, +0x03, 0x23, 0xA6, 0x33, 0x45, 0xF1, 0x78, 0xC2, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x45, 0xF1, 0x58, 0xA0, 0x01, 0x6C, 0x0C, 0x4A, +0x84, 0xEA, 0x80, 0x18, 0xDB, 0x5C, 0xE0, 0xF0, +0x74, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0x05, 0x22, +0x45, 0xF1, 0x98, 0xA0, 0x80, 0x18, 0x94, 0x38, +0x04, 0x10, 0x45, 0xF1, 0x98, 0xA0, 0x80, 0x18, +0x8E, 0x38, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x64, 0xF3, 0xBC, 0xA3, +0x24, 0x67, 0x08, 0x6C, 0xAD, 0xEC, 0x64, 0xF3, +0x9C, 0xC3, 0x42, 0xF6, 0x6C, 0xA3, 0xFF, 0x6A, +0x4C, 0xE9, 0x03, 0x73, 0x62, 0x61, 0x10, 0x6B, +0x8C, 0xEB, 0x4C, 0xEB, 0x05, 0x2B, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF2, 0x54, 0x9A, 0x60, 0xDA, +0x00, 0x18, 0x52, 0xD2, 0x56, 0x2A, 0x30, 0xF0, +0x20, 0x6D, 0x30, 0xF0, 0x20, 0x6A, 0x27, 0xF4, +0x28, 0xC5, 0x08, 0xF2, 0x10, 0x4A, 0x84, 0xF3, +0x93, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x08, 0x2B, +0x64, 0xF3, 0x9C, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, +0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x11, 0x2A, +0x00, 0x6A, 0x04, 0xD2, 0x10, 0xF0, 0x23, 0x6C, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6D, +0x01, 0x6E, 0x00, 0xF3, 0x4C, 0x9A, 0xC9, 0xF1, +0x15, 0x4C, 0x27, 0xF4, 0x08, 0x4D, 0xE6, 0x67, +0x0D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x23, 0x6C, 0x04, 0xD3, +0xC9, 0xF1, 0x15, 0x4C, 0x27, 0xF4, 0x08, 0x4D, +0x64, 0x6E, 0x01, 0x6F, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x64, 0xF3, +0x9C, 0xA2, 0x10, 0x6B, 0xA3, 0x67, 0x8C, 0xED, +0x0B, 0x2D, 0x30, 0xF0, 0x20, 0x6D, 0x44, 0xF2, +0xD8, 0x9D, 0x30, 0xF0, 0x20, 0x6D, 0x44, 0xF2, +0xB4, 0x9D, 0x8D, 0xEB, 0xC0, 0xDD, 0xA3, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x74, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF0, 0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x01, 0x4A, 0x40, 0xDB, -0x98, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x42, 0xF6, 0x50, 0xA0, 0x02, 0x72, -0x1E, 0x61, 0x01, 0x71, 0x75, 0x61, 0x24, 0xF3, -0x64, 0xA0, 0xE0, 0xF0, 0x8F, 0xA0, 0x80, 0x6D, +0x98, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x42, 0xF6, 0x4C, 0xA0, 0x02, 0x72, +0x1E, 0x61, 0x01, 0x71, 0x75, 0x61, 0x64, 0xF3, +0x7C, 0xA0, 0xE0, 0xF0, 0x8F, 0xA0, 0x80, 0x6D, 0x01, 0x6A, 0xAB, 0xED, 0x6D, 0xEA, 0xAC, 0xEC, -0xFF, 0x6B, 0x6C, 0xEC, 0x24, 0xF3, 0x44, 0xC0, -0x0A, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, -0x84, 0x9A, 0x40, 0xA4, 0x6C, 0xEA, 0xAE, 0xEA, +0xFF, 0x6B, 0x6C, 0xEC, 0x64, 0xF3, 0x5C, 0xC0, +0x0A, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x9C, 0x9A, 0x40, 0xA4, 0x6C, 0xEA, 0xAE, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x5D, 0x10, 0x01, 0x6C, -0x80, 0x18, 0xD0, 0x3B, 0x59, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x58, 0x9A, 0x01, 0x6B, +0x80, 0x18, 0x3F, 0x39, 0x59, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF1, 0x50, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x64, 0x6C, 0x40, 0xEA, 0xE0, 0xF0, 0x74, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, -0x02, 0x2A, 0x00, 0x18, 0xD0, 0xDD, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0xE0, 0xF0, +0x02, 0x2A, 0x00, 0x18, 0xED, 0xE2, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0xE0, 0xF0, 0x92, 0xA3, 0x5F, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0xA1, 0x72, 0x07, 0x61, 0xE0, 0xF0, 0x6F, 0xA3, 0x7F, 0x6A, 0x6C, 0xEA, -0x4C, 0xEC, 0x80, 0x18, 0x14, 0x3B, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF3, 0x64, 0x9A, 0xFF, 0x6C, +0x4C, 0xEC, 0x80, 0x18, 0x83, 0x38, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF2, 0x7C, 0x9A, 0xFF, 0x6C, 0x80, 0x6D, 0x40, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, 0xAE, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x91, 0x67, -0x80, 0x18, 0xD0, 0x3B, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, 0x92, 0xA2, +0x80, 0x18, 0x3F, 0x39, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0x92, 0xA2, 0x03, 0x6B, 0x8C, 0xEB, 0x02, 0x73, 0x04, 0x61, -0x05, 0xF3, 0x98, 0xA2, 0x80, 0x18, 0x14, 0x3B, -0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF7, 0x72, 0xA2, +0x45, 0xF1, 0x98, 0xA2, 0x80, 0x18, 0x83, 0x38, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, 0x62, 0xA2, 0x5F, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0xA1, 0x72, 0x09, 0x61, 0x01, 0x6C, -0x00, 0x18, 0x6B, 0xD1, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x88, 0x9A, 0x80, 0x18, 0x9E, 0x57, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, +0x00, 0x18, 0x60, 0xD6, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF1, 0x9C, 0x9A, 0x80, 0x18, 0xE4, 0x5C, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xA0, 0xF0, 0x96, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE0, 0xF0, 0x95, 0xA2, 0xA0, 0xF0, 0x76, 0xC2, 0x41, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x24, 0xF3, 0x84, 0xA2, 0xE0, 0xF0, 0x75, 0xC2, -0x09, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x24, 0xF3, -0x64, 0xC2, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x64, 0xF3, 0x9C, 0xA2, 0xE0, 0xF0, 0x75, 0xC2, +0x09, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x64, 0xF3, +0x7C, 0xC2, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x2D, 0x14, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xA6, 0x11, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xA5, 0x11, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x2C, 0x14, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x04, 0x67, -0x2C, 0xE8, 0x00, 0x18, 0x96, 0xD3, 0x01, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x58, 0x9A, -0x1C, 0x30, 0x30, 0xF0, 0x20, 0x6E, 0x90, 0x67, -0x08, 0x6D, 0x0B, 0xF4, 0x04, 0x4E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x84, 0xF5, 0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0x84, 0xF5, 0x78, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF3, 0x54, 0x9A, 0x49, 0xE0, -0x40, 0xA2, 0x2C, 0xEA, 0xDD, 0x72, 0x80, 0xF0, -0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, -0x58, 0x9A, 0x49, 0xE0, 0x40, 0xA2, 0x4C, 0xE9, -0x01, 0x6A, 0x2C, 0xEA, 0x13, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF3, 0x90, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x91, 0xE0, -0x2B, 0xF4, 0x1C, 0x4A, 0x4B, 0xF4, 0x04, 0x4B, -0xA0, 0xA4, 0x01, 0x4C, 0xA0, 0xC2, 0x01, 0x4A, -0x6A, 0xEA, 0xFA, 0x61, 0x02, 0x6A, 0x2C, 0xEA, -0x68, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, -0x5C, 0x9A, 0x49, 0xE0, 0x60, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0x2B, 0xF4, 0x74, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF3, 0x48, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x4B, 0xF4, 0x0C, 0x4B, 0x41, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF4, 0x04, 0x4A, -0x80, 0xA0, 0x80, 0xC2, 0x88, 0xA0, 0x88, 0xC2, -0x90, 0xA0, 0x90, 0xC2, 0x98, 0xA0, 0x01, 0x48, -0x98, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xF4, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF4, 0x34, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x50, 0x9A, -0x2C, 0x31, 0x02, 0x49, 0x4D, 0xE9, 0x00, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0x54, 0x9A, -0x2D, 0xE0, 0x60, 0xF6, 0x13, 0x6C, 0x60, 0xDA, -0x06, 0x02, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x48, 0x9A, 0x80, 0x6D, 0x00, 0x6E, -0x14, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x08, 0x34, 0x91, 0xE2, -0x64, 0xF5, 0x14, 0x4C, 0x60, 0xF6, 0x18, 0x6A, -0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, -0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x7C, 0x9B, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x60, 0x9B, -0x6D, 0xE2, 0xA0, 0xA3, 0x01, 0x4A, 0xFF, 0x6B, -0xAC, 0xEB, 0x60, 0xF6, 0x1C, 0x72, 0x60, 0xC4, -0x01, 0x4C, 0xE6, 0x61, 0x01, 0x48, 0x04, 0x70, -0xC7, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x6D, 0x0B, 0xF4, 0x0C, 0x4C, 0x6B, 0xF2, -0x1D, 0x4D, 0x08, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xEA, 0xA6, 0xF6, 0x00, 0x48, 0x02, 0x6A, -0x84, 0xF5, 0x57, 0xC0, 0x00, 0xF1, 0x52, 0xA0, -0x10, 0x22, 0x00, 0x18, 0x96, 0xD3, 0x00, 0xF1, -0x92, 0xA0, 0x30, 0xF0, 0x20, 0x6E, 0x90, 0x6D, +0x20, 0x6D, 0x0D, 0xF0, 0x1C, 0x4C, 0x4C, 0xF6, +0x17, 0x4D, 0x08, 0x6E, 0x30, 0xF0, 0x20, 0x68, +0x40, 0xEA, 0x08, 0xF2, 0x10, 0x48, 0x02, 0x6A, +0x24, 0xF6, 0x57, 0xC0, 0x00, 0xF1, 0x52, 0xA0, +0x10, 0x22, 0x00, 0x18, 0x8B, 0xD8, 0x00, 0xF1, +0x92, 0xA0, 0x30, 0xF0, 0x20, 0x6E, 0xA8, 0x6D, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x7C, 0x9A, 0x9C, 0x34, 0x0B, 0xF4, 0x04, 0x4E, +0x7C, 0x9A, 0x9C, 0x34, 0x0D, 0xF0, 0x14, 0x4E, 0x40, 0xEB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, 0x0C, 0xED, 0x0B, 0xD4, 0x0D, 0xD5, 0x00, 0x18, -0x96, 0xD3, 0x0B, 0x93, 0x0C, 0xD2, 0x65, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, +0x8B, 0xD8, 0x0B, 0x93, 0x0C, 0xD2, 0x65, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, 0x3C, 0x31, 0x0A, 0xD1, 0x49, 0xE1, 0x20, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0x0A, 0x94, 0xC3, 0xF2, +0x30, 0xF0, 0x20, 0x6A, 0x0A, 0x94, 0x04, 0xF2, 0x50, 0x9A, 0x0C, 0xE9, 0x30, 0xF0, 0x20, 0x6B, -0x49, 0xE4, 0x40, 0xA2, 0x23, 0xF2, 0x74, 0x9B, +0x49, 0xE4, 0x40, 0xA2, 0x64, 0xF1, 0x6C, 0x9B, 0x4C, 0xE8, 0x00, 0x30, 0xE7, 0xF7, 0x1F, 0x6A, 0x05, 0xE1, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF3, 0x4C, 0x9A, 0x6D, 0xE4, 0x2D, 0xE3, +0x64, 0xF2, 0x40, 0x9A, 0x6D, 0xE4, 0x2D, 0xE3, 0x49, 0xE4, 0x29, 0xE2, 0x00, 0x6C, 0x80, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xFB, 0x61, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, 0x48, 0x9A, 0x0D, 0x97, 0xC8, 0x41, 0xFF, 0xF7, 0x1F, 0x68, 0x0A, 0x6D, 0x10, 0x6C, 0x0C, 0xEE, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF7, -0xA7, 0xA2, 0x0B, 0x92, 0x43, 0xED, 0x13, 0x60, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, +0xB7, 0xA2, 0x0B, 0x92, 0x43, 0xED, 0x13, 0x60, 0xB3, 0xE2, 0x0C, 0x92, 0x0D, 0x93, 0x9C, 0x34, 0xB5, 0xE2, 0xBC, 0x35, 0xAF, 0x35, 0x0C, 0xED, 0x30, 0x4C, 0x7B, 0xE1, 0x30, 0xF0, 0x20, 0x6A, @@ -63107,21 +64144,21 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x60, 0xF3, 0x44, 0x9A, 0xFF, 0x6B, 0x6C, 0xEE, 0x08, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, -0x08, 0x04, 0x2B, 0xF2, 0x10, 0x4D, 0x08, 0x6E, +0x08, 0x04, 0x4C, 0xF6, 0x06, 0x4D, 0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, 0x58, 0x9A, 0x06, 0x00, 0x08, 0x04, 0x00, 0x6D, 0xD0, 0x67, 0x08, 0x6F, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF3, 0x4C, 0x9A, 0x0A, 0x93, +0x20, 0x6A, 0x64, 0xF2, 0x40, 0x9A, 0x0A, 0x93, 0x49, 0xE3, 0x25, 0xE2, 0x08, 0x02, 0x60, 0xA0, 0x01, 0x48, 0x4A, 0xE8, 0x60, 0xC1, 0x01, 0x49, 0xFA, 0x61, 0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF7, 0x13, 0xA2, 0x0E, 0xD4, 0x0F, 0xD5, -0x00, 0x18, 0x96, 0xD3, 0x01, 0xE2, 0x00, 0x6A, +0x28, 0xF3, 0x03, 0xA2, 0x0E, 0xD4, 0x0F, 0xD5, +0x00, 0x18, 0x8B, 0xD8, 0x01, 0xE2, 0x00, 0x6A, 0x1C, 0x30, 0x04, 0xD2, 0x93, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF2, 0x70, 0x9B, 0x30, 0xF0, -0x20, 0x6C, 0x23, 0xF2, 0x8C, 0x9C, 0x6D, 0xE0, +0x20, 0x6B, 0x04, 0xF2, 0x70, 0x9B, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF1, 0x84, 0x9C, 0x6D, 0xE0, 0x60, 0xA3, 0x91, 0xE0, 0x80, 0xA4, 0x4C, 0xEB, 0x60, 0x33, 0x8C, 0xEA, 0x6D, 0xE2, 0x0E, 0x91, 0xFF, 0xF7, 0x1F, 0x6A, 0x02, 0x48, 0x4C, 0xEB, @@ -63131,24 +64168,24 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x85, 0xE1, 0x06, 0x10, 0x14, 0x70, 0x04, 0x61, 0x0E, 0x91, 0x0F, 0x95, 0x08, 0x49, 0xA5, 0xE1, 0x04, 0x32, 0x30, 0xF0, 0x20, 0x6D, 0x4E, 0x33, -0x23, 0xF2, 0x0C, 0x4D, 0x09, 0xD3, 0xA0, 0x9D, +0x64, 0xF1, 0x04, 0x4D, 0x09, 0xD3, 0xA0, 0x9D, 0x08, 0x93, 0x07, 0x6C, 0x4C, 0xEC, 0xA9, 0xE3, 0x09, 0x93, 0x06, 0xD4, 0x06, 0x95, 0x69, 0xE2, 0x60, 0xA2, 0xFF, 0x6C, 0x01, 0x6A, 0x44, 0xED, 0x8C, 0xEB, 0x4C, 0xEB, 0x6E, 0xEA, 0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x91, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x23, 0xF2, 0x0C, 0x4C, 0x07, 0x95, 0x80, 0x9C, +0x64, 0xF1, 0x04, 0x4C, 0x07, 0x95, 0x80, 0x9C, 0x8D, 0xE5, 0x0D, 0xE3, 0x60, 0xA3, 0xFF, 0x6D, 0xAC, 0xEB, 0x4E, 0xEB, 0x0F, 0x6A, 0x4C, 0xEB, -0x31, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, -0x0C, 0x4B, 0x08, 0x94, 0x60, 0x9B, 0xFF, 0x6D, +0x31, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, +0x04, 0x4B, 0x08, 0x94, 0x60, 0x9B, 0xFF, 0x6D, 0x69, 0xE4, 0x09, 0x94, 0x89, 0xE2, 0x06, 0x94, 0x60, 0xA2, 0x01, 0x6A, 0x01, 0x4C, 0x44, 0xEC, 0xAC, 0xEB, 0x4C, 0xEB, 0x6E, 0xEA, 0x15, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x91, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x23, 0xF2, 0x0C, 0x4C, 0x07, 0x95, 0x80, 0x9C, +0x64, 0xF1, 0x04, 0x4C, 0x07, 0x95, 0x80, 0x9C, 0x8D, 0xE5, 0x0D, 0xE3, 0x60, 0xA3, 0xFF, 0x6D, 0xAC, 0xEB, 0x4E, 0xEB, 0xF0, 0x6A, 0x4C, 0xEB, 0x09, 0x2B, 0x01, 0x48, 0xFF, 0x6A, 0x01, 0x49, @@ -63157,89 +64194,142 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x04, 0x94, 0x64, 0x30, 0xFF, 0x48, 0x01, 0x4A, 0x0F, 0x30, 0x01, 0xE2, 0x01, 0x4C, 0xFF, 0x6A, 0x4C, 0xEC, 0x04, 0xD4, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF7, 0x98, 0xA2, 0x04, 0x95, 0x0F, 0x6B, +0x08, 0xF3, 0x88, 0xA2, 0x04, 0x95, 0x0F, 0x6B, 0x8C, 0xEB, 0x62, 0xED, 0xFF, 0x6A, 0x7F, 0xF7, 0x02, 0x61, 0x00, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, -0x8C, 0xE8, 0x00, 0x18, 0x96, 0xD3, 0x30, 0xF0, +0x8C, 0xE8, 0x00, 0x18, 0x8B, 0xD8, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x78, 0x9B, 0x09, 0xE2, 0x30, 0xF0, 0x20, 0x6E, 0x5C, 0x34, 0x70, 0x6D, -0x6B, 0xF3, 0x0C, 0x4E, 0x40, 0xEB, 0x05, 0x97, +0x6C, 0xF7, 0x1C, 0x4E, 0x40, 0xEB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF7, -0x89, 0xA2, 0x80, 0x18, 0xC8, 0x0A, 0x05, 0x97, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, +0x99, 0xA2, 0x80, 0x18, 0xA8, 0x07, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x04, 0x67, -0x2C, 0xE8, 0x00, 0x18, 0x96, 0xD3, 0x01, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x54, 0x9A, +0x2C, 0xE8, 0x00, 0x18, 0x8B, 0xD8, 0x01, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x4C, 0x9A, 0x1C, 0x30, 0x49, 0xE0, 0x80, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF2, 0x50, 0x9A, 0x2C, 0xEC, +0x20, 0x6A, 0xE4, 0xF1, 0x44, 0x9A, 0x2C, 0xEC, 0x49, 0xE0, 0xA0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x5C, 0x9A, 0x2C, 0xED, 0x49, 0xE0, -0xC0, 0xA2, 0x2C, 0xEE, 0x80, 0x18, 0xC3, 0x06, +0x64, 0xF2, 0x54, 0x9A, 0x2C, 0xED, 0x49, 0xE0, +0xC0, 0xA2, 0x2C, 0xEE, 0x80, 0x18, 0xEF, 0x03, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x8C, 0x9C, 0xE3, 0xF2, 0xA8, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x4B, 0xF3, 0x18, 0x4B, +0x64, 0xF2, 0x90, 0x9C, 0x64, 0xF2, 0xAC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x6C, 0xF7, 0x08, 0x4B, 0x91, 0xE2, 0xB5, 0xE0, 0x11, 0xE4, 0xC6, 0x43, 0xE0, 0xA5, 0x01, 0x4D, 0xE0, 0xC3, 0xE0, 0xA4, 0x01, 0x4C, 0xEA, 0xC3, 0x01, 0x4B, 0xCA, 0xEB, -0xF7, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, -0x60, 0x9B, 0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, -0x4B, 0xF3, 0x1E, 0x4B, 0x01, 0xE2, 0x44, 0x43, +0xF7, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, +0x64, 0x9B, 0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, +0x6C, 0xF7, 0x0E, 0x4B, 0x01, 0xE2, 0x44, 0x43, 0x80, 0xA0, 0x80, 0xC3, 0x87, 0x40, 0x03, 0x4C, 0x80, 0xA4, 0x01, 0x48, 0x8A, 0xC3, 0x01, 0x4B, 0x4A, 0xEB, 0xF6, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF7, -0x84, 0xA2, 0x80, 0x18, 0xDB, 0x0A, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x48, 0x9A, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, -0x9C, 0x9C, 0x10, 0xF0, 0x30, 0x6B, 0x25, 0xF4, -0x15, 0x4B, 0x01, 0x72, 0x60, 0xDC, 0x19, 0x60, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x24, 0xF3, 0xA4, 0xA3, 0x01, 0x6C, 0x02, 0x72, -0xAD, 0xEC, 0x24, 0xF3, 0x84, 0xC3, 0x40, 0x6B, -0x03, 0x60, 0x04, 0x72, 0x06, 0x61, 0x41, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, -0x60, 0xC2, 0x01, 0x6C, 0x80, 0x18, 0x28, 0x09, -0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x44, 0x9A, 0x40, 0xEA, 0x00, 0x18, 0x9B, 0xD3, -0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, -0x7C, 0x9B, 0x10, 0xF0, 0x30, 0x6A, 0x25, 0xF4, -0x16, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x06, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, +0x94, 0xA2, 0x80, 0x18, 0xBB, 0x07, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x04, 0x67, +0x2C, 0xE8, 0x00, 0x18, 0x8B, 0xD8, 0x01, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x58, 0x9A, +0x1C, 0x30, 0x30, 0xF0, 0x20, 0x6E, 0x90, 0x67, +0x08, 0x6D, 0x0D, 0xF0, 0x14, 0x4E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x24, 0xF6, 0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x24, 0xF6, 0x78, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF1, 0x58, 0x9A, 0x49, 0xE0, +0x40, 0xA2, 0x2C, 0xEA, 0xDD, 0x72, 0x80, 0xF0, +0x1B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF2, +0x5C, 0x9A, 0x49, 0xE0, 0x40, 0xA2, 0x4C, 0xE9, +0x01, 0x6A, 0x2C, 0xEA, 0x13, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF1, 0x9C, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x91, 0xE0, +0x4D, 0xF0, 0x0C, 0x4A, 0x4D, 0xF0, 0x14, 0x4B, +0xA0, 0xA4, 0x01, 0x4C, 0xA0, 0xC2, 0x01, 0x4A, +0x6A, 0xEA, 0xFA, 0x61, 0x02, 0x6A, 0x2C, 0xEA, +0x7B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, +0x40, 0x9A, 0x49, 0xE0, 0x60, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x4D, 0xF0, 0x64, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF2, 0x58, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x4D, 0xF0, 0x1C, 0x4B, 0x41, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0x4D, 0xF0, 0x14, 0x4A, +0x80, 0xA0, 0x80, 0xC2, 0x88, 0xA0, 0x88, 0xC2, +0x90, 0xA0, 0x90, 0xC2, 0x98, 0xA0, 0x01, 0x48, +0x98, 0xC2, 0x01, 0x4A, 0x6A, 0xEA, 0xF4, 0x61, +0x80, 0x18, 0x49, 0x40, 0x10, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x24, 0xF6, +0x94, 0xA2, 0xE0, 0xF0, 0xBD, 0xA2, 0x30, 0xF0, +0x20, 0x6E, 0x2D, 0xF0, 0x04, 0x4E, 0x01, 0x6F, +0x80, 0x18, 0x8C, 0x40, 0x45, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x4D, 0xF0, 0x24, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF0, 0x44, 0x9A, 0x2C, 0x31, +0x02, 0x49, 0x4D, 0xE9, 0x00, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF0, 0x48, 0x9A, 0x2D, 0xE0, +0x60, 0xF6, 0x13, 0x6C, 0x60, 0xDA, 0x06, 0x02, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x48, 0x9A, 0x80, 0x6D, 0x00, 0x6E, 0x14, 0x6F, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x08, 0x34, 0x91, 0xE2, 0x04, 0xF6, +0x14, 0x4C, 0x60, 0xF6, 0x18, 0x6A, 0x1F, 0xF7, +0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF0, 0x70, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF0, 0x74, 0x9B, 0x6D, 0xE2, +0xA0, 0xA3, 0x01, 0x4A, 0xFF, 0x6B, 0xAC, 0xEB, +0x60, 0xF6, 0x1C, 0x72, 0x60, 0xC4, 0x01, 0x4C, +0xE6, 0x61, 0x01, 0x48, 0x04, 0x70, 0xC7, 0x61, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x3F, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF7, 0x83, 0xA2, -0x02, 0x24, 0x80, 0x18, 0xA9, 0x09, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x00, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, 0x80, 0x18, -0x25, 0x3E, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, -0x60, 0x9A, 0xFE, 0x6A, 0x35, 0x6E, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0xA0, 0xF2, 0x50, 0x98, -0xFF, 0x6C, 0xA4, 0x67, 0x40, 0xEA, 0x00, 0x18, -0x05, 0xE0, 0x01, 0x6C, 0x80, 0x18, 0x6A, 0x3E, -0x80, 0x18, 0x0D, 0x0B, 0x80, 0x18, 0xA5, 0x09, -0x00, 0x18, 0xEF, 0xDF, 0xA0, 0xF2, 0x50, 0x98, -0x00, 0x6D, 0xC5, 0x67, 0xFF, 0x6C, 0x40, 0xEA, -0x80, 0x18, 0x45, 0x07, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0xBC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF3, 0x54, 0x9A, 0x01, 0x6C, 0xA0, 0xDA, -0x80, 0x18, 0xA8, 0x57, 0x17, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0xBC, 0x9A, 0x01, 0x6C, -0x80, 0x18, 0xD9, 0x57, 0x00, 0x6C, 0x80, 0x18, -0x6A, 0x3E, 0x80, 0x18, 0xA1, 0x09, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xCB, 0xF1, 0x04, 0x4C, 0x00, 0x6D, -0x34, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x44, 0xF3, 0x66, 0xA8, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x48, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF0, +0x90, 0x9C, 0x10, 0xF0, 0x30, 0x6B, 0x44, 0xF1, +0x0D, 0x4B, 0x01, 0x72, 0x60, 0xDC, 0x19, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x64, 0xF3, 0xBC, 0xA3, 0x01, 0x6C, 0x02, 0x72, +0xAD, 0xEC, 0x64, 0xF3, 0x9C, 0xC3, 0x40, 0x6B, +0x03, 0x60, 0x04, 0x72, 0x06, 0x61, 0x41, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, +0x60, 0xC2, 0x01, 0x6C, 0x80, 0x18, 0x53, 0x06, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x44, 0x9A, 0x40, 0xEA, 0x00, 0x18, 0x90, 0xD8, +0xF8, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x30, 0x6A, 0x44, 0xF1, +0x0E, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, 0x46, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, 0x93, 0xA2, +0x02, 0x24, 0x80, 0x18, 0xED, 0x07, 0x30, 0xF0, +0x20, 0x6A, 0x28, 0xF3, 0x85, 0xA2, 0x02, 0x24, +0x80, 0x18, 0xB8, 0x42, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x50, 0x9A, 0x00, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x60, 0xC2, 0x80, 0x18, 0x9C, 0x3B, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, 0x64, 0x9A, +0xFE, 0x6A, 0x35, 0x6E, 0x80, 0xA3, 0x8C, 0xEA, +0x40, 0xC3, 0xA0, 0xF2, 0x50, 0x98, 0xFF, 0x6C, +0xA4, 0x67, 0x40, 0xEA, 0x00, 0x18, 0x36, 0xE5, +0x01, 0x6C, 0x80, 0x18, 0xE1, 0x3B, 0x80, 0x18, +0x53, 0x08, 0x80, 0x18, 0xE1, 0x06, 0x00, 0x18, +0x20, 0xE5, 0xA0, 0xF2, 0x50, 0x98, 0xFF, 0x6C, +0x00, 0x6D, 0x6C, 0x6E, 0x40, 0xEA, 0x80, 0x18, +0x5C, 0x04, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, +0xB0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, +0x48, 0x9A, 0x01, 0x6C, 0xA0, 0xDA, 0x80, 0x18, +0xEE, 0x5C, 0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0xB0, 0x9A, 0x01, 0x6C, 0x80, 0x18, +0x1F, 0x5D, 0x00, 0x6C, 0x80, 0x18, 0xE1, 0x3B, +0x80, 0x18, 0xDD, 0x06, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x8C, 0xF5, 0x0C, 0x4C, 0x00, 0x6D, 0x40, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x84, 0xF3, 0x7C, 0xA8, 0x02, 0x6A, 0xE0, 0xF0, 0xB5, 0xA0, 0x6D, 0xEA, -0x44, 0xF3, 0x46, 0xC8, 0x40, 0xA4, 0x02, 0x6B, +0x84, 0xF3, 0x5C, 0xC8, 0x40, 0xA4, 0x02, 0x6B, 0x01, 0x69, 0x6B, 0xEB, 0x2C, 0xEA, 0x6C, 0xED, 0x4D, 0xED, 0xE0, 0xF0, 0xB5, 0xC0, 0x40, 0xA4, 0x03, 0x6E, 0xCB, 0xEE, 0x46, 0x32, 0x2C, 0xEA, @@ -63305,232 +64395,294 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xE0, 0xF0, 0xF7, 0xC0, 0x44, 0xA4, 0x09, 0x6F, 0xEB, 0xEF, 0x4E, 0x32, 0x2C, 0xEA, 0x4C, 0x32, 0xEC, 0xEB, 0x4D, 0xEB, 0xE0, 0xF0, 0x79, 0xC0, -0x80, 0x18, 0x25, 0x3E, 0xE0, 0xF0, 0x95, 0xA0, -0x86, 0x34, 0x2C, 0xEC, 0x80, 0x18, 0x06, 0x0B, +0x80, 0x18, 0x9C, 0x3B, 0xE0, 0xF0, 0x95, 0xA0, +0x86, 0x34, 0x2C, 0xEC, 0x80, 0x18, 0xE6, 0x07, 0xE0, 0xF0, 0x95, 0xA0, 0x8A, 0x34, 0x2C, 0xEC, -0x80, 0x18, 0xD4, 0x0A, 0xE0, 0xF0, 0x96, 0xA0, +0x80, 0x18, 0xB4, 0x07, 0xE0, 0xF0, 0x96, 0xA0, 0x08, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x09, 0x22, 0xE0, 0xF0, 0xB5, 0xA0, 0x0E, 0x6A, 0x00, 0x6C, 0xAC, 0xEA, 0x6C, 0xEA, 0x07, 0x22, 0x91, 0x67, 0x05, 0x10, 0xE0, 0xF0, 0x95, 0xA0, 0x8E, 0x34, 0x2C, 0xEC, 0x6C, 0xEC, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x80, 0x18, 0x11, 0x01, +0x08, 0xF2, 0x10, 0x48, 0x80, 0x18, 0xE1, 0x00, 0xE0, 0xF0, 0x95, 0xA0, 0x01, 0x69, 0x92, 0x34, -0x2C, 0xEC, 0x80, 0x18, 0x04, 0x14, 0xE0, 0xF0, +0x2C, 0xEC, 0x80, 0x18, 0x7A, 0x11, 0xE0, 0xF0, 0x95, 0xA0, 0x9A, 0x34, 0x2C, 0xEC, 0x80, 0x18, -0x27, 0x15, 0x80, 0x18, 0x3A, 0x5A, 0xE0, 0xF0, -0x77, 0xA0, 0x44, 0xF3, 0x90, 0xA0, 0x02, 0x6A, +0xA0, 0x12, 0x80, 0x18, 0x80, 0x5F, 0xE0, 0xF0, +0x77, 0xA0, 0xA4, 0xF3, 0x88, 0xA0, 0x02, 0x6A, 0x6A, 0x33, 0x4B, 0xEA, 0x2C, 0xEB, 0x8C, 0xEA, 0xE0, 0xF0, 0x95, 0xA0, 0x6D, 0xEA, 0x03, 0x6B, -0x6B, 0xEB, 0x6C, 0xEA, 0x2C, 0xEC, 0x44, 0xF3, -0x50, 0xC0, 0x80, 0x18, 0x2D, 0x0B, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0x6B, 0xEB, 0x6C, 0xEA, 0x2C, 0xEC, 0xA4, 0xF3, +0x48, 0xC0, 0x80, 0x18, 0x73, 0x08, 0xE0, 0xF0, +0x55, 0xA0, 0x4C, 0xE9, 0x0F, 0x21, 0x00, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x30, 0x6C, 0x82, 0xF2, +0x19, 0x4C, 0x00, 0x6D, 0x62, 0xF7, 0x10, 0x6E, +0x01, 0x6F, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x7C, 0x9A, 0xF0, 0x6A, -0x30, 0xF0, 0x20, 0x68, 0x80, 0xA3, 0xA6, 0xF6, -0x00, 0x48, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0xF1, -0x92, 0xA0, 0x80, 0x18, 0x05, 0x0A, 0x24, 0xF3, -0x64, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0x13, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x44, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF3, 0x88, 0x9C, -0x60, 0x9A, 0x8C, 0xEB, 0x60, 0xDA, 0x24, 0xF3, -0x64, 0xA0, 0x80, 0x9A, 0x66, 0x33, 0xC0, 0xF7, +0x20, 0x6A, 0x44, 0xF1, 0x74, 0x9A, 0xF0, 0x6A, +0x30, 0xF0, 0x20, 0x68, 0x80, 0xA3, 0x08, 0xF2, +0x10, 0x48, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0xF1, +0x92, 0xA0, 0x80, 0x18, 0xE5, 0x06, 0x64, 0xF3, +0x7C, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0x13, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, 0x48, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF2, 0x8C, 0x9C, +0x60, 0x9A, 0x8C, 0xEB, 0x60, 0xDA, 0x64, 0xF3, +0x7C, 0xA0, 0x80, 0x9A, 0x66, 0x33, 0xC0, 0xF7, 0x60, 0x33, 0x8D, 0xEB, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x54, 0x9A, 0x10, 0xF0, -0x00, 0x6B, 0x60, 0xDA, 0x00, 0x18, 0xE5, 0xDD, +0x20, 0x6A, 0x24, 0xF2, 0x48, 0x9A, 0x10, 0xF0, +0x00, 0x6B, 0x60, 0xDA, 0x00, 0x18, 0x16, 0xE3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xC0, 0xA4, 0x01, 0x6A, 0x64, 0x67, 0x4C, 0xEE, -0xFF, 0x6C, 0x43, 0x2E, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0xE0, 0xF0, 0xEE, 0xA3, +0xC0, 0xA4, 0x01, 0x6B, 0x44, 0x67, 0x6C, 0xEE, +0xFF, 0x6C, 0x43, 0x2E, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0xEE, 0xA2, 0x02, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0xE0, 0xF0, -0xF2, 0xA3, 0xCD, 0xED, 0x20, 0x6E, 0xCC, 0xEF, -0x8C, 0xEF, 0xE0, 0xF0, 0xAE, 0xC3, 0x0B, 0x2F, -0xE0, 0xF0, 0xAF, 0xA3, 0x7F, 0x6E, 0xAC, 0xEE, -0xE0, 0xF0, 0xAE, 0xA3, 0xCC, 0xEC, 0xB6, 0x35, -0x4E, 0xED, 0x4C, 0xED, 0x0F, 0x10, 0xE0, 0xF0, -0xF4, 0xA3, 0x02, 0x6A, 0xEC, 0xEA, 0x8C, 0xEA, -0x0C, 0x22, 0xCC, 0xED, 0x8C, 0xED, 0x13, 0x2D, -0xE0, 0xF0, 0x6F, 0xA3, 0x7F, 0x6A, 0x01, 0x6D, -0x6C, 0xEA, 0x4C, 0xEC, 0x80, 0x18, 0x09, 0x3B, +0xF2, 0xA2, 0xCD, 0xED, 0x20, 0x6E, 0xCC, 0xEF, +0x8C, 0xEF, 0xE0, 0xF0, 0xAE, 0xC2, 0x0B, 0x2F, +0xE0, 0xF0, 0xAF, 0xA2, 0x7F, 0x6E, 0xAC, 0xEE, +0xE0, 0xF0, 0xAE, 0xA2, 0xCC, 0xEC, 0xB6, 0x35, +0x6E, 0xED, 0x6C, 0xED, 0x0F, 0x10, 0xE0, 0xF0, +0xF4, 0xA2, 0x02, 0x6B, 0xEC, 0xEB, 0x8C, 0xEB, +0x0C, 0x23, 0xCC, 0xED, 0x8C, 0xED, 0x13, 0x2D, +0xE0, 0xF0, 0x6F, 0xA2, 0x7F, 0x6A, 0x01, 0x6D, +0x6C, 0xEA, 0x4C, 0xEC, 0x80, 0x18, 0x78, 0x38, 0x11, 0x10, 0xCC, 0xED, 0x8C, 0xED, 0x07, 0x25, -0xE0, 0xF0, 0x6F, 0xA3, 0x7F, 0x6A, 0x00, 0x6D, +0xE0, 0xF0, 0x6F, 0xA2, 0x7F, 0x6A, 0x00, 0x6D, 0x6C, 0xEA, 0x4C, 0xEC, 0xF3, 0x17, 0xE0, 0xF0, -0x6F, 0xA3, 0x7F, 0x6A, 0x6C, 0xEA, 0x4C, 0xEC, -0x80, 0x18, 0x14, 0x3B, 0x80, 0x18, 0x10, 0x0C, -0x1E, 0x12, 0x30, 0xF0, 0x20, 0x6D, 0xA6, 0xF6, -0x00, 0x4D, 0x05, 0x6E, 0x84, 0xF5, 0xD4, 0xC5, -0xE0, 0xA3, 0xE0, 0xF0, 0x0E, 0xA5, 0x02, 0x6E, -0xCB, 0xEE, 0x4C, 0xEF, 0x0C, 0xEE, 0xED, 0xEE, -0xE0, 0xF0, 0xCE, 0xC5, 0xE0, 0xA3, 0x11, 0x69, -0x2B, 0xE9, 0xE6, 0x37, 0x4C, 0xEF, 0xE4, 0x30, +0x6F, 0xA2, 0x7F, 0x6A, 0x6C, 0xEA, 0x4C, 0xEC, +0x80, 0x18, 0x83, 0x38, 0x80, 0x18, 0x64, 0x09, +0x36, 0x12, 0x30, 0xF0, 0x20, 0x6D, 0x08, 0xF2, +0x10, 0x4D, 0x05, 0x6E, 0x24, 0xF6, 0xD4, 0xC5, +0xE0, 0xA2, 0xE0, 0xF0, 0x0E, 0xA5, 0x02, 0x6E, +0xCB, 0xEE, 0x6C, 0xEF, 0x0C, 0xEE, 0xED, 0xEE, +0xE0, 0xF0, 0xCE, 0xC5, 0xE0, 0xA2, 0x11, 0x69, +0x2B, 0xE9, 0xE6, 0x37, 0x6C, 0xEF, 0xE4, 0x30, 0x03, 0x6F, 0xEB, 0xEF, 0x1F, 0x65, 0xCC, 0xEF, -0x0D, 0xEF, 0xE0, 0xF0, 0xEE, 0xC5, 0xC0, 0xA3, -0xCA, 0x36, 0x4C, 0xEE, 0xC8, 0x30, 0x05, 0x6E, +0x0D, 0xEF, 0xE0, 0xF0, 0xEE, 0xC5, 0xC0, 0xA2, +0xCA, 0x36, 0x6C, 0xEE, 0xC8, 0x30, 0x05, 0x6E, 0xCB, 0xEE, 0xEC, 0xEE, 0x0D, 0xEE, 0xE0, 0xF0, -0xCE, 0xC5, 0xE0, 0xA3, 0x09, 0x68, 0x0B, 0xE8, -0xEE, 0x37, 0x4C, 0xEF, 0xEC, 0x37, 0x0C, 0xEE, -0xED, 0xEE, 0xE0, 0xF0, 0xCE, 0xC5, 0xE0, 0xA3, -0x2C, 0xEE, 0xF2, 0x37, 0x4C, 0xEF, 0xF0, 0x37, -0xED, 0xEE, 0xE0, 0xF0, 0xCE, 0xC5, 0xE0, 0xA3, -0xF6, 0x37, 0x4C, 0xEF, 0xF4, 0x37, 0xFF, 0x65, +0xCE, 0xC5, 0xE0, 0xA2, 0x09, 0x68, 0x0B, 0xE8, +0xEE, 0x37, 0x6C, 0xEF, 0xEC, 0x37, 0x0C, 0xEE, +0xED, 0xEE, 0xE0, 0xF0, 0xCE, 0xC5, 0xE0, 0xA2, +0x2C, 0xEE, 0xF2, 0x37, 0x6C, 0xEF, 0xF0, 0x37, +0xED, 0xEE, 0xE0, 0xF0, 0xCE, 0xC5, 0xE0, 0xA2, +0xF6, 0x37, 0x6C, 0xEF, 0xF4, 0x37, 0xFF, 0x65, 0x21, 0x6F, 0xEB, 0xEF, 0xCC, 0xEF, 0xDF, 0x67, -0xCD, 0xEF, 0xE0, 0xF0, 0xEE, 0xC5, 0xC0, 0xA3, -0xDA, 0x36, 0x4C, 0xEE, 0xD8, 0x36, 0xFE, 0x65, +0xCD, 0xEF, 0xE0, 0xF0, 0xEE, 0xC5, 0xC0, 0xA2, +0xDA, 0x36, 0x6C, 0xEE, 0xD8, 0x36, 0xFE, 0x65, 0x41, 0x6E, 0xCB, 0xEE, 0xEC, 0xEE, 0xFF, 0x67, -0xED, 0xEE, 0xE0, 0xF0, 0xCE, 0xC5, 0xE0, 0xA3, +0xED, 0xEE, 0xE0, 0xF0, 0xCE, 0xC5, 0xE0, 0xA2, 0xFE, 0x37, 0xFC, 0x37, 0xFF, 0x65, 0x7F, 0x6F, 0x1F, 0x67, 0xEC, 0xEE, 0x0D, 0xEE, 0xE0, 0xF0, -0xCE, 0xC5, 0x21, 0xA3, 0x3E, 0x31, 0x3C, 0x31, +0xCE, 0xC5, 0x21, 0xA2, 0x3E, 0x31, 0x3C, 0x31, 0x04, 0xD1, 0xE0, 0xF0, 0x0F, 0xA5, 0xF8, 0x65, 0x04, 0x90, 0x3F, 0x67, 0xEC, 0xE9, 0x0D, 0xE9, -0xE0, 0xF0, 0x2F, 0xC5, 0x24, 0xA3, 0xE0, 0xF0, -0x12, 0xA5, 0x26, 0x31, 0x4C, 0xE9, 0x24, 0x31, +0xE0, 0xF0, 0x2F, 0xC5, 0x24, 0xA2, 0xE0, 0xF0, +0x12, 0xA5, 0x26, 0x31, 0x6C, 0xE9, 0x24, 0x31, 0xF9, 0x65, 0x38, 0x67, 0x2C, 0xE8, 0x3F, 0x67, 0x2D, 0xE8, 0xE0, 0xF0, 0x12, 0xC5, 0x18, 0x65, -0x04, 0xA3, 0x09, 0x69, 0x2B, 0xE9, 0x0E, 0x30, -0x4C, 0xE8, 0x0C, 0x30, 0xF8, 0x65, 0x18, 0x67, +0x04, 0xA2, 0x09, 0x69, 0x2B, 0xE9, 0x0E, 0x30, +0x6C, 0xE8, 0x0C, 0x30, 0xF8, 0x65, 0x18, 0x67, 0x0C, 0xE9, 0x1F, 0x67, 0x0D, 0xE9, 0xE0, 0xF0, -0x32, 0xC5, 0x05, 0xA3, 0xE0, 0xF0, 0x13, 0xC5, -0x04, 0xA3, 0x12, 0x30, 0x4C, 0xE8, 0x10, 0x30, +0x32, 0xC5, 0x05, 0xA2, 0xE0, 0xF0, 0x13, 0xC5, +0x04, 0xA2, 0x12, 0x30, 0x6C, 0xE8, 0x10, 0x30, 0x18, 0x65, 0x11, 0x68, 0x0B, 0xE8, 0x0C, 0xE9, 0x18, 0x67, 0x0D, 0xE9, 0xE0, 0xF0, 0x32, 0xC5, -0xE0, 0xF0, 0x34, 0xA5, 0x06, 0xA3, 0x19, 0x65, +0xE0, 0xF0, 0x34, 0xA5, 0x06, 0xA2, 0x19, 0x65, 0x1E, 0x30, 0x38, 0x67, 0x1C, 0x30, 0x2C, 0xEF, -0x0D, 0xEF, 0xE0, 0xF0, 0xF4, 0xC5, 0x04, 0x6F, -0xEC, 0xEE, 0x8C, 0xEE, 0x20, 0x26, 0x30, 0xF0, -0x20, 0x6E, 0x03, 0xF2, 0xDC, 0x9E, 0x00, 0xA6, -0x18, 0x65, 0x38, 0x67, 0x2F, 0x68, 0x2C, 0xE8, -0x00, 0xC6, 0xE0, 0xF0, 0xA7, 0xA5, 0x00, 0xA6, -0xAC, 0xEA, 0x8C, 0xE8, 0x50, 0x32, 0x0D, 0xEA, -0x8C, 0xEA, 0x40, 0xC6, 0x00, 0xA6, 0x06, 0x6A, -0xAC, 0xEA, 0x8C, 0xE8, 0x54, 0x32, 0x0D, 0xEA, -0x8C, 0xEA, 0x40, 0xC6, 0x40, 0xA6, 0x8C, 0xEA, -0xED, 0xEA, 0x8C, 0xEA, 0x40, 0xC6, 0x30, 0xF0, -0x20, 0x6A, 0x86, 0xF7, 0x4E, 0xA2, 0x08, 0x6E, -0xFF, 0x6D, 0xCC, 0xEA, 0x09, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x9C, 0x9A, 0x40, 0xA4, -0xAC, 0xEA, 0xCD, 0xEA, 0xAC, 0xEA, 0x40, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE0, 0xF0, 0x8E, 0xA2, 0x02, 0x6F, 0xFF, 0x6E, -0xEC, 0xEC, 0x24, 0x24, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF2, 0xBC, 0x9C, 0x80, 0xA5, 0xCC, 0xEC, -0xED, 0xEC, 0xCC, 0xEC, 0x80, 0xC5, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF3, 0xA4, 0x9C, 0x24, 0xF3, -0xE4, 0xA2, 0x03, 0x6C, 0xC0, 0x9D, 0x8B, 0xEC, -0xEC, 0xEC, 0xC0, 0xF7, 0xC2, 0x36, 0xC4, 0x36, -0xCD, 0xEC, 0x24, 0xF3, 0x84, 0xC2, 0x30, 0xF0, -0x20, 0x6F, 0xC0, 0x9D, 0x23, 0xF1, 0xF0, 0x9F, -0xED, 0xEE, 0xC0, 0xDD, 0x04, 0x6D, 0x8D, 0xED, -0x24, 0xF3, 0xA4, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, 0x93, 0xA2, -0x03, 0x2C, 0x01, 0x6C, 0xE0, 0xF0, 0x93, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF7, 0x92, 0xA2, -0x10, 0x6A, 0x8C, 0xEA, 0x08, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x8C, 0x9A, 0x7F, 0x6A, -0xA0, 0xA4, 0xAC, 0xEA, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x42, 0xF6, -0x90, 0xA2, 0x02, 0x74, 0x09, 0x61, 0xE0, 0xF0, -0x8F, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, -0xFF, 0x6C, 0x8C, 0xEA, 0xE0, 0xF0, 0x01, 0x2A, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0xA1, 0xA3, 0xE0, 0xF0, 0x8F, 0xA0, 0x80, 0x6A, -0x7F, 0x69, 0x4B, 0xEA, 0x2C, 0xED, 0x4C, 0xEC, -0xAD, 0xEC, 0xE0, 0xF0, 0x8F, 0xC0, 0xA2, 0xA3, -0xE0, 0xF0, 0xD0, 0xA0, 0x2C, 0xED, 0x4C, 0xEE, -0xAD, 0xEE, 0xE0, 0xF0, 0xD0, 0xC0, 0xA3, 0xA3, -0x01, 0x6A, 0x2C, 0xEE, 0xE5, 0x67, 0x4C, 0xEF, +0x0D, 0xEF, 0xE0, 0xF0, 0xF4, 0xC5, 0x64, 0xF3, +0x1C, 0xA5, 0x80, 0x6F, 0xEB, 0xEF, 0x0D, 0xEF, +0x64, 0xF3, 0xFC, 0xC5, 0x04, 0x6F, 0xEC, 0xEE, +0x8C, 0xEE, 0x20, 0x26, 0x30, 0xF0, 0x20, 0x6E, +0x44, 0xF1, 0xD4, 0x9E, 0x00, 0xA6, 0x18, 0x65, +0x38, 0x67, 0x2F, 0x68, 0x2C, 0xE8, 0x00, 0xC6, +0xE0, 0xF0, 0xA7, 0xA5, 0x00, 0xA6, 0xAC, 0xEB, +0x8C, 0xE8, 0x70, 0x33, 0x0D, 0xEB, 0x8C, 0xEB, +0x60, 0xC6, 0x00, 0xA6, 0x06, 0x6B, 0xAC, 0xEB, +0x8C, 0xE8, 0x74, 0x33, 0x0D, 0xEB, 0x8C, 0xEB, +0x60, 0xC6, 0x60, 0xA6, 0x8C, 0xEB, 0xED, 0xEB, +0x8C, 0xEB, 0x60, 0xC6, 0x30, 0xF0, 0x20, 0x6B, +0xE8, 0xF2, 0x7E, 0xA3, 0x08, 0x6E, 0xFF, 0x6D, +0xCC, 0xEB, 0x09, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF1, 0x94, 0x9B, 0x60, 0xA4, 0xAC, 0xEB, +0xCD, 0xEB, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0xE0, 0xF0, +0x8E, 0xA3, 0x02, 0x6F, 0xFF, 0x6E, 0xEC, 0xEC, +0x24, 0x24, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF1, +0xB4, 0x9C, 0x80, 0xA5, 0xCC, 0xEC, 0xED, 0xEC, +0xCC, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF2, 0xA8, 0x9C, 0x64, 0xF3, 0xFC, 0xA3, +0x03, 0x6C, 0xC0, 0x9D, 0x8B, 0xEC, 0xEC, 0xEC, +0xC0, 0xF7, 0xC2, 0x36, 0xC4, 0x36, 0xCD, 0xEC, +0x64, 0xF3, 0x9C, 0xC3, 0x30, 0xF0, 0x20, 0x6F, +0xC0, 0x9D, 0x64, 0xF0, 0xE4, 0x9F, 0xED, 0xEE, +0xC0, 0xDD, 0x04, 0x6D, 0x8D, 0xED, 0x64, 0xF3, +0xBC, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF2, +0x68, 0x9B, 0x60, 0x9B, 0x00, 0x53, 0x0A, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x64, 0xF3, 0xBC, 0xA3, 0x20, 0x6C, 0xAD, 0xEC, +0x64, 0xF3, 0x9C, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0xE0, 0xF0, 0x93, 0xA3, +0x03, 0x2C, 0x01, 0x6C, 0xE0, 0xF0, 0x93, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF3, 0x82, 0xA3, +0x10, 0x6B, 0x8C, 0xEB, 0x08, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF2, 0x90, 0x9B, 0x7F, 0x6B, +0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x42, 0xF6, +0x8C, 0xA3, 0x02, 0x74, 0x09, 0x61, 0xE0, 0xF0, +0x8F, 0xA3, 0x80, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xFF, 0x6C, 0x8C, 0xEB, 0xE0, 0xF0, 0x01, 0x2B, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA1, 0xA2, 0xE0, 0xF0, 0x8F, 0xA0, 0x80, 0x6B, +0x7F, 0x69, 0x6B, 0xEB, 0x2C, 0xED, 0x6C, 0xEC, +0xAD, 0xEC, 0xE0, 0xF0, 0x8F, 0xC0, 0xA2, 0xA2, +0xE0, 0xF0, 0xD0, 0xA0, 0x2C, 0xED, 0x6C, 0xEE, +0xAD, 0xEE, 0xE0, 0xF0, 0xD0, 0xC0, 0xA3, 0xA2, +0x01, 0x6B, 0x2C, 0xEE, 0xE5, 0x67, 0x6C, 0xEF, 0x1F, 0x65, 0xE0, 0xF0, 0xF1, 0xA0, 0x02, 0x6D, 0xAB, 0xED, 0xAC, 0xEF, 0xB8, 0x67, 0xAD, 0xEF, -0xE0, 0xF0, 0xF1, 0xC0, 0xA3, 0xA3, 0x4C, 0xEF, +0xE0, 0xF0, 0xF1, 0xC0, 0xA3, 0xA2, 0x6C, 0xEF, 0xA6, 0x35, 0xA4, 0x35, 0xAD, 0xEF, 0xE0, 0xF0, -0xF1, 0xC0, 0xE4, 0xA3, 0x05, 0x6D, 0xAB, 0xED, -0xEA, 0x37, 0x4C, 0xEF, 0xE8, 0x37, 0xFF, 0x65, +0xF1, 0xC0, 0xE4, 0xA2, 0x05, 0x6D, 0xAB, 0xED, +0xEA, 0x37, 0x6C, 0xEF, 0xE8, 0x37, 0xFF, 0x65, 0xE0, 0xF0, 0xF2, 0xA0, 0x1D, 0x65, 0xAC, 0xEF, 0xBF, 0x67, 0xAD, 0xEF, 0xE0, 0xF0, 0xF2, 0xC0, -0xA2, 0xA3, 0xBE, 0x35, 0xBC, 0x35, 0xAD, 0xEE, -0xE0, 0xF0, 0xD0, 0xC0, 0xC4, 0xA3, 0x02, 0x6D, -0xAB, 0xED, 0xD6, 0x36, 0x4C, 0xEE, 0xD4, 0x36, +0xA2, 0xA2, 0xBE, 0x35, 0xBC, 0x35, 0xAD, 0xEE, +0xE0, 0xF0, 0xD0, 0xC0, 0xC4, 0xA2, 0x02, 0x6D, +0xAB, 0xED, 0xD6, 0x36, 0x6C, 0xEE, 0xD4, 0x36, 0xFE, 0x65, 0x21, 0x6E, 0xCB, 0xEE, 0xEC, 0xEE, 0xFF, 0x67, 0xED, 0xEE, 0xE0, 0xF0, 0xD2, 0xC0, -0xE4, 0xA3, 0x2C, 0xEE, 0xFE, 0x37, 0xFC, 0x37, -0xED, 0xEE, 0xE0, 0xF0, 0xD2, 0xC0, 0xE4, 0xA3, -0xAC, 0xEE, 0x4C, 0xEF, 0xED, 0xEE, 0xE0, 0xF0, -0xD2, 0xC0, 0xE6, 0xA3, 0xA7, 0x67, 0x4C, 0xED, +0xE4, 0xA2, 0x2C, 0xEE, 0xFE, 0x37, 0xFC, 0x37, +0xED, 0xEE, 0xE0, 0xF0, 0xD2, 0xC0, 0xE4, 0xA2, +0xAC, 0xEE, 0x6C, 0xEF, 0xED, 0xEE, 0xE0, 0xF0, +0xD2, 0xC0, 0xE6, 0xA2, 0xA7, 0x67, 0x6C, 0xED, 0xE0, 0xF0, 0xF4, 0xA0, 0xFD, 0x65, 0x02, 0x6D, 0xAB, 0xED, 0xAC, 0xEF, 0xBF, 0x67, 0xAD, 0xEF, -0xE0, 0xF0, 0xF4, 0xC0, 0xA6, 0xA3, 0xA6, 0x35, -0x4C, 0xED, 0xA4, 0x35, 0xFD, 0x65, 0x03, 0x6D, +0xE0, 0xF0, 0xF4, 0xC0, 0xA6, 0xA2, 0xA6, 0x35, +0x6C, 0xED, 0xA4, 0x35, 0xFD, 0x65, 0x03, 0x6D, 0xAB, 0xED, 0xEC, 0xED, 0xFF, 0x67, 0xED, 0xED, -0xE0, 0xF0, 0xB4, 0xC0, 0x66, 0xA3, 0xF8, 0x67, -0xEC, 0xED, 0x6A, 0x33, 0x4C, 0xEB, 0x68, 0x33, -0x6D, 0xED, 0x20, 0x6B, 0x6C, 0xEE, 0xE0, 0xF0, +0xE0, 0xF0, 0xB4, 0xC0, 0x46, 0xA2, 0xF8, 0x67, +0xEC, 0xED, 0x4A, 0x32, 0x6C, 0xEA, 0x48, 0x32, +0x20, 0x6F, 0x4D, 0xED, 0xEC, 0xEE, 0xE0, 0xF0, 0xB4, 0xC0, 0x09, 0x2E, 0xE0, 0xF0, 0xAE, 0xA0, -0x2C, 0xEC, 0xFF, 0x68, 0xB6, 0x35, 0x4E, 0xED, -0x0C, 0xEC, 0x4C, 0xED, 0x13, 0x10, 0x02, 0x6A, -0xAC, 0xEA, 0xFF, 0x6D, 0xAC, 0xEA, 0x11, 0x22, -0xE0, 0xF0, 0x4E, 0xA0, 0x4C, 0xEB, 0xAC, 0xEB, -0x05, 0x23, 0x2C, 0xEC, 0xAC, 0xEC, 0x80, 0x18, -0x14, 0x3B, 0x2C, 0x10, 0x2C, 0xEC, 0xFF, 0x6E, -0xCC, 0xEC, 0x01, 0x6D, 0x80, 0x18, 0x09, 0x3B, -0x25, 0x10, 0xE0, 0xF0, 0x4E, 0xA0, 0xFF, 0x6F, -0x6C, 0xEA, 0xEC, 0xEA, 0x04, 0x22, 0x2C, 0xEC, -0xEC, 0xEC, 0x00, 0x6D, 0xF3, 0x17, 0xFF, 0x6A, -0x2C, 0xEC, 0x4C, 0xEC, 0x80, 0x18, 0x14, 0x3B, +0x2C, 0xEC, 0xFF, 0x68, 0xB6, 0x35, 0x6E, 0xED, +0x0C, 0xEC, 0x6C, 0xED, 0x13, 0x10, 0x02, 0x6A, +0xAC, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x11, 0x22, +0xE0, 0xF0, 0x4E, 0xA0, 0x4C, 0xEF, 0x6C, 0xEF, +0x05, 0x27, 0x2C, 0xEC, 0x6C, 0xEC, 0x80, 0x18, +0x83, 0x38, 0x2C, 0x10, 0xFF, 0x6D, 0x2C, 0xEC, +0xAC, 0xEC, 0x01, 0x6D, 0x80, 0x18, 0x78, 0x38, +0x25, 0x10, 0xE0, 0xF0, 0x4E, 0xA0, 0xFF, 0x6E, +0xEC, 0xEA, 0xCC, 0xEA, 0x04, 0x22, 0x2C, 0xEC, +0xCC, 0xEC, 0x00, 0x6D, 0xF3, 0x17, 0xFF, 0x6F, +0x2C, 0xEC, 0xEC, 0xEC, 0x80, 0x18, 0x83, 0x38, 0xE0, 0xF0, 0x72, 0xA0, 0x7F, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x81, 0x72, -0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0x88, 0x9A, 0x80, 0x18, 0x95, 0x57, 0xE0, 0xF0, +0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x9C, 0x9A, 0x80, 0x18, 0xDB, 0x5C, 0xE0, 0xF0, 0x4F, 0xA0, 0xFF, 0x6C, 0x4C, 0xE9, 0x2C, 0xEC, -0x80, 0x18, 0x25, 0x3B, 0x80, 0x18, 0x06, 0x09, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, +0x80, 0x18, 0x94, 0x38, 0x80, 0x18, 0x31, 0x06, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0x92, 0xA2, 0x03, 0x6B, 0x8C, 0xEB, 0x01, 0x73, 0x0F, 0x61, 0x80, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, -0x83, 0xF2, 0x84, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, -0x64, 0xDA, 0x00, 0x18, 0xD9, 0xDD, 0x30, 0xF0, -0x20, 0x6A, 0x05, 0x6B, 0x2B, 0xF4, 0x74, 0xC2, +0xA4, 0xF1, 0x98, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x00, 0x18, 0x0A, 0xE3, 0x30, 0xF0, +0x20, 0x6A, 0x05, 0x6B, 0x4D, 0xF0, 0x64, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0x6B, 0xF2, 0x1D, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x4C, 0xF6, 0x17, 0x4C, 0x00, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x80, 0xF2, 0x48, 0x98, 0x30, 0xF0, -0x20, 0x6C, 0xCB, 0xF1, 0x04, 0x4C, 0x00, 0x6D, -0x34, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0x86, 0xF7, 0x15, 0x4C, +0x20, 0x6C, 0x8C, 0xF5, 0x0C, 0x4C, 0x00, 0x6D, +0x40, 0x6E, 0x40, 0xEA, 0x80, 0xF2, 0x48, 0x98, +0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF3, 0x05, 0x4C, 0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, 0x80, 0xF2, -0x48, 0x98, 0x30, 0xF0, 0x20, 0x6C, 0x86, 0xF7, -0x0E, 0x4C, 0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, -0x80, 0x18, 0x3B, 0x07, 0x80, 0x18, 0x1E, 0x14, -0x80, 0x18, 0x12, 0x13, 0x05, 0x97, 0x04, 0x90, +0x48, 0x98, 0x30, 0xF0, 0x20, 0x6C, 0xE8, 0xF2, +0x1E, 0x4C, 0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, +0x80, 0x18, 0x52, 0x04, 0x80, 0x18, 0x97, 0x11, +0x80, 0x18, 0x83, 0x10, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0x70, 0x9B, 0xFF, 0x68, 0x49, 0xE4, +0x64, 0xF1, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF2, 0x70, 0x9B, 0xFF, 0x68, 0x49, 0xE4, 0x0C, 0xED, 0x05, 0xD5, 0x04, 0xD2, 0x6D, 0xE4, 0x40, 0xA2, 0xA0, 0xA3, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF3, 0x30, 0x9B, 0x0C, 0xED, 0x25, 0xE4, +0x84, 0xF2, 0x34, 0x9B, 0x0C, 0xED, 0x25, 0xE4, 0xC0, 0xA1, 0x90, 0x67, 0x4C, 0xEC, 0x0C, 0xEE, -0x80, 0x18, 0xC3, 0x06, 0x06, 0xD2, 0x80, 0xA1, -0x0C, 0xEC, 0x80, 0x18, 0xB3, 0x06, 0x22, 0x67, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x84, 0xF5, 0xD5, 0xA2, 0x07, 0x5E, 0x33, 0x60, -0x84, 0xF5, 0x75, 0x82, 0x01, 0x6A, 0x44, 0xEB, -0x14, 0x6B, 0x4C, 0xEB, 0x18, 0x2B, 0x62, 0x6B, -0x4C, 0xEB, 0x29, 0x23, 0x30, 0xF0, 0x20, 0x68, -0x05, 0x95, 0x0B, 0xF4, 0x04, 0x48, 0x90, 0x67, -0x80, 0x18, 0xAD, 0x00, 0x04, 0x93, 0x06, 0x94, +0x80, 0x18, 0xEF, 0x03, 0x06, 0xD2, 0x80, 0xA1, +0x0C, 0xEC, 0x80, 0x18, 0xDF, 0x03, 0x22, 0x67, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x24, 0xF6, 0xD5, 0xA2, 0x18, 0x5E, 0x36, 0x60, +0x24, 0xF6, 0x75, 0x82, 0x01, 0x6A, 0x44, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF2, 0x78, 0x9B, +0x4C, 0xEB, 0x18, 0x2B, 0x62, 0x6B, 0x4C, 0xEB, +0x29, 0x23, 0x30, 0xF0, 0x20, 0x68, 0x05, 0x95, +0x0D, 0xF0, 0x14, 0x48, 0x90, 0x67, 0x80, 0x18, +0x7D, 0x00, 0x04, 0x93, 0x06, 0x94, 0x89, 0xE3, +0x2B, 0xE2, 0x25, 0xE0, 0x04, 0x10, 0x60, 0xA0, +0x01, 0x48, 0x60, 0xC2, 0x01, 0x4A, 0x2A, 0xE8, +0xFA, 0x61, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x68, +0x05, 0x95, 0x0D, 0xF0, 0x14, 0x48, 0x90, 0x67, +0x80, 0x18, 0x62, 0x00, 0x04, 0x93, 0x06, 0x94, 0x89, 0xE3, 0x2B, 0xE2, 0x25, 0xE0, 0x04, 0x10, 0x60, 0xA0, 0x01, 0x48, 0x60, 0xC2, 0x01, 0x4A, -0x2A, 0xE8, 0xFA, 0x61, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x68, 0x05, 0x95, 0x0B, 0xF4, 0x04, 0x48, -0x90, 0x67, 0x80, 0x18, 0x92, 0x00, 0x04, 0x93, -0x06, 0x94, 0x89, 0xE3, 0x2B, 0xE2, 0x25, 0xE0, -0x04, 0x10, 0x60, 0xA0, 0x01, 0x48, 0x60, 0xC2, -0x01, 0x4A, 0x2A, 0xE8, 0xFA, 0x61, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0x2A, 0xE8, 0xFA, 0x61, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6B, 0xE8, 0xF2, 0xBE, 0xA3, 0x80, 0x6B, +0x6B, 0xEB, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, +0x4C, 0xEC, 0x14, 0x23, 0xA0, 0x74, 0x04, 0x6B, +0x01, 0x60, 0x08, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x50, 0x9A, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x64, 0xF3, +0x9C, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, 0x64, 0xF3, +0x7C, 0xC2, 0x0A, 0x10, 0xA0, 0x74, 0x4E, 0x6B, +0x01, 0x60, 0x4D, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x50, 0x9A, 0x6B, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xE0, 0xF0, 0x88, 0xA0, 0x00, 0x6D, 0x00, 0x18, +0x1A, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x58, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, +0xE0, 0xF0, 0x87, 0xA0, 0x80, 0x18, 0x00, 0x40, +0xC0, 0xF0, 0x64, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xC0, 0xF0, 0x44, 0xC0, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA4, 0xF3, 0x4E, 0xA0, 0xFF, 0x69, 0x64, 0x67, +0x2C, 0xED, 0x2C, 0xEB, 0x04, 0xD5, 0x05, 0xD2, +0x65, 0x2A, 0xA0, 0xF0, 0x56, 0xA0, 0x01, 0x6C, +0x8C, 0xEA, 0x2C, 0xEA, 0x5F, 0x22, 0x45, 0xF1, +0x54, 0xA0, 0x5C, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF4, 0x44, 0x9A, 0x85, 0x67, 0xA3, 0x67, +0x40, 0xEA, 0x0A, 0x22, 0x5D, 0x67, 0x67, 0x42, +0x0D, 0x4B, 0x40, 0xA3, 0x01, 0x6B, 0x45, 0xF1, +0x76, 0xC0, 0x45, 0xF1, 0x54, 0xC0, 0x4A, 0x10, +0xA0, 0xF0, 0x78, 0xA0, 0x45, 0xF1, 0x54, 0xA0, +0x63, 0xEA, 0x35, 0x61, 0xA0, 0xF0, 0x76, 0xA0, +0x08, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x1E, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, +0x4B, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0xE0, 0xF0, +0x88, 0xA0, 0x00, 0x6D, 0x00, 0x18, 0x1A, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x58, 0x9A, +0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x04, 0x94, +0x80, 0x18, 0x00, 0x40, 0xC0, 0xF0, 0x64, 0xA0, +0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xC0, 0xF0, +0x44, 0xC0, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x50, 0x9A, 0x10, 0x6B, 0x01, 0x6C, +0x60, 0xC2, 0x80, 0x18, 0x53, 0x06, 0xA0, 0xF0, +0x76, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xA0, 0xF0, 0x56, 0xC0, 0x0F, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x40, 0xF4, 0x50, 0x9A, 0xA0, 0xF0, +0x8A, 0xA0, 0x04, 0x97, 0x02, 0x6D, 0x08, 0x6E, +0x40, 0xEA, 0x45, 0xF1, 0x54, 0xA0, 0x01, 0x4A, +0x45, 0xF1, 0x54, 0xC0, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, 0x09, 0xD5, 0x24, 0x67, 0x40, 0xEA, 0x0C, 0x6B, @@ -63544,23 +64696,23 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x51, 0x61, 0x09, 0x93, 0x87, 0x41, 0xC0, 0xF3, 0x40, 0x98, 0x07, 0x4C, 0x71, 0xE4, 0x40, 0xEA, 0x08, 0x6B, 0x6C, 0xEA, 0x17, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0x99, 0xA2, 0x01, 0x6B, 0x6C, 0xEC, 0x02, 0x24, 0x50, 0x6B, 0x34, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0x03, 0xF2, 0x98, 0x9C, 0x60, 0xC4, 0x24, 0xF3, -0x84, 0xA2, 0x8D, 0xEB, 0x24, 0xF3, 0x64, 0xC2, +0x44, 0xF1, 0x90, 0x9C, 0x60, 0xC4, 0x64, 0xF3, +0x9C, 0xA2, 0x8D, 0xEB, 0x64, 0xF3, 0x7C, 0xC2, 0x01, 0x6A, 0x30, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, 0xB5, 0xA2, +0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0xB5, 0xA2, 0xFF, 0x6C, 0x6C, 0xED, 0x0E, 0x25, 0xE0, 0xF0, 0xBC, 0xA2, 0x02, 0x75, 0x05, 0x61, 0xE0, 0xF0, 0xB6, 0xA2, 0xAC, 0xEB, 0x8C, 0xEB, 0x0B, 0x23, -0x09, 0x95, 0x91, 0x67, 0x80, 0x18, 0xCD, 0x02, +0x09, 0x95, 0x91, 0x67, 0x80, 0x18, 0x54, 0x02, 0xE7, 0x17, 0xE0, 0xF0, 0xAE, 0xA2, 0x40, 0x6B, 0xAC, 0xEB, 0x8C, 0xEB, 0x0A, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF2, 0x78, 0x9B, 0x02, 0x6C, -0x80, 0xC3, 0x24, 0xF3, 0x84, 0xA2, 0x01, 0x6B, +0x20, 0x6B, 0x44, 0xF1, 0x70, 0x9B, 0x02, 0x6C, +0x80, 0xC3, 0x64, 0xF3, 0x9C, 0xA2, 0x01, 0x6B, 0xD4, 0x17, 0x4F, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0x6B, 0xEB, 0x60, 0xC2, +0x44, 0xF1, 0x50, 0x9A, 0x6B, 0xEB, 0x60, 0xC2, 0xCF, 0x17, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, @@ -63568,1213 +64720,1181 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xFF, 0x69, 0x04, 0x00, 0x8C, 0xE9, 0x00, 0x6D, 0x90, 0x67, 0x08, 0x6E, 0x40, 0xEA, 0x01, 0x6A, 0x2C, 0xEA, 0x12, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, 0x7C, 0xA2, -0x30, 0xF0, 0x20, 0x6D, 0x90, 0x67, 0x84, 0xF5, +0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0x7C, 0xA2, +0x30, 0xF0, 0x20, 0x6D, 0x90, 0x67, 0x24, 0xF6, 0x75, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x2B, 0xF4, 0x1C, 0x4D, 0x39, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE0, 0xF0, 0x7D, 0xA2, 0x84, 0xF5, 0x75, 0xC2, -0x84, 0xF5, 0x54, 0xA2, 0x01, 0x72, 0x10, 0x60, +0x4C, 0x9A, 0x4D, 0xF0, 0x0C, 0x4D, 0x39, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xE0, 0xF0, 0x7D, 0xA2, 0x24, 0xF6, 0x75, 0xC2, +0x24, 0xF6, 0x54, 0xA2, 0x01, 0x72, 0x10, 0x60, 0x05, 0x22, 0x02, 0x72, 0x17, 0x60, 0x03, 0x72, 0x1F, 0x60, 0x29, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF2, 0x4C, 0x9A, -0x90, 0x67, 0x4B, 0xF4, 0x04, 0x4D, 0x1D, 0x10, +0x90, 0x67, 0x4D, 0xF0, 0x14, 0x4D, 0x1D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6D, -0x80, 0xF2, 0x4C, 0x9A, 0x90, 0x67, 0x4B, 0xF4, -0x0C, 0x4D, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x90, 0x67, 0x4D, 0xF0, +0x1C, 0x4D, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF2, 0x4C, 0x9A, -0x90, 0x67, 0x4B, 0xF4, 0x14, 0x4D, 0x09, 0x10, +0x90, 0x67, 0x6D, 0xF0, 0x04, 0x4D, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0x30, 0xF0, 0x20, 0x6D, 0x90, 0x67, 0x4B, 0xF4, -0x1C, 0x4D, 0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x84, 0xF5, -0xB5, 0xA2, 0x07, 0x5D, 0x5A, 0x60, 0x84, 0xF5, -0x75, 0x82, 0x01, 0x6A, 0x44, 0xEB, 0x14, 0x6B, -0x4C, 0xEB, 0x07, 0x2B, 0x62, 0x6B, 0x4C, 0xEB, -0x50, 0x23, 0x04, 0x04, 0x80, 0x18, 0xEE, 0x00, -0x03, 0x10, 0x04, 0x04, 0x80, 0x18, 0xCA, 0x00, -0x02, 0x67, 0x41, 0x22, 0x01, 0x6A, 0x2C, 0xEA, -0x09, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9A, 0x2B, 0xF4, -0x1C, 0x4C, 0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF4, 0x54, 0xA2, 0x01, 0x72, 0x0F, 0x60, -0x05, 0x22, 0x02, 0x72, 0x15, 0x60, 0x03, 0x72, -0x1C, 0x60, 0x29, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6D, 0x90, 0x67, 0x6D, 0xF0, +0x0C, 0x4D, 0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x24, 0xF6, +0xB5, 0xA2, 0x18, 0x5D, 0x5D, 0x60, 0x24, 0xF6, +0x75, 0x82, 0x01, 0x6A, 0x44, 0xEB, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF2, 0x78, 0x9B, 0x4C, 0xEB, +0x07, 0x2B, 0x62, 0x6B, 0x4C, 0xEB, 0x50, 0x23, +0x04, 0x04, 0x80, 0x18, 0xBE, 0x00, 0x03, 0x10, +0x04, 0x04, 0x80, 0x18, 0x9A, 0x00, 0x02, 0x67, +0x41, 0x22, 0x01, 0x6A, 0x2C, 0xEA, 0x09, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF2, 0x4C, 0x9A, 0x4D, 0xF0, 0x0C, 0x4C, +0x2F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x4D, 0xF0, +0x44, 0xA2, 0x01, 0x72, 0x0F, 0x60, 0x05, 0x22, +0x02, 0x72, 0x15, 0x60, 0x03, 0x72, 0x1C, 0x60, +0x29, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9A, 0x4D, 0xF0, +0x14, 0x4C, 0x1A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9A, -0x4B, 0xF4, 0x04, 0x4C, 0x1A, 0x10, 0x30, 0xF0, +0x4D, 0xF0, 0x1C, 0x4C, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF2, -0x4C, 0x9A, 0x4B, 0xF4, 0x0C, 0x4C, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0x80, 0xF2, 0x4C, 0x9A, 0x4B, 0xF4, 0x14, 0x4C, -0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x4B, 0xF4, -0x1C, 0x4C, 0x30, 0xF0, 0x20, 0x6D, 0xCB, 0xF1, -0x1B, 0x4D, 0x08, 0x6E, 0x40, 0xEA, 0x50, 0x67, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x01, 0x68, 0xB7, 0x17, 0x00, 0x65, -0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, -0xFF, 0x6A, 0x0F, 0xD2, 0x7D, 0x67, 0x60, 0xF0, -0x68, 0xA3, 0x18, 0xD6, 0xDD, 0x67, 0x10, 0xD3, -0x60, 0xF0, 0xCC, 0xA6, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x50, 0x9A, 0x16, 0xD4, 0x17, 0xD5, -0x19, 0xD7, 0x11, 0xD6, 0x40, 0xA2, 0xFF, 0x6B, -0x4C, 0xEB, 0x0F, 0xD3, 0x00, 0x18, 0xA0, 0xD3, -0x1C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0x00, 0x6C, 0xFF, 0x6D, 0x39, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x5C, 0x9A, 0x00, 0x68, 0x40, 0xEA, 0x01, 0x72, -0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA0, 0xF2, 0x54, 0x9A, 0xA6, 0xF7, -0x85, 0xA3, 0x01, 0x6D, 0x18, 0x6E, 0xF0, 0x67, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA0, 0xF2, 0x54, 0x9A, 0xA6, 0xF7, -0x85, 0xA3, 0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, -0x40, 0xEA, 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0x54, 0x9A, -0xA3, 0xF2, 0x70, 0x9B, 0x49, 0xE0, 0x6D, 0xE0, -0x80, 0xA2, 0xA0, 0xA3, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x7C, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, -0x6D, 0xE0, 0xC0, 0xA3, 0x4C, 0xED, 0x4C, 0xEE, -0x80, 0x18, 0xC3, 0x06, 0x10, 0x95, 0x87, 0x40, -0x29, 0x4C, 0x22, 0x67, 0x80, 0x18, 0x79, 0x0D, -0x11, 0x96, 0x0F, 0x2E, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6D, 0xE3, 0xF2, 0x4C, 0x9A, -0xC3, 0xF3, 0xB8, 0x9D, 0x16, 0x94, 0x49, 0xE0, -0xB5, 0xE0, 0x29, 0xE2, 0x18, 0x93, 0x35, 0xE5, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x70, 0x9A, 0x0E, 0x04, 0x04, 0x02, 0x6D, 0xE0, -0x2D, 0xE3, 0x27, 0x10, 0xC0, 0xA4, 0x01, 0x4C, -0xC0, 0xC2, 0xE0, 0xA3, 0xC8, 0x42, 0xF8, 0x4E, -0xE0, 0xC6, 0xC0, 0xA3, 0x01, 0x4B, 0xD8, 0xC2, -0x01, 0x4A, 0xAA, 0xEA, 0xF3, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x88, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x74, 0x9A, 0x91, 0xE0, -0x00, 0x6A, 0x6D, 0xE0, 0x2D, 0xE3, 0x17, 0x96, -0x55, 0xE6, 0xA0, 0xA5, 0xA0, 0xC4, 0x19, 0x96, -0x01, 0x4C, 0x55, 0xE6, 0xA0, 0xA5, 0x01, 0x4A, -0x06, 0x72, 0xA0, 0xC3, 0x01, 0x4B, 0xF3, 0x61, -0xD0, 0x17, 0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, -0x01, 0x4A, 0x8A, 0xEA, 0xFA, 0x61, 0x16, 0x94, -0x18, 0x95, 0x3A, 0x6F, 0x20, 0x6E, 0x80, 0x18, -0x04, 0x06, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, -0x5C, 0x9B, 0x38, 0x48, 0x21, 0xE0, 0x30, 0xF0, -0x20, 0x6E, 0x90, 0x67, 0x0E, 0xD0, 0x28, 0x6D, -0xCB, 0xF3, 0x1C, 0x4E, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xEA, 0xA6, 0xF6, 0x00, 0x48, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF4, 0x54, 0x9A, 0x0E, 0x95, -0x00, 0xF1, 0xC5, 0xA0, 0x3A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6E, 0xA0, 0xF3, 0x5C, 0x9E, -0x0E, 0x94, 0x28, 0x6D, 0x04, 0x06, 0x40, 0xEA, -0xE0, 0xF0, 0x5C, 0xA0, 0x02, 0x72, 0x05, 0x61, -0x00, 0xF1, 0x85, 0xA0, 0xB1, 0x67, 0x80, 0x18, -0x1D, 0x0A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x20, 0x9A, 0xFF, 0x68, 0x02, 0x6B, 0x40, 0xA1, -0x00, 0x6C, 0x3A, 0x6E, 0x0C, 0xEA, 0x6D, 0xEA, -0x0C, 0xEA, 0x40, 0xC1, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x0F, 0x95, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, -0x40, 0xEA, 0x06, 0x2A, 0x40, 0xA1, 0x20, 0x6B, +0x4C, 0x9A, 0x6D, 0xF0, 0x04, 0x4C, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xF0, 0x0C, 0x4C, +0x30, 0xF0, 0x20, 0x6D, 0xAC, 0xF5, 0x04, 0x4D, +0x08, 0x6E, 0x40, 0xEA, 0x50, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x01, 0x68, 0xB7, 0x17, 0xF5, 0x63, 0x15, 0x62, +0x14, 0xD1, 0x13, 0xD0, 0xFF, 0x6A, 0x0F, 0xD2, +0x7D, 0x67, 0x60, 0xF0, 0x68, 0xA3, 0x18, 0xD6, +0xDD, 0x67, 0x10, 0xD3, 0x60, 0xF0, 0xCC, 0xA6, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x44, 0x9A, +0x16, 0xD4, 0x17, 0xD5, 0x19, 0xD7, 0x11, 0xD6, +0x40, 0xA2, 0xFF, 0x6B, 0x4C, 0xEB, 0x0F, 0xD3, +0x00, 0x18, 0x95, 0xD8, 0x1C, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6C, +0xFF, 0x6D, 0x39, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, 0x00, 0x68, +0x40, 0xEA, 0x01, 0x72, 0x19, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, +0x54, 0x9A, 0x08, 0xF3, 0x95, 0xA3, 0x01, 0x6D, +0x18, 0x6E, 0xF0, 0x67, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, +0x54, 0x9A, 0x08, 0xF3, 0x95, 0xA3, 0x01, 0x6D, +0x18, 0x6E, 0x00, 0x6F, 0x40, 0xEA, 0x02, 0x67, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF1, 0x4C, 0x9A, 0xE4, 0xF1, 0x64, 0x9B, +0x49, 0xE0, 0x6D, 0xE0, 0x80, 0xA2, 0xA0, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, 0x74, 0x9B, +0xFF, 0x6A, 0x4C, 0xEC, 0x6D, 0xE0, 0xC0, 0xA3, +0x4C, 0xED, 0x4C, 0xEE, 0x80, 0x18, 0xEF, 0x03, +0x10, 0x95, 0x87, 0x40, 0x29, 0x4C, 0x22, 0x67, +0x80, 0x18, 0xD9, 0x0A, 0x11, 0x96, 0x0F, 0x2E, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6D, +0x64, 0xF2, 0x48, 0x9A, 0xA4, 0xF2, 0xB4, 0x9D, +0x16, 0x94, 0x49, 0xE0, 0xB5, 0xE0, 0x29, 0xE2, +0x18, 0x93, 0x35, 0xE5, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF2, 0x64, 0x9A, 0x0E, 0x04, +0x04, 0x02, 0x6D, 0xE0, 0x2D, 0xE3, 0x27, 0x10, +0xC0, 0xA4, 0x01, 0x4C, 0xC0, 0xC2, 0xE0, 0xA3, +0xC8, 0x42, 0xF8, 0x4E, 0xE0, 0xC6, 0xC0, 0xA3, +0x01, 0x4B, 0xD8, 0xC2, 0x01, 0x4A, 0xAA, 0xEA, +0xF3, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF2, +0x8C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF2, +0x70, 0x9A, 0x91, 0xE0, 0x00, 0x6A, 0x6D, 0xE0, +0x2D, 0xE3, 0x17, 0x96, 0x55, 0xE6, 0xA0, 0xA5, +0xA0, 0xC4, 0x19, 0x96, 0x01, 0x4C, 0x55, 0xE6, +0xA0, 0xA5, 0x01, 0x4A, 0x06, 0x72, 0xA0, 0xC3, +0x01, 0x4B, 0xF3, 0x61, 0xD0, 0x17, 0xA0, 0xA3, +0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, 0x8A, 0xEA, +0xFA, 0x61, 0x16, 0x94, 0x18, 0x95, 0x3A, 0x6F, +0x20, 0x6E, 0x80, 0x18, 0x2A, 0x03, 0x30, 0xF0, +0x20, 0x6B, 0xA0, 0xF3, 0x5C, 0x9B, 0x38, 0x48, +0x21, 0xE0, 0x30, 0xF0, 0x20, 0x6E, 0x90, 0x67, +0x0E, 0xD0, 0x28, 0x6D, 0xEC, 0xF7, 0x0C, 0x4E, +0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x08, 0xF2, +0x10, 0x48, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x54, 0x9A, 0x0E, 0x95, 0x00, 0xF1, 0xC5, 0xA0, +0x3A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6E, +0xA0, 0xF3, 0x5C, 0x9E, 0x0E, 0x94, 0x28, 0x6D, +0x04, 0x06, 0x40, 0xEA, 0xE0, 0xF0, 0x5C, 0xA0, +0x02, 0x72, 0x05, 0x61, 0x00, 0xF1, 0x85, 0xA0, +0xB1, 0x67, 0x80, 0x18, 0xFD, 0x06, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF2, 0x20, 0x9A, 0xFF, 0x68, +0x02, 0x6B, 0x40, 0xA1, 0x00, 0x6C, 0x3A, 0x6E, 0x0C, 0xEA, 0x6D, 0xEA, 0x0C, 0xEA, 0x40, 0xC1, -0x15, 0x97, 0x14, 0x91, 0x13, 0x90, 0x0B, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF1, 0x63, 0x1D, 0x62, -0x1C, 0xD1, 0x1B, 0xD0, 0x00, 0x6A, 0x7D, 0x67, -0x1E, 0xD4, 0x1F, 0xD5, 0x06, 0xD2, 0x4E, 0xCB, -0x08, 0xD2, 0x09, 0xD2, 0x0A, 0xD2, 0x0B, 0xD2, -0x0C, 0xD2, 0x0D, 0xD2, 0x0E, 0xD2, 0x0F, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x58, 0x9A, -0x1E, 0x94, 0x1F, 0x95, 0x40, 0xEA, 0x01, 0x72, -0x00, 0xF1, 0x0A, 0x61, 0x1E, 0x94, 0x1F, 0x93, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, -0x0E, 0x4C, 0x71, 0xE4, 0x40, 0xEA, 0x3A, 0x72, -0xE0, 0xF0, 0x1E, 0x61, 0x1E, 0x94, 0x1F, 0x93, -0xC0, 0xF3, 0x40, 0x98, 0x30, 0x4C, 0x71, 0xE4, -0x40, 0xEA, 0x87, 0x72, 0xE0, 0xF0, 0x14, 0x61, -0x1E, 0x90, 0x1F, 0x92, 0x10, 0x03, 0x38, 0x48, -0x41, 0xE0, 0x0C, 0x01, 0x16, 0xD3, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x90, 0x67, -0x01, 0x48, 0x40, 0xEA, 0x40, 0xC1, 0x16, 0x92, -0x01, 0x49, 0x4A, 0xE9, 0xF4, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF3, 0x0D, 0x4B, 0x12, 0xD3, -0x00, 0x68, 0x38, 0x6C, 0x98, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x12, 0xEC, -0x4D, 0xE4, 0xC4, 0xF4, 0xAC, 0xA3, 0x01, 0x6B, -0xAC, 0xEB, 0xC0, 0xF0, 0x0F, 0x23, 0x89, 0xE2, -0xC4, 0xF4, 0x0E, 0x4A, 0x13, 0xD2, 0x14, 0xD2, -0x00, 0x69, 0xBC, 0x10, 0xE0, 0xA2, 0xC0, 0xA4, -0x01, 0x4A, 0x01, 0x4C, 0xEE, 0xEE, 0x01, 0x5E, -0xD8, 0x67, 0xCB, 0xEE, 0xAA, 0xEA, 0xCC, 0xEB, -0xF5, 0x61, 0x01, 0x73, 0xA0, 0xF0, 0x00, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x60, 0x9A, -0xFF, 0x6C, 0x06, 0x6D, 0x40, 0xA3, 0xAB, 0xED, -0x8C, 0xEA, 0xAC, 0xEA, 0x01, 0x6D, 0xAD, 0xEA, -0x8C, 0xEA, 0x40, 0xC3, 0x1E, 0x92, 0x1F, 0x93, -0x4A, 0x4A, 0x69, 0xE2, 0x11, 0xD2, 0x00, 0xF0, -0x1E, 0x03, 0x06, 0x02, 0x10, 0xD2, 0x17, 0xD3, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, -0x11, 0x94, 0x40, 0xEA, 0x10, 0x93, 0x40, 0xC3, -0x11, 0x92, 0x01, 0x4B, 0x10, 0xD3, 0x01, 0x4A, -0x11, 0xD2, 0x17, 0x92, 0x4A, 0xEB, 0xF0, 0x61, -0x1E, 0x92, 0x1F, 0x93, 0x10, 0x4A, 0x69, 0xE2, -0x11, 0xD2, 0x0C, 0x03, 0x08, 0x02, 0x10, 0xD2, -0x18, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x40, 0x9A, 0x11, 0x94, 0x40, 0xEA, 0x10, 0x93, -0x40, 0xC3, 0x11, 0x92, 0x01, 0x4B, 0x10, 0xD3, -0x01, 0x4A, 0x11, 0xD2, 0x18, 0x92, 0x4A, 0xEB, -0xF0, 0x61, 0x38, 0x6C, 0x98, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0x01, 0x6D, -0x12, 0xEC, 0x69, 0xE4, 0xC4, 0xF4, 0x4C, 0xA2, -0x46, 0x32, 0xAC, 0xEA, 0x30, 0x22, 0x70, 0x10, -0xE0, 0xA2, 0xC0, 0xA3, 0x01, 0x4A, 0x01, 0x4B, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0x0F, 0x95, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x06, 0x2A, +0x40, 0xA1, 0x20, 0x6B, 0x0C, 0xEA, 0x6D, 0xEA, +0x0C, 0xEA, 0x40, 0xC1, 0x15, 0x97, 0x14, 0x91, +0x13, 0x90, 0x0B, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF1, 0x63, 0x1D, 0x62, 0x1C, 0xD1, 0x1B, 0xD0, +0x00, 0x6A, 0x7D, 0x67, 0x1E, 0xD4, 0x1F, 0xD5, +0x06, 0xD2, 0x4E, 0xCB, 0x08, 0xD2, 0x09, 0xD2, +0x0A, 0xD2, 0x0B, 0xD2, 0x0C, 0xD2, 0x0D, 0xD2, +0x0E, 0xD2, 0x0F, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x58, 0x9A, 0x1E, 0x94, 0x1F, 0x95, +0x40, 0xEA, 0x01, 0x72, 0x00, 0xF1, 0x0A, 0x61, +0x1E, 0x94, 0x1F, 0x93, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x40, 0x98, 0x0E, 0x4C, 0x71, 0xE4, +0x40, 0xEA, 0x3A, 0x72, 0xE0, 0xF0, 0x1E, 0x61, +0x1E, 0x94, 0x1F, 0x93, 0xC0, 0xF3, 0x40, 0x98, +0x30, 0x4C, 0x71, 0xE4, 0x40, 0xEA, 0x87, 0x72, +0xE0, 0xF0, 0x14, 0x61, 0x1E, 0x90, 0x1F, 0x92, +0x10, 0x03, 0x38, 0x48, 0x41, 0xE0, 0x0C, 0x01, +0x16, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x40, 0x9A, 0x90, 0x67, 0x01, 0x48, 0x40, 0xEA, +0x40, 0xC1, 0x16, 0x92, 0x01, 0x49, 0x4A, 0xE9, +0xF4, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x6C, 0xF7, +0x1D, 0x4B, 0x12, 0xD3, 0x00, 0x68, 0x38, 0x6C, +0x98, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x12, 0xEC, 0x4D, 0xE4, 0x64, 0xF5, +0xAC, 0xA3, 0x01, 0x6B, 0xAC, 0xEB, 0xC0, 0xF0, +0x0F, 0x23, 0x89, 0xE2, 0x64, 0xF5, 0x0E, 0x4A, +0x13, 0xD2, 0x14, 0xD2, 0x00, 0x69, 0xBC, 0x10, +0xE0, 0xA2, 0xC0, 0xA4, 0x01, 0x4A, 0x01, 0x4C, 0xEE, 0xEE, 0x01, 0x5E, 0xD8, 0x67, 0xCB, 0xEE, -0xAA, 0xEA, 0xCC, 0xEC, 0xF5, 0x61, 0x01, 0x74, -0x4E, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0x7C, 0xA2, 0x02, 0x73, -0x12, 0x61, 0xE0, 0xF0, 0x96, 0xA2, 0x08, 0x6B, -0x8C, 0xEB, 0x0D, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF2, 0x78, 0x9B, 0x0A, 0x6C, 0x80, 0xC3, -0x24, 0xF3, 0x84, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, -0x24, 0xF3, 0x64, 0xC2, 0x43, 0x10, 0x00, 0x6A, -0x04, 0xD2, 0x05, 0xD2, 0x08, 0x04, 0x06, 0x05, -0x0C, 0x06, 0x14, 0x97, 0x1E, 0x10, 0xE0, 0xF0, -0x5C, 0xA3, 0x02, 0x72, 0x13, 0x61, 0xE0, 0xF0, -0x96, 0xA3, 0x08, 0x6A, 0x8C, 0xEA, 0xFF, 0x6C, -0x8C, 0xEA, 0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0x0A, 0x6C, 0x80, 0xC2, -0x24, 0xF3, 0x44, 0xA3, 0x4D, 0xED, 0x24, 0xF3, -0xA4, 0xC3, 0x24, 0x10, 0x13, 0x97, 0x00, 0x6A, -0x04, 0xD2, 0x05, 0xD2, 0x08, 0x04, 0x06, 0x05, -0x0C, 0x06, 0x80, 0x18, 0x4E, 0x0E, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x60, 0x9A, -0xFF, 0x6C, 0x05, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x49, -0xFF, 0x6A, 0x4C, 0xE9, 0x12, 0x93, 0x40, 0xA3, -0x43, 0xE9, 0x15, 0x61, 0x01, 0x48, 0x38, 0x4B, -0x02, 0x70, 0x12, 0xD3, 0x03, 0x60, 0x25, 0x17, -0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, 0x1D, 0x97, -0x1C, 0x91, 0x1B, 0x90, 0x0F, 0x63, 0x00, 0xEF, -0x8D, 0xE3, 0x08, 0x02, 0xC4, 0xF4, 0x14, 0x4B, -0x0C, 0x05, 0x01, 0x6C, 0x89, 0x17, 0x38, 0x6C, -0x98, 0xE8, 0x30, 0x33, 0x0C, 0x02, 0x10, 0x05, -0x12, 0xEC, 0x91, 0xE3, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x91, 0xE3, 0xE4, 0xF4, -0x04, 0x4C, 0x01, 0x6B, 0x1B, 0x17, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0x83, 0xF2, -0x70, 0x9B, 0x4C, 0xEE, 0x4C, 0xEF, 0x0C, 0xD4, -0x0D, 0xD5, 0x06, 0xD6, 0x04, 0xD7, 0x60, 0xA3, -0x6C, 0xEA, 0x05, 0xD2, 0x00, 0x18, 0xA0, 0xD3, -0x1C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0x00, 0x6C, 0xFF, 0x6D, 0x33, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x5C, 0x9A, 0x00, 0x68, 0x40, 0xEA, 0x01, 0x72, -0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA0, 0xF2, 0x54, 0x9A, 0xA6, 0xF7, -0x84, 0xA3, 0x01, 0x6D, 0x18, 0x6E, 0xF0, 0x67, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA0, 0xF2, 0x54, 0x9A, 0xA6, 0xF7, -0x84, 0xA3, 0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, -0x40, 0xEA, 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0x54, 0x9A, -0xA3, 0xF2, 0x70, 0x9B, 0x49, 0xE0, 0x6D, 0xE0, -0x80, 0xA2, 0xA0, 0xA3, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x7C, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, -0x6D, 0xE0, 0xC0, 0xA3, 0x4C, 0xED, 0x4C, 0xEE, -0x80, 0x18, 0xC3, 0x06, 0x06, 0x95, 0x87, 0x40, -0x29, 0x4C, 0x22, 0x67, 0x80, 0x18, 0x79, 0x0D, -0x04, 0x92, 0x2E, 0x2A, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, 0x8C, 0x9C, -0x30, 0xF0, 0x20, 0x6D, 0xE3, 0xF2, 0x48, 0x9A, -0x03, 0xF3, 0xA0, 0x9D, 0x0D, 0x93, 0x91, 0xE0, -0x49, 0xE0, 0x31, 0xE4, 0xB5, 0xE0, 0xC0, 0xA3, -0xC0, 0xC2, 0xC0, 0xA3, 0x01, 0x4A, 0xAA, 0xEA, -0xC0, 0xC4, 0x01, 0x4B, 0x01, 0x4C, 0xF7, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF2, 0x4C, 0x9A, 0xC3, 0xF3, 0x9C, 0x9C, -0x0C, 0x93, 0x49, 0xE0, 0x81, 0xE0, 0x29, 0xE2, -0x21, 0xE0, 0x80, 0xA3, 0x01, 0x4B, 0x80, 0xC2, -0x01, 0x4A, 0x0A, 0xEA, 0xFA, 0x61, 0x2D, 0x10, -0x04, 0x92, 0x01, 0x72, 0x2A, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF2, 0x88, 0x9B, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF3, 0x6C, 0x9B, 0x30, 0xF0, -0x20, 0x6A, 0x4B, 0xF3, 0x18, 0x4A, 0x6D, 0xE0, -0x91, 0xE0, 0x2D, 0xE3, 0xA6, 0x42, 0xC0, 0xA2, -0xC0, 0xC4, 0xCA, 0xA2, 0x01, 0x4A, 0xAA, 0xEA, -0xC0, 0xC3, 0x01, 0x4C, 0x01, 0x4B, 0xF7, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x6C, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF3, 0x08, 0x4A, -0x61, 0xE0, 0x21, 0xE0, 0x64, 0x42, 0x80, 0xA2, -0x01, 0x4A, 0x6A, 0xEA, 0x80, 0xC0, 0x01, 0x48, -0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0x7C, 0xA2, 0x02, 0x73, -0x05, 0x61, 0x00, 0xF1, 0x84, 0xA2, 0xB1, 0x67, -0x80, 0x18, 0x1D, 0x0A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF3, 0x7C, 0x9A, 0xFF, 0x68, 0x10, 0x6C, -0x40, 0xA3, 0x34, 0x6E, 0x0C, 0xEA, 0x8D, 0xEA, -0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF2, 0x50, 0x9A, 0x05, 0x95, 0x00, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x54, 0x9A, 0x40, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x60, 0x9A, 0x20, 0x6C, -0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, -0x40, 0xC3, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xE4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF6, -0x00, 0x4C, 0xA0, 0xF0, 0xAF, 0xA4, 0x04, 0x6B, +0xAA, 0xEA, 0xCC, 0xEB, 0xF5, 0x61, 0x01, 0x73, +0xA0, 0xF0, 0x00, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF2, 0x60, 0x9A, 0xFF, 0x6C, 0x06, 0x6D, +0x40, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, 0xAC, 0xEA, +0x01, 0x6D, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, +0x1E, 0x92, 0x1F, 0x93, 0x4A, 0x4A, 0x69, 0xE2, +0x11, 0xD2, 0x00, 0xF0, 0x1E, 0x03, 0x06, 0x02, +0x10, 0xD2, 0x17, 0xD3, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x40, 0x9A, 0x11, 0x94, 0x40, 0xEA, +0x10, 0x93, 0x40, 0xC3, 0x11, 0x92, 0x01, 0x4B, +0x10, 0xD3, 0x01, 0x4A, 0x11, 0xD2, 0x17, 0x92, +0x4A, 0xEB, 0xF0, 0x61, 0x1E, 0x92, 0x1F, 0x93, +0x10, 0x4A, 0x69, 0xE2, 0x11, 0xD2, 0x0C, 0x03, +0x08, 0x02, 0x10, 0xD2, 0x18, 0xD3, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x11, 0x94, +0x40, 0xEA, 0x10, 0x93, 0x40, 0xC3, 0x11, 0x92, +0x01, 0x4B, 0x10, 0xD3, 0x01, 0x4A, 0x11, 0xD2, +0x18, 0x92, 0x4A, 0xEB, 0xF0, 0x61, 0x38, 0x6C, +0x98, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x10, 0x4B, 0x01, 0x6D, 0x12, 0xEC, 0x69, 0xE4, +0x64, 0xF5, 0x4C, 0xA2, 0x46, 0x32, 0xAC, 0xEA, +0x30, 0x22, 0x70, 0x10, 0xE0, 0xA2, 0xC0, 0xA3, +0x01, 0x4A, 0x01, 0x4B, 0xEE, 0xEE, 0x01, 0x5E, +0xD8, 0x67, 0xCB, 0xEE, 0xAA, 0xEA, 0xCC, 0xEC, +0xF5, 0x61, 0x01, 0x74, 0x4E, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, +0x7C, 0xA2, 0x02, 0x73, 0x12, 0x61, 0xE0, 0xF0, +0x96, 0xA2, 0x08, 0x6B, 0x8C, 0xEB, 0x0D, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF1, 0x70, 0x9B, +0x0A, 0x6C, 0x80, 0xC3, 0x64, 0xF3, 0x9C, 0xA2, +0x01, 0x6B, 0x8D, 0xEB, 0x64, 0xF3, 0x7C, 0xC2, +0x43, 0x10, 0x00, 0x6A, 0x04, 0xD2, 0x05, 0xD2, +0x08, 0x04, 0x06, 0x05, 0x0C, 0x06, 0x14, 0x97, +0x1E, 0x10, 0xE0, 0xF0, 0x5C, 0xA3, 0x02, 0x72, +0x13, 0x61, 0xE0, 0xF0, 0x96, 0xA3, 0x08, 0x6A, +0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x0C, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, +0x0A, 0x6C, 0x80, 0xC2, 0x64, 0xF3, 0x5C, 0xA3, +0x4D, 0xED, 0x64, 0xF3, 0xBC, 0xC3, 0x24, 0x10, +0x13, 0x97, 0x00, 0x6A, 0x04, 0xD2, 0x05, 0xD2, +0x08, 0x04, 0x06, 0x05, 0x0C, 0x06, 0x80, 0x18, +0x15, 0x0C, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF2, 0x60, 0x9A, 0xFF, 0x6C, 0x05, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x49, 0xFF, 0x6A, 0x4C, 0xE9, +0x12, 0x93, 0x40, 0xA3, 0x43, 0xE9, 0x15, 0x61, +0x01, 0x48, 0x38, 0x4B, 0x02, 0x70, 0x12, 0xD3, +0x03, 0x60, 0x25, 0x17, 0x00, 0x6A, 0x01, 0x10, +0x01, 0x6A, 0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, +0x0F, 0x63, 0x00, 0xEF, 0x8D, 0xE3, 0x08, 0x02, +0x64, 0xF5, 0x14, 0x4B, 0x0C, 0x05, 0x01, 0x6C, +0x89, 0x17, 0x38, 0x6C, 0x98, 0xE8, 0x30, 0x33, +0x0C, 0x02, 0x10, 0x05, 0x12, 0xEC, 0x91, 0xE3, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x91, 0xE3, 0x84, 0xF5, 0x04, 0x4C, 0x01, 0x6B, +0x1B, 0x17, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xFF, 0x6A, 0xC4, 0xF1, 0x64, 0x9B, 0x4C, 0xEE, +0x4C, 0xEF, 0x0C, 0xD4, 0x0D, 0xD5, 0x06, 0xD6, +0x04, 0xD7, 0x60, 0xA3, 0x6C, 0xEA, 0x05, 0xD2, +0x00, 0x18, 0x95, 0xD8, 0x1C, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6C, +0xFF, 0x6D, 0x33, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, 0x00, 0x68, +0x40, 0xEA, 0x01, 0x72, 0x19, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, +0x54, 0x9A, 0x08, 0xF3, 0x94, 0xA3, 0x01, 0x6D, +0x18, 0x6E, 0xF0, 0x67, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, +0x54, 0x9A, 0x08, 0xF3, 0x94, 0xA3, 0x01, 0x6D, +0x18, 0x6E, 0x00, 0x6F, 0x40, 0xEA, 0x02, 0x67, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF1, 0x4C, 0x9A, 0xE4, 0xF1, 0x64, 0x9B, +0x49, 0xE0, 0x6D, 0xE0, 0x80, 0xA2, 0xA0, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, 0x74, 0x9B, +0xFF, 0x6A, 0x4C, 0xEC, 0x6D, 0xE0, 0xC0, 0xA3, +0x4C, 0xED, 0x4C, 0xEE, 0x80, 0x18, 0xEF, 0x03, +0x06, 0x95, 0x87, 0x40, 0x29, 0x4C, 0x22, 0x67, +0x80, 0x18, 0xD9, 0x0A, 0x04, 0x92, 0x2E, 0x2A, +0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF2, 0x90, 0x9C, 0x30, 0xF0, 0x20, 0x6D, +0x64, 0xF2, 0x4C, 0x9A, 0x64, 0xF2, 0xA4, 0x9D, +0x0D, 0x93, 0x91, 0xE0, 0x49, 0xE0, 0x31, 0xE4, +0xB5, 0xE0, 0xC0, 0xA3, 0xC0, 0xC2, 0xC0, 0xA3, +0x01, 0x4A, 0xAA, 0xEA, 0xC0, 0xC4, 0x01, 0x4B, +0x01, 0x4C, 0xF7, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF2, 0x48, 0x9A, +0xA4, 0xF2, 0x98, 0x9C, 0x0C, 0x93, 0x49, 0xE0, +0x81, 0xE0, 0x29, 0xE2, 0x21, 0xE0, 0x80, 0xA3, +0x01, 0x4B, 0x80, 0xC2, 0x01, 0x4A, 0x0A, 0xEA, +0xFA, 0x61, 0x2D, 0x10, 0x04, 0x92, 0x01, 0x72, +0x2A, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, +0x8C, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF2, +0x70, 0x9B, 0x30, 0xF0, 0x20, 0x6A, 0x6C, 0xF7, +0x08, 0x4A, 0x6D, 0xE0, 0x91, 0xE0, 0x2D, 0xE3, +0xA6, 0x42, 0xC0, 0xA2, 0xC0, 0xC4, 0xCA, 0xA2, +0x01, 0x4A, 0xAA, 0xEA, 0xC0, 0xC3, 0x01, 0x4C, +0x01, 0x4B, 0xF7, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF2, 0x68, 0x9B, 0x30, 0xF0, 0x20, 0x6A, +0x6C, 0xF7, 0x18, 0x4A, 0x61, 0xE0, 0x21, 0xE0, +0x64, 0x42, 0x80, 0xA2, 0x01, 0x4A, 0x6A, 0xEA, +0x80, 0xC0, 0x01, 0x48, 0xFA, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, +0x7C, 0xA2, 0x02, 0x73, 0x05, 0x61, 0x00, 0xF1, +0x84, 0xA2, 0xB1, 0x67, 0x80, 0x18, 0xFD, 0x06, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF2, 0x7C, 0x9A, +0xFF, 0x68, 0x10, 0x6C, 0x40, 0xA3, 0x34, 0x6E, +0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, +0x05, 0x95, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, +0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, +0x60, 0x9A, 0x20, 0x6C, 0x40, 0xA3, 0x0C, 0xEA, +0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, +0x00, 0x6A, 0x7D, 0x67, 0x30, 0xF0, 0x20, 0x6E, +0x08, 0xD2, 0x52, 0xCB, 0x04, 0xD2, 0xC0, 0xF3, +0x40, 0x9E, 0x04, 0x67, 0x06, 0x4C, 0xB1, 0xE4, +0x25, 0x67, 0x40, 0xEA, 0x08, 0x72, 0xC0, 0xF0, +0x1E, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x40, 0x9B, 0x87, 0x40, 0x31, 0xE4, 0x40, 0xEA, +0x06, 0x72, 0xC0, 0xF0, 0x14, 0x61, 0x87, 0x40, +0x03, 0x4C, 0x06, 0x06, 0x00, 0xF0, 0x1E, 0x02, +0x0B, 0xD4, 0x0A, 0xD6, 0x0C, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x0B, 0x94, 0xC0, 0xF3, 0x40, 0x9A, +0x40, 0xEA, 0x0A, 0x93, 0x0B, 0x94, 0x0C, 0x96, +0x40, 0xC3, 0x01, 0x4B, 0x01, 0x4C, 0xCA, 0xEB, +0x0B, 0xD4, 0x0A, 0xD3, 0xF0, 0x61, 0xC1, 0x10, +0xE0, 0xA3, 0xC0, 0xA2, 0x01, 0x4B, 0x01, 0x4A, +0xEE, 0xEE, 0x01, 0x5E, 0xD8, 0x67, 0xCB, 0xEE, +0xAA, 0xEB, 0xCC, 0xEC, 0xF5, 0x61, 0x58, 0x67, +0x01, 0x74, 0x05, 0xD2, 0x01, 0x6A, 0xA0, 0xF0, +0x0B, 0x61, 0x47, 0x40, 0x19, 0x4A, 0x29, 0xE2, +0x05, 0x03, 0x06, 0x04, 0x0B, 0xD2, 0x0A, 0xD3, +0x0D, 0xD4, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x40, 0x9A, 0x0B, 0x94, 0x40, 0xEA, 0x0A, 0x96, +0x0D, 0x93, 0x40, 0xC6, 0x0B, 0x92, 0x01, 0x4E, +0x6A, 0xEE, 0x01, 0x4A, 0x0B, 0xD2, 0x0A, 0xD6, +0xF0, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x9D, 0x67, +0x08, 0xF2, 0x10, 0x4A, 0xDD, 0x67, 0x75, 0xA6, +0xB4, 0xA4, 0x44, 0xF5, 0x9E, 0xA2, 0x44, 0xF5, +0x5F, 0xA2, 0x6E, 0xEA, 0x00, 0x6B, 0x04, 0x2A, +0x65, 0x67, 0x8E, 0xEB, 0x01, 0x5B, 0x78, 0x67, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x9D, 0x67, 0xB6, 0xA4, 0x64, 0xF5, 0x80, 0xA2, +0xAE, 0xEC, 0x01, 0x5C, 0x98, 0x67, 0x8B, 0xEC, +0x8C, 0xEB, 0x9D, 0x67, 0xB7, 0xA4, 0x64, 0xF5, +0x81, 0xA2, 0xAE, 0xEC, 0x5C, 0x2C, 0x01, 0x73, +0x5A, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF2, +0xDC, 0x9B, 0xFF, 0x6D, 0xDE, 0x4C, 0x60, 0xA6, +0xAC, 0xEB, 0x8C, 0xEB, 0x01, 0x6C, 0x8D, 0xEB, +0xAC, 0xEB, 0x60, 0xC6, 0xE0, 0xF0, 0x77, 0xA2, +0x8C, 0xEB, 0xAC, 0xEB, 0x14, 0x2B, 0xE0, 0xF0, +0x7C, 0xA2, 0x02, 0x73, 0x0A, 0x60, 0x47, 0x40, +0x09, 0x4A, 0x29, 0xE2, 0x0B, 0xD2, 0x08, 0x06, +0x20, 0xF0, 0x06, 0x02, 0x0A, 0xD6, 0x0E, 0xD2, +0x12, 0x10, 0xE0, 0xF0, 0xD6, 0xA2, 0x08, 0x6B, +0xCC, 0xEB, 0xAC, 0xEB, 0xF0, 0x2B, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF1, 0x70, 0x9B, 0x09, 0x6D, +0xA0, 0xC3, 0x64, 0xF3, 0x7C, 0xA2, 0x6D, 0xEC, +0x64, 0xF3, 0x9C, 0xC2, 0x36, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x0B, 0x94, 0xC0, 0xF3, 0x40, 0x9A, +0x40, 0xEA, 0x0A, 0x93, 0x0B, 0x94, 0x0E, 0x96, +0x40, 0xC3, 0x01, 0x4B, 0x01, 0x4C, 0xCA, 0xEB, +0x0B, 0xD4, 0x0A, 0xD3, 0xF0, 0x61, 0x16, 0x48, +0x05, 0x02, 0x25, 0xE0, 0x0F, 0xD2, 0x04, 0x00, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, +0x91, 0x67, 0x01, 0x49, 0x40, 0xEA, 0x0F, 0x93, +0x40, 0xC0, 0x01, 0x48, 0x6A, 0xE8, 0xF4, 0x61, +0x00, 0x6E, 0x04, 0x04, 0x08, 0x05, 0xE6, 0x67, +0x80, 0x18, 0x39, 0x0D, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF2, 0x7C, 0x9A, 0xFF, 0x6C, +0x32, 0x6D, 0x40, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, +0xAC, 0xEA, 0x21, 0x6D, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, +0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x03, +0x8C, 0xF5, 0x13, 0x4A, 0x00, 0xF0, 0x1E, 0x05, +0x01, 0x6C, 0x36, 0x17, 0xF3, 0x63, 0x19, 0x62, +0x18, 0xD1, 0x17, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF2, 0x78, 0x9A, 0xE2, 0xF2, 0x18, 0x4A, +0x00, 0x6C, 0x04, 0xD3, 0x61, 0x9A, 0x44, 0xAA, +0x05, 0xD3, 0x7D, 0x67, 0x4C, 0xCB, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, +0x30, 0x6A, 0xC7, 0xF0, 0x05, 0x4A, 0x40, 0xDB, +0x80, 0x18, 0xA7, 0x3B, 0x01, 0x6C, 0x11, 0xD2, +0x80, 0x18, 0xA7, 0x3B, 0x0A, 0xD2, 0x00, 0x18, +0x90, 0xD8, 0x15, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF3, 0x65, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x40, 0xF3, 0x15, 0x22, 0x00, 0x6C, 0x13, 0xD4, +0x0F, 0xD4, 0x0D, 0xD4, 0x10, 0xD4, 0x4A, 0x13, +0x0A, 0x95, 0x11, 0x94, 0x80, 0x18, 0xCC, 0x3B, +0x30, 0xF0, 0x20, 0x6C, 0x02, 0x67, 0xC0, 0xF3, +0x40, 0x9C, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6D, 0x22, 0x67, 0xC0, 0xF3, 0x40, 0x9D, +0x81, 0x40, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xD2, 0xC0, 0xF3, 0x40, 0x9B, 0x84, 0x40, +0x40, 0xEA, 0x08, 0x95, 0xC2, 0x67, 0x91, 0x67, +0x80, 0x18, 0xEF, 0x03, 0x30, 0xF0, 0x20, 0x6C, +0x0B, 0xD2, 0xC0, 0xF3, 0x40, 0x9C, 0x90, 0x67, +0xFC, 0x69, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6D, +0x0A, 0x94, 0x4C, 0xE9, 0xC0, 0xF3, 0x40, 0x9D, +0x01, 0x4C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xD2, 0x0A, 0x94, 0xC0, 0xF3, 0x40, 0x9B, +0x40, 0xEA, 0x08, 0x94, 0x80, 0x34, 0x4D, 0xEC, +0xE7, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, +0x20, 0x6A, 0x8C, 0xF5, 0x6C, 0xA2, 0x20, 0x6A, +0x08, 0xD4, 0x6C, 0xEA, 0xFC, 0x4C, 0x0E, 0xD4, +0x02, 0x2A, 0x08, 0x95, 0x0E, 0xD5, 0x0A, 0x94, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, +0x0F, 0x4C, 0x40, 0xEA, 0x14, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x09, 0xD2, +0xA7, 0xF5, 0x98, 0xA2, 0x01, 0x6A, 0xFF, 0x6B, +0x4C, 0xEC, 0x80, 0xF0, 0x01, 0x24, 0x50, 0x71, +0x73, 0x60, 0x80, 0x71, 0x20, 0xF2, 0x06, 0x61, +0x09, 0x95, 0x00, 0xF1, 0x98, 0xA5, 0x8C, 0xEA, +0x6C, 0xEA, 0x04, 0x22, 0x08, 0x95, 0x90, 0x67, +0x80, 0x18, 0x4E, 0x3C, 0x30, 0xF0, 0x20, 0x6A, +0xAC, 0xF5, 0x78, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x00, 0xF2, 0x14, 0x22, 0x47, 0x40, 0x00, 0x6B, +0x09, 0x4A, 0x0E, 0xD2, 0x0C, 0xD3, 0x09, 0xD3, +0x30, 0xF0, 0x20, 0x6A, 0x0E, 0x94, 0xC0, 0xF3, +0x40, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE8, 0xF2, 0x77, 0xA3, 0xBD, 0x67, 0x64, 0x33, +0x6D, 0xE5, 0x88, 0xAB, 0x0C, 0x93, 0x91, 0xE3, +0x1F, 0xF7, 0x00, 0x6B, 0x8C, 0xEB, 0x02, 0xF0, +0x00, 0x73, 0x01, 0x60, 0x11, 0x2B, 0x30, 0xF0, +0x20, 0x6B, 0xE8, 0xF2, 0x77, 0xA3, 0x9D, 0x67, +0x0C, 0x95, 0x64, 0x33, 0x6D, 0xE4, 0x88, 0xAB, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, 0x70, 0x9B, +0x91, 0xE5, 0x6D, 0xE4, 0x80, 0xA3, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, 0x74, 0x9B, +0x71, 0xE4, 0x80, 0xA4, 0xFF, 0x6B, 0x8C, 0xEB, +0x6E, 0xEA, 0xC0, 0xF1, 0x1B, 0x2A, 0x09, 0x92, +0x0C, 0x94, 0x0E, 0x95, 0x01, 0x4A, 0x09, 0xD2, +0x09, 0x93, 0xFF, 0x6A, 0x01, 0x4C, 0x4C, 0xEB, +0x01, 0x4D, 0x06, 0x73, 0x09, 0xD3, 0x0C, 0xD4, +0x0E, 0xD5, 0xBE, 0x61, 0x08, 0x92, 0xFF, 0xF7, +0x1F, 0x6D, 0x90, 0x67, 0xAC, 0xEC, 0x4C, 0xED, +0x80, 0x18, 0x19, 0x05, 0xC0, 0xF1, 0x02, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA4, 0xF3, 0x88, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xA4, 0xF3, 0x68, 0xC2, 0xB6, 0x11, +0x09, 0x95, 0x00, 0xF1, 0x98, 0xA5, 0x8C, 0xEA, +0x6C, 0xEA, 0xA0, 0xF1, 0x0F, 0x22, 0x08, 0x95, +0x90, 0x67, 0x80, 0x18, 0x4E, 0x3C, 0xAA, 0x11, +0x88, 0x71, 0xC0, 0xF0, 0x10, 0x60, 0x89, 0x59, +0x06, 0x60, 0x08, 0x71, 0xC0, 0xF0, 0x0B, 0x60, +0x80, 0x71, 0x51, 0x60, 0x9F, 0x11, 0xC0, 0x71, +0x1A, 0x60, 0xD0, 0x71, 0x03, 0x60, 0xA0, 0x71, +0x16, 0x60, 0x98, 0x11, 0x90, 0x67, 0x80, 0x18, +0x4A, 0x03, 0x80, 0xF1, 0x13, 0x22, 0x90, 0x67, +0x80, 0x18, 0x61, 0x03, 0x80, 0xF1, 0x0E, 0x22, +0x09, 0x93, 0xE0, 0xF0, 0x5E, 0xA3, 0x80, 0xF1, +0x09, 0x22, 0x0A, 0x94, 0x0E, 0x95, 0xD0, 0x67, +0x80, 0x18, 0xDB, 0x43, 0x83, 0x11, 0x90, 0x67, +0x80, 0x18, 0x61, 0x03, 0x60, 0xF1, 0x1E, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, 0x4E, 0xA2, +0x06, 0x22, 0x0A, 0x94, 0x0E, 0x95, 0xD0, 0x67, +0x80, 0x18, 0x4A, 0x44, 0x13, 0xD2, 0x30, 0xF0, +0x20, 0x6C, 0x08, 0xF2, 0x10, 0x4C, 0x84, 0xF3, +0x49, 0xA4, 0x13, 0x95, 0x08, 0xD4, 0x01, 0x4A, +0x01, 0x75, 0x84, 0xF3, 0x49, 0xC4, 0x0A, 0x60, +0x90, 0x67, 0x80, 0x18, 0x4A, 0x03, 0x60, 0xF1, +0x01, 0x22, 0x08, 0x93, 0xE0, 0xF0, 0x5E, 0xA3, +0x40, 0xF1, 0x1C, 0x2A, 0x91, 0x67, 0x80, 0x18, +0x0E, 0x0B, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x84, 0xF3, 0x6A, 0xA2, 0x01, 0x4B, +0x84, 0xF3, 0x6A, 0xC2, 0x4F, 0x11, 0x09, 0x95, +0xA4, 0xF3, 0x88, 0xA5, 0x8C, 0xEA, 0x6C, 0xEA, +0x5B, 0x22, 0x47, 0x40, 0x00, 0x6B, 0x09, 0x4A, +0x12, 0xD2, 0x0C, 0xD3, 0x09, 0xD3, 0x30, 0xF0, +0x20, 0x6A, 0x12, 0x94, 0xC0, 0xF3, 0x40, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE8, 0xF2, +0x77, 0xA3, 0xBD, 0x67, 0x64, 0x33, 0x6D, 0xE5, +0x88, 0xAB, 0x0C, 0x93, 0x91, 0xE3, 0x1F, 0xF7, +0x00, 0x6B, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x11, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xE8, 0xF2, 0x77, 0xA3, 0x9D, 0x67, 0x0C, 0x95, +0x64, 0x33, 0x6D, 0xE4, 0x88, 0xAB, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF0, 0x70, 0x9B, 0x91, 0xE5, +0x6D, 0xE4, 0x80, 0xA3, 0x06, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF0, 0x74, 0x9B, 0x71, 0xE4, +0x80, 0xA4, 0xFF, 0x6B, 0x8C, 0xEB, 0x6E, 0xEA, +0x23, 0x2A, 0x09, 0x92, 0x0C, 0x94, 0x12, 0x95, +0x01, 0x4A, 0x09, 0xD2, 0x09, 0x93, 0xFF, 0x6A, +0x01, 0x4C, 0x4C, 0xEB, 0x01, 0x4D, 0x06, 0x73, +0x09, 0xD3, 0x0C, 0xD4, 0x12, 0xD5, 0xBF, 0x61, +0x08, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, 0x90, 0x67, +0xAC, 0xEC, 0x4C, 0xED, 0x80, 0x18, 0x19, 0x05, +0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA4, 0xF3, 0x88, 0xA2, 0x02, 0x6B, +0x6B, 0xEB, 0x8C, 0xEB, 0xA4, 0xF3, 0x68, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xE0, 0xF0, 0x99, 0xA2, 0x08, 0x6B, 0x8C, 0xEB, +0xE0, 0xF0, 0x04, 0x23, 0xA4, 0xF3, 0x6C, 0xA2, +0x04, 0x23, 0xA4, 0xF3, 0x4D, 0xA2, 0xC0, 0xF0, +0x1D, 0x22, 0x0A, 0x94, 0x0E, 0x95, 0xD0, 0x67, +0x80, 0x18, 0x7D, 0x4D, 0xD7, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, 0x64, 0x40, +0x83, 0x67, 0x08, 0xD3, 0x40, 0xEA, 0x82, 0x67, +0x80, 0x18, 0xDF, 0x03, 0x0B, 0x95, 0xFF, 0x6B, +0xC3, 0x67, 0x4C, 0xEE, 0x90, 0x67, 0x6C, 0xED, +0x80, 0x18, 0xFE, 0x03, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF3, 0x40, 0x9C, 0x08, 0x94, 0x40, 0xEA, +0x82, 0x67, 0x80, 0x18, 0xB2, 0x0B, 0xA0, 0xF0, +0x0E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, +0x65, 0xA2, 0x40, 0x6A, 0xFF, 0x6D, 0x6C, 0xEA, +0xAC, 0xEA, 0x25, 0x22, 0x0B, 0x93, 0x47, 0x40, +0x01, 0x4A, 0x69, 0xE2, 0x08, 0xD2, 0x30, 0xF0, +0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, 0x08, 0x94, +0x40, 0xEA, 0x45, 0x72, 0x18, 0x61, 0x08, 0x94, +0x80, 0x18, 0xAD, 0x11, 0x01, 0x72, 0x13, 0x61, +0x08, 0x94, 0x80, 0x18, 0xBF, 0x11, 0x01, 0x72, +0x0E, 0x61, 0x08, 0x94, 0x80, 0x18, 0xD0, 0x11, +0x04, 0x22, 0x01, 0x6D, 0x0F, 0xD5, 0x0D, 0xD5, +0x06, 0x10, 0x08, 0x94, 0x80, 0x18, 0x02, 0x12, +0x01, 0x6B, 0x0F, 0xD3, 0x0D, 0xD3, 0x90, 0x67, +0x80, 0x18, 0x4A, 0x03, 0x08, 0x22, 0x0B, 0x95, +0x90, 0x67, 0x80, 0x18, 0x72, 0x0B, 0x03, 0x22, +0x01, 0x6D, 0x0F, 0xD5, 0x0D, 0xD5, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF3, 0x65, 0xA2, 0x02, 0x6A, +0x6C, 0xEA, 0x08, 0x22, 0x0B, 0x95, 0x90, 0x67, +0x80, 0x18, 0xB0, 0x0D, 0x03, 0x22, 0x01, 0x6B, +0x0F, 0xD3, 0x0D, 0xD3, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF3, 0x65, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, +0x08, 0x22, 0x0B, 0x95, 0x90, 0x67, 0x80, 0x18, +0x96, 0x0C, 0x03, 0x22, 0x01, 0x6D, 0x0F, 0xD5, +0x0D, 0xD5, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF3, +0x7D, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x08, 0x22, +0x0B, 0x95, 0x90, 0x67, 0x00, 0x18, 0xED, 0xD4, +0x03, 0x22, 0x01, 0x6B, 0x0F, 0xD3, 0x0D, 0xD3, +0x0B, 0x95, 0x90, 0x67, 0x80, 0x18, 0x78, 0x03, +0x1D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE0, 0xF0, 0x96, 0xA2, 0x20, 0x6B, +0x8C, 0xEB, 0x0D, 0x23, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF1, 0x70, 0x9B, 0x0B, 0x6C, 0x80, 0xC3, +0x64, 0xF3, 0x9C, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, +0x64, 0xF3, 0x7C, 0xC2, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, 0x4C, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6D, +0x08, 0xF2, 0x10, 0x4D, 0x08, 0xD5, 0xE0, 0xF0, +0x75, 0xA5, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0x23, 0x22, 0x0D, 0x92, +0x03, 0x22, 0x01, 0x6B, 0x0D, 0xD3, 0x1E, 0x10, +0x0B, 0x95, 0x90, 0x67, 0x80, 0x18, 0xB4, 0x03, +0x19, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, +0x50, 0x9A, 0x22, 0x6B, 0x60, 0xC2, 0x08, 0x94, +0x01, 0x6A, 0x64, 0xF3, 0x7C, 0xA4, 0x6D, 0xEA, +0x64, 0xF3, 0x5C, 0xC4, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF2, 0x60, 0x9A, 0xFF, 0x6D, +0x08, 0x6C, 0x40, 0xA3, 0xAC, 0xEA, 0x8D, 0xEA, +0xAC, 0xEA, 0x40, 0xC3, 0x14, 0x94, 0x01, 0x6D, +0x80, 0x18, 0x19, 0x04, 0x16, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x08, 0xD2, +0x64, 0xF3, 0x7C, 0xA2, 0x01, 0x6A, 0x6D, 0xEA, +0x08, 0x93, 0x64, 0xF3, 0x5C, 0xC3, 0x0A, 0x94, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, +0x10, 0x4C, 0x40, 0xEA, 0x08, 0x94, 0x24, 0xF6, +0x56, 0xC4, 0x08, 0x71, 0x02, 0x60, 0x88, 0x71, +0x48, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE0, 0xF0, 0x97, 0xA2, 0x40, 0x6B, +0x8C, 0xEB, 0x0E, 0x23, 0x0F, 0x95, 0x0C, 0x2D, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF1, 0x70, 0x9B, +0x25, 0x6C, 0x80, 0xC3, 0x64, 0xF3, 0x9C, 0xA2, +0x01, 0x6B, 0x8D, 0xEB, 0x64, 0xF3, 0x7C, 0xC2, +0x0B, 0x95, 0x90, 0x67, 0x80, 0x18, 0xC0, 0x03, +0x11, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, +0x50, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x64, 0xF3, +0x9C, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x64, 0xF3, 0x7C, 0xC2, 0x30, 0xF0, 0x20, 0x69, +0x08, 0xF2, 0x10, 0x49, 0xE0, 0xF0, 0x76, 0xA1, +0x40, 0x6A, 0x6C, 0xEA, 0x12, 0x22, 0x0B, 0x95, +0x90, 0x67, 0x80, 0x18, 0x4D, 0x07, 0x0D, 0x22, +0x64, 0xF3, 0x7C, 0xA1, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x64, 0xF3, 0x5C, 0xC1, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x11, 0x95, 0x0A, 0x96, 0x01, 0x6C, +0x80, 0x18, 0xAD, 0x3B, 0x11, 0x95, 0x0A, 0x96, +0x00, 0x6C, 0x22, 0x67, 0x80, 0x18, 0xAD, 0x3B, +0x11, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xF5, +0x6C, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, +0x01, 0x6C, 0x80, 0x18, 0x53, 0x06, 0x80, 0x18, +0x42, 0x04, 0x01, 0x72, 0x33, 0x61, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x84, 0xF3, +0x4B, 0xA0, 0x01, 0x4A, 0x84, 0xF3, 0x4B, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x48, 0x9A, +0x40, 0xEA, 0x01, 0x72, 0x15, 0x60, 0x64, 0xF3, +0x9C, 0xA0, 0x01, 0x6B, 0x02, 0x72, 0x8D, 0xEB, +0x64, 0xF3, 0x7C, 0xC0, 0x42, 0x6B, 0x03, 0x60, +0x04, 0x72, 0x06, 0x61, 0x43, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, 0x60, 0xC2, +0x01, 0x6C, 0x80, 0x18, 0x53, 0x06, 0x23, 0x10, +0x11, 0x95, 0x91, 0x67, 0x80, 0x18, 0xDB, 0x3B, +0x10, 0x92, 0x0A, 0xD1, 0x01, 0x4A, 0x10, 0xD2, +0x10, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, +0x10, 0xD3, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0x97, 0xA2, +0x20, 0x6B, 0x8C, 0xEB, 0x0C, 0x2B, 0xE0, 0xF0, +0x95, 0xA2, 0xFE, 0x4B, 0x8C, 0xEB, 0xE0, 0xF0, +0x75, 0xC2, 0x05, 0x10, 0x10, 0x94, 0x15, 0x95, +0xA3, 0xEC, 0xBF, 0xF4, 0x11, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, +0x30, 0x6A, 0xC7, 0xF0, 0x06, 0x4A, 0x40, 0xDB, +0x19, 0x97, 0x18, 0x91, 0x17, 0x90, 0x0D, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xE4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF2, +0x10, 0x4C, 0xA0, 0xF0, 0xAF, 0xA4, 0x04, 0x6B, 0xFF, 0x6A, 0xAC, 0xEB, 0x4C, 0xEB, 0x4C, 0xEF, 0x07, 0x23, 0x00, 0x6C, 0xA4, 0x67, 0xC4, 0x67, -0x01, 0x6F, 0x80, 0x18, 0x72, 0x0F, 0x09, 0x10, +0x01, 0x6F, 0x80, 0x18, 0x39, 0x0D, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x50, 0x9A, 0xA0, 0xF0, 0x8A, 0xA4, 0x02, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x44, 0xF3, 0x76, 0xA0, 0xFF, 0x6A, 0x24, 0x67, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA4, 0xF3, 0x6E, 0xA0, 0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xE9, 0x34, 0x2B, 0xA0, 0xF0, 0x8F, 0xA0, 0x01, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, 0x2E, 0x23, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x01, 0x72, -0x25, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF4, -0x71, 0xA2, 0x0A, 0x6C, 0x01, 0x4B, 0xC6, 0xF4, -0x71, 0xC2, 0xC6, 0xF4, 0x71, 0xA2, 0x8E, 0xEB, -0x07, 0x2B, 0x05, 0xF3, 0x91, 0xA0, 0xC6, 0xF4, -0x71, 0xC2, 0x01, 0x4C, 0x05, 0xF3, 0x91, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA0, 0xF0, 0x90, 0xA2, 0x05, 0xF3, 0x71, 0xA2, -0x83, 0xEB, 0x08, 0x61, 0x05, 0xF3, 0x72, 0xA2, -0x05, 0x2B, 0x05, 0xF3, 0x71, 0xC2, 0x91, 0x67, -0x80, 0x18, 0xE9, 0x0F, 0x07, 0x97, 0x06, 0x91, +0x25, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x27, 0xF4, +0x69, 0xA2, 0x0A, 0x6C, 0x01, 0x4B, 0x27, 0xF4, +0x69, 0xC2, 0x27, 0xF4, 0x69, 0xA2, 0x8E, 0xEB, +0x07, 0x2B, 0x45, 0xF1, 0x91, 0xA0, 0x27, 0xF4, +0x69, 0xC2, 0x01, 0x4C, 0x45, 0xF1, 0x91, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA0, 0xF0, 0x90, 0xA2, 0x45, 0xF1, 0x71, 0xA2, +0x83, 0xEB, 0x08, 0x61, 0x45, 0xF1, 0x72, 0xA2, +0x05, 0x2B, 0x45, 0xF1, 0x71, 0xC2, 0x91, 0x67, +0x80, 0x18, 0xF9, 0x0F, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, -0x00, 0x6A, 0x7D, 0x67, 0x30, 0xF0, 0x20, 0x69, -0x17, 0xD5, 0x0A, 0xD2, 0x56, 0xCB, 0x06, 0xD2, -0x07, 0xD2, 0xC0, 0xF3, 0x40, 0x99, 0x04, 0x67, -0x06, 0x4C, 0xB1, 0xE4, 0x40, 0xEA, 0x08, 0x72, -0x00, 0xF1, 0x0F, 0x61, 0x17, 0x95, 0xC0, 0xF3, -0x40, 0x99, 0x87, 0x40, 0xB1, 0xE4, 0x40, 0xEA, -0x06, 0x72, 0x00, 0xF1, 0x06, 0x61, 0x27, 0x40, -0x08, 0x02, 0x20, 0xF0, 0x06, 0x03, 0x03, 0x49, -0x0C, 0xD2, 0x0E, 0xD3, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x40, 0x9A, 0x91, 0x67, 0x01, 0x49, -0x40, 0xEA, 0x0C, 0x94, 0x0E, 0x95, 0x40, 0xC4, -0x01, 0x4C, 0xAA, 0xEC, 0x0C, 0xD4, 0xF2, 0x61, -0xF6, 0x10, 0xE0, 0xA3, 0xC0, 0xA2, 0x01, 0x4B, -0x01, 0x4A, 0xEE, 0xEE, 0x01, 0x5E, 0xD8, 0x67, -0xCB, 0xEE, 0xAA, 0xEB, 0xCC, 0xEC, 0xF5, 0x61, -0x01, 0x74, 0x01, 0x6A, 0xE0, 0xF0, 0x02, 0x61, -0x17, 0x92, 0x27, 0x40, 0x19, 0x49, 0x07, 0x03, -0x08, 0x04, 0x45, 0xE1, 0x0C, 0xD3, 0x0F, 0xD4, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, -0x91, 0x67, 0x01, 0x49, 0x40, 0xEA, 0x0C, 0x95, -0x40, 0xC5, 0x0F, 0x92, 0x01, 0x4D, 0x0C, 0xD5, -0x4A, 0xED, 0xF2, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x20, 0xF1, 0x8D, 0xA3, -0x01, 0x6A, 0x00, 0x69, 0x8C, 0xEA, 0x25, 0x2A, -0x5D, 0x67, 0xDD, 0xA2, 0xA4, 0xF4, 0x5F, 0xA3, -0x9D, 0x67, 0xBC, 0xA4, 0xA4, 0xF4, 0x9E, 0xA3, -0x66, 0x67, 0x4E, 0xEB, 0x51, 0x67, 0x04, 0x2B, -0x45, 0x67, 0x8E, 0xEA, 0x01, 0x5A, 0x58, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x9D, 0x67, 0xBE, 0xA4, 0xC4, 0xF4, 0x80, 0xA3, -0xC4, 0xF4, 0x61, 0xA3, 0xAE, 0xEC, 0x01, 0x5C, -0x98, 0x67, 0x8B, 0xEC, 0xBD, 0x67, 0x8C, 0xEA, -0x9F, 0xA5, 0x8E, 0xEB, 0x80, 0xF0, 0x0E, 0x2B, -0x14, 0x10, 0xFF, 0x6A, 0x2C, 0xEA, 0x0D, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0x35, 0xA6, 0xF6, -0x00, 0x4A, 0xB5, 0xE2, 0x07, 0x04, 0x85, 0xF0, -0x1E, 0x4D, 0x04, 0x6E, 0x00, 0x18, 0xE9, 0xD3, -0x08, 0x22, 0x01, 0x49, 0x04, 0x71, 0xED, 0x61, -0x79, 0x10, 0x01, 0x72, 0x77, 0x61, 0x00, 0x6B, -0x0D, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, -0x7C, 0x9A, 0xFF, 0x6D, 0x22, 0x6C, 0x40, 0xA3, -0x8B, 0xEC, 0xAC, 0xEA, 0x8C, 0xEA, 0x01, 0x6C, -0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, -0x77, 0xA2, 0x8C, 0xEB, 0xAC, 0xEB, 0x14, 0x2B, -0xE0, 0xF0, 0x7C, 0xA2, 0x02, 0x73, 0x0A, 0x60, -0x17, 0x94, 0x27, 0x40, 0x09, 0x49, 0x0A, 0x05, -0x20, 0xF0, 0x0E, 0x02, 0x85, 0xE1, 0x0C, 0xD5, -0x10, 0xD2, 0x12, 0x10, 0xE0, 0xF0, 0xD6, 0xA2, -0x08, 0x6B, 0xCC, 0xEB, 0xAC, 0xEB, 0xF0, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x78, 0x9B, -0x09, 0x6D, 0xA0, 0xC3, 0x24, 0xF3, 0x64, 0xA2, -0x6D, 0xEC, 0x24, 0xF3, 0x84, 0xC2, 0x35, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, -0x91, 0x67, 0x01, 0x49, 0x40, 0xEA, 0x0C, 0x93, -0x10, 0x94, 0x40, 0xC3, 0x01, 0x4B, 0x8A, 0xEB, -0x0C, 0xD3, 0xF2, 0x61, 0x17, 0x95, 0x16, 0x48, -0x07, 0x02, 0xA1, 0xE0, 0x06, 0x01, 0x11, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, -0x90, 0x67, 0x01, 0x48, 0x40, 0xEA, 0x11, 0x93, -0x40, 0xC1, 0x01, 0x49, 0x6A, 0xE9, 0xF4, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x20, 0xF1, 0x8D, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, -0x0E, 0x23, 0x0D, 0x94, 0xB8, 0x67, 0x04, 0xD5, -0x90, 0x36, 0xD9, 0xE2, 0x06, 0x04, 0x0A, 0x05, -0x85, 0xF0, 0x1E, 0x4E, 0x00, 0x6F, 0x80, 0x18, -0x37, 0x05, 0x01, 0x6A, 0x17, 0x10, 0x00, 0x6E, -0x06, 0x04, 0x0A, 0x05, 0xE6, 0x67, 0x80, 0x18, -0x72, 0x0F, 0xF7, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF3, 0x7C, 0x9A, 0xFF, 0x6C, 0x32, 0x6D, -0x40, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, 0xAC, 0xEA, -0x21, 0x6D, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0xE8, 0x17, 0x00, 0x6A, 0x15, 0x97, 0x14, 0x91, -0x13, 0x90, 0x0B, 0x63, 0x00, 0xEF, 0x30, 0xF0, -0x20, 0x6A, 0x08, 0x03, 0xCB, 0xF1, 0x0B, 0x4A, -0x20, 0xF0, 0x06, 0x05, 0x01, 0x6C, 0x01, 0x17, -0xF3, 0x63, 0x19, 0x62, 0x18, 0xD1, 0x17, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, 0x78, 0x9A, -0x22, 0xF5, 0x18, 0x4A, 0x00, 0x6C, 0x05, 0xD3, -0x61, 0x9A, 0x44, 0xAA, 0x06, 0xD3, 0x7D, 0x67, -0x4E, 0xCB, 0x00, 0x6A, 0x49, 0xCB, 0x50, 0xC3, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, -0x10, 0xF0, 0x30, 0x6A, 0xE8, 0xF2, 0x01, 0x4A, -0x40, 0xDB, 0x80, 0x18, 0x30, 0x3E, 0x01, 0x6C, -0x11, 0xD2, 0x80, 0x18, 0x30, 0x3E, 0x0C, 0xD2, -0x00, 0x18, 0x9B, 0xD3, 0x14, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x86, 0xF7, 0x75, 0xA2, 0x01, 0x6A, -0x6C, 0xEA, 0x60, 0xF3, 0x01, 0x22, 0x00, 0x6C, -0x0E, 0xD4, 0x0B, 0xD4, 0x10, 0xD4, 0x57, 0x13, -0x0C, 0x95, 0x11, 0x94, 0x80, 0x18, 0x55, 0x3E, -0x30, 0xF0, 0x20, 0x6C, 0x02, 0x67, 0xC0, 0xF3, -0x40, 0x9C, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0x67, 0xC0, 0xF3, 0x40, 0x9B, -0x81, 0x40, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x09, 0xD2, 0xC0, 0xF3, 0x40, 0x9C, 0x84, 0x40, -0x40, 0xEA, 0x09, 0x95, 0xC2, 0x67, 0x91, 0x67, -0x80, 0x18, 0xC3, 0x06, 0x30, 0xF0, 0x20, 0x6B, -0x09, 0xD2, 0xC0, 0xF3, 0x40, 0x9B, 0x90, 0x67, -0xFC, 0x69, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x4C, 0xE9, 0xC0, 0xF3, 0x40, 0x9C, 0x0C, 0x94, -0x01, 0x4C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x08, 0xD2, 0x0C, 0x94, 0xC0, 0xF3, 0x40, 0x9B, -0x40, 0xEA, 0x08, 0x94, 0x80, 0x34, 0x4D, 0xEC, -0xE7, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, -0x20, 0x6A, 0xCB, 0xF1, 0x64, 0xA2, 0x04, 0x6A, -0x08, 0xD4, 0x6C, 0xEA, 0xFC, 0x4C, 0x12, 0xD4, -0x02, 0x2A, 0x08, 0x92, 0x12, 0xD2, 0x0C, 0x94, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, -0x0F, 0x4C, 0x40, 0xEA, 0x13, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x67, 0xF7, -0xB8, 0xA2, 0x01, 0x6B, 0xFF, 0x6C, 0x6C, 0xED, -0x7D, 0x25, 0x50, 0x71, 0x70, 0x60, 0x80, 0x71, -0x20, 0xF2, 0x17, 0x61, 0x00, 0xF1, 0x58, 0xA2, -0x4C, 0xEB, 0x8C, 0xEB, 0x04, 0x23, 0x08, 0x95, -0x90, 0x67, 0x80, 0x18, 0xD7, 0x3E, 0x30, 0xF0, -0x20, 0x6A, 0xEB, 0xF1, 0x70, 0xA2, 0x01, 0x6A, -0x6C, 0xEA, 0x20, 0xF2, 0x06, 0x22, 0x67, 0x40, -0x00, 0x6C, 0x09, 0x4B, 0x0F, 0xD3, 0x0D, 0xD4, -0x0A, 0xD4, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0x94, -0xC0, 0xF3, 0x40, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x86, 0xF7, 0x67, 0xA3, 0x9D, 0x67, -0x64, 0x33, 0x6D, 0xE4, 0x8A, 0xAB, 0x0D, 0x93, -0x91, 0xE3, 0x1F, 0xF7, 0x00, 0x6B, 0x8C, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x11, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x86, 0xF7, 0x67, 0xA3, -0x9D, 0x67, 0x64, 0x33, 0x6D, 0xE4, 0x8A, 0xAB, -0x0D, 0x93, 0x91, 0xE3, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x7C, 0x9B, 0x6D, 0xE4, 0x80, 0xA3, -0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x60, 0x9B, 0x71, 0xE4, 0x80, 0xA4, 0xFF, 0x6B, -0x8C, 0xEB, 0x6E, 0xEA, 0xE0, 0xF1, 0x0D, 0x2A, -0x0A, 0x94, 0xFF, 0x6A, 0x0F, 0x93, 0x01, 0x4C, -0x4C, 0xEC, 0x0D, 0x92, 0x01, 0x4B, 0x06, 0x74, -0x01, 0x4A, 0x0A, 0xD4, 0x0D, 0xD2, 0x0F, 0xD3, -0xC0, 0x61, 0x08, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, -0x90, 0x67, 0xAC, 0xEC, 0x4C, 0xED, 0x80, 0x18, -0xEE, 0x07, 0xC0, 0xF1, 0x16, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x44, 0xF3, -0x90, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, -0x44, 0xF3, 0x70, 0xC2, 0xCA, 0x11, 0x00, 0xF1, -0x58, 0xA2, 0x4C, 0xEB, 0x8C, 0xEB, 0xC0, 0xF1, -0x04, 0x23, 0x08, 0x95, 0x90, 0x67, 0x80, 0x18, -0xD7, 0x3E, 0xBF, 0x11, 0x88, 0x71, 0xA0, 0xF0, -0x07, 0x60, 0x89, 0x59, 0x06, 0x60, 0x08, 0x71, -0xA0, 0xF0, 0x02, 0x60, 0x80, 0x71, 0x2B, 0x60, -0xB4, 0x11, 0xA0, 0x71, 0x03, 0x60, 0xC0, 0x71, -0xA0, 0xF1, 0x0F, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x24, 0xF3, 0x51, 0xA3, -0x90, 0x67, 0x08, 0xD3, 0x01, 0x4A, 0x24, 0xF3, -0x51, 0xC3, 0x80, 0x18, 0x24, 0x06, 0xA0, 0xF1, -0x00, 0x22, 0x90, 0x67, 0x80, 0x18, 0x3B, 0x06, -0x80, 0xF1, 0x1B, 0x22, 0x08, 0x94, 0x06, 0x6A, -0xE0, 0xF0, 0x79, 0xA4, 0x6C, 0xEA, 0x80, 0xF1, -0x14, 0x2A, 0x91, 0x67, 0x80, 0x18, 0x16, 0x07, -0x08, 0x93, 0x24, 0xF3, 0x52, 0xA3, 0x01, 0x4A, -0x24, 0xF3, 0x52, 0xC3, 0x8A, 0x11, 0x44, 0xF3, -0x50, 0xA2, 0x4C, 0xEB, 0x8C, 0xEB, 0x59, 0x23, -0x87, 0x40, 0x00, 0x6A, 0x09, 0x4C, 0x0F, 0xD4, -0x0D, 0xD2, 0x0A, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x0F, 0x94, 0xC0, 0xF3, 0x40, 0x9A, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x86, 0xF7, 0x67, 0xA3, -0x9D, 0x67, 0x64, 0x33, 0x6D, 0xE4, 0x8A, 0xAB, -0x0D, 0x93, 0x91, 0xE3, 0x1F, 0xF7, 0x00, 0x6B, -0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, -0x11, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x86, 0xF7, -0x67, 0xA3, 0x9D, 0x67, 0x64, 0x33, 0x6D, 0xE4, -0x8A, 0xAB, 0x0D, 0x93, 0x91, 0xE3, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x7C, 0x9B, 0x6D, 0xE4, -0x80, 0xA3, 0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF1, 0x60, 0x9B, 0x71, 0xE4, 0x80, 0xA4, -0xFF, 0x6B, 0x8C, 0xEB, 0x6E, 0xEA, 0x21, 0x2A, -0x0A, 0x94, 0xFF, 0x6A, 0x0F, 0x93, 0x01, 0x4C, -0x4C, 0xEC, 0x0D, 0x92, 0x01, 0x4B, 0x06, 0x74, -0x01, 0x4A, 0x0A, 0xD4, 0x0D, 0xD2, 0x0F, 0xD3, -0xC1, 0x61, 0x08, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, -0x90, 0x67, 0xAC, 0xEC, 0x4C, 0xED, 0x80, 0x18, -0xEE, 0x07, 0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x44, 0xF3, 0x90, 0xA2, -0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x44, 0xF3, -0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0x99, 0xA2, 0x08, 0x6B, -0x8C, 0xEB, 0x20, 0xF1, 0x02, 0x23, 0x44, 0xF3, -0x74, 0xA2, 0x04, 0x23, 0x44, 0xF3, 0x55, 0xA2, -0x00, 0xF1, 0x1B, 0x22, 0x0C, 0x94, 0x12, 0x95, -0xD0, 0x67, 0x80, 0x18, 0x6E, 0x48, 0x15, 0x11, -0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, -0x64, 0x40, 0x83, 0x67, 0x08, 0xD3, 0x40, 0xEA, -0x82, 0x67, 0x80, 0x18, 0xB3, 0x06, 0x09, 0x95, -0xFF, 0x6B, 0xC3, 0x67, 0x4C, 0xEE, 0x90, 0x67, -0x6C, 0xED, 0x80, 0x18, 0xD2, 0x06, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, 0x08, 0x94, -0x40, 0xEA, 0x82, 0x67, 0x80, 0x18, 0xEC, 0x0D, -0xE0, 0xF0, 0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF7, 0x75, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0x25, 0x22, 0x09, 0x94, -0x47, 0x40, 0x01, 0x4A, 0x89, 0xE2, 0x08, 0xD2, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, -0x08, 0x94, 0x40, 0xEA, 0x45, 0x72, 0x18, 0x61, -0x08, 0x94, 0x80, 0x18, 0x34, 0x14, 0x01, 0x72, -0x13, 0x61, 0x08, 0x94, 0x80, 0x18, 0x46, 0x14, -0x01, 0x72, 0x0E, 0x61, 0x08, 0x94, 0x80, 0x18, -0x57, 0x14, 0x04, 0x22, 0x01, 0x6C, 0x0E, 0xD4, -0x0B, 0xD4, 0x06, 0x10, 0x08, 0x94, 0x80, 0x18, -0x89, 0x14, 0x01, 0x6B, 0x0E, 0xD3, 0x0B, 0xD3, -0x90, 0x67, 0x80, 0x18, 0x24, 0x06, 0x08, 0x22, -0x09, 0x95, 0x90, 0x67, 0x80, 0x18, 0xAC, 0x0D, -0x03, 0x22, 0x01, 0x6A, 0x0E, 0xD2, 0x0B, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF7, 0x75, 0xA2, -0x02, 0x6A, 0x6C, 0xEA, 0x08, 0x22, 0x09, 0x95, -0x90, 0x67, 0x80, 0x18, 0x1E, 0x10, 0x03, 0x22, -0x01, 0x6C, 0x0E, 0xD4, 0x0B, 0xD4, 0x30, 0xF0, -0x20, 0x6A, 0x86, 0xF7, 0x75, 0xA2, 0x04, 0x6A, -0x6C, 0xEA, 0x08, 0x22, 0x09, 0x95, 0x90, 0x67, -0x80, 0x18, 0xCF, 0x0E, 0x03, 0x22, 0x01, 0x6B, -0x0E, 0xD3, 0x0B, 0xD3, 0x09, 0x95, 0x90, 0x67, -0x00, 0xF0, 0x12, 0x06, 0x04, 0x07, 0x80, 0x18, -0x2E, 0x04, 0x05, 0x72, 0x13, 0x60, 0x0C, 0x72, -0x24, 0x60, 0x04, 0x72, 0x3E, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC6, 0xF7, 0x6F, 0xA2, 0x44, 0x6A, -0x6C, 0xEA, 0x37, 0x22, 0x5D, 0x67, 0x09, 0x95, -0xC9, 0xAA, 0xF0, 0xA2, 0x90, 0x67, 0x80, 0x18, -0x8F, 0x46, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF7, 0x6F, 0xA2, 0x78, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x25, 0x22, -0x7D, 0x67, 0x09, 0x95, 0xC9, 0xAB, 0xF0, 0xA3, -0x90, 0x67, 0x80, 0x18, 0x4B, 0x45, 0x1A, 0x2A, -0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x20, 0xF1, 0x8F, 0xA2, 0x20, 0x6B, -0x8C, 0xEB, 0x13, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF2, 0x78, 0x9B, 0x29, 0x6C, 0x80, 0xC3, -0x24, 0xF3, 0x84, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, -0x01, 0x6C, 0x24, 0xF3, 0x64, 0xC2, 0x0E, 0xD4, -0x0B, 0xD4, 0x03, 0x10, 0x01, 0x6B, 0x0E, 0xD3, -0x0B, 0xD3, 0x09, 0x95, 0x90, 0x67, 0x80, 0x18, -0x52, 0x06, 0x1D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, 0x96, 0xA2, -0x20, 0x6B, 0x8C, 0xEB, 0x0D, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF2, 0x78, 0x9B, 0x0B, 0x6C, -0x80, 0xC3, 0x24, 0xF3, 0x84, 0xA2, 0x01, 0x6B, -0x8D, 0xEB, 0x24, 0xF3, 0x64, 0xC2, 0x07, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, -0x4C, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x08, 0xD2, -0xE0, 0xF0, 0x75, 0xA2, 0x80, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x25, 0x22, -0x0B, 0x93, 0x03, 0x23, 0x01, 0x6C, 0x0B, 0xD4, -0x20, 0x10, 0x09, 0x95, 0x90, 0x67, 0x80, 0x18, -0x88, 0x06, 0x1B, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0x22, 0x6B, 0x60, 0xC2, -0x08, 0x92, 0x24, 0xF3, 0x64, 0xA2, 0x01, 0x6A, -0x6D, 0xEA, 0x08, 0x93, 0x24, 0xF3, 0x44, 0xC3, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x60, 0x9A, 0xFF, 0x6C, 0x40, 0xA3, 0x8C, 0xEA, -0x08, 0x6C, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, -0x40, 0xC3, 0x13, 0x94, 0x01, 0x6D, 0x80, 0x18, -0xED, 0x06, 0x16, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x08, 0xD2, 0x24, 0xF3, -0x64, 0xA2, 0x01, 0x6A, 0x6D, 0xEA, 0x08, 0x93, -0x24, 0xF3, 0x44, 0xC3, 0x0C, 0x94, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x10, 0x4C, -0x40, 0xEA, 0x08, 0x94, 0x84, 0xF5, 0x56, 0xC4, -0x08, 0x71, 0x02, 0x60, 0x88, 0x71, 0x48, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE0, 0xF0, 0x97, 0xA2, 0x40, 0x6B, 0x8C, 0xEB, -0x0E, 0x23, 0x0E, 0x93, 0x0C, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF2, 0x78, 0x9B, 0x25, 0x6C, -0x80, 0xC3, 0x24, 0xF3, 0x84, 0xA2, 0x01, 0x6B, -0x8D, 0xEB, 0x24, 0xF3, 0x64, 0xC2, 0x09, 0x95, -0x90, 0x67, 0x80, 0x18, 0x94, 0x06, 0x11, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, -0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x24, 0xF3, 0x84, 0xA2, -0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x24, 0xF3, -0x64, 0xC2, 0x30, 0xF0, 0x20, 0x69, 0xA6, 0xF6, -0x00, 0x49, 0xE0, 0xF0, 0x76, 0xA1, 0x40, 0x6A, -0x6C, 0xEA, 0x12, 0x22, 0x09, 0x95, 0x90, 0x67, -0x80, 0x18, 0x6D, 0x0A, 0x0D, 0x22, 0x24, 0xF3, -0x64, 0xA1, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x24, 0xF3, 0x44, 0xC1, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x11, 0x95, 0x0C, 0x96, 0x01, 0x6C, 0x80, 0x18, -0x36, 0x3E, 0x11, 0x95, 0x0C, 0x96, 0x00, 0x6C, -0x22, 0x67, 0x80, 0x18, 0x36, 0x3E, 0x11, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x64, 0xA2, -0x01, 0x6A, 0x6C, 0xEA, 0x03, 0x22, 0x01, 0x6C, -0x80, 0x18, 0x28, 0x09, 0x80, 0x18, 0x2B, 0x07, -0x01, 0x72, 0x31, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x24, 0xF3, 0x53, 0xA0, -0x01, 0x4A, 0x24, 0xF3, 0x53, 0xC0, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF4, 0x48, 0x9A, 0x40, 0xEA, -0x01, 0x72, 0x15, 0x60, 0x24, 0xF3, 0x84, 0xA0, -0x01, 0x6B, 0x02, 0x72, 0x8D, 0xEB, 0x24, 0xF3, -0x64, 0xC0, 0x42, 0x6B, 0x03, 0x60, 0x04, 0x72, -0x06, 0x61, 0x43, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0x60, 0xC2, 0x01, 0x6C, -0x80, 0x18, 0x28, 0x09, 0x21, 0x10, 0x11, 0x95, -0x91, 0x67, 0x80, 0x18, 0x64, 0x3E, 0x10, 0x94, -0xFF, 0xF7, 0x1F, 0x6A, 0x0C, 0xD1, 0x01, 0x4C, -0x4C, 0xEC, 0x10, 0xD4, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, -0x97, 0xA2, 0x20, 0x6B, 0x8C, 0xEB, 0x0C, 0x2B, -0xE0, 0xF0, 0x95, 0xA2, 0xFE, 0x4B, 0x8C, 0xEB, -0xE0, 0xF0, 0x75, 0xC2, 0x05, 0x10, 0x10, 0x92, -0x14, 0x93, 0x63, 0xEA, 0xBF, 0xF4, 0x04, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, -0x10, 0xF0, 0x30, 0x6A, 0xE8, 0xF2, 0x02, 0x4A, -0x40, 0xDB, 0x19, 0x97, 0x18, 0x91, 0x17, 0x90, -0x0D, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x44, 0xF3, 0x56, 0xA0, -0xFF, 0x69, 0x64, 0x67, 0x2C, 0xED, 0x2C, 0xEB, -0x04, 0xD5, 0x05, 0xD2, 0x62, 0x2A, 0xA0, 0xF0, -0x56, 0xA0, 0x01, 0x6C, 0x8C, 0xEA, 0x2C, 0xEA, -0x5C, 0x22, 0x05, 0xF3, 0x54, 0xA0, 0x59, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, 0x44, 0x9A, -0x85, 0x67, 0xA3, 0x67, 0x40, 0xEA, 0x0A, 0x22, -0x5D, 0x67, 0x67, 0x42, 0x0D, 0x4B, 0x40, 0xA3, -0x01, 0x6B, 0x05, 0xF3, 0x76, 0xC0, 0x05, 0xF3, -0x54, 0xC0, 0x47, 0x10, 0xA0, 0xF0, 0x78, 0xA0, -0x05, 0xF3, 0x54, 0xA0, 0x63, 0xEA, 0x32, 0x61, -0xA0, 0xF0, 0x76, 0xA0, 0x08, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x1B, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0x4B, 0x6B, 0x6B, 0xEB, -0x60, 0xC2, 0xE0, 0xF0, 0x88, 0xA0, 0x00, 0x6D, -0x00, 0x18, 0x09, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x58, 0x9A, 0xE0, 0xF0, 0x88, 0xA0, -0x40, 0xEA, 0xC0, 0xF0, 0x64, 0xA0, 0x80, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xC0, 0xF0, 0x44, 0xC0, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x58, 0x9A, 0x10, 0x6B, 0x01, 0x6C, 0x60, 0xC2, -0x80, 0x18, 0x28, 0x09, 0xA0, 0xF0, 0x76, 0xA0, -0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xA0, 0xF0, -0x56, 0xC0, 0x0F, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x40, 0xF4, 0x50, 0x9A, 0xA0, 0xF0, 0x8A, 0xA0, -0x04, 0x97, 0x02, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0x05, 0xF3, 0x54, 0xA0, 0x01, 0x4A, 0x05, 0xF3, -0x54, 0xC0, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x44, 0xF3, 0x76, 0xA0, -0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xE9, 0x7A, 0x2B, -0xA0, 0xF0, 0x76, 0xA0, 0x01, 0x6C, 0x6C, 0xEC, -0x4C, 0xEC, 0x74, 0x24, 0x05, 0xF3, 0x93, 0xA0, -0x01, 0x4C, 0x05, 0xF3, 0x93, 0xC0, 0x05, 0xF3, -0x96, 0xA0, 0x01, 0x74, 0x36, 0x61, 0x04, 0x6C, -0x6C, 0xEC, 0x4C, 0xEC, 0x32, 0x24, 0x05, 0xF3, -0x95, 0xA0, 0x2F, 0x2C, 0x05, 0xF3, 0xB3, 0xA0, -0xA0, 0xF0, 0x99, 0xA0, 0x83, 0xED, 0x29, 0x61, -0x08, 0x6C, 0x6C, 0xEC, 0x4C, 0xEC, 0x14, 0x24, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, -0x4B, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0xE0, 0xF0, -0x88, 0xA0, 0x00, 0x6D, 0x00, 0x18, 0x09, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x58, 0x9A, -0xE0, 0xF0, 0x88, 0xA0, 0x40, 0xEA, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, -0x10, 0x6B, 0x01, 0x6C, 0x60, 0xC2, 0x80, 0x18, -0x28, 0x09, 0xA0, 0xF0, 0x76, 0xA0, 0x02, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xA0, 0xF0, 0x56, 0xC0, -0x35, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0xA0, 0xF0, 0x77, 0xA0, 0x05, 0xF3, -0x53, 0xA0, 0x63, 0xEA, 0x2B, 0x61, 0x91, 0x67, -0x00, 0x18, 0xD9, 0xD9, 0x01, 0x6B, 0x4C, 0xEB, -0x18, 0x2B, 0x05, 0xF3, 0x55, 0xA0, 0x15, 0x2A, -0x05, 0xF3, 0x54, 0xA0, 0xA0, 0xF0, 0x8A, 0xA0, -0x02, 0x6D, 0x01, 0x4A, 0x05, 0xF3, 0x54, 0xC0, -0x05, 0xF3, 0x52, 0xA0, 0x08, 0x6E, 0xF1, 0x67, -0x01, 0x4A, 0x05, 0xF3, 0x52, 0xC0, 0x30, 0xF0, -0x20, 0x6A, 0x40, 0xF4, 0x50, 0x9A, 0x40, 0xEA, -0x04, 0x10, 0x91, 0x67, 0x01, 0x6D, 0x00, 0x18, -0xD3, 0xD9, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x00, 0x6B, 0x05, 0xF3, 0x73, 0xC2, -0x05, 0xF3, 0x75, 0xC2, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0xA6, 0xF7, 0x18, 0x4C, 0x07, 0x6E, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE0, 0xF0, 0x95, 0xA2, 0x11, 0x6B, 0x6B, 0xEB, -0x8C, 0xEB, 0xE0, 0xF0, 0x75, 0xC2, 0x00, 0x6B, -0x44, 0xF6, 0x70, 0xC2, 0x44, 0xF6, 0x71, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0xF5, 0x63, 0x15, 0x62, -0x14, 0xD1, 0x13, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xED, 0xE5, 0x67, 0x0F, 0xD5, 0xDC, 0x4F, -0x00, 0x6D, 0x16, 0xD4, 0xC5, 0x67, 0x24, 0x4C, -0x4C, 0xEF, 0x80, 0x18, 0xB6, 0x3E, 0x02, 0x67, -0x81, 0x42, 0x00, 0x6A, 0x0E, 0xD2, 0x19, 0x24, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, -0x02, 0x48, 0x00, 0x69, 0x40, 0xEA, 0x0E, 0xD2, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x40, 0x9A, 0x90, 0x67, 0x01, 0x48, 0x40, 0xEA, -0x9D, 0x67, 0x2D, 0xE4, 0x50, 0xC3, 0x01, 0x49, -0x0E, 0x93, 0xFF, 0x6A, 0x2C, 0xEA, 0x63, 0xEA, -0xF0, 0x61, 0x0F, 0x91, 0x16, 0x94, 0xFF, 0xF7, -0x1F, 0x6A, 0xDC, 0x49, 0x4C, 0xE9, 0x24, 0x4C, -0x00, 0x6D, 0x03, 0x6E, 0xF1, 0x67, 0x0D, 0xD4, -0x80, 0x18, 0xB6, 0x3E, 0x30, 0xF0, 0x20, 0x6B, -0x16, 0x94, 0xC0, 0xF3, 0x40, 0x9B, 0x00, 0x68, -0x22, 0x4C, 0x40, 0xEA, 0x10, 0x6B, 0x4C, 0xEB, -0x60, 0x23, 0x0D, 0x94, 0xB0, 0x67, 0xF1, 0x67, -0x30, 0x6E, 0x80, 0x18, 0xB6, 0x3E, 0x22, 0x67, -0x01, 0x4A, 0x01, 0x68, 0x24, 0x22, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, 0x87, 0x41, -0x01, 0x4C, 0x40, 0xEA, 0x0D, 0x49, 0x0D, 0xD1, -0x10, 0xD2, 0x00, 0x69, 0x15, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x0D, 0x94, -0x40, 0xEA, 0x02, 0x72, 0x02, 0x61, 0x20, 0x48, -0x03, 0x10, 0x04, 0x72, 0x03, 0x61, 0x40, 0x48, -0xFF, 0x6A, 0x4C, 0xE8, 0xFF, 0x6A, 0x01, 0x49, -0x4C, 0xE9, 0x0D, 0x92, 0x04, 0x4A, 0x0D, 0xD2, -0x10, 0x93, 0x63, 0xE9, 0xE8, 0x61, 0x0F, 0x92, -0x16, 0x94, 0xFF, 0xF7, 0x1F, 0x6F, 0xDC, 0x4A, -0x24, 0x4C, 0x01, 0x6D, 0xDD, 0x6E, 0x4C, 0xEF, -0x80, 0x18, 0xB6, 0x3E, 0x22, 0x67, 0x01, 0x4A, -0x24, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x40, 0x9A, 0x87, 0x41, 0x05, 0x4C, 0x40, 0xEA, -0x11, 0x49, 0x0C, 0xD1, 0x0D, 0xD2, 0x00, 0x69, -0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x40, 0x9A, 0x0C, 0x94, 0x40, 0xEA, 0x02, 0x72, -0x02, 0x61, 0x02, 0x48, 0x03, 0x10, 0x04, 0x72, -0x03, 0x61, 0x04, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, -0x0C, 0x94, 0x01, 0x49, 0xFF, 0x6A, 0x04, 0x4C, -0x4C, 0xE9, 0x0C, 0xD4, 0x0D, 0x92, 0x43, 0xE9, -0xE8, 0x61, 0x00, 0x6B, 0x7E, 0x10, 0x0C, 0x94, -0x49, 0xE4, 0x64, 0xF6, 0x60, 0xA2, 0x0E, 0x94, -0x8E, 0xEB, 0x71, 0x2B, 0x64, 0xF6, 0x50, 0xA2, -0x0F, 0x2A, 0x0E, 0x28, 0x0C, 0x93, 0x04, 0x02, -0x74, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0x84, 0xF6, 0x18, 0x4C, 0x91, 0xE3, -0x0E, 0x93, 0x75, 0xE2, 0x01, 0x6B, 0x1B, 0x10, -0x0C, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x4D, 0xE4, 0x64, 0xF6, 0x70, 0xA3, -0x0C, 0xEB, 0xE8, 0x2B, 0x00, 0xF1, 0x78, 0xA2, -0x04, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0xE1, 0x2A, 0x4D, 0x10, 0xE0, 0xA2, 0xC0, 0xA4, -0x01, 0x4A, 0x01, 0x4C, 0xEE, 0xEE, 0x01, 0x5E, -0xD8, 0x67, 0xCB, 0xEE, 0xCC, 0xEB, 0xAA, 0xEA, -0xF5, 0x61, 0x01, 0x73, 0x40, 0x61, 0x30, 0xF0, -0x20, 0x69, 0xA6, 0xF6, 0x00, 0x49, 0xE0, 0xF0, -0xC7, 0xA1, 0x0C, 0x6A, 0x43, 0xF4, 0x48, 0xC1, -0x0C, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0x94, 0xCC, -0xC3, 0xF3, 0x6C, 0xA1, 0x21, 0x6A, 0xC3, 0xF3, -0x8E, 0xA1, 0x4B, 0xEA, 0x6C, 0xEA, 0x04, 0x6B, -0x8C, 0xEB, 0xC3, 0xF3, 0x4C, 0xC1, 0x04, 0x2B, -0xFE, 0x4B, 0x4C, 0xEB, 0xC3, 0xF3, 0x6C, 0xC1, -0x30, 0xF0, 0x20, 0x69, 0xA6, 0xF6, 0x00, 0x49, -0x67, 0xF7, 0x78, 0xA1, 0x02, 0x6A, 0xE0, 0xF0, -0x87, 0xA1, 0x4B, 0xEA, 0x6C, 0xEA, 0x67, 0xF7, -0x58, 0xC1, 0x00, 0x18, 0x97, 0xDC, 0xE0, 0xF0, -0x87, 0xA1, 0x00, 0x18, 0x86, 0xDC, 0xE0, 0xF0, -0x87, 0xA1, 0x00, 0x18, 0x9E, 0xDC, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x55, 0x6B, -0x60, 0xC2, 0x24, 0xF3, 0x64, 0xA1, 0x01, 0x6A, -0x6D, 0xEA, 0x24, 0xF3, 0x44, 0xC1, 0x0C, 0x92, -0x01, 0x4A, 0x0C, 0xD2, 0x0C, 0x93, 0xFF, 0x6A, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xD3, -0xA6, 0xF6, 0x00, 0x4A, 0x44, 0xF6, 0x70, 0xA2, -0x0C, 0x94, 0x63, 0xEC, 0x7F, 0xF7, 0x17, 0x61, -0x15, 0x97, 0x14, 0x91, 0x13, 0x90, 0x0B, 0x63, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA4, 0xF3, 0x4E, 0xA0, 0xFF, 0x69, 0x2C, 0xEC, +0x04, 0xD4, 0x80, 0xF0, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0xE0, 0xF0, +0x88, 0xA0, 0x40, 0xEA, 0x7D, 0x22, 0xA0, 0xF0, +0x56, 0xA0, 0x01, 0x6B, 0x4C, 0xEB, 0x2C, 0xEB, +0x77, 0x23, 0x45, 0xF1, 0x73, 0xA0, 0x01, 0x4B, +0x45, 0xF1, 0x73, 0xC0, 0x45, 0xF1, 0x76, 0xA0, +0x01, 0x73, 0x39, 0x61, 0x04, 0x6B, 0x4C, 0xEB, +0x2C, 0xEB, 0x35, 0x23, 0x45, 0xF1, 0x75, 0xA0, +0x32, 0x2B, 0x45, 0xF1, 0x93, 0xA0, 0xA0, 0xF0, +0x79, 0xA0, 0x63, 0xEC, 0x2C, 0x61, 0x08, 0x6B, +0x4C, 0xEB, 0x2C, 0xEB, 0x17, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, 0x4B, 0x6B, +0x6B, 0xEB, 0x60, 0xC2, 0xE0, 0xF0, 0x88, 0xA0, +0x00, 0x6D, 0x00, 0x18, 0x1A, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF0, 0x88, 0xA0, 0x80, 0xF3, +0x58, 0x9A, 0x40, 0xEA, 0x04, 0x94, 0x80, 0x18, +0x00, 0x40, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x50, 0x9A, 0x10, 0x6B, 0x01, 0x6C, +0x60, 0xC2, 0x80, 0x18, 0x53, 0x06, 0xA0, 0xF0, +0x76, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xA0, 0xF0, 0x56, 0xC0, 0x35, 0x10, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0xA0, 0xF0, +0x77, 0xA0, 0x45, 0xF1, 0x53, 0xA0, 0x63, 0xEA, +0x2B, 0x61, 0x04, 0x94, 0x00, 0x18, 0xF6, 0xDE, +0x01, 0x6B, 0x4C, 0xEB, 0x18, 0x2B, 0x45, 0xF1, +0x55, 0xA0, 0x15, 0x2A, 0x45, 0xF1, 0x54, 0xA0, +0xA0, 0xF0, 0x8A, 0xA0, 0x04, 0x97, 0x01, 0x4A, +0x45, 0xF1, 0x54, 0xC0, 0x45, 0xF1, 0x52, 0xA0, +0x02, 0x6D, 0x08, 0x6E, 0x01, 0x4A, 0x45, 0xF1, +0x52, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF4, +0x50, 0x9A, 0x40, 0xEA, 0x04, 0x10, 0x04, 0x94, +0x01, 0x6D, 0x00, 0x18, 0xF0, 0xDE, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, +0x45, 0xF1, 0x73, 0xC2, 0x45, 0xF1, 0x75, 0xC2, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x96, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x00, 0xF1, 0x99, 0xA3, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x28, 0xF3, +0x08, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0x95, 0xA2, +0x11, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE0, 0xF0, +0x75, 0xC2, 0x00, 0x6B, 0x04, 0xF7, 0x68, 0xC2, +0x04, 0xF7, 0x69, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, 0xE5, 0x67, +0x0F, 0xD5, 0xDC, 0x4F, 0x00, 0x6D, 0x16, 0xD4, +0xC5, 0x67, 0x24, 0x4C, 0x4C, 0xEF, 0x80, 0x18, +0x2D, 0x3C, 0x02, 0x67, 0x81, 0x42, 0x00, 0x6A, +0x0E, 0xD2, 0x19, 0x24, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x40, 0x9A, 0x02, 0x48, 0x00, 0x69, +0x40, 0xEA, 0x0E, 0xD2, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x90, 0x67, +0x01, 0x48, 0x40, 0xEA, 0x9D, 0x67, 0x2D, 0xE4, +0x50, 0xC3, 0x01, 0x49, 0x0E, 0x93, 0xFF, 0x6A, +0x2C, 0xEA, 0x63, 0xEA, 0xF0, 0x61, 0x0F, 0x91, +0x16, 0x94, 0xFF, 0xF7, 0x1F, 0x6A, 0xDC, 0x49, +0x4C, 0xE9, 0x24, 0x4C, 0x00, 0x6D, 0x03, 0x6E, +0xF1, 0x67, 0x0D, 0xD4, 0x80, 0x18, 0x2D, 0x3C, +0x30, 0xF0, 0x20, 0x6B, 0x16, 0x94, 0xC0, 0xF3, +0x40, 0x9B, 0x00, 0x68, 0x22, 0x4C, 0x40, 0xEA, +0x10, 0x6B, 0x4C, 0xEB, 0x60, 0x23, 0x0D, 0x94, +0xB0, 0x67, 0xF1, 0x67, 0x30, 0x6E, 0x80, 0x18, +0x2D, 0x3C, 0x22, 0x67, 0x01, 0x4A, 0x01, 0x68, +0x24, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, +0x40, 0x9C, 0x87, 0x41, 0x01, 0x4C, 0x40, 0xEA, +0x0D, 0x49, 0x0D, 0xD1, 0x10, 0xD2, 0x00, 0x69, +0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x40, 0x9A, 0x0D, 0x94, 0x40, 0xEA, 0x02, 0x72, +0x02, 0x61, 0x20, 0x48, 0x03, 0x10, 0x04, 0x72, +0x03, 0x61, 0x40, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0xFF, 0x6A, 0x01, 0x49, 0x4C, 0xE9, 0x0D, 0x92, +0x04, 0x4A, 0x0D, 0xD2, 0x10, 0x93, 0x63, 0xE9, +0xE8, 0x61, 0x0F, 0x92, 0x16, 0x94, 0xFF, 0xF7, +0x1F, 0x6F, 0xDC, 0x4A, 0x24, 0x4C, 0x01, 0x6D, +0xDD, 0x6E, 0x4C, 0xEF, 0x80, 0x18, 0x2D, 0x3C, +0x22, 0x67, 0x01, 0x4A, 0x24, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x87, 0x41, +0x05, 0x4C, 0x40, 0xEA, 0x11, 0x49, 0x0C, 0xD1, +0x0D, 0xD2, 0x00, 0x69, 0x15, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x0C, 0x94, +0x40, 0xEA, 0x02, 0x72, 0x02, 0x61, 0x02, 0x48, +0x03, 0x10, 0x04, 0x72, 0x03, 0x61, 0x04, 0x48, +0xFF, 0x6A, 0x4C, 0xE8, 0x0C, 0x94, 0x01, 0x49, +0xFF, 0x6A, 0x04, 0x4C, 0x4C, 0xE9, 0x0C, 0xD4, +0x0D, 0x92, 0x43, 0xE9, 0xE8, 0x61, 0x00, 0x6B, +0x89, 0x10, 0x0C, 0x94, 0x49, 0xE4, 0x04, 0xF7, +0x78, 0xA2, 0x0E, 0x94, 0x8E, 0xEB, 0x7C, 0x2B, +0x24, 0xF7, 0x48, 0xA2, 0x0F, 0x2A, 0x0E, 0x28, +0x0C, 0x93, 0x04, 0x02, 0x74, 0x34, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x44, 0xF7, +0x10, 0x4C, 0x91, 0xE3, 0x0E, 0x93, 0x75, 0xE2, +0x01, 0x6B, 0x1B, 0x10, 0x0C, 0x94, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x4D, 0xE4, +0x24, 0xF7, 0x68, 0xA3, 0x0C, 0xEB, 0xE8, 0x2B, +0x00, 0xF1, 0x78, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, +0xFF, 0x6B, 0x6C, 0xEA, 0xE1, 0x2A, 0x58, 0x10, +0xE0, 0xA2, 0xC0, 0xA4, 0x01, 0x4A, 0x01, 0x4C, +0xEE, 0xEE, 0x01, 0x5E, 0xD8, 0x67, 0xCB, 0xEE, +0xCC, 0xEB, 0xAA, 0xEA, 0xF5, 0x61, 0x01, 0x73, +0x4B, 0x61, 0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, +0x10, 0x49, 0x00, 0xF1, 0x78, 0xA1, 0x08, 0x6A, +0x6C, 0xEA, 0x32, 0x2A, 0xE0, 0xF0, 0xC7, 0xA1, +0x0C, 0x6A, 0x43, 0xF4, 0x44, 0xC1, 0x0C, 0x6C, +0x00, 0x6D, 0x00, 0x18, 0xAE, 0xCD, 0xC3, 0xF3, +0x48, 0xA1, 0xC3, 0xF3, 0x8A, 0xA1, 0x21, 0x6B, +0x6B, 0xEB, 0x4C, 0xEB, 0x04, 0x6A, 0x8C, 0xEA, +0xFF, 0x6C, 0x8C, 0xEA, 0xC3, 0xF3, 0x68, 0xC1, +0x04, 0x2A, 0xFE, 0x4A, 0x6C, 0xEA, 0xC3, 0xF3, +0x48, 0xC1, 0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, +0x10, 0x49, 0xA7, 0xF5, 0x78, 0xA1, 0x02, 0x6A, +0xE0, 0xF0, 0x87, 0xA1, 0x4B, 0xEA, 0x6C, 0xEA, +0xA7, 0xF5, 0x58, 0xC1, 0x00, 0x18, 0xB4, 0xE1, +0xE0, 0xF0, 0x87, 0xA1, 0x00, 0x18, 0xA3, 0xE1, +0xE0, 0xF0, 0x87, 0xA1, 0x00, 0x18, 0xBB, 0xE1, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, +0x55, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x64, 0xF3, 0x9C, 0xA2, +0x01, 0x6B, 0x8D, 0xEB, 0x64, 0xF3, 0x7C, 0xC2, +0x0C, 0x92, 0x01, 0x4A, 0x0C, 0xD2, 0x0C, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x0C, 0xD3, 0x08, 0xF2, 0x10, 0x4A, 0x04, 0xF7, +0x68, 0xA2, 0x0C, 0x94, 0x63, 0xEC, 0x7F, 0xF7, +0x0C, 0x61, 0x15, 0x97, 0x14, 0x91, 0x13, 0x90, +0x0B, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x8B, 0xD8, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x00, 0xF1, 0x99, 0xA3, 0xFF, 0x6D, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x4C, 0x9A, 0x9C, 0x34, 0xC4, 0x44, -0x49, 0xE4, 0x40, 0xA2, 0x44, 0xF6, 0x50, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x50, 0x9A, -0x49, 0xE4, 0x40, 0xA2, 0x44, 0xF6, 0x51, 0xC3, -0x44, 0xF6, 0x50, 0xA3, 0x0A, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF3, 0x68, 0x9A, 0x01, 0x6F, +0x64, 0xF1, 0x44, 0x9A, 0x9C, 0x34, 0xC4, 0x44, +0x49, 0xE4, 0x40, 0xA2, 0x04, 0xF7, 0x48, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, 0x50, 0x9A, +0x49, 0xE4, 0x40, 0xA2, 0x04, 0xF7, 0x49, 0xC3, +0x04, 0xF7, 0x48, 0xA3, 0x0A, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF2, 0x7C, 0x9A, 0x01, 0x6F, 0x40, 0xA3, 0xAC, 0xEA, 0xED, 0xEA, 0xAC, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xE6, -0x40, 0x9A, 0xEB, 0xF4, 0x54, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF3, 0x6C, 0x9B, 0x6E, 0xEA, -0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0x68, 0x9A, 0xFF, 0x6D, 0x02, 0x6E, 0x40, 0xA3, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x49, 0xE6, +0x40, 0x9A, 0x0D, 0xF1, 0x5C, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF3, 0x60, 0x9B, 0x6E, 0xEA, +0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF2, +0x7C, 0x9A, 0xFF, 0x6D, 0x02, 0x6E, 0x40, 0xA3, 0xAC, 0xEA, 0xCD, 0xEA, 0xAC, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, 0x70, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF5, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x2D, 0xF1, 0x08, 0x4A, 0xA7, 0x42, 0x6D, 0xE4, 0x09, 0x4D, 0xC0, 0xA3, 0x01, 0x4B, 0xC0, 0xC2, 0x01, 0x4A, 0xAA, 0xEA, -0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF5, -0x10, 0x4A, 0xA7, 0x42, 0x6D, 0xE4, 0x09, 0x4D, +0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x2D, 0xF1, +0x18, 0x4A, 0xA7, 0x42, 0x6D, 0xE4, 0x09, 0x4D, 0xC0, 0xA3, 0x01, 0x4B, 0xC0, 0xC2, 0x01, 0x4A, 0xAA, 0xEA, 0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x2B, 0xF5, 0x10, 0x4A, 0xA7, 0x42, 0x6D, 0xE4, +0x64, 0xF2, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x4D, 0xF1, 0x18, 0x4A, 0xA7, 0x42, 0x6D, 0xE4, 0x01, 0x4D, 0xC0, 0xA3, 0x01, 0x4B, 0xC0, 0xC2, 0x01, 0x4A, 0xAA, 0xEA, 0xFA, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x54, 0x9A, 0x51, 0xE4, +0x20, 0x6A, 0xE4, 0xF2, 0x48, 0x9A, 0x51, 0xE4, 0x00, 0x6A, 0x0A, 0x10, 0xE0, 0xA3, 0x01, 0x4B, 0xCA, 0xEB, 0xE0, 0xC5, 0x01, 0x4D, 0xFA, 0x61, 0x01, 0x4A, 0x10, 0x72, 0x20, 0x4C, 0x0C, 0x60, -0x54, 0x35, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0x84, 0xF6, 0x18, 0x4D, 0xC7, 0x44, +0x54, 0x35, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x10, 0x4B, 0x44, 0xF7, 0x10, 0x4D, 0xC7, 0x44, 0xB5, 0xE3, 0x19, 0x4E, 0x64, 0x67, 0xEA, 0x17, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x0E, 0x24, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0x98, 0x9B, 0x80, 0x6D, 0xAB, 0xED, +0x04, 0xF2, 0x98, 0x9B, 0x80, 0x6D, 0xAB, 0xED, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, -0x60, 0xC4, 0x80, 0x18, 0xB7, 0x13, 0x1B, 0x10, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0xE0, 0xF0, 0xC7, 0xA0, 0x0C, 0x6A, 0x0C, 0x6C, -0x00, 0x6D, 0x43, 0xF4, 0x48, 0xC0, 0x00, 0x18, -0x94, 0xCC, 0xC3, 0xF3, 0x6C, 0xA0, 0x21, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x67, 0xF7, 0x78, 0xA0, -0xC3, 0xF3, 0x4C, 0xC0, 0x02, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x67, 0xF7, 0x58, 0xC0, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x60, 0xC4, 0x80, 0x18, 0x2D, 0x11, 0x22, 0x10, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x00, 0xF1, 0x98, 0xA0, 0x08, 0x6B, 0x8C, 0xEB, +0x4C, 0xEB, 0x18, 0x2B, 0xE0, 0xF0, 0xC7, 0xA0, +0x0C, 0x6A, 0x0C, 0x6C, 0x00, 0x6D, 0x43, 0xF4, +0x44, 0xC0, 0x00, 0x18, 0xAE, 0xCD, 0xC3, 0xF3, +0x68, 0xA0, 0x21, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x02, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, 0xC3, 0xF3, +0x48, 0xC0, 0xA7, 0xF5, 0x58, 0xA0, 0x4C, 0xEB, +0xA7, 0xF5, 0x78, 0xC0, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xE0, 0xF0, 0x95, 0xA2, 0x41, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0xE0, 0xF0, 0x75, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xAD, 0xF0, 0x1C, 0x4C, 0x00, 0x6D, +0x5C, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, 0x95, 0xA2, -0x41, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE0, 0xF0, -0x75, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x8B, 0xF4, -0x14, 0x4C, 0x00, 0x6D, 0x5C, 0x6E, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF7, 0x75, 0xA2, -0x40, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x80, 0x18, -0x1E, 0x14, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x08, 0xF3, 0x65, 0xA2, 0x40, 0x6A, 0x6C, 0xEA, +0x02, 0x22, 0x80, 0x18, 0x97, 0x11, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x27, 0x44, 0x09, 0x49, 0xCD, 0xF0, 0x0E, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, +0x91, 0x67, 0x40, 0xEA, 0x60, 0xA0, 0x6E, 0xEA, +0x02, 0x22, 0x00, 0x6A, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x01, 0x48, 0xCD, 0xF0, 0x12, 0x4A, +0x4A, 0xE8, 0x01, 0x49, 0xED, 0x61, 0x01, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x40, 0x98, 0x24, 0x67, 0x07, 0x4C, +0x10, 0x4C, 0x40, 0xEA, 0x04, 0xD2, 0xC0, 0xF3, +0x40, 0x98, 0x87, 0x41, 0x0F, 0x4C, 0x40, 0xEA, +0x04, 0x94, 0x09, 0x97, 0x08, 0x91, 0x80, 0x33, +0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xCD, 0xF0, +0x52, 0xAA, 0x07, 0x90, 0x4E, 0xEB, 0x01, 0x5B, +0x58, 0x67, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x27, 0x44, 0x09, 0x49, -0xAB, 0xF4, 0x06, 0x48, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x40, 0x9A, 0x91, 0x67, 0x40, 0xEA, -0x60, 0xA0, 0x6E, 0xEA, 0x02, 0x22, 0x00, 0x6A, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0x48, -0xAB, 0xF4, 0x0A, 0x4A, 0x4A, 0xE8, 0x01, 0x49, -0xED, 0x61, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x30, 0xF0, 0x20, 0x6A, 0xCD, 0xF0, 0x42, 0xAA, +0x08, 0xD4, 0x00, 0x68, 0x11, 0x2A, 0x28, 0x10, +0x08, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x40, 0x9A, 0x1C, 0x4C, 0x11, 0xE4, 0x25, 0xE0, +0x40, 0xEA, 0xC4, 0xF6, 0x66, 0xA1, 0x6E, 0xEA, +0x1B, 0x2A, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, +0xA4, 0xF6, 0x52, 0xA9, 0x43, 0xE8, 0xE8, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF3, 0x64, 0x9A, +0xFF, 0x6C, 0x40, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x00, 0x6A, +0xC4, 0xF6, 0x44, 0xC9, 0x01, 0x6A, 0x01, 0x10, +0x00, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA4, 0xF6, 0x7C, 0xAA, +0x01, 0x4B, 0xA4, 0xF6, 0x7C, 0xCA, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF6, 0xBC, 0xAA, 0x84, 0xF2, +0x74, 0x9B, 0xA2, 0x35, 0x6D, 0xE4, 0xA0, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF3, 0x68, 0x9B, +0xA4, 0xF6, 0x5C, 0xA2, 0x71, 0xE4, 0x40, 0xC4, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, +0x32, 0x6B, 0x01, 0x6C, 0x60, 0xC2, 0x80, 0x18, +0x53, 0x06, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x00, 0x68, 0x08, 0xD4, 0x12, 0x10, 0x08, 0x94, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, +0x1C, 0x4C, 0x11, 0xE4, 0x25, 0xE0, 0x40, 0xEA, +0xE4, 0xF6, 0x66, 0xA1, 0x6E, 0xEA, 0x02, 0x22, +0x00, 0x6A, 0x21, 0x10, 0x01, 0x48, 0xFF, 0x6A, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, +0x10, 0x49, 0xA4, 0xF6, 0x54, 0xA9, 0x43, 0xE8, +0xE6, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF3, +0x64, 0x9A, 0xFF, 0x6C, 0x80, 0x6D, 0x40, 0xA3, +0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, +0x50, 0x9A, 0x30, 0x6B, 0x01, 0x6C, 0x60, 0xC2, +0x80, 0x18, 0x53, 0x06, 0x01, 0x6A, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, +0x00, 0xF1, 0x0D, 0xA1, 0x00, 0x18, 0x8B, 0xD8, +0xE0, 0xF0, 0x77, 0xA1, 0x01, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, 0x1C, 0x30, +0x49, 0xE0, 0x40, 0xAA, 0xA4, 0xF6, 0x4C, 0xC9, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF3, 0x4C, 0x9A, +0x49, 0xE0, 0x40, 0xAA, 0xA4, 0xF6, 0x4E, 0xC9, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, 0x54, 0x9A, +0x49, 0xE0, 0x40, 0xAA, 0xA4, 0xF6, 0x50, 0xC9, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF2, 0x4C, 0x9A, +0x49, 0xE0, 0x40, 0xAA, 0xA4, 0xF6, 0x52, 0xC9, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x58, 0x9A, +0x49, 0xE0, 0x40, 0xAA, 0xA4, 0xF6, 0x54, 0xC9, +0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF3, 0x50, 0x9A, 0x41, 0xE0, 0x40, 0x98, +0xA4, 0xF6, 0x58, 0xD9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, -0x24, 0x67, 0x07, 0x4C, 0x10, 0x4C, 0x40, 0xEA, -0x04, 0xD2, 0xC0, 0xF3, 0x40, 0x98, 0x87, 0x41, -0x0F, 0x4C, 0x40, 0xEA, 0x04, 0x94, 0x09, 0x97, -0x08, 0x91, 0x80, 0x33, 0x4D, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0xAB, 0xF4, 0x4A, 0xAA, 0x07, 0x90, -0x4E, 0xEB, 0x01, 0x5B, 0x58, 0x67, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF4, 0x5A, 0xAA, 0x08, 0xD4, 0x00, 0x68, -0x11, 0x2A, 0x28, 0x10, 0x08, 0x94, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x1C, 0x4C, -0x11, 0xE4, 0x25, 0xE0, 0x40, 0xEA, 0x04, 0xF6, -0x6E, 0xA1, 0x6E, 0xEA, 0x1B, 0x2A, 0x01, 0x48, -0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x69, -0xA6, 0xF6, 0x00, 0x49, 0xE4, 0xF5, 0x5A, 0xA9, -0x43, 0xE8, 0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF3, 0x70, 0x9A, 0xFF, 0x6C, 0x40, 0x6D, -0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x00, 0x6A, 0x04, 0xF6, 0x4C, 0xC9, -0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x04, 0xF6, 0x64, 0xAA, 0x01, 0x4B, 0x04, 0xF6, -0x64, 0xCA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF6, -0xA4, 0xAA, 0xC3, 0xF3, 0x70, 0x9B, 0xA2, 0x35, -0x6D, 0xE4, 0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF3, 0x74, 0x9B, 0x04, 0xF6, 0x44, 0xA2, -0x71, 0xE4, 0x40, 0xC4, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x58, 0x9A, 0x32, 0x6B, 0x01, 0x6C, -0x60, 0xC2, 0x80, 0x18, 0x28, 0x09, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x00, 0x68, 0x08, 0xD4, -0x12, 0x10, 0x08, 0x94, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x40, 0x9A, 0x1C, 0x4C, 0x11, 0xE4, -0x25, 0xE0, 0x40, 0xEA, 0x24, 0xF6, 0x6E, 0xA1, -0x6E, 0xEA, 0x02, 0x22, 0x00, 0x6A, 0x21, 0x10, -0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x69, 0xA6, 0xF6, 0x00, 0x49, 0xE4, 0xF5, -0x5C, 0xA9, 0x43, 0xE8, 0xE6, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF3, 0x70, 0x9A, 0xFF, 0x6C, -0x80, 0x6D, 0x40, 0xA3, 0xAB, 0xED, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x30, 0x6B, -0x01, 0x6C, 0x60, 0xC2, 0x80, 0x18, 0x28, 0x09, -0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0xA6, 0xF6, 0x00, 0x49, 0x00, 0xF1, 0x0D, 0xA1, -0x00, 0x18, 0x96, 0xD3, 0xE0, 0xF0, 0x77, 0xA1, -0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x4C, 0x9A, 0x1C, 0x30, 0x49, 0xE0, 0x40, 0xAA, -0xE4, 0xF5, 0x54, 0xC9, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF3, 0x58, 0x9A, 0x49, 0xE0, 0x40, 0xAA, -0xE4, 0xF5, 0x56, 0xC9, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x50, 0x9A, 0x49, 0xE0, 0x40, 0xAA, -0xE4, 0xF5, 0x58, 0xC9, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF3, 0x5C, 0x9A, 0x49, 0xE0, 0x40, 0xAA, -0xE4, 0xF5, 0x5A, 0xC9, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF3, 0x54, 0x9A, 0x49, 0xE0, 0x40, 0xAA, -0xE4, 0xF5, 0x5C, 0xC9, 0x80, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x08, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, 0x4C, 0x9A, -0x41, 0xE0, 0x40, 0x98, 0x04, 0xF6, 0x40, 0xD9, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, +0x00, 0xF1, 0x0E, 0xA1, 0x00, 0x18, 0x8B, 0xD8, +0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x4C, 0x9A, 0x1C, 0x30, 0x04, 0xD0, 0x49, 0xE0, +0x80, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x93, +0xE4, 0xF1, 0x44, 0x9A, 0xFF, 0x68, 0x0C, 0xEC, +0x49, 0xE3, 0xA0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF2, 0x54, 0x9A, 0x0C, 0xED, 0x49, 0xE3, +0xC0, 0xA2, 0x0C, 0xEE, 0x80, 0x18, 0xEF, 0x03, +0x04, 0x93, 0x38, 0x4A, 0x30, 0xF0, 0x20, 0x6C, +0x69, 0xE2, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF2, +0x74, 0x9B, 0x04, 0xF3, 0x88, 0x9C, 0x6D, 0xE2, +0x60, 0xA3, 0x91, 0xE2, 0x80, 0xA4, 0x0C, 0xEB, +0x60, 0x33, 0x8C, 0xE8, 0x61, 0xE0, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF3, 0x70, 0x9B, 0xA4, 0xF6, +0x1C, 0xC9, 0x00, 0xF1, 0x0F, 0xA1, 0x6D, 0xE2, +0x60, 0xA3, 0xA4, 0xF6, 0x7E, 0xC1, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF3, 0x74, 0x9B, 0x6D, 0xE2, +0x60, 0xA3, 0xA4, 0xF6, 0x7F, 0xC1, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF3, 0x78, 0x9B, 0x6D, 0xE2, +0x60, 0xA3, 0xC4, 0xF6, 0x60, 0xC1, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF3, 0x7C, 0x9B, 0x6D, 0xE2, +0x60, 0xA3, 0xC4, 0xF6, 0x61, 0xC1, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF3, 0x60, 0x9B, 0x69, 0xE2, +0x40, 0xAA, 0xC4, 0xF6, 0x42, 0xC9, 0x00, 0x18, +0x8B, 0xD8, 0xA4, 0xF6, 0x92, 0xA9, 0x01, 0xE2, +0x1C, 0x30, 0x00, 0x6B, 0x12, 0x2C, 0x13, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, +0x49, 0xE0, 0x69, 0xE2, 0xA0, 0xA2, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x49, 0xE3, +0xC4, 0xF6, 0xA6, 0xC2, 0x01, 0x4B, 0xFF, 0x6A, +0x4C, 0xEB, 0x83, 0xEB, 0xED, 0x61, 0x30, 0xF0, +0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, 0x00, 0xF1, +0x10, 0xA1, 0x00, 0x18, 0x8B, 0xD8, 0xA4, 0xF6, +0x94, 0xA9, 0x01, 0xE2, 0x1C, 0x30, 0x00, 0x6B, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x44, 0x9A, 0x49, 0xE0, 0x69, 0xE2, 0xA0, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x49, 0xE3, 0xE4, 0xF6, 0xA6, 0xC2, 0x01, 0x4B, +0xFF, 0x6A, 0x4C, 0xEB, 0x83, 0xEB, 0xED, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xCD, 0xF0, 0x64, 0xAA, +0x00, 0x6A, 0x03, 0x10, 0x01, 0x4A, 0xFF, 0x6C, +0x8C, 0xEA, 0x63, 0xEA, 0xFB, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0xFF, 0x68, +0x0C, 0xEC, 0x23, 0x24, 0x80, 0x18, 0x20, 0x12, +0x80, 0x18, 0x46, 0x12, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0xE0, 0xF0, 0x97, 0xA3, +0x80, 0x6A, 0x4B, 0xEA, 0x8C, 0xEA, 0x0C, 0xEA, +0x1A, 0x22, 0xA4, 0xF6, 0x78, 0x9B, 0xE0, 0xF3, +0x08, 0x6E, 0x01, 0x6A, 0x78, 0xEE, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, +0x10, 0xF0, 0x30, 0x6C, 0xE8, 0xF7, 0x0D, 0x4C, +0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEA, +0x06, 0x10, 0x10, 0xF0, 0x30, 0x6C, 0xE8, 0xF7, +0x0D, 0x4C, 0x00, 0x18, 0x92, 0xE0, 0x07, 0x97, +0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF3, 0x64, 0x9A, +0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xA3, +0x08, 0xF2, 0x10, 0x49, 0x8C, 0xEA, 0x20, 0x6C, +0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, +0x00, 0xF1, 0x0E, 0xA1, 0x00, 0x18, 0x8B, 0xD8, +0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x4C, 0x9A, 0x1C, 0x30, 0x49, 0xE0, 0x80, 0xA2, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x44, 0x9A, +0x49, 0xE0, 0xA0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF2, 0x54, 0x9A, 0x49, 0xE0, 0xC0, 0xA2, +0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xEE, 0x4C, 0xED, +0x80, 0x18, 0xEF, 0x03, 0x87, 0x40, 0x00, 0x6D, +0x29, 0x4C, 0x05, 0xD2, 0x80, 0x18, 0xD9, 0x0A, +0x05, 0x92, 0x38, 0x4A, 0x09, 0xE2, 0x82, 0x67, +0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x80, 0x18, +0xED, 0x11, 0x20, 0xF4, 0x54, 0x98, 0x04, 0x95, +0x00, 0xF1, 0xCE, 0xA1, 0x00, 0x6C, 0x40, 0xEA, +0x20, 0xF4, 0x54, 0x98, 0x04, 0x95, 0x00, 0xF1, +0xCE, 0xA1, 0x11, 0x6C, 0x40, 0xEA, 0x00, 0x18, +0x95, 0xD8, 0x28, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x44, 0x9A, 0xFF, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x40, 0xA2, 0x00, 0x6C, 0xFF, 0x6D, +0x4C, 0xEB, 0xA0, 0xF2, 0x50, 0x98, 0x04, 0xD3, +0x26, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x72, +0x1B, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF1, +0x8E, 0xA1, 0xA0, 0xF2, 0x54, 0x9A, 0x01, 0x6D, +0x08, 0x6E, 0x00, 0x6F, 0x40, 0xEA, 0xA0, 0xF2, +0x50, 0x98, 0x04, 0x95, 0x00, 0x6C, 0x26, 0x6E, +0x40, 0xEA, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x54, 0x9A, 0x00, 0xF1, 0x8E, 0xA1, +0x01, 0x6D, 0x08, 0x6E, 0x00, 0x6F, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xE0, 0xF0, 0x7C, 0xA2, 0x02, 0x73, 0x07, 0x61, +0x00, 0xF1, 0x8E, 0xA2, 0x05, 0x92, 0xFF, 0x6D, +0x4C, 0xED, 0x80, 0x18, 0xFD, 0x06, 0x30, 0xF0, +0x20, 0x6A, 0xC8, 0xF2, 0x97, 0xA2, 0xFF, 0x68, +0x96, 0x34, 0x00, 0x18, 0x00, 0xCF, 0x30, 0xF0, +0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, +0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, +0x60, 0x9A, 0x20, 0x6C, 0x40, 0xA3, 0x0C, 0xEA, +0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC4, 0xF6, +0x64, 0xAA, 0x01, 0x4B, 0xC4, 0xF6, 0x64, 0xCA, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0xA6, 0xF6, 0x00, 0x49, 0x00, 0xF1, 0x0E, 0xA1, -0x00, 0x18, 0x96, 0xD3, 0x01, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x54, 0x9A, 0x1C, 0x30, -0x04, 0xD0, 0x49, 0xE0, 0x80, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0x93, 0xA3, 0xF2, 0x50, 0x9A, -0xFF, 0x68, 0x0C, 0xEC, 0x49, 0xE3, 0xA0, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x5C, 0x9A, -0x0C, 0xED, 0x49, 0xE3, 0xC0, 0xA2, 0x0C, 0xEE, -0x80, 0x18, 0xC3, 0x06, 0x04, 0x93, 0x38, 0x4A, -0x30, 0xF0, 0x20, 0x6C, 0x69, 0xE2, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF3, 0x70, 0x9B, 0xE3, 0xF3, -0x94, 0x9C, 0x6D, 0xE2, 0x60, 0xA3, 0x91, 0xE2, -0x80, 0xA4, 0x0C, 0xEB, 0x60, 0x33, 0x8C, 0xE8, -0x61, 0xE0, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, -0x6C, 0x9B, 0x04, 0xF6, 0x04, 0xC9, 0x00, 0xF1, -0x0F, 0xA1, 0x6D, 0xE2, 0x60, 0xA3, 0x04, 0xF6, -0x66, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, -0x60, 0x9B, 0x6D, 0xE2, 0x60, 0xA3, 0x04, 0xF6, -0x67, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, -0x64, 0x9B, 0x6D, 0xE2, 0x60, 0xA3, 0x04, 0xF6, -0x68, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, -0x68, 0x9B, 0x6D, 0xE2, 0x60, 0xA3, 0x04, 0xF6, -0x69, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, -0x6C, 0x9B, 0x69, 0xE2, 0x40, 0xAA, 0x04, 0xF6, -0x4A, 0xC9, 0x00, 0x18, 0x96, 0xD3, 0xE4, 0xF5, -0x9A, 0xA9, 0x01, 0xE2, 0x1C, 0x30, 0x00, 0x6B, -0x12, 0x2C, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x4C, 0x9A, 0x49, 0xE0, 0x69, 0xE2, -0xA0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x49, 0xE3, 0x04, 0xF6, 0xAE, 0xC2, -0x01, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, 0x83, 0xEB, -0xED, 0x61, 0x30, 0xF0, 0x20, 0x69, 0xA6, 0xF6, -0x00, 0x49, 0x00, 0xF1, 0x10, 0xA1, 0x00, 0x18, -0x96, 0xD3, 0xE4, 0xF5, 0x9C, 0xA9, 0x01, 0xE2, -0x1C, 0x30, 0x00, 0x6B, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, 0x49, 0xE0, -0x69, 0xE2, 0xA0, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x49, 0xE3, 0x24, 0xF6, -0xAE, 0xC2, 0x01, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, -0x83, 0xEB, 0xED, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x8B, 0xF4, 0x7C, 0xAA, 0x00, 0x6A, 0x03, 0x10, -0x01, 0x4A, 0xFF, 0x6C, 0x8C, 0xEA, 0x63, 0xEA, -0xFB, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, 0x23, 0x24, -0x80, 0x18, 0xA7, 0x14, 0x80, 0x18, 0xCD, 0x14, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0xE0, 0xF0, 0x97, 0xA3, 0x80, 0x6A, 0x4B, 0xEA, -0x8C, 0xEA, 0x0C, 0xEA, 0x1A, 0x22, 0x04, 0xF6, -0x60, 0x9B, 0xE0, 0xF3, 0x08, 0x6E, 0x01, 0x6A, -0x78, 0xEE, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x30, 0x6C, -0x0A, 0xF2, 0x09, 0x4C, 0x00, 0x6D, 0x01, 0x6F, -0x12, 0xEE, 0x40, 0xEA, 0x06, 0x10, 0x10, 0xF0, -0x30, 0x6C, 0x0A, 0xF2, 0x09, 0x4C, 0x00, 0x18, -0x75, 0xDB, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF3, 0x70, 0x9A, 0xFF, 0x6C, 0x30, 0xF0, -0x20, 0x69, 0x40, 0xA3, 0xA6, 0xF6, 0x00, 0x49, -0x8C, 0xEA, 0x20, 0x6C, 0x8D, 0xEA, 0xFF, 0x6C, -0x8C, 0xEA, 0x40, 0xC3, 0x00, 0xF1, 0x0E, 0xA1, -0x00, 0x18, 0x96, 0xD3, 0x01, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x54, 0x9A, 0x1C, 0x30, -0x49, 0xE0, 0x80, 0xA2, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x50, 0x9A, 0x49, 0xE0, 0xA0, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x5C, 0x9A, -0x49, 0xE0, 0xC0, 0xA2, 0xFF, 0x6A, 0x4C, 0xEC, -0x4C, 0xEE, 0x4C, 0xED, 0x80, 0x18, 0xC3, 0x06, -0x87, 0x40, 0x00, 0x6D, 0x29, 0x4C, 0x05, 0xD2, -0x80, 0x18, 0x79, 0x0D, 0x05, 0x92, 0x38, 0x4A, -0x09, 0xE2, 0x82, 0x67, 0x30, 0xF0, 0x20, 0x68, -0x04, 0xD2, 0x80, 0x18, 0x74, 0x14, 0x20, 0xF4, -0x54, 0x98, 0x04, 0x95, 0x00, 0xF1, 0xCE, 0xA1, -0x00, 0x6C, 0x40, 0xEA, 0x20, 0xF4, 0x54, 0x98, -0x04, 0x95, 0x00, 0xF1, 0xCE, 0xA1, 0x11, 0x6C, -0x40, 0xEA, 0x00, 0x18, 0xA0, 0xD3, 0x28, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x50, 0x9A, -0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xA2, -0x00, 0x6C, 0xFF, 0x6D, 0x4C, 0xEB, 0xA0, 0xF2, -0x50, 0x98, 0x04, 0xD3, 0x26, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, -0x40, 0xEA, 0x01, 0x72, 0x1B, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF1, 0x8E, 0xA1, 0xA0, 0xF2, -0x54, 0x9A, 0x01, 0x6D, 0x08, 0x6E, 0x00, 0x6F, -0x40, 0xEA, 0xA0, 0xF2, 0x50, 0x98, 0x04, 0x95, -0x00, 0x6C, 0x26, 0x6E, 0x40, 0xEA, 0x0A, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x54, 0x9A, -0x00, 0xF1, 0x8E, 0xA1, 0x01, 0x6D, 0x08, 0x6E, -0x00, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, 0x7C, 0xA2, -0x02, 0x73, 0x07, 0x61, 0x00, 0xF1, 0x8E, 0xA2, -0x05, 0x92, 0xFF, 0x6D, 0x4C, 0xED, 0x80, 0x18, -0x1D, 0x0A, 0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF7, -0x87, 0xA2, 0xFF, 0x68, 0x96, 0x34, 0x00, 0x18, -0xA3, 0xCD, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, -0x54, 0x9A, 0x40, 0xEA, 0x0A, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x60, 0x9A, 0x20, 0x6C, -0x40, 0xA3, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x04, 0xF6, 0x6C, 0xAA, 0x01, 0x4B, -0x04, 0xF6, 0x6C, 0xCA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF6, 0xAC, 0x9B, 0x62, 0xF6, 0x0C, 0x4B, -0xFF, 0x6A, 0x05, 0xD5, 0xA1, 0x9B, 0x64, 0xAB, -0x4C, 0xEC, 0x06, 0xD5, 0xBD, 0x67, 0x6E, 0xCD, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0xE0, 0xF0, 0xD5, 0xA3, 0x40, 0x6D, 0xCC, 0xED, -0x4C, 0xED, 0x72, 0x25, 0xC0, 0xF0, 0xC4, 0xA3, -0x7F, 0x6D, 0xCC, 0xED, 0x4C, 0xED, 0x42, 0x25, -0xC0, 0xF0, 0xA5, 0xA3, 0x0F, 0x6B, 0xAC, 0xEB, -0x4C, 0xEB, 0x3C, 0x23, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF4, 0x75, 0xA3, 0x37, 0x2B, 0xBD, 0x67, -0x84, 0x33, 0x6D, 0xE5, 0xAA, 0xAB, 0x1F, 0xF7, -0x00, 0x6E, 0x62, 0x45, 0xCC, 0xEB, 0x02, 0xF0, -0x00, 0x73, 0x01, 0x60, 0x0C, 0x2B, 0x5D, 0x67, -0x84, 0x34, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0x6A, 0xAC, 0xC3, 0xF1, 0x50, 0x9A, 0x49, 0xE3, -0x60, 0xA2, 0xFF, 0x6A, 0x06, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF4, 0x70, 0x9B, 0x75, 0xE5, -0x60, 0xA5, 0x6C, 0xEA, 0x7D, 0x67, 0x50, 0xC3, -0x50, 0xA3, 0x14, 0x22, 0x70, 0xA3, 0xFF, 0x6A, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE4, 0xF5, 0x94, 0xAA, 0x7A, 0xEC, -0x01, 0x2B, 0xE5, 0xE8, 0x12, 0xEB, 0xE4, 0xF5, -0x74, 0xCA, 0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF4, 0x75, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE4, 0xF5, 0x94, 0xAA, -0x64, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x44, 0xF6, 0x6E, 0xAA, 0x12, 0xEC, 0x63, 0xEC, -0x01, 0x4B, 0x18, 0x60, 0x04, 0xF6, 0x6C, 0xAA, -0xE4, 0xF5, 0x58, 0xAA, 0x4E, 0xEB, 0x0B, 0x2B, -0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x58, 0x9A, 0x31, 0x6B, 0x01, 0x6C, 0x60, 0xC2, -0x80, 0x18, 0x28, 0x09, 0x09, 0x10, 0x80, 0x18, -0x41, 0x15, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x00, 0x6B, 0x44, 0xF6, 0x6E, 0xCA, -0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x00, 0x6B, 0x42, 0xF5, 0x63, 0xC2, 0x42, 0xF5, -0x64, 0xC2, 0x42, 0xF5, 0x62, 0xC2, 0x00, 0x6B, -0x42, 0xF5, 0x60, 0xCA, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0xD1, 0x06, 0xD0, 0xFF, 0x6A, -0xCC, 0xEA, 0x08, 0xD4, 0x03, 0xD2, 0xE1, 0x9C, -0x00, 0x68, 0x00, 0x69, 0xA3, 0xEF, 0x40, 0x9C, -0x00, 0xD0, 0x01, 0xD1, 0x0A, 0x61, 0xBB, 0xEF, -0x01, 0x2D, 0xE5, 0xE8, 0x00, 0x69, 0x00, 0xD1, -0x12, 0xEB, 0x01, 0xD3, 0xB8, 0xEB, 0x12, 0xEB, -0x7F, 0xE7, 0xC5, 0x67, 0x00, 0x6B, 0x01, 0x6C, -0x00, 0x6D, 0x0C, 0x10, 0xC4, 0x30, 0xC3, 0xE8, -0x64, 0x33, 0xD0, 0x67, 0x18, 0x67, 0x6D, 0xE0, -0x84, 0x30, 0x83, 0xE8, 0x38, 0x67, 0xA4, 0x34, -0x95, 0xE1, 0x90, 0x67, 0x01, 0x53, 0x02, 0x60, -0x07, 0x2B, 0x06, 0x26, 0xE3, 0xEB, 0xEE, 0x61, -0x6A, 0xEF, 0x02, 0x61, 0x43, 0xEE, 0xEA, 0x61, -0x63, 0xEF, 0x18, 0x61, 0xEA, 0xEB, 0x02, 0x61, -0xC3, 0xEA, 0x14, 0x61, 0x00, 0x91, 0xC3, 0xE2, -0x03, 0xEA, 0x7F, 0xE7, 0x50, 0x67, 0x18, 0x67, -0x1F, 0xE7, 0x81, 0xE1, 0x23, 0xE8, 0x01, 0x91, -0x00, 0xD0, 0x18, 0x67, 0xA5, 0xE1, 0x21, 0xE0, -0x02, 0xD0, 0x04, 0xD1, 0x00, 0x90, 0x02, 0x91, -0x00, 0xD0, 0x01, 0xD1, 0x86, 0x30, 0xC0, 0xF7, -0xA0, 0x31, 0x0D, 0xE9, 0x19, 0x65, 0xA6, 0x31, -0x98, 0x67, 0x11, 0x67, 0x8D, 0xE8, 0x02, 0xD1, -0xB1, 0x67, 0x06, 0x20, 0xC0, 0xF7, 0x60, 0x30, -0xC6, 0x36, 0x0D, 0xEE, 0x66, 0x33, 0xD4, 0x17, -0x03, 0x93, 0x01, 0x73, 0x05, 0x61, 0x00, 0x94, -0x01, 0x95, 0x08, 0x90, 0x80, 0xD8, 0xA1, 0xD8, -0x07, 0x91, 0x06, 0x90, 0x04, 0x63, 0x20, 0xE8, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0x40, 0xF4, 0x4C, 0x99, -0xFF, 0x68, 0x8C, 0xE8, 0x0D, 0xD5, 0x90, 0x67, -0x01, 0x6D, 0x40, 0xEA, 0x06, 0xD2, 0x40, 0xF4, -0x4C, 0x99, 0x90, 0x67, 0x00, 0x6D, 0x40, 0xEA, -0x04, 0xD2, 0x0D, 0x95, 0x06, 0x92, 0x04, 0x04, -0x00, 0x6E, 0x05, 0xD2, 0x80, 0x18, 0xEE, 0x15, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0xA0, 0x9B, +0xA3, 0xF5, 0x00, 0x4B, 0xFF, 0x6A, 0x05, 0xD5, +0xA1, 0x9B, 0x64, 0xAB, 0x4C, 0xEC, 0x06, 0xD5, +0xBD, 0x67, 0x6E, 0xCD, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0xE0, 0xF0, 0xD5, 0xA3, +0x40, 0x6D, 0xCC, 0xED, 0x4C, 0xED, 0x72, 0x25, +0xC0, 0xF0, 0xC4, 0xA3, 0x7F, 0x6D, 0xCC, 0xED, +0x4C, 0xED, 0x42, 0x25, 0xC0, 0xF0, 0xA5, 0xA3, +0x0F, 0x6B, 0xAC, 0xEB, 0x4C, 0xEB, 0x3C, 0x23, +0x30, 0xF0, 0x20, 0x6B, 0x27, 0xF4, 0x6F, 0xA3, +0x37, 0x2B, 0xBD, 0x67, 0x84, 0x33, 0x6D, 0xE5, +0xAA, 0xAB, 0x1F, 0xF7, 0x00, 0x6E, 0x62, 0x45, +0xCC, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, +0x0C, 0x2B, 0x5D, 0x67, 0x84, 0x34, 0x91, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xAC, 0x04, 0xF1, +0x44, 0x9A, 0x49, 0xE3, 0x60, 0xA2, 0xFF, 0x6A, +0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF3, +0x64, 0x9B, 0x75, 0xE5, 0x60, 0xA5, 0x6C, 0xEA, +0x7D, 0x67, 0x50, 0xC3, 0x50, 0xA3, 0x14, 0x22, +0x70, 0xA3, 0xFF, 0x6A, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xA4, 0xF6, +0x8C, 0xAA, 0x7A, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, +0x12, 0xEB, 0xA4, 0xF6, 0x6C, 0xCA, 0x01, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x27, 0xF4, 0x6F, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA4, 0xF6, 0x8C, 0xAA, 0x64, 0x6B, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x04, 0xF7, 0x66, 0xAA, +0x12, 0xEC, 0x63, 0xEC, 0x01, 0x4B, 0x18, 0x60, +0xC4, 0xF6, 0x64, 0xAA, 0xA4, 0xF6, 0x50, 0xAA, +0x4E, 0xEB, 0x0B, 0x2B, 0x0A, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, 0x31, 0x6B, +0x01, 0x6C, 0x60, 0xC2, 0x80, 0x18, 0x53, 0x06, +0x09, 0x10, 0x80, 0x18, 0xBA, 0x12, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, +0x04, 0xF7, 0x66, 0xCA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF4, 0x54, 0x9A, 0xFF, 0x6B, 0x80, 0xA2, -0x00, 0xF6, 0x80, 0x34, 0x00, 0xF6, 0x83, 0x34, -0x00, 0x54, 0x25, 0x60, 0xA0, 0xA2, 0x7F, 0x6C, -0xAC, 0xEC, 0x40, 0x6D, 0xAD, 0xEC, 0x6C, 0xEC, -0x80, 0xC2, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF4, -0x98, 0x9C, 0x3F, 0x6D, 0x80, 0xA4, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF4, 0x9C, 0x9C, 0x80, 0xA4, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, 0x88, 0x9C, -0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF1, -0x8C, 0x9C, 0x80, 0xA4, 0x80, 0xA2, 0x6C, 0xEC, -0xAD, 0xEC, 0x6C, 0xEC, 0x80, 0xC2, 0x80, 0xA2, -0xBF, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x60, 0x9B, -0xFF, 0x6A, 0x4C, 0xEC, 0xC0, 0xA3, 0x4C, 0xED, -0x15, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF4, -0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x7C, 0xDA, 0x20, 0xE8, 0x80, 0xC3, 0x0B, 0x25, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x88, 0x9B, -0x80, 0x6D, 0xAB, 0xED, 0x60, 0xA4, 0x4C, 0xEB, -0xAE, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x20, 0xE8, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x68, 0x9B, -0x30, 0xF0, 0x20, 0x69, 0xC6, 0xF4, 0x58, 0x99, -0xE0, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, -0x6C, 0x9B, 0x50, 0x32, 0x6D, 0xE2, 0xE0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x70, 0x9B, -0x6D, 0xE2, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF4, 0x74, 0x9B, 0x6D, 0xE2, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x78, 0x9B, -0x69, 0xE2, 0xC0, 0xDA, 0xC6, 0xF4, 0x18, 0x99, -0x01, 0x48, 0x00, 0xF1, 0x00, 0x70, 0xC6, 0xF4, -0x18, 0xD9, 0x05, 0x60, 0x00, 0xF2, 0x00, 0x6A, -0x4E, 0xE8, 0x06, 0x20, 0x0B, 0x10, 0x10, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x4E, 0x16, 0x06, 0x10, -0x11, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x4E, 0x16, -0xC6, 0xF4, 0x18, 0xD9, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x00, 0x6A, 0x7D, 0x67, -0x04, 0xD2, 0x05, 0xD2, 0x4C, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xFF, 0xF7, -0x1F, 0x6F, 0x8C, 0xEF, 0x88, 0xF1, 0x96, 0xA2, -0x0F, 0x6B, 0x04, 0x05, 0x8C, 0xEB, 0x9D, 0x67, -0x70, 0xC4, 0x88, 0xF1, 0x78, 0xA2, 0x0A, 0x6E, -0x72, 0xC4, 0x88, 0xF1, 0x79, 0xA2, 0x73, 0xC4, -0x48, 0xF2, 0x74, 0xA2, 0x48, 0xF2, 0x55, 0xA2, -0x76, 0xC4, 0x57, 0xC4, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF4, 0x50, 0x9A, 0x25, 0x6C, 0x40, 0xEA, -0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x49, -0xA3, 0xF4, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xA0, 0x9B, 0x48, 0xF4, 0xDA, 0xA9, 0xA3, 0xF0, -0x10, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xA0, 0x9B, 0x48, 0xF4, 0xDC, 0xA9, 0xC3, 0xF0, -0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xA0, 0x9B, 0x48, 0xF4, 0xDE, 0xA9, 0xA8, 0xF1, -0x10, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0x68, 0xF4, 0xC0, 0xA9, 0xA0, 0x9B, 0xC8, 0xF1, -0x0C, 0x6C, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6A, 0x0B, 0xD7, -0xE0, 0xAE, 0x1F, 0xF7, 0x00, 0x6B, 0xEC, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x09, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xAE, 0x43, 0xF1, -0x7C, 0x9B, 0x6D, 0xE7, 0xE0, 0xA4, 0xE0, 0xC3, -0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x60, 0x9B, 0x7D, 0xE7, 0x60, 0xA4, 0x60, 0xC7, -0x01, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x72, -0x02, 0x4E, 0x01, 0x4C, 0xE1, 0x61, 0x25, 0x67, -0x00, 0x68, 0x0B, 0x92, 0xC0, 0x99, 0x01, 0x6D, -0x0D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x80, 0xAB, 0xAB, 0xED, 0x02, 0x48, -0x40, 0xEA, 0x16, 0x70, 0x04, 0x49, 0xF1, 0x61, +0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, 0x22, 0xF5, +0x7D, 0xC2, 0x22, 0xF5, 0x7E, 0xC2, 0x22, 0xF5, +0x7C, 0xC2, 0x00, 0x6B, 0x22, 0xF5, 0x7A, 0xCA, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0xD1, +0x06, 0xD0, 0xFF, 0x6A, 0xCC, 0xEA, 0x08, 0xD4, +0x03, 0xD2, 0xE1, 0x9C, 0x00, 0x68, 0x00, 0x69, +0xA3, 0xEF, 0x40, 0x9C, 0x00, 0xD0, 0x01, 0xD1, +0x0A, 0x61, 0xBB, 0xEF, 0x01, 0x2D, 0xE5, 0xE8, +0x00, 0x69, 0x00, 0xD1, 0x12, 0xEB, 0x01, 0xD3, +0xB8, 0xEB, 0x12, 0xEB, 0x7F, 0xE7, 0xC5, 0x67, +0x00, 0x6B, 0x01, 0x6C, 0x00, 0x6D, 0x0C, 0x10, +0xC4, 0x30, 0xC3, 0xE8, 0x64, 0x33, 0xD0, 0x67, +0x18, 0x67, 0x6D, 0xE0, 0x84, 0x30, 0x83, 0xE8, +0x38, 0x67, 0xA4, 0x34, 0x95, 0xE1, 0x90, 0x67, +0x01, 0x53, 0x02, 0x60, 0x07, 0x2B, 0x06, 0x26, +0xE3, 0xEB, 0xEE, 0x61, 0x6A, 0xEF, 0x02, 0x61, +0x43, 0xEE, 0xEA, 0x61, 0x63, 0xEF, 0x18, 0x61, +0xEA, 0xEB, 0x02, 0x61, 0xC3, 0xEA, 0x14, 0x61, +0x00, 0x91, 0xC3, 0xE2, 0x03, 0xEA, 0x7F, 0xE7, +0x50, 0x67, 0x18, 0x67, 0x1F, 0xE7, 0x81, 0xE1, +0x23, 0xE8, 0x01, 0x91, 0x00, 0xD0, 0x18, 0x67, +0xA5, 0xE1, 0x21, 0xE0, 0x02, 0xD0, 0x04, 0xD1, +0x00, 0x90, 0x02, 0x91, 0x00, 0xD0, 0x01, 0xD1, +0x86, 0x30, 0xC0, 0xF7, 0xA0, 0x31, 0x0D, 0xE9, +0x19, 0x65, 0xA6, 0x31, 0x98, 0x67, 0x11, 0x67, +0x8D, 0xE8, 0x02, 0xD1, 0xB1, 0x67, 0x06, 0x20, +0xC0, 0xF7, 0x60, 0x30, 0xC6, 0x36, 0x0D, 0xEE, +0x66, 0x33, 0xD4, 0x17, 0x03, 0x93, 0x01, 0x73, +0x05, 0x61, 0x00, 0x94, 0x01, 0x95, 0x08, 0x90, +0x80, 0xD8, 0xA1, 0xD8, 0x07, 0x91, 0x06, 0x90, +0x04, 0x63, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0x40, 0xF4, 0x4C, 0x99, 0xFF, 0x68, 0x8C, 0xE8, +0x0D, 0xD5, 0x90, 0x67, 0x01, 0x6D, 0x40, 0xEA, +0x06, 0xD2, 0x40, 0xF4, 0x4C, 0x99, 0x90, 0x67, +0x00, 0x6D, 0x40, 0xEA, 0x04, 0xD2, 0x0D, 0x95, +0x06, 0x92, 0x04, 0x04, 0x00, 0x6E, 0x05, 0xD2, +0x80, 0x18, 0x67, 0x13, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF3, 0x48, 0x9A, +0xFF, 0x6B, 0x80, 0xA2, 0x00, 0xF6, 0x80, 0x34, +0x00, 0xF6, 0x83, 0x34, 0x00, 0x54, 0x25, 0x60, +0xA0, 0xA2, 0x7F, 0x6C, 0xAC, 0xEC, 0x40, 0x6D, +0xAD, 0xEC, 0x6C, 0xEC, 0x80, 0xC2, 0x30, 0xF0, +0x20, 0x6C, 0x24, 0xF3, 0x8C, 0x9C, 0x3F, 0x6D, +0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF3, +0x90, 0x9C, 0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6C, +0x84, 0xF0, 0x9C, 0x9C, 0x80, 0xA4, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF0, 0x80, 0x9C, 0x80, 0xA4, +0x80, 0xA2, 0x6C, 0xEC, 0xAD, 0xEC, 0x6C, 0xEC, +0x80, 0xC2, 0x80, 0xA2, 0xBF, 0x6B, 0x8C, 0xEB, +0x60, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF3, 0x74, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, +0xC0, 0xA3, 0x4C, 0xED, 0x15, 0x26, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x24, 0xF3, 0x98, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, 0x20, 0xE8, +0x80, 0xC3, 0x0B, 0x25, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF3, 0x9C, 0x9B, 0x80, 0x6D, 0xAB, 0xED, +0x60, 0xA4, 0x4C, 0xEB, 0xAE, 0xEB, 0x4C, 0xEB, +0x60, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF0, 0x7C, 0x9B, 0x30, 0xF0, 0x20, 0x69, +0x27, 0xF4, 0x54, 0x99, 0xE0, 0x9B, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF3, 0x60, 0x9B, 0x50, 0x32, +0x6D, 0xE2, 0xE0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF3, 0x64, 0x9B, 0x6D, 0xE2, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF3, 0x68, 0x9B, +0x6D, 0xE2, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF3, 0x6C, 0x9B, 0x69, 0xE2, 0xC0, 0xDA, +0x27, 0xF4, 0x14, 0x99, 0x01, 0x48, 0x00, 0xF1, +0x00, 0x70, 0x27, 0xF4, 0x14, 0xD9, 0x05, 0x60, +0x00, 0xF2, 0x00, 0x6A, 0x4E, 0xE8, 0x06, 0x20, +0x0B, 0x10, 0x10, 0x6C, 0x01, 0x6D, 0x80, 0x18, +0xC7, 0x13, 0x06, 0x10, 0x11, 0x6C, 0x01, 0x6D, +0x80, 0x18, 0xC7, 0x13, 0x27, 0xF4, 0x14, 0xD9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0xD1, -0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x68, 0xF4, 0x66, 0xA2, 0x7C, 0x2B, -0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, -0x20, 0x69, 0x68, 0xF4, 0x75, 0xC2, 0x68, 0xF4, -0x76, 0xC2, 0x2F, 0xF4, 0x14, 0x4D, 0x2F, 0xF3, -0x1C, 0x49, 0x00, 0x6A, 0x00, 0x6B, 0x60, 0xDD, -0x30, 0xF0, 0x20, 0x6C, 0xB1, 0xF0, 0x65, 0x42, -0xA6, 0xF6, 0x00, 0x4C, 0x6C, 0x33, 0x6D, 0xE4, -0x04, 0x4B, 0x04, 0xD3, 0x62, 0xF1, 0x68, 0x42, -0x68, 0x33, 0x6D, 0xE4, 0x04, 0x4B, 0x03, 0xD3, -0x06, 0x6B, 0x78, 0xEA, 0x01, 0xD1, 0x00, 0x68, -0x12, 0xEB, 0x6D, 0xE4, 0x09, 0xF0, 0x0D, 0x4B, -0x04, 0x96, 0x00, 0x6C, 0x80, 0xDE, 0x03, 0x96, -0x80, 0xCE, 0x44, 0x36, 0xD9, 0xE0, 0xC4, 0xF2, -0x04, 0x4E, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0x36, -0xA6, 0xF6, 0x00, 0x4C, 0xD1, 0xE4, 0x04, 0x4C, -0x05, 0xD4, 0x01, 0x94, 0x00, 0x6E, 0x00, 0xD6, -0x02, 0xD4, 0x05, 0x96, 0x01, 0x6C, 0x44, 0x37, -0x80, 0xC6, 0x00, 0x94, 0x1D, 0xE7, 0xE4, 0x37, -0xFD, 0xE4, 0x30, 0xF0, 0x20, 0x6E, 0xF0, 0x34, -0xA6, 0xF6, 0x00, 0x4E, 0xF0, 0x37, 0x91, 0xE6, -0xFD, 0xE6, 0x88, 0xF4, 0x0C, 0x4C, 0x08, 0xF5, -0x0C, 0x4F, 0x06, 0xD2, 0x02, 0x92, 0x00, 0x6E, -0xC0, 0xCC, 0x02, 0x4C, 0x4A, 0xEC, 0xC0, 0xCF, -0x02, 0x4F, 0xF8, 0x61, 0x00, 0x94, 0x06, 0x92, -0x01, 0x4C, 0x00, 0xD4, 0x05, 0x94, 0x01, 0x4C, -0x05, 0xD4, 0x02, 0x94, 0x10, 0x4C, 0x02, 0xD4, -0x00, 0x94, 0x02, 0x74, 0xD6, 0x61, 0xC0, 0xC3, -0xC1, 0xC3, 0xC2, 0xC3, 0x04, 0x96, 0x03, 0x94, -0x01, 0x48, 0x04, 0x4E, 0x04, 0xD6, 0x01, 0x96, -0x02, 0x4C, 0x02, 0x70, 0x20, 0x4E, 0x03, 0xD4, -0x03, 0x4B, 0x01, 0xD6, 0xB1, 0x61, 0x01, 0x4A, -0x02, 0x72, 0x04, 0x4D, 0x40, 0x49, 0x92, 0x61, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x27, 0xF4, 0x70, 0xA2, +0x01, 0x4B, 0x27, 0xF4, 0x70, 0xC2, 0x27, 0xF4, +0x90, 0xA2, 0x14, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, +0xE5, 0xE8, 0x10, 0xEB, 0x04, 0x2B, 0x27, 0xF4, +0x70, 0xC2, 0x00, 0x18, 0x4F, 0xC8, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x00, 0x6A, 0x7D, 0x67, 0x04, 0xD2, 0x05, 0xD2, +0x4C, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xFF, 0xF7, 0x1F, 0x6F, 0x8C, 0xEF, +0xC7, 0xF7, 0x9A, 0xA2, 0x0F, 0x6B, 0x04, 0x05, +0x8C, 0xEB, 0x9D, 0x67, 0x70, 0xC4, 0xC7, 0xF7, +0x7C, 0xA2, 0x0A, 0x6E, 0x72, 0xC4, 0xC7, 0xF7, +0x7D, 0xA2, 0x73, 0xC4, 0x88, 0xF0, 0x78, 0xA2, +0x88, 0xF0, 0x59, 0xA2, 0x76, 0xC4, 0x57, 0xC4, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x50, 0x9A, +0x25, 0x6C, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x49, 0xC4, 0xF3, 0x04, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0xA8, 0xF2, +0xC2, 0xA9, 0xA3, 0xF0, 0x10, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x04, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0xA8, 0xF2, +0xC4, 0xA9, 0xC3, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x04, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0xA8, 0xF2, +0xC6, 0xA9, 0xA8, 0xF1, 0x10, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x04, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF2, 0xC8, 0xA9, +0xA0, 0x9B, 0xC8, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x00, 0x6A, 0x0B, 0xD7, 0xE0, 0xAE, 0x1F, 0xF7, +0x00, 0x6B, 0xEC, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xAE, 0x84, 0xF0, 0x70, 0x9B, 0x6D, 0xE7, +0xE0, 0xA4, 0xE0, 0xC3, 0x07, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF0, 0x74, 0x9B, 0x7D, 0xE7, +0x60, 0xA4, 0x60, 0xC7, 0x01, 0x4A, 0xFF, 0x6B, +0x6C, 0xEA, 0x03, 0x72, 0x02, 0x4E, 0x01, 0x4C, +0xE1, 0x61, 0x25, 0x67, 0x00, 0x68, 0x0B, 0x92, +0xC0, 0x99, 0x01, 0x6D, 0x0D, 0xE2, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x80, 0xAB, +0xAB, 0xED, 0x02, 0x48, 0x40, 0xEA, 0x16, 0x70, +0x04, 0x49, 0xF1, 0x61, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0xD1, 0x08, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xA8, 0xF2, +0x6E, 0xA2, 0x7E, 0x2B, 0x01, 0x6B, 0x30, 0xF0, +0x21, 0x6D, 0x30, 0xF0, 0x21, 0x6C, 0xA8, 0xF2, +0x7D, 0xC2, 0xA8, 0xF2, 0x7E, 0xC2, 0xF0, 0xF5, +0x0C, 0x4D, 0xF0, 0xF4, 0x14, 0x4C, 0x00, 0x6A, +0x00, 0x6B, 0x60, 0xDD, 0x30, 0xF0, 0x20, 0x6E, +0x71, 0xF0, 0x6E, 0x42, 0x08, 0xF2, 0x10, 0x4E, +0x6C, 0x33, 0x6D, 0xE6, 0x04, 0x4B, 0x04, 0xD3, +0xF2, 0xF0, 0x6A, 0x42, 0x68, 0x33, 0x6D, 0xE6, +0x04, 0x4B, 0x03, 0xD3, 0x06, 0x6B, 0x78, 0xEA, +0x01, 0xD4, 0x12, 0xEB, 0x6D, 0xE6, 0x48, 0xF6, +0x15, 0x4B, 0x00, 0x6E, 0x04, 0x90, 0x00, 0x6F, +0xE0, 0xD8, 0x03, 0x90, 0xE0, 0xC8, 0x44, 0x30, +0x01, 0xE6, 0xE4, 0xF1, 0x08, 0x48, 0x30, 0xF0, +0x20, 0x6F, 0x04, 0x30, 0x08, 0xF2, 0x10, 0x4F, +0x1D, 0xE7, 0x04, 0x4F, 0x05, 0xD7, 0x01, 0x97, +0x00, 0x68, 0x00, 0xD0, 0x02, 0xD7, 0x05, 0x90, +0x01, 0x6F, 0x44, 0x31, 0xE0, 0xC0, 0x00, 0x97, +0xC5, 0xE1, 0x24, 0x31, 0x25, 0xE7, 0x20, 0xF4, +0x0D, 0x41, 0x30, 0xF0, 0x20, 0x6F, 0x20, 0xF4, +0x15, 0x49, 0x08, 0xF2, 0x10, 0x4F, 0x10, 0x30, +0x30, 0x31, 0x01, 0xE7, 0x25, 0xE7, 0x04, 0x48, +0x04, 0x49, 0x06, 0xD2, 0x02, 0x92, 0x00, 0x6F, +0xE0, 0xC8, 0x02, 0x48, 0x4A, 0xE8, 0xE0, 0xC9, +0x02, 0x49, 0xF8, 0x61, 0x00, 0x90, 0x06, 0x92, +0x01, 0x48, 0x00, 0xD0, 0x05, 0x90, 0x01, 0x48, +0x05, 0xD0, 0x02, 0x90, 0x10, 0x48, 0x02, 0xD0, +0x00, 0x90, 0x02, 0x70, 0xD4, 0x61, 0xE0, 0xC3, +0xE1, 0xC3, 0xE2, 0xC3, 0x04, 0x97, 0x03, 0x90, +0x01, 0x4E, 0x04, 0x4F, 0x04, 0xD7, 0x01, 0x97, +0x02, 0x48, 0x02, 0x76, 0x20, 0x4F, 0x03, 0xD0, +0x03, 0x4B, 0x01, 0xD7, 0xAF, 0x61, 0x01, 0x4A, +0x02, 0x72, 0x04, 0x4D, 0x40, 0x4C, 0x90, 0x61, 0x09, 0x91, 0x08, 0x90, 0x05, 0x63, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xAE, 0xF7, 0x18, 0x4C, 0x00, 0x6D, 0x18, 0x6E, -0x80, 0x18, 0x9C, 0x4E, 0x30, 0xF0, 0x20, 0x6B, -0x01, 0xF4, 0x00, 0x6C, 0xA6, 0xF6, 0x00, 0x4B, -0x4C, 0xEC, 0x88, 0xF5, 0x5C, 0xDB, 0x82, 0x32, +0xC4, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0x70, 0xF1, 0x08, 0x4C, 0x00, 0x6D, 0x18, 0x6E, +0x80, 0x18, 0xAB, 0x53, 0x30, 0xF0, 0x20, 0x6B, +0x01, 0xF4, 0x00, 0x6C, 0x08, 0xF2, 0x10, 0x4B, +0x4C, 0xEC, 0xE8, 0xF3, 0x44, 0xDB, 0x82, 0x32, 0x4A, 0x32, 0x02, 0x72, 0x0A, 0x60, 0x03, 0x6C, 0x4E, 0xEC, 0x04, 0x24, 0x01, 0x72, 0x02, 0x6A, -0x05, 0x60, 0x06, 0x10, 0x68, 0xF4, 0x85, 0xC3, -0x03, 0x10, 0x01, 0x6A, 0x68, 0xF4, 0x45, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x7C, 0x9B, -0x88, 0xF5, 0x9C, 0x9A, 0x8C, 0xEB, 0x62, 0x33, -0x62, 0x33, 0x68, 0xF4, 0x64, 0xC2, 0x05, 0x97, +0x05, 0x60, 0x06, 0x10, 0xA8, 0xF2, 0x8D, 0xC3, +0x03, 0x10, 0x01, 0x6A, 0xA8, 0xF2, 0x4D, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0x70, 0x9B, +0xE8, 0xF3, 0x84, 0x9A, 0x8C, 0xEB, 0x62, 0x33, +0x62, 0x33, 0xA8, 0xF2, 0x6C, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x05, 0xD5, 0x04, 0xD4, 0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x14, 0x4B, 0xE0, 0x9B, 0xC0, 0xA2, -0x30, 0xF0, 0x20, 0x69, 0xAE, 0xF7, 0x18, 0x49, -0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x9C, 0x4E, +0xC4, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0xC0, 0xA2, +0x30, 0xF0, 0x21, 0x69, 0x70, 0xF1, 0x08, 0x49, +0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0xAB, 0x53, 0x04, 0x93, 0x91, 0x67, 0x01, 0x6D, 0x40, 0xDB, -0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x14, 0x4B, 0xE0, 0x9B, 0xC0, 0xA2, 0x01, 0x48, -0x80, 0x18, 0x9C, 0x4E, 0x04, 0x93, 0x41, 0xDB, +0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, +0x0C, 0x4B, 0xE0, 0x9B, 0xC0, 0xA2, 0x01, 0x48, +0x80, 0x18, 0xAB, 0x53, 0x04, 0x93, 0x41, 0xDB, 0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x08, 0x4B, 0x03, 0x70, 0x01, 0x4A, 0x05, 0xD2, 0x04, 0xD3, 0xD8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0xAC, 0xE9, 0x00, 0x68, 0x85, 0xF5, 0x1C, 0x6C, 0xFF, 0x6D, -0x80, 0x18, 0x72, 0x3C, 0x55, 0x72, 0x0C, 0x61, +0x80, 0x18, 0xE1, 0x39, 0x55, 0x72, 0x0C, 0x61, 0x00, 0x6A, 0x15, 0x21, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF4, 0xA8, 0x9A, 0x03, 0xF3, 0x08, 0x6C, -0x80, 0x18, 0x72, 0x3C, 0x00, 0x6A, 0x0B, 0x10, +0x64, 0xF3, 0xBC, 0x9A, 0x03, 0xF3, 0x08, 0x6C, +0x80, 0x18, 0xE1, 0x39, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x01, 0x6A, 0x32, 0x58, @@ -64793,9 +65913,9 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xAB, 0xED, 0xC1, 0x40, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x05, 0x94, -0x01, 0x6D, 0x80, 0x18, 0x57, 0x17, 0xD2, 0x10, +0x01, 0x6D, 0x80, 0x18, 0xDD, 0x14, 0xD2, 0x10, 0x02, 0x72, 0x01, 0x6A, 0xC0, 0xF0, 0x0E, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF3, 0x4A, 0xA2, +0x30, 0xF0, 0x21, 0x6A, 0xD0, 0xF4, 0x42, 0xA2, 0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, 0x12, 0x72, 0x01, 0x68, 0x09, 0x60, 0x1B, 0x72, 0x02, 0x68, 0x06, 0x60, 0x24, 0x68, 0x4E, 0xE8, 0x01, 0x58, @@ -64804,9 +65924,9 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x07, 0xD2, 0x07, 0x93, 0x08, 0x6A, 0x03, 0xF3, 0x00, 0x6C, 0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0x67, 0x07, 0xD3, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, +0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF2, 0x10, 0x4C, 0x04, 0xD4, 0x04, 0x93, 0xC0, 0xF3, 0x44, 0x99, -0x01, 0x6D, 0x68, 0xF4, 0xCA, 0xA3, 0xC3, 0xF3, +0x01, 0x6D, 0xA8, 0xF2, 0xD2, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x05, 0x92, 0x01, 0x6C, 0x01, 0x6D, 0x04, 0x4A, 0x84, 0xEA, 0x00, 0xF3, 0x08, 0x6A, 0x4D, 0xEC, 0x06, 0xD4, @@ -64816,31 +65936,31 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x02, 0x6C, 0x40, 0xEA, 0x05, 0x94, 0x01, 0x6D, -0x80, 0x18, 0x57, 0x17, 0x01, 0x72, 0x0A, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF6, 0x10, 0x4A, -0x41, 0xE0, 0x40, 0xA0, 0x04, 0x93, 0x68, 0xF4, -0x4A, 0xC3, 0x6B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x05, 0x95, 0xA3, 0xF4, 0xF4, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xAE, 0xF7, 0x18, 0x4C, 0x00, 0x6E, -0x80, 0x18, 0x9C, 0x4E, 0x05, 0xD2, 0x07, 0x96, +0x80, 0x18, 0xDD, 0x14, 0x01, 0x72, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x04, 0x4A, +0x41, 0xE0, 0x40, 0xA0, 0x04, 0x93, 0xA8, 0xF2, +0x52, 0xC3, 0x6B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x05, 0x95, 0xC4, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, 0x00, 0x6E, +0x80, 0x18, 0xAB, 0x53, 0x05, 0xD2, 0x07, 0x96, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x05, 0x94, 0xE3, 0xF7, 0x00, 0x6A, 0x04, 0x93, 0x8C, 0xEA, -0x56, 0x34, 0x96, 0x32, 0x68, 0xF4, 0x4C, 0xDB, +0x56, 0x34, 0x96, 0x32, 0xA8, 0xF2, 0x54, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, 0xFF, 0x6B, 0x0B, 0x60, 0x03, 0x70, 0x03, 0x60, 0x01, 0x48, 0x6C, 0xE8, 0x49, 0x10, 0x04, 0x94, 0x01, 0x6B, -0x03, 0x68, 0x29, 0xF0, 0x61, 0xC4, 0x43, 0x10, +0x03, 0x68, 0x68, 0xF6, 0x69, 0xC4, 0x43, 0x10, 0x0A, 0x5A, 0x0B, 0x61, 0x04, 0x20, 0xFF, 0x48, 0x6C, 0xE8, 0x01, 0x6B, 0x0B, 0x10, 0x04, 0x94, -0x01, 0x6B, 0x29, 0xF0, 0x61, 0xC4, 0x01, 0x6B, -0x09, 0x10, 0x04, 0x94, 0x00, 0x6B, 0x29, 0xF0, -0x61, 0xC4, 0x00, 0x6B, 0x03, 0x20, 0x04, 0x58, +0x01, 0x6B, 0x68, 0xF6, 0x69, 0xC4, 0x01, 0x6B, +0x09, 0x10, 0x04, 0x94, 0x00, 0x6B, 0x68, 0xF6, +0x69, 0xC4, 0x00, 0x6B, 0x03, 0x20, 0x04, 0x58, 0x01, 0x61, 0x03, 0x68, 0x30, 0xF0, 0x20, 0x6D, -0x82, 0xF6, 0x10, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, -0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, -0x68, 0xF4, 0xAA, 0xC4, 0x0F, 0x2B, 0x68, 0xF4, -0xCA, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0xC3, 0xF5, 0x04, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, +0x30, 0xF0, 0x20, 0x6C, 0x08, 0xF2, 0x10, 0x4C, +0xA8, 0xF2, 0xB2, 0xC4, 0x0F, 0x2B, 0xA8, 0xF2, +0xD2, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x64, 0x9B, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, @@ -64852,19 +65972,19 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6B, 0x0B, 0xD7, 0xE0, 0xAE, 0x1F, 0xF7, 0x00, 0x6A, 0xEC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x08, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xAE, 0x43, 0xF1, -0x5C, 0x9A, 0x49, 0xE7, 0xE0, 0xA2, 0x06, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xAE, 0x84, 0xF0, +0x50, 0x9A, 0x49, 0xE7, 0xE0, 0xA2, 0x06, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, 0x5D, 0xE7, 0xE0, 0xA7, 0xFF, 0x6A, 0xEC, 0xEA, 0x7D, 0xE4, 0x01, 0x4B, 0x03, 0x73, 0x40, 0xC7, 0x02, 0x4E, 0xE2, 0x61, 0x25, 0x67, 0x00, 0x68, 0x0B, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0x09, 0xE3, -0x80, 0xAA, 0x02, 0x48, 0x80, 0x18, 0x72, 0x3C, +0x80, 0xAA, 0x02, 0x48, 0x80, 0x18, 0xE1, 0x39, 0x16, 0x70, 0x40, 0xD9, 0x04, 0x49, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0xFF, 0x69, 0xA3, 0xF4, 0x70, 0x9B, 0x30, 0xF0, +0xFF, 0x69, 0xC4, 0xF3, 0x68, 0x9B, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEC, 0xC0, 0xF3, 0x44, 0x98, 0xAC, 0xE9, 0x24, 0x36, 0x01, 0x6D, 0x04, 0xD4, 0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x6D, 0xEE, @@ -64874,528 +65994,530 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0xA3, 0xF4, 0xB8, 0x9B, 0xC3, 0xF3, -0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, 0x04, 0x93, -0x24, 0x31, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xE3, -0xA6, 0xF6, 0x00, 0x4A, 0x30, 0x30, 0x30, 0x31, -0x01, 0xE2, 0x25, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x5C, 0x9A, 0x88, 0xF4, 0x0C, 0x48, -0x08, 0xF5, 0x0C, 0x49, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x04, 0x96, -0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0x72, 0x3C, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x60, 0x9B, 0x4C, 0xEB, -0x62, 0x33, 0x62, 0x33, 0x60, 0xC8, 0xE1, 0xF7, -0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, 0x60, 0xC9, -0x02, 0x48, 0x04, 0x4A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF4, 0x44, 0x9A, 0x04, 0x93, -0x02, 0x49, 0x6E, 0xEA, 0xD8, 0x2A, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, -0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9B, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, -0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x05, 0x67, 0x01, 0x74, -0x4C, 0xE8, 0x80, 0xF0, 0x17, 0x60, 0x04, 0x24, -0x04, 0x5C, 0xA0, 0xF0, 0x0E, 0x60, 0xA8, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x88, 0xF5, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6D, -0x30, 0xF0, 0x20, 0x6C, 0x88, 0xF5, 0x78, 0xDA, -0x30, 0xF0, 0x20, 0x6F, 0x30, 0xF0, 0x20, 0x6B, -0x4F, 0xF4, 0x0C, 0x4D, 0x4F, 0xF4, 0x04, 0x4C, -0x4F, 0xF4, 0x00, 0x4B, 0x2F, 0xF3, 0x1C, 0x4F, -0x00, 0x69, 0x40, 0x9D, 0xC4, 0xF2, 0x04, 0x41, -0x04, 0x30, 0x42, 0xDD, 0x40, 0xAC, 0x05, 0xD7, -0x42, 0xCC, 0x40, 0xA3, 0x42, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x01, 0xE2, -0x00, 0x6A, 0x04, 0x48, 0x04, 0xD2, 0x40, 0xA0, -0x24, 0x36, 0x44, 0xC0, 0x04, 0x92, 0xD9, 0xE2, -0x06, 0xD6, 0xD0, 0x36, 0x07, 0xD6, 0x30, 0xF0, -0x20, 0x6A, 0xC2, 0x67, 0x07, 0x92, 0xA6, 0xF6, -0x00, 0x4E, 0x1E, 0x65, 0x59, 0xE6, 0x88, 0xF4, -0x0C, 0x4E, 0x07, 0xD6, 0xC2, 0x67, 0x58, 0x67, -0xC9, 0xE2, 0x08, 0xF5, 0x0C, 0x4A, 0xC2, 0x67, -0x07, 0x92, 0x06, 0xD3, 0x60, 0xAA, 0x40, 0xF0, -0x60, 0xCA, 0x60, 0xAE, 0x02, 0x4A, 0x40, 0xF0, -0x60, 0xCE, 0x05, 0x93, 0x02, 0x4E, 0x6A, 0xEA, -0xF5, 0x61, 0x04, 0x96, 0x05, 0x92, 0x06, 0x93, -0x01, 0x4E, 0x10, 0x4A, 0x02, 0x76, 0x04, 0xD6, -0x01, 0x48, 0x05, 0xD2, 0xD0, 0x61, 0x01, 0x49, -0x02, 0x6E, 0x2E, 0xEE, 0x04, 0x4D, 0x02, 0x4C, -0x01, 0x4B, 0x20, 0x4F, 0xB6, 0x2E, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x00, 0x6B, -0x09, 0xF0, 0x79, 0xC2, 0x09, 0xF0, 0x7A, 0xC2, -0x09, 0xF0, 0x6D, 0xC2, 0x09, 0xF0, 0x6E, 0xC2, -0x09, 0xF0, 0x6F, 0xC2, 0xA8, 0xF5, 0x61, 0xC2, -0x09, 0xF0, 0x7B, 0xC2, 0x09, 0xF0, 0x7C, 0xC2, -0x09, 0xF0, 0x70, 0xC2, 0x09, 0xF0, 0x71, 0xC2, -0x09, 0xF0, 0x72, 0xC2, 0x88, 0xF5, 0x7C, 0x9A, -0x01, 0x6C, 0xA8, 0xF5, 0xC0, 0xC2, 0xA8, 0xF5, -0xC4, 0xCA, 0x88, 0xF5, 0x8C, 0xC2, 0x88, 0xF5, -0x8D, 0xC2, 0xA8, 0xF5, 0xC6, 0xCA, 0x88, 0xF5, -0x8E, 0xC2, 0x88, 0xF5, 0x8F, 0xC2, 0x88, 0xF5, -0x74, 0xDA, 0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xB0, 0x67, 0xAE, 0xF7, 0x18, 0x4C, 0x58, 0x6E, -0x80, 0x18, 0x9C, 0x4E, 0x62, 0xF1, 0x0A, 0x48, -0x30, 0xF0, 0x20, 0x6B, 0x08, 0x30, 0xA6, 0xF6, -0x00, 0x4B, 0x6D, 0xE0, 0x41, 0xDB, 0x05, 0x10, -0xFE, 0x4C, 0x4C, 0xEC, 0xB0, 0x67, 0x80, 0x18, -0x13, 0x18, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF3, 0x51, 0xA2, -0x18, 0x2A, 0x01, 0x6C, 0x00, 0x6D, 0x80, 0x18, -0x58, 0x18, 0x02, 0x6C, 0x00, 0x6D, 0x80, 0x18, -0x58, 0x18, 0x03, 0x6C, 0x00, 0x6D, 0x80, 0x18, -0x58, 0x18, 0x01, 0x6C, 0xA4, 0x67, 0x80, 0x18, -0x58, 0x18, 0x02, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0x58, 0x18, 0x03, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0x58, 0x18, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x8F, 0xF2, 0x40, 0xA2, -0xA0, 0xF3, 0x17, 0x22, 0x01, 0x69, 0x2B, 0xE9, -0xB1, 0x67, 0x63, 0xF0, 0x00, 0x6C, 0x80, 0x18, -0x72, 0x3C, 0xB1, 0x67, 0x68, 0xF1, 0x00, 0x6C, -0x07, 0xD2, 0x80, 0x18, 0x72, 0x3C, 0xB1, 0x67, -0xA1, 0xF1, 0x14, 0x6C, 0x30, 0xF0, 0x20, 0x68, -0x06, 0xD2, 0x80, 0x18, 0x72, 0x3C, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0xC8, 0x9B, 0x05, 0xD2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0xA1, 0xF1, -0x14, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF4, 0x2C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0xC3, 0xF0, 0x0C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0xA8, 0xF1, -0x10, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0xC8, 0xF1, 0x0C, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF0, 0x00, 0x6C, 0x3C, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, -0xA3, 0xF0, 0x14, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, 0xC3, 0xF0, -0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x28, 0xF1, 0x10, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x68, 0xF1, 0x00, 0x6C, 0x3C, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, -0xA8, 0xF1, 0x14, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, 0xC8, 0xF1, -0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF0, 0x10, 0x6C, 0x01, 0xF7, 0x00, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF0, 0x00, 0x6C, 0x08, 0xF0, 0x00, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF0, 0x0C, 0x6C, 0x01, 0xF7, 0x00, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF0, 0x1C, 0x6C, 0x08, 0xF0, 0x00, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF0, 0x10, 0x6C, 0x01, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, -0x0C, 0x6C, 0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, -0xA3, 0xF0, 0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, 0xC3, 0xF0, -0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF4, 0x34, 0x9A, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF0, 0x18, 0x6C, 0xB1, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, -0x14, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x10, 0x6C, -0x01, 0xF7, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x00, 0x6C, -0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x0C, 0x6C, -0x01, 0xF7, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x1C, 0x6C, -0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x10, 0x6C, -0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xC8, 0xF1, 0x0C, 0x6C, 0x01, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0xC5, 0x67, 0xA8, 0xF1, 0x10, 0x6C, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0xC5, 0x67, 0xC8, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x18, 0x6C, -0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xC8, 0xF1, 0x14, 0x6C, 0xB1, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0xFF, 0x6A, -0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF4, 0xB8, 0x9A, 0x05, 0xF0, 0x08, 0x6C, -0x80, 0x18, 0x72, 0x3C, 0xFF, 0xF7, 0x1F, 0x72, -0x12, 0x60, 0xFF, 0x70, 0xF0, 0x61, 0x0F, 0x10, -0xFF, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF4, 0xB8, 0x9A, 0x25, 0xF0, -0x14, 0x6C, 0x80, 0x18, 0x72, 0x3C, 0xFF, 0xF7, -0x1F, 0x72, 0x03, 0x61, 0x14, 0x10, 0x00, 0x68, -0xEF, 0x17, 0xFF, 0x70, 0xED, 0x61, 0x0F, 0x10, -0xFF, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF4, 0xB8, 0x9A, 0x08, 0xF5, -0x08, 0x6C, 0x80, 0x18, 0x72, 0x3C, 0xFF, 0xF7, -0x1F, 0x72, 0x03, 0x61, 0x14, 0x10, 0x00, 0x68, -0xEF, 0x17, 0xFF, 0x70, 0xED, 0x61, 0x0F, 0x10, -0xFF, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF4, 0xB8, 0x9A, 0x28, 0xF5, -0x14, 0x6C, 0x80, 0x18, 0x72, 0x3C, 0xFF, 0xF7, -0x1F, 0x72, 0x03, 0x61, 0x04, 0x10, 0x00, 0x68, -0xEF, 0x17, 0xFF, 0x70, 0xED, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xC3, 0xF4, -0x14, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, -0xA3, 0xF0, 0x18, 0x69, 0x91, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0x14, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, -0x91, 0x67, 0x02, 0x6E, 0x40, 0xEA, 0x00, 0x68, -0x05, 0xF0, 0x08, 0x6C, 0xFF, 0x6D, 0x80, 0x18, -0x72, 0x3C, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, -0x20, 0x69, 0x00, 0x6A, 0x8F, 0xF2, 0x02, 0x49, -0x04, 0xD2, 0x1E, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x14, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x69, 0x01, 0x48, 0xA0, 0x9B, 0x4C, 0xE8, -0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF0, 0x18, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0xF3, 0x44, 0x99, -0xA0, 0x9B, 0xA3, 0xF0, 0x18, 0x6C, 0x02, 0x6E, -0x40, 0xEA, 0x64, 0x70, 0xD5, 0x61, 0xDB, 0x17, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF0, 0x14, 0x6C, 0x04, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xA9, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF0, 0x14, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, -0xA3, 0xF0, 0x10, 0x6C, 0x02, 0x49, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x14, 0x6C, -0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x04, 0x92, -0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xD8, 0x61, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x14, 0x6C, -0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xA0, 0x9B, 0xC3, 0xF0, 0x14, 0x69, -0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x02, 0x6E, -0x40, 0xEA, 0x00, 0x68, 0x25, 0xF0, 0x14, 0x6C, -0xFF, 0x6D, 0x80, 0x18, 0x72, 0x3C, 0x86, 0x72, -0x07, 0x61, 0x30, 0xF0, 0x20, 0x69, 0x00, 0x6A, -0xAF, 0xF2, 0x00, 0x49, 0x04, 0xD2, 0x1E, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x48, -0xA0, 0x9B, 0x4C, 0xE8, 0xC0, 0xF3, 0x44, 0x99, -0xC3, 0xF0, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, -0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, 0xC3, 0xF0, -0x14, 0x6C, 0x02, 0x6E, 0x40, 0xEA, 0x64, 0x70, -0xD5, 0x61, 0xDB, 0x17, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x10, 0x6C, -0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xA9, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x10, 0x6C, -0xE1, 0xF7, 0x18, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0xBC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x04, 0x96, 0xC3, 0xF0, 0x0C, 0x6C, -0x02, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF0, 0x10, 0x6C, 0x04, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x0F, 0x72, -0x04, 0xD2, 0xD8, 0x61, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF0, 0x10, 0x6C, 0x04, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF4, -0x34, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, -0x18, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x14, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF0, 0x14, 0x6C, 0x01, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF0, 0x10, 0x6C, 0x01, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, -0x18, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x18, 0x6C, -0xB1, 0x67, 0x02, 0x6E, 0x40, 0xEA, 0x00, 0x68, -0x08, 0xF5, 0x08, 0x6C, 0xFF, 0x6D, 0x80, 0x18, -0x72, 0x3C, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, -0x20, 0x69, 0x00, 0x6B, 0xAF, 0xF2, 0x1E, 0x49, -0x04, 0xD3, 0x1E, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x14, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, -0x20, 0x69, 0x01, 0x48, 0xA0, 0x9B, 0x4C, 0xE8, -0xC0, 0xF3, 0x44, 0x99, 0xA8, 0xF1, 0x18, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0xF3, 0x44, 0x99, -0xA0, 0x9B, 0xA8, 0xF1, 0x18, 0x6C, 0x02, 0x6E, -0x40, 0xEA, 0x64, 0x70, 0xD5, 0x61, 0xDB, 0x17, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0xA8, 0xF1, 0x14, 0x6C, 0x04, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xA9, 0xC0, 0xF3, 0x44, 0x98, -0xA8, 0xF1, 0x14, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, -0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, -0xA8, 0xF1, 0x10, 0x6C, 0x02, 0x49, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x14, 0x6C, -0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x04, 0x92, -0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xD8, 0x61, -0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x14, 0x6C, -0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xA0, 0x9B, 0xC8, 0xF1, 0x14, 0x69, -0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x02, 0x6E, -0x40, 0xEA, 0x00, 0x68, 0x28, 0xF5, 0x14, 0x6C, -0xFF, 0x6D, 0x80, 0x18, 0x72, 0x3C, 0x86, 0x72, -0x07, 0x61, 0x30, 0xF0, 0x20, 0x69, 0x00, 0x6A, -0xCF, 0xF2, 0x1C, 0x49, 0x04, 0xD2, 0x1E, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x48, -0xA0, 0x9B, 0x4C, 0xE8, 0xC0, 0xF3, 0x44, 0x99, -0xC8, 0xF1, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF4, 0x14, 0x4B, -0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, 0xC8, 0xF1, -0x14, 0x6C, 0x02, 0x6E, 0x40, 0xEA, 0x64, 0x70, -0xD5, 0x61, 0xDB, 0x17, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, -0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xA9, -0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, -0xE1, 0xF7, 0x18, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0xBC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x04, 0x96, 0xC8, 0xF1, 0x0C, 0x6C, -0x02, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC8, 0xF1, 0x10, 0x6C, 0x04, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x0F, 0x72, -0x04, 0xD2, 0xD8, 0x61, 0xC0, 0xF3, 0x44, 0x98, -0xC8, 0xF1, 0x10, 0x6C, 0x04, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF4, -0x34, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, -0x18, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0xC8, 0xF1, -0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xA8, 0xF1, 0x14, 0x6C, 0x01, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC8, 0xF1, 0x10, 0x6C, 0x01, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x28, 0xF1, -0x10, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x07, 0x96, 0x01, 0x6D, 0x63, 0xF0, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x06, 0x96, 0x01, 0x6D, 0x68, 0xF1, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF4, 0x2C, 0x9A, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x0C, 0x6C, -0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x05, 0x96, 0x01, 0x6D, 0xA1, 0xF1, -0x14, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x80, 0x18, -0x9C, 0x16, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xE3, 0xF7, 0x18, 0x69, -0xB1, 0x67, 0x05, 0xF0, 0x10, 0x6C, 0x80, 0x18, -0x72, 0x3C, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6B, -0xA6, 0xF6, 0x00, 0x48, 0x6C, 0xEA, 0xB1, 0x67, -0x25, 0xF0, 0x1C, 0x6C, 0x48, 0xF4, 0x5A, 0xC8, -0x80, 0x18, 0x72, 0x3C, 0xFF, 0x6B, 0x6C, 0xEA, -0xB1, 0x67, 0x08, 0xF5, 0x10, 0x6C, 0x48, 0xF4, -0x5C, 0xC8, 0x80, 0x18, 0x72, 0x3C, 0xFF, 0x6B, -0x6C, 0xEA, 0xB1, 0x67, 0x28, 0xF5, 0x1C, 0x6C, -0x48, 0xF4, 0x5E, 0xC8, 0x80, 0x18, 0x72, 0x3C, -0xFF, 0x6B, 0x6C, 0xEA, 0x68, 0xF4, 0x40, 0xC8, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x82, 0xF2, 0x70, 0xA2, 0x00, 0xF1, 0x0B, 0x23, -0x00, 0x68, 0x82, 0xF2, 0x10, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF4, 0xB8, 0x9A, 0x05, 0xF0, -0x08, 0x6C, 0x80, 0x18, 0x72, 0x3C, 0xFF, 0xF7, -0x1F, 0x72, 0x07, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE8, 0xF3, 0x00, 0xC2, -0xF6, 0x10, 0x01, 0x69, 0x2B, 0xE9, 0x01, 0x6B, -0xB1, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF0, -0x00, 0x6C, 0x8F, 0xF2, 0x60, 0xC2, 0x80, 0x18, -0x72, 0x3C, 0xB1, 0x67, 0x68, 0xF1, 0x00, 0x6C, -0x07, 0xD2, 0x80, 0x18, 0x72, 0x3C, 0xB1, 0x67, -0xA1, 0xF1, 0x14, 0x6C, 0x30, 0xF0, 0x20, 0x68, -0x06, 0xD2, 0x80, 0x18, 0x72, 0x3C, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0xC8, 0x9B, 0x05, 0xD2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0xA1, 0xF1, -0x14, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF1, 0xB8, 0x9B, -0x23, 0xF0, 0x10, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF4, 0xB0, 0x9B, 0x63, 0xF0, 0x00, 0x6C, -0x3C, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, -0x8F, 0xF2, 0x02, 0x48, 0x00, 0x69, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF4, -0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xD1, 0x67, -0xA3, 0xF0, 0x10, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF4, 0xA0, 0x9A, 0x05, 0xF0, -0x10, 0x6C, 0x01, 0x49, 0x80, 0x18, 0x72, 0x3C, -0x0F, 0x71, 0x40, 0xC8, 0x02, 0x48, 0xE7, 0x61, -0x30, 0xF0, 0x20, 0x68, 0x00, 0x6A, 0xAF, 0xF2, -0x00, 0x48, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x69, 0xC3, 0xF4, 0xBC, 0x9B, -0xC0, 0xF3, 0x44, 0x99, 0x04, 0x96, 0xC3, 0xF0, -0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF4, 0xA0, 0x9A, 0x25, 0xF0, 0x1C, 0x6C, -0x80, 0x18, 0x72, 0x3C, 0x40, 0xC8, 0x04, 0x92, -0x02, 0x48, 0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, -0xE5, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x99, 0xC3, 0xF1, 0xB8, 0x9B, 0x28, 0xF1, -0x10, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF4, -0xB0, 0x9B, 0x68, 0xF1, 0x00, 0x6C, 0x3C, 0x6E, -0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0xAF, 0xF2, -0x1E, 0x48, 0x00, 0x69, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF4, 0xBC, 0x9B, -0xC0, 0xF3, 0x44, 0x9A, 0xD1, 0x67, 0xA8, 0xF1, -0x10, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF4, 0xA0, 0x9A, 0x08, 0xF5, 0x10, 0x6C, -0x01, 0x49, 0x80, 0x18, 0x72, 0x3C, 0x0F, 0x71, -0x40, 0xC8, 0x02, 0x48, 0xE7, 0x61, 0x30, 0xF0, -0x20, 0x69, 0x00, 0x6A, 0xCF, 0xF2, 0x1C, 0x49, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0xC3, 0xF4, 0xBC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x04, 0x96, 0xC8, 0xF1, 0x0C, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF4, -0xA0, 0x9A, 0x28, 0xF5, 0x1C, 0x6C, 0x80, 0x18, -0x72, 0x3C, 0x40, 0xC9, 0x04, 0x92, 0x02, 0x49, -0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xE5, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x38, 0x9A, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x28, 0xF1, 0x10, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x01, 0x69, 0xC0, 0xF3, -0x44, 0x98, 0x07, 0x96, 0x2B, 0xE9, 0x63, 0xF0, -0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x06, 0x96, 0x68, 0xF1, 0x00, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x05, 0x96, 0xA1, 0xF1, 0x14, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x80, 0x18, 0xAD, 0x1A, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x69, 0x00, 0x6A, 0x8C, 0xE9, 0x06, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, -0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0xAE, 0xF7, -0x18, 0x48, 0x00, 0x6B, 0x90, 0x67, 0xB1, 0x67, -0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, -0xE0, 0x9A, 0x00, 0x6B, 0x90, 0x67, 0xB1, 0x67, -0x08, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, -0xE0, 0x9B, 0x90, 0x67, 0xB1, 0x67, 0x08, 0x6E, -0x80, 0x18, 0x9C, 0x4E, 0x0B, 0x22, 0x06, 0x92, -0x01, 0x4A, 0x06, 0xD2, 0x06, 0x93, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xEB, 0x2E, 0xF5, 0x10, 0x73, -0x06, 0xD3, 0xCE, 0x61, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, -0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x30, 0xF0, -0x20, 0x6A, 0x82, 0xF6, 0x14, 0x4A, 0x64, 0x67, -0x07, 0xD2, 0x62, 0xF1, 0x02, 0x4B, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x68, 0x33, -0x6D, 0xE2, 0x04, 0x4B, 0x0A, 0xD3, 0x64, 0x67, -0xA1, 0xF0, 0x15, 0x4B, 0x6C, 0x33, 0x69, 0xE2, -0x04, 0x4A, 0x00, 0x6B, 0x0F, 0xD4, 0x11, 0xD5, -0x0C, 0xD2, 0x08, 0xD3, 0x08, 0x95, 0x11, 0x92, -0xFF, 0x69, 0xAC, 0xE9, 0x18, 0x2A, 0x30, 0xF0, -0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, 0x01, 0x6A, -0x90, 0x67, 0xB1, 0x67, 0xDF, 0x6E, 0x10, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x0C, 0x93, -0x90, 0x67, 0xB1, 0x67, 0x40, 0x9B, 0x58, 0x6E, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0xF4, 0x9A, 0x80, 0x18, 0xE1, 0x4E, 0x08, 0x95, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x50, 0x9A, -0xA4, 0x35, 0x4D, 0xED, 0x00, 0x6A, 0x0E, 0xD5, -0x06, 0xD2, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x0E, 0x96, 0x01, 0x69, 0x2B, 0xE9, -0x03, 0xF3, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, -0xB1, 0x67, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x18, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x1C, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0xC3, 0xF3, 0x0C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x06, 0x95, 0xFF, 0x6A, 0xAC, 0xEA, 0x08, 0x2A, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, -0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, 0x07, 0x10, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, -0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, -0xC3, 0xF3, 0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x06, 0x93, 0xE3, 0xF4, -0x44, 0x9A, 0x0F, 0x95, 0x46, 0xEB, 0x08, 0x93, -0xA4, 0x34, 0x06, 0x95, 0x71, 0xE4, 0x84, 0x34, -0x91, 0xE5, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0x90, 0x31, 0x90, 0x34, 0x91, 0xE3, -0xA3, 0x42, 0x25, 0xE3, 0x64, 0x67, 0x0B, 0xD5, -0x08, 0xF5, 0x0C, 0x4B, 0xA1, 0x42, 0x23, 0x4A, -0x88, 0xF4, 0x0C, 0x49, 0x09, 0xD3, 0x0D, 0xD5, -0x10, 0xD2, 0xC0, 0xA9, 0x0B, 0x93, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x36, -0xC4, 0x36, 0x01, 0x6D, 0xD9, 0xE3, 0xC3, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x09, 0x95, -0x0D, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0xAD, -0x01, 0x6D, 0xAB, 0xED, 0xC0, 0x36, 0xC4, 0x36, -0xD9, 0xE3, 0xC3, 0xF3, 0x18, 0x6C, 0x40, 0xEA, -0x09, 0x92, 0x0B, 0x95, 0x0D, 0x93, 0x02, 0x4A, -0x09, 0xD2, 0x10, 0x92, 0x04, 0x4D, 0x04, 0x4B, -0x4A, 0xED, 0x02, 0x49, 0x0B, 0xD5, 0x0D, 0xD3, -0xD8, 0x61, 0x06, 0x93, 0xFF, 0x6A, 0x6C, 0xEA, -0x08, 0x2A, 0x0A, 0x95, 0x07, 0x93, 0xC0, 0xF3, -0x44, 0x98, 0xC0, 0xA5, 0x80, 0xAB, 0x01, 0x6D, -0x08, 0x10, 0x07, 0x93, 0x0A, 0x95, 0xC0, 0xF3, -0x44, 0x98, 0x80, 0xAB, 0xC1, 0xA5, 0x00, 0xF4, -0x00, 0x6D, 0xCF, 0xEE, 0x40, 0xEA, 0x06, 0x95, -0x01, 0x4D, 0x02, 0x75, 0x06, 0xD5, 0x5F, 0xF7, -0x0C, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x9A, 0xC4, 0xF3, 0xB0, 0x9B, 0xC3, 0xF3, +0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, 0x04, 0x94, +0x24, 0x31, 0x30, 0xF0, 0x20, 0x6A, 0x25, 0xE4, +0x20, 0xF4, 0x6D, 0x41, 0x20, 0xF4, 0x15, 0x49, +0x08, 0xF2, 0x10, 0x4A, 0x30, 0x31, 0x70, 0x33, +0x6D, 0xE2, 0x29, 0xE2, 0x04, 0x4A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x34, 0x9A, +0x04, 0x4B, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, +0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, +0x80, 0x18, 0xE1, 0x39, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF3, 0x78, 0x9B, 0x05, 0x94, 0x04, 0x49, +0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x60, 0xCC, +0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, +0x02, 0x4C, 0x05, 0xD4, 0x60, 0xCA, 0x02, 0x4A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0x5C, 0x9A, 0x2E, 0xEA, 0xD7, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0xF3, -0x0C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x08, 0x92, -0x07, 0x93, 0x0A, 0x95, 0x01, 0x4A, 0x08, 0xD2, -0x02, 0x4B, 0x0C, 0x92, 0x07, 0xD3, 0x08, 0x93, -0x02, 0x4D, 0x04, 0x4A, 0x02, 0x73, 0x0A, 0xD5, -0x0C, 0xD2, 0x1F, 0xF7, 0x03, 0x61, 0x15, 0x97, -0x14, 0x91, 0x13, 0x90, 0x0B, 0x63, 0x00, 0xEF, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x05, 0x67, 0x01, 0x74, +0x4C, 0xE8, 0x80, 0xF0, 0x1D, 0x60, 0x04, 0x24, +0x04, 0x5C, 0xA0, 0xF0, 0x14, 0x60, 0xAE, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC8, 0xF3, 0x7C, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0x30, 0xF0, 0x21, 0x6D, 0xE8, 0xF3, 0x60, 0xDA, +0x30, 0xF0, 0x21, 0x6B, 0x30, 0xF0, 0x21, 0x6A, +0x10, 0xF6, 0x04, 0x4C, 0xF0, 0xF5, 0x1C, 0x4B, +0xF0, 0xF5, 0x18, 0x4A, 0xF0, 0xF4, 0x14, 0x4D, +0x00, 0x69, 0xC0, 0x9C, 0xE4, 0xF1, 0x08, 0x41, +0x04, 0x30, 0xC2, 0xDC, 0xC0, 0xAB, 0x05, 0xD5, +0xE5, 0x67, 0xC2, 0xCB, 0xC0, 0xA2, 0xC2, 0xC2, +0x30, 0xF0, 0x20, 0x6E, 0x08, 0xF2, 0x10, 0x4E, +0x01, 0xE6, 0x00, 0x6E, 0x04, 0x48, 0x04, 0xD6, +0xA0, 0xA0, 0x24, 0x36, 0xA4, 0xC0, 0x04, 0x95, +0xD9, 0xE5, 0xA6, 0x67, 0x20, 0xF4, 0x0D, 0x4D, +0xB0, 0x35, 0x06, 0xD5, 0x09, 0xD6, 0x30, 0xF0, +0x20, 0x6E, 0xA6, 0x67, 0x06, 0x96, 0x08, 0xF2, +0x10, 0x4D, 0x1D, 0x65, 0xD5, 0xE5, 0x09, 0x96, +0x04, 0x4D, 0x08, 0xD5, 0x20, 0xF4, 0x15, 0x4E, +0xD0, 0x36, 0xB8, 0x67, 0xD5, 0xE5, 0xC5, 0x67, +0x08, 0x95, 0x04, 0x4E, 0x06, 0xD2, 0x40, 0xAD, +0x40, 0xF0, 0x40, 0xCD, 0x40, 0xAE, 0x02, 0x4D, +0x40, 0xF0, 0x40, 0xCE, 0x05, 0x92, 0x02, 0x4E, +0x4A, 0xED, 0xF5, 0x61, 0x04, 0x95, 0x05, 0x96, +0x06, 0x92, 0x01, 0x4D, 0x10, 0x4E, 0x02, 0x75, +0x04, 0xD5, 0x01, 0x48, 0x05, 0xD6, 0xCC, 0x61, +0x01, 0x49, 0x02, 0x6E, 0xA7, 0x67, 0x2E, 0xEE, +0x04, 0x4C, 0x02, 0x4B, 0x01, 0x4A, 0x20, 0x4D, +0xB0, 0x2E, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x00, 0x6B, 0x68, 0xF6, 0x61, 0xC2, +0x68, 0xF6, 0x62, 0xC2, 0x48, 0xF6, 0x75, 0xC2, +0x48, 0xF6, 0x76, 0xC2, 0x48, 0xF6, 0x77, 0xC2, +0xE8, 0xF3, 0x69, 0xC2, 0x68, 0xF6, 0x63, 0xC2, +0x68, 0xF6, 0x64, 0xC2, 0x48, 0xF6, 0x78, 0xC2, +0x48, 0xF6, 0x79, 0xC2, 0x48, 0xF6, 0x7A, 0xC2, +0xE8, 0xF3, 0x64, 0x9A, 0x01, 0x6C, 0xE8, 0xF3, +0xC8, 0xC2, 0xE8, 0xF3, 0xCC, 0xCA, 0xC8, 0xF3, +0x94, 0xC2, 0xC8, 0xF3, 0x95, 0xC2, 0xE8, 0xF3, +0xCE, 0xCA, 0xC8, 0xF3, 0x96, 0xC2, 0xC8, 0xF3, +0x97, 0xC2, 0xC8, 0xF3, 0x7C, 0xDA, 0x1B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0xEC, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, 0x70, 0xF1, +0x08, 0x4C, 0x58, 0x6E, 0x80, 0x18, 0xAB, 0x53, +0xE2, 0xF0, 0x1C, 0x48, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0x30, 0x08, 0xF2, 0x10, 0x4B, 0x6D, 0xE0, +0x41, 0xDB, 0x05, 0x10, 0xFE, 0x4C, 0x4C, 0xEC, +0xB0, 0x67, 0x80, 0x18, 0x99, 0x15, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x21, 0x6A, +0xD0, 0xF4, 0x49, 0xA2, 0x18, 0x2A, 0x01, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0xDE, 0x15, 0x02, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0xDE, 0x15, 0x03, 0x6C, +0x00, 0x6D, 0x80, 0x18, 0xDE, 0x15, 0x01, 0x6C, +0xA4, 0x67, 0x80, 0x18, 0xDE, 0x15, 0x02, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0xDE, 0x15, 0x03, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0xDE, 0x15, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x21, 0x6A, +0x30, 0xF4, 0x58, 0xA2, 0xA0, 0xF3, 0x17, 0x22, +0x01, 0x69, 0x2B, 0xE9, 0xB1, 0x67, 0x63, 0xF0, +0x00, 0x6C, 0x80, 0x18, 0xE1, 0x39, 0xB1, 0x67, +0x68, 0xF1, 0x00, 0x6C, 0x07, 0xD2, 0x80, 0x18, +0xE1, 0x39, 0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, +0x30, 0xF0, 0x20, 0x68, 0x06, 0xD2, 0x80, 0x18, +0xE1, 0x39, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0xC0, 0x9B, 0x05, 0xD2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, 0x24, 0x9A, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0xC3, 0xF0, 0x0C, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0xA8, 0xF1, 0x10, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xC8, 0xF1, 0x0C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x2C, 0x9A, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF3, 0x08, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x00, 0x6C, +0x3C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xC5, 0x67, 0xA3, 0xF0, 0x14, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xC5, 0x67, 0xC3, 0xF0, 0x10, 0x6C, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x28, 0xF1, +0x10, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF3, 0x08, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x00, 0x6C, +0x3C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xC5, 0x67, 0xA8, 0xF1, 0x14, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xC5, 0x67, 0xC8, 0xF1, 0x10, 0x6C, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x10, 0x6C, +0x01, 0xF7, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x00, 0x6C, +0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x0C, 0x6C, +0x01, 0xF7, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x1C, 0x6C, +0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x10, 0x6C, +0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF0, 0x0C, 0x6C, 0x01, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xC5, 0x67, 0xA3, 0xF0, 0x10, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xC5, 0x67, 0xC3, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, 0x2C, 0x9A, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x18, 0x6C, +0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF0, 0x14, 0x6C, 0xB1, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xA8, 0xF1, 0x10, 0x6C, 0x01, 0xF7, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC8, 0xF1, 0x00, 0x6C, 0x08, 0xF0, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC8, 0xF1, 0x0C, 0x6C, 0x01, 0xF7, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC8, 0xF1, 0x1C, 0x6C, 0x08, 0xF0, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xA8, 0xF1, 0x10, 0x6C, 0x01, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, +0x0C, 0x6C, 0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, +0xA8, 0xF1, 0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0xC5, 0x67, 0xC8, 0xF1, +0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xA8, 0xF1, 0x18, 0x6C, 0xB1, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, +0x14, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x00, 0x68, 0xFF, 0x6A, 0x01, 0x48, 0x4C, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, 0xB0, 0x9A, +0x05, 0xF0, 0x08, 0x6C, 0x80, 0x18, 0xE1, 0x39, +0xFF, 0xF7, 0x1F, 0x72, 0x12, 0x60, 0xFF, 0x70, +0xF0, 0x61, 0x0F, 0x10, 0xFF, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, +0xB0, 0x9A, 0x25, 0xF0, 0x14, 0x6C, 0x80, 0x18, +0xE1, 0x39, 0xFF, 0xF7, 0x1F, 0x72, 0x03, 0x61, +0x14, 0x10, 0x00, 0x68, 0xEF, 0x17, 0xFF, 0x70, +0xED, 0x61, 0x0F, 0x10, 0xFF, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, +0xB0, 0x9A, 0x08, 0xF5, 0x08, 0x6C, 0x80, 0x18, +0xE1, 0x39, 0xFF, 0xF7, 0x1F, 0x72, 0x03, 0x61, +0x14, 0x10, 0x00, 0x68, 0xEF, 0x17, 0xFF, 0x70, +0xED, 0x61, 0x0F, 0x10, 0xFF, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, +0xB0, 0x9A, 0x28, 0xF5, 0x14, 0x6C, 0x80, 0x18, +0xE1, 0x39, 0xFF, 0xF7, 0x1F, 0x72, 0x03, 0x61, +0x04, 0x10, 0x00, 0x68, 0xEF, 0x17, 0xFF, 0x70, +0xED, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0xE4, 0xF3, 0x0C, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0xA0, 0x9B, 0xA3, 0xF0, 0x18, 0x69, +0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF3, 0x0C, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x02, 0x6E, +0x40, 0xEA, 0x00, 0x68, 0x05, 0xF0, 0x08, 0x6C, +0xFF, 0x6D, 0x80, 0x18, 0xE1, 0x39, 0x86, 0x72, +0x07, 0x61, 0x30, 0xF0, 0x21, 0x69, 0x00, 0x6A, +0x30, 0xF4, 0x1A, 0x49, 0x04, 0xD2, 0x1E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0x0C, 0x4B, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x48, +0xA0, 0x9B, 0x4C, 0xE8, 0xC0, 0xF3, 0x44, 0x99, +0xA3, 0xF0, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0x0C, 0x4B, +0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, 0xA3, 0xF0, +0x18, 0x6C, 0x02, 0x6E, 0x40, 0xEA, 0x64, 0x70, +0xD5, 0x61, 0xDB, 0x17, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x14, 0x6C, +0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xA9, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x14, 0x6C, +0xE1, 0xF7, 0x18, 0x6D, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x04, 0x96, 0xA3, 0xF0, 0x10, 0x6C, +0x02, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xA3, 0xF0, 0x14, 0x6C, 0x04, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x0F, 0x72, +0x04, 0xD2, 0xD8, 0x61, 0xC0, 0xF3, 0x44, 0x98, +0xA3, 0xF0, 0x14, 0x6C, 0x04, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0xC3, 0xF0, 0x14, 0x69, 0x91, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x91, 0x67, 0x02, 0x6E, 0x40, 0xEA, 0x00, 0x68, +0x25, 0xF0, 0x14, 0x6C, 0xFF, 0x6D, 0x80, 0x18, +0xE1, 0x39, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, +0x21, 0x69, 0x00, 0x6A, 0x50, 0xF4, 0x18, 0x49, +0x04, 0xD2, 0x1E, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF3, 0x0C, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x69, 0x01, 0x48, 0xA0, 0x9B, 0x4C, 0xE8, +0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF0, 0x14, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF3, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x99, +0xA0, 0x9B, 0xC3, 0xF0, 0x14, 0x6C, 0x02, 0x6E, +0x40, 0xEA, 0x64, 0x70, 0xD5, 0x61, 0xDB, 0x17, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF0, 0x10, 0x6C, 0x04, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xA9, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF0, 0x10, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, +0xC3, 0xF0, 0x0C, 0x6C, 0x02, 0x49, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x10, 0x6C, +0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x04, 0x92, +0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xD8, 0x61, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x10, 0x6C, +0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF3, 0x2C, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0xA3, 0xF0, 0x18, 0x6C, 0xB1, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF0, 0x14, 0x6C, 0xB1, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, +0x14, 0x6C, 0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x10, 0x6C, +0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xA8, 0xF1, 0x18, 0x6C, 0xB1, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xA8, 0xF1, 0x18, 0x6C, 0xB1, 0x67, 0x02, 0x6E, +0x40, 0xEA, 0x00, 0x68, 0x08, 0xF5, 0x08, 0x6C, +0xFF, 0x6D, 0x80, 0x18, 0xE1, 0x39, 0x86, 0x72, +0x07, 0x61, 0x30, 0xF0, 0x21, 0x69, 0x00, 0x6B, +0x70, 0xF4, 0x16, 0x49, 0x04, 0xD3, 0x1E, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0x0C, 0x4B, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x48, +0xA0, 0x9B, 0x4C, 0xE8, 0xC0, 0xF3, 0x44, 0x99, +0xA8, 0xF1, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0x0C, 0x4B, +0xC0, 0xF3, 0x44, 0x99, 0xA0, 0x9B, 0xA8, 0xF1, +0x18, 0x6C, 0x02, 0x6E, 0x40, 0xEA, 0x64, 0x70, +0xD5, 0x61, 0xDB, 0x17, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x14, 0x6C, +0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xA9, +0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x14, 0x6C, +0xE1, 0xF7, 0x18, 0x6D, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x04, 0x96, 0xA8, 0xF1, 0x10, 0x6C, +0x02, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xA8, 0xF1, 0x14, 0x6C, 0x04, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0x04, 0x92, 0x01, 0x4A, 0x0F, 0x72, +0x04, 0xD2, 0xD8, 0x61, 0xC0, 0xF3, 0x44, 0x98, +0xA8, 0xF1, 0x14, 0x6C, 0x04, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0xC8, 0xF1, 0x14, 0x69, 0x91, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x91, 0x67, 0x02, 0x6E, 0x40, 0xEA, 0x00, 0x68, +0x28, 0xF5, 0x14, 0x6C, 0xFF, 0x6D, 0x80, 0x18, +0xE1, 0x39, 0x86, 0x72, 0x07, 0x61, 0x30, 0xF0, +0x21, 0x69, 0x00, 0x6A, 0x90, 0xF4, 0x14, 0x49, +0x04, 0xD2, 0x1E, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF3, 0x0C, 0x4B, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x69, 0x01, 0x48, 0xA0, 0x9B, 0x4C, 0xE8, +0xC0, 0xF3, 0x44, 0x99, 0xC8, 0xF1, 0x14, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF3, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x99, +0xA0, 0x9B, 0xC8, 0xF1, 0x14, 0x6C, 0x02, 0x6E, +0x40, 0xEA, 0x64, 0x70, 0xD5, 0x61, 0xDB, 0x17, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0xC8, 0xF1, 0x10, 0x6C, 0x04, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xA9, 0xC0, 0xF3, 0x44, 0x98, +0xC8, 0xF1, 0x10, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, +0xC8, 0xF1, 0x0C, 0x6C, 0x02, 0x49, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, +0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x04, 0x92, +0x01, 0x4A, 0x0F, 0x72, 0x04, 0xD2, 0xD8, 0x61, +0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, +0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF3, 0x2C, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0xA8, 0xF1, 0x18, 0x6C, 0xB1, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0xC8, 0xF1, 0x14, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, +0x14, 0x6C, 0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC8, 0xF1, 0x10, 0x6C, +0x01, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0x2C, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x28, 0xF1, 0x10, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x07, 0x96, +0x01, 0x6D, 0x63, 0xF0, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x06, 0x96, +0x01, 0x6D, 0x68, 0xF1, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, +0x24, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF0, 0x0C, 0x6C, +0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xA8, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC8, 0xF1, 0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x05, 0x96, +0x01, 0x6D, 0xA1, 0xF1, 0x14, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x80, 0x18, 0x21, 0x14, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xE3, 0xF7, 0x18, 0x69, 0xB1, 0x67, 0x05, 0xF0, +0x10, 0x6C, 0x80, 0x18, 0xE1, 0x39, 0x30, 0xF0, +0x20, 0x68, 0xFF, 0x6B, 0x08, 0xF2, 0x10, 0x48, +0x6C, 0xEA, 0xB1, 0x67, 0x25, 0xF0, 0x1C, 0x6C, +0xA8, 0xF2, 0x42, 0xC8, 0x80, 0x18, 0xE1, 0x39, +0xFF, 0x6B, 0x6C, 0xEA, 0xB1, 0x67, 0x08, 0xF5, +0x10, 0x6C, 0xA8, 0xF2, 0x44, 0xC8, 0x80, 0x18, +0xE1, 0x39, 0xFF, 0x6B, 0x6C, 0xEA, 0xB1, 0x67, +0x28, 0xF5, 0x1C, 0x6C, 0xA8, 0xF2, 0x46, 0xC8, +0x80, 0x18, 0xE1, 0x39, 0xFF, 0x6B, 0x6C, 0xEA, +0xA8, 0xF2, 0x48, 0xC8, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF0, 0x68, 0xA2, +0x00, 0xF1, 0x0B, 0x23, 0x00, 0x68, 0x82, 0xF0, +0x08, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, +0xB0, 0x9A, 0x05, 0xF0, 0x08, 0x6C, 0x80, 0x18, +0xE1, 0x39, 0xFF, 0xF7, 0x1F, 0x72, 0x07, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x28, 0xF2, 0x08, 0xC2, 0xF6, 0x10, 0x01, 0x69, +0x2B, 0xE9, 0x01, 0x6B, 0xB1, 0x67, 0x30, 0xF0, +0x21, 0x6A, 0x63, 0xF0, 0x00, 0x6C, 0x30, 0xF4, +0x78, 0xC2, 0x80, 0x18, 0xE1, 0x39, 0xB1, 0x67, +0x68, 0xF1, 0x00, 0x6C, 0x07, 0xD2, 0x80, 0x18, +0xE1, 0x39, 0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, +0x30, 0xF0, 0x20, 0x68, 0x06, 0xD2, 0x80, 0x18, +0xE1, 0x39, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0xC0, 0x9B, 0x05, 0xD2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0xA1, 0xF1, 0x14, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0xF1, 0xAC, 0x9B, 0x23, 0xF0, 0x10, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xE4, 0xF3, 0xA8, 0x9B, +0x63, 0xF0, 0x00, 0x6C, 0x3C, 0x6E, 0x30, 0xF0, +0x21, 0x68, 0x40, 0xEA, 0x30, 0xF4, 0x1A, 0x48, +0x00, 0x69, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, +0x44, 0x9A, 0xD1, 0x67, 0xA3, 0xF0, 0x10, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, +0xB8, 0x9A, 0x05, 0xF0, 0x10, 0x6C, 0x01, 0x49, +0x80, 0x18, 0xE1, 0x39, 0x0F, 0x71, 0x40, 0xC8, +0x02, 0x48, 0xE7, 0x61, 0x30, 0xF0, 0x21, 0x68, +0x00, 0x6A, 0x50, 0xF4, 0x18, 0x48, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x69, +0xE4, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0x04, 0x96, 0xC3, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, 0xB8, 0x9A, +0x25, 0xF0, 0x1C, 0x6C, 0x80, 0x18, 0xE1, 0x39, +0x40, 0xC8, 0x04, 0x92, 0x02, 0x48, 0x01, 0x4A, +0x0F, 0x72, 0x04, 0xD2, 0xE5, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, 0x04, 0xF1, +0xAC, 0x9B, 0x28, 0xF1, 0x10, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x99, 0xE4, 0xF3, 0xA8, 0x9B, 0x68, 0xF1, +0x00, 0x6C, 0x3C, 0x6E, 0x30, 0xF0, 0x21, 0x68, +0x40, 0xEA, 0x70, 0xF4, 0x16, 0x48, 0x00, 0x69, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF3, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0xD1, 0x67, 0xA8, 0xF1, 0x10, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, 0xB8, 0x9A, +0x08, 0xF5, 0x10, 0x6C, 0x01, 0x49, 0x80, 0x18, +0xE1, 0x39, 0x0F, 0x71, 0x40, 0xC8, 0x02, 0x48, +0xE7, 0x61, 0x30, 0xF0, 0x21, 0x69, 0x00, 0x6A, +0x90, 0xF4, 0x14, 0x49, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xE4, 0xF3, +0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, +0xC8, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF3, 0xB8, 0x9A, 0x28, 0xF5, +0x1C, 0x6C, 0x80, 0x18, 0xE1, 0x39, 0x40, 0xC9, +0x04, 0x92, 0x02, 0x49, 0x01, 0x4A, 0x0F, 0x72, +0x04, 0xD2, 0xE5, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0x2C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x28, 0xF1, 0x10, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, 0x07, 0x96, +0x2B, 0xE9, 0x63, 0xF0, 0x00, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x06, 0x96, +0x68, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x05, 0x96, 0xA1, 0xF1, +0x14, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x80, 0x18, +0x36, 0x18, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x00, 0x6A, +0x8C, 0xE9, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, +0x21, 0x68, 0x70, 0xF1, 0x08, 0x48, 0x00, 0x6B, +0x90, 0x67, 0xB1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x00, 0x6B, +0x90, 0x67, 0xB1, 0x67, 0x08, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0xB1, 0x67, 0x08, 0x6E, 0x80, 0x18, 0xAB, 0x53, +0x0B, 0x22, 0x06, 0x92, 0x01, 0x4A, 0x06, 0xD2, +0x06, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEB, +0x2E, 0xF5, 0x10, 0x73, 0x06, 0xD3, 0xCE, 0x61, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF5, 0x63, 0x15, 0x62, +0x14, 0xD1, 0x13, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, +0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, +0x08, 0x4A, 0x64, 0x67, 0x06, 0xD2, 0xE2, 0xF0, +0x14, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x68, 0x33, 0x6D, 0xE2, 0x04, 0x4B, +0x08, 0xD3, 0x64, 0x67, 0x61, 0xF0, 0x1E, 0x4B, +0x6C, 0x33, 0x69, 0xE2, 0x04, 0x4A, 0x00, 0x6B, +0x0F, 0xD4, 0x11, 0xD5, 0x0A, 0xD2, 0x07, 0xD3, +0x07, 0x95, 0x11, 0x92, 0xFF, 0x69, 0xAC, 0xE9, +0x18, 0x2A, 0x30, 0xF0, 0x21, 0x68, 0x70, 0xF1, +0x08, 0x48, 0x01, 0x6A, 0x90, 0x67, 0xB1, 0x67, +0xDF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x0A, 0x93, 0x90, 0x67, 0xB1, 0x67, +0x40, 0x9B, 0x58, 0x6E, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0xEC, 0x9A, 0x80, 0x18, +0xF0, 0x53, 0x07, 0x95, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x48, 0x9A, 0xA4, 0x35, 0x00, 0x69, +0x4D, 0xED, 0x0E, 0xD5, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x0E, 0x96, 0x01, 0x6D, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, +0x0C, 0x6C, 0xAB, 0xED, 0x07, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, +0x0C, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, +0xFF, 0x6A, 0x2C, 0xEA, 0x08, 0x2A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x03, 0x6E, 0x07, 0x10, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, +0x14, 0x6C, 0x10, 0x6E, 0x40, 0xEA, 0x0F, 0x95, +0x07, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0x34, +0x71, 0xE4, 0x84, 0x34, 0x91, 0xE1, 0x20, 0xF4, +0xAD, 0x44, 0xE4, 0xF3, 0x5C, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x20, 0xF4, 0x15, 0x4C, 0x08, 0xF2, +0x10, 0x4B, 0xB0, 0x35, 0x90, 0x34, 0xB5, 0xE3, +0x8D, 0xE3, 0x46, 0xE9, 0x04, 0x4D, 0x04, 0x4B, +0x0D, 0xD5, 0x0C, 0xD3, 0xA3, 0x42, 0x61, 0x42, +0x23, 0x4A, 0x09, 0xD5, 0x0B, 0xD3, 0x10, 0xD2, +0x0D, 0x95, 0x09, 0x93, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xAD, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xC0, 0x36, 0xC4, 0x36, 0xD9, 0xE3, 0xC3, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x0C, 0x95, +0x0B, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0xAD, +0x01, 0x6D, 0xAB, 0xED, 0xC0, 0x36, 0xC4, 0x36, +0xD9, 0xE3, 0xC3, 0xF3, 0x18, 0x6C, 0x40, 0xEA, +0x0D, 0x95, 0x0C, 0x93, 0x09, 0x92, 0x02, 0x4D, +0x02, 0x4B, 0x0D, 0xD5, 0x0C, 0xD3, 0x0B, 0x95, +0x10, 0x93, 0x04, 0x4A, 0x04, 0x4D, 0x6A, 0xEA, +0x09, 0xD2, 0x0B, 0xD5, 0xD5, 0x61, 0xFF, 0x6A, +0x2C, 0xEA, 0x08, 0x2A, 0x08, 0x95, 0x06, 0x93, +0xC0, 0xF3, 0x44, 0x98, 0xC0, 0xA5, 0x80, 0xAB, +0x01, 0x6D, 0x08, 0x10, 0x06, 0x93, 0x08, 0x95, +0xC0, 0xF3, 0x44, 0x98, 0x80, 0xAB, 0xC1, 0xA5, +0x00, 0xF4, 0x00, 0x6D, 0xCF, 0xEE, 0x01, 0x49, +0x40, 0xEA, 0x02, 0x71, 0x5F, 0xF7, 0x0A, 0x61, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x06, 0xF0, 0x00, 0x6D, 0x03, 0xF3, 0x0C, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x07, 0x95, 0x06, 0x92, +0x08, 0x93, 0x01, 0x4D, 0x07, 0xD5, 0x02, 0x4A, +0x0A, 0x95, 0x06, 0xD2, 0x07, 0x92, 0x02, 0x4B, +0x04, 0x4D, 0x02, 0x72, 0x08, 0xD3, 0x0A, 0xD5, +0x1F, 0xF7, 0x02, 0x61, 0x15, 0x97, 0x14, 0x91, +0x13, 0x90, 0x0B, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x00, 0x6B, 0x29, 0xF0, -0x68, 0xC2, 0x1A, 0x2C, 0x68, 0xF4, 0x66, 0xA2, -0x17, 0x23, 0x88, 0xF5, 0x7C, 0x9A, 0x88, 0xF5, -0x94, 0x9A, 0x00, 0x68, 0x6E, 0xEC, 0x05, 0x24, -0x88, 0xF5, 0x58, 0x9A, 0x4E, 0xEB, 0x0C, 0x2B, -0x01, 0x68, 0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x90, 0x67, 0xCF, 0xF6, 0x68, 0xC2, 0x80, 0x18, -0x74, 0x1B, 0x90, 0x67, 0x80, 0x18, 0xA7, 0x49, -0x30, 0xF0, 0x20, 0x6A, 0xCF, 0xF6, 0x48, 0xA2, +0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, 0x68, 0xF6, +0x70, 0xC2, 0x1A, 0x2C, 0xA8, 0xF2, 0x6E, 0xA2, +0x17, 0x23, 0xE8, 0xF3, 0x64, 0x9A, 0xC8, 0xF3, +0x9C, 0x9A, 0x00, 0x68, 0x6E, 0xEC, 0x05, 0x24, +0xE8, 0xF3, 0x40, 0x9A, 0x4E, 0xEB, 0x0C, 0x2B, +0x01, 0x68, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, +0x90, 0x67, 0x91, 0xF0, 0x60, 0xC2, 0x80, 0x18, +0xFD, 0x18, 0x90, 0x67, 0x80, 0x18, 0xB6, 0x4E, +0x30, 0xF0, 0x21, 0x6A, 0x91, 0xF0, 0x40, 0xA2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x0F, 0xF3, 0x51, 0xA2, 0x05, 0x22, 0x00, 0x6C, -0x01, 0x6D, 0x80, 0x18, 0x06, 0x1C, 0x04, 0x10, -0x00, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x74, 0x1B, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x21, 0x6A, +0xD0, 0xF4, 0x49, 0xA2, 0x05, 0x22, 0x00, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0x90, 0x19, 0x04, 0x10, +0x00, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0xFD, 0x18, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x7D, 0x67, 0x4C, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0x3C, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, 0xE0, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, +0x20, 0x6A, 0x04, 0xF1, 0x30, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, +0x30, 0xF0, 0x21, 0x68, 0x70, 0xF1, 0x08, 0x48, 0x00, 0x6D, 0x90, 0x67, 0xC5, 0x67, 0x04, 0xD1, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x14, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x04, 0xD1, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF4, 0xA8, 0x9B, 0xC0, 0xF3, +0x04, 0xD1, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF4, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE1, 0xF0, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xE1, 0xF0, 0x1C, 0x6C, 0xAB, 0xED, 0x00, 0x6E, @@ -65407,151 +66529,151 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x08, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF4, 0xAC, 0x9B, 0x01, 0xF2, 0x04, 0x6C, +0x04, 0xF4, 0xA4, 0x9B, 0x01, 0xF2, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x70, 0x9A, 0xFF, 0x6A, 0x80, 0xA3, +0x04, 0xF1, 0x64, 0x9A, 0xFF, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0xFE, 0x6C, 0x4C, 0xEC, 0x80, 0xC3, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x54, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, -0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF4, -0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF4, -0x50, 0x9A, 0x60, 0xDA, 0x0B, 0x97, 0x0A, 0x91, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, +0x4C, 0x9A, 0x60, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, +0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF4, +0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF4, +0x48, 0x9A, 0x60, 0xDA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x34, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x2C, 0x9A, +0x30, 0xF0, 0x21, 0x68, 0x70, 0xF1, 0x08, 0x48, 0x90, 0x67, 0xF1, 0x67, 0x01, 0xF2, 0x00, 0x6A, 0x00, 0x6D, 0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF4, -0x58, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, -0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF4, +0x50, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, +0xB8, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x0E, 0xD6, 0x0F, 0xD7, 0x04, 0xD7, 0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0x0E, 0x97, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, -0x20, 0x6C, 0xAE, 0xF7, 0x18, 0x4C, 0xB0, 0x67, -0xD1, 0x67, 0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6A, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x0E, 0x97, -0xAE, 0xF7, 0x18, 0x4B, 0x83, 0x67, 0xB0, 0x67, -0xD1, 0x67, 0x06, 0xD3, 0x80, 0x18, 0x9C, 0x4E, +0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, 0xB0, 0x67, +0xD1, 0x67, 0x80, 0x18, 0xF0, 0x53, 0x00, 0x6A, +0x07, 0xD2, 0x30, 0xF0, 0x21, 0x6B, 0x0E, 0x97, +0x70, 0xF1, 0x08, 0x4B, 0x83, 0x67, 0xB0, 0x67, +0xD1, 0x67, 0x06, 0xD3, 0x80, 0x18, 0xAB, 0x53, 0x0F, 0x93, 0x6E, 0xEA, 0x1E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x0F, 0x92, 0x06, 0x94, 0x0E, 0x97, 0xB0, 0x67, 0xD1, 0x67, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x07, 0x93, 0x01, 0x4B, 0xE0, 0xF3, +0xF0, 0x53, 0x07, 0x93, 0x01, 0x4B, 0xE0, 0xF3, 0x08, 0x73, 0x07, 0xD3, 0xDE, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xA0, 0xF1, 0x00, 0x6C, 0x1F, 0xF7, 0x00, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0xA3, 0xF4, -0xF4, 0x9A, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, -0x20, 0x6C, 0x0E, 0xD6, 0x04, 0xD6, 0xAE, 0xF7, -0x18, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, -0xE1, 0x4E, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0xE0, 0x9A, 0xAE, 0xF7, 0x18, 0x4B, +0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0xC4, 0xF3, +0xEC, 0x9A, 0x8C, 0xE8, 0xAC, 0xE9, 0x30, 0xF0, +0x21, 0x6C, 0x0E, 0xD6, 0x04, 0xD6, 0x70, 0xF1, +0x08, 0x4C, 0xB0, 0x67, 0xD1, 0x67, 0x80, 0x18, +0xF0, 0x53, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, 0x30, 0xF0, +0x21, 0x6B, 0xE0, 0x9A, 0x70, 0xF1, 0x08, 0x4B, 0x83, 0x67, 0xB0, 0x67, 0xD1, 0x67, 0x06, 0xD3, -0x80, 0x18, 0x9C, 0x4E, 0x0E, 0x93, 0x6E, 0xEA, +0x80, 0x18, 0xAB, 0x53, 0x0E, 0x93, 0x6E, 0xEA, 0x18, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0x0E, 0x92, +0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, 0x0E, 0x92, 0x06, 0x94, 0xE0, 0x9B, 0xB0, 0x67, 0xD1, 0x67, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x07, 0x92, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x07, 0x92, 0x01, 0x4A, 0xE0, 0xF3, 0x08, 0x72, 0x07, 0xD2, 0xD6, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x0C, 0xD4, 0x05, 0x67, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, -0x30, 0xF0, 0x20, 0x69, 0x6C, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0x07, 0xD2, -0xE0, 0x9B, 0x07, 0x95, 0xAE, 0xF7, 0x18, 0x49, +0x30, 0xF0, 0x21, 0x69, 0x6C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, 0x07, 0xD2, +0xE0, 0x9B, 0x07, 0x95, 0x70, 0xF1, 0x08, 0x49, 0x00, 0x6A, 0x91, 0x67, 0xEF, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x40, 0x98, 0x06, 0x94, +0x80, 0x18, 0xF0, 0x53, 0x40, 0x98, 0x06, 0x94, 0x11, 0x6E, 0xCB, 0xEE, 0x4C, 0xEE, 0xDF, 0x6D, -0x80, 0x18, 0x9F, 0x1C, 0x0C, 0x92, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0xC1, 0xA2, +0x80, 0x18, 0x29, 0x1A, 0x0C, 0x92, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, 0xC1, 0xA2, 0xE0, 0x9B, 0x42, 0x98, 0x07, 0x95, 0x91, 0x67, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x0C, 0x92, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x0C, 0x92, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, 0xC2, 0xA2, 0x07, 0x95, 0x44, 0x98, 0xE0, 0x9B, -0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, +0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x06, 0x92, 0x04, 0x48, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, 0xC4, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, -0xAE, 0xF7, 0x18, 0x4C, 0x80, 0x18, 0xFF, 0x34, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x21, 0x6C, +0x70, 0xF1, 0x08, 0x4C, 0x80, 0x18, 0x64, 0x32, 0x05, 0x97, 0x01, 0x6A, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0x0A, 0xD4, 0x0F, 0xF3, 0x66, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x2C, 0x9A, 0x30, 0xF0, +0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x21, 0x6A, +0x0A, 0xD4, 0xB0, 0xF4, 0x7E, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x24, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0x93, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0x35, 0xE3, 0x8F, 0xF6, -0x04, 0x4C, 0x08, 0x6E, 0x40, 0xEA, 0x0A, 0x95, -0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6C, -0x08, 0x4D, 0x35, 0xE5, 0x4F, 0xF4, 0x1C, 0x4C, +0x30, 0xF0, 0x21, 0x6C, 0x35, 0xE3, 0x31, 0xF0, +0x1C, 0x4C, 0x08, 0x6E, 0x40, 0xEA, 0x0A, 0x95, +0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x21, 0x6C, +0x08, 0x4D, 0x35, 0xE5, 0x10, 0xF6, 0x14, 0x4C, 0x44, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0x30, 0xF0, -0x20, 0x6C, 0xAF, 0xF4, 0x00, 0x4C, 0x4C, 0x4A, +0x21, 0x6C, 0x50, 0xF6, 0x18, 0x4C, 0x4C, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, -0x30, 0xF0, 0x20, 0x6C, 0xEF, 0xF4, 0x04, 0x4C, +0x30, 0xF0, 0x21, 0x6C, 0x90, 0xF6, 0x1C, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, -0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x2F, 0xF5, -0x08, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, +0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0xF0, 0xF6, +0x00, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, -0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, -0x6F, 0xF5, 0x0C, 0x4C, 0x44, 0x4A, 0x04, 0xD2, +0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, +0x30, 0xF7, 0x04, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, 0x30, 0xF0, -0x20, 0x6C, 0xAF, 0xF5, 0x10, 0x4C, 0x44, 0x4A, +0x21, 0x6C, 0x70, 0xF7, 0x08, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, 0x04, 0x92, -0x30, 0xF0, 0x20, 0x6C, 0xEF, 0xF5, 0x14, 0x4C, +0x30, 0xF0, 0x21, 0x6C, 0xB0, 0xF7, 0x0C, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, 0x40, 0xEA, -0x04, 0x92, 0x30, 0xF0, 0x20, 0x6C, 0x2F, 0xF6, -0x18, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, +0x04, 0x92, 0x30, 0xF0, 0x21, 0x6C, 0xF0, 0xF7, +0x10, 0x4C, 0x44, 0x4A, 0x04, 0xD2, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, 0x44, 0x6E, 0x35, 0xE3, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, -0xA0, 0x9B, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, -0x30, 0xF0, 0x20, 0x6C, 0x8F, 0xF6, 0x1C, 0x4C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF4, +0xB8, 0x9B, 0x04, 0x93, 0x80, 0xF2, 0x4C, 0x98, +0x30, 0xF0, 0x21, 0x6C, 0x51, 0xF0, 0x14, 0x4C, 0xB5, 0xE3, 0x10, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0xD1, 0x08, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF3, 0x60, 0xA2, 0x80, 0xF0, +0x20, 0x6A, 0xE2, 0xF0, 0x78, 0xA2, 0x80, 0xF0, 0x1E, 0x23, 0x30, 0xF0, 0x20, 0x6C, 0x00, 0x6B, -0xC3, 0xF1, 0x98, 0x9C, 0x02, 0xF3, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6D, -0x68, 0xF4, 0x77, 0xC2, 0x68, 0xF4, 0x9C, 0xDA, -0x68, 0xF4, 0x75, 0xC2, 0x68, 0xF4, 0x79, 0xC2, -0x88, 0xF4, 0x84, 0xDA, 0x68, 0xF4, 0x78, 0xC2, -0x88, 0xF4, 0x80, 0xDA, 0x68, 0xF4, 0x76, 0xC2, -0x68, 0xF4, 0x7A, 0xC2, 0x88, 0xF4, 0x88, 0xDA, -0x8F, 0xF6, 0x04, 0x4E, 0x6F, 0xF4, 0x1E, 0x4D, +0x04, 0xF1, 0x8C, 0x9C, 0xE2, 0xF0, 0x78, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x30, 0xF0, 0x21, 0x6E, 0x30, 0xF0, 0x21, 0x6D, +0xA8, 0xF2, 0x7F, 0xC2, 0xC8, 0xF2, 0x84, 0xDA, +0xA8, 0xF2, 0x7D, 0xC2, 0xC8, 0xF2, 0x61, 0xC2, +0xC8, 0xF2, 0x8C, 0xDA, 0xC8, 0xF2, 0x60, 0xC2, +0xC8, 0xF2, 0x88, 0xDA, 0xA8, 0xF2, 0x7E, 0xC2, +0xC8, 0xF2, 0x62, 0xC2, 0xC8, 0xF2, 0x90, 0xDA, +0x31, 0xF0, 0x1C, 0x4E, 0x30, 0xF6, 0x16, 0x4D, 0x00, 0x6A, 0x00, 0x6B, 0x60, 0xDE, 0x30, 0xF0, -0x20, 0x6C, 0xF1, 0xF0, 0x6F, 0x42, 0xA6, 0xF6, -0x00, 0x4C, 0x6C, 0x33, 0x6D, 0xE4, 0x04, 0x4B, -0x04, 0xD3, 0xF2, 0xF1, 0x6C, 0x42, 0x68, 0x33, +0x20, 0x6C, 0xC1, 0xF0, 0x68, 0x42, 0x08, 0xF2, +0x10, 0x4C, 0x6C, 0x33, 0x6D, 0xE4, 0x04, 0x4B, +0x04, 0xD3, 0x82, 0xF1, 0x6E, 0x42, 0x68, 0x33, 0x6D, 0xE4, 0x04, 0x4B, 0x03, 0xD3, 0x06, 0x6B, 0x78, 0xEA, 0x01, 0xD5, 0x00, 0x69, 0x05, 0x67, -0x12, 0xEB, 0x6D, 0xE4, 0x09, 0xF0, 0x0D, 0x4B, +0x12, 0xEB, 0x6D, 0xE4, 0x48, 0xF6, 0x15, 0x4B, 0x04, 0x95, 0x00, 0x6C, 0x80, 0xDD, 0x03, 0x95, -0x80, 0xCD, 0x44, 0x35, 0xB5, 0xE1, 0xE4, 0xF3, -0x0C, 0x4D, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0x35, -0xA6, 0xF6, 0x00, 0x4C, 0xB1, 0xE4, 0x04, 0x4C, +0x80, 0xCD, 0x44, 0x35, 0xB5, 0xE1, 0x04, 0xF3, +0x10, 0x4D, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0x35, +0x08, 0xF2, 0x10, 0x4C, 0xB1, 0xE4, 0x04, 0x4C, 0x05, 0xD4, 0x01, 0x94, 0x00, 0x6D, 0x00, 0xD5, 0x02, 0xD4, 0x05, 0x95, 0x00, 0x6C, 0x22, 0x6F, 0x80, 0xC5, 0x00, 0x94, 0x30, 0xF0, 0x20, 0x6D, -0xA6, 0xF6, 0x00, 0x4D, 0xF8, 0xEC, 0x44, 0x6C, +0x08, 0xF2, 0x10, 0x4D, 0xF8, 0xEC, 0x44, 0x6C, 0x06, 0xD2, 0x12, 0xEF, 0x98, 0xE9, 0x12, 0xEC, 0x9D, 0xE7, 0x88, 0x6C, 0x98, 0xEA, 0x12, 0xEC, -0x9D, 0xE7, 0xF1, 0xE5, 0xFD, 0xE5, 0xA8, 0xF5, -0x1C, 0x4C, 0xC8, 0xF6, 0x0C, 0x4F, 0x02, 0x92, +0x9D, 0xE7, 0xF1, 0xE5, 0xFD, 0xE5, 0x08, 0xF4, +0x04, 0x4C, 0x08, 0xF5, 0x14, 0x4F, 0x02, 0x92, 0x00, 0x6D, 0xA0, 0xCC, 0x02, 0x4C, 0x4A, 0xEC, 0xA0, 0xCF, 0x02, 0x4F, 0xF8, 0x61, 0x00, 0x94, 0x06, 0x92, 0x01, 0x4C, 0x00, 0xD4, 0x05, 0x94, @@ -65572,19 +66694,19 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x01, 0x6D, 0x06, 0xD4, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x06, 0x92, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF4, 0xA4, 0x9B, 0x23, 0xF3, +0x44, 0x98, 0xE4, 0xF3, 0xBC, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF5, 0x44, 0x9A, 0x0E, 0x10, +0x20, 0x6A, 0x04, 0xF4, 0x5C, 0x9A, 0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF4, 0xA4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, +0xE4, 0xF3, 0xBC, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x48, 0x9A, 0x05, 0xD2, 0x06, 0x92, +0x24, 0xF4, 0x40, 0x9A, 0x05, 0xD2, 0x06, 0x92, 0x22, 0x68, 0x07, 0x93, 0x18, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xE8, 0x58, 0xEB, 0x04, 0x93, 0x12, 0xEA, 0x41, 0xE0, 0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x01, 0xE2, 0xA8, 0xF5, -0x1C, 0x48, 0xC0, 0xA8, 0x05, 0x92, 0x01, 0x6D, +0x08, 0xF2, 0x10, 0x4A, 0x01, 0xE2, 0x08, 0xF4, +0x04, 0x48, 0xC0, 0xA8, 0x05, 0x92, 0x01, 0x6D, 0xC0, 0x36, 0x4D, 0xEE, 0x28, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x02, 0x4E, @@ -65593,24 +66715,24 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x18, 0xEA, 0x44, 0x6A, 0x12, 0xE8, 0x58, 0xEB, 0x04, 0x93, 0x12, 0xEA, 0x41, 0xE0, 0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x01, 0xE2, -0x00, 0x6A, 0xC8, 0xF6, 0x0C, 0x48, 0x04, 0xD2, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x01, 0xE2, +0x00, 0x6A, 0x08, 0xF5, 0x14, 0x48, 0x04, 0xD2, 0xC0, 0xA8, 0x05, 0x93, 0x04, 0x92, 0xC0, 0x36, 0x30, 0xF0, 0x20, 0x69, 0x6D, 0xEE, 0x48, 0x33, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0x6D, 0xEE, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x04, 0x93, 0x02, 0x48, 0x01, 0x4B, 0x11, 0x73, 0x04, 0xD3, 0xEA, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF4, 0xDC, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0xC4, 0xF3, 0xD4, 0x9B, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x99, 0xE3, 0xF4, 0xA4, 0x9B, 0x23, 0xF3, +0x44, 0x99, 0xE4, 0xF3, 0xBC, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0xF2, 0xF1, 0x86, 0x42, -0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0x14, 0x4A, -0xA6, 0xF6, 0x00, 0x4B, 0x88, 0x34, 0x44, 0x32, +0xFF, 0x6A, 0x8C, 0xEA, 0x82, 0xF1, 0x88, 0x42, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF3, 0x18, 0x4A, +0x08, 0xF2, 0x10, 0x4B, 0x88, 0x34, 0x44, 0x32, 0x91, 0xE3, 0x4D, 0xE3, 0x00, 0x68, 0x04, 0x4C, 0x08, 0x4B, 0x04, 0xD4, 0x05, 0xD3, 0x06, 0xD0, 0x07, 0xD0, 0x08, 0xD0, 0x04, 0x95, 0x01, 0x6C, @@ -65633,831 +66755,736 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x05, 0xD5, 0xBC, 0x61, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0xD2, 0x00, 0x6A, -0x04, 0xD2, 0x04, 0x92, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x64, 0x98, 0x01, 0x69, 0x2B, 0xE9, -0x44, 0x36, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, -0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEB, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF5, -0xCC, 0x9B, 0x03, 0xF3, 0x04, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x05, 0x92, 0x07, 0x2A, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0xB1, 0x67, -0x80, 0x6E, 0x06, 0x10, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x08, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x01, 0x69, -0xC0, 0xF3, 0x44, 0x98, 0x2B, 0xE9, 0x03, 0xF3, -0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0xC8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x14, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, -0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF5, 0xD4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x1C, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF5, 0xD8, 0x9B, 0x23, 0xF3, -0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, -0x01, 0x4A, 0x02, 0x72, 0x04, 0xD2, 0x99, 0x61, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x00, 0xF2, 0x1C, 0x22, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, 0xB8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF4, 0x10, 0x69, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0xD2, 0x00, 0x69, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x6B, 0x24, 0x36, 0x01, 0x6D, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, +0x04, 0x92, 0x07, 0x2A, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, 0x01, 0x6E, +0x06, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x08, 0x6C, 0x80, 0x6D, 0x00, 0x6E, 0x01, 0x49, +0x40, 0xEA, 0x02, 0x71, 0xE1, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x00, 0xF2, 0x1C, 0x22, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0xB8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0x04, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF3, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF4, 0x10, 0x69, 0x91, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF1, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF4, 0xBC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0xB8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, -0x10, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, -0x18, 0x6D, 0xE0, 0xF1, 0x1F, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x10, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, -0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF1, 0x10, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x04, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF4, 0x2C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x0C, 0x6C, -0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x68, 0xF1, 0x0C, 0x6C, 0x80, 0x6D, +0x20, 0x6B, 0x64, 0xF0, 0x04, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, +0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0xE0, 0xF1, +0x1F, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF0, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x63, 0xF0, 0x04, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, +0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x68, 0xF1, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, 0x24, 0x9A, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, +0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF0, 0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, -0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x00, 0x6C, -0x03, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x01, 0x69, -0xC0, 0xF3, 0x44, 0x98, 0x2B, 0xE9, 0x23, 0xF4, -0x18, 0x6C, 0xB1, 0x67, 0xD1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, 0x1C, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x63, 0xF0, 0x0C, 0x6C, 0x80, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, +0x0C, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, +0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x08, 0xF1, 0x0C, 0x6C, 0x03, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF2, 0x00, 0x6C, 0x03, 0x6D, 0x02, 0x6E, +0x40, 0xEA, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, +0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, +0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x0C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x24, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF5, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x24, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x24, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF5, 0x0C, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x44, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF5, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x18, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x44, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x04, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, -0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF5, 0x04, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, -0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, -0x18, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0xC0, 0x9B, 0xC9, 0x12, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x04, 0xD2, 0x09, 0xF0, 0x4C, 0xA2, 0xE0, 0xF0, -0x1B, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF5, 0xDC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF4, -0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x93, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, 0x00, 0x6C, -0x68, 0xF4, 0xD2, 0xA3, 0x04, 0x6B, 0x0E, 0xF0, -0x00, 0x6D, 0x67, 0xEE, 0xC3, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, -0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x68, 0xF4, -0xD2, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x04, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0x68, 0xF4, 0xD2, 0xA2, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x08, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, -0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x68, 0xF4, -0xD2, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x0C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, -0x10, 0x6C, 0x68, 0xF4, 0xD2, 0xA2, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x10, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, -0x23, 0xF0, 0x10, 0x6C, 0x68, 0xF4, 0xD2, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, -0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x68, 0xF4, -0xD2, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x04, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, -0x10, 0x6C, 0x68, 0xF4, 0xD2, 0xA2, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x08, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, -0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x68, 0xF4, -0xD2, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x0C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, -0x10, 0x6C, 0x68, 0xF4, 0xD2, 0xA2, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x10, 0x4B, -0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, -0x28, 0xF1, 0x10, 0x6C, 0x68, 0xF4, 0xD2, 0xA2, -0xB1, 0x67, 0xC0, 0xF3, 0x44, 0x98, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x63, 0x11, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0x63, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x64, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, -0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x08, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0x04, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x04, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF4, 0x00, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0xC0, 0x9B, 0xC9, 0x12, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x04, 0xD2, 0x48, 0xF6, +0x54, 0xA2, 0xE0, 0xF0, 0x1B, 0x22, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, +0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x04, 0x93, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF0, 0x00, 0x6C, 0xA8, 0xF2, 0xDA, 0xA3, +0x04, 0x6B, 0x0E, 0xF0, 0x00, 0x6D, 0x67, 0xEE, +0xC3, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, +0x10, 0x6C, 0xA8, 0xF2, 0xDA, 0xA2, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, 0x0C, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, +0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0xA8, 0xF2, +0xDA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, +0x10, 0x6C, 0xA8, 0xF2, 0xDA, 0xA2, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, 0x14, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, +0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0xA8, 0xF2, +0xDA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x04, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, +0xA8, 0xF2, 0xDA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF4, 0x00, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, +0x10, 0x6C, 0xA8, 0xF2, 0xDA, 0xA2, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, 0x0C, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, +0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0xA8, 0xF2, +0xDA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x40, 0xEA, 0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, +0x10, 0x6C, 0xA8, 0xF2, 0xDA, 0xA2, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, 0x14, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, +0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0xA8, 0xF2, +0xDA, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x04, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, +0xA8, 0xF2, 0xDA, 0xA2, 0xB1, 0x67, 0xC0, 0xF3, +0x44, 0x98, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF4, 0x00, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x63, 0x11, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0x64, 0xF4, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, +0x2B, 0xE9, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x84, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x84, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x14, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, +0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x04, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x14, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0x20, 0x6B, 0xA4, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x64, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x84, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x84, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, -0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x84, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x84, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0x04, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0xA4, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0xA4, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0x10, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x30, 0xF0, -0x20, 0x68, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, -0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, -0x18, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x30, 0x9A, 0xC0, 0xF3, -0x44, 0x98, 0x63, 0xF0, 0x04, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x14, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF4, 0x18, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x68, 0xF1, 0x04, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF4, -0x2C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x0C, 0x6C, -0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x63, 0xF0, 0x0C, 0x6C, 0x80, 0x6D, +0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, +0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x24, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, +0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x68, 0xF1, +0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF3, 0x24, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x68, 0xF1, 0x0C, 0x6C, 0x80, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, -0xC5, 0x67, 0x03, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, -0x08, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF2, 0x00, 0x6C, 0x03, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x06, 0x67, 0xA3, 0xF5, -0xD8, 0x9B, 0x09, 0xD5, 0x01, 0x6D, 0x24, 0x67, -0x0B, 0xD7, 0x63, 0xF5, 0x10, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x00, 0x6A, 0x80, 0x98, 0x1F, 0xF7, -0x00, 0x6B, 0x8C, 0xEB, 0x02, 0xF0, 0x00, 0x73, -0x01, 0x60, 0x09, 0x2B, 0x30, 0xF0, 0x20, 0x6C, -0x60, 0x98, 0x43, 0xF1, 0x9C, 0x9C, 0x6D, 0xE4, -0x80, 0x99, 0x80, 0xDB, 0x07, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0x60, 0x9B, 0x91, 0xE3, -0x60, 0x99, 0x60, 0xDC, 0x01, 0x4A, 0xFF, 0x6B, -0x6C, 0xEA, 0x03, 0x72, 0x04, 0x48, 0x04, 0x49, -0xE1, 0x61, 0x00, 0x68, 0x0B, 0x92, 0x30, 0xF0, -0x20, 0x69, 0x01, 0x6D, 0x11, 0xE2, 0x09, 0x92, -0x80, 0xAC, 0xAB, 0xED, 0x0D, 0xE2, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x99, 0x04, 0x48, 0x40, 0xEA, -0x2C, 0x70, 0xF0, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x6F, 0xF6, 0x5D, 0xA2, 0x01, 0x72, 0x0A, 0x61, +0x08, 0xF1, 0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, +0x0C, 0x6C, 0x80, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x0C, 0x6C, +0x80, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, 0x03, 0xF0, +0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0x6D, 0xC5, 0x67, 0x08, 0xF1, 0x0C, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, +0x00, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x06, 0x67, 0xC4, 0xF4, 0xC0, 0x9B, 0x09, 0xD5, +0x01, 0x6D, 0x24, 0x67, 0x0B, 0xD7, 0x63, 0xF5, +0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x00, 0x6A, +0x80, 0x98, 0x1F, 0xF7, 0x00, 0x6B, 0x8C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x09, 0x2B, +0x30, 0xF0, 0x20, 0x6C, 0x60, 0x98, 0x84, 0xF0, +0x90, 0x9C, 0x6D, 0xE4, 0x80, 0x99, 0x80, 0xDB, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, +0x74, 0x9B, 0x91, 0xE3, 0x60, 0x99, 0x60, 0xDC, +0x01, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x03, 0x72, +0x04, 0x48, 0x04, 0x49, 0xE1, 0x61, 0x00, 0x68, +0x0B, 0x92, 0x30, 0xF0, 0x20, 0x69, 0x01, 0x6D, +0x11, 0xE2, 0x09, 0x92, 0x80, 0xAC, 0xAB, 0xED, +0x0D, 0xE2, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x99, +0x04, 0x48, 0x40, 0xEA, 0x2C, 0x70, 0xF0, 0x61, +0x30, 0xF0, 0x21, 0x6A, 0x31, 0xF0, 0x55, 0xA2, +0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF0, 0x0C, 0x6C, +0x64, 0xF0, 0xA4, 0x9B, 0x00, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0x03, 0xF0, 0x0C, 0x6C, 0x23, 0xF1, 0xB0, 0x9B, -0x00, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF1, 0xB0, 0x9B, -0x03, 0xF0, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x6F, 0xF6, 0x5F, 0xA2, -0x01, 0x72, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x08, 0xF1, 0x0C, 0x6C, 0x23, 0xF1, 0xB0, 0x9B, -0x00, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x23, 0xF1, 0xB0, 0x9B, 0x08, 0xF1, 0x0C, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xAF, 0xF6, 0x4C, 0xA2, 0x1E, 0x22, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, -0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF4, 0x38, 0x9A, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF0, 0x04, 0x6C, 0xB1, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xA8, 0xF1, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0x50, 0x9A, 0x01, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, -0x20, 0x68, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0xA4, 0x9B, -0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF5, 0xBC, 0x9B, 0xC3, 0xF4, 0x10, 0x6C, -0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF1, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF5, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, 0xCB, 0xEE, -0xA6, 0x67, 0x23, 0xF4, 0x18, 0x6C, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, -0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF5, 0xA0, 0x9B, 0x21, 0xF0, 0x04, 0x6C, -0x03, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, 0xE0, 0x9B, -0xFF, 0x6A, 0x04, 0x6B, 0xC0, 0xA7, 0x4C, 0xED, -0x4C, 0xEC, 0x4C, 0xEE, 0xCD, 0xEB, 0x4C, 0xEB, -0x60, 0xC7, 0x06, 0x2D, 0x07, 0x6B, 0x07, 0x24, -0x01, 0x74, 0x07, 0x6B, 0x12, 0x61, 0x0C, 0x10, -0x07, 0x2C, 0x79, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x44, 0x9A, 0x08, 0x10, -0x01, 0x74, 0x07, 0x61, 0x79, 0x6B, 0x6B, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x48, 0x9A, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF4, -0x40, 0x9A, 0xC0, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0xCC, 0xEC, -0xC0, 0xF3, 0x44, 0x98, 0xAC, 0xEE, 0x01, 0x69, -0x08, 0x6B, 0x2B, 0xE9, 0xC4, 0x36, 0x04, 0xD4, -0xB1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0x6D, 0xEE, -0x40, 0xEA, 0x04, 0x92, 0x12, 0x2A, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, -0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0xC3, 0xF5, 0xCC, 0x9B, -0x11, 0x10, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF5, 0xD0, 0x9B, 0xC3, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0xDC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0x30, 0xF0, 0x20, 0x68, -0xC3, 0xF3, 0x18, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, -0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, -0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0xB4, 0x9A, -0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, 0xEA, 0x3C, -0x20, 0x6B, 0x4C, 0xEB, 0x0A, 0x2B, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x01, 0x48, 0x40, 0xEA, 0x0A, 0x70, 0xEC, 0x61, -0x0A, 0x68, 0x50, 0x67, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, -0x8C, 0xE8, 0x80, 0x18, 0x8A, 0x21, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0xD8, 0x9A, 0x01, 0x69, -0x2B, 0xE9, 0x0D, 0xEE, 0xB1, 0x67, 0x02, 0xF7, -0x00, 0x6C, 0x80, 0x18, 0xFF, 0x3C, 0xB1, 0x67, -0x02, 0xF7, 0x08, 0x6C, 0x80, 0x18, 0xEA, 0x3C, +0x64, 0xF0, 0xA4, 0x9B, 0x03, 0xF0, 0x0C, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x21, 0x6A, +0x31, 0xF0, 0x57, 0xA2, 0x01, 0x72, 0x0C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9A, 0x08, 0xF1, 0x0C, 0x6C, +0x64, 0xF0, 0xA4, 0x9B, 0x00, 0x6E, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9A, 0x64, 0xF0, 0xA4, 0x9B, +0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, -0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, 0x37, 0x25, -0x61, 0x45, 0x00, 0x6A, 0x0E, 0x2B, 0x80, 0x18, -0x8A, 0x21, 0x01, 0x69, 0x0C, 0x96, 0x2B, 0xE9, -0x02, 0xF7, 0x04, 0x6C, 0xB1, 0x67, 0x80, 0x18, -0xFF, 0x3C, 0x02, 0xF7, 0x00, 0x6C, 0xB1, 0x67, -0x1F, 0x10, 0x71, 0x67, 0x66, 0xEA, 0x01, 0x6C, -0x8C, 0xEB, 0x04, 0x2B, 0x01, 0x4A, 0x20, 0x72, -0xF8, 0x61, 0x00, 0x6A, 0x90, 0x67, 0x04, 0xD2, -0x2F, 0xE9, 0x80, 0x18, 0x99, 0x21, 0x4C, 0xE9, -0x80, 0x18, 0x8A, 0x21, 0x0C, 0x96, 0x04, 0x92, -0x01, 0x6D, 0x02, 0xF7, 0x04, 0x6C, 0xC4, 0xEA, -0xAB, 0xED, 0x2D, 0xEE, 0x80, 0x18, 0xFF, 0x3C, -0x01, 0x6D, 0x02, 0xF7, 0x00, 0x6C, 0xAB, 0xED, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0xDC, 0x9A, -0x0D, 0xEE, 0x80, 0x18, 0xFF, 0x3C, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x38, 0x6C, 0x18, 0xF0, -0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0xA9, 0x21, -0x38, 0x6C, 0x01, 0xF4, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0xA9, 0x21, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x38, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, -0x80, 0x18, 0xA9, 0x21, 0x38, 0x6C, 0x00, 0xF3, -0x00, 0x6D, 0x03, 0x6E, 0x80, 0x18, 0xA9, 0x21, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x05, 0x22, 0x80, 0x18, 0xD5, 0x21, 0x80, 0x18, -0xCC, 0x21, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xCF, 0xF6, 0xC4, 0x9A, 0x01, 0x6D, 0x38, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0xA9, 0x21, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x00, 0x6A, 0x09, 0xD5, -0x27, 0x67, 0xA0, 0x9E, 0x1F, 0xF7, 0x00, 0x6B, -0xAC, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, -0x08, 0x2B, 0x30, 0xF0, 0x20, 0x6D, 0x60, 0x9E, -0x43, 0xF1, 0xBC, 0x9D, 0x6D, 0xE5, 0x60, 0x9B, -0x06, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x60, 0x9B, 0xB5, 0xE3, 0x60, 0x9D, 0x55, 0xE4, -0x04, 0x4A, 0x0C, 0x72, 0x60, 0xDD, 0x04, 0x4E, -0xE4, 0x61, 0x00, 0x68, 0x09, 0xE1, 0x80, 0xAA, -0x01, 0x6D, 0xAB, 0xED, 0x80, 0x18, 0x72, 0x3C, -0x09, 0x94, 0x0D, 0xE4, 0x04, 0x48, 0x2C, 0x70, -0x40, 0xDB, 0xF4, 0x61, 0x07, 0x97, 0x06, 0x91, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x21, 0x6A, 0x71, 0xF0, 0x44, 0xA2, +0x1E, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF1, 0xAC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x63, 0xF6, 0x1C, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF3, +0x2C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, +0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, 0x04, 0x6C, +0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF1, 0x44, 0x9A, 0x01, 0x6B, +0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x68, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0xA4, 0xF1, 0xB8, 0x9B, 0x23, 0xF6, 0x04, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xC4, 0xF4, 0xA4, 0x9B, +0xC3, 0xF4, 0x10, 0x6C, 0x07, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, 0xA4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF5, 0x00, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6E, 0xCB, 0xEE, 0xA6, 0x67, 0x23, 0xF4, +0x18, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, +0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xC4, 0xF4, 0xA8, 0x9B, +0x21, 0xF0, 0x04, 0x6C, 0x03, 0x6E, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF3, 0xF4, 0x9B, 0xFF, 0x6A, 0x04, 0x6B, +0xC0, 0xA7, 0x4C, 0xED, 0x4C, 0xEC, 0x4C, 0xEE, +0xCD, 0xEB, 0x4C, 0xEB, 0x60, 0xC7, 0x06, 0x2D, +0x07, 0x6B, 0x07, 0x24, 0x01, 0x74, 0x07, 0x6B, +0x12, 0x61, 0x0C, 0x10, 0x07, 0x2C, 0x79, 0x6B, +0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF4, +0x4C, 0x9A, 0x08, 0x10, 0x01, 0x74, 0x07, 0x61, +0x79, 0x6B, 0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF4, 0x50, 0x9A, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF3, 0x54, 0x9A, 0xC0, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6E, 0x30, 0xF0, +0x20, 0x68, 0xCC, 0xEC, 0xC0, 0xF3, 0x44, 0x98, +0xAC, 0xEE, 0x01, 0x69, 0x08, 0x6B, 0x2B, 0xE9, +0xC4, 0x36, 0x04, 0xD4, 0xB1, 0x67, 0x03, 0xF3, +0x00, 0x6C, 0x6D, 0xEE, 0x40, 0xEA, 0x04, 0x92, +0x12, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x03, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xC3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, +0xC4, 0xF4, 0xD4, 0x9B, 0x11, 0x10, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x0C, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC4, 0xF4, +0xD8, 0x9B, 0xC3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, +0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0x30, 0xF0, 0x20, 0x68, 0xC3, 0xF3, 0x18, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x0C, 0x6C, 0x06, 0xF0, 0x00, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, +0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF2, 0xB4, 0x9A, 0x02, 0xF7, 0x00, 0x6C, +0x80, 0x18, 0x59, 0x3A, 0x20, 0x6B, 0x4C, 0xEB, +0x0A, 0x2B, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, +0x0A, 0x70, 0xEC, 0x61, 0x0A, 0x68, 0x50, 0x67, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0xF7, 0x1F, 0x68, 0x8C, 0xE8, 0x80, 0x18, +0xEF, 0x1E, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF4, +0xDC, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x0D, 0xEE, +0xB1, 0x67, 0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, +0x6E, 0x3A, 0xB1, 0x67, 0x02, 0xF7, 0x08, 0x6C, +0x80, 0x18, 0x59, 0x3A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEC, 0xCC, 0xEA, -0x4B, 0xEA, 0xC0, 0xF7, 0x42, 0x32, 0x30, 0xF0, -0x20, 0x68, 0x44, 0x32, 0xC0, 0xF3, 0x64, 0x98, -0x06, 0xD5, 0x04, 0xD2, 0xA4, 0x36, 0x08, 0x6A, -0x01, 0x6D, 0x05, 0xD4, 0x4D, 0xEE, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x05, 0x92, -0x0A, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0xE3, 0xF4, -0xA4, 0x9B, 0x03, 0x6E, 0x09, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF4, -0xA4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF2, -0xA4, 0x9B, 0xC3, 0xF3, 0x14, 0x69, 0x91, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF4, 0xB8, 0x9B, -0x91, 0x67, 0x10, 0x6E, 0x40, 0xEA, 0x05, 0x92, -0x22, 0x69, 0x06, 0x93, 0x38, 0xEA, 0x44, 0x6A, -0x12, 0xE9, 0x58, 0xEB, 0x04, 0x93, 0x12, 0xEA, -0x45, 0xE1, 0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, -0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x21, 0xE2, 0x25, 0xE2, 0x00, 0x6A, -0xA8, 0xF5, 0x1C, 0x48, 0xC8, 0xF6, 0x0C, 0x49, -0x04, 0xD2, 0x04, 0x93, 0x01, 0x6D, 0xC3, 0xF3, -0x18, 0x6C, 0x68, 0x36, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x7C, 0x9B, 0xAB, 0xED, 0x6D, 0xEE, -0x40, 0xEA, 0x01, 0x6D, 0xE3, 0xF3, 0x1C, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0x72, 0x3C, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF4, 0x60, 0x9B, 0x4C, 0xEB, -0x62, 0x33, 0x62, 0x33, 0x60, 0xC8, 0xE1, 0xF7, -0x1F, 0x6B, 0x4C, 0xEB, 0x04, 0x92, 0x60, 0xC9, -0x02, 0x48, 0x01, 0x4A, 0x11, 0x72, 0x04, 0xD2, -0x02, 0x49, 0xD7, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF4, 0xA4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0xC3, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0xF7, 0x1F, 0x68, 0x25, 0x67, 0x0C, 0xD6, +0x8C, 0xE8, 0x37, 0x25, 0x61, 0x45, 0x00, 0x6A, +0x0E, 0x2B, 0x80, 0x18, 0xEF, 0x1E, 0x01, 0x69, +0x0C, 0x96, 0x2B, 0xE9, 0x02, 0xF7, 0x04, 0x6C, +0xB1, 0x67, 0x80, 0x18, 0x6E, 0x3A, 0x02, 0xF7, +0x00, 0x6C, 0xB1, 0x67, 0x1F, 0x10, 0x71, 0x67, +0x66, 0xEA, 0x01, 0x6C, 0x8C, 0xEB, 0x04, 0x2B, +0x01, 0x4A, 0x20, 0x72, 0xF8, 0x61, 0x00, 0x6A, +0x90, 0x67, 0x04, 0xD2, 0x2F, 0xE9, 0x80, 0x18, +0xFE, 0x1E, 0x4C, 0xE9, 0x80, 0x18, 0xEF, 0x1E, +0x0C, 0x96, 0x04, 0x92, 0x01, 0x6D, 0x02, 0xF7, +0x04, 0x6C, 0xC4, 0xEA, 0xAB, 0xED, 0x2D, 0xEE, +0x80, 0x18, 0x6E, 0x3A, 0x01, 0x6D, 0x02, 0xF7, +0x00, 0x6C, 0xAB, 0xED, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF4, 0xC0, 0x9A, 0x0D, 0xEE, 0x80, 0x18, +0x6E, 0x3A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x38, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, +0x80, 0x18, 0x0E, 0x1F, 0x38, 0x6C, 0x01, 0xF4, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0x0E, 0x1F, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x38, 0x6C, 0x06, 0xF0, +0x00, 0x6D, 0x03, 0x6E, 0x80, 0x18, 0x0E, 0x1F, +0x38, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, +0x80, 0x18, 0x0E, 0x1F, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0xFF, 0x6A, 0x8C, 0xEA, 0x05, 0x22, 0x80, 0x18, +0x3A, 0x1F, 0x80, 0x18, 0x31, 0x1F, 0x09, 0x10, +0x30, 0xF0, 0x21, 0x6A, 0x71, 0xF0, 0xDC, 0x9A, +0x01, 0x6D, 0x38, 0x6C, 0xAB, 0xED, 0x80, 0x18, +0x0E, 0x1F, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x00, 0x6A, 0x09, 0xD5, 0x27, 0x67, 0xA0, 0x9E, +0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEB, 0x02, 0xF0, +0x00, 0x73, 0x01, 0x60, 0x08, 0x2B, 0x30, 0xF0, +0x20, 0x6D, 0x60, 0x9E, 0x84, 0xF0, 0xB0, 0x9D, +0x6D, 0xE5, 0x60, 0x9B, 0x06, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF0, 0x74, 0x9B, 0xB5, 0xE3, +0x60, 0x9D, 0x55, 0xE4, 0x04, 0x4A, 0x0C, 0x72, +0x60, 0xDD, 0x04, 0x4E, 0xE4, 0x61, 0x00, 0x68, +0x09, 0xE1, 0x80, 0xAA, 0x01, 0x6D, 0xAB, 0xED, +0x80, 0x18, 0xE1, 0x39, 0x09, 0x94, 0x0D, 0xE4, +0x04, 0x48, 0x2C, 0x70, 0x40, 0xDB, 0xF4, 0x61, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xFF, 0x6A, 0x24, 0x67, 0xA6, 0xF6, 0x00, 0x48, -0x4C, 0xED, 0x4C, 0xE9, 0x68, 0xF4, 0x45, 0xA0, -0x06, 0xD5, 0x24, 0x36, 0x07, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x9A, 0x01, 0x6D, -0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF4, 0xA4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x68, 0xF4, 0x44, 0xA0, -0x4B, 0x2A, 0x06, 0x92, 0x03, 0x22, 0x12, 0x6A, -0x68, 0xF4, 0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0x0F, 0xF3, 0xCA, 0xA3, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, -0xFF, 0x6D, 0x40, 0xEA, 0x01, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0xFC, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0xAE, 0xF7, 0x18, 0x4B, -0x83, 0x67, 0xB1, 0x67, 0xDE, 0x6E, 0x06, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x06, 0x94, 0xE1, 0xF7, -0x1F, 0x6F, 0x20, 0x6A, 0xB1, 0x67, 0x56, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0x02, 0x6D, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF5, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x23, 0xF3, 0x04, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0x18, 0x6E, 0x49, 0x10, -0x06, 0x92, 0x03, 0x22, 0x12, 0x6A, 0x68, 0xF4, -0x4A, 0xC0, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0xFC, 0x9A, 0x30, 0xF0, -0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, 0x90, 0x67, -0xB1, 0x67, 0xDE, 0x6E, 0x80, 0x18, 0xE1, 0x4E, -0xE1, 0xF7, 0x1F, 0x6F, 0x90, 0x67, 0x00, 0x6A, -0xB1, 0x67, 0x56, 0x6E, 0x30, 0xF0, 0x20, 0x68, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6B, 0x0F, 0xF3, 0xCA, 0xA3, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, +0x4C, 0xEC, 0xCC, 0xEA, 0x4B, 0xEA, 0xC0, 0xF7, +0x42, 0x32, 0x30, 0xF0, 0x20, 0x68, 0x44, 0x32, +0xC0, 0xF3, 0x64, 0x98, 0x06, 0xD5, 0x04, 0xD2, +0xA4, 0x36, 0x08, 0x6A, 0x01, 0x6D, 0x05, 0xD4, +0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEB, 0x05, 0x92, 0x0A, 0x2A, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0x00, 0x6C, 0xE4, 0xF3, 0xBC, 0x9B, 0x03, 0x6E, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xE4, 0xF3, 0xBC, 0x9B, 0x23, 0xF3, +0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x64, 0xF1, 0xBC, 0x9B, 0xC3, 0xF3, +0x14, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0xC4, 0xF3, 0xB0, 0x9B, 0x91, 0x67, 0x10, 0x6E, +0x40, 0xEA, 0x05, 0x92, 0x22, 0x69, 0x06, 0x93, +0x38, 0xEA, 0x44, 0x6A, 0x12, 0xE9, 0x58, 0xEB, +0x04, 0x93, 0x12, 0xEA, 0x45, 0xE1, 0x88, 0x6A, +0x58, 0xEB, 0x12, 0xEA, 0x45, 0xE1, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x21, 0xE2, +0x25, 0xE2, 0x00, 0x6A, 0x08, 0xF4, 0x04, 0x48, +0x08, 0xF5, 0x14, 0x49, 0x04, 0xD2, 0x04, 0x93, +0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0x68, 0x36, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x74, 0x9B, +0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x01, 0x6D, +0xE3, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x80, 0x18, +0xE1, 0x39, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, +0x78, 0x9B, 0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, +0x60, 0xC8, 0xE1, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, +0x04, 0x92, 0x60, 0xC9, 0x02, 0x48, 0x01, 0x4A, +0x11, 0x72, 0x04, 0xD2, 0x02, 0x49, 0xD7, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0xBC, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6A, 0x24, 0x67, +0x08, 0xF2, 0x10, 0x48, 0x4C, 0xED, 0x4C, 0xE9, +0xA8, 0xF2, 0x4D, 0xA0, 0x06, 0xD5, 0x24, 0x36, +0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x9A, 0x01, 0x6D, 0x08, 0x6A, 0x4D, 0xEE, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0xBC, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0xA8, 0xF2, 0x4C, 0xA0, 0x4B, 0x2A, 0x06, 0x92, +0x03, 0x22, 0x12, 0x6A, 0xA8, 0xF2, 0x52, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x21, 0x6B, +0xD0, 0xF4, 0xC2, 0xA3, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, +0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0xF0, 0x9A, 0x30, 0xF0, 0x21, 0x6B, +0x70, 0xF1, 0x08, 0x4B, 0x83, 0x67, 0xB1, 0x67, +0xDE, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x06, 0x94, 0xE1, 0xF7, 0x1F, 0x6F, 0x20, 0x6A, +0xB1, 0x67, 0x56, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0x02, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF5, 0xC4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF4, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x38, 0x6E, 0x40, 0xEA, 0x07, 0x93, 0x06, 0x73, -0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, -0x1F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x06, 0xD2, 0xA6, 0xF6, 0x00, 0x4B, 0x68, 0xF4, -0x45, 0xA3, 0x07, 0xD3, 0x06, 0x93, 0x30, 0xF0, -0x20, 0x68, 0x08, 0xD2, 0x64, 0x31, 0x08, 0x6A, -0x4D, 0xE9, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0x14, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x3F, 0x6D, 0xC5, 0x67, -0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0x14, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x00, 0x69, 0x91, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, -0x07, 0x93, 0x68, 0xF4, 0x44, 0xA3, 0x11, 0x2A, -0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x69, 0x06, 0x95, 0xC3, 0xF1, -0xFC, 0x9A, 0xAE, 0xF7, 0x18, 0x49, 0x91, 0x67, -0xDE, 0x6E, 0x80, 0x18, 0xE1, 0x4E, 0x20, 0x6A, -0x10, 0x10, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x69, 0x06, 0x95, -0xC3, 0xF1, 0xFC, 0x9A, 0xAE, 0xF7, 0x18, 0x49, -0x91, 0x67, 0xDE, 0x6E, 0x80, 0x18, 0xE1, 0x4E, -0x00, 0x6A, 0x06, 0x95, 0x91, 0x67, 0x56, 0x6E, -0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, -0x0C, 0x6C, 0xFF, 0x6D, 0x12, 0x6E, 0x40, 0xEA, -0x08, 0x92, 0x06, 0x72, 0x0A, 0x61, 0x30, 0xF0, +0x18, 0x6E, 0x49, 0x10, 0x06, 0x92, 0x03, 0x22, +0x12, 0x6A, 0xA8, 0xF2, 0x52, 0xC0, 0x01, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, +0xF0, 0x9A, 0x30, 0xF0, 0x21, 0x68, 0x70, 0xF1, +0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, 0xDE, 0x6E, +0x80, 0x18, 0xF0, 0x53, 0xE1, 0xF7, 0x1F, 0x6F, +0x90, 0x67, 0x00, 0x6A, 0xB1, 0x67, 0x56, 0x6E, +0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x21, 0x6B, 0xD0, 0xF4, +0xC2, 0xA3, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0x0C, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x18, 0x6C, 0x02, 0x6D, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF4, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0x23, 0xF3, 0x04, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, +0x07, 0x93, 0x06, 0x73, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x08, 0x6E, -0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, -0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xFF, 0x68, 0x68, 0xF4, 0x65, 0xA2, 0x8C, 0xE8, -0x06, 0xD2, 0x04, 0x32, 0x07, 0xD2, 0x08, 0xD3, -0x07, 0x93, 0x30, 0xF0, 0x20, 0x69, 0x08, 0x6A, -0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, -0xC3, 0x67, 0x07, 0xD3, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0x3F, 0x6D, 0xC5, 0x67, -0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, +0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x06, 0xD2, 0x08, 0xF2, +0x10, 0x4B, 0xA8, 0xF2, 0x4D, 0xA3, 0x07, 0xD3, +0x06, 0x93, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xD2, +0x64, 0x31, 0x08, 0x6A, 0x4D, 0xE9, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, -0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, -0x00, 0x6C, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, -0x40, 0xEA, 0x06, 0x92, 0x68, 0xF4, 0x44, 0xA2, -0x06, 0xD2, 0x5B, 0x2A, 0x07, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, 0xE8, 0x9A, -0x30, 0xF0, 0x20, 0x69, 0xAE, 0xF7, 0x18, 0x49, -0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, -0xE1, 0x4E, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0x9E, 0x6E, 0x20, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x1C, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x10, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, -0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x1C, 0x4B, 0xE0, 0x9B, -0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x06, 0x92, -0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x01, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x04, 0x6A, -0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x06, 0x93, -0x5A, 0x10, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF5, 0xE8, 0x9A, 0x30, 0xF0, -0x20, 0x69, 0xAE, 0xF7, 0x18, 0x49, 0x91, 0x67, -0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0xE1, 0x4E, -0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, -0x20, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, -0x00, 0xF4, 0x00, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x1C, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6B, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x1C, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, -0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x33, 0x6E, 0xE2, 0x67, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x04, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6B, 0x91, 0x67, -0x30, 0xF0, 0x20, 0x69, 0xB0, 0x67, 0xEF, 0x6E, -0x04, 0x6F, 0xAE, 0xF7, 0x18, 0x49, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0x0F, 0xF3, 0x44, 0xA2, 0x01, 0x22, 0x20, 0x6A, -0x7F, 0x6F, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, -0x30, 0xF0, 0x20, 0x69, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF3, -0x0C, 0x6C, 0xFF, 0x6D, 0x09, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x0C, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xB0, 0x67, 0x10, 0x6F, -0x01, 0x6A, 0xAE, 0xF7, 0x18, 0x4C, 0xEF, 0x6E, -0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, -0xFF, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x08, 0x92, -0x06, 0x72, 0x08, 0x61, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x08, 0x6E, 0x07, 0x10, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x38, 0x6E, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x68, 0xF4, 0x65, 0xA2, 0x30, 0xF0, 0x20, 0x68, -0xFF, 0x69, 0x8C, 0xE9, 0x07, 0xD3, 0xC0, 0xF3, -0x64, 0x98, 0x06, 0xD2, 0x24, 0x36, 0x08, 0x6A, -0x01, 0x6D, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x20, 0x6B, 0xA4, 0xF4, 0x1C, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, +0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF5, 0xCC, 0x9B, 0x01, 0x6D, 0x23, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x06, 0x93, -0x68, 0xF4, 0x44, 0xA3, 0x03, 0x2A, 0x81, 0xF0, -0x07, 0x4A, 0x02, 0x10, 0xC1, 0xF0, 0x0A, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, 0x18, 0x4C, -0xB1, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0xC0, 0xF3, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x69, +0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0xE0, 0xF3, 0x00, 0x6D, +0x12, 0x6E, 0x40, 0xEA, 0x07, 0x93, 0xA8, 0xF2, +0x4C, 0xA3, 0x11, 0x2A, 0x01, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x21, 0x69, +0x06, 0x95, 0x04, 0xF1, 0xF0, 0x9A, 0x70, 0xF1, +0x08, 0x49, 0x91, 0x67, 0xDE, 0x6E, 0x80, 0x18, +0xF0, 0x53, 0x20, 0x6A, 0x10, 0x10, 0x01, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x21, 0x69, 0x06, 0x95, 0x04, 0xF1, 0xF0, 0x9A, +0x70, 0xF1, 0x08, 0x49, 0x91, 0x67, 0xDE, 0x6E, +0x80, 0x18, 0xF0, 0x53, 0x00, 0x6A, 0x06, 0x95, +0x91, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, -0x09, 0x6E, 0x40, 0xEA, 0x07, 0x92, 0x06, 0x72, +0x12, 0x6E, 0x40, 0xEA, 0x08, 0x92, 0x06, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x08, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xFF, 0x68, 0x8C, 0xE8, 0x68, 0xF4, 0x65, 0xA2, -0x06, 0xD2, 0x04, 0x32, 0x07, 0xD2, 0x08, 0xD3, -0x07, 0x93, 0x30, 0xF0, 0x20, 0x69, 0x08, 0x6A, -0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, -0xC3, 0x67, 0x07, 0xD3, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x99, -0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0x3F, 0x6D, 0xC5, 0x67, -0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, -0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x30, 0xF0, -0x20, 0x69, 0xAE, 0xF7, 0x18, 0x49, 0x23, 0xF3, -0x00, 0x6C, 0xE0, 0xF3, 0x00, 0x6D, 0x12, 0x6E, -0x40, 0xEA, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0xDF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x00, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0x9E, 0x6E, 0x20, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x06, 0x93, 0x68, 0xF4, -0x64, 0xA3, 0x06, 0xD3, 0x35, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x1C, 0x4B, 0xE0, 0x9B, -0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x81, 0xF0, -0x07, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, +0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xFF, 0x68, 0xA8, 0xF2, +0x6D, 0xA2, 0x8C, 0xE8, 0x06, 0xD2, 0x04, 0x32, +0x07, 0xD2, 0x08, 0xD3, 0x07, 0x93, 0x30, 0xF0, +0x20, 0x69, 0x08, 0x6A, 0x4D, 0xEB, 0xC0, 0xF3, +0x44, 0x99, 0x01, 0x6D, 0xC3, 0x67, 0x07, 0xD3, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF3, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x07, 0x96, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, 0xE0, 0xF3, +0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x06, 0x92, +0xA8, 0xF2, 0x4C, 0xA2, 0x06, 0xD2, 0x5B, 0x2A, +0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF4, 0xEC, 0x9A, 0x30, 0xF0, 0x21, 0x69, +0x70, 0xF1, 0x08, 0x49, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x6E, 0x80, 0x18, 0xF0, 0x53, 0x01, 0x6B, +0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x01, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, +0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x10, 0x4A, +0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x10, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x1C, 0x4A, 0x06, 0x93, 0xE0, 0x9A, 0x91, 0x67, -0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, +0xF0, 0x53, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, +0x10, 0x4B, 0xE0, 0x9B, 0x06, 0x92, 0x91, 0x67, +0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, +0x33, 0x6E, 0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x06, 0x93, 0x04, 0xD3, 0x3C, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x1C, 0x4B, +0xF0, 0x53, 0x06, 0x93, 0x5A, 0x10, 0x07, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF4, +0xEC, 0x9A, 0x30, 0xF0, 0x21, 0x69, 0x70, 0xF1, +0x08, 0x49, 0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, +0x80, 0x18, 0xF0, 0x53, 0x01, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x01, 0x6B, 0x91, 0x67, +0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, 0x00, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF1, 0x10, 0x4B, 0xE0, 0x9B, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x00, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, +0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0x10, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x61, 0xF0, 0x08, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x1C, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6B, 0x91, 0x67, -0xB0, 0x67, 0x33, 0x6E, 0x01, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x04, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6A, 0x04, 0xD2, -0x91, 0x67, 0x30, 0xF0, 0x20, 0x69, 0xB0, 0x67, -0xEF, 0x6E, 0x04, 0x6F, 0xAE, 0xF7, 0x18, 0x49, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0x0F, 0xF3, 0x44, 0xA2, 0x01, 0x22, 0x20, 0x6A, -0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, 0x7F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, +0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, +0xE2, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, +0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6B, 0x91, 0x67, 0x30, 0xF0, 0x21, 0x69, +0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, 0x70, 0xF1, +0x08, 0x49, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, +0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x21, 0x6A, 0xB0, 0xF4, 0x5C, 0xA2, +0x01, 0x22, 0x20, 0x6A, 0x7F, 0x6F, 0x91, 0x67, +0xB0, 0x67, 0x33, 0x6E, 0x30, 0xF0, 0x20, 0x69, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0xC0, 0xF3, +0x44, 0x99, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, +0x09, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, +0x38, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x21, 0x6C, +0xB0, 0x67, 0x10, 0x6F, 0x01, 0x6A, 0x70, 0xF1, +0x08, 0x4C, 0xEF, 0x6E, 0x30, 0xF0, 0x20, 0x68, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x12, 0x6E, +0x40, 0xEA, 0x08, 0x92, 0x06, 0x72, 0x08, 0x61, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x08, 0x6E, 0x07, 0x10, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x0C, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA8, 0xF2, 0x6D, 0xA2, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0x69, 0x8C, 0xE9, +0x07, 0xD3, 0xC0, 0xF3, 0x64, 0x98, 0x06, 0xD2, +0x24, 0x36, 0x08, 0x6A, 0x01, 0x6D, 0x4D, 0xEE, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xE4, 0xF4, 0xD0, 0x9B, +0x01, 0x6D, 0x23, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x06, 0x93, 0xA8, 0xF2, 0x4C, 0xA3, +0x03, 0x2A, 0x81, 0xF0, 0x07, 0x4A, 0x02, 0x10, +0xC1, 0xF0, 0x0A, 0x6A, 0x30, 0xF0, 0x21, 0x6C, +0x70, 0xF1, 0x08, 0x4C, 0xB1, 0x67, 0x56, 0x6E, +0xE1, 0xF7, 0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x09, 0x6E, 0x40, 0xEA, -0x08, 0x93, 0x06, 0x73, 0x0A, 0x61, 0x30, 0xF0, +0x07, 0x92, 0x06, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x08, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, @@ -66465,415 +67492,467 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x1F, 0x6D, 0x38, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x14, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, -0x20, 0x68, 0x00, 0x69, 0xAE, 0xF7, 0x18, 0x48, -0x0E, 0xD4, 0x0F, 0xD5, 0x90, 0x67, 0xB1, 0x67, -0xEF, 0x6E, 0x04, 0xD1, 0x80, 0x18, 0xE1, 0x4E, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, -0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0xEF, 0x6E, -0x04, 0xD1, 0x80, 0x18, 0xE1, 0x4E, 0x0E, 0x90, -0x0F, 0x91, 0x00, 0x6A, 0x07, 0xD2, 0x30, 0xF0, -0x20, 0x6B, 0xAE, 0xF7, 0x18, 0x4B, 0x06, 0xD3, -0x40, 0x99, 0xC0, 0x98, 0x83, 0x67, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, -0xE0, 0x9A, 0x00, 0x6D, 0x80, 0x18, 0xE1, 0x4E, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, -0xC0, 0x98, 0x41, 0x99, 0xE0, 0x9B, 0x06, 0x94, -0x01, 0x6D, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x07, 0x92, 0x04, 0x48, 0x08, 0x49, 0x01, 0x4A, -0x07, 0xD2, 0x07, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, -0x03, 0x73, 0x58, 0x67, 0x07, 0xD3, 0x08, 0xD2, -0xD6, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x1C, 0x9A, 0x06, 0x94, 0x78, 0x67, 0xF0, 0x67, -0x00, 0x6D, 0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x08, 0x92, 0x06, 0x94, 0xF0, 0x67, -0x01, 0x6D, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, -0x07, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF5, 0xB4, 0x9B, -0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, 0x18, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x34, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x0C, 0x4A, 0x40, 0x9A, 0x30, 0xF0, -0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, 0x90, 0x67, -0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x04, 0x6B, 0x90, 0x67, -0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x90, 0x67, 0xF1, 0x67, -0x03, 0x6A, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF5, 0x50, 0x9A, 0x90, 0x67, 0xF1, 0x67, -0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, -0xF1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0x0C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, -0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x04, 0x6B, 0x90, 0x67, 0x01, 0x6D, -0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, -0x54, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, -0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, -0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x0C, 0x4B, -0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, -0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x90, 0x67, 0x06, 0x6A, 0x00, 0x6D, 0x33, 0x6E, -0x0F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x03, 0x6B, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, -0x3E, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, 0x58, 0x9A, -0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6A, -0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, 0xEF, 0x6E, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF2, 0x0C, 0x4B, 0x60, 0x9B, -0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, -0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, 0x90, 0x67, -0x06, 0x6A, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF5, 0x5C, 0x9A, 0x90, 0x67, -0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6B, 0x90, 0x67, -0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x0C, 0x4A, 0x40, 0x9A, 0x90, 0x67, -0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x07, 0x6B, 0x90, 0x67, -0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x90, 0x67, 0xF1, 0x67, -0x03, 0x6A, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF6, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, -0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, -0xF1, 0x67, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0x0C, 0x4A, 0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, -0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x07, 0x6B, 0x90, 0x67, 0x01, 0x6D, -0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF6, -0x44, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, -0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, -0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, -0x19, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x90, 0x67, 0xF1, 0x67, 0x00, 0x6A, 0x01, 0x6D, -0x19, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x4C, 0xED, 0x06, 0xD4, 0x07, 0xD5, 0x01, 0x68, -0x00, 0x69, 0x85, 0xF5, 0x1C, 0x6C, 0xFF, 0x6D, -0x80, 0x18, 0x72, 0x3C, 0x55, 0x72, 0x11, 0x61, -0x07, 0x92, 0x03, 0x2A, 0x00, 0x68, 0x50, 0x67, -0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF4, -0xA8, 0x9A, 0x03, 0xF3, 0x08, 0x6C, 0xFF, 0x68, -0x80, 0x18, 0x72, 0x3C, 0x4C, 0xE8, 0x00, 0x6A, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x64, 0x6C, 0x01, 0x49, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0x01, 0x6A, -0xA1, 0xF3, 0x18, 0x59, 0x02, 0x61, 0x01, 0x68, -0x01, 0x10, 0xD7, 0x2A, 0x06, 0x95, 0x30, 0xF0, -0x20, 0x69, 0xAE, 0xF7, 0x18, 0x49, 0x91, 0x67, -0x00, 0x6A, 0x8F, 0x6E, 0x08, 0xF0, 0x00, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x95, -0xE3, 0xF5, 0xE8, 0x9A, 0x91, 0x67, 0x00, 0x6E, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x30, 0xF0, -0x20, 0x69, 0x40, 0xEA, 0x06, 0x92, 0x01, 0x6D, -0x08, 0x6B, 0x44, 0x36, 0xC0, 0xF3, 0x44, 0x99, -0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, -0x40, 0xEA, 0x0A, 0x28, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, 0x00, 0x6C, -0xC3, 0xF4, 0xB4, 0x9B, 0x02, 0x6E, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, -0xC3, 0xF4, 0xB4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, -0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x00, 0x6A, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x05, 0xD5, -0x04, 0xD4, 0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x14, 0x4B, 0xE0, 0x9B, 0xC0, 0x9A, -0x30, 0xF0, 0x20, 0x69, 0xAE, 0xF7, 0x18, 0x49, -0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x9C, 0x4E, -0x04, 0x93, 0x91, 0x67, 0x01, 0x6D, 0x40, 0xDB, -0x05, 0x92, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x14, 0x4B, 0xE0, 0x9B, 0xC0, 0x9A, 0x01, 0x48, -0x80, 0x18, 0x9C, 0x4E, 0x04, 0x93, 0x41, 0xDB, -0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x08, 0x4B, -0x03, 0x70, 0x04, 0x4A, 0x05, 0xD2, 0x04, 0xD3, -0xD8, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x04, 0x67, -0x30, 0xF0, 0x20, 0x6A, 0x2C, 0xE8, 0xC0, 0xF3, -0x44, 0x9A, 0x08, 0x6B, 0x04, 0x36, 0x01, 0x6D, -0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, -0x18, 0x4C, 0xB0, 0x67, 0x58, 0x6E, 0x80, 0x18, -0x9C, 0x4E, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF6, -0x68, 0x9B, 0x4C, 0xEB, 0x62, 0x33, 0x7A, 0x33, -0x2C, 0xEB, 0x0B, 0x23, 0x3F, 0x73, 0x09, 0x60, -0x07, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x62, 0x32, -0x2C, 0xEA, 0x03, 0x22, 0x3F, 0x72, 0x00, 0x6A, -0x56, 0x61, 0x30, 0xF0, 0x20, 0x69, 0xAE, 0xF7, -0x18, 0x49, 0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x57, 0x6E, 0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF3, -0x44, 0xA2, 0x01, 0x22, 0x20, 0x6A, 0x91, 0x67, -0x30, 0xF0, 0x20, 0x69, 0xAE, 0xF7, 0x18, 0x49, -0xB0, 0x67, 0x33, 0x6E, 0x7F, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x20, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x08, 0x6E, 0x07, 0xF7, 0x00, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF6, 0xE8, 0x9A, 0x20, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x14, 0x4A, 0xE0, 0x9A, 0x91, 0x67, -0xB0, 0x67, 0x08, 0x6E, 0x80, 0x18, 0x9C, 0x4E, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, -0xE0, 0x9B, 0x91, 0x67, 0xB0, 0x67, 0x58, 0x6E, -0x80, 0x18, 0x9C, 0x4E, 0x00, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6A, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x68, 0x0C, 0xEC, 0x01, 0x74, 0xAC, 0xE8, -0x80, 0xF0, 0x0E, 0x60, 0x07, 0x24, 0x02, 0x74, -0xA0, 0xF0, 0x00, 0x60, 0x03, 0x74, 0xA0, 0xF0, -0x01, 0x60, 0xA5, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE8, 0xF7, 0x64, 0x9A, -0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, 0x20, 0x6C, -0xE8, 0xF7, 0x68, 0xDA, 0x30, 0xF0, 0x20, 0x6F, -0x30, 0xF0, 0x20, 0x6B, 0x8F, 0xF6, 0x1C, 0x4D, -0x8F, 0xF6, 0x14, 0x4C, 0x8F, 0xF6, 0x10, 0x4B, -0x6F, 0xF4, 0x1E, 0x4F, 0x00, 0x69, 0x40, 0x9D, -0xE4, 0xF3, 0x0C, 0x41, 0x04, 0x30, 0x42, 0xDD, -0x40, 0xAC, 0x05, 0xD7, 0x42, 0xCC, 0x40, 0xA3, -0x42, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x01, 0xE2, 0x00, 0x6A, 0x04, 0x48, -0x04, 0xD2, 0x40, 0xA0, 0x22, 0x6E, 0x07, 0xD3, -0x44, 0xC0, 0x04, 0x92, 0xD8, 0xEA, 0x44, 0x6A, -0x12, 0xEE, 0x58, 0xE9, 0x12, 0xEA, 0x49, 0xE6, -0x30, 0xF0, 0x20, 0x6E, 0xA6, 0xF6, 0x00, 0x4E, -0x1A, 0x65, 0x49, 0xE6, 0xA8, 0xF5, 0x1C, 0x4A, -0x06, 0xD2, 0x58, 0x67, 0x59, 0xE6, 0x06, 0x92, -0xC8, 0xF6, 0x0C, 0x4E, 0x60, 0xAA, 0x80, 0xF0, -0x68, 0xCA, 0x60, 0xAE, 0x02, 0x4A, 0x80, 0xF0, -0x68, 0xCE, 0x05, 0x93, 0x02, 0x4E, 0x6A, 0xEA, -0xF5, 0x61, 0x04, 0x92, 0x07, 0x93, 0x01, 0x48, -0x01, 0x4A, 0x04, 0xD2, 0x05, 0x92, 0x22, 0x4A, -0x05, 0xD2, 0x04, 0x92, 0x02, 0x72, 0xD1, 0x61, -0x01, 0x49, 0x02, 0x71, 0x04, 0x4D, 0x02, 0x4C, -0x01, 0x4B, 0x44, 0x4F, 0xB8, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x8F, 0xF6, 0x10, 0x4B, 0x44, 0x43, -0xA7, 0x43, 0x16, 0x4D, 0xC2, 0x67, 0x00, 0x6C, -0x80, 0xC3, 0x01, 0x4B, 0x00, 0x6C, 0xCA, 0xEB, -0x80, 0xCA, 0xFF, 0xF7, 0x88, 0xC2, 0x20, 0xF0, -0x85, 0xC2, 0xFF, 0xF7, 0x89, 0xC2, 0x20, 0xF0, -0x86, 0xC2, 0x80, 0xC5, 0x81, 0xC5, 0x82, 0xC5, -0x02, 0x4A, 0x03, 0x4D, 0xEC, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE8, 0xF7, -0x6C, 0x9A, 0xE8, 0xF7, 0x64, 0xDA, 0x1F, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0xF4, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xB0, 0x67, 0xAE, 0xF7, -0x18, 0x4C, 0x58, 0x6E, 0x80, 0x18, 0x9C, 0x4E, -0xE2, 0xF1, 0x1E, 0x48, 0x30, 0xF0, 0x20, 0x6B, -0x08, 0x30, 0xA6, 0xF6, 0x00, 0x4B, 0x6D, 0xE0, -0x41, 0xDB, 0x09, 0x10, 0x00, 0x6C, 0xB0, 0x67, -0xC4, 0x67, 0x03, 0x10, 0x01, 0x6C, 0xB0, 0x67, -0x00, 0x6E, 0x80, 0x18, 0x04, 0x22, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, -0x0E, 0x22, 0x08, 0x6A, 0x04, 0x31, 0x4D, 0xE9, -0x01, 0x6B, 0x44, 0x40, 0x64, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xAE, 0xF7, 0x18, 0x4A, 0x06, 0xD2, -0x6D, 0xE9, 0x06, 0x6A, 0x0D, 0x10, 0x08, 0x6A, -0x04, 0x31, 0x4D, 0xE9, 0x01, 0x6B, 0x44, 0x40, -0x64, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, -0x18, 0x4A, 0x06, 0xD2, 0x6D, 0xE9, 0x04, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, -0xE3, 0xF5, 0xE8, 0x9A, 0xB0, 0x67, 0x00, 0x6E, -0x80, 0x18, 0xE1, 0x4E, 0x06, 0x94, 0x08, 0xF0, -0x00, 0x6F, 0x01, 0x6B, 0x8F, 0x6E, 0xB0, 0x67, -0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0xDE, 0x21, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x46, 0x21, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x01, 0x6D, 0xD1, 0x67, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0xC1, 0x41, -0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, -0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xEF, 0x6E, 0x10, 0x6F, 0x00, 0x6A, 0xAE, 0xF7, -0x18, 0x4C, 0xB0, 0x67, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x01, 0x6D, 0x90, 0x67, 0x80, 0x18, -0x46, 0x21, 0x00, 0x6C, 0x80, 0x18, 0xDE, 0x21, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x67, 0x25, -0x22, 0x67, 0x04, 0x2A, 0x01, 0x6C, 0xB0, 0x67, -0x80, 0x18, 0x0A, 0x26, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x41, 0xE0, 0x68, 0xF4, -0x35, 0xC0, 0x51, 0x67, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xED, 0x4C, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF3, 0x45, 0xA2, -0x06, 0x6B, 0x08, 0xD5, 0x4E, 0xEB, 0x01, 0x5B, -0x98, 0x67, 0x07, 0xD4, 0x16, 0x2D, 0x04, 0x24, -0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, -0x04, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, -0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, 0x18, 0x4A, -0x08, 0x69, 0x06, 0xD2, 0x6D, 0xE9, 0x04, 0x6A, -0x19, 0x10, 0x08, 0x93, 0x01, 0x73, 0x22, 0x61, -0x07, 0x94, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, -0x01, 0x4A, 0x03, 0x10, 0x07, 0x4A, 0x04, 0x33, -0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, -0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xAE, 0xF7, 0x18, 0x4A, 0x08, 0x69, 0x06, 0xD2, -0x6D, 0xE9, 0x06, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0x94, 0xE3, 0xF5, 0xE8, 0x9A, -0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0xE1, 0x4E, -0x01, 0x6A, 0x25, 0x10, 0x08, 0x93, 0x00, 0x69, -0x02, 0x73, 0x2F, 0x61, 0x07, 0x94, 0x04, 0x24, -0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, -0x0A, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, -0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, 0x18, 0x4A, -0x06, 0xD2, 0x07, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x06, 0x94, 0xE3, 0xF5, 0xE8, 0x9A, -0x08, 0x69, 0xB0, 0x67, 0x00, 0x6E, 0x6D, 0xE9, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6A, 0x06, 0x94, -0xB0, 0x67, 0x8F, 0x6E, 0x08, 0xF0, 0x00, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, -0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0xDE, 0x21, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0xC0, 0xF3, 0x44, 0x9C, 0x01, 0x6D, 0xC1, 0x41, -0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, -0x01, 0x6C, 0x40, 0xEA, 0x01, 0x6D, 0x90, 0x67, -0x80, 0x18, 0x67, 0x25, 0x00, 0x6C, 0x06, 0xD2, -0x80, 0x18, 0xDE, 0x21, 0x04, 0x32, 0x09, 0xD2, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x09, 0x93, 0x01, 0x6D, 0x08, 0x6E, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, -0x08, 0x94, 0x1C, 0x2C, 0x7D, 0x67, 0x87, 0x43, -0x11, 0x4C, 0x60, 0xA4, 0x30, 0xF0, 0x20, 0x69, -0xE4, 0xF3, 0x4C, 0x40, 0x06, 0x94, 0x44, 0x32, -0xA6, 0xF6, 0x00, 0x49, 0x29, 0xE2, 0x64, 0xC2, -0x48, 0x2C, 0x07, 0x92, 0x09, 0x22, 0x01, 0x6D, -0x23, 0xF3, 0x18, 0x4C, 0xAB, 0xED, 0x80, 0x18, -0x72, 0x3C, 0x02, 0xF2, 0x0A, 0x48, 0x35, 0x10, -0x02, 0x6C, 0x38, 0x10, 0x08, 0x93, 0x02, 0x73, -0x38, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, -0x20, 0x69, 0xA6, 0xF6, 0x00, 0x49, 0xAE, 0xF7, -0x18, 0x4C, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, -0x9C, 0x4E, 0x68, 0xF4, 0x8A, 0xA1, 0xFF, 0x6B, -0x56, 0x32, 0x6C, 0xEA, 0x80, 0x34, 0xF4, 0xF3, -0x68, 0x40, 0x8D, 0xEA, 0x64, 0x33, 0x09, 0x94, -0x2D, 0xE3, 0x42, 0xCB, 0x7D, 0x67, 0x29, 0xE4, -0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, 0x06, 0x94, -0xC8, 0xF7, 0x7D, 0xC2, 0x12, 0x2C, 0x07, 0x92, -0x0C, 0x22, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x4C, -0xAB, 0xED, 0x80, 0x18, 0x72, 0x3C, 0x02, 0xF2, -0x0C, 0x48, 0x08, 0x30, 0x25, 0xE0, 0x41, 0xD9, -0x04, 0x10, 0x03, 0x6C, 0xB0, 0x67, 0x80, 0x18, -0x0A, 0x26, 0x06, 0x92, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, -0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, 0x4C, 0xED, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x68, 0xF4, 0x65, 0xA2, 0x0C, 0xD5, 0x00, 0x69, -0x0D, 0xD3, 0xF1, 0xF0, 0x6F, 0x40, 0x6C, 0x33, -0x69, 0xE2, 0x04, 0x4A, 0x0A, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xCF, 0xF6, 0x0C, 0x4A, 0x08, 0xD2, -0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0x14, 0x4A, 0xE0, 0x9A, 0xFF, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x2C, 0xEB, 0xAE, 0xF7, 0x18, 0x48, -0x90, 0x67, 0xA3, 0x67, 0xDF, 0x6E, 0x06, 0xD3, -0x80, 0x18, 0x9C, 0x4E, 0x10, 0x6B, 0x4D, 0xEB, -0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x14, 0x4B, 0xE0, 0x9B, 0x06, 0x95, 0x90, 0x67, -0xDF, 0x6E, 0x80, 0x18, 0xE1, 0x4E, 0x0A, 0x93, -0x06, 0x95, 0x90, 0x67, 0x40, 0x9B, 0x58, 0x6E, -0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, 0xE0, 0x9A, -0x80, 0x18, 0xE1, 0x4E, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0x6B, 0x24, 0x36, 0x01, 0x6D, 0x6D, 0xEE, +0x08, 0xF2, 0x10, 0x4A, 0xFF, 0x68, 0x8C, 0xE8, +0xA8, 0xF2, 0x6D, 0xA2, 0x06, 0xD2, 0x04, 0x32, +0x07, 0xD2, 0x08, 0xD3, 0x07, 0x93, 0x30, 0xF0, +0x20, 0x69, 0x08, 0x6A, 0x4D, 0xEB, 0xC0, 0xF3, +0x44, 0x99, 0x01, 0x6D, 0xC3, 0x67, 0x07, 0xD3, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, -0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x0D, 0x93, -0x06, 0x73, 0x1C, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x08, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0xC0, 0x9B, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x08, 0x93, 0x01, 0x6D, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, -0xC2, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x18, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x18, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x01, 0x6D, -0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x0C, 0x92, 0x06, 0x22, 0x00, 0x6B, 0x01, 0x72, -0x06, 0xD3, 0xC0, 0xF0, 0x05, 0x61, 0x62, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x99, 0xA3, 0xF3, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0x3F, 0x6D, 0xC5, 0x67, 0xC3, 0xF3, 0x0C, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0x07, 0x96, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x99, 0x23, 0xF3, +0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0x30, 0xF0, 0x21, 0x69, 0x70, 0xF1, +0x08, 0x49, 0x23, 0xF3, 0x00, 0x6C, 0xE0, 0xF3, +0x00, 0x6D, 0x12, 0x6E, 0x40, 0xEA, 0x00, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0xDF, 0x6E, 0x10, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x00, 0x6B, +0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x20, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x00, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x9E, 0x6E, 0x00, 0xF4, +0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x06, 0x93, 0xA8, 0xF2, 0x6C, 0xA3, 0x06, 0xD3, +0x35, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, +0x10, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x81, 0xF0, 0x07, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, 0x1F, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x01, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0x10, 0x4A, 0x06, 0x93, +0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x18, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x04, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, 0x70, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x06, 0x93, +0x04, 0xD3, 0x3C, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF1, 0x10, 0x4B, 0xE0, 0x9B, 0x01, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x61, 0xF0, 0x08, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0xE1, 0xF7, +0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x10, 0x4A, +0xE0, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0x18, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6B, 0x91, 0x67, 0xB0, 0x67, 0x33, 0x6E, +0x01, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x04, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, +0x70, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6A, 0x04, 0xD2, 0x91, 0x67, 0x30, 0xF0, +0x21, 0x69, 0xB0, 0x67, 0xEF, 0x6E, 0x04, 0x6F, +0x70, 0xF1, 0x08, 0x49, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, +0x01, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x21, 0x6A, 0xB0, 0xF4, 0x5C, 0xA2, +0x01, 0x22, 0x20, 0x6A, 0x91, 0x67, 0xB0, 0x67, +0x33, 0x6E, 0x7F, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, +0x09, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0x06, 0x73, +0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x23, 0xF3, 0x0C, 0x6C, 0xE1, 0xF7, +0x1F, 0x6D, 0x08, 0x6E, 0x09, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF3, +0x0C, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x38, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, +0xE0, 0x9A, 0x30, 0xF0, 0x21, 0x68, 0x00, 0x69, +0x70, 0xF1, 0x08, 0x48, 0x0E, 0xD4, 0x0F, 0xD5, +0x90, 0x67, 0xB1, 0x67, 0xEF, 0x6E, 0x04, 0xD1, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0x90, 0x67, +0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD1, 0x80, 0x18, +0xF0, 0x53, 0x0E, 0x90, 0x0F, 0x91, 0x00, 0x6A, +0x07, 0xD2, 0x30, 0xF0, 0x21, 0x6B, 0x70, 0xF1, +0x08, 0x4B, 0x06, 0xD3, 0x40, 0x99, 0xC0, 0x98, +0x83, 0x67, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x00, 0x6D, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF3, 0x0C, 0x4B, 0xC0, 0x98, 0x41, 0x99, +0xE0, 0x9B, 0x06, 0x94, 0x01, 0x6D, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x07, 0x92, 0x04, 0x48, +0x08, 0x49, 0x01, 0x4A, 0x07, 0xD2, 0x07, 0x93, +0xFF, 0x6A, 0x4C, 0xEB, 0x03, 0x73, 0x58, 0x67, +0x07, 0xD3, 0x08, 0xD2, 0xD6, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0x10, 0x9A, 0x06, 0x94, +0x78, 0x67, 0xF0, 0x67, 0x00, 0x6D, 0xDE, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x08, 0x92, +0x06, 0x94, 0xF0, 0x67, 0x01, 0x6D, 0xDE, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0xE3, 0xF4, 0xA4, 0x9B, -0x44, 0x68, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, -0x40, 0xEA, 0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, -0x12, 0xE8, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x01, 0xE2, 0x00, 0x6A, 0xA8, 0xF5, 0x1C, 0x48, -0x06, 0xD2, 0xC0, 0xA8, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x44, 0x9A, 0x06, 0x93, 0xC0, 0x36, -0x4D, 0xEE, 0x68, 0x32, 0x4D, 0xEE, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, -0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x02, 0x4E, -0x40, 0xEA, 0x06, 0x92, 0x02, 0x48, 0x01, 0x4A, -0x11, 0x72, 0x06, 0xD2, 0xE6, 0x61, 0x44, 0x68, -0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, 0x12, 0xE8, -0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x01, 0xE2, -0x00, 0x6A, 0xC8, 0xF6, 0x0C, 0x48, 0x06, 0xD2, -0xC0, 0xA8, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0x44, 0x9A, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, -0x06, 0x92, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x48, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x6D, 0xEE, 0x02, 0x48, 0x40, 0xEA, -0x06, 0x93, 0x01, 0x4B, 0x11, 0x73, 0x06, 0xD3, -0xE7, 0x61, 0xE2, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF4, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x2C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x00, 0x4A, +0x40, 0x9A, 0x30, 0xF0, 0x21, 0x68, 0x70, 0xF1, +0x08, 0x48, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, +0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x04, 0x6B, 0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, +0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x90, 0x67, 0xF1, 0x67, 0x03, 0x6A, 0x00, 0x6D, +0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF4, 0x54, 0x9A, +0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x00, 0x6B, +0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, 0xEF, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF1, 0x00, 0x4A, 0x40, 0x9A, +0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x04, 0x6B, +0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF4, 0x58, 0x9A, 0x90, 0x67, +0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6A, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF1, 0x00, 0x4B, 0x60, 0x9B, 0x90, 0x67, +0xF1, 0x67, 0x00, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x90, 0x67, 0x06, 0x6A, +0x00, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x03, 0x6B, 0x90, 0x67, +0xF1, 0x67, 0x00, 0x6D, 0x3E, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF4, 0x5C, 0x9A, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, +0xA2, 0x67, 0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, +0x00, 0x4B, 0x60, 0x9B, 0x90, 0x67, 0xF1, 0x67, +0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, +0xF0, 0x53, 0x90, 0x67, 0x06, 0x6A, 0x01, 0x6D, +0x33, 0x6E, 0x0F, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF5, +0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, +0x3F, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6B, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, +0xEF, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x00, 0x4A, +0x40, 0x9A, 0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, +0xEF, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x07, 0x6B, 0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, +0x0F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x90, 0x67, 0xF1, 0x67, 0x03, 0x6A, 0x00, 0x6D, +0x3E, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF5, 0x44, 0x9A, +0x90, 0x67, 0xF1, 0x67, 0x00, 0x6D, 0x3F, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x00, 0x6B, +0xA3, 0x67, 0x90, 0x67, 0xF1, 0x67, 0xEF, 0x6E, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF1, 0x00, 0x4A, 0x40, 0x9A, +0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, 0xEF, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x07, 0x6B, +0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, 0x0F, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF5, 0x48, 0x9A, 0x90, 0x67, +0xF1, 0x67, 0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6A, 0x01, 0x6D, 0xEF, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x00, 0x6B, 0xA3, 0x67, +0x90, 0x67, 0xF1, 0x67, 0x19, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6A, 0x01, 0x6D, 0x19, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xED, 0x06, 0xD4, +0x07, 0xD5, 0x01, 0x68, 0x00, 0x69, 0x85, 0xF5, +0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0xE1, 0x39, +0x55, 0x72, 0x11, 0x61, 0x07, 0x92, 0x03, 0x2A, +0x00, 0x68, 0x50, 0x67, 0x17, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF3, 0xBC, 0x9A, 0x03, 0xF3, +0x08, 0x6C, 0xFF, 0x68, 0x80, 0x18, 0xE1, 0x39, +0x4C, 0xE8, 0x00, 0x6A, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x64, 0x6C, +0x01, 0x49, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE9, 0x01, 0x6A, 0xA1, 0xF3, 0x18, 0x59, +0x02, 0x61, 0x01, 0x68, 0x01, 0x10, 0xD7, 0x2A, +0x06, 0x95, 0x30, 0xF0, 0x21, 0x69, 0x70, 0xF1, +0x08, 0x49, 0x91, 0x67, 0x00, 0x6A, 0x8F, 0x6E, +0x08, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0x95, 0xE4, 0xF4, 0xEC, 0x9A, +0x91, 0x67, 0x00, 0x6E, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xEA, +0x06, 0x92, 0x01, 0x6D, 0x08, 0x6B, 0x44, 0x36, +0xC0, 0xF3, 0x44, 0x99, 0x03, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x0A, 0x28, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x99, +0x23, 0xF3, 0x00, 0x6C, 0xE4, 0xF3, 0xAC, 0x9B, +0x02, 0x6E, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x99, 0xE4, 0xF3, 0xAC, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0xE3, 0xF4, 0xA4, 0x9B, 0x44, 0x68, 0x23, 0xF3, -0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x18, 0xE9, +0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x00, 0x6A, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x00, 0x68, 0x05, 0xD5, 0x04, 0xD4, 0x05, 0x92, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, +0xE0, 0x9B, 0xC0, 0x9A, 0x30, 0xF0, 0x21, 0x69, +0x70, 0xF1, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6D, +0x80, 0x18, 0xAB, 0x53, 0x04, 0x93, 0x91, 0x67, +0x01, 0x6D, 0x40, 0xDB, 0x05, 0x92, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, +0xC0, 0x9A, 0x01, 0x48, 0x80, 0x18, 0xAB, 0x53, +0x04, 0x93, 0x41, 0xDB, 0xFF, 0x6A, 0x4C, 0xE8, +0x05, 0x92, 0x08, 0x4B, 0x03, 0x70, 0x04, 0x4A, +0x05, 0xD2, 0x04, 0xD3, 0xD8, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x04, 0x67, 0x30, 0xF0, 0x20, 0x6A, +0x2C, 0xE8, 0xC0, 0xF3, 0x44, 0x9A, 0x08, 0x6B, +0x04, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, 0xB0, 0x67, +0x58, 0x6E, 0x80, 0x18, 0xAB, 0x53, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF5, 0x6C, 0x9B, 0x4C, 0xEB, +0x62, 0x33, 0x7A, 0x33, 0x2C, 0xEB, 0x0B, 0x23, +0x3F, 0x73, 0x09, 0x60, 0x07, 0xF7, 0x00, 0x6B, +0x4C, 0xEB, 0x62, 0x32, 0x2C, 0xEA, 0x03, 0x22, +0x3F, 0x72, 0x00, 0x6A, 0x56, 0x61, 0x30, 0xF0, +0x21, 0x69, 0x70, 0xF1, 0x08, 0x49, 0x00, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x57, 0x6E, 0x01, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x01, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, 0x10, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x21, 0x6A, 0xB0, 0xF4, 0x5C, 0xA2, 0x01, 0x22, +0x20, 0x6A, 0x91, 0x67, 0x30, 0xF0, 0x21, 0x69, +0x70, 0xF1, 0x08, 0x49, 0xB0, 0x67, 0x33, 0x6E, +0x7F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x20, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, +0x07, 0xF7, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF5, +0xEC, 0x9A, 0x20, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0x08, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, +0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x08, 0x6E, +0x80, 0x18, 0xAB, 0x53, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0x91, 0x67, +0xB0, 0x67, 0x58, 0x6E, 0x80, 0x18, 0xAB, 0x53, +0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xEF, 0x6E, +0x10, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0x0C, 0xEC, +0x01, 0x74, 0xAC, 0xE8, 0x80, 0xF0, 0x0E, 0x60, +0x07, 0x24, 0x02, 0x74, 0xA0, 0xF0, 0x00, 0x60, +0x03, 0x74, 0xA0, 0xF0, 0x01, 0x60, 0xA5, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x28, 0xF6, 0x6C, 0x9A, 0x30, 0xF0, 0x21, 0x6D, +0x30, 0xF0, 0x21, 0x6C, 0x28, 0xF6, 0x70, 0xDA, +0x30, 0xF0, 0x21, 0x6F, 0x30, 0xF0, 0x21, 0x6B, +0x51, 0xF0, 0x14, 0x4D, 0x51, 0xF0, 0x0C, 0x4C, +0x51, 0xF0, 0x08, 0x4B, 0x30, 0xF6, 0x16, 0x4F, +0x00, 0x69, 0x40, 0x9D, 0x14, 0xF3, 0x00, 0x41, +0x04, 0x30, 0x42, 0xDD, 0x40, 0xAC, 0x05, 0xD7, +0x42, 0xCC, 0x40, 0xA3, 0x42, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x01, 0xE2, +0x00, 0x6A, 0x04, 0x48, 0x04, 0xD2, 0x40, 0xA0, +0x22, 0x6E, 0x07, 0xD3, 0x44, 0xC0, 0x04, 0x92, +0xD8, 0xEA, 0x44, 0x6A, 0x12, 0xEE, 0x58, 0xE9, +0x12, 0xEA, 0x49, 0xE6, 0x30, 0xF0, 0x20, 0x6E, +0x08, 0xF2, 0x10, 0x4E, 0x1A, 0x65, 0x49, 0xE6, +0x08, 0xF4, 0x04, 0x4A, 0x06, 0xD2, 0x58, 0x67, +0x59, 0xE6, 0x06, 0x92, 0x08, 0xF5, 0x14, 0x4E, +0x60, 0xAA, 0x80, 0xF0, 0x68, 0xCA, 0x60, 0xAE, +0x02, 0x4A, 0x80, 0xF0, 0x68, 0xCE, 0x05, 0x93, +0x02, 0x4E, 0x6A, 0xEA, 0xF5, 0x61, 0x04, 0x92, +0x07, 0x93, 0x01, 0x48, 0x01, 0x4A, 0x04, 0xD2, +0x05, 0x92, 0x22, 0x4A, 0x05, 0xD2, 0x04, 0x92, +0x02, 0x72, 0xD1, 0x61, 0x01, 0x49, 0x02, 0x71, +0x04, 0x4D, 0x02, 0x4C, 0x01, 0x4B, 0x44, 0x4F, +0xB8, 0x61, 0x30, 0xF0, 0x21, 0x6B, 0x51, 0xF0, +0x08, 0x4B, 0x44, 0x43, 0xA7, 0x43, 0x16, 0x4D, +0xC2, 0x67, 0x00, 0x6C, 0x80, 0xC3, 0x01, 0x4B, +0x00, 0x6C, 0xCA, 0xEB, 0x80, 0xCA, 0xFF, 0xF7, +0x88, 0xC2, 0x20, 0xF0, 0x85, 0xC2, 0xFF, 0xF7, +0x89, 0xC2, 0x20, 0xF0, 0x86, 0xC2, 0x80, 0xC5, +0x81, 0xC5, 0x82, 0xC5, 0x02, 0x4A, 0x03, 0x4D, +0xEC, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x28, 0xF6, 0x74, 0x9A, 0x28, 0xF6, +0x6C, 0xDA, 0x1F, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0xB0, 0x67, 0x70, 0xF1, 0x08, 0x4C, 0x58, 0x6E, +0x80, 0x18, 0xAB, 0x53, 0x82, 0xF1, 0x10, 0x48, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0x30, 0x08, 0xF2, +0x10, 0x4B, 0x6D, 0xE0, 0x41, 0xDB, 0x09, 0x10, +0x00, 0x6C, 0xB0, 0x67, 0xC4, 0x67, 0x03, 0x10, +0x01, 0x6C, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, +0x69, 0x1F, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x04, 0x67, +0x4C, 0xE8, 0xAC, 0xEA, 0x0E, 0x22, 0x08, 0x6A, +0x04, 0x31, 0x4D, 0xE9, 0x01, 0x6B, 0x44, 0x40, +0x64, 0xEA, 0x30, 0xF0, 0x21, 0x6A, 0x70, 0xF1, +0x08, 0x4A, 0x06, 0xD2, 0x6D, 0xE9, 0x06, 0x6A, +0x0D, 0x10, 0x08, 0x6A, 0x04, 0x31, 0x4D, 0xE9, +0x01, 0x6B, 0x44, 0x40, 0x64, 0xEA, 0x30, 0xF0, +0x21, 0x6A, 0x70, 0xF1, 0x08, 0x4A, 0x06, 0xD2, +0x6D, 0xE9, 0x04, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x06, 0x94, 0xE4, 0xF4, 0xEC, 0x9A, +0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, 0xF0, 0x53, +0x06, 0x94, 0x08, 0xF0, 0x00, 0x6F, 0x01, 0x6B, +0x8F, 0x6E, 0xB0, 0x67, 0x04, 0xD3, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x01, 0x6C, +0x80, 0x18, 0x43, 0x1F, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0xAB, 0x1E, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0xD1, 0x67, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x01, 0x6D, 0xC1, 0x41, 0xAB, 0xED, 0x03, 0xF3, +0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x21, 0x6C, 0xEF, 0x6E, 0x10, 0x6F, +0x00, 0x6A, 0x70, 0xF1, 0x08, 0x4C, 0xB0, 0x67, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x01, 0x6D, +0x90, 0x67, 0x80, 0x18, 0xAB, 0x1E, 0x00, 0x6C, +0x80, 0x18, 0x43, 0x1F, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0xCC, 0x22, 0x22, 0x67, 0x04, 0x2A, +0x01, 0x6C, 0xB0, 0x67, 0x80, 0x18, 0x6F, 0x23, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x41, 0xE0, 0xA8, 0xF2, 0x3D, 0xC0, 0x51, 0x67, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x04, 0x67, +0x4C, 0xED, 0x4C, 0xE8, 0x30, 0xF0, 0x21, 0x6A, +0xB0, 0xF4, 0x5D, 0xA2, 0x06, 0x6B, 0x08, 0xD5, +0x4E, 0xEB, 0x01, 0x5B, 0x98, 0x67, 0x07, 0xD4, +0x16, 0x2D, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, +0x01, 0x4A, 0x03, 0x10, 0x04, 0x4A, 0x04, 0x33, +0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, +0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x21, 0x6A, +0x70, 0xF1, 0x08, 0x4A, 0x08, 0x69, 0x06, 0xD2, +0x6D, 0xE9, 0x04, 0x6A, 0x19, 0x10, 0x08, 0x93, +0x01, 0x73, 0x22, 0x61, 0x07, 0x94, 0x04, 0x24, +0xFF, 0x6A, 0x04, 0x33, 0x01, 0x4A, 0x03, 0x10, +0x07, 0x4A, 0x04, 0x33, 0x40, 0x32, 0x4D, 0xEB, +0x84, 0x40, 0x01, 0x6A, 0x44, 0xEC, 0x4D, 0xEB, +0x30, 0xF0, 0x21, 0x6A, 0x70, 0xF1, 0x08, 0x4A, +0x08, 0x69, 0x06, 0xD2, 0x6D, 0xE9, 0x06, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, +0xE4, 0xF4, 0xEC, 0x9A, 0xB0, 0x67, 0x00, 0x6E, +0x80, 0x18, 0xF0, 0x53, 0x01, 0x6A, 0x25, 0x10, +0x08, 0x93, 0x00, 0x69, 0x02, 0x73, 0x2F, 0x61, +0x07, 0x94, 0x04, 0x24, 0xFF, 0x6A, 0x04, 0x33, +0x01, 0x4A, 0x03, 0x10, 0x0A, 0x4A, 0x04, 0x33, +0x40, 0x32, 0x4D, 0xEB, 0x84, 0x40, 0x01, 0x6A, +0x44, 0xEC, 0x4D, 0xEB, 0x30, 0xF0, 0x21, 0x6A, +0x70, 0xF1, 0x08, 0x4A, 0x06, 0xD2, 0x07, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x06, 0x94, +0xE4, 0xF4, 0xEC, 0x9A, 0x08, 0x69, 0xB0, 0x67, +0x00, 0x6E, 0x6D, 0xE9, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6A, 0x06, 0x94, 0xB0, 0x67, 0x8F, 0x6E, +0x08, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x01, 0x6C, +0x80, 0x18, 0x43, 0x1F, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0xD1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, +0x01, 0x6D, 0xC1, 0x41, 0xAB, 0xED, 0x03, 0xF3, +0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, +0x01, 0x6D, 0x90, 0x67, 0x80, 0x18, 0xCC, 0x22, +0x00, 0x6C, 0x06, 0xD2, 0x80, 0x18, 0x43, 0x1F, +0x04, 0x32, 0x09, 0xD2, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9B, 0x09, 0x93, 0x01, 0x6D, +0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x94, 0x1C, 0x2C, +0x7D, 0x67, 0x87, 0x43, 0x11, 0x4C, 0x60, 0xA4, +0x30, 0xF0, 0x20, 0x69, 0x14, 0xF3, 0x40, 0x40, +0x06, 0x94, 0x44, 0x32, 0x08, 0xF2, 0x10, 0x49, +0x29, 0xE2, 0x64, 0xC2, 0x48, 0x2C, 0x07, 0x92, +0x09, 0x22, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x4C, +0xAB, 0xED, 0x80, 0x18, 0xE1, 0x39, 0x82, 0xF1, +0x1C, 0x48, 0x35, 0x10, 0x02, 0x6C, 0x38, 0x10, +0x08, 0x93, 0x02, 0x73, 0x38, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x21, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, +0x10, 0x49, 0x70, 0xF1, 0x08, 0x4C, 0xB0, 0x67, +0x00, 0x6E, 0x80, 0x18, 0xAB, 0x53, 0xA8, 0xF2, +0x92, 0xA1, 0xFF, 0x6B, 0x56, 0x32, 0x6C, 0xEA, +0x80, 0x34, 0x14, 0xF3, 0x6C, 0x40, 0x8D, 0xEA, +0x64, 0x33, 0x09, 0x94, 0x2D, 0xE3, 0x42, 0xCB, +0x7D, 0x67, 0x29, 0xE4, 0x87, 0x43, 0x11, 0x4C, +0x60, 0xA4, 0x06, 0x94, 0x28, 0xF6, 0x65, 0xC2, +0x12, 0x2C, 0x07, 0x92, 0x0C, 0x22, 0x01, 0x6D, +0x23, 0xF3, 0x1C, 0x4C, 0xAB, 0xED, 0x80, 0x18, +0xE1, 0x39, 0x82, 0xF1, 0x1E, 0x48, 0x08, 0x30, +0x25, 0xE0, 0x41, 0xD9, 0x04, 0x10, 0x03, 0x6C, +0xB0, 0x67, 0x80, 0x18, 0x6F, 0x23, 0x06, 0x92, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x6A, 0x04, 0x67, +0x4C, 0xE8, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA8, 0xF2, 0x6D, 0xA2, +0x0C, 0xD5, 0x00, 0x69, 0x0D, 0xD3, 0xC1, 0xF0, +0x68, 0x40, 0x6C, 0x33, 0x69, 0xE2, 0x04, 0x4A, +0x0A, 0xD2, 0x30, 0xF0, 0x21, 0x6A, 0x91, 0xF0, +0x04, 0x4A, 0x08, 0xD2, 0x09, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, +0xFF, 0x6B, 0x30, 0xF0, 0x21, 0x68, 0x2C, 0xEB, +0x70, 0xF1, 0x08, 0x48, 0x90, 0x67, 0xA3, 0x67, +0xDF, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0xAB, 0x53, +0x10, 0x6B, 0x4D, 0xEB, 0x04, 0xD3, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, +0x06, 0x95, 0x90, 0x67, 0xDF, 0x6E, 0x80, 0x18, +0xF0, 0x53, 0x0A, 0x93, 0x06, 0x95, 0x90, 0x67, +0x40, 0x9B, 0x58, 0x6E, 0x30, 0xF0, 0x20, 0x68, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0x0C, 0x4A, 0xE0, 0x9A, 0x80, 0x18, 0xF0, 0x53, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x24, 0x36, +0x01, 0x6D, 0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x0D, 0x93, 0x06, 0x73, 0x1C, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0xC0, 0x9B, 0x23, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x08, 0x93, +0x01, 0x6D, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0x1C, 0x6C, 0xAB, 0xED, 0xC2, 0x9B, 0x21, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF1, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF1, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xC0, 0x9B, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x0C, 0x92, 0x06, 0x22, +0x00, 0x6B, 0x01, 0x72, 0x06, 0xD3, 0xC0, 0xF0, +0x05, 0x61, 0x62, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0xE4, 0xF3, 0xBC, 0x9B, 0x44, 0x68, 0x23, 0xF3, +0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, 0x12, 0xE8, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x01, 0xE2, 0x00, 0x6A, -0xC8, 0xF5, 0x1E, 0x48, 0x06, 0xD2, 0xC0, 0xA8, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, 0x48, 0x9A, +0x08, 0xF2, 0x10, 0x4A, 0x01, 0xE2, 0x00, 0x6A, +0x08, 0xF4, 0x04, 0x48, 0x06, 0xD2, 0xC0, 0xA8, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF4, 0x5C, 0x9A, 0x06, 0x93, 0xC0, 0x36, 0x4D, 0xEE, 0x68, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, @@ -66881,1982 +67960,2007 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x02, 0x48, 0x01, 0x4A, 0x11, 0x72, 0x06, 0xD2, 0xE6, 0x61, 0x44, 0x68, 0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, 0x12, 0xE8, 0x58, 0xEB, 0x12, 0xEA, -0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x01, 0xE2, 0x00, 0x6A, 0xE8, 0xF6, -0x0E, 0x48, 0x06, 0xD2, 0xC0, 0xA8, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF5, 0x48, 0x9A, 0xC0, 0x36, +0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x01, 0xE2, 0x00, 0x6A, 0x08, 0xF5, +0x14, 0x48, 0x06, 0xD2, 0xC0, 0xA8, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF4, 0x5C, 0x9A, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0x06, 0x92, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x48, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x6D, 0xEE, 0x02, 0x48, 0x40, 0xEA, 0x06, 0x93, 0x01, 0x4B, -0x11, 0x73, 0x06, 0xD3, 0xE7, 0x61, 0x80, 0x10, -0x0B, 0xD1, 0x06, 0x93, 0xFF, 0x6A, 0x6C, 0xEA, -0x11, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xE3, 0xF4, -0xA4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF5, -0x44, 0x9A, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0xE3, 0xF4, 0xA4, 0x9B, 0x23, 0xF3, 0x00, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF5, 0x48, 0x9A, 0x07, 0xD2, 0x06, 0x92, +0x11, 0x73, 0x06, 0xD3, 0xE7, 0x61, 0xE2, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0xE4, 0xF3, 0xBC, 0x9B, +0x44, 0x68, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, +0x12, 0xE8, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x01, 0xE2, 0x00, 0x6A, 0x28, 0xF4, 0x06, 0x48, +0x06, 0xD2, 0xC0, 0xA8, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF4, 0x40, 0x9A, 0x06, 0x93, 0xC0, 0x36, +0x4D, 0xEE, 0x68, 0x32, 0x4D, 0xEE, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, +0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x02, 0x4E, +0x40, 0xEA, 0x06, 0x92, 0x02, 0x48, 0x01, 0x4A, +0x11, 0x72, 0x06, 0xD2, 0xE6, 0x61, 0x44, 0x68, +0x18, 0xE9, 0x09, 0x93, 0x88, 0x6A, 0x12, 0xE8, +0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x01, 0xE2, +0x00, 0x6A, 0x28, 0xF5, 0x16, 0x48, 0x06, 0xD2, +0xC0, 0xA8, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF4, +0x40, 0x9A, 0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, +0x06, 0x92, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x48, 0x33, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x6D, 0xEE, 0x02, 0x48, 0x40, 0xEA, +0x06, 0x93, 0x01, 0x4B, 0x11, 0x73, 0x06, 0xD3, +0xE7, 0x61, 0x80, 0x10, 0x0B, 0xD1, 0x06, 0x93, +0xFF, 0x6A, 0x6C, 0xEA, 0x11, 0x2A, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xE4, 0xF3, 0xBC, 0x9B, 0x23, 0xF3, +0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF4, 0x5C, 0x9A, 0x10, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0xE4, 0xF3, 0xBC, 0x9B, +0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF4, 0x40, 0x9A, +0x07, 0xD2, 0x06, 0x92, 0x22, 0x68, 0x0B, 0x93, +0x18, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xE8, +0x58, 0xEB, 0x09, 0x93, 0x12, 0xEA, 0x41, 0xE0, +0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x01, 0xE2, 0x08, 0xF4, 0x04, 0x48, 0xC0, 0xA8, +0x07, 0x92, 0x01, 0x6D, 0xC0, 0x36, 0x4D, 0xEE, +0x28, 0x32, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, 0x18, 0x6C, +0xAB, 0xED, 0x02, 0x4E, 0x01, 0x49, 0x40, 0xEA, +0x11, 0x71, 0x02, 0x48, 0xEC, 0x61, 0x06, 0x92, 0x22, 0x68, 0x0B, 0x93, 0x18, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xE8, 0x58, 0xEB, 0x09, 0x93, 0x12, 0xEA, 0x41, 0xE0, 0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x01, 0xE2, 0xA8, 0xF5, -0x1C, 0x48, 0xC0, 0xA8, 0x07, 0x92, 0x01, 0x6D, -0xC0, 0x36, 0x4D, 0xEE, 0x28, 0x32, 0x4D, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x02, 0x4E, -0x01, 0x49, 0x40, 0xEA, 0x11, 0x71, 0x02, 0x48, -0xEC, 0x61, 0x06, 0x92, 0x22, 0x68, 0x0B, 0x93, -0x18, 0xEA, 0x44, 0x6A, 0x00, 0x69, 0x12, 0xE8, -0x58, 0xEB, 0x09, 0x93, 0x12, 0xEA, 0x41, 0xE0, -0x88, 0x6A, 0x58, 0xEB, 0x12, 0xEA, 0x41, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x01, 0xE2, 0xC8, 0xF6, 0x0C, 0x48, 0xC0, 0xA8, -0x07, 0x92, 0x28, 0x33, 0xC0, 0x36, 0x4D, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x6D, 0xEE, 0x01, 0x49, 0x40, 0xEA, 0x11, 0x71, -0x02, 0x48, 0xED, 0x61, 0x06, 0x93, 0x01, 0x4B, -0x02, 0x73, 0x06, 0xD3, 0x82, 0x61, 0x0B, 0x91, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0xA3, 0xF4, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0xC3, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF4, 0xA4, 0x9B, 0x23, 0xF3, -0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, -0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x6C, 0xEA, 0x06, 0x93, 0x07, 0xD2, -0x01, 0x6D, 0x64, 0x36, 0xC0, 0xF3, 0x64, 0x98, -0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF4, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, -0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x18, 0x4B, 0xC0, 0x9B, +0x08, 0xF2, 0x10, 0x4A, 0x01, 0xE2, 0x08, 0xF5, +0x14, 0x48, 0xC0, 0xA8, 0x07, 0x92, 0x28, 0x33, +0xC0, 0x36, 0x4D, 0xEE, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xC3, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x6D, 0xEE, 0x01, 0x49, +0x40, 0xEA, 0x11, 0x71, 0x02, 0x48, 0xED, 0x61, +0x06, 0x93, 0x01, 0x4B, 0x02, 0x73, 0x06, 0xD3, +0x82, 0x61, 0x0B, 0x91, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0xC4, 0xF3, 0xD4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, +0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE4, 0xF3, +0xBC, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x00, 0x6A, 0x06, 0xD2, 0x06, 0x92, +0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x6C, 0xEA, +0x06, 0x93, 0x07, 0xD2, 0x01, 0x6D, 0x64, 0x36, +0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, 0x4D, 0xEE, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, +0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x03, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x95, +0xE4, 0xF4, 0xEC, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0x70, 0xF1, 0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, +0xF0, 0x53, 0x06, 0x92, 0x01, 0x4A, 0x02, 0x72, +0x06, 0xD2, 0xA9, 0x61, 0x0A, 0x93, 0x08, 0x92, +0x01, 0x49, 0x04, 0x4B, 0x04, 0x4A, 0x02, 0x71, +0x0A, 0xD3, 0x08, 0xD2, 0xBF, 0xF5, 0x1B, 0x61, +0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x00, 0x6B, +0x8C, 0xEA, 0x68, 0xF6, 0x70, 0xC0, 0x2A, 0x2A, +0xA8, 0xF2, 0x4E, 0xA0, 0x27, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, +0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, 0x00, 0x6D, +0x18, 0x6E, 0x80, 0x18, 0xAB, 0x53, 0x28, 0xF6, +0x6C, 0x98, 0x28, 0xF6, 0x54, 0xD8, 0x00, 0x69, +0x4E, 0xEB, 0x05, 0x23, 0x28, 0xF6, 0x70, 0x98, +0x6E, 0xEA, 0x10, 0x2A, 0x01, 0x69, 0x02, 0x6D, +0x91, 0x67, 0x80, 0x18, 0x9B, 0x24, 0x91, 0x67, +0x80, 0x18, 0x6E, 0x1B, 0x01, 0x6C, 0x80, 0x18, +0xA0, 0x1B, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, +0x91, 0xF0, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x08, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x69, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x49, 0x04, 0xF1, 0x10, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF6, +0xD0, 0xA1, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x0A, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0x10, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF6, 0xD0, 0xA1, +0xA0, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, +0x68, 0xF6, 0x50, 0xA1, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0xAC, 0x9A, +0x63, 0xF6, 0x1C, 0x6C, 0x80, 0x18, 0xE1, 0x39, +0x06, 0x22, 0x01, 0x6B, 0x30, 0xF0, 0x21, 0x6A, +0x71, 0xF0, 0x64, 0xC2, 0x04, 0x10, 0x30, 0xF0, +0x21, 0x6B, 0x71, 0xF0, 0x44, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, +0x30, 0xF0, 0x21, 0x68, 0x70, 0xF1, 0x08, 0x48, +0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, +0xAB, 0x53, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, +0x0C, 0x4B, 0xE0, 0x9B, 0x90, 0x67, 0x00, 0x6D, +0x18, 0x6E, 0x22, 0x67, 0x80, 0x18, 0xAB, 0x53, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x28, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0x50, 0x9A, 0xA8, 0xF2, 0x3B, 0xC3, +0x2C, 0xEA, 0x42, 0x32, 0x42, 0x32, 0xA8, 0xF2, +0x5A, 0xC3, 0x06, 0xF0, 0x00, 0x6A, 0x2C, 0xEA, +0x42, 0x32, 0x52, 0x32, 0xA8, 0xF2, 0x5C, 0xC3, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x80, 0x18, +0x06, 0x26, 0x00, 0x6C, 0x80, 0x18, 0xA0, 0x1B, +0x03, 0x28, 0x00, 0x6C, 0xA4, 0x67, 0x07, 0x10, +0x01, 0x70, 0x03, 0x61, 0x00, 0x6C, 0x01, 0x6D, +0x02, 0x10, 0x00, 0x6C, 0x02, 0x6D, 0x80, 0x18, +0x9B, 0x24, 0x01, 0x6C, 0x80, 0x18, 0xA0, 0x1B, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x24, 0x67, 0x4C, 0xE9, 0xAC, 0xEA, +0x01, 0x72, 0x43, 0x61, 0x44, 0x41, 0x01, 0x6B, +0x64, 0xEA, 0x00, 0xF2, 0x08, 0x6A, 0x4D, 0xEB, +0x04, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF4, 0xEC, 0x9A, 0x30, 0xF0, 0x21, 0x68, +0x70, 0xF1, 0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, +0x00, 0x6E, 0x06, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6F, 0xB1, 0x67, +0x04, 0xD4, 0x8F, 0x6E, 0x90, 0x67, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x0A, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x06, 0x96, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x06, 0x96, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x6D, 0xAB, 0xED, 0x01, 0x4E, 0x03, 0xF3, +0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, +0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0xCC, 0x22, +0xF0, 0x10, 0x02, 0x72, 0x01, 0x6A, 0xE0, 0xF0, +0x0C, 0x61, 0x30, 0xF0, 0x21, 0x6A, 0xD0, 0xF4, +0x42, 0xA2, 0x00, 0x68, 0x09, 0x72, 0x0C, 0x60, +0x12, 0x72, 0x01, 0x68, 0x09, 0x60, 0x1B, 0x72, +0x02, 0x68, 0x06, 0x60, 0x24, 0x68, 0x4E, 0xE8, +0x01, 0x58, 0x18, 0x67, 0x04, 0x6A, 0x03, 0xE2, +0x24, 0x32, 0x08, 0xD2, 0x08, 0x93, 0x08, 0x6A, +0x30, 0xF0, 0x20, 0x6C, 0x4D, 0xEB, 0xC0, 0xF3, +0x44, 0x9C, 0x01, 0x6D, 0xC3, 0x67, 0x08, 0xD3, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9B, 0x06, 0x93, 0x01, 0x6D, 0xAB, 0xED, +0xA8, 0xF2, 0xD2, 0xA3, 0xC3, 0xF3, 0x0C, 0x6C, +0x40, 0xEA, 0x44, 0x41, 0x01, 0x6C, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xEA, 0x00, 0xF3, 0x08, 0x6A, +0x4D, 0xEC, 0x80, 0xF3, 0x4C, 0x9B, 0x07, 0xD4, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF3, 0x44, 0x9C, 0x07, 0x96, 0x01, 0x6D, +0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x07, 0x96, 0xC0, 0xF3, +0x44, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x01, 0x4E, +0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6C, 0x80, 0xF3, 0x4C, 0x9C, 0xC8, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, +0x0C, 0x4B, 0xE0, 0x9B, 0x30, 0xF0, 0x21, 0x6A, +0x70, 0xF1, 0x08, 0x4A, 0x82, 0x67, 0xB1, 0x67, +0x00, 0x6E, 0x07, 0xD2, 0x80, 0x18, 0xAB, 0x53, +0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0xCC, 0x22, +0x01, 0x72, 0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF6, 0x00, 0x4A, 0x41, 0xE0, 0x40, 0xA0, +0x06, 0x94, 0xA8, 0xF2, 0x52, 0xC4, 0x70, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, +0x07, 0x94, 0xE0, 0x9A, 0xB1, 0x67, 0x00, 0x6E, +0x80, 0x18, 0xAB, 0x53, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0x67, 0x08, 0x96, 0xC0, 0xF3, 0x44, 0x9B, +0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0xE3, 0xF7, 0x00, 0x6A, 0x2C, 0xEA, +0x06, 0x93, 0x56, 0x34, 0x96, 0x32, 0xA8, 0xF2, +0x54, 0xDB, 0x1F, 0x6A, 0x8C, 0xEA, 0x02, 0x5A, +0xFF, 0x6B, 0x0B, 0x60, 0x03, 0x70, 0x03, 0x60, +0x01, 0x48, 0x6C, 0xE8, 0x4F, 0x10, 0x06, 0x94, +0x01, 0x6B, 0x03, 0x68, 0x68, 0xF6, 0x69, 0xC4, +0x49, 0x10, 0x0A, 0x5A, 0x0B, 0x61, 0x04, 0x20, +0xFF, 0x48, 0x6C, 0xE8, 0x01, 0x6B, 0x0B, 0x10, +0x06, 0x94, 0x01, 0x6B, 0x68, 0xF6, 0x69, 0xC4, +0x01, 0x6B, 0x09, 0x10, 0x06, 0x94, 0x00, 0x6B, +0x68, 0xF6, 0x69, 0xC4, 0x00, 0x6B, 0x03, 0x20, +0x04, 0x58, 0x01, 0x61, 0x03, 0x68, 0x30, 0xF0, +0x20, 0x6C, 0x08, 0xF2, 0x10, 0x4C, 0x68, 0xF6, +0xA9, 0xA4, 0x01, 0x5D, 0xB8, 0x67, 0xAB, 0xED, +0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, 0x03, 0xF6, +0x00, 0x4D, 0xA1, 0xE0, 0xA0, 0xA0, 0xA8, 0xF2, +0xB2, 0xC4, 0x0F, 0x2B, 0xA8, 0xF2, 0xD2, 0xA4, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x64, 0x9B, +0xC0, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0xE3, 0xF3, +0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x00, 0x6A, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x01, 0x6D, 0xE3, 0xF3, 0x08, 0x6C, +0xAB, 0xED, 0xFF, 0xF7, 0x1F, 0x6E, 0x40, 0xEA, +0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0x01, 0x6B, 0xC8, 0x17, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x21, 0x6A, 0xB0, 0xF4, 0x7F, 0xA2, 0xFF, 0x68, +0x8C, 0xE8, 0x06, 0x5B, 0x01, 0x6A, 0x7C, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x68, 0x33, 0xC3, 0xF5, +0x10, 0x4A, 0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x90, 0x67, 0x80, 0x18, 0x77, 0x20, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0xCD, 0x23, 0x62, 0x10, +0x90, 0x67, 0x80, 0x18, 0x25, 0x20, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0x11, 0x24, 0x52, 0x22, +0x03, 0x6C, 0x98, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x12, 0xEC, 0x71, 0xE4, +0x48, 0xF6, 0xB6, 0xA4, 0x02, 0x5D, 0x04, 0x60, +0x01, 0x4D, 0x48, 0xF6, 0xB6, 0xC4, 0xEB, 0x17, +0x61, 0xE0, 0x01, 0x6C, 0x39, 0x10, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0xBC, 0x1F, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, +0x68, 0xF6, 0x69, 0xC2, 0x90, 0x67, 0x02, 0x6D, +0x80, 0x18, 0x3C, 0x26, 0x2F, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0x34, 0x08, 0xF2, 0x10, 0x4B, +0x6D, 0xE4, 0x68, 0xF6, 0x82, 0xA3, 0x0A, 0x5C, +0x25, 0x60, 0x01, 0x4C, 0x68, 0xF6, 0x82, 0xC3, +0xED, 0x17, 0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, +0xBC, 0x1F, 0x90, 0x67, 0x02, 0x6D, 0x80, 0x18, +0x11, 0x24, 0x18, 0x22, 0x03, 0x6C, 0x98, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x12, 0xEC, 0x71, 0xE4, 0x48, 0xF6, 0xB7, 0xA4, +0x02, 0x5D, 0x04, 0x60, 0x01, 0x4D, 0x48, 0xF6, +0xB7, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x02, 0x6C, +0xE8, 0xF3, 0x88, 0xC0, 0x06, 0x6C, 0xA8, 0xF2, +0x8F, 0xC3, 0x12, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0xA8, 0xF2, 0x8F, 0xA3, +0x01, 0x4C, 0xF5, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA8, 0xF2, 0x6F, 0xA2, +0x01, 0x4B, 0xA8, 0xF2, 0x6F, 0xC2, 0x01, 0x6A, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA8, 0xF2, 0x6D, 0xA2, 0xA8, 0xF2, 0x50, 0xA2, +0x08, 0xD3, 0x06, 0x5A, 0x76, 0x60, 0x30, 0xF0, +0x20, 0x6B, 0x48, 0x32, 0xE3, 0xF5, 0x08, 0x4B, +0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, 0x00, 0x6C, +0x80, 0x18, 0xDE, 0x26, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA8, 0xF2, 0x6F, 0xA2, +0x06, 0x73, 0xF5, 0x61, 0x2A, 0x10, 0x00, 0x6C, +0x80, 0x18, 0x67, 0x21, 0x00, 0x6C, 0xA4, 0x67, +0x37, 0x10, 0x00, 0x6C, 0x80, 0x18, 0x2F, 0x21, +0x00, 0x6C, 0xA4, 0x67, 0x80, 0x18, 0x11, 0x24, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0xA8, 0xF2, 0x98, 0xA3, 0x01, 0x4C, 0xA8, 0xF2, +0x98, 0xC3, 0x42, 0x22, 0x48, 0xF6, 0x55, 0xA3, +0x03, 0x5A, 0x3E, 0x60, 0x01, 0x4A, 0x48, 0xF6, +0x55, 0xC3, 0x43, 0x10, 0x01, 0x6C, 0x80, 0x18, +0xDE, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA8, 0xF2, 0x6F, 0xA2, 0x06, 0x73, +0xF5, 0x61, 0xA8, 0xF2, 0x70, 0xA2, 0x01, 0x4B, +0xA8, 0xF2, 0x70, 0xC2, 0x78, 0x67, 0xA8, 0xF2, +0x6F, 0xC2, 0xA8, 0xF2, 0x78, 0xA2, 0x01, 0x4B, +0xA8, 0xF2, 0x78, 0xC2, 0x2A, 0x10, 0x01, 0x6C, +0x80, 0x18, 0x67, 0x21, 0x01, 0x6C, 0x00, 0x6D, +0x80, 0x18, 0xCD, 0x23, 0x19, 0x10, 0x01, 0x6C, +0x80, 0x18, 0x2F, 0x21, 0x01, 0x6C, 0x00, 0x6D, +0x80, 0x18, 0x11, 0x24, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0xA8, 0xF2, 0x98, 0xA3, +0x01, 0x4C, 0xA8, 0xF2, 0x98, 0xC3, 0x08, 0x22, +0x48, 0xF6, 0x58, 0xA3, 0x03, 0x5A, 0x04, 0x60, +0x01, 0x4A, 0x48, 0xF6, 0x58, 0xC3, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA8, 0xF2, 0x70, 0xA2, 0x01, 0x4B, 0xA8, 0xF2, +0x70, 0xC2, 0x30, 0xF0, 0x21, 0x6A, 0xD0, 0xF4, +0x40, 0xA2, 0x06, 0x72, 0x80, 0xF0, 0x08, 0x61, +0x30, 0xF0, 0x21, 0x69, 0x00, 0x6A, 0x91, 0xF0, +0x04, 0x49, 0x06, 0xD2, 0x06, 0x92, 0xFF, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0x6C, 0xEA, 0x06, 0x93, +0x07, 0xD2, 0x01, 0x6D, 0x64, 0x36, 0xC0, 0xF3, +0x64, 0x98, 0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF4, 0xBC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0x0C, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x08, 0x92, 0x06, 0x72, 0x1A, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF3, 0xBC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x99, +0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x01, 0x6D, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0xC2, 0x99, +0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF3, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF1, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x18, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x23, 0xF3, +0x20, 0x6B, 0x04, 0xF1, 0x0C, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0xC0, 0x9B, 0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x03, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x07, 0x95, 0xE3, 0xF5, 0xE8, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, 0x18, 0x4C, -0x00, 0x6E, 0x80, 0x18, 0xE1, 0x4E, 0x06, 0x92, -0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, 0xA9, 0x61, -0x0A, 0x93, 0x08, 0x92, 0x01, 0x49, 0x04, 0x4B, -0x04, 0x4A, 0x02, 0x71, 0x0A, 0xD3, 0x08, 0xD2, -0xBF, 0xF5, 0x1B, 0x61, 0x11, 0x97, 0x10, 0x91, -0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x00, 0x6B, 0x8C, 0xEA, 0x29, 0xF0, -0x68, 0xC0, 0x2A, 0x2A, 0x68, 0xF4, 0x46, 0xA0, -0x27, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, -0x18, 0x4C, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, -0x9C, 0x4E, 0xE8, 0xF7, 0x64, 0x98, 0xE8, 0xF7, -0x4C, 0xD8, 0x00, 0x69, 0x4E, 0xEB, 0x05, 0x23, -0xE8, 0xF7, 0x68, 0x98, 0x6E, 0xEA, 0x10, 0x2A, -0x01, 0x69, 0x02, 0x6D, 0x91, 0x67, 0x80, 0x18, -0x36, 0x27, 0x91, 0x67, 0x80, 0x18, 0xE4, 0x1D, -0x01, 0x6C, 0x80, 0x18, 0x16, 0x1E, 0x01, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xCF, 0xF6, 0x68, 0xC2, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x69, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x49, -0xC3, 0xF1, 0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x29, 0xF0, 0xC8, 0xA1, 0xE3, 0xF3, -0x10, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x0A, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0x29, 0xF0, 0xC8, 0xA1, 0xA0, 0x9B, 0xE3, 0xF3, -0x10, 0x6C, 0x40, 0xEA, 0x29, 0xF0, 0x48, 0xA1, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0xB8, 0x9A, 0x63, 0xF6, 0x1C, 0x6C, -0x80, 0x18, 0x72, 0x3C, 0x06, 0x22, 0x01, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xAF, 0xF6, 0x6C, 0xC2, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xAF, 0xF6, -0x4C, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0x14, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x68, -0xAE, 0xF7, 0x18, 0x48, 0x90, 0x67, 0x00, 0x6D, -0x18, 0x6E, 0x80, 0x18, 0x9C, 0x4E, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0xE0, 0x9B, -0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, 0x22, 0x67, -0x80, 0x18, 0x9C, 0x4E, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0xE8, 0xF7, 0x4C, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x5C, 0x9A, -0x68, 0xF4, 0x33, 0xC3, 0x2C, 0xEA, 0x42, 0x32, -0x42, 0x32, 0x68, 0xF4, 0x52, 0xC3, 0x06, 0xF0, -0x00, 0x6A, 0x2C, 0xEA, 0x42, 0x32, 0x52, 0x32, -0x68, 0xF4, 0x54, 0xC3, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, -0x8C, 0xE8, 0x80, 0x18, 0xA1, 0x28, 0x00, 0x6C, -0x80, 0x18, 0x16, 0x1E, 0x03, 0x28, 0x00, 0x6C, -0xA4, 0x67, 0x07, 0x10, 0x01, 0x70, 0x03, 0x61, -0x00, 0x6C, 0x01, 0x6D, 0x02, 0x10, 0x00, 0x6C, -0x02, 0x6D, 0x80, 0x18, 0x36, 0x27, 0x01, 0x6C, -0x80, 0x18, 0x16, 0x1E, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x24, 0x67, -0x4C, 0xE9, 0xAC, 0xEA, 0x01, 0x72, 0x43, 0x61, -0x44, 0x41, 0x01, 0x6B, 0x64, 0xEA, 0x00, 0xF2, -0x08, 0x6A, 0x4D, 0xEB, 0x04, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, 0xE8, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, -0x90, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x06, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6C, 0x08, 0xF0, -0x00, 0x6F, 0xB1, 0x67, 0x04, 0xD4, 0x8F, 0x6E, -0x90, 0x67, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, -0x20, 0x68, 0x0A, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x06, 0x96, 0x01, 0x6D, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x06, 0x96, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xAB, 0xED, -0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, -0x01, 0x6C, 0x40, 0xEA, 0x91, 0x67, 0x01, 0x6D, -0x80, 0x18, 0x67, 0x25, 0xF0, 0x10, 0x02, 0x72, -0x01, 0x6A, 0xE0, 0xF0, 0x0C, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x0F, 0xF3, 0x4A, 0xA2, 0x00, 0x68, -0x09, 0x72, 0x0C, 0x60, 0x12, 0x72, 0x01, 0x68, -0x09, 0x60, 0x1B, 0x72, 0x02, 0x68, 0x06, 0x60, -0x24, 0x68, 0x4E, 0xE8, 0x01, 0x58, 0x18, 0x67, -0x04, 0x6A, 0x03, 0xE2, 0x24, 0x32, 0x08, 0xD2, -0x08, 0x93, 0x08, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0x4D, 0xEB, 0xC0, 0xF3, 0x44, 0x9C, 0x01, 0x6D, -0xC3, 0x67, 0x08, 0xD3, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x06, 0xD2, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x06, 0x93, -0x01, 0x6D, 0xAB, 0xED, 0x68, 0xF4, 0xCA, 0xA3, -0xC3, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, 0x44, 0x41, -0x01, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xEA, -0x00, 0xF3, 0x08, 0x6A, 0x4D, 0xEC, 0x80, 0xF3, -0x4C, 0x9B, 0x07, 0xD4, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, -0x07, 0x96, 0x01, 0x6D, 0x03, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x07, 0x96, 0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, -0xAB, 0xED, 0x01, 0x4E, 0x03, 0xF3, 0x00, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF3, -0x4C, 0x9C, 0xC8, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0xE0, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, 0x18, 0x4A, -0x82, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x07, 0xD2, -0x80, 0x18, 0x9C, 0x4E, 0x91, 0x67, 0x01, 0x6D, -0x80, 0x18, 0x67, 0x25, 0x01, 0x72, 0x0A, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x0C, 0x4A, -0x41, 0xE0, 0x40, 0xA0, 0x06, 0x94, 0x68, 0xF4, -0x4A, 0xC4, 0x70, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x14, 0x4A, 0x07, 0x94, 0xE0, 0x9A, -0xB1, 0x67, 0x00, 0x6E, 0x80, 0x18, 0x9C, 0x4E, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0x67, 0x08, 0x96, -0xC0, 0xF3, 0x44, 0x9B, 0x01, 0x6D, 0x03, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xE3, 0xF7, -0x00, 0x6A, 0x2C, 0xEA, 0x06, 0x93, 0x56, 0x34, -0x96, 0x32, 0x68, 0xF4, 0x4C, 0xDB, 0x1F, 0x6A, -0x8C, 0xEA, 0x02, 0x5A, 0xFF, 0x6B, 0x0B, 0x60, -0x03, 0x70, 0x03, 0x60, 0x01, 0x48, 0x6C, 0xE8, -0x4F, 0x10, 0x06, 0x94, 0x01, 0x6B, 0x03, 0x68, -0x29, 0xF0, 0x61, 0xC4, 0x49, 0x10, 0x0A, 0x5A, -0x0B, 0x61, 0x04, 0x20, 0xFF, 0x48, 0x6C, 0xE8, -0x01, 0x6B, 0x0B, 0x10, 0x06, 0x94, 0x01, 0x6B, -0x29, 0xF0, 0x61, 0xC4, 0x01, 0x6B, 0x09, 0x10, -0x06, 0x94, 0x00, 0x6B, 0x29, 0xF0, 0x61, 0xC4, -0x00, 0x6B, 0x03, 0x20, 0x04, 0x58, 0x01, 0x61, -0x03, 0x68, 0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF6, -0x00, 0x4C, 0x29, 0xF0, 0xA1, 0xA4, 0x01, 0x5D, -0xB8, 0x67, 0xAB, 0xED, 0xAC, 0xEB, 0x30, 0xF0, -0x20, 0x6D, 0xC2, 0xF6, 0x0C, 0x4D, 0xA1, 0xE0, -0xA0, 0xA0, 0x68, 0xF4, 0xAA, 0xC4, 0x0F, 0x2B, -0x68, 0xF4, 0xCA, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x64, 0x9B, 0xC0, 0x36, 0x01, 0x6D, -0x4D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, -0x40, 0xEB, 0x00, 0x6A, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, -0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0xFF, 0xF7, -0x1F, 0x6E, 0x40, 0xEA, 0x01, 0x6A, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0x01, 0x6B, 0xC8, 0x17, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF3, -0x67, 0xA2, 0xFF, 0x68, 0x8C, 0xE8, 0x06, 0x5B, -0x01, 0x6A, 0x7C, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x68, 0x33, 0x82, 0xF6, 0x1C, 0x4A, 0x69, 0xE2, -0x40, 0x9A, 0x00, 0xEA, 0x90, 0x67, 0x80, 0x18, -0x12, 0x23, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, -0x68, 0x26, 0x62, 0x10, 0x90, 0x67, 0x80, 0x18, -0xC0, 0x22, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, -0xAC, 0x26, 0x52, 0x22, 0x03, 0x6C, 0x98, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x12, 0xEC, 0x71, 0xE4, 0x09, 0xF0, 0xAE, 0xA4, -0x02, 0x5D, 0x04, 0x60, 0x01, 0x4D, 0x09, 0xF0, -0xAE, 0xC4, 0xEB, 0x17, 0x61, 0xE0, 0x01, 0x6C, -0x39, 0x10, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, -0x57, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x00, 0x6B, 0x29, 0xF0, 0x61, 0xC2, -0x90, 0x67, 0x02, 0x6D, 0x80, 0x18, 0xD7, 0x28, -0x2F, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0x34, -0xA6, 0xF6, 0x00, 0x4B, 0x6D, 0xE4, 0x09, 0xF0, -0x9A, 0xA3, 0x0A, 0x5C, 0x25, 0x60, 0x01, 0x4C, -0x09, 0xF0, 0x9A, 0xC3, 0xED, 0x17, 0x90, 0x67, -0x00, 0x6D, 0x80, 0x18, 0x57, 0x22, 0x90, 0x67, -0x02, 0x6D, 0x80, 0x18, 0xAC, 0x26, 0x18, 0x22, -0x03, 0x6C, 0x98, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x12, 0xEC, 0x71, 0xE4, -0x09, 0xF0, 0xAF, 0xA4, 0x02, 0x5D, 0x04, 0x60, -0x01, 0x4D, 0x09, 0xF0, 0xAF, 0xC4, 0xEB, 0x17, -0x61, 0xE0, 0x02, 0x6C, 0xA8, 0xF5, 0x80, 0xC0, -0x06, 0x6C, 0x68, 0xF4, 0x87, 0xC3, 0x12, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x68, 0xF4, 0x87, 0xA3, 0x01, 0x4C, 0xF5, 0x17, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x68, 0xF4, 0x67, 0xA2, 0x01, 0x4B, 0x68, 0xF4, -0x67, 0xC2, 0x01, 0x6A, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x68, 0xF4, 0x65, 0xA2, -0x68, 0xF4, 0x48, 0xA2, 0x08, 0xD3, 0x06, 0x5A, -0x76, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, -0xA2, 0xF6, 0x14, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, -0x00, 0xEA, 0x00, 0x6C, 0x80, 0x18, 0x79, 0x29, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x68, 0xF4, 0x67, 0xA2, 0x06, 0x73, 0xF5, 0x61, -0x2A, 0x10, 0x00, 0x6C, 0x80, 0x18, 0x02, 0x24, -0x00, 0x6C, 0xA4, 0x67, 0x37, 0x10, 0x00, 0x6C, -0x80, 0x18, 0xCA, 0x23, 0x00, 0x6C, 0xA4, 0x67, -0x80, 0x18, 0xAC, 0x26, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x68, 0xF4, 0x90, 0xA3, -0x01, 0x4C, 0x68, 0xF4, 0x90, 0xC3, 0x42, 0x22, -0x09, 0xF0, 0x4D, 0xA3, 0x03, 0x5A, 0x3E, 0x60, -0x01, 0x4A, 0x09, 0xF0, 0x4D, 0xC3, 0x43, 0x10, -0x01, 0x6C, 0x80, 0x18, 0x79, 0x29, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x68, 0xF4, -0x67, 0xA2, 0x06, 0x73, 0xF5, 0x61, 0x68, 0xF4, -0x68, 0xA2, 0x01, 0x4B, 0x68, 0xF4, 0x68, 0xC2, -0x78, 0x67, 0x68, 0xF4, 0x67, 0xC2, 0x68, 0xF4, -0x70, 0xA2, 0x01, 0x4B, 0x68, 0xF4, 0x70, 0xC2, -0x2A, 0x10, 0x01, 0x6C, 0x80, 0x18, 0x02, 0x24, -0x01, 0x6C, 0x00, 0x6D, 0x80, 0x18, 0x68, 0x26, -0x19, 0x10, 0x01, 0x6C, 0x80, 0x18, 0xCA, 0x23, -0x01, 0x6C, 0x00, 0x6D, 0x80, 0x18, 0xAC, 0x26, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x68, 0xF4, 0x90, 0xA3, 0x01, 0x4C, 0x68, 0xF4, -0x90, 0xC3, 0x08, 0x22, 0x09, 0xF0, 0x50, 0xA3, -0x03, 0x5A, 0x04, 0x60, 0x01, 0x4A, 0x09, 0xF0, -0x50, 0xC3, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x68, 0xF4, 0x68, 0xA2, -0x01, 0x4B, 0x68, 0xF4, 0x68, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x0F, 0xF3, 0x48, 0xA2, 0x06, 0x72, -0x80, 0xF0, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x69, -0x00, 0x6A, 0xCF, 0xF6, 0x0C, 0x49, 0x06, 0xD2, -0x06, 0x92, 0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0x6C, 0xEA, 0x06, 0x93, 0x07, 0xD2, 0x01, 0x6D, -0x64, 0x36, 0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, -0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, -0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x6C, 0xFF, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x08, 0x92, 0x06, 0x72, -0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF4, -0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, -0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xC0, 0x99, 0x01, 0x6D, 0x23, 0xF3, -0x18, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x01, 0x6D, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, 0x1C, 0x6C, -0xAB, 0xED, 0xC2, 0x99, 0x21, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0xA8, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x00, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x23, 0xF3, 0x18, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x18, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, -0x01, 0x6D, 0x23, 0xF3, 0x1C, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, -0x44, 0x9A, 0xA3, 0xF3, 0x18, 0x6C, 0x00, 0x6E, -0x40, 0xEA, 0x03, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x07, 0x95, 0xE3, 0xF5, 0xE8, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, 0x18, 0x4C, -0x00, 0x6E, 0x80, 0x18, 0xE1, 0x4E, 0x06, 0x92, -0x04, 0x49, 0x01, 0x4A, 0x02, 0x72, 0x06, 0xD2, -0x7F, 0xF7, 0x1E, 0x61, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF3, 0x45, 0xA2, -0xFF, 0x69, 0x8C, 0xE9, 0x02, 0x72, 0x02, 0x6A, -0x05, 0xD2, 0x02, 0x60, 0x04, 0x6B, 0x05, 0xD3, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0x6E, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, -0x40, 0xEA, 0x01, 0x6D, 0x03, 0xF3, 0x08, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0x72, 0x3C, 0x04, 0xD2, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, -0x06, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, 0x01, 0x6E, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF4, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, 0xA3, 0xF3, +0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x03, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x95, +0xE4, 0xF4, 0xEC, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0x70, 0xF1, 0x08, 0x4C, 0x00, 0x6E, 0x80, 0x18, +0xF0, 0x53, 0x06, 0x92, 0x04, 0x49, 0x01, 0x4A, +0x02, 0x72, 0x06, 0xD2, 0x7F, 0xF7, 0x1E, 0x61, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x21, 0x6A, +0xB0, 0xF4, 0x5D, 0xA2, 0xFF, 0x69, 0x8C, 0xE9, +0x02, 0x72, 0x02, 0x6A, 0x05, 0xD2, 0x02, 0x60, +0x04, 0x6B, 0x05, 0xD3, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6E, 0x03, 0xF3, +0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x01, 0x6D, +0x03, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x80, 0x18, +0xE1, 0x39, 0x04, 0xD2, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0x00, 0x68, 0x91, 0x67, 0x80, 0x18, 0xBF, 0x29, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x68, 0xF4, 0x68, 0xA2, 0x06, 0x73, 0x0B, 0x60, -0x05, 0x21, 0x68, 0xF4, 0x50, 0xA2, 0x05, 0x93, -0x6E, 0xEA, 0x05, 0x22, 0x01, 0x48, 0xFF, 0x6A, -0x4C, 0xE8, 0x64, 0x70, 0xEA, 0x61, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x06, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, 0x03, 0xF3, -0x08, 0x69, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x06, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, 0x01, 0x6D, -0x91, 0x67, 0xAB, 0xED, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xAE, 0xF7, 0x18, 0x4C, 0x00, 0x6D, 0x18, 0x6E, -0x80, 0x18, 0x9C, 0x4E, 0x30, 0xF0, 0x20, 0x6B, -0x06, 0xF0, 0x00, 0x6C, 0xA6, 0xF6, 0x00, 0x4B, -0x4C, 0xEC, 0xE8, 0xF7, 0x4C, 0xDB, 0x82, 0x32, -0x52, 0x32, 0x02, 0x72, 0x0A, 0x60, 0x03, 0x6C, -0x4E, 0xEC, 0x04, 0x24, 0x01, 0x72, 0x02, 0x6A, -0x07, 0x60, 0x05, 0x10, 0x68, 0xF4, 0x85, 0xC3, -0x05, 0x10, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x68, 0xF4, 0x45, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x7C, 0x9B, 0xE8, 0xF7, 0x8C, 0x9A, -0x8C, 0xEB, 0x62, 0x33, 0x62, 0x33, 0x68, 0xF4, -0x64, 0xC2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xF1, 0x63, 0x1D, 0x62, 0x1C, 0xD1, 0x1B, 0xD0, -0x08, 0xA4, 0x02, 0x6A, 0x01, 0x69, 0x0C, 0xEA, -0x46, 0x32, 0x18, 0xD2, 0x80, 0x18, 0x38, 0x1D, -0x80, 0x18, 0x88, 0x2A, 0x80, 0x18, 0xA1, 0x28, -0x00, 0x6C, 0x80, 0x18, 0x16, 0x1E, 0x90, 0x67, -0x2C, 0xEC, 0x00, 0x6D, 0x80, 0x18, 0x6A, 0x28, -0x80, 0xF0, 0x00, 0x2A, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x68, 0xF4, 0x66, 0xA0, -0x68, 0xF4, 0x48, 0xC0, 0x68, 0xF4, 0x47, 0xC0, -0x01, 0x4B, 0x68, 0xF4, 0x66, 0xC0, 0x68, 0xF4, -0x50, 0xC0, 0x68, 0xF4, 0x31, 0xC0, 0x38, 0x6C, -0x80, 0x18, 0x99, 0x21, 0x00, 0x6C, 0x29, 0xF0, -0x44, 0xD8, 0xA4, 0x67, 0x80, 0x18, 0x0A, 0x26, -0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6F, -0x04, 0x04, 0x0D, 0x05, 0x82, 0xF2, 0x14, 0x4E, -0xA2, 0xF2, 0x00, 0x4F, 0x80, 0x18, 0xE9, 0x21, -0x30, 0xF0, 0x20, 0x6D, 0x07, 0x04, 0xE2, 0xF2, -0x14, 0x4D, 0x80, 0x18, 0xA9, 0x25, 0x00, 0x68, -0x80, 0x18, 0x0F, 0x21, 0x01, 0x6C, 0x80, 0x18, -0x52, 0x1E, 0x18, 0x94, 0x80, 0x18, 0x4C, 0x2A, -0x00, 0x6C, 0x80, 0x18, 0x52, 0x1E, 0x30, 0xF0, -0x20, 0x6C, 0xE2, 0xF2, 0x14, 0x4C, 0x07, 0x05, -0x80, 0x18, 0x9B, 0x24, 0x30, 0xF0, 0x20, 0x6E, -0x30, 0xF0, 0x20, 0x6F, 0x04, 0x04, 0x0D, 0x05, -0x82, 0xF2, 0x14, 0x4E, 0xA2, 0xF2, 0x00, 0x4F, -0x80, 0x18, 0xCC, 0x20, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x68, 0xF4, 0x68, 0xA2, -0x06, 0x73, 0x08, 0x60, 0xFF, 0x6B, 0x01, 0x48, -0x6C, 0xE8, 0x03, 0x70, 0x00, 0x6B, 0x68, 0xF4, -0x70, 0xC2, 0xD2, 0x61, 0x30, 0xF0, 0x20, 0x68, -0x00, 0x6C, 0x80, 0x18, 0xE4, 0x1D, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0xFF, 0x6D, -0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x10, 0x69, 0x91, 0x67, 0xFF, 0x6D, -0xAA, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x00, 0x6C, 0xFF, 0x6D, 0x0A, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0xFF, 0x6D, 0xAA, 0x6E, 0x40, 0xEA, 0x01, 0x6C, -0x80, 0x18, 0x16, 0x1E, 0x1D, 0x97, 0x1C, 0x91, -0x1B, 0x90, 0x00, 0x6A, 0x0F, 0x63, 0x00, 0xEF, -0xF2, 0x63, 0x1B, 0x62, 0x1A, 0xD0, 0x30, 0xF0, -0x20, 0x6D, 0x04, 0x67, 0x42, 0xF7, 0x0C, 0x4D, -0x04, 0x04, 0x54, 0x6E, 0x00, 0x18, 0xD5, 0xD3, -0x00, 0x6A, 0x26, 0x20, 0x70, 0x67, 0x01, 0x73, -0x03, 0x60, 0x66, 0x33, 0x01, 0x4A, 0xFB, 0x17, -0x01, 0x6C, 0x01, 0x4A, 0x64, 0x67, 0x04, 0x10, -0x01, 0x4B, 0xFF, 0x6D, 0x84, 0x34, 0xAC, 0xEB, -0x63, 0xEA, 0xFA, 0x60, 0x64, 0x6B, 0x78, 0xE8, -0x05, 0x6D, 0x12, 0xE8, 0x9B, 0xE8, 0x01, 0x2C, -0xE5, 0xE8, 0x12, 0xEC, 0xBB, 0xEC, 0x01, 0x2D, -0xE5, 0xE8, 0x12, 0xEC, 0x15, 0x5C, 0x78, 0xEA, -0x12, 0xEA, 0x01, 0x61, 0x14, 0x6C, 0x7D, 0x67, -0x88, 0x34, 0x91, 0xE3, 0x64, 0x9C, 0x6B, 0xE2, -0x1B, 0x97, 0x1A, 0x90, 0x0E, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x26, 0x67, 0xA3, 0xF5, -0xD8, 0x9B, 0x05, 0x67, 0x01, 0x6D, 0x0D, 0xD7, -0x63, 0xF5, 0x10, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x00, 0x6A, 0x04, 0xD2, 0x0E, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xA8, 0xC0, 0x99, 0xC0, 0xF3, -0x44, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x04, 0x93, 0x04, 0x48, 0x04, 0x49, 0x01, 0x4B, -0x04, 0xD3, 0x04, 0x92, 0x0D, 0x93, 0x63, 0xEA, -0xEE, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, -0x0C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF3, 0x14, 0x6C, 0xF0, 0x6D, 0x04, 0x6E, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, +0x06, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x6D, +0x01, 0x6E, 0x40, 0xEA, 0x00, 0x68, 0x91, 0x67, +0x80, 0x18, 0x24, 0x27, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA8, 0xF2, 0x70, 0xA2, +0x06, 0x73, 0x0B, 0x60, 0x05, 0x21, 0xA8, 0xF2, +0x58, 0xA2, 0x05, 0x93, 0x6E, 0xEA, 0x05, 0x22, +0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, 0x64, 0x70, +0xEA, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x96, 0x03, 0xF3, 0x08, 0x69, 0x01, 0x6D, +0x91, 0x67, 0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x06, 0x6D, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x04, 0x96, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x68, 0xAC, 0xE8, -0xD0, 0x67, 0xA3, 0xF0, 0x04, 0x6C, 0x80, 0x6D, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xD0, 0x67, -0xA8, 0xF1, 0x04, 0x6C, 0x80, 0x6D, 0x40, 0xEA, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x68, 0x03, 0xF6, 0x2C, 0x9A, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x00, 0x6C, -0xB1, 0x67, 0x1F, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0xA8, 0xF1, 0x00, 0x6C, -0x1F, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF6, 0x30, 0x9A, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF0, 0x08, 0x6C, 0xB1, 0x67, 0x1F, 0x6E, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0xEC, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, +0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0xAB, 0x53, +0x30, 0xF0, 0x20, 0x6B, 0x06, 0xF0, 0x00, 0x6C, +0x08, 0xF2, 0x10, 0x4B, 0x4C, 0xEC, 0x28, 0xF6, +0x54, 0xDB, 0x82, 0x32, 0x52, 0x32, 0x02, 0x72, +0x0A, 0x60, 0x03, 0x6C, 0x4E, 0xEC, 0x04, 0x24, +0x01, 0x72, 0x02, 0x6A, 0x07, 0x60, 0x05, 0x10, +0xA8, 0xF2, 0x8D, 0xC3, 0x05, 0x10, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0xA8, 0xF2, 0x4D, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0x70, 0x9B, +0x28, 0xF6, 0x94, 0x9A, 0x8C, 0xEB, 0x62, 0x33, +0x62, 0x33, 0xA8, 0xF2, 0x6C, 0xC2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xF1, 0x63, 0x1D, 0x62, +0x1C, 0xD1, 0x1B, 0xD0, 0x08, 0xA4, 0x02, 0x6A, +0x01, 0x69, 0x0C, 0xEA, 0x46, 0x32, 0x18, 0xD2, +0x80, 0x18, 0xC2, 0x1A, 0x80, 0x18, 0xED, 0x27, +0x80, 0x18, 0x06, 0x26, 0x00, 0x6C, 0x80, 0x18, +0xA0, 0x1B, 0x90, 0x67, 0x2C, 0xEC, 0x00, 0x6D, +0x80, 0x18, 0xCF, 0x25, 0x80, 0xF0, 0x00, 0x2A, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA8, 0xF2, 0x6E, 0xA0, 0xA8, 0xF2, 0x50, 0xC0, +0xA8, 0xF2, 0x4F, 0xC0, 0x01, 0x4B, 0xA8, 0xF2, +0x6E, 0xC0, 0xA8, 0xF2, 0x58, 0xC0, 0xA8, 0xF2, +0x39, 0xC0, 0x38, 0x6C, 0x80, 0x18, 0xFE, 0x1E, +0x00, 0x6C, 0x68, 0xF6, 0x4C, 0xD8, 0xA4, 0x67, +0x80, 0x18, 0x6F, 0x23, 0x30, 0xF0, 0x20, 0x6E, +0x30, 0xF0, 0x20, 0x6F, 0x04, 0x04, 0x0D, 0x05, +0x82, 0xF0, 0x0C, 0x4E, 0x82, 0xF0, 0x18, 0x4F, +0x80, 0x18, 0x4E, 0x1F, 0x30, 0xF0, 0x20, 0x6D, +0x07, 0x04, 0xE2, 0xF0, 0x0C, 0x4D, 0x80, 0x18, +0x0E, 0x23, 0x00, 0x68, 0x80, 0x18, 0x74, 0x1E, +0x01, 0x6C, 0x80, 0x18, 0xB7, 0x1B, 0x18, 0x94, +0x80, 0x18, 0xB1, 0x27, 0x00, 0x6C, 0x80, 0x18, +0xB7, 0x1B, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF0, +0x0C, 0x4C, 0x07, 0x05, 0x80, 0x18, 0x00, 0x22, +0x30, 0xF0, 0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6F, +0x04, 0x04, 0x0D, 0x05, 0x82, 0xF0, 0x0C, 0x4E, +0x82, 0xF0, 0x18, 0x4F, 0x80, 0x18, 0x31, 0x1E, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA8, 0xF2, 0x70, 0xA2, 0x06, 0x73, 0x08, 0x60, +0xFF, 0x6B, 0x01, 0x48, 0x6C, 0xE8, 0x03, 0x70, +0x00, 0x6B, 0xA8, 0xF2, 0x78, 0xC2, 0xD2, 0x61, +0x30, 0xF0, 0x20, 0x68, 0x00, 0x6C, 0x80, 0x18, +0x6E, 0x1B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x00, 0x6C, 0xFF, 0x6D, 0x08, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x10, 0x69, +0x91, 0x67, 0xFF, 0x6D, 0xAA, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, +0xFF, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0xFF, 0x6D, 0xAA, 0x6E, +0x40, 0xEA, 0x01, 0x6C, 0x80, 0x18, 0xA0, 0x1B, +0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, 0x00, 0x6A, +0x0F, 0x63, 0x00, 0xEF, 0xF2, 0x63, 0x1B, 0x62, +0x1A, 0xD0, 0x30, 0xF0, 0x20, 0x6D, 0x04, 0x67, +0x83, 0xF6, 0x00, 0x4D, 0x04, 0x04, 0x54, 0x6E, +0x00, 0x18, 0xCA, 0xD8, 0x00, 0x6A, 0x26, 0x20, +0x70, 0x67, 0x01, 0x73, 0x03, 0x60, 0x66, 0x33, +0x01, 0x4A, 0xFB, 0x17, 0x01, 0x6C, 0x01, 0x4A, +0x64, 0x67, 0x04, 0x10, 0x01, 0x4B, 0xFF, 0x6D, +0x84, 0x34, 0xAC, 0xEB, 0x63, 0xEA, 0xFA, 0x60, +0x64, 0x6B, 0x78, 0xE8, 0x05, 0x6D, 0x12, 0xE8, +0x9B, 0xE8, 0x01, 0x2C, 0xE5, 0xE8, 0x12, 0xEC, +0xBB, 0xEC, 0x01, 0x2D, 0xE5, 0xE8, 0x12, 0xEC, +0x15, 0x5C, 0x78, 0xEA, 0x12, 0xEA, 0x01, 0x61, +0x14, 0x6C, 0x7D, 0x67, 0x88, 0x34, 0x91, 0xE3, +0x64, 0x9C, 0x6B, 0xE2, 0x1B, 0x97, 0x1A, 0x90, +0x0E, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x26, 0x67, 0xC4, 0xF4, 0xC0, 0x9B, 0x05, 0x67, +0x01, 0x6D, 0x0D, 0xD7, 0x63, 0xF5, 0x10, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x00, 0x6A, 0x04, 0xD2, +0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xA8, +0xC0, 0x99, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x04, 0x93, 0x04, 0x48, +0x04, 0x49, 0x01, 0x4B, 0x04, 0xD3, 0x04, 0x92, +0x0D, 0x93, 0x63, 0xEA, 0xEE, 0x61, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, +0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x14, 0x6C, +0xF0, 0x6D, 0x04, 0x6E, 0x40, 0xEA, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, +0xFF, 0x68, 0xAC, 0xE8, 0xD0, 0x67, 0xA3, 0xF0, +0x04, 0x6C, 0x80, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0xD0, 0x67, 0xA8, 0xF1, 0x04, 0x6C, +0x80, 0x6D, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x68, +0x04, 0xF5, 0x30, 0x9A, 0xC0, 0xF3, 0x44, 0x98, +0xA3, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x1F, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0xE8, 0xF1, 0x08, 0x6C, 0x1F, 0x6E, 0x40, 0xEA, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x08, 0xD4, 0x80, 0xF1, 0x16, 0x22, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, -0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, -0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x04, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, -0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, -0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF5, 0x04, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, -0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x10, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, -0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF5, 0x1C, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, -0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x08, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x0C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF5, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, -0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF5, 0x18, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, -0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x08, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF5, 0x0C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF5, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, -0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0x18, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x43, 0xF5, 0x18, 0x4B, -0x70, 0x12, 0x08, 0x93, 0x60, 0xF0, 0x5B, 0xA3, -0xE0, 0xF0, 0x1B, 0x22, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF5, 0xDC, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, -0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x08, 0x92, 0x04, 0x6B, 0x63, 0xF0, 0x00, 0x6C, -0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0x0E, 0xF0, 0x00, 0x6D, 0x67, 0xEE, 0xC3, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, -0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x04, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, -0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x08, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, -0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x0C, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, -0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, -0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, -0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, -0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x04, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, -0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x08, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, -0x80, 0xF0, 0xD1, 0xA2, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x0C, 0x4B, 0x60, 0x9B, -0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, -0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, 0xD1, 0xA2, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, -0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, -0x10, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, -0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, -0xD1, 0xA2, 0xB1, 0x67, 0xC0, 0xF3, 0x44, 0x98, -0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x18, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, -0xA7, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF6, 0xD4, 0x9B, 0xC0, 0xF3, +0xA8, 0xF1, 0x00, 0x6C, 0x1F, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF5, 0x34, 0x9A, +0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF0, 0x08, 0x6C, +0xB1, 0x67, 0x1F, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0xE8, 0xF1, 0x08, 0x6C, +0x1F, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0xAC, 0xEA, 0x08, 0xD4, 0x80, 0xF1, +0x16, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF4, -0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x04, 0x4B, +0x18, 0x6C, 0xB1, 0x67, 0xD1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x24, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x24, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF5, 0x00, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0x20, 0x6B, 0x24, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x24, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, 0x00, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x08, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x24, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0x24, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF4, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x08, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x44, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, +0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF4, 0x18, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0x83, 0xF5, 0x10, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x64, 0xF4, 0x00, 0x4B, 0x70, 0x12, 0x08, 0x93, +0x60, 0xF0, 0x5F, 0xA3, 0xE0, 0xF0, 0x1B, 0x22, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, +0x63, 0xF0, 0x00, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0x0E, 0xF0, 0x00, 0x6D, +0x67, 0xEE, 0xC3, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, +0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0x0C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, +0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF4, 0x10, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, +0x23, 0xF0, 0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0x14, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, 0x10, 0x6C, +0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF4, 0x18, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, 0x23, 0xF0, +0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x00, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, +0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0x0C, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, +0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF4, 0x10, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, +0x28, 0xF1, 0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x67, 0xEE, +0xC3, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0x14, 0x4B, 0x60, 0x9B, 0x6D, 0xEE, 0x40, 0xEA, +0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, 0x10, 0x6C, +0x80, 0xF0, 0xD5, 0xA2, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x67, 0xEE, 0xC3, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF4, 0x18, 0x4B, 0x60, 0x9B, +0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x08, 0x92, 0x04, 0x6B, 0x28, 0xF1, +0x10, 0x6C, 0x80, 0xF0, 0xD5, 0xA2, 0xB1, 0x67, +0xC0, 0xF3, 0x44, 0x98, 0x67, 0xEE, 0xC3, 0x67, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x00, 0x4B, +0x60, 0x9B, 0x6D, 0xEE, 0xA7, 0x10, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF5, +0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, +0x2B, 0xE9, 0x23, 0xF4, 0x18, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, +0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x14, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x84, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x84, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0x04, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, 0x10, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, 0x1C, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF4, 0x14, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, +0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF5, 0x14, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0x84, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF5, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x84, 0xF4, 0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF5, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, 0x00, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, 0x14, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x84, 0xF4, +0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF4, 0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, +0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x04, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF4, 0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, +0x10, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x14, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF4, +0x1C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF5, 0x04, 0x4B, 0xC0, 0x9B, +0x20, 0x6B, 0xA4, 0xF4, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, +0xA4, 0xF4, 0x08, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF5, -0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, +0x0C, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x30, 0xF0, 0x20, 0x6B, -0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0xA3, 0xF5, -0x10, 0x4B, 0xC0, 0x9B, 0x40, 0xEA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xED, 0x1E, 0xF0, -0x01, 0x4D, 0x6C, 0xED, 0x02, 0x5D, 0x6C, 0xEE, -0x09, 0x61, 0x02, 0xF0, 0x00, 0x76, 0x06, 0x60, -0xE1, 0xF7, 0x1F, 0x6A, 0x4E, 0xEE, 0x01, 0x5E, -0x58, 0x67, 0x20, 0xE8, 0x01, 0x6A, 0x20, 0xE8, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0xAC, 0xEA, 0x50, 0x6B, 0x78, 0xEA, -0xE0, 0xF0, 0x68, 0x44, 0x24, 0x67, 0x12, 0xEA, -0x90, 0xF0, 0x08, 0x42, 0x4D, 0xE3, 0x01, 0xE4, -0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF6, -0xB8, 0x9A, 0x40, 0x98, 0xE3, 0xF7, 0x1F, 0x6E, -0x91, 0x67, 0x4C, 0xED, 0xA2, 0x35, 0xA2, 0x35, -0x4C, 0xEE, 0x80, 0x18, 0x62, 0x2D, 0x02, 0x22, -0x00, 0x6A, 0x05, 0x10, 0x04, 0x92, 0x04, 0x48, -0x4A, 0xE8, 0xEB, 0x61, 0x01, 0x6A, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0x4C, 0xED, -0x4C, 0xEE, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, -0x2B, 0xE9, 0x0C, 0xD4, 0x05, 0xD5, 0x06, 0xD6, -0xB1, 0x67, 0x03, 0xF3, 0x00, 0x6C, 0x0C, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, -0xC3, 0xF3, 0x14, 0x6C, 0xF0, 0x6E, 0x40, 0xEA, -0x05, 0x93, 0x50, 0x6A, 0x03, 0xF3, 0x0C, 0x68, -0x58, 0xEB, 0x0C, 0x93, 0x00, 0x69, 0x12, 0xEA, -0x7F, 0x4A, 0x19, 0x4A, 0x49, 0xE3, 0x04, 0xD2, -0x05, 0x92, 0x90, 0x67, 0x05, 0x22, 0x87, 0x40, -0x51, 0x4C, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, -0x06, 0x93, 0x0A, 0x2B, 0x03, 0x71, 0x03, 0x60, -0xE3, 0xF7, 0x1F, 0x6E, 0x07, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF6, 0xDC, 0x9A, 0x02, 0x10, -0x04, 0x92, 0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x04, 0x93, 0xFF, 0x6A, 0x01, 0x49, -0x4C, 0xE9, 0x04, 0x4B, 0x04, 0x48, 0xFF, 0xF7, -0x1F, 0x6A, 0x14, 0x71, 0x04, 0xD3, 0x4C, 0xE8, -0xD7, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0x20, 0xE8, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x24, 0x67, 0x0F, 0x6D, -0x03, 0xF3, 0x00, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x10, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x60, 0xF0, -0xD9, 0xA1, 0x03, 0xF3, 0x08, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0x10, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x60, 0xF0, -0xD9, 0xA1, 0x63, 0xF3, 0x00, 0x6C, 0x40, 0xEA, -0x60, 0xF0, 0x58, 0xA1, 0x2C, 0x22, 0x60, 0xF0, -0x5E, 0xA9, 0x01, 0x6B, 0x6C, 0xEA, 0x10, 0x22, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, -0x18, 0xF0, 0x00, 0x6D, 0xC3, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x20, 0xF1, 0xD8, 0xA9, -0x03, 0xF3, 0x04, 0x6C, 0xFF, 0x6D, 0x40, 0xEA, -0x60, 0xF0, 0x5E, 0xA9, 0x02, 0x6B, 0x6C, 0xEA, -0x3C, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x63, 0xF3, 0x00, 0x6C, 0x18, 0xF0, -0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF3, 0x1C, 0x6C, 0xFF, 0x6D, -0x20, 0xF1, 0xDA, 0xA9, 0x29, 0x10, 0x60, 0xF0, -0x5E, 0xA9, 0x01, 0x6B, 0x6C, 0xEA, 0x0F, 0x22, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, -0x18, 0xF0, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x04, 0x6C, -0xFF, 0x6D, 0x5B, 0x6E, 0x40, 0xEA, 0x60, 0xF0, -0x5E, 0xA9, 0x02, 0x6B, 0x6C, 0xEA, 0x11, 0x22, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF3, 0x00, 0x6C, 0x18, 0xF0, 0x00, 0x6D, -0x03, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x43, 0xF3, 0x1C, 0x6C, 0xFF, 0x6D, 0x5B, 0x6E, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0x10, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF4, 0x14, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0xC0, 0x9B, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x30, 0xF0, 0x20, 0x6B, 0x28, 0xF1, 0x10, 0x6C, +0xB1, 0x67, 0xA4, 0xF4, 0x18, 0x4B, 0xC0, 0x9B, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x63, 0xF3, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x20, 0xF5, 0x00, 0x6C, -0xFF, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF6, 0x10, 0x6C, 0x0F, 0x6D, 0x02, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, -0x28, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0xAE, 0xF7, -0x18, 0x48, 0x00, 0x6D, 0x90, 0x67, 0xC5, 0x67, -0xF1, 0x67, 0x80, 0x18, 0x9C, 0x4E, 0xFF, 0x6B, -0x4C, 0xEB, 0x90, 0x67, 0xF1, 0x67, 0x01, 0x6D, -0x00, 0x6E, 0x04, 0xD3, 0xFF, 0x69, 0x80, 0x18, -0x9C, 0x4E, 0x4C, 0xE9, 0x00, 0x68, 0x27, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, 0x08, 0x4A, -0xE0, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0xAE, 0xF7, -0x18, 0x49, 0x00, 0x6D, 0x91, 0x67, 0xC5, 0x67, -0x80, 0x18, 0x9C, 0x4E, 0xFF, 0x6B, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF5, 0x08, 0x4A, -0xE0, 0x9A, 0x91, 0x67, 0x01, 0x6D, 0x00, 0x6E, -0x04, 0xD3, 0xFF, 0x69, 0x80, 0x18, 0x9C, 0x4E, -0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x02, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x04, 0x93, -0x02, 0x73, 0x02, 0x60, 0x02, 0x71, 0x03, 0x61, -0xC1, 0xF1, 0x04, 0x70, 0xD1, 0x61, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x04, 0x67, 0x80, 0x18, 0xF1, 0x2D, 0x60, 0xF0, -0x5B, 0xA0, 0x1E, 0x22, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0xB8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, 0x1C, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF4, 0x38, 0x9A, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF0, 0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA8, 0xF1, -0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF6, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF5, 0x18, 0x6C, -0xE1, 0xF7, 0x18, 0x6D, 0xE0, 0xF1, 0x1F, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, -0x30, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, -0x04, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x68, 0xF1, -0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF4, 0x2C, 0x9A, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0xB1, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xB1, 0x67, 0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF0, -0x0C, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x68, 0xF1, 0x0C, 0x6C, -0x80, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0x03, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0xF1, 0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, -0x14, 0x6C, 0x00, 0xF3, 0x00, 0x6D, 0x03, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, -0x0C, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF5, 0xA8, 0x9B, 0x21, 0xF0, 0x04, 0x69, -0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF4, -0xAC, 0x9B, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6A, 0x25, 0x67, -0x04, 0xD6, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x14, 0x4B, 0xC0, 0x99, 0xE0, 0x9B, -0x30, 0xF0, 0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x9C, 0x4E, -0x04, 0x93, 0x90, 0x67, 0x01, 0x6D, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, -0xC0, 0x99, 0xE0, 0x9A, 0x04, 0x49, 0x80, 0x18, -0x9C, 0x4E, 0x04, 0x93, 0x41, 0xDB, 0x05, 0x92, -0x08, 0x4B, 0x04, 0xD3, 0x01, 0x4A, 0x07, 0x72, -0x05, 0xD2, 0xDC, 0x61, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x2C, 0xEE, -0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, 0x04, 0xD6, -0x2C, 0xEF, 0xC4, 0x36, 0x0A, 0xD4, 0x0B, 0xD5, -0x4D, 0xEE, 0x05, 0xD7, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x40, 0xEB, 0x05, 0x92, 0x0C, 0x22, -0x0B, 0x96, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xFA, 0x4E, 0x63, 0xF3, 0x04, 0x6C, -0xC3, 0xF5, 0xB4, 0x9B, 0x2C, 0xEE, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF5, 0xB4, 0x9B, 0x63, 0xF3, 0x04, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x0A, 0x93, 0x04, 0x92, -0x63, 0xF3, 0x04, 0x6C, 0x41, 0xE3, 0x7D, 0x67, -0x47, 0x43, 0x0D, 0x4A, 0x60, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0xB4, 0x9A, 0x80, 0xF0, -0x73, 0xC0, 0x80, 0x18, 0x72, 0x3C, 0x80, 0xF0, -0x55, 0xC0, 0x0A, 0x94, 0x04, 0x95, 0x05, 0x96, -0x80, 0x18, 0x82, 0x2D, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x4C, 0xEF, 0x4C, 0xED, 0x24, 0x67, -0x0C, 0xD6, 0x04, 0xD7, 0x05, 0x2D, 0xA7, 0x67, -0x80, 0x18, 0x6C, 0x2D, 0x01, 0x68, 0x01, 0x2A, -0x00, 0x68, 0x0C, 0x95, 0x04, 0x96, 0x91, 0x67, -0xF0, 0x67, 0x80, 0x18, 0x90, 0x2E, 0x50, 0x67, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xE3, 0xF3, 0x1C, 0x68, -0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x80, 0x18, -0x72, 0x3C, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF6, -0xA0, 0x9A, 0x90, 0x67, 0xFF, 0xF7, 0x1F, 0x69, -0x80, 0x18, 0x72, 0x3C, 0x90, 0x67, 0xB1, 0x67, -0x04, 0xD2, 0x80, 0x18, 0x72, 0x3C, 0xE3, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x04, 0xF0, 0x00, 0x6C, -0x53, 0xE4, 0x04, 0x92, 0x6C, 0xEC, 0xFF, 0x4C, -0x4C, 0xEB, 0x2C, 0xEC, 0x60, 0x32, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x40, 0x32, 0x8D, 0xEA, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x04, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6B, +0x6C, 0xED, 0x1E, 0xF0, 0x01, 0x4D, 0x6C, 0xED, +0x02, 0x5D, 0x6C, 0xEE, 0x09, 0x61, 0x02, 0xF0, +0x00, 0x76, 0x06, 0x60, 0xE1, 0xF7, 0x1F, 0x6A, +0x4E, 0xEE, 0x01, 0x5E, 0x58, 0x67, 0x20, 0xE8, +0x01, 0x6A, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x30, 0xF0, 0x20, 0x68, 0x05, 0xD2, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0x6D, 0x24, 0x67, 0xAB, 0xED, -0x03, 0xF3, 0x00, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, -0x05, 0x93, 0x0F, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF4, 0xB0, 0x9B, -0xA3, 0xF3, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x04, 0x6C, -0x11, 0x10, 0x05, 0x94, 0x01, 0x74, 0x15, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x43, 0xF4, 0xB0, 0x9B, 0xA3, 0xF3, 0x14, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x43, 0xF3, 0x1C, 0x6C, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF6, 0xC4, 0x9B, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x23, 0xF6, -0xC8, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0xC3, 0xF3, -0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC5, 0x2E, 0x05, 0x94, 0x50, 0x6D, 0xB8, 0xEC, -0xAF, 0x4D, 0xC3, 0xF3, 0x14, 0x6C, 0x12, 0xEB, -0x6D, 0xE1, 0x04, 0xD3, 0x80, 0xF0, 0x58, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x23, 0xF6, 0xCC, 0x9A, 0x40, 0xEB, 0x91, 0x67, -0x80, 0x18, 0xC5, 0x2E, 0x04, 0x93, 0x01, 0x6D, -0xAB, 0xED, 0x80, 0xF0, 0x5C, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x23, 0xF6, -0xD0, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, 0x04, 0x94, -0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x23, 0xF6, 0xD4, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, -0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, -0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, 0xA0, 0xF0, -0x44, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0x23, 0xF6, 0xD8, 0x9A, 0x01, 0x6D, -0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC5, 0x2E, 0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, -0xA0, 0xF0, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0x23, 0xF6, 0xDC, 0x9A, -0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, -0x80, 0x18, 0xC5, 0x2E, 0x04, 0x94, 0x01, 0x6D, -0xAB, 0xED, 0xA0, 0xF0, 0x4C, 0xDC, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x43, 0xF6, -0xC0, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, 0x04, 0x95, -0xC3, 0xF3, 0x14, 0x6C, 0xA0, 0xF0, 0x50, 0xDD, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x43, 0xF6, 0xC4, 0x9A, 0x01, 0x6D, 0xAB, 0xED, -0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, -0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, -0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0x43, 0xF6, 0xC8, 0x9A, 0xC3, 0xF3, -0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC5, 0x2E, 0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, -0xA0, 0xF0, 0x58, 0xDC, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0x43, 0xF6, 0xCC, 0x9A, -0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, -0x80, 0x18, 0xC5, 0x2E, 0x04, 0x95, 0xC3, 0xF3, -0x14, 0x6C, 0xA0, 0xF0, 0x5C, 0xDD, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x43, 0xF6, -0xD0, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, 0x04, 0x93, -0x01, 0x6D, 0xAB, 0xED, 0xC0, 0xF0, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x43, 0xF6, 0xD4, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, -0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, -0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, 0xC0, 0xF0, -0x44, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0x43, 0xF6, 0xD8, 0x9A, 0xC3, 0xF3, -0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC5, 0x2E, 0x05, 0x93, 0x50, 0x6C, 0x01, 0x6D, -0x01, 0x4B, 0x98, 0xEB, 0xAB, 0xED, 0x83, 0xF3, -0x04, 0x4C, 0x12, 0xEB, 0x6D, 0xE1, 0x5E, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x43, 0xF6, 0xDC, 0x9A, 0x40, 0xEB, 0x91, 0x67, -0x80, 0x18, 0xC5, 0x2E, 0x04, 0x95, 0xC3, 0xF3, -0x14, 0x6C, 0xC0, 0xF0, 0x4C, 0xDD, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x63, 0xF6, -0xC0, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, 0x04, 0x93, -0x01, 0x6D, 0xAB, 0xED, 0xC0, 0xF0, 0x50, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, -0x63, 0xF6, 0xC4, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, -0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, -0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, 0xC0, 0xF0, -0x54, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x64, 0x98, 0x63, 0xF6, 0xC8, 0x9A, 0xC3, 0xF3, -0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, -0xC5, 0x2E, 0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, -0xC0, 0xF0, 0x58, 0xDD, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0x63, 0xF6, 0xCC, 0x9A, -0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, -0x80, 0x18, 0xC5, 0x2E, 0x04, 0x93, 0x01, 0x6D, -0xAB, 0xED, 0xC0, 0xF0, 0x5C, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x63, 0xF6, -0xD0, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, -0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, 0x04, 0x94, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, 0xD4, 0x9B, -0xE0, 0xF0, 0x40, 0xDC, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0xAB, 0xED, 0xC3, 0xF3, 0x14, 0x6C, -0x40, 0xEA, 0x91, 0x67, 0x80, 0x18, 0xC5, 0x2E, -0x04, 0x95, 0xE0, 0xF0, 0x44, 0xDD, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6A, 0x4C, 0xED, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0xA4, 0x36, -0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, -0x08, 0x69, 0x91, 0x67, 0x08, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF6, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0xC3, 0xF3, 0x14, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xE3, 0xF3, 0x1C, 0x6C, 0xF0, 0x6D, -0x80, 0x18, 0x72, 0x3C, 0x04, 0xD2, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x08, 0xF0, 0x00, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0xFF, 0x6B, 0x6C, 0xEA, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xFF, 0x6A, 0x4C, 0xED, 0x4C, 0xEE, 0x01, 0x69, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x2B, 0xE9, -0x04, 0xD6, 0xA4, 0x36, 0x6D, 0xEE, 0x03, 0xF3, -0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF3, 0x08, 0x6C, 0x08, 0xF0, -0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF6, 0xDC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF3, 0x14, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, -0x0C, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x04, 0x92, 0x04, 0x22, 0x02, 0x72, 0x00, 0x68, -0x2C, 0x60, 0x44, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0xCC, 0x9B, -0xB1, 0x67, 0x43, 0xF3, 0x0C, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF6, 0xA0, 0x9A, -0xE3, 0xF3, 0x1C, 0x69, 0x91, 0x67, 0x80, 0x18, -0x72, 0x3C, 0x91, 0x67, 0xFF, 0xF7, 0x1F, 0x6D, -0x02, 0x67, 0x80, 0x18, 0x72, 0x3C, 0x22, 0x67, -0x42, 0x32, 0x5E, 0x32, 0x05, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0x5C, 0x9A, 0x27, 0xE2, -0x02, 0x32, 0x5E, 0x32, 0x21, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0x5C, 0x9A, 0x03, 0xE2, -0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x6C, 0x9B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x00, 0xF6, -0x00, 0x36, 0x43, 0xF3, 0x0C, 0x6C, 0xB1, 0x67, -0x6D, 0xEE, 0x40, 0xEA, 0x01, 0x48, 0xE3, 0xF3, -0x1C, 0x6C, 0xB1, 0x67, 0x80, 0x18, 0x72, 0x3C, -0x40, 0x70, 0xE7, 0x61, 0x00, 0x68, 0x30, 0x67, +0x50, 0x6B, 0x78, 0xEA, 0xE0, 0xF0, 0x6C, 0x44, +0x24, 0x67, 0x12, 0xEA, 0x41, 0xE4, 0x7F, 0x48, +0x4D, 0xE3, 0x1D, 0x48, 0x04, 0xD3, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF5, 0xBC, 0x9A, 0x40, 0x98, +0xE3, 0xF7, 0x1F, 0x6E, 0x91, 0x67, 0x4C, 0xED, +0xA2, 0x35, 0xA2, 0x35, 0x4C, 0xEE, 0x80, 0x18, +0xC7, 0x2A, 0x02, 0x22, 0x00, 0x6A, 0x05, 0x10, +0x04, 0x92, 0x04, 0x48, 0x4A, 0xE8, 0xEB, 0x61, +0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x68, 0x4C, 0xED, 0x4C, 0xEE, 0x01, 0x69, +0xC0, 0xF3, 0x44, 0x98, 0x2B, 0xE9, 0x0C, 0xD4, +0x05, 0xD5, 0x06, 0xD6, 0xB1, 0x67, 0x03, 0xF3, +0x00, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xB1, 0x67, 0xC3, 0xF3, 0x14, 0x6C, +0xF0, 0x6E, 0x40, 0xEA, 0x05, 0x93, 0x50, 0x6A, +0x03, 0xF3, 0x0C, 0x68, 0x58, 0xEB, 0x0C, 0x93, +0x00, 0x69, 0x12, 0xEA, 0x49, 0xE3, 0x7F, 0x4A, +0x1D, 0x4A, 0x04, 0xD2, 0x05, 0x92, 0x90, 0x67, +0x05, 0x22, 0x87, 0x40, 0x51, 0x4C, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xEC, 0x06, 0x93, 0x0A, 0x2B, +0x03, 0x71, 0x03, 0x60, 0xE3, 0xF7, 0x1F, 0x6E, +0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF5, +0xC0, 0x9A, 0x02, 0x10, 0x04, 0x92, 0xC0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x01, 0x6D, 0x43, 0xF3, 0x0C, 0x6C, 0xAB, 0xED, -0x00, 0x6E, 0x40, 0xEA, 0x18, 0xE8, 0x09, 0x97, -0x12, 0xE8, 0x38, 0xE9, 0x12, 0xE9, 0x29, 0xE0, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x00, 0x6E, 0xC3, 0xF3, -0x14, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF4, 0xA0, 0x9A, 0xE3, 0xF3, 0x1C, 0x6C, -0x80, 0x18, 0x72, 0x3C, 0x05, 0x97, 0x04, 0x90, -0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF6, 0xC0, 0x9B, -0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0xC3, 0xF3, -0x14, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF4, 0xA0, 0x9A, 0xE3, 0xF3, -0x1C, 0x69, 0x91, 0x67, 0x80, 0x18, 0x72, 0x3C, -0xFF, 0xF7, 0x1F, 0x68, 0x91, 0x67, 0xE1, 0xF7, -0x1F, 0x6D, 0x4C, 0xE8, 0xFF, 0xF7, 0x1F, 0x69, -0x80, 0x18, 0x72, 0x3C, 0x4C, 0xE9, 0x02, 0x32, -0x4E, 0x32, 0x01, 0x72, 0x06, 0x61, 0x02, 0xF0, -0x00, 0x6A, 0x03, 0xE2, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE8, 0x22, 0x32, 0x4E, 0x32, 0x01, 0x72, -0x06, 0x61, 0x02, 0xF0, 0x00, 0x6A, 0x27, 0xE2, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, -0xF0, 0x6E, 0xC3, 0xF3, 0x14, 0x6C, 0xAB, 0xED, -0x40, 0xEA, 0xE3, 0xF3, 0x1C, 0x6C, 0xFF, 0x6D, -0x80, 0x18, 0x72, 0x3C, 0xE3, 0xF3, 0x1C, 0x6C, -0x1F, 0xF7, 0x00, 0x6D, 0x04, 0xD2, 0x80, 0x18, -0x72, 0x3C, 0xC9, 0x58, 0x0C, 0x60, 0xC9, 0x59, -0x0A, 0x60, 0x04, 0x93, 0xFF, 0x6A, 0x6C, 0xEA, -0x28, 0x5A, 0x05, 0x61, 0x42, 0x5A, 0x58, 0x67, -0x01, 0x6B, 0x6E, 0xEA, 0x01, 0x10, 0x01, 0x6A, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0xB8, 0x9A, 0x04, 0x67, 0x63, 0xF6, 0x1C, 0x6C, -0x80, 0x18, 0x72, 0x3C, 0x01, 0x22, 0x01, 0x6A, -0x60, 0xF0, 0x5B, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0xF4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xAE, 0xF7, 0x18, 0x4C, 0x00, 0x6D, 0x18, 0x6E, -0x80, 0x18, 0x9C, 0x4E, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x7C, 0x9B, 0x80, 0xF0, 0x50, 0xC0, -0x05, 0x97, 0x4C, 0xEB, 0x62, 0x33, 0x62, 0x33, -0x80, 0xF0, 0x71, 0xC0, 0x06, 0xF0, 0x00, 0x6B, -0x4C, 0xEB, 0x62, 0x33, 0x72, 0x33, 0x80, 0xF0, -0x72, 0xC0, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x6A, 0x0D, 0xD7, 0x05, 0x67, 0x26, 0x67, -0x04, 0xD2, 0x0B, 0x10, 0x80, 0xA8, 0x01, 0x6D, -0xAB, 0xED, 0x80, 0x18, 0x72, 0x3C, 0x40, 0xD9, -0x04, 0x93, 0x04, 0x48, 0x04, 0x49, 0x01, 0x4B, -0x04, 0xD3, 0x04, 0x92, 0x0D, 0x93, 0x63, 0xEA, -0xF1, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF2, 0x0C, 0x4B, 0xE0, 0x9B, 0xFF, 0x69, -0x30, 0xF0, 0x20, 0x68, 0xAC, 0xE9, 0xAE, 0xF7, -0x18, 0x48, 0x90, 0x67, 0xB1, 0x67, 0x01, 0x6A, -0x42, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x0C, 0x4A, 0xE0, 0x9A, 0x90, 0x67, -0xB1, 0x67, 0x42, 0x6E, 0x80, 0x18, 0xE1, 0x4E, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x0C, 0x4A, -0xE0, 0x9A, 0x01, 0x6B, 0xB1, 0x67, 0x90, 0x67, -0x42, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0F, 0x6C, 0x40, 0xEA, 0x90, 0x67, 0xB1, 0x67, -0x42, 0x6E, 0x7E, 0x6F, 0x80, 0x18, 0x9C, 0x4E, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0xFF, 0x6B, -0x6C, 0xEA, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x6A, 0x0A, 0xD4, 0x60, 0xF0, 0x5E, 0xCC, -0x0A, 0x90, 0x04, 0xD4, 0x00, 0x69, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x9A, 0x24, 0x36, -0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x43, 0xF3, 0x18, 0x6C, -0x7F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, -0x80, 0xF0, 0x55, 0xC0, 0x80, 0xF0, 0x53, 0xC0, -0x04, 0x94, 0x5B, 0x6B, 0xB1, 0x67, 0x20, 0xF1, -0x78, 0xCC, 0x80, 0xF0, 0x44, 0xC0, 0x0A, 0x94, -0x01, 0x49, 0x80, 0x18, 0x7B, 0x30, 0x80, 0xF0, -0x40, 0xC0, 0x04, 0x92, 0x02, 0x71, 0x01, 0x48, -0x02, 0x4A, 0x04, 0xD2, 0xD4, 0x61, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x0C, 0xD4, 0x80, 0xF0, 0x51, 0xA4, 0xFF, 0x68, -0xAC, 0xE8, 0x07, 0xD2, 0x5D, 0x2A, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0x30, 0xF0, -0x20, 0x6A, 0xE0, 0x9B, 0x83, 0xF6, 0x44, 0x9A, -0x30, 0xF0, 0x20, 0x69, 0xAE, 0xF7, 0x18, 0x49, -0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x14, 0x4A, 0xE0, 0x9A, 0x91, 0x67, -0xB0, 0x67, 0x56, 0x6E, 0x80, 0x18, 0x9C, 0x4E, -0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0xFC, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0xEC, 0x9A, 0x91, 0x67, 0xB0, 0x67, -0xDE, 0x6E, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0x07, 0x93, 0x83, 0xF6, 0xE8, 0x9A, -0x91, 0x67, 0xB0, 0x67, 0x55, 0x6E, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x14, 0x4B, 0xE0, 0x9B, 0x06, 0x92, -0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x55, 0x6E, 0x1C, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x07, 0x93, 0x30, 0xF0, -0x20, 0x6A, 0x91, 0x67, 0x04, 0xD3, 0xB0, 0x67, -0x87, 0x6E, 0x83, 0xF2, 0xE8, 0x9A, 0x6B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF6, 0x44, 0x9A, -0x30, 0xF0, 0x20, 0x69, 0xAE, 0xF7, 0x18, 0x49, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0x14, 0x4A, 0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x6E, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0xE0, 0x9B, -0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, 0x80, 0x18, -0x9C, 0x4E, 0x06, 0xD2, 0x01, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0xFC, 0x9A, -0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0xEC, 0x9A, 0x01, 0x6B, 0x91, 0x67, 0xB0, 0x67, -0xDE, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF6, 0xE8, 0x9A, 0x91, 0x67, 0xB0, 0x67, -0x55, 0x6E, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, 0x06, 0x93, -0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, -0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6B, -0x91, 0x67, 0xB0, 0x67, 0x63, 0x6E, 0x18, 0xF0, -0x00, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x06, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x63, 0x6E, -0x1C, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x63, 0x6E, -0x06, 0xF0, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x00, 0x6B, 0x04, 0xD3, 0x91, 0x67, -0xB0, 0x67, 0x8A, 0x6E, 0x18, 0x6F, 0x80, 0x18, -0xE1, 0x4E, 0x91, 0x67, 0x30, 0xF0, 0x20, 0x69, -0x0F, 0x6A, 0xB0, 0x67, 0x00, 0x6E, 0xE0, 0xF3, -0x00, 0x6F, 0xAE, 0xF7, 0x18, 0x49, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0xDE, 0x6E, 0x04, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6A, 0x91, 0x67, -0xB0, 0x67, 0x1A, 0x6E, 0x01, 0xF4, 0x00, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x0C, 0x93, -0x80, 0xF0, 0x52, 0xA3, 0x01, 0x72, 0x02, 0x6A, -0x01, 0x60, 0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, -0x1A, 0x6E, 0x0E, 0xF0, 0x00, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6C, -0xB0, 0x67, 0x8F, 0x6E, 0x02, 0x6F, 0x30, 0xF0, -0x20, 0x68, 0x01, 0x6A, 0xAE, 0xF7, 0x18, 0x4C, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x80, 0xF3, -0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x80, 0xF3, -0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x80, 0xF3, -0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x80, 0xF3, -0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x80, 0xF3, -0x4C, 0x98, 0x14, 0x6C, 0x40, 0xEA, 0x06, 0x93, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x1F, 0x6A, -0x6C, 0xEA, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x69, 0x0A, 0xD4, 0x00, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0xF4, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xFF, 0x6D, 0xAE, 0xF7, -0x18, 0x4C, 0x2C, 0xED, 0x19, 0x6E, 0x30, 0xF0, -0x20, 0x68, 0x80, 0x18, 0xE1, 0x4E, 0xC0, 0xF3, -0x64, 0x98, 0x08, 0x6A, 0x24, 0x36, 0x01, 0x6D, -0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, -0x40, 0xEB, 0x0A, 0x93, 0x80, 0xF0, 0x51, 0xA3, -0x0B, 0x2A, 0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x83, 0xF6, 0xCC, 0x9B, 0x0A, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x83, 0xF6, 0xD0, 0x9B, 0x01, 0x6D, 0x63, 0xF3, -0x00, 0x6C, 0xAB, 0xED, 0x30, 0xF0, 0x20, 0x68, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, -0x04, 0x6C, 0x0E, 0xF0, 0x00, 0x6D, 0x04, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF4, 0xA4, 0x9B, 0x23, 0xF3, -0x00, 0x6C, 0x03, 0x6E, 0x01, 0x49, 0x40, 0xEA, -0x02, 0x71, 0xB4, 0x61, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF6, 0xD4, 0x9B, 0x01, 0x69, -0x2B, 0xE9, 0xB1, 0x67, 0xE3, 0xF3, 0x04, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF6, 0xD8, 0x9B, 0xB1, 0x67, -0xE3, 0xF3, 0x08, 0x6C, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF6, 0x5C, 0x9A, -0xFF, 0x69, 0x30, 0xF0, 0x20, 0x68, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, -0xE0, 0x9A, 0xAE, 0xF7, 0x18, 0x48, 0xAC, 0xE9, -0x90, 0x67, 0xB1, 0x67, 0x92, 0x6E, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x05, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF6, 0x40, 0x9A, 0xE0, 0x9B, -0x90, 0x67, 0xB1, 0x67, 0x92, 0x6E, 0x04, 0xD2, -0x00, 0x68, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x01, 0x48, 0x40, 0xEA, 0xFF, 0x6A, 0x4C, 0xE8, -0x1E, 0x70, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF6, 0x5C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xB1, 0x67, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0xF4, 0x9A, 0xAE, 0xF7, 0x18, 0x4C, -0x92, 0x6E, 0x80, 0x18, 0xE1, 0x4E, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x00, 0x6A, 0x06, 0xD5, 0x06, 0x67, 0x07, 0xD2, -0x40, 0x98, 0x06, 0x93, 0x30, 0xF0, 0x20, 0x69, -0xAE, 0xF7, 0x18, 0x49, 0xC0, 0x9B, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, -0xE0, 0x9A, 0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, -0xE1, 0x4E, 0x41, 0x98, 0x06, 0x93, 0x91, 0x67, -0x01, 0x6D, 0xC0, 0x9B, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, 0xE0, 0x9A, -0x08, 0x48, 0x80, 0x18, 0xE1, 0x4E, 0x07, 0x93, -0x06, 0x92, 0x01, 0x4B, 0x04, 0x4A, 0x07, 0x73, -0x07, 0xD3, 0x06, 0xD2, 0xD9, 0x61, 0x0B, 0x97, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x04, 0x93, +0xFF, 0x6A, 0x01, 0x49, 0x4C, 0xE9, 0x04, 0x4B, +0x04, 0x48, 0xFF, 0xF7, 0x1F, 0x6A, 0x14, 0x71, +0x04, 0xD3, 0x4C, 0xE8, 0xD7, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF6, -0x5C, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0xAE, 0xF7, -0x18, 0x49, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x14, 0x4A, 0xE0, 0x9A, 0x91, 0x67, -0xB0, 0x67, 0x92, 0x6E, 0x80, 0x18, 0xE1, 0x4E, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x05, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x14, 0x4B, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF6, 0x40, 0x9A, 0xE0, 0x9B, 0x91, 0x67, -0xB0, 0x67, 0x92, 0x6E, 0x04, 0xD2, 0x00, 0x69, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x49, -0x40, 0xEA, 0xFF, 0x6A, 0x4C, 0xE9, 0x1E, 0x71, -0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF6, -0x5C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xB0, 0x67, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0xF4, 0x9A, 0xAE, 0xF7, 0x18, 0x4C, 0x92, 0x6E, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x48, 0xFF, 0x6B, -0x6C, 0xE8, 0x02, 0x70, 0xB6, 0x61, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x20, 0xE8, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0xB4, 0x9A, 0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, -0xEA, 0x3C, 0x20, 0x6B, 0x4C, 0xEB, 0x12, 0x2B, -0x00, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0xE0, 0xF1, -0x14, 0x70, 0xF3, 0x61, 0x01, 0x49, 0x0A, 0x71, -0xE4, 0x61, 0x0A, 0x69, 0x51, 0x67, 0x07, 0x97, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x24, 0x67, 0x0F, 0x6D, 0x03, 0xF3, 0x00, 0x6C, +0x0C, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF0, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x60, 0xF0, 0xDD, 0xA1, 0x03, 0xF3, +0x08, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF0, 0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xA0, 0x9B, 0x60, 0xF0, 0xDD, 0xA1, 0x63, 0xF3, +0x00, 0x6C, 0x40, 0xEA, 0x60, 0xF0, 0x5C, 0xA1, +0x2C, 0x22, 0x80, 0xF0, 0x42, 0xA9, 0x01, 0x6B, +0x6C, 0xEA, 0x10, 0x22, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, +0xC3, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x20, 0xF1, 0xDC, 0xA9, 0x03, 0xF3, 0x04, 0x6C, +0xFF, 0x6D, 0x40, 0xEA, 0x80, 0xF0, 0x42, 0xA9, +0x02, 0x6B, 0x6C, 0xEA, 0x3C, 0x22, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF3, +0x00, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, +0x1C, 0x6C, 0xFF, 0x6D, 0x20, 0xF1, 0xDE, 0xA9, +0x29, 0x10, 0x80, 0xF0, 0x42, 0xA9, 0x01, 0x6B, +0x6C, 0xEA, 0x0F, 0x22, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, +0x03, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x04, 0x6C, 0xFF, 0x6D, 0x5B, 0x6E, +0x40, 0xEA, 0x80, 0xF0, 0x42, 0xA9, 0x02, 0x6B, +0x6C, 0xEA, 0x11, 0x22, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF3, 0x00, 0x6C, +0x18, 0xF0, 0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, 0x1C, 0x6C, +0xFF, 0x6D, 0x5B, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0xF7, 0x1F, 0x68, 0xAC, 0xE8, 0x80, 0x18, -0xF6, 0x31, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0xD8, 0x9A, 0x01, 0x69, 0x2B, 0xE9, 0x0D, 0xEE, -0xB1, 0x67, 0x02, 0xF7, 0x00, 0x6C, 0x80, 0x18, -0xFF, 0x3C, 0xB1, 0x67, 0x02, 0xF7, 0x08, 0x6C, -0x80, 0x18, 0xEA, 0x3C, 0x07, 0x97, 0x06, 0x91, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0x24, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x20, 0xF5, 0x00, 0x6C, 0xFF, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, 0x10, 0x6C, +0x0F, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF4, 0x2C, 0x9A, 0x30, 0xF0, +0x21, 0x68, 0x70, 0xF1, 0x08, 0x48, 0x00, 0x6D, +0x90, 0x67, 0xC5, 0x67, 0xF1, 0x67, 0x80, 0x18, +0xAB, 0x53, 0xFF, 0x6B, 0x4C, 0xEB, 0x90, 0x67, +0xF1, 0x67, 0x01, 0x6D, 0x00, 0x6E, 0x04, 0xD3, +0xFF, 0x69, 0x80, 0x18, 0xAB, 0x53, 0x4C, 0xE9, +0x00, 0x68, 0x27, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF4, 0x0C, 0x4A, 0xE0, 0x9A, 0x30, 0xF0, +0x21, 0x69, 0x70, 0xF1, 0x08, 0x49, 0x00, 0x6D, +0x91, 0x67, 0xC5, 0x67, 0x80, 0x18, 0xAB, 0x53, +0xFF, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF4, 0x0C, 0x4A, 0xE0, 0x9A, 0x91, 0x67, +0x01, 0x6D, 0x00, 0x6E, 0x04, 0xD3, 0xFF, 0x69, +0x80, 0x18, 0xAB, 0x53, 0x4C, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x02, 0x6C, +0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0x04, 0x93, 0x02, 0x73, 0x02, 0x60, +0x02, 0x71, 0x03, 0x61, 0xC1, 0xF1, 0x04, 0x70, +0xD1, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x04, 0x67, 0x80, 0x18, +0x56, 0x2B, 0x60, 0xF0, 0x5F, 0xA0, 0x1E, 0x22, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF1, 0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF6, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF3, 0x2C, 0x9A, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF0, 0x04, 0x6C, +0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xA8, 0xF1, 0x04, 0x6C, 0xB1, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0xB8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, 0x04, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x43, 0xF5, 0x18, 0x6C, 0xE1, 0xF7, 0x18, 0x6D, +0xE0, 0xF1, 0x1F, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF0, 0x24, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0x63, 0xF0, 0x04, 0x6C, 0xB1, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x68, 0xF1, 0x04, 0x6C, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, +0x24, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x0C, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x08, 0xF1, +0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x63, 0xF0, 0x0C, 0x6C, 0x80, 0x6D, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x68, 0xF1, 0x0C, 0x6C, 0x80, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x0C, 0x6C, +0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF2, 0x14, 0x6C, 0x00, 0xF3, +0x00, 0x6D, 0x03, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0xF0, 0x0C, 0x6C, 0x0F, 0x6D, +0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xE4, 0xF4, 0xAC, 0x9B, +0x21, 0xF0, 0x04, 0x69, 0x91, 0x67, 0x03, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x04, 0xF4, 0xA4, 0x9B, 0x91, 0x67, +0x03, 0x6E, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x68, 0x24, 0x67, 0x0C, 0xD6, -0x0D, 0xD7, 0xAC, 0xE8, 0x38, 0x26, 0x66, 0x67, -0x01, 0x4B, 0x00, 0x6A, 0x09, 0x2B, 0x01, 0x69, -0x2B, 0xE9, 0x80, 0x18, 0xF6, 0x31, 0x02, 0xF7, -0x04, 0x6C, 0xB1, 0x67, 0x0D, 0x96, 0x1F, 0x10, -0x0C, 0x93, 0x01, 0x6C, 0x66, 0xEA, 0x8C, 0xEB, -0x04, 0x2B, 0x01, 0x4A, 0x20, 0x72, 0xF8, 0x61, -0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x05, 0xD2, -0x80, 0x18, 0x0A, 0x32, 0x0C, 0x93, 0x91, 0x67, -0x01, 0x69, 0x6F, 0xEB, 0x4C, 0xEB, 0x04, 0xD3, -0x80, 0x18, 0xF6, 0x31, 0x0D, 0x96, 0x05, 0x92, -0x04, 0x93, 0x2B, 0xE9, 0xC4, 0xEA, 0x02, 0xF7, -0x04, 0x6C, 0xB1, 0x67, 0x6D, 0xEE, 0x80, 0x18, -0xFF, 0x3C, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0xDC, 0x9A, 0x02, 0xF7, 0x00, 0x6C, 0xB1, 0x67, -0x0D, 0xEE, 0x80, 0x18, 0xFF, 0x3C, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0xAC, 0xEA, 0x04, 0x67, 0x1D, 0x22, -0x01, 0x6D, 0x70, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0xEA, 0x3C, 0x80, 0xF0, 0x48, 0xD8, 0x90, 0x67, -0x38, 0x6D, 0x80, 0x18, 0x0A, 0x32, 0x80, 0xF0, -0x4C, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF4, -0xA8, 0x9A, 0x70, 0x6C, 0x01, 0x6E, 0x80, 0x18, -0xFF, 0x3C, 0x90, 0x67, 0x38, 0x6D, 0x1F, 0xF7, -0x00, 0x6E, 0x77, 0x6F, 0x80, 0x18, 0x1A, 0x32, -0x0E, 0x10, 0x01, 0x69, 0x80, 0xF0, 0xEC, 0x98, -0x2B, 0xE9, 0x38, 0x6D, 0xD1, 0x67, 0x80, 0x18, -0x1A, 0x32, 0x80, 0xF0, 0xC8, 0x98, 0x70, 0x6C, -0xB1, 0x67, 0x80, 0x18, 0xFF, 0x3C, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x4C, 0xED, 0x0A, 0xD4, 0x04, 0xD5, -0x80, 0xF0, 0x72, 0xA4, 0x01, 0x6C, 0x26, 0x67, -0x8E, 0xEB, 0x01, 0x5B, 0x4C, 0xE9, 0x78, 0x67, -0x01, 0x71, 0x64, 0x33, 0x03, 0x61, 0x05, 0x67, -0x14, 0x48, 0x10, 0x10, 0x02, 0x71, 0x03, 0x61, -0x04, 0x90, 0x16, 0x48, 0x0A, 0x10, 0x03, 0x71, -0x03, 0x61, 0x04, 0x90, 0x1A, 0x48, 0x06, 0x10, -0x04, 0x71, 0x00, 0x68, 0x04, 0x61, 0x04, 0x90, -0x1C, 0x48, 0x01, 0xE3, 0x4C, 0xE8, 0x0A, 0x94, -0x01, 0x6D, 0x80, 0x18, 0x3E, 0x32, 0x4A, 0x29, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF3, 0x14, 0x49, 0x91, 0x67, 0x02, 0xF0, -0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x02, 0xF0, 0x00, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x00, 0x6E, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x14, 0x6C, 0x00, 0x68, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0xB0, 0x9A, 0xE3, 0xF3, -0x1C, 0x6C, 0x80, 0x18, 0x72, 0x3C, 0xFF, 0x6B, -0x4C, 0xEB, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, -0xB0, 0x9A, 0xE3, 0xF3, 0x1C, 0x6C, 0x80, 0x18, -0x72, 0x3C, 0xFF, 0x6B, 0x4C, 0xEB, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE8, 0x01, 0x73, 0x60, 0x60, -0xE0, 0xF3, 0x08, 0x70, 0xE7, 0x61, 0xE0, 0xF3, -0x08, 0x68, 0x5A, 0x10, 0x04, 0x92, 0x30, 0xF0, -0x20, 0x69, 0xC0, 0xF3, 0x64, 0x99, 0x44, 0x36, -0x08, 0x6A, 0x4D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x40, 0xEB, 0xC0, 0xF3, 0x44, 0x99, -0xC3, 0xF3, 0x0C, 0x6C, 0x3F, 0x6D, 0x09, 0x6E, -0x40, 0xEA, 0x00, 0x30, 0x48, 0x6A, 0x4D, 0xE8, -0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xD0, 0x67, -0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x99, 0x01, 0x6D, 0xC1, 0x40, -0x03, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x85, 0xF5, 0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, -0x72, 0x3C, 0xFF, 0x6B, 0x4C, 0xEB, 0x00, 0x68, -0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, -0x85, 0xF5, 0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, -0x72, 0x3C, 0xFF, 0x6B, 0x4C, 0xEB, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE8, 0x55, 0x73, 0x05, 0x60, -0xE0, 0xF3, 0x08, 0x70, 0xEA, 0x61, 0xE0, 0xF3, -0x08, 0x68, 0x04, 0x94, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x44, 0x99, 0x84, 0x36, 0x08, 0x6B, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x6D, 0xEE, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF3, -0x0C, 0x6C, 0x3F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x0A, 0x94, 0x00, 0x6D, 0x80, 0x18, 0x3E, 0x32, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF3, 0x10, 0x6C, 0xFF, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xE0, 0xF3, 0x08, 0x6A, 0x0E, 0xEA, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x01, 0x5A, -0x58, 0x67, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x60, 0xF0, 0x5E, 0xAC, 0x24, 0x67, 0x03, 0x2A, -0x80, 0xF0, 0x50, 0xA4, 0x71, 0x22, 0x80, 0x18, -0x53, 0x30, 0x00, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9B, 0x04, 0x36, 0x08, 0x6B, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x6D, 0xEE, -0x40, 0xEA, 0x80, 0xF0, 0x51, 0xA1, 0x0D, 0x2A, -0x30, 0xF0, 0x20, 0x6C, 0x01, 0x6D, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9C, 0xAB, 0xED, -0x63, 0xF3, 0x00, 0x6C, 0x83, 0xF6, 0xCC, 0x9B, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF6, -0xD0, 0x9B, 0x01, 0x6D, 0x63, 0xF3, 0x00, 0x6C, -0xAB, 0xED, 0x40, 0xEA, 0x0D, 0xE1, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x80, 0xF0, -0xD5, 0xA3, 0xC0, 0xF3, 0x44, 0x9C, 0xC3, 0xF5, -0xB4, 0x9D, 0x63, 0xF3, 0x04, 0x6C, 0x40, 0xEA, -0x60, 0xF0, 0xDE, 0xA1, 0x01, 0x6A, 0x44, 0xE8, -0x47, 0xE8, 0x4C, 0xEE, 0x91, 0x67, 0xB0, 0x67, -0x80, 0x18, 0x82, 0x2D, 0x91, 0x67, 0xB0, 0x67, -0x03, 0x6E, 0x80, 0x18, 0x5A, 0x32, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, -0xFF, 0x6A, 0x0C, 0xEA, 0x0D, 0x2A, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9C, 0xA3, 0xF6, 0xA4, 0x9B, 0x03, 0xF3, -0x04, 0x6C, 0x20, 0xF1, 0xD8, 0xA9, 0x0C, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0xA4, 0x9B, -0x20, 0xF1, 0xDA, 0xA9, 0x43, 0xF3, 0x1C, 0x6C, -0x01, 0x48, 0x40, 0xEA, 0x02, 0x70, 0x92, 0x61, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x00, 0x6A, 0x60, 0xF0, 0x5C, 0xC4, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0xF4, 0x9A, -0x04, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, -0x18, 0x4C, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, -0x9C, 0x4E, 0x80, 0xF0, 0x90, 0xA0, 0xFF, 0x6B, -0x4C, 0xEB, 0x8E, 0xEB, 0x06, 0x2B, 0x90, 0x67, -0x80, 0x18, 0xCE, 0x32, 0x01, 0x6A, 0x60, 0xF0, -0x5C, 0xC0, 0x60, 0xF0, 0x5C, 0xA0, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0xAC, 0xEA, -0x04, 0xD2, 0x44, 0x36, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0x6B, 0x6D, 0xEE, 0x0A, 0xD4, 0x0F, 0x6D, -0x03, 0xF3, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF3, 0x00, 0x69, 0x91, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x7F, 0x49, -0xC0, 0xF3, 0x44, 0x98, 0x2D, 0x49, 0x91, 0x67, -0x3F, 0x6D, 0x09, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xC3, 0xF3, 0x14, 0x6C, 0xF0, 0x6D, -0x0F, 0x6E, 0x40, 0xEA, 0x04, 0x93, 0x12, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0xA4, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF6, 0xC8, 0x9B, 0x03, 0xF3, 0x04, 0x6C, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x08, 0x6C, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF6, 0xA4, 0x9B, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF6, 0xC8, 0x9B, -0x43, 0xF3, 0x1C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x63, 0xF3, 0x00, 0x6C, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF1, 0xB0, 0x9B, 0x01, 0x6E, -0x40, 0xEA, 0x0A, 0x93, 0x80, 0xF0, 0x52, 0xA3, -0x01, 0x72, 0x41, 0x61, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0xCC, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, -0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, -0xB1, 0x67, 0x02, 0xF3, 0x10, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0xD0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF6, 0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, -0xB1, 0x67, 0x36, 0xF4, 0x08, 0x6E, 0x40, 0xEA, -0x04, 0x92, 0x01, 0x6E, 0x30, 0xF0, 0x20, 0x6B, -0xC4, 0xEA, 0x00, 0xF7, 0xC0, 0x36, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF3, 0x14, 0x6C, 0xB1, 0x67, -0xA3, 0xF6, 0x78, 0x9B, 0x42, 0x10, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, -0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, -0x2B, 0xE9, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF6, 0xC4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, -0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, -0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, -0x36, 0xF4, 0x08, 0x6E, 0x40, 0xEA, 0x04, 0x93, -0x01, 0x6E, 0xC0, 0xF3, 0x44, 0x98, 0xC4, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, 0x6C, 0x9B, -0x00, 0xF7, 0xC0, 0x36, 0xE3, 0xF3, 0x14, 0x6C, -0xB1, 0x67, 0x6D, 0xEE, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0xC3, 0xF5, -0x34, 0x9A, 0x04, 0x96, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0x6B, 0x6D, 0xEE, 0xB1, 0x67, 0xA3, 0xF3, -0x14, 0x6C, 0x40, 0xEA, 0x0A, 0x94, 0x04, 0x95, -0x00, 0x6E, 0x80, 0x18, 0x5A, 0x32, 0xC0, 0xF3, -0x44, 0x98, 0xB1, 0x67, 0xE3, 0xF3, 0x14, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x08, 0x6B, -0x03, 0xF3, 0x00, 0x6C, 0x44, 0x36, 0xC0, 0xF3, -0x44, 0x98, 0x6D, 0xEE, 0x0F, 0x6D, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, 0x0C, 0x69, -0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, -0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, 0x04, 0x92, -0x05, 0x2A, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, -0x04, 0x6C, 0x04, 0x10, 0xC0, 0xF3, 0x44, 0x98, -0x43, 0xF3, 0x1C, 0x6C, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF6, 0xA4, 0x9B, 0x5B, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, -0xC3, 0xF3, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF4, 0xA0, 0x9A, -0xE3, 0xF3, 0x1C, 0x6C, 0x80, 0x18, 0x72, 0x3C, -0xFF, 0xF7, 0x1F, 0x6B, 0x80, 0xF3, 0x0E, 0x6C, -0x6C, 0xEA, 0x98, 0xEA, 0x0A, 0x6C, 0x12, 0xE8, -0x02, 0x30, 0x0A, 0x30, 0x9B, 0xE8, 0x01, 0x2C, -0xE5, 0xE8, 0x10, 0xEC, 0x05, 0x5C, 0x12, 0xE8, -0x6C, 0xE8, 0x02, 0x61, 0x01, 0x48, 0x6C, 0xE8, -0x04, 0x92, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x04, 0x6C, -0x06, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x43, 0xF3, 0x1C, 0x6C, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF6, 0xA4, 0x9B, 0xD0, 0x67, -0x40, 0xEA, 0x04, 0x92, 0x0A, 0x93, 0x7F, 0x4A, -0x1D, 0x4A, 0x44, 0x32, 0x49, 0xE3, 0x00, 0xCA, +0x00, 0x6A, 0x25, 0x67, 0x04, 0xD6, 0x05, 0xD2, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, +0xC0, 0x99, 0xE0, 0x9B, 0x30, 0xF0, 0x21, 0x68, +0x70, 0xF1, 0x08, 0x48, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0xAB, 0x53, 0x04, 0x93, 0x90, 0x67, +0x01, 0x6D, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x0C, 0x4A, 0xC0, 0x99, 0xE0, 0x9A, +0x04, 0x49, 0x80, 0x18, 0xAB, 0x53, 0x04, 0x93, +0x41, 0xDB, 0x05, 0x92, 0x08, 0x4B, 0x04, 0xD3, +0x01, 0x4A, 0x07, 0x72, 0x05, 0xD2, 0xDC, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, -0xB0, 0x67, 0x03, 0x6E, 0x24, 0x67, 0x80, 0x18, -0x5A, 0x32, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9B, 0x04, 0x36, 0x08, 0x6B, 0x6D, 0xEE, -0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0xA4, 0x9B, -0x23, 0xF3, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x60, 0xF0, 0x7E, 0xA9, 0x01, 0x6A, 0x44, 0xE8, -0x6C, 0xEA, 0x47, 0xE8, 0x04, 0x22, 0x91, 0x67, -0xB0, 0x67, 0x80, 0x18, 0x22, 0x33, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x68, 0xCC, 0xE8, 0xB0, 0x67, 0x02, 0x6E, -0x24, 0x67, 0x80, 0x18, 0x5A, 0x32, 0x07, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x08, 0x6B, 0x04, 0x36, 0x6D, 0xEE, 0x03, 0xF3, -0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF4, 0xA8, 0x9A, 0x03, 0xF3, -0x08, 0x6C, 0x80, 0x18, 0x72, 0x3C, 0x06, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x54, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xB0, 0x67, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0xF4, 0x9A, -0x00, 0x6E, 0xAE, 0xF7, 0x18, 0x4C, 0x80, 0x18, -0xE1, 0x4E, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, -0xDB, 0x2E, 0x06, 0x93, 0x07, 0x92, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x6D, 0xEA, 0xFF, 0x6B, -0x6C, 0xEA, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x30, 0xF0, +0x20, 0x68, 0x2C, 0xEE, 0xC0, 0xF3, 0x64, 0x98, +0x08, 0x6A, 0x04, 0xD6, 0x2C, 0xEF, 0xC4, 0x36, +0x0A, 0xD4, 0x0B, 0xD5, 0x4D, 0xEE, 0x05, 0xD7, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEB, +0x05, 0x92, 0x0C, 0x22, 0x0B, 0x96, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xFA, 0x4E, +0x63, 0xF3, 0x04, 0x6C, 0xE4, 0xF2, 0xB4, 0x9B, +0x2C, 0xEE, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xE4, 0xF2, 0xB4, 0x9B, +0x63, 0xF3, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x0A, 0x93, 0x04, 0x92, 0x63, 0xF3, 0x04, 0x6C, +0x41, 0xE3, 0x7D, 0x67, 0x47, 0x43, 0x0D, 0x4A, +0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF2, +0xB4, 0x9A, 0x80, 0xF0, 0x77, 0xC0, 0x80, 0x18, +0xE1, 0x39, 0x80, 0xF0, 0x59, 0xC0, 0x0A, 0x94, +0x04, 0x95, 0x05, 0x96, 0x80, 0x18, 0xE7, 0x2A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEF, +0x4C, 0xED, 0x24, 0x67, 0x0C, 0xD6, 0x04, 0xD7, +0x05, 0x2D, 0xA7, 0x67, 0x80, 0x18, 0xD1, 0x2A, +0x01, 0x68, 0x01, 0x2A, 0x00, 0x68, 0x0C, 0x95, +0x04, 0x96, 0x91, 0x67, 0xF0, 0x67, 0x80, 0x18, +0xF5, 0x2B, 0x50, 0x67, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x6A, 0x25, 0x67, 0x4C, 0xEE, 0x4C, 0xE9, -0xEC, 0xEA, 0x01, 0x72, 0x04, 0x67, 0x04, 0xD6, -0x17, 0x61, 0xB1, 0x67, 0x04, 0x6E, 0x80, 0x18, -0x5A, 0x32, 0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, -0x0E, 0x30, 0x00, 0xF6, 0x00, 0x5A, 0x04, 0x61, -0x04, 0x93, 0x02, 0x6A, 0x23, 0x2B, 0x25, 0x10, -0x04, 0x94, 0x00, 0xF3, 0x00, 0x5A, 0x78, 0x67, -0x01, 0x5C, 0x58, 0x67, 0x1E, 0x2B, 0x1A, 0x10, -0x19, 0x2A, 0xB1, 0x67, 0x00, 0x6E, 0x80, 0x18, -0xC7, 0x2F, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, -0x78, 0x9B, 0x43, 0xEB, 0x11, 0x60, 0x42, 0x34, -0x96, 0x34, 0x80, 0x18, 0xF6, 0x2A, 0x03, 0x6B, -0x78, 0xEA, 0x03, 0x6A, 0x12, 0xEB, 0xFE, 0xF0, -0x02, 0x4B, 0xE0, 0xF3, 0x09, 0x5B, 0x05, 0x60, -0xFA, 0x5B, 0x02, 0x61, 0x00, 0x6A, 0x01, 0x10, -0x04, 0x6A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xF7, 0x63, 0x11, 0x62, -0x10, 0xD1, 0x0F, 0xD0, 0xFF, 0x6A, 0x25, 0x67, -0x4C, 0xEE, 0x4C, 0xEF, 0x4C, 0xE9, 0x00, 0x6A, -0x12, 0xD4, 0x0C, 0xD6, 0x0A, 0xD7, 0x07, 0xD2, -0x08, 0xD2, 0x09, 0xD2, 0x06, 0xD2, 0x02, 0x67, -0x06, 0x5A, 0x80, 0xF0, 0x1C, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0x48, 0x32, 0xC2, 0xF6, 0x10, 0x4B, -0x49, 0xE3, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, -0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, 0x90, 0x67, -0xB1, 0x67, 0x56, 0x6E, 0x1F, 0x6F, 0x80, 0x18, -0x9C, 0x4E, 0x90, 0x67, 0xB1, 0x67, 0x00, 0x6E, -0xE0, 0xF3, 0x00, 0x6F, 0x0B, 0xD2, 0x80, 0x18, -0x9C, 0x4E, 0x0A, 0x94, 0x06, 0xD2, 0x0D, 0x2C, -0x12, 0x94, 0x08, 0x96, 0xB1, 0x67, 0x01, 0x6F, -0x80, 0x18, 0x26, 0x34, 0x07, 0x2A, 0x0C, 0x92, -0x04, 0x22, 0x01, 0x6B, 0x09, 0xD3, 0x0A, 0x92, -0x01, 0x10, 0x05, 0x6A, 0x06, 0x94, 0xFF, 0x6B, -0x0B, 0x90, 0x6C, 0xEC, 0x06, 0xD4, 0x07, 0x94, -0x6C, 0xE8, 0x01, 0x4C, 0x6C, 0xEC, 0x07, 0xD4, -0x60, 0x10, 0x06, 0x92, 0x0F, 0x5A, 0x12, 0x60, -0x06, 0x92, 0xFF, 0x6B, 0xF4, 0x4A, 0x6C, 0xEA, -0x03, 0x5A, 0x54, 0x60, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xD2, 0xAE, 0xF7, 0x18, 0x4C, -0xB1, 0x67, 0xC2, 0x67, 0x13, 0x10, 0x06, 0x93, -0x0C, 0x5B, 0x02, 0x60, 0x0C, 0x6A, 0x07, 0x10, -0x06, 0x92, 0xFF, 0x6B, 0xF4, 0x4A, 0x6C, 0xEA, -0x03, 0x5A, 0x40, 0x60, 0x0F, 0x6A, 0x30, 0xF0, -0x20, 0x6C, 0x04, 0xD2, 0xAE, 0xF7, 0x18, 0x4C, -0xB1, 0x67, 0x00, 0x6E, 0xE0, 0xF3, 0x00, 0x6F, -0x80, 0x18, 0xE1, 0x4E, 0x35, 0x10, 0x3B, 0x20, -0xFF, 0x6A, 0xFE, 0x48, 0x30, 0xF0, 0x20, 0x6C, -0x4C, 0xE8, 0xAE, 0xF7, 0x18, 0x4C, 0xB1, 0x67, -0x56, 0x6E, 0x1F, 0x6F, 0x04, 0xD0, 0x80, 0x18, -0xE1, 0x4E, 0x00, 0x6C, 0x08, 0xD4, 0x44, 0x67, -0x24, 0x10, 0x1F, 0x70, 0x02, 0x61, 0x1F, 0x68, -0x26, 0x10, 0xFF, 0x6A, 0x03, 0x48, 0x30, 0xF0, -0x20, 0x6C, 0x4C, 0xE8, 0xAE, 0xF7, 0x18, 0x4C, -0xB1, 0x67, 0x56, 0x6E, 0x1F, 0x6F, 0x04, 0xD0, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6A, 0x08, 0xD2, -0x10, 0x10, 0x12, 0x94, 0xB1, 0x67, 0x01, 0x6E, -0x80, 0x18, 0x5A, 0x32, 0x12, 0x94, 0x08, 0x96, -0xB1, 0x67, 0x00, 0x6F, 0x80, 0x18, 0x26, 0x34, -0x0A, 0x22, 0x03, 0x10, 0x01, 0x6B, 0x08, 0xD3, -0x00, 0x6A, 0x09, 0x94, 0x04, 0x2C, 0x07, 0x93, -0x06, 0x5B, 0x7F, 0xF7, 0x01, 0x61, 0x50, 0x67, -0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, -0xB0, 0x67, 0x24, 0x67, 0x80, 0x18, 0xBA, 0x30, -0x30, 0xF0, 0x20, 0x6C, 0x1F, 0x6F, 0x00, 0x6E, -0xAE, 0xF7, 0x18, 0x4C, 0xB0, 0x67, 0x0A, 0xD2, -0x80, 0x18, 0x9C, 0x4E, 0x91, 0x67, 0xB0, 0x67, -0x09, 0xD2, 0x80, 0x18, 0x8A, 0x31, 0x91, 0x67, -0xB0, 0x67, 0x04, 0x6E, 0x80, 0x18, 0x5A, 0x32, -0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x0E, 0x30, -0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x21, 0x30, -0x0D, 0x22, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, -0x8A, 0x31, 0x91, 0x67, 0xB0, 0x67, 0x04, 0x6E, -0x80, 0x18, 0x5A, 0x32, 0x91, 0x67, 0xB0, 0x67, -0x80, 0x18, 0x21, 0x30, 0x91, 0x67, 0xB0, 0x67, -0x80, 0x18, 0x7B, 0x30, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x6E, 0x01, 0x6F, 0x07, 0xD2, 0x80, 0x18, -0x49, 0x34, 0x91, 0x67, 0xB0, 0x67, 0x08, 0xD2, -0x80, 0x18, 0xAA, 0x2F, 0x08, 0x93, 0x00, 0x6C, -0x06, 0xD4, 0x43, 0xEB, 0x06, 0x61, 0x4B, 0xE3, -0x06, 0xD2, 0x06, 0x94, 0xFF, 0x6A, 0x4C, 0xEC, -0x06, 0xD4, 0x06, 0x92, 0x30, 0xF0, 0x20, 0x6C, -0xAE, 0xF7, 0x18, 0x4C, 0xB0, 0x67, 0x56, 0x6E, -0x1F, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x7B, 0x30, -0x07, 0x93, 0x43, 0xEB, 0x02, 0x60, 0x6B, 0xE2, -0x02, 0x10, 0x07, 0x94, 0x4B, 0xE4, 0xFF, 0x6B, -0x6C, 0xEA, 0x01, 0xE1, 0x20, 0xF1, 0x5C, 0xC0, -0x09, 0x93, 0x0A, 0x94, 0x0F, 0x97, 0x0E, 0x91, -0x8B, 0xE3, 0x06, 0x93, 0x0D, 0x90, 0x49, 0xE3, -0xFF, 0x6B, 0x6C, 0xEA, 0x08, 0x63, 0x00, 0xEF, +0xE3, 0xF3, 0x1C, 0x68, 0x01, 0x6D, 0x90, 0x67, +0xAB, 0xED, 0x80, 0x18, 0xE1, 0x39, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF5, 0xA4, 0x9A, 0x90, 0x67, +0xFF, 0xF7, 0x1F, 0x69, 0x80, 0x18, 0xE1, 0x39, +0x90, 0x67, 0xB1, 0x67, 0x04, 0xD2, 0x80, 0x18, +0xE1, 0x39, 0xE3, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x04, 0xF0, 0x00, 0x6C, 0x53, 0xE4, 0x04, 0x92, +0x6C, 0xEC, 0xFF, 0x4C, 0x4C, 0xEB, 0x2C, 0xEC, +0x60, 0x32, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x40, 0x32, 0x8D, 0xEA, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x68, 0xAC, 0xE8, 0xB0, 0x67, 0x24, 0x67, -0x80, 0x18, 0xA5, 0x34, 0xA2, 0x67, 0x91, 0x67, -0xD0, 0x67, 0x04, 0xD2, 0x80, 0x18, 0x06, 0x34, -0x04, 0x96, 0x91, 0x67, 0xA2, 0x67, 0xF0, 0x67, -0x80, 0x18, 0xB6, 0x2E, 0x09, 0xE1, 0x80, 0xF0, -0x53, 0xA2, 0x07, 0x22, 0x60, 0xF0, 0x7E, 0xA9, -0x01, 0x6A, 0x44, 0xE8, 0x6D, 0xEA, 0x60, 0xF0, -0x5E, 0xC9, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0xFF, 0x6A, 0xAC, 0xEA, 0x30, 0xF0, 0x20, 0x68, +0x05, 0xD2, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, +0x24, 0x67, 0xAB, 0xED, 0x03, 0xF3, 0x00, 0x6C, +0x0C, 0x6E, 0x40, 0xEA, 0x05, 0x93, 0x0F, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x64, 0xF3, 0xA4, 0x9B, 0xA3, 0xF3, 0x14, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x04, 0x6C, 0x11, 0x10, 0x05, 0x94, +0x01, 0x74, 0x15, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x64, 0xF3, 0xA4, 0x9B, +0xA3, 0xF3, 0x14, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, 0x1C, 0x6C, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF5, 0xC8, 0x9B, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0x24, 0xF5, 0xCC, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, 0x05, 0x94, +0x50, 0x6D, 0xB8, 0xEC, 0xAF, 0x4D, 0xC3, 0xF3, +0x14, 0x6C, 0x12, 0xEB, 0x6D, 0xE1, 0x04, 0xD3, +0x80, 0xF0, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0x24, 0xF5, 0xD0, 0x9A, +0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, +0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0x24, 0xF5, 0xD4, 0x9A, 0xC3, 0xF3, +0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0x2A, 0x2C, 0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, +0xA0, 0xF0, 0x44, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0x24, 0xF5, 0xD8, 0x9A, +0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, +0x80, 0x18, 0x2A, 0x2C, 0x04, 0x95, 0xC3, 0xF3, +0x14, 0x6C, 0xA0, 0xF0, 0x48, 0xDD, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x24, 0xF5, +0xDC, 0x9A, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, 0x04, 0x93, +0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, +0x44, 0xF5, 0xC0, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, +0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, +0x04, 0x94, 0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, +0x50, 0xDC, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0x44, 0xF5, 0xC4, 0x9A, 0xC3, 0xF3, +0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0x2A, 0x2C, 0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, +0xA0, 0xF0, 0x54, 0xDD, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0x44, 0xF5, 0xC8, 0x9A, +0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, +0x80, 0x18, 0x2A, 0x2C, 0x04, 0x93, 0x01, 0x6D, +0xAB, 0xED, 0xA0, 0xF0, 0x58, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x44, 0xF5, +0xCC, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, 0x04, 0x94, +0x01, 0x6D, 0xAB, 0xED, 0xA0, 0xF0, 0x5C, 0xDC, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, +0x44, 0xF5, 0xD0, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, +0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, +0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, 0xC0, 0xF0, +0x40, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0x44, 0xF5, 0xD4, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0x2A, 0x2C, 0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, +0xC0, 0xF0, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0x44, 0xF5, 0xD8, 0x9A, +0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, +0x80, 0x18, 0x2A, 0x2C, 0x04, 0x94, 0x01, 0x6D, +0xAB, 0xED, 0xC0, 0xF0, 0x48, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x44, 0xF5, +0xDC, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, 0x05, 0x93, +0x50, 0x6C, 0x01, 0x6D, 0x01, 0x4B, 0x98, 0xEB, +0xAB, 0xED, 0x83, 0xF3, 0x04, 0x4C, 0x12, 0xEB, +0x6D, 0xE1, 0x5F, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0x64, 0xF5, 0xC0, 0x9A, +0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, +0x04, 0x95, 0xC3, 0xF3, 0x14, 0x6C, 0xC0, 0xF0, +0x50, 0xDD, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0x64, 0xF5, 0xC4, 0x9A, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0x2A, 0x2C, 0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, +0xC0, 0xF0, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x64, 0x98, 0x64, 0xF5, 0xC8, 0x9A, +0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, +0x80, 0x18, 0x2A, 0x2C, 0x04, 0x94, 0x01, 0x6D, +0xAB, 0xED, 0xC0, 0xF0, 0x58, 0xDC, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, 0x64, 0xF5, +0xCC, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEB, +0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, 0x04, 0x95, +0xC3, 0xF3, 0x14, 0x6C, 0xC0, 0xF0, 0x5C, 0xDD, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, +0x64, 0xF5, 0xD0, 0x9A, 0x01, 0x6D, 0xAB, 0xED, +0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, 0x2A, 0x2C, +0x04, 0x93, 0x01, 0x6D, 0xAB, 0xED, 0xE0, 0xF0, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x98, 0x64, 0xF5, 0xD4, 0x9A, 0xC3, 0xF3, +0x14, 0x6C, 0x40, 0xEB, 0x91, 0x67, 0x80, 0x18, +0x2A, 0x2C, 0x04, 0x94, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF5, 0xD8, 0x9B, 0xE0, 0xF0, 0x44, 0xDC, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xAB, 0xED, +0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEA, 0x91, 0x67, +0x80, 0x18, 0x2A, 0x2C, 0x04, 0x95, 0xE0, 0xF0, +0x48, 0xDD, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xFF, 0x6A, 0x4C, 0xED, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x6B, 0xA4, 0x36, 0x6D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF3, 0x08, 0x69, 0x91, 0x67, +0x08, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF5, 0xDC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0xC3, 0xF3, +0x14, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xE3, 0xF3, +0x1C, 0x6C, 0xF0, 0x6D, 0x80, 0x18, 0xE1, 0x39, +0x04, 0xD2, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x04, 0x92, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0xFF, 0x6B, 0x6C, 0xEA, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xFF, 0x6A, 0x4C, 0xED, +0x4C, 0xEE, 0x01, 0x69, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0x6B, 0x2B, 0xE9, 0x04, 0xD6, 0xA4, 0x36, +0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, +0x08, 0x6C, 0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF5, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0x14, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF3, 0x0C, 0x6C, 0xB1, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x22, +0x02, 0x72, 0x00, 0x68, 0x2C, 0x60, 0x44, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0xC4, 0xF1, 0xC0, 0x9B, 0xB1, 0x67, 0x43, 0xF3, +0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF5, 0xA4, 0x9A, 0xE3, 0xF3, 0x1C, 0x69, +0x91, 0x67, 0x80, 0x18, 0xE1, 0x39, 0x91, 0x67, +0xFF, 0xF7, 0x1F, 0x6D, 0x02, 0x67, 0x80, 0x18, +0xE1, 0x39, 0x22, 0x67, 0x42, 0x32, 0x5E, 0x32, +0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, +0x50, 0x9A, 0x27, 0xE2, 0x02, 0x32, 0x5E, 0x32, +0x21, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, +0x50, 0x9A, 0x03, 0xE2, 0x1B, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF1, 0x60, 0x9B, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x69, +0x2B, 0xE9, 0x00, 0xF6, 0x00, 0x36, 0x43, 0xF3, +0x0C, 0x6C, 0xB1, 0x67, 0x6D, 0xEE, 0x40, 0xEA, +0x01, 0x48, 0xE3, 0xF3, 0x1C, 0x6C, 0xB1, 0x67, +0x80, 0x18, 0xE1, 0x39, 0x40, 0x70, 0xE7, 0x61, +0x00, 0x68, 0x30, 0x67, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x01, 0x6D, 0x43, 0xF3, +0x0C, 0x6C, 0xAB, 0xED, 0x00, 0x6E, 0x40, 0xEA, +0x18, 0xE8, 0x09, 0x97, 0x12, 0xE8, 0x38, 0xE9, +0x12, 0xE9, 0x29, 0xE0, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x00, 0x6D, 0x04, 0x67, 0x80, 0x18, -0xE0, 0x34, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, -0xE0, 0x34, 0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, -0xED, 0x33, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, -0xED, 0x33, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xDF, 0x63, 0x41, 0x62, -0x40, 0xD1, 0x3F, 0xD0, 0x30, 0xF0, 0x20, 0x6D, -0x24, 0x67, 0x02, 0xF7, 0x04, 0x4D, 0x2B, 0x04, -0x48, 0x6E, 0x00, 0x18, 0xD5, 0xD3, 0x30, 0xF0, -0x20, 0x6D, 0x04, 0x04, 0xE2, 0xF6, 0x08, 0x4D, -0x1C, 0x6E, 0x00, 0x18, 0xD5, 0xD3, 0x52, 0x99, -0x40, 0xA2, 0x04, 0x2A, 0x91, 0x67, 0x80, 0x18, -0x0F, 0x33, 0x3C, 0x2A, 0x91, 0x67, 0x80, 0x18, -0x53, 0x30, 0x04, 0x00, 0x12, 0x6F, 0x91, 0x67, -0x2B, 0x05, 0x19, 0x06, 0x80, 0x18, 0x6C, 0x30, -0x0B, 0x06, 0xB0, 0x67, 0x91, 0x67, 0x80, 0x18, -0x77, 0x2E, 0x91, 0x67, 0x80, 0x18, 0x24, 0x2E, -0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x57, 0x2B, -0x01, 0x6D, 0x91, 0x67, 0x80, 0x18, 0x31, 0x2B, -0x91, 0x67, 0x80, 0x18, 0x50, 0x31, 0x91, 0x67, -0x80, 0x18, 0x9C, 0x30, 0x91, 0x67, 0x80, 0x18, -0xF3, 0x34, 0x91, 0x67, 0x80, 0x18, 0xAE, 0x2D, -0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x31, 0x2B, -0x91, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x57, 0x2B, -0xB0, 0x67, 0x0B, 0x06, 0x91, 0x67, 0x80, 0x18, -0xB2, 0x31, 0x91, 0x67, 0x80, 0x18, 0xCC, 0x31, -0x91, 0x67, 0x2B, 0x05, 0x19, 0x06, 0x12, 0x6F, -0x80, 0x18, 0x12, 0x2B, 0x41, 0x97, 0x40, 0x91, -0x3F, 0x90, 0x21, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0x69, 0x2C, 0xED, 0x01, 0x75, 0x58, 0x67, -0x0C, 0xD4, 0x06, 0xD2, 0x80, 0xF0, 0x0C, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x34, 0x9A, -0x00, 0x6D, 0xC5, 0x67, 0xF1, 0x67, 0x80, 0x18, -0x9C, 0x4E, 0x30, 0xF0, 0x20, 0x68, 0x0C, 0x94, -0xA6, 0xF6, 0x00, 0x48, 0xF1, 0x67, 0x23, 0xF4, -0x44, 0xD8, 0x01, 0x6D, 0x00, 0x6E, 0x80, 0x18, -0x9C, 0x4E, 0x23, 0xF4, 0x48, 0xD8, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x0C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x00, 0x6E, 0x08, 0xF1, -0x0C, 0x6C, 0x03, 0x6D, 0x40, 0xEA, 0x01, 0x6D, -0x21, 0xF0, 0x04, 0x6C, 0xAB, 0xED, 0x80, 0x18, -0x72, 0x3C, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x64, 0x98, 0xE3, 0xF5, 0xA8, 0x9A, -0x21, 0xF0, 0x04, 0x6C, 0x03, 0x6E, 0x40, 0xEB, -0x06, 0x93, 0x0C, 0x94, 0x00, 0x6D, 0xC5, 0x67, -0xF1, 0x67, 0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, -0x06, 0x92, 0x0C, 0x94, 0xF1, 0x67, 0x01, 0x6D, -0x00, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0xC0, 0xF3, 0x44, 0x98, 0x07, 0x96, 0x01, 0x6D, -0x21, 0xF0, 0x04, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x0C, 0x94, 0x00, 0x68, 0x80, 0x18, 0x2F, 0x4F, -0x0C, 0x94, 0x80, 0x18, 0x4F, 0x4C, 0x1B, 0x2A, -0xE0, 0xF3, 0x09, 0x70, 0x0D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x63, 0xF7, 0x98, 0x9C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x00, 0x6A, 0x91, 0x10, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x0C, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x00, 0x6E, 0xC3, 0xF3, 0x14, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0xB8, 0x9A, +0xE3, 0xF3, 0x1C, 0x6C, 0x80, 0x18, 0xE1, 0x39, +0x05, 0x97, 0x04, 0x90, 0xFF, 0xF7, 0x1F, 0x6B, +0x6C, 0xEA, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF5, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, +0x01, 0x6D, 0xC3, 0xF3, 0x14, 0x6C, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0xB8, 0x9A, 0xE3, 0xF3, 0x1C, 0x69, 0x91, 0x67, +0x80, 0x18, 0xE1, 0x39, 0xFF, 0xF7, 0x1F, 0x68, +0x91, 0x67, 0xE1, 0xF7, 0x1F, 0x6D, 0x4C, 0xE8, +0xFF, 0xF7, 0x1F, 0x69, 0x80, 0x18, 0xE1, 0x39, +0x4C, 0xE9, 0x02, 0x32, 0x4E, 0x32, 0x01, 0x72, +0x06, 0x61, 0x02, 0xF0, 0x00, 0x6A, 0x03, 0xE2, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x22, 0x32, +0x4E, 0x32, 0x01, 0x72, 0x06, 0x61, 0x02, 0xF0, +0x00, 0x6A, 0x27, 0xE2, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x01, 0x6D, 0xF0, 0x6E, 0xC3, 0xF3, +0x14, 0x6C, 0xAB, 0xED, 0x40, 0xEA, 0xE3, 0xF3, +0x1C, 0x6C, 0xFF, 0x6D, 0x80, 0x18, 0xE1, 0x39, +0xE3, 0xF3, 0x1C, 0x6C, 0x1F, 0xF7, 0x00, 0x6D, +0x04, 0xD2, 0x80, 0x18, 0xE1, 0x39, 0xC9, 0x58, +0x0C, 0x60, 0xC9, 0x59, 0x0A, 0x60, 0x04, 0x93, +0xFF, 0x6A, 0x6C, 0xEA, 0x28, 0x5A, 0x05, 0x61, +0x42, 0x5A, 0x58, 0x67, 0x01, 0x6B, 0x6E, 0xEA, +0x01, 0x10, 0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0xAC, 0x9A, 0x04, 0x67, +0x63, 0xF6, 0x1C, 0x6C, 0x80, 0x18, 0xE1, 0x39, +0x01, 0x22, 0x01, 0x6A, 0x60, 0xF0, 0x5F, 0xC0, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0xEC, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, +0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0xAB, 0x53, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0x70, 0x9B, +0x80, 0xF0, 0x54, 0xC0, 0x05, 0x97, 0x4C, 0xEB, +0x62, 0x33, 0x62, 0x33, 0x80, 0xF0, 0x75, 0xC0, +0x06, 0xF0, 0x00, 0x6B, 0x4C, 0xEB, 0x62, 0x33, +0x72, 0x33, 0x80, 0xF0, 0x76, 0xC0, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6A, 0x0D, 0xD7, +0x05, 0x67, 0x26, 0x67, 0x04, 0xD2, 0x0B, 0x10, +0x80, 0xA8, 0x01, 0x6D, 0xAB, 0xED, 0x80, 0x18, +0xE1, 0x39, 0x40, 0xD9, 0x04, 0x93, 0x04, 0x48, +0x04, 0x49, 0x01, 0x4B, 0x04, 0xD3, 0x04, 0x92, +0x0D, 0x93, 0x63, 0xEA, 0xF1, 0x61, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, 0x00, 0x4B, +0xE0, 0x9B, 0xFF, 0x69, 0x30, 0xF0, 0x21, 0x68, +0xAC, 0xE9, 0x70, 0xF1, 0x08, 0x48, 0x90, 0x67, +0xB1, 0x67, 0x01, 0x6A, 0x42, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x00, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x00, 0x4A, +0xE0, 0x9A, 0x90, 0x67, 0xB1, 0x67, 0x42, 0x6E, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x00, 0x4A, 0xE0, 0x9A, 0x01, 0x6B, +0xB1, 0x67, 0x90, 0x67, 0x42, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0F, 0x6C, 0x40, 0xEA, +0x90, 0x67, 0xB1, 0x67, 0x42, 0x6E, 0x7E, 0x6F, +0x80, 0x18, 0xAB, 0x53, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0xFF, 0x6B, 0x6C, 0xEA, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6A, 0x0A, 0xD4, +0x80, 0xF0, 0x42, 0xCC, 0x0A, 0x90, 0x04, 0xD4, +0x00, 0x69, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x64, 0x9A, 0x24, 0x36, 0x08, 0x6A, 0x4D, 0xEE, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEB, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x43, 0xF3, 0x18, 0x6C, 0x7F, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x00, 0x6A, 0x80, 0xF0, 0x59, 0xC0, +0x80, 0xF0, 0x57, 0xC0, 0x04, 0x94, 0x5B, 0x6B, +0xB1, 0x67, 0x20, 0xF1, 0x7C, 0xCC, 0x80, 0xF0, +0x48, 0xC0, 0x0A, 0x94, 0x01, 0x49, 0x80, 0x18, +0xE0, 0x2D, 0x80, 0xF0, 0x44, 0xC0, 0x04, 0x92, +0x02, 0x71, 0x01, 0x48, 0x02, 0x4A, 0x04, 0xD2, +0xD4, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x0C, 0xD4, 0x80, 0xF0, +0x55, 0xA4, 0xFF, 0x68, 0xAC, 0xE8, 0x07, 0xD2, +0x5D, 0x2A, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, +0x0C, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0x9B, +0x84, 0xF5, 0x48, 0x9A, 0x30, 0xF0, 0x21, 0x69, +0x70, 0xF1, 0x08, 0x49, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, +0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x56, 0x6E, +0x80, 0x18, 0xAB, 0x53, 0x06, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0xF0, 0x9A, 0x01, 0x6B, +0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x01, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0xE0, 0x9A, +0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0x07, 0x93, +0x84, 0xF5, 0xEC, 0x9A, 0x91, 0x67, 0xB0, 0x67, +0x55, 0x6E, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, +0xE0, 0x9B, 0x06, 0x92, 0x91, 0x67, 0xB0, 0x67, +0x56, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x55, 0x6E, +0x1C, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x07, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0x91, 0x67, +0x04, 0xD3, 0xB0, 0x67, 0x87, 0x6E, 0xA4, 0xF1, +0xFC, 0x9A, 0x6B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF5, 0x48, 0x9A, 0x30, 0xF0, 0x21, 0x69, +0x70, 0xF1, 0x08, 0x49, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, +0x0C, 0x4B, 0xE0, 0x9B, 0x91, 0x67, 0xB0, 0x67, +0x56, 0x6E, 0x80, 0x18, 0xAB, 0x53, 0x06, 0xD2, +0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0xF0, 0x9A, 0x91, 0x67, 0xB0, 0x67, +0xDE, 0x6E, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF1, 0xE0, 0x9A, 0x01, 0x6B, +0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x00, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF5, 0xEC, 0x9A, +0x91, 0x67, 0xB0, 0x67, 0x55, 0x6E, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0x0C, 0x4A, 0x06, 0x93, 0xE0, 0x9A, 0x91, 0x67, +0xB0, 0x67, 0x56, 0x6E, 0x04, 0xD3, 0x80, 0x18, +0xF0, 0x53, 0x00, 0x6B, 0x91, 0x67, 0xB0, 0x67, +0x63, 0x6E, 0x18, 0xF0, 0x00, 0x6F, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x06, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0x63, 0x6E, 0x1C, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x01, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0x63, 0x6E, 0x06, 0xF0, 0x00, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x00, 0x6B, +0x04, 0xD3, 0x91, 0x67, 0xB0, 0x67, 0x8A, 0x6E, +0x18, 0x6F, 0x80, 0x18, 0xF0, 0x53, 0x91, 0x67, +0x30, 0xF0, 0x21, 0x69, 0x0F, 0x6A, 0xB0, 0x67, +0x00, 0x6E, 0xE0, 0xF3, 0x00, 0x6F, 0x70, 0xF1, +0x08, 0x49, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0xDE, 0x6E, +0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6A, 0x91, 0x67, 0xB0, 0x67, 0x1A, 0x6E, +0x01, 0xF4, 0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x0C, 0x93, 0x80, 0xF0, 0x56, 0xA3, +0x01, 0x72, 0x02, 0x6A, 0x01, 0x60, 0x01, 0x6A, +0x91, 0x67, 0xB0, 0x67, 0x1A, 0x6E, 0x0E, 0xF0, +0x00, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, 0x8F, 0x6E, +0x02, 0x6F, 0x30, 0xF0, 0x20, 0x68, 0x01, 0x6A, +0x70, 0xF1, 0x08, 0x4C, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, +0x40, 0xEA, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, +0x40, 0xEA, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, +0x40, 0xEA, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, +0x40, 0xEA, 0x80, 0xF3, 0x4C, 0x98, 0x14, 0x6C, +0x40, 0xEA, 0x06, 0x93, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x1F, 0x6A, 0x6C, 0xEA, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x69, 0x0A, 0xD4, +0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0xEC, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0xFF, 0x6D, 0x70, 0xF1, 0x08, 0x4C, 0x2C, 0xED, +0x19, 0x6E, 0x30, 0xF0, 0x20, 0x68, 0x80, 0x18, +0xF0, 0x53, 0xC0, 0xF3, 0x64, 0x98, 0x08, 0x6A, +0x24, 0x36, 0x01, 0x6D, 0x4D, 0xEE, 0x03, 0xF3, +0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEB, 0x0A, 0x93, +0x80, 0xF0, 0x55, 0xA3, 0x0B, 0x2A, 0x01, 0x6D, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x84, 0xF5, +0xD0, 0x9B, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x84, 0xF5, 0xD4, 0x9B, +0x01, 0x6D, 0x63, 0xF3, 0x00, 0x6C, 0xAB, 0xED, +0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF3, 0x04, 0x6C, 0x0E, 0xF0, +0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE4, 0xF3, +0xBC, 0x9B, 0x23, 0xF3, 0x00, 0x6C, 0x03, 0x6E, +0x01, 0x49, 0x40, 0xEA, 0x02, 0x71, 0xB4, 0x61, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x0C, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x84, 0xF5, +0xD8, 0x9B, 0x01, 0x69, 0x2B, 0xE9, 0xB1, 0x67, +0xE3, 0xF3, 0x04, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x84, 0xF5, +0xDC, 0x9B, 0xB1, 0x67, 0xE3, 0xF3, 0x08, 0x6C, +0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF5, 0x40, 0x9A, 0xFF, 0x69, 0x30, 0xF0, +0x21, 0x68, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x70, 0xF1, +0x08, 0x48, 0xAC, 0xE9, 0x90, 0x67, 0xB1, 0x67, +0x92, 0x6E, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, +0x0C, 0x4B, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF5, +0x44, 0x9A, 0xE0, 0x9B, 0x90, 0x67, 0xB1, 0x67, +0x92, 0x6E, 0x04, 0xD2, 0x00, 0x68, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, +0xFF, 0x6A, 0x4C, 0xE8, 0x1E, 0x70, 0xF5, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF5, 0x40, 0x9A, +0x30, 0xF0, 0x21, 0x6C, 0xB1, 0x67, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0xEC, 0x9A, +0x70, 0xF1, 0x08, 0x4C, 0x92, 0x6E, 0x80, 0x18, +0xF0, 0x53, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x06, 0xD5, +0x06, 0x67, 0x07, 0xD2, 0x40, 0x98, 0x06, 0x93, +0x30, 0xF0, 0x21, 0x69, 0x70, 0xF1, 0x08, 0x49, +0xC0, 0x9B, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x91, 0x67, +0x00, 0x6D, 0x80, 0x18, 0xF0, 0x53, 0x41, 0x98, +0x06, 0x93, 0x91, 0x67, 0x01, 0x6D, 0xC0, 0x9B, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0x0C, 0x4A, 0xE0, 0x9A, 0x08, 0x48, 0x80, 0x18, +0xF0, 0x53, 0x07, 0x93, 0x06, 0x92, 0x01, 0x4B, +0x04, 0x4A, 0x07, 0x73, 0x07, 0xD3, 0x06, 0xD2, +0xD9, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF5, 0x40, 0x9A, 0x30, 0xF0, +0x21, 0x69, 0x70, 0xF1, 0x08, 0x49, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, +0xE0, 0x9A, 0x91, 0x67, 0xB0, 0x67, 0x92, 0x6E, +0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x05, 0x6C, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF5, 0x44, 0x9A, +0xE0, 0x9B, 0x91, 0x67, 0xB0, 0x67, 0x92, 0x6E, +0x04, 0xD2, 0x00, 0x69, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x32, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE8, 0xE1, 0x17, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, -0x04, 0x6C, 0x08, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x70, 0x9A, -0xFE, 0x6A, 0x01, 0x6D, 0x80, 0xA3, 0xC5, 0x67, -0x8C, 0xEA, 0x40, 0xC3, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF4, 0x04, 0x6C, 0x40, 0xEA, 0x6C, 0x10, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6D, 0x00, 0x6E, 0x23, 0xF4, 0x04, 0x6C, -0x40, 0xEA, 0x00, 0x18, 0x77, 0xDF, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0x70, 0x9A, 0x01, 0x6C, -0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x69, 0xA6, 0xF6, -0x00, 0x49, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6E, 0x63, 0xF4, 0x04, 0x6C, 0x08, 0x6D, +0x14, 0x6C, 0x01, 0x49, 0x40, 0xEA, 0xFF, 0x6A, +0x4C, 0xE9, 0x1E, 0x71, 0xF5, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF5, 0x40, 0x9A, 0x30, 0xF0, +0x21, 0x6C, 0xB0, 0x67, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0xEC, 0x9A, 0x70, 0xF1, +0x08, 0x4C, 0x92, 0x6E, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x48, 0xFF, 0x6B, 0x6C, 0xE8, 0x02, 0x70, +0xB6, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x00, 0x69, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF2, 0xB4, 0x9A, 0x02, 0xF7, +0x00, 0x6C, 0x80, 0x18, 0x59, 0x3A, 0x20, 0x6B, +0x4C, 0xEB, 0x12, 0x2B, 0x00, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, +0x01, 0x48, 0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0xE0, 0xF1, 0x14, 0x70, 0xF3, 0x61, +0x01, 0x49, 0x0A, 0x71, 0xE4, 0x61, 0x0A, 0x69, +0x51, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, +0xAC, 0xE8, 0x80, 0x18, 0x5B, 0x2F, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF4, 0xDC, 0x9A, 0x01, 0x69, +0x2B, 0xE9, 0x0D, 0xEE, 0xB1, 0x67, 0x02, 0xF7, +0x00, 0x6C, 0x80, 0x18, 0x6E, 0x3A, 0xB1, 0x67, +0x02, 0xF7, 0x08, 0x6C, 0x80, 0x18, 0x59, 0x3A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, +0x24, 0x67, 0x0C, 0xD6, 0x0D, 0xD7, 0xAC, 0xE8, +0x38, 0x26, 0x66, 0x67, 0x01, 0x4B, 0x00, 0x6A, +0x09, 0x2B, 0x01, 0x69, 0x2B, 0xE9, 0x80, 0x18, +0x5B, 0x2F, 0x02, 0xF7, 0x04, 0x6C, 0xB1, 0x67, +0x0D, 0x96, 0x1F, 0x10, 0x0C, 0x93, 0x01, 0x6C, +0x66, 0xEA, 0x8C, 0xEB, 0x04, 0x2B, 0x01, 0x4A, +0x20, 0x72, 0xF8, 0x61, 0x00, 0x6A, 0x91, 0x67, +0xB0, 0x67, 0x05, 0xD2, 0x80, 0x18, 0x6F, 0x2F, +0x0C, 0x93, 0x91, 0x67, 0x01, 0x69, 0x6F, 0xEB, +0x4C, 0xEB, 0x04, 0xD3, 0x80, 0x18, 0x5B, 0x2F, +0x0D, 0x96, 0x05, 0x92, 0x04, 0x93, 0x2B, 0xE9, +0xC4, 0xEA, 0x02, 0xF7, 0x04, 0x6C, 0xB1, 0x67, +0x6D, 0xEE, 0x80, 0x18, 0x6E, 0x3A, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF4, 0xC0, 0x9A, 0x02, 0xF7, +0x00, 0x6C, 0xB1, 0x67, 0x0D, 0xEE, 0x80, 0x18, +0x6E, 0x3A, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, +0x04, 0x67, 0x1D, 0x22, 0x01, 0x6D, 0x70, 0x6C, +0xAB, 0xED, 0x80, 0x18, 0x59, 0x3A, 0x80, 0xF0, +0x4C, 0xD8, 0x90, 0x67, 0x38, 0x6D, 0x80, 0x18, +0x6F, 0x2F, 0x80, 0xF0, 0x50, 0xD8, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF3, 0xBC, 0x9A, 0x70, 0x6C, +0x01, 0x6E, 0x80, 0x18, 0x6E, 0x3A, 0x90, 0x67, +0x38, 0x6D, 0x1F, 0xF7, 0x00, 0x6E, 0x77, 0x6F, +0x80, 0x18, 0x7F, 0x2F, 0x0E, 0x10, 0x01, 0x69, +0x80, 0xF0, 0xF0, 0x98, 0x2B, 0xE9, 0x38, 0x6D, +0xD1, 0x67, 0x80, 0x18, 0x7F, 0x2F, 0x80, 0xF0, +0xCC, 0x98, 0x70, 0x6C, 0xB1, 0x67, 0x80, 0x18, +0x6E, 0x3A, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, +0x0A, 0xD4, 0x04, 0xD5, 0x80, 0xF0, 0x76, 0xA4, +0x01, 0x6C, 0x26, 0x67, 0x8E, 0xEB, 0x01, 0x5B, +0x4C, 0xE9, 0x78, 0x67, 0x01, 0x71, 0x64, 0x33, +0x03, 0x61, 0x05, 0x67, 0x14, 0x48, 0x10, 0x10, +0x02, 0x71, 0x03, 0x61, 0x04, 0x90, 0x16, 0x48, +0x0A, 0x10, 0x03, 0x71, 0x03, 0x61, 0x04, 0x90, +0x1A, 0x48, 0x06, 0x10, 0x04, 0x71, 0x00, 0x68, +0x04, 0x61, 0x04, 0x90, 0x1C, 0x48, 0x01, 0xE3, +0x4C, 0xE8, 0x0A, 0x94, 0x01, 0x6D, 0x80, 0x18, +0xA3, 0x2F, 0x4A, 0x29, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF3, 0x14, 0x49, +0x91, 0x67, 0x02, 0xF0, 0x00, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x02, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0xB0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x00, 0x6E, 0xC3, 0xF3, +0x14, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x00, 0x68, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0xA4, 0x9A, 0xE3, 0xF3, 0x1C, 0x6C, 0x80, 0x18, +0xE1, 0x39, 0xFF, 0x6B, 0x4C, 0xEB, 0x14, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x14, 0x6C, 0x01, 0x48, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF0, 0xA4, 0x9A, 0xE3, 0xF3, +0x1C, 0x6C, 0x80, 0x18, 0xE1, 0x39, 0xFF, 0x6B, +0x4C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, +0x01, 0x73, 0x60, 0x60, 0xE0, 0xF3, 0x08, 0x70, +0xE7, 0x61, 0xE0, 0xF3, 0x08, 0x68, 0x5A, 0x10, +0x04, 0x92, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, +0x64, 0x99, 0x44, 0x36, 0x08, 0x6A, 0x4D, 0xEE, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x40, 0xEB, +0xC0, 0xF3, 0x44, 0x99, 0xC3, 0xF3, 0x0C, 0x6C, +0x3F, 0x6D, 0x09, 0x6E, 0x40, 0xEA, 0x00, 0x30, +0x48, 0x6A, 0x4D, 0xE8, 0xC0, 0xF3, 0x44, 0x99, +0x01, 0x6D, 0xD0, 0x67, 0x03, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, +0x01, 0x6D, 0xC1, 0x40, 0x03, 0xF3, 0x00, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x85, 0xF5, 0x1C, 0x6C, +0xFF, 0x6D, 0x80, 0x18, 0xE1, 0x39, 0xFF, 0x6B, +0x4C, 0xEB, 0x00, 0x68, 0x11, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, +0x01, 0x48, 0x40, 0xEA, 0x85, 0xF5, 0x1C, 0x6C, +0xFF, 0x6D, 0x80, 0x18, 0xE1, 0x39, 0xFF, 0x6B, +0x4C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, +0x55, 0x73, 0x05, 0x60, 0xE0, 0xF3, 0x08, 0x70, +0xEA, 0x61, 0xE0, 0xF3, 0x08, 0x68, 0x04, 0x94, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, +0x84, 0x36, 0x08, 0x6B, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x6D, 0xEE, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x99, 0xC3, 0xF3, 0x0C, 0x6C, 0x3F, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x0A, 0x94, 0x00, 0x6D, +0x80, 0x18, 0xA3, 0x2F, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF3, 0x10, 0x6C, +0xFF, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xE0, 0xF3, +0x08, 0x6A, 0x0E, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x01, 0x5A, 0x58, 0x67, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x80, 0xF0, 0x42, 0xAC, +0x24, 0x67, 0x03, 0x2A, 0x80, 0xF0, 0x54, 0xA4, +0x71, 0x22, 0x80, 0x18, 0xB8, 0x2D, 0x00, 0x68, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, +0x04, 0x36, 0x08, 0x6B, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x6D, 0xEE, 0x40, 0xEA, 0x80, 0xF0, +0x55, 0xA1, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6C, +0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9C, 0xAB, 0xED, 0x63, 0xF3, 0x00, 0x6C, +0x84, 0xF5, 0xD0, 0x9B, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF5, 0xD4, 0x9B, 0x01, 0x6D, +0x63, 0xF3, 0x00, 0x6C, 0xAB, 0xED, 0x40, 0xEA, +0x0D, 0xE1, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6D, 0x80, 0xF0, 0xD9, 0xA3, 0xC0, 0xF3, +0x44, 0x9C, 0xE4, 0xF2, 0xB4, 0x9D, 0x63, 0xF3, +0x04, 0x6C, 0x40, 0xEA, 0x80, 0xF0, 0xC2, 0xA1, +0x01, 0x6A, 0x44, 0xE8, 0x47, 0xE8, 0x4C, 0xEE, +0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0xE7, 0x2A, +0x91, 0x67, 0xB0, 0x67, 0x03, 0x6E, 0x80, 0x18, +0xBF, 0x2F, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9B, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x0C, 0x6E, 0x40, 0xEA, 0xFF, 0x6A, 0x0C, 0xEA, +0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9C, 0xA4, 0xF5, +0xA8, 0x9B, 0x03, 0xF3, 0x04, 0x6C, 0x20, 0xF1, +0xDC, 0xA9, 0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF5, 0xA8, 0x9B, 0x20, 0xF1, 0xDE, 0xA9, +0x43, 0xF3, 0x1C, 0x6C, 0x01, 0x48, 0x40, 0xEA, +0x02, 0x70, 0x92, 0x61, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x6A, +0x80, 0xF0, 0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0xEC, 0x9A, 0x04, 0x67, 0x30, 0xF0, +0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, 0x00, 0x6D, +0x18, 0x6E, 0x80, 0x18, 0xAB, 0x53, 0x80, 0xF0, +0x94, 0xA0, 0xFF, 0x6B, 0x4C, 0xEB, 0x8E, 0xEB, +0x06, 0x2B, 0x90, 0x67, 0x80, 0x18, 0x33, 0x30, +0x01, 0x6A, 0x80, 0xF0, 0x40, 0xC0, 0x80, 0xF0, +0x40, 0xA0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x30, 0xF0, +0x20, 0x68, 0xAC, 0xEA, 0x04, 0xD2, 0x44, 0x36, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x6D, 0xEE, +0x0A, 0xD4, 0x0F, 0x6D, 0x03, 0xF3, 0x00, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF3, +0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF3, +0x00, 0x69, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF3, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0x7F, 0x49, 0xC0, 0xF3, 0x44, 0x98, +0x2D, 0x49, 0x91, 0x67, 0x3F, 0x6D, 0x09, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF3, +0x14, 0x6C, 0xF0, 0x6D, 0x0F, 0x6E, 0x40, 0xEA, +0x04, 0x93, 0x12, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF5, 0xA8, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xA4, 0xF5, 0xCC, 0x9B, +0x03, 0xF3, 0x04, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x08, 0x6C, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF5, 0xA8, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0xA4, 0xF5, 0xCC, 0x9B, 0x43, 0xF3, 0x1C, 0x6C, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF3, +0x00, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, +0xA4, 0x9B, 0x01, 0x6E, 0x40, 0xEA, 0x0A, 0x93, +0x80, 0xF0, 0x56, 0xA3, 0x01, 0x72, 0x41, 0x61, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF5, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x69, 0x2B, 0xE9, 0xE3, 0xF3, 0x18, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x02, 0xF3, +0x10, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF5, 0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF5, 0xD8, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, 0x36, 0xF4, +0x08, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x01, 0x6E, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xEA, 0x00, 0xF7, +0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, +0x14, 0x6C, 0xB1, 0x67, 0xA4, 0xF5, 0x7C, 0x9B, +0x42, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF5, 0xC0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0xE3, 0xF3, +0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF5, 0xC4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF5, +0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, +0x18, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF5, 0xCC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xE3, 0xF3, 0x18, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF3, +0x18, 0x6C, 0xB1, 0x67, 0x36, 0xF4, 0x08, 0x6E, +0x40, 0xEA, 0x04, 0x93, 0x01, 0x6E, 0xC0, 0xF3, +0x44, 0x98, 0xC4, 0xEB, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF5, 0x70, 0x9B, 0x00, 0xF7, 0xC0, 0x36, +0xE3, 0xF3, 0x14, 0x6C, 0xB1, 0x67, 0x6D, 0xEE, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x68, 0xE4, 0xF2, 0x34, 0x9A, 0x04, 0x96, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0x6B, 0x6D, 0xEE, +0xB1, 0x67, 0xA3, 0xF3, 0x14, 0x6C, 0x40, 0xEA, +0x0A, 0x94, 0x04, 0x95, 0x00, 0x6E, 0x80, 0x18, +0xBF, 0x2F, 0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, +0xE3, 0xF3, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x04, 0x92, 0x08, 0x6B, 0x03, 0xF3, 0x00, 0x6C, +0x44, 0x36, 0xC0, 0xF3, 0x44, 0x98, 0x6D, 0xEE, +0x0F, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xC3, 0xF3, 0x0C, 0x69, 0x91, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, 0x0C, 0x6E, +0x40, 0xEA, 0x04, 0x92, 0x05, 0x2A, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF3, 0x04, 0x6C, 0x04, 0x10, +0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF3, 0x1C, 0x6C, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF5, 0xA8, 0x9B, +0x5B, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0xB0, 0x9B, +0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF3, 0x14, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0xB8, 0x9A, 0xE3, 0xF3, 0x1C, 0x6C, +0x80, 0x18, 0xE1, 0x39, 0xFF, 0xF7, 0x1F, 0x6B, +0x80, 0xF3, 0x0E, 0x6C, 0x6C, 0xEA, 0x98, 0xEA, +0x0A, 0x6C, 0x12, 0xE8, 0x02, 0x30, 0x0A, 0x30, +0x9B, 0xE8, 0x01, 0x2C, 0xE5, 0xE8, 0x10, 0xEC, +0x05, 0x5C, 0x12, 0xE8, 0x6C, 0xE8, 0x02, 0x61, +0x01, 0x48, 0x6C, 0xE8, 0x04, 0x92, 0x07, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x03, 0xF3, 0x04, 0x6C, 0x06, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x43, 0xF3, +0x1C, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF5, +0xA8, 0x9B, 0xD0, 0x67, 0x40, 0xEA, 0x04, 0x92, +0x0A, 0x93, 0x7F, 0x4A, 0x1D, 0x4A, 0x44, 0x32, +0x49, 0xE3, 0x02, 0xCA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x68, 0xAC, 0xE8, 0xB0, 0x67, 0x03, 0x6E, +0x24, 0x67, 0x80, 0x18, 0xBF, 0x2F, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x04, 0x36, +0x08, 0x6B, 0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, +0x0F, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF3, 0xBC, 0x9B, 0x23, 0xF3, 0x00, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x80, 0xF0, 0x62, 0xA9, +0x01, 0x6A, 0x44, 0xE8, 0x6C, 0xEA, 0x47, 0xE8, +0x04, 0x22, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, +0x87, 0x30, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x68, 0xCC, 0xE8, +0xB0, 0x67, 0x02, 0x6E, 0x24, 0x67, 0x80, 0x18, +0xBF, 0x2F, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x08, 0x6B, 0x04, 0x36, +0x6D, 0xEE, 0x03, 0xF3, 0x00, 0x6C, 0x0F, 0x6D, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF3, +0xBC, 0x9A, 0x03, 0xF3, 0x08, 0x6C, 0x80, 0x18, +0xE1, 0x39, 0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF5, 0x58, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0xB0, 0x67, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0xEC, 0x9A, 0x00, 0x6E, 0x70, 0xF1, +0x08, 0x4C, 0x80, 0x18, 0xF0, 0x53, 0x91, 0x67, +0xB0, 0x67, 0x80, 0x18, 0x40, 0x2C, 0x06, 0x93, +0x07, 0x92, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x6D, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x25, 0x67, +0x4C, 0xEE, 0x4C, 0xE9, 0xEC, 0xEA, 0x01, 0x72, +0x04, 0x67, 0x04, 0xD6, 0x17, 0x61, 0xB1, 0x67, +0x04, 0x6E, 0x80, 0x18, 0xBF, 0x2F, 0x90, 0x67, +0xB1, 0x67, 0x80, 0x18, 0x73, 0x2D, 0x00, 0xF6, +0x00, 0x5A, 0x04, 0x61, 0x04, 0x93, 0x02, 0x6A, +0x23, 0x2B, 0x25, 0x10, 0x04, 0x94, 0x00, 0xF3, +0x00, 0x5A, 0x78, 0x67, 0x01, 0x5C, 0x58, 0x67, +0x1E, 0x2B, 0x1A, 0x10, 0x19, 0x2A, 0xB1, 0x67, +0x00, 0x6E, 0x80, 0x18, 0x2C, 0x2D, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF5, 0x7C, 0x9B, 0x43, 0xEB, +0x11, 0x60, 0x42, 0x34, 0x96, 0x34, 0x80, 0x18, +0x5B, 0x28, 0x03, 0x6B, 0x78, 0xEA, 0x03, 0x6A, +0x12, 0xEB, 0xFE, 0xF0, 0x02, 0x4B, 0xE0, 0xF3, +0x09, 0x5B, 0x05, 0x60, 0xFA, 0x5B, 0x02, 0x61, +0x00, 0x6A, 0x01, 0x10, 0x04, 0x6A, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xF7, 0x63, 0x11, 0x62, 0x10, 0xD1, 0x0F, 0xD0, +0xFF, 0x6A, 0x25, 0x67, 0x4C, 0xEE, 0x4C, 0xEF, +0x4C, 0xE9, 0x00, 0x6A, 0x12, 0xD4, 0x0C, 0xD6, +0x0A, 0xD7, 0x07, 0xD2, 0x08, 0xD2, 0x09, 0xD2, +0x06, 0xD2, 0x02, 0x67, 0x06, 0x5A, 0x80, 0xF0, +0x1C, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, +0x03, 0xF6, 0x04, 0x4B, 0x49, 0xE3, 0x40, 0x9A, +0x00, 0xEA, 0x30, 0xF0, 0x21, 0x68, 0x70, 0xF1, +0x08, 0x48, 0x90, 0x67, 0xB1, 0x67, 0x56, 0x6E, +0x1F, 0x6F, 0x80, 0x18, 0xAB, 0x53, 0x90, 0x67, +0xB1, 0x67, 0x00, 0x6E, 0xE0, 0xF3, 0x00, 0x6F, +0x0B, 0xD2, 0x80, 0x18, 0xAB, 0x53, 0x0A, 0x94, +0x06, 0xD2, 0x0D, 0x2C, 0x12, 0x94, 0x08, 0x96, +0xB1, 0x67, 0x01, 0x6F, 0x80, 0x18, 0x8B, 0x31, +0x07, 0x2A, 0x0C, 0x92, 0x04, 0x22, 0x01, 0x6B, +0x09, 0xD3, 0x0A, 0x92, 0x01, 0x10, 0x05, 0x6A, +0x06, 0x94, 0xFF, 0x6B, 0x0B, 0x90, 0x6C, 0xEC, +0x06, 0xD4, 0x07, 0x94, 0x6C, 0xE8, 0x01, 0x4C, +0x6C, 0xEC, 0x07, 0xD4, 0x60, 0x10, 0x06, 0x92, +0x0F, 0x5A, 0x12, 0x60, 0x06, 0x92, 0xFF, 0x6B, +0xF4, 0x4A, 0x6C, 0xEA, 0x03, 0x5A, 0x54, 0x60, +0x00, 0x6A, 0x30, 0xF0, 0x21, 0x6C, 0x04, 0xD2, +0x70, 0xF1, 0x08, 0x4C, 0xB1, 0x67, 0xC2, 0x67, +0x13, 0x10, 0x06, 0x93, 0x0C, 0x5B, 0x02, 0x60, +0x0C, 0x6A, 0x07, 0x10, 0x06, 0x92, 0xFF, 0x6B, +0xF4, 0x4A, 0x6C, 0xEA, 0x03, 0x5A, 0x40, 0x60, +0x0F, 0x6A, 0x30, 0xF0, 0x21, 0x6C, 0x04, 0xD2, +0x70, 0xF1, 0x08, 0x4C, 0xB1, 0x67, 0x00, 0x6E, +0xE0, 0xF3, 0x00, 0x6F, 0x80, 0x18, 0xF0, 0x53, +0x35, 0x10, 0x3B, 0x20, 0xFF, 0x6A, 0xFE, 0x48, +0x30, 0xF0, 0x21, 0x6C, 0x4C, 0xE8, 0x70, 0xF1, +0x08, 0x4C, 0xB1, 0x67, 0x56, 0x6E, 0x1F, 0x6F, +0x04, 0xD0, 0x80, 0x18, 0xF0, 0x53, 0x00, 0x6C, +0x08, 0xD4, 0x44, 0x67, 0x24, 0x10, 0x1F, 0x70, +0x02, 0x61, 0x1F, 0x68, 0x26, 0x10, 0xFF, 0x6A, +0x03, 0x48, 0x30, 0xF0, 0x21, 0x6C, 0x4C, 0xE8, +0x70, 0xF1, 0x08, 0x4C, 0xB1, 0x67, 0x56, 0x6E, +0x1F, 0x6F, 0x04, 0xD0, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6A, 0x08, 0xD2, 0x10, 0x10, 0x12, 0x94, +0xB1, 0x67, 0x01, 0x6E, 0x80, 0x18, 0xBF, 0x2F, +0x12, 0x94, 0x08, 0x96, 0xB1, 0x67, 0x00, 0x6F, +0x80, 0x18, 0x8B, 0x31, 0x0A, 0x22, 0x03, 0x10, +0x01, 0x6B, 0x08, 0xD3, 0x00, 0x6A, 0x09, 0x94, +0x04, 0x2C, 0x07, 0x93, 0x06, 0x5B, 0x7F, 0xF7, +0x01, 0x61, 0x50, 0x67, 0x11, 0x97, 0x10, 0x91, +0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0xFF, 0x68, 0xAC, 0xE8, 0xB0, 0x67, 0x24, 0x67, +0x80, 0x18, 0x1F, 0x2E, 0x30, 0xF0, 0x21, 0x6C, +0x1F, 0x6F, 0x00, 0x6E, 0x70, 0xF1, 0x08, 0x4C, +0xB0, 0x67, 0x0A, 0xD2, 0x80, 0x18, 0xAB, 0x53, +0x91, 0x67, 0xB0, 0x67, 0x09, 0xD2, 0x80, 0x18, +0xEF, 0x2E, 0x91, 0x67, 0xB0, 0x67, 0x04, 0x6E, +0x80, 0x18, 0xBF, 0x2F, 0x91, 0x67, 0xB0, 0x67, +0x80, 0x18, 0x73, 0x2D, 0x91, 0x67, 0xB0, 0x67, +0x80, 0x18, 0x86, 0x2D, 0x0D, 0x22, 0x91, 0x67, +0xB0, 0x67, 0x80, 0x18, 0xEF, 0x2E, 0x91, 0x67, +0xB0, 0x67, 0x04, 0x6E, 0x80, 0x18, 0xBF, 0x2F, +0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0x86, 0x2D, +0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, 0xE0, 0x2D, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x6E, 0x01, 0x6F, +0x07, 0xD2, 0x80, 0x18, 0xAE, 0x31, 0x91, 0x67, +0xB0, 0x67, 0x08, 0xD2, 0x80, 0x18, 0x0F, 0x2D, +0x08, 0x93, 0x00, 0x6C, 0x06, 0xD4, 0x43, 0xEB, +0x06, 0x61, 0x4B, 0xE3, 0x06, 0xD2, 0x06, 0x94, +0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0xD4, 0x06, 0x92, +0x30, 0xF0, 0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, +0xB0, 0x67, 0x56, 0x6E, 0x1F, 0x6F, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x91, 0x67, 0xB0, 0x67, +0x80, 0x18, 0xE0, 0x2D, 0x07, 0x93, 0x43, 0xEB, +0x02, 0x60, 0x6B, 0xE2, 0x02, 0x10, 0x07, 0x94, +0x4B, 0xE4, 0xFF, 0x6B, 0x6C, 0xEA, 0x01, 0xE1, +0x40, 0xF1, 0x40, 0xC0, 0x09, 0x93, 0x0A, 0x94, +0x0F, 0x97, 0x0E, 0x91, 0x8B, 0xE3, 0x06, 0x93, +0x0D, 0x90, 0x49, 0xE3, 0xFF, 0x6B, 0x6C, 0xEA, +0x08, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, +0xB0, 0x67, 0x24, 0x67, 0x80, 0x18, 0x0A, 0x32, +0xA2, 0x67, 0x91, 0x67, 0xD0, 0x67, 0x04, 0xD2, +0x80, 0x18, 0x6B, 0x31, 0x04, 0x96, 0x91, 0x67, +0xA2, 0x67, 0xF0, 0x67, 0x80, 0x18, 0x1B, 0x2C, +0x09, 0xE1, 0x80, 0xF0, 0x57, 0xA2, 0x07, 0x22, +0x80, 0xF0, 0x62, 0xA9, 0x01, 0x6A, 0x44, 0xE8, +0x6D, 0xEA, 0x80, 0xF0, 0x42, 0xC9, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x6D, +0x04, 0x67, 0x80, 0x18, 0x45, 0x32, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0x45, 0x32, 0x90, 0x67, +0x00, 0x6D, 0x80, 0x18, 0x52, 0x31, 0x90, 0x67, +0x01, 0x6D, 0x80, 0x18, 0x52, 0x31, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xDF, 0x63, 0x41, 0x62, 0x40, 0xD1, 0x3F, 0xD0, +0x30, 0xF0, 0x20, 0x6D, 0x24, 0x67, 0x23, 0xF6, +0x18, 0x4D, 0x2B, 0x04, 0x48, 0x6E, 0x00, 0x18, +0xCA, 0xD8, 0x30, 0xF0, 0x20, 0x6D, 0x04, 0x04, +0x03, 0xF6, 0x1C, 0x4D, 0x1C, 0x6E, 0x00, 0x18, +0xCA, 0xD8, 0x52, 0x99, 0x40, 0xA2, 0x04, 0x2A, +0x91, 0x67, 0x80, 0x18, 0x74, 0x30, 0x3C, 0x2A, +0x91, 0x67, 0x80, 0x18, 0xB8, 0x2D, 0x04, 0x00, +0x12, 0x6F, 0x91, 0x67, 0x2B, 0x05, 0x19, 0x06, +0x80, 0x18, 0xD1, 0x2D, 0x0B, 0x06, 0xB0, 0x67, +0x91, 0x67, 0x80, 0x18, 0xDC, 0x2B, 0x91, 0x67, +0x80, 0x18, 0x89, 0x2B, 0x91, 0x67, 0x01, 0x6D, +0x80, 0x18, 0xBC, 0x28, 0x01, 0x6D, 0x91, 0x67, +0x80, 0x18, 0x96, 0x28, 0x91, 0x67, 0x80, 0x18, +0xB5, 0x2E, 0x91, 0x67, 0x80, 0x18, 0x01, 0x2E, +0x91, 0x67, 0x80, 0x18, 0x58, 0x32, 0x91, 0x67, +0x80, 0x18, 0x13, 0x2B, 0x91, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x96, 0x28, 0x91, 0x67, 0x00, 0x6D, +0x80, 0x18, 0xBC, 0x28, 0xB0, 0x67, 0x0B, 0x06, +0x91, 0x67, 0x80, 0x18, 0x17, 0x2F, 0x91, 0x67, +0x80, 0x18, 0x31, 0x2F, 0x91, 0x67, 0x2B, 0x05, +0x19, 0x06, 0x12, 0x6F, 0x80, 0x18, 0x77, 0x28, +0x41, 0x97, 0x40, 0x91, 0x3F, 0x90, 0x21, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x2C, 0xED, +0x01, 0x75, 0x58, 0x67, 0x0C, 0xD4, 0x06, 0xD2, +0x80, 0xF0, 0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x2C, 0x9A, 0x00, 0x6D, 0xC5, 0x67, +0xF1, 0x67, 0x80, 0x18, 0xAB, 0x53, 0x30, 0xF0, +0x20, 0x68, 0x0C, 0x94, 0x08, 0xF2, 0x10, 0x48, +0xF1, 0x67, 0x23, 0xF4, 0x40, 0xD8, 0x01, 0x6D, +0x00, 0x6E, 0x80, 0x18, 0xAB, 0x53, 0x23, 0xF4, +0x44, 0xD8, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, 0x03, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x00, 0x6E, 0x08, 0xF1, 0x0C, 0x6C, 0x03, 0x6D, 0x40, 0xEA, 0x01, 0x6D, 0x21, 0xF0, 0x04, 0x6C, -0xAB, 0xED, 0x80, 0x18, 0x72, 0x3C, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF5, 0xA8, 0x9B, 0x06, 0xD2, -0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x04, 0x6C, -0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x14, 0x4B, 0xE0, 0x9B, 0x23, 0xF4, -0x44, 0x99, 0x0C, 0x94, 0x00, 0x6D, 0xC5, 0x67, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x23, 0xF4, -0x48, 0x99, 0x0C, 0x94, 0x01, 0x6D, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, -0xE0, 0x9A, 0x00, 0x6E, 0x80, 0x18, 0xE1, 0x4E, -0xC0, 0xF3, 0x44, 0x98, 0x06, 0x96, 0x01, 0x6D, -0xAB, 0xED, 0x21, 0xF0, 0x04, 0x6C, 0x40, 0xEA, -0x0C, 0x94, 0x80, 0x18, 0x46, 0x4F, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, 0x03, 0xF0, -0x0C, 0x6C, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0x6D, 0x08, 0xF1, 0x0C, 0x6C, 0xC5, 0x67, -0x40, 0xEA, 0x0C, 0x94, 0x80, 0x18, 0x04, 0x4F, -0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x46, 0xF7, -0x08, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x80, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x01, 0x6B, -0x8C, 0xEB, 0xC3, 0xF3, 0xAE, 0xA2, 0x64, 0x34, -0x03, 0x6B, 0x6B, 0xEB, 0xAC, 0xEB, 0x8D, 0xEB, -0xC3, 0xF3, 0x6E, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xAB, 0xED, 0x80, 0x18, 0xE1, 0x39, 0x07, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x64, 0x98, +0xE4, 0xF4, 0xAC, 0x9A, 0x21, 0xF0, 0x04, 0x6C, +0x03, 0x6E, 0x40, 0xEB, 0x06, 0x93, 0x0C, 0x94, +0x00, 0x6D, 0xC5, 0x67, 0xF1, 0x67, 0x04, 0xD3, +0x80, 0x18, 0xF0, 0x53, 0x06, 0x92, 0x0C, 0x94, +0xF1, 0x67, 0x01, 0x6D, 0x00, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0xC0, 0xF3, 0x44, 0x98, +0x07, 0x96, 0x01, 0x6D, 0x21, 0xF0, 0x04, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x0C, 0x94, 0x00, 0x68, +0x80, 0x18, 0x4A, 0x54, 0x0C, 0x94, 0x80, 0x18, +0x5E, 0x51, 0x1B, 0x2A, 0xE0, 0xF3, 0x09, 0x70, +0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF2, +0x88, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x00, 0x6A, 0x91, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x32, 0x6C, 0x01, 0x48, +0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, +0xE1, 0x17, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x63, 0xF4, 0x04, 0x6C, 0x08, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0x64, 0x9A, 0xFE, 0x6A, 0x01, 0x6D, +0x80, 0xA3, 0xC5, 0x67, 0x8C, 0xEA, 0x40, 0xC3, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF4, 0x04, 0x6C, +0x40, 0xEA, 0x6C, 0x10, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, 0x00, 0x6E, +0x23, 0xF4, 0x04, 0x6C, 0x40, 0xEA, 0x00, 0x18, +0xA8, 0xE4, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, +0x64, 0x9A, 0x01, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, +0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, +0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, 0x63, 0xF4, +0x04, 0x6C, 0x08, 0x6D, 0x40, 0xEA, 0x01, 0x6D, +0x21, 0xF0, 0x04, 0x6C, 0xAB, 0xED, 0x80, 0x18, +0xE1, 0x39, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF4, +0xAC, 0x9B, 0x06, 0xD2, 0xC0, 0xF3, 0x44, 0x98, +0x21, 0xF0, 0x04, 0x6C, 0x03, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, +0xE0, 0x9B, 0x23, 0xF4, 0x40, 0x99, 0x0C, 0x94, +0x00, 0x6D, 0xC5, 0x67, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x23, 0xF4, 0x44, 0x99, 0x0C, 0x94, +0x01, 0x6D, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0x0C, 0x4A, 0xE0, 0x9A, 0x00, 0x6E, +0x80, 0x18, 0xF0, 0x53, 0xC0, 0xF3, 0x44, 0x98, +0x06, 0x96, 0x01, 0x6D, 0xAB, 0xED, 0x21, 0xF0, +0x04, 0x6C, 0x40, 0xEA, 0x0C, 0x94, 0x80, 0x18, +0x61, 0x54, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, +0xC5, 0x67, 0x03, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, 0x08, 0xF1, +0x0C, 0x6C, 0xC5, 0x67, 0x40, 0xEA, 0x0C, 0x94, +0x80, 0x18, 0x13, 0x54, 0x01, 0x6A, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, -0x20, 0x6C, 0x86, 0xF7, 0x00, 0x4C, 0x07, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0x80, 0xA2, 0x01, 0x6B, -0x8C, 0xEB, 0x0C, 0x23, 0xE0, 0xF0, 0x62, 0xA2, -0xFF, 0x73, 0x08, 0x60, 0xE0, 0xF0, 0x81, 0xA2, -0xE3, 0xF3, 0x6A, 0xA2, 0x6D, 0xE4, 0x03, 0x4B, -0xE3, 0xF3, 0x60, 0xCA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0xA0, 0xA4, 0x60, 0xF1, -0xFA, 0xA3, 0x02, 0x6A, 0x01, 0x6E, 0x4B, 0xEA, -0xCC, 0xED, 0xEC, 0xEA, 0xAD, 0xEA, 0x60, 0xF1, -0x5A, 0xC3, 0xA1, 0xA4, 0xCC, 0xEA, 0x60, 0xF1, -0xBB, 0xC3, 0xFF, 0x6D, 0x0D, 0x22, 0x61, 0xA4, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, 0x44, 0x9A, -0x74, 0x33, 0x40, 0x6C, 0x4D, 0xE3, 0x40, 0xA3, -0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x0A, 0x10, -0x61, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x44, 0x9A, 0x74, 0x33, 0x4D, 0xE3, 0x80, 0xA3, -0xBF, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x48, 0x9A, -0x60, 0xA2, 0x03, 0x6A, 0x6C, 0xEA, 0x10, 0x6B, -0x64, 0xEA, 0xFF, 0x6A, 0x4C, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF7, 0x48, 0x9A, 0x04, 0xD3, -0x40, 0x9A, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF2, 0x44, 0x9A, 0x00, 0x9A, 0x05, 0x92, -0x0A, 0xEA, 0xC0, 0xF0, 0x07, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xA0, 0xF0, -0x64, 0x9A, 0x02, 0x6C, 0x8D, 0xEB, 0xA0, 0xF0, -0x64, 0xDA, 0x30, 0xF0, 0x20, 0x69, 0xA6, 0xF6, -0x00, 0x49, 0x42, 0xF6, 0x46, 0xA9, 0x00, 0xF7, -0x00, 0x72, 0x07, 0x60, 0x42, 0xF6, 0x66, 0xA1, -0x42, 0xF6, 0x87, 0xA1, 0xAF, 0x43, 0x8E, 0xED, -0x13, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x60, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, 0x7C, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, 0x9A, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xAC, 0x9D, -0x7F, 0x6E, 0xB5, 0xE0, 0xE0, 0xA5, 0xCC, 0xEF, -0x47, 0x2F, 0x00, 0xF4, 0x00, 0x72, 0x80, 0xF0, -0x0D, 0x60, 0xAC, 0x43, 0x8E, 0xED, 0x80, 0xF0, -0x09, 0x25, 0x00, 0xF5, 0x01, 0x72, 0x80, 0xF0, -0x05, 0x60, 0x00, 0xF6, 0x02, 0x72, 0x80, 0xF0, -0x01, 0x60, 0x00, 0xF7, 0x03, 0x72, 0x7E, 0x60, -0x00, 0xF5, 0x00, 0x72, 0x7B, 0x60, 0xFD, 0x4B, -0x6E, 0xEC, 0x78, 0x24, 0x30, 0xF0, 0x20, 0x69, -0xA6, 0xF6, 0x00, 0x49, 0x42, 0xF6, 0x46, 0xA9, -0x00, 0xF6, 0x01, 0x72, 0x6F, 0x60, 0x00, 0xF7, -0x02, 0x72, 0x6C, 0x60, 0x00, 0xF6, 0x00, 0x72, -0x69, 0x60, 0x42, 0xF6, 0x66, 0xA1, 0x42, 0xF6, -0x87, 0xA1, 0xFE, 0x4B, 0x8E, 0xEB, 0x62, 0x23, -0x00, 0xF7, 0x01, 0x72, 0x5F, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF3, 0x50, 0x9A, 0x7F, 0x4C, -0x30, 0xF0, 0x20, 0x6D, 0x2B, 0x4C, 0x23, 0xF2, -0xAC, 0x9D, 0x49, 0xE0, 0x94, 0x34, 0x60, 0xAA, -0x91, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x06, 0x4C, 0xB5, 0xE0, 0x13, 0x10, -0x40, 0xA5, 0x4C, 0xEE, 0x01, 0x76, 0x1F, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF3, 0x50, 0x9A, -0x7F, 0x4C, 0x2B, 0x4C, 0x49, 0xE0, 0x60, 0xAA, -0x30, 0xF0, 0x20, 0x6A, 0x94, 0x34, 0x80, 0xF2, -0x4C, 0x9A, 0x91, 0xE1, 0x06, 0x4C, 0xFF, 0x6E, -0x6C, 0xEE, 0x40, 0xEA, 0x42, 0xF6, 0x47, 0xA1, -0x08, 0x6B, 0x01, 0x4A, 0x42, 0xF6, 0x47, 0xC1, -0x42, 0xF6, 0x47, 0xA1, 0x6E, 0xEA, 0x13, 0x2A, -0x42, 0xF6, 0x47, 0xC1, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x80, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF4, 0x68, 0x9B, 0x40, 0x9C, -0x6D, 0xEA, 0x40, 0xDC, 0xA3, 0xF3, 0x5C, 0x99, -0x6D, 0xEA, 0xA3, 0xF3, 0x5C, 0xD9, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF7, 0x4C, 0x9A, 0x04, 0x93, -0x40, 0x9A, 0x0E, 0xEA, 0x61, 0xE0, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x40, 0x9A, -0x00, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x44, 0x9A, 0x00, 0xDA, 0x05, 0x92, 0x4A, 0xE8, -0x5F, 0xF7, 0x03, 0x61, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFE, 0x63, 0x03, 0xD1, 0x02, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, -0x7C, 0x9A, 0x02, 0x6D, 0xAC, 0xEB, 0x40, 0xF1, -0x1A, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x68, 0x9B, 0x80, 0xA3, 0x0F, 0x6B, 0x8C, 0xEB, -0x05, 0x23, 0xA0, 0xF0, 0x84, 0x9A, 0xAD, 0xEC, -0xA0, 0xF0, 0x84, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x47, 0xF0, 0x5C, 0xA2, 0xFF, 0x4A, 0x00, 0xD2, -0x44, 0x11, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xA0, 0xF1, 0x9C, 0xAA, 0x00, 0xF7, -0x00, 0x74, 0x05, 0x60, 0xA0, 0xF1, 0x1D, 0xA2, -0x00, 0x94, 0x8A, 0xE8, 0x13, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, 0xFF, 0x6C, +0x20, 0x6C, 0xA8, 0xF2, 0x18, 0x4C, 0x07, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x80, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x01, 0x6B, 0x8C, 0xEB, 0xC3, 0xF3, +0xAA, 0xA2, 0x64, 0x34, 0x03, 0x6B, 0x6B, 0xEB, +0xAC, 0xEB, 0x8D, 0xEB, 0xC3, 0xF3, 0x6A, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xE8, 0xF2, +0x10, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, +0x80, 0xA2, 0x01, 0x6B, 0x8C, 0xEB, 0x0C, 0x23, +0xE0, 0xF0, 0x62, 0xA2, 0xFF, 0x73, 0x08, 0x60, +0xE0, 0xF0, 0x81, 0xA2, 0xE3, 0xF3, 0x66, 0xA2, +0x6D, 0xE4, 0x03, 0x4B, 0xC3, 0xF3, 0x7C, 0xCA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0xA0, 0xA4, 0x60, 0xF1, 0xF3, 0xA3, 0x02, 0x6A, +0x01, 0x6E, 0x4B, 0xEA, 0xCC, 0xED, 0xEC, 0xEA, +0xAD, 0xEA, 0x60, 0xF1, 0x53, 0xC3, 0xA1, 0xA4, +0xCC, 0xEA, 0x60, 0xF1, 0xB4, 0xC3, 0xFF, 0x6D, +0x0D, 0x22, 0x61, 0xA4, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF6, 0x4C, 0x9A, 0x74, 0x33, 0x40, 0x6C, +0x4D, 0xE3, 0x40, 0xA3, 0xAC, 0xEA, 0x8D, 0xEA, +0xAC, 0xEA, 0x0A, 0x10, 0x61, 0xA4, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF6, 0x4C, 0x9A, 0x74, 0x33, +0x4D, 0xE3, 0x80, 0xA3, 0xBF, 0x6A, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x40, 0x9A, 0x60, 0xA2, 0x03, 0x6A, +0x6C, 0xEA, 0x10, 0x6B, 0x64, 0xEA, 0xFF, 0x6A, +0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF6, +0x50, 0x9A, 0x04, 0xD3, 0x40, 0x9A, 0x05, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x5C, 0x9A, +0x00, 0x9A, 0x05, 0x92, 0x0A, 0xEA, 0xC0, 0xF0, +0x04, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA0, 0xF0, 0x64, 0x9A, 0x02, 0x6C, +0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x30, 0xF0, +0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, 0x42, 0xF6, +0x40, 0xA9, 0x00, 0xF7, 0x00, 0x72, 0x07, 0x60, +0x42, 0xF6, 0x60, 0xA1, 0x42, 0xF6, 0x81, 0xA1, +0xAF, 0x43, 0x8E, 0xED, 0x13, 0x2D, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x7C, 0xDA, 0x25, 0x11, 0x30, 0xF0, 0x20, 0x6C, -0xE6, 0xF4, 0xCA, 0xA4, 0xE3, 0x67, 0xFF, 0x6D, -0xE7, 0xEE, 0xC7, 0x67, 0x01, 0x6F, 0xEC, 0xEE, -0xA0, 0xF0, 0x0A, 0x26, 0x0C, 0x35, 0xB5, 0xE2, -0x80, 0xF1, 0x00, 0x4D, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6E, 0xE6, 0xF4, 0xEA, 0xA6, 0xFF, 0x6C, -0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, 0x74, 0x4F, -0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x02, 0xF0, -0x00, 0x77, 0x08, 0x60, 0xE6, 0xF4, 0xEA, 0xA6, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA3, 0xF3, 0x78, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x78, 0xDA, 0x97, 0x10, 0x30, 0xF0, 0x20, 0x6D, +0x64, 0xF1, 0xA4, 0x9D, 0x7F, 0x6E, 0xB5, 0xE0, +0xE0, 0xA5, 0xCC, 0xEF, 0x45, 0x2F, 0x00, 0xF4, +0x00, 0x72, 0x80, 0xF0, 0x0A, 0x60, 0xAC, 0x43, +0x8E, 0xED, 0x80, 0xF0, 0x06, 0x25, 0x00, 0xF5, +0x01, 0x72, 0x80, 0xF0, 0x02, 0x60, 0x00, 0xF6, +0x02, 0x72, 0x7F, 0x60, 0x00, 0xF7, 0x03, 0x72, +0x7C, 0x60, 0x00, 0xF5, 0x00, 0x72, 0x79, 0x60, +0xFD, 0x4B, 0x6E, 0xEC, 0x76, 0x24, 0x30, 0xF0, +0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, 0x42, 0xF6, +0x40, 0xA9, 0x00, 0xF6, 0x01, 0x72, 0x6D, 0x60, +0x00, 0xF7, 0x02, 0x72, 0x6A, 0x60, 0x00, 0xF6, +0x00, 0x72, 0x67, 0x60, 0x42, 0xF6, 0x60, 0xA1, +0x42, 0xF6, 0x81, 0xA1, 0xFE, 0x4B, 0x8E, 0xEB, +0x60, 0x23, 0x00, 0xF7, 0x01, 0x72, 0x5D, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6D, 0x7F, 0x4C, 0x64, 0xF1, +0xA4, 0x9D, 0x49, 0xE0, 0x2B, 0x4C, 0x60, 0xAA, +0x94, 0x34, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, +0x4C, 0x9A, 0x91, 0xE1, 0xB5, 0xE0, 0x12, 0x10, +0x40, 0xA5, 0x4C, 0xEE, 0x01, 0x76, 0x1E, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF2, 0x54, 0x9A, +0x7F, 0x4C, 0x2B, 0x4C, 0x49, 0xE0, 0x60, 0xAA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0x94, 0x34, 0x91, 0xE1, 0xFF, 0x6E, 0x6C, 0xEE, +0x40, 0xEA, 0x42, 0xF6, 0x41, 0xA1, 0x08, 0x6B, +0x01, 0x4A, 0x42, 0xF6, 0x41, 0xC1, 0x42, 0xF6, +0x41, 0xA1, 0x6E, 0xEA, 0x13, 0x2A, 0x42, 0xF6, +0x41, 0xC1, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x98, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF3, 0x7C, 0x9B, 0x40, 0x9C, 0x6D, 0xEA, +0x40, 0xDC, 0xA3, 0xF3, 0x58, 0x99, 0x6D, 0xEA, +0xA3, 0xF3, 0x58, 0xD9, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF6, 0x54, 0x9A, 0x04, 0x93, 0x40, 0x9A, +0x0E, 0xEA, 0x61, 0xE0, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF1, 0x58, 0x9A, 0x00, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x5C, 0x9A, +0x00, 0xDA, 0x05, 0x92, 0x4A, 0xE8, 0x5F, 0xF7, +0x06, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFE, 0x63, 0x03, 0xD1, +0x02, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, 0x02, 0x6D, +0xAC, 0xEB, 0x60, 0xF1, 0x02, 0x2B, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF1, 0x60, 0x9B, 0x80, 0xA3, +0x0F, 0x6B, 0x8C, 0xEB, 0x05, 0x23, 0xA0, 0xF0, +0x84, 0x9A, 0xAD, 0xEC, 0xA0, 0xF0, 0x84, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC8, 0xF3, 0x45, 0xA2, +0xFF, 0x4A, 0x00, 0xD2, 0x4C, 0x11, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF1, 0xB4, 0x9A, 0xA4, 0xF6, +0x88, 0x9C, 0xAC, 0xEC, 0x30, 0xF0, 0x20, 0x6D, +0xA4, 0xF6, 0xB8, 0x9D, 0xAE, 0xEC, 0x05, 0x24, +0xA0, 0xF1, 0x16, 0xA2, 0x00, 0x94, 0x8A, 0xE8, +0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x78, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, 0x25, 0x11, +0x30, 0xF0, 0x20, 0x6C, 0x47, 0xF4, 0xC6, 0xA4, +0xE3, 0x67, 0xFF, 0x6D, 0xE7, 0xEE, 0xC7, 0x67, +0x01, 0x6F, 0xEC, 0xEE, 0xA0, 0xF0, 0x0A, 0x26, +0x0C, 0x35, 0xB5, 0xE2, 0x60, 0xF1, 0x19, 0x4D, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6E, 0x47, 0xF4, +0xE6, 0xA6, 0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, 0x74, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, -0x2C, 0xEF, 0x0F, 0x2F, 0x30, 0xF0, 0x20, 0x6C, -0xE6, 0xF4, 0x2A, 0xA4, 0xFF, 0x6C, 0x30, 0xF0, -0x20, 0x6E, 0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, -0xE2, 0x67, 0x25, 0xE2, 0x43, 0xF1, 0xDC, 0x9E, -0x0B, 0x10, 0xE6, 0xF4, 0x2A, 0xA6, 0x30, 0xF0, -0x20, 0x6E, 0x63, 0xF1, 0xC0, 0x9E, 0x8C, 0xE9, +0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, +0x47, 0xF4, 0xE6, 0xA6, 0x8C, 0xEF, 0x74, 0x4F, +0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, 0x0F, 0x2F, +0x30, 0xF0, 0x20, 0x6C, 0x47, 0xF4, 0x26, 0xA4, +0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x6E, 0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, 0xE2, 0x67, 0x25, 0xE2, -0xD9, 0xE1, 0xC0, 0xA6, 0x0C, 0x31, 0xCC, 0xEC, -0x30, 0xF0, 0x20, 0x6E, 0xA6, 0xF6, 0x00, 0x4E, -0xD9, 0xE1, 0xFD, 0xE6, 0x60, 0xF1, 0x9C, 0xC7, -0x30, 0xF0, 0x20, 0x6E, 0xE6, 0xF4, 0xEA, 0xA6, -0xFF, 0x6C, 0x1F, 0xF7, 0x00, 0x69, 0x8C, 0xEF, +0x84, 0xF0, 0xD0, 0x9E, 0x0B, 0x10, 0x47, 0xF4, +0x26, 0xA6, 0x30, 0xF0, 0x20, 0x6E, 0x84, 0xF0, +0xD4, 0x9E, 0x8C, 0xE9, 0x74, 0x49, 0x28, 0x31, +0xE2, 0x67, 0x25, 0xE2, 0xD9, 0xE1, 0xC0, 0xA6, +0x0C, 0x31, 0xCC, 0xEC, 0x30, 0xF0, 0x20, 0x6E, +0x08, 0xF2, 0x10, 0x4E, 0xD9, 0xE1, 0xFD, 0xE6, +0x60, 0xF1, 0x95, 0xC7, 0x30, 0xF0, 0x20, 0x6E, +0x47, 0xF4, 0xE6, 0xA6, 0xFF, 0x6C, 0x1F, 0xF7, +0x00, 0x69, 0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, +0xFD, 0xE2, 0x2C, 0xEF, 0x02, 0xF0, 0x00, 0x77, +0x08, 0x60, 0x47, 0xF4, 0xE6, 0xA6, 0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, 0xFD, 0xE2, 0x2C, 0xEF, -0x02, 0xF0, 0x00, 0x77, 0x08, 0x60, 0xE6, 0xF4, -0xEA, 0xA6, 0x8C, 0xEF, 0x7C, 0x4F, 0xE8, 0x37, -0xFD, 0xE2, 0x2C, 0xEF, 0x0E, 0x2F, 0x30, 0xF0, -0x20, 0x6C, 0xE6, 0xF4, 0xCA, 0xA4, 0xFF, 0x6C, -0x30, 0xF0, 0x20, 0x6F, 0x8C, 0xEE, 0x7C, 0x4E, -0xC8, 0x36, 0xD9, 0xE2, 0x43, 0xF1, 0xFC, 0x9F, -0x0A, 0x10, 0xE6, 0xF4, 0xCA, 0xA6, 0x30, 0xF0, -0x20, 0x6F, 0x63, 0xF1, 0xE0, 0x9F, 0x8C, 0xEE, -0x7C, 0x4E, 0xC8, 0x36, 0xD9, 0xE2, 0xF9, 0xE6, -0xC0, 0xA6, 0x01, 0x4A, 0x04, 0x72, 0xCC, 0xEC, -0x80, 0xC5, 0x01, 0x4D, 0x8C, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE6, 0xF4, 0xAA, 0xA2, 0x01, 0x6C, -0xC4, 0x67, 0xC4, 0xED, 0xCF, 0xED, 0xE6, 0xF4, -0xCA, 0xA2, 0xAC, 0xEB, 0xFF, 0x6D, 0x84, 0xEE, -0x30, 0xF0, 0x20, 0x6E, 0x63, 0xF2, 0xC8, 0x9E, -0xAC, 0xEC, 0x08, 0x6F, 0x80, 0xC6, 0xE6, 0xF4, -0x8A, 0xA2, 0xAC, 0xEC, 0x01, 0x4C, 0xAC, 0xEC, -0xE6, 0xF4, 0x8A, 0xC2, 0xE6, 0xF4, 0xAA, 0xA2, -0x03, 0x6C, 0xAC, 0xEC, 0xE6, 0xF4, 0x8A, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA0, 0xF1, 0x9D, 0xA2, 0x01, 0x4C, 0xA0, 0xF1, -0x9D, 0xC2, 0xA0, 0xF1, 0x9D, 0xA2, 0xEE, 0xEC, -0x70, 0x2C, 0xA0, 0xF1, 0x9D, 0xC2, 0x6D, 0x10, -0x30, 0xF0, 0x20, 0x6E, 0x43, 0xF2, 0x00, 0x9E, -0x02, 0x6F, 0xC0, 0x98, 0xED, 0xEE, 0xC0, 0xD8, -0xA3, 0xF3, 0xDC, 0x9A, 0xC3, 0xF3, 0x68, 0xC2, -0xE6, 0xF4, 0x6A, 0xA4, 0xED, 0xEE, 0xA3, 0xF3, -0xDC, 0xDA, 0xC3, 0xF3, 0x69, 0xC2, 0xE6, 0xF4, -0x4A, 0xA4, 0x1F, 0xF7, 0x00, 0x6B, 0xAC, 0xEA, -0x74, 0x4A, 0x48, 0x32, 0x6C, 0xEA, 0x02, 0xF0, -0x00, 0x72, 0x07, 0x60, 0xE6, 0xF4, 0x4A, 0xA4, -0xAC, 0xEA, 0x74, 0x4A, 0x48, 0x32, 0x6C, 0xEA, -0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE6, 0xF4, -0x6A, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF7, -0x90, 0x9C, 0xFF, 0x6A, 0x4C, 0xEB, 0x8D, 0xE3, -0x68, 0x33, 0xA0, 0xA3, 0x0A, 0x10, 0xE6, 0xF4, -0x4A, 0xA4, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF7, -0x74, 0x9B, 0xAC, 0xEA, 0x69, 0xE2, 0x48, 0x32, -0x40, 0xA2, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF2, 0xAA, 0xC2, -0xE6, 0xF4, 0x4A, 0xA3, 0xE6, 0xF4, 0x8A, 0xA3, -0xFF, 0x6A, 0x1F, 0xF7, 0x00, 0x6D, 0x4C, 0xEC, -0x88, 0x34, 0xC0, 0xF1, 0x11, 0x4C, 0xAC, 0xEC, -0x0B, 0x2C, 0xE6, 0xF4, 0x6A, 0xA3, 0xFF, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0x4C, 0xEB, 0x74, 0x4B, -0x68, 0x33, 0xA3, 0xF7, 0x98, 0x9C, 0x09, 0x10, -0xE6, 0xF4, 0x6A, 0xA3, 0x30, 0xF0, 0x20, 0x6C, -0xA3, 0xF7, 0x9C, 0x9C, 0x4C, 0xEB, 0x74, 0x4B, -0x68, 0x33, 0x8D, 0xE3, 0x60, 0xA3, 0x6C, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x6A, 0xF2, 0x4B, 0xC3, -0x02, 0x10, 0xBF, 0xF6, 0x1A, 0x2B, 0x03, 0x91, -0x02, 0x90, 0x02, 0x63, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x44, 0x9A, -0xFF, 0x68, 0x60, 0xA2, 0x6C, 0xE8, 0x24, 0x20, -0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x40, 0x9A, -0x20, 0x6B, 0x01, 0x70, 0x60, 0xC2, 0x06, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF6, 0x5C, 0x9A, -0x40, 0xEA, 0x0E, 0x10, 0x80, 0x69, 0x0E, 0xE9, -0x0B, 0x29, 0x00, 0x18, 0xB3, 0xC8, 0x80, 0x6C, -0x00, 0x6D, 0x80, 0x18, 0x4E, 0x16, 0x30, 0xF0, -0x20, 0x6A, 0xE9, 0xF4, 0x32, 0xC2, 0x0F, 0x10, -0x20, 0x70, 0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6C, -0xA0, 0xF0, 0x64, 0x9A, 0x83, 0xF4, 0x98, 0x9C, -0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, -0x10, 0xF0, 0x31, 0x6A, 0xFB, 0xF4, 0x11, 0x4A, -0x40, 0xDB, 0x00, 0x1C, 0xAC, 0x39, 0x80, 0x18, -0x48, 0x58, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, -0x4E, 0x16, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, +0x0E, 0x2F, 0x30, 0xF0, 0x20, 0x6C, 0x47, 0xF4, +0xC6, 0xA4, 0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x6F, +0x8C, 0xEE, 0x7C, 0x4E, 0xC8, 0x36, 0xD9, 0xE2, +0x84, 0xF0, 0xF0, 0x9F, 0x0A, 0x10, 0x47, 0xF4, +0xC6, 0xA6, 0x30, 0xF0, 0x20, 0x6F, 0x84, 0xF0, +0xF4, 0x9F, 0x8C, 0xEE, 0x7C, 0x4E, 0xC8, 0x36, +0xD9, 0xE2, 0xF9, 0xE6, 0xC0, 0xA6, 0x01, 0x4A, +0x04, 0x72, 0xCC, 0xEC, 0x80, 0xC5, 0x01, 0x4D, +0x8C, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x47, 0xF4, +0xA6, 0xA2, 0x01, 0x6C, 0xC4, 0x67, 0xC4, 0xED, +0xCF, 0xED, 0x47, 0xF4, 0xC6, 0xA2, 0xAC, 0xEB, +0xFF, 0x6D, 0x84, 0xEE, 0x30, 0xF0, 0x20, 0x6E, +0xA4, 0xF1, 0xC0, 0x9E, 0xAC, 0xEC, 0x08, 0x6F, +0x80, 0xC6, 0x47, 0xF4, 0x86, 0xA2, 0xAC, 0xEC, +0x01, 0x4C, 0xAC, 0xEC, 0x47, 0xF4, 0x86, 0xC2, +0x47, 0xF4, 0xA6, 0xA2, 0x03, 0x6C, 0xAC, 0xEC, +0x47, 0xF4, 0x86, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA0, 0xF1, 0x96, 0xA2, +0x01, 0x4C, 0xA0, 0xF1, 0x96, 0xC2, 0xA0, 0xF1, +0x96, 0xA2, 0xEE, 0xEC, 0x70, 0x2C, 0xA0, 0xF1, +0x96, 0xC2, 0x6D, 0x10, 0x30, 0xF0, 0x20, 0x6E, +0x64, 0xF1, 0x18, 0x9E, 0x02, 0x6F, 0xC0, 0x98, +0xED, 0xEE, 0xC0, 0xD8, 0xA3, 0xF3, 0xD8, 0x9A, +0xC3, 0xF3, 0x64, 0xC2, 0x47, 0xF4, 0x66, 0xA4, +0xED, 0xEE, 0xA3, 0xF3, 0xD8, 0xDA, 0xC3, 0xF3, +0x65, 0xC2, 0x47, 0xF4, 0x46, 0xA4, 0x1F, 0xF7, +0x00, 0x6B, 0xAC, 0xEA, 0x74, 0x4A, 0x48, 0x32, +0x6C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x07, 0x60, +0x47, 0xF4, 0x46, 0xA4, 0xAC, 0xEA, 0x74, 0x4A, +0x48, 0x32, 0x6C, 0xEA, 0x0E, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x47, 0xF4, 0x66, 0xA2, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF6, 0x9C, 0x9C, 0xFF, 0x6A, +0x4C, 0xEB, 0x8D, 0xE3, 0x68, 0x33, 0xA0, 0xA3, +0x0A, 0x10, 0x47, 0xF4, 0x46, 0xA4, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF6, 0x60, 0x9B, 0xAC, 0xEA, +0x69, 0xE2, 0x48, 0x32, 0x40, 0xA2, 0x4C, 0xED, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF5, 0xB6, 0xC2, 0x47, 0xF4, 0x46, 0xA3, +0x47, 0xF4, 0x86, 0xA3, 0xFF, 0x6A, 0x1F, 0xF7, +0x00, 0x6D, 0x4C, 0xEC, 0x88, 0x34, 0xC0, 0xF1, +0x11, 0x4C, 0xAC, 0xEC, 0x0B, 0x2C, 0x47, 0xF4, +0x66, 0xA3, 0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6C, +0x4C, 0xEB, 0x74, 0x4B, 0x68, 0x33, 0xC4, 0xF6, +0x84, 0x9C, 0x09, 0x10, 0x47, 0xF4, 0x66, 0xA3, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF6, 0x88, 0x9C, +0x4C, 0xEB, 0x74, 0x4B, 0x68, 0x33, 0x8D, 0xE3, +0x60, 0xA3, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xF5, 0x57, 0xC3, 0x02, 0x10, 0xBF, 0xF6, +0x12, 0x2B, 0x03, 0x91, 0x02, 0x90, 0x02, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x58, 0x9A, 0xFF, 0x68, 0x60, 0xA2, +0x6C, 0xE8, 0x24, 0x20, 0x00, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF6, 0x4C, 0x9A, 0x20, 0x6B, 0x01, 0x70, +0x60, 0xC2, 0x06, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0xE0, 0xF6, 0x5C, 0x9A, 0x40, 0xEA, 0x0E, 0x10, +0x80, 0x69, 0x0E, 0xE9, 0x0B, 0x29, 0x00, 0x18, +0x93, 0xC9, 0x80, 0x6C, 0x00, 0x6D, 0x80, 0x18, +0xC7, 0x13, 0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF0, +0x3E, 0xC2, 0x0F, 0x10, 0x20, 0x70, 0x0D, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, +0xA4, 0xF3, 0x8C, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, +0x64, 0xDA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x31, 0x6A, +0x9A, 0xF2, 0x0D, 0x4A, 0x40, 0xDB, 0x00, 0x1C, +0xAC, 0x39, 0x80, 0x18, 0x8E, 0x5D, 0x05, 0x6C, +0x01, 0x6D, 0x80, 0x18, 0xC7, 0x13, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, @@ -68866,3889 +69970,4897 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, -0x00, 0x65, 0x00, 0x65, 0xFF, 0x17, 0x00, 0x65, -0xDE, 0x63, 0x43, 0x62, 0x42, 0xD1, 0x41, 0xD0, -0x01, 0x6A, 0x7D, 0x67, 0x4B, 0xEA, 0x58, 0xC3, -0x01, 0x6A, 0x5A, 0xC3, 0x08, 0x6A, 0x5B, 0xC3, -0x60, 0xA4, 0x7F, 0x6A, 0x6C, 0xEA, 0x01, 0x72, -0x7E, 0x30, 0x00, 0xF1, 0x10, 0x61, 0x48, 0xA4, -0xBD, 0x67, 0x5C, 0xC5, 0x41, 0xA4, 0x5D, 0xC5, -0x42, 0xA4, 0x5E, 0xC5, 0x46, 0xA4, 0x20, 0xF0, -0x40, 0xC5, 0x43, 0xA4, 0x5F, 0xC5, 0x47, 0xA4, -0x20, 0xF0, 0x41, 0xC5, 0x5C, 0xA5, 0xE0, 0xF0, -0x18, 0x2A, 0x7D, 0x67, 0x5F, 0xA3, 0x7E, 0xA3, -0x40, 0x32, 0x6D, 0xEA, 0x03, 0x72, 0x0A, 0x60, -0x04, 0x52, 0x03, 0x60, 0x02, 0x72, 0x52, 0x60, -0xEC, 0x10, 0x08, 0x72, 0x21, 0x60, 0xB7, 0x72, -0x37, 0x60, 0xE7, 0x10, 0x06, 0x20, 0x30, 0xF0, +0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, +0xFF, 0x17, 0x00, 0x65, 0xDE, 0x63, 0x43, 0x62, +0x42, 0xD1, 0x41, 0xD0, 0x01, 0x6A, 0x7D, 0x67, +0x4B, 0xEA, 0x58, 0xC3, 0x01, 0x6A, 0x5A, 0xC3, +0x08, 0x6A, 0x5B, 0xC3, 0x60, 0xA4, 0x7F, 0x6A, +0x6C, 0xEA, 0x01, 0x72, 0x7E, 0x30, 0x00, 0xF1, +0x1C, 0x61, 0x48, 0xA4, 0xBD, 0x67, 0x5C, 0xC5, +0x41, 0xA4, 0x5D, 0xC5, 0x42, 0xA4, 0x5E, 0xC5, +0x46, 0xA4, 0x20, 0xF0, 0x40, 0xC5, 0x43, 0xA4, +0x5F, 0xC5, 0x47, 0xA4, 0x20, 0xF0, 0x41, 0xC5, +0x5C, 0xA5, 0x00, 0xF1, 0x04, 0x2A, 0x7D, 0x67, +0x5F, 0xA3, 0x7E, 0xA3, 0x40, 0x32, 0x6D, 0xEA, +0x03, 0x72, 0x0A, 0x60, 0x04, 0x52, 0x03, 0x60, +0x02, 0x72, 0x52, 0x60, 0xF8, 0x10, 0x08, 0x72, +0x21, 0x60, 0xB7, 0x72, 0x37, 0x60, 0xF3, 0x10, +0x06, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x40, 0x9A, 0x06, 0x04, 0x40, 0xEA, 0x9D, 0x67, +0x20, 0xF0, 0xE1, 0xA4, 0x20, 0xF0, 0x40, 0xA4, +0xFF, 0xF7, 0x1F, 0x6B, 0xE0, 0x37, 0x5D, 0xE7, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x50, 0x9A, +0x30, 0xF0, 0x20, 0x6D, 0x05, 0x6C, 0x6B, 0xF0, +0x04, 0x4D, 0x00, 0xF2, 0x00, 0x6E, 0x6C, 0xEF, +0x40, 0xEA, 0xF0, 0x10, 0xBD, 0x67, 0x30, 0xF0, +0x20, 0x6B, 0x10, 0x6A, 0x5B, 0xC5, 0x30, 0xF0, +0x20, 0x69, 0x80, 0xF2, 0x4C, 0x9B, 0xAF, 0xF7, +0x0C, 0x49, 0x09, 0x04, 0xB1, 0x67, 0x04, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF2, +0x4C, 0x9C, 0xA4, 0x41, 0x0A, 0x04, 0x04, 0x6E, +0x40, 0xEA, 0xBD, 0x10, 0x08, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, 0x06, 0x04, -0x40, 0xEA, 0x9D, 0x67, 0x20, 0xF0, 0xE1, 0xA4, -0x20, 0xF0, 0x40, 0xA4, 0xFF, 0xF7, 0x1F, 0x6B, -0xE0, 0x37, 0x5D, 0xE7, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF4, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6D, -0x05, 0x6C, 0xE9, 0xF4, 0x18, 0x4D, 0x00, 0xF2, -0x00, 0x6E, 0x6C, 0xEF, 0x40, 0xEA, 0xE4, 0x10, -0xBD, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0x10, 0x6A, -0x5B, 0xC5, 0x30, 0xF0, 0x20, 0x69, 0x80, 0xF2, -0x4C, 0x9B, 0xEE, 0xF5, 0x1C, 0x49, 0x09, 0x04, -0xB1, 0x67, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6C, 0x80, 0xF2, 0x4C, 0x9C, 0xA4, 0x41, -0x0A, 0x04, 0x04, 0x6E, 0x40, 0xEA, 0xB1, 0x10, -0x08, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x40, 0x9A, 0x06, 0x04, 0x40, 0xEA, 0x00, 0x18, -0x40, 0xD5, 0xBD, 0x67, 0x20, 0xF0, 0x81, 0xA5, -0x20, 0xF0, 0x40, 0xA5, 0x80, 0x34, 0x51, 0xE4, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, 0x80, 0x18, -0x86, 0x16, 0xB6, 0x10, 0x06, 0x20, 0x30, 0xF0, -0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, 0x06, 0x04, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x67, 0xF7, 0x58, 0xA0, 0x01, 0x6B, -0xFF, 0x69, 0x6C, 0xEA, 0x4C, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF4, 0x50, 0x9A, 0x40, 0xEA, +0x40, 0xEA, 0x00, 0x18, 0x35, 0xDA, 0xBD, 0x67, +0x20, 0xF0, 0x81, 0xA5, 0x20, 0xF0, 0x40, 0xA5, +0x80, 0x34, 0x51, 0xE4, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEC, 0x80, 0x18, 0x0B, 0x14, 0xC2, 0x10, +0x06, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, +0x40, 0x9A, 0x06, 0x04, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0xA7, 0xF5, +0x58, 0xA0, 0x01, 0x6B, 0xFF, 0x69, 0x6C, 0xEA, +0x52, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x50, 0x9A, 0x40, 0xEA, 0x00, 0xF1, 0x78, 0xA0, +0x08, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x1A, 0x2A, 0xE0, 0xF0, 0xC7, 0xA0, 0x0C, 0x6A, 0x43, 0xF4, -0x48, 0xC0, 0x0C, 0x6C, 0x00, 0x6D, 0x00, 0x18, -0x94, 0xCC, 0xC3, 0xF3, 0x4C, 0xA0, 0x21, 0x6B, -0xC3, 0xF3, 0x8E, 0xA0, 0x6B, 0xEB, 0x4C, 0xEB, +0x44, 0xC0, 0x0C, 0x6C, 0x00, 0x6D, 0x00, 0x18, +0xAE, 0xCD, 0xC3, 0xF3, 0x48, 0xA0, 0x21, 0x6B, +0xC3, 0xF3, 0x8A, 0xA0, 0x6B, 0xEB, 0x4C, 0xEB, 0x04, 0x6A, 0x8C, 0xEA, 0x2C, 0xEA, 0xC3, 0xF3, -0x6C, 0xC0, 0x04, 0x2A, 0xFE, 0x4A, 0x6C, 0xEA, -0xC3, 0xF3, 0x4C, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x67, 0xF7, 0x84, 0xA2, +0x68, 0xC0, 0x04, 0x2A, 0xFE, 0x4A, 0x6C, 0xEA, +0xC3, 0xF3, 0x48, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA7, 0xF5, 0x84, 0xA2, 0x04, 0x6B, 0x8C, 0xEB, 0x21, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF7, 0x64, 0x9B, 0x67, 0xF7, +0x20, 0x6B, 0xC4, 0xF6, 0x70, 0x9B, 0xA7, 0xF5, 0xD0, 0x9A, 0xE0, 0xF3, 0x08, 0x6A, 0x60, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF7, 0x68, 0x9B, -0x10, 0xF0, 0x31, 0x6C, 0xA9, 0xF7, 0x11, 0x4C, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF6, 0x74, 0x9B, +0x10, 0xF0, 0x31, 0x6C, 0x0C, 0xF4, 0x1D, 0x4C, 0x60, 0x9B, 0x00, 0x6D, 0x01, 0x6F, 0x7B, 0xE6, 0x5B, 0xEE, 0x01, 0x2A, 0xE5, 0xE8, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x12, 0xEE, 0x40, 0xEA, 0x5C, 0x10, -0x80, 0x18, 0xEC, 0x53, 0x59, 0x10, 0x30, 0xF0, +0x4C, 0x9A, 0x12, 0xEE, 0x40, 0xEA, 0x62, 0x10, +0x80, 0x18, 0x07, 0x59, 0x5F, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, -0x67, 0xF7, 0xB6, 0xA8, 0x00, 0x6C, 0x80, 0x18, -0x9B, 0x53, 0xE0, 0xF0, 0x87, 0xA0, 0x00, 0x18, -0xBD, 0xDC, 0xE0, 0xF0, 0x87, 0xA0, 0x00, 0x18, -0xAC, 0xDC, 0xE0, 0xF0, 0x87, 0xA0, 0x00, 0x18, -0xC4, 0xDC, 0xC3, 0xF3, 0x6C, 0xA0, 0x20, 0x6A, -0xE0, 0xF0, 0xC7, 0xA0, 0x6D, 0xEA, 0xC3, 0xF3, -0x4C, 0xC0, 0x08, 0x6A, 0x43, 0xF4, 0x48, 0xC0, -0x08, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0x94, 0xCC, -0xC3, 0xF3, 0x6E, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, -0x2C, 0xEA, 0x2E, 0x2A, 0x00, 0xF1, 0x78, 0xA0, -0x02, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x05, 0x22, -0xC3, 0xF3, 0x4C, 0xA0, 0x01, 0x6B, 0x6D, 0xEA, -0x05, 0x10, 0xC3, 0xF3, 0x6C, 0xA0, 0x02, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x4C, 0xC0, -0x1B, 0x10, 0x1A, 0x20, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x40, 0x9A, 0x13, 0x10, 0x14, 0x2A, -0x69, 0xA4, 0xBD, 0x67, 0x7C, 0xC5, 0x68, 0xA4, -0x5E, 0xC5, 0x5F, 0xC5, 0x7D, 0xC5, 0x46, 0xA4, -0x20, 0xF0, 0x40, 0xC5, 0x67, 0xA4, 0x08, 0x20, +0xA7, 0xF5, 0xB6, 0xA8, 0x00, 0x6C, 0x80, 0x18, +0xB6, 0x58, 0x00, 0xF1, 0x58, 0xA0, 0x08, 0x6B, +0x6C, 0xEA, 0x2C, 0xEA, 0x4F, 0x2A, 0xE0, 0xF0, +0x87, 0xA0, 0x00, 0x18, 0xDA, 0xE1, 0xE0, 0xF0, +0x87, 0xA0, 0x00, 0x18, 0xC9, 0xE1, 0xE0, 0xF0, +0x87, 0xA0, 0x00, 0x18, 0xE1, 0xE1, 0xC3, 0xF3, +0x68, 0xA0, 0x20, 0x6A, 0xE0, 0xF0, 0xC7, 0xA0, +0x6D, 0xEA, 0x08, 0x6C, 0xC3, 0xF3, 0x48, 0xC0, +0x43, 0xF4, 0x84, 0xC0, 0x00, 0x6D, 0x08, 0x6C, +0x00, 0x18, 0xAE, 0xCD, 0xC3, 0xF3, 0x6A, 0xA0, +0x04, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x2E, 0x2A, +0x00, 0xF1, 0x78, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, +0x2C, 0xEA, 0x05, 0x22, 0xC3, 0xF3, 0x48, 0xA0, +0x01, 0x6D, 0xAD, 0xEA, 0x05, 0x10, 0xC3, 0xF3, +0x68, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xC3, 0xF3, 0x48, 0xC0, 0x1B, 0x10, 0x1A, 0x20, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x40, 0x9A, -0x20, 0xF0, 0x61, 0xC5, 0x06, 0x04, 0x40, 0xEA, -0x43, 0x97, 0x42, 0x91, 0x41, 0x90, 0x22, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0x68, 0x44, 0xFA, 0x4B, -0x4C, 0xEB, 0x04, 0x5B, 0x03, 0x60, 0x80, 0x18, -0x25, 0x4A, 0x1D, 0x10, 0x09, 0x74, 0x31, 0x60, -0x0A, 0x5C, 0x07, 0x60, 0x03, 0x74, 0x22, 0x60, -0x08, 0x74, 0x26, 0x60, 0x02, 0x74, 0x15, 0x60, -0x38, 0x10, 0x0C, 0x74, 0x16, 0x60, 0x0D, 0x5C, -0x03, 0x60, 0x0A, 0x74, 0x27, 0x60, 0x31, 0x10, -0x0D, 0x74, 0x03, 0x60, 0xB7, 0x74, 0x27, 0x60, -0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, -0x48, 0x9A, 0x85, 0x67, 0x40, 0xEA, 0x62, 0x67, -0x39, 0x10, 0x85, 0x67, 0x80, 0x18, 0xB1, 0x53, -0xFA, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, -0x44, 0x9A, 0xF3, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF4, 0x54, 0x9A, 0x40, 0xEA, 0xEF, 0x17, -0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x58, 0x9A, -0xE8, 0x17, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, -0x5C, 0x9A, 0xE3, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF4, 0x40, 0x9A, 0xDE, 0x17, 0x80, 0x18, -0xE8, 0x1C, 0x00, 0x6B, 0x17, 0x2A, 0x13, 0x6B, -0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF2, -0x84, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x7C, 0xDA, 0xFF, 0x6B, 0x05, 0x97, 0x43, 0x67, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x40, 0xA4, 0xA0, 0xF0, -0xDD, 0xA3, 0x7F, 0x68, 0x5E, 0x32, 0x5C, 0x32, -0x0C, 0xEE, 0x4D, 0xEE, 0xA0, 0xF0, 0xDD, 0xC3, -0xA0, 0xA4, 0x01, 0x6A, 0x41, 0x6F, 0xBA, 0x35, -0x4C, 0xED, 0xEB, 0xEF, 0xB8, 0x35, 0xCC, 0xEF, -0xAD, 0xEF, 0xA0, 0xF0, 0xFD, 0xC3, 0xA0, 0xA4, -0x21, 0x6E, 0xCB, 0xEE, 0xB6, 0x35, 0x4C, 0xED, -0xB4, 0x35, 0xEC, 0xEE, 0xAD, 0xEE, 0xA0, 0xF0, -0xDD, 0xC3, 0xA0, 0xA4, 0x11, 0x6F, 0xEB, 0xEF, -0xB2, 0x35, 0x4C, 0xED, 0xB0, 0x35, 0xCC, 0xEF, -0xAD, 0xEF, 0xA0, 0xF0, 0xFD, 0xC3, 0xA0, 0xA4, -0x10, 0x6E, 0x0F, 0x69, 0xCB, 0xEE, 0x2C, 0xED, -0xEC, 0xEE, 0xAD, 0xEE, 0xA0, 0xF0, 0xDD, 0xC3, -0xE1, 0xA4, 0xA7, 0x67, 0xA0, 0xF0, 0xFE, 0xA3, -0x0C, 0xED, 0xFD, 0x65, 0x1F, 0x65, 0x80, 0x6D, -0xF8, 0x67, 0xAB, 0xED, 0xEC, 0xED, 0xFF, 0x67, -0xED, 0xED, 0xA0, 0xF0, 0xBE, 0xC3, 0xE2, 0xA4, -0x0C, 0xED, 0xA0, 0xF0, 0xFF, 0xC3, 0xE1, 0xA4, -0xFE, 0x37, 0xFC, 0x37, 0xED, 0xED, 0xA0, 0xF0, -0xBE, 0xC3, 0xC0, 0xF0, 0xE0, 0xA3, 0x83, 0xA4, -0x02, 0x6D, 0xAB, 0xED, 0x4C, 0xEC, 0xEC, 0xED, -0x8D, 0xED, 0xC0, 0xF0, 0xA0, 0xC3, 0xA0, 0xF0, -0xBD, 0xA3, 0x86, 0x67, 0x2C, 0xEC, 0xBA, 0x35, -0x4E, 0xED, 0x4C, 0xED, 0x80, 0x18, 0x09, 0x3B, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x44, 0xF3, 0x46, 0xA8, -0x01, 0x69, 0xA4, 0x67, 0x2D, 0xEA, 0x44, 0xF3, -0x46, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x66, 0xF7, -0x04, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0xC0, 0xF0, -0x48, 0xA0, 0xC0, 0xF0, 0x84, 0xA0, 0x00, 0x6B, -0x43, 0xF4, 0x48, 0xC0, 0x7F, 0x6A, 0x8C, 0xEA, -0x43, 0xF4, 0x6A, 0xC0, 0x03, 0x2A, 0x43, 0xF4, -0x2B, 0xC0, 0x02, 0x10, 0x43, 0xF4, 0x6B, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xC0, 0xF0, 0xC4, 0xA2, 0x43, 0xF4, 0x89, 0xA2, +0x13, 0x10, 0x14, 0x2A, 0x69, 0xA4, 0xBD, 0x67, +0x7C, 0xC5, 0x68, 0xA4, 0x5E, 0xC5, 0x5F, 0xC5, +0x7D, 0xC5, 0x46, 0xA4, 0x20, 0xF0, 0x40, 0xC5, +0x67, 0xA4, 0x08, 0x20, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x40, 0x9A, 0x20, 0xF0, 0x61, 0xC5, +0x06, 0x04, 0x40, 0xEA, 0x43, 0x97, 0x42, 0x91, +0x41, 0x90, 0x22, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0x68, 0x44, 0xFA, 0x4B, 0x4C, 0xEB, 0x04, 0x5B, +0x03, 0x60, 0x80, 0x18, 0x34, 0x4F, 0x1D, 0x10, +0x09, 0x74, 0x31, 0x60, 0x0A, 0x5C, 0x07, 0x60, +0x03, 0x74, 0x22, 0x60, 0x08, 0x74, 0x26, 0x60, +0x02, 0x74, 0x15, 0x60, 0x38, 0x10, 0x0C, 0x74, +0x16, 0x60, 0x0D, 0x5C, 0x03, 0x60, 0x0A, 0x74, +0x27, 0x60, 0x31, 0x10, 0x0D, 0x74, 0x03, 0x60, +0xB7, 0x74, 0x27, 0x60, 0x2C, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x48, 0x9A, 0x85, 0x67, +0x40, 0xEA, 0x62, 0x67, 0x39, 0x10, 0x85, 0x67, +0x80, 0x18, 0xCC, 0x58, 0xFA, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF4, 0x44, 0x9A, 0xF3, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x54, 0x9A, +0x40, 0xEA, 0xEF, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF4, 0x58, 0x9A, 0xE8, 0x17, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x5C, 0x9A, 0xE3, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x40, 0x9A, +0xDE, 0x17, 0x80, 0x18, 0x72, 0x1A, 0x00, 0x6B, +0x17, 0x2A, 0x13, 0x6B, 0x15, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x78, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xA4, 0xF1, 0x98, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, 0xFF, 0x6B, +0x05, 0x97, 0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x40, 0xA4, 0xA0, 0xF0, 0xDD, 0xA3, 0x7F, 0x68, +0x5E, 0x32, 0x5C, 0x32, 0x0C, 0xEE, 0x4D, 0xEE, +0xA0, 0xF0, 0xDD, 0xC3, 0xA0, 0xA4, 0x01, 0x6A, +0x41, 0x6F, 0xBA, 0x35, 0x4C, 0xED, 0xEB, 0xEF, +0xB8, 0x35, 0xCC, 0xEF, 0xAD, 0xEF, 0xA0, 0xF0, +0xFD, 0xC3, 0xA0, 0xA4, 0x21, 0x6E, 0xCB, 0xEE, +0xB6, 0x35, 0x4C, 0xED, 0xB4, 0x35, 0xEC, 0xEE, +0xAD, 0xEE, 0xA0, 0xF0, 0xDD, 0xC3, 0xA0, 0xA4, +0x11, 0x6F, 0xEB, 0xEF, 0xB2, 0x35, 0x4C, 0xED, +0xB0, 0x35, 0xCC, 0xEF, 0xAD, 0xEF, 0xA0, 0xF0, +0xFD, 0xC3, 0xA0, 0xA4, 0x10, 0x6E, 0x0F, 0x69, +0xCB, 0xEE, 0x2C, 0xED, 0xEC, 0xEE, 0xAD, 0xEE, +0xA0, 0xF0, 0xDD, 0xC3, 0xE1, 0xA4, 0xA7, 0x67, +0xA0, 0xF0, 0xFE, 0xA3, 0x0C, 0xED, 0xFD, 0x65, +0x1F, 0x65, 0x80, 0x6D, 0xF8, 0x67, 0xAB, 0xED, +0xEC, 0xED, 0xFF, 0x67, 0xED, 0xED, 0xA0, 0xF0, +0xBE, 0xC3, 0xE2, 0xA4, 0x0C, 0xED, 0xA0, 0xF0, +0xFF, 0xC3, 0xE1, 0xA4, 0xFE, 0x37, 0xFC, 0x37, +0xED, 0xED, 0xA0, 0xF0, 0xBE, 0xC3, 0xC0, 0xF0, +0xE0, 0xA3, 0x83, 0xA4, 0x02, 0x6D, 0xAB, 0xED, +0x4C, 0xEC, 0xEC, 0xED, 0x8D, 0xED, 0xC0, 0xF0, +0xA0, 0xC3, 0xA0, 0xF0, 0xBD, 0xA3, 0x86, 0x67, +0x2C, 0xEC, 0xBA, 0x35, 0x4E, 0xED, 0x4C, 0xED, +0x80, 0x18, 0x78, 0x38, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x84, 0xF3, 0x5C, 0xA8, 0x01, 0x69, 0xA4, 0x67, +0x2D, 0xEA, 0x84, 0xF3, 0x5C, 0xC8, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0xC8, 0xF2, 0x14, 0x4C, 0x07, 0x6E, +0x40, 0xEA, 0xC0, 0xF0, 0x48, 0xA0, 0xC0, 0xF0, +0x84, 0xA0, 0x00, 0x6B, 0x43, 0xF4, 0x44, 0xC0, +0x7F, 0x6A, 0x8C, 0xEA, 0x43, 0xF4, 0x66, 0xC0, +0x03, 0x2A, 0x43, 0xF4, 0x27, 0xC0, 0x04, 0x10, +0x43, 0xF4, 0x67, 0xC0, 0x00, 0x18, 0x27, 0xC8, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC0, 0xF0, 0xC4, 0xA2, 0x43, 0xF4, 0x85, 0xA2, 0x7F, 0x6B, 0xCC, 0xEB, 0x6E, 0xEC, 0xFF, 0x6D, 0x07, 0x24, 0xC0, 0xF0, 0x87, 0xA2, 0x96, 0x34, -0xAC, 0xEC, 0x00, 0x18, 0x2F, 0xD0, 0x07, 0x10, +0xAC, 0xEC, 0x00, 0x18, 0x9F, 0xD1, 0x07, 0x10, 0x06, 0x23, 0xC0, 0xF0, 0x87, 0xA2, 0x96, 0x34, -0xAC, 0xEC, 0x00, 0x18, 0xC2, 0xCF, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF2, 0x78, 0x9B, 0x43, 0xF4, -0x88, 0x9A, 0x8C, 0xEB, 0x04, 0x73, 0x0C, 0x61, -0xC3, 0xF3, 0x6F, 0xA2, 0x04, 0x6C, 0x8C, 0xEB, -0x07, 0x23, 0x01, 0x6B, 0x43, 0xF4, 0x6A, 0xC2, -0x01, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0x28, 0xC8, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, +0xAC, 0xEC, 0x00, 0x18, 0x32, 0xD1, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF1, 0x70, 0x9B, 0x43, 0xF4, +0x84, 0x9A, 0x8C, 0xEB, 0x04, 0x73, 0x0C, 0x61, +0xC3, 0xF3, 0x6B, 0xA2, 0x04, 0x6C, 0x8C, 0xEB, +0x07, 0x23, 0x01, 0x6B, 0x43, 0xF4, 0x66, 0xC2, +0x01, 0x6C, 0x00, 0x6D, 0x00, 0x18, 0xF2, 0xC8, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, 0x84, 0xA2, 0x7F, 0x6B, 0x8C, 0xEB, -0x43, 0xF4, 0x69, 0xC2, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x08, 0xD4, 0x41, 0xA4, 0x24, 0x67, 0x06, 0xD2, -0x60, 0xA4, 0x02, 0x6A, 0x6C, 0xEA, 0x06, 0x93, -0x07, 0xD3, 0x02, 0x22, 0x82, 0xA4, 0x07, 0xD4, -0x06, 0x90, 0x34, 0x10, 0x08, 0x93, 0x01, 0x6D, -0x90, 0x67, 0x40, 0xA3, 0x4C, 0xED, 0x00, 0x18, -0x09, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x5C, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x0F, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x58, 0x9A, -0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF7, 0x44, 0x9A, 0x14, 0x33, 0x4D, 0xE3, -0x80, 0xA3, 0xBF, 0x6A, 0x12, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x54, 0x9A, 0x90, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, -0x44, 0x9A, 0x14, 0x33, 0xFF, 0x6C, 0x4D, 0xE3, -0x40, 0xA3, 0x8C, 0xEA, 0x40, 0x6C, 0x8D, 0xEA, -0xFF, 0x6C, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x48, -0xFF, 0x6A, 0x4C, 0xE8, 0x07, 0x92, 0x03, 0xEA, -0xC9, 0x60, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0xE0, 0xF0, 0x88, 0xA0, 0x06, 0x92, -0x8E, 0xEA, 0x1E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x5C, 0x9A, 0x40, 0xEA, 0x18, 0x2A, -0x00, 0x18, 0xEF, 0xDF, 0xC0, 0xF0, 0x87, 0xA0, -0x96, 0x34, 0x00, 0x18, 0x72, 0xC5, 0xC3, 0xF3, -0x6C, 0xA0, 0x05, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xC3, 0xF3, 0x6D, 0xA0, 0xC3, 0xF3, 0x4C, 0xC0, -0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, -0x6B, 0xEB, 0x6C, 0xEA, 0xC3, 0xF3, 0x4D, 0xC0, -0x43, 0xA1, 0x07, 0x6B, 0x01, 0x6C, 0x4C, 0xEB, -0x40, 0xA1, 0x8C, 0xEA, 0x1C, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x05, 0xF3, -0xDC, 0xA2, 0x84, 0xEB, 0x1F, 0x6F, 0xCA, 0x35, -0x8F, 0xEC, 0xEC, 0xED, 0x8C, 0xED, 0x7D, 0x6C, -0x8B, 0xEC, 0xA8, 0x35, 0xCC, 0xEC, 0xAD, 0xEC, -0x05, 0xF3, 0x9C, 0xC2, 0xE0, 0xF0, 0x87, 0xA2, -0x8E, 0xEB, 0x1E, 0x2B, 0x01, 0x6B, 0x6B, 0xEB, -0x05, 0xF3, 0x7D, 0xC2, 0x19, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x05, 0xF3, -0xDC, 0xA2, 0x1F, 0x6F, 0x84, 0xEB, 0xCA, 0x35, -0xEC, 0xED, 0xAD, 0xEC, 0xEC, 0xEC, 0x88, 0x35, -0x7D, 0x6C, 0x8B, 0xEC, 0xCC, 0xEC, 0xAD, 0xEC, -0x05, 0xF3, 0x9C, 0xC2, 0xE0, 0xF0, 0x87, 0xA2, -0x8E, 0xEB, 0x02, 0x2B, 0x05, 0xF3, 0x9D, 0xC2, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x05, 0xF3, 0x7C, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, -0x1A, 0x22, 0x03, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0x05, 0xF3, 0x5C, 0xC0, 0x00, 0x18, 0xCA, 0xDA, -0x04, 0xD2, 0x04, 0x93, 0x25, 0xF3, 0x40, 0x98, -0x6E, 0xEA, 0x03, 0x22, 0x04, 0x94, 0x00, 0x18, -0xEB, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x05, 0xF3, 0x9C, 0xA2, 0x02, 0x6B, -0x8D, 0xEB, 0x05, 0xF3, 0x7C, 0xC2, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, -0x4C, 0xEC, 0x68, 0x44, 0xC8, 0x4B, 0x4C, 0xEB, -0x20, 0x5B, 0x05, 0x67, 0x03, 0x60, 0x80, 0x18, -0x1F, 0x4A, 0xE1, 0x10, 0x2D, 0x74, 0x80, 0xF0, -0x0F, 0x60, 0x2E, 0x5C, 0x2B, 0x60, 0x1F, 0x74, -0x6F, 0x60, 0x20, 0x5C, 0x12, 0x60, 0x04, 0x74, -0x63, 0x60, 0x05, 0x5C, 0x06, 0x60, 0x01, 0x74, -0x53, 0x60, 0x4E, 0x24, 0x03, 0x74, 0x58, 0x60, -0xBB, 0x10, 0x14, 0x74, 0xC0, 0xF0, 0x0B, 0x60, -0x1E, 0x74, 0x62, 0x60, 0x13, 0x74, 0x58, 0x60, -0xB3, 0x10, 0x25, 0x74, 0xC0, 0xF0, 0x03, 0x60, -0x26, 0x5C, 0x09, 0x60, 0x21, 0x74, 0xA0, 0xF0, -0x1E, 0x60, 0x21, 0x5C, 0x59, 0x61, 0x23, 0x74, -0xA0, 0xF0, 0x19, 0x60, 0xA5, 0x10, 0x2B, 0x74, -0x5F, 0x60, 0x2C, 0x5C, 0x61, 0x60, 0x27, 0x74, -0x57, 0x60, 0x9E, 0x10, 0x89, 0x74, 0x80, 0xF0, -0x03, 0x60, 0x8A, 0x5C, 0x12, 0x60, 0x82, 0x74, -0x67, 0x60, 0x83, 0x5C, 0x07, 0x60, 0x80, 0x74, -0x5B, 0x60, 0x81, 0x5C, 0x5D, 0x60, 0x31, 0x74, -0x43, 0x60, 0x8E, 0x10, 0x84, 0x74, 0x64, 0x60, -0x84, 0x5C, 0x5E, 0x61, 0x88, 0x74, 0x64, 0x60, -0x87, 0x10, 0x8F, 0x74, 0x79, 0x60, 0x90, 0x5C, -0x07, 0x60, 0x8D, 0x74, 0x6D, 0x60, 0x8E, 0x5C, -0x6F, 0x60, 0x8C, 0x74, 0x61, 0x60, 0x7C, 0x10, -0xBB, 0x74, 0x12, 0x60, 0xBC, 0x5C, 0x03, 0x60, -0x91, 0x74, 0x56, 0x60, 0x75, 0x10, 0xC3, 0x74, -0x6F, 0x60, 0xCD, 0x74, 0x69, 0x60, 0x70, 0x10, -0x85, 0x67, 0x80, 0x18, 0xB3, 0x35, 0x7F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x9C, 0x38, 0x7B, 0x10, -0x85, 0x67, 0x00, 0x18, 0x23, 0xE5, 0x77, 0x10, -0x85, 0x67, 0x80, 0x18, 0xBE, 0x05, 0x73, 0x10, -0x85, 0x67, 0x80, 0x18, 0xE1, 0x05, 0x6F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x2F, 0x38, 0x6B, 0x10, -0x85, 0x67, 0x00, 0x18, 0x0C, 0xD6, 0x67, 0x10, -0x85, 0x67, 0x00, 0x18, 0xF2, 0xD5, 0x63, 0x10, -0x85, 0x67, 0x80, 0x18, 0x65, 0x38, 0x5F, 0x10, -0x85, 0x67, 0x80, 0x18, 0xBB, 0x35, 0x5B, 0x10, -0x85, 0x67, 0x80, 0x18, 0xA3, 0x52, 0x57, 0x10, -0x85, 0x67, 0x00, 0x18, 0x43, 0xD6, 0x53, 0x10, -0x85, 0x67, 0x00, 0x18, 0xBD, 0xC1, 0x4F, 0x10, -0x85, 0x67, 0x80, 0x18, 0xC4, 0x35, 0x4B, 0x10, -0x85, 0x67, 0x80, 0x18, 0x2C, 0x0C, 0x47, 0x10, -0x85, 0x67, 0x80, 0x18, 0x5D, 0x0B, 0x43, 0x10, -0x85, 0x67, 0x80, 0x18, 0x8F, 0x07, 0x3F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x95, 0x07, 0x3B, 0x10, -0x85, 0x67, 0x80, 0x18, 0x9D, 0x07, 0x37, 0x10, -0x85, 0x67, 0x80, 0x18, 0xA5, 0x07, 0x33, 0x10, -0x85, 0x67, 0x80, 0x18, 0xAC, 0x07, 0x2F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x0A, 0x13, 0x2B, 0x10, -0x85, 0x67, 0x80, 0x18, 0xA9, 0x3B, 0x27, 0x10, -0x85, 0x67, 0x80, 0x18, 0x01, 0x04, 0x23, 0x10, -0x85, 0x67, 0x80, 0x18, 0x22, 0x04, 0x1F, 0x10, -0x85, 0x67, 0x80, 0x18, 0x33, 0x07, 0x1B, 0x10, -0x85, 0x67, 0x80, 0x18, 0xD7, 0x35, 0x17, 0x10, -0x85, 0x67, 0x80, 0x18, 0xAC, 0x52, 0x13, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, -0x01, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, -0x7C, 0xDA, 0x0E, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x40, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0xA0, 0xF1, 0x5C, 0xA0, 0xA0, 0xF1, -0x7D, 0xA0, 0x4E, 0xEB, 0x29, 0x23, 0x67, 0x42, -0x28, 0x4B, 0x6C, 0x33, 0x0D, 0xE3, 0x4C, 0x32, -0x84, 0xA3, 0x55, 0xE0, 0x60, 0xF1, 0x1D, 0x4D, -0x80, 0x18, 0x06, 0x39, 0xA0, 0xF1, 0x5C, 0xA0, -0x01, 0x4A, 0xA0, 0xF1, 0x5C, 0xC0, 0xA0, 0xF1, -0x7C, 0xA0, 0xA0, 0xF1, 0x5D, 0xA0, 0x6E, 0xEA, +0x43, 0xF4, 0x65, 0xC2, 0x44, 0xF3, 0x6E, 0xCA, +0xC0, 0xF0, 0x65, 0xA2, 0x01, 0x6C, 0x44, 0xF3, +0x8C, 0xCA, 0x72, 0x33, 0x44, 0xF3, 0x70, 0xCA, +0xC0, 0xF0, 0x68, 0xA2, 0x44, 0xF3, 0x72, 0xCA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x08, 0xD4, 0x41, 0xA4, +0x24, 0x67, 0x06, 0xD2, 0x60, 0xA4, 0x02, 0x6A, +0x6C, 0xEA, 0x06, 0x93, 0x07, 0xD3, 0x02, 0x22, +0x82, 0xA4, 0x07, 0xD4, 0x06, 0x90, 0x34, 0x10, +0x08, 0x93, 0x01, 0x6D, 0x90, 0x67, 0x40, 0xA3, +0x4C, 0xED, 0x00, 0x18, 0x1A, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, 0x90, 0x67, +0x40, 0xEA, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x58, 0x9A, 0x90, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF6, 0x4C, 0x9A, +0x14, 0x33, 0x4D, 0xE3, 0x80, 0xA3, 0xBF, 0x6A, +0x12, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x54, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF6, 0x4C, 0x9A, 0x14, 0x33, +0xFF, 0x6C, 0x4D, 0xE3, 0x40, 0xA3, 0x8C, 0xEA, +0x40, 0x6C, 0x8D, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x07, 0x92, 0x03, 0xEA, 0xC9, 0x60, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0xE0, 0xF0, +0x88, 0xA0, 0x06, 0x92, 0x8E, 0xEA, 0x1E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x5C, 0x9A, +0x40, 0xEA, 0x18, 0x2A, 0x00, 0x18, 0x20, 0xE5, +0xC0, 0xF0, 0x87, 0xA0, 0x96, 0x34, 0x00, 0x18, +0xC1, 0xC5, 0xC3, 0xF3, 0x68, 0xA0, 0x05, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xC3, 0xF3, 0x69, 0xA0, +0xC3, 0xF3, 0x48, 0xC0, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, +0xC3, 0xF3, 0x49, 0xC0, 0x43, 0xA1, 0x07, 0x6B, +0x01, 0x6C, 0x4C, 0xEB, 0x40, 0xA1, 0x8C, 0xEA, +0x1C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x45, 0xF1, 0xDC, 0xA2, 0x84, 0xEB, +0x1F, 0x6F, 0xCA, 0x35, 0x8F, 0xEC, 0xEC, 0xED, +0x8C, 0xED, 0x7D, 0x6C, 0x8B, 0xEC, 0xA8, 0x35, +0xCC, 0xEC, 0xAD, 0xEC, 0x45, 0xF1, 0x9C, 0xC2, +0xE0, 0xF0, 0x87, 0xA2, 0x8E, 0xEB, 0x1E, 0x2B, +0x01, 0x6B, 0x6B, 0xEB, 0x45, 0xF1, 0x7D, 0xC2, +0x19, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x45, 0xF1, 0xDC, 0xA2, 0x1F, 0x6F, +0x84, 0xEB, 0xCA, 0x35, 0xEC, 0xED, 0xAD, 0xEC, +0xEC, 0xEC, 0x88, 0x35, 0x7D, 0x6C, 0x8B, 0xEC, +0xCC, 0xEC, 0xAD, 0xEC, 0x45, 0xF1, 0x9C, 0xC2, +0xE0, 0xF0, 0x87, 0xA2, 0x8E, 0xEB, 0x02, 0x2B, +0x45, 0xF1, 0x9D, 0xC2, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x45, 0xF1, 0x7C, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x1A, 0x22, 0x03, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0x45, 0xF1, 0x5C, 0xC0, +0x00, 0x18, 0xE7, 0xDF, 0x04, 0xD2, 0x04, 0x93, +0x65, 0xF1, 0x40, 0x98, 0x6E, 0xEA, 0x03, 0x22, +0x04, 0x94, 0x00, 0x18, 0x08, 0xE0, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x45, 0xF1, +0x9C, 0xA2, 0x02, 0x6B, 0x8D, 0xEB, 0x45, 0xF1, +0x7C, 0xC2, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x68, 0x44, +0xC8, 0x4B, 0x4C, 0xEB, 0x20, 0x5B, 0x05, 0x67, +0x03, 0x60, 0x80, 0x18, 0x2E, 0x4F, 0xD8, 0x10, +0x2D, 0x74, 0x80, 0xF0, 0x0A, 0x60, 0x2E, 0x5C, +0x2B, 0x60, 0x1F, 0x74, 0x6A, 0x60, 0x20, 0x5C, +0x12, 0x60, 0x04, 0x74, 0x5E, 0x60, 0x05, 0x5C, +0x06, 0x60, 0x01, 0x74, 0x4E, 0x60, 0x49, 0x24, +0x03, 0x74, 0x53, 0x60, 0xB2, 0x10, 0x14, 0x74, +0xC0, 0xF0, 0x02, 0x60, 0x1E, 0x74, 0x5D, 0x60, +0x13, 0x74, 0x53, 0x60, 0xAA, 0x10, 0x25, 0x74, +0xA0, 0xF0, 0x1A, 0x60, 0x26, 0x5C, 0x09, 0x60, +0x21, 0x74, 0xA0, 0xF0, 0x15, 0x60, 0x21, 0x5C, +0x54, 0x61, 0x23, 0x74, 0xA0, 0xF0, 0x10, 0x60, +0x9C, 0x10, 0x2B, 0x74, 0x5A, 0x60, 0x2C, 0x5C, +0x5C, 0x60, 0x27, 0x74, 0x52, 0x60, 0x95, 0x10, +0x89, 0x74, 0x80, 0xF0, 0x02, 0x60, 0x8A, 0x5C, +0x12, 0x60, 0x82, 0x74, 0x62, 0x60, 0x83, 0x5C, +0x07, 0x60, 0x80, 0x74, 0x56, 0x60, 0x81, 0x5C, +0x58, 0x60, 0x31, 0x74, 0x3E, 0x60, 0x85, 0x10, +0x84, 0x74, 0x5F, 0x60, 0x84, 0x5C, 0x59, 0x61, +0x88, 0x74, 0x5F, 0x60, 0x7E, 0x10, 0x92, 0x74, +0x64, 0x60, 0x93, 0x5C, 0x07, 0x60, 0x8F, 0x74, +0x6C, 0x60, 0x91, 0x74, 0x5A, 0x60, 0x8C, 0x74, +0x60, 0x60, 0x73, 0x10, 0xC3, 0x74, 0x6D, 0x60, +0xCD, 0x74, 0x67, 0x60, 0xBB, 0x74, 0x09, 0x60, +0x6C, 0x10, 0x85, 0x67, 0x80, 0x18, 0x18, 0x33, +0x7B, 0x10, 0x85, 0x67, 0x80, 0x18, 0x11, 0x36, +0x77, 0x10, 0x85, 0x67, 0x00, 0x18, 0x54, 0xEA, +0x73, 0x10, 0x85, 0x67, 0x80, 0x18, 0xE4, 0x02, +0x6F, 0x10, 0x85, 0x67, 0x80, 0x18, 0x07, 0x03, +0x6B, 0x10, 0x85, 0x67, 0x80, 0x18, 0x9C, 0x35, +0x67, 0x10, 0x85, 0x67, 0x00, 0x18, 0x02, 0xDB, +0x63, 0x10, 0x85, 0x67, 0x00, 0x18, 0xE8, 0xDA, +0x5F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xD2, 0x35, +0x5B, 0x10, 0x85, 0x67, 0x80, 0x18, 0x20, 0x33, +0x57, 0x10, 0x85, 0x67, 0x80, 0x18, 0xBE, 0x57, +0x53, 0x10, 0x85, 0x67, 0x00, 0x18, 0x39, 0xDB, +0x4F, 0x10, 0x85, 0x67, 0x00, 0x18, 0xCE, 0xC1, +0x4B, 0x10, 0x85, 0x67, 0x80, 0x18, 0x29, 0x33, +0x47, 0x10, 0x85, 0x67, 0x80, 0x18, 0x80, 0x09, +0x43, 0x10, 0x85, 0x67, 0x80, 0x18, 0xA7, 0x08, +0x3F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xAC, 0x04, +0x3B, 0x10, 0x85, 0x67, 0x80, 0x18, 0xB5, 0x04, +0x37, 0x10, 0x85, 0x67, 0x80, 0x18, 0xBD, 0x04, +0x33, 0x10, 0x85, 0x67, 0x80, 0x18, 0xC5, 0x04, +0x2F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xCF, 0x04, +0x2B, 0x10, 0x85, 0x67, 0x80, 0x18, 0xD7, 0x04, +0x27, 0x10, 0x85, 0x67, 0x80, 0x18, 0x7B, 0x10, +0x23, 0x10, 0x85, 0x67, 0x80, 0x18, 0x18, 0x39, +0x1F, 0x10, 0x85, 0x67, 0x80, 0x18, 0x4A, 0x04, +0x1B, 0x10, 0x85, 0x67, 0x80, 0x18, 0x3C, 0x33, +0x17, 0x10, 0x85, 0x67, 0x80, 0x18, 0xC7, 0x57, +0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x78, 0x9A, 0x01, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, 0x8D, 0xEB, +0xA3, 0xF3, 0x78, 0xDA, 0x0E, 0x6A, 0x01, 0x10, +0x00, 0x6A, 0x40, 0xC0, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0xA0, 0xF1, 0x55, 0xA0, 0xA0, 0xF1, +0x76, 0xA0, 0x4E, 0xEB, 0x29, 0x23, 0x67, 0x42, +0x27, 0x4B, 0x6C, 0x33, 0x0D, 0xE3, 0x4C, 0x32, +0x85, 0xA3, 0x55, 0xE0, 0x60, 0xF1, 0x16, 0x4D, +0x80, 0x18, 0x7B, 0x36, 0xA0, 0xF1, 0x55, 0xA0, +0x01, 0x4A, 0xA0, 0xF1, 0x55, 0xC0, 0xA0, 0xF1, +0x75, 0xA0, 0xA0, 0xF1, 0x56, 0xA0, 0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, 0x02, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xA0, 0xF1, -0x7C, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, -0xA0, 0xF1, 0x7C, 0xC2, 0x80, 0x18, 0x64, 0x36, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xA0, 0xF1, +0x75, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, +0xA0, 0xF1, 0x75, 0xC2, 0x80, 0x18, 0xC7, 0x33, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0x42, 0xF6, -0x46, 0xA0, 0x7F, 0x6C, 0xA0, 0xF0, 0xAA, 0x42, -0xB4, 0x35, 0x15, 0xE5, 0x66, 0xA5, 0x8C, 0xEB, -0x24, 0x2B, 0xA0, 0xF0, 0x65, 0x42, 0x74, 0x33, -0x0D, 0xE3, 0x54, 0x32, 0xA0, 0xF0, 0x8E, 0xA3, -0x55, 0xE0, 0x42, 0xF5, 0x0F, 0x4D, 0x80, 0x18, -0x06, 0x39, 0x42, 0xF6, 0x46, 0xA0, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF7, 0x8C, 0x9C, 0x54, 0x33, -0x0D, 0xE3, 0x42, 0xF5, 0xAC, 0xA3, 0x7F, 0x4A, -0x2B, 0x4A, 0xA0, 0xC4, 0x42, 0xF5, 0x8D, 0xA3, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF7, 0x70, 0x9B, -0x54, 0x32, 0x41, 0xE0, 0x80, 0xC3, 0x86, 0x40, -0x37, 0x10, 0x01, 0x73, 0x37, 0x61, 0x54, 0x33, -0x0D, 0xE3, 0x42, 0xF5, 0x87, 0xA3, 0xFF, 0x74, -0x0C, 0x61, 0x42, 0xF5, 0x88, 0xA3, 0x06, 0x4D, -0x80, 0x18, 0xFB, 0x37, 0x42, 0xF6, 0x66, 0xA0, -0x7F, 0x4B, 0x26, 0x4B, 0x74, 0x33, 0x01, 0xE3, -0x06, 0x10, 0x7F, 0x4A, 0x26, 0x4A, 0x54, 0x32, -0x01, 0xE2, 0x01, 0x6A, 0x4B, 0xEA, 0xA0, 0xF0, -0x4E, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x42, 0xF6, 0x66, 0xA2, 0x30, 0xF0, -0x20, 0x6D, 0xC3, 0xF7, 0xAC, 0x9D, 0x74, 0x34, -0x51, 0xE4, 0x42, 0xF5, 0xCC, 0xA4, 0x7F, 0x4B, -0x2B, 0x4B, 0xC0, 0xC5, 0x42, 0xF5, 0xAD, 0xA4, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF7, 0x90, 0x9C, -0x74, 0x33, 0x69, 0xE2, 0xA0, 0xC4, 0x86, 0x42, -0x80, 0x18, 0x5C, 0x37, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x42, 0xF6, 0x66, 0xA0, 0x42, 0xF6, -0x47, 0xA0, 0x6E, 0xEA, 0x42, 0x22, 0xA0, 0xF6, -0x5E, 0xA8, 0x09, 0xF6, 0x00, 0x72, 0x10, 0x60, -0xA0, 0xF6, 0x9E, 0xA0, 0xA0, 0xF6, 0x7F, 0xA0, -0xAE, 0x44, 0x6E, 0xED, 0x09, 0x25, 0x09, 0xF7, -0x01, 0x72, 0x06, 0x60, 0x09, 0xF7, 0x00, 0x72, -0x03, 0x60, 0xFF, 0x4C, 0x8E, 0xEB, 0x0D, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0xA0, 0xF0, 0x44, 0x9B, 0x04, 0x6C, 0x8D, 0xEA, -0x02, 0x6C, 0x8D, 0xEA, 0xA0, 0xF0, 0x44, 0xDB, -0x20, 0x10, 0x80, 0x18, 0x9E, 0x39, 0x42, 0xF6, -0x46, 0xA0, 0x01, 0x4A, 0x42, 0xF6, 0x46, 0xC0, -0x42, 0xF6, 0x66, 0xA0, 0x42, 0xF6, 0x47, 0xA0, -0x6E, 0xEA, 0x06, 0x22, 0xA0, 0xF0, 0x44, 0x98, -0x02, 0x6B, 0x6D, 0xEA, 0xA0, 0xF0, 0x44, 0xD8, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x42, 0xF6, 0x66, 0xA2, 0x08, 0x6C, 0x8E, 0xEB, -0x02, 0x2B, 0x42, 0xF6, 0x66, 0xC2, 0x80, 0x18, -0xEE, 0x35, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF7, 0x7C, 0x9B, -0x30, 0xF0, 0x20, 0x68, 0x83, 0xF4, 0x14, 0x98, -0xE0, 0x9B, 0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0xEF, -0x08, 0x5C, 0x4C, 0xED, 0x4C, 0xEE, 0xE0, 0xDB, -0x46, 0x60, 0xB0, 0x75, 0x2E, 0x61, 0xB2, 0x76, -0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0xB8, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, -0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, -0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, -0xCC, 0xEC, 0x80, 0xDD, 0x80, 0x9B, 0x4E, 0x10, -0xB1, 0x76, 0x80, 0xF0, 0x13, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF3, 0xB8, 0x9A, 0x01, 0x6A, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x42, 0xF6, +0x40, 0xA0, 0x7F, 0x6C, 0xA0, 0xF0, 0xAA, 0x42, +0xB4, 0x35, 0x15, 0xE5, 0x60, 0xA5, 0x8C, 0xEB, +0x23, 0x2B, 0xA0, 0xF0, 0x65, 0x42, 0x74, 0x33, +0x0D, 0xE3, 0x54, 0x32, 0xA0, 0xF0, 0x88, 0xA3, +0x42, 0xF5, 0xA9, 0x42, 0xB5, 0xE0, 0x80, 0x18, +0x7B, 0x36, 0x42, 0xF6, 0x40, 0xA0, 0x30, 0xF0, +0x20, 0x6C, 0xC4, 0xF6, 0x98, 0x9C, 0x54, 0x33, +0x0D, 0xE3, 0x42, 0xF5, 0xA6, 0xA3, 0x7F, 0x4A, +0x2B, 0x4A, 0xA0, 0xC4, 0x42, 0xF5, 0x87, 0xA3, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF6, 0x7C, 0x9B, +0x80, 0xC3, 0x54, 0x34, 0x91, 0xE0, 0x35, 0x10, +0x01, 0x73, 0x35, 0x61, 0x54, 0x33, 0x0D, 0xE3, +0x42, 0xF5, 0x81, 0xA3, 0xFF, 0x74, 0x0B, 0x61, +0x42, 0xF5, 0x82, 0xA3, 0x80, 0x18, 0x68, 0x35, +0x42, 0xF6, 0x60, 0xA0, 0x7F, 0x4B, 0x26, 0x4B, +0x74, 0x33, 0x01, 0xE3, 0x06, 0x10, 0x7F, 0x4A, +0x26, 0x4A, 0x54, 0x32, 0x01, 0xE2, 0x01, 0x6A, +0x4B, 0xEA, 0xA0, 0xF0, 0x48, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x42, 0xF6, +0x60, 0xA2, 0x30, 0xF0, 0x20, 0x6D, 0xC4, 0xF6, +0xB8, 0x9D, 0x74, 0x34, 0x51, 0xE4, 0x42, 0xF5, +0xC6, 0xA4, 0x7F, 0x4B, 0x2B, 0x4B, 0xC0, 0xC5, +0x42, 0xF5, 0xA7, 0xA4, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF6, 0x9C, 0x9C, 0xA0, 0xC4, 0x74, 0x34, +0x91, 0xE2, 0x80, 0x18, 0xC3, 0x34, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x42, 0xF6, +0x60, 0xA0, 0x42, 0xF6, 0x41, 0xA0, 0x6E, 0xEA, +0x42, 0x22, 0xA0, 0xF6, 0x58, 0xA8, 0x09, 0xF6, +0x00, 0x72, 0x10, 0x60, 0xA0, 0xF6, 0x98, 0xA0, +0xA0, 0xF6, 0x79, 0xA0, 0xAE, 0x44, 0x6E, 0xED, +0x09, 0x25, 0x09, 0xF7, 0x01, 0x72, 0x06, 0x60, +0x09, 0xF7, 0x00, 0x72, 0x03, 0x60, 0xFF, 0x4C, +0x8E, 0xEB, 0x0D, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0xA0, 0xF0, 0x44, 0x9B, +0x04, 0x6C, 0x8D, 0xEA, 0x02, 0x6C, 0x8D, 0xEA, +0xA0, 0xF0, 0x44, 0xDB, 0x20, 0x10, 0x80, 0x18, +0x0E, 0x37, 0x42, 0xF6, 0x40, 0xA0, 0x01, 0x4A, +0x42, 0xF6, 0x40, 0xC0, 0x42, 0xF6, 0x60, 0xA0, +0x42, 0xF6, 0x41, 0xA0, 0x6E, 0xEA, 0x06, 0x22, +0xA0, 0xF0, 0x44, 0x98, 0x02, 0x6B, 0x6D, 0xEA, +0xA0, 0xF0, 0x44, 0xD8, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x42, 0xF6, 0x60, 0xA2, +0x08, 0x6C, 0x8E, 0xEB, 0x02, 0x2B, 0x42, 0xF6, +0x60, 0xC2, 0x80, 0x18, 0x53, 0x33, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF6, 0x68, 0x9B, 0x30, 0xF0, 0x20, 0x68, +0xA4, 0xF3, 0x08, 0x98, 0xE0, 0x9B, 0xFF, 0x6A, +0x4C, 0xEC, 0x0C, 0xEF, 0x08, 0x5C, 0x4C, 0xED, +0x4C, 0xEE, 0xE0, 0xDB, 0x46, 0x60, 0xB0, 0x75, +0x2E, 0x61, 0xB2, 0x76, 0x13, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF2, 0xB0, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, 0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, 0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, 0xCC, 0xEC, 0x80, 0xDD, -0x80, 0x9B, 0x4F, 0xEA, 0x8C, 0xEA, 0x40, 0xDB, -0x7B, 0x10, 0xA0, 0x75, 0x7D, 0x61, 0xA1, 0x76, -0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0x58, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, -0x51, 0x10, 0xA2, 0x76, 0x6F, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF3, 0x58, 0x9A, 0x01, 0x6B, -0x64, 0xEC, 0xA0, 0x9A, 0x5A, 0x10, 0xE8, 0x44, -0x4C, 0xEF, 0x08, 0x5F, 0xE0, 0x6A, 0x65, 0x60, -0xB0, 0x75, 0x35, 0x61, 0xB2, 0x76, 0x18, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x54, 0x9A, +0x80, 0x9B, 0x4E, 0x10, 0xB1, 0x76, 0x80, 0xF0, +0x13, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0xB0, 0x9A, 0x01, 0x6A, 0x44, 0xEC, 0xC0, 0x9D, +0x00, 0xF6, 0x40, 0x34, 0xCD, 0xEC, 0x80, 0xDD, +0xC0, 0x9D, 0x40, 0x34, 0x80, 0x34, 0x8F, 0xEC, +0xCC, 0xEC, 0x80, 0xDD, 0x80, 0x9B, 0x4F, 0xEA, +0x8C, 0xEA, 0x40, 0xDB, 0x7B, 0x10, 0xA0, 0x75, +0x7D, 0x61, 0xA1, 0x76, 0x08, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF2, 0x50, 0x9A, 0x01, 0x6B, +0x64, 0xEC, 0xA0, 0x9A, 0x51, 0x10, 0xA2, 0x76, +0x6F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x50, 0x9A, 0x01, 0x6B, 0x64, 0xEC, 0xA0, 0x9A, +0x5A, 0x10, 0xE8, 0x44, 0x4C, 0xEF, 0x08, 0x5F, +0xE0, 0x6A, 0x65, 0x60, 0xB0, 0x75, 0x35, 0x61, +0xB2, 0x76, 0x18, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF2, 0x4C, 0x9A, 0x01, 0x6E, 0xA6, 0x67, +0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, +0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, +0xE0, 0x37, 0xE0, 0x37, 0xEF, 0xEF, 0xAC, 0xEF, +0xE0, 0xDA, 0x40, 0x9B, 0xC4, 0xEC, 0x86, 0x67, +0x4D, 0xEC, 0x19, 0x10, 0xB1, 0x76, 0x44, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x4C, 0x9A, 0x01, 0x6E, 0xA6, 0x67, 0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, 0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, 0xE0, 0x37, 0xE0, 0x37, 0xEF, 0xEF, 0xAC, 0xEF, 0xE0, 0xDA, 0x40, 0x9B, -0xC4, 0xEC, 0x86, 0x67, 0x4D, 0xEC, 0x19, 0x10, -0xB1, 0x76, 0x44, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF3, 0x54, 0x9A, 0x01, 0x6E, 0xA6, 0x67, -0x00, 0x9A, 0xA4, 0xEF, 0xE5, 0x67, 0x00, 0xF6, -0xA0, 0x35, 0x0D, 0xED, 0xA0, 0xDA, 0xA0, 0x9A, -0xE0, 0x37, 0xE0, 0x37, 0xEF, 0xEF, 0xAC, 0xEF, -0xE0, 0xDA, 0x40, 0x9B, 0xC4, 0xEC, 0xCF, 0xEC, -0x4C, 0xEC, 0x80, 0xDB, 0x29, 0x10, 0xA0, 0x75, -0x2B, 0x61, 0xA1, 0x76, 0x11, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF3, 0x54, 0x9A, 0x01, 0x6B, -0x64, 0xEF, 0xA0, 0x9A, 0x00, 0xF6, 0x60, 0x34, -0x8F, 0xEC, 0xAC, 0xEC, 0x80, 0xDA, 0x80, 0x9A, -0x60, 0x33, 0x60, 0x33, 0x8D, 0xEB, 0x13, 0x10, -0xA2, 0x76, 0x14, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF3, 0x54, 0x9A, 0x01, 0x6B, 0x64, 0xEF, -0xA0, 0x9A, 0x00, 0xF6, 0x60, 0x34, 0x8F, 0xEC, -0xAC, 0xEC, 0x80, 0xDA, 0x80, 0x9A, 0x60, 0x33, -0x60, 0x33, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xDA, -0xF0, 0x6A, 0x03, 0x10, 0xE2, 0x6A, 0x01, 0x10, -0xE1, 0x6A, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, -0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0xFF, 0x63, -0x18, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, -0x40, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, -0x47, 0xEC, 0xAC, 0xEA, 0x37, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0x44, 0x9A, 0x40, 0xA2, -0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x30, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x58, 0x9A, -0x1C, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, -0xE0, 0x6A, 0x27, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF7, 0x48, 0x9A, 0x01, 0x6D, 0x40, 0xA2, -0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x1A, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x4C, 0x9A, +0xC4, 0xEC, 0xCF, 0xEC, 0x4C, 0xEC, 0x80, 0xDB, +0x29, 0x10, 0xA0, 0x75, 0x2B, 0x61, 0xA1, 0x76, +0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, +0x4C, 0x9A, 0x01, 0x6B, 0x64, 0xEF, 0xA0, 0x9A, +0x00, 0xF6, 0x60, 0x34, 0x8F, 0xEC, 0xAC, 0xEC, +0x80, 0xDA, 0x80, 0x9A, 0x60, 0x33, 0x60, 0x33, +0x8D, 0xEB, 0x13, 0x10, 0xA2, 0x76, 0x14, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF2, 0x4C, 0x9A, +0x01, 0x6B, 0x64, 0xEF, 0xA0, 0x9A, 0x00, 0xF6, +0x60, 0x34, 0x8F, 0xEC, 0xAC, 0xEC, 0x80, 0xDA, +0x80, 0x9A, 0x60, 0x33, 0x60, 0x33, 0x6F, 0xEB, +0x8C, 0xEB, 0x60, 0xDA, 0xF0, 0x6A, 0x03, 0x10, +0xE2, 0x6A, 0x01, 0x10, 0xE1, 0x6A, 0x01, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFF, 0x6B, 0x6C, 0xEC, +0x08, 0x5C, 0xFF, 0x63, 0x18, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF6, 0x4C, 0x9A, 0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, -0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, -0x54, 0x9A, 0x40, 0xA2, 0xA4, 0xEC, 0x85, 0x67, -0x6C, 0xEC, 0x4C, 0xEC, 0x5D, 0x67, 0x80, 0xC2, -0x40, 0xA2, 0x4C, 0xEB, 0x6B, 0xEA, 0xC0, 0xF7, -0x42, 0x32, 0x03, 0x10, 0xE4, 0x6A, 0x01, 0x10, -0xE6, 0x6A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x6C, 0xED, -0x20, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, -0x40, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, -0x47, 0xEC, 0xCC, 0xEA, 0x48, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0x44, 0x9A, 0xC4, 0xEC, -0x86, 0x67, 0x40, 0xA2, 0x6C, 0xEA, 0xCC, 0xEA, -0xCE, 0xEA, 0x3B, 0x2A, 0x05, 0x25, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0xB0, 0x9A, 0x24, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x50, 0x9A, -0x29, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, -0xE0, 0x6A, 0x2E, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF7, 0x48, 0x9A, 0x01, 0x6E, 0x40, 0xA2, -0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x23, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x4C, 0x9A, -0xC4, 0xEC, 0x86, 0x67, 0x40, 0xA2, 0x6C, 0xEA, -0xCC, 0xEA, 0xCE, 0xEA, 0x16, 0x2A, 0x0A, 0x25, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0xB4, 0x9A, -0x40, 0xA5, 0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, -0x40, 0xC5, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF7, 0x54, 0x9A, 0xA0, 0xA2, 0x8F, 0xEC, -0x6C, 0xEC, 0xAC, 0xEC, 0x80, 0xC2, 0xF0, 0x6A, -0x20, 0xE8, 0xE5, 0x6A, 0x20, 0xE8, 0xE4, 0x6A, +0x37, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, +0x50, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, +0xAC, 0xEA, 0x30, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF2, 0x50, 0x9A, 0x1C, 0x10, 0xF8, 0x4C, +0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x27, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, 0x54, 0x9A, +0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, +0xAC, 0xEA, 0x1A, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF6, 0x58, 0x9A, 0x40, 0xA2, 0x6C, 0xEA, +0x47, 0xEC, 0xAC, 0xEA, 0x13, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF2, 0x4C, 0x9A, 0x40, 0xA2, +0xA4, 0xEC, 0x85, 0x67, 0x6C, 0xEC, 0x4C, 0xEC, +0x5D, 0x67, 0x80, 0xC2, 0x40, 0xA2, 0x4C, 0xEB, +0x6B, 0xEA, 0xC0, 0xF7, 0x42, 0x32, 0x03, 0x10, +0xE4, 0x6A, 0x01, 0x10, 0xE6, 0x6A, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, -0x08, 0x5C, 0x0F, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF7, 0x40, 0x9A, 0x01, 0x6D, 0x40, 0xA2, -0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x1F, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x44, 0x9A, -0x13, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, -0xE0, 0x6A, 0x16, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF7, 0x48, 0x9A, 0x01, 0x6D, 0x40, 0xA2, -0x6C, 0xEA, 0x47, 0xEC, 0xAC, 0xEA, 0x0B, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x4C, 0x9A, -0x40, 0xA2, 0x4C, 0xEB, 0x67, 0xEC, 0x45, 0x67, -0x6E, 0xEA, 0xAC, 0xEA, 0x20, 0xE8, 0x00, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, -0x08, 0x5C, 0x1A, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF7, 0x40, 0x9A, 0x01, 0x6E, 0x40, 0xA2, -0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, 0x35, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, 0x44, 0x9A, -0xC4, 0xEC, 0x86, 0x67, 0xA0, 0xA2, 0x6C, 0xED, -0xCC, 0xED, 0xCE, 0xED, 0x2A, 0x2D, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0x50, 0x9A, 0x1E, 0x10, -0xF8, 0x4C, 0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, -0x21, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, -0x48, 0x9A, 0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, -0x47, 0xEC, 0xCC, 0xEA, 0x16, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0x4C, 0x9A, 0xC4, 0xEC, -0x86, 0x67, 0xA0, 0xA2, 0x6C, 0xED, 0xCC, 0xED, -0xCE, 0xED, 0x0B, 0x2D, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF7, 0x54, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, -0x8C, 0xEB, 0x6E, 0xEC, 0x01, 0x5C, 0x58, 0x67, +0x08, 0x5C, 0x6C, 0xED, 0x20, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF6, 0x4C, 0x9A, 0x01, 0x6E, +0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, +0x48, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, +0x50, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0x40, 0xA2, +0x6C, 0xEA, 0xCC, 0xEA, 0xCE, 0xEA, 0x3B, 0x2A, +0x05, 0x25, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, +0xBC, 0x9A, 0x24, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF6, 0x5C, 0x9A, 0x29, 0x10, 0xF8, 0x4C, +0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x2E, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, 0x54, 0x9A, +0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, +0xCC, 0xEA, 0x23, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF6, 0x58, 0x9A, 0xC4, 0xEC, 0x86, 0x67, +0x40, 0xA2, 0x6C, 0xEA, 0xCC, 0xEA, 0xCE, 0xEA, +0x16, 0x2A, 0x0A, 0x25, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF7, 0xA0, 0x9A, 0x40, 0xA5, 0x6C, 0xEA, +0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC5, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF7, 0x40, 0x9A, +0xA0, 0xA2, 0x8F, 0xEC, 0x6C, 0xEC, 0xAC, 0xEC, +0x80, 0xC2, 0xF0, 0x6A, 0x20, 0xE8, 0xE5, 0x6A, +0x20, 0xE8, 0xE4, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x0F, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, 0x4C, 0x9A, +0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, +0xAC, 0xEA, 0x1F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF6, 0x50, 0x9A, 0x13, 0x10, 0xF8, 0x4C, +0x6C, 0xEC, 0x08, 0x5C, 0xE0, 0x6A, 0x16, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, 0x54, 0x9A, +0x01, 0x6D, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, +0xAC, 0xEA, 0x0B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF6, 0x58, 0x9A, 0x40, 0xA2, 0x4C, 0xEB, +0x67, 0xEC, 0x45, 0x67, 0x6E, 0xEA, 0xAC, 0xEA, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x01, 0x72, 0xFF, 0xF7, 0x1F, 0x6C, 0xAC, 0xEC, -0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x04, 0x67, -0x2C, 0xE8, 0x90, 0x67, 0xA0, 0x6D, 0xA2, 0x6E, -0x80, 0x18, 0x01, 0x3A, 0x90, 0x67, 0x80, 0x18, -0x64, 0x3A, 0x7D, 0x67, 0x50, 0xC3, 0x50, 0xA3, -0x09, 0x97, 0x07, 0x90, 0x2C, 0xEA, 0x08, 0x91, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, -0x0C, 0xE9, 0x91, 0x67, 0xAC, 0xE8, 0xA1, 0x6E, -0xA0, 0x6D, 0x80, 0x18, 0x01, 0x3A, 0x91, 0x67, -0xB0, 0x67, 0x80, 0x18, 0x8A, 0x3A, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF7, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, -0x83, 0xF4, 0xB4, 0x9D, 0x40, 0x9B, 0xA2, 0x6E, -0xAC, 0xEA, 0x40, 0xDB, 0xFF, 0x6A, 0x4C, 0xEC, -0xA0, 0x6D, 0x80, 0x18, 0x01, 0x3A, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0xB0, 0x6D, 0xB2, 0x6E, -0x80, 0x18, 0x01, 0x3A, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xEC, 0xB0, 0x6D, 0xB1, 0x6E, -0x80, 0x18, 0x01, 0x3A, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x6A, 0x04, 0x67, 0x4C, 0xE8, -0xAC, 0xEA, 0xA4, 0x72, 0x0C, 0x61, 0x90, 0x67, -0x80, 0x18, 0xB7, 0x3A, 0x01, 0x72, 0x04, 0x61, -0x90, 0x67, 0x80, 0x18, 0x14, 0x3B, 0x1F, 0x10, -0x90, 0x67, 0x00, 0x6D, 0x0D, 0x10, 0xA5, 0x72, -0x11, 0x61, 0x90, 0x67, 0x80, 0x18, 0xB7, 0x3A, -0x01, 0x72, 0x04, 0x61, 0x90, 0x67, 0x80, 0x18, -0x14, 0x3B, 0x18, 0x10, 0x90, 0x67, 0x01, 0x6D, -0x80, 0x18, 0x09, 0x3B, 0x90, 0x67, 0x80, 0x18, -0x14, 0x3B, 0x14, 0x10, 0x90, 0x67, 0x80, 0x18, -0xCF, 0x3A, 0x01, 0x72, 0x07, 0x61, 0x90, 0x67, -0x01, 0x6D, 0x80, 0x18, 0x09, 0x3B, 0x90, 0x67, -0x00, 0x6D, 0x06, 0x10, 0x90, 0x67, 0x00, 0x6D, -0x80, 0x18, 0x09, 0x3B, 0x90, 0x67, 0x01, 0x6D, -0x80, 0x18, 0x09, 0x3B, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x08, 0xF1, 0x6D, 0xA2, 0xFF, 0xF7, -0x1F, 0x69, 0x04, 0xD4, 0xAC, 0xE9, 0x05, 0xD6, -0x0B, 0x23, 0x08, 0xF1, 0x6E, 0xA2, 0x04, 0x23, -0x08, 0xF1, 0x8B, 0xA2, 0xA5, 0x6D, 0x07, 0x10, -0x08, 0xF1, 0x8B, 0xA2, 0xA4, 0x6D, 0x03, 0x10, -0x08, 0xF1, 0x8B, 0xA2, 0xA3, 0x6D, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0x80, 0x18, -0x2B, 0x3B, 0x08, 0xF1, 0x4F, 0xA0, 0x7D, 0x22, -0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, 0xF2, 0x3A, -0x08, 0xF1, 0x4D, 0xA0, 0x0B, 0x22, 0x08, 0xF1, -0x4E, 0xA0, 0x04, 0x22, 0x08, 0xF1, 0x8B, 0xA0, -0xA5, 0x6D, 0x07, 0x10, 0x08, 0xF1, 0x8B, 0xA0, -0xA4, 0x6D, 0x03, 0x10, 0x08, 0xF1, 0x8B, 0xA0, -0xA3, 0x6D, 0x80, 0x18, 0x2B, 0x3B, 0x30, 0xF0, -0x20, 0x6A, 0xAE, 0xF7, 0x50, 0xA2, 0x01, 0x68, -0x5D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF7, -0x58, 0x9A, 0x60, 0xA2, 0x10, 0x6A, 0x6C, 0xEA, -0x58, 0x2A, 0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, -0xF2, 0x3A, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x08, 0xF1, 0x6D, 0xA2, 0x0B, 0x23, -0x08, 0xF1, 0x6E, 0xA2, 0x04, 0x23, 0x08, 0xF1, -0x8B, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0x08, 0xF1, -0x8B, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0x08, 0xF1, -0x8B, 0xA2, 0xA3, 0x6D, 0x80, 0x18, 0x2B, 0x3B, -0xDC, 0x17, 0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, -0xF2, 0x3A, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x08, 0xF1, 0x6D, 0xA2, 0x0B, 0x23, -0x08, 0xF1, 0x6E, 0xA2, 0x04, 0x23, 0x08, 0xF1, -0x8B, 0xA2, 0xA5, 0x6D, 0x07, 0x10, 0x08, 0xF1, -0x8B, 0xA2, 0xA4, 0x6D, 0x03, 0x10, 0x08, 0xF1, -0x8B, 0xA2, 0xA3, 0x6D, 0x80, 0x18, 0x2B, 0x3B, -0x04, 0x94, 0xB1, 0x67, 0x80, 0x18, 0xF2, 0x3A, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x08, 0xF1, 0x6D, 0xA2, 0x0B, 0x23, 0x08, 0xF1, -0x6E, 0xA2, 0x04, 0x23, 0x08, 0xF1, 0x8B, 0xA2, -0xA5, 0x6D, 0x07, 0x10, 0x08, 0xF1, 0x8B, 0xA2, -0xA4, 0x6D, 0x03, 0x10, 0x08, 0xF1, 0x8B, 0xA2, -0xA3, 0x6D, 0x80, 0x18, 0x2B, 0x3B, 0x01, 0x48, -0xFF, 0x6A, 0x4C, 0xE8, 0x05, 0x92, 0x43, 0xE8, -0xC4, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, 0x0B, 0x4C, -0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0xC6, 0xF7, -0x1B, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE0, 0xF0, 0x90, 0xA2, 0x7F, 0x6B, 0xE0, 0xF0, -0xD1, 0xA2, 0x8C, 0xEB, 0xE0, 0xF0, 0x92, 0xA2, -0x01, 0x6A, 0xC6, 0x36, 0x8A, 0x34, 0x4C, 0xEC, -0x68, 0x35, 0x05, 0x2C, 0x74, 0x35, 0xD0, 0x4D, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, -0xF1, 0xA2, 0x01, 0x6B, 0xEC, 0xEB, 0x08, 0xF1, -0x6F, 0xC2, 0xE0, 0xF0, 0x70, 0xA2, 0x7E, 0x33, -0x08, 0xF1, 0x70, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF2, 0x78, 0x9B, 0x20, 0xF1, 0x5C, 0xA2, -0xE0, 0xA3, 0xFF, 0x6B, 0xEC, 0xEB, 0x4E, 0xEB, -0x06, 0x2B, 0x03, 0x6A, 0x58, 0xED, 0xFF, 0xF7, -0x1F, 0x6A, 0x12, 0xED, 0x4C, 0xED, 0x80, 0x18, -0x4B, 0x3B, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, -0x6F, 0xA2, 0x7F, 0x6D, 0x01, 0x6F, 0xAC, 0xEB, -0x08, 0xF1, 0x6B, 0xC2, 0xE0, 0xF0, 0x6E, 0xA2, -0x20, 0xF1, 0xDB, 0xA2, 0x3F, 0x6C, 0x76, 0x33, -0xEC, 0xEB, 0x08, 0xF1, 0x6C, 0xC2, 0xE0, 0xF0, -0x72, 0xA2, 0xCC, 0xEC, 0x01, 0x74, 0x76, 0x33, -0xEC, 0xEB, 0x08, 0xF1, 0x6D, 0xC2, 0xE0, 0xF0, -0x74, 0xA2, 0x66, 0x33, 0xEC, 0xEB, 0x08, 0xF1, -0x6E, 0xC2, 0xFF, 0x6B, 0x80, 0xF0, 0x0D, 0x60, -0x02, 0x74, 0x03, 0x61, 0x80, 0x18, 0xB1, 0x3B, -0x88, 0x10, 0x3F, 0x74, 0x0B, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF2, 0x98, 0x9C, 0x20, 0xF1, -0xDC, 0xA2, 0x80, 0xA4, 0x6C, 0xEC, 0xCE, 0xEC, -0x54, 0x2C, 0x0C, 0x10, 0x3E, 0x74, 0x51, 0x61, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF2, 0x98, 0x9C, -0x20, 0xF1, 0x1C, 0xA2, 0xC0, 0xA4, 0x6C, 0xEE, -0x0E, 0xEE, 0x21, 0x2E, 0x20, 0xF1, 0x9B, 0xA2, -0x20, 0xF1, 0x1D, 0xA2, 0x20, 0xF1, 0xDE, 0xA2, -0x9A, 0x34, 0xAC, 0xE8, 0xEC, 0xEC, 0x6C, 0xE8, -0xC6, 0x36, 0x6C, 0xEC, 0x6C, 0xEE, 0x08, 0x35, -0x05, 0x2C, 0x14, 0x35, 0xD0, 0x4D, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x20, 0xF1, 0xFE, 0xA2, -0x01, 0x6B, 0xEC, 0xEB, 0x08, 0xF1, 0x6F, 0xC2, -0x20, 0xF1, 0x7D, 0xA2, 0x49, 0x10, 0x80, 0xA4, -0x20, 0xF1, 0xDF, 0xA2, 0x6C, 0xEC, 0xCE, 0xEC, -0x20, 0x2C, 0x40, 0xF1, 0xE0, 0xA2, 0x20, 0xF1, -0x9B, 0xA2, 0x40, 0xF1, 0xC1, 0xA2, 0xAC, 0xEF, -0x9E, 0x34, 0x6C, 0xEF, 0xC6, 0x36, 0x6C, 0xEC, -0x6C, 0xEE, 0xE8, 0x35, 0x05, 0x2C, 0xF4, 0x35, -0xD0, 0x4D, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x40, 0xF1, 0xE1, 0xA2, 0x01, 0x6B, 0xEC, 0xEB, -0x08, 0xF1, 0x6F, 0xC2, 0x40, 0xF1, 0x60, 0xA2, -0x23, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0x90, 0xA2, 0x7F, 0x6B, -0xE0, 0xF0, 0xD1, 0xA2, 0x8C, 0xEB, 0xE0, 0xF0, -0x92, 0xA2, 0x01, 0x6A, 0xC6, 0x36, 0x8A, 0x34, -0x4C, 0xEC, 0x68, 0x35, 0x05, 0x2C, 0x74, 0x35, -0xD0, 0x4D, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0xE0, 0xF0, 0xF1, 0xA2, 0x01, 0x6B, 0xEC, 0xEB, -0x08, 0xF1, 0x6F, 0xC2, 0xE0, 0xF0, 0x70, 0xA2, -0x7E, 0x33, 0x08, 0xF1, 0x70, 0xC2, 0x80, 0x18, -0x4B, 0x3B, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, 0xB2, 0xA2, -0x02, 0x6C, 0xFF, 0x6B, 0xAC, 0xEC, 0x33, 0x24, -0x30, 0xF0, 0x20, 0x6C, 0xE6, 0xF4, 0x8B, 0xA4, -0x2E, 0x2C, 0x05, 0xF3, 0x58, 0xA2, 0x08, 0x5A, -0x07, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF3, -0x94, 0x9C, 0xF8, 0x4A, 0xA0, 0xA4, 0x05, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF3, 0x98, 0x9C, -0xA0, 0xA4, 0x01, 0x6C, 0x84, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x6C, 0xEC, 0xA6, 0xF6, 0x00, 0x4A, -0xAC, 0xEC, 0xE0, 0xF0, 0xB4, 0xA2, 0x04, 0x6B, -0xAC, 0xEB, 0x02, 0x2B, 0x10, 0x2C, 0x01, 0x10, -0x0E, 0x24, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, -0x64, 0x9A, 0xC3, 0xF1, 0x9C, 0x9C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x01, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xE6, 0xF4, 0x6B, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0xE0, 0xF0, -0xB2, 0xA2, 0x02, 0x6C, 0xFF, 0x6B, 0xAC, 0xEC, -0x42, 0x24, 0x30, 0xF0, 0x20, 0x6C, 0xE6, 0xF4, -0x8B, 0xA4, 0x01, 0x74, 0x3C, 0x61, 0x05, 0xF3, -0x58, 0xA2, 0x08, 0x5A, 0x07, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF3, 0x94, 0x9C, 0xF8, 0x4A, -0xA0, 0xA4, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF3, 0x98, 0x9C, 0xA0, 0xA4, 0x01, 0x6C, -0x84, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x6C, 0xEC, -0xA6, 0xF6, 0x00, 0x4A, 0xAC, 0xEC, 0xE0, 0xF0, -0xB4, 0xA2, 0x04, 0x6B, 0xAC, 0xEB, 0x10, 0x2B, -0x1E, 0x24, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, -0x64, 0x9A, 0xC3, 0xF1, 0x9C, 0x9C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x02, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xE6, 0xF4, 0x6B, 0xC2, 0x20, 0xE8, -0x0E, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xA0, 0xF0, -0x64, 0x9A, 0xC3, 0xF1, 0x9C, 0x9C, 0x8D, 0xEB, -0xA0, 0xF0, 0x64, 0xDA, 0x02, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0xE6, 0xF4, 0x6B, 0xC2, 0x20, 0xE8, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x60, 0x9B, -0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x69, 0xE2, -0x00, 0x9A, 0x41, 0x45, 0x25, 0x67, 0x08, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, -0x85, 0x67, 0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, -0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, -0x41, 0x45, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, -0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x40, 0x9A, 0x41, 0xE0, 0xC0, 0xD8, 0x1A, 0x10, -0x01, 0x6D, 0x90, 0x67, 0xAB, 0xED, 0x80, 0x18, -0x72, 0x3C, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, 0x40, 0xEA, -0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, 0x04, 0x93, -0x2C, 0xEA, 0x2F, 0xE9, 0x6C, 0xE9, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0x60, 0x9B, 0x2D, 0xEA, -0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x01, 0x74, 0x0D, 0x60, 0x06, 0x24, 0x02, 0x74, -0x10, 0x60, 0x03, 0x74, 0x00, 0x6A, 0x1C, 0x61, -0x14, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA8, 0x35, -0x44, 0xF0, 0x40, 0x9A, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA8, 0x35, 0x44, 0xF0, 0x44, 0x9A, -0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, -0x48, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, -0x4C, 0x9A, 0xA8, 0x35, 0x55, 0xE5, 0x40, 0x9D, +0xFF, 0x6B, 0x6C, 0xEC, 0x08, 0x5C, 0x1A, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, 0x4C, 0x9A, +0x01, 0x6E, 0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, +0xCC, 0xEA, 0x35, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF6, 0x50, 0x9A, 0xC4, 0xEC, 0x86, 0x67, +0xA0, 0xA2, 0x6C, 0xED, 0xCC, 0xED, 0xCE, 0xED, +0x2A, 0x2D, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, +0x5C, 0x9A, 0x1E, 0x10, 0xF8, 0x4C, 0x6C, 0xEC, +0x08, 0x5C, 0xE0, 0x6A, 0x21, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF6, 0x54, 0x9A, 0x01, 0x6E, +0x40, 0xA2, 0x6C, 0xEA, 0x47, 0xEC, 0xCC, 0xEA, +0x16, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, +0x58, 0x9A, 0xC4, 0xEC, 0x86, 0x67, 0xA0, 0xA2, +0x6C, 0xED, 0xCC, 0xED, 0xCE, 0xED, 0x0B, 0x2D, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF7, 0x40, 0x9A, +0x40, 0xA2, 0x4C, 0xEB, 0x8C, 0xEB, 0x6E, 0xEC, +0x01, 0x5C, 0x58, 0x67, 0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xEA, 0xF0, 0x1C, 0x4A, -0x88, 0x34, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF5, 0xA0, 0x35, 0xCC, 0xEB, 0x30, 0xF0, -0x20, 0x6E, 0xA3, 0xF6, 0xC4, 0x9E, 0xC0, 0xF3, -0x44, 0x9A, 0x80, 0xAC, 0xAD, 0xEB, 0x01, 0x6D, -0xAB, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6B, 0x8C, 0xEB, -0xFF, 0xF7, 0x1F, 0x6A, 0x81, 0x46, 0x06, 0x67, -0xAC, 0xEA, 0x06, 0x2C, 0x83, 0x67, 0xA2, 0x67, -0x80, 0x18, 0x9A, 0x3C, 0x02, 0x67, 0x0D, 0x10, -0x83, 0x67, 0xA2, 0x67, 0x80, 0x18, 0x9A, 0x3C, -0x22, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x44, 0x9A, 0x90, 0x67, 0x2C, 0xE8, 0x40, 0xEA, -0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x46, 0x67, 0xFF, 0x68, 0xFF, 0xF7, 0x1F, 0x69, -0x01, 0x4A, 0x0C, 0xD6, 0x0D, 0xD7, 0x8C, 0xE8, -0xAC, 0xE9, 0x04, 0x2A, 0x90, 0x67, 0xB1, 0x67, -0xC7, 0x67, 0x15, 0x10, 0xB1, 0x67, 0x90, 0x67, -0x80, 0x18, 0x9A, 0x3C, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x0C, 0x94, 0xA0, 0xF3, 0x44, 0x9A, -0x40, 0xEA, 0x0D, 0x96, 0x90, 0x67, 0xB1, 0x67, -0xC4, 0xEA, 0x0C, 0x92, 0x4C, 0xEE, 0x4F, 0xEB, -0x04, 0x92, 0x4C, 0xEB, 0x6D, 0xEE, 0x80, 0x18, -0xAD, 0x3C, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0xF7, 0x1F, 0x6A, 0x8C, 0xEA, 0x1F, 0xF7, -0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, -0x25, 0x67, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x7C, 0x9B, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x60, 0x9B, -0x69, 0xE2, 0x00, 0x9A, 0x41, 0x41, 0x08, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, -0x91, 0x67, 0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, -0x50, 0x67, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x68, -0x41, 0x45, 0x25, 0x67, 0x0C, 0xD6, 0x8C, 0xE8, -0x16, 0x2A, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, -0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, -0x41, 0xE0, 0x0C, 0x92, 0x3A, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x0C, 0x93, -0x41, 0xE0, 0x60, 0xD8, 0x33, 0x10, 0x1F, 0xF7, -0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x49, 0xE0, -0x40, 0x9A, 0x91, 0x67, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, -0x0C, 0x93, 0x64, 0xEA, 0x43, 0x67, 0x04, 0x93, -0x2C, 0xEA, 0x2F, 0xE9, 0x6C, 0xE9, 0x1F, 0xF7, -0x00, 0x6B, 0x0C, 0xEB, 0x02, 0xF0, 0x00, 0x73, -0x2D, 0xEA, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF1, 0x7C, 0x9B, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x60, 0x9B, -0x61, 0xE0, 0x40, 0xD8, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x03, 0xF0, 0x08, 0x6B, 0x43, 0xF2, 0x7C, 0xDA, -0x05, 0xF1, 0x00, 0x4B, 0x63, 0xF2, 0x60, 0xDA, -0x02, 0xF1, 0x00, 0x4B, 0x63, 0xF2, 0x64, 0xDA, -0x00, 0xF1, 0x00, 0x4B, 0x63, 0xF2, 0x68, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, -0x1F, 0x6D, 0x8C, 0xED, 0x96, 0x34, 0x6C, 0xEC, -0x01, 0x74, 0x03, 0x6A, 0x0A, 0x60, 0x10, 0x24, -0x04, 0x74, 0x05, 0x60, 0x06, 0x74, 0x00, 0x6A, -0x12, 0x61, 0xEF, 0x4A, 0x02, 0x10, 0x07, 0x6A, -0x4B, 0xEA, 0xAB, 0xE2, 0x44, 0x32, 0x00, 0xF6, -0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x20, 0xE8, -0x08, 0x6A, 0xAB, 0xE2, 0x44, 0x32, 0x00, 0xF6, -0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x20, 0xE8, -0x00, 0xF6, 0x80, 0x34, 0x00, 0xF6, 0x83, 0x34, -0x47, 0x44, 0x5C, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, -0x77, 0x5A, 0x00, 0x6A, 0x06, 0x60, 0x00, 0x54, -0x64, 0x6A, 0x03, 0x60, 0x47, 0x44, 0x5D, 0x4A, -0x6C, 0xEA, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x0E, 0x91, 0x04, 0xD2, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xED, 0x4C, 0xE9, 0x0C, 0xD6, 0x0D, 0xD7, -0x0F, 0x90, 0x05, 0xD5, 0x00, 0x6A, 0x08, 0x10, +0xFF, 0x6A, 0x8C, 0xEA, 0x01, 0x72, 0xFF, 0xF7, +0x1F, 0x6C, 0xAC, 0xEC, 0x05, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0x40, 0xA8, 0x01, 0x4A, -0x40, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, -0x05, 0x96, 0xA3, 0xF4, 0xF4, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0xAE, 0xF7, 0x18, 0x4C, 0x80, 0x18, -0x9C, 0x4E, 0x0C, 0x93, 0x6C, 0xEA, 0x0D, 0x93, -0x6E, 0xEA, 0x03, 0x22, 0x40, 0xA8, 0x23, 0xEA, -0xE3, 0x61, 0x40, 0xA8, 0x09, 0x97, 0x07, 0x90, -0x23, 0xEA, 0x08, 0x91, 0x58, 0x67, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x6C, 0x9A, -0x7F, 0x6A, 0xFD, 0x67, 0x80, 0xA3, 0x8C, 0xEA, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, -0x50, 0x9A, 0xD2, 0xA7, 0x02, 0x6B, 0xA0, 0xA2, -0x01, 0x6C, 0x6B, 0xEB, 0x8C, 0xED, 0xCC, 0xEB, -0xAD, 0xEB, 0x72, 0xC7, 0x02, 0x6B, 0x70, 0xC7, -0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, 0x74, 0x9B, -0x8F, 0xCF, 0xFF, 0x6A, 0x80, 0xAB, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF7, 0xC4, 0x9B, 0x4C, 0xEC, -0x94, 0x34, 0xD1, 0xE4, 0x60, 0xA4, 0x40, 0x6D, -0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, -0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, 0x78, 0x9B, -0x80, 0xAB, 0x4C, 0xEC, 0x94, 0x34, 0xD1, 0xE4, -0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, 0x4C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, -0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, -0x05, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, -0x07, 0x6B, 0xAC, 0xEB, 0x2C, 0x2B, 0xAE, 0x35, -0xFF, 0x4D, 0x4C, 0xED, 0xA6, 0x33, 0xAC, 0x35, -0x4C, 0xEB, 0xB5, 0xE4, 0x08, 0xD3, 0x07, 0xD5, -0x06, 0xD4, 0x00, 0x69, 0x1A, 0x10, 0x30, 0xF0, -0x20, 0x68, 0x07, 0x95, 0x80, 0xF2, 0x4C, 0x98, -0x04, 0x04, 0x08, 0x6E, 0x40, 0xEA, 0x07, 0x94, -0x06, 0x95, 0x80, 0xF2, 0x4C, 0x98, 0x08, 0x6E, -0x01, 0x49, 0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, -0x06, 0x94, 0x04, 0x05, 0x08, 0x6E, 0x40, 0xEA, -0xFF, 0x6A, 0x4C, 0xE9, 0x07, 0x92, 0xF8, 0x4A, -0x07, 0xD2, 0x06, 0x93, 0x08, 0x92, 0x08, 0x4B, -0x43, 0xE9, 0x06, 0xD3, 0xE0, 0x61, 0x0D, 0x97, -0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, -0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0x67, 0x80, 0xF2, -0x4C, 0x9A, 0x11, 0xD5, 0xA7, 0x40, 0x04, 0x04, -0x02, 0x4D, 0x26, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x7D, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, -0x54, 0x9A, 0x90, 0xA3, 0x00, 0x6D, 0x40, 0xEA, -0x68, 0xA0, 0x01, 0x6A, 0x6C, 0xEA, 0x31, 0x22, -0x69, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, -0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF3, 0x4C, 0x9A, 0xAF, 0xA0, 0x91, 0x67, -0x40, 0xEA, 0x63, 0xA0, 0x80, 0x6A, 0x4B, 0xEA, -0x6D, 0xEA, 0x41, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, -0x43, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, -0x40, 0x9A, 0x00, 0x6D, 0xC5, 0x67, 0x90, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, -0x48, 0x9A, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x40, 0xF3, 0x40, 0x9A, 0x8D, 0xA8, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x7D, 0x67, -0x20, 0xF3, 0x54, 0x9A, 0x90, 0xA3, 0x01, 0x6D, -0x40, 0xEA, 0x88, 0xA0, 0x02, 0x6A, 0xFF, 0x6B, -0x8C, 0xEA, 0x7A, 0x22, 0x83, 0xA0, 0x7F, 0x6A, -0x2E, 0xA0, 0x8C, 0xEA, 0x43, 0xC0, 0x3F, 0x6A, -0x2C, 0xEA, 0x02, 0x2A, 0x3A, 0x31, 0x02, 0x10, -0x3A, 0x31, 0x01, 0x49, 0x11, 0x94, 0x00, 0x6A, -0x6C, 0xE9, 0x07, 0xD4, 0x06, 0xD2, 0x08, 0xD2, -0x0A, 0xD2, 0x61, 0x10, 0x0A, 0x94, 0x6F, 0x41, -0x8E, 0xEB, 0x17, 0x2B, 0x88, 0xA0, 0x10, 0x6B, -0x8C, 0xEB, 0x4C, 0xEB, 0x04, 0x23, 0x63, 0xA0, -0x40, 0x6A, 0x6D, 0xEA, 0x04, 0x10, 0x63, 0xA0, -0x41, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x43, 0xC0, -0x06, 0x93, 0x4E, 0xA0, 0x49, 0xE3, 0x09, 0xD2, -0x09, 0x94, 0xFF, 0x6A, 0x4C, 0xEC, 0x09, 0xD4, -0x07, 0x10, 0x63, 0xA0, 0x41, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0x43, 0xC0, 0x40, 0x6A, 0x09, 0xD2, -0x68, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0x0D, 0x2A, -0x69, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, -0x6C, 0xEA, 0x07, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF3, 0x4C, 0x9A, 0x07, 0x94, 0x09, 0x95, -0x40, 0xEA, 0x08, 0x93, 0xA5, 0xA8, 0x30, 0xF0, -0x20, 0x6A, 0x09, 0x96, 0x20, 0xF3, 0x40, 0x9A, -0xB5, 0xE3, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xED, -0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF3, 0x48, 0x9A, 0x90, 0x67, 0x40, 0xEA, -0x7D, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x90, 0xA3, -0x20, 0xF3, 0x54, 0x9A, 0x01, 0x6D, 0x40, 0xEA, -0x08, 0x92, 0xFF, 0xF7, 0x1F, 0x6B, 0x0A, 0x94, -0x40, 0x4A, 0x6C, 0xEA, 0x08, 0xD2, 0x06, 0x92, -0x01, 0x4C, 0x0A, 0xD4, 0xC0, 0x4A, 0x06, 0xD2, -0x07, 0x94, 0x06, 0x93, 0xFF, 0x6A, 0x40, 0x4C, -0x4C, 0xEB, 0x07, 0xD4, 0x06, 0xD3, 0x0A, 0x93, -0xFF, 0x6A, 0x4C, 0xEB, 0x23, 0xEB, 0x9A, 0x61, -0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x01, 0x74, 0x11, 0x60, -0x05, 0x24, 0x02, 0x74, 0x03, 0x60, 0x03, 0x74, -0x0C, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF1, 0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF4, 0x8C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, -0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF4, -0x88, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0xA4, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF4, 0x84, 0x9C, 0x60, 0x9D, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x8C, 0xEB, -0x42, 0xF6, 0x68, 0xDA, 0x60, 0x9D, 0x8C, 0xEB, -0x42, 0xF6, 0x74, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x40, 0x9A, -0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF4, -0x44, 0x9A, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, -0x82, 0x46, 0x26, 0x67, 0x40, 0xEA, 0x04, 0xD2, -0xC0, 0xF3, 0x40, 0x98, 0x83, 0x41, 0x40, 0xEA, -0x05, 0xD2, 0xC0, 0xF3, 0x40, 0x98, 0x81, 0x41, -0x40, 0xEA, 0x06, 0xD2, 0xC0, 0xF3, 0x40, 0x98, -0x91, 0x67, 0x40, 0xEA, 0x05, 0x94, 0x03, 0x6B, -0x8C, 0xEB, 0x04, 0x94, 0xA7, 0x43, 0x0F, 0x6B, -0x8C, 0xEB, 0x6C, 0x33, 0x11, 0x4D, 0x75, 0xE5, -0x06, 0x93, 0x60, 0x34, 0x4D, 0xEC, 0xE7, 0xF7, -0x1F, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x70, 0x9A, 0x91, 0xE5, 0x40, 0xEB, -0x30, 0xF0, 0x20, 0x6B, 0xE9, 0xF4, 0x68, 0x9B, -0x29, 0xE2, 0x43, 0xEB, 0x02, 0x60, 0x6F, 0xEB, -0x69, 0xE2, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x40, 0x98, 0x82, 0x45, 0x25, 0x67, -0x40, 0xEA, 0x04, 0xD2, 0xC0, 0xF3, 0x40, 0x98, -0x83, 0x41, 0x18, 0x49, 0x40, 0xEA, 0x03, 0x6B, -0x4C, 0xEB, 0x04, 0x92, 0x0F, 0x6C, 0x65, 0xE1, -0x4C, 0xEC, 0x8C, 0x34, 0x89, 0xE1, 0x09, 0x97, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x04, 0x67, 0x2C, 0xE8, 0x90, 0x67, +0xA0, 0x6D, 0xA2, 0x6E, 0x80, 0x18, 0x70, 0x37, +0x90, 0x67, 0x80, 0x18, 0xD3, 0x37, 0x7D, 0x67, +0x50, 0xC3, 0x50, 0xA3, 0x09, 0x97, 0x07, 0x90, +0x2C, 0xEA, 0x08, 0x91, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0x91, 0x67, +0xAC, 0xE8, 0xA1, 0x6E, 0xA0, 0x6D, 0x80, 0x18, +0x70, 0x37, 0x91, 0x67, 0xB0, 0x67, 0x80, 0x18, +0xF9, 0x37, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6D, 0xA4, 0xF3, 0xA8, 0x9D, +0x40, 0x9B, 0xA2, 0x6E, 0xAC, 0xEA, 0x40, 0xDB, +0xFF, 0x6A, 0x4C, 0xEC, 0xA0, 0x6D, 0x80, 0x18, +0x70, 0x37, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0xB0, 0x6D, 0xB2, 0x6E, 0x80, 0x18, 0x70, 0x37, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, +0xB0, 0x6D, 0xB1, 0x6E, 0x80, 0x18, 0x70, 0x37, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x04, 0x67, 0x4C, 0xE8, 0xAC, 0xEA, 0xA4, 0x72, +0x0C, 0x61, 0x90, 0x67, 0x80, 0x18, 0x26, 0x38, +0x01, 0x72, 0x04, 0x61, 0x90, 0x67, 0x80, 0x18, +0x83, 0x38, 0x1F, 0x10, 0x90, 0x67, 0x00, 0x6D, +0x0D, 0x10, 0xA5, 0x72, 0x11, 0x61, 0x90, 0x67, +0x80, 0x18, 0x26, 0x38, 0x01, 0x72, 0x04, 0x61, +0x90, 0x67, 0x80, 0x18, 0x83, 0x38, 0x18, 0x10, +0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x78, 0x38, +0x90, 0x67, 0x80, 0x18, 0x83, 0x38, 0x14, 0x10, +0x90, 0x67, 0x80, 0x18, 0x3E, 0x38, 0x01, 0x72, +0x07, 0x61, 0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, +0x78, 0x38, 0x90, 0x67, 0x00, 0x6D, 0x06, 0x10, +0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x78, 0x38, +0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x78, 0x38, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x4C, 0xEC, 0x4C, 0xEE, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x47, 0xF7, +0x6D, 0xA2, 0xFF, 0xF7, 0x1F, 0x69, 0x04, 0xD4, +0xAC, 0xE9, 0x05, 0xD6, 0x0B, 0x23, 0x47, 0xF7, +0x6E, 0xA2, 0x04, 0x23, 0x47, 0xF7, 0x8B, 0xA2, +0xA5, 0x6D, 0x07, 0x10, 0x47, 0xF7, 0x8B, 0xA2, +0xA4, 0x6D, 0x03, 0x10, 0x47, 0xF7, 0x8B, 0xA2, +0xA3, 0x6D, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x80, 0x18, 0x9A, 0x38, 0x47, 0xF7, +0x4F, 0xA0, 0x7D, 0x22, 0x04, 0x94, 0xB1, 0x67, +0x80, 0x18, 0x61, 0x38, 0x47, 0xF7, 0x4D, 0xA0, +0x0B, 0x22, 0x47, 0xF7, 0x4E, 0xA0, 0x04, 0x22, +0x47, 0xF7, 0x8B, 0xA0, 0xA5, 0x6D, 0x07, 0x10, +0x47, 0xF7, 0x8B, 0xA0, 0xA4, 0x6D, 0x03, 0x10, +0x47, 0xF7, 0x8B, 0xA0, 0xA3, 0x6D, 0x80, 0x18, +0x9A, 0x38, 0x30, 0xF0, 0x21, 0x6A, 0x70, 0xF1, +0x40, 0xA2, 0x01, 0x68, 0x5D, 0x22, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF7, 0x44, 0x9A, 0x60, 0xA2, +0x10, 0x6A, 0x6C, 0xEA, 0x58, 0x2A, 0x04, 0x94, +0xB1, 0x67, 0x80, 0x18, 0x61, 0x38, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x47, 0xF7, +0x6D, 0xA2, 0x0B, 0x23, 0x47, 0xF7, 0x6E, 0xA2, +0x04, 0x23, 0x47, 0xF7, 0x8B, 0xA2, 0xA5, 0x6D, +0x07, 0x10, 0x47, 0xF7, 0x8B, 0xA2, 0xA4, 0x6D, +0x03, 0x10, 0x47, 0xF7, 0x8B, 0xA2, 0xA3, 0x6D, +0x80, 0x18, 0x9A, 0x38, 0xDC, 0x17, 0x04, 0x94, +0xB1, 0x67, 0x80, 0x18, 0x61, 0x38, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x47, 0xF7, +0x6D, 0xA2, 0x0B, 0x23, 0x47, 0xF7, 0x6E, 0xA2, +0x04, 0x23, 0x47, 0xF7, 0x8B, 0xA2, 0xA5, 0x6D, +0x07, 0x10, 0x47, 0xF7, 0x8B, 0xA2, 0xA4, 0x6D, +0x03, 0x10, 0x47, 0xF7, 0x8B, 0xA2, 0xA3, 0x6D, +0x80, 0x18, 0x9A, 0x38, 0x04, 0x94, 0xB1, 0x67, +0x80, 0x18, 0x61, 0x38, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x47, 0xF7, 0x6D, 0xA2, +0x0B, 0x23, 0x47, 0xF7, 0x6E, 0xA2, 0x04, 0x23, +0x47, 0xF7, 0x8B, 0xA2, 0xA5, 0x6D, 0x07, 0x10, +0x47, 0xF7, 0x8B, 0xA2, 0xA4, 0x6D, 0x03, 0x10, +0x47, 0xF7, 0x8B, 0xA2, 0xA3, 0x6D, 0x80, 0x18, +0x9A, 0x38, 0x01, 0x48, 0xFF, 0x6A, 0x4C, 0xE8, +0x05, 0x92, 0x43, 0xE8, 0xC4, 0x61, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF4, 0x4C, 0x9A, 0x85, 0x67, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6A, 0x8C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF7, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF2, 0x88, 0x9C, 0x40, 0x9B, -0x8D, 0xEA, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF7, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x44, 0xF1, 0x84, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x40, 0xDB, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, -0x07, 0x6B, 0x8C, 0xEB, 0x4C, 0xED, 0x8E, 0x34, -0x42, 0xF4, 0x10, 0x4C, 0x36, 0x25, 0x1F, 0xF7, -0x00, 0x6D, 0x8C, 0xED, 0x02, 0xF0, 0x00, 0x75, -0x01, 0x60, 0x21, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, -0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, -0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0xBC, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0xBC, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, -0xB5, 0xE4, 0x51, 0xE4, 0x80, 0xA4, 0x00, 0xF6, -0x80, 0x34, 0x01, 0x6A, 0x00, 0xF6, 0x83, 0x34, -0x44, 0xEB, 0x8D, 0xEA, 0x36, 0x10, 0x30, 0xF0, -0x20, 0x6D, 0x63, 0xF1, 0xA0, 0x9D, 0x01, 0x6E, -0xC4, 0xEB, 0xB1, 0xE4, 0xA0, 0xA4, 0x00, 0xF6, -0xA0, 0x35, 0x00, 0xF6, 0xA3, 0x35, 0xCD, 0xED, -0x3A, 0x10, 0x1F, 0xF7, 0x00, 0x6D, 0x8C, 0xED, -0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x25, 0x2D, +0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x21, 0x6C, +0x50, 0xF1, 0x1B, 0x4C, 0x00, 0x6D, 0x06, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x48, 0xF3, 0x04, 0x4C, 0x07, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0x90, 0xA2, +0x7F, 0x6B, 0xE0, 0xF0, 0xD1, 0xA2, 0x8C, 0xEB, +0xE0, 0xF0, 0x92, 0xA2, 0x01, 0x6A, 0xC6, 0x36, +0x8A, 0x34, 0x4C, 0xEC, 0x68, 0x35, 0x05, 0x2C, +0x74, 0x35, 0xD0, 0x4D, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE0, 0xF0, 0xF1, 0xA2, 0x01, 0x6B, +0xEC, 0xEB, 0x47, 0xF7, 0x6F, 0xC2, 0xE0, 0xF0, +0x70, 0xA2, 0x7E, 0x33, 0x47, 0xF7, 0x70, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF1, 0x70, 0x9B, +0x20, 0xF1, 0x55, 0xA2, 0xE0, 0xA3, 0xFF, 0x6B, +0xEC, 0xEB, 0x4E, 0xEB, 0x06, 0x2B, 0x03, 0x6A, +0x58, 0xED, 0xFF, 0xF7, 0x1F, 0x6A, 0x12, 0xED, +0x4C, 0xED, 0x80, 0x18, 0xBA, 0x38, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE0, 0xF0, 0x6F, 0xA2, 0x7F, 0x6D, +0x01, 0x6F, 0xAC, 0xEB, 0x47, 0xF7, 0x6B, 0xC2, +0xE0, 0xF0, 0x6E, 0xA2, 0x20, 0xF1, 0xD4, 0xA2, +0x3F, 0x6C, 0x76, 0x33, 0xEC, 0xEB, 0x47, 0xF7, +0x6C, 0xC2, 0xE0, 0xF0, 0x72, 0xA2, 0xCC, 0xEC, +0x01, 0x74, 0x76, 0x33, 0xEC, 0xEB, 0x47, 0xF7, +0x6D, 0xC2, 0xE0, 0xF0, 0x74, 0xA2, 0x66, 0x33, +0xEC, 0xEB, 0x47, 0xF7, 0x6E, 0xC2, 0xFF, 0x6B, +0x80, 0xF0, 0x0D, 0x60, 0x02, 0x74, 0x03, 0x61, +0x80, 0x18, 0x20, 0x39, 0x88, 0x10, 0x3F, 0x74, +0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF1, +0x90, 0x9C, 0x20, 0xF1, 0xD5, 0xA2, 0x80, 0xA4, +0x6C, 0xEC, 0xCE, 0xEC, 0x54, 0x2C, 0x0C, 0x10, +0x3E, 0x74, 0x51, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0x44, 0xF1, 0x90, 0x9C, 0x20, 0xF1, 0x15, 0xA2, +0xC0, 0xA4, 0x6C, 0xEE, 0x0E, 0xEE, 0x21, 0x2E, +0x20, 0xF1, 0x94, 0xA2, 0x20, 0xF1, 0x16, 0xA2, +0x20, 0xF1, 0xD7, 0xA2, 0x9A, 0x34, 0xAC, 0xE8, +0xEC, 0xEC, 0x6C, 0xE8, 0xC6, 0x36, 0x6C, 0xEC, +0x6C, 0xEE, 0x08, 0x35, 0x05, 0x2C, 0x14, 0x35, +0xD0, 0x4D, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x20, 0xF1, 0xF7, 0xA2, 0x01, 0x6B, 0xEC, 0xEB, +0x47, 0xF7, 0x6F, 0xC2, 0x20, 0xF1, 0x76, 0xA2, +0x49, 0x10, 0x80, 0xA4, 0x20, 0xF1, 0xD8, 0xA2, +0x6C, 0xEC, 0xCE, 0xEC, 0x20, 0x2C, 0x20, 0xF1, +0xF9, 0xA2, 0x20, 0xF1, 0x94, 0xA2, 0x20, 0xF1, +0xDA, 0xA2, 0xAC, 0xEF, 0x9E, 0x34, 0x6C, 0xEF, +0xC6, 0x36, 0x6C, 0xEC, 0x6C, 0xEE, 0xE8, 0x35, +0x05, 0x2C, 0xF4, 0x35, 0xD0, 0x4D, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x20, 0xF1, 0xFA, 0xA2, +0x01, 0x6B, 0xEC, 0xEB, 0x47, 0xF7, 0x6F, 0xC2, +0x20, 0xF1, 0x79, 0xA2, 0x23, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, +0x90, 0xA2, 0x7F, 0x6B, 0xE0, 0xF0, 0xD1, 0xA2, +0x8C, 0xEB, 0xE0, 0xF0, 0x92, 0xA2, 0x01, 0x6A, +0xC6, 0x36, 0x8A, 0x34, 0x4C, 0xEC, 0x68, 0x35, +0x05, 0x2C, 0x74, 0x35, 0xD0, 0x4D, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xED, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xE0, 0xF0, 0xF1, 0xA2, +0x01, 0x6B, 0xEC, 0xEB, 0x47, 0xF7, 0x6F, 0xC2, +0xE0, 0xF0, 0x70, 0xA2, 0x7E, 0x33, 0x47, 0xF7, +0x70, 0xC2, 0x80, 0x18, 0xBA, 0x38, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xE0, 0xF0, 0xB2, 0xA2, 0x02, 0x6C, 0xFF, 0x6B, +0xAC, 0xEC, 0x33, 0x24, 0x30, 0xF0, 0x20, 0x6C, +0x47, 0xF4, 0x87, 0xA4, 0x2E, 0x2C, 0x45, 0xF1, +0x58, 0xA2, 0x08, 0x5A, 0x07, 0x61, 0x30, 0xF0, +0x20, 0x6C, 0x44, 0xF2, 0x8C, 0x9C, 0xF8, 0x4A, +0xA0, 0xA4, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x44, 0xF2, 0x90, 0x9C, 0xA0, 0xA4, 0x01, 0x6C, +0x84, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x6C, 0xEC, +0x08, 0xF2, 0x10, 0x4A, 0xAC, 0xEC, 0xE0, 0xF0, +0xB4, 0xA2, 0x04, 0x6B, 0xAC, 0xEB, 0x02, 0x2B, +0x10, 0x2C, 0x01, 0x10, 0x0E, 0x24, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, 0x04, 0xF1, +0x90, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x01, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x47, 0xF4, +0x67, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0xE0, 0xF0, 0xB2, 0xA2, 0x02, 0x6C, +0xFF, 0x6B, 0xAC, 0xEC, 0x42, 0x24, 0x30, 0xF0, +0x20, 0x6C, 0x47, 0xF4, 0x87, 0xA4, 0x01, 0x74, +0x3C, 0x61, 0x45, 0xF1, 0x58, 0xA2, 0x08, 0x5A, +0x07, 0x61, 0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF2, +0x8C, 0x9C, 0xF8, 0x4A, 0xA0, 0xA4, 0x05, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x44, 0xF2, 0x90, 0x9C, +0xA0, 0xA4, 0x01, 0x6C, 0x84, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x6C, 0xEC, 0x08, 0xF2, 0x10, 0x4A, +0xAC, 0xEC, 0xE0, 0xF0, 0xB4, 0xA2, 0x04, 0x6B, +0xAC, 0xEB, 0x10, 0x2B, 0x1E, 0x24, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, 0x04, 0xF1, +0x90, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x02, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x47, 0xF4, +0x67, 0xC2, 0x20, 0xE8, 0x0E, 0x2C, 0x30, 0xF0, +0x20, 0x6C, 0xA0, 0xF0, 0x64, 0x9A, 0x04, 0xF1, +0x90, 0x9C, 0x8D, 0xEB, 0xA0, 0xF0, 0x64, 0xDA, +0x02, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x47, 0xF4, +0x67, 0xC2, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF0, 0x74, 0x9B, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x69, 0xE2, 0x00, 0x9A, 0x41, 0x45, +0x25, 0x67, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x44, 0x9A, 0x85, 0x67, 0x2C, 0xE8, +0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0xF7, 0x1F, 0x68, 0x41, 0x45, 0x25, 0x67, +0x0C, 0xD6, 0x8C, 0xE8, 0x07, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, 0x41, 0xE0, +0xC0, 0xD8, 0x1A, 0x10, 0x01, 0x6D, 0x90, 0x67, +0xAB, 0xED, 0x80, 0x18, 0xE1, 0x39, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, +0x91, 0x67, 0x40, 0xEA, 0x0C, 0x93, 0x64, 0xEA, +0x43, 0x67, 0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, +0x6C, 0xE9, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, +0x74, 0x9B, 0x2D, 0xEA, 0x61, 0xE0, 0x40, 0xD8, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x01, 0x74, 0x0D, 0x60, +0x06, 0x24, 0x02, 0x74, 0x10, 0x60, 0x03, 0x74, +0x00, 0x6A, 0x1C, 0x61, 0x14, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xA8, 0x35, 0x44, 0xF7, 0x4C, 0x9A, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA8, 0x35, +0x44, 0xF7, 0x50, 0x9A, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF7, 0x54, 0x9A, 0xA8, 0x35, +0x55, 0xE5, 0x40, 0x9D, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF7, 0x58, 0x9A, 0xA8, 0x35, +0x55, 0xE5, 0x40, 0x9D, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x6B, 0xF4, 0x08, 0x4A, 0x88, 0x34, 0x91, 0xE2, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x6C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF5, 0xA0, 0x35, +0xCC, 0xEB, 0x30, 0xF0, 0x20, 0x6E, 0xA4, 0xF5, +0xC8, 0x9E, 0xC0, 0xF3, 0x44, 0x9A, 0x80, 0xAC, +0xAD, 0xEB, 0x01, 0x6D, 0xAB, 0xED, 0x6C, 0xEE, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6B, 0x8C, 0xEB, 0xFF, 0xF7, 0x1F, 0x6A, +0x81, 0x46, 0x06, 0x67, 0xAC, 0xEA, 0x06, 0x2C, +0x83, 0x67, 0xA2, 0x67, 0x80, 0x18, 0x09, 0x3A, +0x02, 0x67, 0x0D, 0x10, 0x83, 0x67, 0xA2, 0x67, +0x80, 0x18, 0x09, 0x3A, 0x22, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x90, 0x67, +0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x46, 0x67, 0xFF, 0x68, +0xFF, 0xF7, 0x1F, 0x69, 0x01, 0x4A, 0x0C, 0xD6, +0x0D, 0xD7, 0x8C, 0xE8, 0xAC, 0xE9, 0x04, 0x2A, +0x90, 0x67, 0xB1, 0x67, 0xC7, 0x67, 0x15, 0x10, +0xB1, 0x67, 0x90, 0x67, 0x80, 0x18, 0x09, 0x3A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x94, +0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x0D, 0x96, +0x90, 0x67, 0xB1, 0x67, 0xC4, 0xEA, 0x0C, 0x92, +0x4C, 0xEE, 0x4F, 0xEB, 0x04, 0x92, 0x4C, 0xEB, +0x6D, 0xEE, 0x80, 0x18, 0x1C, 0x3A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, +0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0x25, 0x67, 0x01, 0x60, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, +0x70, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF0, 0x74, 0x9B, 0x69, 0xE2, 0x00, 0x9A, +0x41, 0x41, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, 0x2C, 0xE8, +0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0xF7, 0x1F, 0x68, 0x41, 0x45, 0x25, 0x67, +0x0C, 0xD6, 0x8C, 0xE8, 0x16, 0x2A, 0x1F, 0xF7, +0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x50, 0x9A, 0x41, 0xE0, 0x0C, 0x92, +0x3A, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x54, 0x9A, 0x0C, 0x93, 0x41, 0xE0, 0x60, 0xD8, +0x33, 0x10, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x54, 0x9A, 0x49, 0xE0, 0x40, 0x9A, 0x91, 0x67, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, +0x44, 0x9A, 0x40, 0xEA, 0x0C, 0x93, 0x64, 0xEA, +0x43, 0x67, 0x04, 0x93, 0x2C, 0xEA, 0x2F, 0xE9, +0x6C, 0xE9, 0x1F, 0xF7, 0x00, 0x6B, 0x0C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0x2D, 0xEA, 0x01, 0x60, +0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, +0x70, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF0, 0x74, 0x9B, 0x61, 0xE0, 0x40, 0xD8, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x03, 0xF0, 0x08, 0x6B, +0x43, 0xF2, 0x78, 0xDA, 0x05, 0xF1, 0x00, 0x4B, +0x43, 0xF2, 0x7C, 0xDA, 0x02, 0xF1, 0x00, 0x4B, +0x63, 0xF2, 0x60, 0xDA, 0x00, 0xF1, 0x00, 0x4B, +0x63, 0xF2, 0x64, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6B, 0x6C, 0xEC, 0x1F, 0x6D, 0x8C, 0xED, +0x96, 0x34, 0x6C, 0xEC, 0x01, 0x74, 0x03, 0x6A, +0x0A, 0x60, 0x10, 0x24, 0x04, 0x74, 0x05, 0x60, +0x06, 0x74, 0x00, 0x6A, 0x12, 0x61, 0xEF, 0x4A, +0x02, 0x10, 0x07, 0x6A, 0x4B, 0xEA, 0xAB, 0xE2, +0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x20, 0xE8, 0x08, 0x6A, 0xAB, 0xE2, +0x44, 0x32, 0x00, 0xF6, 0x40, 0x32, 0x00, 0xF6, +0x43, 0x32, 0x20, 0xE8, 0x00, 0xF6, 0x80, 0x34, +0x00, 0xF6, 0x83, 0x34, 0x47, 0x44, 0x5C, 0x4A, +0xFF, 0x6B, 0x6C, 0xEA, 0x77, 0x5A, 0x00, 0x6A, +0x06, 0x60, 0x00, 0x54, 0x64, 0x6A, 0x03, 0x60, +0x47, 0x44, 0x5D, 0x4A, 0x6C, 0xEA, 0x20, 0xE8, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x0E, 0x91, 0x04, 0xD2, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, 0x4C, 0xE9, +0x0C, 0xD6, 0x0D, 0xD7, 0x0F, 0x90, 0x05, 0xD5, +0x00, 0x6A, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, +0x40, 0xA8, 0x01, 0x4A, 0x40, 0xC8, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x95, 0x05, 0x96, 0xC4, 0xF3, +0xEC, 0x9A, 0x30, 0xF0, 0x21, 0x6C, 0x70, 0xF1, +0x08, 0x4C, 0x80, 0x18, 0xAB, 0x53, 0x0C, 0x93, +0x6C, 0xEA, 0x0D, 0x93, 0x6E, 0xEA, 0x03, 0x22, +0x40, 0xA8, 0x23, 0xEA, 0xE3, 0x61, 0x40, 0xA8, +0x09, 0x97, 0x07, 0x90, 0x23, 0xEA, 0x08, 0x91, +0x58, 0x67, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF7, 0x78, 0x9A, 0x7F, 0x6A, 0xFD, 0x67, +0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF7, 0x5C, 0x9A, 0xD2, 0xA7, +0x02, 0x6B, 0xA0, 0xA2, 0x01, 0x6C, 0x6B, 0xEB, +0x8C, 0xED, 0xCC, 0xEB, 0xAD, 0xEB, 0x72, 0xC7, +0x02, 0x6B, 0x70, 0xC7, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF7, 0x60, 0x9B, 0x8F, 0xCF, 0xFF, 0x6A, +0x80, 0xAB, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF6, +0xCC, 0x9B, 0x4C, 0xEC, 0x94, 0x34, 0xD1, 0xE4, +0x60, 0xA4, 0x40, 0x6D, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF7, 0x64, 0x9B, 0x80, 0xAB, 0x4C, 0xEC, +0x94, 0x34, 0xD1, 0xE4, 0x60, 0xA4, 0x4C, 0xEB, +0xAD, 0xEB, 0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, +0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x4C, 0xED, 0x07, 0x6B, 0xAC, 0xEB, +0x2C, 0x2B, 0xAE, 0x35, 0xFF, 0x4D, 0x4C, 0xED, +0xA6, 0x33, 0xAC, 0x35, 0x4C, 0xEB, 0xB5, 0xE4, +0x08, 0xD3, 0x07, 0xD5, 0x06, 0xD4, 0x00, 0x69, +0x1A, 0x10, 0x30, 0xF0, 0x20, 0x68, 0x07, 0x95, +0x80, 0xF2, 0x4C, 0x98, 0x04, 0x04, 0x08, 0x6E, +0x40, 0xEA, 0x07, 0x94, 0x06, 0x95, 0x80, 0xF2, +0x4C, 0x98, 0x08, 0x6E, 0x01, 0x49, 0x40, 0xEA, +0x80, 0xF2, 0x4C, 0x98, 0x06, 0x94, 0x04, 0x05, +0x08, 0x6E, 0x40, 0xEA, 0xFF, 0x6A, 0x4C, 0xE9, +0x07, 0x92, 0xF8, 0x4A, 0x07, 0xD2, 0x06, 0x93, +0x08, 0x92, 0x08, 0x4B, 0x43, 0xE9, 0x06, 0xD3, +0xE0, 0x61, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0x67, 0x80, 0xF2, 0x4C, 0x9A, 0x11, 0xD5, +0xA7, 0x40, 0x04, 0x04, 0x02, 0x4D, 0x26, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0x7D, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF3, 0x54, 0x9A, 0x90, 0xA3, +0x00, 0x6D, 0x40, 0xEA, 0x68, 0xA0, 0x01, 0x6A, +0x6C, 0xEA, 0x31, 0x22, 0x69, 0xA0, 0x02, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x07, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x4C, 0x9A, +0xAF, 0xA0, 0x91, 0x67, 0x40, 0xEA, 0x63, 0xA0, +0x80, 0x6A, 0x4B, 0xEA, 0x6D, 0xEA, 0x41, 0x6B, +0x6B, 0xEB, 0x6C, 0xEA, 0x43, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF3, 0x40, 0x9A, 0x00, 0x6D, +0xC5, 0x67, 0x90, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x20, 0xF3, 0x48, 0x9A, 0x90, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, +0x40, 0x9A, 0x8D, 0xA8, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x7D, 0x67, 0x20, 0xF3, 0x54, 0x9A, +0x90, 0xA3, 0x01, 0x6D, 0x40, 0xEA, 0x88, 0xA0, +0x02, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x7A, 0x22, +0x83, 0xA0, 0x7F, 0x6A, 0x2E, 0xA0, 0x8C, 0xEA, +0x43, 0xC0, 0x3F, 0x6A, 0x2C, 0xEA, 0x02, 0x2A, +0x3A, 0x31, 0x02, 0x10, 0x3A, 0x31, 0x01, 0x49, +0x11, 0x94, 0x00, 0x6A, 0x6C, 0xE9, 0x07, 0xD4, +0x06, 0xD2, 0x08, 0xD2, 0x0A, 0xD2, 0x61, 0x10, +0x0A, 0x94, 0x6F, 0x41, 0x8E, 0xEB, 0x17, 0x2B, +0x88, 0xA0, 0x10, 0x6B, 0x8C, 0xEB, 0x4C, 0xEB, +0x04, 0x23, 0x63, 0xA0, 0x40, 0x6A, 0x6D, 0xEA, +0x04, 0x10, 0x63, 0xA0, 0x41, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x43, 0xC0, 0x06, 0x93, 0x4E, 0xA0, +0x49, 0xE3, 0x09, 0xD2, 0x09, 0x94, 0xFF, 0x6A, +0x4C, 0xEC, 0x09, 0xD4, 0x07, 0x10, 0x63, 0xA0, +0x41, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x43, 0xC0, +0x40, 0x6A, 0x09, 0xD2, 0x68, 0xA0, 0x04, 0x6A, +0x6C, 0xEA, 0x0D, 0x2A, 0x69, 0xA0, 0x02, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x07, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x4C, 0x9A, +0x07, 0x94, 0x09, 0x95, 0x40, 0xEA, 0x08, 0x93, +0xA5, 0xA8, 0x30, 0xF0, 0x20, 0x6A, 0x09, 0x96, +0x20, 0xF3, 0x40, 0x9A, 0xB5, 0xE3, 0xFF, 0xF7, +0x1F, 0x6B, 0x6C, 0xED, 0x90, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF3, 0x48, 0x9A, +0x90, 0x67, 0x40, 0xEA, 0x7D, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0x90, 0xA3, 0x20, 0xF3, 0x54, 0x9A, +0x01, 0x6D, 0x40, 0xEA, 0x08, 0x92, 0xFF, 0xF7, +0x1F, 0x6B, 0x0A, 0x94, 0x40, 0x4A, 0x6C, 0xEA, +0x08, 0xD2, 0x06, 0x92, 0x01, 0x4C, 0x0A, 0xD4, +0xC0, 0x4A, 0x06, 0xD2, 0x07, 0x94, 0x06, 0x93, +0xFF, 0x6A, 0x40, 0x4C, 0x4C, 0xEB, 0x07, 0xD4, +0x06, 0xD3, 0x0A, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, +0x23, 0xEB, 0x9A, 0x61, 0x0F, 0x97, 0x0E, 0x91, +0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x01, 0x74, 0x11, 0x60, 0x05, 0x24, 0x02, 0x74, +0x03, 0x60, 0x03, 0x74, 0x0C, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x25, 0xF0, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF3, 0x80, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x0A, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x25, 0xF0, 0x7C, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x64, 0xF3, 0x9C, 0x9C, 0x40, 0x9B, +0x8D, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x68, 0x9A, +0x01, 0x6D, 0xFF, 0x6C, 0x40, 0xA3, 0xAC, 0xEA, +0x05, 0x22, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF3, 0xBC, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF3, 0x98, 0x9C, +0x60, 0x9D, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x8C, 0xEB, 0x42, 0xF6, 0x64, 0xDA, +0x60, 0x9D, 0x8C, 0xEB, 0x42, 0xF6, 0x70, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x45, 0xF0, 0x4C, 0x9A, 0x60, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF3, 0x58, 0x9A, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x40, 0x98, 0x82, 0x46, 0x26, 0x67, +0x40, 0xEA, 0x04, 0xD2, 0xC0, 0xF3, 0x40, 0x98, +0x83, 0x41, 0x40, 0xEA, 0x05, 0xD2, 0xC0, 0xF3, +0x40, 0x98, 0x81, 0x41, 0x40, 0xEA, 0x06, 0xD2, +0xC0, 0xF3, 0x40, 0x98, 0x91, 0x67, 0x40, 0xEA, +0x05, 0x94, 0x03, 0x6B, 0x8C, 0xEB, 0x04, 0x94, +0xA7, 0x43, 0x0F, 0x6B, 0x8C, 0xEB, 0x6C, 0x33, +0x11, 0x4D, 0x75, 0xE5, 0x06, 0x93, 0x60, 0x34, +0x4D, 0xEC, 0xE7, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x70, 0x9A, +0x91, 0xE5, 0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6B, +0x4B, 0xF0, 0x74, 0x9B, 0x29, 0xE2, 0x43, 0xEB, +0x02, 0x60, 0x6F, 0xEB, 0x69, 0xE2, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, +0x82, 0x45, 0x25, 0x67, 0x40, 0xEA, 0x04, 0xD2, +0xC0, 0xF3, 0x40, 0x98, 0x83, 0x41, 0x18, 0x49, +0x40, 0xEA, 0x03, 0x6B, 0x4C, 0xEB, 0x04, 0x92, +0x0F, 0x6C, 0x65, 0xE1, 0x4C, 0xEC, 0x8C, 0x34, +0x89, 0xE1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x4C, 0x9A, +0x85, 0x67, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x8C, 0xEA, +0x0B, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF6, +0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF1, +0x9C, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x0A, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF6, 0x64, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF0, 0x90, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x6B, 0x8C, 0xEB, +0x4C, 0xED, 0x8E, 0x34, 0x42, 0xF4, 0x10, 0x4C, +0x36, 0x25, 0x1F, 0xF7, 0x00, 0x6D, 0x8C, 0xED, +0x02, 0xF0, 0x00, 0x75, 0x01, 0x60, 0x21, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, 0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x07, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0xBC, 0x9A, 0xB5, 0xE4, +0x20, 0x6A, 0x84, 0xF0, 0xB0, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0xBC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x40, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, -0x80, 0xA4, 0x01, 0x6A, 0x00, 0xF6, 0x80, 0x34, -0x44, 0xEB, 0x00, 0xF6, 0x83, 0x34, 0x4F, 0xEA, -0x8C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x40, 0xC5, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF1, -0xA0, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, -0xA0, 0xA4, 0xCF, 0xEE, 0x00, 0xF6, 0xA0, 0x35, -0x00, 0xF6, 0xA3, 0x35, 0xCC, 0xED, 0x4C, 0xED, -0xA0, 0xC4, 0x20, 0xE8, 0x01, 0x6A, 0x20, 0xE8, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEE, 0x4C, 0xEF, -0x24, 0x67, 0x0D, 0xD5, 0x06, 0xD6, 0x04, 0xD7, -0x2C, 0x27, 0x00, 0x68, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x40, 0x9B, 0x91, 0x67, 0x40, 0xEA, -0x06, 0x93, 0x6E, 0xEA, 0x11, 0x2A, 0x0D, 0x95, -0x42, 0x41, 0x82, 0x67, 0x05, 0xD2, 0x80, 0x18, -0xB5, 0x3E, 0x01, 0x72, 0x1C, 0x60, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, 0x81, 0x41, -0x40, 0xEA, 0x05, 0x93, 0x45, 0xE3, 0x08, 0x10, +0x84, 0xF0, 0xB0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x54, 0x9A, 0xB5, 0xE4, 0x51, 0xE4, +0x80, 0xA4, 0x00, 0xF6, 0x80, 0x34, 0x01, 0x6A, +0x00, 0xF6, 0x83, 0x34, 0x44, 0xEB, 0x8D, 0xEA, +0x36, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x84, 0xF0, +0xB4, 0x9D, 0x01, 0x6E, 0xC4, 0xEB, 0xB1, 0xE4, +0xA0, 0xA4, 0x00, 0xF6, 0xA0, 0x35, 0x00, 0xF6, +0xA3, 0x35, 0xCD, 0xED, 0x3A, 0x10, 0x1F, 0xF7, +0x00, 0x6D, 0x8C, 0xED, 0x02, 0xF0, 0x00, 0x75, +0x01, 0x60, 0x25, 0x2D, 0x1F, 0xF7, 0x00, 0x6A, +0x8C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x07, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0xB0, 0x9A, 0xB5, 0xE4, 0x80, 0xA5, 0x0B, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0xB0, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, +0xB5, 0xE4, 0x51, 0xE4, 0x80, 0xA4, 0x01, 0x6A, +0x00, 0xF6, 0x80, 0x34, 0x44, 0xEB, 0x00, 0xF6, +0x83, 0x34, 0x4F, 0xEA, 0x8C, 0xEA, 0xFF, 0x6B, +0x6C, 0xEA, 0x40, 0xC5, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6D, 0x84, 0xF0, 0xB4, 0x9D, 0x01, 0x6E, +0xC4, 0xEB, 0xB1, 0xE4, 0xA0, 0xA4, 0xCF, 0xEE, +0x00, 0xF6, 0xA0, 0x35, 0x00, 0xF6, 0xA3, 0x35, +0xCC, 0xED, 0x4C, 0xED, 0xA0, 0xC4, 0x20, 0xE8, +0x01, 0x6A, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEE, 0x4C, 0xEF, 0x24, 0x67, 0x0D, 0xD5, +0x06, 0xD6, 0x04, 0xD7, 0x2C, 0x27, 0x00, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, -0x81, 0x41, 0x02, 0x49, 0x40, 0xEA, 0x45, 0xE1, -0xFF, 0xF7, 0x1F, 0x6B, 0x02, 0x48, 0x6C, 0xE8, -0x41, 0xE0, 0x04, 0x92, 0x6C, 0xE8, 0x43, 0xE8, -0xD5, 0x61, 0x01, 0x69, 0x2B, 0xE9, 0x51, 0x67, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xED, 0x80, 0x18, -0x1B, 0x13, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x70, 0x9B, -0xFF, 0x6A, 0x25, 0x67, 0x60, 0xA3, 0xFF, 0xF7, -0x1F, 0x68, 0x4C, 0xE9, 0x6C, 0xEA, 0x8C, 0xE8, -0x04, 0xD2, 0x00, 0x18, 0xA0, 0xD3, 0x0F, 0x2A, +0x91, 0x67, 0x40, 0xEA, 0x06, 0x93, 0x6E, 0xEA, +0x11, 0x2A, 0x0D, 0x95, 0x42, 0x41, 0x82, 0x67, +0x05, 0xD2, 0x80, 0x18, 0x2C, 0x3C, 0x01, 0x72, +0x1C, 0x60, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x40, 0x9B, 0x81, 0x41, 0x40, 0xEA, 0x05, 0x93, +0x45, 0xE3, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x40, 0x9B, 0x81, 0x41, 0x02, 0x49, +0x40, 0xEA, 0x45, 0xE1, 0xFF, 0xF7, 0x1F, 0x6B, +0x02, 0x48, 0x6C, 0xE8, 0x41, 0xE0, 0x04, 0x92, +0x6C, 0xE8, 0x43, 0xE8, 0xD5, 0x61, 0x01, 0x69, +0x2B, 0xE9, 0x51, 0x67, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xED, 0x80, 0x18, 0x8C, 0x10, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF1, 0x64, 0x9B, 0xFF, 0x6A, 0x25, 0x67, +0x60, 0xA3, 0xFF, 0xF7, 0x1F, 0x68, 0x4C, 0xE9, +0x6C, 0xEA, 0x8C, 0xE8, 0x04, 0xD2, 0x00, 0x18, +0x95, 0xD8, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6C, 0xFF, 0x6D, +0x49, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x01, 0x72, +0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, +0x54, 0x9A, 0x90, 0x67, 0x01, 0x6D, 0xD1, 0x67, +0x03, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF3, 0x64, 0x9A, 0xFF, 0x6C, 0x08, 0x6D, +0x40, 0xA3, 0x4A, 0x6E, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0x95, 0xA0, 0xF2, 0x50, 0x9A, 0x00, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, +0x54, 0x9A, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x24, 0x67, 0xC0, 0xF0, 0x84, 0xA0, 0x7F, 0x6B, +0xFF, 0x6A, 0x8C, 0xEB, 0x4C, 0xEB, 0x4C, 0xE9, +0x15, 0x23, 0x00, 0x18, 0x8D, 0xC8, 0x12, 0x2A, +0xC3, 0xF3, 0x68, 0xA0, 0x20, 0x6A, 0x91, 0x67, +0x6D, 0xEA, 0xC3, 0xF3, 0x48, 0xC0, 0x08, 0x6A, +0x43, 0xF4, 0x44, 0xC0, 0x00, 0x18, 0xDA, 0xE1, +0x91, 0x67, 0x00, 0x18, 0xE1, 0xE1, 0x91, 0x67, +0x00, 0x18, 0xD0, 0xE1, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x20, 0xE5, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0x00, 0x6C, 0xFF, 0x6D, 0x49, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, -0x40, 0xEA, 0x01, 0x72, 0x09, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA0, 0xF2, 0x54, 0x9A, 0x90, 0x67, -0x01, 0x6D, 0xD1, 0x67, 0x03, 0x6F, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x70, 0x9A, -0xFF, 0x6C, 0x08, 0x6D, 0x40, 0xA3, 0x4A, 0x6E, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0x95, 0xA0, 0xF2, -0x50, 0x9A, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xEF, 0xDF, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0x00, 0x6D, 0xC5, 0x67, 0xFF, 0x6C, 0x40, 0xEA, -0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0x17, 0xC5, +0x69, 0x6E, 0xFF, 0x6C, 0x00, 0x6D, 0x40, 0xEA, +0x01, 0x6C, 0x0C, 0x6D, 0x00, 0x18, 0x30, 0xC5, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0xFF, 0x6C, 0xA4, 0x67, 0x2F, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, 0x40, 0xEA, 0x00, 0x18, -0x05, 0xE0, 0x01, 0x6C, 0x08, 0x6D, 0x00, 0x18, -0x17, 0xC5, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, -0x12, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF7, -0x94, 0xA2, 0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, -0x20, 0x6E, 0x30, 0xF0, 0x20, 0x6F, 0x0C, 0xF0, -0x10, 0x4D, 0x0C, 0xF0, 0x11, 0x4E, 0x0C, 0xF0, -0x12, 0x4F, 0x80, 0x18, 0x58, 0x03, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xF5, 0x63, 0x15, 0x62, -0x14, 0xD1, 0x13, 0xD0, 0x1A, 0x92, 0x16, 0xD4, -0x17, 0xD5, 0x10, 0xD2, 0x10, 0x93, 0xFF, 0x6A, -0x18, 0xD6, 0x4C, 0xEB, 0x10, 0xD3, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF4, 0x90, 0x9B, 0xE2, 0xF4, -0x10, 0x4B, 0x62, 0xAB, 0x06, 0xD4, 0x9D, 0x67, -0x6E, 0xCC, 0x00, 0x6B, 0x0A, 0xD3, 0x0D, 0xD3, -0x0B, 0xD3, 0x0C, 0xD3, 0x01, 0x6B, 0x6B, 0xEB, -0x20, 0xF0, 0x68, 0xC4, 0x02, 0x6B, 0x20, 0xF0, -0x69, 0xC4, 0x05, 0x6B, 0x6B, 0xEB, 0x20, 0xF0, -0x77, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, -0x88, 0x9B, 0xE2, 0xF4, 0x08, 0x4B, 0x64, 0xA3, -0xBD, 0x67, 0x04, 0xD4, 0x74, 0xC5, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF4, 0x80, 0x9B, 0xE2, 0xF4, -0x00, 0x4B, 0x4C, 0xEF, 0x08, 0xD4, 0x82, 0xAB, -0x66, 0xA3, 0x0F, 0xD7, 0x92, 0xCD, 0x20, 0xF0, -0x66, 0xC5, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, -0x70, 0x9B, 0x60, 0xA3, 0x6C, 0xEA, 0x11, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x58, 0x9A, -0x02, 0xF0, 0x00, 0x6B, 0x40, 0x9A, 0x6C, 0xEA, -0x1C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, -0x50, 0x9A, 0x00, 0x6C, 0xFF, 0x6D, 0x59, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, -0x5C, 0x9A, 0x00, 0x68, 0x40, 0xEA, 0x01, 0x72, -0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA0, 0xF2, 0x54, 0x9A, 0x0C, 0xF0, -0x92, 0xA3, 0x01, 0x6D, 0x18, 0x6E, 0xF0, 0x67, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA0, 0xF2, 0x54, 0x9A, 0x0C, 0xF0, -0x92, 0xA3, 0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, -0x40, 0xEA, 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x54, 0x9A, 0xFF, 0x6F, 0x49, 0xE0, -0x80, 0xA2, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, -0x50, 0x9A, 0xEC, 0xEC, 0x49, 0xE0, 0xA0, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x5C, 0x9A, -0xEC, 0xED, 0x49, 0xE0, 0xC0, 0xA2, 0xEC, 0xEE, -0x80, 0x18, 0xC3, 0x06, 0x10, 0x95, 0x22, 0x67, -0x87, 0x40, 0x0E, 0xD2, 0x68, 0x49, 0xFF, 0x6A, -0x29, 0x4C, 0x4C, 0xE9, 0x80, 0x18, 0x79, 0x0D, -0x0F, 0x92, 0x18, 0x93, 0x03, 0x4A, 0x4C, 0x32, -0x49, 0xE3, 0x42, 0xA2, 0x0C, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, -0x48, 0x9A, 0x03, 0xF3, 0x80, 0x9C, 0x17, 0x93, -0x49, 0xE0, 0x91, 0xE0, 0x0F, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF2, 0x68, 0x9B, 0x06, 0x02, -0x00, 0xF0, 0x1E, 0x04, 0x6D, 0xE0, 0xA0, 0xA2, -0x01, 0x4A, 0x8A, 0xEA, 0xA0, 0xC3, 0x01, 0x4B, -0xFA, 0x61, 0x06, 0x10, 0xA0, 0xA3, 0x01, 0x4B, -0xA0, 0xC2, 0x01, 0x4A, 0x8A, 0xEA, 0xFA, 0x61, -0x18, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x4C, 0x9A, 0x75, 0xA4, 0x49, 0xE0, 0x29, 0xE2, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, -0x50, 0x9A, 0x76, 0xA4, 0x49, 0xE0, 0x29, 0xE2, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x44, 0x9A, 0x01, 0x6B, 0x49, 0xE0, 0x29, 0xE2, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x48, 0x9A, 0x79, 0xA4, 0x49, 0xE0, 0x29, 0xE2, -0x60, 0xC2, 0x0F, 0x92, 0x03, 0x4A, 0x4C, 0x32, -0x49, 0xE4, 0xA7, 0xA2, 0x66, 0xA2, 0xE8, 0xA2, -0x44, 0xA2, 0xFD, 0x65, 0x56, 0x2A, 0x0F, 0x96, -0xCC, 0x32, 0x49, 0xE4, 0x5D, 0xA2, 0x01, 0x72, -0x02, 0x61, 0x00, 0x6C, 0x1A, 0x10, 0x1C, 0x72, -0x4C, 0x61, 0xFB, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF3, 0xCC, 0x9A, 0x85, 0xF1, 0x44, 0x9D, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xAC, 0x9D, -0xD9, 0xE0, 0x39, 0xE6, 0x49, 0xE5, 0x89, 0xE2, -0xA0, 0xA2, 0xFF, 0x6A, 0x99, 0xE6, 0xAC, 0xEA, -0x40, 0xC6, 0x01, 0x4C, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xEC, 0x1C, 0x6D, 0xB8, 0xEF, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x12, 0xED, -0x55, 0xE5, 0x85, 0xF1, 0x48, 0xAD, 0x43, 0xEC, -0xDD, 0x61, 0xFF, 0xF7, 0x1F, 0x6C, 0x0C, 0x4A, -0x8C, 0xEA, 0x9D, 0x67, 0x20, 0xF0, 0xA0, 0xA4, -0x00, 0x6C, 0x02, 0x4D, 0x13, 0x10, 0x30, 0xF0, -0x20, 0x6E, 0x23, 0xF2, 0xCC, 0x9E, 0xD9, 0xE2, -0x19, 0xE6, 0x39, 0xE6, 0x99, 0xE6, 0x10, 0xD6, -0xDD, 0x67, 0x99, 0xE6, 0x20, 0xF0, 0xE0, 0xA6, -0x10, 0x96, 0x01, 0x4C, 0xE0, 0xC6, 0xFF, 0xF7, -0x1F, 0x6E, 0xCC, 0xEC, 0xA2, 0xEC, 0xEB, 0x61, -0xFD, 0x67, 0x20, 0xF0, 0x80, 0xA7, 0x89, 0xE2, -0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEA, 0x02, 0x4A, -0x76, 0x10, 0xFF, 0x73, 0x00, 0x6C, 0x0C, 0x6A, -0x17, 0x61, 0x4B, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF3, 0xCC, 0x9A, 0x40, 0x9D, 0x30, 0xF0, -0x20, 0x6D, 0x23, 0xF2, 0xAC, 0x9D, 0xD9, 0xE0, -0x39, 0xE6, 0x49, 0xE5, 0x89, 0xE2, 0xA0, 0xA2, -0xFF, 0x6A, 0x99, 0xE6, 0xAC, 0xEA, 0x40, 0xC6, -0x01, 0x4C, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0x50, 0xF5, 0xA2, 0x43, -0xA6, 0xF6, 0x00, 0x4A, 0xAC, 0x35, 0x55, 0xE5, -0x42, 0xAD, 0x43, 0xEC, 0xDF, 0x61, 0xFF, 0xF7, -0x1F, 0x6C, 0x0C, 0x4A, 0x8C, 0xEA, 0x0F, 0x94, -0x18, 0x95, 0x03, 0x4C, 0x8C, 0x34, 0x91, 0xE5, -0x83, 0xA4, 0x1F, 0x24, 0xDD, 0x67, 0xB0, 0xA6, -0x00, 0x6C, 0x01, 0x4D, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6E, 0x23, 0xF2, 0xCC, 0x9E, 0xFD, 0x67, -0x9D, 0xE7, 0xD9, 0xE2, 0x19, 0xE6, 0xF0, 0xA7, -0x39, 0xE6, 0x99, 0xE6, 0xE0, 0xC6, 0x01, 0x4C, -0xFF, 0xF7, 0x1F, 0x6E, 0xCC, 0xEC, 0xA2, 0xEC, -0xEE, 0x61, 0xBD, 0x67, 0x90, 0xA5, 0x89, 0xE2, -0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEA, 0x01, 0x4A, -0x8C, 0xEA, 0x00, 0x6C, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x6E, 0x23, 0xF2, 0xEC, 0x9E, 0x65, 0xF1, -0xB4, 0x9D, 0xF9, 0xE0, 0xB5, 0xE7, 0x95, 0xE5, -0xE0, 0xA5, 0x39, 0xE6, 0x59, 0xE6, 0xFF, 0x6D, -0x99, 0xE6, 0xEC, 0xED, 0xA0, 0xC6, 0x01, 0x4C, -0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEC, 0x1C, 0x6D, -0xFF, 0x67, 0xB8, 0xEF, 0x30, 0xF0, 0x20, 0x6E, -0xA6, 0xF6, 0x00, 0x4E, 0x12, 0xED, 0xD5, 0xE5, -0x65, 0xF1, 0xD8, 0xAD, 0xC3, 0xEC, 0xDF, 0x61, -0xC9, 0xE2, 0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEA, -0x0F, 0x94, 0x18, 0x95, 0x03, 0x4C, 0x8C, 0x34, -0x91, 0xE5, 0x84, 0xA4, 0x25, 0x2C, 0x0F, 0x96, -0xCC, 0x34, 0x91, 0xE5, 0x9D, 0xA4, 0x01, 0x74, -0x00, 0x6C, 0x1E, 0x61, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x6D, 0x23, 0xF2, 0xCC, 0x9D, 0xE5, 0xF2, -0x70, 0x9B, 0xD5, 0xE0, 0x6D, 0xE6, 0x8D, 0xE3, -0xC0, 0xA3, 0x35, 0xE5, 0x55, 0xE5, 0xFF, 0x6B, -0x95, 0xE5, 0xCC, 0xEB, 0x60, 0xC5, 0x01, 0x4C, -0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0xE5, 0xF2, -0xB4, 0xAB, 0xA3, 0xEC, 0xE4, 0x61, 0x2B, 0x10, -0x0F, 0x94, 0x18, 0x97, 0x03, 0x4C, 0x8C, 0x34, -0x91, 0xE7, 0x84, 0xA4, 0x26, 0x2C, 0x0F, 0x95, -0xAC, 0x34, 0x91, 0xE7, 0x9D, 0xA4, 0x1C, 0x74, -0x00, 0x6C, 0x1F, 0x61, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x6D, 0x23, 0xF2, 0xCC, 0x9D, 0xE5, 0xF2, -0x78, 0x9B, 0xD5, 0xE0, 0x6D, 0xE6, 0x8D, 0xE3, -0xC0, 0xA3, 0x35, 0xE5, 0x55, 0xE5, 0xFF, 0x6B, -0x95, 0xE5, 0xCC, 0xEB, 0x60, 0xC5, 0x01, 0x4C, -0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0xE5, 0xF2, -0xBC, 0xAB, 0xA3, 0xEC, 0xE4, 0x61, 0xA9, 0xE2, -0x9C, 0x10, 0x0F, 0x94, 0x18, 0x96, 0x03, 0x4C, -0x8C, 0x34, 0x91, 0xE6, 0x84, 0xA4, 0x5C, 0x2C, -0x0F, 0x97, 0xEC, 0x34, 0x91, 0xE6, 0x9D, 0xA4, -0x21, 0x74, 0x00, 0x6C, 0x55, 0x61, 0x14, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x65, 0xF1, 0xDC, 0x9E, -0x23, 0xF2, 0xAC, 0x9D, 0xBD, 0xE0, 0xD5, 0xE5, -0x95, 0xE5, 0xC0, 0xA5, 0x3D, 0xE7, 0x5D, 0xE7, -0xFF, 0x6D, 0x9D, 0xE7, 0xCC, 0xED, 0xA0, 0xC7, -0x01, 0x4C, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEC, -0x1C, 0x6E, 0xFF, 0x67, 0xD8, 0xEF, 0x30, 0xF0, -0x20, 0x6D, 0xA6, 0xF6, 0x00, 0x4D, 0x12, 0xEE, -0xB9, 0xE6, 0x85, 0xF1, 0xE0, 0xAE, 0xE3, 0xEC, -0xDF, 0x61, 0xE9, 0xE2, 0xFF, 0xF7, 0x1F, 0x6C, -0xFF, 0x73, 0x8C, 0xEA, 0xC0, 0xF0, 0x06, 0x60, -0x0F, 0x94, 0x18, 0x97, 0x03, 0x4C, 0x8C, 0x34, -0x91, 0xE7, 0x83, 0xA4, 0x11, 0x24, 0x40, 0xF5, -0x12, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0x6C, 0x33, -0xAD, 0xE3, 0x03, 0xF3, 0x90, 0x9C, 0x64, 0xA3, -0x65, 0xF1, 0xB8, 0xA6, 0x91, 0xE0, 0x31, 0xE4, -0xAD, 0xE3, 0x51, 0xE4, 0x0A, 0x4B, 0x10, 0x10, -0x40, 0xF5, 0x12, 0x4B, 0x30, 0xF0, 0x20, 0x6C, -0x6C, 0x33, 0xAD, 0xE3, 0x03, 0xF3, 0x90, 0x9C, -0x64, 0xA3, 0x65, 0xF1, 0xB8, 0xA6, 0x91, 0xE0, -0x31, 0xE4, 0xAD, 0xE3, 0x51, 0xE4, 0x05, 0x4B, -0xFF, 0x6D, 0xAC, 0xEB, 0x60, 0xC4, 0x9A, 0x10, -0x0F, 0x94, 0x18, 0x95, 0x03, 0x4C, 0x8C, 0x34, -0x91, 0xE5, 0x84, 0xA4, 0x36, 0x2C, 0x0F, 0x96, -0xCC, 0x34, 0x91, 0xE5, 0x9D, 0xA4, 0x10, 0x74, -0x30, 0x61, 0x1C, 0x6C, 0xBF, 0x67, 0x98, 0xED, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x12, 0xEC, 0x6D, 0xE4, 0x85, 0xF1, 0xEC, 0xA3, -0x00, 0x6B, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6C, -0xA1, 0x9D, 0x23, 0xF2, 0x8C, 0x9C, 0x99, 0xE0, -0xB1, 0xE4, 0x71, 0xE4, 0xA0, 0xA4, 0x39, 0xE6, -0x59, 0xE6, 0xFF, 0x6C, 0x79, 0xE6, 0xAC, 0xEC, -0x80, 0xC6, 0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6C, -0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0x50, 0xF5, -0xA5, 0x47, 0xA6, 0xF6, 0x00, 0x4C, 0xAC, 0x35, -0x95, 0xE5, 0x84, 0xAD, 0x83, 0xEB, 0xE2, 0x61, -0x89, 0xE2, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, -0x5D, 0x10, 0x0F, 0x94, 0x18, 0x96, 0x03, 0x4C, -0x8C, 0x34, 0x91, 0xE6, 0x84, 0xA4, 0x56, 0x2C, -0x0F, 0x97, 0xEC, 0x34, 0x91, 0xE6, 0x9D, 0xA4, -0x0C, 0x74, 0x00, 0x6C, 0x4F, 0x61, 0x14, 0x10, -0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF2, 0xEC, 0x9E, -0x05, 0xF3, 0xA0, 0x9D, 0xF9, 0xE0, 0xB5, 0xE7, -0x95, 0xE5, 0xE0, 0xA5, 0x39, 0xE6, 0x59, 0xE6, -0xFF, 0x6D, 0x99, 0xE6, 0xEC, 0xED, 0xA0, 0xC6, -0x01, 0x4C, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEC, -0x30, 0xF0, 0x20, 0x6D, 0xA6, 0xF6, 0x00, 0x4D, -0x05, 0xF3, 0xC4, 0xAD, 0xC3, 0xEC, 0xE4, 0x61, -0xC9, 0xE2, 0xFF, 0xF7, 0x1F, 0x6C, 0xFF, 0x73, -0x8C, 0xEA, 0x23, 0x60, 0x0F, 0x94, 0x18, 0x96, -0x03, 0x4C, 0x8C, 0x34, 0x91, 0xE6, 0x83, 0xA4, -0x0E, 0x24, 0x30, 0xF0, 0x20, 0x6C, 0x40, 0xF5, -0x12, 0x4B, 0x03, 0xF3, 0x90, 0x9C, 0x6C, 0x33, -0xAD, 0xE3, 0x64, 0xA3, 0x91, 0xE0, 0x31, 0xE4, -0x51, 0xE4, 0x11, 0x4B, 0x79, 0x17, 0x30, 0xF0, -0x20, 0x6C, 0x40, 0xF5, 0x12, 0x4B, 0x03, 0xF3, -0x90, 0x9C, 0x6C, 0x33, 0xAD, 0xE3, 0x64, 0xA3, -0x91, 0xE0, 0x31, 0xE4, 0x51, 0xE4, 0x0C, 0x4B, -0x6B, 0x17, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, -0x70, 0x9B, 0x0C, 0x6C, 0x6D, 0xE0, 0x2D, 0xE3, -0x4D, 0xE3, 0x80, 0xC3, 0x18, 0x97, 0x79, 0xA7, -0x03, 0x73, 0x00, 0xF1, 0x0F, 0x61, 0x7F, 0xA7, -0x1C, 0x6D, 0x9E, 0xA7, 0xFB, 0x65, 0xDF, 0x67, -0xB8, 0xEE, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF5, -0x12, 0x4C, 0x0F, 0x96, 0xA6, 0xF6, 0x00, 0x4B, -0x8C, 0x34, 0x71, 0xE4, 0x03, 0x4E, 0xCC, 0x36, -0xD9, 0xE7, 0xC3, 0xA6, 0x12, 0xED, 0x75, 0xE5, -0x64, 0xA4, 0x65, 0xF1, 0x98, 0xA5, 0xFF, 0x6D, -0x8D, 0xE3, 0x87, 0x43, 0x0F, 0x4C, 0x05, 0x4B, -0xAC, 0xEC, 0xAC, 0xEB, 0x04, 0x26, 0x05, 0x4C, -0x05, 0x4B, 0xAC, 0xEC, 0xAC, 0xEB, 0x30, 0xF0, -0x20, 0x6D, 0x23, 0xF2, 0xAC, 0x9D, 0x40, 0x6E, -0xCB, 0xEE, 0xB5, 0xE0, 0x35, 0xE5, 0x55, 0xE5, -0xC0, 0xC5, 0x30, 0xF0, 0x20, 0x6D, 0xC3, 0xF2, -0xB0, 0x9D, 0xB5, 0xE0, 0x35, 0xE5, 0x55, 0xE5, -0x80, 0xC5, 0x02, 0x4A, 0xFF, 0xF7, 0x1F, 0x6D, -0xAC, 0xEA, 0x10, 0xD3, 0x00, 0x6D, 0x14, 0x10, -0x30, 0xF0, 0x20, 0x6E, 0x65, 0xF1, 0xFC, 0x9F, -0x23, 0xF2, 0xCC, 0x9E, 0xCD, 0xE0, 0xF9, 0xE6, -0xB9, 0xE6, 0xE0, 0xA6, 0x2D, 0xE3, 0x4D, 0xE3, -0xFF, 0x6E, 0xAD, 0xE3, 0xEC, 0xEE, 0xC0, 0xC3, -0x01, 0x4D, 0xFF, 0xF7, 0x1F, 0x6E, 0xCC, 0xED, -0x1C, 0x6F, 0x7F, 0x67, 0xF8, 0xEB, 0x30, 0xF0, -0x20, 0x6E, 0xA6, 0xF6, 0x00, 0x4E, 0x12, 0xEF, -0xDD, 0xE7, 0x85, 0xF1, 0xC0, 0xAF, 0xC3, 0xED, -0xDF, 0x61, 0xC9, 0xE2, 0x30, 0xF0, 0x20, 0x6E, -0x03, 0xF3, 0xF4, 0x9E, 0xFF, 0xF7, 0x1F, 0x6D, -0xAC, 0xEA, 0xFD, 0xE0, 0x3D, 0xE7, 0x40, 0x6E, -0x5D, 0xE7, 0xCB, 0xEE, 0x10, 0x93, 0xC0, 0xC7, -0x30, 0xF0, 0x20, 0x6F, 0x03, 0xF3, 0xF0, 0x9F, -0xFD, 0xE0, 0x3D, 0xE7, 0x5D, 0xE7, 0x60, 0xC7, -0x30, 0xF0, 0x20, 0x6F, 0x23, 0xF2, 0xEC, 0x9F, -0xFD, 0xE0, 0x3D, 0xE7, 0x5D, 0xE7, 0xC0, 0xC7, -0x30, 0xF0, 0x20, 0x6E, 0xC3, 0xF2, 0xD0, 0x9E, -0xD9, 0xE0, 0x39, 0xE6, 0x59, 0xE6, 0x02, 0x4A, -0x80, 0xC6, 0xAC, 0xEA, 0x00, 0x6C, 0x13, 0x10, -0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF2, 0xEC, 0x9E, -0xA1, 0x9D, 0xF9, 0xE0, 0xB5, 0xE7, 0x95, 0xE5, -0xE0, 0xA5, 0x39, 0xE6, 0x59, 0xE6, 0xFF, 0x6D, -0x99, 0xE6, 0xEC, 0xED, 0xA0, 0xC6, 0x01, 0x4C, -0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEC, 0x1C, 0x6D, -0xFF, 0x67, 0xB8, 0xEF, 0x30, 0xF0, 0x20, 0x6E, -0xA6, 0xF6, 0x00, 0x4E, 0x12, 0xED, 0xD5, 0xE5, -0x85, 0xF1, 0xAC, 0xA5, 0x40, 0xF5, 0x15, 0x4D, -0xAC, 0x35, 0xD5, 0xE5, 0xC4, 0xAD, 0xC3, 0xEC, -0xDB, 0x61, 0xFF, 0xF7, 0x1F, 0x6C, 0xC9, 0xE2, -0x8C, 0xEA, 0x00, 0x6C, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x6E, 0x23, 0xF2, 0xEC, 0x9E, 0x85, 0xF1, -0xA4, 0x9D, 0xF9, 0xE0, 0xB5, 0xE7, 0x95, 0xE5, -0xE0, 0xA5, 0x39, 0xE6, 0x59, 0xE6, 0xFF, 0x6D, -0x99, 0xE6, 0xEC, 0xED, 0xA0, 0xC6, 0x01, 0x4C, -0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEC, 0x1C, 0x6D, -0xFF, 0x67, 0xB8, 0xEF, 0x30, 0xF0, 0x20, 0x6E, -0xA6, 0xF6, 0x00, 0x4E, 0x12, 0xED, 0xD5, 0xE5, -0x85, 0xF1, 0xC8, 0xAD, 0xC3, 0xEC, 0xDF, 0x61, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xAC, 0x9D, -0xC9, 0xE2, 0xFF, 0xF7, 0x1F, 0x6C, 0xB5, 0xE0, -0x8C, 0xEA, 0x35, 0xE5, 0x40, 0x6E, 0x55, 0xE5, -0xCB, 0xEE, 0xC0, 0xC5, 0x30, 0xF0, 0x20, 0x6D, -0xC3, 0xF2, 0xB0, 0x9D, 0xB5, 0xE0, 0x35, 0xE5, -0x55, 0xE5, 0x02, 0x4A, 0x60, 0xC5, 0x8C, 0xEA, -0x00, 0x6B, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x6D, -0x23, 0xF2, 0xCC, 0x9D, 0xE5, 0xF2, 0x98, 0x9C, -0xD5, 0xE0, 0x91, 0xE6, 0x71, 0xE4, 0xC0, 0xA4, -0x35, 0xE5, 0x55, 0xE5, 0xFF, 0x6C, 0x75, 0xE5, -0xCC, 0xEC, 0x80, 0xC5, 0x01, 0x4B, 0xFF, 0xF7, -0x1F, 0x6C, 0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, -0xA6, 0xF6, 0x00, 0x4C, 0xE5, 0xF2, 0xBC, 0xAC, -0xA3, 0xEB, 0xE4, 0x61, 0xA9, 0xE2, 0xFF, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF3, 0xD8, 0x9B, 0x0E, 0x93, 0xFF, 0xF7, -0x1F, 0x6C, 0x08, 0x4A, 0x8C, 0xEA, 0xD9, 0xE0, -0x42, 0x35, 0x79, 0xE6, 0xA0, 0xC6, 0x30, 0xF0, -0x20, 0x6E, 0x03, 0xF3, 0xDC, 0x9E, 0x0E, 0x97, -0xFF, 0x6B, 0xD9, 0xE0, 0x4C, 0xEB, 0xF9, 0xE6, -0x60, 0xC6, 0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF3, -0xC0, 0x9E, 0x28, 0x4A, 0x8C, 0xEA, 0xD9, 0xE0, -0xF9, 0xE6, 0xA0, 0xC6, 0x30, 0xF0, 0x20, 0x6D, -0x23, 0xF3, 0xA4, 0x9D, 0xB5, 0xE0, 0xF5, 0xE5, -0x60, 0xC5, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, -0x68, 0x9B, 0x11, 0x6D, 0x6D, 0xE0, 0xED, 0xE3, -0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF3, -0x6C, 0x9B, 0x01, 0x6D, 0xAB, 0xED, 0x6D, 0xE0, -0xED, 0xE3, 0xA0, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF2, 0xAC, 0x9B, 0x67, 0x67, 0x08, 0x4B, -0x6D, 0xE2, 0x8C, 0xEB, 0xB5, 0xE0, 0x60, 0xCD, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x94, 0x9B, -0x00, 0x6B, 0x91, 0xE0, 0xF1, 0xE4, 0x30, 0xF0, -0x20, 0x6D, 0xA6, 0xF6, 0x00, 0x4D, 0x75, 0xE5, -0xC5, 0xF0, 0xBE, 0xA5, 0xC8, 0x44, 0xF8, 0x4E, -0xA0, 0xC6, 0x0F, 0x95, 0x18, 0x96, 0x03, 0x4D, -0xAC, 0x35, 0xB5, 0xE6, 0xA2, 0xA5, 0x05, 0x25, -0xFD, 0x67, 0x75, 0xE7, 0x20, 0xF0, 0xA8, 0xA5, -0x03, 0x10, 0x16, 0x96, 0x75, 0xE6, 0xA0, 0xA5, -0x01, 0x4B, 0x10, 0x69, 0x6E, 0xE9, 0xA0, 0xC4, -0x01, 0x4C, 0xE1, 0x29, 0xD8, 0x4A, 0x10, 0xD2, -0x10, 0x97, 0xFF, 0xF7, 0x1F, 0x6A, 0x0E, 0x93, -0x4C, 0xEF, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, -0x50, 0x9A, 0x10, 0xD7, 0xE2, 0x34, 0x49, 0xE0, -0x69, 0xE2, 0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF3, 0x54, 0x9A, 0x49, 0xE0, 0x69, 0xE2, -0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, -0x78, 0x9A, 0x0E, 0x95, 0xFF, 0x6A, 0x6D, 0xE0, -0xAD, 0xE3, 0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF3, 0x7C, 0x9B, 0xEC, 0xEA, 0x12, 0x6C, -0x6D, 0xE0, 0xAD, 0xE3, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF3, 0x40, 0x9A, 0x11, 0x6B, -0x49, 0xE0, 0xA9, 0xE2, 0x20, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF3, 0x44, 0x9A, 0x49, 0xE0, -0xA9, 0xE2, 0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF3, 0x48, 0x9A, 0x49, 0xE0, 0xA9, 0xE2, -0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, -0x4C, 0x9A, 0x49, 0xE0, 0xA9, 0xE2, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x74, 0x9A, -0x0E, 0x97, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xF0, -0xD2, 0xA2, 0xA7, 0x40, 0x31, 0x4D, 0xF5, 0xE5, -0x40, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x50, 0x9A, 0x0E, 0x93, 0x49, 0xE0, 0x69, 0xE2, -0x60, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF3, 0x50, 0x9A, 0x0E, 0x94, 0x49, 0xE0, -0x89, 0xE2, 0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF3, 0x54, 0x9A, 0x49, 0xE0, 0x89, 0xE2, -0x20, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, -0x58, 0x9A, 0x49, 0xE0, 0x89, 0xE2, 0x20, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x6C, 0x9A, -0x00, 0x6A, 0x6D, 0xE0, 0x8D, 0xE3, 0x30, 0xF0, -0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, 0x51, 0xE4, -0xC5, 0xF0, 0x9E, 0xA4, 0xA8, 0x43, 0xF8, 0x4D, -0x80, 0xC5, 0x0F, 0x94, 0x18, 0x96, 0x03, 0x4C, -0x8C, 0x34, 0x91, 0xE6, 0x82, 0xA4, 0x05, 0x24, -0xFD, 0x67, 0x51, 0xE7, 0x20, 0xF0, 0x88, 0xA4, -0x03, 0x10, 0x16, 0x95, 0x51, 0xE5, 0x80, 0xA4, -0x01, 0x4A, 0x10, 0x72, 0x80, 0xC3, 0x01, 0x4B, -0xE2, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, -0x60, 0x9A, 0x0E, 0x96, 0x10, 0x97, 0x6D, 0xE0, -0xCD, 0xE3, 0xE2, 0x34, 0x80, 0xC3, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF3, 0x64, 0x9B, 0xFF, 0x6A, -0xEC, 0xEA, 0x6D, 0xE0, 0xCD, 0xE3, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x48, 0x9A, -0x11, 0x6B, 0x49, 0xE0, 0xC9, 0xE2, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x4C, 0x9A, -0x41, 0xE0, 0x01, 0x6A, 0x4B, 0xEA, 0xC1, 0xE0, -0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0xE0, 0xF0, 0x7C, 0xA2, 0x02, 0x73, -0x05, 0x61, 0x00, 0xF1, 0x84, 0xA2, 0x0E, 0x95, -0x80, 0x18, 0x1D, 0x0A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF3, 0x7C, 0x9A, 0xFF, 0x6C, 0x80, 0x6D, -0x40, 0xA3, 0xAB, 0xED, 0x59, 0x6E, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x11, 0x95, 0xA0, 0xF2, 0x50, 0x9A, -0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x15, 0x97, -0x14, 0x91, 0x13, 0x90, 0x0B, 0x63, 0x00, 0xEF, -0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, -0x1A, 0x92, 0x16, 0xD4, 0x17, 0xD5, 0x0F, 0xD2, -0x0F, 0x93, 0xFF, 0x6A, 0x18, 0xD6, 0x4C, 0xEB, -0x0F, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF5, -0x8C, 0x9B, 0x02, 0xF5, 0x0C, 0x4B, 0x62, 0xAB, -0x07, 0xD4, 0x9D, 0x67, 0x70, 0xCC, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF5, 0x68, 0x9B, 0xBD, 0x67, -0x4C, 0xEF, 0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF5, 0x80, 0x9B, 0x02, 0xF5, 0x00, 0x4B, -0x64, 0xA3, 0x05, 0xD4, 0x0D, 0xD7, 0x78, 0xC5, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0x98, 0x9B, -0xE2, 0xF4, 0x18, 0x4B, 0x09, 0xD4, 0x82, 0xAB, -0x66, 0xA3, 0x94, 0xCD, 0x20, 0xF0, 0x6A, 0xC5, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0x70, 0x9B, -0x60, 0xA3, 0x6C, 0xEA, 0x10, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x58, 0x9A, 0x02, 0xF0, -0x00, 0x6B, 0x40, 0x9A, 0x6C, 0xEA, 0x1C, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, -0x00, 0x6C, 0xFF, 0x6D, 0x57, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, -0x00, 0x68, 0x40, 0xEA, 0x01, 0x72, 0x19, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x54, 0x9A, 0x0C, 0xF0, 0x91, 0xA3, -0x01, 0x6D, 0x18, 0x6E, 0xF0, 0x67, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x54, 0x9A, 0x0C, 0xF0, 0x91, 0xA3, -0x01, 0x6D, 0x18, 0x6E, 0x00, 0x6F, 0x40, 0xEA, -0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x54, 0x9A, 0xFF, 0x6F, 0x49, 0xE0, 0x80, 0xA2, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x50, 0x9A, -0xEC, 0xEC, 0x49, 0xE0, 0xA0, 0xA2, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x5C, 0x9A, 0xEC, 0xED, -0x49, 0xE0, 0xC0, 0xA2, 0xEC, 0xEE, 0x80, 0x18, -0xC3, 0x06, 0x0F, 0x95, 0x22, 0x67, 0x87, 0x40, -0x0E, 0xD2, 0x54, 0x49, 0xFF, 0x6A, 0x29, 0x4C, -0x4C, 0xE9, 0x80, 0x18, 0x79, 0x0D, 0x0D, 0x92, -0x18, 0x93, 0x03, 0x4A, 0x4C, 0x32, 0x49, 0xE3, -0x42, 0xA2, 0x0C, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, 0x48, 0x9A, -0x03, 0xF3, 0x80, 0x9C, 0x17, 0x93, 0x49, 0xE0, -0x91, 0xE0, 0x1E, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF2, 0x68, 0x9B, 0x07, 0x02, 0x20, 0xF0, -0x02, 0x04, 0x6D, 0xE0, 0xA0, 0xA2, 0x01, 0x4A, -0x8A, 0xEA, 0xA0, 0xC3, 0x01, 0x4B, 0xFA, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, 0x74, 0x9B, -0x0E, 0x94, 0x04, 0x02, 0x6D, 0xE0, 0x8D, 0xE3, -0x05, 0x04, 0xA0, 0xA2, 0x01, 0x4A, 0x8A, 0xEA, -0xA0, 0xC3, 0x01, 0x4B, 0xFA, 0x61, 0x1A, 0x10, -0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, -0x8A, 0xEA, 0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, 0x54, 0x9A, -0x63, 0xF3, 0x80, 0x9C, 0x0E, 0x95, 0x16, 0x93, -0x49, 0xE0, 0x91, 0xE0, 0xA9, 0xE2, 0xB1, 0xE4, -0xA0, 0xA3, 0x01, 0x4B, 0xA0, 0xC2, 0x01, 0x4A, -0x8A, 0xEA, 0xFA, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA5, 0xF0, 0x6A, 0xAA, -0x01, 0x4B, 0xA5, 0xF0, 0x6A, 0xCA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF3, 0x60, 0x9B, 0x0E, 0x96, -0xA5, 0xF0, 0x8A, 0xAA, 0x6D, 0xE0, 0xCD, 0xE3, -0x82, 0x34, 0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF3, 0x64, 0x9B, 0xA5, 0xF0, 0x8A, 0xA2, -0x6D, 0xE0, 0xCD, 0xE3, 0x80, 0xC3, 0xE0, 0xF0, -0x7C, 0xA2, 0x02, 0x73, 0x05, 0x61, 0x00, 0xF1, -0x84, 0xA2, 0x0E, 0x95, 0x80, 0x18, 0x1D, 0x0A, -0x18, 0x97, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, -0x4C, 0x9A, 0x75, 0xA7, 0x49, 0xE0, 0x29, 0xE2, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, -0x50, 0x9A, 0x76, 0xA7, 0x49, 0xE0, 0x29, 0xE2, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x44, 0x9A, 0x01, 0x6B, 0x49, 0xE0, 0x29, 0xE2, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF3, -0x48, 0x9A, 0x79, 0xA7, 0x49, 0xE0, 0x29, 0xE2, -0x60, 0xC2, 0x0D, 0x92, 0x03, 0x4A, 0x4C, 0x32, -0x49, 0xE7, 0x67, 0xA2, 0xE6, 0xA2, 0xC8, 0xA2, -0x44, 0xA2, 0xFB, 0x65, 0x57, 0x2A, 0x0D, 0x94, -0x18, 0x95, 0x8C, 0x32, 0x49, 0xE5, 0x5D, 0xA2, -0x01, 0x72, 0x02, 0x61, 0x00, 0x6B, 0x1A, 0x10, -0x1C, 0x72, 0x4C, 0x61, 0xFB, 0x17, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0xAC, 0x9A, 0x85, 0xF1, -0x44, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF2, -0x8C, 0x9C, 0xB5, 0xE0, 0x35, 0xE5, 0x49, 0xE4, -0x69, 0xE2, 0x80, 0xA2, 0xFF, 0x6A, 0x75, 0xE5, -0x8C, 0xEA, 0x40, 0xC5, 0x01, 0x4B, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xEB, 0x1C, 0x6C, 0x98, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x12, 0xEC, 0x51, 0xE4, 0x85, 0xF1, 0x48, 0xAC, -0x43, 0xEB, 0xDD, 0x61, 0xFF, 0xF7, 0x1F, 0x6B, -0x0C, 0x4A, 0x6C, 0xEA, 0x7D, 0x67, 0x20, 0xF0, -0x84, 0xA3, 0x00, 0x6B, 0x02, 0x4C, 0x13, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xAC, 0x9D, -0xB5, 0xE2, 0x15, 0xE5, 0x35, 0xE5, 0x75, 0xE5, -0x0C, 0xD5, 0xBD, 0x67, 0x75, 0xE5, 0x20, 0xF0, -0xC4, 0xA5, 0x0C, 0x95, 0x01, 0x4B, 0xC0, 0xC5, -0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEB, 0x82, 0xEB, -0xEB, 0x61, 0xDD, 0x67, 0x20, 0xF0, 0x64, 0xA6, -0x69, 0xE2, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, -0x02, 0x4A, 0x76, 0x10, 0xFF, 0x77, 0x00, 0x6B, -0x0C, 0x6A, 0x17, 0x61, 0x4B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF3, 0xAC, 0x9A, 0x40, 0x9C, -0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF2, 0x8C, 0x9C, -0xB5, 0xE0, 0x35, 0xE5, 0x49, 0xE4, 0x69, 0xE2, -0x80, 0xA2, 0xFF, 0x6A, 0x75, 0xE5, 0x8C, 0xEA, -0x40, 0xC5, 0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x50, 0xF5, -0x82, 0x47, 0xA6, 0xF6, 0x00, 0x4A, 0x8C, 0x34, -0x51, 0xE4, 0x42, 0xAC, 0x43, 0xEB, 0xDF, 0x61, -0xFF, 0xF7, 0x1F, 0x6B, 0x0C, 0x4A, 0x6C, 0xEA, -0x0D, 0x93, 0x18, 0x94, 0x03, 0x4B, 0x6C, 0x33, -0x6D, 0xE4, 0x63, 0xA3, 0x1F, 0x23, 0xBD, 0x67, -0x94, 0xA5, 0x00, 0x6B, 0x01, 0x4C, 0x10, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xAC, 0x9D, -0xDD, 0x67, 0x79, 0xE6, 0xB5, 0xE2, 0x15, 0xE5, -0xD4, 0xA6, 0x35, 0xE5, 0x75, 0xE5, 0xC0, 0xC5, -0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEB, -0x82, 0xEB, 0xEE, 0x61, 0x9D, 0x67, 0x74, 0xA4, -0x69, 0xE2, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, -0x01, 0x4A, 0x6C, 0xEA, 0x00, 0x6B, 0x14, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xCC, 0x9D, -0x65, 0xF1, 0x94, 0x9C, 0xD5, 0xE0, 0x91, 0xE6, -0x71, 0xE4, 0xC0, 0xA4, 0x35, 0xE5, 0x55, 0xE5, -0xFF, 0x6C, 0x75, 0xE5, 0xCC, 0xEC, 0x80, 0xC5, -0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEB, -0x1C, 0x6C, 0xDF, 0x67, 0x98, 0xEE, 0x30, 0xF0, -0x20, 0x6D, 0xA6, 0xF6, 0x00, 0x4D, 0x12, 0xEC, -0xB1, 0xE4, 0x65, 0xF1, 0xB8, 0xAC, 0xA3, 0xEB, -0xDF, 0x61, 0xA9, 0xE2, 0xFF, 0xF7, 0x1F, 0x6B, -0x6C, 0xEA, 0x0D, 0x93, 0x18, 0x94, 0x03, 0x4B, -0x6C, 0x33, 0x6D, 0xE4, 0x64, 0xA3, 0x25, 0x2B, -0x0D, 0x95, 0xAC, 0x33, 0x6D, 0xE4, 0x7D, 0xA3, -0x01, 0x73, 0x00, 0x6B, 0x1E, 0x61, 0x14, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xCC, 0x9D, -0xE5, 0xF2, 0x90, 0x9C, 0xD5, 0xE0, 0x91, 0xE6, -0x71, 0xE4, 0xC0, 0xA4, 0x35, 0xE5, 0x55, 0xE5, -0xFF, 0x6C, 0x75, 0xE5, 0xCC, 0xEC, 0x80, 0xC5, -0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, -0xE5, 0xF2, 0xB4, 0xAC, 0xA3, 0xEB, 0xE4, 0x61, -0xC6, 0x10, 0x0D, 0x93, 0x18, 0x96, 0x03, 0x4B, -0x6C, 0x33, 0x6D, 0xE6, 0x64, 0xA3, 0x25, 0x2B, -0x0D, 0x94, 0x8C, 0x33, 0x6D, 0xE6, 0x7D, 0xA3, -0x1C, 0x73, 0x00, 0x6B, 0x1E, 0x61, 0x14, 0x10, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xCC, 0x9D, -0xE5, 0xF2, 0x98, 0x9C, 0xD5, 0xE0, 0x91, 0xE6, -0x71, 0xE4, 0xC0, 0xA4, 0x35, 0xE5, 0x55, 0xE5, -0xFF, 0x6C, 0x75, 0xE5, 0xCC, 0xEC, 0x80, 0xC5, -0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, -0xE5, 0xF2, 0xBC, 0xAC, 0xA3, 0xEB, 0xE4, 0x61, -0x9A, 0x10, 0x0D, 0x93, 0x18, 0x95, 0x03, 0x4B, -0x6C, 0x33, 0x6D, 0xE5, 0x64, 0xA3, 0x5B, 0x2B, -0x0D, 0x96, 0xCC, 0x33, 0x6D, 0xE5, 0x7D, 0xA3, -0x21, 0x73, 0x00, 0x6B, 0x54, 0x61, 0x14, 0x10, -0x30, 0xF0, 0x20, 0x6C, 0x65, 0xF1, 0xBC, 0x9D, -0x23, 0xF2, 0x8C, 0x9C, 0x99, 0xE0, 0xB1, 0xE4, -0x71, 0xE4, 0xA0, 0xA4, 0x39, 0xE6, 0x59, 0xE6, -0xFF, 0x6C, 0x79, 0xE6, 0xAC, 0xEC, 0x80, 0xC6, -0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEB, -0x1C, 0x6D, 0xDF, 0x67, 0xB8, 0xEE, 0x30, 0xF0, -0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, 0x12, 0xED, -0x95, 0xE5, 0x85, 0xF1, 0xC0, 0xAD, 0xC3, 0xEB, -0xDF, 0x61, 0xC9, 0xE2, 0xFF, 0xF7, 0x1F, 0x6B, -0xFF, 0x77, 0x6C, 0xEA, 0xC0, 0xF0, 0x05, 0x60, -0x0D, 0x93, 0x18, 0x96, 0x03, 0x4B, 0x6C, 0x33, -0x6D, 0xE6, 0x63, 0xA3, 0x11, 0x23, 0x40, 0xF5, -0x12, 0x4F, 0x30, 0xF0, 0x20, 0x6B, 0xEC, 0x37, -0x03, 0xF3, 0x70, 0x9B, 0x91, 0xE7, 0x84, 0xA4, -0x65, 0xF1, 0xB8, 0xA5, 0x6D, 0xE0, 0x2D, 0xE3, -0xB1, 0xE4, 0x4D, 0xE3, 0x0A, 0x4C, 0x10, 0x10, -0x40, 0xF5, 0x12, 0x4F, 0x30, 0xF0, 0x20, 0x6B, -0xEC, 0x37, 0x03, 0xF3, 0x70, 0x9B, 0x91, 0xE7, -0x84, 0xA4, 0x65, 0xF1, 0xB8, 0xA5, 0x6D, 0xE0, -0x2D, 0xE3, 0xB1, 0xE4, 0x4D, 0xE3, 0x05, 0x4C, -0xFF, 0x6D, 0xAC, 0xEC, 0x99, 0x10, 0x0D, 0x93, -0x18, 0x94, 0x03, 0x4B, 0x6C, 0x33, 0x6D, 0xE4, -0x64, 0xA3, 0x36, 0x2B, 0x0D, 0x95, 0xAC, 0x33, -0x6D, 0xE4, 0x7D, 0xA3, 0x10, 0x73, 0x30, 0x61, -0x1C, 0x6C, 0xBF, 0x67, 0x98, 0xED, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0x12, 0xEC, -0x6D, 0xE4, 0x85, 0xF1, 0xEC, 0xA3, 0x00, 0x6B, -0x13, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, -0xCC, 0x9D, 0x81, 0x9C, 0xD5, 0xE0, 0x91, 0xE6, -0x71, 0xE4, 0xC0, 0xA4, 0x35, 0xE5, 0x55, 0xE5, -0xFF, 0x6C, 0x75, 0xE5, 0xCC, 0xEC, 0x80, 0xC5, -0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0x50, 0xF5, 0x85, 0x47, -0xA6, 0xF6, 0x00, 0x4D, 0x8C, 0x34, 0xB1, 0xE4, -0xA4, 0xAC, 0xA3, 0xEB, 0xE2, 0x61, 0xA9, 0xE2, -0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x5D, 0x10, -0x0D, 0x93, 0x18, 0x96, 0x03, 0x4B, 0x6C, 0x33, -0x6D, 0xE6, 0x64, 0xA3, 0x56, 0x2B, 0x0D, 0x94, -0x8C, 0x33, 0x6D, 0xE6, 0x7D, 0xA3, 0x0C, 0x73, -0x00, 0x6B, 0x4F, 0x61, 0x14, 0x10, 0x30, 0xF0, -0x20, 0x6D, 0x23, 0xF2, 0xCC, 0x9D, 0x05, 0xF3, -0x80, 0x9C, 0xD5, 0xE0, 0x91, 0xE6, 0x71, 0xE4, -0xC0, 0xA4, 0x35, 0xE5, 0x55, 0xE5, 0xFF, 0x6C, -0x75, 0xE5, 0xCC, 0xEC, 0x80, 0xC5, 0x01, 0x4B, -0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEB, 0x30, 0xF0, -0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, 0x05, 0xF3, -0xA4, 0xAC, 0xA3, 0xEB, 0xE4, 0x61, 0xA9, 0xE2, -0xFF, 0xF7, 0x1F, 0x6B, 0xFF, 0x77, 0x6C, 0xEA, -0x23, 0x60, 0x0D, 0x93, 0x18, 0x95, 0x03, 0x4B, -0x6C, 0x33, 0x6D, 0xE5, 0x63, 0xA3, 0x0E, 0x23, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF5, 0x12, 0x4F, -0x03, 0xF3, 0x70, 0x9B, 0xEC, 0x37, 0x91, 0xE7, -0x84, 0xA4, 0x6D, 0xE0, 0x2D, 0xE3, 0x4D, 0xE3, -0x11, 0x4C, 0x7A, 0x17, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF5, 0x12, 0x4F, 0x03, 0xF3, 0x70, 0x9B, -0xEC, 0x37, 0x91, 0xE7, 0x84, 0xA4, 0x6D, 0xE0, -0x2D, 0xE3, 0x4D, 0xE3, 0x0C, 0x4C, 0x6C, 0x17, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF3, 0x70, 0x9B, -0x0C, 0x6C, 0x6D, 0xE0, 0x2D, 0xE3, 0x4D, 0xE3, -0x80, 0xC3, 0x18, 0x96, 0x79, 0xA6, 0x03, 0x73, -0x00, 0xF1, 0x13, 0x61, 0xFF, 0xA6, 0x1C, 0x6D, -0x9E, 0xA6, 0xB8, 0xEF, 0x30, 0xF0, 0x20, 0x6B, -0x0D, 0x96, 0x40, 0xF5, 0x12, 0x4C, 0xA6, 0xF6, -0x00, 0x4B, 0x8C, 0x34, 0x71, 0xE4, 0xFF, 0x65, -0x18, 0x97, 0x03, 0x4E, 0xCC, 0x36, 0xD9, 0xE7, -0xC3, 0xA6, 0x12, 0xED, 0x75, 0xE5, 0x64, 0xA4, -0x65, 0xF1, 0x98, 0xA5, 0xFF, 0x6D, 0x8D, 0xE3, -0x87, 0x43, 0x0F, 0x4C, 0x05, 0x4B, 0xAC, 0xEC, -0xAC, 0xEB, 0x04, 0x26, 0x05, 0x4C, 0x05, 0x4B, -0xAC, 0xEC, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, -0x23, 0xF2, 0xAC, 0x9D, 0x40, 0x6E, 0xCB, 0xEE, -0xB5, 0xE0, 0x35, 0xE5, 0x55, 0xE5, 0xC0, 0xC5, -0x30, 0xF0, 0x20, 0x6D, 0xC3, 0xF2, 0xB0, 0x9D, -0xB5, 0xE0, 0x35, 0xE5, 0x55, 0xE5, 0x80, 0xC5, -0x02, 0x4A, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEA, -0x0D, 0xD3, 0x00, 0x6D, 0x18, 0x10, 0x30, 0xF0, -0x20, 0x6F, 0x23, 0xF2, 0xEC, 0x9F, 0x65, 0xF1, -0xDC, 0x9E, 0xED, 0xE0, 0x2D, 0xE3, 0x1F, 0x65, -0x5D, 0xE3, 0xAD, 0xE7, 0xF8, 0x67, 0xD9, 0xE7, -0xB9, 0xE6, 0xC0, 0xA6, 0x01, 0x4D, 0x1E, 0x65, -0xF8, 0x67, 0xFF, 0x6E, 0xEC, 0xEE, 0xC0, 0xC3, -0xFF, 0xF7, 0x1F, 0x6E, 0xCC, 0xED, 0x1C, 0x6B, -0xDF, 0x67, 0x78, 0xEE, 0x30, 0xF0, 0x20, 0x6F, -0xA6, 0xF6, 0x00, 0x4F, 0x12, 0xEB, 0xF9, 0xE3, -0x85, 0xF1, 0xE0, 0xAE, 0xE3, 0xED, 0xDB, 0x61, -0x30, 0xF0, 0x20, 0x6E, 0xE9, 0xE2, 0x03, 0xF3, -0xF4, 0x9E, 0xFF, 0xF7, 0x1F, 0x6D, 0xAC, 0xEA, -0xFD, 0xE0, 0x3D, 0xE7, 0x40, 0x6E, 0x5D, 0xE7, -0xCB, 0xEE, 0x0D, 0x93, 0xC0, 0xC7, 0x30, 0xF0, -0x20, 0x6F, 0x03, 0xF3, 0xF0, 0x9F, 0xFD, 0xE0, -0x3D, 0xE7, 0x5D, 0xE7, 0x60, 0xC7, 0x30, 0xF0, -0x20, 0x6F, 0x23, 0xF2, 0xEC, 0x9F, 0xFD, 0xE0, -0x3D, 0xE7, 0x5D, 0xE7, 0xC0, 0xC7, 0x30, 0xF0, -0x20, 0x6E, 0xC3, 0xF2, 0xD0, 0x9E, 0xD9, 0xE0, -0x39, 0xE6, 0x59, 0xE6, 0x02, 0x4A, 0x80, 0xC6, -0xAC, 0xEA, 0x00, 0x6C, 0x13, 0x10, 0x30, 0xF0, -0x20, 0x6E, 0x23, 0xF2, 0xEC, 0x9E, 0xA1, 0x9D, -0xF9, 0xE0, 0xB5, 0xE7, 0x95, 0xE5, 0xE0, 0xA5, -0x39, 0xE6, 0x59, 0xE6, 0xFF, 0x6D, 0x99, 0xE6, -0xEC, 0xED, 0xA0, 0xC6, 0x01, 0x4C, 0xFF, 0xF7, -0x1F, 0x6D, 0xAC, 0xEC, 0x1C, 0x6D, 0xFF, 0x67, -0xB8, 0xEF, 0x30, 0xF0, 0x20, 0x6E, 0xA6, 0xF6, -0x00, 0x4E, 0x12, 0xED, 0xD5, 0xE5, 0x85, 0xF1, -0xAC, 0xA5, 0x40, 0xF5, 0x15, 0x4D, 0xAC, 0x35, -0xD5, 0xE5, 0xE4, 0xAD, 0xE3, 0xEC, 0xDB, 0x61, -0xFF, 0xF7, 0x1F, 0x6C, 0xE9, 0xE2, 0x8C, 0xEA, -0x00, 0x6C, 0x14, 0x10, 0x30, 0xF0, 0x20, 0x6D, -0x85, 0xF1, 0xC4, 0x9E, 0x23, 0xF2, 0xAC, 0x9D, -0xBD, 0xE0, 0xD5, 0xE5, 0x95, 0xE5, 0xC0, 0xA5, -0x3D, 0xE7, 0x5D, 0xE7, 0xFF, 0x6D, 0x9D, 0xE7, -0xCC, 0xED, 0xA0, 0xC7, 0x01, 0x4C, 0xFF, 0xF7, -0x1F, 0x6D, 0xAC, 0xEC, 0x1C, 0x6E, 0xFF, 0x67, -0xD8, 0xEF, 0x30, 0xF0, 0x20, 0x6D, 0xA6, 0xF6, -0x00, 0x4D, 0x12, 0xEE, 0xB9, 0xE6, 0x85, 0xF1, -0xA8, 0xAE, 0xA3, 0xEC, 0xDF, 0x61, 0xA9, 0xE2, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF2, 0xAC, 0x9D, -0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEA, 0xB5, 0xE0, -0x35, 0xE5, 0x40, 0x6E, 0x55, 0xE5, 0xCB, 0xEE, -0xC0, 0xC5, 0x30, 0xF0, 0x20, 0x6D, 0xC3, 0xF2, -0xB0, 0x9D, 0xB5, 0xE0, 0x35, 0xE5, 0x55, 0xE5, -0x02, 0x4A, 0x60, 0xC5, 0x8C, 0xEA, 0x00, 0x6B, -0x14, 0x10, 0x30, 0xF0, 0x20, 0x6D, 0xE5, 0xF2, -0x90, 0x9C, 0x23, 0xF2, 0xAC, 0x9D, 0xB9, 0xE0, -0x95, 0xE5, 0x75, 0xE5, 0xA0, 0xA5, 0x39, 0xE6, -0x59, 0xE6, 0xFF, 0x6C, 0x79, 0xE6, 0xAC, 0xEC, -0x80, 0xC6, 0x01, 0x4B, 0xFF, 0xF7, 0x1F, 0x6C, -0x8C, 0xEB, 0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF6, -0x00, 0x4C, 0xE5, 0xF2, 0xB4, 0xAC, 0xA3, 0xEB, -0xE4, 0x61, 0xA9, 0xE2, 0xFF, 0xF7, 0x1F, 0x6B, -0x6C, 0xEA, 0x27, 0x42, 0x01, 0x49, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x4C, 0x9A, 0x0E, 0x93, 0x30, 0xF0, -0x20, 0x6D, 0x49, 0xE0, 0x69, 0xE2, 0x22, 0x33, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, -0x44, 0x9A, 0x0E, 0x94, 0xFF, 0x6B, 0x49, 0xE0, -0x2C, 0xEB, 0x89, 0xE2, 0xA6, 0xF6, 0x00, 0x4D, -0x60, 0xC2, 0x0C, 0xD5, 0x47, 0x40, 0x0C, 0x97, -0x31, 0x4A, 0x89, 0xE2, 0x0D, 0xD2, 0x30, 0xF0, -0x20, 0x6E, 0x20, 0xF4, 0x54, 0x9E, 0x0D, 0x95, -0x65, 0xF1, 0xD1, 0xA7, 0x11, 0x6C, 0x14, 0x49, -0x40, 0xEA, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, 0x74, 0x9A, -0x0E, 0x94, 0xFF, 0x6D, 0x6D, 0xE0, 0x22, 0x32, -0x8D, 0xE3, 0xAC, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF3, 0x58, 0x9A, 0x65, 0x67, -0x2C, 0xEB, 0x49, 0xE0, 0x89, 0xE2, 0x60, 0xC2, -0x0C, 0x97, 0x30, 0xF0, 0x20, 0x6E, 0x20, 0xF4, -0x54, 0x9E, 0x0D, 0x95, 0x65, 0xF1, 0xD1, 0xA7, -0x00, 0x6C, 0x40, 0xEA, 0x0E, 0x92, 0xFF, 0x6C, -0xFF, 0x6D, 0x08, 0x4A, 0x45, 0xE1, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x4C, 0x9A, 0x58, 0x6E, 0x41, 0xE0, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF3, 0x7C, 0x9A, -0x20, 0xC8, 0x40, 0xA3, 0x8C, 0xEA, 0x9F, 0xF6, -0x01, 0x4C, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x10, 0x95, 0xA0, 0xF2, -0x50, 0x9A, 0x00, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, -0x15, 0x97, 0x14, 0x91, 0x13, 0x90, 0x0B, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xD2, 0x63, 0x5B, 0x62, -0x5A, 0xD1, 0x59, 0xD0, 0x00, 0x6A, 0x7D, 0x67, -0x5C, 0xD4, 0x5D, 0xD5, 0x06, 0xD2, 0x4E, 0xCB, -0x08, 0xD2, 0x09, 0xD2, 0x0A, 0xD2, 0x0B, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0xFF, 0x6E, 0x0C, 0x04, 0x00, 0x6D, 0x0B, 0x4E, -0x40, 0xEA, 0x5C, 0x90, 0x00, 0xF0, 0x1E, 0x04, -0x06, 0x01, 0x10, 0x48, 0x56, 0xD4, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x90, 0x67, -0x01, 0x48, 0x40, 0xEA, 0x40, 0xC1, 0x56, 0x92, -0x01, 0x49, 0x4A, 0xE9, 0xF4, 0x61, 0x5C, 0x91, -0x5D, 0x93, 0x08, 0x04, 0x10, 0x49, 0x0C, 0x02, -0x65, 0xE1, 0x50, 0xD4, 0x57, 0xD2, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, 0x91, 0x67, -0x01, 0x49, 0x40, 0xEA, 0x50, 0x93, 0x57, 0x94, -0x40, 0xC3, 0x01, 0x4B, 0x8A, 0xEB, 0x50, 0xD3, -0xF2, 0x61, 0x5C, 0x91, 0x5D, 0x92, 0xFF, 0xF7, -0x1F, 0x6B, 0x38, 0x49, 0x45, 0xE1, 0xC0, 0xF3, -0x40, 0x98, 0x6C, 0xE9, 0x91, 0x67, 0x40, 0xEA, -0x9D, 0x67, 0x40, 0xF0, 0x45, 0xC4, 0xC0, 0xF3, -0x40, 0x98, 0x81, 0x41, 0x40, 0xEA, 0x7D, 0x67, -0x40, 0xF0, 0x45, 0xC3, 0xC0, 0xF3, 0x40, 0x98, -0x85, 0x41, 0x40, 0xEA, 0x9D, 0x67, 0x40, 0xF0, -0x48, 0xC4, 0xC0, 0xF3, 0x40, 0x98, 0x87, 0x41, -0x04, 0x4C, 0x40, 0xEA, 0x7D, 0x67, 0x40, 0xF0, -0x49, 0xC3, 0x0C, 0x49, 0x00, 0x6A, 0xFF, 0xF7, -0x1F, 0x6C, 0x8C, 0xE9, 0x54, 0xD2, 0x52, 0xD2, -0xBB, 0x11, 0x9D, 0x67, 0x40, 0xF0, 0x07, 0xA4, -0x40, 0xF0, 0x0A, 0x02, 0x00, 0x6D, 0x0C, 0x30, -0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x48, 0x9A, 0x90, 0x67, 0x08, 0x6E, 0x40, 0xEA, -0x01, 0x6A, 0x4B, 0xEA, 0x47, 0xC0, 0x44, 0xC0, -0x45, 0xC0, 0x46, 0xC0, 0x00, 0x6A, 0x50, 0xD2, -0x55, 0xD2, 0x9D, 0x67, 0x20, 0xF0, 0x50, 0xA4, -0x26, 0x22, 0x50, 0x92, 0x24, 0x2A, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, 0x91, 0x67, -0x40, 0xEA, 0xC0, 0x72, 0x1C, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, 0x81, 0x41, -0x40, 0xEA, 0x0C, 0x72, 0x14, 0x61, 0x7D, 0x67, -0x40, 0xF0, 0x51, 0xA3, 0x02, 0x49, 0x01, 0x6C, -0x47, 0xC0, 0x40, 0xF0, 0x4E, 0xA3, 0x44, 0xC0, -0x40, 0xF0, 0x4F, 0xA3, 0x45, 0xC0, 0x40, 0xF0, -0x50, 0xA3, 0x46, 0xC0, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE9, 0x53, 0xD4, 0xB1, 0x10, 0x45, 0x80, -0x01, 0x4A, 0x80, 0xF0, 0x13, 0x2A, 0x55, 0x93, -0x51, 0xD2, 0x31, 0x23, 0x3C, 0x10, 0x91, 0x67, -0x00, 0x18, 0xA6, 0xD3, 0x51, 0x93, 0x53, 0x94, -0x40, 0xF5, 0x12, 0x4B, 0x6C, 0x33, 0x8D, 0xE3, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF3, 0x88, 0x9C, -0xA0, 0x9B, 0xC2, 0xAB, 0x91, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, 0xB5, 0xE2, -0x00, 0x18, 0x38, 0xD4, 0x11, 0x2A, 0x5D, 0x67, -0x40, 0xF1, 0x64, 0x42, 0x40, 0xA3, 0x7D, 0x67, -0x40, 0xF1, 0x80, 0x43, 0x44, 0xC0, 0x60, 0xA4, -0x67, 0xC0, 0x52, 0x94, 0x16, 0x2C, 0x01, 0x6A, -0x7D, 0x67, 0x20, 0xF0, 0x50, 0xC3, 0x11, 0x10, -0x51, 0x92, 0x01, 0x4A, 0x51, 0xD2, 0x51, 0x93, -0xFF, 0x6A, 0x4C, 0xEB, 0x51, 0xD3, 0x30, 0xF0, -0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, 0xA5, 0xF2, -0x48, 0xA4, 0x51, 0x93, 0x53, 0xD4, 0x43, 0xEB, -0xC6, 0x61, 0x01, 0x6C, 0x55, 0xD4, 0x50, 0x92, -0x01, 0x72, 0x03, 0x60, 0x00, 0x6B, 0x51, 0xD3, -0x43, 0x10, 0x81, 0x41, 0x00, 0x18, 0xA6, 0xD3, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x88, 0x9B, -0x30, 0xF0, 0x20, 0x6D, 0xC4, 0xF1, 0x0C, 0x4D, -0x91, 0xE2, 0x04, 0x6E, 0x00, 0x18, 0x38, 0xD4, -0xED, 0x2A, 0x01, 0x6A, 0x41, 0xC0, 0x3A, 0x10, -0x91, 0x67, 0x00, 0x18, 0xA6, 0xD3, 0x51, 0x94, -0x1C, 0x6B, 0x78, 0xEC, 0x53, 0x94, 0x12, 0xEB, -0x8D, 0xE3, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF3, -0x88, 0x9C, 0x65, 0xF1, 0xB4, 0x9B, 0x65, 0xF1, -0xD8, 0xAB, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x4C, 0x9A, 0xB5, 0xE2, 0x00, 0x18, -0x38, 0xD4, 0x11, 0x2A, 0x5D, 0x67, 0x40, 0xF1, -0x64, 0x42, 0x40, 0xA3, 0x7D, 0x67, 0x40, 0xF1, -0x80, 0x43, 0x45, 0xC0, 0x60, 0xA4, 0x67, 0xC0, -0x52, 0x94, 0x14, 0x2C, 0x01, 0x6A, 0x7D, 0x67, -0x20, 0xF0, 0x50, 0xC3, 0x0F, 0x10, 0x51, 0x94, -0xFF, 0x6A, 0x01, 0x4C, 0x4C, 0xEC, 0x51, 0xD4, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x53, 0xD2, 0x51, 0x93, 0x85, 0xF2, 0x4C, 0xA2, -0x43, 0xEB, 0xC6, 0x61, 0x30, 0xF0, 0x20, 0x6C, -0xC0, 0xF3, 0x40, 0x9C, 0x91, 0x67, 0x40, 0xEA, -0x01, 0x4A, 0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6B, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, 0xC0, 0xF3, -0x40, 0x9B, 0x91, 0x67, 0x40, 0xEA, 0x06, 0x22, -0x50, 0x94, 0xFF, 0x6A, 0x01, 0x4C, 0x4C, 0xEC, -0x50, 0xD4, 0x27, 0x17, 0x00, 0x6A, 0x53, 0xD2, -0x45, 0x80, 0x01, 0x4A, 0x4C, 0x2A, 0x8B, 0x41, -0x00, 0x18, 0xA6, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x88, 0x9B, 0x30, 0xF0, 0x20, 0x6D, -0xC4, 0xF1, 0x14, 0x4D, 0x91, 0xE2, 0x05, 0x6E, -0x00, 0x18, 0x38, 0xD4, 0x00, 0x6B, 0x50, 0xD3, -0x31, 0x22, 0x39, 0x10, 0x50, 0x94, 0x1C, 0x6B, -0x78, 0xEC, 0x12, 0xEB, 0x49, 0xE3, 0x51, 0xD2, -0x85, 0xF1, 0x88, 0xAA, 0x93, 0xE1, 0xFA, 0x4C, -0x00, 0x18, 0xA6, 0xD3, 0x51, 0x94, 0x85, 0xF1, -0x64, 0x9C, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF3, -0x88, 0x9C, 0x91, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0xAC, 0x9A, 0x51, 0x92, 0x75, 0xE5, -0x85, 0xF1, 0xC8, 0xAA, 0x00, 0x18, 0x38, 0xD4, -0x0C, 0x2A, 0x7D, 0x67, 0x40, 0xF1, 0x80, 0x43, -0x60, 0xA4, 0x66, 0xC0, 0x52, 0x94, 0x13, 0x2C, -0x01, 0x6A, 0x7D, 0x67, 0x20, 0xF0, 0x50, 0xC3, -0x0E, 0x10, 0x50, 0x94, 0xFF, 0x6A, 0x01, 0x4C, -0x4C, 0xEC, 0x50, 0xD4, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x85, 0xF2, 0x6C, 0xA2, -0x50, 0x94, 0x63, 0xEC, 0xC7, 0x61, 0x53, 0x92, -0x04, 0x2A, 0x01, 0x49, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE9, 0x45, 0x80, 0x01, 0x4A, 0x03, 0x2A, -0x46, 0x80, 0x01, 0x4A, 0x5C, 0x22, 0x61, 0x41, -0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEB, 0x50, 0xD3, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, -0x91, 0x67, 0x40, 0xEA, 0x42, 0xC0, 0x50, 0x91, -0xFF, 0xF7, 0x1F, 0x6C, 0x30, 0xF0, 0x20, 0x6B, -0x01, 0x49, 0x8C, 0xE9, 0xC0, 0xF3, 0x40, 0x9B, -0x50, 0x94, 0x40, 0xEA, 0x43, 0xC0, 0x42, 0xA0, -0x06, 0x2A, 0x43, 0xA0, 0x01, 0x72, 0x03, 0x61, -0x46, 0x80, 0x01, 0x4A, 0x2B, 0x2A, 0x42, 0xA0, -0x06, 0x2A, 0x43, 0xA0, 0x1C, 0x72, 0x03, 0x61, -0x46, 0x80, 0x01, 0x4A, 0x23, 0x2A, 0x42, 0xA0, -0x11, 0x2A, 0x43, 0xA0, 0x0C, 0x72, 0x0E, 0x61, -0x45, 0x80, 0x01, 0x4A, 0x02, 0x22, 0x47, 0x80, -0x03, 0x22, 0x44, 0x80, 0x01, 0x4A, 0x06, 0x22, -0x54, 0x94, 0xFF, 0x6A, 0x01, 0x4C, 0x4C, 0xEC, -0x54, 0xD4, 0x10, 0x10, 0x42, 0xA0, 0x06, 0x2A, -0x43, 0xA0, 0x21, 0x72, 0x03, 0x61, 0x44, 0x80, -0x01, 0x4A, 0x08, 0x2A, 0x42, 0xA0, 0x15, 0x2A, -0x43, 0xA0, 0x10, 0x72, 0x12, 0x61, 0x44, 0x80, -0x01, 0x4A, 0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x40, 0x9A, 0x91, 0x67, 0x40, 0xEA, -0x01, 0x5A, 0x58, 0x67, 0x40, 0xC0, 0x7D, 0x67, -0x40, 0xF0, 0x47, 0xA3, 0x01, 0x4A, 0x40, 0xF0, -0x47, 0xC3, 0x02, 0x49, 0x09, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x90, 0x67, -0x00, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0x04, 0x49, -0x52, 0x94, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, -0x01, 0x4C, 0xFF, 0x6A, 0x4C, 0xEC, 0x52, 0xD4, -0x7D, 0x67, 0x40, 0xF0, 0x48, 0xA3, 0x52, 0x94, -0x43, 0xEC, 0x3F, 0xF6, 0x1E, 0x61, 0x40, 0xF0, -0x49, 0xA3, 0x01, 0x72, 0x15, 0x61, 0x54, 0x92, -0x01, 0x72, 0x12, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x40, 0x98, 0x81, 0x41, 0x40, 0xEA, -0x0F, 0x2A, 0xC0, 0xF3, 0x40, 0x98, 0x82, 0x41, -0x40, 0xEA, 0x29, 0x72, 0x09, 0x61, 0x03, 0x6A, -0x7D, 0x67, 0x40, 0xF0, 0x49, 0xC3, 0x04, 0x10, -0x00, 0x6A, 0x9D, 0x67, 0x40, 0xF0, 0x49, 0xC4, -0x7D, 0x67, 0x40, 0xF0, 0x47, 0xA3, 0x31, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF7, 0x6F, 0xA2, -0x08, 0x6A, 0x00, 0x68, 0x6C, 0xEA, 0x0C, 0x2A, -0x10, 0x10, 0x00, 0x6A, 0xF0, 0x67, 0x08, 0x04, -0x06, 0x05, 0x0C, 0x06, 0x04, 0xD2, 0x01, 0x48, -0x80, 0x18, 0x23, 0x40, 0xFF, 0x6A, 0x4C, 0xE8, -0x9D, 0x67, 0x40, 0xF0, 0x47, 0xA4, 0x43, 0xE8, -0xF0, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x20, 0xF1, 0x8F, 0xA2, 0x80, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xFF, 0x6C, 0x8C, 0xEB, -0x0C, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, -0x78, 0x9B, 0x2A, 0x6C, 0x80, 0xC3, 0x24, 0xF3, -0x84, 0xA2, 0x01, 0x6B, 0x8D, 0xEB, 0x24, 0xF3, -0x64, 0xC2, 0x7D, 0x67, 0x40, 0xF0, 0x47, 0xA3, -0x5B, 0x97, 0x5A, 0x91, 0x59, 0x90, 0x2E, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xD4, 0x63, 0x57, 0x62, -0x56, 0xD1, 0x55, 0xD0, 0x00, 0x6A, 0x7D, 0x67, -0x58, 0xD4, 0x59, 0xD5, 0x07, 0xD2, 0x50, 0xCB, -0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, -0x48, 0x9A, 0xFF, 0x6E, 0x09, 0x04, 0x00, 0x6D, -0x0B, 0x4E, 0x40, 0xEA, 0x58, 0x90, 0x20, 0xF0, -0x02, 0x04, 0x07, 0x01, 0x10, 0x48, 0x52, 0xD4, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, -0x90, 0x67, 0x01, 0x48, 0x40, 0xEA, 0x40, 0xC1, -0x52, 0x92, 0x01, 0x49, 0x4A, 0xE9, 0xF4, 0x61, -0x58, 0x91, 0x59, 0x93, 0x06, 0x04, 0x14, 0x49, -0x07, 0x02, 0x65, 0xE1, 0x4C, 0xD4, 0x53, 0xD2, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, -0x91, 0x67, 0x01, 0x49, 0x40, 0xEA, 0x4C, 0x93, -0x53, 0x94, 0x40, 0xC3, 0x01, 0x4B, 0x8A, 0xEB, -0x4C, 0xD3, 0xF2, 0x61, 0x58, 0x91, 0x59, 0x92, -0xFF, 0xF7, 0x1F, 0x6B, 0x24, 0x49, 0x45, 0xE1, -0xC0, 0xF3, 0x40, 0x98, 0x6C, 0xE9, 0x91, 0x67, -0x40, 0xEA, 0x9D, 0x67, 0x20, 0xF0, 0x59, 0xC4, -0xC0, 0xF3, 0x40, 0x98, 0x81, 0x41, 0x40, 0xEA, -0x7D, 0x67, 0x20, 0xF0, 0x59, 0xC3, 0xC0, 0xF3, -0x40, 0x98, 0x85, 0x41, 0x40, 0xEA, 0x9D, 0x67, -0x20, 0xF0, 0x5C, 0xC4, 0xC0, 0xF3, 0x40, 0x98, -0x87, 0x41, 0x04, 0x4C, 0x40, 0xEA, 0x7D, 0x67, -0x20, 0xF0, 0x5D, 0xC3, 0x0C, 0x49, 0x00, 0x6A, -0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xE9, 0x50, 0xD2, -0x4E, 0xD2, 0xBB, 0x11, 0x9D, 0x67, 0x20, 0xF0, -0x1B, 0xA4, 0x20, 0xF0, 0x1E, 0x02, 0x00, 0x6D, -0x0C, 0x30, 0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x48, 0x9A, 0x90, 0x67, 0x08, 0x6E, -0x40, 0xEA, 0x01, 0x6A, 0x4B, 0xEA, 0x47, 0xC0, -0x44, 0xC0, 0x45, 0xC0, 0x46, 0xC0, 0x00, 0x6A, -0x4C, 0xD2, 0x51, 0xD2, 0x9D, 0x67, 0x20, 0xF0, -0x44, 0xA4, 0x26, 0x22, 0x4C, 0x92, 0x24, 0x2A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, -0x91, 0x67, 0x40, 0xEA, 0xC0, 0x72, 0x1C, 0x61, -0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, -0x81, 0x41, 0x40, 0xEA, 0x0C, 0x72, 0x14, 0x61, -0x7D, 0x67, 0x40, 0xF0, 0x45, 0xA3, 0x02, 0x49, -0x01, 0x6C, 0x47, 0xC0, 0x40, 0xF0, 0x42, 0xA3, -0x44, 0xC0, 0x40, 0xF0, 0x43, 0xA3, 0x45, 0xC0, -0x40, 0xF0, 0x44, 0xA3, 0x46, 0xC0, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE9, 0x4F, 0xD4, 0xB1, 0x10, -0x45, 0x80, 0x01, 0x4A, 0x80, 0xF0, 0x13, 0x2A, -0x51, 0x93, 0x4D, 0xD2, 0x31, 0x23, 0x3C, 0x10, -0x91, 0x67, 0x00, 0x18, 0xA6, 0xD3, 0x4D, 0x93, -0x4F, 0x94, 0x40, 0xF5, 0x12, 0x4B, 0x6C, 0x33, -0x8D, 0xE3, 0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF3, -0x88, 0x9C, 0xA0, 0x9B, 0xC2, 0xAB, 0x91, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, -0xB5, 0xE2, 0x00, 0x18, 0x38, 0xD4, 0x11, 0x2A, -0x5D, 0x67, 0x30, 0xF1, 0x64, 0x42, 0x40, 0xA3, -0x7D, 0x67, 0x30, 0xF1, 0x80, 0x43, 0x44, 0xC0, -0x60, 0xA4, 0x67, 0xC0, 0x4E, 0x94, 0x16, 0x2C, -0x01, 0x6A, 0x7D, 0x67, 0x20, 0xF0, 0x44, 0xC3, -0x11, 0x10, 0x4D, 0x92, 0x01, 0x4A, 0x4D, 0xD2, -0x4D, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x4D, 0xD3, -0x30, 0xF0, 0x20, 0x6C, 0xA6, 0xF6, 0x00, 0x4C, -0xA5, 0xF2, 0x48, 0xA4, 0x4D, 0x93, 0x4F, 0xD4, -0x43, 0xEB, 0xC6, 0x61, 0x01, 0x6C, 0x51, 0xD4, -0x4C, 0x92, 0x01, 0x72, 0x03, 0x60, 0x00, 0x6B, -0x4D, 0xD3, 0x43, 0x10, 0x81, 0x41, 0x00, 0x18, -0xA6, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x88, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0xC4, 0xF1, -0x0C, 0x4D, 0x91, 0xE2, 0x04, 0x6E, 0x00, 0x18, -0x38, 0xD4, 0xED, 0x2A, 0x01, 0x6A, 0x41, 0xC0, -0x3A, 0x10, 0x91, 0x67, 0x00, 0x18, 0xA6, 0xD3, -0x4D, 0x94, 0x1C, 0x6B, 0x78, 0xEC, 0x4F, 0x94, -0x12, 0xEB, 0x8D, 0xE3, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF3, 0x88, 0x9C, 0x65, 0xF1, 0xB4, 0x9B, -0x65, 0xF1, 0xD8, 0xAB, 0x91, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, 0xB5, 0xE2, -0x00, 0x18, 0x38, 0xD4, 0x11, 0x2A, 0x5D, 0x67, -0x30, 0xF1, 0x64, 0x42, 0x40, 0xA3, 0x7D, 0x67, -0x30, 0xF1, 0x80, 0x43, 0x45, 0xC0, 0x60, 0xA4, -0x67, 0xC0, 0x4E, 0x94, 0x14, 0x2C, 0x01, 0x6A, -0x7D, 0x67, 0x20, 0xF0, 0x44, 0xC3, 0x0F, 0x10, -0x4D, 0x94, 0xFF, 0x6A, 0x01, 0x4C, 0x4C, 0xEC, -0x4D, 0xD4, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x4F, 0xD2, 0x4D, 0x93, 0x85, 0xF2, -0x4C, 0xA2, 0x43, 0xEB, 0xC6, 0x61, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF3, 0x40, 0x9C, 0x91, 0x67, -0x40, 0xEA, 0x01, 0x4A, 0x45, 0xE1, 0x30, 0xF0, -0x20, 0x6B, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE9, -0xC0, 0xF3, 0x40, 0x9B, 0x91, 0x67, 0x40, 0xEA, -0x06, 0x22, 0x4C, 0x94, 0xFF, 0x6A, 0x01, 0x4C, -0x4C, 0xEC, 0x4C, 0xD4, 0x27, 0x17, 0x00, 0x6A, -0x4F, 0xD2, 0x45, 0x80, 0x01, 0x4A, 0x4C, 0x2A, -0x8B, 0x41, 0x00, 0x18, 0xA6, 0xD3, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF3, 0x88, 0x9B, 0x30, 0xF0, -0x20, 0x6D, 0xC4, 0xF1, 0x14, 0x4D, 0x91, 0xE2, -0x05, 0x6E, 0x00, 0x18, 0x38, 0xD4, 0x00, 0x6B, -0x4C, 0xD3, 0x31, 0x22, 0x39, 0x10, 0x4C, 0x94, -0x1C, 0x6B, 0x78, 0xEC, 0x12, 0xEB, 0x49, 0xE3, -0x4D, 0xD2, 0x85, 0xF1, 0x88, 0xAA, 0x93, 0xE1, -0xFA, 0x4C, 0x00, 0x18, 0xA6, 0xD3, 0x4D, 0x94, -0x85, 0xF1, 0x64, 0x9C, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF3, 0x88, 0x9C, 0x91, 0xE2, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF2, 0xAC, 0x9A, 0x4D, 0x92, -0x75, 0xE5, 0x85, 0xF1, 0xC8, 0xAA, 0x00, 0x18, -0x38, 0xD4, 0x0C, 0x2A, 0x7D, 0x67, 0x30, 0xF1, -0x80, 0x43, 0x60, 0xA4, 0x66, 0xC0, 0x4E, 0x94, -0x13, 0x2C, 0x01, 0x6A, 0x7D, 0x67, 0x20, 0xF0, -0x44, 0xC3, 0x0E, 0x10, 0x4C, 0x94, 0xFF, 0x6A, -0x01, 0x4C, 0x4C, 0xEC, 0x4C, 0xD4, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x85, 0xF2, -0x6C, 0xA2, 0x4C, 0x94, 0x63, 0xEC, 0xC7, 0x61, -0x4F, 0x92, 0x04, 0x2A, 0x01, 0x49, 0xFF, 0xF7, -0x1F, 0x6A, 0x4C, 0xE9, 0x45, 0x80, 0x01, 0x4A, -0x03, 0x2A, 0x46, 0x80, 0x01, 0x4A, 0x5C, 0x22, -0x61, 0x41, 0xFF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEB, -0x4C, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x40, 0x9B, 0x91, 0x67, 0x40, 0xEA, 0x42, 0xC0, -0x4C, 0x91, 0xFF, 0xF7, 0x1F, 0x6C, 0x30, 0xF0, -0x20, 0x6B, 0x01, 0x49, 0x8C, 0xE9, 0xC0, 0xF3, -0x40, 0x9B, 0x4C, 0x94, 0x40, 0xEA, 0x43, 0xC0, -0x42, 0xA0, 0x06, 0x2A, 0x43, 0xA0, 0x01, 0x72, -0x03, 0x61, 0x46, 0x80, 0x01, 0x4A, 0x2B, 0x2A, -0x42, 0xA0, 0x06, 0x2A, 0x43, 0xA0, 0x1C, 0x72, -0x03, 0x61, 0x46, 0x80, 0x01, 0x4A, 0x23, 0x2A, -0x42, 0xA0, 0x11, 0x2A, 0x43, 0xA0, 0x0C, 0x72, -0x0E, 0x61, 0x45, 0x80, 0x01, 0x4A, 0x02, 0x22, -0x47, 0x80, 0x03, 0x22, 0x44, 0x80, 0x01, 0x4A, -0x06, 0x22, 0x50, 0x94, 0xFF, 0x6A, 0x01, 0x4C, -0x4C, 0xEC, 0x50, 0xD4, 0x10, 0x10, 0x42, 0xA0, -0x06, 0x2A, 0x43, 0xA0, 0x21, 0x72, 0x03, 0x61, -0x44, 0x80, 0x01, 0x4A, 0x08, 0x2A, 0x42, 0xA0, -0x15, 0x2A, 0x43, 0xA0, 0x10, 0x72, 0x12, 0x61, -0x44, 0x80, 0x01, 0x4A, 0x0F, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x91, 0x67, -0x40, 0xEA, 0x01, 0x5A, 0x58, 0x67, 0x40, 0xC0, -0x7D, 0x67, 0x20, 0xF0, 0x5B, 0xA3, 0x01, 0x4A, -0x20, 0xF0, 0x5B, 0xC3, 0x02, 0x49, 0x09, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x90, 0x67, 0x00, 0x6D, 0x08, 0x6E, 0x40, 0xEA, -0x04, 0x49, 0x4E, 0x94, 0xFF, 0xF7, 0x1F, 0x6A, -0x4C, 0xE9, 0x01, 0x4C, 0xFF, 0x6A, 0x4C, 0xEC, -0x4E, 0xD4, 0x7D, 0x67, 0x20, 0xF0, 0x5C, 0xA3, -0x4E, 0x94, 0x43, 0xEC, 0x3F, 0xF6, 0x1E, 0x61, -0x20, 0xF0, 0x5D, 0xA3, 0x01, 0x72, 0x15, 0x61, -0x50, 0x92, 0x01, 0x72, 0x12, 0x61, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, 0x81, 0x41, -0x40, 0xEA, 0x0F, 0x2A, 0xC0, 0xF3, 0x40, 0x98, -0x82, 0x41, 0x40, 0xEA, 0x29, 0x72, 0x09, 0x61, -0x03, 0x6A, 0x7D, 0x67, 0x20, 0xF0, 0x5D, 0xC3, -0x04, 0x10, 0x00, 0x6A, 0x9D, 0x67, 0x20, 0xF0, -0x5D, 0xC4, 0x7D, 0x67, 0x20, 0xF0, 0x5B, 0xA3, -0x2E, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF7, -0x6F, 0xA2, 0x04, 0x6A, 0x00, 0x68, 0x6C, 0xEA, -0x0C, 0x2A, 0x10, 0x10, 0x00, 0x6A, 0xF0, 0x67, -0x06, 0x04, 0x07, 0x05, 0x09, 0x06, 0x04, 0xD2, -0x01, 0x48, 0x80, 0x18, 0xDC, 0x42, 0xFF, 0x6A, -0x4C, 0xE8, 0x9D, 0x67, 0x20, 0xF0, 0x5B, 0xA4, -0x43, 0xE8, 0xF0, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x20, 0xF1, 0x8F, 0xA2, -0x40, 0x6B, 0x8C, 0xEB, 0x0C, 0x23, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF2, 0x78, 0x9B, 0x2A, 0x6C, -0x80, 0xC3, 0x24, 0xF3, 0x84, 0xA2, 0x01, 0x6B, -0x8D, 0xEB, 0x24, 0xF3, 0x64, 0xC2, 0x7D, 0x67, -0x20, 0xF0, 0x5B, 0xA3, 0x57, 0x97, 0x56, 0x91, -0x55, 0x90, 0x2C, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFF, 0x6A, 0x4C, 0xEE, 0x02, 0x76, 0x4C, 0xEC, -0x4C, 0xED, 0xEC, 0xEA, 0x07, 0x61, 0x83, 0xED, -0x01, 0x6B, 0x29, 0x61, 0xA3, 0xEC, 0x78, 0x67, -0x64, 0x33, 0x25, 0x10, 0x01, 0x76, 0x1F, 0x61, -0x18, 0x10, 0x01, 0x73, 0x04, 0x6A, 0x06, 0x61, -0x1D, 0x10, 0x02, 0x72, 0x06, 0x61, 0x01, 0x73, -0x04, 0x61, 0x13, 0x10, 0x02, 0x73, 0x06, 0x61, -0x14, 0x10, 0x02, 0x72, 0x03, 0x61, 0x02, 0x73, -0x03, 0x6A, 0x10, 0x60, 0x01, 0x73, 0x0A, 0x6A, -0x0D, 0x60, 0x02, 0x73, 0x09, 0x6A, 0x07, 0x61, -0x09, 0x10, 0x02, 0x72, 0x06, 0x60, 0x01, 0x72, -0x02, 0x61, 0x02, 0x6A, 0x20, 0xE8, 0x00, 0x6A, -0x20, 0xE8, 0x01, 0x6A, 0x20, 0xE8, 0x01, 0x72, -0xE0, 0x61, 0xDB, 0x17, 0xFF, 0x6B, 0x6C, 0xED, -0x03, 0x75, 0x6C, 0xEC, 0x6C, 0xEE, 0x17, 0x61, -0x03, 0x6A, 0x8C, 0xEA, 0x0C, 0x2A, 0x48, 0x44, -0xE4, 0x4A, 0x6C, 0xEA, 0x1D, 0x5A, 0x32, 0x6A, -0x4E, 0x61, 0x48, 0x44, 0xA4, 0x4A, 0x6C, 0xEA, -0x1D, 0x5A, 0x72, 0x6A, 0x3B, 0x10, 0x01, 0x72, -0x45, 0x61, 0x47, 0x44, 0x64, 0x4A, 0x6C, 0xEA, -0x1D, 0x5A, 0xA3, 0x6A, 0x33, 0x10, 0x02, 0x75, -0x33, 0x61, 0x0F, 0x5C, 0x07, 0x6A, 0x3B, 0x61, -0x03, 0x6A, 0x8C, 0xEA, 0x1E, 0x2A, 0x48, 0x44, -0xE4, 0x4A, 0x6C, 0xEA, 0x0D, 0x5A, 0x2A, 0x6A, -0x32, 0x61, 0x48, 0x44, 0xD4, 0x4A, 0x6C, 0xEA, -0x0D, 0x5A, 0x3A, 0x6A, 0x2C, 0x61, 0x48, 0x44, -0xA4, 0x4A, 0x6C, 0xEA, 0x0D, 0x5A, 0x6A, 0x6A, -0x26, 0x61, 0x48, 0x44, 0x94, 0x4A, 0x6C, 0xEA, -0x0D, 0x5A, 0x7A, 0x6A, 0x20, 0x61, 0x47, 0x44, -0x75, 0x4A, 0x6C, 0xEA, 0x0D, 0x5A, 0x8A, 0x6A, -0x0D, 0x10, 0x01, 0x72, 0x17, 0x61, 0x47, 0x44, -0x64, 0x4A, 0x6C, 0xEA, 0x0D, 0x5A, 0x9B, 0x6A, -0x12, 0x61, 0x47, 0x44, 0x54, 0x4A, 0x6C, 0xEA, -0x0D, 0x5A, 0xAB, 0x6A, 0x0C, 0x61, 0x0A, 0x10, -0x01, 0x75, 0x08, 0x61, 0x01, 0x76, 0x42, 0x44, -0x03, 0x60, 0x02, 0x76, 0x03, 0x61, 0x4E, 0x44, -0x6C, 0xEA, 0x20, 0xE8, 0x44, 0x67, 0x20, 0xE8, -0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x00, 0x6B, -0x33, 0x22, 0x02, 0x5A, 0x02, 0x61, 0x0F, 0x5C, -0x2C, 0x61, 0x6F, 0x44, 0xFF, 0x6A, 0x4C, 0xEB, -0x04, 0x5B, 0x01, 0x6B, 0x29, 0x61, 0x6B, 0x44, -0x4C, 0xEB, 0x05, 0x5B, 0x07, 0x60, 0x60, 0xA6, -0xFF, 0x4B, 0x4C, 0xEB, 0x02, 0x5B, 0x1F, 0x60, -0x60, 0xA6, 0x1E, 0x10, 0x68, 0x44, 0xFE, 0x4B, -0x4C, 0xEB, 0x04, 0x5B, 0x18, 0x61, 0x0E, 0x74, -0x14, 0x60, 0xDC, 0x4C, 0x4C, 0xEC, 0x8E, 0x5C, -0x10, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF5, -0x0C, 0x4A, 0x49, 0xE4, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xA2, 0xC2, 0xF5, 0x1C, 0x4B, 0x71, 0xE4, -0x60, 0xA4, 0x04, 0x22, 0x03, 0x26, 0x60, 0xC6, -0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x02, 0x6B, -0x01, 0x6A, 0xF8, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x00, 0x6B, 0x44, 0xF3, -0x74, 0xC2, 0x44, 0xF3, 0x75, 0xC2, 0x44, 0xF3, -0x76, 0xC2, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x24, 0x67, 0x00, 0x18, -0x96, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF7, -0x66, 0xA3, 0xFF, 0x68, 0x0C, 0xE9, 0x6D, 0xE2, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x4C, 0x9A, -0x7C, 0x33, 0x49, 0xE3, 0x40, 0xA2, 0x0C, 0xEA, -0x01, 0x72, 0x19, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF3, 0x54, 0x9A, 0x49, 0xE3, 0x40, 0xA2, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF3, -0x58, 0x9A, 0x4D, 0xE3, 0x09, 0x10, 0x80, 0xA3, -0xFF, 0x6A, 0xFF, 0x48, 0x4C, 0xEC, 0x4C, 0xE8, -0x51, 0x67, 0x8E, 0xEA, 0x01, 0x4B, 0x03, 0x22, -0xF6, 0x28, 0x00, 0x6A, 0x01, 0x10, 0x01, 0x6A, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x84, 0xF5, 0x59, 0xA0, -0x84, 0xF5, 0x3A, 0xA0, 0x04, 0xD2, 0x84, 0xF5, -0x5B, 0xA0, 0x04, 0x94, 0xB1, 0x67, 0xC2, 0x67, -0x05, 0xD2, 0x80, 0x18, 0xEB, 0x47, 0x04, 0x95, -0x05, 0x97, 0xD1, 0x67, 0x82, 0x67, 0x06, 0xD2, -0x80, 0x18, 0xD0, 0x47, 0x06, 0x94, 0xD1, 0x67, -0xA2, 0x67, 0x80, 0x18, 0x1F, 0x55, 0x01, 0x6A, -0x43, 0xF4, 0x59, 0xC0, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x36, 0xE5, 0x01, 0x6C, 0x08, 0x6D, 0x00, 0x18, +0x30, 0xC5, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0x4C, 0xEC, 0x07, 0x74, 0x4C, 0xED, +0x4C, 0xEE, 0x11, 0x60, 0x08, 0x5C, 0x05, 0x60, +0x02, 0x74, 0x2D, 0x60, 0x04, 0x74, 0x0B, 0x60, +0x28, 0x10, 0x14, 0x74, 0x05, 0x60, 0x17, 0x74, +0x03, 0x60, 0x08, 0x74, 0x15, 0x60, 0x21, 0x10, +0x00, 0xF2, 0x00, 0x6F, 0x01, 0x10, 0x00, 0x6F, +0x03, 0x6A, 0x10, 0xF0, 0x00, 0x6B, 0x6B, 0xEB, +0xAC, 0xEA, 0x6D, 0xEA, 0x07, 0x6B, 0x8C, 0xEB, +0x68, 0x33, 0x6D, 0xEA, 0xED, 0xEA, 0xFF, 0xF7, +0x1F, 0x6B, 0x6C, 0xEA, 0x0A, 0x2A, 0x0D, 0x10, +0x03, 0x6A, 0x0F, 0xF4, 0x00, 0x6B, 0x6B, 0xEB, +0xAC, 0xEA, 0x6D, 0xEA, 0xFF, 0xF7, 0x1F, 0x6B, +0x6C, 0xEA, 0x04, 0x26, 0x40, 0x6B, 0x6D, 0xEA, +0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x10, 0xF0, +0x08, 0x6A, 0xF7, 0x17, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0xE0, 0xF0, 0x5C, 0xA3, +0x14, 0x72, 0x12, 0x60, 0x07, 0x72, 0x10, 0x60, +0x17, 0x72, 0x0E, 0x60, 0xE0, 0xF0, 0x5D, 0xA3, +0x14, 0x72, 0x0A, 0x60, 0x07, 0x72, 0x08, 0x60, +0x17, 0x72, 0x06, 0x60, 0xE0, 0xF0, 0x7E, 0xA3, +0x00, 0x6A, 0x03, 0x23, 0x01, 0x6A, 0x20, 0xE8, +0x01, 0x6A, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x8C, 0xEA, 0x04, 0xD2, 0x08, 0x69, 0x00, 0x68, +0xFF, 0x6A, 0x0C, 0x34, 0x4C, 0xEC, 0x80, 0x18, +0x1C, 0x00, 0x10, 0xF0, 0x00, 0x6B, 0x6C, 0xEA, +0x0E, 0x2A, 0x04, 0x93, 0x00, 0xF2, 0x00, 0x4A, +0x6C, 0xEA, 0x12, 0x22, 0x3F, 0x70, 0x07, 0x60, +0x91, 0x67, 0x80, 0x18, 0x1C, 0x00, 0x10, 0xF0, +0x00, 0x6B, 0x6C, 0xEA, 0x09, 0x22, 0xFF, 0x6A, +0x01, 0x48, 0x4C, 0xE8, 0x08, 0x49, 0x40, 0x70, +0x4C, 0xE9, 0xE2, 0x61, 0x40, 0x6A, 0x01, 0x10, +0x50, 0x67, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x5D, 0x67, 0x94, 0xCA, +0x00, 0x68, 0x0C, 0x34, 0xFF, 0x69, 0x2C, 0xEC, +0x80, 0x18, 0x1C, 0x00, 0x0A, 0x04, 0x05, 0x05, +0x02, 0x6E, 0x05, 0xD2, 0x00, 0x18, 0x2D, 0xD9, +0x1A, 0x2A, 0x7D, 0x67, 0x54, 0xAB, 0x00, 0xF2, +0x00, 0x6B, 0x6C, 0xEA, 0x1A, 0x22, 0x3F, 0x70, +0x16, 0x60, 0x81, 0x40, 0x8C, 0x34, 0x2C, 0xEC, +0x80, 0x18, 0x1C, 0x00, 0x05, 0xD2, 0x9D, 0x67, +0x74, 0xAC, 0x20, 0x6A, 0x05, 0x05, 0x6D, 0xEA, +0x48, 0xCC, 0x02, 0x6E, 0x04, 0x04, 0x00, 0x18, +0x2D, 0xD9, 0x05, 0x2A, 0x06, 0x10, 0x01, 0x48, +0x2C, 0xE8, 0x40, 0x70, 0xD6, 0x61, 0x40, 0x6A, +0x01, 0x10, 0x50, 0x67, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, -0x00, 0x6C, 0x00, 0x6A, 0x7D, 0x67, 0x15, 0xD5, -0x26, 0x67, 0x58, 0xC3, 0x0C, 0xD4, 0x0D, 0xD4, -0x0E, 0xD4, 0x0B, 0xD4, 0x24, 0x68, 0x08, 0xD4, -0xEA, 0x10, 0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xF3, -0x40, 0x9F, 0x81, 0x41, 0x11, 0xE4, 0x40, 0xEA, -0x0A, 0xD2, 0xE0, 0xF0, 0x04, 0x22, 0x0A, 0x93, -0x15, 0x94, 0x42, 0x40, 0x69, 0xE2, 0x43, 0xEC, -0xC0, 0xF0, 0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6F, -0xC0, 0xF3, 0x40, 0x9F, 0x31, 0xE0, 0x40, 0xEA, -0x3E, 0x72, 0x25, 0x60, 0x3F, 0x5A, 0x08, 0x60, -0x2D, 0x72, 0x7C, 0x60, 0x3D, 0x72, 0x80, 0xF0, -0x0B, 0x60, 0x25, 0x72, 0x0B, 0x60, 0xC1, 0x10, -0xC2, 0x72, 0x22, 0x60, 0x00, 0x6B, 0xC4, 0x72, -0x09, 0xD3, 0x6B, 0x60, 0xC0, 0x72, 0xA0, 0xF0, -0x0B, 0x60, 0xB7, 0x10, 0x30, 0xF0, 0x20, 0x6F, -0xC0, 0xF3, 0x40, 0x9F, 0x83, 0x41, 0x11, 0xE4, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x0B, 0xD2, -0xC0, 0xF3, 0x40, 0x9B, 0x84, 0x41, 0x11, 0xE4, -0x40, 0xEA, 0x0E, 0xD2, 0xA6, 0x10, 0x30, 0xF0, -0x20, 0x6F, 0xC0, 0xF3, 0x40, 0x9F, 0x82, 0x41, -0x11, 0xE4, 0x40, 0xEA, 0x0D, 0xD2, 0x9D, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, -0x82, 0x41, 0x11, 0xE4, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6F, 0x0C, 0xD2, 0xC0, 0xF3, 0x40, 0x9F, -0x83, 0x41, 0x11, 0xE4, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, 0x84, 0x41, -0x11, 0xE4, 0x40, 0xEA, 0x86, 0x10, 0x30, 0xF0, -0x20, 0x6F, 0x09, 0x93, 0x82, 0x41, 0xC0, 0xF3, -0x40, 0x9F, 0x11, 0xE4, 0x71, 0xE4, 0x40, 0xEA, -0xC2, 0x72, 0x1C, 0x61, 0x30, 0xF0, 0x20, 0x6F, -0x09, 0x93, 0xC0, 0xF3, 0x40, 0x9F, 0x84, 0x41, -0x11, 0xE4, 0x71, 0xE4, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6F, 0x09, 0x93, 0x0C, 0xD2, 0x85, 0x41, -0xC0, 0xF3, 0x40, 0x9F, 0x11, 0xE4, 0x71, 0xE4, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6F, 0x09, 0x93, -0x86, 0x41, 0xC0, 0xF3, 0x40, 0x9F, 0x11, 0xE4, -0x71, 0xE4, 0x40, 0xEA, 0x09, 0x97, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0x41, 0xC0, 0xF3, 0x40, 0x9A, -0x11, 0xE4, 0xF1, 0xE4, 0x40, 0xEA, 0x09, 0x93, -0x02, 0x4A, 0x4D, 0xE3, 0xFF, 0x6A, 0x4C, 0xEB, -0x09, 0xD3, 0x09, 0x94, 0x0A, 0x97, 0xE3, 0xEC, -0xC6, 0x61, 0x4B, 0x10, 0x0A, 0x92, 0x1A, 0x72, -0x48, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x40, 0x9B, 0x82, 0x41, 0x11, 0xE4, 0x40, 0xEA, -0x02, 0x6B, 0x4C, 0xEB, 0x3E, 0x23, 0x08, 0x94, -0x3C, 0x2C, 0x01, 0x6F, 0x08, 0xD7, 0x39, 0x10, -0x0A, 0x92, 0x16, 0x72, 0x36, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, 0x83, 0x41, -0x11, 0xE4, 0x40, 0xEA, 0x04, 0x6B, 0x4C, 0xEB, -0x2C, 0x23, 0x08, 0x94, 0x02, 0x24, 0x01, 0x74, -0x28, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x40, 0x9A, 0x83, 0x41, 0x11, 0xE4, 0x40, 0xEA, -0x03, 0x6B, 0x4C, 0xEB, 0x01, 0x73, 0x05, 0x60, -0x01, 0x6F, 0x03, 0x73, 0x08, 0xD7, 0x19, 0x61, -0x06, 0x10, 0x01, 0x6A, 0x7D, 0x67, 0x01, 0x6C, -0x58, 0xC3, 0x08, 0xD4, 0x12, 0x10, 0x02, 0x6A, -0xFD, 0x67, 0x58, 0xC7, 0x01, 0x6A, 0x0C, 0x10, -0x0A, 0x93, 0x05, 0x73, 0x0A, 0x61, 0x30, 0xF0, -0x20, 0x6F, 0xC0, 0xF3, 0x40, 0x9F, 0x82, 0x41, -0x11, 0xE4, 0x40, 0xEA, 0x02, 0x22, 0x02, 0x6A, -0x08, 0xD2, 0x0A, 0x92, 0x02, 0x4A, 0x41, 0xE0, -0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x15, 0x93, -0x63, 0xE8, 0x1F, 0xF7, 0x12, 0x61, 0x0B, 0x94, -0x0B, 0x24, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF7, -0x46, 0xA2, 0x80, 0xF0, 0x1F, 0x22, 0x80, 0x18, -0x3D, 0x48, 0x80, 0xF0, 0x1B, 0x2A, 0xA2, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x44, 0xF3, 0x75, 0xA2, 0x57, 0x2B, 0x9A, 0x10, -0x0C, 0x93, 0xFF, 0x6C, 0xFF, 0x4B, 0x8C, 0xEB, -0x03, 0x5B, 0x0D, 0x60, 0x0B, 0x94, 0x30, 0xF0, -0x20, 0x6E, 0x02, 0x6D, 0x2B, 0xF4, 0x1B, 0x4E, -0x80, 0x18, 0x1A, 0x48, 0x11, 0x22, 0x02, 0x6A, -0x84, 0xF5, 0x5A, 0xC0, 0x11, 0x10, 0x0D, 0x97, -0x01, 0x77, 0x02, 0x61, 0x01, 0x6A, 0x08, 0x10, -0x0D, 0x93, 0x03, 0x73, 0x05, 0x61, 0x01, 0x6A, -0x84, 0xF5, 0x5A, 0xC0, 0x02, 0x6A, 0x02, 0x10, -0x84, 0xF5, 0x5A, 0xC0, 0x84, 0xF5, 0x5B, 0xC0, -0x9D, 0x67, 0xE7, 0x44, 0x25, 0x4F, 0x80, 0xA7, -0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6F, -0xA6, 0xF6, 0x00, 0x48, 0xC0, 0xF3, 0x40, 0x9F, -0x84, 0xF5, 0x99, 0xC0, 0x87, 0x41, 0x19, 0x4C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xD2, -0xC0, 0xF3, 0x40, 0x9B, 0x87, 0x41, 0x1A, 0x4C, -0x40, 0xEA, 0x08, 0x94, 0x0E, 0x97, 0x01, 0x6B, -0x40, 0x32, 0x44, 0xF3, 0x74, 0xC0, 0x8D, 0xEA, -0xFF, 0x6B, 0x6C, 0xEA, 0xF8, 0xEA, 0x01, 0x6B, -0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, -0x6C, 0x9B, 0x10, 0xF0, 0x31, 0x6C, 0x24, 0xF5, -0x01, 0x4C, 0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, -0x40, 0xEB, 0x44, 0x10, 0x08, 0x93, 0x02, 0x73, -0x06, 0x61, 0x84, 0xF5, 0x99, 0xA2, 0x02, 0x6D, -0x06, 0x06, 0x80, 0x18, 0x1A, 0x48, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x84, 0xF5, -0x7A, 0xA2, 0x08, 0x94, 0x83, 0xEB, 0x08, 0x61, -0xFD, 0x67, 0x78, 0xA7, 0x15, 0x23, 0x84, 0xF5, -0x5B, 0xA2, 0x12, 0x22, 0x6E, 0xEA, 0x10, 0x22, -0x7D, 0x67, 0x87, 0x43, 0x19, 0x4C, 0x60, 0xA4, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x9D, 0x67, 0x84, 0xF5, 0x7A, 0xC2, 0x78, 0xA4, -0x84, 0xF5, 0x7B, 0xC2, 0x80, 0x18, 0x59, 0x48, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0x6B, 0xA6, 0xF6, -0x00, 0x4A, 0x10, 0xF0, 0x31, 0x6C, 0x44, 0xF3, -0x74, 0xC2, 0x44, 0xF3, 0x75, 0xC2, 0x44, 0xF3, -0x76, 0xC2, 0xC4, 0xF0, 0x1D, 0x4C, 0x00, 0x18, -0x75, 0xDB, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x44, 0xF3, 0x54, 0xA0, -0x7F, 0xF7, 0x06, 0x22, 0x13, 0x97, 0x12, 0x91, +0xFF, 0x69, 0x44, 0x67, 0x16, 0xD6, 0x2C, 0xEA, +0xC7, 0x67, 0x85, 0x67, 0x2C, 0xEC, 0xA2, 0x67, +0x2C, 0xEE, 0x80, 0x18, 0x2C, 0x40, 0x82, 0x67, +0x0C, 0xD2, 0x80, 0x18, 0x6F, 0x40, 0x0D, 0xD2, +0x0C, 0x92, 0x03, 0x22, 0x0D, 0x93, 0x40, 0x73, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, +0x50, 0x9A, 0x4A, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x35, 0x10, 0x04, 0x04, 0x00, 0x6D, 0x20, 0x6E, +0x00, 0x18, 0xC5, 0xD8, 0x0D, 0x94, 0x08, 0x02, +0x0E, 0xD2, 0x8C, 0x30, 0x02, 0x48, 0x2C, 0xE8, +0x04, 0x01, 0x90, 0x67, 0x80, 0x18, 0x1C, 0x00, +0x0E, 0x93, 0x40, 0xD9, 0x04, 0x49, 0x01, 0x48, +0xFF, 0x6A, 0x6A, 0xE9, 0x4C, 0xE8, 0xF5, 0x61, +0x0C, 0x94, 0x00, 0xF2, 0x00, 0x6B, 0x8C, 0xEB, +0x14, 0x23, 0x0D, 0x90, 0x08, 0x01, 0x01, 0x48, +0x4C, 0xE8, 0x0C, 0x30, 0x02, 0x48, 0x4C, 0xE8, +0x0C, 0x02, 0x0F, 0xD2, 0x90, 0x67, 0x80, 0x18, +0x1C, 0x00, 0x0F, 0x93, 0x40, 0xD9, 0x04, 0x49, +0x01, 0x48, 0xFF, 0x6A, 0x6A, 0xE9, 0x4C, 0xE8, +0xF5, 0x61, 0x16, 0x94, 0x04, 0x05, 0x20, 0x6E, +0x00, 0x18, 0xCA, 0xD8, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x80, 0x18, 0x59, 0x48, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x01, 0x6B, 0x44, 0xF3, 0x75, 0xC2, 0x44, 0xF3, -0x76, 0xC2, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, -0xC0, 0x9B, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x31, 0x6C, 0xC4, 0xF0, 0x1D, 0x4C, 0x00, 0x6D, -0x01, 0x6F, 0x40, 0xEA, 0x07, 0x97, 0x04, 0x63, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, +0x4C, 0xEC, 0x4C, 0xED, 0x4C, 0xEE, 0x80, 0x18, +0x2C, 0x40, 0x02, 0x67, 0x40, 0x6A, 0x08, 0x20, +0x90, 0x67, 0x80, 0x18, 0x6F, 0x40, 0x40, 0x72, +0x03, 0x61, 0x90, 0x67, 0x80, 0x18, 0x57, 0x40, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0x10, 0xD6, 0x08, 0xD4, +0xAC, 0xE9, 0x80, 0x18, 0x49, 0x40, 0x08, 0x93, +0x06, 0xD3, 0x10, 0x22, 0x91, 0x67, 0xA3, 0x67, +0x01, 0x6E, 0x80, 0x18, 0xBA, 0x40, 0x40, 0x72, +0x06, 0xD2, 0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF1, 0x50, 0x9A, 0x4A, 0x6B, 0x6B, 0xEB, +0x60, 0xC2, 0x0F, 0x11, 0x30, 0xF0, 0x20, 0x68, +0x10, 0x95, 0x80, 0xF2, 0x4C, 0x98, 0x04, 0x6E, +0x04, 0x04, 0x40, 0xEA, 0x06, 0x92, 0xFF, 0x6B, +0x04, 0x05, 0x4C, 0x34, 0x02, 0x4C, 0x6C, 0xEC, +0x80, 0x18, 0x25, 0x00, 0x10, 0x95, 0x80, 0xF2, +0x4C, 0x98, 0x04, 0x6E, 0x04, 0x04, 0x04, 0x4D, +0x40, 0xEA, 0x06, 0x92, 0xFF, 0x6B, 0x04, 0x05, +0x4C, 0x32, 0x82, 0x67, 0x03, 0x4C, 0x6C, 0xEC, +0x07, 0xD2, 0x80, 0x18, 0x25, 0x00, 0x10, 0x95, +0x80, 0xF2, 0x4C, 0x98, 0x04, 0x6E, 0x04, 0x04, +0x08, 0x4D, 0x40, 0xEA, 0x06, 0x92, 0xFF, 0x6B, +0x04, 0x05, 0x4C, 0x34, 0x04, 0x4C, 0x6C, 0xEC, +0x80, 0x18, 0x25, 0x00, 0x10, 0x95, 0x80, 0xF2, +0x4C, 0x98, 0x04, 0x04, 0x0C, 0x4D, 0x04, 0x6E, +0x40, 0xEA, 0x07, 0x94, 0xFF, 0x6A, 0x04, 0x05, +0x05, 0x4C, 0x4C, 0xEC, 0x80, 0x18, 0x25, 0x00, +0x08, 0x71, 0x09, 0x61, 0x08, 0x92, 0x40, 0x6B, +0xFC, 0x4A, 0x6D, 0xEA, 0x7D, 0x67, 0x50, 0xC3, +0x7C, 0x6A, 0x4B, 0xEA, 0x22, 0x10, 0x02, 0x71, +0x05, 0x61, 0x08, 0x93, 0x03, 0x6A, 0x6C, 0xEA, +0x48, 0x6B, 0x10, 0x10, 0x04, 0x71, 0x06, 0x60, +0x07, 0x71, 0x04, 0x60, 0x14, 0x71, 0x02, 0x60, +0x17, 0x71, 0x0B, 0x61, 0x08, 0x93, 0x03, 0x6A, +0x6C, 0xEA, 0x40, 0x6B, 0x6D, 0xEA, 0x07, 0x6B, +0x2C, 0xEB, 0x68, 0x33, 0x6D, 0xEA, 0x7D, 0x67, +0x50, 0xC3, 0x10, 0x6A, 0x2C, 0xEA, 0x02, 0x22, +0x7E, 0x6A, 0x01, 0x10, 0x80, 0x6A, 0x4B, 0xEA, +0x7D, 0x67, 0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, +0x10, 0x48, 0x51, 0xC3, 0x84, 0xF3, 0x43, 0xA0, +0x7D, 0x67, 0x04, 0x05, 0x52, 0xC3, 0x84, 0xF3, +0x44, 0xA0, 0x53, 0xC3, 0x06, 0x92, 0xFF, 0x6B, +0x4C, 0x32, 0x82, 0x67, 0x6C, 0xEC, 0x07, 0xD2, +0x80, 0x18, 0x25, 0x00, 0x84, 0xF3, 0x45, 0xA0, +0x7D, 0x67, 0x07, 0x94, 0x50, 0xC3, 0x84, 0xF3, +0x46, 0xA0, 0x01, 0x4C, 0x04, 0x05, 0x51, 0xC3, +0x84, 0xF3, 0x47, 0xA0, 0x52, 0xC3, 0x84, 0xF3, +0x48, 0xA0, 0x53, 0xC3, 0xFF, 0x6A, 0x4C, 0xEC, +0x80, 0x18, 0x25, 0x00, 0x10, 0x6A, 0x2C, 0xEA, +0x78, 0x22, 0x06, 0x93, 0xFF, 0x6A, 0x10, 0x95, +0x01, 0x4B, 0x4C, 0xEB, 0x06, 0xD3, 0x30, 0xF0, +0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9B, 0x04, 0x6E, +0x04, 0x04, 0x10, 0x4D, 0x40, 0xEA, 0x06, 0x92, +0xFF, 0x6B, 0x04, 0x05, 0x4C, 0x34, 0x02, 0x4C, +0x6C, 0xEC, 0x80, 0x18, 0x25, 0x00, 0x30, 0xF0, +0x20, 0x6B, 0x10, 0x95, 0x80, 0xF2, 0x4C, 0x9B, +0x04, 0x6E, 0x04, 0x04, 0x14, 0x4D, 0x40, 0xEA, +0x06, 0x92, 0xFF, 0x6B, 0x04, 0x05, 0x4C, 0x32, +0x82, 0x67, 0x03, 0x4C, 0x6C, 0xEC, 0x07, 0xD2, +0x80, 0x18, 0x25, 0x00, 0x30, 0xF0, 0x20, 0x6B, +0x10, 0x95, 0x80, 0xF2, 0x4C, 0x9B, 0x04, 0x6E, +0x04, 0x04, 0x18, 0x4D, 0x40, 0xEA, 0x06, 0x92, +0xFF, 0x6B, 0x04, 0x05, 0x4C, 0x34, 0x04, 0x4C, +0x6C, 0xEC, 0x80, 0x18, 0x25, 0x00, 0x30, 0xF0, +0x20, 0x6B, 0x10, 0x95, 0x80, 0xF2, 0x4C, 0x9B, +0x04, 0x6E, 0x04, 0x04, 0x1C, 0x4D, 0x40, 0xEA, +0x07, 0x94, 0xFF, 0x6A, 0x04, 0x05, 0x05, 0x4C, +0x4C, 0xEC, 0x80, 0x18, 0x25, 0x00, 0x08, 0x93, +0x03, 0x6A, 0x07, 0x94, 0x6C, 0xEA, 0x60, 0x6B, +0x6D, 0xEA, 0x07, 0x6B, 0x2C, 0xEB, 0x68, 0x33, +0x6D, 0xEA, 0x7D, 0x67, 0x50, 0xC3, 0x7E, 0x6A, +0x4B, 0xEA, 0x51, 0xC3, 0x84, 0xF3, 0x43, 0xA0, +0x04, 0x05, 0x52, 0xC3, 0x84, 0xF3, 0x44, 0xA0, +0x53, 0xC3, 0xFF, 0x6A, 0x4C, 0xEC, 0x80, 0x18, +0x25, 0x00, 0x84, 0xF3, 0x45, 0xA0, 0x7D, 0x67, +0x07, 0x94, 0x50, 0xC3, 0x84, 0xF3, 0x46, 0xA0, +0x01, 0x4C, 0x04, 0x05, 0x51, 0xC3, 0x84, 0xF3, +0x47, 0xA0, 0x52, 0xC3, 0x84, 0xF3, 0x48, 0xA0, +0x53, 0xC3, 0xFF, 0x6A, 0x4C, 0xEC, 0x80, 0x18, +0x25, 0x00, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, +0x07, 0x63, 0x00, 0xEF, 0xF4, 0x63, 0x17, 0x62, +0x16, 0xD1, 0x15, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xEC, 0x64, 0x67, 0xFF, 0x4B, 0x4C, 0xEB, +0x02, 0x5B, 0x13, 0xD4, 0x08, 0x61, 0x00, 0xF2, +0x08, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0x28, 0xF3, +0x47, 0xA2, 0x00, 0xF2, 0x02, 0x22, 0x30, 0xF0, +0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, 0xA4, 0xF4, +0x4F, 0xA1, 0x40, 0x32, 0x12, 0xD2, 0x12, 0x93, +0xA4, 0xF4, 0x50, 0xA1, 0x4D, 0xEB, 0x61, 0x5B, +0x12, 0xD3, 0xE0, 0xF1, 0x12, 0x60, 0x00, 0x6B, +0x9D, 0x67, 0x6D, 0xCC, 0x30, 0xF0, 0x20, 0x6B, +0xA7, 0xF4, 0x14, 0x4B, 0x11, 0xD3, 0x12, 0x93, +0xFF, 0x6C, 0x30, 0xF0, 0x20, 0x68, 0x8C, 0xEB, +0x80, 0xF2, 0x4C, 0x98, 0x11, 0x94, 0x30, 0xF0, +0x20, 0x6D, 0x10, 0xD3, 0xCC, 0xF6, 0x01, 0x4D, +0xC3, 0x67, 0x40, 0xEA, 0x13, 0x92, 0x01, 0x72, +0x58, 0x67, 0x13, 0xD2, 0x37, 0x2A, 0x80, 0xF2, +0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6D, 0x07, 0x04, +0x6C, 0xF6, 0x1F, 0x4D, 0x10, 0x6E, 0x40, 0xEA, +0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, 0x20, 0x6D, +0x0B, 0x04, 0xEC, 0xF5, 0x0E, 0x4D, 0x10, 0x6E, +0x40, 0xEA, 0x13, 0x93, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF3, 0x44, 0x9A, 0x10, 0x96, 0x00, 0x6C, +0x04, 0xD3, 0xA4, 0x67, 0x20, 0x6F, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x40, 0xF3, 0x54, 0x9A, +0x11, 0x95, 0x10, 0x97, 0x30, 0xF0, 0x20, 0x69, +0x07, 0xF5, 0x14, 0x49, 0x07, 0x04, 0xD1, 0x67, +0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x98, 0x30, 0xF0, +0x20, 0x6C, 0x67, 0xF5, 0x14, 0x4C, 0xB1, 0x67, +0x28, 0x6E, 0x40, 0xEA, 0x00, 0x6C, 0x10, 0xD4, +0x12, 0xD4, 0x71, 0x10, 0x80, 0xF2, 0x4C, 0x98, +0xC4, 0xF3, 0xDD, 0xA1, 0x30, 0xF0, 0x20, 0x6D, +0x07, 0x04, 0xEC, 0xF5, 0x0E, 0x4D, 0x40, 0xEA, +0x12, 0x93, 0x41, 0x5B, 0x04, 0x60, 0xC4, 0xF3, +0x5D, 0xA1, 0x11, 0x5A, 0x18, 0x61, 0x12, 0x96, +0x30, 0xF0, 0x20, 0x6A, 0xEC, 0xF5, 0xAD, 0xA2, +0xF8, 0x4E, 0x08, 0x6A, 0x5A, 0xEE, 0x01, 0x2A, +0xE5, 0xE8, 0x30, 0xF0, 0x20, 0x6F, 0x30, 0xF0, +0x20, 0x6A, 0x07, 0xF5, 0x1C, 0x4A, 0x07, 0x04, +0xA7, 0xF4, 0x14, 0x4F, 0x04, 0xD2, 0x12, 0xEE, +0x80, 0x18, 0x1A, 0x4C, 0x17, 0x10, 0x00, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF3, +0x44, 0x9A, 0x10, 0x96, 0x00, 0x6C, 0xA4, 0x67, +0x10, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x40, 0xF3, 0x44, 0x9A, 0x11, 0x95, 0x10, 0x97, +0x30, 0xF0, 0x20, 0x6E, 0x07, 0x04, 0x07, 0xF5, +0x14, 0x4E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF3, 0x4E, 0xA2, 0x1B, 0x22, 0x30, 0xF0, +0x20, 0x6D, 0x07, 0xF5, 0x14, 0x4D, 0xC9, 0xA5, +0xFF, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0x4E, +0x4C, 0xEE, 0x67, 0x46, 0x01, 0x4B, 0x6D, 0xE5, +0x10, 0xD3, 0x61, 0xA3, 0x67, 0xF5, 0x14, 0x4C, +0x08, 0x4D, 0xF4, 0x4B, 0x4C, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x12, 0xD3, +0x40, 0xEA, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x30, 0xF0, 0x20, 0x6D, 0x67, 0xF5, 0x14, 0x4C, +0x07, 0xF5, 0x1C, 0x4D, 0x28, 0x6E, 0x40, 0xEA, +0x00, 0x6A, 0x10, 0xD2, 0x12, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x44, 0xF4, +0x62, 0xA2, 0xFE, 0x73, 0x14, 0x61, 0x44, 0xF4, +0x44, 0xA2, 0x30, 0x6B, 0x9D, 0x67, 0x6C, 0xEA, +0x53, 0x32, 0x58, 0xC4, 0x30, 0xF0, 0x20, 0x6D, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, +0x80, 0xF2, 0x4C, 0x9A, 0x87, 0xF5, 0x1C, 0x4C, +0x67, 0xF5, 0x14, 0x4D, 0x17, 0x10, 0xFE, 0x4B, +0xFF, 0x6A, 0x4C, 0xEB, 0x02, 0x5B, 0x15, 0x60, +0x30, 0xF0, 0x20, 0x6D, 0x67, 0xF5, 0x14, 0x4D, +0x66, 0xA5, 0x03, 0x6A, 0x30, 0xF0, 0x20, 0x6C, +0x6C, 0xEA, 0x7D, 0x67, 0x58, 0xC3, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x87, 0xF5, +0x1C, 0x4C, 0x08, 0x4D, 0x20, 0x6E, 0x40, 0xEA, +0x0D, 0x10, 0x05, 0x6B, 0x9D, 0x67, 0x78, 0xC4, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, 0x80, 0x9B, +0x10, 0x6D, 0x60, 0xA4, 0x4C, 0xEB, 0xAD, 0xEB, +0x4C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6A, +0x2D, 0xF0, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA7, 0x42, 0x87, 0xF5, 0x1C, 0x4B, 0x19, 0x4D, +0x01, 0x6C, 0xE0, 0xA2, 0xC0, 0xA3, 0x01, 0x4A, +0x01, 0x4B, 0xEE, 0xEE, 0x01, 0x5E, 0xD8, 0x67, +0xCB, 0xEE, 0xAA, 0xEA, 0xCC, 0xEC, 0xF5, 0x61, +0x01, 0x74, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF2, 0x60, 0x9A, 0xFF, 0x6C, 0x08, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0xC7, 0x10, 0x7D, 0x67, 0x58, 0xA3, +0x04, 0x5A, 0xA0, 0xF0, 0x14, 0x60, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x24, 0xF6, +0x78, 0xA0, 0x24, 0xF6, 0x54, 0xC0, 0x30, 0xF0, +0x20, 0x6C, 0x01, 0x6A, 0x6D, 0xEA, 0x87, 0xF5, +0x1C, 0x4C, 0x24, 0xF6, 0x58, 0xC0, 0x30, 0xF0, +0x20, 0x69, 0x11, 0xD4, 0x11, 0x95, 0x80, 0xF2, +0x4C, 0x99, 0x30, 0xF0, 0x20, 0x6C, 0x2D, 0xF0, +0x04, 0x4C, 0x20, 0x6E, 0x40, 0xEA, 0x5D, 0x67, +0x98, 0xA2, 0xE0, 0xF0, 0xBD, 0xA0, 0x11, 0x96, +0x80, 0x18, 0xC6, 0x40, 0x10, 0x93, 0x4B, 0x23, +0x43, 0x67, 0x02, 0x4A, 0x60, 0xA2, 0x47, 0x2B, +0x61, 0xA2, 0x0F, 0x73, 0x44, 0x61, 0x62, 0xA2, +0xAC, 0x73, 0x41, 0x61, 0x43, 0xA2, 0x09, 0x72, +0x3E, 0x61, 0x10, 0x95, 0x80, 0xF2, 0x4C, 0x99, +0x00, 0xF0, 0x1A, 0x04, 0x06, 0x4D, 0x02, 0x6E, +0x40, 0xEA, 0x80, 0xF2, 0x4C, 0x99, 0x30, 0xF0, +0x20, 0x6C, 0x6D, 0xF0, 0x14, 0x4C, 0x00, 0xF0, +0x1A, 0x05, 0x02, 0x6E, 0x40, 0xEA, 0x10, 0x95, +0x80, 0xF2, 0x4C, 0x99, 0x30, 0xF0, 0x20, 0x6C, +0x6D, 0xF0, 0x16, 0x4C, 0x08, 0x4D, 0x06, 0x6E, +0x40, 0xEA, 0x5D, 0x67, 0x8D, 0xAA, 0x10, 0x95, +0x30, 0xF0, 0x20, 0x6B, 0xFC, 0x4C, 0x80, 0xF2, +0x4C, 0x99, 0x12, 0x96, 0x6D, 0xF0, 0x1C, 0x4B, +0x94, 0x34, 0x11, 0xD3, 0x91, 0xE3, 0x0E, 0x4D, +0x40, 0xEA, 0xE0, 0xF0, 0x79, 0xA0, 0x04, 0x6A, +0x6C, 0xEA, 0x0D, 0x22, 0x9D, 0x67, 0x4D, 0xAC, +0xCD, 0xAC, 0xFF, 0x6C, 0x4C, 0xEC, 0x11, 0x92, +0xFC, 0x4E, 0xE0, 0xF0, 0xBE, 0xA0, 0xD4, 0x36, +0xD9, 0xE2, 0x80, 0x18, 0xC6, 0x40, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x43, 0xF4, +0x74, 0xA2, 0x12, 0x23, 0xC0, 0xF0, 0x79, 0xA2, +0x01, 0x6A, 0x6C, 0xEA, 0x0D, 0x22, 0x30, 0xF0, +0x20, 0x68, 0x8C, 0xF0, 0x00, 0x48, 0x00, 0x69, +0x91, 0x67, 0xB0, 0x67, 0x01, 0x49, 0x00, 0x18, +0x3F, 0xC4, 0x04, 0x71, 0x18, 0x48, 0xF8, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x24, 0xF6, 0x74, 0xA2, 0x01, 0x73, 0x0B, 0x60, +0x05, 0x23, 0x02, 0x73, 0x0D, 0x60, 0x03, 0x73, +0x10, 0x60, 0x2B, 0x10, 0x30, 0xF0, 0x20, 0x6C, +0x4D, 0xF0, 0x14, 0x4C, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6C, 0x4D, 0xF0, 0x1C, 0x4C, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xF0, 0x04, 0x4C, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6C, 0x6D, 0xF0, +0x0C, 0x4C, 0x24, 0xF6, 0xF5, 0xA2, 0x30, 0xF0, +0x20, 0x6D, 0x8C, 0xF6, 0x0F, 0x4D, 0x06, 0x06, +0x80, 0x18, 0x4D, 0x00, 0x0E, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x05, 0x6B, +0x24, 0xF6, 0x98, 0xA2, 0x24, 0xF6, 0x74, 0xC2, +0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0x24, 0xF6, +0x78, 0xC2, 0x17, 0x97, 0x16, 0x91, 0x15, 0x90, +0x0C, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, +0xF8, 0x4C, 0x4C, 0xEC, 0x12, 0x5C, 0x00, 0x6A, +0x06, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, +0x1C, 0x4A, 0x51, 0xE4, 0x40, 0xA4, 0x20, 0xE8, +0xFF, 0x6A, 0x4C, 0xEC, 0xF8, 0x4C, 0x4C, 0xEC, +0x12, 0x5C, 0x00, 0x6A, 0x06, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF3, 0x10, 0x4A, 0x51, 0xE4, +0x40, 0xA4, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0xFC, 0x4C, 0x4C, 0xEC, 0x16, 0x5C, 0x00, 0x6A, +0x06, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF3, +0x04, 0x4A, 0x51, 0xE4, 0x40, 0xA4, 0x20, 0xE8, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x6A, 0xAC, 0xEA, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xD4, 0x08, 0xF3, +0x8E, 0xA2, 0x30, 0xF0, 0x20, 0x69, 0x6D, 0xF0, +0x1B, 0x49, 0x80, 0x18, 0x6D, 0x42, 0x06, 0xD2, +0x0C, 0x92, 0x04, 0x93, 0x00, 0x68, 0xFF, 0x4A, +0x69, 0xE2, 0x06, 0x93, 0x6B, 0xE2, 0x05, 0xD2, +0x40, 0xA1, 0x30, 0xF0, 0x20, 0x6B, 0x05, 0x94, +0x07, 0xD2, 0xC0, 0xF3, 0x40, 0x9B, 0x40, 0xEA, +0x07, 0x93, 0x6E, 0xEA, 0x0A, 0x2A, 0xFF, 0x6A, +0x01, 0x48, 0x4C, 0xE8, 0x05, 0x92, 0x06, 0x70, +0xFF, 0x49, 0xFF, 0x4A, 0x05, 0xD2, 0xEC, 0x61, +0x34, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF6, +0x05, 0x6B, 0x0F, 0xE3, 0x0C, 0x94, 0x08, 0xF2, +0x10, 0x4A, 0x49, 0xE3, 0x04, 0x93, 0x26, 0xA2, +0x06, 0x92, 0xFF, 0x4C, 0x71, 0xE4, 0x30, 0xF0, +0x20, 0x6B, 0x53, 0xE4, 0xC0, 0xF3, 0x40, 0x9B, +0x13, 0xE4, 0x40, 0xEA, 0x23, 0xEA, 0x1D, 0x61, +0x0C, 0x91, 0x04, 0x92, 0x06, 0x93, 0xFA, 0x49, +0x45, 0xE1, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x68, 0x6D, 0xF0, 0x1C, 0x4A, 0x67, 0xE1, +0x6D, 0xF0, 0x16, 0x48, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x91, 0x67, +0x01, 0x49, 0x40, 0xEA, 0x04, 0x93, 0x40, 0xC0, +0x01, 0x48, 0x6A, 0xE8, 0xF4, 0x61, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x04, 0x67, 0x2C, 0xE8, 0x00, 0x18, +0x8B, 0xD8, 0x01, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x44, 0x9A, 0x1C, 0x30, 0x04, 0xD0, +0x49, 0xE0, 0x40, 0xA2, 0x4C, 0xE9, 0x01, 0x71, +0x30, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x04, 0x94, +0xA0, 0xF3, 0x58, 0x98, 0x30, 0xF0, 0x20, 0x69, +0x6D, 0xF0, 0x14, 0x49, 0x08, 0x4C, 0x02, 0x6D, +0xD1, 0x67, 0x40, 0xEA, 0x04, 0x94, 0xA0, 0xF3, +0x58, 0x98, 0x06, 0x6D, 0x0A, 0x4C, 0xC2, 0x41, +0x40, 0xEA, 0x04, 0x94, 0xA0, 0xF3, 0x58, 0x98, +0xC7, 0x41, 0x10, 0x4C, 0x20, 0x6D, 0x01, 0x4E, +0x40, 0xEA, 0x04, 0x94, 0xA0, 0xF3, 0x58, 0x98, +0xC7, 0x41, 0x30, 0x4C, 0x20, 0x6D, 0x21, 0x4E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, +0xAC, 0xA2, 0x00, 0x6C, 0x30, 0xF0, 0x20, 0x6E, +0x4C, 0xF7, 0x06, 0x4E, 0xE4, 0x67, 0x80, 0x18, +0x8C, 0x40, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0xC0, 0x6C, 0x80, 0x18, 0x0E, 0x0B, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xEC, 0x63, 0x27, 0x62, +0x26, 0xD1, 0x25, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0xAC, 0xEA, 0x7D, 0x67, 0x1A, 0xD2, 0x00, 0x6A, +0x50, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, +0x0E, 0xA2, 0x24, 0x67, 0x90, 0x67, 0x80, 0x18, +0x6D, 0x42, 0x90, 0x67, 0x1F, 0xD2, 0x80, 0x18, +0x74, 0x42, 0x90, 0x67, 0x1E, 0xD2, 0x80, 0x18, +0x7B, 0x42, 0x20, 0xD2, 0x1A, 0x92, 0x1E, 0x93, +0x30, 0xF0, 0x20, 0x68, 0x31, 0xE2, 0xC0, 0xF3, +0x40, 0x98, 0x73, 0xE4, 0x40, 0xEA, 0x4C, 0x72, +0xC0, 0xF0, 0x0B, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6D, +0x08, 0x04, 0x6D, 0xF0, 0x14, 0x4D, 0x02, 0x6E, +0x40, 0xEA, 0x1A, 0x95, 0x91, 0x67, 0x80, 0x18, +0x82, 0x42, 0xA0, 0xF0, 0x1A, 0x22, 0x1A, 0x94, +0xFF, 0xF7, 0x1F, 0x6A, 0x1E, 0x93, 0xFC, 0x4C, +0x4C, 0xEC, 0x1A, 0x92, 0x1B, 0xD4, 0xFF, 0xF7, +0x1F, 0x6C, 0xE8, 0x4A, 0x6B, 0xE2, 0x8C, 0xEA, +0x1D, 0xD2, 0x1B, 0x92, 0x31, 0x5A, 0xA0, 0xF0, +0x08, 0x60, 0xC0, 0xF3, 0x40, 0x98, 0x91, 0x67, +0x40, 0xEA, 0x7D, 0x67, 0x20, 0xF0, 0x54, 0xC3, +0xC0, 0xF3, 0x40, 0x98, 0x81, 0x41, 0x04, 0x41, +0x40, 0xEA, 0x9D, 0x67, 0x20, 0xF0, 0x55, 0xC4, +0x7A, 0xAC, 0x01, 0xF0, 0x01, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0x02, 0xF0, 0x01, 0x6B, 0x6B, 0xEB, +0x6C, 0xEA, 0x1E, 0xF0, 0x00, 0x4B, 0x6C, 0xEA, +0x5A, 0xCC, 0x12, 0x03, 0x20, 0xF0, 0x16, 0x02, +0x1C, 0xD2, 0x22, 0xD3, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x40, 0x9A, 0x90, 0x67, 0x01, 0x48, +0x40, 0xEA, 0x1C, 0x94, 0x40, 0xC4, 0x22, 0x92, +0x01, 0x4C, 0x1C, 0xD4, 0x4A, 0xEC, 0xF2, 0x61, +0x00, 0x68, 0x1D, 0x10, 0x1E, 0x93, 0x1F, 0x94, +0x8B, 0xE3, 0x1D, 0x93, 0x69, 0xE2, 0x42, 0xE8, +0x0D, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x87, 0x41, +0xC0, 0xF3, 0x40, 0x9A, 0x11, 0x4C, 0x11, 0xE4, +0x40, 0xEA, 0x9D, 0x67, 0x0D, 0xE4, 0x40, 0xF0, +0x48, 0xC3, 0x05, 0x10, 0x08, 0x02, 0x09, 0xE2, +0x00, 0x6B, 0x20, 0xF0, 0x68, 0xC2, 0x01, 0x48, +0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xE8, 0x1D, 0x93, +0x1E, 0x94, 0x89, 0xE3, 0x42, 0xE8, 0xDE, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, 0x4E, 0xA2, +0x09, 0x72, 0x1A, 0x60, 0x0A, 0x5A, 0x03, 0x60, +0x08, 0x72, 0x06, 0x60, 0x4A, 0x10, 0x18, 0x72, +0x13, 0x60, 0x19, 0x72, 0x17, 0x60, 0x45, 0x10, +0x5D, 0x67, 0x90, 0xAA, 0x20, 0x95, 0x30, 0xF0, +0x20, 0x6A, 0xFC, 0x4C, 0x1B, 0x97, 0x94, 0x34, +0x6D, 0xF0, 0x1C, 0x4A, 0x09, 0x03, 0x91, 0xE2, +0x0D, 0x06, 0x04, 0xD3, 0x80, 0x18, 0xDB, 0x49, +0x1A, 0x93, 0x1F, 0x94, 0x00, 0x68, 0x25, 0xE3, +0x87, 0xE1, 0x27, 0x10, 0x5D, 0x67, 0xD0, 0xAA, +0x0D, 0x03, 0x1F, 0x94, 0x04, 0xD3, 0x1B, 0x93, +0xFC, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0x1A, 0x95, +0x20, 0x97, 0xD4, 0x36, 0x6D, 0xF0, 0x1C, 0x4A, +0x05, 0xD3, 0x07, 0xD4, 0x09, 0x03, 0x91, 0x67, +0xD9, 0xE2, 0x06, 0xD3, 0x80, 0x18, 0x51, 0x4B, +0xE3, 0x17, 0x7D, 0x67, 0x09, 0xE3, 0x20, 0xF0, +0x44, 0xA2, 0x91, 0x67, 0x01, 0x48, 0x1A, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, +0x01, 0x49, 0x40, 0xEA, 0x1A, 0x94, 0x8E, 0xEA, +0x08, 0x2A, 0x1F, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, +0x0C, 0xEA, 0x63, 0xEA, 0xEA, 0x61, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x27, 0x97, 0x26, 0x91, +0x25, 0x90, 0x14, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xDF, 0x63, 0x41, 0x62, 0x40, 0xD1, 0x3F, 0xD0, +0x00, 0x6A, 0x08, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xFF, 0x69, 0x84, 0xF2, 0x5C, 0x9A, 0x2C, 0xED, +0x2C, 0xEE, 0x45, 0xD7, 0x3C, 0xD5, 0x3D, 0xD6, +0x40, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, +0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x68, 0x8C, 0xE8, +0x40, 0xA2, 0x30, 0xF0, 0x20, 0x6C, 0xB1, 0x67, +0x62, 0x67, 0xA0, 0xF2, 0x50, 0x9C, 0x2C, 0xEB, +0x3B, 0xD3, 0x00, 0x6C, 0x44, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF4, 0x5C, 0x9A, +0x40, 0xEA, 0x01, 0x72, 0x00, 0x6A, 0xC0, 0xF0, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x3C, 0x96, +0xA0, 0xF2, 0x54, 0x9A, 0x90, 0x67, 0x04, 0x6F, +0x01, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6D, +0x02, 0x67, 0xA0, 0xF2, 0x50, 0x9D, 0x3B, 0x95, +0x45, 0x6E, 0x00, 0x6C, 0x40, 0xEA, 0x87, 0x40, +0x29, 0x4C, 0x00, 0x6D, 0x80, 0x18, 0xD9, 0x0A, +0xDD, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0xF0, 0xF0, +0x64, 0x46, 0xA4, 0xF2, 0x40, 0x9A, 0xC0, 0xA3, +0x00, 0x6D, 0x49, 0xE0, 0xC0, 0xC2, 0x45, 0x94, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF2, 0x44, 0x9A, +0x60, 0xA4, 0x49, 0xE0, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF2, 0x48, 0x9A, 0x61, 0xA4, +0x49, 0xE0, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF3, 0x69, 0xA2, 0x02, 0x6A, 0x3A, 0xD5, +0x6C, 0xEA, 0x2C, 0xEA, 0x69, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF2, 0x6C, 0x9A, 0x07, 0x6A, +0x6D, 0xE0, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, 0x44, 0x9A, +0x49, 0xE0, 0x40, 0xA2, 0x4C, 0xE9, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x6C, 0x9A, 0x3A, 0xD1, +0x45, 0x67, 0x6D, 0xE0, 0x0A, 0x10, 0xA0, 0xA3, +0xDD, 0x67, 0x51, 0xE6, 0x20, 0xF0, 0xA4, 0xC4, +0xA0, 0xA3, 0x01, 0x4A, 0x01, 0x4B, 0xA0, 0xF0, +0xA4, 0xC4, 0x3A, 0x94, 0x82, 0xEA, 0xF3, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, 0x2C, 0xA2, +0x91, 0x67, 0x80, 0x18, 0x7B, 0x42, 0x04, 0x71, +0xA2, 0x67, 0x03, 0x60, 0x17, 0x71, 0x10, 0x60, +0x1D, 0x10, 0x18, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6C, 0x19, 0x02, 0x05, 0xD2, 0x4C, 0xF7, +0x06, 0x4C, 0x08, 0x02, 0x09, 0x06, 0x1C, 0x6F, +0x06, 0xD2, 0x80, 0x18, 0xF4, 0x4B, 0x0E, 0x10, +0x18, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6C, +0x19, 0x02, 0x05, 0xD2, 0x4C, 0xF7, 0x06, 0x4C, +0x08, 0x02, 0x09, 0x06, 0x1C, 0x6F, 0x06, 0xD2, +0x80, 0x18, 0x71, 0x4B, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x44, 0x9A, 0xBD, 0x67, 0x20, 0xF0, +0x60, 0xA5, 0x49, 0xE0, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF1, 0x6C, 0x9A, 0x00, 0x6A, +0x6D, 0xE0, 0x07, 0x10, 0xDD, 0x67, 0x51, 0xE6, +0x60, 0xF0, 0x84, 0xA4, 0x01, 0x4A, 0x80, 0xC3, +0x01, 0x4B, 0x08, 0x94, 0x83, 0xEA, 0xF6, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF3, +0x89, 0xA3, 0x02, 0x6B, 0x8C, 0xEB, 0x19, 0x2B, +0x9D, 0x67, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF0, +0xA8, 0x44, 0x64, 0xF1, 0x64, 0x9B, 0x80, 0xA5, +0x6D, 0xE0, 0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6C, +0x64, 0xF1, 0x8C, 0x9C, 0x3A, 0x95, 0x29, 0x03, +0x81, 0xE0, 0x71, 0xE5, 0x04, 0x10, 0xA0, 0xA3, +0x01, 0x4B, 0xA0, 0xC0, 0x01, 0x48, 0x8A, 0xEB, +0xFA, 0x61, 0x41, 0x97, 0x40, 0x91, 0x3F, 0x90, +0x21, 0x63, 0x00, 0xEF, 0xD8, 0x63, 0x4F, 0x62, +0x4E, 0xD1, 0x4D, 0xD0, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x69, 0x09, 0xD2, 0x50, 0xD4, 0x51, 0xD5, +0x52, 0xD6, 0x08, 0xF2, 0x10, 0x49, 0xE0, 0xF0, +0x79, 0xA1, 0x02, 0x6A, 0x6C, 0xEA, 0x44, 0x22, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, +0x01, 0x4C, 0x40, 0xEA, 0x00, 0xF6, 0x40, 0x32, +0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, 0xA0, 0xF0, +0x19, 0x61, 0x50, 0x94, 0xC0, 0xF3, 0x40, 0x98, +0x05, 0x4C, 0x40, 0xEA, 0x10, 0x6B, 0x4C, 0xEB, +0xA0, 0xF0, 0x10, 0x23, 0x52, 0x94, 0xC0, 0xF3, +0x40, 0x98, 0x20, 0x4C, 0x40, 0xEA, 0x08, 0x72, +0xA0, 0xF0, 0x08, 0x61, 0x52, 0x92, 0x21, 0x4A, +0x4A, 0xD2, 0x4A, 0x94, 0xC0, 0xF3, 0x40, 0x98, +0x40, 0xEA, 0x13, 0x2A, 0x52, 0x94, 0xC0, 0xF3, +0x40, 0x98, 0x22, 0x4C, 0x40, 0xEA, 0x7D, 0x67, +0x20, 0xF0, 0x40, 0xC3, 0x52, 0x94, 0xC0, 0xF3, +0x40, 0x98, 0x23, 0x4C, 0x40, 0xEA, 0x9D, 0x67, +0x20, 0xF0, 0x41, 0xC4, 0x00, 0xF1, 0x96, 0xA1, +0x7A, 0x10, 0xC0, 0xF3, 0x40, 0x98, 0x4A, 0x94, +0x40, 0xEA, 0x01, 0x6B, 0x6E, 0xEA, 0x80, 0xF0, +0x05, 0x2A, 0x24, 0xF5, 0x52, 0xC1, 0x7C, 0x10, +0x52, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x40, 0x9A, 0x01, 0x4C, 0x40, 0xEA, 0x40, 0x6B, +0x4C, 0xEB, 0x78, 0x23, 0x51, 0x94, 0x81, 0x5C, +0x75, 0x60, 0xE0, 0xF0, 0x9C, 0xA1, 0x00, 0x68, +0x80, 0x18, 0x7B, 0x42, 0x22, 0x67, 0x0C, 0x10, +0x52, 0x93, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x40, 0x9A, 0x71, 0xE0, 0x40, 0xEA, 0x9D, 0x67, +0x0D, 0xE4, 0x20, 0xF0, 0x48, 0xC3, 0x01, 0x48, +0x51, 0x92, 0x43, 0xE8, 0xF1, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF3, 0x4C, 0xA2, 0x04, 0x72, +0x04, 0x60, 0x17, 0x72, 0x00, 0x68, 0x23, 0x61, +0x11, 0x10, 0x51, 0x92, 0x30, 0xF0, 0x20, 0x6C, +0x4C, 0xF7, 0x06, 0x4C, 0xE8, 0x4A, 0x04, 0xD2, +0x2A, 0x02, 0x05, 0xD2, 0xB1, 0x67, 0x09, 0x02, +0x0A, 0x06, 0x10, 0x07, 0x06, 0xD2, 0x80, 0x18, +0xC4, 0x4C, 0x10, 0x10, 0x51, 0x92, 0x30, 0xF0, +0x20, 0x6C, 0x4C, 0xF7, 0x06, 0x4C, 0xE8, 0x4A, +0x04, 0xD2, 0x2A, 0x02, 0x05, 0xD2, 0xB1, 0x67, +0x09, 0x02, 0x0A, 0x06, 0x10, 0x07, 0x06, 0xD2, +0x80, 0x18, 0x7F, 0x4C, 0x02, 0x67, 0x7D, 0x67, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0x20, 0xF0, 0xC4, 0xA3, 0x12, 0x04, 0x2A, 0x05, +0x40, 0xEA, 0x9D, 0x67, 0x40, 0xF0, 0x48, 0xA4, +0x08, 0x72, 0x24, 0x61, 0x01, 0x70, 0x22, 0x61, +0x40, 0xF0, 0x49, 0xA4, 0x12, 0x2A, 0x40, 0xF0, +0x4A, 0xA4, 0x20, 0xF0, 0x40, 0xC4, 0x40, 0xF0, +0x4B, 0xA4, 0x20, 0xF0, 0x41, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x28, 0xF3, 0x86, 0xA2, 0x1E, 0x6D, +0x01, 0x6E, 0x08, 0x07, 0x80, 0x18, 0x5E, 0x43, +0x0D, 0x10, 0x01, 0x6B, 0x6E, 0xEA, 0x0A, 0x2A, +0x30, 0xF0, 0x20, 0x6B, 0x4C, 0xF7, 0x42, 0xC3, +0x10, 0xF0, 0x31, 0x6C, 0x61, 0xF3, 0x15, 0x4C, +0x00, 0x18, 0x92, 0xE0, 0x4F, 0x97, 0x4E, 0x91, +0x4D, 0x90, 0x28, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xD8, 0x63, 0x4F, 0x62, 0x4E, 0xD1, 0x4D, 0xD0, +0x00, 0x6A, 0x09, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x40, 0x9A, 0x50, 0xD4, 0x51, 0xD5, +0x84, 0x46, 0x26, 0x67, 0x40, 0xEA, 0x01, 0x6B, +0x4C, 0xEB, 0x07, 0x2B, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF3, 0x69, 0xA2, 0x02, 0x6A, 0x6C, 0xEA, +0x12, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x40, 0x9A, 0x84, 0x41, 0x40, 0xEA, 0x01, 0x6B, +0x4C, 0xEB, 0xC0, 0xF0, 0x14, 0x23, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF3, 0x69, 0xA2, 0x04, 0x6A, +0x6C, 0xEA, 0xC0, 0xF0, 0x0C, 0x22, 0x30, 0xF0, +0x20, 0x6B, 0x50, 0x94, 0xC0, 0xF3, 0x40, 0x9B, +0x00, 0x68, 0x01, 0x4C, 0x40, 0xEA, 0x00, 0xF6, +0x40, 0x32, 0x00, 0xF6, 0x43, 0x32, 0x00, 0x52, +0xA0, 0xF0, 0x17, 0x61, 0x30, 0xF0, 0x20, 0x6C, +0xC0, 0xF3, 0x40, 0x9C, 0x50, 0x94, 0x05, 0x4C, +0x40, 0xEA, 0x10, 0x6B, 0x4C, 0xEB, 0xA0, 0xF0, +0x1D, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x40, 0x9B, 0x84, 0x41, 0x01, 0x68, 0x40, 0xEA, +0x01, 0x6B, 0x4C, 0xEB, 0xA0, 0xF0, 0x01, 0x23, +0x51, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, 0x91, 0x67, +0x4C, 0xED, 0x80, 0x18, 0x82, 0x42, 0x0A, 0x10, +0x51, 0x93, 0x1A, 0x73, 0xA0, 0xF0, 0x06, 0x60, +0xFF, 0xF7, 0x1F, 0x6D, 0x91, 0x67, 0x6C, 0xED, +0x80, 0x18, 0xE1, 0x42, 0x02, 0x67, 0x8D, 0x10, +0xC0, 0xF3, 0x40, 0x98, 0x81, 0x41, 0x40, 0xEA, +0x40, 0x6B, 0x4C, 0xEB, 0x80, 0xF0, 0x16, 0x23, +0x51, 0x94, 0x81, 0x5C, 0x80, 0xF0, 0x00, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF3, 0x8C, 0xA2, +0x00, 0x68, 0x80, 0x18, 0x7B, 0x42, 0x4B, 0xD2, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x40, 0x9A, 0x31, 0xE0, 0x40, 0xEA, 0x9D, 0x67, +0x0D, 0xE4, 0x20, 0xF0, 0x48, 0xC3, 0x01, 0x48, +0x51, 0x92, 0x43, 0xE8, 0xF2, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF3, 0x4C, 0xA2, 0x04, 0x72, +0x04, 0x60, 0x17, 0x72, 0x00, 0x68, 0x23, 0x61, +0x11, 0x10, 0x51, 0x92, 0x4B, 0x95, 0x30, 0xF0, +0x20, 0x6C, 0xE8, 0x4A, 0x04, 0xD2, 0x2A, 0x02, +0x05, 0xD2, 0x4C, 0xF7, 0x06, 0x4C, 0x09, 0x02, +0x0A, 0x06, 0x10, 0x07, 0x06, 0xD2, 0x80, 0x18, +0xC4, 0x4C, 0x10, 0x10, 0x51, 0x92, 0x4B, 0x95, +0x30, 0xF0, 0x20, 0x6C, 0xE8, 0x4A, 0x04, 0xD2, +0x2A, 0x02, 0x05, 0xD2, 0x4C, 0xF7, 0x06, 0x4C, +0x09, 0x02, 0x0A, 0x06, 0x10, 0x07, 0x06, 0xD2, +0x80, 0x18, 0x7F, 0x4C, 0x02, 0x67, 0x7D, 0x67, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF0, 0xC4, 0xA3, +0x80, 0xF2, 0x4C, 0x9A, 0x12, 0x04, 0x2A, 0x05, +0x40, 0xEA, 0x33, 0x10, 0x31, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, 0x08, 0x01, +0x30, 0xF0, 0x20, 0x6D, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x91, 0x67, 0x4C, 0xF7, +0x04, 0x4D, 0x02, 0x6E, 0x40, 0xEA, 0x00, 0xF1, +0x96, 0xA0, 0x1E, 0x6D, 0x00, 0x6E, 0xF1, 0x67, +0x80, 0x18, 0x5E, 0x43, 0x24, 0xF5, 0x54, 0xA8, +0x01, 0x4A, 0x24, 0xF5, 0x54, 0xC8, 0x24, 0xF5, +0x52, 0xA0, 0x12, 0x2A, 0x01, 0x6A, 0x24, 0xF5, +0x52, 0xC0, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, +0x31, 0x6C, 0x61, 0xF3, 0x15, 0x4C, 0x00, 0x6D, +0x04, 0xF7, 0x10, 0x6E, 0x01, 0x6F, 0x40, 0xEA, +0x00, 0x68, 0x50, 0x67, 0x4F, 0x97, 0x4E, 0x91, +0x4D, 0x90, 0x28, 0x63, 0x00, 0xEF, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x40, 0x98, 0x84, 0x41, +0x40, 0xEA, 0x01, 0x6B, 0x4C, 0xEB, 0x5F, 0xF7, +0x17, 0x2B, 0x62, 0x17, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x40, 0x98, 0x87, 0x41, 0x11, 0x4C, +0x40, 0xEA, 0x4A, 0xD2, 0xC0, 0xF3, 0x40, 0x98, +0x87, 0x41, 0x12, 0x4C, 0x40, 0xEA, 0x4A, 0x93, +0xFF, 0x6C, 0xFA, 0x4B, 0x8C, 0xEB, 0x02, 0x5B, +0xDB, 0x60, 0xA8, 0x17, 0x64, 0x67, 0x66, 0xED, +0x44, 0x67, 0xAB, 0xED, 0x44, 0xED, 0x6D, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0xD1, +0x06, 0xD0, 0x40, 0xA5, 0x63, 0xA5, 0x80, 0x76, +0x00, 0xF6, 0x40, 0x32, 0x6E, 0xEA, 0x61, 0xA5, +0x60, 0x33, 0x60, 0x33, 0x6E, 0xEA, 0x62, 0xA5, +0x60, 0x33, 0x6E, 0xEA, 0x40, 0xDC, 0x45, 0xA5, +0x64, 0xA5, 0x40, 0x32, 0x00, 0xF6, 0x60, 0x33, +0x40, 0x32, 0x6E, 0xEA, 0x67, 0xA5, 0x6E, 0xEA, +0x66, 0xA5, 0x60, 0x33, 0x6E, 0xEA, 0x41, 0xDC, +0x49, 0xA5, 0x68, 0xA5, 0x40, 0x32, 0x00, 0xF6, +0x60, 0x33, 0x40, 0x32, 0x6E, 0xEA, 0x6B, 0xA5, +0x6E, 0xEA, 0x6A, 0xA5, 0x60, 0x33, 0x6E, 0xEA, +0x42, 0xDC, 0x4D, 0xA5, 0x6C, 0xA5, 0x40, 0x32, +0x00, 0xF6, 0x60, 0x33, 0x40, 0x32, 0x6E, 0xEA, +0x6F, 0xA5, 0x6E, 0xEA, 0x6E, 0xA5, 0x60, 0x33, +0x6E, 0xEA, 0x43, 0xDC, 0x4B, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF4, 0x14, 0x4A, 0xA3, 0x9C, +0xFF, 0x6E, 0x30, 0xF0, 0x20, 0x6B, 0x05, 0x67, +0xCC, 0xE8, 0x62, 0xF3, 0x14, 0x4B, 0x08, 0x30, +0x61, 0xE0, 0x00, 0x98, 0x1F, 0xF7, 0x00, 0x6F, +0x0C, 0xEF, 0x00, 0xA2, 0x01, 0x4A, 0x00, 0xF6, +0x00, 0x30, 0x0E, 0xEF, 0x00, 0x9C, 0x0A, 0xEF, +0xA2, 0x30, 0x30, 0x67, 0xCC, 0xE9, 0x28, 0x31, +0x65, 0xE1, 0x30, 0xF0, 0x20, 0x6F, 0x20, 0x99, +0x24, 0xF2, 0xE4, 0x9F, 0x02, 0x30, 0xCC, 0xE8, +0x2C, 0xEF, 0x38, 0x67, 0x2E, 0xEF, 0x00, 0xF6, +0xA2, 0x31, 0x28, 0x31, 0x65, 0xE1, 0x20, 0x99, +0x08, 0x30, 0x6D, 0xE0, 0x22, 0x31, 0xCC, 0xE9, +0x60, 0x9B, 0x30, 0xF0, 0x20, 0x6E, 0xE4, 0xF2, +0xD4, 0x9E, 0x60, 0x33, 0xEE, 0xE9, 0xCC, 0xEB, +0x6E, 0xE9, 0x61, 0x9C, 0x24, 0xDC, 0x6E, 0xE9, +0x62, 0x9C, 0x25, 0xDC, 0x6E, 0xE9, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF4, 0x1E, 0x4B, 0x2E, 0xED, +0x6A, 0xEA, 0x26, 0xDC, 0xA7, 0xDC, 0x10, 0x4C, +0xBA, 0x61, 0x20, 0x11, 0x51, 0xA5, 0x70, 0xA5, +0xC0, 0x76, 0x40, 0x32, 0x00, 0xF6, 0x60, 0x33, +0x40, 0x32, 0x6E, 0xEA, 0x73, 0xA5, 0x6E, 0xEA, +0x72, 0xA5, 0x60, 0x33, 0x6E, 0xEA, 0x44, 0xDC, +0x55, 0xA5, 0x74, 0xA5, 0x40, 0x32, 0x00, 0xF6, +0x60, 0x33, 0x40, 0x32, 0x6E, 0xEA, 0x77, 0xA5, +0x6E, 0xEA, 0x76, 0xA5, 0x60, 0x33, 0x6E, 0xEA, +0x45, 0xDC, 0x62, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF4, 0x14, 0x4A, 0x04, 0xD5, 0xE5, 0x9C, +0xFF, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x27, 0x67, +0x0C, 0xE9, 0x62, 0xF3, 0x14, 0x4B, 0x28, 0x31, +0x75, 0xE1, 0xA0, 0x9D, 0x1F, 0xF7, 0x00, 0x69, +0xAC, 0xE9, 0x19, 0x65, 0x20, 0xA2, 0x00, 0xF6, +0x20, 0x35, 0x38, 0x67, 0xAA, 0xE9, 0xA0, 0x9C, +0x38, 0x67, 0xAE, 0xE9, 0xE2, 0x35, 0x01, 0xD1, +0x25, 0x67, 0x0C, 0xE9, 0x28, 0x31, 0x00, 0xD5, +0x75, 0xE1, 0x30, 0xF0, 0x20, 0x69, 0xA0, 0x9D, +0x24, 0xF2, 0x24, 0x99, 0xAC, 0xE9, 0x01, 0x95, +0x2A, 0xED, 0x00, 0xF6, 0xE2, 0x31, 0x28, 0x31, +0x65, 0xE1, 0x20, 0x99, 0xB8, 0x67, 0x22, 0x31, +0x0C, 0xE9, 0x2A, 0xED, 0x00, 0x95, 0xA2, 0x31, +0x0C, 0xE9, 0x28, 0x31, 0x6D, 0xE1, 0x60, 0x9B, +0x30, 0xF0, 0x20, 0x68, 0xE4, 0xF2, 0x14, 0x98, +0x60, 0x33, 0x30, 0xF0, 0x20, 0x69, 0x0C, 0xEB, +0x18, 0x67, 0x0E, 0xEB, 0x01, 0x9C, 0x66, 0xDC, +0x63, 0xF4, 0x1B, 0x49, 0x0E, 0xEB, 0x02, 0x9C, +0x67, 0xDC, 0x2A, 0xEA, 0x0E, 0xEB, 0x03, 0x9C, +0x68, 0xDC, 0x0E, 0xEB, 0x69, 0xDC, 0x02, 0x61, +0x0C, 0x6A, 0xB4, 0x10, 0x04, 0x9C, 0x01, 0x4A, +0x0E, 0xEB, 0x6A, 0xDC, 0x6E, 0xEF, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF4, 0x1C, 0x4B, 0x6A, 0xEA, +0xEB, 0xDC, 0x18, 0x4C, 0xA4, 0x61, 0x04, 0x95, +0x59, 0xA5, 0x78, 0xA5, 0x00, 0xF1, 0x00, 0x76, +0x40, 0x32, 0x00, 0xF6, 0x60, 0x33, 0x40, 0x32, +0x6E, 0xEA, 0x7B, 0xA5, 0x6E, 0xEA, 0x7A, 0xA5, +0x60, 0x33, 0x6E, 0xEA, 0x46, 0xDC, 0x5D, 0xA5, +0x7C, 0xA5, 0x40, 0x32, 0x00, 0xF6, 0x60, 0x33, +0x40, 0x32, 0x6E, 0xEA, 0x7F, 0xA5, 0x6E, 0xEA, +0x7E, 0xA5, 0x60, 0x33, 0x6E, 0xEA, 0x47, 0xDC, +0x80, 0xF0, 0x06, 0x61, 0x00, 0x6D, 0xC7, 0x9C, +0xFF, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xE6, 0x67, +0x6C, 0xEF, 0x62, 0xF3, 0x14, 0x4A, 0xE8, 0x37, +0x5D, 0xE7, 0xE0, 0x9F, 0x1F, 0xF7, 0x00, 0x68, +0x30, 0xF0, 0x20, 0x69, 0x0C, 0xEF, 0x30, 0xF0, +0x20, 0x68, 0x63, 0xF4, 0x14, 0x48, 0xA1, 0xE0, +0x00, 0xA0, 0x24, 0xF2, 0x04, 0x49, 0x20, 0x99, +0x00, 0xF6, 0x00, 0x30, 0x0E, 0xEF, 0x00, 0x9C, +0x0A, 0xEF, 0xC2, 0x30, 0xF0, 0x67, 0x6C, 0xEF, +0xE8, 0x37, 0x5D, 0xE7, 0x00, 0xD7, 0xE0, 0x9F, +0x02, 0x30, 0x6C, 0xE8, 0x2C, 0xEF, 0x38, 0x67, +0xEE, 0xE9, 0x00, 0xF6, 0xC2, 0x37, 0xE8, 0x37, +0x5D, 0xE7, 0xE0, 0x9F, 0x08, 0x30, 0x41, 0xE0, +0xE2, 0x37, 0x6C, 0xEF, 0x2E, 0xEF, 0x20, 0x98, +0x30, 0xF0, 0x20, 0x68, 0xE4, 0xF2, 0x14, 0x98, +0x20, 0x31, 0x06, 0x75, 0x0C, 0xE9, 0x2E, 0xEF, +0x21, 0x9C, 0xE8, 0xDC, 0x2E, 0xEF, 0x22, 0x9C, +0xE9, 0xDC, 0x2E, 0xEF, 0x23, 0x9C, 0xEA, 0xDC, +0x2E, 0xEF, 0xEB, 0xDC, 0x02, 0x61, 0x0E, 0x6A, +0x3D, 0x10, 0x00, 0xF6, 0xE2, 0x31, 0x28, 0x31, +0x45, 0xE1, 0x20, 0x99, 0x01, 0x4D, 0x20, 0x31, +0x0C, 0xE9, 0xE2, 0x30, 0x18, 0x65, 0x02, 0x30, +0x6C, 0xE8, 0x00, 0xD1, 0x08, 0x30, 0x30, 0xF0, +0x20, 0x69, 0x41, 0xE0, 0x24, 0xF2, 0x04, 0x49, +0x20, 0x99, 0x00, 0x98, 0x6C, 0xEF, 0xE8, 0x37, +0x2C, 0xE8, 0x00, 0x91, 0x0E, 0xE9, 0x04, 0x9C, +0x2E, 0xE8, 0x38, 0x67, 0x6C, 0xE9, 0x28, 0x31, +0x45, 0xE1, 0x20, 0x99, 0x49, 0xE7, 0x00, 0xD0, +0x40, 0x9A, 0x1F, 0xF7, 0x00, 0x68, 0x0C, 0xE9, +0x00, 0x90, 0x42, 0x32, 0x6C, 0xEA, 0x2E, 0xE8, +0x0E, 0xEA, 0x05, 0x9C, 0x66, 0x9C, 0x4C, 0xDC, +0x0E, 0xEA, 0x4D, 0xDC, 0x6E, 0xEA, 0x4E, 0xEE, +0x07, 0x75, 0x4E, 0xDC, 0xCF, 0xDC, 0x04, 0x60, +0x20, 0x4C, 0x7D, 0x17, 0x0A, 0x6A, 0x02, 0x10, +0x01, 0x6A, 0x4B, 0xEA, 0x07, 0x91, 0x06, 0x90, +0x04, 0x63, 0x20, 0xE8, 0xF7, 0x63, 0x11, 0x62, +0x10, 0xD1, 0x0F, 0xD0, 0x04, 0x67, 0x80, 0x18, +0xD9, 0x44, 0x00, 0x52, 0x06, 0xD2, 0x80, 0xF0, +0x12, 0x61, 0x06, 0x93, 0x48, 0x37, 0xA1, 0x47, +0x70, 0x36, 0x82, 0x47, 0x63, 0x47, 0xA8, 0x35, +0x88, 0x34, 0x68, 0x33, 0x00, 0x69, 0x50, 0x67, +0xD9, 0xE0, 0xB5, 0xE0, 0x91, 0xE0, 0x6D, 0xE0, +0x04, 0xD1, 0x07, 0xD7, 0x18, 0x10, 0x20, 0x9E, +0xE0, 0x9A, 0x20, 0xDA, 0xE0, 0xDE, 0x20, 0x9D, +0xE1, 0x9A, 0xF0, 0x4E, 0x21, 0xDA, 0xE0, 0xDD, +0x20, 0x9C, 0xE2, 0x9A, 0xF0, 0x4D, 0x22, 0xDA, +0xE0, 0xDC, 0xE3, 0x9A, 0x20, 0x9B, 0xF0, 0x4C, +0x23, 0xDA, 0xE0, 0xDB, 0x04, 0x97, 0x10, 0x4A, +0xF0, 0x4B, 0x04, 0x4F, 0x04, 0xD7, 0x04, 0x97, +0x07, 0x91, 0xE7, 0xE1, 0x22, 0xEF, 0xE3, 0x61, +0x01, 0x69, 0x08, 0xD1, 0x5C, 0x10, 0x10, 0x48, +0x47, 0x40, 0x09, 0x4A, 0x05, 0xD0, 0x09, 0xD2, +0x0B, 0xD0, 0x05, 0x94, 0xFF, 0x68, 0x30, 0xF0, +0x20, 0x69, 0x80, 0x9C, 0x62, 0xF3, 0x14, 0x49, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0x35, 0xA2, 0x32, +0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, 0x40, 0x9A, +0x62, 0xF7, 0x14, 0x4B, 0x0C, 0xD4, 0x42, 0x32, +0x0C, 0xEA, 0x48, 0x32, 0x69, 0xE2, 0x80, 0x9A, +0x07, 0xD5, 0x08, 0x6D, 0x04, 0xD3, 0x80, 0x18, +0xD5, 0x44, 0x0A, 0xD2, 0x07, 0x92, 0x04, 0x97, +0x10, 0x6D, 0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, +0x40, 0x9A, 0x42, 0x32, 0x0C, 0xEA, 0x48, 0x32, +0xE9, 0xE2, 0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, +0x07, 0xD2, 0x0C, 0x92, 0x04, 0x93, 0x18, 0x6D, +0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, 0x40, 0x9A, +0x42, 0x32, 0x0C, 0xEA, 0x48, 0x32, 0x69, 0xE2, +0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, 0x07, 0x94, +0x0A, 0x93, 0x0C, 0x95, 0x04, 0x97, 0x8E, 0xEB, +0x00, 0xF6, 0xA2, 0x34, 0x88, 0x34, 0x25, 0xE4, +0x80, 0x99, 0x05, 0x91, 0x82, 0x34, 0x0C, 0xEC, +0x88, 0x34, 0xF1, 0xE4, 0x80, 0x9C, 0x8E, 0xEB, +0x4E, 0xEB, 0x60, 0xD9, 0x09, 0x92, 0x04, 0x49, +0x05, 0xD1, 0x4A, 0xE9, 0xAE, 0x61, 0x08, 0x93, +0x0B, 0x90, 0x01, 0x4B, 0x08, 0xD3, 0x08, 0x94, +0x06, 0x95, 0xA2, 0xEC, 0xA0, 0x61, 0x06, 0x92, +0x11, 0x97, 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, -0x06, 0xD4, 0x09, 0xD7, 0x07, 0xD5, 0x08, 0xD6, -0x06, 0x04, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x46, 0x67, 0x01, 0x4A, -0x05, 0x67, 0x0C, 0xD6, 0x27, 0x67, 0x1F, 0x22, -0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, -0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, 0x04, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, -0x49, 0xE0, 0x40, 0x9A, 0x0C, 0x94, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, -0x40, 0xEA, 0x0C, 0x93, 0x24, 0xEA, 0x6F, 0xEA, -0x04, 0x93, 0x6C, 0xEA, 0x4D, 0xE9, 0x1F, 0xF7, -0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, -0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x41, 0xE0, -0x20, 0xD8, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x1F, 0xF7, 0x00, 0x6A, -0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x26, 0x67, -0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x55, 0xE5, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0x9D, 0xA0, 0xF3, -0x44, 0x9A, 0x91, 0x67, 0x2C, 0xE8, 0x40, 0xEA, -0x06, 0xEA, 0x50, 0x67, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, -0xFF, 0x68, 0xAC, 0xE8, 0xD0, 0x67, 0x41, 0xF4, -0x10, 0x6C, 0x7F, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x99, 0xD0, 0x67, 0x41, 0xF6, 0x10, 0x6C, -0x7F, 0x6D, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x85, 0x67, 0xA6, 0x67, -0xC7, 0x67, 0x00, 0x18, 0xD5, 0xD3, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0xFF, 0x6A, 0x8C, 0xEA, -0x04, 0xD2, 0x04, 0x95, 0x30, 0xF0, 0x20, 0x69, -0xA6, 0xF6, 0x00, 0x49, 0xA8, 0x34, 0x31, 0xE4, -0x05, 0xD4, 0x05, 0x90, 0x62, 0xF1, 0x02, 0x4A, -0x48, 0x32, 0x29, 0xE2, 0x88, 0xF5, 0xCE, 0xA0, -0x64, 0xA2, 0x01, 0x6A, 0x4C, 0xEE, 0x4C, 0xEB, -0xC4, 0x36, 0x88, 0xF5, 0xED, 0xA4, 0xD9, 0xE3, -0x88, 0xF5, 0x6F, 0xA0, 0x4C, 0xEF, 0xF0, 0x37, -0x4C, 0xEB, 0x74, 0x33, 0x6D, 0xE7, 0x07, 0xD3, -0x04, 0x93, 0x85, 0x67, 0xC4, 0xF2, 0x0C, 0x4C, -0x64, 0x32, 0x29, 0xE2, 0x84, 0x34, 0x31, 0xE4, -0xA8, 0xF5, 0x41, 0xA2, 0xA8, 0xA4, 0x03, 0x6C, -0x8C, 0xEA, 0x8C, 0xED, 0x40, 0x32, 0xA0, 0x35, -0x48, 0x32, 0x49, 0xE5, 0x30, 0xF0, 0x20, 0x68, -0x06, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xD6, -0xC0, 0xF3, 0x64, 0x98, 0xA3, 0xF4, 0xD0, 0x9A, -0x01, 0x6D, 0xE3, 0xF2, 0x1D, 0x4C, 0xAB, 0xED, -0x40, 0xEB, 0x08, 0x94, 0x07, 0x96, 0x06, 0x93, -0xC0, 0xF3, 0x44, 0x98, 0x8D, 0xEE, 0x6D, 0xEE, -0xE3, 0xF3, 0x10, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, -0x40, 0xEA, 0x04, 0x92, 0x05, 0x94, 0x01, 0x6D, -0x62, 0xF1, 0x08, 0x4A, 0xA8, 0xF5, 0xC6, 0xAC, -0x48, 0x32, 0x29, 0xE2, 0x62, 0xAA, 0xC0, 0x36, -0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x36, 0x6D, 0xEE, -0xE3, 0xF3, 0x08, 0x6C, 0xAB, 0xED, 0x40, 0xEA, -0x04, 0x92, 0x05, 0x95, 0xE3, 0xF3, 0x0C, 0x6C, -0x62, 0xF1, 0x09, 0x4A, 0xA8, 0xF5, 0xCA, 0xAD, -0x48, 0x32, 0x29, 0xE2, 0x62, 0xAA, 0xC0, 0x36, -0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x36, 0x01, 0x6D, -0x6D, 0xEE, 0xAB, 0xED, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x29, 0xF0, -0xC8, 0xA1, 0xC3, 0xF1, 0xBC, 0x9B, 0xE3, 0xF3, -0x10, 0x6C, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x00, 0x6B, -0x28, 0xF1, 0x73, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0xCE, 0xF7, 0x13, 0x4B, 0x68, 0xF1, 0x60, 0xDA, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, -0x7C, 0x9B, 0x54, 0x34, 0x20, 0x68, 0x71, 0xE4, -0xA0, 0xA4, 0xF8, 0x6B, 0x01, 0x4A, 0xAC, 0xEB, -0x4E, 0xE8, 0x60, 0xC4, 0xF2, 0x28, 0x80, 0x18, -0x3A, 0x4A, 0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF7, -0x0A, 0xC2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x68, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x28, 0xF1, -0x7C, 0xC2, 0x69, 0xA4, 0x28, 0xF1, 0x71, 0xC2, -0x6A, 0xA4, 0x28, 0xF1, 0x7B, 0xC2, 0xAB, 0xA4, -0x0F, 0x6B, 0xAC, 0xEB, 0x48, 0xF1, 0x65, 0xC2, -0x6B, 0xA4, 0x72, 0x33, 0x48, 0xF1, 0x62, 0xC2, -0x8E, 0xA4, 0x01, 0x6B, 0x8C, 0xEB, 0x28, 0xF1, -0x73, 0xC2, 0x30, 0xF0, 0x20, 0x6B, 0xCE, 0xF7, -0x13, 0x4B, 0x68, 0xF1, 0x60, 0xDA, 0x00, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0x60, 0xA4, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x28, 0xF1, -0x7C, 0xC2, 0x61, 0xA4, 0x28, 0xF1, 0x71, 0xC2, -0x62, 0xA4, 0x28, 0xF1, 0x7B, 0xC2, 0xA3, 0xA4, -0x0F, 0x6B, 0xAC, 0xEB, 0x48, 0xF1, 0x65, 0xC2, -0x63, 0xA4, 0x72, 0x33, 0x48, 0xF1, 0x62, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x4C, 0x72, 0x03, 0x61, -0x85, 0x67, 0x80, 0x18, 0x13, 0x4A, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x8C, 0xEA, 0x0E, 0x72, 0x03, 0x60, -0x11, 0x72, 0x05, 0x60, 0x08, 0x10, 0x85, 0x67, -0x80, 0x18, 0xA6, 0x2A, 0x19, 0x10, 0x85, 0x67, -0x80, 0x18, 0x01, 0x4A, 0x15, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x60, 0x9A, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF2, 0x84, 0x9C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, 0x7C, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, 0xFF, 0x6A, +0x04, 0xD0, 0x44, 0x67, 0x06, 0x67, 0x90, 0x67, +0xAC, 0x36, 0xA2, 0x67, 0x80, 0x18, 0xAF, 0x45, +0x00, 0x52, 0x00, 0x6B, 0x03, 0x61, 0xE0, 0xF0, +0x50, 0xD8, 0x01, 0x6B, 0x05, 0x97, 0x04, 0x90, +0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, +0x14, 0xD4, 0x17, 0xD7, 0x60, 0xA6, 0x43, 0xA6, +0xA7, 0x35, 0x00, 0xF6, 0x60, 0x33, 0x4E, 0xEB, +0x40, 0x9C, 0x4E, 0xEB, 0x41, 0xA6, 0x40, 0x32, +0x40, 0x32, 0x4E, 0xEB, 0x42, 0xA6, 0x40, 0x32, +0x4E, 0xEB, 0x0D, 0xD3, 0x41, 0x9C, 0x67, 0xA6, +0x4E, 0xEB, 0x44, 0xA6, 0x00, 0xF6, 0x40, 0x32, +0x4E, 0xEB, 0x45, 0xA6, 0x40, 0x32, 0x40, 0x32, +0x4E, 0xEB, 0x46, 0xA6, 0x40, 0x32, 0x4E, 0xEB, +0x05, 0xD3, 0x42, 0x9C, 0x6B, 0xA6, 0x4E, 0xEB, +0x48, 0xA6, 0x00, 0xF6, 0x40, 0x32, 0x4E, 0xEB, +0x49, 0xA6, 0x40, 0x32, 0x40, 0x32, 0x4E, 0xEB, +0x4A, 0xA6, 0x40, 0x32, 0x4E, 0xEB, 0x08, 0xD3, +0x43, 0x9C, 0x6F, 0xA6, 0x4E, 0xEB, 0x4C, 0xA6, +0x00, 0xF6, 0x40, 0x32, 0x4E, 0xEB, 0x4D, 0xA6, +0x40, 0x32, 0x40, 0x32, 0x4E, 0xEB, 0x4E, 0xA6, +0x0F, 0xD5, 0x0E, 0xD5, 0x40, 0x32, 0x4E, 0xEB, +0x07, 0xD3, 0x09, 0xD4, 0x07, 0x92, 0xFF, 0x68, +0x30, 0xF0, 0x20, 0x69, 0x42, 0x32, 0x04, 0xD2, +0x42, 0x32, 0x0C, 0xEA, 0x62, 0xF7, 0x14, 0x49, +0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, 0x08, 0x6D, +0x80, 0x18, 0xD5, 0x44, 0x08, 0x93, 0x06, 0xD2, +0x10, 0x6D, 0x62, 0x33, 0x43, 0x67, 0x0C, 0xEA, +0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, 0x0A, 0xD3, +0x80, 0x18, 0xD5, 0x44, 0x0B, 0xD2, 0x05, 0x92, +0x18, 0x6D, 0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, +0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, 0x09, 0x96, +0x0B, 0x95, 0x06, 0x94, 0x64, 0x9E, 0x0D, 0x97, +0xAE, 0xEC, 0x8E, 0xEB, 0x4E, 0xEB, 0x00, 0xF6, +0xE2, 0x32, 0x48, 0x32, 0x29, 0xE2, 0xA0, 0x9A, +0xE2, 0x32, 0x06, 0xD2, 0x42, 0x32, 0x0C, 0xEA, +0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, 0xAE, 0xEB, +0x08, 0x6D, 0x0B, 0xD3, 0x80, 0x18, 0xD5, 0x44, +0x0C, 0xD2, 0x04, 0x92, 0x10, 0x6D, 0x0C, 0xEA, +0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, 0x80, 0x18, +0xD5, 0x44, 0x04, 0xD2, 0x08, 0x92, 0x18, 0x6D, +0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, +0x80, 0x18, 0xD5, 0x44, 0x04, 0x93, 0x0C, 0x94, +0x09, 0x95, 0x05, 0x96, 0x6E, 0xEC, 0x65, 0x9D, +0xC2, 0x37, 0x05, 0xD7, 0x8E, 0xEB, 0x4E, 0xEB, +0x00, 0xF6, 0xC2, 0x32, 0x48, 0x32, 0x29, 0xE2, +0xA0, 0x9A, 0xE2, 0x32, 0x0C, 0xEA, 0x48, 0x32, +0x29, 0xE2, 0x80, 0x9A, 0xAE, 0xEB, 0x08, 0x6D, +0x04, 0xD3, 0x80, 0x18, 0xD5, 0x44, 0x0C, 0xD2, +0x06, 0x92, 0x10, 0x6D, 0x0C, 0xEA, 0x48, 0x32, +0x29, 0xE2, 0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, +0x06, 0xD2, 0x07, 0x92, 0x18, 0x6D, 0x0C, 0xEA, +0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, 0x80, 0x18, +0xD5, 0x44, 0x09, 0x95, 0x06, 0x93, 0x0C, 0x94, +0x08, 0x96, 0x0A, 0x97, 0x6E, 0xEC, 0x66, 0x9D, +0x8E, 0xEB, 0x4E, 0xEB, 0x00, 0xF6, 0xC2, 0x32, +0x48, 0x32, 0x29, 0xE2, 0xA0, 0x9A, 0xE2, 0x32, +0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, +0xAE, 0xEB, 0x08, 0x6D, 0x08, 0xD3, 0x80, 0x18, +0xD5, 0x44, 0x0A, 0xD2, 0x05, 0x92, 0x10, 0x6D, +0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, +0x80, 0x18, 0xD5, 0x44, 0x05, 0xD2, 0x0D, 0x92, +0x18, 0x6D, 0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, +0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, 0x09, 0x95, +0x05, 0x93, 0x0A, 0x94, 0x07, 0x96, 0x09, 0x97, +0x6E, 0xEC, 0x67, 0x9D, 0x20, 0x4F, 0x09, 0xD7, +0x8E, 0xEB, 0x4E, 0xEB, 0x00, 0xF6, 0xC2, 0x32, +0x48, 0x32, 0x29, 0xE2, 0xA0, 0x9A, 0x0E, 0x92, +0xAE, 0xEB, 0xFF, 0x4A, 0x07, 0xD3, 0x0E, 0xD2, +0xA0, 0xF0, 0x0F, 0x22, 0x62, 0x33, 0x62, 0x32, +0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, +0x08, 0x6D, 0x05, 0xD3, 0x80, 0x18, 0xD5, 0x44, +0x08, 0x94, 0x06, 0xD2, 0x10, 0x6D, 0x82, 0x34, +0x44, 0x67, 0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, +0x0A, 0xD4, 0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, +0x0D, 0xD2, 0x04, 0x92, 0x18, 0x6D, 0x0C, 0xEA, +0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, 0x80, 0x18, +0xD5, 0x44, 0x0B, 0x95, 0x09, 0x96, 0x06, 0x97, +0x00, 0xF6, 0xA2, 0x33, 0x68, 0x33, 0x2D, 0xE3, +0x80, 0x9B, 0x60, 0x9E, 0xA2, 0x35, 0x06, 0xD5, +0x8E, 0xEB, 0x0D, 0x94, 0xEE, 0xEB, 0x8E, 0xEB, +0x4E, 0xEB, 0xA2, 0x32, 0x0C, 0xEA, 0x48, 0x32, +0x29, 0xE2, 0x80, 0x9A, 0x08, 0x6D, 0x0D, 0xD3, +0x80, 0x18, 0xD5, 0x44, 0x0C, 0xD2, 0x05, 0x92, +0x10, 0x6D, 0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, +0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, 0x05, 0xD2, +0x08, 0x92, 0x18, 0x6D, 0x0C, 0xEA, 0x48, 0x32, +0x29, 0xE2, 0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, +0x04, 0x96, 0x09, 0x97, 0x05, 0x95, 0x00, 0xF6, +0xC2, 0x33, 0x68, 0x33, 0x2D, 0xE3, 0x80, 0x9B, +0x61, 0x9F, 0xC2, 0x36, 0x04, 0xD6, 0x8E, 0xEB, +0x0C, 0x94, 0x8E, 0xEB, 0xAE, 0xEB, 0x4E, 0xEB, +0xC2, 0x32, 0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, +0x80, 0x9A, 0x08, 0x6D, 0x05, 0xD3, 0x80, 0x18, +0xD5, 0x44, 0x0C, 0xD2, 0x06, 0x92, 0x10, 0x6D, +0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, 0x80, 0x9A, +0x80, 0x18, 0xD5, 0x44, 0x06, 0xD2, 0x07, 0x92, +0x18, 0x6D, 0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, +0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, 0x08, 0x97, +0x09, 0x95, 0x0C, 0x96, 0x00, 0xF6, 0xE2, 0x33, +0x68, 0x33, 0x2D, 0xE3, 0x80, 0x9B, 0x62, 0x9D, +0x06, 0x97, 0x08, 0x6D, 0x8E, 0xEB, 0xCE, 0xEB, +0xEE, 0xEB, 0x4E, 0xEB, 0x08, 0xD3, 0x0A, 0x93, +0x62, 0x32, 0x0C, 0xEA, 0x48, 0x32, 0x29, 0xE2, +0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, 0x0A, 0xD2, +0x04, 0x92, 0x10, 0x6D, 0x0C, 0xEA, 0x48, 0x32, +0x29, 0xE2, 0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, +0x0B, 0x94, 0x18, 0x6D, 0x04, 0xD2, 0x8C, 0xE8, +0x08, 0x30, 0x21, 0xE0, 0x80, 0x98, 0x80, 0x18, +0xD5, 0x44, 0x07, 0x95, 0x09, 0x96, 0x0A, 0x97, +0x00, 0xF6, 0xA2, 0x33, 0x68, 0x33, 0x25, 0xE3, +0x80, 0x99, 0x63, 0x9E, 0x04, 0x91, 0x8E, 0xEB, +0xEE, 0xEB, 0x2E, 0xEB, 0x4E, 0xEB, 0x07, 0xD3, +0x95, 0x16, 0x0F, 0x92, 0x14, 0x93, 0x0B, 0x95, +0x54, 0x34, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF3, +0x14, 0x4A, 0x91, 0xE3, 0x00, 0xF6, 0xA2, 0x33, +0x4D, 0xE3, 0xE0, 0xA3, 0x04, 0x93, 0x07, 0x91, +0x00, 0xF6, 0xE0, 0x37, 0x0C, 0xEB, 0x4D, 0xE3, +0xA0, 0xA3, 0x22, 0x36, 0xAE, 0xEF, 0xC2, 0x35, +0x0C, 0xED, 0x55, 0xE5, 0x60, 0xA5, 0x08, 0x95, +0x0C, 0xEE, 0x60, 0x33, 0xA2, 0x35, 0x05, 0xD5, +0x0C, 0xED, 0x55, 0xE5, 0xA0, 0xA5, 0x60, 0x33, +0xEE, 0xEB, 0xA0, 0x35, 0xAE, 0xEB, 0xA0, 0x9C, +0x17, 0x97, 0x59, 0xE6, 0xAE, 0xEB, 0x00, 0xF6, +0x62, 0x35, 0xA0, 0xC7, 0x62, 0x35, 0xA2, 0x31, +0x63, 0xC7, 0x21, 0xC7, 0xA2, 0xC7, 0x04, 0x95, +0x0B, 0x91, 0x00, 0xF6, 0xA2, 0x33, 0x4D, 0xE3, +0xE0, 0xA3, 0x08, 0x93, 0x22, 0x35, 0x00, 0xF6, +0xE0, 0x37, 0x0C, 0xEB, 0x4D, 0xE3, 0x60, 0xA3, +0x6E, 0xEF, 0xA2, 0x33, 0x0C, 0xEB, 0x4D, 0xE3, +0x60, 0xA3, 0x0C, 0xED, 0x55, 0xE5, 0x60, 0x33, +0x60, 0x33, 0x6E, 0xEF, 0x60, 0xA6, 0xC1, 0x9C, +0x60, 0x33, 0xEE, 0xEB, 0x17, 0x97, 0xCE, 0xEB, +0x00, 0xF6, 0x62, 0x36, 0xC4, 0xC7, 0x62, 0x36, +0xC2, 0x31, 0x67, 0xC7, 0x25, 0xC7, 0xC6, 0xC7, +0x08, 0x96, 0x04, 0x91, 0x00, 0xF6, 0xC2, 0x33, +0x07, 0x96, 0x4D, 0xE3, 0x60, 0xA3, 0x0C, 0xEE, +0x59, 0xE6, 0xC0, 0xA6, 0x22, 0x37, 0x00, 0xF6, +0x60, 0x33, 0xCE, 0xEB, 0xE2, 0x36, 0x0C, 0xEE, +0x59, 0xE6, 0xC0, 0xA6, 0xC0, 0x36, 0xC0, 0x36, +0xCE, 0xEB, 0xC0, 0xA5, 0xA2, 0x9C, 0xC0, 0x36, +0x6E, 0xEE, 0xAE, 0xEE, 0x17, 0x95, 0x00, 0xF6, +0xC2, 0x33, 0x68, 0xC5, 0xC2, 0x33, 0x62, 0x31, +0x29, 0xC5, 0x6A, 0xC5, 0xCB, 0xC5, 0x07, 0x95, +0x00, 0xF6, 0xA2, 0x33, 0x4D, 0xE3, 0xC0, 0xA3, +0x0B, 0x93, 0x00, 0xF6, 0xC0, 0x36, 0x0C, 0xEB, +0x4D, 0xE3, 0x60, 0xA3, 0xCE, 0xEB, 0x05, 0x96, +0xC2, 0x31, 0x0C, 0xE9, 0x45, 0xE1, 0xC0, 0xA1, +0xEC, 0xE8, 0x49, 0xE0, 0xC0, 0x36, 0xC0, 0x36, +0x6E, 0xEE, 0x60, 0xA2, 0x46, 0x67, 0x17, 0x97, +0x60, 0x33, 0x6E, 0xEA, 0x63, 0x9C, 0x6E, 0xEA, +0x00, 0xF6, 0x42, 0x33, 0x6C, 0xC7, 0x42, 0x33, +0x62, 0x34, 0x8D, 0xC7, 0x6E, 0xC7, 0x4F, 0xC7, +0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x44, 0x67, 0x65, 0x67, 0xE0, 0xF0, 0xB0, 0x9A, +0xE6, 0x67, 0xC3, 0x67, 0x80, 0x18, 0x0C, 0x46, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x05, 0x6B, 0x28, 0xF1, 0x6C, 0xDA, 0x09, 0x6B, -0x28, 0xF1, 0x68, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0xAC, 0xEA, 0x1C, 0x22, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xFF, 0x6D, -0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF4, -0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x28, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x01, 0x6E, 0x09, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0xFF, 0x6D, -0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x00, 0x6E, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, +0x14, 0xD4, 0x17, 0xD7, 0x60, 0xA6, 0x43, 0xA6, +0xA7, 0x35, 0x00, 0xF6, 0x60, 0x33, 0x4E, 0xEB, +0x40, 0x9C, 0x4E, 0xEB, 0x41, 0xA6, 0x40, 0x32, +0x40, 0x32, 0x4E, 0xEB, 0x42, 0xA6, 0x40, 0x32, +0x4E, 0xEB, 0x0A, 0xD3, 0x67, 0xA6, 0x41, 0x9C, +0x6E, 0xEA, 0x64, 0xA6, 0x00, 0xF6, 0x60, 0x33, +0x6E, 0xEA, 0x65, 0xA6, 0x60, 0x33, 0x60, 0x33, +0x6E, 0xEA, 0x66, 0xA6, 0x60, 0x33, 0x6E, 0xEA, +0x0B, 0xD2, 0x42, 0x9C, 0x6B, 0xA6, 0x4E, 0xEB, +0x48, 0xA6, 0x00, 0xF6, 0x40, 0x32, 0x4E, 0xEB, +0x49, 0xA6, 0x40, 0x32, 0x40, 0x32, 0x4E, 0xEB, +0x4A, 0xA6, 0x40, 0x32, 0x4E, 0xEB, 0x08, 0xD3, +0x43, 0x9C, 0x6F, 0xA6, 0x4E, 0xEB, 0x4C, 0xA6, +0x00, 0xF6, 0x40, 0x32, 0x4E, 0xEB, 0x4D, 0xA6, +0x40, 0x32, 0x40, 0x32, 0x4E, 0xEB, 0x4E, 0xA6, +0x0F, 0xD5, 0x0E, 0xD5, 0x40, 0x32, 0x4E, 0xEB, +0x09, 0xD3, 0x05, 0xD4, 0x0B, 0x92, 0xFF, 0x69, +0x30, 0xF0, 0x20, 0x68, 0x42, 0x32, 0x0D, 0xD2, +0x42, 0x32, 0x2C, 0xEA, 0x62, 0xF3, 0x14, 0x48, +0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, 0x08, 0x6D, +0x80, 0x18, 0xD5, 0x44, 0x08, 0x93, 0x06, 0xD2, +0x10, 0x6D, 0x62, 0x33, 0x43, 0x67, 0x2C, 0xEA, +0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, 0x04, 0xD3, +0x80, 0x18, 0xD5, 0x44, 0x07, 0xD2, 0x09, 0x92, +0x18, 0x6D, 0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, +0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, 0x05, 0x96, +0x07, 0x95, 0x06, 0x94, 0x64, 0x9E, 0xAE, 0xEC, +0x8E, 0xEB, 0x0A, 0x94, 0x4E, 0xEB, 0x00, 0xF6, +0x82, 0x32, 0x48, 0x32, 0x09, 0xE2, 0xA0, 0x9A, +0xAE, 0xEB, 0x04, 0x95, 0x06, 0xD3, 0xA2, 0x32, +0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, +0x08, 0x6D, 0x80, 0x18, 0xD5, 0x44, 0x09, 0x96, +0x0C, 0xD2, 0x10, 0x6D, 0xC2, 0x36, 0x46, 0x67, +0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, +0x04, 0xD6, 0x80, 0x18, 0xD5, 0x44, 0x07, 0xD2, +0x0A, 0x92, 0x18, 0x6D, 0x2C, 0xEA, 0x48, 0x32, +0x09, 0xE2, 0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, +0x07, 0x93, 0x05, 0x95, 0x0C, 0x94, 0x0B, 0x96, +0x6E, 0xEC, 0x65, 0x9D, 0x8E, 0xEB, 0x4E, 0xEB, +0x00, 0xF6, 0xC2, 0x32, 0x48, 0x32, 0x09, 0xE2, +0xA0, 0x9A, 0xAE, 0xEB, 0x07, 0xD3, 0x04, 0x93, +0x08, 0x6D, 0x62, 0x32, 0x2C, 0xEA, 0x48, 0x32, +0x09, 0xE2, 0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, +0x0C, 0xD2, 0x0A, 0x94, 0x10, 0x6D, 0x82, 0x34, +0x44, 0x67, 0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, +0x0A, 0xD4, 0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, +0x0B, 0x93, 0x18, 0x6D, 0x04, 0xD2, 0x2C, 0xEB, +0x68, 0x33, 0x0D, 0xE3, 0x80, 0x9B, 0x80, 0x18, +0xD5, 0x44, 0x05, 0x96, 0x04, 0x95, 0x0C, 0x94, +0x66, 0x9E, 0xAE, 0xEC, 0x8E, 0xEB, 0x08, 0x94, +0x4E, 0xEB, 0x00, 0xF6, 0x82, 0x32, 0x48, 0x32, +0x09, 0xE2, 0xA0, 0x9A, 0xAE, 0xEB, 0x0A, 0x95, +0x04, 0xD3, 0xA2, 0x32, 0x2C, 0xEA, 0x48, 0x32, +0x09, 0xE2, 0x80, 0x9A, 0x08, 0x6D, 0x80, 0x18, +0xD5, 0x44, 0x0A, 0xD2, 0x0D, 0x92, 0x10, 0x6D, +0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, +0x80, 0x18, 0xD5, 0x44, 0x08, 0x93, 0x18, 0x6D, +0x0B, 0xD2, 0x2C, 0xEB, 0x68, 0x33, 0x0D, 0xE3, +0x80, 0x9B, 0x80, 0x18, 0xD5, 0x44, 0x05, 0x95, +0x0B, 0x96, 0x0A, 0x94, 0x67, 0x9D, 0xCE, 0xEC, +0x09, 0x96, 0x8E, 0xEB, 0x4E, 0xEB, 0x00, 0xF6, +0xC2, 0x32, 0x48, 0x32, 0x09, 0xE2, 0xA0, 0x9A, +0x05, 0x92, 0xAE, 0xEB, 0x09, 0xD3, 0x0E, 0x93, +0x20, 0x4A, 0x05, 0xD2, 0xFF, 0x4B, 0x0E, 0xD3, +0xA0, 0xF0, 0x14, 0x23, 0x07, 0x94, 0x08, 0x6D, +0x82, 0x34, 0x82, 0x32, 0x2C, 0xEA, 0x48, 0x32, +0x09, 0xE2, 0x0D, 0xD4, 0x80, 0x9A, 0x80, 0x18, +0xD5, 0x44, 0x04, 0x95, 0x0A, 0xD2, 0xA2, 0x35, +0x45, 0x67, 0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, +0x80, 0x9A, 0x08, 0xD5, 0x10, 0x6D, 0x80, 0x18, +0xD5, 0x44, 0x0B, 0xD2, 0x09, 0x92, 0x18, 0x6D, +0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, +0x80, 0x18, 0xD5, 0x44, 0x06, 0x96, 0x05, 0x95, +0x00, 0xF6, 0xC2, 0x33, 0x68, 0x33, 0x0D, 0xE3, +0x80, 0x9B, 0x60, 0x9D, 0x0A, 0x96, 0x08, 0x95, +0x8E, 0xEB, 0x0B, 0x94, 0xCE, 0xEB, 0x8E, 0xEB, +0x4E, 0xEB, 0xA2, 0x32, 0x2C, 0xEA, 0x48, 0x32, +0x09, 0xE2, 0x80, 0x9A, 0x08, 0x6D, 0x0A, 0xD3, +0x80, 0x18, 0xD5, 0x44, 0x09, 0x96, 0x0C, 0xD2, +0x10, 0x6D, 0xC2, 0x36, 0x46, 0x67, 0x2C, 0xEA, +0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, 0x08, 0xD6, +0x80, 0x18, 0xD5, 0x44, 0x0B, 0xD2, 0x06, 0x92, +0x18, 0x6D, 0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, +0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, 0x07, 0x94, +0x05, 0x95, 0x0C, 0x96, 0x00, 0xF6, 0x82, 0x33, +0x68, 0x33, 0x0D, 0xE3, 0x80, 0x9B, 0x61, 0x9D, +0x08, 0x95, 0x8E, 0xEB, 0x0B, 0x94, 0xCE, 0xEB, +0x8E, 0xEB, 0x4E, 0xEB, 0xA2, 0x32, 0x2C, 0xEA, +0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, 0x08, 0x6D, +0x0B, 0xD3, 0x80, 0x18, 0xD5, 0x44, 0x0C, 0xD2, +0x06, 0x96, 0x10, 0x6D, 0xC2, 0x36, 0x46, 0x67, +0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, +0x06, 0xD6, 0x80, 0x18, 0xD5, 0x44, 0x08, 0xD2, +0x07, 0x92, 0x18, 0x6D, 0x2C, 0xEA, 0x48, 0x32, +0x09, 0xE2, 0x80, 0x9A, 0x80, 0x18, 0xD5, 0x44, +0x04, 0x94, 0x05, 0x95, 0x0C, 0x96, 0x00, 0xF6, +0x82, 0x33, 0x68, 0x33, 0x0D, 0xE3, 0x80, 0x9B, +0x62, 0x9D, 0x06, 0x95, 0x8E, 0xEB, 0x08, 0x94, +0xCE, 0xEB, 0x8E, 0xEB, 0x4E, 0xEB, 0xA2, 0x32, +0x2C, 0xEA, 0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, +0x08, 0x6D, 0x08, 0xD3, 0x80, 0x18, 0xD5, 0x44, +0x06, 0xD2, 0x0D, 0x92, 0x10, 0x6D, 0x2C, 0xEA, +0x48, 0x32, 0x09, 0xE2, 0x80, 0x9A, 0x80, 0x18, +0xD5, 0x44, 0x04, 0x96, 0x18, 0x6D, 0x07, 0xD2, +0xCC, 0xE9, 0x28, 0x31, 0x05, 0xE1, 0x80, 0x99, +0x80, 0x18, 0xD5, 0x44, 0x09, 0x94, 0x05, 0x95, +0x06, 0x96, 0x00, 0xF6, 0x82, 0x33, 0x68, 0x33, +0x01, 0xE3, 0x80, 0x98, 0x63, 0x9D, 0x8E, 0xEB, +0x07, 0x94, 0xCE, 0xEB, 0x8E, 0xEB, 0x4E, 0xEB, +0x09, 0xD3, 0x8C, 0x16, 0x0F, 0x95, 0x06, 0x94, +0x14, 0x96, 0xB4, 0x32, 0x07, 0x95, 0x00, 0xF6, +0x82, 0x33, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0x35, +0xE4, 0xF2, 0xF4, 0x9C, 0xA2, 0x34, 0x2C, 0xEC, +0x68, 0x33, 0x49, 0xE6, 0x0D, 0xE3, 0x88, 0x34, +0x30, 0xF0, 0x20, 0x6E, 0x60, 0x9B, 0x11, 0xE4, +0x24, 0xF2, 0x04, 0x4E, 0xC0, 0x9E, 0x80, 0x9C, +0x60, 0x33, 0xEC, 0xEB, 0xCC, 0xEC, 0x05, 0xD5, +0x8E, 0xEB, 0x04, 0x94, 0xA0, 0x9A, 0x1F, 0xF7, +0x00, 0x6E, 0x82, 0x34, 0xAE, 0xEB, 0xA4, 0x67, +0x2C, 0xED, 0xA8, 0x35, 0x15, 0xE5, 0xA0, 0x9D, +0x0A, 0xD4, 0x17, 0x94, 0xCC, 0xED, 0xAE, 0xEB, +0x09, 0x95, 0x1E, 0x65, 0x2C, 0xED, 0xA8, 0x35, +0x15, 0xE5, 0xA0, 0x9D, 0xA2, 0x35, 0x2C, 0xED, +0xAE, 0xEB, 0x00, 0xF6, 0x62, 0x35, 0xA0, 0xC4, +0x62, 0x35, 0xA2, 0x36, 0xC1, 0xC4, 0x63, 0xC4, +0xA2, 0xC4, 0x0A, 0x95, 0x07, 0x94, 0x30, 0xF0, +0x20, 0x6E, 0x24, 0xF2, 0x04, 0x4E, 0x00, 0xF6, +0x82, 0x33, 0xA2, 0x34, 0x2C, 0xEC, 0x68, 0x33, +0x0D, 0xE3, 0x88, 0x34, 0x11, 0xE4, 0x60, 0x9B, +0xA0, 0x9C, 0xC0, 0x9E, 0x81, 0x9A, 0x60, 0x33, +0xCC, 0xED, 0xEC, 0xEB, 0xAE, 0xEB, 0x8E, 0xEB, +0x09, 0x94, 0xD8, 0x67, 0x82, 0x34, 0xA4, 0x67, +0x2C, 0xED, 0xA8, 0x35, 0x15, 0xE5, 0xA0, 0x9D, +0x0A, 0xD4, 0x17, 0x94, 0xCC, 0xED, 0xAE, 0xEB, +0x06, 0x95, 0x2C, 0xED, 0xA8, 0x35, 0x15, 0xE5, +0xA0, 0x9D, 0xA2, 0x35, 0x2C, 0xED, 0xAE, 0xEB, +0x00, 0xF6, 0x62, 0x35, 0xA4, 0xC4, 0x62, 0x35, +0xA2, 0x36, 0xC5, 0xC4, 0x67, 0xC4, 0xA6, 0xC4, +0x04, 0x94, 0x0A, 0x95, 0x30, 0xF0, 0x20, 0x6E, +0x00, 0xF6, 0x82, 0x33, 0xA2, 0x34, 0x2C, 0xEC, +0x68, 0x33, 0x0D, 0xE3, 0x88, 0x34, 0x11, 0xE4, +0x60, 0x9B, 0x24, 0xF2, 0x04, 0x4E, 0xA0, 0x9C, +0xC0, 0x9E, 0x82, 0x9A, 0x60, 0x33, 0xCC, 0xED, +0xEC, 0xEB, 0xAE, 0xEB, 0x8E, 0xEB, 0x06, 0x94, +0xD8, 0x67, 0x82, 0x34, 0xA4, 0x67, 0x2C, 0xED, +0xA8, 0x35, 0x15, 0xE5, 0xA0, 0x9D, 0x08, 0xD4, +0x17, 0x94, 0xCC, 0xED, 0xAE, 0xEB, 0x07, 0x95, +0x2C, 0xED, 0xA8, 0x35, 0x15, 0xE5, 0xA0, 0x9D, +0xA2, 0x35, 0x2C, 0xED, 0xAE, 0xEB, 0x00, 0xF6, +0x62, 0x35, 0xA8, 0xC4, 0x62, 0x35, 0xA2, 0x36, +0xC9, 0xC4, 0x6B, 0xC4, 0xAA, 0xC4, 0x09, 0x94, +0x08, 0x95, 0x30, 0xF0, 0x20, 0x6E, 0x00, 0xF6, +0x82, 0x33, 0xA2, 0x34, 0x2C, 0xEC, 0x68, 0x33, +0x88, 0x34, 0x0D, 0xE3, 0x11, 0xE4, 0x24, 0xF2, +0x04, 0x4E, 0xC0, 0x9E, 0x60, 0x9B, 0x80, 0x9C, +0x60, 0x33, 0xCC, 0xEC, 0xC3, 0x9A, 0x05, 0x92, +0xEC, 0xEB, 0x8E, 0xEB, 0x6E, 0xEE, 0x2C, 0xEA, +0x04, 0x93, 0x48, 0x32, 0x09, 0xE2, 0xA0, 0x9A, +0x2C, 0xEB, 0x68, 0x33, 0x58, 0x67, 0x01, 0xE3, +0x4C, 0xED, 0x40, 0x98, 0x17, 0x94, 0xAE, 0xEE, +0x42, 0x32, 0x2C, 0xEA, 0xCE, 0xEA, 0x00, 0xF6, +0x42, 0x33, 0x6C, 0xC4, 0x17, 0x95, 0x42, 0x33, +0x62, 0x34, 0x8D, 0xC5, 0x6E, 0xC5, 0x4F, 0xC5, +0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x06, 0x67, 0x44, 0x67, 0xAC, 0x36, +0x90, 0x67, 0xA2, 0x67, 0x80, 0x18, 0xD9, 0x44, +0xE0, 0xF0, 0x50, 0xD8, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x44, 0x67, 0x65, 0x67, 0xE0, 0xF0, 0xB0, 0x9A, +0xE6, 0x67, 0xC3, 0x67, 0x80, 0x18, 0x3E, 0x47, +0x05, 0x97, 0x00, 0x6A, 0x03, 0x63, 0x00, 0xEF, +0x40, 0x9D, 0x60, 0x9C, 0x6E, 0xEA, 0x40, 0xDC, +0x41, 0x9D, 0x61, 0x9C, 0x6E, 0xEA, 0x41, 0xDC, +0x62, 0x9C, 0x42, 0x9D, 0x6E, 0xEA, 0x42, 0xDC, +0x63, 0x9C, 0x43, 0x9D, 0x6E, 0xEA, 0x43, 0xDC, +0x20, 0xE8, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x0F, 0x69, 0xCC, 0xE9, +0xD2, 0x36, 0x0C, 0xD4, 0x0D, 0xD5, 0x07, 0x67, +0x06, 0xD6, 0x04, 0xD5, 0x00, 0x6A, 0x0E, 0x10, +0x04, 0x95, 0x90, 0x67, 0x80, 0x18, 0x98, 0x48, +0x04, 0x93, 0x0C, 0x94, 0xB0, 0x67, 0x10, 0x4B, +0xD0, 0x67, 0x04, 0xD3, 0x80, 0x18, 0x91, 0x48, +0x05, 0x92, 0x01, 0x4A, 0x05, 0xD2, 0x05, 0x93, +0x06, 0x92, 0x43, 0xEB, 0xED, 0x61, 0x0D, 0x93, +0x50, 0x32, 0x49, 0xE3, 0x10, 0x21, 0x70, 0x67, +0x00, 0x6C, 0xC0, 0xA2, 0xA0, 0xA3, 0x01, 0x4C, +0x23, 0xEC, 0xCE, 0xED, 0xA0, 0xC3, 0x01, 0x4A, +0x01, 0x4B, 0xF7, 0x61, 0x0C, 0x94, 0xB0, 0x67, +0xD0, 0x67, 0x80, 0x18, 0x91, 0x48, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x0F, 0x6A, 0xEC, 0xEA, 0x00, 0x6B, 0xF2, 0x37, +0x0C, 0xD4, 0x0E, 0xD6, 0x05, 0xD2, 0x07, 0xD7, +0x04, 0xD3, 0x01, 0x69, 0x11, 0x10, 0x11, 0x94, +0xFF, 0xF7, 0x1F, 0x6A, 0x2C, 0xEA, 0x42, 0x32, +0x2F, 0xC4, 0x4E, 0xC4, 0x0C, 0x94, 0x11, 0x95, +0xD0, 0x67, 0x01, 0x49, 0x80, 0x18, 0x91, 0x48, +0x06, 0x95, 0x90, 0x67, 0x80, 0x18, 0x98, 0x48, +0x04, 0x94, 0x10, 0x93, 0x0E, 0x92, 0x81, 0xE3, +0x07, 0x93, 0x89, 0xE2, 0x10, 0x4C, 0x23, 0xEB, +0x06, 0xD2, 0x04, 0xD4, 0xE4, 0x60, 0x05, 0x94, +0x18, 0x24, 0x11, 0x93, 0xFF, 0xF7, 0x1F, 0x6A, +0x2C, 0xEA, 0x42, 0x32, 0x4E, 0xC3, 0x2F, 0xC3, +0x0C, 0x94, 0x11, 0x95, 0xD0, 0x67, 0x80, 0x18, +0x91, 0x48, 0x06, 0x93, 0x00, 0x6A, 0xA0, 0xA3, +0x80, 0xA0, 0x01, 0x4A, 0x01, 0x4B, 0xAE, 0xEC, +0x80, 0xC0, 0x05, 0x94, 0x01, 0x48, 0x83, 0xEA, +0xF6, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x05, 0x67, +0x26, 0x67, 0xA7, 0x67, 0x4E, 0xC7, 0x4F, 0xC7, +0x04, 0x06, 0x80, 0x18, 0x91, 0x48, 0x00, 0x6A, +0x0A, 0x10, 0x10, 0x94, 0x4D, 0xE4, 0x9D, 0x67, +0x55, 0xE4, 0x51, 0xE1, 0xB0, 0xA5, 0x80, 0xA4, +0x01, 0x4A, 0xAE, 0xEC, 0x80, 0xC3, 0x0A, 0xEA, +0xF4, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x00, 0x6A, 0x4E, 0xC6, +0x4F, 0xC6, 0x05, 0x67, 0xA6, 0x67, 0x04, 0x06, +0x27, 0x67, 0x80, 0x18, 0x91, 0x48, 0x00, 0x6A, +0x0A, 0x10, 0x10, 0x94, 0x4D, 0xE4, 0x9D, 0x67, +0x55, 0xE4, 0x51, 0xE1, 0xB0, 0xA5, 0x80, 0xA4, +0x01, 0x4A, 0xAE, 0xEC, 0x80, 0xC3, 0x0A, 0xEA, +0xF4, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0x6D, 0xA4, 0x4C, 0xA4, +0x60, 0x33, 0x60, 0x33, 0x00, 0xF6, 0x40, 0x32, +0x6D, 0xEA, 0x6F, 0xA4, 0x6D, 0xEA, 0x6E, 0xA4, +0x60, 0x33, 0x6D, 0xEA, 0x01, 0x4A, 0x00, 0xF6, +0x42, 0x33, 0x6C, 0xC4, 0x42, 0x33, 0x62, 0x35, +0xAD, 0xC4, 0x6E, 0xC4, 0x4F, 0xC4, 0x20, 0xE8, +0x40, 0x9D, 0x60, 0x9C, 0x6E, 0xEA, 0x40, 0xDC, +0x41, 0x9D, 0x61, 0x9C, 0x6E, 0xEA, 0x41, 0xDC, +0x62, 0x9C, 0x42, 0x9D, 0x6E, 0xEA, 0x42, 0xDC, +0x63, 0x9C, 0x43, 0x9D, 0x6E, 0xEA, 0x43, 0xDC, +0x20, 0xE8, 0x00, 0x65, 0x6D, 0xA4, 0x4C, 0xA4, +0x01, 0x6D, 0x60, 0x33, 0x60, 0x33, 0x00, 0xF6, +0x40, 0x32, 0x6D, 0xEA, 0x6F, 0xA4, 0x6D, 0xEA, +0x6E, 0xA4, 0x60, 0x33, 0x6D, 0xEA, 0x6B, 0xA4, +0x46, 0x32, 0xAC, 0xEB, 0x05, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF0, 0x64, 0x9B, 0x6D, 0xEA, +0x00, 0xF6, 0x42, 0x33, 0x6C, 0xC4, 0x42, 0x33, +0x62, 0x35, 0x6E, 0xC4, 0x69, 0xA4, 0x4F, 0xC4, +0x48, 0xA4, 0x60, 0x33, 0x60, 0x33, 0x00, 0xF6, +0x40, 0x32, 0x6D, 0xEA, 0x6B, 0xA4, 0xAD, 0xC4, +0x01, 0x6D, 0x6D, 0xEA, 0x6A, 0xA4, 0x60, 0x33, +0x6D, 0xEA, 0x67, 0xA4, 0x46, 0x32, 0xAC, 0xEB, +0x05, 0x23, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, +0x64, 0x9B, 0x6D, 0xEA, 0x00, 0xF6, 0x42, 0x33, +0x68, 0xC4, 0x42, 0x33, 0x62, 0x35, 0x6A, 0xC4, +0x65, 0xA4, 0x4B, 0xC4, 0x44, 0xA4, 0x60, 0x33, +0x60, 0x33, 0x00, 0xF6, 0x40, 0x32, 0x6D, 0xEA, +0x67, 0xA4, 0xA9, 0xC4, 0x01, 0x6D, 0x6D, 0xEA, +0x66, 0xA4, 0x60, 0x33, 0x6D, 0xEA, 0x63, 0xA4, +0x46, 0x32, 0xAC, 0xEB, 0x05, 0x23, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF0, 0x64, 0x9B, 0x6D, 0xEA, +0x00, 0xF6, 0x42, 0x33, 0x64, 0xC4, 0x42, 0x33, +0x62, 0x35, 0x66, 0xC4, 0x60, 0xA4, 0x47, 0xC4, +0x43, 0xA4, 0x00, 0xF6, 0x60, 0x33, 0xA5, 0xC4, +0x6D, 0xEA, 0x61, 0xA4, 0x60, 0x33, 0x60, 0x33, +0x6D, 0xEA, 0x62, 0xA4, 0x60, 0x33, 0x6D, 0xEA, +0x46, 0x33, 0x40, 0xF6, 0x42, 0x32, 0x40, 0xC4, +0x62, 0x32, 0x42, 0x35, 0xA1, 0xC4, 0x42, 0xC4, +0x63, 0xC4, 0x20, 0xE8, 0xC0, 0xA4, 0x44, 0x67, +0x00, 0x6B, 0xA0, 0xA2, 0xE1, 0xA2, 0x01, 0x4B, +0xA4, 0x35, 0xFE, 0x37, 0xED, 0xED, 0x0F, 0x73, +0xA0, 0xC2, 0x01, 0x4A, 0xF6, 0x61, 0x0F, 0x4C, +0x40, 0xA4, 0xDE, 0x33, 0x44, 0x32, 0x40, 0xC4, +0x04, 0x23, 0x79, 0x6B, 0x6B, 0xEB, 0x6E, 0xEA, +0x40, 0xC4, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x06, 0x67, 0xC7, 0x67, +0x27, 0x67, 0x80, 0x18, 0x89, 0x48, 0x90, 0x67, +0x00, 0x6D, 0x10, 0x6E, 0x00, 0x18, 0xC5, 0xD8, +0x91, 0x67, 0xB0, 0x67, 0xD0, 0x67, 0x80, 0x18, +0x91, 0x48, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xED, 0x29, 0x5D, 0xCC, 0xEA, -0x03, 0x61, 0x17, 0x5A, 0x03, 0x60, 0x06, 0x10, -0x17, 0x5A, 0x04, 0x60, 0x01, 0x6A, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x23, 0xF4, 0x1C, 0x6C, -0x03, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, -0xF2, 0x17, 0x00, 0x65, 0xFF, 0x63, 0x01, 0xD0, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x74, 0x9B, -0x46, 0x67, 0x8E, 0xEB, 0x12, 0x23, 0x00, 0x6E, -0x66, 0x67, 0xE4, 0x67, 0xE6, 0xEE, 0x01, 0x68, -0x0C, 0xEF, 0x07, 0x2F, 0x01, 0x4B, 0xFF, 0x6F, -0xEC, 0xEB, 0x14, 0x73, 0x01, 0x4E, 0xF5, 0x61, -0x14, 0x6B, 0x8F, 0xEC, 0x44, 0xEB, 0xAC, 0xEC, -0x8D, 0xEA, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, -0xFC, 0x63, 0x07, 0x62, 0x07, 0xF4, 0x00, 0x6A, -0x04, 0xD2, 0x02, 0xF0, 0x00, 0x4A, 0x05, 0xD2, -0xA8, 0x35, 0x5D, 0x67, 0xB5, 0xE2, 0x44, 0x9D, -0xFF, 0x6C, 0xCC, 0xEC, 0x88, 0x34, 0x51, 0xE4, -0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0xB4, 0x9B, 0x30, 0xF0, -0x20, 0x6A, 0x0C, 0x96, 0xC0, 0xF3, 0x44, 0x9A, -0xEC, 0xED, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x01, 0x6C, 0x40, 0xEA, -0x07, 0x97, 0x01, 0x6A, 0x04, 0x63, 0x00, 0xEF, -0x00, 0x6A, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, -0x01, 0x6A, 0x20, 0xE8, 0x20, 0xE8, 0x00, 0x65, -0x00, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x01, 0x75, 0x33, 0x61, -0x01, 0x76, 0x17, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x34, 0x9A, 0x30, 0xF0, 0x20, 0x68, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0xC3, 0xF6, 0xDC, 0x9B, 0x03, 0xF0, 0x00, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x81, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0x34, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x68, 0xC3, 0xF6, 0xDC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, +0x00, 0x6D, 0x10, 0x6E, 0x00, 0x18, 0xC5, 0xD8, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x6D, 0xF4, 0x6E, +0x00, 0x18, 0xC5, 0xD8, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0x06, 0x67, 0x30, 0xF0, +0x20, 0x6E, 0x27, 0xF6, 0x1C, 0x4E, 0x17, 0xD7, +0x80, 0x18, 0x89, 0x48, 0x04, 0x04, 0x00, 0x6D, +0x10, 0x6E, 0x00, 0x18, 0xC5, 0xD8, 0x00, 0x6A, +0x18, 0x93, 0x0D, 0xD2, 0x06, 0x10, 0x80, 0x9B, +0x0D, 0x95, 0x01, 0x4A, 0x04, 0x4B, 0x95, 0xE5, +0x0D, 0xD5, 0x03, 0xEA, 0xF8, 0x61, 0x17, 0x92, +0x18, 0x93, 0x0D, 0x94, 0x00, 0x9A, 0x40, 0x9B, +0x00, 0x69, 0x0C, 0xD4, 0x49, 0xE0, 0x0E, 0xD2, +0x2A, 0x10, 0x04, 0x03, 0x4D, 0xE3, 0xA0, 0xA0, +0x80, 0xA3, 0x01, 0x48, 0xAE, 0xEC, 0x0E, 0x95, +0x80, 0xC3, 0xA3, 0xE8, 0x0F, 0x61, 0x0F, 0x72, +0x03, 0x61, 0x0C, 0x93, 0x10, 0x73, 0x18, 0x60, +0x17, 0x95, 0x01, 0x49, 0x28, 0x33, 0x71, 0xE5, +0x00, 0x9C, 0x18, 0x94, 0x6D, 0xE4, 0x60, 0x9B, +0x6D, 0xE0, 0x0E, 0xD3, 0x01, 0x4A, 0x10, 0x72, +0xE4, 0x61, 0x0C, 0x95, 0x10, 0x75, 0x08, 0x60, +0x30, 0xF0, 0x20, 0x6C, 0x04, 0x06, 0x27, 0xF6, +0x1C, 0x4C, 0xA6, 0x67, 0x80, 0x18, 0x91, 0x48, +0x0C, 0x92, 0xF0, 0x4A, 0x0C, 0xD2, 0x0C, 0x93, +0x10, 0x5B, 0x02, 0x61, 0x00, 0x6A, 0xD1, 0x17, +0x0D, 0x95, 0x0F, 0x6C, 0x10, 0x6E, 0x8C, 0xED, +0x0C, 0xD5, 0x08, 0x04, 0x00, 0x6D, 0x00, 0x18, +0xC5, 0xD8, 0x08, 0x05, 0x30, 0xF0, 0x20, 0x6C, +0x27, 0xF6, 0x1C, 0x4C, 0xC5, 0x67, 0x80, 0x18, +0x91, 0x48, 0x08, 0x04, 0x80, 0x18, 0x4F, 0x49, +0x0C, 0x92, 0x02, 0x22, 0x00, 0x6A, 0x1C, 0x10, +0x0D, 0x93, 0xFC, 0x23, 0x27, 0x10, 0x04, 0x03, +0x4D, 0xE3, 0xA0, 0xA0, 0x80, 0xA3, 0x01, 0x48, +0xAE, 0xEC, 0x80, 0xC3, 0x0E, 0x94, 0x83, 0xE8, +0x0E, 0x61, 0x0C, 0x95, 0x61, 0x42, 0xAE, 0xEB, +0x0E, 0x23, 0x17, 0x95, 0x01, 0x49, 0x28, 0x33, +0x71, 0xE5, 0x00, 0x9C, 0x18, 0x94, 0x6D, 0xE4, +0x60, 0x9B, 0x6D, 0xE0, 0x0E, 0xD3, 0x01, 0x4A, +0x0C, 0x95, 0xA3, 0xEA, 0xE4, 0x61, 0x0C, 0x93, +0x04, 0x02, 0x69, 0xE2, 0x80, 0xA2, 0x80, 0x6B, +0x6B, 0xEB, 0x8E, 0xEB, 0x60, 0xC2, 0x08, 0x04, +0x80, 0x18, 0x4F, 0x49, 0x08, 0x02, 0x04, 0x03, +0x0C, 0x04, 0xA0, 0xA2, 0xC0, 0xA3, 0x01, 0x4B, +0xCE, 0xED, 0xA0, 0xC2, 0x01, 0x4A, 0x8A, 0xEA, +0xF8, 0x61, 0x19, 0x96, 0x30, 0xF0, 0x20, 0x68, +0x27, 0xF6, 0x1C, 0x48, 0x90, 0x67, 0x08, 0x05, +0x80, 0x18, 0x91, 0x48, 0x90, 0x67, 0x80, 0x18, +0x6C, 0x49, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, +0x00, 0x6A, 0x0A, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x65, 0x67, 0x0C, 0x95, +0x46, 0x67, 0x04, 0xD7, 0x05, 0xD5, 0xC3, 0x67, +0x10, 0x6D, 0xE2, 0x67, 0x80, 0x18, 0x71, 0x49, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x09, 0xD5, 0x0A, 0xD6, +0x04, 0xD7, 0x01, 0x6D, 0x0A, 0x07, 0x09, 0x06, +0x80, 0x18, 0xCC, 0x49, 0x07, 0x97, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x10, 0x75, 0x66, 0x67, 0x00, 0x6A, 0xC7, 0x67, +0x06, 0x61, 0x0A, 0x97, 0xA3, 0x67, 0x80, 0x18, +0xD4, 0x49, 0x01, 0x5A, 0x58, 0x67, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6D, 0xF4, 0x6E, 0x00, 0x18, 0xC5, 0xD8, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x0C, 0xD4, 0x0F, 0xD7, 0x40, 0xAC, 0x00, 0xF3, +0x00, 0x6B, 0x00, 0xF3, 0x00, 0x6C, 0x4C, 0xEB, +0x8E, 0xEB, 0x01, 0x5B, 0x0C, 0x6B, 0x4C, 0xEB, +0x98, 0x67, 0x08, 0x73, 0x00, 0x6B, 0x05, 0x67, +0x26, 0x67, 0x06, 0xD4, 0x04, 0xD3, 0x0C, 0x61, +0x9F, 0xF7, 0x0F, 0x6B, 0x80, 0x6C, 0x4C, 0xEB, +0x4C, 0xEC, 0x43, 0x67, 0x05, 0x24, 0xEF, 0xF7, +0x1F, 0x6A, 0x6C, 0xEA, 0x01, 0x6B, 0x04, 0xD3, +0xF8, 0xF7, 0x1F, 0x6B, 0x4C, 0xEB, 0x62, 0x32, +0x60, 0xC1, 0x41, 0xC1, 0x0C, 0x95, 0x82, 0x41, +0x12, 0x6E, 0x04, 0x4D, 0x00, 0x18, 0xCA, 0xD8, +0x0C, 0x94, 0x67, 0x41, 0x0D, 0x4B, 0x4B, 0xAC, +0x0F, 0x6C, 0x03, 0x6E, 0x8C, 0xEA, 0x42, 0x34, +0x81, 0xC3, 0x54, 0xC1, 0x47, 0x41, 0x0F, 0x4A, +0x05, 0xD2, 0x06, 0x92, 0x04, 0x93, 0x0C, 0x95, +0xD8, 0xEA, 0x05, 0x94, 0x18, 0x4D, 0x12, 0xEE, +0xD9, 0xE3, 0xC4, 0x36, 0x00, 0x18, 0xCA, 0xD8, +0x06, 0x93, 0x06, 0x6A, 0x05, 0x94, 0x58, 0xEB, +0x04, 0x93, 0x12, 0xEA, 0x49, 0xE4, 0x0B, 0x23, +0x80, 0xA2, 0x71, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0x7F, 0x6C, 0x8C, 0xEB, 0x60, 0xC2, 0x00, 0x6C, +0x61, 0x42, 0x80, 0xC3, 0x02, 0x4A, 0x0F, 0x94, +0x27, 0xE2, 0x06, 0x6E, 0x20, 0xDC, 0x0C, 0x95, +0x10, 0x94, 0x0A, 0x4D, 0x00, 0x18, 0xCA, 0xD8, +0x47, 0xA0, 0x10, 0x93, 0x46, 0xC3, 0x46, 0xA0, +0x47, 0xC3, 0x45, 0xA0, 0x48, 0xC3, 0x44, 0xA0, +0x49, 0xC3, 0x41, 0xA0, 0x4A, 0xC3, 0x40, 0xA0, +0x4B, 0xC3, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x10, 0x91, 0x00, 0x6A, +0x0C, 0xD4, 0x0E, 0xD6, 0x0F, 0xD7, 0x40, 0xC1, +0x40, 0xAC, 0x00, 0xF3, 0x00, 0x6B, 0x00, 0xF3, +0x00, 0x6C, 0x4C, 0xEB, 0x8E, 0xEB, 0x01, 0x5B, +0x0C, 0x6B, 0x4C, 0xEB, 0x98, 0x67, 0x08, 0x73, +0x05, 0x67, 0x05, 0xD4, 0x17, 0x61, 0x9F, 0xF7, +0x0F, 0x6B, 0x80, 0x6C, 0x4C, 0xEB, 0x4C, 0xEC, +0x00, 0x6A, 0x04, 0xD2, 0x19, 0x24, 0x0C, 0x92, +0x05, 0x94, 0x18, 0x4A, 0x02, 0x24, 0x0C, 0x92, +0x1E, 0x4A, 0xEF, 0xF7, 0x1F, 0x6C, 0x8C, 0xEB, +0x80, 0xA2, 0x0F, 0x6A, 0x8C, 0xEA, 0x40, 0xC1, +0x01, 0x6A, 0x09, 0x10, 0x04, 0x23, 0x00, 0x6C, +0x62, 0x67, 0x04, 0xD4, 0x05, 0x10, 0x10, 0x6B, +0x60, 0xC1, 0x62, 0x67, 0x00, 0x6A, 0x04, 0xD2, +0xF8, 0xF7, 0x1F, 0x6A, 0x0E, 0x94, 0x6C, 0xEA, +0x08, 0xF0, 0x00, 0x6B, 0x6D, 0xEA, 0x42, 0x33, +0x61, 0xC4, 0x40, 0xC4, 0x0E, 0x94, 0x0C, 0x95, +0x12, 0x6E, 0x02, 0x4C, 0x04, 0x4D, 0x00, 0x18, +0xCA, 0xD8, 0x0C, 0x94, 0x0E, 0x93, 0x03, 0x6E, +0x4B, 0xAC, 0x0F, 0x6C, 0x14, 0x4B, 0x8C, 0xEA, +0x42, 0x34, 0x81, 0xC3, 0x0E, 0x93, 0x54, 0xC3, +0x05, 0x92, 0x16, 0x4B, 0x06, 0xD3, 0xD8, 0xEA, +0x04, 0x93, 0x0C, 0x95, 0x06, 0x94, 0x18, 0x4D, +0x12, 0xEE, 0xD9, 0xE3, 0xC4, 0x36, 0x00, 0x18, +0xCA, 0xD8, 0x05, 0x93, 0x06, 0x6A, 0x06, 0x94, +0x58, 0xEB, 0x04, 0x93, 0x12, 0xEA, 0x49, 0xE4, +0x0B, 0x23, 0x80, 0xA2, 0x71, 0x6B, 0x6B, 0xEB, +0x8C, 0xEB, 0x7F, 0x6C, 0x8C, 0xEB, 0x60, 0xC2, +0x00, 0x6C, 0x61, 0x42, 0x80, 0xC3, 0x02, 0x4A, +0x0E, 0x94, 0x0F, 0x93, 0x06, 0x6E, 0x8B, 0xE2, +0x40, 0xDB, 0x0C, 0x95, 0x81, 0x41, 0x0A, 0x4D, +0x00, 0x18, 0xCA, 0xD8, 0x47, 0xA0, 0x47, 0xC1, +0x46, 0xA0, 0x48, 0xC1, 0x45, 0xA0, 0x49, 0xC1, +0x44, 0xA0, 0x4A, 0xC1, 0x41, 0xA0, 0x4B, 0xC1, +0x40, 0xA0, 0x4C, 0xC1, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x0C, 0xD4, 0x05, 0x67, 0x86, 0x67, 0x0E, 0xD6, +0x00, 0x6D, 0x10, 0x6E, 0x00, 0x18, 0xC5, 0xD8, +0x04, 0x04, 0xB0, 0x67, 0x10, 0x6E, 0x00, 0x18, +0xCA, 0xD8, 0x00, 0x69, 0x24, 0x10, 0x0C, 0x93, +0x29, 0xE3, 0x40, 0xA2, 0x01, 0x6B, 0x47, 0xE8, +0x6C, 0xEA, 0x04, 0x22, 0x0E, 0x94, 0x04, 0x05, +0x80, 0x18, 0x0E, 0x49, 0x7D, 0x67, 0x5F, 0xA3, +0x01, 0x6B, 0x6C, 0xEA, 0x0B, 0x22, 0x04, 0x04, +0x80, 0x18, 0x17, 0x49, 0x5D, 0x67, 0x70, 0xA2, +0x1F, 0x6A, 0x4B, 0xEA, 0x6E, 0xEA, 0x7D, 0x67, +0x50, 0xC3, 0x03, 0x10, 0x04, 0x04, 0x80, 0x18, +0x17, 0x49, 0xFF, 0x48, 0x41, 0x40, 0xDF, 0x2A, +0x01, 0x49, 0x10, 0x71, 0x02, 0x60, 0x07, 0x68, +0xDA, 0x17, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xF8, 0x63, 0x0F, 0x62, +0x0E, 0xD1, 0x0D, 0xD0, 0x00, 0x6B, 0xD2, 0x32, +0x10, 0xD4, 0x11, 0xD5, 0x12, 0xD6, 0x27, 0x67, +0x0A, 0xD2, 0x08, 0xD5, 0x09, 0xD3, 0x15, 0x10, +0x08, 0x95, 0x91, 0x67, 0x04, 0x00, 0x80, 0x18, +0x0E, 0x49, 0x08, 0x94, 0x10, 0x95, 0xD0, 0x67, +0x10, 0x4C, 0x08, 0xD4, 0x91, 0x67, 0x80, 0x18, +0x6C, 0x4A, 0x91, 0x67, 0xB0, 0x67, 0x10, 0x6E, +0x00, 0x18, 0xCA, 0xD8, 0x09, 0x92, 0x01, 0x4A, +0x09, 0xD2, 0x09, 0x93, 0x0A, 0x94, 0x83, 0xEB, +0xE7, 0x61, 0x11, 0x92, 0x12, 0x93, 0x90, 0x35, +0xB5, 0xE2, 0x69, 0xE2, 0x43, 0xED, 0x1C, 0x60, +0x04, 0x00, 0xAB, 0xE2, 0x90, 0x67, 0xC2, 0x67, +0x08, 0xD2, 0x00, 0x18, 0xCA, 0xD8, 0x08, 0x92, +0x10, 0x6E, 0x00, 0x6D, 0x5B, 0xE6, 0x51, 0xE0, +0x00, 0x18, 0xC5, 0xD8, 0x91, 0x67, 0xB0, 0x67, +0x80, 0x18, 0x0E, 0x49, 0x10, 0x95, 0x91, 0x67, +0xD0, 0x67, 0x80, 0x18, 0x6C, 0x4A, 0x91, 0x67, +0xB0, 0x67, 0x10, 0x6E, 0x00, 0x18, 0xCA, 0xD8, +0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x11, 0x91, 0x04, 0x67, +0x0D, 0xD5, 0x91, 0x67, 0x0E, 0xD6, 0x0F, 0xD7, +0x80, 0x18, 0x67, 0x49, 0x0D, 0x95, 0x0E, 0x96, +0x90, 0x67, 0xF1, 0x67, 0x80, 0x18, 0x8B, 0x4A, +0x0F, 0x95, 0x10, 0x96, 0x90, 0x67, 0xF1, 0x67, +0x80, 0x18, 0x8B, 0x4A, 0x00, 0x6A, 0x7D, 0x67, +0x50, 0xC3, 0x51, 0xC3, 0x52, 0xC3, 0x53, 0xC3, +0x0E, 0x94, 0xBD, 0x67, 0xDD, 0x67, 0x8C, 0x33, +0x00, 0xF6, 0x62, 0x34, 0x94, 0xC5, 0x62, 0x34, +0x82, 0x35, 0xB5, 0xC6, 0x96, 0xC6, 0x58, 0xC6, +0x59, 0xC6, 0x5A, 0xC6, 0x5B, 0xC6, 0x77, 0xC6, +0x10, 0x93, 0xF1, 0x67, 0x04, 0x05, 0x6C, 0x32, +0x00, 0xF6, 0x42, 0x33, 0x7C, 0xC6, 0x42, 0x33, +0x62, 0x34, 0x9D, 0xC6, 0x7E, 0xC6, 0x5F, 0xC6, +0x90, 0x67, 0x10, 0x6E, 0x80, 0x18, 0x8B, 0x4A, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x0C, 0x75, 0x0C, 0xD4, +0x25, 0x67, 0x0E, 0xD6, 0x07, 0x67, 0x0E, 0x61, +0x0C, 0x95, 0x87, 0x67, 0x0C, 0x6E, 0x00, 0x18, +0xCA, 0xD8, 0x87, 0x40, 0x05, 0x4C, 0x00, 0x6D, +0x04, 0x6E, 0x00, 0x18, 0xC5, 0xD8, 0x01, 0x6A, +0x4F, 0xC0, 0x27, 0x10, 0x87, 0x67, 0x80, 0x18, +0x67, 0x49, 0x0E, 0x94, 0x0C, 0x95, 0xD1, 0x67, +0xF0, 0x67, 0x80, 0x18, 0x8B, 0x4A, 0x2C, 0x31, +0x7D, 0x67, 0x00, 0x6A, 0x50, 0xC3, 0x51, 0xC3, +0x52, 0xC3, 0x53, 0xC3, 0x54, 0xC3, 0x55, 0xC3, +0x56, 0xC3, 0x57, 0xC3, 0x58, 0xC3, 0x59, 0xC3, +0x5A, 0xC3, 0x5B, 0xC3, 0x00, 0xF6, 0x22, 0x32, +0x5C, 0xC3, 0x22, 0x32, 0x9D, 0x67, 0x42, 0x33, +0x7D, 0xC4, 0x5E, 0xC4, 0x3F, 0xC4, 0x0E, 0x94, +0x04, 0x05, 0x10, 0x6E, 0xF0, 0x67, 0x80, 0x18, +0x8B, 0x4A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0x14, 0xD4, 0x16, 0xD6, +0x17, 0xD7, 0x3F, 0x27, 0xF2, 0x32, 0x04, 0x04, +0x10, 0x6E, 0x0E, 0xD2, 0x00, 0x18, 0xCA, 0xD8, +0x16, 0x93, 0x18, 0x91, 0x00, 0x6A, 0x0C, 0xD3, +0x13, 0x10, 0x14, 0x94, 0x04, 0x00, 0xD1, 0x67, +0xB0, 0x67, 0x80, 0x18, 0x91, 0x48, 0x0C, 0x95, +0x91, 0x67, 0x10, 0x49, 0x80, 0x18, 0x0E, 0x49, +0x0C, 0x93, 0x90, 0x67, 0x10, 0x4B, 0x0C, 0xD3, +0x80, 0x18, 0x03, 0x49, 0x0D, 0x92, 0x01, 0x4A, +0x0D, 0xD2, 0x0D, 0x93, 0x0E, 0x92, 0x43, 0xEB, +0xE8, 0x61, 0x18, 0x93, 0x50, 0x32, 0x4D, 0xE3, +0x0D, 0xD3, 0x16, 0x93, 0x45, 0xE3, 0x17, 0x93, +0x4B, 0xE3, 0x0C, 0xD2, 0x12, 0x22, 0x14, 0x94, +0x08, 0x00, 0x04, 0x05, 0xD0, 0x67, 0x80, 0x18, +0x91, 0x48, 0x0C, 0x93, 0x69, 0xE0, 0x0D, 0x93, +0xA0, 0xA0, 0x80, 0xA1, 0x01, 0x48, 0x4A, 0xE8, +0xAE, 0xEC, 0x80, 0xC3, 0x01, 0x49, 0x01, 0x4B, +0xF7, 0x61, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, +0x0A, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x0E, 0xD4, 0x10, 0xD6, +0x27, 0x67, 0x10, 0x27, 0x06, 0x00, 0x10, 0x6E, +0x90, 0x67, 0x00, 0x18, 0xCA, 0xD8, 0x90, 0x67, +0x80, 0x18, 0x03, 0x49, 0x12, 0x92, 0x0E, 0x94, +0x10, 0x96, 0xB0, 0x67, 0xF1, 0x67, 0x04, 0xD2, +0x80, 0x18, 0xF7, 0x4A, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF5, 0x63, 0x15, 0x62, 0x14, 0xD1, 0x13, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x27, 0xF6, 0x1C, 0x48, +0x06, 0x01, 0x18, 0xD6, 0x19, 0xD7, 0xD1, 0x67, +0xF0, 0x67, 0x80, 0x18, 0x5B, 0x49, 0x18, 0x94, +0x19, 0x95, 0xD1, 0x67, 0x0A, 0x07, 0x80, 0x18, +0xD5, 0x4A, 0x1E, 0x92, 0x1A, 0x96, 0x1B, 0x97, +0x90, 0x67, 0x0A, 0x05, 0x04, 0xD2, 0x80, 0x18, +0x1D, 0x4B, 0x1B, 0x92, 0x1C, 0x95, 0x1D, 0x96, +0x1E, 0x97, 0x04, 0xD2, 0x91, 0x67, 0x0E, 0x02, +0x05, 0xD2, 0x80, 0x18, 0xB3, 0x4A, 0x1F, 0x92, +0x90, 0x67, 0x0A, 0x05, 0x0E, 0x06, 0x10, 0x6F, +0x04, 0xD2, 0x80, 0x18, 0xF7, 0x4A, 0x90, 0x67, +0x80, 0x18, 0x6C, 0x49, 0x15, 0x97, 0x14, 0x91, +0x13, 0x90, 0x00, 0x6A, 0x0B, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x10, 0x93, 0x00, 0x6A, +0x04, 0xD2, 0x05, 0xD2, 0x06, 0xD3, 0x08, 0xD2, +0x11, 0x93, 0x12, 0x92, 0x07, 0xD3, 0x09, 0xD2, +0x80, 0x18, 0x2C, 0x4B, 0x0B, 0x97, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0xFF, 0xF7, 0x1F, 0x6A, +0xAC, 0xEA, 0xBD, 0x67, 0x60, 0xF0, 0x6C, 0xA5, +0xA7, 0x44, 0xFF, 0x4C, 0x49, 0xE4, 0x6B, 0xE2, +0x03, 0x4D, 0x0C, 0xD2, 0x20, 0xF0, 0x06, 0x02, +0x16, 0xD6, 0x17, 0xD7, 0x0D, 0xD5, 0x08, 0x00, +0x0E, 0xD2, 0x30, 0xF0, 0x20, 0x69, 0x0D, 0x94, +0xC0, 0xF3, 0x40, 0x99, 0x40, 0xEA, 0x40, 0xC0, +0x0C, 0x94, 0xC0, 0xF3, 0x40, 0x99, 0x40, 0xEA, +0x0D, 0x95, 0x46, 0xC0, 0x0C, 0x92, 0x01, 0x4D, +0x0D, 0xD5, 0x0E, 0x95, 0x01, 0x48, 0xFF, 0x4A, +0xAA, 0xE8, 0x0C, 0xD2, 0xEA, 0x61, 0x18, 0x92, +0x16, 0x94, 0x17, 0x95, 0x04, 0xD2, 0x19, 0x92, +0x08, 0x06, 0x0C, 0x6F, 0x05, 0xD2, 0x1A, 0x92, +0x06, 0xD2, 0x80, 0x18, 0x48, 0x4B, 0x13, 0x97, +0x12, 0x91, 0x11, 0x90, 0x01, 0x5A, 0x58, 0x67, +0x0A, 0x63, 0x00, 0xEF, 0xF1, 0x63, 0x1D, 0x62, +0x1C, 0xD1, 0x1B, 0xD0, 0x22, 0x90, 0x1E, 0xD4, +0x1F, 0xD5, 0x03, 0xEF, 0x26, 0x67, 0x3B, 0x61, +0x18, 0x58, 0x39, 0x61, 0x23, 0x94, 0x47, 0x40, +0x01, 0x4A, 0x1F, 0xE7, 0xA6, 0x67, 0xC2, 0x67, +0x16, 0xD7, 0x17, 0xD2, 0x00, 0x18, 0xCA, 0xD8, +0x17, 0x94, 0x23, 0x93, 0x00, 0x6D, 0x1E, 0x6E, +0x8D, 0xE3, 0x0E, 0x04, 0x18, 0xD3, 0x00, 0x18, +0xC5, 0xD8, 0x23, 0x93, 0x0B, 0x02, 0x91, 0x67, +0x15, 0xE3, 0x0E, 0x06, 0x0A, 0x07, 0x04, 0xD2, +0x80, 0x18, 0xE8, 0x49, 0x17, 0x94, 0x16, 0x92, +0x0E, 0x03, 0x85, 0xE1, 0x05, 0xD2, 0x18, 0x94, +0x0A, 0x92, 0x06, 0xD3, 0x16, 0x93, 0x07, 0xD2, +0x08, 0xD4, 0x69, 0xE4, 0x1F, 0x95, 0x1E, 0x94, +0x0B, 0x06, 0x0C, 0x6F, 0x04, 0xD1, 0x09, 0xD2, +0x80, 0x18, 0x2C, 0x4B, 0x00, 0x52, 0x07, 0x61, +0x16, 0x94, 0x24, 0x92, 0x18, 0x48, 0x81, 0xE0, +0x00, 0xDA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, 0x0F, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x6F, 0x44, 0x44, 0x67, 0x60, 0xC6, 0x81, 0x46, +0x0F, 0x6E, 0x5B, 0xE6, 0x00, 0x18, 0xCA, 0xD8, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, +0x19, 0x90, 0x6E, 0x45, 0x66, 0x33, 0x0B, 0xEA, +0x0D, 0xEA, 0xC0, 0xF7, 0x42, 0x32, 0x58, 0x32, +0x6C, 0x33, 0x4D, 0xEB, 0x4F, 0x46, 0x26, 0x67, +0x6D, 0xEA, 0x0F, 0x6E, 0x7D, 0x67, 0x14, 0xD4, +0x3B, 0xE6, 0x50, 0xC3, 0x00, 0xF0, 0x11, 0x04, +0xA7, 0x67, 0x00, 0x18, 0xCA, 0xD8, 0x1A, 0x93, +0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0x6A, 0x2B, 0xE2, +0x04, 0x05, 0x8C, 0xEB, 0x49, 0xE5, 0x62, 0x33, +0x60, 0xC2, 0x5D, 0x67, 0x67, 0x42, 0x61, 0x4B, +0x40, 0xA3, 0x27, 0xE5, 0x51, 0xC1, 0x14, 0x94, +0x1B, 0x96, 0x80, 0x18, 0x91, 0x48, 0x2C, 0x20, +0xFF, 0xF7, 0x1F, 0x6A, 0x18, 0x95, 0x0C, 0xEA, +0x7D, 0x67, 0x42, 0x32, 0x20, 0xF0, 0x40, 0xC3, +0x20, 0xF0, 0x01, 0xC3, 0x20, 0xF0, 0x02, 0x04, +0xD0, 0x67, 0x00, 0x18, 0xCA, 0xD8, 0x08, 0x01, +0x82, 0x40, 0x1E, 0x6E, 0x1B, 0xE6, 0x91, 0xE1, +0x00, 0x6D, 0x00, 0x18, 0xC5, 0xD8, 0x1B, 0x95, +0x91, 0x67, 0x80, 0x18, 0x98, 0x48, 0x14, 0x94, +0x1B, 0x96, 0xB1, 0x67, 0x80, 0x18, 0x91, 0x48, +0x0F, 0x58, 0x0A, 0x61, 0x1B, 0x95, 0x0C, 0x00, +0x90, 0x67, 0x80, 0x18, 0x98, 0x48, 0x14, 0x94, +0x1B, 0x96, 0xB0, 0x67, 0x80, 0x18, 0x91, 0x48, +0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0x1B, 0x92, 0x16, 0xD6, +0x27, 0x67, 0x1F, 0x5A, 0x39, 0x60, 0x11, 0x5F, +0x37, 0x60, 0x30, 0xF0, 0x20, 0x68, 0x27, 0xF6, +0x1C, 0x48, 0xD0, 0x67, 0x80, 0x18, 0x89, 0x48, +0x1A, 0x92, 0x16, 0x97, 0x90, 0x67, 0x04, 0xD2, +0x1B, 0x92, 0xB1, 0x67, 0x02, 0x6E, 0x05, 0xD2, +0x19, 0x92, 0x06, 0xD2, 0x08, 0x02, 0x07, 0xD2, +0x80, 0x18, 0x9E, 0x4B, 0x18, 0x95, 0x19, 0x96, +0x08, 0x07, 0x90, 0x67, 0x80, 0x18, 0xA1, 0x48, +0x16, 0x95, 0x02, 0x6C, 0x0C, 0x06, 0x80, 0x18, +0x97, 0x4B, 0x1C, 0x92, 0x18, 0x96, 0x19, 0x97, +0x04, 0xD2, 0x90, 0x67, 0x0C, 0x02, 0x02, 0x6D, +0x05, 0xD2, 0x80, 0x18, 0xBE, 0x48, 0x1D, 0x92, +0x90, 0x67, 0xB1, 0x67, 0x08, 0x06, 0x0C, 0x07, +0x04, 0xD2, 0x80, 0x18, 0xE3, 0x48, 0x90, 0x67, +0x80, 0x18, 0x6C, 0x49, 0x00, 0x6A, 0x02, 0x10, +0x01, 0x6A, 0x4B, 0xEA, 0x13, 0x97, 0x12, 0x91, +0x11, 0x90, 0x0A, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF0, 0x63, 0x1F, 0x62, 0x1E, 0xD1, 0x1D, 0xD0, +0x24, 0x90, 0x20, 0xD4, 0x21, 0xD5, 0x03, 0xEF, +0x26, 0x67, 0x3B, 0x61, 0x18, 0x58, 0x39, 0x61, +0x25, 0x94, 0x47, 0x40, 0x01, 0x4A, 0x1F, 0xE7, +0xA6, 0x67, 0xC2, 0x67, 0x18, 0xD7, 0x19, 0xD2, +0x00, 0x18, 0xCA, 0xD8, 0x19, 0x94, 0x25, 0x93, +0x00, 0x6D, 0x1E, 0x6E, 0x8D, 0xE3, 0x0F, 0x04, +0x1A, 0xD3, 0x00, 0x18, 0xC5, 0xD8, 0x25, 0x93, +0x0B, 0x02, 0x91, 0x67, 0x15, 0xE3, 0x0F, 0x06, +0x0A, 0x07, 0x04, 0xD2, 0x80, 0x18, 0x23, 0x4A, +0x19, 0x94, 0x18, 0x92, 0x0F, 0x03, 0x85, 0xE1, +0x05, 0xD2, 0x1A, 0x94, 0x0A, 0x92, 0x06, 0xD3, +0x18, 0x93, 0x07, 0xD2, 0x08, 0xD4, 0x69, 0xE4, +0x21, 0x95, 0x20, 0x94, 0x0B, 0x06, 0x08, 0x6F, +0x04, 0xD1, 0x09, 0xD2, 0x80, 0x18, 0xCF, 0x4B, +0x00, 0x52, 0x07, 0x61, 0x18, 0x94, 0x26, 0x92, +0x10, 0x48, 0x81, 0xE0, 0x00, 0xDA, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x1F, 0x97, 0x1E, 0x91, +0x1D, 0x90, 0x10, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF6, 0x63, 0x13, 0x62, 0x12, 0xD1, 0x11, 0xD0, +0x24, 0x67, 0x15, 0xD5, 0x16, 0xD6, 0xA7, 0x67, +0x04, 0x04, 0x08, 0x6E, 0x07, 0x67, 0x00, 0x18, +0xCA, 0xD8, 0x16, 0x92, 0x18, 0x94, 0xA7, 0x40, +0x01, 0x4D, 0x4C, 0x36, 0x00, 0x18, 0xCA, 0xD8, +0x15, 0x95, 0x30, 0xF0, 0x20, 0x6E, 0x91, 0x67, +0x27, 0xF6, 0x1C, 0x4E, 0x80, 0x18, 0x01, 0x46, +0x66, 0x22, 0x16, 0x92, 0x18, 0x93, 0x16, 0x94, +0xFF, 0x4A, 0x4C, 0x32, 0x49, 0xE3, 0x16, 0x93, +0x0D, 0xD2, 0x06, 0x6A, 0x58, 0xEB, 0x8B, 0xEC, +0x0E, 0xD4, 0x05, 0x6C, 0x0B, 0xD4, 0x12, 0xEB, +0x0A, 0xD3, 0x16, 0x92, 0x0A, 0x90, 0x0D, 0x91, +0x0C, 0xD2, 0x34, 0x10, 0x06, 0x04, 0x04, 0x05, +0x08, 0x6E, 0x00, 0x18, 0xCA, 0xD8, 0x9D, 0x67, +0x7F, 0xA4, 0xFF, 0x6A, 0x0C, 0xEA, 0x6E, 0xEA, +0x7E, 0xA4, 0x5F, 0xC4, 0x02, 0x32, 0x4E, 0xEB, +0x7E, 0xC4, 0x7D, 0xA4, 0x42, 0x32, 0xB1, 0x67, +0x6E, 0xEA, 0x5D, 0xC4, 0x5C, 0xA4, 0x00, 0xF6, +0x02, 0x33, 0x08, 0x6E, 0x6E, 0xEA, 0x5C, 0xC4, +0x08, 0x04, 0x00, 0x18, 0xCA, 0xD8, 0x06, 0x05, +0x30, 0xF0, 0x20, 0x6C, 0xC5, 0x67, 0x27, 0xF6, +0x1C, 0x4C, 0x80, 0x18, 0x37, 0x47, 0x04, 0x04, +0x06, 0x05, 0x08, 0x6E, 0x00, 0x18, 0xCA, 0xD8, +0x91, 0x67, 0x08, 0x05, 0x08, 0x6E, 0x00, 0x18, +0xCA, 0xD8, 0x0C, 0x92, 0xF8, 0x49, 0xFF, 0x48, +0xFF, 0x4A, 0x0C, 0xD2, 0x0C, 0x93, 0x01, 0x53, +0xC9, 0x60, 0x0B, 0x94, 0x0A, 0x92, 0x0E, 0x93, +0xFF, 0x4C, 0x0B, 0xD4, 0x69, 0xE2, 0x0A, 0xD2, +0x44, 0x67, 0x01, 0x4A, 0xBA, 0x2A, 0x30, 0xF0, +0x20, 0x6C, 0x27, 0xF6, 0x1C, 0x4C, 0x80, 0x18, +0xE3, 0x49, 0x04, 0x02, 0x06, 0x03, 0x80, 0xA2, +0xA6, 0x74, 0x05, 0x61, 0x01, 0x4A, 0x6A, 0xEA, +0xFA, 0x61, 0x00, 0x6A, 0x02, 0x10, 0x01, 0x6A, +0x4B, 0xEA, 0x13, 0x97, 0x12, 0x91, 0x11, 0x90, +0x0A, 0x63, 0x00, 0xEF, 0xF3, 0x63, 0x19, 0x62, +0x18, 0xD1, 0x17, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0x27, 0xF6, 0x1C, 0x49, 0x06, 0x00, 0x1C, 0xD6, +0x1D, 0xD7, 0xD0, 0x67, 0xF1, 0x67, 0x80, 0x18, +0x5B, 0x49, 0x1C, 0x94, 0x1D, 0x95, 0xD0, 0x67, +0x0A, 0x07, 0x80, 0x18, 0xD5, 0x4A, 0x23, 0x92, +0x1E, 0x96, 0x1F, 0x97, 0x91, 0x67, 0x0A, 0x05, +0x04, 0xD2, 0x80, 0x18, 0x1D, 0x4B, 0x1F, 0x92, +0x20, 0x95, 0x21, 0x96, 0x1E, 0x97, 0x04, 0xD2, +0x90, 0x67, 0x0E, 0x02, 0x05, 0xD2, 0x12, 0x00, +0x80, 0x18, 0xB3, 0x4A, 0x0A, 0x05, 0x0E, 0x06, +0x10, 0x6F, 0x91, 0x67, 0x04, 0xD0, 0x80, 0x18, +0xF7, 0x4A, 0x91, 0x67, 0x80, 0x18, 0x6C, 0x49, +0x22, 0x94, 0xB0, 0x67, 0x10, 0x6E, 0x00, 0x18, +0xDE, 0xD8, 0x4B, 0xEB, 0x19, 0x97, 0x18, 0x91, +0x17, 0x90, 0x4D, 0xEB, 0xC0, 0xF7, 0x63, 0x32, +0x0D, 0x63, 0x00, 0xEF, 0xF2, 0x63, 0x1B, 0x62, +0x1A, 0xD1, 0x19, 0xD0, 0x20, 0x90, 0x1C, 0xD4, +0x1D, 0xD5, 0x18, 0x58, 0x1E, 0xD6, 0x27, 0x67, +0x29, 0x61, 0x47, 0x47, 0x01, 0x4A, 0x0E, 0x04, +0x00, 0x6D, 0x1E, 0x6E, 0x16, 0xD2, 0x00, 0x18, +0xC5, 0xD8, 0x1E, 0x94, 0x0B, 0x03, 0xB1, 0x67, +0x0E, 0x06, 0x0A, 0x07, 0x04, 0xD3, 0x80, 0x18, +0xE8, 0x49, 0x16, 0x92, 0x0E, 0x03, 0x06, 0xD3, +0x04, 0xD2, 0x16, 0x93, 0x0A, 0x92, 0xE8, 0x48, +0x1C, 0x94, 0x07, 0xD2, 0x09, 0xE3, 0x08, 0xD2, +0x1D, 0x95, 0x21, 0x92, 0x0B, 0x06, 0x0C, 0x6F, +0x05, 0xD0, 0x09, 0xD2, 0x80, 0x18, 0x5F, 0x4C, +0x00, 0x52, 0x04, 0x61, 0x22, 0x92, 0x00, 0xDA, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x1B, 0x97, +0x1A, 0x91, 0x19, 0x90, 0x0E, 0x63, 0x00, 0xEF, +0xF4, 0x63, 0x17, 0x62, 0x16, 0xD1, 0x15, 0xD0, +0x1F, 0x92, 0x1A, 0xD6, 0x1B, 0xD7, 0x1F, 0x5A, +0x3E, 0x60, 0x11, 0x5F, 0x3C, 0x60, 0x30, 0xF0, +0x20, 0x69, 0x27, 0xF6, 0x1C, 0x49, 0xD1, 0x67, +0x80, 0x18, 0x89, 0x48, 0x1A, 0x95, 0x0C, 0x00, +0xD0, 0x67, 0x02, 0x6C, 0x80, 0x18, 0x97, 0x4B, +0x1B, 0x95, 0x20, 0x97, 0x10, 0x02, 0xD0, 0x67, +0x91, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xF3, 0x48, +0x21, 0x92, 0x1C, 0x96, 0x1D, 0x97, 0x91, 0x67, +0x02, 0x6D, 0x04, 0xD2, 0x05, 0xD0, 0x80, 0x18, +0xBE, 0x48, 0x1E, 0x92, 0x1B, 0x95, 0x1A, 0x97, +0x04, 0xD2, 0x1F, 0x92, 0x08, 0x00, 0x91, 0x67, +0x05, 0xD2, 0x1D, 0x92, 0x02, 0x6E, 0x07, 0xD0, +0x06, 0xD2, 0x80, 0x18, 0x9E, 0x4B, 0x21, 0x95, +0x1D, 0x96, 0xF0, 0x67, 0x91, 0x67, 0x80, 0x18, +0xA1, 0x48, 0x91, 0x67, 0x80, 0x18, 0x6C, 0x49, +0x1B, 0x96, 0x90, 0x67, 0x10, 0x05, 0x00, 0x18, +0xDE, 0xD8, 0x00, 0x6B, 0x02, 0x22, 0x01, 0x6B, +0x6B, 0xEB, 0x17, 0x97, 0x16, 0x91, 0x15, 0x90, +0x43, 0x67, 0x0C, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF1, 0x63, 0x1D, 0x62, 0x1C, 0xD1, 0x1B, 0xD0, +0x22, 0x91, 0x1E, 0xD4, 0x07, 0x67, 0x10, 0x59, +0x86, 0x67, 0x25, 0x61, 0x48, 0x41, 0xF8, 0x4A, +0x0B, 0x03, 0xA7, 0x67, 0x0F, 0x06, 0x0A, 0x07, +0x18, 0xD2, 0x04, 0xD3, 0x80, 0x18, 0x23, 0x4A, +0x47, 0x40, 0x01, 0x4A, 0x04, 0xD2, 0x18, 0x92, +0x1E, 0x94, 0xF8, 0x49, 0x05, 0xD2, 0x0A, 0x92, +0x0F, 0x03, 0x21, 0xE0, 0x07, 0xD2, 0x23, 0x92, +0x10, 0x6D, 0x0B, 0x06, 0x08, 0x6F, 0x06, 0xD3, +0x08, 0xD0, 0x09, 0xD2, 0x80, 0x18, 0x9C, 0x4C, +0x00, 0x52, 0x05, 0x61, 0x24, 0x92, 0x18, 0x93, +0x60, 0xDA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x1D, 0x97, 0x1C, 0x91, 0x1B, 0x90, 0x0F, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEE, +0x02, 0x76, 0x4C, 0xEC, 0x4C, 0xED, 0xEC, 0xEA, +0x07, 0x61, 0x83, 0xED, 0x01, 0x6B, 0x29, 0x61, +0xA3, 0xEC, 0x78, 0x67, 0x64, 0x33, 0x25, 0x10, +0x01, 0x76, 0x1F, 0x61, 0x18, 0x10, 0x01, 0x73, +0x04, 0x6A, 0x06, 0x61, 0x1D, 0x10, 0x02, 0x72, +0x06, 0x61, 0x01, 0x73, 0x04, 0x61, 0x13, 0x10, +0x02, 0x73, 0x06, 0x61, 0x14, 0x10, 0x02, 0x72, +0x03, 0x61, 0x02, 0x73, 0x03, 0x6A, 0x10, 0x60, +0x01, 0x73, 0x0A, 0x6A, 0x0D, 0x60, 0x02, 0x73, +0x09, 0x6A, 0x07, 0x61, 0x09, 0x10, 0x02, 0x72, +0x06, 0x60, 0x01, 0x72, 0x02, 0x61, 0x02, 0x6A, +0x20, 0xE8, 0x00, 0x6A, 0x20, 0xE8, 0x01, 0x6A, +0x20, 0xE8, 0x01, 0x72, 0xE0, 0x61, 0xDB, 0x17, +0xFF, 0x6B, 0x6C, 0xED, 0x03, 0x75, 0x6C, 0xEC, +0x6C, 0xEE, 0x17, 0x61, 0x03, 0x6A, 0x8C, 0xEA, +0x0C, 0x2A, 0x48, 0x44, 0xE4, 0x4A, 0x6C, 0xEA, +0x1D, 0x5A, 0x32, 0x6A, 0x4E, 0x61, 0x48, 0x44, +0xA4, 0x4A, 0x6C, 0xEA, 0x1D, 0x5A, 0x72, 0x6A, +0x3B, 0x10, 0x01, 0x72, 0x45, 0x61, 0x47, 0x44, +0x64, 0x4A, 0x6C, 0xEA, 0x1D, 0x5A, 0xA3, 0x6A, +0x33, 0x10, 0x02, 0x75, 0x33, 0x61, 0x0F, 0x5C, +0x07, 0x6A, 0x3B, 0x61, 0x03, 0x6A, 0x8C, 0xEA, +0x1E, 0x2A, 0x48, 0x44, 0xE4, 0x4A, 0x6C, 0xEA, +0x0D, 0x5A, 0x2A, 0x6A, 0x32, 0x61, 0x48, 0x44, +0xD4, 0x4A, 0x6C, 0xEA, 0x0D, 0x5A, 0x3A, 0x6A, +0x2C, 0x61, 0x48, 0x44, 0xA4, 0x4A, 0x6C, 0xEA, +0x0D, 0x5A, 0x6A, 0x6A, 0x26, 0x61, 0x48, 0x44, +0x94, 0x4A, 0x6C, 0xEA, 0x0D, 0x5A, 0x7A, 0x6A, +0x20, 0x61, 0x47, 0x44, 0x75, 0x4A, 0x6C, 0xEA, +0x0D, 0x5A, 0x8A, 0x6A, 0x0D, 0x10, 0x01, 0x72, +0x17, 0x61, 0x47, 0x44, 0x64, 0x4A, 0x6C, 0xEA, +0x0D, 0x5A, 0x9B, 0x6A, 0x12, 0x61, 0x47, 0x44, +0x54, 0x4A, 0x6C, 0xEA, 0x0D, 0x5A, 0xAB, 0x6A, +0x0C, 0x61, 0x0A, 0x10, 0x01, 0x75, 0x08, 0x61, +0x01, 0x76, 0x42, 0x44, 0x03, 0x60, 0x02, 0x76, +0x03, 0x61, 0x4E, 0x44, 0x6C, 0xEA, 0x20, 0xE8, +0x44, 0x67, 0x20, 0xE8, 0xFF, 0x6A, 0x4C, 0xEC, +0xAC, 0xEA, 0x00, 0x6B, 0x33, 0x22, 0x02, 0x5A, +0x02, 0x61, 0x0F, 0x5C, 0x2C, 0x61, 0x6F, 0x44, +0xFF, 0x6A, 0x4C, 0xEB, 0x04, 0x5B, 0x01, 0x6B, +0x29, 0x61, 0x6B, 0x44, 0x4C, 0xEB, 0x05, 0x5B, +0x07, 0x60, 0x60, 0xA6, 0xFF, 0x4B, 0x4C, 0xEB, +0x02, 0x5B, 0x1F, 0x60, 0x60, 0xA6, 0x1E, 0x10, +0x68, 0x44, 0xFE, 0x4B, 0x4C, 0xEB, 0x04, 0x5B, +0x18, 0x61, 0x0E, 0x74, 0x14, 0x60, 0xDC, 0x4C, +0x4C, 0xEC, 0x8E, 0x5C, 0x10, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF4, 0x00, 0x4A, 0x49, 0xE4, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xA2, 0x03, 0xF5, +0x10, 0x4B, 0x71, 0xE4, 0x60, 0xA4, 0x04, 0x22, +0x03, 0x26, 0x60, 0xC6, 0x20, 0xE8, 0x00, 0x6A, +0x20, 0xE8, 0x02, 0x6B, 0x01, 0x6A, 0xF8, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x00, 0x6B, 0xA4, 0xF3, 0x6C, 0xC2, 0xA4, 0xF3, +0x6D, 0xC2, 0xA4, 0xF3, 0x6E, 0xC2, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x24, 0x67, 0x00, 0x18, 0x8B, 0xD8, 0x30, 0xF0, +0x20, 0x6B, 0x28, 0xF3, 0x76, 0xA3, 0xFF, 0x68, +0x0C, 0xE9, 0x6D, 0xE2, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF1, 0x44, 0x9A, 0x7C, 0x33, 0x49, 0xE3, +0x40, 0xA2, 0x0C, 0xEA, 0x01, 0x72, 0x19, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x58, 0x9A, +0x49, 0xE3, 0x40, 0xA2, 0x4C, 0xE8, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF2, 0x5C, 0x9A, 0x4D, 0xE3, +0x09, 0x10, 0x80, 0xA3, 0xFF, 0x6A, 0xFF, 0x48, +0x4C, 0xEC, 0x4C, 0xE8, 0x51, 0x67, 0x8E, 0xEA, +0x01, 0x4B, 0x03, 0x22, 0xF6, 0x28, 0x00, 0x6A, +0x01, 0x10, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x24, 0xF6, 0x59, 0xA0, 0x24, 0xF6, 0x3A, 0xA0, +0x04, 0xD2, 0x24, 0xF6, 0x5B, 0xA0, 0x04, 0x94, +0xB1, 0x67, 0xC2, 0x67, 0x05, 0xD2, 0x80, 0x18, +0xFA, 0x4C, 0x04, 0x95, 0x05, 0x97, 0xD1, 0x67, +0x82, 0x67, 0x06, 0xD2, 0x80, 0x18, 0xDF, 0x4C, +0x06, 0x94, 0xD1, 0x67, 0xA2, 0x67, 0x80, 0x18, +0x65, 0x5A, 0x01, 0x6A, 0x43, 0xF4, 0x55, 0xC0, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF6, 0x63, 0x13, 0x62, +0x12, 0xD1, 0x11, 0xD0, 0x00, 0x6C, 0x00, 0x6A, +0x7D, 0x67, 0x15, 0xD5, 0x26, 0x67, 0x58, 0xC3, +0x08, 0xD4, 0x0C, 0xD4, 0x0D, 0xD4, 0x0E, 0xD4, +0x0B, 0xD4, 0x24, 0x68, 0xEA, 0x10, 0x30, 0xF0, +0x20, 0x6F, 0xC0, 0xF3, 0x40, 0x9F, 0x81, 0x41, +0x11, 0xE4, 0x40, 0xEA, 0x0A, 0xD2, 0xE0, 0xF0, +0x04, 0x22, 0x0A, 0x93, 0x15, 0x94, 0x42, 0x40, +0x69, 0xE2, 0x43, 0xEC, 0xC0, 0xF0, 0x1D, 0x61, +0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xF3, 0x40, 0x9F, +0x31, 0xE0, 0x40, 0xEA, 0x3E, 0x72, 0x25, 0x60, +0x3F, 0x5A, 0x08, 0x60, 0x2D, 0x72, 0x7C, 0x60, +0x3D, 0x72, 0x80, 0xF0, 0x0B, 0x60, 0x25, 0x72, +0x0B, 0x60, 0xC1, 0x10, 0xC2, 0x72, 0x22, 0x60, +0x00, 0x6B, 0xC4, 0x72, 0x09, 0xD3, 0x6B, 0x60, +0xC0, 0x72, 0xA0, 0xF0, 0x0B, 0x60, 0xB7, 0x10, +0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xF3, 0x40, 0x9F, +0x83, 0x41, 0x11, 0xE4, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x0B, 0xD2, 0xC0, 0xF3, 0x40, 0x9B, +0x84, 0x41, 0x11, 0xE4, 0x40, 0xEA, 0x0E, 0xD2, +0xA6, 0x10, 0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xF3, +0x40, 0x9F, 0x82, 0x41, 0x11, 0xE4, 0x40, 0xEA, +0x0D, 0xD2, 0x9D, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x40, 0x9B, 0x82, 0x41, 0x11, 0xE4, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6F, 0x0C, 0xD2, +0xC0, 0xF3, 0x40, 0x9F, 0x83, 0x41, 0x11, 0xE4, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, -0xE3, 0xF6, 0xC0, 0x9B, 0x67, 0x10, 0x02, 0x75, -0x2C, 0x61, 0x01, 0x76, 0x10, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x34, 0x9A, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, -0xE3, 0xF6, 0xC0, 0x9B, 0x2D, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x34, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xE3, 0xF6, +0x40, 0x9B, 0x84, 0x41, 0x11, 0xE4, 0x40, 0xEA, +0x86, 0x10, 0x30, 0xF0, 0x20, 0x6F, 0x09, 0x93, +0x82, 0x41, 0xC0, 0xF3, 0x40, 0x9F, 0x11, 0xE4, +0x71, 0xE4, 0x40, 0xEA, 0xC2, 0x72, 0x1C, 0x61, +0x30, 0xF0, 0x20, 0x6F, 0x09, 0x93, 0xC0, 0xF3, +0x40, 0x9F, 0x84, 0x41, 0x11, 0xE4, 0x71, 0xE4, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6F, 0x09, 0x93, +0x0C, 0xD2, 0x85, 0x41, 0xC0, 0xF3, 0x40, 0x9F, +0x11, 0xE4, 0x71, 0xE4, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6F, 0x09, 0x93, 0x86, 0x41, 0xC0, 0xF3, +0x40, 0x9F, 0x11, 0xE4, 0x71, 0xE4, 0x40, 0xEA, +0x09, 0x97, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0x41, +0xC0, 0xF3, 0x40, 0x9A, 0x11, 0xE4, 0xF1, 0xE4, +0x40, 0xEA, 0x09, 0x93, 0x02, 0x4A, 0x4D, 0xE3, +0xFF, 0x6A, 0x4C, 0xEB, 0x09, 0xD3, 0x09, 0x94, +0x0A, 0x97, 0xE3, 0xEC, 0xC6, 0x61, 0x4B, 0x10, +0x0A, 0x92, 0x1A, 0x72, 0x48, 0x61, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x40, 0x9B, 0x82, 0x41, +0x11, 0xE4, 0x40, 0xEA, 0x02, 0x6B, 0x4C, 0xEB, +0x3E, 0x23, 0x08, 0x94, 0x3C, 0x2C, 0x01, 0x6F, +0x08, 0xD7, 0x39, 0x10, 0x0A, 0x92, 0x16, 0x72, +0x36, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x40, 0x9B, 0x83, 0x41, 0x11, 0xE4, 0x40, 0xEA, +0x04, 0x6B, 0x4C, 0xEB, 0x2C, 0x23, 0x08, 0x94, +0x02, 0x24, 0x01, 0x74, 0x28, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x40, 0x9A, 0x83, 0x41, +0x11, 0xE4, 0x40, 0xEA, 0x03, 0x6B, 0x4C, 0xEB, +0x01, 0x73, 0x05, 0x60, 0x01, 0x6F, 0x03, 0x73, +0x08, 0xD7, 0x19, 0x61, 0x06, 0x10, 0x01, 0x6A, +0x7D, 0x67, 0x01, 0x6C, 0x58, 0xC3, 0x08, 0xD4, +0x12, 0x10, 0x02, 0x6A, 0xFD, 0x67, 0x58, 0xC7, +0x01, 0x6A, 0x0C, 0x10, 0x0A, 0x93, 0x05, 0x73, +0x0A, 0x61, 0x30, 0xF0, 0x20, 0x6F, 0xC0, 0xF3, +0x40, 0x9F, 0x82, 0x41, 0x11, 0xE4, 0x40, 0xEA, +0x02, 0x22, 0x02, 0x6A, 0x08, 0xD2, 0x0A, 0x92, +0x02, 0x4A, 0x41, 0xE0, 0xFF, 0xF7, 0x1F, 0x6A, +0x4C, 0xE8, 0x15, 0x93, 0x63, 0xE8, 0x1F, 0xF7, +0x12, 0x61, 0x0B, 0x94, 0x0B, 0x24, 0x30, 0xF0, +0x20, 0x6A, 0x28, 0xF3, 0x56, 0xA2, 0x80, 0xF0, +0x1F, 0x22, 0x80, 0x18, 0x4C, 0x4D, 0x80, 0xF0, +0x1B, 0x2A, 0xA2, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA4, 0xF3, 0x6D, 0xA2, +0x57, 0x2B, 0x9A, 0x10, 0x0C, 0x93, 0xFF, 0x6C, +0xFF, 0x4B, 0x8C, 0xEB, 0x03, 0x5B, 0x0D, 0x60, +0x0B, 0x94, 0x30, 0xF0, 0x20, 0x6E, 0x02, 0x6D, +0x4D, 0xF0, 0x0B, 0x4E, 0x80, 0x18, 0x29, 0x4D, +0x11, 0x22, 0x02, 0x6A, 0x24, 0xF6, 0x5A, 0xC0, +0x11, 0x10, 0x0D, 0x97, 0x01, 0x77, 0x02, 0x61, +0x01, 0x6A, 0x08, 0x10, 0x0D, 0x93, 0x03, 0x73, +0x05, 0x61, 0x01, 0x6A, 0x24, 0xF6, 0x5A, 0xC0, +0x02, 0x6A, 0x02, 0x10, 0x24, 0xF6, 0x5A, 0xC0, +0x24, 0xF6, 0x5B, 0xC0, 0x9D, 0x67, 0xE7, 0x44, +0x25, 0x4F, 0x80, 0xA7, 0x30, 0xF0, 0x20, 0x68, +0x30, 0xF0, 0x20, 0x6F, 0x08, 0xF2, 0x10, 0x48, +0xC0, 0xF3, 0x40, 0x9F, 0x24, 0xF6, 0x99, 0xC0, +0x87, 0x41, 0x19, 0x4C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xD2, 0xC0, 0xF3, 0x40, 0x9B, +0x87, 0x41, 0x1A, 0x4C, 0x40, 0xEA, 0x08, 0x94, +0x0E, 0x97, 0x01, 0x6B, 0x40, 0x32, 0xA4, 0xF3, +0x6C, 0xC0, 0x8D, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0xF8, 0xEA, 0x01, 0x6B, 0x04, 0xD3, 0x30, 0xF0, +0x20, 0x6B, 0x00, 0xF3, 0x6C, 0x9B, 0x10, 0xF0, +0x31, 0x6C, 0x47, 0xF1, 0x1D, 0x4C, 0x00, 0x6D, +0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEB, 0x44, 0x10, +0x08, 0x93, 0x02, 0x73, 0x06, 0x61, 0x24, 0xF6, +0x99, 0xA2, 0x02, 0x6D, 0x06, 0x06, 0x80, 0x18, +0x29, 0x4D, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x24, 0xF6, 0x7A, 0xA2, 0x08, 0x94, +0x83, 0xEB, 0x08, 0x61, 0xFD, 0x67, 0x78, 0xA7, +0x15, 0x23, 0x24, 0xF6, 0x5B, 0xA2, 0x12, 0x22, +0x6E, 0xEA, 0x10, 0x22, 0x7D, 0x67, 0x87, 0x43, +0x19, 0x4C, 0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x9D, 0x67, 0x24, 0xF6, +0x7A, 0xC2, 0x78, 0xA4, 0x24, 0xF6, 0x7B, 0xC2, +0x80, 0x18, 0x68, 0x4D, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x6B, 0x08, 0xF2, 0x10, 0x4A, 0x10, 0xF0, +0x31, 0x6C, 0xA4, 0xF3, 0x6C, 0xC2, 0xA4, 0xF3, +0x6D, 0xC2, 0xA4, 0xF3, 0x6E, 0xC2, 0x06, 0xF5, +0x19, 0x4C, 0x00, 0x18, 0x92, 0xE0, 0x08, 0x10, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA4, 0xF3, 0x4C, 0xA0, 0x7F, 0xF7, 0x06, 0x22, +0x13, 0x97, 0x12, 0x91, 0x11, 0x90, 0x0A, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x80, 0x18, 0x68, 0x4D, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x01, 0x6B, 0xA4, 0xF3, +0x6D, 0xC2, 0xA4, 0xF3, 0x6E, 0xC2, 0x01, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF2, 0xD8, 0x9B, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x31, 0x6C, 0x06, 0xF5, +0x19, 0x4C, 0x00, 0x6D, 0x01, 0x6F, 0x40, 0xEA, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF4, 0x5C, 0x9A, 0x06, 0xD4, 0x09, 0xD7, +0x07, 0xD5, 0x08, 0xD6, 0x06, 0x04, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x46, 0x67, 0x01, 0x4A, 0x05, 0x67, 0x0C, 0xD6, +0x27, 0x67, 0x1F, 0x22, 0x1F, 0xF7, 0x00, 0x6A, +0xAC, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, +0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x54, 0x9A, 0x49, 0xE0, 0x40, 0x9A, +0x0C, 0x94, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x0C, 0x93, +0x24, 0xEA, 0x6F, 0xEA, 0x04, 0x93, 0x6C, 0xEA, +0x4D, 0xE9, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x54, 0x9A, 0x41, 0xE0, 0x20, 0xD8, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x1F, 0xF7, 0x00, 0x6A, 0xAC, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x26, 0x67, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x54, 0x9A, 0x55, 0xE5, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x9D, 0xA0, 0xF3, 0x44, 0x9A, 0x91, 0x67, +0x2C, 0xE8, 0x40, 0xEA, 0x06, 0xEA, 0x50, 0x67, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x68, 0xAC, 0xE8, +0xD0, 0x67, 0x41, 0xF4, 0x10, 0x6C, 0x7F, 0x6D, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, 0xD0, 0x67, +0x41, 0xF6, 0x10, 0x6C, 0x7F, 0x6D, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x85, 0x67, 0xA6, 0x67, 0xC7, 0x67, 0x00, 0x18, +0xCA, 0xD8, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0xD2, 0x04, 0x95, +0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, 0x10, 0x49, +0xA8, 0x34, 0x31, 0xE4, 0x05, 0xD4, 0x05, 0x90, +0xE2, 0xF0, 0x14, 0x4A, 0x48, 0x32, 0x29, 0xE2, +0xC8, 0xF3, 0xD6, 0xA0, 0x64, 0xA2, 0x01, 0x6A, +0x4C, 0xEE, 0x4C, 0xEB, 0xC4, 0x36, 0xC8, 0xF3, +0xF5, 0xA4, 0xD9, 0xE3, 0xC8, 0xF3, 0x77, 0xA0, +0x4C, 0xEF, 0xF0, 0x37, 0x4C, 0xEB, 0x74, 0x33, +0x6D, 0xE7, 0x07, 0xD3, 0x04, 0x93, 0x85, 0x67, +0xE4, 0xF1, 0x10, 0x4C, 0x64, 0x32, 0x29, 0xE2, +0x84, 0x34, 0x31, 0xE4, 0xE8, 0xF3, 0x49, 0xA2, +0xA8, 0xA4, 0x03, 0x6C, 0x8C, 0xEA, 0x8C, 0xED, +0x40, 0x32, 0xA0, 0x35, 0x48, 0x32, 0x49, 0xE5, +0x30, 0xF0, 0x20, 0x68, 0x06, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xD6, 0xC0, 0xF3, 0x64, 0x98, +0xC4, 0xF3, 0xC8, 0x9A, 0x01, 0x6D, 0xE3, 0xF2, +0x1D, 0x4C, 0xAB, 0xED, 0x40, 0xEB, 0x08, 0x94, +0x07, 0x96, 0x06, 0x93, 0xC0, 0xF3, 0x44, 0x98, +0x8D, 0xEE, 0x6D, 0xEE, 0xE3, 0xF3, 0x10, 0x6C, +0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0xEA, 0x04, 0x92, +0x05, 0x94, 0x01, 0x6D, 0xE2, 0xF0, 0x1A, 0x4A, +0xE8, 0xF3, 0xCE, 0xAC, 0x48, 0x32, 0x29, 0xE2, +0x62, 0xAA, 0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, +0xC0, 0x36, 0x6D, 0xEE, 0xE3, 0xF3, 0x08, 0x6C, +0xAB, 0xED, 0x40, 0xEA, 0x04, 0x92, 0x05, 0x95, +0xE3, 0xF3, 0x0C, 0x6C, 0xE2, 0xF0, 0x1B, 0x4A, +0xE8, 0xF3, 0xD2, 0xAD, 0x48, 0x32, 0x29, 0xE2, +0x62, 0xAA, 0xC0, 0x36, 0xC0, 0xF3, 0x44, 0x98, +0xC0, 0x36, 0x01, 0x6D, 0x6D, 0xEE, 0xAB, 0xED, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x68, 0xF6, 0xD0, 0xA1, 0x04, 0xF1, +0xB0, 0x9B, 0xE3, 0xF3, 0x10, 0x6C, 0x40, 0xEA, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x00, 0x6B, 0x67, 0xF7, 0x73, 0xC2, +0x30, 0xF0, 0x21, 0x6B, 0x90, 0xF1, 0x03, 0x4B, +0xA7, 0xF7, 0x60, 0xDA, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF4, 0x74, 0x9B, 0x54, 0x34, +0x20, 0x68, 0x71, 0xE4, 0xA0, 0xA4, 0xF8, 0x6B, +0x01, 0x4A, 0xAC, 0xEB, 0x4E, 0xE8, 0x60, 0xC4, +0xF2, 0x28, 0x80, 0x18, 0x49, 0x4F, 0x30, 0xF0, +0x21, 0x6A, 0x90, 0xF1, 0x1A, 0xC2, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x68, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x67, 0xF7, 0x7C, 0xC2, 0x69, 0xA4, +0x67, 0xF7, 0x71, 0xC2, 0x6A, 0xA4, 0x67, 0xF7, +0x7B, 0xC2, 0xAB, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, +0x87, 0xF7, 0x65, 0xC2, 0x6B, 0xA4, 0x72, 0x33, +0x87, 0xF7, 0x62, 0xC2, 0x8E, 0xA4, 0x01, 0x6B, +0x8C, 0xEB, 0x67, 0xF7, 0x73, 0xC2, 0x30, 0xF0, +0x21, 0x6B, 0x90, 0xF1, 0x03, 0x4B, 0xA7, 0xF7, +0x60, 0xDA, 0x00, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x60, 0xA4, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x67, 0xF7, 0x7C, 0xC2, 0x61, 0xA4, +0x67, 0xF7, 0x71, 0xC2, 0x62, 0xA4, 0x67, 0xF7, +0x7B, 0xC2, 0xA3, 0xA4, 0x0F, 0x6B, 0xAC, 0xEB, +0x87, 0xF7, 0x65, 0xC2, 0x63, 0xA4, 0x72, 0x33, +0x87, 0xF7, 0x62, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x4C, 0x72, 0x03, 0x61, 0x85, 0x67, 0x80, 0x18, +0x22, 0x4F, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, +0x0E, 0x72, 0x03, 0x60, 0x11, 0x72, 0x05, 0x60, +0x08, 0x10, 0x85, 0x67, 0x80, 0x18, 0x0B, 0x28, +0x19, 0x10, 0x85, 0x67, 0x80, 0x18, 0x10, 0x4F, +0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xA4, 0xF1, +0x98, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA3, 0xF3, 0x78, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x78, 0xDA, 0xFF, 0x6A, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x05, 0x6B, 0x67, 0xF7, +0x6C, 0xDA, 0x09, 0x6B, 0x67, 0xF7, 0x68, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, +0x1C, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, +0x01, 0x4D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF3, 0x30, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x28, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x01, 0x6E, +0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, +0x01, 0x4D, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xED, +0x29, 0x5D, 0xCC, 0xEA, 0x03, 0x61, 0x17, 0x5A, +0x03, 0x60, 0x06, 0x10, 0x17, 0x5A, 0x04, 0x60, +0x01, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x23, 0xF4, 0x1C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x00, 0x6A, 0xF2, 0x17, 0x00, 0x65, +0xFF, 0x63, 0x01, 0xD0, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF3, 0x6C, 0x9B, 0x46, 0x67, 0x8E, 0xEB, +0x12, 0x23, 0x00, 0x6E, 0x66, 0x67, 0xE4, 0x67, +0xE6, 0xEE, 0x01, 0x68, 0x0C, 0xEF, 0x07, 0x2F, +0x01, 0x4B, 0xFF, 0x6F, 0xEC, 0xEB, 0x14, 0x73, +0x01, 0x4E, 0xF5, 0x61, 0x14, 0x6B, 0x8F, 0xEC, +0x44, 0xEB, 0xAC, 0xEC, 0x8D, 0xEA, 0x01, 0x90, +0x01, 0x63, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, +0x07, 0xF4, 0x00, 0x6A, 0x04, 0xD2, 0x02, 0xF0, +0x00, 0x4A, 0x05, 0xD2, 0xA8, 0x35, 0x5D, 0x67, +0xB5, 0xE2, 0x44, 0x9D, 0xFF, 0x6C, 0xCC, 0xEC, +0x88, 0x34, 0x51, 0xE4, 0xFF, 0xF7, 0x1F, 0x6B, +0x6C, 0xEC, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF3, +0xAC, 0x9B, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x96, +0xC0, 0xF3, 0x44, 0x9A, 0xEC, 0xED, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x01, 0x6C, 0x40, 0xEA, 0x07, 0x97, 0x01, 0x6A, +0x04, 0x63, 0x00, 0xEF, 0x00, 0x6A, 0x20, 0xE8, +0x20, 0xE8, 0x00, 0x65, 0x01, 0x6A, 0x20, 0xE8, +0x20, 0xE8, 0x00, 0x65, 0x00, 0x6A, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x01, 0x75, 0x33, 0x61, 0x01, 0x76, 0x17, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x2C, 0x9A, +0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0xE4, 0xF5, 0xC0, 0x9B, +0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, +0xB1, 0x67, 0x00, 0x6E, 0x81, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0x2C, 0x9A, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xE4, 0xF5, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, -0x00, 0x6C, 0xB1, 0x67, 0xC3, 0xF6, 0xDC, 0x9B, -0x39, 0x10, 0x03, 0x75, 0x38, 0x61, 0x01, 0x76, -0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0x34, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xC3, 0xF6, -0xDC, 0x9B, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, +0x00, 0x6C, 0xB1, 0x67, 0xE4, 0xF5, 0xC4, 0x9B, +0x67, 0x10, 0x02, 0x75, 0x2C, 0x61, 0x01, 0x76, +0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x00, 0x6C, 0xB1, 0x67, 0xE4, 0xF5, 0xC4, 0x9B, +0x2D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0x2C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0xE4, 0xF5, 0xC4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, -0xE3, 0xF6, 0xC4, 0x9B, 0x1B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x34, 0x9A, 0xC3, 0xF6, 0x1C, 0x4B, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, 0x1C, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x08, 0xF1, -0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x01, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x0E, 0x72, 0x51, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x23, 0xF6, 0x00, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, -0x00, 0x6C, 0xA7, 0xF5, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF6, 0xC8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, -0x23, 0xF2, 0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x08, 0x6C, -0xFF, 0xF7, 0x1F, 0x6D, 0xAD, 0xF2, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF6, -0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x83, 0xF2, 0x18, 0x6C, 0x75, 0xF2, 0x1B, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, -0x1C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0xDE, 0xF3, -0x17, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF2, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF6, 0xCC, 0x9B, 0xA3, 0xF2, -0x0C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF2, 0x10, 0x6C, 0xB1, 0x67, -0xFF, 0xF7, 0x1F, 0x6E, 0x55, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x23, 0xF6, -0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF2, 0x00, 0x6C, 0x8A, 0xF2, 0x04, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF6, -0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, -0x2B, 0xE9, 0x23, 0xF2, 0x04, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, -0x08, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x81, 0xF2, -0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF6, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x83, 0xF2, 0x18, 0x6C, 0xD5, 0xF4, -0x04, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x83, 0xF2, 0x1C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, -0xB9, 0xF0, 0x12, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF6, 0xD4, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0xA3, 0xF2, 0x00, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF6, -0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, -0x0C, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF6, -0xC4, 0x9B, 0xA3, 0xF2, 0x10, 0x6C, 0xB1, 0x67, +0xE4, 0xF5, 0xC0, 0x9B, 0x39, 0x10, 0x03, 0x75, +0x38, 0x61, 0x01, 0x76, 0x1A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0x2C, 0x9A, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xE4, 0xF5, 0xC0, 0x9B, 0x03, 0xF0, +0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, +0x00, 0x6C, 0xB1, 0x67, 0xE4, 0xF5, 0xC8, 0x9B, +0x1B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF3, 0x2C, 0x9A, 0xE4, 0xF5, +0x00, 0x4B, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF5, 0x00, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xC0, 0x9B, 0x08, 0xF1, 0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x68, 0xAC, 0xE8, -0xD0, 0x67, 0xA3, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, -0x00, 0x6D, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, -0xD0, 0x67, 0xA8, 0xF1, 0x0C, 0x6C, 0x1E, 0xF0, -0x00, 0x6D, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x68, 0xAC, 0xE8, 0x09, 0xE4, 0x0A, 0xD4, -0x05, 0xD2, 0x40, 0xF0, 0x71, 0xA2, 0x30, 0xF0, -0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, 0x04, 0xD3, -0xA3, 0xF0, 0x0C, 0x6C, 0xE0, 0xF1, 0x10, 0x6D, -0xD0, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x99, -0xA8, 0xF1, 0x0C, 0x6C, 0xE0, 0xF1, 0x10, 0x6D, -0xD0, 0x67, 0x40, 0xEA, 0x0A, 0x92, 0x40, 0xF0, -0x10, 0xC2, 0x05, 0x93, 0x60, 0xF0, 0x41, 0xA3, -0x02, 0x2A, 0x0D, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x04, 0x96, -0x21, 0xF0, 0x08, 0x6C, 0xF8, 0x6D, 0x40, 0xEA, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0x4C, 0xED, 0x68, 0x45, 0xFB, 0x4B, -0x4C, 0xEB, 0x02, 0x5B, 0x0B, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, -0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x61, 0xF1, -0x09, 0x6E, 0x78, 0x10, 0x68, 0x45, 0xFD, 0x4B, -0x4C, 0xEB, 0x02, 0x5B, 0x0B, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, -0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x61, 0xF1, -0x0A, 0x6E, 0x68, 0x10, 0x6F, 0x45, 0x4C, 0xEB, -0x0A, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0xA1, 0xF1, 0x0A, 0x6E, -0x59, 0x10, 0x68, 0x45, 0xE4, 0x4B, 0x4C, 0xEB, -0x10, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0x80, 0xF4, 0x14, 0x6E, -0x49, 0x10, 0x68, 0x45, 0xD4, 0x4B, 0x4C, 0xEB, -0x04, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0x80, 0xF4, 0x13, 0x6E, -0x39, 0x10, 0x68, 0x45, 0xD0, 0x4B, 0x4C, 0xEB, -0x38, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0x40, 0xF4, 0x13, 0x6E, -0x29, 0x10, 0x68, 0x45, 0x98, 0x4B, 0x4C, 0xEB, -0x08, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, -0xE1, 0xF7, 0x1F, 0x6D, 0x40, 0xF4, 0x12, 0x6E, -0x19, 0x10, 0x88, 0x4D, 0x4C, 0xED, 0x35, 0x5D, +0x04, 0x63, 0x00, 0xEF, 0x01, 0x6A, 0x20, 0xE8, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x6A, 0xAC, 0xEA, 0x0E, 0x72, 0x51, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0x24, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF2, 0x00, 0x6C, 0xA7, 0xF5, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF5, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF2, 0x04, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF2, 0x08, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, +0xAD, 0xF2, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x18, 0x6C, +0x75, 0xF2, 0x1B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x83, 0xF2, 0x1C, 0x6C, 0xFF, 0xF7, +0x1F, 0x6D, 0xDE, 0xF3, 0x17, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x00, 0x6C, +0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0xE4, 0xF5, +0xD0, 0x9B, 0xA3, 0xF2, 0x0C, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, +0x10, 0x6C, 0xB1, 0x67, 0xFF, 0xF7, 0x1F, 0x6E, +0x55, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x24, 0xF5, 0x04, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x00, 0x6C, +0x8A, 0xF2, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF5, 0xD4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x69, 0x2B, 0xE9, 0x23, 0xF2, +0x04, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF2, 0x08, 0x6C, 0xFF, 0xF7, +0x1F, 0x6D, 0x81, 0xF2, 0x08, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF5, 0x04, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, +0x18, 0x6C, 0xD5, 0xF4, 0x04, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x83, 0xF2, 0x1C, 0x6C, +0xFF, 0xF7, 0x1F, 0x6D, 0xB9, 0xF0, 0x12, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF5, +0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, +0x00, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF5, 0xDC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xA3, 0xF2, 0x0C, 0x6C, 0xB1, 0x67, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0xA4, 0xF5, 0xC8, 0x9B, 0xA3, 0xF2, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, +0xFF, 0x68, 0xAC, 0xE8, 0xD0, 0x67, 0xA3, 0xF0, +0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x99, 0xD0, 0x67, 0xA8, 0xF1, +0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x40, 0xEA, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, +0x09, 0xE4, 0x0A, 0xD4, 0x05, 0xD2, 0x40, 0xF0, +0x71, 0xA2, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, +0x44, 0x99, 0x04, 0xD3, 0xA3, 0xF0, 0x0C, 0x6C, +0xE0, 0xF1, 0x10, 0x6D, 0xD0, 0x67, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x99, 0xA8, 0xF1, 0x0C, 0x6C, +0xE0, 0xF1, 0x10, 0x6D, 0xD0, 0x67, 0x40, 0xEA, +0x0A, 0x92, 0x40, 0xF0, 0x10, 0xC2, 0x05, 0x93, +0x60, 0xF0, 0x41, 0xA3, 0x02, 0x2A, 0x0D, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x04, 0x96, 0x21, 0xF0, 0x08, 0x6C, +0xF8, 0x6D, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xED, +0x68, 0x45, 0xFB, 0x4B, 0x4C, 0xEB, 0x02, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, -0x1F, 0x6D, 0x00, 0xF4, 0x12, 0x6E, 0x0A, 0x10, +0x1F, 0x6D, 0x61, 0xF1, 0x09, 0x6E, 0x78, 0x10, +0x68, 0x45, 0xFD, 0x4B, 0x4C, 0xEB, 0x02, 0x5B, +0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, +0x1F, 0x6D, 0x61, 0xF1, 0x0A, 0x6E, 0x68, 0x10, +0x6F, 0x45, 0x4C, 0xEB, 0x0A, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, -0x00, 0xF4, 0x11, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0xAC, 0xEA, 0x0F, 0x5A, 0x0B, 0x60, -0x0D, 0x72, 0x09, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x01, 0xF0, 0x08, 0x6C, -0x70, 0x6D, 0x01, 0x6E, 0x08, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x01, 0xF0, -0x08, 0x6C, 0x70, 0x6D, 0x03, 0x6E, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0xAC, 0xEA, 0x26, 0x67, 0x3B, 0x22, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, -0xE3, 0xF6, 0x1C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF1, 0x04, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF6, 0x1C, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0xD1, 0x67, -0x48, 0xF0, 0x04, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x30, 0x9A, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF1, 0x00, 0x6C, 0xB1, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x48, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, -0x18, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF5, 0x1C, 0x6C, 0x03, 0xF7, -0xA0, 0x9B, 0x0F, 0x6E, 0x37, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x68, 0xE3, 0xF6, -0x3C, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, -0x04, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0xB1, 0x67, 0x48, 0xF0, -0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x30, 0x9A, 0xC0, 0xF3, -0x44, 0x98, 0x43, 0xF1, 0x00, 0x6C, 0xB1, 0x67, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x48, 0xF0, 0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, -0x18, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF7, 0xA0, 0x9B, 0x23, 0xF5, -0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x6A, -0xAC, 0xEA, 0x13, 0x22, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, -0x08, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, -0x1C, 0x6C, 0x03, 0xF7, 0xA0, 0x9B, 0x0F, 0x6E, -0x12, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x08, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF7, 0xA0, 0x9B, -0x23, 0xF5, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x68, 0xAC, 0xE8, 0x00, 0x6D, 0x24, 0x67, -0x80, 0x18, 0xFE, 0x4B, 0x99, 0x70, 0x07, 0x61, -0x50, 0x99, 0x40, 0xA2, 0x04, 0x2A, 0x91, 0x67, -0x01, 0x6D, 0x70, 0x6E, 0x03, 0x10, 0x00, 0x6D, -0x91, 0x67, 0xC5, 0x67, 0x80, 0x18, 0xBE, 0x4B, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0xAC, 0xEA, 0x0C, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9A, 0x63, 0xF4, 0x04, 0x6C, 0xC3, 0xF1, -0xB8, 0x9B, 0x01, 0x6E, 0x0B, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9A, 0xC3, 0xF1, 0xB8, 0x9B, 0x63, 0xF4, -0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0xFF, 0x6A, 0xAC, 0xEA, 0x09, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x41, 0xF4, -0x14, 0x6C, 0x80, 0x6D, 0x01, 0x6E, 0x08, 0x10, +0xA1, 0xF1, 0x0A, 0x6E, 0x59, 0x10, 0x68, 0x45, +0xE4, 0x4B, 0x4C, 0xEB, 0x10, 0x5B, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x41, 0xF4, 0x14, 0x6C, 0x80, 0x6D, 0x00, 0x6E, +0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, +0x80, 0xF4, 0x14, 0x6E, 0x49, 0x10, 0x68, 0x45, +0xD4, 0x4B, 0x4C, 0xEB, 0x04, 0x5B, 0x0B, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, +0x80, 0xF4, 0x13, 0x6E, 0x39, 0x10, 0x68, 0x45, +0xD0, 0x4B, 0x4C, 0xEB, 0x38, 0x5B, 0x0B, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, +0x40, 0xF4, 0x13, 0x6E, 0x29, 0x10, 0x68, 0x45, +0x98, 0x4B, 0x4C, 0xEB, 0x08, 0x5B, 0x0B, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x21, 0xF4, 0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, +0x40, 0xF4, 0x12, 0x6E, 0x19, 0x10, 0x88, 0x4D, +0x4C, 0xED, 0x35, 0x5D, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, +0x10, 0x6C, 0xE1, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, +0x12, 0x6E, 0x0A, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x21, 0xF4, 0x10, 0x6C, +0xE1, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x11, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x5B, 0xAC, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x68, -0xAC, 0xE8, 0x24, 0x67, 0xD0, 0x67, 0x61, 0xF2, -0x10, 0x6C, 0xE0, 0xF3, 0x1F, 0x6D, 0x40, 0xEA, -0x1B, 0xC9, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0xAC, 0xEA, +0x0F, 0x5A, 0x0B, 0x60, 0x0D, 0x72, 0x09, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0x01, 0xF0, 0x08, 0x6C, 0x70, 0x6D, 0x01, 0x6E, +0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x01, 0xF0, 0x08, 0x6C, 0x70, 0x6D, +0x03, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, +0x26, 0x67, 0x3B, 0x22, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x68, 0x04, 0xF6, 0x00, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, +0x04, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF6, 0x00, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0xD1, 0x67, 0x48, 0xF0, 0x04, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x24, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, +0x00, 0x6C, 0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF0, 0x00, 0x6C, +0xB1, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x01, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, +0x1C, 0x6C, 0x04, 0xF6, 0xA4, 0x9B, 0x0F, 0x6E, +0x37, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x68, 0x04, 0xF6, 0x20, 0x9A, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF1, 0x04, 0x6C, 0xB1, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0xB1, 0x67, 0x48, 0xF0, 0x04, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, +0x24, 0x9A, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF1, +0x00, 0x6C, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF0, 0x00, 0x6C, +0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0xF0, 0x18, 0x6C, 0x01, 0xF0, +0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0xF6, +0xA4, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF7, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x9A, -0x00, 0x6E, 0x23, 0xF4, 0x1C, 0x6C, 0x40, 0xEA, -0x01, 0x6D, 0xA5, 0xF5, 0x14, 0x6C, 0xAB, 0xED, -0x80, 0x18, 0x72, 0x3C, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF7, 0x68, 0x9B, 0x05, 0x97, 0x4C, 0xEB, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF4, 0x44, 0x9A, -0x4E, 0xEB, 0x01, 0x5B, 0x58, 0x67, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x83, 0xF2, 0x18, 0x68, -0x24, 0x67, 0x18, 0xF0, 0x00, 0x6D, 0x90, 0x67, -0x80, 0x18, 0x72, 0x3C, 0x05, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF5, 0xA8, 0x9A, 0xA3, 0xF2, -0x08, 0x6C, 0x80, 0x18, 0x72, 0x3C, 0x90, 0x67, -0xC0, 0x6D, 0x04, 0xD2, 0x80, 0x18, 0x72, 0x3C, -0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF4, -0xAC, 0x9A, 0x63, 0xF2, 0x10, 0x6C, 0x80, 0x18, -0x72, 0x3C, 0x05, 0x93, 0x04, 0x95, 0xFF, 0x6C, -0x8C, 0xEB, 0x8C, 0xE8, 0x70, 0x33, 0x10, 0x30, -0x4D, 0xE8, 0xAD, 0xEB, 0x60, 0xF0, 0x71, 0xC1, -0x60, 0xF0, 0x12, 0xC1, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0x68, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xED, -0xE3, 0xF5, 0x08, 0x4A, 0x04, 0xD5, 0xA0, 0x9A, -0x21, 0xF0, 0x04, 0x69, 0x91, 0x67, 0x80, 0x18, -0x72, 0x3C, 0x04, 0x93, 0x41, 0x23, 0x4C, 0xE8, -0x03, 0x70, 0x00, 0x6A, 0x7B, 0x61, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, -0x1C, 0x6C, 0x04, 0x6D, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x0C, 0x4B, -0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF5, 0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, -0x0C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF2, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, 0xB8, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x02, 0xF2, 0x08, 0x49, -0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x03, 0xF7, 0xAC, 0x9B, 0x00, 0x6E, 0x3C, 0x10, +0x04, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, 0x13, 0x22, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x21, 0xF0, 0x1C, 0x6C, 0x04, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, -0x0C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF5, 0x08, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, 0x00, 0x6C, -0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF4, 0x0C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF6, -0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, -0x0C, 0x69, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x01, 0xF0, 0x18, 0x6C, 0x08, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF5, 0x1C, 0x6C, 0x04, 0xF6, +0xA4, 0x9B, 0x0F, 0x6E, 0x12, 0x10, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, +0x18, 0x6C, 0x08, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF7, 0xAC, 0x9B, 0x91, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0x01, 0x6A, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x04, 0xF6, 0xA4, 0x9B, 0x23, 0xF5, 0x1C, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x04, 0x90, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0xAC, 0xE8, +0x00, 0x6D, 0x24, 0x67, 0x80, 0x18, 0x0D, 0x51, +0x99, 0x70, 0x07, 0x61, 0x50, 0x99, 0x40, 0xA2, +0x04, 0x2A, 0x91, 0x67, 0x01, 0x6D, 0x70, 0x6E, +0x03, 0x10, 0x00, 0x6D, 0x91, 0x67, 0xC5, 0x67, +0x80, 0x18, 0xCD, 0x50, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0xAC, 0xEA, +0x0C, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x63, 0xF4, +0x04, 0x6C, 0x04, 0xF1, 0xAC, 0x9B, 0x01, 0x6E, +0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x04, 0xF1, +0xAC, 0x9B, 0x63, 0xF4, 0x04, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0xAC, 0xEA, +0x09, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x41, 0xF4, 0x14, 0x6C, 0x80, 0x6D, +0x01, 0x6E, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x41, 0xF4, 0x14, 0x6C, +0x80, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x5B, 0xAC, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x4C, 0xED, 0x08, 0xD4, 0xCC, 0xEA, -0xC0, 0xF0, 0x1C, 0x25, 0x20, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x03, 0xF7, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x00, 0x6C, 0x21, 0xF0, 0x13, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, -0x18, 0xF0, 0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, -0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xAB, 0xED, -0x03, 0xF7, 0xD4, 0x9B, 0x90, 0x11, 0x08, 0x93, -0x50, 0x9B, 0x40, 0xA2, 0x01, 0x72, 0x80, 0xF1, -0x0B, 0x61, 0x01, 0x69, 0x2B, 0xE9, 0xA1, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x80, 0x18, 0x72, 0x3C, -0x08, 0x93, 0x30, 0xF0, 0x20, 0x68, 0x03, 0xF0, -0x00, 0x6C, 0x5D, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF7, 0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x81, 0xF0, 0x08, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x81, 0xF0, 0x18, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, -0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, -0x10, 0x6C, 0xB1, 0x67, 0x04, 0xF2, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF7, -0x14, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF7, 0x14, 0x4B, -0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, -0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF7, 0xD8, 0x9B, 0xC0, 0xF3, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, +0xFF, 0xF7, 0x1F, 0x68, 0xAC, 0xE8, 0x24, 0x67, +0xD0, 0x67, 0x61, 0xF2, 0x10, 0x6C, 0xE0, 0xF3, +0x1F, 0x6D, 0x40, 0xEA, 0x1B, 0xC9, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF6, 0xA8, 0x9B, +0xC0, 0xF3, 0x44, 0x9A, 0x00, 0x6E, 0x23, 0xF4, +0x1C, 0x6C, 0x40, 0xEA, 0x01, 0x6D, 0xA5, 0xF5, +0x14, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0xE1, 0x39, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF6, 0x6C, 0x9B, +0x05, 0x97, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xE4, 0xF3, 0x5C, 0x9A, 0x4E, 0xEB, 0x01, 0x5B, +0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x83, 0xF2, 0x18, 0x68, 0x24, 0x67, 0x18, 0xF0, +0x00, 0x6D, 0x90, 0x67, 0x80, 0x18, 0xE1, 0x39, +0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF4, +0xAC, 0x9A, 0xA3, 0xF2, 0x08, 0x6C, 0x80, 0x18, +0xE1, 0x39, 0x90, 0x67, 0xC0, 0x6D, 0x04, 0xD2, +0x80, 0x18, 0xE1, 0x39, 0x02, 0x67, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF4, 0xA4, 0x9A, 0x63, 0xF2, +0x10, 0x6C, 0x80, 0x18, 0xE1, 0x39, 0x05, 0x93, +0x04, 0x95, 0xFF, 0x6C, 0x8C, 0xEB, 0x8C, 0xE8, +0x70, 0x33, 0x10, 0x30, 0x4D, 0xE8, 0xAD, 0xEB, +0x60, 0xF0, 0x73, 0xC1, 0x60, 0xF0, 0x14, 0xC1, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x68, 0x30, 0xF0, +0x20, 0x6A, 0x0C, 0xED, 0xE4, 0xF4, 0x0C, 0x4A, +0x04, 0xD5, 0xA0, 0x9A, 0x21, 0xF0, 0x04, 0x69, +0x91, 0x67, 0x80, 0x18, 0xE1, 0x39, 0x04, 0x93, +0x41, 0x23, 0x4C, 0xE8, 0x03, 0x70, 0x00, 0x6A, +0x7B, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x21, 0xF0, 0x1C, 0x6C, 0x04, 0x6D, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF4, 0x04, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF4, 0x0C, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0xF1, +0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF4, 0x04, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF5, 0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x02, 0xF2, 0x08, 0x49, 0x91, 0x67, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x04, 0xF6, 0xB0, 0x9B, +0x00, 0x6E, 0x3C, 0x10, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x1C, 0x6C, +0x04, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF4, 0x04, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x03, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF4, +0x0C, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x08, 0xF1, 0x00, 0x6C, 0x03, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF4, 0x04, 0x4B, +0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, +0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF5, 0xBC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x04, 0xF6, 0xB0, 0x9B, +0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x01, 0x6A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x4C, 0xED, +0x08, 0xD4, 0xCC, 0xEA, 0xC0, 0xF0, 0x1C, 0x25, +0x20, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x04, 0xF6, 0xB4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x21, 0xF0, +0x13, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, +0x02, 0x6E, 0x40, 0xEA, 0x01, 0x6D, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xAB, 0xED, 0x04, 0xF6, 0xD8, 0x9B, +0x90, 0x11, 0x08, 0x93, 0x50, 0x9B, 0x40, 0xA2, +0x01, 0x72, 0x80, 0xF1, 0x0B, 0x61, 0x01, 0x69, +0x2B, 0xE9, 0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x80, 0x18, 0xE1, 0x39, 0x08, 0x93, 0x30, 0xF0, +0x20, 0x68, 0x03, 0xF0, 0x00, 0x6C, 0x5E, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF6, 0xB4, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x08, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, +0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, +0x18, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, +0x04, 0xF2, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF6, 0x18, 0x4B, 0xC0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x04, 0xF6, 0x18, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF7, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF6, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF7, 0xC0, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x24, 0xF6, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF6, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF7, 0xC8, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x24, 0xF6, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF6, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF7, 0xD0, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x24, 0xF6, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF6, 0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF7, 0xD8, 0x9B, 0xC0, 0xF3, +0x20, 0x6B, 0x24, 0xF6, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, -0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x23, 0xF7, -0x1C, 0x4B, 0xD4, 0x10, 0x20, 0x22, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0x03, 0xF7, -0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, -0x00, 0x6C, 0x20, 0xF3, 0x13, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, -0x18, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x01, 0x6D, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xAB, 0xED, -0x43, 0xF7, 0xC0, 0x9B, 0xB4, 0x10, 0x08, 0x93, -0x50, 0x9B, 0x40, 0xA2, 0x01, 0x72, 0xA0, 0xF0, -0x0F, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF7, 0xB0, 0x9B, 0xC0, 0xF3, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF6, +0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF6, 0x00, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0xC0, 0x9B, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, +0xB1, 0x67, 0x44, 0xF6, 0x00, 0x4B, 0xD4, 0x10, +0x20, 0x22, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x04, 0xF6, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x00, 0x6C, 0x20, 0xF3, -0x13, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x81, 0xF0, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF4, 0x08, 0x6C, -0x18, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x08, 0x93, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x69, -0xDD, 0x9B, 0x2B, 0xE9, 0xA1, 0xF1, 0x10, 0x6C, -0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF7, 0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, -0x00, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, 0xC4, 0x9B, +0x13, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x01, 0x6D, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xAB, 0xED, 0x44, 0xF6, 0xC4, 0x9B, +0xB4, 0x10, 0x08, 0x93, 0x50, 0x9B, 0x40, 0xA2, +0x01, 0x72, 0xA0, 0xF0, 0x0F, 0x61, 0x30, 0xF0, +0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF6, +0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, +0x00, 0x6C, 0x20, 0xF3, 0x13, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0xAC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, 0x18, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x63, 0xF4, 0x08, 0x6C, 0x18, 0xF0, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x08, 0x93, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x69, 0xDE, 0x9B, 0x2B, 0xE9, +0xA1, 0xF1, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF6, 0x04, 0x4B, +0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF6, 0x04, 0x4B, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF7, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x44, 0xF6, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, 0xCC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF6, 0xCC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF7, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x44, 0xF6, 0xD0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, 0xD4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF6, 0xD4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF7, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x44, 0xF6, 0xD8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, 0xDC, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF6, 0xDC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF7, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x64, 0xF6, 0xC0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0xC4, 0x9B, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF6, 0xC4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF7, 0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xC0, 0x9B, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, -0x63, 0xF7, 0x08, 0x4B, 0xC0, 0x9B, 0x40, 0xEA, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0x67, -0xE3, 0xF5, 0xA8, 0x9A, 0x21, 0xF0, 0x04, 0x6C, -0x80, 0x18, 0x72, 0x3C, 0x40, 0xC0, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF4, 0xAC, 0x9A, 0x03, 0xF2, -0x04, 0x6C, 0x80, 0x18, 0x72, 0x3C, 0x01, 0x72, -0x02, 0x61, 0x03, 0x6A, 0x06, 0x10, 0x02, 0x2A, -0x01, 0x6A, 0x03, 0x10, 0x05, 0x72, 0x02, 0x61, -0x02, 0x6A, 0x41, 0xC0, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x05, 0x67, 0x01, 0x6D, 0x21, 0xF0, -0x00, 0x6C, 0xAB, 0xED, 0x80, 0x18, 0x72, 0x3C, -0xF0, 0x6B, 0x4C, 0xEB, 0x72, 0x33, 0x61, 0xC0, -0x0F, 0x6B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF4, 0xBC, 0x9A, 0x60, 0xC0, 0x03, 0xF2, -0x04, 0x6C, 0x80, 0x18, 0x72, 0x3C, 0x0C, 0x72, -0x02, 0x61, 0x03, 0x6A, 0x09, 0x10, 0x08, 0x72, -0x02, 0x61, 0x01, 0x6A, 0x05, 0x10, 0x04, 0x72, -0x02, 0x61, 0x02, 0x6A, 0x01, 0x10, 0x01, 0x2A, -0x42, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0xBC, 0x9A, 0x23, 0xF6, 0x04, 0x6C, 0x80, 0x18, -0x72, 0x3C, 0x4F, 0xEA, 0x43, 0xC0, 0x01, 0x6A, -0x44, 0xC0, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x69, 0x02, 0x5D, -0x0D, 0xD5, 0x0F, 0xD7, 0xCC, 0xE9, 0x70, 0x60, -0x54, 0x59, 0x6E, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0x23, 0xF2, 0x04, 0x4B, -0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x63, 0xF4, -0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF7, -0xAC, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0xD1, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, -0x04, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, -0x63, 0xF4, 0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0xE5, 0xF5, 0x08, 0x6C, 0xFF, 0x6D, 0x80, 0x18, -0x72, 0x3C, 0x00, 0xF6, 0x40, 0x30, 0x00, 0xF6, -0x03, 0x30, 0x40, 0x6A, 0x0C, 0xEA, 0x03, 0x22, -0x80, 0x6A, 0x4B, 0xEA, 0x4D, 0xE8, 0x0F, 0x92, -0x0B, 0x72, 0x10, 0x61, 0x0D, 0x93, 0xA3, 0xF0, -0x00, 0x6A, 0x06, 0xD2, 0x05, 0xF1, 0x00, 0x4A, -0x07, 0xD2, 0x68, 0x32, 0x7D, 0x67, 0x49, 0xE3, -0x8C, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0xB0, 0x9A, 0x13, 0x10, 0x0F, 0x92, 0x00, 0x6B, -0x0C, 0x72, 0x13, 0x61, 0x0D, 0x93, 0xE3, 0xF0, -0x08, 0x6A, 0x04, 0xD2, 0x05, 0xF1, 0x00, 0x4A, -0x05, 0xD2, 0x68, 0x32, 0x7D, 0x67, 0x49, 0xE3, -0x88, 0xAA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0xB4, 0x9A, 0x80, 0x18, 0x72, 0x3C, 0xFF, 0x6B, -0x4C, 0xEB, 0x0D, 0xE3, 0x00, 0x53, 0x00, 0x68, -0x02, 0x61, 0xFF, 0x68, 0x6C, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x44, 0x9A, 0x23, 0xF2, 0xA4, 0x9B, 0x63, 0xF4, -0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0x01, 0x10, -0xFF, 0x68, 0x50, 0x67, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, -0x00, 0xF6, 0xA0, 0x35, 0x00, 0xF6, 0xC0, 0x36, -0x00, 0xF6, 0xE0, 0x37, 0x00, 0xF6, 0xA3, 0x35, -0x00, 0xF6, 0xC3, 0x36, 0x00, 0xF6, 0xE3, 0x37, -0x05, 0xD5, 0x06, 0xD6, 0x07, 0xD7, 0x5D, 0x67, -0x40, 0xF0, 0x48, 0x82, 0x08, 0xD2, 0x5D, 0x67, -0x40, 0xF0, 0x4C, 0xA2, 0x04, 0xD2, 0x20, 0xF0, -0x6F, 0xA4, 0x01, 0x6A, 0x37, 0x2B, 0x04, 0x92, -0x40, 0x5A, 0x00, 0x6A, 0x33, 0x60, 0x83, 0xF4, -0x10, 0x68, 0x10, 0xF0, 0x00, 0x69, 0x90, 0x67, -0xB1, 0x67, 0x80, 0x18, 0x72, 0x3C, 0x08, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x90, 0x67, 0xB1, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x04, 0x92, 0x04, 0x6C, 0x06, 0x93, 0x8B, 0xEC, -0x4C, 0xEC, 0x05, 0x92, 0x7F, 0x6E, 0xCC, 0xEB, -0xCC, 0xEA, 0x60, 0x33, 0x4D, 0xEB, 0x07, 0x92, -0xFF, 0xF7, 0x1F, 0x6D, 0x07, 0xF2, 0x00, 0x4C, -0xCC, 0xEA, 0x40, 0x32, 0x40, 0x32, 0x4D, 0xEB, -0x08, 0x92, 0xAC, 0xEC, 0x01, 0x6D, 0x4C, 0xEE, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x00, 0xF6, 0xC0, 0x36, 0xAB, 0xED, 0x6D, 0xEE, -0x40, 0xEA, 0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x0F, 0xD7, 0x20, 0xF0, 0x6F, 0xA4, 0xFF, 0x68, -0x26, 0x67, 0xAC, 0xE8, 0x01, 0x6A, 0x3F, 0x2B, -0x02, 0x5E, 0x00, 0x6A, 0x3C, 0x60, 0x83, 0xF4, -0x10, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, -0x72, 0x3C, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x44, 0x9A, 0x83, 0xF4, 0x10, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, -0x0F, 0x92, 0x0B, 0x72, 0x13, 0x61, 0xA3, 0xF0, -0x00, 0x6B, 0x06, 0xD3, 0x05, 0xF1, 0x00, 0x4B, -0x07, 0xD3, 0x28, 0x31, 0x7D, 0x67, 0x25, 0xE3, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9A, 0x8C, 0xA9, 0x63, 0xF7, -0xB0, 0x9B, 0x12, 0x10, 0xE3, 0xF0, 0x08, 0x6B, -0x04, 0xD3, 0x05, 0xF1, 0x00, 0x4B, 0x05, 0xD3, -0x28, 0x31, 0x7D, 0x67, 0x25, 0xE3, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x9A, 0x88, 0xA9, 0x63, 0xF7, 0xB4, 0x9B, -0xD0, 0x67, 0x40, 0xEA, 0x01, 0x6A, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x0C, 0xD4, 0x25, 0x67, 0xA0, 0xA5, 0x00, 0x6E, -0x0B, 0x6F, 0x80, 0x18, 0x46, 0x4E, 0x0C, 0x94, -0xA1, 0xA1, 0x01, 0x6E, 0x0B, 0x6F, 0x80, 0x18, -0x46, 0x4E, 0x0C, 0x94, 0xA2, 0xA1, 0x00, 0x6E, -0x0C, 0x6F, 0x80, 0x18, 0x46, 0x4E, 0x0C, 0x94, -0xA3, 0xA1, 0x01, 0x6E, 0x0C, 0x6F, 0x80, 0x18, -0x46, 0x4E, 0xFD, 0x6A, 0x00, 0x6B, 0x11, 0x67, -0x06, 0xD2, 0x07, 0xD3, 0x07, 0x93, 0x03, 0x6A, -0x6C, 0xEA, 0x03, 0x72, 0x0A, 0x61, 0x44, 0x80, -0xA1, 0x80, 0xC2, 0x80, 0xE3, 0x80, 0x0C, 0x94, -0x04, 0xD2, 0x06, 0x92, 0x05, 0xD2, 0x80, 0x18, -0x18, 0x4E, 0x06, 0x92, 0x07, 0x93, 0x01, 0x48, -0x01, 0x4A, 0x06, 0xD2, 0x01, 0x4B, 0x07, 0xD3, -0x06, 0x93, 0xFF, 0x6A, 0x4C, 0xEB, 0x07, 0x92, -0x06, 0xD3, 0x1C, 0x72, 0xE3, 0x61, 0x11, 0x67, -0x29, 0x69, 0x43, 0x41, 0x03, 0x6B, 0x6C, 0xEA, -0x03, 0x72, 0x0D, 0x61, 0x20, 0xF0, 0xAD, 0x80, -0x20, 0xF0, 0xCE, 0x80, 0x20, 0xF0, 0xEF, 0x80, -0x20, 0xF0, 0x50, 0x80, 0x0C, 0x94, 0x05, 0xD1, -0x04, 0xD2, 0x80, 0x18, 0x18, 0x4E, 0x01, 0x49, -0x3D, 0x71, 0x01, 0x48, 0xEA, 0x61, 0x0B, 0x97, -0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x02, 0x5D, 0x03, 0x61, -0x01, 0x6A, 0x4B, 0xEA, 0x18, 0x10, 0x07, 0xF4, -0x00, 0x6A, 0x04, 0xD2, 0x02, 0xF0, 0x00, 0x4A, -0x05, 0xD2, 0xA8, 0x35, 0x5D, 0x67, 0xB5, 0xE2, -0x44, 0x9D, 0xFF, 0x6C, 0xCC, 0xEC, 0x88, 0x34, -0x51, 0xE4, 0xFF, 0xF7, 0x1F, 0x6A, 0x4C, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0xB4, 0x9A, -0xEC, 0xED, 0x80, 0x18, 0x72, 0x3C, 0x07, 0x97, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF0, 0x24, 0xA4, 0xA3, 0xF4, 0xF4, 0x9A, -0x05, 0x67, 0x18, 0x6E, 0x00, 0x6D, 0x80, 0x18, -0x9C, 0x4E, 0xEB, 0x49, 0xFF, 0x6B, 0x6C, 0xE9, -0x02, 0x59, 0x4F, 0x60, 0x4C, 0xEB, 0x0F, 0x5B, -0x78, 0x67, 0x01, 0x5B, 0x78, 0x67, 0x6B, 0xEB, -0x6C, 0xE8, 0x01, 0x70, 0x12, 0x60, 0x05, 0x20, -0x02, 0x70, 0x23, 0x60, 0x03, 0x70, 0x2D, 0x60, -0x40, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0xF7, -0x1F, 0x69, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF0, -0x00, 0x6C, 0xB1, 0x67, 0x6E, 0xF7, 0x10, 0x6E, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0xFF, 0xF7, 0x1F, 0x69, 0x43, 0xF0, -0x00, 0x6C, 0xB1, 0x67, 0x04, 0xF3, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF1, -0x04, 0x6C, 0xB1, 0x67, 0x6E, 0xF0, 0x17, 0x6E, -0x1F, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xFF, 0xF7, -0x1F, 0x69, 0xC0, 0xF3, 0x44, 0x98, 0x43, 0xF0, -0x00, 0x6C, 0xB1, 0x67, 0x6E, 0xF7, 0x10, 0x6E, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0xFF, 0xF7, 0x1F, 0x69, 0x43, 0xF0, -0x00, 0x6C, 0xB1, 0x67, 0x04, 0xF3, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x48, 0xF1, -0x04, 0x6C, 0xB1, 0x67, 0x24, 0xF0, 0x10, 0x6E, -0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0x02, 0x5D, 0x05, 0x67, -0x12, 0x91, 0x37, 0x60, 0x04, 0x26, 0x04, 0xD1, -0x80, 0x18, 0x76, 0x4A, 0x33, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x54, 0x9A, 0x4C, 0xEF, -0x4A, 0xEF, 0x08, 0xD7, 0x0C, 0x60, 0x00, 0x6E, -0xE2, 0x67, 0x80, 0x18, 0x9C, 0x4E, 0x61, 0x42, -0x24, 0x23, 0x08, 0x94, 0xD1, 0x67, 0xA2, 0x67, -0x80, 0x18, 0x67, 0x4A, 0x22, 0x67, 0x03, 0xF0, -0x08, 0x6B, 0x06, 0xD3, 0x05, 0xF1, 0x00, 0x4B, -0x07, 0xD3, 0x08, 0x30, 0x7D, 0x67, 0x01, 0xE3, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0xD4, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x8C, 0xA8, 0x01, 0x6D, 0xAB, 0xED, 0x2C, 0xEE, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x0D, 0x6C, 0x40, 0xEA, 0x01, 0x6A, -0x01, 0x10, 0x00, 0x6A, 0x0D, 0x97, 0x0C, 0x91, -0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x00, 0x6D, 0x0A, 0xD4, 0x80, 0x18, 0x40, 0x4A, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x2C, 0x9A, -0x30, 0xF0, 0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, -0x00, 0x6A, 0x90, 0x67, 0xF1, 0x67, 0xA2, 0x67, -0xBC, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x90, 0x67, 0xF1, 0x67, 0x01, 0x6A, 0x00, 0x6D, -0xBC, 0x6E, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x00, 0x6A, 0xF1, 0x67, 0x90, 0x67, 0xBC, 0x6E, -0xA2, 0x67, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x0A, 0x94, 0x01, 0x6D, 0x80, 0x18, 0x40, 0x4A, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x63, 0xF5, 0x10, 0x69, -0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0x80, 0x18, -0x72, 0x3C, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x68, -0x04, 0x96, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6D, -0x91, 0x67, 0xAB, 0xED, 0xFF, 0xF5, 0x1E, 0x4E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0x96, -0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, 0x40, 0xEA, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x6D, 0x83, 0xF4, -0x10, 0x6C, 0x01, 0x4D, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x1C, 0x9A, -0x00, 0x6C, 0x01, 0x6E, 0xB0, 0x67, 0x80, 0x18, -0xFF, 0x3C, 0x00, 0x6C, 0xB0, 0x67, 0xC4, 0x67, -0x80, 0x18, 0xFF, 0x3C, 0xB0, 0x67, 0x00, 0x6C, -0x01, 0x6E, 0x80, 0x18, 0xFF, 0x3C, 0xC0, 0xF3, -0x44, 0x99, 0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, -0x01, 0x4D, 0x01, 0x6E, 0x40, 0xEA, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x52, 0x9C, -0x40, 0xA2, 0x13, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF1, 0x1C, 0x9A, 0x00, 0x6C, 0x01, 0x6E, -0xB0, 0x67, 0x80, 0x18, 0xFF, 0x3C, 0x00, 0x6C, -0xC4, 0x67, 0xB0, 0x67, 0x80, 0x18, 0xFF, 0x3C, -0x00, 0x6C, 0xB0, 0x67, 0x01, 0x6E, 0x80, 0x18, -0xFF, 0x3C, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x24, 0x67, 0x09, 0xD5, -0x80, 0x18, 0x61, 0x4C, 0x52, 0x99, 0x40, 0xA2, -0x04, 0x22, 0x91, 0x67, 0x01, 0x6D, 0x80, 0x18, -0x35, 0x4C, 0x20, 0xF0, 0x58, 0xA1, 0x04, 0x22, -0x91, 0x67, 0xE0, 0xF3, 0x1F, 0x6D, 0x02, 0x10, -0x91, 0x67, 0x00, 0x6D, 0x30, 0xF0, 0x20, 0x68, -0x80, 0x18, 0x43, 0x4C, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0x6D, 0xC5, 0x67, 0x03, 0xF0, 0x0C, 0x6C, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF4, -0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x03, 0xF0, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, -0x08, 0xF1, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF4, 0x18, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xA0, 0x9B, 0x08, 0xF1, 0x0C, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x09, 0x92, 0x07, 0x2A, -0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF4, 0x1C, 0x6C, -0x03, 0x6D, 0x00, 0x6E, 0x0A, 0x10, 0x09, 0x93, -0x00, 0x6A, 0x01, 0x73, 0x0B, 0x61, 0xC0, 0xF3, -0x44, 0x98, 0x03, 0x6D, 0x23, 0xF4, 0x1C, 0x6C, -0xC5, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x80, 0x18, -0x46, 0x4F, 0x01, 0x6A, 0x07, 0x97, 0x06, 0x91, +0x64, 0xF6, 0xC8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF0, 0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF6, 0x0C, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xC0, 0x9B, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, +0x10, 0x6C, 0xB1, 0x67, 0x64, 0xF6, 0x0C, 0x4B, +0xC0, 0x9B, 0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, +0x20, 0x6A, 0x05, 0x67, 0xE4, 0xF4, 0xAC, 0x9A, +0x21, 0xF0, 0x04, 0x6C, 0x80, 0x18, 0xE1, 0x39, +0x40, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF4, +0xA4, 0x9A, 0x03, 0xF2, 0x04, 0x6C, 0x80, 0x18, +0xE1, 0x39, 0x01, 0x72, 0x02, 0x61, 0x03, 0x6A, +0x06, 0x10, 0x02, 0x2A, 0x01, 0x6A, 0x03, 0x10, +0x05, 0x72, 0x02, 0x61, 0x02, 0x6A, 0x41, 0xC0, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x05, 0x67, +0x01, 0x6D, 0x21, 0xF0, 0x00, 0x6C, 0xAB, 0xED, +0x80, 0x18, 0xE1, 0x39, 0xF0, 0x6B, 0x4C, 0xEB, +0x72, 0x33, 0x61, 0xC0, 0x0F, 0x6B, 0x4C, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF3, 0xB4, 0x9A, +0x60, 0xC0, 0x03, 0xF2, 0x04, 0x6C, 0x80, 0x18, +0xE1, 0x39, 0x0C, 0x72, 0x02, 0x61, 0x03, 0x6A, +0x09, 0x10, 0x08, 0x72, 0x02, 0x61, 0x01, 0x6A, +0x05, 0x10, 0x04, 0x72, 0x02, 0x61, 0x02, 0x6A, +0x01, 0x10, 0x01, 0x2A, 0x42, 0xC0, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0xF1, 0xB0, 0x9A, 0x23, 0xF6, +0x04, 0x6C, 0x80, 0x18, 0xE1, 0x39, 0x4F, 0xEA, +0x43, 0xC0, 0x01, 0x6A, 0x44, 0xC0, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x0C, 0xD4, 0x20, 0xF0, 0x6F, 0xA4, 0xFF, 0x69, -0x06, 0x67, 0xAC, 0xE9, 0x01, 0x6A, 0xE0, 0xF1, -0x18, 0x2B, 0x07, 0x5E, 0xE0, 0xF1, 0x14, 0x60, -0x01, 0x76, 0x02, 0x61, 0x03, 0x59, 0x03, 0x10, -0x02, 0x76, 0x03, 0x61, 0x05, 0x59, 0xE0, 0xF1, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x94, -0xA3, 0xF4, 0xF4, 0x9A, 0x00, 0x6D, 0x18, 0x6E, -0x80, 0x18, 0x9C, 0x4E, 0x07, 0xD2, 0x07, 0x93, -0x06, 0xF0, 0x01, 0x6A, 0x4B, 0xEA, 0x4C, 0xEB, -0x07, 0x58, 0x06, 0xD3, 0x08, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0x08, 0x33, 0xA2, 0xF7, 0x00, 0x4A, -0x69, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x00, 0x69, -0x5A, 0x11, 0x05, 0x70, 0x25, 0x61, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, -0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, 0xA0, 0xF2, -0x0B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xA1, 0xF1, 0x10, 0x6C, 0xDF, 0xF7, 0x00, 0x6D, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xA1, 0xF1, 0x14, 0x69, 0x91, 0x67, 0x00, 0xF7, -0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x63, 0xF7, 0xBC, 0x9B, 0x04, 0x6E, 0x4C, 0x10, -0x06, 0x70, 0x25, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x10, 0x6C, -0xE7, 0xF7, 0x10, 0x6D, 0xA0, 0xF2, 0x0B, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, -0x10, 0x6C, 0xDF, 0xF7, 0x00, 0x6D, 0x02, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, -0x14, 0x69, 0x91, 0x67, 0x00, 0xF7, 0x00, 0x6D, -0x06, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x63, 0xF7, -0xBC, 0x9B, 0x05, 0x6E, 0x25, 0x10, 0x25, 0x28, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, -0x80, 0xF1, 0x1B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0xDF, 0xF7, -0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xA1, 0xF1, 0x14, 0x69, 0x91, 0x67, -0x00, 0xF7, 0x00, 0x6D, 0x07, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x63, 0xF7, 0xBC, 0x9B, 0x91, 0x67, 0x06, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0x0F, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x06, 0x93, 0x06, 0xF0, -0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, -0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, -0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x00, 0x6E, -0x18, 0x69, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF2, 0x1C, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0x08, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF2, 0x0C, 0x6C, 0x0F, 0x6D, 0x06, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, -0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x0C, 0x93, 0x53, 0x9B, 0x40, 0xA2, -0xA0, 0xF0, 0x05, 0x2A, 0x83, 0x67, 0x05, 0x6D, -0x80, 0x18, 0x3D, 0x4B, 0x0C, 0x94, 0x06, 0x6D, -0x6A, 0x10, 0x01, 0x71, 0x09, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, -0x00, 0x6C, 0x10, 0x6D, 0x01, 0x6E, 0x08, 0x10, +0xFF, 0x69, 0x02, 0x5D, 0x0D, 0xD5, 0x0F, 0xD7, +0xCC, 0xE9, 0x70, 0x60, 0x54, 0x59, 0x6E, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0x44, 0xF1, 0x1C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, +0xA0, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x64, 0xF6, 0xB0, 0x9B, 0x63, 0xF4, +0x1C, 0x6C, 0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF1, 0x1C, 0x4B, 0xC0, 0xF3, +0x44, 0x98, 0xA0, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0xE5, 0xF5, 0x08, 0x6C, +0xFF, 0x6D, 0x80, 0x18, 0xE1, 0x39, 0x00, 0xF6, +0x40, 0x30, 0x00, 0xF6, 0x03, 0x30, 0x40, 0x6A, +0x0C, 0xEA, 0x03, 0x22, 0x80, 0x6A, 0x4B, 0xEA, +0x4D, 0xE8, 0x0F, 0x92, 0x0B, 0x72, 0x10, 0x61, +0x0D, 0x93, 0xA3, 0xF0, 0x00, 0x6A, 0x06, 0xD2, +0x05, 0xF1, 0x00, 0x4A, 0x07, 0xD2, 0x68, 0x32, +0x7D, 0x67, 0x49, 0xE3, 0x8C, 0xAA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF6, 0xB4, 0x9A, 0x13, 0x10, +0x0F, 0x92, 0x00, 0x6B, 0x0C, 0x72, 0x13, 0x61, +0x0D, 0x93, 0xE3, 0xF0, 0x08, 0x6A, 0x04, 0xD2, +0x05, 0xF1, 0x00, 0x4A, 0x05, 0xD2, 0x68, 0x32, +0x7D, 0x67, 0x49, 0xE3, 0x88, 0xAA, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF6, 0xB8, 0x9A, 0x80, 0x18, +0xE1, 0x39, 0xFF, 0x6B, 0x4C, 0xEB, 0x0D, 0xE3, +0x00, 0x53, 0x00, 0x68, 0x02, 0x61, 0xFF, 0x68, +0x6C, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x44, 0xF1, +0xBC, 0x9B, 0x63, 0xF4, 0x1C, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0x01, 0x10, 0xFF, 0x68, 0x50, 0x67, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, +0x0C, 0xD1, 0x0B, 0xD0, 0x00, 0xF6, 0xA0, 0x35, +0x00, 0xF6, 0xC0, 0x36, 0x00, 0xF6, 0xE0, 0x37, +0x00, 0xF6, 0xA3, 0x35, 0x00, 0xF6, 0xC3, 0x36, +0x00, 0xF6, 0xE3, 0x37, 0x05, 0xD5, 0x06, 0xD6, +0x07, 0xD7, 0x5D, 0x67, 0x40, 0xF0, 0x48, 0x82, +0x08, 0xD2, 0x5D, 0x67, 0x40, 0xF0, 0x4C, 0xA2, +0x04, 0xD2, 0x20, 0xF0, 0x6F, 0xA4, 0x01, 0x6A, +0x37, 0x2B, 0x04, 0x92, 0x40, 0x5A, 0x00, 0x6A, +0x33, 0x60, 0x83, 0xF4, 0x10, 0x68, 0x10, 0xF0, +0x00, 0x69, 0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, +0xE1, 0x39, 0x08, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x90, 0x67, 0xB1, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0x04, 0x92, 0x04, 0x6C, +0x06, 0x93, 0x8B, 0xEC, 0x4C, 0xEC, 0x05, 0x92, +0x7F, 0x6E, 0xCC, 0xEB, 0xCC, 0xEA, 0x60, 0x33, +0x4D, 0xEB, 0x07, 0x92, 0xFF, 0xF7, 0x1F, 0x6D, +0x07, 0xF2, 0x00, 0x4C, 0xCC, 0xEA, 0x40, 0x32, +0x40, 0x32, 0x4D, 0xEB, 0x08, 0x92, 0xAC, 0xEC, +0x01, 0x6D, 0x4C, 0xEE, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x00, 0xF6, 0xC0, 0x36, +0xAB, 0xED, 0x6D, 0xEE, 0x40, 0xEA, 0x01, 0x6A, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x0F, 0xD7, 0x20, 0xF0, +0x6F, 0xA4, 0xFF, 0x68, 0x26, 0x67, 0xAC, 0xE8, +0x01, 0x6A, 0x3F, 0x2B, 0x02, 0x5E, 0x00, 0x6A, +0x3C, 0x60, 0x83, 0xF4, 0x10, 0x6C, 0x10, 0xF0, +0x00, 0x6D, 0x80, 0x18, 0xE1, 0x39, 0x0A, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF2, 0x00, 0x6C, 0x10, 0x6D, 0x00, 0x6E, -0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0x0F, 0x6D, -0x05, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xA1, 0xF1, 0x10, 0x6C, 0xC0, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x30, 0x36, -0x2D, 0xEE, 0xA1, 0xF1, 0x10, 0x6C, 0x1F, 0xF7, -0x00, 0x6D, 0x40, 0xEA, 0x06, 0x93, 0x04, 0xF0, -0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, -0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, -0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, -0x10, 0x69, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xA3, 0xF2, 0x1C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0x08, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0xE3, 0xF2, 0x0C, 0x6C, 0x0F, 0x6D, 0x08, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, -0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x40, 0xEA, 0x0C, 0x93, 0x53, 0x9B, 0x40, 0xA2, -0x3A, 0x2A, 0x83, 0x67, 0x04, 0x6D, 0x80, 0x18, -0x3D, 0x4B, 0x0C, 0x94, 0x00, 0x6D, 0x80, 0x18, -0x4C, 0x4B, 0x31, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, -0x0F, 0x6D, 0x0A, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0xC0, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x30, 0x36, 0x2D, 0xEE, 0xA1, 0xF1, 0x10, 0x6C, -0x1F, 0xF7, 0x00, 0x6D, 0x40, 0xEA, 0x06, 0x93, -0x02, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, 0x1C, 0x6C, -0x4D, 0xEB, 0x06, 0xD3, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF2, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x01, 0x6E, 0x08, 0x69, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x81, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, -0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0x0C, 0x94, -0x30, 0xF0, 0x20, 0x68, 0xAE, 0xF7, 0x18, 0x48, -0x00, 0x6D, 0x80, 0x18, 0x40, 0x4A, 0x01, 0x6A, -0x90, 0x67, 0x00, 0x6D, 0xEE, 0x6E, 0x04, 0x6F, -0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, 0x12, 0x6B, -0x90, 0x67, 0x00, 0x6D, 0x33, 0x6E, 0x1F, 0x6F, -0x04, 0xD3, 0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0x14, 0x4A, 0xE0, 0x9A, -0x90, 0x67, 0x00, 0x6D, 0x3F, 0x6E, 0x04, 0xD1, -0x80, 0x18, 0xE1, 0x4E, 0x00, 0x6B, 0xA3, 0x67, -0x90, 0x67, 0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x01, 0x6A, 0x90, 0x67, -0xA2, 0x67, 0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD2, -0x80, 0x18, 0xE1, 0x4E, 0x12, 0x6B, 0x90, 0x67, -0x01, 0x6D, 0x33, 0x6E, 0x1F, 0x6F, 0x04, 0xD3, -0x80, 0x18, 0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x14, 0x4A, 0xE0, 0x9A, 0x90, 0x67, -0x01, 0x6D, 0x3F, 0x6E, 0x04, 0xD1, 0x80, 0x18, -0xE1, 0x4E, 0x00, 0x6B, 0x90, 0x67, 0x01, 0x6D, -0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x14, 0x4B, 0xE0, 0x9B, 0x06, 0x92, 0x90, 0x67, -0x00, 0x6D, 0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x14, 0x4B, 0x06, 0x92, 0xE0, 0x9B, 0x90, 0x67, -0x01, 0x6D, 0x18, 0x6E, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x0C, 0x94, 0x01, 0x6D, 0x80, 0x18, -0x40, 0x4A, 0x07, 0x92, 0x01, 0x4A, 0x08, 0x22, -0x0C, 0x94, 0x80, 0x18, 0x1D, 0x4F, 0x0C, 0x94, -0x80, 0x18, 0x46, 0x4F, 0x01, 0x6A, 0x01, 0x10, -0x00, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x08, 0xD4, 0x09, 0xD5, -0x52, 0x9C, 0x60, 0xA2, 0x45, 0x67, 0x55, 0x2B, -0x02, 0x75, 0x29, 0x61, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0xC1, 0xF4, 0x00, 0x69, -0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, -0x18, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x08, 0x49, 0x91, 0x67, 0xE0, 0xF7, -0x1F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF7, 0x18, 0x4B, 0xC0, 0xF3, -0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, 0x01, 0x6E, -0x40, 0xEA, 0x03, 0x6A, 0x2A, 0x10, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xC1, 0xF4, -0x00, 0x69, 0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, -0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF7, 0x18, 0x4B, 0xA0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x49, -0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF7, 0x18, 0x4B, 0xC0, 0xF3, 0x44, 0x98, -0xA0, 0x9B, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x09, 0x92, 0x6F, 0x42, 0x02, 0x5B, 0x46, 0x60, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF5, 0x10, 0x69, 0x91, 0x67, 0x00, 0xF3, -0x00, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF7, 0xAC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0xA4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x04, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x41, 0xF4, 0x14, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF4, 0x18, 0x6C, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x09, 0x96, 0xFD, 0xF2, 0x14, 0x49, 0x91, 0x67, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0xE3, 0xF4, 0xAC, 0x9B, -0x09, 0x96, 0x47, 0x10, 0x03, 0x72, 0x46, 0x61, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF5, 0x10, 0x69, 0x91, 0x67, 0x00, 0xF3, -0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF7, 0xAC, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF2, 0xA4, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x04, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF5, 0xB4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0x41, 0xF4, 0x14, 0x6C, 0x01, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, 0xB0, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF4, 0x18, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF5, 0xA8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, -0xFD, 0xF2, 0x14, 0x49, 0x91, 0x67, 0x03, 0x6E, -0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, -0x44, 0x98, 0xE3, 0xF4, 0xAC, 0x9B, 0x91, 0x67, -0x03, 0x6E, 0x40, 0xEA, 0x08, 0x94, 0x80, 0x18, -0x46, 0x4F, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, -0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x03, 0x75, 0x24, 0x67, -0x53, 0x60, 0x01, 0x76, 0x09, 0x61, 0x30, 0xF0, -0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, -0x00, 0x6C, 0xFF, 0x6D, 0x01, 0x6E, 0x08, 0x10, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, 0x02, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, -0x0C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x00, 0x6E, -0x2E, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, -0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, -0x31, 0x6E, 0x0A, 0x10, 0x02, 0x76, 0x12, 0x61, -0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, -0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, 0x32, 0x6E, -0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, -0x0C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, -0x00, 0x6E, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, -0xFF, 0x6D, 0x33, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF6, 0x0C, 0x6C, 0xFF, 0xF7, -0x1F, 0x6D, 0x00, 0xF4, 0x04, 0x6E, 0x40, 0xEA, -0x91, 0x67, 0x80, 0x18, 0x46, 0x4F, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0x01, 0x76, 0xD0, 0x61, 0xC6, 0x17, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x01, 0x75, 0x08, 0xD4, 0x26, 0x61, 0x30, 0xF0, -0x20, 0x68, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, -0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, -0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, -0x20, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF6, 0xB8, 0x9B, 0xC0, 0xF3, -0x44, 0x98, 0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, -0x91, 0x67, 0x03, 0xF7, 0xAC, 0x9B, 0x00, 0x6E, -0x46, 0x10, 0x02, 0x75, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, 0xE3, 0xF4, -0xAC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, -0x04, 0x6C, 0x05, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, -0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, -0x20, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, -0x63, 0xF6, 0xB8, 0x9B, 0x00, 0x6E, 0x1E, 0x10, -0x03, 0x75, 0x26, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x68, 0xE3, 0xF4, 0xAC, 0x9B, -0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, -0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, -0x23, 0xF2, 0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, -0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x98, 0x63, 0xF6, 0xB8, 0x9B, -0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF7, -0xAC, 0x9B, 0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, -0x08, 0x94, 0x80, 0x18, 0x46, 0x4F, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x01, 0x6A, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x04, 0x67, 0x25, 0x67, -0x80, 0x18, 0x34, 0x51, 0xB1, 0x67, 0x90, 0x67, -0x80, 0x18, 0x89, 0x50, 0x20, 0xF0, 0x2D, 0xC0, -0x90, 0x67, 0x80, 0x18, 0x46, 0x4F, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x01, 0x75, -0x04, 0x67, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x83, 0xF4, 0x10, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x00, 0x6E, 0x40, 0xEA, 0x0F, 0x92, 0x0B, 0x72, +0x13, 0x61, 0xA3, 0xF0, 0x00, 0x6B, 0x06, 0xD3, +0x05, 0xF1, 0x00, 0x4B, 0x07, 0xD3, 0x28, 0x31, +0x7D, 0x67, 0x25, 0xE3, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, -0x03, 0xF2, 0x04, 0x6C, 0xC3, 0xF4, 0xBC, 0x9B, -0x08, 0x6E, 0x19, 0x10, 0x02, 0x75, 0x0C, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, 0x04, 0x6C, -0xC3, 0xF4, 0xBC, 0x9B, 0x04, 0x6E, 0x0B, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0x9A, 0xC3, 0xF4, 0xBC, 0x9B, -0x03, 0xF2, 0x04, 0x6C, 0x0C, 0x6E, 0x40, 0xEA, -0x90, 0x67, 0x80, 0x18, 0x46, 0x4F, 0x05, 0x97, +0x8C, 0xA9, 0x64, 0xF6, 0xB4, 0x9B, 0x12, 0x10, +0xE3, 0xF0, 0x08, 0x6B, 0x04, 0xD3, 0x05, 0xF1, +0x00, 0x4B, 0x05, 0xD3, 0x28, 0x31, 0x7D, 0x67, +0x25, 0xE3, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, 0x88, 0xA9, +0x64, 0xF6, 0xB8, 0x9B, 0xD0, 0x67, 0x40, 0xEA, +0x01, 0x6A, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x0C, 0xD4, 0x25, 0x67, +0xA0, 0xA5, 0x00, 0x6E, 0x0B, 0x6F, 0x80, 0x18, +0x55, 0x53, 0x0C, 0x94, 0xA1, 0xA1, 0x01, 0x6E, +0x0B, 0x6F, 0x80, 0x18, 0x55, 0x53, 0x0C, 0x94, +0xA2, 0xA1, 0x00, 0x6E, 0x0C, 0x6F, 0x80, 0x18, +0x55, 0x53, 0x0C, 0x94, 0xA3, 0xA1, 0x01, 0x6E, +0x0C, 0x6F, 0x80, 0x18, 0x55, 0x53, 0xFD, 0x6A, +0x00, 0x6B, 0x11, 0x67, 0x06, 0xD2, 0x07, 0xD3, +0x07, 0x93, 0x03, 0x6A, 0x6C, 0xEA, 0x03, 0x72, +0x0A, 0x61, 0x44, 0x80, 0xA1, 0x80, 0xC2, 0x80, +0xE3, 0x80, 0x0C, 0x94, 0x04, 0xD2, 0x06, 0x92, +0x05, 0xD2, 0x80, 0x18, 0x27, 0x53, 0x06, 0x92, +0x07, 0x93, 0x01, 0x48, 0x01, 0x4A, 0x06, 0xD2, +0x01, 0x4B, 0x07, 0xD3, 0x06, 0x93, 0xFF, 0x6A, +0x4C, 0xEB, 0x07, 0x92, 0x06, 0xD3, 0x1C, 0x72, +0xE3, 0x61, 0x11, 0x67, 0x29, 0x69, 0x43, 0x41, +0x03, 0x6B, 0x6C, 0xEA, 0x03, 0x72, 0x0D, 0x61, +0x20, 0xF0, 0xAD, 0x80, 0x20, 0xF0, 0xCE, 0x80, +0x20, 0xF0, 0xEF, 0x80, 0x20, 0xF0, 0x50, 0x80, +0x0C, 0x94, 0x05, 0xD1, 0x04, 0xD2, 0x80, 0x18, +0x27, 0x53, 0x01, 0x49, 0x3D, 0x71, 0x01, 0x48, +0xEA, 0x61, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x02, 0x5D, 0x03, 0x61, 0x01, 0x6A, 0x4B, 0xEA, +0x18, 0x10, 0x07, 0xF4, 0x00, 0x6A, 0x04, 0xD2, +0x02, 0xF0, 0x00, 0x4A, 0x05, 0xD2, 0xA8, 0x35, +0x5D, 0x67, 0xB5, 0xE2, 0x44, 0x9D, 0xFF, 0x6C, +0xCC, 0xEC, 0x88, 0x34, 0x51, 0xE4, 0xFF, 0xF7, +0x1F, 0x6A, 0x4C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF3, 0xAC, 0x9A, 0xEC, 0xED, 0x80, 0x18, +0xE1, 0x39, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF0, 0x24, 0xA4, +0xC4, 0xF3, 0xEC, 0x9A, 0x05, 0x67, 0x18, 0x6E, +0x00, 0x6D, 0x80, 0x18, 0xAB, 0x53, 0xEB, 0x49, +0xFF, 0x6B, 0x6C, 0xE9, 0x02, 0x59, 0x4F, 0x60, +0x4C, 0xEB, 0x0F, 0x5B, 0x78, 0x67, 0x01, 0x5B, +0x78, 0x67, 0x6B, 0xEB, 0x6C, 0xE8, 0x01, 0x70, +0x12, 0x60, 0x05, 0x20, 0x02, 0x70, 0x23, 0x60, +0x03, 0x70, 0x2D, 0x60, 0x40, 0x10, 0x30, 0xF0, +0x20, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF0, 0x00, 0x6C, 0xB1, 0x67, +0x6E, 0xF7, 0x10, 0x6E, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xFF, 0xF7, +0x1F, 0x69, 0x43, 0xF0, 0x00, 0x6C, 0xB1, 0x67, +0x04, 0xF3, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x48, 0xF1, 0x04, 0x6C, 0xB1, 0x67, +0x6E, 0xF0, 0x17, 0x6E, 0x1F, 0x10, 0x30, 0xF0, +0x20, 0x68, 0xFF, 0xF7, 0x1F, 0x69, 0xC0, 0xF3, +0x44, 0x98, 0x43, 0xF0, 0x00, 0x6C, 0xB1, 0x67, +0x6E, 0xF7, 0x10, 0x6E, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xFF, 0xF7, +0x1F, 0x69, 0x43, 0xF0, 0x00, 0x6C, 0xB1, 0x67, +0x04, 0xF3, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x48, 0xF1, 0x04, 0x6C, 0xB1, 0x67, +0x24, 0xF0, 0x10, 0x6E, 0x40, 0xEA, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x02, 0x5D, 0x05, 0x67, 0x12, 0x91, 0x37, 0x60, +0x04, 0x26, 0x04, 0xD1, 0x80, 0x18, 0x85, 0x4F, +0x33, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0x4C, 0x9A, 0x4C, 0xEF, 0x4A, 0xEF, 0x08, 0xD7, +0x0C, 0x60, 0x00, 0x6E, 0xE2, 0x67, 0x80, 0x18, +0xAB, 0x53, 0x61, 0x42, 0x24, 0x23, 0x08, 0x94, +0xD1, 0x67, 0xA2, 0x67, 0x80, 0x18, 0x76, 0x4F, +0x22, 0x67, 0x03, 0xF0, 0x08, 0x6B, 0x06, 0xD3, +0x05, 0xF1, 0x00, 0x4B, 0x07, 0xD3, 0x08, 0x30, +0x7D, 0x67, 0x01, 0xE3, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF3, 0xCC, 0x9B, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x8C, 0xA8, 0x01, 0x6D, +0xAB, 0xED, 0x2C, 0xEE, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0D, 0x6C, +0x40, 0xEA, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, +0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x00, 0x6D, 0x0A, 0xD4, +0x80, 0x18, 0x4F, 0x4F, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x20, 0x9A, 0x30, 0xF0, 0x21, 0x68, +0x70, 0xF1, 0x08, 0x48, 0x00, 0x6A, 0x90, 0x67, +0xF1, 0x67, 0xA2, 0x67, 0xBC, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x90, 0x67, 0xF1, 0x67, +0x01, 0x6A, 0x00, 0x6D, 0xBC, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x00, 0x6A, 0x90, 0x67, +0xF1, 0x67, 0xA2, 0x67, 0xBC, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x90, 0x67, 0xF1, 0x67, +0x00, 0x6A, 0x01, 0x6D, 0xFF, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x01, 0x6A, 0x90, 0x67, +0xF1, 0x67, 0xA2, 0x67, 0xFF, 0x6E, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0xF1, 0x67, 0x90, 0x67, +0xFF, 0x6E, 0x00, 0x6A, 0x01, 0x6D, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x0A, 0x94, 0x01, 0x6D, +0x80, 0x18, 0x4F, 0x4F, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x63, 0xF5, 0x10, 0x69, 0x01, 0x6D, 0x91, 0x67, +0xAB, 0xED, 0x80, 0x18, 0xE1, 0x39, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x68, 0x04, 0x96, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6D, 0x91, 0x67, 0xAB, 0xED, +0xFF, 0xF5, 0x1E, 0x4E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x04, 0x96, 0x01, 0x6D, 0x91, 0x67, +0xAB, 0xED, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x44, 0x99, +0xFF, 0x6D, 0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x04, 0xF1, 0x10, 0x9A, 0x00, 0x6C, 0x01, 0x6E, +0xB0, 0x67, 0x80, 0x18, 0x6E, 0x3A, 0x00, 0x6C, +0xB0, 0x67, 0xC4, 0x67, 0x80, 0x18, 0x6E, 0x3A, +0xB0, 0x67, 0x00, 0x6C, 0x01, 0x6E, 0x80, 0x18, +0x6E, 0x3A, 0xC0, 0xF3, 0x44, 0x99, 0xFF, 0x6D, +0x83, 0xF4, 0x10, 0x6C, 0x01, 0x4D, 0x01, 0x6E, +0x40, 0xEA, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x52, 0x9C, 0x40, 0xA2, 0x13, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF1, 0x10, 0x9A, +0x00, 0x6C, 0x01, 0x6E, 0xB0, 0x67, 0x80, 0x18, +0x6E, 0x3A, 0x00, 0x6C, 0xC4, 0x67, 0xB0, 0x67, +0x80, 0x18, 0x6E, 0x3A, 0x00, 0x6C, 0xB0, 0x67, +0x01, 0x6E, 0x80, 0x18, 0x6E, 0x3A, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x7D, 0x67, 0x04, 0x67, 0x47, 0x43, 0x0A, 0xD6, -0x20, 0xF0, 0xAC, 0xC0, 0x21, 0x4A, 0x60, 0xA2, -0x46, 0x67, 0xAD, 0xEA, 0x20, 0xF0, 0x6B, 0xC4, -0x20, 0xF0, 0x4A, 0xC4, 0x25, 0x67, 0xA7, 0x67, -0x80, 0x18, 0x7E, 0x51, 0x0A, 0x96, 0xB1, 0x67, -0x90, 0x67, 0x80, 0x18, 0x05, 0x51, 0x90, 0x67, -0x80, 0x18, 0x46, 0x4F, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x0B, 0xD5, 0x0C, 0xD6, 0x20, 0xF0, 0x44, 0xA4, -0x04, 0x67, 0x27, 0x67, 0x05, 0xD2, 0x20, 0xF0, -0x6F, 0xA4, 0x01, 0x6A, 0x61, 0x2B, 0xFB, 0x4A, -0xCC, 0xEA, 0x5D, 0x2A, 0xFF, 0x75, 0x06, 0x61, -0xFF, 0x77, 0x04, 0x61, 0x01, 0x6B, 0x03, 0x6D, -0x04, 0xD3, 0x07, 0x10, 0x0B, 0x93, 0x04, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x50, 0x2A, 0xA3, 0x67, -0x04, 0xD2, 0x0C, 0x96, 0x90, 0x67, 0x80, 0x18, -0x8F, 0x4A, 0x0C, 0x95, 0x90, 0x67, 0x80, 0x18, -0x73, 0x51, 0x20, 0xF0, 0x4B, 0xA0, 0x03, 0x2A, -0x01, 0x6A, 0x20, 0xF0, 0x4B, 0xC0, 0x0B, 0x92, -0xFF, 0x4A, 0x02, 0x5A, 0x02, 0x60, 0x0B, 0x91, -0x0C, 0x10, 0x0B, 0x93, 0x03, 0x73, 0x05, 0x61, -0xFF, 0x71, 0x09, 0x61, 0x20, 0xF0, 0x2B, 0xA0, -0x06, 0x10, 0x04, 0x92, 0x04, 0x22, 0x20, 0xF0, -0x2B, 0xA0, 0x00, 0x6D, 0x01, 0x10, 0x03, 0x6D, -0x90, 0x67, 0xD1, 0x67, 0xF1, 0x67, 0x80, 0x18, -0x98, 0x51, 0x05, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, -0x6C, 0xEA, 0x02, 0x5A, 0x18, 0x60, 0x20, 0xF0, -0x4A, 0xA0, 0x01, 0x72, 0x06, 0x61, 0x0C, 0x93, -0x01, 0x73, 0x03, 0x61, 0x90, 0x67, 0x01, 0x6D, -0x0C, 0x10, 0x20, 0xF0, 0x4A, 0xA0, 0x02, 0x72, -0x06, 0x61, 0x0C, 0x92, 0x02, 0x72, 0x03, 0x61, -0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, -0x03, 0x6D, 0x80, 0x18, 0xAD, 0x4E, 0x90, 0x67, -0x80, 0x18, 0x1D, 0x4F, 0x90, 0x67, 0x80, 0x18, -0x46, 0x4F, 0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF8, 0x63, 0x0F, 0x62, -0x0E, 0xD1, 0x0D, 0xD0, 0x20, 0xF0, 0x44, 0xA4, -0xFF, 0x69, 0x04, 0x67, 0x0A, 0xD2, 0x20, 0xF0, -0x6F, 0xA4, 0xAC, 0xE9, 0x01, 0x6A, 0x40, 0xF1, -0x0A, 0x2B, 0x48, 0x41, 0xF9, 0x4A, 0xFF, 0x6B, -0x6C, 0xEA, 0x15, 0x5A, 0x40, 0xF1, 0x02, 0x61, -0x48, 0x41, 0xC7, 0x4A, 0x6C, 0xEA, 0x23, 0x5A, -0x20, 0xF1, 0x1C, 0x61, 0x47, 0x41, 0x68, 0x4A, -0x6C, 0xEA, 0x04, 0x5A, 0x20, 0xF1, 0x16, 0x61, -0xB2, 0x59, 0x20, 0xF1, 0x13, 0x60, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF4, 0xF4, 0x9A, 0x00, 0x6D, -0x18, 0x6E, 0x80, 0x18, 0x9C, 0x4E, 0x09, 0xD2, -0x01, 0x4A, 0x20, 0xF1, 0x07, 0x22, 0x20, 0xF0, -0x6B, 0xA0, 0x0F, 0x59, 0x58, 0x67, 0x0B, 0xD2, -0x06, 0xD3, 0x0A, 0x2B, 0x21, 0xF0, 0x00, 0x6C, -0x0F, 0x6D, 0x80, 0x18, 0x72, 0x3C, 0xFF, 0x6C, -0x4C, 0xEC, 0x06, 0xD4, 0x20, 0xF0, 0x8B, 0xC0, -0x20, 0xF0, 0x8A, 0xA0, 0x08, 0xD4, 0x0F, 0x2C, -0x21, 0xF0, 0x00, 0x4C, 0xF0, 0x6D, 0x80, 0x18, -0x72, 0x3C, 0x06, 0x94, 0xFF, 0x6B, 0x6C, 0xEA, -0x4D, 0xEC, 0x6C, 0xEC, 0x08, 0xD4, 0x20, 0xF0, -0x4C, 0xC0, 0x20, 0xF0, 0x8A, 0xC0, 0x20, 0xF0, -0x8D, 0xA0, 0x07, 0xD4, 0x0D, 0x2C, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF5, 0xA8, 0x9A, 0x21, 0xF0, -0x04, 0x4C, 0x80, 0x18, 0x72, 0x3C, 0xFF, 0x6B, -0x4C, 0xEB, 0x07, 0xD3, 0x20, 0xF0, 0x6D, 0xC0, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0x40, 0x9A, -0x09, 0x93, 0x0B, 0x94, 0x4C, 0xEB, 0x2D, 0xEB, -0x06, 0xD3, 0x16, 0x2C, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF7, 0x44, 0x9A, 0x91, 0x59, 0x4D, 0xEB, -0x06, 0xD3, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x48, 0x9A, 0x07, 0x10, 0x50, 0x59, -0x07, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, -0x44, 0x9A, 0x06, 0x93, 0x4D, 0xEB, 0x06, 0xD3, -0x90, 0x67, 0x00, 0x6D, 0x80, 0x18, 0x40, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x14, 0x4B, -0xE0, 0x9B, 0x06, 0x92, 0x30, 0xF0, 0x20, 0x6C, -0xAE, 0xF7, 0x18, 0x4C, 0x00, 0x6D, 0x18, 0x6E, -0x09, 0xD4, 0x04, 0xD2, 0x80, 0x18, 0xE1, 0x4E, -0x06, 0x94, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, -0x14, 0x4A, 0x04, 0xD4, 0xE0, 0x9A, 0x09, 0x94, -0x01, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0xE1, 0x4E, -0x90, 0x67, 0x01, 0x6D, 0x80, 0x18, 0x40, 0x4A, -0x0F, 0x59, 0x11, 0x60, 0x50, 0x98, 0x40, 0xA2, -0x07, 0x2A, 0x90, 0x67, 0x05, 0x6D, 0x80, 0x18, -0x3D, 0x4B, 0x90, 0x67, 0x06, 0x6D, 0x1A, 0x10, -0x90, 0x67, 0x04, 0x6D, 0x80, 0x18, 0x3D, 0x4B, -0x90, 0x67, 0x00, 0x6D, 0x13, 0x10, 0x68, 0x41, -0xE4, 0x4B, 0xFF, 0x6A, 0x4C, 0xEB, 0x1D, 0x5B, -0x03, 0x60, 0x90, 0x67, 0x01, 0x6D, 0x0A, 0x10, -0x68, 0x41, 0xA4, 0x4B, 0x4C, 0xEB, 0x2D, 0x5B, -0x03, 0x60, 0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, -0x90, 0x67, 0x03, 0x6D, 0x80, 0x18, 0x4C, 0x4B, -0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0x67, 0x4B, -0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0xAF, 0x4B, -0x0B, 0x93, 0x2F, 0x23, 0x90, 0x67, 0xB1, 0x67, -0x80, 0x18, 0xE3, 0x4A, 0x90, 0x67, 0x01, 0x6D, -0x00, 0x18, 0xA1, 0xC1, 0x40, 0xF4, 0x14, 0x6C, -0x80, 0x6D, 0x00, 0x6E, 0x80, 0x18, 0xFF, 0x3C, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6C, -0xC0, 0xF3, 0x44, 0x9C, 0x83, 0xF2, 0xA8, 0x9B, -0x83, 0xF2, 0x00, 0x6C, 0x00, 0x6E, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, 0xA8, 0x9B, -0x83, 0xF4, 0x00, 0x6C, 0x0F, 0x6E, 0x40, 0xEA, -0x0A, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, -0x02, 0x5A, 0x41, 0x60, 0x90, 0x67, 0x00, 0x6D, -0x3C, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, 0x83, 0xF2, -0xA8, 0x9B, 0x83, 0xF2, 0x00, 0x6C, 0x01, 0x6E, -0x40, 0xEA, 0x01, 0x6E, 0x40, 0xF4, 0x14, 0x6C, -0x80, 0x6D, 0x80, 0x18, 0xFF, 0x3C, 0x90, 0x67, -0x02, 0x6D, 0x00, 0x18, 0xA1, 0xC1, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF7, 0xA8, 0x9B, 0x83, 0xF4, -0x00, 0x6C, 0x22, 0x6E, 0x40, 0xEA, 0x0A, 0x92, -0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, -0x16, 0x60, 0x08, 0x94, 0x01, 0x74, 0x06, 0x61, -0x07, 0x92, 0x01, 0x72, 0x0C, 0x61, 0x90, 0x67, -0x01, 0x6D, 0x0B, 0x10, 0x08, 0x93, 0x02, 0x73, -0x06, 0x61, 0x07, 0x94, 0x02, 0x74, 0x03, 0x61, -0x90, 0x67, 0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, -0x03, 0x6D, 0x80, 0x18, 0xAD, 0x4E, 0x90, 0x67, -0x80, 0x18, 0x1D, 0x4F, 0x52, 0x98, 0x40, 0xA2, -0x04, 0x22, 0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, -0x16, 0x4C, 0x90, 0x67, 0x80, 0x18, 0x46, 0x4F, -0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x0F, 0x97, -0x0E, 0x91, 0x0D, 0x90, 0x08, 0x63, 0x00, 0xEF, +0x24, 0x67, 0x09, 0xD5, 0x80, 0x18, 0x70, 0x51, +0x52, 0x99, 0x40, 0xA2, 0x04, 0x22, 0x91, 0x67, +0x01, 0x6D, 0x80, 0x18, 0x44, 0x51, 0x20, 0xF0, +0x58, 0xA1, 0x04, 0x22, 0x91, 0x67, 0xE0, 0xF3, +0x1F, 0x6D, 0x02, 0x10, 0x91, 0x67, 0x00, 0x6D, +0x30, 0xF0, 0x20, 0x68, 0x80, 0x18, 0x52, 0x51, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, 0xC5, 0x67, +0x03, 0xF0, 0x0C, 0x6C, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF3, 0x0C, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x03, 0xF0, 0x0C, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0x6D, 0xC5, 0x67, 0x08, 0xF1, 0x0C, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF3, +0x0C, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x08, 0xF1, 0x0C, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x09, 0x92, 0x07, 0x2A, 0xC0, 0xF3, 0x44, 0x98, +0x23, 0xF4, 0x1C, 0x6C, 0x03, 0x6D, 0x00, 0x6E, +0x0A, 0x10, 0x09, 0x93, 0x00, 0x6A, 0x01, 0x73, +0x0B, 0x61, 0xC0, 0xF3, 0x44, 0x98, 0x03, 0x6D, +0x23, 0xF4, 0x1C, 0x6C, 0xC5, 0x67, 0x40, 0xEA, +0x91, 0x67, 0x80, 0x18, 0x61, 0x54, 0x01, 0x6A, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x0C, 0xD4, 0x20, 0xF0, +0x6F, 0xA4, 0xFF, 0x69, 0x06, 0x67, 0xAC, 0xE9, +0x01, 0x6A, 0xE0, 0xF1, 0x18, 0x2B, 0x07, 0x5E, +0xE0, 0xF1, 0x14, 0x60, 0x01, 0x76, 0x02, 0x61, +0x03, 0x59, 0x03, 0x10, 0x02, 0x76, 0x03, 0x61, +0x05, 0x59, 0xE0, 0xF1, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0x0C, 0x94, 0xC4, 0xF3, 0xEC, 0x9A, +0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, 0xAB, 0x53, +0x07, 0xD2, 0x07, 0x93, 0x06, 0xF0, 0x01, 0x6A, +0x4B, 0xEA, 0x4C, 0xEB, 0x07, 0x58, 0x06, 0xD3, +0x08, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0x33, +0xC3, 0xF6, 0x14, 0x4A, 0x69, 0xE2, 0x40, 0x9A, +0x00, 0xEA, 0x00, 0x69, 0x5A, 0x11, 0x05, 0x70, +0x25, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, +0x10, 0x6D, 0xA0, 0xF2, 0x0B, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, +0xDF, 0xF7, 0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, 0x14, 0x69, +0x91, 0x67, 0x00, 0xF7, 0x00, 0x6D, 0x04, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x64, 0xF6, 0xBC, 0x9B, +0x04, 0x6E, 0x4C, 0x10, 0x06, 0x70, 0x25, 0x61, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x01, 0xF0, 0x10, 0x6C, 0xE7, 0xF7, 0x10, 0x6D, +0xA0, 0xF2, 0x0B, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, 0xDF, 0xF7, +0x00, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0xA1, 0xF1, 0x14, 0x69, 0x91, 0x67, +0x00, 0xF7, 0x00, 0x6D, 0x06, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x91, 0x67, 0x64, 0xF6, 0xBC, 0x9B, 0x05, 0x6E, +0x25, 0x10, 0x25, 0x28, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0xF0, 0x10, 0x6C, +0xE7, 0xF7, 0x10, 0x6D, 0x80, 0xF1, 0x1B, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, +0x10, 0x6C, 0xDF, 0xF7, 0x00, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, +0x14, 0x69, 0x91, 0x67, 0x00, 0xF7, 0x00, 0x6D, +0x07, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x64, 0xF6, 0xBC, 0x9B, +0x91, 0x67, 0x06, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, +0x10, 0x6C, 0x0F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x06, 0x93, 0x06, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, +0x1C, 0x6C, 0x4D, 0xEB, 0x06, 0xD3, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF1, 0xBC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x00, 0x6E, 0x18, 0x69, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0xAC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x1C, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF0, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xE3, 0xF2, 0x08, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0x0C, 0x6C, +0x0F, 0x6D, 0x06, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x81, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x0C, 0x93, +0x53, 0x9B, 0x40, 0xA2, 0xA0, 0xF0, 0x05, 0x2A, +0x83, 0x67, 0x05, 0x6D, 0x80, 0x18, 0x4C, 0x50, +0x0C, 0x94, 0x06, 0x6D, 0x6A, 0x10, 0x01, 0x71, +0x09, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x03, 0xF2, 0x00, 0x6C, 0x10, 0x6D, +0x01, 0x6E, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, 0x00, 0x6C, +0x10, 0x6D, 0x00, 0x6E, 0x30, 0xF0, 0x20, 0x68, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, +0x10, 0x6C, 0x0F, 0x6D, 0x05, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, 0x10, 0x6C, +0xC0, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x30, 0x36, 0x2D, 0xEE, 0xA1, 0xF1, +0x10, 0x6C, 0x1F, 0xF7, 0x00, 0x6D, 0x40, 0xEA, +0x06, 0x93, 0x04, 0xF0, 0x00, 0x6A, 0xA1, 0xF4, +0x1C, 0x6C, 0x4D, 0xEB, 0x06, 0xD3, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF1, 0xBC, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x01, 0x6E, 0x10, 0x69, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF1, 0xAC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xA3, 0xF2, 0x1C, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF0, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0xE3, 0xF2, 0x08, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0xE3, 0xF2, 0x0C, 0x6C, +0x0F, 0x6D, 0x08, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x81, 0xF0, 0x0C, 0x6C, 0x1E, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x40, 0xEA, 0x0C, 0x93, +0x53, 0x9B, 0x40, 0xA2, 0x3A, 0x2A, 0x83, 0x67, +0x04, 0x6D, 0x80, 0x18, 0x4C, 0x50, 0x0C, 0x94, +0x00, 0x6D, 0x80, 0x18, 0x5B, 0x50, 0x31, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0xA1, 0xF1, 0x10, 0x6C, 0x0F, 0x6D, 0x0A, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0xA1, 0xF1, +0x10, 0x6C, 0xC0, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x30, 0x36, 0x2D, 0xEE, +0xA1, 0xF1, 0x10, 0x6C, 0x1F, 0xF7, 0x00, 0x6D, +0x40, 0xEA, 0x06, 0x93, 0x02, 0xF0, 0x00, 0x6A, +0xA1, 0xF4, 0x1C, 0x6C, 0x4D, 0xEB, 0x06, 0xD3, +0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x01, 0x6E, 0x08, 0x69, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x81, 0xF0, +0x0C, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x06, 0x6E, +0x40, 0xEA, 0x0C, 0x94, 0x30, 0xF0, 0x21, 0x68, +0x70, 0xF1, 0x08, 0x48, 0x00, 0x6D, 0x80, 0x18, +0x4F, 0x4F, 0x01, 0x6A, 0x90, 0x67, 0x00, 0x6D, +0xEE, 0x6E, 0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, +0xF0, 0x53, 0x12, 0x6B, 0x90, 0x67, 0x00, 0x6D, +0x33, 0x6E, 0x1F, 0x6F, 0x04, 0xD3, 0x80, 0x18, +0xF0, 0x53, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0x0C, 0x4A, 0xE0, 0x9A, 0x90, 0x67, 0x00, 0x6D, +0x3F, 0x6E, 0x04, 0xD1, 0x80, 0x18, 0xF0, 0x53, +0x00, 0x6B, 0xA3, 0x67, 0x90, 0x67, 0xEE, 0x6E, +0x04, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x01, 0x6A, 0x90, 0x67, 0xA2, 0x67, 0xEE, 0x6E, +0x04, 0x6F, 0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, +0x12, 0x6B, 0x90, 0x67, 0x01, 0x6D, 0x33, 0x6E, +0x1F, 0x6F, 0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, +0xE0, 0x9A, 0x90, 0x67, 0x01, 0x6D, 0x3F, 0x6E, +0x04, 0xD1, 0x80, 0x18, 0xF0, 0x53, 0x00, 0x6B, +0x90, 0x67, 0x01, 0x6D, 0xEE, 0x6E, 0x04, 0x6F, +0x04, 0xD3, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, +0x06, 0x92, 0x90, 0x67, 0x00, 0x6D, 0x18, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF3, 0x0C, 0x4B, 0x06, 0x92, +0xE0, 0x9B, 0x90, 0x67, 0x01, 0x6D, 0x18, 0x6E, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x0C, 0x94, +0x01, 0x6D, 0x80, 0x18, 0x4F, 0x4F, 0x07, 0x92, +0x01, 0x4A, 0x08, 0x22, 0x0C, 0x94, 0x80, 0x18, +0x38, 0x54, 0x0C, 0x94, 0x80, 0x18, 0x61, 0x54, +0x01, 0x6A, 0x01, 0x10, 0x00, 0x6A, 0x0B, 0x97, +0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x26, 0x67, 0x4C, 0xED, 0x04, 0x67, -0x0B, 0xD7, 0x4C, 0xE9, 0x80, 0x18, 0xE5, 0x51, -0x00, 0x6B, 0x09, 0x22, 0x0B, 0x96, 0x90, 0x67, -0xB1, 0x67, 0x80, 0x18, 0x84, 0x4F, 0x4B, 0xEB, -0x4D, 0xEB, 0xC0, 0xF7, 0x62, 0x33, 0x07, 0x97, -0x06, 0x91, 0x05, 0x90, 0x43, 0x67, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x66, 0xF7, -0x12, 0x4C, 0x07, 0x6E, 0x40, 0xEA, 0x00, 0x18, -0x52, 0xCD, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x40, 0xA4, 0x01, 0x72, -0x04, 0x61, 0x00, 0x18, 0x5F, 0xD6, 0x00, 0x18, -0x55, 0xD6, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x22, 0x6A, 0x7D, 0x67, -0x50, 0xC3, 0x01, 0x6A, 0x4F, 0xCB, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x92, 0xC3, -0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0x30, 0xF0, 0x20, 0x6B, -0xFF, 0x69, 0x80, 0xF2, 0x48, 0x9B, 0x2C, 0xED, -0xFF, 0xF7, 0x1F, 0x68, 0x11, 0xD7, 0x8C, 0xE8, -0x08, 0xD5, 0x04, 0x04, 0x00, 0x6D, 0xCC, 0xE9, -0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x48, 0x9B, 0x05, 0x04, 0x00, 0x6D, -0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x4C, 0x9B, 0x11, 0x95, 0x04, 0x04, -0x04, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x4C, 0x9B, 0x12, 0x95, 0x06, 0x04, -0x04, 0x6E, 0x40, 0xEA, 0x00, 0xF1, 0x00, 0x58, -0x08, 0x61, 0x0E, 0xF0, 0x40, 0x40, 0xFF, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x00, 0xF1, 0x00, 0x5A, -0x39, 0x60, 0x08, 0x92, 0x04, 0x72, 0x11, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, -0xFF, 0x6B, 0x49, 0xE0, 0x40, 0xA2, 0x4C, 0xEB, -0x5F, 0x21, 0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, -0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, -0x57, 0x10, 0x08, 0x92, 0x05, 0x72, 0x12, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, -0xFF, 0xF7, 0x1F, 0x6B, 0x49, 0xE0, 0x40, 0xAA, -0x4C, 0xEB, 0x7F, 0x21, 0x06, 0x94, 0x8F, 0xEA, -0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, -0x04, 0xD2, 0x77, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x5C, 0x9A, 0x49, 0xE0, 0x60, 0x9A, -0x80, 0xF0, 0x1E, 0x21, 0x06, 0x94, 0x8F, 0xEA, -0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, -0x04, 0xD2, 0x96, 0x10, 0x01, 0xF0, 0x00, 0x58, -0x09, 0x61, 0x0D, 0xF7, 0x40, 0x40, 0xFF, 0xF7, -0x1F, 0x6B, 0x6C, 0xEA, 0x00, 0xF7, 0x00, 0x5A, -0x80, 0xF0, 0x17, 0x60, 0x08, 0x92, 0x04, 0x72, -0x31, 0x61, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, -0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x40, 0x9A, 0x49, 0xE0, 0x60, 0xA2, 0xFF, 0x6A, -0x6C, 0xEA, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, -0x4C, 0xEB, 0x04, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, -0x04, 0xD3, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, -0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x40, 0x9A, 0x7D, 0x67, 0x41, 0xE0, 0x50, 0xA3, -0x40, 0xC0, 0x7E, 0x10, 0x08, 0x92, 0x05, 0x72, -0x32, 0x61, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, -0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x40, 0x9A, 0x49, 0xE0, 0x60, 0xAA, 0xFF, 0xF7, -0x1F, 0x6A, 0x6C, 0xEA, 0x07, 0x21, 0x06, 0x94, -0x8F, 0xEB, 0x4C, 0xEB, 0x04, 0x92, 0x8C, 0xEA, -0x4D, 0xEB, 0x04, 0xD3, 0x1F, 0xF7, 0x00, 0x6A, -0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, -0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, -0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x40, 0x9A, 0x7D, 0x67, 0x41, 0xE0, -0x48, 0xAB, 0x40, 0xC8, 0x49, 0x10, 0x1F, 0xF7, +0x08, 0xD4, 0x09, 0xD5, 0x52, 0x9C, 0x60, 0xA2, +0x45, 0x67, 0x55, 0x2B, 0x02, 0x75, 0x29, 0x61, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0xC1, 0xF4, 0x00, 0x69, 0x91, 0x67, 0xE0, 0xF7, +0x1F, 0x6D, 0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x44, 0xF2, 0x08, 0x4B, 0xA0, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x08, 0x49, +0x91, 0x67, 0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, +0x08, 0x4B, 0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, +0x91, 0x67, 0x01, 0x6E, 0x40, 0xEA, 0x03, 0x6A, +0x2A, 0x10, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0xC1, 0xF4, 0x00, 0x69, 0x91, 0x67, +0xE0, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, +0x08, 0x4B, 0xA0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x91, 0x67, 0x00, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x08, 0x49, 0x91, 0x67, 0xE0, 0xF7, +0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x44, 0xF2, 0x08, 0x4B, +0xC0, 0xF3, 0x44, 0x98, 0xA0, 0x9B, 0x91, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0x09, 0x92, 0x6F, 0x42, +0x02, 0x5B, 0x46, 0x60, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, 0x10, 0x69, +0x91, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF6, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x41, 0xF4, 0x04, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x14, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF3, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x21, 0xF4, 0x18, 0x6C, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF4, 0xAC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x09, 0x96, 0xFD, 0xF2, +0x14, 0x49, 0x91, 0x67, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x04, 0xF4, 0xA4, 0x9B, 0x09, 0x96, 0x47, 0x10, +0x03, 0x72, 0x46, 0x61, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF5, 0x10, 0x69, +0x91, 0x67, 0x00, 0xF3, 0x00, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF6, +0xB0, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF1, 0xB8, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x41, 0xF4, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF4, 0xBC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0x41, 0xF4, 0x14, 0x6C, +0x01, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0x64, 0xF3, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x21, 0xF4, 0x18, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF4, 0xAC, 0x9B, +0xC0, 0xF3, 0x44, 0x98, 0xFD, 0xF2, 0x14, 0x49, +0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, 0x04, 0xF4, +0xA4, 0x9B, 0x91, 0x67, 0x03, 0x6E, 0x40, 0xEA, +0x08, 0x94, 0x80, 0x18, 0x61, 0x54, 0x07, 0x97, +0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x03, 0x75, 0x24, 0x67, 0x53, 0x60, 0x01, 0x76, +0x09, 0x61, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, +0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, +0x01, 0x6E, 0x08, 0x10, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, +0xFF, 0x6D, 0x02, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF6, 0x0C, 0x6C, 0xFF, 0xF7, +0x1F, 0x6D, 0x00, 0x6E, 0x2E, 0x10, 0x30, 0xF0, +0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, +0x00, 0x6C, 0xFF, 0x6D, 0x31, 0x6E, 0x0A, 0x10, +0x02, 0x76, 0x12, 0x61, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x44, 0x98, 0x21, 0xF0, 0x00, 0x6C, +0xFF, 0x6D, 0x32, 0x6E, 0x40, 0xEA, 0xC0, 0xF3, +0x44, 0x98, 0x23, 0xF6, 0x0C, 0x6C, 0xFF, 0xF7, +0x1F, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x44, 0x98, +0x21, 0xF0, 0x00, 0x6C, 0xFF, 0x6D, 0x33, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF6, +0x0C, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x00, 0xF4, +0x04, 0x6E, 0x40, 0xEA, 0x91, 0x67, 0x80, 0x18, +0x61, 0x54, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0x01, 0x76, 0xD0, 0x61, +0xC6, 0x17, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x01, 0x75, 0x08, 0xD4, +0x26, 0x61, 0x30, 0xF0, 0x20, 0x68, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x00, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, +0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x00, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF5, +0xBC, 0x9B, 0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x98, 0x91, 0x67, 0x04, 0xF6, +0xB0, 0x9B, 0x00, 0x6E, 0x46, 0x10, 0x02, 0x75, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, +0x20, 0x68, 0x04, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, +0x44, 0x98, 0x03, 0xF2, 0x04, 0x6C, 0x05, 0x6E, +0x40, 0xEA, 0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, +0x0C, 0x69, 0x91, 0x67, 0x20, 0x6D, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x91, 0x67, 0x64, 0xF5, 0xBC, 0x9B, +0x00, 0x6E, 0x1E, 0x10, 0x03, 0x75, 0x26, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x68, +0x04, 0xF4, 0xA4, 0x9B, 0xC0, 0xF3, 0x44, 0x98, +0x03, 0xF2, 0x04, 0x6C, 0x01, 0x6E, 0x40, 0xEA, +0xC0, 0xF3, 0x44, 0x98, 0x23, 0xF2, 0x0C, 0x69, +0x91, 0x67, 0x20, 0x6D, 0x00, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x98, +0x64, 0xF5, 0xBC, 0x9B, 0x91, 0x67, 0x01, 0x6E, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x98, 0x04, 0xF6, 0xB0, 0x9B, 0x91, 0x67, +0x01, 0x6E, 0x40, 0xEA, 0x08, 0x94, 0x80, 0x18, +0x61, 0x54, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x01, 0x6A, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x04, 0x67, 0x25, 0x67, 0x80, 0x18, 0x4F, 0x56, +0xB1, 0x67, 0x90, 0x67, 0x80, 0x18, 0xA4, 0x55, +0x20, 0xF0, 0x2D, 0xC0, 0x90, 0x67, 0x80, 0x18, +0x61, 0x54, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x01, 0x75, 0x04, 0x67, 0x0C, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9A, 0x03, 0xF2, 0x04, 0x6C, +0xE4, 0xF3, 0xB4, 0x9B, 0x08, 0x6E, 0x19, 0x10, +0x02, 0x75, 0x0C, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, +0x03, 0xF2, 0x04, 0x6C, 0xE4, 0xF3, 0xB4, 0x9B, +0x04, 0x6E, 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0x9A, +0xE4, 0xF3, 0xB4, 0x9B, 0x03, 0xF2, 0x04, 0x6C, +0x0C, 0x6E, 0x40, 0xEA, 0x90, 0x67, 0x80, 0x18, +0x61, 0x54, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x7D, 0x67, 0x04, 0x67, +0x47, 0x43, 0x0A, 0xD6, 0x20, 0xF0, 0xAC, 0xC0, +0x21, 0x4A, 0x60, 0xA2, 0x46, 0x67, 0xAD, 0xEA, +0x20, 0xF0, 0x6B, 0xC4, 0x20, 0xF0, 0x4A, 0xC4, +0x25, 0x67, 0xA7, 0x67, 0x80, 0x18, 0x99, 0x56, +0x0A, 0x96, 0xB1, 0x67, 0x90, 0x67, 0x80, 0x18, +0x20, 0x56, 0x90, 0x67, 0x80, 0x18, 0x61, 0x54, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x0B, 0xD5, 0x0C, 0xD6, +0x20, 0xF0, 0x44, 0xA4, 0x04, 0x67, 0x27, 0x67, +0x05, 0xD2, 0x20, 0xF0, 0x6F, 0xA4, 0x01, 0x6A, +0x61, 0x2B, 0xFB, 0x4A, 0xCC, 0xEA, 0x5D, 0x2A, +0xFF, 0x75, 0x06, 0x61, 0xFF, 0x77, 0x04, 0x61, +0x01, 0x6B, 0x03, 0x6D, 0x04, 0xD3, 0x07, 0x10, +0x0B, 0x93, 0x04, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0x50, 0x2A, 0xA3, 0x67, 0x04, 0xD2, 0x0C, 0x96, +0x90, 0x67, 0x80, 0x18, 0x9E, 0x4F, 0x0C, 0x95, +0x90, 0x67, 0x80, 0x18, 0x8E, 0x56, 0x20, 0xF0, +0x4B, 0xA0, 0x03, 0x2A, 0x01, 0x6A, 0x20, 0xF0, +0x4B, 0xC0, 0x0B, 0x92, 0xFF, 0x4A, 0x02, 0x5A, +0x02, 0x60, 0x0B, 0x91, 0x0C, 0x10, 0x0B, 0x93, +0x03, 0x73, 0x05, 0x61, 0xFF, 0x71, 0x09, 0x61, +0x20, 0xF0, 0x2B, 0xA0, 0x06, 0x10, 0x04, 0x92, +0x04, 0x22, 0x20, 0xF0, 0x2B, 0xA0, 0x00, 0x6D, +0x01, 0x10, 0x03, 0x6D, 0x90, 0x67, 0xD1, 0x67, +0xF1, 0x67, 0x80, 0x18, 0xB3, 0x56, 0x05, 0x92, +0xFF, 0x6B, 0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, +0x18, 0x60, 0x20, 0xF0, 0x4A, 0xA0, 0x01, 0x72, +0x06, 0x61, 0x0C, 0x93, 0x01, 0x73, 0x03, 0x61, +0x90, 0x67, 0x01, 0x6D, 0x0C, 0x10, 0x20, 0xF0, +0x4A, 0xA0, 0x02, 0x72, 0x06, 0x61, 0x0C, 0x92, +0x02, 0x72, 0x03, 0x61, 0x90, 0x67, 0x02, 0x6D, +0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, 0x80, 0x18, +0xBC, 0x53, 0x90, 0x67, 0x80, 0x18, 0x38, 0x54, +0x90, 0x67, 0x80, 0x18, 0x61, 0x54, 0x01, 0x6A, +0x01, 0x10, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF8, 0x63, 0x0F, 0x62, 0x0E, 0xD1, 0x0D, 0xD0, +0x20, 0xF0, 0x44, 0xA4, 0xFF, 0x69, 0x04, 0x67, +0x0A, 0xD2, 0x20, 0xF0, 0x6F, 0xA4, 0xAC, 0xE9, +0x01, 0x6A, 0x40, 0xF1, 0x0A, 0x2B, 0x48, 0x41, +0xF9, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, 0x15, 0x5A, +0x40, 0xF1, 0x02, 0x61, 0x48, 0x41, 0xC7, 0x4A, +0x6C, 0xEA, 0x23, 0x5A, 0x20, 0xF1, 0x1C, 0x61, +0x47, 0x41, 0x68, 0x4A, 0x6C, 0xEA, 0x04, 0x5A, +0x20, 0xF1, 0x16, 0x61, 0xB2, 0x59, 0x20, 0xF1, +0x13, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF3, +0xEC, 0x9A, 0x00, 0x6D, 0x18, 0x6E, 0x80, 0x18, +0xAB, 0x53, 0x09, 0xD2, 0x01, 0x4A, 0x20, 0xF1, +0x07, 0x22, 0x20, 0xF0, 0x6B, 0xA0, 0x0F, 0x59, +0x58, 0x67, 0x0B, 0xD2, 0x06, 0xD3, 0x0A, 0x2B, +0x21, 0xF0, 0x00, 0x6C, 0x0F, 0x6D, 0x80, 0x18, +0xE1, 0x39, 0xFF, 0x6C, 0x4C, 0xEC, 0x06, 0xD4, +0x20, 0xF0, 0x8B, 0xC0, 0x20, 0xF0, 0x8A, 0xA0, +0x08, 0xD4, 0x0F, 0x2C, 0x21, 0xF0, 0x00, 0x4C, +0xF0, 0x6D, 0x80, 0x18, 0xE1, 0x39, 0x06, 0x94, +0xFF, 0x6B, 0x6C, 0xEA, 0x4D, 0xEC, 0x6C, 0xEC, +0x08, 0xD4, 0x20, 0xF0, 0x4C, 0xC0, 0x20, 0xF0, +0x8A, 0xC0, 0x20, 0xF0, 0x8D, 0xA0, 0x07, 0xD4, +0x0D, 0x2C, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF4, +0xAC, 0x9A, 0x21, 0xF0, 0x04, 0x4C, 0x80, 0x18, +0xE1, 0x39, 0xFF, 0x6B, 0x4C, 0xEB, 0x07, 0xD3, +0x20, 0xF0, 0x6D, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF6, 0x40, 0x9A, 0x09, 0x93, 0x0B, 0x94, +0x4C, 0xEB, 0x2D, 0xEB, 0x06, 0xD3, 0x16, 0x2C, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF6, 0x44, 0x9A, +0x91, 0x59, 0x4D, 0xEB, 0x06, 0xD3, 0x05, 0x61, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, 0x5C, 0x9A, +0x07, 0x10, 0x50, 0x59, 0x07, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xA4, 0xF1, 0x58, 0x9A, 0x06, 0x93, +0x4D, 0xEB, 0x06, 0xD3, 0x90, 0x67, 0x00, 0x6D, +0x80, 0x18, 0x4F, 0x4F, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF3, 0x0C, 0x4B, 0xE0, 0x9B, 0x06, 0x92, +0x30, 0xF0, 0x21, 0x6C, 0x70, 0xF1, 0x08, 0x4C, +0x00, 0x6D, 0x18, 0x6E, 0x09, 0xD4, 0x04, 0xD2, +0x80, 0x18, 0xF0, 0x53, 0x06, 0x94, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF3, 0x0C, 0x4A, 0x04, 0xD4, +0xE0, 0x9A, 0x09, 0x94, 0x01, 0x6D, 0x18, 0x6E, +0x80, 0x18, 0xF0, 0x53, 0x90, 0x67, 0x01, 0x6D, +0x80, 0x18, 0x4F, 0x4F, 0x0F, 0x59, 0x11, 0x60, +0x50, 0x98, 0x40, 0xA2, 0x07, 0x2A, 0x90, 0x67, +0x05, 0x6D, 0x80, 0x18, 0x4C, 0x50, 0x90, 0x67, +0x06, 0x6D, 0x1A, 0x10, 0x90, 0x67, 0x04, 0x6D, +0x80, 0x18, 0x4C, 0x50, 0x90, 0x67, 0x00, 0x6D, +0x13, 0x10, 0x68, 0x41, 0xE4, 0x4B, 0xFF, 0x6A, +0x4C, 0xEB, 0x1D, 0x5B, 0x03, 0x60, 0x90, 0x67, +0x01, 0x6D, 0x0A, 0x10, 0x68, 0x41, 0xA4, 0x4B, +0x4C, 0xEB, 0x2D, 0x5B, 0x03, 0x60, 0x90, 0x67, +0x02, 0x6D, 0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, +0x80, 0x18, 0x5B, 0x50, 0x90, 0x67, 0xB1, 0x67, +0x80, 0x18, 0x76, 0x50, 0x90, 0x67, 0xB1, 0x67, +0x80, 0x18, 0xBE, 0x50, 0x0B, 0x93, 0x2F, 0x23, +0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, 0xF2, 0x4F, +0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0xB2, 0xC1, +0x40, 0xF4, 0x14, 0x6C, 0x80, 0x6D, 0x00, 0x6E, +0x80, 0x18, 0x6E, 0x3A, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, 0x44, 0x9C, +0xA4, 0xF1, 0xBC, 0x9B, 0x83, 0xF2, 0x00, 0x6C, +0x00, 0x6E, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF6, 0xA8, 0x9B, 0x83, 0xF4, 0x00, 0x6C, +0x0F, 0x6E, 0x40, 0xEA, 0x0A, 0x92, 0xFF, 0x6B, +0xEB, 0x4A, 0x6C, 0xEA, 0x02, 0x5A, 0x41, 0x60, +0x90, 0x67, 0x00, 0x6D, 0x3C, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF3, +0x44, 0x9C, 0xA4, 0xF1, 0xBC, 0x9B, 0x83, 0xF2, +0x00, 0x6C, 0x01, 0x6E, 0x40, 0xEA, 0x01, 0x6E, +0x40, 0xF4, 0x14, 0x6C, 0x80, 0x6D, 0x80, 0x18, +0x6E, 0x3A, 0x90, 0x67, 0x02, 0x6D, 0x00, 0x18, +0xB2, 0xC1, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, +0x44, 0x9B, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF6, +0xA8, 0x9B, 0x83, 0xF4, 0x00, 0x6C, 0x22, 0x6E, +0x40, 0xEA, 0x0A, 0x92, 0xFF, 0x6B, 0xEB, 0x4A, +0x6C, 0xEA, 0x02, 0x5A, 0x16, 0x60, 0x08, 0x94, +0x01, 0x74, 0x06, 0x61, 0x07, 0x92, 0x01, 0x72, +0x0C, 0x61, 0x90, 0x67, 0x01, 0x6D, 0x0B, 0x10, +0x08, 0x93, 0x02, 0x73, 0x06, 0x61, 0x07, 0x94, +0x02, 0x74, 0x03, 0x61, 0x90, 0x67, 0x02, 0x6D, +0x02, 0x10, 0x90, 0x67, 0x03, 0x6D, 0x80, 0x18, +0xBC, 0x53, 0x90, 0x67, 0x80, 0x18, 0x38, 0x54, +0x52, 0x98, 0x40, 0xA2, 0x04, 0x22, 0x90, 0x67, +0xB1, 0x67, 0x80, 0x18, 0x25, 0x51, 0x90, 0x67, +0x80, 0x18, 0x61, 0x54, 0x01, 0x6A, 0x01, 0x10, +0x00, 0x6A, 0x0F, 0x97, 0x0E, 0x91, 0x0D, 0x90, +0x08, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x26, 0x67, +0x4C, 0xED, 0x04, 0x67, 0x0B, 0xD7, 0x4C, 0xE9, +0x80, 0x18, 0x00, 0x57, 0x00, 0x6B, 0x09, 0x22, +0x0B, 0x96, 0x90, 0x67, 0xB1, 0x67, 0x80, 0x18, +0x9F, 0x54, 0x4B, 0xEB, 0x4D, 0xEB, 0xC0, 0xF7, +0x62, 0x33, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, +0x43, 0x67, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0xE8, 0xF2, 0x02, 0x4C, 0x07, 0x6E, +0x40, 0xEA, 0x00, 0x18, 0x7F, 0xCE, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x40, 0xA4, 0x01, 0x72, 0x04, 0x61, 0x00, 0x18, +0x55, 0xDB, 0x00, 0x18, 0x4B, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x22, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x01, 0x6A, +0x4F, 0xCB, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x5C, 0x9A, 0x92, 0xC3, 0x04, 0x04, 0x40, 0xEA, +0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x69, 0x80, 0xF2, +0x48, 0x9B, 0x2C, 0xED, 0xFF, 0xF7, 0x1F, 0x68, +0x11, 0xD7, 0x8C, 0xE8, 0x08, 0xD5, 0x04, 0x04, +0x00, 0x6D, 0xCC, 0xE9, 0x04, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0x9B, +0x05, 0x04, 0x00, 0x6D, 0x04, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9B, +0x11, 0x95, 0x04, 0x04, 0x04, 0x6E, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9B, +0x12, 0x95, 0x06, 0x04, 0x04, 0x6E, 0x40, 0xEA, +0x00, 0xF1, 0x00, 0x58, 0x08, 0x61, 0x0E, 0xF0, +0x40, 0x40, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x00, 0xF1, 0x00, 0x5A, 0x39, 0x60, 0x08, 0x92, +0x04, 0x72, 0x11, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x50, 0x9A, 0xFF, 0x6B, 0x49, 0xE0, +0x40, 0xA2, 0x4C, 0xEB, 0x5F, 0x21, 0x06, 0x94, +0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, +0x6D, 0xEA, 0x04, 0xD2, 0x57, 0x10, 0x08, 0x92, +0x05, 0x72, 0x12, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x50, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x49, 0xE0, 0x40, 0xAA, 0x4C, 0xEB, 0x7F, 0x21, +0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, +0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x77, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, +0x49, 0xE0, 0x60, 0x9A, 0x80, 0xF0, 0x1E, 0x21, +0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, +0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x96, 0x10, +0x01, 0xF0, 0x00, 0x58, 0x09, 0x61, 0x0D, 0xF7, +0x40, 0x40, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, +0x00, 0xF7, 0x00, 0x5A, 0x80, 0xF0, 0x17, 0x60, +0x08, 0x92, 0x04, 0x72, 0x31, 0x61, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF1, 0x5C, 0x9A, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x49, 0xE0, -0x60, 0x9A, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEA, -0x6C, 0xEA, 0x04, 0x93, 0x8C, 0xEB, 0x6D, 0xEA, -0x04, 0xD2, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, -0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x40, 0x9A, 0x41, 0xE0, 0x04, 0x92, 0x40, 0xD8, -0x1B, 0x10, 0xFF, 0xF7, 0x1C, 0x6A, 0x0C, 0xEA, -0x01, 0x6D, 0x82, 0x67, 0xAB, 0xED, 0x08, 0xD2, -0x80, 0x18, 0x72, 0x3C, 0x05, 0xD2, 0x07, 0x21, +0x84, 0xF0, 0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, 0x49, 0xE0, +0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, 0x04, 0x92, -0x8C, 0xEA, 0x4D, 0xEB, 0x04, 0xD3, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x44, 0x9A, 0x08, 0x94, -0x04, 0x96, 0x01, 0x6D, 0xAB, 0xED, 0x40, 0xEA, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xF9, 0x63, 0x0D, 0x62, -0x0C, 0xD1, 0x0B, 0xD0, 0x41, 0x9C, 0x61, 0xA4, -0x01, 0xAC, 0x06, 0xD2, 0x42, 0x9C, 0xFF, 0x73, -0x07, 0xD2, 0x00, 0x6A, 0x62, 0x60, 0x7F, 0x6D, -0x6C, 0xED, 0x4C, 0x45, 0xFF, 0x6B, 0x6C, 0xEA, -0x0E, 0x5A, 0x08, 0x60, 0x30, 0xF0, 0x20, 0x6B, -0x48, 0x32, 0xE2, 0xF7, 0x18, 0x4B, 0x4D, 0xE3, -0x40, 0x9B, 0x00, 0xEA, 0x03, 0x6A, 0x51, 0x10, -0x61, 0xA4, 0x80, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, -0xFF, 0x6E, 0x07, 0x03, 0x90, 0x67, 0x4C, 0xEE, -0x06, 0x07, 0x04, 0xD3, 0x80, 0x18, 0xBB, 0x52, -0x28, 0x10, 0x81, 0xA4, 0x80, 0x6A, 0xFF, 0x69, -0x64, 0x67, 0x4C, 0xEB, 0x0C, 0xE9, 0x02, 0x32, -0x30, 0xF0, 0x20, 0x6C, 0x01, 0x6F, 0xAE, 0xF7, -0x18, 0x4C, 0xA2, 0x67, 0xD1, 0x67, 0xEB, 0xEF, -0x08, 0xD3, 0x09, 0xD2, 0x80, 0x18, 0x9C, 0x4E, -0x08, 0x93, 0x07, 0x23, 0x07, 0x94, 0x8F, 0xEB, -0x4C, 0xEB, 0x06, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, -0x06, 0xD3, 0x06, 0x92, 0x09, 0x95, 0x30, 0xF0, -0x20, 0x6C, 0x01, 0x6F, 0xAE, 0xF7, 0x18, 0x4C, -0xD1, 0x67, 0xEB, 0xEF, 0x04, 0xD2, 0x80, 0x18, -0xE1, 0x4E, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x47, 0xF7, 0x7C, 0x9A, 0x06, 0x94, -0x61, 0xE0, 0x67, 0xF7, 0x60, 0x9A, 0x47, 0xF7, -0x1C, 0xDA, 0x6D, 0xE4, 0x67, 0xF7, 0x60, 0xDA, -0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x4C, 0x9A, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x48, 0x9A, 0x90, 0x67, 0x40, 0xEA, -0x01, 0x6A, 0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, -0x07, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4A, -0x0A, 0xF1, 0x10, 0x4B, 0x68, 0xF1, 0x64, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0x0A, 0xF1, 0x0C, 0x4B, -0x48, 0xF1, 0x78, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0x0A, 0xF1, 0x14, 0x4B, 0x48, 0xF1, 0x74, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0xE0, 0x63, 0x3F, 0x62, -0xFF, 0xF7, 0x1F, 0x6A, 0xAC, 0xEA, 0xBD, 0x67, -0x56, 0xC5, 0x01, 0x6B, 0x42, 0x32, 0x57, 0xC5, -0x6B, 0xEB, 0x30, 0xF0, 0x20, 0x6A, 0x70, 0xC5, -0x20, 0xF4, 0x40, 0x9A, 0x03, 0x6B, 0x72, 0xC5, -0x04, 0x6B, 0x94, 0xC5, 0x73, 0xC5, 0x04, 0x04, -0x40, 0xEA, 0x3F, 0x97, 0x20, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x4C, 0x9A, 0xA7, 0x44, 0x30, 0xF0, -0x20, 0x6C, 0x01, 0x4D, 0x0E, 0xF6, 0x04, 0x4C, -0x14, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x04, 0x67, 0x80, 0x18, -0xA8, 0x53, 0x47, 0xA0, 0x66, 0xA0, 0x30, 0xF0, -0x20, 0x69, 0xA6, 0xF6, 0x00, 0x49, 0x40, 0x32, -0x67, 0xF7, 0x84, 0xA1, 0x69, 0xE2, 0x67, 0xF7, -0x56, 0xC9, 0x01, 0x6A, 0x8C, 0xEA, 0xFF, 0x6B, -0x1C, 0x2A, 0x67, 0xF7, 0xB8, 0xA1, 0xFE, 0x4A, -0xAC, 0xEA, 0x67, 0xF7, 0x58, 0xC1, 0x02, 0x6A, -0x8C, 0xEA, 0x6C, 0xEA, 0x4E, 0x22, 0x67, 0xF7, -0x47, 0xA1, 0x0F, 0x6D, 0x67, 0xF7, 0x88, 0xA1, -0x4C, 0xED, 0x52, 0x36, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, -0x40, 0xEA, 0x01, 0x72, 0x0D, 0x6A, 0x3E, 0x61, -0x3C, 0x10, 0x67, 0xF7, 0x78, 0xA1, 0x02, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x67, 0xF7, 0x58, 0xC1, -0x67, 0xF7, 0x54, 0xA9, 0x00, 0xF1, 0x01, 0x5A, -0x0C, 0x6A, 0x30, 0x60, 0x00, 0x6A, 0x67, 0xF7, -0x59, 0xC1, 0x67, 0xF7, 0x5A, 0xC1, 0x67, 0xF7, -0x05, 0xA1, 0x00, 0x6A, 0x67, 0xF7, 0x5C, 0xC9, -0x67, 0xF7, 0x5E, 0xC9, 0x00, 0x18, 0x96, 0xD3, -0x01, 0xE2, 0x00, 0x6A, 0x67, 0xF7, 0xF4, 0xA9, -0x04, 0xD2, 0x05, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0xE0, 0xF2, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF0, 0xAC, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF1, 0x50, 0x9A, 0x30, 0xF0, 0x20, 0x6E, -0x1C, 0x30, 0x2E, 0xF6, 0x06, 0x4E, 0x00, 0x6C, -0xB5, 0xE0, 0x59, 0xE6, 0x40, 0xEB, 0x67, 0xF7, -0x58, 0xA1, 0x01, 0x6B, 0x6D, 0xEA, 0x67, 0xF7, -0x58, 0xC1, 0x00, 0x6A, 0x09, 0x97, 0x08, 0x91, -0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x67, 0xF7, 0xBC, 0xA8, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9A, -0x2E, 0xF6, 0x06, 0x4B, 0x30, 0xF0, 0x20, 0x6C, -0xB5, 0xE3, 0x2E, 0xF7, 0x08, 0x4C, 0x04, 0x6E, -0x40, 0xEA, 0x88, 0xF0, 0x6B, 0xA0, 0x80, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, -0x05, 0x2A, 0x67, 0xF7, 0x5C, 0xA8, 0x04, 0x4A, -0x67, 0xF7, 0x5C, 0xC8, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x88, 0xF0, 0x69, 0xA0, +0x8C, 0xEA, 0x4D, 0xEB, 0x04, 0xD3, 0x1F, 0xF7, +0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, 0x7D, 0x67, +0x41, 0xE0, 0x50, 0xA3, 0x40, 0xC0, 0x7E, 0x10, +0x08, 0x92, 0x05, 0x72, 0x32, 0x61, 0x1F, 0xF7, +0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, 0x49, 0xE0, +0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, +0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, +0x04, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, 0x04, 0xD3, +0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, +0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, +0x7D, 0x67, 0x41, 0xE0, 0x48, 0xAB, 0x40, 0xC8, +0x49, 0x10, 0x1F, 0xF7, 0x00, 0x6A, 0x0C, 0xEA, +0x02, 0xF0, 0x00, 0x72, 0x01, 0x60, 0x05, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x54, 0x9A, 0x49, 0xE0, 0x60, 0x9A, 0x07, 0x21, +0x06, 0x94, 0x8F, 0xEA, 0x6C, 0xEA, 0x04, 0x93, +0x8C, 0xEB, 0x6D, 0xEA, 0x04, 0xD2, 0x1F, 0xF7, +0x00, 0x6A, 0x0C, 0xEA, 0x02, 0xF0, 0x00, 0x72, +0x01, 0x60, 0x05, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x50, 0x9A, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x54, 0x9A, 0x41, 0xE0, +0x04, 0x92, 0x40, 0xD8, 0x1B, 0x10, 0xFF, 0xF7, +0x1C, 0x6A, 0x0C, 0xEA, 0x01, 0x6D, 0x82, 0x67, +0xAB, 0xED, 0x08, 0xD2, 0x80, 0x18, 0xE1, 0x39, +0x05, 0xD2, 0x07, 0x21, 0x06, 0x94, 0x8F, 0xEB, +0x4C, 0xEB, 0x04, 0x92, 0x8C, 0xEA, 0x4D, 0xEB, +0x04, 0xD3, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x44, 0x9A, 0x08, 0x94, 0x04, 0x96, 0x01, 0x6D, +0xAB, 0xED, 0x40, 0xEA, 0x0D, 0x97, 0x0C, 0x91, +0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xF9, 0x63, 0x0D, 0x62, 0x0C, 0xD1, 0x0B, 0xD0, +0x41, 0x9C, 0x61, 0xA4, 0x01, 0xAC, 0x06, 0xD2, +0x42, 0x9C, 0xFF, 0x73, 0x07, 0xD2, 0x00, 0x6A, +0x62, 0x60, 0x7F, 0x6D, 0x6C, 0xED, 0x4C, 0x45, +0xFF, 0x6B, 0x6C, 0xEA, 0x0E, 0x5A, 0x08, 0x60, +0x30, 0xF0, 0x20, 0x6B, 0x48, 0x32, 0x23, 0xF7, +0x0C, 0x4B, 0x4D, 0xE3, 0x40, 0x9B, 0x00, 0xEA, +0x03, 0x6A, 0x51, 0x10, 0x61, 0xA4, 0x80, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6E, 0x07, 0x03, +0x90, 0x67, 0x4C, 0xEE, 0x06, 0x07, 0x04, 0xD3, +0x80, 0x18, 0xD6, 0x57, 0x28, 0x10, 0x81, 0xA4, +0x80, 0x6A, 0xFF, 0x69, 0x64, 0x67, 0x4C, 0xEB, +0x0C, 0xE9, 0x02, 0x32, 0x30, 0xF0, 0x21, 0x6C, +0x01, 0x6F, 0x70, 0xF1, 0x08, 0x4C, 0xA2, 0x67, +0xD1, 0x67, 0xEB, 0xEF, 0x08, 0xD3, 0x09, 0xD2, +0x80, 0x18, 0xAB, 0x53, 0x08, 0x93, 0x07, 0x23, +0x07, 0x94, 0x8F, 0xEB, 0x4C, 0xEB, 0x06, 0x92, +0x8C, 0xEA, 0x4D, 0xEB, 0x06, 0xD3, 0x06, 0x92, +0x09, 0x95, 0x30, 0xF0, 0x21, 0x6C, 0x01, 0x6F, +0x70, 0xF1, 0x08, 0x4C, 0xD1, 0x67, 0xEB, 0xEF, +0x04, 0xD2, 0x80, 0x18, 0xF0, 0x53, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x87, 0xF5, +0x7C, 0x9A, 0x06, 0x94, 0x61, 0xE0, 0xA7, 0xF5, +0x60, 0x9A, 0x87, 0xF5, 0x1C, 0xDA, 0x6D, 0xE4, +0xA7, 0xF5, 0x60, 0xDA, 0x0B, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x04, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, +0x90, 0x67, 0x40, 0xEA, 0x01, 0x6A, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4A, 0x6B, 0xF4, 0x1C, 0x4B, +0xA7, 0xF7, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0x6B, 0xF4, 0x18, 0x4B, 0x87, 0xF7, 0x78, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0x8B, 0xF4, 0x00, 0x4B, +0x87, 0xF7, 0x74, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0xE0, 0x63, 0x3F, 0x62, 0xFF, 0xF7, 0x1F, 0x6A, +0xAC, 0xEA, 0xBD, 0x67, 0x56, 0xC5, 0x01, 0x6B, +0x42, 0x32, 0x57, 0xC5, 0x6B, 0xEB, 0x30, 0xF0, +0x20, 0x6A, 0x70, 0xC5, 0x20, 0xF4, 0x40, 0x9A, +0x03, 0x6B, 0x72, 0xC5, 0x04, 0x6B, 0x94, 0xC5, +0x73, 0xC5, 0x04, 0x04, 0x40, 0xEA, 0x3F, 0x97, +0x20, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, +0xA7, 0x44, 0x30, 0xF0, 0x20, 0x6C, 0x01, 0x4D, +0xAF, 0xF7, 0x14, 0x4C, 0x14, 0x6E, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x04, 0x67, 0x80, 0x18, 0xC3, 0x58, 0x47, 0xA0, +0x66, 0xA0, 0x30, 0xF0, 0x20, 0x69, 0x08, 0xF2, +0x10, 0x49, 0x40, 0x32, 0xA7, 0xF5, 0x84, 0xA1, +0x69, 0xE2, 0xA7, 0xF5, 0x56, 0xC9, 0x01, 0x6A, +0x8C, 0xEA, 0xFF, 0x6B, 0x1C, 0x2A, 0xA7, 0xF5, +0xB8, 0xA1, 0xFE, 0x4A, 0xAC, 0xEA, 0xA7, 0xF5, +0x58, 0xC1, 0x02, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, +0x4E, 0x22, 0xA7, 0xF5, 0x47, 0xA1, 0x0F, 0x6D, +0xA7, 0xF5, 0x88, 0xA1, 0x4C, 0xED, 0x52, 0x36, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, -0x88, 0xF0, 0x88, 0xA0, 0x0F, 0x6D, 0x6C, 0xED, -0x72, 0x36, 0xFF, 0x69, 0x40, 0xEA, 0x0E, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, -0x40, 0xEA, 0x67, 0xF7, 0x78, 0xA0, 0x02, 0x6A, -0x4B, 0xEA, 0x6C, 0xEA, 0x67, 0xF7, 0x58, 0xC0, -0x01, 0x6C, 0x7C, 0x10, 0x88, 0xF0, 0x6B, 0xA0, -0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x39, 0x22, -0x01, 0x72, 0x6C, 0x61, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF4, 0x4C, 0x9A, 0x00, 0x6C, 0x40, 0xEA, -0x70, 0x22, 0x47, 0xF7, 0x99, 0xA0, 0x00, 0x6D, -0x80, 0x18, 0xDC, 0x3E, 0x06, 0xD2, 0xE0, 0xF0, -0x75, 0xA0, 0x10, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, -0x1C, 0x22, 0x44, 0xF6, 0x51, 0xA0, 0x00, 0x68, -0x10, 0x2A, 0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x48, 0x9A, 0x03, 0x6C, 0x25, 0xE0, -0x40, 0xEA, 0x84, 0xF6, 0x90, 0xA1, 0x00, 0x6D, -0x01, 0x48, 0x80, 0x18, 0xDC, 0x3E, 0xFF, 0x6A, -0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x69, 0xA6, 0xF6, -0x00, 0x49, 0x44, 0xF6, 0x51, 0xA1, 0x43, 0xE8, -0xE9, 0x61, 0x06, 0x92, 0x06, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, -0x40, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x67, 0xF7, 0x79, 0xA2, 0x88, 0xF0, -0x8A, 0xA2, 0x01, 0x4B, 0x67, 0xF7, 0x79, 0xC2, -0x67, 0xF7, 0x7E, 0xAA, 0x6D, 0xE4, 0x67, 0xF7, -0x7E, 0xCA, 0x67, 0xF7, 0x99, 0xA2, 0x67, 0xF7, -0x66, 0xA2, 0x8E, 0xEB, 0x0C, 0x2B, 0x88, 0xF0, -0xCA, 0xA2, 0x10, 0xF0, 0x31, 0x6C, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xD3, 0x00, 0xF3, 0x4C, 0x9A, -0xCA, 0xF1, 0x0D, 0x4C, 0x0C, 0x10, 0x88, 0xF0, -0xCA, 0xA2, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x31, 0x6C, 0x6A, 0xF1, 0x05, 0x4C, 0x64, 0x6B, -0x78, 0xEE, 0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, -0x40, 0xEA, 0x1B, 0x10, 0x67, 0xF7, 0x78, 0xA0, -0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x67, 0xF7, -0x58, 0xC0, 0x02, 0x6C, 0x67, 0xF7, 0xB6, 0xA8, -0x0E, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x67, 0xF7, 0x98, 0xA2, 0x02, 0x6B, -0x6B, 0xEB, 0x67, 0xF7, 0xB6, 0xAA, 0x8C, 0xEB, -0x67, 0xF7, 0x78, 0xC2, 0x03, 0x6C, 0x80, 0x18, -0x9B, 0x53, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, -0x00, 0x48, 0x67, 0xF7, 0x78, 0xA0, 0x01, 0x6A, -0x6C, 0xEA, 0x23, 0x22, 0x88, 0xF0, 0x46, 0xA0, -0x1E, 0x22, 0xE0, 0xF0, 0xC7, 0xA0, 0x00, 0x6A, -0x88, 0xF0, 0x46, 0xC0, 0x0C, 0x6C, 0x0C, 0x6A, -0x00, 0x6D, 0x43, 0xF4, 0x48, 0xC0, 0x00, 0x18, -0x94, 0xCC, 0xC3, 0xF3, 0x4C, 0xA0, 0xC3, 0xF3, -0x8E, 0xA0, 0x21, 0x6B, 0x6B, 0xEB, 0x4C, 0xEB, -0x04, 0x6A, 0x8C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, -0xC3, 0xF3, 0x6C, 0xC0, 0x04, 0x2A, 0xFE, 0x4A, -0x6C, 0xEA, 0xC3, 0xF3, 0x4C, 0xC0, 0x80, 0x18, -0xEC, 0x53, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x67, 0xF7, 0x58, 0xA0, -0x01, 0x69, 0x91, 0x67, 0x4C, 0xEC, 0xFF, 0x6B, -0x40, 0xF1, 0x02, 0x24, 0x67, 0xF7, 0xA4, 0xA0, -0x03, 0x6E, 0xAE, 0x34, 0xCC, 0xEC, 0x6C, 0xEC, -0x02, 0x74, 0x7C, 0x60, 0x03, 0x74, 0xC0, 0xF0, -0x1E, 0x60, 0x01, 0x74, 0x25, 0x60, 0x02, 0x6C, -0x8B, 0xEC, 0x4C, 0xEC, 0x02, 0x6A, 0xAC, 0xEA, -0x6C, 0xEA, 0x67, 0xF7, 0x98, 0xC0, 0x11, 0x22, -0x67, 0xF7, 0x47, 0xA0, 0x0F, 0x6D, 0x67, 0xF7, -0x88, 0xA0, 0x4C, 0xED, 0x52, 0x36, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, -0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, 0x01, 0x6C, -0x01, 0x61, 0x00, 0x6C, 0x67, 0xF7, 0xB6, 0xA8, -0x80, 0x18, 0x9B, 0x53, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF4, 0x54, 0x9A, 0x40, 0xEA, 0xC0, 0x10, -0x02, 0x6A, 0xAC, 0xEA, 0x6C, 0xEA, 0x11, 0x22, -0x67, 0xF7, 0x47, 0xA0, 0x0F, 0x6D, 0x67, 0xF7, -0x88, 0xA0, 0x4C, 0xED, 0x52, 0x36, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, -0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, 0xE0, 0xF0, -0x0B, 0x61, 0x67, 0xF7, 0xB6, 0xA8, 0x00, 0x6C, -0x80, 0x18, 0x9B, 0x53, 0x30, 0xF0, 0x20, 0x6A, -0x0E, 0xF6, 0x49, 0xA2, 0x5A, 0x33, 0x02, 0x73, -0x0D, 0x60, 0x03, 0x73, 0x0F, 0x60, 0x01, 0x73, -0x05, 0x60, 0x3F, 0x6E, 0x4C, 0xEE, 0xFF, 0x6A, -0x4C, 0xEE, 0x0E, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, -0x0A, 0x6E, 0x08, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, -0x64, 0x6E, 0x04, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, -0xE0, 0xF3, 0x08, 0x6E, 0xD8, 0xEB, 0x12, 0xEE, -0x0A, 0x6A, 0x58, 0xEE, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x67, 0xF7, 0x7E, 0xAA, -0x10, 0xF0, 0x31, 0x6C, 0x6A, 0xF1, 0x05, 0x4C, -0x00, 0x6D, 0x12, 0xEE, 0x7B, 0xE6, 0x01, 0x6B, -0x88, 0xF0, 0x66, 0xC2, 0x00, 0x6A, 0x04, 0xD2, +0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, +0x0D, 0x6A, 0x3E, 0x61, 0x3C, 0x10, 0xA7, 0xF5, +0x78, 0xA1, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, +0xA7, 0xF5, 0x58, 0xC1, 0xA7, 0xF5, 0x54, 0xA9, +0x00, 0xF1, 0x01, 0x5A, 0x0C, 0x6A, 0x30, 0x60, +0x00, 0x6A, 0xA7, 0xF5, 0x59, 0xC1, 0xA7, 0xF5, +0x5A, 0xC1, 0xA7, 0xF5, 0x05, 0xA1, 0x00, 0x6A, +0xA7, 0xF5, 0x5C, 0xC9, 0xA7, 0xF5, 0x5E, 0xC9, +0x00, 0x18, 0x8B, 0xD8, 0x01, 0xE2, 0x00, 0x6A, +0xA7, 0xF5, 0xF4, 0xA9, 0x04, 0xD2, 0x05, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF7, 0xB8, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6E, 0x1C, 0x30, 0xCF, 0xF7, +0x16, 0x4E, 0x00, 0x6C, 0xB5, 0xE0, 0x59, 0xE6, +0x40, 0xEB, 0xA7, 0xF5, 0x58, 0xA1, 0x01, 0x6B, +0x6D, 0xEA, 0xA7, 0xF5, 0x58, 0xC1, 0x00, 0x6A, +0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xC0, 0xF0, 0x92, 0xA2, +0x04, 0x6B, 0x8C, 0xEB, 0x11, 0x23, 0x00, 0xF1, +0x98, 0xA2, 0x08, 0x6B, 0x8C, 0xEB, 0xFF, 0x6C, +0x8C, 0xEB, 0x0A, 0x23, 0xA4, 0xF3, 0x74, 0x9A, +0x02, 0x73, 0x06, 0x60, 0xE0, 0xF0, 0x0A, 0x2B, +0x01, 0x6B, 0xA4, 0xF3, 0x74, 0xDA, 0xE6, 0x10, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA7, 0xF5, 0xBC, 0xA8, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0x9A, +0xCF, 0xF7, 0x16, 0x4B, 0x30, 0xF0, 0x21, 0x6C, +0xB5, 0xE3, 0xD0, 0xF0, 0x18, 0x4C, 0x04, 0x6E, +0x40, 0xEA, 0xC7, 0xF6, 0x6B, 0xA0, 0x80, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, +0x05, 0x2A, 0xA7, 0xF5, 0x5C, 0xA8, 0x04, 0x4A, +0xA7, 0xF5, 0x5C, 0xC8, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0xC7, 0xF6, 0x69, 0xA0, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, +0xC7, 0xF6, 0x88, 0xA0, 0x0F, 0x6D, 0x6C, 0xED, +0x72, 0x36, 0x40, 0xEA, 0xFF, 0x69, 0x06, 0xD2, +0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, +0x54, 0x9A, 0x40, 0xEA, 0xA7, 0xF5, 0x78, 0xA0, +0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xA7, 0xF5, +0x58, 0xC0, 0x01, 0x6C, 0x8E, 0x10, 0xC7, 0xF6, +0x6B, 0xA0, 0x7F, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x31, 0x22, 0x01, 0x72, 0x64, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xF4, 0x4C, 0x9A, 0x00, 0x6C, +0x40, 0xEA, 0x06, 0xD2, 0x76, 0x22, 0x87, 0xF5, +0x99, 0xA0, 0x00, 0x6D, 0x80, 0x18, 0x53, 0x3C, +0xE0, 0xF0, 0x75, 0xA0, 0x10, 0x6A, 0x6C, 0xEA, +0x2C, 0xEA, 0x1C, 0x22, 0x04, 0xF7, 0x49, 0xA0, +0x00, 0x68, 0x10, 0x2A, 0x17, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x03, 0x6C, +0x25, 0xE0, 0x40, 0xEA, 0x44, 0xF7, 0x88, 0xA1, +0x00, 0x6D, 0x01, 0x48, 0x80, 0x18, 0x53, 0x3C, +0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x69, +0x08, 0xF2, 0x10, 0x49, 0x04, 0xF7, 0x49, 0xA1, +0x43, 0xE8, 0xE9, 0x61, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0xA7, 0xF5, 0x79, 0xA2, +0xC7, 0xF6, 0x8A, 0xA2, 0x01, 0x4B, 0xA7, 0xF5, +0x79, 0xC2, 0xA7, 0xF5, 0x7E, 0xAA, 0x6D, 0xE4, +0xA7, 0xF5, 0x7E, 0xCA, 0xA7, 0xF5, 0x99, 0xA2, +0xA7, 0xF5, 0x66, 0xA2, 0x8E, 0xEB, 0x0C, 0x2B, +0xC7, 0xF6, 0xCA, 0xA2, 0x10, 0xF0, 0x31, 0x6C, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xD3, 0x00, 0xF3, +0x4C, 0x9A, 0xAC, 0xF6, 0x09, 0x4C, 0x0C, 0x10, +0xC7, 0xF6, 0xCA, 0xA2, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0x64, 0x6B, 0x60, 0x10, 0x02, 0x6A, 0xAC, 0xEA, -0x6C, 0xEA, 0x11, 0x22, 0x67, 0xF7, 0x47, 0xA0, -0x0F, 0x6D, 0x67, 0xF7, 0x88, 0xA0, 0x4C, 0xED, +0x10, 0xF0, 0x31, 0x6C, 0x2C, 0xF6, 0x11, 0x4C, +0x64, 0x6B, 0x78, 0xEE, 0x00, 0x6D, 0x01, 0x6F, +0x12, 0xEE, 0x40, 0xEA, 0x37, 0x10, 0xA7, 0xF5, +0x78, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0xA7, 0xF5, +0xB6, 0xA8, 0x6C, 0xEA, 0xA7, 0xF5, 0x58, 0xC0, +0x02, 0x6C, 0x80, 0x18, 0xB6, 0x58, 0xC0, 0xF0, +0x72, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x25, 0x22, 0x00, 0xF1, 0x78, 0xA0, 0x08, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x1F, 0x22, 0x00, 0x6A, +0x19, 0x10, 0xA7, 0xF5, 0x78, 0xA0, 0x02, 0x6A, +0x4B, 0xEA, 0x6C, 0xEA, 0xA7, 0xF5, 0x58, 0xC0, +0x03, 0x6C, 0xA7, 0xF5, 0xB6, 0xA8, 0x80, 0x18, +0xB6, 0x58, 0xC0, 0xF0, 0x72, 0xA0, 0x04, 0x6A, +0x6C, 0xEA, 0x2C, 0xEA, 0x0B, 0x22, 0x00, 0xF1, +0x78, 0xA0, 0x08, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, +0x05, 0x22, 0x06, 0x92, 0xA4, 0xF3, 0x54, 0xD8, +0x00, 0x18, 0xF1, 0xCE, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA7, 0xF5, 0x78, 0xA0, 0x01, 0x6A, 0xFF, 0x69, +0x6C, 0xEA, 0x28, 0x22, 0xC7, 0xF6, 0x46, 0xA0, +0x23, 0x22, 0x00, 0xF1, 0x78, 0xA0, 0x00, 0x6A, +0xC7, 0xF6, 0x46, 0xC0, 0x08, 0x6A, 0x6C, 0xEA, +0x2C, 0xEA, 0x1A, 0x2A, 0xE0, 0xF0, 0xC7, 0xA0, +0x0C, 0x6A, 0x0C, 0x6C, 0x00, 0x6D, 0x43, 0xF4, +0x44, 0xC0, 0x00, 0x18, 0xAE, 0xCD, 0xC3, 0xF3, +0x48, 0xA0, 0x21, 0x6B, 0xC3, 0xF3, 0x8A, 0xA0, +0x6B, 0xEB, 0x4C, 0xEB, 0x04, 0x6A, 0x8C, 0xEA, +0x2C, 0xEA, 0xC3, 0xF3, 0x68, 0xC0, 0x04, 0x2A, +0xFE, 0x4A, 0x6C, 0xEA, 0xC3, 0xF3, 0x48, 0xC0, +0x80, 0x18, 0x07, 0x59, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA7, 0xF5, 0x58, 0xA0, 0x01, 0x69, 0x91, 0x67, +0x4C, 0xEC, 0xFF, 0x6B, 0x60, 0xF1, 0x01, 0x24, +0xA7, 0xF5, 0xA4, 0xA0, 0x03, 0x6E, 0xAE, 0x34, +0xCC, 0xEC, 0x6C, 0xEC, 0x02, 0x74, 0x6D, 0x60, +0x03, 0x74, 0xE0, 0xF0, 0x06, 0x60, 0x01, 0x74, +0x25, 0x60, 0x02, 0x6C, 0x8B, 0xEC, 0x4C, 0xEC, +0x02, 0x6A, 0xAC, 0xEA, 0x6C, 0xEA, 0xA7, 0xF5, +0x98, 0xC0, 0x11, 0x22, 0xA7, 0xF5, 0x47, 0xA0, +0x0F, 0x6D, 0xA7, 0xF5, 0x88, 0xA0, 0x4C, 0xED, 0x52, 0x36, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, -0x01, 0x72, 0x80, 0xF0, 0x19, 0x61, 0x67, 0xF7, -0xB6, 0xA8, 0x00, 0x6C, 0x80, 0x18, 0x9B, 0x53, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x67, 0xF7, 0x8B, 0xA2, 0x67, 0xF7, 0x7A, 0xA2, -0xFF, 0x4C, 0x6E, 0xEC, 0x03, 0x2C, 0x67, 0xF7, -0x4A, 0xA2, 0x05, 0x10, 0x01, 0x4B, 0x67, 0xF7, -0x7A, 0xC2, 0x67, 0xF7, 0x49, 0xA2, 0x5A, 0x33, -0x02, 0x73, 0x0D, 0x60, 0x03, 0x73, 0x0F, 0x60, -0x01, 0x73, 0x05, 0x60, 0x3F, 0x6B, 0x4C, 0xEB, -0xFF, 0x6A, 0x4C, 0xEB, 0x0E, 0x10, 0x3F, 0x6B, -0x4C, 0xEB, 0x0A, 0x6A, 0x08, 0x10, 0x3F, 0x6B, -0x4C, 0xEB, 0x64, 0x6A, 0x04, 0x10, 0x3F, 0x6B, -0x4C, 0xEB, 0xE0, 0xF3, 0x08, 0x6A, 0x58, 0xEB, -0x12, 0xEB, 0x0A, 0x6A, 0x58, 0xEB, 0x30, 0xF0, -0x20, 0x6A, 0x0E, 0xF6, 0x5E, 0xAA, 0x01, 0x6C, -0x00, 0x6D, 0x64, 0x6E, 0x12, 0xEB, 0x4F, 0xE3, -0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF7, 0x86, 0xC2, -0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x31, 0x6C, -0x6A, 0xF1, 0x05, 0x4C, 0xD8, 0xEB, 0x01, 0x6F, -0x12, 0xEE, 0x40, 0xEA, 0x09, 0x10, 0x67, 0xF7, -0xB6, 0xA8, 0x00, 0x6C, 0x80, 0x18, 0x9B, 0x53, -0x88, 0xF0, 0x26, 0xC0, 0x80, 0x18, 0x59, 0x54, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0xE0, 0xF0, 0x87, 0xA0, 0x00, 0x6A, 0x67, 0xF7, -0x59, 0xC0, 0x00, 0x6A, 0x67, 0xF7, 0x5E, 0xC8, -0x67, 0xF7, 0x5C, 0xC8, 0x00, 0x18, 0xBD, 0xDC, -0xE0, 0xF0, 0x87, 0xA0, 0x00, 0x18, 0xAC, 0xDC, -0xE0, 0xF0, 0x87, 0xA0, 0x00, 0x18, 0xC4, 0xDC, -0xC3, 0xF3, 0x6C, 0xA0, 0x20, 0x6A, 0xE0, 0xF0, -0xC7, 0xA0, 0x6D, 0xEA, 0xC3, 0xF3, 0x4C, 0xC0, -0x08, 0x6C, 0x08, 0x6A, 0x00, 0x6D, 0x43, 0xF4, -0x48, 0xC0, 0x00, 0x18, 0x94, 0xCC, 0xC3, 0xF3, -0x6E, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0x24, 0x2A, +0x01, 0x72, 0x01, 0x6C, 0x01, 0x61, 0x00, 0x6C, +0xA7, 0xF5, 0xB6, 0xA8, 0x80, 0x18, 0xB6, 0x58, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF4, 0x54, 0x9A, +0x40, 0xEA, 0xC8, 0x10, 0x02, 0x6A, 0xAC, 0xEA, +0x6C, 0xEA, 0x11, 0x22, 0xA7, 0xF5, 0x47, 0xA0, +0x0F, 0x6D, 0xA7, 0xF5, 0x88, 0xA0, 0x4C, 0xED, +0x52, 0x36, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, +0x58, 0x9A, 0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, +0x01, 0x72, 0xE0, 0xF0, 0x19, 0x61, 0xA7, 0xF5, +0xB6, 0xA8, 0x00, 0x6C, 0x80, 0x18, 0xB6, 0x58, +0x30, 0xF0, 0x20, 0x6A, 0xAF, 0xF7, 0x59, 0xA2, +0x5A, 0x33, 0x02, 0x73, 0x0D, 0x60, 0x03, 0x73, +0x0F, 0x60, 0x01, 0x73, 0x05, 0x60, 0x3F, 0x6B, +0x4C, 0xEB, 0xFF, 0x6A, 0x4C, 0xEB, 0x0E, 0x10, +0x3F, 0x6B, 0x4C, 0xEB, 0x0A, 0x6A, 0x08, 0x10, +0x3F, 0x6B, 0x4C, 0xEB, 0x64, 0x6A, 0x04, 0x10, +0x3F, 0x6B, 0x4C, 0xEB, 0xE0, 0xF3, 0x08, 0x6A, +0x58, 0xEB, 0x12, 0xEB, 0x0A, 0x6A, 0x58, 0xEB, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xA7, 0xF5, 0x9E, 0xAA, 0x12, 0xEB, 0x8F, 0xE3, +0x53, 0x10, 0x02, 0x6A, 0xAC, 0xEA, 0x6C, 0xEA, +0x11, 0x22, 0xA7, 0xF5, 0x47, 0xA0, 0x0F, 0x6D, +0xA7, 0xF5, 0x88, 0xA0, 0x4C, 0xED, 0x52, 0x36, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x58, 0x9A, +0x6C, 0xED, 0x6C, 0xEE, 0x40, 0xEA, 0x01, 0x72, +0xA0, 0xF0, 0x16, 0x61, 0xA7, 0xF5, 0xB6, 0xA8, +0x00, 0x6C, 0x80, 0x18, 0xB6, 0x58, 0x30, 0xF0, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0xA7, 0xF5, +0x8B, 0xA2, 0xA7, 0xF5, 0x7A, 0xA2, 0xFF, 0x4C, +0x6E, 0xEC, 0x03, 0x2C, 0xA7, 0xF5, 0x4A, 0xA2, +0x05, 0x10, 0x01, 0x4B, 0xA7, 0xF5, 0x7A, 0xC2, +0xA7, 0xF5, 0x49, 0xA2, 0x5A, 0x33, 0x02, 0x73, +0x0D, 0x60, 0x03, 0x73, 0x0F, 0x60, 0x01, 0x73, +0x05, 0x60, 0x3F, 0x6B, 0x4C, 0xEB, 0xFF, 0x6A, +0x4C, 0xEB, 0x0E, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, +0x0A, 0x6A, 0x08, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, +0x64, 0x6A, 0x04, 0x10, 0x3F, 0x6B, 0x4C, 0xEB, +0xE0, 0xF3, 0x08, 0x6A, 0x58, 0xEB, 0x12, 0xEB, +0x0A, 0x6A, 0x58, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0xCF, 0xF7, 0x4E, 0xAA, 0x12, 0xEB, 0x4F, 0xE3, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0xC0, 0xF0, 0xB2, 0xA2, 0x01, 0x6C, 0xC7, 0xF6, +0x86, 0xC2, 0x04, 0x6C, 0xAC, 0xEC, 0x10, 0x24, +0x00, 0xF1, 0xB8, 0xA2, 0x08, 0x6C, 0xAC, 0xEC, +0xFF, 0x6D, 0xAC, 0xEC, 0x09, 0x24, 0x20, 0x23, +0x00, 0x6C, 0xA4, 0xF3, 0x94, 0xDA, 0xA4, 0xF3, +0x78, 0xDA, 0x00, 0x18, 0xF1, 0xCE, 0x18, 0x10, +0x64, 0x6E, 0xD8, 0xEB, 0x00, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, +0x10, 0xF0, 0x31, 0x6C, 0x2C, 0xF6, 0x11, 0x4C, +0x00, 0x6D, 0x01, 0x6F, 0x12, 0xEE, 0x40, 0xEA, +0x09, 0x10, 0xA7, 0xF5, 0xB6, 0xA8, 0x00, 0x6C, +0x80, 0x18, 0xB6, 0x58, 0xC7, 0xF6, 0x26, 0xC0, +0x80, 0x18, 0x8C, 0x59, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x00, 0x6A, 0xA7, 0xF5, +0x59, 0xC0, 0x00, 0x6A, 0xA7, 0xF5, 0x5E, 0xC8, +0xA7, 0xF5, 0x5C, 0xC8, 0x00, 0xF1, 0x58, 0xA0, +0x08, 0x69, 0x2C, 0xEA, 0x56, 0x2A, 0xE0, 0xF0, +0x87, 0xA0, 0x00, 0x18, 0xDA, 0xE1, 0xE0, 0xF0, +0x87, 0xA0, 0x00, 0x18, 0xC9, 0xE1, 0xE0, 0xF0, +0x87, 0xA0, 0x00, 0x18, 0xE1, 0xE1, 0xC3, 0xF3, +0x68, 0xA0, 0xE0, 0xF0, 0xC7, 0xA0, 0x20, 0x6A, +0x6D, 0xEA, 0x91, 0x67, 0x00, 0x6D, 0xC3, 0xF3, +0x48, 0xC0, 0x43, 0xF4, 0x24, 0xC0, 0x00, 0x18, +0xAE, 0xCD, 0xC3, 0xF3, 0x6A, 0xA0, 0x04, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x35, 0x2A, 0x00, 0xF1, 0x78, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x05, 0x22, 0xC3, 0xF3, -0x6C, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0x05, 0x10, -0xC3, 0xF3, 0x6C, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, -0x6C, 0xEA, 0xC3, 0xF3, 0x4C, 0xC0, 0x10, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x67, 0xF7, 0x98, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, -0x67, 0xF7, 0xB6, 0xAA, 0x8C, 0xEB, 0x67, 0xF7, -0x78, 0xC2, 0x01, 0x6C, 0x80, 0x18, 0x9B, 0x53, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x68, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0x05, 0x10, +0xC3, 0xF3, 0x68, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, +0x6C, 0xEA, 0xC3, 0xF3, 0x48, 0xC0, 0x21, 0x10, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0xA7, 0xF5, 0x78, 0xA0, 0x02, 0x6A, 0xA7, 0xF5, +0xB6, 0xA8, 0x4B, 0xEA, 0x6C, 0xEA, 0x01, 0x6C, +0xA7, 0xF5, 0x58, 0xC0, 0x80, 0x18, 0xB6, 0x58, +0xC0, 0xF0, 0x72, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, +0x0C, 0x22, 0x00, 0xF1, 0x78, 0xA0, 0x08, 0x6A, +0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x05, 0x22, +0x00, 0x6A, 0xA4, 0xF3, 0x54, 0xD8, 0x00, 0x18, +0xF1, 0xCE, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x69, 0x04, 0x67, 0x80, 0xF4, 0x4C, 0x9A, 0x2C, 0xE8, 0x2C, 0xED, 0xCC, 0xE9, 0x04, 0xD5, 0x90, 0x67, 0xD1, 0x67, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, 0x0F, 0x58, -0x63, 0xF2, 0x14, 0xC2, 0x63, 0xF2, 0x2C, 0xDA, +0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x0F, 0x58, +0x63, 0xF2, 0x10, 0xC2, 0x63, 0xF2, 0x28, 0xDA, 0x01, 0x6B, 0x01, 0x60, 0x00, 0x6B, 0x04, 0x96, -0x30, 0xF0, 0x20, 0x6C, 0xB0, 0x67, 0xF1, 0x67, -0x63, 0xF2, 0x70, 0xDA, 0xAE, 0xF7, 0x18, 0x4C, -0x80, 0x18, 0x94, 0x52, 0x09, 0x97, 0x08, 0x91, +0x30, 0xF0, 0x21, 0x6C, 0xB0, 0x67, 0xF1, 0x67, +0x63, 0xF2, 0x6C, 0xDA, 0x70, 0xF1, 0x08, 0x4C, +0x80, 0x18, 0xAF, 0x57, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6B, 0x6C, 0xEC, 0x03, 0x5C, 0x58, 0x67, 0x6C, 0xEA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x83, 0xF3, 0x50, 0xA3, -0x0B, 0x2A, 0x83, 0xF3, 0x51, 0xA3, 0x08, 0x2A, -0x83, 0xF3, 0x52, 0xA3, 0x05, 0x2A, 0x83, 0xF3, -0x73, 0xA3, 0x03, 0x23, 0x01, 0x6A, 0x20, 0xE8, +0x08, 0xF2, 0x10, 0x4B, 0x83, 0xF3, 0x4C, 0xA3, +0x0B, 0x2A, 0x83, 0xF3, 0x4D, 0xA3, 0x08, 0x2A, +0x83, 0xF3, 0x4E, 0xA3, 0x05, 0x2A, 0x83, 0xF3, +0x6F, 0xA3, 0x03, 0x23, 0x01, 0x6A, 0x20, 0xE8, 0x01, 0x6A, 0x20, 0xE8, 0xFC, 0x63, 0x07, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, 0x48, 0xA2, -0x0E, 0x72, 0x29, 0x61, 0x80, 0x18, 0x39, 0x55, -0x26, 0x22, 0x30, 0xF0, 0x20, 0x6C, 0xAE, 0xF7, -0x18, 0x4C, 0x04, 0x05, 0x80, 0x18, 0xBB, 0x4D, -0x5D, 0x67, 0x92, 0xA2, 0x80, 0x18, 0x36, 0x55, +0x30, 0xF0, 0x21, 0x6A, 0x50, 0xF1, 0x58, 0xA2, +0x0E, 0x72, 0x29, 0x61, 0x80, 0x18, 0x7F, 0x5A, +0x26, 0x22, 0x30, 0xF0, 0x21, 0x6C, 0x70, 0xF1, +0x08, 0x4C, 0x04, 0x05, 0x80, 0x18, 0xCA, 0x52, +0x5D, 0x67, 0x92, 0xA2, 0x80, 0x18, 0x7C, 0x5A, 0x0A, 0x22, 0x5D, 0x67, 0x90, 0xA2, 0x80, 0x18, -0x36, 0x55, 0x05, 0x22, 0x5D, 0x67, 0x91, 0xA2, -0x80, 0x18, 0x36, 0x55, 0x10, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF5, 0x44, 0x9A, 0x00, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, -0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, -0x5C, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x07, 0x97, +0x7C, 0x5A, 0x05, 0x22, 0x5D, 0x67, 0x91, 0xA2, +0x80, 0x18, 0x7C, 0x5A, 0x10, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF4, 0x4C, 0x9A, 0x00, 0x6B, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF0, +0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, +0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xAE, 0xF7, -0x45, 0xA2, 0x01, 0x72, 0x4A, 0x61, 0x80, 0x18, -0x39, 0x55, 0x47, 0x22, 0x30, 0xF0, 0x20, 0x68, -0xAE, 0xF7, 0x18, 0x48, 0x90, 0x67, 0x05, 0x05, -0x80, 0x18, 0xBB, 0x4D, 0x7D, 0x67, 0x56, 0xA3, +0x08, 0xD0, 0x30, 0xF0, 0x21, 0x6A, 0x50, 0xF1, +0x55, 0xA2, 0x01, 0x72, 0x4A, 0x61, 0x80, 0x18, +0x7F, 0x5A, 0x47, 0x22, 0x30, 0xF0, 0x21, 0x68, +0x70, 0xF1, 0x08, 0x48, 0x90, 0x67, 0x05, 0x05, +0x80, 0x18, 0xCA, 0x52, 0x7D, 0x67, 0x56, 0xA3, 0x01, 0x72, 0x0E, 0x60, 0x03, 0x72, 0x0C, 0x60, 0x54, 0xA3, 0x01, 0x72, 0x09, 0x60, 0x03, 0x72, 0x07, 0x60, 0x55, 0xA3, 0x01, 0x72, 0x04, 0x60, 0x02, 0x72, 0x02, 0x60, 0x03, 0x72, 0x10, 0x61, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, 0x44, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF4, 0x4C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF1, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x5C, 0x9A, 0x60, 0xDA, 0xF0, 0x17, -0x90, 0x67, 0x04, 0x05, 0x80, 0x18, 0xA9, 0x4D, +0x45, 0xF0, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, +0x90, 0x67, 0x04, 0x05, 0x80, 0x18, 0xB8, 0x52, 0x7D, 0x67, 0x51, 0xA3, 0x01, 0x72, 0x05, 0x60, 0x03, 0x72, 0x03, 0x60, 0x50, 0xA3, 0x01, 0x72, -0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF5, -0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF1, 0x78, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF0, 0x5C, 0x9A, 0x60, 0xDA, +0x10, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF4, +0x4C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x45, 0xF0, 0x64, 0x9A, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF0, 0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF3, 0x44, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x80, 0xA2, 0x67, 0xF7, -0xD8, 0xA3, 0x87, 0xF7, 0x80, 0xC3, 0xA0, 0xAA, +0x84, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x80, 0xA2, 0xA7, 0xF5, +0xD8, 0xA3, 0xC7, 0xF5, 0x80, 0xC3, 0xA0, 0xAA, 0x01, 0xF0, 0x00, 0x6C, 0xAC, 0xEC, 0x83, 0x35, 0x03, 0x6C, 0xAE, 0x35, 0x8B, 0xEC, 0xA4, 0x35, -0xCC, 0xEC, 0xAD, 0xEC, 0x67, 0xF7, 0x98, 0xC3, -0x30, 0xF0, 0x20, 0x6C, 0x24, 0xF1, 0x9C, 0x9C, -0xA0, 0xAC, 0x87, 0xF7, 0xA2, 0xCB, 0xA0, 0xAA, +0xCC, 0xEC, 0xAD, 0xEC, 0xA7, 0xF5, 0x98, 0xC3, +0x30, 0xF0, 0x20, 0x6C, 0x45, 0xF0, 0x88, 0x9C, +0xA0, 0xAC, 0xC7, 0xF5, 0xA2, 0xCB, 0xA0, 0xAA, 0xBF, 0xF7, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0xCA, 0xA0, 0xAA, 0x7F, 0xF7, 0x1F, 0x6B, 0xAC, 0xEB, 0x60, 0xCA, 0xC0, 0xAA, 0xFE, 0xF7, 0x1F, 0x6B, 0xFF, 0xF7, 0x1F, 0x6D, 0xCC, 0xEB, 0x60, 0xCA, 0x40, 0xAC, 0xFF, 0x6B, 0x21, 0x4B, 0xAC, 0xEA, 0x6D, 0xEA, 0xAC, 0xEA, 0x40, 0xCC, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x87, 0xF7, 0x80, 0xA2, -0xC3, 0xF3, 0x64, 0x9B, 0x01, 0x6E, 0x80, 0xC3, -0x30, 0xF0, 0x20, 0x6C, 0x87, 0xF7, 0xA2, 0xAA, -0x24, 0xF1, 0x9C, 0x9C, 0xA0, 0xCC, 0x67, 0xF7, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC7, 0xF5, 0x80, 0xA2, +0x84, 0xF2, 0x68, 0x9B, 0x01, 0x6E, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6C, 0xC7, 0xF5, 0xA2, 0xAA, +0x45, 0xF0, 0x88, 0x9C, 0xA0, 0xCC, 0xA7, 0xF5, 0x58, 0xA2, 0x80, 0xAB, 0xFF, 0xF7, 0x1F, 0x6D, 0x46, 0x32, 0xCC, 0xEA, 0xAC, 0xEC, 0x40, 0x32, 0xFE, 0xF7, 0x1E, 0x4E, 0x4C, 0x32, 0xCC, 0xEC, @@ -72762,87 +74874,87 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x70, 0x60, 0xC2, 0xE9, 0x61, 0x00, 0x6A, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x10, 0xF0, 0x23, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x09, 0xF5, 0x09, 0x4B, 0x40, 0xF1, 0x68, 0xDA, +0xCC, 0xF0, 0x1D, 0x4B, 0x40, 0xF1, 0x68, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0x40, 0xF1, 0x08, 0x4A, 0xC0, 0xF5, 0x11, 0x4B, 0x61, 0xDA, 0x10, 0xF0, -0x23, 0x6B, 0x69, 0xF5, 0x0D, 0x4B, 0x62, 0xDA, -0x10, 0xF0, 0x23, 0x6B, 0x09, 0xF6, 0x05, 0x4B, -0x63, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0xC9, 0xF5, -0x11, 0x4B, 0x64, 0xDA, 0x10, 0xF0, 0x23, 0x6B, -0x89, 0xF5, 0x1D, 0x4B, 0x65, 0xDA, 0x10, 0xF0, -0x23, 0x6B, 0x29, 0xF5, 0x1D, 0x4B, 0x66, 0xDA, -0x10, 0xF0, 0x23, 0x6B, 0x09, 0xF5, 0x0D, 0x4B, +0x23, 0x6B, 0x4C, 0xF1, 0x01, 0x4B, 0x62, 0xDA, +0x10, 0xF0, 0x23, 0x6B, 0xCC, 0xF1, 0x19, 0x4B, +0x63, 0xDA, 0x10, 0xF0, 0x23, 0x6B, 0xAC, 0xF1, +0x05, 0x4B, 0x64, 0xDA, 0x10, 0xF0, 0x23, 0x6B, +0x6C, 0xF1, 0x11, 0x4B, 0x65, 0xDA, 0x10, 0xF0, +0x23, 0x6B, 0x0C, 0xF1, 0x11, 0x4B, 0x66, 0xDA, +0x10, 0xF0, 0x23, 0x6B, 0xEC, 0xF0, 0x01, 0x4B, 0x67, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x00, 0x6B, 0x83, 0xF3, -0x70, 0xC2, 0x83, 0xF3, 0x71, 0xC2, 0x83, 0xF3, -0x72, 0xC2, 0x83, 0xF3, 0x73, 0xC2, 0x42, 0xF4, +0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, 0x83, 0xF3, +0x6C, 0xC2, 0x83, 0xF3, 0x6D, 0xC2, 0x83, 0xF3, +0x6E, 0xC2, 0x83, 0xF3, 0x6F, 0xC2, 0x42, 0xF4, 0x10, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, 0x7C, 0x9B, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x60, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, 0x70, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, +0x74, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, 0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF4, 0x4C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF3, 0x40, 0x9A, 0x03, 0x6C, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF2, 0x40, 0x9A, 0x00, 0xF5, 0x62, 0x33, +0x44, 0xF1, 0x58, 0x9A, 0x00, 0xF5, 0x62, 0x33, 0x8C, 0xEB, 0x40, 0x9A, 0x01, 0x73, 0x42, 0x32, 0x52, 0x32, 0x8C, 0xEA, 0x05, 0x60, 0x0B, 0x2B, 0x02, 0x5A, 0x50, 0x6C, 0x0D, 0x60, 0x03, 0x10, 0x02, 0x5A, 0x0A, 0x60, 0x28, 0x6C, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0x10, 0x02, 0x5A, 0x28, 0x6C, 0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, -0x50, 0x6C, 0x80, 0x18, 0xC5, 0x58, 0x80, 0x18, -0xE6, 0x15, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, -0x60, 0x9B, 0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF4, 0x60, 0x9B, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF4, -0x74, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF4, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0x78, 0x9B, 0x40, 0xDB, +0x50, 0x6C, 0x80, 0x18, 0x0B, 0x5E, 0x80, 0x18, +0x5F, 0x13, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF1, +0x78, 0x9B, 0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF3, 0x74, 0x9B, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF3, +0x68, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF3, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF0, 0x6C, 0x9B, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x00, 0x69, 0xA0, 0xF0, 0x24, 0xD8, 0xA0, 0xF1, -0x3C, 0xC0, 0x80, 0x18, 0xC8, 0x55, 0x80, 0x18, -0x37, 0x57, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF2, 0x38, 0xC0, 0x2A, 0xF2, -0x18, 0x4A, 0x4A, 0xF2, 0x08, 0x4C, 0x00, 0x6B, +0x35, 0xC0, 0x80, 0x18, 0x0E, 0x5B, 0x80, 0x18, +0x7D, 0x5C, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6C, 0x43, 0xF2, 0x34, 0xC0, 0xAB, 0xF5, +0x04, 0x4A, 0xAB, 0xF5, 0x14, 0x4C, 0x00, 0x6B, 0x60, 0xC2, 0x70, 0xC2, 0x01, 0x4A, 0x62, 0x67, 0x8E, 0xEB, 0xF9, 0x2B, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, -0x00, 0x4A, 0x83, 0xF3, 0x75, 0xC2, 0x83, 0xF3, -0x76, 0xC2, 0x83, 0xF3, 0x77, 0xC2, 0x83, 0xF3, -0x74, 0xC2, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xDF, 0x55, -0x80, 0x18, 0x4C, 0x56, 0x80, 0x18, 0xEC, 0x49, -0x00, 0x18, 0x51, 0xE5, 0x00, 0x18, 0xA9, 0xCB, -0x00, 0x18, 0x3A, 0xC5, 0x80, 0x18, 0x64, 0x0D, -0x80, 0x18, 0xB1, 0x05, 0x80, 0x18, 0xD4, 0x05, +0x05, 0x90, 0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, +0x10, 0x4A, 0x83, 0xF3, 0x71, 0xC2, 0x83, 0xF3, +0x72, 0xC2, 0x83, 0xF3, 0x73, 0xC2, 0x83, 0xF3, +0x70, 0xC2, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x25, 0x5B, +0x80, 0x18, 0x92, 0x5B, 0x80, 0x18, 0xFB, 0x4E, +0x00, 0x18, 0x82, 0xEA, 0x00, 0x18, 0xB2, 0xCC, +0x00, 0x18, 0x73, 0xC5, 0x80, 0x18, 0xC4, 0x0A, +0x80, 0x18, 0xD7, 0x02, 0x80, 0x18, 0xFA, 0x02, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x44, 0x9A, -0x40, 0xEA, 0x80, 0x18, 0x8F, 0x53, 0x80, 0x18, -0xA1, 0x3B, 0x00, 0x18, 0x27, 0xDB, 0x00, 0x18, -0x45, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x6C, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, +0x40, 0xEA, 0x80, 0x18, 0xAA, 0x58, 0x80, 0x18, +0x10, 0x39, 0x00, 0x18, 0x44, 0xE0, 0x00, 0x18, +0x62, 0xE0, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x64, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, -0x00, 0x6B, 0xA0, 0xF6, 0x7E, 0xC2, 0xA0, 0xF6, -0x7F, 0xC2, 0xA0, 0xF1, 0x7C, 0xC2, 0xA0, 0xF1, -0x7D, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0x08, 0xF1, 0x65, 0xA2, -0x0F, 0x23, 0x08, 0xF1, 0x64, 0xA2, 0x0C, 0x23, -0x08, 0xF1, 0x6A, 0xA2, 0x09, 0x23, 0x08, 0xF1, -0x66, 0xA2, 0x06, 0x23, 0x08, 0xF1, 0x68, 0xA2, -0x03, 0x23, 0x08, 0xF1, 0x47, 0xA2, 0x1E, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF2, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, +0x00, 0x6B, 0xA0, 0xF6, 0x78, 0xC2, 0xA0, 0xF6, +0x79, 0xC2, 0xA0, 0xF1, 0x75, 0xC2, 0xA0, 0xF1, +0x76, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x08, 0xF2, 0x10, 0x4A, 0x47, 0xF7, 0x65, 0xA2, +0x0F, 0x23, 0x47, 0xF7, 0x64, 0xA2, 0x0C, 0x23, +0x47, 0xF7, 0x6A, 0xA2, 0x09, 0x23, 0x47, 0xF7, +0x66, 0xA2, 0x06, 0x23, 0x47, 0xF7, 0x68, 0xA2, +0x03, 0x23, 0x47, 0xF7, 0x47, 0xA2, 0x1E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF1, 0x78, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0xC3, 0xF5, 0x44, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x74, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x5C, 0x9A, +0xC4, 0xF4, 0x4C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, 0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x48, 0x98, @@ -72850,7 +74962,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x15, 0x6C, 0x30, 0xF0, 0x20, 0x69, 0x40, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0xA6, 0xF6, 0x00, 0x49, 0x40, 0xEA, 0x7D, 0x67, +0x08, 0xF2, 0x10, 0x49, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x16, 0x6C, 0x41, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, @@ -72861,14 +74973,14 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x19, 0x6C, 0x44, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0xBD, 0x67, -0x90, 0xA5, 0x08, 0xF1, 0x48, 0xA1, 0x0F, 0x6B, +0x90, 0xA5, 0x47, 0xF7, 0x48, 0xA1, 0x0F, 0x6B, 0x8C, 0xEB, 0x50, 0x32, 0x6D, 0xEA, 0x0A, 0x93, 0x04, 0x05, 0xE0, 0xF1, 0x1B, 0x6C, 0x45, 0xC3, -0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x08, 0xF1, -0x4A, 0xA1, 0x08, 0xF1, 0x65, 0xA1, 0x0A, 0x95, -0x4C, 0x32, 0x74, 0x33, 0x6D, 0xEA, 0x08, 0xF1, -0x64, 0xA1, 0x6D, 0xEA, 0x46, 0xC5, 0x08, 0xF1, -0x46, 0xA1, 0x08, 0xF1, 0x67, 0xA1, 0x48, 0x32, +0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x47, 0xF7, +0x4A, 0xA1, 0x47, 0xF7, 0x65, 0xA1, 0x0A, 0x95, +0x4C, 0x32, 0x74, 0x33, 0x6D, 0xEA, 0x47, 0xF7, +0x64, 0xA1, 0x6D, 0xEA, 0x46, 0xC5, 0x47, 0xF7, +0x46, 0xA1, 0x47, 0xF7, 0x67, 0xA1, 0x48, 0x32, 0x78, 0x33, 0x6D, 0xEA, 0x33, 0x6B, 0x6D, 0xEA, 0x47, 0xC5, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, @@ -72894,406 +75006,406 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x47, 0xC1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, -0x6E, 0x56, 0xA0, 0xF1, 0x02, 0x6A, 0x1F, 0xF7, +0xB4, 0x5B, 0xA0, 0xF1, 0x02, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF1, 0x7C, 0x9B, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF1, 0x60, 0x9B, 0x80, 0xA0, +0x84, 0xF0, 0x70, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x84, 0xF0, 0x74, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0A, 0x72, 0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x04, 0x00, -0x90, 0x67, 0x80, 0x18, 0xA5, 0x56, 0xA0, 0xF1, +0x90, 0x67, 0x80, 0x18, 0xEB, 0x5B, 0xA0, 0xF1, 0x0A, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF1, 0x7C, 0x9B, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x60, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, 0x70, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, +0x74, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0F, 0x72, 0x80, 0xC3, 0x01, 0x48, -0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, -0x58, 0x9A, 0x19, 0x6B, 0x60, 0xC2, 0x09, 0x97, +0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, +0x44, 0x9A, 0x19, 0x6B, 0x60, 0xC2, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0x08, 0xF1, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x47, 0xF7, 0x44, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, -0x07, 0x6A, 0x6C, 0xEA, 0x08, 0xF1, 0x44, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x08, 0xF1, 0x45, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, +0x07, 0x6A, 0x6C, 0xEA, 0x47, 0xF7, 0x44, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x47, 0xF7, 0x45, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x56, 0x32, 0x08, 0xF1, 0x45, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x08, 0xF1, 0x4A, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, +0x50, 0xA3, 0x56, 0x32, 0x47, 0xF7, 0x45, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x47, 0xF7, 0x4A, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, 0x50, 0xA4, 0x18, 0x6B, 0x6C, 0xEA, 0x4F, 0x32, -0x08, 0xF1, 0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x08, 0xF1, 0x48, 0xA0, +0x47, 0xF7, 0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x47, 0xF7, 0x48, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1C, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x52, 0x32, -0x08, 0xF1, 0x48, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0xA6, 0xF6, 0x00, 0x48, 0x08, 0xF1, 0x46, 0xA0, +0x47, 0xF7, 0x48, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0x08, 0xF2, 0x10, 0x48, 0x47, 0xF7, 0x46, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x03, 0x6A, -0x6C, 0xEA, 0x08, 0xF1, 0x46, 0xC0, 0x30, 0xF0, -0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, 0x08, 0xF1, +0x6C, 0xEA, 0x47, 0xF7, 0x46, 0xC0, 0x30, 0xF0, +0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, 0x47, 0xF7, 0x47, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x30, 0x6B, 0x6C, 0xEA, 0x53, 0x32, 0x08, 0xF1, +0x30, 0x6B, 0x6C, 0xEA, 0x53, 0x32, 0x47, 0xF7, 0x47, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x19, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x30, 0xF0, 0x20, 0x68, 0xA6, 0xF6, 0x00, 0x48, -0x52, 0x32, 0x08, 0xF1, 0x48, 0xC0, 0xC0, 0xF3, +0x30, 0xF0, 0x20, 0x68, 0x08, 0xF2, 0x10, 0x48, +0x52, 0x32, 0x47, 0xF7, 0x48, 0xC0, 0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x1B, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, -0x6C, 0xEA, 0x08, 0xF1, 0x44, 0xC0, 0x43, 0x67, -0x18, 0x6B, 0x4C, 0xEB, 0x6F, 0x33, 0x08, 0xF1, -0x6A, 0xC0, 0x4F, 0x72, 0x56, 0x33, 0x08, 0xF1, +0x6C, 0xEA, 0x47, 0xF7, 0x44, 0xC0, 0x43, 0x67, +0x18, 0x6B, 0x4C, 0xEB, 0x6F, 0x33, 0x47, 0xF7, +0x6A, 0xC0, 0x4F, 0x72, 0x56, 0x33, 0x47, 0xF7, 0x65, 0xC0, 0x0E, 0x61, 0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x1A, 0x6C, 0x00, 0xF0, 0x11, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x51, 0xA3, 0x57, 0x72, -0x03, 0x61, 0x02, 0x6A, 0x08, 0xF1, 0x4A, 0xC0, +0x03, 0x61, 0x02, 0x6A, 0x47, 0xF7, 0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x90, 0xA3, 0x0C, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x8C, 0xEB, 0xA6, 0xF6, 0x00, 0x4A, -0x6B, 0x33, 0x9A, 0x34, 0x08, 0xF1, 0x66, 0xC2, -0x08, 0xF1, 0x87, 0xC2, 0x80, 0x18, 0xF4, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, 0x58, 0x9A, +0x20, 0x6A, 0x8C, 0xEB, 0x08, 0xF2, 0x10, 0x4A, +0x6B, 0x33, 0x9A, 0x34, 0x47, 0xF7, 0x66, 0xC2, +0x47, 0xF7, 0x87, 0xC2, 0x80, 0x18, 0x3A, 0x5C, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF6, 0x44, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0xFD, 0x72, -0x02, 0x61, 0x80, 0x18, 0xCF, 0x56, 0x80, 0x18, -0x53, 0x56, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x02, 0x61, 0x80, 0x18, 0x15, 0x5C, 0x80, 0x18, +0x99, 0x5B, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF0, 0x44, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x04, 0xF7, 0x50, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF0, 0x88, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, +0x04, 0xF7, 0x94, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, -0x80, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, +0x94, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x6C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF7, 0x78, 0x9A, 0xFD, 0x6A, 0xFF, 0x6C, 0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x40, 0xA3, 0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0xC3, 0xF1, 0x8C, 0x9B, 0x00, 0x6D, 0x02, 0xF0, +0x04, 0xF1, 0x80, 0x9B, 0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x6C, 0x9B, 0x54, 0x34, +0x20, 0x6B, 0x04, 0xF1, 0x60, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x6D, 0xE4, 0x80, 0x72, 0x04, 0x6C, 0x80, 0xC3, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x90, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF7, 0x9C, 0x9B, 0x80, 0xF2, 0x48, 0x9A, 0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x52, 0x9B, 0x8D, 0xEA, -0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF0, -0x74, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0x6C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, +0x08, 0xF2, 0x10, 0x4B, 0x52, 0x9B, 0x8D, 0xEA, +0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF7, +0x60, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF0, 0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0xB2, 0x9B, 0x8F, 0xEA, 0xAC, 0xEA, 0x52, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, -0x54, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF0, 0x60, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF7, +0x40, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0xA2, 0xF7, 0x1C, 0x4A, 0x89, 0xE2, +0x88, 0x34, 0xE3, 0xF6, 0x10, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x40, 0x9B, 0xAD, 0xEA, 0xA6, 0xF6, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF7, -0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x6C, 0x9B, 0x32, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0x41, 0x9B, +0x08, 0xF2, 0x50, 0x9B, 0xAD, 0xEA, 0x08, 0xF2, +0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF6, +0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF0, 0x60, 0x9B, 0x32, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF1, 0x70, 0x9B, 0x21, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, +0x24, 0xF2, 0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF0, 0x64, 0x9B, 0x21, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, 0x42, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xF0, 0x78, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x74, 0x9B, -0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF0, 0x7C, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0x7C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0x44, 0x9B, +0x20, 0x6B, 0x24, 0xF7, 0x64, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, 0x68, 0x9B, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x10, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF7, 0x68, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, +0x70, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0xF0, 0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x60, 0x9B, 0x40, 0xDB, +0x24, 0xF7, 0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF0, 0x74, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0xC2, 0xF7, -0x10, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x80, 0x9B, -0xAF, 0xEA, 0x8C, 0xEA, 0xA6, 0xF6, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF7, -0x40, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x03, 0xF7, +0x04, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x90, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0x08, 0xF2, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, 0x60, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF6, +0x4C, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF3, 0x54, 0x9A, 0x23, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, +0xC4, 0xF0, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF2, 0x48, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x74, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, -0x58, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, 0x68, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF7, +0x44, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF0, 0x5C, 0x9A, 0xA0, 0xDA, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x00, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, -0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF0, 0x40, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, +0xC4, 0xF0, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF7, 0x48, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x10, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, +0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF7, 0x4C, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x01, 0x74, 0x15, 0x60, 0x03, 0x24, 0x02, 0x74, 0x23, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x54, 0x9B, 0xAD, 0xEA, -0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0x70, 0x9B, 0x21, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, 0x55, 0x9B, +0x08, 0xF2, 0x10, 0x4B, 0x54, 0x9B, 0xAD, 0xEA, +0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, +0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF0, 0x64, 0x9B, 0x21, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x55, 0x9B, 0xAD, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0xF0, 0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x64, 0x9B, 0x10, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, +0x24, 0xF7, 0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF0, 0x78, 0x9B, 0x10, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x56, 0x9B, 0xAD, 0xEA, 0x56, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x24, 0xF0, 0x68, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x68, 0x9B, +0x20, 0x6B, 0x24, 0xF7, 0x74, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, 0x7C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x01, 0x74, 0x16, 0x60, 0x03, 0x24, 0x02, 0x74, 0x25, 0x60, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x94, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x54, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x70, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, -0x5C, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA6, 0xF6, 0x00, 0x4B, 0x95, 0x9B, 0xAF, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF0, 0x64, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x50, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF2, 0x10, 0x4B, 0x95, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF1, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x24, 0xF0, 0x44, 0x9A, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, +0xC4, 0xF0, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x24, 0xF7, 0x50, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, 0x96, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x56, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x68, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, -0x48, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, 0x8C, 0x9C, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, -0x40, 0xDB, 0xA6, 0xF6, 0x00, 0x4B, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, 0x7C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF7, +0x54, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF0, 0x80, 0x9C, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, +0x50, 0xDB, 0x08, 0xF2, 0x10, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, 0x44, 0xDB, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, 0x90, 0x9C, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, -0x94, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF1, 0x9C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0xA3, 0xF1, 0x80, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, 0x90, 0x9C, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF0, 0x84, 0x9C, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF0, +0x88, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xC4, 0xF0, 0x90, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xC4, 0xF0, 0x94, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xE4, 0xF0, 0x84, 0x9C, 0x54, 0xDB, 0x55, 0xDB, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0xA3, 0xF1, 0x84, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF1, 0x88, 0x9C, +0x20, 0x6C, 0xC4, 0xF0, 0x98, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xC4, 0xF0, 0x9C, 0x9C, 0x56, 0xDB, 0x40, 0xDC, 0x52, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF1, 0x6C, 0x9B, 0x40, 0xDB, +0x20, 0x6B, 0xE4, 0xF0, 0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF7, 0x60, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF0, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xF0, 0x7C, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x60, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, -0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x24, 0xF0, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x24, 0xF0, 0x68, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF0, 0x74, 0x9B, +0xC4, 0xF6, 0x6C, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, +0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF7, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF7, 0x68, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF7, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, +0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x24, 0xF7, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF7, 0x74, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF7, 0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x24, 0xF0, 0xAC, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x10, 0x6E, 0xA6, 0xF6, 0xC0, 0xDB, -0x01, 0xF7, 0x01, 0x6A, 0xA6, 0xF6, 0x00, 0x4B, +0x24, 0xF7, 0xB8, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF3, 0x10, 0x6E, 0x08, 0xF2, 0xD0, 0xDB, +0x01, 0xF7, 0x01, 0x6A, 0x08, 0xF2, 0x10, 0x4B, 0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, -0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0x6C, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF1, 0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF1, 0x74, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x7C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, -0x40, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, +0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, +0x60, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF0, 0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF0, 0x68, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF0, 0x70, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, +0x54, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x00, 0x6B, 0x72, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x4C, 0x9A, 0x60, 0xDA, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF0, 0x90, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF6, 0x00, 0x4A, +0xE4, 0xF0, 0x40, 0x9A, 0x60, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF7, 0x9C, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x08, 0xF2, 0x10, 0x4A, 0x80, 0xF1, 0x0E, 0x6D, 0xFF, 0x6B, 0xB4, 0xDA, 0x95, 0xDA, 0x76, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x50, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x44, 0x9A, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x48, 0x9A, +0xE4, 0xF0, 0x44, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC4, 0xF0, 0x58, 0x9A, 0x80, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF0, 0x5C, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x48, 0x58, 0x80, 0x18, 0x67, 0x58, -0x80, 0x18, 0x7F, 0x58, 0x80, 0x18, 0x9C, 0x58, -0x80, 0x18, 0x96, 0x58, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0x8E, 0x5D, 0x80, 0x18, 0xAD, 0x5D, +0x80, 0x18, 0xC5, 0x5D, 0x80, 0x18, 0xE2, 0x5D, +0x80, 0x18, 0xDC, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xD9, 0x58, -0x30, 0xF0, 0x20, 0x6B, 0xA6, 0xF6, 0x00, 0x4B, -0x42, 0xF6, 0x50, 0xC3, 0x00, 0x6A, 0x42, 0xF6, -0x51, 0xC3, 0x80, 0x18, 0x78, 0x57, 0x80, 0x18, -0x66, 0x5A, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, -0x54, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x80, 0x18, -0x69, 0x57, 0x80, 0x18, 0x6D, 0x57, 0x80, 0x18, -0x2C, 0x3D, 0x80, 0x18, 0x80, 0x57, 0x05, 0x97, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x1F, 0x5E, +0x30, 0xF0, 0x20, 0x6B, 0x08, 0xF2, 0x10, 0x4B, +0x42, 0xF6, 0x4C, 0xC3, 0x00, 0x6A, 0x42, 0xF6, +0x4D, 0xC3, 0x80, 0x18, 0xBE, 0x5C, 0x80, 0x18, +0xAC, 0x5F, 0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF7, +0x40, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x80, 0x18, +0xAF, 0x5C, 0x80, 0x18, 0xB3, 0x5C, 0x80, 0x18, +0x9B, 0x3A, 0x80, 0x18, 0xC6, 0x5C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xF0, 0xD3, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0xE5, 0xD8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF0, 0x50, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, +0x84, 0xF7, 0x5C, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, 0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF0, 0x74, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, +0xA4, 0xF7, 0x60, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF0, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF4, 0x94, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0xA4, 0xF7, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xA4, 0xF3, 0x88, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF3, 0x48, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x24, 0xF2, 0x5C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x4C, 0xEB, 0x62, 0x33, 0x03, 0x6A, 0x72, 0x33, 0x4C, 0xEB, 0x02, 0x6A, 0x04, 0x23, 0x01, 0x73, 0x01, 0x6A, 0x01, 0x60, 0x03, 0x6A, 0x20, 0xE8, 0x00, 0x65, 0x10, 0xF0, 0x23, 0x6A, -0xEA, 0xF0, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCC, 0xF4, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x0A, 0xF1, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCC, 0xF4, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x2C, 0xF3, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xEE, 0xF3, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x4F, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x71, 0xF0, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCD, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x4F, 0xF7, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x24, 0x6A, -0x32, 0xF0, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xF4, 0xF4, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x24, 0x6A, -0x31, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xF4, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x28, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x0B, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x68, 0xF7, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x4B, 0xF3, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x4C, 0xF5, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCF, 0xF1, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xAB, 0xF1, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6D, 0xF5, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xEB, 0xF1, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x2D, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCD, 0xF5, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x90, 0xF2, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x6A, 0xF4, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8D, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x2A, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x2D, 0xF3, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x8A, 0xF6, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xAD, 0xF3, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x6A, 0xF3, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x4C, 0xF7, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xAA, 0xF5, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCF, 0xF3, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x6F, 0xF4, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6D, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x92, 0xF0, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x32, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x42, 0xF3, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x82, 0xF3, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE2, 0xF2, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF3, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xEB, 0xF2, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCD, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xEA, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xED, 0xF3, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x28, 0xF1, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE8, 0xF6, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x24, 0x6A, -0xF1, 0xF2, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xB3, 0xF7, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x88, 0xF1, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x48, 0xF7, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x68, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x49, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x5F, 0xF0, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x1D, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x44, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x1E, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xDC, 0xF7, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x8A, 0xF0, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6C, 0xF4, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCA, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8C, 0xF4, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xAA, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6C, 0xF4, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x49, 0xF5, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCC, 0xF1, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xDF, 0xF1, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xBD, 0xF7, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x25, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x67, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x8B, 0xF4, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8A, 0xF2, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x54, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x0E, 0xF0, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x4C, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xBE, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x7D, 0xF4, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF3, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x3E, 0xF6, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xFD, 0xF3, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF3, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x46, 0xF7, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA8, 0xF2, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF4, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6B, 0xF0, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x0A, 0xF1, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x8B, 0xF4, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x0A, 0xF1, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF4, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2A, 0xF2, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8B, 0xF5, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x4A, 0xF2, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xF5, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEC, 0xF2, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8D, 0xF4, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF2, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xAF, 0xF4, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF5, 0x17, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xAF, 0xF7, 0x07, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF5, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xAF, 0xF7, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x0E, 0xF6, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xAF, 0xF7, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xCC, 0xF2, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6D, 0xF4, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xCC, 0xF2, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6D, 0xF4, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xCC, 0xF2, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6D, 0xF4, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xCC, 0xF2, 0x0A, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x6D, 0xF4, 0x1A, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xCC, 0xF2, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8D, 0xF4, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xCC, 0xF2, 0x1A, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x8D, 0xF4, 0x0A, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF7, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xAE, 0xF7, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x08, 0xF3, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x21, 0x6A, +0x70, 0xF1, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF0, 0x00, 0x4B, 0x80, 0xF2, 0x08, 0x4A, 0x13, 0x10, 0x80, 0x9A, 0x10, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF2, 0xA0, 0x9C, 0x30, 0xF0, -0x20, 0x6E, 0xC3, 0xF1, 0xD8, 0x9E, 0x80, 0x9D, +0x20, 0x6C, 0x64, 0xF1, 0xB8, 0x9C, 0x30, 0xF0, +0x20, 0x6E, 0x04, 0xF1, 0xCC, 0x9E, 0x80, 0x9D, 0xCD, 0xEC, 0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF3, 0x9C, 0x9C, 0x40, 0xDC, 0x04, 0x4A, +0x44, 0xF2, 0x94, 0x9C, 0x40, 0xDC, 0x04, 0x4A, 0x43, 0xEB, 0xEB, 0x60, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xD5, 0xE4, 0xF0, 0xB0, 0x9B, +0x20, 0x6B, 0x04, 0xD5, 0xE4, 0xF7, 0xBC, 0x9B, 0xFF, 0x6A, 0x40, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, 0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x54, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF0, 0x40, 0x9A, 0x00, 0xAA, 0x04, 0x92, 0x2C, 0xE8, 0x2A, 0xEA, 0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x04, 0x93, @@ -73303,24 +75415,24 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0xFF, 0x68, 0x0C, 0xEC, 0x2C, 0xEE, 0x2A, 0xED, 0x05, 0xD4, 0x04, 0xD5, 0x06, 0xD6, -0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, -0x70, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, +0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF7, +0x7C, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, 0x8C, 0xEA, 0x05, 0x94, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF0, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x23, 0xF6, 0x80, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF1, 0x90, 0x9C, +0x05, 0xF0, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0x24, 0xF5, 0x84, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x64, 0xF0, 0x84, 0x9C, 0x8D, 0xEA, 0xCD, 0xEA, 0x40, 0xDB, 0x34, 0x10, -0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0xE2, 0x59, +0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x28, 0x5F, 0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, 0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE4, 0xF0, 0x90, 0x9B, 0x40, 0x6D, +0x20, 0x6B, 0xE4, 0xF7, 0x9C, 0x9B, 0x40, 0x6D, 0xAB, 0xED, 0x60, 0xA4, 0x2C, 0xEA, 0x0C, 0xEB, 0xAC, 0xEB, 0x05, 0x95, 0xAD, 0xEB, 0x0C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF0, -0x94, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF6, -0xA0, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0x23, 0xF1, 0xB0, 0x9D, +0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x05, 0xF0, +0x80, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x24, 0xF5, +0xA4, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, +0x30, 0xF0, 0x20, 0x6D, 0x64, 0xF0, 0xA4, 0x9D, 0xC4, 0xEA, 0x46, 0x67, 0xAD, 0xEB, 0x04, 0x95, 0x07, 0x96, 0xAC, 0xEA, 0xAF, 0xED, 0xCC, 0xED, 0xAD, 0xEA, 0x2C, 0xEA, 0x4D, 0xEB, 0x60, 0xDC, @@ -73328,55 +75440,55 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x0A, 0x6C, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x10, 0xF0, -0x00, 0x6D, 0x80, 0x18, 0xE2, 0x59, 0x05, 0x97, +0x00, 0x6D, 0x80, 0x18, 0x28, 0x5F, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, -0x31, 0x6A, 0xED, 0xF0, 0x09, 0x4A, 0x40, 0xDB, +0x20, 0x6B, 0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, +0x31, 0x6A, 0x0F, 0xF6, 0x01, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x31, 0x10, 0x82, 0xF3, 0x08, 0x70, -0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x60, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF1, +0x78, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF6, 0x00, 0x4A, 0xA3, 0xF3, 0x7C, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x03, 0x6B, +0x08, 0xF2, 0x10, 0x4A, 0xA3, 0xF3, 0x78, 0x9A, +0x8D, 0xEB, 0xA3, 0xF3, 0x78, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, 0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x18, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF7, 0x58, 0x9A, 0x60, 0xA2, +0x20, 0x6A, 0x04, 0xF7, 0x44, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x2A, 0x80, 0x18, -0x34, 0x5A, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x02, 0x6B, +0x7A, 0x5F, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x44, 0xF1, 0x50, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x7C, 0x9B, 0x10, 0xF0, 0x31, 0x6A, -0xED, 0xF0, 0x0A, 0x4A, 0x40, 0xDB, 0x05, 0x97, +0x24, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x31, 0x6A, +0x0F, 0xF6, 0x02, 0x4A, 0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x44, 0xF0, 0x7C, 0x9A, 0x02, 0x6C, +0x20, 0x6A, 0x64, 0xF7, 0x68, 0x9A, 0x02, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0x9B, 0xFF, 0x6E, 0x41, 0x4E, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x78, 0x9A, 0xE0, 0xF3, +0x20, 0x6A, 0x24, 0xF1, 0x70, 0x9A, 0xE0, 0xF3, 0x1E, 0x4C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xAB, 0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xCB, -0x02, 0x6C, 0x80, 0x18, 0xFD, 0x59, 0x80, 0xF3, +0x02, 0x6C, 0x80, 0x18, 0x43, 0x5F, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, 0x00, 0x6C, -0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0xFD, 0x59, +0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0x43, 0x5F, 0x00, 0x6C, 0xC4, 0x67, 0x02, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0xFD, 0x59, 0x00, 0x6C, 0xC4, 0x67, -0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0xFD, 0x59, +0x80, 0x18, 0x43, 0x5F, 0x00, 0x6C, 0xC4, 0x67, +0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x43, 0x5F, 0x00, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0xFD, 0x59, 0x10, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0xFD, 0x59, +0x80, 0x18, 0x43, 0x5F, 0x10, 0xF0, 0x00, 0x6D, +0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0x43, 0x5F, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF0, 0x64, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x41, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +0x34, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u32 array_length_mp_8822c_fw_wowlan = 144512; +u32 array_length_mp_8822c_fw_wowlan = 157048; #endif /*CONFIG_WOWLAN*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw.h b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw.h index b9484b996..40181ca0c 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw.h +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw.h @@ -20,21 +20,21 @@ #ifdef LOAD_FW_HEADER_FROM_DRIVER #if (defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP))) -extern u8 array_mp_8822c_fw_ap[130048]; +extern u8 array_mp_8822c_fw_ap[130632]; extern u32 array_length_mp_8822c_fw_ap; #endif #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) || (DM_ODM_SUPPORT_TYPE & (ODM_CE)) -extern u8 array_mp_8822c_fw_nic[196888]; +extern u8 array_mp_8822c_fw_nic[200624]; extern u32 array_length_mp_8822c_fw_nic; #if !(DM_ODM_SUPPORT_TYPE & (ODM_CE)) -extern u8 array_mp_8822c_fw_spic[115168]; +extern u8 array_mp_8822c_fw_spic[115208]; extern u32 array_length_mp_8822c_fw_spic; #endif /*!(DM_ODM_SUPPORT_TYPE & (ODM_CE))*/ #ifdef CONFIG_WOWLAN -extern u8 array_mp_8822c_fw_wowlan[144512]; +extern u8 array_mp_8822c_fw_wowlan[157048]; extern u32 array_length_mp_8822c_fw_wowlan; #endif /*CONFIG_WOWLAN*/ #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.c index 06c317cb8..4e09e4f26 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.c @@ -22,13 +22,13 @@ #if (defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP))) u8 array_mp_8822c_fw_ap[] = { -0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x00, -0x0F, 0x12, 0x23, 0xA2, 0x00, 0x00, 0x00, 0x00, -0x09, 0x18, 0x0F, 0x16, 0xE5, 0x07, 0x00, 0x00, +0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x01, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x09, 0x07, 0x0D, 0x2E, 0xE6, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x30, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x58, 0x4A, 0x00, 0x00, 0xB0, 0x7F, 0x01, 0x00, +0x60, 0x4A, 0x00, 0x00, 0xE8, 0x7F, 0x01, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, @@ -671,12 +671,12 @@ u8 array_mp_8822c_fw_ap[] = { 0x6D, 0x5F, 0x63, 0x68, 0x6B, 0x5F, 0x70, 0x6B, 0x67, 0x5F, 0x73, 0x65, 0x74, 0x5F, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x5F, 0x38, 0x38, 0x32, 0x32, -0x63, 0x00, 0x00, 0x00, 0x85, 0x75, 0x11, 0x80, -0xA7, 0x75, 0x11, 0x80, 0xC9, 0x75, 0x11, 0x80, -0xEB, 0x75, 0x11, 0x80, 0x0F, 0x76, 0x11, 0x80, -0x49, 0x76, 0x11, 0x80, 0x6D, 0x76, 0x11, 0x80, -0x91, 0x76, 0x11, 0x80, 0xB5, 0x76, 0x11, 0x80, -0xDB, 0x76, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, +0x63, 0x00, 0x00, 0x00, 0xB9, 0x75, 0x11, 0x80, +0xDB, 0x75, 0x11, 0x80, 0xFD, 0x75, 0x11, 0x80, +0x1F, 0x76, 0x11, 0x80, 0x43, 0x76, 0x11, 0x80, +0x7D, 0x76, 0x11, 0x80, 0xA1, 0x76, 0x11, 0x80, +0xC5, 0x76, 0x11, 0x80, 0xE9, 0x76, 0x11, 0x80, +0x0F, 0x77, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, 0x40, 0x00, 0x00, 0x00, 0xE0, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0x00, 0x00, 0x73, 0x2B, 0x03, 0x80, 0x83, 0x2B, 0x03, 0x80, @@ -1476,7 +1476,7 @@ u8 array_mp_8822c_fw_ap[] = { 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE0, -0x8B, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x63, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x21, 0x6C, 0x00, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x94, 0xB8, 0x00, 0x65, 0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, 0x94, 0xB9, @@ -1504,10 +1504,10 @@ u8 array_mp_8822c_fw_ap[] = { 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0x6C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xC0, 0xF0, 0x01, 0x4A, 0x40, 0xDB, -0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0x95, 0x5E, -0x80, 0x18, 0xA7, 0x5B, 0x80, 0x18, 0xCE, 0x5B, -0x80, 0x18, 0x67, 0x5E, 0x80, 0x18, 0xEB, 0x5B, -0x80, 0x18, 0x5E, 0x5E, 0x00, 0x18, 0x7E, 0xC2, +0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0xA2, 0x5E, +0x80, 0x18, 0xA7, 0x5B, 0x80, 0x18, 0xDB, 0x5B, +0x80, 0x18, 0x74, 0x5E, 0x80, 0x18, 0xF8, 0x5B, +0x80, 0x18, 0x6B, 0x5E, 0x00, 0x18, 0x7E, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x41, 0xF7, @@ -1522,7 +1522,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x1D, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x45, 0xF5, 0x5C, 0xDB, 0x80, 0x18, -0x96, 0x5F, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, +0xA3, 0x5F, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x64, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, @@ -2013,8 +2013,8 @@ u8 array_mp_8822c_fw_ap[] = { 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x96, 0x40, 0xF4, 0x58, 0x9A, 0xB0, 0x67, 0x91, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0xFD, 0xC3, -0xA2, 0x67, 0x90, 0x67, 0x00, 0x18, 0x28, 0xD1, -0x04, 0x95, 0x90, 0x67, 0x00, 0x18, 0x37, 0xD1, +0xA2, 0x67, 0x90, 0x67, 0x00, 0x18, 0x2A, 0xD1, +0x04, 0x95, 0x90, 0x67, 0x00, 0x18, 0x39, 0xD1, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x06, 0x95, 0x00, 0x6C, 0x27, 0x6E, 0x40, 0xEA, 0x1D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0x96, @@ -2023,8 +2023,8 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0x6A, 0x04, 0x96, 0x40, 0xF4, 0x58, 0x9A, 0xB0, 0x67, 0x91, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0xFD, 0xC3, 0xA2, 0x67, 0x90, 0x67, -0x00, 0x18, 0x28, 0xD1, 0x04, 0x95, 0x90, 0x67, -0x00, 0x18, 0x37, 0xD1, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0x2A, 0xD1, 0x04, 0x95, 0x90, 0x67, +0x00, 0x18, 0x39, 0xD1, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF5, 0x78, 0x9A, @@ -2586,12 +2586,12 @@ u8 array_mp_8822c_fw_ap[] = { 0x10, 0x91, 0x0F, 0x90, 0x09, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x1A, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x07, 0x6A, -0x4F, 0xCB, 0x80, 0x18, 0x59, 0x5C, 0x30, 0xF0, +0x4F, 0xCB, 0x80, 0x18, 0x66, 0x5C, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x19, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x08, 0x6A, -0x4F, 0xCB, 0x80, 0x18, 0x22, 0x5C, 0x30, 0xF0, +0x4F, 0xCB, 0x80, 0x18, 0x2F, 0x5C, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, @@ -3101,10 +3101,10 @@ u8 array_mp_8822c_fw_ap[] = { 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, 0xA2, 0x67, 0x80, 0x18, -0x5C, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x69, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, -0xA2, 0x67, 0x80, 0x18, 0x8D, 0x5D, 0x05, 0x97, +0xA2, 0x67, 0x80, 0x18, 0x9A, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0x6C, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xE6, 0xF2, 0x05, 0x4A, @@ -3659,13 +3659,14 @@ u8 array_mp_8822c_fw_ap[] = { 0x78, 0x9B, 0x8D, 0xEE, 0x6D, 0xE2, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, 0x84, 0x9B, 0x7F, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, -0x68, 0x9B, 0x1C, 0x6C, 0x80, 0xC3, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF3, 0x6C, 0x9B, 0x08, 0xF4, -0x13, 0x6C, 0x80, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF5, 0x8C, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, -0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x01, 0x90, -0x01, 0x63, 0x20, 0xE8, 0xFB, 0x63, 0x09, 0x62, +0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x09, 0xF2, +0x89, 0xA3, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, +0x68, 0x9B, 0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF3, 0x6C, 0x9B, 0x08, 0xF4, 0x13, 0x6C, +0x80, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF5, +0x8C, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, +0xAC, 0xEB, 0x60, 0xC4, 0x01, 0x90, 0x01, 0x63, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF5, 0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, 0x90, 0x9C, 0x40, 0x9B, 0x10, 0x6D, 0x00, 0x6E, 0x8D, 0xEA, @@ -3752,40 +3753,40 @@ u8 array_mp_8822c_fw_ap[] = { 0x00, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0x93, 0xD1, 0x90, 0x67, 0x01, 0x6D, -0x01, 0x48, 0x00, 0x18, 0xA3, 0xD1, 0x0B, 0x70, +0x00, 0x18, 0x95, 0xD1, 0x90, 0x67, 0x01, 0x6D, +0x01, 0x48, 0x00, 0x18, 0xA5, 0xD1, 0x0B, 0x70, 0xF5, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x0A, 0x69, 0x12, 0xED, 0x4C, 0xED, 0x04, 0xD5, 0xFF, 0x68, 0x2C, 0xE8, 0x90, 0x67, 0x00, 0x18, -0xB3, 0xD1, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, +0xB5, 0xD1, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, 0x20, 0x31, 0x90, 0x67, 0x01, 0x6D, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x18, 0xA3, 0xD1, 0x41, 0x41, +0x23, 0x31, 0x00, 0x18, 0xA5, 0xD1, 0x41, 0x41, 0xEF, 0x2A, 0x01, 0x69, 0x2B, 0xE9, 0x09, 0x10, 0x04, 0x94, 0xFF, 0x49, 0x00, 0x6D, 0x00, 0xF6, -0x20, 0x31, 0x00, 0x18, 0xA3, 0xD1, 0x00, 0xF6, +0x20, 0x31, 0x00, 0x18, 0xA5, 0xD1, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x51, 0xF5, 0x60, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x0C, 0x68, 0x4C, 0xEC, 0x1B, 0xEC, 0x01, 0x28, 0xE5, 0xE8, 0x4C, 0xED, 0x10, 0xE9, 0x4C, 0xE9, 0x12, 0xE8, 0x4C, 0xE8, 0x0F, 0x25, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x93, 0xD1, +0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x95, 0xD1, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF1, 0x18, 0x4A, 0x41, 0xE0, 0x60, 0xA0, 0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x40, 0xC0, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0xF1, 0x18, 0x4A, 0x49, 0xE0, 0x80, 0xA2, 0x01, 0x6B, 0x64, 0xE9, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, 0x40, 0xA2, 0x04, 0x2A, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x93, 0xD1, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x95, 0xD1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xE6, 0xD1, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xCD, 0xD1, 0x07, 0x97, 0x06, 0x91, +0x00, 0x18, 0xE8, 0xD1, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x18, 0xCF, 0xD1, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x0C, 0x6B, 0x7B, 0xED, 0x01, 0x2B, 0xE5, 0xE8, 0x05, 0x6E, 0xFF, 0x6A, 0x4C, 0xEC, 0x10, 0xEB, @@ -3809,8 +3810,8 @@ u8 array_mp_8822c_fw_ap[] = { 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xE9, 0x05, 0x67, 0x01, 0x29, 0x00, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0x0C, 0xD2, 0xFF, 0x6C, -0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0x01, 0xD2, +0xB0, 0x67, 0x00, 0x18, 0x0E, 0xD2, 0xFF, 0x6C, +0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0x03, 0xD2, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xAE, 0xEC, 0x01, 0x6A, 0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, @@ -3819,7 +3820,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x22, 0x10, 0x05, 0x92, 0x40, 0xA2, 0x07, 0xD2, 0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, 0x07, 0x94, 0x12, 0x35, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x3F, 0xD2, 0x06, 0x22, 0xFF, 0x6A, +0x00, 0x18, 0x41, 0xD2, 0x06, 0x22, 0xFF, 0x6A, 0x04, 0x30, 0x4C, 0xE8, 0x05, 0x6A, 0x4E, 0xE8, 0x01, 0x10, 0x04, 0x30, 0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x92, 0x01, 0x4A, 0x08, 0x72, 0x04, 0xD2, @@ -3847,16 +3848,16 @@ u8 array_mp_8822c_fw_ap[] = { 0x10, 0xF0, 0x00, 0x6C, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x70, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x81, 0x40, 0x06, 0x6D, -0x00, 0x18, 0x41, 0xD2, 0x60, 0xA0, 0x01, 0x6E, +0x00, 0x18, 0x43, 0xD2, 0x60, 0xA0, 0x01, 0x6E, 0x82, 0x67, 0x66, 0x35, 0x6C, 0xEE, 0x00, 0x18, -0x33, 0xD2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x35, 0xD2, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xC3, 0xD1, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0xC5, 0xD1, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF3, 0x74, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF6, 0x90, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x36, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFE, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, 0x63, 0xF3, 0xB4, 0xA3, 0x04, 0x67, 0x08, 0x6C, 0xAD, 0xEC, @@ -3947,7 +3948,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x08, 0x48, 0xA0, 0xF0, 0x6F, 0xA0, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xA0, 0xF0, 0x4F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF5, 0xAC, 0x9A, -0x01, 0x6C, 0x80, 0x18, 0x8D, 0x5D, 0x30, 0xF0, +0x01, 0x6C, 0x80, 0x18, 0x9A, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF5, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6D, 0x62, 0xF5, 0xAC, 0x9D, 0x80, 0x9A, 0xE1, 0xF7, 0x1F, 0x6B, 0x6C, 0xEC, 0x80, 0xCD, @@ -4117,7 +4118,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x60, 0x9A, 0xFF, 0x6C, 0x01, 0x4C, 0x40, 0x9B, 0x8C, 0xEA, 0x01, 0x22, 0x80, 0xDB, 0xFF, 0x68, 0x01, 0x48, 0x00, 0x6C, 0xB0, 0x67, 0x80, 0x18, -0xC0, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF6, +0xCD, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF6, 0x08, 0x4A, 0xA3, 0xF3, 0xC7, 0xA2, 0x0C, 0x26, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x48, 0x9A, 0x42, 0xF1, 0x1C, 0x6C, 0x01, 0x6D, 0xCC, 0x36, @@ -4153,7 +4154,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x80, 0x18, 0x04, 0x1B, 0xA0, 0xF0, 0x6F, 0xA0, 0x01, 0x6A, 0x01, 0x6C, 0x6D, 0xEA, 0xA0, 0xF0, 0x4F, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF5, -0xAC, 0x9A, 0x80, 0x18, 0x5C, 0x5D, 0x30, 0xF0, +0xAC, 0x9A, 0x80, 0x18, 0x69, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, 0x94, 0x9C, 0x60, 0xA2, 0x07, 0x6A, 0x6C, 0xEA, 0x01, 0x4A, 0x83, 0xF3, @@ -4169,7 +4170,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x60, 0xCF, 0x1D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x49, 0xF2, 0x4E, 0xA2, 0x14, 0x22, 0xFF, 0x69, 0x01, 0x49, 0x00, 0x6C, 0xB1, 0x67, 0x80, 0x18, -0xDD, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, +0xEA, 0x5D, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x60, 0x9A, 0x40, 0x9B, 0x2C, 0xEA, 0x01, 0x22, 0x20, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x58, 0x9A, 0x00, 0x6B, 0x60, 0xC2, 0x80, 0x18, @@ -6711,7 +6712,7 @@ u8 array_mp_8822c_fw_ap[] = { 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0x6C, 0x9B, 0x10, 0xF0, 0x30, 0x6A, 0x0B, 0xF1, 0x15, 0x4A, 0x40, 0xDB, 0x00, 0x1C, -0xAC, 0x39, 0x80, 0x18, 0xFC, 0x5D, 0x05, 0x6C, +0xAC, 0x39, 0x80, 0x18, 0x09, 0x5E, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0xF3, 0x02, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, @@ -6800,7 +6801,7 @@ u8 array_mp_8822c_fw_ap[] = { 0xCD, 0x74, 0x2B, 0x60, 0xC2, 0x74, 0x25, 0x60, 0x30, 0x10, 0x85, 0x67, 0x80, 0x18, 0xC5, 0x14, 0x3F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xAD, 0x16, -0x3B, 0x10, 0x85, 0x67, 0x00, 0x18, 0x5D, 0xD2, +0x3B, 0x10, 0x85, 0x67, 0x00, 0x18, 0x5F, 0xD2, 0x37, 0x10, 0x85, 0x67, 0x80, 0x18, 0x60, 0x02, 0x33, 0x10, 0x85, 0x67, 0x80, 0x18, 0x45, 0x00, 0x2F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xA3, 0x00, @@ -15589,569 +15590,576 @@ u8 array_mp_8822c_fw_ap[] = { 0x68, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, 0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x40, 0x9A, -0x03, 0x6C, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x62, 0xF6, 0x44, 0x9A, 0x00, 0xF5, 0x62, 0x33, -0x8C, 0xEB, 0x40, 0x9A, 0x01, 0x73, 0x42, 0x32, -0x52, 0x32, 0x8C, 0xEA, 0x05, 0x60, 0x0B, 0x2B, -0x02, 0x5A, 0x50, 0x6C, 0x0D, 0x60, 0x03, 0x10, -0x02, 0x5A, 0x0A, 0x60, 0x28, 0x6C, 0x87, 0xEA, -0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0x10, 0x02, 0x5A, -0x28, 0x6C, 0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, -0x50, 0x6C, 0x80, 0x18, 0x77, 0x5E, 0x80, 0x18, -0x8B, 0x02, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, -0x74, 0x9B, 0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF4, 0x6C, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x70, 0x9B, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, -0x7C, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF5, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x62, 0xF6, 0x68, 0x9B, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF6, 0x08, 0x48, -0x00, 0x69, 0xA0, 0xF0, 0x24, 0xD8, 0x40, 0xF1, -0x37, 0xC0, 0x80, 0x18, 0x7D, 0x5B, 0xC0, 0xF0, -0x7C, 0xA0, 0x01, 0x6A, 0x6D, 0xEA, 0xC0, 0xF0, -0x5C, 0xC0, 0x80, 0x18, 0xEB, 0x5C, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF1, -0x34, 0xC0, 0xE9, 0xF1, 0x08, 0x4A, 0xE9, 0xF1, -0x18, 0x4C, 0x00, 0x6B, 0x60, 0xC2, 0x70, 0xC2, -0x01, 0x4A, 0x62, 0x67, 0x8E, 0xEB, 0xF9, 0x2B, +0x30, 0xF0, 0x20, 0x6C, 0x1C, 0x6A, 0xA5, 0xF6, +0x08, 0x4C, 0x63, 0xF3, 0x41, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x62, 0xF6, 0x40, 0x9A, 0x03, 0x6E, +0xFF, 0x6B, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF6, 0x44, 0x9A, 0x00, 0xF5, 0xA2, 0x35, +0xCC, 0xED, 0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, +0xCC, 0xEA, 0x02, 0x6E, 0xAE, 0xEE, 0x0E, 0x26, +0x03, 0x75, 0x11, 0x60, 0x01, 0x75, 0x04, 0x60, +0x02, 0x5A, 0x50, 0x6C, 0x1C, 0x60, 0x03, 0x10, +0x02, 0x5A, 0x19, 0x60, 0x28, 0x6C, 0x87, 0xEA, +0x6C, 0xEC, 0x16, 0x10, 0x2D, 0x6B, 0x23, 0xF3, +0xDC, 0xC4, 0x63, 0xF3, 0x61, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, 0x63, 0xF3, +0x81, 0xA3, 0x2D, 0x74, 0x03, 0x60, 0x55, 0x6C, +0x63, 0xF3, 0x81, 0xC3, 0x02, 0x5A, 0x28, 0x6C, +0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, 0x50, 0x6C, +0x80, 0x18, 0x84, 0x5E, 0x80, 0x18, 0x8B, 0x02, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, 0x74, 0x9B, +0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE2, 0xF4, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE2, 0xF5, 0x70, 0x9B, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, 0x7C, 0x9B, +0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF5, +0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x62, 0xF6, 0x68, 0x9B, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF6, 0x08, 0x48, 0x00, 0x69, 0xA0, 0xF0, +0x24, 0xD8, 0x40, 0xF1, 0x37, 0xC0, 0x80, 0x18, +0x7D, 0x5B, 0xC0, 0xF0, 0x7C, 0xA0, 0x01, 0x6A, +0x6D, 0xEA, 0xC0, 0xF0, 0x5C, 0xC0, 0x80, 0x18, +0xF8, 0x5C, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6C, 0xE3, 0xF1, 0x34, 0xC0, 0xE9, 0xF1, +0x08, 0x4A, 0xE9, 0xF1, 0x18, 0x4C, 0x00, 0x6B, +0x60, 0xC2, 0x70, 0xC2, 0x01, 0x4A, 0x62, 0x67, +0x8E, 0xEB, 0xF9, 0x2B, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF6, 0x08, 0x4A, 0x23, 0xF3, 0x7D, 0xC2, +0x23, 0xF3, 0x7E, 0xC2, 0x23, 0xF3, 0x7F, 0xC2, +0x23, 0xF3, 0x7C, 0xC2, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x80, 0x18, 0x94, 0x5B, +0x80, 0x18, 0x0D, 0x5C, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x50, 0x9A, 0x40, 0xEA, 0x80, 0x18, +0x93, 0x40, 0x00, 0x18, 0x8D, 0xD2, 0x80, 0x18, +0x58, 0x00, 0x80, 0x18, 0x3F, 0x19, 0x00, 0x18, +0x32, 0xCB, 0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, +0x23, 0x6C, 0x01, 0x6F, 0x25, 0xF3, 0x1D, 0x4C, +0x00, 0x6D, 0x64, 0x6E, 0xEB, 0xEF, 0x40, 0xEA, +0x00, 0x18, 0x4F, 0xCB, 0x07, 0x97, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xA5, 0xF6, 0x08, 0x4A, 0x00, 0x6B, 0x40, 0xF6, +0x7A, 0xC2, 0x40, 0xF6, 0x7B, 0xC2, 0x40, 0xF1, +0x77, 0xC2, 0x40, 0xF1, 0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF6, 0x08, 0x4A, -0x23, 0xF3, 0x7D, 0xC2, 0x23, 0xF3, 0x7E, 0xC2, -0x23, 0xF3, 0x7F, 0xC2, 0x23, 0xF3, 0x7C, 0xC2, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x80, 0x18, 0x94, 0x5B, 0x80, 0x18, 0x00, 0x5C, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x50, 0x9A, -0x40, 0xEA, 0x80, 0x18, 0x93, 0x40, 0x00, 0x18, -0x8B, 0xD2, 0x80, 0x18, 0x58, 0x00, 0x80, 0x18, -0x3F, 0x19, 0x00, 0x18, 0x32, 0xCB, 0x00, 0x6A, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, -0x4C, 0x9A, 0x10, 0xF0, 0x23, 0x6C, 0x01, 0x6F, -0x25, 0xF3, 0x1D, 0x4C, 0x00, 0x6D, 0x64, 0x6E, -0xEB, 0xEF, 0x40, 0xEA, 0x00, 0x18, 0x4F, 0xCB, -0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF6, 0x08, 0x4A, -0x00, 0x6B, 0x40, 0xF6, 0x7A, 0xC2, 0x40, 0xF6, -0x7B, 0xC2, 0x40, 0xF1, 0x77, 0xC2, 0x40, 0xF1, -0x78, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA5, 0xF6, 0x08, 0x4A, 0xA3, 0xF4, 0x71, 0xA2, -0x0F, 0x23, 0xA3, 0xF4, 0x70, 0xA2, 0x0C, 0x23, -0xA3, 0xF4, 0x76, 0xA2, 0x09, 0x23, 0xA3, 0xF4, -0x72, 0xA2, 0x06, 0x23, 0xA3, 0xF4, 0x74, 0xA2, -0x03, 0x23, 0xA3, 0xF4, 0x53, 0xA2, 0x1E, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF6, 0x64, 0x9A, -0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, -0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, -0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF6, 0x4C, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x78, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF4, 0x4C, 0x9A, -0x60, 0xDA, 0xF0, 0x17, 0x20, 0xE8, 0x00, 0x65, +0xA3, 0xF4, 0x71, 0xA2, 0x0F, 0x23, 0xA3, 0xF4, +0x70, 0xA2, 0x0C, 0x23, 0xA3, 0xF4, 0x76, 0xA2, +0x09, 0x23, 0xA3, 0xF4, 0x72, 0xA2, 0x06, 0x23, +0xA3, 0xF4, 0x74, 0xA2, 0x03, 0x23, 0xA3, 0xF4, +0x53, 0xA2, 0x1E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x62, 0xF6, 0x64, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x4C, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0xE2, 0xF4, 0x4C, 0x9A, 0x60, 0xDA, 0xF0, 0x17, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x48, 0x98, 0x0A, 0xD4, 0x04, 0x05, +0xE0, 0xF1, 0x14, 0x6C, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x15, 0x6C, +0x30, 0xF0, 0x20, 0x69, 0x40, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0xA5, 0xF6, 0x08, 0x49, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x16, 0x6C, 0x41, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x17, 0x6C, +0x42, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x18, 0x6C, 0x43, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x19, 0x6C, +0x44, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0xBD, 0x67, 0x90, 0xA5, 0xA3, 0xF4, +0x54, 0xA1, 0x0F, 0x6B, 0x8C, 0xEB, 0x50, 0x32, +0x6D, 0xEA, 0x0A, 0x93, 0x04, 0x05, 0xE0, 0xF1, +0x1B, 0x6C, 0x45, 0xC3, 0xC0, 0xF3, 0x48, 0x98, +0x40, 0xEA, 0xA3, 0xF4, 0x56, 0xA1, 0xA3, 0xF4, +0x71, 0xA1, 0x0A, 0x95, 0x4C, 0x32, 0x74, 0x33, +0x6D, 0xEA, 0xA3, 0xF4, 0x70, 0xA1, 0x6D, 0xEA, +0x46, 0xC5, 0xA3, 0xF4, 0x52, 0xA1, 0xA3, 0xF4, +0x73, 0xA1, 0x48, 0x32, 0x78, 0x33, 0x6D, 0xEA, +0x33, 0x6B, 0x6D, 0xEA, 0x47, 0xC5, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x48, 0x98, -0x0A, 0xD4, 0x04, 0x05, 0xE0, 0xF1, 0x14, 0x6C, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x15, 0x6C, 0x30, 0xF0, 0x20, 0x69, -0x40, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0xA5, 0xF6, 0x08, 0x49, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x16, 0x6C, -0x41, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x17, 0x6C, 0x42, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x18, 0x6C, -0x43, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x19, 0x6C, 0x44, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0xBD, 0x67, -0x90, 0xA5, 0xA3, 0xF4, 0x54, 0xA1, 0x0F, 0x6B, -0x8C, 0xEB, 0x50, 0x32, 0x6D, 0xEA, 0x0A, 0x93, -0x04, 0x05, 0xE0, 0xF1, 0x1B, 0x6C, 0x45, 0xC3, -0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0xA3, 0xF4, -0x56, 0xA1, 0xA3, 0xF4, 0x71, 0xA1, 0x0A, 0x95, -0x4C, 0x32, 0x74, 0x33, 0x6D, 0xEA, 0xA3, 0xF4, -0x70, 0xA1, 0x6D, 0xEA, 0x46, 0xC5, 0xA3, 0xF4, -0x52, 0xA1, 0xA3, 0xF4, 0x73, 0xA1, 0x48, 0x32, -0x78, 0x33, 0x6D, 0xEA, 0x33, 0x6B, 0x6D, 0xEA, -0x47, 0xC5, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x48, 0x98, 0x24, 0x67, 0x04, 0x05, -0xE0, 0xF1, 0x10, 0x6C, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x11, 0x6C, -0x40, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, -0x12, 0x6C, 0x41, 0xC1, 0xC0, 0xF3, 0x48, 0x98, +0x24, 0x67, 0x04, 0x05, 0xE0, 0xF1, 0x10, 0x6C, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, -0xE0, 0xF1, 0x13, 0x6C, 0x42, 0xC1, 0xC0, 0xF3, +0xE0, 0xF1, 0x11, 0x6C, 0x40, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x04, 0x05, 0xE0, 0xF1, 0x1C, 0x6C, 0x43, 0xC1, +0x04, 0x05, 0xE0, 0xF1, 0x12, 0x6C, 0x41, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x1D, 0x6C, -0x44, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x13, 0x6C, +0x42, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, -0x1E, 0x6C, 0x45, 0xC1, 0xC0, 0xF3, 0x48, 0x98, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0xE0, 0xF1, -0x1F, 0x6C, 0x04, 0x05, 0x46, 0xC1, 0xC0, 0xF3, +0x1C, 0x6C, 0x43, 0xC1, 0xC0, 0xF3, 0x48, 0x98, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, +0xE0, 0xF1, 0x1D, 0x6C, 0x44, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x47, 0xC1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD0, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, -0x22, 0x5C, 0xA0, 0xF1, 0x02, 0x6A, 0x1F, 0xF7, -0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, -0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF5, 0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF5, 0x68, 0x9B, 0x80, 0xA0, -0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0A, 0x72, -0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x04, 0x00, -0x90, 0x67, 0x80, 0x18, 0x59, 0x5C, 0xA0, 0xF1, -0x0A, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, +0x04, 0x05, 0xE0, 0xF1, 0x1E, 0x6C, 0x45, 0xC1, +0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0xE0, 0xF1, 0x1F, 0x6C, 0x04, 0x05, +0x46, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x7D, 0x67, 0x50, 0xA3, 0x47, 0xC1, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x04, 0x00, +0x90, 0x67, 0x80, 0x18, 0x2F, 0x5C, 0xA0, 0xF1, +0x02, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF5, 0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF5, 0x68, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, -0xA0, 0xF1, 0x0F, 0x72, 0x80, 0xC3, 0x01, 0x48, -0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x5C, 0x9A, 0x19, 0x6B, 0x60, 0xC2, 0x09, 0x97, -0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0xA5, 0xF6, 0x08, 0x48, 0xA3, 0xF4, -0x50, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, -0x07, 0x6A, 0x6C, 0xEA, 0xA3, 0xF4, 0x50, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF6, 0x08, 0x48, -0xA3, 0xF4, 0x51, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x56, 0x32, 0xA3, 0xF4, 0x51, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF6, 0x08, 0x48, -0xA3, 0xF4, 0x56, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, -0x50, 0xA4, 0x18, 0x6B, 0x6C, 0xEA, 0x4F, 0x32, -0xA3, 0xF4, 0x56, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0xA5, 0xF6, 0x08, 0x48, 0xA3, 0xF4, 0x54, 0xA0, +0xA0, 0xF1, 0x0A, 0x72, 0x80, 0xC3, 0x01, 0x48, +0xE8, 0x61, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, +0x66, 0x5C, 0xA0, 0xF1, 0x0A, 0x6A, 0x1F, 0xF7, +0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF5, 0x64, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF5, 0x68, 0x9B, 0x80, 0xA0, +0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0F, 0x72, +0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x5C, 0x9A, 0x19, 0x6B, +0x60, 0xC2, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF6, +0x08, 0x48, 0xA3, 0xF4, 0x50, 0xA0, 0x0E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, +0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, +0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, +0xA3, 0xF4, 0x50, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF6, 0x08, 0x48, 0xA3, 0xF4, 0x51, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1C, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x52, 0x32, -0xA3, 0xF4, 0x54, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0xA5, 0xF6, 0x08, 0x48, 0xA3, 0xF4, 0x52, 0xA0, -0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x03, 0x6A, -0x6C, 0xEA, 0xA3, 0xF4, 0x52, 0xC0, 0x30, 0xF0, -0x20, 0x68, 0xA5, 0xF6, 0x08, 0x48, 0xA3, 0xF4, -0x53, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x30, 0x6B, 0x6C, 0xEA, 0x53, 0x32, 0xA3, 0xF4, -0x53, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x19, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, +0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x56, 0x32, +0xA3, 0xF4, 0x51, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF6, 0x08, 0x48, 0xA3, 0xF4, 0x56, 0xA0, +0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x9D, 0x67, 0x50, 0xA4, 0x18, 0x6B, +0x6C, 0xEA, 0x4F, 0x32, 0xA3, 0xF4, 0x56, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF6, 0x08, 0x48, -0x52, 0x32, 0xA3, 0xF4, 0x54, 0xC0, 0xC0, 0xF3, -0x48, 0x99, 0xE0, 0xF1, 0x1B, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, -0x6C, 0xEA, 0xA3, 0xF4, 0x50, 0xC0, 0x43, 0x67, -0x18, 0x6B, 0x4C, 0xEB, 0x6F, 0x33, 0xA3, 0xF4, -0x76, 0xC0, 0x4F, 0x72, 0x56, 0x33, 0xA3, 0xF4, -0x71, 0xC0, 0x0E, 0x61, 0xC0, 0xF3, 0x48, 0x99, -0xE0, 0xF1, 0x1A, 0x6C, 0x00, 0xF0, 0x11, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x51, 0xA3, 0x57, 0x72, -0x03, 0x61, 0x02, 0x6A, 0xA3, 0xF4, 0x56, 0xC0, +0xA3, 0xF4, 0x54, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1C, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x52, 0x32, 0xA3, 0xF4, 0x54, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF6, 0x08, 0x48, +0xA3, 0xF4, 0x52, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, +0x70, 0xA4, 0x03, 0x6A, 0x6C, 0xEA, 0xA3, 0xF4, +0x52, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0xA5, 0xF6, +0x08, 0x48, 0xA3, 0xF4, 0x53, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, -0x7D, 0x67, 0x90, 0xA3, 0x0C, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x8C, 0xEB, 0xA5, 0xF6, 0x08, 0x4A, -0x6B, 0x33, 0x9A, 0x34, 0xA3, 0xF4, 0x72, 0xC2, -0xA3, 0xF4, 0x93, 0xC2, 0x80, 0x18, 0xA8, 0x5C, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x5C, 0x9A, -0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0xFD, 0x72, -0x02, 0x61, 0x80, 0x18, 0x83, 0x5C, 0x80, 0x18, -0x07, 0x5C, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x54, 0x9A, 0x01, 0x6B, 0x60, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF1, 0x98, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, -0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF5, -0x90, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x60, 0x9A, -0xFD, 0x6A, 0xFF, 0x6C, 0xA0, 0xA3, 0xAC, 0xEA, -0x40, 0xC3, 0x40, 0xA3, 0x01, 0x6D, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0xA2, 0xF6, 0x94, 0x9B, 0x00, 0x6D, 0x02, 0xF0, -0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF6, 0x74, 0x9B, 0x54, 0x34, -0x01, 0x4A, 0x6D, 0xE4, 0x80, 0x72, 0x04, 0x6C, -0x80, 0xC3, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF6, 0x98, 0x9B, -0x80, 0xF2, 0x48, 0x9A, 0x00, 0x6D, 0x00, 0xF4, -0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xA5, 0xF6, 0x08, 0x4B, 0x52, 0x9B, 0x8D, 0xEA, -0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x64, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, -0xB2, 0x9B, 0x8F, 0xEA, 0xAC, 0xEA, 0x52, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x68, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x44, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0x02, 0xF4, 0x0C, 0x4A, 0x89, 0xE2, -0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA5, 0xF6, 0x48, 0x9B, 0xAD, 0xEA, 0xA5, 0xF6, -0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x6C, 0x9B, 0x32, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, 0x41, 0x9B, -0xAD, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x74, 0x9B, 0x21, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, -0x42, 0x9B, 0xAD, 0xEA, 0x42, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x78, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x7C, 0x9B, -0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, -0x08, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x60, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, -0x64, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, 0x44, 0x9B, -0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF1, 0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF1, 0x6C, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x22, 0xF4, -0x00, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x88, 0x9B, -0xAF, 0xEA, 0x8C, 0xEA, 0xA5, 0xF6, 0x48, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x4C, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA5, 0xF6, 0x08, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0x50, 0x9A, 0x23, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, -0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x7C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x58, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA5, 0xF6, 0x08, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF1, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x40, 0x9A, 0xA0, 0xDA, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, -0x08, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, -0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, -0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x48, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, -0x01, 0x74, 0x15, 0x60, 0x03, 0x24, 0x02, 0x74, -0x23, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA5, 0xF6, 0x08, 0x4B, 0x54, 0x9B, 0xAD, 0xEA, -0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, -0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF1, 0x70, 0x9B, 0x21, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, 0x55, 0x9B, -0xAD, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF1, 0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF1, 0x78, 0x9B, 0x10, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, -0x56, 0x9B, 0xAD, 0xEA, 0x56, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF1, 0x7C, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x60, 0x9B, -0x40, 0xDB, 0x20, 0xE8, 0x01, 0x74, 0x16, 0x60, -0x03, 0x24, 0x02, 0x74, 0x25, 0x60, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, -0x94, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x54, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x70, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, -0x40, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA5, 0xF6, 0x08, 0x4B, 0x95, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF1, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x54, 0x9A, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, -0x96, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x56, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x60, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x5C, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF1, 0x8C, 0x9C, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, -0x48, 0xDB, 0xA5, 0xF6, 0x08, 0x4B, 0x41, 0xDB, -0x42, 0xDB, 0x43, 0xDB, 0x44, 0xDB, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF1, 0x94, 0x9C, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF1, -0x9C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF1, 0x84, 0x9C, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0xE3, 0xF1, 0x8C, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF1, 0x90, 0x9C, -0x54, 0xDB, 0x55, 0xDB, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0xE3, 0xF1, 0x98, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF2, 0x80, 0x9C, -0x56, 0xDB, 0x40, 0xDC, 0x52, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x68, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF1, 0x6C, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF1, 0x60, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x68, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC2, 0xF5, -0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF1, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF1, 0x7C, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x64, 0x9B, -0x40, 0xDB, 0x20, 0xE8, 0x1F, 0xF4, 0x0E, 0x6E, -0x30, 0xF0, 0x20, 0x6B, 0xCB, 0xEE, 0xA5, 0xF6, -0xC8, 0xDB, 0xE1, 0xF7, 0x1F, 0x6A, 0xA5, 0xF6, -0x08, 0x4B, 0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6C, -0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, 0x84, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x6C, 0x9B, -0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF1, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF1, 0x64, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x4C, 0x9A, -0x80, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xA5, 0xF6, 0x08, 0x4A, 0x00, 0x6B, 0x72, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x48, 0x9A, -0x60, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0x90, 0x9B, 0x30, 0xF0, 0x20, 0x6A, -0xA5, 0xF6, 0x08, 0x4A, 0xC6, 0x6D, 0xFF, 0x6B, -0xB4, 0xDA, 0x95, 0xDA, 0x76, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF1, 0x50, 0x9A, 0xA0, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x58, 0x9A, -0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, -0x40, 0x9A, 0x60, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xFC, 0x5D, -0x80, 0x18, 0x1B, 0x5E, 0x80, 0x18, 0x33, 0x5E, -0x80, 0x18, 0x4F, 0x5E, 0x80, 0x18, 0x49, 0x5E, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x8B, 0x5E, 0x30, 0xF0, 0x20, 0x6B, -0xA5, 0xF6, 0x08, 0x4B, 0xE2, 0xF5, 0x4C, 0xC3, -0x00, 0x6A, 0xE2, 0xF5, 0x4D, 0xC3, 0x80, 0x18, -0x2C, 0x5D, 0x80, 0x18, 0xC2, 0x5F, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF2, 0x44, 0x9A, 0x3F, 0x6B, -0x60, 0xC2, 0x80, 0x18, 0x1D, 0x5D, 0x80, 0x18, -0x21, 0x5D, 0x80, 0x18, 0x34, 0x5D, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x4B, 0xC6, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x5C, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, -0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0xC2, 0xF5, 0x70, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF2, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x83, 0xF1, 0x84, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF5, 0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, -0x40, 0xAA, 0x4C, 0xEB, 0x62, 0x33, 0x03, 0x6A, -0x72, 0x33, 0x4C, 0xEB, 0x02, 0x6A, 0x04, 0x23, -0x01, 0x73, 0x01, 0x6A, 0x01, 0x60, 0x03, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0x10, 0xF0, 0x23, 0x6A, -0x43, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x63, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xEF, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x27, 0xF2, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x43, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x07, 0xF2, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE5, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x68, 0xF3, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x68, 0xF4, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xC2, 0xF3, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x02, 0xF5, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x25, 0xF1, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE4, 0xF2, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x24, 0xF3, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x45, 0xF6, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xC3, 0xF4, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x03, 0xF7, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x87, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x27, 0xF7, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x44, 0xF4, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x02, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x28, 0xF0, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x22, 0xF0, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0xCC, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x03, 0xF2, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x23, 0xF2, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x03, 0xF2, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x4D, 0xF4, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x08, 0xF5, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x21, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x54, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x62, 0xF7, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x45, 0xF7, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0xF4, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF0, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF6, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF0, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF1, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x09, 0xF2, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x69, 0xF3, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF6, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x21, 0xF0, 0x00, 0x4B, 0x80, 0xF2, 0x08, 0x4A, -0x13, 0x10, 0x80, 0x9A, 0x10, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0xE2, 0xF5, 0xB4, 0x9C, 0x30, 0xF0, -0x20, 0x6E, 0x62, 0xF5, 0xDC, 0x9E, 0x80, 0x9D, -0xCD, 0xEC, 0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6C, -0x42, 0xF5, 0x94, 0x9C, 0x40, 0xDC, 0x04, 0x4A, -0x43, 0xEB, 0xEB, 0x60, 0x20, 0xE8, 0x00, 0x65, +0x7D, 0x67, 0x50, 0xA3, 0x30, 0x6B, 0x6C, 0xEA, +0x53, 0x32, 0xA3, 0xF4, 0x53, 0xC0, 0x07, 0x97, +0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xD5, 0xE3, 0xF2, 0xA8, 0x9B, -0xFF, 0x6A, 0x40, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, -0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, -0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x4C, 0x9A, -0x00, 0xAA, 0x04, 0x92, 0x2C, 0xE8, 0x2A, 0xEA, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x44, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x04, 0x93, -0x2C, 0xEA, 0x6C, 0xE8, 0x07, 0xEA, 0x2C, 0xE8, -0x50, 0x67, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, -0x2C, 0xED, 0xFF, 0x68, 0x0C, 0xEC, 0x2C, 0xEE, -0x2A, 0xED, 0x05, 0xD4, 0x04, 0xD5, 0x06, 0xD6, -0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, -0x68, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, -0x0C, 0xEA, 0x8C, 0xEA, 0x05, 0x94, 0x8D, 0xEA, -0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF0, 0x84, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF5, 0x9C, 0x9C, -0x8D, 0xEA, 0xCD, 0xEA, 0x40, 0xDB, 0x34, 0x10, -0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x3E, 0x5F, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, -0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF2, 0x88, 0x9B, 0x40, 0x6D, -0xAB, 0xED, 0x60, 0xA4, 0x2C, 0xEA, 0x0C, 0xEB, -0xAC, 0xEB, 0x05, 0x95, 0xAD, 0xEB, 0x0C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, -0x8C, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF0, -0xA4, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0x42, 0xF5, 0xBC, 0x9D, -0xC4, 0xEA, 0x46, 0x67, 0xAD, 0xEB, 0x04, 0x95, -0x07, 0x96, 0xAC, 0xEA, 0xAF, 0xED, 0xCC, 0xED, -0xAD, 0xEA, 0x2C, 0xEA, 0x4D, 0xEB, 0x60, 0xDC, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x48, 0x99, +0xE0, 0xF1, 0x19, 0x6C, 0x04, 0x05, 0x40, 0xEA, +0x7D, 0x67, 0x50, 0xA3, 0x30, 0xF0, 0x20, 0x68, +0xA5, 0xF6, 0x08, 0x48, 0x52, 0x32, 0xA3, 0xF4, +0x54, 0xC0, 0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, +0x1B, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, +0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, 0xA3, 0xF4, +0x50, 0xC0, 0x43, 0x67, 0x18, 0x6B, 0x4C, 0xEB, +0x6F, 0x33, 0xA3, 0xF4, 0x76, 0xC0, 0x4F, 0x72, +0x56, 0x33, 0xA3, 0xF4, 0x71, 0xC0, 0x0E, 0x61, +0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x1A, 0x6C, +0x00, 0xF0, 0x11, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x51, 0xA3, 0x57, 0x72, 0x03, 0x61, 0x02, 0x6A, +0xA3, 0xF4, 0x56, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, +0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x90, 0xA3, +0x0C, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xEB, +0xA5, 0xF6, 0x08, 0x4A, 0x6B, 0x33, 0x9A, 0x34, +0xA3, 0xF4, 0x72, 0xC2, 0xA3, 0xF4, 0x93, 0xC2, +0x80, 0x18, 0xB5, 0x5C, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x5C, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, +0x6C, 0xEA, 0xFD, 0x72, 0x02, 0x61, 0x80, 0x18, +0x90, 0x5C, 0x80, 0x18, 0x14, 0x5C, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x54, 0x9A, +0x01, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x98, 0x9A, +0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x02, 0xF5, 0x90, 0x9A, 0x08, 0x6D, +0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF1, 0x60, 0x9A, 0xFD, 0x6A, 0xFF, 0x6C, +0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x40, 0xA3, +0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x48, 0x9A, 0xA2, 0xF6, 0x94, 0x9B, +0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, 0x40, 0xEA, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF6, +0x74, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x6D, 0xE4, +0x80, 0x72, 0x04, 0x6C, 0x80, 0xC3, 0xF5, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0xC2, 0xF6, 0x98, 0x9B, 0x80, 0xF2, 0x48, 0x9A, +0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, +0x52, 0x9B, 0x8D, 0xEA, 0x52, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x64, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x68, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF6, 0x08, 0x4B, 0xB2, 0x9B, 0x8F, 0xEA, +0xAC, 0xEA, 0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF1, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF1, 0x44, 0x9A, 0x80, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x5E, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x02, 0xF4, +0x0C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x48, 0x9B, +0xAD, 0xEA, 0xA5, 0xF6, 0x48, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x6C, 0x9B, +0x32, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, +0x08, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x70, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0x74, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF6, 0x08, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, +0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF1, 0x7C, 0x9B, 0x10, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, 0x43, 0x9B, +0xAD, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF1, 0x64, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, +0x08, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x68, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, +0x6C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x05, 0x5C, 0x63, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0x22, 0xF4, 0x00, 0x4A, 0x89, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF6, 0x88, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0xA5, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF1, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x4C, 0x9A, 0x35, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, +0x81, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x74, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, +0x50, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF6, 0x08, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF1, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF1, 0x58, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, +0x83, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x64, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0x40, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, 0x84, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0x44, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF1, 0x6C, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0x48, 0x9A, +0xA0, 0xDA, 0x20, 0xE8, 0x01, 0x74, 0x15, 0x60, +0x03, 0x24, 0x02, 0x74, 0x23, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, +0x54, 0x9B, 0xAD, 0xEA, 0x54, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF5, 0x60, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x70, 0x9B, +0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, +0x08, 0x4B, 0x55, 0x9B, 0xAD, 0xEA, 0x55, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x74, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, +0x78, 0x9B, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF6, 0x08, 0x4B, 0x56, 0x9B, 0xAD, 0xEA, +0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, +0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF2, 0x60, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x01, 0x74, 0x16, 0x60, 0x03, 0x24, 0x02, 0x74, +0x25, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF6, 0x08, 0x4B, 0x94, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC2, 0xF5, 0x40, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, +0x95, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x55, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x78, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0x54, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA5, 0xF6, 0x08, 0x4B, 0x96, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF2, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF1, 0x5C, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, +0xC3, 0xF1, 0x8C, 0x9C, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xA5, 0xF6, 0x48, 0xDB, 0xA5, 0xF6, +0x08, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, +0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xC3, 0xF1, 0x94, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF1, 0x9C, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF1, 0x84, 0x9C, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF1, +0x8C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xE3, 0xF1, 0x90, 0x9C, 0x54, 0xDB, 0x55, 0xDB, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF1, +0x98, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF2, 0x80, 0x9C, 0x56, 0xDB, 0x40, 0xDC, +0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, 0x6C, 0x9B, +0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x70, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x78, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, +0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC2, 0xF5, 0x60, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, 0x74, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, +0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF1, 0x64, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x1F, 0xF4, 0x0E, 0x6E, 0x30, 0xF0, 0x20, 0x6B, +0xCB, 0xEE, 0xA5, 0xF6, 0xC8, 0xDB, 0xE1, 0xF7, +0x1F, 0x6A, 0xA5, 0xF6, 0x08, 0x4B, 0x08, 0xF0, +0x00, 0x6D, 0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, +0xA1, 0xDB, 0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF1, 0x6C, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x74, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, 0x7C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF1, +0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF1, 0x4C, 0x9A, 0x80, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF6, 0x08, 0x4A, +0x00, 0x6B, 0x72, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xC3, 0xF1, 0x48, 0x9A, 0x60, 0xDA, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x90, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF6, 0x08, 0x4A, +0xC6, 0x6D, 0xFF, 0x6B, 0xB4, 0xDA, 0x95, 0xDA, +0x76, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, +0x50, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF1, 0x58, 0x9A, 0x80, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF2, 0x40, 0x9A, 0x60, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0x09, 0x5E, 0x80, 0x18, 0x28, 0x5E, +0x80, 0x18, 0x40, 0x5E, 0x80, 0x18, 0x5C, 0x5E, +0x80, 0x18, 0x56, 0x5E, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x98, 0x5E, +0x30, 0xF0, 0x20, 0x6B, 0xA5, 0xF6, 0x08, 0x4B, +0xE2, 0xF5, 0x4C, 0xC3, 0x00, 0x6A, 0xE2, 0xF5, +0x4D, 0xC3, 0x80, 0x18, 0x39, 0x5D, 0x80, 0x18, +0xCF, 0x5F, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, +0x44, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x80, 0x18, +0x2A, 0x5D, 0x80, 0x18, 0x2E, 0x5D, 0x80, 0x18, +0x41, 0x5D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x4B, 0xC6, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, 0x5C, 0x9A, +0xE0, 0xF1, 0x1B, 0x6B, 0x6B, 0xEB, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0xC2, 0xF5, 0x70, 0x9A, +0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF2, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, 0x84, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF5, 0x44, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x4C, 0xEB, +0x62, 0x33, 0x03, 0x6A, 0x72, 0x33, 0x4C, 0xEB, +0x02, 0x6A, 0x04, 0x23, 0x01, 0x73, 0x01, 0x6A, +0x01, 0x60, 0x03, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x10, 0xF0, 0x23, 0x6A, 0x43, 0xF2, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x63, 0xF2, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x2F, 0xF2, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x50, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x27, 0xF2, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x48, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x43, 0xF1, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x07, 0xF2, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE5, 0xF2, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x50, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x68, 0xF3, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x68, 0xF4, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xC2, 0xF3, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x58, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x02, 0xF5, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x25, 0xF1, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE4, 0xF2, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x24, 0xF3, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x45, 0xF6, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xC3, 0xF4, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x03, 0xF7, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x87, 0xF6, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x27, 0xF7, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x44, 0xF4, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x02, 0xF0, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x58, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x28, 0xF0, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x22, 0xF0, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x50, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0xCC, 0xF6, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x03, 0xF2, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x23, 0xF2, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x03, 0xF2, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x48, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x4D, 0xF4, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x40, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x08, 0xF5, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x50, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x21, 0xF6, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x54, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x62, 0xF7, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x45, 0xF7, 0x0C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0xF4, 0x1C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, 0x64, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF0, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF1, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF2, 0x0C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x69, 0xF3, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF0, 0x00, 0x4B, +0x80, 0xF2, 0x08, 0x4A, 0x13, 0x10, 0x80, 0x9A, +0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0xE2, 0xF5, +0xB4, 0x9C, 0x30, 0xF0, 0x20, 0x6E, 0x62, 0xF5, +0xDC, 0x9E, 0x80, 0x9D, 0xCD, 0xEC, 0x80, 0xDD, +0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF5, 0x94, 0x9C, +0x40, 0xDC, 0x04, 0x4A, 0x43, 0xEB, 0xEB, 0x60, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, +0x2C, 0xED, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD5, +0xE3, 0xF2, 0xA8, 0x9B, 0xFF, 0x6A, 0x40, 0x6E, +0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, +0xCC, 0xEB, 0x6D, 0xEC, 0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x10, 0xF0, -0x00, 0x6D, 0x80, 0x18, 0x3E, 0x5F, 0x05, 0x97, -0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0xE2, 0xF4, 0x6C, 0x9B, 0x10, 0xF0, -0x31, 0x6A, 0x4F, 0xF6, 0x19, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x31, 0x10, 0x82, 0xF3, 0x08, 0x70, -0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, -0x74, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA5, 0xF6, 0x08, 0x4A, 0x63, 0xF3, 0x64, 0x9A, -0x8D, 0xEB, 0x63, 0xF3, 0x64, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF5, 0x5C, 0x9A, 0x03, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x18, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x40, 0xEA, 0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF1, 0x48, 0x9A, 0x60, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x2A, 0x80, 0x18, -0x90, 0x5F, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF5, 0x5C, 0x9A, 0x02, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0xE2, 0xF4, 0x6C, 0x9B, 0x10, 0xF0, 0x31, 0x6A, -0x4F, 0xF6, 0x1A, 0x4A, 0x40, 0xDB, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF2, 0x70, 0x9A, 0x02, 0x6C, -0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0x9B, 0xFF, 0x6E, -0x41, 0x4E, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x62, 0xF5, 0x64, 0x9A, 0xE0, 0xF3, -0x1E, 0x4C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xAB, -0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xCB, -0x02, 0x6C, 0x80, 0x18, 0x59, 0x5F, 0x80, 0xF3, -0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, 0x00, 0x6C, -0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0x59, 0x5F, -0x00, 0x6C, 0xC4, 0x67, 0x02, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0x59, 0x5F, 0x00, 0x6C, 0xC4, 0x67, -0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x59, 0x5F, -0x00, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0x59, 0x5F, 0x10, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0x59, 0x5F, -0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x74, 0x9A, -0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xC9, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF2, 0x4C, 0x9A, 0x00, 0xAA, 0x04, 0x92, +0x2C, 0xE8, 0x2A, 0xEA, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x04, 0x94, +0x40, 0xEA, 0x04, 0x93, 0x2C, 0xEA, 0x6C, 0xE8, +0x07, 0xEA, 0x2C, 0xE8, 0x50, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0xFF, 0x68, +0x0C, 0xEC, 0x2C, 0xEE, 0x2A, 0xED, 0x05, 0xD4, +0x04, 0xD5, 0x06, 0xD6, 0x1F, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF2, 0x68, 0x9A, 0x40, 0x6C, +0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, 0x8C, 0xEA, +0x05, 0x94, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x6C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF0, 0x84, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x42, 0xF5, 0x9C, 0x9C, 0x8D, 0xEA, 0xCD, 0xEA, +0x40, 0xDB, 0x34, 0x10, 0x05, 0x94, 0xB1, 0x67, +0x80, 0x18, 0x4B, 0x5F, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x94, 0xA0, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF2, +0x88, 0x9B, 0x40, 0x6D, 0xAB, 0xED, 0x60, 0xA4, +0x2C, 0xEA, 0x0C, 0xEB, 0xAC, 0xEB, 0x05, 0x95, +0xAD, 0xEB, 0x0C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF2, 0x8C, 0x9B, 0x30, 0xF0, +0x20, 0x6D, 0x63, 0xF0, 0xA4, 0x9D, 0x60, 0x9C, +0x06, 0x96, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x42, 0xF5, 0xBC, 0x9D, 0xC4, 0xEA, 0x46, 0x67, +0xAD, 0xEB, 0x04, 0x95, 0x07, 0x96, 0xAC, 0xEA, +0xAF, 0xED, 0xCC, 0xED, 0xAD, 0xEA, 0x2C, 0xEA, +0x4D, 0xEB, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, +0x4B, 0x5F, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, +0x6C, 0x9B, 0x10, 0xF0, 0x31, 0x6A, 0x8F, 0xF6, +0x0D, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x31, 0x10, +0x82, 0xF3, 0x08, 0x70, 0x1A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF5, 0x74, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF6, 0x08, 0x4A, +0x63, 0xF3, 0x64, 0x9A, 0x8D, 0xEB, 0x63, 0xF3, +0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, +0x5C, 0x9A, 0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x18, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, +0x48, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x04, 0x2A, 0x80, 0x18, 0x9D, 0x5F, 0x01, 0x72, +0xCB, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, +0x5C, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0xE2, 0xF4, 0x6C, 0x9B, +0x10, 0xF0, 0x31, 0x6A, 0x8F, 0xF6, 0x0E, 0x4A, +0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, +0x70, 0x9A, 0x02, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, +0x40, 0x9B, 0xFF, 0x6E, 0x41, 0x4E, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x62, 0xF5, +0x64, 0x9A, 0xE0, 0xF3, 0x1E, 0x4C, 0x30, 0xF0, +0x20, 0x68, 0x40, 0xAB, 0xAC, 0xEA, 0x8D, 0xEA, +0xAC, 0xEA, 0x40, 0xCB, 0x02, 0x6C, 0x80, 0x18, +0x66, 0x5F, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, +0x40, 0xEA, 0x00, 0x6C, 0xC0, 0x6D, 0x02, 0x6E, +0x80, 0x18, 0x66, 0x5F, 0x00, 0x6C, 0xC4, 0x67, +0x02, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x66, 0x5F, +0x00, 0x6C, 0xC4, 0x67, 0x0C, 0xF0, 0x00, 0x6D, +0x80, 0x18, 0x66, 0x5F, 0x00, 0x6C, 0x01, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0x66, 0x5F, +0x10, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x00, 0x6C, +0x80, 0x18, 0x66, 0x5F, 0x80, 0xF3, 0x4C, 0x98, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF2, 0x74, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0xD9, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u32 array_length_mp_8822c_fw_ap = 128912; +u32 array_length_mp_8822c_fw_ap = 128976; #endif /*defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP))*/ #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) || (DM_ODM_SUPPORT_TYPE & (ODM_CE)) u8 array_mp_8822c_fw_nic[] = { -0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x00, -0x0F, 0x12, 0x23, 0xA2, 0x00, 0x00, 0x00, 0x00, -0x09, 0x18, 0x0F, 0x16, 0xE5, 0x07, 0x00, 0x00, +0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x01, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x09, 0x07, 0x0D, 0x2D, 0xE6, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x20, 0x46, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0xA8, 0xCE, 0x00, 0x00, 0x38, 0xE7, 0x01, 0x00, +0xB0, 0xCE, 0x00, 0x00, 0x70, 0xE7, 0x01, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, @@ -16879,11 +16887,11 @@ u8 array_mp_8822c_fw_nic[] = { 0x61, 0x85, 0x11, 0x80, 0x67, 0x85, 0x11, 0x80, 0xB3, 0x85, 0x11, 0x80, 0xC1, 0x85, 0x11, 0x80, 0xD9, 0x85, 0x11, 0x80, 0xFB, 0x85, 0x11, 0x80, -0x29, 0xD9, 0x11, 0x80, 0x4B, 0xD9, 0x11, 0x80, -0x6D, 0xD9, 0x11, 0x80, 0x8F, 0xD9, 0x11, 0x80, -0xB3, 0xD9, 0x11, 0x80, 0xED, 0xD9, 0x11, 0x80, -0x11, 0xDA, 0x11, 0x80, 0x35, 0xDA, 0x11, 0x80, -0x59, 0xDA, 0x11, 0x80, 0x7F, 0xDA, 0x11, 0x80, +0x5D, 0xD9, 0x11, 0x80, 0x7F, 0xD9, 0x11, 0x80, +0xA1, 0xD9, 0x11, 0x80, 0xC3, 0xD9, 0x11, 0x80, +0xE7, 0xD9, 0x11, 0x80, 0x21, 0xDA, 0x11, 0x80, +0x45, 0xDA, 0x11, 0x80, 0x69, 0xDA, 0x11, 0x80, +0x8D, 0xDA, 0x11, 0x80, 0xB3, 0xDA, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, 0x40, 0x00, 0x00, 0x00, 0xE0, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0x00, 0x00, 0x45, 0x93, 0x11, 0x80, @@ -18397,7 +18405,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, -0xFC, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xB4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x21, 0x6C, 0x00, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x94, 0xB8, 0x00, 0x65, 0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, 0x94, 0xB9, @@ -18425,10 +18433,10 @@ u8 array_mp_8822c_fw_nic[] = { 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xC0, 0xF0, 0x01, 0x4A, 0x40, 0xDB, -0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0x80, 0x77, -0x80, 0x18, 0x80, 0x74, 0x80, 0x18, 0xA7, 0x74, -0x80, 0x18, 0x51, 0x77, 0x80, 0x18, 0xC1, 0x74, -0x80, 0x18, 0x48, 0x77, 0x00, 0x18, 0x67, 0xC3, +0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0x8D, 0x77, +0x80, 0x18, 0x80, 0x74, 0x80, 0x18, 0xB4, 0x74, +0x80, 0x18, 0x5E, 0x77, 0x80, 0x18, 0xCE, 0x74, +0x80, 0x18, 0x55, 0x77, 0x00, 0x18, 0x67, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x41, 0xF7, @@ -18443,7 +18451,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x1D, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x98, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, 0x4C, 0xDB, 0x80, 0x18, -0x78, 0x79, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x85, 0x79, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x70, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, @@ -19988,8 +19996,8 @@ u8 array_mp_8822c_fw_nic[] = { 0xA0, 0xF1, 0x60, 0xA2, 0xA0, 0xF1, 0x41, 0xA2, 0x6E, 0xEA, 0x10, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x50, 0x9A, 0x60, 0xA2, 0x0F, 0x6A, -0x6C, 0xEA, 0x08, 0x2A, 0x00, 0x18, 0xDD, 0xF1, -0x05, 0x2A, 0x00, 0x18, 0xDD, 0xF1, 0x01, 0x5A, +0x6C, 0xEA, 0x08, 0x2A, 0x00, 0x18, 0xDE, 0xF1, +0x05, 0x2A, 0x00, 0x18, 0xDE, 0xF1, 0x01, 0x5A, 0x58, 0x67, 0x01, 0x10, 0x00, 0x6A, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x6E, 0xF6, 0x47, 0xA2, @@ -20142,7 +20150,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x0A, 0x10, 0x04, 0x6C, 0xF0, 0x6D, 0x07, 0x10, 0x04, 0x6C, 0x01, 0xF7, 0x00, 0x6D, 0x03, 0x10, 0x04, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x80, 0x18, -0x45, 0x76, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, +0x52, 0x76, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x78, 0x9A, 0xFF, 0x6C, 0x07, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x25, 0x10, 0x05, 0x5C, 0x1D, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, @@ -20152,7 +20160,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x0F, 0x6D, 0x0A, 0x10, 0x04, 0x6C, 0xF0, 0x6D, 0x07, 0x10, 0x04, 0x6C, 0x01, 0xF7, 0x00, 0x6D, 0x03, 0x10, 0x04, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0x76, 0x76, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0x18, 0x83, 0x76, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF1, 0x78, 0x9A, 0xF8, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, @@ -20166,7 +20174,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0xC3, 0xF1, 0xB4, 0x9A, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0xB8, 0x9A, 0x04, 0x6C, -0x80, 0x18, 0x45, 0x76, 0x26, 0x10, 0x05, 0x5C, +0x80, 0x18, 0x52, 0x76, 0x26, 0x10, 0x05, 0x5C, 0x24, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0xE2, 0xF0, 0x04, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x00, 0x6C, 0x08, 0x6D, 0x17, 0x10, @@ -20176,7 +20184,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0xC3, 0xF1, 0xB4, 0x9A, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0xB8, 0x9A, 0x04, 0x6C, 0x80, 0x18, -0x76, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x83, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0xC3, 0xF1, 0x7C, 0x9B, 0x4C, 0xEC, 0x04, 0xD4, 0x20, 0xA3, @@ -21985,12 +21993,12 @@ u8 array_mp_8822c_fw_nic[] = { 0x71, 0xC2, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x1A, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x07, 0x6A, -0x4F, 0xCB, 0x80, 0x18, 0x42, 0x75, 0x30, 0xF0, +0x4F, 0xCB, 0x80, 0x18, 0x4F, 0x75, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x19, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x08, 0x6A, -0x4F, 0xCB, 0x80, 0x18, 0x0B, 0x75, 0x30, 0xF0, +0x4F, 0xCB, 0x80, 0x18, 0x18, 0x75, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, @@ -23391,60 +23399,60 @@ u8 array_mp_8822c_fw_nic[] = { 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x44, 0x32, 0xFF, 0x4A, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, -0x80, 0x18, 0xA9, 0x76, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xB6, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0xFF, 0x4A, 0x44, 0x32, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, -0x80, 0x18, 0xA9, 0x76, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xB6, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x44, 0x32, 0xFF, 0x4A, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, -0x80, 0x18, 0xC6, 0x76, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xD3, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0xFF, 0x4A, 0x44, 0x32, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, -0x80, 0x18, 0xC6, 0x76, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0xD3, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x80, 0x18, -0x45, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x52, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, -0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0x45, 0x76, +0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0x52, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xF5, 0xE6, 0x01, 0x6D, 0x02, 0x6C, -0xA4, 0xEA, 0x80, 0x18, 0x45, 0x76, 0x05, 0x97, +0xA4, 0xEA, 0x80, 0x18, 0x52, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xF5, 0xE6, 0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x80, 0x18, -0x45, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x52, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, -0xA2, 0x67, 0x80, 0x18, 0x45, 0x76, 0x05, 0x97, +0xA2, 0x67, 0x80, 0x18, 0x52, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x80, 0x18, -0x76, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x83, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, -0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0x76, 0x76, +0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0x83, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xF5, 0xE6, 0x01, 0x6D, 0x02, 0x6C, -0xA4, 0xEA, 0x80, 0x18, 0x76, 0x76, 0x05, 0x97, +0xA4, 0xEA, 0x80, 0x18, 0x83, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xF5, 0xE6, 0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x80, 0x18, -0x76, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x83, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, -0xA2, 0x67, 0x80, 0x18, 0x76, 0x76, 0x05, 0x97, +0xA2, 0x67, 0x80, 0x18, 0x83, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x24, 0x6A, 0xB3, 0xF5, 0x1D, 0x4A, @@ -24605,413 +24613,414 @@ u8 array_mp_8822c_fw_nic[] = { 0xCB, 0xEE, 0xAC, 0xEB, 0xCD, 0xEB, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, 0x70, 0x9B, 0x00, 0x6C, 0x80, 0xC3, 0x00, 0x6C, -0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, +0x14, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, 0x8C, 0x9B, 0x7F, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, -0x84, 0xF1, 0x70, 0x9B, 0x1C, 0x6C, 0x80, 0xC3, -0x08, 0xF4, 0x13, 0x6C, 0x30, 0xF0, 0x20, 0x6B, -0x84, 0xF1, 0x74, 0x9B, 0x80, 0xCB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF1, 0x94, 0x9B, 0xF7, 0x6B, -0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, -0x0D, 0x97, 0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF1, 0x5C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, -0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0x63, 0xF2, -0x60, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF1, 0x5C, 0x9A, 0x8C, 0x34, -0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0x63, 0xF2, 0x74, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, -0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, -0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF1, 0x5C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, -0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0x03, 0xF2, -0x74, 0x9B, 0x6D, 0xEA, 0x0C, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF1, 0x5C, 0x9A, 0x8C, 0x34, -0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, -0x83, 0xF2, 0x74, 0x9B, 0x6C, 0xEA, 0x40, 0xDC, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0x84, 0xF1, 0x5C, 0x9A, 0x6C, 0xEC, -0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, -0x40, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0xFF, 0x6B, 0x84, 0xF1, 0x5C, 0x9A, 0x6C, 0xEC, -0x8C, 0x34, 0x51, 0xE4, 0x40, 0x9C, 0x01, 0x6C, -0x00, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x00, 0x68, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0x91, 0xF0, 0x90, 0x67, 0x01, 0x6D, -0x01, 0x48, 0x00, 0x18, 0xA1, 0xF0, 0x0B, 0x70, -0xF5, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, -0x0C, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, -0x0A, 0x69, 0x12, 0xED, 0x4C, 0xED, 0x04, 0xD5, -0xFF, 0x68, 0x2C, 0xE8, 0x90, 0x67, 0x00, 0x18, -0xB1, 0xF0, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, -0x20, 0x31, 0x90, 0x67, 0x01, 0x6D, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x18, 0xA1, 0xF0, 0x41, 0x41, -0xEF, 0x2A, 0x01, 0x69, 0x2B, 0xE9, 0x09, 0x10, -0x04, 0x94, 0xFF, 0x49, 0x00, 0x6D, 0x00, 0xF6, -0x20, 0x31, 0x00, 0x18, 0xA1, 0xF0, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x51, 0xF5, 0x60, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0xFF, 0x6A, 0x0C, 0x68, 0x4C, 0xEC, 0x1B, 0xEC, -0x01, 0x28, 0xE5, 0xE8, 0x4C, 0xED, 0x10, 0xE9, -0x4C, 0xE9, 0x12, 0xE8, 0x4C, 0xE8, 0x0F, 0x25, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x91, 0xF0, -0x30, 0xF0, 0x20, 0x6A, 0xE7, 0xF7, 0x0C, 0x4A, -0x41, 0xE0, 0x60, 0xA0, 0x01, 0x6A, 0x44, 0xE9, -0x6D, 0xEA, 0x40, 0xC0, 0x11, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xE7, 0xF7, 0x0C, 0x4A, 0x49, 0xE0, -0x80, 0xA2, 0x01, 0x6B, 0x64, 0xE9, 0x6F, 0xEB, -0x8C, 0xEB, 0x60, 0xC2, 0x40, 0xA2, 0x04, 0x2A, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x91, 0xF0, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, -0x0C, 0xE9, 0xAC, 0xE8, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xE4, 0xF0, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xCB, 0xF0, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x0C, 0x6B, 0x7B, 0xED, 0x01, 0x2B, 0xE5, 0xE8, -0x05, 0x6E, 0xFF, 0x6A, 0x4C, 0xEC, 0x10, 0xEB, -0x12, 0xED, 0x4C, 0xED, 0xD8, 0xEB, 0x12, 0xEB, -0x4C, 0xEB, 0x1E, 0x73, 0x1D, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xA4, 0xF1, 0x60, 0x9A, 0xAC, 0x35, -0x30, 0xF0, 0x20, 0x6E, 0x6D, 0xE5, 0x40, 0x9B, -0x03, 0xF3, 0xDC, 0x9E, 0xCC, 0xEA, 0x80, 0xF7, -0x80, 0x36, 0xCD, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF1, 0x5C, 0x9A, 0x08, 0x6B, -0x6B, 0xEB, 0x55, 0xE5, 0x40, 0x9D, 0x8A, 0x34, -0x6C, 0xEA, 0x07, 0x6B, 0x6C, 0xEC, 0x1E, 0x10, -0x20, 0x5B, 0x0C, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF1, 0x40, 0x9A, 0x1F, 0x6E, 0xAC, 0x35, -0xE6, 0x67, 0x55, 0xE5, 0xE4, 0xEB, 0x40, 0x9D, -0xEF, 0xEF, 0x0D, 0x10, 0xE0, 0x4B, 0x4C, 0xEB, +0x0E, 0xF4, 0x85, 0xA3, 0x30, 0xF0, 0x20, 0x6B, +0x84, 0xF1, 0x70, 0x9B, 0x80, 0xC3, 0x08, 0xF4, +0x13, 0x6C, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF1, +0x74, 0x9B, 0x80, 0xCB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF1, 0x94, 0x9B, 0xF7, 0x6B, 0x91, 0xE2, +0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x0D, 0x97, +0x0C, 0x91, 0x0B, 0x90, 0x07, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x5C, 0x9A, -0xAC, 0x35, 0x1F, 0x6E, 0x55, 0xE5, 0xE0, 0x9D, -0x46, 0x67, 0x44, 0xEB, 0x4F, 0xEA, 0xCC, 0xEC, -0xEC, 0xEA, 0x84, 0xEB, 0x8D, 0xEA, 0x40, 0xDD, -0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, -0xCC, 0xE9, 0x05, 0x67, 0x01, 0x29, 0x00, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0x0A, 0xF1, 0xFF, 0x6C, -0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0xFF, 0xF0, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xAE, 0xEC, 0x01, 0x6A, -0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0x6A, 0xAC, 0xEA, -0x06, 0xD2, 0x05, 0xD4, 0x00, 0x69, 0x1F, 0x68, -0x22, 0x10, 0x05, 0x92, 0x40, 0xA2, 0x07, 0xD2, -0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, 0x07, 0x94, -0x12, 0x35, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0x3D, 0xF1, 0x06, 0x22, 0xFF, 0x6A, -0x04, 0x30, 0x4C, 0xE8, 0x05, 0x6A, 0x4E, 0xE8, -0x01, 0x10, 0x04, 0x30, 0xFF, 0x6A, 0x4C, 0xE8, -0x04, 0x92, 0x01, 0x4A, 0x08, 0x72, 0x04, 0xD2, -0xE9, 0x61, 0xFF, 0x6A, 0x01, 0x49, 0x4C, 0xE9, -0x05, 0x92, 0x01, 0x4A, 0x05, 0xD2, 0x06, 0x92, -0x43, 0xE9, 0xDB, 0x61, 0x1F, 0x6A, 0x4E, 0xE8, -0x0C, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0x60, 0xA4, 0x01, 0x6A, 0x04, 0x67, -0x6C, 0xEA, 0x44, 0x22, 0x66, 0x32, 0x30, 0xF0, -0x20, 0x6B, 0xA4, 0xF1, 0x64, 0x9B, 0x54, 0x32, -0x69, 0xE2, 0x61, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x68, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x62, 0xA4, -0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0xA4, 0xF1, 0x6C, 0x9B, 0x46, 0x32, 0x54, 0x32, -0x69, 0xE2, 0x63, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x70, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x64, 0xA4, -0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, -0xA4, 0xF1, 0x74, 0x9B, 0x46, 0x32, 0x54, 0x32, -0x69, 0xE2, 0x65, 0xA4, 0x60, 0xC2, 0x40, 0xA4, -0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x78, 0x9B, -0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x66, 0xA4, -0x10, 0xF0, 0x00, 0x6C, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF0, 0x70, 0x9A, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x81, 0x40, 0x06, 0x6D, -0x00, 0x18, 0x3F, 0xF1, 0x60, 0xA0, 0x01, 0x6E, -0x82, 0x67, 0x66, 0x35, 0x6C, 0xEE, 0x00, 0x18, -0x31, 0xF1, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xC1, 0xF0, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF1, 0x7C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, -0x80, 0xAB, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, -0x43, 0xF2, 0x80, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, -0x43, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, -0x45, 0xC3, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xC4, 0xF1, 0x40, 0x9A, 0xFF, 0x6E, 0xA0, 0x9A, -0x0F, 0x6A, 0x40, 0xF5, 0xA2, 0x33, 0x4C, 0xEB, -0x45, 0x67, 0xCC, 0xEA, 0x08, 0x72, 0x80, 0xF7, -0xA2, 0x34, 0x15, 0x60, 0x09, 0x5A, 0x07, 0x60, -0x02, 0x72, 0x0D, 0x60, 0x04, 0x72, 0x0D, 0x60, -0x01, 0x72, 0x21, 0x60, 0x06, 0x10, 0x20, 0x72, -0x19, 0x60, 0x40, 0x72, 0x11, 0x60, 0x10, 0x72, -0x0A, 0x60, 0x00, 0x6A, 0x20, 0xE8, 0x14, 0x24, -0x1D, 0x10, 0x07, 0x24, 0x1B, 0x10, 0x00, 0x6A, -0x17, 0x2B, 0x19, 0x24, 0x15, 0x10, 0x03, 0x74, -0x15, 0x61, 0x00, 0x6A, 0x08, 0x73, 0x0F, 0x10, -0x00, 0xF7, 0xA2, 0x35, 0x01, 0x6A, 0x4C, 0xED, -0xCC, 0xED, 0x05, 0x2D, 0x03, 0x74, 0x0A, 0x61, -0x00, 0x6A, 0x0C, 0x73, 0x04, 0x10, 0x03, 0x74, -0x05, 0x61, 0x00, 0x6A, 0x0F, 0x73, 0x03, 0x60, -0x01, 0x6A, 0x20, 0xE8, 0x01, 0x6A, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x64, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x48, 0x9A, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, -0x58, 0x9A, 0xFF, 0x6B, 0x80, 0xA2, 0x6C, 0xEC, -0x8C, 0xEB, 0x44, 0x67, 0x01, 0x23, 0x01, 0x6A, -0xFF, 0x6B, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x68, 0x9A, -0x01, 0x6D, 0xFF, 0x6C, 0x40, 0xA3, 0xAC, 0xEA, -0x02, 0x22, 0x45, 0x67, 0x15, 0x10, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF1, 0xC4, 0x9A, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF2, 0x48, 0x9A, 0xC0, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, 0x58, 0x9A, -0x40, 0xA2, 0x0C, 0x22, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x01, 0x6A, -0x00, 0x6B, 0x30, 0xF0, 0x20, 0x6C, 0xC9, 0xF5, -0x62, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF5, 0x62, 0xA2, 0x00, 0x6A, 0x01, 0x4B, -0x8C, 0xEB, 0xF3, 0x17, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF5, 0x60, 0xA2, 0x01, 0x6A, 0x07, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, 0x62, 0xA3, -0x00, 0x6A, 0x01, 0x23, 0x01, 0x6A, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF2, 0x64, 0x9A, 0xFF, 0x6C, -0x04, 0x6D, 0x40, 0xA3, 0x10, 0x6E, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6A, 0xC4, 0xF1, 0xAC, 0x9A, 0x40, 0xA5, -0x8C, 0xEA, 0xCD, 0xEA, 0x8C, 0xEA, 0x40, 0xC5, -0x80, 0xA3, 0xFB, 0x6A, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x10, 0x9A, -0xFF, 0xF7, 0x1F, 0x6B, 0xFF, 0x6C, 0x40, 0xA8, -0x01, 0x4C, 0x6C, 0xEA, 0x8D, 0xEA, 0x6C, 0xEA, -0x40, 0xC8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, -0x48, 0x9A, 0x01, 0x6C, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, -0x48, 0x9A, 0xC4, 0xF1, 0x74, 0x9B, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, 0x78, 0x9B, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0xC4, 0xF1, -0x7C, 0x9B, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, -0xE4, 0xF1, 0x60, 0x9B, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6B, 0xE4, 0xF1, 0x64, 0x9B, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, 0x68, 0x9B, -0x60, 0xDA, 0x60, 0xA8, 0xFF, 0xF6, 0x1F, 0x6A, -0x6C, 0xEA, 0x40, 0xC8, 0x05, 0x97, 0x04, 0x90, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x04, 0xD0, 0xFF, 0x68, 0x8C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x0C, 0x33, 0xE7, 0xF7, 0x18, 0x4A, -0x49, 0xE3, 0x67, 0xA2, 0x0C, 0x2B, 0x30, 0xF0, -0x20, 0x6B, 0xC9, 0xF5, 0x64, 0xA3, 0x01, 0x73, -0x24, 0x61, 0x80, 0xAA, 0x00, 0x18, 0x2E, 0xEE, -0xFF, 0x72, 0x02, 0x61, 0x1E, 0x10, 0x46, 0xA2, -0x30, 0xF0, 0x20, 0x6B, 0xE7, 0xF7, 0x18, 0x4B, -0x0C, 0x30, 0x0D, 0xE3, 0x82, 0xA3, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF2, 0x60, 0x9B, 0x80, 0x34, -0x80, 0x34, 0x71, 0xE4, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF2, 0x68, 0x9B, 0x80, 0xDB, 0x80, 0x9B, -0x1F, 0xF7, 0x00, 0x6B, 0x6C, 0xEC, 0x82, 0x34, -0x8E, 0xEA, 0x00, 0x6B, 0x03, 0x22, 0x01, 0x6B, -0x01, 0x10, 0x00, 0x6B, 0x05, 0x97, 0x04, 0x90, -0x43, 0x67, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x01, 0x6D, -0x04, 0x00, 0x5D, 0x67, 0x20, 0xF0, 0x88, 0xC2, -0x0A, 0x07, 0x00, 0x6A, 0x90, 0x67, 0xC5, 0x67, -0x04, 0xD2, 0x05, 0xD2, 0x06, 0xD2, 0x07, 0xD2, -0x00, 0x18, 0x52, 0xDB, 0xFF, 0x6E, 0xB0, 0x67, -0x02, 0x6C, 0x4C, 0xEE, 0x00, 0x18, 0x64, 0xDB, -0x09, 0x97, 0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, +0x40, 0x9C, 0x63, 0xF2, 0x60, 0x9B, 0x6D, 0xEA, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, +0x5C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, +0x51, 0xE4, 0x40, 0x9C, 0x63, 0xF2, 0x74, 0x9B, +0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, 0x5C, 0x9A, +0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, +0x40, 0x9C, 0x03, 0xF2, 0x74, 0x9B, 0x6D, 0xEA, +0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, +0x5C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, +0x51, 0xE4, 0x40, 0x9C, 0x83, 0xF2, 0x74, 0x9B, +0x6C, 0xEA, 0x40, 0xDC, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6B, 0x84, 0xF1, +0x5C, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x01, 0x6C, 0x40, 0xF7, 0x42, 0x32, +0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0xFF, 0x6B, 0x84, 0xF1, +0x5C, 0x9A, 0x6C, 0xEC, 0x8C, 0x34, 0x51, 0xE4, +0x40, 0x9C, 0x01, 0x6C, 0x00, 0xF7, 0x42, 0x32, +0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x92, 0xF0, +0x90, 0x67, 0x01, 0x6D, 0x01, 0x48, 0x00, 0x18, +0xA2, 0xF0, 0x0B, 0x70, 0xF5, 0x61, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x45, 0xA2, -0x01, 0x68, 0x0C, 0xEA, 0x69, 0x22, 0x00, 0x18, -0xC6, 0xF1, 0x3C, 0x22, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF5, 0x20, 0xA2, 0x22, 0x29, 0x00, 0x18, -0xBA, 0xF1, 0x1B, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF5, 0x61, 0xA2, 0x01, 0x4B, 0xC9, 0xF5, -0x61, 0xC2, 0xC9, 0xF5, 0x41, 0xA2, 0x06, 0x5A, -0x14, 0x61, 0x90, 0x67, 0x00, 0x18, 0x30, 0xF2, -0x30, 0xF0, 0x20, 0x6A, 0x10, 0xF0, 0x24, 0x6C, -0x04, 0xD0, 0x00, 0xF3, 0x4C, 0x9A, 0xF9, 0xF0, -0x19, 0x4C, 0x00, 0x6D, 0xC8, 0x6E, 0xF0, 0x67, -0x42, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, -0x21, 0xC2, 0x00, 0x18, 0x99, 0xF1, 0x0D, 0x22, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x60, 0xA2, -0x02, 0x6C, 0x01, 0x4B, 0xC9, 0xF5, 0x60, 0xC2, -0xC9, 0xF5, 0x40, 0xA2, 0x0A, 0x5A, 0x0F, 0x61, -0x0C, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, -0x40, 0xC3, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xC9, 0xF5, 0x42, 0xA2, 0x32, 0x5A, 0x03, 0x61, -0x00, 0x6C, 0x00, 0x18, 0x30, 0xF2, 0x30, 0xF0, -0x20, 0x6A, 0xC9, 0xF5, 0x40, 0xA2, 0x0E, 0x2A, -0x01, 0x6A, 0x04, 0xD2, 0x10, 0xF0, 0x24, 0x6C, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0xF9, 0xF0, 0x19, 0x4C, 0x00, 0x6D, 0xC8, 0x6E, -0x01, 0x6F, 0x0D, 0x10, 0x00, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0x10, 0xF0, 0x24, 0x6C, 0x01, 0x6E, 0xF9, 0xF0, -0x19, 0x4C, 0x00, 0x6D, 0xE6, 0x67, 0x40, 0xEA, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, -0x30, 0xF0, 0x20, 0x6A, 0xE7, 0xF7, 0x18, 0x4A, -0x8C, 0x33, 0x6D, 0xE2, 0x05, 0xD4, 0x04, 0xD3, -0x42, 0xAB, 0x00, 0x68, 0xFF, 0xF7, 0x1F, 0x72, -0xC0, 0xF0, 0x01, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0xE4, 0xF1, 0x6C, 0x9A, 0x01, 0x6C, 0x40, 0xA3, -0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, -0x40, 0xEA, 0x04, 0x93, 0x46, 0xA3, 0x62, 0xAB, -0x62, 0x34, 0x2C, 0xEC, 0x18, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, 0x43, 0xF2, -0x88, 0x9C, 0xE4, 0xF1, 0xB0, 0x9D, 0xA0, 0xDC, -0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF1, 0xB4, 0x9D, -0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF1, -0xB8, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, -0xE4, 0xF1, 0xBC, 0x9D, 0x1A, 0x10, 0x01, 0x74, -0x80, 0xF0, 0x05, 0x61, 0x30, 0xF0, 0x20, 0x6C, -0x30, 0xF0, 0x20, 0x6D, 0x43, 0xF2, 0x88, 0x9C, -0xE4, 0xF1, 0xB0, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, -0x20, 0x6D, 0xE4, 0xF1, 0xB4, 0x9D, 0xA0, 0xDC, -0x30, 0xF0, 0x20, 0x6D, 0x04, 0xF2, 0xA0, 0x9D, -0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0x04, 0xF2, -0xA4, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, -0xE4, 0xF1, 0xA4, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, -0x20, 0x6D, 0xE4, 0xF1, 0xA8, 0x9D, 0xA0, 0xDC, -0xFF, 0x6C, 0x8C, 0xEB, 0xA7, 0x43, 0x19, 0x4D, -0x8C, 0xED, 0x08, 0x5D, 0x05, 0x61, 0xA7, 0x43, -0x09, 0x4D, 0x8C, 0xED, 0x08, 0x5D, 0x57, 0x60, -0x30, 0xF0, 0x20, 0x6C, 0x04, 0xF2, 0xA8, 0x9C, -0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF2, 0x88, 0x9C, -0xB5, 0xE3, 0x01, 0x68, 0xA0, 0xDC, 0x30, 0xF0, -0x20, 0x6D, 0x04, 0xF2, 0xAC, 0x9D, 0xAD, 0xE3, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, -0x70, 0x9B, 0x1F, 0xF7, 0x00, 0x6D, 0x6D, 0xE2, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, -0x74, 0x9B, 0x6D, 0xE2, 0x60, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xE4, 0xF1, 0x64, 0x9B, 0x60, 0xDC, -0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, 0x68, 0x9B, -0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, -0x78, 0x9B, 0x60, 0xDC, 0x60, 0x9C, 0xAC, 0xEB, -0x62, 0x33, 0x4E, 0xEB, 0x25, 0x2B, 0x05, 0x97, -0x30, 0xF0, 0x20, 0x6B, 0xE7, 0xF7, 0x18, 0x4B, -0xEC, 0x36, 0xCD, 0xE3, 0xC1, 0xAB, 0xFF, 0x6B, -0xCC, 0xEB, 0x30, 0xF0, 0x20, 0x6E, 0x43, 0xF2, -0xDC, 0x9E, 0x60, 0x33, 0x60, 0x33, 0xD9, 0xE2, -0x79, 0xE6, 0xC0, 0xDC, 0x30, 0xF0, 0x20, 0x6E, -0x63, 0xF2, 0xC0, 0x9E, 0xCD, 0xE3, 0x60, 0xDC, -0x60, 0x9C, 0xAC, 0xEB, 0x62, 0x33, 0x6E, 0xEA, -0x03, 0x22, 0x01, 0x68, 0x07, 0x6C, 0x05, 0x10, -0x00, 0x68, 0x05, 0x6C, 0x02, 0x10, 0x00, 0x68, -0x08, 0x6C, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, -0x6C, 0x9A, 0xFE, 0x6A, 0xA0, 0xA3, 0xAC, 0xEA, -0x40, 0xC3, 0x00, 0x18, 0x30, 0xF2, 0x50, 0x67, -0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC9, 0xF5, 0x24, 0xA0, 0x1C, 0x29, 0x00, 0x6C, -0x00, 0x18, 0xCA, 0xED, 0x01, 0x72, 0x78, 0x67, -0x04, 0xD3, 0x03, 0x23, 0xC9, 0xF5, 0x24, 0xC0, -0x0F, 0x10, 0x00, 0x18, 0x35, 0xEE, 0x01, 0x72, -0x07, 0x60, 0x5D, 0x67, 0x67, 0x42, 0x09, 0x4B, -0x40, 0xA3, 0xC9, 0xF5, 0x44, 0xC0, 0x04, 0x10, -0x01, 0x6A, 0xC9, 0xF5, 0x44, 0xC0, 0x03, 0x10, -0x09, 0x6C, 0x00, 0x18, 0x30, 0xF2, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0x6B, 0x7B, 0xEC, +0x01, 0x2B, 0xE5, 0xE8, 0x0A, 0x69, 0x12, 0xED, +0x4C, 0xED, 0x04, 0xD5, 0xFF, 0x68, 0x2C, 0xE8, +0x90, 0x67, 0x00, 0x18, 0xB2, 0xF0, 0x17, 0x2A, +0xFF, 0x49, 0x00, 0xF6, 0x20, 0x31, 0x90, 0x67, +0x01, 0x6D, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x18, +0xA2, 0xF0, 0x41, 0x41, 0xEF, 0x2A, 0x01, 0x69, +0x2B, 0xE9, 0x09, 0x10, 0x04, 0x94, 0xFF, 0x49, +0x00, 0x6D, 0x00, 0xF6, 0x20, 0x31, 0x00, 0x18, +0xA2, 0xF0, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x51, +0xF5, 0x60, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x0C, 0x68, +0x4C, 0xEC, 0x1B, 0xEC, 0x01, 0x28, 0xE5, 0xE8, +0x4C, 0xED, 0x10, 0xE9, 0x4C, 0xE9, 0x12, 0xE8, +0x4C, 0xE8, 0x0F, 0x25, 0x90, 0x67, 0x01, 0x6D, +0x00, 0x18, 0x92, 0xF0, 0x30, 0xF0, 0x20, 0x6A, +0xE7, 0xF7, 0x0C, 0x4A, 0x41, 0xE0, 0x60, 0xA0, +0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x40, 0xC0, +0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE7, 0xF7, +0x0C, 0x4A, 0x49, 0xE0, 0x80, 0xA2, 0x01, 0x6B, +0x64, 0xE9, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, +0x40, 0xA2, 0x04, 0x2A, 0x90, 0x67, 0x00, 0x6D, +0x00, 0x18, 0x92, 0xF0, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0xE5, 0xF0, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0xCC, 0xF0, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x0C, 0x6B, 0x7B, 0xED, +0x01, 0x2B, 0xE5, 0xE8, 0x05, 0x6E, 0xFF, 0x6A, +0x4C, 0xEC, 0x10, 0xEB, 0x12, 0xED, 0x4C, 0xED, +0xD8, 0xEB, 0x12, 0xEB, 0x4C, 0xEB, 0x1E, 0x73, +0x1D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, +0x60, 0x9A, 0xAC, 0x35, 0x30, 0xF0, 0x20, 0x6E, +0x6D, 0xE5, 0x40, 0x9B, 0x03, 0xF3, 0xDC, 0x9E, +0xCC, 0xEA, 0x80, 0xF7, 0x80, 0x36, 0xCD, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF1, +0x5C, 0x9A, 0x08, 0x6B, 0x6B, 0xEB, 0x55, 0xE5, +0x40, 0x9D, 0x8A, 0x34, 0x6C, 0xEA, 0x07, 0x6B, +0x6C, 0xEC, 0x1E, 0x10, 0x20, 0x5B, 0x0C, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, 0x40, 0x9A, +0x1F, 0x6E, 0xAC, 0x35, 0xE6, 0x67, 0x55, 0xE5, +0xE4, 0xEB, 0x40, 0x9D, 0xEF, 0xEF, 0x0D, 0x10, +0xE0, 0x4B, 0x4C, 0xEB, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF1, 0x5C, 0x9A, 0xAC, 0x35, 0x1F, 0x6E, +0x55, 0xE5, 0xE0, 0x9D, 0x46, 0x67, 0x44, 0xEB, +0x4F, 0xEA, 0xCC, 0xEC, 0xEC, 0xEA, 0x84, 0xEB, +0x8D, 0xEA, 0x40, 0xDD, 0x20, 0xE8, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xE9, 0x05, 0x67, +0x01, 0x29, 0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, +0x0B, 0xF1, 0xFF, 0x6C, 0x0C, 0xEC, 0xB1, 0x67, +0x00, 0x18, 0x00, 0xF1, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xAE, 0xEC, 0x01, 0x6A, 0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF0, 0x08, 0x48, -0x40, 0xF1, 0x7D, 0xA0, 0x40, 0xF1, 0x3D, 0xA0, -0x01, 0x6A, 0x6A, 0x33, 0x4C, 0xEB, 0x4C, 0xE9, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x4C, 0x9A, -0xA4, 0x67, 0x30, 0xF0, 0x20, 0x6C, 0x06, 0xD3, -0xCB, 0xF1, 0x05, 0x4C, 0x01, 0x6E, 0x40, 0xEA, -0x40, 0xF1, 0x7D, 0xA0, 0x02, 0x6A, 0x6C, 0xEA, -0x02, 0x22, 0x00, 0x18, 0xE4, 0xF1, 0x30, 0xF0, -0x20, 0x6A, 0xCB, 0xF1, 0x65, 0xA2, 0x01, 0x6A, -0x6C, 0xEA, 0x20, 0x2A, 0x01, 0x68, 0x2E, 0xE8, -0x1D, 0x28, 0x10, 0xF0, 0x24, 0x6C, 0xF9, 0xF0, -0x19, 0x4C, 0x00, 0x18, 0xB3, 0xE5, 0x30, 0xF0, -0x20, 0x6A, 0x04, 0xF2, 0x5C, 0x9A, 0x00, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, 0x40, 0x9A, -0x00, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, -0x00, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, -0x01, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, -0x02, 0xC2, 0x2C, 0x10, 0x30, 0xF0, 0x20, 0x6A, -0xCB, 0xF1, 0x65, 0xA2, 0x01, 0x6A, 0x4C, 0xEB, -0x25, 0x23, 0x24, 0x29, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xF2, 0x7C, 0x9B, 0x51, 0x6C, 0x00, 0x6D, -0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x24, 0xF2, -0x60, 0x9B, 0x10, 0xF0, 0x24, 0x6C, 0xF9, 0xF0, -0x19, 0x4C, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, -0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, -0x20, 0xC3, 0x00, 0xF3, 0x4C, 0x9A, 0x30, 0xF0, -0x20, 0x6B, 0xC9, 0xF5, 0x21, 0xC3, 0x30, 0xF0, -0x20, 0x6B, 0xC9, 0xF5, 0x22, 0xC3, 0xC8, 0x6E, -0x01, 0x6F, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, -0xCB, 0xF1, 0x65, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, -0x0B, 0x2A, 0x06, 0x92, 0x09, 0x22, 0x10, 0xF0, -0x24, 0x6C, 0x99, 0xF5, 0x19, 0x4C, 0x00, 0x18, -0xB3, 0xE5, 0x00, 0x18, 0x94, 0xF1, 0x1C, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x65, 0xA2, -0x04, 0x6A, 0x6C, 0xEA, 0x15, 0x22, 0x06, 0x93, -0x13, 0x2B, 0x00, 0x18, 0x94, 0xF1, 0x00, 0x18, -0xE9, 0xF2, 0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, -0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, -0x24, 0x6C, 0x99, 0xF5, 0x19, 0x4C, 0x00, 0x6D, -0xC0, 0xF7, 0x10, 0x6E, 0x01, 0x6F, 0x40, 0xEA, -0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF2, 0x44, 0x9A, -0x41, 0x6B, 0x60, 0xC2, 0x45, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x68, 0x9A, -0xFE, 0x6A, 0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, -0x41, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, -0x42, 0xC3, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, -0x30, 0xF2, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, -0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x65, 0xA2, -0x04, 0x6A, 0x6C, 0xEA, 0x78, 0x22, 0x30, 0xF0, -0x20, 0x68, 0x00, 0x69, 0xE7, 0xF7, 0x18, 0x48, -0x06, 0xD1, 0x40, 0xA8, 0xFF, 0xF7, 0x1F, 0x72, -0x23, 0x60, 0x91, 0x67, 0x00, 0x18, 0x11, 0xF2, -0x01, 0x72, 0x1B, 0x61, 0x42, 0xA8, 0xFF, 0xF7, -0x1F, 0x72, 0x10, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0xC9, 0xF5, 0x43, 0xA3, 0x81, 0x42, 0xC9, 0xF5, -0x83, 0xC3, 0xFF, 0x4A, 0xFF, 0x6B, 0x6C, 0xEA, -0x02, 0x5A, 0x52, 0x60, 0x04, 0x6C, 0x00, 0x18, -0x53, 0xF3, 0x4E, 0x10, 0x91, 0x67, 0x00, 0x18, -0x7B, 0xF2, 0x01, 0x72, 0x02, 0x61, 0x01, 0x6B, -0x06, 0xD3, 0x01, 0x49, 0x08, 0x48, 0xD9, 0x17, -0x30, 0xF0, 0x20, 0x6A, 0x98, 0x67, 0xC9, 0xF5, -0x83, 0xC2, 0x06, 0x10, 0x00, 0x6B, 0x06, 0x6C, -0xC9, 0xF5, 0x63, 0xC2, 0x00, 0x18, 0x30, 0xF2, -0x06, 0x92, 0x07, 0x2A, 0x7D, 0x67, 0x87, 0x43, -0x11, 0x4C, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xA4, -0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, -0x65, 0xA2, 0x01, 0x4B, 0xC9, 0xF5, 0x65, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x65, 0xA2, -0x02, 0x5B, 0x06, 0x61, 0x00, 0x6B, 0x06, 0x6C, -0xC9, 0xF5, 0x65, 0xC2, 0x00, 0x18, 0x53, 0xF3, -0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x65, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x05, 0x22, 0x30, 0xF0, -0x20, 0x6A, 0xC9, 0xF5, 0x43, 0xA2, 0x17, 0x22, -0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x24, 0x6C, -0x99, 0xF5, 0x19, 0x4C, 0x00, 0x6D, 0xC0, 0xF7, -0x10, 0x6E, 0x01, 0x6F, 0x40, 0xEA, 0x07, 0x10, -0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x63, 0xA2, -0x04, 0x5B, 0xC2, 0x61, 0xBB, 0x17, 0x0B, 0x97, +0xFF, 0x6A, 0xAC, 0xEA, 0x06, 0xD2, 0x05, 0xD4, +0x00, 0x69, 0x1F, 0x68, 0x22, 0x10, 0x05, 0x92, +0x40, 0xA2, 0x07, 0xD2, 0x00, 0x6A, 0x04, 0xD2, +0x04, 0x92, 0x07, 0x94, 0x12, 0x35, 0x87, 0xEA, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x3E, 0xF1, +0x06, 0x22, 0xFF, 0x6A, 0x04, 0x30, 0x4C, 0xE8, +0x05, 0x6A, 0x4E, 0xE8, 0x01, 0x10, 0x04, 0x30, +0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x92, 0x01, 0x4A, +0x08, 0x72, 0x04, 0xD2, 0xE9, 0x61, 0xFF, 0x6A, +0x01, 0x49, 0x4C, 0xE9, 0x05, 0x92, 0x01, 0x4A, +0x05, 0xD2, 0x06, 0x92, 0x43, 0xE9, 0xDB, 0x61, +0x1F, 0x6A, 0x4E, 0xE8, 0x0C, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, -0xD7, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x60, 0xA4, +0x01, 0x6A, 0x04, 0x67, 0x6C, 0xEA, 0x44, 0x22, +0x66, 0x32, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, +0x64, 0x9B, 0x54, 0x32, 0x69, 0xE2, 0x61, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF1, 0x68, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x62, 0xA4, 0x60, 0xC2, 0x40, 0xA4, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x6C, 0x9B, +0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x63, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF1, 0x70, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x64, 0xA4, 0x60, 0xC2, 0x40, 0xA4, +0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF1, 0x74, 0x9B, +0x46, 0x32, 0x54, 0x32, 0x69, 0xE2, 0x65, 0xA4, +0x60, 0xC2, 0x40, 0xA4, 0x30, 0xF0, 0x20, 0x6B, +0xA4, 0xF1, 0x78, 0x9B, 0x46, 0x32, 0x54, 0x32, +0x69, 0xE2, 0x66, 0xA4, 0x10, 0xF0, 0x00, 0x6C, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x70, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x81, 0x40, 0x06, 0x6D, 0x00, 0x18, 0x40, 0xF1, +0x60, 0xA0, 0x01, 0x6E, 0x82, 0x67, 0x66, 0x35, +0x6C, 0xEE, 0x00, 0x18, 0x32, 0xF1, 0x05, 0x97, +0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xC2, 0xF0, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF1, 0x7C, 0x9A, +0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, +0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF2, 0x80, 0x9C, +0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF5, 0x43, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF5, 0x45, 0xC3, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, 0x40, 0x9A, +0xFF, 0x6E, 0xA0, 0x9A, 0x0F, 0x6A, 0x40, 0xF5, +0xA2, 0x33, 0x4C, 0xEB, 0x45, 0x67, 0xCC, 0xEA, +0x08, 0x72, 0x80, 0xF7, 0xA2, 0x34, 0x15, 0x60, +0x09, 0x5A, 0x07, 0x60, 0x02, 0x72, 0x0D, 0x60, +0x04, 0x72, 0x0D, 0x60, 0x01, 0x72, 0x21, 0x60, +0x06, 0x10, 0x20, 0x72, 0x19, 0x60, 0x40, 0x72, +0x11, 0x60, 0x10, 0x72, 0x0A, 0x60, 0x00, 0x6A, +0x20, 0xE8, 0x14, 0x24, 0x1D, 0x10, 0x07, 0x24, +0x1B, 0x10, 0x00, 0x6A, 0x17, 0x2B, 0x19, 0x24, +0x15, 0x10, 0x03, 0x74, 0x15, 0x61, 0x00, 0x6A, +0x08, 0x73, 0x0F, 0x10, 0x00, 0xF7, 0xA2, 0x35, +0x01, 0x6A, 0x4C, 0xED, 0xCC, 0xED, 0x05, 0x2D, +0x03, 0x74, 0x0A, 0x61, 0x00, 0x6A, 0x0C, 0x73, +0x04, 0x10, 0x03, 0x74, 0x05, 0x61, 0x00, 0x6A, +0x0F, 0x73, 0x03, 0x60, 0x01, 0x6A, 0x20, 0xE8, +0x01, 0x6A, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x64, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x48, 0x9A, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF2, 0x58, 0x9A, 0xFF, 0x6B, +0x80, 0xA2, 0x6C, 0xEC, 0x8C, 0xEB, 0x44, 0x67, +0x01, 0x23, 0x01, 0x6A, 0xFF, 0x6B, 0x6C, 0xEA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x68, 0x9A, 0x01, 0x6D, 0xFF, 0x6C, +0x40, 0xA3, 0xAC, 0xEA, 0x02, 0x22, 0x45, 0x67, +0x15, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, +0xC4, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF2, +0x48, 0x9A, 0xC0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF2, 0x58, 0x9A, 0x40, 0xA2, 0x0C, 0x22, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x01, 0x6A, 0x00, 0x6B, 0x30, 0xF0, +0x20, 0x6C, 0xC9, 0xF5, 0x62, 0xC4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x62, 0xA2, +0x00, 0x6A, 0x01, 0x4B, 0x8C, 0xEB, 0xF3, 0x17, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x60, 0xA2, +0x01, 0x6A, 0x07, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xC9, 0xF5, 0x62, 0xA3, 0x00, 0x6A, 0x01, 0x23, +0x01, 0x6A, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF2, +0x64, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, +0x10, 0x6E, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, 0xC4, 0xF1, +0xAC, 0x9A, 0x40, 0xA5, 0x8C, 0xEA, 0xCD, 0xEA, +0x8C, 0xEA, 0x40, 0xC5, 0x80, 0xA3, 0xFB, 0x6A, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x10, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0xFF, 0x6C, 0x40, 0xA8, 0x01, 0x4C, 0x6C, 0xEA, +0x8D, 0xEA, 0x6C, 0xEA, 0x40, 0xC8, 0x30, 0xF0, +0x20, 0x6A, 0x80, 0xF3, 0x48, 0x9A, 0x01, 0x6C, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF2, 0x48, 0x9A, 0xC4, 0xF1, +0x74, 0x9B, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0xC4, 0xF1, 0x78, 0x9B, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6B, 0xC4, 0xF1, 0x7C, 0x9B, 0x60, 0xDA, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, 0x60, 0x9B, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, +0x64, 0x9B, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF1, 0x68, 0x9B, 0x60, 0xDA, 0x60, 0xA8, +0xFF, 0xF6, 0x1F, 0x6A, 0x6C, 0xEA, 0x40, 0xC8, +0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0xFF, 0x68, +0x8C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x0C, 0x33, +0xE7, 0xF7, 0x18, 0x4A, 0x49, 0xE3, 0x67, 0xA2, +0x0C, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, +0x64, 0xA3, 0x01, 0x73, 0x24, 0x61, 0x80, 0xAA, +0x00, 0x18, 0x2E, 0xEE, 0xFF, 0x72, 0x02, 0x61, +0x1E, 0x10, 0x46, 0xA2, 0x30, 0xF0, 0x20, 0x6B, +0xE7, 0xF7, 0x18, 0x4B, 0x0C, 0x30, 0x0D, 0xE3, +0x82, 0xA3, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF2, +0x60, 0x9B, 0x80, 0x34, 0x80, 0x34, 0x71, 0xE4, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF2, 0x68, 0x9B, +0x80, 0xDB, 0x80, 0x9B, 0x1F, 0xF7, 0x00, 0x6B, +0x6C, 0xEC, 0x82, 0x34, 0x8E, 0xEA, 0x00, 0x6B, +0x03, 0x22, 0x01, 0x6B, 0x01, 0x10, 0x00, 0x6B, +0x05, 0x97, 0x04, 0x90, 0x43, 0x67, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD0, 0x01, 0x6D, 0x04, 0x00, 0x5D, 0x67, +0x20, 0xF0, 0x88, 0xC2, 0x0A, 0x07, 0x00, 0x6A, +0x90, 0x67, 0xC5, 0x67, 0x04, 0xD2, 0x05, 0xD2, +0x06, 0xD2, 0x07, 0xD2, 0x00, 0x18, 0x52, 0xDB, +0xFF, 0x6E, 0xB0, 0x67, 0x02, 0x6C, 0x4C, 0xEE, +0x00, 0x18, 0x64, 0xDB, 0x09, 0x97, 0x08, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF1, 0x45, 0xA2, 0x01, 0x68, 0x0C, 0xEA, +0x69, 0x22, 0x00, 0x18, 0xC7, 0xF1, 0x3C, 0x22, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x20, 0xA2, +0x22, 0x29, 0x00, 0x18, 0xBB, 0xF1, 0x1B, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x61, 0xA2, +0x01, 0x4B, 0xC9, 0xF5, 0x61, 0xC2, 0xC9, 0xF5, +0x41, 0xA2, 0x06, 0x5A, 0x14, 0x61, 0x90, 0x67, +0x00, 0x18, 0x31, 0xF2, 0x30, 0xF0, 0x20, 0x6A, +0x10, 0xF0, 0x24, 0x6C, 0x04, 0xD0, 0x00, 0xF3, +0x4C, 0x9A, 0xF9, 0xF0, 0x1D, 0x4C, 0x00, 0x6D, +0xC8, 0x6E, 0xF0, 0x67, 0x42, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF5, 0x21, 0xC2, 0x00, 0x18, +0x9A, 0xF1, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF5, 0x60, 0xA2, 0x02, 0x6C, 0x01, 0x4B, +0xC9, 0xF5, 0x60, 0xC2, 0xC9, 0xF5, 0x40, 0xA2, +0x0A, 0x5A, 0x0F, 0x61, 0x0C, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF5, 0x40, 0xC3, 0x09, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, 0x42, 0xA2, +0x32, 0x5A, 0x03, 0x61, 0x00, 0x6C, 0x00, 0x18, +0x31, 0xF2, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, +0x40, 0xA2, 0x0E, 0x2A, 0x01, 0x6A, 0x04, 0xD2, +0x10, 0xF0, 0x24, 0x6C, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0xF9, 0xF0, 0x1D, 0x4C, +0x00, 0x6D, 0xC8, 0x6E, 0x01, 0x6F, 0x0D, 0x10, +0x00, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x24, 0x6C, +0x01, 0x6E, 0xF9, 0xF0, 0x1D, 0x4C, 0x00, 0x6D, +0xE6, 0x67, 0x40, 0xEA, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0xFF, 0x69, 0x2C, 0xEC, 0x30, 0xF0, 0x20, 0x6A, +0xE7, 0xF7, 0x18, 0x4A, 0x8C, 0x33, 0x6D, 0xE2, +0x05, 0xD4, 0x04, 0xD3, 0x42, 0xAB, 0x00, 0x68, +0xFF, 0xF7, 0x1F, 0x72, 0xC0, 0xF0, 0x01, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF1, 0x6C, 0x9A, +0x01, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, +0x2C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x48, 0x9A, 0x40, 0xEA, 0x04, 0x93, +0x46, 0xA3, 0x62, 0xAB, 0x62, 0x34, 0x2C, 0xEC, +0x18, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, +0x20, 0x6D, 0x43, 0xF2, 0x88, 0x9C, 0xE4, 0xF1, +0xB0, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, +0xE4, 0xF1, 0xB4, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, +0x20, 0x6D, 0xE4, 0xF1, 0xB8, 0x9D, 0xA0, 0xDC, +0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF1, 0xBC, 0x9D, +0x1A, 0x10, 0x01, 0x74, 0x80, 0xF0, 0x05, 0x61, +0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x20, 0x6D, +0x43, 0xF2, 0x88, 0x9C, 0xE4, 0xF1, 0xB0, 0x9D, +0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF1, +0xB4, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, +0x04, 0xF2, 0xA0, 0x9D, 0xA0, 0xDC, 0x30, 0xF0, +0x20, 0x6D, 0x04, 0xF2, 0xA4, 0x9D, 0xA0, 0xDC, +0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF1, 0xA4, 0x9D, +0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0xE4, 0xF1, +0xA8, 0x9D, 0xA0, 0xDC, 0xFF, 0x6C, 0x8C, 0xEB, +0xA7, 0x43, 0x19, 0x4D, 0x8C, 0xED, 0x08, 0x5D, +0x05, 0x61, 0xA7, 0x43, 0x09, 0x4D, 0x8C, 0xED, +0x08, 0x5D, 0x57, 0x60, 0x30, 0xF0, 0x20, 0x6C, +0x04, 0xF2, 0xA8, 0x9C, 0x30, 0xF0, 0x20, 0x6C, +0x43, 0xF2, 0x88, 0x9C, 0xB5, 0xE3, 0x01, 0x68, +0xA0, 0xDC, 0x30, 0xF0, 0x20, 0x6D, 0x04, 0xF2, +0xAC, 0x9D, 0xAD, 0xE3, 0x60, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF2, 0x70, 0x9B, 0x1F, 0xF7, +0x00, 0x6D, 0x6D, 0xE2, 0x60, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF2, 0x74, 0x9B, 0x6D, 0xE2, +0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF1, +0x64, 0x9B, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0xE4, 0xF1, 0x68, 0x9B, 0x60, 0xDC, 0x30, 0xF0, +0x20, 0x6B, 0x04, 0xF2, 0x78, 0x9B, 0x60, 0xDC, +0x60, 0x9C, 0xAC, 0xEB, 0x62, 0x33, 0x4E, 0xEB, +0x25, 0x2B, 0x05, 0x97, 0x30, 0xF0, 0x20, 0x6B, +0xE7, 0xF7, 0x18, 0x4B, 0xEC, 0x36, 0xCD, 0xE3, +0xC1, 0xAB, 0xFF, 0x6B, 0xCC, 0xEB, 0x30, 0xF0, +0x20, 0x6E, 0x43, 0xF2, 0xDC, 0x9E, 0x60, 0x33, +0x60, 0x33, 0xD9, 0xE2, 0x79, 0xE6, 0xC0, 0xDC, +0x30, 0xF0, 0x20, 0x6E, 0x63, 0xF2, 0xC0, 0x9E, +0xCD, 0xE3, 0x60, 0xDC, 0x60, 0x9C, 0xAC, 0xEB, +0x62, 0x33, 0x6E, 0xEA, 0x03, 0x22, 0x01, 0x68, +0x07, 0x6C, 0x05, 0x10, 0x00, 0x68, 0x05, 0x6C, +0x02, 0x10, 0x00, 0x68, 0x08, 0x6C, 0x30, 0xF0, +0x20, 0x6A, 0xE4, 0xF1, 0x6C, 0x9A, 0xFE, 0x6A, +0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x00, 0x18, +0x31, 0xF2, 0x50, 0x67, 0x09, 0x97, 0x08, 0x91, +0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0xC9, 0xF5, 0x24, 0xA0, +0x1C, 0x29, 0x00, 0x6C, 0x00, 0x18, 0xCA, 0xED, +0x01, 0x72, 0x78, 0x67, 0x04, 0xD3, 0x03, 0x23, +0xC9, 0xF5, 0x24, 0xC0, 0x0F, 0x10, 0x00, 0x18, +0x35, 0xEE, 0x01, 0x72, 0x07, 0x60, 0x5D, 0x67, +0x67, 0x42, 0x09, 0x4B, 0x40, 0xA3, 0xC9, 0xF5, +0x44, 0xC0, 0x04, 0x10, 0x01, 0x6A, 0xC9, 0xF5, +0x44, 0xC0, 0x03, 0x10, 0x09, 0x6C, 0x00, 0x18, +0x31, 0xF2, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0x6B, 0xF0, 0x08, 0x48, 0x40, 0xF1, 0x7D, 0xA0, +0x40, 0xF1, 0x3D, 0xA0, 0x01, 0x6A, 0x6A, 0x33, +0x4C, 0xEB, 0x4C, 0xE9, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x4C, 0x9A, 0xA4, 0x67, 0x30, 0xF0, +0x20, 0x6C, 0x06, 0xD3, 0xCB, 0xF1, 0x05, 0x4C, +0x01, 0x6E, 0x40, 0xEA, 0x40, 0xF1, 0x7D, 0xA0, +0x02, 0x6A, 0x6C, 0xEA, 0x02, 0x22, 0x00, 0x18, +0xE5, 0xF1, 0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, +0x65, 0xA2, 0x01, 0x6A, 0x6C, 0xEA, 0x20, 0x2A, +0x01, 0x68, 0x2E, 0xE8, 0x1D, 0x28, 0x10, 0xF0, +0x24, 0x6C, 0xF9, 0xF0, 0x1D, 0x4C, 0x00, 0x18, +0xB3, 0xE5, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF2, +0x5C, 0x9A, 0x00, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF2, 0x40, 0x9A, 0x00, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF5, 0x00, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF5, 0x01, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF5, 0x02, 0xC2, 0x2C, 0x10, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x65, 0xA2, +0x01, 0x6A, 0x4C, 0xEB, 0x25, 0x23, 0x24, 0x29, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xF2, 0x7C, 0x9B, +0x51, 0x6C, 0x00, 0x6D, 0x80, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0x24, 0xF2, 0x60, 0x9B, 0x10, 0xF0, +0x24, 0x6C, 0xF9, 0xF0, 0x1D, 0x4C, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF5, 0x20, 0xC3, 0x00, 0xF3, +0x4C, 0x9A, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, +0x21, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, +0x22, 0xC3, 0xC8, 0x6E, 0x01, 0x6F, 0x40, 0xEA, +0x30, 0xF0, 0x20, 0x6A, 0xCB, 0xF1, 0x65, 0xA2, +0x04, 0x6A, 0x6C, 0xEA, 0x0B, 0x2A, 0x06, 0x92, +0x09, 0x22, 0x10, 0xF0, 0x24, 0x6C, 0x99, 0xF5, +0x1D, 0x4C, 0x00, 0x18, 0xB3, 0xE5, 0x00, 0x18, +0x95, 0xF1, 0x1C, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF1, 0x65, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, +0x15, 0x22, 0x06, 0x93, 0x13, 0x2B, 0x00, 0x18, +0x95, 0xF1, 0x00, 0x18, 0xEA, 0xF2, 0x01, 0x6A, +0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, +0x4C, 0x9A, 0x10, 0xF0, 0x24, 0x6C, 0x99, 0xF5, +0x1D, 0x4C, 0x00, 0x6D, 0xC0, 0xF7, 0x10, 0x6E, +0x01, 0x6F, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, +0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF2, 0x44, 0x9A, 0x41, 0x6B, 0x60, 0xC2, +0x45, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xC4, 0xF1, 0x68, 0x9A, 0xFE, 0x6A, 0xA0, 0xA3, +0xAC, 0xEA, 0x40, 0xC3, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF5, 0x40, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF5, 0x41, 0xC3, 0x30, 0xF0, +0x20, 0x6B, 0xC9, 0xF5, 0x42, 0xC3, 0xFF, 0x6A, +0x4C, 0xEC, 0x00, 0x18, 0x31, 0xF2, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, +0x0A, 0xD1, 0x09, 0xD0, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF1, 0x65, 0xA2, 0x04, 0x6A, 0x6C, 0xEA, +0x78, 0x22, 0x30, 0xF0, 0x20, 0x68, 0x00, 0x69, +0xE7, 0xF7, 0x18, 0x48, 0x06, 0xD1, 0x40, 0xA8, +0xFF, 0xF7, 0x1F, 0x72, 0x23, 0x60, 0x91, 0x67, +0x00, 0x18, 0x12, 0xF2, 0x01, 0x72, 0x1B, 0x61, +0x42, 0xA8, 0xFF, 0xF7, 0x1F, 0x72, 0x10, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0xC9, 0xF5, 0x43, 0xA3, +0x81, 0x42, 0xC9, 0xF5, 0x83, 0xC3, 0xFF, 0x4A, +0xFF, 0x6B, 0x6C, 0xEA, 0x02, 0x5A, 0x52, 0x60, +0x04, 0x6C, 0x00, 0x18, 0x54, 0xF3, 0x4E, 0x10, +0x91, 0x67, 0x00, 0x18, 0x7C, 0xF2, 0x01, 0x72, +0x02, 0x61, 0x01, 0x6B, 0x06, 0xD3, 0x01, 0x49, +0x08, 0x48, 0xD9, 0x17, 0x30, 0xF0, 0x20, 0x6A, +0x98, 0x67, 0xC9, 0xF5, 0x83, 0xC2, 0x06, 0x10, +0x00, 0x6B, 0x06, 0x6C, 0xC9, 0xF5, 0x63, 0xC2, +0x00, 0x18, 0x31, 0xF2, 0x06, 0x92, 0x07, 0x2A, +0x7D, 0x67, 0x87, 0x43, 0x11, 0x4C, 0x30, 0xF0, +0x20, 0x6A, 0x60, 0xA4, 0x05, 0x10, 0x30, 0xF0, +0x20, 0x6A, 0xC9, 0xF5, 0x65, 0xA2, 0x01, 0x4B, +0xC9, 0xF5, 0x65, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF5, 0x65, 0xA2, 0x02, 0x5B, 0x06, 0x61, +0x00, 0x6B, 0x06, 0x6C, 0xC9, 0xF5, 0x65, 0xC2, +0x00, 0x18, 0x54, 0xF3, 0x30, 0xF0, 0x20, 0x6A, +0xCB, 0xF1, 0x65, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x05, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC9, 0xF5, +0x43, 0xA2, 0x17, 0x22, 0x01, 0x6A, 0x04, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, +0x10, 0xF0, 0x24, 0x6C, 0x99, 0xF5, 0x1D, 0x4C, +0x00, 0x6D, 0xC0, 0xF7, 0x10, 0x6E, 0x01, 0x6F, +0x40, 0xEA, 0x07, 0x10, 0x30, 0xF0, 0x20, 0x6A, +0xC9, 0xF5, 0x63, 0xA2, 0x04, 0x5B, 0xC2, 0x61, +0xBB, 0x17, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, +0x06, 0x63, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x00, +0xD5, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x20, 0x6B, 0x0F, 0xF6, 0x7E, 0xAB, 0xFF, 0x6A, 0x8C, 0xEA, 0x69, 0xE2, 0xFF, 0xF7, 0x1F, 0x6B, 0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, @@ -29203,11 +29212,11 @@ u8 array_mp_8822c_fw_nic[] = { 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF6, 0x58, 0x9A, 0x02, 0x6B, 0x40, 0xAA, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF6, 0x5C, 0xAA, 0x0E, 0xEA, -0x6C, 0xEA, 0x04, 0x22, 0x80, 0x18, 0xA4, 0x79, +0x6C, 0xEA, 0x04, 0x22, 0x80, 0x18, 0xB1, 0x79, 0x00, 0x18, 0x6B, 0xD7, 0x02, 0x6B, 0x50, 0x67, 0x6C, 0xEA, 0x08, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF6, 0x5C, 0xAA, 0x6C, 0xEA, 0x02, 0x2A, -0x80, 0x18, 0xA4, 0x79, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0x18, 0xB1, 0x79, 0x30, 0xF0, 0x20, 0x6A, 0x0F, 0xF6, 0x1C, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF1, 0x16, 0xCA, 0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF5, 0x50, 0x9A, 0x04, 0x6C, 0x40, 0xEA, @@ -29409,7 +29418,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x31, 0x6A, 0x51, 0xF1, 0x0D, 0x4A, 0x40, 0xDB, 0x00, 0x1C, -0xAC, 0x39, 0x80, 0x18, 0xE5, 0x76, 0x05, 0x6C, +0xAC, 0x39, 0x80, 0x18, 0xF2, 0x76, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x20, 0x01, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, @@ -29674,7 +29683,7 @@ u8 array_mp_8822c_fw_nic[] = { 0xCA, 0x74, 0xA0, 0xF0, 0x0D, 0x60, 0xBC, 0x10, 0x85, 0x67, 0x80, 0x18, 0xD0, 0x20, 0xCB, 0x10, 0x85, 0x67, 0x80, 0x18, 0x96, 0x23, 0xC7, 0x10, -0x85, 0x67, 0x00, 0x18, 0x5B, 0xF1, 0xC3, 0x10, +0x85, 0x67, 0x00, 0x18, 0x5C, 0xF1, 0xC3, 0x10, 0x85, 0x67, 0x80, 0x18, 0x0B, 0x00, 0xBF, 0x10, 0x85, 0x67, 0x80, 0x18, 0x85, 0x62, 0xBB, 0x10, 0x85, 0x67, 0x80, 0x18, 0x13, 0x64, 0xB7, 0x10, @@ -29717,7 +29726,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x85, 0x67, 0x80, 0x18, 0x86, 0x00, 0x23, 0x10, 0x85, 0x67, 0x00, 0x18, 0x7A, 0xDB, 0x1F, 0x10, 0x85, 0x67, 0x80, 0x18, 0xF4, 0x20, 0x1B, 0x10, -0x85, 0x67, 0x00, 0x18, 0xFE, 0xF2, 0x17, 0x10, +0x85, 0x67, 0x00, 0x18, 0xFF, 0xF2, 0x17, 0x10, 0x85, 0x67, 0x80, 0x18, 0x68, 0x63, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, 0x68, 0x9A, 0x01, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, @@ -30135,7 +30144,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x4C, 0xEC, 0x00, 0x18, 0x42, 0xE7, 0x30, 0xF0, 0x20, 0x6A, 0x4B, 0xF1, 0x5C, 0xA2, 0x1F, 0x6C, 0x4C, 0xEC, 0x0C, 0x4C, 0x01, 0x6A, 0x44, 0xEC, -0x82, 0x67, 0x80, 0x18, 0x32, 0x76, 0x05, 0x97, +0x82, 0x67, 0x80, 0x18, 0x3F, 0x76, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0x64, 0x9B, 0xFF, 0xF7, 0x1F, 0x6A, @@ -37398,7 +37407,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x4C, 0x9A, 0x00, 0x6D, 0x05, 0x6E, 0x01, 0x6F, 0x40, 0xEA, 0x09, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0xB8, 0x9A, 0x01, 0x6C, 0x80, 0x18, -0x76, 0x76, 0x80, 0x18, 0x03, 0x60, 0x07, 0x97, +0x83, 0x76, 0x80, 0x18, 0x03, 0x60, 0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF5, 0x54, 0x9A, 0x03, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, @@ -37432,7 +37441,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x23, 0xA0, 0x01, 0x6A, 0x4C, 0xE9, 0xFF, 0x6A, 0x4C, 0xE9, 0x03, 0x21, 0x80, 0x18, 0x03, 0x60, 0x31, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, -0xB8, 0x9A, 0x01, 0x6C, 0x80, 0x18, 0x45, 0x76, +0xB8, 0x9A, 0x01, 0x6C, 0x80, 0x18, 0x52, 0x76, 0xA4, 0xF5, 0x43, 0xA0, 0x01, 0x6B, 0x10, 0xF0, 0x32, 0x6C, 0x6C, 0xEA, 0xA4, 0xF5, 0x43, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, @@ -37651,20 +37660,20 @@ u8 array_mp_8822c_fw_nic[] = { 0x30, 0xF0, 0x20, 0x6C, 0x6B, 0xF0, 0x08, 0x4C, 0x04, 0xD4, 0xA0, 0xF0, 0x7A, 0xA4, 0x01, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x80, 0xF0, 0x14, 0x22, -0x01, 0x6C, 0xC0, 0x6D, 0x80, 0x18, 0xA9, 0x76, +0x01, 0x6C, 0xC0, 0x6D, 0x80, 0x18, 0xB6, 0x76, 0x04, 0x94, 0x05, 0x92, 0x20, 0x68, 0xA0, 0xF0, 0x7A, 0xA4, 0x4D, 0xE8, 0x04, 0x6A, 0x6C, 0xEA, 0x2C, 0xEA, 0x2C, 0xE8, 0x17, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x4C, 0x9A, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x60, 0xA2, 0x2C, 0xEB, -0x60, 0xC2, 0x80, 0x18, 0xA9, 0x76, 0x30, 0xF0, +0x60, 0xC2, 0x80, 0x18, 0xB6, 0x76, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x70, 0x9A, 0x02, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x11, 0x10, 0x04, 0x92, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0xA3, 0xF3, 0x78, 0xA2, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, 0x04, 0x93, 0xA3, 0xF3, -0x58, 0xC3, 0x80, 0x18, 0xC6, 0x76, 0x30, 0xF0, +0x58, 0xC3, 0x80, 0x18, 0xD3, 0x76, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x82, 0xA2, 0x08, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x0D, 0x22, 0x02, 0x6A, 0x4D, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, @@ -37694,7 +37703,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x20, 0x6A, 0x6B, 0xF0, 0x08, 0x4A, 0x04, 0xD2, 0xA0, 0xF0, 0x5A, 0xA2, 0x01, 0x6B, 0x6C, 0xEA, 0x2C, 0xEA, 0x80, 0xF0, 0x08, 0x22, 0x83, 0x67, -0xC0, 0x6D, 0x80, 0x18, 0xA9, 0x76, 0x30, 0xF0, +0xC0, 0x6D, 0x80, 0x18, 0xB6, 0x76, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, 0x10, 0x4B, 0x60, 0x9B, 0x05, 0x94, 0x20, 0x68, 0x40, 0xA3, 0x8D, 0xE8, 0x01, 0x6C, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, @@ -37703,11 +37712,11 @@ u8 array_mp_8822c_fw_nic[] = { 0x18, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x4C, 0x9A, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x60, 0xA2, 0x2C, 0xEB, 0x60, 0xC2, 0x80, 0x18, -0xA9, 0x76, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, +0xB6, 0x76, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, 0x10, 0x4B, 0x60, 0x9B, 0x02, 0x6C, 0x40, 0xA3, 0x2C, 0xEA, 0x8D, 0xEA, 0x2C, 0xEA, 0x40, 0xC3, 0x05, 0x10, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0xC6, 0x76, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0x18, 0xD3, 0x76, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, 0x62, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x22, 0x02, 0x6A, 0x4D, 0xE8, 0xFF, 0x6A, 0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x2B, 0xF1, @@ -39492,7 +39501,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x6B, 0xF0, 0x08, 0x49, 0xA3, 0xF3, 0x5E, 0xA1, 0xFF, 0x68, 0x8C, 0xE8, 0x01, 0x72, 0x31, 0x60, 0x03, 0x22, 0x02, 0x72, 0x5F, 0x60, 0xC2, 0x10, -0x01, 0x6C, 0xC0, 0x6D, 0x80, 0x18, 0xA9, 0x76, +0x01, 0x6C, 0xC0, 0x6D, 0x80, 0x18, 0xB6, 0x76, 0x20, 0x6A, 0xA3, 0xF3, 0x7C, 0xA1, 0x4D, 0xE8, 0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x6A, 0x6C, 0xEA, 0xFF, 0x6C, 0x8C, 0xEA, 0x0B, 0x22, 0x30, 0xF0, @@ -39504,7 +39513,7 @@ u8 array_mp_8822c_fw_nic[] = { 0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, 0xA3, 0xF3, 0x58, 0xC1, 0x01, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x63, 0x10, 0x01, 0x6C, 0x00, 0xF3, 0x00, 0x6D, -0x80, 0x18, 0xA9, 0x76, 0xA3, 0xF3, 0x7C, 0xA1, +0x80, 0x18, 0xB6, 0x76, 0xA3, 0xF3, 0x7C, 0xA1, 0x20, 0x6A, 0x4D, 0xE8, 0x04, 0x6A, 0xFF, 0x6C, 0x6C, 0xEA, 0x8C, 0xEA, 0x8C, 0xE8, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x4C, 0x9A, @@ -39516,19 +39525,19 @@ u8 array_mp_8822c_fw_nic[] = { 0x6B, 0xEB, 0x6C, 0xEA, 0xA3, 0xF3, 0x58, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0x01, 0x6C, 0x03, 0xF1, 0xB8, 0x9A, 0x32, 0x10, 0x01, 0x6C, 0x01, 0xF4, -0x00, 0x6D, 0x80, 0x18, 0xA9, 0x76, 0xA3, 0xF3, +0x00, 0x6D, 0x80, 0x18, 0xB6, 0x76, 0xA3, 0xF3, 0x7C, 0xA1, 0x20, 0x6A, 0x4D, 0xE8, 0x04, 0x6A, 0xFF, 0x6C, 0x6C, 0xEA, 0x8C, 0xEA, 0x8C, 0xE8, 0x0F, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, 0x4C, 0x9A, 0x60, 0xA2, 0x8C, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0xB0, 0x9A, -0x01, 0x6C, 0x80, 0x18, 0xA9, 0x76, 0x16, 0x10, +0x01, 0x6C, 0x80, 0x18, 0xB6, 0x76, 0x16, 0x10, 0x02, 0x6A, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x0A, 0x22, 0xA3, 0xF3, 0x78, 0xA1, 0x02, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0x03, 0x6B, 0x6B, 0xEB, 0x6C, 0xEA, 0xA3, 0xF3, 0x58, 0xC1, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0xB0, 0x9A, 0x01, 0x6C, -0x80, 0x18, 0xC6, 0x76, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0x18, 0xD3, 0x76, 0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF4, 0x84, 0xA2, 0x08, 0x6A, 0xFF, 0x6B, 0x8C, 0xEA, 0x09, 0x22, 0x10, 0x6A, 0x8C, 0xEA, 0x6C, 0xEA, 0x02, 0x2A, 0x02, 0x6A, 0x01, 0x10, @@ -39924,700 +39933,707 @@ u8 array_mp_8822c_fw_nic[] = { 0x20, 0x6B, 0xA3, 0xF0, 0x64, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, 0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF2, 0x50, 0x9A, 0x03, 0x6C, 0x60, 0x9A, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6C, +0x1C, 0x6A, 0x6B, 0xF0, 0x08, 0x4C, 0x83, 0xF3, +0x5D, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF2, +0x50, 0x9A, 0x03, 0x6E, 0xFF, 0x6B, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x50, 0x9A, -0x00, 0xF5, 0x62, 0x33, 0x8C, 0xEB, 0x40, 0x9A, -0x01, 0x73, 0x42, 0x32, 0x52, 0x32, 0x8C, 0xEA, -0x05, 0x60, 0x0B, 0x2B, 0x02, 0x5A, 0x50, 0x6C, -0x0D, 0x60, 0x03, 0x10, 0x02, 0x5A, 0x0A, 0x60, -0x28, 0x6C, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, -0x06, 0x10, 0x02, 0x5A, 0x28, 0x6C, 0x03, 0x60, -0x14, 0x6C, 0x01, 0x10, 0x50, 0x6C, 0x80, 0x18, -0x62, 0x77, 0x80, 0x18, 0xD1, 0x00, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF1, 0x68, 0x9B, 0x00, 0x6A, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, -0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF1, 0x78, 0x9B, 0x40, 0xC3, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF2, 0x64, 0x9B, 0x40, 0xCB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF2, 0x7C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, -0x64, 0x9B, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0x6B, 0xF0, 0x08, 0x48, 0x00, 0x69, 0xA0, 0xF0, -0x24, 0xD8, 0xA0, 0xF1, 0x20, 0xC0, 0x80, 0x18, -0x55, 0x74, 0x80, 0x18, 0xD4, 0x75, 0x30, 0xF0, -0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x23, 0xF2, -0x3C, 0xC0, 0xEE, 0xF3, 0x04, 0x4A, 0xEE, 0xF3, -0x14, 0x4C, 0x00, 0x6B, 0x60, 0xC2, 0x70, 0xC2, -0x01, 0x4A, 0x62, 0x67, 0x8E, 0xEB, 0xF9, 0x2B, -0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x30, 0xF0, -0x20, 0x6A, 0x6B, 0xF0, 0x08, 0x4A, 0x63, 0xF3, -0x79, 0xC2, 0x63, 0xF3, 0x7A, 0xC2, 0x63, 0xF3, -0x7B, 0xC2, 0x63, 0xF3, 0x78, 0xC2, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x80, 0x18, 0x6C, 0x74, 0x80, 0x18, 0xE9, 0x74, -0x00, 0x18, 0xFF, 0xC1, 0x00, 0x18, 0x0E, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x50, 0x9A, -0x40, 0xEA, 0x80, 0x18, 0xB3, 0x41, 0x00, 0x18, -0x89, 0xF1, 0x80, 0x18, 0x04, 0x29, 0x80, 0x18, -0x57, 0x62, 0x80, 0x18, 0x11, 0x69, 0x00, 0x18, -0x14, 0xCD, 0x00, 0x18, 0xD6, 0xC5, 0x80, 0x18, -0x34, 0x40, 0x80, 0x18, 0x36, 0x6F, 0x30, 0xF0, -0x20, 0x6A, 0x60, 0xF4, 0x44, 0x9A, 0x40, 0xEA, -0x80, 0x18, 0xFC, 0x64, 0x80, 0x18, 0xF0, 0x26, -0x00, 0x18, 0x67, 0xE5, 0x01, 0x6A, 0x04, 0xD2, -0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF3, 0x4C, 0x9A, -0x10, 0xF0, 0x24, 0x6C, 0x01, 0x6F, 0x00, 0x6D, -0x64, 0x6E, 0xEB, 0xEF, 0x12, 0xF4, 0x11, 0x4C, -0x40, 0xEA, 0x00, 0x18, 0x83, 0xE5, 0x80, 0x18, -0x78, 0x00, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF0, -0x08, 0x4A, 0xC7, 0xF3, 0x88, 0xA2, 0x02, 0x6B, -0x6B, 0xEB, 0x8C, 0xEB, 0xC7, 0xF3, 0x68, 0xC2, -0x80, 0x18, 0x52, 0x6B, 0x07, 0x97, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF0, 0x08, 0x4A, 0x00, 0x6B, 0xA0, 0xF6, -0x62, 0xC2, 0xA0, 0xF6, 0x63, 0xC2, 0xA0, 0xF1, -0x60, 0xC2, 0xA0, 0xF1, 0x61, 0xC2, 0x20, 0xE8, +0x00, 0xF5, 0xA2, 0x35, 0xCC, 0xED, 0x40, 0x9A, +0x42, 0x32, 0x52, 0x32, 0xCC, 0xEA, 0x02, 0x6E, +0xAE, 0xEE, 0x0E, 0x26, 0x03, 0x75, 0x11, 0x60, +0x01, 0x75, 0x04, 0x60, 0x02, 0x5A, 0x50, 0x6C, +0x1C, 0x60, 0x03, 0x10, 0x02, 0x5A, 0x19, 0x60, +0x28, 0x6C, 0x87, 0xEA, 0x6C, 0xEC, 0x16, 0x10, +0x2D, 0x6B, 0x63, 0xF3, 0xD8, 0xC4, 0x83, 0xF3, +0x7D, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, +0x08, 0x4B, 0x83, 0xF3, 0x9D, 0xA3, 0x2D, 0x74, +0x03, 0x60, 0x55, 0x6C, 0x83, 0xF3, 0x9D, 0xC3, +0x02, 0x5A, 0x28, 0x6C, 0x03, 0x60, 0x14, 0x6C, +0x01, 0x10, 0x50, 0x6C, 0x80, 0x18, 0x6F, 0x77, +0x80, 0x18, 0xD1, 0x00, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF1, 0x68, 0x9B, 0x00, 0x6A, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x70, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, +0x78, 0x9B, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF2, 0x64, 0x9B, 0x40, 0xCB, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF2, 0x7C, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF1, 0x64, 0x9B, +0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, +0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF0, 0x08, 0x48, +0x00, 0x69, 0xA0, 0xF0, 0x24, 0xD8, 0xA0, 0xF1, +0x20, 0xC0, 0x80, 0x18, 0x55, 0x74, 0x80, 0x18, +0xE1, 0x75, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, +0x20, 0x6C, 0x23, 0xF2, 0x3C, 0xC0, 0xEE, 0xF3, +0x04, 0x4A, 0xEE, 0xF3, 0x14, 0x4C, 0x00, 0x6B, +0x60, 0xC2, 0x70, 0xC2, 0x01, 0x4A, 0x62, 0x67, +0x8E, 0xEB, 0xF9, 0x2B, 0x07, 0x97, 0x06, 0x91, +0x05, 0x90, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF0, +0x08, 0x4A, 0x63, 0xF3, 0x79, 0xC2, 0x63, 0xF3, +0x7A, 0xC2, 0x63, 0xF3, 0x7B, 0xC2, 0x63, 0xF3, +0x78, 0xC2, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x80, 0x18, 0x6C, 0x74, +0x80, 0x18, 0xF6, 0x74, 0x00, 0x18, 0xFF, 0xC1, +0x00, 0x18, 0x0E, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x50, 0x9A, 0x40, 0xEA, 0x80, 0x18, +0xB3, 0x41, 0x00, 0x18, 0x8A, 0xF1, 0x80, 0x18, +0x04, 0x29, 0x80, 0x18, 0x57, 0x62, 0x80, 0x18, +0x11, 0x69, 0x00, 0x18, 0x14, 0xCD, 0x00, 0x18, +0xD6, 0xC5, 0x80, 0x18, 0x34, 0x40, 0x80, 0x18, +0x36, 0x6F, 0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, +0x44, 0x9A, 0x40, 0xEA, 0x80, 0x18, 0xFC, 0x64, +0x80, 0x18, 0xF0, 0x26, 0x00, 0x18, 0x67, 0xE5, +0x01, 0x6A, 0x04, 0xD2, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0xF3, 0x4C, 0x9A, 0x10, 0xF0, 0x24, 0x6C, +0x01, 0x6F, 0x00, 0x6D, 0x64, 0x6E, 0xEB, 0xEF, +0x12, 0xF4, 0x11, 0x4C, 0x40, 0xEA, 0x00, 0x18, +0x83, 0xE5, 0x80, 0x18, 0x78, 0x00, 0x30, 0xF0, +0x20, 0x6A, 0x6B, 0xF0, 0x08, 0x4A, 0xC7, 0xF3, +0x88, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, +0xC7, 0xF3, 0x68, 0xC2, 0x80, 0x18, 0x52, 0x6B, +0x07, 0x97, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF0, 0x08, 0x4A, -0x87, 0xF3, 0x61, 0xA2, 0x0F, 0x23, 0x87, 0xF3, -0x60, 0xA2, 0x0C, 0x23, 0x87, 0xF3, 0x66, 0xA2, -0x09, 0x23, 0x87, 0xF3, 0x62, 0xA2, 0x06, 0x23, -0x87, 0xF3, 0x64, 0xA2, 0x03, 0x23, 0x87, 0xF3, -0x43, 0xA2, 0x1E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x70, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, -0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x40, 0x9A, -0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF6, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF0, 0x50, 0x9A, 0x60, 0xDA, 0xF0, 0x17, -0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x48, 0x98, 0x0A, 0xD4, 0x04, 0x05, -0xE0, 0xF1, 0x14, 0x6C, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x15, 0x6C, -0x30, 0xF0, 0x20, 0x69, 0x40, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x6B, 0xF0, 0x08, 0x49, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x16, 0x6C, 0x41, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x17, 0x6C, -0x42, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x18, 0x6C, 0x43, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x19, 0x6C, -0x44, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0xBD, 0x67, 0x90, 0xA5, 0x87, 0xF3, -0x44, 0xA1, 0x0F, 0x6B, 0x8C, 0xEB, 0x50, 0x32, -0x6D, 0xEA, 0x0A, 0x93, 0x04, 0x05, 0xE0, 0xF1, -0x1B, 0x6C, 0x45, 0xC3, 0xC0, 0xF3, 0x48, 0x98, -0x40, 0xEA, 0x87, 0xF3, 0x46, 0xA1, 0x87, 0xF3, -0x61, 0xA1, 0x0A, 0x95, 0x4C, 0x32, 0x74, 0x33, -0x6D, 0xEA, 0x87, 0xF3, 0x60, 0xA1, 0x6D, 0xEA, -0x46, 0xC5, 0x87, 0xF3, 0x42, 0xA1, 0x87, 0xF3, -0x63, 0xA1, 0x48, 0x32, 0x78, 0x33, 0x6D, 0xEA, -0x33, 0x6B, 0x6D, 0xEA, 0x47, 0xC5, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x00, 0x6B, 0xA0, 0xF6, 0x62, 0xC2, 0xA0, 0xF6, +0x63, 0xC2, 0xA0, 0xF1, 0x60, 0xC2, 0xA0, 0xF1, +0x61, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x6B, 0xF0, 0x08, 0x4A, 0x87, 0xF3, 0x61, 0xA2, +0x0F, 0x23, 0x87, 0xF3, 0x60, 0xA2, 0x0C, 0x23, +0x87, 0xF3, 0x66, 0xA2, 0x09, 0x23, 0x87, 0xF3, +0x62, 0xA2, 0x06, 0x23, 0x87, 0xF3, 0x64, 0xA2, +0x03, 0x23, 0x87, 0xF3, 0x43, 0xA2, 0x1E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x70, 0x9A, +0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, +0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF3, 0x40, 0x9A, 0x00, 0x6B, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF0, 0x50, 0x9A, +0x60, 0xDA, 0xF0, 0x17, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x48, 0x98, -0x24, 0x67, 0x04, 0x05, 0xE0, 0xF1, 0x10, 0x6C, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, -0xE0, 0xF1, 0x11, 0x6C, 0x40, 0xC1, 0xC0, 0xF3, -0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x04, 0x05, 0xE0, 0xF1, 0x12, 0x6C, 0x41, 0xC1, -0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x13, 0x6C, -0x42, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x0A, 0xD4, 0x04, 0x05, 0xE0, 0xF1, 0x14, 0x6C, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x15, 0x6C, 0x30, 0xF0, 0x20, 0x69, +0x40, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x6B, 0xF0, 0x08, 0x49, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x16, 0x6C, +0x41, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x17, 0x6C, 0x42, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x18, 0x6C, +0x43, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x19, 0x6C, 0x44, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0xBD, 0x67, +0x90, 0xA5, 0x87, 0xF3, 0x44, 0xA1, 0x0F, 0x6B, +0x8C, 0xEB, 0x50, 0x32, 0x6D, 0xEA, 0x0A, 0x93, +0x04, 0x05, 0xE0, 0xF1, 0x1B, 0x6C, 0x45, 0xC3, +0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x87, 0xF3, +0x46, 0xA1, 0x87, 0xF3, 0x61, 0xA1, 0x0A, 0x95, +0x4C, 0x32, 0x74, 0x33, 0x6D, 0xEA, 0x87, 0xF3, +0x60, 0xA1, 0x6D, 0xEA, 0x46, 0xC5, 0x87, 0xF3, +0x42, 0xA1, 0x87, 0xF3, 0x63, 0xA1, 0x48, 0x32, +0x78, 0x33, 0x6D, 0xEA, 0x33, 0x6B, 0x6D, 0xEA, +0x47, 0xC5, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x48, 0x98, 0x24, 0x67, 0x04, 0x05, +0xE0, 0xF1, 0x10, 0x6C, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x11, 0x6C, +0x40, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, -0x1C, 0x6C, 0x43, 0xC1, 0xC0, 0xF3, 0x48, 0x98, +0x12, 0x6C, 0x41, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, -0xE0, 0xF1, 0x1D, 0x6C, 0x44, 0xC1, 0xC0, 0xF3, +0xE0, 0xF1, 0x13, 0x6C, 0x42, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x04, 0x05, 0xE0, 0xF1, 0x1E, 0x6C, 0x45, 0xC1, +0x04, 0x05, 0xE0, 0xF1, 0x1C, 0x6C, 0x43, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0xE0, 0xF1, 0x1F, 0x6C, 0x04, 0x05, -0x46, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x47, 0xC1, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x04, 0x00, -0x90, 0x67, 0x80, 0x18, 0x0B, 0x75, 0xA0, 0xF1, -0x02, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, -0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0x60, 0x9B, -0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, -0x64, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, -0xA0, 0xF1, 0x0A, 0x72, 0x80, 0xC3, 0x01, 0x48, -0xE8, 0x61, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, -0x42, 0x75, 0xA0, 0xF1, 0x0A, 0x6A, 0x1F, 0xF7, +0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x1D, 0x6C, +0x44, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, +0x1E, 0x6C, 0x45, 0xC1, 0xC0, 0xF3, 0x48, 0x98, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0xE0, 0xF1, +0x1F, 0x6C, 0x04, 0x05, 0x46, 0xC1, 0xC0, 0xF3, +0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, +0x47, 0xC1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD0, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, +0x18, 0x75, 0xA0, 0xF1, 0x02, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0x60, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0x64, 0x9B, 0x80, 0xA0, -0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0F, 0x72, -0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE3, 0xF6, 0x44, 0x9A, 0x19, 0x6B, -0x60, 0xC2, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, -0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF0, -0x08, 0x48, 0x87, 0xF3, 0x40, 0xA0, 0x0E, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, -0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, -0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, -0x87, 0xF3, 0x40, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0x6B, 0xF0, 0x08, 0x48, 0x87, 0xF3, 0x41, 0xA0, +0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0A, 0x72, +0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x04, 0x00, +0x90, 0x67, 0x80, 0x18, 0x4F, 0x75, 0xA0, 0xF1, +0x0A, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, +0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0x60, 0x9B, +0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, +0x64, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, +0xA0, 0xF1, 0x0F, 0x72, 0x80, 0xC3, 0x01, 0x48, +0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, +0x44, 0x9A, 0x19, 0x6B, 0x60, 0xC2, 0x09, 0x97, +0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, +0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, +0x20, 0x68, 0x6B, 0xF0, 0x08, 0x48, 0x87, 0xF3, +0x40, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, +0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, +0x07, 0x6A, 0x6C, 0xEA, 0x87, 0xF3, 0x40, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF0, 0x08, 0x48, +0x87, 0xF3, 0x41, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x56, 0x32, 0x87, 0xF3, 0x41, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF0, 0x08, 0x48, +0x87, 0xF3, 0x46, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, +0x50, 0xA4, 0x18, 0x6B, 0x6C, 0xEA, 0x4F, 0x32, +0x87, 0xF3, 0x46, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0x6B, 0xF0, 0x08, 0x48, 0x87, 0xF3, 0x44, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x56, 0x32, -0x87, 0xF3, 0x41, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0x6B, 0xF0, 0x08, 0x48, 0x87, 0xF3, 0x46, 0xA0, -0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x9D, 0x67, 0x50, 0xA4, 0x18, 0x6B, -0x6C, 0xEA, 0x4F, 0x32, 0x87, 0xF3, 0x46, 0xC0, +0x48, 0x9A, 0xE0, 0xF1, 0x1C, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x52, 0x32, +0x87, 0xF3, 0x44, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0x6B, 0xF0, 0x08, 0x48, 0x87, 0xF3, 0x42, 0xA0, +0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x03, 0x6A, +0x6C, 0xEA, 0x87, 0xF3, 0x42, 0xC0, 0x30, 0xF0, +0x20, 0x68, 0x6B, 0xF0, 0x08, 0x48, 0x87, 0xF3, +0x43, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, +0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, +0x30, 0x6B, 0x6C, 0xEA, 0x53, 0x32, 0x87, 0xF3, +0x43, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x69, +0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x19, 0x6C, +0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF0, 0x08, 0x48, -0x87, 0xF3, 0x44, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1C, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x52, 0x32, 0x87, 0xF3, 0x44, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF0, 0x08, 0x48, -0x87, 0xF3, 0x42, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, -0x70, 0xA4, 0x03, 0x6A, 0x6C, 0xEA, 0x87, 0xF3, -0x42, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0x6B, 0xF0, -0x08, 0x48, 0x87, 0xF3, 0x43, 0xA0, 0x0F, 0x2A, +0x52, 0x32, 0x87, 0xF3, 0x44, 0xC0, 0xC0, 0xF3, +0x48, 0x99, 0xE0, 0xF1, 0x1B, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, +0x6C, 0xEA, 0x87, 0xF3, 0x40, 0xC0, 0x43, 0x67, +0x18, 0x6B, 0x4C, 0xEB, 0x6F, 0x33, 0x87, 0xF3, +0x66, 0xC0, 0x4F, 0x72, 0x56, 0x33, 0x87, 0xF3, +0x61, 0xC0, 0x0E, 0x61, 0xC0, 0xF3, 0x48, 0x99, +0xE0, 0xF1, 0x1A, 0x6C, 0x00, 0xF0, 0x11, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x51, 0xA3, 0x57, 0x72, +0x03, 0x61, 0x02, 0x6A, 0x87, 0xF3, 0x46, 0xC0, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x30, 0x6B, 0x6C, 0xEA, -0x53, 0x32, 0x87, 0xF3, 0x43, 0xC0, 0x07, 0x97, -0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x48, 0x99, -0xE0, 0xF1, 0x19, 0x6C, 0x04, 0x05, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x30, 0xF0, 0x20, 0x68, -0x6B, 0xF0, 0x08, 0x48, 0x52, 0x32, 0x87, 0xF3, -0x44, 0xC0, 0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, -0x1B, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, -0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, 0x87, 0xF3, -0x40, 0xC0, 0x43, 0x67, 0x18, 0x6B, 0x4C, 0xEB, -0x6F, 0x33, 0x87, 0xF3, 0x66, 0xC0, 0x4F, 0x72, -0x56, 0x33, 0x87, 0xF3, 0x61, 0xC0, 0x0E, 0x61, -0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x1A, 0x6C, -0x00, 0xF0, 0x11, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x51, 0xA3, 0x57, 0x72, 0x03, 0x61, 0x02, 0x6A, -0x87, 0xF3, 0x46, 0xC0, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x90, 0xA3, -0x0C, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xEB, -0x6B, 0xF0, 0x08, 0x4A, 0x6B, 0x33, 0x9A, 0x34, -0x87, 0xF3, 0x62, 0xC2, 0x87, 0xF3, 0x83, 0xC2, -0x80, 0x18, 0x91, 0x75, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF6, 0x44, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, -0x6C, 0xEA, 0xFD, 0x72, 0x02, 0x61, 0x80, 0x18, -0x6C, 0x75, 0x80, 0x18, 0xF0, 0x74, 0x09, 0x97, -0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x40, 0x9A, -0x01, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x84, 0x9A, -0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF0, 0x84, 0x9A, 0x08, 0x6D, +0x7D, 0x67, 0x90, 0xA3, 0x0C, 0x6B, 0x30, 0xF0, +0x20, 0x6A, 0x8C, 0xEB, 0x6B, 0xF0, 0x08, 0x4A, +0x6B, 0x33, 0x9A, 0x34, 0x87, 0xF3, 0x62, 0xC2, +0x87, 0xF3, 0x83, 0xC2, 0x80, 0x18, 0x9E, 0x75, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF6, 0x44, 0x9A, +0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0xFD, 0x72, +0x02, 0x61, 0x80, 0x18, 0x79, 0x75, 0x80, 0x18, +0xFD, 0x74, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, +0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF7, 0x40, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF7, 0x84, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF7, 0x68, 0x9A, 0xFD, 0x6A, 0xFF, 0x6C, -0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x40, 0xA3, -0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x48, 0x9A, 0x03, 0xF1, 0x88, 0x9B, -0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, 0x40, 0xEA, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, -0x68, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x6D, 0xE4, -0x80, 0x72, 0x04, 0x6C, 0x80, 0xC3, 0xF5, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF3, 0x8C, 0x9B, 0x80, 0xF2, 0x48, 0x9A, -0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF0, +0x84, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x68, 0x9A, +0xFD, 0x6A, 0xFF, 0x6C, 0xA0, 0xA3, 0xAC, 0xEA, +0x40, 0xC3, 0x40, 0xA3, 0x01, 0x6D, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, +0x03, 0xF1, 0x88, 0x9B, 0x00, 0x6D, 0x02, 0xF0, +0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF1, 0x68, 0x9B, 0x54, 0x34, +0x01, 0x4A, 0x6D, 0xE4, 0x80, 0x72, 0x04, 0x6C, +0x80, 0xC3, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF3, 0x8C, 0x9B, +0x80, 0xF2, 0x48, 0x9A, 0x00, 0x6D, 0x00, 0xF4, +0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0x6B, 0xF0, 0x08, 0x4B, 0x52, 0x9B, 0x8D, 0xEA, +0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, +0x6C, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, -0x52, 0x9B, 0x8D, 0xEA, 0x52, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF7, 0x6C, 0x9B, 0x80, 0xDB, +0xB2, 0x9B, 0x8F, 0xEA, 0xAC, 0xEA, 0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x68, 0x9B, -0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF0, 0x08, 0x4B, 0xB2, 0x9B, 0x8F, 0xEA, -0xAC, 0xEA, 0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF7, 0x4C, 0x9A, 0x80, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x5E, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0xA2, 0xF6, -0x10, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x48, 0x9B, -0xAD, 0xEA, 0x6B, 0xF0, 0x48, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF6, 0x68, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x68, 0x9B, -0x32, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, -0x08, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0x70, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x6C, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF0, 0x08, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, -0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, -0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x70, 0x9B, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, 0x43, 0x9B, -0xAD, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF7, 0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x78, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, -0x08, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0x7C, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x7C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x05, 0x5C, 0x63, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0xC2, 0xF6, 0x04, 0x4A, 0x89, 0xE2, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, +0x4C, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0xA2, 0xF6, 0x10, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF0, 0x88, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, -0x6B, 0xF0, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF6, 0x48, 0x9A, 0x35, 0x10, +0x6B, 0xF0, 0x48, 0x9B, 0xAD, 0xEA, 0x6B, 0xF0, +0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, +0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF0, 0x68, 0x9B, 0x32, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, 0x41, 0x9B, +0xAD, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF7, 0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF0, 0x6C, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, -0x81, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x41, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, -0x50, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF0, 0x08, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF0, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF7, 0x54, 0x9A, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, -0x83, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x43, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x78, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, -0x58, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, 0x84, 0x9B, -0xAF, 0xEA, 0x8C, 0xEA, 0x44, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x7C, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x5C, 0x9A, -0xA0, 0xDA, 0x20, 0xE8, 0x01, 0x74, 0x15, 0x60, -0x03, 0x24, 0x02, 0x74, 0x23, 0x60, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, -0x54, 0x9B, 0xAD, 0xEA, 0x54, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x68, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x6C, 0x9B, -0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, -0x08, 0x4B, 0x55, 0x9B, 0xAD, 0xEA, 0x55, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, 0x6C, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, -0x60, 0x9B, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF0, 0x08, 0x4B, 0x56, 0x9B, 0xAD, 0xEA, -0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, -0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x64, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x01, 0x74, 0x16, 0x60, 0x03, 0x24, 0x02, 0x74, -0x25, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF0, 0x08, 0x4B, 0x94, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF1, 0x48, 0x9A, 0x23, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, -0x95, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x55, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x60, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF6, -0x4C, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF0, 0x08, 0x4B, 0x96, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x40, 0x9A, 0xA0, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, -0xC3, 0xF0, 0x88, 0x9C, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF0, 0x48, 0xDB, 0x6B, 0xF0, -0x08, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, -0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xC3, 0xF0, 0x8C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0xC3, 0xF0, 0x90, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF0, 0x98, 0x9C, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF0, -0x9C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF0, 0x8C, 0x9C, 0x54, 0xDB, 0x55, 0xDB, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, -0x80, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF0, 0x84, 0x9C, 0x56, 0xDB, 0x40, 0xDC, -0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, -0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF6, 0x68, 0x9B, -0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF7, 0x70, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0x74, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, -0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF7, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF1, 0x68, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF6, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, -0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF7, 0x6C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, 0xA4, 0x9A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x12, 0x6E, -0x6B, 0xF0, 0xC8, 0xDB, 0x01, 0xF7, 0x01, 0x6A, -0x6B, 0xF0, 0x08, 0x4B, 0x00, 0x6C, 0x42, 0xDB, -0x43, 0xDB, 0xA1, 0xDB, 0x84, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x68, 0x9B, 0xC0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x6C, 0x9B, +0x42, 0x9B, 0xAD, 0xEA, 0x42, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF7, 0x74, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x70, 0x9B, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, +0x08, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, -0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, 0x44, 0x9B, +0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF7, 0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF0, 0x7C, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0xC2, 0xF6, +0x04, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x88, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0x6B, 0xF0, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x68, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF6, +0x48, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x6B, 0xF0, 0x08, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF0, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF7, 0x50, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, +0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x70, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, +0x54, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x6B, 0xF0, 0x08, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF0, 0x5C, 0x9A, 0x80, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x80, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xAB, 0xF0, 0x50, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF7, 0x58, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, +0x08, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, +0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF7, 0x5C, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, +0x01, 0x74, 0x15, 0x60, 0x03, 0x24, 0x02, 0x74, +0x23, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x6B, 0xF0, 0x08, 0x4B, 0x54, 0x9B, 0xAD, 0xEA, +0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x6C, 0x9B, 0x21, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, 0x55, 0x9B, +0xAD, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF6, 0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x60, 0x9B, 0x10, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, +0x56, 0x9B, 0xAD, 0xEA, 0x56, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF7, 0x60, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x64, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x01, 0x74, 0x16, 0x60, +0x03, 0x24, 0x02, 0x74, 0x25, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, +0x94, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, +0x48, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0x6B, 0xF0, 0x08, 0x4B, 0x95, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF6, 0x4C, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, +0x96, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x56, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x64, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, +0x40, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF0, 0x88, 0x9C, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, +0x48, 0xDB, 0x6B, 0xF0, 0x08, 0x4B, 0x41, 0xDB, +0x42, 0xDB, 0x43, 0xDB, 0x44, 0xDB, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF0, 0x8C, 0x9C, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xC3, 0xF0, +0x90, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xC3, 0xF0, 0x98, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xC3, 0xF0, 0x9C, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, 0x8C, 0x9C, +0x54, 0xDB, 0x55, 0xDB, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xE3, 0xF0, 0x80, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, 0x84, 0x9C, +0x56, 0xDB, 0x40, 0xDC, 0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF7, 0x88, 0x9B, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF0, 0x08, 0x4A, 0xC0, 0xF1, 0x0F, 0x6D, -0xFF, 0x6B, 0xB4, 0xDA, 0x95, 0xDA, 0x76, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x4C, 0x9A, -0xA0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, -0x40, 0x9A, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF0, 0x44, 0x9A, 0x60, 0xDA, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xE5, 0x76, -0x80, 0x18, 0x04, 0x77, 0x80, 0x18, 0x1C, 0x77, -0x80, 0x18, 0x39, 0x77, 0x80, 0x18, 0x33, 0x77, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x76, 0x77, 0x30, 0xF0, 0x20, 0x6B, -0x6B, 0xF0, 0x08, 0x4B, 0x22, 0xF6, 0x54, 0xC3, -0x00, 0x6A, 0x22, 0xF6, 0x55, 0xC3, 0x80, 0x18, -0x15, 0x76, 0x80, 0x18, 0xA4, 0x79, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x4C, 0x9A, 0x3F, 0x6B, -0x60, 0xC2, 0x80, 0x18, 0x06, 0x76, 0x80, 0x18, -0x0A, 0x76, 0x80, 0x18, 0x1D, 0x76, 0x80, 0x18, -0xEE, 0x78, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x6B, 0xD6, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x44, 0x9A, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, 0x48, 0x9A, -0xE0, 0xF1, 0x1B, 0x6B, 0x6B, 0xEB, 0x60, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x78, 0x9A, -0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, -0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF0, 0x6C, 0x9A, -0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF6, 0x8C, 0x9C, -0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x44, 0xF0, 0x40, 0x9A, -0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x4C, 0xEB, -0x62, 0x33, 0x03, 0x6A, 0x72, 0x33, 0x4C, 0xEB, -0x02, 0x6A, 0x04, 0x23, 0x01, 0x73, 0x01, 0x6A, -0x01, 0x60, 0x03, 0x6A, 0x20, 0xE8, 0x00, 0x65, -0x10, 0xF0, 0x23, 0x6A, 0xCB, 0xF4, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xEB, 0xF4, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xBB, 0xF5, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x50, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x35, 0xF3, 0x09, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x48, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x24, 0xF0, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x4C, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0xF5, 0xF2, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x54, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0xF1, 0xF7, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x50, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0xD8, 0xF0, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x54, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x18, 0xF0, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x54, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x2A, 0xF1, 0x09, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x58, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x6A, 0xF2, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x5C, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x30, 0xF1, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x40, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x4E, 0xF0, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x44, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xAE, 0xF0, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x48, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x12, 0xF7, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x4C, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x73, 0xF5, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x58, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x17, 0xF0, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x50, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x97, 0xF0, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x54, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x2D, 0xF1, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x5C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x8D, 0xF3, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x40, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x76, 0xF2, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x5C, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0x16, 0xF3, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x40, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xC2, 0xF5, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x48, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x42, 0xF5, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x4C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x8E, 0xF1, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x44, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xD7, 0xF0, 0x09, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x54, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x29, 0xF1, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x58, 0xDB, -0x10, 0xF0, 0x24, 0x6A, 0xD7, 0xF2, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x5C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x69, 0xF1, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x40, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x49, 0xF4, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x50, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0xD4, 0xF7, 0x11, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x44, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x74, 0xF0, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xC9, 0xF1, 0x19, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x54, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xD0, 0xF0, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x4C, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xB0, 0xF3, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x58, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x4F, 0xF1, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x48, 0xDB, -0x10, 0xF0, 0x21, 0x6A, 0xB9, 0xF1, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF5, 0x50, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x8F, 0xF0, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x4C, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0xCE, 0xF6, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x50, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x2F, 0xF0, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x54, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x8B, 0xF2, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x44, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0xAB, 0xF2, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x4C, 0xDB, -0x10, 0xF0, 0x23, 0x6A, 0x8B, 0xF2, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x48, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x12, 0xF3, 0x09, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x50, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xD1, 0xF5, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x48, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x52, 0xF0, 0x1D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x50, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xB5, 0xF0, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x40, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x96, 0xF2, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x48, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x76, 0xF4, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF5, 0x4C, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xF4, 0xF6, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x44, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x15, 0xF0, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x50, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x96, 0xF3, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x54, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0x76, 0xF1, 0x15, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x58, 0xDB, -0x10, 0xF0, 0x32, 0x6A, 0xF6, 0xF0, 0x09, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF5, 0x5C, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x55, 0xF0, 0x11, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x40, 0xDB, -0x10, 0xF0, 0x31, 0x6A, 0x89, 0xF7, 0x05, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x50, 0xDB, -0x10, 0xF0, 0x30, 0x6A, 0x81, 0xF0, 0x0D, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x54, 0xDB, -0x10, 0xF0, 0x30, 0x6A, 0x23, 0xF4, 0x01, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x58, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF1, 0x0C, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x5C, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xAD, 0xF6, 0x04, 0x4A, -0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0xCE, 0xF2, 0x68, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, -0x20, 0xF6, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0xCE, 0xF2, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xCE, 0xF3, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x0E, 0xF4, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2F, 0xF7, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x31, 0xF7, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x32, 0xF2, 0x1B, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x52, 0xF2, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x52, 0xF2, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x0B, 0xF1, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x30, 0xF0, 0x20, 0x6B, 0x4E, 0xF4, 0x04, 0x4A, -0x60, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF6, 0x0C, 0x4B, 0x4E, 0xF4, 0x10, 0x4A, -0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x4E, 0xF4, -0x1C, 0x4A, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF4, 0x1C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x6E, 0xF5, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x21, 0x6A, -0x32, 0xF4, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x6E, 0xF4, 0x08, 0x4B, 0x80, 0xF6, 0x60, 0xDC, -0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x00, 0x4C, -0xEE, 0xF4, 0x04, 0x4B, 0x61, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x2E, 0xF4, 0x04, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0x80, 0xF6, 0x6C, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x0F, 0xF6, 0x14, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x68, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xEF, 0xF5, 0x00, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x6C, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF1, 0x02, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x70, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x0B, 0xF1, 0x10, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x74, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x0F, 0xF6, 0x1C, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x78, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF1, 0x1E, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xC0, 0xF6, 0x7C, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF1, 0x10, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xE0, 0xF6, 0x60, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0x6B, 0xF1, 0x17, 0x4B, 0x30, 0xF0, -0x20, 0x6C, 0xE0, 0xF6, 0x64, 0xDC, 0x30, 0xF0, -0x20, 0x6B, 0xC0, 0xF6, 0x40, 0xDB, 0x20, 0xE8, +0xA3, 0xF6, 0x68, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, +0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x23, 0xF7, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x23, 0xF7, 0x78, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0x7C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, +0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF6, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x43, 0xF7, 0x60, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF7, 0x6C, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF7, 0xA4, 0x9A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF3, 0x12, 0x6E, 0x6B, 0xF0, 0xC8, 0xDB, +0x01, 0xF7, 0x01, 0x6A, 0x6B, 0xF0, 0x08, 0x4B, +0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, +0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, +0x68, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF0, 0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF0, 0x70, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF0, 0x78, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF0, +0x5C, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x80, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xAB, 0xF0, +0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF7, 0x88, 0x9B, +0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF0, 0x08, 0x4A, +0xC0, 0xF1, 0x0F, 0x6D, 0xFF, 0x6B, 0xB4, 0xDA, +0x95, 0xDA, 0x76, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0xE3, 0xF0, 0x4C, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF0, 0x40, 0x9A, 0x80, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, 0x44, 0x9A, +0x60, 0xDA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xF2, 0x76, 0x80, 0x18, 0x11, 0x77, +0x80, 0x18, 0x29, 0x77, 0x80, 0x18, 0x46, 0x77, +0x80, 0x18, 0x40, 0x77, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x83, 0x77, +0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF0, 0x08, 0x4B, +0x22, 0xF6, 0x54, 0xC3, 0x00, 0x6A, 0x22, 0xF6, +0x55, 0xC3, 0x80, 0x18, 0x22, 0x76, 0x80, 0x18, +0xB1, 0x79, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, +0x4C, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x80, 0x18, +0x13, 0x76, 0x80, 0x18, 0x17, 0x76, 0x80, 0x18, +0x2A, 0x76, 0x80, 0x18, 0xFB, 0x78, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x6B, 0xD6, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x48, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, +0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF2, 0x78, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, +0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, +0x24, 0xF0, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, +0xE3, 0xF6, 0x8C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x44, 0xF0, 0x40, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, +0x40, 0xAA, 0x4C, 0xEB, 0x62, 0x33, 0x03, 0x6A, +0x72, 0x33, 0x4C, 0xEB, 0x02, 0x6A, 0x04, 0x23, +0x01, 0x73, 0x01, 0x6A, 0x01, 0x60, 0x03, 0x6A, +0x20, 0xE8, 0x00, 0x65, 0x10, 0xF0, 0x23, 0x6A, +0xCB, 0xF4, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xEB, 0xF4, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xDB, 0xF5, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x35, 0xF3, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x24, 0xF0, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xF5, 0xF2, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xF1, 0xF7, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xD8, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x18, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x2A, 0xF1, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF2, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x6A, 0xF2, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF2, 0x5C, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x30, 0xF1, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x4E, 0xF0, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xAE, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x12, 0xF7, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x73, 0xF5, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x17, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x97, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x2D, 0xF1, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x8D, 0xF3, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x76, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0x16, 0xF3, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xC2, 0xF5, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x42, 0xF5, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x8E, 0xF1, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xD7, 0xF0, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x29, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x24, 0x6A, +0xD7, 0xF2, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x69, 0xF1, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x49, 0xF4, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0xD4, 0xF7, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF5, 0x44, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x74, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xC0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xC9, 0xF1, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x40, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xD0, 0xF0, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x4C, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xB0, 0xF3, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x4F, 0xF1, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x48, 0xDB, 0x10, 0xF0, 0x21, 0x6A, +0xB9, 0xF1, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x60, 0xF5, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x8F, 0xF0, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF5, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0xCE, 0xF6, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF5, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x2F, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF5, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x8B, 0xF2, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0xAB, 0xF2, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, +0x8B, 0xF2, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x12, 0xF3, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xD1, 0xF5, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x48, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x52, 0xF0, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x50, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xB5, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x40, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x96, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x48, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x76, 0xF4, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF5, 0x4C, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xF4, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x44, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x15, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x50, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x96, 0xF3, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x54, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0x76, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x58, 0xDB, 0x10, 0xF0, 0x32, 0x6A, +0xF6, 0xF0, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF5, 0x5C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x55, 0xF0, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0xA0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x31, 0x6A, +0x89, 0xF7, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, +0x81, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x54, 0xDB, 0x10, 0xF0, 0x30, 0x6A, +0x23, 0xF4, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x0B, 0xF1, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x00, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xAD, 0xF6, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, +0x20, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0xCE, 0xF2, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6C, 0x20, 0xF6, 0x64, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0xCE, 0xF2, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xCE, 0xF3, 0x1C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x0E, 0xF4, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x2F, 0xF7, 0x04, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0x31, 0xF7, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0x32, 0xF2, 0x1B, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x40, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0x52, 0xF2, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x44, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0x52, 0xF2, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x0B, 0xF1, 0x1C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x21, 0xF0, 0x00, 0x4B, 0x80, 0xF2, 0x08, 0x4A, -0x13, 0x10, 0x80, 0x9A, 0x10, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF1, 0xA8, 0x9C, 0x30, 0xF0, -0x20, 0x6E, 0x03, 0xF1, 0xD4, 0x9E, 0x80, 0x9D, -0xCD, 0xEC, 0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6C, -0x84, 0xF0, 0x84, 0x9C, 0x40, 0xDC, 0x04, 0x4A, -0x43, 0xEB, 0xEB, 0x60, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, 0x5C, 0x9A, -0xE5, 0xF6, 0x1F, 0x6B, 0xFF, 0x6C, 0x60, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x48, 0x9A, -0x10, 0x6B, 0x40, 0x6D, 0x60, 0xC2, 0x30, 0xF0, -0x20, 0x6A, 0x84, 0xF0, 0x4C, 0x9A, 0x01, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, -0x54, 0x9A, 0x60, 0xA2, 0x8C, 0xEB, 0xAD, 0xEB, -0x8C, 0xEB, 0x60, 0xC2, 0x80, 0xA2, 0xF8, 0x6B, -0x8C, 0xEB, 0x60, 0xC2, 0x80, 0xA2, 0xF7, 0x6B, -0x8C, 0xEB, 0x60, 0xC2, 0x80, 0xA2, 0xEF, 0x6B, -0x8C, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, -0x84, 0xF0, 0x50, 0x9A, 0x00, 0xF2, 0x01, 0x6C, -0x8B, 0xEC, 0x60, 0x9A, 0x8C, 0xEB, 0x60, 0xDA, -0x60, 0x9A, 0x00, 0xF1, 0x00, 0x4C, 0x8C, 0xEB, -0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, -0x74, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF2, -0x94, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x58, 0x9A, -0x60, 0xA2, 0x04, 0x5B, 0x02, 0x60, 0x04, 0x6B, -0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, -0x40, 0x9A, 0x60, 0xAA, 0xFF, 0xF7, 0x1F, 0x6A, -0x6C, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF1, -0x64, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF0, 0x74, 0x9A, 0x7F, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xD5, 0x84, 0xF0, 0xBC, 0x9B, -0xFF, 0x6A, 0x40, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, -0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, -0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x40, 0x9A, -0x00, 0xAA, 0x04, 0x92, 0x2C, 0xE8, 0x2A, 0xEA, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x44, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x04, 0x93, -0x2C, 0xEA, 0x6C, 0xE8, 0x07, 0xEA, 0x2C, 0xE8, -0x50, 0x67, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, -0x2C, 0xED, 0xFF, 0x68, 0x0C, 0xEC, 0x2C, 0xEE, -0x2A, 0xED, 0x05, 0xD4, 0x04, 0xD5, 0x06, 0xD6, -0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, -0x7C, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, -0x0C, 0xEA, 0x8C, 0xEA, 0x05, 0x94, 0x8D, 0xEA, -0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xA4, 0xF0, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xA3, 0xF4, 0x8C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF0, 0x94, 0x9C, -0x8D, 0xEA, 0xCD, 0xEA, 0x40, 0xDB, 0x34, 0x10, -0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0x20, 0x79, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, -0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x84, 0xF0, 0x9C, 0x9B, 0x40, 0x6D, -0xAB, 0xED, 0x60, 0xA4, 0x2C, 0xEA, 0x0C, 0xEB, -0xAC, 0xEB, 0x05, 0x95, 0xAD, 0xEB, 0x0C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0xA4, 0xF0, -0x80, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0xA3, 0xF4, -0xAC, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF0, 0xB4, 0x9D, -0xC4, 0xEA, 0x46, 0x67, 0xAD, 0xEB, 0x04, 0x95, -0x07, 0x96, 0xAC, 0xEA, 0xAF, 0xED, 0xCC, 0xED, -0xAD, 0xEA, 0x2C, 0xEA, 0x4D, 0xEB, 0x60, 0xDC, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x10, 0xF0, -0x00, 0x6D, 0x80, 0x18, 0x20, 0x79, 0x05, 0x97, -0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF0, 0x70, 0x9B, 0x10, 0xF0, -0x32, 0x6A, 0xFC, 0xF5, 0x01, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x31, 0x10, 0x82, 0xF3, 0x08, 0x70, -0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, -0x68, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, +0x4E, 0xF4, 0x04, 0x4A, 0x60, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF6, 0x0C, 0x4B, +0x4E, 0xF4, 0x10, 0x4A, 0x41, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x4E, 0xF4, 0x1C, 0x4A, 0x42, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF4, 0x1C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x6E, 0xF5, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x21, 0x6A, 0x32, 0xF4, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x6E, 0xF4, 0x08, 0x4B, +0x80, 0xF6, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, +0x80, 0xF6, 0x00, 0x4C, 0xEE, 0xF4, 0x04, 0x4B, +0x61, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x2E, 0xF4, +0x04, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0x80, 0xF6, +0x6C, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x0F, 0xF6, +0x14, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x68, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xEF, 0xF5, +0x00, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x6C, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, +0x02, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x70, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x0B, 0xF1, +0x10, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x74, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x0F, 0xF6, +0x1C, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x78, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, +0x1E, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xC0, 0xF6, +0x7C, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, +0x10, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF6, +0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0x6B, 0xF1, +0x17, 0x4B, 0x30, 0xF0, 0x20, 0x6C, 0xE0, 0xF6, +0x64, 0xDC, 0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF0, 0x00, 0x4B, +0x80, 0xF2, 0x08, 0x4A, 0x13, 0x10, 0x80, 0x9A, +0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, +0xA8, 0x9C, 0x30, 0xF0, 0x20, 0x6E, 0x03, 0xF1, +0xD4, 0x9E, 0x80, 0x9D, 0xCD, 0xEC, 0x80, 0xDD, +0x30, 0xF0, 0x20, 0x6C, 0x84, 0xF0, 0x84, 0x9C, +0x40, 0xDC, 0x04, 0x4A, 0x43, 0xEB, 0xEB, 0x60, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF1, 0x5C, 0x9A, 0xE5, 0xF6, 0x1F, 0x6B, +0xFF, 0x6C, 0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x84, 0xF0, 0x48, 0x9A, 0x10, 0x6B, 0x40, 0x6D, +0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, +0x4C, 0x9A, 0x01, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x43, 0xF0, 0x54, 0x9A, 0x60, 0xA2, +0x8C, 0xEB, 0xAD, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, +0x80, 0xA2, 0xF8, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x80, 0xA2, 0xF7, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x80, 0xA2, 0xEF, 0x6B, 0x8C, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6A, 0x84, 0xF0, 0x50, 0x9A, +0x00, 0xF2, 0x01, 0x6C, 0x8B, 0xEC, 0x60, 0x9A, +0x8C, 0xEB, 0x60, 0xDA, 0x60, 0x9A, 0x00, 0xF1, +0x00, 0x4C, 0x8C, 0xEB, 0x60, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x74, 0x9A, 0x30, 0xF0, +0x20, 0x6C, 0x03, 0xF2, 0x94, 0x9C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x6B, 0xF0, 0x08, 0x4A, 0xA3, 0xF3, 0x60, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x60, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, 0x03, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x18, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x40, 0xEA, 0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF7, 0x50, 0x9A, 0x60, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x2A, 0x80, 0x18, -0x72, 0x79, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x48, 0x9A, 0x02, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0x23, 0xF0, 0x70, 0x9B, 0x10, 0xF0, 0x32, 0x6A, -0xFC, 0xF5, 0x02, 0x4A, 0x40, 0xDB, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF7, 0x70, 0x9A, 0x02, 0x6C, -0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0x9B, 0xFF, 0x6E, -0x41, 0x4E, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x23, 0xF1, 0x7C, 0x9A, 0xE0, 0xF3, -0x1E, 0x4C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xAB, -0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xCB, -0x02, 0x6C, 0x80, 0x18, 0x3B, 0x79, 0x80, 0xF3, -0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, 0x00, 0x6C, -0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0x3B, 0x79, -0x00, 0x6C, 0xC4, 0x67, 0x02, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0x3B, 0x79, 0x00, 0x6C, 0xC4, 0x67, -0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x3B, 0x79, -0x00, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0x3B, 0x79, 0x10, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0x3B, 0x79, -0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x64, 0x9A, -0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xA0, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +0x84, 0xF0, 0x58, 0x9A, 0x60, 0xA2, 0x04, 0x5B, +0x02, 0x60, 0x04, 0x6B, 0x60, 0xC2, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF1, 0x40, 0x9A, 0x60, 0xAA, +0xFF, 0xF7, 0x1F, 0x6A, 0x6C, 0xEA, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF1, 0x64, 0x9B, 0x40, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x74, 0x9A, +0x7F, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, +0x2C, 0xED, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD5, +0x84, 0xF0, 0xBC, 0x9B, 0xFF, 0x6A, 0x40, 0x6E, +0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, +0xCC, 0xEB, 0x6D, 0xEC, 0x4C, 0xEC, 0x80, 0xC5, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF0, 0x40, 0x9A, 0x00, 0xAA, 0x04, 0x92, +0x2C, 0xE8, 0x2A, 0xEA, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x04, 0x94, +0x40, 0xEA, 0x04, 0x93, 0x2C, 0xEA, 0x6C, 0xE8, +0x07, 0xEA, 0x2C, 0xE8, 0x50, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0xFF, 0x68, +0x0C, 0xEC, 0x2C, 0xEE, 0x2A, 0xED, 0x05, 0xD4, +0x04, 0xD5, 0x06, 0xD6, 0x1F, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x84, 0xF0, 0x7C, 0x9A, 0x40, 0x6C, +0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, 0x8C, 0xEA, +0x05, 0x94, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xA4, 0xF0, 0x60, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xA3, 0xF4, 0x8C, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x63, 0xF0, 0x94, 0x9C, 0x8D, 0xEA, 0xCD, 0xEA, +0x40, 0xDB, 0x34, 0x10, 0x05, 0x94, 0xB1, 0x67, +0x80, 0x18, 0x2D, 0x79, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x94, 0xA0, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x84, 0xF0, +0x9C, 0x9B, 0x40, 0x6D, 0xAB, 0xED, 0x60, 0xA4, +0x2C, 0xEA, 0x0C, 0xEB, 0xAC, 0xEB, 0x05, 0x95, +0xAD, 0xEB, 0x0C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0xA4, 0xF0, 0x80, 0x9B, 0x30, 0xF0, +0x20, 0x6D, 0xA3, 0xF4, 0xAC, 0x9D, 0x60, 0x9C, +0x06, 0x96, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x63, 0xF0, 0xB4, 0x9D, 0xC4, 0xEA, 0x46, 0x67, +0xAD, 0xEB, 0x04, 0x95, 0x07, 0x96, 0xAC, 0xEA, +0xAF, 0xED, 0xCC, 0xED, 0xAD, 0xEA, 0x2C, 0xEA, +0x4D, 0xEB, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, +0x2D, 0x79, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, +0x70, 0x9B, 0x10, 0xF0, 0x32, 0x6A, 0x1C, 0xF6, +0x15, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x31, 0x10, +0x82, 0xF3, 0x08, 0x70, 0x1A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF1, 0x68, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x6B, 0xF0, 0x08, 0x4A, +0xA3, 0xF3, 0x60, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x60, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x48, 0x9A, 0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x18, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF7, +0x50, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x04, 0x2A, 0x80, 0x18, 0x7F, 0x79, 0x01, 0x72, +0xCB, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x48, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF0, 0x70, 0x9B, +0x10, 0xF0, 0x32, 0x6A, 0x1C, 0xF6, 0x16, 0x4A, +0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, +0x70, 0x9A, 0x02, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, +0x40, 0x9B, 0xFF, 0x6E, 0x41, 0x4E, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, +0x7C, 0x9A, 0xE0, 0xF3, 0x1E, 0x4C, 0x30, 0xF0, +0x20, 0x68, 0x40, 0xAB, 0xAC, 0xEA, 0x8D, 0xEA, +0xAC, 0xEA, 0x40, 0xCB, 0x02, 0x6C, 0x80, 0x18, +0x48, 0x79, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, +0x40, 0xEA, 0x00, 0x6C, 0xC0, 0x6D, 0x02, 0x6E, +0x80, 0x18, 0x48, 0x79, 0x00, 0x6C, 0xC4, 0x67, +0x02, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x48, 0x79, +0x00, 0x6C, 0xC4, 0x67, 0x0C, 0xF0, 0x00, 0x6D, +0x80, 0x18, 0x48, 0x79, 0x00, 0x6C, 0x01, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0x48, 0x79, +0x10, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x00, 0x6C, +0x80, 0x18, 0x48, 0x79, 0x80, 0xF3, 0x4C, 0x98, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0xA4, 0xF0, 0x64, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u32 array_length_mp_8822c_fw_nic = 195672; +u32 array_length_mp_8822c_fw_nic = 195736; #if !(DM_ODM_SUPPORT_TYPE & (ODM_CE)) u8 array_mp_8822c_fw_spic[] = { -0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x00, -0x0F, 0x12, 0x23, 0xA2, 0x00, 0x00, 0x00, 0x00, -0x09, 0x18, 0x0F, 0x17, 0xE5, 0x07, 0x00, 0x00, +0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x01, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x09, 0x07, 0x0D, 0x2F, 0xE6, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x28, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x20, 0x63, 0x00, 0x00, 0xF8, 0x3D, 0x01, 0x00, +0x28, 0x63, 0x00, 0x00, 0x30, 0x3E, 0x01, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, @@ -41179,12 +41195,12 @@ u8 array_mp_8822c_fw_spic[] = { 0x2F, 0x51, 0x10, 0x80, 0x09, 0x51, 0x10, 0x80, 0x13, 0x51, 0x10, 0x80, 0x1D, 0x51, 0x10, 0x80, 0x27, 0x51, 0x10, 0x80, 0xEF, 0x50, 0x10, 0x80, -0xDD, 0x50, 0x10, 0x80, 0xE1, 0x31, 0x11, 0x80, -0x03, 0x32, 0x11, 0x80, 0x25, 0x32, 0x11, 0x80, -0x47, 0x32, 0x11, 0x80, 0x6B, 0x32, 0x11, 0x80, -0xA5, 0x32, 0x11, 0x80, 0xC9, 0x32, 0x11, 0x80, -0xED, 0x32, 0x11, 0x80, 0x11, 0x33, 0x11, 0x80, -0x37, 0x33, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, +0xDD, 0x50, 0x10, 0x80, 0x15, 0x32, 0x11, 0x80, +0x37, 0x32, 0x11, 0x80, 0x59, 0x32, 0x11, 0x80, +0x7B, 0x32, 0x11, 0x80, 0x9F, 0x32, 0x11, 0x80, +0xD9, 0x32, 0x11, 0x80, 0xFD, 0x32, 0x11, 0x80, +0x21, 0x33, 0x11, 0x80, 0x45, 0x33, 0x11, 0x80, +0x6B, 0x33, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, 0x40, 0x00, 0x00, 0x00, 0xE0, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0x00, 0x00, 0xB9, 0x27, 0x11, 0x80, 0xB9, 0x27, 0x11, 0x80, @@ -41520,7 +41536,7 @@ u8 array_mp_8822c_fw_spic[] = { 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE0, -0x8C, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x74, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x21, 0x6C, 0x00, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x94, 0xB8, 0x00, 0x65, 0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, 0x94, 0xB9, @@ -41552,10 +41568,10 @@ u8 array_mp_8822c_fw_spic[] = { 0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x68, 0xFF, 0x6C, 0x40, 0xAB, 0x01, 0x4C, 0x30, 0xF0, 0x20, 0x69, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xCB, -0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0xC5, 0x4D, +0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0xD2, 0x4D, 0x80, 0x18, 0xF9, 0x4B, 0x80, 0x18, 0xDA, 0x4B, -0x80, 0x18, 0x82, 0x4D, 0x80, 0x18, 0x20, 0x4C, -0x80, 0x18, 0x75, 0x4D, 0x00, 0x18, 0x7F, 0xC2, +0x80, 0x18, 0x8F, 0x4D, 0x80, 0x18, 0x2D, 0x4C, +0x80, 0x18, 0x82, 0x4D, 0x00, 0x18, 0x7F, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x54, 0x9A, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x41, 0xF7, 0x08, 0x4C, 0x1D, 0xF0, @@ -41569,7 +41585,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x81, 0xF7, 0x14, 0x4C, 0x1D, 0xF4, 0x00, 0x4A, 0x43, 0xDC, 0xE0, 0xF7, 0x40, 0x99, 0x00, 0x6D, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF4, -0x54, 0xDB, 0x80, 0x18, 0x28, 0x4F, 0x30, 0xF0, +0x54, 0xDB, 0x80, 0x18, 0x35, 0x4F, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, 0x60, 0x9A, 0x10, 0xF0, 0x00, 0x6C, 0x8B, 0xEC, 0x40, 0xAB, 0x7F, 0xF7, 0x1F, 0x6D, 0x0C, 0xEA, 0x8D, 0xEA, 0x0C, 0xEA, @@ -42058,8 +42074,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x20, 0x6A, 0x04, 0x96, 0x40, 0xF4, 0x58, 0x9A, 0xB0, 0x67, 0x91, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0xFE, 0xC3, 0xA2, 0x67, 0x90, 0x67, -0x00, 0x18, 0x59, 0xD7, 0x04, 0x95, 0x90, 0x67, -0x00, 0x18, 0x68, 0xD7, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0x5B, 0xD7, 0x04, 0x95, 0x90, 0x67, +0x00, 0x18, 0x6A, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF2, 0x50, 0x9A, 0x06, 0x95, 0x00, 0x6C, 0x27, 0x6E, 0x40, 0xEA, 0x1D, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x05, 0x96, 0xA0, 0xF2, 0x54, 0x9A, @@ -42067,8 +42083,8 @@ u8 array_mp_8822c_fw_spic[] = { 0x02, 0x67, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x96, 0x40, 0xF4, 0x58, 0x9A, 0xB0, 0x67, 0x91, 0x67, 0x40, 0xEA, 0x91, 0x67, 0x00, 0x18, 0xFE, 0xC3, -0xA2, 0x67, 0x90, 0x67, 0x00, 0x18, 0x59, 0xD7, -0x04, 0x95, 0x90, 0x67, 0x00, 0x18, 0x68, 0xD7, +0xA2, 0x67, 0x90, 0x67, 0x00, 0x18, 0x5B, 0xD7, +0x04, 0x95, 0x90, 0x67, 0x00, 0x18, 0x6A, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0xE0, 0xF2, 0x54, 0x9A, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, @@ -43732,10 +43748,10 @@ u8 array_mp_8822c_fw_spic[] = { 0x04, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, 0xA2, 0x67, 0x80, 0x18, -0x73, 0x4C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x80, 0x4C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, -0xA2, 0x67, 0x80, 0x18, 0xA4, 0x4C, 0x05, 0x97, +0xA2, 0x67, 0x80, 0x18, 0xB1, 0x4C, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF2, 0x60, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x28, 0xF5, 0x1D, 0x4A, @@ -44496,12 +44512,13 @@ u8 array_mp_8822c_fw_spic[] = { 0x6D, 0xE2, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF7, 0x94, 0x9B, 0x7F, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF7, 0x78, 0x9B, 0x1C, 0x6C, -0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF7, -0x7C, 0x9B, 0x08, 0xF4, 0x13, 0x6C, 0x80, 0xCB, -0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF2, 0x80, 0x9B, -0xF7, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, -0x60, 0xC4, 0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, +0x20, 0x6B, 0xC6, 0xF7, 0x8D, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0xA2, 0xF7, 0x78, 0x9B, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF7, 0x7C, 0x9B, +0x08, 0xF4, 0x13, 0x6C, 0x80, 0xCB, 0x30, 0xF0, +0x20, 0x6B, 0x62, 0xF2, 0x80, 0x9B, 0xF7, 0x6B, +0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, +0x01, 0x90, 0x01, 0x63, 0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF3, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF2, 0x84, 0x9C, 0x40, 0x9B, 0x10, 0x6D, @@ -44588,40 +44605,40 @@ u8 array_mp_8822c_fw_spic[] = { 0x40, 0x9C, 0x01, 0x6C, 0x00, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xC4, 0xD7, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0xC6, 0xD7, 0x90, 0x67, 0x01, 0x6D, 0x01, 0x48, 0x00, 0x18, -0xD4, 0xD7, 0x0B, 0x70, 0xF5, 0x61, 0x05, 0x97, +0xD6, 0xD7, 0x0B, 0x70, 0xF5, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x0A, 0x69, 0x12, 0xED, 0x4C, 0xED, 0x04, 0xD5, 0xFF, 0x68, 0x2C, 0xE8, -0x90, 0x67, 0x00, 0x18, 0xE4, 0xD7, 0x17, 0x2A, +0x90, 0x67, 0x00, 0x18, 0xE6, 0xD7, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, 0x20, 0x31, 0x90, 0x67, 0x01, 0x6D, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x18, -0xD4, 0xD7, 0x41, 0x41, 0xEF, 0x2A, 0x01, 0x69, +0xD6, 0xD7, 0x41, 0x41, 0xEF, 0x2A, 0x01, 0x69, 0x2B, 0xE9, 0x09, 0x10, 0x04, 0x94, 0xFF, 0x49, 0x00, 0x6D, 0x00, 0xF6, 0x20, 0x31, 0x00, 0x18, -0xD4, 0xD7, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x51, +0xD6, 0xD7, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x51, 0xF5, 0x60, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x0C, 0x68, 0x4C, 0xEC, 0x1B, 0xEC, 0x01, 0x28, 0xE5, 0xE8, 0x4C, 0xED, 0x10, 0xE9, 0x4C, 0xE9, 0x12, 0xE8, 0x4C, 0xE8, 0x0F, 0x25, 0x90, 0x67, 0x01, 0x6D, -0x00, 0x18, 0xC4, 0xD7, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0xC6, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x10, 0x4A, 0x41, 0xE0, 0x60, 0xA0, 0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x40, 0xC0, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x10, 0x4A, 0x49, 0xE0, 0x80, 0xA2, 0x01, 0x6B, 0x64, 0xE9, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, 0x40, 0xA2, 0x04, 0x2A, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0xC4, 0xD7, 0x07, 0x97, 0x06, 0x91, +0x00, 0x18, 0xC6, 0xD7, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, -0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0x17, 0xD8, -0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0xFE, 0xD7, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0x19, 0xD8, +0x91, 0x67, 0xB0, 0x67, 0x00, 0x18, 0x00, 0xD8, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x0C, 0x6B, 0x7B, 0xED, 0x01, 0x2B, 0xE5, 0xE8, 0x05, 0x6E, 0xFF, 0x6A, @@ -44646,8 +44663,8 @@ u8 array_mp_8822c_fw_spic[] = { 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xE9, 0x05, 0x67, 0x01, 0x29, 0x00, 0x6C, 0xB0, 0x67, 0x00, 0x18, -0x3D, 0xD8, 0xFF, 0x6C, 0x0C, 0xEC, 0xB1, 0x67, -0x00, 0x18, 0x32, 0xD8, 0x07, 0x97, 0x06, 0x91, +0x3F, 0xD8, 0xFF, 0x6C, 0x0C, 0xEC, 0xB1, 0x67, +0x00, 0x18, 0x34, 0xD8, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xAE, 0xEC, 0x01, 0x6A, 0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, @@ -44655,7 +44672,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x00, 0x69, 0x1F, 0x68, 0x22, 0x10, 0x05, 0x92, 0x40, 0xA2, 0x07, 0xD2, 0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, 0x07, 0x94, 0x12, 0x35, 0x87, 0xEA, -0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x70, 0xD8, +0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0x72, 0xD8, 0x06, 0x22, 0xFF, 0x6A, 0x04, 0x30, 0x4C, 0xE8, 0x05, 0x6A, 0x4E, 0xE8, 0x01, 0x10, 0x04, 0x30, 0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x92, 0x01, 0x4A, @@ -44683,17 +44700,17 @@ u8 array_mp_8822c_fw_spic[] = { 0x69, 0xE2, 0x66, 0xA4, 0x10, 0xF0, 0x00, 0x6C, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x64, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, -0x81, 0x40, 0x06, 0x6D, 0x00, 0x18, 0x72, 0xD8, +0x81, 0x40, 0x06, 0x6D, 0x00, 0x18, 0x74, 0xD8, 0x60, 0xA0, 0x01, 0x6E, 0x82, 0x67, 0x66, 0x35, -0x6C, 0xEE, 0x00, 0x18, 0x64, 0xD8, 0x05, 0x97, +0x6C, 0xEE, 0x00, 0x18, 0x66, 0xD8, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xF4, 0xD7, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xF6, 0xD7, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF0, 0x68, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF2, 0x80, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, -0xD5, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x7B, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x00, 0x4A, 0x00, 0x6B, 0xA2, 0xF4, 0x77, 0xC2, 0xA2, 0xF4, 0x78, 0xC2, 0xA2, 0xF4, 0x76, 0xC2, 0x00, 0x6B, @@ -47211,7 +47228,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF2, 0x60, 0x9B, 0x10, 0xF0, 0x30, 0x6A, 0x89, 0xF6, 0x09, 0x4A, 0x40, 0xDB, 0x00, 0x1C, 0xAC, 0x39, 0x80, 0x18, -0x13, 0x4D, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, +0x20, 0x4D, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x68, 0x00, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, @@ -47348,7 +47365,7 @@ u8 array_mp_8822c_fw_spic[] = { 0x0B, 0x60, 0xCD, 0x74, 0x0D, 0x60, 0x10, 0x10, 0x85, 0x67, 0x80, 0x18, 0x43, 0x12, 0x1F, 0x10, 0x85, 0x67, 0x80, 0x18, 0x58, 0x14, 0x1B, 0x10, -0x85, 0x67, 0x00, 0x18, 0x8E, 0xD8, 0x17, 0x10, +0x85, 0x67, 0x00, 0x18, 0x90, 0xD8, 0x17, 0x10, 0x85, 0x67, 0x80, 0x18, 0x4B, 0x12, 0x13, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF2, 0x64, 0x9A, 0x01, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, @@ -54419,473 +54436,480 @@ u8 array_mp_8822c_fw_spic[] = { 0x7C, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, 0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, -0x03, 0x6C, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF3, 0x40, 0x9A, 0x00, 0xF5, 0x62, 0x33, -0x8C, 0xEB, 0x40, 0x9A, 0x01, 0x73, 0x42, 0x32, -0x52, 0x32, 0x8C, 0xEA, 0x05, 0x60, 0x0B, 0x2B, -0x02, 0x5A, 0x50, 0x6C, 0x0D, 0x60, 0x03, 0x10, -0x02, 0x5A, 0x0A, 0x60, 0x28, 0x6C, 0x87, 0xEA, -0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0x10, 0x02, 0x5A, -0x28, 0x6C, 0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, -0x50, 0x6C, 0x80, 0x18, 0x94, 0x4D, 0x80, 0x18, -0x00, 0x00, 0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF2, -0x64, 0x9B, 0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF2, 0x60, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF2, 0x60, 0x9B, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF2, -0x6C, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x62, 0xF2, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF3, 0x64, 0x9B, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xE5, 0x4B, -0x80, 0x18, 0x2D, 0x4C, 0x80, 0x18, 0x93, 0x40, -0x00, 0x18, 0xBC, 0xD8, 0x30, 0xF0, 0x20, 0x6A, -0x60, 0xF4, 0x44, 0x9A, 0x40, 0xEA, 0x80, 0x18, -0x19, 0x4A, 0x80, 0x18, 0xE8, 0x16, 0x00, 0x18, -0xD0, 0xCE, 0x00, 0x18, 0xEC, 0xCE, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x00, 0x4A, 0x00, 0x6B, 0x20, 0xF6, -0x72, 0xC2, 0x20, 0xF6, 0x73, 0xC2, 0x20, 0xF1, -0x70, 0xC2, 0x20, 0xF1, 0x71, 0xC2, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x40, 0x9A, -0x01, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x84, 0x9A, -0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF2, 0x84, 0x9A, 0x08, 0x6D, +0x30, 0xF0, 0x20, 0x6C, 0x1C, 0x6A, 0xA3, 0xF4, +0x00, 0x4C, 0x23, 0xF3, 0x4D, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0xE2, 0xF2, 0x5C, 0x9A, 0x03, 0x6E, +0xFF, 0x6B, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF3, 0x40, 0x9A, 0x00, 0xF5, 0xA2, 0x35, +0xCC, 0xED, 0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, +0xCC, 0xEA, 0x02, 0x6E, 0xAE, 0xEE, 0x0E, 0x26, +0x03, 0x75, 0x11, 0x60, 0x01, 0x75, 0x04, 0x60, +0x02, 0x5A, 0x50, 0x6C, 0x1C, 0x60, 0x03, 0x10, +0x02, 0x5A, 0x19, 0x60, 0x28, 0x6C, 0x87, 0xEA, +0x6C, 0xEC, 0x16, 0x10, 0x2D, 0x6B, 0x03, 0xF3, +0xC8, 0xC4, 0x23, 0xF3, 0x6D, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, 0x23, 0xF3, +0x8D, 0xA3, 0x2D, 0x74, 0x03, 0x60, 0x55, 0x6C, +0x23, 0xF3, 0x8D, 0xC3, 0x02, 0x5A, 0x28, 0x6C, +0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, 0x50, 0x6C, +0x80, 0x18, 0xA1, 0x4D, 0x80, 0x18, 0x00, 0x00, +0x30, 0xF0, 0x20, 0x6B, 0x82, 0xF2, 0x64, 0x9B, +0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF2, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x82, 0xF2, 0x60, 0x9B, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF2, 0x6C, 0x9B, +0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0x62, 0xF2, +0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x02, 0xF3, 0x64, 0x9B, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xE5, 0x4B, 0x80, 0x18, 0x3A, 0x4C, +0x80, 0x18, 0x93, 0x40, 0x00, 0x18, 0xBE, 0xD8, +0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x44, 0x9A, +0x40, 0xEA, 0x80, 0x18, 0x19, 0x4A, 0x80, 0x18, +0xE8, 0x16, 0x00, 0x18, 0xD0, 0xCE, 0x00, 0x18, +0xEC, 0xCE, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x00, 0x4A, +0x00, 0x6B, 0x20, 0xF6, 0x72, 0xC2, 0x20, 0xF6, +0x73, 0xC2, 0x20, 0xF1, 0x70, 0xC2, 0x20, 0xF1, +0x71, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF6, 0x40, 0x9A, 0x01, 0x6B, 0x60, 0xC2, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x02, 0xF6, 0x84, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x68, 0x9A, 0xFD, 0x6A, 0xFF, 0x6C, -0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x40, 0xA3, -0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, -0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF2, 0x48, 0x9A, 0x02, 0xF6, 0x8C, 0x9B, -0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, 0x40, 0xEA, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, -0x6C, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x6D, 0xE4, -0x80, 0x72, 0x04, 0x6C, 0x80, 0xC3, 0xF5, 0x61, -0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF6, 0x90, 0x9B, 0x80, 0xF2, 0x48, 0x9A, -0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF2, +0x84, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x68, 0x9A, +0xFD, 0x6A, 0xFF, 0x6C, 0xA0, 0xA3, 0xAC, 0xEA, +0x40, 0xC3, 0x40, 0xA3, 0x01, 0x6D, 0x8C, 0xEA, +0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, +0x02, 0xF6, 0x8C, 0x9B, 0x00, 0x6D, 0x02, 0xF0, +0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0x02, 0xF6, 0x6C, 0x9B, 0x54, 0x34, +0x01, 0x4A, 0x6D, 0xE4, 0x80, 0x72, 0x04, 0x6C, +0x80, 0xC3, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6B, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, 0x90, 0x9B, +0x80, 0xF2, 0x48, 0x9A, 0x00, 0x6D, 0x00, 0xF4, +0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x00, 0x4B, 0x52, 0x9B, 0x8D, 0xEA, +0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, +0x74, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x02, 0xF6, 0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, -0x52, 0x9B, 0x8D, 0xEA, 0x52, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x02, 0xF6, 0x74, 0x9B, 0x80, 0xDB, +0xB2, 0x9B, 0x8F, 0xEA, 0xAC, 0xEA, 0x52, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x78, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF6, +0x54, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0x82, 0xF1, 0x04, 0x4A, 0x89, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x40, 0x9B, 0xAD, 0xEA, 0xA3, 0xF4, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, +0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x02, 0xF6, 0x7C, 0x9B, 0x32, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, 0x41, 0x9B, +0xAD, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF6, 0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF6, 0x64, 0x9B, 0x21, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, +0x42, 0x9B, 0xAD, 0xEA, 0x42, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF6, 0x68, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x6C, 0x9B, +0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x00, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x70, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, +0x74, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, 0x44, 0x9B, +0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF6, 0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF6, 0x7C, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x82, 0xF1, +0x18, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x80, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0xA3, 0xF4, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x7C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xA2, 0xF5, +0x58, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x00, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF6, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x40, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, +0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, +0x48, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x00, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF6, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x50, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x00, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, +0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF6, 0x58, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, +0x01, 0x74, 0x15, 0x60, 0x03, 0x24, 0x02, 0x74, +0x23, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x00, 0x4B, 0x54, 0x9B, 0xAD, 0xEA, +0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, +0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF6, 0x64, 0x9B, 0x21, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, 0x55, 0x9B, +0xAD, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF6, 0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x42, 0xF6, 0x6C, 0x9B, 0x10, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, +0x56, 0x9B, 0xAD, 0xEA, 0x56, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x42, 0xF6, 0x70, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x74, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x01, 0x74, 0x16, 0x60, +0x03, 0x24, 0x02, 0x74, 0x25, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, +0x94, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x64, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, +0x40, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x00, 0x4B, 0x95, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF6, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x42, 0xF6, 0x48, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, +0x96, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x56, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x74, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, +0x50, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x02, 0xF6, 0x9C, 0x9C, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, +0x40, 0xDB, 0xA3, 0xF4, 0x00, 0x4B, 0x41, 0xDB, +0x42, 0xDB, 0x43, 0xDB, 0x44, 0xDB, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, 0x84, 0x9C, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, +0x8C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0x22, 0xF6, 0x94, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0x22, 0xF6, 0x9C, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF6, 0x84, 0x9C, +0x54, 0xDB, 0x55, 0xDB, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0x42, 0xF6, 0x8C, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF6, 0x94, 0x9C, +0x56, 0xDB, 0x40, 0xDC, 0x52, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x02, 0xF6, 0x78, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, +0xA2, 0xF5, 0x78, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, +0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF6, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF6, 0x70, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x78, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, +0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x42, 0xF6, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x42, 0xF6, 0x70, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x74, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xE0, 0xF3, 0x10, 0x6E, 0xA3, 0xF4, 0xC0, 0xDB, +0x01, 0xF7, 0x01, 0x6A, 0xA3, 0xF4, 0x00, 0x4B, +0x08, 0xF0, 0x00, 0x6D, 0x00, 0x6C, 0x42, 0xDB, +0x43, 0xDB, 0xA1, 0xDB, 0x84, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x02, 0xF6, 0x7C, 0x9B, 0xC0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x64, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, +0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x22, 0xF6, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF6, 0x5C, 0x9A, 0x80, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0xFF, 0x6A, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF4, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x00, 0x4B, 0xB2, 0x9B, 0x8F, 0xEA, -0xAC, 0xEA, 0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x02, 0xF6, 0x54, 0x9A, 0x80, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x5E, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x82, 0xF1, -0x04, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x40, 0x9B, -0xAD, 0xEA, 0xA3, 0xF4, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xA2, 0xF5, 0x78, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, 0x7C, 0x9B, -0x32, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x00, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x60, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, -0x64, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x00, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, -0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, -0x68, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0x6C, 0x9B, 0x10, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, 0x43, 0x9B, -0xAD, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF6, 0x74, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x00, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x78, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, -0x7C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x05, 0x5C, 0x63, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0x82, 0xF1, 0x18, 0x4A, 0x89, 0xE2, -0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x80, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, -0xA3, 0xF4, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xA2, 0xF5, 0x58, 0x9A, 0x35, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, -0x81, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x41, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x64, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, -0x40, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x00, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x22, 0xF6, 0x48, 0x9A, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, -0x83, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x43, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x74, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, -0x50, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, 0x84, 0x9B, -0xAF, 0xEA, 0x8C, 0xEA, 0x44, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF6, 0x7C, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, 0x58, 0x9A, -0xA0, 0xDA, 0x20, 0xE8, 0x01, 0x74, 0x15, 0x60, -0x03, 0x24, 0x02, 0x74, 0x23, 0x60, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, -0x54, 0x9B, 0xAD, 0xEA, 0x54, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF6, 0x60, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x64, 0x9B, -0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, -0x00, 0x4B, 0x55, 0x9B, 0xAD, 0xEA, 0x55, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x68, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, -0x6C, 0x9B, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x00, 0x4B, 0x56, 0x9B, 0xAD, 0xEA, -0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, -0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF6, 0x74, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x01, 0x74, 0x16, 0x60, 0x03, 0x24, 0x02, 0x74, -0x25, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x00, 0x4B, 0x94, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF6, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF6, 0x40, 0x9A, 0x23, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, -0x95, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x55, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, -0x48, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF4, 0x00, 0x4B, 0x96, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x42, 0xF6, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF6, 0x50, 0x9A, 0xA0, 0xDA, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, -0x02, 0xF6, 0x9C, 0x9C, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF4, 0x40, 0xDB, 0xA3, 0xF4, -0x00, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, -0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x22, 0xF6, 0x84, 0x9C, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0x22, 0xF6, 0x8C, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, 0x94, 0x9C, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF6, -0x9C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x42, 0xF6, 0x84, 0x9C, 0x54, 0xDB, 0x55, 0xDB, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x42, 0xF6, -0x8C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0x42, 0xF6, 0x94, 0x9C, 0x56, 0xDB, 0x40, 0xDC, -0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, -0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF5, 0x78, 0x9B, -0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF6, 0x60, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x68, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, -0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x42, 0xF6, 0x60, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, 0x68, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x42, 0xF6, -0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0x74, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x10, 0x6E, -0xA3, 0xF4, 0xC0, 0xDB, 0x01, 0xF7, 0x01, 0x6A, -0xA3, 0xF4, 0x00, 0x4B, 0x08, 0xF0, 0x00, 0x6D, -0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, -0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x02, 0xF6, -0x7C, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF6, 0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF6, 0x6C, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF6, 0x74, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF6, -0x5C, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0xFF, 0x6A, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF4, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x02, 0xF6, 0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xA2, 0xF2, 0x80, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x00, 0x4A, -0x80, 0xF1, 0x06, 0x6D, 0xFF, 0x6B, 0xB4, 0xDA, -0x95, 0xDA, 0x76, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x42, 0xF6, 0x44, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF6, 0x4C, 0x9A, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x54, 0x9A, -0x60, 0xDA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x13, 0x4D, 0x80, 0x18, 0x32, 0x4D, -0x80, 0x18, 0x4A, 0x4D, 0x80, 0x18, 0x66, 0x4D, -0x80, 0x18, 0x60, 0x4D, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x4C, 0x9A, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xBB, 0x4D, -0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF4, 0x00, 0x4B, -0xC2, 0xF5, 0x44, 0xC3, 0x00, 0x6A, 0xC2, 0xF5, -0x45, 0xC3, 0x80, 0x18, 0x43, 0x4C, 0x80, 0x18, -0x54, 0x4F, 0x80, 0x18, 0x7D, 0x4D, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF6, 0x58, 0x9A, 0x3F, 0x6B, -0x60, 0xC2, 0x80, 0x18, 0x34, 0x4C, 0x80, 0x18, -0x38, 0x4C, 0x80, 0x18, 0x4B, 0x4C, 0x80, 0x18, -0x9A, 0x4D, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0x57, 0xCA, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x44, 0x9A, -0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xA2, 0xF2, 0x80, 0x9B, 0x30, 0xF0, 0x20, 0x6A, +0xA3, 0xF4, 0x00, 0x4A, 0x80, 0xF1, 0x06, 0x6D, +0xFF, 0x6B, 0xB4, 0xDA, 0x95, 0xDA, 0x76, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, 0x44, 0x9A, +0xA0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, +0x4C, 0x9A, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF6, 0x54, 0x9A, 0x60, 0xDA, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x20, 0x4D, +0x80, 0x18, 0x3F, 0x4D, 0x80, 0x18, 0x57, 0x4D, +0x80, 0x18, 0x73, 0x4D, 0x80, 0x18, 0x6D, 0x4D, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x6C, -0x9F, 0xF7, 0x00, 0x6D, 0x00, 0x6E, 0x26, 0xF7, -0x68, 0xC2, 0x26, 0xF7, 0x69, 0xC2, 0x00, 0x18, -0x93, 0xC4, 0x01, 0x6C, 0x9F, 0xF7, 0x01, 0x6D, +0xC0, 0xF3, 0x4C, 0x9A, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xC8, 0x4D, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF4, 0x00, 0x4B, 0xC2, 0xF5, 0x44, 0xC3, +0x00, 0x6A, 0xC2, 0xF5, 0x45, 0xC3, 0x80, 0x18, +0x50, 0x4C, 0x80, 0x18, 0x61, 0x4F, 0x80, 0x18, +0x8A, 0x4D, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF6, +0x58, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x80, 0x18, +0x41, 0x4C, 0x80, 0x18, 0x45, 0x4C, 0x80, 0x18, +0x58, 0x4C, 0x80, 0x18, 0xA7, 0x4D, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x18, 0x57, 0xCA, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x00, 0x4A, +0x00, 0x6B, 0x01, 0x6C, 0x9F, 0xF7, 0x00, 0x6D, +0x00, 0x6E, 0x26, 0xF7, 0x68, 0xC2, 0x26, 0xF7, +0x69, 0xC2, 0x00, 0x18, 0x93, 0xC4, 0x01, 0x6C, +0x9F, 0xF7, 0x01, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0x93, 0xC4, 0x01, 0x6C, 0x9F, 0xF7, 0x02, 0x6D, 0x00, 0x6E, 0x00, 0x18, 0x93, 0xC4, 0x01, 0x6C, -0x9F, 0xF7, 0x02, 0x6D, 0x00, 0x6E, 0x00, 0x18, -0x93, 0xC4, 0x01, 0x6C, 0x9F, 0xF7, 0x03, 0x6D, -0x00, 0x6E, 0x00, 0x18, 0x93, 0xC4, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF6, 0x40, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, -0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF6, 0x64, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0xE2, 0xF6, 0x68, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xC2, 0xF5, 0x90, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x02, 0xF7, 0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, -0x40, 0xAA, 0x4C, 0xEB, 0x62, 0x33, 0x03, 0x6A, -0x72, 0x33, 0x4C, 0xEB, 0x02, 0x6A, 0x04, 0x23, -0x01, 0x73, 0x01, 0x6A, 0x01, 0x60, 0x03, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0x10, 0xF0, 0x23, 0x6A, -0x85, 0xF2, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA5, 0xF2, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xA6, 0xF6, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA9, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA7, 0xF1, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x2B, 0xF4, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x2B, 0xF5, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x42, 0xF3, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA2, 0xF4, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE6, 0xF5, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x06, 0xF1, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x46, 0xF1, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA7, 0xF4, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xA5, 0xF5, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x05, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x85, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x05, 0xF5, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x25, 0xF7, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE9, 0xF4, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x46, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xC5, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x02, 0xF0, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xEB, 0xF0, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x42, 0xF0, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0xEB, 0xF3, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE6, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF4, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x2B, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA9, 0xF5, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x29, 0xF6, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA9, 0xF6, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE9, 0xF6, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x29, 0xF7, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x49, 0xF7, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x89, 0xF7, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x2A, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xEA, 0xF7, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xEA, 0xF7, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x0B, 0xF0, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x0B, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x6A, 0xF3, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xEA, 0xF3, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x25, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x45, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x25, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x64, 0xF7, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x6C, 0xF0, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xA0, 0xF4, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x00, 0xF4, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x54, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x61, 0xF5, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x43, 0xF5, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x66, 0xF2, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF6, 0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF6, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x86, 0xF6, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA6, 0xF7, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF7, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xE7, 0xF0, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF0, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xE9, 0xF3, 0x1B, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x09, 0xF4, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x09, 0xF4, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA9, 0xF5, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x0A, 0xF4, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF6, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x21, 0xF0, 0x00, 0x4B, 0x80, 0xF2, 0x08, 0x4A, -0x13, 0x10, 0x80, 0x9A, 0x10, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x82, 0xF2, 0xA4, 0x9C, 0x30, 0xF0, -0x20, 0x6E, 0xA2, 0xF2, 0xD4, 0x9E, 0x80, 0x9D, -0xCD, 0xEC, 0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6C, -0x22, 0xF7, 0x94, 0x9C, 0x40, 0xDC, 0x04, 0x4A, -0x43, 0xEB, 0xEB, 0x60, 0x20, 0xE8, 0x00, 0x65, -0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xD5, 0x22, 0xF7, 0xB8, 0x9B, -0xFF, 0x6A, 0x40, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, -0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, -0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x5C, 0x9A, -0x00, 0xAA, 0x04, 0x92, 0x2C, 0xE8, 0x2A, 0xEA, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x44, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x04, 0x93, -0x2C, 0xEA, 0x6C, 0xE8, 0x07, 0xEA, 0x2C, 0xE8, -0x50, 0x67, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, -0x2C, 0xED, 0xFF, 0x68, 0x0C, 0xEC, 0x2C, 0xEE, -0x2A, 0xED, 0x05, 0xD4, 0x04, 0xD5, 0x06, 0xD6, -0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, -0x78, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, -0x0C, 0xEA, 0x8C, 0xEA, 0x05, 0x94, 0x8D, 0xEA, -0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x22, 0xF7, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xA2, 0xF4, 0x90, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF2, 0x94, 0x9C, -0x8D, 0xEA, 0xCD, 0xEA, 0x40, 0xDB, 0x34, 0x10, -0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0xD0, 0x4E, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, -0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF7, 0x98, 0x9B, 0x40, 0x6D, -0xAB, 0xED, 0x60, 0xA4, 0x2C, 0xEA, 0x0C, 0xEB, -0xAC, 0xEB, 0x05, 0x95, 0xAD, 0xEB, 0x0C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, -0x9C, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0xA2, 0xF4, -0xB0, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0xC2, 0xF2, 0xB4, 0x9D, -0xC4, 0xEA, 0x46, 0x67, 0xAD, 0xEB, 0x04, 0x95, -0x07, 0x96, 0xAC, 0xEA, 0xAF, 0xED, 0xCC, 0xED, -0xAD, 0xEA, 0x2C, 0xEA, 0x4D, 0xEB, 0x60, 0xDC, +0x9F, 0xF7, 0x03, 0x6D, 0x00, 0x6E, 0x00, 0x18, +0x93, 0xC4, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, 0x40, 0x9A, +0xE0, 0xF1, 0x1B, 0x6B, 0x6B, 0xEB, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, 0x64, 0x9A, +0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF6, 0x68, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xC2, 0xF5, 0x90, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x02, 0xF7, 0x44, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x4C, 0xEB, +0x62, 0x33, 0x03, 0x6A, 0x72, 0x33, 0x4C, 0xEB, +0x02, 0x6A, 0x04, 0x23, 0x01, 0x73, 0x01, 0x6A, +0x01, 0x60, 0x03, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x10, 0xF0, 0x23, 0x6A, 0x85, 0xF2, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA5, 0xF2, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0xE6, 0xF6, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x50, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA9, 0xF1, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA7, 0xF1, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x50, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x2B, 0xF4, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x2B, 0xF5, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x42, 0xF3, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x58, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA2, 0xF4, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE6, 0xF5, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x06, 0xF1, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x46, 0xF1, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA7, 0xF4, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0xA5, 0xF5, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x58, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x05, 0xF6, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x50, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x85, 0xF6, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x05, 0xF5, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x25, 0xF7, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE9, 0xF4, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x46, 0xF2, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x44, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0xC5, 0xF6, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x02, 0xF0, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x58, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xEB, 0xF0, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x42, 0xF0, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x50, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0xEB, 0xF3, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE6, 0xF6, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x2B, 0xF0, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA9, 0xF5, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x50, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x29, 0xF6, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA9, 0xF6, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x58, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE9, 0xF6, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x29, 0xF7, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x49, 0xF7, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x89, 0xF7, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x2A, 0xF0, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xEA, 0xF7, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x50, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xEA, 0xF7, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x0B, 0xF0, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x58, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x0B, 0xF0, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x6A, 0xF3, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xEA, 0xF3, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x25, 0xF2, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x45, 0xF2, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x25, 0xF2, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x48, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x64, 0xF7, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x50, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x6C, 0xF0, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x40, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0xA0, 0xF4, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x50, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x00, 0xF4, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x54, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x61, 0xF5, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF5, 0x04, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF2, 0x0C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF6, 0x70, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, 0x64, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x86, 0xF6, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA6, 0xF7, 0x04, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF7, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xE7, 0xF0, 0x04, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF0, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xE9, 0xF3, 0x1B, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF4, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x44, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x09, 0xF4, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA9, 0xF5, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x44, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x0A, 0xF4, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF0, 0x00, 0x4B, +0x80, 0xF2, 0x08, 0x4A, 0x13, 0x10, 0x80, 0x9A, +0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x82, 0xF2, +0xA4, 0x9C, 0x30, 0xF0, 0x20, 0x6E, 0xA2, 0xF2, +0xD4, 0x9E, 0x80, 0x9D, 0xCD, 0xEC, 0x80, 0xDD, +0x30, 0xF0, 0x20, 0x6C, 0x22, 0xF7, 0x94, 0x9C, +0x40, 0xDC, 0x04, 0x4A, 0x43, 0xEB, 0xEB, 0x60, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, +0x2C, 0xED, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD5, +0x22, 0xF7, 0xB8, 0x9B, 0xFF, 0x6A, 0x40, 0x6E, +0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, +0xCC, 0xEB, 0x6D, 0xEC, 0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x10, 0xF0, -0x00, 0x6D, 0x80, 0x18, 0xD0, 0x4E, 0x05, 0x97, -0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x22, 0xF2, 0x60, 0x9B, 0x10, 0xF0, -0x31, 0x6A, 0xA7, 0xF4, 0x01, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x31, 0x10, 0x82, 0xF3, 0x08, 0x70, -0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x82, 0xF2, -0x64, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xA3, 0xF4, 0x00, 0x4A, 0x23, 0xF3, 0x70, 0x9A, -0x8D, 0xEB, 0x23, 0xF3, 0x70, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF7, 0x40, 0x9A, 0x03, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x18, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x40, 0xEA, 0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0xE2, 0xF5, 0x54, 0x9A, 0x60, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x2A, 0x80, 0x18, -0x22, 0x4F, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF7, 0x40, 0x9A, 0x02, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0x22, 0xF2, 0x60, 0x9B, 0x10, 0xF0, 0x31, 0x6A, -0xA7, 0xF4, 0x02, 0x4A, 0x40, 0xDB, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF7, 0x64, 0x9A, 0x02, 0x6C, -0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0x9B, 0xFF, 0x6E, -0x41, 0x4E, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x42, 0xF7, 0x68, 0x9A, 0xE0, 0xF3, -0x1E, 0x4C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xAB, -0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xCB, -0x02, 0x6C, 0x80, 0x18, 0xEB, 0x4E, 0x80, 0xF3, -0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, 0x00, 0x6C, -0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0xEB, 0x4E, -0x00, 0x6C, 0xC4, 0x67, 0x02, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0xEB, 0x4E, 0x00, 0x6C, 0xC4, 0x67, -0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0xEB, 0x4E, -0x00, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0xEB, 0x4E, 0x10, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0xEB, 0x4E, -0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, 0x6C, 0x9A, -0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x22, 0xF7, 0x5C, 0x9A, 0x00, 0xAA, 0x04, 0x92, +0x2C, 0xE8, 0x2A, 0xEA, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x04, 0x94, +0x40, 0xEA, 0x04, 0x93, 0x2C, 0xEA, 0x6C, 0xE8, +0x07, 0xEA, 0x2C, 0xE8, 0x50, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0xFF, 0x68, +0x0C, 0xEC, 0x2C, 0xEE, 0x2A, 0xED, 0x05, 0xD4, +0x04, 0xD5, 0x06, 0xD6, 0x1F, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x22, 0xF7, 0x78, 0x9A, 0x40, 0x6C, +0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, 0x8C, 0xEA, +0x05, 0x94, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x22, 0xF7, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xA2, 0xF4, 0x90, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0xC2, 0xF2, 0x94, 0x9C, 0x8D, 0xEA, 0xCD, 0xEA, +0x40, 0xDB, 0x34, 0x10, 0x05, 0x94, 0xB1, 0x67, +0x80, 0x18, 0xDD, 0x4E, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x94, 0xA0, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF7, +0x98, 0x9B, 0x40, 0x6D, 0xAB, 0xED, 0x60, 0xA4, +0x2C, 0xEA, 0x0C, 0xEB, 0xAC, 0xEB, 0x05, 0x95, +0xAD, 0xEB, 0x0C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0x22, 0xF7, 0x9C, 0x9B, 0x30, 0xF0, +0x20, 0x6D, 0xA2, 0xF4, 0xB0, 0x9D, 0x60, 0x9C, +0x06, 0x96, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0xC2, 0xF2, 0xB4, 0x9D, 0xC4, 0xEA, 0x46, 0x67, +0xAD, 0xEB, 0x04, 0x95, 0x07, 0x96, 0xAC, 0xEA, +0xAF, 0xED, 0xCC, 0xED, 0xAD, 0xEA, 0x2C, 0xEA, +0x4D, 0xEB, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, +0xDD, 0x4E, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF2, +0x60, 0x9B, 0x10, 0xF0, 0x31, 0x6A, 0xC7, 0xF4, +0x15, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x31, 0x10, +0x82, 0xF3, 0x08, 0x70, 0x1A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x82, 0xF2, 0x64, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF4, 0x00, 0x4A, +0x23, 0xF3, 0x70, 0x9A, 0x8D, 0xEB, 0x23, 0xF3, +0x70, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x40, 0x9A, 0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x18, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE2, 0xF5, +0x54, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x04, 0x2A, 0x80, 0x18, 0x2F, 0x4F, 0x01, 0x72, +0xCB, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x40, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x22, 0xF2, 0x60, 0x9B, +0x10, 0xF0, 0x31, 0x6A, 0xC7, 0xF4, 0x16, 0x4A, +0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x64, 0x9A, 0x02, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, +0x40, 0x9B, 0xFF, 0x6E, 0x41, 0x4E, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x42, 0xF7, +0x68, 0x9A, 0xE0, 0xF3, 0x1E, 0x4C, 0x30, 0xF0, +0x20, 0x68, 0x40, 0xAB, 0xAC, 0xEA, 0x8D, 0xEA, +0xAC, 0xEA, 0x40, 0xCB, 0x02, 0x6C, 0x80, 0x18, +0xF8, 0x4E, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, +0x40, 0xEA, 0x00, 0x6C, 0xC0, 0x6D, 0x02, 0x6E, +0x80, 0x18, 0xF8, 0x4E, 0x00, 0x6C, 0xC4, 0x67, +0x02, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0xF8, 0x4E, +0x00, 0x6C, 0xC4, 0x67, 0x0C, 0xF0, 0x00, 0x6D, +0x80, 0x18, 0xF8, 0x4E, 0x00, 0x6C, 0x01, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0xF8, 0x4E, +0x10, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x00, 0x6C, +0x80, 0x18, 0xF8, 0x4E, 0x80, 0xF3, 0x4C, 0x98, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x42, 0xF7, 0x6C, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0xA5, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u32 array_length_mp_8822c_fw_spic = 114072; +u32 array_length_mp_8822c_fw_spic = 114136; #endif /*!(DM_ODM_SUPPORT_TYPE & (ODM_CE))*/ #ifdef CONFIG_WOWLAN u8 array_mp_8822c_fw_wowlan[] = { -0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x00, -0x0F, 0x12, 0x23, 0xA2, 0x00, 0x00, 0x00, 0x00, -0x09, 0x18, 0x0F, 0x17, 0xE5, 0x07, 0x00, 0x00, +0x22, 0x88, 0x00, 0x00, 0x09, 0x00, 0x0D, 0x01, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x09, 0x07, 0x0D, 0x2E, 0xE6, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0xD8, 0x33, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x58, 0x91, 0x00, 0x00, 0x40, 0x6A, 0x01, 0x00, +0x60, 0x91, 0x00, 0x00, 0x78, 0x6A, 0x01, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, @@ -55626,11 +55650,11 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xF3, 0x3F, 0x11, 0x80, 0xCD, 0x40, 0x11, 0x80, 0x77, 0x3E, 0x11, 0x80, 0x77, 0x3E, 0x11, 0x80, 0x7B, 0x3E, 0x11, 0x80, 0x7B, 0x3E, 0x11, 0x80, -0xB5, 0x5E, 0x11, 0x80, 0xD7, 0x5E, 0x11, 0x80, -0xF9, 0x5E, 0x11, 0x80, 0x1B, 0x5F, 0x11, 0x80, -0x3F, 0x5F, 0x11, 0x80, 0x79, 0x5F, 0x11, 0x80, -0x9D, 0x5F, 0x11, 0x80, 0xC1, 0x5F, 0x11, 0x80, -0xE5, 0x5F, 0x11, 0x80, 0x0B, 0x60, 0x11, 0x80, +0xE9, 0x5E, 0x11, 0x80, 0x0B, 0x5F, 0x11, 0x80, +0x2D, 0x5F, 0x11, 0x80, 0x4F, 0x5F, 0x11, 0x80, +0x73, 0x5F, 0x11, 0x80, 0xAD, 0x5F, 0x11, 0x80, +0xD1, 0x5F, 0x11, 0x80, 0xF5, 0x5F, 0x11, 0x80, +0x19, 0x60, 0x11, 0x80, 0x3F, 0x60, 0x11, 0x80, 0x01, 0x01, 0x04, 0x10, 0x40, 0x00, 0x00, 0x00, 0xE0, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0x00, 0x00, 0x91, 0x4D, 0x11, 0x80, @@ -56546,7 +56570,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0x0C, 0x0E, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x06, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, -0x46, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x6E, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x21, 0x6C, 0x00, 0xF0, 0x00, 0x4C, 0xBC, 0x65, 0x94, 0xB8, 0x00, 0x65, 0x00, 0x6D, 0xFE, 0xF7, 0x1F, 0x4D, 0xAC, 0xEC, 0x94, 0xB9, @@ -56574,10 +56598,10 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0xC0, 0xF0, 0x01, 0x4A, 0x40, 0xDB, -0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0xE3, 0x58, -0x80, 0x18, 0xF3, 0x55, 0x80, 0x18, 0x1A, 0x56, -0x80, 0x18, 0xB4, 0x58, 0x80, 0x18, 0x34, 0x56, -0x80, 0x18, 0xAB, 0x58, 0x00, 0x18, 0xA8, 0xC2, +0x00, 0x1C, 0x80, 0x00, 0x80, 0x18, 0xF0, 0x58, +0x80, 0x18, 0xF3, 0x55, 0x80, 0x18, 0x27, 0x56, +0x80, 0x18, 0xC1, 0x58, 0x80, 0x18, 0x41, 0x56, +0x80, 0x18, 0xB8, 0x58, 0x00, 0x18, 0xA8, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF7, 0x54, 0x9A, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x30, 0xF0, 0x21, 0x6A, 0x41, 0xF7, @@ -58090,7 +58114,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x0A, 0x10, 0x04, 0x6C, 0xF0, 0x6D, 0x07, 0x10, 0x04, 0x6C, 0x01, 0xF7, 0x00, 0x6D, 0x03, 0x10, 0x04, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, 0x80, 0x18, -0xA8, 0x57, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, +0xB5, 0x57, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x68, 0x9A, 0xFF, 0x6C, 0x07, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x25, 0x10, 0x05, 0x5C, 0x1D, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, @@ -58100,7 +58124,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x0F, 0x6D, 0x0A, 0x10, 0x04, 0x6C, 0xF0, 0x6D, 0x07, 0x10, 0x04, 0x6C, 0x01, 0xF7, 0x00, 0x6D, 0x03, 0x10, 0x04, 0x6C, 0x1E, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0xD9, 0x57, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0x18, 0xE6, 0x57, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, 0x68, 0x9A, 0xFC, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, @@ -58114,7 +58138,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x0B, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0xE3, 0xF1, 0xA4, 0x9A, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0xA8, 0x9A, 0x04, 0x6C, -0x80, 0x18, 0xA8, 0x57, 0x26, 0x10, 0x05, 0x5C, +0x80, 0x18, 0xB5, 0x57, 0x26, 0x10, 0x05, 0x5C, 0x24, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0xE2, 0xF2, 0x04, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, 0x00, 0x6C, 0x08, 0x6D, 0x17, 0x10, @@ -58124,7 +58148,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x6C, 0xE3, 0xF1, 0xA4, 0x9A, 0x05, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, 0xA8, 0x9A, 0x04, 0x6C, 0x80, 0x18, -0xD9, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xE6, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0xFF, 0x6A, 0xE3, 0xF1, 0x6C, 0x9B, 0x4C, 0xEC, 0x04, 0xD4, 0x20, 0xA3, @@ -59278,12 +59302,12 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x69, 0xC2, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x1A, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x07, 0x6A, -0x4F, 0xCB, 0x80, 0x18, 0xA5, 0x56, 0x30, 0xF0, +0x4F, 0xCB, 0x80, 0x18, 0xB2, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x19, 0x6A, 0x7D, 0x67, 0x50, 0xC3, 0x00, 0xF0, 0x12, 0x04, 0x08, 0x6A, -0x4F, 0xCB, 0x80, 0x18, 0x6E, 0x56, 0x30, 0xF0, +0x4F, 0xCB, 0x80, 0x18, 0x7B, 0x56, 0x30, 0xF0, 0x20, 0x6A, 0x00, 0xF4, 0x5C, 0x9A, 0x04, 0x04, 0x40, 0xEA, 0x09, 0x97, 0x05, 0x63, 0x00, 0xEF, 0xFF, 0xF7, 0x1F, 0x6A, 0x30, 0xF0, 0x20, 0x6B, @@ -59609,7 +59633,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x4C, 0xEC, 0x2C, 0xEC, 0x80, 0x18, 0xF9, 0x3A, 0x01, 0x72, 0x21, 0x60, 0x01, 0x6C, 0x00, 0x18, 0x47, 0xD1, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x84, 0x9A, 0x80, 0x18, 0x9E, 0x57, 0x17, 0x10, +0x84, 0x9A, 0x80, 0x18, 0xAB, 0x57, 0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF5, 0x10, 0x4A, 0x05, 0xF3, 0x78, 0xA2, 0x6E, 0xEC, 0x0F, 0x2C, 0xE0, 0xF0, 0x92, 0xA2, 0x10, 0x6B, 0x8C, 0xEB, @@ -60096,60 +60120,60 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x44, 0x32, 0xFF, 0x4A, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, -0x80, 0x18, 0x0C, 0x58, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0x19, 0x58, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0xFF, 0x4A, 0x44, 0x32, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, -0x80, 0x18, 0x0C, 0x58, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0x19, 0x58, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, 0x08, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x44, 0x32, 0xFF, 0x4A, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, -0x80, 0x18, 0x29, 0x58, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0x36, 0x58, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x8C, 0xEA, 0x04, 0x2A, 0x01, 0x6C, 0x04, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0xFF, 0x4A, 0x44, 0x32, 0x01, 0x6D, 0x02, 0x6C, 0xA4, 0xEA, -0x80, 0x18, 0x29, 0x58, 0x05, 0x97, 0x03, 0x63, +0x80, 0x18, 0x36, 0x58, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x80, 0x18, -0xA8, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xB5, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, -0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0xA8, 0x57, +0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0xB5, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xAD, 0xDB, 0x01, 0x6D, 0x02, 0x6C, -0xA4, 0xEA, 0x80, 0x18, 0xA8, 0x57, 0x05, 0x97, +0xA4, 0xEA, 0x80, 0x18, 0xB5, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xAD, 0xDB, 0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x80, 0x18, -0xA8, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xB5, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, -0xA2, 0x67, 0x80, 0x18, 0xA8, 0x57, 0x05, 0x97, +0xA2, 0x67, 0x80, 0x18, 0xB5, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x01, 0x6C, 0x44, 0x67, 0x15, 0x4D, 0x44, 0xED, 0xA2, 0x67, 0x80, 0x18, -0xD9, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xE6, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x04, 0x2D, 0x03, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x05, 0x10, 0x1B, 0x4D, 0x01, 0x6A, 0x44, 0xED, -0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0xD9, 0x57, +0x03, 0x6C, 0xA2, 0x67, 0x80, 0x18, 0xE6, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xAD, 0xDB, 0x01, 0x6D, 0x02, 0x6C, -0xA4, 0xEA, 0x80, 0x18, 0xD9, 0x57, 0x05, 0x97, +0xA4, 0xEA, 0x80, 0x18, 0xE6, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6A, 0x4C, 0xEC, 0x00, 0x18, 0xAD, 0xDB, 0x01, 0x6D, 0x03, 0x6C, 0xA4, 0xEA, 0x80, 0x18, -0xD9, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xE6, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0xFF, 0x6D, 0x8C, 0xED, 0x18, 0x4D, 0x01, 0x6A, 0x44, 0xED, 0x00, 0x6C, -0xA2, 0x67, 0x80, 0x18, 0xD9, 0x57, 0x05, 0x97, +0xA2, 0x67, 0x80, 0x18, 0xE6, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x23, 0x6A, 0x8E, 0xF0, 0x1D, 0x4A, @@ -61062,13 +61086,14 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x6D, 0xE2, 0x20, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF3, 0x90, 0x9B, 0x7F, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, 0x30, 0xF0, -0x20, 0x6B, 0xE4, 0xF0, 0x74, 0x9B, 0x1C, 0x6C, -0x80, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF0, -0x78, 0x9B, 0x08, 0xF4, 0x13, 0x6C, 0x80, 0xCB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF2, 0x8C, 0x9B, -0xF7, 0x6B, 0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, -0x60, 0xC4, 0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, -0x06, 0x63, 0x00, 0xEF, 0xFF, 0x6A, 0x4C, 0xEC, +0x20, 0x6B, 0x8A, 0xF1, 0x89, 0xA3, 0x30, 0xF0, +0x20, 0x6B, 0xE4, 0xF0, 0x74, 0x9B, 0x80, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0xE4, 0xF0, 0x78, 0x9B, +0x08, 0xF4, 0x13, 0x6C, 0x80, 0xCB, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF2, 0x8C, 0x9B, 0xF7, 0x6B, +0x91, 0xE2, 0xA0, 0xA4, 0xAC, 0xEB, 0x60, 0xC4, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFF, 0x6A, 0x4C, 0xEC, 0xAC, 0xEA, 0x0D, 0x22, 0x30, 0xF0, 0x20, 0x6A, 0xE4, 0xF0, 0x5C, 0x9A, 0x8C, 0x34, 0x30, 0xF0, 0x20, 0x6B, 0x51, 0xE4, 0x40, 0x9C, 0xA3, 0xF3, @@ -61094,40 +61119,40 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x00, 0xF7, 0x42, 0x32, 0x8C, 0xEA, 0x6C, 0xEA, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x00, 0x68, 0x90, 0x67, 0x00, 0x6D, -0x00, 0x18, 0x53, 0xE3, 0x90, 0x67, 0x01, 0x6D, -0x01, 0x48, 0x00, 0x18, 0x63, 0xE3, 0x0B, 0x70, +0x00, 0x18, 0x55, 0xE3, 0x90, 0x67, 0x01, 0x6D, +0x01, 0x48, 0x00, 0x18, 0x65, 0xE3, 0x0B, 0x70, 0xF5, 0x61, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0xFF, 0x6A, 0x4C, 0xEC, 0x0C, 0x6B, 0x7B, 0xEC, 0x01, 0x2B, 0xE5, 0xE8, 0x0A, 0x69, 0x12, 0xED, 0x4C, 0xED, 0x04, 0xD5, 0xFF, 0x68, 0x2C, 0xE8, 0x90, 0x67, 0x00, 0x18, -0x73, 0xE3, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, +0x75, 0xE3, 0x17, 0x2A, 0xFF, 0x49, 0x00, 0xF6, 0x20, 0x31, 0x90, 0x67, 0x01, 0x6D, 0x00, 0xF6, -0x23, 0x31, 0x00, 0x18, 0x63, 0xE3, 0x41, 0x41, +0x23, 0x31, 0x00, 0x18, 0x65, 0xE3, 0x41, 0x41, 0xEF, 0x2A, 0x01, 0x69, 0x2B, 0xE9, 0x09, 0x10, 0x04, 0x94, 0xFF, 0x49, 0x00, 0x6D, 0x00, 0xF6, -0x20, 0x31, 0x00, 0x18, 0x63, 0xE3, 0x00, 0xF6, +0x20, 0x31, 0x00, 0x18, 0x65, 0xE3, 0x00, 0xF6, 0x23, 0x31, 0x00, 0x51, 0xF5, 0x60, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x6A, 0x0C, 0x68, 0x4C, 0xEC, 0x1B, 0xEC, 0x01, 0x28, 0xE5, 0xE8, 0x4C, 0xED, 0x10, 0xE9, 0x4C, 0xE9, 0x12, 0xE8, 0x4C, 0xE8, 0x0F, 0x25, -0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x53, 0xE3, +0x90, 0x67, 0x01, 0x6D, 0x00, 0x18, 0x55, 0xE3, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x1C, 0x4A, 0x41, 0xE0, 0x60, 0xA0, 0x01, 0x6A, 0x44, 0xE9, 0x6D, 0xEA, 0x40, 0xC0, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0xA5, 0xF7, 0x1C, 0x4A, 0x49, 0xE0, 0x80, 0xA2, 0x01, 0x6B, 0x64, 0xE9, 0x6F, 0xEB, 0x8C, 0xEB, 0x60, 0xC2, 0x40, 0xA2, 0x04, 0x2A, -0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x53, 0xE3, +0x90, 0x67, 0x00, 0x6D, 0x00, 0x18, 0x55, 0xE3, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x68, 0x24, 0x67, 0x0C, 0xE9, 0xAC, 0xE8, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0xA6, 0xE3, 0x91, 0x67, 0xB0, 0x67, -0x00, 0x18, 0x8D, 0xE3, 0x07, 0x97, 0x06, 0x91, +0x00, 0x18, 0xA8, 0xE3, 0x91, 0x67, 0xB0, 0x67, +0x00, 0x18, 0x8F, 0xE3, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0x0C, 0x6B, 0x7B, 0xED, 0x01, 0x2B, 0xE5, 0xE8, 0x05, 0x6E, 0xFF, 0x6A, 0x4C, 0xEC, 0x10, 0xEB, @@ -61151,8 +61176,8 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x20, 0xE8, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, 0xFF, 0x69, 0x2C, 0xEC, 0xCC, 0xE9, 0x05, 0x67, 0x01, 0x29, 0x00, 0x6C, -0xB0, 0x67, 0x00, 0x18, 0xCC, 0xE3, 0xFF, 0x6C, -0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0xC1, 0xE3, +0xB0, 0x67, 0x00, 0x18, 0xCE, 0xE3, 0xFF, 0x6C, +0x0C, 0xEC, 0xB1, 0x67, 0x00, 0x18, 0xC3, 0xE3, 0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xAE, 0xEC, 0x01, 0x6A, 0x8C, 0xEA, 0x20, 0xE8, 0xFA, 0x63, 0x0B, 0x62, @@ -61161,7 +61186,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x22, 0x10, 0x05, 0x92, 0x40, 0xA2, 0x07, 0xD2, 0x00, 0x6A, 0x04, 0xD2, 0x04, 0x92, 0x07, 0x94, 0x12, 0x35, 0x87, 0xEA, 0xFF, 0x6A, 0x4C, 0xEC, -0x00, 0x18, 0xFF, 0xE3, 0x06, 0x22, 0xFF, 0x6A, +0x00, 0x18, 0x01, 0xE4, 0x06, 0x22, 0xFF, 0x6A, 0x04, 0x30, 0x4C, 0xE8, 0x05, 0x6A, 0x4E, 0xE8, 0x01, 0x10, 0x04, 0x30, 0xFF, 0x6A, 0x4C, 0xE8, 0x04, 0x92, 0x01, 0x4A, 0x08, 0x72, 0x04, 0xD2, @@ -61189,16 +61214,16 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x10, 0xF0, 0x00, 0x6C, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x60, 0x9A, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, 0x81, 0x40, 0x06, 0x6D, -0x00, 0x18, 0x01, 0xE4, 0x60, 0xA0, 0x01, 0x6E, +0x00, 0x18, 0x03, 0xE4, 0x60, 0xA0, 0x01, 0x6E, 0x82, 0x67, 0x66, 0x35, 0x6C, 0xEE, 0x00, 0x18, -0xF3, 0xE3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0xF5, 0xE3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0x83, 0xE3, 0x30, 0xF0, 0x20, 0x6A, +0x00, 0x18, 0x85, 0xE3, 0x30, 0xF0, 0x20, 0x6A, 0x24, 0xF1, 0x64, 0x9A, 0xFF, 0xF7, 0x1F, 0x6A, 0x80, 0xAB, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF3, 0x98, 0x9C, 0x8D, 0xEA, 0x40, 0xDB, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x1C, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xCD, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x63, 0x09, 0x62, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF2, 0x58, 0x9A, 0x00, 0x6B, 0x00, 0x6E, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF0, @@ -62366,7 +62391,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x05, 0xF3, 0x78, 0xC2, 0x30, 0xF0, 0x20, 0x68, 0xC6, 0xF5, 0x10, 0x48, 0x05, 0xF3, 0x58, 0xA0, 0x01, 0x6C, 0x0C, 0x4A, 0x84, 0xEA, 0x80, 0x18, -0x95, 0x57, 0xE0, 0xF0, 0x74, 0xA0, 0x04, 0x6A, +0xA2, 0x57, 0xE0, 0xF0, 0x74, 0xA0, 0x04, 0x6A, 0x6C, 0xEA, 0x05, 0x22, 0x05, 0xF3, 0x98, 0xA0, 0x80, 0x18, 0x21, 0x3B, 0x04, 0x10, 0x05, 0xF3, 0x98, 0xA0, 0x80, 0x18, 0x1B, 0x3B, 0x05, 0x97, @@ -62423,7 +62448,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x5F, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0xA1, 0x72, 0x09, 0x61, 0x01, 0x6C, 0x00, 0x18, 0x47, 0xD1, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF1, 0x84, 0x9A, 0x80, 0x18, 0x9E, 0x57, +0xE3, 0xF1, 0x84, 0x9A, 0x80, 0x18, 0xAB, 0x57, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF5, 0x10, 0x4A, 0xA0, 0xF0, 0x96, 0xA2, 0x02, 0x6B, 0x6B, 0xEB, 0x8C, 0xEB, 0xE0, 0xF0, 0x95, 0xA2, 0xA0, 0xF0, @@ -62646,9 +62671,9 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x80, 0x18, 0x45, 0x07, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0xB8, 0x9A, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, 0x50, 0x9A, 0x01, 0x6C, 0xA0, 0xDA, -0x80, 0x18, 0xA8, 0x57, 0x17, 0x10, 0x30, 0xF0, +0x80, 0x18, 0xB5, 0x57, 0x17, 0x10, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF1, 0xB8, 0x9A, 0x01, 0x6C, -0x80, 0x18, 0xD9, 0x57, 0x00, 0x6C, 0x80, 0x18, +0x80, 0x18, 0xE6, 0x57, 0x00, 0x6C, 0x80, 0x18, 0x66, 0x3E, 0x80, 0x18, 0xA1, 0x09, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, 0x30, 0xF0, 0x20, 0x6C, 0xEB, 0xF0, 0x14, 0x4C, 0x00, 0x6D, @@ -62736,7 +62761,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xE0, 0xF0, 0x95, 0xA0, 0x01, 0x69, 0x92, 0x34, 0x2C, 0xEC, 0x80, 0x18, 0x04, 0x14, 0xE0, 0xF0, 0x95, 0xA0, 0x9A, 0x34, 0x2C, 0xEC, 0x80, 0x18, -0x27, 0x15, 0x80, 0x18, 0x3A, 0x5A, 0xE0, 0xF0, +0x27, 0x15, 0x80, 0x18, 0x47, 0x5A, 0xE0, 0xF0, 0x77, 0xA0, 0x44, 0xF3, 0x90, 0xA0, 0x02, 0x6A, 0x6A, 0x33, 0x4B, 0xEA, 0x2C, 0xEB, 0x8C, 0xEA, 0xE0, 0xF0, 0x95, 0xA0, 0x6D, 0xEA, 0x03, 0x6B, @@ -62898,7 +62923,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0xE0, 0xF0, 0x72, 0xA0, 0x7F, 0x6A, 0x4B, 0xEA, 0x6C, 0xEA, 0xFF, 0x6B, 0x6C, 0xEA, 0x81, 0x72, 0x0D, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF1, -0x84, 0x9A, 0x80, 0x18, 0x95, 0x57, 0xE0, 0xF0, +0x84, 0x9A, 0x80, 0x18, 0xA2, 0x57, 0xE0, 0xF0, 0x4F, 0xA0, 0xFF, 0x6C, 0x4C, 0xE9, 0x2C, 0xEC, 0x80, 0x18, 0x21, 0x3B, 0x80, 0x18, 0x06, 0x09, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF5, 0x10, 0x4A, @@ -68271,7 +68296,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x31, 0x6A, 0xFB, 0xF4, 0x01, 0x4A, 0x40, 0xDB, 0x00, 0x1C, 0xAC, 0x39, 0x80, 0x18, -0x48, 0x58, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, +0x55, 0x58, 0x05, 0x6C, 0x01, 0x6D, 0x80, 0x18, 0x4E, 0x16, 0x20, 0xBA, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, @@ -68525,7 +68550,7 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x6F, 0x60, 0xCD, 0x74, 0x69, 0x60, 0x70, 0x10, 0x85, 0x67, 0x80, 0x18, 0xB3, 0x35, 0x7F, 0x10, 0x85, 0x67, 0x80, 0x18, 0x98, 0x38, 0x7B, 0x10, -0x85, 0x67, 0x00, 0x18, 0x1D, 0xE4, 0x77, 0x10, +0x85, 0x67, 0x00, 0x18, 0x1F, 0xE4, 0x77, 0x10, 0x85, 0x67, 0x80, 0x18, 0xBE, 0x05, 0x73, 0x10, 0x85, 0x67, 0x80, 0x18, 0xE1, 0x05, 0x6F, 0x10, 0x85, 0x67, 0x80, 0x18, 0x2B, 0x38, 0x6B, 0x10, @@ -72201,600 +72226,607 @@ u8 array_mp_8822c_fw_wowlan[] = { 0x7C, 0x9B, 0x6D, 0xE2, 0x04, 0x4A, 0x00, 0x6C, 0x62, 0xF4, 0x00, 0x72, 0x80, 0xDB, 0xE9, 0x61, 0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, -0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF3, 0x48, 0x9A, -0x03, 0x6C, 0x60, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF1, 0x5C, 0x9A, 0x00, 0xF5, 0x62, 0x33, -0x8C, 0xEB, 0x40, 0x9A, 0x01, 0x73, 0x42, 0x32, -0x52, 0x32, 0x8C, 0xEA, 0x05, 0x60, 0x0B, 0x2B, -0x02, 0x5A, 0x50, 0x6C, 0x0D, 0x60, 0x03, 0x10, -0x02, 0x5A, 0x0A, 0x60, 0x28, 0x6C, 0x87, 0xEA, -0xFF, 0x6A, 0x4C, 0xEC, 0x06, 0x10, 0x02, 0x5A, -0x28, 0x6C, 0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, -0x50, 0x6C, 0x80, 0x18, 0xC5, 0x58, 0x80, 0x18, -0xE6, 0x15, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, -0x7C, 0x9B, 0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF0, 0x78, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x7C, 0x9B, -0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, -0x70, 0x9B, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF3, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xC3, 0xF0, 0x74, 0x9B, 0x40, 0xDB, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD1, 0x05, 0xD0, -0x30, 0xF0, 0x20, 0x68, 0xC6, 0xF5, 0x10, 0x48, -0x00, 0x69, 0xA0, 0xF0, 0x24, 0xD8, 0xA0, 0xF1, -0x3C, 0xC0, 0x80, 0x18, 0xC8, 0x55, 0x80, 0x18, -0x37, 0x57, 0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, -0x20, 0x6C, 0x43, 0xF2, 0x38, 0xC0, 0x6A, 0xF1, -0x08, 0x4A, 0x6A, 0xF1, 0x18, 0x4C, 0x00, 0x6B, -0x60, 0xC2, 0x70, 0xC2, 0x01, 0x4A, 0x62, 0x67, -0x8E, 0xEB, 0xF9, 0x2B, 0x07, 0x97, 0x06, 0x91, -0x05, 0x90, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF5, -0x10, 0x4A, 0x83, 0xF3, 0x75, 0xC2, 0x83, 0xF3, -0x76, 0xC2, 0x83, 0xF3, 0x77, 0xC2, 0x83, 0xF3, -0x74, 0xC2, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xDF, 0x55, -0x80, 0x18, 0x4C, 0x56, 0x80, 0x18, 0xEC, 0x49, -0x00, 0x18, 0x4B, 0xE4, 0x00, 0x18, 0x85, 0xCB, -0x00, 0x18, 0x16, 0xC5, 0x80, 0x18, 0x64, 0x0D, -0x80, 0x18, 0xB1, 0x05, 0x80, 0x18, 0xD4, 0x05, -0x30, 0xF0, 0x20, 0x6A, 0x60, 0xF4, 0x44, 0x9A, -0x40, 0xEA, 0x80, 0x18, 0x8F, 0x53, 0x80, 0x18, -0x9D, 0x3B, 0x00, 0x18, 0x24, 0xDA, 0x00, 0x18, -0x42, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x68, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, -0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, -0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6C, 0x1C, 0x6A, 0xC6, 0xF5, +0x10, 0x4C, 0xA3, 0xF3, 0x59, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF3, 0x48, 0x9A, 0x03, 0x6E, +0xFF, 0x6B, 0xA0, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x5C, 0x9A, 0x00, 0xF5, 0xA2, 0x35, +0xCC, 0xED, 0x40, 0x9A, 0x42, 0x32, 0x52, 0x32, +0xCC, 0xEA, 0x02, 0x6E, 0xAE, 0xEE, 0x0E, 0x26, +0x03, 0x75, 0x11, 0x60, 0x01, 0x75, 0x04, 0x60, +0x02, 0x5A, 0x50, 0x6C, 0x1C, 0x60, 0x03, 0x10, +0x02, 0x5A, 0x19, 0x60, 0x28, 0x6C, 0x87, 0xEA, +0x6C, 0xEC, 0x16, 0x10, 0x2D, 0x6B, 0x83, 0xF3, +0xD4, 0xC4, 0xA3, 0xF3, 0x79, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, 0xA3, 0xF3, +0x99, 0xA3, 0x2D, 0x74, 0x03, 0x60, 0x55, 0x6C, +0xA3, 0xF3, 0x99, 0xC3, 0x02, 0x5A, 0x28, 0x6C, +0x03, 0x60, 0x14, 0x6C, 0x01, 0x10, 0x50, 0x6C, +0x80, 0x18, 0xD2, 0x58, 0x80, 0x18, 0xE6, 0x15, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF1, 0x7C, 0x9B, +0x00, 0x6A, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x43, 0xF0, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF3, 0x7C, 0x9B, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, 0x70, 0x9B, +0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF3, +0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xC3, 0xF0, 0x74, 0x9B, 0x40, 0xDB, 0x05, 0x97, +0x03, 0x63, 0x00, 0xEF, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD1, 0x05, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC6, 0xF5, 0x10, 0x48, 0x00, 0x69, 0xA0, 0xF0, +0x24, 0xD8, 0xA0, 0xF1, 0x3C, 0xC0, 0x80, 0x18, +0xC8, 0x55, 0x80, 0x18, 0x44, 0x57, 0x30, 0xF0, +0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6C, 0x43, 0xF2, +0x38, 0xC0, 0x6A, 0xF1, 0x08, 0x4A, 0x6A, 0xF1, +0x18, 0x4C, 0x00, 0x6B, 0x60, 0xC2, 0x70, 0xC2, +0x01, 0x4A, 0x62, 0x67, 0x8E, 0xEB, 0xF9, 0x2B, +0x07, 0x97, 0x06, 0x91, 0x05, 0x90, 0x30, 0xF0, +0x20, 0x6A, 0xC6, 0xF5, 0x10, 0x4A, 0x83, 0xF3, +0x75, 0xC2, 0x83, 0xF3, 0x76, 0xC2, 0x83, 0xF3, +0x77, 0xC2, 0x83, 0xF3, 0x74, 0xC2, 0x04, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xDF, 0x55, 0x80, 0x18, 0x59, 0x56, +0x80, 0x18, 0xEC, 0x49, 0x00, 0x18, 0x4D, 0xE4, +0x00, 0x18, 0x85, 0xCB, 0x00, 0x18, 0x16, 0xC5, +0x80, 0x18, 0x64, 0x0D, 0x80, 0x18, 0xB1, 0x05, +0x80, 0x18, 0xD4, 0x05, 0x30, 0xF0, 0x20, 0x6A, +0x60, 0xF4, 0x44, 0x9A, 0x40, 0xEA, 0x80, 0x18, +0x8F, 0x53, 0x80, 0x18, 0x9D, 0x3B, 0x00, 0x18, +0x24, 0xDA, 0x00, 0x18, 0x42, 0xDA, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF1, 0x68, 0x9A, 0xFF, 0x6C, +0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, +0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xC6, 0xF5, 0x10, 0x4A, 0x00, 0x6B, 0xA0, 0xF6, +0x7E, 0xC2, 0xA0, 0xF6, 0x7F, 0xC2, 0xA0, 0xF1, +0x7C, 0xC2, 0xA0, 0xF1, 0x7D, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF5, 0x10, 0x4A, -0x00, 0x6B, 0xA0, 0xF6, 0x7E, 0xC2, 0xA0, 0xF6, -0x7F, 0xC2, 0xA0, 0xF1, 0x7C, 0xC2, 0xA0, 0xF1, -0x7D, 0xC2, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF5, 0x10, 0x4A, 0x08, 0xF1, 0x65, 0xA2, -0x0F, 0x23, 0x08, 0xF1, 0x64, 0xA2, 0x0C, 0x23, -0x08, 0xF1, 0x6A, 0xA2, 0x09, 0x23, 0x08, 0xF1, -0x66, 0xA2, 0x06, 0x23, 0x08, 0xF1, 0x68, 0xA2, -0x03, 0x23, 0x08, 0xF1, 0x47, 0xA2, 0x1E, 0x2A, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, 0x7C, 0x9A, -0xFF, 0xF7, 0x1F, 0x6C, 0x10, 0xF0, 0x00, 0x6D, -0x40, 0xAB, 0xAB, 0xED, 0x8C, 0xEA, 0xAD, 0xEA, -0x8C, 0xEA, 0x40, 0xCB, 0x30, 0xF0, 0x20, 0x6A, -0x23, 0xF5, 0x40, 0x9A, 0x00, 0x6B, 0x60, 0xC2, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x70, 0x9A, -0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF0, 0x58, 0x9A, -0x60, 0xDA, 0xF0, 0x17, 0x20, 0xE8, 0x00, 0x65, +0x08, 0xF1, 0x65, 0xA2, 0x0F, 0x23, 0x08, 0xF1, +0x64, 0xA2, 0x0C, 0x23, 0x08, 0xF1, 0x6A, 0xA2, +0x09, 0x23, 0x08, 0xF1, 0x66, 0xA2, 0x06, 0x23, +0x08, 0xF1, 0x68, 0xA2, 0x03, 0x23, 0x08, 0xF1, +0x47, 0xA2, 0x1E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF1, 0x7C, 0x9A, 0xFF, 0xF7, 0x1F, 0x6C, +0x10, 0xF0, 0x00, 0x6D, 0x40, 0xAB, 0xAB, 0xED, +0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xCB, +0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF5, 0x40, 0x9A, +0x00, 0x6B, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF7, 0x70, 0x9A, 0x30, 0xF0, 0x20, 0x6A, +0x43, 0xF0, 0x58, 0x9A, 0x60, 0xDA, 0xF0, 0x17, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, +0xC0, 0xF3, 0x48, 0x98, 0x0A, 0xD4, 0x04, 0x05, +0xE0, 0xF1, 0x14, 0x6C, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x15, 0x6C, +0x30, 0xF0, 0x20, 0x69, 0x40, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0xC6, 0xF5, 0x10, 0x49, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x16, 0x6C, 0x41, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x17, 0x6C, +0x42, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, +0xE0, 0xF1, 0x18, 0x6C, 0x43, 0xC5, 0xC0, 0xF3, +0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x19, 0x6C, +0x44, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, +0x40, 0xEA, 0xBD, 0x67, 0x90, 0xA5, 0x08, 0xF1, +0x48, 0xA1, 0x0F, 0x6B, 0x8C, 0xEB, 0x50, 0x32, +0x6D, 0xEA, 0x0A, 0x93, 0x04, 0x05, 0xE0, 0xF1, +0x1B, 0x6C, 0x45, 0xC3, 0xC0, 0xF3, 0x48, 0x98, +0x40, 0xEA, 0x08, 0xF1, 0x4A, 0xA1, 0x08, 0xF1, +0x65, 0xA1, 0x0A, 0x95, 0x4C, 0x32, 0x74, 0x33, +0x6D, 0xEA, 0x08, 0xF1, 0x64, 0xA1, 0x6D, 0xEA, +0x46, 0xC5, 0x08, 0xF1, 0x46, 0xA1, 0x08, 0xF1, +0x67, 0xA1, 0x48, 0x32, 0x78, 0x33, 0x6D, 0xEA, +0x33, 0x6B, 0x6D, 0xEA, 0x47, 0xC5, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC0, 0xF3, 0x48, 0x98, -0x0A, 0xD4, 0x04, 0x05, 0xE0, 0xF1, 0x14, 0x6C, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x15, 0x6C, 0x30, 0xF0, 0x20, 0x69, -0x40, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0xC6, 0xF5, 0x10, 0x49, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x16, 0x6C, -0x41, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x17, 0x6C, 0x42, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x0A, 0x95, 0xE0, 0xF1, 0x18, 0x6C, -0x43, 0xC5, 0xC0, 0xF3, 0x48, 0x98, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x0A, 0x95, -0xE0, 0xF1, 0x19, 0x6C, 0x44, 0xC5, 0xC0, 0xF3, -0x48, 0x98, 0x04, 0x05, 0x40, 0xEA, 0xBD, 0x67, -0x90, 0xA5, 0x08, 0xF1, 0x48, 0xA1, 0x0F, 0x6B, -0x8C, 0xEB, 0x50, 0x32, 0x6D, 0xEA, 0x0A, 0x93, -0x04, 0x05, 0xE0, 0xF1, 0x1B, 0x6C, 0x45, 0xC3, -0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x08, 0xF1, -0x4A, 0xA1, 0x08, 0xF1, 0x65, 0xA1, 0x0A, 0x95, -0x4C, 0x32, 0x74, 0x33, 0x6D, 0xEA, 0x08, 0xF1, -0x64, 0xA1, 0x6D, 0xEA, 0x46, 0xC5, 0x08, 0xF1, -0x46, 0xA1, 0x08, 0xF1, 0x67, 0xA1, 0x48, 0x32, -0x78, 0x33, 0x6D, 0xEA, 0x33, 0x6B, 0x6D, 0xEA, -0x47, 0xC5, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x68, -0xC0, 0xF3, 0x48, 0x98, 0x24, 0x67, 0x04, 0x05, -0xE0, 0xF1, 0x10, 0x6C, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x11, 0x6C, -0x40, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, -0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, -0x12, 0x6C, 0x41, 0xC1, 0xC0, 0xF3, 0x48, 0x98, +0x24, 0x67, 0x04, 0x05, 0xE0, 0xF1, 0x10, 0x6C, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, -0xE0, 0xF1, 0x13, 0x6C, 0x42, 0xC1, 0xC0, 0xF3, +0xE0, 0xF1, 0x11, 0x6C, 0x40, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x04, 0x05, 0xE0, 0xF1, 0x1C, 0x6C, 0x43, 0xC1, +0x04, 0x05, 0xE0, 0xF1, 0x12, 0x6C, 0x41, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x1D, 0x6C, -0x44, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, 0x13, 0x6C, +0x42, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, 0xE0, 0xF1, -0x1E, 0x6C, 0x45, 0xC1, 0xC0, 0xF3, 0x48, 0x98, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0xE0, 0xF1, -0x1F, 0x6C, 0x04, 0x05, 0x46, 0xC1, 0xC0, 0xF3, +0x1C, 0x6C, 0x43, 0xC1, 0xC0, 0xF3, 0x48, 0x98, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x04, 0x05, +0xE0, 0xF1, 0x1D, 0x6C, 0x44, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x47, 0xC1, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD0, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, -0x6E, 0x56, 0xA0, 0xF1, 0x02, 0x6A, 0x1F, 0xF7, -0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, -0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, -0xA3, 0xF0, 0x78, 0x9B, 0x04, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xA3, 0xF0, 0x7C, 0x9B, 0x80, 0xA0, -0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0A, 0x72, -0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x04, 0x00, -0x90, 0x67, 0x80, 0x18, 0xA5, 0x56, 0xA0, 0xF1, -0x0A, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, +0x04, 0x05, 0xE0, 0xF1, 0x1E, 0x6C, 0x45, 0xC1, +0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0xE0, 0xF1, 0x1F, 0x6C, 0x04, 0x05, +0x46, 0xC1, 0xC0, 0xF3, 0x48, 0x98, 0x40, 0xEA, +0x7D, 0x67, 0x50, 0xA3, 0x47, 0xC1, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFB, 0x63, 0x09, 0x62, 0x08, 0xD0, 0x04, 0x00, +0x90, 0x67, 0x80, 0x18, 0x7B, 0x56, 0xA0, 0xF1, +0x02, 0x6A, 0x1F, 0xF7, 0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, 0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0x78, 0x9B, 0x04, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xA3, 0xF0, 0x7C, 0x9B, 0x80, 0xA0, 0x6D, 0xE2, 0x01, 0x4A, -0xA0, 0xF1, 0x0F, 0x72, 0x80, 0xC3, 0x01, 0x48, -0xE8, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, -0x54, 0x9A, 0x19, 0x6B, 0x60, 0xC2, 0x09, 0x97, -0x08, 0x90, 0x05, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFC, 0x63, 0x07, 0x62, 0x06, 0xD0, 0x30, 0xF0, -0x20, 0x68, 0xC6, 0xF5, 0x10, 0x48, 0x08, 0xF1, -0x44, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, -0x07, 0x6A, 0x6C, 0xEA, 0x08, 0xF1, 0x44, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0xC6, 0xF5, 0x10, 0x48, -0x08, 0xF1, 0x45, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, -0x50, 0xA3, 0x56, 0x32, 0x08, 0xF1, 0x45, 0xC0, -0x30, 0xF0, 0x20, 0x68, 0xC6, 0xF5, 0x10, 0x48, -0x08, 0xF1, 0x4A, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, -0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, -0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, -0x50, 0xA4, 0x18, 0x6B, 0x6C, 0xEA, 0x4F, 0x32, -0x08, 0xF1, 0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0xC6, 0xF5, 0x10, 0x48, 0x08, 0xF1, 0x48, 0xA0, +0xA0, 0xF1, 0x0A, 0x72, 0x80, 0xC3, 0x01, 0x48, +0xE8, 0x61, 0x04, 0x00, 0x90, 0x67, 0x80, 0x18, +0xB2, 0x56, 0xA0, 0xF1, 0x0A, 0x6A, 0x1F, 0xF7, +0x00, 0x6B, 0x4C, 0xEB, 0x02, 0xF0, 0x00, 0x73, +0x01, 0x60, 0x05, 0x2B, 0x30, 0xF0, 0x20, 0x6B, +0xA3, 0xF0, 0x78, 0x9B, 0x04, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xA3, 0xF0, 0x7C, 0x9B, 0x80, 0xA0, +0x6D, 0xE2, 0x01, 0x4A, 0xA0, 0xF1, 0x0F, 0x72, +0x80, 0xC3, 0x01, 0x48, 0xE8, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x23, 0xF7, 0x54, 0x9A, 0x19, 0x6B, +0x60, 0xC2, 0x09, 0x97, 0x08, 0x90, 0x05, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFC, 0x63, 0x07, 0x62, +0x06, 0xD0, 0x30, 0xF0, 0x20, 0x68, 0xC6, 0xF5, +0x10, 0x48, 0x08, 0xF1, 0x44, 0xA0, 0x0E, 0x2A, +0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, +0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, 0x40, 0xEA, +0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, +0x08, 0xF1, 0x44, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0xC6, 0xF5, 0x10, 0x48, 0x08, 0xF1, 0x45, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1C, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x52, 0x32, -0x08, 0xF1, 0x48, 0xC0, 0x30, 0xF0, 0x20, 0x68, -0xC6, 0xF5, 0x10, 0x48, 0x08, 0xF1, 0x46, 0xA0, -0x0E, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, -0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x03, 0x6A, -0x6C, 0xEA, 0x08, 0xF1, 0x46, 0xC0, 0x30, 0xF0, -0x20, 0x68, 0xC6, 0xF5, 0x10, 0x48, 0x08, 0xF1, -0x47, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, -0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, -0x30, 0x6B, 0x6C, 0xEA, 0x53, 0x32, 0x08, 0xF1, -0x47, 0xC0, 0x07, 0x97, 0x06, 0x90, 0x04, 0x63, -0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, -0x08, 0xD1, 0x07, 0xD0, 0x30, 0xF0, 0x20, 0x69, -0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x19, 0x6C, -0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, +0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x7D, 0x67, 0x50, 0xA3, 0x56, 0x32, +0x08, 0xF1, 0x45, 0xC0, 0x30, 0xF0, 0x20, 0x68, +0xC6, 0xF5, 0x10, 0x48, 0x08, 0xF1, 0x4A, 0xA0, +0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, +0x48, 0x9A, 0xE0, 0xF1, 0x1A, 0x6C, 0x04, 0x05, +0x40, 0xEA, 0x9D, 0x67, 0x50, 0xA4, 0x18, 0x6B, +0x6C, 0xEA, 0x4F, 0x32, 0x08, 0xF1, 0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0xC6, 0xF5, 0x10, 0x48, -0x52, 0x32, 0x08, 0xF1, 0x48, 0xC0, 0xC0, 0xF3, -0x48, 0x99, 0xE0, 0xF1, 0x1B, 0x6C, 0x04, 0x05, -0x40, 0xEA, 0x9D, 0x67, 0x70, 0xA4, 0x07, 0x6A, -0x6C, 0xEA, 0x08, 0xF1, 0x44, 0xC0, 0x43, 0x67, -0x18, 0x6B, 0x4C, 0xEB, 0x6F, 0x33, 0x08, 0xF1, -0x6A, 0xC0, 0x4F, 0x72, 0x56, 0x33, 0x08, 0xF1, -0x65, 0xC0, 0x0E, 0x61, 0xC0, 0xF3, 0x48, 0x99, -0xE0, 0xF1, 0x1A, 0x6C, 0x00, 0xF0, 0x11, 0x05, -0x40, 0xEA, 0x7D, 0x67, 0x51, 0xA3, 0x57, 0x72, -0x03, 0x61, 0x02, 0x6A, 0x08, 0xF1, 0x4A, 0xC0, +0x08, 0xF1, 0x48, 0xA0, 0x0D, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1C, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x50, 0xA3, 0x52, 0x32, 0x08, 0xF1, 0x48, 0xC0, +0x30, 0xF0, 0x20, 0x68, 0xC6, 0xF5, 0x10, 0x48, +0x08, 0xF1, 0x46, 0xA0, 0x0E, 0x2A, 0x30, 0xF0, +0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, +0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, +0x70, 0xA4, 0x03, 0x6A, 0x6C, 0xEA, 0x08, 0xF1, +0x46, 0xC0, 0x30, 0xF0, 0x20, 0x68, 0xC6, 0xF5, +0x10, 0x48, 0x08, 0xF1, 0x47, 0xA0, 0x0F, 0x2A, 0x30, 0xF0, 0x20, 0x6A, 0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, 0x04, 0x05, 0x40, 0xEA, -0x7D, 0x67, 0x90, 0xA3, 0x0C, 0x6B, 0x30, 0xF0, -0x20, 0x6A, 0x8C, 0xEB, 0xC6, 0xF5, 0x10, 0x4A, -0x6B, 0x33, 0x9A, 0x34, 0x08, 0xF1, 0x66, 0xC2, -0x08, 0xF1, 0x87, 0xC2, 0x80, 0x18, 0xF4, 0x56, -0x30, 0xF0, 0x20, 0x6A, 0x23, 0xF7, 0x54, 0x9A, -0x60, 0xA2, 0xFF, 0x6A, 0x6C, 0xEA, 0xFD, 0x72, -0x02, 0x61, 0x80, 0x18, 0xCF, 0x56, 0x80, 0x18, -0x53, 0x56, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF7, 0x40, 0x9A, 0x01, 0x6B, 0x60, 0xC2, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF7, 0x84, 0x9A, 0xFF, 0x6B, 0x20, 0x6D, -0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, -0x40, 0xC4, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF0, -0x9C, 0x9A, 0x08, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, -0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x68, 0x9A, -0xFD, 0x6A, 0xFF, 0x6C, 0xA0, 0xA3, 0xAC, 0xEA, -0x40, 0xC3, 0x40, 0xA3, 0x01, 0x6D, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x20, 0xE8, -0xFD, 0x63, 0x05, 0x62, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF2, 0x48, 0x9A, -0x23, 0xF1, 0x88, 0x9B, 0x00, 0x6D, 0x02, 0xF0, -0x00, 0x6E, 0x40, 0xEA, 0x00, 0x6A, 0x30, 0xF0, -0x20, 0x6B, 0x23, 0xF1, 0x68, 0x9B, 0x54, 0x34, -0x01, 0x4A, 0x6D, 0xE4, 0x80, 0x72, 0x04, 0x6C, -0x80, 0xC3, 0xF5, 0x61, 0x30, 0xF0, 0x20, 0x6B, -0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x8C, 0x9B, -0x80, 0xF2, 0x48, 0x9A, 0x00, 0x6D, 0x00, 0xF4, -0x00, 0x6E, 0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF5, 0x10, 0x4B, 0x52, 0x9B, 0x8D, 0xEA, -0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, -0x70, 0x9B, 0x80, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, -0xB2, 0x9B, 0x8F, 0xEA, 0xAC, 0xEA, 0x52, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x68, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0x50, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x05, 0x5C, 0x5E, 0x60, 0x30, 0xF0, 0x20, 0x6A, -0x88, 0x34, 0x02, 0xF7, 0x18, 0x4A, 0x89, 0xE2, -0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF5, 0x50, 0x9B, 0xAD, 0xEA, 0xC6, 0xF5, -0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF7, -0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x68, 0x9B, 0x32, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, 0x41, 0x9B, -0xAD, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xC3, 0xF2, 0x70, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x6C, 0x9B, 0x21, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, -0x42, 0x9B, 0xAD, 0xEA, 0x42, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF7, 0x74, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x70, 0x9B, -0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, -0x10, 0x4B, 0x43, 0x9B, 0xAD, 0xEA, 0x43, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x78, 0x9B, -0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, -0x78, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, 0x44, 0x9B, -0xAD, 0xEA, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF7, 0x7C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x63, 0x60, -0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x22, 0xF7, -0x0C, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x90, 0x9B, -0xAF, 0xEA, 0x8C, 0xEA, 0xC6, 0xF5, 0x50, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x68, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF7, -0x5C, 0x9A, 0x35, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF5, 0x10, 0x4B, 0x81, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x41, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0xC3, 0xF2, 0x50, 0x9A, 0x23, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, -0x82, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x42, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x70, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, -0x54, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF5, 0x10, 0x4B, 0x83, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF7, 0x58, 0x9A, 0xA0, 0xDA, -0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, -0x10, 0x4B, 0x84, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, -0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, -0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x63, 0xF7, 0x5C, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, -0x01, 0x74, 0x15, 0x60, 0x03, 0x24, 0x02, 0x74, -0x23, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF5, 0x10, 0x4B, 0x54, 0x9B, 0xAD, 0xEA, -0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0x6C, 0x9B, 0x21, 0x10, 0x30, 0xF0, -0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, 0x55, 0x9B, -0xAD, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF7, 0x60, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x60, 0x9B, 0x10, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, -0x56, 0x9B, 0xAD, 0xEA, 0x56, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF7, 0x64, 0x9B, 0xA0, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x64, 0x9B, -0x40, 0xDB, 0x20, 0xE8, 0x01, 0x74, 0x16, 0x60, -0x03, 0x24, 0x02, 0x74, 0x25, 0x60, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, -0x94, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x54, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x6C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF1, -0x58, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, -0xC6, 0xF5, 0x10, 0x4B, 0x95, 0x9B, 0xAF, 0xEA, -0x8C, 0xEA, 0x55, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF1, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x83, 0xF7, 0x40, 0x9A, 0x11, 0x10, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, -0x96, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x56, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x64, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, -0x44, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, 0x88, 0x9C, -0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, -0x50, 0xDB, 0xC6, 0xF5, 0x10, 0x4B, 0x41, 0xDB, -0x42, 0xDB, 0x43, 0xDB, 0x44, 0xDB, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, 0x8C, 0x9C, -0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, -0x90, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF0, 0x98, 0x9C, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0xE3, 0xF0, 0x9C, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF1, 0x8C, 0x9C, -0x54, 0xDB, 0x55, 0xDB, 0x40, 0xDC, 0x30, 0xF0, -0x20, 0x6C, 0x03, 0xF1, 0x80, 0x9C, 0x40, 0xDC, -0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF1, 0x84, 0x9C, -0x56, 0xDB, 0x40, 0xDC, 0x52, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x03, 0xF1, 0x68, 0x9B, 0x40, 0xDB, -0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6B, -0x03, 0xF7, 0x7C, 0x9B, 0x01, 0x6A, 0x4B, 0xEA, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, -0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x63, 0xF7, 0x74, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x63, 0xF7, 0x78, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x7C, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF1, -0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x83, 0xF7, 0x60, 0x9B, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0x83, 0xF7, 0x64, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x70, 0x9B, -0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0x83, 0xF7, 0xA8, 0x9A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF3, 0x10, 0x6E, 0xC6, 0xF5, 0xD0, 0xDB, -0x01, 0xF7, 0x01, 0x6A, 0xC6, 0xF5, 0x10, 0x4B, -0x00, 0x6C, 0x42, 0xDB, 0x43, 0xDB, 0xA1, 0xDB, -0x84, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, -0x68, 0x9B, 0xC0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0xE3, 0xF0, 0x6C, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, -0x20, 0x6B, 0xE3, 0xF0, 0x70, 0x9B, 0x40, 0xDB, -0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, -0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF0, -0x5C, 0x9A, 0x80, 0xDA, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF5, 0x10, 0x4A, -0x00, 0x6B, 0x72, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x48, 0x9A, 0x60, 0xDA, 0x20, 0xE8, -0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, 0x8C, 0x9B, -0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF5, 0x10, 0x4A, -0x80, 0xF1, 0x0E, 0x6D, 0xFF, 0x6B, 0xB4, 0xDA, -0x95, 0xDA, 0x76, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x03, 0xF1, 0x4C, 0x9A, 0xA0, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x03, 0xF1, 0x40, 0x9A, 0x80, 0xDA, -0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x44, 0x9A, -0x60, 0xDA, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, -0x80, 0x18, 0x48, 0x58, 0x80, 0x18, 0x67, 0x58, -0x80, 0x18, 0x7F, 0x58, 0x80, 0x18, 0x9C, 0x58, -0x80, 0x18, 0x96, 0x58, 0x05, 0x97, 0x03, 0x63, -0x00, 0xEF, 0x00, 0x65, 0x20, 0xE8, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0xD9, 0x58, -0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, -0x42, 0xF6, 0x50, 0xC3, 0x00, 0x6A, 0x42, 0xF6, -0x51, 0xC3, 0x80, 0x18, 0x78, 0x57, 0x80, 0x18, -0x66, 0x5A, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, -0x50, 0x9A, 0x3F, 0x6B, 0x60, 0xC2, 0x80, 0x18, -0x69, 0x57, 0x80, 0x18, 0x6D, 0x57, 0x80, 0x18, -0x28, 0x3D, 0x80, 0x18, 0x80, 0x57, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, -0x00, 0x18, 0xED, 0xD2, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x05, 0x97, -0x03, 0x63, 0x00, 0xEF, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF0, 0x54, 0x9A, 0xE0, 0xF1, 0x1B, 0x6B, -0x6B, 0xEB, 0x60, 0xCA, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF0, 0x78, 0x9A, 0xFB, 0x6A, 0x80, 0xA3, -0x8C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x04, 0xF0, 0x7C, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF3, 0x8C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, -0xE3, 0xF2, 0x44, 0x9A, 0xFF, 0xF7, 0x1F, 0x6B, -0x40, 0xAA, 0x4C, 0xEB, 0x62, 0x33, 0x03, 0x6A, -0x72, 0x33, 0x4C, 0xEB, 0x02, 0x6A, 0x04, 0x23, -0x01, 0x73, 0x01, 0x6A, 0x01, 0x60, 0x03, 0x6A, -0x20, 0xE8, 0x00, 0x65, 0x10, 0xF0, 0x23, 0x6A, -0xE9, 0xF4, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE9, 0xF4, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x2C, 0xF3, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x2F, 0xF2, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCC, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x50, 0xDB, 0x10, 0xF0, 0x24, 0x6A, -0x31, 0xF4, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x24, 0x6A, -0x11, 0xF2, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA8, 0xF5, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x58, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE8, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xE0, 0xF2, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x4C, 0xF1, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x8A, 0xF5, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xEA, 0xF5, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x0D, 0xF2, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x6A, 0xF4, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x2A, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x8A, 0xF6, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x69, 0xF7, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x8A, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x24, 0x6A, -0x10, 0xF2, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x24, 0x6A, -0x90, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xC2, 0xF2, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x48, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x42, 0xF2, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xCA, 0xF6, 0x1D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x44, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xEA, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF4, 0x54, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA8, 0xF0, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x58, 0xDB, 0x10, 0xF0, 0x24, 0x6A, -0xF0, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x5C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE8, 0xF0, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF4, 0x40, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xE8, 0xF1, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF4, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x5F, 0xF0, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF5, 0x44, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xFE, 0xF1, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x89, 0xF4, 0x09, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x44, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0xA9, 0xF4, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x4C, 0xDB, 0x10, 0xF0, 0x23, 0x6A, -0x89, 0xF4, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x48, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x49, 0xF5, 0x15, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x80, 0xF3, 0x50, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xDF, 0xF1, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF3, 0x40, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x25, 0xF2, 0x11, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x50, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x8B, 0xF4, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x54, 0xDB, 0x10, 0xF0, 0x30, 0x6A, -0x0E, 0xF0, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0xBE, 0xF6, 0x01, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF3, 0x58, 0xDB, 0x10, 0xF0, 0x31, 0x6A, -0x3E, 0xF6, 0x0D, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF3, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x66, 0xF6, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x00, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x29, 0xF4, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x4A, 0xF0, 0x6C, 0x9A, 0x30, 0xF0, 0x20, 0x6A, -0x20, 0xF6, 0x64, 0xDA, 0x30, 0xF0, 0x20, 0x6A, -0x4A, 0xF0, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x6A, 0xF1, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x8A, 0xF1, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x0C, 0xF2, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF2, 0x04, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x20, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF5, 0x07, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF5, 0x0C, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x44, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x2E, 0xF5, 0x14, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x48, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEC, 0xF1, 0x10, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x4C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEC, 0xF1, 0x18, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEC, 0xF1, 0x19, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEC, 0xF1, 0x1A, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x0C, 0xF2, 0x00, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x40, 0xF6, 0x5C, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0x0C, 0xF2, 0x0A, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0x60, 0xF6, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF6, 0x05, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xA0, 0xF6, 0x58, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xEE, 0xF6, 0x08, 0x4A, 0x30, 0xF0, 0x20, 0x6B, -0xC0, 0xF6, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, -0x30, 0xF0, 0x20, 0x6A, 0x30, 0xF0, 0x20, 0x6B, -0x21, 0xF0, 0x00, 0x4B, 0x80, 0xF2, 0x08, 0x4A, -0x13, 0x10, 0x80, 0x9A, 0x10, 0x2C, 0x30, 0xF0, -0x20, 0x6C, 0x83, 0xF1, 0xBC, 0x9C, 0x30, 0xF0, -0x20, 0x6E, 0x23, 0xF1, 0xD4, 0x9E, 0x80, 0x9D, -0xCD, 0xEC, 0x80, 0xDD, 0x30, 0xF0, 0x20, 0x6C, -0xE3, 0xF2, 0x98, 0x9C, 0x40, 0xDC, 0x04, 0x4A, -0x43, 0xEB, 0xEB, 0x60, 0x20, 0xE8, 0x00, 0x65, +0x7D, 0x67, 0x50, 0xA3, 0x30, 0x6B, 0x6C, 0xEA, +0x53, 0x32, 0x08, 0xF1, 0x47, 0xC0, 0x07, 0x97, +0x06, 0x90, 0x04, 0x63, 0x00, 0xEF, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, 0x08, 0xD1, 0x07, 0xD0, -0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0x30, 0xF0, -0x20, 0x6B, 0x04, 0xD5, 0x64, 0xF0, 0xB4, 0x9B, -0xFF, 0x6A, 0x40, 0x6E, 0x60, 0xA5, 0xCB, 0xEE, -0x4C, 0xEC, 0x4C, 0xEB, 0xCC, 0xEB, 0x6D, 0xEC, -0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, -0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x58, 0x9A, -0x00, 0xAA, 0x04, 0x92, 0x2C, 0xE8, 0x2A, 0xEA, -0x0B, 0x60, 0x30, 0xF0, 0x20, 0x6A, 0xA0, 0xF3, -0x44, 0x9A, 0x04, 0x94, 0x40, 0xEA, 0x04, 0x93, -0x2C, 0xEA, 0x6C, 0xE8, 0x07, 0xEA, 0x2C, 0xE8, -0x50, 0x67, 0x09, 0x97, 0x08, 0x91, 0x07, 0x90, -0x05, 0x63, 0x00, 0xEF, 0xFA, 0x63, 0x0B, 0x62, -0x0A, 0xD1, 0x09, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, -0x2C, 0xED, 0xFF, 0x68, 0x0C, 0xEC, 0x2C, 0xEE, -0x2A, 0xED, 0x05, 0xD4, 0x04, 0xD5, 0x06, 0xD6, -0x1F, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, -0x74, 0x9A, 0x40, 0x6C, 0x8B, 0xEC, 0x40, 0xA3, -0x0C, 0xEA, 0x8C, 0xEA, 0x05, 0x94, 0x8D, 0xEA, -0x0C, 0xEA, 0x40, 0xC3, 0x30, 0xF0, 0x20, 0x6A, -0x64, 0xF0, 0x78, 0x9A, 0x30, 0xF0, 0x20, 0x6C, -0x63, 0xF5, 0x9C, 0x9C, 0x40, 0x9B, 0x8C, 0xEA, -0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF0, 0x8C, 0x9C, -0x8D, 0xEA, 0xCD, 0xEA, 0x40, 0xDB, 0x34, 0x10, -0x05, 0x94, 0xB1, 0x67, 0x80, 0x18, 0xE2, 0x59, -0x07, 0xD2, 0x30, 0xF0, 0x20, 0x6A, 0x04, 0x94, -0xA0, 0xF3, 0x44, 0x9A, 0x40, 0xEA, 0x30, 0xF0, -0x20, 0x6B, 0x64, 0xF0, 0x94, 0x9B, 0x40, 0x6D, -0xAB, 0xED, 0x60, 0xA4, 0x2C, 0xEA, 0x0C, 0xEB, -0xAC, 0xEB, 0x05, 0x95, 0xAD, 0xEB, 0x0C, 0xEB, -0x60, 0xC4, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, -0x98, 0x9B, 0x30, 0xF0, 0x20, 0x6D, 0x63, 0xF5, -0xBC, 0x9D, 0x60, 0x9C, 0x06, 0x96, 0xAC, 0xEB, -0x30, 0xF0, 0x20, 0x6D, 0x83, 0xF0, 0xAC, 0x9D, -0xC4, 0xEA, 0x46, 0x67, 0xAD, 0xEB, 0x04, 0x95, -0x07, 0x96, 0xAC, 0xEA, 0xAF, 0xED, 0xCC, 0xED, -0xAD, 0xEA, 0x2C, 0xEA, 0x4D, 0xEB, 0x60, 0xDC, +0x30, 0xF0, 0x20, 0x69, 0xC0, 0xF3, 0x48, 0x99, +0xE0, 0xF1, 0x19, 0x6C, 0x04, 0x05, 0x40, 0xEA, +0x7D, 0x67, 0x50, 0xA3, 0x30, 0xF0, 0x20, 0x68, +0xC6, 0xF5, 0x10, 0x48, 0x52, 0x32, 0x08, 0xF1, +0x48, 0xC0, 0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, +0x1B, 0x6C, 0x04, 0x05, 0x40, 0xEA, 0x9D, 0x67, +0x70, 0xA4, 0x07, 0x6A, 0x6C, 0xEA, 0x08, 0xF1, +0x44, 0xC0, 0x43, 0x67, 0x18, 0x6B, 0x4C, 0xEB, +0x6F, 0x33, 0x08, 0xF1, 0x6A, 0xC0, 0x4F, 0x72, +0x56, 0x33, 0x08, 0xF1, 0x65, 0xC0, 0x0E, 0x61, +0xC0, 0xF3, 0x48, 0x99, 0xE0, 0xF1, 0x1A, 0x6C, +0x00, 0xF0, 0x11, 0x05, 0x40, 0xEA, 0x7D, 0x67, +0x51, 0xA3, 0x57, 0x72, 0x03, 0x61, 0x02, 0x6A, +0x08, 0xF1, 0x4A, 0xC0, 0x30, 0xF0, 0x20, 0x6A, +0xC0, 0xF3, 0x48, 0x9A, 0xE0, 0xF1, 0x1D, 0x6C, +0x04, 0x05, 0x40, 0xEA, 0x7D, 0x67, 0x90, 0xA3, +0x0C, 0x6B, 0x30, 0xF0, 0x20, 0x6A, 0x8C, 0xEB, +0xC6, 0xF5, 0x10, 0x4A, 0x6B, 0x33, 0x9A, 0x34, +0x08, 0xF1, 0x66, 0xC2, 0x08, 0xF1, 0x87, 0xC2, +0x80, 0x18, 0x01, 0x57, 0x30, 0xF0, 0x20, 0x6A, +0x23, 0xF7, 0x54, 0x9A, 0x60, 0xA2, 0xFF, 0x6A, +0x6C, 0xEA, 0xFD, 0x72, 0x02, 0x61, 0x80, 0x18, +0xDC, 0x56, 0x80, 0x18, 0x60, 0x56, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x40, 0x9A, +0x01, 0x6B, 0x60, 0xC2, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x84, 0x9A, +0xFF, 0x6B, 0x20, 0x6D, 0x40, 0xA4, 0x6C, 0xEA, +0xAD, 0xEA, 0x6C, 0xEA, 0x40, 0xC4, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF0, 0x9C, 0x9A, 0x08, 0x6D, +0x40, 0xA4, 0x6C, 0xEA, 0xAD, 0xEA, 0x6C, 0xEA, +0x40, 0xC4, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF7, 0x68, 0x9A, 0xFD, 0x6A, 0xFF, 0x6C, +0xA0, 0xA3, 0xAC, 0xEA, 0x40, 0xC3, 0x40, 0xA3, +0x01, 0x6D, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x20, 0xE8, 0xFD, 0x63, 0x05, 0x62, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF2, 0x48, 0x9A, 0x23, 0xF1, 0x88, 0x9B, +0x00, 0x6D, 0x02, 0xF0, 0x00, 0x6E, 0x40, 0xEA, +0x00, 0x6A, 0x30, 0xF0, 0x20, 0x6B, 0x23, 0xF1, +0x68, 0x9B, 0x54, 0x34, 0x01, 0x4A, 0x6D, 0xE4, +0x80, 0x72, 0x04, 0x6C, 0x80, 0xC3, 0xF5, 0x61, +0x30, 0xF0, 0x20, 0x6B, 0x30, 0xF0, 0x20, 0x6A, +0x63, 0xF7, 0x8C, 0x9B, 0x80, 0xF2, 0x48, 0x9A, +0x00, 0x6D, 0x00, 0xF4, 0x00, 0x6E, 0x40, 0xEA, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, +0x52, 0x9B, 0x8D, 0xEA, 0x52, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x63, 0xF7, 0x70, 0x9B, 0x80, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x68, 0x9B, +0x40, 0xDB, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF5, 0x10, 0x4B, 0xB2, 0x9B, 0x8F, 0xEA, +0xAC, 0xEA, 0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF1, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x50, 0x9A, 0x80, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x05, 0x5C, 0x5E, 0x60, +0x30, 0xF0, 0x20, 0x6A, 0x88, 0x34, 0x02, 0xF7, +0x18, 0x4A, 0x89, 0xE2, 0x40, 0x9A, 0x00, 0xEA, +0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x50, 0x9B, +0xAD, 0xEA, 0xC6, 0xF5, 0x50, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0x03, 0xF7, 0x7C, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x68, 0x9B, +0x32, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, +0x10, 0x4B, 0x41, 0x9B, 0xAD, 0xEA, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xC3, 0xF2, 0x70, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x6C, 0x9B, 0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF5, 0x10, 0x4B, 0x42, 0x9B, 0xAD, 0xEA, +0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, +0x74, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x70, 0x9B, 0x10, 0x10, 0x30, 0xF0, +0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, 0x43, 0x9B, +0xAD, 0xEA, 0x43, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF7, 0x78, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, 0x40, 0xDB, +0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, +0x10, 0x4B, 0x44, 0x9B, 0xAD, 0xEA, 0x44, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x7C, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x7C, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x05, 0x5C, 0x63, 0x60, 0x30, 0xF0, 0x20, 0x6A, +0x88, 0x34, 0x22, 0xF7, 0x0C, 0x4A, 0x89, 0xE2, +0x40, 0x9A, 0x00, 0xEA, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF5, 0x90, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, +0xC6, 0xF5, 0x50, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x68, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x03, 0xF7, 0x5C, 0x9A, 0x35, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, +0x81, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x41, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x6C, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0xC3, 0xF2, +0x50, 0x9A, 0x23, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF5, 0x10, 0x4B, 0x82, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x42, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x63, 0xF7, 0x54, 0x9A, 0x11, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, +0x83, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x43, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x78, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, +0x58, 0x9A, 0xA0, 0xDA, 0x20, 0xE8, 0x30, 0xF0, +0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, 0x84, 0x9B, +0xAF, 0xEA, 0x8C, 0xEA, 0x44, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x7C, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF7, 0x5C, 0x9A, +0xA0, 0xDA, 0x20, 0xE8, 0x01, 0x74, 0x15, 0x60, +0x03, 0x24, 0x02, 0x74, 0x23, 0x60, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, +0x54, 0x9B, 0xAD, 0xEA, 0x54, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x78, 0x9B, 0xA0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x6C, 0x9B, +0x21, 0x10, 0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, +0x10, 0x4B, 0x55, 0x9B, 0xAD, 0xEA, 0x55, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, 0x60, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, +0x60, 0x9B, 0x10, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF5, 0x10, 0x4B, 0x56, 0x9B, 0xAD, 0xEA, +0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, +0x64, 0x9B, 0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF1, 0x64, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x01, 0x74, 0x16, 0x60, 0x03, 0x24, 0x02, 0x74, +0x25, 0x60, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF5, 0x10, 0x4B, 0x94, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x54, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF1, 0x6C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xC3, 0xF1, 0x58, 0x9A, 0x23, 0x10, +0x30, 0xF0, 0x20, 0x6B, 0xC6, 0xF5, 0x10, 0x4B, +0x95, 0x9B, 0xAF, 0xEA, 0x8C, 0xEA, 0x55, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, 0x60, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, +0x40, 0x9A, 0x11, 0x10, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF5, 0x10, 0x4B, 0x96, 0x9B, 0xAF, 0xEA, +0x8C, 0xEA, 0x56, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x03, 0xF1, 0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF7, 0x44, 0x9A, 0xA0, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6C, +0xE3, 0xF0, 0x88, 0x9C, 0x00, 0x6A, 0x30, 0xF0, +0x20, 0x6B, 0xC6, 0xF5, 0x50, 0xDB, 0xC6, 0xF5, +0x10, 0x4B, 0x41, 0xDB, 0x42, 0xDB, 0x43, 0xDB, +0x44, 0xDB, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0xE3, 0xF0, 0x8C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, +0x20, 0x6C, 0xE3, 0xF0, 0x90, 0x9C, 0x40, 0xDC, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, 0x98, 0x9C, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF0, +0x9C, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF1, 0x8C, 0x9C, 0x54, 0xDB, 0x55, 0xDB, +0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, 0x03, 0xF1, +0x80, 0x9C, 0x40, 0xDC, 0x30, 0xF0, 0x20, 0x6C, +0x03, 0xF1, 0x84, 0x9C, 0x56, 0xDB, 0x40, 0xDC, +0x52, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF1, +0x68, 0x9B, 0x40, 0xDB, 0x20, 0xE8, 0x00, 0x65, +0x30, 0xF0, 0x20, 0x6B, 0x03, 0xF7, 0x7C, 0x9B, +0x01, 0x6A, 0x4B, 0xEA, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF2, 0x70, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, 0x74, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x63, 0xF7, +0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF7, 0x7C, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xC3, 0xF1, 0x78, 0x9B, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, 0x60, 0x9B, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0x83, 0xF7, +0x64, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0x63, 0xF7, 0x70, 0x9B, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF7, 0xA8, 0x9A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF3, 0x10, 0x6E, +0xC6, 0xF5, 0xD0, 0xDB, 0x01, 0xF7, 0x01, 0x6A, +0xC6, 0xF5, 0x10, 0x4B, 0x00, 0x6C, 0x42, 0xDB, +0x43, 0xDB, 0xA1, 0xDB, 0x84, 0xDB, 0x30, 0xF0, +0x20, 0x6B, 0xE3, 0xF0, 0x68, 0x9B, 0xC0, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, 0x6C, 0x9B, +0xA0, 0xDB, 0x30, 0xF0, 0x20, 0x6B, 0xE3, 0xF0, +0x70, 0x9B, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6B, +0xE3, 0xF0, 0x78, 0x9B, 0x40, 0xDB, 0x30, 0xF0, +0x20, 0x6A, 0xE3, 0xF0, 0x5C, 0x9A, 0x80, 0xDA, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0xC6, 0xF5, 0x10, 0x4A, 0x00, 0x6B, 0x72, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x48, 0x9A, +0x60, 0xDA, 0x20, 0xE8, 0x30, 0xF0, 0x20, 0x6B, +0x83, 0xF7, 0x8C, 0x9B, 0x30, 0xF0, 0x20, 0x6A, +0xC6, 0xF5, 0x10, 0x4A, 0x80, 0xF1, 0x0E, 0x6D, +0xFF, 0x6B, 0xB4, 0xDA, 0x95, 0xDA, 0x76, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, 0x4C, 0x9A, +0xA0, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x03, 0xF1, +0x40, 0x9A, 0x80, 0xDA, 0x30, 0xF0, 0x20, 0x6A, +0x03, 0xF1, 0x44, 0x9A, 0x60, 0xDA, 0x20, 0xE8, +0xFD, 0x63, 0x05, 0x62, 0x80, 0x18, 0x55, 0x58, +0x80, 0x18, 0x74, 0x58, 0x80, 0x18, 0x8C, 0x58, +0x80, 0x18, 0xA9, 0x58, 0x80, 0x18, 0xA3, 0x58, +0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, +0x20, 0xE8, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x80, 0x18, 0xE6, 0x58, 0x30, 0xF0, 0x20, 0x6B, +0xC6, 0xF5, 0x10, 0x4B, 0x42, 0xF6, 0x50, 0xC3, +0x00, 0x6A, 0x42, 0xF6, 0x51, 0xC3, 0x80, 0x18, +0x85, 0x57, 0x80, 0x18, 0x73, 0x5A, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF7, 0x50, 0x9A, 0x3F, 0x6B, +0x60, 0xC2, 0x80, 0x18, 0x76, 0x57, 0x80, 0x18, +0x7A, 0x57, 0x80, 0x18, 0x28, 0x3D, 0x80, 0x18, +0x8D, 0x57, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0xFD, 0x63, 0x05, 0x62, 0x00, 0x18, 0xED, 0xD2, +0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x05, 0x97, 0x03, 0x63, 0x00, 0xEF, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x54, 0x9A, +0xE0, 0xF1, 0x1B, 0x6B, 0x6B, 0xEB, 0x60, 0xCA, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x78, 0x9A, +0xFB, 0x6A, 0x80, 0xA3, 0x8C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x04, 0xF0, 0x7C, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF3, 0x8C, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x40, 0xDB, 0x20, 0xE8, +0x30, 0xF0, 0x20, 0x6A, 0xE3, 0xF2, 0x44, 0x9A, +0xFF, 0xF7, 0x1F, 0x6B, 0x40, 0xAA, 0x4C, 0xEB, +0x62, 0x33, 0x03, 0x6A, 0x72, 0x33, 0x4C, 0xEB, +0x02, 0x6A, 0x04, 0x23, 0x01, 0x73, 0x01, 0x6A, +0x01, 0x60, 0x03, 0x6A, 0x20, 0xE8, 0x00, 0x65, +0x10, 0xF0, 0x23, 0x6A, 0xE9, 0xF4, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE9, 0xF4, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x4C, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x6C, 0xF3, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x50, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x2F, 0xF2, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xCC, 0xF6, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x50, 0xDB, +0x10, 0xF0, 0x24, 0x6A, 0x31, 0xF4, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x24, 0x6A, 0x11, 0xF2, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA8, 0xF5, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x58, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE8, 0xF6, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xE0, 0xF2, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x4C, 0xF1, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x8A, 0xF5, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xEA, 0xF5, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x0D, 0xF2, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x6A, 0xF4, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x58, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x2A, 0xF6, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x50, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x8A, 0xF6, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF4, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x69, 0xF7, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x8A, 0xF1, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x40, 0xDB, +0x10, 0xF0, 0x24, 0x6A, 0x10, 0xF2, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x24, 0x6A, 0x90, 0xF2, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xC2, 0xF2, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x48, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x42, 0xF2, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xCA, 0xF6, 0x1D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x44, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0xEA, 0xF6, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x54, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA8, 0xF0, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x58, 0xDB, +0x10, 0xF0, 0x24, 0x6A, 0xF0, 0xF6, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x5C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE8, 0xF0, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF4, 0x40, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xE8, 0xF1, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF4, 0x50, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x5F, 0xF0, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF5, 0x44, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0xFE, 0xF1, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x89, 0xF4, 0x09, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x44, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0xA9, 0xF4, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x4C, 0xDB, +0x10, 0xF0, 0x23, 0x6A, 0x89, 0xF4, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x48, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x49, 0xF5, 0x15, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x80, 0xF3, 0x50, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0xDF, 0xF1, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF3, 0x40, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x25, 0xF2, 0x11, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x50, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x8B, 0xF4, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x54, 0xDB, +0x10, 0xF0, 0x30, 0x6A, 0x0E, 0xF0, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x58, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0xBE, 0xF6, 0x01, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF3, 0x58, 0xDB, +0x10, 0xF0, 0x31, 0x6A, 0x3E, 0xF6, 0x0D, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF3, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x66, 0xF6, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x00, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x29, 0xF4, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x4A, 0xF0, 0x6C, 0x9A, +0x30, 0xF0, 0x20, 0x6A, 0x20, 0xF6, 0x64, 0xDA, +0x30, 0xF0, 0x20, 0x6A, 0x4A, 0xF0, 0x0C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x6A, 0xF1, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x8A, 0xF1, 0x0C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xF2, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF2, 0x04, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x20, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF5, 0x07, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF5, 0x0C, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x44, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x2E, 0xF5, 0x14, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x48, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xEC, 0xF1, 0x10, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x4C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xEC, 0xF1, 0x18, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x50, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xEC, 0xF1, 0x19, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x54, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xEC, 0xF1, 0x1A, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xF2, 0x00, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x40, 0xF6, 0x5C, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0x0C, 0xF2, 0x0A, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0x60, 0xF6, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF6, 0x05, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xA0, 0xF6, 0x58, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xEE, 0xF6, 0x08, 0x4A, +0x30, 0xF0, 0x20, 0x6B, 0xC0, 0xF6, 0x40, 0xDB, +0x20, 0xE8, 0x00, 0x65, 0x30, 0xF0, 0x20, 0x6A, +0x30, 0xF0, 0x20, 0x6B, 0x21, 0xF0, 0x00, 0x4B, +0x80, 0xF2, 0x08, 0x4A, 0x13, 0x10, 0x80, 0x9A, +0x10, 0x2C, 0x30, 0xF0, 0x20, 0x6C, 0x83, 0xF1, +0xBC, 0x9C, 0x30, 0xF0, 0x20, 0x6E, 0x23, 0xF1, +0xD4, 0x9E, 0x80, 0x9D, 0xCD, 0xEC, 0x80, 0xDD, +0x30, 0xF0, 0x20, 0x6C, 0xE3, 0xF2, 0x98, 0x9C, +0x40, 0xDC, 0x04, 0x4A, 0x43, 0xEB, 0xEB, 0x60, +0x20, 0xE8, 0x00, 0x65, 0xFB, 0x63, 0x09, 0x62, +0x08, 0xD1, 0x07, 0xD0, 0xFF, 0xF7, 0x1F, 0x69, +0x2C, 0xED, 0x30, 0xF0, 0x20, 0x6B, 0x04, 0xD5, +0x64, 0xF0, 0xB4, 0x9B, 0xFF, 0x6A, 0x40, 0x6E, +0x60, 0xA5, 0xCB, 0xEE, 0x4C, 0xEC, 0x4C, 0xEB, +0xCC, 0xEB, 0x6D, 0xEC, 0x4C, 0xEC, 0x80, 0xC5, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, -0x0A, 0x6C, 0x40, 0xEA, 0x0B, 0x97, 0x0A, 0x91, -0x09, 0x90, 0x06, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x00, 0x6C, 0x10, 0xF0, -0x00, 0x6D, 0x80, 0x18, 0xE2, 0x59, 0x05, 0x97, -0x01, 0x5A, 0x58, 0x67, 0x03, 0x63, 0x00, 0xEF, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6B, 0x43, 0xF0, 0x78, 0x9B, 0x10, 0xF0, -0x31, 0x6A, 0xED, 0xF0, 0x09, 0x4A, 0x40, 0xDB, -0x00, 0x68, 0x31, 0x10, 0x82, 0xF3, 0x08, 0x70, -0x1A, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x83, 0xF1, -0x7C, 0x9A, 0x02, 0xF0, 0x00, 0x6C, 0x40, 0x9B, -0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, -0xC6, 0xF5, 0x10, 0x4A, 0xA3, 0xF3, 0x7C, 0x9A, -0x8D, 0xEB, 0xA3, 0xF3, 0x7C, 0xDA, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x54, 0x9A, 0x03, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x18, 0x10, 0xFF, 0xF7, -0x1F, 0x6A, 0x01, 0x48, 0x4C, 0xE8, 0x30, 0xF0, -0x20, 0x6A, 0x80, 0xF3, 0x4C, 0x9A, 0x14, 0x6C, -0x40, 0xEA, 0x33, 0x58, 0x08, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF7, 0x54, 0x9A, 0x60, 0xA2, -0x08, 0x6A, 0x6C, 0xEA, 0x04, 0x2A, 0x80, 0x18, -0x34, 0x5A, 0x01, 0x72, 0xCB, 0x61, 0x30, 0xF0, -0x20, 0x6A, 0x63, 0xF1, 0x54, 0x9A, 0x02, 0x6B, -0x6B, 0xEB, 0x60, 0xC2, 0x30, 0xF0, 0x20, 0x6B, -0x43, 0xF0, 0x78, 0x9B, 0x10, 0xF0, 0x31, 0x6A, -0xED, 0xF0, 0x0A, 0x4A, 0x40, 0xDB, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0xFD, 0x63, 0x05, 0x62, 0x04, 0xD0, 0x30, 0xF0, -0x20, 0x6A, 0xA3, 0xF7, 0x78, 0x9A, 0x02, 0x6C, -0xFF, 0xF7, 0x1F, 0x6D, 0x40, 0x9B, 0xFF, 0x6E, -0x41, 0x4E, 0x8D, 0xEA, 0x40, 0xDB, 0x30, 0xF0, -0x20, 0x6A, 0x43, 0xF1, 0x74, 0x9A, 0xE0, 0xF3, -0x1E, 0x4C, 0x30, 0xF0, 0x20, 0x68, 0x40, 0xAB, -0xAC, 0xEA, 0x8D, 0xEA, 0xAC, 0xEA, 0x40, 0xCB, -0x02, 0x6C, 0x80, 0x18, 0xFD, 0x59, 0x80, 0xF3, -0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, 0x00, 0x6C, -0xC0, 0x6D, 0x02, 0x6E, 0x80, 0x18, 0xFD, 0x59, -0x00, 0x6C, 0xC4, 0x67, 0x02, 0xF0, 0x00, 0x6D, -0x80, 0x18, 0xFD, 0x59, 0x00, 0x6C, 0xC4, 0x67, -0x0C, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0xFD, 0x59, -0x00, 0x6C, 0x01, 0xF0, 0x00, 0x6D, 0x01, 0x6E, -0x80, 0x18, 0xFD, 0x59, 0x10, 0xF0, 0x00, 0x6D, -0x01, 0x6E, 0x00, 0x6C, 0x80, 0x18, 0xFD, 0x59, -0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, 0x40, 0xEA, -0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x7C, 0x9A, -0xFF, 0x6C, 0x04, 0x6D, 0x40, 0xA3, 0x8C, 0xEA, -0xAD, 0xEA, 0x8C, 0xEA, 0x40, 0xC3, 0x05, 0x97, -0x04, 0x90, 0x03, 0x63, 0x00, 0xEF, 0x00, 0x65, -0x39, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF0, 0x58, 0x9A, 0x00, 0xAA, 0x04, 0x92, +0x2C, 0xE8, 0x2A, 0xEA, 0x0B, 0x60, 0x30, 0xF0, +0x20, 0x6A, 0xA0, 0xF3, 0x44, 0x9A, 0x04, 0x94, +0x40, 0xEA, 0x04, 0x93, 0x2C, 0xEA, 0x6C, 0xE8, +0x07, 0xEA, 0x2C, 0xE8, 0x50, 0x67, 0x09, 0x97, +0x08, 0x91, 0x07, 0x90, 0x05, 0x63, 0x00, 0xEF, +0xFA, 0x63, 0x0B, 0x62, 0x0A, 0xD1, 0x09, 0xD0, +0xFF, 0xF7, 0x1F, 0x69, 0x2C, 0xED, 0xFF, 0x68, +0x0C, 0xEC, 0x2C, 0xEE, 0x2A, 0xED, 0x05, 0xD4, +0x04, 0xD5, 0x06, 0xD6, 0x1F, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x64, 0xF0, 0x74, 0x9A, 0x40, 0x6C, +0x8B, 0xEC, 0x40, 0xA3, 0x0C, 0xEA, 0x8C, 0xEA, +0x05, 0x94, 0x8D, 0xEA, 0x0C, 0xEA, 0x40, 0xC3, +0x30, 0xF0, 0x20, 0x6A, 0x64, 0xF0, 0x78, 0x9A, +0x30, 0xF0, 0x20, 0x6C, 0x63, 0xF5, 0x9C, 0x9C, +0x40, 0x9B, 0x8C, 0xEA, 0x30, 0xF0, 0x20, 0x6C, +0x83, 0xF0, 0x8C, 0x9C, 0x8D, 0xEA, 0xCD, 0xEA, +0x40, 0xDB, 0x34, 0x10, 0x05, 0x94, 0xB1, 0x67, +0x80, 0x18, 0xEF, 0x59, 0x07, 0xD2, 0x30, 0xF0, +0x20, 0x6A, 0x04, 0x94, 0xA0, 0xF3, 0x44, 0x9A, +0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6B, 0x64, 0xF0, +0x94, 0x9B, 0x40, 0x6D, 0xAB, 0xED, 0x60, 0xA4, +0x2C, 0xEA, 0x0C, 0xEB, 0xAC, 0xEB, 0x05, 0x95, +0xAD, 0xEB, 0x0C, 0xEB, 0x60, 0xC4, 0x30, 0xF0, +0x20, 0x6B, 0x64, 0xF0, 0x98, 0x9B, 0x30, 0xF0, +0x20, 0x6D, 0x63, 0xF5, 0xBC, 0x9D, 0x60, 0x9C, +0x06, 0x96, 0xAC, 0xEB, 0x30, 0xF0, 0x20, 0x6D, +0x83, 0xF0, 0xAC, 0x9D, 0xC4, 0xEA, 0x46, 0x67, +0xAD, 0xEB, 0x04, 0x95, 0x07, 0x96, 0xAC, 0xEA, +0xAF, 0xED, 0xCC, 0xED, 0xAD, 0xEA, 0x2C, 0xEA, +0x4D, 0xEB, 0x60, 0xDC, 0x30, 0xF0, 0x20, 0x6A, +0x80, 0xF3, 0x4C, 0x9A, 0x0A, 0x6C, 0x40, 0xEA, +0x0B, 0x97, 0x0A, 0x91, 0x09, 0x90, 0x06, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x00, 0x6C, 0x10, 0xF0, 0x00, 0x6D, 0x80, 0x18, +0xEF, 0x59, 0x05, 0x97, 0x01, 0x5A, 0x58, 0x67, +0x03, 0x63, 0x00, 0xEF, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, +0x78, 0x9B, 0x10, 0xF0, 0x31, 0x6A, 0x0D, 0xF1, +0x1D, 0x4A, 0x40, 0xDB, 0x00, 0x68, 0x31, 0x10, +0x82, 0xF3, 0x08, 0x70, 0x1A, 0x61, 0x30, 0xF0, +0x20, 0x6A, 0x83, 0xF1, 0x7C, 0x9A, 0x02, 0xF0, +0x00, 0x6C, 0x40, 0x9B, 0x8D, 0xEA, 0x40, 0xDB, +0x30, 0xF0, 0x20, 0x6A, 0xC6, 0xF5, 0x10, 0x4A, +0xA3, 0xF3, 0x7C, 0x9A, 0x8D, 0xEB, 0xA3, 0xF3, +0x7C, 0xDA, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x54, 0x9A, 0x03, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x18, 0x10, 0xFF, 0xF7, 0x1F, 0x6A, 0x01, 0x48, +0x4C, 0xE8, 0x30, 0xF0, 0x20, 0x6A, 0x80, 0xF3, +0x4C, 0x9A, 0x14, 0x6C, 0x40, 0xEA, 0x33, 0x58, +0x08, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF7, +0x54, 0x9A, 0x60, 0xA2, 0x08, 0x6A, 0x6C, 0xEA, +0x04, 0x2A, 0x80, 0x18, 0x41, 0x5A, 0x01, 0x72, +0xCB, 0x61, 0x30, 0xF0, 0x20, 0x6A, 0x63, 0xF1, +0x54, 0x9A, 0x02, 0x6B, 0x6B, 0xEB, 0x60, 0xC2, +0x30, 0xF0, 0x20, 0x6B, 0x43, 0xF0, 0x78, 0x9B, +0x10, 0xF0, 0x31, 0x6A, 0x0D, 0xF1, 0x1E, 0x4A, +0x40, 0xDB, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0xFD, 0x63, 0x05, 0x62, +0x04, 0xD0, 0x30, 0xF0, 0x20, 0x6A, 0xA3, 0xF7, +0x78, 0x9A, 0x02, 0x6C, 0xFF, 0xF7, 0x1F, 0x6D, +0x40, 0x9B, 0xFF, 0x6E, 0x41, 0x4E, 0x8D, 0xEA, +0x40, 0xDB, 0x30, 0xF0, 0x20, 0x6A, 0x43, 0xF1, +0x74, 0x9A, 0xE0, 0xF3, 0x1E, 0x4C, 0x30, 0xF0, +0x20, 0x68, 0x40, 0xAB, 0xAC, 0xEA, 0x8D, 0xEA, +0xAC, 0xEA, 0x40, 0xCB, 0x02, 0x6C, 0x80, 0x18, +0x0A, 0x5A, 0x80, 0xF3, 0x4C, 0x98, 0x0A, 0x6C, +0x40, 0xEA, 0x00, 0x6C, 0xC0, 0x6D, 0x02, 0x6E, +0x80, 0x18, 0x0A, 0x5A, 0x00, 0x6C, 0xC4, 0x67, +0x02, 0xF0, 0x00, 0x6D, 0x80, 0x18, 0x0A, 0x5A, +0x00, 0x6C, 0xC4, 0x67, 0x0C, 0xF0, 0x00, 0x6D, +0x80, 0x18, 0x0A, 0x5A, 0x00, 0x6C, 0x01, 0xF0, +0x00, 0x6D, 0x01, 0x6E, 0x80, 0x18, 0x0A, 0x5A, +0x10, 0xF0, 0x00, 0x6D, 0x01, 0x6E, 0x00, 0x6C, +0x80, 0x18, 0x0A, 0x5A, 0x80, 0xF3, 0x4C, 0x98, +0x0A, 0x6C, 0x40, 0xEA, 0x30, 0xF0, 0x20, 0x6A, +0x64, 0xF0, 0x7C, 0x9A, 0xFF, 0x6C, 0x04, 0x6D, +0x40, 0xA3, 0x8C, 0xEA, 0xAD, 0xEA, 0x8C, 0xEA, +0x40, 0xC3, 0x05, 0x97, 0x04, 0x90, 0x03, 0x63, +0x00, 0xEF, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, +0x4F, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u32 array_length_mp_8822c_fw_wowlan = 143304; +u32 array_length_mp_8822c_fw_wowlan = 143368; #endif /*CONFIG_WOWLAN*/ diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.h b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.h index fb806ec80..d7dd58b19 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.h +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/hal8822c_fw_10M.h @@ -20,21 +20,21 @@ #ifdef LOAD_FW_HEADER_FROM_DRIVER #if (defined(CONFIG_AP_WOWLAN) || (DM_ODM_SUPPORT_TYPE & (ODM_AP))) -extern u8 array_mp_8822c_fw_ap[128912]; +extern u8 array_mp_8822c_fw_ap[128976]; extern u32 array_length_mp_8822c_fw_ap; #endif #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) || (DM_ODM_SUPPORT_TYPE & (ODM_CE)) -extern u8 array_mp_8822c_fw_nic[195672]; +extern u8 array_mp_8822c_fw_nic[195736]; extern u32 array_length_mp_8822c_fw_nic; #if !(DM_ODM_SUPPORT_TYPE & (ODM_CE)) -extern u8 array_mp_8822c_fw_spic[114072]; +extern u8 array_mp_8822c_fw_spic[114136]; extern u32 array_length_mp_8822c_fw_spic; #endif /*!(DM_ODM_SUPPORT_TYPE & (ODM_CE))*/ #ifdef CONFIG_WOWLAN -extern u8 array_mp_8822c_fw_wowlan[143304]; +extern u8 array_mp_8822c_fw_wowlan[143368]; extern u32 array_length_mp_8822c_fw_wowlan; #endif /*CONFIG_WOWLAN*/ #endif diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_cmd.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_cmd.c index ae7dccdd0..df87eda2a 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_cmd.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_cmd.c @@ -15,7 +15,7 @@ #define _RTL8822C_CMD_C_ #include /* HAL_DATA_TYPE */ -#include "hal/hal_halmac.h" /* HRTW_HALMAC_H2C_MAX_SIZE, CMD_ID_RSVD_PAGE and etc. */ +#include "../hal_halmac.h" /* HRTW_HALMAC_H2C_MAX_SIZE, CMD_ID_RSVD_PAGE and etc. */ #include "rtl8822c.h" /* @@ -114,7 +114,7 @@ void _rtl8822c_set_FwPwrMode_cmd(PADAPTER adapter, u8 psmode, u8 rfon_ctrl) u8 h2c[RTW_HALMAC_H2C_MAX_SIZE] = {0}; u8 PowerState = 0, awake_intvl = 1, rlbm = 0; u8 allQueueUAPSD = 0; - char *fw_psmode_str = ""; + char *fw_psmode_str = "UNSPECIFIED"; #ifdef CONFIG_P2P struct wifidirect_info *wdinfo = &adapter->wdinfo; #endif /* CONFIG_P2P */ @@ -212,8 +212,6 @@ void _rtl8822c_set_FwPwrMode_cmd(PADAPTER adapter, u8 psmode, u8 rfon_ctrl) fw_psmode_str = "LPS"; else if (mode == 2) fw_psmode_str = "WMMPS"; - else - fw_psmode_str = "UNSPECIFIED"; RTW_INFO(FUNC_ADPT_FMT": fw ps mode = %s, drv ps mode = %d, rlbm = %d ," "smart_ps = %d, allQueueUAPSD = %d, PowerState = %d\n", @@ -390,7 +388,8 @@ C2HTxRPTHandler_8822c( ) { _irqL irqL; - u8 macid = 0, IniRate = 0; + /* u8 macid = 0; */ + /* u8 IniRate = 0; */ u16 TxOK = 0, TxFail = 0; struct sta_priv *pstapriv = &(GET_PRIMARY_ADAPTER(Adapter))->stapriv, *pstapriv_original = NULL; u8 TxOK0 = 0, TxOK1 = 0; @@ -415,14 +414,14 @@ C2HTxRPTHandler_8822c( return; } - macid = C2H_AP_REQ_TXRPT_GET_STA1_MACID(CmdBuf); + /* macid = C2H_AP_REQ_TXRPT_GET_STA1_MACID(CmdBuf); */ TxOK0 = C2H_AP_REQ_TXRPT_GET_TX_OK1_0(CmdBuf); TxOK1 = C2H_AP_REQ_TXRPT_GET_TX_OK1_1(CmdBuf); TxOK = (TxOK1 << 8) | TxOK0; TxFail0 = C2H_AP_REQ_TXRPT_GET_TX_FAIL1_0(CmdBuf); TxFail1 = C2H_AP_REQ_TXRPT_GET_TX_FAIL1_1(CmdBuf); TxFail = (TxFail1 << 8) | TxFail0; - IniRate = C2H_AP_REQ_TXRPT_GET_INITIAL_RATE1(CmdBuf); + /* IniRate = C2H_AP_REQ_TXRPT_GET_INITIAL_RATE1(CmdBuf); */ psta->sta_stats.tx_ok_cnt = TxOK; psta->sta_stats.tx_fail_cnt = TxFail; @@ -505,8 +504,6 @@ static void c2h_tbtt_rpt(PADAPTER adapter, u8 *pdata) */ static void process_c2h_event(PADAPTER adapter, u8 *c2h, u32 size) { - struct mlme_ext_priv *pmlmeext; - struct mlme_ext_info *pmlmeinfo; u32 desc_size; u8 id, seq; u8 c2h_len, c2h_payload_len; @@ -526,9 +523,6 @@ static void process_c2h_event(PADAPTER adapter, u8 *c2h, u32 size) return; } - pmlmeext = &adapter->mlmeextpriv; - pmlmeinfo = &pmlmeext->mlmext_info; - /* shift rx desc len */ pc2h_data = c2h + desc_size; c2h_len = size - desc_size; @@ -650,6 +644,7 @@ void rtl8822c_c2h_handler_no_io(PADAPTER adapter, u8 *pbuf, u16 length) case C2H_IQK_FINISH: case C2H_MCC: case C2H_BCN_EARLY_RPT: + case C2H_TX_PAUSE_RPT: case C2H_LPS_STATUS_RPT: case C2H_EXTEND: /* no I/O, process directly */ diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_halinit.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_halinit.c index 706be0188..766afb053 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_halinit.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_halinit.c @@ -32,8 +32,13 @@ void rtl8822c_init_hal_spec(PADAPTER adapter) hal_spec->macid_num = 128; /* hal_spec->sec_cam_ent_num follow halmac setting */ hal_spec->sec_cap = SEC_CAP_CHK_BMC | SEC_CAP_CHK_EXTRA_SEC; - hal_spec->wow_cap = WOW_CAP_TKIP_OL; +#ifdef CONFIG_USB_HCI + hal_spec->wow_cap = WOW_CAP_TKIP_OL/* | WOW_CAP_CSA | WOW_CAP_MDNS */| WOW_CAP_DIS_INBAND_SIGNAL; +#else + hal_spec->wow_cap = WOW_CAP_TKIP_OL/* | WOW_CAP_CSA | WOW_CAP_MDNS */; +#endif hal_spec->macid_cap = MACID_DROP; + hal_spec->txpause_cap = TXPAUSE_CAP_FW_CTRL; hal_spec->rfpath_num_2g = 2; hal_spec->rfpath_num_5g = 2; @@ -218,14 +223,9 @@ u8 rtl8822c_mac_verify(PADAPTER adapter) void rtl8822c_init_misc(PADAPTER adapter) { - PHAL_DATA_TYPE hal; u8 v8 = 0; u32 v32 = 0; - - hal = GET_HAL_DATA(adapter); - - /* initial security setting */ invalidate_cam_all(adapter); diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_ops.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_ops.c index 841cef3ef..6d584b09f 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_ops.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_ops.c @@ -351,7 +351,7 @@ static void Hal_EfuseParseBTCoexistInfo(PADAPTER adapter, u8 *map, u8 mapvalid) static void Hal_EfuseParseChnlPlan(PADAPTER adapter, u8 *map, u8 autoloadfail) { - hal_com_config_channel_plan( + hal_com_parse_channel_plan( adapter, map ? &map[EEPROM_COUNTRY_CODE_8822C] : NULL, map ? map[EEPROM_ChannelPlan_8822C] : 0xFF, @@ -970,7 +970,7 @@ static void set_beacon_related_registers(PADAPTER adapter) PHAL_DATA_TYPE hal = GET_HAL_DATA(adapter); struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; - u32 bcn_ctrl_reg, bcn_interval_reg; + /* u32 bcn_ctrl_reg, bcn_interval_reg; */ /* reset TSF, enable update TSF, correcting TSF On Beacon */ @@ -986,10 +986,12 @@ static void set_beacon_related_registers(PADAPTER adapter) * REG_BCN_CTRL (0x550) */ +#if 0 bcn_ctrl_reg = REG_BCN_CTRL_8822C; #ifdef CONFIG_CONCURRENT_MODE if (adapter->hw_port == HW_PORT1) bcn_ctrl_reg = REG_BCN_CTRL_CLINT0_8822C; +#endif #endif /* @@ -1652,19 +1654,11 @@ static void hw_var_set_mlme_disconnect(PADAPTER adapter) static void hw_var_set_mlme_sitesurvey(PADAPTER adapter, u8 enable) { - struct dvobj_priv *dvobj; - PHAL_DATA_TYPE hal; - struct mlme_priv *pmlmepriv; PADAPTER iface; u32 reg_bcn_ctl; u16 value_rxfltmap2; u8 val8, i; - - dvobj = adapter_to_dvobj(adapter); - hal = GET_HAL_DATA(adapter); - pmlmepriv = &adapter->mlmepriv; - #ifdef CONFIG_FIND_BEST_CHANNEL /* Receive all data frames */ value_rxfltmap2 = 0xFFFF; @@ -1684,7 +1678,7 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER adapter, u8 enable) rtw_hal_rcr_set_chk_bssid(adapter, MLME_SCAN_ENTER); if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) - StopTxBeacon(adapter); + StopTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_SCAN); } else { /* sitesurvey done * 1. enable rx data frame @@ -1699,7 +1693,7 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER adapter, u8 enable) #ifdef CONFIG_AP_MODE if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) { - ResumeTxBeacon(adapter); + ResumeTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_SCAN); rtw_mi_tx_beacon_hdl(adapter); } #endif @@ -1724,7 +1718,7 @@ static void hw_var_set_mlme_join(PADAPTER adapter, u8 type) if (type == 0) { /* prepare to join */ if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) - StopTxBeacon(adapter); + StopTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_JOIN); /* enable to rx data frame.Accept all data frame */ rtw_write16(adapter, REG_RXFLTMAP2_8822C, 0xFFFF); @@ -1755,7 +1749,7 @@ static void hw_var_set_mlme_join(PADAPTER adapter, u8 type) rtw_iface_disable_tsf_update(adapter); if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) { - ResumeTxBeacon(adapter); + ResumeTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_JOIN); /* reset TSF 1/2 after resume_tx_beacon */ val8 = BIT_TSFTR_RST_8822C | BIT_TSFTR_CLI0_RST_8822C; @@ -1774,7 +1768,7 @@ static void hw_var_set_mlme_join(PADAPTER adapter, u8 type) } if (rtw_mi_get_ap_num(adapter) || rtw_mi_get_mesh_num(adapter)) { - ResumeTxBeacon(adapter); + ResumeTxBeacon_with_reason(adapter, CTRL_TX_BCN_BY_JOIN); /* reset TSF 1/2 after resume_tx_beacon */ rtw_write8(adapter, REG_DUAL_TSF_RST_8822C, BIT_TSFTR_RST_8822C | BIT_TSFTR_CLI0_RST_8822C); @@ -2150,14 +2144,13 @@ static void hw_port_reconfig(_adapter * if_ap, _adapter *if_port0) rtw_hal_set_hwreg(if_port0, HW_VAR_BSSID, bssid); #ifdef CONFIG_FW_MULTI_PORT_SUPPORT rtw_set_default_port_id(if_port0); + #ifdef CONFIG_BT_COEXIST + if (GET_HAL_DATA(if_port0)->EEPROMBluetoothCoexist == _TRUE) + rtw_hal_set_wifi_btc_port_id_cmd(if_port0); + #endif #endif } -#if defined(CONFIG_BT_COEXIST) && defined(CONFIG_FW_MULTI_PORT_SUPPORT) - if (GET_HAL_DATA(if_port0)->EEPROMBluetoothCoexist == _TRUE) - rtw_hal_set_wifi_btc_port_id_cmd(if_port0); -#endif - if_ap->hw_port =HW_PORT0; /* port mac addr switch to adapter mac addr */ rtw_hal_set_hwreg(if_ap, HW_VAR_MAC_ADDR, adapter_mac_addr(if_ap)); @@ -2851,15 +2844,11 @@ void rtl8822c_read_wmmedca_reg(PADAPTER adapter, u16 *vo_params, u16 *vi_params, void rtl8822c_gethwreg(PADAPTER adapter, u8 variable, u8 *val) { - PHAL_DATA_TYPE hal; u8 val8; u16 val16; u32 val32; u64 val64; - - hal = GET_HAL_DATA(adapter); - switch (variable) { /* case HW_VAR_INIT_RTS_RATE: @@ -3080,11 +3069,8 @@ void rtl8822c_gethwreg(PADAPTER adapter, u8 variable, u8 *val) */ u8 rtl8822c_sethaldefvar(PADAPTER adapter, HAL_DEF_VARIABLE variable, void *pval) { - PHAL_DATA_TYPE hal; u8 bResult; - - hal = GET_HAL_DATA(adapter); bResult = _SUCCESS; switch (variable) { @@ -3159,15 +3145,10 @@ void rtl8822c_ra_info_dump(_adapter *padapter, void *sel) */ u8 rtl8822c_gethaldefvar(PADAPTER adapter, HAL_DEF_VARIABLE variable, void *pval) { - PHAL_DATA_TYPE hal; - struct dvobj_priv *d; u8 bResult; u8 val8 = 0; u32 val32 = 0; - - d = adapter_to_dvobj(adapter); - hal = GET_HAL_DATA(adapter); bResult = _SUCCESS; switch (variable) { diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_phy.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_phy.c index 02970a2b0..397382938 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_phy.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/rtl8822c_phy.c @@ -385,14 +385,14 @@ void dm_InterruptMigration(PADAPTER adapter) { PHAL_DATA_TYPE hal = GET_HAL_DATA(adapter); struct mlme_priv *pmlmepriv = &adapter->mlmepriv; - BOOLEAN bCurrentIntMt, bCurrentACIntDisable; + BOOLEAN bCurrentIntMt; + /* BOOLEAN bCurrentIntMt, bCurrentACIntDisable;*/ BOOLEAN IntMtToSet = _FALSE; - BOOLEAN ACIntToSet = _FALSE; - + /* BOOLEAN ACIntToSet = _FALSE; */ /* Retrieve current interrupt migration and Tx four ACs IMR settings first. */ bCurrentIntMt = hal->bInterruptMigration; - bCurrentACIntDisable = hal->bDisableTxInt; + /* bCurrentACIntDisable = hal->bDisableTxInt; */ /* * Currently we use busy traffic for reference instead of RxIntOK counts to prevent non-linear Rx statistics @@ -404,8 +404,10 @@ void dm_InterruptMigration(PADAPTER adapter) IntMtToSet = _TRUE; /* To check whether we should disable Tx interrupt or not. */ + #if 0 if (pmlmepriv->LinkDetectInfo.bHigherBusyRxTraffic) ACIntToSet = _TRUE; + #endif } /* Update current settings. */ @@ -1382,13 +1384,13 @@ static void _sounding_config_su(PADAPTER adapter, struct beamformee_entry *bfee, new_ctrl |= BIT_R_TXBF0_80M_8822C; else if (1 == bfee->su_reg_index) new_ctrl |= BIT_R_TXBF1_80M_8822C; - /* fall through */ + fallthrough; case CHANNEL_WIDTH_40: if (0 == bfee->su_reg_index) new_ctrl |= BIT_R_TXBF0_40M_8822C; else if (1 == bfee->su_reg_index) new_ctrl |= BIT_R_TXBF1_40M_8822C; - /* fall through */ + fallthrough; case CHANNEL_WIDTH_20: if (0 == bfee->su_reg_index) new_ctrl |= BIT_R_TXBF0_20M_8822C; @@ -1623,8 +1625,6 @@ static void _config_beamformer_su(PADAPTER adapter, struct beamformer_entry *bfe static void _config_beamformer_mu(PADAPTER adapter, struct beamformer_entry *bfer) { - /* General */ - PHAL_DATA_TYPE hal; /* Beamforming */ struct beamforming_info *bf_info; u8 nc_index = 0, nr_index = 0; @@ -1636,7 +1636,6 @@ static void _config_beamformer_mu(PADAPTER adapter, struct beamformer_entry *bfe RTW_INFO("%s: Config MU BFer entry HW setting\n", __FUNCTION__); - hal = GET_HAL_DATA(adapter); bf_info = GET_BEAMFORM_INFO(adapter); /* Reset GID table */ @@ -1741,8 +1740,6 @@ static void _config_beamformee_su(PADAPTER adapter, struct beamformee_entry *bfe static void _config_beamformee_mu(PADAPTER adapter, struct beamformee_entry *bfee) { - /* General */ - PHAL_DATA_TYPE hal; /* Beamforming */ struct beamforming_info *info; u8 idx; @@ -1761,7 +1758,6 @@ static void _config_beamformee_mu(PADAPTER adapter, struct beamformee_entry *bfe RTW_INFO("%s: Config MU BFee entry HW setting\n", __FUNCTION__); - hal = GET_HAL_DATA(adapter); info = GET_BEAMFORM_INFO(adapter); idx = bfee->mu_reg_index; diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_halinit.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_halinit.c index 725c494ff..4888ab54e 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_halinit.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_halinit.c @@ -37,6 +37,9 @@ static u8 fw_ips_leave(struct _ADAPTER *a) return _FAIL; RTW_INFO("%s: Leaving FW_IPS\n", __func__); +#ifdef CONFIG_LPS_LCLK + if (rtw_is_fw_ips_lclk_mode(a) == _FALSE) + goto send_fwips_h2c; /* for polling cpwm */ cpwm_orig = 0; @@ -79,16 +82,22 @@ static u8 fw_ips_leave(struct _ADAPTER *a) } } while (1); +send_fwips_h2c: +#endif /* CONFIG_LPS_LCLK */ rtl8822c_set_FwPwrModeInIPS_cmd(a, 0); rtw_hal_set_hwreg(a, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn); +#ifdef CONFIG_LPS_LCLK #ifdef DBG_CHECK_FW_PS_STATE - if (rtw_fw_ps_state(a) == _FAIL) { - RTW_INFO("after hal init, fw ps state in 32k\n"); - pdbgpriv->dbg_ips_drvopen_fail_cnt++; + if (rtw_is_fw_ips_lclk_mode(a) == _TRUE) { + if (rtw_fw_ps_state(a) == _FAIL) { + RTW_INFO("after hal init, fw ps state in 32k\n"); + pdbgpriv->dbg_ips_drvopen_fail_cnt++; + } } #endif /* DBG_CHECK_FW_PS_STATE */ +#endif /* CONFIG_LPS_LCLK */ return _SUCCESS; } @@ -116,6 +125,10 @@ static u8 fw_ips_enter(struct _ADAPTER *a) RTW_INFO("%s: issue H2C to FW when entering IPS\n", __FUNCTION__); rtl8822c_set_FwPwrModeInIPS_cmd(a, 0x1); +#ifdef CONFIG_LPS_LCLK + if (rtw_is_fw_ips_lclk_mode(a) == _FALSE) + return _SUCCESS; + /* * poll 0x1cc to make sure H2C command already finished by FW; * MAC_0x1cc=0 means H2C done by FW. @@ -158,7 +171,7 @@ static u8 fw_ips_enter(struct _ADAPTER *a) do { val8 = rtw_read8(a, REG_CR_8822C); cnt++; - RTW_INFO("%s: polling 0x100=0x%x, cnt=%d\n", + RTW_DBG("%s: polling 0x100=0x%x, cnt=%d\n", __FUNCTION__, val8, cnt); if (val8 == 0xEA) { RTW_INFO("%s: polling 0x100=0xEA, cnt=%d, cost %d ms\n", @@ -186,6 +199,7 @@ exit: rtw_read8(a, REG_CR_8822C), cnt, rtw_read8(a, REG_HMETFR_8822C)); pwrctl->pre_ips_type = 0; +#endif /* CONFIG_LPS_LCLK */ return _SUCCESS; } @@ -201,8 +215,10 @@ u32 rtl8822cs_init(PADAPTER adapter) hal = GET_HAL_DATA(adapter); #ifdef CONFIG_FWLPS_IN_IPS - if (fw_ips_leave(adapter) == _SUCCESS) - return _SUCCESS; + if (rtw_is_fw_ips_mode(adapter) == _TRUE) { + if (fw_ips_leave(adapter) == _SUCCESS) + return _SUCCESS; + } #endif ok = rtl8822c_hal_init(adapter); if (_FALSE == ok) @@ -241,8 +257,10 @@ u32 rtl8822cs_init(PADAPTER adapter) u32 rtl8822cs_deinit(PADAPTER adapter) { #ifdef CONFIG_FWLPS_IN_IPS - if (fw_ips_enter(adapter) == _SUCCESS) - return _SUCCESS; + if (rtw_is_fw_ips_mode(adapter) == _TRUE) { + if (fw_ips_enter(adapter) == _SUCCESS) + return _SUCCESS; + } #endif return rtl8822c_deinit(adapter); diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_halmac.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_halmac.c index c46e72594..b3e6596f6 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_halmac.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_halmac.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2015 - 2018 Realtek Corporation. + * Copyright(c) 2015 - 2023 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -26,7 +26,7 @@ static u8 sdio_write_data_rsvd_page(void *d, u8 *pBuf, u32 size) struct dvobj_priv *drv; struct halmac_adapter *halmac; struct halmac_api *api; - u32 desclen, len; + u32 desclen, len, alloc_sz; u8 *buf; u8 ret; @@ -36,7 +36,8 @@ static u8 sdio_write_data_rsvd_page(void *d, u8 *pBuf, u32 size) api = HALMAC_GET_API(halmac); desclen = rtl8822c_get_tx_desc_size(dvobj_get_primary_adapter(drv)); len = desclen + size; - buf = rtw_zmalloc(len); + alloc_sz = rtw_sdio_cmd53_align_size(drv, len); + buf = rtw_zmalloc(alloc_sz); if (!buf) return 0; _rtw_memcpy(buf + desclen, pBuf, size); @@ -52,7 +53,7 @@ static u8 sdio_write_data_rsvd_page(void *d, u8 *pBuf, u32 size) else ret = 0; - rtw_mfree(buf, len); + rtw_mfree(buf, alloc_sz); return ret; } diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_io.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_io.c index 9f33c452f..0a40227e8 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_io.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_io.c @@ -177,14 +177,12 @@ exit: static u32 sdio_write_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *mem) { struct dvobj_priv *d; - PADAPTER adapter; struct xmit_buf *xmitbuf; u32 txaddr, txsize; u32 ret = _FAIL; d = pintfhdl->pintf_dev; - adapter = pintfhdl->padapter; xmitbuf = (struct xmit_buf *)mem; #if 0 /* who will call this when hardware not be initialized? */ @@ -345,13 +343,13 @@ void sd_int_dpc(PADAPTER adapter) #endif /* CONFIG_SDIO_TX_ENABLE_AVAL_INT */ if (phal->sdio_hisr & BIT_SDIO_CPWM1_8822C) { - struct reportpwrstate_parm report; + /* struct reportpwrstate_parm report; */ #ifdef CONFIG_LPS_RPWM_TIMER _cancel_timer_ex(&pwrctl->pwr_rpwm_timer); #endif /* CONFIG_LPS_RPWM_TIMER */ - report.state = rtw_read8(adapter, REG_SDIO_HCPWM1_V2_8822C); + /* report.state = rtw_read8(adapter, REG_SDIO_HCPWM1_V2_8822C); */ #ifdef CONFIG_LPS_LCLK _set_workitem(&(pwrctl->cpwm_event)); diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_ops.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_ops.c index 55c431b32..1af0ce339 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_ops.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_ops.c @@ -191,10 +191,6 @@ static void enable_interrupt(PADAPTER adapter) */ static void disable_interrupt(PADAPTER adapter) { - PHAL_DATA_TYPE hal; - - - hal = GET_HAL_DATA(adapter); update_himr(adapter, 0); RTW_INFO("%s: update SDIO HIMR=0\n", __FUNCTION__); @@ -252,13 +248,9 @@ static void cancel_thread(PADAPTER adapter) */ static u8 sethwreg(PADAPTER adapter, u8 variable, u8 *val) { - PHAL_DATA_TYPE hal; u8 ret = _SUCCESS; u8 val8; - - hal = GET_HAL_DATA(adapter); - switch (variable) { case HW_VAR_SET_RPWM: /* @@ -334,12 +326,8 @@ static u8 sethwreg(PADAPTER adapter, u8 variable, u8 *val) */ static void gethwreg(PADAPTER adapter, u8 variable, u8 *val) { - PHAL_DATA_TYPE hal; u8 val8; - - hal = GET_HAL_DATA(adapter); - switch (variable) { case HW_VAR_CPWM: val8 = rtw_read8(adapter, REG_SDIO_HCPWM1_V2_8822C); @@ -377,12 +365,8 @@ static void gethwreg(PADAPTER adapter, u8 variable, u8 *val) */ static u8 gethaldefvar(PADAPTER adapter, HAL_DEF_VARIABLE eVariable, void *pval) { - PHAL_DATA_TYPE hal; u8 bResult = _SUCCESS; - - hal = GET_HAL_DATA(adapter); - switch (eVariable) { case HW_VAR_MAX_RX_AMPDU_FACTOR: /* Default use MAX size */ @@ -403,7 +387,6 @@ static u8 gethaldefvar(PADAPTER adapter, HAL_DEF_VARIABLE eVariable, void *pval) */ static u8 sethaldefvar(PADAPTER adapter, HAL_DEF_VARIABLE eVariable, void *pval) { - PHAL_DATA_TYPE hal = GET_HAL_DATA(adapter); u8 bResult = _SUCCESS; switch (eVariable) { diff --git a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_xmit.c b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_xmit.c index 733cbcf93..43121353c 100644 --- a/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_xmit.c +++ b/drivers/net/wireless/rtl8822cs/hal/rtl8822c/sdio/rtl8822cs_xmit.c @@ -158,7 +158,7 @@ static s32 xmit_xmitframes(PADAPTER adapter, struct xmit_priv *pxmitpriv) u32 k = 0; u8 max_agg_num; struct hw_xmit *hwxmits, *phwxmit; - u8 no_res, idx, hwentry; + u8 idx, hwentry; _irqL irql; struct tx_servq *ptxservq; _list *sta_plist, *sta_phead, *frame_plist, *frame_phead; @@ -175,7 +175,6 @@ static s32 xmit_xmitframes(PADAPTER adapter, struct xmit_priv *pxmitpriv) #endif err = 0; - no_res = _FALSE; hwxmits = pxmitpriv->hwxmits; hwentry = pxmitpriv->hwxmit_entry; ptxservq = NULL; @@ -188,6 +187,11 @@ static s32 xmit_xmitframes(PADAPTER adapter, struct xmit_priv *pxmitpriv) rtw_hal_get_def_var(adapter, HAL_DEF_TX_PAGE_SIZE, &page_size); desc_size = rtl8822c_get_tx_desc_size(adapter); + /* Limit max tx agg num to match with tx_allow rule */ + if (max_agg_num > 31) { + max_agg_num = 31; + } + #ifdef CONFIG_RTW_MGMT_QUEUE /* dump management frame directly */ do { @@ -307,16 +311,22 @@ static s32 xmit_xmitframes(PADAPTER adapter, struct xmit_priv *pxmitpriv) k = 0; } - /* ok to send, remove frame from queue */ #ifdef CONFIG_AP_MODE if (MLME_IS_AP(adapter) || MLME_IS_MESH(adapter)) { if ((pxmitframe->attrib.psta->state & WIFI_SLEEP_STATE) && (pxmitframe->attrib.triggered == 0)) { - RTW_INFO("%s: one not triggered pkt in queue when this STA sleep, break and goto next sta\n", __FUNCTION__); + RTW_INFO("%s: one not triggered pkt in queue when this STA sleep," + " move to sleep_q and goto next sta\n", __func__); + if (xmitframe_enqueue_for_sleeping_sta(adapter, pxmitframe) == _TRUE) { + ptxservq->qcnt--; + phwxmit->accnt--; + } break; } } #endif + + /* ok to send, remove frame from queue */ rtw_list_delete(&pxmitframe->list); ptxservq->qcnt--; phwxmit->accnt--; @@ -501,7 +511,6 @@ thread_return rtl8822cs_xmit_thread(thread_context context) { s32 ret; PADAPTER adapter; - struct xmit_priv *pxmitpriv; u8 thread_name[20] = {0}; #ifdef RTW_XMIT_THREAD_HIGH_PRIORITY_AGG #ifdef PLATFORM_LINUX @@ -517,7 +526,6 @@ thread_return rtl8822cs_xmit_thread(thread_context context) ret = _SUCCESS; adapter = (PADAPTER)context; - pxmitpriv = &adapter->xmitpriv; rtw_sprintf(thread_name, 20, "RTWHALXT-"ADPT_FMT, ADPT_ARG(adapter)); thread_enter(thread_name); @@ -547,7 +555,6 @@ thread_return rtl8822cs_xmit_thread(thread_context context) s32 rtl8822cs_mgnt_xmit(PADAPTER adapter, struct xmit_frame *pmgntframe) { s32 ret = _SUCCESS; - struct dvobj_priv *pdvobjpriv; struct xmit_priv *pxmitpriv; struct pkt_attrib *pattrib; struct xmit_buf *pxmitbuf; @@ -555,8 +562,6 @@ s32 rtl8822cs_mgnt_xmit(PADAPTER adapter, struct xmit_frame *pmgntframe) u16 subtype; u8 *pframe; - - pdvobjpriv = adapter_to_dvobj(adapter); pxmitpriv = &adapter->xmitpriv; pattrib = &pmgntframe->attrib; pxmitbuf = pmgntframe->pxmitbuf; @@ -608,6 +613,7 @@ s32 rtl8822cs_hal_mgmt_xmit_enqueue(PADAPTER adapter, struct xmit_frame *pxmitfr ret = rtw_mgmt_xmitframe_enqueue(adapter, pxmitframe); if (ret != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pxmitframe->pxmitbuf); rtw_free_xmitframe(pxmitpriv, pxmitframe); pxmitpriv->tx_drop++; return _FALSE; diff --git a/drivers/net/wireless/rtl8822cs/halmac.mk b/drivers/net/wireless/rtl8822cs/halmac.mk index 16eebc1c1..d0b36c1c7 100644 --- a/drivers/net/wireless/rtl8822cs/halmac.mk +++ b/drivers/net/wireless/rtl8822cs/halmac.mk @@ -26,6 +26,12 @@ series := 88xx ic := 8822c endif +ifeq ($(CONFIG_RTL8822E), y) +series := 88xx +ic := 8822e +d2efuse := y +endif + ifeq ($(CONFIG_RTL8821C), y) series := 88xx ic := 8821c @@ -36,6 +42,11 @@ series := 88xx_v1 ic := 8814b endif +ifeq ($(CONFIG_RTL8822E), y) +series := 88xx +ic := 8822e +endif + ifeq ($(series), 88xx_v1) d2all := else @@ -69,6 +80,7 @@ halmac-y += $(path_hm_d2)/halmac_gpio_$(ic).o \ $(path_hm_d2)/halmac_init_$(ic).o \ $(path_hm_d2)/halmac_phy_$(ic).o \ $(path_hm_d2)/halmac_pwr_seq_$(ic).o +halmac-$(d2efuse) += $(path_hm_d2)/halmac_efuse_$(ic).o halmac-$(pci) += $(path_hm_d2)/halmac_pcie_$(ic).o halmac-$(sdio) += $(path_hm_d2)/halmac_sdio_$(ic).o halmac-$(usb) += $(path_hm_d2)/halmac_usb_$(ic).o diff --git a/drivers/net/wireless/rtl8822cs/include/Hal8821APwrSeq.h b/drivers/net/wireless/rtl8822cs/include/Hal8821APwrSeq.h index c826f005b..568b8e5fc 100644 --- a/drivers/net/wireless/rtl8822cs/include/Hal8821APwrSeq.h +++ b/drivers/net/wireless/rtl8822cs/include/Hal8821APwrSeq.h @@ -76,7 +76,7 @@ {0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1},/*Enable HSISR GPIO9 interrupt*/\ {0x007A, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x3A},/*0x7A = 0x3A start BT*/\ {0x002E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF , 0x82 },/* 0x2C[23:12]=0x820 ; XTAL trim */ \ - {0x0010, PWR_CUT_A_MSK , PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6 , BIT6 },/* 0x10[6]=1 ; MP�s�W���0x2C�������v�A����0x10[6]�]��1�~����WLAN���� */ \ + {0x0010, PWR_CUT_A_MSK , PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6 , BIT6 },/* 0x10[6]=1 ; MP·s¼W¹ï©ó0x2Cªº±±¨îÅv¡A¶·§â0x10[6]³]¬°1¤~¯àÅýWLAN±±¨î */ \ #define RTL8821A_TRANS_ACT_TO_CARDEMU \ diff --git a/drivers/net/wireless/rtl8822cs/include/HalVerDef.h b/drivers/net/wireless/rtl8822cs/include/HalVerDef.h index d4e40670a..2c0091fff 100644 --- a/drivers/net/wireless/rtl8822cs/include/HalVerDef.h +++ b/drivers/net/wireless/rtl8822cs/include/HalVerDef.h @@ -42,6 +42,7 @@ typedef enum tag_HAL_IC_Type_Definition { CHIP_8822C = 19, CHIP_8814B = 20, CHIP_8723F = 21, + CHIP_8822E = 22, } HAL_IC_TYPE_E; /* HAL_CHIP_TYPE_E */ @@ -132,6 +133,7 @@ typedef struct tag_HAL_VERSION { #define IS_8822C_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8822C) ? TRUE : FALSE) #define IS_8814B_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8814B) ? TRUE : FALSE) #define IS_8723F_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8723F) ? TRUE : FALSE) +#define IS_8822E_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8822E) ? TRUE : FALSE) #define IS_8192F_SERIES(version)\ ((GET_CVID_IC_TYPE(version) == CHIP_8192F) ? TRUE : FALSE) diff --git a/drivers/net/wireless/rtl8822cs/include/autoconf.h b/drivers/net/wireless/rtl8822cs/include/autoconf.h index 0af9467e7..b91600652 100644 --- a/drivers/net/wireless/rtl8822cs/include/autoconf.h +++ b/drivers/net/wireless/rtl8822cs/include/autoconf.h @@ -160,10 +160,9 @@ #endif /*#define CONFIG_FILE_FWIMG*/ #define CONFIG_LONG_DELAY_ISSUE -/*#define CONFIG_PATCH_JOIN_WRONG_CHANNEL*/ #ifdef CONFIG_RTW_NAPI -#define CONFIG_RTW_NAPI_DYNAMIC +/*#define CONFIG_RTW_NAPI_DYNAMIC*/ #define CONFIG_RTW_NAPI_V2 #endif @@ -200,8 +199,11 @@ #ifdef CONFIG_POWER_SAVING #define CONFIG_IPS - #define CONFIG_LPS + #ifdef CONFIG_IPS + /* #define CONFIG_FWLPS_IN_IPS */ + #endif /* CONFIG_IPS */ + #define CONFIG_LPS #if defined(CONFIG_LPS) && (defined(CONFIG_GSPI_HCI) || defined(CONFIG_SDIO_HCI)) #define CONFIG_LPS_LCLK #endif diff --git a/drivers/net/wireless/rtl8822cs/include/drv_conf.h b/drivers/net/wireless/rtl8822cs/include/drv_conf.h index 842f22842..fad06d53f 100644 --- a/drivers/net/wireless/rtl8822cs/include/drv_conf.h +++ b/drivers/net/wireless/rtl8822cs/include/drv_conf.h @@ -50,25 +50,27 @@ #if defined(CONFIG_MCC_MODE) && (!defined(CONFIG_CONCURRENT_MODE)) - #error "Enable CONCURRENT_MODE before enable MCC MODE\n" + // #error "Enable CONCURRENT_MODE before enable MCC MODE\n" #endif +#if 0 #if defined(CONFIG_MCC_MODE) && defined(CONFIG_BT_COEXIST) - #error "Disable BT COEXIST before enable MCC MODE\n" + // #error "Disable BT COEXIST before enable MCC MODE\n" #endif +#endif #if defined(CONFIG_MCC_MODE) && defined(CONFIG_TDLS) - #error "Disable TDLS before enable MCC MODE\n" + // #error "Disable TDLS before enable MCC MODE\n" #endif #if defined(CONFIG_RTW_80211R) && !defined(CONFIG_LAYER2_ROAMING) - #error "Enable CONFIG_LAYER2_ROAMING before enable CONFIG_RTW_80211R\n" + // #error "Enable CONFIG_LAYER2_ROAMING before enable CONFIG_RTW_80211R\n" #endif @@ -80,6 +82,10 @@ /* Default enable single wiphy if driver ver >= 5.9 */ #define RTW_SINGLE_WIPHY +#if (defined(__ANDROID_COMMON_KERNEL__) && !defined(CONFIG_RTW_ANDROID)) + // #error "Set CONFIG_RTW_ANDROID in Makefile while build with Android Common Kernel!!" +#endif + #ifdef CONFIG_RTW_ANDROID #include @@ -100,6 +106,10 @@ #ifndef CONFIG_RADIO_WORK #define CONFIG_RADIO_WORK #endif + /* Default enable concurrent mode for most application */ + #ifndef CONFIG_CONCURRENT_MODE + #define CONFIG_CONCURRENT_MODE + #endif #endif #if (CONFIG_RTW_ANDROID <= 7) @@ -114,7 +124,7 @@ #define CONFIG_RTW_WIFI_HAL #endif #else - #error "Linux kernel version is too old\n" + // #error "Linux kernel version is too old\n" #endif #endif @@ -181,12 +191,24 @@ #else // for Linux + #ifdef CONFIG_IOCTL_CFG80211 #ifndef CONFIG_RTW_SCAN_RAND #define CONFIG_RTW_SCAN_RAND #endif + #endif #endif // CONFIG_RTW_ANDROID +#ifndef RTW_SINGLE_WIPHY +#define RTW_PER_ADAPTER_WIPHY 1 +#else +#define RTW_PER_ADAPTER_WIPHY 0 +#endif + +#if defined(CONFIG_REGD_SRC_FROM_OS) && RTW_PER_ADAPTER_WIPHY +// #error "CONFIG_REGD_SRC_FROM_OS is not supported when enable RTW_PER_ADAPTER_WIPHY" +#endif + /* #if defined(CONFIG_HAS_EARLYSUSPEND) && defined(CONFIG_RESUME_IN_WORKQUEUE) #warning "You have CONFIG_HAS_EARLYSUSPEND enabled in your system, we disable CONFIG_RESUME_IN_WORKQUEUE automatically" @@ -199,25 +221,25 @@ #endif */ -//#ifdef CONFIG_RESUME_IN_WORKQUEUE /* this can be removed, because there is no case for this... */ -// #if !defined(CONFIG_WAKELOCK) && !defined(CONFIG_ANDROID_POWER) -// #error "enable CONFIG_RESUME_IN_WORKQUEUE without CONFIG_WAKELOCK or CONFIG_ANDROID_POWER will suffer from the danger of wifi's unfunctionality..." -// #error "If you still want to enable CONFIG_RESUME_IN_WORKQUEUE in this case, mask this preprossor checking and GOOD LUCK..." -// #endif -//#endif +#ifdef CONFIG_RESUME_IN_WORKQUEUE /* this can be removed, because there is no case for this... */ + #if !defined(CONFIG_WAKELOCK) && !defined(CONFIG_ANDROID_POWER) + // #error "enable CONFIG_RESUME_IN_WORKQUEUE without CONFIG_WAKELOCK or CONFIG_ANDROID_POWER will suffer from the danger of wifi's unfunctionality..." + // #error "If you still want to enable CONFIG_RESUME_IN_WORKQUEUE in this case, mask this preprossor checking and GOOD LUCK..." + #endif +#endif /* About USB VENDOR REQ */ #if defined(CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC) && !defined(CONFIG_USB_VENDOR_REQ_MUTEX) - #warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC automatically" + // #warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC automatically" #define CONFIG_USB_VENDOR_REQ_MUTEX #endif #if defined(CONFIG_VENDOR_REQ_RETRY) && !defined(CONFIG_USB_VENDOR_REQ_MUTEX) - #warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_VENDOR_REQ_RETRY automatically" + // #warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_VENDOR_REQ_RETRY automatically" #define CONFIG_USB_VENDOR_REQ_MUTEX #endif #ifdef CONFIG_WIFI_MONITOR - /* #define CONFIG_MONITOR_MODE_XMIT */ + #define CONFIG_MONITOR_MODE_XMIT #endif #ifdef CONFIG_CUSTOMER_ALIBABA_GENERAL @@ -245,6 +267,10 @@ #ifdef CONFIG_AP_MODE #define CONFIG_LIMITED_AP_NUM 1 + #ifndef CONFIG_RTW_MAX_AP_ASSOC_STA + #define CONFIG_RTW_MAX_AP_ASSOC_STA 0 /* 0: not specified */ + #endif + #ifndef CONFIG_RTW_AP_DATA_BMC_TO_UC #define CONFIG_RTW_AP_DATA_BMC_TO_UC 1 #endif @@ -266,7 +292,7 @@ #ifdef CONFIG_RTW_MULTI_AP #ifndef CONFIG_AP_MODE - #error "enable CONFIG_RTW_MULTI_AP without CONFIG_AP_MODE" + // #error "enable CONFIG_RTW_MULTI_AP without CONFIG_AP_MODE" #endif #ifndef CONFIG_RTW_WDS #define CONFIG_RTW_WDS @@ -356,28 +382,48 @@ #define CONFIG_RTW_HIQ_FILTER 1 #endif +#ifndef CONFIG_RTW_EDCCA_MODE_SEL +#define CONFIG_RTW_EDCCA_MODE_SEL 0 /* 0:RTW_EDCCA_NORM, 0xFF:RTW_EDCCA_AUTO */ +#endif + #ifndef CONFIG_RTW_ADAPTIVITY_EN - #define CONFIG_RTW_ADAPTIVITY_EN 0 +#define CONFIG_RTW_ADAPTIVITY_EN 0 #endif #ifndef CONFIG_RTW_ADAPTIVITY_MODE - #define CONFIG_RTW_ADAPTIVITY_MODE 0 +#define CONFIG_RTW_ADAPTIVITY_MODE 0 #endif #ifndef CONFIG_RTW_ADAPTIVITY_TH_L2H_INI - #define CONFIG_RTW_ADAPTIVITY_TH_L2H_INI 0 +#define CONFIG_RTW_ADAPTIVITY_TH_L2H_INI 0 #endif #ifndef CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF - #define CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF 0 +#define CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF 0 #endif #ifndef CONFIG_RTW_EXCL_CHS - #define CONFIG_RTW_EXCL_CHS {0} +#define CONFIG_RTW_EXCL_CHS {0} #endif #ifndef CONFIG_RTW_EXCL_CHS_6G - #define CONFIG_RTW_EXCL_CHS_6G {0} +#define CONFIG_RTW_EXCL_CHS_6G {0} +#endif + +#ifndef CONFIG_RTW_DIS_CH_FLAGS +#define CONFIG_RTW_DIS_CH_FLAGS NULL +#endif + +#ifndef CONFIG_RTW_BCN_HINT_VALID_MS +#define CONFIG_RTW_BCN_HINT_VALID_MS (60 * 1000) +#endif + +#ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE +#define CONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE 0 /* 0: disable */ +#endif + +#ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS +#define CONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS 0x01 /* BIT0: take intersection when having multiple received IEs */ #endif #ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_EN_ROLE @@ -388,10 +434,15 @@ #define CONFIG_RTW_COUNTRY_IE_SLAVE_EN_IFBMP 0xFF /* all iface */ #endif +#ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_SCAN_INT_MS +#define CONFIG_RTW_COUNTRY_IE_SLAVE_SCAN_INT_MS (60 * 1000) +#endif + #ifndef CONFIG_IEEE80211_BAND_5GHZ #if defined(CONFIG_RTL8821A) || defined(CONFIG_RTL8821C) \ || defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) \ - || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8723F) \ + || defined(CONFIG_RTL8822E) #define CONFIG_IEEE80211_BAND_5GHZ 1 #else #define CONFIG_IEEE80211_BAND_5GHZ 0 @@ -432,6 +483,18 @@ #define CONFIG_TXPWR_LIMIT_EN 2 /* by efuse */ #endif +#ifndef CONFIG_RTW_INIT_REGD_ALWAYS_APPLY +#define CONFIG_RTW_INIT_REGD_ALWAYS_APPLY 0 +#endif + +#ifndef CONFIG_RTW_USER_REGD_ALWAYS_APPLY +#define CONFIG_RTW_USER_REGD_ALWAYS_APPLY 0 +#endif + +#ifndef CONFIG_RTW_COUNTRY_CODE +#define CONFIG_RTW_COUNTRY_CODE NULL +#endif + #ifndef CONFIG_RTW_CHPLAN #define CONFIG_RTW_CHPLAN 0xFFFF /* RTW_CHPLAN_IOCTL_UNSPECIFIED */ #endif @@ -459,7 +522,7 @@ #if RTW_DEF_MODULE_REGULATORY_CERT #ifdef CONFIG_REGD_SRC_FROM_OS - #error "CONFIG_REGD_SRC_FROM_OS is not supported when enable RTW_DEF_MODULE_REGULATORY_CERT" + // #error "CONFIG_REGD_SRC_FROM_OS is not supported when enable RTW_DEF_MODULE_REGULATORY_CERT" #endif /* force enable TX power by rate and TX power limit */ #undef CONFIG_TXPWR_BY_RATE_EN @@ -587,12 +650,12 @@ #ifndef CONFIG_CONCURRENT_MODE #if (CONFIG_IFACE_NUMBER > 1) - #error "CONFIG_IFACE_NUMBER over 1,but CONFIG_CONCURRENT_MODE not defined" + // #error "CONFIG_IFACE_NUMBER over 1,but CONFIG_CONCURRENT_MODE not defined" #endif #endif #if (CONFIG_IFACE_NUMBER == 0) - #error "CONFIG_IFACE_NUMBER cound not be 0 !!" + // #error "CONFIG_IFACE_NUMBER cound not be 0 !!" #endif #if defined(CONFIG_RTL8188E) || defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8188F) || \ @@ -601,7 +664,7 @@ defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) || defined(CONFIG_RTL8710B) defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8703B) || defined(CONFIG_RTL8723D) #define CONFIG_HWMPCAP_GEN1 #elif defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || \ -defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ +defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) /*|| defined(CONFIG_RTL8814A)*/ #define CONFIG_HWMPCAP_GEN2 #elif defined(CONFIG_RTL8814B) /*Address CAM - 128*/ #define CONFIG_HWMPCAP_GEN3 @@ -614,20 +677,20 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ #endif #ifdef CONFIG_WOWLAN - #error "This IC can't support MI and WoWLan at the same time" + // #error "This IC can't support MI and WoWLan at the same time" #endif #endif #if defined(CONFIG_HWMPCAP_GEN1) && (CONFIG_IFACE_NUMBER > 3) - #error " This IC can't support over 3 interfaces !!" + // #error " This IC can't support over 3 interfaces !!" #endif #if (CONFIG_IFACE_NUMBER > 4) - #error "Not support over 4 interfaces yet !!" + // #error "Not support over 4 interfaces yet !!" #endif #if (CONFIG_IFACE_NUMBER > 8) /*IFACE_ID_MAX*/ - #error "HW count not support over 8 interfaces !!" + // #error "HW count not support over 8 interfaces !!" #endif #if (CONFIG_IFACE_NUMBER > 2) @@ -683,10 +746,10 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ #if defined(CONFIG_MI_UNIQUE_MACADDR_BIT) #if !defined(CONFIG_MI_WITH_MBSSID_CAM) - #error "CONFIG_MI_UNIQUE_MACADDR_BIT should not be used without multiple interface !!" + // #error "CONFIG_MI_UNIQUE_MACADDR_BIT should not be used without multiple interface !!" #endif #if (CONFIG_MI_UNIQUE_MACADDR_BIT < 24) || ( 47 < CONFIG_MI_UNIQUE_MACADDR_BIT) - #error "CONFIG_MI_UNIQUE_MACADDR_BIT should be the bit in NIC specific mac address(BIT[24:47] !!" + // #error "CONFIG_MI_UNIQUE_MACADDR_BIT should be the bit in NIC specific mac address(BIT[24:47] !!" #endif #endif @@ -695,11 +758,13 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ #ifdef SEC_DEFAULT_KEY_SEARCH #if (CONFIG_IFACE_NUMBER >= 2) - #error "Default Key Search only work with only one interface case!" + // #error "Default Key Search only work with only one interface case!" #endif #endif -#if defined(CONFIG_WOWLAN) && (defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B)) +#if defined(CONFIG_WOWLAN) && (defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) \ + || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822C) \ + || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8822E)) #define CONFIG_WOW_PATTERN_HW_CAM #endif @@ -711,6 +776,10 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ #define CONFIG_TSF_UPDATE_RESTORE_FACTOR 5 #endif +#ifndef CONFIG_RTW_DEFAULT_BB_OPMODE +#define CONFIG_RTW_DEFAULT_BB_OPMODE 0 /* 0:PHYDM_PERFORMANCE_MODE */ +#endif + /* Mark CONFIG_DEAUTH_BEFORE_CONNECT by Arvin 2015/07/20 If the failure of Wi-Fi connection is due to some irregular disconnection behavior (like unplug dongle, @@ -763,15 +832,19 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ /* IPS */ #ifndef RTW_IPS_MODE - #if defined(CONFIG_IPS) + #if defined(CONFIG_FWLPS_IN_IPS) && defined(CONFIG_LPS_LCLK) + #define RTW_IPS_MODE 3 + #elif defined(CONFIG_FWLPS_IN_IPS) + #define RTW_IPS_MODE 2 + #elif defined(CONFIG_IPS) #define RTW_IPS_MODE 1 #else #define RTW_IPS_MODE 0 #endif #endif /* !RTW_IPS_MODE */ -#if (RTW_IPS_MODE > 1 || RTW_IPS_MODE < 0) - #error "The CONFIG_IPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n" +#if (RTW_IPS_MODE > 3 || RTW_IPS_MODE < 0) + // #error "The CONFIG_IPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n" #endif /* LPS */ @@ -788,7 +861,7 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ #endif /* !RTW_LPS_MODE */ #if (RTW_LPS_MODE > 3 || RTW_LPS_MODE < 0) - #error "The CONFIG_LPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n" + // #error "The CONFIG_LPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n" #endif #ifndef RTW_LPS_1T1R @@ -799,6 +872,23 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ #define RTW_WOW_LPS_1T1R 0 #endif +/* WOW IPS */ +#ifndef RTW_WOW_IPS_MODE + #if defined(CONFIG_FWLPS_IN_IPS) && defined(CONFIG_LPS_LCLK) + #define RTW_WOW_IPS_MODE 3 + #elif defined(CONFIG_FWLPS_IN_IPS) + #define RTW_WOW_IPS_MODE 2 + #elif defined(CONFIG_IPS) + #define RTW_WOW_IPS_MODE 1 + #else + #define RTW_WOW_IPS_MODE 0 + #endif +#endif /* !RTW_WOW_IPS_MODE */ + +#if (RTW_WOW_IPS_MODE > 3 || RTW_WOW_IPS_MODE < 0) + // #error "The RTW_WOW_IPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n" +#endif + /* WOW LPS */ #ifndef RTW_WOW_LPS_MODE #if defined(CONFIG_LPS_PG) || defined(CONFIG_LPS_PG_DDMA) @@ -813,12 +903,12 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ #endif /* !RTW_WOW_LPS_MODE */ #if (RTW_WOW_LPS_MODE > 3 || RTW_WOW_LPS_MODE < 0) - #error "The RTW_WOW_LPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n" + // #error "The RTW_WOW_LPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n" #endif #ifdef RTW_REDUCE_SCAN_SWITCH_CH_TIME #ifndef CONFIG_RTL8822B - #error "Only 8822B support RTW_REDUCE_SCAN_SWITCH_CH_TIME" + // #error "Only 8822B support RTW_REDUCE_SCAN_SWITCH_CH_TIME" #endif #ifndef RTW_CHANNEL_SWITCH_OFFLOAD #define RTW_CHANNEL_SWITCH_OFFLOAD @@ -827,13 +917,13 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ #ifdef CONFIG_WAR_OFFLOAD #ifndef CONFIG_WOWLAN - #error "WAR OFFLOAD is part of WOWLAN" + // #error "WAR OFFLOAD is part of WOWLAN" #endif #endif #if defined(CONFIG_OFFLOAD_MDNS_V4) || defined(CONFIG_OFFLOAD_MDNS_V6) #ifndef CONFIG_WOWLAN - #error "mDNS OFFLOAD is part of WOWLAN" + // #error "mDNS OFFLOAD is part of WOWLAN" #endif #ifndef CONFIG_WAR_OFFLOAD #define CONFIG_WAR_OFFLOAD @@ -865,4 +955,14 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/ #define DBG_CPU_INFO /* Add CPU info to debug message prefix */ #endif +#ifndef CONFIG_ALLOW_FUNC_2G_5G_ONLY +#define CONFIG_ALLOW_FUNC_2G_5G_ONLY 1 +#endif + +#if !CONFIG_ALLOW_FUNC_2G_5G_ONLY +#define RTW_FUNC_2G_5G_ONLY __attribute__ ((deprecated("ch utility consider only 2G/5G is not allowed"))) +#else +#define RTW_FUNC_2G_5G_ONLY /* tag for channel functions/macros consider only 2G/5G, place at the same line with symbol name */ +#endif + #endif /* __DRV_CONF_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/include/drv_types.h b/drivers/net/wireless/rtl8822cs/include/drv_types.h index 84135b935..b8445b81b 100644 --- a/drivers/net/wireless/rtl8822cs/include/drv_types.h +++ b/drivers/net/wireless/rtl8822cs/include/drv_types.h @@ -29,7 +29,7 @@ #include #include #include -#ifdef CONFIG_ARP_KEEP_ALIVE +#ifdef CONFIG_ARP_KEEP_ALIVE_GW #include #include #endif @@ -60,6 +60,7 @@ typedef struct _ADAPTER _adapter, ADAPTER, *PADAPTER; #include #include #include +#include "../core/rtw_chset.h" #include "../core/rtw_chplan.h" #ifdef CONFIG_80211N_HT @@ -107,11 +108,14 @@ typedef struct _ADAPTER _adapter, ADAPTER, *PADAPTER; #include #include #include +#include "rtw_cfg.h" #include #include #include #include #include +#include "../core/rtw_dfs.h" +#include "../core/rtw_txpwr.h" #include #include #ifdef CONFIG_RTW_WDS @@ -215,6 +219,7 @@ struct registry_priv { #endif u8 lps_chk_by_tp; #ifdef CONFIG_WOWLAN + u8 wow_ips_mode; u8 wow_power_mgnt; u8 wow_lps_level; #ifdef CONFIG_LPS_1T1R @@ -264,6 +269,7 @@ struct registry_priv { u8 tx_bw_mode; #ifdef CONFIG_AP_MODE + u8 max_ap_assoc_sta; u8 bmc_tx_rate; #if CONFIG_RTW_AP_DATA_BMC_TO_UC u8 ap_src_b2u_flags; @@ -281,9 +287,9 @@ struct registry_priv { #ifdef CONFIG_80211N_HT u8 ht_enable; /* 0: 20 MHz, 1: 40 MHz, 2: 80 MHz, 3: 160MHz */ - /* 2.4G use bit 0 ~ 3, 5G use bit 4 ~ 7 */ - /* 0x21 means enable 2.4G 40MHz & 5G 80MHz */ - u8 bw_mode; + /* 2.4G use bit 0 ~ 3, 5G use bit 4 ~ 7, 6G use bit 8 ~ 11*/ + /* 0x321 means enable 2.4G 40MHz & 5G 80MHz & 6G 160MHz*/ + u16 bw_mode; u8 ampdu_enable;/* for tx */ u8 rx_stbc; u8 rx_ampdu_amsdu;/* Rx A-MPDU Supports A-MSDU is permitted */ @@ -343,6 +349,8 @@ struct registry_priv { #ifdef CONFIG_REGD_SRC_FROM_OS enum regd_src_t regd_src; #endif + bool init_regd_always_apply; + bool user_regd_always_apply; char alpha2[2]; u8 channel_plan; u8 excl_chs[MAX_CHANNEL_NUM_2G_5G]; @@ -350,6 +358,9 @@ struct registry_priv { u8 channel_plan_6g; u8 excl_chs_6g[MAX_CHANNEL_NUM_6G]; #endif + u8 dis_ch_flags; + u32 bcn_hint_valid_ms; + u8 full_ch_in_p2p_handshake; /* 0: reply only softap channel, 1: reply full channel list*/ #ifdef CONFIG_BT_COEXIST @@ -387,8 +398,11 @@ struct registry_priv { #endif #ifdef CONFIG_80211D + u8 country_ie_slave_en_mode; + u8 country_ie_slave_flags; u8 country_ie_slave_en_role; u8 country_ie_slave_en_ifbmp; + u32 country_ie_slave_scan_int_ms; #endif u8 ifname[16]; @@ -441,8 +455,7 @@ struct registry_priv { u8 qos_opt_enable; u8 hiq_filter; - u8 adaptivity_en; - u8 adaptivity_mode; + u8 edcca_mode_sel; s8 adaptivity_th_l2h_ini; s8 adaptivity_th_edcca_hl_diff; @@ -540,6 +553,7 @@ struct registry_priv { #endif u32 phydm_ability; u32 halrf_ability; + u8 def_bb_opmode; #ifdef CONFIG_TDMADIG u8 tdmadig_en; u8 tdmadig_mode; @@ -563,7 +577,8 @@ struct registry_priv { u32 scan_interval_thr; #endif -#ifdef CONFIG_RTL8822C_XCAP_NEW_POLICY +#if defined(CONFIG_RTL8822C_XCAP_NEW_POLICY) \ + || defined(CONFIG_RTL8822E_XCAP_NEW_POLICY) u8 rtw_8822c_xcap_overwrite; #endif #ifdef CONFIG_RTW_MULTI_AP @@ -573,7 +588,6 @@ struct registry_priv { #if defined(CONFIG_CONCURRENT_MODE) && defined(CONFIG_AP_MODE) u8 ap_csa_cnt; #endif - u8 nbi_en; }; /* For registry parameters */ @@ -596,16 +610,20 @@ struct registry_priv { #define BSSID_SZ(field) sizeof(((PWLAN_BSSID_EX) 0)->field) #define BW_MODE_2G(bw_mode) ((bw_mode) & 0x0F) -#define BW_MODE_5G(bw_mode) ((bw_mode) >> 4) +#define BW_MODE_5G(bw_mode) (((bw_mode) >> 4) & 0x0F) +#define BW_MODE_6G(bw_mode) (((bw_mode) >> 8) & 0x0F) #ifdef CONFIG_80211N_HT #define REGSTY_BW_2G(regsty) BW_MODE_2G((regsty)->bw_mode) #define REGSTY_BW_5G(regsty) BW_MODE_5G((regsty)->bw_mode) +#define REGSTY_BW_6G(regsty) BW_MODE_6G((regsty)->bw_mode) #else #define REGSTY_BW_2G(regsty) CHANNEL_WIDTH_20 #define REGSTY_BW_5G(regsty) CHANNEL_WIDTH_20 +#define REGSTY_BW_6G(regsty) CHANNEL_WIDTH_20 #endif #define REGSTY_IS_BW_2G_SUPPORT(regsty, bw) (REGSTY_BW_2G((regsty)) >= (bw)) #define REGSTY_IS_BW_5G_SUPPORT(regsty, bw) (REGSTY_BW_5G((regsty)) >= (bw)) +#define REGSTY_IS_BW_6G_SUPPORT(regsty, bw) (REGSTY_BW_6G((regsty)) >= (bw)) #ifdef CONFIG_80211AC_VHT #define REGSTY_IS_11AC_ENABLE(regsty) ((regsty)->vht_enable != 0) @@ -617,6 +635,9 @@ struct registry_priv { #define REGSTY_IS_11AC_24G_ENABLE(regsty) 0 #endif +#define REGSTY_IS_11AX_ENABLE(regsty) 0 +#define REGSTY_IS_11AX_AUTO(regsty) 0 + #ifdef CONFIG_ACTIVE_TPC_REPORT #define REGSTY_IS_ACTIVE_TPC_REPORT_CAPABLE(regsty) ((regsty)->active_tpc_report != 0) #define REGSTY_IS_ACTIVE_TPC_REPORT_AUTO(regsty) ((regsty)->active_tpc_report == 2) @@ -661,6 +682,8 @@ typedef struct rtw_if_operations { #define GET_PRIMARY_ADAPTER(padapter) (((_adapter *)padapter)->dvobj->padapters[IFACE_ID0]) #define GET_IFACE_NUMS(padapter) (((_adapter *)padapter)->dvobj->iface_nums) #define GET_ADAPTER(padapter, iface_id) (((_adapter *)padapter)->dvobj->padapters[iface_id]) +#define GET_PRIMARY_LINK(padapter) (&(padapter)->adapter_link) +#define GET_LINK(padapter, link_idx) ((link_idx) < RTW_RLINK_MAX ? &(padapter)->adapter_link : NULL) #define GetDefaultAdapter(padapter) padapter @@ -867,6 +890,8 @@ struct rtw_traffic_statistics { #define SEC_STATUS_STA_PK_GK_CONFLICT_DIS_BMC_SEARCH BIT0 +#define TXPAUSE_CAP_FW_CTRL BIT0 + struct sec_cam_bmp { u32 m0; #if (SEC_CAM_ENT_NUM_SW_LIMIT > 32) @@ -1025,12 +1050,6 @@ struct macid_ctl_t { #define OFFCHS_LEAVE_OP 2 #define OFFCHS_BACKING_OP 3 -#define TPC_MODE_DISABLE 0 -#define TPC_MODE_MANUAL 1 -#define TPC_MODE_INVALID 2 /* keep last */ - -#define TPC_MANUAL_CONSTRAINT_MAX 600 /* mB */ - #define COUNTRY_IE_SLAVE_EN_ROLE_STA BIT0 /* pure STA mode */ #define COUNTRY_IE_SLAVE_EN_ROLE_GC BIT1 /* P2P group client */ @@ -1038,52 +1057,55 @@ struct macid_ctl_t { struct rf_ctl_t { bool disable_sw_chplan; + enum regd_src_t regd_src; - enum rtw_regd_inr regd_inr; + u8 regd_inr_bmp; char alpha2[2]; - u8 ChannelPlan; + u8 domain_code; #if CONFIG_IEEE80211_BAND_6GHZ - u8 chplan_6g; -#endif - u8 edcca_mode_2g_override; -#if CONFIG_IEEE80211_BAND_5GHZ - u8 edcca_mode_5g_override; -#endif -#if CONFIG_IEEE80211_BAND_6GHZ - u8 edcca_mode_6g_override; -#endif -#if CONFIG_TXPWR_LIMIT - u8 txpwr_lmt_override; + u8 domain_code_6g; #endif -#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) +#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) || CONFIG_IEEE80211_BAND_5GHZ u8 proto_en; #endif - - /* initial channel plan selectors */ - char init_alpha2[2]; - u8 init_ChannelPlan; + u8 dis_ch_flags; + u8 excl_chs[MAX_CHANNEL_NUM_2G_5G]; #if CONFIG_IEEE80211_BAND_6GHZ - u8 init_chplan_6g; + u8 excl_chs_6g[MAX_CHANNEL_NUM_6G]; #endif - /* channel plan selectors by user */ - char user_alpha2[2]; /* "\x00\x00" is not set */ - u8 user_ChannelPlan; -#if CONFIG_IEEE80211_BAND_6GHZ - u8 user_chplan_6g; -#endif + _mutex regd_req_mutex; + _list regd_req_list; + u8 regd_req_num; + bool init_regd_always_apply; + bool user_regd_always_apply; + struct regd_req_t init_req; + struct regd_req_t *user_req; + + u32 bcn_hint_valid_ms; /* the length of time beacon hint continue */ #ifdef CONFIG_80211D - u8 country_ie_slave_en_role; - u8 country_ie_slave_en_ifbmp; + enum country_ie_slave_en_mode cis_en_mode; + u8 cis_flags; /* bitmap of enum country_ie_slave_flags */ - struct country_ie_slave_record cisr[CONFIG_IFACE_NUMBER]; - u8 effected_cisr_id; + u8 cis_en_role; /* per link cis enable role, see COUNTRY_IE_SLAVE_EN_ROLE_XXX, used when CISF_ENV_BSS is not set */ + u8 cis_en_ifbmp; /* per link cis enable iface bitmap, used when CISF_ENV_BSS is not set */ + u32 cis_scan_int_ms; /* 0 means no env BSS scan triggerred by driver self, used when CISF_ENV_BSS is set */ + + bool cis_enabled; /* enable status */ + + /* per link cis status, used when CISF_ENV_BSS is not set */ + u8 *recv_country_ie[CONFIG_IFACE_NUMBER][RTW_RLINK_MAX]; + u32 recv_country_ie_len[CONFIG_IFACE_NUMBER][RTW_RLINK_MAX]; + struct country_ie_slave_record cisr[CONFIG_IFACE_NUMBER][RTW_RLINK_MAX]; + + /* effected one, used when CISF_INTERSECT is not set */ + struct country_ie_slave_record *effected_cisr; + struct country_ie_slave_record effected_cisr_cont; /* valid when effected_cisr != NULL */ #endif - u8 max_chan_nums; - RT_CHANNEL_INFO channel_set[MAX_CHANNEL_NUM]; + struct rtw_chset chset; struct op_class_pref_t **spt_op_class_ch; u8 cap_spt_op_class_num; u8 reg_spt_op_class_num; @@ -1112,19 +1134,6 @@ struct rf_ctl_t { #if CONFIG_TXPWR_LIMIT u8 highest_ht_rate_bw_bmp; u8 highest_vht_rate_bw_bmp; - - _mutex txpwr_lmt_mutex; - _list reg_exc_list; - u8 regd_exc_num; - _list txpwr_lmt_list; - u8 txpwr_lmt_num; - const char *txpwr_lmt_name[BAND_MAX]; - - u8 txpwr_lmt_2g_cck_ofdm_state; - #if CONFIG_IEEE80211_BAND_5GHZ - u8 txpwr_lmt_5g_cck_ofdm_state; - u8 txpwr_lmt_5g_20_40_ref; - #endif #endif u8 tpc_mode; u16 tpc_manual_constraint; /* mB */ @@ -1139,12 +1148,16 @@ struct rf_ctl_t { #if CONFIG_IEEE80211_BAND_6GHZ u8 edcca_mode_6g; #endif +#ifndef CONFIG_DIRECT_EDCCA_MODE_SETTING + BAND_TYPE last_edcca_mode_op_band; +#endif u8 ap_csa_ch; u8 ap_csa_switch_cnt; u8 ap_csa_ch_offset; u8 ap_csa_ch_width; u8 ap_csa_en; + u8 ap_csa_wait_update_bcn; /* wait beacon update */ #if defined(CONFIG_CONCURRENT_MODE) && defined(CONFIG_AP_MODE) u8 ap_csa_cnt_input; /* Input from proc, default value is DEFAULT_CSA_CNT */ #endif @@ -1161,17 +1174,23 @@ struct rf_ctl_t { u8 ecsa_op_class; #endif +#if CONFIG_IEEE80211_BAND_5GHZ + bool radar_detect_by_others[HW_BAND_MAX]; + /* 5G band is implicit */ + u8 radar_detect_cch[HW_BAND_MAX]; + u8 radar_detect_bw[HW_BAND_MAX]; + u32 radar_detect_freq_hi[HW_BAND_MAX]; + u32 radar_detect_freq_lo[HW_BAND_MAX]; + #ifdef CONFIG_DFS_MASTER - u8 dfs_region_domain; + enum rtw_dfs_regd dfs_region_domain; _timer radar_detect_timer; - bool radar_detect_by_others; - u8 radar_detect_enabled; + u8 radar_detect_enabled; /* hook to phydm */ bool radar_detected; - u8 radar_detect_ch; - u8 radar_detect_bw; - u8 radar_detect_offset; + enum phl_band_idx radar_detect_hwband; + bool non_ocp_finished; systime cac_start_time; systime cac_end_time; u8 cac_force_stop; @@ -1186,6 +1205,8 @@ struct rf_ctl_t { u8 dbg_dfs_radar_detect_trigger_non; u8 dbg_dfs_choose_dfs_ch_first; #endif /* CONFIG_DFS_MASTER */ +#endif /* CONFIG_IEEE80211_BAND_5GHZ */ + #endif /* CONFIG_DFS */ }; @@ -1195,27 +1216,37 @@ struct wow_ctl_t { #define WOW_CAP_TKIP_OL BIT0 #define WOW_CAP_HALMAC_ACCESS_PATTERN_IN_TXFIFO BIT1 +#define WOW_CAP_CSA BIT2 +#define WOW_CAP_WPA3_SAE BIT3 +#define WOW_CAP_DIS_INBAND_SIGNAL BIT4 +#define WOW_CAP_MDNS BIT5 -#define RFCTL_REG_WORLDWIDE(rfctl) (IS_ALPHA2_WORLDWIDE(rfctl->alpha2)) -#define RFCTL_REG_ALPHA2_UNSPEC(rfctl) (IS_ALPHA2_UNSPEC(rfctl->alpha2)) /* ex: only domain code is specified */ +#define RFCTL_REG_WORLDWIDE(rfctl) (IS_ALPHA2_WORLDWIDE(rfctl->alpha2)) +#define RFCTL_REG_ALPHA2_UNSPEC(rfctl) (IS_ALPHA2_UNSPEC(rfctl->alpha2)) /* ex: only domain code is specified */ +#define RFCTL_REG_INTERSECTED(rfctl) (IS_ALPHA2_INTERSECTED(rfctl->alpha2)) + +#if CONFIG_IEEE80211_BAND_5GHZ +#define RFCTL_REG_EN_11A(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_A) ? true : false) +#else +#define RFCTL_REG_EN_11A(rfctl) false +#endif #ifdef CONFIG_80211AC_VHT -#define RFCTL_REG_EN_11AC(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_AC) ? 1 : 0) +#define RFCTL_REG_EN_11AC(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_AC) ? true : false) #else -#define RFCTL_REG_EN_11AC(rfctl) 0 +#define RFCTL_REG_EN_11AC(rfctl) false #endif #ifdef CONFIG_80211AX_HE -#define RFCTL_REG_EN_11AX(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_AX) ? 1 : 0) +#define RFCTL_REG_EN_11AX(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_AX) ? true : false) #else -#define RFCTL_REG_EN_11AX(rfctl) 0 +#define RFCTL_REG_EN_11AX(rfctl) false #endif -#define RTW_CAC_STOPPED 0 #ifdef CONFIG_DFS_MASTER #define IS_CAC_STOPPED(rfctl) ((rfctl)->cac_end_time == RTW_CAC_STOPPED) #define IS_CH_WAITING(rfctl) (!IS_CAC_STOPPED(rfctl) && rtw_time_after((rfctl)->cac_end_time, rtw_get_current_time())) -#define IS_UNDER_CAC(rfctl) (IS_CH_WAITING(rfctl) && rtw_time_after(rtw_get_current_time(), (rfctl)->cac_start_time)) +#define IS_UNDER_CAC(rfctl) (IS_CH_WAITING(rfctl) && rtw_time_after_eq(rtw_get_current_time(), (rfctl)->cac_start_time)) #define IS_RADAR_DETECTED(rfctl) ((rfctl)->radar_detected) #else #define IS_CAC_STOPPED(rfctl) 1 @@ -1230,6 +1261,11 @@ struct wow_ctl_t { #define IS_DFS_SLAVE_WITH_RD(rfctl) 0 #endif +#define HWBAND_FMT "HB%d" +#define HWBAND_ARG(band_idx) (band_idx) +#define FUNC_HWBAND_FMT "%s("HWBAND_FMT")" +#define FUNC_HWBAND_ARG(band_idx) __func__, HWBAND_ARG(band_idx) + #ifdef CONFIG_MBSSID_CAM #define TOTAL_MBID_CAM_NUM 8 #define INVALID_CAM_ID 0xFF @@ -1296,17 +1332,11 @@ struct protsel { u32 sel; /* save the last sel port */ }; -#ifdef CONFIG_RTL8814B +#ifdef CONFIG_USB_HCI +#define MAX_ENDPOINT_NUM 9 /* 2 x Bulk-IN + 7 x Bulk-OUT */ +#endif #define MAX_BULKOUT_NUM 7 -#ifdef CONFIG_USB_HCI -#define MAX_ENDPOINT_NUM 8 -#endif -#else -#define MAX_BULKOUT_NUM 4 -#ifdef CONFIG_USB_HCI -#define MAX_ENDPOINT_NUM 6 -#endif -#endif +#define MAX_BULKIN_NUM 2 struct dvobj_priv { /*-------- below is common data --------*/ @@ -1360,6 +1390,10 @@ struct dvobj_priv { u8 iface_nums; /* total number of ifaces used runtime */ struct mi_state iface_state; +#ifdef CONFIG_HAL_PREINIT + u8 hal_pre_inited; +#endif + #ifdef CONFIG_AP_MODE #ifdef CONFIG_SUPPORT_MULTI_BCN u8 nr_ap_if; /* total interface number of ap /go /mesh / nan mode. */ @@ -1404,7 +1438,7 @@ struct dvobj_priv { #endif /* In /Out Pipe information */ - int RtInPipe[2]; + int RtInPipe[MAX_BULKIN_NUM]; int RtOutPipe[MAX_BULKOUT_NUM]; u8 Queue2Pipe[HW_QUEUE_ENTRY];/* for out pipe mapping */ @@ -1603,6 +1637,25 @@ struct dvobj_priv { #define DEV_U_BW(_dvobj) ((_dvobj)->union_bw) #define DEV_U_OFFSET(_dvobj) ((_dvobj)->union_offset) +#define HWBAND_STA_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_STA_NUM(&((_dvobj)->iface_state))) +#define HWBAND_STA_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_STA_LD_NUM(&((_dvobj)->iface_state))) +#define HWBAND_STA_LG_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_STA_LG_NUM(&((_dvobj)->iface_state))) +#define HWBAND_TDLS_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_TDLS_LD_NUM(&((_dvobj)->iface_state))) +#define HWBAND_AP_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_AP_NUM(&((_dvobj)->iface_state))) +#define HWBAND_AP_STARTING_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_AP_STARTING_NUM(&((_dvobj)->iface_state))) +#define HWBAND_AP_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_AP_LD_NUM(&((_dvobj)->iface_state))) +#define HWBAND_ADHOC_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_ADHOC_NUM(&((_dvobj)->iface_state))) +#define HWBAND_ADHOC_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_ADHOC_LD_NUM(&((_dvobj)->iface_state))) +#define HWBAND_MESH_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_MESH_NUM(&((_dvobj)->iface_state))) +#define HWBAND_MESH_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_MESH_LD_NUM(&((_dvobj)->iface_state))) +#define HWBAND_P2P_DV_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_P2P_DV_NUM(&((_dvobj)->iface_state))) +#define HWBAND_P2P_GC_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_P2P_GC_NUM(&((_dvobj)->iface_state))) +#define HWBAND_P2P_GO_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_P2P_GO_NUM(&((_dvobj)->iface_state))) +#define HWBAND_SCAN_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_SCAN_NUM(&((_dvobj)->iface_state))) +#define HWBAND_WPS_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_WPS_NUM(&((_dvobj)->iface_state))) +#define HWBAND_ROCH_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_ROCH_NUM(&((_dvobj)->iface_state))) +#define HWBAND_MGMT_TX_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_MGMT_TX_NUM(&((_dvobj)->iface_state))) + #define dvobj_to_pwrctl(dvobj) (&(dvobj->pwrctl_priv)) #define pwrctl_to_dvobj(pwrctl) container_of(pwrctl, struct dvobj_priv, pwrctl_priv) #define dvobj_to_macidctl(dvobj) (&(dvobj->macid_ctl)) @@ -1617,6 +1670,7 @@ struct dvobj_priv { #endif /* CONFIG_IOCTL_CFG80211 */ #define dvobj_to_rfctl(dvobj) (&(dvobj->rf_ctl)) #define rfctl_to_dvobj(rfctl) container_of((rfctl), struct dvobj_priv, rf_ctl) +#define dvobj_to_chset(dvobj) (&dvobj_to_rfctl(dvobj)->chset) static inline void dev_set_surprise_removed(struct dvobj_priv *dvobj) { @@ -1724,6 +1778,16 @@ typedef struct loopbackdata { #define ADAPTER_TX_BW_2G(adapter) BW_MODE_2G((adapter)->driver_tx_bw_mode) #define ADAPTER_TX_BW_5G(adapter) BW_MODE_5G((adapter)->driver_tx_bw_mode) +struct _ADAPTER_LINK { + _adapter *adapter; +}; + +#define ALINK_GET_HWBAND(alink) (HW_BAND_0) +#define ALINK_GET_BAND(alink) (rtw_is_2g_ch((alink)->adapter->mlmeextpriv.cur_channel) ? BAND_ON_24G : BAND_ON_5G) +#define ALINK_GET_CH(alink) ((alink)->adapter->mlmeextpriv.cur_channel) +#define ALINK_GET_BW(alink) ((alink)->adapter->mlmeextpriv.cur_bwmode) +#define ALINK_GET_OFFSET(alink) ((alink)->adapter->mlmeextpriv.cur_ch_offset) + struct _ADAPTER { int DriverState;/* for disable driver using module, use dongle to replace module. */ int pid[3];/* process id from UI, 0:wps, 1:hostapd, 2:dhcpcd */ @@ -1902,6 +1966,8 @@ struct _ADAPTER { /*extend to support multi interface*/ u8 iface_id; + struct _ADAPTER_LINK adapter_link; + #ifdef CONFIG_BR_EXT _lock br_ext_lock; /* unsigned int macclone_completed; */ @@ -2043,7 +2109,7 @@ struct _ADAPTER { ((adapter_wdev_data(adapter))->pno_mac_addr) #endif -#define adapter_to_chset(adapter) (adapter_to_rfctl((adapter))->channel_set) +#define adapter_to_chset(adapter) (&adapter_to_rfctl((adapter))->chset) #define mlme_to_adapter(mlme) container_of((mlme), struct _ADAPTER, mlmepriv) #define tdls_info_to_adapter(tdls) container_of((tdls), struct _ADAPTER, tdlsinfo) @@ -2127,6 +2193,16 @@ int rtw_suspend_free_assoc_resource(_adapter *padapter); #ifdef CONFIG_WOWLAN int rtw_suspend_wow(_adapter *padapter); int rtw_resume_process_wow(_adapter *padapter); +#ifdef CONFIG_MDNS_OFFLOAD +int rtw_wow_add_mdns_resp(_adapter *padapter, u8 index, u8 *resp_content, u16 content_len); +int rtw_wow_del_mdns_resp(_adapter *padapter, u8 index); +int rtw_wow_get_mdns_resp_ent(_adapter *padapter, u8 index, struct rtw_mdns_resp_entry **resp_entry); +int rtw_wow_add_mdns_match_crit(_adapter *padapter, u8 index, u16 match_type, u16 name_offset, u16 name_len); +int rtw_wow_del_mdns_match_crit(_adapter *padapter, u8 index); +int rtw_wow_add_mdns_passthru_name(_adapter *padapter, u8 *name, u8 name_len); +void rtw_wow_clr_mdns_passthru_name(_adapter *padapter); +void rtw_wow_get_mdns_passthru_list(_adapter *padapter, struct rtw_mdns_passthru_list **passthru_list); +#endif #endif /* HCI Related header file */ diff --git a/drivers/net/wireless/rtl8822cs/include/drv_types_sdio.h b/drivers/net/wireless/rtl8822cs/include/drv_types_sdio.h index 29006d981..7109295ea 100644 --- a/drivers/net/wireless/rtl8822cs/include/drv_types_sdio.h +++ b/drivers/net/wireless/rtl8822cs/include/drv_types_sdio.h @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2022 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -47,6 +47,8 @@ typedef struct sdio_data { unsigned int clock; unsigned int timing; u8 sd3_bus_mode; + /* MAX size for cmd53 byte mode */ + u16 max_byte_size; #endif #ifdef DBG_SDIO diff --git a/drivers/net/wireless/rtl8822cs/include/hal_btcoex.h b/drivers/net/wireless/rtl8822cs/include/hal_btcoex.h index a2e125ec8..9e9abe3eb 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_btcoex.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_btcoex.h @@ -51,6 +51,7 @@ void hal_btcoex_SpecialPacketNotify(PADAPTER padapter, u8 pktType); void hal_btcoex_IQKNotify(PADAPTER padapter, u8 state); void hal_btcoex_WLRFKNotify(PADAPTER padapter, u8 path, u8 type, u8 state); void hal_btcoex_BtInfoNotify(PADAPTER padapter, u8 length, u8 *tmpBuf); +void hal_btcoex_le_audio_info_notify(PADAPTER padapter, u8 length, u8 *tmpBuf); void hal_btcoex_BtMpRptNotify(PADAPTER padapter, u8 length, u8 *tmpBuf); void hal_btcoex_SuspendNotify(PADAPTER padapter, u8 state); void hal_btcoex_HaltNotify(PADAPTER padapter, u8 do_halt); @@ -93,7 +94,6 @@ u16 hal_btcoex_btreg_write(PADAPTER padapter, u8 type, u16 addr, u16 val); void hal_btcoex_set_rfe_type(u8 type); void hal_btcoex_switchband_notify(u8 under_scan, u8 band_type); void hal_btcoex_WlFwDbgInfoNotify(PADAPTER padapter, u8* tmpBuf, u8 length); -void hal_btcoex_rx_rate_change_notify(PADAPTER padapter, u8 is_data_frame, u8 rate_id); u16 hal_btcoex_btset_testode(PADAPTER padapter, u8 type); #ifdef CONFIG_RF4CE_COEXIST diff --git a/drivers/net/wireless/rtl8822cs/include/hal_btcoex_wifionly.h b/drivers/net/wireless/rtl8822cs/include/hal_btcoex_wifionly.h index 407698baa..0a3c6f434 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_btcoex_wifionly.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_btcoex_wifionly.h @@ -19,20 +19,31 @@ #include /* Define the ICs that support wifi only cfg in coex. codes */ -#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ -|| defined(CONFIG_RTL8723F) +#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) \ + || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) #define CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG 1 #else #define CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG 0 #endif /* Define the ICs that support hal btc common file structure */ -#if defined(CONFIG_RTL8822C) || (defined(CONFIG_RTL8192F) || defined(CONFIG_RTL8723F)&& defined(CONFIG_BT_COEXIST)) +#if (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8192F) \ + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E)) \ + && defined(CONFIG_BT_COEXIST) #define CONFIG_BTCOEX_SUPPORT_BTC_CMN 1 #else #define CONFIG_BTCOEX_SUPPORT_BTC_CMN 0 #endif +#if defined(CONFIG_8822E) +#define CONFIG_BTCOEX_GET_IQK_CNT_FROM_IQK_INFO 1 +#define CONFIG_BTCOEX_SUPPORT_BT_LE_AUDIO 1 +#else +#define CONFIG_BTCOEX_GET_IQK_CNT_FROM_IQK_INFO 0 +#define CONFIG_BTCOEX_SUPPORT_BT_LE_AUDIO 0 +#endif + #if (CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG == 1) typedef enum _WIFIONLY_CHIP_INTERFACE { diff --git a/drivers/net/wireless/rtl8822cs/include/hal_com.h b/drivers/net/wireless/rtl8822cs/include/hal_com.h index a46f95ff6..57ee9fd69 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_com.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_com.h @@ -173,11 +173,15 @@ typedef enum _WAKEUP_REASON{ RX_DISASSOC = 0x04, RX_DEAUTH = 0x08, RX_ARP_REQUEST = 0x09, + RX_EAPREQ_IDENTIFY = 0x0B, FW_DECISION_DISCONNECT = 0x10, RX_MAGIC_PKT = 0x21, RX_UNICAST_PKT = 0x22, RX_PATTERN_PKT = 0x23, RTD3_SSID_MATCH = 0x24, + MDNS_RX_QUERY_PKT = 0x2B, + MDNS_PASSTHRU_FORWARD_ALL = 0x2C, + MDNS_PASSTHRU_LIST_MATCH = 0x2D, RX_REALWOW_V2_WAKEUP_PKT = 0x30, RX_REALWOW_V2_ACK_LOST = 0x31, ENABLE_FAIL_DMA_IDLE = 0x40, @@ -314,6 +318,12 @@ void dump_chip_info(HAL_VERSION ChipVersion); #define TBTT_PROHIBIT_HOLD_TIME 0x80 /* 4ms, unit is 32us*/ #define TBTT_PROHIBIT_HOLD_TIME_STOP_BCN 0x64 /* 3.2ms unit is 32us*/ +/* TBTT hold time for 10M */ +#define TBTT_PROHIBIT_HOLD_TIME_10M 0xc8 + +/* TBTT hold time for 5M */ +#define TBTT_PROHIBIT_HOLD_TIME_5M 0x190 + int hal_spec_init(_adapter *adapter); void dump_hal_spec(void *sel, _adapter *adapter); @@ -328,7 +338,7 @@ u8 hal_largest_bw(_adapter *adapter, u8 in_bw); bool hal_chk_wl_func(_adapter *adapter, u8 func); -void hal_com_config_channel_plan( +void hal_com_parse_channel_plan( PADAPTER padapter, const char *hw_alpha2, u8 hw_chplan, @@ -398,6 +408,7 @@ void rtw_sec_read_cam_ent(_adapter *adapter, u8 id, u8 *ctrl, u8 *mac, u8 *key); void rtw_sec_write_cam_ent(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key); void rtw_sec_clr_cam_ent(_adapter *adapter, u8 id); bool rtw_sec_read_cam_is_gk(_adapter *adapter, u8 id); +u8 rtw_sec_search_camid(_adapter *adapter, u8 key_id, u8 is_gtk); u8 rtw_hal_rcr_check(_adapter *adapter, u32 check_bit); @@ -576,6 +587,16 @@ void update_IOT_info(_adapter *padapter); void rtw_set_rts_bw(_adapter *padapter); #endif/*CONFIG_RTS_FULL_BW*/ +enum ctrl_tx_bcn_reason { + CTRL_TX_BCN_BY_OTHERS = 0, + CTRL_TX_BCN_BY_SCAN = 1, + CTRL_TX_BCN_BY_JOIN = 2, + CTRL_TX_BCN_BY_CORRECT_TSF = 3, +}; + +void ResumeTxBeacon_with_reason(_adapter *padapter, enum ctrl_tx_bcn_reason reason); +void StopTxBeacon_with_reason(_adapter *padapter,enum ctrl_tx_bcn_reason reason); + void ResumeTxBeacon(_adapter *padapter); void StopTxBeacon(_adapter *padapter); diff --git a/drivers/net/wireless/rtl8822cs/include/hal_com_h2c.h b/drivers/net/wireless/rtl8822cs/include/hal_com_h2c.h index 3ab2a4b05..a149ebf7b 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_com_h2c.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_com_h2c.h @@ -46,6 +46,7 @@ enum h2c_cmd { #endif /* CONFIG_MCC_MODE */ H2C_CHNL_SWITCH_OPER_OFFLOAD = 0x1C, H2C_SINGLE_CHANNELSWITCH_V2 = 0x1D, + H2C_TX_PAUSE_DRV_INFO = 0x1E, /* PoweSave Class: 001 */ H2C_SET_PWR_MODE = 0x20, @@ -120,6 +121,10 @@ enum h2c_cmd { #ifdef CONFIG_WOW_KEEP_ALIVE_PATTERN H2C_UDP_KEEPALIVE = 0x90, #endif /*CONFIG_WOW_KEEP_ALIVE_PATTERN*/ + H2C_AOAC_RSVDPAGE4 = 0x91, +#ifdef CONFIG_MDNS_OFFLOAD + H2C_MDNS_OFFLOAD = 0x92, +#endif #ifdef CONFIG_FW_HANDLE_TXBCN H2C_FW_BCN_OFFLOAD = 0xBA, #endif @@ -164,8 +169,8 @@ enum h2c_cmd { #define H2C_MACID_CFG_LEN 7 #define H2C_BTMP_OPER_LEN 5 #define H2C_WOWLAN_LEN 7 -#define H2C_REMOTE_WAKE_CTRL_LEN 3 -#define H2C_AOAC_GLOBAL_INFO_LEN 2 +#define H2C_REMOTE_WAKE_CTRL_LEN 5 +#define H2C_AOAC_GLOBAL_INFO_LEN 4 #define H2C_AOAC_RSVDPAGE_LOC_LEN 7 #define H2C_SCAN_OFFLOAD_CTRL_LEN 4 #define H2C_BT_FW_PATCH_LEN 6 @@ -179,6 +184,9 @@ enum h2c_cmd { #ifdef CONFIG_PNO_SUPPORT #define H2C_NLO_INFO_LEN 2 #endif +#ifdef CONFIG_MDNS_OFFLOAD +#define H2C_MDNS_OFFLOAD_LEN 5 +#endif #ifdef CONFIG_MCC_MODE #define H2C_MCC_CTRL_LEN 7 #ifdef CONFIG_MCC_MODE_V2 @@ -192,7 +200,7 @@ enum h2c_cmd { #define H2C_MCC_IQK_PARAM_LEN 7 #endif /* CONFIG_MCC_MODE */ #ifdef CONFIG_LPS_PG -#ifdef CONFIG_RTL8822C +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) #define H2C_LPS_PG_INFO_LEN 4 #else #define H2C_LPS_PG_INFO_LEN 2 @@ -283,7 +291,7 @@ enum h2c_cmd { #define GET_H2CCMD_MSRRPT_PARM_MIRACAST_SINK(__pH2CCmd) LE_BITS_TO_1BYTE(((u8 *)(__pH2CCmd)), 3, 1) #define GET_H2CCMD_MSRRPT_PARM_ROLE(__pH2CCmd) LE_BITS_TO_1BYTE(((u8 *)(__pH2CCmd)), 4, 4) -#ifdef CONFIG_WAR_OFFLOAD +#if defined(CONFIG_WAR_OFFLOAD) || defined(CONFIG_MDNS_OFFLOAD) #define SET_IPHDR_VERSION(__pHeader, __Value) WriteLE1Byte(((u8 *)(__pHeader)) + 0, __Value) #define SET_IPHDR_DSCP(__pHeader, __Value) WriteLE1Byte(((u8 *)(__pHeader)) + 1, __Value) #define SET_IPHDR_TOTAL_LEN(__pHeader, __Value) WriteLE2Byte(((u8 *)(__pHeader)) + 2, __Value) @@ -304,7 +312,7 @@ enum h2c_cmd { #endif /* CONFIG_WAR_OFFLOAD */ -#ifdef CONFIG_OFFLOAD_MDNS_V6 +#if defined(CONFIG_OFFLOAD_MDNS_V6) || defined(CONFIG_MDNS_OFFLOAD) #define SET_IPHDRV6_VERSION(__pHeader, __Value) SET_BITS_TO_LE_1BYTE(__pHeader, 4, 4, __Value) #define SET_IPHDRV6_TRAFFIC_CLASS(__pHeader, __Value) SET_BITS_TO_LE_2BYTE(__pHeader, 4, 8, __Value) #define SET_IPHDRV6_FLOW_LABEL(__pHeader, __Value) SET_BITS_TO_LE_4BYTE(__pHeader, 12, 20, __Value) @@ -424,6 +432,15 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs); #define SET_H2CCMD_AP_WOWLAN_RSVDPAGE_LOC_ProbeRsp(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) /* _Probersp_RsvdPage 0x13 */ +#ifdef CONFIG_TX_PAUSE_FW_CTRL +/* H2C_TX_PAUSE_DRV_INFO 0x1E */ +#define H2C_TX_PAUSE_DRV_INFO_LEN 2 +#define SET_H2CCMD_TX_PAUSE_DRV_INFO_VALUE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)), 0, 8, (__Value)) +#define SET_H2CCMD_TX_PAUSE_DRV_INFO_MASK(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)) + 1, 0, 8, (__Value)) + +s32 rtw_hal_h2c_tx_pause_ctrl(_adapter *adapter, u8 val); +#endif + #define SET_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) #define SET_H2CCMD_PWRMODE_PARM_RLBM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 4, __Value) #define SET_H2CCMD_PWRMODE_PARM_SMART_PS(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 4, 4, __Value) @@ -607,6 +624,7 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs); #define SET_H2CCMD_WOWLAN_GPIO_INPUT_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 5, 1, __Value) #define SET_H2CCMD_WOWLAN_DEV2HST_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 7, 1, __Value) #define SET_H2CCMD_WOWLAN_TIME_FOR_UPHY_DISABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+5, 0, 8, __Value) +#define SET_H2CCMD_WOWLAN_DISABLE_INBAND(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+6, 0, 1, __Value) #define SET_H2CCMD_WOWLAN_RISE_HST2DEV(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+6, 2, 1, __Value) /* _REMOTE_WAKEUP_CMD_0x81 */ @@ -622,11 +640,22 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs); SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 3, 1, __Value) #define SET_H2CCMD_REMOTE_WAKE_CTRL_ARP_ACTION(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 1, __Value) +#define SET_H2CCMD_REMOTE_WAKE_CTRL_TIM_PARSER_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 2, 1, __Value) #define SET_H2CCMD_REMOTE_WAKE_CTRL_FW_PARSING_UNTIL_WAKEUP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 4, 1, __Value) +#define SET_H2CCMD_REMOTE_WAKE_CTRL_CSA_PARSER_EN(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 3, 1, __Value) /* AOAC_GLOBAL_INFO_0x82 */ #define SET_H2CCMD_AOAC_GLOBAL_INFO_PAIRWISE_ENC_ALG(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) #define SET_H2CCMD_AOAC_GLOBAL_INFO_GROUP_ENC_ALG(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#ifdef CONFIG_IEEE80211W +#define SET_H2CCMD_AOAC_GLOBAL_INFO_11W_GROUP_ENC_ALG(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) +#endif +#ifdef CONFIG_GTK_OL +#define SET_H2CCMD_AOAC_GLOBAL_INFO_IEEE_AKM_SUITE_TYPE(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value) +#endif /* AOAC_RSVDPAGE_LOC_0x83 */ #define SET_H2CCMD_AOAC_RSVDPAGE_LOC_REMOTE_WAKE_CTRL_INFO(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 8, __Value) @@ -648,6 +677,37 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs); #endif #define SET_H2CCMD_AOAC_RSVDPAGE_LOC_AOAC_REPORT(__pH2CCmd, __Value) \ SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 1, 0, 8, __Value) +#ifdef CONFIG_IEEE80211W +#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_IEEE80211W_INFO(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 4, 0, 8, __Value) +#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_SA_QUERY(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 5, 0, 8, __Value) +#endif +#ifdef CONFIG_GTK_OL +#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_INFO_V2(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 6, 0, 8, __Value) +#endif + +/* AOAC_RSVDPAGE_4_0x91 */ +#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_CHSET(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 8, __Value) + +#ifdef CONFIG_MDNS_OFFLOAD +#define SET_H2CCMD_MDNS_OFFLOAD_EN(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 1, __Value) +#define SET_H2CCMD_MDNS_OFFLOAD_STATE(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd), 1, 1, __Value) +#define SET_H2CCMD_MDNS_OFFLOAD_PASSTHRU_BEHAVIOR(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd), 2, 2, __Value) +#define SET_H2CCMD_MDNS_OFFLOAD_LOC_IPV4_HEADER(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 1, 0, 8, __Value) +#define SET_H2CCMD_MDNS_OFFLOAD_LOC_IPV6_HEADER(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 2, 0, 8, __Value) +#define SET_H2CCMD_MDNS_OFFLOAD_LOC_MDNS_PROTOCOL_DATA(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 3, 0, 8, __Value) +#define SET_H2CCMD_MDNS_OFFLOAD_LOC_PASSTHRU_LIST(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 4, 0, 8, __Value) +#endif #ifdef CONFIG_PNO_SUPPORT /* D0_Scan_Offload_Info_0x86 */ @@ -689,7 +749,8 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs); #define SET_H2CCMD_LPSPG_IQK_INFO_LOC(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 3, 0, 8, __Value)/*Loc_IQK_result*/ #endif -#if defined(CONFIG_RTL8822C) && defined(CONFIG_SUPPORT_DYNAMIC_TXPWR) +#if (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) \ + && defined(CONFIG_SUPPORT_DYNAMIC_TXPWR) #define SET_H2CCMD_FW_CRC5_SEARCH_EN(cmd, v) \ SET_BITS_TO_LE_1BYTE((cmd), 0, 1, (v)); #define SET_H2CCMD_FW_CRC5_SEARCH_MACID(cmd, v) \ @@ -732,11 +793,11 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs); #endif /*DBG_FW_DEBUG_MSG_PKT*/ #ifdef DBG_RSVD_PAGE_CFG -#define RSVD_PAGE_CFG(ops, v1, v2, v3) \ - RTW_INFO("=== [RSVD][%s]-NeedPage:%d, TotalPageNum:%d TotalPacketLen:%d ===\n", \ - ops, v1, v2, v3) +#define RSVD_PAGE_CFG(ops, v1, v2) \ + RTW_INFO("=== [RSVD][%s]-NeedPage:%d, TotalPageNum:%d ===\n", \ + ops, v1, v2) #else -#define RSVD_PAGE_CFG(ops, v1, v2, v3) do {} while (0) +#define RSVD_PAGE_CFG(ops, v1, v2) do {} while (0) #endif /* --------------------------------------------------------------------------------------------------------- @@ -758,9 +819,11 @@ typedef struct _RSVDPAGE_LOC { u8 LocNetList; #ifdef CONFIG_GTK_OL u8 LocGTKEXTMEM; + u8 loc_gtk_info_v2; #endif /* CONFIG_GTK_OL */ u8 LocNDPInfo; u8 LocAOACReport; + u8 loc_channel_set; #ifdef CONFIG_PNO_SUPPORT u8 LocPNOInfo; u8 LocScanInfo; @@ -778,7 +841,12 @@ typedef struct _RSVDPAGE_LOC { u8 LocMdnsv6; #endif /* defined(CONFIG_OFFLOAD_MDNS_V4) || defined(CONFIG_OFFLOAD_MDNS_V6) */ #endif /* CONFIG_WAR_OFFLOAD */ - +#ifdef CONFIG_MDNS_OFFLOAD + u8 loc_ipv4_header; + u8 loc_ipv6_header; + u8 loc_mdns_protocol_data; + u8 loc_mdns_passthru_list; +#endif #endif /* CONFIG_WOWLAN */ u8 LocApOffloadBCN; #ifdef CONFIG_P2P_WOWLAN @@ -791,6 +859,10 @@ typedef struct _RSVDPAGE_LOC { #ifdef DBG_FW_DEBUG_MSG_PKT u8 loc_fw_dbg_msg_pkt; #endif /*DBG_FW_DEBUG_MSG_PKT*/ +#ifdef CONFIG_IEEE80211W + u8 loc_ieee80211w_info; + u8 loc_sa_query; +#endif } RSVDPAGE_LOC, *PRSVDPAGE_LOC; struct rsvd_page_cache_t { diff --git a/drivers/net/wireless/rtl8822cs/include/hal_com_phycfg.h b/drivers/net/wireless/rtl8822cs/include/hal_com_phycfg.h index 52bb80532..d1b5cab6f 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_com_phycfg.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_com_phycfg.h @@ -138,12 +138,6 @@ PHY_TxPowerByRateConfiguration( bool phy_chk_ch_setting_consistency(_adapter *adapter, u8 ch); -#ifdef CONFIG_TXPWR_PG_WITH_PWR_IDX -u8 phy_get_pg_txpwr_idx(_adapter *pAdapter - , enum rf_path RFPath, RATE_SECTION rs, u8 ntx_idx - , enum channel_width BandWidth, u8 band, u8 Channel); -#endif - #if CONFIG_TXPWR_LIMIT s8 phy_get_txpwr_lmt(_adapter *adapter , const char *lmt_name @@ -168,7 +162,6 @@ s8 phy_get_txpwr_lmt_sub_chs(_adapter *adapter #define phy_get_txpwr_lmt_sub_chs(adapter, lmt_name, band, bw, rfpath, rate, ntx_idx, cch, opch, reg_max) (GET_HAL_SPEC(adapter)->txgi_max) #endif /* CONFIG_TXPWR_LIMIT */ -void dump_txpwr_tpc_settings(void *sel, _adapter *adapter); void dump_txpwr_antenna_gain(void *sel, _adapter *adapter); s8 phy_get_txpwr_target(_adapter *adapter, u8 rfpath, RATE_SECTION rs, u8 rate, u8 ntx_idx @@ -197,6 +190,8 @@ s8 phy_get_tx_power_final_absolute_value(_adapter *adapter, u8 rfpath, u8 rate, enum channel_width bw, u8 channel); +void rtw_txpwr_hal_update_pwr(struct dvobj_priv *dvobj, enum phl_band_idx band_idx); + s8 PHY_GetTxPowerTrackingOffset( PADAPTER pAdapter, @@ -288,8 +283,11 @@ void dump_hal_txpwr_info_5g(void *sel, _adapter *adapter, u8 rfpath_num, u8 max_ void hal_load_txpwr_info(_adapter *adapter); #endif +void rtw_txpwr_hal_dump_target_info(void *sel, struct dvobj_priv *dvobj); +struct tx_power_ext_info; +bool rtw_txpwr_hal_get_ext_info(struct dvobj_priv *dvobj, struct tx_power_ext_info *info); + #ifdef CONFIG_PROC_DEBUG -void dump_tx_power_ext_info(void *sel, _adapter *adapter); void dump_target_tx_power(void *sel, _adapter *adapter); void dump_tx_power_by_rate(void *sel, _adapter *adapter); #endif diff --git a/drivers/net/wireless/rtl8822cs/include/hal_com_reg.h b/drivers/net/wireless/rtl8822cs/include/hal_com_reg.h index 353a0f505..00ef43d51 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_com_reg.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_com_reg.h @@ -824,10 +824,20 @@ Default: 00b. /* ---------------------------------------------------------------------------- * CAM Config Setting (offset 0x680, 1 byte) * ---------------------------------------------------------------------------- */ +#define CAM_MIC_KEY BIT(5) +#define CAM_GROUP_KEY BIT(6) +#define CAM_EXT_SEC_KEY BIT(9) +#define CAM_MGNT_KEY BIT(10) #define CAM_VALID BIT(15) #define CAM_NOTVALID 0x0000 #define CAM_USEDK BIT(5) +#define CAM_KEY_ID_BIT_MASK 0x03 +#define CAM_SEC_TYPE_BIT_MASK 0x07 + +#define CAM_KEY_ID_BIT_LEN 2 +#define CAM_CTRL_SIZE 2 + #define CAM_CONTENT_COUNT 8 #define CAM_NONE 0x0 @@ -1100,6 +1110,7 @@ Current IOREG MAP * the correct arragement is VO - Bit0, VI - Bit1, BE - Bit2, and BK - Bit3. * 8723 and 88E may be not correct either in the eralier version. Confirmed with DD Tim. * By Bruce, 2011-09-22. */ +#define StopBcnHiMgt BIT(7) #define StopBecon BIT(6) #define StopHigh BIT(5) #define StopMgt BIT(4) @@ -1107,6 +1118,7 @@ Current IOREG MAP #define StopBE BIT(2) #define StopVI BIT(1) #define StopVO BIT(0) +#define StopAll (StopBecon | StopHigh | StopMgt | StopBK | StopBE | StopVI | StopVO) /* ---------------------------------------------------------------------------- * 8192C (RCR) Receive Configuration Register (Offset 0x608, 32 bits) diff --git a/drivers/net/wireless/rtl8822cs/include/hal_data.h b/drivers/net/wireless/rtl8822cs/include/hal_data.h index 0da9f0ccd..6703eeed9 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_data.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_data.h @@ -34,6 +34,9 @@ #include "../hal/hal_dm_acs.h" #endif +#include "../hal/hal_pwr_table.h" +#include "../hal/hal_dfs.h" + /* * For RTL8723 WiFi/BT/GPS multi-function configuration. 2010.10.06. * */ @@ -87,13 +90,6 @@ typedef enum _RT_AMPDU_BRUST_MODE { RT_AMPDU_BRUST_8723B = 7, } RT_AMPDU_BRUST, *PRT_AMPDU_BRUST_MODE; -/* Tx Power Limit Table Size */ -#define MAX_REGULATION_NUM 4 -#define MAX_RF_PATH_NUM_IN_POWER_LIMIT_TABLE 4 -#define MAX_2_4G_BANDWIDTH_NUM 2 -#define MAX_RATE_SECTION_NUM 10 -#define MAX_5G_BANDWIDTH_NUM 4 - #define NUM_OF_TARGET_TXPWR_2G 10 /* CCK:1, OFDM:1, HT:4, VHT:4 */ #define NUM_OF_TARGET_TXPWR_5G 9 /* OFDM:1, HT:4, VHT:4 */ @@ -229,6 +225,16 @@ struct hal_spec_t { u16 macid_txrpt; u8 macid_txrpt_pgsz; + u8 txpause_cap; /* TXPAUSE_CAP_XXX */ + +#ifdef CONFIG_USB_HCI + /* A certain HW is designed to take responsibility for replying 0xEA when */ + /* MAC's clock is off. Because this HW is not designed in some ICs, there */ + /* is a limitation on accessing the off area of mac to causes bus error. */ + /* e.g. driver is into card disable or low clock mode.*/ + u8 mac_off_access_limit_in_low_clock; +#endif + u8 rfpath_num_2g:4; /* used for tx power index path */ u8 rfpath_num_5g:4; /* used for tx power index path */ u8 rf_reg_path_num; @@ -314,38 +320,6 @@ typedef struct hal_p2p_ps_para { u32 noa_count_para; } HAL_P2P_PS_PARA, *PHAL_P2P_PS_PARA; -#define TXPWR_LMT_RS_CCK 0 -#define TXPWR_LMT_RS_OFDM 1 -#define TXPWR_LMT_RS_HT 2 -#define TXPWR_LMT_RS_VHT 3 -#define TXPWR_LMT_RS_NUM 4 - -#define TXPWR_LMT_RS_NUM_2G 4 /* CCK, OFDM, HT, VHT */ -#define TXPWR_LMT_RS_NUM_5G 3 /* OFDM, HT, VHT */ - -#if CONFIG_TXPWR_LIMIT -extern const char *const _txpwr_lmt_rs_str[]; -#define txpwr_lmt_rs_str(rs) (((rs) >= TXPWR_LMT_RS_NUM) ? _txpwr_lmt_rs_str[TXPWR_LMT_RS_NUM] : _txpwr_lmt_rs_str[(rs)]) - -struct txpwr_lmt_ent { - _list list; - - s8 lmt_2g[MAX_2_4G_BANDWIDTH_NUM] - [TXPWR_LMT_RS_NUM_2G] - [CENTER_CH_2G_NUM] - [MAX_TX_COUNT]; - -#if CONFIG_IEEE80211_BAND_5GHZ - s8 lmt_5g[MAX_5G_BANDWIDTH_NUM] - [TXPWR_LMT_RS_NUM_5G] - [CENTER_CH_5G_ALL_NUM] - [MAX_TX_COUNT]; -#endif - - char name[0]; -}; -#endif /* CONFIG_TXPWR_LIMIT */ - typedef struct hal_com_data { HAL_VERSION version_id; RT_MULTI_FUNC MultiFunc; /* For multi-function consideration. */ @@ -391,6 +365,10 @@ typedef struct hal_com_data { BOOLEAN bSWToBW80M; BOOLEAN bChnlBWInitialized; +#ifdef CONFIG_DFS_MASTER + struct rtw_dfs_t dfs_info; +#endif + #ifdef CONFIG_RTW_ACS struct auto_chan_sel acs; #endif @@ -488,6 +466,14 @@ typedef struct hal_com_data { /*u8 EfuseMap[2][HWSET_MAX_SIZE_JAGUAR];*/ EFUSE_HAL EfuseHal; + /* channel plan */ + char eeprom_alpha2[2]; + u8 eeprom_chplan; +#if CONFIG_IEEE80211_BAND_6GHZ + u8 eeprom_chplan_6g; +#endif + bool eeprom_force_hw_chplan; + u8 txpwr_pg_mode; /* enum txpwr_pg_mode */ /*---------------------------------------------------------------------------------*/ @@ -524,10 +510,15 @@ typedef struct hal_com_data { u8 target_txpwr_5g[TX_PWR_BY_RATE_NUM_RF] [NUM_OF_TARGET_TXPWR_5G]; +#if CONFIG_TXPWR_LIMIT + struct txpwr_lmt_tb_t txpwr_lmt_tb; +#endif + bool set_entire_txpwr; -#if defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ - || defined(CONFIG_RTL8723F) +#if defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822B) \ + || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \ + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) u32 txagc_set_buf; #endif @@ -671,7 +662,8 @@ typedef struct hal_com_data { /* SDIO Rx FIFO related. */ /* */ u8 SdioRxFIFOCnt; -#if defined (CONFIG_RTL8822C) || defined (CONFIG_RTL8192F) +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8192F) \ + || defined(CONFIG_RTL8822E) u32 SdioRxFIFOSize; #else u16 SdioRxFIFOSize; @@ -846,6 +838,14 @@ typedef struct hal_com_data { u16 init_reg_0x63a; u32 init_reg_0x63c; #endif + + u8 tx_pause[PAUSE_RSON_MAX]; +#ifdef CONFIG_TX_PAUSE_FW_CTRL + _lock tx_pause_sctx_lock; + struct submit_ctx *tx_pause_sctx; +#endif + + _adapter *adapter; } HAL_DATA_COMMON, *PHAL_DATA_COMMON; typedef struct hal_com_data HAL_DATA_TYPE, *PHAL_DATA_TYPE; @@ -881,6 +881,9 @@ typedef struct hal_com_data HAL_DATA_TYPE, *PHAL_DATA_TYPE; #ifdef RTW_HALMAC int rtw_halmac_deinit_adapter(struct dvobj_priv *); +#ifdef CONFIG_MP_INCLUDED +int rtw_halmac_set_gpio(struct dvobj_priv *d, u8 gpio_id, u8 gpio_enable, u8 gpio_func_offset, u8 gpio_mode); +#endif #endif /* RTW_HALMAC */ #endif /* __HAL_DATA_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/include/hal_ic_cfg.h b/drivers/net/wireless/rtl8822cs/include/hal_ic_cfg.h index b16311d3f..2e9742a74 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_ic_cfg.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_ic_cfg.h @@ -44,6 +44,7 @@ #define RTL8814C_SUPPORT 0 #define RTL8735B_SUPPORT 0 #define RTL8730A_SUPPORT 0 +#define RTL8822E_SUPPORT 0 /*#if (RTL8188E_SUPPORT==1)*/ #define RATE_ADAPTIVE_SUPPORT 0 @@ -82,6 +83,10 @@ #ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX #define CONFIG_TXPWR_PG_WITH_PWR_IDX #endif + + #ifndef CONFIG_TX_PAUSE_FW_CTRL + #define CONFIG_TX_PAUSE_FW_CTRL + #endif #endif #ifdef CONFIG_RTL8821A @@ -141,7 +146,7 @@ #ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX #define CONFIG_TXPWR_PG_WITH_PWR_IDX #endif - #define CONFIG_STOP_RESUME_BCN_BY_TXPAUSE /*to fixed no bcn issue*/ + #define CONFIG_STOP_RESUME_BCN_BY_TXPAUSE 0xFF /* all reason */ /*to fixed no bcn issue*/ #define CONFIG_TSF_SYNC #endif @@ -193,6 +198,10 @@ #ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX #define CONFIG_TXPWR_PG_WITH_PWR_IDX #endif + + #ifndef CONFIG_TX_PAUSE_FW_CTRL + #define CONFIG_TX_PAUSE_FW_CTRL + #endif #endif #ifdef CONFIG_RTL8703B @@ -228,6 +237,8 @@ #ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX #define CONFIG_TXPWR_PG_WITH_PWR_IDX #endif + + #define CONFIG_STOP_RESUME_BCN_BY_TXPAUSE 0x0E /* SCAN | JOIN | CORRECT_TSF */ #endif #ifdef CONFIG_RTL8188GTV @@ -251,6 +262,8 @@ #if defined(CONFIG_USB_HCI) && !defined(CONFIG_FW_OFFLOAD_SET_TXPWR_IDX) #define CONFIG_FW_OFFLOAD_SET_TXPWR_IDX #endif + + #define CONFIG_STOP_RESUME_BCN_BY_TXPAUSE 0x0E /* SCAN | JOIN | CORRECT_TSF */ #endif #ifdef CONFIG_RTL8822B @@ -341,6 +354,10 @@ #ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX #define CONFIG_TXPWR_PG_WITH_PWR_IDX #endif + + #ifndef CONFIG_TX_PAUSE_FW_CTRL + #define CONFIG_TX_PAUSE_FW_CTRL + #endif #endif /* CONFIG_RTL8822B */ #ifdef CONFIG_RTL8822C @@ -450,6 +467,11 @@ #define CONFIG_NB_VALUE RTW_NB_CONFIG_WIDTH_10 /* RTW_NB_CONFIG_NONE / RTW_NB_CONFIG_WIDTH_10 / RTW_NB_CONFIG_WIDTH_5 */ #endif #define CONFIG_SUPPORT_DYNAMIC_TXPWR + + #ifndef CONFIG_TX_PAUSE_FW_CTRL + #define CONFIG_TX_PAUSE_FW_CTRL + #endif + #define CONFIG_FW_OFFLOAD_PARAM_INIT #endif /* CONFIG_RTL8822C */ #ifdef CONFIG_RTL8821C @@ -501,6 +523,10 @@ #endif #define CONFIG_BT_EFUSE_MASK + + #ifndef CONFIG_TX_PAUSE_FW_CTRL + #define CONFIG_TX_PAUSE_FW_CTRL + #endif #endif /*CONFIG_RTL8821C*/ #ifdef CONFIG_RTL8710B @@ -617,6 +643,10 @@ #ifndef CONFIG_TXPWR_PG_WITH_TSSI_OFFSET #define CONFIG_TXPWR_PG_WITH_TSSI_OFFSET #endif + + #ifndef CONFIG_TX_PAUSE_FW_CTRL + #define CONFIG_TX_PAUSE_FW_CTRL + #endif #endif /* CONFIG_RTL8814B */ #ifdef CONFIG_RTL8723F #undef RTL8723F_SUPPORT @@ -719,5 +749,125 @@ #define CONFIG_BT_EFUSE_MASK #define CONFIG_WRITE_BCN_LEN_TO_FW + + #ifndef CONFIG_TX_PAUSE_FW_CTRL + #define CONFIG_TX_PAUSE_FW_CTRL + #endif #endif /* CONFIG_RTL8723F */ + +#ifdef CONFIG_RTL8822E + #undef RTL8822E_SUPPORT + #define RTL8822E_SUPPORT 1 + /*#define DBG_LA_MODE*/ + #ifndef CONFIG_FW_C2H_PKT + #define CONFIG_FW_C2H_PKT + #endif /* CONFIG_FW_C2H_PKT */ + #define RTW_TX_PA_BIAS /* Adjust TX PA Bias from eFuse */ + + #ifdef CONFIG_WOWLAN + #define CONFIG_GTK_OL + /*#define CONFIG_ARP_KEEP_ALIVE*/ + + #ifdef CONFIG_GPIO_WAKEUP + #ifndef WAKEUP_GPIO_IDX + #define WAKEUP_GPIO_IDX 6 /* WIFI Chip Side */ + #endif /* !WAKEUP_GPIO_IDX */ + #endif /* CONFIG_GPIO_WAKEUP */ + #endif /* CONFIG_WOWLAN */ + + #ifdef CONFIG_CONCURRENT_MODE + #define CONFIG_AP_PORT_SWAP + #define CONFIG_FW_MULTI_PORT_SUPPORT + #endif /* CONFIG_CONCURRENT_MODE */ + + /* + * Beamforming related definition + */ + /* Only support new beamforming mechanism */ + #ifdef CONFIG_BEAMFORMING + #define RTW_BEAMFORMING_VERSION_2 + #endif /* CONFIG_BEAMFORMING */ + + #ifdef CONFIG_NO_FW + #ifdef CONFIG_RTW_MAC_HIDDEN_RPT + #undef CONFIG_RTW_MAC_HIDDEN_RPT + #endif + #else + #ifndef CONFIG_RTW_MAC_HIDDEN_RPT + #define CONFIG_RTW_MAC_HIDDEN_RPT + #endif + #endif + + #ifndef DBG_RX_DFRAME_RAW_DATA + #define DBG_RX_DFRAME_RAW_DATA + #endif /* DBG_RX_DFRAME_RAW_DATA */ + + #ifndef RTW_IQK_FW_OFFLOAD + /* #define RTW_IQK_FW_OFFLOAD */ /* need update FW */ + #endif /* RTW_IQK_FW_OFFLOAD */ + #define CONFIG_ADVANCE_OTA + + #ifdef CONFIG_MCC_MODE + #define CONFIG_MCC_MODE_V2 + #define CONFIG_MCC_PHYDM_OFFLOAD + #endif /* CONFIG_MCC_MODE */ + + #if defined(CONFIG_TDLS) && defined(CONFIG_TDLS_CH_SW) + #define CONFIG_TDLS_CH_SW_V2 + #endif + + #ifndef RTW_CHANNEL_SWITCH_OFFLOAD + #ifdef CONFIG_TDLS_CH_SW_V2 + #define RTW_CHANNEL_SWITCH_OFFLOAD + #endif + #endif /* RTW_CHANNEL_SWITCH_OFFLOAD */ + + #if defined(CONFIG_RTW_MESH) && !defined(RTW_PER_CMD_SUPPORT_FW) + /* Supported since fw v22.1 */ + #define RTW_PER_CMD_SUPPORT_FW + #endif /* RTW_PER_CMD_SUPPORT_FW */ + #define CONFIG_SUPPORT_FIFO_DUMP + #define CONFIG_HW_P0_TSF_SYNC + #define CONFIG_BCN_RECV_TIME + + /*#define CONFIG_TCP_CSUM_OFFLOAD_TX*/ + #if defined(CONFIG_TCP_CSUM_OFFLOAD_TX) && !defined(CONFIG_RTW_NETIF_SG) + #define CONFIG_RTW_NETIF_SG + #endif + #define CONFIG_TCP_CSUM_OFFLOAD_RX + + #ifdef CONFIG_P2P_PS + #define CONFIG_P2P_PS_NOA_USE_MACID_SLEEP + #endif + #define CONFIG_RTS_FULL_BW + + #ifdef CONFIG_LPS + #define CONFIG_LPS_ACK /* Supported after FW v07 */ + #define CONFIG_LPS_1T1R /* Supported after FW v07 */ + #endif + + #define CONFIG_BT_EFUSE_MASK + + #ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX + #define CONFIG_TXPWR_PG_WITH_PWR_IDX + #endif + #ifndef CONFIG_TXPWR_PG_WITH_TSSI_OFFSET + #define CONFIG_TXPWR_PG_WITH_TSSI_OFFSET + #endif + + /* #define CONFIG_RTL8822E_XCAP_NEW_POLICY */ + + /*#define CONFIG_NARROWBAND_SUPPORTING*/ + #ifdef CONFIG_NARROWBAND_SUPPORTING + #define CONFIG_NB_VALUE RTW_NB_CONFIG_WIDTH_10 /* RTW_NB_CONFIG_NONE / RTW_NB_CONFIG_WIDTH_10 / RTW_NB_CONFIG_WIDTH_5 */ + #endif + #define CONFIG_SUPPORT_DYNAMIC_TXPWR + + #ifndef CONFIG_TX_PAUSE_FW_CTRL + #define CONFIG_TX_PAUSE_FW_CTRL + #endif +#endif /* CONFIG_RTL8822E */ + + + #endif /*__HAL_IC_CFG_H__*/ diff --git a/drivers/net/wireless/rtl8822cs/include/hal_intf.h b/drivers/net/wireless/rtl8822cs/include/hal_intf.h index e1d839920..9699fe5ed 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_intf.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_intf.h @@ -43,6 +43,7 @@ enum _CHIP_TYPE { RTL8822C, RTL8814B, RTL8723F, + RTL8822E, MAX_CHIP_TYPE }; @@ -471,7 +472,10 @@ typedef enum _RT_EEPROM_TYPE { EEPROM_BOOT_EFUSE, } RT_EEPROM_TYPE, *PRT_EEPROM_TYPE; - +#ifdef CONFIG_HAL_PREINIT +#define rtw_set_hal_pre_inited(adapter, set) (adapter_to_dvobj(adapter)->hal_pre_inited = set) +#define rtw_get_hal_pre_inited(adapter) (adapter_to_dvobj(adapter)->hal_pre_inited) +#endif #define RF_CHANGE_BY_INIT 0 #define RF_CHANGE_BY_IPS BIT28 @@ -531,6 +535,9 @@ typedef enum _HARDWARE_TYPE { HARDWARE_TYPE_RTL8814BS, HARDWARE_TYPE_RTL8723FU, HARDWARE_TYPE_RTL8723FS, + HARDWARE_TYPE_RTL8822EE, + HARDWARE_TYPE_RTL8822EU, + HARDWARE_TYPE_RTL8822ES, HARDWARE_TYPE_MAX, } HARDWARE_TYPE; @@ -668,6 +675,12 @@ typedef enum _HARDWARE_TYPE { #define IS_HARDWARE_TYPE_8723F(_Adapter) \ (IS_HARDWARE_TYPE_8723FU(_Adapter) || IS_HARDWARE_TYPE_8723FS(_Adapter)) +#define IS_HARDWARE_TYPE_8822EE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822EE) +#define IS_HARDWARE_TYPE_8822EU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822EU) +#define IS_HARDWARE_TYPE_8822ES(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822ES) +#define IS_HARDWARE_TYPE_8822E(_Adapter) \ + (IS_HARDWARE_TYPE_8822EE(_Adapter) || IS_HARDWARE_TYPE_8822EU(_Adapter) || IS_HARDWARE_TYPE_8822ES(_Adapter)) + #define IS_HARDWARE_TYPE_JAGUAR2(_Adapter) \ (IS_HARDWARE_TYPE_8814A(_Adapter) || IS_HARDWARE_TYPE_8821B(_Adapter) || IS_HARDWARE_TYPE_8822B(_Adapter) || IS_HARDWARE_TYPE_8821C(_Adapter)) @@ -675,7 +688,7 @@ typedef enum _HARDWARE_TYPE { (IS_HARDWARE_TYPE_JAGUAR(_Adapter) || IS_HARDWARE_TYPE_JAGUAR2(_Adapter)) #define IS_HARDWARE_TYPE_JAGUAR3(_Adapter) \ - (IS_HARDWARE_TYPE_8814B(_Adapter) || IS_HARDWARE_TYPE_8822C(_Adapter)) + (IS_HARDWARE_TYPE_8814B(_Adapter) || IS_HARDWARE_TYPE_8822C(_Adapter) || IS_HARDWARE_TYPE_8822E(_Adapter)) #define IS_HARDWARE_TYPE_JAGUAR3_11N(_Adapter) IS_HARDWARE_TYPE_8723F(_Adapter) @@ -725,6 +738,7 @@ u8 rtw_hal_rfpath_init(_adapter *adapter); u8 rtw_hal_trxnss_init(_adapter *adapter); uint rtw_hal_deinit(_adapter *padapter); +bool rtw_hw_is_init_completed(struct dvobj_priv *dvobj); void rtw_hal_stop(_adapter *padapter); u8 rtw_hal_set_hwreg(PADAPTER padapter, u8 variable, u8 *val); void rtw_hal_get_hwreg(PADAPTER padapter, u8 variable, u8 *val); @@ -885,8 +899,8 @@ s32 rtw_hal_fw_dl(_adapter *padapter, u8 wowlan); void rtw_hal_clear_interrupt(_adapter *padapter); #endif +bool rtw_txpwr_hal_get_pwr_lmt_en(struct dvobj_priv *dvobj); void rtw_hal_set_tx_power_level(_adapter *adapter, u8 channel); -void rtw_hal_update_txpwr_level(_adapter *adapter); void rtw_hal_set_txpwr_done(_adapter *adapter); void rtw_hal_set_tx_power_index(_adapter *adapter, u32 powerindex , enum rf_path rfpath, u8 rate); @@ -897,6 +911,20 @@ u8 rtw_hal_get_tx_power_index(_adapter *adapter, enum rf_path rfpath s8 rtw_hal_get_txpwr_target_extra_bias(_adapter *adapter, enum rf_path rfpath , RATE_SECTION rs, enum MGN_RATE rate, enum channel_width bw, BAND_TYPE band, u8 cch); +enum tx_pause_rson { + PAUSE_RSON_DFS_CSA, /* allow beacon only */ + PAUSE_RSON_DFS_CSA_MG, /* allow beacon and mgnt frame */ + PAUSE_RSON_DFS_CAC, + PAUSE_RSON_TOKEN_BASED_XMIT, + PAUSE_RSON_SCAN, /* scan */ + PAUSE_RSON_JOIN, /* join */ + PAUSE_RSON_CORRECT_TSF, /* correct TSF */ + PAUSE_RSON_OTHER_BCN_CTRL, /* CTRL_TX_BCN_BY_OTHERS */ + PAUSE_RSON_MAX +}; + +int rtw_hal_tx_pause(_adapter *adapter, enum tx_pause_rson rson, bool tx_pause); + u8 rtw_hal_ops_check(_adapter *padapter); #ifdef RTW_HALMAC diff --git a/drivers/net/wireless/rtl8822cs/include/hal_pg.h b/drivers/net/wireless/rtl8822cs/include/hal_pg.h index 2df6a399c..eb77b47aa 100644 --- a/drivers/net/wireless/rtl8822cs/include/hal_pg.h +++ b/drivers/net/wireless/rtl8822cs/include/hal_pg.h @@ -618,8 +618,8 @@ /* RTL8822CU */ #define EEPROM_MAC_ADDR_8822CU 0x157 -#define EEPROM_VID_8822CU 0x100 -#define EEPROM_PID_8822CU 0x102 +#define EEPROM_VID_8822CU 0x150 +#define EEPROM_PID_8822CU 0x152 #define EEPROM_USB_OPTIONAL_FUNCTION0_8822CU 0x104 #define EEPROM_USB_MODE_8822CU 0x06 @@ -781,6 +781,55 @@ /* RTL8723FS */ #define EEPROM_MAC_ADDR_8723FS 0x11A +/* + * ==================================================== + * EEPROM/Efuse PG Offset for 8822E + * ==================================================== + */ +#define EEPROM_TX_PWR_INX_8822E 0x10 +#define EEPROM_ChannelPlan_8822E 0xB8 +#define EEPROM_XTAL_B9_8822E 0xB9 +#define EEPROM_IQK_LCK_8822E 0xBB +#define EEPROM_2G_5G_PA_TYPE_8822E 0xBC +/* PATH A & PATH B */ +#define EEPROM_2G_LNA_TYPE_GAIN_SEL_AB_8822E 0xBD +/* PATH C & PATH D */ +#define EEPROM_2G_LNA_TYPE_GAIN_SEL_CD_8822E 0xBE +/* PATH A & PATH B */ +#define EEPROM_5G_LNA_TYPE_GAIN_SEL_AB_8822E 0xBF +/* PATH C & PATH D */ +#define EEPROM_5G_LNA_TYPE_GAIN_SEL_CD_8822E 0xC0 + +#define EEPROM_RF_BOARD_OPTION_8822E 0xC1 +#define EEPROM_FEATURE_OPTION_8822E 0xC2 +#define EEPROM_RF_BT_SETTING_8822E 0xC3 +#define EEPROM_VERSION_8822E 0xC4 +#define EEPROM_CustomID_8822E 0xC5 +#define EEPROM_TX_BBSWING_2G_8822E 0xC6 +#define EEPROM_TX_PWR_CALIBRATE_RATE_8822E 0xC8 +#define EEPROM_RF_ANTENNA_OPT_8822E 0xC9 +#define EEPROM_RFE_OPTION_8822E 0xCA +#define EEPROM_COUNTRY_CODE_8822E 0xCB +#define EEPROM_THERMAL_METER_A_8822E 0xD0 +#define EEPROM_THERMAL_METER_B_8822E 0xD1 + +#define EEPROM_XTAL_110_8822E 0x110 +#define EEPROM_XTAL_111_8822E 0x111 + +/* RTL8822EU */ +#define EEPROM_MAC_ADDR_8822EU 0x157 +#define EEPROM_VID_8822EU 0x150 +#define EEPROM_PID_8822EU 0x152 +#define EEPROM_USB_OPTIONAL_FUNCTION0_8822EU 0x154 +#define EEPROM_USB_MODE_8822EU 0x06 + +/* RTL8822ES */ +#define EEPROM_MAC_ADDR_8822ES 0x16A + +/* RTL8822EE */ +#define EEPROM_MAC_ADDR_8822EE 0x120 + + /* **************************************************** * EEPROM/Efuse Value Type * **************************************************** */ @@ -854,6 +903,9 @@ #define EEPROM_Default_CrystalCap_B9_8822C 0x3F #define EEPROM_Default_CrystalCap_110_8822C 0x40 #define EEPROM_Default_CrystalCap_111_8822C 0x40 +#define EEPROM_Default_CrystalCap_B9_8822E 0x3F +#define EEPROM_Default_CrystalCap_110_8822E 0x40 +#define EEPROM_Default_CrystalCap_111_8822E 0x40 #define EEPROM_Default_CrystalCap_8814B 0x40 #define EEPROM_Default_CrystalFreq 0x0 #define EEPROM_Default_TxPowerLevel_92C 0x22 @@ -986,6 +1038,7 @@ typedef enum _BT_CoType { BT_RTL8822C = 17, BT_RTL8814B = 18, BT_RTL8723F = 19, + BT_RTL8822E = 20, } BT_CoType, *PBT_CoType; typedef enum _BT_RadioShared { diff --git a/drivers/net/wireless/rtl8822cs/include/ieee80211.h b/drivers/net/wireless/rtl8822cs/include/ieee80211.h index aaafb5c3e..1d94c4a47 100644 --- a/drivers/net/wireless/rtl8822cs/include/ieee80211.h +++ b/drivers/net/wireless/rtl8822cs/include/ieee80211.h @@ -277,8 +277,7 @@ enum NETWORK_TYPE { WIRELESS_11A = BIT(2), /* tx: ofdm only, rx: ofdm only, hw: ofdm only */ WIRELESS_11_24N = BIT(3), /* tx: MCS only, rx: MCS & cck, hw: MCS & cck */ WIRELESS_11_5N = BIT(4), /* tx: MCS only, rx: MCS & ofdm, hw: ofdm only */ - WIRELESS_AUTO = BIT(5), - WIRELESS_11AC = BIT(6), + WIRELESS_11AC = BIT(5), /* Combination */ /* Type for current wireless mode */ @@ -296,16 +295,20 @@ enum NETWORK_TYPE { WIRELESS_11ABGN = (WIRELESS_11A | WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N | WIRELESS_11_5N), WIRELESS_MODE_24G = (WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N), WIRELESS_MODE_5G = (WIRELESS_11A | WIRELESS_11_5N | WIRELESS_11AC), + WIRELESS_MODE_6G = 0, /* TODO */ WIRELESS_MODE_MAX = (WIRELESS_11A | WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N | WIRELESS_11_5N | WIRELESS_11AC), }; #define SUPPORTED_24G_NETTYPE_MSK WIRELESS_MODE_24G #define SUPPORTED_5G_NETTYPE_MSK WIRELESS_MODE_5G +#define SUPPORTED_6G_NETTYPE_MSK WIRELESS_MODE_6G #define IsLegacyOnly(NetType) ((NetType) == ((NetType) & (WIRELESS_11BG | WIRELESS_11A))) #define IsSupported24G(NetType) ((NetType) & SUPPORTED_24G_NETTYPE_MSK ? _TRUE : _FALSE) +#define is_supported_24g IsSupported24G #define is_supported_5g(NetType) ((NetType) & SUPPORTED_5G_NETTYPE_MSK ? _TRUE : _FALSE) +#define is_supported_6g(NetType) ((NetType) & SUPPORTED_6G_NETTYPE_MSK ? _TRUE : _FALSE) #define IsEnableHWCCK(NetType) IsSupported24G(NetType) #define IsEnableHWOFDM(NetType) ((NetType) & (WIRELESS_11G | WIRELESS_11_24N | SUPPORTED_5G_NETTYPE_MSK) ? _TRUE : _FALSE) @@ -314,15 +317,19 @@ enum NETWORK_TYPE { #define IsSupportedRxOFDM(NetType) IsEnableHWOFDM(NetType) #define IsSupportedRxHT(NetType) IsEnableHWOFDM(NetType) +#define HT_MASK WIRELESS_11ABGN +#define VHT_MASK (WIRELESS_11AC | HT_MASK) + #define IsSupportedTxCCK(NetType) ((NetType) & (WIRELESS_11B) ? _TRUE : _FALSE) #define IsSupportedTxOFDM(NetType) ((NetType) & (WIRELESS_11G | WIRELESS_11A) ? _TRUE : _FALSE) -#define is_supported_ht(NetType) ((NetType) & (WIRELESS_11_24N | WIRELESS_11_5N) ? _TRUE : _FALSE) +#define is_highest_support_vht(NetType) (!(NetType & ~VHT_MASK) && ((NetType) & (WIRELESS_11AC)) ? _TRUE : _FALSE) #define is_supported_vht(NetType) ((NetType) & (WIRELESS_11AC) ? _TRUE : _FALSE) +#define is_supported_ht(NetType) ((NetType) & (WIRELESS_11_24N | WIRELESS_11_5N | WIRELESS_11AC) ? _TRUE : _FALSE) +#define is_highest_support_ht(NetType) (!(NetType & ~HT_MASK) && ((NetType) & (WIRELESS_11_24N | WIRELESS_11_5N)) ? _TRUE : _FALSE) - - +#define is_supported_he(net_type) 0 typedef struct ieee_param { u32 cmd; @@ -644,6 +651,7 @@ struct ieee80211_snap_hdr { /* Authentication algorithms */ #define WLAN_AUTH_OPEN 0 #define WLAN_AUTH_SHARED_KEY 1 +#define WLAN_AUTH_FT 2 #define WLAN_AUTH_SAE 3 #define WLAN_AUTH_CHALLENGE_LEN 128 @@ -813,6 +821,7 @@ struct ieee80211_snap_hdr { #define IEEE80211_OFDM_RATE_36MB 0x48 #define IEEE80211_OFDM_RATE_48MB 0x60 #define IEEE80211_OFDM_RATE_54MB 0x6C +#define IEEE80211_BSS_MEMBERSHIP_SELECTOR_SAE_H2E_ONLY 0x7B #define IEEE80211_BASIC_RATE_MASK 0x80 #define IEEE80211_CCK_RATE_1MB_MASK (1<<0) @@ -1859,6 +1868,14 @@ struct rtw_ieee802_11_elems { u8 *tbtx_cap; u8 tbtx_cap_len; #endif +#ifdef CONFIG_STA_MULTIPLE_BSSID + u8 *mbssid; + u8 mbssid_len; + + /* exist in nontransmitted bssid profile */ + u8 *non_tx_bssid_cap; + u8 non_tx_bssid_cap_len; +#endif }; typedef enum { ParseOK = 0, ParseUnknown = 1, ParseFailed = -1 } ParseRes; @@ -1867,6 +1884,12 @@ ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len, struct rtw_ieee802_11_elems *elems, int show_errors); +#ifdef CONFIG_STA_MULTIPLE_BSSID +ParseRes rtw_ieee802_11_override_elems_by_mbssid( + u8 *mbssid_ie, uint mbssid_ie_len, u8 mbssid_idx, struct rtw_ieee802_11_elems *elems + , int show_errors); +#endif + u8 *rtw_set_fixed_ie(unsigned char *pbuf, unsigned int len, unsigned char *source, unsigned int *frlen); u8 *rtw_set_ie(u8 *pbuf, sint index, uint len, const u8 *source, uint *frlen); @@ -1877,7 +1900,10 @@ enum secondary_ch_offset { }; u8 secondary_ch_offset_to_hal_ch_offset(u8 ch_offset); u8 hal_ch_offset_to_secondary_ch_offset(u8 ch_offset); + u8 *rtw_set_ie_tpc_report(u8 *buf, u32 *buf_len, u8 tx_power, u8 link_margin); +void rtw_bss_ex_set_tpc_report(WLAN_BSSID_EX *bss, u8 tx_power, u8 link_margin); + u8 *rtw_set_ie_ch_switch(u8 *buf, u32 *buf_len, u8 ch_switch_mode, u8 new_ch, u8 ch_switch_cnt); u8 *rtw_set_ie_secondary_ch_offset(u8 *buf, u32 *buf_len, u8 secondary_ch_offset); u8 *rtw_set_ie_mesh_ch_switch_parm(u8 *buf, u32 *buf_len, u8 ttl, u8 flags, u16 reason, u16 precedence); @@ -1937,7 +1963,7 @@ int rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, u8 *wpa_ie, u8 rtw_is_wps_ie(u8 *ie_ptr, uint *wps_ielen); u8 *rtw_get_wps_ie_from_scan_queue(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen, enum bss_type frame_type); -u8 *rtw_get_wps_ie(const u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen); +u8 *rtw_get_wps_ie(const u8 *in_ie, int in_len, u8 *wps_ie, uint *wps_ielen); u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id , u8 *buf_attr, u32 *len_attr); u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id , u8 *buf_content, uint *len_content); @@ -1971,15 +1997,10 @@ void dump_ht_cap_ie_content(void *sel, const u8 *buf, u32 buf_len); void dump_wps_ie(void *sel, const u8 *ie, u32 ie_len); #endif /* CONFIG_RTW_DEBUG */ -void rtw_ies_get_chbw(u8 *ies, int ies_len, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 vht); +RTW_FUNC_2G_5G_ONLY void rtw_ies_get_chbw(u8 *ies, int ies_len, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 vht); void rtw_bss_get_chbw(WLAN_BSSID_EX *bss, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 vht); -bool rtw_is_chbw_grouped(u8 ch_a, u8 bw_a, u8 offset_a - , u8 ch_b, u8 bw_b, u8 offset_b); -void rtw_sync_chbw(u8 *req_ch, u8 *req_bw, u8 *req_offset - , u8 *g_ch, u8 *g_bw, u8 *g_offset); - #ifdef CONFIG_P2P u32 rtw_get_p2p_merged_ies_len(u8 *in_ie, u32 in_len); int rtw_p2p_merge_ies(u8 *in_ie, u32 in_len, u8 *merge_ie); @@ -2047,6 +2068,7 @@ u8 rtw_ht_cap_get_tx_nss(u8 *ht_cap); int rtw_action_frame_parse(const u8 *frame, u32 frame_len, u8 *category, u8 *action); const char *action_public_str(u8 action); +u8 key_char2num(u8 ch); u8 key_2char2num(u8 hch, u8 lch); u8 str_2char2num(u8 hch, u8 lch); void macstr2num(u8 *dst, u8 *src); diff --git a/drivers/net/wireless/rtl8822cs/include/mlme_osdep.h b/drivers/net/wireless/rtl8822cs/include/mlme_osdep.h index 131eb0925..d524085fa 100644 --- a/drivers/net/wireless/rtl8822cs/include/mlme_osdep.h +++ b/drivers/net/wireless/rtl8822cs/include/mlme_osdep.h @@ -22,4 +22,21 @@ extern void rtw_report_sec_ie(_adapter *adapter, u8 authmode, u8 *sec_ie); void rtw_reset_securitypriv(_adapter *adapter); +#ifdef CONFIG_DFS_MASTER +void rtw_os_indicate_radar_detected(struct rf_ctl_t *rfctl, u8 band_idx + , u8 cch, enum channel_width bw); +void rtw_os_indicate_cac_started(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw); +void rtw_os_indicate_cac_finished(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw); +void rtw_os_indicate_cac_aborted(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw); +void rtw_os_force_cac_finished(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw); +void rtw_os_indicate_nop_finished(struct rf_ctl_t *rfctl, u8 band_idx + , u8 band, u8 cch, enum channel_width bw); +void rtw_os_indicate_nop_started(struct rf_ctl_t *rfctl, u8 band_idx + , u8 band, u8 cch, enum channel_width bw, bool called_on_cmd_thd); +#endif + #endif /* _MLME_OSDEP_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/osdep_intf.h b/drivers/net/wireless/rtl8822cs/include/osdep_intf.h index 63e535ee5..6e8655fc8 100644 --- a/drivers/net/wireless/rtl8822cs/include/osdep_intf.h +++ b/drivers/net/wireless/rtl8822cs/include/osdep_intf.h @@ -133,7 +133,7 @@ void rtw_drv_free_vir_ifaces(struct dvobj_priv *dvobj); #endif void rtw_ndev_destructor(_nic_hdl ndev); -#ifdef CONFIG_ARP_KEEP_ALIVE +#ifdef CONFIG_ARP_KEEP_ALIVE_GW int rtw_gw_addr_query(_adapter *padapter); #endif diff --git a/drivers/net/wireless/rtl8822cs/include/osdep_service.h b/drivers/net/wireless/rtl8822cs/include/osdep_service.h index 116477c10..eb497eab0 100644 --- a/drivers/net/wireless/rtl8822cs/include/osdep_service.h +++ b/drivers/net/wireless/rtl8822cs/include/osdep_service.h @@ -16,23 +16,24 @@ #define __OSDEP_SERVICE_H_ -#define _FAIL 0 -#define _SUCCESS 1 -#define RTW_RX_HANDLED 2 -#define RTW_RFRAME_UNAVAIL 3 +#define _FAIL 0 +#define _SUCCESS 1 +#define RTW_RX_HANDLED 2 +#define RTW_RFRAME_UNAVAIL 3 #define RTW_RFRAME_PKT_UNAVAIL 4 -#define RTW_RBUF_UNAVAIL 5 +#define RTW_RBUF_UNAVAIL 5 #define RTW_RBUF_PKT_UNAVAIL 6 #define RTW_SDIO_READ_PORT_FAIL 7 -#define RTW_ALREADY 8 -#define RTW_RA_RESOLVING 9 -#define RTW_ORI_NO_NEED 10 -#define RTW_XBUF_UNAVAIL 11 -#define RTW_TX_BALANCE 12 +#define RTW_ALREADY 8 +#define RTW_RA_RESOLVING 9 +#define RTW_ORI_NO_NEED 10 +#define RTW_XBUF_UNAVAIL 11 +#define RTW_TX_BALANCE 12 #define RTW_TX_WAIT_MORE_FRAME 13 -#define RTW_QUEUE_MGMT 14 -#define RTW_NOT_SUPPORT 15 -#define RTW_BUSY 16 +#define RTW_QUEUE_MGMT 14 +#define RTW_NOT_SUPPORT 15 +#define RTW_BUSY 16 +#define RTW_ABORT_LINKING 17 /* #define RTW_STATUS_TIMEDOUT -110 */ @@ -159,6 +160,10 @@ typedef enum mstat_status { MSTAT_FREE } MSTAT_STATUS; +#ifdef CONFIG_PCIE_DMA_COHERENT +struct sk_buff *dev_alloc_skb_coherent(struct pci_dev *pdev, unsigned int size); +#endif + #ifdef DBG_MEM_ALLOC void rtw_mstat_update(const enum mstat_f flags, const MSTAT_STATUS status, u32 sz); void rtw_mstat_dump(void *sel); @@ -243,9 +248,6 @@ void *_rtw_zmalloc(u32 sz); void *_rtw_malloc(u32 sz); void _rtw_mfree(void *pbuf, u32 sz); -#ifdef CONFIG_PCIE_DMA_COHERENT -struct sk_buff *dev_alloc_skb_coherent(struct pci_dev *pdev, unsigned int size); -#endif struct sk_buff *_rtw_skb_alloc(u32 sz); void _rtw_skb_free(struct sk_buff *skb); struct sk_buff *_rtw_skb_copy(const struct sk_buff *skb); @@ -370,6 +372,7 @@ extern s32 _rtw_get_passing_time_ms(systime start); extern s32 _rtw_get_remaining_time_ms(systime end); extern s32 _rtw_get_time_interval_ms(systime start, systime end); extern bool _rtw_time_after(systime a, systime b); +extern bool _rtw_time_after_eq(systime a, systime b); #ifdef DBG_SYSTIME #define rtw_get_current_time() ({systime __stime = _rtw_get_current_time(); __stime;}) @@ -379,8 +382,10 @@ extern bool _rtw_time_after(systime a, systime b); #define rtw_get_passing_time_ms(start) ({u32 __ms = _rtw_get_passing_time_ms(start); typecheck(systime, start); __ms;}) #define rtw_get_remaining_time_ms(end) ({u32 __ms = _rtw_get_remaining_time_ms(end); typecheck(systime, end); __ms;}) #define rtw_get_time_interval_ms(start, end) ({u32 __ms = _rtw_get_time_interval_ms(start, end); typecheck(systime, start); typecheck(systime, end); __ms;}) -#define rtw_time_after(a,b) ({bool __r = _rtw_time_after(a,b); typecheck(systime, a); typecheck(systime, b); __r;}) -#define rtw_time_before(a,b) ({bool __r = _rtw_time_after(b, a); typecheck(systime, a); typecheck(systime, b); __r;}) +#define rtw_time_after(a, b) ({bool __r = _rtw_time_after(a, b); typecheck(systime, a); typecheck(systime, b); __r;}) +#define rtw_time_after_eq(a, b) ({bool __r = _rtw_time_after_eq(a, b); typecheck(systime, a); typecheck(systime, b); __r;}) +#define rtw_time_before(a, b) ({bool __r = _rtw_time_after(b, a); typecheck(systime, a); typecheck(systime, b); __r;}) +#define rtw_time_before_eq(a, b) ({bool __r = _rtw_time_after_eq(b, a); typecheck(systime, a); typecheck(systime, b); __r;}) #else #define rtw_get_current_time() _rtw_get_current_time() #define rtw_systime_to_ms(stime) _rtw_systime_to_ms(stime) @@ -389,8 +394,10 @@ extern bool _rtw_time_after(systime a, systime b); #define rtw_get_passing_time_ms(start) _rtw_get_passing_time_ms(start) #define rtw_get_remaining_time_ms(end) _rtw_get_remaining_time_ms(end) #define rtw_get_time_interval_ms(start, end) _rtw_get_time_interval_ms(start, end) -#define rtw_time_after(a,b) _rtw_time_after(a,b) -#define rtw_time_before(a,b) _rtw_time_after(b,a) +#define rtw_time_after(a, b) _rtw_time_after(a, b) +#define rtw_time_after_eq(a, b) _rtw_time_after(a, b) +#define rtw_time_before(a, b) _rtw_time_after(b, a) +#define rtw_time_before_eq(a, b) _rtw_time_after_eq(b, a) #endif sysptime rtw_sptime_get(void); @@ -675,8 +682,49 @@ static inline int largest_bit_64(u64 bitmask) #define rtw_abs(a) ((a) < 0 ? -(a) : (a)) #define rtw_min(a, b) (((a) > (b)) ? (b) : (a)) #define rtw_max(a, b) (((a) > (b)) ? (a) : (b)) -#define rtw_is_range_a_in_b(hi_a, lo_a, hi_b, lo_b) (((hi_a) <= (hi_b)) && ((lo_a) >= (lo_b))) -#define rtw_is_range_overlap(hi_a, lo_a, hi_b, lo_b) (((hi_a) > (lo_b)) && ((lo_a) < (hi_b))) + +#define rtw_is_range_empty(hi, lo) ((hi) == (lo)) +#define rtw_is_range_a_in_b(a_hi, a_lo, b_hi, b_lo) (((a_hi) <= (b_hi)) && ((a_lo) >= (b_lo))) +#define rtw_is_range_adjacent(a_hi, a_lo, b_hi, b_lo) (((a_hi) == (b_lo)) || ((a_lo) == (b_hi))) +#define rtw_is_range_overlap(a_hi, a_lo, b_hi, b_lo) (((a_hi) > (b_lo)) && ((a_lo) < (b_hi))) + +/* +* Combine two ranges if possible (hilo_s is empty or adjcent/overlap with hilo) +* @hi_s, @lo_s: range parameters to store combined range +* @hi, @lo: range parameters to be combined, if combined, set to 0 (empty) +*/ +#define rtw_range_combine(hi_s, lo_s, hi, lo) \ + do { \ + if (rtw_is_range_empty(hi, lo)) {} \ + else if (rtw_is_range_empty(hi_s, lo_s)) { \ + (hi_s) = (hi); \ + (lo_s) = (lo); \ + (hi) = 0; (lo) = 0; \ + } else if (rtw_is_range_adjacent(hi_s, lo_s, hi, lo) \ + || rtw_is_range_overlap(hi_s, lo_s, hi, lo) \ + ) { \ + (hi_s) = rtw_max(hi_s, hi); \ + (lo_s) = rtw_min(lo_s, lo); \ + (hi) = 0; (lo) = 0; \ + } \ + } while (0) + +/* +* Merge two ranges (no need to adjcent/overlap with each other) +* @hi_s, @lo_s: range parameters to store merged range +* @hi, @lo: range parameters to be merged +*/ +#define rtw_range_merge(hi_s, lo_s, hi, lo) \ + do { \ + if (rtw_is_range_empty(hi, lo)) {} \ + else if (rtw_is_range_empty(hi_s, lo_s)) { \ + (hi_s) = (hi); \ + (lo_s) = (lo); \ + } else { \ + (hi_s) = rtw_max(hi_s, hi); \ + (lo_s) = rtw_min(lo_s, lo); \ + } \ + } while (0) #ifndef MAC_FMT #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" @@ -812,6 +860,9 @@ extern u32 rtw_random32(void); (a)[1] = (u8) ((((u64) (val)) >> 8) & 0xff); \ (a)[0] = (u8) (((u64) (val)) & 0xff); \ } while (0) +#define RTW_GET_LE48_TO_U64(a) ((((u64) (a)[5]) << 40) | (((u64) (a)[4]) << 32) | \ + (((u64) (a)[3]) << 24) | (((u64) (a)[2]) << 16) | \ + (((u64) (a)[1]) << 8) | ((u64) (a)[0])) void rtw_buf_free(u8 **buf, u32 *buf_len); void rtw_buf_update(u8 **buf, u32 *buf_len, const u8 *src, u32 src_len); @@ -886,6 +937,17 @@ int hexstr2bin(const char *hex, u8 *buf, size_t len); int hwaddr_aton_i(const char *txt, u8 *addr); +/* +* ustrs +* str_0 str_1 str_2 str_3 +* | | | | | +* |---------------- ustrs_len ----------------| +*/ +#define ustrs_for_each_str(ustrs, ustrs_len, str) \ + for ((str) = (ustrs); (str) < (ustrs) + (ustrs_len); (str) += strlen(str) + 1) + +void ustrs_add(char **ustrs, int *ustrs_len, const char *str); + /* * Write formatted output to sized buffer */ diff --git a/drivers/net/wireless/rtl8822cs/include/osdep_service_bsd.h b/drivers/net/wireless/rtl8822cs/include/osdep_service_bsd.h index f8f15d6fd..93f002243 100644 --- a/drivers/net/wireless/rtl8822cs/include/osdep_service_bsd.h +++ b/drivers/net/wireless/rtl8822cs/include/osdep_service_bsd.h @@ -691,6 +691,18 @@ static inline void _init_timer(_timer *ptimer, _nic_hdl padapter, void *pfunc, v callout_init(&ptimer->callout, CALLOUT_MPSAFE); } +__inline static int _check_timer_is_active(_timer *ptimer) +{ + rtw_mtx_lock(NULL); + if (callout_pending(&ptimer->callout)) { + /* callout was reset */ + rtw_mtx_unlock(NULL); + return _TRUE; + } + rtw_mtx_unlock(NULL); + return _FALSE; +} + __inline static void _set_timer(_timer *ptimer,u32 delay_time) { if (ptimer->function && ptimer->arg) { diff --git a/drivers/net/wireless/rtl8822cs/include/osdep_service_linux.h b/drivers/net/wireless/rtl8822cs/include/osdep_service_linux.h index 74052dda0..aac49bcd7 100644 --- a/drivers/net/wireless/rtl8822cs/include/osdep_service_linux.h +++ b/drivers/net/wireless/rtl8822cs/include/osdep_service_linux.h @@ -56,6 +56,10 @@ #include #include +#ifdef CONFIG_RTKM +#include "rtw_mem.h" +#endif /* CONFIG_RTKM */ + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) #include #endif @@ -153,6 +157,16 @@ #endif +/* + * MLD related linux kernel patch in + * Android Common Kernel android13-5.15 + * refs/heads/common-android13-5.15-2023-04 (5.15.94) + * refs/heads/android13-5.15-lts (5.15.106) + */ +#if (defined(__ANDROID_COMMON_KERNEL__) && (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 94))) + #define CONFIG_MLD_KERNEL_PATCH +#endif + typedef struct semaphore _sema; typedef spinlock_t _lock; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) @@ -293,27 +307,28 @@ __inline static void _exit_critical_ex(_lock *plock, _irqL *pirqL) spin_unlock_irqrestore(plock, *pirqL); } -__inline static void _enter_critical_bh(_lock *plock, _irqL *pirqL) +__inline static void _rtw_spinlock_bh(_lock *plock) { spin_lock_bh(plock); } -__inline static void _exit_critical_bh(_lock *plock, _irqL *pirqL) +__inline static void _rtw_spinunlock_bh(_lock *plock) { spin_unlock_bh(plock); } -__inline static void enter_critical_bh(_lock *plock) +__inline static int _rtw_spin_is_locked(_lock *plock) { - spin_lock_bh(plock); + return spin_is_locked(plock); } -__inline static void exit_critical_bh(_lock *plock) -{ - spin_unlock_bh(plock); -} +#define enter_critical_bh(plock) _rtw_spinlock_bh(plock) +#define exit_critical_bh(plock) _rtw_spinunlock_bh(plock) -__inline static int _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL) +#define _enter_critical_bh(plock, pirqL) _rtw_spinlock_bh(plock) +#define _exit_critical_bh(plock, pirqL) _rtw_spinunlock_bh(plock) + +__inline static int _rtw_mutex_lock_interruptible(_mutex *pmutex) { int ret = 0; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) @@ -325,8 +340,7 @@ __inline static int _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL) return ret; } - -__inline static int _enter_critical_mutex_lock(_mutex *pmutex, _irqL *pirqL) +__inline static int _rtw_mutex_lock(_mutex *pmutex) { int ret = 0; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) @@ -337,7 +351,7 @@ __inline static int _enter_critical_mutex_lock(_mutex *pmutex, _irqL *pirqL) return ret; } -__inline static void _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL) +__inline static void _rtw_mutex_unlock(_mutex *pmutex) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) mutex_unlock(pmutex); @@ -346,18 +360,22 @@ __inline static void _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL) #endif } +#define _enter_critical_mutex(pmutex, pirqL) _rtw_mutex_lock_interruptible(pmutex) +#define _enter_critical_mutex_lock(pmutex, pirqL) _rtw_mutex_lock(pmutex) +#define _exit_critical_mutex(pmutex, pirqL) _rtw_mutex_unlock(pmutex) + __inline static _list *get_list_head(_queue *queue) { return &(queue->queue); } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) static inline void timer_hdl(struct timer_list *in_timer) #else static inline void timer_hdl(unsigned long cntx) #endif { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) _timer *ptimer = from_timer(ptimer, in_timer, timer); #else _timer *ptimer = (_timer *)cntx; @@ -370,7 +388,7 @@ __inline static void _init_timer(_timer *ptimer, _nic_hdl nic_hdl, void *pfunc, ptimer->function = pfunc; ptimer->arg = cntx; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) timer_setup(&ptimer->timer, timer_hdl, 0); #else /* setup_timer(ptimer, pfunc,(u32)cntx); */ @@ -380,6 +398,11 @@ __inline static void _init_timer(_timer *ptimer, _nic_hdl nic_hdl, void *pfunc, #endif } +__inline static int _check_timer_is_active(_timer *ptimer) +{ + return timer_pending(&ptimer->timer); +} + __inline static void _set_timer(_timer *ptimer, u32 delay_time) { mod_timer(&ptimer->timer , (jiffies + (delay_time * HZ / 1000))); @@ -570,7 +593,30 @@ extern struct net_device *rtw_alloc_etherdev(int sizeof_priv); #define STRUCT_PACKED __attribute__ ((packed)) #ifndef fallthrough -#define fallthrough do {} while (0) +#if __GNUC__ >= 5 || defined(__clang__) +#ifndef __has_attribute +#define __has_attribute(x) 0 +#endif +#if __has_attribute(__fallthrough__) +#define fallthrough __attribute__((__fallthrough__)) +#endif +#endif +#ifndef fallthrough +#define fallthrough do {} while (0) /* fallthrough */ +#endif +#endif + +#ifndef static_assert +#define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, #expr) +#define __static_assert(expr, msg, ...) _Static_assert(expr, msg) +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0)) +#define dev_addr_mod(dev, offset, addr, len) _rtw_memcpy(&dev->dev_addr[offset], addr, len) +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0)) +#define dev_addr_mod(dev, offset, addr, len) _rtw_memcpy(&dev->dev_addr[offset], addr, len) #endif #endif /* __OSDEP_LINUX_SERVICE_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/pci_hal.h b/drivers/net/wireless/rtl8822cs/include/pci_hal.h index 6eac311a1..d2b8bc94c 100644 --- a/drivers/net/wireless/rtl8822cs/include/pci_hal.h +++ b/drivers/net/wireless/rtl8822cs/include/pci_hal.h @@ -55,6 +55,11 @@ void rtl8814be_set_hal_ops(PADAPTER padapter); #endif +#ifdef CONFIG_RTL8822E + void rtl8822ee_set_hal_ops(PADAPTER padapter); +#endif + + u8 rtw_set_hal_ops(_adapter *padapter); #endif /* __PCIE_HAL_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/include/pci_ops.h b/drivers/net/wireless/rtl8822cs/include/pci_ops.h index 7b95fde04..d9010c3f0 100644 --- a/drivers/net/wireless/rtl8822cs/include/pci_ops.h +++ b/drivers/net/wireless/rtl8822cs/include/pci_ops.h @@ -21,9 +21,9 @@ u32 rtl8188ee_free_desc_ring(_adapter *padapter); void rtl8188ee_reset_desc_ring(_adapter *padapter); int rtl8188ee_interrupt(PADAPTER Adapter); - void rtl8188ee_xmit_tasklet(void *priv); - void rtl8188ee_recv_tasklet(void *priv); - void rtl8188ee_prepare_bcn_tasklet(void *priv); + void rtl8188ee_xmit_tasklet(unsigned long priv); + void rtl8188ee_recv_tasklet(unsigned long priv); + void rtl8188ee_prepare_bcn_tasklet(unsigned long priv); void rtl8188ee_set_intf_ops(struct _io_ops *pops); void rtw8188ee_unmap_beacon_icf(_adapter *padapter); #endif @@ -33,9 +33,9 @@ u32 rtl8812ae_free_desc_ring(_adapter *padapter); void rtl8812ae_reset_desc_ring(_adapter *padapter); int rtl8812ae_interrupt(PADAPTER Adapter); - void rtl8812ae_xmit_tasklet(void *priv); - void rtl8812ae_recv_tasklet(void *priv); - void rtl8812ae_prepare_bcn_tasklet(void *priv); + void rtl8812ae_xmit_tasklet(unsigned long priv); + void rtl8812ae_recv_tasklet(unsigned long priv); + void rtl8812ae_prepare_bcn_tasklet(unsigned long priv); void rtl8812ae_set_intf_ops(struct _io_ops *pops); void rtw8812ae_unmap_beacon_icf(_adapter *padapter); #endif @@ -44,8 +44,8 @@ u32 rtl8192ee_init_desc_ring(_adapter *padapter); u32 rtl8192ee_free_desc_ring(_adapter *padapter); void rtl8192ee_reset_desc_ring(_adapter *padapter); - void rtl8192ee_recv_tasklet(void *priv); - void rtl8192ee_prepare_bcn_tasklet(void *priv); + void rtl8192ee_recv_tasklet(unsigned long priv); + void rtl8192ee_prepare_bcn_tasklet(unsigned long priv); int rtl8192ee_interrupt(PADAPTER Adapter); void rtl8192ee_set_intf_ops(struct _io_ops *pops); void rtw8192ee_unmap_beacon_icf(_adapter *padapter); @@ -56,8 +56,8 @@ u32 rtl8192fe_free_desc_ring(_adapter *padapter); void rtl8192fe_reset_desc_ring(_adapter *padapter); int rtl8192fe_interrupt(PADAPTER Adapter); - void rtl8192fe_recv_tasklet(void *priv); - void rtl8192fe_prepare_bcn_tasklet(void *priv); + void rtl8192fe_recv_tasklet(unsigned long priv); + void rtl8192fe_prepare_bcn_tasklet(unsigned long priv); void rtl8192fe_set_intf_ops(struct _io_ops *pops); u8 check_tx_desc_resource(_adapter *padapter, int prio); void rtl8192fe_unmap_beacon_icf(PADAPTER Adapter); @@ -68,8 +68,8 @@ u32 rtl8723be_free_desc_ring(_adapter *padapter); void rtl8723be_reset_desc_ring(_adapter *padapter); int rtl8723be_interrupt(PADAPTER Adapter); - void rtl8723be_recv_tasklet(void *priv); - void rtl8723be_prepare_bcn_tasklet(void *priv); + void rtl8723be_recv_tasklet(unsigned long priv); + void rtl8723be_prepare_bcn_tasklet(unsigned long priv); void rtl8723be_set_intf_ops(struct _io_ops *pops); void rtl8723be_unmap_beacon_icf(PADAPTER Adapter); #endif @@ -79,8 +79,8 @@ u32 rtl8723de_free_desc_ring(_adapter *padapter); void rtl8723de_reset_desc_ring(_adapter *padapter); int rtl8723de_interrupt(PADAPTER Adapter); - void rtl8723de_recv_tasklet(void *priv); - void rtl8723de_prepare_bcn_tasklet(void *priv); + void rtl8723de_recv_tasklet(unsigned long priv); + void rtl8723de_prepare_bcn_tasklet(unsigned long priv); void rtl8723de_set_intf_ops(struct _io_ops *pops); u8 check_tx_desc_resource(_adapter *padapter, int prio); void rtl8723de_unmap_beacon_icf(PADAPTER Adapter); @@ -91,9 +91,9 @@ u32 rtl8814ae_free_desc_ring(_adapter *padapter); void rtl8814ae_reset_desc_ring(_adapter *padapter); int rtl8814ae_interrupt(PADAPTER Adapter); - void rtl8814ae_xmit_tasklet(void *priv); - void rtl8814ae_recv_tasklet(void *priv); - void rtl8814ae_prepare_bcn_tasklet(void *priv); + void rtl8814ae_xmit_tasklet(unsigned long priv); + void rtl8814ae_recv_tasklet(unsigned long priv); + void rtl8814ae_prepare_bcn_tasklet(unsigned long priv); void rtl8814ae_set_intf_ops(struct _io_ops *pops); void rtl8814ae_unmap_beacon_icf(PADAPTER Adapter); #endif @@ -113,4 +113,9 @@ #ifdef CONFIG_RTL8814B void rtl8814be_set_intf_ops(struct _io_ops *pops); #endif + +#ifdef CONFIG_RTL8822E + void rtl8822ee_set_intf_ops(struct _io_ops *pops); +#endif + #endif diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8188e_xmit.h b/drivers/net/wireless/rtl8822cs/include/rtl8188e_xmit.h index 9772f1258..5f69a73cf 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8188e_xmit.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8188e_xmit.h @@ -281,7 +281,7 @@ void fill_txdesc_force_bmc_camid(struct pkt_attrib *pattrib, struct tx_desc *ptx s32 rtl8188ee_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); #endif s32 rtl8188ee_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); - void rtl8188ee_xmit_tasklet(void *priv); + void rtl8188ee_xmit_tasklet(unsigned long priv); #endif diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8188f_recv.h b/drivers/net/wireless/rtl8822cs/include/rtl8188f_recv.h index 44b51fdbb..854e215cc 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8188f_recv.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8188f_recv.h @@ -23,8 +23,11 @@ #else #ifdef CONFIG_PLATFORM_HISILICON #define MAX_RECVBUF_SZ (16384) /* 16k */ - #else + #elif defined(CONFIG_PLATFORM_I386_PC) #define MAX_RECVBUF_SZ (32768) /* 32k */ + #else + /* Avoid the Synopsys USB host receive buffer size limit */ + #define MAX_RECVBUF_SZ (20480) /* 20k */ #endif /* #define MAX_RECVBUF_SZ (20480) */ /* 20K */ /* #define MAX_RECVBUF_SZ (10240) */ /* 10K */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8192e_recv.h b/drivers/net/wireless/rtl8822cs/include/rtl8192e_recv.h index c19a98080..329261780 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8192e_recv.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8192e_recv.h @@ -21,9 +21,7 @@ #ifdef CONFIG_MINIMAL_MEMORY_USAGE #define MAX_RECVBUF_SZ (4000) /* about 4K */ #else - #ifdef CONFIG_PREALLOC_RX_SKB_BUFFER - #define MAX_RECVBUF_SZ (rtw_rtkm_get_buff_size()) /*depend rtkm*/ - #elif defined(CONFIG_PLATFORM_HISILICON) + #ifdef CONFIG_PLATFORM_HISILICON #define MAX_RECVBUF_SZ (16384) /* 16k */ #else #define MAX_RECVBUF_SZ (32768) /* 32k */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8192e_xmit.h b/drivers/net/wireless/rtl8822cs/include/rtl8192e_xmit.h index e0573ce82..bd3bb477b 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8192e_xmit.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8192e_xmit.h @@ -379,7 +379,7 @@ void rtl8192e_cal_txdesc_chksum(u8 *ptxdesc); void rtl8192ee_xmitframe_resume(_adapter *padapter); s32 rtl8192ee_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe); s32 rtl8192ee_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe); - void rtl8192ee_xmit_tasklet(void *priv); + void rtl8192ee_xmit_tasklet(unsigned long priv); #endif #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8192f_xmit.h b/drivers/net/wireless/rtl8822cs/include/rtl8192f_xmit.h index e0b84c2aa..4b94a8028 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8192f_xmit.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8192f_xmit.h @@ -529,7 +529,7 @@ void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc); s32 rtl8192fe_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); #endif s32 rtl8192fe_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); - void rtl8192fe_xmit_tasklet(void *priv); + void rtl8192fe_xmit_tasklet(unsigned long priv); #endif u8 BWMapping_8192F(PADAPTER Adapter, struct pkt_attrib *pattrib); diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8723b_xmit.h b/drivers/net/wireless/rtl8822cs/include/rtl8723b_xmit.h index 51691e931..5bcfb8a69 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8723b_xmit.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8723b_xmit.h @@ -333,7 +333,7 @@ void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc); s32 rtl8723be_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); #endif s32 rtl8723be_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); - void rtl8723be_xmit_tasklet(void *priv); + void rtl8723be_xmit_tasklet(unsigned long priv); #endif u8 BWMapping_8723B(PADAPTER Adapter, struct pkt_attrib *pattrib); diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8723d_xmit.h b/drivers/net/wireless/rtl8822cs/include/rtl8723d_xmit.h index 6f84515ef..48be0c62e 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8723d_xmit.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8723d_xmit.h @@ -521,7 +521,7 @@ void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc); s32 rtl8723de_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); #endif s32 rtl8723de_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); - void rtl8723de_xmit_tasklet(void *priv); + void rtl8723de_xmit_tasklet(unsigned long priv); #endif u8 BWMapping_8723D(PADAPTER Adapter, struct pkt_attrib *pattrib); diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8723f_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8723f_hal.h index d39e9ac07..f03dd0b05 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8723f_hal.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8723f_hal.h @@ -220,11 +220,28 @@ #define RF_0x52 0x52 #define RF_WeLut_Jaguar 0xEF /* rtl8723f_phy.c */ +#ifdef CONFIG_FW_HANDLE_TXBCN +/* + * CONFIG_FW_HANDLE_TXBCN + */ +#define REG_ATIMWND REG_ATIMWND_GROUP1_8723F +#define REG_ATIMWND1_V1 REG_ATIMWND_GROUP2_8723F +#define REG_ATIMWND2 REG_ATIMWND_GROUP3_8723F +#define REG_ATIMWND3 REG_ATIMWND_GROUP4_8723F +#define REG_HIQ_NO_LMT_EN REG_HIQ_NO_LMT_EN_V2_8723F +#define REG_MBSSID_CTRL REG_MBID_BCNQ_EN_8723F + +/* REG_DWBCN0_CTRL [15:8] BIT_BCN_HEAD [16] BIT_BCN_VALID*/ +#define REG_FIFOPAGE_CTRL_2 (REG_DWBCN0_CTRL + 1) +#define BIT_BCN_VALID_V1 BIT(8) +#define BIT_MASK_BCN_HEAD_1_V1 0xff +#endif /* CONFIG_FW_HANDLE_TXBCN */ + /* rtw_lps_state_chk() @hal_com.c */ #define BIT_PWRBIT_OW_EN BIT_WMAC_TCR_PWRMGT_CTL_8723F -/* -* General Functions +/* +* General Functions */ void rtl8723f_init_hal_spec(PADAPTER); /* hal/hal_com.c */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8723fu_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8723fu_hal.h index 69de77600..5a54ed745 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8723fu_hal.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8723fu_hal.h @@ -40,8 +40,11 @@ #elif defined(CONFIG_PLATFORM_HISILICON) /* use 16k to workaround for HISILICON platform */ #define MAX_RECVBUF_SZ (16384) - #else + #elif defined(CONFIG_PLATFORM_I386_PC) #define MAX_RECVBUF_SZ (32768) + #else + /* Avoid the Synopsys USB host receive buffer size limit */ + #define MAX_RECVBUF_SZ (20480) /* 20k */ #endif #else #define MAX_RECVBUF_SZ (4000) diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8812a_recv.h b/drivers/net/wireless/rtl8822cs/include/rtl8812a_recv.h index 5fa06e512..8901ab0eb 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8812a_recv.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8812a_recv.h @@ -19,10 +19,11 @@ #ifndef MAX_RECVBUF_SZ #ifndef CONFIG_MINIMAL_MEMORY_USAGE - #ifdef CONFIG_PREALLOC_RX_SKB_BUFFER - #define MAX_RECVBUF_SZ (rtw_rtkm_get_buff_size()) /*depend rtkm*/ - #else + #ifdef CONFIG_PLATFORM_I386_PC #define MAX_RECVBUF_SZ (32768) /*32k*/ + #else + /* Avoid the Synopsys USB host receive buffer size limit */ + #define MAX_RECVBUF_SZ (20480) /* 20k */ #endif /* #define MAX_RECVBUF_SZ (24576) */ /* 24k */ /* #define MAX_RECVBUF_SZ (20480) */ /* 20K */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8812a_xmit.h b/drivers/net/wireless/rtl8822cs/include/rtl8812a_xmit.h index f115d0f61..4b0c821eb 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8812a_xmit.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8812a_xmit.h @@ -346,7 +346,7 @@ s32 rtl8812ae_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe); s32 rtl8812ae_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); #endif s32 rtl8812ae_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); -void rtl8812ae_xmit_tasklet(void *priv); +void rtl8812ae_xmit_tasklet(unsigned long priv); #ifdef CONFIG_XMIT_THREAD_MODE s32 rtl8812ae_xmit_buf_handler(_adapter *padapter); diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8814a_xmit.h b/drivers/net/wireless/rtl8822cs/include/rtl8814a_xmit.h index 8901fdeab..396f48588 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8814a_xmit.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8814a_xmit.h @@ -292,7 +292,7 @@ void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc); s32 rtl8814ae_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); #endif s32 rtl8814ae_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); - void rtl8814ae_xmit_tasklet(void *priv); + void rtl8814ae_xmit_tasklet(unsigned long priv); #ifdef CONFIG_XMIT_THREAD_MODE s32 rtl8814ae_xmit_buf_handler(_adapter *padapter); #endif diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8821c_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8821c_hal.h index 41d222ef3..ad8f96333 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8821c_hal.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8821c_hal.h @@ -46,7 +46,12 @@ /* 8821C - RX FIFO :16K ,for RX agg DMA mode = 16K, Rx agg USB mode could large than 16k*/ /* #define MAX_RECVBUF_SZ (16384 + RX_FIFO_EXPANDING)*/ /* For Max throughput issue , need to use USB AGG mode to replace DMA AGG mode*/ + #ifdef CONFIG_PLATFORM_I386_PC #define MAX_RECVBUF_SZ (32768) + #else + /* Avoid the Synopsys USB host receive buffer size limit */ + #define MAX_RECVBUF_SZ (20480) /*20K*/ + #endif /*#define MAX_RECVBUF_SZ_8821C (24576)*/ /* 24k*/ /*#define MAX_RECVBUF_SZ_8821C (20480)*/ /*20K*/ diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8822bu_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8822bu_hal.h index b040f3b33..e35c20431 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8822bu_hal.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8822bu_hal.h @@ -37,11 +37,14 @@ #ifndef CONFIG_MINIMAL_MEMORY_USAGE #ifdef CONFIG_PLATFORM_NOVATEK_NT72668 #define MAX_RECVBUF_SZ (15360) /* 15k */ - #elif defined(CONFIG_PLATFORM_HISILICON) || defined(CONFIG_PLATFORM_ARM_RTD299X) + #elif defined(CONFIG_PLATFORM_HISILICON) || defined(CONFIG_PLATFORM_ARM_RTD299X) /* use 16k to workaround for HISILICON and RTK TV platform */ #define MAX_RECVBUF_SZ (16384) - #else + #elif defined(CONFIG_PLATFORM_I386_PC) #define MAX_RECVBUF_SZ (32768) + #else + /* Avoid the Synopsys USB host receive buffer size limit */ + #define MAX_RECVBUF_SZ (20480) #endif #else #define MAX_RECVBUF_SZ (4000) diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8822c_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8822c_hal.h index 0230d934f..64e3d57d0 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8822c_hal.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8822c_hal.h @@ -37,7 +37,9 @@ #ifdef CONFIG_PCI_HCI #define MAX_RECVBUF_SZ 12288 /* 12KB */ #else +#ifndef MAX_RECVBUF_SZ #define MAX_RECVBUF_SZ 24576 /* 24KB, TX: 256KB */ +#endif #endif /* !CONFIG_PCI_HCI */ #endif /* !CONFIG_SUPPORT_TRX_SHARED */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8822cu_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8822cu_hal.h index a0accf339..c90c02d2c 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtl8822cu_hal.h +++ b/drivers/net/wireless/rtl8822cs/include/rtl8822cu_hal.h @@ -40,8 +40,11 @@ #elif defined(CONFIG_PLATFORM_HISILICON) || defined(CONFIG_PLATFORM_ARM_RTD299X) /* use 16k to workaround for HISILICON and RTK TV platform */ #define MAX_RECVBUF_SZ (16384) - #else + #elif defined(CONFIG_PLATFORM_I386_PC) #define MAX_RECVBUF_SZ (32768) + #else + /* Avoid the Synopsys USB host receive buffer size limit */ + #define MAX_RECVBUF_SZ (20480) /* 20k */ #endif #else #define MAX_RECVBUF_SZ (4000) diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8822e_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8822e_hal.h new file mode 100644 index 000000000..e1c623308 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/include/rtl8822e_hal.h @@ -0,0 +1,248 @@ +/****************************************************************************** + * + * Copyright(c) 2015 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef _RTL8822E_HAL_H_ +#define _RTL8822E_HAL_H_ + +#include /* BIT(x) */ +#include /* PADAPTER */ +#include "../hal/halmac/halmac_api.h" /* MAC REG definition */ + +#ifdef CONFIG_SUPPORT_TRX_SHARED +#define DEF_RECVBUF_SZ 24576 /* RX 24K */ +#if (DFT_TRX_SHARE_MODE == 1) +#define RX_FIFO_EXPANDING 40960 /* RX= 24K+40K=64K , TX=256K-40K=216K */ +#elif (DFT_TRX_SHARE_MODE == 2) +#define RX_FIFO_EXPANDING 65536 /* RX= 24K+40K+24=88K , TX=256K-40K-24K=192K */ +#elif (DFT_TRX_SHARE_MODE ==3) +#define RX_FIFO_EXPANDING 106496 /* RX= 24K+40K+24+40K=128K , TX=256K-40K-24K-40K=152K */ +#elif (DFT_TRX_SHARE_MODE ==4) +#define RX_FIFO_EXPANDING 131072 /* RX= 24K+40K+24+40K+24K=128K , TX=256K-40K-24K-40K-24K=128K */ +#else +#define RX_FIFO_EXPANDING 0 +#endif +#define MAX_RECVBUF_SZ (DEF_RECVBUF_SZ + RX_FIFO_EXPANDING) +#else /* !CONFIG_SUPPORT_TRX_SHARED */ +#ifdef CONFIG_PCI_HCI +#define MAX_RECVBUF_SZ 12288 /* 12KB */ +#else +#ifndef MAX_RECVBUF_SZ +#define MAX_RECVBUF_SZ 24576 /* 24KB, TX: 256KB */ +#endif +#endif /* !CONFIG_PCI_HCI */ +#endif /* !CONFIG_SUPPORT_TRX_SHARED */ + +/* + * MAC Register definition + */ +#define REG_AFE_XTAL_CTRL REG_AFE_CTRL1_8822E /* hal_com.c & phydm */ +#define REG_LEDCFG0 REG_LED_CFG_8822E /* rtw_mp.c */ +#define MSR (REG_CR_8822E + 2) /* rtw_mp.c & hal_com.c */ +#define MSR1 REG_CR_EXT_8822E /* rtw_mp.c & hal_com.c */ +#define REG_C2HEVT_MSG_NORMAL 0x1A0 /* hal_com.c */ +#define REG_C2HEVT_CLEAR 0x1AF /* hal_com.c */ +#define REG_BCN_CTRL_1 REG_BCN_CTRL_CLINT0_8822E /* hal_com.c */ + +#define REG_WOWLAN_WAKE_REASON 0x01C7 /* hal_com.c */ +#define REG_GPIO_PIN_CTRL_2 REG_GPIO_EXT_CTRL_8822E /* hal_com.c */ + +/* RXERR_RPT, for rtw_mp.c */ +#define RXERR_TYPE_OFDM_PPDU 0 +#define RXERR_TYPE_OFDM_FALSE_ALARM 2 +#define RXERR_TYPE_OFDM_MPDU_OK 0 +#define RXERR_TYPE_OFDM_MPDU_FAIL 1 +#define RXERR_TYPE_CCK_PPDU 3 +#define RXERR_TYPE_CCK_FALSE_ALARM 5 +#define RXERR_TYPE_CCK_MPDU_OK 3 +#define RXERR_TYPE_CCK_MPDU_FAIL 4 +#define RXERR_TYPE_HT_PPDU 8 +#define RXERR_TYPE_HT_FALSE_ALARM 9 +#define RXERR_TYPE_HT_MPDU_TOTAL 6 +#define RXERR_TYPE_HT_MPDU_OK 6 +#define RXERR_TYPE_HT_MPDU_FAIL 7 +#define RXERR_TYPE_RX_FULL_DROP 10 + +#define RXERR_COUNTER_MASK BIT_MASK_RPT_COUNTER_8822E +#define RXERR_RPT_RST BIT_RXERR_RPT_RST_8822E +#define _RXERR_RPT_SEL(type) (BIT_RXERR_RPT_SEL_V1_3_0_8822E(type) \ + | ((type & 0x10) ? BIT_RXERR_RPT_SEL_V1_4_8822E : 0)) + +/* + * BB Register definition + */ +#define rPMAC_Reset 0x100 /* hal_mp.c */ + +#define rFPGA0_RFMOD 0x800 +#define rFPGA0_TxInfo 0x804 +#define rOFDMCCKEN_Jaguar 0x808 /* hal_mp.c */ +#define rFPGA0_TxGainStage 0x80C /* phydm only */ +#define rFPGA0_XA_HSSIParameter1 0x820 /* hal_mp.c */ +#define rFPGA0_XA_HSSIParameter2 0x824 /* hal_mp.c */ +#define rFPGA0_XB_HSSIParameter1 0x828 /* hal_mp.c */ +#define rFPGA0_XB_HSSIParameter2 0x82C /* hal_mp.c */ +#define rTxAGC_B_Rate18_06 0x830 +#define rTxAGC_B_Rate54_24 0x834 +#define rTxAGC_B_CCK1_55_Mcs32 0x838 +#define rCCAonSec_Jaguar 0x838 /* hal_mp.c */ +#define rTxAGC_B_Mcs03_Mcs00 0x83C +#define rTxAGC_B_Mcs07_Mcs04 0x848 +#define rTxAGC_B_Mcs11_Mcs08 0x84C +#define rFPGA0_XA_RFInterfaceOE 0x860 +#define rFPGA0_XB_RFInterfaceOE 0x864 +#define rTxAGC_B_Mcs15_Mcs12 0x868 +#define rTxAGC_B_CCK11_A_CCK2_11 0x86C +#define rFPGA0_XAB_RFInterfaceSW 0x870 +#define rFPGA0_XAB_RFParameter 0x878 +#define rFPGA0_AnalogParameter4 0x88C /* hal_mp.c & phydm */ +#define rFPGA0_XB_LSSIReadBack 0x8A4 /* phydm */ +#define rHSSIRead_Jaguar 0x8B0 /* RF read addr (rtl8822e_phy.c) */ + +#define rC_TxScale_Jaguar2 0x181C /* Pah_C TX scaling factor (hal_mp.c) */ +#define rC_IGI_Jaguar2 0x1850 /* Initial Gain for path-C (hal_mp.c) */ + +#define rFPGA1_TxInfo 0x90C /* hal_mp.c */ +#define rSingleTone_ContTx_Jaguar 0x914 /* hal_mp.c */ +/* TX BeamForming */ +#define REG_BB_TX_PATH_SEL_1_8822E 0x93C /* rtl8822e_phy.c */ +#define REG_BB_TX_PATH_SEL_2_8822E 0x940 /* rtl8822e_phy.c */ + +/* TX BeamForming */ +#define REG_BB_TXBF_ANT_SET_BF1_8822E 0x19AC /* rtl8822e_phy.c */ +#define REG_BB_TXBF_ANT_SET_BF0_8822E 0x19B4 /* rtl8822e_phy.c */ + +#define rCCK0_System 0xA00 +#define rCCK0_AFESetting 0xA04 + +#define rCCK0_DSPParameter2 0xA1C +#define rCCK0_TxFilter1 0xA20 +#define rCCK0_TxFilter2 0xA24 +#define rCCK0_DebugPort 0xA28 +#define rCCK0_FalseAlarmReport 0xA2C + +#define rD_TxScale_Jaguar2 0x1A1C /* Path_D TX scaling factor (hal_mp.c) */ +#define rD_IGI_Jaguar2 0x1A50 /* Initial Gain for path-D (hal_mp.c) */ + +#define rOFDM0_TRxPathEnable 0xC04 +#define rOFDM0_TRMuxPar 0xC08 +#define rA_TxScale_Jaguar 0xC1C /* Pah_A TX scaling factor (hal_mp.c) */ +#define rOFDM0_RxDetector1 0xC30 /* rtw_mp.c */ +#define rOFDM0_ECCAThreshold 0xC4C /* phydm only */ +#define rOFDM0_XAAGCCore1 0xC50 /* phydm only */ +#define rA_IGI_Jaguar 0xC50 /* Initial Gain for path-A (hal_mp.c) */ +#define rOFDM0_XBAGCCore1 0xC58 /* phydm only */ +#define rOFDM0_XATxIQImbalance 0xC80 /* phydm only */ +#define rA_LSSIWrite_Jaguar 0xC90 /* RF write addr, LSSI Parameter (rtl8822b_phy.c) */ + +#define rOFDM1_LSTF 0xD00 +#define rOFDM1_TRxPathEnable 0xD04 /* hal_mp.c */ +#define rA_PIRead_Jaguar 0xD04 /* RF readback with PI (rtl8822e_phy.c) */ +#define rA_SIRead_Jaguar 0xD08 /* RF readback with SI (rtl8822e_phy.c) */ +#define rB_PIRead_Jaguar 0xD44 /* RF readback with PI (rtl8822e_phy.c) */ +#define rB_SIRead_Jaguar 0xD48 /* RF readback with SI (rtl8822e_phy.c) */ + +#define rTxAGC_A_Rate18_06 0xE00 +#define rTxAGC_A_Rate54_24 0xE04 +#define rTxAGC_A_CCK1_Mcs32 0xE08 +#define rTxAGC_A_Mcs03_Mcs00 0xE10 +#define rTxAGC_A_Mcs07_Mcs04 0xE14 +#define rTxAGC_A_Mcs11_Mcs08 0xE18 +#define rTxAGC_A_Mcs15_Mcs12 0xE1C +#define rB_TxScale_Jaguar 0xE1C /* Path_B TX scaling factor (hal_mp.c) */ +#define rB_IGI_Jaguar 0xE50 /* Initial Gain for path-B (hal_mp.c) */ +#define rB_LSSIWrite_Jaguar 0xE90 /* RF write addr, LSSI Parameter (rtl8822b_phy.c) */ +/* RFE */ +#define rA_RFE_Pinmux_Jaguar 0xCB0 /* hal_mp.c */ +#define rB_RFE_Pinmux_Jaguar 0xEB0 /* Path_B RFE control pinmux */ +#define rA_RFE_Inv_Jaguar 0xCB4 /* Path_A RFE cotrol */ +#define rB_RFE_Inv_Jaguar 0xEB4 /* Path_B RFE control */ +#define rA_RFE_Jaguar 0xCB8 /* Path_A RFE cotrol */ +#define rB_RFE_Jaguar 0xEB8 /* Path_B RFE control */ +#define rA_RFE_Inverse_Jaguar 0xCBC /* Path_A RFE control inverse */ +#define rB_RFE_Inverse_Jaguar 0xEBC /* Path_B RFE control inverse */ +#define r_ANTSEL_SW_Jaguar 0x900 /* ANTSEL SW Control */ +#define bMask_RFEInv_Jaguar 0x3FF00000 +#define bMask_AntselPathFollow_Jaguar 0x00030000 + +#define rC_RFE_Pinmux_Jaguar 0x18B4 /* Path_C RFE cotrol pinmux*/ +#define rD_RFE_Pinmux_Jaguar 0x1AB4 /* Path_D RFE cotrol pinmux*/ +#define rA_RFE_Sel_Jaguar2 0x1990 + +/* Page1(0x100) */ +#define bBBResetB 0x100 + +/* Page8(0x800) */ +#define bCCKEn 0x1000000 +#define bOFDMEn 0x2000000 +/* Reg 0x80C rFPGA0_TxGainStage */ +#define bXBTxAGC 0xF00 +#define bXCTxAGC 0xF000 +#define bXDTxAGC 0xF0000 + +/* PageA(0xA00) */ +#define bCCKBBMode 0x3 + +#define bCCKScramble 0x8 +#define bCCKTxRate 0x3000 + +/* General */ +#define bMaskByte0 0xFF /* mp, rtw_odm.c & phydm */ +#define bMaskByte1 0xFF00 /* hal_mp.c & phydm */ +#define bMaskByte2 0xFF0000 /* hal_mp.c & phydm */ +#define bMaskByte3 0xFF000000 /* hal_mp.c & phydm */ +#define bMaskHWord 0xFFFF0000 /* hal_com.c, rtw_mp.c */ +#define bMaskLWord 0x0000FFFF /* mp, hal_com.c & phydm */ +#define bMaskDWord 0xFFFFFFFF /* mp, hal, rtw_odm.c & phydm */ + +#define bEnable 0x1 /* hal_mp.c, rtw_mp.c */ +#define bDisable 0x0 /* rtw_mp.c */ + +#define MAX_STALL_TIME 50 /* unit: us, hal_com_phycfg.c */ + +#define Rx_Smooth_Factor 20 /* phydm only */ + +/* + * RF Register definition + */ +#define RF_AC 0x00 +#define RF_AC_Jaguar 0x00 /* hal_mp.c */ +#define RF_CHNLBW 0x18 /* rtl8822e_phy.c */ +#define RF_ModeTableAddr 0x30 /* rtl8822e_phy.c */ +#define RF_ModeTableData0 0x31 /* rtl8822e_phy.c */ +#define RF_ModeTableData1 0x32 /* rtl8822e_phy.c */ +#define RF_0x52 0x52 +#define RF_WeLut_Jaguar 0xEF /* rtl8822e_phy.c */ + +/* rtw_lps_state_chk()@hal_com.c */ +#define BIT_PWRBIT_OW_EN BIT_WMAC_TCRPWRMGT_HWDATA_EN_8822E + +/* General Functions */ +void rtl8822e_init_hal_spec(PADAPTER); /* hal/hal_com.c */ + +#ifdef CONFIG_MP_INCLUDED +/* MP Functions */ +#include /* struct mp_priv */ +void rtl8822e_prepare_mp_txdesc(PADAPTER, struct mp_priv *); /* rtw_mp.c */ +void rtl8822e_mp_config_rfpath(PADAPTER); /* hal_mp.c */ +#endif +void hw_var_set_dl_rsvd_page(PADAPTER adapter, u8 mstatus); + +#ifdef CONFIG_USB_HCI +#include +#elif defined(CONFIG_SDIO_HCI) +#include +#elif defined(CONFIG_PCI_HCI) +#include +#endif + +#endif /* _RTL8822E_HAL_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8822ee_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8822ee_hal.h new file mode 100644 index 000000000..1024e0cf2 --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/include/rtl8822ee_hal.h @@ -0,0 +1,27 @@ +/****************************************************************************** + * + * Copyright(c) 2015 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef _RTL8822EE_HAL_H_ +#define _RTL8822EE_HAL_H_ + +#include /* PADAPTER */ + +#define RT_BCN_INT_MASKS (BIT20 | BIT25 | BIT26 | BIT16) + +/* rtl8822ee_ops.c */ +void UpdateInterruptMask8822EE(PADAPTER, u32 AddMSR, u32 AddMSR1, u32 RemoveMSR, u32 RemoveMSR1); +u16 get_txbd_rw_reg(u16 q_idx); + + +#endif /* _RTL8822EE_HAL_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8822es_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8822es_hal.h new file mode 100644 index 000000000..7bc64d4eb --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/include/rtl8822es_hal.h @@ -0,0 +1,31 @@ +/****************************************************************************** + * + * Copyright(c) 2015 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef _RTL8822ES_HAL_H_ +#define _RTL8822ES_HAL_H_ + +#include /* PADAPTER */ + +/* rtl8822es_ops.c */ +void rtl8822es_set_hal_ops(PADAPTER); + +#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) +void rtl8822es_disable_interrupt_but_cpwm2(PADAPTER adapter); +#endif + +/* rtl8822es_xmit.c */ +s32 rtl8822es_dequeue_writeport(PADAPTER); +#define _dequeue_writeport(a) rtl8822es_dequeue_writeport(a) + +#endif /* _RTL8822ES_HAL_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtl8822eu_hal.h b/drivers/net/wireless/rtl8822cs/include/rtl8822eu_hal.h new file mode 100644 index 000000000..3dc9a91ef --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/include/rtl8822eu_hal.h @@ -0,0 +1,64 @@ +/****************************************************************************** + * + * Copyright(c) 2015 - 2017 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef _RTL8822EU_HAL_H_ +#define _RTL8822EU_HAL_H_ + +#ifdef CONFIG_USB_HCI + #include /* PADAPTER */ + + #ifdef CONFIG_USB_HCI + #ifdef USB_PACKET_OFFSET_SZ + #define PACKET_OFFSET_SZ (USB_PACKET_OFFSET_SZ) + #else + #define PACKET_OFFSET_SZ (8) + #endif + #define TXDESC_OFFSET (TXDESC_SIZE + PACKET_OFFSET_SZ) + #endif + + /* undefine MAX_RECVBUF_SZ from rtl8822c_hal.h */ + #ifdef MAX_RECVBUF_SZ + #undef MAX_RECVBUF_SZ + #endif + + /* recv_buffer must be large than usb agg size */ + #ifndef MAX_RECVBUF_SZ + #ifndef CONFIG_MINIMAL_MEMORY_USAGE + #ifdef CONFIG_PLATFORM_NOVATEK_NT72668 + #define MAX_RECVBUF_SZ (15360) /* 15k */ + #elif defined(CONFIG_PLATFORM_HISILICON) || defined(CONFIG_PLATFORM_ARM_RTD299X) + /* use 16k to workaround for HISILICON and RTK TV platform */ + #define MAX_RECVBUF_SZ (16384) + #elif defined(CONFIG_PLATFORM_I386_PC) + #define MAX_RECVBUF_SZ (32768) + #else + /* Avoid the Synopsys USB host receive buffer size limit */ + #define MAX_RECVBUF_SZ (20480) + #endif + #else + #define MAX_RECVBUF_SZ (4000) + #endif + #endif /* !MAX_RECVBUF_SZ */ + + /* rtl8822eu_ops.c */ + void rtl8822eu_set_hal_ops(PADAPTER padapter); + void rtl8822eu_set_hw_type(struct dvobj_priv *pdvobj); + + /* rtl8822eu_io.c */ + void rtl8822eu_set_intf_ops(struct _io_ops *pops); + +#endif /* CONFIG_USB_HCI */ + + +#endif /* _RTL8822EU_HAL_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_ap.h b/drivers/net/wireless/rtl8822cs/include/rtw_ap.h index 05428dbc2..e5f39b4e6 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_ap.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_ap.h @@ -71,13 +71,13 @@ void bss_cap_update_on_sta_join(_adapter *padapter, struct sta_info *psta); u8 bss_cap_update_on_sta_leave(_adapter *padapter, struct sta_info *psta); void sta_info_update(_adapter *padapter, struct sta_info *psta); void ap_sta_info_defer_update(_adapter *padapter, struct sta_info *psta); -u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u16 reason, bool enqueue); +u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u8 subtype, u16 reason, bool enqueue); int rtw_sta_flush(_adapter *padapter, bool enqueue); -int rtw_ap_inform_ch_switch(_adapter *padapter, u8 new_ch, u8 ch_offset); void start_ap_mode(_adapter *padapter); void stop_ap_mode(_adapter *padapter); #endif +void rtw_csa_update_clients_ramask(_adapter *adapter); void rtw_ap_update_bss_chbw(_adapter *adapter, WLAN_BSSID_EX *bss, u8 ch, u8 bw, u8 offset); u8 rtw_ap_chbw_decision(_adapter *adapter, u8 ifbmp, u8 excl_ifbmp , s16 req_ch, s8 req_bw, s8 req_offset, u8 *ch, u8 *bw, u8 *offset, u8 *chbw_allow, bool *set_u_ch); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_btcoex.h b/drivers/net/wireless/rtl8822cs/include/rtw_btcoex.h index 3361dbef8..c3765f093 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_btcoex.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_btcoex.h @@ -384,12 +384,12 @@ void rtw_btcoex_SpecialPacketNotify(PADAPTER, u8 pktType); void rtw_btcoex_IQKNotify(PADAPTER padapter, u8 state); void rtw_btcoex_WLRFKNotify(PADAPTER padapter, u8 path, u8 type, u8 state); void rtw_btcoex_BtInfoNotify(PADAPTER, u8 length, u8 *tmpBuf); +void rtw_btcoex_le_audio_info_notify(PADAPTER padapter, u8 length, u8 *tmpBuf); void rtw_btcoex_BtMpRptNotify(PADAPTER, u8 length, u8 *tmpBuf); void rtw_btcoex_SuspendNotify(PADAPTER, u8 state); void rtw_btcoex_HaltNotify(PADAPTER); void rtw_btcoex_switchband_notify(u8 under_scan, u8 band_type); void rtw_btcoex_WlFwDbgInfoNotify(PADAPTER padapter, u8* tmpBuf, u8 length); -void rtw_btcoex_rx_rate_change_notify(PADAPTER padapter, u8 is_data_frame, u8 rate_id); void rtw_btcoex_SwitchBtTRxMask(PADAPTER); void rtw_btcoex_Switch(PADAPTER, u8 enable); u8 rtw_btcoex_IsBtDisabled(PADAPTER); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_cfg.h b/drivers/net/wireless/rtl8822cs/include/rtw_cfg.h new file mode 100644 index 000000000..2e3f7e77d --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/include/rtw_cfg.h @@ -0,0 +1,30 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2020 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#ifndef _RTW_CFG_H_ +#define _RTW_CFG_H_ + +uint rtw_load_registry(_adapter *adapter); + +#define RTW_ADAPTIVITY_EN_DISABLE 0 +#define RTW_ADAPTIVITY_EN_ENABLE 1 +#define RTW_ADAPTIVITY_EN_AUTO 2 + +#define RTW_ADAPTIVITY_MODE_NORMAL 0 +#define RTW_ADAPTIVITY_MODE_CARRIER_SENSE 1 + +void rtw_cfg_adaptivity_config_msg(void *sel, _adapter *adapter); +bool rtw_cfg_adaptivity_needed(_adapter *adapter); + +#endif /*_RTW_CFG_H_*/ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_cmd.h b/drivers/net/wireless/rtl8822cs/include/rtw_cmd.h index 37a0b40ea..94385fc7a 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_cmd.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_cmd.h @@ -15,17 +15,10 @@ #ifndef __RTW_CMD_H_ #define __RTW_CMD_H_ - #define C2H_MEM_SZ (16*1024) -#define FREE_CMDOBJ_SZ 128 - -#define MAX_CMDSZ 1536 -#define MAX_RSPSZ 512 #define MAX_EVTSZ 1024 -#define CMDBUFF_ALIGN_SZ 512 - struct cmd_obj { _adapter *padapter; u16 cmdcode; @@ -35,11 +28,21 @@ struct cmd_obj { u8 *rsp; u32 rspsz; struct submit_ctx *sctx; + /* + * buffer allocated by handler/callback in cmd_thread, will + * 1. got and accessed by caller or + * 2. freed by .sctx_rsp_buf_free when caller timeout + */ + void *sctx_rsp_buf; + /* set to function to free sctx_rsp_buf when caller is timeout */ + void (*sctx_rsp_buf_free)(void *); u8 no_io; /* _sema cmd_sem; */ _list list; }; +#define CMD_OBJ_SET_HWBAND(cmdobj, hwband) do { /* dummy macro because this driver has only one hwband */ } while (0) + /* cmd flags */ enum { RTW_CMDF_DIRECTLY = BIT0, @@ -53,15 +56,10 @@ struct cmd_priv { _queue cmd_queue; u8 cmd_seq; - u8 *cmd_buf; /* shall be non-paged, and 4 bytes aligned */ - u8 *cmd_allocated_buf; - u8 *rsp_buf; /* shall be non-paged, and 4 bytes aligned */ - u8 *rsp_allocated_buf; u32 cmd_issued_cnt; u32 cmd_done_cnt; u32 rsp_cnt; ATOMIC_T cmdthd_running; - /* u8 cmdthd_running; */ _adapter *padapter; _mutex sctx_mutex; @@ -179,7 +177,6 @@ extern void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv); extern u32 rtw_init_evt_priv(struct evt_priv *pevtpriv); extern void rtw_free_evt_priv(struct evt_priv *pevtpriv); -extern void rtw_cmd_clr_isr(struct cmd_priv *pcmdpriv); extern void rtw_evt_notify_isr(struct evt_priv *pevtpriv); #ifdef CONFIG_P2P u8 p2p_protocol_wk_cmd(_adapter *padapter, int intCmdType); @@ -217,6 +214,7 @@ enum rtw_drvextra_cmd_id { NONE_WK_CID, STA_MSTATUS_RPT_WK_CID, DYNAMIC_CHK_WK_CID, + DYNAMIC_CHK_IDLE_WK_CID, DM_CTRL_WK_CID, PBC_POLLING_WK_CID, POWER_SAVING_CTRL_WK_CID,/* IPS,AUTOSuspend */ @@ -263,6 +261,13 @@ enum rtw_drvextra_cmd_id { MAX_WK_CID }; +enum IPS_CTRL_TYPE { + IPS_CTRL_ENTER = 0, + IPS_CTRL_LEAVE_SET_MODE = 1, + IPS_CTRL_LEAVE_SRESET = 2, + IPS_CTRL_MAX, +}; + enum LPS_CTRL_TYPE { LPS_CTRL_SCAN = 0, LPS_CTRL_JOINBSS = 1, @@ -539,31 +544,6 @@ struct set_ch_parm { u8 ch_offset; }; -struct SetChannelPlan_param { - enum regd_src_t regd_src; - enum rtw_regd_inr inr; - struct country_chplan country_ent; - bool has_country; - u8 channel_plan; -#if CONFIG_IEEE80211_BAND_6GHZ - u8 channel_plan_6g; -#endif - -#ifdef CONFIG_80211D - /* used for regd_src == RTK_PRIV and inr == COUNTRY_IE */ - struct country_ie_slave_record cisr; - bool has_cisr; -#endif - -#ifdef PLATFORM_LINUX - bool rtnl_lock_needed; -#endif -}; - -struct get_channel_plan_param { - struct get_chplan_resp **chplan; -}; - struct LedBlink_param { void *pLed; }; @@ -588,6 +568,10 @@ struct reqtxrpt_param { u8 macid; }; +struct bcn_control_param { + u8 control; /* 0: stop beaon, 1: resume beacon */ +}; + #define GEN_CMD_CODE(cmd) cmd ## _CMD_ @@ -615,6 +599,7 @@ Result: #define H2C_ENQ_HEAD 0x08 #define H2C_ENQ_HEAD_FAIL 0x09 #define H2C_CMD_FAIL 0x0A +#define H2C_MEMORY 0x0B void rtw_init_sitesurvey_parm(_adapter *padapter, struct sitesurvey_parm *pparm); u8 rtw_sitesurvey_cmd(_adapter *padapter, struct sitesurvey_parm *pparm); @@ -623,10 +608,11 @@ u8 rtw_create_ibss_cmd(_adapter *adapter, int flags); u8 rtw_startbss_cmd(_adapter *adapter, int flags); #endif -#define REQ_CH_NONE -1 +#define REQ_BAND_NONE -1 +#define REQ_CH_NONE -1 #define REQ_CH_INT_INFO -2 -#define REQ_BW_NONE -1 -#define REQ_BW_ORI -2 +#define REQ_BW_NONE -1 +#define REQ_BW_ORI -2 #define REQ_OFFSET_NONE -1 struct sta_info; @@ -638,6 +624,8 @@ u8 rtw_disassoc_cmd(_adapter *padapter, u32 deauth_timeout_ms, int flags); #ifdef CONFIG_AP_MODE u8 rtw_change_bss_chbw_cmd(_adapter *adapter, int flags , u8 ifbmp, u8 excl_ifbmp, s16 req_ch, s8 req_bw, s8 req_offset); +u8 rtw_change_bss_bchbw_cmd(_adapter *adapter, int flags + , u32 iflbmp, u32 excl_iflbmp, s8 req_band, s16 req_ch, s8 req_bw, s8 req_offset); u8 rtw_stop_ap_cmd(_adapter *adapter, u8 flags); #endif #ifdef CONFIG_RTW_TOKEN_BASED_XMIT @@ -651,6 +639,7 @@ extern u8 rtw_addbarsp_cmd(_adapter *padapter, u8 *addr, u16 tid, u8 status, u8 extern u8 rtw_reset_securitypriv_cmd(_adapter *padapter); extern u8 rtw_free_assoc_resources_cmd(_adapter *padapter, u8 lock_scanned_queue, int flags); extern u8 rtw_dynamic_chk_wk_cmd(_adapter *adapter); +u8 rtw_dynamic_chk_idle_wk_cmd(struct dvobj_priv *dvobj, bool direct); u8 rtw_lps_ctrl_wk_cmd(_adapter *padapter, u8 lps_ctrl_type, u8 flags); u8 rtw_lps_ctrl_leave_set_level_cmd(_adapter *adapter, u8 lps_level, u8 flags); @@ -668,9 +657,9 @@ u8 rtw_rpt_timer_cfg_cmd(_adapter *padapter, u16 minRptTime); extern u8 rtw_antenna_select_cmd(_adapter *padapter, u8 antenna, u8 enqueue); #endif -u8 rtw_dm_ra_mask_wk_cmd(_adapter *padapter, u8 *psta); +u8 rtw_dm_ra_mask_wk_cmd(_adapter *padapter, struct sta_info *psta); -extern u8 rtw_ps_cmd(_adapter *padapter); +u8 rtw_ips_ctrl_wk_cmd(_adapter *padapter, u8 ips_ctrl_type, u8 ips_mode, u8 flags); #if CONFIG_DFS void rtw_dfs_ch_switch_hdl(struct dvobj_priv *dvobj); @@ -678,12 +667,6 @@ void rtw_dfs_ch_switch_hdl(struct dvobj_priv *dvobj); #ifdef CONFIG_AP_MODE u8 rtw_chk_hi_queue_cmd(_adapter *padapter); -#ifdef CONFIG_DFS_MASTER -u8 rtw_dfs_rd_cmd(_adapter *adapter, bool enqueue); -void rtw_dfs_rd_timer_hdl(void *ctx); -void rtw_dfs_rd_en_decision(_adapter *adapter, u8 mlme_act, u8 excl_ifbmp); -u8 rtw_dfs_rd_en_decision_cmd(_adapter *adapter); -#endif /* CONFIG_DFS_MASTER */ #endif /* CONFIG_AP_MODE */ #ifdef CONFIG_BT_COEXIST @@ -699,20 +682,14 @@ u8 rtw_periodic_tsf_update_end_cmd(_adapter *adapter); u8 rtw_set_chbw_cmd(_adapter *padapter, u8 ch, u8 bw, u8 ch_offset, u8 flags); u8 rtw_iqk_cmd(_adapter *padapter, u8 flags); -u8 rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, u8 chplan_6g, enum rtw_regd_inr inr); -u8 rtw_set_country_cmd(_adapter *adapter, int flags, const char *country_code, enum rtw_regd_inr inr); -#ifdef CONFIG_REGD_SRC_FROM_OS -u8 rtw_sync_os_regd_cmd(_adapter *adapter, int flags, const char *country_code, u8 dfs_region, enum rtw_regd_inr inr); -#endif -u8 rtw_get_chplan_cmd(_adapter *adapter, int flags, struct get_chplan_resp **chplan); - -#ifdef CONFIG_80211D -u8 rtw_apply_recv_country_ie_cmd(_adapter *adapter, int flags, BAND_TYPE band,u8 opch, const u8 *country_ie); -#endif - +#ifdef CONFIG_RTW_LED_HANDLED_BY_CMD_THREAD extern u8 rtw_led_blink_cmd(_adapter *padapter, void *pLed); +#endif + extern u8 rtw_set_csa_cmd(_adapter *adapter); extern u8 rtw_set_ap_csa_cmd(_adapter *adapter); +u8 bcn_control_cmd(_adapter *adapter, u8 control); +u8 rtw_csa_sta_update_cap_cmd(_adapter *adapter); extern u8 rtw_tdls_cmd(_adapter *padapter, u8 *addr, u8 option); u8 rtw_mp_cmd(_adapter *adapter, u8 mp_cmd_id, u8 flags); @@ -783,7 +760,6 @@ u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf); extern void rtw_survey_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd); extern void rtw_disassoc_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd); -extern void rtw_joinbss_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd); void rtw_create_ibss_post_hdl(_adapter *padapter, int status); extern void rtw_readtssi_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd); @@ -818,6 +794,8 @@ enum rtw_cmd_id { CMD_WRITE_BCN_LEN, /*24 */ CMD_AP_CHANSWITCH, /* 25 AP switch channel */ CMD_REQ_TXRPT, /* 26 */ + CMD_BCN_CONTROL, /* 27, stop/resume beacon */ + CMD_STA_CSA_UPDATE_CAP, /* 28, update capabilities of STA mode */ CMD_ID_MAX }; diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_debug.h b/drivers/net/wireless/rtl8822cs/include/rtw_debug.h index d6a432824..449c7b35f 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_debug.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_debug.h @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -117,7 +117,7 @@ extern uint rtw_drv_log_level; #ifdef DBG_CPU_INFO #define CPU_INFO_FMT "[%u] " -#define CPU_INFO_ARG get_cpu() +#define CPU_INFO_ARG task_cpu(current) #else /* !DBG_CPU_INFO */ #define CPU_INFO_FMT "%s" #define CPU_INFO_ARG "" @@ -295,7 +295,7 @@ void bb_reg_dump(void *sel, _adapter *adapter); void bb_reg_dump_ex(void *sel, _adapter *adapter); void rf_reg_dump(void *sel, _adapter *adapter); -void rtw_sink_rtp_seq_dbg(_adapter *adapter, u8 *ehdr_pos); +void rtw_sink_rtp_seq_dbg(_adapter *adapter, u8 *ehdr_pos, u16 wifi_seq); struct sta_info; void sta_rx_reorder_ctl_dump(void *sel, struct sta_info *sta); @@ -540,6 +540,27 @@ int proc_get_wakeup_reason(struct seq_file *m, void *v); #ifdef CONFIG_WOW_KEEP_ALIVE_PATTERN int proc_dump_wow_keep_alive_info(struct seq_file *m, void *v); #endif /*CONFIG_WOW_KEEP_ALIVE_PATTERN*/ +#ifdef CONFIG_MDNS_OFFLOAD +ssize_t proc_set_wow_mdns_resp(struct file *file, const char __user *buffer, + size_t count, loff_t *pos, void *data); +int proc_get_wow_mdns_resp(struct seq_file *m, void *v); +ssize_t proc_set_wow_mdns_match_criteria(struct file *file, + const char __user *buffer, + size_t count, loff_t *pos, void *data); +int proc_get_wow_mdns_match_criteria(struct seq_file *m, void *v); +ssize_t proc_set_wow_mdns_passthru_list(struct file *file, + const char __user *buffer, + size_t count, loff_t *pos, void *data); +int proc_get_wow_mdns_passthru_list(struct seq_file *m, void *v); +ssize_t proc_set_wow_mdns_offload_state(struct file *file, + const char __user *buffer, + size_t count, loff_t *pos, void *data); +int proc_get_wow_mdns_offload_state(struct seq_file *m, void *v); +ssize_t proc_set_wow_mdns_passthru_behavior(struct file *file, + const char __user *buffer, + size_t count, loff_t *pos, void *data); +int proc_get_wow_mdns_passthru_behavior(struct seq_file *m, void *v); +#endif /* CONFIG_MDNS_OFFLOAD */ #endif #ifdef CONFIG_WAR_OFFLOAD @@ -602,9 +623,15 @@ ssize_t proc_set_xmit_block(struct file *file, const char __user *buffer, size_t #endif #ifdef CONFIG_PREALLOC_RX_SKB_BUFFER -int proc_get_rtkm_info(struct seq_file *m, void *v); +int proc_get_rtkm_skb(struct seq_file *m, void *v); #endif /* CONFIG_PREALLOC_RX_SKB_BUFFER */ +#ifdef CONFIG_RTKM +int proc_get_rtkm_info(struct seq_file *m, void *v); +ssize_t proc_set_rtkm_info(struct file *file, const char __user *buffer, + size_t count, loff_t *pos, void *data); +#endif /* CONFIG_RTKM */ + #ifdef CONFIG_IEEE80211W ssize_t proc_set_tx_sa_query(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data); int proc_get_tx_sa_query(struct seq_file *m, void *v); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_eeprom.h b/drivers/net/wireless/rtl8822cs/include/rtw_eeprom.h index 62304d577..3456cbae0 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_eeprom.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_eeprom.h @@ -24,7 +24,11 @@ #define HWSET_MAX_SIZE_512 512 #define HWSET_MAX_SIZE_1024 1024 +#if defined(CONFIG_RTL8822E) +#define EEPROM_MAX_SIZE EFUSE_MAX_MAP_LEN +#else #define EEPROM_MAX_SIZE HWSET_MAX_SIZE_1024 +#endif #define CLOCK_RATE 50 /* 100us */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_efuse.h b/drivers/net/wireless/rtl8822cs/include/rtw_efuse.h index b2972d6ed..777304fae 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_efuse.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_efuse.h @@ -42,10 +42,14 @@ enum _EFUSE_DEF_TYPE { TYPE_EFUSE_PROTECT_BYTES_BANK = 5, TYPE_EFUSE_CONTENT_LEN_BANK = 6, }; - +#if defined(CONFIG_RTL8822E) +#define EFUSE_VER_LEN 7 +#define EFUSE_MAX_MAP_LEN (2048) +#else +#define EFUSE_VER_LEN 0 #define EFUSE_MAX_MAP_LEN 1024 - -#define EFUSE_MAX_HW_SIZE 1024 +#endif +#define EFUSE_MAX_HW_SIZE 1536 #define EFUSE_MAX_SECTION_BASE 16 #define EFUSE_MAX_SECTION_NUM 128 #define EFUSE_MAX_BANK_SIZE 512 @@ -53,7 +57,7 @@ enum _EFUSE_DEF_TYPE { /*RTL8822B 8821C BT EFUSE Define 1 BANK 128 size logical map 1024*/ #ifdef RTW_HALMAC #define BANK_NUM 1 -#if defined(CONFIG_RTL8723F) +#if defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) #define EFUSE_BT_REAL_BANK_CONTENT_LEN 512 #else #define EFUSE_BT_REAL_BANK_CONTENT_LEN 128 @@ -63,7 +67,7 @@ enum _EFUSE_DEF_TYPE { #define EFUSE_BT_MAP_LEN 1024 /* 1k bytes */ #define EFUSE_BT_MAX_SECTION (EFUSE_BT_MAP_LEN / 8) -#if defined(CONFIG_RTL8822C) +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) #define EFUSE_PROTECT_BYTES_BANK 54 #elif defined(CONFIG_RTL8723F) #define EFUSE_PROTECT_BYTES_BANK 40 @@ -85,11 +89,14 @@ enum _EFUSE_DEF_TYPE { #define GET_MASK_ARRAY_LEN_TC(ic, txt) (EFUSE_GetArrayLen_TC_##ic##txt()) #define GET_MASK_ARRAY_MP(ic, txt, offset) (EFUSE_GetMaskArray_MP_##ic##txt(offset)) #define GET_MASK_ARRAY_TC(ic, txt, offset) (EFUSE_GetMaskArray_TC_##ic##txt(offset)) - +#define GET_VER_ARRAY_MP(ic, txt, offset) (EFUSE_Ver_GetArray_MP_##ic##txt(offset)) +#define GET_VER_ARRAY_LEN_MP(ic, txt) (EFUSE_Ver_GetArrayLen_MP_##ic##txt()) #define IS_MASKED(ic, txt, offset) (IS_MASKED_MP(ic, txt, offset)) #define GET_MASK_ARRAY_LEN(ic, txt) (GET_MASK_ARRAY_LEN_MP(ic, txt)) #define GET_MASK_ARRAY(ic, txt, out) do { GET_MASK_ARRAY_MP(ic, txt, out); } while (0) +#define GET_VER_ARRAY(ic, txt, out) do { GET_VER_ARRAY_MP(ic, txt, out); } while (0) +#define GET_VER_ARRAY_LEN(ic, txt) (GET_VER_ARRAY_LEN_MP(ic, txt)) #ifdef CONFIG_BT_EFUSE_MASK #define IS_BT_MASKED_MP(ic, txt, offset) (EFUSE_IsBTAddressMasked_MP_##ic##txt(offset)) @@ -143,6 +150,8 @@ typedef struct _EFUSE_HAL { u8 fakeEfuseModifiedMap[EFUSE_MAX_MAP_LEN]; u32 EfuseUsedBytes; u8 EfuseUsedPercentage; + u32 EfuseMaskUsedBytes; + BOOLEAN EfuseVerCompare; u16 BTEfuseUsedBytes; u8 BTEfuseUsedPercentage; @@ -179,8 +188,8 @@ typedef struct _EFUSE_HAL { } EFUSE_HAL, *PEFUSE_HAL; -extern u8 maskfileBuffer[64]; -extern u8 btmaskfileBuffer[64]; +extern u8 maskfileBuffer[192]; +extern u8 btmaskfileBuffer[192]; /*------------------------Export global variable----------------------------*/ extern u8 fakeEfuseBank; @@ -238,7 +247,7 @@ int Efuse_PgPacketWrite(PADAPTER pAdapter, u8 offset, u8 word_en, u8 *data, BOOL void efuse_WordEnableDataRead(u8 word_en, u8 *sourdata, u8 *targetdata); u8 Efuse_WordEnableDataWrite(PADAPTER pAdapter, u16 efuse_addr, u8 word_en, u8 *data, BOOLEAN bPseudoTest); void EFUSE_ShadowMapUpdate(PADAPTER pAdapter, u8 efuseType, BOOLEAN bPseudoTest); -void EFUSE_ShadowRead(PADAPTER pAdapter, u8 Type, u16 Offset, u32 *Value); +void EFUSE_ShadowRead(PADAPTER pAdapter, u8 Type, u16 Offset, void *Value); #define efuse_logical_map_read(adapter, type, offset, value) EFUSE_ShadowRead((adapter), (type), (offset), (value)) BOOLEAN rtw_file_efuse_IsMasked(PADAPTER pAdapter, u16 Offset, u8 *maskbuf); @@ -274,7 +283,7 @@ extern const u8 _mac_hidden_proto_to_hal_proto_cap[]; u8 mac_hidden_wl_func_to_hal_wl_func(u8 func); #ifdef PLATFORM_LINUX -u8 rtw_efuse_file_read(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len); +u32 rtw_efuse_file_read(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len); #if !defined(CONFIG_RTW_ANDROID_GKI) u8 rtw_efuse_file_store(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len); #endif /* !defined(CONFIG_RTW_ANDROID_GKI) */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_ft.h b/drivers/net/wireless/rtl8822cs/include/rtw_ft.h index 4a6600779..f8dc82bfd 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_ft.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_ft.h @@ -93,7 +93,7 @@ enum rtw_ft_capability { #define rtw_ft_roam(a) \ ((rtw_to_roam(a) > 0) && rtw_ft_chk_flags(a, RTW_FT_PEER_EN)) - + #define rtw_ft_valid_akm(a, t) \ ((rtw_ft_chk_flags(a, RTW_FT_EN)) && \ (((t) == 3) || ((t) == 4) || ((t) == 9))) @@ -102,11 +102,18 @@ enum rtw_ft_capability { ((rtw_chk_roam_flags(a, RTW_ROAM_ON_EXPIRED)) \ && (r == WLAN_REASON_ACTIVE_ROAM)) +/* allow OTD while driver disconnect with current AP */ +#if 1 +#define rtw_ft_otd_roam_en(a) \ + ((rtw_ft_chk_flags(a, RTW_FT_OTD_EN)) \ + && ((a)->mlmepriv.ft_roam.ft_cap & 0x01)) +#else #define rtw_ft_otd_roam_en(a) \ ((rtw_ft_chk_flags(a, RTW_FT_OTD_EN)) \ && ((a)->mlmepriv.ft_roam.ft_roam_on_expired == _FALSE) \ && ((a)->mlmepriv.ft_roam.ft_cap & 0x01)) - +#endif + #define rtw_ft_otd_roam(a) \ rtw_ft_chk_flags(a, RTW_FT_PEER_OTD_EN) @@ -119,18 +126,29 @@ enum rtw_ft_capability { struct ft_roam_info { u16 mdid; - u8 ft_cap; + u8 ft_cap; /*b0: FT over DS, b1: Resource Req Protocol Cap, b2~b7: Reserved*/ u8 updated_ft_ies[RTW_FT_MAX_IE_SZ]; u16 updated_ft_ies_len; u8 ft_action[RTW_FT_MAX_IE_SZ]; u16 ft_action_len; - struct cfg80211_ft_event_params ft_event; +#ifdef CONFIG_IOCTL_CFG80211 + struct cfg80211_ft_event_params ft_event; +#endif u8 ft_roam_on_expired; u8 ft_flags; u32 ft_status; u32 ft_req_retry_cnt; - bool ft_updated_bcn; + bool ft_updated_bcn; +}; + +struct rtw_sta_ft_info_t { + u8 *rsn_ie; + u32 rsn_len; + u8 *md_ie; + u32 md_len; + u8 *ft_ie; + u32 ft_len; }; void rtw_ft_info_init(struct ft_roam_info *pft); @@ -148,7 +166,7 @@ void rtw_ft_update_stainfo(_adapter *padapter, WLAN_BSSID_EX *pnetwork); void rtw_ft_reassoc_event_callback(_adapter *padapter, u8 *pbuf); void rtw_ft_validate_akm_type(_adapter *padapter, - struct wlan_network *pnetwork); + WLAN_BSSID_EX *network); void rtw_ft_update_bcn(_adapter *padapter, union recv_frame *precv_frame); @@ -180,4 +198,21 @@ void rtw_ft_roam_timer_hdl(void *ctx); void rtw_ft_roam_status_reset(_adapter *padapter); +void rtw_ft_peer_info_init(struct sta_info *psta); + +void rtw_ft_peer_info_free(struct sta_info *psta); + +#ifdef CONFIG_RTW_80211R_AP +int rtw_ft_update_sta_ies(_adapter *padapter, + struct cfg80211_update_ft_ies_params *pie); + +void rtw_ft_update_assocresp_ies(struct net_device *net, + struct cfg80211_ap_settings *settings); + +void rtw_ft_process_ft_auth_rsp(_adapter *padapter, u8 *pframe, u32 len); + +void rtw_ft_build_assoc_rsp_ies(_adapter *padapter, + struct sta_info *psta, struct pkt_attrib *pattrib, u8 **pframe); +#endif /* CONFIG_RTW_80211R_AP */ + #endif /* __RTW_FT_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_ioctl_set.h b/drivers/net/wireless/rtl8822cs/include/rtw_ioctl_set.h index aeff45352..1409eb6c4 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_ioctl_set.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_ioctl_set.h @@ -26,9 +26,9 @@ u8 rtw_set_acs_sitesurvey(_adapter *adapter); u8 rtw_set_802_11_infrastructure_mode(_adapter *padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE networktype, u8 flags); u8 rtw_set_802_11_ssid(_adapter *padapter, NDIS_802_11_SSID *ssid); u8 rtw_set_802_11_connect(_adapter *padapter, - u8 *bssid, NDIS_802_11_SSID *ssid, u16 ch); + const u8 *bssid, NDIS_802_11_SSID *ssid, u16 ch); -u8 rtw_validate_bssid(u8 *bssid); +u8 rtw_validate_bssid(const u8 *bssid); u8 rtw_validate_ssid(NDIS_802_11_SSID *ssid); u16 rtw_get_cur_max_rate(_adapter *adapter); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_mbo.h b/drivers/net/wireless/rtl8822cs/include/rtw_mbo.h index 9524cb6c6..abf986ad5 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_mbo.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_mbo.h @@ -16,10 +16,17 @@ #ifndef __RTW_MBO_H_ #define __RTW_MBO_H_ -#define rtw_mbo_wifi_logo_test(a) ((a->registrypriv.wifi_spec) == 1) +#define rtw_mbo_wifi_logo_test(a) \ + (((a)->registrypriv.wifi_spec) == 1) -#define rtw_mbo_set_ext_cap_internw(_pEleStart, _val) \ - SET_BITS_TO_LE_1BYTE(((u8 *)(_pEleStart))+3, 7, 1, _val) +#define rtw_mbo_wifi_spec_test(a) \ + (((a)->mlmepriv.mbo_attr.mbo_spec_test) == 1) + +#define rtw_mbo_ap_assoc_disallow(a) \ + (((a)->mlmepriv.mbo_attr.assoc_disallow) > 0) + +#define rtw_mbo_add_internw_ext_cap(d, l) \ + rtw_add_ext_cap_info(d, l, INTERWORKING) #define rtw_mbo_wnm_notification_req(c, a) \ (((c) == RTW_WLAN_CATEGORY_WNM) && \ @@ -34,6 +41,8 @@ #define RTW_MBO_OUI 0x506F9A #define RTW_MBO_OUI_TYPE 0x16 +/* MBO AP Capability Indication */ +#define RTW_MBO_ATTR_AP_CAP_ID 0x1 /* Non-preferred Channel Report */ #define RTW_MBO_ATTR_NPREF_CH_RPT_ID 0x2 /* Cellular Data Capabilities */ @@ -45,12 +54,34 @@ /* Transition Rejection Reason Code */ #define RTW_MBO_ATTR_TRANS_REJ_ID 0x7 /* Association Retry Delay */ -#define RTW_MBO_ATTR_TASSOC_RETRY_ID 0x8 +#define RTW_MBO_ATTR_ASSOC_RETRY_DELAY_ID 0x8 #define RTW_MBO_MAX_CH_LIST_NUM MAX_CHANNEL_NUM #define RTW_MBO_MAX_CH_RPT_NUM 32 +#define RTW_MBO_TEST_CMD_REST 0x00 +#define RTW_MBO_TEST_CMD_BTM_REQ_SEND 0xfd +#define RTW_MBO_TEST_CMD_BTM_REQ_SET 0xfe +#define RTW_MBO_TEST_CMD_NB_BSS_ADD 0xff + +struct mbo_user_btm_req_pkt { + struct btm_req_hdr hdr; + u32 candidate_cnt; + struct wnm_btm_cant btm_cants[RTW_MAX_NB_RPT_NUM]; + u8 append_mbo_ie; +}; + +struct mbo_attr_info { + u8 mbo_spec_test; + u8 ap_cap_ind; + u8 assoc_disallow; + u8 cell_data_cap; + u8 reason; + u16 delay; + struct mbo_user_btm_req_pkt user_raw; +}; + struct npref_ch { u8 op_class; u8 chs[RTW_MBO_MAX_CH_LIST_NUM]; @@ -81,11 +112,11 @@ void rtw_mbo_build_trans_reject_reason_attr( u8 rtw_mbo_disallowed_network(struct wlan_network *pnetwork); -void rtw_mbo_build_exented_cap( +void rtw_mbo_build_extended_cap( _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib); ssize_t rtw_mbo_proc_non_pref_chans_set( - struct file *pfile, const char __user *buffer, + struct file *pfile, const char __user *buffer, size_t count, loff_t *pos, void *pdata); int rtw_mbo_proc_non_pref_chans_get( @@ -98,6 +129,13 @@ ssize_t rtw_mbo_proc_cell_data_set( int rtw_mbo_proc_cell_data_get( struct seq_file *m, void *v); +ssize_t rtw_mbo_proc_attr_set( + struct file *pfile, const char __user *buffer, + size_t count, loff_t *pos, void *pdata); + +int rtw_mbo_proc_attr_get( + struct seq_file *m, void *v); + void rtw_mbo_wnm_notification_parsing( _adapter *padapter, const u8 *pdata, size_t data_len); @@ -110,5 +148,22 @@ void rtw_mbo_build_probe_req_ies( void rtw_mbo_build_assoc_req_ies( _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib); +void rtw_mbo_attr_info_init(_adapter *padapter); + +void rtw_mbo_process_assoc_req( + _adapter *padapter, u8 *pie, int ie_len); + +void rtw_mbo_build_beacon_ies( + _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib); + +void rtw_mbo_build_probe_rsp_ies( + _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib); + +void rtw_mbo_build_assoc_rsp_ies( + _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib); + +void rtw_mbo_build_wnm_btmreq_reason_ies( + _adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib); + #endif /* __RTW_MBO_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_mcc.h b/drivers/net/wireless/rtl8822cs/include/rtw_mcc.h index 5d2198b03..a95fd19a4 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_mcc.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_mcc.h @@ -19,6 +19,7 @@ #include /* PADAPTER */ +#define NO_NEED_MCC 2 #define MCC_STATUS_PROCESS_MCC_START_SETTING BIT0 #define MCC_STATUS_PROCESS_MCC_STOP_SETTING BIT1 #define MCC_STATUS_NEED_MCC BIT2 @@ -54,7 +55,7 @@ #define MCC_SINGLE_TX_CRITERIA 5 /* Mbps */ #define MAX_MCC_NUM 2 -#ifdef CONFIG_RTL8822C +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) #define DBG_MCC_REG_NUM 3 #else #define DBG_MCC_REG_NUM 4 @@ -130,8 +131,9 @@ enum mcc_status_rpt { MCC_RPT_STOPMCC = 2, MCC_RPT_READY = 3, MCC_RPT_SWICH_CHANNEL_NOTIFY = 7, - MCC_RPT_UPDATE_NOA_START_TIME = 8, + MCC_RPT_TBTT = 8, MCC_RPT_TSF = 9, + MCC_RPT_UPDATE_NOA_START_TIME = 15, /* Need update FW */ MCC_RPT_MAX, }; @@ -239,6 +241,7 @@ struct mcc_obj_priv { u32 dbg_rf_reg[DBG_MCC_RF_REG_NUM]; u32 dbg_rf_reg_val[DBG_MCC_RF_REG_NUM][MAX_RF_PATH]; u8 mcc_phydm_offload; + u8 tsf_sync_done; }; /* backup IQK val */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_mem.h b/drivers/net/wireless/rtl8822cs/include/rtw_mem.h index 9e33ed519..f3d2950e0 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_mem.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_mem.h @@ -15,15 +15,20 @@ #ifndef __RTW_MEM_H__ #define __RTW_MEM_H__ -#include -#include -#include +#define RTKM_MGMT_SIZE PAGE_SIZE -u16 rtw_rtkm_get_buff_size(void); -u8 rtw_rtkm_get_nr_recv_skb(void); -struct u8 *rtw_alloc_revcbuf_premem(void); -struct sk_buff *rtw_alloc_skb_premem(u16 in_size); -int rtw_free_skb_premem(struct sk_buff *pskb); +void *rtkm_kmalloc(size_t size, gfp_t flags); +void *rtkm_kzalloc(size_t size, gfp_t flags); +void rtkm_kfree(const void *objp, size_t size); +int rtkm_prealloc_init(void); +void rtkm_prealloc_destroy(void); +void rtkm_dump_mstatus(void *sel); +void rtkm_set_trace(unsigned int mask); + +u16 rtkm_get_max_buff_size(void); +u8 rtkm_get_max_nr_rx_skb(void); +inline struct sk_buff *rtkm_alloc_skb(unsigned int length); +void rtkm_kfree_skb_any(struct sk_buff *skb); #endif /* __RTW_MEM_H__ */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_mi.h b/drivers/net/wireless/rtl8822cs/include/rtw_mi.h index e4f240e57..757fd2bc7 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_mi.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_mi.h @@ -16,12 +16,16 @@ #define __RTW_MI_H_ void rtw_mi_update_union_chan_inf(_adapter *adapter, u8 ch, u8 offset , u8 bw); -u8 rtw_mi_stayin_union_ch_chk(_adapter *adapter); +u8 rtw_mi_stayin_union_ch_chk(_adapter *adapter, bool fail_detail); u8 rtw_mi_stayin_union_band_chk(_adapter *adapter); int rtw_mi_get_ch_setting_union_by_ifbmp(struct dvobj_priv *dvobj, u8 ifbmp, u8 *ch, u8 *bw, u8 *offset); int rtw_mi_get_ch_setting_union(_adapter *adapter, u8 *ch, u8 *bw, u8 *offset); int rtw_mi_get_ch_setting_union_no_self(_adapter *adapter, u8 *ch, u8 *bw, u8 *offset); +int rtw_mi_get_bch_setting_union_by_hwband(struct dvobj_priv *dvobj, u8 band_idx + , enum band_type *band, u8 *ch, u8 *bw, u8 *offset); +int rtw_mi_get_bch_setting_union_by_hwband_ifbmp(struct dvobj_priv *dvobj, u8 band_idx, u8 ifbmp + , enum band_type *band, u8 *ch, u8 *bw, u8 *offset); struct mi_state { u8 sta_num; /* WIFI_STATION_STATE */ @@ -126,6 +130,8 @@ void rtw_mi_status_by_ifbmp(struct dvobj_priv *dvobj, u8 ifbmp, struct mi_state void rtw_mi_status(_adapter *adapter, struct mi_state *mstate); void rtw_mi_status_no_self(_adapter *adapter, struct mi_state *mstate); void rtw_mi_status_no_others(_adapter *adapter, struct mi_state *mstate); +void rtw_mi_status_by_hwband(struct dvobj_priv *dvobj, u8 band_idx, struct mi_state *mstate); +void rtw_mi_status_by_hwband_ifbmp(struct dvobj_priv *dvobj, u8 band_idx, u8 ifbmp, struct mi_state *mstate); /* For now, not handle union_ch/bw/offset */ void rtw_mi_status_merge(struct mi_state *d, struct mi_state *a); @@ -207,6 +213,8 @@ u8 rtw_mi_buddy_check_mlmeinfo_state(_adapter *padapter, u32 state); u8 rtw_mi_check_fwstate(_adapter *padapter, sint state); u8 rtw_mi_buddy_check_fwstate(_adapter *padapter, sint state); +u8 rtw_mi_check_fwstate_by_hwband(struct dvobj_priv *dvobj, u8 band_idx, sint state); + enum { MI_LINKED, MI_ASSOC, @@ -244,6 +252,8 @@ u8 rtw_mi_buddy_check_pending_xmitbuf(_adapter *padapter); #include #elif defined(CONFIG_RTL8723F) #include +#elif defined(CONFIG_RTL8822E) + #include #else extern s32 _dequeue_writeport(PADAPTER padapter); #endif @@ -295,15 +305,25 @@ _adapter *rtw_get_iface_by_macddr(_adapter *padapter, const u8 *mac_addr); _adapter *rtw_get_iface_by_hwport(_adapter *padapter, u8 hw_port); void rtw_mi_buddy_clone_bcmc_packet(_adapter *padapter, union recv_frame *precvframe, u8 *pphy_status); - -#ifdef CONFIG_PCI_HCI -/*API be create temporary for MI, caller is interrupt-handler, PCIE's interrupt handler cannot apply to multi-AP*/ _adapter *rtw_mi_get_ap_adapter(_adapter *padapter); -#endif +u8 rtw_mi_get_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx); +_adapter *rtw_mi_get_iface_by_hwband(struct dvobj_priv *dvobj, u8 band_idx); u8 rtw_mi_get_ld_sta_ifbmp(_adapter *adapter); +u8 rtw_mi_get_ld_sta_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx); +u8 rtw_mi_get_lgd_sta_ifbmp(_adapter *adapter); +u8 rtw_mi_get_lgd_sta_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx); u8 rtw_mi_get_ap_mesh_ifbmp(_adapter *adapter); +u8 rtw_mi_get_ap_mesh_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx); +_adapter *rtw_mi_get_ap_mesh_iface_by_hwband(struct dvobj_priv *dvobj, u8 band_idx); + +bool rtw_iface_is_operate_at_hwband(_adapter *adapter, u8 band_idx); + void rtw_mi_update_ap_bmc_camid(_adapter *padapter, u8 camid_a, u8 camid_b); _adapter *rtw_mi_get_linking_adapter(_adapter *adapter); + +u32 ifbmp_to_iflbmp(u8 ifbmp); +u8 iflbmp_to_ifbmp(u32 iflbmp); + #endif /*__RTW_MI_H_*/ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_mlme.h b/drivers/net/wireless/rtl8822cs/include/rtw_mlme.h index 868949b6b..ca7c9666d 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_mlme.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_mlme.h @@ -20,6 +20,7 @@ /* #define MAX_JOIN_TIMEOUT 2000 */ /* #define MAX_JOIN_TIMEOUT 2500 */ #define MAX_JOIN_TIMEOUT 6500 +#define PS_ANNC_DRV_RETRY_INT_MS 30 /* Commented by Albert 20101105 * Increase the scanning timeout because of increasing the SURVEY_TO value. */ @@ -59,7 +60,7 @@ /*#define WIFI_UNDEFINED_STATE 0x04000000*/ /*#define WIFI_UNDEFINED_STATE 0x08000000*/ /*#define WIFI_UNDEFINED_STATE 0x10000000*/ -/*#define WIFI_UNDEFINED_STATE 0x20000000*/ +#define WIFI_CSA_SKIP_CHECK_BEACON 0x20000000 #define WIFI_CSA_UPDATE_BEACON 0x40000000 #define WIFI_MONITOR_STATE 0x80000000 @@ -567,6 +568,28 @@ struct unassoc_sta_info { }; #endif +struct wlan_network { + _list list; + int network_type; /* refer to ieee80211.h for WIRELESS_11A/B/G */ + int fixed; /* set to fixed when not to be removed as site-surveying */ + systime last_scanned; /* timestamp for the network */ + systime last_non_hidden_ssid_ap; +#ifdef CONFIG_RTW_MESH +#if CONFIG_RTW_MESH_ACNODE_PREVENT + systime acnode_stime; + systime acnode_notify_etime; +#endif +#endif + int aid; /* will only be valid when a BSS is joinned. */ + int join_res; + struct beacon_keys bcn_keys; + bool bcn_keys_valid; +#ifdef CONFIG_80211D + struct country_ie_slave_record cisr; +#endif + WLAN_BSSID_EX network; /* must be the last item */ +}; + struct mlme_priv { _lock lock; @@ -616,7 +639,7 @@ struct mlme_priv { #endif u8 bcn_cnts_after_csa; -#ifdef CONFIG_ARP_KEEP_ALIVE +#ifdef CONFIG_ARP_KEEP_ALIVE_GW /* for arp offload keep alive */ u8 bGetGateway; u8 GetGatewayTryCnt; @@ -644,11 +667,6 @@ struct mlme_priv { struct qos_priv qospriv; -#ifdef CONFIG_80211D - u8 *recv_country_ie; - u32 recv_country_ie_len; -#endif - #ifdef CONFIG_ACTIVE_TPC_REPORT bool active_tpc_report; #endif @@ -663,9 +681,9 @@ struct mlme_priv { int num_FortyMHzIntolerant; + u8 sw_to_20mhz; /*switch to 20Mhz BW*/ struct ht_priv htpriv; - #endif #ifdef CONFIG_80211AC_VHT @@ -731,13 +749,8 @@ struct mlme_priv { int ht_20mhz_width_req; int ht_intolerant_ch_reported; u16 ht_op_mode; - u8 sw_to_20mhz; /*switch to 20Mhz BW*/ #endif /* CONFIG_80211N_HT */ -#ifdef CONFIG_RTW_80211R - u8 *auth_rsp; - u32 auth_rsp_len; -#endif #endif /* CONFIG_AP_MODE and CONFIG_NATIVEAP_MLME */ u8 *assoc_req; @@ -749,6 +762,11 @@ struct mlme_priv { /* u8 *wps_probe_req_ie; */ /* u32 wps_probe_req_ie_len; */ + u8 *beacon_head_ie; + u32 beacon_head_ie_len; + u8 *beacon_tail_ie; + u32 beacon_tail_ie_len; + u8 *wps_beacon_ie; u32 wps_beacon_ie_len; @@ -806,9 +824,15 @@ struct mlme_priv { u32 wfd_assoc_resp_ie_len; #endif +#ifdef CONFIG_RTW_80211R + u8 *auth_rsp; + u32 auth_rsp_len; +#endif + #ifdef CONFIG_RTW_MBO u8 *pcell_data_cap_ie; u32 cell_data_cap_len; + struct mbo_attr_info mbo_attr; #endif #ifdef RTK_DMP_PLATFORM @@ -862,11 +886,13 @@ struct mlme_priv { #define MLME_ACTIVE_TPC_REPORT(mlme) 0 #endif -#define RTW_AUTO_SCAN_REASON_UNSPECIFIED 0 -#define RTW_AUTO_SCAN_REASON_2040_BSS BIT0 -#define RTW_AUTO_SCAN_REASON_ACS BIT1 -#define RTW_AUTO_SCAN_REASON_ROAM BIT2 -#define RTW_AUTO_SCAN_REASON_MESH_OFFCH_CAND BIT3 +#define RTW_AUTO_SCAN_REASON_UNSPECIFIED 0 +#define RTW_AUTO_SCAN_REASON_2040_BSS BIT0 +#define RTW_AUTO_SCAN_REASON_ACS BIT1 +#define RTW_AUTO_SCAN_REASON_ROAM BIT2 +#define RTW_AUTO_SCAN_REASON_ROAM_ACTIVE BIT3 +#define RTW_AUTO_SCAN_REASON_MESH_OFFCH_CAND BIT4 +#define RTW_AUTO_SCAN_REASON_CIS_ENV_BSS BIT5 void rtw_mlme_reset_auto_scan_int(_adapter *adapter, u8 *reason); @@ -1004,6 +1030,7 @@ __inline static void set_scanned_network_val(struct mlme_priv *pmlmepriv, sint v extern u16 rtw_get_capability(WLAN_BSSID_EX *bss); extern bool rtw_update_scanned_network(_adapter *adapter, WLAN_BSSID_EX *target); +void dump_scanned_queue(void *sel, _adapter *adapter); extern void rtw_disconnect_hdl_under_linked(_adapter *adapter, struct sta_info *psta, u8 free_assoc); extern void rtw_generate_random_ibss(u8 *pibss); struct wlan_network *_rtw_find_network(_queue *scanned_queue, const u8 *addr); @@ -1025,7 +1052,7 @@ void rtw_scan_abort(_adapter *adapter); u32 rtw_join_abort_timeout(_adapter *adapter, u32 timeout_ms); int rtw_cached_pmkid(_adapter *Adapter, u8 *bssid); -int rtw_rsn_sync_pmkid(_adapter *adapter, u8 *ie, uint ie_len, int i_ent); +int rtw_pmkid_sync_rsn(_adapter *adapter, u8 *ie, uint ie_len, int i_ent); extern int rtw_restruct_sec_ie(_adapter *adapter, u8 *out_ie); #ifdef CONFIG_WMMPS_STA @@ -1104,6 +1131,9 @@ extern void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_ne extern void _rtw_free_network_queue(_adapter *padapter, u8 isfreeall); +struct _ADAPTER_LINK *rtw_get_adapter_link_by_hwband(_adapter *padapter, u8 band_idx); +u8 rtw_adapter_link_get_id(struct _ADAPTER_LINK *alink); + extern sint rtw_if_up(_adapter *padapter); sint rtw_linked_check(_adapter *padapter); @@ -1118,7 +1148,7 @@ void rtw_joinbss_reset(_adapter *padapter); #ifdef CONFIG_80211N_HT void rtw_ht_use_default_setting(_adapter *padapter); void rtw_build_wmm_ie_ht(_adapter *padapter, u8 *out_ie, uint *pout_len); -unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel, struct country_chplan *req_chplan); +unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel); void rtw_update_ht_cap(_adapter *padapter, u8 *pie, uint ie_len, u8 channel); void rtw_issue_addbareq_cmd(_adapter *padapter, struct xmit_frame *pxmitframe, u8 issue_when_busy); #endif @@ -1146,8 +1176,8 @@ int is_same_network(WLAN_BSSID_EX *src, WLAN_BSSID_EX *dst, u8 feature); ((adapter)->mlmepriv.roam_flags = flags); \ } while (0) -void _rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network); -void rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network); +void _rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network, u8 scan_band, u8 scan_ch); +void rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network, u8 scan_band, u8 scan_ch); void rtw_set_to_roam(_adapter *adapter, u8 to_roam); u8 rtw_dec_to_roam(_adapter *adapter); u8 rtw_to_roam(_adapter *adapter); @@ -1158,15 +1188,15 @@ int rtw_select_roaming_candidate(struct mlme_priv *pmlmepriv); #define rtw_clr_roam_flags(adapter, flags) do {} while (0) #define rtw_set_roam_flags(adapter, flags) do {} while (0) #define rtw_assign_roam_flags(adapter, flags) do {} while (0) -#define _rtw_roaming(adapter, tgt_network) do {} while (0) -#define rtw_roaming(adapter, tgt_network) do {} while (0) +#define _rtw_roaming(adapter, tgt_network, scan_band, scan_ch) do {} while (0) +#define rtw_roaming(adapter, tgt_network, scan_band, scan_ch) do {} while (0) #define rtw_set_to_roam(adapter, to_roam) do {} while (0) #define rtw_dec_to_roam(adapter) 0 #define rtw_to_roam(adapter) 0 #define rtw_select_roaming_candidate(mlme) _FAIL #endif /* CONFIG_LAYER2_ROAMING */ -bool rtw_adjust_chbw(_adapter *adapter, u8 req_ch, u8 *req_bw, u8 *req_offset); +RTW_FUNC_2G_5G_ONLY bool rtw_adjust_chbw(_adapter *adapter, u8 req_ch, u8 *req_bw, u8 *req_offset); struct sta_media_status_rpt_cmd_parm { struct sta_info *sta; diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_mlme_ext.h b/drivers/net/wireless/rtl8822cs/include/rtw_mlme_ext.h index 70dd35147..a969e8843 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_mlme_ext.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_mlme_ext.h @@ -16,12 +16,13 @@ #define __RTW_MLME_EXT_H_ -/* Commented by Albert 20101105 - * Increase the SURVEY_TO value from 100 to 150 ( 100ms to 150ms ) - * The Realtek 8188CE SoftAP will spend around 100ms to send the probe response after receiving the probe request. - * So, this driver tried to extend the dwell time for each scanning channel. - * This will increase the chance to receive the probe response from SoftAP. */ +/* + * SURVEY_TO: dwell time (ms) for passive channel scan or other scan functions + * in addition to normal scan. + * ACTIVE_CH_SURVEY_TO: dwell time (ms) for active scan channel in nomal scan. + */ #define SURVEY_TO (100) +#define ACTIVE_CH_SURVEY_TO (50) #define REAUTH_TO (300) /* (50) */ #define REASSOC_TO (300) /* (50) */ @@ -96,11 +97,6 @@ extern unsigned char MULTI_AP_OUI[]; extern unsigned char WMM_INFO_OUI[]; extern unsigned char WMM_PARA_OUI[]; -typedef struct _RT_CHANNEL_PLAN { - unsigned char Channel[MAX_CHANNEL_NUM]; - unsigned char Len; -} RT_CHANNEL_PLAN, *PRT_CHANNEL_PLAN; - typedef enum _HT_IOT_PEER { HT_IOT_PEER_UNKNOWN = 0, HT_IOT_PEER_REALTEK = 1, @@ -245,6 +241,7 @@ enum TDLS_option { TDLS_CH_SW_END, TDLS_RS_RCR, TDLS_TEARDOWN_STA, + TDLS_TEARDOWN_STA_TOOFAR, TDLS_TEARDOWN_STA_NO_WAIT, TDLS_TEARDOWN_STA_LOCALLY, TDLS_TEARDOWN_STA_LOCALLY_POST, @@ -346,132 +343,11 @@ struct mlme_ext_info { #endif }; -enum { - RTW_CHF_NO_IR = BIT0, - RTW_CHF_DFS = BIT1, - RTW_CHF_LONG_CAC = BIT2, - RTW_CHF_NON_OCP = BIT3, - RTW_CHF_NO_HT40U = BIT4, - RTW_CHF_NO_HT40L = BIT5, - RTW_CHF_NO_80MHZ = BIT6, - RTW_CHF_NO_160MHZ = BIT7, -}; +void init_channel_list(_adapter *padapter); -/* The channel information about this channel including joining, scanning, and power constraints. */ -typedef struct _RT_CHANNEL_INFO { - u8 band; /* BAND_TYPE */ - u8 ChannelNum; /* The channel number. */ - - /* - * Bitmap and its usage: - * RTW_CHF_NO_IR, RTW_CHF_DFS: is used to check for status - * RTW_CHF_NO_HT40U, RTW_CHF_NO_HT40L, RTW_CHF_NO_80MHZ, RTW_CHF_NO_160MHZ: extra bandwidth limitation (ex: from regulatory) - * RTW_CHF_NON_OCP: is only used to record if event is reported, status check is still done using non_ocp_end_time - */ - u8 flags; - /* u16 ScanPeriod; */ /* Listen time in millisecond in this channel. */ - /* s32 MaxTxPwrDbm; */ /* Max allowed tx power. */ - /* u32 ExInfo; */ /* Extended Information for this channel. */ -#ifdef CONFIG_FIND_BEST_CHANNEL - u32 rx_count; -#endif -#if CONFIG_IEEE80211_BAND_5GHZ && CONFIG_DFS - #ifdef CONFIG_DFS_MASTER - systime non_ocp_end_time; - #endif -#endif - u8 hidden_bss_cnt; /* per scan count */ - -#ifdef CONFIG_IOCTL_CFG80211 - void *os_chan; -#endif -} RT_CHANNEL_INFO, *PRT_CHANNEL_INFO; - -#define CAC_TIME_MS (60*1000) -#define CAC_TIME_CE_MS (10*60*1000) -#define NON_OCP_TIME_MS (30*60*1000) - -#if CONFIG_TXPWR_LIMIT -void rtw_txpwr_init_regd(struct rf_ctl_t *rfctl); -bool rtw_rfctl_is_current_txpwr_lmt(struct rf_ctl_t *rfctl, const char *name); -#endif int rtw_rfctl_init(_adapter *adapter); void rtw_rfctl_deinit(_adapter *adapter); -void rtw_rfctl_decide_init_chplan(struct rf_ctl_t *rfctl, - const char *hw_alpha2, u8 hw_chplan, u8 hw_chplan_6g, u8 hw_force_chplan); -void rtw_rfctl_chplan_init(_adapter *adapter); -bool rtw_rfctl_is_disable_sw_channel_plan(struct dvobj_priv *dvobj); -void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op); - -bool rtw_rfctl_reg_allow_beacon_hint(struct rf_ctl_t *rfctl); - -u8 rtw_rfctl_get_dfs_domain(struct rf_ctl_t *rfctl); -u8 rtw_rfctl_dfs_domain_unknown(struct rf_ctl_t *rfctl); - -#ifdef CONFIG_DFS_MASTER -struct rf_ctl_t; -#define CH_IS_NON_OCP(rt_ch_info) (rtw_time_after((rt_ch_info)->non_ocp_end_time, rtw_get_current_time())) -bool rtw_is_cac_reset_needed(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset); -bool _rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset); -bool rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl); -bool rtw_rfctl_is_tx_blocked_by_ch_waiting(struct rf_ctl_t *rfctl); -bool rtw_chset_is_chbw_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset); -bool rtw_chset_is_ch_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch); -bool rtw_chset_update_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset); -bool rtw_chset_update_non_ocp_ms(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset, int ms); -void rtw_chset_chk_non_ocp_finish(struct rf_ctl_t *rfctl); -u32 rtw_get_ch_waiting_ms(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, u32 *r_non_ocp_ms, u32 *r_cac_ms); -void rtw_reset_cac(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset); -u32 rtw_force_stop_cac(struct rf_ctl_t *rfctl, u32 timeout_ms); -#else -#define CH_IS_NON_OCP(rt_ch_info) 0 -#define rtw_chset_is_chbw_non_ocp(ch_set, ch, bw, offset) _FALSE -#define rtw_chset_is_ch_non_ocp(ch_set, ch) _FALSE -#define rtw_rfctl_is_tx_blocked_by_ch_waiting(rfctl) _FALSE -#endif - -bool rtw_choose_shortest_waiting_ch(struct rf_ctl_t *rfctl, u8 sel_ch, u8 max_bw - , u8 *dec_ch, u8 *dec_bw, u8 *dec_offset - , u8 e_flags, u8 d_flags, u8 cur_ch, bool by_int_info, u8 mesh_only); - -struct get_chplan_resp { - enum regd_src_t regd_src; - enum rtw_regd_inr regd_inr; - char alpha2[2]; - u8 channel_plan; -#if CONFIG_IEEE80211_BAND_6GHZ - u8 chplan_6g; -#endif - -#if CONFIG_TXPWR_LIMIT - const char *txpwr_lmt_name[BAND_MAX]; -#endif - u8 edcca_mode_2g; -#if CONFIG_IEEE80211_BAND_5GHZ - u8 edcca_mode_5g; -#endif -#if CONFIG_IEEE80211_BAND_6GHZ - u8 edcca_mode_6g; -#endif -#ifdef CONFIG_DFS_MASTER - u8 dfs_domain; -#endif - u8 proto_en; - u8 chset_num; - RT_CHANNEL_INFO chset[0]; -}; - -#ifdef CONFIG_PROC_DEBUG -void dump_cur_country(void *sel, struct rf_ctl_t *rfctl); -void dump_cur_chset(void *sel, struct rf_ctl_t *rfctl); -#endif - -int rtw_chset_search_ch(RT_CHANNEL_INFO *ch_set, const u32 ch); -int rtw_chset_search_ch_by_band(RT_CHANNEL_INFO *ch_set, BAND_TYPE band, const u32 ch); -u8 rtw_chset_is_chbw_valid(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset - , bool allow_primary_passive, bool allow_passive); -void rtw_chset_sync_chbw(RT_CHANNEL_INFO *ch_set, u8 *req_ch, u8 *req_bw, u8 *req_offset - , u8 *g_ch, u8 *g_bw, u8 *g_offset, bool allow_primary_passive, bool allow_passive); +void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op, u8 ifbmp_excl); bool rtw_mlme_band_check(_adapter *adapter, const u32 ch); @@ -739,10 +615,19 @@ u8 rtw_get_oper_bw(_adapter *adapter); void rtw_set_oper_bw(_adapter *adapter, u8 bw); u8 rtw_get_oper_choffset(_adapter *adapter); void rtw_set_oper_choffset(_adapter *adapter, u8 offset); +int rtw_get_oper_bchbw_by_hwband(struct dvobj_priv *dvobj, enum phl_band_idx band_idx + , enum band_type *band, u8 *ch, u8 *bw, u8 *offset); systime rtw_get_on_oper_ch_time(_adapter *adapter); systime rtw_get_on_cur_ch_time(_adapter *adapter); -void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode); +RTW_FUNC_2G_5G_ONLY void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode); +void set_bch_bwmode(_adapter *padapter, + struct _ADAPTER_LINK *padapter_link, + enum band_type band, + unsigned char channel, + unsigned char channel_offset, + unsigned short bwmode, + u8 do_rfk); void csa_timer_hdl(void *FunctionContext); @@ -755,7 +640,7 @@ void rtw_clean_dk_section(_adapter *adapter); void rtw_clean_hw_dk_cam(_adapter *adapter); /* modify both HW and cache */ -void write_cam(_adapter *padapter, u8 id, u16 ctrl, u8 *mac, u8 *key); +void write_cam(_adapter *padapter, u8 id, u16 ctrl, u8 *mac, u8 *key, bool ext); void clear_cam_entry(_adapter *padapter, u8 id); /* modify cache only */ @@ -826,7 +711,8 @@ int rtw_get_bcn_keys(_adapter *adapter, u8 *whdr, u32 flen, struct beacon_keys * int rtw_get_bcn_keys_from_bss(WLAN_BSSID_EX *bss, struct beacon_keys *bcn_keys); int rtw_update_bcn_keys_of_network(struct wlan_network *network); -int validate_beacon_len(u8 *pframe, uint len); +int check_ielen(u8 *start, uint len); +int validate_bcn_and_probe_rsp_len(u8 *pframe, uint len); void rtw_dump_bcn_keys(void *sel, struct beacon_keys *recv_beacon); void rtw_bcn_key_err_fix(struct beacon_keys *cur, struct beacon_keys *recv); bool rtw_bcn_key_compare(struct beacon_keys *cur, struct beacon_keys *recv); @@ -835,15 +721,12 @@ void update_beacon_info(_adapter *padapter, u8 *pframe, uint len, struct sta_inf #if CONFIG_DFS void process_csa_ie(_adapter *padapter, u8 *ies, uint ies_len); #endif -#ifdef CONFIG_80211D -bool rtw_iface_accept_country_ie(_adapter *adapter); -void process_country_ie(_adapter *adapter, u8 *ies, uint ies_len); -#endif void update_capinfo(PADAPTER Adapter, u16 updateCap); void update_wireless_mode(_adapter *padapter); void update_tx_basic_rate(_adapter *padapter, u8 modulation); void update_sta_basic_rate(struct sta_info *psta, u8 wireless_mode); int rtw_ies_get_supported_rate(u8 *ies, uint ies_len, u8 *rate_set, u8 *rate_num); +int rtw_elems_get_supported_rate(struct rtw_ieee802_11_elems *elems, u8 *rate_set, u8 *rate_num); /* for sta/adhoc mode */ void update_sta_info(_adapter *padapter, struct sta_info *psta); @@ -977,9 +860,9 @@ void issue_probereq(_adapter *padapter, const NDIS_802_11_SSID *pssid, const u8 s32 issue_probereq_ex(_adapter *padapter, const NDIS_802_11_SSID *pssid, const u8 *da, u8 ch, bool append_wps, int try_cnt, int wait_ms); int issue_nulldata(_adapter *padapter, unsigned char *da, unsigned int power_mode, int try_cnt, int wait_ms); int issue_qos_nulldata(_adapter *padapter, unsigned char *da, u16 tid, u8 ps, int try_cnt, int wait_ms); +int issue_disasoc(_adapter *adapter, unsigned char *da, unsigned short reason); int issue_deauth(_adapter *padapter, unsigned char *da, unsigned short reason); int issue_deauth_ex(_adapter *padapter, u8 *da, unsigned short reason, int try_cnt, int wait_ms); -void issue_action_spct_ch_switch(_adapter *padapter, u8 *ra, u8 new_ch, u8 ch_offset); void issue_addba_req(_adapter *adapter, unsigned char *ra, u8 tid); void issue_addba_rsp(_adapter *adapter, unsigned char *ra, u8 tid, u16 status, u8 size); u8 issue_addba_rsp_wait_ack(_adapter *adapter, unsigned char *ra, u8 tid, u16 status, u8 size, int try_cnt, int wait_ms); @@ -1006,6 +889,10 @@ void start_clnt_auth(_adapter *padapter); void start_clnt_join(_adapter *padapter); void start_create_ibss(_adapter *padapter); +#if defined(CONFIG_LAYER2_ROAMING) && defined(CONFIG_RTW_80211K) +void rtw_roam_nb_discover(_adapter *padapter, u8 bfroce); +#endif + unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame); unsigned int OnAssocRsp(_adapter *padapter, union recv_frame *precv_frame); unsigned int OnProbeReq(_adapter *padapter, union recv_frame *precv_frame); @@ -1173,11 +1060,12 @@ u8 chk_bmc_sleepq_hdl(_adapter *padapter, unsigned char *pbuf); u8 tx_beacon_hdl(_adapter *padapter, unsigned char *pbuf); u8 rtw_set_chbw_hdl(_adapter *padapter, u8 *pbuf); u8 rtw_iqk_hdl(_adapter *padapter, unsigned char *pbuf); -u8 rtw_set_chplan_hdl(_adapter *padapter, unsigned char *pbuf); -u8 rtw_get_chplan_hdl(_adapter *padapter, unsigned char *pbuf); u8 led_blink_hdl(_adapter *padapter, unsigned char *pbuf); u8 set_csa_hdl(_adapter *padapter, unsigned char *pbuf); /* Kurt: Handling DFS channel switch announcement ie. */ u8 set_ap_csa_hdl(_adapter *adapter, unsigned char *pbuf); +u8 bcn_control_hdl(_adapter *adapter, unsigned char *pbuf); +void rtw_update_mlme(_adapter *adapter, u8 *frame, u32 frame_len); +u8 rtw_csa_sta_update_cap_hdl(_adapter *adapter, unsigned char *pbuf); u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf); u8 run_in_thread_hdl(_adapter *padapter, u8 *pbuf); u8 rtw_write_bcnlen_hdl(_adapter *padapter, u8 *pbuf); @@ -1208,7 +1096,7 @@ u8 rtw_mesh_set_plink_state_cmd_hdl(_adapter *adapter, u8 *parmbuf) { return H2C #endif struct rtw_cmd wlancmds[] = { - GEN_MLME_EXT_HANDLER(join_cmd_hdl, rtw_joinbss_cmd_callback) /*CMD_JOINBSS*/ + GEN_MLME_EXT_HANDLER(join_cmd_hdl, NULL) /*CMD_JOINBSS*/ GEN_MLME_EXT_HANDLER(disconnect_hdl, rtw_disassoc_cmd_callback) /*CMD_DISCONNECT*/ GEN_MLME_EXT_HANDLER(createbss_hdl, NULL) /*CMD_CREATE_BSS*/ GEN_MLME_EXT_HANDLER(setopmode_hdl, NULL) /*CMD_SET_OPMODE*/ @@ -1231,10 +1119,12 @@ struct rtw_cmd wlancmds[] = { GEN_MLME_EXT_HANDLER(rm_post_event_hdl, NULL) /*CMD_RM_POST_EVENT*/ GEN_MLME_EXT_HANDLER(rtw_mesh_set_plink_state_cmd_hdl, NULL) /*CMD_SET_MESH_PLINK_STATE*/ GEN_MLME_EXT_HANDLER(rtw_iqk_hdl, NULL) /*CMD_DO_IQK*/ - GEN_MLME_EXT_HANDLER(rtw_get_chplan_hdl, NULL) /* CMD_GET_CHANPLAN */ + GEN_MLME_EXT_HANDLER(rtw_get_chplan_hdl, rtw_get_chplan_callback) /* CMD_GET_CHANPLAN */ GEN_MLME_EXT_HANDLER(rtw_write_bcnlen_hdl, NULL) /* CMD_WRITE_BCN_LEN */ GEN_MLME_EXT_HANDLER(set_ap_csa_hdl, NULL) /* CMD_AP_CHANSWITCH */ GEN_MLME_EXT_HANDLER(rtw_reqtxrpt_cmd_hdl, NULL) /* CMD_REQ_TXRPT */ + GEN_MLME_EXT_HANDLER(bcn_control_hdl, NULL) /* CMD_BCN_CONTROL */ + GEN_MLME_EXT_HANDLER(rtw_csa_sta_update_cap_hdl, NULL) /* CMD_BCN_CONTROL */ }; #endif @@ -1270,7 +1160,7 @@ static struct rtw_event wlanevents[] = { #ifdef CONFIG_IEEE80211W {sizeof(struct stadel_event), &rtw_sta_timeout_event_callback}, /*EVT_TIMEOUT_STA*/ #endif /* CONFIG_IEEE80211W */ - #ifdef CONFIG_RTW_80211R + #if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) {sizeof(struct stassoc_event), &rtw_ft_reassoc_event_callback}, /*EVT_FT_REASSOC*/ #endif }; diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_mp.h b/drivers/net/wireless/rtl8822cs/include/rtw_mp.h index 7ec7229c6..6dbba39c9 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_mp.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_mp.h @@ -292,6 +292,12 @@ enum { MP_DPK, MP_GET_TSSIDE, MP_SET_TSSIDE, + MP_ANTDIV, +#ifdef CONFIG_MP_INCLUDED +#ifdef RTW_HALMAC + MP_GPIO, +#endif +#endif MP_NULL, #ifdef CONFIG_APPEND_VENDOR_IE_ENABLE VENDOR_IE_SET , @@ -310,7 +316,6 @@ enum { #endif MP_SD_IREAD, MP_SD_IWRITE, - GET_IC_TYPE, }; struct mp_priv { @@ -709,6 +714,13 @@ void PhySetTxPowerLevel(PADAPTER pAdapter); void fill_txdesc_for_mp(PADAPTER padapter, u8 *ptxdesc); void SetPacketTx(PADAPTER padapter); void SetPacketRx(PADAPTER pAdapter, u8 bStartRx, u8 bAB); + +#ifdef CONFIG_MP_INCLUDED +#ifdef RTW_HALMAC +int SetGpio(PADAPTER pAdapter, u8 gpio_id, u8 gpio_enable, u8 gpio_func_offset, u8 gpio_mode); +#endif +#endif + void ResetPhyRxPktCount(PADAPTER pAdapter); u32 GetPhyRxPktReceived(PADAPTER pAdapter); u32 GetPhyRxPktCRC32Error(PADAPTER pAdapter); @@ -751,8 +763,13 @@ u32 hal_mpt_query_phytxok(PADAPTER pAdapter); u32 mpt_get_tx_power_finalabs_val(PADAPTER padapter, u8 rf_path); void mpt_trigger_tssi_tracking(PADAPTER pAdapter, u8 rf_path); u32 hal_mpt_tssi_turn_target_power(PADAPTER padapter, s16 power_offset, u8 path); -s16 hal_mpt_get_tx_power_mdbm(_adapter *padapter, u8 rf_path); +void hal_mpt_tssi_set_power_offset(PADAPTER padapter, s16 power_offset, u8 path); +#ifdef CONFIG_MP_INCLUDED +#ifdef RTW_HALMAC +int hal_mpt_SetGpio(PADAPTER pAdapter, u8 gpio_id, u8 gpio_enable, u8 gpio_func_offset, u8 gpio_mode); +#endif +#endif void PMAC_Get_Pkt_Param( @@ -948,4 +965,15 @@ int rtw_mp_get_tsside(struct net_device *dev, int rtw_mp_set_tsside(struct net_device *dev, struct iw_request_info *info, struct iw_point *wrqu, char *extra); +int rtw_mp_ant_div(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra); +#ifdef CONFIG_MP_INCLUDED +#ifdef RTW_HALMAC +int rtw_mp_gpio(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra); +#endif +#endif + #endif /* _RTW_MP_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_odm.h b/drivers/net/wireless/rtl8822cs/include/rtw_odm.h index 21228083a..3fe3e29dc 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_odm.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_odm.h @@ -41,7 +41,7 @@ typedef enum _HAL_PHYDM_OPS { #define rtw_phydm_func_for_offchannel(adapter) \ do { \ rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0); \ - if (rtw_odm_adaptivity_needed(adapter)) \ + if (rtw_cfg_adaptivity_needed(adapter)) \ rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ADAPTIVITY); \ if (IS_ACS_ENABLE(adapter))\ rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ENV_MONITOR); \ @@ -50,7 +50,7 @@ typedef enum _HAL_PHYDM_OPS { #define rtw_phydm_func_for_offchannel(adapter) \ do { \ rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0); \ - if (rtw_odm_adaptivity_needed(adapter)) \ + if (rtw_cfg_adaptivity_needed(adapter)) \ rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ADAPTIVITY); \ } while (0) #endif @@ -73,10 +73,8 @@ static inline u32 rtw_phydm_ability_get(_adapter *adapter) void rtw_odm_init_ic_type(_adapter *adapter); -void rtw_odm_adaptivity_config_msg(void *sel, _adapter *adapter); - -bool rtw_odm_adaptivity_needed(_adapter *adapter); -void rtw_odm_adaptivity_update(struct dvobj_priv *dvobj); +void rtw_edcca_hal_update(struct dvobj_priv *dvobj); +void rtw_odm_adaptivity_ver_msg(void *sel, _adapter *adapter); void rtw_odm_adaptivity_parm_msg(void *sel, _adapter *adapter); void rtw_odm_adaptivity_parm_set(_adapter *adapter, s8 th_l2h_ini, s8 th_edcca_hl_diff); void rtw_odm_get_perpkt_rssi(void *sel, _adapter *adapter); @@ -86,13 +84,27 @@ void rtw_odm_releasespinlock(_adapter *adapter, enum rt_spinlock_type type); struct dm_struct; s16 rtw_odm_get_tx_power_mbm(struct dm_struct *dm, u8 rfpath, u8 rate, u8 bw, u8 cch); +#if CONFIG_TXPWR_LIMIT +enum txpwr_lmt_reg_exc_match { + TXPWR_LMT_REG_EXC_MATCH_NONE = 0, + TXPWR_LMT_REG_EXC_MATCH_COUNTRY, + TXPWR_LMT_REG_EXC_MATCH_DOMAIN, +}; + +enum txpwr_lmt_reg_exc_match rtw_txpwr_hal_lmt_reg_exc_search(struct dvobj_priv* dvobj, const char *country, u8 domain, const char **reg_name); +bool rtw_txpwr_hal_lmt_reg_search(struct dvobj_priv* dvobj, enum band_type band, const char *name); +void rtw_txpwr_hal_set_current_lmt_regs_by_name(struct dvobj_priv* dvobj, char *names_of_band[], int names_len_of_band[]); +void rtw_txpwr_hal_get_current_lmt_regs_name(struct dvobj_priv* dvobj, char *names_of_band[], int names_len_of_band[]); +#endif /* CONFIG_TXPWR_LIMIT */ + #ifdef CONFIG_DFS_MASTER -void rtw_odm_radar_detect_reset(_adapter *adapter); -void rtw_odm_radar_detect_disable(_adapter *adapter); -void rtw_odm_radar_detect_enable(_adapter *adapter); -BOOLEAN rtw_odm_radar_detect(_adapter *adapter); -void rtw_odm_update_dfs_region(struct dvobj_priv *dvobj); -u8 rtw_odm_radar_detect_polling_int_ms(struct dvobj_priv *dvobj); +bool rtw_dfs_hal_region_supported(struct dvobj_priv* dvobj, enum rtw_dfs_regd domain); +void rtw_dfs_hal_update_region(struct dvobj_priv *dvobj, u8 band_idx, enum rtw_dfs_regd domain); +void rtw_dfs_hal_radar_detect_disable(struct dvobj_priv *dvobj, u8 band_idx); +void rtw_dfs_hal_radar_detect_enable(struct dvobj_priv *dvobj, u8 band_idx, bool cac, u32 rd_freq_hi, u32 rd_freq_lo); +void rtw_dfs_hal_set_cac_status(struct dvobj_priv *dvobj, u8 band_idx, bool cac); +void rtw_dfs_hal_radar_detect_result_polling(struct dvobj_priv *dvobj, u8 band_idx, u8 *radar_cch, u8 *radar_bw); +u8 rtw_dfs_hal_radar_detect_polling_int_ms(struct dvobj_priv *dvobj); #endif /* CONFIG_DFS_MASTER */ void rtw_odm_parse_rx_phy_status_chinfo(union recv_frame *rframe, u8 *phys); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_pwrctrl.h b/drivers/net/wireless/rtl8822cs/include/rtw_pwrctrl.h index 04fb617e2..17ca9d5a3 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_pwrctrl.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_pwrctrl.h @@ -49,6 +49,9 @@ #define DEFAULT_PATTERN_NUM 3 #endif +#ifdef CONFIG_GOOGLE_CAST_WAKEUP + #define GOOGLE_CAST_PATTERN_NUM 3 +#endif #ifdef CONFIG_WOW_PATTERN_HW_CAM /* Frame Mask Cam number for pattern match */ #define MAX_WKFM_CAM_NUM 12 #else @@ -85,6 +88,46 @@ typedef struct rtl_priv_pattern { char mask[MAX_WKFM_SIZE]; } rtl_priv_pattern_t; +#ifdef CONFIG_MDNS_OFFLOAD +#define MAX_MDNS_RESP_NUM 8 +#define MAX_MDNS_RESP_LEN 512 +#define MAX_MDNS_MATCH_CRITERIA_NUM 8 +#define MAX_MDNS_PASSTHRU_NAME_NUM 8 +#define MAX_MDNS_DOMAIN_NAME_LEN 255 +#define PASSTHRU_FORWARD_ALL 0 +#define PASSTHRU_DROP_ALL 1 +#define PASSTHRU_LIST 2 + +struct rtw_mdns_match_criteria { + u16 name_offset; + u16 type; + u8 name_len; +}; + +struct rtw_mdns_resp_entry { + u16 content_len; + u8 match_ct_num; + u8 content[MAX_MDNS_RESP_LEN]; + struct rtw_mdns_match_criteria match_ct[MAX_MDNS_MATCH_CRITERIA_NUM]; +}; + +struct rtw_mdns_passthru_name { + u8 name[MAX_MDNS_DOMAIN_NAME_LEN]; + u8 name_len; +}; + +struct rtw_mdns_passthru_list { + u8 passthru_behavior; + u8 passthru_name_num; + struct rtw_mdns_passthru_name passthru_name[MAX_MDNS_PASSTHRU_NAME_NUM]; +}; + +struct rtw_mdns_ofld_info { + u8 offload_state; + struct rtw_mdns_resp_entry resp_entry[MAX_MDNS_RESP_NUM]; + struct rtw_mdns_passthru_list passthru_list; +}; +#endif #endif /* CONFIG_WOWLAN */ enum Power_Mgnt { @@ -215,8 +258,9 @@ enum _PS_BBRegBackup_ { enum { /* for ips_mode */ IPS_NONE = 0, - IPS_NORMAL, - IPS_LEVEL_2, + IPS_NORMAL = 1, + IPS_FWIPS = 2, + IPS_FWIPS_LCLK = 3, IPS_NUM }; @@ -339,9 +383,14 @@ struct aoac_report { u8 version_info; u8 rekey_ok:1; u8 dummy:7; - u8 reserved[3]; + u8 csa_ch_num; + u8 csa_ch_width; + u8 csa_ch_offset; u8 rxptk_iv[8]; u8 rxgtk_iv[4][8]; + u8 igtk_keyid[2]; + u8 igtk_pkt_num[6]; + u8 igtk[2][32]; }; #ifdef CONFIG_WAR_OFFLOAD @@ -493,6 +542,7 @@ struct pwrctrl_priv { u8 bSupportRemoteWakeup; u8 wowlan_wake_reason; u8 wowlan_last_wake_reason; + u8 wowlan_is_disconnect_reason; u8 wowlan_ap_mode; u8 wowlan_mode; u8 wowlan_p2p_mode; @@ -530,6 +580,7 @@ struct pwrctrl_priv { #endif u8 wowlan_aoac_rpt_loc; struct aoac_report wowlan_aoac_rpt; + u8 wowlan_ips_mode; u8 wowlan_power_mgmt; u8 wowlan_lps_level; #ifdef CONFIG_LPS_1T1R @@ -574,6 +625,9 @@ struct pwrctrl_priv { u32 wowlan_war_offload_mdns_rsp_cur_size; #endif /* CONFIG_OFFLOAD_MDNS_V4 || CONFIG_OFFLOAD_MDNS_V6 */ #endif /* CONFIG_WAR_OFFLOAD */ +#ifdef CONFIG_MDNS_OFFLOAD + struct rtw_mdns_ofld_info mdns_ofld_info; +#endif #endif /* CONFIG_WOWLAN */ _timer pwr_state_check_timer; int pwr_state_check_interval; @@ -616,7 +670,7 @@ struct pwrctrl_priv { #endif #ifdef CONFIG_LPS_PG struct rsvd_page_cache_t lpspg_info; -#ifdef CONFIG_RTL8822C +#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) struct rsvd_page_cache_t lpspg_dpk_info; struct rsvd_page_cache_t lpspg_iqk_info; #endif @@ -708,7 +762,11 @@ void traffic_check_for_leave_lps_by_tp(PADAPTER padapter, u8 tx, struct sta_info void traffic_check_for_leave_lps(PADAPTER padapter, u8 tx, u32 tx_packets); #endif /*CONFIG_CHECK_LEAVE_LPS*/ void rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode, const char *msg); +#ifdef CONFIG_FWLPS_IN_IPS void rtw_set_fw_in_ips_mode(PADAPTER padapter, u8 enable); +u8 rtw_fw_ips_init(_adapter *padapter); +u8 rtw_fw_ips_deinit(_adapter *padapter); +#endif /* CONFIG_FWLPS_IN_IPS */ u8 rtw_set_rpwm(_adapter *padapter, u8 val8); #ifdef CONFIG_WOWLAN void rtw_wow_lps_level_decide(_adapter *adapter, u8 wow_en); @@ -734,6 +792,12 @@ void rtw_unregister_early_suspend(struct pwrctrl_priv *pwrpriv); #endif /* CONFIG_HAS_EARLYSUSPEND || CONFIG_ANDROID_POWER */ u8 rtw_interface_ps_func(_adapter *padapter, HAL_INTF_PS_FUNC efunc_id, u8 *val); +#ifdef CONFIG_FWLPS_IN_IPS +BOOLEAN rtw_is_fw_ips_mode(_adapter *padapter); +#ifdef CONFIG_LPS_LCLK +BOOLEAN rtw_is_fw_ips_lclk_mode(_adapter *padapter); +#endif /* CONFIG_LPS_LCLK */ +#endif /* CONFIG_FWLPS_IN_IPS */ void rtw_set_ips_deny(_adapter *padapter, u32 ms); int _rtw_pwr_wakeup(_adapter *padapter, u32 ips_deffer_ms, const char *caller); #define rtw_pwr_wakeup(adapter) _rtw_pwr_wakeup(adapter, RTW_PWR_STATE_CHK_INTERVAL, __FUNCTION__) @@ -746,6 +810,7 @@ int rtw_pm_set_lps_1t1r(_adapter *padapter, u8 en); #endif void rtw_set_lps_deny(_adapter *adapter, u32 ms); #ifdef CONFIG_WOWLAN +int rtw_pm_set_wow_ips(_adapter *padapter, u8 mode); int rtw_pm_set_wow_lps(_adapter *padapter, u8 mode); int rtw_pm_set_wow_lps_level(_adapter *padapter, u8 level); #ifdef CONFIG_LPS_1T1R diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_recv.h b/drivers/net/wireless/rtl8822cs/include/rtw_recv.h index 188457b85..80d7db915 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_recv.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_recv.h @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -30,11 +30,9 @@ #define NR_RECVBUFF (8) #endif #endif /* CONFIG_SINGLE_RECV_BUF */ -#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER - #define NR_PREALLOC_RECV_SKB (rtw_rtkm_get_nr_recv_skb()>>1) -#else /*!CONFIG_PREALLOC_RX_SKB_BUFFER */ +#ifndef NR_PREALLOC_RECV_SKB #define NR_PREALLOC_RECV_SKB 8 -#endif /* CONFIG_PREALLOC_RX_SKB_BUFFER */ +#endif /* NR_PREALLOC_RECV_SKB */ #ifdef CONFIG_RTW_NAPI #define RTL_NAPI_WEIGHT (32) @@ -226,8 +224,17 @@ struct rx_pkt_attrib { /* #define REORDER_ENTRY_NUM 128 */ #define REORDER_WAIT_TIME (50) /* (ms) */ -#if defined(CONFIG_PLATFORM_RTK390X) && defined(CONFIG_USB_HCI) +#ifdef CONFIG_USB_HCI +#ifdef CONFIG_PLATFORM_I386_PC + #define RECVBUFF_ALIGN_SZ 8 +#elif defined(CONFIG_PLATFORM_RTK390X) #define RECVBUFF_ALIGN_SZ 32 +#else +#ifndef RECVBUFF_ALIGN_SZ + /* Avoid the Synopsys USB host receive buffer size limit */ + #define RECVBUFF_ALIGN_SZ 4096 +#endif +#endif #else #define RECVBUFF_ALIGN_SZ 8 #endif @@ -260,7 +267,10 @@ struct recv_stat { unsigned int rxdw1; -#if !((defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C)) && defined(CONFIG_PCI_HCI)) /* exclude 8192ee, 8814ae, 8822be, 8821ce */ +#if !((defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) \ + || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) \ + || defined(CONFIG_RTL8822E)) && defined(CONFIG_PCI_HCI)) + /* exclude 8192ee, 8814ae, 8822be, 8821ce */ unsigned int rxdw2; unsigned int rxdw3; @@ -530,6 +540,8 @@ struct recv_priv { struct smooth_rssi_data signal_strength_data; #endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ u16 sink_udpport, pre_rtp_rxseq, cur_rtp_rxseq; + u16 pre_wifi_seq, cur_wifi_seq; + u64 rtp_drop_count; BOOLEAN store_law_data_flag; }; @@ -837,15 +849,12 @@ __inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz) /* used for append sz bytes from ptr to rx_tail, update rx_tail and return the updated rx_tail to the caller */ /* after putting, rx_tail must be still larger than rx_end. */ - unsigned char *prev_rx_tail; /* RTW_INFO("recvframe_put: len=%d\n", sz); */ if (precvframe == NULL) return NULL; - prev_rx_tail = precvframe->u.hdr.rx_tail; - precvframe->u.hdr.rx_tail += sz; if (precvframe->u.hdr.rx_tail > precvframe->u.hdr.rx_end) { @@ -856,11 +865,8 @@ __inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz) precvframe->u.hdr.len += sz; return precvframe->u.hdr.rx_tail; - } - - __inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz) { /* rmv data from rx_tail (by yitsen) */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_rf.h b/drivers/net/wireless/rtl8822cs/include/rtw_rf.h index 5fb3230e8..689949ec2 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_rf.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_rf.h @@ -22,6 +22,8 @@ /* slot time for 11g */ #define SHORT_SLOT_TIME 9 #define NON_SHORT_SLOT_TIME 20 +#define SLOT_TIME_10M 0xD +#define SLOT_TIME_5M 0x15 #define CENTER_CH_2G_NUM 14 #define CENTER_CH_2G_40M_NUM 9 @@ -54,24 +56,64 @@ extern u8 center_ch_2g_40m[CENTER_CH_2G_40M_NUM]; u8 center_chs_2g_num(u8 bw); u8 center_chs_2g(u8 bw, u8 id); +#if CONFIG_IEEE80211_BAND_5GHZ extern u8 center_ch_5g_20m[CENTER_CH_5G_20M_NUM]; extern u8 center_ch_5g_40m[CENTER_CH_5G_40M_NUM]; -extern u8 center_ch_5g_20m_40m[CENTER_CH_5G_20M_NUM + CENTER_CH_5G_40M_NUM]; extern u8 center_ch_5g_80m[CENTER_CH_5G_80M_NUM]; +extern u8 center_ch_5g_160m[CENTER_CH_5G_160M_NUM]; extern u8 center_ch_5g_all[CENTER_CH_5G_ALL_NUM]; u8 center_chs_5g_num(u8 bw); u8 center_chs_5g(u8 bw, u8 id); +#endif -u8 rtw_get_scch_by_cch_offset(u8 cch, u8 bw, u8 offset); -u8 rtw_get_scch_by_cch_opch(u8 cch, u8 bw, u8 opch); +#if CONFIG_IEEE80211_BAND_6GHZ +extern u8 center_ch_6g_20m[CENTER_CH_6G_20M_NUM]; +extern u8 center_ch_6g_40m[CENTER_CH_6G_40M_NUM]; +extern u8 center_ch_6g_80m[CENTER_CH_6G_80M_NUM]; +extern u8 center_ch_6g_160m[CENTER_CH_6G_160M_NUM]; -u8 rtw_get_op_chs_by_cch_bw(u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num); +u8 center_chs_6g_num(u8 bw); +u8 center_chs_6g(u8 bw, u8 id); +#endif -u8 rtw_get_offset_by_chbw(u8 ch, u8 bw, u8 *r_offset); -u8 rtw_get_center_ch(u8 ch, u8 bw, u8 offset); +typedef enum band_type { + BAND_ON_2_4G = 0, + BAND_ON_5G = 1, +#if CONFIG_IEEE80211_BAND_6GHZ + BAND_ON_6G = 2, +#endif + BAND_MAX, + BAND_ON_24G = BAND_ON_2_4G, +} BAND_TYPE, *PBAND_TYPE; -u8 rtw_get_ch_group(u8 ch, u8 *group, u8 *cck_group); +extern u8 (*center_chs_num_of_band[BAND_MAX])(u8 bw); +extern u8 (*center_chs_of_band[BAND_MAX])(u8 bw, u8 id); + +RTW_FUNC_2G_5G_ONLY u8 rtw_get_scch_by_cch_offset(u8 cch, u8 bw, u8 offset); +RTW_FUNC_2G_5G_ONLY u8 rtw_get_scch_by_cch_opch(u8 cch, u8 bw, u8 opch); + +RTW_FUNC_2G_5G_ONLY u8 rtw_get_op_chs_by_cch_bw(u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num); + +RTW_FUNC_2G_5G_ONLY u8 rtw_get_offset_by_chbw(u8 ch, u8 bw, u8 *r_offset); +RTW_FUNC_2G_5G_ONLY u8 rtw_get_center_ch(u8 ch, u8 bw, u8 offset); + +RTW_FUNC_2G_5G_ONLY bool rtw_is_chbw_grouped(u8 ch_a, u8 bw_a, u8 offset_a, u8 ch_b, u8 bw_b, u8 offset_b); +RTW_FUNC_2G_5G_ONLY void rtw_sync_chbw(u8 *req_ch, u8 *req_bw, u8 *req_offset, u8 *g_ch, u8 *g_bw, u8 *g_offset); + +u8 rtw_get_scch_by_bcch_offset(enum band_type band, u8 cch, u8 bw, u8 offset); +u8 rtw_get_scch_by_bcch_opch(enum band_type band, u8 cch, u8 bw, u8 opch); + +u8 rtw_get_op_chs_by_bcch_bw(enum band_type band, u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num); + +u8 rtw_get_offset_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 *r_offset); +u8 rtw_get_offsets_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 *r_offset, u8 *r_offset_num); +u8 rtw_get_center_ch_by_band(enum band_type band, u8 ch, u8 bw, u8 offset); + +bool rtw_is_bchbw_grouped(enum band_type band_a, u8 ch_a, u8 bw_a, u8 offset_a + , enum band_type band_b, u8 ch_b, u8 bw_b, u8 offset_b); +void rtw_sync_bchbw(enum band_type *req_band, u8 *req_ch, u8 *req_bw, u8 *req_offset + , enum band_type *g_band, u8 *g_ch, u8 *g_bw, u8 *g_offset); typedef enum _CAPABILITY { cESS = 0x0001, @@ -100,19 +142,24 @@ enum _REG_PREAMBLE_MODE { #define rf_path_char(path) (((path) >= RF_PATH_MAX) ? 'X' : 'A' + (path)) +enum phl_band_idx { + HW_BAND_0, + HW_BAND_MAX +}; + +#define RTW_RLINK_MAX (HW_BAND_MAX) +#define RTW_RLINK_PRIMARY (0) + /* Bandwidth Offset */ #define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0 #define HAL_PRIME_CHNL_OFFSET_LOWER 1 #define HAL_PRIME_CHNL_OFFSET_UPPER 2 -typedef enum _BAND_TYPE { - BAND_ON_2_4G = 0, - BAND_ON_5G = 1, -#if CONFIG_IEEE80211_BAND_6GHZ - BAND_ON_6G = 2, -#endif - BAND_MAX, -} BAND_TYPE, *PBAND_TYPE; +enum chan_offset { + CHAN_OFFSET_NO_EXT = HAL_PRIME_CHNL_OFFSET_DONT_CARE, /*SCN - no secondary channel*/ + CHAN_OFFSET_UPPER = HAL_PRIME_CHNL_OFFSET_LOWER, /*SCA - secondary channel above*/ + CHAN_OFFSET_LOWER = HAL_PRIME_CHNL_OFFSET_UPPER, /*SCB - secondary channel below*/ +}; #ifdef CONFIG_NARROWBAND_SUPPORTING enum nb_config { @@ -139,9 +186,10 @@ enum opc_bw { OPC_BW20 = 0, OPC_BW40PLUS = 1, OPC_BW40MINUS = 2, - OPC_BW80 = 3, - OPC_BW160 = 4, - OPC_BW80P80 = 5, + OPC_BW40 = 3, + OPC_BW80 = 4, + OPC_BW160 = 5, + OPC_BW80P80 = 6, OPC_BW_NUM, }; @@ -152,10 +200,25 @@ extern const u8 _opc_bw_to_ch_width[OPC_BW_NUM]; #define opc_bw_to_ch_width(bw) (((bw) < OPC_BW_NUM) ? _opc_bw_to_ch_width[(bw)] : CHANNEL_WIDTH_MAX) /* global op class APIs */ +struct op_class_t { + u8 class_id; + enum band_type band; + enum opc_bw bw; + u8 *len_ch_attr; +}; + +#define OPC_CH_LIST_LEN(_opc) (_opc.len_ch_attr[0]) +#define OPC_CH_LIST_CH(_opc, _i) (_opc.len_ch_attr[_i + 1]) + +extern const struct op_class_t global_op_class[]; +extern const int global_op_class_num; +const struct op_class_t *get_global_op_class_by_id(u8 gid); bool is_valid_global_op_class_id(u8 gid); +bool is_valid_global_op_class_ch(const struct op_class_t *opc, u8 ch); s16 get_sub_op_class(u8 gid, u8 ch); void dump_global_op_class(void *sel); -u8 rtw_get_op_class_by_chbw(u8 ch, u8 bw, u8 offset); +RTW_FUNC_2G_5G_ONLY u8 rtw_get_op_class_by_chbw(u8 ch, u8 bw, u8 offset); +u8 rtw_get_op_class_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 offset); u8 rtw_get_bw_offset_by_op_class_ch(u8 gid, u8 ch, u8 *bw, u8 *offset); int get_supported_op_class(_adapter *padapter, u8 *op_set, int len); @@ -168,7 +231,7 @@ struct op_ch_t { struct op_class_pref_t { u8 class_id; - BAND_TYPE band; + enum band_type band; enum opc_bw bw; u8 ch_num; /* number of chs */ u8 op_ch_num; /* channel number which is not static non operable */ @@ -176,31 +239,21 @@ struct op_class_pref_t { struct op_ch_t chs[]; }; -int op_class_pref_init(_adapter *adapter); -void op_class_pref_deinit(_adapter *adapter); +struct rf_ctl_t; +int rtw_rfctl_op_class_pref_init(struct rf_ctl_t *rfctl, u8 band_bmp, u8 bw_bmp[]); +void rtw_rfctl_op_class_pref_deinit(struct rf_ctl_t *rfctl); #define REG_BEACON_HINT 0 #define REG_TXPWR_CHANGE 1 #define REG_CHANGE 2 -void op_class_pref_apply_regulatory(_adapter *adapter, u8 reason); +void op_class_pref_apply_regulatory(struct rf_ctl_t *rfctl, u8 reason); struct rf_ctl_t; void dump_cap_spt_op_class_ch(void *sel, struct rf_ctl_t *rfctl, bool detail); void dump_reg_spt_op_class_ch(void *sel, struct rf_ctl_t *rfctl, bool detail); void dump_cur_spt_op_class_ch(void *sel, struct rf_ctl_t *rfctl, bool detail); -/* - * Represent Extention Channel Offset in HT Capabilities - * This is available only in 40Mhz mode. - * */ -typedef enum _EXTCHNL_OFFSET { - EXTCHNL_OFFSET_NO_EXT = 0, - EXTCHNL_OFFSET_UPPER = 1, - EXTCHNL_OFFSET_NO_DEF = 2, - EXTCHNL_OFFSET_LOWER = 3, -} EXTCHNL_OFFSET, *PEXTCHNL_OFFSET; - typedef enum _VHT_DATA_SC { VHT_DATA_SC_DONOT_CARE = 0, VHT_DATA_SC_20_UPPER_OF_80MHZ = 1, @@ -242,16 +295,15 @@ u8 rtw_restrict_trx_path_bmp_by_rftype(u8 trx_path_bmp, enum rf_type type, u8 *t void tx_path_nss_set_default(enum bb_path txpath_nss[], u8 txpath_num_nss[], u8 txpath); void tx_path_nss_set_full_tx(enum bb_path txpath_nss[], u8 txpath_num_nss[], u8 txpath); -#if CONFIG_IEEE80211_BAND_6GHZ -int rtw_6gch2freq(int chan); -#endif - -int rtw_ch2freq(int chan); -int rtw_ch2freq_by_band(BAND_TYPE band, int ch); +RTW_FUNC_2G_5G_ONLY int rtw_ch2freq(int chan); +int rtw_bch2freq(enum band_type band, int ch); int rtw_freq2ch(int freq); -BAND_TYPE rtw_freq2band(int freq); +enum band_type rtw_freq2band(int freq); +enum channel_width rtw_frange_to_bw(u32 hi, u32 lo); bool rtw_freq_consecutive(int a, int b); -bool rtw_chbw_to_freq_range(u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo); +bool rtw_bcchbw_to_freq_range(enum band_type band, u8 c_ch, u8 bw, u32 *hi, u32 *lo); +bool rtw_bchbw_to_freq_range(enum band_type band, u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo); +RTW_FUNC_2G_5G_ONLY bool rtw_chbw_to_freq_range(u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo); struct rf_ctl_t; @@ -263,31 +315,6 @@ void txpwr_idx_get_dbm_str(s8 idx, u8 txgi_max, u8 txgi_pdbm, SIZE_T cwidth, cha void txpwr_mbm_get_dbm_str(s16 mbm, SIZE_T cwidth, char dbm_str[], u8 dbm_str_len); s16 mb_of_ntx(u8 ntx); -#if CONFIG_TXPWR_LIMIT -struct regd_exc_ent { - _list list; - char country[2]; - u8 domain; - char lmt_name[0]; -}; - -void dump_regd_exc_list(void *sel, struct rf_ctl_t *rfctl); -void rtw_regd_exc_add_with_nlen(struct rf_ctl_t *rfctl, const char *country, u8 domain, const char *lmt_name, u32 nlen); -void rtw_regd_exc_add(struct rf_ctl_t *rfctl, const char *country, u8 domain, const char *lmt_name); -struct regd_exc_ent *_rtw_regd_exc_search(struct rf_ctl_t *rfctl, const char *country, u8 domain); -struct regd_exc_ent *rtw_regd_exc_search(struct rf_ctl_t *rfctl, const char *country, u8 domain); -void rtw_regd_exc_list_free(struct rf_ctl_t *rfctl); - -void dump_txpwr_lmt(void *sel, _adapter *adapter); -void rtw_txpwr_lmt_add_with_nlen(struct rf_ctl_t *rfctl, const char *lmt_name, u32 nlen - , u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt); -void rtw_txpwr_lmt_add(struct rf_ctl_t *rfctl, const char *lmt_name - , u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt); -struct txpwr_lmt_ent *_rtw_txpwr_lmt_get_by_name(struct rf_ctl_t *rfctl, const char *lmt_name); -struct txpwr_lmt_ent *rtw_txpwr_lmt_get_by_name(struct rf_ctl_t *rfctl, const char *lmt_name); -void rtw_txpwr_lmt_list_free(struct rf_ctl_t *rfctl); -#endif /* CONFIG_TXPWR_LIMIT */ - #define BB_GAIN_2G 0 #if CONFIG_IEEE80211_BAND_5GHZ #define BB_GAIN_5GLB1 1 @@ -307,29 +334,11 @@ int rtw_ch_to_bb_gain_sel(int ch); void rtw_rf_set_tx_gain_offset(_adapter *adapter, u8 path, s8 offset); void rtw_rf_apply_tx_gain_offset(_adapter *adapter, u8 ch); -/* only check channel ranges */ -#define rtw_is_2g_ch(ch) (ch >= 1 && ch <= 14) -#define rtw_is_5g_ch(ch) ((ch) >= 36 && (ch) <= 177) -#define rtw_is_same_band(a, b) \ - ((rtw_is_2g_ch(a) && rtw_is_2g_ch(b)) \ - || (rtw_is_5g_ch(a) && rtw_is_5g_ch(b))) - -#define rtw_is_5g_band1(ch) ((ch) >= 36 && (ch) <= 48) -#define rtw_is_5g_band2(ch) ((ch) >= 52 && (ch) <= 64) -#define rtw_is_5g_band3(ch) ((ch) >= 100 && (ch) <= 144) -#define rtw_is_5g_band4(ch) ((ch) >= 149 && (ch) <= 177) -#define rtw_is_same_5g_band(a, b) \ - ((rtw_is_5g_band1(a) && rtw_is_5g_band1(b)) \ - || (rtw_is_5g_band2(a) && rtw_is_5g_band2(b)) \ - || (rtw_is_5g_band3(a) && rtw_is_5g_band3(b)) \ - || (rtw_is_5g_band4(a) && rtw_is_5g_band4(b))) - -#define rtw_is_6g_band1(ch) ((ch) >= 1 && (ch) <= 93) -#define rtw_is_6g_band2(ch) ((ch) >= 97 && (ch) <= 117) -#define rtw_is_6g_band3(ch) ((ch) >= 121 && (ch) <= 189) -#define rtw_is_6g_band4(ch) ((ch) >= 193 && (ch) <= 237) +RTW_FUNC_2G_5G_ONLY static inline bool rtw_is_2g_ch(u8 ch) { return ch >= 1 && ch <= 14; } +RTW_FUNC_2G_5G_ONLY static inline bool rtw_is_5g_ch(u8 ch) { return ch >= 36 && ch <= 177; } bool rtw_is_long_cac_range(u32 hi, u32 lo, u8 dfs_region); -bool rtw_is_long_cac_ch(u8 ch, u8 bw, u8 offset, u8 dfs_region); +RTW_FUNC_2G_5G_ONLY bool rtw_is_long_cac_ch(u8 ch, u8 bw, u8 offset, u8 dfs_region); +bool rtw_is_long_cac_bch(enum band_type band, u8 ch, u8 bw, u8 offset, u8 dfs_region); #endif /* _RTL8711_RF_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_rm.h b/drivers/net/wireless/rtl8822cs/include/rtw_rm.h index f0b28838c..002c59219 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_rm.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_rm.h @@ -93,6 +93,7 @@ void rtw_ap_parse_sta_rm_en_cap(_adapter *padapter, int rm_post_event(_adapter *padapter, u32 rmid, enum RM_EV_ID evid); void rm_handler(_adapter *padapter, struct rm_event *pev); +int rm_get_chset(struct rm_obj *prm); u8 rm_add_nb_req(_adapter *padapter, struct sta_info *psta); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_rson.h b/drivers/net/wireless/rtl8822cs/include/rtw_rson.h index 6996738b0..47cd2ba0b 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_rson.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_rson.h @@ -54,7 +54,7 @@ u32 rtw_rson_append_ie(_adapter *padapter, unsigned char *pframe, u32 *len); void rtw_rson_do_disconnect(_adapter *padapter); void rtw_rson_join_done(_adapter *padapter); int rtw_rson_isupdate_roamcan(struct mlme_priv *mlme, struct wlan_network **candidate, struct wlan_network *competitor); -void rtw_rson_show_survey_info(struct seq_file *m, _list *plist, _list *phead); +void rtw_rson_show_survey_info(void *sel, _adapter *padapter); u8 rtw_rson_ap_check_sta(_adapter *padapter, u8 *pframe, uint pkt_len, unsigned short ie_offset); u8 rtw_rson_scan_wk_cmd(_adapter *padapter, int op); void rtw_rson_scan_cmd_hdl(_adapter *padapter, int op); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_security.h b/drivers/net/wireless/rtl8822cs/include/rtw_security.h index 8cd18a910..3f2b90aaa 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_security.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_security.h @@ -25,22 +25,20 @@ enum security_type { _WEP104_ = 0x05, _SMS4_ = 0x06, _GCMP_ = 0x07, +#ifdef CONFIG_IEEE80211W + _BIP_CMAC_128_ = 0x08, + _BIP_GMAC_128_ = 0x09, +#endif _SEC_TYPE_MAX_, /* EXT_SECTYPE=1 */ _SEC_TYPE_256_ = 0x10, _CCMP_256_ = (_AES_ | _SEC_TYPE_256_), _GCMP_256_ = (_GCMP_ | _SEC_TYPE_256_), - #ifdef CONFIG_IEEE80211W - /* EXT_SECTYPE=0, MGNT=1, GK=0/1, KEYID=00/01 */ - _SEC_TYPE_BIT_ = 0x20, - _BIP_CMAC_128_ = (_SEC_TYPE_BIT_), - _BIP_GMAC_128_ = (_SEC_TYPE_BIT_ + 1), - _BIP_GMAC_256_ = (_SEC_TYPE_BIT_ + 2), /* EXT_SECTYPE=1, MGNT=1, GK=1, KEYID=00/01 */ - _BIP_CMAC_256_ = (_SEC_TYPE_BIT_ + 3), - _BIP_MAX_, + _BIP_CMAC_256_ = (_BIP_CMAC_128_ | _SEC_TYPE_256_), + _BIP_GMAC_256_ = (_BIP_GMAC_128_ | _SEC_TYPE_256_), #endif }; @@ -216,7 +214,6 @@ struct security_priv { u8 assoc_info[600]; u8 szofcapability[256]; /* for wpa2 usage */ u8 oidassociation[512]; /* for wpa/wpa2 usage */ - u8 authenticator_ie[256]; /* store ap security information element */ u8 supplicant_ie[256]; /* store sta security information element */ @@ -296,7 +293,7 @@ struct security_priv { } \ } while (0) -#define _AES_IV_LEN_ 8 +#define IV_LENGTH 8 #define SET_ICE_IV_LEN(iv_len, icv_len, encrypt)\ do {\ @@ -419,6 +416,12 @@ u16 rtw_calc_crc(u8 *pdata, int length); #define rtw_sec_chk_auth_type(a, s) \ ((a)->securitypriv.auth_type == (s)) +#define IV_FMT "0x%02x%02x%02x%02x%02x%02x%02x%02x" +#define IV_ARG(iv) iv[7], iv[6], iv[5], iv[4], iv[3], iv[2], iv[1], iv[0] +#define PN_FMT "0x%02x%02x%02x%02x%02x%02x" +#define PN_ARG(pn) pn[5], pn[4], pn[3], pn[2], pn[1], pn[0] +u8 rtw_iv_to_pn(u8 *iv, u8 *pn, u8 *key_id, u32 enc_algo); +u8 rtw_pn_to_iv(u8 *pn, u8 *iv, u8 key_id, u32 enc_algo); #endif /* __RTL871X_SECURITY_H_ */ u32 rtw_calc_crc32(u8 *data, size_t len); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_version.h b/drivers/net/wireless/rtl8822cs/include/rtw_version.h index e33c7763f..4ef09a647 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_version.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_version.h @@ -1,2 +1,2 @@ -#define DRIVERVERSION "v5.14.0.2-0-g4c549b2.20210914_COEX20211210-2727" -#define BTCOEXVERSION "COEX20211210-2727" +#define DRIVERVERSION "v5.15.8.3-17-g157acb413.20240221_COEX20221215-3130" +#define BTCOEXVERSION "COEX20221215-3130" diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_vht.h b/drivers/net/wireless/rtl8822cs/include/rtw_vht.h index 838ebd8f9..a5c5cb0a5 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_vht.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_vht.h @@ -208,7 +208,7 @@ void VHT_caps_handler_infra_ap(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE #endif /* ROKU_PRIVATE */ void VHT_operation_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE); void rtw_process_vht_op_mode_notify(_adapter *padapter, u8 *pframe, void *sta); -u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, struct country_chplan *req_chplan); +u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel); void VHTOnAssocRsp(_adapter *padapter); u8 rtw_vht_mcsmap_to_nss(u8 *pvht_mcs_map); void rtw_vht_nss_to_mcsmap(u8 nss, u8 *target_mcs_map, u8 *cur_mcs_map); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_wapi.h b/drivers/net/wireless/rtl8822cs/include/rtw_wapi.h index fb109f837..8335340dc 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_wapi.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_wapi.h @@ -201,7 +201,7 @@ void rtw_build_beacon_wapi_ie(_adapter *padapter, unsigned char *pframe, struct void rtw_build_assoc_req_wapi_ie(_adapter *padapter, unsigned char *pframe, struct pkt_attrib *pattrib); -void rtw_wapi_on_assoc_ok(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE); +void rtw_wapi_on_assoc_ok(_adapter *padapter); void rtw_wapi_return_one_sta_info(_adapter *padapter, u8 *MacAddr); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_wnm.h b/drivers/net/wireless/rtl8822cs/include/rtw_wnm.h index 8d6bcb56a..fa2b4e66b 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_wnm.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_wnm.h @@ -45,8 +45,7 @@ (_rtw_memcmp((a)->mlmepriv.nb_info.roam_target_addr,\ (c)->network.MacAddress, ETH_ALEN))) -#define rtw_wnm_set_ext_cap_btm(_pEleStart, _val) \ - SET_BITS_TO_LE_1BYTE(((u8 *)(_pEleStart))+2, 3, 1, _val) +#define rtw_wnm_add_btm_ext_cap(d, l) rtw_add_ext_cap_info(d, l, BSS_TRANSITION) #define wnm_btm_bss_term_inc(p) (*((u8 *)((p)+3)) & BSS_TERMINATION_INCLUDED) @@ -54,6 +53,8 @@ #define wnm_btm_dialog_token(p) (*((u8 *)((p)+2))) +#define wnm_btm_query_reason(p) (*((u8 *)((p)+3))) + #define wnm_btm_req_mode(p) (*((u8 *)((p)+3))) #define wnm_btm_disassoc_timer(p) (*((u16 *)((p)+4))) @@ -176,7 +177,14 @@ void rtw_wnm_disassoc_chk_hdl(void *ctx); u8 rtw_wnm_try_btm_roam_imnt(_adapter *padapter); -void rtw_wnm_process_btm_req(_adapter *padapter, u8* pframe, u32 frame_len); +void rtw_wnm_process_btm_query(_adapter *padapter, + u8* pframe, u32 frame_len); + +void rtw_wnm_process_btm_req(_adapter *padapter, + u8* pframe, u32 frame_len); + +void rtw_wnm_process_notification_req( + _adapter *padapter, u8* pframe, u32 frame_len); void rtw_wnm_reset_btm_candidate(struct roam_nb_info *pnb); diff --git a/drivers/net/wireless/rtl8822cs/include/rtw_xmit.h b/drivers/net/wireless/rtl8822cs/include/rtw_xmit.h index 5a6bb5f85..16397dd14 100644 --- a/drivers/net/wireless/rtl8822cs/include/rtw_xmit.h +++ b/drivers/net/wireless/rtl8822cs/include/rtw_xmit.h @@ -18,7 +18,7 @@ #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) #ifdef CONFIG_TX_AGGREGATION - #ifdef CONFIG_RTL8822C + #if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) #ifdef CONFIG_SDIO_TX_FORMAT_DUMMY_AUTO #define MAX_XMITBUF_SZ (51200) #else @@ -100,8 +100,10 @@ #define MAX_CMDBUF_SZ (512 * 18) #elif defined(CONFIG_RTL8723D) && defined(CONFIG_LPS_POFF) #define MAX_CMDBUF_SZ (128*70) /*(8960)*/ -#elif defined(CONFIG_RTL8822C) && defined(CONFIG_WAR_OFFLOAD) +#elif (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) && (defined(CONFIG_WAR_OFFLOAD) || defined(CONFIG_MDNS_OFFLOAD)) #define MAX_CMDBUF_SZ (128*128) /*(16k) */ +#elif defined(CONFIG_RTL8723F) && defined(CONFIG_WAR_OFFLOAD) + #define MAX_CMDBUF_SZ (128*64) /*(8192) */ #else #define MAX_CMDBUF_SZ (5120) /* (4096) */ #endif @@ -221,7 +223,7 @@ enum DEQUEUE_TYPE { defined(CONFIG_RTL8710B) || defined(CONFIG_RTL8192F) ||\ defined(CONFIG_RTL8723F) #define TXDESC_SIZE 40 -#elif defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) +#elif defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) #define TXDESC_SIZE 48 /* HALMAC_TX_DESC_SIZE_8822B */ #elif defined(CONFIG_RTL8821C) #define TXDESC_SIZE 48 /* HALMAC_TX_DESC_SIZE_8821C */ @@ -250,7 +252,9 @@ enum DEQUEUE_TYPE { #endif #ifdef CONFIG_PCI_HCI - #if defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_TRX_BD_ARCH) + #if defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) \ + || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) \ + || defined(CONFIG_RTL8822E) || defined(CONFIG_TRX_BD_ARCH) /* this section is defined for buffer descriptor ring architecture */ #define TX_WIFI_INFO_SIZE (TXDESC_SIZE) /* it may add 802.11 hdr or others... */ /* tx desc and payload are in the same buf */ @@ -289,7 +293,9 @@ struct tx_buf_desc { #endif unsigned int dword[TX_BUFFER_SEG_SIZE * (2 << TX_BUFFER_SEG_NUM)]; } __packed; -#elif (defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C)) && defined(CONFIG_PCI_HCI) /* 8192ee or 8814ae */ +#elif (defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) \ + || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) \ + && defined(CONFIG_PCI_HCI) /* 8192ee or 8814ae */ /* 8192EE_TODO */ struct tx_desc { unsigned int txdw0; @@ -538,6 +544,7 @@ struct submit_ctx { systime submit_time; /* */ u32 timeout_ms; /* <0: not synchronous, 0: wait forever, >0: up to ms waiting */ int status; /* status for operation */ + void *rsp; /* rsp buffer allocated by handler */ #ifdef PLATFORM_LINUX struct completion done; #endif @@ -894,6 +901,10 @@ extern struct xmit_frame *__rtw_alloc_cmdxmitframe_8192ee(struct xmit_priv *pxmi extern struct xmit_frame *__rtw_alloc_cmdxmitframe_8822be(struct xmit_priv *pxmitpriv, enum cmdbuf_type buf_type); #define rtw_alloc_bcnxmitframe(p) __rtw_alloc_cmdxmitframe_8822be(p, CMDBUF_BEACON) +#elif defined(CONFIG_RTL8822E) && defined(CONFIG_PCI_HCI) +extern struct xmit_frame *__rtw_alloc_cmdxmitframe_8822ee(struct xmit_priv *pxmitpriv, + enum cmdbuf_type buf_type); +#define rtw_alloc_bcnxmitframe(p) __rtw_alloc_cmdxmitframe_8822ee(p, CMDBUF_BEACON) #elif defined(CONFIG_RTL8822C) && defined(CONFIG_PCI_HCI) extern struct xmit_frame *__rtw_alloc_cmdxmitframe_8822ce(struct xmit_priv *pxmitpriv, enum cmdbuf_type buf_type); @@ -1012,7 +1023,7 @@ u8 rtw_get_tx_bw_bmp_of_vht_rate(struct dvobj_priv *dvobj, u8 rate, u8 max_bw); s16 rtw_adapter_get_oper_txpwr_max_mbm(_adapter *adapter, bool eirp); s16 rtw_rfctl_get_oper_txpwr_max_mbm(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, u8 ifbmp_mod, u8 if_op, bool eirp); s16 rtw_get_oper_txpwr_max_mbm(struct dvobj_priv *dvobj, bool erip); -s16 rtw_rfctl_get_reg_max_txpwr_mbm(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, bool eirp); +s16 rtw_rfctl_get_reg_max_txpwr_mbm(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset, bool eirp); u8 query_ra_short_GI(struct sta_info *psta, u8 bw); diff --git a/drivers/net/wireless/rtl8822cs/include/sdio_ops.h b/drivers/net/wireless/rtl8822cs/include/sdio_ops.h index 74ddeca29..f605df5cd 100644 --- a/drivers/net/wireless/rtl8822cs/include/sdio_ops.h +++ b/drivers/net/wireless/rtl8822cs/include/sdio_ops.h @@ -74,7 +74,7 @@ void ClearInterrupt8821AS(PADAPTER padapter); #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) #if defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) \ - || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) u8 rtw_hal_enable_cpwm2(_adapter *adapter); #endif extern u8 RecvOnePkt(PADAPTER padapter); diff --git a/drivers/net/wireless/rtl8822cs/include/sta_info.h b/drivers/net/wireless/rtl8822cs/include/sta_info.h index 18216b95b..239e3ac6e 100644 --- a/drivers/net/wireless/rtl8822cs/include/sta_info.h +++ b/drivers/net/wireless/rtl8822cs/include/sta_info.h @@ -269,6 +269,7 @@ struct sta_info { _lock lock; _list list; /* free_sta_queue */ _list hash_list; /* sta_hash */ + bool is_freeing; /* _list asoc_list; */ /* 20061114 */ /* _list sleep_list; */ /* sleep_q */ /* _list wakeup_list; */ /* wakeup_q */ @@ -419,10 +420,6 @@ struct sta_info { u32 akm_suite_type; -#ifdef CONFIG_RTW_80211R - u8 ft_pairwise_key_installed; -#endif - #ifdef CONFIG_NATIVEAP_MLME u8 wpa_ie[32]; @@ -524,6 +521,11 @@ struct sta_info { // u8 tbtx_timeslot; /* This sta_info belong to which time slot. */ #endif +#ifdef CONFIG_RTW_80211R + struct rtw_sta_ft_info_t ft_peer; + u8 ft_pairwise_key_installed; +#endif + /* * Vaiables for queuing TX pkt a short period of time * to wait something ready. @@ -533,6 +535,8 @@ struct sta_info { _workitem tx_q_work; }; +#define STA_MACADDR(sta) (sta)->cmn.mac_addr + #ifdef CONFIG_RTW_MESH #define STA_SET_MESH_PLINK(sta, link) (sta)->plink = link #else @@ -761,13 +765,20 @@ struct sta_info *rtw_get_stainfo_by_offset(struct sta_priv *stapriv, int offset) extern struct sta_info *rtw_alloc_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr); extern u32 rtw_free_stainfo(_adapter *padapter , struct sta_info *psta); extern void rtw_free_all_stainfo(_adapter *padapter); -extern struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr); +extern struct sta_info *rtw_get_stainfo(struct sta_priv *stapriv, const u8 *hwaddr); +struct sta_info *rtw_get_stainfo_to_free(struct sta_priv *stapriv, const u8 *hwaddr); +void rtw_stainfo_claim_to_free_no_lock(struct sta_info *sta); +void rtw_stainfo_claim_to_free(struct sta_info *sta); extern u32 rtw_init_bcmc_stainfo(_adapter *padapter); extern struct sta_info *rtw_get_bcmc_stainfo(_adapter *padapter); #ifdef CONFIG_AP_MODE u16 rtw_aid_alloc(_adapter *adapter, struct sta_info *sta); void dump_aid_status(void *sel, _adapter *adapter); +void rtw_stapriv_asoc_list_lock(struct sta_priv *stapriv); +void rtw_stapriv_asoc_list_unlock(struct sta_priv *stapriv); +void rtw_stapriv_asoc_list_add(struct sta_priv *stapriv, struct sta_info *sta); +void rtw_stapriv_asoc_list_del(struct sta_priv *stapriv, struct sta_info *sta); #endif #if CONFIG_RTW_MACADDR_ACL diff --git a/drivers/net/wireless/rtl8822cs/include/wifi.h b/drivers/net/wireless/rtl8822cs/include/wifi.h index 4d285708f..9ad618afd 100644 --- a/drivers/net/wireless/rtl8822cs/include/wifi.h +++ b/drivers/net/wireless/rtl8822cs/include/wifi.h @@ -1363,4 +1363,7 @@ struct rtw_regulatory { #endif #endif +#define GET_MULTIPLE_BSSID_IDX_INDEX(_pEleStart) \ + LE_BITS_TO_1BYTE((_pEleStart) + 2, 0, 8) + #endif /* _WIFI_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/include/wlan_bssdef.h b/drivers/net/wireless/rtl8822cs/include/wlan_bssdef.h index 38de05ced..028a78619 100644 --- a/drivers/net/wireless/rtl8822cs/include/wlan_bssdef.h +++ b/drivers/net/wireless/rtl8822cs/include/wlan_bssdef.h @@ -248,6 +248,13 @@ typedef struct _WLAN_BSSID_EX { } __attribute__((packed)) WLAN_BSSID_EX, *PWLAN_BSSID_EX; +#define BSS_EX_OP_CH(bss_ex) ((bss_ex)->Configuration.DSConfig) +#define BSS_EX_OP_BAND(bss_ex) (rtw_is_2g_ch(BSS_EX_OP_CH(bss_ex)) ? BAND_ON_24G : BAND_ON_5G) +#ifdef CONFIG_STA_MULTIPLE_BSSID +#define BSS_EX_MBSSID_IDX(bss_ex) ((bss_ex)->mbssid_index) +#else +#define BSS_EX_MBSSID_IDX(bss_ex) 0 +#endif #define BSS_EX_IES(bss_ex) ((bss_ex)->IEs) #define BSS_EX_IES_LEN(bss_ex) ((bss_ex)->IELength) #define BSS_EX_FIXED_IE_OFFSET(bss_ex) ((bss_ex)->Reserved[0] == BSS_TYPE_PROB_REQ ? 0 : 12) @@ -271,27 +278,11 @@ struct beacon_keys { int encryp_protocol; int pairwise_cipher; int group_cipher; + int gmcs; u32 akm; }; -struct wlan_network { - _list list; - int network_type; /* refer to ieee80211.h for WIRELESS_11A/B/G */ - int fixed; /* set to fixed when not to be removed as site-surveying */ - systime last_scanned; /* timestamp for the network */ - systime last_non_hidden_ssid_ap; -#ifdef CONFIG_RTW_MESH -#if CONFIG_RTW_MESH_ACNODE_PREVENT - systime acnode_stime; - systime acnode_notify_etime; -#endif -#endif - int aid; /* will only be valid when a BSS is joinned. */ - int join_res; - struct beacon_keys bcn_keys; - bool bcn_keys_valid; - WLAN_BSSID_EX network; /* must be the last item */ -}; +struct wlan_network; enum VRTL_CARRIER_SENSE { DISABLE_VCS, diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_cfg80211.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_cfg80211.c index 7b7a3edde..dd5f4a689 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_cfg80211.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_cfg80211.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -126,24 +126,6 @@ static const u32 rtw_cipher_suites[] = { .flags = (_flags), \ } -#define CHAN2G(_channel, _freq, _flags) { \ - .band = NL80211_BAND_2GHZ, \ - .center_freq = (_freq), \ - .hw_value = (_channel), \ - .flags = (_flags), \ - .max_antenna_gain = 0, \ - .max_power = 0, \ - } - -#define CHAN5G(_channel, _flags) { \ - .band = NL80211_BAND_5GHZ, \ - .center_freq = 5000 + (5 * (_channel)), \ - .hw_value = (_channel), \ - .flags = (_flags), \ - .max_antenna_gain = 0, \ - .max_power = 0, \ - } - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) /* if wowlan is not supported, kernel generate a disconnect at each suspend * cf: /net/wireless/sysfs.c, so register a stub wowlan. @@ -181,282 +163,9 @@ static struct ieee80211_rate rtw_rates[] = { #define rtw_g_rates (rtw_rates + 0) #define RTW_G_RATES_NUM 12 -/* from center_ch_2g */ -static struct ieee80211_channel rtw_2ghz_channels[MAX_CHANNEL_NUM_2G] = { - CHAN2G(1, 2412, 0), - CHAN2G(2, 2417, 0), - CHAN2G(3, 2422, 0), - CHAN2G(4, 2427, 0), - CHAN2G(5, 2432, 0), - CHAN2G(6, 2437, 0), - CHAN2G(7, 2442, 0), - CHAN2G(8, 2447, 0), - CHAN2G(9, 2452, 0), - CHAN2G(10, 2457, 0), - CHAN2G(11, 2462, 0), - CHAN2G(12, 2467, 0), - CHAN2G(13, 2472, 0), - CHAN2G(14, 2484, 0), -}; - -/* from center_ch_5g_20m */ -static struct ieee80211_channel rtw_5ghz_a_channels[MAX_CHANNEL_NUM_5G] = { - CHAN5G(36, 0), CHAN5G(40, 0), CHAN5G(44, 0), CHAN5G(48, 0), - - CHAN5G(52, 0), CHAN5G(56, 0), CHAN5G(60, 0), CHAN5G(64, 0), - - CHAN5G(100, 0), CHAN5G(104, 0), CHAN5G(108, 0), CHAN5G(112, 0), - CHAN5G(116, 0), CHAN5G(120, 0), CHAN5G(124, 0), CHAN5G(128, 0), - CHAN5G(132, 0), CHAN5G(136, 0), CHAN5G(140, 0), CHAN5G(144, 0), - - CHAN5G(149, 0), CHAN5G(153, 0), CHAN5G(157, 0), CHAN5G(161, 0), - CHAN5G(165, 0), CHAN5G(169, 0), CHAN5G(173, 0), CHAN5G(177, 0), -}; - -enum nl80211_band _rtw_band_to_nl80211_band[] = { - [BAND_ON_2_4G] = NL80211_BAND_2GHZ, - [BAND_ON_5G] = NL80211_BAND_5GHZ, -#if CONFIG_IEEE80211_BAND_6GHZ - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) - [BAND_ON_6G] = NL80211_BAND_6GHZ, - #else - [BAND_ON_6G] = NUM_NL80211_BANDS, - #endif -#endif -}; - -BAND_TYPE _nl80211_band_to_rtw_band[] = { - [NL80211_BAND_2GHZ] = BAND_ON_2_4G, - [NL80211_BAND_5GHZ] = BAND_ON_5G, -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) - [NL80211_BAND_60GHZ] = BAND_MAX, -#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) - #if CONFIG_IEEE80211_BAND_6GHZ - [NL80211_BAND_6GHZ] = BAND_ON_6G, - #else - [NL80211_BAND_6GHZ] = BAND_MAX, - #endif -#endif -}; - - +#ifdef CONFIG_AP_MODE static int rtw_cfg80211_set_assocresp_ies(struct net_device *net, const u8 *buf, int len); - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) -static u8 rtw_chbw_to_cfg80211_chan_def(struct wiphy *wiphy, struct cfg80211_chan_def *chdef, u8 ch, u8 bw, u8 offset, u8 ht) -{ - int freq, cfreq; - struct ieee80211_channel *chan; - u8 ret = _FAIL; - - _rtw_memset(chdef, 0, sizeof(*chdef)); - - freq = rtw_ch2freq(ch); - if (!freq) - goto exit; - - cfreq = rtw_get_center_ch(ch, bw, offset); - if (!cfreq) - goto exit; - cfreq = rtw_ch2freq(cfreq); - if (!cfreq) - goto exit; - - chan = ieee80211_get_channel(wiphy, freq); - if (!chan) - goto exit; - - if (bw == CHANNEL_WIDTH_20) - chdef->width = ht ? NL80211_CHAN_WIDTH_20 : NL80211_CHAN_WIDTH_20_NOHT; - else if (bw == CHANNEL_WIDTH_40) - chdef->width = NL80211_CHAN_WIDTH_40; - else if (bw == CHANNEL_WIDTH_80) - chdef->width = NL80211_CHAN_WIDTH_80; - else if (bw == CHANNEL_WIDTH_160) - chdef->width = NL80211_CHAN_WIDTH_160; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) - else if (bw == CHANNEL_WIDTH_5) - chdef->width = NL80211_CHAN_WIDTH_5; - else if (bw == CHANNEL_WIDTH_10) - chdef->width = NL80211_CHAN_WIDTH_10; -#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) */ - else { - rtw_warn_on(1); - goto exit; - } - - chdef->chan = chan; - chdef->center_freq1 = cfreq; - - ret = _SUCCESS; - -exit: - return ret; -} - -static const char *nl80211_chan_width_str(enum nl80211_chan_width cwidth) -{ - switch (cwidth) { - case NL80211_CHAN_WIDTH_20_NOHT: - return "20_NOHT"; - case NL80211_CHAN_WIDTH_20: - return "20"; - case NL80211_CHAN_WIDTH_40: - return "40"; - case NL80211_CHAN_WIDTH_80: - return "80"; - case NL80211_CHAN_WIDTH_80P80: - return "80+80"; - case NL80211_CHAN_WIDTH_160: - return "160"; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) - case NL80211_CHAN_WIDTH_5: - return "5"; - case NL80211_CHAN_WIDTH_10: - return "10"; #endif - default: - return "INVALID"; - }; -} - -static void rtw_get_chbw_from_cfg80211_chan_def(struct cfg80211_chan_def *chdef, u8 *ht, u8 *ch, u8 *bw, u8 *offset) -{ - int pri_freq; - struct ieee80211_channel *chan = chdef->chan; - - pri_freq = rtw_ch2freq(chan->hw_value); - if (!pri_freq) { - RTW_INFO("invalid channel:%d\n", chan->hw_value); - rtw_warn_on(1); - *ch = 0; - return; - } - - switch (chdef->width) { - case NL80211_CHAN_WIDTH_20_NOHT: - *ht = 0; - *bw = CHANNEL_WIDTH_20; - *offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - *ch = chan->hw_value; - break; - case NL80211_CHAN_WIDTH_20: - *ht = 1; - *bw = CHANNEL_WIDTH_20; - *offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - *ch = chan->hw_value; - break; - case NL80211_CHAN_WIDTH_40: - *ht = 1; - *bw = CHANNEL_WIDTH_40; - *offset = pri_freq > chdef->center_freq1 ? HAL_PRIME_CHNL_OFFSET_UPPER : HAL_PRIME_CHNL_OFFSET_LOWER; - if (rtw_get_offset_by_chbw(chan->hw_value, *bw, offset)) - *ch = chan->hw_value; - break; - case NL80211_CHAN_WIDTH_80: - *ht = 1; - *bw = CHANNEL_WIDTH_80; - if (rtw_get_offset_by_chbw(chan->hw_value, *bw, offset)) - *ch = chan->hw_value; - break; - case NL80211_CHAN_WIDTH_160: - *ht = 1; - *bw = CHANNEL_WIDTH_160; - if (rtw_get_offset_by_chbw(chan->hw_value, *bw, offset)) - *ch = chan->hw_value; - break; - case NL80211_CHAN_WIDTH_80P80: - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) - case NL80211_CHAN_WIDTH_5: - case NL80211_CHAN_WIDTH_10: - #endif - default: - *ht = 0; - *bw = CHANNEL_WIDTH_20; - *offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - RTW_INFO("unsupported cwidth:%s\n", nl80211_chan_width_str(chdef->width)); - rtw_warn_on(1); - }; -} - -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)) -static const char *nl80211_channel_type_str(enum nl80211_channel_type ctype) -{ - switch (ctype) { - case NL80211_CHAN_NO_HT: - return "NO_HT"; - case NL80211_CHAN_HT20: - return "HT20"; - case NL80211_CHAN_HT40MINUS: - return "HT40-"; - case NL80211_CHAN_HT40PLUS: - return "HT40+"; - default: - return "INVALID"; - }; -} - -static enum nl80211_channel_type rtw_chbw_to_nl80211_channel_type(u8 ch, u8 bw, u8 offset, u8 ht) -{ - rtw_warn_on(!ht && (bw >= CHANNEL_WIDTH_40 || offset != HAL_PRIME_CHNL_OFFSET_DONT_CARE)); - - if (!ht) - return NL80211_CHAN_NO_HT; - if (bw >= CHANNEL_WIDTH_40) { - if (offset == HAL_PRIME_CHNL_OFFSET_UPPER) - return NL80211_CHAN_HT40MINUS; - else if (offset == HAL_PRIME_CHNL_OFFSET_LOWER) - return NL80211_CHAN_HT40PLUS; - else - rtw_warn_on(1); - } - return NL80211_CHAN_HT20; -} - -static void rtw_get_chbw_from_nl80211_channel_type(struct ieee80211_channel *chan, enum nl80211_channel_type ctype, u8 *ht, u8 *ch, u8 *bw, u8 *offset) -{ - int pri_freq; - - pri_freq = rtw_ch2freq(chan->hw_value); - if (!pri_freq) { - RTW_INFO("invalid channel:%d\n", chan->hw_value); - rtw_warn_on(1); - *ch = 0; - return; - } - *ch = chan->hw_value; - - switch (ctype) { - case NL80211_CHAN_NO_HT: - *ht = 0; - *bw = CHANNEL_WIDTH_20; - *offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - break; - case NL80211_CHAN_HT20: - *ht = 1; - *bw = CHANNEL_WIDTH_20; - *offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - break; - case NL80211_CHAN_HT40MINUS: - *ht = 1; - *bw = CHANNEL_WIDTH_40; - *offset = HAL_PRIME_CHNL_OFFSET_UPPER; - break; - case NL80211_CHAN_HT40PLUS: - *ht = 1; - *bw = CHANNEL_WIDTH_40; - *offset = HAL_PRIME_CHNL_OFFSET_LOWER; - break; - default: - *ht = 0; - *bw = CHANNEL_WIDTH_20; - *offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - RTW_INFO("unsupported ctype:%s\n", nl80211_channel_type_str(ctype)); - rtw_warn_on(1); - }; -} -#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)) */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)) bool rtw_cfg80211_allow_ch_switch_notify(_adapter *adapter) @@ -485,13 +194,21 @@ u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset, #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) struct cfg80211_chan_def chdef; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + u16 punct_bitmap = 0; /*TBD*/ +#endif + ret = rtw_chbw_to_cfg80211_chan_def(wiphy, &chdef, ch, bw, offset, ht); if (ret != _SUCCESS) goto exit; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) if (started) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, 0, false, punct_bitmap); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) + cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, 0, false); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)) /* --- cfg80211_ch_switch_started_notfiy() --- * A new parameter, bool quiet, is added from Linux kernel v5.11, @@ -512,7 +229,13 @@ u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset, if (!rtw_cfg80211_allow_ch_switch_notify(adapter)) goto exit; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0, punct_bitmap); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) + cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0); +#else cfg80211_ch_switch_notify(adapter->pnetdev, &chdef); +#endif #else int freq = rtw_ch2freq(ch); @@ -535,15 +258,17 @@ exit: } #endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)) */ -void rtw_2g_channels_init(struct ieee80211_channel *channels) +static void rtw_2g_channels_init(struct ieee80211_channel *channels) { - _rtw_memcpy((void *)channels, (void *)rtw_2ghz_channels, sizeof(rtw_2ghz_channels)); + _rtw_memcpy(channels, rtw_2ghz_channels, sizeof(rtw_2ghz_channels)); } -void rtw_5g_channels_init(struct ieee80211_channel *channels) +#if CONFIG_IEEE80211_BAND_5GHZ +static void rtw_5g_channels_init(struct ieee80211_channel *channels) { - _rtw_memcpy((void *)channels, (void *)rtw_5ghz_a_channels, sizeof(rtw_5ghz_a_channels)); + _rtw_memcpy(channels, rtw_5ghz_a_channels, sizeof(rtw_5ghz_a_channels)); } +#endif void rtw_2g_rates_init(struct ieee80211_rate *rates) { @@ -831,10 +556,12 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_net u16 channel; u32 freq; u64 notify_timestamp; +#if 0 u16 notify_capability; u16 notify_interval; u8 *notify_ie; size_t notify_ielen; +#endif s32 notify_signal; /* u8 buf[MAX_BSSINFO_LEN]; */ @@ -885,11 +612,13 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_net else notify_timestamp = rtw_get_systime_us(); +#if 0 notify_interval = le16_to_cpu(*(u16 *)rtw_get_beacon_interval_from_ie(pnetwork->network.IEs)); notify_capability = le16_to_cpu(*(u16 *)rtw_get_capability_from_ie(pnetwork->network.IEs)); notify_ie = pnetwork->network.IEs + _FIXED_IE_LENGTH_; notify_ielen = pnetwork->network.IELength - _FIXED_IE_LENGTH_; +#endif /* We've set wiphy's signal_type as CFG80211_SIGNAL_TYPE_MBM: signal strength in mBm (100*dBm) */ if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE) == _TRUE && @@ -1063,8 +792,10 @@ void rtw_cfg80211_ibss_indicate_connect(_adapter *padapter) return ; } } else { - if (scanned == NULL) + if (scanned == NULL) { rtw_warn_on(1); + return; + } if (_rtw_memcmp(&(scanned->network.Ssid), &(pnetwork->Ssid), sizeof(NDIS_802_11_SSID)) == _TRUE && _rtw_memcmp(scanned->network.MacAddress, pnetwork->MacAddress, sizeof(NDIS_802_11_MAC_ADDRESS)) == _TRUE @@ -1170,16 +901,22 @@ check_bss: if (rtw_to_roam(padapter) > 0) { #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) struct wiphy *wiphy = pwdev->wiphy; + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) struct ieee80211_channel *notify_channel; u32 freq; u16 channel = cur_network->network.Configuration.DSConfig; freq = rtw_ch2freq(channel); notify_channel = ieee80211_get_channel(wiphy, freq); + #endif /* kernel < v4.12.0 */ #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) || defined(CONFIG_MLD_KERNEL_PATCH) + roam_info.links[0].bssid = cur_network->network.MacAddress; + #else roam_info.bssid = cur_network->network.MacAddress; + #endif roam_info.req_ie = pmlmepriv->assoc_req + sizeof(struct rtw_ieee80211_hdr_3addr) + 2; roam_info.req_ie_len = pmlmepriv->assoc_req_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 2; roam_info.resp_ie = pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6; @@ -1337,6 +1074,16 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa , FUNC_ADPT_ARG(padapter), MAC_ARG(param->sta_addr)); goto exit; } + #ifdef CONFIG_RTW_80211R_AP + if ((psta->authalg == WLAN_AUTH_FT) && + !(psta->state & WIFI_FW_ASSOC_SUCCESS)) { + ret = -EINVAL; + RTW_INFO(FUNC_ADPT_FMT", sta "MAC_FMT + " not ready to setkey before assoc success!\n" + , FUNC_ADPT_ARG(padapter), MAC_ARG(param->sta_addr)); + goto exit; + } + #endif } if (strcmp(param->u.crypt.alg, "none") == 0 && (psta == NULL)) { @@ -1511,6 +1258,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa if (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X && psta) { /* psk/802_1x */ if (param->u.crypt.set_tx == 1) { + u8 iv[IV_LENGTH]; + /* pairwise key */ if (param->u.crypt.key_len == 32) _rtw_memcpy(psta->dot118021x_UncstKey.skey, @@ -1576,6 +1325,15 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa psta->dot11txpn.val = RTW_GET_LE64(param->u.crypt.seq); psta->dot11rxpn.val = RTW_GET_LE64(param->u.crypt.seq); + if (rtw_pn_to_iv(param->u.crypt.seq, + iv, param->u.crypt.idx, + padapter->securitypriv.dot11PrivacyAlgrthm)) { + struct stainfo_rxcache *prxcache = &psta->sta_recvpriv.rxcache; + int i; + + for (i = 0; i < TID_NUM; i++) + _rtw_memcpy(prxcache->iv[i], iv, IV_LENGTH); + } psta->ieee8021x_blocked = _FALSE; if (psta->dot118021XPrivacy != _NO_PRIVACY_) { @@ -1797,6 +1555,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param psta->dot118021XPrivacy = padapter->securitypriv.dot11PrivacyAlgrthm; if (param->u.crypt.set_tx == 1) { /* pairwise key */ + u8 iv[IV_LENGTH]; + RTW_INFO(FUNC_ADPT_FMT" set %s PTK idx:%u, len:%u\n" , FUNC_ADPT_ARG(padapter), param->u.crypt.alg, param->u.crypt.idx, param->u.crypt.key_len); @@ -1819,6 +1579,15 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param } psta->dot11txpn.val = RTW_GET_LE64(param->u.crypt.seq); psta->dot11rxpn.val = RTW_GET_LE64(param->u.crypt.seq); + if (rtw_pn_to_iv(param->u.crypt.seq, + iv, param->u.crypt.idx, + padapter->securitypriv.dot11PrivacyAlgrthm)) { + struct stainfo_rxcache *prxcache = &psta->sta_recvpriv.rxcache; + int i; + + for (i = 0; i < TID_NUM; i++) + _rtw_memcpy(prxcache->iv[i], iv, IV_LENGTH); + } psta->bpairwise_key_installed = _TRUE; #ifdef CONFIG_RTW_80211R psta->ft_pairwise_key_installed = _TRUE; @@ -1943,6 +1712,9 @@ exit: } static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + , int link_id +#endif , u8 key_index #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE) , bool pairwise @@ -1967,6 +1739,9 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE) RTW_INFO(FUNC_NDEV_FMT" pairwise=%d\n", FUNC_NDEV_ARG(ndev), pairwise); #endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + RTW_INFO(FUNC_NDEV_FMT" link_id=%d\n", FUNC_NDEV_ARG(ndev), link_id); +#endif if (rtw_cfg80211_sync_iftype(padapter) != _SUCCESS) { ret = -ENOTSUPP; @@ -2105,6 +1880,9 @@ addkey_end: } static int cfg80211_rtw_get_key(struct wiphy *wiphy, struct net_device *ndev +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + , int link_id +#endif , u8 keyid #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE) , bool pairwise @@ -2138,6 +1916,10 @@ static int cfg80211_rtw_get_key(struct wiphy *wiphy, struct net_device *ndev struct key_params params; int ret = -ENOENT; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + RTW_INFO(FUNC_NDEV_FMT" link_id=%d\n", FUNC_NDEV_ARG(ndev), link_id); +#endif + if (keyid >= WEP_KEYS #ifdef CONFIG_IEEE80211W && keyid > BIP_MAX_KEYID @@ -2292,17 +2074,23 @@ exit: return ret; } -static int cfg80211_rtw_del_key(struct wiphy *wiphy, struct net_device *ndev, +static int cfg80211_rtw_del_key(struct wiphy *wiphy, struct net_device *ndev +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + , int link_id +#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE) - u8 key_index, bool pairwise, const u8 *mac_addr) -#else /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) */ - u8 key_index, const u8 *mac_addr) + , u8 key_index, bool pairwise, const u8 *mac_addr) +#else /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) */ + , u8 key_index, const u8 *mac_addr) #endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) */ { _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); struct security_priv *psecuritypriv = &padapter->securitypriv; RTW_INFO(FUNC_NDEV_FMT" key_index=%d, addr=%pM\n", FUNC_NDEV_ARG(ndev), key_index, mac_addr); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + RTW_INFO(FUNC_NDEV_FMT" link_id=%d\n", FUNC_NDEV_ARG(ndev), link_id); +#endif if (key_index == psecuritypriv->dot11PrivacyKeyIndex) { /* clear the flag of wep default key set. */ @@ -2312,8 +2100,11 @@ static int cfg80211_rtw_del_key(struct wiphy *wiphy, struct net_device *ndev, return 0; } -static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, - struct net_device *ndev, u8 key_index +static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, struct net_device *ndev +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + , int link_id +#endif + , u8 key_index #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)) || defined(COMPAT_KERNEL_RELEASE) , bool unicast, bool multicast #endif @@ -2340,6 +2131,10 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, SET_DEF_KEY_PARAM_ARG_2_6_38 ); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + RTW_INFO(FUNC_NDEV_FMT" link_id=%d\n", FUNC_NDEV_ARG(ndev), link_id); +#endif + if ((key_index < WEP_KEYS) && ((psecuritypriv->dot11PrivacyAlgrthm == _WEP40_) || (psecuritypriv->dot11PrivacyAlgrthm == _WEP104_))) { /* set wep default key */ psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled; @@ -2360,8 +2155,11 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, } #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) -int cfg80211_rtw_set_default_mgmt_key(struct wiphy *wiphy, - struct net_device *ndev, u8 key_index) +int cfg80211_rtw_set_default_mgmt_key(struct wiphy *wiphy, struct net_device *ndev +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + , int link_id +#endif + , u8 key_index) { #define SET_DEF_KEY_PARAM_FMT " key_index=%d" #define SET_DEF_KEY_PARAM_ARG , key_index @@ -2371,6 +2169,9 @@ int cfg80211_rtw_set_default_mgmt_key(struct wiphy *wiphy, "\n", FUNC_NDEV_ARG(ndev) SET_DEF_KEY_PARAM_ARG ); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + RTW_INFO(FUNC_NDEV_FMT" link_id=%d\n", FUNC_NDEV_ARG(ndev), link_id); +#endif return 0; } @@ -2977,22 +2778,21 @@ void rtw_cfg80211_unlink_bss(_adapter *padapter, struct wlan_network *pnetwork) struct wireless_dev *pwdev = padapter->rtw_wdev; struct wiphy *wiphy = pwdev->wiphy; struct cfg80211_bss *bss = NULL; - WLAN_BSSID_EX select_network = pnetwork->network; bss = cfg80211_get_bss(wiphy, NULL/*notify_channel*/, - select_network.MacAddress, select_network.Ssid.Ssid, - select_network.Ssid.SsidLength, + pnetwork->network.MacAddress, pnetwork->network.Ssid.Ssid, + pnetwork->network.Ssid.SsidLength, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - select_network.InfrastructureMode == Ndis802_11Infrastructure?IEEE80211_BSS_TYPE_ESS:IEEE80211_BSS_TYPE_IBSS, - IEEE80211_PRIVACY(select_network.Privacy)); + pnetwork->network.InfrastructureMode == Ndis802_11Infrastructure?IEEE80211_BSS_TYPE_ESS:IEEE80211_BSS_TYPE_IBSS, + IEEE80211_PRIVACY(pnetwork->network.Privacy)); #else - select_network.InfrastructureMode == Ndis802_11Infrastructure?WLAN_CAPABILITY_ESS:WLAN_CAPABILITY_IBSS, - select_network.InfrastructureMode == Ndis802_11Infrastructure?WLAN_CAPABILITY_ESS:WLAN_CAPABILITY_IBSS); + pnetwork->network.InfrastructureMode == Ndis802_11Infrastructure?WLAN_CAPABILITY_ESS:WLAN_CAPABILITY_IBSS, + pnetwork->network.InfrastructureMode == Ndis802_11Infrastructure?WLAN_CAPABILITY_ESS:WLAN_CAPABILITY_IBSS); #endif if (bss) { cfg80211_unlink_bss(wiphy, bss); - RTW_INFO("%s(): cfg80211_unlink %s!!\n", __func__, select_network.Ssid.Ssid); + RTW_INFO("%s(): cfg80211_unlink %s!!\n", __func__, pnetwork->network.Ssid.Ssid); #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) cfg80211_put_bss(padapter->rtw_wdev->wiphy, bss); #else @@ -3023,8 +2823,7 @@ exit: static void _rtw_cfg80211_surveydone_event_callback(_adapter *padapter, struct cfg80211_scan_request *scan_req) { - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; + struct rtw_chset *chset = adapter_to_chset(padapter); _irqL irqL; _list *plist, *phead; struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); @@ -3064,9 +2863,7 @@ static void _rtw_cfg80211_surveydone_event_callback(_adapter *padapter, struct c if (rtw_chset_search_ch(chset, ch) >= 0 && rtw_mlme_band_check(padapter, ch) == _TRUE && _TRUE == rtw_validate_ssid(&(pnetwork->network.Ssid)) - && (!IS_DFS_SLAVE_WITH_RD(rfctl) - || rtw_rfctl_dfs_domain_unknown(rfctl) - || !rtw_chset_is_ch_non_ocp(chset, ch)) + && !rtw_chset_is_ch_non_ocp(chset, ch) ) { if (target_wps_scan) rtw_cfg80211_clear_wps_sr_of_non_target_bss(padapter, pnetwork, &target_ssid); @@ -3297,7 +3094,7 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy int i; u8 _status = _FALSE; int ret = 0; - struct sitesurvey_parm parm; + struct sitesurvey_parm *parm = NULL; _irqL irqL; u8 survey_times = 3; u8 survey_times_for_one_ch = 6; @@ -3352,11 +3149,11 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy request->mac_addr_mask); print_hex_dump(KERN_DEBUG, "random mac_addr: ", DUMP_PREFIX_OFFSET, 16, 1, pwdev_priv->pno_mac_addr, ETH_ALEN, 1); - } - else - memset(pwdev_priv->pno_mac_addr, 0xFF, ETH_ALEN); - + } else #endif + { + memset(pwdev_priv->pno_mac_addr, 0xFF, ETH_ALEN); + } #endif @@ -3617,53 +3414,57 @@ bypass_p2p_chk: } #endif /* CONFIG_P2P */ - rtw_init_sitesurvey_parm(padapter, &parm); + parm = (struct sitesurvey_parm *)rtw_malloc(sizeof(struct sitesurvey_parm)); + if (!parm) { + ret = -ENOMEM; + goto exit; + } + rtw_init_sitesurvey_parm(padapter, parm); /* parsing request ssids, n_ssids */ for (i = 0; i < request->n_ssids && ssids && i < RTW_SSID_SCAN_AMOUNT; i++) { #ifdef CONFIG_DEBUG_CFG80211 RTW_INFO("ssid=%s, len=%d\n", ssids[i].ssid, ssids[i].ssid_len); #endif - _rtw_memcpy(&parm.ssid[i].Ssid, ssids[i].ssid, ssids[i].ssid_len); - parm.ssid[i].SsidLength = ssids[i].ssid_len; + _rtw_memcpy(parm->ssid[i].Ssid, ssids[i].ssid, ssids[i].ssid_len); + parm->ssid[i].SsidLength = ssids[i].ssid_len; } - parm.ssid_num = i; + parm->ssid_num = i; /* no ssid entry, set the scan type as passvie */ if (request->n_ssids == 0) - parm.scan_mode = SCAN_PASSIVE; + parm->scan_mode = SCAN_PASSIVE; /* parsing channels, n_channels */ for (i = 0; i < request->n_channels && i < RTW_CHANNEL_SCAN_AMOUNT; i++) { #ifdef CONFIG_DEBUG_CFG80211 RTW_INFO(FUNC_ADPT_FMT CHAN_FMT"\n", FUNC_ADPT_ARG(padapter), CHAN_ARG(request->channels[i])); #endif - parm.ch[i].hw_value = request->channels[i]->hw_value; - parm.ch[i].flags = request->channels[i]->flags; + parm->ch[i].hw_value = request->channels[i]->hw_value; + parm->ch[i].flags = request->channels[i]->flags; } - parm.ch_num = i; + parm->ch_num = i; if (request->n_channels == 1) { for (i = 1; i < survey_times_for_one_ch; i++) - _rtw_memcpy(&parm.ch[i], &parm.ch[0], sizeof(struct rtw_ieee80211_channel)); - parm.ch_num = survey_times_for_one_ch; + _rtw_memcpy(&(parm->ch[i]), &(parm->ch[0]), sizeof(struct rtw_ieee80211_channel)); + parm->ch_num = survey_times_for_one_ch; } else if (request->n_channels <= 4) { for (j = request->n_channels - 1; j >= 0; j--) for (i = 0; i < survey_times; i++) - _rtw_memcpy(&parm.ch[j * survey_times + i], &parm.ch[j], sizeof(struct rtw_ieee80211_channel)); - parm.ch_num = survey_times * request->n_channels; + _rtw_memcpy(&(parm->ch[j * survey_times + i]), &(parm->ch[j]), sizeof(struct rtw_ieee80211_channel)); + parm->ch_num = survey_times * request->n_channels; } _enter_critical_bh(&pwdev_priv->scan_req_lock, &irqL); _enter_critical_bh(&pmlmepriv->lock, &irqL); - _status = rtw_sitesurvey_cmd(padapter, &parm); + _status = rtw_sitesurvey_cmd(padapter, parm); if (_status == _SUCCESS) pwdev_priv->scan_request = request; else ret = -1; _exit_critical_bh(&pmlmepriv->lock, &irqL); _exit_critical_bh(&pwdev_priv->scan_req_lock, &irqL); - check_need_indicate_scan_done: if (_TRUE == need_indicate_scan_done) { #if (KERNEL_VERSION(4, 8, 0) <= LINUX_VERSION_CODE) @@ -3691,7 +3492,8 @@ exit: if (pmlmepriv) pmlmepriv->lastscantime = rtw_get_current_time(); #endif - + if (parm) + rtw_mfree(parm, sizeof(struct sitesurvey_parm)); return ret; } @@ -3953,7 +3755,7 @@ static int rtw_cfg80211_set_key_mgt(struct security_priv *psecuritypriv, u32 key static int rtw_cfg80211_set_wpa_ie(_adapter *padapter, u8 *pie, size_t ielen) { - u8 *buf = NULL, *pos = NULL; + u8 *buf = NULL; int group_cipher = 0, pairwise_cipher = 0; u8 mfp_opt = MFP_NO; int ret = 0; @@ -3985,7 +3787,6 @@ static int rtw_cfg80211_set_wpa_ie(_adapter *padapter, u8 *pie, size_t ielen) RTW_INFO("set wpa_ie(length:%zu):\n", ielen); RTW_INFO_DUMP(NULL, buf, ielen); - pos = buf; if (ielen < RSN_HEADER_LEN) { ret = -1; goto exit; @@ -4326,7 +4127,7 @@ leave_ibss: rtw_wdev_set_not_indic_disco(adapter_wdev_data(padapter), 0); #endif - return 0; + return ret; } bool rtw_cfg80211_is_connect_requested(_adapter *adapter) @@ -4381,26 +4182,30 @@ static int _rtw_disconnect(struct wiphy *wiphy, struct net_device *ndev) && !defined(CONFIG_KERNEL_PATCH_EXTERNAL_AUTH) static bool rtw_check_connect_sae_compat(struct cfg80211_connect_params *sme) { - struct rtw_ieee802_11_elems elems; + struct rtw_ieee802_11_elems *elems = NULL; struct rsne_info info; u8 AKM_SUITE_SAE[] = { 0x00, 0x0f, 0xac, 8 }; #ifdef CONFIG_RTW_80211R u8 AKM_SUITE_FTSAE[] = { 0x00, 0x0f, 0xac, 9 }; #endif int i; + bool ret = false; if (sme->auth_type != (int)MLME_AUTHTYPE_SHARED_KEY) return false; - if (rtw_ieee802_11_parse_elems((u8 *)sme->ie, sme->ie_len, &elems, 0) + elems = (struct rtw_ieee802_11_elems *)rtw_malloc(sizeof(struct rtw_ieee802_11_elems)); + if (!elems) + return false; + if (rtw_ieee802_11_parse_elems((u8 *)sme->ie, sme->ie_len, elems, 0) == ParseFailed) - return false; + goto exit; - if (!elems.rsn_ie) - return false; + if (!elems->rsn_ie) + goto exit; - if (rtw_rsne_info_parse(elems.rsn_ie - 2, elems.rsn_ie_len + 2, &info) == _FAIL) - return false; + if (rtw_rsne_info_parse(elems->rsn_ie - 2, elems->rsn_ie_len + 2, &info) == _FAIL) + goto exit; for (i = 0; i < info.akm_cnt; i++) { if ((memcmp(info.akm_list + i * RSN_SELECTOR_LEN, @@ -4410,9 +4215,13 @@ static bool rtw_check_connect_sae_compat(struct cfg80211_connect_params *sme) AKM_SUITE_FTSAE, RSN_SELECTOR_LEN) == 0) #endif ) - return true; + ret = true; } - return false; + +exit: + if (elems) + rtw_mfree(elems, sizeof(struct rtw_ieee802_11_elems)); + return ret; } #else #define rtw_check_connect_sae_compat(sme) false @@ -4422,6 +4231,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, struct cfg80211_connect_params *sme) { int ret = 0; + const u8 *bssid = NULL; NDIS_802_11_AUTHENTICATION_MODE authmode; NDIS_802_11_SSID ndis_ssid; /* u8 matched_by_bssid=_FALSE; */ @@ -4508,9 +4318,16 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, RTW_INFO("ssid=%s, len=%zu\n", ndis_ssid.Ssid, sme->ssid_len); - if (sme->bssid) + if (sme->bssid) { RTW_INFO("bssid="MAC_FMT"\n", MAC_ARG(sme->bssid)); - + bssid = sme->bssid; + } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) + else if (sme->bssid_hint) { + RTW_INFO("bssid_hint="MAC_FMT"\n", MAC_ARG(sme->bssid_hint)); + bssid = sme->bssid_hint; + } +#endif psecuritypriv->ndisencryptstatus = Ndis802_11EncryptionDisabled; psecuritypriv->dot11PrivacyAlgrthm = _NO_PRIVACY_; @@ -4644,7 +4461,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, rtw_mbo_update_ie_data(padapter, (u8 *)sme->ie, sme->ie_len); #endif - if (rtw_set_802_11_connect(padapter, (u8 *)sme->bssid, &ndis_ssid, \ + if (rtw_set_802_11_connect(padapter, bssid, &ndis_ssid, sme->channel ? sme->channel->hw_value : 0) == _FALSE) { ret = -1; goto cancel_ps_deny; @@ -4784,7 +4601,7 @@ static int cfg80211_rtw_set_txpower(struct wiphy *wiphy, } if (ret == 0) - rtw_run_in_thread_cmd_wait(adapter, ((void *)(rtw_hal_update_txpwr_level)), adapter, 2000); + rtw_run_in_thread_cmd_wait(adapter, ((void *)(rtw_update_txpwr_level_all_hwband)), adapter_to_dvobj(adapter), 2000); exit: return ret; @@ -4983,20 +4800,13 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de struct rtw_ieee80211_hdr *dot11_hdr; struct ieee80211_radiotap_header *rtap_hdr; _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); -#ifdef CONFIG_DFS_MASTER - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); -#endif RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); - if (IS_CH_WAITING(rfctl)) { - #ifdef CONFIG_DFS_MASTER - if (rtw_rfctl_overlap_radar_detect_ch(rfctl)) - goto fail; - #endif - } + if (adapter_is_tx_blocked_by_ch_waiting(padapter)) + goto fail; if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header))) goto fail; @@ -5254,18 +5064,22 @@ void rtw_cfg80211_indicate_sta_assoc(_adapter *padapter, u8 *pmgmt_frame, uint f #if defined(RTW_USE_CFG80211_STA_EVENT) || defined(COMPAT_KERNEL_RELEASE) { - struct station_info sinfo; + struct station_info *sinfo = NULL; u8 ie_offset; + + sinfo = (struct station_info *)rtw_malloc(sizeof(struct station_info)); + if (!sinfo) + return; if (get_frame_sub_type(pmgmt_frame) == WIFI_ASSOCREQ) ie_offset = _ASOCREQ_IE_OFFSET_; else /* WIFI_REASSOCREQ */ ie_offset = _REASOCREQ_IE_OFFSET_; - - memset(&sinfo, 0, sizeof(sinfo)); - sinfo.filled = STATION_INFO_ASSOC_REQ_IES; - sinfo.assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset; - sinfo.assoc_req_ies_len = frame_len - WLAN_HDR_A3_LEN - ie_offset; - cfg80211_new_sta(ndev, get_addr2_ptr(pmgmt_frame), &sinfo, GFP_ATOMIC); + memset(sinfo, 0, sizeof(struct station_info)); + sinfo->filled = STATION_INFO_ASSOC_REQ_IES; + sinfo->assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset; + sinfo->assoc_req_ies_len = frame_len - WLAN_HDR_A3_LEN - ie_offset; + cfg80211_new_sta(ndev, get_addr2_ptr(pmgmt_frame), sinfo, GFP_ATOMIC); + rtw_mfree(sinfo, sizeof(struct station_info)); } #else /* defined(RTW_USE_CFG80211_STA_EVENT) */ channel = pmlmeext->cur_channel; @@ -5380,13 +5194,6 @@ static int rtw_add_beacon(_adapter *adapter, const u8 *head, size_t head_len, co goto exit; } - - /* _rtw_memcpy(&pstapriv->max_num_sta, param->u.bcn_ie.reserved, 2); */ - - /* if((pstapriv->max_num_sta>NUM_STA) || (pstapriv->max_num_sta<=0)) */ - /* pstapriv->max_num_sta = NUM_STA; */ - - _rtw_memcpy(pbuf, (void *)head + 24, head_len - 24); /* 24=beacon header len. */ _rtw_memcpy(pbuf + head_len - 24, (void *)tail, tail_len); @@ -5498,6 +5305,8 @@ static int cfg80211_rtw_del_beacon(struct wiphy *wiphy, struct net_device *ndev) return 0; } #else +static int rtw_cfg80211_set_beacon_ies(struct net_device *net, const u8 *head, + int head_len, const u8 *tail, int tail_len); static int cfg80211_rtw_start_ap(struct wiphy *wiphy, struct net_device *ndev, struct cfg80211_ap_settings *settings) { @@ -5534,6 +5343,11 @@ static int cfg80211_rtw_start_ap(struct wiphy *wiphy, struct net_device *ndev, ret = rtw_add_beacon(adapter, settings->beacon.head, settings->beacon.head_len, settings->beacon.tail, settings->beacon.tail_len); + rtw_cfg80211_set_beacon_ies(ndev, settings->beacon.head, + settings->beacon.head_len, + settings->beacon.tail, + settings->beacon.tail_len); + #ifdef CONFIG_RTW_80211R_AP rtw_ft_update_assocresp_ies(ndev, settings); #endif @@ -5600,6 +5414,82 @@ exit: return ret; } + +static int rtw_cfg80211_check_beacon_ies(struct net_device *net, const u8 *head, + int head_len, const u8 *tail, + int tail_len) +{ + int ret = 2; + _adapter *padapter = (_adapter *)rtw_netdev_priv(net); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + if (pmlmepriv->beacon_head_ie && + (pmlmepriv->beacon_head_ie_len == head_len)) { + if (_rtw_memcmp(pmlmepriv->beacon_head_ie, head, head_len) == + _TRUE) + ret--; + } + if (pmlmepriv->beacon_tail_ie && + (pmlmepriv->beacon_tail_ie_len == tail_len)) { + if (_rtw_memcmp(pmlmepriv->beacon_tail_ie, tail, tail_len) == + _TRUE) + ret--; + } + return ret; +} + +static int rtw_cfg80211_set_beacon_ies(struct net_device *net, const u8 *head, + int head_len, const u8 *tail, + int tail_len) +{ + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(net); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + RTW_INFO("%s, len(head, tail)=(%d, %d)\n", __func__, head_len, + tail_len); + + if (pmlmepriv->beacon_head_ie) { + u32 free_len = pmlmepriv->beacon_head_ie_len; + + pmlmepriv->beacon_head_ie_len = 0; + rtw_mfree(pmlmepriv->beacon_head_ie, free_len); + pmlmepriv->beacon_head_ie = NULL; + } + + if (head_len) { + pmlmepriv->beacon_head_ie = rtw_malloc(head_len); + if (pmlmepriv->beacon_head_ie == NULL) { + RTW_INFO("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, + __LINE__); + return -EINVAL; + } + _rtw_memcpy(pmlmepriv->beacon_head_ie, head, head_len); + pmlmepriv->beacon_head_ie_len = head_len; + } + + if (pmlmepriv->beacon_tail_ie) { + u32 free_len = pmlmepriv->beacon_tail_ie_len; + + pmlmepriv->beacon_tail_ie_len = 0; + rtw_mfree(pmlmepriv->beacon_tail_ie, free_len); + pmlmepriv->beacon_tail_ie = NULL; + } + + if (tail_len) { + pmlmepriv->beacon_tail_ie = rtw_malloc(tail_len); + if (pmlmepriv->beacon_tail_ie == NULL) { + RTW_INFO("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, + __LINE__); + return -EINVAL; + } + _rtw_memcpy(pmlmepriv->beacon_tail_ie, tail, tail_len); + pmlmepriv->beacon_tail_ie_len = tail_len; + } + + return ret; +} + static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *ndev, struct cfg80211_beacon_data *info) { @@ -5621,17 +5511,29 @@ static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *nd if (info->assocresp_ies_len > 0) rtw_cfg80211_set_assocresp_ies(ndev, info->assocresp_ies, info->assocresp_ies_len); - ret = rtw_add_beacon(adapter, info->head, info->head_len, info->tail, info->tail_len); - + if (rtw_cfg80211_check_beacon_ies(ndev, info->head, info->head_len, + info->tail, info->tail_len) != 0) { + ret = rtw_add_beacon(adapter, info->head, info->head_len, + info->tail, info->tail_len); + rtw_cfg80211_set_beacon_ies(ndev, info->head, info->head_len, + info->tail, info->tail_len); + } return ret; } -static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev) +static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) || defined(CONFIG_MLD_KERNEL_PATCH) + , unsigned int link_id +#endif +) { _adapter *adapter = (_adapter *)rtw_netdev_priv(ndev); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) || defined(CONFIG_MLD_KERNEL_PATCH) + RTW_INFO(FUNC_NDEV_FMT" link_id:%d\n", FUNC_NDEV_ARG(ndev), link_id); +#else RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); - +#endif rtw_stop_ap_cmd(adapter, RTW_CMDF_WAIT_ACK); return 0; } @@ -5965,7 +5867,8 @@ static int cfg80211_rtw_add_station(struct wiphy *wiphy, struct net_device *ndev if (_rtw_mesh_plink_add(padapter, mac) == _SUCCESS) { /* hook corresponding network in scan queue */ plink = _rtw_mesh_plink_get(padapter, mac); - plink->aid = params->aid; + if (params->aid > 0) + plink->aid = params->aid; plink->scanned = scanned; #if CONFIG_RTW_MESH_ACNODE_PREVENT @@ -5988,16 +5891,20 @@ release_plink_ctl: issue_probereq(padapter, &padapter->mlmepriv.cur_network.network.mesh_id, mac); if (add_new_sta) { - struct station_info sinfo; + struct station_info *sinfo = NULL; #ifdef CONFIG_DFS_MASTER if (IS_UNDER_CAC(adapter_to_rfctl(padapter))) rtw_force_stop_cac(adapter_to_rfctl(padapter), 300); #endif - + sinfo = (struct station_info *) rtw_zmalloc(sizeof(struct station_info)); + if (!sinfo) { + ret = -ENOMEM; + goto exit; + } /* indicate new sta */ - _rtw_memset(&sinfo, 0, sizeof(sinfo)); - cfg80211_new_sta(ndev, mac, &sinfo, GFP_ATOMIC); + cfg80211_new_sta(ndev, mac, sinfo, GFP_ATOMIC); + rtw_mfree(sinfo, sizeof(struct station_info)); } goto exit; } @@ -6030,7 +5937,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev ) { int ret = 0; - _irqL irqL; _list *phead, *plist; u8 updated = _FALSE; const u8 *target_mac; @@ -6038,14 +5944,24 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); struct sta_priv *pstapriv = &padapter->stapriv; + u8 subtype = 0; + u16 reason_code = 0; #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)) target_mac = mac; #else target_mac = params->mac; + subtype = params->subtype; + reason_code = params->reason_code; #endif RTW_INFO("+"FUNC_NDEV_FMT" mac=%pM\n", FUNC_NDEV_ARG(ndev), target_mac); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) + if (subtype) + RTW_INFO(FUNC_NDEV_FMT" subtype=0x%x\n", FUNC_NDEV_ARG(ndev), subtype); + if (reason_code) + RTW_INFO(FUNC_NDEV_FMT" reason_code=%u\n", FUNC_NDEV_ARG(ndev), reason_code); +#endif if (check_fwstate(pmlmepriv, (WIFI_ASOC_STATE | WIFI_AP_STATE | WIFI_MESH_STATE)) != _TRUE) { RTW_INFO("%s, fw_state != FW_LINKED|WIFI_AP_STATE|WIFI_MESH_STATE\n", __func__); @@ -6073,7 +5989,7 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev return -EINVAL; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); phead = &pstapriv->asoc_list; plist = get_next(phead); @@ -6090,15 +6006,9 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev #ifdef CONFIG_AP_MODE if (MLME_IS_AP(padapter)) { - rtw_list_delete(&psta->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif - STA_SET_MESH_PLINK(psta, NULL); - - ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_IEEE_802_1X_AUTH_FAILED, _TRUE); + rtw_stapriv_asoc_list_del(pstapriv, psta); + reason_code = reason_code == 0 ? WLAN_REASON_IEEE_802_1X_AUTH_FAILED: reason_code; + updated |= ap_free_sta(padapter, psta, _TRUE, subtype, reason_code, _TRUE); psta = NULL; break; } @@ -6106,20 +6016,16 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev } else { RTW_INFO("free psta=%p, aid=%d\n", psta, psta->cmn.aid); - rtw_list_delete(&psta->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif - STA_SET_MESH_PLINK(psta, NULL); - - /* _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); */ - if (MLME_IS_AP(padapter)) - updated = ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_PREV_AUTH_NOT_VALID, _TRUE); - else - updated = ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_DEAUTH_LEAVING, _TRUE); - /* _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); */ + rtw_stapriv_asoc_list_del(pstapriv, psta); + /* rtw_stapriv_asoc_list_unlock(pstapriv); */ + if (MLME_IS_AP(padapter)) { + reason_code = reason_code == 0 ? WLAN_REASON_PREV_AUTH_NOT_VALID: reason_code; + updated |= ap_free_sta(padapter, psta, _TRUE, subtype, reason_code, _TRUE); + } else { + reason_code = reason_code == 0 ? WLAN_REASON_DEAUTH_LEAVING: reason_code; + updated |= ap_free_sta(padapter, psta, _TRUE, subtype, reason_code, _TRUE); + } + /* rtw_stapriv_asoc_list_lock(pstapriv); */ psta = NULL; @@ -6130,7 +6036,7 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); associated_clients_update(padapter, updated, STA_INFO_UPDATE_ALL); @@ -6217,7 +6123,6 @@ static int cfg80211_rtw_dump_station(struct wiphy *wiphy, struct net_device *nde #define DBG_DUMP_STATION 0 int ret = 0; - _irqL irqL; _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); struct sta_priv *pstapriv = &padapter->stapriv; struct sta_info *psta = NULL; @@ -6229,9 +6134,9 @@ static int cfg80211_rtw_dump_station(struct wiphy *wiphy, struct net_device *nde if (DBG_DUMP_STATION) RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); psta = rtw_sta_info_get_by_idx(pstapriv, idx, &asoc_list_num); - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); #ifdef CONFIG_RTW_MESH if (MLME_IS_MESH(padapter)) { @@ -6337,6 +6242,10 @@ static int cfg80211_rtw_set_txq_params(struct wiphy *wiphy #else _adapter *padapter = wiphy_to_adapter(wiphy); #endif +#ifdef CONFIG_NARROWBAND_SUPPORTING + struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); + struct registry_priv *regsty = dvobj_to_regsty(dvobj); +#endif /* CONFIG_NARROWBAND_SUPPORTING */ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); u8 ac, AIFS, ECWMin, ECWMax, aSifsTime; @@ -6385,6 +6294,13 @@ static int cfg80211_rtw_set_txq_params(struct wiphy *wiphy else aSifsTime = 10; +#ifdef CONFIG_NARROWBAND_SUPPORTING + if (regsty->rtw_nb_config == RTW_NB_CONFIG_WIDTH_10) + aSifsTime = 32; + else if (regsty->rtw_nb_config == RTW_NB_CONFIG_WIDTH_5) + aSifsTime = 64; +#endif /* CONFIG_NARROWBAND_SUPPORTING */ + AIFS = params->aifs * pmlmeinfo->slotTime + aSifsTime; while ((params->cwmin + 1) >> shift_count != 1) { @@ -6421,18 +6337,18 @@ static int cfg80211_rtw_set_channel(struct wiphy *wiphy #endif , struct ieee80211_channel *chan, enum nl80211_channel_type channel_type) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)) - _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); -#else - _adapter *padapter = wiphy_to_adapter(wiphy); -#endif + _adapter *padapter; int chan_target = (u8) ieee80211_frequency_to_channel(chan->center_freq); int chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; int chan_width = CHANNEL_WIDTH_20; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)) - RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + if (ndev) { + RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + padapter = (_adapter *)rtw_netdev_priv(ndev); + } else #endif + padapter = wiphy_to_adapter(wiphy); switch (channel_type) { case NL80211_CHAN_NO_HT: @@ -7004,6 +6920,9 @@ exit: #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) static int cfg80211_rtw_get_channel(struct wiphy *wiphy, struct wireless_dev *wdev, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) || defined(CONFIG_MLD_KERNEL_PATCH) + unsigned int link_id, +#endif struct cfg80211_chan_def *chandef) { _adapter *padapter = wiphy_to_adapter(wiphy); @@ -7013,6 +6932,10 @@ static int cfg80211_rtw_get_channel(struct wiphy *wiphy, int retval = 1; if (MLME_IS_ASOC(padapter)) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) || defined(CONFIG_MLD_KERNEL_PATCH) + RTW_INFO(FUNC_ADPT_FMT" link_id:%d\n", FUNC_ADPT_ARG(padapter), link_id); +#endif + #ifdef CONFIG_80211N_HT ht_option = padapter->mlmepriv.htpriv.ht_option; #endif /* CONFIG_80211N_HT */ @@ -7047,7 +6970,6 @@ static void rtw_get_chbwoff_from_cfg80211_chan_def( case NL80211_CHAN_WIDTH_20_NOHT: *ht = 0; fallthrough; - /* fall through */ case NL80211_CHAN_WIDTH_20: *bw = CHANNEL_WIDTH_20; *offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; @@ -7139,22 +7061,19 @@ static int cfg80211_rtw_set_monitor_channel(struct wiphy *wiphy void rtw_cfg80211_external_auth_request(_adapter *padapter, union recv_frame *rframe) { - struct rtw_external_auth_params params; +#if (KERNEL_VERSION(2, 6, 37) <= LINUX_VERSION_CODE) struct wireless_dev *wdev = padapter->rtw_wdev; - struct net_device *netdev = wdev_to_ndev(wdev); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - - u8 frame[256] = { 0 }; - uint frame_len = 24; - s32 freq = 0; +#endif /* rframe, in this case is null point */ - freq = rtw_ch2freq(pmlmeext->cur_channel); - #if (KERNEL_VERSION(4, 17, 0) <= LINUX_VERSION_CODE) \ || defined(CONFIG_KERNEL_PATCH_EXTERNAL_AUTH) + struct rtw_external_auth_params params; + struct net_device *netdev = wdev_to_ndev(wdev); + params.action = EXTERNAL_AUTH_START; _rtw_memcpy(params.bssid, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); params.ssid.ssid_len = pmlmeinfo->network.Ssid.SsidLength; @@ -7166,6 +7085,12 @@ void rtw_cfg80211_external_auth_request(_adapter *padapter, union recv_frame *rf cfg80211_external_auth_request(netdev, (struct cfg80211_external_auth_params *)¶ms, GFP_ATOMIC); #elif (KERNEL_VERSION(2, 6, 37) <= LINUX_VERSION_CODE) + u8 frame[256] = { 0 }; + uint frame_len = 24; + s32 freq = 0; + + freq = rtw_ch2freq(pmlmeext->cur_channel); + set_frame_sub_type(frame, WIFI_AUTH); _rtw_memcpy(frame + 4, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); @@ -7413,7 +7338,7 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, { u16 wps_devicepassword_id = 0x0000; uint wps_devicepassword_id_len = 0; - u8 wpsie[255] = { 0x00 }, p2p_ie[255] = { 0x00 }; + u8 *wpsie = NULL, *p2p_ie = NULL; uint p2p_ielen = 0; uint wpsielen = 0; u32 devinfo_contentlen = 0; @@ -7446,6 +7371,16 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, RTW_INFO("[%s] In\n", __FUNCTION__); + wpsie = (u8 *)rtw_zmalloc(255); + if (!wpsie) + return; + p2p_ie = (u8 *)rtw_zmalloc(255); + if (!p2p_ie) { + rtw_mfree(wpsie, 255); + return; + } + + /* prepare for building provision_request frame */ _rtw_memcpy(pwdinfo->tx_prov_disc_info.peerIFAddr, GetAddr1Ptr(buf), ETH_ALEN); _rtw_memcpy(pwdinfo->tx_prov_disc_info.peerDevAddr, GetAddr1Ptr(buf), ETH_ALEN); @@ -7490,13 +7425,13 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, /* start to build provision_request frame */ - _rtw_memset(wpsie, 0, sizeof(wpsie)); - _rtw_memset(p2p_ie, 0, sizeof(p2p_ie)); + _rtw_memset(wpsie, 0, 255); + _rtw_memset(p2p_ie, 0, 255); p2p_ielen = 0; pmgntframe = alloc_mgtxmitframe(pxmitpriv); if (pmgntframe == NULL) - return; + goto exit; /* update attribute */ @@ -7631,8 +7566,13 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, rtw_msleep_os(15000); /* 15 sec for key in PIN CODE, workaround for GS2 before issuing Nego Req. */ } #endif - +exit: + if (wpsie) + rtw_mfree(wpsie, 255); + if (p2p_ie) + rtw_mfree(p2p_ie, 255); } +#endif /* CONFIG_P2P */ #ifdef CONFIG_RTW_80211R static s32 cfg80211_rtw_update_ft_ies(struct wiphy *wiphy, @@ -7643,9 +7583,6 @@ static s32 cfg80211_rtw_update_ft_ies(struct wiphy *wiphy, struct mlme_priv *pmlmepriv = NULL; struct ft_roam_info *pft_roam = NULL; _irqL irqL; - u8 *p; - u8 *pie = NULL; - u32 ie_len = 0; if (ndev == NULL) return -EINVAL; @@ -7654,7 +7591,11 @@ static s32 cfg80211_rtw_update_ft_ies(struct wiphy *wiphy, pmlmepriv = &(padapter->mlmepriv); pft_roam = &(pmlmepriv->ft_roam); - p = (u8 *)ftie->ie; +#ifdef CONFIG_RTW_80211R_AP + if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + return rtw_ft_update_sta_ies(padapter, ftie); +#endif + if (ftie->ie_len <= sizeof(pft_roam->updated_ft_ies)) { _enter_critical_bh(&pmlmepriv->lock, &irqL); _rtw_memcpy(pft_roam->updated_ft_ies, ftie->ie, ftie->ie_len); @@ -7674,7 +7615,6 @@ static s32 cfg80211_rtw_update_ft_ies(struct wiphy *wiphy, return 0; } #endif -#endif /* CONFIG_P2P */ inline void rtw_cfg80211_set_is_roch(_adapter *adapter, bool val) { @@ -7868,11 +7808,7 @@ static s32 cfg80211_rtw_cancel_remain_on_channel(struct wiphy *wiphy, { s32 err = 0; _adapter *padapter; - struct rtw_wdev_priv *pwdev_priv; - struct roch_info *prochinfo; -#ifdef CONFIG_P2P - struct wifidirect_info *pwdinfo; -#endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) #if defined(RTW_DEDICATED_P2P_DEVICE) @@ -7897,12 +7833,6 @@ static s32 cfg80211_rtw_cancel_remain_on_channel(struct wiphy *wiphy, wdev = ndev_to_wdev(ndev); #endif - pwdev_priv = adapter_wdev_data(padapter); - prochinfo = &padapter->rochinfo; -#ifdef CONFIG_P2P - pwdinfo = &padapter->wdinfo; -#endif - RTW_INFO(FUNC_ADPT_FMT"%s cookie:0x%llx\n" , FUNC_ADPT_ARG(padapter), wdev == wiphy_to_pd_wdev(wiphy) ? " PD" : "" , cookie); @@ -8114,7 +8044,6 @@ static int _cfg80211_rtw_mgmt_tx(_adapter *padapter, u8 tx_ch, u8 no_cck, const struct pkt_attrib *pattrib; unsigned char *pframe; int ret = _FAIL; - bool ack = _TRUE; struct rtw_ieee80211_hdr *pwlanhdr; #if defined(RTW_ROCH_BACK_OP) && defined(CONFIG_P2P) && defined(CONFIG_CONCURRENT_MODE) struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(padapter); @@ -8206,22 +8135,19 @@ issue_mgmt_frame: if (wait_ack) { if (dump_mgntframe_and_wait_ack(padapter, pmgntframe) != _SUCCESS) { - ack = _FALSE; ret = _FAIL; - #ifdef CONFIG_DEBUG_CFG80211 - RTW_INFO("%s, ack == _FAIL\n", __func__); + RTW_INFO("%s, ack _FAIL\n", __func__); #endif } else { - #ifdef CONFIG_XMIT_ACK if (!MLME_IS_MESH(padapter)) /* TODO: remove this sleep for all mode */ rtw_msleep_os(50); -#endif -#ifdef CONFIG_DEBUG_CFG80211 - RTW_INFO("%s, ack=%d, ok!\n", __func__, ack); #endif ret = _SUCCESS; +#ifdef CONFIG_DEBUG_CFG80211 + RTW_INFO("%s, ack ok!\n", __func__); +#endif } } else { dump_mgntframe(padapter, pmgntframe); @@ -8258,7 +8184,6 @@ exit: #endif return ret; - } u8 rtw_mgnt_tx_handler(_adapter *adapter, u8 *buf) @@ -8369,7 +8294,7 @@ static int cfg80211_rtw_mgmt_tx(struct wiphy *wiphy, tx_ch = (u8)ieee80211_frequency_to_channel(chan->center_freq); if (IS_CH_WAITING(rfctl)) { #ifdef CONFIG_DFS_MASTER - if (_rtw_rfctl_overlap_radar_detect_ch(rfctl, tx_ch, CHANNEL_WIDTH_20, HAL_PRIME_CHNL_OFFSET_DONT_CARE)) { + if (rtw_rfctl_overlap_radar_detect_ch(rfctl, nl80211_band_to_rtw_band(chan->band), tx_ch, CHANNEL_WIDTH_20, HAL_PRIME_CHNL_OFFSET_DONT_CARE)) { ret = -EINVAL; goto exit; } @@ -8421,6 +8346,10 @@ static int cfg80211_rtw_mgmt_tx(struct wiphy *wiphy, RTW_INFO("RTW_Tx:tx_ch=%d, no_cck=%u, da="MAC_FMT"\n", tx_ch, no_cck, MAC_ARG(GetAddr1Ptr(buf))); +#ifdef CONFIG_RTW_80211R_AP + rtw_ft_process_ft_auth_rsp(padapter, (u8 *)buf, len); +#endif + retval = rtw_sae_preprocess(padapter, buf, len, _TRUE); if (retval == 2) goto exit; @@ -9900,7 +9829,6 @@ int cfg80211_rtw_resume(struct wiphy *wiphy) { _adapter *padapter; struct pwrctrl_priv *pwrpriv; struct mlme_priv *pmlmepriv; - struct sitesurvey_parm parm; int i, len; padapter = wiphy_to_adapter(wiphy); @@ -9913,23 +9841,26 @@ int cfg80211_rtw_resume(struct wiphy *wiphy) { struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(padapter); _irqL irqL; int PNOWakeupScanWaitCnt = 0; + struct sitesurvey_parm *parm = NULL; rtw_cfg80211_disconnected(padapter->rtw_wdev, 0, NULL, 0, 1, GFP_ATOMIC); - - rtw_init_sitesurvey_parm(padapter, &parm); + parm = (struct sitesurvey_parm *)rtw_zmalloc(sizeof(struct sitesurvey_parm)); + if (!parm) + return 0; + rtw_init_sitesurvey_parm(padapter, parm); for (i=0;ipnlo_info->ssid_num && i < RTW_SSID_SCAN_AMOUNT; i++) { len = pwrpriv->pno_ssid_list->node[i].SSID_len; - _rtw_memcpy(&parm.ssid[i].Ssid, pwrpriv->pno_ssid_list->node[i].SSID, len); - parm.ssid[i].SsidLength = len; + _rtw_memcpy(&(parm->ssid[i].Ssid), pwrpriv->pno_ssid_list->node[i].SSID, len); + parm->ssid[i].SsidLength = len; } - parm.ssid_num = pwrpriv->pnlo_info->ssid_num; + parm->ssid_num = pwrpriv->pnlo_info->ssid_num; _enter_critical_bh(&pmlmepriv->lock, &irqL); //This modification fix PNO wakeup reconnect issue with hidden SSID AP. //rtw_sitesurvey_cmd(padapter, NULL); - rtw_sitesurvey_cmd(padapter, &parm); + rtw_sitesurvey_cmd(padapter, parm); _exit_critical_bh(&pmlmepriv->lock, &irqL); - + rtw_mfree(parm, sizeof(struct sitesurvey_parm)); for (PNOWakeupScanWaitCnt = 0; PNOWakeupScanWaitCnt < 10; PNOWakeupScanWaitCnt++) { if(check_fwstate(pmlmepriv, WIFI_UNDER_SURVEY) == _FALSE) break; @@ -10225,7 +10156,11 @@ struct ieee80211_iface_combination rtw_combinations[] = { #else .max_interfaces = CONFIG_IFACE_NUMBER, #endif + #ifdef CONFIG_MCC_MODE + .num_different_channels = 2, + #else .num_different_channels = 1, + #endif }, }; #endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) */ @@ -10244,6 +10179,9 @@ static int rtw_cfg80211_init_wiphy(_adapter *adapter, struct wiphy *wiphy) wiphy->max_scan_ssids = RTW_SSID_SCAN_AMOUNT; wiphy->max_scan_ie_len = RTW_SCAN_IE_LEN_MAX; wiphy->max_num_pmkids = RTW_MAX_NUM_PMKIDS; +#if defined(CONFIG_AP_MODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) + wiphy->max_ap_assoc_sta = adapter->stapriv.max_num_sta; +#endif #if CONFIG_RTW_MACADDR_ACL && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)) wiphy->max_acl_mac_addrs = NUM_ACL; @@ -10368,8 +10306,8 @@ static int rtw_cfg80211_init_wiphy(_adapter *adapter, struct wiphy *wiphy) wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)) - /* wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM; */ +#if 0 && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) + wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM; #endif #ifdef CONFIG_RTW_WDS @@ -10513,9 +10451,7 @@ static void rtw_cfg80211_set_survey_info_with_clm(PADAPTER padapter, int idx, st static int rtw_hostapd_acs_dump_survey(struct wiphy *wiphy, struct net_device *netdev, int idx, struct survey_info *info) { PADAPTER padapter = (_adapter *)rtw_netdev_priv(netdev); - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - RT_CHANNEL_INFO *pch_set = rfctl->channel_set; - u8 max_chan_nums = rfctl->max_chan_nums; + struct rtw_chset *chset = adapter_to_chset(padapter); u32 freq = 0; u8 ret = 0; u16 channel = 0; @@ -10531,10 +10467,10 @@ static int rtw_hostapd_acs_dump_survey(struct wiphy *wiphy, struct net_device *n return -EIO; } - if (idx >= max_chan_nums) + if (idx >= chset->chs_len) return -ENOENT; - channel = pch_set[idx].ChannelNum; + channel = chset->chs[idx].ChannelNum; freq = rtw_ch2freq(channel); info->channel = ieee80211_get_channel(wiphy, freq); /* RTW_INFO("%s: channel %d, freq %d\n", __func__, channel, freq); */ @@ -10542,7 +10478,8 @@ static int rtw_hostapd_acs_dump_survey(struct wiphy *wiphy, struct net_device *n if (!info->channel) return -EINVAL; - if (info->channel->flags == IEEE80211_CHAN_DISABLED) + if (chset->chs[idx].flags & RTW_CHF_DIS + || info->channel->flags == IEEE80211_CHAN_DISABLED) return ret; #ifdef CONFIG_RTW_ACS @@ -10655,7 +10592,7 @@ static int check_channel(_adapter* padapter,u8 ch, u8 bw, u8 offset) { int ret = _SUCCESS; u8 ifbmp_s = rtw_mi_get_ld_sta_ifbmp(padapter); u8 u_ch, u_bw, u_offset; - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); + struct rtw_chset *chset = adapter_to_chset(padapter); struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; @@ -10663,8 +10600,8 @@ static int check_channel(_adapter* padapter,u8 ch, u8 bw, u8 offset) { u_bw = rtw_mi_get_union_bw(padapter); u_offset = rtw_mi_get_union_offset(padapter); - if (rtw_chset_search_ch(rfctl->channel_set, ch) < 0 - || rtw_chset_is_ch_non_ocp(rfctl->channel_set, ch)) { + if (rtw_chset_search_ch(chset, ch) < 0 + || rtw_chset_is_ch_non_ocp(chset, ch)) { ret = _FAIL; RTW_INFO("ch not legal %d,%d,%d\n", ch, bw, offset); } else if(pmlmeext->cur_channel == ch && pmlmeext->cur_bwmode == bw && pmlmeext->cur_ch_offset == offset) { @@ -10750,6 +10687,7 @@ static int cfg80211_rtw_channel_switch(struct wiphy *wiphy, if (ifbmp && count > 0) { rfctl->ap_csa_en = AP_SWITCH_CH_CSA; + rfctl->ap_csa_wait_update_bcn = 0; rfctl->ap_csa_ch = ch; rfctl->ap_csa_switch_cnt = count; rfctl->ap_csa_ch_offset = offset; @@ -10926,14 +10864,14 @@ struct wiphy *rtw_wiphy_alloc(_adapter *padapter, struct device *dev) wiphy_data->txpwr_total_lmt_mbm = UNSPECIFIED_MBM; wiphy_data->txpwr_total_target_mbm = UNSPECIFIED_MBM; - rtw_regd_init(wiphy); - if (rtw_cfg80211_init_wiphy(padapter, wiphy) != _SUCCESS) { rtw_wiphy_free(wiphy); wiphy = NULL; goto exit; } + rtw_regd_init(wiphy); + RTW_INFO(FUNC_WIPHY_FMT"\n", FUNC_WIPHY_ARG(wiphy)); exit: @@ -10963,6 +10901,7 @@ void rtw_wiphy_free(struct wiphy *wiphy) int rtw_wiphy_register(struct wiphy *wiphy) { + struct rtw_chset *chset = dvobj_to_chset(wiphy_to_dvobj(wiphy)); struct get_chplan_resp *chplan; int ret; @@ -10973,14 +10912,16 @@ int rtw_wiphy_register(struct wiphy *wiphy) rtw_cfgvendor_attach(wiphy); #endif + #if !RTW_PER_ADAPTER_WIPHY + rtw_chset_hook_os_channels(chset, wiphy); + #endif + ret = wiphy_register(wiphy); if (ret != 0) { RTW_INFO(FUNC_WIPHY_FMT" wiphy_register() return %d\n", FUNC_WIPHY_ARG(wiphy), ret); goto exit; } - rtw_chset_hook_os_channels(dvobj_to_rfctl(wiphy_to_dvobj(wiphy))); - if (rtw_get_chplan_cmd(wiphy_to_adapter(wiphy), RTW_CMDF_DIRECTLY, &chplan) == _SUCCESS) rtw_regd_change_complete_sync(wiphy, chplan, 1); else @@ -11003,6 +10944,10 @@ void rtw_wiphy_unregister(struct wiphy *wiphy) rtw_pd_iface_free(wiphy); #endif + #if CONFIG_RTW_CFG80211_CAC_EVENT + rtw_regd_free_du_wdev(wiphy); + #endif + return wiphy_unregister(wiphy); } @@ -11110,7 +11055,12 @@ void rtw_wdev_unregister(struct wireless_dev *wdev) rtw_cfg80211_indicate_scan_done(adapter, _TRUE); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) || defined(COMPAT_KERNEL_RELEASE) - if (wdev->current_bss) { + #if (defined(CONFIG_MLD_KERNEL_PATCH) || (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2))) + if (wdev->valid_links && wdev->links[0].client.current_bss) + #else + if (wdev->current_bss) + #endif + { RTW_INFO(FUNC_ADPT_FMT" clear current_bss by cfg80211_disconnected\n", FUNC_ADPT_ARG(adapter)); rtw_cfg80211_indicate_disconnect(adapter, 0, 1); } diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_cfg80211.h b/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_cfg80211.h index f3e6d791a..8f56e317b 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_cfg80211.h +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_cfg80211.h @@ -61,6 +61,21 @@ #define RTW_ROCH_BACK_OP #endif +#if defined(CONFIG_DFS_MASTER) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)) +#ifndef CONFIG_RTW_CFG80211_CAC_EVENT +#define CONFIG_RTW_CFG80211_CAC_EVENT 1 +#endif +#else +#ifdef CONFIG_RTW_CFG80211_CAC_EVENT +#undef CONFIG_RTW_CFG80211_CAC_EVENT +#endif +#define CONFIG_RTW_CFG80211_CAC_EVENT 0 +#endif + +#if CONFIG_RTW_CFG80211_CAC_EVENT && RTW_PER_ADAPTER_WIPHY +#error "CONFIG_RTW_CFG80211_CAC_EVENT is not supported when enable RTW_PER_ADAPTER_WIPHY" +#endif + #if !defined(CONFIG_P2P) && RTW_P2P_GROUP_INTERFACE #error "RTW_P2P_GROUP_INTERFACE can't be enabled when CONFIG_P2P is disabled\n" #endif @@ -249,6 +264,16 @@ struct rtw_wiphy_data { _mutex async_regd_change_mutex; _workitem async_regd_change_work; +#if CONFIG_RTW_CFG80211_CAC_EVENT + _list async_cac_change_list; + _mutex async_cac_change_mutex; + _workitem async_cac_change_work; + + /* for DFS channel state sync */ + struct wireless_dev *du_wdev; + struct cfg80211_chan_def du_chdef; +#endif + s16 txpwr_total_lmt_mbm; /* EIRP */ s16 txpwr_total_target_mbm; /* EIRP */ }; @@ -428,32 +453,13 @@ void rtw_cfg80211_deinit_rfkill(struct wiphy *wiphy); u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset, u8 ht, bool started); #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) && (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31)) -#define IEEE80211_CHAN_NO_HT40PLUS IEEE80211_CHAN_NO_FAT_ABOVE -#define IEEE80211_CHAN_NO_HT40MINUS IEEE80211_CHAN_NO_FAT_BELOW -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)) && (LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)) -#define NL80211_BAND_2GHZ IEEE80211_BAND_2GHZ -#define NL80211_BAND_5GHZ IEEE80211_BAND_5GHZ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) -#define NL80211_BAND_60GHZ IEEE80211_BAND_60GHZ -#endif -#define NUM_NL80211_BANDS IEEE80211_NUM_BANDS -#endif - -extern enum nl80211_band _rtw_band_to_nl80211_band[]; -#define rtw_band_to_nl80211_band(band) (((band) < BAND_MAX) ? _rtw_band_to_nl80211_band[(band)] : NUM_NL80211_BANDS) - -extern BAND_TYPE _nl80211_band_to_rtw_band[]; -#define nl80211_band_to_rtw_band(band) (((band) < NUM_NL80211_BANDS) ? _nl80211_band_to_rtw_band[(band)] : BAND_MAX) - #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36)) #define NL80211_TX_POWER_AUTOMATIC TX_POWER_AUTOMATIC #define NL80211_TX_POWER_LIMITED TX_POWER_LIMITED #define NL80211_TX_POWER_FIXED TX_POWER_FIXED #endif +#include "os_ch_utils.h" #include "wifi_regd.h" #include "rtw_cfgvendor.h" diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_linux.c index c148dd0dc..9b3e8fe30 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_linux.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_linux.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -538,21 +538,27 @@ static inline char *iwe_stream_wpa_wpa2_process(_adapter *padapter, /* u8 pbuf[buf_size]={0}; */ u8 *pbuf = rtw_zmalloc(buf_size); - u8 wpa_ie[255] = {0}, rsn_ie[255] = {0}; + u8 *wpa_ie = NULL, *rsn_ie = NULL; u16 i, wpa_len = 0, rsn_len = 0; u8 *p; - sint out_len = 0; if (pbuf) { p = pbuf; + wpa_ie = (u8 *)rtw_zmalloc(255); + if (!wpa_ie) + goto exit; + rsn_ie = (u8 *)rtw_zmalloc(255); + if (!rsn_ie) + goto exit; + /* parsing WPA/WPA2 IE */ if (pnetwork->network.Reserved[0] != BSS_TYPE_PROB_REQ) { /* Probe Request */ - out_len = rtw_get_sec_ie(pnetwork->network.IEs , pnetwork->network.IELength, rsn_ie, &rsn_len, wpa_ie, &wpa_len); - + rtw_get_sec_ie(pnetwork->network.IEs, + pnetwork->network.IELength, + rsn_ie, &rsn_len, wpa_ie, &wpa_len); if (wpa_len > 0) { - _rtw_memset(pbuf, 0, buf_size); p += sprintf(p, "wpa_ie="); for (i = 0; i < wpa_len; i++) @@ -577,7 +583,6 @@ static inline char *iwe_stream_wpa_wpa2_process(_adapter *padapter, start = iwe_stream_add_point(info, start, stop, iwe, wpa_ie); } if (rsn_len > 0) { - _rtw_memset(pbuf, 0, buf_size); p += sprintf(p, "rsn_ie="); for (i = 0; i < rsn_len; i++) @@ -594,6 +599,11 @@ static inline char *iwe_stream_wpa_wpa2_process(_adapter *padapter, } } +exit: + if (wpa_ie) + rtw_mfree(wpa_ie, 255); + if (rsn_ie) + rtw_mfree(rsn_ie, 255); rtw_mfree(pbuf, buf_size); } return start; @@ -1013,7 +1023,7 @@ exit: static int rtw_set_wpa_ie(_adapter *padapter, char *pie, unsigned short ielen) { - u8 *buf = NULL, *pos = NULL; + u8 *buf = NULL; int group_cipher = 0, pairwise_cipher = 0; u8 mfp_opt = MFP_NO; int ret = 0; @@ -1047,7 +1057,6 @@ static int rtw_set_wpa_ie(_adapter *padapter, char *pie, unsigned short ielen) RTW_INFO("0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x\n", buf[i], buf[i + 1], buf[i + 2], buf[i + 3], buf[i + 4], buf[i + 5], buf[i + 6], buf[i + 7]); } - pos = buf; if (ielen < RSN_HEADER_LEN) { ret = -1; goto exit; @@ -1561,7 +1570,7 @@ static int rtw_wx_get_range(struct net_device *dev, { struct iw_range *range = (struct iw_range *)extra; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); + struct rtw_chset *chset = adapter_to_chset(padapter); u16 val; int i; @@ -1660,15 +1669,16 @@ static int rtw_wx_get_range(struct net_device *dev, * range->min_r_time; Minimal retry lifetime * range->max_r_time; Maximal retry lifetime */ - for (i = 0, val = 0; i < rfctl->max_chan_nums; i++) { + for (i = 0, val = 0; i < chset->chs_len; i++) { /* Include only legal frequencies for some countries */ - if (rfctl->channel_set[i].ChannelNum != 0) { - range->freq[val].i = rfctl->channel_set[i].ChannelNum; - range->freq[val].m = rtw_ch2freq(rfctl->channel_set[i].ChannelNum) * 100000; - range->freq[val].e = 1; - val++; - } + if (chset->chs[i].flags & RTW_CHF_DIS) + continue; + + range->freq[val].i = chset->chs[i].ChannelNum; + range->freq[val].m = rtw_ch2freq(chset->chs[i].ChannelNum) * 100000; + range->freq[val].e = 1; + val++; if (val == IW_MAX_FREQUENCIES) break; @@ -1914,7 +1924,7 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, int ret = 0; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); /*struct mlme_priv *pmlmepriv = &padapter->mlmepriv;*/ - struct sitesurvey_parm parm; + struct sitesurvey_parm *parm = NULL; u8 ssc_chk; #ifdef CONFIG_P2P struct wifidirect_info *pwdinfo = &(padapter->wdinfo); @@ -1924,6 +1934,11 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, RTW_INFO("DBG_IOCTL %s:%d\n", __FUNCTION__, __LINE__); #endif + parm = (struct sitesurvey_parm *)rtw_malloc(sizeof(struct sitesurvey_parm)); + if (!parm) { + ret = -ENOMEM; + goto exit; + } #if 1 ssc_chk = rtw_sitesurvey_condition_check(padapter, _FALSE); @@ -2036,14 +2051,14 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, if (wrqu->data.flags & IW_SCAN_THIS_ESSID) { int len = min((int)req->essid_len, IW_ESSID_MAX_SIZE); - rtw_init_sitesurvey_parm(padapter, &parm); - _rtw_memcpy(&parm.ssid[0].Ssid, &req->essid, len); - parm.ssid[0].SsidLength = len; - parm.ssid_num = 1; + rtw_init_sitesurvey_parm(padapter, parm); + _rtw_memcpy(&(parm->ssid[0].Ssid), &req->essid, len); + parm->ssid[0].SsidLength = len; + parm->ssid_num = 1; RTW_INFO("IW_SCAN_THIS_ESSID, ssid=%s, len=%d\n", req->essid, req->essid_len); - _status = rtw_set_802_11_bssid_list_scan(padapter, &parm); + _status = rtw_set_802_11_bssid_list_scan(padapter, parm); } else if (req->scan_type == IW_SCAN_TYPE_PASSIVE) RTW_INFO("rtw_wx_set_scan, req->scan_type == IW_SCAN_TYPE_PASSIVE\n"); @@ -2061,7 +2076,7 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, int ssid_index = 0; /* RTW_INFO("%s COMBO_SCAN header is recognized\n", __FUNCTION__); */ - rtw_init_sitesurvey_parm(padapter, &parm); + rtw_init_sitesurvey_parm(padapter, parm); while (len >= 1) { section = *(pos++); @@ -2080,11 +2095,11 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, if (sec_len > 0 && sec_len <= len) { - parm.ssid[ssid_index].SsidLength = sec_len; - _rtw_memcpy(&parm.ssid[ssid_index].Ssid, pos, sec_len); + parm->ssid[ssid_index].SsidLength = sec_len; + _rtw_memcpy(&(parm->ssid[ssid_index].Ssid), pos, sec_len); - /* RTW_INFO("%s COMBO_SCAN with specific parm.ssid:%s, %d\n", __FUNCTION__ */ - /* , parm.ssid[ssid_index].Ssid, parm.ssid[ssid_index].SsidLength); */ + /* RTW_INFO("%s COMBO_SCAN with specific parm->ssid:%s, %d\n", __FUNCTION__ */ + /* , parm->ssid[ssid_index].Ssid, parm.ssid[ssid_index].SsidLength); */ ssid_index++; } @@ -2131,10 +2146,10 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, /* RTW_INFO("len:%d\n", len); */ } - parm.ssid_num = ssid_index; + parm->ssid_num = ssid_index; /* jeff: it has still some scan paramater to parse, we only do this now... */ - _status = rtw_set_802_11_bssid_list_scan(padapter, &parm); + _status = rtw_set_802_11_bssid_list_scan(padapter, parm); } else @@ -2150,7 +2165,8 @@ exit: #ifdef DBG_IOCTL RTW_INFO("DBG_IOCTL %s:%d return %d\n", __FUNCTION__, __LINE__, ret); #endif - + if (parm) + rtw_mfree(parm, sizeof(struct sitesurvey_parm)); return ret; } @@ -2160,15 +2176,16 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a, _irqL irqL; _list *plist, *phead; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - RT_CHANNEL_INFO *chset = rfctl->channel_set; + struct rtw_chset *chset = adapter_to_chset(padapter); struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); _queue *queue = &(pmlmepriv->scanned_queue); struct wlan_network *pnetwork = NULL; char *ev = extra; char *stop = ev + wrqu->data.length; u32 ret = 0; - u32 wait_for_surveydone; +#if 0 + u32 wait_for_surveydone = 100; +#endif sint wait_status; u8 ch; @@ -2186,34 +2203,20 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a, goto exit; } + wait_status = WIFI_UNDER_SURVEY +#ifndef CONFIG_RTW_ANDROID + | WIFI_UNDER_LINKING +#endif + ; + +#if 1 /* Wireless Extension use EAGAIN to try */ + if (check_fwstate(pmlmepriv, wait_status) == _TRUE) + return -EAGAIN; +#else #ifdef CONFIG_P2P if (!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) wait_for_surveydone = 200; - else { - /* P2P is disabled */ - wait_for_surveydone = 100; - } -#else - { - wait_for_surveydone = 100; - } -#endif /* CONFIG_P2P */ - -#if 1 /* Wireless Extension use EAGAIN to try */ - wait_status = WIFI_UNDER_SURVEY -#ifndef CONFIG_RTW_ANDROID - | WIFI_UNDER_LINKING #endif - ; - - while (check_fwstate(pmlmepriv, wait_status) == _TRUE) - return -EAGAIN; -#else - wait_status = WIFI_UNDER_SURVEY -#ifndef CONFIG_RTW_ANDROID - | WIFI_UNDER_LINKING -#endif - ; while (check_fwstate(pmlmepriv, wait_status) == _TRUE) { rtw_msleep_os(30); @@ -2248,9 +2251,7 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a, if (rtw_chset_search_ch(chset, ch) >= 0 && rtw_mlme_band_check(padapter, ch) == _TRUE && _TRUE == rtw_validate_ssid(&(pnetwork->network.Ssid)) - && (!IS_DFS_SLAVE_WITH_RD(rfctl) - || rtw_rfctl_dfs_domain_unknown(rfctl) - || !rtw_chset_is_ch_non_ocp(chset, ch)) + && !rtw_chset_is_ch_non_ocp(chset, ch) ) ev = translate_scan(padapter, a, pnetwork, ev, stop); @@ -2264,14 +2265,11 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a, wrqu->data.flags = 0; exit: - - #ifdef DBG_IOCTL RTW_INFO("DBG_IOCTL %s:%d return %d\n", __FUNCTION__, __LINE__, ret); #endif return ret ; - } /* set ssid flow @@ -3318,7 +3316,7 @@ static int rtw_wx_read32(struct net_device *dev, exit: rtw_mfree(ptmp, len); - return 0; + return ret; } static int rtw_wx_write32(struct net_device *dev, @@ -3841,6 +3839,10 @@ static int rtw_wps_start(struct net_device *dev, } uintRet = copy_from_user((void *) &u32wps_start, pdata->pointer, 4); + if (uintRet) { + ret = -EFAULT; + goto exit; + } if (u32wps_start == 0) u32wps_start = *extra; @@ -3854,9 +3856,7 @@ static int rtw_wps_start(struct net_device *dev, rtw_led_control(padapter, LED_CTL_STOP_WPS_FAIL); exit: - return ret; - } #ifdef CONFIG_P2P @@ -3937,6 +3937,9 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WLAN_SSID_MAXLEN - 1) + return -EINVAL; + RTW_INFO("[%s] ssid = %s, len = %zu\n", __FUNCTION__, extra, strlen(extra)); if( strlen(extra) > WPS_MAX_DEVICE_NAME_LEN){ RTW_ERR("Invalid strlen(extra): %zu\n", strlen(extra)); @@ -3960,6 +3963,9 @@ static int rtw_p2p_set_intent(struct net_device *dev, struct wifidirect_info *pwdinfo = &(padapter->wdinfo); u8 intent = pwdinfo->intent; + if (wrqu->data.length >= 4096) + return -1; + extra[wrqu->data.length] = 0x00; intent = rtw_atoi(extra); @@ -3985,6 +3991,9 @@ static int rtw_p2p_set_listen_ch(struct net_device *dev, struct wifidirect_info *pwdinfo = &(padapter->wdinfo); u8 listen_ch = pwdinfo->listen_channel; /* Listen channel number */ + if (wrqu->data.length >= 4096) + return -1; + extra[wrqu->data.length] = 0x00; listen_ch = rtw_atoi(extra); @@ -4012,6 +4021,9 @@ static int rtw_p2p_set_op_ch(struct net_device *dev, struct wifidirect_info *pwdinfo = &(padapter->wdinfo); u8 op_ch = pwdinfo->operating_channel; /* Operating channel number */ + if (wrqu->data.length >= 4096) + return -1; + extra[wrqu->data.length] = 0x00; op_ch = (u8) rtw_atoi(extra); @@ -4086,6 +4098,8 @@ static int rtw_p2p_setDN(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + if (wrqu->data.length > WPS_MAX_DEVICE_NAME_LEN - 1) + return -EINVAL; RTW_INFO("[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1); _rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN); @@ -4093,7 +4107,7 @@ static int rtw_p2p_setDN(struct net_device *dev, RTW_ERR("Invalid wrqu->data.length:%d\n", wrqu->data.length - 1); rtw_warn_on(1); return -1; - } + } _rtw_memcpy(pwdinfo->device_name, extra, wrqu->data.length - 1); pwdinfo->device_name_len = wrqu->data.length - 1; @@ -4421,7 +4435,7 @@ static int rtw_p2p_get_go_device_address(struct net_device *dev, u8 blnMatch = 0; u8 *p2pie; uint p2pielen = 0, attr_contentlen = 0; - u8 attr_content[100] = { 0x00 }; + u8 *attr_content = NULL; u8 go_devadd_str[P2P_PRIVATE_IOCTL_SET_LEN] = { 0x00 }; /* Commented by Albert 20121209 */ @@ -4429,7 +4443,9 @@ static int rtw_p2p_get_go_device_address(struct net_device *dev, /* Format: iwpriv wlanx p2p_get2 go_devadd=00:E0:4C:00:00:05 */ RTW_INFO("[%s] data = %s\n", __FUNCTION__, subcmd); - + attr_content = (u8 *)rtw_zmalloc(100); + if (!attr_content) + return -ENOMEM; macstr2num(peerMAC, subcmd); _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); @@ -4454,7 +4470,7 @@ static int rtw_p2p_get_go_device_address(struct net_device *dev, /* The P2P Device Info attribute is included in the probe response frame. */ _rtw_memset(attr_content, 0x00, 100); - attr_contentlen = sizeof(attr_content); + attr_contentlen = 100; if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_ID, attr_content, &attr_contentlen)) { /* Handle the P2P Device ID attribute of Beacon first */ blnMatch = 1; @@ -4487,7 +4503,7 @@ static int rtw_p2p_get_go_device_address(struct net_device *dev, wrqu->data.length = strlen(go_devadd_str); _rtw_memcpy(extra, go_devadd_str, wrqu->data.length); - + rtw_mfree(attr_content, 100); return ret; } @@ -7216,7 +7232,6 @@ static int rtw_add_sta(struct net_device *dev, struct ieee_param *param) static int rtw_del_sta(struct net_device *dev, struct ieee_param *param) { - _irqL irqL; int ret = 0; struct sta_info *psta = NULL; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); @@ -7239,18 +7254,13 @@ static int rtw_del_sta(struct net_device *dev, struct ieee_param *param) /* RTW_INFO("free psta=%p, aid=%d\n", psta, psta->cmn.aid); */ - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_lock(pstapriv); if (rtw_is_list_empty(&psta->asoc_list) == _FALSE) { - rtw_list_delete(&psta->asoc_list); - pstapriv->asoc_list_cnt--; - #ifdef CONFIG_RTW_TOKEN_BASED_XMIT - if (psta->tbtx_enable) - pstapriv->tbtx_asoc_list_cnt--; - #endif - updated = ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_DEAUTH_LEAVING, _TRUE); + rtw_stapriv_asoc_list_del(pstapriv, psta); + updated = ap_free_sta(padapter, psta, _TRUE, 0, WLAN_REASON_DEAUTH_LEAVING, _TRUE); } - _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + rtw_stapriv_asoc_list_unlock(pstapriv); associated_clients_update(padapter, updated, STA_INFO_UPDATE_ALL); @@ -7777,6 +7787,7 @@ static int rtw_wx_set_priv(struct net_device *dev, len = dwrq->length; ext = rtw_vmalloc(len); + if (!ext) return -ENOMEM; @@ -7784,7 +7795,7 @@ static int rtw_wx_set_priv(struct net_device *dev, rtw_vmfree(ext, len); return -EFAULT; } - + ext[len - 1] = '\0'; #ifdef CONFIG_DEBUG_RTW_WX_SET_PRIV @@ -7895,9 +7906,7 @@ static int rtw_wx_set_priv(struct net_device *dev, #endif sprintf(ext, "OK"); - } - if (copy_to_user(dwrq->pointer, ext, min(dwrq->length, (u16)(strlen(ext) + 1)))) ret = -EFAULT; @@ -7942,11 +7951,14 @@ static int rtw_wowlan_ctrl(struct net_device *dev, check_fwstate(pmlmepriv, WIFI_STATION_STATE) && !WOWLAN_IS_STA_MIX_MODE(padapter)) { #ifdef CONFIG_PNO_SUPPORT - pwrctrlpriv->wowlan_pno_enable = _TRUE; -#else - RTW_INFO("[%s] WARNING: Please Connect With AP First!!\n", __func__); - goto _rtw_wowlan_ctrl_exit_free; -#endif /* CONFIG_PNO_SUPPORT */ + if (pwrctrlpriv->pno_inited) { + pwrctrlpriv->wowlan_pno_enable = _TRUE; + } else +#endif + { + RTW_INFO("[%s] WARNING: Please Connect With AP First!!\n", __func__); + goto _rtw_wowlan_ctrl_exit_free; + } } if (check_fwstate(pmlmepriv, WIFI_UNDER_SURVEY)) @@ -8025,6 +8037,7 @@ static int rtw_wowlan_set_pattern(struct net_device *dev, if (copy_from_user(input, wrqu->data.pointer, wrqu->data.length)) return -EFAULT; + input[wrqu->data.length - 1] = '\0'; /* leave PS first */ rtw_ps_deny(padapter, PS_DENY_IOCTL); LeaveAllPowerSaveModeDirect(padapter); @@ -8259,6 +8272,9 @@ static int rtw_pm_set(struct net_device *dev, if (sscanf(extra + 13, "%u", &mode) > 0) ret = rtw_pm_set_wow_lps_1t1r(padapter, mode); #endif + } else if (_rtw_memcmp(extra, "wow_ips=", 8)) { + if (sscanf(extra + 8, "%u", &mode) > 0) + ret = rtw_pm_set_wow_ips(padapter, mode); } #endif /* CONFIG_WOWLAN */ else @@ -8477,30 +8493,6 @@ _clear_path: } #endif -static int rtw_get_ic_type(struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) -{ - _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter); - char *pstring = extra; - u8 regdata; - - _rtw_memset(pstring, 0, wrqu->data.length); - - regdata = (rtw_read32(padapter, 0xF0) & 0xf000) >> 12; - RTW_INFO("%s: f0[15:12]= 0x%x\n", __FUNCTION__, regdata); - - if (regdata == 0x04) - pstring += sprintf(pstring , ":%s\n" ,"rtl8822c-vbs"); - else - pstring += sprintf(pstring , ":%s\n" ,"rtl8822c-vs"); - - wrqu->data.length = strlen(extra); - - return 0; -} - static int rtw_mp_efuse_get(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wdata, char *extra) @@ -8520,7 +8512,7 @@ static int rtw_mp_efuse_get(struct net_device *dev, u16 i = 0, j = 0, mapLen = 0, addr = 0, cnts = 0; u16 max_available_len = 0, raw_cursize = 0, raw_maxsize = 0; u16 mask_len; - u8 mask_buf[64] = ""; + u8 *mask_buf = NULL; int err; char *pextra = NULL; #ifdef CONFIG_IOL @@ -8532,12 +8524,17 @@ static int rtw_mp_efuse_get(struct net_device *dev, pEfuseHal = &pHalData->EfuseHal; err = 0; - data = rtw_zmalloc(EFUSE_BT_MAX_MAP_LEN); + mask_buf = (u8 *)rtw_zmalloc(64); + if (!mask_buf) { + err = -ENOMEM; + goto exit; + } + data = rtw_zmalloc(EFUSE_MAX_MAP_LEN); if (data == NULL) { err = -ENOMEM; goto exit; } - rawdata = rtw_zmalloc(EFUSE_BT_MAX_MAP_LEN); + rawdata = rtw_zmalloc(EFUSE_MAX_MAP_LEN); if (rawdata == NULL) { err = -ENOMEM; goto exit; @@ -9175,9 +9172,11 @@ static int rtw_mp_efuse_get(struct net_device *dev, exit: if (data) - rtw_mfree(data, EFUSE_BT_MAX_MAP_LEN); + rtw_mfree(data, EFUSE_MAX_MAP_LEN); if (rawdata) - rtw_mfree(rawdata, EFUSE_BT_MAX_MAP_LEN); + rtw_mfree(rawdata, EFUSE_MAX_MAP_LEN); + if (mask_buf) + rtw_mfree(mask_buf, 64); if (!err) wrqu->length = strlen(extra); @@ -9208,7 +9207,6 @@ static int rtw_mp_efuse_set(struct net_device *dev, struct pwrctrl_priv *pwrctrlpriv ; PHAL_DATA_TYPE pHalData; PEFUSE_HAL pEfuseHal; - struct hal_ops *pHalFunc; struct mp_priv *pmp_priv; u8 ips_mode = IPS_NUM; /* init invalid value */ @@ -9230,7 +9228,6 @@ static int rtw_mp_efuse_set(struct net_device *dev, pwrctrlpriv = adapter_to_pwrctl(padapter); pHalData = GET_HAL_DATA(padapter); pEfuseHal = &pHalData->EfuseHal; - pHalFunc = &padapter->hal_func; pmp_priv = &padapter->mppriv; err = 0; @@ -9249,7 +9246,7 @@ static int rtw_mp_efuse_set(struct net_device *dev, err = -ENOMEM; goto exit; } - ShadowMapBT = rtw_malloc(EFUSE_BT_MAX_MAP_LEN); + ShadowMapBT = rtw_malloc(EFUSE_MAX_MAP_LEN); if (ShadowMapBT == NULL) { err = -ENOMEM; goto exit; @@ -9259,7 +9256,7 @@ static int rtw_mp_efuse_set(struct net_device *dev, err = -ENOMEM; goto exit; } - setrawdata = rtw_malloc(EFUSE_MAX_SIZE); + setrawdata = rtw_malloc(EFUSE_MAX_HW_SIZE); if (setrawdata == NULL) { err = -ENOMEM; goto exit; @@ -9959,11 +9956,11 @@ exit: if (setdata) rtw_mfree(setdata, 1024); if (ShadowMapBT) - rtw_mfree(ShadowMapBT, EFUSE_BT_MAX_MAP_LEN); + rtw_mfree(ShadowMapBT, EFUSE_MAX_MAP_LEN); if (ShadowMapWiFi) rtw_mfree(ShadowMapWiFi, wifimaplen); if (setrawdata) - rtw_mfree(setrawdata, EFUSE_MAX_SIZE); + rtw_mfree(setrawdata, EFUSE_MAX_HW_SIZE); wrqu->length = strlen(extra); @@ -10338,6 +10335,16 @@ static int rtw_priv_mp_get(struct net_device *dev, RTW_INFO("set MP_DPK\n"); status = rtw_mp_dpk(dev, info, wdata, extra); break; + case MP_ANTDIV: + status = rtw_mp_ant_div(dev, info, wdata, extra); + RTW_INFO("set MP_ANTDIV\n"); + break; +#ifdef RTW_HALMAC + case MP_GPIO: + RTW_INFO("set MP_GPIO\n"); + status = rtw_mp_gpio(dev, info, wrqu, extra); + break; +#endif default: status = -EIO; } @@ -10624,10 +10631,6 @@ static int rtw_priv_get(struct net_device *dev, rtw_vendor_ie_get(dev , info , wdata , extra); break; #endif - case GET_IC_TYPE: - RTW_INFO("get IC Type\n"); - rtw_get_ic_type(dev , info , wdata , extra); - break; default: return -EIO; } @@ -11034,7 +11037,7 @@ static int rtw_tdls_pson(struct net_device *dev, ptdls_sta = rtw_get_stainfo(&padapter->stapriv, mac_addr); - issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta->cmn.mac_addr, 1, 3, 500); + issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta->cmn.mac_addr, 1, 3, PS_ANNC_DRV_RETRY_INT_MS); #endif /* CONFIG_TDLS */ @@ -11061,7 +11064,7 @@ static int rtw_tdls_psoff(struct net_device *dev, ptdls_sta = rtw_get_stainfo(&padapter->stapriv, mac_addr); if (ptdls_sta) - issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta->cmn.mac_addr, 0, 3, 500); + issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta->cmn.mac_addr, 0, 3, PS_ANNC_DRV_RETRY_INT_MS); #endif /* CONFIG_TDLS */ @@ -11303,49 +11306,54 @@ static int rtw_tdls_get_best_ch(struct net_device *dev, { #ifdef CONFIG_FIND_BEST_CHANNEL _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); + struct rtw_chset *chset = adapter_to_chset(padapter); u32 i, best_channel_24G = 1, best_channel_5G = 36, index_24G = 0, index_5G = 0; - for (i = 0; i < rfctl->max_chan_nums && rfctl->channel_set[i].ChannelNum != 0; i++) { - if (rfctl->channel_set[i].ChannelNum == 1) + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].flags & RTW_CHF_DIS) + continue; + if (chset->chs[i].ChannelNum == 1) index_24G = i; - if (rfctl->channel_set[i].ChannelNum == 36) + if (chset->chs[i].ChannelNum == 36) index_5G = i; } - for (i = 0; i < rfctl->max_chan_nums && rfctl->channel_set[i].ChannelNum != 0; i++) { + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].flags & RTW_CHF_DIS) + continue; + /* 2.4G */ - if (rfctl->channel_set[i].ChannelNum == 6 || rfctl->channel_set[i].ChannelNum == 11) { - if (rfctl->channel_set[i].rx_count < rfctl->channel_set[index_24G].rx_count) { + if (chset->chs[i].ChannelNum == 6 || chset->chs[i].ChannelNum == 11) { + if (chset->chs[i].rx_count < chset->chs[index_24G].rx_count) { index_24G = i; - best_channel_24G = rfctl->channel_set[i].ChannelNum; + best_channel_24G = chset->chs[i].ChannelNum; } } /* 5G */ - if (rfctl->channel_set[i].ChannelNum >= 36 - && rfctl->channel_set[i].ChannelNum < 140) { + if (chset->chs[i].ChannelNum >= 36 + && chset->chs[i].ChannelNum < 140) { /* Find primary channel */ - if (((rfctl->channel_set[i].ChannelNum - 36) % 8 == 0) - && (rfctl->channel_set[i].rx_count < rfctl->channel_set[index_5G].rx_count)) { + if (((chset->chs[i].ChannelNum - 36) % 8 == 0) + && (chset->chs[i].rx_count < chset->chs[index_5G].rx_count)) { index_5G = i; - best_channel_5G = rfctl->channel_set[i].ChannelNum; + best_channel_5G = chset->chs[i].ChannelNum; } } - if (rfctl->channel_set[i].ChannelNum >= 149 - && rfctl->channel_set[i].ChannelNum < 165) { + if (chset->chs[i].ChannelNum >= 149 + && chset->chs[i].ChannelNum < 165) { /* Find primary channel */ - if (((rfctl->channel_set[i].ChannelNum - 149) % 8 == 0) - && (rfctl->channel_set[i].rx_count < rfctl->channel_set[index_5G].rx_count)) { + if (((chset->chs[i].ChannelNum - 149) % 8 == 0) + && (chset->chs[i].rx_count < chset->chs[index_5G].rx_count)) { index_5G = i; - best_channel_5G = rfctl->channel_set[i].ChannelNum; + best_channel_5G = chset->chs[i].ChannelNum; } } #if 1 /* debug */ RTW_INFO("The rx cnt of channel %3d = %d\n", - rfctl->channel_set[i].ChannelNum, - rfctl->channel_set[i].rx_count); + chset->chs[i].ChannelNum, + chset->chs[i].rx_count); #endif } @@ -12450,7 +12458,6 @@ static const struct iw_priv_args rtw_private_args[] = { { MP_SD_IREAD, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "sd_iread" }, { MP_SD_IWRITE, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "sd_iwrite" }, #endif - { GET_IC_TYPE, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "ic_type" }, }; @@ -12507,11 +12514,16 @@ static const struct iw_priv_args rtw_mp_private_args[] = { { MP_DPK, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_dpk"}, { MP_DPK_TRK, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_dpk_trk" }, { MP_GET_TSSIDE, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_get_tsside" }, - { MP_SET_TSSIDE, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_set_tsside" }, + { MP_SET_TSSIDE, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_set_tsside" }, + { MP_ANTDIV, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_ant_div" }, #ifdef CONFIG_RTW_CUSTOMER_STR { MP_CUSTOMER_STR, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "customer_str" }, #endif +#ifdef RTW_HALMAC + { MP_GPIO, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_gpio"}, +#endif + #endif /* CONFIG_MP_INCLUDED */ }; @@ -12698,7 +12710,7 @@ static int _rtw_ioctl_wext_private(struct net_device *dev, union iwreq_data *wrq const struct iw_priv_args *priv_args; /* Private ioctl description */ const struct iw_priv_args *mp_priv_args; /*MP Private ioctl description */ const struct iw_priv_args *sel_priv_args; /*Selected Private ioctl description */ - u32 num_priv; /* Number of ioctl */ + /*u32 num_priv;*/ /* Number of ioctl */ u32 num_priv_args; /* Number of descriptions */ u32 num_mp_priv_args; /*Number of MP descriptions */ u32 num_sel_priv_args; /*Number of Selected descriptions */ @@ -12743,7 +12755,7 @@ static int _rtw_ioctl_wext_private(struct net_device *dev, union iwreq_data *wrq priv = rtw_private_handler; priv_args = rtw_private_args; mp_priv_args = rtw_mp_private_args; - num_priv = sizeof(rtw_private_handler) / sizeof(iw_handler); + /*num_priv = sizeof(rtw_private_handler) / sizeof(iw_handler);*/ num_priv_args = sizeof(rtw_private_args) / sizeof(struct iw_priv_args); num_mp_priv_args = sizeof(rtw_mp_private_args) / sizeof(struct iw_priv_args); @@ -12942,6 +12954,10 @@ static int _rtw_ioctl_wext_private(struct net_device *dev, union iwreq_data *wrq extra = buffer; handler = priv[priv_args[k].cmd - SIOCIWFIRSTPRIV]; + if (handler == NULL) { + err = -EINVAL; + goto exit; + } err = handler(dev, NULL, &wdata, extra); /* If we have to get some data */ diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_mp.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_mp.c index 0aec461ab..9b0aa1aca 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_mp.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/ioctl_mp.c @@ -25,6 +25,8 @@ #endif #define RTW_IWD_MAX_LEN 128 +/* IW_PRIV_SIZE_MASK = 2047*/ +#define RTW_EXTRA_MAX_LEN IW_PRIV_SIZE_MASK inline u8 rtw_do_mp_iwdata_len_chk(const char *caller, u32 len) { u8 is_illegal = _FALSE; @@ -142,7 +144,7 @@ int rtw_mp_read_reg(struct net_device *dev, struct iw_request_info *info, struct iw_point *wrqu, char *extra) { - char input[RTW_IWD_MAX_LEN]; + char *input = NULL; char *pch, *pnext; char *width_str; char width; @@ -155,30 +157,34 @@ int rtw_mp_read_reg(struct net_device *dev, if (rtw_do_mp_iwdata_len_chk(__func__, (wrqu->length + 1))) return -EFAULT; - if (wrqu->length > 128) - return -EFAULT; - - _rtw_memset(input, 0, sizeof(input)); - if (copy_from_user(input, wrqu->pointer, wrqu->length)) - return -EFAULT; + input = (char *)rtw_zmalloc(RTW_IWD_MAX_LEN); + if (!input) + return -ENOMEM; + if (copy_from_user(input, wrqu->pointer, wrqu->length)) { + ret = -EFAULT; + goto exit; + } input[wrqu->length] = '\0'; _rtw_memset(extra, 0, wrqu->length); _rtw_memset(data, '\0', sizeof(data)); _rtw_memset(tmp, '\0', sizeof(tmp)); pch = input; pnext = strpbrk(pch, " ,.-"); - if (pnext == NULL) - return -EINVAL; + if (pnext == NULL) { + ret = -EINVAL; + goto exit; + } *pnext = 0; width_str = pch; pch = pnext + 1; ret = sscanf(pch, "%x", &addr); - if (addr > MP_READ_REG_MAX_OFFSET) - return -EINVAL; - + if (addr > MP_READ_REG_MAX_OFFSET) { + ret = -EINVAL; + goto exit; + } ret = 0; width = width_str[0]; @@ -186,12 +192,12 @@ int rtw_mp_read_reg(struct net_device *dev, case 'b': data32 = rtw_read8(padapter, addr); RTW_INFO("%x\n", data32); - sprintf(extra, "%d", data32); + snprintf(extra, RTW_EXTRA_MAX_LEN, "%d", data32); wrqu->length = strlen(extra); break; case 'w': /* 2 bytes*/ - sprintf(data, "%04x\n", rtw_read16(padapter, addr)); + snprintf(data, sizeof(data), "%04x\n", rtw_read16(padapter, addr)); for (i = 0 ; i <= strlen(data) ; i++) { if (i % 2 == 0) { @@ -224,7 +230,7 @@ int rtw_mp_read_reg(struct net_device *dev, break; case 'd': /* 4 bytes */ - sprintf(data, "%08x", rtw_read32(padapter, addr)); + snprintf(data, sizeof(data), "%08x", rtw_read32(padapter, addr)); /*add read data format blank*/ for (i = 0 ; i <= strlen(data) ; i++) { if (i % 2 == 0) { @@ -260,7 +266,9 @@ int rtw_mp_read_reg(struct net_device *dev, ret = -EINVAL; break; } - +exit: + if (input) + rtw_mfree(input, RTW_IWD_MAX_LEN); return ret; } @@ -279,17 +287,21 @@ int rtw_mp_write_rf(struct net_device *dev, int ret; PADAPTER padapter = rtw_netdev_priv(dev); struct hal_spec_t *hal_spec = GET_HAL_SPEC(padapter); - char input[RTW_IWD_MAX_LEN]; + char *input = NULL; if (rtw_do_mp_iwdata_len_chk(__func__, wrqu->length)) return -EFAULT; - _rtw_memset(input, 0, wrqu->length); - if (copy_from_user(input, wrqu->pointer, wrqu->length)) + input = (char *)rtw_zmalloc(RTW_IWD_MAX_LEN); + if (!input) + return -ENOMEM; + if (copy_from_user(input, wrqu->pointer, wrqu->length)) { + rtw_mfree(input, RTW_IWD_MAX_LEN); return -EFAULT; - + } ret = sscanf(input, "%d,%x,%x", &path, &addr, &data); + rtw_mfree(input, RTW_IWD_MAX_LEN); if (ret < 3) return -EINVAL; @@ -304,7 +316,7 @@ int rtw_mp_write_rf(struct net_device *dev, write_rfreg(padapter, path, addr, data); - sprintf(extra, "write_rf completed\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "write_rf completed\n"); wrqu->length = strlen(extra); return 0; @@ -323,7 +335,7 @@ int rtw_mp_read_rf(struct net_device *dev, struct iw_request_info *info, struct iw_point *wrqu, char *extra) { - char input[RTW_IWD_MAX_LEN]; + char *input = NULL; char *pch, *pnext; char data[20], tmp[20]; u32 path, addr, strtou; @@ -335,13 +347,15 @@ int rtw_mp_read_rf(struct net_device *dev, if (rtw_do_mp_iwdata_len_chk(__func__, wrqu->length)) return -EFAULT; - if (wrqu->length > 128) + input = (char *)rtw_zmalloc(RTW_IWD_MAX_LEN); + if (!input) + return -ENOMEM; + if (copy_from_user(input, wrqu->pointer, wrqu->length)) { + rtw_mfree(input, RTW_IWD_MAX_LEN); return -EFAULT; - _rtw_memset(input, 0, wrqu->length); - if (copy_from_user(input, wrqu->pointer, wrqu->length)) - return -EFAULT; - + } ret = sscanf(input, "%d,%x", &path, &addr); + rtw_mfree(input, RTW_IWD_MAX_LEN); if (ret < 2) return -EINVAL; @@ -353,7 +367,7 @@ int rtw_mp_read_rf(struct net_device *dev, _rtw_memset(extra, 0, wrqu->length); - sprintf(data, "%08x", read_rfreg(padapter, path, addr)); + snprintf(data, sizeof(data), "%08x", read_rfreg(padapter, path, addr)); /*add read data format blank*/ for (i = 0 ; i <= strlen(data) ; i++) { if (i % 2 == 0) { @@ -433,7 +447,7 @@ int rtw_mp_stop(struct net_device *dev, pmppriv->bprocess_mp_mode = _FALSE; _rtw_memset(extra, 0, wrqu->length); - sprintf(extra, "mp_stop %s\n", ret == 0 ? "ok" : "fail"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "mp_stop %s\n", ret == 0 ? "ok" : "fail"); wrqu->length = strlen(extra); return ret; @@ -483,7 +497,8 @@ int rtw_mp_rate(struct net_device *dev, _rtw_memset(extra, 0, wrqu->length); if (pmppriv->rateidx > DESC_RATEVHTSS4MCS9) { - sprintf(extra, "Set %s Error" , input); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set %s Error" , input); + wrqu->length = strlen(extra); return -EINVAL; } @@ -499,10 +514,10 @@ int rtw_mp_rate(struct net_device *dev, err = 1; if (err == 1) { - sprintf(extra, "Set data rate to %s Error" , input); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set data rate to %s Error" , input); pmppriv->rateidx = 0; } else { - sprintf(extra, "Set data rate to %s index %d" , input, pmppriv->rateidx); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set data rate to %s index %d" , input, pmppriv->rateidx); RTW_INFO("%s: %s rate index=%d\n", __func__, input, pmppriv->rateidx); pMptCtx->mpt_rate_index = HwRateToMPTRate(pmppriv->rateidx); SetDataRate(padapter); @@ -531,14 +546,19 @@ int rtw_mp_channel(struct net_device *dev, input[wrqu->length] = '\0'; channel = rtw_atoi(input); - /*RTW_INFO("%s: channel=%d\n", __func__, channel);*/ _rtw_memset(extra, 0, wrqu->length); - sprintf(extra, "Change channel %d to channel %d", padapter->mppriv.channel , channel); - padapter->mppriv.channel = channel; - rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); - rtw_adjust_chbw(padapter, channel, &pmppriv->bandwidth, &pmppriv->prime_channel_offset); - SetChannel(padapter); - pHalData->current_channel = channel; + pmppriv->channel = channel; + + if (channel != pHalData->current_channel) { + sprintf(extra, "Change channel %d to channel %d", pHalData->current_channel, channel); + + rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); + rtw_adjust_chbw(padapter, channel, &pmppriv->bandwidth, &pmppriv->prime_channel_offset); + RTW_INFO("%s: channel=%d,bandwidth=%d\n", __func__, channel, pmppriv->bandwidth); + SetChannel(padapter); + pHalData->current_channel = channel; + } else + snprintf(extra, RTW_EXTRA_MAX_LEN, "No change current channel:%d", pHalData->current_channel); wrqu->length = strlen(extra); return 0; @@ -595,15 +615,20 @@ int rtw_mp_bandwidth(struct net_device *dev, if (sscanf(input, "40M=%hhd,shortGI=%hhd", &bandwidth, &sg) > 0) RTW_INFO("%s: bw=%hhd sg=%hhd\n", __func__, bandwidth , sg); - rtw_adjust_chbw(padapter, pmppriv->channel, &bandwidth, &pmppriv->prime_channel_offset); + pmppriv->bandwidth = (u8)bandwidth; + pmppriv->preamble = sg; - padapter->mppriv.bandwidth = (u8)bandwidth; - padapter->mppriv.preamble = sg; - _rtw_memset(extra, 0, wrqu->length); - sprintf(extra, "Change BW %d to BW %d\n", pHalData->current_channel_bw , bandwidth); - rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); - SetBandwidth(padapter); - pHalData->current_channel_bw = bandwidth; + if (bandwidth != pHalData->current_channel_bw) { + rtw_adjust_chbw(padapter, pmppriv->channel, &bandwidth, &pmppriv->prime_channel_offset); + RTW_INFO("%s: channel=%d,bandwidth=%d\n", __func__, pmppriv->channel, bandwidth); + + _rtw_memset(extra, 0, wrqu->length); + sprintf(extra, "Change BW %d to BW %d\n", pHalData->current_channel_bw , bandwidth); + rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); + SetBandwidth(padapter); + pHalData->current_channel_bw = bandwidth; + } else + snprintf(extra, RTW_EXTRA_MAX_LEN, "No change current BW %d\n", pHalData->current_channel_bw); wrqu->length = strlen(extra); @@ -625,9 +650,6 @@ int rtw_mp_txpower_index(struct net_device *dev, if (rtw_do_mp_iwdata_len_chk(__func__, (wrqu->length + 1))) return -EFAULT; - if (wrqu->length > 128) - return -EFAULT; - _rtw_memset(input, 0, sizeof(input)); if (copy_from_user(input, wrqu->pointer, wrqu->length)) @@ -693,133 +715,187 @@ int rtw_mp_txpower(struct net_device *dev, { u32 idx_a = 0, idx_b = 0, idx_c = 0, idx_d = 0; int MsetPower = 1; - u8 input[RTW_IWD_MAX_LEN]; - char pout_str_buf[7]; + u8 *input = NULL; + char pout_str_buf[8]; u8 res = 0; char *pextra; PADAPTER padapter = rtw_netdev_priv(dev); PMPT_CONTEXT pMptCtx = &(padapter->mppriv.mpt_ctx); struct mp_priv *pmppriv = &padapter ->mppriv; + struct hal_spec_t *hal_spec = GET_HAL_SPEC(padapter); if (rtw_do_mp_iwdata_len_chk(__func__, wrqu->length)) return -EFAULT; - if (copy_from_user(input, wrqu->pointer, wrqu->length)) - return -EFAULT; + input = (char *)rtw_zmalloc(RTW_IWD_MAX_LEN); + if (!input) + return -ENOMEM; + + if (copy_from_user(input, wrqu->pointer, wrqu->length)){ + sprintf(extra, "copy_from_user() lead to an error, line(%d)\n", __LINE__); + goto mp_txpower_end; + } + input[wrqu->length] = '\0'; MsetPower = strncmp(input, "off", 3); if (MsetPower == 0) { pmppriv->bSetTxPower = 0; - sprintf(extra, "MP Set power off"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "MP Set power off"); } else { - if (sscanf(input, "patha=%d,pathb=%d,pathc=%d,pathd=%d", &idx_a, &idx_b, &idx_c, &idx_d) >= 1) { + res = sscanf(input, "patha=%d,pathb=%d,pathc=%d,pathd=%d", &idx_a, &idx_b, &idx_c, &idx_d); + if (res < 1) { if(isdigit(input[0])){ idx_a = rtw_atoi(input); RTW_INFO("direct set RF Path A Power =%d\n", idx_a); - } else - RTW_INFO("Invalid format on %s !, Get patha=%d,pathb=%d,pathc=%d,pathd=%d\n", input , idx_a , idx_b , idx_c , idx_d); + } else { + sprintf(extra, "Invalid format on string :%s ", input); + RTW_INFO("Invalid format on %s !, \ + Get patha=%d,pathb=%d,pathc=%d,pathd=%d\n", input , idx_a , idx_b , idx_c , idx_d); + } } - pmppriv->txpoweridx = (u8)idx_a; - pMptCtx->TxPwrLevel[RF_PATH_A] = (u8)idx_a; - pMptCtx->TxPwrLevel[RF_PATH_B] = (u8)idx_b; - pMptCtx->TxPwrLevel[RF_PATH_C] = (u8)idx_c; - pMptCtx->TxPwrLevel[RF_PATH_D] = (u8)idx_d; - padapter->mppriv.bSetTxPower = 1; + if (res > 0 || idx_a != 0) { - SetTxPower(padapter); - } else if (sscanf(input, "a_dbm=%d", &idx_a) >= 1) { - s32 db_temp = 0; - s16 pout = 0; - u32 poutdbm = 0; - u32 poutdbm_int; - u32 poutdbm_dec; - if (idx_a < 9 || idx_a >= 22) { - sprintf(extra, "Error input:%d,Tune dBm range is 9-22\n", idx_a); - goto invalid_turn_dbm; + pmppriv->txpoweridx = (u8)idx_a; + pMptCtx->TxPwrLevel[RF_PATH_A] = (u8)idx_a; + pMptCtx->TxPwrLevel[RF_PATH_B] = (u8)idx_b; + pMptCtx->TxPwrLevel[RF_PATH_C] = (u8)idx_c; + pMptCtx->TxPwrLevel[RF_PATH_D] = (u8)idx_d; + pmppriv->bSetTxPower = 1; + SetTxPower(padapter); + + sprintf(extra, "Set power level path_A:%d path_B:%d path_C:%d path_D:%d", + idx_a , idx_b , idx_c , idx_d); + goto mp_txpower_end; } - db_temp = (s16)hal_mpt_tssi_turn_target_power(padapter, pout, RF_PATH_A); - RTW_INFO("%s: mpt_tssi_turn_target_power db_temp=%d\n", __func__, db_temp); + if (sscanf(input, "a_dbm=%d", &idx_a) >= 1) { + s32 db_temp = 0; + s16 pout = 0; + u32 poutdbm = 0; + u32 poutdbm_int; + u32 poutdbm_dec; + if (idx_a < 9 || idx_a >= 22) { + sprintf(extra, "Error input:%d,Tune dBm range is 9-22\n", idx_a); + goto mp_txpower_end; + } - pout = idx_a*100 - db_temp; - poutdbm = hal_mpt_tssi_turn_target_power(padapter, pout, RF_PATH_A); - sprintf(extra, "Path A Set power dbm :%d\n", idx_a); + db_temp = (s16)hal_mpt_tssi_turn_target_power(padapter, pout, RF_PATH_A); + RTW_INFO("%s: mpt_tssi_turn_target_power db_temp=%d\n", __func__, db_temp); - pmppriv->bSetTxPower = 1; - } else if (sscanf(input, "b_dbm=%d", &idx_b) >= 1) { - s32 db_temp = 0; - s16 pout = 0; - u32 poutdbm = 0; + pout = idx_a*100 - db_temp; + poutdbm = hal_mpt_tssi_turn_target_power(padapter, pout, RF_PATH_A); + sprintf(extra, "Path A Set power dbm :%d\n", idx_a); - if (idx_b < 9 || idx_b >= 22) { - sprintf(extra, "Error input:%d,Tune dBm range is 9-22\n", idx_b); - goto invalid_turn_dbm; + pmppriv->bSetTxPower = 1; + } else if (sscanf(input, "b_dbm=%d", &idx_b) >= 1) { + s32 db_temp = 0; + s16 pout = 0; + u32 poutdbm = 0; + + if (idx_b < 9 || idx_b >= 22) { + sprintf(extra, "Error input:%d,Tune dBm range is 9-22\n", idx_b); + goto mp_txpower_end; + } + db_temp = (s16)hal_mpt_tssi_turn_target_power(padapter, pout, RF_PATH_B); + RTW_INFO("%s: mpt_tssi_turn_target_power db_temp=%d\n", __func__, db_temp); + + pout = idx_b*100 - db_temp; + poutdbm = hal_mpt_tssi_turn_target_power(padapter, pout, RF_PATH_B); + sprintf(extra, "Path B Set power dbm :%d\n", idx_b); + + pmppriv->bSetTxPower = 1; + } else if (strncmp(input, "pwroffset", 9) == 0) {/*pwroffset patha/pathb=-9 ~ 9*/ + u8 signed_flag = 0; + u8 rfpath = 0xff; + int int_num = 0; + u32 dec_num = 0; + s16 pout = 0; + int i; + u32 poutdbm; + u8 poutdbm_int; + u8 poutdbm_dec; + + if (sscanf(input+10, "patha=%7s", pout_str_buf) == 1) { + rfpath = 0; + } else if (sscanf(input+10, "pathb=%7s", pout_str_buf) == 1) { + rfpath = 1; + } else { + sprintf(extra, "[pwroffset patha/pathb=-9.00 ~ 9.00]"); + goto mp_txpower_end; + } + + if(pout_str_buf[0] == '-') + signed_flag = 1; + i = sscanf(pout_str_buf, "%d.%3u", &int_num, &dec_num); + pout = int_num * 100; + if(i == 2) { + dec_num = (dec_num < 10) ? dec_num * 10 : dec_num; + pout += ((pout < 0 || signed_flag == 1) ? -dec_num : dec_num); + } + + if (pout < -900 || pout > 900 || rfpath == 0xff) { + sprintf(extra, "CMD Format:[pwroffset patha/pathb=-9.00 ~ 9.00]\n" + " each scale step value must 0.25 or -0.25\n" + " scale limit range is -9.00 - 9.00"); + goto mp_txpower_end; + } + + pmppriv->txpower_dbm_offset = pout; + RTW_INFO("%s: pout = %d\n", __func__, pout); + hal_mpt_tssi_set_power_offset(padapter, pout, rfpath); + sprintf(extra, "Config power offset:%d OK\n", pout); + } else if (strncmp(input, "dbm", 3) == 0) { + u8 signed_flag = 0; + u8 ret = 0xff; + int int_num = 0; + u32 dec_num = 0; + s16 pout = 0; + int i; + u32 poutdbm = 0; + s32 db_temp = 0; + s16 pset = 0; + u8 rfpath; + + if (sscanf(input, "dbm=%7s", pout_str_buf) == 1) { + ret = 0; + } else { + sprintf(extra, "[dbm =0 ~ 20.00]"); + goto mp_txpower_end; + } + + if(pout_str_buf[0] == '-') + signed_flag = 1; + i = sscanf(pout_str_buf, "%d.%3u", &int_num, &dec_num); + + pset = int_num * 100; + if(i == 2) { + dec_num = (dec_num < 10) ? dec_num * 10 : dec_num; + pset += ((pset < 0 || signed_flag == 1) ? -dec_num : dec_num); + } + + if (pset < 900 || pset > 2200 || ret == 0xff) { + sprintf(extra, "CMD Format:[dbm= 9.00 ~ 22.00]\n" + " each scale step value must 0.25 or -0.25\n"); + goto mp_txpower_end; + } + for (rfpath = 0; rfpath < hal_spec->rf_reg_path_num; rfpath++) { + db_temp = (s16)hal_mpt_tssi_turn_target_power(padapter, pout, rfpath); + pout = pset - db_temp; + RTW_INFO("%s: path[%d] db_temp=%d pout = %d\n", __func__, rfpath, db_temp, pout); + poutdbm = hal_mpt_tssi_turn_target_power(padapter, pout, rfpath); + } + poutdbm = db_temp + pout; + + sprintf(extra, "Path Set power dbm :%d.%d\n", poutdbm / 100, poutdbm % 100); } - db_temp = (s16)hal_mpt_tssi_turn_target_power(padapter, pout, RF_PATH_B); - RTW_INFO("%s: mpt_tssi_turn_target_power db_temp=%d\n", __func__, db_temp); - - pout = idx_b*100 - db_temp; - poutdbm = hal_mpt_tssi_turn_target_power(padapter, pout, RF_PATH_B); - sprintf(extra, "Path B Set power dbm :%d\n", idx_b); - - pmppriv->bSetTxPower = 1; - } else if (strncmp(input, "dbm_tune", 8) == 0) { - u8 signed_flag = 0; - u8 rfpath; - int int_num; - u32 dec_num; - s16 pout; - int i; - u32 poutdbm; - u8 poutdbm_int; - u8 poutdbm_dec; - - sscanf(input+8, "%hhu %7s", &rfpath, pout_str_buf); - if(pout_str_buf[0] == '-') - signed_flag = 1; - i = sscanf(pout_str_buf, "%d.%3u", &int_num, &dec_num); - pout = int_num * 100; - if(i == 2) { - dec_num = (dec_num < 10) ? dec_num * 10 : dec_num; - pout += ((pout < 0 || signed_flag == 1) ? -dec_num : dec_num); - } - if (pout % 25 != 0) - goto invalid_param_format; - - if (pout < -125 || pout > 125) - goto invalid_param_format; - - //sprintf(extra, "Set power dbm offset :%d\n", pout); - pmppriv->txpower_dbm_offset = pout; - pmppriv->bSetTxPower = 1; - poutdbm = hal_mpt_tssi_turn_target_power(padapter, pout, rfpath); - - poutdbm_int = poutdbm/100; - poutdbm_dec = poutdbm%100; - if (poutdbm_int < 9 || poutdbm_int >= 22) - sprintf(extra, "Error power dBm :%d.%d ,Tune dBm range is 9-22\n", poutdbm_int, poutdbm_dec); - else - sprintf(extra, "Tune power dBm :%d.%d OK\n", poutdbm_int, poutdbm_dec); - - } else { - if (res > 0 || idx_a !=0) - sprintf(extra, "Set power level path_A:%d path_B:%d path_C:%d path_D:%d", idx_a , idx_b , idx_c , idx_d); - else - sprintf(extra, "Invalid format on string :%s ", input); - } } + +mp_txpower_end: wrqu->length = strlen(extra); - return 0; -invalid_param_format: - sprintf(extra, "Invalid command format Error,\n CMD: dbm_tune [RF Path] [dBm power scale] \n" - "Please indicate [RF path]: 0/1/2/3\n"); - pextra = extra + strlen(extra); - sprintf(pextra, "[dbm power scale] each scale step value must 0.25 or -0.25\n" - "scale limit range is -1.25 - 1.25"); -invalid_turn_dbm: - wrqu->length = strlen(extra); + if (input) + rtw_mfree(input, RTW_IWD_MAX_LEN); return 0; } @@ -842,7 +918,7 @@ int rtw_mp_ant_tx(struct net_device *dev, return -EFAULT; input[wrqu->length] = '\0'; - sprintf(extra, "switch Tx antenna to %s", input); + snprintf(extra, RTW_EXTRA_MAX_LEN, "switch Tx antenna to %s", input); for (i = 0; i < strlen(input); i++) { switch (input[i]) { @@ -866,11 +942,12 @@ int rtw_mp_ant_tx(struct net_device *dev, /*RTW_INFO("%s:mppriv.antenna_rx=%d\n", __func__, padapter->mppriv.antenna_tx);*/ pHalData->antenna_tx_path = antenna; - if (IS_HARDWARE_TYPE_8822C(padapter) && padapter->mppriv.antenna_tx == ANTENNA_B) { + if ((IS_HARDWARE_TYPE_8822C(padapter) || IS_HARDWARE_TYPE_8822E(padapter)) + && padapter->mppriv.antenna_tx == ANTENNA_B) { if (padapter->mppriv.antenna_rx == ANTENNA_A || padapter->mppriv.antenna_rx == ANTENNA_B) { padapter->mppriv.antenna_rx = ANTENNA_AB; pHalData->AntennaRxPath = ANTENNA_AB; - RTW_INFO("%s:8822C Tx-B Rx Ant to AB\n", __func__); + RTW_INFO("%s:8822C/8822E Tx-B Rx Ant to AB\n", __func__); } } SetAntenna(padapter); @@ -901,7 +978,7 @@ int rtw_mp_ant_rx(struct net_device *dev, /*RTW_INFO("%s: input=%s\n", __func__, input);*/ _rtw_memset(extra, 0, wrqu->length); - sprintf(extra, "switch Rx antenna to %s", input); + snprintf(extra, RTW_EXTRA_MAX_LEN, "switch Rx antenna to %s", input); for (i = 0; i < strlen(input); i++) { switch (input[i]) { @@ -976,7 +1053,7 @@ int rtw_mp_ctx(struct net_device *dev, pattrib = &pmp_priv->tx.attrib; if (padapter->registrypriv.mp_mode != 1 ) { - sprintf(extra, "Error: can't tx ,not in MP mode. \n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Error: can't tx ,not in MP mode. \n"); wrqu->length = strlen(extra); return 0; } @@ -988,7 +1065,7 @@ int rtw_mp_ctx(struct net_device *dev, RTW_INFO("%s: in=%s\n", __func__, extra); #ifdef CONFIG_CONCURRENT_MODE if (!is_primary_adapter(padapter)) { - sprintf(extra, "Error: MP mode can't support Virtual Adapter, Please to use main Adapter.\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Error: MP mode can't support Virtual Adapter, Please to use main Adapter.\n"); wrqu->length = strlen(extra); return 0; } @@ -1013,11 +1090,11 @@ int rtw_mp_ctx(struct net_device *dev, payload = MP_TX_Payload_default_random; if (strncmp(extra, "payload=prbs9", 14) == 0) { payload = MP_TX_Payload_prbs9; - sprintf(extra, "config payload PRBS9\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "config payload PRBS9\n"); } else { if (sscanf(extra, "payload=%x", &payload) > 0){ RTW_INFO("payload= %x\n", payload); - sprintf(extra, "config payload setting = %x\n" + snprintf(extra, RTW_EXTRA_MAX_LEN, "config payload setting = %x\n" "1. input payload=[]:\n " "[0]: 00, [1]: A5, [2]: 5A, [3]: FF, [4]: PRBS-9, [5]: Random\n" "2. specified a hex payload: payload=0xee\n", payload); @@ -1029,22 +1106,22 @@ int rtw_mp_ctx(struct net_device *dev, } if (_rtw_memcmp(extra, "destmac=", 8)) { - wrqu->length -= 8; rtw_set_ctx_destAddr(dev, info, wrqu, &extra[8]); - sprintf(extra, "Set dest mac OK !\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set dest mac OK !\n"); + wrqu->length = strlen(extra); return 0; } /*RTW_INFO("%s: count=%d countPkTx=%d cotuTx=%d CarrSprTx=%d scTx=%d sgleTx=%d pkTx=%d stop=%d\n", __func__, count, countPkTx, cotuTx, CarrSprTx, pkTx, sgleTx, scTx, stop);*/ _rtw_memset(extra, '\0', strlen(extra)); if (pktinterval != 0) { - sprintf(extra, "Pkt Interval = %d", pktinterval); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Pkt Interval = %d", pktinterval); padapter->mppriv.pktInterval = pktinterval; wrqu->length = strlen(extra); return 0; } else if (pktlen != 0) { - sprintf(extra, "Pkt len = %d", pktlen); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Pkt len = %d", pktlen); pattrib->pktlen = pktlen; wrqu->length = strlen(extra); return 0; @@ -1057,7 +1134,7 @@ int rtw_mp_ctx(struct net_device *dev, u32 i = 0; bStartTest = 0; /* To set Stop*/ pmp_priv->tx.stop = 1; - sprintf(extra, "Stop continuous Tx"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Stop continuous Tx"); odm_write_dig(&pHalData->odmpriv, 0x20); do { if (pxmitpriv->free_xmitframe_cnt == NR_XMITFRAME && pxmitpriv->free_xmitbuf_cnt == NR_XMITBUFF) @@ -1071,11 +1148,12 @@ int rtw_mp_ctx(struct net_device *dev, } else { bStartTest = 1; odm_write_dig(&pHalData->odmpriv, 0x3f); - if (IS_HARDWARE_TYPE_8822C(padapter) && pmp_priv->antenna_tx == ANTENNA_B) { + if ((IS_HARDWARE_TYPE_8822C(padapter) || IS_HARDWARE_TYPE_8822E(padapter)) + && pmp_priv->antenna_tx == ANTENNA_B) { if (pmp_priv->antenna_rx == ANTENNA_A || pmp_priv->antenna_rx == ANTENNA_B) { pmp_priv->antenna_rx = ANTENNA_AB; pHalData->AntennaRxPath = ANTENNA_AB; - RTW_INFO("%s:8822C Tx-B Rx Ant to AB\n", __func__); + RTW_INFO("%s:8822C/8822E Tx-B Rx Ant to AB\n", __func__); SetAntenna(padapter); } } @@ -1160,9 +1238,9 @@ int rtw_mp_arx(struct net_device *dev, { int bStartRx = 0, bStopRx = 0, bQueryPhy = 0, bQueryMac = 0, bSetBssid = 0, bSetRxframe = 0; int bmac_filter = 0, bmon = 0, bSmpCfg = 0; - u8 input[RTW_IWD_MAX_LEN]; + u8 *input = NULL; char *pch, *token, *tmp[2] = {0x00, 0x00}; - u32 i = 0, jj = 0, kk = 0, cnts = 0, ret; + u32 i = 0, jj = 0, kk = 0, cnts = 0, ret = 0; PADAPTER padapter = rtw_netdev_priv(dev); struct mp_priv *pmppriv = &padapter->mppriv; struct dbg_rx_counter rx_counter; @@ -1170,15 +1248,21 @@ int rtw_mp_arx(struct net_device *dev, if (rtw_do_mp_iwdata_len_chk(__func__, wrqu->length)) return -EFAULT; - if (copy_from_user(input, wrqu->pointer, wrqu->length)) - return -EFAULT; + input = (char *)rtw_zmalloc(RTW_IWD_MAX_LEN * sizeof(char)); + if (!input) + return -ENOMEM; + if (copy_from_user(input, wrqu->pointer, wrqu->length)){ + ret = -EFAULT; + goto exit; + } RTW_INFO("%s: %s\n", __func__, input); #ifdef CONFIG_CONCURRENT_MODE if (!is_primary_adapter(padapter)) { - sprintf(extra, "Error: MP mode can't support Virtual Adapter, Please to use main Adapter.\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Error: MP mode can't support Virtual Adapter, Please to use main Adapter.\n"); wrqu->length = strlen(extra); - return 0; + ret = 0; + goto exit; } #endif bStartRx = (strncmp(input, "start", 5) == 0) ? 1 : 0; /* strncmp TRUE is 0*/ @@ -1203,16 +1287,20 @@ int rtw_mp_arx(struct net_device *dev, } if ((tmp[0] != NULL) && (tmp[1] != NULL)) { cnts = strlen(tmp[1]) / 2; - if (cnts < 1) - return -EFAULT; + if (cnts < 1) { + ret = -EFAULT; + goto exit; + } RTW_INFO("%s: cnts=%d\n", __func__, cnts); RTW_INFO("%s: data=%s\n", __func__, tmp[1]); for (jj = 0, kk = 0; jj < cnts ; jj++, kk += 2) { pmppriv->network_macaddr[jj] = key_2char2num(tmp[1][kk], tmp[1][kk + 1]); RTW_INFO("network_macaddr[%d]=%x\n", jj, pmppriv->network_macaddr[jj]); } - } else - return -EFAULT; + } else { + ret = -EFAULT; + goto exit; + } pmppriv->bSetRxBssid = _TRUE; } @@ -1234,40 +1322,44 @@ int rtw_mp_arx(struct net_device *dev, } if ((tmp[0] != NULL) && (tmp[1] != NULL)) { cnts = strlen(tmp[1]) / 2; - if (cnts < 1) - return -EFAULT; + if (cnts < 1) { + ret = -EFAULT; + goto exit; + } RTW_INFO("%s: cnts=%d\n", __func__, cnts); RTW_INFO("%s: data=%s\n", __func__, tmp[1]); for (jj = 0, kk = 0; jj < cnts ; jj++, kk += 2) { pmppriv->mac_filter[jj] = key_2char2num(tmp[1][kk], tmp[1][kk + 1]); RTW_INFO("%s mac_filter[%d]=%x\n", __func__, jj, pmppriv->mac_filter[jj]); } - } else - return -EFAULT; + } else { + ret = -EFAULT; + goto exit; + } } if (bStartRx) { - sprintf(extra, "start"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "start"); SetPacketRx(padapter, bStartRx, _FALSE); } else if (bStopRx) { SetPacketRx(padapter, bStartRx, _FALSE); pmppriv->bmac_filter = _FALSE; pmppriv->bSetRxBssid = _FALSE; - sprintf(extra, "Received packet OK:%d CRC error:%d ,Filter out:%d", padapter->mppriv.rx_pktcount, padapter->mppriv.rx_crcerrpktcount, padapter->mppriv.rx_pktcount_filter_out); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Received packet OK:%d CRC error:%d ,Filter out:%d", padapter->mppriv.rx_pktcount, padapter->mppriv.rx_crcerrpktcount, padapter->mppriv.rx_pktcount_filter_out); } else if (bQueryPhy) { _rtw_memset(&rx_counter, 0, sizeof(struct dbg_rx_counter)); rtw_dump_phy_rx_counters(padapter, &rx_counter); RTW_INFO("%s: OFDM_FA =%d\n", __func__, rx_counter.rx_ofdm_fa); RTW_INFO("%s: CCK_FA =%d\n", __func__, rx_counter.rx_cck_fa); - sprintf(extra, "Phy Received packet OK:%d CRC error:%d FA Counter: %d", rx_counter.rx_pkt_ok, rx_counter.rx_pkt_crc_error, rx_counter.rx_cck_fa + rx_counter.rx_ofdm_fa); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Phy Received packet OK:%d CRC error:%d FA Counter: %d", rx_counter.rx_pkt_ok, rx_counter.rx_pkt_crc_error, rx_counter.rx_cck_fa + rx_counter.rx_ofdm_fa); } else if (bQueryMac) { _rtw_memset(&rx_counter, 0, sizeof(struct dbg_rx_counter)); rtw_dump_mac_rx_counters(padapter, &rx_counter); - sprintf(extra, "Mac Received packet OK: %d , CRC error: %d , Drop Packets: %d\n", + snprintf(extra, RTW_EXTRA_MAX_LEN, "Mac Received packet OK: %d , CRC error: %d , Drop Packets: %d\n", rx_counter.rx_pkt_ok, rx_counter.rx_pkt_crc_error, rx_counter.rx_pkt_drop); } @@ -1277,10 +1369,10 @@ int rtw_mp_arx(struct net_device *dev, if (bmon == 1) { pmppriv->rx_bindicatePkt = _TRUE; - sprintf(extra, "Indicating Receive Packet to network start\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Indicating Receive Packet to network start\n"); } else { pmppriv->rx_bindicatePkt = _FALSE; - sprintf(extra, "Indicating Receive Packet to network Stop\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Indicating Receive Packet to network Stop\n"); } } if (bSmpCfg == 1) { @@ -1288,17 +1380,17 @@ int rtw_mp_arx(struct net_device *dev, if (bSmpCfg == 1) { pmppriv->bRTWSmbCfg = _TRUE; - sprintf(extra , "Indicate By Simple Config Format\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Indicate By Simple Config Format\n"); SetPacketRx(padapter, _TRUE, _TRUE); } else { pmppriv->bRTWSmbCfg = _FALSE; - sprintf(extra , "Indicate By Normal Format\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Indicate By Normal Format\n"); SetPacketRx(padapter, _TRUE, _FALSE); } } if (pmppriv->bloopback == _TRUE) { - sprintf(extra , "Enter MAC LoopBack mode\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Enter MAC LoopBack mode\n"); #if defined(CONFIG_RTL8814B) /* 1. No adhoc, 2. Enable short cut */ rtw_write32(padapter, 0x100, 0x0B000EFF); @@ -1311,8 +1403,11 @@ int rtw_mp_arx(struct net_device *dev, } wrqu->length = strlen(extra) + 1; - - return 0; + ret = 0; +exit: + if (input) + rtw_mfree(input, RTW_IWD_MAX_LEN); + return ret; } @@ -1337,7 +1432,7 @@ int rtw_mp_trx_query(struct net_device *dev, _rtw_memset(extra, '\0', 128); - sprintf(extra, "Tx OK:%d, Tx Fail:%d, Rx OK:%d, CRC error:%d ,Rx Filter out:%d\n", txok, txfail, rxok, rxfail, rxfilterout); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Tx OK:%d, Tx Fail:%d, Rx OK:%d, CRC error:%d ,Rx Filter out:%d\n", txok, txfail, rxok, rxfail, rxfilterout); wrqu->length = strlen(extra) + 1; @@ -1368,12 +1463,12 @@ int rtw_mp_pwrtrk(struct net_device *dev, /* not empty string*/ if (strncmp(input, "stop", 4) == 0) { enable = 0; - sprintf(extra, "mp tx power tracking stop"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "mp tx power tracking stop"); } else if (sscanf(input, "ther=%d", &thermal) == 1) { ret = SetThermalMeter(padapter, (u8)thermal); if (ret == _FAIL) return -EPERM; - sprintf(extra, "mp tx power tracking start,target value=%d ok", thermal); + snprintf(extra, RTW_EXTRA_MAX_LEN, "mp tx power tracking start,target value=%d ok", thermal); } else return -EINVAL; } @@ -1464,6 +1559,10 @@ int rtw_mp_thermal(struct net_device *dev, ther_path_addr[0] = EEPROM_THERMAL_METER_A_8822C; ther_path_addr[1] = EEPROM_THERMAL_METER_B_8822C; #endif +#ifdef CONFIG_RTL8822E + ther_path_addr[0] = EEPROM_THERMAL_METER_A_8822E; + ther_path_addr[1] = EEPROM_THERMAL_METER_B_8822E; +#endif #ifdef CONFIG_RTL8814B ther_path_addr[0] = EEPROM_THERMAL_METER_A_8814B; ther_path_addr[1] = EEPROM_THERMAL_METER_B_8814B; @@ -1505,7 +1604,7 @@ int rtw_mp_thermal(struct net_device *dev, } } _rtw_memset(extra, 0, wrqu->length); - sprintf(extra, " efuse write ok :%d", val[0]); + snprintf(extra, RTW_EXTRA_MAX_LEN, " efuse write ok :%d", val[0]); } else { ret = sscanf(extra, "%d", &rfpath); if (ret < 1) { @@ -1519,7 +1618,7 @@ int rtw_mp_thermal(struct net_device *dev, GetThermalMeter(padapter, rfpath, &val[0]); _rtw_memset(extra, 0, wrqu->length); - sprintf(extra, "%d", val[0]); + snprintf(extra, RTW_EXTRA_MAX_LEN, "%d", val[0]); } wrqu->length = strlen(extra); @@ -1547,7 +1646,7 @@ int rtw_mp_reset_stats(struct net_device *dev, rtw_reset_mac_rx_counters(padapter); _rtw_memset(extra, 0, wrqu->length); - sprintf(extra, "mp_reset_stats ok\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "mp_reset_stats ok\n"); wrqu->length = strlen(extra); return 0; @@ -1604,7 +1703,8 @@ int rtw_mp_phypara(struct net_device *dev, invalxcap = invalxcap & 0x7f; /* xtal bit 0 ~6 */ RTW_INFO("get crystal_cap %d\n", invalxcap); - if (IS_HARDWARE_TYPE_8822C(padapter) && ret == 1) { + if ((IS_HARDWARE_TYPE_8822C(padapter) || IS_HARDWARE_TYPE_8822E(padapter)) + && ret == 1) { hwxtaladdr = 0x110; pgval = invalxcap | 0x80; /* reserved default bit7 on */ pgval = pgval | pgval << 8; /* xtal xi/xo efuse 0x110 0x111 */ @@ -1612,10 +1712,10 @@ int rtw_mp_phypara(struct net_device *dev, RTW_INFO("Get crystal_cap 0x%x\n", pgval); if (rtw_efuse_map_write(padapter, hwxtaladdr, 2, (u8*)&pgval) == _FAIL) { RTW_INFO("%s: rtw_efuse_map_write xcap error!!\n", __func__); - sprintf(extra, "write xcap pgdata fail"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "write xcap pgdata fail"); ret = -EFAULT; } else - sprintf(extra, "write xcap pgdata ok"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "write xcap pgdata ok"); } } else { @@ -1629,7 +1729,7 @@ int rtw_mp_phypara(struct net_device *dev, RTW_ERR("set crystal_cap failed\n"); rtw_warn_on(1); } - sprintf(extra, "Set xcap=%d", invalxcap); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set xcap=%d", invalxcap); } } @@ -1661,32 +1761,24 @@ int rtw_mp_SetRFPath(struct net_device *dev, bTurnoff = strncmp(input, "0", 3); /* strncmp TRUE is 0*/ _rtw_memset(extra, 0, wrqu->length); -#ifdef CONFIG_ANTENNA_DIVERSITY - if (bMain == 0) - ret = rtw_mp_set_antdiv(padapter, _TRUE); - else - ret = rtw_mp_set_antdiv(padapter, _FALSE); - if (ret == _FALSE) - RTW_INFO("%s:ANTENNA_DIVERSITY FAIL\n", __func__); -#endif if (bMain == 0) { MP_PHY_SetRFPathSwitch(padapter, _TRUE); RTW_INFO("%s:PHY_SetRFPathSwitch=TRUE\n", __func__); - sprintf(extra, "mp_setrfpath Main\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "mp_setrfpath Main\n"); } else if (bTurnoff == 0) { MP_PHY_SetRFPathSwitch(padapter, _FALSE); RTW_INFO("%s:PHY_SetRFPathSwitch=FALSE\n", __func__); - sprintf(extra, "mp_setrfpath Aux\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "mp_setrfpath Aux\n"); } else { bMain = MP_PHY_QueryRFPathSwitch(padapter); RTW_INFO("%s:Query RF Path = %s\n", __func__, (bMain ? "Main":"Aux")); if (IS_HARDWARE_TYPE_8821C(padapter)) - sprintf(extra, "RF Path %s\n" , + snprintf(extra, RTW_EXTRA_MAX_LEN, "RF Path %s\n" , (bMain ? "ANT1/S0/PathB Mode: 0":"ANT2/S1/PathA Mode: 1")); else - sprintf(extra, "RF Path %s\n" , (bMain ? "1":"0")); + snprintf(extra, RTW_EXTRA_MAX_LEN, "RF Path %s\n" , (bMain ? "1":"0")); } wrqu->length = strlen(extra); @@ -1770,9 +1862,9 @@ int rtw_mp_QueryDrv(struct net_device *dev, RTW_INFO("%s:qAutoLoad\n", __func__); if (pHalData->bautoload_fail_flag) - sprintf(extra, "fail"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "fail"); else - sprintf(extra, "ok"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "ok"); } wrqu->data.length = strlen(extra) + 1; return 0; @@ -1784,7 +1876,8 @@ int rtw_mp_PwrCtlDM(struct net_device *dev, struct iw_point *wrqu, char *extra) { PADAPTER padapter = rtw_netdev_priv(dev); - u8 input[RTW_IWD_MAX_LEN]; + u8 *input = NULL; + int ret = 0; u8 pwrtrk_state = 0; u8 pwtk_type[5][25] = {"Thermal tracking off","Thermal tracking on", "TSSI tracking off","TSSI tracking on","TSSI calibration"}; @@ -1792,8 +1885,13 @@ int rtw_mp_PwrCtlDM(struct net_device *dev, if (rtw_do_mp_iwdata_len_chk(__func__, wrqu->length)) return -EFAULT; - if (copy_from_user(input, wrqu->pointer, wrqu->length)) - return -EFAULT; + input = (char *)rtw_zmalloc(RTW_IWD_MAX_LEN); + if (!input) + return -ENOMEM; + if (copy_from_user(input, wrqu->pointer, wrqu->length)) { + ret = -EFAULT; + goto exit; + } input[wrqu->length - 1] = '\0'; RTW_INFO("%s: in=%s\n", __func__, input); @@ -1802,45 +1900,47 @@ int rtw_mp_PwrCtlDM(struct net_device *dev, if(input[0] >= '0' && input[0] <= '4') { pwrtrk_state = rtw_atoi(input); MPT_PwrCtlDM(padapter, pwrtrk_state); - sprintf(extra, "PwrCtlDM start %s\n" , pwtk_type[pwrtrk_state]); + snprintf(extra, RTW_EXTRA_MAX_LEN, "PwrCtlDM start %s\n" , pwtk_type[pwrtrk_state]); } else { - sprintf(extra, "Error unknown number ! Please check your input number\n" + snprintf(extra, RTW_EXTRA_MAX_LEN, "Error unknown number ! Please check your input number\n" " 0 : Thermal tracking off\n 1 : Thermal tracking on\n 2 : TSSI tracking off\n" " 3 : TSSI tracking on\n 4 : TSSI calibration\n"); } wrqu->length = strlen(extra); - - return 0; + goto exit; } if (strncmp(input, "start", 5) == 0 || strncmp(input, "thertrk on", 10) == 0) {/* strncmp TRUE is 0*/ pwrtrk_state = 1; - sprintf(extra, "PwrCtlDM start %s\n" , pwtk_type[pwrtrk_state]); + snprintf(extra, RTW_EXTRA_MAX_LEN, "PwrCtlDM start %s\n" , pwtk_type[pwrtrk_state]); } else if (strncmp(input, "thertrk off", 11) == 0 || strncmp(input, "stop", 5) == 0) { pwrtrk_state = 0; - sprintf(extra, "PwrCtlDM stop %s\n" , pwtk_type[pwrtrk_state]); + snprintf(extra, RTW_EXTRA_MAX_LEN, "PwrCtlDM stop %s\n" , pwtk_type[pwrtrk_state]); } else if (strncmp(input, "tssitrk off", 11) == 0){ pwrtrk_state = 2; - sprintf(extra, "PwrCtlDM stop %s\n" , pwtk_type[pwrtrk_state]); + snprintf(extra, RTW_EXTRA_MAX_LEN, "PwrCtlDM stop %s\n" , pwtk_type[pwrtrk_state]); } else if (strncmp(input, "tssitrk on", 10) == 0){ pwrtrk_state = 3; - sprintf(extra, "PwrCtlDM start %s\n" , pwtk_type[pwrtrk_state]); + snprintf(extra, RTW_EXTRA_MAX_LEN, "PwrCtlDM start %s\n" , pwtk_type[pwrtrk_state]); } else if (strncmp(input, "tssik", 5) == 0){ pwrtrk_state = 4; - sprintf(extra, "PwrCtlDM start %s\n" , pwtk_type[pwrtrk_state]); + snprintf(extra, RTW_EXTRA_MAX_LEN, "PwrCtlDM start %s\n" , pwtk_type[pwrtrk_state]); } else { - sprintf(extra, "Error input !!!\n" + snprintf(extra, RTW_EXTRA_MAX_LEN, "Error input !!!\n" " thertrk off : Thermal tracking off\n thertrk on : Thermal tracking on\n" " tssitrk off : TSSI tracking off\n tssitrk on : TSSI tracking on\n tssik : TSSI calibration\n\n" " 0 : Thermal tracking off\n 1 : Thermal tracking on\n 2 : TSSI tracking off\n" " 3 : TSSI tracking on\n 4 : TSSI calibration\n"); wrqu->length = strlen(extra); - return 0; + goto exit; } MPT_PwrCtlDM(padapter, pwrtrk_state); wrqu->length = strlen(extra); - return 0; +exit: + if (input) + rtw_mfree(input, RTW_IWD_MAX_LEN); + return ret; } int rtw_mp_iqk(struct net_device *dev, @@ -1933,7 +2033,7 @@ int rtw_mp_get_tsside(struct net_device *dev, u8 legal_param_num = 1; int param_num; - char pout_str_buf[7]; + char pout_str_buf[8]; u8 signed_flag = 0; int integer_num; u32 decimal_num; @@ -1950,7 +2050,8 @@ int rtw_mp_get_tsside(struct net_device *dev, */ legal_param_num = 2; #endif - if (wrqu->length > 128) + + if (rtw_do_mp_iwdata_len_chk(__func__, wrqu->length)) return -EFAULT; _rtw_memset(input, 0, sizeof(input)); @@ -1975,16 +2076,32 @@ int rtw_mp_get_tsside(struct net_device *dev, signed_flag = 1; i = sscanf(pout_str_buf, "%d.%3u", &integer_num, &decimal_num); pout = integer_num * 1000; - if(i == 2) { - /* Convert decimal number - * ex : 0.1 => 100, -0.1 => 100 - */ - decimal_num = (decimal_num < 10) ? decimal_num * 100 : decimal_num; - decimal_num = (decimal_num < 100) ? decimal_num * 10 : decimal_num; + RTW_INFO("%s() pout1 = %d\n", __func__, pout); + + if (i == 2) { + /* Convert decimal number + * ex : 0.1 => 100, 0.01 => 10, 0.001 => 1. + */ + u8 idx = 0; + u32 dec = 0; + u8 str_len = 0; + char *token, *tmp[3] = {}; + + pextra = pout_str_buf; + while ((token = strsep (&pextra,".")) != NULL) { + tmp[idx] = token; + RTW_INFO("%s() token %d = %s strlen =%ld\n", __func__, + idx, tmp[idx], strlen(tmp[idx])); + idx++; + } + + str_len = strlen(tmp[1]); + dec = rtw_atoi(tmp[1]); + decimal_num = (str_len == 1) ? dec * 100: (str_len == 2) ? dec * 10: dec; + RTW_INFO("%s() decimal_num = %d\n", __func__, decimal_num); pout += ((pout < 0 || signed_flag == 1) ? -decimal_num : decimal_num); } - if(pout < -15000 || 25000 < pout) - goto invalid_param_format; + RTW_INFO("%s() pout2 = %d\n", __func__, pout); #endif #ifdef CONFIG_RTL8723F @@ -2007,10 +2124,10 @@ int rtw_mp_get_tsside(struct net_device *dev, return 0; invalid_param_format: - sprintf(extra, "Invalid command format, please indicate RF path 0/1/2/3"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Invalid command format, please indicate RF path 0/1/2/3"); #ifdef CONFIG_RTL8723F pextra = extra + strlen(extra); - sprintf(pextra, " and pout value : -15.000 ~ 25.000\n"); + snprintf(pextra, RTW_EXTRA_MAX_LEN - strlen(extra), " and pout value : -15.000 ~ 25.000\n"); #endif wrqu->length = strlen(extra); @@ -2035,33 +2152,84 @@ int rtw_mp_set_tsside(struct net_device *dev, return -EFAULT; if (sscanf(input, "patha=%d", &tsside_a) == 1) { - sprintf(extra, "Set TSSI DE path_A: %d", tsside_a); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set TSSI DE path_A: %d", tsside_a); halrf_tssi_set_de_for_tx_verify(pDM_Odm, tsside_a, RF_PATH_A); mpt_trigger_tssi_tracking(padapter, RF_PATH_A); - } else if (sscanf(input, "pathb=%d", &tsside_b) == 1) { - sprintf(extra, "Set TSSI DE path_B: %d", tsside_b); + } + else if (sscanf(input, "pathb=%d", &tsside_b) == 1) { + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set TSSI DE path_B: %d", tsside_b); halrf_tssi_set_de_for_tx_verify(pDM_Odm, tsside_b, RF_PATH_B); mpt_trigger_tssi_tracking(padapter, RF_PATH_B); - } else if (sscanf(input, "pathc=%d", &tsside_c) == 1) { - sprintf(extra, "Set TSSI DE path_C: %d", tsside_c); + } +#if defined(PHYDM_COMPILE_ABOVE_3SS) + else if (sscanf(input, "pathc=%d", &tsside_c) == 1) { + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set TSSI DE path_C: %d", tsside_c); halrf_tssi_set_de_for_tx_verify(pDM_Odm, tsside_c, RF_PATH_C); mpt_trigger_tssi_tracking(padapter, RF_PATH_C); - } else if (sscanf(input, "pathd=%d", &tsside_d) == 1) { - sprintf(extra, "Set TSSI DE path_D: %d", tsside_d); + } +#endif +#if defined(PHYDM_COMPILE_ABOVE_3SS) + else if (sscanf(input, "pathd=%d", &tsside_d) == 1) { + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set TSSI DE path_D: %d", tsside_d); halrf_tssi_set_de_for_tx_verify(pDM_Odm, tsside_d, RF_PATH_D); mpt_trigger_tssi_tracking(padapter, RF_PATH_D); - } else - sprintf(extra, "Invalid command format, please input TSSI DE value within patha/b/c/d=xyz"); + } +#endif + else + snprintf(extra, RTW_EXTRA_MAX_LEN, "Invalid command format, please input TSSI DE value within patha/b/c/d=xyz"); wrqu->length = strlen(extra); return 0; } + +int rtw_mp_ant_div(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + PADAPTER padapter = rtw_netdev_priv(dev); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + char *pch; + u8 ret = _FALSE; + u8 path = 0; + + if (copy_from_user(extra, wrqu->data.pointer, wrqu->data.length)) + return -EFAULT; + + *(extra + wrqu->data.length) = '\0'; + pch = extra; + + if (strncmp(extra, "0", 1) == 0) + path = 0; + else if (strncmp(extra, "1", 1) == 0) + path = 1; + else { + pch += sprintf(pch, "set Ant Div Path not support\n"); + RTW_INFO("%s:Ant Div Path not support\n", __func__); + wrqu->data.length = strlen(extra); + return ret; + } +#ifdef CONFIG_ANTENNA_DIVERSITY + ret = rtw_mp_set_antdiv(padapter, path); +#endif + if (ret == _FALSE) { + pch += sprintf(pch, "set Ant Div Path FAIL\n"); + RTW_INFO("%s:ANTENNA_DIVERSITY FAIL\n", __func__); + } else { + RTW_INFO("%s:ANTENNA_DIVERSITY OK\n", __func__); + pch += sprintf(pch, "set Ant Div Path %s\n", (path == 0 ? "AUX":"MAIN")); + } + + wrqu->data.length = strlen(extra); + + return ret; +} + int rtw_mp_getver(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) @@ -2074,7 +2242,7 @@ int rtw_mp_getver(struct net_device *dev, if (copy_from_user(extra, wrqu->data.pointer, wrqu->data.length)) return -EFAULT; - sprintf(extra, "rtwpriv=%d\n", RTWPRIV_VER_INFO); + snprintf(extra, RTW_EXTRA_MAX_LEN, "rtwpriv=%d\n", RTWPRIV_VER_INFO); wrqu->data.length = strlen(extra); return 0; } @@ -2112,7 +2280,7 @@ int rtw_mp_mon(struct net_device *dev, SetChannel(padapter); pmp_priv->rx_bindicatePkt = _TRUE; pmp_priv->bRTWSmbCfg = _TRUE; - sprintf(extra, "monitor mode start\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "monitor mode start\n"); } else if (bstop == 0) { SetPacketRx(padapter, _FALSE, _FALSE); pmp_priv->rx_bindicatePkt = _FALSE; @@ -2128,7 +2296,7 @@ int rtw_mp_mon(struct net_device *dev, /*rtw_free_assoc_resources_cmd(padapter, _TRUE, 0);*/ } rtw_pm_set_ips(padapter, IPS_NORMAL); - sprintf(extra, "monitor mode Stop\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "monitor mode Stop\n"); } #endif wrqu->data.length = strlen(extra); @@ -2149,7 +2317,7 @@ int rtw_mp_pretx_proc(PADAPTER padapter, u8 bStartTest, char *extra) #ifdef CONFIG_RTL8822B rtw_write8(padapter, 0x838, 0x61); #endif - sprintf(extra, "Stop continuous Tx"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Stop continuous Tx"); } else if (pmp_priv->tx.stop == 1) { pextra = extra + strlen(extra); pextra += sprintf(pextra, "\nStart continuous DA=ffffffffffff len=1500 count=%u\n", pmp_priv->tx.count); @@ -2187,7 +2355,7 @@ int rtw_mp_pretx_proc(PADAPTER padapter, u8 bStartTest, char *extra) break; default: - sprintf(extra, "Error! Continuous-Tx is not on-going."); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Error! Continuous-Tx is not on-going."); return -EFAULT; } @@ -2246,7 +2414,7 @@ int rtw_mp_tx(struct net_device *dev, RTW_INFO("extra = %s\n", extra); #ifdef CONFIG_CONCURRENT_MODE if (!is_primary_adapter(padapter)) { - sprintf(extra, "Error: MP mode can't support Virtual Adapter, Please to use main Adapter.\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Error: MP mode can't support Virtual Adapter, Please to use main Adapter.\n"); wrqu->data.length = strlen(extra); return 0; } @@ -2255,7 +2423,7 @@ int rtw_mp_tx(struct net_device *dev, if (strncmp(extra, "stop", 3) == 0) { bStartTest = 0; /* To set Stop*/ pmp_priv->tx.stop = 1; - sprintf(extra, "Stop continuous Tx"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Stop continuous Tx"); status = rtw_mp_pretx_proc(padapter, bStartTest, extra); wrqu->data.length = strlen(extra); return status; @@ -2281,10 +2449,10 @@ int rtw_mp_tx(struct net_device *dev, _rtw_memset(&pMptCtx->PMacTxInfo, 0, sizeof(pMptCtx->PMacTxInfo)); if (strncmp(extra, "pmact=start", 11) == 0) { pMptCtx->PMacTxInfo.bEnPMacTx = _TRUE; - sprintf(extra, "Set PMac Tx Mode start\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set PMac Tx Mode start\n"); } else { pMptCtx->PMacTxInfo.bEnPMacTx = _FALSE; - sprintf(extra, "Set PMac Tx Mode Stop\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set PMac Tx Mode Stop\n"); } if (pMptCtx->bldpc == TRUE) pMptCtx->PMacTxInfo.bLDPC = _TRUE; @@ -2357,17 +2525,17 @@ int rtw_mp_tx(struct net_device *dev, if (sscanf(extra, "pmact,mode=%d", &txmode) > 0) { if (txmode == 1) { pMptCtx->HWTxmode = CONTINUOUS_TX; - sprintf(extra, "\t Config HW Tx mode = CONTINUOUS_TX\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "\t Config HW Tx mode = CONTINUOUS_TX\n"); } else if (txmode == 2) { pMptCtx->HWTxmode = OFDM_Single_Tone_TX; - sprintf(extra, "\t Config HW Tx mode = OFDM_Single_Tone_TX\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "\t Config HW Tx mode = OFDM_Single_Tone_TX\n"); } else { pMptCtx->HWTxmode = PACKETS_TX; - sprintf(extra, "\t Config HW Tx mode = PACKETS_TX\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "\t Config HW Tx mode = PACKETS_TX\n"); } } else { pMptCtx->HWTxmode = PACKETS_TX; - sprintf(extra, "\t Config HW Tx mode=\n 0 = PACKETS_TX\n 1 = CONTINUOUS_TX\n 2 = OFDM_Single_Tone_TX"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "\t Config HW Tx mode=\n 0 = PACKETS_TX\n 1 = CONTINUOUS_TX\n 2 = OFDM_Single_Tone_TX"); } } else if (strncmp(extra, "pmact,", 6) == 0) { int PacketPeriod = 0, PacketLength = 0, PacketCout = 0; @@ -2376,29 +2544,29 @@ int rtw_mp_tx(struct net_device *dev, if (sscanf(extra, "pmact,period=%d", &PacketPeriod) > 0) { padapter->mppriv.pktInterval = PacketPeriod; RTW_INFO("PacketPeriod=%d\n", padapter->mppriv.pktInterval); - sprintf(extra, "PacketPeriod [1~255]= %d\n", padapter->mppriv.pktInterval); + snprintf(extra, RTW_EXTRA_MAX_LEN, "PacketPeriod [1~255]= %d\n", padapter->mppriv.pktInterval); } else if (sscanf(extra, "pmact,length=%d", &PacketLength) > 0) { padapter->mppriv.pktLength = PacketLength; RTW_INFO("PacketPeriod=%d\n", padapter->mppriv.pktLength); - sprintf(extra, "PacketLength[~65535]=%d\n", padapter->mppriv.pktLength); + snprintf(extra, RTW_EXTRA_MAX_LEN, "PacketLength[~65535]=%d\n", padapter->mppriv.pktLength); } else if (sscanf(extra, "pmact,count=%d", &PacketCout) > 0) { padapter->mppriv.tx_pktcount = PacketCout; RTW_INFO("Packet Cout =%d\n", padapter->mppriv.tx_pktcount); - sprintf(extra, "Packet Cout =%d\n", padapter->mppriv.tx_pktcount); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Packet Cout =%d\n", padapter->mppriv.tx_pktcount); } else if (sscanf(extra, "pmact,ldpc=%d", &bldpc) > 0) { pMptCtx->bldpc = bldpc; RTW_INFO("Set LDPC =%d\n", pMptCtx->bldpc); - sprintf(extra, "Set LDPC =%d\n", pMptCtx->bldpc); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set LDPC =%d\n", pMptCtx->bldpc); } else if (sscanf(extra, "pmact,stbc=%d", &bstbc) > 0) { pMptCtx->bstbc = bstbc; RTW_INFO("Set STBC =%d\n", pMptCtx->bstbc); - sprintf(extra, "Set STBC =%d\n", pMptCtx->bstbc); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Set STBC =%d\n", pMptCtx->bstbc); } else - sprintf(extra, "\n period={1~255}\n length={1000~65535}\n count={0~}\n ldpc={0/1}\n stbc={0/1}"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "\n period={1~255}\n length={1000~65535}\n count={0~}\n ldpc={0/1}\n stbc={0/1}"); } @@ -2429,7 +2597,7 @@ int rtw_mp_tx(struct net_device *dev, char *pextra = extra; RTW_INFO("Got format [ch=%d,bw=%d,rate=%d,pwr=%d,ant=%d,tx=%d]\n", channel, bandwidth, rate, txpower, ant, txmode); _rtw_memset(extra, 0, wrqu->data.length); - sprintf(extra, "Change Current channel %d to channel %d", padapter->mppriv.channel , channel); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Change Current channel %d to channel %d", padapter->mppriv.channel , channel); padapter->mppriv.channel = channel; SetChannel(padapter); pHalData->current_channel = channel; @@ -2565,7 +2733,7 @@ int rtw_mp_rx(struct net_device *dev, #ifdef CONFIG_CONCURRENT_MODE if (!is_primary_adapter(padapter)) { - sprintf(extra, "Error: MP mode can't support Virtual Adapter, Please to use main Adapter.\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Error: MP mode can't support Virtual Adapter, Please to use main Adapter.\n"); wrqu->data.length = strlen(extra); return 0; } @@ -2575,7 +2743,7 @@ int rtw_mp_rx(struct net_device *dev, _rtw_memset(extra, 0, wrqu->data.length); SetPacketRx(padapter, bStartRx, _FALSE); pmp_priv->bmac_filter = _FALSE; - sprintf(extra, "Received packet OK:%d CRC error:%d ,Filter out:%d", padapter->mppriv.rx_pktcount, padapter->mppriv.rx_crcerrpktcount, padapter->mppriv.rx_pktcount_filter_out); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Received packet OK:%d CRC error:%d ,Filter out:%d", padapter->mppriv.rx_pktcount, padapter->mppriv.rx_crcerrpktcount, padapter->mppriv.rx_pktcount_filter_out); wrqu->data.length = strlen(extra); return 0; @@ -2595,7 +2763,7 @@ int rtw_mp_rx(struct net_device *dev, bStartRx = 1; RTW_INFO("Got format [ch=%d,bw=%d,ant=%d]\n", channel, bandwidth, ant); _rtw_memset(extra, 0, wrqu->data.length); - sprintf(extra, "Change Current channel %d to channel %d", padapter->mppriv.channel , channel); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Change Current channel %d to channel %d", padapter->mppriv.channel , channel); padapter->mppriv.channel = channel; SetChannel(padapter); pHalData->current_channel = channel; @@ -2680,7 +2848,8 @@ int rtw_mp_hwtx(struct net_device *dev, char *pch; #if defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8821B) || defined(CONFIG_RTL8822B) \ - || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8723F) \ + || defined(CONFIG_RTL8822E) if (copy_from_user(extra, wrqu->data.pointer, wrqu->data.length)) return -EFAULT; *(extra + wrqu->data.length) = '\0'; @@ -2691,14 +2860,14 @@ int rtw_mp_hwtx(struct net_device *dev, pch = extra; if (pMptCtx->PMacTxInfo.bEnPMacTx == 1 && pmp_priv->mode != MP_ON) { - pch += sprintf(pch, "MP Tx Running, Please Set PMac Tx Mode Stop\n"); + pch += snprintf(pch, RTW_EXTRA_MAX_LEN, "MP Tx Running, Please Set PMac Tx Mode Stop\n"); RTW_INFO("Error !!! MP Tx Running, Please Set PMac Tx Mode Stop\n"); } else { RTW_INFO("To set MAC Tx mode\n"); if (mpt_ProSetPMacTx(padapter)) - pch += sprintf(pch, "Set PMac Tx Mode OK\n"); + pch += snprintf(pch, RTW_EXTRA_MAX_LEN, "Set PMac Tx Mode OK\n"); else - pch += sprintf(pch, "Set PMac Tx Mode Error\n"); + pch += snprintf(pch, RTW_EXTRA_MAX_LEN, "Set PMac Tx Mode Error\n"); } wrqu->data.length = strlen(extra); #endif @@ -2723,16 +2892,17 @@ int rtw_mp_pwrlmt(struct net_device *dev, #if CONFIG_TXPWR_LIMIT if (strncmp(extra, "off", 3) == 0 && strlen(extra) < 4) { padapter->registrypriv.RegEnableTxPowerLimit = 0; - pch += sprintf(pch, "Turn off Power Limit\n"); + pch += snprintf(pch, RTW_EXTRA_MAX_LEN, "Turn off Power Limit\n"); } else if (strncmp(extra, "on", 2) == 0 && strlen(extra) < 3) { padapter->registrypriv.RegEnableTxPowerLimit = 1; - pch += sprintf(pch, "Turn on Power Limit\n"); + pch += snprintf(pch, RTW_EXTRA_MAX_LEN, "Turn on Power Limit\n"); } else -#endif pch += sprintf(pch, "Get Power Limit Status:%s\n", (registry_par->RegEnableTxPowerLimit == 1) ? "ON" : "OFF"); - +#else + pch += sprintf(pch, "Get Power Limit Status:%s\n", "OFF"); +#endif wrqu->data.length = strlen(extra); return 0; @@ -2750,14 +2920,14 @@ int rtw_mp_pwrbyrate(struct net_device *dev, *(extra + wrqu->data.length) = '\0'; if (strncmp(extra, "off", 3) == 0 && strlen(extra) < 4) { padapter->registrypriv.RegEnableTxPowerByRate = 0; - sprintf(extra, "Turn off Tx Power by Rate\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Turn off Tx Power by Rate\n"); } else if (strncmp(extra, "on", 2) == 0 && strlen(extra) < 3) { padapter->registrypriv.RegEnableTxPowerByRate = 1; - sprintf(extra, "Turn On Tx Power by Rate\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Turn On Tx Power by Rate\n"); } else { - sprintf(extra, "Get Power by Rate Status:%s\n", (padapter->registrypriv.RegEnableTxPowerByRate == 1) ? "ON" : "OFF"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Get Power by Rate Status:%s\n", (padapter->registrypriv.RegEnableTxPowerByRate == 1) ? "ON" : "OFF"); } wrqu->data.length = strlen(extra); @@ -2780,11 +2950,11 @@ int rtw_mp_dpk_track(struct net_device *dev, *(extra + wrqu->data.length) = '\0'; pch = extra; - if (strncmp(extra, "off", 3) == 0 && strlen(extra) < 4) { + if (strncmp(extra, "off", 3) == 0 ) { halrf_set_dpk_track(pDM_Odm, FALSE); pch += sprintf(pch, "set dpk track off\n"); - } else if (strncmp(extra, "on", 2) == 0 && strlen(extra) < 3) { + } else if (strncmp(extra, "on", 2) == 0) { halrf_set_dpk_track(pDM_Odm, TRUE); pch += sprintf(pch, "set dpk track on\n"); } @@ -2801,7 +2971,7 @@ int rtw_bt_efuse_mask_file(struct net_device *dev, char *rtw_efuse_mask_file_path; u8 *pch; char *ptmp, tmp; - u8 Status; + u32 retcnt; PADAPTER padapter = rtw_netdev_priv(dev); _rtw_memset(btmaskfileBuffer, 0x00, sizeof(btmaskfileBuffer)); @@ -2854,9 +3024,9 @@ int rtw_bt_efuse_mask_file(struct net_device *dev, if (rtw_is_file_readable(rtw_efuse_mask_file_path) == _TRUE) { RTW_INFO("%s do rtw_is_file_readable = %s! ,sizeof BT maskfileBuffer %zu\n", __func__, rtw_efuse_mask_file_path, sizeof(btmaskfileBuffer)); - Status = rtw_efuse_file_read(padapter, rtw_efuse_mask_file_path, btmaskfileBuffer, sizeof(btmaskfileBuffer)); + retcnt = rtw_efuse_file_read(padapter, rtw_efuse_mask_file_path, btmaskfileBuffer, sizeof(btmaskfileBuffer)); _rtw_memset(extra, '\0' , strlen(extra)); - if (Status == _TRUE) { + if (retcnt > 0) { padapter->registrypriv.bBTFileMaskEfuse = _TRUE; ptmp += sprintf(ptmp, "BT efuse mask file read OK\n"); } else { @@ -2879,8 +3049,10 @@ int rtw_efuse_mask_file(struct net_device *dev, union iwreq_data *wrqu, char *extra) { char *rtw_efuse_mask_file_path; - u8 Status; + u32 retcnt; PADAPTER padapter = rtw_netdev_priv(dev); + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); + PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal; _rtw_memset(maskfileBuffer, 0x00, sizeof(maskfileBuffer)); @@ -2890,13 +3062,13 @@ int rtw_efuse_mask_file(struct net_device *dev, *(extra + wrqu->data.length) = '\0'; if (strncmp(extra, "off", 3) == 0 && strlen(extra) < 4) { padapter->registrypriv.boffefusemask = 1; - sprintf(extra, "Turn off Efuse Mask\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Turn off Efuse Mask\n"); wrqu->data.length = strlen(extra); return 0; } if (strncmp(extra, "on", 2) == 0 && strlen(extra) < 3) { padapter->registrypriv.boffefusemask = 0; - sprintf(extra, "Turn on Efuse Mask\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "Turn on Efuse Mask\n"); wrqu->data.length = strlen(extra); return 0; } @@ -2905,6 +3077,7 @@ int rtw_efuse_mask_file(struct net_device *dev, char *ptmp, tmp; u8 count = 0; u8 i = 0; + u8 tmp_len = 0, total_tmp_len = 0; ptmp = extra; pch = strsep(&ptmp, ","); @@ -2931,13 +3104,17 @@ int rtw_efuse_mask_file(struct net_device *dev, } while (count < 64); _rtw_memset(extra, '\0' , strlen(extra)); + ptmp = extra; - for (i = 0; i < count; i++) - ptmp += sprintf(ptmp, "%02x:", maskfileBuffer[i]); + for (i = 0; i < count; i++){ + tmp_len = sprintf(ptmp, "%02x:", maskfileBuffer[i]); + ptmp += tmp_len; + total_tmp_len += tmp_len; + } padapter->registrypriv.bFileMaskEfuse = _TRUE; - sprintf(ptmp, "\nLoad Efuse Mask data %d hex ok\n", count); + snprintf(ptmp, RTW_EXTRA_MAX_LEN - total_tmp_len, "\nLoad Efuse Mask data %d hex ok\n", count); wrqu->data.length = strlen(extra); return 0; } @@ -2945,18 +3122,20 @@ int rtw_efuse_mask_file(struct net_device *dev, if (rtw_is_file_readable(rtw_efuse_mask_file_path) == _TRUE) { RTW_INFO("%s do rtw_efuse_mask_file_read = %s! ,sizeof maskfileBuffer %zu\n", __func__, rtw_efuse_mask_file_path, sizeof(maskfileBuffer)); - Status = rtw_efuse_file_read(padapter, rtw_efuse_mask_file_path, maskfileBuffer, sizeof(maskfileBuffer)); - if (Status == _TRUE) { + retcnt = rtw_efuse_file_read(padapter, rtw_efuse_mask_file_path, maskfileBuffer, sizeof(maskfileBuffer)); + if (retcnt > 0) { + pEfuseHal->EfuseMaskUsedBytes = retcnt; + RTW_INFO("%s ret used cnt:%d!\n", __func__, pEfuseHal->EfuseMaskUsedBytes); padapter->registrypriv.bFileMaskEfuse = _TRUE; - sprintf(extra, "efuse mask file read OK\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "efuse mask file read OK\n"); } else { padapter->registrypriv.bFileMaskEfuse = _FALSE; - sprintf(extra, "read efuse mask file FAIL\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "read efuse mask file FAIL\n"); RTW_INFO("%s rtw_efuse_file_read mask fail!\n", __func__); } } else { padapter->registrypriv.bFileMaskEfuse = _FALSE; - sprintf(extra, "efuse mask file readable FAIL\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "efuse mask file readable FAIL\n"); RTW_INFO("%s rtw_is_file_readable fail!\n", __func__); } wrqu->data.length = strlen(extra); @@ -2969,7 +3148,7 @@ int rtw_efuse_file_map(struct net_device *dev, union iwreq_data *wrqu, char *extra) { char *rtw_efuse_file_map_path; - u8 Status; + u32 retcnt; PEFUSE_HAL pEfuseHal; PADAPTER padapter = rtw_netdev_priv(dev); HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); @@ -2985,16 +3164,20 @@ int rtw_efuse_file_map(struct net_device *dev, if (rtw_is_file_readable(rtw_efuse_file_map_path) == _TRUE) { RTW_INFO("%s do rtw_efuse_mask_file_read = %s!\n", __func__, rtw_efuse_file_map_path); - Status = rtw_efuse_file_read(padapter, rtw_efuse_file_map_path, pEfuseHal->fakeEfuseModifiedMap, sizeof(pEfuseHal->fakeEfuseModifiedMap)); - if (Status == _TRUE) { + retcnt = rtw_efuse_file_read(padapter, rtw_efuse_file_map_path, + pEfuseHal->fakeEfuseModifiedMap, sizeof(pEfuseHal->fakeEfuseModifiedMap)); + + if (retcnt > 0) { + pEfuseHal->fakeEfuseUsedBytes = retcnt; + RTW_INFO("%s Efuse Used Bytes = %d!\n", __func__, pEfuseHal->fakeEfuseUsedBytes); pmp_priv->bloadefusemap = _TRUE; - sprintf(extra, "efuse file file_read OK\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "%s", "efuse file file_read OK\n"); } else { pmp_priv->bloadefusemap = _FALSE; - sprintf(extra, "efuse file file_read FAIL\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "efuse file file_read FAIL\n"); } } else { - sprintf(extra, "efuse file readable FAIL\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "%s", "efuse file readable FAIL\n"); RTW_INFO("%s rtw_is_file_readable fail!\n", __func__); } wrqu->data.length = strlen(extra); @@ -3028,12 +3211,12 @@ int rtw_efuse_file_map_store(struct net_device *dev, RTW_INFO("%s, efuse store path = %s! mapLen = %d\n", __func__, rtw_efuse_file_map_path, mapLen); Status = rtw_efuse_file_store(padapter, rtw_efuse_file_map_path, pEfuseHal->fakeEfuseModifiedMap, mapLen); if (Status) { - sprintf(extra, "efuse file restore OK\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "efuse file restore OK\n"); } else { - sprintf(extra, "efuse file restore FAIL\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "efuse file restore FAIL\n"); } } else { - sprintf(extra, "efuse file readable FAIL\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "efuse file readable FAIL\n"); RTW_INFO("%s rtw_is_file_readable fail! map Len %d\n", __func__, mapLen); } @@ -3047,7 +3230,7 @@ int rtw_bt_efuse_file_map(struct net_device *dev, union iwreq_data *wrqu, char *extra) { char *rtw_efuse_file_map_path; - u8 Status; + u32 retcnt; PEFUSE_HAL pEfuseHal; PADAPTER padapter = rtw_netdev_priv(dev); HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); @@ -3063,16 +3246,16 @@ int rtw_bt_efuse_file_map(struct net_device *dev, if (rtw_is_file_readable(rtw_efuse_file_map_path) == _TRUE) { RTW_INFO("%s do rtw_efuse_mask_file_read = %s!\n", __func__, rtw_efuse_file_map_path); - Status = rtw_efuse_file_read(padapter, rtw_efuse_file_map_path, pEfuseHal->fakeBTEfuseModifiedMap, sizeof(pEfuseHal->fakeBTEfuseModifiedMap)); - if (Status == _TRUE) { + retcnt = rtw_efuse_file_read(padapter, rtw_efuse_file_map_path, pEfuseHal->fakeBTEfuseModifiedMap, sizeof(pEfuseHal->fakeBTEfuseModifiedMap)); + if (retcnt > 0) { pmp_priv->bloadBTefusemap = _TRUE; - sprintf(extra, "BT efuse file file_read OK\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "BT efuse file file_read OK\n"); } else { pmp_priv->bloadBTefusemap = _FALSE; - sprintf(extra, "BT efuse file file_read FAIL\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "BT efuse file file_read FAIL\n"); } } else { - sprintf(extra, "BT efuse file readable FAIL\n"); + snprintf(extra, RTW_EXTRA_MAX_LEN, "BT efuse file readable FAIL\n"); RTW_INFO("%s rtw_is_file_readable fail!\n", __func__); } wrqu->data.length = strlen(extra); @@ -3096,7 +3279,7 @@ int rtw_mp_link(struct net_device *dev, { PADAPTER padapter = rtw_netdev_priv(dev); struct mp_priv *pmp_priv; - char input[RTW_IWD_MAX_LEN]; + char *input = NULL; int bgetrxdata = 0, btxdata = 0, bsetbt = 0; u8 err = 0; u32 i = 0, datalen = 0,jj, kk, waittime = 0; @@ -3110,9 +3293,13 @@ int rtw_mp_link(struct net_device *dev, if (rtw_do_mp_iwdata_len_chk(__func__, wrqu->length)) return -EFAULT; - if (copy_from_user(input, wrqu->pointer, wrqu->length)) - return -EFAULT; - + input = (char *)rtw_zmalloc(RTW_IWD_MAX_LEN); + if (!input) + return -ENOMEM; + if (copy_from_user(input, wrqu->pointer, wrqu->length)) { + err = -EFAULT; + goto exit; + } _rtw_memset(extra, 0, wrqu->length); RTW_INFO("%s: in=%s\n", __func__, input); @@ -3271,7 +3458,8 @@ int rtw_mp_link(struct net_device *dev, exit: if (setdata) rtw_mfree(setdata, 1024); - + if (input) + rtw_mfree(input, RTW_IWD_MAX_LEN); wrqu->length = strlen(extra); return err; @@ -3620,4 +3808,54 @@ exit: #endif /*#ifdef CONFIG_RTL8723B*/ +#ifdef RTW_HALMAC +int rtw_mp_gpio(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ +#define GPIO_FUNC_OFFSET 2 +#define GPIO_OUTPUT_MODE 1 + + PADAPTER padapter = rtw_netdev_priv(dev); + u8 input[RTW_IWD_MAX_LEN]; + u8 gpio_id = 0 , gpio_enable = 0; + int ret; + + if (rtw_do_mp_iwdata_len_chk(__func__, wrqu->length)) + return -EFAULT; + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + _rtw_memset(extra, 0, wrqu->length); + + ret = sscanf(input, "%hhd,%hhd", &gpio_id, &gpio_enable); + + if (ret < 2) { + sprintf(extra, "Invalid command format, please input mp_gpio x,y\n"); + wrqu->length = strlen(extra); + return -EINVAL; + } + else if (gpio_id < 0 || gpio_id > 15) { + sprintf(extra, "Invalid gpio_id, please input gpio_id : 0 ~ 15\n"); + wrqu->length = strlen(extra); + return -EINVAL; + } + else if (gpio_enable != 0 && gpio_enable != 1) { + sprintf(extra, "Invalid gpio_enable, please input gpio_enable : 0 or 1\n"); + wrqu->length = strlen(extra); + return -EINVAL; + } + + RTW_INFO("%s: gpio_id = %hhd, gpio_enable = %hhd\n", __func__, gpio_id , gpio_enable); + + ret = SetGpio(padapter, gpio_id, gpio_enable, GPIO_FUNC_OFFSET, GPIO_OUTPUT_MODE); + + sprintf(extra, "Set gpio_id:%d, gpio_enable:%d : %s\n", gpio_id, gpio_enable, (ret < 0) ? "fail":"success"); + wrqu->length = strlen(extra); + + return 0; +} +#endif + #endif diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/mlme_linux.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/mlme_linux.c index 6fd24e8e2..77fe3019e 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/mlme_linux.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/mlme_linux.c @@ -181,9 +181,7 @@ void rtw_os_indicate_disconnect(_adapter *adapter, u16 reason, u8 locally_gener _set_workitem(&adapter->mlmepriv.Linkdown_workitem); #endif /* modify for CONFIG_IEEE80211W, none 11w also can use the same command */ - rtw_reset_securitypriv_cmd(adapter); - - + rtw_reset_securitypriv(adapter); } void rtw_report_sec_ie(_adapter *adapter, u8 authmode, u8 *sec_ie) @@ -442,3 +440,66 @@ void hostapd_mode_unload(_adapter *padapter) #endif #endif + +#ifdef CONFIG_DFS_MASTER +void rtw_os_indicate_radar_detected(struct rf_ctl_t *rfctl, u8 band_idx + , u8 cch, enum channel_width bw) +{ + rtw_nlrtw_radar_detect_event(rfctl, band_idx, cch, bw); +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_radar_detected_event(rfctl, band_idx, cch, bw); +#endif +} + +void rtw_os_indicate_cac_started(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_cac_started_event(rfctl, band_idx, ifbmp, cch, bw); +#endif +} + +void rtw_os_indicate_cac_finished(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ + rtw_nlrtw_cac_finish_event(rfctl, band_idx, ifbmp, cch, bw); +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_cac_finished_event(rfctl, band_idx, ifbmp, cch, bw); +#endif +} + +void rtw_os_indicate_cac_aborted(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ + rtw_nlrtw_cac_abort_event(rfctl, band_idx, ifbmp, cch, bw); +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_cac_aborted_event(rfctl, band_idx, ifbmp, cch, bw); +#endif +} + +void rtw_os_force_cac_finished(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_cac_force_finished(rfctl, band_idx, ifbmp, cch, bw); +#endif +} + +void rtw_os_indicate_nop_finished(struct rf_ctl_t *rfctl, u8 band_idx + , u8 band, u8 cch, enum channel_width bw) +{ + rtw_nlrtw_nop_finish_event(rfctl, band_idx, band, cch, bw); +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_nop_finished_event(rfctl, band_idx, band, cch, bw); +#endif +} + +void rtw_os_indicate_nop_started(struct rf_ctl_t *rfctl, u8 band_idx + , u8 band, u8 cch, enum channel_width bw, bool called_on_cmd_thd) +{ + rtw_nlrtw_nop_start_event(rfctl, band_idx, band, cch, bw); +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_nop_started_event(rfctl, band_idx, band, cch, bw, called_on_cmd_thd); +#endif +} +#endif /* CONFIG_DFS_MASTER */ diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/nlrtw.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/nlrtw.c index 14d164b7a..a1c3e6ef0 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/nlrtw.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/nlrtw.c @@ -52,6 +52,7 @@ enum nlrtw_attrs { NLRTW_ATTR_OP_CHANNEL, NLRTW_ATTR_OP_TXPWR_MAX, NLRTW_ATTR_IF_OPMODES, + NLRTW_ATTR_CHANNEL_BAND, __NLRTW_ATTR_AFTER_LAST, NUM_NLRTW_ATTR = __NLRTW_ATTR_AFTER_LAST, @@ -342,15 +343,17 @@ err_out: } #ifdef CONFIG_DFS_MASTER -static int _rtw_nlrtw_radar_event(_adapter *adapter, enum nlrtw_radar_event evt_type, u8 cch, u8 bw) +static int _rtw_nlrtw_radar_event(struct rf_ctl_t *rfctl, u8 band_idx, enum nlrtw_radar_event evt_type, u8 band, u8 cch, u8 bw) { + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); struct sk_buff *skb = NULL; void *msg_header = NULL; struct wiphy *wiphy; u8 i; int ret; - wiphy = adapter_to_wiphy(adapter); + /* TODO: hwband specific wiphy mapping */ + wiphy = dvobj_to_wiphy(dvobj); if (!wiphy) { ret = -EINVAL; goto err_out; @@ -379,6 +382,10 @@ static int _rtw_nlrtw_radar_event(_adapter *adapter, enum nlrtw_radar_event evt_ if (ret != 0) goto err_out; + ret = nla_put_u8(skb, NLRTW_ATTR_CHANNEL_BAND, band); + if (ret != 0) + goto err_out; + ret = nla_put_u8(skb, NLRTW_ATTR_CHANNEL_CENTER, cch); if (ret != 0) goto err_out; @@ -408,29 +415,35 @@ err_out: return ret; } -int rtw_nlrtw_radar_detect_event(_adapter *adapter, u8 cch, u8 bw) +int rtw_nlrtw_radar_detect_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 cch, u8 bw) { - return _rtw_nlrtw_radar_event(adapter, NLRTW_RADAR_DETECTED, cch, bw); + return _rtw_nlrtw_radar_event(rfctl, band_idx, NLRTW_RADAR_DETECTED, BAND_ON_5G, cch, bw); } -int rtw_nlrtw_cac_finish_event(_adapter *adapter, u8 cch, u8 bw) +int rtw_nlrtw_cac_finish_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 ifbmp, u8 cch, u8 bw) { - return _rtw_nlrtw_radar_event(adapter, NLRTW_RADAR_CAC_FINISHED, cch, bw); + if (ifbmp != 0xFF) + return 0; + /* only accept all iface event */ + return _rtw_nlrtw_radar_event(rfctl, band_idx, NLRTW_RADAR_CAC_FINISHED, BAND_ON_5G, cch, bw); } -int rtw_nlrtw_cac_abort_event(_adapter *adapter, u8 cch, u8 bw) +int rtw_nlrtw_cac_abort_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 ifbmp, u8 cch, u8 bw) { - return _rtw_nlrtw_radar_event(adapter, NLRTW_RADAR_CAC_ABORTED, cch, bw); + if (ifbmp != 0xFF) + return 0; + /* only accept all iface event */ + return _rtw_nlrtw_radar_event(rfctl, band_idx, NLRTW_RADAR_CAC_ABORTED, BAND_ON_5G, cch, bw); } -int rtw_nlrtw_nop_finish_event(_adapter *adapter, u8 cch, u8 bw) +int rtw_nlrtw_nop_finish_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 band, u8 cch, u8 bw) { - return _rtw_nlrtw_radar_event(adapter, NLRTW_RADAR_NOP_FINISHED, cch, bw); + return _rtw_nlrtw_radar_event(rfctl, band_idx, NLRTW_RADAR_NOP_FINISHED, band, cch, bw); } -int rtw_nlrtw_nop_start_event(_adapter *adapter, u8 cch, u8 bw) +int rtw_nlrtw_nop_start_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 band, u8 cch, u8 bw) { - return _rtw_nlrtw_radar_event(adapter, NLRTW_RADAR_NOP_STARTED, cch, bw); + return _rtw_nlrtw_radar_event(rfctl, band_idx, NLRTW_RADAR_NOP_STARTED, band, cch, bw); } #endif /* CONFIG_DFS_MASTER */ diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/nlrtw.h b/drivers/net/wireless/rtl8822cs/os_dep/linux/nlrtw.h index 374002a8a..06d6be286 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/nlrtw.h +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/nlrtw.h @@ -32,17 +32,17 @@ static inline int rtw_nlrtw_radio_opmode_notify(struct rf_ctl_t *rfctl) {return #endif /* CONFIG_RTW_NLRTW */ #if defined(CONFIG_RTW_NLRTW) && defined(CONFIG_DFS_MASTER) -int rtw_nlrtw_radar_detect_event(_adapter *adapter, u8 cch, u8 bw); -int rtw_nlrtw_cac_finish_event(_adapter *adapter, u8 cch, u8 bw); -int rtw_nlrtw_cac_abort_event(_adapter *adapter, u8 cch, u8 bw); -int rtw_nlrtw_nop_finish_event(_adapter *adapter, u8 cch, u8 bw); -int rtw_nlrtw_nop_start_event(_adapter *adapter, u8 cch, u8 bw); +int rtw_nlrtw_radar_detect_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 cch, u8 bw); +int rtw_nlrtw_cac_finish_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 ifbmp, u8 cch, u8 bw); +int rtw_nlrtw_cac_abort_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 ifbmp, u8 cch, u8 bw); +int rtw_nlrtw_nop_finish_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 band, u8 cch, u8 bw); +int rtw_nlrtw_nop_start_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 band, u8 cch, u8 bw); #else -static inline int rtw_nlrtw_radar_detect_event(_adapter *adapter, u8 cch, u8 bw) {return _FAIL;} -static inline int rtw_nlrtw_cac_finish_event(_adapter *adapter, u8 cch, u8 bw) {return _FAIL;} -static inline int rtw_nlrtw_cac_abort_event(_adapter *adapter, u8 cch, u8 bw) {return _FAIL;} -static inline int rtw_nlrtw_nop_finish_event(_adapter *adapter, u8 cch, u8 bw) {return _FAIL;} -static inline int rtw_nlrtw_nop_start_event(_adapter *adapter, u8 cch, u8 bw) {return _FAIL;} +static inline int rtw_nlrtw_radar_detect_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 cch, u8 bw) {return _FAIL;} +static inline int rtw_nlrtw_cac_finish_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 ifbmp, u8 cch, u8 bw) {return _FAIL;} +static inline int rtw_nlrtw_cac_abort_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 ifbmp, u8 cch, u8 bw) {return _FAIL;} +static inline int rtw_nlrtw_nop_finish_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 band, u8 cch, u8 bw) {return _FAIL;} +static inline int rtw_nlrtw_nop_start_event(struct rf_ctl_t *rfctl, u8 band_idx, u8 band, u8 cch, u8 bw) {return _FAIL;} #endif /* defined(CONFIG_RTW_NLRTW) && defined(CONFIG_DFS_MASTER) */ #endif /* __RTW_NLRTW_H_ */ diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/os_ch_utils.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/os_ch_utils.c new file mode 100644 index 000000000..ea31de02f --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/os_ch_utils.c @@ -0,0 +1,446 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#define _OS_CH_UTILS_C_ + +#include + +#ifdef CONFIG_IOCTL_CFG80211 + +#define CHAN2G(_channel, _freq, _flags) { \ + .band = NL80211_BAND_2GHZ, \ + .center_freq = (_freq), \ + .hw_value = (_channel), \ + .flags = (_flags), \ + .max_antenna_gain = 0, \ + .max_power = 0, \ + } + +#define CHAN5G(_channel, _flags) { \ + .band = NL80211_BAND_5GHZ, \ + .center_freq = 5000 + (5 * (_channel)), \ + .hw_value = (_channel), \ + .flags = (_flags), \ + .max_antenna_gain = 0, \ + .max_power = 0, \ + } + +#define CHAN6G(_channel, _flags) { \ + .band = NL80211_BAND_6GHZ, \ + .center_freq = 5950 + (5 * (_channel)), \ + .hw_value = (_channel), \ + .flags = (_flags), \ + .max_antenna_gain = 0, \ + .max_power = 0, \ + } + +/* from center_ch_2g */ +const struct ieee80211_channel rtw_2ghz_channels[MAX_CHANNEL_NUM_2G] = { + CHAN2G(1, 2412, 0), + CHAN2G(2, 2417, 0), + CHAN2G(3, 2422, 0), + CHAN2G(4, 2427, 0), + CHAN2G(5, 2432, 0), + CHAN2G(6, 2437, 0), + CHAN2G(7, 2442, 0), + CHAN2G(8, 2447, 0), + CHAN2G(9, 2452, 0), + CHAN2G(10, 2457, 0), + CHAN2G(11, 2462, 0), + CHAN2G(12, 2467, 0), + CHAN2G(13, 2472, 0), + CHAN2G(14, 2484, 0), +}; + +#if CONFIG_IEEE80211_BAND_5GHZ +/* from center_ch_5g_20m */ +const struct ieee80211_channel rtw_5ghz_a_channels[MAX_CHANNEL_NUM_5G] = { + CHAN5G(36, 0), CHAN5G(40, 0), CHAN5G(44, 0), CHAN5G(48, 0), + + CHAN5G(52, 0), CHAN5G(56, 0), CHAN5G(60, 0), CHAN5G(64, 0), + + CHAN5G(100, 0), CHAN5G(104, 0), CHAN5G(108, 0), CHAN5G(112, 0), + CHAN5G(116, 0), CHAN5G(120, 0), CHAN5G(124, 0), CHAN5G(128, 0), + CHAN5G(132, 0), CHAN5G(136, 0), CHAN5G(140, 0), CHAN5G(144, 0), + + CHAN5G(149, 0), CHAN5G(153, 0), CHAN5G(157, 0), CHAN5G(161, 0), + CHAN5G(165, 0), CHAN5G(169, 0), CHAN5G(173, 0), CHAN5G(177, 0), +}; +#endif + +#if CONFIG_IEEE80211_BAND_6GHZ +/* from center_ch_6g_20m */ +const struct ieee80211_channel rtw_6ghz_channels[MAX_CHANNEL_NUM_6G] = { + CHAN6G(1, 0), CHAN6G(5, 0), CHAN6G(9, 0), CHAN6G(13, 0), + CHAN6G(17, 0), CHAN6G(21, 0), CHAN6G(25, 0), CHAN6G(29, 0), + CHAN6G(33, 0), CHAN6G(37, 0), CHAN6G(41, 0), CHAN6G(45, 0), + CHAN6G(49, 0), CHAN6G(53, 0), CHAN6G(57, 0), CHAN6G(61, 0), + CHAN6G(65, 0), CHAN6G(69, 0), CHAN6G(73, 0), CHAN6G(77, 0), + CHAN6G(81, 0), CHAN6G(85, 0), CHAN6G(89, 0), CHAN6G(93, 0), + + CHAN6G(97, 0), CHAN6G(101, 0), CHAN6G(105, 0), CHAN6G(109, 0), + CHAN6G(113, 0), CHAN6G(117, 0), + + CHAN6G(121, 0), CHAN6G(125, 0), + CHAN6G(129, 0), CHAN6G(133, 0), CHAN6G(137, 0), CHAN6G(141, 0), + CHAN6G(145, 0), CHAN6G(149, 0), CHAN6G(153, 0), CHAN6G(157, 0), + CHAN6G(161, 0), CHAN6G(165, 0), CHAN6G(169, 0), CHAN6G(173, 0), + CHAN6G(177, 0), CHAN6G(181, 0), CHAN6G(185, 0), CHAN6G(189, 0), + + CHAN6G(193, 0), CHAN6G(197, 0), CHAN6G(201, 0), CHAN6G(205, 0), + CHAN6G(209, 0), CHAN6G(213, 0), CHAN6G(217, 0), CHAN6G(221, 0), + CHAN6G(225, 0), CHAN6G(229, 0), CHAN6G(233, 0), CHAN6G(237, 0), + + CHAN6G(241, 0), CHAN6G(245, 0), CHAN6G(249, 0), CHAN6G(253, 0), +}; +#endif /* CONFIG_IEEE80211_BAND_6GHZ */ + +const enum nl80211_band _rtw_band_to_nl80211_band[] = { + [BAND_ON_24G] = NL80211_BAND_2GHZ, + [BAND_ON_5G] = NL80211_BAND_5GHZ, +#if CONFIG_IEEE80211_BAND_6GHZ + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) + [BAND_ON_6G] = NL80211_BAND_6GHZ, + #else + [BAND_ON_6G] = NUM_NL80211_BANDS, + #endif +#endif +}; +static_assert(ARRAY_SIZE(_rtw_band_to_nl80211_band) >= BAND_MAX); + +const enum band_type _nl80211_band_to_rtw_band[] = { + [NL80211_BAND_2GHZ] = BAND_ON_24G, + [NL80211_BAND_5GHZ] = BAND_ON_5G, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) + [NL80211_BAND_60GHZ] = BAND_MAX, +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)) + #if CONFIG_IEEE80211_BAND_6GHZ + [NL80211_BAND_6GHZ] = BAND_ON_6G, + #else + [NL80211_BAND_6GHZ] = BAND_MAX, + #endif +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) + [NL80211_BAND_S1GHZ] = BAND_MAX, /* around 900MHz, supported by S1G PHYs */ +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0)) || (defined(__ANDROID_COMMON_KERNEL__) && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) + [NL80211_BAND_LC] = BAND_MAX, /* light communication band (placeholder) */ +#endif +}; +static_assert(ARRAY_SIZE(_nl80211_band_to_rtw_band) >= NUM_NL80211_BANDS); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) +const char *nl80211_chan_width_str(enum nl80211_chan_width cwidth) +{ + switch (cwidth) { + case NL80211_CHAN_WIDTH_20_NOHT: + return "20_NOHT"; + case NL80211_CHAN_WIDTH_20: + return "20"; + case NL80211_CHAN_WIDTH_40: + return "40"; + case NL80211_CHAN_WIDTH_80: + return "80"; + case NL80211_CHAN_WIDTH_80P80: + return "80+80"; + case NL80211_CHAN_WIDTH_160: + return "160"; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) + case NL80211_CHAN_WIDTH_5: + return "5"; + case NL80211_CHAN_WIDTH_10: + return "10"; +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) + case NL80211_CHAN_WIDTH_1: + return "1"; + case NL80211_CHAN_WIDTH_2: + return "2"; + case NL80211_CHAN_WIDTH_4: + return "4"; + case NL80211_CHAN_WIDTH_8: + return "8"; + case NL80211_CHAN_WIDTH_16: + return "16"; +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)) + case NL80211_CHAN_WIDTH_320: + return "320"; +#endif + default: + return "INVALID"; + }; +} + +u8 rtw_bchbw_to_cfg80211_chan_def(struct wiphy *wiphy, struct cfg80211_chan_def *chdef + , enum band_type band, u8 ch, u8 bw, u8 offset, u8 ht) +{ + int freq, cfreq; + struct ieee80211_channel *chan; + u8 ret = _FAIL; + + _rtw_memset(chdef, 0, sizeof(*chdef)); + + freq = rtw_bch2freq(band, ch); + if (!freq) + goto exit; + + cfreq = rtw_get_center_ch_by_band(band, ch, bw, offset); + if (!cfreq) + goto exit; + cfreq = rtw_bch2freq(band, cfreq); + if (!cfreq) + goto exit; + + chan = ieee80211_get_channel(wiphy, freq); + if (!chan) + goto exit; + + if (bw == CHANNEL_WIDTH_20) + chdef->width = ht ? NL80211_CHAN_WIDTH_20 : NL80211_CHAN_WIDTH_20_NOHT; + else if (bw == CHANNEL_WIDTH_40) + chdef->width = NL80211_CHAN_WIDTH_40; + else if (bw == CHANNEL_WIDTH_80) + chdef->width = NL80211_CHAN_WIDTH_80; + else if (bw == CHANNEL_WIDTH_160) + chdef->width = NL80211_CHAN_WIDTH_160; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) + else if (bw == CHANNEL_WIDTH_5) + chdef->width = NL80211_CHAN_WIDTH_5; + else if (bw == CHANNEL_WIDTH_10) + chdef->width = NL80211_CHAN_WIDTH_10; +#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) */ + else { + rtw_warn_on(1); + goto exit; + } + + chdef->chan = chan; + chdef->center_freq1 = cfreq; + + ret = _SUCCESS; + +exit: + return ret; +} + +void rtw_get_bchbw_from_cfg80211_chan_def(struct cfg80211_chan_def *chdef + , u8 *ht, enum band_type *band, u8 *ch, u8 *bw, u8 *offset) +{ + int pri_freq; + struct ieee80211_channel *chan = chdef->chan; + + *ch = 0; + *band = nl80211_band_to_rtw_band(chan->band); + if (*band == BAND_MAX) { + RTW_WARN("invalid band:%d\n", chan->band); + rtw_warn_on(1); + return; + } + + pri_freq = rtw_bch2freq(*band, chan->hw_value); + if (!pri_freq) { + RTW_WARN("invalid channel:%d on %s\n", chan->hw_value, band_str(*band)); + rtw_warn_on(1); + return; + } + + switch (chdef->width) { + case NL80211_CHAN_WIDTH_20_NOHT: + *ht = 0; + *bw = CHANNEL_WIDTH_20; + *offset = CHAN_OFFSET_NO_EXT; + *ch = chan->hw_value; + break; + case NL80211_CHAN_WIDTH_20: + *ht = 1; + *bw = CHANNEL_WIDTH_20; + *offset = CHAN_OFFSET_NO_EXT; + *ch = chan->hw_value; + break; + case NL80211_CHAN_WIDTH_40: + *ht = 1; + *bw = CHANNEL_WIDTH_40; + *offset = pri_freq > chdef->center_freq1 ? CHAN_OFFSET_LOWER : CHAN_OFFSET_UPPER; + if (!rtw_get_offset_by_bchbw(*band, chan->hw_value, *bw, offset)) { + RTW_WARN("invalid channel:%d bw:%s on %s\n", chan->hw_value, ch_width_str(*bw), band_str(*band)); + rtw_warn_on(1); + return; + } + *ch = chan->hw_value; + break; + case NL80211_CHAN_WIDTH_80: + *ht = 1; + *bw = CHANNEL_WIDTH_80; + if (!rtw_get_offset_by_bchbw(*band, chan->hw_value, *bw, offset)) { + RTW_WARN("invalid channel:%d bw:%s on %s\n", chan->hw_value, ch_width_str(*bw), band_str(*band)); + rtw_warn_on(1); + return; + } + *ch = chan->hw_value; + break; + case NL80211_CHAN_WIDTH_160: + *ht = 1; + *bw = CHANNEL_WIDTH_160; + if (!rtw_get_offset_by_bchbw(*band, chan->hw_value, *bw, offset)) { + RTW_WARN("invalid channel:%d bw:%s on %s\n", chan->hw_value, ch_width_str(*bw), band_str(*band)); + rtw_warn_on(1); + return; + } + *ch = chan->hw_value; + break; + case NL80211_CHAN_WIDTH_80P80: + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) + case NL80211_CHAN_WIDTH_5: + case NL80211_CHAN_WIDTH_10: + #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) + case NL80211_CHAN_WIDTH_1: + case NL80211_CHAN_WIDTH_2: + case NL80211_CHAN_WIDTH_4: + case NL80211_CHAN_WIDTH_8: + case NL80211_CHAN_WIDTH_16: + #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)) + case NL80211_CHAN_WIDTH_320: + #endif + default: + *ht = 0; + *bw = CHANNEL_WIDTH_20; + *offset = CHAN_OFFSET_NO_EXT; + RTW_INFO("unsupported cwidth:%s\n", nl80211_chan_width_str(chdef->width)); + rtw_warn_on(1); + }; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY u8 rtw_chbw_to_cfg80211_chan_def(struct wiphy *wiphy, struct cfg80211_chan_def *chdef + , u8 ch, u8 bw, u8 offset, u8 ht) +{ + return rtw_bchbw_to_cfg80211_chan_def(wiphy, chdef, rtw_is_2g_ch(ch) ? BAND_ON_24G : BAND_ON_5G, ch, bw, offset, ht); +} + +RTW_FUNC_2G_5G_ONLY void rtw_get_chbw_from_cfg80211_chan_def(struct cfg80211_chan_def *chdef + , u8 *ht, u8 *ch, u8 *bw, u8 *offset) +{ + enum band_type band; + + rtw_get_bchbw_from_cfg80211_chan_def(chdef, ht, &band, ch, bw, offset); +} +#endif + +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)) +const char *nl80211_channel_type_str(enum nl80211_channel_type ctype) +{ + switch (ctype) { + case NL80211_CHAN_NO_HT: + return "NO_HT"; + case NL80211_CHAN_HT20: + return "HT20"; + case NL80211_CHAN_HT40MINUS: + return "HT40-"; + case NL80211_CHAN_HT40PLUS: + return "HT40+"; + default: + return "INVALID"; + }; +} + +enum nl80211_channel_type rtw_bchbw_to_nl80211_channel_type(enum band_type band, u8 ch, u8 bw, u8 offset, u8 ht) +{ + rtw_warn_on(!ht && (bw >= CHANNEL_WIDTH_40 || offset != CHAN_OFFSET_NO_EXT)); + + if (!ht) + return NL80211_CHAN_NO_HT; + if (bw >= CHANNEL_WIDTH_40) { + if (offset == CHAN_OFFSET_LOWER) + return NL80211_CHAN_HT40MINUS; + else if (offset == CHAN_OFFSET_UPPER) + return NL80211_CHAN_HT40PLUS; + else + rtw_warn_on(1); + } + return NL80211_CHAN_HT20; +} + +void rtw_get_bchbw_from_nl80211_channel_type(struct ieee80211_channel *chan, enum nl80211_channel_type ctype + , enum band_type *band, u8 *ht, u8 *ch, u8 *bw, u8 *offset) +{ + int pri_freq; + + *ch = 0; + *band = nl80211_band_to_rtw_band(chan->band); + if (*band == BAND_MAX) { + RTW_WARN("invalid band:%d\n", chan->band); + rtw_warn_on(1); + return; + } + + pri_freq = rtw_bch2freq(*band, chan->hw_value); + if (!pri_freq) { + RTW_WARN("invalid channel:%d on %s\n", chan->hw_value, band_str(*band)); + rtw_warn_on(1); + return; + } + *ch = chan->hw_value; + + switch (ctype) { + case NL80211_CHAN_NO_HT: + *ht = 0; + *bw = CHANNEL_WIDTH_20; + *offset = CHAN_OFFSET_NO_EXT; + break; + case NL80211_CHAN_HT20: + *ht = 1; + *bw = CHANNEL_WIDTH_20; + *offset = CHAN_OFFSET_NO_EXT; + break; + case NL80211_CHAN_HT40MINUS: + *ht = 1; + *bw = CHANNEL_WIDTH_40; + *offset = CHAN_OFFSET_LOWER; + break; + case NL80211_CHAN_HT40PLUS: + *ht = 1; + *bw = CHANNEL_WIDTH_40; + *offset = CHAN_OFFSET_UPPER; + break; + default: + *ht = 0; + *bw = CHANNEL_WIDTH_20; + *offset = CHAN_OFFSET_NO_EXT; + RTW_INFO("unsupported ctype:%s\n", nl80211_channel_type_str(ctype)); + rtw_warn_on(1); + }; +} + +#if CONFIG_ALLOW_FUNC_2G_5G_ONLY +RTW_FUNC_2G_5G_ONLY enum nl80211_channel_type rtw_chbw_to_nl80211_channel_type(u8 ch, u8 bw, u8 offset, u8 ht) +{ + return rtw_bchbw_to_nl80211_channel_type(rtw_is_2g_ch(ch) ? BAND_ON_24G : BAND_ON_5G, ch, bw, offset, ht); +} + +RTW_FUNC_2G_5G_ONLY void rtw_get_chbw_from_nl80211_channel_type(struct ieee80211_channel *chan, enum nl80211_channel_type ctype + , u8 *ht, u8 *ch, u8 *bw, u8 *offset) +{ + enum band_type band; + + rtw_get_bchbw_from_nl80211_channel_type(chan, ctype, &band, ht, ch, bw, offset); +} +#endif +#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)) */ + +#endif /* CONFIG_IOCTL_CFG80211 */ + diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/os_ch_utils.h b/drivers/net/wireless/rtl8822cs/os_dep/linux/os_ch_utils.h new file mode 100644 index 000000000..86220a12e --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/os_ch_utils.h @@ -0,0 +1,63 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2022 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ + +#ifndef __OS_CH_UTILS_H__ +#define __OS_CH_UTILS_H__ + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)) && (LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)) +#define NL80211_BAND_2GHZ IEEE80211_BAND_2GHZ +#define NL80211_BAND_5GHZ IEEE80211_BAND_5GHZ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) +#define NL80211_BAND_60GHZ IEEE80211_BAND_60GHZ +#endif +#define NUM_NL80211_BANDS IEEE80211_NUM_BANDS +#endif + +extern const enum nl80211_band _rtw_band_to_nl80211_band[]; +#define rtw_band_to_nl80211_band(band) (((band) < BAND_MAX) ? _rtw_band_to_nl80211_band[(band)] : NUM_NL80211_BANDS) + +extern const enum band_type _nl80211_band_to_rtw_band[]; +#define nl80211_band_to_rtw_band(band) (((band) < NUM_NL80211_BANDS) ? _nl80211_band_to_rtw_band[(band)] : BAND_MAX) + +extern const struct ieee80211_channel rtw_2ghz_channels[MAX_CHANNEL_NUM_2G]; +#if CONFIG_IEEE80211_BAND_5GHZ +extern const struct ieee80211_channel rtw_5ghz_a_channels[MAX_CHANNEL_NUM_5G]; +#endif +#if CONFIG_IEEE80211_BAND_6GHZ +extern const struct ieee80211_channel rtw_6ghz_channels[MAX_CHANNEL_NUM_6G]; +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) +const char *nl80211_chan_width_str(enum nl80211_chan_width cwidth); +u8 rtw_bchbw_to_cfg80211_chan_def(struct wiphy *wiphy, struct cfg80211_chan_def *chdef + , enum band_type band, u8 ch, u8 bw, u8 offset, u8 ht); +void rtw_get_bchbw_from_cfg80211_chan_def(struct cfg80211_chan_def *chdef + , u8 *ht, enum band_type *band, u8 *ch, u8 *bw, u8 *offset); +RTW_FUNC_2G_5G_ONLY u8 rtw_chbw_to_cfg80211_chan_def(struct wiphy *wiphy, struct cfg80211_chan_def *chdef + , u8 ch, u8 bw, u8 offset, u8 ht); +RTW_FUNC_2G_5G_ONLY void rtw_get_chbw_from_cfg80211_chan_def(struct cfg80211_chan_def *chdef + , u8 *ht, u8 *ch, u8 *bw, u8 *offset); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)) +const char *nl80211_channel_type_str(enum nl80211_channel_type ctype); +enum nl80211_channel_type rtw_bchbw_to_nl80211_channel_type(enum band_type band, u8 ch, u8 bw, u8 offset, u8 ht); +void rtw_get_bchbw_from_nl80211_channel_type(struct ieee80211_channel *chan, enum nl80211_channel_type ctype + , enum band_type *band, u8 *ht, u8 *ch, u8 *bw, u8 *offset); +RTW_FUNC_2G_5G_ONLY enum nl80211_channel_type rtw_chbw_to_nl80211_channel_type(u8 ch, u8 bw, u8 offset, u8 ht); +RTW_FUNC_2G_5G_ONLY void rtw_get_chbw_from_nl80211_channel_type(struct ieee80211_channel *chan, enum nl80211_channel_type ctype + , u8 *ht, u8 *ch, u8 *bw, u8 *offset); +#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)) */ + +#endif /* __OS_CH_UTILS_H__ */ + diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/os_intfs.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/os_intfs.c index b6f34066d..871421100 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/os_intfs.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/os_intfs.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -17,7 +17,6 @@ #include #include -MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Realtek Wireless Lan Driver"); MODULE_AUTHOR("Realtek Semiconductor Corp."); @@ -36,6 +35,8 @@ int rtw_network_mode = Ndis802_11IBSS;/* Ndis802_11Infrastructure; */ /* infra, int rtw_channel = 1;/* ad-hoc support requirement */ int rtw_wireless_mode = WIRELESS_MODE_MAX; module_param(rtw_wireless_mode, int, 0644); +int rtw_band_type = BAND_CAP_2G | BAND_CAP_5G | BAND_CAP_6G; +module_param(rtw_band_type, int, 0644); int rtw_vrtl_carrier_sense = AUTO_VCS; int rtw_vcs_type = RTS_CTS; int rtw_rts_thresh = 2347; @@ -45,7 +46,12 @@ int rtw_scan_mode = 1;/* active, passive */ /* int smart_ps = 1; */ #ifdef CONFIG_POWER_SAVING /* IPS configuration */ +/* RTW_IPS_MODE=0:disable, 1:driver IPS (card disable), 2:FW IPS, 3: FW IPS with clock gating */ +#if (RTW_IPS_MODE <=3 && RTW_IPS_MODE >= 0) int rtw_ips_mode = RTW_IPS_MODE; +#else + int rtw_ips_mode = IPS_NONE; +#endif /* LPS configuration */ /* RTW_LPS_MODE=0:disable, 1:LPS , 2:LPS with clock gating, 3: power gating */ @@ -64,8 +70,16 @@ int rtw_scan_mode = 1;/* active, passive */ int rtw_lps_chk_by_tp = 1; - /* WOW LPS configuration */ #ifdef CONFIG_WOWLAN + /* IPS configuration */ +/* RTW_WOW_IPS_MODE=0:disable, 1:driver IPS (card disable) , 2:FW IPS, 3: FW IPS with clock gating */ +#if (RTW_WOW_IPS_MODE <=3 && RTW_WOW_IPS_MODE >= 0) + int rtw_wow_ips_mode = RTW_WOW_IPS_MODE; +#else + int rtw_wow_ips_mode = IPS_NONE; +#endif + + /* WOW LPS configuration */ /* RTW_WOW_LPS_MODE=0:disable, 1:LPS , 2:LPS with clock gating, 3: power gating */ #if (RTW_WOW_LPS_MODE > 0) int rtw_wow_power_mgnt = PS_MODE_MAX; @@ -82,6 +96,7 @@ int rtw_scan_mode = 1;/* active, passive */ int rtw_lps_level = LPS_NORMAL; int rtw_lps_chk_by_tp = 0; #ifdef CONFIG_WOWLAN + int rtw_wow_ips_mode = IPS_NONE; int rtw_wow_power_mgnt = PS_MODE_ACTIVE; int rtw_wow_lps_level = LPS_NORMAL; #endif /* CONFIG_WOWLAN */ @@ -108,6 +123,8 @@ MODULE_PARM_DESC(rtw_lps_1t1r, "The default LPS 1T1R setting"); module_param(rtw_lps_chk_by_tp, int, 0644); #ifdef CONFIG_WOWLAN +module_param(rtw_wow_ips_mode, int, 0644); +MODULE_PARM_DESC(rtw_wow_ips_mode, "The default WOW IPS mode"); module_param(rtw_wow_power_mgnt, int, 0644); MODULE_PARM_DESC(rtw_wow_power_mgnt, "The default WOW LPS mode"); module_param(rtw_wow_lps_level, int, 0644); @@ -194,7 +211,7 @@ int rtw_uapsd_ac_enable = 0x0; #if defined(CONFIG_RTL8814A) int rtw_pwrtrim_enable = 2; /* disable kfree , rename to power trim disable */ #elif defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) \ - || defined(CONFIG_RTL8723F) + || defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) /*PHYDM API, must enable by default*/ int rtw_pwrtrim_enable = 1; #else @@ -248,10 +265,18 @@ int rtw_bw_mode = CONFIG_RTW_CUSTOMIZE_BWMODE; int rtw_bw_mode = 0x21; #endif int rtw_ampdu_enable = 1;/* for enable tx_ampdu , */ /* 0: disable, 0x1:enable */ -int rtw_rx_stbc = 1;/* 0: disable, bit(0):enable 2.4g, bit(1):enable 5g, default is set to enable 2.4GHZ for IOT issue with bufflao's AP at 5GHZ */ -#if (defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C)) && defined(CONFIG_PCI_HCI) +/* 0: disable, bit(0):enable 2.4g, bit(1):enable 5g, default is set to enable 2.4GHZ for IOT issue with bufflao's AP at 5GHZ */ +#if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) +int rtw_rx_stbc = 3; +#else +int rtw_rx_stbc = 1; +#endif +#if (defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8822B) \ + || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) \ + && defined(CONFIG_PCI_HCI) int rtw_rx_ampdu_amsdu = 2;/* 0: disabled, 1:enabled, 2:auto . There is an IOT issu with DLINK DIR-629 when the flag turn on */ -#elif ((defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C)) && defined(CONFIG_SDIO_HCI)) +#elif ((defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) \ + || defined(CONFIG_RTL8822E)) && defined(CONFIG_SDIO_HCI)) int rtw_rx_ampdu_amsdu = 1; #else int rtw_rx_ampdu_amsdu;/* 0: disabled, 1:enabled, 2:auto . There is an IOT issu with DLINK DIR-629 when the flag turn on */ @@ -292,11 +317,15 @@ MODULE_PARM_DESC(rtw_rx_ampdu_sz_limit_4ss, "RX AMPDU size limit for 4SS link of * BIT3 - 160MHz, 0: non-support, 1: support */ int rtw_short_gi = 0xf; /* BIT0: Enable VHT LDPC Rx, BIT1: Enable VHT LDPC Tx, BIT4: Enable HT LDPC Rx, BIT5: Enable HT LDPC Tx */ -int rtw_ldpc_cap = 0x33; /* BIT0: Enable VHT STBC Rx, BIT1: Enable VHT STBC Tx, BIT4: Enable HT STBC Rx, BIT5: Enable HT STBC Tx */ #ifdef CONFIG_RTL8192F +int rtw_ldpc_cap = 0x20; int rtw_stbc_cap = 0x30; +#elif defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E) +int rtw_ldpc_cap = 0x33; +int rtw_stbc_cap = 0x33; #else +int rtw_ldpc_cap = 0x33; int rtw_stbc_cap = 0x13; #endif module_param(rtw_stbc_cap, int, 0644); @@ -318,7 +347,7 @@ int rtw_bfee_rf_number = 0; /*BeamformeeCapRfNum Rf path number, 0 for auto, ot int rtw_vht_enable = 1; /* 0:disable, 1:enable, 2:force auto enable */ module_param(rtw_vht_enable, int, 0644); -int rtw_vht_24g_enable = 1; /* 0:disable, 1:enable */ +int rtw_vht_24g_enable = 0; /* 0:disable, 1:enable */ module_param(rtw_vht_24g_enable, int, 0644); int rtw_ampdu_factor = 7; @@ -366,47 +395,6 @@ module_param(rtw_active_tpc_report, int, 0644); MODULE_PARM_DESC(rtw_active_tpc_report, "Active TPC report, 0:incapable, 1:capable, 2:auto enable"); #endif -#ifdef CONFIG_REGD_SRC_FROM_OS -static uint rtw_regd_src = CONFIG_RTW_REGD_SRC; -module_param(rtw_regd_src, uint, 0644); -MODULE_PARM_DESC(rtw_regd_src, "The default regd source selection, 0:Realtek defined, 1: OS"); -#endif - -char rtw_country_unspecified[] = {0xFF, 0xFF, 0x00}; -char *rtw_country_code = rtw_country_unspecified; -module_param(rtw_country_code, charp, 0644); -MODULE_PARM_DESC(rtw_country_code, "The default country code (in alpha2)"); - -uint rtw_channel_plan = CONFIG_RTW_CHPLAN; -module_param(rtw_channel_plan, uint, 0644); -MODULE_PARM_DESC(rtw_channel_plan, "The default chplan ID when rtw_alpha2 is not specified or valid"); - -static uint rtw_excl_chs[MAX_CHANNEL_NUM_2G_5G] = CONFIG_RTW_EXCL_CHS; -static int rtw_excl_chs_num = 0; -module_param_array(rtw_excl_chs, uint, &rtw_excl_chs_num, 0644); -MODULE_PARM_DESC(rtw_excl_chs, "exclusive channel array"); - -#if CONFIG_IEEE80211_BAND_6GHZ -uint rtw_channel_plan_6g = CONFIG_RTW_CHPLAN_6G; -module_param(rtw_channel_plan_6g, uint, 0644); -MODULE_PARM_DESC(rtw_channel_plan_6g, "The default chplan_6g ID when rtw_alpha2 is not specified or valid"); - -static uint rtw_excl_chs_6g[MAX_CHANNEL_NUM_6G] = CONFIG_RTW_EXCL_CHS_6G; -static int rtw_excl_chs_6g_num = 0; -module_param_array(rtw_excl_chs_6g, uint, &rtw_excl_chs_6g_num, 0644); -MODULE_PARM_DESC(rtw_excl_chs_6g, "exclusive channel array"); -#endif /* CONFIG_IEEE80211_BAND_6GHZ */ - -#ifdef CONFIG_80211D -static uint rtw_country_ie_slave_en_role = CONFIG_RTW_COUNTRY_IE_SLAVE_EN_ROLE; -module_param(rtw_country_ie_slave_en_role, uint, 0644); -MODULE_PARM_DESC(rtw_country_ie_slave_en_role, "802.11d country IE slave enable role: BIT0:pure STA mode, BIT1:P2P group client"); - -static uint rtw_country_ie_slave_en_ifbmp = CONFIG_RTW_COUNTRY_IE_SLAVE_EN_IFBMP; -module_param(rtw_country_ie_slave_en_ifbmp, uint, 0644); -MODULE_PARM_DESC(rtw_country_ie_slave_en_ifbmp, "802.11d country IE slave enable iface bitmap"); -#endif - /*if concurrent softap + p2p(GO) is needed, this param lets p2p response full channel list. But Softap must be SHUT DOWN once P2P decide to set up connection and become a GO.*/ #ifdef CONFIG_FULL_CH_IN_P2P_HANDSHAKE @@ -693,28 +681,6 @@ uint rtw_hiq_filter = CONFIG_RTW_HIQ_FILTER; module_param(rtw_hiq_filter, uint, 0644); MODULE_PARM_DESC(rtw_hiq_filter, "0:allow all, 1:allow special, 2:deny all"); -uint rtw_adaptivity_en = CONFIG_RTW_ADAPTIVITY_EN; -module_param(rtw_adaptivity_en, uint, 0644); -MODULE_PARM_DESC(rtw_adaptivity_en, "0:disable, 1:enable, 2:auto"); - -uint rtw_adaptivity_mode = CONFIG_RTW_ADAPTIVITY_MODE; -module_param(rtw_adaptivity_mode, uint, 0644); -MODULE_PARM_DESC(rtw_adaptivity_mode, "0:normal, 1:carrier sense"); - -int rtw_adaptivity_th_l2h_ini = CONFIG_RTW_ADAPTIVITY_TH_L2H_INI; -module_param(rtw_adaptivity_th_l2h_ini, int, 0644); -MODULE_PARM_DESC(rtw_adaptivity_th_l2h_ini, "th_l2h_ini for Adaptivity"); - -int rtw_adaptivity_th_edcca_hl_diff = CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF; -module_param(rtw_adaptivity_th_edcca_hl_diff, int, 0644); -MODULE_PARM_DESC(rtw_adaptivity_th_edcca_hl_diff, "th_edcca_hl_diff for Adaptivity"); - -#ifdef CONFIG_DFS_MASTER -uint rtw_dfs_region_domain = CONFIG_RTW_DFS_REGION_DOMAIN; -module_param(rtw_dfs_region_domain, uint, 0644); -MODULE_PARM_DESC(rtw_dfs_region_domain, "0:NONE, 1:FCC, 2:MKK, 3:ETSI"); -#endif - uint rtw_amsdu_mode = RTW_AMSDU_MODE_NON_SPP; module_param(rtw_amsdu_mode, uint, 0644); MODULE_PARM_DESC(rtw_amsdu_mode, "0:non-spp, 1:spp, 2:all drop"); @@ -854,15 +820,6 @@ int rtw_tsf_update_restore_factor = CONFIG_TSF_UPDATE_RESTORE_FACTOR; module_param(rtw_tsf_update_restore_factor, int, 0644); MODULE_PARM_DESC(rtw_tsf_update_restore_factor, "num of bcn intervals to stay TSF update restore status"); - -#ifdef CONFIG_RTW_NBI -static int rtw_nbi_en = 1; -#else -static int rtw_nbi_en = 0; -#endif -module_param(rtw_nbi_en, int, 0644); -MODULE_PARM_DESC(rtw_nbi_en, "0:Disable, 1:Enable Narrow Band Interference"); - #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE char *rtw_phy_file_path = REALTEK_CONFIG_PATH; module_param(rtw_phy_file_path, charp, 0644); @@ -1012,6 +969,9 @@ int rtw_fw_param_init = 1; module_param(rtw_fw_param_init, int, 0644); #endif +int rtw_def_bb_opmode = CONFIG_RTW_DEFAULT_BB_OPMODE; +module_param(rtw_def_bb_opmode, int, 0644); + #ifdef CONFIG_TDMADIG int rtw_tdmadig_en = 1; /* @@ -1060,7 +1020,8 @@ MODULE_PARM_DESC(rtw_scan_interval_thr, "Threshold used to judge if scan " \ "request comes from scan UI, unit is ms."); #endif /* RTW_BUSY_DENY_SCAN */ -#ifdef CONFIG_RTL8822C_XCAP_NEW_POLICY +#if defined(CONFIG_RTL8822C_XCAP_NEW_POLICY) \ + || defined(CONFIG_RTL8822E_XCAP_NEW_POLICY) uint rtw_8822c_xcap_overwrite = 1; module_param(rtw_8822c_xcap_overwrite, uint, 0644); #endif @@ -1145,70 +1106,6 @@ void rtw_regsty_load_target_tx_power(struct registry_priv *regsty) #endif /* CONFIG_IEEE80211_BAND_5GHZ */ } -inline void rtw_regsty_load_chplan(struct registry_priv *regsty) -{ - u16 chplan = RTW_CHPLAN_UNSPECIFIED; - u16 chplan_6g = RTW_CHPLAN_6G_UNSPECIFIED; - - chplan = rtw_channel_plan; -#if CONFIG_IEEE80211_BAND_6GHZ - chplan_6g = rtw_channel_plan_6g; -#endif - - rtw_chplan_ioctl_input_mapping(&chplan, &chplan_6g); - - regsty->channel_plan = chplan; -#if CONFIG_IEEE80211_BAND_6GHZ - regsty->channel_plan_6g = chplan_6g; -#endif -} - -inline void rtw_regsty_load_alpha2(struct registry_priv *regsty) -{ - if (strlen(rtw_country_code) != 2 - || (!IS_ALPHA2_WORLDWIDE(rtw_country_code) - && (is_alpha(rtw_country_code[0]) == _FALSE - || is_alpha(rtw_country_code[1]) == _FALSE) - ) - ) { - if (rtw_country_code != rtw_country_unspecified) - RTW_ERR("%s discard rtw_country_code not in alpha2 or \"%s\"\n", __func__, WORLDWIDE_ALPHA2); - SET_UNSPEC_ALPHA2(regsty->alpha2); - } else - _rtw_memcpy(regsty->alpha2, rtw_country_code, 2); -} - -inline void rtw_regsty_load_excl_chs(struct registry_priv *regsty) -{ - int i; - int ch_num = 0; - - for (i = 0; i < MAX_CHANNEL_NUM_2G_5G; i++) - if (((u8)rtw_excl_chs[i]) != 0) - regsty->excl_chs[ch_num++] = (u8)rtw_excl_chs[i]; - - if (ch_num < MAX_CHANNEL_NUM_2G_5G) - regsty->excl_chs[ch_num] = 0; - -#if CONFIG_IEEE80211_BAND_6GHZ - ch_num = 0; - for (i = 0; i < MAX_CHANNEL_NUM_6G; i++) - if (((u8)rtw_excl_chs_6g[i]) != 0) - regsty->excl_chs_6g[ch_num++] = (u8)rtw_excl_chs_6g[i]; - - if (ch_num < MAX_CHANNEL_NUM_6G) - regsty->excl_chs_6g[ch_num] = 0; -#endif -} - -#ifdef CONFIG_80211D -inline void rtw_regsty_load_country_ie_slave_settings(struct registry_priv *regsty) -{ - regsty->country_ie_slave_en_role = rtw_country_ie_slave_en_role; - regsty->country_ie_slave_en_ifbmp = rtw_country_ie_slave_en_ifbmp; -} -#endif - #ifdef CONFIG_80211N_HT inline void rtw_regsty_init_rx_ampdu_sz_limit(struct registry_priv *regsty) { @@ -1243,6 +1140,8 @@ inline void rtw_regsty_init_unassoc_sta_param(struct registry_priv *regsty) } #endif +#include "rtw_cfg.c" + uint loadparam(_adapter *padapter) { uint status = _SUCCESS; @@ -1268,6 +1167,12 @@ uint loadparam(_adapter *padapter) if (rtw_nb_config != RTW_NB_CONFIG_NONE) rtw_wireless_mode &= ~WIRELESS_11B; #endif + if (!(rtw_band_type & BAND_CAP_2G)) + rtw_wireless_mode &= ~WIRELESS_MODE_24G; + if (!(rtw_band_type & BAND_CAP_5G)) + rtw_wireless_mode &= ~WIRELESS_MODE_5G; + if (!(rtw_band_type & BAND_CAP_6G)) + rtw_wireless_mode &= ~WIRELESS_MODE_6G; registry_par->wireless_mode = (u8)rtw_wireless_mode; if (IsSupported24G(registry_par->wireless_mode) && (!is_supported_5g(registry_par->wireless_mode)) @@ -1285,6 +1190,8 @@ uint loadparam(_adapter *padapter) registry_par->scan_mode = (u8)rtw_scan_mode; registry_par->smart_ps = (u8)rtw_smart_ps; registry_par->check_fw_ps = (u8)rtw_check_fw_ps; + + registry_par->def_bb_opmode = (u8)rtw_def_bb_opmode; #ifdef CONFIG_TDMADIG registry_par->tdmadig_en = (u8)rtw_tdmadig_en; registry_par->tdmadig_mode = (u8)rtw_tdmadig_mode; @@ -1303,6 +1210,7 @@ uint loadparam(_adapter *padapter) #endif registry_par->lps_chk_by_tp = (u8)rtw_lps_chk_by_tp; #ifdef CONFIG_WOWLAN + registry_par->wow_ips_mode = (u8)rtw_wow_ips_mode; registry_par->wow_power_mgnt = (u8)rtw_wow_power_mgnt; registry_par->wow_lps_level = (u8)rtw_wow_lps_level; #ifdef CONFIG_LPS_1T1R @@ -1352,7 +1260,7 @@ uint loadparam(_adapter *padapter) if (rtw_nb_config != RTW_NB_CONFIG_NONE) rtw_bw_mode = 0; #endif - registry_par->bw_mode = (u8)rtw_bw_mode; + registry_par->bw_mode = (u16)rtw_bw_mode; registry_par->ampdu_enable = (u8)rtw_ampdu_enable; registry_par->rx_stbc = (u8)rtw_rx_stbc; registry_par->rx_ampdu_amsdu = (u8)rtw_rx_ampdu_amsdu; @@ -1409,22 +1317,6 @@ uint loadparam(_adapter *padapter) registry_par->active_tpc_report = (u8)rtw_active_tpc_report; #endif -#ifdef CONFIG_REGD_SRC_FROM_OS - if (regd_src_is_valid(rtw_regd_src)) - registry_par->regd_src = (u8)rtw_regd_src; - else { - RTW_WARN("%s invalid rtw_regd_src(%u), use REGD_SRC_RTK_PRIV instead\n", __func__, rtw_regd_src); - registry_par->regd_src = REGD_SRC_RTK_PRIV; - } -#endif - - rtw_regsty_load_alpha2(registry_par); - rtw_regsty_load_chplan(registry_par); - rtw_regsty_load_excl_chs(registry_par); -#ifdef CONFIG_80211D - rtw_regsty_load_country_ie_slave_settings(registry_par); -#endif - registry_par->full_ch_in_p2p_handshake = (u8)rtw_full_ch_in_p2p_handshake; #ifdef CONFIG_BT_COEXIST registry_par->btcoex = (u8)rtw_btcoex_enable; @@ -1507,11 +1399,6 @@ uint loadparam(_adapter *padapter) registry_par->hiq_filter = (u8)rtw_hiq_filter; - registry_par->adaptivity_en = (u8)rtw_adaptivity_en; - registry_par->adaptivity_mode = (u8)rtw_adaptivity_mode; - registry_par->adaptivity_th_l2h_ini = (s8)rtw_adaptivity_th_l2h_ini; - registry_par->adaptivity_th_edcca_hl_diff = (s8)rtw_adaptivity_th_edcca_hl_diff; - #ifdef CONFIG_DYNAMIC_SOML registry_par->dyn_soml_en = (u8)rtw_dynamic_soml_en; registry_par->dyn_soml_train_num = (u8)rtw_dynamic_soml_train_num; @@ -1536,16 +1423,6 @@ uint loadparam(_adapter *padapter) registry_par->reg_rxgain_offset_5gm = (u32) rtw_rxgain_offset_5gm; registry_par->reg_rxgain_offset_5gh = (u32) rtw_rxgain_offset_5gh; -#ifdef CONFIG_DFS_MASTER - registry_par->dfs_region_domain = (u8)rtw_dfs_region_domain; - #ifdef CONFIG_REGD_SRC_FROM_OS - if (rtw_regd_src == REGD_SRC_OS && registry_par->dfs_region_domain != RTW_DFS_REGD_NONE) { - RTW_WARN("%s force disable radar detection capability when regd_src is OS\n", __func__); - registry_par->dfs_region_domain = RTW_DFS_REGD_NONE; - } - #endif -#endif - registry_par->amsdu_mode = (u8)rtw_amsdu_mode; #ifdef CONFIG_MCC_MODE @@ -1642,7 +1519,8 @@ uint loadparam(_adapter *padapter) registry_par->scan_interval_thr = rtw_scan_interval_thr; #endif -#ifdef CONFIG_RTL8822C_XCAP_NEW_POLICY +#if defined(CONFIG_RTL8822C_XCAP_NEW_POLICY) \ + || defined(CONFIG_RTL8822E_XCAP_NEW_POLICY) registry_par->rtw_8822c_xcap_overwrite = (u8)rtw_8822c_xcap_overwrite; #endif @@ -1650,7 +1528,7 @@ uint loadparam(_adapter *padapter) rtw_regsty_init_unassoc_sta_param(registry_par); #endif - registry_par->nbi_en = (u8)rtw_nbi_en; + rtw_load_registry(padapter); return status; } @@ -1705,7 +1583,7 @@ static int rtw_net_set_mac_address(struct net_device *pnetdev, void *addr) } _rtw_memcpy(adapter_mac_addr(padapter), sa->sa_data, ETH_ALEN); /* set mac addr to adapter */ - _rtw_memcpy(pnetdev->dev_addr, sa->sa_data, ETH_ALEN); /* set mac addr to net_device */ + dev_addr_mod(pnetdev, 0, sa->sa_data, ETH_ALEN); rtw_hal_set_hw_macaddr(padapter, sa->sa_data); @@ -1903,6 +1781,16 @@ void rtw_ndev_uninit(struct net_device *dev) rtw_adapter_proc_deinit(dev); } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) +static int rtw_siocdevprivate(struct net_device *dev, struct ifreq *ifr, + void __user *data, int cmd) +{ + /* handle cmd(s) between SIOCDEVPRIVATE and SIOCDEVPRIVATE + 15 */ + + return rtw_ioctl(dev, ifr, cmd); +} +#endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)) static const struct net_device_ops rtw_netdev_ops = { .ndo_init = rtw_ndev_init, @@ -1916,6 +1804,9 @@ static const struct net_device_ops rtw_netdev_ops = { .ndo_set_mac_address = rtw_net_set_mac_address, .ndo_get_stats = rtw_net_get_stats, .ndo_do_ioctl = rtw_ioctl, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) + .ndo_siocdevprivate = rtw_siocdevprivate, +#endif }; #endif @@ -2199,7 +2090,11 @@ int rtw_os_ndev_register(_adapter *adapter, const char *name) u8 rtnl_lock_needed = rtw_rtnl_lock_needed(dvobj); #ifdef CONFIG_RTW_NAPI +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) + netif_napi_add(ndev, &adapter->napi, rtw_recv_napi_poll); +#else netif_napi_add(ndev, &adapter->napi, rtw_recv_napi_poll, RTL_NAPI_WEIGHT); +#endif #endif /* CONFIG_RTW_NAPI */ #if defined(CONFIG_IOCTL_CFG80211) @@ -2219,7 +2114,7 @@ int rtw_os_ndev_register(_adapter *adapter, const char *name) /* alloc netdev name */ rtw_init_netdev_name(ndev, name); - _rtw_memcpy(ndev->dev_addr, adapter_mac_addr(adapter), ETH_ALEN); + dev_addr_mod(ndev, 0, adapter_mac_addr(adapter), ETH_ALEN); /* Tell the network stack we exist */ @@ -2870,12 +2765,44 @@ u8 rtw_reset_drv_sw(_adapter *padapter) mlmeext_set_scan_state(&padapter->mlmeextpriv, SCAN_DISABLE); #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS - rtw_set_signal_stat_timer(&padapter->recvpriv); + if (padapter->netif_up == _TRUE) + rtw_set_signal_stat_timer(&padapter->recvpriv); #endif return ret8; } +static void devobj_decide_init_chplan(struct dvobj_priv *dvobj) +{ + struct rf_ctl_t *rfctl = dvobj_to_rfctl(dvobj); + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(dvobj_get_primary_adapter(dvobj)); + const char *alpha2 = hal_data->eeprom_alpha2; + u8 chplan = hal_data->eeprom_chplan; + u8 chplan_6g = RTW_CHPLAN_6G_NULL; + bool disable_sw_chplan = hal_data->eeprom_force_hw_chplan; + +#if CONFIG_IEEE80211_BAND_6GHZ + chplan_6g = hal_data->eeprom_chplan_6g; +#endif + + if (alpha2) + RTW_INFO("%s alpha2:{%d,%d}\n", __func__, alpha2[0], alpha2[1]); + RTW_INFO("%s chplan:0x%02x\n", __func__, chplan); + RTW_INFO("%s chplan_6g:0x%02x\n", __func__, chplan_6g); + RTW_INFO("%s disable_sw_chplan:%d\n", __func__, disable_sw_chplan); + + /* + * treat {0xFF, 0xFF} as unspecified + */ + if (alpha2 && strncmp(alpha2, "\xFF\xFF", 2) == 0) + alpha2 = NULL; + +#ifdef CONFIG_FORCE_SW_CHANNEL_PLAN + disable_sw_chplan = _FALSE; +#endif + + rtw_rfctl_decide_init_chplan(rfctl, alpha2, chplan, chplan_6g, disable_sw_chplan); +} u8 rtw_init_drv_sw(_adapter *padapter) { @@ -2974,6 +2901,7 @@ u8 rtw_init_drv_sw(_adapter *padapter) ret8 = _FAIL; goto exit; } + devobj_decide_init_chplan(adapter_to_dvobj(padapter)); } if (rtw_init_mlme_priv(padapter) == _FAIL) { @@ -3061,13 +2989,14 @@ u8 rtw_init_drv_sw(_adapter *padapter) RTW_INFO("%s: initialize MP private data Fail!\n", __func__); #endif - if (is_primary_adapter(padapter)) - rtw_edcca_mode_update(adapter_to_dvobj(padapter)); - rtw_hal_dm_init(padapter); - if (is_primary_adapter(padapter)) - rtw_rfctl_chplan_init(padapter); + if (is_primary_adapter(padapter)) { + rtw_edcca_mode_update(adapter_to_dvobj(padapter), true); + rtw_rfctl_chset_apply_regulatory(adapter_to_dvobj(padapter), true); + op_class_pref_apply_regulatory(adapter_to_rfctl(padapter), REG_CHANGE); + init_channel_list(padapter); + } #ifdef CONFIG_RTW_SW_LED rtw_hal_sw_led_init(padapter); @@ -3120,6 +3049,14 @@ void rtw_cancel_dynamic_chk_timer(_adapter *padapter) void rtw_cancel_all_timer(_adapter *padapter) { +#ifdef CONFIG_RTW_WNM + _cancel_timer_ex(&padapter->mlmepriv.nb_info.roam_scan_timer); +#endif + +#ifdef CONFIG_RTW_80211R + _cancel_timer_ex(&padapter->mlmeextpriv.ft_link_timer); + _cancel_timer_ex(&padapter->mlmeextpriv.ft_roam_timer); +#endif _cancel_timer_ex(&padapter->mlmepriv.assoc_timer); @@ -3190,15 +3127,15 @@ u8 rtw_free_drv_sw(_adapter *padapter) #ifdef CONFIG_CONCURRENT_MODE struct roch_info *prochinfo = &padapter->rochinfo; #endif - if (!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) { - _cancel_timer_ex(&pwdinfo->find_phase_timer); - _cancel_timer_ex(&pwdinfo->restore_p2p_state_timer); - _cancel_timer_ex(&pwdinfo->pre_tx_scan_timer); - #ifdef CONFIG_CONCURRENT_MODE - _cancel_timer_ex(&prochinfo->ap_roch_ch_switch_timer); - #endif /* CONFIG_CONCURRENT_MODE */ - rtw_p2p_set_state(pwdinfo, P2P_STATE_NONE); - } + _cancel_timer_ex(&pwdinfo->find_phase_timer); + _cancel_timer_ex(&pwdinfo->restore_p2p_state_timer); + _cancel_timer_ex(&pwdinfo->pre_tx_scan_timer); + _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey); + _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey2); + #ifdef CONFIG_CONCURRENT_MODE + _cancel_timer_ex(&prochinfo->ap_roch_ch_switch_timer); + #endif /* CONFIG_CONCURRENT_MODE */ + rtw_p2p_set_state(pwdinfo, P2P_STATE_NONE); } #endif /* add for CONFIG_IEEE80211W, none 11w also can use */ @@ -3416,6 +3353,9 @@ static const struct net_device_ops rtw_netdev_vir_if_ops = { .ndo_set_mac_address = rtw_net_set_mac_address, .ndo_get_stats = rtw_net_get_stats, .ndo_do_ioctl = rtw_ioctl, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) + .ndo_siocdevprivate = rtw_siocdevprivate, +#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)) .ndo_select_queue = rtw_select_queue, #endif @@ -3479,7 +3419,7 @@ _adapter *rtw_drv_add_vir_if(_adapter *primary_padapter, #else padapter->hw_port = HW_PORT1; #endif - + padapter->adapter_link.adapter = padapter; /****** hook vir if into dvobj ******/ pdvobjpriv = adapter_to_dvobj(padapter); @@ -3561,15 +3501,13 @@ exit: void rtw_drv_stop_vir_if(_adapter *padapter) { - struct net_device *pnetdev = NULL; - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_priv *pmlmepriv; if (padapter == NULL) return; RTW_INFO(FUNC_ADPT_FMT" enter\n", FUNC_ADPT_ARG(padapter)); - pnetdev = padapter->pnetdev; - + pmlmepriv = &padapter->mlmepriv; if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE)) rtw_disassoc_cmd(padapter, 0, RTW_CMDF_DIRECTLY); @@ -3686,7 +3624,9 @@ static int rtw_inet6addr_notifier_call(struct notifier_block *nb, { struct inet6_ifaddr *inet6_ifa = data; struct net_device *ndev; +#ifdef CONFIG_WOWLAN struct pwrctrl_priv *pwrctl = NULL; +#endif struct mlme_ext_priv *pmlmeext = NULL; struct mlme_ext_info *pmlmeinfo = NULL; _adapter *adapter = NULL; @@ -3706,7 +3646,9 @@ static int rtw_inet6addr_notifier_call(struct notifier_block *nb, pmlmeext = &adapter->mlmeextpriv; pmlmeinfo = &pmlmeext->mlmext_info; +#ifdef CONFIG_WOWLAN pwrctl = adapter_to_pwrctl(adapter); +#endif pmlmeext = &adapter->mlmeextpriv; pmlmeinfo = &pmlmeext->mlmext_info; @@ -4003,6 +3945,10 @@ int _netdev_open(struct net_device *pnetdev) pwrctrlpriv->bips_processing = _FALSE; } +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + rtw_set_signal_stat_timer(&padapter->recvpriv); +#endif + RTW_INFO(FUNC_NDEV_FMT" Success (bup=%d)\n", FUNC_NDEV_ARG(pnetdev), padapter->bup); return 0; @@ -4145,6 +4091,10 @@ int _netdev_open(struct net_device *pnetdev) pwrctrlpriv->rx_time = 0; #endif /* CONFIG_RTW_CFGVEDNOR_LLSTATS */ +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + rtw_set_signal_stat_timer(&padapter->recvpriv); +#endif + RTW_INFO("-871x_drv - drv_open, bup=%d\n", padapter->bup); return 0; @@ -4263,9 +4213,11 @@ int rtw_ips_pwr_up(_adapter *padapter) RTW_INFO("===> rtw_ips_pwr_up..............\n"); #if defined(CONFIG_SWLPS_IN_IPS) || defined(CONFIG_FWLPS_IN_IPS) + if ((rtw_is_fw_ips_mode(padapter) == _FALSE) #ifdef DBG_CONFIG_ERROR_DETECT - if (psrtpriv->silent_reset_inprogress == _TRUE) + || (psrtpriv->silent_reset_inprogress == _TRUE) #endif/* #ifdef DBG_CONFIG_ERROR_DETECT */ + ) #endif /* defined(CONFIG_SWLPS_IN_IPS) || defined(CONFIG_FWLPS_IN_IPS) */ rtw_reset_drv_sw(padapter); @@ -4301,9 +4253,11 @@ void rtw_ips_dev_unload(_adapter *padapter) #if defined(CONFIG_SWLPS_IN_IPS) || defined(CONFIG_FWLPS_IN_IPS) + if ((rtw_is_fw_ips_mode(padapter) == _FALSE) #ifdef DBG_CONFIG_ERROR_DETECT - if (psrtpriv->silent_reset_inprogress == _TRUE) + || (psrtpriv->silent_reset_inprogress == _TRUE) #endif /* #ifdef DBG_CONFIG_ERROR_DETECT */ + ) #endif /* defined(CONFIG_SWLPS_IN_IPS) || defined(CONFIG_FWLPS_IN_IPS) */ { rtw_hal_set_hwreg(padapter, HW_VAR_FIFO_CLEARN_UP, 0); @@ -4544,7 +4498,7 @@ void rtw_ndev_destructor(struct net_device *ndev) free_netdev(ndev); } -#ifdef CONFIG_ARP_KEEP_ALIVE +#ifdef CONFIG_ARP_KEEP_ALIVE_GW struct route_info { struct in_addr dst_addr; struct in_addr src_addr; @@ -4907,6 +4861,10 @@ void rtw_dev_unload(PADAPTER padapter) RTW_INFO("<== "FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); } else { +#ifdef CONFIG_HAL_PREINIT + if (rtw_get_hal_pre_inited(padapter) == _TRUE) + rtw_hal_deinit(padapter); +#endif RTW_INFO("%s: bup==_FALSE\n", __FUNCTION__); } rtw_cancel_all_timer(padapter); @@ -4937,7 +4895,7 @@ int rtw_suspend_free_assoc_resource(_adapter *padapter) MAC_ARG(pmlmepriv->cur_network.network.MacAddress), pmlmepriv->cur_network.network.Ssid.SsidLength, pmlmepriv->assoc_ssid.SsidLength); - rtw_set_to_roam(padapter, 1); + rtw_set_to_roam(padapter, 2); } } @@ -5111,7 +5069,8 @@ int rtw_suspend_wow(_adapter *padapter) RTW_PRINT("%s: pno: %d\n", __func__, pwrpriv->wowlan_pno_enable); #ifndef RTW_HALMAC #ifdef CONFIG_FWLPS_IN_IPS - rtw_set_fw_in_ips_mode(padapter, _TRUE); + if (rtw_is_fw_ips_mode(padapter) == _TRUE) + rtw_set_fw_in_ips_mode(padapter, _TRUE); #endif #else /* RTW_HALMAC */ // TODO(Owen): Controlled by wowlan lps_level @@ -5119,15 +5078,19 @@ int rtw_suspend_wow(_adapter *padapter) * we write RPWM here so that the enter/leave LCLK actions can be * symmetrical. */ +#ifdef CONFIG_FWLPS_IN_IPS #ifdef CONFIG_LPS_LCLK - rtw_set_lps_lclk(padapter, _TRUE); + if (rtw_is_fw_ips_lclk_mode(padapter) == _TRUE) + rtw_set_lps_lclk(padapter, _TRUE); #endif +#endif /* CONFIG_FWLPS_IN_IPS */ #endif } #ifdef CONFIG_LPS else { if(pwrpriv->wowlan_power_mgmt != PS_MODE_ACTIVE) { - rtw_set_ps_mode(padapter, pwrpriv->wowlan_power_mgmt, 0, 0, "WOWLAN"); + RTW_INFO("%s smart_ps = %d\n", __func__, pwrpriv->smart_ps); + rtw_set_ps_mode(padapter, pwrpriv->wowlan_power_mgmt, pwrpriv->smart_ps, 0, "WOWLAN"); } } #endif /* #ifdef CONFIG_LPS */ @@ -5237,13 +5200,14 @@ int rtw_suspend_normal(_adapter *padapter) RTW_INFO("==> "FUNC_ADPT_FMT" entry....\n", FUNC_ADPT_ARG(padapter)); -#ifdef CONFIG_BT_COEXIST - rtw_btcoex_SuspendNotify(padapter, BTCOEX_SUSPEND_STATE_SUSPEND); -#endif rtw_mi_netif_caroff_qstop(padapter); rtw_mi_suspend_free_assoc_resource(padapter); +#ifdef CONFIG_BT_COEXIST + rtw_btcoex_SuspendNotify(padapter, BTCOEX_SUSPEND_STATE_SUSPEND); +#endif + rtw_led_control(padapter, LED_CTL_POWER_OFF); if ((rtw_hal_check_ips_status(padapter) == _TRUE) @@ -5316,6 +5280,14 @@ int rtw_suspend_common(_adapter *padapter) rtw_mi_cancel_all_timer(padapter); LeaveAllPowerSaveModeDirect(padapter); +#ifdef CONFIG_IPS + if (pwrpriv->rf_pwrstate == rf_off) { + RTW_INFO("%s call ips_leave to leave driver ips\n", __func__); + if (ips_leave(padapter) == _FAIL) + RTW_INFO("ips_leave failed\n"); + } +#endif + rtw_ps_deny_cancel(padapter, PS_DENY_SUSPEND); if (rtw_mi_check_status(padapter, MI_AP_MODE) == _FALSE) { @@ -5397,13 +5369,16 @@ int rtw_resume_process_wow(_adapter *padapter) RTW_PRINT("%s: pno: %d\n", __func__, pwrpriv->wowlan_pno_enable); #ifndef RTW_HALMAC #ifdef CONFIG_FWLPS_IN_IPS - rtw_set_fw_in_ips_mode(padapter, _FALSE); + if (rtw_is_fw_ips_mode(padapter) == _TRUE) + rtw_set_fw_in_ips_mode(padapter, _FALSE); #endif #else /* RTW_HALMAC */ +#ifdef CONFIG_FWLPS_IN_IPS #ifdef CONFIG_LPS_LCLK - // TODO(Owen): Controlled by wowlan lps_level - rtw_set_lps_lclk(padapter, _FALSE); + if (rtw_is_fw_ips_lclk_mode(padapter) == _TRUE) + rtw_set_lps_lclk(padapter, _FALSE); #endif +#endif /* CONFIG_FWLPS_IN_IPS */ #endif } else { #ifdef CONFIG_LPS @@ -5435,6 +5410,22 @@ int rtw_resume_process_wow(_adapter *padapter) poidparam.subcode = WOWLAN_DISABLE; rtw_hal_set_hwreg(padapter, HW_VAR_WOWLAN, (u8 *)&poidparam); +#ifdef CONFIG_LPS_PG + /* Restore RFK parameter */ + { + u8 status; + + status = halrf_config_rfk_with_header_file((&GET_HAL_DATA(padapter)->odmpriv), CONFIG_BB_RF_CAL_INIT); + if (HAL_STATUS_SUCCESS == status) + RTW_INFO("%s: restore rfk parameter success!\n", __FUNCTION__); + else + RTW_INFO("%s: restore rfk parameter fail!\n", __FUNCTION__); + } +#endif + +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + rtw_set_signal_stat_timer(&padapter->recvpriv); +#endif #ifdef CONFIG_CONCURRENT_MODE rtw_mi_buddy_reset_drv_sw(padapter); #endif @@ -5475,9 +5466,7 @@ int rtw_resume_process_wow(_adapter *padapter) } if (rtw_chk_roam_flags(padapter, RTW_ROAM_ON_RESUME)) { - if (pwrpriv->wowlan_wake_reason == FW_DECISION_DISCONNECT || - pwrpriv->wowlan_wake_reason == RX_DISASSOC|| - pwrpriv->wowlan_wake_reason == RX_DEAUTH) { + if (pwrpriv->wowlan_is_disconnect_reason) { RTW_INFO("%s: disconnect reason: %02x\n", __func__, pwrpriv->wowlan_wake_reason); @@ -5492,7 +5481,7 @@ int rtw_resume_process_wow(_adapter *padapter) } else { RTW_INFO("%s: do roaming\n", __func__); - rtw_roaming(padapter, NULL); + rtw_roaming(padapter, NULL, BAND_MAX, 0); } } @@ -5659,8 +5648,11 @@ void rtw_mi_resume_process_normal(_adapter *padapter) if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { RTW_INFO(FUNC_ADPT_FMT" fwstate:0x%08x - WIFI_STATION_STATE\n", FUNC_ADPT_ARG(iface), get_fwstate(pmlmepriv)); - if (rtw_chk_roam_flags(iface, RTW_ROAM_ON_RESUME)) - rtw_roaming(iface, NULL); + if (rtw_chk_roam_flags(iface, RTW_ROAM_ON_RESUME)) { + struct _ADAPTER_LINK *alink = GET_PRIMARY_LINK(iface); + + rtw_roaming(iface, NULL, ALINK_GET_BAND(alink), ALINK_GET_CH(alink)); + } } #ifdef CONFIG_AP_MODE diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/recv_linux.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/recv_linux.c index 6871c7923..2433251e8 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/recv_linux.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/recv_linux.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -210,13 +210,14 @@ void rtw_os_recv_resource_free(struct recv_priv *precvpriv) } #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) -#if !defined(CONFIG_RTL8822B) && !defined(CONFIG_RTL8822C) && !defined(CONFIG_RTL8723F) +#if !defined(CONFIG_RTL8822B) && !defined(CONFIG_RTL8822C) \ + && !defined(CONFIG_RTL8723F) && !defined(CONFIG_RTL8822E) #ifdef CONFIG_SDIO_RX_COPY static int sdio_init_recvbuf_with_skb(struct recv_priv *recvpriv, struct recv_buf *rbuf, u32 size) { #ifdef CONFIG_PREALLOC_RX_SKB_BUFFER if (RBUF_IS_PREALLOC(rbuf)) { - rbuf->pskb = rtw_alloc_skb_premem(size); + rbuf->pskb = rtkm_alloc_skb(size); if (!rbuf->pskb) { RTW_WARN("%s: Fail to get pre-alloc skb! size=%d\n", __func__, size); return _FAIL; @@ -287,7 +288,8 @@ int rtw_os_recvbuf_resource_alloc(_adapter *padapter, struct recv_buf *precvbuf, #endif /* CONFIG_USE_USB_BUFFER_ALLOC_RX */ #elif defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) - #if !defined(CONFIG_RTL8822B) && !defined(CONFIG_RTL8822C) && !defined(CONFIG_RTL8723F) + #if !defined(CONFIG_RTL8822B) && !defined(CONFIG_RTL8822C) \ + && !defined(CONFIG_RTL8723F) && !defined(CONFIG_RTL8822E) #ifdef CONFIG_SDIO_RX_COPY res = sdio_init_recvbuf_with_skb(&padapter->recvpriv, precvbuf, size); #endif @@ -326,9 +328,10 @@ int rtw_os_recvbuf_resource_free(_adapter *padapter, struct recv_buf *precvbuf) if (precvbuf->pskb) { #ifdef CONFIG_PREALLOC_RX_SKB_BUFFER - if (rtw_free_skb_premem(precvbuf->pskb) != 0) + rtkm_kfree_skb_any(precvbuf->pskb); +#else + rtw_skb_free(precvbuf->pskb); #endif - rtw_skb_free(precvbuf->pskb); } return ret; @@ -339,9 +342,7 @@ _pkt *rtw_os_alloc_msdu_pkt(union recv_frame *prframe, const u8 *da, const u8 *s { u8 *data_ptr; _pkt *sub_skb; - struct rx_pkt_attrib *pattrib; - pattrib = &prframe->u.hdr.attrib; #ifdef CONFIG_SKB_COPY sub_skb = rtw_skb_alloc(msdu_len + 14); diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_android.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_android.c index 50dcfed96..ddc5d78ec 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_android.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_android.c @@ -349,6 +349,7 @@ int rtw_android_pno_enable(struct net_device *net, int pno_enable) pwrctl->pscan_info = NULL; } #endif + pwrctl->pno_inited = _FALSE; } return 0; } else @@ -1163,7 +1164,8 @@ static void shutdown_card(void) } #ifdef CONFIG_FWLPS_IN_IPS - LeaveAllPowerSaveMode(g_test_adapter); + if (rtw_is_fw_ips_mode(g_test_adapter) == _TRUE) + LeaveAllPowerSaveMode(g_test_adapter); #endif /* CONFIG_FWLPS_IN_IPS */ #ifdef CONFIG_WOWLAN diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_cfg.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_cfg.c new file mode 100644 index 000000000..5a35493cb --- /dev/null +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_cfg.c @@ -0,0 +1,314 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2023 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * 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. + * + *****************************************************************************/ +#define _RTW_CFG_C_ + +#include + +#ifdef CONFIG_AP_MODE +uint rtw_max_ap_assoc_sta = CONFIG_RTW_MAX_AP_ASSOC_STA; +module_param(rtw_max_ap_assoc_sta, uint, 0644); +MODULE_PARM_DESC(rtw_max_ap_assoc_sta, "the maximum number of associated STAs of AP mode, 0: not specified"); +#endif /* CONFIG_AP_MODE */ + +#ifdef CONFIG_REGD_SRC_FROM_OS +static uint rtw_regd_src = CONFIG_RTW_REGD_SRC; +module_param(rtw_regd_src, uint, 0644); +MODULE_PARM_DESC(rtw_regd_src, "The default regd source selection, 0:RTK_PRIV, 1:OS"); +#endif + +uint rtw_init_regd_always_apply = CONFIG_RTW_INIT_REGD_ALWAYS_APPLY; +module_param(rtw_init_regd_always_apply, uint, 0644); +MODULE_PARM_DESC(rtw_init_regd_always_apply, "Whether INIT regd request is always applied" + " (being included when taking intersection together with higher priority requests)" + " when regd source is RTK_PRIV"); + +uint rtw_user_regd_always_apply = CONFIG_RTW_USER_REGD_ALWAYS_APPLY; +module_param(rtw_user_regd_always_apply, uint, 0644); +MODULE_PARM_DESC(rtw_user_regd_always_apply, "Whether USER regd request is always applied" + " (being included when taking intersection together with higher priority requests)" + " when regd source is RTK_PRIV"); + +char *rtw_country_code = CONFIG_RTW_COUNTRY_CODE; +module_param(rtw_country_code, charp, 0644); +MODULE_PARM_DESC(rtw_country_code, "The default country code (in alpha2)"); + +uint rtw_channel_plan = CONFIG_RTW_CHPLAN; +module_param(rtw_channel_plan, uint, 0644); +MODULE_PARM_DESC(rtw_channel_plan, "The default chplan ID when rtw_alpha2 is not specified or valid"); + +static uint rtw_excl_chs[MAX_CHANNEL_NUM_2G_5G] = CONFIG_RTW_EXCL_CHS; +static int rtw_excl_chs_num = 0; +module_param_array(rtw_excl_chs, uint, &rtw_excl_chs_num, 0644); +MODULE_PARM_DESC(rtw_excl_chs, "Exclusive channel list of 2G and 5G band"); + +#if CONFIG_IEEE80211_BAND_6GHZ +uint rtw_channel_plan_6g = CONFIG_RTW_CHPLAN_6G; +module_param(rtw_channel_plan_6g, uint, 0644); +MODULE_PARM_DESC(rtw_channel_plan_6g, "The default chplan_6g ID when rtw_alpha2 is not specified or valid"); + +static uint rtw_excl_chs_6g[MAX_CHANNEL_NUM_6G] = CONFIG_RTW_EXCL_CHS_6G; +static int rtw_excl_chs_6g_num = 0; +module_param_array(rtw_excl_chs_6g, uint, &rtw_excl_chs_6g_num, 0644); +MODULE_PARM_DESC(rtw_excl_chs_6g, "Exclusive channel list of 6G band"); +#endif /* CONFIG_IEEE80211_BAND_6GHZ */ + +char *rtw_dis_ch_flags = CONFIG_RTW_DIS_CH_FLAGS; +module_param(rtw_dis_ch_flags, charp, 0644); +MODULE_PARM_DESC(rtw_dis_ch_flags, "The flags with which channel is to be disabled"); + +static uint rtw_bcn_hint_valid_ms = CONFIG_RTW_BCN_HINT_VALID_MS; +module_param(rtw_bcn_hint_valid_ms, uint, 0644); +MODULE_PARM_DESC(rtw_bcn_hint_valid_ms, "The length of time beacon hint continue"); + +#ifdef CONFIG_80211D +static uint rtw_country_ie_slave_en_mode = CONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE; +module_param(rtw_country_ie_slave_en_mode, uint, 0644); +MODULE_PARM_DESC(rtw_country_ie_slave_en_mode, "802.11d country IE slave enable mode:" + " 0: disable, 1: enable, 2: enable when INIT/USER set world wide mode"); + +static uint rtw_country_ie_slave_flags = CONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS; +module_param(rtw_country_ie_slave_flags, uint, 0644); +MODULE_PARM_DESC(rtw_country_ie_slave_flags, "802.11d country IE slave flags:" + " BIT0: take intersection when having multiple received IEs, otherwise choose effected one from received IEs" + ", BIT1: consider all environment BSSs, otherwise associated BSSs only"); + +static uint rtw_country_ie_slave_en_role = CONFIG_RTW_COUNTRY_IE_SLAVE_EN_ROLE; +module_param(rtw_country_ie_slave_en_role, uint, 0644); +MODULE_PARM_DESC(rtw_country_ie_slave_en_role, "802.11d country IE slave enable role: BIT0:pure STA mode, BIT1:P2P group client"); + +static uint rtw_country_ie_slave_en_ifbmp = CONFIG_RTW_COUNTRY_IE_SLAVE_EN_IFBMP; +module_param(rtw_country_ie_slave_en_ifbmp, uint, 0644); +MODULE_PARM_DESC(rtw_country_ie_slave_en_ifbmp, "802.11d country IE slave enable iface bitmap"); + +static uint rtw_country_ie_slave_scan_int_ms = CONFIG_RTW_COUNTRY_IE_SLAVE_SCAN_INT_MS; +module_param(rtw_country_ie_slave_scan_int_ms, uint, 0644); +MODULE_PARM_DESC(rtw_country_ie_slave_scan_int_ms, "802.11d country IE slave auto scan interval in ms to find environment BSSs." + " 0: no environment BSS auto scan triggered by driver self"); +#endif + +uint rtw_edcca_mode_sel = CONFIG_RTW_EDCCA_MODE_SEL; +module_param(rtw_edcca_mode_sel, uint, 0644); +MODULE_PARM_DESC(rtw_edcca_mode_sel, "0:NORMAL, 1:CS, 2:ADPT, 3:CBP, 0xFF:auto"); + +uint rtw_adaptivity_en = CONFIG_RTW_ADAPTIVITY_EN; +module_param(rtw_adaptivity_en, uint, 0644); +MODULE_PARM_DESC(rtw_adaptivity_en, "0:disable, 1:enable, 2:auto"); + +uint rtw_adaptivity_mode = CONFIG_RTW_ADAPTIVITY_MODE; +module_param(rtw_adaptivity_mode, uint, 0644); +MODULE_PARM_DESC(rtw_adaptivity_mode, "0:normal, 1:carrier sense"); + +int rtw_adaptivity_th_l2h_ini = CONFIG_RTW_ADAPTIVITY_TH_L2H_INI; +module_param(rtw_adaptivity_th_l2h_ini, int, 0644); +MODULE_PARM_DESC(rtw_adaptivity_th_l2h_ini, "th_l2h_ini for Adaptivity"); + +int rtw_adaptivity_th_edcca_hl_diff = CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF; +module_param(rtw_adaptivity_th_edcca_hl_diff, int, 0644); +MODULE_PARM_DESC(rtw_adaptivity_th_edcca_hl_diff, "th_edcca_hl_diff for Adaptivity"); + +#ifdef CONFIG_DFS_MASTER +uint rtw_dfs_region_domain = CONFIG_RTW_DFS_REGION_DOMAIN; +module_param(rtw_dfs_region_domain, uint, 0644); +MODULE_PARM_DESC(rtw_dfs_region_domain, "0:NONE, 1:FCC, 2:MKK, 3:ETSI, 4:KCC"); +#endif + +static inline void rtw_regsty_load_chplan(struct registry_priv *regsty) +{ + u16 chplan = RTW_CHPLAN_UNSPECIFIED; + u16 chplan_6g = RTW_CHPLAN_6G_UNSPECIFIED; + + chplan = rtw_channel_plan; +#if CONFIG_IEEE80211_BAND_6GHZ + chplan_6g = rtw_channel_plan_6g; +#endif + + rtw_chplan_ioctl_input_mapping(&chplan, &chplan_6g); + + regsty->channel_plan = chplan; +#if CONFIG_IEEE80211_BAND_6GHZ + regsty->channel_plan_6g = chplan_6g; +#endif +} + +static inline void rtw_regsty_load_alpha2(struct registry_priv *regsty) +{ + if (!rtw_country_code || strlen(rtw_country_code) != 2 + || (!IS_ALPHA2_WORLDWIDE(rtw_country_code) + && (is_alpha(rtw_country_code[0]) == _FALSE + || is_alpha(rtw_country_code[1]) == _FALSE) + ) + ) { + if (rtw_country_code && rtw_country_code[0] != '\0') + RTW_ERR("%s discard rtw_country_code not in alpha2 or \"%s\"\n", __func__, WORLDWIDE_ALPHA2); + SET_UNSPEC_ALPHA2(regsty->alpha2); + } else + _rtw_memcpy(regsty->alpha2, rtw_country_code, 2); +} + +static void rtw_regsty_load_addl_ch_disable_conf(struct registry_priv *regsty) +{ + int i; + int ch_num = 0; + + if (rtw_dis_ch_flags && strlen(rtw_dis_ch_flags)) { + char *buf = rtw_malloc(strlen(rtw_dis_ch_flags) + 1); + + if (buf) { + char *c; + enum rtw_ch_type ch_type; + + _rtw_memcpy(buf, rtw_dis_ch_flags, strlen(rtw_dis_ch_flags) + 1); + for (c = strsep(&buf, ","); c; c = strsep(&buf, ",")) { + ch_type = get_ch_type_from_str(c, strlen(c)); + if (ch_type != RTW_CHT_NUM) + regsty->dis_ch_flags |= BIT(ch_type); + } + rtw_mfree(buf, strlen(rtw_dis_ch_flags) + 1); + } else + RTW_WARN("%s rtw_malloc(strlen(rtw_dis_ch_flags) fail\n", __func__); + } + + for (i = 0; i < MAX_CHANNEL_NUM_2G_5G; i++) + if (((u8)rtw_excl_chs[i]) != 0) + regsty->excl_chs[ch_num++] = (u8)rtw_excl_chs[i]; + + if (ch_num < MAX_CHANNEL_NUM_2G_5G) + regsty->excl_chs[ch_num] = 0; + +#if CONFIG_IEEE80211_BAND_6GHZ + ch_num = 0; + for (i = 0; i < MAX_CHANNEL_NUM_6G; i++) + if (((u8)rtw_excl_chs_6g[i]) != 0) + regsty->excl_chs_6g[ch_num++] = (u8)rtw_excl_chs_6g[i]; + + if (ch_num < MAX_CHANNEL_NUM_6G) + regsty->excl_chs_6g[ch_num] = 0; +#endif +} + +#ifdef CONFIG_80211D +static inline void rtw_regsty_load_country_ie_slave_settings(struct registry_priv *regsty) +{ + regsty->country_ie_slave_en_mode = rtw_country_ie_slave_en_mode; + regsty->country_ie_slave_flags = rtw_country_ie_slave_flags; + regsty->country_ie_slave_en_role = rtw_country_ie_slave_en_role; + regsty->country_ie_slave_en_ifbmp = rtw_country_ie_slave_en_ifbmp; + regsty->country_ie_slave_scan_int_ms = rtw_country_ie_slave_scan_int_ms; +} +#endif + +static void rtw_regsty_load_edcca_mode_settings(struct registry_priv *regsty) +{ + regsty->edcca_mode_sel = (u8)rtw_edcca_mode_sel; + if (regsty->edcca_mode_sel < RTW_EDCCA_MODE_NUM || regsty->edcca_mode_sel == RTW_EDCCA_AUTO) { + if (regsty->edcca_mode_sel == RTW_EDCCA_NORM) { + /* consider old interfaces */ + if (rtw_adaptivity_en == RTW_ADAPTIVITY_EN_ENABLE) { + if (rtw_adaptivity_mode == RTW_ADAPTIVITY_MODE_NORMAL) + regsty->edcca_mode_sel = RTW_EDCCA_ADAPT; + else if (rtw_adaptivity_mode == RTW_ADAPTIVITY_MODE_CARRIER_SENSE) + regsty->edcca_mode_sel = RTW_EDCCA_CS; + } else if (rtw_adaptivity_en == RTW_ADAPTIVITY_EN_AUTO) + regsty->edcca_mode_sel = RTW_EDCCA_AUTO; + } + } else { + RTW_WARN("%s invalid rtw_edcca_mode_sel(%u), set to %s\n", __func__ + , regsty->edcca_mode_sel, rtw_edcca_mode_str(RTW_EDCCA_NORM)); + regsty->edcca_mode_sel = RTW_EDCCA_NORM; + } + + regsty->adaptivity_th_l2h_ini = (s8)rtw_adaptivity_th_l2h_ini; + regsty->adaptivity_th_edcca_hl_diff = (s8)rtw_adaptivity_th_edcca_hl_diff; +} + +#ifdef CONFIG_DFS_MASTER +static void rtw_regsty_load_dfs_region_domain_settings(struct registry_priv *regsty) +{ + regsty->dfs_region_domain = (u8)rtw_dfs_region_domain; + if (regsty->dfs_region_domain >= RTW_DFS_REGD_NUM) { + RTW_WARN("%s invalid DFS region domain(%u), set to %s\n", __func__ + , regsty->dfs_region_domain, rtw_dfs_regd_str(RTW_DFS_REGD_NONE)); + regsty->dfs_region_domain = RTW_DFS_REGD_NONE; + return; + } + #ifdef CONFIG_REGD_SRC_FROM_OS + if (rtw_regd_src == REGD_SRC_OS && regsty->dfs_region_domain != RTW_DFS_REGD_NONE) { + RTW_WARN("%s force disable radar detection capability when regd_src is OS\n", __func__); + regsty->dfs_region_domain = RTW_DFS_REGD_NONE; + } + #endif +} +#endif + +uint rtw_load_registry(_adapter *adapter) +{ + uint status = _SUCCESS; + struct registry_priv *registry_par = &adapter->registrypriv; + +#ifdef CONFIG_AP_MODE + registry_par->max_ap_assoc_sta = (u8)rtw_max_ap_assoc_sta; +#endif /* CONFIG_AP_MODE */ + + rtw_regsty_load_edcca_mode_settings(registry_par); + +#ifdef CONFIG_REGD_SRC_FROM_OS + if (regd_src_is_valid(rtw_regd_src)) + registry_par->regd_src = (u8)rtw_regd_src; + else { + RTW_WARN("%s invalid rtw_regd_src(%u), use REGD_SRC_RTK_PRIV instead\n", __func__, rtw_regd_src); + registry_par->regd_src = REGD_SRC_RTK_PRIV; + } +#endif + registry_par->init_regd_always_apply = !!rtw_init_regd_always_apply; + registry_par->user_regd_always_apply = !!rtw_user_regd_always_apply; + rtw_regsty_load_alpha2(registry_par); + rtw_regsty_load_chplan(registry_par); + rtw_regsty_load_addl_ch_disable_conf(registry_par); + registry_par->bcn_hint_valid_ms = rtw_bcn_hint_valid_ms; +#ifdef CONFIG_80211D + rtw_regsty_load_country_ie_slave_settings(registry_par); +#endif + +#ifdef CONFIG_DFS_MASTER + rtw_regsty_load_dfs_region_domain_settings(registry_par); +#endif + + return status; +} + +static void rtw_cfg_edcca_mode_msg(void *sel, _adapter *adapter) +{ + struct registry_priv *regsty = &adapter->registrypriv; + + RTW_PRINT_SEL(sel, "RTW_EDCCA_"); + if (regsty->edcca_mode_sel == RTW_EDCCA_AUTO) + _RTW_PRINT_SEL(sel, "AUTO\n"); + else + _RTW_PRINT_SEL(sel, "%s\n", rtw_edcca_mode_str(regsty->edcca_mode_sel)); +} + +void rtw_cfg_adaptivity_config_msg(void *sel, _adapter *adapter) +{ + rtw_odm_adaptivity_ver_msg(sel, adapter); + rtw_cfg_edcca_mode_msg(sel, adapter); +} + +bool rtw_cfg_adaptivity_needed(_adapter *adapter) +{ + struct registry_priv *regsty = &adapter->registrypriv; + + return regsty->edcca_mode_sel != RTW_EDCCA_NORM; +} + diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_proc.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_proc.c index 79f9e5c27..58196a0e7 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_proc.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/rtw_proc.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -37,6 +37,8 @@ inline struct proc_dir_entry *get_rtw_drv_proc(void) #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)) #define PDE_DATA(inode) PDE((inode))->data #define proc_get_parent_data(inode) PDE((inode))->parent->data +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)) +#define PDE_DATA pde_data #endif #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)) @@ -297,6 +299,9 @@ const struct rtw_proc_hdl drv_proc_hdls[] = { #ifdef RTW_HALMAC RTW_PROC_HDL_SSEQ("halmac_info", proc_get_halmac_info, NULL), #endif /* RTW_HALMAC */ +#ifdef CONFIG_RTKM + RTW_PROC_HDL_SSEQ("rtkm", proc_get_rtkm_info, proc_set_rtkm_info), +#endif /* CONFIG_RTKM */ }; const int drv_proc_hdls_num = sizeof(drv_proc_hdls) / sizeof(struct rtw_proc_hdl); @@ -1228,13 +1233,15 @@ static ssize_t proc_set_rx_info_msg(struct file *file, const char __user *buffer struct net_device *dev = data; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct recv_priv *precvpriv = &(padapter->recvpriv); + struct recv_priv *precvpriv; char tmp[32] = {0}; int phy_info_flag = 0; if (!padapter) return -EFAULT; + precvpriv = &(padapter->recvpriv); + if (count < 1) { RTW_INFO("argument size is less than 1\n"); return -EFAULT; @@ -1552,7 +1559,7 @@ static int proc_get_chan_plan(struct seq_file *m, void *v) struct net_device *dev = m->private; _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); - dump_cur_chset(m, adapter_to_rfctl(adapter)); + dump_cur_chplan(m, adapter_to_rfctl(adapter)); return 0; } @@ -1630,6 +1637,44 @@ exit: return count; } +static int proc_get_chplan_confs(struct seq_file *m, void *v) +{ + struct net_device *dev = m->private; + _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); + struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); + + dump_cur_chplan_confs(m, rfctl); + + return 0; +} + +static ssize_t proc_set_chplan_confs(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data) +{ + struct net_device *dev = data; + _adapter *adapter = rtw_netdev_priv(dev); + char *tmp; + struct chplan_confs confs; + + if (!buffer || count < 1) + return -EFAULT; + + tmp = rtw_vmalloc(count + 1); + if (!tmp) + return -ENOMEM; + + if (copy_from_user(tmp, buffer, count)) + goto exit; + tmp[count] = '\0'; + + if (rtw_parse_chplan_confs_cmd_str(&confs, tmp)) + rtw_set_chplan_confs_cmd(adapter, RTW_CMDF_WAIT_ACK, &confs); + +exit: + rtw_vmfree(tmp, count + 1); + + return count; +} + static int cap_spt_op_class_ch_detail = 0; static int proc_get_cap_spt_op_class_ch(struct seq_file *m, void *v) @@ -1646,7 +1691,6 @@ static ssize_t proc_set_cap_spt_op_class_ch(struct file *file, const char __user struct net_device *dev = data; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); char tmp[32]; - int num; if (count < 1) return -EFAULT; @@ -1659,7 +1703,7 @@ static ssize_t proc_set_cap_spt_op_class_ch(struct file *file, const char __user if (!buffer || copy_from_user(tmp, buffer, count)) goto exit; - num = sscanf(tmp, "%d", &cap_spt_op_class_ch_detail); + sscanf(tmp, "%d", &cap_spt_op_class_ch_detail); exit: return count; @@ -1681,7 +1725,6 @@ static ssize_t proc_set_reg_spt_op_class_ch(struct file *file, const char __user struct net_device *dev = data; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); char tmp[32]; - int num; if (count < 1) return -EFAULT; @@ -1694,7 +1737,7 @@ static ssize_t proc_set_reg_spt_op_class_ch(struct file *file, const char __user if (!buffer || copy_from_user(tmp, buffer, count)) goto exit; - num = sscanf(tmp, "%d", ®_spt_op_class_ch_detail); + sscanf(tmp, "%d", ®_spt_op_class_ch_detail); exit: return count; @@ -1716,7 +1759,6 @@ static ssize_t proc_set_cur_spt_op_class_ch(struct file *file, const char __user struct net_device *dev = data; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); char tmp[32]; - int num; if (count < 1) return -EFAULT; @@ -1729,7 +1771,7 @@ static ssize_t proc_set_cur_spt_op_class_ch(struct file *file, const char __user if (!buffer || copy_from_user(tmp, buffer, count)) goto exit; - num = sscanf(tmp, "%d", &cur_spt_op_class_ch_detail); + sscanf(tmp, "%d", &cur_spt_op_class_ch_detail); exit: return count; @@ -1749,7 +1791,7 @@ ssize_t proc_set_macaddr_acl(struct file *file, const char __user *buffer, size_ { struct net_device *dev = data; _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); - char tmp[17 * NUM_ACL + 32] = {0}; + char *tmp = NULL; u8 period; char cmd[32]; u8 mode; @@ -1772,9 +1814,14 @@ ssize_t proc_set_macaddr_acl(struct file *file, const char __user *buffer, size_ if (count < 1) return -EFAULT; - if (count > sizeof(tmp)) { + tmp = (char *) rtw_zmalloc(17 * NUM_ACL + 32); + if (!tmp) + return -ENOMEM; + + if (count > (17 * NUM_ACL + 32)) { rtw_warn_on(1); - return -EFAULT; + count = -EFAULT; + goto exit; } if (buffer && !copy_from_user(tmp, buffer, count)) { @@ -1868,6 +1915,8 @@ ssize_t proc_set_macaddr_acl(struct file *file, const char __user *buffer, size_ } exit: + if (tmp) + rtw_mfree(tmp, 17 * NUM_ACL + 32); return count; } #endif /* CONFIG_RTW_MACADDR_ACL */ @@ -2002,49 +2051,6 @@ exit: } #ifdef CONFIG_80211D -static int proc_get_country_ie_slave_en_conds(struct seq_file *m, void *v) -{ - struct net_device *dev = m->private; - _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - - RTW_PRINT_SEL(m, "%-4s %-5s\n", "role", "ifbmp"); - RTW_PRINT_SEL(m, "0x%02x 0x%02x\n" - , rfctl->country_ie_slave_en_role - , rfctl->country_ie_slave_en_ifbmp - ); - - return 0; -} - -static ssize_t proc_set_country_ie_slave_en_conds(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data) -{ - struct net_device *dev = data; - _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); - char tmp[32]; - - if (count < 1) - return -EFAULT; - - if (count > sizeof(tmp)) { - rtw_warn_on(1); - return -EFAULT; - } - - if (buffer && !copy_from_user(tmp, buffer, count)) { - u8 role, ifbmp; - int num = sscanf(tmp, "%hhx %hhx", &role, &ifbmp); - - if (num >= 1) - rfctl->country_ie_slave_en_role = role; - if (num >= 2) - rfctl->country_ie_slave_en_ifbmp = ifbmp; - } - - return count; -} - static int proc_get_country_ie_slave_records(struct seq_file *m, void *v) { struct net_device *dev = m->private; @@ -2106,11 +2112,9 @@ ssize_t proc_set_update_non_ocp(struct file *file, const char __user *buffer, si { struct net_device *dev = data; _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); - struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter); char tmp[32]; - u8 ch, bw = CHANNEL_WIDTH_20, offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + u8 band, ch, bw = CHANNEL_WIDTH_20, offset = CHAN_OFFSET_NO_EXT; int ms = -1; - bool updated = 0; if (count < 1) return -EFAULT; @@ -2122,23 +2126,12 @@ ssize_t proc_set_update_non_ocp(struct file *file, const char __user *buffer, si if (buffer && !copy_from_user(tmp, buffer, count)) { - int num = sscanf(tmp, "%hhu %hhu %hhu %d", &ch, &bw, &offset, &ms); + int num = sscanf(tmp, "%hhu %hhu %hhu %hhu %d", &band, &ch, &bw, &offset, &ms); - if (num < 1 || (bw != CHANNEL_WIDTH_20 && num < 3)) + if (num < 1 || (bw != CHANNEL_WIDTH_20 && num < 4)) goto exit; - if (bw == CHANNEL_WIDTH_20) - updated = rtw_chset_update_non_ocp_ms(rfctl->channel_set - , ch, bw, HAL_PRIME_CHNL_OFFSET_DONT_CARE, ms); - else - updated = rtw_chset_update_non_ocp_ms(rfctl->channel_set - , ch, bw, offset, ms); - - if (updated) { - u8 cch = rtw_get_center_ch(ch, bw, offset); - - rtw_nlrtw_nop_start_event(adapter, cch, bw); - } + rtw_rfctl_force_update_non_ocp_ms(adapter_to_rfctl(adapter), band, ch, bw, offset, ms); } exit: @@ -2296,8 +2289,11 @@ static ssize_t proc_set_dfs_slave_with_rd(struct file *file, const char __user * rd = rd ? 1 : 0; if (rfctl->dfs_slave_with_rd != rd) { + int i; + rfctl->dfs_slave_with_rd = rd; - rtw_dfs_rd_en_decision_cmd(adapter); + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) + rtw_dfs_rd_en_decision_cmd(adapter_to_dvobj(adapter), i); } exit: @@ -2404,7 +2400,7 @@ static ssize_t proc_set_udpport(struct file *file, const char __user *buffer, si { struct net_device *dev = data; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - struct recv_priv *precvpriv = &(padapter->recvpriv); + struct recv_priv *precvpriv; int sink_udpport = 0; char tmp[32]; @@ -2412,6 +2408,8 @@ static ssize_t proc_set_udpport(struct file *file, const char __user *buffer, si if (!padapter) return -EFAULT; + precvpriv = &(padapter->recvpriv); + if (count < 1) { RTW_INFO("argument size is less than 1\n"); return -EFAULT; @@ -2433,6 +2431,9 @@ static ssize_t proc_set_udpport(struct file *file, const char __user *buffer, si } precvpriv->sink_udpport = sink_udpport; + precvpriv->pre_rtp_rxseq = 0; + precvpriv->cur_rtp_rxseq = 0; + precvpriv->rtp_drop_count = 0; return count; @@ -2804,7 +2805,7 @@ static void rtw_set_tx_bw_mode(struct _ADAPTER *adapter, u8 bw_mode) for (i = 0; i < MACID_NUM_SW_LIMIT; i++) { sta = macid_ctl->sta[i]; if (sta && !is_broadcast_mac_addr(sta->cmn.mac_addr)) - rtw_dm_ra_mask_wk_cmd(adapter, (u8 *)sta); + rtw_dm_ra_mask_wk_cmd(adapter, sta); } } } @@ -2840,12 +2841,15 @@ exit: static int proc_get_hal_txpwr_info(struct seq_file *m, void *v) { -#ifdef CONFIG_TXPWR_PG_WITH_PWR_IDX struct net_device *dev = m->private; _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); +#ifdef CONFIG_TXPWR_PG_WITH_PWR_IDX struct hal_spec_t *hal_spec = GET_HAL_SPEC(adapter); +#endif + RTW_PRINT_SEL(m, "txpwr_pg_mode: %s\n", txpwr_pg_mode_str(hal_data->txpwr_pg_mode)); +#ifdef CONFIG_TXPWR_PG_WITH_PWR_IDX if (hal_data->txpwr_pg_mode == TXPWR_PG_WITH_PWR_IDX) { if (hal_is_band_support(adapter, BAND_ON_2_4G)) dump_hal_txpwr_info_2g(m, adapter, hal_spec->rfpath_num_2g, hal_data->max_tx_cnt); @@ -2897,7 +2901,7 @@ static int proc_get_tpc_settings(struct seq_file *m, void *v) struct net_device *dev = m->private; _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); - dump_txpwr_tpc_settings(m, adapter); + dump_txpwr_tpc_settings(m, adapter_to_dvobj(adapter)); return 0; } @@ -2932,7 +2936,7 @@ static ssize_t proc_set_tpc_settings(struct file *file, const char __user *buffe rfctl->tpc_mode = mode; if (rtw_get_hw_init_completed(adapter)) - rtw_run_in_thread_cmd_wait(adapter, ((void *)(rtw_hal_update_txpwr_level)), adapter, 2000); + rtw_run_in_thread_cmd_wait(adapter, ((void *)(rtw_update_txpwr_level_all_hwband)), adapter_to_dvobj(adapter), 2000); } return count; @@ -2972,7 +2976,7 @@ static ssize_t proc_set_antenna_gain(struct file *file, const char __user *buffe rfctl->antenna_gain = gain; if (rtw_get_hw_init_completed(adapter)) - rtw_run_in_thread_cmd_wait(adapter, ((void *)(rtw_hal_update_txpwr_level)), adapter, 2000); + rtw_run_in_thread_cmd_wait(adapter, ((void *)(rtw_update_txpwr_level_all_hwband)), adapter_to_dvobj(adapter), 2000); } return count; @@ -2983,7 +2987,7 @@ static int proc_get_tx_power_ext_info(struct seq_file *m, void *v) struct net_device *dev = m->private; _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); - dump_tx_power_ext_info(m, adapter); + dump_tx_power_ext_info(m, adapter_to_dvobj(adapter)); return 0; } @@ -3021,7 +3025,7 @@ static ssize_t proc_set_tx_power_ext_info(struct file *file, const char __user * else rtw_run_in_thread_cmd(adapter, ((void *)(phy_reload_tx_power_ext_info)), adapter); - rtw_run_in_thread_cmd_wait(adapter, ((void *)(rtw_hal_update_txpwr_level)), adapter, 2000); + rtw_run_in_thread_cmd_wait(adapter, ((void *)(rtw_update_txpwr_level_all_hwband)), adapter_to_dvobj(adapter), 2000); clear_ps_deny: rtw_ps_deny_cancel(adapter, PS_DENY_IOCTL); @@ -3077,7 +3081,7 @@ static int proc_get_tx_power_idx(struct seq_file *m, void *v) RTW_INFO("%s path=%u, rs=%u\n", __func__, path, rs); if (path == RF_PATH_A && rs == CCK) - dump_tx_power_idx_title(m, adapter, bw, cch, 0); + dump_tx_power_idx_title(m, adapter, bw, 0, 0); dump_tx_power_idx_by_path_rs(m, adapter, path, rs, bw, cch, 0); return 0; @@ -3156,7 +3160,7 @@ static int proc_get_txpwr_total_dbm(struct seq_file *m, void *v) u8 cch = hal_data->current_channel; if (rs == CCK) - dump_txpwr_total_dbm_title(m, adapter, bw, cch, 0); + dump_txpwr_total_dbm_title(m, adapter, bw, 0, 0); dump_txpwr_total_dbm_by_rs(m, adapter, rs, bw, cch, 0); return 0; @@ -3740,7 +3744,8 @@ ssize_t proc_set_btc_reduce_wl_txpwr(struct file *file, const char __user *buffe num = sscanf(tmp, "%d", &val); - if ((IS_HARDWARE_TYPE_8822C(padapter)) && (hal_data->EEPROMBluetoothCoexist == _TRUE)) + if ((IS_HARDWARE_TYPE_8822C(padapter) || IS_HARDWARE_TYPE_8822E(padapter)) + && (hal_data->EEPROMBluetoothCoexist == _TRUE)) rtw_btc_reduce_wl_txpwr_cmd(padapter, val); return count; @@ -4068,8 +4073,9 @@ static int proc_get_napi_info(struct seq_file *m, void *v) struct registry_priv *pregistrypriv = &adapter->registrypriv; u8 napi = 0, gro = 0; u32 weight = 0; - struct dvobj_priv *d; - d = adapter_to_dvobj(adapter); +#ifdef CONFIG_RTW_NAPI_DYNAMIC + struct dvobj_priv *d = adapter_to_dvobj(adapter); +#endif /* CONFIG_RTW_NAPI_DYNAMIC */ #ifdef CONFIG_RTW_NAPI @@ -4101,7 +4107,6 @@ static int proc_get_napi_info(struct seq_file *m, void *v) RTW_PRINT_SEL(m, "GRO %s\n", gro?"enable":"disable"); return 0; - } #ifdef CONFIG_RTW_NAPI_DYNAMIC @@ -5437,8 +5442,9 @@ const struct rtw_proc_hdl adapter_proc_hdls[] = { #ifdef CONFIG_RTW_MBO RTW_PROC_HDL_SSEQ("non_pref_ch", rtw_mbo_proc_non_pref_chans_get, rtw_mbo_proc_non_pref_chans_set), RTW_PROC_HDL_SSEQ("cell_data", rtw_mbo_proc_cell_data_get, rtw_mbo_proc_cell_data_set), + RTW_PROC_HDL_SSEQ("mbo_attr", rtw_mbo_proc_attr_get, rtw_mbo_proc_attr_set), #endif -#ifdef CONFIG_RTW_80211R +#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R) RTW_PROC_HDL_SSEQ("ft_flags", rtw_ft_proc_flags_get, rtw_ft_proc_flags_set), #endif RTW_PROC_HDL_SSEQ("defs_param", proc_get_defs_param, proc_set_defs_param), @@ -5601,7 +5607,13 @@ const struct rtw_proc_hdl adapter_proc_hdls[] = { #ifdef CONFIG_WOW_KEEP_ALIVE_PATTERN RTW_PROC_HDL_SSEQ("wow_keep_alive_info", proc_dump_wow_keep_alive_info, NULL), #endif /*CONFIG_WOW_KEEP_ALIVE_PATTERN*/ - +#ifdef CONFIG_MDNS_OFFLOAD + RTW_PROC_HDL_SSEQ("wow_mdns_resp", proc_get_wow_mdns_resp, proc_set_wow_mdns_resp), + RTW_PROC_HDL_SSEQ("wow_mdns_match_criteria", proc_get_wow_mdns_match_criteria, proc_set_wow_mdns_match_criteria), + RTW_PROC_HDL_SSEQ("wow_mdns_passthru_list", proc_get_wow_mdns_passthru_list, proc_set_wow_mdns_passthru_list), + RTW_PROC_HDL_SSEQ("wow_mdns_offload_state", proc_get_wow_mdns_offload_state, proc_set_wow_mdns_offload_state), + RTW_PROC_HDL_SSEQ("wow_mdns_passthru_behavior", proc_get_wow_mdns_passthru_behavior, proc_set_wow_mdns_passthru_behavior), +#endif #endif #ifdef CONFIG_GPIO_WAKEUP @@ -5612,6 +5624,7 @@ const struct rtw_proc_hdl adapter_proc_hdls[] = { #endif RTW_PROC_HDL_SSEQ("country_code", proc_get_country_code, proc_set_country_code), RTW_PROC_HDL_SSEQ("chan_plan", proc_get_chan_plan, proc_set_chan_plan), + RTW_PROC_HDL_SSEQ("chplan_confs", proc_get_chplan_confs, proc_set_chplan_confs), RTW_PROC_HDL_SSEQ("cap_spt_op_class_ch", proc_get_cap_spt_op_class_ch, proc_set_cap_spt_op_class_ch), RTW_PROC_HDL_SSEQ("reg_spt_op_class_ch", proc_get_reg_spt_op_class_ch, proc_set_reg_spt_op_class_ch), RTW_PROC_HDL_SSEQ("cur_spt_op_class_ch", proc_get_cur_spt_op_class_ch, proc_set_cur_spt_op_class_ch), @@ -5623,7 +5636,6 @@ const struct rtw_proc_hdl adapter_proc_hdls[] = { #endif RTW_PROC_HDL_SSEQ("ch_sel_policy", proc_get_ch_sel_policy, proc_set_ch_sel_policy), #ifdef CONFIG_80211D - RTW_PROC_HDL_SSEQ("country_ie_slave_en_conds", proc_get_country_ie_slave_en_conds, proc_set_country_ie_slave_en_conds), RTW_PROC_HDL_SSEQ("country_ie_slave_records", proc_get_country_ie_slave_records, NULL), #endif #ifdef CONFIG_DFS_MASTER @@ -5692,9 +5704,8 @@ const struct rtw_proc_hdl adapter_proc_hdls[] = { #ifdef CONFIG_BACKGROUND_NOISE_MONITOR RTW_PROC_HDL_SSEQ("noise_monitor", proc_get_nm, proc_set_nm), #endif - -#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER - RTW_PROC_HDL_SSEQ("rtkm_info", proc_get_rtkm_info, NULL), +#if defined(CONFIG_RTKM) && defined(CONFIG_PREALLOC_RX_SKB_BUFFER) + RTW_PROC_HDL_SSEQ("rtkm_skb", proc_get_rtkm_skb, NULL), #endif RTW_PROC_HDL_SSEQ("efuse_map", proc_get_efuse_map, NULL), #ifdef CONFIG_IEEE80211W diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/sdio_intf.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/sdio_intf.c index 42446ac7f..022c70ae9 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/sdio_intf.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/sdio_intf.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2019 Realtek Corporation. + * Copyright(c) 2007 - 2022 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -34,6 +34,10 @@ #include /* rtl8723fs_set_hal_ops() */ #endif /* CONFIG_RTL8723F */ +#ifdef CONFIG_RTL8822E +#include +#endif /* CONFIG_RTL8822E */ + #ifdef CONFIG_PLATFORM_INTEL_BYT #ifdef CONFIG_ACPI #include @@ -98,13 +102,17 @@ static const struct sdio_device_id sdio_ids[] = { #endif #ifdef CONFIG_RTL8822C - {SDIO_DEVICE(0x024c, 0xC822), .class = SDIO_CLASS_WLAN, .driver_data = RTL8822C}, - {SDIO_DEVICE(0x024c, 0xD821), .class = SDIO_CLASS_WLAN, .driver_data = RTL8822C}, /* 8821DS */ + {.vendor = 0x024c, .device = 0xC822, .class = SDIO_CLASS_WLAN, .driver_data = RTL8822C}, + {.vendor = 0x024c, .device = 0xD821, .class = SDIO_CLASS_WLAN, .driver_data = RTL8822C}, /* 8821DS */ #endif #ifdef CONFIG_RTL8723F - {SDIO_DEVICE(0x024c, 0xB733), .class = SDIO_CLASS_WLAN, .driver_data = RTL8723F}, /* SDIO+UART */ - {SDIO_DEVICE(0x024c, 0xB73A), .class = SDIO_CLASS_WLAN, .driver_data = RTL8723F}, /* SDIO multi */ + {.vendor = 0x024c, .device = 0xB733, .class = SDIO_CLASS_WLAN, .driver_data = RTL8723F}, /* SDIO+UART */ + {.vendor = 0x024c, .device = 0xB73A, .class = SDIO_CLASS_WLAN, .driver_data = RTL8723F}, /* SDIO multi */ +#endif + +#ifdef CONFIG_RTL8822E + {.vendor = 0x024c, .device = 0xA822, .class = SDIO_CLASS_WLAN, .driver_data = RTL8822E}, #endif #if defined(RTW_ENABLE_WIFI_CONTROL_FUNC) /* temporarily add this to accept all sdio wlan id */ @@ -293,6 +301,42 @@ static void gpio_hostwakeup_free_irq(PADAPTER padapter) } #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) +/* + * mmc_blksz_for_byte_mode() & mmc_card_broken_byte_mode_512() has been moved + * to drivers/mmc/core/card.h from include/linux/mmc/card.h since kernel v4.11. + */ +static inline int mmc_blksz_for_byte_mode(const struct mmc_card *c) +{ + return c->quirks & MMC_QUIRK_BLKSZ_FOR_BYTE_MODE; +} + +static inline int mmc_card_broken_byte_mode_512(const struct mmc_card *c) +{ + return c->quirks & MMC_QUIRK_BROKEN_BYTE_MODE_512; +} +#endif /* kernel >= v4.11 */ + +/* + * Calculate the maximum byte mode transfer size + */ +static inline unsigned int sdio_max_byte_size(struct sdio_func *func) +{ + unsigned mval = func->card->host->max_blk_size; + + if (mmc_blksz_for_byte_mode(func->card)) + mval = min(mval, func->cur_blksize); + else + mval = min(mval, func->max_blksize); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0) + if (mmc_card_broken_byte_mode_512(func->card)) + return min(mval, 511u); +#endif /* kernel v3.3 */ + + return min(mval, 512u); /* maximum size for byte mode */ +} + void dump_sdio_card_info(void *sel, struct dvobj_priv *dvobj) { PSDIO_DATA psdio_data = &dvobj->intf_data; @@ -369,6 +413,8 @@ void dump_sdio_card_info(void *sel, struct dvobj_priv *dvobj) , psdio_data->func == card->sdio_func[i] ? " (*)" : ""); } + RTW_PRINT_SEL(sel, " max_byte_size: %u\n", psdio_data->max_byte_size); + RTW_PRINT_SEL(sel, "================\n"); } @@ -521,6 +567,8 @@ u32 sdio_init(struct dvobj_priv *dvobj) psdio_data->sd3_bus_mode = _TRUE; #endif + psdio_data->max_byte_size = sdio_max_byte_size(func); + #ifdef DBG_SDIO sdio_dbg_init(dvobj); #endif /* DBG_SDIO */ @@ -660,6 +708,14 @@ static void rtw_decide_chip_type_by_device_id(struct dvobj_priv *dvobj, const st RTW_INFO("CHIP TYPE: RTL8723F\n"); } #endif + +#if defined(CONFIG_RTL8822E) + if (dvobj->chip_type == RTL8822E) { + dvobj->HardwareType = HARDWARE_TYPE_RTL8822ES; + RTW_INFO("CHIP TYPE: RTL8822E\n"); + } +#endif + } static struct dvobj_priv *sdio_dvobj_init(struct sdio_func *func, const struct sdio_device_id *pdid) @@ -787,6 +843,11 @@ u8 rtw_set_hal_ops(PADAPTER padapter) rtl8723fs_set_hal_ops(padapter); #endif +#if defined(CONFIG_RTL8822E) + if (rtw_get_chip_type(padapter) == RTL8822E) + rtl8822es_set_hal_ops(padapter); +#endif + if (rtw_hal_ops_check(padapter) == _FAIL) return _FAIL; @@ -861,6 +922,7 @@ _adapter *rtw_sdio_primary_adapter_init(struct dvobj_priv *dvobj) #else padapter->hw_port = HW_PORT0; #endif + padapter->adapter_link.adapter = padapter; /* 3 3. init driver special setting, interface, OS and hardware relative */ @@ -1103,6 +1165,7 @@ static int rtw_drv_init( status = _SUCCESS; + goto exit; #if (CONFIG_RTW_SDIO_RELEASE_IRQ <= 1) os_ndevs_deinit: @@ -1191,11 +1254,13 @@ static void rtw_dev_remove(struct sdio_func *func) #ifdef CONFIG_SDIO_HOOK_DEV_SHUTDOWN static void rtw_dev_shutdown(struct device *dev) { - struct sdio_func *func = dev_to_sdio_func(dev); + struct sdio_func *func; - if (func == NULL) + if (dev == NULL) return; + func = dev_to_sdio_func(dev); + RTW_INFO("==> %s !\n", __func__); rtw_dev_remove(func); @@ -1225,9 +1290,6 @@ static int rtw_sdio_suspend(struct device *dev) return ret; func = dev_to_sdio_func(dev); - if(func == NULL) - return ret; - psdpriv = sdio_get_drvdata(func); if (psdpriv == NULL) goto exit; @@ -1340,6 +1402,15 @@ static int __init rtw_drv_entry(void) RTW_PRINT(DRV_NAME" BT-Coex version = %s\n", BTCOEXVERSION); #endif /* BTCOEXVERSION */ +#if (defined(CONFIG_RTKM) && defined(CONFIG_RTKM_BUILT_IN)) + ret = rtkm_prealloc_init(); + if (ret) { + RTW_INFO("%s: pre-allocate memory failed!!(%d)\n", __FUNCTION__, + ret); + goto exit; + } +#endif /* CONFIG_RTKM */ + #ifndef CONFIG_PLATFORM_INTEL_BYT rtw_android_wifictrl_func_add(); #endif /* !CONFIG_PLATFORM_INTEL_BYT */ @@ -1410,6 +1481,12 @@ static void __exit rtw_drv_halt(void) RTW_PRINT("module exit success\n"); rtw_mstat_dump(RTW_DBGDUMP); + +#if (defined(CONFIG_RTKM) && defined(CONFIG_RTKM_BUILT_IN)) + rtkm_prealloc_destroy(); +#elif (defined(CONFIG_RTKM) && defined(CONFIG_RTKM_STANDALONE)) + rtkm_dump_mstatus(RTW_DBGDUMP); +#endif /* CONFIG_RTKM */ } #ifdef CONFIG_PLATFORM_INTEL_BYT diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/wifi_regd.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/wifi_regd.c index ea45dc491..ad394ebac 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/wifi_regd.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/wifi_regd.c @@ -16,33 +16,200 @@ #include #ifdef CONFIG_IOCTL_CFG80211 -void rtw_chset_hook_os_channels(struct rf_ctl_t *rfctl) +#if !RTW_PER_ADAPTER_WIPHY +void rtw_chset_hook_os_channels(struct rtw_chset *chset, void *os_ref) { - struct wiphy *wiphy = dvobj_to_wiphy(rfctl_to_dvobj(rfctl)); - RT_CHANNEL_INFO *channel_set = rfctl->channel_set; - u8 max_chan_nums = rfctl->max_chan_nums; + struct wiphy *wiphy = os_ref; struct ieee80211_channel *ch; unsigned int i; - u16 channel; u32 freq; - for (i = 0; i < max_chan_nums; i++) { - channel = channel_set[i].ChannelNum; - #if CONFIG_IEEE80211_BAND_6GHZ - if (channel_set[i].band == BAND_ON_6G) - continue; /* TODO: wiphy with 6G band */ - else - #endif - freq = rtw_ch2freq(channel); + for (i = 0; i < chset->chs_len; i++) { + freq = rtw_bch2freq(chset->chs[i].band, chset->chs[i].ChannelNum); ch = ieee80211_get_channel(wiphy, freq); - if (!ch) { - rtw_warn_on(1); - continue; - } - - channel_set[i].os_chan = ch; + if (!ch) + RTW_WARN(FUNC_WIPHY_FMT" can't get %s ch%u\n", FUNC_WIPHY_ARG(wiphy), band_str(chset->chs[i].band), chset->chs[i].ChannelNum); + chset->chs[i].os_chan = ch; } } +#endif + +#if CONFIG_RTW_CFG80211_CAC_EVENT +static void rtw_regd_set_du_chdef(struct wiphy *wiphy) +{ + struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); + struct rtw_chset *chset = dvobj_to_chset(wiphy_to_dvobj(wiphy)); + struct ieee80211_channel *ch = NULL; + int i; + + for (i = 0; i < chset->chs_len; i++) { + if (chset->chs[i].os_chan) { + ch = chset->chs[i].os_chan; + break; + } + } + + if (ch) { + wiphy_data->du_chdef.chan = ch; + wiphy_data->du_chdef.width = NL80211_CHAN_WIDTH_20; + wiphy_data->du_chdef.center_freq1 = ch->center_freq; + } +} + +static int rtw_du_wdev_ndev_open(struct net_device *ndev) +{ + return -EPERM; +} + +static const struct net_device_ops rtw_du_wdev_ndev_ops = { + .ndo_open = rtw_du_wdev_ndev_open, +}; + +static struct wireless_dev *rtw_regd_alloc_du_wdev(struct wiphy *wiphy) +{ + struct rtw_netdev_priv_indicator *npi; + struct net_device *ndev = NULL; + struct wireless_dev *wdev = NULL; + int ret = 0; + + ndev = alloc_etherdev(sizeof(struct rtw_netdev_priv_indicator)); + if (!ndev) { + RTW_WARN(FUNC_WIPHY_FMT" allocate ndev fail\n", FUNC_WIPHY_ARG(wiphy)); + ret = -ENOMEM; + goto out; + } + + snprintf(ndev->name, IFNAMSIZ, "%s-du", wiphy_name(wiphy)); + + ndev->priv_destructor = rtw_ndev_destructor; + ndev->netdev_ops = &rtw_du_wdev_ndev_ops; + + npi = netdev_priv(ndev); + npi->priv = wiphy_to_adapter(wiphy); + npi->sizeof_priv = sizeof(_adapter); + + wdev = rtw_zmalloc(sizeof(struct wireless_dev)); + if (!wdev) { + RTW_WARN(FUNC_WIPHY_FMT" allocate wdev fail\n", FUNC_WIPHY_ARG(wiphy)); + ret = -ENOMEM; + goto out; + } + + wdev->wiphy = wiphy; + wdev->netdev = ndev; + wdev->iftype = NL80211_IFTYPE_AP; + ndev->ieee80211_ptr = wdev; + + ret = register_netdevice(ndev); + +out: + if (ret && wdev) { + rtw_mfree(wdev, sizeof(struct wireless_dev)); + wdev = NULL; + } + + if (ret && ndev) + free_netdev(ndev); + + return wdev; +} + +void rtw_regd_free_du_wdev(struct wiphy *wiphy) +{ + struct dvobj_priv *dvobj = wiphy_to_dvobj(wiphy); + struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); + u8 rtnl_lock_needed; + + if (!wiphy_data->du_wdev) + goto exit; + + rtnl_lock_needed = rtw_rtnl_lock_needed(dvobj); + if (rtnl_lock_needed) + rtnl_lock(); + + unregister_netdevice(wiphy_data->du_wdev->netdev); + + if (rtnl_lock_needed) + rtnl_unlock(); + + wiphy_data->du_wdev = NULL; + +exit: + return; +} + +static void rtw_regd_schedule_dfs_chan_update(struct wiphy *wiphy) +{ + struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) + unsigned int link_id = 0; /*TBD*/ + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) + u16 punct_bitmap = 0; /*TBD*/ + #endif +#endif + + if (!wiphy_data->du_wdev) { + wiphy_data->du_wdev = rtw_regd_alloc_du_wdev(wiphy); + if (!wiphy_data->du_wdev) + return; + rtw_regd_set_du_chdef(wiphy); + } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) || defined(CONFIG_MLD_KERNEL_PATCH) + cfg80211_ch_switch_notify(wiphy_data->du_wdev->netdev, &wiphy_data->du_chdef, + link_id, punct_bitmap); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) + cfg80211_ch_switch_notify(wiphy_data->du_wdev->netdev, &wiphy_data->du_chdef, link_id); +#else + cfg80211_ch_switch_notify(wiphy_data->du_wdev->netdev, &wiphy_data->du_chdef); +#endif +} + +static void rtw_regd_override_dfs_state(struct wiphy *wiphy, struct get_chplan_resp *chplan, bool non_ocp_only) +{ + RT_CHANNEL_INFO *chinfo; + struct ieee80211_channel *chan; + int i; + u8 beaconing_hwband_bmp = 0; + bool update = false; + + for (i = HW_BAND_0; i < HW_BAND_MAX; i++) + if (HWBAND_AP_NUM(wiphy_to_dvobj(wiphy), i) || HWBAND_MESH_NUM(wiphy_to_dvobj(wiphy), i)) + beaconing_hwband_bmp |= BIT(i); + + for (i = 0; i < chplan->chs_len; i++) { + if (chplan->chs[i].flags & RTW_CHF_DIS) + continue; + chinfo = &chplan->chs[i]; + chan = chinfo->os_chan; + if (!chan) + continue; + + if (CH_IS_NON_OCP(chinfo) + && (chan->dfs_state != NL80211_DFS_UNAVAILABLE + || chan->dfs_state_entered != chinfo->non_ocp_end_time - rtw_ms_to_systime(IEEE80211_DFS_MIN_NOP_TIME_MS)) + ) { + chan->dfs_state = NL80211_DFS_UNAVAILABLE; + chan->dfs_state_entered = chinfo->non_ocp_end_time + - rtw_ms_to_systime(IEEE80211_DFS_MIN_NOP_TIME_MS); + update = true; + } + if (non_ocp_only) + continue; + + if (chinfo->cac_done && beaconing_hwband_bmp + && chan->dfs_state != NL80211_DFS_AVAILABLE + ) { + chan->dfs_state = NL80211_DFS_AVAILABLE; + update = true; + } + } + + if (update) { + /* trigger cfg80211_sched_dfs_chan_update() */ + rtw_regd_schedule_dfs_chan_update(wiphy); + } +} +#endif /* CONFIG_RTW_CFG80211_CAC_EVENT */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) bool rtw_regd_is_wiphy_self_managed(struct wiphy *wiphy) @@ -51,18 +218,18 @@ bool rtw_regd_is_wiphy_self_managed(struct wiphy *wiphy) || !REGSTY_REGD_SRC_FROM_OS(dvobj_to_regsty(wiphy_to_dvobj(wiphy))); } -static struct ieee80211_reg_rule rtw_get_ieee80211_reg_rule(struct get_chplan_resp *chplan, BAND_TYPE band, int last_end_freq, int start_freq, int end_freq, int next_start_freq, u32 flags) +static struct ieee80211_reg_rule rtw_get_ieee80211_reg_rule(struct get_chplan_resp *chplan, enum band_type band, int last_end_freq, int start_freq, int end_freq, int next_start_freq, u32 flags) { struct ieee80211_reg_rule rule = REG_RULE( start_freq - 10, end_freq + 10, 20, 6, 20, ((flags & RTW_CHF_NO_IR) ? NL80211_RRF_NO_IR : 0) - //| ((flags & RTW_CHF_DFS) ? NL80211_RRF_DFS : 0) /* TODO: DFS */ + | ((flags & RTW_CHF_DFS) ? NL80211_RRF_DFS : 0) ); int regd_max_bw = 160; int frange_max_bw = 160; - if (!(chplan->proto_en & CHPLAN_PROTO_EN_AC) || band == BAND_ON_2_4G) + if (!(chplan->proto_en & CHPLAN_PROTO_EN_AC) || band == BAND_ON_24G) regd_max_bw = 40; /* TODO: !RFCTL_REG_EN_11HT(rfctl) limit to 20MHz */ @@ -94,10 +261,10 @@ static int rtw_build_wiphy_regd(struct wiphy *wiphy, struct get_chplan_resp *chp { int i; RT_CHANNEL_INFO *chinfo; - BAND_TYPE start_band, band; + enum band_type start_band, band; int last_end_freq, start_freq, end_freq, freq; u32 start_flags, flags; - struct ieee80211_regdomain *r; + struct ieee80211_regdomain *r = NULL; int rule_num = 0; bool build = 0; @@ -107,16 +274,25 @@ static int rtw_build_wiphy_regd(struct wiphy *wiphy, struct get_chplan_resp *chp loop: start_band = BAND_MAX; last_end_freq = 0; - for (i = 0; i < chplan->chset_num; i++) { - chinfo = &chplan->chset[i]; - freq = rtw_ch2freq_by_band(chinfo->band, chinfo->ChannelNum); + for (i = 0; i < chplan->chs_len; i++) { + if (chplan->chs[i].flags & RTW_CHF_DIS) + continue; + chinfo = &chplan->chs[i]; + freq = rtw_bch2freq(chinfo->band, chinfo->ChannelNum); if (!freq) { - RTW_WARN(FUNC_WIPHY_FMT" rtw_ch2freq_by_band(%s, %u) fail\n" + RTW_WARN(FUNC_WIPHY_FMT" rtw_bch2freq(%s, %u) fail\n" , FUNC_WIPHY_ARG(wiphy), band_str(chinfo->band), chinfo->ChannelNum); continue; } band = chinfo->band; - flags = chinfo->flags & (RTW_CHF_NO_IR | RTW_CHF_DFS); + + flags = chinfo->flags & RTW_CHF_NO_IR; + #if CONFIG_RTW_CFG80211_CAC_EVENT + if (wiphy_ext_feature_isset(wiphy, NL80211_EXT_FEATURE_DFS_OFFLOAD)) { + if (chinfo->flags & RTW_CHF_DFS) + flags |= RTW_CHF_DFS; + } + #endif if (start_band == BAND_MAX) { start_band = band; @@ -233,6 +409,10 @@ void rtw_update_wiphy_regd(struct wiphy *wiphy, struct get_chplan_resp *chplan, rtw_regd_disable_no_20mhz_chs(wiphy); + #if CONFIG_RTW_CFG80211_CAC_EVENT + rtw_regd_override_dfs_state(wiphy, chplan, false); + #endif + if (rtnl_lock_needed) rtnl_unlock(); @@ -246,8 +426,8 @@ free_regd: static void rtw_regd_overide_flags(struct wiphy *wiphy, struct get_chplan_resp *chplan, bool rtnl_lock_needed) { - RT_CHANNEL_INFO *channel_set = chplan->chset; - u8 max_chan_nums = chplan->chset_num; + RT_CHANNEL_INFO *chs = chplan->chs; + u8 chs_len = chplan->chs_len; struct ieee80211_supported_band *sband; struct ieee80211_channel *ch; unsigned int i, j; @@ -269,15 +449,21 @@ static void rtw_regd_overide_flags(struct wiphy *wiphy, struct get_chplan_resp * } /* channels apply by channel plans. */ - for (i = 0; i < max_chan_nums; i++) { - ch = channel_set[i].os_chan; + for (i = 0; i < chs_len; i++) { + if (chs[i].flags & RTW_CHF_DIS) + continue; + #if RTW_PER_ADAPTER_WIPHY + ch = ieee80211_get_channel(wiphy, rtw_bch2freq(chs[i].band, chs[i].ChannelNum)); + #else + ch = chs[i].os_chan; + #endif if (!ch) continue; /* enable */ ch->flags = 0; - if (channel_set[i].flags & RTW_CHF_DFS) { + if (chs[i].flags & RTW_CHF_DFS) { /* * before integrating with nl80211 flow * bypass IEEE80211_CHAN_RADAR when configured with radar detection @@ -289,7 +475,7 @@ static void rtw_regd_overide_flags(struct wiphy *wiphy, struct get_chplan_resp * ch->flags |= IEEE80211_CHAN_RADAR; } - if (channel_set[i].flags & RTW_CHF_NO_IR) { + if (chs[i].flags & RTW_CHF_NO_IR) { #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) ch->flags |= IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN; #else @@ -305,8 +491,8 @@ static void rtw_regd_overide_flags(struct wiphy *wiphy, struct get_chplan_resp * #ifdef CONFIG_REGD_SRC_FROM_OS static void rtw_regd_apply_dfs_flags(struct get_chplan_resp *chplan, bool rtnl_lock_needed) { - RT_CHANNEL_INFO *channel_set = chplan->chset; - u8 max_chan_nums = chplan->chset_num; + RT_CHANNEL_INFO *chs = chplan->chs; + u8 chs_len = chplan->chs_len; unsigned int i; struct ieee80211_channel *chan; @@ -314,13 +500,15 @@ static void rtw_regd_apply_dfs_flags(struct get_chplan_resp *chplan, bool rtnl_l rtnl_lock(); /* channels apply by channel plans. */ - for (i = 0; i < max_chan_nums; i++) { - chan = channel_set[i].os_chan; + for (i = 0; i < chs_len; i++) { + if (chs[i].flags & RTW_CHF_DIS) + continue; + chan = chs[i].os_chan; if (!chan) { rtw_warn_on(1); continue; } - if (channel_set[i].flags & RTW_CHF_DFS) { + if (chs[i].flags & RTW_CHF_DFS) { /* * before integrating with nl80211 flow * clear IEEE80211_CHAN_RADAR when configured with radar detection @@ -337,79 +525,63 @@ static void rtw_regd_apply_dfs_flags(struct get_chplan_resp *chplan, bool rtnl_l rtnl_unlock(); } -/* init_channel_set_from_wiphy */ -u8 rtw_os_init_channel_set(_adapter *padapter, RT_CHANNEL_INFO *channel_set) +static u8 wiphy_chan_get_rtw_ch_flags(struct ieee80211_channel *chan) { - struct wiphy *wiphy = adapter_to_wiphy(padapter); - struct rf_ctl_t *rfctl = adapter_to_rfctl(padapter); - struct registry_priv *regsty = adapter_to_regsty(padapter); - struct ieee80211_channel *chan; - u8 chanset_size = 0; - int i, j; + u8 flags; - _rtw_memset(channel_set, 0, sizeof(RT_CHANNEL_INFO) * MAX_CHANNEL_NUM); + if (!chan || chan->flags & IEEE80211_CHAN_DISABLED) + return RTW_CHF_DIS; - for (i = NL80211_BAND_2GHZ; i <= NL80211_BAND_5GHZ; i++) { - if (!wiphy->bands[i]) - continue; - for (j = 0; j < wiphy->bands[i]->n_channels; j++) { - chan = &wiphy->bands[i]->channels[j]; - if (chan->flags & IEEE80211_CHAN_DISABLED) - continue; - if (rtw_regsty_is_excl_chs(regsty, chan->hw_value)) - continue; + flags = 0; - if (chanset_size >= MAX_CHANNEL_NUM) { - RTW_WARN("chset size can't exceed MAX_CHANNEL_NUM(%u)\n", MAX_CHANNEL_NUM); - i = NL80211_BAND_5GHZ + 1; - break; - } - - channel_set[chanset_size].ChannelNum = chan->hw_value; - channel_set[chanset_size].band = nl80211_band_to_rtw_band(i); - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) - if (chan->flags & (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN)) - #else - if (chan->flags & IEEE80211_CHAN_NO_IR) - #endif - channel_set[chanset_size].flags |= RTW_CHF_NO_IR; - if (chan->flags & IEEE80211_CHAN_RADAR) - channel_set[chanset_size].flags |= RTW_CHF_DFS; - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) - if (chan->flags & IEEE80211_CHAN_NO_HT40PLUS) - channel_set[chanset_size].flags |= RTW_CHF_NO_HT40U; - if (chan->flags & IEEE80211_CHAN_NO_HT40MINUS) - channel_set[chanset_size].flags |= RTW_CHF_NO_HT40L; - #endif - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)) - if (chan->flags & IEEE80211_CHAN_NO_80MHZ) - channel_set[chanset_size].flags |= RTW_CHF_NO_80MHZ; - if (chan->flags & IEEE80211_CHAN_NO_160MHZ) - channel_set[chanset_size].flags |= RTW_CHF_NO_160MHZ; - #endif - channel_set[chanset_size].os_chan = chan; - chanset_size++; - } - } - -#if CONFIG_IEEE80211_BAND_5GHZ - #ifdef CONFIG_DFS_MASTER - for (i = 0; i < chanset_size; i++) - channel_set[i].non_ocp_end_time = rtw_get_current_time(); + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) + if (chan->flags & (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN)) + #else + if (chan->flags & IEEE80211_CHAN_NO_IR) + #endif + flags |= RTW_CHF_NO_IR; + if (chan->flags & IEEE80211_CHAN_RADAR) + flags |= RTW_CHF_DFS; + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) + if (chan->flags & IEEE80211_CHAN_NO_HT40PLUS) + flags |= RTW_CHF_NO_HT40U; + if (chan->flags & IEEE80211_CHAN_NO_HT40MINUS) + flags |= RTW_CHF_NO_HT40L; + #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)) + if (chan->flags & IEEE80211_CHAN_NO_80MHZ) + flags |= RTW_CHF_NO_80MHZ; + if (chan->flags & IEEE80211_CHAN_NO_160MHZ) + flags |= RTW_CHF_NO_160MHZ; #endif -#endif /* CONFIG_IEEE80211_BAND_5GHZ */ - if (chanset_size) - RTW_INFO(FUNC_ADPT_FMT" ch num:%d\n" - , FUNC_ADPT_ARG(padapter), chanset_size); - else - RTW_WARN(FUNC_ADPT_FMT" final chset has no channel\n" - , FUNC_ADPT_ARG(padapter)); - - return chanset_size; + return flags; } -s16 rtw_os_get_total_txpwr_regd_lmt_mbm(_adapter *adapter, u8 cch, enum channel_width bw) +static void rtw_chset_apply_wiphy_chans(struct rtw_chset *chset, u8 d_flags) +{ + RT_CHANNEL_INFO *chinfo; + u8 i; + u8 flags; + + for (i = 0; i < chset->chs_len; i++) { + chinfo = &chset->chs[i]; + if (chinfo->flags & RTW_CHF_DIS) + continue; + flags = wiphy_chan_get_rtw_ch_flags(chinfo->os_chan); + if ((flags & RTW_CHF_DIS) || (flags & d_flags)) + chinfo->flags = RTW_CHF_DIS; + else + chinfo->flags |= flags; + } +} + +void rtw_chset_apply_from_os(struct rtw_chset *chset, u8 d_flags) +{ + rtw_chset_apply_wiphy_chans(chset, d_flags); +} + +s16 rtw_os_get_total_txpwr_regd_lmt_mbm(_adapter *adapter, enum band_type band, u8 cch, enum channel_width bw) { struct wiphy *wiphy = adapter_to_wiphy(adapter); s16 mbm = UNSPECIFIED_MBM; @@ -419,11 +591,11 @@ s16 rtw_os_get_total_txpwr_regd_lmt_mbm(_adapter *adapter, u8 cch, enum channel_ u32 freq; struct ieee80211_channel *ch; - if (!rtw_get_op_chs_by_cch_bw(cch, bw, &op_chs, &op_ch_num)) + if (!rtw_get_op_chs_by_bcch_bw(band, cch, bw, &op_chs, &op_ch_num)) goto exit; for (i = 0; i < op_ch_num; i++) { - freq = rtw_ch2freq(op_chs[i]); + freq = rtw_bch2freq(band, op_chs[i]); ch = ieee80211_get_channel(wiphy, freq); if (!ch) { rtw_warn_on(1); @@ -647,6 +819,26 @@ static int rtw_reg_notifier_return(struct wiphy *wiphy, struct regulatory_reques } #endif +void rtw_regd_change_complete_sync(struct wiphy *wiphy, struct get_chplan_resp *chplan, bool rtnl_lock_needed) +{ + if (chplan->regd_src == REGD_SRC_RTK_PRIV) { + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) + if (rtw_regd_is_wiphy_self_managed(wiphy)) + rtw_update_wiphy_regd(wiphy, chplan, rtnl_lock_needed); + else + #endif + rtw_regd_overide_flags(wiphy, chplan, rtnl_lock_needed); + } +#ifdef CONFIG_REGD_SRC_FROM_OS + else if (chplan->regd_src == REGD_SRC_OS) + rtw_regd_apply_dfs_flags(chplan, rtnl_lock_needed); +#endif + else + rtw_warn_on(1); + + rtw_free_get_chplan_resp(chplan); +} + struct async_regd_change_evt { _list list; /* async_regd_change_list */ struct wiphy *wiphy; @@ -657,15 +849,14 @@ static void async_regd_change_work_hdl(_workitem *work) { struct rtw_wiphy_data *wiphy_data = container_of(work, struct rtw_wiphy_data, async_regd_change_work); struct async_regd_change_evt *evt; - _irqL irqL; _list *list, *head = &wiphy_data->async_regd_change_list; while (1) { - _enter_critical_mutex(&wiphy_data->async_regd_change_mutex, &irqL); + _rtw_mutex_lock_interruptible(&wiphy_data->async_regd_change_mutex); list = rtw_is_list_empty(head) ? NULL : get_next(head); if (list) rtw_list_delete(list); - _exit_critical_mutex(&wiphy_data->async_regd_change_mutex, &irqL); + _rtw_mutex_unlock(&wiphy_data->async_regd_change_mutex); if (!list) break; @@ -676,6 +867,412 @@ static void async_regd_change_work_hdl(_workitem *work) } } +int rtw_regd_change_complete_async(struct wiphy *wiphy, struct get_chplan_resp *chplan) +{ + struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); + struct async_regd_change_evt *evt; + + evt = rtw_malloc(sizeof(*evt)); + if (!evt) { + rtw_free_get_chplan_resp(chplan); + return _FAIL; + } + + _rtw_init_listhead(&evt->list); + evt->wiphy = wiphy; + evt->chplan = chplan; + + _rtw_mutex_lock_interruptible(&wiphy_data->async_regd_change_mutex); + + rtw_list_insert_tail(&evt->list, &wiphy_data->async_regd_change_list); + + _rtw_mutex_unlock(&wiphy_data->async_regd_change_mutex); + + _set_workitem(&wiphy_data->async_regd_change_work); + + return _SUCCESS; +} + +static void rtw_regd_async_regd_change_list_free(struct wiphy *wiphy) +{ + struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); + struct async_regd_change_evt *evt; + struct get_chplan_resp *chplan; + _list *cur, *head; + + _rtw_mutex_lock_interruptible(&wiphy_data->async_regd_change_mutex); + + head = &wiphy_data->async_regd_change_list; + cur = get_next(head); + + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + evt = LIST_CONTAINOR(cur, struct async_regd_change_evt, list); + chplan = evt->chplan; + cur = get_next(cur); + rtw_list_delete(&evt->list); + rtw_free_get_chplan_resp(chplan); + rtw_mfree(evt, sizeof(*evt)); + } + + _rtw_mutex_unlock(&wiphy_data->async_regd_change_mutex); +} + +#if CONFIG_RTW_CFG80211_CAC_EVENT +static bool rtw_cfg80211_get_radar_event_chdef(struct wiphy *wiphy, struct cfg80211_chan_def *chdef + , u8 cch, enum channel_width bw, const char *caller) +{ + u8 *op_chs; + u8 op_ch_num; + u8 state; + + /* only channel coverage matters, use first (lowest) op channel, and ht here */ + + if (!rtw_get_op_chs_by_bcch_bw(BAND_ON_5G, cch, bw, &op_chs, &op_ch_num)) { + RTW_WARN("%s invalid cch:%u bw:%s on %s\n", caller, cch, ch_width_str(bw), band_str(BAND_ON_5G)); + return false; + } + + state = rtw_bchbw_to_cfg80211_chan_def(wiphy, chdef, BAND_ON_5G + , op_chs[0], bw, bw == CHANNEL_WIDTH_20 ? CHAN_OFFSET_NO_EXT : CHAN_OFFSET_UPPER, 1); + + return state == _SUCCESS ? true : false; + +} + +void rtw_cfg80211_radar_detected_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 cch, enum channel_width bw) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct wiphy *wiphy = dvobj_to_wiphy(dvobj); /* TODO: hwband specific wiphy mapping */ + struct cfg80211_chan_def chdef; + + if (!rtw_cfg80211_get_radar_event_chdef(wiphy, &chdef, cch, bw, __func__)) + return; + + cfg80211_radar_event(wiphy, &chdef, GFP_KERNEL); +} + +struct async_cac_change_evt { + _list list; /* async_cac_change_list */ + struct net_device *netdev; + struct cfg80211_chan_def chandef; + enum nl80211_radar_event event; +}; + +static void async_cac_change_work_hdl(_workitem *work) +{ + struct rtw_wiphy_data *wiphy_data = container_of(work, struct rtw_wiphy_data, async_cac_change_work); + struct async_cac_change_evt *evt; + _list *list, *head = &wiphy_data->async_cac_change_list; + + while (1) { + _rtw_mutex_lock_interruptible(&wiphy_data->async_cac_change_mutex); + list = rtw_is_list_empty(head) ? NULL : get_next(head); + if (list) + rtw_list_delete(list); + _rtw_mutex_unlock(&wiphy_data->async_cac_change_mutex); + + if (!list) + break; + + evt = LIST_CONTAINOR(list, struct async_cac_change_evt, list); + + rtnl_lock(); + cfg80211_cac_event(evt->netdev, &evt->chandef, evt->event, GFP_KERNEL); + rtnl_unlock(); + + rtw_mfree(evt, sizeof(*evt)); + } +} + +static int cfg80211_cac_event_async(struct net_device *netdev + , const struct cfg80211_chan_def *chandef, enum nl80211_radar_event event) +{ + _adapter *adapter = rtw_netdev_priv(netdev); + struct wiphy *wiphy = adapter_to_wiphy(adapter); + struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); + struct async_cac_change_evt *evt; + + evt = rtw_malloc(sizeof(*evt)); + if (!evt) + return _FAIL; + + _rtw_init_listhead(&evt->list); + evt->netdev = netdev; + _rtw_memcpy(&evt->chandef, chandef, sizeof(*chandef)); + evt->event = event; + + _rtw_mutex_lock_interruptible(&wiphy_data->async_cac_change_mutex); + + rtw_list_insert_tail(&evt->list, &wiphy_data->async_cac_change_list); + + _rtw_mutex_unlock(&wiphy_data->async_cac_change_mutex); + + _set_workitem(&wiphy_data->async_cac_change_work); + + return _SUCCESS; +} + +static void rtw_regd_async_cac_change_list_free(struct wiphy *wiphy) +{ + struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); + struct async_cac_change_evt *evt; + _list *cur, *head; + + _rtw_mutex_lock_interruptible(&wiphy_data->async_cac_change_mutex); + + head = &wiphy_data->async_cac_change_list; + cur = get_next(head); + + while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { + evt = LIST_CONTAINOR(cur, struct async_cac_change_evt, list); + cur = get_next(cur); + rtw_list_delete(&evt->list); + rtw_mfree(evt, sizeof(*evt)); + } + + _rtw_mutex_unlock(&wiphy_data->async_cac_change_mutex); +} + +static void rtw_cfg80211_cac_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw, enum nl80211_radar_event event + , const char *caller) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct wiphy *wiphy = dvobj_to_wiphy(dvobj); /* TODO: hwband specific wiphy mapping */ + struct cfg80211_chan_def chdef; + _adapter *iface; + int i; + bool async; + + if (!ifbmp) { + RTW_WARN(FUNC_HWBAND_FMT" ifbmp is empty", caller, HWBAND_ARG(band_idx)); + return; + } + + if (!rtw_cfg80211_get_radar_event_chdef(wiphy, &chdef, cch, bw, caller)) + return; + + for (i = 0; i < dvobj->iface_nums; i++) { + iface = dvobj->padapters[i]; + if (!iface || !(ifbmp & BIT(iface->iface_id))) + continue; + if (!iface->rtw_wdev) + continue; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) || defined(CONFIG_MLD_KERNEL_PATCH) + /*TBD - should consdier the case of AP MLD*/ + async = !((iface->rtw_wdev)->links[0].ap.chandef.chan); +#else + async = !iface->rtw_wdev->chandef.chan; +#endif + RTW_INFO(FUNC_ADPT_FMT" async:%d\n", caller, ADPT_ARG(iface), async); + if (async) + cfg80211_cac_event_async(iface->pnetdev, &chdef, event); + else + cfg80211_cac_event(iface->pnetdev, &chdef, event, GFP_KERNEL); + } +} + +void rtw_cfg80211_cac_started_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct wiphy *wiphy = dvobj_to_wiphy(dvobj); /* TODO: hwband specific wiphy mapping */ + + if (!wiphy_ext_feature_isset(wiphy, NL80211_EXT_FEATURE_DFS_OFFLOAD)) + return; + + if (ifbmp == 0xFF) { + ifbmp &= rtw_mi_get_ap_mesh_ifbmp_by_hwband(dvobj, band_idx); + if (!ifbmp) + return; + } + + rtw_cfg80211_cac_event(rfctl, band_idx, ifbmp, cch, bw, NL80211_RADAR_CAC_STARTED, __func__); +} + +void rtw_cfg80211_cac_finished_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct wiphy *wiphy = dvobj_to_wiphy(dvobj); /* TODO: hwband specific wiphy mapping */ + _adapter *iface; + int i; + + if (!wiphy_ext_feature_isset(wiphy, NL80211_EXT_FEATURE_DFS_OFFLOAD)) + return; + + for (i = 0; i < dvobj->iface_nums; i++) { + iface = dvobj->padapters[i]; + if (!iface || !(ifbmp & BIT(iface->iface_id))) + continue; + /* finish only for wdev with cac_started */ + if (!iface->rtw_wdev || !iface->rtw_wdev->cac_started) + ifbmp &= ~BIT(iface->iface_id); + } + + rtw_cfg80211_cac_event(rfctl, band_idx, ifbmp, cch, bw, NL80211_RADAR_CAC_FINISHED, __func__); +} + +void rtw_cfg80211_cac_aborted_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct wiphy *wiphy = dvobj_to_wiphy(dvobj); /* TODO: hwband specific wiphy mapping */ + _adapter *iface; + int i; + + if (!wiphy_ext_feature_isset(wiphy, NL80211_EXT_FEATURE_DFS_OFFLOAD)) + return; + + for (i = 0; i < dvobj->iface_nums; i++) { + iface = dvobj->padapters[i]; + if (!iface || !(ifbmp & BIT(iface->iface_id))) + continue; + /* abort only for wdev with cac_started */ + if (!iface->rtw_wdev || !iface->rtw_wdev->cac_started) + ifbmp &= ~BIT(iface->iface_id); + } + + rtw_cfg80211_cac_event(rfctl, band_idx, ifbmp, cch, bw, NL80211_RADAR_CAC_ABORTED, __func__); +} + +static void rtw_cfg80211_cac_force_started_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ + rtw_cfg80211_cac_event(rfctl, band_idx, ifbmp, cch, bw, NL80211_RADAR_CAC_STARTED, __func__); +} + +static void rtw_cfg80211_cac_force_finished_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ + rtw_cfg80211_cac_event(rfctl, band_idx, ifbmp, cch, bw, NL80211_RADAR_CAC_FINISHED, __func__); +} + +void rtw_cfg80211_cac_force_finished(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw) +{ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct wiphy *wiphy = dvobj_to_wiphy(dvobj); /* TODO: hwband specific wiphy mapping */ + struct rtw_chset *chset = &rfctl->chset; + _adapter *iface; + u8 i; + u8 *op_chs; + u8 op_ch_num; + RT_CHANNEL_INFO *chinfo; + struct ieee80211_channel *chan; + bool need_start = false; + u8 finished_ifbmp, started_ifbmp; + + if (!wiphy_ext_feature_isset(wiphy, NL80211_EXT_FEATURE_DFS_OFFLOAD)) + return; + + if (ifbmp == 0xFF) { + ifbmp &= rtw_mi_get_ap_mesh_ifbmp_by_hwband(dvobj, band_idx); + if (!ifbmp) + return; + } + + /* + * if coverage channels still USABLE and wdev is not cac_started + * send CAC_STARTED to set cac_started and + * send CAC_FINISHED to clear cac_started and make coverage channels AVAILABLE + */ + + if (!rtw_get_op_chs_by_bcch_bw(BAND_ON_5G, cch, bw, &op_chs, &op_ch_num)) { + RTW_WARN("%s invalid cch:%u bw:%s on %s\n", __func__, cch, ch_width_str(bw), band_str(BAND_ON_5G)); + return; + } + + for (i = 0; i < op_ch_num; i++) { + chinfo = rtw_chset_get_chinfo_by_bch(chset, BAND_ON_5G, op_chs[i], true); + if (!chinfo) { + RTW_WARN("%s can't get chinfo by ch:%u on %s\n", __func__, op_chs[i], band_str(BAND_ON_5G)); + continue; + } + if (!chinfo->os_chan) { + RTW_WARN("%s ch:%u on %s has no os_chan\n", __func__, op_chs[i], band_str(BAND_ON_5G)); + continue; + } + + chan = chinfo->os_chan; + if (chan->dfs_state == NL80211_DFS_UNAVAILABLE) { + RTW_WARN("%s ch:%u on %s is UNAVAILABLE(NON_OCP)\n", __func__, op_chs[i], band_str(BAND_ON_5G)); + return; + } + if (chan->dfs_state == NL80211_DFS_USABLE) { + need_start = true; + break; + } + } + + started_ifbmp = need_start ? ifbmp : 0; + finished_ifbmp = ifbmp; + for (i = 0; i < dvobj->iface_nums; i++) { + iface = dvobj->padapters[i]; + if (!iface || !(ifbmp & BIT(iface->iface_id))) + continue; + if (!iface->rtw_wdev) { + finished_ifbmp &= ~BIT(iface->iface_id); + started_ifbmp &= ~BIT(iface->iface_id); + continue; + } + if (need_start && iface->rtw_wdev->cac_started) + started_ifbmp &= ~BIT(iface->iface_id); + else if (!need_start && !iface->rtw_wdev->cac_started) + finished_ifbmp &= ~BIT(iface->iface_id); + } + + /* send CAC_STARTED to set cac_started */ + if (started_ifbmp) + rtw_cfg80211_cac_force_started_event(rfctl, band_idx, started_ifbmp, cch, bw); + + /* send CAC_FINISHED to clear cac_started and make coverage channels AVAILABLE */ + if (finished_ifbmp) + rtw_cfg80211_cac_force_finished_event(rfctl, band_idx, finished_ifbmp, cch, bw); +} + +void rtw_cfg80211_nop_finished_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 band, u8 cch, enum channel_width bw) +{ + /* non occupancy is controlled by net/wireless/mlme.c */ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct wiphy *wiphy = dvobj_to_wiphy(dvobj); /* TODO: hwband specific wiphy mapping */ + + if (!wiphy_ext_feature_isset(wiphy, NL80211_EXT_FEATURE_DFS_OFFLOAD)) + return; +} + +void rtw_cfg80211_nop_started_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 band, u8 cch, enum channel_width bw, bool called_on_cmd_thd) +{ + /* non occupancy is controlled by net/wireless/mlme.c */ + struct dvobj_priv *dvobj = rfctl_to_dvobj(rfctl); + struct wiphy *wiphy = dvobj_to_wiphy(dvobj); /* TODO: hwband specific wiphy mapping */ + struct get_chplan_resp *chplan; + bool rtnl_lock_needed; + + if (!wiphy_ext_feature_isset(wiphy, NL80211_EXT_FEATURE_DFS_OFFLOAD)) + return; + + if (rtw_get_chplan_cmd(dvobj_get_primary_adapter(dvobj) + , called_on_cmd_thd ? RTW_CMDF_DIRECTLY : RTW_CMDF_WAIT_ACK, &chplan) == _FAIL) + return; + + rtnl_lock_needed = rtw_rtnl_lock_needed(dvobj); + if (rtnl_lock_needed) + rtnl_lock(); + + rtw_regd_override_dfs_state(wiphy, chplan, true); + rtw_regd_schedule_dfs_chan_update(wiphy); + + if (rtnl_lock_needed) + rtnl_unlock(); + + rtw_free_get_chplan_resp(chplan); +} +#endif /* CONFIG_RTW_CFG80211_CAC_EVENT */ + int rtw_regd_init(struct wiphy *wiphy) { struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); @@ -694,7 +1291,7 @@ int rtw_regd_init(struct wiphy *wiphy) wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS; #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 39)) wiphy->regulatory_flags |= REGULATORY_IGNORE_STALE_KICKOFF; #endif @@ -703,38 +1300,25 @@ int rtw_regd_init(struct wiphy *wiphy) wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED; #endif +#if defined(CONFIG_DFS_MASTER) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)) + if (rtw_regd_is_wiphy_self_managed(wiphy) + && wiphy->bands[NL80211_BAND_5GHZ]) + wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_DFS_OFFLOAD); +#endif + _rtw_init_listhead(&wiphy_data->async_regd_change_list); _rtw_mutex_init(&wiphy_data->async_regd_change_mutex); _init_workitem(&wiphy_data->async_regd_change_work, async_regd_change_work_hdl, NULL); +#if CONFIG_RTW_CFG80211_CAC_EVENT + _rtw_init_listhead(&wiphy_data->async_cac_change_list); + _rtw_mutex_init(&wiphy_data->async_cac_change_mutex); + _init_workitem(&wiphy_data->async_cac_change_work, async_cac_change_work_hdl, NULL); +#endif + return 0; } -static void rtw_regd_async_regd_change_list_free(struct wiphy *wiphy) -{ - struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); - struct async_regd_change_evt *evt; - struct get_chplan_resp *chplan; - _irqL irqL; - _list *cur, *head; - - _enter_critical_mutex(&wiphy_data->async_regd_change_mutex, &irqL); - - head = &wiphy_data->async_regd_change_list; - cur = get_next(head); - - while ((rtw_end_of_queue_search(head, cur)) == _FALSE) { - evt = LIST_CONTAINOR(cur, struct async_regd_change_evt, list); - chplan = evt->chplan; - cur = get_next(cur); - rtw_list_delete(&evt->list); - rtw_vmfree(chplan, sizeof(*chplan) + sizeof(RT_CHANNEL_INFO) * chplan->chset_num); - rtw_mfree(evt, sizeof(*evt)); - } - - _exit_critical_mutex(&wiphy_data->async_regd_change_mutex, &irqL); -} - void rtw_regd_deinit(struct wiphy *wiphy) { struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); @@ -742,52 +1326,11 @@ void rtw_regd_deinit(struct wiphy *wiphy) _cancel_workitem_sync(&wiphy_data->async_regd_change_work); rtw_regd_async_regd_change_list_free(wiphy); _rtw_mutex_free(&wiphy_data->async_regd_change_mutex); -} -void rtw_regd_change_complete_sync(struct wiphy *wiphy, struct get_chplan_resp *chplan, bool rtnl_lock_needed) -{ - if (chplan->regd_src == REGD_SRC_RTK_PRIV) { - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) - if (rtw_regd_is_wiphy_self_managed(wiphy)) - rtw_update_wiphy_regd(wiphy, chplan, rtnl_lock_needed); - else - #endif - rtw_regd_overide_flags(wiphy, chplan, rtnl_lock_needed); - } -#ifdef CONFIG_REGD_SRC_FROM_OS - else if (chplan->regd_src == REGD_SRC_OS) - rtw_regd_apply_dfs_flags(chplan, rtnl_lock_needed); +#if CONFIG_RTW_CFG80211_CAC_EVENT + _cancel_workitem_sync(&wiphy_data->async_cac_change_work); + rtw_regd_async_cac_change_list_free(wiphy); + _rtw_mutex_free(&wiphy_data->async_cac_change_mutex); #endif - else - rtw_warn_on(1); - - rtw_vmfree(chplan, sizeof(struct get_chplan_resp) + sizeof(RT_CHANNEL_INFO) * chplan->chset_num); -} - -int rtw_regd_change_complete_async(struct wiphy *wiphy, struct get_chplan_resp *chplan) -{ - struct rtw_wiphy_data *wiphy_data = rtw_wiphy_priv(wiphy); - struct async_regd_change_evt *evt; - _irqL irqL; - - evt = rtw_malloc(sizeof(*evt)); - if (!evt) { - rtw_vmfree(chplan, sizeof(struct get_chplan_resp) + sizeof(RT_CHANNEL_INFO) * chplan->chset_num); - return _FAIL; - } - - _rtw_init_listhead(&evt->list); - evt->wiphy = wiphy; - evt->chplan = chplan; - - _enter_critical_mutex(&wiphy_data->async_regd_change_mutex, &irqL); - - rtw_list_insert_tail(&evt->list, &wiphy_data->async_regd_change_list); - - _exit_critical_mutex(&wiphy_data->async_regd_change_mutex, &irqL); - - _set_workitem(&wiphy_data->async_regd_change_work); - - return _SUCCESS; } #endif /* CONFIG_IOCTL_CFG80211 */ diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/wifi_regd.h b/drivers/net/wireless/rtl8822cs/os_dep/linux/wifi_regd.h index c7e2f2cef..d8c04ecaa 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/wifi_regd.h +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/wifi_regd.h @@ -16,14 +16,52 @@ #ifndef __WIFI_REGD_H__ #define __WIFI_REGD_H__ -void rtw_chset_hook_os_channels(struct rf_ctl_t *rfctl); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) && (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31)) +#define IEEE80211_CHAN_NO_HT40PLUS IEEE80211_CHAN_NO_FAT_ABOVE +#define IEEE80211_CHAN_NO_HT40MINUS IEEE80211_CHAN_NO_FAT_BELOW +#define IEEE80211_CHAN_NO_HT40 (IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS) +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0)) +#define IEEE80211_CHAN_IR_CONCURRENT IEEE80211_CHAN_GO_CONCURRENT +#endif + +#if !RTW_PER_ADAPTER_WIPHY +void rtw_chset_hook_os_channels(struct rtw_chset *chset, void *os_ref); +#endif void rtw_regd_change_complete_sync(struct wiphy *wiphy, struct get_chplan_resp *chplan, bool rtnl_lock_needed); int rtw_regd_change_complete_async(struct wiphy *wiphy, struct get_chplan_resp *chplan); #ifdef CONFIG_REGD_SRC_FROM_OS -struct _RT_CHANNEL_INFO; -u8 rtw_os_init_channel_set(_adapter *padapter, struct _RT_CHANNEL_INFO *channel_set); -s16 rtw_os_get_total_txpwr_regd_lmt_mbm(_adapter *adapter, u8 cch, enum channel_width bw); +void rtw_chset_apply_from_os(struct rtw_chset *chset, u8 d_flags); +s16 rtw_os_get_total_txpwr_regd_lmt_mbm(_adapter *adapter, enum band_type band, u8 cch, enum channel_width bw); #endif + +#if CONFIG_RTW_CFG80211_CAC_EVENT +void rtw_cfg80211_radar_detected_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 cch, enum channel_width bw); +void rtw_cfg80211_cac_started_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw); +void rtw_cfg80211_cac_finished_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw); +void rtw_cfg80211_cac_aborted_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw); +void rtw_cfg80211_cac_force_finished(struct rf_ctl_t *rfctl, u8 band_idx + , u8 ifbmp, u8 cch, enum channel_width bw); +void rtw_cfg80211_nop_finished_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 band, u8 cch, enum channel_width bw); +void rtw_cfg80211_nop_started_event(struct rf_ctl_t *rfctl, u8 band_idx + , u8 band, u8 cch, enum channel_width bw, bool called_on_cmd_thd); +void rtw_regd_free_du_wdev(struct wiphy *wiphy); +#else +#define rtw_cfg80211_radar_detected_event(rfctl, band_idx, cch, bw) do {} while (0) +#define rtw_cfg80211_cac_started_event(rfctl, band_idx, ifbmp, cch, bw) do {} while (0) +#define rtw_cfg80211_cac_finished_event(rfctl, band_idx, ifbmp, cch, bw) do {} while (0) +#define rtw_cfg80211_cac_aborted_event(rfctl, band_idx, ifbmp, cch, bw) do {} while (0) +#define rtw_cfg80211_cac_force_finished(rfctl, band_idx, ifbmp, cch, bw) do {} while (0) +#define rtw_cfg80211_nop_finished_event(rfctl, band_idx, band, cch, bw) do {} while (0) +#define rtw_cfg80211_nop_started_event(rfctl, band_idx, band, cch, bw, called_on_cmd_thd) do {} while (0) +#define rtw_regd_free_du_wdev(wiphy) do {} while (0) +#endif /* CONFIG_RTW_CFG80211_CAC_EVENT */ + int rtw_regd_init(struct wiphy *wiphy); void rtw_regd_deinit(struct wiphy *wiphy); diff --git a/drivers/net/wireless/rtl8822cs/os_dep/linux/xmit_linux.c b/drivers/net/wireless/rtl8822cs/os_dep/linux/xmit_linux.c index e8f2da3c9..0049732b6 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/linux/xmit_linux.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/linux/xmit_linux.c @@ -393,6 +393,7 @@ int _rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev) { _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); #ifdef CONFIG_TCP_CSUM_OFFLOAD_TX struct sk_buff *skb = pkt; struct sk_buff *segs, *nskb; @@ -419,6 +420,13 @@ int _rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev) goto drop_packet; } + if (pwrpriv->bInSuspend == _TRUE) { + #ifdef DBG_TX_DROP_FRAME + RTW_INFO("DBG_TX_DROP_FRAME %s in suspend flow\n", __FUNCTION__); + #endif + goto drop_packet; + } + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)) os_qid = skb_get_queue_mapping(pkt); #endif diff --git a/drivers/net/wireless/rtl8822cs/os_dep/osdep_service.c b/drivers/net/wireless/rtl8822cs/os_dep/osdep_service.c index 5ffdd1f6a..dc872cde9 100644 --- a/drivers/net/wireless/rtl8822cs/os_dep/osdep_service.c +++ b/drivers/net/wireless/rtl8822cs/os_dep/osdep_service.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright(c) 2007 - 2017 Realtek Corporation. + * Copyright(c) 2007 - 2021 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -304,7 +304,11 @@ void *_rtw_malloc(u32 sz) pbuf = dvr_malloc(sz); else #endif +#ifdef CONFIG_RTKM + pbuf = rtkm_kmalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); +#else /* !CONFIG_RTKM */ pbuf = kmalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); +#endif /* CONFIG_RTKM */ #endif #ifdef PLATFORM_FREEBSD @@ -340,6 +344,9 @@ void *_rtw_zmalloc(u32 sz) #ifdef PLATFORM_FREEBSD return malloc(sz, M_DEVBUF, M_ZERO | M_NOWAIT); #else /* PLATFORM_FREEBSD */ +#ifdef CONFIG_RTKM + void *pbuf = rtkm_kzalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); +#else /* !CONFIG_RTKM */ void *pbuf = _rtw_malloc(sz); if (pbuf != NULL) { @@ -352,6 +359,7 @@ void *_rtw_zmalloc(u32 sz) NdisFillMemory(pbuf, sz, 0); #endif } +#endif /* CONFIG_RTKM */ return pbuf; #endif /* PLATFORM_FREEBSD */ @@ -371,7 +379,11 @@ void _rtw_mfree(void *pbuf, u32 sz) dvr_free(pbuf); else #endif +#ifdef CONFIG_RTKM + rtkm_kfree(pbuf, sz); +#else /* !CONFIG_RTKM */ kfree(pbuf); +#endif /* CONFIG_RTKM */ #endif #ifdef PLATFORM_FREEBSD @@ -1505,7 +1517,11 @@ u32 _rtw_down_sema(_sema *sema) inline void thread_exit(_completion *comp) { #ifdef PLATFORM_LINUX +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0)) complete_and_exit(comp, 0); +#else + kthread_complete_and_exit(comp, 0); +#endif #endif #ifdef PLATFORM_FREEBSD @@ -1824,6 +1840,15 @@ inline bool _rtw_time_after(systime a, systime b) #endif } +inline bool _rtw_time_after_eq(systime a, systime b) +{ +#ifdef PLATFORM_LINUX + return time_after_eq(a, b); +#else + #error "TBD\n" +#endif +} + sysptime rtw_sptime_get(void) { /* CLOCK_MONOTONIC */ @@ -3186,7 +3211,9 @@ u64 rtw_division64(u64 x, u64 y) inline u32 rtw_random32(void) { #ifdef PLATFORM_LINUX -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) + return get_random_u32(); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) return prandom_u32(); #elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 18)) u32 random_int; @@ -3204,19 +3231,12 @@ inline u32 rtw_random32(void) void rtw_buf_free(u8 **buf, u32 *buf_len) { - u32 ori_len; - - if (!buf || !buf_len) + if (!buf || !(*buf) || !buf_len) return; - ori_len = *buf_len; - - if (*buf) { - u32 tmp_buf_len = *buf_len; - *buf_len = 0; - rtw_mfree(*buf, tmp_buf_len); - *buf = NULL; - } + rtw_mfree(*buf, *buf_len); + *buf = NULL; + *buf_len = 0; } void rtw_buf_update(u8 **buf, u32 *buf_len, const u8 *src, u32 src_len) @@ -3765,3 +3785,46 @@ int hwaddr_aton_i(const char *txt, u8 *addr) return 0; } +void ustrs_add(char **ustrs, int *ustrs_len, const char *str) +{ + char *tmp_ustrs; + int tmp_ustrs_len; + + if (!str || !strlen(str)) + return; + + tmp_ustrs = *ustrs; + tmp_ustrs_len = *ustrs_len; + if (tmp_ustrs) { + const char *pos; + + /* search for same string */ + for (pos = tmp_ustrs; pos < tmp_ustrs + tmp_ustrs_len; pos += strlen(pos) + 1) { + if (strcmp(pos, str) == 0) + return; + } + + /* no match, realloc and add */ + tmp_ustrs = rtw_malloc(tmp_ustrs_len + strlen(str) + 1); + if (!tmp_ustrs) { + rtw_warn_on(1); + return; + } + _rtw_memcpy((void *)tmp_ustrs, *ustrs, tmp_ustrs_len); + _rtw_memcpy((void *)(tmp_ustrs + tmp_ustrs_len), str, strlen(str) + 1); + rtw_mfree((void *)*ustrs, tmp_ustrs_len); + *ustrs = tmp_ustrs; + *ustrs_len += strlen(str) + 1; + + } else { + tmp_ustrs = rtw_malloc(strlen(str) + 1); + if (!tmp_ustrs) { + rtw_warn_on(1); + return; + } + _rtw_memcpy((void *)tmp_ustrs, str, strlen(str) + 1); + *ustrs = tmp_ustrs; + *ustrs_len = strlen(str) + 1; + } +} + diff --git a/drivers/net/wireless/rtl8822cs/platform/custom_country_chplan.h b/drivers/net/wireless/rtl8822cs/platform/custom_country_chplan.h index 69ab5d5ba..8039f1ecd 100644 --- a/drivers/net/wireless/rtl8822cs/platform/custom_country_chplan.h +++ b/drivers/net/wireless/rtl8822cs/platform/custom_country_chplan.h @@ -17,6 +17,6 @@ #error "Before removing these error notifications, please make sure regulatory certification requirements of your target markets" static const struct country_chplan CUSTOMIZED_country_chplan_map[] = { - COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 1, 1), /* Taiwan */ + COUNTRY_CHPLAN_ENT("TW", 0x76, 0x00, DEF , 1, 1, 1), /* Taiwan */ }; diff --git a/drivers/net/wireless/rtl8822cs/platform/platform_ARM_SUNxI_sdio.c b/drivers/net/wireless/rtl8822cs/platform/platform_ARM_SUNxI_sdio.c index 795b7e7f7..c7c47523b 100644 --- a/drivers/net/wireless/rtl8822cs/platform/platform_ARM_SUNxI_sdio.c +++ b/drivers/net/wireless/rtl8822cs/platform/platform_ARM_SUNxI_sdio.c @@ -88,3 +88,8 @@ void platform_wifi_power_off(void) #endif /* CONFIG_RTL8188E */ #endif /* CONFIG_MMC_SUNXI_POWER_CONTROL */ } + +void platform_wifi_mac_addr(u8 *mac_addr) +{ + +}